Built motion from commit 41ff85ad.|2.6.10
authorsupport <support@xcally.com>
Tue, 10 May 2022 16:33:30 +0000 (16:33 +0000)
committersupport <support@xcally.com>
Tue, 10 May 2022 16:33:30 +0000 (16:33 +0000)
1261 files changed:
apidoc/api_project.js
apidoc/api_project.json
public/app/errors/404/i18n/bs.json [new file with mode: 0644]
public/app/errors/500/i18n/bs.json [new file with mode: 0644]
public/app/footer/i18n/bs.json [new file with mode: 0644]
public/app/forgot/i18n/bs.json [new file with mode: 0644]
public/app/header/i18n/bs.json [new file with mode: 0644]
public/app/login/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/analytics/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/callysquare/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/chat/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/contactmanager/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/dashboards/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/fax/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/help/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/integrations/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/jscripty/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/mail/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/marketplace/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/motiondialer/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/openchannel/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/plugins/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/settings/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/sms/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/staff/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/tools/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/video/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/voice/i18n/bs.json [new file with mode: 0644]
public/app/main/apps/whatsapp/i18n/bs.json [new file with mode: 0644]
public/app/quick-panel/i18n/bs.json [new file with mode: 0644]
public/app/reset/i18n/bs.json [new file with mode: 0644]
public/app/toolbar/i18n/ar.json
public/app/toolbar/i18n/bs.json [new file with mode: 0644]
public/app/toolbar/i18n/cs.json
public/app/toolbar/i18n/da.json
public/app/toolbar/i18n/de.json
public/app/toolbar/i18n/en.json
public/app/toolbar/i18n/es.json
public/app/toolbar/i18n/et.json
public/app/toolbar/i18n/fa.json
public/app/toolbar/i18n/fi.json
public/app/toolbar/i18n/fr.json
public/app/toolbar/i18n/he.json
public/app/toolbar/i18n/hi.json
public/app/toolbar/i18n/hu.json
public/app/toolbar/i18n/id.json
public/app/toolbar/i18n/it.json
public/app/toolbar/i18n/ja.json
public/app/toolbar/i18n/ko.json
public/app/toolbar/i18n/lt.json
public/app/toolbar/i18n/lv.json
public/app/toolbar/i18n/nl.json
public/app/toolbar/i18n/no.json
public/app/toolbar/i18n/pl.json
public/app/toolbar/i18n/pt-BR.json
public/app/toolbar/i18n/pt-PT.json
public/app/toolbar/i18n/ru.json
public/app/toolbar/i18n/sv.json
public/app/toolbar/i18n/tr.json
public/app/toolbar/i18n/zh-CN.json
public/app/toolbar/i18n/zh-TW.json
public/assets/images/flags/bs.png [new file with mode: 0644]
public/index.html
public/scripts/app.c8c9cfef.js [moved from public/scripts/app.a9c980df.js with 52% similarity]
public/styles/app.d45f5a7f.css [moved from public/styles/app.6bed6274.css with 97% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.events.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.js [new file with mode: 0644]
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/api.js
server/errors/index.js
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/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/voiceQueueSummary.js [new file with mode: 0644]
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/realtime/utils.js [new file with mode: 0644]
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperAdditionalPhone.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
server/utils/client-side-logger.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js

index 04546d8..1cd9de3 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-05T14:09:11.521Z",
+    "time": "2022-05-10T16:25:28.557Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index e338b15..3a20596 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-05T14:09:11.521Z",
+    "time": "2022-05-10T16:25:28.557Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
diff --git a/public/app/errors/404/i18n/bs.json b/public/app/errors/404/i18n/bs.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/bs.json b/public/app/errors/500/i18n/bs.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/bs.json b/public/app/footer/i18n/bs.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/bs.json b/public/app/forgot/i18n/bs.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/bs.json b/public/app/header/i18n/bs.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": {}
+  }
+}
diff --git a/public/app/login/i18n/bs.json b/public/app/login/i18n/bs.json
new file mode 100644 (file)
index 0000000..78f3f74
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "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_AD": "Log in with Active Directory",
+    "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/bs.json b/public/app/main/apps/analytics/i18n/bs.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/bs.json b/public/app/main/apps/callysquare/i18n/bs.json
new file mode 100644 (file)
index 0000000..22b9fef
--- /dev/null
@@ -0,0 +1,244 @@
+{
+  "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",
+    "DIALTIMEZONE": "Dial timezone",
+    "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/bs.json b/public/app/main/apps/chat/i18n/bs.json
new file mode 100644 (file)
index 0000000..a8f7e5c
--- /dev/null
@@ -0,0 +1,491 @@
+{
+  "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",
+    "TEXT_BUTTON_COLOR": "Text Button 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",
+    "LABELTEXT": "Label text"
+  }
+}
diff --git a/public/app/main/apps/contactmanager/i18n/bs.json b/public/app/main/apps/contactmanager/i18n/bs.json
new file mode 100644 (file)
index 0000000..b700161
--- /dev/null
@@ -0,0 +1,200 @@
+{
+  "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",
+    "MOVE_DOWN": "Move down",
+    "MOVE_UP": "Move up",
+    "HOPPER": "Hopper",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper History",
+    "SCHEDULEDAT": "Scheduled At",
+    "DIALTIMEZONE": "Dial Timezone",
+    "TIMEZONE": "Dial Timezone",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_LIST": "Edit List",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_LIST": "Delete List",
+    "DELETE_HOPPER": "Delete Hopper",
+    "RELOAD": "Reload",
+    "ADDITIONAL_PHONES": "Additional phones",
+    "NO_COMPANIES": "No Company",
+    "NO_AVAILABLE_ITEMS": "No Available Items",
+    "ADD": "Add",
+    "UPDATE_EXISTING_CONTACTS": "Update existing contacts",
+    "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/bs.json b/public/app/main/apps/dashboards/i18n/bs.json
new file mode 100644 (file)
index 0000000..3169c3f
--- /dev/null
@@ -0,0 +1,594 @@
+{
+  "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",
+    "UPCOMING_RECALLME_CALL": "Upcoming Recall Me call",
+    "RECALLME_CALL_REMINDER": "Recall Me call reminder",
+    "CONTACT_NAME": "Contact Name",
+    "CONTACT_PHONE": "Contact Phone",
+    "SCHEDULED_TIME": "Scheduled time",
+    "LIST_NAME": "List name",
+    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
+    "VOICE_WAITING": "WAITING",
+    "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",
+    "DIAL_TIMEZONE": "Dial timezone",
+    "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",
+    "SYSTEM_TIME": "System time",
+    "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",
+    "FILTER_CHAT_WEBSITES": "Filter Chat Websites",
+    "FILTER_SMS_ACCOUNTS": "Filter Sms Accounts",
+    "FILTER_FAX_ACCOUNTS": "Filter Fax Accounts",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filter Openchannel Accounts",
+    "FILTER_MAIL_ACCOUNTS": "Filter Mail Accounts",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filter Whatsapp Accounts",
+    "SETFILTERS": "Set Filters",
+    "FILTERS": "Filters",
+    "CONFIRM": "Confirm",
+    "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": "Opened",
+    "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"
+    },
+    "LIMIT_TABS_REACHED": "Maximum number of open tabs reached"
+  }
+}
diff --git a/public/app/main/apps/fax/i18n/bs.json b/public/app/main/apps/fax/i18n/bs.json
new file mode 100644 (file)
index 0000000..bc9aa75
--- /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": "Opened",
+    "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/bs.json b/public/app/main/apps/help/i18n/bs.json
new file mode 100644 (file)
index 0000000..4c1be43
--- /dev/null
@@ -0,0 +1,8 @@
+{
+  "HELP": {
+    "ABOUT": "About",
+    "CONTACT_US": "Contact us",
+    "HELP": "Help",
+    "USEFUL_LINKS": "Useful links"
+  }
+}
diff --git a/public/app/main/apps/integrations/i18n/bs.json b/public/app/main/apps/integrations/i18n/bs.json
new file mode 100644 (file)
index 0000000..da1fa10
--- /dev/null
@@ -0,0 +1,252 @@
+{
+  "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",
+      "MODULECREATE_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",
+      "MODERN_AUTHENTICATION": "Switch to enable Modern Authentication"
+    },
+    "MODULECREATE": "Module create",
+    "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",
+    "DYNAMIC365CONTACT": "Contact",
+    "DYNAMIC365NOTHING": "Nothing",
+    "MODERN_AUTHENTICATION": "Modern Authentication",
+    "OPENNEWTAB": "Open new tab"
+  }
+}
diff --git a/public/app/main/apps/jscripty/i18n/bs.json b/public/app/main/apps/jscripty/i18n/bs.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/bs.json b/public/app/main/apps/mail/i18n/bs.json
new file mode 100644 (file)
index 0000000..22a7db6
--- /dev/null
@@ -0,0 +1,346 @@
+{
+  "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",
+      "FIELD_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 Account",
+    "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",
+      "CLOUD_PROVIDER": "Cloud Provider used for authentication"
+    },
+    "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",
+    "MODERN_AUTHENTICATION": "Modern Authentication",
+    "CLOUD_PROVIDER": "Cloud Provider",
+    "CUSTOM": "Custom",
+    "CREDENTIALS": "Credentials",
+    "NOTIFICATIONS": {
+      "ACCOUNT_CREATED_SUCCESS_TITLE": "Account successfully created",
+      "ACCOUNT_SAVED_SUCCESS_TITLE": "Account successfully saved",
+      "ACCOUNT_DELETE_TITLE": "Are you sure want to delete the account?",
+      "ACCOUNT_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "ACCOUNT_DELETED_SUCCESS_TITLE": "Account successfully deleted",
+      "ACCOUNT_SERVICE_DELETE": "You cannot delete a service account",
+      "ACCOUNTS_DELETE_TITLE": "Are you sure want to delete the selected accounts?",
+      "ACCOUNTS_DELETE_MESSAGE": "{{ total }} accounts will be deleted",
+      "ACCOUNTS_DELETED_SUCCESS_TITLE": "Accounts successfully deleted",
+      "SMTP_CONNECTION_SUCCESS_TITLE": "Successfully connected to the SMTP server",
+      "SMTP_CONNECTION_FAIL_TITLE": "Unable to connect to the SMTP server",
+      "UNKNOWN_SMTP_SERVER": "Unknown STMP server"
+    }
+  }
+}
diff --git a/public/app/main/apps/marketplace/i18n/bs.json b/public/app/main/apps/marketplace/i18n/bs.json
new file mode 100644 (file)
index 0000000..e80fbe2
--- /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. 2MB",
+    "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/bs.json b/public/app/main/apps/motiondialer/i18n/bs.json
new file mode 100644 (file)
index 0000000..6b63309
--- /dev/null
@@ -0,0 +1,701 @@
+{
+  "MOTIONDIALER": {
+    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
+    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
+    "ONE_CALL_EVERY": "One call every",
+    "CURRENT_INTERVAL": "Current Interval",
+    "PREVIOUS_INTERVAL": "Previous Interval",
+    "PREDICTIVE_IS_RUNNING": "Predictive is running",
+    "PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
+    "AVG_TALK_TIME": "Avg Talk Time",
+    "ANSWERED_CALLS": "Answered Calls",
+    "TOTAL_CALLS": "Total Calls",
+    "THRESHOLDS": "Thresholds",
+    "PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
+    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
+    "REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
+    "RECALLINQUEUE": "Recall in queue",
+    "SELECT_DATE": "Select Date",
+    "SELECT_TYPE": "Select Type",
+    "SELECT_CAMPAIGN": "Select Campaign",
+    "SCHEDULED_CALLS": "Scheduled Calls",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder",
+    "CUTDIGIT": "Cut Digits",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
+    "CLONE_IVRCAMPAIGN": "Clone Campaign",
+    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
+    "ABANDONEDCALLS": "Abandoned Queue Calls",
+    "HOPPERWIDGET": "Summary",
+    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
+    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
+    "RESET": "Reset",
+    "RESETLIST": "Reset Lists",
+    "SELECTALL": "Select All",
+    "UNSELECTALL": "Un-Select All",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TIMEOUT": "Timeout",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
+    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
+    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "PARTIALPAUSE": "Parital Pause",
+    "ALL": "All",
+    "IDLE": "Idle",
+    "TIMER": "Timer",
+    "MOVE_HOPPERFINAL": "Restore contact",
+    "RESTORECONTACTS": "Restore Contacts",
+    "NO_SUCH_NUMBER": "No Such Number",
+    "ANSWERING_MACHINE": "Answering machine",
+    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "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]",
+    "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]",
+    "CALLADDITIONALPHONEAFTERMIN": "Call additional phone after [min]",
+    "ADDITIONALPHONES": "Additional phones",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "ORIGINATED": "Originated",
+    "MESSAGE": "Message",
+    "DROPPED": "Dropped",
+    "CREATED_AT": "Created At",
+    "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",
+      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Mandatory field",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Call add.phone after min. should be greater than or equal to"
+    },
+    "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",
+      "TIMEZONE": "Specify timezone",
+      "PREVIEW_RECALL_ME_REMINDER": "If enabled, the system will send a notification to the agent n minutes (according to time interval set in general settings) before generating the recall me",
+      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
+      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
+      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
+      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
+      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
+      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
+      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
+      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
+      "PREFIX": "Telephone prefix",
+      "ACTIVE": "Active",
+      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
+      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
+      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
+      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
+      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
+      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
+      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
+      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
+      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
+      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+      "MUSICONHOLD": "Sets the music class to use for a particular queue",
+      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
+      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
+      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
+      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
+      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "RECORDING": "Enable call recording",
+      "VOICEMAIL_CONTEXT": "The context of the relative extension",
+      "METHOD": "Outbound dialer method",
+      "POWERLEVEL": "Number of contacts to call for any available agent",
+      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
+      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
+      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
+      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
+      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
+      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
+      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
+      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
+      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
+      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
+      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
+      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
+      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
+      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
+      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
+      "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number",
+      "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number",
+      "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop",
+      "DROPRETRYTIME": "Time in minutes before trying to call again a failed contact due to drop",
+      "ABANDONEDMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for abandon",
+      "ABANDONEDRETRYTIME": "Time in minutes before trying to call again a failed contact due to abandon",
+      "MACHINEMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for machine",
+      "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
+      "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
+      "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
+      "CALLADDITIONALPHONEAFTERMIN": "",
+      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
+      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
+    },
+    "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/bs.json b/public/app/main/apps/openchannel/i18n/bs.json
new file mode 100644 (file)
index 0000000..49fbeed
--- /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/bs.json b/public/app/main/apps/plugins/i18n/bs.json
new file mode 100644 (file)
index 0000000..be8be0f
--- /dev/null
@@ -0,0 +1,7 @@
+{
+  "PLUGINS": {
+    "PLUGINS": "Plugins",
+    "ERRORS": {},
+    "HELP": {}
+  }
+}
diff --git a/public/app/main/apps/settings/i18n/bs.json b/public/app/main/apps/settings/i18n/bs.json
new file mode 100644 (file)
index 0000000..6a12726
--- /dev/null
@@ -0,0 +1,309 @@
+{
+  "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",
+    "COPY_LICENSE": "Copy token to clipboard",
+    "DOWNLOAD_LICENSE_LOG_FILE": "Download license log file",
+    "LICENSE_LOG_FILE": "License log file",
+    "LICENSE_LOG_FILE_DOWNLOADED": "License log file downloaded!",
+    "CLIPBOARD": "Clipboard",
+    "COPIED_TO_CLIPBOARD": "Token copied to clipboard",
+    "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",
+    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Preview Recallme Reminder Interval",
+    "ENABLED": "Enabled",
+    "DISABLED": "Disabled",
+    "UNLIMITED_CHANNELS": "Unlimited Channels",
+    "RELOAD": "Reload",
+    "VERIFY": "Verify",
+    "INTERFACE": "Interface",
+    "UPDATING": "Updating",
+    "REMOTE_VERSION": "Remote Version",
+    "NO_NEW_VERSION_AVAILABLE": "No new version available",
+    "TOP_N_PROCESSES": "Top {{value}} processes",
+    "SYSTEM": "System",
+    "FILE_SYSTEM": "File System",
+    "PROCESSES": "Processes",
+    "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",
+    "DISABLED_COOKIE": "Cookies banner",
+    "AD_SSO_ENABLED": "Active Directory SSO Enabled",
+    "CLOUD_PROVIDERS": "Cloud Providers",
+    "APPLICATION_ID": "Application Id",
+    "TENANT_ID": "Tenant Id",
+    "CLIENT_SECRET": "Client Secret",
+    "NEW_CLIENT_SECRET": "New Client Secret",
+    "REDIRECT_URI": "Redirect URI",
+    "REMOTE_URI": "Remote URI",
+    "AUTHENTICATE": "Authenticate",
+    "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Authenticate to Microsoft Identity Platform",
+    "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
+    "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
+    "UPDATE_CLIENT_SECRET": "Update Client Secret",
+    "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",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Time interval in minutes before which notification will be sent to agent informing him about preview recall to be made",
+      "ENFORCE_PASSWORD_HISTORY": "Enables the validation against previously used passwords",
+      "PASSWORD_HISTORY_LIMIT": "Number of last used unique passwords to check",
+      "PRIVACY_POLICY": "Number of characters that will be replaced with an asterisk (*) (0 = all characters)",
+      "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)",
+      "CLIENT_SECRET": "The secret will no longer be visible once the configuration is saved. Store it safely if you want to use it elsewhere.",
+      "LIMIT_TABS": "Maximum number of possible interaction tabs open"
+    },
+    "ERRORS": {
+      "CHATTIMEOUT_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
+      "ADDRESS_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_REQUIRED": "Mandatory field",
+      "MIN_MAILBOX_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ACCOUNTNAME_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "SMTP_USERNAME_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "SMTP_HOST_REQUIRED": "Mandatory field",
+      "SMTP_PORT_REQUIRED": "Mandatory field",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PAGE_TITLE_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "PLAN_REQUIRED": "Mandatory field",
+      "LICENSE_REQUIRED": "Mandatory field",
+      "LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
+      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
+      "BLOCKDURATION_REQUIRED": "Mandatory field",
+      "SERVICE_REQUIRED": "Mandatory field",
+      "SECRETACCESSKEY_REQUIRED": "Mandatory field",
+      "ACCESSKEY_REQUIRED": "Mandatory field",
+      "LANGUAGE_REQUIRED": "Mandatory field",
+      "BUCKET_REQUIRED": "Mandatory field",
+      "TRANSCRIBEREGION_REQUIRED": "Mandatory field",
+      "TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
+      "SENTIMENTREGION_REQUIRED": "Mandatory field",
+      "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "WRONG_FORMAT": "Wrong format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
+    },
+    "NOTIFICATIONS": {
+      "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
+      "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
+      "CLOUD_PROVIDER_CREATED_SUCCESS_TITLE": "Cloud Provider successfully created",
+      "CLOUD_PROVIDER_SAVED_SUCCESS_TITLE": "Cloud Provider successfully saved",
+      "CLOUD_PROVIDER_DELETE_TITLE": "Are you sure want to delete the cloud provider?",
+      "CLOUD_PROVIDER_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "CLOUD_PROVIDER_DELETED_SUCCESS_TITLE": "Cloud Provider successfully deleted",
+      "CLOUD_PROVIDERS_DELETE_TITLE": "Are you sure want to delete the selected cloud providers?",
+      "CLOUD_PROVIDERS_DELETE_MESSAGE": "{{ total }} cloud providers will be deleted",
+      "CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE": "Cloud Providers successfully deleted",
+      "SMTP_SAVED_SUCCESS_TITLE": "SMTP configuration successfully saved",
+      "CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE": "Client Secret successfully updated"
+    },
+    "LIMIT_TABS": "Limit of interaction tab"
+  }
+}
diff --git a/public/app/main/apps/sms/i18n/bs.json b/public/app/main/apps/sms/i18n/bs.json
new file mode 100644 (file)
index 0000000..9f9a57b
--- /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"
+  }
+}
diff --git a/public/app/main/apps/staff/i18n/bs.json b/public/app/main/apps/staff/i18n/bs.json
new file mode 100644 (file)
index 0000000..16c4dd6
--- /dev/null
@@ -0,0 +1,424 @@
+{
+  "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",
+    "AUTO_ANSWER": "Auto answer",
+    "CHAT_AUTOANSWER": "Chat auto answer",
+    "CHAT_AUTOANSWERDELAY": "Chat auto answer delay [s]",
+    "EMAIL_AUTOANSWER": "Email auto answer",
+    "EMAIL_AUTOANSWERDELAY": "Email auto answer delay [s]",
+    "SMS_AUTOANSWER": "Sms auto answer",
+    "SMS_AUTOANSWERDELAY": "Sms auto answer delay [s]",
+    "OPENCHANNEL_AUTOANSWER": "Openchannel auto answer",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Openchannel auto answer delay [s]",
+    "FAX_AUTOANSWER": "Fax auto answer",
+    "FAX_AUTOANSWERDELAY": "Fax auto answer delay [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp connector auto answer",
+    "WHATSAPP_AUTOANSWERDELAY": "Whatsapp connector auto answer delay [s]",
+    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "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",
+    "AD_SSO_ENABLED": "Active Directory SSO",
+    "AUTHENTICATION": "Authentication",
+    "HELP": {
+      "DISABLED": "select to deactivate / unselect to reactivate",
+      "BLOCKED": "Lock / Unlock access",
+      "APIKEY": "Please use 'API key manager' button on toolbar to manage this key",
+      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
+      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Allowed Codecs in order of preference",
+      "TRANSPORT": "Set the default transports in order of preference",
+      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
+      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
+      "SIPEXPIRES": "Default: 160",
+      "SIPPORT": "Default: 5160",
+      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
+      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "CALLGROUP": "The agent's callgroup",
+      "PICKUPGROUP": "The groups in which the agent can answer calls",
+      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
+      "SAVE_PERMISSIONS": "Every section containing any pending changes will be saved",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Custom Dashboards permissions are managed in the Tools module",
+      "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
+      "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
+      "WSS_PORT": "Default: 8089",
+      "AD_SSO_ENABLED": "Login in with your Active Directory credentials"
+    },
+    "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",
+    "CLIENT_LOGS": "Client Logs",
+    "CLIENT_LOGS_DISABLED": "Client logs are disabled",
+    "CLIENT_LOGS_ENABLED": "Client logs are enabled",
+    "CLIENT_LOGS_LOGLEVEL_SELECT": "Select min logging level (severity)",
+    "CLIENT_LOGS_LOGLEVEL": "Log level: {{logLevel}}",
+    "CLIENT_LOGS_ENABLED_SINCE": "Enabled since: {{enabledSince}}",
+    "CLIENT_LOGS_ENABLED_MSG": "Client logs have been enabled for your user",
+    "CLIENT_LOGS_DISABLED_MSG": "Client logs have been disabled for your user",
+    "CLIENT_LOGS_ALL_ENABLED_WARNING": "Warning: this could severely affect server performances if many agents are logged in at the same time!",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Add Agent to WhatsApp Queues",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
+    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
+    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
+    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
+    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
+    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
+    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "All WhatsApp Queues",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Selected WhatsApp Queues",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
+    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
+    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues"
+  }
+}
diff --git a/public/app/main/apps/tools/i18n/bs.json b/public/app/main/apps/tools/i18n/bs.json
new file mode 100644 (file)
index 0000000..306ec24
--- /dev/null
@@ -0,0 +1,528 @@
+{
+  "TOOLS": {
+    "VIDEOSUPPORT": "Video support",
+    "PREVIOUSCONTACT": "Previous",
+    "BOT": "Voicebot",
+    "CLONE_TRUNK": "Clone Trunk",
+    "DISPOSITIONS": "Dispositions",
+    "NEW_DISPOSITION": "New Disposition",
+    "ADD_DISPOSITION": "Add Disposition",
+    "EDIT_DISPOSITION": "Edit Disposition",
+    "DELETE_DISPOSITION": "Delete Disposition",
+    "RUN_SCHEDULE": "Run schedule",
+    "SENDIFEMPTY": "Send if empty",
+    "NEXTCONTACT": "Next",
+    "OUTBOUND_ROUTE": "Outbound Route",
+    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
+    "FONTSIZE": "Font Size",
+    "TITLEFONTSIZE": "Font Title Size",
+    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
+    "LINK": "Link [https://]",
+    "BACKGROUND": "Background",
+    "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
+    "NONE": "None",
+    "TOTAL": "Total",
+    "ABANDONED": "Abandoned",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "ANSWERED": "Answered",
+    "CONTACTITEMTYPE": "Contact item types",
+    "ORDER_BY": "Order by",
+    "RGBBACKGROUNDCOLOR": "RGB Background color",
+    "NEW_CONTACTITEMTYPE": "New contact item type",
+    "EDIT_CONTACTITEMTYPE": "Edit contact item type",
+    "DELETE_CONTACTITEMTYPE": "Delete contact item type",
+    "ORDER_BY_NUMERIC": "Order by field should be numeric value!",
+    "ADD_CONTACTITEMTYPE": "Add",
+    "UNMANAGED": "Unmanaged",
+    "CUSTOMTYPE": "Custom [path]",
+    "WEBREPORT": "Web Report",
+    "PIECHART": "Pie Chart",
+    "MULTIBARCHART": "Multibar Chart",
+    "MOVE_WIDGET": "Move Widget",
+    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "METRIC": "Metric",
+    "FILTERVOICEQUEUES": "Filter Voice Queues",
+    "SERIE1": "Serie 1",
+    "SERIE2": "Serie 2",
+    "SERIE3": "Serie 3",
+    "REFRESH": "Refresh [s]",
+    "FORMAT": "Format",
+    "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",
+    "EMAIL": "Email",
+    "FILTERFAXACCOUNTS": "Filter Fax Accounts",
+    "FILTERSMSACCOUNTS": "Filter Sms Accounts",
+    "FILTERCHATWEBSITES": "Filter Chat Websites",
+    "FILTERWHATSAPPACCOUNTS": "Filter Whatsapp Accounts",
+    "FILTEREMAILACCOUNTS": "Filter Email Accounts",
+    "FILTEROPENCHANNELACCOUNTS": "Filter OpenChannel Accounts",
+    "OPENED": "Opened",
+    "OPENED_TEXT": "Opened Interactions",
+    "MANAGED": "Managed",
+    "MANAGED_TEXT": "Managed Interactions",
+    "ERRORS": {
+      "INFO_REQUIRED": "Mandatory field",
+      "SCRIPT_REQUIRED": "Mandatory field",
+      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "REFRESH_REQUIRED": "Mandatory field",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory field",
+      "PATH_REQUIRED": "Mandatory field",
+      "FORMAT_REQUIRED": "Mandatory field",
+      "REPORT_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "ACCOUNT_REQUIRED": "Mandatory field",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "DEFAULTUSER_REQUIRED": "Mandatory field",
+      "CALLERID_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The Passwords don't match",
+      "VALIDITYSTART_REQUIRED": "Mandatory field",
+      "VALIDITYEND_REQUIRED": "Mandatory field",
+      "MONTHDAY_REQUIRED": "Mandatory field",
+      "HOUR_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "URL_REQUIRED": "Mandatory field",
+      "URL_MUST_VALID_URL": "Wrong format",
+      "APPLICATION_REQUIRED": "Mandatory field",
+      "ARGUMENTS_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
+      "TITLE_REQUIRED": "Mandatory field",
+      "EMAILADDRESS_REQUIRED": "Mandatory field",
+      "EVENTVARIABLES_REQUIRED": "Mandatory field",
+      "INTEGRATION_REQUIRED": "Mandatory field",
+      "LIST_REQUIRED": "Mandatory field",
+      "TEMPLATE_REQUIRED": "Mandatory field",
+      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
+      "AUTOCREATE_FIELD_REQUIRED": "Mandatory field",
+      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
+      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_TO_REQUIRED": "Mandatory field",
+      "TIME_RANGE_FROM_INVALID": "Wrong Format",
+      "TIME_RANGE_TO_INVALID": "Wrong Format",
+      "ACTION_REQUIRED": "Mandatory field",
+      "CONFIGURATION_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "LOCATION_REQUIRED": "Mandatory field",
+      "OUTPUT_REQUIRED": "Mandatory field",
+      "REPORTTYPE_REQUIRED": "Mandatory field",
+      "REPORTFOLDER_REQUIRED": "Mandatory field",
+      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CHANNEL_REQUIRED": "Mandatory field"
+    },
+    "HOST": "Host",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Default User",
+    "DESCRIPTION": "Description",
+    "ADD_TRUNK": "Add Trunk",
+    "HELP": {
+      "OPENED": "The total number of Active Interactions",
+      "MANAGED": "The total number of Completed Interactions",
+      "SCRIPT_INFO": "Insert a description for the script",
+      "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
+      "INFO": "Insert title",
+      "SCRIPT": "Insert script",
+      "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",
+    "OFFLINE_MESSAGE": "Offline Message",
+    "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/bs.json b/public/app/main/apps/video/i18n/bs.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/bs.json b/public/app/main/apps/voice/i18n/bs.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/bs.json b/public/app/main/apps/whatsapp/i18n/bs.json
new file mode 100644 (file)
index 0000000..68808ad
--- /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 (SIP Connected)",
+    "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": "Opened",
+    "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/bs.json b/public/app/quick-panel/i18n/bs.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/bs.json b/public/app/reset/i18n/bs.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 c07a784..8783ff5 100644 (file)
     "OPENCHANNEL": "اتمنا من كل زوجه قناة فتح",
     "SMS": "رسالة قصيرة",
     "WHATSAPP": "ال WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "لم يتم تكوين الرد التلقائي للقنوات"
+    "NO_AUTOANSWER_CONFIGURED": "لم يتم تكوين الرد التلقائي للقنوات",
+    "BOSNIAN": "البوسنية"
   }
 }
diff --git a/public/app/toolbar/i18n/bs.json b/public/app/toolbar/i18n/bs.json
new file mode 100644 (file)
index 0000000..2b659de
--- /dev/null
@@ -0,0 +1,128 @@
+{
+  "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",
+    "PHONE2CALL": "Phone to call",
+    "CHANNELS": "Channels",
+    "CHANNEL": "Channel",
+    "NUM_NOTIFICATIONS": "Notifications",
+    "NOTIFICATIONS": "Autoanswer enabled",
+    "DELAY": "Autoanswer delay [secs]",
+    "AUTOANSWER_NOTIFICATIONS": "Autoanswer notifications",
+    "CHAT": "Chat",
+    "EMAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Openchannel",
+    "FAX": "Fax",
+    "WHATSAPP": "Whatsapp connector",
+    "WEBRTCSUPPORT": "WebRTC Support",
+    "REGISTERED": "Registered",
+    "NOT_REGISTERED": "Not registered",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC License is not enabled",
+    "ATTENDED_TRANSFER": "Attended Tranfer",
+    "TRANSFER": "Transfer",
+    "TARGET": "Target",
+    "CANCEL": "Cancel",
+    "FILENAME": "File name",
+    "STATUS": "Status",
+    "NO_AUTOANSWER_CONFIGURED": "No autoanswer configured for channels",
+    "ACTIONS": "Actions",
+    "SPEAKER": "Speaker",
+    "RINGING": "Ringing tone",
+    "MICROPHONE": "Microphone",
+    "CONFERENCE": "Conference with 2 active sessions",
+    "PROFILE": "Profile",
+    "SERVICES": "Services",
+    "AUDIO": "Audio",
+    "FULLNAME": "Fullname",
+    "NAME": "Name",
+    "INTERNAL": "Internal",
+    "RINGINGDEVICE": "Ringing Device",
+    "SPEAKERDEVICE": "Speaker Device",
+    "MICROPHONEDEVICE": "Microphone Device",
+    "CHANGEPASSWORD": "Change password",
+    "SETTINGS": "Settings",
+    "AUTOANSWER": "Auto answer",
+    "TOGGLE_NAVIGATION": "Toggle navigation",
+    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
+    "TOGGLE_NAVIGATION_MODE": "Toggle navigation mode",
+    "SEARCH": "Search",
+    "USER_SETTINGS": "User settings",
+    "TOGGLE_QUICK_PANEL": "Toggle quick panel",
+    "SOMEONE_LOGGED_YOU_OUT": "Someone logged out, do you want to stay logged?",
+    "STAY_LOGGED": "Stay logged",
+    "WARNING": "Warning",
+    "ENGLISH": "English",
+    "ITALIAN": "Italian",
+    "FRENCH": "French",
+    "KOREAN": "Korean",
+    "SPANISH": "Spanish",
+    "SWEDISH": "Swedish",
+    "RUSSIAN": "Russian",
+    "GERMAN": "German",
+    "JAPANESE": "Japanese",
+    "CHINESESIMPLIFIED": "Chinese Simplified",
+    "CHINESETRADITIONAL": "Chinese Traditional",
+    "DUTCH": "Dutch",
+    "FINNISH": "Finnish",
+    "DANISH": "Danish",
+    "PORTUGUESE": "Portuguese",
+    "NORWEGIAN": "Norwegian",
+    "HINDI": "Hindi",
+    "HUNGARIAN": "Hungarian",
+    "TURKISH": "Turkish",
+    "PERSIAN": "Persian",
+    "LATVIAN": "Latvian",
+    "POLISH": "Polish",
+    "LOGIN_TIME": "Login Time",
+    "PAUSE_TIME": "Pause Time",
+    "PREVIEW": "Preview",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "NEW_PASSWORD": "New Password",
+    "OLD_PASSWORD": "Old Password",
+    "SAVE": "Save",
+    "TRIAL_VERSION": "Trial Version",
+    "PAUSE": "Pause",
+    "RESUME": "End Pause",
+    "NO_PAUSES_AVAILABLE": "No pauses available",
+    "CZECH": "Czech",
+    "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}}"
+    },
+    "BOSNIAN": "bosanski"
+  }
+}
index 62d6c2e..64a44b1 100644 (file)
     "OPENCHANNEL": "Otevřený kanál",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Pro kanály není nakonfigurována žádná automatická odpověď"
+    "NO_AUTOANSWER_CONFIGURED": "Pro kanály není nakonfigurována žádná automatická odpověď",
+    "BOSNIAN": "bosenský"
   }
 }
index 0d38f05..e9b51cb 100644 (file)
     "OPENCHANNEL": "Åben kanal",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Intet autosvar konfigureret for kanaler"
+    "NO_AUTOANSWER_CONFIGURED": "Intet autosvar konfigureret for kanaler",
+    "BOSNIAN": "bosnisk"
   }
 }
index 1e32641..9d138a9 100644 (file)
     "OPENCHANNEL": "Offener Kanal",
     "SMS": "SMS",
     "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Keine automatische Antwort für Kanäle konfiguriert"
+    "NO_AUTOANSWER_CONFIGURED": "Keine automatische Antwort für Kanäle konfiguriert",
+    "BOSNIAN": "bosnisch"
   }
 }
index 6099ef3..7bb2214 100644 (file)
     "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
     "HELP": {
       "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
-    }
+    },
+    "BOSNIAN": "Bosnian"
   }
 }
index a04a322..408a79d 100644 (file)
     "OPENCHANNEL": "Canal abierto",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "No hay respuesta automática configurada para los canales"
+    "NO_AUTOANSWER_CONFIGURED": "No hay respuesta automática configurada para los canales",
+    "BOSNIAN": "bosnio"
   }
 }
index 1c71c2f..5b08987 100644 (file)
     "OPENCHANNEL": "Avatud kanal",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Kanalite jaoks pole automaatset vastust seadistatud"
+    "NO_AUTOANSWER_CONFIGURED": "Kanalite jaoks pole automaatset vastust seadistatud",
+    "BOSNIAN": "bosnia keel"
   }
 }
index cc734a2..42c27e5 100644 (file)
     "OPENCHANNEL": "کانال باز",
     "SMS": "پیامک",
     "WHATSAPP": "واتساپ",
-    "NO_AUTOANSWER_CONFIGURED": "هیچ پاسخ خودکار برای کانال ها پیکربندی نشده است"
+    "NO_AUTOANSWER_CONFIGURED": "هیچ پاسخ خودکار برای کانال ها پیکربندی نشده است",
+    "BOSNIAN": "بوسنیایی"
   }
 }
index e5e9d6c..469092f 100644 (file)
     "OPENCHANNEL": "Avoin kanava",
     "SMS": "tekstiviesti",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Kanaville ei ole määritetty automaattista vastausta"
+    "NO_AUTOANSWER_CONFIGURED": "Kanaville ei ole määritetty automaattista vastausta",
+    "BOSNIAN": "bosnialainen"
   }
 }
index baa128c..bb1147a 100644 (file)
     "OPENCHANNEL": "Canal ouvert",
     "SMS": "SMS",
     "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Aucune réponse automatique configurée pour les canaux"
+    "NO_AUTOANSWER_CONFIGURED": "Aucune réponse automatique configurée pour les canaux",
+    "BOSNIAN": "bosniaque"
   }
 }
index d07d8c9..7204fd1 100644 (file)
     "OPENCHANNEL": "ערוץ פתוח",
     "SMS": "סמס",
     "WHATSAPP": "וואטסאפ",
-    "NO_AUTOANSWER_CONFIGURED": "לא הוגדר תשובה אוטומטית עבור ערוצים"
+    "NO_AUTOANSWER_CONFIGURED": "לא הוגדר תשובה אוטומטית עבור ערוצים",
+    "BOSNIAN": "בוסנית"
   }
 }
index 253fd27..7c9bdbb 100644 (file)
     "OPENCHANNEL": "ओपनचैनल",
     "SMS": "एसएमएस",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "चैनलों के लिए कोई स्वतः उत्तर कॉन्फ़िगर नहीं किया गया"
+    "NO_AUTOANSWER_CONFIGURED": "चैनलों के लिए कोई स्वतः उत्तर कॉन्फ़िगर नहीं किया गया",
+    "BOSNIAN": "बोस्नियाई"
   }
 }
index d568d12..b34b508 100644 (file)
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
     "PHONE2CALL": "Telefon a híváshoz",
-    "NO_AUTOANSWER_CONFIGURED": "Nincs automatikus válasz konfigurálva a csatornákhoz"
+    "NO_AUTOANSWER_CONFIGURED": "Nincs automatikus válasz konfigurálva a csatornákhoz",
+    "BOSNIAN": "bosnyák"
   }
 }
index fdf5ce9..b75a67a 100644 (file)
     "OPENCHANNEL": "saluran terbuka",
     "SMS": "SMS",
     "WHATSAPP": "ada apa",
-    "NO_AUTOANSWER_CONFIGURED": "Tidak ada jawaban otomatis yang dikonfigurasi untuk saluran"
+    "NO_AUTOANSWER_CONFIGURED": "Tidak ada jawaban otomatis yang dikonfigurasi untuk saluran",
+    "BOSNIAN": "Bosnia"
   }
 }
index d0b30a9..7e3c26d 100644 (file)
     "OPENCHANNEL": "Canale aperto",
     "SMS": "sms",
     "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Nessuna risposta automatica configurata per i canali"
+    "NO_AUTOANSWER_CONFIGURED": "Nessuna risposta automatica configurata per i canali",
+    "BOSNIAN": "bosniaco"
   }
 }
index 28d1936..9ce87b6 100644 (file)
     "OPENCHANNEL": "オープンチャネル",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "チャネルに自動応答が設定されていません"
+    "NO_AUTOANSWER_CONFIGURED": "チャネルに自動応答が設定されていません",
+    "BOSNIAN": "ボスニア語"
   }
 }
index e7bb9e6..33a0099 100644 (file)
     "OPENCHANNEL": "오픈채널",
     "SMS": "SMS",
     "WHATSAPP": "왓츠앱",
-    "NO_AUTOANSWER_CONFIGURED": "채널에 대해 구성된 자동 응답이 없습니다."
+    "NO_AUTOANSWER_CONFIGURED": "채널에 대해 구성된 자동 응답이 없습니다.",
+    "BOSNIAN": "보스니아어"
   }
 }
index 39081b5..b6b187e 100644 (file)
     "OPENCHANNEL": "Atviras kanalas",
     "SMS": "trumpoji žinutė",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Automatinis atsakymas kanalams nesukonfigūruotas"
+    "NO_AUTOANSWER_CONFIGURED": "Automatinis atsakymas kanalams nesukonfigūruotas",
+    "BOSNIAN": "bosnių"
   }
 }
index 593e563..3bfa440 100644 (file)
     "OPENCHANNEL": "Atvērts kanāls",
     "SMS": "īsziņa",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Kanāliem nav konfigurēta automātiskā atbilde"
+    "NO_AUTOANSWER_CONFIGURED": "Kanāliem nav konfigurēta automātiskā atbilde",
+    "BOSNIAN": "bosniešu"
   }
 }
index 6fd6f5b..159c730 100644 (file)
     "OPENCHANNEL": "Open kanaal",
     "SMS": "sms",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Geen automatisch antwoord geconfigureerd voor kanalen"
+    "NO_AUTOANSWER_CONFIGURED": "Geen automatisch antwoord geconfigureerd voor kanalen",
+    "BOSNIAN": "Bosnisch"
   }
 }
index 2de53b6..35f8c16 100644 (file)
     "OPENCHANNEL": "Åpen kanal",
     "SMS": "tekstmelding",
     "WHATSAPP": "Hva skjer",
-    "NO_AUTOANSWER_CONFIGURED": "Ingen autosvar konfigurert for kanaler"
+    "NO_AUTOANSWER_CONFIGURED": "Ingen autosvar konfigurert for kanaler",
+    "BOSNIAN": "bosnisk"
   }
 }
index 09d65fc..fa881d4 100644 (file)
     "OPENCHANNEL": "Otwarty kanał",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Brak automatycznej odpowiedzi skonfigurowanej dla kanałów"
+    "NO_AUTOANSWER_CONFIGURED": "Brak automatycznej odpowiedzi skonfigurowanej dla kanałów",
+    "BOSNIAN": "bośniacki"
   }
 }
index 5ce0d41..e44f597 100644 (file)
     "OPENCHANNEL": "Canal aberto",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais"
+    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
+    "BOSNIAN": "bósnio"
   }
 }
index 116f014..efc2d09 100644 (file)
     "OPENCHANNEL": "Canal aberto",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais"
+    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
+    "BOSNIAN": "bósnio"
   }
 }
index bdf5e94..12d8d12 100644 (file)
     "OPENCHANNEL": "Открытый канал",
     "SMS": "смс",
     "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Для каналов не настроен автоответчик"
+    "NO_AUTOANSWER_CONFIGURED": "Для каналов не настроен автоответчик",
+    "BOSNIAN": "боснийский"
   }
 }
index 242cd09..5c41096 100644 (file)
     "OPENCHANNEL": "Öppen kanal",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Inget autosvar konfigurerat för kanaler"
+    "NO_AUTOANSWER_CONFIGURED": "Inget autosvar konfigurerat för kanaler",
+    "BOSNIAN": "bosniska"
   }
 }
index b820917..50eec67 100644 (file)
     "OPENCHANNEL": "açık kanal",
     "SMS": "SMS",
     "WHATSAPP": "Naber",
-    "NO_AUTOANSWER_CONFIGURED": "Kanallar için yapılandırılmamış otomatik yanıt yok"
+    "NO_AUTOANSWER_CONFIGURED": "Kanallar için yapılandırılmamış otomatik yanıt yok",
+    "BOSNIAN": "Boşnakça"
   }
 }
index 7c3c986..900ccde 100644 (file)
     "OPENCHANNEL": "开放渠道",
     "SMS": "短信",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "没有为频道配置自动应答"
+    "NO_AUTOANSWER_CONFIGURED": "没有为频道配置自动应答",
+    "BOSNIAN": "波斯尼亚语"
   }
 }
index d0b7953..84404e6 100644 (file)
     "OPENCHANNEL": "開放渠道",
     "SMS": "短信",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "沒有為頻道配置自動應答"
+    "NO_AUTOANSWER_CONFIGURED": "沒有為頻道配置自動應答",
+    "BOSNIAN": "波斯尼亞語"
   }
 }
diff --git a/public/assets/images/flags/bs.png b/public/assets/images/flags/bs.png
new file mode 100644 (file)
index 0000000..98d1c66
Binary files /dev/null and b/public/assets/images/flags/bs.png differ
index 6e30491..e090cb8 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.57a94b79.css">
 
-  <link rel="stylesheet" href="styles/app.6bed6274.css">
+  <link rel="stylesheet" href="styles/app.d45f5a7f.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -66,7 +66,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.a9c980df.js"></script>
+  <script src="scripts/app.c8c9cfef.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.a9c980df.js
rename to public/scripts/app.c8c9cfef.js
index f093c5d..cae09aa 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},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},getAgentStatusDisplayValue: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")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},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 n}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note: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,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={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",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.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:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues={},I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function P(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function L(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function k(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function U(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):D(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){if(P()){I.autoanswerNotifications;c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}})}else alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?k(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userAutoanswerNotification:send"),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(d,t,e){var a=["available","busy","inUse","invalid","loggedIn","loggedInDb","notInUse","onHold","paused","ringing","ringInUse","talking","unavailable","unknown","waiting"],i=["pTalking","originated","message","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function c(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 s(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return c(e)?"pause":c(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],s))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateQueueCounters:function(e){var n=e.agents.filter(function(e){return!0===e.busy}).length,t=e.agents.filter(function(e){return!0===e.paused&&!e.busy}).length;56===e.id&&(console.log("LOG ~ busyAgents",n),console.log("LOG ~ pausedAgents",t))},updateQueue:function(e,a,i,n){var t,s,o,r,l=(s=i,o=n,!1===(t=e).online?r="logout":s.online?t[o+"Pause"]?s.paused?r="pauseFromPaused":s.busy||c(t,!0)||(r="pauseFromAvailable"):!t[o+"Pause"]&&s.paused&&(r="unpause"):r="login",r);return d.resolve().then(function(){switch(l){case"login":t=a,i.online=!0,t.loggedInDb+=1,t.available+=1;break;case"logout":e=a,(n=i).online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1;break;case"pauseFromAvailable":i.paused=!0;break;case"pauseFromPaused":break;case"unpause":i.paused=!1}var e,n,t})},updateVoiceQueue:function(e,n){var t=a;"outbound"===n.type&&t.push(i),_.merge(n,_.pick(e,t)),0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},STATUS_STYLES:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"}}}e.$inject=["$q","$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",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,note:a.note?a.note: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,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,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","realtimeManager","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.onWithoutApply("voice_queue_channel:remove",function(n){if(n.queuecallerabandon||n.queuecallercomplete||n.queuecallerexit){var e=_.find(u.queues.rows,["name",n.queue]);e&&e.agents.forEach(function(e){e.voiceWaitingChannels=e.voiceWaitingChannels.filter(function(e){return e!==n.uniqueid})})}}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId,voiceWaitingChannels:[]}))}),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){if(!t.agentconnected)return;var e=_.find(u.queues.rows,["name",t.queue]);if(e){e.agents.forEach(function(e){e.voiceWaitingChannels=e.voiceWaitingChannels.filter(function(e){return e!==t.uniqueid})});var n=_.find(e.agents,["id",t.id]);n&&(t.queue?n.talking=!0:n.busy=!0,m.updateQueueCounters(e))}u.queues.rows.forEach(function(e){if(e.name!==t.queue){var n=_.find(e.agents,["id",t.id]);n&&(n.busy=!0,m.updateQueueCounters(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,e.available++),m.updateQueueCounters(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")})}),r.on("user:called",function(e){var n=_.find(u.queues.rows,["name",e.queue]);if(n){var t=_.find(n.agents,["id",e.id]);!t||t.busy||t.talking||t.voiceWaitingChannels.push(e.uniqueid)}}),r.on("user:agentringnoanswer",function(n){var e=_.find(u.queues.rows,["name",n.queue]);if(e){var t=_.find(e.agents,["id",n.id]);t&&(t.voiceWaitingChannels=t.voiceWaitingChannels.filter(function(e){return e!==n.uniqueid}))}}),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"),r.removeAllListeners("voice_queue_channel:remove"),r.removeAllListeners("user:called"),r.removeAllListeners("user:agentringnoanswer"),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";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={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",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.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:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(a,i,e,n,t,s,o,r,l,d,c,m,u){var p=this,g=["loggedIn","available","waiting","paused"],v=e(function(){},999),h=u&&1==u.count?u.rows[0].crudPermissions:null;p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(h),p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?_.startCase(p.channel)+"Queues":void 0,channel:p.channel,sort:"name",limit:10,page:1},p.getQueues=function(){p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:s.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows,i.show({controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:t})},p.addAgent=function(e,n){var t={realtime:!1,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows,i.show({controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:t})},d.on(p.channel+"_queue:save",function(e){var n=_.find(p.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,g))}),d.on("user"+_.startCase(p.channel)+"Queue:save",function(e){var n=_.find(p.queues.rows,["id",e[p.channel+"QueueId"]]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),d.on("user"+_.startCase(p.channel)+"Queue:remove",function(e){var n=_.find(p.queues.rows,["id",e[p.channel+"QueueId"]]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),d.on("user:update",function(t){p.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&l.updateQueue(t,e,n,p.channel)})}),n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),d.removeAllListeners("user"+_.startCase(p.channel)+"Queue:remove"),d.removeAllListeners("user"+_.startCase(p.channel)+"Queue:save"),d.removeAllListeners("user:update"),v&&e.cancel(v)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,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","realtimeManager","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(){return 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,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.on("voice_queue:save",function(e){56!==e.id&&53!==e.id||console.log("LOG ~ ON_SAVE_QUEUE",e);var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),u.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),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";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","realtimeManager","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues={},I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function P(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function L(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function k(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function U(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):D(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){if(P()){I.autoanswerNotifications;c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}})}else alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?k(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userAutoanswerNotification:send"),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }} ({{ \'VOICE.CALLS\' | translate }})</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\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.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>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+ queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.QUEUES\' }}">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ (vm.channel | uppercase) + \'.NAME\' | translate }}</th>\n        <th md-column>{{ (vm.channel | uppercase) + \'.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ (vm.channel | uppercase) + \'.PAUSED\' | translate }}</th>\n        <th md-column>{{ (vm.channel | uppercase) + \'.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="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <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="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.EDIT_QUEUE\' }}">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{ \'DASHBOARDS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'DASHBOARDS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'DASHBOARDS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }} ({{ \'VOICE.CALLS\' | 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.inUse - queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
similarity index 97%
rename from public/styles/app.6bed6274.css
rename to public/styles/app.d45f5a7f.css
index a5779d3..aa6b231 100644 (file)
@@ -1 +1 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;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)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;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)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index 2b53f30..bca62d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52bc=['exports','getDataValue','action','STRING','integration','motionbar','jscripty','browser','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]'];(function(_0x26a06f,_0x5e458c){var _0x35ead5=function(_0x3d20a3){while(--_0x3d20a3){_0x26a06f['push'](_0x26a06f['shift']());}};_0x35ead5(++_0x5e458c);}(_0x52bc,0x1ba));var _0xc52b=function(_0x1507ed,_0x435a2c){_0x1507ed=_0x1507ed-0x0;var _0x53ad5b=_0x52bc[_0x1507ed];return _0x53ad5b;};'use strict';var Sequelize=require('sequelize');module[_0xc52b('0x0')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2c504e){return this[_0xc52b('0x1')](_0xc52b('0x2'));}},'action':{'type':Sequelize[_0xc52b('0x3')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0xc52b('0x4'),_0xc52b('0x5'),_0xc52b('0x6'),'urlForward',_0xc52b('0x7'),'bot',_0xc52b('0x8')]],'msg':_0xc52b('0x9')}},'comment':_0xc52b('0x9')},'data1':{'type':Sequelize[_0xc52b('0x3')](0x1000),'comment':_0xc52b('0xa')},'data2':{'type':Sequelize[_0xc52b('0x3')](0x1000),'comment':_0xc52b('0xb')},'data3':{'type':Sequelize[_0xc52b('0x3')](0x1000),'comment':_0xc52b('0xc')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0xc52b('0xd')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0xc52b('0x3')],'comments':_0xc52b('0xe')},'data7':{'type':Sequelize[_0xc52b('0xf')],'comments':_0xc52b('0x10')}};
\ No newline at end of file
+var _0x843b=['jscripty','urlForward','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','getDataValue','action','STRING','integration','motionbar'];(function(_0xa8691c,_0x5d7a58){var _0x2d2817=function(_0x4725bd){while(--_0x4725bd){_0xa8691c['push'](_0xa8691c['shift']());}};_0x2d2817(++_0x5d7a58);}(_0x843b,0x91));var _0xb843=function(_0x4570b1,_0x3d6165){_0x4570b1=_0x4570b1-0x0;var _0x47f29a=_0x843b[_0x4570b1];return _0x47f29a;};'use strict';var Sequelize=require(_0xb843('0x0'));module[_0xb843('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4d2352){return this[_0xb843('0x2')](_0xb843('0x3'));}},'action':{'type':Sequelize[_0xb843('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0xb843('0x5'),_0xb843('0x6'),_0xb843('0x7'),_0xb843('0x8'),'browser',_0xb843('0x9'),_0xb843('0xa')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xb843('0xb')},'data1':{'type':Sequelize[_0xb843('0x4')](0x1000),'comment':_0xb843('0xc')},'data2':{'type':Sequelize[_0xb843('0x4')](0x1000),'comment':_0xb843('0xd')},'data3':{'type':Sequelize[_0xb843('0x4')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0xb843('0xe')},'data5':{'type':Sequelize[_0xb843('0x4')](0x1000),'comments':_0xb843('0xf')},'data6':{'type':Sequelize[_0xb843('0x4')],'comments':_0xb843('0x10')},'data7':{'type':Sequelize[_0xb843('0x11')],'comments':_0xb843('0x12')}};
\ No newline at end of file
index 3e81002..415bb09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1bc=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','send','body','params','catch','destroy','Action','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util'];(function(_0x4d760f,_0x5c3095){var _0x555684=function(_0x464196){while(--_0x464196){_0x4d760f['push'](_0x4d760f['shift']());}};_0x555684(++_0x5c3095);}(_0xf1bc,0x1da));var _0xcf1b=function(_0x572166,_0x296bc0){_0x572166=_0x572166-0x0;var _0x5d1daf=_0xf1bc[_0x572166];return _0x5d1daf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcf1b('0x0'));var rp=require('request-promise');var moment=require(_0xcf1b('0x1'));var BPromise=require(_0xcf1b('0x2'));var Mustache=require('mustache');var util=require(_0xcf1b('0x3'));var path=require(_0xcf1b('0x4'));var sox=require(_0xcf1b('0x5'));var csv=require(_0xcf1b('0x6'));var ejs=require(_0xcf1b('0x7'));var fs=require('fs');var fs_extra=require(_0xcf1b('0x8'));var _=require(_0xcf1b('0x9'));var squel=require('squel');var crypto=require(_0xcf1b('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcf1b('0x6'));var querystring=require(_0xcf1b('0xb'));var Papa=require('papaparse');var Redis=require(_0xcf1b('0xc'));var authService=require(_0xcf1b('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcf1b('0xe'));var logger=require('../../config/logger')(_0xcf1b('0xf'));var utils=require('../../config/utils');var config=require(_0xcf1b('0x10'));var licenseUtil=require(_0xcf1b('0x11'));var db=require(_0xcf1b('0x12'))['db'];function respondWithStatusCode(_0x151bc6,_0x38955f){_0x38955f=_0x38955f||0xcc;return function(_0x2b4c15){if(_0x2b4c15){return _0x151bc6[_0xcf1b('0x13')](_0x38955f);}return _0x151bc6[_0xcf1b('0x14')](_0x38955f)[_0xcf1b('0x15')]();};}function respondWithResult(_0x461799,_0x34462d){_0x34462d=_0x34462d||0xc8;return function(_0x4654ac){if(_0x4654ac){return _0x461799['status'](_0x34462d)[_0xcf1b('0x16')](_0x4654ac);}};}function respondWithFilteredResult(_0x50bf8e,_0x524abd){return function(_0x5a9d22){if(_0x5a9d22){var _0x3d418b=typeof _0x524abd[_0xcf1b('0x17')]===_0xcf1b('0x18')&&typeof _0x524abd[_0xcf1b('0x19')]===_0xcf1b('0x18');var _0x544d4f=_0x5a9d22['count'];var _0x20f788=_0x3d418b?0x0:_0x524abd['offset'];var _0x491638=_0x3d418b?_0x5a9d22[_0xcf1b('0x1a')]:_0x524abd[_0xcf1b('0x17')]+_0x524abd['limit'];var _0x343e41;if(_0x491638>=_0x544d4f){_0x491638=_0x544d4f;_0x343e41=0xc8;}else{_0x343e41=0xce;}_0x50bf8e['status'](_0x343e41);return _0x50bf8e[_0xcf1b('0x1b')]('Content-Range',_0x20f788+'-'+_0x491638+'/'+_0x544d4f)[_0xcf1b('0x16')](_0x5a9d22);}return null;};}function patchUpdates(_0x2724e5){return function(_0x1e8281){try{jsonpatch[_0xcf1b('0x1c')](_0x1e8281,_0x2724e5,!![]);}catch(_0x3f1953){return BPromise['reject'](_0x3f1953);}return _0x1e8281[_0xcf1b('0x1d')]();};}function saveUpdates(_0xb293e4,_0x31c080){return function(_0x52f672){if(_0x52f672){return _0x52f672[_0xcf1b('0x1e')](_0xb293e4)[_0xcf1b('0x1f')](function(_0x3de636){return _0x3de636;});}return null;};}function removeEntity(_0x1d7bf7,_0x376e53){return function(_0x3a9d74){if(_0x3a9d74){return _0x3a9d74['destroy']()[_0xcf1b('0x1f')](function(){_0x1d7bf7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e0ee7,_0x5bf4a6){return function(_0x31d56e){if(!_0x31d56e){_0x2e0ee7[_0xcf1b('0x13')](0x194);}return _0x31d56e;};}function handleError(_0x4e39b3,_0xaf53ff){_0xaf53ff=_0xaf53ff||0x1f4;return function(_0x2fa096){logger[_0xcf1b('0x20')](_0x2fa096[_0xcf1b('0x21')]);if(_0x2fa096['name']){delete _0x2fa096[_0xcf1b('0x22')];}_0x4e39b3['status'](_0xaf53ff)[_0xcf1b('0x23')](_0x2fa096);};}exports[_0xcf1b('0x1e')]=function(_0x57199a,_0x5c2220){if(_0x57199a[_0xcf1b('0x24')]['id']){delete _0x57199a[_0xcf1b('0x24')]['id'];}return db['Action']['find']({'where':{'id':_0x57199a[_0xcf1b('0x25')]['id']}})[_0xcf1b('0x1f')](handleEntityNotFound(_0x5c2220,null))[_0xcf1b('0x1f')](saveUpdates(_0x57199a[_0xcf1b('0x24')],null))[_0xcf1b('0x1f')](respondWithResult(_0x5c2220,null))[_0xcf1b('0x26')](handleError(_0x5c2220,null));};exports[_0xcf1b('0x27')]=function(_0x518bcb,_0x2f14e5){return db[_0xcf1b('0x28')]['find']({'where':{'id':_0x518bcb[_0xcf1b('0x25')]['id']}})['then'](handleEntityNotFound(_0x2f14e5,null))[_0xcf1b('0x1f')](removeEntity(_0x2f14e5,null))[_0xcf1b('0x26')](handleError(_0x2f14e5,null));};
\ No newline at end of file
+var _0x214e=['update','then','stack','body','Action','find','params','catch','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save'];(function(_0x2b2b33,_0x56606f){var _0x229157=function(_0x52b63e){while(--_0x52b63e){_0x2b2b33['push'](_0x2b2b33['shift']());}};_0x229157(++_0x56606f);}(_0x214e,0x86));var _0xe214=function(_0x29891a,_0x25cfbe){_0x29891a=_0x29891a-0x0;var _0x2f55e2=_0x214e[_0x29891a];return _0x2f55e2;};'use strict';var emlformat=require(_0xe214('0x0'));var rimraf=require(_0xe214('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe214('0x2'));var rp=require(_0xe214('0x3'));var moment=require('moment');var BPromise=require(_0xe214('0x4'));var Mustache=require(_0xe214('0x5'));var util=require(_0xe214('0x6'));var path=require(_0xe214('0x7'));var sox=require(_0xe214('0x8'));var csv=require(_0xe214('0x9'));var ejs=require(_0xe214('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe214('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe214('0xc'));var deskjs=require(_0xe214('0xd'));var toCsv=require(_0xe214('0x9'));var querystring=require(_0xe214('0xe'));var Papa=require(_0xe214('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe214('0x10'));var hardwareService=require(_0xe214('0x11'));var logger=require(_0xe214('0x12'))(_0xe214('0x13'));var utils=require(_0xe214('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xe214('0x15'));var db=require(_0xe214('0x16'))['db'];function respondWithStatusCode(_0x53fc6e,_0x41c823){_0x41c823=_0x41c823||0xcc;return function(_0xef08f0){if(_0xef08f0){return _0x53fc6e[_0xe214('0x17')](_0x41c823);}return _0x53fc6e[_0xe214('0x18')](_0x41c823)[_0xe214('0x19')]();};}function respondWithResult(_0x4e840e,_0x28948e){_0x28948e=_0x28948e||0xc8;return function(_0x42223f){if(_0x42223f){return _0x4e840e[_0xe214('0x18')](_0x28948e)[_0xe214('0x1a')](_0x42223f);}};}function respondWithFilteredResult(_0x3949bb,_0x42c301){return function(_0x14c05d){if(_0x14c05d){var _0x379126=typeof _0x42c301[_0xe214('0x1b')]===_0xe214('0x1c')&&typeof _0x42c301[_0xe214('0x1d')]===_0xe214('0x1c');var _0x302639=_0x14c05d['count'];var _0x3c36df=_0x379126?0x0:_0x42c301[_0xe214('0x1b')];var _0x41e946=_0x379126?_0x14c05d[_0xe214('0x1e')]:_0x42c301[_0xe214('0x1b')]+_0x42c301[_0xe214('0x1d')];var _0x30a16c;if(_0x41e946>=_0x302639){_0x41e946=_0x302639;_0x30a16c=0xc8;}else{_0x30a16c=0xce;}_0x3949bb['status'](_0x30a16c);return _0x3949bb[_0xe214('0x1f')]('Content-Range',_0x3c36df+'-'+_0x41e946+'/'+_0x302639)['json'](_0x14c05d);}return null;};}function patchUpdates(_0x44ae2a){return function(_0x51a18c){try{jsonpatch['apply'](_0x51a18c,_0x44ae2a,!![]);}catch(_0x32e675){return BPromise[_0xe214('0x20')](_0x32e675);}return _0x51a18c[_0xe214('0x21')]();};}function saveUpdates(_0x4d3362,_0x357f72){return function(_0x13eb62){if(_0x13eb62){return _0x13eb62[_0xe214('0x22')](_0x4d3362)[_0xe214('0x23')](function(_0x375ab4){return _0x375ab4;});}return null;};}function removeEntity(_0xa55f98,_0x30db4b){return function(_0x4b13c0){if(_0x4b13c0){return _0x4b13c0['destroy']()['then'](function(){_0xa55f98[_0xe214('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x333f9d,_0x13aaea){return function(_0x589058){if(!_0x589058){_0x333f9d['sendStatus'](0x194);}return _0x589058;};}function handleError(_0x18b9f3,_0xf213ca){_0xf213ca=_0xf213ca||0x1f4;return function(_0x43a19f){logger['error'](_0x43a19f[_0xe214('0x24')]);if(_0x43a19f['name']){delete _0x43a19f['name'];}_0x18b9f3[_0xe214('0x18')](_0xf213ca)['send'](_0x43a19f);};}exports[_0xe214('0x22')]=function(_0x25ab69,_0x1ebed9){if(_0x25ab69[_0xe214('0x25')]['id']){delete _0x25ab69[_0xe214('0x25')]['id'];}return db[_0xe214('0x26')][_0xe214('0x27')]({'where':{'id':_0x25ab69[_0xe214('0x28')]['id']}})[_0xe214('0x23')](handleEntityNotFound(_0x1ebed9,null))[_0xe214('0x23')](saveUpdates(_0x25ab69[_0xe214('0x25')],null))['then'](respondWithResult(_0x1ebed9,null))[_0xe214('0x29')](handleError(_0x1ebed9,null));};exports['destroy']=function(_0x41c62e,_0xef313d){return db[_0xe214('0x26')]['find']({'where':{'id':_0x41c62e[_0xe214('0x28')]['id']}})[_0xe214('0x23')](handleEntityNotFound(_0xef313d,null))['then'](removeEntity(_0xef313d,null))['catch'](handleError(_0xef313d,null));};
\ No newline at end of file
index 3540f9e..82d0269 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc289=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','define','Action','tools_actions','lodash','../../config/logger'];(function(_0x13ff53,_0x5e1424){var _0x290228=function(_0x3e3133){while(--_0x3e3133){_0x13ff53['push'](_0x13ff53['shift']());}};_0x290228(++_0x5e1424);}(_0xc289,0x7c));var _0x9c28=function(_0x4bd878,_0x59c056){_0x4bd878=_0x4bd878-0x0;var _0x589155=_0xc289[_0x4bd878];return _0x589155;};'use strict';var _=require(_0x9c28('0x0'));var util=require('util');var logger=require(_0x9c28('0x1'))(_0x9c28('0x2'));var moment=require(_0x9c28('0x3'));var BPromise=require(_0x9c28('0x4'));var rp=require(_0x9c28('0x5'));var fs=require('fs');var path=require(_0x9c28('0x6'));var rimraf=require(_0x9c28('0x7'));var config=require(_0x9c28('0x8'));var attributes=require(_0x9c28('0x9'));module[_0x9c28('0xa')]=function(_0x55faca,_0xf051c){return _0x55faca[_0x9c28('0xb')](_0x9c28('0xc'),attributes,{'tableName':_0x9c28('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xecda=['tools_actions','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./action.attributes','exports','define'];(function(_0x5f1e8e,_0x2774f2){var _0x517bc4=function(_0x4c92eb){while(--_0x4c92eb){_0x5f1e8e['push'](_0x5f1e8e['shift']());}};_0x517bc4(++_0x2774f2);}(_0xecda,0x175));var _0xaecd=function(_0x47ec13,_0x9b1429){_0x47ec13=_0x47ec13-0x0;var _0x3aed32=_0xecda[_0x47ec13];return _0x3aed32;};'use strict';var _=require(_0xaecd('0x0'));var util=require(_0xaecd('0x1'));var logger=require(_0xaecd('0x2'))(_0xaecd('0x3'));var moment=require('moment');var BPromise=require(_0xaecd('0x4'));var rp=require(_0xaecd('0x5'));var fs=require('fs');var path=require(_0xaecd('0x6'));var rimraf=require(_0xaecd('0x7'));var config=require('../../config/environment');var attributes=require(_0xaecd('0x8'));module[_0xaecd('0x9')]=function(_0x284d8c,_0xe61c53){return _0x284d8c[_0xaecd('0xa')]('Action',attributes,{'tableName':_0xaecd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01e4916..bfe31d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','Action,\x20%s,\x20%s','Action,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x3ea16b,_0x1645ca){var _0x330fca=function(_0x22c9f4){while(--_0x22c9f4){_0x3ea16b['push'](_0x3ea16b['shift']());}};_0x330fca(++_0x1645ca);}(_0xe14b,0x93));var _0xbe14=function(_0x50c24e,_0x66449e){_0x50c24e=_0x50c24e-0x0;var _0x38f486=_0xe14b[_0x50c24e];return _0x38f486;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
+var _0x1261=['then','info','Action,\x20%s,\x20%s','request\x20sent','Action,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x59d581,_0x4a6a97){var _0x47c61b=function(_0x12b3d8){while(--_0x12b3d8){_0x59d581['push'](_0x59d581['shift']());}};_0x47c61b(++_0x4a6a97);}(_0x1261,0x144));var _0x1126=function(_0x26a810,_0x247776){_0x26a810=_0x26a810-0x0;var _0x4758a3=_0x1261[_0x26a810];return _0x4758a3;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('Action,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index bd861f5..d822659 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x600c=['delete','/:id','exports','multer','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','isAuthenticated'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x600c,0x87));var _0xc600=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x600c[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xc600('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc600('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc600('0x2'));var interaction=require(_0xc600('0x3'));var config=require(_0xc600('0x4'));var controller=require(_0xc600('0x5'));router[_0xc600('0x6')]('/:id',auth[_0xc600('0x7')](),controller['update']);router[_0xc600('0x8')](_0xc600('0x9'),auth[_0xc600('0x7')](),controller['destroy']);module[_0xc600('0xa')]=router;
\ No newline at end of file
+var _0x9135=['isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','/:id'];(function(_0x355f82,_0xf41ed){var _0x4c18a1=function(_0x405b12){while(--_0x405b12){_0x355f82['push'](_0x355f82['shift']());}};_0x4c18a1(++_0xf41ed);}(_0x9135,0xd5));var _0x5913=function(_0x345ad9,_0x28da02){_0x345ad9=_0x345ad9-0x0;var _0x5cb6a4=_0x9135[_0x345ad9];return _0x5cb6a4;};'use strict';var multer=require(_0x5913('0x0'));var util=require(_0x5913('0x1'));var path=require(_0x5913('0x2'));var timeout=require(_0x5913('0x3'));var express=require(_0x5913('0x4'));var router=express['Router']();var fs_extra=require(_0x5913('0x5'));var auth=require(_0x5913('0x6'));var interaction=require(_0x5913('0x7'));var config=require(_0x5913('0x8'));var controller=require(_0x5913('0x9'));router['put'](_0x5913('0xa'),auth[_0x5913('0xb')](),controller[_0x5913('0xc')]);router[_0x5913('0xd')](_0x5913('0xa'),auth[_0x5913('0xb')](),controller[_0x5913('0xe')]);module[_0x5913('0xf')]=router;
\ No newline at end of file
index fb25cb2..1f3e982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['sequelize','STRING','TEXT'];(function(_0x16c0f5,_0x5eb36e){var _0x3b5428=function(_0x426fe9){while(--_0x426fe9){_0x16c0f5['push'](_0x16c0f5['shift']());}};_0x3b5428(++_0x5eb36e);}(_0x7217,0x19e));var _0x7721=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x7217[_0x55f8b4];return _0x2475f9;};'use strict';var Sequelize=require(_0x7721('0x0'));module['exports']={'name':{'type':Sequelize[_0x7721('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x7721('0x1')]},'parent':{'type':Sequelize[_0x7721('0x1')]},'table':{'type':Sequelize[_0x7721('0x1')]},'conditions':{'type':Sequelize[_0x7721('0x2')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x2675=['sequelize','STRING','TEXT'];(function(_0x101a17,_0x5d047a){var _0x3b76ee=function(_0x89be1b){while(--_0x89be1b){_0x101a17['push'](_0x101a17['shift']());}};_0x3b76ee(++_0x5d047a);}(_0x2675,0x75));var _0x5267=function(_0x2379d9,_0x146e8e){_0x2379d9=_0x2379d9-0x0;var _0x4413f8=_0x2675[_0x2379d9];return _0x4413f8;};'use strict';var Sequelize=require(_0x5267('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x5267('0x1')]},'table':{'type':Sequelize[_0x5267('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x5267('0x2')]}};
\ No newline at end of file
index 50bc685..2b25302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef51=['MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','findAll','keyBy','select','table','MetricId','replace','function','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignKey','foreignTable','conditions','parse','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','join','left_join','COUNT(DISTINCT\x20%s)','AVG(%s)','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','metric','order','%s.%s\x20=\x20%s.%s','web','fullPath','%s-%s.%s','output','csv','custom','AnalyticExtractedReport','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','COUNT(*)','run','runReport','eml-format','rimraf','request-promise','moment','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','CustomReports','sendStatus','stack','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','params','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','UserProfileResource','error','preview','right_join','cross_join','SUM(%s)','COUNT(%s)'];(function(_0x4de94d,_0xdd6680){var _0x5a74f5=function(_0x3e7181){while(--_0x3e7181){_0x4de94d['push'](_0x4de94d['shift']());}};_0x5a74f5(++_0xdd6680);}(_0xef51,0x1a1));var _0x1ef5=function(_0x2af3e1,_0xb5207f){_0x2af3e1=_0x2af3e1-0x0;var _0xfa27d=_0xef51[_0x2af3e1];return _0xfa27d;};'use strict';var emlformat=require(_0x1ef5('0x0'));var rimraf=require(_0x1ef5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1ef5('0x2'));var moment=require(_0x1ef5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1ef5('0x4'));var util=require(_0x1ef5('0x5'));var path=require(_0x1ef5('0x6'));var sox=require(_0x1ef5('0x7'));var csv=require(_0x1ef5('0x8'));var ejs=require(_0x1ef5('0x9'));var fs=require('fs');var fs_extra=require(_0x1ef5('0xa'));var _=require(_0x1ef5('0xb'));var squel=require(_0x1ef5('0xc'));var crypto=require(_0x1ef5('0xd'));var jsforce=require(_0x1ef5('0xe'));var deskjs=require(_0x1ef5('0xf'));var toCsv=require(_0x1ef5('0x8'));var querystring=require(_0x1ef5('0x10'));var Papa=require(_0x1ef5('0x11'));var Redis=require(_0x1ef5('0x12'));var authService=require(_0x1ef5('0x13'));var qs=require(_0x1ef5('0x14'));var as=require(_0x1ef5('0x15'));var hardwareService=require(_0x1ef5('0x16'));var logger=require('../../config/logger')(_0x1ef5('0x17'));var utils=require(_0x1ef5('0x18'));var config=require(_0x1ef5('0x19'));var licenseUtil=require(_0x1ef5('0x1a'));var db=require(_0x1ef5('0x1b'))['db'];var dbH=require(_0x1ef5('0x1b'))[_0x1ef5('0x1c')];function respondWithStatusCode(_0x1a3995,_0xb615e){_0xb615e=_0xb615e||0xcc;return function(_0x2163bc){if(_0x2163bc){return _0x1a3995['sendStatus'](_0xb615e);}return _0x1a3995[_0x1ef5('0x1d')](_0xb615e)[_0x1ef5('0x1e')]();};}function respondWithResult(_0x45b786,_0x58fa4a){_0x58fa4a=_0x58fa4a||0xc8;return function(_0x2d1be3){if(_0x2d1be3){return _0x45b786[_0x1ef5('0x1d')](_0x58fa4a)[_0x1ef5('0x1f')](_0x2d1be3);}};}function respondWithFilteredResult(_0x536ee0,_0x155dae){return function(_0x251523){if(_0x251523){var _0xedf83a=typeof _0x155dae[_0x1ef5('0x20')]===_0x1ef5('0x21')&&typeof _0x155dae[_0x1ef5('0x22')]===_0x1ef5('0x21');var _0x21fba5=_0x251523['count'];var _0x239a0d=_0xedf83a?0x0:_0x155dae[_0x1ef5('0x20')];var _0x2cf40d=_0xedf83a?_0x251523[_0x1ef5('0x23')]:_0x155dae['offset']+_0x155dae[_0x1ef5('0x22')];var _0x14f087;if(_0x2cf40d>=_0x21fba5){_0x2cf40d=_0x21fba5;_0x14f087=0xc8;}else{_0x14f087=0xce;}_0x536ee0[_0x1ef5('0x1d')](_0x14f087);return _0x536ee0[_0x1ef5('0x24')](_0x1ef5('0x25'),_0x239a0d+'-'+_0x2cf40d+'/'+_0x21fba5)[_0x1ef5('0x1f')](_0x251523);}return null;};}function patchUpdates(_0x48073a){return function(_0x42c5be){try{jsonpatch['apply'](_0x42c5be,_0x48073a,!![]);}catch(_0x13c7e9){return BPromise[_0x1ef5('0x26')](_0x13c7e9);}return _0x42c5be[_0x1ef5('0x27')]();};}function saveUpdates(_0x33e951,_0x2e8f47){return function(_0x41278c){if(_0x41278c){return _0x41278c[_0x1ef5('0x28')](_0x33e951)['then'](function(_0x123a42){return _0x123a42;});}return null;};}function removeEntity(_0x791eb2,_0x57ffb7){return function(_0x46d68a){if(_0x46d68a){return _0x46d68a[_0x1ef5('0x29')]()[_0x1ef5('0x2a')](function(){var _0x1025fb=_0x46d68a['get']({'plain':!![]});var _0x26a11e=_0x1ef5('0x2b');return db['UserProfileResource']['destroy']({'where':{'type':_0x26a11e,'resourceId':_0x1025fb['id']}})[_0x1ef5('0x2a')](function(){return _0x46d68a;});})[_0x1ef5('0x2a')](function(){_0x791eb2[_0x1ef5('0x1d')](0xcc)[_0x1ef5('0x1e')]();});}};}function handleEntityNotFound(_0xe12e4d,_0x1b70a0){return function(_0x787d05){if(!_0x787d05){_0xe12e4d[_0x1ef5('0x2c')](0x194);}return _0x787d05;};}function handleError(_0x29a5cd,_0x5a6caa){_0x5a6caa=_0x5a6caa||0x1f4;return function(_0x252738){logger['error'](_0x252738[_0x1ef5('0x2d')]);if(_0x252738['name']){delete _0x252738['name'];}_0x29a5cd['status'](_0x5a6caa)['send'](_0x252738);};}exports[_0x1ef5('0x2e')]=function(_0x5892cf,_0x4ce020){var _0x4ad303={},_0x25d1cf={},_0x9af038={'count':0x0,'rows':[]};var _0x21242a=_[_0x1ef5('0x2f')](db[_0x1ef5('0x30')][_0x1ef5('0x31')],function(_0x3914d9){return{'name':_0x3914d9[_0x1ef5('0x32')],'type':_0x3914d9[_0x1ef5('0x33')][_0x1ef5('0x34')]};});_0x25d1cf[_0x1ef5('0x35')]=_[_0x1ef5('0x2f')](_0x21242a,_0x1ef5('0x36'));_0x25d1cf[_0x1ef5('0x37')]=_[_0x1ef5('0x38')](_0x5892cf['query']);_0x25d1cf[_0x1ef5('0x39')]=_[_0x1ef5('0x3a')](_0x25d1cf['model'],_0x25d1cf[_0x1ef5('0x37')]);_0x4ad303[_0x1ef5('0x3b')]=_[_0x1ef5('0x3a')](_0x25d1cf[_0x1ef5('0x35')],qs[_0x1ef5('0x3c')](_0x5892cf['query'][_0x1ef5('0x3c')]));_0x4ad303[_0x1ef5('0x3b')]=_0x4ad303['attributes'][_0x1ef5('0x3d')]?_0x4ad303[_0x1ef5('0x3b')]:_0x25d1cf[_0x1ef5('0x35')];if(!_0x5892cf[_0x1ef5('0x37')][_0x1ef5('0x3e')]('nolimit')){_0x4ad303[_0x1ef5('0x22')]=qs[_0x1ef5('0x22')](_0x5892cf[_0x1ef5('0x37')][_0x1ef5('0x22')]);_0x4ad303['offset']=qs[_0x1ef5('0x20')](_0x5892cf[_0x1ef5('0x37')][_0x1ef5('0x20')]);}_0x4ad303['order']=qs[_0x1ef5('0x3f')](_0x5892cf[_0x1ef5('0x37')][_0x1ef5('0x3f')]);_0x4ad303[_0x1ef5('0x40')]=qs[_0x1ef5('0x39')](_[_0x1ef5('0x41')](_0x5892cf[_0x1ef5('0x37')],_0x25d1cf[_0x1ef5('0x39')]),_0x21242a);if(_0x5892cf['query'][_0x1ef5('0x42')]){_0x4ad303[_0x1ef5('0x40')]=_[_0x1ef5('0x43')](_0x4ad303[_0x1ef5('0x40')],{'$or':_['map'](_0x21242a,function(_0x5db0aa){if(_0x5db0aa[_0x1ef5('0x33')]!==_0x1ef5('0x44')){var _0x3b6a93={};_0x3b6a93[_0x5db0aa[_0x1ef5('0x36')]]={'$like':'%'+_0x5892cf[_0x1ef5('0x37')]['filter']+'%'};return _0x3b6a93;}})});}_0x4ad303=_['merge']({},_0x4ad303,_0x5892cf[_0x1ef5('0x45')]);var _0x4cf3c6={'where':_0x4ad303[_0x1ef5('0x40')]};return db[_0x1ef5('0x30')]['count'](_0x4cf3c6)[_0x1ef5('0x2a')](function(_0x41c396){_0x9af038[_0x1ef5('0x23')]=_0x41c396;if(_0x5892cf[_0x1ef5('0x37')][_0x1ef5('0x46')]){_0x4ad303[_0x1ef5('0x47')]=[{'all':!![]}];}return db[_0x1ef5('0x30')]['findAll'](_0x4ad303);})['then'](function(_0x104d9e){_0x9af038[_0x1ef5('0x48')]=_0x104d9e;return _0x9af038;})['then'](respondWithFilteredResult(_0x4ce020,_0x4ad303))['catch'](handleError(_0x4ce020,null));};exports['show']=function(_0x3cfd13,_0x240f23){var _0x158928={'raw':![],'where':{'id':_0x3cfd13[_0x1ef5('0x49')]['id']}},_0x456aa8={};_0x456aa8['model']=_[_0x1ef5('0x38')](db[_0x1ef5('0x30')][_0x1ef5('0x31')]);_0x456aa8['query']=_[_0x1ef5('0x38')](_0x3cfd13[_0x1ef5('0x37')]);_0x456aa8['filters']=_['intersection'](_0x456aa8['model'],_0x456aa8[_0x1ef5('0x37')]);_0x158928['attributes']=_[_0x1ef5('0x3a')](_0x456aa8[_0x1ef5('0x35')],qs[_0x1ef5('0x3c')](_0x3cfd13[_0x1ef5('0x37')][_0x1ef5('0x3c')]));_0x158928['attributes']=_0x158928[_0x1ef5('0x3b')][_0x1ef5('0x3d')]?_0x158928[_0x1ef5('0x3b')]:_0x456aa8[_0x1ef5('0x35')];if(_0x3cfd13[_0x1ef5('0x37')][_0x1ef5('0x46')]){_0x158928['include']=[{'all':!![]}];}_0x158928=_['merge']({},_0x158928,_0x3cfd13['options']);return db[_0x1ef5('0x30')][_0x1ef5('0x4a')](_0x158928)['then'](handleEntityNotFound(_0x240f23,null))[_0x1ef5('0x2a')](respondWithResult(_0x240f23,null))[_0x1ef5('0x4b')](handleError(_0x240f23,null));};exports[_0x1ef5('0x4c')]=function(_0x3909b3,_0x578871){return db[_0x1ef5('0x30')][_0x1ef5('0x4c')](_0x3909b3[_0x1ef5('0x4d')],{})[_0x1ef5('0x2a')](function(_0x4ee11f){var _0x49076f=_0x3909b3[_0x1ef5('0x4e')][_0x1ef5('0x4f')]({'plain':!![]});if(!_0x49076f)throw new Error(_0x1ef5('0x50'));if(_0x49076f[_0x1ef5('0x51')]===_0x1ef5('0x4e')){var _0x35db2a=_0x4ee11f[_0x1ef5('0x4f')]({'plain':!![]});var _0x58e444='Reports';return db[_0x1ef5('0x52')][_0x1ef5('0x4a')]({'where':{'name':_0x58e444,'userProfileId':_0x49076f['userProfileId']},'raw':!![]})[_0x1ef5('0x2a')](function(_0x387bd2){if(_0x387bd2&&_0x387bd2['autoAssociation']===0x0){return db[_0x1ef5('0x53')][_0x1ef5('0x4c')]({'name':_0x35db2a[_0x1ef5('0x36')],'resourceId':_0x35db2a['id'],'type':'CustomReports','sectionId':_0x387bd2['id']},{})['then'](function(){return _0x4ee11f;});}else{return _0x4ee11f;}})[_0x1ef5('0x4b')](function(_0x31f431){logger[_0x1ef5('0x54')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31f431);throw _0x31f431;});}return _0x4ee11f;})[_0x1ef5('0x2a')](respondWithResult(_0x578871,0xc9))['catch'](handleError(_0x578871,null));};exports[_0x1ef5('0x28')]=function(_0x253e42,_0x33d1fe){if(_0x253e42[_0x1ef5('0x4d')]['id']){delete _0x253e42[_0x1ef5('0x4d')]['id'];}return db[_0x1ef5('0x30')][_0x1ef5('0x4a')]({'where':{'id':_0x253e42['params']['id']}})[_0x1ef5('0x2a')](handleEntityNotFound(_0x33d1fe,null))['then'](saveUpdates(_0x253e42['body'],null))[_0x1ef5('0x2a')](respondWithResult(_0x33d1fe,null))[_0x1ef5('0x4b')](handleError(_0x33d1fe,null));};exports['destroy']=function(_0x5a4e57,_0xddd318){return db['AnalyticCustomReport']['find']({'where':{'id':_0x5a4e57['params']['id']}})['then'](handleEntityNotFound(_0xddd318,null))[_0x1ef5('0x2a')](removeEntity(_0xddd318,null))['catch'](handleError(_0xddd318,null));};exports[_0x1ef5('0x55')]=function(_0x31a9bc,_0x18e1f3){var _0x5e94f8=0xa;var _0x3e188e=['join','left_join',_0x1ef5('0x56'),_0x1ef5('0x57')];var _0x411da5={'SUM':_0x1ef5('0x58'),'COUNT':_0x1ef5('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x1ef5('0x5a'),'MIN':_0x1ef5('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x1ef5('0x5c'),'GROUP_CONCAT ASC':_0x1ef5('0x5d'),'GROUP_CONCAT DESC':_0x1ef5('0x5e')};var _0x26ab32={'SEC_TO_TIME':_0x1ef5('0x5f'),'DATE':_0x1ef5('0x60'),'HOUR':_0x1ef5('0x61'),'ROUND':_0x1ef5('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5d3eaa=function(_0x3c51e3){return!_[_0x1ef5('0x63')]([_0x1ef5('0x64'),_0x1ef5('0x65'),'IS\x20EMPTY',_0x1ef5('0x66')],_0x3c51e3);};var _0x1ce598=function(_0x48db9b){if(!_0x48db9b||!_0x48db9b[_0x1ef5('0x67')][_0x1ef5('0x3d')]){return'';}for(var _0x26707f='(',_0x156e90=0x0;_0x156e90<_0x48db9b[_0x1ef5('0x67')]['length'];_0x156e90+=0x1){_0x156e90>0x0&&(_0x26707f+='\x20'+_0x48db9b[_0x1ef5('0x68')]+'\x20');_0x26707f+=_0x48db9b[_0x1ef5('0x67')][_0x156e90]['group']?_0x1ce598(_0x48db9b['rules'][_0x156e90][_0x1ef5('0x69')]):_0x48db9b['rules'][_0x156e90][_0x1ef5('0x6a')]+'\x20'+_0x48db9b[_0x1ef5('0x67')][_0x156e90][_0x1ef5('0x6b')]+(_0x5d3eaa(_0x48db9b['rules'][_0x156e90]['condition'])?'\x20'+_0x48db9b[_0x1ef5('0x67')][_0x156e90][_0x1ef5('0x6c')]:'');}return _0x26707f+')';};var _0x66eaa={'where':{'id':_0x31a9bc[_0x1ef5('0x49')]['id']}},_0x476d62,_0xa35f9b,_0x8eab1e,_0x1dc437,_0x3b24a6;_0x66eaa=_['merge']({},_0x66eaa,_0x31a9bc[_0x1ef5('0x45')]);return db[_0x1ef5('0x30')][_0x1ef5('0x4a')](_0x66eaa)[_0x1ef5('0x2a')](function(_0x4ddee2){if(_0x4ddee2){_0x476d62=_0x4ddee2;return _0x4ddee2[_0x1ef5('0x6d')]();}return null;})[_0x1ef5('0x2a')](function(_0x11c56b){if(_0x11c56b){if(!_0x11c56b[_0x1ef5('0x3d')]){throw new db[(_0x1ef5('0x6e'))][(_0x1ef5('0x6f'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xa35f9b=_0x11c56b;return db['AnalyticMetric'][_0x1ef5('0x70')]({'raw':!![]});}return null;})[_0x1ef5('0x2a')](function(_0xf3e7f1){if(_0xf3e7f1){_0x8eab1e=_[_0x1ef5('0x71')](_0xf3e7f1,'id');var _0x9be38a;var _0x5a2018=squel[_0x1ef5('0x72')]();_0x5a2018['from'](_0x476d62[_0x1ef5('0x73')]);for(var _0x1cfc2b=0x0;_0x1cfc2b<_0xa35f9b[_0x1ef5('0x3d')];_0x1cfc2b+=0x1){_0x9be38a=_0xa35f9b[_0x1cfc2b][_0x1ef5('0x74')]?_0x8eab1e[_0xa35f9b[_0x1cfc2b][_0x1ef5('0x74')]]['metric']:_0xa35f9b[_0x1cfc2b][_0x1ef5('0x6a')];_0x9be38a=_0xa35f9b[_0x1cfc2b]['function']?_[_0x1ef5('0x75')](_0x411da5[_0xa35f9b[_0x1cfc2b][_0x1ef5('0x76')]],'%s',_0x9be38a):_0x9be38a;_0x9be38a=_0xa35f9b[_0x1cfc2b][_0x1ef5('0x77')]?_[_0x1ef5('0x75')](_0x26ab32[_0xa35f9b[_0x1cfc2b][_0x1ef5('0x77')]],'%s',_0x9be38a):_0x9be38a;if(_0xa35f9b[_0x1cfc2b][_0x1ef5('0x78')]){_0x5a2018[_0x1ef5('0x69')](_0x9be38a);}_0xa35f9b[_0x1cfc2b]['orderBy']&&_0x5a2018['order'](_0x9be38a,_0xa35f9b[_0x1cfc2b][_0x1ef5('0x79')]===_0x1ef5('0x7a')?![]:!![]);_0x5a2018[_0x1ef5('0x6a')](_0x9be38a,_0xa35f9b[_0x1cfc2b][_0x1ef5('0x7b')]||_0x9be38a);}if(_0x476d62[_0x1ef5('0x7c')]){_0x476d62[_0x1ef5('0x7c')]=JSON['parse'](_0x476d62[_0x1ef5('0x7c')]);for(var _0x304538=0x0;_0x304538<_0x476d62['joins'][_0x1ef5('0x3d')];_0x304538+=0x1){if(_0x476d62['joins'][_0x304538]['type']&&_[_0x1ef5('0x63')](_0x3e188e,_0x476d62[_0x1ef5('0x7c')][_0x304538]['type'])&&_0x476d62[_0x1ef5('0x7c')][_0x304538][_0x1ef5('0x7d')]&&_0x476d62[_0x1ef5('0x7c')][_0x304538]['foreignTable']&&_0x476d62[_0x1ef5('0x7c')][_0x304538][_0x1ef5('0x7e')]){_0x5a2018[_0x476d62[_0x1ef5('0x7c')][_0x304538]['type']](_0x476d62['joins'][_0x304538][_0x1ef5('0x7f')],null,util[_0x1ef5('0x77')]('%s.%s\x20=\x20%s.%s',_0x476d62[_0x1ef5('0x73')],_0x476d62['joins'][_0x304538][_0x1ef5('0x7d')],_0x476d62[_0x1ef5('0x7c')][_0x304538]['foreignTable'],_0x476d62[_0x1ef5('0x7c')][_0x304538][_0x1ef5('0x7e')]));}}}if(_0x476d62[_0x1ef5('0x80')]){_0x476d62[_0x1ef5('0x80')]=JSON[_0x1ef5('0x81')](_0x476d62[_0x1ef5('0x80')]);_0x5a2018[_0x1ef5('0x40')](_0x1ce598(_0x476d62[_0x1ef5('0x80')]['group']));}_0x3b24a6=_0x5a2018[_0x1ef5('0x82')]();_0x5a2018['limit'](_0x5e94f8);_0x5a2018[_0x1ef5('0x20')](0x0);logger[_0x1ef5('0x83')](_0x1ef5('0x84'),_0x5a2018[_0x1ef5('0x85')]());return dbH[_0x1ef5('0x86')][_0x1ef5('0x37')](_0x5a2018[_0x1ef5('0x85')](),{'type':dbH['sequelize'][_0x1ef5('0x87')][_0x1ef5('0x88')]});}})[_0x1ef5('0x2a')](respondWithResult(_0x18e1f3,null))[_0x1ef5('0x4b')](handleError(_0x18e1f3,null));};function runReport(_0x34707f,_0x5698b4,_0x35dff8){var _0x4c136e=_0x5698b4['name'];var _0x44f453=0xa;var _0x2d65be=[_0x1ef5('0x89'),_0x1ef5('0x8a'),_0x1ef5('0x56'),'cross_join'];var _0xfb2c64={'SUM':_0x1ef5('0x58'),'COUNT':_0x1ef5('0x59'),'COUNT DISTINCT':_0x1ef5('0x8b'),'MAX':_0x1ef5('0x5a'),'MIN':_0x1ef5('0x5b'),'AVG':_0x1ef5('0x8c'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x1ef5('0x5e')};var _0x59aa4f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x1ef5('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x1ef5('0x8d')};var _0x143749=function(_0x4a4bb2){return!_[_0x1ef5('0x63')]([_0x1ef5('0x64'),_0x1ef5('0x65'),_0x1ef5('0x8e'),_0x1ef5('0x66')],_0x4a4bb2);};var _0x518160=function(_0x12003e){if(!_0x12003e||!_0x12003e['rules'][_0x1ef5('0x3d')]){return'';}for(var _0x34d8e3='(',_0x703b91=0x0;_0x703b91<_0x12003e[_0x1ef5('0x67')]['length'];_0x703b91+=0x1){_0x703b91>0x0&&(_0x34d8e3+='\x20'+_0x12003e[_0x1ef5('0x68')]+'\x20');_0x34d8e3+=_0x12003e[_0x1ef5('0x67')][_0x703b91][_0x1ef5('0x69')]?_0x518160(_0x12003e[_0x1ef5('0x67')][_0x703b91][_0x1ef5('0x69')]):_0x12003e[_0x1ef5('0x67')][_0x703b91][_0x1ef5('0x6a')]+'\x20'+_0x12003e[_0x1ef5('0x67')][_0x703b91][_0x1ef5('0x6b')]+(_0x143749(_0x12003e[_0x1ef5('0x67')][_0x703b91][_0x1ef5('0x6b')])?'\x20'+_0x12003e[_0x1ef5('0x67')][_0x703b91][_0x1ef5('0x6c')]:'');}return _0x34d8e3+')';};var _0x262637={'where':{'id':_0x34707f['id']}},_0x12871a,_0x2a61dd,_0x537c83,_0x2e3d5e,_0x1c9ab8;_0x262637=_[_0x1ef5('0x43')]({},_0x262637,_0x35dff8);return db[_0x1ef5('0x30')]['find'](_0x262637)[_0x1ef5('0x2a')](function(_0x15e8aa){if(_0x15e8aa){_0x12871a=_0x15e8aa;return _0x15e8aa[_0x1ef5('0x6d')]();}return null;})['then'](function(_0x27d397){if(_0x27d397){if(!_0x27d397[_0x1ef5('0x3d')]){throw new db['Sequelize'][(_0x1ef5('0x6f'))](_0x1ef5('0x8f'),0x193);}_0x2a61dd=_0x27d397;return db[_0x1ef5('0x90')][_0x1ef5('0x70')]({'raw':!![]});}return null;})[_0x1ef5('0x2a')](function(_0x728dc0){if(_0x728dc0){_0x537c83=_[_0x1ef5('0x71')](_0x728dc0,'id');var _0x32ab0c;var _0x1a71fe=squel[_0x1ef5('0x72')]();_0x1a71fe[_0x1ef5('0x91')](_0x12871a['table']);for(var _0x3ba0ab=0x0;_0x3ba0ab<_0x2a61dd[_0x1ef5('0x3d')];_0x3ba0ab+=0x1){_0x32ab0c=_0x2a61dd[_0x3ba0ab][_0x1ef5('0x74')]?_0x537c83[_0x2a61dd[_0x3ba0ab]['MetricId']][_0x1ef5('0x92')]:_0x2a61dd[_0x3ba0ab]['field'];_0x32ab0c=_0x2a61dd[_0x3ba0ab][_0x1ef5('0x76')]?_[_0x1ef5('0x75')](_0xfb2c64[_0x2a61dd[_0x3ba0ab][_0x1ef5('0x76')]],'%s',_0x32ab0c):_0x32ab0c;_0x32ab0c=_0x2a61dd[_0x3ba0ab][_0x1ef5('0x77')]?_['replace'](_0x59aa4f[_0x2a61dd[_0x3ba0ab][_0x1ef5('0x77')]],'%s',_0x32ab0c):_0x32ab0c;if(_0x2a61dd[_0x3ba0ab][_0x1ef5('0x78')]){_0x1a71fe[_0x1ef5('0x69')](_0x32ab0c);}_0x2a61dd[_0x3ba0ab][_0x1ef5('0x79')]&&_0x1a71fe[_0x1ef5('0x93')](_0x32ab0c,_0x2a61dd[_0x3ba0ab][_0x1ef5('0x79')]===_0x1ef5('0x7a')?![]:!![]);_0x1a71fe[_0x1ef5('0x6a')](_0x32ab0c,_0x2a61dd[_0x3ba0ab][_0x1ef5('0x7b')]||_0x32ab0c);}if(_0x12871a[_0x1ef5('0x7c')]){_0x12871a[_0x1ef5('0x7c')]=JSON['parse'](_0x12871a['joins']);for(var _0x28e5ec=0x0;_0x28e5ec<_0x12871a[_0x1ef5('0x7c')]['length'];_0x28e5ec+=0x1){if(_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x33')]&&_[_0x1ef5('0x63')](_0x2d65be,_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x33')])&&_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x7d')]&&_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x7f')]&&_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x7e')]){_0x1a71fe[_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x33')]](_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x7f')],null,util['format'](_0x1ef5('0x94'),_0x12871a[_0x1ef5('0x73')],_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x7d')],_0x12871a['joins'][_0x28e5ec][_0x1ef5('0x7f')],_0x12871a[_0x1ef5('0x7c')][_0x28e5ec][_0x1ef5('0x7e')]));}}}if(_0x12871a[_0x1ef5('0x80')]){_0x12871a[_0x1ef5('0x80')]=JSON['parse'](_0x12871a[_0x1ef5('0x80')]);_0x1a71fe['where'](_0x518160(_0x12871a[_0x1ef5('0x80')][_0x1ef5('0x69')]));}_0x1c9ab8=_0x1a71fe[_0x1ef5('0x82')]();_0x1a71fe[_0x1ef5('0x22')](_0x44f453);_0x1a71fe['offset'](0x0);return;}})[_0x1ef5('0x2a')](function(){if(_0x5698b4['output']===_0x1ef5('0x95')){return null;}var _0xe10923=_[_0x1ef5('0x43')](_0x5698b4,{'name':_0x5698b4[_0x1ef5('0x96')]||_0x5698b4[_0x1ef5('0x36')]||_0x12871a[_0x1ef5('0x36')],'basename':_0x4c136e,'savename':util[_0x1ef5('0x77')](_0x1ef5('0x97'),_0x5698b4[_0x1ef5('0x36')]||_0x12871a[_0x1ef5('0x36')],require('randomstring')['generate'](0x4),_0x5698b4[_0x1ef5('0x98')]||_0x1ef5('0x99')),'reportId':_0x12871a['id'],'reportType':_0x1ef5('0x9a')});return db[_0x1ef5('0x9b')]['create'](_0xe10923,{'raw':!![]});})['then'](function(_0x40384c){if(_0x12871a[_0x1ef5('0x73')]==='cdr'){_0x1c9ab8['where'](_0x12871a['table']+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x5698b4[_0x1ef5('0x9c')],_0x5698b4['endDate']);}else{_0x1c9ab8[_0x1ef5('0x40')](_0x12871a['table']+_0x1ef5('0x9d'),_0x5698b4[_0x1ef5('0x9c')],_0x5698b4[_0x1ef5('0x9e')]);}if(_0x40384c){logger[_0x1ef5('0x9f')](_0x1ef5('0xa0'),_0x1c9ab8[_0x1ef5('0x85')]());require(_0x1ef5('0xa1'))[_0x1ef5('0xa2')](path[_0x1ef5('0x89')](__dirname,_0x1ef5('0xa3'),_0x40384c[_0x1ef5('0x98')]),[_0x40384c['id'],_0x1c9ab8['toString'](),path['join'](__dirname,_0x1ef5('0xa4'),_0x40384c[_0x1ef5('0xa5')]),_0x4c136e]);return _0x40384c;}else{var _0x588a47=squel[_0x1ef5('0x72')]();_0x588a47[_0x1ef5('0x91')]('('+_0x1c9ab8['toString']()+')','countTable');_0x588a47[_0x1ef5('0x6a')](_0x1ef5('0xa6'),'count');_0x1c9ab8[_0x1ef5('0x22')](_0x5698b4[_0x1ef5('0x22')]||_0x44f453);_0x1c9ab8['offset'](_0x5698b4['offset']||0x0);return dbH['sequelize'][_0x1ef5('0x37')](_0x588a47[_0x1ef5('0x85')](),{'type':dbH[_0x1ef5('0x86')][_0x1ef5('0x87')][_0x1ef5('0x88')]})['then'](function(_0x1595f8){if(!_0x1595f8[_0x1ef5('0x3d')]){_0x2e3d5e=0x0;}else{_0x2e3d5e=_0x1595f8[0x0][_0x1ef5('0x23')]||0x0;}return dbH['sequelize'][_0x1ef5('0x37')](_0x1c9ab8[_0x1ef5('0x85')](),{'type':dbH[_0x1ef5('0x86')]['QueryTypes']['SELECT']});})[_0x1ef5('0x2a')](function(_0x21d022){return{'rows':_0x21d022||[],'count':_0x2e3d5e};});}});}exports[_0x1ef5('0xa7')]=function(_0x5227cb,_0x4b8d3d){return runReport(_0x5227cb[_0x1ef5('0x49')],_0x5227cb[_0x1ef5('0x37')],_0x5227cb[_0x1ef5('0x45')])[_0x1ef5('0x2a')](respondWithResult(_0x4b8d3d,null))[_0x1ef5('0x4b')](handleError(_0x4b8d3d,null));};exports[_0x1ef5('0xa8')]=runReport;exports[_0x1ef5('0x37')]=function(_0x3121c1,_0x48c4d1){var _0xb44372=0xa;var _0x322afb=[_0x1ef5('0x89'),_0x1ef5('0x8a'),_0x1ef5('0x56'),_0x1ef5('0x57')];var _0x32256c={'SUM':_0x1ef5('0x58'),'COUNT':_0x1ef5('0x59'),'COUNT DISTINCT':_0x1ef5('0x8b'),'MAX':_0x1ef5('0x5a'),'MIN':'MIN(%s)','AVG':_0x1ef5('0x8c'),'GROUP_CONCAT':_0x1ef5('0x5c'),'GROUP_CONCAT ASC':_0x1ef5('0x5d'),'GROUP_CONCAT DESC':_0x1ef5('0x5e')};var _0x5ab54d={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x1ef5('0x60'),'HOUR':_0x1ef5('0x61'),'ROUND':_0x1ef5('0x62'),'UNIX_TIMESTAMP':_0x1ef5('0x8d')};var _0x4f4bb9=function(_0x47325d){return!_[_0x1ef5('0x63')]([_0x1ef5('0x64'),_0x1ef5('0x65'),_0x1ef5('0x8e'),_0x1ef5('0x66')],_0x47325d);};var _0x977079=function(_0x3865a5){if(!_0x3865a5||!_0x3865a5['rules'][_0x1ef5('0x3d')]){return'';}for(var _0x5224e3='(',_0x11c655=0x0;_0x11c655<_0x3865a5[_0x1ef5('0x67')]['length'];_0x11c655+=0x1){_0x11c655>0x0&&(_0x5224e3+='\x20'+_0x3865a5[_0x1ef5('0x68')]+'\x20');_0x5224e3+=_0x3865a5[_0x1ef5('0x67')][_0x11c655][_0x1ef5('0x69')]?_0x977079(_0x3865a5[_0x1ef5('0x67')][_0x11c655][_0x1ef5('0x69')]):_0x3865a5['rules'][_0x11c655][_0x1ef5('0x6a')]+'\x20'+_0x3865a5[_0x1ef5('0x67')][_0x11c655][_0x1ef5('0x6b')]+(_0x4f4bb9(_0x3865a5['rules'][_0x11c655]['condition'])?'\x20'+_0x3865a5[_0x1ef5('0x67')][_0x11c655]['value']:'');}return _0x5224e3+')';};var _0x3651fc={'where':{'id':_0x3121c1[_0x1ef5('0x49')]['id']}},_0x3350e8,_0x291473,_0x16f0f4,_0x39c9b0,_0x50ee8a;_0x3651fc=_[_0x1ef5('0x43')]({},_0x3651fc,_0x3121c1[_0x1ef5('0x45')]);return db[_0x1ef5('0x30')][_0x1ef5('0x4a')](_0x3651fc)['then'](function(_0x5d97e2){if(_0x5d97e2){_0x3350e8=_0x5d97e2;return _0x5d97e2['getFields']();}return null;})[_0x1ef5('0x2a')](function(_0x2eaba3){if(_0x2eaba3){if(!_0x2eaba3['length']){throw new db['Sequelize'][(_0x1ef5('0x6f'))](_0x1ef5('0x8f'),0x193);}_0x291473=_0x2eaba3;return db[_0x1ef5('0x90')]['findAll']({'raw':!![]});}return null;})[_0x1ef5('0x2a')](function(_0x31d963){if(_0x31d963){_0x16f0f4=_['keyBy'](_0x31d963,'id');var _0x3eca39;var _0x5bc4d2=squel[_0x1ef5('0x72')]();_0x5bc4d2['from'](_0x3350e8[_0x1ef5('0x73')]);for(var _0xed11f1=0x0;_0xed11f1<_0x291473[_0x1ef5('0x3d')];_0xed11f1+=0x1){_0x3eca39=_0x291473[_0xed11f1][_0x1ef5('0x74')]?_0x16f0f4[_0x291473[_0xed11f1][_0x1ef5('0x74')]]['metric']:_0x291473[_0xed11f1][_0x1ef5('0x6a')];_0x3eca39=_0x291473[_0xed11f1][_0x1ef5('0x76')]?_[_0x1ef5('0x75')](_0x32256c[_0x291473[_0xed11f1][_0x1ef5('0x76')]],'%s',_0x3eca39):_0x3eca39;_0x3eca39=_0x291473[_0xed11f1]['format']?_[_0x1ef5('0x75')](_0x5ab54d[_0x291473[_0xed11f1][_0x1ef5('0x77')]],'%s',_0x3eca39):_0x3eca39;if(_0x291473[_0xed11f1]['groupBy']){_0x5bc4d2[_0x1ef5('0x69')](_0x3eca39);}_0x291473[_0xed11f1]['orderBy']&&_0x5bc4d2[_0x1ef5('0x93')](_0x3eca39,_0x291473[_0xed11f1]['orderBy']===_0x1ef5('0x7a')?![]:!![]);_0x5bc4d2['field'](_0x3eca39,_0x291473[_0xed11f1][_0x1ef5('0x7b')]||_0x3eca39);}if(_0x3350e8[_0x1ef5('0x7c')]){_0x3350e8[_0x1ef5('0x7c')]=JSON[_0x1ef5('0x81')](_0x3350e8[_0x1ef5('0x7c')]);for(var _0x506ef7=0x0;_0x506ef7<_0x3350e8[_0x1ef5('0x7c')][_0x1ef5('0x3d')];_0x506ef7+=0x1){if(_0x3350e8[_0x1ef5('0x7c')][_0x506ef7][_0x1ef5('0x33')]&&_[_0x1ef5('0x63')](_0x322afb,_0x3350e8[_0x1ef5('0x7c')][_0x506ef7][_0x1ef5('0x33')])&&_0x3350e8['joins'][_0x506ef7][_0x1ef5('0x7d')]&&_0x3350e8['joins'][_0x506ef7][_0x1ef5('0x7f')]&&_0x3350e8['joins'][_0x506ef7][_0x1ef5('0x7e')]){_0x5bc4d2[_0x3350e8[_0x1ef5('0x7c')][_0x506ef7]['type']](_0x3350e8[_0x1ef5('0x7c')][_0x506ef7][_0x1ef5('0x7f')],null,util[_0x1ef5('0x77')](_0x1ef5('0x94'),_0x3350e8[_0x1ef5('0x73')],_0x3350e8[_0x1ef5('0x7c')][_0x506ef7]['parentKey'],_0x3350e8[_0x1ef5('0x7c')][_0x506ef7][_0x1ef5('0x7f')],_0x3350e8[_0x1ef5('0x7c')][_0x506ef7][_0x1ef5('0x7e')]));}}}if(_0x3350e8['conditions']){_0x3350e8[_0x1ef5('0x80')]=JSON[_0x1ef5('0x81')](_0x3350e8['conditions']);_0x5bc4d2[_0x1ef5('0x40')](_0x977079(_0x3350e8[_0x1ef5('0x80')][_0x1ef5('0x69')]));}_0x50ee8a=_0x5bc4d2[_0x1ef5('0x82')]();_0x5bc4d2[_0x1ef5('0x22')](_0xb44372);_0x5bc4d2[_0x1ef5('0x20')](0x0);logger['debug'](_0x1ef5('0x84'),_0x5bc4d2['toString']());return dbH[_0x1ef5('0x86')]['query'](_0x5bc4d2[_0x1ef5('0x85')](),{'type':dbH['sequelize'][_0x1ef5('0x87')]['SELECT']});}})[_0x1ef5('0x2a')](function(){return{'sql':_0x50ee8a[_0x1ef5('0x85')]()};})[_0x1ef5('0x2a')](respondWithResult(_0x48c4d1,null))[_0x1ef5('0x4b')](handleError(_0x48c4d1,null));};
\ No newline at end of file
+var _0xb53e=['IS\x20NOT\x20EMPTY','rules','group','condition','value','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','field','function','replace','format','orderBy','DESC','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SUM(%s)','COUNT(%s)','IS\x20NOT\x20NULL','getFields','ValidationErrorItem','from','groupBy','order','alias','clone','web','fullPath','%s-%s.%s','randomstring','output','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','SELECT','run','cross_join','HOUR(%s)','IS\x20EMPTY','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','dbH','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','get','UserProfileResource','end','sendStatus','error','name','send','index','AnalyticCustomReport','rawAttributes','fieldName','type','map','query','keys','intersection','attributes','fields','model','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','findAll','catch','show','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL'];(function(_0x28ba95,_0x4381eb){var _0x10194b=function(_0x18f0e5){while(--_0x18f0e5){_0x28ba95['push'](_0x28ba95['shift']());}};_0x10194b(++_0x4381eb);}(_0xb53e,0xde));var _0xeb53=function(_0x38c35b,_0x277e1c){_0x38c35b=_0x38c35b-0x0;var _0x1a1907=_0xb53e[_0x38c35b];return _0x1a1907;};'use strict';var emlformat=require(_0xeb53('0x0'));var rimraf=require(_0xeb53('0x1'));var zipdir=require(_0xeb53('0x2'));var jsonpatch=require(_0xeb53('0x3'));var rp=require(_0xeb53('0x4'));var moment=require(_0xeb53('0x5'));var BPromise=require(_0xeb53('0x6'));var Mustache=require(_0xeb53('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xeb53('0x8'));var ejs=require(_0xeb53('0x9'));var fs=require('fs');var fs_extra=require(_0xeb53('0xa'));var _=require('lodash');var squel=require(_0xeb53('0xb'));var crypto=require(_0xeb53('0xc'));var jsforce=require(_0xeb53('0xd'));var deskjs=require(_0xeb53('0xe'));var toCsv=require('to-csv');var querystring=require(_0xeb53('0xf'));var Papa=require('papaparse');var Redis=require(_0xeb53('0x10'));var authService=require(_0xeb53('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xeb53('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xeb53('0x13'))('api');var utils=require(_0xeb53('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xeb53('0x15')];function respondWithStatusCode(_0x54296b,_0x5945ba){_0x5945ba=_0x5945ba||0xcc;return function(_0x1ba745){if(_0x1ba745){return _0x54296b['sendStatus'](_0x5945ba);}return _0x54296b[_0xeb53('0x16')](_0x5945ba)['end']();};}function respondWithResult(_0x4a47a2,_0x1f232c){_0x1f232c=_0x1f232c||0xc8;return function(_0x17a73e){if(_0x17a73e){return _0x4a47a2[_0xeb53('0x16')](_0x1f232c)[_0xeb53('0x17')](_0x17a73e);}};}function respondWithFilteredResult(_0x5d3223,_0x36475a){return function(_0x5e1925){if(_0x5e1925){var _0x4eaf80=typeof _0x36475a[_0xeb53('0x18')]===_0xeb53('0x19')&&typeof _0x36475a['limit']===_0xeb53('0x19');var _0x4039b7=_0x5e1925[_0xeb53('0x1a')];var _0x1e57f7=_0x4eaf80?0x0:_0x36475a[_0xeb53('0x18')];var _0x2a8303=_0x4eaf80?_0x5e1925[_0xeb53('0x1a')]:_0x36475a['offset']+_0x36475a[_0xeb53('0x1b')];var _0x254c54;if(_0x2a8303>=_0x4039b7){_0x2a8303=_0x4039b7;_0x254c54=0xc8;}else{_0x254c54=0xce;}_0x5d3223[_0xeb53('0x16')](_0x254c54);return _0x5d3223['set'](_0xeb53('0x1c'),_0x1e57f7+'-'+_0x2a8303+'/'+_0x4039b7)[_0xeb53('0x17')](_0x5e1925);}return null;};}function patchUpdates(_0x1215e9){return function(_0x3bab5e){try{jsonpatch[_0xeb53('0x1d')](_0x3bab5e,_0x1215e9,!![]);}catch(_0x1dd8be){return BPromise['reject'](_0x1dd8be);}return _0x3bab5e[_0xeb53('0x1e')]();};}function saveUpdates(_0x3d106a,_0x15c287){return function(_0x8bd169){if(_0x8bd169){return _0x8bd169[_0xeb53('0x1f')](_0x3d106a)[_0xeb53('0x20')](function(_0x140ef0){return _0x140ef0;});}return null;};}function removeEntity(_0x58ef26,_0xfc10b1){return function(_0xcb6700){if(_0xcb6700){return _0xcb6700[_0xeb53('0x21')]()[_0xeb53('0x20')](function(){var _0x5b8ecd=_0xcb6700[_0xeb53('0x22')]({'plain':!![]});var _0x3cc015='CustomReports';return db[_0xeb53('0x23')][_0xeb53('0x21')]({'where':{'type':_0x3cc015,'resourceId':_0x5b8ecd['id']}})[_0xeb53('0x20')](function(){return _0xcb6700;});})[_0xeb53('0x20')](function(){_0x58ef26[_0xeb53('0x16')](0xcc)[_0xeb53('0x24')]();});}};}function handleEntityNotFound(_0x348049,_0x500e4a){return function(_0x241d3c){if(!_0x241d3c){_0x348049[_0xeb53('0x25')](0x194);}return _0x241d3c;};}function handleError(_0x4f9081,_0x5ce4f3){_0x5ce4f3=_0x5ce4f3||0x1f4;return function(_0x919a21){logger[_0xeb53('0x26')](_0x919a21['stack']);if(_0x919a21[_0xeb53('0x27')]){delete _0x919a21[_0xeb53('0x27')];}_0x4f9081['status'](_0x5ce4f3)[_0xeb53('0x28')](_0x919a21);};}exports[_0xeb53('0x29')]=function(_0x58cdc0,_0x11f25b){var _0x251593={},_0x1d8b66={},_0x4447ed={'count':0x0,'rows':[]};var _0x2fb53e=_['map'](db[_0xeb53('0x2a')][_0xeb53('0x2b')],function(_0x214281){return{'name':_0x214281[_0xeb53('0x2c')],'type':_0x214281[_0xeb53('0x2d')]['key']};});_0x1d8b66['model']=_[_0xeb53('0x2e')](_0x2fb53e,_0xeb53('0x27'));_0x1d8b66[_0xeb53('0x2f')]=_[_0xeb53('0x30')](_0x58cdc0[_0xeb53('0x2f')]);_0x1d8b66['filters']=_[_0xeb53('0x31')](_0x1d8b66['model'],_0x1d8b66['query']);_0x251593[_0xeb53('0x32')]=_[_0xeb53('0x31')](_0x1d8b66['model'],qs[_0xeb53('0x33')](_0x58cdc0[_0xeb53('0x2f')][_0xeb53('0x33')]));_0x251593[_0xeb53('0x32')]=_0x251593[_0xeb53('0x32')]['length']?_0x251593[_0xeb53('0x32')]:_0x1d8b66[_0xeb53('0x34')];if(!_0x58cdc0[_0xeb53('0x2f')]['hasOwnProperty'](_0xeb53('0x35'))){_0x251593['limit']=qs['limit'](_0x58cdc0[_0xeb53('0x2f')][_0xeb53('0x1b')]);_0x251593[_0xeb53('0x18')]=qs[_0xeb53('0x18')](_0x58cdc0[_0xeb53('0x2f')][_0xeb53('0x18')]);}_0x251593['order']=qs[_0xeb53('0x36')](_0x58cdc0[_0xeb53('0x2f')][_0xeb53('0x36')]);_0x251593[_0xeb53('0x37')]=qs[_0xeb53('0x38')](_[_0xeb53('0x39')](_0x58cdc0[_0xeb53('0x2f')],_0x1d8b66[_0xeb53('0x38')]),_0x2fb53e);if(_0x58cdc0[_0xeb53('0x2f')][_0xeb53('0x3a')]){_0x251593[_0xeb53('0x37')]=_[_0xeb53('0x3b')](_0x251593[_0xeb53('0x37')],{'$or':_['map'](_0x2fb53e,function(_0xdad72e){if(_0xdad72e['type']!=='VIRTUAL'){var _0x5457d={};_0x5457d[_0xdad72e[_0xeb53('0x27')]]={'$like':'%'+_0x58cdc0['query']['filter']+'%'};return _0x5457d;}})});}_0x251593=_['merge']({},_0x251593,_0x58cdc0[_0xeb53('0x3c')]);var _0x43359f={'where':_0x251593[_0xeb53('0x37')]};return db[_0xeb53('0x2a')][_0xeb53('0x1a')](_0x43359f)[_0xeb53('0x20')](function(_0xe2be6e){_0x4447ed[_0xeb53('0x1a')]=_0xe2be6e;if(_0x58cdc0[_0xeb53('0x2f')][_0xeb53('0x3d')]){_0x251593['include']=[{'all':!![]}];}return db[_0xeb53('0x2a')][_0xeb53('0x3e')](_0x251593);})[_0xeb53('0x20')](function(_0x21e936){_0x4447ed['rows']=_0x21e936;return _0x4447ed;})[_0xeb53('0x20')](respondWithFilteredResult(_0x11f25b,_0x251593))[_0xeb53('0x3f')](handleError(_0x11f25b,null));};exports[_0xeb53('0x40')]=function(_0x1221e1,_0x1158ab){var _0x305769={'raw':![],'where':{'id':_0x1221e1['params']['id']}},_0x552dc6={};_0x552dc6[_0xeb53('0x34')]=_[_0xeb53('0x30')](db[_0xeb53('0x2a')][_0xeb53('0x2b')]);_0x552dc6[_0xeb53('0x2f')]=_['keys'](_0x1221e1[_0xeb53('0x2f')]);_0x552dc6[_0xeb53('0x38')]=_[_0xeb53('0x31')](_0x552dc6[_0xeb53('0x34')],_0x552dc6[_0xeb53('0x2f')]);_0x305769['attributes']=_['intersection'](_0x552dc6[_0xeb53('0x34')],qs['fields'](_0x1221e1[_0xeb53('0x2f')][_0xeb53('0x33')]));_0x305769[_0xeb53('0x32')]=_0x305769[_0xeb53('0x32')][_0xeb53('0x41')]?_0x305769[_0xeb53('0x32')]:_0x552dc6[_0xeb53('0x34')];if(_0x1221e1[_0xeb53('0x2f')][_0xeb53('0x3d')]){_0x305769['include']=[{'all':!![]}];}_0x305769=_[_0xeb53('0x3b')]({},_0x305769,_0x1221e1['options']);return db[_0xeb53('0x2a')][_0xeb53('0x42')](_0x305769)[_0xeb53('0x20')](handleEntityNotFound(_0x1158ab,null))['then'](respondWithResult(_0x1158ab,null))[_0xeb53('0x3f')](handleError(_0x1158ab,null));};exports[_0xeb53('0x43')]=function(_0x1554e4,_0x43a968){return db[_0xeb53('0x2a')][_0xeb53('0x43')](_0x1554e4[_0xeb53('0x44')],{})['then'](function(_0x563825){var _0x556588=_0x1554e4[_0xeb53('0x45')][_0xeb53('0x22')]({'plain':!![]});if(!_0x556588)throw new Error(_0xeb53('0x46'));if(_0x556588[_0xeb53('0x47')]===_0xeb53('0x45')){var _0x40609e=_0x563825['get']({'plain':!![]});var _0x27a97d='Reports';return db['UserProfileSection'][_0xeb53('0x42')]({'where':{'name':_0x27a97d,'userProfileId':_0x556588[_0xeb53('0x48')]},'raw':!![]})[_0xeb53('0x20')](function(_0xc4fbfa){if(_0xc4fbfa&&_0xc4fbfa[_0xeb53('0x49')]===0x0){return db[_0xeb53('0x23')][_0xeb53('0x43')]({'name':_0x40609e[_0xeb53('0x27')],'resourceId':_0x40609e['id'],'type':_0xeb53('0x4a'),'sectionId':_0xc4fbfa['id']},{})[_0xeb53('0x20')](function(){return _0x563825;});}else{return _0x563825;}})[_0xeb53('0x3f')](function(_0x44dbe1){logger[_0xeb53('0x26')](_0xeb53('0x4b'),_0x44dbe1);throw _0x44dbe1;});}return _0x563825;})[_0xeb53('0x20')](respondWithResult(_0x43a968,0xc9))[_0xeb53('0x3f')](handleError(_0x43a968,null));};exports[_0xeb53('0x1f')]=function(_0x5c8e62,_0x3a38c4){if(_0x5c8e62[_0xeb53('0x44')]['id']){delete _0x5c8e62[_0xeb53('0x44')]['id'];}return db['AnalyticCustomReport'][_0xeb53('0x42')]({'where':{'id':_0x5c8e62['params']['id']}})['then'](handleEntityNotFound(_0x3a38c4,null))['then'](saveUpdates(_0x5c8e62[_0xeb53('0x44')],null))[_0xeb53('0x20')](respondWithResult(_0x3a38c4,null))[_0xeb53('0x3f')](handleError(_0x3a38c4,null));};exports['destroy']=function(_0x14210f,_0x29649d){return db[_0xeb53('0x2a')][_0xeb53('0x42')]({'where':{'id':_0x14210f[_0xeb53('0x4c')]['id']}})[_0xeb53('0x20')](handleEntityNotFound(_0x29649d,null))[_0xeb53('0x20')](removeEntity(_0x29649d,null))[_0xeb53('0x3f')](handleError(_0x29649d,null));};exports[_0xeb53('0x4d')]=function(_0x3cfa06,_0x7d8821){var _0x15680b=0xa;var _0x2e212e=[_0xeb53('0x4e'),_0xeb53('0x4f'),_0xeb53('0x50'),'cross_join'];var _0x1032c1={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0xeb53('0x51'),'MAX':_0xeb53('0x52'),'MIN':_0xeb53('0x53'),'AVG':_0xeb53('0x54'),'GROUP_CONCAT':_0xeb53('0x55'),'GROUP_CONCAT ASC':_0xeb53('0x56'),'GROUP_CONCAT DESC':_0xeb53('0x57')};var _0x10e542={'SEC_TO_TIME':_0xeb53('0x58'),'DATE':_0xeb53('0x59'),'HOUR':'HOUR(%s)','ROUND':_0xeb53('0x5a'),'UNIX_TIMESTAMP':_0xeb53('0x5b')};var _0x381693=function(_0x549dfc){return!_[_0xeb53('0x5c')]([_0xeb53('0x5d'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0xeb53('0x5e')],_0x549dfc);};var _0x35b2da=function(_0x29ee37){if(!_0x29ee37||!_0x29ee37[_0xeb53('0x5f')]['length']){return'';}for(var _0x470d70='(',_0x239129=0x0;_0x239129<_0x29ee37['rules']['length'];_0x239129+=0x1){_0x239129>0x0&&(_0x470d70+='\x20'+_0x29ee37['operator']+'\x20');_0x470d70+=_0x29ee37[_0xeb53('0x5f')][_0x239129][_0xeb53('0x60')]?_0x35b2da(_0x29ee37[_0xeb53('0x5f')][_0x239129][_0xeb53('0x60')]):_0x29ee37[_0xeb53('0x5f')][_0x239129]['field']+'\x20'+_0x29ee37[_0xeb53('0x5f')][_0x239129]['condition']+(_0x381693(_0x29ee37['rules'][_0x239129][_0xeb53('0x61')])?'\x20'+_0x29ee37[_0xeb53('0x5f')][_0x239129][_0xeb53('0x62')]:'');}return _0x470d70+')';};var _0x7595ff={'where':{'id':_0x3cfa06[_0xeb53('0x4c')]['id']}},_0x266a6a,_0x55c565,_0x157158,_0x20009f,_0x31223a;_0x7595ff=_[_0xeb53('0x3b')]({},_0x7595ff,_0x3cfa06[_0xeb53('0x3c')]);return db[_0xeb53('0x2a')][_0xeb53('0x42')](_0x7595ff)[_0xeb53('0x20')](function(_0x163121){if(_0x163121){_0x266a6a=_0x163121;return _0x163121['getFields']();}return null;})[_0xeb53('0x20')](function(_0x3270db){if(_0x3270db){if(!_0x3270db[_0xeb53('0x41')]){throw new db[(_0xeb53('0x63'))]['ValidationErrorItem'](_0xeb53('0x64'),0x193);}_0x55c565=_0x3270db;return db[_0xeb53('0x65')][_0xeb53('0x3e')]({'raw':!![]});}return null;})[_0xeb53('0x20')](function(_0x557631){if(_0x557631){_0x157158=_[_0xeb53('0x66')](_0x557631,'id');var _0x533be5;var _0x25b6dd=squel[_0xeb53('0x67')]();_0x25b6dd['from'](_0x266a6a[_0xeb53('0x68')]);for(var _0x11ed68=0x0;_0x11ed68<_0x55c565['length'];_0x11ed68+=0x1){_0x533be5=_0x55c565[_0x11ed68]['MetricId']?_0x157158[_0x55c565[_0x11ed68][_0xeb53('0x69')]][_0xeb53('0x6a')]:_0x55c565[_0x11ed68][_0xeb53('0x6b')];_0x533be5=_0x55c565[_0x11ed68][_0xeb53('0x6c')]?_['replace'](_0x1032c1[_0x55c565[_0x11ed68]['function']],'%s',_0x533be5):_0x533be5;_0x533be5=_0x55c565[_0x11ed68]['format']?_[_0xeb53('0x6d')](_0x10e542[_0x55c565[_0x11ed68][_0xeb53('0x6e')]],'%s',_0x533be5):_0x533be5;if(_0x55c565[_0x11ed68]['groupBy']){_0x25b6dd[_0xeb53('0x60')](_0x533be5);}_0x55c565[_0x11ed68][_0xeb53('0x6f')]&&_0x25b6dd['order'](_0x533be5,_0x55c565[_0x11ed68]['orderBy']===_0xeb53('0x70')?![]:!![]);_0x25b6dd[_0xeb53('0x6b')](_0x533be5,_0x55c565[_0x11ed68]['alias']||_0x533be5);}if(_0x266a6a[_0xeb53('0x71')]){_0x266a6a[_0xeb53('0x71')]=JSON[_0xeb53('0x72')](_0x266a6a[_0xeb53('0x71')]);for(var _0x39e335=0x0;_0x39e335<_0x266a6a[_0xeb53('0x71')]['length'];_0x39e335+=0x1){if(_0x266a6a[_0xeb53('0x71')][_0x39e335][_0xeb53('0x2d')]&&_[_0xeb53('0x5c')](_0x2e212e,_0x266a6a[_0xeb53('0x71')][_0x39e335][_0xeb53('0x2d')])&&_0x266a6a[_0xeb53('0x71')][_0x39e335][_0xeb53('0x73')]&&_0x266a6a['joins'][_0x39e335][_0xeb53('0x74')]&&_0x266a6a[_0xeb53('0x71')][_0x39e335][_0xeb53('0x75')]){_0x25b6dd[_0x266a6a['joins'][_0x39e335][_0xeb53('0x2d')]](_0x266a6a[_0xeb53('0x71')][_0x39e335][_0xeb53('0x74')],null,util[_0xeb53('0x6e')](_0xeb53('0x76'),_0x266a6a[_0xeb53('0x68')],_0x266a6a[_0xeb53('0x71')][_0x39e335]['parentKey'],_0x266a6a[_0xeb53('0x71')][_0x39e335]['foreignTable'],_0x266a6a['joins'][_0x39e335]['foreignKey']));}}}if(_0x266a6a['conditions']){_0x266a6a[_0xeb53('0x77')]=JSON[_0xeb53('0x72')](_0x266a6a[_0xeb53('0x77')]);_0x25b6dd[_0xeb53('0x37')](_0x35b2da(_0x266a6a[_0xeb53('0x77')]['group']));}_0x31223a=_0x25b6dd['clone']();_0x25b6dd['limit'](_0x15680b);_0x25b6dd[_0xeb53('0x18')](0x0);logger[_0xeb53('0x78')](_0xeb53('0x79'),_0x25b6dd[_0xeb53('0x7a')]());return dbH[_0xeb53('0x7b')][_0xeb53('0x2f')](_0x25b6dd[_0xeb53('0x7a')](),{'type':dbH[_0xeb53('0x7b')][_0xeb53('0x7c')]['SELECT']});}})[_0xeb53('0x20')](respondWithResult(_0x7d8821,null))[_0xeb53('0x3f')](handleError(_0x7d8821,null));};function runReport(_0x1be1c3,_0x15b480,_0x5706f7){var _0x3f0da3=_0x15b480[_0xeb53('0x27')];var _0x4e9355=0xa;var _0x14e9d3=[_0xeb53('0x4e'),'left_join',_0xeb53('0x50'),'cross_join'];var _0x3a4c5f={'SUM':_0xeb53('0x7d'),'COUNT':_0xeb53('0x7e'),'COUNT DISTINCT':_0xeb53('0x51'),'MAX':'MAX(%s)','MIN':_0xeb53('0x53'),'AVG':_0xeb53('0x54'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x48ebce={'SEC_TO_TIME':_0xeb53('0x58'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xeb53('0x5a'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x28cfc3=function(_0x46c4d5){return!_[_0xeb53('0x5c')]([_0xeb53('0x5d'),_0xeb53('0x7f'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x46c4d5);};var _0x2b0c4c=function(_0x157c47){if(!_0x157c47||!_0x157c47[_0xeb53('0x5f')][_0xeb53('0x41')]){return'';}for(var _0x2617fb='(',_0x54fc76=0x0;_0x54fc76<_0x157c47[_0xeb53('0x5f')][_0xeb53('0x41')];_0x54fc76+=0x1){_0x54fc76>0x0&&(_0x2617fb+='\x20'+_0x157c47['operator']+'\x20');_0x2617fb+=_0x157c47['rules'][_0x54fc76][_0xeb53('0x60')]?_0x2b0c4c(_0x157c47[_0xeb53('0x5f')][_0x54fc76]['group']):_0x157c47[_0xeb53('0x5f')][_0x54fc76][_0xeb53('0x6b')]+'\x20'+_0x157c47[_0xeb53('0x5f')][_0x54fc76][_0xeb53('0x61')]+(_0x28cfc3(_0x157c47[_0xeb53('0x5f')][_0x54fc76][_0xeb53('0x61')])?'\x20'+_0x157c47[_0xeb53('0x5f')][_0x54fc76][_0xeb53('0x62')]:'');}return _0x2617fb+')';};var _0x6fc12f={'where':{'id':_0x1be1c3['id']}},_0x3ec279,_0x504ba6,_0xdfd11a,_0x29027f,_0x5bed3e;_0x6fc12f=_[_0xeb53('0x3b')]({},_0x6fc12f,_0x5706f7);return db['AnalyticCustomReport']['find'](_0x6fc12f)[_0xeb53('0x20')](function(_0x132542){if(_0x132542){_0x3ec279=_0x132542;return _0x132542[_0xeb53('0x80')]();}return null;})['then'](function(_0x4acc91){if(_0x4acc91){if(!_0x4acc91[_0xeb53('0x41')]){throw new db['Sequelize'][(_0xeb53('0x81'))](_0xeb53('0x64'),0x193);}_0x504ba6=_0x4acc91;return db[_0xeb53('0x65')][_0xeb53('0x3e')]({'raw':!![]});}return null;})[_0xeb53('0x20')](function(_0x515809){if(_0x515809){_0xdfd11a=_[_0xeb53('0x66')](_0x515809,'id');var _0x49a78c;var _0x52dbe9=squel['select']();_0x52dbe9[_0xeb53('0x82')](_0x3ec279[_0xeb53('0x68')]);for(var _0x113ff0=0x0;_0x113ff0<_0x504ba6['length'];_0x113ff0+=0x1){_0x49a78c=_0x504ba6[_0x113ff0]['MetricId']?_0xdfd11a[_0x504ba6[_0x113ff0]['MetricId']][_0xeb53('0x6a')]:_0x504ba6[_0x113ff0][_0xeb53('0x6b')];_0x49a78c=_0x504ba6[_0x113ff0]['function']?_[_0xeb53('0x6d')](_0x3a4c5f[_0x504ba6[_0x113ff0][_0xeb53('0x6c')]],'%s',_0x49a78c):_0x49a78c;_0x49a78c=_0x504ba6[_0x113ff0][_0xeb53('0x6e')]?_[_0xeb53('0x6d')](_0x48ebce[_0x504ba6[_0x113ff0][_0xeb53('0x6e')]],'%s',_0x49a78c):_0x49a78c;if(_0x504ba6[_0x113ff0][_0xeb53('0x83')]){_0x52dbe9[_0xeb53('0x60')](_0x49a78c);}_0x504ba6[_0x113ff0][_0xeb53('0x6f')]&&_0x52dbe9[_0xeb53('0x84')](_0x49a78c,_0x504ba6[_0x113ff0][_0xeb53('0x6f')]===_0xeb53('0x70')?![]:!![]);_0x52dbe9[_0xeb53('0x6b')](_0x49a78c,_0x504ba6[_0x113ff0][_0xeb53('0x85')]||_0x49a78c);}if(_0x3ec279['joins']){_0x3ec279[_0xeb53('0x71')]=JSON[_0xeb53('0x72')](_0x3ec279[_0xeb53('0x71')]);for(var _0x1cedfd=0x0;_0x1cedfd<_0x3ec279['joins']['length'];_0x1cedfd+=0x1){if(_0x3ec279[_0xeb53('0x71')][_0x1cedfd][_0xeb53('0x2d')]&&_[_0xeb53('0x5c')](_0x14e9d3,_0x3ec279[_0xeb53('0x71')][_0x1cedfd][_0xeb53('0x2d')])&&_0x3ec279[_0xeb53('0x71')][_0x1cedfd][_0xeb53('0x73')]&&_0x3ec279[_0xeb53('0x71')][_0x1cedfd][_0xeb53('0x74')]&&_0x3ec279[_0xeb53('0x71')][_0x1cedfd]['foreignKey']){_0x52dbe9[_0x3ec279['joins'][_0x1cedfd]['type']](_0x3ec279['joins'][_0x1cedfd][_0xeb53('0x74')],null,util[_0xeb53('0x6e')](_0xeb53('0x76'),_0x3ec279[_0xeb53('0x68')],_0x3ec279[_0xeb53('0x71')][_0x1cedfd][_0xeb53('0x73')],_0x3ec279[_0xeb53('0x71')][_0x1cedfd][_0xeb53('0x74')],_0x3ec279['joins'][_0x1cedfd]['foreignKey']));}}}if(_0x3ec279['conditions']){_0x3ec279[_0xeb53('0x77')]=JSON['parse'](_0x3ec279[_0xeb53('0x77')]);_0x52dbe9[_0xeb53('0x37')](_0x2b0c4c(_0x3ec279[_0xeb53('0x77')]['group']));}_0x5bed3e=_0x52dbe9[_0xeb53('0x86')]();_0x52dbe9[_0xeb53('0x1b')](_0x4e9355);_0x52dbe9[_0xeb53('0x18')](0x0);return;}})['then'](function(){if(_0x15b480['output']===_0xeb53('0x87')){return null;}var _0x5e4257=_['merge'](_0x15b480,{'name':_0x15b480[_0xeb53('0x88')]||_0x15b480[_0xeb53('0x27')]||_0x3ec279[_0xeb53('0x27')],'basename':_0x3f0da3,'savename':util[_0xeb53('0x6e')](_0xeb53('0x89'),_0x15b480[_0xeb53('0x27')]||_0x3ec279['name'],require(_0xeb53('0x8a'))['generate'](0x4),_0x15b480[_0xeb53('0x8b')]||'csv'),'reportId':_0x3ec279['id'],'reportType':_0xeb53('0x8c')});return db[_0xeb53('0x8d')][_0xeb53('0x43')](_0x5e4257,{'raw':!![]});})[_0xeb53('0x20')](function(_0x5bb617){if(_0x3ec279[_0xeb53('0x68')]==='cdr'){_0x5bed3e['where'](_0x3ec279[_0xeb53('0x68')]+_0xeb53('0x8e'),_0x15b480['startDate'],_0x15b480[_0xeb53('0x8f')]);}else{_0x5bed3e['where'](_0x3ec279[_0xeb53('0x68')]+_0xeb53('0x90'),_0x15b480[_0xeb53('0x91')],_0x15b480[_0xeb53('0x8f')]);}if(_0x5bb617){logger['info']('Run\x20Query:',_0x5bed3e[_0xeb53('0x7a')]());require(_0xeb53('0x92'))[_0xeb53('0x93')](path[_0xeb53('0x4e')](__dirname,_0xeb53('0x94'),_0x5bb617[_0xeb53('0x8b')]),[_0x5bb617['id'],_0x5bed3e[_0xeb53('0x7a')](),path['join'](__dirname,_0xeb53('0x95'),_0x5bb617[_0xeb53('0x96')]),_0x3f0da3]);return _0x5bb617;}else{var _0x26ce09=squel[_0xeb53('0x67')]();_0x26ce09[_0xeb53('0x82')]('('+_0x5bed3e[_0xeb53('0x7a')]()+')',_0xeb53('0x97'));_0x26ce09[_0xeb53('0x6b')](_0xeb53('0x98'),_0xeb53('0x1a'));_0x5bed3e[_0xeb53('0x1b')](_0x15b480[_0xeb53('0x1b')]||_0x4e9355);_0x5bed3e[_0xeb53('0x18')](_0x15b480[_0xeb53('0x18')]||0x0);return dbH[_0xeb53('0x7b')][_0xeb53('0x2f')](_0x26ce09['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0xeb53('0x99')]})['then'](function(_0x12e50){if(!_0x12e50['length']){_0x29027f=0x0;}else{_0x29027f=_0x12e50[0x0][_0xeb53('0x1a')]||0x0;}return dbH[_0xeb53('0x7b')]['query'](_0x5bed3e[_0xeb53('0x7a')](),{'type':dbH[_0xeb53('0x7b')][_0xeb53('0x7c')][_0xeb53('0x99')]});})[_0xeb53('0x20')](function(_0x1e5db1){return{'rows':_0x1e5db1||[],'count':_0x29027f};});}});}exports[_0xeb53('0x9a')]=function(_0x361a06,_0x2a9cb3){return runReport(_0x361a06['params'],_0x361a06[_0xeb53('0x2f')],_0x361a06[_0xeb53('0x3c')])[_0xeb53('0x20')](respondWithResult(_0x2a9cb3,null))[_0xeb53('0x3f')](handleError(_0x2a9cb3,null));};exports['runReport']=runReport;exports['query']=function(_0xc66d30,_0x923fa5){var _0x137952=0xa;var _0x1931eb=[_0xeb53('0x4e'),_0xeb53('0x4f'),'right_join',_0xeb53('0x9b')];var _0x30810d={'SUM':_0xeb53('0x7d'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xeb53('0x52'),'MIN':_0xeb53('0x53'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xeb53('0x55'),'GROUP_CONCAT ASC':_0xeb53('0x56'),'GROUP_CONCAT DESC':_0xeb53('0x57')};var _0x34b3e8={'SEC_TO_TIME':_0xeb53('0x58'),'DATE':_0xeb53('0x59'),'HOUR':_0xeb53('0x9c'),'ROUND':_0xeb53('0x5a'),'UNIX_TIMESTAMP':_0xeb53('0x5b')};var _0x2d3c8c=function(_0x65ffdc){return!_[_0xeb53('0x5c')]([_0xeb53('0x5d'),_0xeb53('0x7f'),_0xeb53('0x9d'),_0xeb53('0x5e')],_0x65ffdc);};var _0x3705ff=function(_0x4372f3){if(!_0x4372f3||!_0x4372f3[_0xeb53('0x5f')][_0xeb53('0x41')]){return'';}for(var _0x407926='(',_0x5f965f=0x0;_0x5f965f<_0x4372f3[_0xeb53('0x5f')][_0xeb53('0x41')];_0x5f965f+=0x1){_0x5f965f>0x0&&(_0x407926+='\x20'+_0x4372f3['operator']+'\x20');_0x407926+=_0x4372f3[_0xeb53('0x5f')][_0x5f965f][_0xeb53('0x60')]?_0x3705ff(_0x4372f3['rules'][_0x5f965f]['group']):_0x4372f3[_0xeb53('0x5f')][_0x5f965f][_0xeb53('0x6b')]+'\x20'+_0x4372f3[_0xeb53('0x5f')][_0x5f965f]['condition']+(_0x2d3c8c(_0x4372f3[_0xeb53('0x5f')][_0x5f965f][_0xeb53('0x61')])?'\x20'+_0x4372f3[_0xeb53('0x5f')][_0x5f965f][_0xeb53('0x62')]:'');}return _0x407926+')';};var _0x5bb542={'where':{'id':_0xc66d30['params']['id']}},_0x4edc46,_0x346d68,_0x524223,_0x10afe8,_0x5c6281;_0x5bb542=_[_0xeb53('0x3b')]({},_0x5bb542,_0xc66d30[_0xeb53('0x3c')]);return db[_0xeb53('0x2a')][_0xeb53('0x42')](_0x5bb542)[_0xeb53('0x20')](function(_0x54732c){if(_0x54732c){_0x4edc46=_0x54732c;return _0x54732c['getFields']();}return null;})[_0xeb53('0x20')](function(_0x2e437d){if(_0x2e437d){if(!_0x2e437d[_0xeb53('0x41')]){throw new db[(_0xeb53('0x63'))]['ValidationErrorItem'](_0xeb53('0x64'),0x193);}_0x346d68=_0x2e437d;return db[_0xeb53('0x65')]['findAll']({'raw':!![]});}return null;})['then'](function(_0xaf0a4f){if(_0xaf0a4f){_0x524223=_[_0xeb53('0x66')](_0xaf0a4f,'id');var _0x1a6f6f;var _0x8b7eed=squel['select']();_0x8b7eed[_0xeb53('0x82')](_0x4edc46['table']);for(var _0x2b3cb8=0x0;_0x2b3cb8<_0x346d68[_0xeb53('0x41')];_0x2b3cb8+=0x1){_0x1a6f6f=_0x346d68[_0x2b3cb8][_0xeb53('0x69')]?_0x524223[_0x346d68[_0x2b3cb8][_0xeb53('0x69')]][_0xeb53('0x6a')]:_0x346d68[_0x2b3cb8]['field'];_0x1a6f6f=_0x346d68[_0x2b3cb8][_0xeb53('0x6c')]?_['replace'](_0x30810d[_0x346d68[_0x2b3cb8][_0xeb53('0x6c')]],'%s',_0x1a6f6f):_0x1a6f6f;_0x1a6f6f=_0x346d68[_0x2b3cb8]['format']?_[_0xeb53('0x6d')](_0x34b3e8[_0x346d68[_0x2b3cb8]['format']],'%s',_0x1a6f6f):_0x1a6f6f;if(_0x346d68[_0x2b3cb8]['groupBy']){_0x8b7eed[_0xeb53('0x60')](_0x1a6f6f);}_0x346d68[_0x2b3cb8][_0xeb53('0x6f')]&&_0x8b7eed[_0xeb53('0x84')](_0x1a6f6f,_0x346d68[_0x2b3cb8][_0xeb53('0x6f')]===_0xeb53('0x70')?![]:!![]);_0x8b7eed['field'](_0x1a6f6f,_0x346d68[_0x2b3cb8][_0xeb53('0x85')]||_0x1a6f6f);}if(_0x4edc46[_0xeb53('0x71')]){_0x4edc46['joins']=JSON['parse'](_0x4edc46[_0xeb53('0x71')]);for(var _0xb83f1=0x0;_0xb83f1<_0x4edc46[_0xeb53('0x71')][_0xeb53('0x41')];_0xb83f1+=0x1){if(_0x4edc46['joins'][_0xb83f1][_0xeb53('0x2d')]&&_['includes'](_0x1931eb,_0x4edc46[_0xeb53('0x71')][_0xb83f1][_0xeb53('0x2d')])&&_0x4edc46['joins'][_0xb83f1][_0xeb53('0x73')]&&_0x4edc46[_0xeb53('0x71')][_0xb83f1][_0xeb53('0x74')]&&_0x4edc46['joins'][_0xb83f1][_0xeb53('0x75')]){_0x8b7eed[_0x4edc46[_0xeb53('0x71')][_0xb83f1][_0xeb53('0x2d')]](_0x4edc46[_0xeb53('0x71')][_0xb83f1][_0xeb53('0x74')],null,util[_0xeb53('0x6e')](_0xeb53('0x76'),_0x4edc46[_0xeb53('0x68')],_0x4edc46[_0xeb53('0x71')][_0xb83f1][_0xeb53('0x73')],_0x4edc46[_0xeb53('0x71')][_0xb83f1][_0xeb53('0x74')],_0x4edc46[_0xeb53('0x71')][_0xb83f1]['foreignKey']));}}}if(_0x4edc46['conditions']){_0x4edc46[_0xeb53('0x77')]=JSON[_0xeb53('0x72')](_0x4edc46[_0xeb53('0x77')]);_0x8b7eed[_0xeb53('0x37')](_0x3705ff(_0x4edc46['conditions'][_0xeb53('0x60')]));}_0x5c6281=_0x8b7eed[_0xeb53('0x86')]();_0x8b7eed[_0xeb53('0x1b')](_0x137952);_0x8b7eed['offset'](0x0);logger['debug'](_0xeb53('0x79'),_0x8b7eed['toString']());return dbH[_0xeb53('0x7b')][_0xeb53('0x2f')](_0x8b7eed['toString'](),{'type':dbH['sequelize'][_0xeb53('0x7c')][_0xeb53('0x99')]});}})[_0xeb53('0x20')](function(){return{'sql':_0x5c6281['toString']()};})[_0xeb53('0x20')](respondWithResult(_0x923fa5,null))[_0xeb53('0x3f')](handleError(_0x923fa5,null));};
\ No newline at end of file
index d184287..590819c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x391f=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','lodash'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x391f,0x1eb));var _0xf391=function(_0x132dd9,_0x265afe){_0x132dd9=_0x132dd9-0x0;var _0x14c4d6=_0x391f[_0x132dd9];return _0x14c4d6;};'use strict';var _=require(_0xf391('0x0'));var util=require('util');var logger=require(_0xf391('0x1'))(_0xf391('0x2'));var moment=require(_0xf391('0x3'));var BPromise=require(_0xf391('0x4'));var rp=require(_0xf391('0x5'));var fs=require('fs');var path=require(_0xf391('0x6'));var rimraf=require(_0xf391('0x7'));var config=require(_0xf391('0x8'));var attributes=require(_0xf391('0x9'));module['exports']=function(_0x1425d7,_0x91acff){return _0x1425d7[_0xf391('0xa')](_0xf391('0xb'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf73=['bluebird','path','rimraf','../../config/environment','./analyticCustomReport.attributes','define','analytics_custom_reports','util','../../config/logger','api','moment'];(function(_0x4d7116,_0xdb8175){var _0x4593dc=function(_0x51d44e){while(--_0x51d44e){_0x4d7116['push'](_0x4d7116['shift']());}};_0x4593dc(++_0xdb8175);}(_0xcf73,0x193));var _0x3cf7=function(_0x1f13d5,_0x210639){_0x1f13d5=_0x1f13d5-0x0;var _0x4fda7a=_0xcf73[_0x1f13d5];return _0x4fda7a;};'use strict';var _=require('lodash');var util=require(_0x3cf7('0x0'));var logger=require(_0x3cf7('0x1'))(_0x3cf7('0x2'));var moment=require(_0x3cf7('0x3'));var BPromise=require(_0x3cf7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3cf7('0x5'));var rimraf=require(_0x3cf7('0x6'));var config=require(_0x3cf7('0x7'));var attributes=require(_0x3cf7('0x8'));module['exports']=function(_0x46ec83,_0x17a20a){return _0x46ec83[_0x3cf7('0x9')]('AnalyticCustomReport',attributes,{'tableName':_0x3cf7('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 257eb16..98d2f29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e1e=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','message','catch'];(function(_0x3e174a,_0x26fd18){var _0x18c178=function(_0x1eab0d){while(--_0x1eab0d){_0x3e174a['push'](_0x3e174a['shift']());}};_0x18c178(++_0x26fd18);}(_0x7e1e,0x18c));var _0xe7e1=function(_0x1848ff,_0x498c73){_0x1848ff=_0x1848ff-0x0;var _0x3df305=_0x7e1e[_0x1848ff];return _0x3df305;};'use strict';var _=require(_0xe7e1('0x0'));var util=require(_0xe7e1('0x1'));var moment=require(_0xe7e1('0x2'));var BPromise=require('bluebird');var rs=require(_0xe7e1('0x3'));var fs=require('fs');var Redis=require(_0xe7e1('0x4'));var db=require(_0xe7e1('0x5'))['db'];var utils=require(_0xe7e1('0x6'));var logger=require('../../config/logger')(_0xe7e1('0x7'));var config=require(_0xe7e1('0x8'));var jayson=require(_0xe7e1('0x9'));var client=jayson['client'][_0xe7e1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x366453,_0x48b09e,_0x2cecf1){return new BPromise(function(_0x280abb,_0x38d3b8){return client[_0xe7e1('0xb')](_0x366453,_0x2cecf1)[_0xe7e1('0xc')](function(_0x3ea8fb){logger[_0xe7e1('0xd')](_0xe7e1('0xe'),_0x48b09e,_0xe7e1('0xf'));logger[_0xe7e1('0x10')](_0xe7e1('0x11'),_0x48b09e,_0xe7e1('0xf'),JSON['stringify'](_0x3ea8fb));if(_0x3ea8fb[_0xe7e1('0x12')]){if(_0x3ea8fb[_0xe7e1('0x12')][_0xe7e1('0x13')]===0x1f4){logger[_0xe7e1('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x48b09e,_0x3ea8fb[_0xe7e1('0x12')][_0xe7e1('0x14')]);return _0x38d3b8(_0x3ea8fb[_0xe7e1('0x12')][_0xe7e1('0x14')]);}logger[_0xe7e1('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x48b09e,_0x3ea8fb['error'][_0xe7e1('0x14')]);return _0x280abb(_0x3ea8fb['error']['message']);}else{logger[_0xe7e1('0xd')](_0xe7e1('0xe'),_0x48b09e,'request\x20sent');_0x280abb(_0x3ea8fb['result']['message']);}})[_0xe7e1('0x15')](function(_0xe83117){logger['error'](_0xe7e1('0xe'),_0x48b09e,_0xe83117);_0x38d3b8(_0xe83117);});});}
\ No newline at end of file
+var _0xc2c7=['info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x9dd37c,_0x3e255e){var _0x2a522c=function(_0x2ce2ca){while(--_0x2ce2ca){_0x9dd37c['push'](_0x9dd37c['shift']());}};_0x2a522c(++_0x3e255e);}(_0xc2c7,0x179));var _0x7c2c=function(_0x203991,_0x5e2e25){_0x203991=_0x203991-0x0;var _0x216414=_0xc2c7[_0x203991];return _0x216414;};'use strict';var _=require(_0x7c2c('0x0'));var util=require(_0x7c2c('0x1'));var moment=require(_0x7c2c('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7c2c('0x3'));var db=require(_0x7c2c('0x4'))['db'];var utils=require(_0x7c2c('0x5'));var logger=require(_0x7c2c('0x6'))(_0x7c2c('0x7'));var config=require(_0x7c2c('0x8'));var jayson=require(_0x7c2c('0x9'));var client=jayson[_0x7c2c('0xa')][_0x7c2c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b873b,_0x459812,_0x2ad0ac){return new BPromise(function(_0x1c33b3,_0x4e222e){return client[_0x7c2c('0xc')](_0x1b873b,_0x2ad0ac)[_0x7c2c('0xd')](function(_0x3e38fe){logger[_0x7c2c('0xe')](_0x7c2c('0xf'),_0x459812,_0x7c2c('0x10'));logger['debug'](_0x7c2c('0x11'),_0x459812,_0x7c2c('0x10'),JSON[_0x7c2c('0x12')](_0x3e38fe));if(_0x3e38fe[_0x7c2c('0x13')]){if(_0x3e38fe[_0x7c2c('0x13')]['code']===0x1f4){logger['error'](_0x7c2c('0xf'),_0x459812,_0x3e38fe['error']['message']);return _0x4e222e(_0x3e38fe[_0x7c2c('0x13')][_0x7c2c('0x14')]);}logger[_0x7c2c('0x13')](_0x7c2c('0xf'),_0x459812,_0x3e38fe[_0x7c2c('0x13')][_0x7c2c('0x14')]);return _0x1c33b3(_0x3e38fe[_0x7c2c('0x13')][_0x7c2c('0x14')]);}else{logger['info'](_0x7c2c('0xf'),_0x459812,_0x7c2c('0x10'));_0x1c33b3(_0x3e38fe[_0x7c2c('0x15')][_0x7c2c('0x14')]);}})[_0x7c2c('0x16')](function(_0x414b47){logger[_0x7c2c('0x13')]('AnalyticCustomReport,\x20%s,\x20%s',_0x459812,_0x414b47);_0x4e222e(_0x414b47);});});}
\ No newline at end of file
index 9aaf412..30d2dd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a9d=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','/:id/preview','preview','/:id/run','run','/:id/query','post','put','destroy'];(function(_0x3ea872,_0x15a023){var _0x516b0d=function(_0x18be37){while(--_0x18be37){_0x3ea872['push'](_0x3ea872['shift']());}};_0x516b0d(++_0x15a023);}(_0x4a9d,0x1dc));var _0xd4a9=function(_0x1e1834,_0x178838){_0x1e1834=_0x1e1834-0x0;var _0x962747=_0x4a9d[_0x1e1834];return _0x962747;};'use strict';var multer=require(_0xd4a9('0x0'));var util=require(_0xd4a9('0x1'));var path=require(_0xd4a9('0x2'));var timeout=require(_0xd4a9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd4a9('0x4'));var auth=require(_0xd4a9('0x5'));var interaction=require(_0xd4a9('0x6'));var config=require('../../config/environment');var controller=require(_0xd4a9('0x7'));router[_0xd4a9('0x8')]('/',auth[_0xd4a9('0x9')](),controller['index']);router[_0xd4a9('0x8')]('/:id',auth[_0xd4a9('0x9')](),controller['show']);router['get'](_0xd4a9('0xa'),auth[_0xd4a9('0x9')](),controller[_0xd4a9('0xb')]);router[_0xd4a9('0x8')](_0xd4a9('0xc'),auth['isAuthenticated'](),controller[_0xd4a9('0xd')]);router[_0xd4a9('0x8')](_0xd4a9('0xe'),auth[_0xd4a9('0x9')](),controller['query']);router[_0xd4a9('0xf')]('/',auth[_0xd4a9('0x9')](),controller['create']);router[_0xd4a9('0x10')]('/:id',auth[_0xd4a9('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xd4a9('0x11')]);module[_0xd4a9('0x12')]=router;
\ No newline at end of file
+var _0x2ea7=['express','Router','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','/:id','/:id/preview','preview','/:id/run','run','query','post','create','put','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x5eebc9,_0x104871){var _0x17c047=function(_0x1b4b6f){while(--_0x1b4b6f){_0x5eebc9['push'](_0x5eebc9['shift']());}};_0x17c047(++_0x104871);}(_0x2ea7,0x16d));var _0x72ea=function(_0x3a340f,_0x18653e){_0x3a340f=_0x3a340f-0x0;var _0x14ca55=_0x2ea7[_0x3a340f];return _0x14ca55;};'use strict';var multer=require('multer');var util=require(_0x72ea('0x0'));var path=require(_0x72ea('0x1'));var timeout=require(_0x72ea('0x2'));var express=require(_0x72ea('0x3'));var router=express[_0x72ea('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x72ea('0x5'));var config=require(_0x72ea('0x6'));var controller=require(_0x72ea('0x7'));router[_0x72ea('0x8')]('/',auth[_0x72ea('0x9')](),controller['index']);router[_0x72ea('0x8')](_0x72ea('0xa'),auth[_0x72ea('0x9')](),controller['show']);router[_0x72ea('0x8')](_0x72ea('0xb'),auth[_0x72ea('0x9')](),controller[_0x72ea('0xc')]);router[_0x72ea('0x8')](_0x72ea('0xd'),auth[_0x72ea('0x9')](),controller[_0x72ea('0xe')]);router[_0x72ea('0x8')]('/:id/query',auth['isAuthenticated'](),controller[_0x72ea('0xf')]);router[_0x72ea('0x10')]('/',auth[_0x72ea('0x9')](),controller[_0x72ea('0x11')]);router[_0x72ea('0x12')](_0x72ea('0xa'),auth[_0x72ea('0x9')](),controller[_0x72ea('0x13')]);router[_0x72ea('0x14')](_0x72ea('0xa'),auth[_0x72ea('0x9')](),controller[_0x72ea('0x15')]);module[_0x72ea('0x16')]=router;
\ No newline at end of file
index 3881b68..64860a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['sequelize','exports','STRING','TEXT'];(function(_0xf0978d,_0x27b460){var _0x2f62d9=function(_0x20c45b){while(--_0x20c45b){_0xf0978d['push'](_0xf0978d['shift']());}};_0x2f62d9(++_0x27b460);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1f1a97,_0xadfc15){_0x1f1a97=_0x1f1a97-0x0;var _0x29fc6a=_0x5fc3[_0x1f1a97];return _0x29fc6a;};'use strict';var Sequelize=require(_0x35fc('0x0'));module[_0x35fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x35fc('0x2')]},'parent':{'type':Sequelize[_0x35fc('0x2')]},'table':{'type':Sequelize[_0x35fc('0x2')]},'conditions':{'type':Sequelize[_0x35fc('0x3')]},'joins':{'type':Sequelize[_0x35fc('0x3')]}};
\ No newline at end of file
+var _0x038b=['exports','STRING','TEXT'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x038b,0x114));var _0xb038=function(_0x163b94,_0x3cc020){_0x163b94=_0x163b94-0x0;var _0x2d1f28=_0x038b[_0x163b94];return _0x2d1f28;};'use strict';var Sequelize=require('sequelize');module[_0xb038('0x0')]={'name':{'type':Sequelize[_0xb038('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xb038('0x1')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0xb038('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xb038('0x2')]}};
\ No newline at end of file
index 4882e51..e1d8d50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['runReport','left_join','SEC_TO_TIME(%s)','IS\x20NULL','clone','debug','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','set','apply','reject','then','destroy','get','UserProfileResource','stack','name','send','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','body','user','role','autoAssociation','create','DefaultReports','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','order','DESC','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','COUNT(%s)','GROUP_CONCAT(%s)','HOUR(%s)','value','groupBy','alias','output','fullPath','%s-%s.%s','randomstring','generate','csv','default','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)'];(function(_0xc64850,_0x4e26f7){var _0x361ea6=function(_0x489b0f){while(--_0x489b0f){_0xc64850['push'](_0xc64850['shift']());}};_0x361ea6(++_0x4e26f7);}(_0x1cb9,0x14e));var _0x91cb=function(_0xd20278,_0x518715){_0xd20278=_0xd20278-0x0;var _0x3c8d03=_0x1cb9[_0xd20278];return _0x3c8d03;};'use strict';var emlformat=require(_0x91cb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x91cb('0x1'));var jsonpatch=require(_0x91cb('0x2'));var rp=require(_0x91cb('0x3'));var moment=require(_0x91cb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x91cb('0x5'));var util=require(_0x91cb('0x6'));var path=require('path');var sox=require(_0x91cb('0x7'));var csv=require(_0x91cb('0x8'));var ejs=require(_0x91cb('0x9'));var fs=require('fs');var fs_extra=require(_0x91cb('0xa'));var _=require(_0x91cb('0xb'));var squel=require(_0x91cb('0xc'));var crypto=require('crypto');var jsforce=require(_0x91cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x91cb('0x8'));var querystring=require('querystring');var Papa=require(_0x91cb('0xe'));var Redis=require(_0x91cb('0xf'));var authService=require(_0x91cb('0x10'));var qs=require(_0x91cb('0x11'));var as=require(_0x91cb('0x12'));var hardwareService=require(_0x91cb('0x13'));var logger=require(_0x91cb('0x14'))(_0x91cb('0x15'));var utils=require(_0x91cb('0x16'));var config=require(_0x91cb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91cb('0x18'))['db'];var dbH=require(_0x91cb('0x18'))['dbH'];function respondWithStatusCode(_0x20e6e0,_0x3ea707){_0x3ea707=_0x3ea707||0xcc;return function(_0x44f2e9){if(_0x44f2e9){return _0x20e6e0[_0x91cb('0x19')](_0x3ea707);}return _0x20e6e0['status'](_0x3ea707)['end']();};}function respondWithResult(_0x4aae25,_0x3d22b7){_0x3d22b7=_0x3d22b7||0xc8;return function(_0x585470){if(_0x585470){return _0x4aae25['status'](_0x3d22b7)[_0x91cb('0x1a')](_0x585470);}};}function respondWithFilteredResult(_0xc3629e,_0x347980){return function(_0x5ea796){if(_0x5ea796){var _0x238f11=typeof _0x347980[_0x91cb('0x1b')]==='undefined'&&typeof _0x347980[_0x91cb('0x1c')]===_0x91cb('0x1d');var _0x1cd34b=_0x5ea796[_0x91cb('0x1e')];var _0x5cc1c3=_0x238f11?0x0:_0x347980[_0x91cb('0x1b')];var _0x7dcf60=_0x238f11?_0x5ea796['count']:_0x347980[_0x91cb('0x1b')]+_0x347980['limit'];var _0x55042a;if(_0x7dcf60>=_0x1cd34b){_0x7dcf60=_0x1cd34b;_0x55042a=0xc8;}else{_0x55042a=0xce;}_0xc3629e[_0x91cb('0x1f')](_0x55042a);return _0xc3629e[_0x91cb('0x20')]('Content-Range',_0x5cc1c3+'-'+_0x7dcf60+'/'+_0x1cd34b)['json'](_0x5ea796);}return null;};}function patchUpdates(_0x5b385a){return function(_0x438162){try{jsonpatch[_0x91cb('0x21')](_0x438162,_0x5b385a,!![]);}catch(_0x20aff5){return BPromise[_0x91cb('0x22')](_0x20aff5);}return _0x438162['save']();};}function saveUpdates(_0x45c4b3,_0x43881c){return function(_0x1fa837){if(_0x1fa837){return _0x1fa837['update'](_0x45c4b3)[_0x91cb('0x23')](function(_0x1a7a54){return _0x1a7a54;});}return null;};}function removeEntity(_0x2447e7,_0x422d14){return function(_0x3ca500){if(_0x3ca500){return _0x3ca500[_0x91cb('0x24')]()[_0x91cb('0x23')](function(){var _0x423c4f=_0x3ca500[_0x91cb('0x25')]({'plain':!![]});var _0x4c8438='DefaultReports';return db[_0x91cb('0x26')]['destroy']({'where':{'type':_0x4c8438,'resourceId':_0x423c4f['id']}})[_0x91cb('0x23')](function(){return _0x3ca500;});})[_0x91cb('0x23')](function(){_0x2447e7[_0x91cb('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9b26a6,_0x4f5a7b){return function(_0x4572f6){if(!_0x4572f6){_0x9b26a6[_0x91cb('0x19')](0x194);}return _0x4572f6;};}function handleError(_0x3b3ee6,_0x2fb473){_0x2fb473=_0x2fb473||0x1f4;return function(_0x468908){logger['error'](_0x468908[_0x91cb('0x27')]);if(_0x468908['name']){delete _0x468908[_0x91cb('0x28')];}_0x3b3ee6[_0x91cb('0x1f')](_0x2fb473)[_0x91cb('0x29')](_0x468908);};}exports['index']=function(_0x775c25,_0x146e1f){var _0x25bbf9={},_0x361e4c={},_0xf296bc={'count':0x0,'rows':[]};var _0x3dab18=_[_0x91cb('0x2a')](db[_0x91cb('0x2b')][_0x91cb('0x2c')],function(_0x5e6ed3){return{'name':_0x5e6ed3[_0x91cb('0x2d')],'type':_0x5e6ed3[_0x91cb('0x2e')][_0x91cb('0x2f')]};});_0x361e4c[_0x91cb('0x30')]=_[_0x91cb('0x2a')](_0x3dab18,'name');_0x361e4c[_0x91cb('0x31')]=_[_0x91cb('0x32')](_0x775c25[_0x91cb('0x31')]);_0x361e4c[_0x91cb('0x33')]=_[_0x91cb('0x34')](_0x361e4c['model'],_0x361e4c[_0x91cb('0x31')]);_0x25bbf9['attributes']=_['intersection'](_0x361e4c['model'],qs[_0x91cb('0x35')](_0x775c25['query'][_0x91cb('0x35')]));_0x25bbf9['attributes']=_0x25bbf9['attributes'][_0x91cb('0x36')]?_0x25bbf9[_0x91cb('0x37')]:_0x361e4c[_0x91cb('0x30')];if(!_0x775c25[_0x91cb('0x31')][_0x91cb('0x38')]('nolimit')){_0x25bbf9[_0x91cb('0x1c')]=qs[_0x91cb('0x1c')](_0x775c25[_0x91cb('0x31')][_0x91cb('0x1c')]);_0x25bbf9['offset']=qs['offset'](_0x775c25[_0x91cb('0x31')][_0x91cb('0x1b')]);}_0x25bbf9['order']=qs[_0x91cb('0x39')](_0x775c25[_0x91cb('0x31')]['sort']);_0x25bbf9[_0x91cb('0x3a')]=qs[_0x91cb('0x33')](_['pick'](_0x775c25[_0x91cb('0x31')],_0x361e4c['filters']),_0x3dab18);if(_0x775c25[_0x91cb('0x31')][_0x91cb('0x3b')]){_0x25bbf9[_0x91cb('0x3a')]=_[_0x91cb('0x3c')](_0x25bbf9[_0x91cb('0x3a')],{'$or':_[_0x91cb('0x2a')](_0x3dab18,function(_0x5d0e37){if(_0x5d0e37[_0x91cb('0x2e')]!==_0x91cb('0x3d')){var _0x4e5b4b={};_0x4e5b4b[_0x5d0e37[_0x91cb('0x28')]]={'$like':'%'+_0x775c25['query'][_0x91cb('0x3b')]+'%'};return _0x4e5b4b;}})});}_0x25bbf9=_[_0x91cb('0x3c')]({},_0x25bbf9,_0x775c25[_0x91cb('0x3e')]);var _0x174794={'where':_0x25bbf9['where']};return db[_0x91cb('0x2b')][_0x91cb('0x1e')](_0x174794)[_0x91cb('0x23')](function(_0x37e777){_0xf296bc[_0x91cb('0x1e')]=_0x37e777;if(_0x775c25[_0x91cb('0x31')][_0x91cb('0x3f')]){_0x25bbf9[_0x91cb('0x40')]=[{'all':!![]}];}return db[_0x91cb('0x2b')][_0x91cb('0x41')](_0x25bbf9);})['then'](function(_0x16993f){_0xf296bc['rows']=_0x16993f;return _0xf296bc;})[_0x91cb('0x23')](respondWithFilteredResult(_0x146e1f,_0x25bbf9))['catch'](handleError(_0x146e1f,null));};exports[_0x91cb('0x42')]=function(_0x52e82c,_0x138f48){var _0x477131={'raw':!![],'where':{'id':_0x52e82c[_0x91cb('0x43')]['id']}},_0xba99ce={};_0xba99ce['model']=_[_0x91cb('0x32')](db[_0x91cb('0x2b')]['rawAttributes']);_0xba99ce[_0x91cb('0x31')]=_[_0x91cb('0x32')](_0x52e82c[_0x91cb('0x31')]);_0xba99ce[_0x91cb('0x33')]=_[_0x91cb('0x34')](_0xba99ce[_0x91cb('0x30')],_0xba99ce[_0x91cb('0x31')]);_0x477131[_0x91cb('0x37')]=_[_0x91cb('0x34')](_0xba99ce['model'],qs[_0x91cb('0x35')](_0x52e82c[_0x91cb('0x31')][_0x91cb('0x35')]));_0x477131[_0x91cb('0x37')]=_0x477131[_0x91cb('0x37')][_0x91cb('0x36')]?_0x477131[_0x91cb('0x37')]:_0xba99ce[_0x91cb('0x30')];if(_0x52e82c['query'][_0x91cb('0x3f')]){_0x477131[_0x91cb('0x40')]=[{'all':!![]}];}_0x477131=_[_0x91cb('0x3c')]({},_0x477131,_0x52e82c[_0x91cb('0x3e')]);return db['AnalyticDefaultReport'][_0x91cb('0x44')](_0x477131)[_0x91cb('0x23')](handleEntityNotFound(_0x138f48,null))['then'](respondWithResult(_0x138f48,null))[_0x91cb('0x45')](handleError(_0x138f48,null));};exports['create']=function(_0x2c419b,_0x4c0acd){return db['AnalyticDefaultReport']['create'](_0x2c419b[_0x91cb('0x46')],{})[_0x91cb('0x23')](function(_0x3d62c4){var _0x2f8384=_0x2c419b[_0x91cb('0x47')]['get']({'plain':!![]});if(!_0x2f8384)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f8384[_0x91cb('0x48')]===_0x91cb('0x47')){var _0x140994=_0x3d62c4[_0x91cb('0x25')]({'plain':!![]});var _0x57adff='Reports';return db['UserProfileSection'][_0x91cb('0x44')]({'where':{'name':_0x57adff,'userProfileId':_0x2f8384['userProfileId']},'raw':!![]})[_0x91cb('0x23')](function(_0x4aa670){if(_0x4aa670&&_0x4aa670[_0x91cb('0x49')]===0x0){return db[_0x91cb('0x26')][_0x91cb('0x4a')]({'name':_0x140994[_0x91cb('0x28')],'resourceId':_0x140994['id'],'type':_0x91cb('0x4b'),'sectionId':_0x4aa670['id']},{})[_0x91cb('0x23')](function(){return _0x3d62c4;});}else{return _0x3d62c4;}})[_0x91cb('0x45')](function(_0x30fd4e){logger[_0x91cb('0x4c')](_0x91cb('0x4d'),_0x30fd4e);throw _0x30fd4e;});}return _0x3d62c4;})[_0x91cb('0x23')](respondWithResult(_0x4c0acd,0xc9))['catch'](handleError(_0x4c0acd,null));};exports[_0x91cb('0x4e')]=function(_0x1fa45a,_0x4d7a34){if(_0x1fa45a[_0x91cb('0x46')]['id']){delete _0x1fa45a[_0x91cb('0x46')]['id'];}return db['AnalyticDefaultReport'][_0x91cb('0x44')]({'where':{'id':_0x1fa45a[_0x91cb('0x43')]['id']}})[_0x91cb('0x23')](handleEntityNotFound(_0x4d7a34,null))[_0x91cb('0x23')](saveUpdates(_0x1fa45a[_0x91cb('0x46')],null))[_0x91cb('0x23')](respondWithResult(_0x4d7a34,null))[_0x91cb('0x45')](handleError(_0x4d7a34,null));};exports[_0x91cb('0x24')]=function(_0x3320bd,_0x93ef52){return db[_0x91cb('0x2b')]['find']({'where':{'id':_0x3320bd[_0x91cb('0x43')]['id']}})['then'](handleEntityNotFound(_0x93ef52,null))[_0x91cb('0x23')](removeEntity(_0x93ef52,null))['catch'](handleError(_0x93ef52,null));};exports[_0x91cb('0x4f')]=function(_0x1b2fec,_0x1986d7){var _0x47a6cd=0xa;var _0xe49d42=[_0x91cb('0x50'),'left_join',_0x91cb('0x51'),_0x91cb('0x52')];var _0x365afd={'SUM':_0x91cb('0x53'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x91cb('0x58'),'GROUP_CONCAT DESC':_0x91cb('0x59')};var _0x5c2c01={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x91cb('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x91cb('0x5b'),'UNIX_TIMESTAMP':_0x91cb('0x5c')};var _0x5ae0d2=function(_0x4f19c8){return!_[_0x91cb('0x5d')](['IS\x20NULL',_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4f19c8);};var _0x551836=function(_0x22fea8){if(!_0x22fea8||!_0x22fea8['rules'][_0x91cb('0x36')]){return'';}for(var _0xe08233='(',_0xd7be15=0x0;_0xd7be15<_0x22fea8[_0x91cb('0x61')]['length'];_0xd7be15+=0x1){_0xd7be15>0x0&&(_0xe08233+='\x20'+_0x22fea8[_0x91cb('0x62')]+'\x20');_0xe08233+=_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x63')]?_0x551836(_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x63')]):_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x64')]+'\x20'+_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x65')]+(_0x5ae0d2(_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x65')])?'\x20'+_0x22fea8[_0x91cb('0x61')][_0xd7be15]['value']:'');}return _0xe08233+')';};var _0x2cf4d0={'where':{'id':_0x1b2fec[_0x91cb('0x43')]['id']}},_0x2e301a,_0x474682,_0x51ab8a,_0x21c890,_0xca33a2;_0x2cf4d0=_['merge']({},_0x2cf4d0,_0x1b2fec[_0x91cb('0x3e')]);return db['AnalyticDefaultReport'][_0x91cb('0x44')](_0x2cf4d0)[_0x91cb('0x23')](function(_0x80fcc6){if(_0x80fcc6){_0x2e301a=_0x80fcc6;return _0x80fcc6[_0x91cb('0x66')]();}return null;})['then'](function(_0x1c0b66){if(_0x1c0b66){if(!_0x1c0b66[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))][(_0x91cb('0x68'))](_0x91cb('0x69'),0x193);}_0x474682=_0x1c0b66;return db[_0x91cb('0x6a')]['findAll']({'raw':!![]});}return null;})[_0x91cb('0x23')](function(_0x28bfe5){if(_0x28bfe5){_0x51ab8a=_[_0x91cb('0x6b')](_0x28bfe5,'id');var _0x1f0ba2;var _0x891569=squel[_0x91cb('0x6c')]();_0x891569[_0x91cb('0x6d')](_0x2e301a[_0x91cb('0x6e')]);for(var _0x43629b=0x0;_0x43629b<_0x474682[_0x91cb('0x36')];_0x43629b+=0x1){_0x1f0ba2=_0x474682[_0x43629b][_0x91cb('0x6f')]?_0x51ab8a[_0x474682[_0x43629b][_0x91cb('0x6f')]][_0x91cb('0x70')]:_0x474682[_0x43629b][_0x91cb('0x64')];_0x1f0ba2=_0x474682[_0x43629b][_0x91cb('0x71')]?_[_0x91cb('0x72')](_0x365afd[_0x474682[_0x43629b][_0x91cb('0x71')]],'%s',_0x1f0ba2):_0x1f0ba2;_0x1f0ba2=_0x474682[_0x43629b]['format']?_[_0x91cb('0x72')](_0x5c2c01[_0x474682[_0x43629b][_0x91cb('0x73')]],'%s',_0x1f0ba2):_0x1f0ba2;if(_0x474682[_0x43629b]['groupBy']){_0x891569[_0x91cb('0x63')](_0x1f0ba2);}_0x474682[_0x43629b][_0x91cb('0x74')]&&_0x891569[_0x91cb('0x75')](_0x1f0ba2,_0x474682[_0x43629b]['orderBy']===_0x91cb('0x76')?![]:!![]);_0x891569[_0x91cb('0x64')](_0x1f0ba2,_0x474682[_0x43629b]['alias']||_0x1f0ba2);}if(_0x2e301a['joins']){_0x2e301a[_0x91cb('0x77')]=JSON['parse'](_0x2e301a[_0x91cb('0x77')]);for(var _0x376f56=0x0;_0x376f56<_0x2e301a['joins'][_0x91cb('0x36')];_0x376f56+=0x1){if(_0x2e301a['joins'][_0x376f56][_0x91cb('0x2e')]&&_[_0x91cb('0x5d')](_0xe49d42,_0x2e301a['joins'][_0x376f56]['type'])&&_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x78')]&&_0x2e301a[_0x91cb('0x77')][_0x376f56]['foreignTable']&&_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x79')]){_0x891569[_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x2e')]](_0x2e301a['joins'][_0x376f56][_0x91cb('0x7a')],null,util['format'](_0x91cb('0x7b'),_0x2e301a[_0x91cb('0x6e')],_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x78')],_0x2e301a['joins'][_0x376f56]['foreignTable'],_0x2e301a[_0x91cb('0x77')][_0x376f56]['foreignKey']));}}}if(_0x2e301a[_0x91cb('0x7c')]){_0x2e301a[_0x91cb('0x7c')]=JSON[_0x91cb('0x7d')](_0x2e301a[_0x91cb('0x7c')]);_0x891569[_0x91cb('0x3a')](_0x551836(_0x2e301a[_0x91cb('0x7c')][_0x91cb('0x63')]));}_0xca33a2=_0x891569['clone']();_0x891569[_0x91cb('0x1c')](_0x47a6cd);_0x891569[_0x91cb('0x1b')](0x0);logger['debug'](_0x91cb('0x7e'),_0x891569['toString']());return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x891569[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]});}})[_0x91cb('0x23')](respondWithResult(_0x1986d7,null))[_0x91cb('0x45')](handleError(_0x1986d7,null));};function runReport(_0x23380a,_0x14cad8,_0x20a64f){var _0x11411d=_0x14cad8[_0x91cb('0x28')];var _0x14882d=0xa;var _0x22ba54=[_0x91cb('0x50'),'left_join',_0x91cb('0x51'),'cross_join'];var _0x1235c0={'SUM':_0x91cb('0x53'),'COUNT':_0x91cb('0x83'),'COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':_0x91cb('0x84'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x91cb('0x59')};var _0xdee7f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x91cb('0x85'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x95f2de=function(_0x4d777a){return!_[_0x91cb('0x5d')](['IS\x20NULL',_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4d777a);};var _0x443c01=function(_0x4e899c){if(!_0x4e899c||!_0x4e899c[_0x91cb('0x61')][_0x91cb('0x36')]){return'';}for(var _0x42d07b='(',_0x427afd=0x0;_0x427afd<_0x4e899c[_0x91cb('0x61')][_0x91cb('0x36')];_0x427afd+=0x1){_0x427afd>0x0&&(_0x42d07b+='\x20'+_0x4e899c[_0x91cb('0x62')]+'\x20');_0x42d07b+=_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x63')]?_0x443c01(_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x63')]):_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x64')]+'\x20'+_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x65')]+(_0x95f2de(_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x65')])?'\x20'+_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x86')]:'');}return _0x42d07b+')';};var _0x39b5bd={'where':{'id':_0x23380a['id']}},_0x315518,_0x3d944d,_0x43b96c,_0xe4d946,_0x32d426;_0x39b5bd=_['merge']({},_0x39b5bd,_0x20a64f);return db[_0x91cb('0x2b')][_0x91cb('0x44')](_0x39b5bd)[_0x91cb('0x23')](function(_0x1a654b){if(_0x1a654b){_0x315518=_0x1a654b;return _0x1a654b[_0x91cb('0x66')]();}return null;})[_0x91cb('0x23')](function(_0x404457){if(_0x404457){if(!_0x404457[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))][(_0x91cb('0x68'))](_0x91cb('0x69'),0x193);}_0x3d944d=_0x404457;return db['AnalyticMetric'][_0x91cb('0x41')]({'raw':!![]});}return null;})['then'](function(_0x5689ea){if(_0x5689ea){_0x43b96c=_[_0x91cb('0x6b')](_0x5689ea,'id');var _0x265ffb;var _0x4f66f=squel[_0x91cb('0x6c')]();_0x4f66f[_0x91cb('0x6d')](_0x315518[_0x91cb('0x6e')]);for(var _0x210b46=0x0;_0x210b46<_0x3d944d[_0x91cb('0x36')];_0x210b46+=0x1){_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x6f')]?_0x43b96c[_0x3d944d[_0x210b46][_0x91cb('0x6f')]]['metric']:_0x3d944d[_0x210b46][_0x91cb('0x64')];_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x71')]?_['replace'](_0x1235c0[_0x3d944d[_0x210b46][_0x91cb('0x71')]],'%s',_0x265ffb):_0x265ffb;_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x73')]?_['replace'](_0xdee7f[_0x3d944d[_0x210b46][_0x91cb('0x73')]],'%s',_0x265ffb):_0x265ffb;if(_0x3d944d[_0x210b46][_0x91cb('0x87')]){_0x4f66f[_0x91cb('0x63')](_0x265ffb);}_0x3d944d[_0x210b46][_0x91cb('0x74')]&&_0x4f66f[_0x91cb('0x75')](_0x265ffb,_0x3d944d[_0x210b46][_0x91cb('0x74')]===_0x91cb('0x76')?![]:!![]);_0x4f66f[_0x91cb('0x64')](_0x265ffb,_0x3d944d[_0x210b46][_0x91cb('0x88')]||_0x265ffb);}if(_0x315518[_0x91cb('0x77')]){_0x315518[_0x91cb('0x77')]=JSON[_0x91cb('0x7d')](_0x315518['joins']);for(var _0x5c0725=0x0;_0x5c0725<_0x315518[_0x91cb('0x77')][_0x91cb('0x36')];_0x5c0725+=0x1){if(_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')]&&_[_0x91cb('0x5d')](_0x22ba54,_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')])&&_0x315518['joins'][_0x5c0725][_0x91cb('0x78')]&&_0x315518['joins'][_0x5c0725][_0x91cb('0x7a')]&&_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x79')]){_0x4f66f[_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')]](_0x315518['joins'][_0x5c0725][_0x91cb('0x7a')],null,util[_0x91cb('0x73')](_0x91cb('0x7b'),_0x315518[_0x91cb('0x6e')],_0x315518[_0x91cb('0x77')][_0x5c0725]['parentKey'],_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x7a')],_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x79')]));}}}if(_0x315518['conditions']){_0x315518['conditions']=JSON['parse'](_0x315518[_0x91cb('0x7c')]);_0x4f66f[_0x91cb('0x3a')](_0x443c01(_0x315518[_0x91cb('0x7c')][_0x91cb('0x63')]));}_0x32d426=_0x4f66f['clone']();_0x4f66f[_0x91cb('0x1c')](_0x14882d);_0x4f66f[_0x91cb('0x1b')](0x0);return;}})[_0x91cb('0x23')](function(){if(_0x14cad8[_0x91cb('0x89')]==='web'){return null;}var _0x4bf7c7=_[_0x91cb('0x3c')](_0x14cad8,{'name':_0x14cad8[_0x91cb('0x8a')]||_0x14cad8[_0x91cb('0x28')]||_0x315518[_0x91cb('0x28')],'basename':_0x11411d,'savename':util[_0x91cb('0x73')](_0x91cb('0x8b'),_0x14cad8[_0x91cb('0x28')]||_0x315518[_0x91cb('0x28')],require(_0x91cb('0x8c'))[_0x91cb('0x8d')](0x4),_0x14cad8[_0x91cb('0x89')]||_0x91cb('0x8e')),'reportId':_0x315518['id'],'reportType':_0x91cb('0x8f')});return db['AnalyticExtractedReport']['create'](_0x4bf7c7,{'raw':!![]});})[_0x91cb('0x23')](function(_0x48a910){if(_0x315518[_0x91cb('0x6e')]===_0x91cb('0x90')){_0x32d426[_0x91cb('0x3a')](_0x315518[_0x91cb('0x6e')]+_0x91cb('0x91'),_0x14cad8[_0x91cb('0x92')],_0x14cad8[_0x91cb('0x93')]);}else{_0x32d426[_0x91cb('0x3a')](_0x315518['table']+_0x91cb('0x94'),_0x14cad8[_0x91cb('0x92')],_0x14cad8[_0x91cb('0x93')]);}if(_0x48a910){logger[_0x91cb('0x95')](_0x91cb('0x96'),_0x32d426['toString']());require(_0x91cb('0x97'))[_0x91cb('0x98')](path[_0x91cb('0x50')](__dirname,_0x91cb('0x99'),_0x48a910[_0x91cb('0x89')]),[_0x48a910['id'],_0x32d426['toString'](),path[_0x91cb('0x50')](__dirname,_0x91cb('0x9a'),_0x48a910[_0x91cb('0x9b')]),_0x11411d]);return _0x48a910;}else{var _0x22b6d3=squel[_0x91cb('0x6c')]();_0x22b6d3[_0x91cb('0x6d')]('('+_0x32d426[_0x91cb('0x80')]()+')',_0x91cb('0x9c'));_0x22b6d3[_0x91cb('0x64')](_0x91cb('0x9d'),_0x91cb('0x1e'));_0x32d426[_0x91cb('0x1c')](_0x14cad8[_0x91cb('0x1c')]||_0x14882d);_0x32d426[_0x91cb('0x1b')](_0x14cad8[_0x91cb('0x1b')]||0x0);return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x22b6d3[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]})[_0x91cb('0x23')](function(_0x275c80){if(!_0x275c80[_0x91cb('0x36')]){_0xe4d946=0x0;}else{_0xe4d946=_0x275c80[0x0][_0x91cb('0x1e')]||0x0;}return dbH[_0x91cb('0x7f')]['query'](_0x32d426[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]});})[_0x91cb('0x23')](function(_0x5ca377){return{'rows':_0x5ca377||[],'count':_0xe4d946};});}});}exports['run']=function(_0x552490,_0x5174ac){return runReport(_0x552490['params'],_0x552490[_0x91cb('0x31')],_0x552490[_0x91cb('0x3e')])[_0x91cb('0x23')](respondWithResult(_0x5174ac,null))[_0x91cb('0x45')](handleError(_0x5174ac,null));};exports[_0x91cb('0x9e')]=runReport;exports[_0x91cb('0x31')]=function(_0x3462c5,_0x146346){var _0xe3d97f=0xa;var _0x3b93c3=['join',_0x91cb('0x9f'),_0x91cb('0x51'),'cross_join'];var _0x154e6a={'SUM':_0x91cb('0x53'),'COUNT':_0x91cb('0x83'),'COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x91cb('0x58'),'GROUP_CONCAT DESC':_0x91cb('0x59')};var _0x2a05af={'SEC_TO_TIME':_0x91cb('0xa0'),'DATE':_0x91cb('0x5a'),'HOUR':_0x91cb('0x85'),'ROUND':_0x91cb('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x34c1f2=function(_0x4d82b4){return!_[_0x91cb('0x5d')]([_0x91cb('0xa1'),_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4d82b4);};var _0x432099=function(_0x344c95){if(!_0x344c95||!_0x344c95[_0x91cb('0x61')][_0x91cb('0x36')]){return'';}for(var _0x570cf0='(',_0xb3a6c4=0x0;_0xb3a6c4<_0x344c95[_0x91cb('0x61')][_0x91cb('0x36')];_0xb3a6c4+=0x1){_0xb3a6c4>0x0&&(_0x570cf0+='\x20'+_0x344c95[_0x91cb('0x62')]+'\x20');_0x570cf0+=_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x63')]?_0x432099(_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x63')]):_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x64')]+'\x20'+_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x65')]+(_0x34c1f2(_0x344c95[_0x91cb('0x61')][_0xb3a6c4]['condition'])?'\x20'+_0x344c95[_0x91cb('0x61')][_0xb3a6c4]['value']:'');}return _0x570cf0+')';};var _0x39ba62={'where':{'id':_0x3462c5[_0x91cb('0x43')]['id']}},_0x2ab5a3,_0x10a9f6,_0x43ad75,_0x1382ba,_0x12da14;_0x39ba62=_[_0x91cb('0x3c')]({},_0x39ba62,_0x3462c5['options']);return db[_0x91cb('0x2b')]['find'](_0x39ba62)[_0x91cb('0x23')](function(_0x2f7387){if(_0x2f7387){_0x2ab5a3=_0x2f7387;return _0x2f7387[_0x91cb('0x66')]();}return null;})['then'](function(_0x1f2ef8){if(_0x1f2ef8){if(!_0x1f2ef8[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x10a9f6=_0x1f2ef8;return db['AnalyticMetric'][_0x91cb('0x41')]({'raw':!![]});}return null;})[_0x91cb('0x23')](function(_0x3ac830){if(_0x3ac830){_0x43ad75=_['keyBy'](_0x3ac830,'id');var _0x469e62;var _0x1e9441=squel[_0x91cb('0x6c')]();_0x1e9441[_0x91cb('0x6d')](_0x2ab5a3[_0x91cb('0x6e')]);for(var _0x416390=0x0;_0x416390<_0x10a9f6[_0x91cb('0x36')];_0x416390+=0x1){_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x6f')]?_0x43ad75[_0x10a9f6[_0x416390]['MetricId']][_0x91cb('0x70')]:_0x10a9f6[_0x416390][_0x91cb('0x64')];_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x71')]?_[_0x91cb('0x72')](_0x154e6a[_0x10a9f6[_0x416390]['function']],'%s',_0x469e62):_0x469e62;_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x73')]?_['replace'](_0x2a05af[_0x10a9f6[_0x416390][_0x91cb('0x73')]],'%s',_0x469e62):_0x469e62;if(_0x10a9f6[_0x416390][_0x91cb('0x87')]){_0x1e9441[_0x91cb('0x63')](_0x469e62);}_0x10a9f6[_0x416390][_0x91cb('0x74')]&&_0x1e9441[_0x91cb('0x75')](_0x469e62,_0x10a9f6[_0x416390]['orderBy']===_0x91cb('0x76')?![]:!![]);_0x1e9441['field'](_0x469e62,_0x10a9f6[_0x416390]['alias']||_0x469e62);}if(_0x2ab5a3[_0x91cb('0x77')]){_0x2ab5a3[_0x91cb('0x77')]=JSON[_0x91cb('0x7d')](_0x2ab5a3[_0x91cb('0x77')]);for(var _0x286ed7=0x0;_0x286ed7<_0x2ab5a3[_0x91cb('0x77')][_0x91cb('0x36')];_0x286ed7+=0x1){if(_0x2ab5a3[_0x91cb('0x77')][_0x286ed7]['type']&&_[_0x91cb('0x5d')](_0x3b93c3,_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x2e')])&&_0x2ab5a3['joins'][_0x286ed7]['parentKey']&&_0x2ab5a3['joins'][_0x286ed7][_0x91cb('0x7a')]&&_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x79')]){_0x1e9441[_0x2ab5a3['joins'][_0x286ed7][_0x91cb('0x2e')]](_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x7a')],null,util[_0x91cb('0x73')]('%s.%s\x20=\x20%s.%s',_0x2ab5a3[_0x91cb('0x6e')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x78')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x7a')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7]['foreignKey']));}}}if(_0x2ab5a3[_0x91cb('0x7c')]){_0x2ab5a3[_0x91cb('0x7c')]=JSON[_0x91cb('0x7d')](_0x2ab5a3[_0x91cb('0x7c')]);_0x1e9441[_0x91cb('0x3a')](_0x432099(_0x2ab5a3['conditions'][_0x91cb('0x63')]));}_0x12da14=_0x1e9441[_0x91cb('0xa2')]();_0x1e9441[_0x91cb('0x1c')](_0xe3d97f);_0x1e9441[_0x91cb('0x1b')](0x0);logger[_0x91cb('0xa3')](_0x91cb('0x7e'),_0x1e9441['toString']());return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x1e9441[_0x91cb('0x80')](),{'type':dbH['sequelize'][_0x91cb('0x81')]['SELECT']});}})[_0x91cb('0x23')](function(){return{'sql':_0x12da14[_0x91cb('0x80')]()};})[_0x91cb('0x23')](respondWithResult(_0x146346,null))[_0x91cb('0x45')](handleError(_0x146346,null));};
\ No newline at end of file
+var _0x1cb9=['runReport','left_join','SEC_TO_TIME(%s)','IS\x20NULL','clone','debug','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','set','apply','reject','then','destroy','get','UserProfileResource','stack','name','send','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','body','user','role','autoAssociation','create','DefaultReports','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','order','DESC','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','COUNT(%s)','GROUP_CONCAT(%s)','HOUR(%s)','value','groupBy','alias','output','fullPath','%s-%s.%s','randomstring','generate','csv','default','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)'];(function(_0x230f43,_0x57edaf){var _0x1063a0=function(_0x38d08f){while(--_0x38d08f){_0x230f43['push'](_0x230f43['shift']());}};_0x1063a0(++_0x57edaf);}(_0x1cb9,0x14e));var _0x91cb=function(_0x448e5e,_0x57a63b){_0x448e5e=_0x448e5e-0x0;var _0x594eec=_0x1cb9[_0x448e5e];return _0x594eec;};'use strict';var emlformat=require(_0x91cb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x91cb('0x1'));var jsonpatch=require(_0x91cb('0x2'));var rp=require(_0x91cb('0x3'));var moment=require(_0x91cb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x91cb('0x5'));var util=require(_0x91cb('0x6'));var path=require('path');var sox=require(_0x91cb('0x7'));var csv=require(_0x91cb('0x8'));var ejs=require(_0x91cb('0x9'));var fs=require('fs');var fs_extra=require(_0x91cb('0xa'));var _=require(_0x91cb('0xb'));var squel=require(_0x91cb('0xc'));var crypto=require('crypto');var jsforce=require(_0x91cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x91cb('0x8'));var querystring=require('querystring');var Papa=require(_0x91cb('0xe'));var Redis=require(_0x91cb('0xf'));var authService=require(_0x91cb('0x10'));var qs=require(_0x91cb('0x11'));var as=require(_0x91cb('0x12'));var hardwareService=require(_0x91cb('0x13'));var logger=require(_0x91cb('0x14'))(_0x91cb('0x15'));var utils=require(_0x91cb('0x16'));var config=require(_0x91cb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91cb('0x18'))['db'];var dbH=require(_0x91cb('0x18'))['dbH'];function respondWithStatusCode(_0x20e6e0,_0x3ea707){_0x3ea707=_0x3ea707||0xcc;return function(_0x44f2e9){if(_0x44f2e9){return _0x20e6e0[_0x91cb('0x19')](_0x3ea707);}return _0x20e6e0['status'](_0x3ea707)['end']();};}function respondWithResult(_0x4aae25,_0x3d22b7){_0x3d22b7=_0x3d22b7||0xc8;return function(_0x585470){if(_0x585470){return _0x4aae25['status'](_0x3d22b7)[_0x91cb('0x1a')](_0x585470);}};}function respondWithFilteredResult(_0xc3629e,_0x347980){return function(_0x5ea796){if(_0x5ea796){var _0x238f11=typeof _0x347980[_0x91cb('0x1b')]==='undefined'&&typeof _0x347980[_0x91cb('0x1c')]===_0x91cb('0x1d');var _0x1cd34b=_0x5ea796[_0x91cb('0x1e')];var _0x5cc1c3=_0x238f11?0x0:_0x347980[_0x91cb('0x1b')];var _0x7dcf60=_0x238f11?_0x5ea796['count']:_0x347980[_0x91cb('0x1b')]+_0x347980['limit'];var _0x55042a;if(_0x7dcf60>=_0x1cd34b){_0x7dcf60=_0x1cd34b;_0x55042a=0xc8;}else{_0x55042a=0xce;}_0xc3629e[_0x91cb('0x1f')](_0x55042a);return _0xc3629e[_0x91cb('0x20')]('Content-Range',_0x5cc1c3+'-'+_0x7dcf60+'/'+_0x1cd34b)['json'](_0x5ea796);}return null;};}function patchUpdates(_0x5b385a){return function(_0x438162){try{jsonpatch[_0x91cb('0x21')](_0x438162,_0x5b385a,!![]);}catch(_0x20aff5){return BPromise[_0x91cb('0x22')](_0x20aff5);}return _0x438162['save']();};}function saveUpdates(_0x45c4b3,_0x43881c){return function(_0x1fa837){if(_0x1fa837){return _0x1fa837['update'](_0x45c4b3)[_0x91cb('0x23')](function(_0x1a7a54){return _0x1a7a54;});}return null;};}function removeEntity(_0x2447e7,_0x422d14){return function(_0x3ca500){if(_0x3ca500){return _0x3ca500[_0x91cb('0x24')]()[_0x91cb('0x23')](function(){var _0x423c4f=_0x3ca500[_0x91cb('0x25')]({'plain':!![]});var _0x4c8438='DefaultReports';return db[_0x91cb('0x26')]['destroy']({'where':{'type':_0x4c8438,'resourceId':_0x423c4f['id']}})[_0x91cb('0x23')](function(){return _0x3ca500;});})[_0x91cb('0x23')](function(){_0x2447e7[_0x91cb('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9b26a6,_0x4f5a7b){return function(_0x4572f6){if(!_0x4572f6){_0x9b26a6[_0x91cb('0x19')](0x194);}return _0x4572f6;};}function handleError(_0x3b3ee6,_0x2fb473){_0x2fb473=_0x2fb473||0x1f4;return function(_0x468908){logger['error'](_0x468908[_0x91cb('0x27')]);if(_0x468908['name']){delete _0x468908[_0x91cb('0x28')];}_0x3b3ee6[_0x91cb('0x1f')](_0x2fb473)[_0x91cb('0x29')](_0x468908);};}exports['index']=function(_0x775c25,_0x146e1f){var _0x25bbf9={},_0x361e4c={},_0xf296bc={'count':0x0,'rows':[]};var _0x3dab18=_[_0x91cb('0x2a')](db[_0x91cb('0x2b')][_0x91cb('0x2c')],function(_0x5e6ed3){return{'name':_0x5e6ed3[_0x91cb('0x2d')],'type':_0x5e6ed3[_0x91cb('0x2e')][_0x91cb('0x2f')]};});_0x361e4c[_0x91cb('0x30')]=_[_0x91cb('0x2a')](_0x3dab18,'name');_0x361e4c[_0x91cb('0x31')]=_[_0x91cb('0x32')](_0x775c25[_0x91cb('0x31')]);_0x361e4c[_0x91cb('0x33')]=_[_0x91cb('0x34')](_0x361e4c['model'],_0x361e4c[_0x91cb('0x31')]);_0x25bbf9['attributes']=_['intersection'](_0x361e4c['model'],qs[_0x91cb('0x35')](_0x775c25['query'][_0x91cb('0x35')]));_0x25bbf9['attributes']=_0x25bbf9['attributes'][_0x91cb('0x36')]?_0x25bbf9[_0x91cb('0x37')]:_0x361e4c[_0x91cb('0x30')];if(!_0x775c25[_0x91cb('0x31')][_0x91cb('0x38')]('nolimit')){_0x25bbf9[_0x91cb('0x1c')]=qs[_0x91cb('0x1c')](_0x775c25[_0x91cb('0x31')][_0x91cb('0x1c')]);_0x25bbf9['offset']=qs['offset'](_0x775c25[_0x91cb('0x31')][_0x91cb('0x1b')]);}_0x25bbf9['order']=qs[_0x91cb('0x39')](_0x775c25[_0x91cb('0x31')]['sort']);_0x25bbf9[_0x91cb('0x3a')]=qs[_0x91cb('0x33')](_['pick'](_0x775c25[_0x91cb('0x31')],_0x361e4c['filters']),_0x3dab18);if(_0x775c25[_0x91cb('0x31')][_0x91cb('0x3b')]){_0x25bbf9[_0x91cb('0x3a')]=_[_0x91cb('0x3c')](_0x25bbf9[_0x91cb('0x3a')],{'$or':_[_0x91cb('0x2a')](_0x3dab18,function(_0x5d0e37){if(_0x5d0e37[_0x91cb('0x2e')]!==_0x91cb('0x3d')){var _0x4e5b4b={};_0x4e5b4b[_0x5d0e37[_0x91cb('0x28')]]={'$like':'%'+_0x775c25['query'][_0x91cb('0x3b')]+'%'};return _0x4e5b4b;}})});}_0x25bbf9=_[_0x91cb('0x3c')]({},_0x25bbf9,_0x775c25[_0x91cb('0x3e')]);var _0x174794={'where':_0x25bbf9['where']};return db[_0x91cb('0x2b')][_0x91cb('0x1e')](_0x174794)[_0x91cb('0x23')](function(_0x37e777){_0xf296bc[_0x91cb('0x1e')]=_0x37e777;if(_0x775c25[_0x91cb('0x31')][_0x91cb('0x3f')]){_0x25bbf9[_0x91cb('0x40')]=[{'all':!![]}];}return db[_0x91cb('0x2b')][_0x91cb('0x41')](_0x25bbf9);})['then'](function(_0x16993f){_0xf296bc['rows']=_0x16993f;return _0xf296bc;})[_0x91cb('0x23')](respondWithFilteredResult(_0x146e1f,_0x25bbf9))['catch'](handleError(_0x146e1f,null));};exports[_0x91cb('0x42')]=function(_0x52e82c,_0x138f48){var _0x477131={'raw':!![],'where':{'id':_0x52e82c[_0x91cb('0x43')]['id']}},_0xba99ce={};_0xba99ce['model']=_[_0x91cb('0x32')](db[_0x91cb('0x2b')]['rawAttributes']);_0xba99ce[_0x91cb('0x31')]=_[_0x91cb('0x32')](_0x52e82c[_0x91cb('0x31')]);_0xba99ce[_0x91cb('0x33')]=_[_0x91cb('0x34')](_0xba99ce[_0x91cb('0x30')],_0xba99ce[_0x91cb('0x31')]);_0x477131[_0x91cb('0x37')]=_[_0x91cb('0x34')](_0xba99ce['model'],qs[_0x91cb('0x35')](_0x52e82c[_0x91cb('0x31')][_0x91cb('0x35')]));_0x477131[_0x91cb('0x37')]=_0x477131[_0x91cb('0x37')][_0x91cb('0x36')]?_0x477131[_0x91cb('0x37')]:_0xba99ce[_0x91cb('0x30')];if(_0x52e82c['query'][_0x91cb('0x3f')]){_0x477131[_0x91cb('0x40')]=[{'all':!![]}];}_0x477131=_[_0x91cb('0x3c')]({},_0x477131,_0x52e82c[_0x91cb('0x3e')]);return db['AnalyticDefaultReport'][_0x91cb('0x44')](_0x477131)[_0x91cb('0x23')](handleEntityNotFound(_0x138f48,null))['then'](respondWithResult(_0x138f48,null))[_0x91cb('0x45')](handleError(_0x138f48,null));};exports['create']=function(_0x2c419b,_0x4c0acd){return db['AnalyticDefaultReport']['create'](_0x2c419b[_0x91cb('0x46')],{})[_0x91cb('0x23')](function(_0x3d62c4){var _0x2f8384=_0x2c419b[_0x91cb('0x47')]['get']({'plain':!![]});if(!_0x2f8384)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f8384[_0x91cb('0x48')]===_0x91cb('0x47')){var _0x140994=_0x3d62c4[_0x91cb('0x25')]({'plain':!![]});var _0x57adff='Reports';return db['UserProfileSection'][_0x91cb('0x44')]({'where':{'name':_0x57adff,'userProfileId':_0x2f8384['userProfileId']},'raw':!![]})[_0x91cb('0x23')](function(_0x4aa670){if(_0x4aa670&&_0x4aa670[_0x91cb('0x49')]===0x0){return db[_0x91cb('0x26')][_0x91cb('0x4a')]({'name':_0x140994[_0x91cb('0x28')],'resourceId':_0x140994['id'],'type':_0x91cb('0x4b'),'sectionId':_0x4aa670['id']},{})[_0x91cb('0x23')](function(){return _0x3d62c4;});}else{return _0x3d62c4;}})[_0x91cb('0x45')](function(_0x30fd4e){logger[_0x91cb('0x4c')](_0x91cb('0x4d'),_0x30fd4e);throw _0x30fd4e;});}return _0x3d62c4;})[_0x91cb('0x23')](respondWithResult(_0x4c0acd,0xc9))['catch'](handleError(_0x4c0acd,null));};exports[_0x91cb('0x4e')]=function(_0x1fa45a,_0x4d7a34){if(_0x1fa45a[_0x91cb('0x46')]['id']){delete _0x1fa45a[_0x91cb('0x46')]['id'];}return db['AnalyticDefaultReport'][_0x91cb('0x44')]({'where':{'id':_0x1fa45a[_0x91cb('0x43')]['id']}})[_0x91cb('0x23')](handleEntityNotFound(_0x4d7a34,null))[_0x91cb('0x23')](saveUpdates(_0x1fa45a[_0x91cb('0x46')],null))[_0x91cb('0x23')](respondWithResult(_0x4d7a34,null))[_0x91cb('0x45')](handleError(_0x4d7a34,null));};exports[_0x91cb('0x24')]=function(_0x3320bd,_0x93ef52){return db[_0x91cb('0x2b')]['find']({'where':{'id':_0x3320bd[_0x91cb('0x43')]['id']}})['then'](handleEntityNotFound(_0x93ef52,null))[_0x91cb('0x23')](removeEntity(_0x93ef52,null))['catch'](handleError(_0x93ef52,null));};exports[_0x91cb('0x4f')]=function(_0x1b2fec,_0x1986d7){var _0x47a6cd=0xa;var _0xe49d42=[_0x91cb('0x50'),'left_join',_0x91cb('0x51'),_0x91cb('0x52')];var _0x365afd={'SUM':_0x91cb('0x53'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x91cb('0x58'),'GROUP_CONCAT DESC':_0x91cb('0x59')};var _0x5c2c01={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x91cb('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x91cb('0x5b'),'UNIX_TIMESTAMP':_0x91cb('0x5c')};var _0x5ae0d2=function(_0x4f19c8){return!_[_0x91cb('0x5d')](['IS\x20NULL',_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4f19c8);};var _0x551836=function(_0x22fea8){if(!_0x22fea8||!_0x22fea8['rules'][_0x91cb('0x36')]){return'';}for(var _0xe08233='(',_0xd7be15=0x0;_0xd7be15<_0x22fea8[_0x91cb('0x61')]['length'];_0xd7be15+=0x1){_0xd7be15>0x0&&(_0xe08233+='\x20'+_0x22fea8[_0x91cb('0x62')]+'\x20');_0xe08233+=_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x63')]?_0x551836(_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x63')]):_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x64')]+'\x20'+_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x65')]+(_0x5ae0d2(_0x22fea8[_0x91cb('0x61')][_0xd7be15][_0x91cb('0x65')])?'\x20'+_0x22fea8[_0x91cb('0x61')][_0xd7be15]['value']:'');}return _0xe08233+')';};var _0x2cf4d0={'where':{'id':_0x1b2fec[_0x91cb('0x43')]['id']}},_0x2e301a,_0x474682,_0x51ab8a,_0x21c890,_0xca33a2;_0x2cf4d0=_['merge']({},_0x2cf4d0,_0x1b2fec[_0x91cb('0x3e')]);return db['AnalyticDefaultReport'][_0x91cb('0x44')](_0x2cf4d0)[_0x91cb('0x23')](function(_0x80fcc6){if(_0x80fcc6){_0x2e301a=_0x80fcc6;return _0x80fcc6[_0x91cb('0x66')]();}return null;})['then'](function(_0x1c0b66){if(_0x1c0b66){if(!_0x1c0b66[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))][(_0x91cb('0x68'))](_0x91cb('0x69'),0x193);}_0x474682=_0x1c0b66;return db[_0x91cb('0x6a')]['findAll']({'raw':!![]});}return null;})[_0x91cb('0x23')](function(_0x28bfe5){if(_0x28bfe5){_0x51ab8a=_[_0x91cb('0x6b')](_0x28bfe5,'id');var _0x1f0ba2;var _0x891569=squel[_0x91cb('0x6c')]();_0x891569[_0x91cb('0x6d')](_0x2e301a[_0x91cb('0x6e')]);for(var _0x43629b=0x0;_0x43629b<_0x474682[_0x91cb('0x36')];_0x43629b+=0x1){_0x1f0ba2=_0x474682[_0x43629b][_0x91cb('0x6f')]?_0x51ab8a[_0x474682[_0x43629b][_0x91cb('0x6f')]][_0x91cb('0x70')]:_0x474682[_0x43629b][_0x91cb('0x64')];_0x1f0ba2=_0x474682[_0x43629b][_0x91cb('0x71')]?_[_0x91cb('0x72')](_0x365afd[_0x474682[_0x43629b][_0x91cb('0x71')]],'%s',_0x1f0ba2):_0x1f0ba2;_0x1f0ba2=_0x474682[_0x43629b]['format']?_[_0x91cb('0x72')](_0x5c2c01[_0x474682[_0x43629b][_0x91cb('0x73')]],'%s',_0x1f0ba2):_0x1f0ba2;if(_0x474682[_0x43629b]['groupBy']){_0x891569[_0x91cb('0x63')](_0x1f0ba2);}_0x474682[_0x43629b][_0x91cb('0x74')]&&_0x891569[_0x91cb('0x75')](_0x1f0ba2,_0x474682[_0x43629b]['orderBy']===_0x91cb('0x76')?![]:!![]);_0x891569[_0x91cb('0x64')](_0x1f0ba2,_0x474682[_0x43629b]['alias']||_0x1f0ba2);}if(_0x2e301a['joins']){_0x2e301a[_0x91cb('0x77')]=JSON['parse'](_0x2e301a[_0x91cb('0x77')]);for(var _0x376f56=0x0;_0x376f56<_0x2e301a['joins'][_0x91cb('0x36')];_0x376f56+=0x1){if(_0x2e301a['joins'][_0x376f56][_0x91cb('0x2e')]&&_[_0x91cb('0x5d')](_0xe49d42,_0x2e301a['joins'][_0x376f56]['type'])&&_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x78')]&&_0x2e301a[_0x91cb('0x77')][_0x376f56]['foreignTable']&&_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x79')]){_0x891569[_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x2e')]](_0x2e301a['joins'][_0x376f56][_0x91cb('0x7a')],null,util['format'](_0x91cb('0x7b'),_0x2e301a[_0x91cb('0x6e')],_0x2e301a[_0x91cb('0x77')][_0x376f56][_0x91cb('0x78')],_0x2e301a['joins'][_0x376f56]['foreignTable'],_0x2e301a[_0x91cb('0x77')][_0x376f56]['foreignKey']));}}}if(_0x2e301a[_0x91cb('0x7c')]){_0x2e301a[_0x91cb('0x7c')]=JSON[_0x91cb('0x7d')](_0x2e301a[_0x91cb('0x7c')]);_0x891569[_0x91cb('0x3a')](_0x551836(_0x2e301a[_0x91cb('0x7c')][_0x91cb('0x63')]));}_0xca33a2=_0x891569['clone']();_0x891569[_0x91cb('0x1c')](_0x47a6cd);_0x891569[_0x91cb('0x1b')](0x0);logger['debug'](_0x91cb('0x7e'),_0x891569['toString']());return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x891569[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]});}})[_0x91cb('0x23')](respondWithResult(_0x1986d7,null))[_0x91cb('0x45')](handleError(_0x1986d7,null));};function runReport(_0x23380a,_0x14cad8,_0x20a64f){var _0x11411d=_0x14cad8[_0x91cb('0x28')];var _0x14882d=0xa;var _0x22ba54=[_0x91cb('0x50'),'left_join',_0x91cb('0x51'),'cross_join'];var _0x1235c0={'SUM':_0x91cb('0x53'),'COUNT':_0x91cb('0x83'),'COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':_0x91cb('0x84'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x91cb('0x59')};var _0xdee7f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x91cb('0x85'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x95f2de=function(_0x4d777a){return!_[_0x91cb('0x5d')](['IS\x20NULL',_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4d777a);};var _0x443c01=function(_0x4e899c){if(!_0x4e899c||!_0x4e899c[_0x91cb('0x61')][_0x91cb('0x36')]){return'';}for(var _0x42d07b='(',_0x427afd=0x0;_0x427afd<_0x4e899c[_0x91cb('0x61')][_0x91cb('0x36')];_0x427afd+=0x1){_0x427afd>0x0&&(_0x42d07b+='\x20'+_0x4e899c[_0x91cb('0x62')]+'\x20');_0x42d07b+=_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x63')]?_0x443c01(_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x63')]):_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x64')]+'\x20'+_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x65')]+(_0x95f2de(_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x65')])?'\x20'+_0x4e899c[_0x91cb('0x61')][_0x427afd][_0x91cb('0x86')]:'');}return _0x42d07b+')';};var _0x39b5bd={'where':{'id':_0x23380a['id']}},_0x315518,_0x3d944d,_0x43b96c,_0xe4d946,_0x32d426;_0x39b5bd=_['merge']({},_0x39b5bd,_0x20a64f);return db[_0x91cb('0x2b')][_0x91cb('0x44')](_0x39b5bd)[_0x91cb('0x23')](function(_0x1a654b){if(_0x1a654b){_0x315518=_0x1a654b;return _0x1a654b[_0x91cb('0x66')]();}return null;})[_0x91cb('0x23')](function(_0x404457){if(_0x404457){if(!_0x404457[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))][(_0x91cb('0x68'))](_0x91cb('0x69'),0x193);}_0x3d944d=_0x404457;return db['AnalyticMetric'][_0x91cb('0x41')]({'raw':!![]});}return null;})['then'](function(_0x5689ea){if(_0x5689ea){_0x43b96c=_[_0x91cb('0x6b')](_0x5689ea,'id');var _0x265ffb;var _0x4f66f=squel[_0x91cb('0x6c')]();_0x4f66f[_0x91cb('0x6d')](_0x315518[_0x91cb('0x6e')]);for(var _0x210b46=0x0;_0x210b46<_0x3d944d[_0x91cb('0x36')];_0x210b46+=0x1){_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x6f')]?_0x43b96c[_0x3d944d[_0x210b46][_0x91cb('0x6f')]]['metric']:_0x3d944d[_0x210b46][_0x91cb('0x64')];_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x71')]?_['replace'](_0x1235c0[_0x3d944d[_0x210b46][_0x91cb('0x71')]],'%s',_0x265ffb):_0x265ffb;_0x265ffb=_0x3d944d[_0x210b46][_0x91cb('0x73')]?_['replace'](_0xdee7f[_0x3d944d[_0x210b46][_0x91cb('0x73')]],'%s',_0x265ffb):_0x265ffb;if(_0x3d944d[_0x210b46][_0x91cb('0x87')]){_0x4f66f[_0x91cb('0x63')](_0x265ffb);}_0x3d944d[_0x210b46][_0x91cb('0x74')]&&_0x4f66f[_0x91cb('0x75')](_0x265ffb,_0x3d944d[_0x210b46][_0x91cb('0x74')]===_0x91cb('0x76')?![]:!![]);_0x4f66f[_0x91cb('0x64')](_0x265ffb,_0x3d944d[_0x210b46][_0x91cb('0x88')]||_0x265ffb);}if(_0x315518[_0x91cb('0x77')]){_0x315518[_0x91cb('0x77')]=JSON[_0x91cb('0x7d')](_0x315518['joins']);for(var _0x5c0725=0x0;_0x5c0725<_0x315518[_0x91cb('0x77')][_0x91cb('0x36')];_0x5c0725+=0x1){if(_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')]&&_[_0x91cb('0x5d')](_0x22ba54,_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')])&&_0x315518['joins'][_0x5c0725][_0x91cb('0x78')]&&_0x315518['joins'][_0x5c0725][_0x91cb('0x7a')]&&_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x79')]){_0x4f66f[_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x2e')]](_0x315518['joins'][_0x5c0725][_0x91cb('0x7a')],null,util[_0x91cb('0x73')](_0x91cb('0x7b'),_0x315518[_0x91cb('0x6e')],_0x315518[_0x91cb('0x77')][_0x5c0725]['parentKey'],_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x7a')],_0x315518[_0x91cb('0x77')][_0x5c0725][_0x91cb('0x79')]));}}}if(_0x315518['conditions']){_0x315518['conditions']=JSON['parse'](_0x315518[_0x91cb('0x7c')]);_0x4f66f[_0x91cb('0x3a')](_0x443c01(_0x315518[_0x91cb('0x7c')][_0x91cb('0x63')]));}_0x32d426=_0x4f66f['clone']();_0x4f66f[_0x91cb('0x1c')](_0x14882d);_0x4f66f[_0x91cb('0x1b')](0x0);return;}})[_0x91cb('0x23')](function(){if(_0x14cad8[_0x91cb('0x89')]==='web'){return null;}var _0x4bf7c7=_[_0x91cb('0x3c')](_0x14cad8,{'name':_0x14cad8[_0x91cb('0x8a')]||_0x14cad8[_0x91cb('0x28')]||_0x315518[_0x91cb('0x28')],'basename':_0x11411d,'savename':util[_0x91cb('0x73')](_0x91cb('0x8b'),_0x14cad8[_0x91cb('0x28')]||_0x315518[_0x91cb('0x28')],require(_0x91cb('0x8c'))[_0x91cb('0x8d')](0x4),_0x14cad8[_0x91cb('0x89')]||_0x91cb('0x8e')),'reportId':_0x315518['id'],'reportType':_0x91cb('0x8f')});return db['AnalyticExtractedReport']['create'](_0x4bf7c7,{'raw':!![]});})[_0x91cb('0x23')](function(_0x48a910){if(_0x315518[_0x91cb('0x6e')]===_0x91cb('0x90')){_0x32d426[_0x91cb('0x3a')](_0x315518[_0x91cb('0x6e')]+_0x91cb('0x91'),_0x14cad8[_0x91cb('0x92')],_0x14cad8[_0x91cb('0x93')]);}else{_0x32d426[_0x91cb('0x3a')](_0x315518['table']+_0x91cb('0x94'),_0x14cad8[_0x91cb('0x92')],_0x14cad8[_0x91cb('0x93')]);}if(_0x48a910){logger[_0x91cb('0x95')](_0x91cb('0x96'),_0x32d426['toString']());require(_0x91cb('0x97'))[_0x91cb('0x98')](path[_0x91cb('0x50')](__dirname,_0x91cb('0x99'),_0x48a910[_0x91cb('0x89')]),[_0x48a910['id'],_0x32d426['toString'](),path[_0x91cb('0x50')](__dirname,_0x91cb('0x9a'),_0x48a910[_0x91cb('0x9b')]),_0x11411d]);return _0x48a910;}else{var _0x22b6d3=squel[_0x91cb('0x6c')]();_0x22b6d3[_0x91cb('0x6d')]('('+_0x32d426[_0x91cb('0x80')]()+')',_0x91cb('0x9c'));_0x22b6d3[_0x91cb('0x64')](_0x91cb('0x9d'),_0x91cb('0x1e'));_0x32d426[_0x91cb('0x1c')](_0x14cad8[_0x91cb('0x1c')]||_0x14882d);_0x32d426[_0x91cb('0x1b')](_0x14cad8[_0x91cb('0x1b')]||0x0);return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x22b6d3[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]})[_0x91cb('0x23')](function(_0x275c80){if(!_0x275c80[_0x91cb('0x36')]){_0xe4d946=0x0;}else{_0xe4d946=_0x275c80[0x0][_0x91cb('0x1e')]||0x0;}return dbH[_0x91cb('0x7f')]['query'](_0x32d426[_0x91cb('0x80')](),{'type':dbH[_0x91cb('0x7f')][_0x91cb('0x81')][_0x91cb('0x82')]});})[_0x91cb('0x23')](function(_0x5ca377){return{'rows':_0x5ca377||[],'count':_0xe4d946};});}});}exports['run']=function(_0x552490,_0x5174ac){return runReport(_0x552490['params'],_0x552490[_0x91cb('0x31')],_0x552490[_0x91cb('0x3e')])[_0x91cb('0x23')](respondWithResult(_0x5174ac,null))[_0x91cb('0x45')](handleError(_0x5174ac,null));};exports[_0x91cb('0x9e')]=runReport;exports[_0x91cb('0x31')]=function(_0x3462c5,_0x146346){var _0xe3d97f=0xa;var _0x3b93c3=['join',_0x91cb('0x9f'),_0x91cb('0x51'),'cross_join'];var _0x154e6a={'SUM':_0x91cb('0x53'),'COUNT':_0x91cb('0x83'),'COUNT DISTINCT':_0x91cb('0x54'),'MAX':_0x91cb('0x55'),'MIN':_0x91cb('0x56'),'AVG':_0x91cb('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x91cb('0x58'),'GROUP_CONCAT DESC':_0x91cb('0x59')};var _0x2a05af={'SEC_TO_TIME':_0x91cb('0xa0'),'DATE':_0x91cb('0x5a'),'HOUR':_0x91cb('0x85'),'ROUND':_0x91cb('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x34c1f2=function(_0x4d82b4){return!_[_0x91cb('0x5d')]([_0x91cb('0xa1'),_0x91cb('0x5e'),_0x91cb('0x5f'),_0x91cb('0x60')],_0x4d82b4);};var _0x432099=function(_0x344c95){if(!_0x344c95||!_0x344c95[_0x91cb('0x61')][_0x91cb('0x36')]){return'';}for(var _0x570cf0='(',_0xb3a6c4=0x0;_0xb3a6c4<_0x344c95[_0x91cb('0x61')][_0x91cb('0x36')];_0xb3a6c4+=0x1){_0xb3a6c4>0x0&&(_0x570cf0+='\x20'+_0x344c95[_0x91cb('0x62')]+'\x20');_0x570cf0+=_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x63')]?_0x432099(_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x63')]):_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x64')]+'\x20'+_0x344c95[_0x91cb('0x61')][_0xb3a6c4][_0x91cb('0x65')]+(_0x34c1f2(_0x344c95[_0x91cb('0x61')][_0xb3a6c4]['condition'])?'\x20'+_0x344c95[_0x91cb('0x61')][_0xb3a6c4]['value']:'');}return _0x570cf0+')';};var _0x39ba62={'where':{'id':_0x3462c5[_0x91cb('0x43')]['id']}},_0x2ab5a3,_0x10a9f6,_0x43ad75,_0x1382ba,_0x12da14;_0x39ba62=_[_0x91cb('0x3c')]({},_0x39ba62,_0x3462c5['options']);return db[_0x91cb('0x2b')]['find'](_0x39ba62)[_0x91cb('0x23')](function(_0x2f7387){if(_0x2f7387){_0x2ab5a3=_0x2f7387;return _0x2f7387[_0x91cb('0x66')]();}return null;})['then'](function(_0x1f2ef8){if(_0x1f2ef8){if(!_0x1f2ef8[_0x91cb('0x36')]){throw new db[(_0x91cb('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x10a9f6=_0x1f2ef8;return db['AnalyticMetric'][_0x91cb('0x41')]({'raw':!![]});}return null;})[_0x91cb('0x23')](function(_0x3ac830){if(_0x3ac830){_0x43ad75=_['keyBy'](_0x3ac830,'id');var _0x469e62;var _0x1e9441=squel[_0x91cb('0x6c')]();_0x1e9441[_0x91cb('0x6d')](_0x2ab5a3[_0x91cb('0x6e')]);for(var _0x416390=0x0;_0x416390<_0x10a9f6[_0x91cb('0x36')];_0x416390+=0x1){_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x6f')]?_0x43ad75[_0x10a9f6[_0x416390]['MetricId']][_0x91cb('0x70')]:_0x10a9f6[_0x416390][_0x91cb('0x64')];_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x71')]?_[_0x91cb('0x72')](_0x154e6a[_0x10a9f6[_0x416390]['function']],'%s',_0x469e62):_0x469e62;_0x469e62=_0x10a9f6[_0x416390][_0x91cb('0x73')]?_['replace'](_0x2a05af[_0x10a9f6[_0x416390][_0x91cb('0x73')]],'%s',_0x469e62):_0x469e62;if(_0x10a9f6[_0x416390][_0x91cb('0x87')]){_0x1e9441[_0x91cb('0x63')](_0x469e62);}_0x10a9f6[_0x416390][_0x91cb('0x74')]&&_0x1e9441[_0x91cb('0x75')](_0x469e62,_0x10a9f6[_0x416390]['orderBy']===_0x91cb('0x76')?![]:!![]);_0x1e9441['field'](_0x469e62,_0x10a9f6[_0x416390]['alias']||_0x469e62);}if(_0x2ab5a3[_0x91cb('0x77')]){_0x2ab5a3[_0x91cb('0x77')]=JSON[_0x91cb('0x7d')](_0x2ab5a3[_0x91cb('0x77')]);for(var _0x286ed7=0x0;_0x286ed7<_0x2ab5a3[_0x91cb('0x77')][_0x91cb('0x36')];_0x286ed7+=0x1){if(_0x2ab5a3[_0x91cb('0x77')][_0x286ed7]['type']&&_[_0x91cb('0x5d')](_0x3b93c3,_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x2e')])&&_0x2ab5a3['joins'][_0x286ed7]['parentKey']&&_0x2ab5a3['joins'][_0x286ed7][_0x91cb('0x7a')]&&_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x79')]){_0x1e9441[_0x2ab5a3['joins'][_0x286ed7][_0x91cb('0x2e')]](_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x7a')],null,util[_0x91cb('0x73')]('%s.%s\x20=\x20%s.%s',_0x2ab5a3[_0x91cb('0x6e')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x78')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7][_0x91cb('0x7a')],_0x2ab5a3[_0x91cb('0x77')][_0x286ed7]['foreignKey']));}}}if(_0x2ab5a3[_0x91cb('0x7c')]){_0x2ab5a3[_0x91cb('0x7c')]=JSON[_0x91cb('0x7d')](_0x2ab5a3[_0x91cb('0x7c')]);_0x1e9441[_0x91cb('0x3a')](_0x432099(_0x2ab5a3['conditions'][_0x91cb('0x63')]));}_0x12da14=_0x1e9441[_0x91cb('0xa2')]();_0x1e9441[_0x91cb('0x1c')](_0xe3d97f);_0x1e9441[_0x91cb('0x1b')](0x0);logger[_0x91cb('0xa3')](_0x91cb('0x7e'),_0x1e9441['toString']());return dbH[_0x91cb('0x7f')][_0x91cb('0x31')](_0x1e9441[_0x91cb('0x80')](),{'type':dbH['sequelize'][_0x91cb('0x81')]['SELECT']});}})[_0x91cb('0x23')](function(){return{'sql':_0x12da14[_0x91cb('0x80')]()};})[_0x91cb('0x23')](respondWithResult(_0x146346,null))[_0x91cb('0x45')](handleError(_0x146346,null));};
\ No newline at end of file
index 6ef3456..e31de23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7ad=['util','api','moment','bluebird','request-promise','path','../../config/environment','AnalyticDefaultReport','analytics_default_reports','lodash'];(function(_0x4555dd,_0x360051){var _0x1e595a=function(_0x53219a){while(--_0x53219a){_0x4555dd['push'](_0x4555dd['shift']());}};_0x1e595a(++_0x360051);}(_0xe7ad,0x171));var _0xde7a=function(_0x36d5cf,_0x68d4f1){_0x36d5cf=_0x36d5cf-0x0;var _0x47bd12=_0xe7ad[_0x36d5cf];return _0x47bd12;};'use strict';var _=require(_0xde7a('0x0'));var util=require(_0xde7a('0x1'));var logger=require('../../config/logger')(_0xde7a('0x2'));var moment=require(_0xde7a('0x3'));var BPromise=require(_0xde7a('0x4'));var rp=require(_0xde7a('0x5'));var fs=require('fs');var path=require(_0xde7a('0x6'));var rimraf=require('rimraf');var config=require(_0xde7a('0x7'));var attributes=require('./analyticDefaultReport.attributes');module['exports']=function(_0x6ddb35,_0x36e183){return _0x6ddb35['define'](_0xde7a('0x8'),attributes,{'tableName':_0xde7a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd2bb=['AnalyticDefaultReport','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define'];(function(_0xfefdb1,_0xc4308e){var _0x928ad0=function(_0x2f3a29){while(--_0x2f3a29){_0xfefdb1['push'](_0xfefdb1['shift']());}};_0x928ad0(++_0xc4308e);}(_0xd2bb,0x146));var _0xbd2b=function(_0x3fa0c4,_0xcfcd1e){_0x3fa0c4=_0x3fa0c4-0x0;var _0x3e0df2=_0xd2bb[_0x3fa0c4];return _0x3e0df2;};'use strict';var _=require(_0xbd2b('0x0'));var util=require(_0xbd2b('0x1'));var logger=require(_0xbd2b('0x2'))('api');var moment=require(_0xbd2b('0x3'));var BPromise=require(_0xbd2b('0x4'));var rp=require(_0xbd2b('0x5'));var fs=require('fs');var path=require(_0xbd2b('0x6'));var rimraf=require(_0xbd2b('0x7'));var config=require(_0xbd2b('0x8'));var attributes=require(_0xbd2b('0x9'));module[_0xbd2b('0xa')]=function(_0x3ff2f1,_0x6b2209){return _0x3ff2f1[_0xbd2b('0xb')](_0xbd2b('0xc'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 501e5d0..7bbb760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f07=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','util','bluebird','randomstring'];(function(_0x39f548,_0x1547dd){var _0xfe1ec0=function(_0x3cf9ed){while(--_0x3cf9ed){_0x39f548['push'](_0x39f548['shift']());}};_0xfe1ec0(++_0x1547dd);}(_0x3f07,0x12f));var _0x73f0=function(_0x4d7b8d,_0x57d433){_0x4d7b8d=_0x4d7b8d-0x0;var _0x440892=_0x3f07[_0x4d7b8d];return _0x440892;};'use strict';var _=require('lodash');var util=require(_0x73f0('0x0'));var moment=require('moment');var BPromise=require(_0x73f0('0x1'));var rs=require(_0x73f0('0x2'));var fs=require('fs');var Redis=require(_0x73f0('0x3'));var db=require(_0x73f0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x73f0('0x5'))('rpc');var config=require(_0x73f0('0x6'));var jayson=require(_0x73f0('0x7'));var client=jayson[_0x73f0('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d75cb,_0x253b26,_0x5b5067){return new BPromise(function(_0x9f2429,_0x493508){return client[_0x73f0('0x9')](_0x5d75cb,_0x5b5067)[_0x73f0('0xa')](function(_0x4b9020){logger[_0x73f0('0xb')](_0x73f0('0xc'),_0x253b26,_0x73f0('0xd'));logger[_0x73f0('0xe')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x253b26,_0x73f0('0xd'),JSON[_0x73f0('0xf')](_0x4b9020));if(_0x4b9020[_0x73f0('0x10')]){if(_0x4b9020[_0x73f0('0x10')]['code']===0x1f4){logger['error']('AnalyticDefaultReport,\x20%s,\x20%s',_0x253b26,_0x4b9020['error'][_0x73f0('0x11')]);return _0x493508(_0x4b9020[_0x73f0('0x10')][_0x73f0('0x11')]);}logger[_0x73f0('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x253b26,_0x4b9020[_0x73f0('0x10')][_0x73f0('0x11')]);return _0x9f2429(_0x4b9020[_0x73f0('0x10')][_0x73f0('0x11')]);}else{logger['info'](_0x73f0('0xc'),_0x253b26,'request\x20sent');_0x9f2429(_0x4b9020['result'][_0x73f0('0x11')]);}})['catch'](function(_0x17ca2a){logger[_0x73f0('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x253b26,_0x17ca2a);_0x493508(_0x17ca2a);});});}
\ No newline at end of file
+var _0xe7db=['AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xe7db,0x156));var _0xbe7d=function(_0x1ac6ec,_0x1f81fc){_0x1ac6ec=_0x1ac6ec-0x0;var _0x48a489=_0xe7db[_0x1ac6ec];return _0x48a489;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbe7d('0x0'));var BPromise=require(_0xbe7d('0x1'));var rs=require(_0xbe7d('0x2'));var fs=require('fs');var Redis=require(_0xbe7d('0x3'));var db=require(_0xbe7d('0x4'))['db'];var utils=require(_0xbe7d('0x5'));var logger=require(_0xbe7d('0x6'))(_0xbe7d('0x7'));var config=require(_0xbe7d('0x8'));var jayson=require(_0xbe7d('0x9'));var client=jayson[_0xbe7d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x130751,_0xa7f2fe,_0x226b0f){return new BPromise(function(_0x557d0f,_0x21a5c0){return client[_0xbe7d('0xb')](_0x130751,_0x226b0f)['then'](function(_0x43e4cb){logger['info'](_0xbe7d('0xc'),_0xa7f2fe,_0xbe7d('0xd'));logger[_0xbe7d('0xe')](_0xbe7d('0xf'),_0xa7f2fe,_0xbe7d('0xd'),JSON[_0xbe7d('0x10')](_0x43e4cb));if(_0x43e4cb[_0xbe7d('0x11')]){if(_0x43e4cb['error']['code']===0x1f4){logger[_0xbe7d('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0xa7f2fe,_0x43e4cb['error'][_0xbe7d('0x12')]);return _0x21a5c0(_0x43e4cb[_0xbe7d('0x11')]['message']);}logger['error'](_0xbe7d('0xc'),_0xa7f2fe,_0x43e4cb[_0xbe7d('0x11')][_0xbe7d('0x12')]);return _0x557d0f(_0x43e4cb[_0xbe7d('0x11')]['message']);}else{logger[_0xbe7d('0x13')](_0xbe7d('0xc'),_0xa7f2fe,_0xbe7d('0xd'));_0x557d0f(_0x43e4cb[_0xbe7d('0x14')][_0xbe7d('0x12')]);}})['catch'](function(_0x354376){logger[_0xbe7d('0x11')](_0xbe7d('0xc'),_0xa7f2fe,_0x354376);_0x21a5c0(_0x354376);});});}
\ No newline at end of file
index 7201a7f..298eb1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ea2=['/:id/query','query','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x3ea2,0x1d4));var _0x23ea=function(_0x5a14d2,_0x22b89a){_0x5a14d2=_0x5a14d2-0x0;var _0xb08187=_0x3ea2[_0x5a14d2];return _0xb08187;};'use strict';var multer=require(_0x23ea('0x0'));var util=require(_0x23ea('0x1'));var path=require(_0x23ea('0x2'));var timeout=require(_0x23ea('0x3'));var express=require('express');var router=express[_0x23ea('0x4')]();var fs_extra=require(_0x23ea('0x5'));var auth=require(_0x23ea('0x6'));var interaction=require(_0x23ea('0x7'));var config=require('../../config/environment');var controller=require(_0x23ea('0x8'));router[_0x23ea('0x9')]('/',auth[_0x23ea('0xa')](),controller[_0x23ea('0xb')]);router[_0x23ea('0x9')](_0x23ea('0xc'),auth[_0x23ea('0xa')](),controller[_0x23ea('0xd')]);router['get'](_0x23ea('0xe'),auth[_0x23ea('0xa')](),controller[_0x23ea('0xf')]);router[_0x23ea('0x9')](_0x23ea('0x10'),auth[_0x23ea('0xa')](),controller[_0x23ea('0x11')]);router[_0x23ea('0x9')](_0x23ea('0x12'),auth['isAuthenticated'](),controller[_0x23ea('0x13')]);router[_0x23ea('0x14')]('/',auth[_0x23ea('0xa')](),controller[_0x23ea('0x15')]);router[_0x23ea('0x16')](_0x23ea('0xc'),auth['isAuthenticated'](),controller[_0x23ea('0x17')]);router[_0x23ea('0x18')](_0x23ea('0xc'),auth[_0x23ea('0xa')](),controller[_0x23ea('0x19')]);module[_0x23ea('0x1a')]=router;
\ No newline at end of file
+var _0x6e82=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/preview','preview','/:id/query','post','put','/:id','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3428b3,_0x4396cc){var _0x4474ad=function(_0x5df2bc){while(--_0x5df2bc){_0x3428b3['push'](_0x3428b3['shift']());}};_0x4474ad(++_0x4396cc);}(_0x6e82,0x1c6));var _0x26e8=function(_0x27221f,_0x3f0125){_0x27221f=_0x27221f-0x0;var _0x1946d4=_0x6e82[_0x27221f];return _0x1946d4;};'use strict';var multer=require(_0x26e8('0x0'));var util=require(_0x26e8('0x1'));var path=require(_0x26e8('0x2'));var timeout=require(_0x26e8('0x3'));var express=require(_0x26e8('0x4'));var router=express[_0x26e8('0x5')]();var fs_extra=require(_0x26e8('0x6'));var auth=require(_0x26e8('0x7'));var interaction=require(_0x26e8('0x8'));var config=require(_0x26e8('0x9'));var controller=require('./analyticDefaultReport.controller');router[_0x26e8('0xa')]('/',auth[_0x26e8('0xb')](),controller[_0x26e8('0xc')]);router[_0x26e8('0xa')]('/:id',auth[_0x26e8('0xb')](),controller[_0x26e8('0xd')]);router[_0x26e8('0xa')](_0x26e8('0xe'),auth['isAuthenticated'](),controller[_0x26e8('0xf')]);router[_0x26e8('0xa')]('/:id/run',auth['isAuthenticated'](),controller['run']);router[_0x26e8('0xa')](_0x26e8('0x10'),auth[_0x26e8('0xb')](),controller['query']);router[_0x26e8('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x26e8('0x12')](_0x26e8('0x13'),auth['isAuthenticated'](),controller[_0x26e8('0x14')]);router['delete'](_0x26e8('0x13'),auth[_0x26e8('0xb')](),controller[_0x26e8('0x15')]);module['exports']=router;
\ No newline at end of file
index a1306f6..1e6da4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693e=['ENUM','csv','xlsx','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','exports','STRING'];(function(_0x3f7ded,_0xf729cd){var _0x224fae=function(_0x234fa1){while(--_0x234fa1){_0x3f7ded['push'](_0x3f7ded['shift']());}};_0x224fae(++_0xf729cd);}(_0x693e,0x104));var _0xe693=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x693e[_0x199572];return _0x13cfa3;};'use strict';var Sequelize=require(_0xe693('0x0'));var moment=require(_0xe693('0x1'));module[_0xe693('0x2')]={'name':{'type':Sequelize[_0xe693('0x3')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0xe693('0x4')](_0xe693('0x5'),'pdf',_0xe693('0x6')),'allowNull':![],'defaultValue':_0xe693('0x5')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0xe693('0x3')],'defaultValue':_0xe693('0x7')},'type':{'type':Sequelize[_0xe693('0x4')](_0xe693('0x8'),_0xe693('0x9')),'allowNull':![],'defaultValue':_0xe693('0x8')},'reportId':{'type':Sequelize[_0xe693('0xa')](0xb)[_0xe693('0xb')]},'reportType':{'type':Sequelize[_0xe693('0x3')]}};
\ No newline at end of file
+var _0x1bd0=['csv','pdf','xlsx','DATE','Loading','manual','scheduled','INTEGER','sequelize','moment','exports','STRING','ENUM'];(function(_0x341145,_0x43b1a0){var _0x4ae522=function(_0x7dd16b){while(--_0x7dd16b){_0x341145['push'](_0x341145['shift']());}};_0x4ae522(++_0x43b1a0);}(_0x1bd0,0x14d));var _0x01bd=function(_0x2353b8,_0x5704fa){_0x2353b8=_0x2353b8-0x0;var _0x2147cd=_0x1bd0[_0x2353b8];return _0x2147cd;};'use strict';var Sequelize=require(_0x01bd('0x0'));var moment=require(_0x01bd('0x1'));module[_0x01bd('0x2')]={'name':{'type':Sequelize[_0x01bd('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x01bd('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x01bd('0x4')](_0x01bd('0x5'),_0x01bd('0x6'),_0x01bd('0x7')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x01bd('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x01bd('0x8')]},'endDate':{'type':Sequelize[_0x01bd('0x8')]},'status':{'type':Sequelize[_0x01bd('0x3')],'defaultValue':_0x01bd('0x9')},'type':{'type':Sequelize[_0x01bd('0x4')](_0x01bd('0xa'),_0x01bd('0xb')),'allowNull':![],'defaultValue':_0x01bd('0xa')},'reportId':{'type':Sequelize[_0x01bd('0xc')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x01bd('0x3')]}};
\ No newline at end of file
index 99005ae..9fd4b1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b5b=['stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','attributes','includeAll','find','create','body','user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','basename','savename','output','join','root','server/files/reports','Report\x20not\x20found\x20or\x20empty','exists','download','%s.%s','toLowerCase','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','get','UserProfileResource','destroy','sendStatus','error'];(function(_0x3a833e,_0x5a1878){var _0xdff445=function(_0x1715a3){while(--_0x1715a3){_0x3a833e['push'](_0x3a833e['shift']());}};_0xdff445(++_0x5a1878);}(_0x5b5b,0x14e));var _0xb5b5=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x5b5b[_0x2dadb9];return _0x2f0097;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb5b5('0x0'));var rp=require(_0xb5b5('0x1'));var moment=require('moment');var BPromise=require(_0xb5b5('0x2'));var Mustache=require(_0xb5b5('0x3'));var util=require(_0xb5b5('0x4'));var path=require(_0xb5b5('0x5'));var sox=require('sox');var csv=require(_0xb5b5('0x6'));var ejs=require(_0xb5b5('0x7'));var fs=require('fs');var fs_extra=require(_0xb5b5('0x8'));var _=require(_0xb5b5('0x9'));var squel=require(_0xb5b5('0xa'));var crypto=require(_0xb5b5('0xb'));var jsforce=require(_0xb5b5('0xc'));var deskjs=require(_0xb5b5('0xd'));var toCsv=require(_0xb5b5('0x6'));var querystring=require(_0xb5b5('0xe'));var Papa=require(_0xb5b5('0xf'));var Redis=require(_0xb5b5('0x10'));var authService=require(_0xb5b5('0x11'));var qs=require(_0xb5b5('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb5b5('0x13'))(_0xb5b5('0x14'));var utils=require(_0xb5b5('0x15'));var config=require(_0xb5b5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb5b5('0x17'))['db'];function respondWithStatusCode(_0x1d124a,_0xeecc8d){_0xeecc8d=_0xeecc8d||0xcc;return function(_0x32ff49){if(_0x32ff49){return _0x1d124a['sendStatus'](_0xeecc8d);}return _0x1d124a[_0xb5b5('0x18')](_0xeecc8d)[_0xb5b5('0x19')]();};}function respondWithResult(_0x20d1a0,_0x5a00f8){_0x5a00f8=_0x5a00f8||0xc8;return function(_0x33109f){if(_0x33109f){return _0x20d1a0[_0xb5b5('0x18')](_0x5a00f8)[_0xb5b5('0x1a')](_0x33109f);}};}function respondWithFilteredResult(_0x1281d7,_0xfa799f){return function(_0x41f662){if(_0x41f662){var _0x5be19d=typeof _0xfa799f[_0xb5b5('0x1b')]===_0xb5b5('0x1c')&&typeof _0xfa799f[_0xb5b5('0x1d')]==='undefined';var _0x125c5c=_0x41f662[_0xb5b5('0x1e')];var _0xd77355=_0x5be19d?0x0:_0xfa799f['offset'];var _0x3aed51=_0x5be19d?_0x41f662['count']:_0xfa799f[_0xb5b5('0x1b')]+_0xfa799f['limit'];var _0x496363;if(_0x3aed51>=_0x125c5c){_0x3aed51=_0x125c5c;_0x496363=0xc8;}else{_0x496363=0xce;}_0x1281d7[_0xb5b5('0x18')](_0x496363);return _0x1281d7[_0xb5b5('0x1f')](_0xb5b5('0x20'),_0xd77355+'-'+_0x3aed51+'/'+_0x125c5c)[_0xb5b5('0x1a')](_0x41f662);}return null;};}function patchUpdates(_0x56bc0d){return function(_0x34f71e){try{jsonpatch[_0xb5b5('0x21')](_0x34f71e,_0x56bc0d,!![]);}catch(_0x57cd58){return BPromise[_0xb5b5('0x22')](_0x57cd58);}return _0x34f71e['save']();};}function saveUpdates(_0x47bc36,_0x3770ec){return function(_0x24ac0c){if(_0x24ac0c){return _0x24ac0c[_0xb5b5('0x23')](_0x47bc36)[_0xb5b5('0x24')](function(_0x304287){return _0x304287;});}return null;};}function removeEntity(_0x4f5849,_0x38af75){return function(_0x42ab6a){if(_0x42ab6a){return _0x42ab6a['destroy']()[_0xb5b5('0x24')](function(){var _0x72be74=_0x42ab6a[_0xb5b5('0x25')]({'plain':!![]});var _0x2ad16d='ExtractedReports';return db[_0xb5b5('0x26')][_0xb5b5('0x27')]({'where':{'type':_0x2ad16d,'resourceId':_0x72be74['id']}})[_0xb5b5('0x24')](function(){return _0x42ab6a;});})['then'](function(){_0x4f5849[_0xb5b5('0x18')](0xcc)[_0xb5b5('0x19')]();});}};}function handleEntityNotFound(_0x19d291,_0x536fbf){return function(_0x3f7c30){if(!_0x3f7c30){_0x19d291[_0xb5b5('0x28')](0x194);}return _0x3f7c30;};}function handleError(_0x5b043d,_0x2bf6c0){_0x2bf6c0=_0x2bf6c0||0x1f4;return function(_0x23233c){logger[_0xb5b5('0x29')](_0x23233c[_0xb5b5('0x2a')]);if(_0x23233c[_0xb5b5('0x2b')]){delete _0x23233c['name'];}_0x5b043d[_0xb5b5('0x18')](_0x2bf6c0)[_0xb5b5('0x2c')](_0x23233c);};}exports[_0xb5b5('0x2d')]=function(_0x2356ff,_0x5ac318){var _0x2d979c={},_0x46b4c6={},_0x3a0704={'count':0x0,'rows':[]};var _0x567259=_[_0xb5b5('0x2e')](db[_0xb5b5('0x2f')][_0xb5b5('0x30')],function(_0x5a162f){return{'name':_0x5a162f[_0xb5b5('0x31')],'type':_0x5a162f[_0xb5b5('0x32')][_0xb5b5('0x33')]};});_0x46b4c6['model']=_[_0xb5b5('0x2e')](_0x567259,_0xb5b5('0x2b'));_0x46b4c6[_0xb5b5('0x34')]=_[_0xb5b5('0x35')](_0x2356ff[_0xb5b5('0x34')]);_0x46b4c6[_0xb5b5('0x36')]=_['intersection'](_0x46b4c6['model'],_0x46b4c6[_0xb5b5('0x34')]);_0x2d979c['attributes']=_[_0xb5b5('0x37')](_0x46b4c6[_0xb5b5('0x38')],qs['fields'](_0x2356ff[_0xb5b5('0x34')][_0xb5b5('0x39')]));_0x2d979c['attributes']=_0x2d979c['attributes'][_0xb5b5('0x3a')]?_0x2d979c['attributes']:_0x46b4c6[_0xb5b5('0x38')];if(!_0x2356ff['query']['hasOwnProperty'](_0xb5b5('0x3b'))){_0x2d979c[_0xb5b5('0x1d')]=qs[_0xb5b5('0x1d')](_0x2356ff[_0xb5b5('0x34')]['limit']);_0x2d979c['offset']=qs[_0xb5b5('0x1b')](_0x2356ff[_0xb5b5('0x34')][_0xb5b5('0x1b')]);}_0x2d979c[_0xb5b5('0x3c')]=qs[_0xb5b5('0x3d')](_0x2356ff[_0xb5b5('0x34')][_0xb5b5('0x3d')]);_0x2d979c['where']=qs[_0xb5b5('0x36')](_[_0xb5b5('0x3e')](_0x2356ff[_0xb5b5('0x34')],_0x46b4c6['filters']),_0x567259);if(_0x2356ff['query'][_0xb5b5('0x3f')]){_0x2d979c[_0xb5b5('0x40')]=_[_0xb5b5('0x41')](_0x2d979c['where'],{'$or':_[_0xb5b5('0x2e')](_0x567259,function(_0x30048b){if(_0x30048b[_0xb5b5('0x32')]!==_0xb5b5('0x42')){var _0x32999a={};_0x32999a[_0x30048b[_0xb5b5('0x2b')]]={'$like':'%'+_0x2356ff['query'][_0xb5b5('0x3f')]+'%'};return _0x32999a;}})});}_0x2d979c=_[_0xb5b5('0x41')]({},_0x2d979c,_0x2356ff[_0xb5b5('0x43')]);var _0x979916={'where':_0x2d979c[_0xb5b5('0x40')]};return db['AnalyticExtractedReport'][_0xb5b5('0x1e')](_0x979916)[_0xb5b5('0x24')](function(_0xcfd47f){_0x3a0704[_0xb5b5('0x1e')]=_0xcfd47f;if(_0x2356ff['query']['includeAll']){_0x2d979c[_0xb5b5('0x44')]=[{'all':!![]}];}return db[_0xb5b5('0x2f')][_0xb5b5('0x45')](_0x2d979c);})[_0xb5b5('0x24')](function(_0x330861){_0x3a0704[_0xb5b5('0x46')]=_0x330861;return _0x3a0704;})[_0xb5b5('0x24')](respondWithFilteredResult(_0x5ac318,_0x2d979c))[_0xb5b5('0x47')](handleError(_0x5ac318,null));};exports[_0xb5b5('0x48')]=function(_0x1599cb,_0x18d42e){var _0x5afb87={'raw':!![],'where':{'id':_0x1599cb['params']['id']}},_0x5e0547={};_0x5e0547['model']=_[_0xb5b5('0x35')](db[_0xb5b5('0x2f')][_0xb5b5('0x30')]);_0x5e0547[_0xb5b5('0x34')]=_['keys'](_0x1599cb[_0xb5b5('0x34')]);_0x5e0547[_0xb5b5('0x36')]=_[_0xb5b5('0x37')](_0x5e0547[_0xb5b5('0x38')],_0x5e0547[_0xb5b5('0x34')]);_0x5afb87[_0xb5b5('0x49')]=_[_0xb5b5('0x37')](_0x5e0547[_0xb5b5('0x38')],qs[_0xb5b5('0x39')](_0x1599cb[_0xb5b5('0x34')][_0xb5b5('0x39')]));_0x5afb87[_0xb5b5('0x49')]=_0x5afb87['attributes'][_0xb5b5('0x3a')]?_0x5afb87[_0xb5b5('0x49')]:_0x5e0547[_0xb5b5('0x38')];if(_0x1599cb[_0xb5b5('0x34')][_0xb5b5('0x4a')]){_0x5afb87[_0xb5b5('0x44')]=[{'all':!![]}];}_0x5afb87=_[_0xb5b5('0x41')]({},_0x5afb87,_0x1599cb[_0xb5b5('0x43')]);return db['AnalyticExtractedReport'][_0xb5b5('0x4b')](_0x5afb87)['then'](handleEntityNotFound(_0x18d42e,null))[_0xb5b5('0x24')](respondWithResult(_0x18d42e,null))[_0xb5b5('0x47')](handleError(_0x18d42e,null));};exports[_0xb5b5('0x4c')]=function(_0x28a75a,_0x196575){return db[_0xb5b5('0x2f')][_0xb5b5('0x4c')](_0x28a75a[_0xb5b5('0x4d')],{})['then'](function(_0x232d9e){var _0x14eb68=_0x28a75a[_0xb5b5('0x4e')][_0xb5b5('0x25')]({'plain':!![]});if(!_0x14eb68)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x14eb68[_0xb5b5('0x4f')]===_0xb5b5('0x4e')){var _0x3c296f=_0x232d9e[_0xb5b5('0x25')]({'plain':!![]});var _0x7e0e7a='ExtractedReports';return db[_0xb5b5('0x50')][_0xb5b5('0x4b')]({'where':{'name':_0x7e0e7a,'userProfileId':_0x14eb68['userProfileId']},'raw':!![]})[_0xb5b5('0x24')](function(_0x1e9dab){if(_0x1e9dab&&_0x1e9dab['autoAssociation']===0x0){return db[_0xb5b5('0x26')]['create']({'name':_0x3c296f[_0xb5b5('0x2b')],'resourceId':_0x3c296f['id'],'type':_0x1e9dab['name'],'sectionId':_0x1e9dab['id']},{})[_0xb5b5('0x24')](function(){return _0x232d9e;});}else{return _0x232d9e;}})['catch'](function(_0x2bfac8){logger[_0xb5b5('0x29')](_0xb5b5('0x51'),_0x2bfac8);throw _0x2bfac8;});}return _0x232d9e;})[_0xb5b5('0x24')](respondWithResult(_0x196575,0xc9))[_0xb5b5('0x47')](handleError(_0x196575,null));};exports[_0xb5b5('0x23')]=function(_0x30db6f,_0x2509cc){if(_0x30db6f[_0xb5b5('0x4d')]['id']){delete _0x30db6f[_0xb5b5('0x4d')]['id'];}return db[_0xb5b5('0x2f')][_0xb5b5('0x4b')]({'where':{'id':_0x30db6f[_0xb5b5('0x52')]['id']}})[_0xb5b5('0x24')](handleEntityNotFound(_0x2509cc,null))[_0xb5b5('0x24')](saveUpdates(_0x30db6f[_0xb5b5('0x4d')],null))[_0xb5b5('0x24')](respondWithResult(_0x2509cc,null))[_0xb5b5('0x47')](handleError(_0x2509cc,null));};exports['destroy']=function(_0x3768f1,_0x109bf2){return db[_0xb5b5('0x2f')]['find']({'where':{'id':_0x3768f1[_0xb5b5('0x52')]['id']}})[_0xb5b5('0x24')](handleEntityNotFound(_0x109bf2,null))[_0xb5b5('0x24')](removeEntity(_0x109bf2,null))[_0xb5b5('0x47')](handleError(_0x109bf2,null));};exports['download']=function(_0x25970d,_0xd1ca24,_0x1fec3a){return db['AnalyticExtractedReport'][_0xb5b5('0x4b')]({'where':{'id':_0x25970d[_0xb5b5('0x52')]['id']},'attributes':[_0xb5b5('0x2b'),_0xb5b5('0x53'),_0xb5b5('0x54'),_0xb5b5('0x55')],'raw':!![]})['then'](handleEntityNotFound(_0xd1ca24,null))[_0xb5b5('0x24')](function(_0x13081b){if(_0x13081b){if(!fs['existsSync'](path[_0xb5b5('0x56')](config[_0xb5b5('0x57')],_0xb5b5('0x58'),_0x13081b[_0xb5b5('0x54')]))){throw new db['Sequelize']['ValidationError'](_0xb5b5('0x59'));}if(_0x25970d['query'][_0xb5b5('0x5a')]){return _0xd1ca24[_0xb5b5('0x28')](0xc8);}return _0xd1ca24[_0xb5b5('0x5b')](path[_0xb5b5('0x56')](config['root'],'server/files/reports',_0x13081b[_0xb5b5('0x54')]),util['format'](_0xb5b5('0x5c'),_0x13081b[_0xb5b5('0x53')]||_0x13081b[_0xb5b5('0x2b')],_0x13081b[_0xb5b5('0x55')][_0xb5b5('0x5d')]()));}})[_0xb5b5('0x47')](handleError(_0xd1ca24,null));};
\ No newline at end of file
+var _0x56f7=['includeAll','include','findAll','rows','catch','show','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','output','existsSync','join','root','server/files/reports','savename','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','json','offset','limit','undefined','count','status','set','apply','reject','update','then','get','ExtractedReports','UserProfileResource','destroy','error','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','AnalyticExtractedReport'];(function(_0x118f83,_0x31f530){var _0x2d5e54=function(_0x43b8be){while(--_0x43b8be){_0x118f83['push'](_0x118f83['shift']());}};_0x2d5e54(++_0x31f530);}(_0x56f7,0x1e1));var _0x756f=function(_0x41e5d7,_0x373699){_0x41e5d7=_0x41e5d7-0x0;var _0x3a3d01=_0x56f7[_0x41e5d7];return _0x3a3d01;};'use strict';var emlformat=require(_0x756f('0x0'));var rimraf=require(_0x756f('0x1'));var zipdir=require(_0x756f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x756f('0x3'));var moment=require('moment');var BPromise=require(_0x756f('0x4'));var Mustache=require(_0x756f('0x5'));var util=require(_0x756f('0x6'));var path=require(_0x756f('0x7'));var sox=require(_0x756f('0x8'));var csv=require(_0x756f('0x9'));var ejs=require(_0x756f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x756f('0xb'));var squel=require('squel');var crypto=require(_0x756f('0xc'));var jsforce=require(_0x756f('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x756f('0xe'));var Papa=require(_0x756f('0xf'));var Redis=require(_0x756f('0x10'));var authService=require(_0x756f('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x756f('0x12'))(_0x756f('0x13'));var utils=require('../../config/utils');var config=require(_0x756f('0x14'));var licenseUtil=require(_0x756f('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58805f,_0x3f0c20){_0x3f0c20=_0x3f0c20||0xcc;return function(_0xd3457d){if(_0xd3457d){return _0x58805f[_0x756f('0x16')](_0x3f0c20);}return _0x58805f['status'](_0x3f0c20)[_0x756f('0x17')]();};}function respondWithResult(_0x4bc0b2,_0x4abc38){_0x4abc38=_0x4abc38||0xc8;return function(_0x1e1c46){if(_0x1e1c46){return _0x4bc0b2['status'](_0x4abc38)[_0x756f('0x18')](_0x1e1c46);}};}function respondWithFilteredResult(_0x9cc6bd,_0x311431){return function(_0x46fdd2){if(_0x46fdd2){var _0x2e47e8=typeof _0x311431[_0x756f('0x19')]==='undefined'&&typeof _0x311431[_0x756f('0x1a')]===_0x756f('0x1b');var _0x12cfc5=_0x46fdd2[_0x756f('0x1c')];var _0x3103cd=_0x2e47e8?0x0:_0x311431['offset'];var _0x28325c=_0x2e47e8?_0x46fdd2[_0x756f('0x1c')]:_0x311431[_0x756f('0x19')]+_0x311431[_0x756f('0x1a')];var _0x5eb028;if(_0x28325c>=_0x12cfc5){_0x28325c=_0x12cfc5;_0x5eb028=0xc8;}else{_0x5eb028=0xce;}_0x9cc6bd[_0x756f('0x1d')](_0x5eb028);return _0x9cc6bd[_0x756f('0x1e')]('Content-Range',_0x3103cd+'-'+_0x28325c+'/'+_0x12cfc5)[_0x756f('0x18')](_0x46fdd2);}return null;};}function patchUpdates(_0x92b203){return function(_0x4d4ae8){try{jsonpatch[_0x756f('0x1f')](_0x4d4ae8,_0x92b203,!![]);}catch(_0x8faff6){return BPromise[_0x756f('0x20')](_0x8faff6);}return _0x4d4ae8['save']();};}function saveUpdates(_0x3e88b6,_0x49d715){return function(_0x6fe1b8){if(_0x6fe1b8){return _0x6fe1b8[_0x756f('0x21')](_0x3e88b6)['then'](function(_0x4773e6){return _0x4773e6;});}return null;};}function removeEntity(_0x3f3934,_0xd97cee){return function(_0x3147c2){if(_0x3147c2){return _0x3147c2['destroy']()[_0x756f('0x22')](function(){var _0x49aa9b=_0x3147c2[_0x756f('0x23')]({'plain':!![]});var _0x837d5=_0x756f('0x24');return db[_0x756f('0x25')][_0x756f('0x26')]({'where':{'type':_0x837d5,'resourceId':_0x49aa9b['id']}})[_0x756f('0x22')](function(){return _0x3147c2;});})[_0x756f('0x22')](function(){_0x3f3934[_0x756f('0x1d')](0xcc)[_0x756f('0x17')]();});}};}function handleEntityNotFound(_0x3f011c,_0x302fc8){return function(_0x1ea7c1){if(!_0x1ea7c1){_0x3f011c[_0x756f('0x16')](0x194);}return _0x1ea7c1;};}function handleError(_0x35828a,_0x11b65b){_0x11b65b=_0x11b65b||0x1f4;return function(_0x16a2cf){logger[_0x756f('0x27')](_0x16a2cf['stack']);if(_0x16a2cf[_0x756f('0x28')]){delete _0x16a2cf['name'];}_0x35828a[_0x756f('0x1d')](_0x11b65b)[_0x756f('0x29')](_0x16a2cf);};}exports[_0x756f('0x2a')]=function(_0x533d0a,_0x318bd8){var _0x531eb7={},_0x146b2c={},_0xf5ad37={'count':0x0,'rows':[]};var _0x29834=_[_0x756f('0x2b')](db['AnalyticExtractedReport'][_0x756f('0x2c')],function(_0x3e78f3){return{'name':_0x3e78f3['fieldName'],'type':_0x3e78f3['type'][_0x756f('0x2d')]};});_0x146b2c[_0x756f('0x2e')]=_[_0x756f('0x2b')](_0x29834,_0x756f('0x28'));_0x146b2c[_0x756f('0x2f')]=_[_0x756f('0x30')](_0x533d0a['query']);_0x146b2c[_0x756f('0x31')]=_[_0x756f('0x32')](_0x146b2c[_0x756f('0x2e')],_0x146b2c[_0x756f('0x2f')]);_0x531eb7['attributes']=_[_0x756f('0x32')](_0x146b2c[_0x756f('0x2e')],qs[_0x756f('0x33')](_0x533d0a[_0x756f('0x2f')]['fields']));_0x531eb7[_0x756f('0x34')]=_0x531eb7[_0x756f('0x34')][_0x756f('0x35')]?_0x531eb7[_0x756f('0x34')]:_0x146b2c[_0x756f('0x2e')];if(!_0x533d0a[_0x756f('0x2f')][_0x756f('0x36')](_0x756f('0x37'))){_0x531eb7['limit']=qs[_0x756f('0x1a')](_0x533d0a['query'][_0x756f('0x1a')]);_0x531eb7['offset']=qs[_0x756f('0x19')](_0x533d0a[_0x756f('0x2f')][_0x756f('0x19')]);}_0x531eb7[_0x756f('0x38')]=qs['sort'](_0x533d0a[_0x756f('0x2f')][_0x756f('0x39')]);_0x531eb7[_0x756f('0x3a')]=qs['filters'](_[_0x756f('0x3b')](_0x533d0a['query'],_0x146b2c[_0x756f('0x31')]),_0x29834);if(_0x533d0a[_0x756f('0x2f')][_0x756f('0x3c')]){_0x531eb7['where']=_[_0x756f('0x3d')](_0x531eb7['where'],{'$or':_[_0x756f('0x2b')](_0x29834,function(_0x1da649){if(_0x1da649[_0x756f('0x3e')]!=='VIRTUAL'){var _0x4d1d55={};_0x4d1d55[_0x1da649[_0x756f('0x28')]]={'$like':'%'+_0x533d0a[_0x756f('0x2f')]['filter']+'%'};return _0x4d1d55;}})});}_0x531eb7=_[_0x756f('0x3d')]({},_0x531eb7,_0x533d0a[_0x756f('0x3f')]);var _0x11a387={'where':_0x531eb7[_0x756f('0x3a')]};return db[_0x756f('0x40')][_0x756f('0x1c')](_0x11a387)['then'](function(_0x37cbe3){_0xf5ad37[_0x756f('0x1c')]=_0x37cbe3;if(_0x533d0a[_0x756f('0x2f')][_0x756f('0x41')]){_0x531eb7[_0x756f('0x42')]=[{'all':!![]}];}return db[_0x756f('0x40')][_0x756f('0x43')](_0x531eb7);})[_0x756f('0x22')](function(_0x47253b){_0xf5ad37[_0x756f('0x44')]=_0x47253b;return _0xf5ad37;})['then'](respondWithFilteredResult(_0x318bd8,_0x531eb7))[_0x756f('0x45')](handleError(_0x318bd8,null));};exports[_0x756f('0x46')]=function(_0x1c8eb6,_0x5ca733){var _0x20fdd9={'raw':!![],'where':{'id':_0x1c8eb6['params']['id']}},_0x2c2438={};_0x2c2438[_0x756f('0x2e')]=_['keys'](db['AnalyticExtractedReport'][_0x756f('0x2c')]);_0x2c2438[_0x756f('0x2f')]=_[_0x756f('0x30')](_0x1c8eb6[_0x756f('0x2f')]);_0x2c2438[_0x756f('0x31')]=_[_0x756f('0x32')](_0x2c2438['model'],_0x2c2438['query']);_0x20fdd9['attributes']=_[_0x756f('0x32')](_0x2c2438[_0x756f('0x2e')],qs[_0x756f('0x33')](_0x1c8eb6[_0x756f('0x2f')][_0x756f('0x33')]));_0x20fdd9[_0x756f('0x34')]=_0x20fdd9[_0x756f('0x34')][_0x756f('0x35')]?_0x20fdd9['attributes']:_0x2c2438[_0x756f('0x2e')];if(_0x1c8eb6['query'][_0x756f('0x41')]){_0x20fdd9[_0x756f('0x42')]=[{'all':!![]}];}_0x20fdd9=_[_0x756f('0x3d')]({},_0x20fdd9,_0x1c8eb6[_0x756f('0x3f')]);return db[_0x756f('0x40')]['find'](_0x20fdd9)['then'](handleEntityNotFound(_0x5ca733,null))[_0x756f('0x22')](respondWithResult(_0x5ca733,null))[_0x756f('0x45')](handleError(_0x5ca733,null));};exports['create']=function(_0x27cfca,_0x55d779){return db['AnalyticExtractedReport']['create'](_0x27cfca[_0x756f('0x47')],{})['then'](function(_0x2bafe7){var _0x5a0951=_0x27cfca[_0x756f('0x48')][_0x756f('0x23')]({'plain':!![]});if(!_0x5a0951)throw new Error(_0x756f('0x49'));if(_0x5a0951[_0x756f('0x4a')]===_0x756f('0x48')){var _0x1bc475=_0x2bafe7[_0x756f('0x23')]({'plain':!![]});var _0x7cd9fe=_0x756f('0x24');return db['UserProfileSection'][_0x756f('0x4b')]({'where':{'name':_0x7cd9fe,'userProfileId':_0x5a0951['userProfileId']},'raw':!![]})[_0x756f('0x22')](function(_0x2ef36b){if(_0x2ef36b&&_0x2ef36b[_0x756f('0x4c')]===0x0){return db[_0x756f('0x25')]['create']({'name':_0x1bc475[_0x756f('0x28')],'resourceId':_0x1bc475['id'],'type':_0x2ef36b[_0x756f('0x28')],'sectionId':_0x2ef36b['id']},{})[_0x756f('0x22')](function(){return _0x2bafe7;});}else{return _0x2bafe7;}})[_0x756f('0x45')](function(_0x27ac30){logger[_0x756f('0x27')](_0x756f('0x4d'),_0x27ac30);throw _0x27ac30;});}return _0x2bafe7;})[_0x756f('0x22')](respondWithResult(_0x55d779,0xc9))['catch'](handleError(_0x55d779,null));};exports['update']=function(_0x4ec44b,_0x121f60){if(_0x4ec44b[_0x756f('0x47')]['id']){delete _0x4ec44b[_0x756f('0x47')]['id'];}return db['AnalyticExtractedReport'][_0x756f('0x4b')]({'where':{'id':_0x4ec44b['params']['id']}})[_0x756f('0x22')](handleEntityNotFound(_0x121f60,null))[_0x756f('0x22')](saveUpdates(_0x4ec44b['body'],null))[_0x756f('0x22')](respondWithResult(_0x121f60,null))['catch'](handleError(_0x121f60,null));};exports[_0x756f('0x26')]=function(_0x5a7441,_0x4b5900){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x5a7441['params']['id']}})[_0x756f('0x22')](handleEntityNotFound(_0x4b5900,null))[_0x756f('0x22')](removeEntity(_0x4b5900,null))[_0x756f('0x45')](handleError(_0x4b5900,null));};exports[_0x756f('0x4e')]=function(_0x52276b,_0x5d35a4,_0x41ac0e){return db[_0x756f('0x40')][_0x756f('0x4b')]({'where':{'id':_0x52276b['params']['id']},'attributes':[_0x756f('0x28'),_0x756f('0x4f'),'savename',_0x756f('0x50')],'raw':!![]})[_0x756f('0x22')](handleEntityNotFound(_0x5d35a4,null))[_0x756f('0x22')](function(_0x34cb26){if(_0x34cb26){if(!fs[_0x756f('0x51')](path[_0x756f('0x52')](config[_0x756f('0x53')],_0x756f('0x54'),_0x34cb26[_0x756f('0x55')]))){throw new db['Sequelize'][(_0x756f('0x56'))](_0x756f('0x57'));}if(_0x52276b['query'][_0x756f('0x58')]){return _0x5d35a4['sendStatus'](0xc8);}return _0x5d35a4[_0x756f('0x4e')](path[_0x756f('0x52')](config[_0x756f('0x53')],'server/files/reports',_0x34cb26['savename']),util[_0x756f('0x59')](_0x756f('0x5a'),_0x34cb26[_0x756f('0x4f')]||_0x34cb26[_0x756f('0x28')],_0x34cb26['output']['toLowerCase']()));}})[_0x756f('0x45')](handleError(_0x5d35a4,null));};
\ No newline at end of file
index 02b9a2e..e1882b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf22a=['rimraf','define','AnalyticExtractedReport','lodash','../../config/logger','api','request-promise'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0xf22a,0x17d));var _0xaf22=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0xf22a[_0x13ce0c];return _0x4388fb;};'use strict';var _=require(_0xaf22('0x0'));var util=require('util');var logger=require(_0xaf22('0x1'))(_0xaf22('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xaf22('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf22('0x4'));var config=require('../../config/environment');var attributes=require('./analyticExtractedReport.attributes');module['exports']=function(_0x3eb96f,_0x24d5d4){return _0x3eb96f[_0xaf22('0x5')](_0xaf22('0x6'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2920=['define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./analyticExtractedReport.attributes','exports'];(function(_0x5e0f1d,_0x5e7e6a){var _0xb801aa=function(_0x2f8cfc){while(--_0x2f8cfc){_0x5e0f1d['push'](_0x5e0f1d['shift']());}};_0xb801aa(++_0x5e7e6a);}(_0x2920,0x12e));var _0x0292=function(_0x34fda6,_0xb63d1e){_0x34fda6=_0x34fda6-0x0;var _0x119320=_0x2920[_0x34fda6];return _0x119320;};'use strict';var _=require(_0x0292('0x0'));var util=require(_0x0292('0x1'));var logger=require(_0x0292('0x2'))(_0x0292('0x3'));var moment=require(_0x0292('0x4'));var BPromise=require('bluebird');var rp=require(_0x0292('0x5'));var fs=require('fs');var path=require(_0x0292('0x6'));var rimraf=require('rimraf');var config=require(_0x0292('0x7'));var attributes=require(_0x0292('0x8'));module[_0x0292('0x9')]=function(_0x18295b,_0x39c3d9){return _0x18295b[_0x0292('0xa')](_0x0292('0xb'),attributes,{'tableName':_0x0292('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c6554a..4d87b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6344=['AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x20b8e2,_0x532a15){var _0x2c6858=function(_0x3d68b7){while(--_0x3d68b7){_0x20b8e2['push'](_0x20b8e2['shift']());}};_0x2c6858(++_0x532a15);}(_0x6344,0x196));var _0x4634=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6344[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x4634('0x0'));var util=require(_0x4634('0x1'));var moment=require('moment');var BPromise=require(_0x4634('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4634('0x3'));var db=require(_0x4634('0x4'))['db'];var utils=require(_0x4634('0x5'));var logger=require(_0x4634('0x6'))(_0x4634('0x7'));var config=require(_0x4634('0x8'));var jayson=require(_0x4634('0x9'));var client=jayson['client'][_0x4634('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e6fb5,_0x2693ea,_0x1b8786){return new BPromise(function(_0x4b2a95,_0x512033){return client[_0x4634('0xb')](_0x3e6fb5,_0x1b8786)[_0x4634('0xc')](function(_0x4eb8a6){logger[_0x4634('0xd')](_0x4634('0xe'),_0x2693ea,_0x4634('0xf'));logger['debug']('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x2693ea,_0x4634('0xf'),JSON[_0x4634('0x10')](_0x4eb8a6));if(_0x4eb8a6[_0x4634('0x11')]){if(_0x4eb8a6[_0x4634('0x11')][_0x4634('0x12')]===0x1f4){logger[_0x4634('0x11')](_0x4634('0xe'),_0x2693ea,_0x4eb8a6[_0x4634('0x11')]['message']);return _0x512033(_0x4eb8a6[_0x4634('0x11')]['message']);}logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x2693ea,_0x4eb8a6[_0x4634('0x11')][_0x4634('0x13')]);return _0x4b2a95(_0x4eb8a6['error'][_0x4634('0x13')]);}else{logger['info'](_0x4634('0xe'),_0x2693ea,_0x4634('0xf'));_0x4b2a95(_0x4eb8a6['result'][_0x4634('0x13')]);}})[_0x4634('0x14')](function(_0x33e3dd){logger[_0x4634('0x11')](_0x4634('0xe'),_0x2693ea,_0x33e3dd);_0x512033(_0x33e3dd);});});}
\ No newline at end of file
+var _0x6bfa=['util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash'];(function(_0x14d513,_0x9f84a6){var _0x160f64=function(_0x27a899){while(--_0x27a899){_0x14d513['push'](_0x14d513['shift']());}};_0x160f64(++_0x9f84a6);}(_0x6bfa,0x175));var _0xa6bf=function(_0x4b0342,_0x5b071c){_0x4b0342=_0x4b0342-0x0;var _0xc62aa3=_0x6bfa[_0x4b0342];return _0xc62aa3;};'use strict';var _=require(_0xa6bf('0x0'));var util=require(_0xa6bf('0x1'));var moment=require(_0xa6bf('0x2'));var BPromise=require(_0xa6bf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa6bf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa6bf('0x5'));var logger=require(_0xa6bf('0x6'))(_0xa6bf('0x7'));var config=require(_0xa6bf('0x8'));var jayson=require(_0xa6bf('0x9'));var client=jayson['client'][_0xa6bf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x226fc1,_0x4eca6b,_0x41cc80){return new BPromise(function(_0x13ce3d,_0x5eb307){return client['request'](_0x226fc1,_0x41cc80)[_0xa6bf('0xb')](function(_0x5c08d0){logger['info'](_0xa6bf('0xc'),_0x4eca6b,_0xa6bf('0xd'));logger[_0xa6bf('0xe')](_0xa6bf('0xf'),_0x4eca6b,_0xa6bf('0xd'),JSON[_0xa6bf('0x10')](_0x5c08d0));if(_0x5c08d0[_0xa6bf('0x11')]){if(_0x5c08d0[_0xa6bf('0x11')]['code']===0x1f4){logger[_0xa6bf('0x11')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4eca6b,_0x5c08d0[_0xa6bf('0x11')][_0xa6bf('0x12')]);return _0x5eb307(_0x5c08d0[_0xa6bf('0x11')]['message']);}logger[_0xa6bf('0x11')](_0xa6bf('0xc'),_0x4eca6b,_0x5c08d0['error']['message']);return _0x13ce3d(_0x5c08d0[_0xa6bf('0x11')][_0xa6bf('0x12')]);}else{logger[_0xa6bf('0x13')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4eca6b,'request\x20sent');_0x13ce3d(_0x5c08d0[_0xa6bf('0x14')][_0xa6bf('0x12')]);}})[_0xa6bf('0x15')](function(_0x33f45d){logger[_0xa6bf('0x11')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4eca6b,_0x33f45d);_0x5eb307(_0x33f45d);});});}
\ No newline at end of file
index cdce5d4..68c3389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cdb=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./analyticExtractedReport.controller','get','index','isAuthenticated','show','download','post','create','put','update','delete','/:id','destroy'];(function(_0x86579f,_0x577d70){var _0x247898=function(_0x368c54){while(--_0x368c54){_0x86579f['push'](_0x86579f['shift']());}};_0x247898(++_0x577d70);}(_0x1cdb,0x190));var _0xb1cd=function(_0x5c1268,_0x4afef6){_0x5c1268=_0x5c1268-0x0;var _0x3ff6a3=_0x1cdb[_0x5c1268];return _0x3ff6a3;};'use strict';var multer=require('multer');var util=require(_0xb1cd('0x0'));var path=require(_0xb1cd('0x1'));var timeout=require(_0xb1cd('0x2'));var express=require(_0xb1cd('0x3'));var router=express[_0xb1cd('0x4')]();var fs_extra=require(_0xb1cd('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb1cd('0x6'));var config=require('../../config/environment');var controller=require(_0xb1cd('0x7'));router[_0xb1cd('0x8')]('/',auth['isAuthenticated'](),controller[_0xb1cd('0x9')]);router[_0xb1cd('0x8')]('/:id',auth[_0xb1cd('0xa')](),controller[_0xb1cd('0xb')]);router[_0xb1cd('0x8')]('/:id/download',auth[_0xb1cd('0xa')](),controller[_0xb1cd('0xc')]);router[_0xb1cd('0xd')]('/',auth[_0xb1cd('0xa')](),controller[_0xb1cd('0xe')]);router[_0xb1cd('0xf')]('/:id',auth[_0xb1cd('0xa')](),controller[_0xb1cd('0x10')]);router[_0xb1cd('0x11')](_0xb1cd('0x12'),auth[_0xb1cd('0xa')](),controller[_0xb1cd('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xec07=['isAuthenticated','show','/:id/download','post','create','put','update','delete','destroy','exports','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','index','get','/:id'];(function(_0x18bf17,_0x32626e){var _0x7c4e02=function(_0x4afbbe){while(--_0x4afbbe){_0x18bf17['push'](_0x18bf17['shift']());}};_0x7c4e02(++_0x32626e);}(_0xec07,0xfa));var _0x7ec0=function(_0x5431f0,_0x35b145){_0x5431f0=_0x5431f0-0x0;var _0x16b8b2=_0xec07[_0x5431f0];return _0x16b8b2;};'use strict';var multer=require(_0x7ec0('0x0'));var util=require('util');var path=require(_0x7ec0('0x1'));var timeout=require('connect-timeout');var express=require(_0x7ec0('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x7ec0('0x3'));var interaction=require(_0x7ec0('0x4'));var config=require(_0x7ec0('0x5'));var controller=require(_0x7ec0('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7ec0('0x7')]);router[_0x7ec0('0x8')](_0x7ec0('0x9'),auth[_0x7ec0('0xa')](),controller[_0x7ec0('0xb')]);router['get'](_0x7ec0('0xc'),auth['isAuthenticated'](),controller['download']);router[_0x7ec0('0xd')]('/',auth[_0x7ec0('0xa')](),controller[_0x7ec0('0xe')]);router[_0x7ec0('0xf')](_0x7ec0('0x9'),auth[_0x7ec0('0xa')](),controller[_0x7ec0('0x10')]);router[_0x7ec0('0x11')]('/:id',auth[_0x7ec0('0xa')](),controller[_0x7ec0('0x12')]);module[_0x7ec0('0x13')]=router;
\ No newline at end of file
index 39d5525..4b2ccf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07c=['STRING','BOOLEAN','sequelize','exports'];(function(_0x416586,_0xbdf0b1){var _0x5cbb10=function(_0x274854){while(--_0x274854){_0x416586['push'](_0x416586['shift']());}};_0x5cbb10(++_0xbdf0b1);}(_0xa07c,0x14e));var _0xca07=function(_0x37fb34,_0x4ba26b){_0x37fb34=_0x37fb34-0x0;var _0xa786c2=_0xa07c[_0x37fb34];return _0xa786c2;};'use strict';var Sequelize=require(_0xca07('0x0'));module[_0xca07('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0xca07('0x2')]},'function':{'type':Sequelize[_0xca07('0x2')]},'format':{'type':Sequelize[_0xca07('0x2')]},'groupBy':{'type':Sequelize[_0xca07('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xca07('0x2')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x45bd=['BOOLEAN','TEXT','STRING'];(function(_0x17479b,_0x4483f6){var _0x162432=function(_0x4f890e){while(--_0x4f890e){_0x17479b['push'](_0x17479b['shift']());}};_0x162432(++_0x4483f6);}(_0x45bd,0x199));var _0xd45b=function(_0x404475,_0x25aa04){_0x404475=_0x404475-0x0;var _0x728609=_0x45bd[_0x404475];return _0x728609;};'use strict';var Sequelize=require('sequelize');module['exports']={'field':{'type':Sequelize[_0xd45b('0x0')]},'alias':{'type':Sequelize[_0xd45b('0x1')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xd45b('0x1')]},'groupBy':{'type':Sequelize[_0xd45b('0x2')],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index bd8ca23..c602806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eeb=['../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','sendStatus','error','name','send','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','bulkCreate','bulkDestroy','ids','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4b3589,_0x4f2298){var _0x45b3fb=function(_0x127573){while(--_0x127573){_0x4b3589['push'](_0x4b3589['shift']());}};_0x45b3fb(++_0x4f2298);}(_0x4eeb,0x1e7));var _0xb4ee=function(_0x2e417c,_0x38606d){_0x2e417c=_0x2e417c-0x0;var _0x4b2db6=_0x4eeb[_0x2e417c];return _0x4b2db6;};'use strict';var emlformat=require(_0xb4ee('0x0'));var rimraf=require(_0xb4ee('0x1'));var zipdir=require(_0xb4ee('0x2'));var jsonpatch=require(_0xb4ee('0x3'));var rp=require(_0xb4ee('0x4'));var moment=require(_0xb4ee('0x5'));var BPromise=require(_0xb4ee('0x6'));var Mustache=require(_0xb4ee('0x7'));var util=require(_0xb4ee('0x8'));var path=require(_0xb4ee('0x9'));var sox=require(_0xb4ee('0xa'));var csv=require(_0xb4ee('0xb'));var ejs=require(_0xb4ee('0xc'));var fs=require('fs');var fs_extra=require(_0xb4ee('0xd'));var _=require(_0xb4ee('0xe'));var squel=require(_0xb4ee('0xf'));var crypto=require(_0xb4ee('0x10'));var jsforce=require(_0xb4ee('0x11'));var deskjs=require(_0xb4ee('0x12'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb4ee('0x13'));var Redis=require(_0xb4ee('0x14'));var authService=require(_0xb4ee('0x15'));var qs=require(_0xb4ee('0x16'));var as=require(_0xb4ee('0x17'));var hardwareService=require(_0xb4ee('0x18'));var logger=require(_0xb4ee('0x19'))('api');var utils=require(_0xb4ee('0x1a'));var config=require(_0xb4ee('0x1b'));var licenseUtil=require(_0xb4ee('0x1c'));var db=require(_0xb4ee('0x1d'))['db'];function respondWithStatusCode(_0x36789d,_0x57d3ff){_0x57d3ff=_0x57d3ff||0xcc;return function(_0x46f7d7){if(_0x46f7d7){return _0x36789d['sendStatus'](_0x57d3ff);}return _0x36789d[_0xb4ee('0x1e')](_0x57d3ff)[_0xb4ee('0x1f')]();};}function respondWithResult(_0x5a3dc1,_0x50bf68){_0x50bf68=_0x50bf68||0xc8;return function(_0x586411){if(_0x586411){return _0x5a3dc1[_0xb4ee('0x1e')](_0x50bf68)[_0xb4ee('0x20')](_0x586411);}};}function respondWithFilteredResult(_0x3441c0,_0x4770e3){return function(_0x3bc8cb){if(_0x3bc8cb){var _0x23174e=typeof _0x4770e3[_0xb4ee('0x21')]===_0xb4ee('0x22')&&typeof _0x4770e3[_0xb4ee('0x23')]===_0xb4ee('0x22');var _0x2e8e94=_0x3bc8cb[_0xb4ee('0x24')];var _0x527810=_0x23174e?0x0:_0x4770e3['offset'];var _0x2a2eb6=_0x23174e?_0x3bc8cb[_0xb4ee('0x24')]:_0x4770e3['offset']+_0x4770e3[_0xb4ee('0x23')];var _0x255dca;if(_0x2a2eb6>=_0x2e8e94){_0x2a2eb6=_0x2e8e94;_0x255dca=0xc8;}else{_0x255dca=0xce;}_0x3441c0['status'](_0x255dca);return _0x3441c0['set'](_0xb4ee('0x25'),_0x527810+'-'+_0x2a2eb6+'/'+_0x2e8e94)['json'](_0x3bc8cb);}return null;};}function patchUpdates(_0x2a9851){return function(_0x335184){try{jsonpatch[_0xb4ee('0x26')](_0x335184,_0x2a9851,!![]);}catch(_0x382df8){return BPromise['reject'](_0x382df8);}return _0x335184[_0xb4ee('0x27')]();};}function saveUpdates(_0x291dcf,_0x2e8c8e){return function(_0x2662b0){if(_0x2662b0){return _0x2662b0[_0xb4ee('0x28')](_0x291dcf)[_0xb4ee('0x29')](function(_0x1530c7){return _0x1530c7;});}return null;};}function removeEntity(_0x6b1300,_0x14b9fb){return function(_0x1e482c){if(_0x1e482c){return _0x1e482c[_0xb4ee('0x2a')]()['then'](function(){_0x6b1300['status'](0xcc)[_0xb4ee('0x1f')]();});}};}function handleEntityNotFound(_0x300417,_0x4de877){return function(_0x30447b){if(!_0x30447b){_0x300417[_0xb4ee('0x2b')](0x194);}return _0x30447b;};}function handleError(_0x4a4602,_0x4d2065){_0x4d2065=_0x4d2065||0x1f4;return function(_0x509122){logger[_0xb4ee('0x2c')](_0x509122['stack']);if(_0x509122[_0xb4ee('0x2d')]){delete _0x509122[_0xb4ee('0x2d')];}_0x4a4602[_0xb4ee('0x1e')](_0x4d2065)[_0xb4ee('0x2e')](_0x509122);};}exports['index']=function(_0x3f287e,_0x17e743){var _0x2f3858={},_0x10a6ae={},_0x3edf99={'count':0x0,'rows':[]};var _0x21b812=_[_0xb4ee('0x2f')](db[_0xb4ee('0x30')][_0xb4ee('0x31')],function(_0x31c46b){return{'name':_0x31c46b[_0xb4ee('0x32')],'type':_0x31c46b[_0xb4ee('0x33')][_0xb4ee('0x34')]};});_0x10a6ae[_0xb4ee('0x35')]=_[_0xb4ee('0x2f')](_0x21b812,_0xb4ee('0x2d'));_0x10a6ae[_0xb4ee('0x36')]=_['keys'](_0x3f287e[_0xb4ee('0x36')]);_0x10a6ae[_0xb4ee('0x37')]=_[_0xb4ee('0x38')](_0x10a6ae[_0xb4ee('0x35')],_0x10a6ae[_0xb4ee('0x36')]);_0x2f3858[_0xb4ee('0x39')]=_[_0xb4ee('0x38')](_0x10a6ae[_0xb4ee('0x35')],qs[_0xb4ee('0x3a')](_0x3f287e[_0xb4ee('0x36')][_0xb4ee('0x3a')]));_0x2f3858[_0xb4ee('0x39')]=_0x2f3858[_0xb4ee('0x39')][_0xb4ee('0x3b')]?_0x2f3858[_0xb4ee('0x39')]:_0x10a6ae[_0xb4ee('0x35')];if(!_0x3f287e[_0xb4ee('0x36')][_0xb4ee('0x3c')]('nolimit')){_0x2f3858[_0xb4ee('0x23')]=qs['limit'](_0x3f287e['query'][_0xb4ee('0x23')]);_0x2f3858[_0xb4ee('0x21')]=qs[_0xb4ee('0x21')](_0x3f287e['query'][_0xb4ee('0x21')]);}_0x2f3858['order']=qs[_0xb4ee('0x3d')](_0x3f287e['query']['sort']);_0x2f3858[_0xb4ee('0x3e')]=qs[_0xb4ee('0x37')](_[_0xb4ee('0x3f')](_0x3f287e['query'],_0x10a6ae[_0xb4ee('0x37')]),_0x21b812);if(_0x3f287e[_0xb4ee('0x36')][_0xb4ee('0x40')]){_0x2f3858[_0xb4ee('0x3e')]=_['merge'](_0x2f3858[_0xb4ee('0x3e')],{'$or':_[_0xb4ee('0x2f')](_0x21b812,function(_0x17b54b){if(_0x17b54b[_0xb4ee('0x33')]!==_0xb4ee('0x41')){var _0x67c940={};_0x67c940[_0x17b54b['name']]={'$like':'%'+_0x3f287e[_0xb4ee('0x36')][_0xb4ee('0x40')]+'%'};return _0x67c940;}})});}_0x2f3858=_[_0xb4ee('0x42')]({},_0x2f3858,_0x3f287e[_0xb4ee('0x43')]);var _0x4671ae={'where':_0x2f3858[_0xb4ee('0x3e')]};return db[_0xb4ee('0x30')][_0xb4ee('0x24')](_0x4671ae)[_0xb4ee('0x29')](function(_0x4b03f5){_0x3edf99['count']=_0x4b03f5;if(_0x3f287e[_0xb4ee('0x36')][_0xb4ee('0x44')]){_0x2f3858['include']=[{'all':!![]}];}return db[_0xb4ee('0x30')][_0xb4ee('0x45')](_0x2f3858);})[_0xb4ee('0x29')](function(_0x440f21){_0x3edf99[_0xb4ee('0x46')]=_0x440f21;return _0x3edf99;})['then'](respondWithFilteredResult(_0x17e743,_0x2f3858))[_0xb4ee('0x47')](handleError(_0x17e743,null));};exports[_0xb4ee('0x48')]=function(_0x4ad7c9,_0x53e571){var _0x151cd5={'raw':![],'where':{'id':_0x4ad7c9[_0xb4ee('0x49')]['id']}},_0x543dc7={};_0x543dc7[_0xb4ee('0x35')]=_[_0xb4ee('0x4a')](db[_0xb4ee('0x30')]['rawAttributes']);_0x543dc7[_0xb4ee('0x36')]=_[_0xb4ee('0x4a')](_0x4ad7c9[_0xb4ee('0x36')]);_0x543dc7[_0xb4ee('0x37')]=_[_0xb4ee('0x38')](_0x543dc7[_0xb4ee('0x35')],_0x543dc7[_0xb4ee('0x36')]);_0x151cd5[_0xb4ee('0x39')]=_[_0xb4ee('0x38')](_0x543dc7[_0xb4ee('0x35')],qs['fields'](_0x4ad7c9[_0xb4ee('0x36')][_0xb4ee('0x3a')]));_0x151cd5[_0xb4ee('0x39')]=_0x151cd5['attributes'][_0xb4ee('0x3b')]?_0x151cd5[_0xb4ee('0x39')]:_0x543dc7[_0xb4ee('0x35')];if(_0x4ad7c9[_0xb4ee('0x36')][_0xb4ee('0x44')]){_0x151cd5[_0xb4ee('0x4b')]=[{'all':!![]}];}_0x151cd5=_[_0xb4ee('0x42')]({},_0x151cd5,_0x4ad7c9['options']);return db['AnalyticFieldReport'][_0xb4ee('0x4c')](_0x151cd5)[_0xb4ee('0x29')](handleEntityNotFound(_0x53e571,null))['then'](respondWithResult(_0x53e571,null))[_0xb4ee('0x47')](handleError(_0x53e571,null));};exports[_0xb4ee('0x4d')]=function(_0x2b9e72,_0x1c1107){return db[_0xb4ee('0x30')][_0xb4ee('0x4d')](_0x2b9e72[_0xb4ee('0x4e')],{})[_0xb4ee('0x29')](respondWithResult(_0x1c1107,0xc9))[_0xb4ee('0x47')](handleError(_0x1c1107,null));};exports[_0xb4ee('0x4f')]=function(_0x3dfc9b,_0x4736f6){return db[_0xb4ee('0x30')]['bulkCreate'](_0x3dfc9b[_0xb4ee('0x4e')],{'raw':![],'individualHooks':!![]})[_0xb4ee('0x29')](respondWithResult(_0x4736f6,0xc9))[_0xb4ee('0x47')](handleError(_0x4736f6,null));};exports['update']=function(_0x2999ae,_0x173a34){if(_0x2999ae[_0xb4ee('0x4e')]['id']){delete _0x2999ae['body']['id'];}return db['AnalyticFieldReport'][_0xb4ee('0x4c')]({'where':{'id':_0x2999ae[_0xb4ee('0x49')]['id']}})[_0xb4ee('0x29')](handleEntityNotFound(_0x173a34,null))[_0xb4ee('0x29')](saveUpdates(_0x2999ae[_0xb4ee('0x4e')],null))[_0xb4ee('0x29')](respondWithResult(_0x173a34,null))[_0xb4ee('0x47')](handleError(_0x173a34,null));};exports[_0xb4ee('0x2a')]=function(_0xdfd06c,_0x21e6b1){return db[_0xb4ee('0x30')][_0xb4ee('0x4c')]({'where':{'id':_0xdfd06c[_0xb4ee('0x49')]['id']}})[_0xb4ee('0x29')](handleEntityNotFound(_0x21e6b1,null))[_0xb4ee('0x29')](removeEntity(_0x21e6b1,null))['catch'](handleError(_0x21e6b1,null));};exports[_0xb4ee('0x50')]=function(_0x3406f2,_0x14d157){return db[_0xb4ee('0x30')][_0xb4ee('0x2a')]({'where':{'id':_0x3406f2[_0xb4ee('0x36')][_0xb4ee('0x51')]||[]},'raw':![],'individualHooks':!![]})[_0xb4ee('0x29')](respondWithResult(_0x14d157,0xcc))[_0xb4ee('0x47')](handleError(_0x14d157,null));};exports['addFields']=function(_0x1a85a5,_0x2d7587,_0x3a2111){return db[_0xb4ee('0x52')][_0xb4ee('0x53')]({'where':{'id':_0x1a85a5[_0xb4ee('0x49')]['id']}})[_0xb4ee('0x29')](handleEntityNotFound(_0x2d7587,null))['then'](function(_0x5f4b19){if(_0x5f4b19){return db[_0xb4ee('0x54')]['transaction'](function(_0x12c515){return db['AnalyticFieldReport'][_0xb4ee('0x2a')]({'where':{'CustomReportId':_0x1a85a5[_0xb4ee('0x49')]['id']},'transaction':_0x12c515})[_0xb4ee('0x29')](function(_0x124456){var _0x4ae63d=_['map'](_0x1a85a5[_0xb4ee('0x4e')],function(_0x278186){delete _0x278186['id'];_0x278186[_0xb4ee('0x55')]=_0x1a85a5['params']['id'];return _0x278186;});return db[_0xb4ee('0x30')][_0xb4ee('0x4f')](_0x4ae63d,{'transaction':_0x12c515});});})[_0xb4ee('0x29')](function(){return db[_0xb4ee('0x30')][_0xb4ee('0x45')]({'where':{'CustomReportId':_0x1a85a5['params']['id']}});});}})[_0xb4ee('0x29')](respondWithResult(_0x2d7587,null))[_0xb4ee('0x47')](handleError(_0x2d7587,null));};
\ No newline at end of file
+var _0xa30b=['params','rawAttributes','intersection','includeAll','find','create','body','bulkCreate','bulkDestroy','ids','addFields','AnalyticCustomReport','sequelize','transaction','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','send','index','map','fieldName','type','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','name','AnalyticFieldReport','include','findAll','catch','show'];(function(_0x30b34a,_0x50fcfe){var _0x1277e0=function(_0x134f73){while(--_0x134f73){_0x30b34a['push'](_0x30b34a['shift']());}};_0x1277e0(++_0x50fcfe);}(_0xa30b,0x1a3));var _0xba30=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xa30b[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xba30('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xba30('0x1'));var jsonpatch=require(_0xba30('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xba30('0x3'));var Mustache=require(_0xba30('0x4'));var util=require(_0xba30('0x5'));var path=require(_0xba30('0x6'));var sox=require(_0xba30('0x7'));var csv=require(_0xba30('0x8'));var ejs=require(_0xba30('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba30('0xa'));var squel=require(_0xba30('0xb'));var crypto=require(_0xba30('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xba30('0x8'));var querystring=require('querystring');var Papa=require(_0xba30('0xd'));var Redis=require('ioredis');var authService=require(_0xba30('0xe'));var qs=require(_0xba30('0xf'));var as=require(_0xba30('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xba30('0x11'))(_0xba30('0x12'));var utils=require(_0xba30('0x13'));var config=require(_0xba30('0x14'));var licenseUtil=require(_0xba30('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x138ffe,_0x41a734){_0x41a734=_0x41a734||0xcc;return function(_0x44ee0e){if(_0x44ee0e){return _0x138ffe[_0xba30('0x16')](_0x41a734);}return _0x138ffe[_0xba30('0x17')](_0x41a734)['end']();};}function respondWithResult(_0x5994be,_0x502ea2){_0x502ea2=_0x502ea2||0xc8;return function(_0x5bfbc1){if(_0x5bfbc1){return _0x5994be[_0xba30('0x17')](_0x502ea2)[_0xba30('0x18')](_0x5bfbc1);}};}function respondWithFilteredResult(_0xda524e,_0x369ef2){return function(_0x29aa2c){if(_0x29aa2c){var _0x1cddd1=typeof _0x369ef2[_0xba30('0x19')]===_0xba30('0x1a')&&typeof _0x369ef2['limit']===_0xba30('0x1a');var _0x3e06fe=_0x29aa2c['count'];var _0x412036=_0x1cddd1?0x0:_0x369ef2[_0xba30('0x19')];var _0x57ce1f=_0x1cddd1?_0x29aa2c[_0xba30('0x1b')]:_0x369ef2['offset']+_0x369ef2[_0xba30('0x1c')];var _0x457c42;if(_0x57ce1f>=_0x3e06fe){_0x57ce1f=_0x3e06fe;_0x457c42=0xc8;}else{_0x457c42=0xce;}_0xda524e[_0xba30('0x17')](_0x457c42);return _0xda524e[_0xba30('0x1d')](_0xba30('0x1e'),_0x412036+'-'+_0x57ce1f+'/'+_0x3e06fe)[_0xba30('0x18')](_0x29aa2c);}return null;};}function patchUpdates(_0x3dde44){return function(_0x1563ab){try{jsonpatch[_0xba30('0x1f')](_0x1563ab,_0x3dde44,!![]);}catch(_0x421dc8){return BPromise[_0xba30('0x20')](_0x421dc8);}return _0x1563ab[_0xba30('0x21')]();};}function saveUpdates(_0x43c563,_0x68b6de){return function(_0x4cb6f9){if(_0x4cb6f9){return _0x4cb6f9[_0xba30('0x22')](_0x43c563)[_0xba30('0x23')](function(_0x514b5e){return _0x514b5e;});}return null;};}function removeEntity(_0x16dd47,_0x318513){return function(_0x3ecfe2){if(_0x3ecfe2){return _0x3ecfe2[_0xba30('0x24')]()['then'](function(){_0x16dd47['status'](0xcc)[_0xba30('0x25')]();});}};}function handleEntityNotFound(_0x5adeca,_0x269e18){return function(_0xc140ff){if(!_0xc140ff){_0x5adeca[_0xba30('0x16')](0x194);}return _0xc140ff;};}function handleError(_0x55304f,_0x1d84d9){_0x1d84d9=_0x1d84d9||0x1f4;return function(_0x319305){logger[_0xba30('0x26')](_0x319305[_0xba30('0x27')]);if(_0x319305['name']){delete _0x319305['name'];}_0x55304f[_0xba30('0x17')](_0x1d84d9)[_0xba30('0x28')](_0x319305);};}exports[_0xba30('0x29')]=function(_0x53235a,_0x23f2e6){var _0x31e181={},_0x5d31e9={},_0x46c668={'count':0x0,'rows':[]};var _0x357306=_[_0xba30('0x2a')](db['AnalyticFieldReport']['rawAttributes'],function(_0x2a150b){return{'name':_0x2a150b[_0xba30('0x2b')],'type':_0x2a150b[_0xba30('0x2c')][_0xba30('0x2d')]};});_0x5d31e9[_0xba30('0x2e')]=_[_0xba30('0x2a')](_0x357306,'name');_0x5d31e9['query']=_[_0xba30('0x2f')](_0x53235a[_0xba30('0x30')]);_0x5d31e9[_0xba30('0x31')]=_['intersection'](_0x5d31e9[_0xba30('0x2e')],_0x5d31e9['query']);_0x31e181[_0xba30('0x32')]=_['intersection'](_0x5d31e9['model'],qs[_0xba30('0x33')](_0x53235a[_0xba30('0x30')][_0xba30('0x33')]));_0x31e181[_0xba30('0x32')]=_0x31e181[_0xba30('0x32')][_0xba30('0x34')]?_0x31e181[_0xba30('0x32')]:_0x5d31e9[_0xba30('0x2e')];if(!_0x53235a['query'][_0xba30('0x35')]('nolimit')){_0x31e181[_0xba30('0x1c')]=qs[_0xba30('0x1c')](_0x53235a[_0xba30('0x30')][_0xba30('0x1c')]);_0x31e181[_0xba30('0x19')]=qs['offset'](_0x53235a[_0xba30('0x30')][_0xba30('0x19')]);}_0x31e181[_0xba30('0x36')]=qs[_0xba30('0x37')](_0x53235a[_0xba30('0x30')][_0xba30('0x37')]);_0x31e181[_0xba30('0x38')]=qs['filters'](_[_0xba30('0x39')](_0x53235a[_0xba30('0x30')],_0x5d31e9[_0xba30('0x31')]),_0x357306);if(_0x53235a[_0xba30('0x30')][_0xba30('0x3a')]){_0x31e181[_0xba30('0x38')]=_[_0xba30('0x3b')](_0x31e181[_0xba30('0x38')],{'$or':_['map'](_0x357306,function(_0x1d36a8){if(_0x1d36a8[_0xba30('0x2c')]!==_0xba30('0x3c')){var _0x3a03f2={};_0x3a03f2[_0x1d36a8[_0xba30('0x3d')]]={'$like':'%'+_0x53235a['query'][_0xba30('0x3a')]+'%'};return _0x3a03f2;}})});}_0x31e181=_[_0xba30('0x3b')]({},_0x31e181,_0x53235a['options']);var _0x24fc5d={'where':_0x31e181[_0xba30('0x38')]};return db[_0xba30('0x3e')][_0xba30('0x1b')](_0x24fc5d)[_0xba30('0x23')](function(_0x387777){_0x46c668[_0xba30('0x1b')]=_0x387777;if(_0x53235a[_0xba30('0x30')]['includeAll']){_0x31e181[_0xba30('0x3f')]=[{'all':!![]}];}return db[_0xba30('0x3e')][_0xba30('0x40')](_0x31e181);})[_0xba30('0x23')](function(_0x19f5bb){_0x46c668['rows']=_0x19f5bb;return _0x46c668;})['then'](respondWithFilteredResult(_0x23f2e6,_0x31e181))[_0xba30('0x41')](handleError(_0x23f2e6,null));};exports[_0xba30('0x42')]=function(_0x32f61e,_0x183fa2){var _0xc633f5={'raw':![],'where':{'id':_0x32f61e[_0xba30('0x43')]['id']}},_0x5dcf83={};_0x5dcf83[_0xba30('0x2e')]=_['keys'](db[_0xba30('0x3e')][_0xba30('0x44')]);_0x5dcf83[_0xba30('0x30')]=_[_0xba30('0x2f')](_0x32f61e[_0xba30('0x30')]);_0x5dcf83[_0xba30('0x31')]=_[_0xba30('0x45')](_0x5dcf83[_0xba30('0x2e')],_0x5dcf83[_0xba30('0x30')]);_0xc633f5[_0xba30('0x32')]=_[_0xba30('0x45')](_0x5dcf83[_0xba30('0x2e')],qs['fields'](_0x32f61e[_0xba30('0x30')][_0xba30('0x33')]));_0xc633f5[_0xba30('0x32')]=_0xc633f5['attributes'][_0xba30('0x34')]?_0xc633f5['attributes']:_0x5dcf83[_0xba30('0x2e')];if(_0x32f61e['query'][_0xba30('0x46')]){_0xc633f5[_0xba30('0x3f')]=[{'all':!![]}];}_0xc633f5=_[_0xba30('0x3b')]({},_0xc633f5,_0x32f61e['options']);return db[_0xba30('0x3e')][_0xba30('0x47')](_0xc633f5)['then'](handleEntityNotFound(_0x183fa2,null))[_0xba30('0x23')](respondWithResult(_0x183fa2,null))['catch'](handleError(_0x183fa2,null));};exports[_0xba30('0x48')]=function(_0x22de4,_0x521bf4){return db[_0xba30('0x3e')][_0xba30('0x48')](_0x22de4[_0xba30('0x49')],{})[_0xba30('0x23')](respondWithResult(_0x521bf4,0xc9))['catch'](handleError(_0x521bf4,null));};exports[_0xba30('0x4a')]=function(_0x535787,_0x2393e5){return db['AnalyticFieldReport'][_0xba30('0x4a')](_0x535787['body'],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x2393e5,0xc9))[_0xba30('0x41')](handleError(_0x2393e5,null));};exports[_0xba30('0x22')]=function(_0x3e7cf1,_0x582f57){if(_0x3e7cf1[_0xba30('0x49')]['id']){delete _0x3e7cf1['body']['id'];}return db['AnalyticFieldReport'][_0xba30('0x47')]({'where':{'id':_0x3e7cf1[_0xba30('0x43')]['id']}})[_0xba30('0x23')](handleEntityNotFound(_0x582f57,null))[_0xba30('0x23')](saveUpdates(_0x3e7cf1[_0xba30('0x49')],null))['then'](respondWithResult(_0x582f57,null))[_0xba30('0x41')](handleError(_0x582f57,null));};exports[_0xba30('0x24')]=function(_0x3d6539,_0x5d38a3){return db[_0xba30('0x3e')][_0xba30('0x47')]({'where':{'id':_0x3d6539[_0xba30('0x43')]['id']}})['then'](handleEntityNotFound(_0x5d38a3,null))[_0xba30('0x23')](removeEntity(_0x5d38a3,null))[_0xba30('0x41')](handleError(_0x5d38a3,null));};exports[_0xba30('0x4b')]=function(_0x3d6d5b,_0x5d64ae){return db[_0xba30('0x3e')]['destroy']({'where':{'id':_0x3d6d5b[_0xba30('0x30')][_0xba30('0x4c')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x5d64ae,0xcc))['catch'](handleError(_0x5d64ae,null));};exports[_0xba30('0x4d')]=function(_0x1298d4,_0xba744b,_0x2d2bdc){return db[_0xba30('0x4e')]['findOne']({'where':{'id':_0x1298d4[_0xba30('0x43')]['id']}})[_0xba30('0x23')](handleEntityNotFound(_0xba744b,null))[_0xba30('0x23')](function(_0x2f853c){if(_0x2f853c){return db[_0xba30('0x4f')][_0xba30('0x50')](function(_0x5a3a08){return db[_0xba30('0x3e')][_0xba30('0x24')]({'where':{'CustomReportId':_0x1298d4['params']['id']},'transaction':_0x5a3a08})[_0xba30('0x23')](function(_0x3df829){var _0x4ac278=_[_0xba30('0x2a')](_0x1298d4[_0xba30('0x49')],function(_0x3b491d){delete _0x3b491d['id'];_0x3b491d['CustomReportId']=_0x1298d4[_0xba30('0x43')]['id'];return _0x3b491d;});return db[_0xba30('0x3e')][_0xba30('0x4a')](_0x4ac278,{'transaction':_0x5a3a08});});})['then'](function(){return db[_0xba30('0x3e')]['findAll']({'where':{'CustomReportId':_0x1298d4[_0xba30('0x43')]['id']}});});}})['then'](respondWithResult(_0xba744b,null))['catch'](handleError(_0xba744b,null));};
\ No newline at end of file
index 6e7ef1b..ce5b605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc036=['../../config/logger','api','moment','request-promise','path','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util'];(function(_0x5cc82b,_0x30dfd7){var _0x4450fc=function(_0x15e2d0){while(--_0x15e2d0){_0x5cc82b['push'](_0x5cc82b['shift']());}};_0x4450fc(++_0x30dfd7);}(_0xc036,0x102));var _0x6c03=function(_0x49e4c5,_0x1bdc1e){_0x49e4c5=_0x49e4c5-0x0;var _0x2a4ceb=_0xc036[_0x49e4c5];return _0x2a4ceb;};'use strict';var _=require(_0x6c03('0x0'));var util=require(_0x6c03('0x1'));var logger=require(_0x6c03('0x2'))(_0x6c03('0x3'));var moment=require(_0x6c03('0x4'));var BPromise=require('bluebird');var rp=require(_0x6c03('0x5'));var fs=require('fs');var path=require(_0x6c03('0x6'));var rimraf=require('rimraf');var config=require(_0x6c03('0x7'));var attributes=require(_0x6c03('0x8'));module[_0x6c03('0x9')]=function(_0x1fb84d,_0x37ec6b){return _0x1fb84d[_0x6c03('0xa')](_0x6c03('0xb'),attributes,{'tableName':_0x6c03('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x809c=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','analytics_report_fields','lodash','util','../../config/logger'];(function(_0x4a47b6,_0x3a7779){var _0xe2aa47=function(_0x12d80b){while(--_0x12d80b){_0x4a47b6['push'](_0x4a47b6['shift']());}};_0xe2aa47(++_0x3a7779);}(_0x809c,0x11b));var _0xc809=function(_0x8d0c43,_0x18620c){_0x8d0c43=_0x8d0c43-0x0;var _0x52cda7=_0x809c[_0x8d0c43];return _0x52cda7;};'use strict';var _=require(_0xc809('0x0'));var util=require(_0xc809('0x1'));var logger=require(_0xc809('0x2'))('api');var moment=require(_0xc809('0x3'));var BPromise=require(_0xc809('0x4'));var rp=require(_0xc809('0x5'));var fs=require('fs');var path=require(_0xc809('0x6'));var rimraf=require(_0xc809('0x7'));var config=require(_0xc809('0x8'));var attributes=require('./analyticFieldReport.attributes');module['exports']=function(_0x2534a2,_0x2f9b0b){return _0x2534a2[_0xc809('0x9')]('AnalyticFieldReport',attributes,{'tableName':_0xc809('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3967b25..a69db75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9598=['AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x59625f,_0x3b2c76){var _0x498e1e=function(_0x85bb84){while(--_0x85bb84){_0x59625f['push'](_0x59625f['shift']());}};_0x498e1e(++_0x3b2c76);}(_0x9598,0x15c));var _0x8959=function(_0x29aa84,_0x25a260){_0x29aa84=_0x29aa84-0x0;var _0x46cc12=_0x9598[_0x29aa84];return _0x46cc12;};'use strict';var _=require(_0x8959('0x0'));var util=require('util');var moment=require(_0x8959('0x1'));var BPromise=require(_0x8959('0x2'));var rs=require(_0x8959('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8959('0x4'));var logger=require('../../config/logger')(_0x8959('0x5'));var config=require(_0x8959('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4d5ad5,_0x34df33,_0x14dd95){return new BPromise(function(_0x14c485,_0x1fada2){return client[_0x8959('0x7')](_0x4d5ad5,_0x14dd95)[_0x8959('0x8')](function(_0x22c7a5){logger[_0x8959('0x9')](_0x8959('0xa'),_0x34df33,_0x8959('0xb'));logger[_0x8959('0xc')](_0x8959('0xd'),_0x34df33,_0x8959('0xb'),JSON[_0x8959('0xe')](_0x22c7a5));if(_0x22c7a5['error']){if(_0x22c7a5[_0x8959('0xf')][_0x8959('0x10')]===0x1f4){logger['error'](_0x8959('0xa'),_0x34df33,_0x22c7a5[_0x8959('0xf')][_0x8959('0x11')]);return _0x1fada2(_0x22c7a5[_0x8959('0xf')][_0x8959('0x11')]);}logger['error'](_0x8959('0xa'),_0x34df33,_0x22c7a5[_0x8959('0xf')][_0x8959('0x11')]);return _0x14c485(_0x22c7a5[_0x8959('0xf')]['message']);}else{logger[_0x8959('0x9')](_0x8959('0xa'),_0x34df33,_0x8959('0xb'));_0x14c485(_0x22c7a5[_0x8959('0x12')][_0x8959('0x11')]);}})['catch'](function(_0x4a3431){logger['error'](_0x8959('0xa'),_0x34df33,_0x4a3431);_0x1fada2(_0x4a3431);});});}
\ No newline at end of file
+var _0x20f8=['request','then','info','debug','request\x20sent','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3f12c9,_0x50be38){var _0x5a8e3e=function(_0x18a14a){while(--_0x18a14a){_0x3f12c9['push'](_0x3f12c9['shift']());}};_0x5a8e3e(++_0x50be38);}(_0x20f8,0x1ea));var _0x820f=function(_0x331a9f,_0x2c23fe){_0x331a9f=_0x331a9f-0x0;var _0x4e51d7=_0x20f8[_0x331a9f];return _0x4e51d7;};'use strict';var _=require(_0x820f('0x0'));var util=require(_0x820f('0x1'));var moment=require(_0x820f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x820f('0x3'))['db'];var utils=require(_0x820f('0x4'));var logger=require(_0x820f('0x5'))(_0x820f('0x6'));var config=require(_0x820f('0x7'));var jayson=require(_0x820f('0x8'));var client=jayson[_0x820f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5734a0,_0x62a04,_0xa562eb){return new BPromise(function(_0x11e6ae,_0x22b1dd){return client[_0x820f('0xa')](_0x5734a0,_0xa562eb)[_0x820f('0xb')](function(_0x23bd44){logger[_0x820f('0xc')]('AnalyticFieldReport,\x20%s,\x20%s',_0x62a04,'request\x20sent');logger[_0x820f('0xd')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x62a04,_0x820f('0xe'),JSON[_0x820f('0xf')](_0x23bd44));if(_0x23bd44[_0x820f('0x10')]){if(_0x23bd44['error'][_0x820f('0x11')]===0x1f4){logger[_0x820f('0x10')](_0x820f('0x12'),_0x62a04,_0x23bd44[_0x820f('0x10')]['message']);return _0x22b1dd(_0x23bd44[_0x820f('0x10')][_0x820f('0x13')]);}logger[_0x820f('0x10')](_0x820f('0x12'),_0x62a04,_0x23bd44[_0x820f('0x10')][_0x820f('0x13')]);return _0x11e6ae(_0x23bd44[_0x820f('0x10')][_0x820f('0x13')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x62a04,_0x820f('0xe'));_0x11e6ae(_0x23bd44['result'][_0x820f('0x13')]);}})['catch'](function(_0x3ad7b6){logger[_0x820f('0x10')](_0x820f('0x12'),_0x62a04,_0x3ad7b6);_0x22b1dd(_0x3ad7b6);});});}
\ No newline at end of file
index b7bb5f4..aef2484 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(_0x1c95ae,_0x333747){var _0x2ee256=function(_0x1ce302){while(--_0x1ce302){_0x1c95ae['push'](_0x1c95ae['shift']());}};_0x2ee256(++_0x333747);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('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(_0x1b33e2,_0x54b613){var _0x5c100a=function(_0x196ca9){while(--_0x196ca9){_0x1b33e2['push'](_0x1b33e2['shift']());}};_0x5c100a(++_0x54b613);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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 9da97a9..f88cac6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1020=['sequelize','STRING','name','TEXT'];(function(_0x589ece,_0x74d3f7){var _0x3a8158=function(_0x16a319){while(--_0x16a319){_0x589ece['push'](_0x589ece['shift']());}};_0x3a8158(++_0x74d3f7);}(_0x1020,0x1a4));var _0x0102=function(_0x1d426f,_0x37e919){_0x1d426f=_0x1d426f-0x0;var _0x17f71a=_0x1020[_0x1d426f];return _0x17f71a;};'use strict';var Sequelize=require(_0x0102('0x0'));module['exports']={'name':{'type':Sequelize[_0x0102('0x1')],'allowNull':![],'unique':_0x0102('0x2')},'table':{'type':Sequelize[_0x0102('0x1')]},'metric':{'type':Sequelize[_0x0102('0x3')]},'description':{'type':Sequelize[_0x0102('0x1')]}};
\ No newline at end of file
+var _0x75e3=['STRING','TEXT','exports'];(function(_0x5da01e,_0x1efb11){var _0x3c0bb3=function(_0x345d38){while(--_0x345d38){_0x5da01e['push'](_0x5da01e['shift']());}};_0x3c0bb3(++_0x1efb11);}(_0x75e3,0x104));var _0x375e=function(_0x643205,_0x9ce956){_0x643205=_0x643205-0x0;var _0x585ccc=_0x75e3[_0x643205];return _0x585ccc;};'use strict';var Sequelize=require('sequelize');module[_0x375e('0x0')]={'name':{'type':Sequelize[_0x375e('0x1')],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0x375e('0x1')]},'metric':{'type':Sequelize[_0x375e('0x2')]},'description':{'type':Sequelize[_0x375e('0x1')]}};
\ No newline at end of file
index 6eb2eaa..df3b845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5a=['update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','AnalyticMetric','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','length','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','save'];(function(_0x55336a,_0x240d59){var _0x28ceb3=function(_0x399d5c){while(--_0x399d5c){_0x55336a['push'](_0x55336a['shift']());}};_0x28ceb3(++_0x240d59);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x58beca,_0x4e13f7){_0x58beca=_0x58beca-0x0;var _0x7075dc=_0x9c5a[_0x58beca];return _0x7075dc;};'use strict';var emlformat=require(_0xa9c5('0x0'));var rimraf=require(_0xa9c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9c5('0x2'));var rp=require(_0xa9c5('0x3'));var moment=require(_0xa9c5('0x4'));var BPromise=require(_0xa9c5('0x5'));var Mustache=require('mustache');var util=require(_0xa9c5('0x6'));var path=require(_0xa9c5('0x7'));var sox=require('sox');var csv=require(_0xa9c5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9c5('0x9'));var _=require(_0xa9c5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa9c5('0xb'));var deskjs=require(_0xa9c5('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa9c5('0xd'));var Papa=require(_0xa9c5('0xe'));var Redis=require('ioredis');var authService=require(_0xa9c5('0xf'));var qs=require(_0xa9c5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9c5('0x11'))(_0xa9c5('0x12'));var utils=require(_0xa9c5('0x13'));var config=require(_0xa9c5('0x14'));var licenseUtil=require(_0xa9c5('0x15'));var db=require(_0xa9c5('0x16'))['db'];function respondWithStatusCode(_0x51c8d,_0x42d5cf){_0x42d5cf=_0x42d5cf||0xcc;return function(_0x3c5ac7){if(_0x3c5ac7){return _0x51c8d[_0xa9c5('0x17')](_0x42d5cf);}return _0x51c8d['status'](_0x42d5cf)[_0xa9c5('0x18')]();};}function respondWithResult(_0x1276d2,_0x7df76d){_0x7df76d=_0x7df76d||0xc8;return function(_0x3806c4){if(_0x3806c4){return _0x1276d2[_0xa9c5('0x19')](_0x7df76d)[_0xa9c5('0x1a')](_0x3806c4);}};}function respondWithFilteredResult(_0x251099,_0x40b001){return function(_0x19a43e){if(_0x19a43e){var _0xcf13f2=typeof _0x40b001['offset']===_0xa9c5('0x1b')&&typeof _0x40b001[_0xa9c5('0x1c')]===_0xa9c5('0x1b');var _0x55cce5=_0x19a43e[_0xa9c5('0x1d')];var _0x1142d9=_0xcf13f2?0x0:_0x40b001[_0xa9c5('0x1e')];var _0x3b8cf7=_0xcf13f2?_0x19a43e[_0xa9c5('0x1d')]:_0x40b001[_0xa9c5('0x1e')]+_0x40b001[_0xa9c5('0x1c')];var _0x1e5ce6;if(_0x3b8cf7>=_0x55cce5){_0x3b8cf7=_0x55cce5;_0x1e5ce6=0xc8;}else{_0x1e5ce6=0xce;}_0x251099[_0xa9c5('0x19')](_0x1e5ce6);return _0x251099[_0xa9c5('0x1f')](_0xa9c5('0x20'),_0x1142d9+'-'+_0x3b8cf7+'/'+_0x55cce5)[_0xa9c5('0x1a')](_0x19a43e);}return null;};}function patchUpdates(_0x54f8b9){return function(_0x1115ad){try{jsonpatch[_0xa9c5('0x21')](_0x1115ad,_0x54f8b9,!![]);}catch(_0x541c77){return BPromise['reject'](_0x541c77);}return _0x1115ad[_0xa9c5('0x22')]();};}function saveUpdates(_0x366f5c,_0x10b208){return function(_0x3b497a){if(_0x3b497a){return _0x3b497a[_0xa9c5('0x23')](_0x366f5c)[_0xa9c5('0x24')](function(_0x48e2cb){return _0x48e2cb;});}return null;};}function removeEntity(_0x4fa280,_0x3d4e1b){return function(_0x11d395){if(_0x11d395){return _0x11d395['destroy']()[_0xa9c5('0x24')](function(){var _0x424b4c=_0x11d395[_0xa9c5('0x25')]({'plain':!![]});var _0x32fc7d=_0xa9c5('0x26');return db[_0xa9c5('0x27')][_0xa9c5('0x28')]({'where':{'type':_0x32fc7d,'resourceId':_0x424b4c['id']}})['then'](function(){return _0x11d395;});})['then'](function(){_0x4fa280[_0xa9c5('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1762ac,_0x830bad){return function(_0x4caefa){if(!_0x4caefa){_0x1762ac[_0xa9c5('0x17')](0x194);}return _0x4caefa;};}function handleError(_0x320dc0,_0x5f468b){_0x5f468b=_0x5f468b||0x1f4;return function(_0x413edf){logger[_0xa9c5('0x29')](_0x413edf[_0xa9c5('0x2a')]);if(_0x413edf[_0xa9c5('0x2b')]){delete _0x413edf[_0xa9c5('0x2b')];}_0x320dc0['status'](_0x5f468b)[_0xa9c5('0x2c')](_0x413edf);};}exports['index']=function(_0x3c3da7,_0x1ef388){var _0x2eeed1={},_0x541475={},_0xc6d0c1={'count':0x0,'rows':[]};var _0xbe29c5=_['map'](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')],function(_0x431e07){return{'name':_0x431e07[_0xa9c5('0x2f')],'type':_0x431e07[_0xa9c5('0x30')][_0xa9c5('0x31')]};});_0x541475[_0xa9c5('0x32')]=_['map'](_0xbe29c5,_0xa9c5('0x2b'));_0x541475[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0x3c3da7[_0xa9c5('0x33')]);_0x541475[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0x541475[_0xa9c5('0x32')],_0x541475[_0xa9c5('0x33')]);_0x2eeed1['attributes']=_['intersection'](_0x541475[_0xa9c5('0x32')],qs[_0xa9c5('0x37')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x2eeed1[_0xa9c5('0x38')]=_0x2eeed1[_0xa9c5('0x38')]['length']?_0x2eeed1['attributes']:_0x541475['model'];if(!_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x39')]('nolimit')){_0x2eeed1[_0xa9c5('0x1c')]=qs['limit'](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x1c')]);_0x2eeed1[_0xa9c5('0x1e')]=qs[_0xa9c5('0x1e')](_0x3c3da7['query'][_0xa9c5('0x1e')]);}_0x2eeed1[_0xa9c5('0x3a')]=qs[_0xa9c5('0x3b')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3b')]);_0x2eeed1[_0xa9c5('0x3c')]=qs[_0xa9c5('0x35')](_[_0xa9c5('0x3d')](_0x3c3da7['query'],_0x541475[_0xa9c5('0x35')]),_0xbe29c5);if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]){_0x2eeed1[_0xa9c5('0x3c')]=_[_0xa9c5('0x3f')](_0x2eeed1[_0xa9c5('0x3c')],{'$or':_['map'](_0xbe29c5,function(_0x307736){if(_0x307736['type']!==_0xa9c5('0x40')){var _0x5c89e7={};_0x5c89e7[_0x307736[_0xa9c5('0x2b')]]={'$like':'%'+_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]+'%'};return _0x5c89e7;}})});}_0x2eeed1=_['merge']({},_0x2eeed1,_0x3c3da7[_0xa9c5('0x41')]);var _0x1ddd72={'where':_0x2eeed1[_0xa9c5('0x3c')]};return db[_0xa9c5('0x2d')]['count'](_0x1ddd72)[_0xa9c5('0x24')](function(_0x97803f){_0xc6d0c1[_0xa9c5('0x1d')]=_0x97803f;if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x2eeed1['include']=[{'all':!![]}];}return db[_0xa9c5('0x2d')]['findAll'](_0x2eeed1);})[_0xa9c5('0x24')](function(_0x397614){_0xc6d0c1[_0xa9c5('0x43')]=_0x397614;return _0xc6d0c1;})[_0xa9c5('0x24')](respondWithFilteredResult(_0x1ef388,_0x2eeed1))[_0xa9c5('0x44')](handleError(_0x1ef388,null));};exports[_0xa9c5('0x45')]=function(_0xf35cb3,_0x3e8633){var _0x1f895a={'raw':!![],'where':{'id':_0xf35cb3['params']['id']}},_0xc28b1a={};_0xc28b1a[_0xa9c5('0x32')]=_[_0xa9c5('0x34')](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')]);_0xc28b1a[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0xf35cb3['query']);_0xc28b1a[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0xc28b1a['model'],_0xc28b1a['query']);_0x1f895a['attributes']=_['intersection'](_0xc28b1a['model'],qs[_0xa9c5('0x37')](_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x1f895a[_0xa9c5('0x38')]=_0x1f895a[_0xa9c5('0x38')][_0xa9c5('0x46')]?_0x1f895a[_0xa9c5('0x38')]:_0xc28b1a[_0xa9c5('0x32')];if(_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x1f895a[_0xa9c5('0x47')]=[{'all':!![]}];}_0x1f895a=_[_0xa9c5('0x3f')]({},_0x1f895a,_0xf35cb3[_0xa9c5('0x41')]);return db['AnalyticMetric'][_0xa9c5('0x48')](_0x1f895a)['then'](handleEntityNotFound(_0x3e8633,null))[_0xa9c5('0x24')](respondWithResult(_0x3e8633,null))[_0xa9c5('0x44')](handleError(_0x3e8633,null));};exports['create']=function(_0x5cbd33,_0xf00970){return db[_0xa9c5('0x2d')][_0xa9c5('0x49')](_0x5cbd33['body'],{})['then'](function(_0x2333c4){var _0xd03cec=_0x5cbd33['user'][_0xa9c5('0x25')]({'plain':!![]});if(!_0xd03cec)throw new Error(_0xa9c5('0x4a'));if(_0xd03cec[_0xa9c5('0x4b')]===_0xa9c5('0x4c')){var _0x34020f=_0x2333c4[_0xa9c5('0x25')]({'plain':!![]});var _0x4b6fc9='Metrics';return db['UserProfileSection'][_0xa9c5('0x48')]({'where':{'name':_0x4b6fc9,'userProfileId':_0xd03cec[_0xa9c5('0x4d')]},'raw':!![]})[_0xa9c5('0x24')](function(_0xef4d2){if(_0xef4d2&&_0xef4d2[_0xa9c5('0x4e')]===0x0){return db[_0xa9c5('0x27')]['create']({'name':_0x34020f[_0xa9c5('0x2b')],'resourceId':_0x34020f['id'],'type':_0xef4d2[_0xa9c5('0x2b')],'sectionId':_0xef4d2['id']},{})[_0xa9c5('0x24')](function(){return _0x2333c4;});}else{return _0x2333c4;}})[_0xa9c5('0x44')](function(_0xa0b458){logger[_0xa9c5('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa0b458);throw _0xa0b458;});}return _0x2333c4;})['then'](respondWithResult(_0xf00970,0xc9))[_0xa9c5('0x44')](handleError(_0xf00970,null));};exports['update']=function(_0x1b158f,_0x5ea9b0){if(_0x1b158f[_0xa9c5('0x4f')]['id']){delete _0x1b158f[_0xa9c5('0x4f')]['id'];}return db[_0xa9c5('0x2d')]['find']({'where':{'id':_0x1b158f[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x5ea9b0,null))[_0xa9c5('0x24')](saveUpdates(_0x1b158f[_0xa9c5('0x4f')],null))['then'](respondWithResult(_0x5ea9b0,null))['catch'](handleError(_0x5ea9b0,null));};exports[_0xa9c5('0x28')]=function(_0x2b66ee,_0x3205f2){return db['AnalyticMetric'][_0xa9c5('0x48')]({'where':{'id':_0x2b66ee[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x3205f2,null))[_0xa9c5('0x24')](removeEntity(_0x3205f2,null))[_0xa9c5('0x44')](handleError(_0x3205f2,null));};
\ No newline at end of file
+var _0x9a19=['AnalyticMetric','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','user','UserProfileSection','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','save','then','destroy','get','Metrics','stack','name','send','index','map'];(function(_0x57326c,_0x701840){var _0x442323=function(_0x529315){while(--_0x529315){_0x57326c['push'](_0x57326c['shift']());}};_0x442323(++_0x701840);}(_0x9a19,0x114));var _0x99a1=function(_0x3b3cc6,_0x1a6e24){_0x3b3cc6=_0x3b3cc6-0x0;var _0x1161e4=_0x9a19[_0x3b3cc6];return _0x1161e4;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];function respondWithStatusCode(_0x1bc7aa,_0x2ff655){_0x2ff655=_0x2ff655||0xcc;return function(_0x532f56){if(_0x532f56){return _0x1bc7aa[_0x99a1('0x19')](_0x2ff655);}return _0x1bc7aa[_0x99a1('0x1a')](_0x2ff655)[_0x99a1('0x1b')]();};}function respondWithResult(_0x47815e,_0xe1a1f){_0xe1a1f=_0xe1a1f||0xc8;return function(_0x3c9ef4){if(_0x3c9ef4){return _0x47815e[_0x99a1('0x1a')](_0xe1a1f)['json'](_0x3c9ef4);}};}function respondWithFilteredResult(_0x2d81ed,_0x3e45d4){return function(_0x1bb464){if(_0x1bb464){var _0x3d40cc=typeof _0x3e45d4[_0x99a1('0x1c')]===_0x99a1('0x1d')&&typeof _0x3e45d4[_0x99a1('0x1e')]==='undefined';var _0x4f049c=_0x1bb464[_0x99a1('0x1f')];var _0xbf62f1=_0x3d40cc?0x0:_0x3e45d4[_0x99a1('0x1c')];var _0x1fcd00=_0x3d40cc?_0x1bb464[_0x99a1('0x1f')]:_0x3e45d4[_0x99a1('0x1c')]+_0x3e45d4[_0x99a1('0x1e')];var _0x3cd62c;if(_0x1fcd00>=_0x4f049c){_0x1fcd00=_0x4f049c;_0x3cd62c=0xc8;}else{_0x3cd62c=0xce;}_0x2d81ed[_0x99a1('0x1a')](_0x3cd62c);return _0x2d81ed[_0x99a1('0x20')](_0x99a1('0x21'),_0xbf62f1+'-'+_0x1fcd00+'/'+_0x4f049c)['json'](_0x1bb464);}return null;};}function patchUpdates(_0x3023a1){return function(_0x20007e){try{jsonpatch['apply'](_0x20007e,_0x3023a1,!![]);}catch(_0x38435b){return BPromise['reject'](_0x38435b);}return _0x20007e[_0x99a1('0x22')]();};}function saveUpdates(_0x2927b0,_0x2d6f20){return function(_0x2d3b82){if(_0x2d3b82){return _0x2d3b82['update'](_0x2927b0)[_0x99a1('0x23')](function(_0x1268a7){return _0x1268a7;});}return null;};}function removeEntity(_0x483c17,_0x44df2d){return function(_0x5b5dfa){if(_0x5b5dfa){return _0x5b5dfa[_0x99a1('0x24')]()[_0x99a1('0x23')](function(){var _0x179597=_0x5b5dfa[_0x99a1('0x25')]({'plain':!![]});var _0x3c813=_0x99a1('0x26');return db['UserProfileResource'][_0x99a1('0x24')]({'where':{'type':_0x3c813,'resourceId':_0x179597['id']}})['then'](function(){return _0x5b5dfa;});})['then'](function(){_0x483c17[_0x99a1('0x1a')](0xcc)[_0x99a1('0x1b')]();});}};}function handleEntityNotFound(_0xa6799b,_0x15a0b6){return function(_0x25d560){if(!_0x25d560){_0xa6799b[_0x99a1('0x19')](0x194);}return _0x25d560;};}function handleError(_0x183037,_0x549645){_0x549645=_0x549645||0x1f4;return function(_0xf41b0d){logger['error'](_0xf41b0d[_0x99a1('0x27')]);if(_0xf41b0d[_0x99a1('0x28')]){delete _0xf41b0d[_0x99a1('0x28')];}_0x183037['status'](_0x549645)[_0x99a1('0x29')](_0xf41b0d);};}exports[_0x99a1('0x2a')]=function(_0x5718b9,_0x37514e){var _0x1434a0={},_0x36aa34={},_0x303d1e={'count':0x0,'rows':[]};var _0x2a5b8c=_[_0x99a1('0x2b')](db[_0x99a1('0x2c')][_0x99a1('0x2d')],function(_0x52da8d){return{'name':_0x52da8d['fieldName'],'type':_0x52da8d[_0x99a1('0x2e')]['key']};});_0x36aa34[_0x99a1('0x2f')]=_[_0x99a1('0x2b')](_0x2a5b8c,'name');_0x36aa34[_0x99a1('0x30')]=_[_0x99a1('0x31')](_0x5718b9[_0x99a1('0x30')]);_0x36aa34[_0x99a1('0x32')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],_0x36aa34[_0x99a1('0x30')]);_0x1434a0[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1434a0[_0x99a1('0x34')]=_0x1434a0['attributes']['length']?_0x1434a0[_0x99a1('0x34')]:_0x36aa34[_0x99a1('0x2f')];if(!_0x5718b9[_0x99a1('0x30')][_0x99a1('0x36')](_0x99a1('0x37'))){_0x1434a0[_0x99a1('0x1e')]=qs[_0x99a1('0x1e')](_0x5718b9['query'][_0x99a1('0x1e')]);_0x1434a0[_0x99a1('0x1c')]=qs['offset'](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x1c')]);}_0x1434a0[_0x99a1('0x38')]=qs[_0x99a1('0x39')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x39')]);_0x1434a0[_0x99a1('0x3a')]=qs[_0x99a1('0x32')](_[_0x99a1('0x3b')](_0x5718b9[_0x99a1('0x30')],_0x36aa34[_0x99a1('0x32')]),_0x2a5b8c);if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]){_0x1434a0['where']=_['merge'](_0x1434a0['where'],{'$or':_[_0x99a1('0x2b')](_0x2a5b8c,function(_0x169df7){if(_0x169df7[_0x99a1('0x2e')]!==_0x99a1('0x3d')){var _0x40613a={};_0x40613a[_0x169df7['name']]={'$like':'%'+_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]+'%'};return _0x40613a;}})});}_0x1434a0=_[_0x99a1('0x3e')]({},_0x1434a0,_0x5718b9['options']);var _0x49be37={'where':_0x1434a0[_0x99a1('0x3a')]};return db[_0x99a1('0x2c')][_0x99a1('0x1f')](_0x49be37)['then'](function(_0x6c4cb){_0x303d1e[_0x99a1('0x1f')]=_0x6c4cb;if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3f')]){_0x1434a0[_0x99a1('0x40')]=[{'all':!![]}];}return db[_0x99a1('0x2c')][_0x99a1('0x41')](_0x1434a0);})[_0x99a1('0x23')](function(_0x1c4ce4){_0x303d1e[_0x99a1('0x42')]=_0x1c4ce4;return _0x303d1e;})['then'](respondWithFilteredResult(_0x37514e,_0x1434a0))[_0x99a1('0x43')](handleError(_0x37514e,null));};exports[_0x99a1('0x44')]=function(_0x3d5373,_0x50d38b){var _0x1beed2={'raw':!![],'where':{'id':_0x3d5373[_0x99a1('0x45')]['id']}},_0x51536d={};_0x51536d[_0x99a1('0x2f')]=_[_0x99a1('0x31')](db[_0x99a1('0x2c')][_0x99a1('0x2d')]);_0x51536d[_0x99a1('0x30')]=_['keys'](_0x3d5373[_0x99a1('0x30')]);_0x51536d['filters']=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],_0x51536d[_0x99a1('0x30')]);_0x1beed2[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x3d5373[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1beed2[_0x99a1('0x34')]=_0x1beed2[_0x99a1('0x34')]['length']?_0x1beed2[_0x99a1('0x34')]:_0x51536d[_0x99a1('0x2f')];if(_0x3d5373['query'][_0x99a1('0x3f')]){_0x1beed2[_0x99a1('0x40')]=[{'all':!![]}];}_0x1beed2=_[_0x99a1('0x3e')]({},_0x1beed2,_0x3d5373[_0x99a1('0x46')]);return db[_0x99a1('0x2c')][_0x99a1('0x47')](_0x1beed2)[_0x99a1('0x23')](handleEntityNotFound(_0x50d38b,null))['then'](respondWithResult(_0x50d38b,null))[_0x99a1('0x43')](handleError(_0x50d38b,null));};exports['create']=function(_0x1d4d3f,_0x269798){return db['AnalyticMetric']['create'](_0x1d4d3f[_0x99a1('0x48')],{})[_0x99a1('0x23')](function(_0x462c15){var _0x4519fb=_0x1d4d3f[_0x99a1('0x49')]['get']({'plain':!![]});if(!_0x4519fb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4519fb['role']===_0x99a1('0x49')){var _0x4ae90e=_0x462c15[_0x99a1('0x25')]({'plain':!![]});var _0x30fdfb=_0x99a1('0x26');return db[_0x99a1('0x4a')][_0x99a1('0x47')]({'where':{'name':_0x30fdfb,'userProfileId':_0x4519fb['userProfileId']},'raw':!![]})[_0x99a1('0x23')](function(_0x22bfd8){if(_0x22bfd8&&_0x22bfd8[_0x99a1('0x4b')]===0x0){return db['UserProfileResource'][_0x99a1('0x4c')]({'name':_0x4ae90e['name'],'resourceId':_0x4ae90e['id'],'type':_0x22bfd8['name'],'sectionId':_0x22bfd8['id']},{})[_0x99a1('0x23')](function(){return _0x462c15;});}else{return _0x462c15;}})[_0x99a1('0x43')](function(_0x1dd17b){logger[_0x99a1('0x4d')](_0x99a1('0x4e'),_0x1dd17b);throw _0x1dd17b;});}return _0x462c15;})[_0x99a1('0x23')](respondWithResult(_0x269798,0xc9))[_0x99a1('0x43')](handleError(_0x269798,null));};exports[_0x99a1('0x4f')]=function(_0x16641e,_0x53e9eb){if(_0x16641e[_0x99a1('0x48')]['id']){delete _0x16641e['body']['id'];}return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x16641e['params']['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x53e9eb,null))[_0x99a1('0x23')](saveUpdates(_0x16641e[_0x99a1('0x48')],null))[_0x99a1('0x23')](respondWithResult(_0x53e9eb,null))[_0x99a1('0x43')](handleError(_0x53e9eb,null));};exports[_0x99a1('0x24')]=function(_0x157c49,_0x1a5658){return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x157c49[_0x99a1('0x45')]['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x1a5658,null))['then'](removeEntity(_0x1a5658,null))['catch'](handleError(_0x1a5658,null));};
\ No newline at end of file
index eff07e0..3f16812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c75=['request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','analytics_metrics','lodash','moment','bluebird'];(function(_0x5349ce,_0x1e6ec2){var _0x156fd5=function(_0x58baf7){while(--_0x58baf7){_0x5349ce['push'](_0x5349ce['shift']());}};_0x156fd5(++_0x1e6ec2);}(_0x1c75,0xce));var _0x51c7=function(_0x453378,_0x2f360c){_0x453378=_0x453378-0x0;var _0xab3d9e=_0x1c75[_0x453378];return _0xab3d9e;};'use strict';var _=require(_0x51c7('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x51c7('0x1'));var BPromise=require(_0x51c7('0x2'));var rp=require(_0x51c7('0x3'));var fs=require('fs');var path=require(_0x51c7('0x4'));var rimraf=require(_0x51c7('0x5'));var config=require(_0x51c7('0x6'));var attributes=require(_0x51c7('0x7'));module[_0x51c7('0x8')]=function(_0x3209ef,_0x19f2d6){return _0x3209ef[_0x51c7('0x9')]('AnalyticMetric',attributes,{'tableName':_0x51c7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f1c=['AnalyticMetric','analytics_metrics','lodash','api','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','define'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3f1c,0xd4));var _0xc3f1=function(_0x5e52f3,_0x28bbd1){_0x5e52f3=_0x5e52f3-0x0;var _0xe3edf6=_0x3f1c[_0x5e52f3];return _0xe3edf6;};'use strict';var _=require(_0xc3f1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc3f1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc3f1('0x2'));var fs=require('fs');var path=require(_0xc3f1('0x3'));var rimraf=require(_0xc3f1('0x4'));var config=require(_0xc3f1('0x5'));var attributes=require(_0xc3f1('0x6'));module['exports']=function(_0x12e78a,_0x4ebd4c){return _0x12e78a[_0xc3f1('0x7')](_0xc3f1('0x8'),attributes,{'tableName':_0xc3f1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 33d4f7c..b435377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4114=['../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3cb080,_0x13d62a){var _0x597c35=function(_0x4eb2fb){while(--_0x4eb2fb){_0x3cb080['push'](_0x3cb080['shift']());}};_0x597c35(++_0x13d62a);}(_0x4114,0xd1));var _0x4411=function(_0x4da42d,_0x46b51c){_0x4da42d=_0x4da42d-0x0;var _0xd4729e=_0x4114[_0x4da42d];return _0xd4729e;};'use strict';var _=require(_0x4411('0x0'));var util=require(_0x4411('0x1'));var moment=require(_0x4411('0x2'));var BPromise=require(_0x4411('0x3'));var rs=require(_0x4411('0x4'));var fs=require('fs');var Redis=require(_0x4411('0x5'));var db=require(_0x4411('0x6'))['db'];var utils=require(_0x4411('0x7'));var logger=require(_0x4411('0x8'))(_0x4411('0x9'));var config=require(_0x4411('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4411('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x118e50,_0x679f53,_0x5eef22){return new BPromise(function(_0x36593f,_0x414719){return client['request'](_0x118e50,_0x5eef22)[_0x4411('0xc')](function(_0x2330be){logger[_0x4411('0xd')](_0x4411('0xe'),_0x679f53,_0x4411('0xf'));logger[_0x4411('0x10')](_0x4411('0x11'),_0x679f53,_0x4411('0xf'),JSON[_0x4411('0x12')](_0x2330be));if(_0x2330be[_0x4411('0x13')]){if(_0x2330be[_0x4411('0x13')][_0x4411('0x14')]===0x1f4){logger[_0x4411('0x13')](_0x4411('0xe'),_0x679f53,_0x2330be['error'][_0x4411('0x15')]);return _0x414719(_0x2330be['error']['message']);}logger[_0x4411('0x13')](_0x4411('0xe'),_0x679f53,_0x2330be[_0x4411('0x13')][_0x4411('0x15')]);return _0x36593f(_0x2330be[_0x4411('0x13')][_0x4411('0x15')]);}else{logger[_0x4411('0xd')](_0x4411('0xe'),_0x679f53,'request\x20sent');_0x36593f(_0x2330be[_0x4411('0x16')]['message']);}})[_0x4411('0x17')](function(_0x58ea5b){logger[_0x4411('0x13')](_0x4411('0xe'),_0x679f53,_0x58ea5b);_0x414719(_0x58ea5b);});});}
\ No newline at end of file
+var _0x97ef=['../../config/environment','jayson/promise','client','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xb0de07,_0x3ca2a0){var _0x4633d8=function(_0x2368e0){while(--_0x2368e0){_0xb0de07['push'](_0xb0de07['shift']());}};_0x4633d8(++_0x3ca2a0);}(_0x97ef,0x141));var _0xf97e=function(_0x3777b8,_0x26abd2){_0x3777b8=_0x3777b8-0x0;var _0x14817b=_0x97ef[_0x3777b8];return _0x14817b;};'use strict';var _=require(_0xf97e('0x0'));var util=require(_0xf97e('0x1'));var moment=require(_0xf97e('0x2'));var BPromise=require(_0xf97e('0x3'));var rs=require(_0xf97e('0x4'));var fs=require('fs');var Redis=require(_0xf97e('0x5'));var db=require(_0xf97e('0x6'))['db'];var utils=require(_0xf97e('0x7'));var logger=require(_0xf97e('0x8'))('rpc');var config=require(_0xf97e('0x9'));var jayson=require(_0xf97e('0xa'));var client=jayson[_0xf97e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fb869,_0x3a692a,_0x2411f3){return new BPromise(function(_0x24f7d7,_0x47ce08){return client[_0xf97e('0xc')](_0x2fb869,_0x2411f3)[_0xf97e('0xd')](function(_0x1c3f78){logger[_0xf97e('0xe')](_0xf97e('0xf'),_0x3a692a,_0xf97e('0x10'));logger[_0xf97e('0x11')](_0xf97e('0x12'),_0x3a692a,_0xf97e('0x10'),JSON['stringify'](_0x1c3f78));if(_0x1c3f78[_0xf97e('0x13')]){if(_0x1c3f78['error']['code']===0x1f4){logger[_0xf97e('0x13')](_0xf97e('0xf'),_0x3a692a,_0x1c3f78[_0xf97e('0x13')][_0xf97e('0x14')]);return _0x47ce08(_0x1c3f78[_0xf97e('0x13')][_0xf97e('0x14')]);}logger[_0xf97e('0x13')](_0xf97e('0xf'),_0x3a692a,_0x1c3f78[_0xf97e('0x13')][_0xf97e('0x14')]);return _0x24f7d7(_0x1c3f78[_0xf97e('0x13')][_0xf97e('0x14')]);}else{logger['info'](_0xf97e('0xf'),_0x3a692a,_0xf97e('0x10'));_0x24f7d7(_0x1c3f78[_0xf97e('0x15')]['message']);}})['catch'](function(_0x11a212){logger[_0xf97e('0x13')](_0xf97e('0xf'),_0x3a692a,_0x11a212);_0x47ce08(_0x11a212);});});}
\ No newline at end of file
index 162a432..e2af5c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb04=['show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xcb04,0x9a));var _0x4cb0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcb04[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x4cb0('0x0'));var util=require(_0x4cb0('0x1'));var path=require(_0x4cb0('0x2'));var timeout=require(_0x4cb0('0x3'));var express=require(_0x4cb0('0x4'));var router=express[_0x4cb0('0x5')]();var fs_extra=require(_0x4cb0('0x6'));var auth=require(_0x4cb0('0x7'));var interaction=require(_0x4cb0('0x8'));var config=require(_0x4cb0('0x9'));var controller=require('./analyticMetric.controller');router[_0x4cb0('0xa')]('/',auth[_0x4cb0('0xb')](),controller[_0x4cb0('0xc')]);router[_0x4cb0('0xa')](_0x4cb0('0xd'),auth[_0x4cb0('0xb')](),controller[_0x4cb0('0xe')]);router[_0x4cb0('0xf')]('/',auth[_0x4cb0('0xb')](),controller[_0x4cb0('0x10')]);router[_0x4cb0('0x11')](_0x4cb0('0xd'),auth[_0x4cb0('0xb')](),controller[_0x4cb0('0x12')]);router[_0x4cb0('0x13')](_0x4cb0('0xd'),auth[_0x4cb0('0xb')](),controller[_0x4cb0('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xf2e0=['../../components/auth/service','../../components/interaction/service','./analyticMetric.controller','get','isAuthenticated','/:id','show','post','put','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra'];(function(_0x5752ca,_0x10247e){var _0x3826de=function(_0x5027f8){while(--_0x5027f8){_0x5752ca['push'](_0x5752ca['shift']());}};_0x3826de(++_0x10247e);}(_0xf2e0,0xc7));var _0x0f2e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xf2e0[_0x9df060];return _0x338dfe;};'use strict';var multer=require(_0x0f2e('0x0'));var util=require(_0x0f2e('0x1'));var path=require('path');var timeout=require(_0x0f2e('0x2'));var express=require(_0x0f2e('0x3'));var router=express['Router']();var fs_extra=require(_0x0f2e('0x4'));var auth=require(_0x0f2e('0x5'));var interaction=require(_0x0f2e('0x6'));var config=require('../../config/environment');var controller=require(_0x0f2e('0x7'));router[_0x0f2e('0x8')]('/',auth[_0x0f2e('0x9')](),controller['index']);router['get'](_0x0f2e('0xa'),auth['isAuthenticated'](),controller[_0x0f2e('0xb')]);router[_0x0f2e('0xc')]('/',auth[_0x0f2e('0x9')](),controller['create']);router[_0x0f2e('0xd')](_0x0f2e('0xa'),auth[_0x0f2e('0x9')](),controller['update']);router[_0x0f2e('0xe')](_0x0f2e('0xa'),auth['isAuthenticated'](),controller[_0x0f2e('0xf')]);module[_0x0f2e('0x10')]=router;
\ No newline at end of file
index f8e0f21..a8e52fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb7=['TEXT','exports'];(function(_0x59ad89,_0x41cdbd){var _0x463e97=function(_0x4bc593){while(--_0x4bc593){_0x59ad89['push'](_0x59ad89['shift']());}};_0x463e97(++_0x41cdbd);}(_0xbfb7,0x1af));var _0x7bfb=function(_0x606fe8,_0x10b084){_0x606fe8=_0x606fe8-0x0;var _0x28b517=_0xbfb7[_0x606fe8];return _0x28b517;};'use strict';var Sequelize=require('sequelize');module[_0x7bfb('0x0')]={'tree':{'type':Sequelize[_0x7bfb('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xb894=['sequelize','TEXT'];(function(_0x1b4002,_0x5b4094){var _0x1716f3=function(_0x47cfd1){while(--_0x47cfd1){_0x1b4002['push'](_0x1b4002['shift']());}};_0x1716f3(++_0x5b4094);}(_0xb894,0xf0));var _0x4b89=function(_0x562653,_0x54a310){_0x562653=_0x562653-0x0;var _0x119cef=_0xb894[_0x562653];return _0x119cef;};'use strict';var Sequelize=require(_0x4b89('0x0'));module['exports']={'tree':{'type':Sequelize[_0x4b89('0x1')],'allowNull':![]}};
\ No newline at end of file
index f649eec..bc8b4b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9618=['include','findAll','rows','keys','rawAttributes','includeAll','find','catch','body','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','then','sendStatus','error','stack','name','send','index','AnalyticTreeReport','fieldName','model','map','query','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options'];(function(_0x55e91c,_0x8b76b4){var _0x359980=function(_0x57ed94){while(--_0x57ed94){_0x55e91c['push'](_0x55e91c['shift']());}};_0x359980(++_0x8b76b4);}(_0x9618,0x1cd));var _0x8961=function(_0x2bc756,_0x31cad1){_0x2bc756=_0x2bc756-0x0;var _0x1e8c58=_0x9618[_0x2bc756];return _0x1e8c58;};'use strict';var emlformat=require(_0x8961('0x0'));var rimraf=require(_0x8961('0x1'));var zipdir=require(_0x8961('0x2'));var jsonpatch=require(_0x8961('0x3'));var rp=require(_0x8961('0x4'));var moment=require(_0x8961('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8961('0x6'));var util=require(_0x8961('0x7'));var path=require(_0x8961('0x8'));var sox=require(_0x8961('0x9'));var csv=require(_0x8961('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x8961('0xb'));var jsforce=require(_0x8961('0xc'));var deskjs=require(_0x8961('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8961('0xe'));var Papa=require('papaparse');var Redis=require(_0x8961('0xf'));var authService=require(_0x8961('0x10'));var qs=require(_0x8961('0x11'));var as=require(_0x8961('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8961('0x13'))(_0x8961('0x14'));var utils=require(_0x8961('0x15'));var config=require(_0x8961('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8961('0x17'))['db'];function respondWithStatusCode(_0x1fe446,_0x498b18){_0x498b18=_0x498b18||0xcc;return function(_0x5838c6){if(_0x5838c6){return _0x1fe446['sendStatus'](_0x498b18);}return _0x1fe446[_0x8961('0x18')](_0x498b18)[_0x8961('0x19')]();};}function respondWithResult(_0x2610c9,_0x1a69e3){_0x1a69e3=_0x1a69e3||0xc8;return function(_0x5269ca){if(_0x5269ca){return _0x2610c9[_0x8961('0x18')](_0x1a69e3)[_0x8961('0x1a')](_0x5269ca);}};}function respondWithFilteredResult(_0x55710e,_0x6cbb09){return function(_0x45468b){if(_0x45468b){var _0x49ba49=typeof _0x6cbb09[_0x8961('0x1b')]===_0x8961('0x1c')&&typeof _0x6cbb09[_0x8961('0x1d')]===_0x8961('0x1c');var _0x3d2e67=_0x45468b[_0x8961('0x1e')];var _0x43244e=_0x49ba49?0x0:_0x6cbb09[_0x8961('0x1b')];var _0x1b646d=_0x49ba49?_0x45468b['count']:_0x6cbb09[_0x8961('0x1b')]+_0x6cbb09[_0x8961('0x1d')];var _0x20daa8;if(_0x1b646d>=_0x3d2e67){_0x1b646d=_0x3d2e67;_0x20daa8=0xc8;}else{_0x20daa8=0xce;}_0x55710e['status'](_0x20daa8);return _0x55710e[_0x8961('0x1f')](_0x8961('0x20'),_0x43244e+'-'+_0x1b646d+'/'+_0x3d2e67)['json'](_0x45468b);}return null;};}function patchUpdates(_0x1297c5){return function(_0x516812){try{jsonpatch[_0x8961('0x21')](_0x516812,_0x1297c5,!![]);}catch(_0x16e8a4){return BPromise[_0x8961('0x22')](_0x16e8a4);}return _0x516812['save']();};}function saveUpdates(_0x7a2470,_0x313f57){return function(_0x4145bb){if(_0x4145bb){return _0x4145bb['update'](_0x7a2470)['then'](function(_0x4243c2){return _0x4243c2;});}return null;};}function removeEntity(_0x189290,_0x49d998){return function(_0x4f0854){if(_0x4f0854){return _0x4f0854[_0x8961('0x23')]()[_0x8961('0x24')](function(){_0x189290[_0x8961('0x18')](0xcc)[_0x8961('0x19')]();});}};}function handleEntityNotFound(_0xdf4318,_0x1ae179){return function(_0x2732c0){if(!_0x2732c0){_0xdf4318[_0x8961('0x25')](0x194);}return _0x2732c0;};}function handleError(_0x5ed1bf,_0x38ec2e){_0x38ec2e=_0x38ec2e||0x1f4;return function(_0x1f5a47){logger[_0x8961('0x26')](_0x1f5a47[_0x8961('0x27')]);if(_0x1f5a47[_0x8961('0x28')]){delete _0x1f5a47[_0x8961('0x28')];}_0x5ed1bf[_0x8961('0x18')](_0x38ec2e)[_0x8961('0x29')](_0x1f5a47);};}exports[_0x8961('0x2a')]=function(_0x5ddf10,_0x94ff98){var _0x1a4735={},_0x4a8e0d={},_0x5a7392={'count':0x0,'rows':[]};var _0x477968=_['map'](db[_0x8961('0x2b')]['rawAttributes'],function(_0x30b0ee){return{'name':_0x30b0ee[_0x8961('0x2c')],'type':_0x30b0ee['type']['key']};});_0x4a8e0d[_0x8961('0x2d')]=_[_0x8961('0x2e')](_0x477968,_0x8961('0x28'));_0x4a8e0d[_0x8961('0x2f')]=_['keys'](_0x5ddf10[_0x8961('0x2f')]);_0x4a8e0d[_0x8961('0x30')]=_['intersection'](_0x4a8e0d[_0x8961('0x2d')],_0x4a8e0d['query']);_0x1a4735['attributes']=_[_0x8961('0x31')](_0x4a8e0d['model'],qs[_0x8961('0x32')](_0x5ddf10['query']['fields']));_0x1a4735['attributes']=_0x1a4735['attributes'][_0x8961('0x33')]?_0x1a4735[_0x8961('0x34')]:_0x4a8e0d['model'];if(!_0x5ddf10[_0x8961('0x2f')][_0x8961('0x35')](_0x8961('0x36'))){_0x1a4735[_0x8961('0x1d')]=qs[_0x8961('0x1d')](_0x5ddf10[_0x8961('0x2f')][_0x8961('0x1d')]);_0x1a4735[_0x8961('0x1b')]=qs[_0x8961('0x1b')](_0x5ddf10['query'][_0x8961('0x1b')]);}_0x1a4735[_0x8961('0x37')]=qs['sort'](_0x5ddf10[_0x8961('0x2f')][_0x8961('0x38')]);_0x1a4735[_0x8961('0x39')]=qs[_0x8961('0x30')](_[_0x8961('0x3a')](_0x5ddf10[_0x8961('0x2f')],_0x4a8e0d[_0x8961('0x30')]),_0x477968);if(_0x5ddf10[_0x8961('0x2f')][_0x8961('0x3b')]){_0x1a4735[_0x8961('0x39')]=_[_0x8961('0x3c')](_0x1a4735[_0x8961('0x39')],{'$or':_[_0x8961('0x2e')](_0x477968,function(_0x473c89){if(_0x473c89[_0x8961('0x3d')]!==_0x8961('0x3e')){var _0x114e27={};_0x114e27[_0x473c89['name']]={'$like':'%'+_0x5ddf10['query'][_0x8961('0x3b')]+'%'};return _0x114e27;}})});}_0x1a4735=_[_0x8961('0x3c')]({},_0x1a4735,_0x5ddf10[_0x8961('0x3f')]);var _0x2b8aa5={'where':_0x1a4735['where']};return db[_0x8961('0x2b')][_0x8961('0x1e')](_0x2b8aa5)[_0x8961('0x24')](function(_0x5bf583){_0x5a7392[_0x8961('0x1e')]=_0x5bf583;if(_0x5ddf10[_0x8961('0x2f')]['includeAll']){_0x1a4735[_0x8961('0x40')]=[{'all':!![]}];}return db[_0x8961('0x2b')][_0x8961('0x41')](_0x1a4735);})[_0x8961('0x24')](function(_0x411fb4){_0x5a7392[_0x8961('0x42')]=_0x411fb4;return _0x5a7392;})[_0x8961('0x24')](respondWithFilteredResult(_0x94ff98,_0x1a4735))['catch'](handleError(_0x94ff98,null));};exports['show']=function(_0x491e03,_0xdaab99){var _0x22483b={'raw':!![],'where':{'id':_0x491e03['params']['id']}},_0x25ed27={};_0x25ed27['model']=_[_0x8961('0x43')](db['AnalyticTreeReport'][_0x8961('0x44')]);_0x25ed27[_0x8961('0x2f')]=_[_0x8961('0x43')](_0x491e03[_0x8961('0x2f')]);_0x25ed27[_0x8961('0x30')]=_[_0x8961('0x31')](_0x25ed27[_0x8961('0x2d')],_0x25ed27[_0x8961('0x2f')]);_0x22483b[_0x8961('0x34')]=_[_0x8961('0x31')](_0x25ed27[_0x8961('0x2d')],qs[_0x8961('0x32')](_0x491e03[_0x8961('0x2f')][_0x8961('0x32')]));_0x22483b[_0x8961('0x34')]=_0x22483b[_0x8961('0x34')][_0x8961('0x33')]?_0x22483b[_0x8961('0x34')]:_0x25ed27['model'];if(_0x491e03['query'][_0x8961('0x45')]){_0x22483b[_0x8961('0x40')]=[{'all':!![]}];}_0x22483b=_[_0x8961('0x3c')]({},_0x22483b,_0x491e03[_0x8961('0x3f')]);return db[_0x8961('0x2b')][_0x8961('0x46')](_0x22483b)[_0x8961('0x24')](handleEntityNotFound(_0xdaab99,null))[_0x8961('0x24')](respondWithResult(_0xdaab99,null))[_0x8961('0x47')](handleError(_0xdaab99,null));};exports['create']=function(_0x61680c,_0x59788e){return db[_0x8961('0x2b')]['create'](_0x61680c[_0x8961('0x48')],{})[_0x8961('0x24')](respondWithResult(_0x59788e,0xc9))[_0x8961('0x47')](handleError(_0x59788e,null));};exports[_0x8961('0x49')]=function(_0xce686d,_0x2e3873){if(_0xce686d['body']['id']){delete _0xce686d[_0x8961('0x48')]['id'];}return db[_0x8961('0x2b')][_0x8961('0x46')]({'where':{'id':_0xce686d[_0x8961('0x4a')]['id']}})[_0x8961('0x24')](handleEntityNotFound(_0x2e3873,null))[_0x8961('0x24')](saveUpdates(_0xce686d[_0x8961('0x48')],null))[_0x8961('0x24')](respondWithResult(_0x2e3873,null))['catch'](handleError(_0x2e3873,null));};exports['destroy']=function(_0x1029d1,_0x27b488){return db[_0x8961('0x2b')][_0x8961('0x46')]({'where':{'id':_0x1029d1[_0x8961('0x4a')]['id']}})[_0x8961('0x24')](handleEntityNotFound(_0x27b488,null))[_0x8961('0x24')](removeEntity(_0x27b488,null))[_0x8961('0x47')](handleError(_0x27b488,null));};
\ No newline at end of file
+var _0x7ecf=['save','update','destroy','sendStatus','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','AnalyticTreeReport','then','includeAll','findAll','rows','params','include','find','catch','create','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','json','apply','reject'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x7ecf,0x6e));var _0xf7ec=function(_0x55d17e,_0x5a2b81){_0x55d17e=_0x55d17e-0x0;var _0x32f505=_0x7ecf[_0x55d17e];return _0x32f505;};'use strict';var emlformat=require(_0xf7ec('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf7ec('0x1'));var jsonpatch=require(_0xf7ec('0x2'));var rp=require(_0xf7ec('0x3'));var moment=require('moment');var BPromise=require(_0xf7ec('0x4'));var Mustache=require('mustache');var util=require(_0xf7ec('0x5'));var path=require(_0xf7ec('0x6'));var sox=require(_0xf7ec('0x7'));var csv=require(_0xf7ec('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf7ec('0x9'));var _=require(_0xf7ec('0xa'));var squel=require(_0xf7ec('0xb'));var crypto=require(_0xf7ec('0xc'));var jsforce=require(_0xf7ec('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf7ec('0x8'));var querystring=require(_0xf7ec('0xe'));var Papa=require(_0xf7ec('0xf'));var Redis=require('ioredis');var authService=require(_0xf7ec('0x10'));var qs=require(_0xf7ec('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf7ec('0x12'));var logger=require(_0xf7ec('0x13'))(_0xf7ec('0x14'));var utils=require(_0xf7ec('0x15'));var config=require(_0xf7ec('0x16'));var licenseUtil=require(_0xf7ec('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcc8179,_0x1573fa){_0x1573fa=_0x1573fa||0xcc;return function(_0x41e5d7){if(_0x41e5d7){return _0xcc8179['sendStatus'](_0x1573fa);}return _0xcc8179[_0xf7ec('0x18')](_0x1573fa)[_0xf7ec('0x19')]();};}function respondWithResult(_0x5ac48b,_0x5df32f){_0x5df32f=_0x5df32f||0xc8;return function(_0x3ee664){if(_0x3ee664){return _0x5ac48b[_0xf7ec('0x18')](_0x5df32f)['json'](_0x3ee664);}};}function respondWithFilteredResult(_0x2f8f5c,_0x537017){return function(_0x4b5ae2){if(_0x4b5ae2){var _0x4fdf01=typeof _0x537017[_0xf7ec('0x1a')]===_0xf7ec('0x1b')&&typeof _0x537017[_0xf7ec('0x1c')]==='undefined';var _0x2cfd07=_0x4b5ae2['count'];var _0x29a494=_0x4fdf01?0x0:_0x537017[_0xf7ec('0x1a')];var _0x50f2ea=_0x4fdf01?_0x4b5ae2[_0xf7ec('0x1d')]:_0x537017[_0xf7ec('0x1a')]+_0x537017[_0xf7ec('0x1c')];var _0x1ea77e;if(_0x50f2ea>=_0x2cfd07){_0x50f2ea=_0x2cfd07;_0x1ea77e=0xc8;}else{_0x1ea77e=0xce;}_0x2f8f5c['status'](_0x1ea77e);return _0x2f8f5c[_0xf7ec('0x1e')]('Content-Range',_0x29a494+'-'+_0x50f2ea+'/'+_0x2cfd07)[_0xf7ec('0x1f')](_0x4b5ae2);}return null;};}function patchUpdates(_0x16bfdc){return function(_0x54552e){try{jsonpatch[_0xf7ec('0x20')](_0x54552e,_0x16bfdc,!![]);}catch(_0x4c98f1){return BPromise[_0xf7ec('0x21')](_0x4c98f1);}return _0x54552e[_0xf7ec('0x22')]();};}function saveUpdates(_0x320e3c,_0x30fc17){return function(_0x43aa1b){if(_0x43aa1b){return _0x43aa1b[_0xf7ec('0x23')](_0x320e3c)['then'](function(_0x2795a9){return _0x2795a9;});}return null;};}function removeEntity(_0xfc3723,_0x23ad02){return function(_0x1d79c8){if(_0x1d79c8){return _0x1d79c8[_0xf7ec('0x24')]()['then'](function(){_0xfc3723[_0xf7ec('0x18')](0xcc)[_0xf7ec('0x19')]();});}};}function handleEntityNotFound(_0x3afb02,_0x54a082){return function(_0x5b590e){if(!_0x5b590e){_0x3afb02[_0xf7ec('0x25')](0x194);}return _0x5b590e;};}function handleError(_0x5ec615,_0x35efe1){_0x35efe1=_0x35efe1||0x1f4;return function(_0x182224){logger['error'](_0x182224['stack']);if(_0x182224[_0xf7ec('0x26')]){delete _0x182224[_0xf7ec('0x26')];}_0x5ec615[_0xf7ec('0x18')](_0x35efe1)[_0xf7ec('0x27')](_0x182224);};}exports[_0xf7ec('0x28')]=function(_0x5aa8e6,_0x38cd4e){var _0x3a0684={},_0x1e4517={},_0x4930c0={'count':0x0,'rows':[]};var _0x1cd47c=_[_0xf7ec('0x29')](db['AnalyticTreeReport'][_0xf7ec('0x2a')],function(_0x257344){return{'name':_0x257344['fieldName'],'type':_0x257344[_0xf7ec('0x2b')][_0xf7ec('0x2c')]};});_0x1e4517[_0xf7ec('0x2d')]=_[_0xf7ec('0x29')](_0x1cd47c,'name');_0x1e4517[_0xf7ec('0x2e')]=_[_0xf7ec('0x2f')](_0x5aa8e6[_0xf7ec('0x2e')]);_0x1e4517[_0xf7ec('0x30')]=_[_0xf7ec('0x31')](_0x1e4517[_0xf7ec('0x2d')],_0x1e4517[_0xf7ec('0x2e')]);_0x3a0684[_0xf7ec('0x32')]=_[_0xf7ec('0x31')](_0x1e4517['model'],qs[_0xf7ec('0x33')](_0x5aa8e6[_0xf7ec('0x2e')][_0xf7ec('0x33')]));_0x3a0684['attributes']=_0x3a0684[_0xf7ec('0x32')][_0xf7ec('0x34')]?_0x3a0684[_0xf7ec('0x32')]:_0x1e4517[_0xf7ec('0x2d')];if(!_0x5aa8e6[_0xf7ec('0x2e')][_0xf7ec('0x35')](_0xf7ec('0x36'))){_0x3a0684[_0xf7ec('0x1c')]=qs[_0xf7ec('0x1c')](_0x5aa8e6[_0xf7ec('0x2e')][_0xf7ec('0x1c')]);_0x3a0684[_0xf7ec('0x1a')]=qs[_0xf7ec('0x1a')](_0x5aa8e6['query']['offset']);}_0x3a0684[_0xf7ec('0x37')]=qs[_0xf7ec('0x38')](_0x5aa8e6[_0xf7ec('0x2e')]['sort']);_0x3a0684[_0xf7ec('0x39')]=qs[_0xf7ec('0x30')](_[_0xf7ec('0x3a')](_0x5aa8e6[_0xf7ec('0x2e')],_0x1e4517[_0xf7ec('0x30')]),_0x1cd47c);if(_0x5aa8e6['query'][_0xf7ec('0x3b')]){_0x3a0684[_0xf7ec('0x39')]=_[_0xf7ec('0x3c')](_0x3a0684['where'],{'$or':_['map'](_0x1cd47c,function(_0x4373da){if(_0x4373da[_0xf7ec('0x2b')]!=='VIRTUAL'){var _0x2534a3={};_0x2534a3[_0x4373da[_0xf7ec('0x26')]]={'$like':'%'+_0x5aa8e6[_0xf7ec('0x2e')][_0xf7ec('0x3b')]+'%'};return _0x2534a3;}})});}_0x3a0684=_[_0xf7ec('0x3c')]({},_0x3a0684,_0x5aa8e6['options']);var _0x280bf9={'where':_0x3a0684[_0xf7ec('0x39')]};return db[_0xf7ec('0x3d')][_0xf7ec('0x1d')](_0x280bf9)[_0xf7ec('0x3e')](function(_0x42dd88){_0x4930c0[_0xf7ec('0x1d')]=_0x42dd88;if(_0x5aa8e6['query'][_0xf7ec('0x3f')]){_0x3a0684['include']=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xf7ec('0x40')](_0x3a0684);})[_0xf7ec('0x3e')](function(_0xc96f26){_0x4930c0[_0xf7ec('0x41')]=_0xc96f26;return _0x4930c0;})['then'](respondWithFilteredResult(_0x38cd4e,_0x3a0684))['catch'](handleError(_0x38cd4e,null));};exports['show']=function(_0x5ecdb6,_0x11ea74){var _0x149570={'raw':!![],'where':{'id':_0x5ecdb6[_0xf7ec('0x42')]['id']}},_0x45f86a={};_0x45f86a[_0xf7ec('0x2d')]=_[_0xf7ec('0x2f')](db[_0xf7ec('0x3d')][_0xf7ec('0x2a')]);_0x45f86a[_0xf7ec('0x2e')]=_[_0xf7ec('0x2f')](_0x5ecdb6['query']);_0x45f86a[_0xf7ec('0x30')]=_[_0xf7ec('0x31')](_0x45f86a[_0xf7ec('0x2d')],_0x45f86a[_0xf7ec('0x2e')]);_0x149570['attributes']=_[_0xf7ec('0x31')](_0x45f86a['model'],qs['fields'](_0x5ecdb6['query'][_0xf7ec('0x33')]));_0x149570['attributes']=_0x149570[_0xf7ec('0x32')][_0xf7ec('0x34')]?_0x149570[_0xf7ec('0x32')]:_0x45f86a['model'];if(_0x5ecdb6[_0xf7ec('0x2e')][_0xf7ec('0x3f')]){_0x149570[_0xf7ec('0x43')]=[{'all':!![]}];}_0x149570=_[_0xf7ec('0x3c')]({},_0x149570,_0x5ecdb6['options']);return db[_0xf7ec('0x3d')][_0xf7ec('0x44')](_0x149570)[_0xf7ec('0x3e')](handleEntityNotFound(_0x11ea74,null))[_0xf7ec('0x3e')](respondWithResult(_0x11ea74,null))[_0xf7ec('0x45')](handleError(_0x11ea74,null));};exports[_0xf7ec('0x46')]=function(_0x4bf0fa,_0x5d6104){return db[_0xf7ec('0x3d')]['create'](_0x4bf0fa[_0xf7ec('0x47')],{})[_0xf7ec('0x3e')](respondWithResult(_0x5d6104,0xc9))['catch'](handleError(_0x5d6104,null));};exports['update']=function(_0x61a290,_0x358076){if(_0x61a290[_0xf7ec('0x47')]['id']){delete _0x61a290[_0xf7ec('0x47')]['id'];}return db[_0xf7ec('0x3d')][_0xf7ec('0x44')]({'where':{'id':_0x61a290['params']['id']}})[_0xf7ec('0x3e')](handleEntityNotFound(_0x358076,null))['then'](saveUpdates(_0x61a290[_0xf7ec('0x47')],null))[_0xf7ec('0x3e')](respondWithResult(_0x358076,null))[_0xf7ec('0x45')](handleError(_0x358076,null));};exports[_0xf7ec('0x24')]=function(_0x2fb930,_0x5ba60f){return db[_0xf7ec('0x3d')][_0xf7ec('0x44')]({'where':{'id':_0x2fb930[_0xf7ec('0x42')]['id']}})[_0xf7ec('0x3e')](handleEntityNotFound(_0x5ba60f,null))[_0xf7ec('0x3e')](removeEntity(_0x5ba60f,null))['catch'](handleError(_0x5ba60f,null));};
\ No newline at end of file
index 785124a..d496018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c5=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticTreeReport','analytics_report_trees','../../config/logger','api'];(function(_0x202d3f,_0x5e4758){var _0x23ace5=function(_0x146454){while(--_0x146454){_0x202d3f['push'](_0x202d3f['shift']());}};_0x23ace5(++_0x5e4758);}(_0xb1c5,0x196));var _0x5b1c=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xb1c5[_0x51020b];return _0x371e47;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5b1c('0x0'))(_0x5b1c('0x1'));var moment=require(_0x5b1c('0x2'));var BPromise=require(_0x5b1c('0x3'));var rp=require(_0x5b1c('0x4'));var fs=require('fs');var path=require(_0x5b1c('0x5'));var rimraf=require(_0x5b1c('0x6'));var config=require(_0x5b1c('0x7'));var attributes=require('./analyticTreeReport.attributes');module[_0x5b1c('0x8')]=function(_0x38ef07,_0x1ad673){return _0x38ef07[_0x5b1c('0x9')](_0x5b1c('0xa'),attributes,{'tableName':_0x5b1c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x000c=['request-promise','rimraf','./analyticTreeReport.attributes','exports','define','analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0x000c,0x72));var _0xc000=function(_0x4d46c1,_0x1eccf0){_0x4d46c1=_0x4d46c1-0x0;var _0x34a33b=_0x000c[_0x4d46c1];return _0x34a33b;};'use strict';var _=require(_0xc000('0x0'));var util=require(_0xc000('0x1'));var logger=require(_0xc000('0x2'))(_0xc000('0x3'));var moment=require(_0xc000('0x4'));var BPromise=require(_0xc000('0x5'));var rp=require(_0xc000('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc000('0x7'));var config=require('../../config/environment');var attributes=require(_0xc000('0x8'));module[_0xc000('0x9')]=function(_0x17cf87,_0x9880f4){return _0x17cf87[_0xc000('0xa')]('AnalyticTreeReport',attributes,{'tableName':_0xc000('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18a68f0..e7a989e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x5b7695,_0x139b46){var _0xae72fb=function(_0x97edf8){while(--_0x97edf8){_0x5b7695['push'](_0x5b7695['shift']());}};_0xae72fb(++_0x139b46);}(_0x1261,0x144));var _0x1126=function(_0x1d291d,_0x17314a){_0x1d291d=_0x1d291d-0x0;var _0x44cc4e=_0x1261[_0x1d291d];return _0x44cc4e;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _0x1261=['then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x3317d5,_0x5068b7){var _0x4471ed=function(_0x28a066){while(--_0x28a066){_0x3317d5['push'](_0x3317d5['shift']());}};_0x4471ed(++_0x5068b7);}(_0x1261,0x144));var _0x1126=function(_0x138d06,_0x33edf2){_0x138d06=_0x138d06-0x0;var _0x1a01eb=_0x1261[_0x138d06];return _0x1a01eb;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index 9e47127..d401b3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ba=['/:id','show','post','put','update','delete','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','get'];(function(_0x4fbb86,_0x374ed0){var _0xb141fe=function(_0x382195){while(--_0x382195){_0x4fbb86['push'](_0x4fbb86['shift']());}};_0xb141fe(++_0x374ed0);}(_0x46ba,0xb1));var _0xa46b=function(_0x4c5cc7,_0x1b05aa){_0x4c5cc7=_0x4c5cc7-0x0;var _0x331952=_0x46ba[_0x4c5cc7];return _0x331952;};'use strict';var multer=require('multer');var util=require(_0xa46b('0x0'));var path=require(_0xa46b('0x1'));var timeout=require('connect-timeout');var express=require(_0xa46b('0x2'));var router=express[_0xa46b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa46b('0x4'));var interaction=require(_0xa46b('0x5'));var config=require(_0xa46b('0x6'));var controller=require(_0xa46b('0x7'));router['get']('/',auth[_0xa46b('0x8')](),controller['index']);router[_0xa46b('0x9')](_0xa46b('0xa'),auth['isAuthenticated'](),controller[_0xa46b('0xb')]);router[_0xa46b('0xc')]('/',auth[_0xa46b('0x8')](),controller['create']);router[_0xa46b('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xa46b('0xe')]);router[_0xa46b('0xf')]('/:id',auth[_0xa46b('0x8')](),controller['destroy']);module[_0xa46b('0x10')]=router;
\ No newline at end of file
+var _0x4864=['../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','/:id','show','post','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x4090cd,_0x55a2f0){var _0x522fbe=function(_0x2e1c6c){while(--_0x2e1c6c){_0x4090cd['push'](_0x4090cd['shift']());}};_0x522fbe(++_0x55a2f0);}(_0x4864,0x188));var _0x4486=function(_0x27c248,_0x384dff){_0x27c248=_0x27c248-0x0;var _0x1b2fc2=_0x4864[_0x27c248];return _0x1b2fc2;};'use strict';var multer=require(_0x4486('0x0'));var util=require(_0x4486('0x1'));var path=require(_0x4486('0x2'));var timeout=require(_0x4486('0x3'));var express=require(_0x4486('0x4'));var router=express[_0x4486('0x5')]();var fs_extra=require(_0x4486('0x6'));var auth=require(_0x4486('0x7'));var interaction=require(_0x4486('0x8'));var config=require(_0x4486('0x9'));var controller=require(_0x4486('0xa'));router[_0x4486('0xb')]('/',auth[_0x4486('0xc')](),controller['index']);router[_0x4486('0xb')](_0x4486('0xd'),auth[_0x4486('0xc')](),controller[_0x4486('0xe')]);router[_0x4486('0xf')]('/',auth[_0x4486('0xc')](),controller['create']);router['put'](_0x4486('0xd'),auth[_0x4486('0xc')](),controller[_0x4486('0x10')]);router['delete'](_0x4486('0xd'),auth[_0x4486('0xc')](),controller[_0x4486('0x11')]);module[_0x4486('0x12')]=router;
\ No newline at end of file
index 4646aaa..d16f0b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ef=['sequelize','exports','STRING'];(function(_0x40c564,_0x40ab4d){var _0x183114=function(_0x2ecc93){while(--_0x2ecc93){_0x40c564['push'](_0x40c564['shift']());}};_0x183114(++_0x40ab4d);}(_0x32ef,0xf9));var _0xf32e=function(_0x12d994,_0x11326e){_0x12d994=_0x12d994-0x0;var _0x56c235=_0x32ef[_0x12d994];return _0x56c235;};'use strict';var Sequelize=require(_0xf32e('0x0'));module[_0xf32e('0x1')]={'name':{'type':Sequelize[_0xf32e('0x2')]},'basename':{'type':Sequelize[_0xf32e('0x2')]},'type':{'type':Sequelize[_0xf32e('0x2')]}};
\ No newline at end of file
+var _0xb32d=['sequelize','exports','STRING'];(function(_0x4667ec,_0x593a64){var _0x2126c8=function(_0x414d0a){while(--_0x414d0a){_0x4667ec['push'](_0x4667ec['shift']());}};_0x2126c8(++_0x593a64);}(_0xb32d,0x1da));var _0xdb32=function(_0x48845d,_0x4338c2){_0x48845d=_0x48845d-0x0;var _0x5bad7d=_0xb32d[_0x48845d];return _0x5bad7d;};'use strict';var Sequelize=require(_0xdb32('0x0'));module[_0xdb32('0x1')]={'name':{'type':Sequelize[_0xdb32('0x2')]},'basename':{'type':Sequelize[_0xdb32('0x2')]},'type':{'type':Sequelize[_0xdb32('0x2')]}};
\ No newline at end of file
index ebb7ad7..09f32e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3208=['basename','file','mimetype','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','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','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','Attachment','fieldName','type','query','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','options','includeAll','include','findAll','rows','params','keys','rawAttributes','find','get','omit','createdAt','updatedAt','body','create','catch','update','originalname'];(function(_0x4be54a,_0x51bb80){var _0x5d88de=function(_0x27ece6){while(--_0x27ece6){_0x4be54a['push'](_0x4be54a['shift']());}};_0x5d88de(++_0x51bb80);}(_0x3208,0x178));var _0x8320=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x3208[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x8320('0x0'));var rimraf=require(_0x8320('0x1'));var zipdir=require(_0x8320('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8320('0x3'));var moment=require(_0x8320('0x4'));var BPromise=require(_0x8320('0x5'));var Mustache=require(_0x8320('0x6'));var util=require(_0x8320('0x7'));var path=require(_0x8320('0x8'));var sox=require(_0x8320('0x9'));var csv=require(_0x8320('0xa'));var ejs=require(_0x8320('0xb'));var fs=require('fs');var fs_extra=require(_0x8320('0xc'));var _=require('lodash');var squel=require(_0x8320('0xd'));var crypto=require(_0x8320('0xe'));var jsforce=require(_0x8320('0xf'));var deskjs=require(_0x8320('0x10'));var toCsv=require(_0x8320('0xa'));var querystring=require('querystring');var Papa=require(_0x8320('0x11'));var Redis=require(_0x8320('0x12'));var authService=require(_0x8320('0x13'));var qs=require(_0x8320('0x14'));var as=require(_0x8320('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8320('0x16'))(_0x8320('0x17'));var utils=require(_0x8320('0x18'));var config=require(_0x8320('0x19'));var licenseUtil=require(_0x8320('0x1a'));var db=require(_0x8320('0x1b'))['db'];function respondWithStatusCode(_0x470439,_0x2c442b){_0x2c442b=_0x2c442b||0xcc;return function(_0x510cd8){if(_0x510cd8){return _0x470439['sendStatus'](_0x2c442b);}return _0x470439[_0x8320('0x1c')](_0x2c442b)[_0x8320('0x1d')]();};}function respondWithResult(_0x541082,_0x4179b9){_0x4179b9=_0x4179b9||0xc8;return function(_0x168612){if(_0x168612){return _0x541082[_0x8320('0x1c')](_0x4179b9)[_0x8320('0x1e')](_0x168612);}};}function respondWithFilteredResult(_0x9a116,_0x236487){return function(_0x27b53b){if(_0x27b53b){var _0x3febcc=typeof _0x236487[_0x8320('0x1f')]===_0x8320('0x20')&&typeof _0x236487[_0x8320('0x21')]===_0x8320('0x20');var _0x521d5c=_0x27b53b['count'];var _0x271f26=_0x3febcc?0x0:_0x236487[_0x8320('0x1f')];var _0x5ba39e=_0x3febcc?_0x27b53b[_0x8320('0x22')]:_0x236487[_0x8320('0x1f')]+_0x236487[_0x8320('0x21')];var _0x233fc2;if(_0x5ba39e>=_0x521d5c){_0x5ba39e=_0x521d5c;_0x233fc2=0xc8;}else{_0x233fc2=0xce;}_0x9a116['status'](_0x233fc2);return _0x9a116[_0x8320('0x23')](_0x8320('0x24'),_0x271f26+'-'+_0x5ba39e+'/'+_0x521d5c)[_0x8320('0x1e')](_0x27b53b);}return null;};}function patchUpdates(_0x39e925){return function(_0xe35420){try{jsonpatch[_0x8320('0x25')](_0xe35420,_0x39e925,!![]);}catch(_0x38c792){return BPromise[_0x8320('0x26')](_0x38c792);}return _0xe35420[_0x8320('0x27')]();};}function saveUpdates(_0x222f18,_0x48f077){return function(_0x740e73){if(_0x740e73){return _0x740e73['update'](_0x222f18)[_0x8320('0x28')](function(_0x28cf05){return _0x28cf05;});}return null;};}function removeEntity(_0x2cdf2e,_0x3ee2ae){return function(_0x1811cf){if(_0x1811cf){return _0x1811cf[_0x8320('0x29')]()[_0x8320('0x28')](function(){_0x2cdf2e[_0x8320('0x1c')](0xcc)[_0x8320('0x1d')]();});}};}function handleEntityNotFound(_0x135288,_0x217465){return function(_0x5d63fc){if(!_0x5d63fc){_0x135288[_0x8320('0x2a')](0x194);}return _0x5d63fc;};}function handleError(_0x2c1472,_0x36966f){_0x36966f=_0x36966f||0x1f4;return function(_0xebef7a){logger[_0x8320('0x2b')](_0xebef7a[_0x8320('0x2c')]);if(_0xebef7a[_0x8320('0x2d')]){delete _0xebef7a['name'];}_0x2c1472[_0x8320('0x1c')](_0x36966f)[_0x8320('0x2e')](_0xebef7a);};}exports[_0x8320('0x2f')]=function(_0x365275,_0x276906){var _0x1e92f5={},_0x331040={},_0x212b2b={'count':0x0,'rows':[]};var _0x4dd270=_[_0x8320('0x30')](db[_0x8320('0x31')]['rawAttributes'],function(_0x309603){return{'name':_0x309603[_0x8320('0x32')],'type':_0x309603[_0x8320('0x33')]['key']};});_0x331040['model']=_[_0x8320('0x30')](_0x4dd270,_0x8320('0x2d'));_0x331040['query']=_['keys'](_0x365275[_0x8320('0x34')]);_0x331040['filters']=_[_0x8320('0x35')](_0x331040[_0x8320('0x36')],_0x331040[_0x8320('0x34')]);_0x1e92f5['attributes']=_[_0x8320('0x35')](_0x331040['model'],qs[_0x8320('0x37')](_0x365275[_0x8320('0x34')][_0x8320('0x37')]));_0x1e92f5[_0x8320('0x38')]=_0x1e92f5['attributes'][_0x8320('0x39')]?_0x1e92f5[_0x8320('0x38')]:_0x331040['model'];if(!_0x365275[_0x8320('0x34')][_0x8320('0x3a')]('nolimit')){_0x1e92f5[_0x8320('0x21')]=qs['limit'](_0x365275[_0x8320('0x34')][_0x8320('0x21')]);_0x1e92f5['offset']=qs[_0x8320('0x1f')](_0x365275[_0x8320('0x34')][_0x8320('0x1f')]);}_0x1e92f5[_0x8320('0x3b')]=qs[_0x8320('0x3c')](_0x365275[_0x8320('0x34')]['sort']);_0x1e92f5[_0x8320('0x3d')]=qs['filters'](_[_0x8320('0x3e')](_0x365275[_0x8320('0x34')],_0x331040[_0x8320('0x3f')]),_0x4dd270);if(_0x365275[_0x8320('0x34')][_0x8320('0x40')]){_0x1e92f5[_0x8320('0x3d')]=_[_0x8320('0x41')](_0x1e92f5[_0x8320('0x3d')],{'$or':_['map'](_0x4dd270,function(_0x14dbf3){if(_0x14dbf3[_0x8320('0x33')]!=='VIRTUAL'){var _0x2e867f={};_0x2e867f[_0x14dbf3[_0x8320('0x2d')]]={'$like':'%'+_0x365275['query'][_0x8320('0x40')]+'%'};return _0x2e867f;}})});}_0x1e92f5=_['merge']({},_0x1e92f5,_0x365275[_0x8320('0x42')]);var _0xd1a469={'where':_0x1e92f5[_0x8320('0x3d')]};return db[_0x8320('0x31')]['count'](_0xd1a469)[_0x8320('0x28')](function(_0x141fc3){_0x212b2b[_0x8320('0x22')]=_0x141fc3;if(_0x365275['query'][_0x8320('0x43')]){_0x1e92f5[_0x8320('0x44')]=[{'all':!![]}];}return db[_0x8320('0x31')][_0x8320('0x45')](_0x1e92f5);})[_0x8320('0x28')](function(_0x3949eb){_0x212b2b[_0x8320('0x46')]=_0x3949eb;return _0x212b2b;})[_0x8320('0x28')](respondWithFilteredResult(_0x276906,_0x1e92f5))['catch'](handleError(_0x276906,null));};exports['show']=function(_0x5828c2,_0x1a96ae){var _0x42c63b={'raw':!![],'where':{'id':_0x5828c2[_0x8320('0x47')]['id']}},_0x3d122a={};_0x3d122a[_0x8320('0x36')]=_[_0x8320('0x48')](db[_0x8320('0x31')][_0x8320('0x49')]);_0x3d122a[_0x8320('0x34')]=_[_0x8320('0x48')](_0x5828c2[_0x8320('0x34')]);_0x3d122a['filters']=_['intersection'](_0x3d122a[_0x8320('0x36')],_0x3d122a[_0x8320('0x34')]);_0x42c63b['attributes']=_[_0x8320('0x35')](_0x3d122a[_0x8320('0x36')],qs[_0x8320('0x37')](_0x5828c2['query'][_0x8320('0x37')]));_0x42c63b[_0x8320('0x38')]=_0x42c63b[_0x8320('0x38')][_0x8320('0x39')]?_0x42c63b[_0x8320('0x38')]:_0x3d122a[_0x8320('0x36')];if(_0x5828c2[_0x8320('0x34')][_0x8320('0x43')]){_0x42c63b['include']=[{'all':!![]}];}_0x42c63b=_[_0x8320('0x41')]({},_0x42c63b,_0x5828c2[_0x8320('0x42')]);return db[_0x8320('0x31')][_0x8320('0x4a')](_0x42c63b)[_0x8320('0x28')](handleEntityNotFound(_0x1a96ae,null))[_0x8320('0x28')](respondWithResult(_0x1a96ae,null))['catch'](handleError(_0x1a96ae,null));};exports['clone']=function(_0x128559,_0x1b49ec){var _0x381206={'where':{'id':_0x128559[_0x8320('0x47')]['id']}},_0x13d7c8={};_0x13d7c8['model']=_[_0x8320('0x48')](db['Attachment'][_0x8320('0x49')]);_0x381206['attributes']=_[_0x8320('0x35')](_0x13d7c8[_0x8320('0x36')],qs['fields'](_0x128559[_0x8320('0x34')][_0x8320('0x37')]));_0x381206[_0x8320('0x38')]=_0x381206[_0x8320('0x38')][_0x8320('0x39')]?_0x381206[_0x8320('0x38')]:_0x13d7c8['model'];if(_0x128559[_0x8320('0x34')][_0x8320('0x43')]){_0x381206[_0x8320('0x44')]=[{'all':!![]}];}_0x381206=_[_0x8320('0x41')]({},_0x381206,_0x128559[_0x8320('0x42')]);return db['Attachment'][_0x8320('0x4a')](_0x381206)[_0x8320('0x28')](handleEntityNotFound(_0x1b49ec,null))[_0x8320('0x28')](function(_0x5213f4){if(_0x5213f4){var _0x50d25e=_0x5213f4[_0x8320('0x4b')]({'plain':!![]});_0x50d25e=qs[_0x8320('0x4c')](_0x50d25e,['id',_0x8320('0x4d'),_0x8320('0x4e')]);_0x128559[_0x8320('0x4f')]=_[_0x8320('0x4c')](_0x128559['body'],['id',_0x8320('0x4d'),_0x8320('0x4e')]);return db[_0x8320('0x31')][_0x8320('0x50')](_[_0x8320('0x41')](_0x50d25e,_0x128559[_0x8320('0x4f')]),{'include':_0x128559[_0x8320('0x34')][_0x8320('0x43')]?[{'all':!![]}]:undefined});}})[_0x8320('0x28')](respondWithResult(_0x1b49ec,0xc9))[_0x8320('0x51')](handleError(_0x1b49ec,null));};exports[_0x8320('0x52')]=function(_0x62cf89,_0x7db3e4){if(_0x62cf89[_0x8320('0x4f')]['id']){delete _0x62cf89[_0x8320('0x4f')]['id'];}return db[_0x8320('0x31')][_0x8320('0x4a')]({'where':{'id':_0x62cf89['params']['id']}})[_0x8320('0x28')](handleEntityNotFound(_0x7db3e4,null))[_0x8320('0x28')](saveUpdates(_0x62cf89[_0x8320('0x4f')],null))[_0x8320('0x28')](respondWithResult(_0x7db3e4,null))[_0x8320('0x51')](handleError(_0x7db3e4,null));};exports['destroy']=function(_0x4eb2f9,_0x5eebd1){return db[_0x8320('0x31')][_0x8320('0x4a')]({'where':{'id':_0x4eb2f9[_0x8320('0x47')]['id']}})[_0x8320('0x28')](handleEntityNotFound(_0x5eebd1,null))[_0x8320('0x28')](removeEntity(_0x5eebd1,null))[_0x8320('0x51')](handleError(_0x5eebd1,null));};exports[_0x8320('0x50')]=function(_0x5b70fc,_0x2be58d,_0x14e64c){_0x5b70fc[_0x8320('0x4f')][_0x8320('0x2d')]=_0x5b70fc['file'][_0x8320('0x53')];_0x5b70fc[_0x8320('0x4f')][_0x8320('0x54')]=_0x5b70fc[_0x8320('0x55')]['filename'];_0x5b70fc[_0x8320('0x4f')][_0x8320('0x33')]=_0x5b70fc[_0x8320('0x55')][_0x8320('0x56')];return db[_0x8320('0x31')][_0x8320('0x50')](_0x5b70fc[_0x8320('0x4f')])['then'](respondWithResult(_0x2be58d,0xc9))[_0x8320('0x51')](handleError(_0x2be58d,null));};exports['download']=function(_0x44149e,_0x32d765,_0xc05eb){return db[_0x8320('0x31')]['findOne']({'where':{'id':_0x44149e['params']['id']},'raw':!![]})[_0x8320('0x28')](handleEntityNotFound(_0x32d765,null))[_0x8320('0x28')](function(_0x5ce038){if(_0x5ce038){var _0x167bfa=_0x5ce038[_0x8320('0x57')]!==null;var _0x546234=path[_0x8320('0x58')](config[_0x8320('0x59')],_0x8320('0x5a'));if(_0x167bfa){_0x546234=path[_0x8320('0x58')](_0x546234,_0x8320('0x5b'));}var _0x3ec5b4=path['join'](_0x546234,_0x5ce038[_0x8320('0x54')]);return _0x32d765['download'](_0x3ec5b4);}})[_0x8320('0x51')](handleError(_0x32d765,null));};
\ No newline at end of file
+var _0xa95d=['error','stack','name','send','map','Attachment','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','length','options','find','catch','get','omit','body','createdAt','updatedAt','create','file','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','apply','reject','update','then'];(function(_0x4b9000,_0x4b9d03){var _0x1c8f5d=function(_0xba2b0c){while(--_0xba2b0c){_0x4b9000['push'](_0x4b9000['shift']());}};_0x1c8f5d(++_0x4b9d03);}(_0xa95d,0x88));var _0xda95=function(_0x27af80,_0x396b70){_0x27af80=_0x27af80-0x0;var _0x855bc7=_0xa95d[_0x27af80];return _0x855bc7;};'use strict';var emlformat=require(_0xda95('0x0'));var rimraf=require(_0xda95('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xda95('0x2'));var moment=require(_0xda95('0x3'));var BPromise=require(_0xda95('0x4'));var Mustache=require('mustache');var util=require(_0xda95('0x5'));var path=require(_0xda95('0x6'));var sox=require(_0xda95('0x7'));var csv=require('to-csv');var ejs=require(_0xda95('0x8'));var fs=require('fs');var fs_extra=require(_0xda95('0x9'));var _=require('lodash');var squel=require(_0xda95('0xa'));var crypto=require('crypto');var jsforce=require(_0xda95('0xb'));var deskjs=require(_0xda95('0xc'));var toCsv=require('to-csv');var querystring=require(_0xda95('0xd'));var Papa=require(_0xda95('0xe'));var Redis=require(_0xda95('0xf'));var authService=require(_0xda95('0x10'));var qs=require(_0xda95('0x11'));var as=require(_0xda95('0x12'));var hardwareService=require(_0xda95('0x13'));var logger=require(_0xda95('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xda95('0x15'))['db'];function respondWithStatusCode(_0x22d2dd,_0x362c10){_0x362c10=_0x362c10||0xcc;return function(_0x3dba47){if(_0x3dba47){return _0x22d2dd[_0xda95('0x16')](_0x362c10);}return _0x22d2dd[_0xda95('0x17')](_0x362c10)[_0xda95('0x18')]();};}function respondWithResult(_0xb1b803,_0x462de7){_0x462de7=_0x462de7||0xc8;return function(_0x40aba4){if(_0x40aba4){return _0xb1b803[_0xda95('0x17')](_0x462de7)[_0xda95('0x19')](_0x40aba4);}};}function respondWithFilteredResult(_0x826162,_0x32d45d){return function(_0x7da6e0){if(_0x7da6e0){var _0x415e9c=typeof _0x32d45d[_0xda95('0x1a')]==='undefined'&&typeof _0x32d45d[_0xda95('0x1b')]==='undefined';var _0x1fdd05=_0x7da6e0[_0xda95('0x1c')];var _0x43a32a=_0x415e9c?0x0:_0x32d45d[_0xda95('0x1a')];var _0x1f918c=_0x415e9c?_0x7da6e0['count']:_0x32d45d[_0xda95('0x1a')]+_0x32d45d[_0xda95('0x1b')];var _0x27cf7c;if(_0x1f918c>=_0x1fdd05){_0x1f918c=_0x1fdd05;_0x27cf7c=0xc8;}else{_0x27cf7c=0xce;}_0x826162[_0xda95('0x17')](_0x27cf7c);return _0x826162[_0xda95('0x1d')]('Content-Range',_0x43a32a+'-'+_0x1f918c+'/'+_0x1fdd05)[_0xda95('0x19')](_0x7da6e0);}return null;};}function patchUpdates(_0x1c0d3e){return function(_0x22fd9d){try{jsonpatch[_0xda95('0x1e')](_0x22fd9d,_0x1c0d3e,!![]);}catch(_0x426103){return BPromise[_0xda95('0x1f')](_0x426103);}return _0x22fd9d['save']();};}function saveUpdates(_0x226a49,_0x305f97){return function(_0x1ff26b){if(_0x1ff26b){return _0x1ff26b[_0xda95('0x20')](_0x226a49)['then'](function(_0x2497af){return _0x2497af;});}return null;};}function removeEntity(_0x1b58b8,_0x479a6a){return function(_0x41a649){if(_0x41a649){return _0x41a649['destroy']()[_0xda95('0x21')](function(){_0x1b58b8[_0xda95('0x17')](0xcc)[_0xda95('0x18')]();});}};}function handleEntityNotFound(_0xae20a6,_0x182ee7){return function(_0x4f78c5){if(!_0x4f78c5){_0xae20a6[_0xda95('0x16')](0x194);}return _0x4f78c5;};}function handleError(_0x3522db,_0x10b39d){_0x10b39d=_0x10b39d||0x1f4;return function(_0x1e662f){logger[_0xda95('0x22')](_0x1e662f[_0xda95('0x23')]);if(_0x1e662f[_0xda95('0x24')]){delete _0x1e662f[_0xda95('0x24')];}_0x3522db[_0xda95('0x17')](_0x10b39d)[_0xda95('0x25')](_0x1e662f);};}exports['index']=function(_0x2b9acb,_0x3d26e7){var _0x589afd={},_0x5195a7={},_0x9099e5={'count':0x0,'rows':[]};var _0x2d87d0=_[_0xda95('0x26')](db[_0xda95('0x27')][_0xda95('0x28')],function(_0x2b9a86){return{'name':_0x2b9a86[_0xda95('0x29')],'type':_0x2b9a86['type']['key']};});_0x5195a7[_0xda95('0x2a')]=_[_0xda95('0x26')](_0x2d87d0,_0xda95('0x24'));_0x5195a7[_0xda95('0x2b')]=_[_0xda95('0x2c')](_0x2b9acb['query']);_0x5195a7[_0xda95('0x2d')]=_[_0xda95('0x2e')](_0x5195a7[_0xda95('0x2a')],_0x5195a7[_0xda95('0x2b')]);_0x589afd[_0xda95('0x2f')]=_['intersection'](_0x5195a7[_0xda95('0x2a')],qs[_0xda95('0x30')](_0x2b9acb[_0xda95('0x2b')][_0xda95('0x30')]));_0x589afd['attributes']=_0x589afd['attributes']['length']?_0x589afd[_0xda95('0x2f')]:_0x5195a7['model'];if(!_0x2b9acb['query'][_0xda95('0x31')](_0xda95('0x32'))){_0x589afd[_0xda95('0x1b')]=qs[_0xda95('0x1b')](_0x2b9acb['query'][_0xda95('0x1b')]);_0x589afd[_0xda95('0x1a')]=qs[_0xda95('0x1a')](_0x2b9acb['query']['offset']);}_0x589afd[_0xda95('0x33')]=qs[_0xda95('0x34')](_0x2b9acb[_0xda95('0x2b')]['sort']);_0x589afd['where']=qs[_0xda95('0x2d')](_[_0xda95('0x35')](_0x2b9acb[_0xda95('0x2b')],_0x5195a7[_0xda95('0x2d')]),_0x2d87d0);if(_0x2b9acb[_0xda95('0x2b')][_0xda95('0x36')]){_0x589afd[_0xda95('0x37')]=_['merge'](_0x589afd[_0xda95('0x37')],{'$or':_['map'](_0x2d87d0,function(_0x1b0cfc){if(_0x1b0cfc[_0xda95('0x38')]!==_0xda95('0x39')){var _0x4bef8c={};_0x4bef8c[_0x1b0cfc[_0xda95('0x24')]]={'$like':'%'+_0x2b9acb['query'][_0xda95('0x36')]+'%'};return _0x4bef8c;}})});}_0x589afd=_[_0xda95('0x3a')]({},_0x589afd,_0x2b9acb['options']);var _0x1810bd={'where':_0x589afd[_0xda95('0x37')]};return db[_0xda95('0x27')]['count'](_0x1810bd)[_0xda95('0x21')](function(_0x28931e){_0x9099e5[_0xda95('0x1c')]=_0x28931e;if(_0x2b9acb[_0xda95('0x2b')][_0xda95('0x3b')]){_0x589afd[_0xda95('0x3c')]=[{'all':!![]}];}return db[_0xda95('0x27')][_0xda95('0x3d')](_0x589afd);})[_0xda95('0x21')](function(_0x51ba70){_0x9099e5[_0xda95('0x3e')]=_0x51ba70;return _0x9099e5;})[_0xda95('0x21')](respondWithFilteredResult(_0x3d26e7,_0x589afd))['catch'](handleError(_0x3d26e7,null));};exports[_0xda95('0x3f')]=function(_0x2ef8da,_0x498216){var _0x581841={'raw':!![],'where':{'id':_0x2ef8da[_0xda95('0x40')]['id']}},_0x7e096c={};_0x7e096c[_0xda95('0x2a')]=_[_0xda95('0x2c')](db[_0xda95('0x27')]['rawAttributes']);_0x7e096c[_0xda95('0x2b')]=_[_0xda95('0x2c')](_0x2ef8da[_0xda95('0x2b')]);_0x7e096c[_0xda95('0x2d')]=_[_0xda95('0x2e')](_0x7e096c[_0xda95('0x2a')],_0x7e096c[_0xda95('0x2b')]);_0x581841[_0xda95('0x2f')]=_['intersection'](_0x7e096c[_0xda95('0x2a')],qs['fields'](_0x2ef8da[_0xda95('0x2b')][_0xda95('0x30')]));_0x581841[_0xda95('0x2f')]=_0x581841[_0xda95('0x2f')][_0xda95('0x41')]?_0x581841['attributes']:_0x7e096c[_0xda95('0x2a')];if(_0x2ef8da[_0xda95('0x2b')][_0xda95('0x3b')]){_0x581841['include']=[{'all':!![]}];}_0x581841=_[_0xda95('0x3a')]({},_0x581841,_0x2ef8da[_0xda95('0x42')]);return db['Attachment'][_0xda95('0x43')](_0x581841)[_0xda95('0x21')](handleEntityNotFound(_0x498216,null))[_0xda95('0x21')](respondWithResult(_0x498216,null))[_0xda95('0x44')](handleError(_0x498216,null));};exports['clone']=function(_0x740c15,_0x38fd1d){var _0x250750={'where':{'id':_0x740c15[_0xda95('0x40')]['id']}},_0x5bca2={};_0x5bca2[_0xda95('0x2a')]=_[_0xda95('0x2c')](db['Attachment'][_0xda95('0x28')]);_0x250750[_0xda95('0x2f')]=_['intersection'](_0x5bca2['model'],qs[_0xda95('0x30')](_0x740c15[_0xda95('0x2b')][_0xda95('0x30')]));_0x250750[_0xda95('0x2f')]=_0x250750[_0xda95('0x2f')][_0xda95('0x41')]?_0x250750[_0xda95('0x2f')]:_0x5bca2[_0xda95('0x2a')];if(_0x740c15['query'][_0xda95('0x3b')]){_0x250750[_0xda95('0x3c')]=[{'all':!![]}];}_0x250750=_[_0xda95('0x3a')]({},_0x250750,_0x740c15['options']);return db[_0xda95('0x27')]['find'](_0x250750)[_0xda95('0x21')](handleEntityNotFound(_0x38fd1d,null))[_0xda95('0x21')](function(_0x32dfe0){if(_0x32dfe0){var _0x1477f1=_0x32dfe0[_0xda95('0x45')]({'plain':!![]});_0x1477f1=qs[_0xda95('0x46')](_0x1477f1,['id','createdAt','updatedAt']);_0x740c15['body']=_[_0xda95('0x46')](_0x740c15[_0xda95('0x47')],['id',_0xda95('0x48'),_0xda95('0x49')]);return db[_0xda95('0x27')][_0xda95('0x4a')](_[_0xda95('0x3a')](_0x1477f1,_0x740c15['body']),{'include':_0x740c15['query'][_0xda95('0x3b')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x38fd1d,0xc9))[_0xda95('0x44')](handleError(_0x38fd1d,null));};exports[_0xda95('0x20')]=function(_0x4aa1fd,_0x281a1b){if(_0x4aa1fd[_0xda95('0x47')]['id']){delete _0x4aa1fd[_0xda95('0x47')]['id'];}return db[_0xda95('0x27')][_0xda95('0x43')]({'where':{'id':_0x4aa1fd['params']['id']}})['then'](handleEntityNotFound(_0x281a1b,null))[_0xda95('0x21')](saveUpdates(_0x4aa1fd[_0xda95('0x47')],null))[_0xda95('0x21')](respondWithResult(_0x281a1b,null))[_0xda95('0x44')](handleError(_0x281a1b,null));};exports['destroy']=function(_0x48df00,_0x3e7e8a){return db[_0xda95('0x27')]['find']({'where':{'id':_0x48df00[_0xda95('0x40')]['id']}})[_0xda95('0x21')](handleEntityNotFound(_0x3e7e8a,null))[_0xda95('0x21')](removeEntity(_0x3e7e8a,null))['catch'](handleError(_0x3e7e8a,null));};exports[_0xda95('0x4a')]=function(_0x229378,_0x531cd5,_0x20bba7){_0x229378['body'][_0xda95('0x24')]=_0x229378[_0xda95('0x4b')]['originalname'];_0x229378[_0xda95('0x47')][_0xda95('0x4c')]=_0x229378[_0xda95('0x4b')][_0xda95('0x4d')];_0x229378[_0xda95('0x47')][_0xda95('0x38')]=_0x229378[_0xda95('0x4b')][_0xda95('0x4e')];return db[_0xda95('0x27')][_0xda95('0x4a')](_0x229378['body'])[_0xda95('0x21')](respondWithResult(_0x531cd5,0xc9))[_0xda95('0x44')](handleError(_0x531cd5,null));};exports[_0xda95('0x4f')]=function(_0x5d8fc6,_0x3135b0,_0x303dca){return db[_0xda95('0x27')][_0xda95('0x50')]({'where':{'id':_0x5d8fc6[_0xda95('0x40')]['id']},'raw':!![]})[_0xda95('0x21')](handleEntityNotFound(_0x3135b0,null))[_0xda95('0x21')](function(_0x368f8c){if(_0x368f8c){var _0x221e62=_0x368f8c[_0xda95('0x51')]!==null;var _0x745391=path[_0xda95('0x52')](config['root'],_0xda95('0x53'));if(_0x221e62){_0x745391=path[_0xda95('0x52')](_0x745391,_0xda95('0x54'));}var _0xb3319e=path[_0xda95('0x52')](_0x745391,_0x368f8c[_0xda95('0x4c')]);return _0x3135b0[_0xda95('0x4f')](_0xb3319e);}})['catch'](handleError(_0x3135b0,null));};
\ No newline at end of file
index 677612e..eca2f4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0699=['attachments','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./attachment.attributes','exports','define','Attachment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0699,0xa9));var _0x9069=function(_0x3cf3ea,_0x488feb){_0x3cf3ea=_0x3cf3ea-0x0;var _0x28ed76=_0x0699[_0x3cf3ea];return _0x28ed76;};'use strict';var _=require(_0x9069('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x9069('0x1'));var moment=require(_0x9069('0x2'));var BPromise=require(_0x9069('0x3'));var rp=require(_0x9069('0x4'));var fs=require('fs');var path=require(_0x9069('0x5'));var rimraf=require('rimraf');var config=require(_0x9069('0x6'));var attributes=require(_0x9069('0x7'));module[_0x9069('0x8')]=function(_0x5c476b,_0x5bb60e){return _0x5c476b[_0x9069('0x9')](_0x9069('0xa'),attributes,{'tableName':_0x9069('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdecb=['Attachment','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','define'];(function(_0x4e74d5,_0x26d7c3){var _0x4893d0=function(_0x213d8c){while(--_0x213d8c){_0x4e74d5['push'](_0x4e74d5['shift']());}};_0x4893d0(++_0x26d7c3);}(_0xdecb,0x1da));var _0xbdec=function(_0x5f5659,_0x374c36){_0x5f5659=_0x5f5659-0x0;var _0x3a53a5=_0xdecb[_0x5f5659];return _0x3a53a5;};'use strict';var _=require('lodash');var util=require(_0xbdec('0x0'));var logger=require(_0xbdec('0x1'))(_0xbdec('0x2'));var moment=require('moment');var BPromise=require(_0xbdec('0x3'));var rp=require(_0xbdec('0x4'));var fs=require('fs');var path=require(_0xbdec('0x5'));var rimraf=require(_0xbdec('0x6'));var config=require(_0xbdec('0x7'));var attributes=require(_0xbdec('0x8'));module['exports']=function(_0x2afe87,_0x2f5bb6){return _0x2afe87[_0xbdec('0x9')](_0xbdec('0xa'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3c50f54..4509133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af2=['message','Attachment,\x20%s,\x20%s','result','catch','CreateAttachment','Attachment','create','body','options','raw','debug','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','error'];(function(_0x119f19,_0x3475a2){var _0x540a8d=function(_0x23ecf0){while(--_0x23ecf0){_0x119f19['push'](_0x119f19['shift']());}};_0x540a8d(++_0x3475a2);}(_0x7af2,0x119));var _0x27af=function(_0x3c31a2,_0xd7a9a9){_0x3c31a2=_0x3c31a2-0x0;var _0x26afe9=_0x7af2[_0x3c31a2];return _0x26afe9;};'use strict';var _=require('lodash');var util=require(_0x27af('0x0'));var moment=require(_0x27af('0x1'));var BPromise=require(_0x27af('0x2'));var rs=require(_0x27af('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x27af('0x4'))['db'];var utils=require(_0x27af('0x5'));var logger=require(_0x27af('0x6'))(_0x27af('0x7'));var config=require(_0x27af('0x8'));var jayson=require(_0x27af('0x9'));var client=jayson[_0x27af('0xa')][_0x27af('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2193c6,_0x572219,_0x1e2509){return new BPromise(function(_0x366868,_0x389e97){return client['request'](_0x2193c6,_0x1e2509)[_0x27af('0xc')](function(_0xfa1882){logger[_0x27af('0xd')]('Attachment,\x20%s,\x20%s',_0x572219,_0x27af('0xe'));logger['debug']('Attachment,\x20%s,\x20%s,\x20%s',_0x572219,_0x27af('0xe'),JSON['stringify'](_0xfa1882));if(_0xfa1882['error']){if(_0xfa1882[_0x27af('0xf')]['code']===0x1f4){logger[_0x27af('0xf')]('Attachment,\x20%s,\x20%s',_0x572219,_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);return _0x389e97(_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);}logger[_0x27af('0xf')](_0x27af('0x11'),_0x572219,_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);return _0x366868(_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);}else{logger[_0x27af('0xd')](_0x27af('0x11'),_0x572219,_0x27af('0xe'));_0x366868(_0xfa1882[_0x27af('0x12')][_0x27af('0x10')]);}})[_0x27af('0x13')](function(_0x13f8ed){logger[_0x27af('0xf')]('Attachment,\x20%s,\x20%s',_0x572219,_0x13f8ed);_0x389e97(_0x13f8ed);});});}exports[_0x27af('0x14')]=function(_0x31d702){var _0x5997ae=this;return new Promise(function(_0x4e6e2f,_0x20a6d7){return db[_0x27af('0x15')][_0x27af('0x16')](_0x31d702[_0x27af('0x17')],{'raw':_0x31d702[_0x27af('0x18')]?_0x31d702['options'][_0x27af('0x19')]===undefined?!![]:![]:!![]})[_0x27af('0xc')](function(_0xcb4b90){logger['info'](_0x27af('0x14'),_0x31d702);logger[_0x27af('0x1a')](_0x27af('0x14'),_0x31d702,JSON['stringify'](_0xcb4b90));_0x4e6e2f(_0xcb4b90);})[_0x27af('0x13')](function(_0x2460f4){logger[_0x27af('0xf')](_0x27af('0x14'),_0x2460f4[_0x27af('0x10')],_0x31d702);_0x20a6d7(_0x5997ae[_0x27af('0xf')](0x1f4,_0x2460f4[_0x27af('0x10')]));});});};
\ No newline at end of file
+var _0x4522=['code','Attachment,\x20%s,\x20%s','message','result','catch','CreateAttachment','Attachment','body','options','raw','info','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','stringify','error'];(function(_0x15ee0c,_0x300496){var _0x23d328=function(_0x124ce5){while(--_0x124ce5){_0x15ee0c['push'](_0x15ee0c['shift']());}};_0x23d328(++_0x300496);}(_0x4522,0x1a0));var _0x2452=function(_0x116e47,_0x2ee4d4){_0x116e47=_0x116e47-0x0;var _0xfcfb2a=_0x4522[_0x116e47];return _0xfcfb2a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2452('0x0'));var BPromise=require(_0x2452('0x1'));var rs=require(_0x2452('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2452('0x3'))['db'];var utils=require(_0x2452('0x4'));var logger=require(_0x2452('0x5'))(_0x2452('0x6'));var config=require(_0x2452('0x7'));var jayson=require(_0x2452('0x8'));var client=jayson[_0x2452('0x9')][_0x2452('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f0139,_0x149807,_0x3bc193){return new BPromise(function(_0x33b935,_0x24073f){return client[_0x2452('0xb')](_0x2f0139,_0x3bc193)[_0x2452('0xc')](function(_0x2995b5){logger['info']('Attachment,\x20%s,\x20%s',_0x149807,_0x2452('0xd'));logger['debug']('Attachment,\x20%s,\x20%s,\x20%s',_0x149807,_0x2452('0xd'),JSON[_0x2452('0xe')](_0x2995b5));if(_0x2995b5[_0x2452('0xf')]){if(_0x2995b5[_0x2452('0xf')][_0x2452('0x10')]===0x1f4){logger[_0x2452('0xf')](_0x2452('0x11'),_0x149807,_0x2995b5[_0x2452('0xf')]['message']);return _0x24073f(_0x2995b5['error']['message']);}logger[_0x2452('0xf')]('Attachment,\x20%s,\x20%s',_0x149807,_0x2995b5[_0x2452('0xf')]['message']);return _0x33b935(_0x2995b5[_0x2452('0xf')][_0x2452('0x12')]);}else{logger['info'](_0x2452('0x11'),_0x149807,'request\x20sent');_0x33b935(_0x2995b5[_0x2452('0x13')][_0x2452('0x12')]);}})[_0x2452('0x14')](function(_0xdede20){logger['error'](_0x2452('0x11'),_0x149807,_0xdede20);_0x24073f(_0xdede20);});});}exports[_0x2452('0x15')]=function(_0x59d89a){var _0x4802ad=this;return new Promise(function(_0x1bfb44,_0x37c6a6){return db[_0x2452('0x16')]['create'](_0x59d89a[_0x2452('0x17')],{'raw':_0x59d89a[_0x2452('0x18')]?_0x59d89a[_0x2452('0x18')][_0x2452('0x19')]===undefined?!![]:![]:!![]})[_0x2452('0xc')](function(_0x1c70cb){logger[_0x2452('0x1a')](_0x2452('0x15'),_0x59d89a);logger['debug']('CreateAttachment',_0x59d89a,JSON[_0x2452('0xe')](_0x1c70cb));_0x1bfb44(_0x1c70cb);})[_0x2452('0x14')](function(_0x4bb3ff){logger[_0x2452('0xf')](_0x2452('0x15'),_0x4bb3ff[_0x2452('0x12')],_0x59d89a);_0x37c6a6(_0x4802ad[_0x2452('0xf')](0x1f4,_0x4bb3ff[_0x2452('0x12')]));});});};
\ No newline at end of file
index 58d8110..ae0ec0c 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(_0x23fcd5,_0x42ad5d){var _0x32ff41=function(_0x43faf5){while(--_0x43faf5){_0x23fcd5['push'](_0x23fcd5['shift']());}};_0x32ff41(++_0x42ad5d);}(_0xadb5,0xad));var _0x5adb=function(_0x133d3f,_0x1d146d){_0x133d3f=_0x133d3f-0x0;var _0x1795ef=_0xadb5[_0x133d3f];return _0x1795ef;};'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 _0x5f2f=['show','/:id/download','download','post','/:id/clone','clone','root','server/files/attachments/','format','now','originalname','replace','single','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./attachment.controller','get','isAuthenticated','index','/:id'];(function(_0x4d6ca0,_0x1755d1){var _0x5f4034=function(_0x1a2e9a){while(--_0x1a2e9a){_0x4d6ca0['push'](_0x4d6ca0['shift']());}};_0x5f4034(++_0x1755d1);}(_0x5f2f,0x73));var _0xf5f2=function(_0x26f36f,_0xf90e9b){_0x26f36f=_0x26f36f-0x0;var _0x23104d=_0x5f2f[_0x26f36f];return _0x23104d;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')](_0xf5f2('0x11'),auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x53fb33,_0xa7e1a6,_0x151aba){_0x151aba(null,path['join'](config[_0xf5f2('0x13')],_0xf5f2('0x14')));},'filename':function(_0x331482,_0x3f2997,_0x59bb6c){_0x59bb6c(null,util[_0xf5f2('0x15')]('%s-%s',Date[_0xf5f2('0x16')](),_0x3f2997[_0xf5f2('0x17')][_0xf5f2('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf5f2('0x10')]('/',upload[_0xf5f2('0x19')]('file'),controller[_0xf5f2('0x1a')]);router[_0xf5f2('0x1b')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1c')]);router[_0xf5f2('0x1d')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1e')]);module[_0xf5f2('0x1f')]=router;
\ No newline at end of file
index 2dba026..7840ee5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2b=['domain','authenticate','Error\x20authenticate\x20%s:\x20%s','inspect','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','password','salt','role','blocked','blockedAt','online','admin','agent','name','disabled','add','minutes','getLicense','status','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcf2b,0x85));var _0xbcf2=function(_0x44fd6b,_0x338098){_0x44fd6b=_0x44fd6b-0x0;var _0x7cba12=_0xcf2b[_0x44fd6b];return _0x7cba12;};'use strict';var passport=require(_0xbcf2('0x0'));var LocalStrategy=require(_0xbcf2('0x1'))[_0xbcf2('0x2')];var moment=require(_0xbcf2('0x3'));var ActiveDirectory=require(_0xbcf2('0x4'));var BPromise=require(_0xbcf2('0x5'));var util=require(_0xbcf2('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xbcf2('0x7'));var utils=require(_0xbcf2('0x8'));var config=require(_0xbcf2('0x9'));var logger=require(_0xbcf2('0xa'))(_0xbcf2('0xb'));function isActiveDirectoryConfigured(_0x34fb71){var _0x5f5ac4=![];if(typeof _0x34fb71[_0xbcf2('0xc')]!==_0xbcf2('0xd')){_0x5f5ac4=_0x34fb71[_0xbcf2('0xc')]['baseDN']&&_0x34fb71['activedirectory']['url']&&_0x34fb71[_0xbcf2('0xc')][_0xbcf2('0xe')];}return _0x5f5ac4;}function adAuthenticate(_0x5e79e6,_0x349df0,_0x31fc30){return new BPromise(function(_0x8f8cf7,_0x8dc8d9){try{var _0x4d6e5c=new ActiveDirectory(_0x5e79e6);_0x4d6e5c[_0xbcf2('0xf')](_0x349df0,_0x31fc30,function(_0x2b7370,_0x357ae1){if(_0x2b7370){logger['error'](_0xbcf2('0x10'),_0x349df0,util[_0xbcf2('0x11')](_0x2b7370,{'showHidden':![],'depth':null}));_0x8dc8d9('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x357ae1){logger[_0xbcf2('0x12')](_0xbcf2('0x13'),_0x349df0);_0x8dc8d9(_0xbcf2('0x14'));}else{_0x8f8cf7(_0x357ae1);}});}catch(_0x1dfc28){_0x8dc8d9(_0x1dfc28);}});}function ActiveDirectoryAuthenticate(_0x5affc4,_0x1f854e,_0x543eba,_0x15d2a2){var _0x564ea7,_0x543896;if(!isActiveDirectoryConfigured(config)){logger[_0xbcf2('0x12')](_0xbcf2('0x15'),_0x1f854e);return _0x15d2a2(null,![],{'message':_0xbcf2('0x14')});}return db['Setting'][_0xbcf2('0x16')]({'where':{'id':0x1},'attributes':[_0xbcf2('0x17'),_0xbcf2('0x18')],'raw':!![]})[_0xbcf2('0x19')](function(_0x12fae9){_0x564ea7=_0x12fae9;if(!_0x564ea7[_0xbcf2('0x17')]){logger[_0xbcf2('0x12')](_0xbcf2('0x1a'),_0x1f854e);throw new Error(_0xbcf2('0x14'));}return _0x5affc4[_0xbcf2('0x16')]({'attributes':['id','name',_0xbcf2('0x1b'),_0xbcf2('0x1c'),_0xbcf2('0x1d'),'disabled',_0xbcf2('0x1e'),_0xbcf2('0x1f'),_0xbcf2('0x20')],'where':{'name':_0x1f854e,'role':{'$or':[_0xbcf2('0x21'),'user',_0xbcf2('0x22')]},'adSsoEnabled':!![]}});})[_0xbcf2('0x19')](function(_0x382e83){if(!_0x382e83||_0x382e83&&_0x382e83[_0xbcf2('0x23')]!==_0x1f854e){throw new Error(_0xbcf2('0x14'));}_0x543896=_0x382e83;var _0x224adc=_0x543896[_0xbcf2('0x23')]+'@'+config[_0xbcf2('0xc')][_0xbcf2('0xe')];return adAuthenticate(config[_0xbcf2('0xc')],_0x224adc,_0x543eba);})[_0xbcf2('0x19')](function(_0x5dced9){if(_0x543896[_0xbcf2('0x24')]){throw new Error(_0xbcf2('0x14'));}if(_0x564ea7['blockDuration']>0x0){if(_0x543896['blocked']){if(moment(_0x543896[_0xbcf2('0x1f')])[_0xbcf2('0x25')](_0x564ea7[_0xbcf2('0x18')],_0xbcf2('0x26'))>moment()){throw new Error(_0xbcf2('0x14'));}return utils['clearBlockUser'](_0x543896,0x0,![],null)['then'](function(){return utils[_0xbcf2('0x27')](_0x543896);})[_0xbcf2('0x19')](function(){return _0x15d2a2(null,_0x543896);});}else{return utils[_0xbcf2('0x27')](_0x543896)['then'](function(){return _0x15d2a2(null,_0x543896);});}}else{return utils[_0xbcf2('0x27')](_0x543896)[_0xbcf2('0x19')](function(){return _0x15d2a2(null,_0x543896);});}})['catch'](function(_0x486803){return _0x15d2a2(null,![],_0x486803);});}function handleError(_0x180a03,_0x3fb09f,_0x17e6a8){return _0x180a03[_0xbcf2('0x28')](_0x3fb09f||0x1f4)[_0xbcf2('0x29')]({'message':_0x17e6a8?_0x17e6a8[_0xbcf2('0x2a')]||_0x17e6a8:''});}exports[_0xbcf2('0x2b')]=function(_0x2e6ec5,_0x505639,_0x3b3154){passport['authenticate'](_0xbcf2('0x2c'),function(_0x3a1b63,_0x3474d6,_0x249d4e){var _0x3e6ead=_0x3a1b63||_0x249d4e;if(_0x3e6ead){return handleError(_0x505639,0x191,_0x3e6ead);}if(!_0x3474d6){return handleError(_0x505639,0x194,{'message':_0xbcf2('0x2d')});}else{var _0x127d44={'payload':{'id':_0x3474d6['id'],'role':_0x3474d6[_0xbcf2('0x1d')]},'options':{'expiresIn':0x15180}};return authService[_0xbcf2('0x2e')](_0x127d44)['then'](function(_0x59e7b4){_0x505639[_0xbcf2('0x2f')]({'id':_0x3474d6['id'],'token':_0x59e7b4,'statusCall':'','isAlreadyLogged':_0x3474d6[_0xbcf2('0x20')]});});}})(_0x2e6ec5,_0x505639,_0x3b3154);};passport['use']('ad-login',new LocalStrategy({'usernameField':_0xbcf2('0x23'),'passwordField':_0xbcf2('0x1b')},function(_0x3c12b8,_0x592ba9,_0x62b2b4){return ActiveDirectoryAuthenticate(db[_0xbcf2('0x30')],_0x3c12b8,_0x592ba9,_0x62b2b4);}));
\ No newline at end of file
+var _0x1f4f=['disabled','blockedAt','minutes','clearBlockUser','getLicense','catch','status','send','login','ad-login','signToken','json','online','password','User','passport','passport-local','Strategy','moment','activedirectory2','util','../../mysqldb','../../components/auth/service','../../config/environment','../../config/logger','api','activedirectory','undefined','url','domain','authenticate','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','role','blocked','user','agent'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x1f4f,0x6b));var _0xf1f4=function(_0x3781c7,_0x5ea182){_0x3781c7=_0x3781c7-0x0;var _0x2f7189=_0x1f4f[_0x3781c7];return _0x2f7189;};'use strict';var passport=require(_0xf1f4('0x0'));var LocalStrategy=require(_0xf1f4('0x1'))[_0xf1f4('0x2')];var moment=require(_0xf1f4('0x3'));var ActiveDirectory=require(_0xf1f4('0x4'));var BPromise=require('bluebird');var util=require(_0xf1f4('0x5'));var db=require(_0xf1f4('0x6'))['db'];var authService=require(_0xf1f4('0x7'));var utils=require('../../config/utils');var config=require(_0xf1f4('0x8'));var logger=require(_0xf1f4('0x9'))(_0xf1f4('0xa'));function isActiveDirectoryConfigured(_0x1b8fd8){var _0x308ec0=![];if(typeof _0x1b8fd8[_0xf1f4('0xb')]!==_0xf1f4('0xc')){_0x308ec0=_0x1b8fd8[_0xf1f4('0xb')]['baseDN']&&_0x1b8fd8[_0xf1f4('0xb')][_0xf1f4('0xd')]&&_0x1b8fd8['activedirectory'][_0xf1f4('0xe')];}return _0x308ec0;}function adAuthenticate(_0x3efdea,_0x3baac8,_0x49ba8b){return new BPromise(function(_0x2ae02d,_0x29c63b){try{var _0x4d4e0d=new ActiveDirectory(_0x3efdea);_0x4d4e0d[_0xf1f4('0xf')](_0x3baac8,_0x49ba8b,function(_0xd753da,_0x4b7ddc){if(_0xd753da){logger['error'](_0xf1f4('0x10'),_0x3baac8,util['inspect'](_0xd753da,{'showHidden':![],'depth':null}));_0x29c63b(_0xf1f4('0x11'));}else if(!_0x4b7ddc){logger[_0xf1f4('0x12')](_0xf1f4('0x13'),_0x3baac8);_0x29c63b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x2ae02d(_0x4b7ddc);}});}catch(_0xe0507f){_0x29c63b(_0xe0507f);}});}function ActiveDirectoryAuthenticate(_0x16f9cf,_0x47f124,_0xb4bcda,_0x34de48){var _0x577407,_0x267a8f;if(!isActiveDirectoryConfigured(config)){logger[_0xf1f4('0x12')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x47f124);return _0x34de48(null,![],{'message':_0xf1f4('0x11')});}return db[_0xf1f4('0x14')][_0xf1f4('0x15')]({'where':{'id':0x1},'attributes':[_0xf1f4('0x16'),_0xf1f4('0x17')],'raw':!![]})[_0xf1f4('0x18')](function(_0x40afec){_0x577407=_0x40afec;if(!_0x577407[_0xf1f4('0x16')]){logger[_0xf1f4('0x12')](_0xf1f4('0x19'),_0x47f124);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x16f9cf[_0xf1f4('0x15')]({'attributes':['id',_0xf1f4('0x1a'),'password','salt',_0xf1f4('0x1b'),'disabled',_0xf1f4('0x1c'),'blockedAt','online'],'where':{'name':_0x47f124,'role':{'$or':['admin',_0xf1f4('0x1d'),_0xf1f4('0x1e')]},'adSsoEnabled':!![]}});})[_0xf1f4('0x18')](function(_0x2db3d3){if(!_0x2db3d3||_0x2db3d3&&_0x2db3d3[_0xf1f4('0x1a')]!==_0x47f124){throw new Error(_0xf1f4('0x11'));}_0x267a8f=_0x2db3d3;var _0x23d266=_0x267a8f[_0xf1f4('0x1a')]+'@'+config[_0xf1f4('0xb')][_0xf1f4('0xe')];return adAuthenticate(config[_0xf1f4('0xb')],_0x23d266,_0xb4bcda);})[_0xf1f4('0x18')](function(_0x6f7e75){if(_0x267a8f[_0xf1f4('0x1f')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x577407[_0xf1f4('0x17')]>0x0){if(_0x267a8f['blocked']){if(moment(_0x267a8f[_0xf1f4('0x20')])['add'](_0x577407[_0xf1f4('0x17')],_0xf1f4('0x21'))>moment()){throw new Error(_0xf1f4('0x11'));}return utils[_0xf1f4('0x22')](_0x267a8f,0x0,![],null)[_0xf1f4('0x18')](function(){return utils['getLicense'](_0x267a8f);})[_0xf1f4('0x18')](function(){return _0x34de48(null,_0x267a8f);});}else{return utils[_0xf1f4('0x23')](_0x267a8f)[_0xf1f4('0x18')](function(){return _0x34de48(null,_0x267a8f);});}}else{return utils[_0xf1f4('0x23')](_0x267a8f)[_0xf1f4('0x18')](function(){return _0x34de48(null,_0x267a8f);});}})[_0xf1f4('0x24')](function(_0x12aa4f){return _0x34de48(null,![],_0x12aa4f);});}function handleError(_0x561a2a,_0x16d2f0,_0x4f3160){return _0x561a2a[_0xf1f4('0x25')](_0x16d2f0||0x1f4)[_0xf1f4('0x26')]({'message':_0x4f3160?_0x4f3160['message']||_0x4f3160:''});}exports[_0xf1f4('0x27')]=function(_0x3706ba,_0x164971,_0x16c668){passport[_0xf1f4('0xf')](_0xf1f4('0x28'),function(_0x5ea3e5,_0x5ae3a5,_0x45227d){var _0x3f2260=_0x5ea3e5||_0x45227d;if(_0x3f2260){return handleError(_0x164971,0x191,_0x3f2260);}if(!_0x5ae3a5){return handleError(_0x164971,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x4034bd={'payload':{'id':_0x5ae3a5['id'],'role':_0x5ae3a5[_0xf1f4('0x1b')]},'options':{'expiresIn':0x15180}};return authService[_0xf1f4('0x29')](_0x4034bd)['then'](function(_0x10aeb7){_0x164971[_0xf1f4('0x2a')]({'id':_0x5ae3a5['id'],'token':_0x10aeb7,'statusCall':'','isAlreadyLogged':_0x5ae3a5[_0xf1f4('0x2b')]});});}})(_0x3706ba,_0x164971,_0x16c668);};passport['use'](_0xf1f4('0x28'),new LocalStrategy({'usernameField':_0xf1f4('0x1a'),'passwordField':_0xf1f4('0x2c')},function(_0x2020b5,_0x385555,_0x3ebb40){return ActiveDirectoryAuthenticate(db[_0xf1f4('0x2d')],_0x2020b5,_0x385555,_0x3ebb40);}));
\ No newline at end of file
index bc8ec2f..5e8e5bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c69=['login','exports','Router','post'];(function(_0x5035a8,_0x30ad04){var _0x23c1de=function(_0x5b6f32){while(--_0x5b6f32){_0x5035a8['push'](_0x5035a8['shift']());}};_0x23c1de(++_0x30ad04);}(_0x3c69,0x19a));var _0x93c6=function(_0x109412,_0x2b5eb0){_0x109412=_0x109412-0x0;var _0x28ee3f=_0x3c69[_0x109412];return _0x28ee3f;};'use strict';var express=require('express');var router=express[_0x93c6('0x0')]();var controller=require('./authActiveDirectory.controller');router[_0x93c6('0x1')]('/',controller[_0x93c6('0x2')]);module[_0x93c6('0x3')]=router;
\ No newline at end of file
+var _0x5c4b=['./authActiveDirectory.controller','post','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5c4b,0x1d0));var _0xb5c4=function(_0x26f634,_0x3fe684){_0x26f634=_0x26f634-0x0;var _0x3d4324=_0x5c4b[_0x26f634];return _0x3d4324;};'use strict';var express=require('express');var router=express[_0xb5c4('0x0')]();var controller=require(_0xb5c4('0x1'));router[_0xb5c4('0x2')]('/',controller['login']);module['exports']=router;
\ No newline at end of file
index 793498c..899d00c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x3038b0,_0xb6aa6d){var _0x36ddb3=function(_0x5a08d3){while(--_0x5a08d3){_0x3038b0['push'](_0x3038b0['shift']());}};_0x36ddb3(++_0xb6aa6d);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
+var _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(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x7a54,0x106));var _0x47a5=function(_0x5a2ba1,_0x8341e1){_0x5a2ba1=_0x5a2ba1-0x0;var _0xeaca75=_0x7a54[_0x5a2ba1];return _0xeaca75;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
index 1a305f2..1d4dba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc92b=['callback','isMiddleware','login','setTokenCookie','exports','express','passport','./authGoogle.controller','../../components/auth/service','get'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xc92b,0x1b3));var _0xbc92=function(_0x5796e5,_0x3a4211){_0x5796e5=_0x5796e5-0x0;var _0x50510d=_0xc92b[_0x5796e5];return _0x50510d;};'use strict';var express=require(_0xbc92('0x0'));var passport=require(_0xbc92('0x1'));var router=express['Router']();var controller=require(_0xbc92('0x2'));var userController=require('../user/user.controller.js');var authService=require(_0xbc92('0x3'));router['get']('/',controller['login']);router[_0xbc92('0x4')]('/callback',controller[_0xbc92('0x5')],authService[_0xbc92('0x6')],userController[_0xbc92('0x7')],authService[_0xbc92('0x8')]);module[_0xbc92('0x9')]=router;
\ No newline at end of file
+var _0x169c=['../../components/auth/service','get','/callback','callback','isMiddleware','login','setTokenCookie','exports','express','passport','./authGoogle.controller','../user/user.controller.js'];(function(_0x25ccb6,_0x429ba4){var _0x3c8292=function(_0x15a7cf){while(--_0x15a7cf){_0x25ccb6['push'](_0x25ccb6['shift']());}};_0x3c8292(++_0x429ba4);}(_0x169c,0x1dc));var _0xc169=function(_0x5f150e,_0x5e3a1e){_0x5f150e=_0x5f150e-0x0;var _0x2f6957=_0x169c[_0x5f150e];return _0x2f6957;};'use strict';var express=require(_0xc169('0x0'));var passport=require(_0xc169('0x1'));var router=express['Router']();var controller=require(_0xc169('0x2'));var userController=require(_0xc169('0x3'));var authService=require(_0xc169('0x4'));router[_0xc169('0x5')]('/',controller['login']);router[_0xc169('0x5')](_0xc169('0x6'),controller[_0xc169('0x7')],authService[_0xc169('0x8')],userController[_0xc169('0x9')],authService[_0xc169('0xa')]);module[_0xc169('0xb')]=router;
\ No newline at end of file
index a896142..328d01e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7205=['reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','resetPasswordToken','Password\x20reset!','use','util','passport','passport-local','Strategy','lodash','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','password','salt','disabled','blocked','blockedAt','loginAttempts','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','add','minutes','clearBlockUser','getLicense','catch','find','name','MailServerOut','Smtp','CloudProvider','getSmtpOptions','email','request','SendMail','error','message','status','send','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','json','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','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\x20Email\x20sent!'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x7205,0xa6));var _0x5720=function(_0x2650de,_0x12c23e){_0x2650de=_0x2650de-0x0;var _0x2db8c0=_0x7205[_0x2650de];return _0x2db8c0;};'use strict';var util=require(_0x5720('0x0'));var passport=require(_0x5720('0x1'));var LocalStrategy=require(_0x5720('0x2'))[_0x5720('0x3')];var jayson=require('jayson/promise');var _=require(_0x5720('0x4'));var rs=require('randomstring');var moment=require(_0x5720('0x5'));var db=require(_0x5720('0x6'))['db'];var authService=require(_0x5720('0x7'));var utils=require(_0x5720('0x8'));var client=jayson[_0x5720('0x9')][_0x5720('0xa')]({'port':0x232b});function localAuthenticate(_0x37cc82,_0x19ba75,_0x303115,_0x113737){var _0x3162d7,_0x89752c;return db[_0x5720('0xb')][_0x5720('0xc')]({'where':{'id':0x1},'attributes':[_0x5720('0xd'),'blockDuration'],'raw':!![]})['then'](function(_0x4ebe8b){_0x3162d7=_0x4ebe8b;return _0x37cc82['findOne']({'attributes':['id','name',_0x5720('0xe'),_0x5720('0xf'),'role',_0x5720('0x10'),_0x5720('0x11'),_0x5720('0x12'),_0x5720('0x13')],'where':{'name':_0x19ba75,'role':{'$or':['admin',_0x5720('0x14'),_0x5720('0x15')]}}});})[_0x5720('0x16')](function(_0x15954a){if(!_0x15954a||_0x15954a&&_0x15954a['name']!==_0x19ba75){throw new Error(_0x5720('0x17'));}else{_0x89752c=_0x15954a;return _0x89752c;}})['then'](function(){_0x89752c['authenticate'](_0x303115,function(_0x5dc0b9,_0x440c28){var _0x5d6161=_0x89752c[_0x5720('0x13')]+0x1;if(_0x5dc0b9){return _0x113737(_0x5dc0b9);}else if(!_0x440c28){if(_0x89752c[_0x5720('0x10')]){return _0x113737(null,![],{'message':_0x5720('0x17')});}else if(_0x3162d7[_0x5720('0xd')]>0x0){if(_0x89752c[_0x5720('0x11')]){if(_0x3162d7[_0x5720('0x18')]>0x0){if(moment(_0x89752c['blockedAt'])[_0x5720('0x19')](_0x3162d7[_0x5720('0x18')],_0x5720('0x1a'))>moment()){return _0x113737(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x5720('0x1b')](_0x89752c,_0x5d6161,![],null)[_0x5720('0x16')](function(){return _0x113737(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x113737(null,![],{'message':_0x5720('0x17')});}}else{if(_0x5d6161>=_0x3162d7[_0x5720('0xd')]){return utils[_0x5720('0x1b')](_0x89752c,0x0,!![],moment())[_0x5720('0x16')](function(){return _0x113737(null,![],{'message':_0x5720('0x17')});});}else{return utils[_0x5720('0x1b')](_0x89752c,_0x5d6161,![],null)[_0x5720('0x16')](function(){return _0x113737(null,![],{'message':_0x5720('0x17')});});}}}else{return _0x113737(null,![],{'message':_0x5720('0x17')});}}else{if(_0x89752c[_0x5720('0x10')]){return _0x113737(null,![],{'message':_0x5720('0x17')});}else if(_0x3162d7[_0x5720('0xd')]>0x0){if(_0x89752c[_0x5720('0x11')]){if(_0x3162d7['blockDuration']>0x0){if(moment(_0x89752c[_0x5720('0x12')])[_0x5720('0x19')](_0x3162d7[_0x5720('0x18')],_0x5720('0x1a'))>moment()){return _0x113737(null,![],{'message':_0x5720('0x17')});}else{return utils[_0x5720('0x1b')](_0x89752c,0x0,![],null)['then'](function(){return utils[_0x5720('0x1c')](_0x89752c);})[_0x5720('0x16')](function(){return _0x113737(null,_0x89752c);});}}else{return _0x113737(null,![],{'message':_0x5720('0x17')});}}else{return utils[_0x5720('0x1b')](_0x89752c,0x0,![],null)[_0x5720('0x16')](function(){return utils[_0x5720('0x1c')](_0x89752c);})['then'](function(){return _0x113737(null,_0x89752c);})[_0x5720('0x1d')](function(_0x2c1ff1){return _0x113737(null,![],_0x2c1ff1);});}}else{if(_0x89752c[_0x5720('0x11')]){return _0x113737(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x5720('0x1c')](_0x89752c)[_0x5720('0x16')](function(){return _0x113737(null,_0x89752c);});}}}});})[_0x5720('0x1d')](function(_0x3f8808){return _0x113737(null,![],_0x3f8808);});}function sendServiceMail(_0x145eb3){return db['MailAccount'][_0x5720('0x1e')]({'where':{'service':!![]},'attributes':['id',_0x5720('0x1f'),'email'],'include':[{'model':db[_0x5720('0x20')],'as':_0x5720('0x21'),'include':[{'model':db[_0x5720('0x22')],'as':_0x5720('0x22')}]}]})[_0x5720('0x16')](function(_0x5c49e3){if(!_0x5c49e3){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x4d0ab0=_0x5c49e3[_0x5720('0x23')]();var _0x5996a2={'account':_0x4d0ab0,'message':_['merge']({'from':util['format']('\x22%s\x22\x20<%s>',_0x5c49e3[_0x5720('0x1f')],_0x5c49e3[_0x5720('0x24')]||_0x5c49e3[_0x5720('0x21')][_0x5720('0x14')])},_0x145eb3)};return client[_0x5720('0x25')](_0x5720('0x26'),_0x5996a2);})[_0x5720('0x16')](function(_0x516578){if(_0x516578['error']){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x516578[_0x5720('0x27')][_0x5720('0x28')]||JSON['stringify'](_0x516578[_0x5720('0x27')])));}return!![];});}function handleError(_0x42fd12,_0x8efb4b,_0x483b8a){return _0x42fd12[_0x5720('0x29')](_0x8efb4b||0x1f4)[_0x5720('0x2a')]({'message':_0x483b8a?_0x483b8a['message']||_0x483b8a:''});}exports['login']=function(_0x39f455,_0x4aa5c6,_0x425be9){passport['authenticate'](_0x5720('0x2b'),function(_0x2fa3e8,_0x5de069,_0x2a7384){var _0x51b9c5=_0x2fa3e8||_0x2a7384;if(_0x51b9c5){return handleError(_0x4aa5c6,0x191,_0x51b9c5);}if(!_0x5de069){return handleError(_0x4aa5c6,0x194,{'message':_0x5720('0x2c')});}else{var _0x4c1d={'payload':{'id':_0x5de069['id'],'role':_0x5de069[_0x5720('0x2d')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x4c1d)[_0x5720('0x16')](function(_0x23f80e){_0x4aa5c6[_0x5720('0x2e')]({'id':_0x5de069['id'],'token':_0x23f80e,'statusCall':'','isAlreadyLogged':_0x5de069['online']});});}})(_0x39f455,_0x4aa5c6,_0x425be9);};exports[_0x5720('0x2f')]=function(_0x4fde1b,_0x10f749){if(!_0x4fde1b[_0x5720('0x30')][_0x5720('0x24')]){return handleError(_0x10f749,0x1f4,{'message':_0x5720('0x31')});}var _0x3a0872=rs[_0x5720('0x32')]();_0x4fde1b[_0x5720('0x30')][_0x5720('0x24')]=_0x4fde1b['body'][_0x5720('0x24')][_0x5720('0x33')]()[_0x5720('0x34')]();var _0x1cf5d1;return db[_0x5720('0xb')][_0x5720('0xc')]({'where':{'id':0x1},'attributes':[_0x5720('0xd'),_0x5720('0x18')],'raw':!![]})[_0x5720('0x16')](function(_0x3c1899){_0x1cf5d1=_0x3c1899;return db[_0x5720('0x35')]['find']({'where':{'email':_0x4fde1b[_0x5720('0x30')][_0x5720('0x24')]}});})[_0x5720('0x16')](function(_0x128707){if(!_0x128707){throw new Error(_0x5720('0x36'));}if(_0x128707['disabled']){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x128707[_0x5720('0x11')]){if(moment(_0x128707[_0x5720('0x12')])['add'](_0x1cf5d1['blockDuration'],_0x5720('0x1a'))>moment()){throw new Error(_0x5720('0x37'));}else{_0x128707[_0x5720('0x11')]=![];_0x128707[_0x5720('0x12')]=null;}}_0x128707['resetPasswordToken']=_0x3a0872;_0x128707[_0x5720('0x38')]=Date[_0x5720('0x39')]()+0x36ee80;return _0x128707[_0x5720('0x3a')]();})[_0x5720('0x16')](function(){return sendServiceMail({'to':_0x4fde1b['body'][_0x5720('0x24')],'subject':_0x5720('0x3b'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x5720('0x3c')+_0x5720('0x3d')+_0x4fde1b['headers']['host']+_0x5720('0x3e')+_0x3a0872+'\x0a\x0a'+_0x5720('0x3f')});})['then'](function(){_0x10f749[_0x5720('0x29')](0xc8)[_0x5720('0x2a')]({'message':_0x5720('0x40')});})[_0x5720('0x1d')](function(_0x1012b0){return handleError(_0x10f749,0x1f4,_0x1012b0);});};exports[_0x5720('0x41')]=function(_0x4934c4,_0xaa9471){return db[_0x5720('0x35')][_0x5720('0x1e')]({'where':{'resetPasswordToken':_0x4934c4[_0x5720('0x42')][_0x5720('0x43')],'resetPasswordExpires':{'$gt':Date[_0x5720('0x39')]()}}})[_0x5720('0x16')](function(_0x8371c1){if(!_0x8371c1){throw new Error(_0x5720('0x44'));}return db[_0x5720('0xb')][_0x5720('0xc')]({'attributes':['id',_0x5720('0x45'),_0x5720('0x46'),_0x5720('0x47')]})[_0x5720('0x16')](function(_0x39b327){if(_0x39b327[_0x5720('0x45')])authService[_0x5720('0x48')](_0x4934c4[_0x5720('0x30')][_0x5720('0xe')]);if(!_0x39b327[_0x5720('0x46')]||!_0x8371c1[_0x5720('0x49')])return _0x8371c1;authService['validatePasswordHistory'](_0x4934c4['body'][_0x5720('0xe')],_0x8371c1[_0x5720('0x49')],_0x39b327[_0x5720('0x47')]);return _0x8371c1;})[_0x5720('0x16')](function(){_0x8371c1[_0x5720('0xe')]=_0x4934c4[_0x5720('0x30')][_0x5720('0xe')];_0x8371c1[_0x5720('0x4a')]=null;_0x8371c1[_0x5720('0x38')]=null;return _0x8371c1[_0x5720('0x3a')]();});})[_0x5720('0x16')](function(){_0xaa9471[_0x5720('0x29')](0xc8)['send']({'message':_0x5720('0x4b')});})[_0x5720('0x1d')](function(_0xf28f73){return handleError(_0xaa9471,0x1f4,_0xf28f73);});};passport[_0x5720('0x4c')](_0x5720('0x2b'),new LocalStrategy({'usernameField':_0x5720('0x1f'),'passwordField':_0x5720('0xe')},function(_0x16b2ce,_0x1ce819,_0x500828){return localAuthenticate(db[_0x5720('0x35')],_0x16b2ce,_0x1ce819,_0x500828);}));
\ No newline at end of file
+var _0x8091=['getLicense','catch','MailAccount','find','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','email','user','request','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','status','send','login','local-login','signToken','json','online','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','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','https://','headers','host','Reset\x20Email\x20sent!','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','passwordHistoryLimit','password','previousPasswords','validatePasswordHistory','Password\x20reset!','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','../../mysqldb','../../config/utils','client','Setting','findOne','allowedLoginAttempts','blockDuration','name','role','blocked','blockedAt','loginAttempts','admin','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','disabled','add','minutes','clearBlockUser','then'];(function(_0x3c0731,_0x5181dc){var _0x2e7420=function(_0x22d72e){while(--_0x22d72e){_0x3c0731['push'](_0x3c0731['shift']());}};_0x2e7420(++_0x5181dc);}(_0x8091,0xcd));var _0x1809=function(_0x573931,_0x472f97){_0x573931=_0x573931-0x0;var _0x2fdbe7=_0x8091[_0x573931];return _0x2fdbe7;};'use strict';var util=require('util');var passport=require(_0x1809('0x0'));var LocalStrategy=require(_0x1809('0x1'))[_0x1809('0x2')];var jayson=require(_0x1809('0x3'));var _=require(_0x1809('0x4'));var rs=require(_0x1809('0x5'));var moment=require('moment');var db=require(_0x1809('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x1809('0x7'));var client=jayson[_0x1809('0x8')]['http']({'port':0x232b});function localAuthenticate(_0x3f8fdf,_0x1ba7e8,_0x2ad50f,_0x415f0b){var _0x3844ee,_0x5c8db4;return db[_0x1809('0x9')][_0x1809('0xa')]({'where':{'id':0x1},'attributes':[_0x1809('0xb'),_0x1809('0xc')],'raw':!![]})['then'](function(_0x4d9873){_0x3844ee=_0x4d9873;return _0x3f8fdf[_0x1809('0xa')]({'attributes':['id',_0x1809('0xd'),'password','salt',_0x1809('0xe'),'disabled',_0x1809('0xf'),_0x1809('0x10'),_0x1809('0x11')],'where':{'name':_0x1ba7e8,'role':{'$or':[_0x1809('0x12'),'user',_0x1809('0x13')]}}});})['then'](function(_0x37b5e0){if(!_0x37b5e0||_0x37b5e0&&_0x37b5e0[_0x1809('0xd')]!==_0x1ba7e8){throw new Error(_0x1809('0x14'));}else{_0x5c8db4=_0x37b5e0;return _0x5c8db4;}})['then'](function(){_0x5c8db4['authenticate'](_0x2ad50f,function(_0x1333fa,_0x1c1748){var _0x555d77=_0x5c8db4[_0x1809('0x11')]+0x1;if(_0x1333fa){return _0x415f0b(_0x1333fa);}else if(!_0x1c1748){if(_0x5c8db4[_0x1809('0x15')]){return _0x415f0b(null,![],{'message':_0x1809('0x14')});}else if(_0x3844ee[_0x1809('0xb')]>0x0){if(_0x5c8db4[_0x1809('0xf')]){if(_0x3844ee[_0x1809('0xc')]>0x0){if(moment(_0x5c8db4[_0x1809('0x10')])[_0x1809('0x16')](_0x3844ee[_0x1809('0xc')],_0x1809('0x17'))>moment()){return _0x415f0b(null,![],{'message':_0x1809('0x14')});}else{return utils[_0x1809('0x18')](_0x5c8db4,_0x555d77,![],null)['then'](function(){return _0x415f0b(null,![],{'message':_0x1809('0x14')});});}}else{return _0x415f0b(null,![],{'message':_0x1809('0x14')});}}else{if(_0x555d77>=_0x3844ee[_0x1809('0xb')]){return utils[_0x1809('0x18')](_0x5c8db4,0x0,!![],moment())[_0x1809('0x19')](function(){return _0x415f0b(null,![],{'message':_0x1809('0x14')});});}else{return utils[_0x1809('0x18')](_0x5c8db4,_0x555d77,![],null)[_0x1809('0x19')](function(){return _0x415f0b(null,![],{'message':_0x1809('0x14')});});}}}else{return _0x415f0b(null,![],{'message':_0x1809('0x14')});}}else{if(_0x5c8db4[_0x1809('0x15')]){return _0x415f0b(null,![],{'message':_0x1809('0x14')});}else if(_0x3844ee[_0x1809('0xb')]>0x0){if(_0x5c8db4[_0x1809('0xf')]){if(_0x3844ee[_0x1809('0xc')]>0x0){if(moment(_0x5c8db4[_0x1809('0x10')])[_0x1809('0x16')](_0x3844ee[_0x1809('0xc')],'minutes')>moment()){return _0x415f0b(null,![],{'message':_0x1809('0x14')});}else{return utils['clearBlockUser'](_0x5c8db4,0x0,![],null)[_0x1809('0x19')](function(){return utils[_0x1809('0x1a')](_0x5c8db4);})[_0x1809('0x19')](function(){return _0x415f0b(null,_0x5c8db4);});}}else{return _0x415f0b(null,![],{'message':_0x1809('0x14')});}}else{return utils[_0x1809('0x18')](_0x5c8db4,0x0,![],null)['then'](function(){return utils[_0x1809('0x1a')](_0x5c8db4);})['then'](function(){return _0x415f0b(null,_0x5c8db4);})[_0x1809('0x1b')](function(_0x315028){return _0x415f0b(null,![],_0x315028);});}}else{if(_0x5c8db4[_0x1809('0xf')]){return _0x415f0b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x1809('0x1a')](_0x5c8db4)[_0x1809('0x19')](function(){return _0x415f0b(null,_0x5c8db4);});}}}});})['catch'](function(_0x557469){return _0x415f0b(null,![],_0x557469);});}function sendServiceMail(_0x58fb8d){return db[_0x1809('0x1c')][_0x1809('0x1d')]({'where':{'service':!![]},'attributes':['id',_0x1809('0xd'),'email'],'include':[{'model':db[_0x1809('0x1e')],'as':_0x1809('0x1f'),'include':[{'model':db[_0x1809('0x20')],'as':_0x1809('0x20')}]}]})[_0x1809('0x19')](function(_0x59e2d1){if(!_0x59e2d1){throw new Error(_0x1809('0x21'));}var _0xdd9b59=_0x59e2d1[_0x1809('0x22')]();var _0x1a67a6={'account':_0xdd9b59,'message':_[_0x1809('0x23')]({'from':util[_0x1809('0x24')]('\x22%s\x22\x20<%s>',_0x59e2d1[_0x1809('0xd')],_0x59e2d1[_0x1809('0x25')]||_0x59e2d1[_0x1809('0x1f')][_0x1809('0x26')])},_0x58fb8d)};return client[_0x1809('0x27')]('SendMail',_0x1a67a6);})[_0x1809('0x19')](function(_0x4db7a5){if(_0x4db7a5[_0x1809('0x28')]){throw new Error(util[_0x1809('0x24')](_0x1809('0x29'),_0x4db7a5['error'][_0x1809('0x2a')]||JSON['stringify'](_0x4db7a5['error'])));}return!![];});}function handleError(_0x24b043,_0x4cd2ee,_0x5a5aa0){return _0x24b043[_0x1809('0x2b')](_0x4cd2ee||0x1f4)[_0x1809('0x2c')]({'message':_0x5a5aa0?_0x5a5aa0[_0x1809('0x2a')]||_0x5a5aa0:''});}exports[_0x1809('0x2d')]=function(_0x31a3bd,_0x42b30f,_0x123c38){passport['authenticate'](_0x1809('0x2e'),function(_0xcf6e51,_0x35441b,_0x522d2c){var _0x1ce223=_0xcf6e51||_0x522d2c;if(_0x1ce223){return handleError(_0x42b30f,0x191,_0x1ce223);}if(!_0x35441b){return handleError(_0x42b30f,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x95d79c={'payload':{'id':_0x35441b['id'],'role':_0x35441b[_0x1809('0xe')]},'options':{'expiresIn':0x15180}};return authService[_0x1809('0x2f')](_0x95d79c)[_0x1809('0x19')](function(_0x2ea1ce){_0x42b30f[_0x1809('0x30')]({'id':_0x35441b['id'],'token':_0x2ea1ce,'statusCall':'','isAlreadyLogged':_0x35441b[_0x1809('0x31')]});});}})(_0x31a3bd,_0x42b30f,_0x123c38);};exports['forgot']=function(_0x32027c,_0x1075c3){if(!_0x32027c[_0x1809('0x32')][_0x1809('0x25')]){return handleError(_0x1075c3,0x1f4,{'message':_0x1809('0x33')});}var _0x42dc52=rs[_0x1809('0x34')]();_0x32027c[_0x1809('0x32')]['email']=_0x32027c[_0x1809('0x32')][_0x1809('0x25')][_0x1809('0x35')]()[_0x1809('0x36')]();var _0x44c344;return db[_0x1809('0x9')][_0x1809('0xa')]({'where':{'id':0x1},'attributes':[_0x1809('0xb'),_0x1809('0xc')],'raw':!![]})[_0x1809('0x19')](function(_0x329ed3){_0x44c344=_0x329ed3;return db[_0x1809('0x37')][_0x1809('0x1d')]({'where':{'email':_0x32027c[_0x1809('0x32')][_0x1809('0x25')]}});})[_0x1809('0x19')](function(_0x2f8e69){if(!_0x2f8e69){throw new Error(_0x1809('0x38'));}if(_0x2f8e69['disabled']){throw new Error(_0x1809('0x39'));}if(_0x2f8e69[_0x1809('0xf')]){if(moment(_0x2f8e69[_0x1809('0x10')])[_0x1809('0x16')](_0x44c344['blockDuration'],_0x1809('0x17'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x2f8e69[_0x1809('0xf')]=![];_0x2f8e69[_0x1809('0x10')]=null;}}_0x2f8e69[_0x1809('0x3a')]=_0x42dc52;_0x2f8e69[_0x1809('0x3b')]=Date[_0x1809('0x3c')]()+0x36ee80;return _0x2f8e69[_0x1809('0x3d')]();})[_0x1809('0x19')](function(){return sendServiceMail({'to':_0x32027c['body'][_0x1809('0x25')],'subject':_0x1809('0x3e'),'text':_0x1809('0x3f')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x1809('0x40')+_0x32027c[_0x1809('0x41')][_0x1809('0x42')]+'/reset/'+_0x42dc52+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x1809('0x19')](function(){_0x1075c3[_0x1809('0x2b')](0xc8)[_0x1809('0x2c')]({'message':_0x1809('0x43')});})[_0x1809('0x1b')](function(_0x210a9a){return handleError(_0x1075c3,0x1f4,_0x210a9a);});};exports[_0x1809('0x44')]=function(_0x6a6918,_0x1d535b){return db[_0x1809('0x37')]['find']({'where':{'resetPasswordToken':_0x6a6918['params'][_0x1809('0x45')],'resetPasswordExpires':{'$gt':Date[_0x1809('0x3c')]()}}})[_0x1809('0x19')](function(_0x4a68f4){if(!_0x4a68f4){throw new Error(_0x1809('0x46'));}return db[_0x1809('0x9')][_0x1809('0xa')]({'attributes':['id',_0x1809('0x47'),'enforcePasswordHistory',_0x1809('0x48')]})[_0x1809('0x19')](function(_0x4a058a){if(_0x4a058a[_0x1809('0x47')])authService['validatePasswordPattern'](_0x6a6918[_0x1809('0x32')][_0x1809('0x49')]);if(!_0x4a058a['enforcePasswordHistory']||!_0x4a68f4[_0x1809('0x4a')])return _0x4a68f4;authService[_0x1809('0x4b')](_0x6a6918['body'][_0x1809('0x49')],_0x4a68f4[_0x1809('0x4a')],_0x4a058a['passwordHistoryLimit']);return _0x4a68f4;})[_0x1809('0x19')](function(){_0x4a68f4[_0x1809('0x49')]=_0x6a6918[_0x1809('0x32')][_0x1809('0x49')];_0x4a68f4[_0x1809('0x3a')]=null;_0x4a68f4['resetPasswordExpires']=null;return _0x4a68f4[_0x1809('0x3d')]();});})[_0x1809('0x19')](function(){_0x1d535b['status'](0xc8)['send']({'message':_0x1809('0x4c')});})[_0x1809('0x1b')](function(_0x4971fe){return handleError(_0x1d535b,0x1f4,_0x4971fe);});};passport['use']('local-login',new LocalStrategy({'usernameField':'name','passwordField':'password'},function(_0x3a1156,_0x37539a,_0x5430b2){return localAuthenticate(db[_0x1809('0x37')],_0x3a1156,_0x37539a,_0x5430b2);}));
\ No newline at end of file
index 71b138a..ba1be3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db5=['login','forgot','reset','exports','express','Router','./authLocal.controller','post'];(function(_0x313a00,_0x107929){var _0x46d07b=function(_0x452b30){while(--_0x452b30){_0x313a00['push'](_0x313a00['shift']());}};_0x46d07b(++_0x107929);}(_0x5db5,0xb4));var _0x55db=function(_0x311584,_0x3fb293){_0x311584=_0x311584-0x0;var _0x4e0699=_0x5db5[_0x311584];return _0x4e0699;};'use strict';var express=require(_0x55db('0x0'));var router=express[_0x55db('0x1')]();var controller=require(_0x55db('0x2'));router[_0x55db('0x3')]('/',controller[_0x55db('0x4')]);router[_0x55db('0x3')]('/forgot',controller[_0x55db('0x5')]);router[_0x55db('0x3')]('/reset/:token',controller[_0x55db('0x6')]);module[_0x55db('0x7')]=router;
\ No newline at end of file
+var _0x9ac1=['reset','exports','post','/forgot','forgot','/reset/:token'];(function(_0x154cb5,_0x1a8d5a){var _0x3f574f=function(_0x597a52){while(--_0x597a52){_0x154cb5['push'](_0x154cb5['shift']());}};_0x3f574f(++_0x1a8d5a);}(_0x9ac1,0x146));var _0x19ac=function(_0x915aab,_0x47ca95){_0x915aab=_0x915aab-0x0;var _0x300a7d=_0x9ac1[_0x915aab];return _0x300a7d;};'use strict';var express=require('express');var router=express['Router']();var controller=require('./authLocal.controller');router[_0x19ac('0x0')]('/',controller['login']);router[_0x19ac('0x0')](_0x19ac('0x1'),controller[_0x19ac('0x2')]);router[_0x19ac('0x0')](_0x19ac('0x3'),controller[_0x19ac('0x4')]);module[_0x19ac('0x5')]=router;
\ No newline at end of file
index 6ac58e8..a6ad497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b3d=['sequelize','STRING','BOOLEAN','INTEGER'];(function(_0x516770,_0xb9ffc8){var _0x5008f8=function(_0x1a5191){while(--_0x1a5191){_0x516770['push'](_0x516770['shift']());}};_0x5008f8(++_0xb9ffc8);}(_0x8b3d,0x13c));var _0xd8b3=function(_0x344a4d,_0x1e46f2){_0x344a4d=_0x344a4d-0x0;var _0x4c25d2=_0x8b3d[_0x344a4d];return _0x4c25d2;};'use strict';var Sequelize=require(_0xd8b3('0x0'));module['exports']={'name':{'type':Sequelize[_0xd8b3('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0xd8b3('0x1')]},'description':{'type':Sequelize[_0xd8b3('0x1')]},'status':{'type':Sequelize[_0xd8b3('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xd8b3('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x5867=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x5867,0x150));var _0x7586=function(_0x1a0e25,_0x4d3c1f){_0x1a0e25=_0x1a0e25-0x0;var _0x33d1e4=_0x5867[_0x1a0e25];return _0x33d1e4;};'use strict';var Sequelize=require(_0x7586('0x0'));module[_0x7586('0x1')]={'name':{'type':Sequelize[_0x7586('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x7586('0x2')]},'description':{'type':Sequelize[_0x7586('0x2')]},'status':{'type':Sequelize[_0x7586('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x7586('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 6302e61..b062cb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa802=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','error','name','send','index','map','Automation','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','rows','show','params','include','find','catch','create','body','destroy','addConditions','Condition','omit','ids','getConditions','findOne','nolimit','addActions','Action','getActions','order','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x58a975,_0x4f7451){var _0x47f055=function(_0x4f57e1){while(--_0x4f57e1){_0x58a975['push'](_0x58a975['shift']());}};_0x47f055(++_0x4f7451);}(_0xa802,0x9d));var _0x2a80=function(_0x87ea2e,_0x42ccc4){_0x87ea2e=_0x87ea2e-0x0;var _0x4e8b6f=_0xa802[_0x87ea2e];return _0x4e8b6f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2a80('0x0'));var jsonpatch=require(_0x2a80('0x1'));var rp=require(_0x2a80('0x2'));var moment=require(_0x2a80('0x3'));var BPromise=require(_0x2a80('0x4'));var Mustache=require(_0x2a80('0x5'));var util=require('util');var path=require(_0x2a80('0x6'));var sox=require(_0x2a80('0x7'));var csv=require(_0x2a80('0x8'));var ejs=require(_0x2a80('0x9'));var fs=require('fs');var fs_extra=require(_0x2a80('0xa'));var _=require(_0x2a80('0xb'));var squel=require(_0x2a80('0xc'));var crypto=require(_0x2a80('0xd'));var jsforce=require(_0x2a80('0xe'));var deskjs=require(_0x2a80('0xf'));var toCsv=require('to-csv');var querystring=require(_0x2a80('0x10'));var Papa=require(_0x2a80('0x11'));var Redis=require(_0x2a80('0x12'));var authService=require(_0x2a80('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2a80('0x14'));var hardwareService=require(_0x2a80('0x15'));var logger=require(_0x2a80('0x16'))(_0x2a80('0x17'));var utils=require(_0x2a80('0x18'));var config=require(_0x2a80('0x19'));var licenseUtil=require(_0x2a80('0x1a'));var db=require(_0x2a80('0x1b'))['db'];function respondWithStatusCode(_0x2ff228,_0x3980ee){_0x3980ee=_0x3980ee||0xcc;return function(_0x2fc217){if(_0x2fc217){return _0x2ff228[_0x2a80('0x1c')](_0x3980ee);}return _0x2ff228[_0x2a80('0x1d')](_0x3980ee)[_0x2a80('0x1e')]();};}function respondWithResult(_0x23c015,_0x413f2a){_0x413f2a=_0x413f2a||0xc8;return function(_0x19c154){if(_0x19c154){return _0x23c015[_0x2a80('0x1d')](_0x413f2a)[_0x2a80('0x1f')](_0x19c154);}};}function respondWithFilteredResult(_0x4ae67c,_0x2f05b2){return function(_0x4a5a64){if(_0x4a5a64){var _0x1ca23e=typeof _0x2f05b2['offset']==='undefined'&&typeof _0x2f05b2[_0x2a80('0x20')]===_0x2a80('0x21');var _0x910197=_0x4a5a64[_0x2a80('0x22')];var _0x156963=_0x1ca23e?0x0:_0x2f05b2[_0x2a80('0x23')];var _0x673017=_0x1ca23e?_0x4a5a64[_0x2a80('0x22')]:_0x2f05b2[_0x2a80('0x23')]+_0x2f05b2[_0x2a80('0x20')];var _0x5c2f79;if(_0x673017>=_0x910197){_0x673017=_0x910197;_0x5c2f79=0xc8;}else{_0x5c2f79=0xce;}_0x4ae67c[_0x2a80('0x1d')](_0x5c2f79);return _0x4ae67c['set'](_0x2a80('0x24'),_0x156963+'-'+_0x673017+'/'+_0x910197)[_0x2a80('0x1f')](_0x4a5a64);}return null;};}function patchUpdates(_0x4c8e12){return function(_0x2afaa9){try{jsonpatch[_0x2a80('0x25')](_0x2afaa9,_0x4c8e12,!![]);}catch(_0x25cb51){return BPromise[_0x2a80('0x26')](_0x25cb51);}return _0x2afaa9[_0x2a80('0x27')]();};}function saveUpdates(_0x5de654,_0x61640e){return function(_0x4969c8){if(_0x4969c8){return _0x4969c8[_0x2a80('0x28')](_0x5de654)['then'](function(_0x596365){return _0x596365;});}return null;};}function removeEntity(_0xdc1ada,_0x2524e9){return function(_0x3c42e3){if(_0x3c42e3){return _0x3c42e3['destroy']()[_0x2a80('0x29')](function(){_0xdc1ada[_0x2a80('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1486c2,_0x1f1246){return function(_0x3aa2c8){if(!_0x3aa2c8){_0x1486c2['sendStatus'](0x194);}return _0x3aa2c8;};}function handleError(_0x24d4bf,_0x1f394a){_0x1f394a=_0x1f394a||0x1f4;return function(_0x19c0b6){logger[_0x2a80('0x2a')](_0x19c0b6['stack']);if(_0x19c0b6[_0x2a80('0x2b')]){delete _0x19c0b6[_0x2a80('0x2b')];}_0x24d4bf['status'](_0x1f394a)[_0x2a80('0x2c')](_0x19c0b6);};}exports[_0x2a80('0x2d')]=function(_0x3c4f0b,_0x15d73d){var _0x523292={},_0x42430c={},_0x2bd8e6={'count':0x0,'rows':[]};var _0x349116=_[_0x2a80('0x2e')](db[_0x2a80('0x2f')][_0x2a80('0x30')],function(_0x4ebf28){return{'name':_0x4ebf28[_0x2a80('0x31')],'type':_0x4ebf28[_0x2a80('0x32')][_0x2a80('0x33')]};});_0x42430c['model']=_[_0x2a80('0x2e')](_0x349116,'name');_0x42430c[_0x2a80('0x34')]=_[_0x2a80('0x35')](_0x3c4f0b['query']);_0x42430c[_0x2a80('0x36')]=_[_0x2a80('0x37')](_0x42430c[_0x2a80('0x38')],_0x42430c['query']);_0x523292[_0x2a80('0x39')]=_[_0x2a80('0x37')](_0x42430c[_0x2a80('0x38')],qs['fields'](_0x3c4f0b['query'][_0x2a80('0x3a')]));_0x523292[_0x2a80('0x39')]=_0x523292[_0x2a80('0x39')][_0x2a80('0x3b')]?_0x523292['attributes']:_0x42430c[_0x2a80('0x38')];if(!_0x3c4f0b[_0x2a80('0x34')][_0x2a80('0x3c')]('nolimit')){_0x523292[_0x2a80('0x20')]=qs[_0x2a80('0x20')](_0x3c4f0b[_0x2a80('0x34')][_0x2a80('0x20')]);_0x523292[_0x2a80('0x23')]=qs['offset'](_0x3c4f0b['query'][_0x2a80('0x23')]);}_0x523292['order']=qs[_0x2a80('0x3d')](_0x3c4f0b[_0x2a80('0x34')][_0x2a80('0x3d')]);_0x523292[_0x2a80('0x3e')]=qs[_0x2a80('0x36')](_[_0x2a80('0x3f')](_0x3c4f0b[_0x2a80('0x34')],_0x42430c[_0x2a80('0x36')]),_0x349116);if(_0x3c4f0b[_0x2a80('0x34')][_0x2a80('0x40')]){_0x523292[_0x2a80('0x3e')]=_[_0x2a80('0x41')](_0x523292[_0x2a80('0x3e')],{'$or':_['map'](_0x349116,function(_0x155994){if(_0x155994[_0x2a80('0x32')]!=='VIRTUAL'){var _0x4c4555={};_0x4c4555[_0x155994['name']]={'$like':'%'+_0x3c4f0b[_0x2a80('0x34')]['filter']+'%'};return _0x4c4555;}})});}_0x523292=_['merge']({},_0x523292,_0x3c4f0b[_0x2a80('0x42')]);var _0x120860={'where':_0x523292[_0x2a80('0x3e')]};return db[_0x2a80('0x2f')][_0x2a80('0x22')](_0x120860)['then'](function(_0x3d828c){_0x2bd8e6[_0x2a80('0x22')]=_0x3d828c;if(_0x3c4f0b[_0x2a80('0x34')][_0x2a80('0x43')]){_0x523292['include']=[{'all':!![]}];}return db['Automation']['findAll'](_0x523292);})[_0x2a80('0x29')](function(_0x39c622){_0x2bd8e6[_0x2a80('0x44')]=_0x39c622;return _0x2bd8e6;})['then'](respondWithFilteredResult(_0x15d73d,_0x523292))['catch'](handleError(_0x15d73d,null));};exports[_0x2a80('0x45')]=function(_0x5bd825,_0x3dad5b){var _0x380896={'raw':![],'where':{'id':_0x5bd825[_0x2a80('0x46')]['id']}},_0x3d69af={};_0x3d69af['model']=_[_0x2a80('0x35')](db[_0x2a80('0x2f')]['rawAttributes']);_0x3d69af['query']=_[_0x2a80('0x35')](_0x5bd825[_0x2a80('0x34')]);_0x3d69af[_0x2a80('0x36')]=_[_0x2a80('0x37')](_0x3d69af[_0x2a80('0x38')],_0x3d69af[_0x2a80('0x34')]);_0x380896[_0x2a80('0x39')]=_[_0x2a80('0x37')](_0x3d69af[_0x2a80('0x38')],qs[_0x2a80('0x3a')](_0x5bd825[_0x2a80('0x34')]['fields']));_0x380896['attributes']=_0x380896[_0x2a80('0x39')][_0x2a80('0x3b')]?_0x380896[_0x2a80('0x39')]:_0x3d69af[_0x2a80('0x38')];if(_0x5bd825[_0x2a80('0x34')][_0x2a80('0x43')]){_0x380896[_0x2a80('0x47')]=[{'all':!![]}];}_0x380896=_[_0x2a80('0x41')]({},_0x380896,_0x5bd825[_0x2a80('0x42')]);return db[_0x2a80('0x2f')][_0x2a80('0x48')](_0x380896)[_0x2a80('0x29')](handleEntityNotFound(_0x3dad5b,null))[_0x2a80('0x29')](respondWithResult(_0x3dad5b,null))[_0x2a80('0x49')](handleError(_0x3dad5b,null));};exports[_0x2a80('0x4a')]=function(_0x4fa3c0,_0x37cac1){return db[_0x2a80('0x2f')][_0x2a80('0x4a')](_0x4fa3c0[_0x2a80('0x4b')],{})[_0x2a80('0x29')](respondWithResult(_0x37cac1,0xc9))[_0x2a80('0x49')](handleError(_0x37cac1,null));};exports['update']=function(_0x404116,_0x2ee9ca){if(_0x404116[_0x2a80('0x4b')]['id']){delete _0x404116[_0x2a80('0x4b')]['id'];}return db[_0x2a80('0x2f')][_0x2a80('0x48')]({'where':{'id':_0x404116[_0x2a80('0x46')]['id']}})[_0x2a80('0x29')](handleEntityNotFound(_0x2ee9ca,null))[_0x2a80('0x29')](saveUpdates(_0x404116['body'],null))[_0x2a80('0x29')](respondWithResult(_0x2ee9ca,null))[_0x2a80('0x49')](handleError(_0x2ee9ca,null));};exports[_0x2a80('0x4c')]=function(_0x369a9c,_0x2c2ef5){return db[_0x2a80('0x2f')][_0x2a80('0x48')]({'where':{'id':_0x369a9c[_0x2a80('0x46')]['id']}})[_0x2a80('0x29')](handleEntityNotFound(_0x2c2ef5,null))[_0x2a80('0x29')](removeEntity(_0x2c2ef5,null))[_0x2a80('0x49')](handleError(_0x2c2ef5,null));};exports[_0x2a80('0x4d')]=function(_0x213f9d,_0x3251d6,_0x3d2038){return db[_0x2a80('0x4e')][_0x2a80('0x48')]({'where':{'id':_0x213f9d[_0x2a80('0x46')]['id']}})['then'](handleEntityNotFound(_0x3251d6,null))[_0x2a80('0x29')](function(_0x591353){if(_0x591353){return _0x591353[_0x2a80('0x4d')](_0x213f9d[_0x2a80('0x4b')]['ids'],_[_0x2a80('0x4f')](_0x213f9d[_0x2a80('0x4b')],[_0x2a80('0x50'),'id'])||{});}})[_0x2a80('0x29')](respondWithResult(_0x3251d6,null))[_0x2a80('0x49')](handleError(_0x3251d6,null));};exports[_0x2a80('0x51')]=function(_0x31bbab,_0x2bb054,_0x439298){var _0x372afc={};var _0x313cbe={};var _0x3d2f46;var _0x1a2941;return db['Automation'][_0x2a80('0x52')]({'where':{'id':_0x31bbab[_0x2a80('0x46')]['id']}})[_0x2a80('0x29')](handleEntityNotFound(_0x2bb054,null))[_0x2a80('0x29')](function(_0x1756f1){if(_0x1756f1){_0x3d2f46=_0x1756f1;_0x313cbe[_0x2a80('0x38')]=_[_0x2a80('0x35')](db[_0x2a80('0x4e')][_0x2a80('0x30')]);_0x313cbe[_0x2a80('0x34')]=_[_0x2a80('0x35')](_0x31bbab['query']);_0x313cbe['filters']=_[_0x2a80('0x37')](_0x313cbe[_0x2a80('0x38')],_0x313cbe['query']);_0x372afc['attributes']=_['intersection'](_0x313cbe[_0x2a80('0x38')],qs[_0x2a80('0x3a')](_0x31bbab[_0x2a80('0x34')][_0x2a80('0x3a')]));_0x372afc[_0x2a80('0x39')]=_0x372afc[_0x2a80('0x39')][_0x2a80('0x3b')]?_0x372afc[_0x2a80('0x39')]:_0x313cbe[_0x2a80('0x38')];_0x372afc['order']=qs['sort'](_0x31bbab['query']['sort']);_0x372afc[_0x2a80('0x3e')]=qs[_0x2a80('0x36')](_['pick'](_0x31bbab[_0x2a80('0x34')],_0x313cbe[_0x2a80('0x36')]));if(_0x31bbab['query']['filter']){_0x372afc[_0x2a80('0x3e')]=_[_0x2a80('0x41')](_0x372afc[_0x2a80('0x3e')],{'$or':_[_0x2a80('0x2e')](_0x372afc['attributes'],function(_0x3af7c6){var _0x131d74={};_0x131d74[_0x3af7c6]={'$like':'%'+_0x31bbab[_0x2a80('0x34')][_0x2a80('0x40')]+'%'};return _0x131d74;})});}_0x372afc=_[_0x2a80('0x41')]({},_0x372afc,_0x31bbab[_0x2a80('0x42')]);return _0x3d2f46[_0x2a80('0x51')](_0x372afc);}})[_0x2a80('0x29')](function(_0x209902){if(_0x209902){_0x1a2941=_0x209902['length'];if(!_0x31bbab[_0x2a80('0x34')]['hasOwnProperty'](_0x2a80('0x53'))){_0x372afc[_0x2a80('0x20')]=qs[_0x2a80('0x20')](_0x31bbab[_0x2a80('0x34')]['limit']);_0x372afc['offset']=qs['offset'](_0x31bbab[_0x2a80('0x34')][_0x2a80('0x23')]);}return _0x3d2f46[_0x2a80('0x51')](_0x372afc);}})[_0x2a80('0x29')](function(_0x26deac){if(_0x26deac){return _0x26deac?{'count':_0x1a2941,'rows':_0x26deac}:null;}})['then'](respondWithResult(_0x2bb054,null))[_0x2a80('0x49')](handleError(_0x2bb054,null));};exports[_0x2a80('0x54')]=function(_0x4e0289,_0x5be2fb,_0x4b1666){return db[_0x2a80('0x55')][_0x2a80('0x48')]({'where':{'id':_0x4e0289[_0x2a80('0x46')]['id']}})['then'](handleEntityNotFound(_0x5be2fb,null))[_0x2a80('0x29')](function(_0x3ece2f){if(_0x3ece2f){return _0x3ece2f[_0x2a80('0x54')](_0x4e0289['body']['ids'],_[_0x2a80('0x4f')](_0x4e0289[_0x2a80('0x4b')],[_0x2a80('0x50'),'id'])||{});}})['then'](respondWithResult(_0x5be2fb,null))[_0x2a80('0x49')](handleError(_0x5be2fb,null));};exports[_0x2a80('0x56')]=function(_0x5c63b1,_0x32dd1d,_0x2720aa){var _0x241016={};var _0x53acfe={};var _0x91960a;var _0xb39e79;return db[_0x2a80('0x2f')][_0x2a80('0x52')]({'where':{'id':_0x5c63b1['params']['id']}})[_0x2a80('0x29')](handleEntityNotFound(_0x32dd1d,null))['then'](function(_0x24a0a8){if(_0x24a0a8){_0x91960a=_0x24a0a8;_0x53acfe[_0x2a80('0x38')]=_[_0x2a80('0x35')](db[_0x2a80('0x55')][_0x2a80('0x30')]);_0x53acfe[_0x2a80('0x34')]=_['keys'](_0x5c63b1[_0x2a80('0x34')]);_0x53acfe['filters']=_[_0x2a80('0x37')](_0x53acfe[_0x2a80('0x38')],_0x53acfe[_0x2a80('0x34')]);_0x241016[_0x2a80('0x39')]=_[_0x2a80('0x37')](_0x53acfe[_0x2a80('0x38')],qs['fields'](_0x5c63b1[_0x2a80('0x34')][_0x2a80('0x3a')]));_0x241016[_0x2a80('0x39')]=_0x241016['attributes'][_0x2a80('0x3b')]?_0x241016[_0x2a80('0x39')]:_0x53acfe[_0x2a80('0x38')];_0x241016[_0x2a80('0x57')]=qs['sort'](_0x5c63b1[_0x2a80('0x34')][_0x2a80('0x3d')]);_0x241016[_0x2a80('0x3e')]=qs[_0x2a80('0x36')](_[_0x2a80('0x3f')](_0x5c63b1[_0x2a80('0x34')],_0x53acfe[_0x2a80('0x36')]));if(_0x5c63b1['query'][_0x2a80('0x40')]){_0x241016['where']=_['merge'](_0x241016[_0x2a80('0x3e')],{'$or':_[_0x2a80('0x2e')](_0x241016[_0x2a80('0x39')],function(_0x9d271b){var _0x1eebe2={};_0x1eebe2[_0x9d271b]={'$like':'%'+_0x5c63b1[_0x2a80('0x34')]['filter']+'%'};return _0x1eebe2;})});}_0x241016=_[_0x2a80('0x41')]({},_0x241016,_0x5c63b1[_0x2a80('0x42')]);return _0x91960a[_0x2a80('0x56')](_0x241016);}})['then'](function(_0xe8bd53){if(_0xe8bd53){_0xb39e79=_0xe8bd53[_0x2a80('0x3b')];if(!_0x5c63b1[_0x2a80('0x34')]['hasOwnProperty'](_0x2a80('0x53'))){_0x241016[_0x2a80('0x20')]=qs[_0x2a80('0x20')](_0x5c63b1['query'][_0x2a80('0x20')]);_0x241016[_0x2a80('0x23')]=qs[_0x2a80('0x23')](_0x5c63b1['query'][_0x2a80('0x23')]);}return _0x91960a[_0x2a80('0x56')](_0x241016);}})['then'](function(_0x50fa40){if(_0x50fa40){return _0x50fa40?{'count':_0xb39e79,'rows':_0x50fa40}:null;}})[_0x2a80('0x29')](respondWithResult(_0x32dd1d,null))[_0x2a80('0x49')](handleError(_0x32dd1d,null));};
\ No newline at end of file
+var _0xf676=['end','json','undefined','count','offset','limit','status','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','Automation','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','catch','show','params','includeAll','include','find','create','body','update','destroy','addConditions','ids','omit','getConditions','findOne','Condition','addActions','Action','getActions','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x2e2cae,_0x20132a){var _0x43fa43=function(_0xc32b80){while(--_0xc32b80){_0x2e2cae['push'](_0x2e2cae['shift']());}};_0x43fa43(++_0x20132a);}(_0xf676,0xe9));var _0x6f67=function(_0x56984b,_0x4bd909){_0x56984b=_0x56984b-0x0;var _0x42024b=_0xf676[_0x56984b];return _0x42024b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6f67('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6f67('0x1'));var rp=require(_0x6f67('0x2'));var moment=require(_0x6f67('0x3'));var BPromise=require(_0x6f67('0x4'));var Mustache=require(_0x6f67('0x5'));var util=require(_0x6f67('0x6'));var path=require(_0x6f67('0x7'));var sox=require(_0x6f67('0x8'));var csv=require(_0x6f67('0x9'));var ejs=require(_0x6f67('0xa'));var fs=require('fs');var fs_extra=require(_0x6f67('0xb'));var _=require(_0x6f67('0xc'));var squel=require(_0x6f67('0xd'));var crypto=require('crypto');var jsforce=require(_0x6f67('0xe'));var deskjs=require(_0x6f67('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6f67('0x10'));var Papa=require(_0x6f67('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6f67('0x12'));var as=require(_0x6f67('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6f67('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x6f67('0x15'));var licenseUtil=require(_0x6f67('0x16'));var db=require(_0x6f67('0x17'))['db'];function respondWithStatusCode(_0x407b9c,_0x342d2f){_0x342d2f=_0x342d2f||0xcc;return function(_0x774cb7){if(_0x774cb7){return _0x407b9c[_0x6f67('0x18')](_0x342d2f);}return _0x407b9c['status'](_0x342d2f)[_0x6f67('0x19')]();};}function respondWithResult(_0xd02d46,_0x49abe1){_0x49abe1=_0x49abe1||0xc8;return function(_0x4edfec){if(_0x4edfec){return _0xd02d46['status'](_0x49abe1)[_0x6f67('0x1a')](_0x4edfec);}};}function respondWithFilteredResult(_0x471e5a,_0x37b084){return function(_0x279b9e){if(_0x279b9e){var _0x583ff9=typeof _0x37b084['offset']===_0x6f67('0x1b')&&typeof _0x37b084['limit']===_0x6f67('0x1b');var _0xb8b58=_0x279b9e[_0x6f67('0x1c')];var _0x104565=_0x583ff9?0x0:_0x37b084['offset'];var _0x253f61=_0x583ff9?_0x279b9e['count']:_0x37b084[_0x6f67('0x1d')]+_0x37b084[_0x6f67('0x1e')];var _0x5380f6;if(_0x253f61>=_0xb8b58){_0x253f61=_0xb8b58;_0x5380f6=0xc8;}else{_0x5380f6=0xce;}_0x471e5a[_0x6f67('0x1f')](_0x5380f6);return _0x471e5a[_0x6f67('0x20')](_0x6f67('0x21'),_0x104565+'-'+_0x253f61+'/'+_0xb8b58)[_0x6f67('0x1a')](_0x279b9e);}return null;};}function patchUpdates(_0x51b0e4){return function(_0x27cf4d){try{jsonpatch[_0x6f67('0x22')](_0x27cf4d,_0x51b0e4,!![]);}catch(_0x46e32b){return BPromise[_0x6f67('0x23')](_0x46e32b);}return _0x27cf4d[_0x6f67('0x24')]();};}function saveUpdates(_0x1ccf68,_0x24b5ef){return function(_0x222f62){if(_0x222f62){return _0x222f62['update'](_0x1ccf68)['then'](function(_0x516f62){return _0x516f62;});}return null;};}function removeEntity(_0x729104,_0x481584){return function(_0x588db5){if(_0x588db5){return _0x588db5['destroy']()[_0x6f67('0x25')](function(){_0x729104[_0x6f67('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x429eac,_0x35f84b){return function(_0x5c3615){if(!_0x5c3615){_0x429eac['sendStatus'](0x194);}return _0x5c3615;};}function handleError(_0xa1da90,_0x17aaa6){_0x17aaa6=_0x17aaa6||0x1f4;return function(_0x134fcc){logger[_0x6f67('0x26')](_0x134fcc[_0x6f67('0x27')]);if(_0x134fcc[_0x6f67('0x28')]){delete _0x134fcc[_0x6f67('0x28')];}_0xa1da90[_0x6f67('0x1f')](_0x17aaa6)[_0x6f67('0x29')](_0x134fcc);};}exports[_0x6f67('0x2a')]=function(_0x28e545,_0x8aeef8){var _0x41f871={},_0x2fc627={},_0x6041f4={'count':0x0,'rows':[]};var _0x3f976d=_['map'](db[_0x6f67('0x2b')][_0x6f67('0x2c')],function(_0x19c3d2){return{'name':_0x19c3d2[_0x6f67('0x2d')],'type':_0x19c3d2[_0x6f67('0x2e')]['key']};});_0x2fc627[_0x6f67('0x2f')]=_[_0x6f67('0x30')](_0x3f976d,'name');_0x2fc627[_0x6f67('0x31')]=_[_0x6f67('0x32')](_0x28e545['query']);_0x2fc627[_0x6f67('0x33')]=_[_0x6f67('0x34')](_0x2fc627[_0x6f67('0x2f')],_0x2fc627[_0x6f67('0x31')]);_0x41f871[_0x6f67('0x35')]=_[_0x6f67('0x34')](_0x2fc627[_0x6f67('0x2f')],qs[_0x6f67('0x36')](_0x28e545['query'][_0x6f67('0x36')]));_0x41f871[_0x6f67('0x35')]=_0x41f871[_0x6f67('0x35')][_0x6f67('0x37')]?_0x41f871['attributes']:_0x2fc627['model'];if(!_0x28e545[_0x6f67('0x31')][_0x6f67('0x38')](_0x6f67('0x39'))){_0x41f871[_0x6f67('0x1e')]=qs[_0x6f67('0x1e')](_0x28e545[_0x6f67('0x31')][_0x6f67('0x1e')]);_0x41f871['offset']=qs[_0x6f67('0x1d')](_0x28e545[_0x6f67('0x31')]['offset']);}_0x41f871[_0x6f67('0x3a')]=qs[_0x6f67('0x3b')](_0x28e545['query']['sort']);_0x41f871[_0x6f67('0x3c')]=qs[_0x6f67('0x33')](_[_0x6f67('0x3d')](_0x28e545['query'],_0x2fc627[_0x6f67('0x33')]),_0x3f976d);if(_0x28e545['query'][_0x6f67('0x3e')]){_0x41f871[_0x6f67('0x3c')]=_[_0x6f67('0x3f')](_0x41f871[_0x6f67('0x3c')],{'$or':_['map'](_0x3f976d,function(_0x5b07e0){if(_0x5b07e0[_0x6f67('0x2e')]!==_0x6f67('0x40')){var _0x331c5c={};_0x331c5c[_0x5b07e0[_0x6f67('0x28')]]={'$like':'%'+_0x28e545['query'][_0x6f67('0x3e')]+'%'};return _0x331c5c;}})});}_0x41f871=_[_0x6f67('0x3f')]({},_0x41f871,_0x28e545[_0x6f67('0x41')]);var _0x5374d2={'where':_0x41f871['where']};return db[_0x6f67('0x2b')]['count'](_0x5374d2)[_0x6f67('0x25')](function(_0x18d9ad){_0x6041f4[_0x6f67('0x1c')]=_0x18d9ad;if(_0x28e545[_0x6f67('0x31')]['includeAll']){_0x41f871['include']=[{'all':!![]}];}return db[_0x6f67('0x2b')][_0x6f67('0x42')](_0x41f871);})[_0x6f67('0x25')](function(_0x8a0b6e){_0x6041f4['rows']=_0x8a0b6e;return _0x6041f4;})['then'](respondWithFilteredResult(_0x8aeef8,_0x41f871))[_0x6f67('0x43')](handleError(_0x8aeef8,null));};exports[_0x6f67('0x44')]=function(_0x5b1d1e,_0x119bc6){var _0x3a2653={'raw':![],'where':{'id':_0x5b1d1e[_0x6f67('0x45')]['id']}},_0x296bad={};_0x296bad[_0x6f67('0x2f')]=_[_0x6f67('0x32')](db[_0x6f67('0x2b')][_0x6f67('0x2c')]);_0x296bad[_0x6f67('0x31')]=_['keys'](_0x5b1d1e[_0x6f67('0x31')]);_0x296bad['filters']=_[_0x6f67('0x34')](_0x296bad[_0x6f67('0x2f')],_0x296bad[_0x6f67('0x31')]);_0x3a2653['attributes']=_['intersection'](_0x296bad['model'],qs[_0x6f67('0x36')](_0x5b1d1e[_0x6f67('0x31')][_0x6f67('0x36')]));_0x3a2653[_0x6f67('0x35')]=_0x3a2653['attributes']['length']?_0x3a2653[_0x6f67('0x35')]:_0x296bad['model'];if(_0x5b1d1e['query'][_0x6f67('0x46')]){_0x3a2653[_0x6f67('0x47')]=[{'all':!![]}];}_0x3a2653=_[_0x6f67('0x3f')]({},_0x3a2653,_0x5b1d1e[_0x6f67('0x41')]);return db[_0x6f67('0x2b')][_0x6f67('0x48')](_0x3a2653)[_0x6f67('0x25')](handleEntityNotFound(_0x119bc6,null))[_0x6f67('0x25')](respondWithResult(_0x119bc6,null))[_0x6f67('0x43')](handleError(_0x119bc6,null));};exports[_0x6f67('0x49')]=function(_0x4be24a,_0x472fab){return db['Automation']['create'](_0x4be24a[_0x6f67('0x4a')],{})[_0x6f67('0x25')](respondWithResult(_0x472fab,0xc9))[_0x6f67('0x43')](handleError(_0x472fab,null));};exports[_0x6f67('0x4b')]=function(_0x5aec68,_0x596306){if(_0x5aec68['body']['id']){delete _0x5aec68[_0x6f67('0x4a')]['id'];}return db[_0x6f67('0x2b')][_0x6f67('0x48')]({'where':{'id':_0x5aec68[_0x6f67('0x45')]['id']}})[_0x6f67('0x25')](handleEntityNotFound(_0x596306,null))['then'](saveUpdates(_0x5aec68[_0x6f67('0x4a')],null))[_0x6f67('0x25')](respondWithResult(_0x596306,null))['catch'](handleError(_0x596306,null));};exports[_0x6f67('0x4c')]=function(_0x2880c7,_0x381096){return db[_0x6f67('0x2b')]['find']({'where':{'id':_0x2880c7[_0x6f67('0x45')]['id']}})[_0x6f67('0x25')](handleEntityNotFound(_0x381096,null))['then'](removeEntity(_0x381096,null))[_0x6f67('0x43')](handleError(_0x381096,null));};exports[_0x6f67('0x4d')]=function(_0x56ddfd,_0x867604,_0x33cf57){return db['Condition'][_0x6f67('0x48')]({'where':{'id':_0x56ddfd['params']['id']}})[_0x6f67('0x25')](handleEntityNotFound(_0x867604,null))[_0x6f67('0x25')](function(_0x2cff79){if(_0x2cff79){return _0x2cff79[_0x6f67('0x4d')](_0x56ddfd['body'][_0x6f67('0x4e')],_[_0x6f67('0x4f')](_0x56ddfd[_0x6f67('0x4a')],[_0x6f67('0x4e'),'id'])||{});}})[_0x6f67('0x25')](respondWithResult(_0x867604,null))[_0x6f67('0x43')](handleError(_0x867604,null));};exports[_0x6f67('0x50')]=function(_0x2c5f37,_0x4117cc,_0x64fc3a){var _0x12c918={};var _0x231fe6={};var _0x42adf3;var _0x2057eb;return db[_0x6f67('0x2b')][_0x6f67('0x51')]({'where':{'id':_0x2c5f37['params']['id']}})['then'](handleEntityNotFound(_0x4117cc,null))['then'](function(_0xe9e5d4){if(_0xe9e5d4){_0x42adf3=_0xe9e5d4;_0x231fe6[_0x6f67('0x2f')]=_[_0x6f67('0x32')](db[_0x6f67('0x52')][_0x6f67('0x2c')]);_0x231fe6[_0x6f67('0x31')]=_[_0x6f67('0x32')](_0x2c5f37[_0x6f67('0x31')]);_0x231fe6[_0x6f67('0x33')]=_[_0x6f67('0x34')](_0x231fe6[_0x6f67('0x2f')],_0x231fe6['query']);_0x12c918['attributes']=_[_0x6f67('0x34')](_0x231fe6[_0x6f67('0x2f')],qs[_0x6f67('0x36')](_0x2c5f37[_0x6f67('0x31')][_0x6f67('0x36')]));_0x12c918['attributes']=_0x12c918['attributes']['length']?_0x12c918['attributes']:_0x231fe6[_0x6f67('0x2f')];_0x12c918[_0x6f67('0x3a')]=qs[_0x6f67('0x3b')](_0x2c5f37[_0x6f67('0x31')][_0x6f67('0x3b')]);_0x12c918[_0x6f67('0x3c')]=qs[_0x6f67('0x33')](_[_0x6f67('0x3d')](_0x2c5f37[_0x6f67('0x31')],_0x231fe6['filters']));if(_0x2c5f37['query'][_0x6f67('0x3e')]){_0x12c918['where']=_[_0x6f67('0x3f')](_0x12c918[_0x6f67('0x3c')],{'$or':_[_0x6f67('0x30')](_0x12c918[_0x6f67('0x35')],function(_0x5c26b0){var _0x5c42b4={};_0x5c42b4[_0x5c26b0]={'$like':'%'+_0x2c5f37[_0x6f67('0x31')][_0x6f67('0x3e')]+'%'};return _0x5c42b4;})});}_0x12c918=_[_0x6f67('0x3f')]({},_0x12c918,_0x2c5f37[_0x6f67('0x41')]);return _0x42adf3['getConditions'](_0x12c918);}})[_0x6f67('0x25')](function(_0x546dff){if(_0x546dff){_0x2057eb=_0x546dff[_0x6f67('0x37')];if(!_0x2c5f37[_0x6f67('0x31')][_0x6f67('0x38')](_0x6f67('0x39'))){_0x12c918[_0x6f67('0x1e')]=qs[_0x6f67('0x1e')](_0x2c5f37['query'][_0x6f67('0x1e')]);_0x12c918[_0x6f67('0x1d')]=qs[_0x6f67('0x1d')](_0x2c5f37['query'][_0x6f67('0x1d')]);}return _0x42adf3[_0x6f67('0x50')](_0x12c918);}})['then'](function(_0x40d6da){if(_0x40d6da){return _0x40d6da?{'count':_0x2057eb,'rows':_0x40d6da}:null;}})['then'](respondWithResult(_0x4117cc,null))[_0x6f67('0x43')](handleError(_0x4117cc,null));};exports[_0x6f67('0x53')]=function(_0x4816dd,_0x505b75,_0x509f57){return db[_0x6f67('0x54')]['find']({'where':{'id':_0x4816dd[_0x6f67('0x45')]['id']}})[_0x6f67('0x25')](handleEntityNotFound(_0x505b75,null))[_0x6f67('0x25')](function(_0x5430cf){if(_0x5430cf){return _0x5430cf[_0x6f67('0x53')](_0x4816dd[_0x6f67('0x4a')][_0x6f67('0x4e')],_['omit'](_0x4816dd[_0x6f67('0x4a')],[_0x6f67('0x4e'),'id'])||{});}})['then'](respondWithResult(_0x505b75,null))[_0x6f67('0x43')](handleError(_0x505b75,null));};exports[_0x6f67('0x55')]=function(_0x556744,_0x447f4e,_0x2d3e05){var _0x1165ac={};var _0x3e4dcf={};var _0x2457fe;var _0x185e74;return db[_0x6f67('0x2b')]['findOne']({'where':{'id':_0x556744['params']['id']}})[_0x6f67('0x25')](handleEntityNotFound(_0x447f4e,null))[_0x6f67('0x25')](function(_0x441eae){if(_0x441eae){_0x2457fe=_0x441eae;_0x3e4dcf[_0x6f67('0x2f')]=_[_0x6f67('0x32')](db[_0x6f67('0x54')][_0x6f67('0x2c')]);_0x3e4dcf[_0x6f67('0x31')]=_[_0x6f67('0x32')](_0x556744['query']);_0x3e4dcf[_0x6f67('0x33')]=_['intersection'](_0x3e4dcf[_0x6f67('0x2f')],_0x3e4dcf['query']);_0x1165ac['attributes']=_[_0x6f67('0x34')](_0x3e4dcf[_0x6f67('0x2f')],qs['fields'](_0x556744[_0x6f67('0x31')][_0x6f67('0x36')]));_0x1165ac[_0x6f67('0x35')]=_0x1165ac['attributes']['length']?_0x1165ac['attributes']:_0x3e4dcf[_0x6f67('0x2f')];_0x1165ac[_0x6f67('0x3a')]=qs[_0x6f67('0x3b')](_0x556744[_0x6f67('0x31')][_0x6f67('0x3b')]);_0x1165ac[_0x6f67('0x3c')]=qs[_0x6f67('0x33')](_[_0x6f67('0x3d')](_0x556744['query'],_0x3e4dcf[_0x6f67('0x33')]));if(_0x556744[_0x6f67('0x31')][_0x6f67('0x3e')]){_0x1165ac[_0x6f67('0x3c')]=_[_0x6f67('0x3f')](_0x1165ac[_0x6f67('0x3c')],{'$or':_[_0x6f67('0x30')](_0x1165ac['attributes'],function(_0x244c4d){var _0x5d14af={};_0x5d14af[_0x244c4d]={'$like':'%'+_0x556744[_0x6f67('0x31')][_0x6f67('0x3e')]+'%'};return _0x5d14af;})});}_0x1165ac=_[_0x6f67('0x3f')]({},_0x1165ac,_0x556744['options']);return _0x2457fe['getActions'](_0x1165ac);}})[_0x6f67('0x25')](function(_0x4618f){if(_0x4618f){_0x185e74=_0x4618f[_0x6f67('0x37')];if(!_0x556744[_0x6f67('0x31')][_0x6f67('0x38')]('nolimit')){_0x1165ac[_0x6f67('0x1e')]=qs[_0x6f67('0x1e')](_0x556744['query'][_0x6f67('0x1e')]);_0x1165ac[_0x6f67('0x1d')]=qs[_0x6f67('0x1d')](_0x556744[_0x6f67('0x31')]['offset']);}return _0x2457fe[_0x6f67('0x55')](_0x1165ac);}})[_0x6f67('0x25')](function(_0x431024){if(_0x431024){return _0x431024?{'count':_0x185e74,'rows':_0x431024}:null;}})[_0x6f67('0x25')](respondWithResult(_0x447f4e,null))[_0x6f67('0x43')](handleError(_0x447f4e,null));};
\ No newline at end of file
index a7f38ba..e5a50b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x596e=['../../config/environment','./automation.attributes','exports','define','Automation','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x32c97a,_0x394a59){var _0x589b3b=function(_0xeb88c9){while(--_0xeb88c9){_0x32c97a['push'](_0x32c97a['shift']());}};_0x589b3b(++_0x394a59);}(_0x596e,0x1e1));var _0xe596=function(_0x2cdd92,_0x139b19){_0x2cdd92=_0x2cdd92-0x0;var _0x1b4219=_0x596e[_0x2cdd92];return _0x1b4219;};'use strict';var _=require(_0xe596('0x0'));var util=require(_0xe596('0x1'));var logger=require(_0xe596('0x2'))(_0xe596('0x3'));var moment=require(_0xe596('0x4'));var BPromise=require(_0xe596('0x5'));var rp=require(_0xe596('0x6'));var fs=require('fs');var path=require(_0xe596('0x7'));var rimraf=require(_0xe596('0x8'));var config=require(_0xe596('0x9'));var attributes=require(_0xe596('0xa'));module[_0xe596('0xb')]=function(_0x325b6d,_0x302912){return _0x325b6d[_0xe596('0xc')](_0xe596('0xd'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x197e=['../../config/environment','exports','Automation','tools_automations','util','request-promise'];(function(_0x16d23f,_0x471ced){var _0x17b9d3=function(_0x3853a8){while(--_0x3853a8){_0x16d23f['push'](_0x16d23f['shift']());}};_0x17b9d3(++_0x471ced);}(_0x197e,0xd0));var _0xe197=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x197e[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xe197('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe197('0x1'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe197('0x2'));var attributes=require('./automation.attributes');module[_0xe197('0x3')]=function(_0x59102e,_0x1cb115){return _0x59102e['define'](_0xe197('0x4'),attributes,{'tableName':_0xe197('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c4eb393..c646016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ffc=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','util','moment','randomstring'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0ffc,0x9e));var _0xc0ff=function(_0xd81e6c,_0x48d93d){_0xd81e6c=_0xd81e6c-0x0;var _0x41f111=_0x0ffc[_0xd81e6c];return _0x41f111;};'use strict';var _=require('lodash');var util=require(_0xc0ff('0x0'));var moment=require(_0xc0ff('0x1'));var BPromise=require('bluebird');var rs=require(_0xc0ff('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc0ff('0x3'))['db'];var utils=require(_0xc0ff('0x4'));var logger=require(_0xc0ff('0x5'))(_0xc0ff('0x6'));var config=require(_0xc0ff('0x7'));var jayson=require(_0xc0ff('0x8'));var client=jayson[_0xc0ff('0x9')][_0xc0ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x245f10,_0x51695d,_0x29f9b7){return new BPromise(function(_0x2d6559,_0x3799e5){return client[_0xc0ff('0xb')](_0x245f10,_0x29f9b7)[_0xc0ff('0xc')](function(_0x380604){logger[_0xc0ff('0xd')](_0xc0ff('0xe'),_0x51695d,'request\x20sent');logger['debug'](_0xc0ff('0xf'),_0x51695d,'request\x20sent',JSON[_0xc0ff('0x10')](_0x380604));if(_0x380604[_0xc0ff('0x11')]){if(_0x380604[_0xc0ff('0x11')][_0xc0ff('0x12')]===0x1f4){logger['error'](_0xc0ff('0xe'),_0x51695d,_0x380604[_0xc0ff('0x11')]['message']);return _0x3799e5(_0x380604[_0xc0ff('0x11')]['message']);}logger['error']('Automation,\x20%s,\x20%s',_0x51695d,_0x380604[_0xc0ff('0x11')][_0xc0ff('0x13')]);return _0x2d6559(_0x380604[_0xc0ff('0x11')]['message']);}else{logger[_0xc0ff('0xd')](_0xc0ff('0xe'),_0x51695d,_0xc0ff('0x14'));_0x2d6559(_0x380604[_0xc0ff('0x15')][_0xc0ff('0x13')]);}})[_0xc0ff('0x16')](function(_0x1cd708){logger[_0xc0ff('0x11')](_0xc0ff('0xe'),_0x51695d,_0x1cd708);_0x3799e5(_0x1cd708);});});}
\ No newline at end of file
+var _0x5d0a=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash'];(function(_0x29be28,_0x1d71e5){var _0x5bcc73=function(_0x4bfef0){while(--_0x4bfef0){_0x29be28['push'](_0x29be28['shift']());}};_0x5bcc73(++_0x1d71e5);}(_0x5d0a,0x175));var _0xa5d0=function(_0x29ae49,_0x2c9636){_0x29ae49=_0x29ae49-0x0;var _0x359826=_0x5d0a[_0x29ae49];return _0x359826;};'use strict';var _=require(_0xa5d0('0x0'));var util=require('util');var moment=require(_0xa5d0('0x1'));var BPromise=require('bluebird');var rs=require(_0xa5d0('0x2'));var fs=require('fs');var Redis=require(_0xa5d0('0x3'));var db=require(_0xa5d0('0x4'))['db'];var utils=require(_0xa5d0('0x5'));var logger=require('../../config/logger')(_0xa5d0('0x6'));var config=require(_0xa5d0('0x7'));var jayson=require(_0xa5d0('0x8'));var client=jayson[_0xa5d0('0x9')][_0xa5d0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x16af3f,_0x19d26f,_0x1841a1){return new BPromise(function(_0x295165,_0x27fe5a){return client[_0xa5d0('0xb')](_0x16af3f,_0x1841a1)['then'](function(_0x43698e){logger[_0xa5d0('0xc')](_0xa5d0('0xd'),_0x19d26f,_0xa5d0('0xe'));logger[_0xa5d0('0xf')](_0xa5d0('0x10'),_0x19d26f,_0xa5d0('0xe'),JSON[_0xa5d0('0x11')](_0x43698e));if(_0x43698e[_0xa5d0('0x12')]){if(_0x43698e[_0xa5d0('0x12')]['code']===0x1f4){logger[_0xa5d0('0x12')]('Automation,\x20%s,\x20%s',_0x19d26f,_0x43698e['error'][_0xa5d0('0x13')]);return _0x27fe5a(_0x43698e[_0xa5d0('0x12')][_0xa5d0('0x13')]);}logger[_0xa5d0('0x12')]('Automation,\x20%s,\x20%s',_0x19d26f,_0x43698e['error'][_0xa5d0('0x13')]);return _0x295165(_0x43698e[_0xa5d0('0x12')][_0xa5d0('0x13')]);}else{logger[_0xa5d0('0xc')](_0xa5d0('0xd'),_0x19d26f,_0xa5d0('0xe'));_0x295165(_0x43698e[_0xa5d0('0x14')]['message']);}})[_0xa5d0('0x15')](function(_0x5bfe18){logger[_0xa5d0('0x12')](_0xa5d0('0xd'),_0x19d26f,_0x5bfe18);_0x27fe5a(_0x5bfe18);});});}
\ No newline at end of file
index 9b34366..2f4340c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe700=['/:id/conditions','getConditions','/:id/actions','getActions','post','addConditions','addActions','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xe700,0x16a));var _0x0e70=function(_0x4105a9,_0x4a62ed){_0x4105a9=_0x4105a9-0x0;var _0x5ba3e8=_0xe700[_0x4105a9];return _0x5ba3e8;};'use strict';var multer=require(_0x0e70('0x0'));var util=require(_0x0e70('0x1'));var path=require(_0x0e70('0x2'));var timeout=require(_0x0e70('0x3'));var express=require(_0x0e70('0x4'));var router=express['Router']();var fs_extra=require(_0x0e70('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0e70('0x6'));var config=require(_0x0e70('0x7'));var controller=require('./automation.controller');router['get']('/',auth[_0x0e70('0x8')](),controller[_0x0e70('0x9')]);router[_0x0e70('0xa')](_0x0e70('0xb'),auth['isAuthenticated'](),controller[_0x0e70('0xc')]);router[_0x0e70('0xa')](_0x0e70('0xd'),auth[_0x0e70('0x8')](),controller[_0x0e70('0xe')]);router[_0x0e70('0xa')](_0x0e70('0xf'),auth['isAuthenticated'](),controller[_0x0e70('0x10')]);router[_0x0e70('0x11')]('/',auth[_0x0e70('0x8')](),controller['create']);router[_0x0e70('0x11')](_0x0e70('0xd'),auth[_0x0e70('0x8')](),controller[_0x0e70('0x12')]);router[_0x0e70('0x11')](_0x0e70('0xf'),auth['isAuthenticated'](),controller[_0x0e70('0x13')]);router[_0x0e70('0x14')](_0x0e70('0xb'),auth[_0x0e70('0x8')](),controller[_0x0e70('0x15')]);router[_0x0e70('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x0e70('0x17')]);module[_0x0e70('0x18')]=router;
\ No newline at end of file
+var _0x23fe=['../../components/interaction/service','../../config/environment','./automation.controller','get','/:id','show','/:id/conditions','isAuthenticated','/:id/actions','getActions','post','create','addConditions','addActions','put','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x2ce40e,_0x40a409){var _0x4d614d=function(_0x5c09d9){while(--_0x5c09d9){_0x2ce40e['push'](_0x2ce40e['shift']());}};_0x4d614d(++_0x40a409);}(_0x23fe,0x102));var _0xe23f=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x23fe[_0x16d10f];return _0x50c823;};'use strict';var multer=require(_0xe23f('0x0'));var util=require(_0xe23f('0x1'));var path=require('path');var timeout=require(_0xe23f('0x2'));var express=require(_0xe23f('0x3'));var router=express[_0xe23f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe23f('0x5'));var interaction=require(_0xe23f('0x6'));var config=require(_0xe23f('0x7'));var controller=require(_0xe23f('0x8'));router[_0xe23f('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe23f('0xa'),auth['isAuthenticated'](),controller[_0xe23f('0xb')]);router[_0xe23f('0x9')](_0xe23f('0xc'),auth[_0xe23f('0xd')](),controller['getConditions']);router[_0xe23f('0x9')](_0xe23f('0xe'),auth[_0xe23f('0xd')](),controller[_0xe23f('0xf')]);router[_0xe23f('0x10')]('/',auth[_0xe23f('0xd')](),controller[_0xe23f('0x11')]);router['post']('/:id/conditions',auth[_0xe23f('0xd')](),controller[_0xe23f('0x12')]);router[_0xe23f('0x10')]('/:id/actions',auth[_0xe23f('0xd')](),controller[_0xe23f('0x13')]);router[_0xe23f('0x14')](_0xe23f('0xa'),auth['isAuthenticated'](),controller[_0xe23f('0x15')]);router[_0xe23f('0x16')](_0xe23f('0xa'),auth['isAuthenticated'](),controller[_0xe23f('0x17')]);module['exports']=router;
\ No newline at end of file
index c45c4f2..7593a56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d34=['Active/Disactive\x20Campaign','Max\x20200\x20calls.','INTEGER','UNSIGNED','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#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)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','STRING','ENUM','BOOLEAN'];(function(_0x1c0ebf,_0x25c921){var _0x2ea1fc=function(_0x2d9ef7){while(--_0x2d9ef7){_0x1c0ebf['push'](_0x1c0ebf['shift']());}};_0x2ea1fc(++_0x25c921);}(_0x7d34,0x7c));var _0x47d3=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x7d34[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0x47d3('0x0'));module['exports']={'name':{'type':Sequelize[_0x47d3('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x47d3('0x2')]('ivr'),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0x47d3('0x1')]},'active':{'type':Sequelize[_0x47d3('0x3')],'defaultValue':0x0,'comment':_0x47d3('0x4')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x47d3('0x5')},'dialOriginateCallerIdName':{'type':Sequelize[_0x47d3('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x47d3('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x47d3('0x6')](0x3)[_0x47d3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x47d3('0x6')](0x5)[_0x47d3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47d3('0x8')},'dialBusyMaxRetry':{'type':Sequelize[_0x47d3('0x6')](0x3)[_0x47d3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x47d3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47d3('0x9')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x47d3('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x47d3('0x6')](0x5)[_0x47d3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47d3('0xa')},'dialGlobalMaxRetry':{'type':Sequelize[_0x47d3('0x6')](0x3)[_0x47d3('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x47d3('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x47d3('0xb')},'dialCheckDuplicateType':{'type':Sequelize[_0x47d3('0x2')](_0x47d3('0xc'),_0x47d3('0xd'),_0x47d3('0xe')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x47d3('0x3')],'defaultValue':0x0,'comment':_0x47d3('0xf')},'dialAMDInitialSilence':{'type':Sequelize[_0x47d3('0x6')](0x9)[_0x47d3('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x47d3('0x10')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x47d3('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x47d3('0x11')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x47d3('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x47d3('0x12')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x47d3('0x6')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x47d3('0x13')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x47d3('0x6')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x47d3('0x14')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x47d3('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x47d3('0x15')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x47d3('0x6')](0x9)[_0x47d3('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x47d3('0x2')](_0x47d3('0x16'),'ASC'),'defaultValue':_0x47d3('0x16')},'dialPrefix':{'type':Sequelize[_0x47d3('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x47d3('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x47d3('0x17')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x47d3('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x47d3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47d3('0x18')},'dialDropMaxRetry':{'type':Sequelize[_0x47d3('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x47d3('0x19')},'dialDropRetryFrequency':{'type':Sequelize[_0x47d3('0x6')](0x5)[_0x47d3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47d3('0x1a')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x47d3('0x1b')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x47d3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47d3('0x1c')},'dialMachineMaxRetry':{'type':Sequelize[_0x47d3('0x6')](0x3)[_0x47d3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x47d3('0x1d')},'dialMachineRetryFrequency':{'type':Sequelize[_0x47d3('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x47d3('0x6')](0x3)[_0x47d3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x47d3('0x1e')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x47d3('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47d3('0x1f')}};
\ No newline at end of file
+var _0xb640=['never','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','Max\x20200\x20calls.','UNSIGNED','Originate\x20Timeout\x20Seconds\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,*,*,*'];(function(_0x23aa34,_0x2ec822){var _0xfa8ee6=function(_0x3c0706){while(--_0x3c0706){_0x23aa34['push'](_0x23aa34['shift']());}};_0xfa8ee6(++_0x2ec822);}(_0xb640,0xc7));var _0x0b64=function(_0x55f34a,_0x4c8897){_0x55f34a=_0x55f34a-0x0;var _0x56efe4=_0xb640[_0x55f34a];return _0x56efe4;};'use strict';var Sequelize=require(_0x0b64('0x0'));module[_0x0b64('0x1')]={'name':{'type':Sequelize[_0x0b64('0x2')],'unique':_0x0b64('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x0b64('0x4')](_0x0b64('0x5')),'allowNull':![],'defaultValue':_0x0b64('0x5')},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x0b64('0x6')],'defaultValue':0x0,'comment':_0x0b64('0x7')},'limitCalls':{'type':Sequelize[_0x0b64('0x8')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x0b64('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0b64('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x0b64('0x8')](0x3)[_0x0b64('0xa')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0b64('0xb')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0b64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x0b64('0x8')](0x3)[_0x0b64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x0b64('0x8')](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0b64('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x0b64('0x8')](0x3)[_0x0b64('0xa')],'defaultValue':0x3,'comment':_0x0b64('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x0b64('0x8')](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0b64('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0x0b64('0x8')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x0b64('0xf')},'dialTimezone':{'type':Sequelize[_0x0b64('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x0b64('0x2')],'defaultValue':_0x0b64('0x10')},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0x0b64('0x11'),'onlyIfOpen'),'defaultValue':_0x0b64('0x12')},'dialAMDActive':{'type':Sequelize[_0x0b64('0x6')],'defaultValue':0x0,'comment':_0x0b64('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x0b64('0x8')](0x9)[_0x0b64('0xa')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x0b64('0x14')},'dialAMDGreeting':{'type':Sequelize[_0x0b64('0x8')](0x9)[_0x0b64('0xa')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x0b64('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x0b64('0x8')](0x9)[_0x0b64('0xa')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0b64('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x0b64('0x8')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0b64('0x17')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x0b64('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x0b64('0x8')](0x9)[_0x0b64('0xa')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x0b64('0xa')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x0b64('0x8')](0x5)[_0x0b64('0xa')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x0b64('0xa')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC',_0x0b64('0x19')),'defaultValue':_0x0b64('0x1a')},'dialPrefix':{'type':Sequelize[_0x0b64('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x0b64('0x8')](0x3)[_0x0b64('0xa')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0b64('0x1b')},'dialCutDigit':{'type':Sequelize[_0x0b64('0x8')](0x3)[_0x0b64('0xa')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0b64('0x1c')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x0b64('0x8')](0x3)[_0x0b64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0b64('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0b64('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0x0b64('0x8')](0x3)[_0x0b64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0b64('0x1f')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x0b64('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x0b64('0x8')](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0b64('0x20')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x0b64('0x8')](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0b64('0x21')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0b64('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0b64('0x22')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0b64('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0b64('0x23')}};
\ No newline at end of file
index be307f3..2919692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7f1=['create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','update','getHoppers','CmHopper','nolimit','filter','getHopperHistories','CmHopperHistory','CampaignId','getHopperFinals','findOne','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','always','cm_hopper','fromQuery','phone','ContactId','ListId','field','NOW()','scheduledAt','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','select','COALESCE(calleridnum,\x27\x27)','from','cm_hopper_final','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','into','phone\x20IS\x20NOT\x20NULL','cm_hopper_additional_phones','cmHopperId','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.createdAt\x20=\x20?','sequelize','push','all','removeLists','getBlackLists','addBlackLists','removeBlackLists','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','then','destroy','get','IvrCampaigns','UserProfileResource','error','name','send','index','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find'];(function(_0x257b0e,_0x563d7e){var _0x27ac2a=function(_0x3a4bbc){while(--_0x3a4bbc){_0x257b0e['push'](_0x257b0e['shift']());}};_0x27ac2a(++_0x563d7e);}(_0xb7f1,0xdc));var _0x1b7f=function(_0x43d8cb,_0x58379b){_0x43d8cb=_0x43d8cb-0x0;var _0x48aa0b=_0xb7f1[_0x43d8cb];return _0x48aa0b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1b7f('0x0'));var jsonpatch=require(_0x1b7f('0x1'));var rp=require(_0x1b7f('0x2'));var moment=require('moment');var BPromise=require(_0x1b7f('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1b7f('0x4'));var sox=require(_0x1b7f('0x5'));var csv=require('to-csv');var ejs=require(_0x1b7f('0x6'));var fs=require('fs');var fs_extra=require(_0x1b7f('0x7'));var _=require(_0x1b7f('0x8'));var squel=require(_0x1b7f('0x9'));var crypto=require(_0x1b7f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x1b7f('0xb'));var toCsv=require(_0x1b7f('0xc'));var querystring=require(_0x1b7f('0xd'));var Papa=require(_0x1b7f('0xe'));var Redis=require(_0x1b7f('0xf'));var authService=require(_0x1b7f('0x10'));var qs=require(_0x1b7f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1b7f('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x1b7f('0x13'));var config=require(_0x1b7f('0x14'));var licenseUtil=require(_0x1b7f('0x15'));var db=require(_0x1b7f('0x16'))['db'];function respondWithStatusCode(_0x308743,_0x42049d){_0x42049d=_0x42049d||0xcc;return function(_0x4eda40){if(_0x4eda40){return _0x308743[_0x1b7f('0x17')](_0x42049d);}return _0x308743[_0x1b7f('0x18')](_0x42049d)[_0x1b7f('0x19')]();};}function respondWithResult(_0x14d55c,_0x1f0059){_0x1f0059=_0x1f0059||0xc8;return function(_0x182d31){if(_0x182d31){return _0x14d55c[_0x1b7f('0x18')](_0x1f0059)[_0x1b7f('0x1a')](_0x182d31);}};}function respondWithFilteredResult(_0x534e43,_0x539362){return function(_0x2d30c6){if(_0x2d30c6){var _0x389ff7=typeof _0x539362['offset']===_0x1b7f('0x1b')&&typeof _0x539362[_0x1b7f('0x1c')]===_0x1b7f('0x1b');var _0x3d5922=_0x2d30c6['count'];var _0x44b143=_0x389ff7?0x0:_0x539362[_0x1b7f('0x1d')];var _0xa9a3de=_0x389ff7?_0x2d30c6[_0x1b7f('0x1e')]:_0x539362[_0x1b7f('0x1d')]+_0x539362[_0x1b7f('0x1c')];var _0x502964;if(_0xa9a3de>=_0x3d5922){_0xa9a3de=_0x3d5922;_0x502964=0xc8;}else{_0x502964=0xce;}_0x534e43[_0x1b7f('0x18')](_0x502964);return _0x534e43[_0x1b7f('0x1f')](_0x1b7f('0x20'),_0x44b143+'-'+_0xa9a3de+'/'+_0x3d5922)[_0x1b7f('0x1a')](_0x2d30c6);}return null;};}function patchUpdates(_0x5e48ff){return function(_0x53d53c){try{jsonpatch[_0x1b7f('0x21')](_0x53d53c,_0x5e48ff,!![]);}catch(_0x53dab5){return BPromise[_0x1b7f('0x22')](_0x53dab5);}return _0x53d53c['save']();};}function saveUpdates(_0x1e11d6,_0x55e39b){return function(_0x1aed76){if(_0x1aed76){return _0x1aed76['update'](_0x1e11d6)[_0x1b7f('0x23')](function(_0x4291b0){return _0x4291b0;});}return null;};}function removeEntity(_0xf00a8f,_0x50e60f){return function(_0x4c4728){if(_0x4c4728){return _0x4c4728[_0x1b7f('0x24')]()[_0x1b7f('0x23')](function(){var _0x34c64c=_0x4c4728[_0x1b7f('0x25')]({'plain':!![]});var _0x3d9659=_0x1b7f('0x26');return db[_0x1b7f('0x27')][_0x1b7f('0x24')]({'where':{'type':_0x3d9659,'resourceId':_0x34c64c['id']}})[_0x1b7f('0x23')](function(){return _0x4c4728;});})[_0x1b7f('0x23')](function(){_0xf00a8f[_0x1b7f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x481fd8,_0x5a1232){return function(_0x575f26){if(!_0x575f26){_0x481fd8[_0x1b7f('0x17')](0x194);}return _0x575f26;};}function handleError(_0x5a800b,_0x43fcd7){_0x43fcd7=_0x43fcd7||0x1f4;return function(_0x30ff65){logger[_0x1b7f('0x28')](_0x30ff65['stack']);if(_0x30ff65['name']){delete _0x30ff65[_0x1b7f('0x29')];}_0x5a800b[_0x1b7f('0x18')](_0x43fcd7)[_0x1b7f('0x2a')](_0x30ff65);};}exports[_0x1b7f('0x2b')]=function(_0x865d,_0x15e519){var _0x5c56c6={},_0x6016de={},_0x5c4179={'count':0x0,'rows':[]};var _0x2a25fa=_[_0x1b7f('0x2c')](db[_0x1b7f('0x2d')][_0x1b7f('0x2e')],function(_0x25dab6){return{'name':_0x25dab6[_0x1b7f('0x2f')],'type':_0x25dab6[_0x1b7f('0x30')][_0x1b7f('0x31')]};});_0x6016de[_0x1b7f('0x32')]=_[_0x1b7f('0x2c')](_0x2a25fa,_0x1b7f('0x29'));_0x6016de[_0x1b7f('0x33')]=_[_0x1b7f('0x34')](_0x865d['query']);_0x6016de[_0x1b7f('0x35')]=_[_0x1b7f('0x36')](_0x6016de[_0x1b7f('0x32')],_0x6016de['query']);_0x5c56c6[_0x1b7f('0x37')]=_[_0x1b7f('0x36')](_0x6016de['model'],qs[_0x1b7f('0x38')](_0x865d[_0x1b7f('0x33')][_0x1b7f('0x38')]));_0x5c56c6['attributes']=_0x5c56c6[_0x1b7f('0x37')][_0x1b7f('0x39')]?_0x5c56c6[_0x1b7f('0x37')]:_0x6016de['model'];if(!_0x865d['query'][_0x1b7f('0x3a')]('nolimit')){_0x5c56c6[_0x1b7f('0x1c')]=qs[_0x1b7f('0x1c')](_0x865d['query'][_0x1b7f('0x1c')]);_0x5c56c6[_0x1b7f('0x1d')]=qs['offset'](_0x865d[_0x1b7f('0x33')][_0x1b7f('0x1d')]);}_0x5c56c6[_0x1b7f('0x3b')]=qs[_0x1b7f('0x3c')](_0x865d[_0x1b7f('0x33')][_0x1b7f('0x3c')]);_0x5c56c6[_0x1b7f('0x3d')]=qs[_0x1b7f('0x35')](_[_0x1b7f('0x3e')](_0x865d[_0x1b7f('0x33')],_0x6016de['filters']),_0x2a25fa);if(_0x865d[_0x1b7f('0x33')]['filter']){_0x5c56c6['where']=_['merge'](_0x5c56c6['where'],{'$or':_[_0x1b7f('0x2c')](_0x2a25fa,function(_0x49be37){if(_0x49be37[_0x1b7f('0x30')]!==_0x1b7f('0x3f')){var _0x2eaca9={};_0x2eaca9[_0x49be37[_0x1b7f('0x29')]]={'$like':'%'+_0x865d[_0x1b7f('0x33')]['filter']+'%'};return _0x2eaca9;}})});}_0x5c56c6=_[_0x1b7f('0x40')]({},_0x5c56c6,_0x865d[_0x1b7f('0x41')]);var _0x30596b={'where':_0x5c56c6[_0x1b7f('0x3d')]};return db['Campaign'][_0x1b7f('0x1e')](_0x30596b)[_0x1b7f('0x23')](function(_0x3aaa4b){_0x5c4179[_0x1b7f('0x1e')]=_0x3aaa4b;if(_0x865d['query'][_0x1b7f('0x42')]){_0x5c56c6[_0x1b7f('0x43')]=[{'all':!![]}];}return db[_0x1b7f('0x2d')][_0x1b7f('0x44')](_0x5c56c6);})[_0x1b7f('0x23')](function(_0x363369){_0x5c4179[_0x1b7f('0x45')]=_0x363369;return _0x5c4179;})[_0x1b7f('0x23')](respondWithFilteredResult(_0x15e519,_0x5c56c6))[_0x1b7f('0x46')](handleError(_0x15e519,null));};exports[_0x1b7f('0x47')]=function(_0x47c173,_0x12301f){var _0xef2ff8={'raw':![],'where':{'id':_0x47c173[_0x1b7f('0x48')]['id']}},_0x5cea85={};_0x5cea85[_0x1b7f('0x32')]=_[_0x1b7f('0x34')](db['Campaign'][_0x1b7f('0x2e')]);_0x5cea85[_0x1b7f('0x33')]=_[_0x1b7f('0x34')](_0x47c173[_0x1b7f('0x33')]);_0x5cea85[_0x1b7f('0x35')]=_['intersection'](_0x5cea85[_0x1b7f('0x32')],_0x5cea85[_0x1b7f('0x33')]);_0xef2ff8[_0x1b7f('0x37')]=_[_0x1b7f('0x36')](_0x5cea85['model'],qs[_0x1b7f('0x38')](_0x47c173[_0x1b7f('0x33')]['fields']));_0xef2ff8[_0x1b7f('0x37')]=_0xef2ff8['attributes'][_0x1b7f('0x39')]?_0xef2ff8[_0x1b7f('0x37')]:_0x5cea85[_0x1b7f('0x32')];if(_0x47c173[_0x1b7f('0x33')][_0x1b7f('0x42')]){_0xef2ff8[_0x1b7f('0x43')]=[{'all':!![]}];}_0xef2ff8=_[_0x1b7f('0x40')]({},_0xef2ff8,_0x47c173[_0x1b7f('0x41')]);return db[_0x1b7f('0x2d')][_0x1b7f('0x49')](_0xef2ff8)[_0x1b7f('0x23')](handleEntityNotFound(_0x12301f,null))[_0x1b7f('0x23')](respondWithResult(_0x12301f,null))[_0x1b7f('0x46')](handleError(_0x12301f,null));};exports[_0x1b7f('0x4a')]=function(_0x16e660,_0x13f3d5){return db['Campaign'][_0x1b7f('0x4a')](_0x16e660[_0x1b7f('0x4b')],{})[_0x1b7f('0x23')](function(_0xc7ab9f){var _0x2643b2=_0x16e660['user'][_0x1b7f('0x25')]({'plain':!![]});if(!_0x2643b2)throw new Error(_0x1b7f('0x4c'));if(_0x2643b2['role']===_0x1b7f('0x4d')){var _0x39b9f1=_0xc7ab9f['get']({'plain':!![]});var _0x3e4650=_0x1b7f('0x26');return db[_0x1b7f('0x4e')][_0x1b7f('0x49')]({'where':{'name':_0x3e4650,'userProfileId':_0x2643b2[_0x1b7f('0x4f')]},'raw':!![]})['then'](function(_0xda32b0){if(_0xda32b0&&_0xda32b0[_0x1b7f('0x50')]===0x0){return db[_0x1b7f('0x27')][_0x1b7f('0x4a')]({'name':_0x39b9f1[_0x1b7f('0x29')],'resourceId':_0x39b9f1['id'],'type':_0xda32b0[_0x1b7f('0x29')],'sectionId':_0xda32b0['id']},{})[_0x1b7f('0x23')](function(){return _0xc7ab9f;});}else{return _0xc7ab9f;}})[_0x1b7f('0x46')](function(_0x11b790){logger['error'](_0x1b7f('0x51'),_0x11b790);throw _0x11b790;});}return _0xc7ab9f;})[_0x1b7f('0x23')](respondWithResult(_0x13f3d5,0xc9))[_0x1b7f('0x46')](handleError(_0x13f3d5,null));};exports[_0x1b7f('0x52')]=function(_0x361890,_0x45b458){var _0x48119e={'where':{'id':_0x361890[_0x1b7f('0x48')]['id']}},_0x505147={};_0x505147[_0x1b7f('0x32')]=_[_0x1b7f('0x34')](db['Campaign'][_0x1b7f('0x2e')]);_0x48119e[_0x1b7f('0x37')]=_['intersection'](_0x505147[_0x1b7f('0x32')],qs[_0x1b7f('0x38')](_0x361890['query'][_0x1b7f('0x38')]));_0x48119e[_0x1b7f('0x37')]=_0x48119e['attributes'][_0x1b7f('0x39')]?_0x48119e[_0x1b7f('0x37')]:_0x505147[_0x1b7f('0x32')];if(_0x361890[_0x1b7f('0x33')][_0x1b7f('0x42')]){_0x48119e[_0x1b7f('0x43')]=[{'all':!![]}];}_0x48119e=_['merge']({},_0x48119e,_0x361890['options']);return db['Campaign'][_0x1b7f('0x49')](_0x48119e)[_0x1b7f('0x23')](handleEntityNotFound(_0x45b458,null))[_0x1b7f('0x23')](function(_0x243d89){if(_0x243d89){var _0x2c964a=_0x243d89[_0x1b7f('0x25')]({'plain':!![]});_0x2c964a=qs[_0x1b7f('0x53')](_0x2c964a,['id',_0x1b7f('0x54'),_0x1b7f('0x55')]);_0x361890[_0x1b7f('0x4b')]=_[_0x1b7f('0x53')](_0x361890[_0x1b7f('0x4b')],['id',_0x1b7f('0x54'),_0x1b7f('0x55')]);return db[_0x1b7f('0x2d')]['create'](_['merge'](_0x2c964a,_0x361890[_0x1b7f('0x4b')]),{'include':_0x361890[_0x1b7f('0x33')][_0x1b7f('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x4f5798){var _0x46b207=_0x361890['user']['get']({'plain':!![]});if(!_0x46b207)throw new Error(_0x1b7f('0x4c'));if(_0x46b207[_0x1b7f('0x56')]===_0x1b7f('0x4d')){var _0x5cd621=_0x4f5798['get']({'plain':!![]});var _0x1ac850='IvrCampaigns';return db['UserProfileSection'][_0x1b7f('0x49')]({'where':{'name':_0x1ac850,'userProfileId':_0x46b207[_0x1b7f('0x4f')]},'raw':!![]})['then'](function(_0x4c8aba){if(_0x4c8aba&&_0x4c8aba['autoAssociation']===0x0){return db['UserProfileResource'][_0x1b7f('0x4a')]({'name':_0x5cd621[_0x1b7f('0x29')],'resourceId':_0x5cd621['id'],'type':_0x4c8aba['name'],'sectionId':_0x4c8aba['id']},{})['then'](function(){return _0x4f5798;});}else{return _0x4f5798;}})[_0x1b7f('0x46')](function(_0x21461f){logger['error'](_0x1b7f('0x51'),_0x21461f);throw _0x21461f;});}return _0x4f5798;});}})[_0x1b7f('0x23')](respondWithResult(_0x45b458,0xc9))[_0x1b7f('0x46')](handleError(_0x45b458,null));};exports[_0x1b7f('0x57')]=function(_0x41d2e3,_0x3b24d9){if(_0x41d2e3['body']['id']){delete _0x41d2e3['body']['id'];}return db[_0x1b7f('0x2d')][_0x1b7f('0x49')]({'where':{'id':_0x41d2e3[_0x1b7f('0x48')]['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x3b24d9,null))[_0x1b7f('0x23')](saveUpdates(_0x41d2e3[_0x1b7f('0x4b')],null))[_0x1b7f('0x23')](respondWithResult(_0x3b24d9,null))[_0x1b7f('0x46')](handleError(_0x3b24d9,null));};exports['destroy']=function(_0x2cbbd8,_0x3f0dad){return db[_0x1b7f('0x2d')][_0x1b7f('0x49')]({'where':{'id':_0x2cbbd8[_0x1b7f('0x48')]['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x3f0dad,null))['then'](removeEntity(_0x3f0dad,null))[_0x1b7f('0x46')](handleError(_0x3f0dad,null));};exports[_0x1b7f('0x58')]=function(_0x5250a1,_0x34233b,_0x3d3777){var _0x28544b={'raw':!![],'where':{}};var _0x19eaa3={};var _0x32f131={'count':0x0,'rows':[]};return db[_0x1b7f('0x2d')]['findOne']({'where':{'id':_0x5250a1['params']['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x34233b,null))['then'](function(_0x31b248){if(_0x31b248){_0x19eaa3[_0x1b7f('0x32')]=_[_0x1b7f('0x34')](db[_0x1b7f('0x59')][_0x1b7f('0x2e')]);_0x19eaa3[_0x1b7f('0x33')]=_['keys'](_0x5250a1['query']);_0x19eaa3[_0x1b7f('0x35')]=_[_0x1b7f('0x36')](_0x19eaa3[_0x1b7f('0x32')],_0x19eaa3['query']);_0x28544b[_0x1b7f('0x37')]=_[_0x1b7f('0x36')](_0x19eaa3['model'],qs[_0x1b7f('0x38')](_0x5250a1['query']['fields']));_0x28544b['attributes']=_0x28544b[_0x1b7f('0x37')]['length']?_0x28544b[_0x1b7f('0x37')]:_0x19eaa3[_0x1b7f('0x32')];if(!_0x5250a1[_0x1b7f('0x33')][_0x1b7f('0x3a')](_0x1b7f('0x5a'))){_0x28544b['limit']=qs[_0x1b7f('0x1c')](_0x5250a1['query']['limit']);_0x28544b['offset']=qs[_0x1b7f('0x1d')](_0x5250a1['query'][_0x1b7f('0x1d')]);}_0x28544b[_0x1b7f('0x3b')]=qs['sort'](_0x5250a1[_0x1b7f('0x33')]['sort']);_0x28544b[_0x1b7f('0x3d')]=qs[_0x1b7f('0x35')](_[_0x1b7f('0x3e')](_0x5250a1['query'],_0x19eaa3['filters']));_0x28544b[_0x1b7f('0x3d')]['CampaignId']=_0x31b248['id'];if(_0x5250a1[_0x1b7f('0x33')][_0x1b7f('0x5b')]){_0x28544b[_0x1b7f('0x3d')]=_[_0x1b7f('0x40')](_0x28544b[_0x1b7f('0x3d')],{'$or':_[_0x1b7f('0x2c')](_0x28544b[_0x1b7f('0x37')],function(_0x34f162){var _0x23e38f={};_0x23e38f[_0x34f162]={'$like':'%'+_0x5250a1[_0x1b7f('0x33')][_0x1b7f('0x5b')]+'%'};return _0x23e38f;})});}_0x28544b=_[_0x1b7f('0x40')]({},_0x28544b,_0x5250a1['options']);return db[_0x1b7f('0x59')]['count']({'where':_0x28544b[_0x1b7f('0x3d')]})[_0x1b7f('0x23')](function(_0x3db3f4){_0x32f131['count']=_0x3db3f4;if(_0x5250a1[_0x1b7f('0x33')][_0x1b7f('0x42')]){_0x28544b['include']=[{'all':!![]}];}return db[_0x1b7f('0x59')]['findAll'](_0x28544b);})[_0x1b7f('0x23')](function(_0x3890e){_0x32f131[_0x1b7f('0x45')]=_0x3890e;return _0x32f131;});}})[_0x1b7f('0x23')](respondWithFilteredResult(_0x34233b,_0x28544b))['catch'](handleError(_0x34233b,null));};exports[_0x1b7f('0x5c')]=function(_0x4ca873,_0x516b42,_0xbe86fa){var _0x3b721d={'raw':!![],'where':{}};var _0x460b8b={};var _0x29ff51={'count':0x0,'rows':[]};return db[_0x1b7f('0x2d')]['findOne']({'where':{'id':_0x4ca873['params']['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x516b42,null))['then'](function(_0x5f0b20){if(_0x5f0b20){_0x460b8b['model']=_['keys'](db[_0x1b7f('0x5d')]['rawAttributes']);_0x460b8b[_0x1b7f('0x33')]=_[_0x1b7f('0x34')](_0x4ca873['query']);_0x460b8b[_0x1b7f('0x35')]=_[_0x1b7f('0x36')](_0x460b8b['model'],_0x460b8b[_0x1b7f('0x33')]);_0x3b721d['attributes']=_['intersection'](_0x460b8b[_0x1b7f('0x32')],qs[_0x1b7f('0x38')](_0x4ca873['query']['fields']));_0x3b721d[_0x1b7f('0x37')]=_0x3b721d['attributes'][_0x1b7f('0x39')]?_0x3b721d[_0x1b7f('0x37')]:_0x460b8b[_0x1b7f('0x32')];if(!_0x4ca873[_0x1b7f('0x33')]['hasOwnProperty'](_0x1b7f('0x5a'))){_0x3b721d[_0x1b7f('0x1c')]=qs[_0x1b7f('0x1c')](_0x4ca873[_0x1b7f('0x33')][_0x1b7f('0x1c')]);_0x3b721d[_0x1b7f('0x1d')]=qs[_0x1b7f('0x1d')](_0x4ca873[_0x1b7f('0x33')]['offset']);}_0x3b721d[_0x1b7f('0x3b')]=qs[_0x1b7f('0x3c')](_0x4ca873[_0x1b7f('0x33')]['sort']);_0x3b721d[_0x1b7f('0x3d')]=qs[_0x1b7f('0x35')](_[_0x1b7f('0x3e')](_0x4ca873[_0x1b7f('0x33')],_0x460b8b[_0x1b7f('0x35')]));_0x3b721d[_0x1b7f('0x3d')][_0x1b7f('0x5e')]=_0x5f0b20['id'];if(_0x4ca873[_0x1b7f('0x33')][_0x1b7f('0x5b')]){_0x3b721d[_0x1b7f('0x3d')]=_[_0x1b7f('0x40')](_0x3b721d[_0x1b7f('0x3d')],{'$or':_[_0x1b7f('0x2c')](_0x3b721d[_0x1b7f('0x37')],function(_0x1dd7bb){var _0x195141={};_0x195141[_0x1dd7bb]={'$like':'%'+_0x4ca873[_0x1b7f('0x33')][_0x1b7f('0x5b')]+'%'};return _0x195141;})});}_0x3b721d=_[_0x1b7f('0x40')]({},_0x3b721d,_0x4ca873['options']);return db[_0x1b7f('0x5d')][_0x1b7f('0x1e')]({'where':_0x3b721d[_0x1b7f('0x3d')]})[_0x1b7f('0x23')](function(_0x56f27e){_0x29ff51[_0x1b7f('0x1e')]=_0x56f27e;if(_0x4ca873[_0x1b7f('0x33')]['includeAll']){_0x3b721d['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x1b7f('0x44')](_0x3b721d);})[_0x1b7f('0x23')](function(_0x5aa16f){_0x29ff51[_0x1b7f('0x45')]=_0x5aa16f;return _0x29ff51;});}})['then'](respondWithFilteredResult(_0x516b42,_0x3b721d))[_0x1b7f('0x46')](handleError(_0x516b42,null));};exports[_0x1b7f('0x5f')]=function(_0x182815,_0x32d5a7,_0x228a9){var _0x5f2110={'raw':!![],'where':{}};var _0x390d9a={};var _0x3e585b={'count':0x0,'rows':[]};return db['Campaign'][_0x1b7f('0x60')]({'where':{'id':_0x182815[_0x1b7f('0x48')]['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x32d5a7,null))[_0x1b7f('0x23')](function(_0xcb4124){if(_0xcb4124){_0x390d9a[_0x1b7f('0x32')]=_['keys'](db[_0x1b7f('0x61')][_0x1b7f('0x2e')]);_0x390d9a[_0x1b7f('0x33')]=_[_0x1b7f('0x34')](_0x182815[_0x1b7f('0x33')]);_0x390d9a['filters']=_[_0x1b7f('0x36')](_0x390d9a[_0x1b7f('0x32')],_0x390d9a[_0x1b7f('0x33')]);_0x5f2110[_0x1b7f('0x37')]=_[_0x1b7f('0x36')](_0x390d9a[_0x1b7f('0x32')],qs['fields'](_0x182815[_0x1b7f('0x33')][_0x1b7f('0x38')]));_0x5f2110['attributes']=_0x5f2110['attributes'][_0x1b7f('0x39')]?_0x5f2110[_0x1b7f('0x37')]:_0x390d9a['model'];if(!_0x182815[_0x1b7f('0x33')]['hasOwnProperty'](_0x1b7f('0x5a'))){_0x5f2110['limit']=qs[_0x1b7f('0x1c')](_0x182815[_0x1b7f('0x33')][_0x1b7f('0x1c')]);_0x5f2110[_0x1b7f('0x1d')]=qs[_0x1b7f('0x1d')](_0x182815[_0x1b7f('0x33')]['offset']);}_0x5f2110['order']=qs[_0x1b7f('0x3c')](_0x182815[_0x1b7f('0x33')][_0x1b7f('0x3c')]);_0x5f2110['where']=qs[_0x1b7f('0x35')](_['pick'](_0x182815[_0x1b7f('0x33')],_0x390d9a['filters']));_0x5f2110[_0x1b7f('0x3d')]['CampaignId']=_0xcb4124['id'];if(_0x182815[_0x1b7f('0x33')][_0x1b7f('0x5b')]){_0x5f2110[_0x1b7f('0x3d')]=_[_0x1b7f('0x40')](_0x5f2110[_0x1b7f('0x3d')],{'$or':_[_0x1b7f('0x2c')](_0x5f2110[_0x1b7f('0x37')],function(_0xd28179){var _0xb83f9b={};_0xb83f9b[_0xd28179]={'$like':'%'+_0x182815['query']['filter']+'%'};return _0xb83f9b;})});}_0x5f2110=_['merge']({},_0x5f2110,_0x182815[_0x1b7f('0x41')]);return db[_0x1b7f('0x61')][_0x1b7f('0x1e')]({'where':_0x5f2110[_0x1b7f('0x3d')]})[_0x1b7f('0x23')](function(_0x3f6afa){_0x3e585b['count']=_0x3f6afa;if(_0x182815[_0x1b7f('0x33')][_0x1b7f('0x42')]){_0x5f2110[_0x1b7f('0x43')]=[{'all':!![]}];}return db[_0x1b7f('0x61')]['findAll'](_0x5f2110);})[_0x1b7f('0x23')](function(_0x40213f){_0x3e585b[_0x1b7f('0x45')]=_0x40213f;return _0x3e585b;});}})[_0x1b7f('0x23')](respondWithFilteredResult(_0x32d5a7,_0x5f2110))['catch'](handleError(_0x32d5a7,null));};exports[_0x1b7f('0x62')]=function(_0x3335a6,_0x589b41,_0x1d3a1f){var _0x5282ff={'raw':!![],'where':{}};var _0xf19e46={};var _0x4f9f2e={'count':0x0,'rows':[]};return db[_0x1b7f('0x2d')][_0x1b7f('0x60')]({'where':{'id':_0x3335a6[_0x1b7f('0x48')]['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x589b41,null))['then'](function(_0x45261c){if(_0x45261c){_0xf19e46[_0x1b7f('0x32')]=_[_0x1b7f('0x34')](db[_0x1b7f('0x63')][_0x1b7f('0x2e')]);_0xf19e46[_0x1b7f('0x33')]=_[_0x1b7f('0x34')](_0x3335a6[_0x1b7f('0x33')]);_0xf19e46[_0x1b7f('0x35')]=_[_0x1b7f('0x36')](_0xf19e46['model'],_0xf19e46[_0x1b7f('0x33')]);_0x5282ff[_0x1b7f('0x37')]=_[_0x1b7f('0x36')](_0xf19e46['model'],qs[_0x1b7f('0x38')](_0x3335a6[_0x1b7f('0x33')][_0x1b7f('0x38')]));_0x5282ff[_0x1b7f('0x37')]=_0x5282ff[_0x1b7f('0x37')][_0x1b7f('0x39')]?_0x5282ff[_0x1b7f('0x37')]:_0xf19e46['model'];if(!_0x3335a6[_0x1b7f('0x33')][_0x1b7f('0x3a')](_0x1b7f('0x5a'))){_0x5282ff[_0x1b7f('0x1c')]=qs[_0x1b7f('0x1c')](_0x3335a6[_0x1b7f('0x33')][_0x1b7f('0x1c')]);_0x5282ff[_0x1b7f('0x1d')]=qs['offset'](_0x3335a6[_0x1b7f('0x33')][_0x1b7f('0x1d')]);}_0x5282ff[_0x1b7f('0x3b')]=qs[_0x1b7f('0x3c')](_0x3335a6[_0x1b7f('0x33')]['sort']);_0x5282ff[_0x1b7f('0x3d')]=qs[_0x1b7f('0x35')](_[_0x1b7f('0x3e')](_0x3335a6[_0x1b7f('0x33')],_0xf19e46[_0x1b7f('0x35')]));_0x5282ff[_0x1b7f('0x3d')]['CampaignId']=_0x45261c['id'];if(_0x3335a6['query'][_0x1b7f('0x5b')]){_0x5282ff[_0x1b7f('0x3d')]=_['merge'](_0x5282ff[_0x1b7f('0x3d')],{'$or':_[_0x1b7f('0x2c')](_0x5282ff[_0x1b7f('0x37')],function(_0x488862){var _0x3db597={};_0x3db597[_0x488862]={'$like':'%'+_0x3335a6[_0x1b7f('0x33')]['filter']+'%'};return _0x3db597;})});}_0x5282ff=_[_0x1b7f('0x40')]({},_0x5282ff,_0x3335a6[_0x1b7f('0x41')]);return db['CmHopperBlack'][_0x1b7f('0x1e')]({'where':_0x5282ff[_0x1b7f('0x3d')]})[_0x1b7f('0x23')](function(_0x4dccf8){_0x4f9f2e[_0x1b7f('0x1e')]=_0x4dccf8;if(_0x3335a6[_0x1b7f('0x33')][_0x1b7f('0x42')]){_0x5282ff[_0x1b7f('0x43')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x1b7f('0x44')](_0x5282ff);})[_0x1b7f('0x23')](function(_0x1b80b1){_0x4f9f2e[_0x1b7f('0x45')]=_0x1b80b1;return _0x4f9f2e;});}})['then'](respondWithFilteredResult(_0x589b41,_0x5282ff))['catch'](handleError(_0x589b41,null));};exports[_0x1b7f('0x64')]=function(_0x5f1e78,_0x8ef258,_0x34f529){var _0x41694d={};var _0xa92aaf={};var _0x2aa2aa;var _0x2a40d5;return db['Campaign']['findOne']({'where':{'id':_0x5f1e78[_0x1b7f('0x48')]['id']}})['then'](handleEntityNotFound(_0x8ef258,null))[_0x1b7f('0x23')](function(_0x1d38fd){if(_0x1d38fd){_0x2aa2aa=_0x1d38fd;_0xa92aaf[_0x1b7f('0x32')]=_['keys'](db[_0x1b7f('0x65')][_0x1b7f('0x2e')]);_0xa92aaf['query']=_[_0x1b7f('0x34')](_0x5f1e78['query']);_0xa92aaf[_0x1b7f('0x35')]=_[_0x1b7f('0x36')](_0xa92aaf[_0x1b7f('0x32')],_0xa92aaf[_0x1b7f('0x33')]);_0x41694d['attributes']=_[_0x1b7f('0x36')](_0xa92aaf['model'],qs[_0x1b7f('0x38')](_0x5f1e78[_0x1b7f('0x33')][_0x1b7f('0x38')]));_0x41694d['attributes']=_0x41694d[_0x1b7f('0x37')][_0x1b7f('0x39')]?_0x41694d['attributes']:_0xa92aaf['model'];_0x41694d['order']=qs[_0x1b7f('0x3c')](_0x5f1e78[_0x1b7f('0x33')][_0x1b7f('0x3c')]);_0x41694d[_0x1b7f('0x3d')]=qs[_0x1b7f('0x35')](_['pick'](_0x5f1e78[_0x1b7f('0x33')],_0xa92aaf[_0x1b7f('0x35')]));if(_0x5f1e78['query'][_0x1b7f('0x5b')]){_0x41694d[_0x1b7f('0x3d')]=_[_0x1b7f('0x40')](_0x41694d[_0x1b7f('0x3d')],{'$or':_['map'](_0x41694d[_0x1b7f('0x37')],function(_0x5a3ec2){var _0x7e7f0a={};_0x7e7f0a[_0x5a3ec2]={'$like':'%'+_0x5f1e78['query'][_0x1b7f('0x5b')]+'%'};return _0x7e7f0a;})});}_0x41694d=_[_0x1b7f('0x40')]({},_0x41694d,_0x5f1e78[_0x1b7f('0x41')]);return _0x2aa2aa[_0x1b7f('0x64')](_0x41694d);}})[_0x1b7f('0x23')](function(_0x10fe4a){if(_0x10fe4a){_0x2a40d5=_0x10fe4a[_0x1b7f('0x39')];if(!_0x5f1e78[_0x1b7f('0x33')][_0x1b7f('0x3a')](_0x1b7f('0x5a'))){_0x41694d[_0x1b7f('0x1c')]=qs[_0x1b7f('0x1c')](_0x5f1e78[_0x1b7f('0x33')]['limit']);_0x41694d['offset']=qs[_0x1b7f('0x1d')](_0x5f1e78[_0x1b7f('0x33')][_0x1b7f('0x1d')]);}return _0x2aa2aa[_0x1b7f('0x64')](_0x41694d);}})[_0x1b7f('0x23')](function(_0x36ec27){if(_0x36ec27){return _0x36ec27?{'count':_0x2a40d5,'rows':_0x36ec27}:null;}})[_0x1b7f('0x23')](respondWithResult(_0x8ef258,null))[_0x1b7f('0x46')](handleError(_0x8ef258,null));};exports[_0x1b7f('0x66')]=function(_0x461172,_0x1d9ca1,_0x1e7283){var _0x15244b,_0x4ec4b8;var _0x342dbc=[];var _0x8d4d33=moment()[_0x1b7f('0x67')](_0x1b7f('0x68'));return db['Campaign'][_0x1b7f('0x49')]({'where':{'id':_0x461172['params']['id']}})['then'](handleEntityNotFound(_0x1d9ca1,null))[_0x1b7f('0x23')](function(_0x1bd10){if(_0x1bd10){_0x4ec4b8=_0x1bd10;return _0x1bd10[_0x1b7f('0x66')](_0x461172[_0x1b7f('0x4b')][_0x1b7f('0x69')],_[_0x1b7f('0x53')](_0x461172['body'],['ids','id'])||{});}return null;})[_0x1b7f('0x6a')](function(_0x304b53){var _0x56e407;var _0x3e1f5f;_0x15244b=_0x304b53||[];var _0x1037ae=[];if(_0x304b53){for(var _0x3dd452=0x0;_0x3dd452<_0x304b53['length'];_0x3dd452+=0x1){var _0x231482=_0x304b53[_0x3dd452][_0x1b7f('0x25')]({'plain':!![]});_0x4ec4b8[_0x1b7f('0x6b')]=_0x461172['body'][_0x1b7f('0x6b')]?_0x461172[_0x1b7f('0x4b')][_0x1b7f('0x6b')]:_0x4ec4b8['dialCheckDuplicateType'];switch(_0x4ec4b8[_0x1b7f('0x6b')]){case _0x1b7f('0x6c'):_0x56e407=squel['insert']()['into'](_0x1b7f('0x6d'))[_0x1b7f('0x6e')]([_0x1b7f('0x6f'),'scheduledAt',_0x1b7f('0x70'),_0x1b7f('0x71'),_0x1b7f('0x5e'),_0x1b7f('0x54'),_0x1b7f('0x55')],squel['select']()[_0x1b7f('0x72')](_0x1b7f('0x6f'),_0x1b7f('0x6f'))[_0x1b7f('0x72')](_0x1b7f('0x73'),_0x1b7f('0x74'))[_0x1b7f('0x72')]('id',_0x1b7f('0x70'))[_0x1b7f('0x72')](_0x231482[_0x1b7f('0x75')]['toString'](),_0x1b7f('0x71'))[_0x1b7f('0x72')](_0x461172['params']['id'][_0x1b7f('0x76')](),'CampaignId')[_0x1b7f('0x72')]('\x27'+_0x8d4d33+'\x27',_0x1b7f('0x54'))[_0x1b7f('0x72')]('\x27'+_0x8d4d33+'\x27',_0x1b7f('0x55'))['from'](_0x1b7f('0x77'))[_0x1b7f('0x3d')](_0x1b7f('0x78'))[_0x1b7f('0x3d')](_0x1b7f('0x79'),_0x231482[_0x1b7f('0x75')][_0x1b7f('0x76')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x1b7f('0x3d')]('phone\x20NOT\x20IN\x20(?)',squel[_0x1b7f('0x7a')]()['field'](_0x1b7f('0x7b'))[_0x1b7f('0x7c')](_0x1b7f('0x7d'))[_0x1b7f('0x3d')](_0x1b7f('0x7e'),_0x461172[_0x1b7f('0x48')]['id'][_0x1b7f('0x76')]()))[_0x1b7f('0x3d')](_0x1b7f('0x7f'),squel[_0x1b7f('0x7a')]()[_0x1b7f('0x72')](_0x1b7f('0x80'))[_0x1b7f('0x7c')]('cm_hopper')['where']('CampaignId\x20=\x20?',_0x461172[_0x1b7f('0x48')]['id'][_0x1b7f('0x76')]())))[_0x1b7f('0x76')]();break;case _0x1b7f('0x81'):_0x56e407=squel[_0x1b7f('0x82')]()[_0x1b7f('0x83')]('cm_hopper')['fromQuery'](['phone',_0x1b7f('0x74'),_0x1b7f('0x70'),_0x1b7f('0x71'),_0x1b7f('0x5e'),_0x1b7f('0x54'),_0x1b7f('0x55')],squel[_0x1b7f('0x7a')]()[_0x1b7f('0x72')](_0x1b7f('0x6f'),_0x1b7f('0x6f'))['field'](_0x1b7f('0x73'),_0x1b7f('0x74'))[_0x1b7f('0x72')]('id',_0x1b7f('0x70'))[_0x1b7f('0x72')](_0x231482[_0x1b7f('0x75')]['toString'](),_0x1b7f('0x71'))[_0x1b7f('0x72')](_0x461172[_0x1b7f('0x48')]['id'][_0x1b7f('0x76')](),'CampaignId')['field']('\x27'+_0x8d4d33+'\x27','createdAt')[_0x1b7f('0x72')]('\x27'+_0x8d4d33+'\x27','updatedAt')[_0x1b7f('0x7c')](_0x1b7f('0x77'))[_0x1b7f('0x3d')]('deletedAt\x20IS\x20NULL')[_0x1b7f('0x3d')](_0x1b7f('0x79'),_0x231482[_0x1b7f('0x75')][_0x1b7f('0x76')]())['where'](_0x1b7f('0x84'))['where'](_0x1b7f('0x7f'),squel[_0x1b7f('0x7a')]()[_0x1b7f('0x72')](_0x1b7f('0x80'))[_0x1b7f('0x7c')](_0x1b7f('0x6d'))[_0x1b7f('0x3d')](_0x1b7f('0x7e'),_0x461172[_0x1b7f('0x48')]['id'][_0x1b7f('0x76')]())))['toString']();break;default:_0x56e407=squel[_0x1b7f('0x82')]()[_0x1b7f('0x83')](_0x1b7f('0x6d'))[_0x1b7f('0x6e')]([_0x1b7f('0x6f'),_0x1b7f('0x74'),_0x1b7f('0x70'),_0x1b7f('0x71'),_0x1b7f('0x5e'),_0x1b7f('0x54'),'updatedAt'],squel[_0x1b7f('0x7a')]()[_0x1b7f('0x72')]('phone',_0x1b7f('0x6f'))[_0x1b7f('0x72')](_0x1b7f('0x73'),_0x1b7f('0x74'))[_0x1b7f('0x72')]('id','ContactId')[_0x1b7f('0x72')](_0x231482[_0x1b7f('0x75')][_0x1b7f('0x76')](),_0x1b7f('0x71'))['field'](_0x461172[_0x1b7f('0x48')]['id'][_0x1b7f('0x76')](),_0x1b7f('0x5e'))[_0x1b7f('0x72')]('\x27'+_0x8d4d33+'\x27',_0x1b7f('0x54'))[_0x1b7f('0x72')]('\x27'+_0x8d4d33+'\x27',_0x1b7f('0x55'))['from'](_0x1b7f('0x77'))[_0x1b7f('0x3d')](_0x1b7f('0x78'))[_0x1b7f('0x3d')](_0x1b7f('0x79'),_0x231482[_0x1b7f('0x75')]['toString']())[_0x1b7f('0x3d')]('phone\x20IS\x20NOT\x20NULL'))[_0x1b7f('0x76')]();}_0x3e1f5f=squel[_0x1b7f('0x82')]()['into'](_0x1b7f('0x85'))[_0x1b7f('0x6e')]([_0x1b7f('0x86'),_0x1b7f('0x74'),_0x1b7f('0x6f'),'OrderBy',_0x1b7f('0x54'),_0x1b7f('0x55')],squel[_0x1b7f('0x7a')]()[_0x1b7f('0x72')]('h.id','id')[_0x1b7f('0x72')](_0x1b7f('0x73'),_0x1b7f('0x74'))[_0x1b7f('0x72')]('ci.item','phone')[_0x1b7f('0x72')]('ci.OrderBY','OrderBy')['field']('\x27'+_0x8d4d33+'\x27',_0x1b7f('0x54'))['field']('\x27'+_0x8d4d33+'\x27','updatedAt')[_0x1b7f('0x7c')](_0x1b7f('0x87'),'ci')[_0x1b7f('0x88')](_0x1b7f('0x6d'),'h',_0x1b7f('0x89'))[_0x1b7f('0x3d')](_0x1b7f('0x8a'),_0x231482['CmListId'][_0x1b7f('0x76')]())['where']('h.CampaignId=?',_0x461172[_0x1b7f('0x48')]['id']['toString']())[_0x1b7f('0x3d')](_0x1b7f('0x8b'),_0x8d4d33))[_0x1b7f('0x76')]();_0x1037ae['push'](db[_0x1b7f('0x8c')][_0x1b7f('0x33')](_0x56e407));_0x342dbc[_0x1b7f('0x8d')](db[_0x1b7f('0x8c')][_0x1b7f('0x33')](_0x3e1f5f));}return BPromise[_0x1b7f('0x8e')](_0x1037ae);}})[_0x1b7f('0x23')](function(){return BPromise[_0x1b7f('0x8e')](_0x342dbc);})[_0x1b7f('0x23')](function(){return _0x15244b;})[_0x1b7f('0x23')](respondWithResult(_0x1d9ca1,null))[_0x1b7f('0x46')](handleError(_0x1d9ca1,null));};exports['removeLists']=function(_0x1cb56b,_0x3878c3,_0x1258e9){return db['Campaign'][_0x1b7f('0x49')]({'where':{'id':_0x1cb56b[_0x1b7f('0x48')]['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x3878c3,null))['then'](function(_0x5c0bf3){if(_0x5c0bf3){return _0x5c0bf3[_0x1b7f('0x8f')](_0x1cb56b['query']['ids']);}})[_0x1b7f('0x23')](function(_0x4dd1e1){if(_0x4dd1e1){return db[_0x1b7f('0x59')][_0x1b7f('0x24')]({'where':{'ListId':_0x1cb56b[_0x1b7f('0x33')][_0x1b7f('0x69')],'CampaignId':_0x1cb56b[_0x1b7f('0x48')]['id']}})['then'](function(){return _0x4dd1e1;});}})[_0x1b7f('0x23')](respondWithStatusCode(_0x3878c3,null))[_0x1b7f('0x46')](handleError(_0x3878c3,null));};exports[_0x1b7f('0x90')]=function(_0x3cba21,_0x195a40,_0x4c19cc){var _0x28b439={};var _0x566375={};var _0x3a8911;var _0x3946c1;return db['Campaign'][_0x1b7f('0x60')]({'where':{'id':_0x3cba21[_0x1b7f('0x48')]['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x195a40,null))[_0x1b7f('0x23')](function(_0x211cdd){if(_0x211cdd){_0x3a8911=_0x211cdd;_0x566375[_0x1b7f('0x32')]=_[_0x1b7f('0x34')](db[_0x1b7f('0x65')][_0x1b7f('0x2e')]);_0x566375[_0x1b7f('0x33')]=_[_0x1b7f('0x34')](_0x3cba21[_0x1b7f('0x33')]);_0x566375[_0x1b7f('0x35')]=_[_0x1b7f('0x36')](_0x566375['model'],_0x566375[_0x1b7f('0x33')]);_0x28b439[_0x1b7f('0x37')]=_[_0x1b7f('0x36')](_0x566375[_0x1b7f('0x32')],qs[_0x1b7f('0x38')](_0x3cba21[_0x1b7f('0x33')][_0x1b7f('0x38')]));_0x28b439[_0x1b7f('0x37')]=_0x28b439[_0x1b7f('0x37')]['length']?_0x28b439[_0x1b7f('0x37')]:_0x566375[_0x1b7f('0x32')];_0x28b439[_0x1b7f('0x3b')]=qs[_0x1b7f('0x3c')](_0x3cba21[_0x1b7f('0x33')][_0x1b7f('0x3c')]);_0x28b439['where']=qs[_0x1b7f('0x35')](_[_0x1b7f('0x3e')](_0x3cba21[_0x1b7f('0x33')],_0x566375['filters']));if(_0x3cba21['query'][_0x1b7f('0x5b')]){_0x28b439['where']=_[_0x1b7f('0x40')](_0x28b439[_0x1b7f('0x3d')],{'$or':_[_0x1b7f('0x2c')](_0x28b439[_0x1b7f('0x37')],function(_0x5eedd2){var _0x58a1ce={};_0x58a1ce[_0x5eedd2]={'$like':'%'+_0x3cba21['query'][_0x1b7f('0x5b')]+'%'};return _0x58a1ce;})});}_0x28b439=_[_0x1b7f('0x40')]({},_0x28b439,_0x3cba21['options']);return _0x3a8911['getBlackLists'](_0x28b439);}})[_0x1b7f('0x23')](function(_0x4a6563){if(_0x4a6563){_0x3946c1=_0x4a6563['length'];if(!_0x3cba21['query'][_0x1b7f('0x3a')](_0x1b7f('0x5a'))){_0x28b439['limit']=qs[_0x1b7f('0x1c')](_0x3cba21[_0x1b7f('0x33')][_0x1b7f('0x1c')]);_0x28b439[_0x1b7f('0x1d')]=qs[_0x1b7f('0x1d')](_0x3cba21['query'][_0x1b7f('0x1d')]);}return _0x3a8911[_0x1b7f('0x90')](_0x28b439);}})[_0x1b7f('0x23')](function(_0x12dfac){if(_0x12dfac){return _0x12dfac?{'count':_0x3946c1,'rows':_0x12dfac}:null;}})['then'](respondWithResult(_0x195a40,null))[_0x1b7f('0x46')](handleError(_0x195a40,null));};exports[_0x1b7f('0x91')]=function(_0x39e1b2,_0x28edd2,_0x4824a0){var _0x18a640,_0x9ecac4;var _0x33859b=[];var _0x67497c=moment()[_0x1b7f('0x67')](_0x1b7f('0x68'));return db[_0x1b7f('0x2d')][_0x1b7f('0x49')]({'where':{'id':_0x39e1b2[_0x1b7f('0x48')]['id']}})['then'](handleEntityNotFound(_0x28edd2,null))[_0x1b7f('0x23')](function(_0x1a8d8f){if(_0x1a8d8f){_0x9ecac4=_0x1a8d8f;return _0x1a8d8f['addBlackLists'](_0x39e1b2[_0x1b7f('0x4b')][_0x1b7f('0x69')],_[_0x1b7f('0x53')](_0x39e1b2[_0x1b7f('0x4b')],[_0x1b7f('0x69'),'id'])||{});}return null;})['spread'](function(_0x2c045a){var _0x160ccb;var _0x12dd1e;_0x18a640=_0x2c045a||[];var _0x5d67ea=[];if(_0x2c045a){for(var _0x1b5b42=0x0;_0x1b5b42<_0x2c045a[_0x1b7f('0x39')];_0x1b5b42+=0x1){var _0x170314=_0x2c045a[_0x1b5b42][_0x1b7f('0x25')]({'plain':!![]});_0x160ccb=squel['insert']()[_0x1b7f('0x83')]('cm_hopper_black')[_0x1b7f('0x6e')]([_0x1b7f('0x6f'),_0x1b7f('0x70'),_0x1b7f('0x71'),'CampaignId',_0x1b7f('0x54'),_0x1b7f('0x55')],squel['select']()[_0x1b7f('0x72')](_0x1b7f('0x6f'),_0x1b7f('0x6f'))[_0x1b7f('0x72')]('id',_0x1b7f('0x70'))[_0x1b7f('0x72')](_0x170314['CmListId'][_0x1b7f('0x76')](),'ListId')[_0x1b7f('0x72')](_0x39e1b2['params']['id'][_0x1b7f('0x76')](),_0x1b7f('0x5e'))[_0x1b7f('0x72')]('NOW()','createdAt')[_0x1b7f('0x72')](_0x1b7f('0x73'),'updatedAt')[_0x1b7f('0x7c')](_0x1b7f('0x77'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x1b7f('0x79'),_0x170314['CmListId'][_0x1b7f('0x76')]())['where'](_0x1b7f('0x84')))[_0x1b7f('0x76')]();_0x5d67ea[_0x1b7f('0x8d')](db[_0x1b7f('0x8c')][_0x1b7f('0x33')](_0x160ccb));}return BPromise[_0x1b7f('0x8e')](_0x5d67ea);}})[_0x1b7f('0x23')](function(){return _0x18a640;})['then'](respondWithResult(_0x28edd2,null))[_0x1b7f('0x46')](handleError(_0x28edd2,null));};exports[_0x1b7f('0x92')]=function(_0x5c93e7,_0x256375,_0x15ab25){return db[_0x1b7f('0x2d')][_0x1b7f('0x49')]({'where':{'id':_0x5c93e7['params']['id']}})[_0x1b7f('0x23')](handleEntityNotFound(_0x256375,null))[_0x1b7f('0x23')](function(_0x14bc94){if(_0x14bc94){return _0x14bc94[_0x1b7f('0x92')](_0x5c93e7[_0x1b7f('0x33')][_0x1b7f('0x69')]);}})[_0x1b7f('0x23')](function(_0x25be13){if(_0x25be13){return db['CmHopperBlack'][_0x1b7f('0x24')]({'where':{'ListId':_0x5c93e7['query']['ids'],'CampaignId':_0x5c93e7[_0x1b7f('0x48')]['id']}})[_0x1b7f('0x23')](function(){return _0x25be13;});}})[_0x1b7f('0x23')](respondWithStatusCode(_0x256375,null))[_0x1b7f('0x46')](handleError(_0x256375,null));};
\ No newline at end of file
+var _0x7582=['body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','createdAt','updatedAt','getHoppers','findOne','CampaignId','CmHopper','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','omit','spread','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','select','field','ContactId','toString','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','scheduledAt','NOW()','CampaignId\x20=\x20?','cm_hopper_additional_phones','cmHopperId','OrderBy','h.id','ci.item','ci.OrderBY','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','error','name','send','index','map','rawAttributes','fieldName','type','keys','filters','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','Campaign','findAll','rows','catch','show','includeAll','include','find','create'];(function(_0x127b3d,_0x141ce0){var _0x553381=function(_0x417820){while(--_0x417820){_0x127b3d['push'](_0x127b3d['shift']());}};_0x553381(++_0x141ce0);}(_0x7582,0x167));var _0x2758=function(_0x1e2321,_0x3ae1c5){_0x1e2321=_0x1e2321-0x0;var _0x1d346d=_0x7582[_0x1e2321];return _0x1d346d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2758('0x0'));var zipdir=require(_0x2758('0x1'));var jsonpatch=require(_0x2758('0x2'));var rp=require('request-promise');var moment=require(_0x2758('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2758('0x4'));var util=require(_0x2758('0x5'));var path=require(_0x2758('0x6'));var sox=require(_0x2758('0x7'));var csv=require('to-csv');var ejs=require(_0x2758('0x8'));var fs=require('fs');var fs_extra=require(_0x2758('0x9'));var _=require('lodash');var squel=require(_0x2758('0xa'));var crypto=require(_0x2758('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2758('0xc'));var toCsv=require(_0x2758('0xd'));var querystring=require(_0x2758('0xe'));var Papa=require('papaparse');var Redis=require(_0x2758('0xf'));var authService=require(_0x2758('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2758('0x11'));var logger=require(_0x2758('0x12'))(_0x2758('0x13'));var utils=require(_0x2758('0x14'));var config=require(_0x2758('0x15'));var licenseUtil=require(_0x2758('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x493357,_0x4caa8b){_0x4caa8b=_0x4caa8b||0xcc;return function(_0x1846cd){if(_0x1846cd){return _0x493357[_0x2758('0x17')](_0x4caa8b);}return _0x493357[_0x2758('0x18')](_0x4caa8b)[_0x2758('0x19')]();};}function respondWithResult(_0x3233af,_0x9db637){_0x9db637=_0x9db637||0xc8;return function(_0x3e1a7e){if(_0x3e1a7e){return _0x3233af[_0x2758('0x18')](_0x9db637)[_0x2758('0x1a')](_0x3e1a7e);}};}function respondWithFilteredResult(_0xad4346,_0x414a0b){return function(_0x361f14){if(_0x361f14){var _0x280ccc=typeof _0x414a0b[_0x2758('0x1b')]==='undefined'&&typeof _0x414a0b['limit']==='undefined';var _0x2b0ce0=_0x361f14[_0x2758('0x1c')];var _0x358358=_0x280ccc?0x0:_0x414a0b[_0x2758('0x1b')];var _0x1bccd9=_0x280ccc?_0x361f14[_0x2758('0x1c')]:_0x414a0b['offset']+_0x414a0b[_0x2758('0x1d')];var _0x4202e5;if(_0x1bccd9>=_0x2b0ce0){_0x1bccd9=_0x2b0ce0;_0x4202e5=0xc8;}else{_0x4202e5=0xce;}_0xad4346['status'](_0x4202e5);return _0xad4346[_0x2758('0x1e')](_0x2758('0x1f'),_0x358358+'-'+_0x1bccd9+'/'+_0x2b0ce0)[_0x2758('0x1a')](_0x361f14);}return null;};}function patchUpdates(_0x4100a0){return function(_0x50526b){try{jsonpatch[_0x2758('0x20')](_0x50526b,_0x4100a0,!![]);}catch(_0x4fa215){return BPromise[_0x2758('0x21')](_0x4fa215);}return _0x50526b[_0x2758('0x22')]();};}function saveUpdates(_0x27a887,_0x2797fe){return function(_0x4699c4){if(_0x4699c4){return _0x4699c4[_0x2758('0x23')](_0x27a887)[_0x2758('0x24')](function(_0x222601){return _0x222601;});}return null;};}function removeEntity(_0x38c483,_0x2ef395){return function(_0x1f645d){if(_0x1f645d){return _0x1f645d[_0x2758('0x25')]()['then'](function(){var _0x4f92f2=_0x1f645d[_0x2758('0x26')]({'plain':!![]});var _0x277f69=_0x2758('0x27');return db[_0x2758('0x28')][_0x2758('0x25')]({'where':{'type':_0x277f69,'resourceId':_0x4f92f2['id']}})[_0x2758('0x24')](function(){return _0x1f645d;});})['then'](function(){_0x38c483['status'](0xcc)[_0x2758('0x19')]();});}};}function handleEntityNotFound(_0x28c1f2,_0xee59e6){return function(_0x1d56cd){if(!_0x1d56cd){_0x28c1f2['sendStatus'](0x194);}return _0x1d56cd;};}function handleError(_0x47c969,_0x3e4cd7){_0x3e4cd7=_0x3e4cd7||0x1f4;return function(_0x230f28){logger[_0x2758('0x29')](_0x230f28['stack']);if(_0x230f28[_0x2758('0x2a')]){delete _0x230f28['name'];}_0x47c969[_0x2758('0x18')](_0x3e4cd7)[_0x2758('0x2b')](_0x230f28);};}exports[_0x2758('0x2c')]=function(_0x348d0d,_0x2e0613){var _0x2000de={},_0x2d44e4={},_0x11efa6={'count':0x0,'rows':[]};var _0x225f6f=_[_0x2758('0x2d')](db['Campaign'][_0x2758('0x2e')],function(_0x89c340){return{'name':_0x89c340[_0x2758('0x2f')],'type':_0x89c340[_0x2758('0x30')]['key']};});_0x2d44e4['model']=_[_0x2758('0x2d')](_0x225f6f,_0x2758('0x2a'));_0x2d44e4['query']=_[_0x2758('0x31')](_0x348d0d['query']);_0x2d44e4[_0x2758('0x32')]=_['intersection'](_0x2d44e4[_0x2758('0x33')],_0x2d44e4[_0x2758('0x34')]);_0x2000de['attributes']=_[_0x2758('0x35')](_0x2d44e4[_0x2758('0x33')],qs[_0x2758('0x36')](_0x348d0d[_0x2758('0x34')][_0x2758('0x36')]));_0x2000de[_0x2758('0x37')]=_0x2000de[_0x2758('0x37')][_0x2758('0x38')]?_0x2000de['attributes']:_0x2d44e4[_0x2758('0x33')];if(!_0x348d0d[_0x2758('0x34')][_0x2758('0x39')](_0x2758('0x3a'))){_0x2000de[_0x2758('0x1d')]=qs[_0x2758('0x1d')](_0x348d0d[_0x2758('0x34')][_0x2758('0x1d')]);_0x2000de[_0x2758('0x1b')]=qs['offset'](_0x348d0d['query'][_0x2758('0x1b')]);}_0x2000de[_0x2758('0x3b')]=qs[_0x2758('0x3c')](_0x348d0d[_0x2758('0x34')][_0x2758('0x3c')]);_0x2000de[_0x2758('0x3d')]=qs['filters'](_[_0x2758('0x3e')](_0x348d0d[_0x2758('0x34')],_0x2d44e4['filters']),_0x225f6f);if(_0x348d0d['query']['filter']){_0x2000de[_0x2758('0x3d')]=_[_0x2758('0x3f')](_0x2000de[_0x2758('0x3d')],{'$or':_[_0x2758('0x2d')](_0x225f6f,function(_0x564462){if(_0x564462[_0x2758('0x30')]!==_0x2758('0x40')){var _0x276ca0={};_0x276ca0[_0x564462[_0x2758('0x2a')]]={'$like':'%'+_0x348d0d[_0x2758('0x34')][_0x2758('0x41')]+'%'};return _0x276ca0;}})});}_0x2000de=_['merge']({},_0x2000de,_0x348d0d[_0x2758('0x42')]);var _0x3ceab5={'where':_0x2000de[_0x2758('0x3d')]};return db[_0x2758('0x43')][_0x2758('0x1c')](_0x3ceab5)[_0x2758('0x24')](function(_0xf0df8e){_0x11efa6[_0x2758('0x1c')]=_0xf0df8e;if(_0x348d0d[_0x2758('0x34')]['includeAll']){_0x2000de['include']=[{'all':!![]}];}return db[_0x2758('0x43')][_0x2758('0x44')](_0x2000de);})['then'](function(_0x2d19d8){_0x11efa6[_0x2758('0x45')]=_0x2d19d8;return _0x11efa6;})['then'](respondWithFilteredResult(_0x2e0613,_0x2000de))[_0x2758('0x46')](handleError(_0x2e0613,null));};exports[_0x2758('0x47')]=function(_0x1a5d64,_0x372862){var _0x291344={'raw':![],'where':{'id':_0x1a5d64['params']['id']}},_0x5a98d5={};_0x5a98d5['model']=_[_0x2758('0x31')](db[_0x2758('0x43')][_0x2758('0x2e')]);_0x5a98d5[_0x2758('0x34')]=_[_0x2758('0x31')](_0x1a5d64[_0x2758('0x34')]);_0x5a98d5[_0x2758('0x32')]=_[_0x2758('0x35')](_0x5a98d5['model'],_0x5a98d5['query']);_0x291344[_0x2758('0x37')]=_[_0x2758('0x35')](_0x5a98d5[_0x2758('0x33')],qs['fields'](_0x1a5d64['query'][_0x2758('0x36')]));_0x291344[_0x2758('0x37')]=_0x291344['attributes'][_0x2758('0x38')]?_0x291344[_0x2758('0x37')]:_0x5a98d5[_0x2758('0x33')];if(_0x1a5d64[_0x2758('0x34')][_0x2758('0x48')]){_0x291344[_0x2758('0x49')]=[{'all':!![]}];}_0x291344=_[_0x2758('0x3f')]({},_0x291344,_0x1a5d64[_0x2758('0x42')]);return db[_0x2758('0x43')][_0x2758('0x4a')](_0x291344)['then'](handleEntityNotFound(_0x372862,null))['then'](respondWithResult(_0x372862,null))[_0x2758('0x46')](handleError(_0x372862,null));};exports[_0x2758('0x4b')]=function(_0x43af2b,_0x2121df){return db[_0x2758('0x43')]['create'](_0x43af2b[_0x2758('0x4c')],{})['then'](function(_0x451458){var _0x264a11=_0x43af2b[_0x2758('0x4d')][_0x2758('0x26')]({'plain':!![]});if(!_0x264a11)throw new Error(_0x2758('0x4e'));if(_0x264a11['role']===_0x2758('0x4d')){var _0x5704c6=_0x451458[_0x2758('0x26')]({'plain':!![]});var _0x2e5c51='IvrCampaigns';return db[_0x2758('0x4f')][_0x2758('0x4a')]({'where':{'name':_0x2e5c51,'userProfileId':_0x264a11[_0x2758('0x50')]},'raw':!![]})[_0x2758('0x24')](function(_0x20649c){if(_0x20649c&&_0x20649c[_0x2758('0x51')]===0x0){return db[_0x2758('0x28')]['create']({'name':_0x5704c6[_0x2758('0x2a')],'resourceId':_0x5704c6['id'],'type':_0x20649c[_0x2758('0x2a')],'sectionId':_0x20649c['id']},{})[_0x2758('0x24')](function(){return _0x451458;});}else{return _0x451458;}})['catch'](function(_0x5b1b01){logger[_0x2758('0x29')](_0x2758('0x52'),_0x5b1b01);throw _0x5b1b01;});}return _0x451458;})[_0x2758('0x24')](respondWithResult(_0x2121df,0xc9))['catch'](handleError(_0x2121df,null));};exports[_0x2758('0x53')]=function(_0x191b3f,_0x52a01d){var _0x850f9b={'where':{'id':_0x191b3f[_0x2758('0x54')]['id']}},_0x3ee3ad={};_0x3ee3ad['model']=_[_0x2758('0x31')](db[_0x2758('0x43')][_0x2758('0x2e')]);_0x850f9b[_0x2758('0x37')]=_['intersection'](_0x3ee3ad['model'],qs[_0x2758('0x36')](_0x191b3f[_0x2758('0x34')][_0x2758('0x36')]));_0x850f9b[_0x2758('0x37')]=_0x850f9b[_0x2758('0x37')][_0x2758('0x38')]?_0x850f9b[_0x2758('0x37')]:_0x3ee3ad['model'];if(_0x191b3f[_0x2758('0x34')][_0x2758('0x48')]){_0x850f9b[_0x2758('0x49')]=[{'all':!![]}];}_0x850f9b=_[_0x2758('0x3f')]({},_0x850f9b,_0x191b3f[_0x2758('0x42')]);return db['Campaign']['find'](_0x850f9b)['then'](handleEntityNotFound(_0x52a01d,null))['then'](function(_0x5396c3){if(_0x5396c3){var _0x43d0cb=_0x5396c3[_0x2758('0x26')]({'plain':!![]});_0x43d0cb=qs['omit'](_0x43d0cb,['id',_0x2758('0x55'),_0x2758('0x56')]);_0x191b3f[_0x2758('0x4c')]=_['omit'](_0x191b3f[_0x2758('0x4c')],['id',_0x2758('0x55'),_0x2758('0x56')]);return db[_0x2758('0x43')]['create'](_['merge'](_0x43d0cb,_0x191b3f['body']),{'include':_0x191b3f[_0x2758('0x34')][_0x2758('0x48')]?[{'all':!![]}]:undefined})[_0x2758('0x24')](function(_0x3a7b43){var _0x49eb53=_0x191b3f[_0x2758('0x4d')][_0x2758('0x26')]({'plain':!![]});if(!_0x49eb53)throw new Error(_0x2758('0x4e'));if(_0x49eb53['role']===_0x2758('0x4d')){var _0x22e389=_0x3a7b43[_0x2758('0x26')]({'plain':!![]});var _0x2f7591='IvrCampaigns';return db[_0x2758('0x4f')][_0x2758('0x4a')]({'where':{'name':_0x2f7591,'userProfileId':_0x49eb53[_0x2758('0x50')]},'raw':!![]})[_0x2758('0x24')](function(_0x45302b){if(_0x45302b&&_0x45302b[_0x2758('0x51')]===0x0){return db[_0x2758('0x28')][_0x2758('0x4b')]({'name':_0x22e389[_0x2758('0x2a')],'resourceId':_0x22e389['id'],'type':_0x45302b[_0x2758('0x2a')],'sectionId':_0x45302b['id']},{})[_0x2758('0x24')](function(){return _0x3a7b43;});}else{return _0x3a7b43;}})[_0x2758('0x46')](function(_0x37ef08){logger[_0x2758('0x29')](_0x2758('0x52'),_0x37ef08);throw _0x37ef08;});}return _0x3a7b43;});}})['then'](respondWithResult(_0x52a01d,0xc9))[_0x2758('0x46')](handleError(_0x52a01d,null));};exports[_0x2758('0x23')]=function(_0x1e7853,_0x1e3ce5){if(_0x1e7853[_0x2758('0x4c')]['id']){delete _0x1e7853['body']['id'];}return db[_0x2758('0x43')][_0x2758('0x4a')]({'where':{'id':_0x1e7853[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x1e3ce5,null))[_0x2758('0x24')](saveUpdates(_0x1e7853[_0x2758('0x4c')],null))[_0x2758('0x24')](respondWithResult(_0x1e3ce5,null))['catch'](handleError(_0x1e3ce5,null));};exports[_0x2758('0x25')]=function(_0x2e4db4,_0x2e1128){return db[_0x2758('0x43')][_0x2758('0x4a')]({'where':{'id':_0x2e4db4[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x2e1128,null))[_0x2758('0x24')](removeEntity(_0x2e1128,null))['catch'](handleError(_0x2e1128,null));};exports[_0x2758('0x57')]=function(_0x228829,_0x475748,_0x41d3ff){var _0x47ddb5={'raw':!![],'where':{}};var _0x3ae88e={};var _0x3aebb0={'count':0x0,'rows':[]};return db['Campaign'][_0x2758('0x58')]({'where':{'id':_0x228829[_0x2758('0x54')]['id']}})['then'](handleEntityNotFound(_0x475748,null))[_0x2758('0x24')](function(_0x111e49){if(_0x111e49){_0x3ae88e[_0x2758('0x33')]=_[_0x2758('0x31')](db['CmHopper'][_0x2758('0x2e')]);_0x3ae88e['query']=_['keys'](_0x228829[_0x2758('0x34')]);_0x3ae88e[_0x2758('0x32')]=_[_0x2758('0x35')](_0x3ae88e[_0x2758('0x33')],_0x3ae88e[_0x2758('0x34')]);_0x47ddb5['attributes']=_[_0x2758('0x35')](_0x3ae88e['model'],qs[_0x2758('0x36')](_0x228829[_0x2758('0x34')][_0x2758('0x36')]));_0x47ddb5[_0x2758('0x37')]=_0x47ddb5[_0x2758('0x37')][_0x2758('0x38')]?_0x47ddb5[_0x2758('0x37')]:_0x3ae88e[_0x2758('0x33')];if(!_0x228829['query']['hasOwnProperty']('nolimit')){_0x47ddb5['limit']=qs['limit'](_0x228829[_0x2758('0x34')][_0x2758('0x1d')]);_0x47ddb5[_0x2758('0x1b')]=qs[_0x2758('0x1b')](_0x228829[_0x2758('0x34')][_0x2758('0x1b')]);}_0x47ddb5[_0x2758('0x3b')]=qs[_0x2758('0x3c')](_0x228829['query'][_0x2758('0x3c')]);_0x47ddb5[_0x2758('0x3d')]=qs[_0x2758('0x32')](_[_0x2758('0x3e')](_0x228829[_0x2758('0x34')],_0x3ae88e[_0x2758('0x32')]));_0x47ddb5[_0x2758('0x3d')][_0x2758('0x59')]=_0x111e49['id'];if(_0x228829[_0x2758('0x34')][_0x2758('0x41')]){_0x47ddb5[_0x2758('0x3d')]=_[_0x2758('0x3f')](_0x47ddb5[_0x2758('0x3d')],{'$or':_['map'](_0x47ddb5[_0x2758('0x37')],function(_0x1b5aff){var _0x2e8cec={};_0x2e8cec[_0x1b5aff]={'$like':'%'+_0x228829['query'][_0x2758('0x41')]+'%'};return _0x2e8cec;})});}_0x47ddb5=_[_0x2758('0x3f')]({},_0x47ddb5,_0x228829[_0x2758('0x42')]);return db[_0x2758('0x5a')][_0x2758('0x1c')]({'where':_0x47ddb5[_0x2758('0x3d')]})[_0x2758('0x24')](function(_0x3932c3){_0x3aebb0[_0x2758('0x1c')]=_0x3932c3;if(_0x228829[_0x2758('0x34')][_0x2758('0x48')]){_0x47ddb5[_0x2758('0x49')]=[{'all':!![]}];}return db['CmHopper'][_0x2758('0x44')](_0x47ddb5);})[_0x2758('0x24')](function(_0x31292c){_0x3aebb0[_0x2758('0x45')]=_0x31292c;return _0x3aebb0;});}})['then'](respondWithFilteredResult(_0x475748,_0x47ddb5))[_0x2758('0x46')](handleError(_0x475748,null));};exports[_0x2758('0x5b')]=function(_0x515eae,_0xcda34b,_0x26fb03){var _0x398cab={'raw':!![],'where':{}};var _0x301fe5={};var _0x3a92d4={'count':0x0,'rows':[]};return db[_0x2758('0x43')][_0x2758('0x58')]({'where':{'id':_0x515eae[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0xcda34b,null))[_0x2758('0x24')](function(_0x4c816d){if(_0x4c816d){_0x301fe5[_0x2758('0x33')]=_[_0x2758('0x31')](db['CmHopperHistory'][_0x2758('0x2e')]);_0x301fe5[_0x2758('0x34')]=_['keys'](_0x515eae[_0x2758('0x34')]);_0x301fe5[_0x2758('0x32')]=_[_0x2758('0x35')](_0x301fe5[_0x2758('0x33')],_0x301fe5[_0x2758('0x34')]);_0x398cab[_0x2758('0x37')]=_[_0x2758('0x35')](_0x301fe5[_0x2758('0x33')],qs[_0x2758('0x36')](_0x515eae[_0x2758('0x34')][_0x2758('0x36')]));_0x398cab[_0x2758('0x37')]=_0x398cab[_0x2758('0x37')][_0x2758('0x38')]?_0x398cab[_0x2758('0x37')]:_0x301fe5['model'];if(!_0x515eae[_0x2758('0x34')][_0x2758('0x39')](_0x2758('0x3a'))){_0x398cab[_0x2758('0x1d')]=qs[_0x2758('0x1d')](_0x515eae[_0x2758('0x34')][_0x2758('0x1d')]);_0x398cab['offset']=qs['offset'](_0x515eae[_0x2758('0x34')][_0x2758('0x1b')]);}_0x398cab[_0x2758('0x3b')]=qs[_0x2758('0x3c')](_0x515eae[_0x2758('0x34')]['sort']);_0x398cab[_0x2758('0x3d')]=qs[_0x2758('0x32')](_[_0x2758('0x3e')](_0x515eae['query'],_0x301fe5[_0x2758('0x32')]));_0x398cab['where'][_0x2758('0x59')]=_0x4c816d['id'];if(_0x515eae[_0x2758('0x34')][_0x2758('0x41')]){_0x398cab[_0x2758('0x3d')]=_[_0x2758('0x3f')](_0x398cab[_0x2758('0x3d')],{'$or':_[_0x2758('0x2d')](_0x398cab['attributes'],function(_0xa63291){var _0x247fa0={};_0x247fa0[_0xa63291]={'$like':'%'+_0x515eae[_0x2758('0x34')][_0x2758('0x41')]+'%'};return _0x247fa0;})});}_0x398cab=_['merge']({},_0x398cab,_0x515eae[_0x2758('0x42')]);return db[_0x2758('0x5c')][_0x2758('0x1c')]({'where':_0x398cab[_0x2758('0x3d')]})[_0x2758('0x24')](function(_0x222c8e){_0x3a92d4['count']=_0x222c8e;if(_0x515eae[_0x2758('0x34')][_0x2758('0x48')]){_0x398cab['include']=[{'all':!![]}];}return db[_0x2758('0x5c')][_0x2758('0x44')](_0x398cab);})[_0x2758('0x24')](function(_0x36c849){_0x3a92d4['rows']=_0x36c849;return _0x3a92d4;});}})[_0x2758('0x24')](respondWithFilteredResult(_0xcda34b,_0x398cab))[_0x2758('0x46')](handleError(_0xcda34b,null));};exports['getHopperFinals']=function(_0x1301a2,_0x5f08cb,_0x3edb50){var _0x530303={'raw':!![],'where':{}};var _0x253473={};var _0x5c88e3={'count':0x0,'rows':[]};return db[_0x2758('0x43')][_0x2758('0x58')]({'where':{'id':_0x1301a2[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x5f08cb,null))[_0x2758('0x24')](function(_0x43e530){if(_0x43e530){_0x253473[_0x2758('0x33')]=_[_0x2758('0x31')](db[_0x2758('0x5d')][_0x2758('0x2e')]);_0x253473[_0x2758('0x34')]=_[_0x2758('0x31')](_0x1301a2[_0x2758('0x34')]);_0x253473['filters']=_[_0x2758('0x35')](_0x253473[_0x2758('0x33')],_0x253473[_0x2758('0x34')]);_0x530303[_0x2758('0x37')]=_['intersection'](_0x253473[_0x2758('0x33')],qs[_0x2758('0x36')](_0x1301a2['query']['fields']));_0x530303[_0x2758('0x37')]=_0x530303[_0x2758('0x37')][_0x2758('0x38')]?_0x530303[_0x2758('0x37')]:_0x253473[_0x2758('0x33')];if(!_0x1301a2[_0x2758('0x34')][_0x2758('0x39')](_0x2758('0x3a'))){_0x530303[_0x2758('0x1d')]=qs[_0x2758('0x1d')](_0x1301a2['query'][_0x2758('0x1d')]);_0x530303[_0x2758('0x1b')]=qs[_0x2758('0x1b')](_0x1301a2[_0x2758('0x34')][_0x2758('0x1b')]);}_0x530303[_0x2758('0x3b')]=qs['sort'](_0x1301a2['query'][_0x2758('0x3c')]);_0x530303[_0x2758('0x3d')]=qs[_0x2758('0x32')](_[_0x2758('0x3e')](_0x1301a2[_0x2758('0x34')],_0x253473['filters']));_0x530303[_0x2758('0x3d')][_0x2758('0x59')]=_0x43e530['id'];if(_0x1301a2[_0x2758('0x34')][_0x2758('0x41')]){_0x530303[_0x2758('0x3d')]=_['merge'](_0x530303[_0x2758('0x3d')],{'$or':_[_0x2758('0x2d')](_0x530303[_0x2758('0x37')],function(_0x19f67f){var _0x57e40c={};_0x57e40c[_0x19f67f]={'$like':'%'+_0x1301a2[_0x2758('0x34')]['filter']+'%'};return _0x57e40c;})});}_0x530303=_[_0x2758('0x3f')]({},_0x530303,_0x1301a2[_0x2758('0x42')]);return db[_0x2758('0x5d')][_0x2758('0x1c')]({'where':_0x530303[_0x2758('0x3d')]})[_0x2758('0x24')](function(_0x2d9282){_0x5c88e3[_0x2758('0x1c')]=_0x2d9282;if(_0x1301a2[_0x2758('0x34')]['includeAll']){_0x530303[_0x2758('0x49')]=[{'all':!![]}];}return db[_0x2758('0x5d')]['findAll'](_0x530303);})[_0x2758('0x24')](function(_0xcc8980){_0x5c88e3[_0x2758('0x45')]=_0xcc8980;return _0x5c88e3;});}})[_0x2758('0x24')](respondWithFilteredResult(_0x5f08cb,_0x530303))['catch'](handleError(_0x5f08cb,null));};exports[_0x2758('0x5e')]=function(_0x1eb580,_0x2ac44d,_0x5d0357){var _0x30f170={'raw':!![],'where':{}};var _0x7d8fae={};var _0x365192={'count':0x0,'rows':[]};return db['Campaign'][_0x2758('0x58')]({'where':{'id':_0x1eb580[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x2ac44d,null))[_0x2758('0x24')](function(_0xca22e8){if(_0xca22e8){_0x7d8fae[_0x2758('0x33')]=_[_0x2758('0x31')](db[_0x2758('0x5f')][_0x2758('0x2e')]);_0x7d8fae[_0x2758('0x34')]=_[_0x2758('0x31')](_0x1eb580[_0x2758('0x34')]);_0x7d8fae[_0x2758('0x32')]=_[_0x2758('0x35')](_0x7d8fae[_0x2758('0x33')],_0x7d8fae[_0x2758('0x34')]);_0x30f170[_0x2758('0x37')]=_['intersection'](_0x7d8fae[_0x2758('0x33')],qs[_0x2758('0x36')](_0x1eb580[_0x2758('0x34')]['fields']));_0x30f170[_0x2758('0x37')]=_0x30f170[_0x2758('0x37')][_0x2758('0x38')]?_0x30f170[_0x2758('0x37')]:_0x7d8fae['model'];if(!_0x1eb580[_0x2758('0x34')][_0x2758('0x39')]('nolimit')){_0x30f170[_0x2758('0x1d')]=qs[_0x2758('0x1d')](_0x1eb580[_0x2758('0x34')][_0x2758('0x1d')]);_0x30f170[_0x2758('0x1b')]=qs[_0x2758('0x1b')](_0x1eb580[_0x2758('0x34')]['offset']);}_0x30f170[_0x2758('0x3b')]=qs[_0x2758('0x3c')](_0x1eb580['query'][_0x2758('0x3c')]);_0x30f170[_0x2758('0x3d')]=qs[_0x2758('0x32')](_[_0x2758('0x3e')](_0x1eb580[_0x2758('0x34')],_0x7d8fae[_0x2758('0x32')]));_0x30f170[_0x2758('0x3d')][_0x2758('0x59')]=_0xca22e8['id'];if(_0x1eb580[_0x2758('0x34')][_0x2758('0x41')]){_0x30f170[_0x2758('0x3d')]=_[_0x2758('0x3f')](_0x30f170[_0x2758('0x3d')],{'$or':_[_0x2758('0x2d')](_0x30f170[_0x2758('0x37')],function(_0x1467d2){var _0x575a59={};_0x575a59[_0x1467d2]={'$like':'%'+_0x1eb580[_0x2758('0x34')][_0x2758('0x41')]+'%'};return _0x575a59;})});}_0x30f170=_[_0x2758('0x3f')]({},_0x30f170,_0x1eb580[_0x2758('0x42')]);return db[_0x2758('0x5f')]['count']({'where':_0x30f170[_0x2758('0x3d')]})['then'](function(_0x483d11){_0x365192[_0x2758('0x1c')]=_0x483d11;if(_0x1eb580[_0x2758('0x34')][_0x2758('0x48')]){_0x30f170['include']=[{'all':!![]}];}return db[_0x2758('0x5f')]['findAll'](_0x30f170);})[_0x2758('0x24')](function(_0x5eda32){_0x365192[_0x2758('0x45')]=_0x5eda32;return _0x365192;});}})['then'](respondWithFilteredResult(_0x2ac44d,_0x30f170))[_0x2758('0x46')](handleError(_0x2ac44d,null));};exports[_0x2758('0x60')]=function(_0x307b9a,_0x3896c6,_0x1d3ed2){var _0xe6425e={};var _0x1fcef1={};var _0x3ab0e6;var _0x490999;return db[_0x2758('0x43')][_0x2758('0x58')]({'where':{'id':_0x307b9a[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x3896c6,null))['then'](function(_0x5b0fe0){if(_0x5b0fe0){_0x3ab0e6=_0x5b0fe0;_0x1fcef1[_0x2758('0x33')]=_['keys'](db['CmList'][_0x2758('0x2e')]);_0x1fcef1[_0x2758('0x34')]=_[_0x2758('0x31')](_0x307b9a[_0x2758('0x34')]);_0x1fcef1[_0x2758('0x32')]=_[_0x2758('0x35')](_0x1fcef1['model'],_0x1fcef1[_0x2758('0x34')]);_0xe6425e[_0x2758('0x37')]=_['intersection'](_0x1fcef1[_0x2758('0x33')],qs['fields'](_0x307b9a[_0x2758('0x34')]['fields']));_0xe6425e['attributes']=_0xe6425e['attributes'][_0x2758('0x38')]?_0xe6425e['attributes']:_0x1fcef1[_0x2758('0x33')];_0xe6425e[_0x2758('0x3b')]=qs['sort'](_0x307b9a[_0x2758('0x34')]['sort']);_0xe6425e['where']=qs[_0x2758('0x32')](_['pick'](_0x307b9a[_0x2758('0x34')],_0x1fcef1['filters']));if(_0x307b9a[_0x2758('0x34')]['filter']){_0xe6425e[_0x2758('0x3d')]=_[_0x2758('0x3f')](_0xe6425e[_0x2758('0x3d')],{'$or':_['map'](_0xe6425e['attributes'],function(_0x1de6f7){var _0x23a64a={};_0x23a64a[_0x1de6f7]={'$like':'%'+_0x307b9a[_0x2758('0x34')][_0x2758('0x41')]+'%'};return _0x23a64a;})});}_0xe6425e=_[_0x2758('0x3f')]({},_0xe6425e,_0x307b9a[_0x2758('0x42')]);return _0x3ab0e6[_0x2758('0x60')](_0xe6425e);}})[_0x2758('0x24')](function(_0x561a69){if(_0x561a69){_0x490999=_0x561a69[_0x2758('0x38')];if(!_0x307b9a[_0x2758('0x34')]['hasOwnProperty'](_0x2758('0x3a'))){_0xe6425e[_0x2758('0x1d')]=qs[_0x2758('0x1d')](_0x307b9a[_0x2758('0x34')][_0x2758('0x1d')]);_0xe6425e[_0x2758('0x1b')]=qs[_0x2758('0x1b')](_0x307b9a[_0x2758('0x34')][_0x2758('0x1b')]);}return _0x3ab0e6[_0x2758('0x60')](_0xe6425e);}})['then'](function(_0x2467fd){if(_0x2467fd){return _0x2467fd?{'count':_0x490999,'rows':_0x2467fd}:null;}})[_0x2758('0x24')](respondWithResult(_0x3896c6,null))[_0x2758('0x46')](handleError(_0x3896c6,null));};exports[_0x2758('0x61')]=function(_0x5c14a8,_0x3172e4,_0x358f98){var _0x433d2f,_0x4894fa;var _0x279293=[];var _0x5353fe=moment()[_0x2758('0x62')](_0x2758('0x63'));return db['Campaign'][_0x2758('0x4a')]({'where':{'id':_0x5c14a8[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x3172e4,null))[_0x2758('0x24')](function(_0x5649e0){if(_0x5649e0){_0x4894fa=_0x5649e0;return _0x5649e0[_0x2758('0x61')](_0x5c14a8[_0x2758('0x4c')][_0x2758('0x64')],_[_0x2758('0x65')](_0x5c14a8['body'],[_0x2758('0x64'),'id'])||{});}return null;})[_0x2758('0x66')](function(_0x51d1b5){var _0x5a4060;var _0x440f4f;_0x433d2f=_0x51d1b5||[];var _0xa685b2=[];if(_0x51d1b5){for(var _0x220444=0x0;_0x220444<_0x51d1b5[_0x2758('0x38')];_0x220444+=0x1){var _0x2db99f=_0x51d1b5[_0x220444][_0x2758('0x26')]({'plain':!![]});_0x4894fa[_0x2758('0x67')]=_0x5c14a8[_0x2758('0x4c')][_0x2758('0x67')]?_0x5c14a8['body'][_0x2758('0x67')]:_0x4894fa['dialCheckDuplicateType'];switch(_0x4894fa['dialCheckDuplicateType']){case'always':_0x5a4060=squel[_0x2758('0x68')]()[_0x2758('0x69')](_0x2758('0x6a'))[_0x2758('0x6b')]([_0x2758('0x6c'),'scheduledAt','ContactId','ListId',_0x2758('0x59'),_0x2758('0x55'),_0x2758('0x56')],squel[_0x2758('0x6d')]()[_0x2758('0x6e')](_0x2758('0x6c'),'phone')[_0x2758('0x6e')]('NOW()','scheduledAt')['field']('id',_0x2758('0x6f'))['field'](_0x2db99f['CmListId'][_0x2758('0x70')](),_0x2758('0x71'))['field'](_0x5c14a8[_0x2758('0x54')]['id']['toString'](),_0x2758('0x59'))[_0x2758('0x6e')]('\x27'+_0x5353fe+'\x27',_0x2758('0x55'))[_0x2758('0x6e')]('\x27'+_0x5353fe+'\x27','updatedAt')[_0x2758('0x72')](_0x2758('0x73'))['where'](_0x2758('0x74'))[_0x2758('0x3d')](_0x2758('0x75'),_0x2db99f[_0x2758('0x76')]['toString']())['where'](_0x2758('0x77'))[_0x2758('0x3d')](_0x2758('0x78'),squel[_0x2758('0x6d')]()['field'](_0x2758('0x79'))[_0x2758('0x72')]('cm_hopper_final')[_0x2758('0x3d')]('CampaignId\x20=\x20?',_0x5c14a8['params']['id'][_0x2758('0x70')]()))[_0x2758('0x3d')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x2758('0x6e')](_0x2758('0x7a'))[_0x2758('0x72')]('cm_hopper')[_0x2758('0x3d')]('CampaignId\x20=\x20?',_0x5c14a8[_0x2758('0x54')]['id'][_0x2758('0x70')]())))[_0x2758('0x70')]();break;case'onlyIfOpen':_0x5a4060=squel[_0x2758('0x68')]()['into'](_0x2758('0x6a'))[_0x2758('0x6b')]([_0x2758('0x6c'),_0x2758('0x7b'),'ContactId',_0x2758('0x71'),_0x2758('0x59'),_0x2758('0x55'),_0x2758('0x56')],squel[_0x2758('0x6d')]()[_0x2758('0x6e')](_0x2758('0x6c'),_0x2758('0x6c'))[_0x2758('0x6e')](_0x2758('0x7c'),_0x2758('0x7b'))[_0x2758('0x6e')]('id',_0x2758('0x6f'))[_0x2758('0x6e')](_0x2db99f[_0x2758('0x76')][_0x2758('0x70')](),'ListId')['field'](_0x5c14a8[_0x2758('0x54')]['id']['toString'](),_0x2758('0x59'))[_0x2758('0x6e')]('\x27'+_0x5353fe+'\x27',_0x2758('0x55'))[_0x2758('0x6e')]('\x27'+_0x5353fe+'\x27',_0x2758('0x56'))[_0x2758('0x72')]('cm_contacts')['where'](_0x2758('0x74'))['where'](_0x2758('0x75'),_0x2db99f[_0x2758('0x76')][_0x2758('0x70')]())[_0x2758('0x3d')](_0x2758('0x77'))[_0x2758('0x3d')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x2758('0x6e')]('COALESCE(phone,\x27\x27)')[_0x2758('0x72')]('cm_hopper')[_0x2758('0x3d')](_0x2758('0x7d'),_0x5c14a8[_0x2758('0x54')]['id'][_0x2758('0x70')]())))[_0x2758('0x70')]();break;default:_0x5a4060=squel[_0x2758('0x68')]()[_0x2758('0x69')](_0x2758('0x6a'))[_0x2758('0x6b')]([_0x2758('0x6c'),_0x2758('0x7b'),_0x2758('0x6f'),'ListId',_0x2758('0x59'),_0x2758('0x55'),_0x2758('0x56')],squel[_0x2758('0x6d')]()[_0x2758('0x6e')]('phone','phone')[_0x2758('0x6e')](_0x2758('0x7c'),_0x2758('0x7b'))['field']('id','ContactId')[_0x2758('0x6e')](_0x2db99f['CmListId'][_0x2758('0x70')](),_0x2758('0x71'))[_0x2758('0x6e')](_0x5c14a8[_0x2758('0x54')]['id'][_0x2758('0x70')](),_0x2758('0x59'))[_0x2758('0x6e')]('\x27'+_0x5353fe+'\x27',_0x2758('0x55'))['field']('\x27'+_0x5353fe+'\x27',_0x2758('0x56'))[_0x2758('0x72')](_0x2758('0x73'))[_0x2758('0x3d')](_0x2758('0x74'))[_0x2758('0x3d')](_0x2758('0x75'),_0x2db99f[_0x2758('0x76')][_0x2758('0x70')]())[_0x2758('0x3d')](_0x2758('0x77')))[_0x2758('0x70')]();}_0x440f4f=squel[_0x2758('0x68')]()[_0x2758('0x69')](_0x2758('0x7e'))[_0x2758('0x6b')]([_0x2758('0x7f'),_0x2758('0x7b'),_0x2758('0x6c'),_0x2758('0x80'),_0x2758('0x55'),_0x2758('0x56')],squel[_0x2758('0x6d')]()['field'](_0x2758('0x81'),'id')[_0x2758('0x6e')]('NOW()','scheduledAt')['field'](_0x2758('0x82'),_0x2758('0x6c'))[_0x2758('0x6e')](_0x2758('0x83'),_0x2758('0x80'))[_0x2758('0x6e')]('\x27'+_0x5353fe+'\x27',_0x2758('0x55'))['field']('\x27'+_0x5353fe+'\x27',_0x2758('0x56'))[_0x2758('0x72')](_0x2758('0x84'),'ci')[_0x2758('0x85')]('cm_hopper','h',_0x2758('0x86'))[_0x2758('0x3d')]('h.ListId\x20=\x20?',_0x2db99f[_0x2758('0x76')][_0x2758('0x70')]())[_0x2758('0x3d')]('h.CampaignId=?',_0x5c14a8[_0x2758('0x54')]['id']['toString']())[_0x2758('0x3d')](_0x2758('0x87'),_0x5353fe))['toString']();_0xa685b2[_0x2758('0x88')](db['sequelize']['query'](_0x5a4060));_0x279293[_0x2758('0x88')](db[_0x2758('0x89')][_0x2758('0x34')](_0x440f4f));}return BPromise[_0x2758('0x8a')](_0xa685b2);}})['then'](function(){return BPromise[_0x2758('0x8a')](_0x279293);})['then'](function(){return _0x433d2f;})[_0x2758('0x24')](respondWithResult(_0x3172e4,null))[_0x2758('0x46')](handleError(_0x3172e4,null));};exports[_0x2758('0x8b')]=function(_0x5f21c0,_0x295964,_0x5da95e){return db[_0x2758('0x43')][_0x2758('0x4a')]({'where':{'id':_0x5f21c0[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x295964,null))[_0x2758('0x24')](function(_0x212a4f){if(_0x212a4f){return _0x212a4f[_0x2758('0x8b')](_0x5f21c0[_0x2758('0x34')][_0x2758('0x64')]);}})[_0x2758('0x24')](function(_0x435370){if(_0x435370){return db[_0x2758('0x5a')][_0x2758('0x25')]({'where':{'ListId':_0x5f21c0[_0x2758('0x34')][_0x2758('0x64')],'CampaignId':_0x5f21c0[_0x2758('0x54')]['id']}})[_0x2758('0x24')](function(){return _0x435370;});}})['then'](respondWithStatusCode(_0x295964,null))[_0x2758('0x46')](handleError(_0x295964,null));};exports[_0x2758('0x8c')]=function(_0x2c0208,_0x58a98c,_0x4caf5e){var _0x156e50={};var _0x47c32f={};var _0x14a65c;var _0x11c84d;return db[_0x2758('0x43')][_0x2758('0x58')]({'where':{'id':_0x2c0208[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x58a98c,null))[_0x2758('0x24')](function(_0x5ba958){if(_0x5ba958){_0x14a65c=_0x5ba958;_0x47c32f[_0x2758('0x33')]=_[_0x2758('0x31')](db[_0x2758('0x8d')][_0x2758('0x2e')]);_0x47c32f[_0x2758('0x34')]=_[_0x2758('0x31')](_0x2c0208['query']);_0x47c32f[_0x2758('0x32')]=_[_0x2758('0x35')](_0x47c32f[_0x2758('0x33')],_0x47c32f[_0x2758('0x34')]);_0x156e50[_0x2758('0x37')]=_[_0x2758('0x35')](_0x47c32f['model'],qs[_0x2758('0x36')](_0x2c0208['query']['fields']));_0x156e50[_0x2758('0x37')]=_0x156e50[_0x2758('0x37')][_0x2758('0x38')]?_0x156e50['attributes']:_0x47c32f[_0x2758('0x33')];_0x156e50[_0x2758('0x3b')]=qs[_0x2758('0x3c')](_0x2c0208[_0x2758('0x34')][_0x2758('0x3c')]);_0x156e50[_0x2758('0x3d')]=qs[_0x2758('0x32')](_['pick'](_0x2c0208[_0x2758('0x34')],_0x47c32f[_0x2758('0x32')]));if(_0x2c0208['query'][_0x2758('0x41')]){_0x156e50[_0x2758('0x3d')]=_['merge'](_0x156e50[_0x2758('0x3d')],{'$or':_[_0x2758('0x2d')](_0x156e50[_0x2758('0x37')],function(_0x3f0358){var _0x2ece96={};_0x2ece96[_0x3f0358]={'$like':'%'+_0x2c0208[_0x2758('0x34')][_0x2758('0x41')]+'%'};return _0x2ece96;})});}_0x156e50=_[_0x2758('0x3f')]({},_0x156e50,_0x2c0208[_0x2758('0x42')]);return _0x14a65c[_0x2758('0x8c')](_0x156e50);}})['then'](function(_0x19c2db){if(_0x19c2db){_0x11c84d=_0x19c2db[_0x2758('0x38')];if(!_0x2c0208[_0x2758('0x34')]['hasOwnProperty'](_0x2758('0x3a'))){_0x156e50['limit']=qs[_0x2758('0x1d')](_0x2c0208['query'][_0x2758('0x1d')]);_0x156e50[_0x2758('0x1b')]=qs[_0x2758('0x1b')](_0x2c0208['query'][_0x2758('0x1b')]);}return _0x14a65c[_0x2758('0x8c')](_0x156e50);}})['then'](function(_0x493508){if(_0x493508){return _0x493508?{'count':_0x11c84d,'rows':_0x493508}:null;}})['then'](respondWithResult(_0x58a98c,null))['catch'](handleError(_0x58a98c,null));};exports[_0x2758('0x8e')]=function(_0xb52bbb,_0x1b1fa7,_0x19c18f){var _0x21ee55,_0x502d79;var _0x562edd=[];var _0x1d9bfe=moment()[_0x2758('0x62')](_0x2758('0x63'));return db[_0x2758('0x43')]['find']({'where':{'id':_0xb52bbb[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x1b1fa7,null))[_0x2758('0x24')](function(_0x5a8e41){if(_0x5a8e41){_0x502d79=_0x5a8e41;return _0x5a8e41[_0x2758('0x8e')](_0xb52bbb[_0x2758('0x4c')][_0x2758('0x64')],_[_0x2758('0x65')](_0xb52bbb[_0x2758('0x4c')],[_0x2758('0x64'),'id'])||{});}return null;})[_0x2758('0x66')](function(_0x1428e2){var _0x45a800;var _0x5b8764;_0x21ee55=_0x1428e2||[];var _0x57ca48=[];if(_0x1428e2){for(var _0x207551=0x0;_0x207551<_0x1428e2[_0x2758('0x38')];_0x207551+=0x1){var _0x538989=_0x1428e2[_0x207551]['get']({'plain':!![]});_0x45a800=squel[_0x2758('0x68')]()['into'](_0x2758('0x8f'))[_0x2758('0x6b')](['phone',_0x2758('0x6f'),_0x2758('0x71'),_0x2758('0x59'),_0x2758('0x55'),'updatedAt'],squel[_0x2758('0x6d')]()[_0x2758('0x6e')]('phone',_0x2758('0x6c'))[_0x2758('0x6e')]('id',_0x2758('0x6f'))[_0x2758('0x6e')](_0x538989['CmListId'][_0x2758('0x70')](),'ListId')[_0x2758('0x6e')](_0xb52bbb[_0x2758('0x54')]['id']['toString'](),_0x2758('0x59'))['field'](_0x2758('0x7c'),_0x2758('0x55'))['field'](_0x2758('0x7c'),_0x2758('0x56'))[_0x2758('0x72')](_0x2758('0x73'))[_0x2758('0x3d')](_0x2758('0x74'))[_0x2758('0x3d')](_0x2758('0x75'),_0x538989[_0x2758('0x76')]['toString']())[_0x2758('0x3d')]('phone\x20IS\x20NOT\x20NULL'))[_0x2758('0x70')]();_0x57ca48[_0x2758('0x88')](db[_0x2758('0x89')][_0x2758('0x34')](_0x45a800));}return BPromise[_0x2758('0x8a')](_0x57ca48);}})[_0x2758('0x24')](function(){return _0x21ee55;})[_0x2758('0x24')](respondWithResult(_0x1b1fa7,null))[_0x2758('0x46')](handleError(_0x1b1fa7,null));};exports['removeBlackLists']=function(_0x2ed741,_0x2be3b0,_0x3a5572){return db['Campaign'][_0x2758('0x4a')]({'where':{'id':_0x2ed741[_0x2758('0x54')]['id']}})[_0x2758('0x24')](handleEntityNotFound(_0x2be3b0,null))['then'](function(_0x47507f){if(_0x47507f){return _0x47507f[_0x2758('0x90')](_0x2ed741[_0x2758('0x34')][_0x2758('0x64')]);}})[_0x2758('0x24')](function(_0x2b6796){if(_0x2b6796){return db[_0x2758('0x5f')][_0x2758('0x25')]({'where':{'ListId':_0x2ed741[_0x2758('0x34')]['ids'],'CampaignId':_0x2ed741['params']['id']}})['then'](function(){return _0x2b6796;});}})[_0x2758('0x24')](respondWithStatusCode(_0x2be3b0,null))[_0x2758('0x46')](handleError(_0x2be3b0,null));};
\ No newline at end of file
index c938423..13c5119 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(_0x1c3765,_0xc3b431){var _0x3ab003=function(_0x470393){while(--_0x470393){_0x1c3765['push'](_0x1c3765['shift']());}};_0x3ab003(++_0xc3b431);}(_0x7a54,0x106));var _0x47a5=function(_0x341ddb,_0x4180f8){_0x341ddb=_0x341ddb-0x0;var _0x234251=_0x7a54[_0x341ddb];return _0x234251;};'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(_0x1bc2d6,_0x1257d3){var _0x559744=function(_0x537bad){while(--_0x537bad){_0x1bc2d6['push'](_0x1bc2d6['shift']());}};_0x559744(++_0x1257d3);}(_0x7a54,0x106));var _0x47a5=function(_0x3fda4c,_0x58f389){_0x3fda4c=_0x3fda4c-0x0;var _0x362dc5=_0x7a54[_0x3fda4c];return _0x362dc5;};'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 85455c4..d6ea42f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e16=['code','message','Campaign,\x20%s,\x20%s','result','catch','options','raw','where','attributes','limit','include','map','model','GetCampaign','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error'];(function(_0x26da89,_0x264785){var _0xc95b7b=function(_0x230e5b){while(--_0x230e5b){_0x26da89['push'](_0x26da89['shift']());}};_0xc95b7b(++_0x264785);}(_0x7e16,0x16f));var _0x67e1=function(_0x19e908,_0x4a18ea){_0x19e908=_0x19e908-0x0;var _0x5ad1e9=_0x7e16[_0x19e908];return _0x5ad1e9;};'use strict';var _=require(_0x67e1('0x0'));var util=require(_0x67e1('0x1'));var moment=require(_0x67e1('0x2'));var BPromise=require(_0x67e1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x67e1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x67e1('0x5'))(_0x67e1('0x6'));var config=require('../../config/environment');var jayson=require(_0x67e1('0x7'));var client=jayson[_0x67e1('0x8')][_0x67e1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x451c5f,_0x3728a8,_0x5736e2){return new BPromise(function(_0x5cd5f1,_0x5c7742){return client[_0x67e1('0xa')](_0x451c5f,_0x5736e2)[_0x67e1('0xb')](function(_0x29af76){logger[_0x67e1('0xc')]('Campaign,\x20%s,\x20%s',_0x3728a8,_0x67e1('0xd'));logger[_0x67e1('0xe')](_0x67e1('0xf'),_0x3728a8,_0x67e1('0xd'),JSON['stringify'](_0x29af76));if(_0x29af76[_0x67e1('0x10')]){if(_0x29af76['error'][_0x67e1('0x11')]===0x1f4){logger['error']('Campaign,\x20%s,\x20%s',_0x3728a8,_0x29af76[_0x67e1('0x10')][_0x67e1('0x12')]);return _0x5c7742(_0x29af76[_0x67e1('0x10')][_0x67e1('0x12')]);}logger['error'](_0x67e1('0x13'),_0x3728a8,_0x29af76[_0x67e1('0x10')][_0x67e1('0x12')]);return _0x5cd5f1(_0x29af76['error'][_0x67e1('0x12')]);}else{logger[_0x67e1('0xc')](_0x67e1('0x13'),_0x3728a8,_0x67e1('0xd'));_0x5cd5f1(_0x29af76[_0x67e1('0x14')][_0x67e1('0x12')]);}})[_0x67e1('0x15')](function(_0x406ffe){logger[_0x67e1('0x10')](_0x67e1('0x13'),_0x3728a8,_0x406ffe);_0x5c7742(_0x406ffe);});});}exports['GetCampaign']=function(_0x14ab29){var _0x9e931d=this;return new Promise(function(_0x2c36b8,_0x4ffd00){return db['Campaign']['findAll']({'raw':_0x14ab29[_0x67e1('0x16')]?_0x14ab29[_0x67e1('0x16')][_0x67e1('0x17')]===undefined?!![]:![]:!![],'where':_0x14ab29[_0x67e1('0x16')]?_0x14ab29['options'][_0x67e1('0x18')]||null:null,'attributes':_0x14ab29[_0x67e1('0x16')]?_0x14ab29[_0x67e1('0x16')][_0x67e1('0x19')]||null:null,'limit':_0x14ab29['options']?_0x14ab29[_0x67e1('0x16')][_0x67e1('0x1a')]||null:null,'include':_0x14ab29[_0x67e1('0x16')]?_0x14ab29[_0x67e1('0x16')][_0x67e1('0x1b')]?_[_0x67e1('0x1c')](_0x14ab29[_0x67e1('0x16')]['include'],function(_0x158566){return{'model':db[_0x158566[_0x67e1('0x1d')]],'as':_0x158566['as'],'attributes':_0x158566[_0x67e1('0x19')],'include':_0x158566[_0x67e1('0x1b')]?_[_0x67e1('0x1c')](_0x158566[_0x67e1('0x1b')],function(_0x16fcd0){return{'model':db[_0x16fcd0[_0x67e1('0x1d')]],'as':_0x16fcd0['as'],'attributes':_0x16fcd0[_0x67e1('0x19')],'include':_0x16fcd0[_0x67e1('0x1b')]?_['map'](_0x16fcd0[_0x67e1('0x1b')],function(_0x37beab){return{'model':db[_0x37beab[_0x67e1('0x1d')]],'as':_0x37beab['as'],'attributes':_0x37beab['attributes']};}):[]};}):[]};}):[]:[]})[_0x67e1('0xb')](function(_0x5ddb2f){logger[_0x67e1('0xc')](_0x67e1('0x1e'),_0x14ab29);logger[_0x67e1('0xe')](_0x67e1('0x1e'),_0x14ab29,JSON[_0x67e1('0x1f')](_0x5ddb2f));_0x2c36b8(_0x5ddb2f);})['catch'](function(_0x4f6806){logger[_0x67e1('0x10')]('GetCampaign',_0x4f6806[_0x67e1('0x12')],_0x14ab29);_0x4ffd00(_0x9e931d[_0x67e1('0x10')](0x1f4,_0x4f6806[_0x67e1('0x12')]));});});};
\ No newline at end of file
+var _0x295f=['where','attributes','limit','include','map','model','GetCampaign','catch','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','findAll','options'];(function(_0x2b93a5,_0x31934c){var _0x4111dc=function(_0x3d4f71){while(--_0x3d4f71){_0x2b93a5['push'](_0x2b93a5['shift']());}};_0x4111dc(++_0x31934c);}(_0x295f,0x168));var _0xf295=function(_0x459f65,_0x23bf86){_0x459f65=_0x459f65-0x0;var _0x1286c6=_0x295f[_0x459f65];return _0x1286c6;};'use strict';var _=require('lodash');var util=require(_0xf295('0x0'));var moment=require(_0xf295('0x1'));var BPromise=require(_0xf295('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf295('0x3'));var db=require(_0xf295('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf295('0x5'));var config=require(_0xf295('0x6'));var jayson=require(_0xf295('0x7'));var client=jayson[_0xf295('0x8')][_0xf295('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50a890,_0x2b302f,_0x44e292){return new BPromise(function(_0x1f3320,_0x4041d5){return client[_0xf295('0xa')](_0x50a890,_0x44e292)[_0xf295('0xb')](function(_0xaf1853){logger[_0xf295('0xc')](_0xf295('0xd'),_0x2b302f,_0xf295('0xe'));logger[_0xf295('0xf')](_0xf295('0x10'),_0x2b302f,'request\x20sent',JSON[_0xf295('0x11')](_0xaf1853));if(_0xaf1853[_0xf295('0x12')]){if(_0xaf1853['error'][_0xf295('0x13')]===0x1f4){logger[_0xf295('0x12')](_0xf295('0xd'),_0x2b302f,_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);return _0x4041d5(_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);}logger[_0xf295('0x12')](_0xf295('0xd'),_0x2b302f,_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);return _0x1f3320(_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);}else{logger[_0xf295('0xc')](_0xf295('0xd'),_0x2b302f,_0xf295('0xe'));_0x1f3320(_0xaf1853[_0xf295('0x15')][_0xf295('0x14')]);}})['catch'](function(_0x57e1bc){logger[_0xf295('0x12')](_0xf295('0xd'),_0x2b302f,_0x57e1bc);_0x4041d5(_0x57e1bc);});});}exports['GetCampaign']=function(_0x3e0a44){var _0x5d18e1=this;return new Promise(function(_0x30ad22,_0x4deacb){return db['Campaign'][_0xf295('0x16')]({'raw':_0x3e0a44[_0xf295('0x17')]?_0x3e0a44['options']['raw']===undefined?!![]:![]:!![],'where':_0x3e0a44[_0xf295('0x17')]?_0x3e0a44[_0xf295('0x17')][_0xf295('0x18')]||null:null,'attributes':_0x3e0a44[_0xf295('0x17')]?_0x3e0a44[_0xf295('0x17')][_0xf295('0x19')]||null:null,'limit':_0x3e0a44['options']?_0x3e0a44['options'][_0xf295('0x1a')]||null:null,'include':_0x3e0a44['options']?_0x3e0a44[_0xf295('0x17')][_0xf295('0x1b')]?_[_0xf295('0x1c')](_0x3e0a44['options'][_0xf295('0x1b')],function(_0x2e079e){return{'model':db[_0x2e079e['model']],'as':_0x2e079e['as'],'attributes':_0x2e079e[_0xf295('0x19')],'include':_0x2e079e[_0xf295('0x1b')]?_[_0xf295('0x1c')](_0x2e079e[_0xf295('0x1b')],function(_0x111449){return{'model':db[_0x111449['model']],'as':_0x111449['as'],'attributes':_0x111449[_0xf295('0x19')],'include':_0x111449[_0xf295('0x1b')]?_['map'](_0x111449['include'],function(_0x1ba1dd){return{'model':db[_0x1ba1dd[_0xf295('0x1d')]],'as':_0x1ba1dd['as'],'attributes':_0x1ba1dd[_0xf295('0x19')]};}):[]};}):[]};}):[]:[]})[_0xf295('0xb')](function(_0x2f3f73){logger[_0xf295('0xc')](_0xf295('0x1e'),_0x3e0a44);logger[_0xf295('0xf')](_0xf295('0x1e'),_0x3e0a44,JSON['stringify'](_0x2f3f73));_0x30ad22(_0x2f3f73);})[_0xf295('0x1f')](function(_0x19ec3a){logger[_0xf295('0x12')](_0xf295('0x1e'),_0x19ec3a[_0xf295('0x14')],_0x3e0a44);_0x4deacb(_0x5d18e1[_0xf295('0x12')](0x1f4,_0x19ec3a['message']));});});};
\ No newline at end of file
index 85cfdd1..c40635a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae23=['exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','getHopperFinals','getLists','getBlackLists','post','create','/:id/clone','clone','/:id/lists','addLists','/:id/blacklists','addBlackLists','put','update','delete','destroy','removeBlackLists'];(function(_0x346387,_0x3877bb){var _0x2118d4=function(_0x4957cc){while(--_0x4957cc){_0x346387['push'](_0x346387['shift']());}};_0x2118d4(++_0x3877bb);}(_0xae23,0xc7));var _0x3ae2=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xae23[_0x18a79d];return _0x4f8848;};'use strict';var multer=require('multer');var util=require(_0x3ae2('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3ae2('0x1'));var router=express[_0x3ae2('0x2')]();var fs_extra=require(_0x3ae2('0x3'));var auth=require(_0x3ae2('0x4'));var interaction=require(_0x3ae2('0x5'));var config=require(_0x3ae2('0x6'));var controller=require(_0x3ae2('0x7'));router[_0x3ae2('0x8')]('/',auth[_0x3ae2('0x9')](),controller[_0x3ae2('0xa')]);router['get'](_0x3ae2('0xb'),auth[_0x3ae2('0x9')](),controller[_0x3ae2('0xc')]);router[_0x3ae2('0x8')](_0x3ae2('0xd'),auth[_0x3ae2('0x9')](),controller[_0x3ae2('0xe')]);router['get']('/:id/hopper_histories',auth[_0x3ae2('0x9')](),controller[_0x3ae2('0xf')]);router[_0x3ae2('0x8')]('/:id/hopper_finals',auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x10')]);router[_0x3ae2('0x8')]('/:id/hopper_black',auth[_0x3ae2('0x9')](),controller['getHopperBlacks']);router[_0x3ae2('0x8')]('/:id/lists',auth['isAuthenticated'](),controller[_0x3ae2('0x11')]);router[_0x3ae2('0x8')]('/:id/blacklists',auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x12')]);router[_0x3ae2('0x13')]('/',auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x14')]);router[_0x3ae2('0x13')](_0x3ae2('0x15'),auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x16')]);router[_0x3ae2('0x13')](_0x3ae2('0x17'),auth['isAuthenticated'](),controller[_0x3ae2('0x18')]);router[_0x3ae2('0x13')](_0x3ae2('0x19'),auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x1a')]);router[_0x3ae2('0x1b')]('/:id',auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x1c')]);router[_0x3ae2('0x1d')](_0x3ae2('0xb'),auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x1e')]);router['delete']('/:id/lists',auth[_0x3ae2('0x9')](),controller['removeLists']);router['delete']('/:id/blacklists',auth[_0x3ae2('0x9')](),controller[_0x3ae2('0x1f')]);module[_0x3ae2('0x20')]=router;
\ No newline at end of file
+var _0xe3f3=['addLists','addBlackLists','put','destroy','removeLists','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','/:id','isAuthenticated','show','get','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','getHopperBlacks','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone'];(function(_0xf0c8bd,_0x226453){var _0x38aac2=function(_0x2d5f2d){while(--_0x2d5f2d){_0xf0c8bd['push'](_0xf0c8bd['shift']());}};_0x38aac2(++_0x226453);}(_0xe3f3,0xed));var _0x3e3f=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xe3f3[_0x4792c8];return _0x35edb1;};'use strict';var multer=require(_0x3e3f('0x0'));var util=require(_0x3e3f('0x1'));var path=require(_0x3e3f('0x2'));var timeout=require(_0x3e3f('0x3'));var express=require(_0x3e3f('0x4'));var router=express['Router']();var fs_extra=require(_0x3e3f('0x5'));var auth=require(_0x3e3f('0x6'));var interaction=require(_0x3e3f('0x7'));var config=require(_0x3e3f('0x8'));var controller=require('./campaign.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x3e3f('0x9')]);router['get'](_0x3e3f('0xa'),auth[_0x3e3f('0xb')](),controller[_0x3e3f('0xc')]);router[_0x3e3f('0xd')](_0x3e3f('0xe'),auth['isAuthenticated'](),controller[_0x3e3f('0xf')]);router[_0x3e3f('0xd')](_0x3e3f('0x10'),auth[_0x3e3f('0xb')](),controller[_0x3e3f('0x11')]);router[_0x3e3f('0xd')]('/:id/hopper_finals',auth[_0x3e3f('0xb')](),controller[_0x3e3f('0x12')]);router['get']('/:id/hopper_black',auth[_0x3e3f('0xb')](),controller[_0x3e3f('0x13')]);router[_0x3e3f('0xd')](_0x3e3f('0x14'),auth['isAuthenticated'](),controller['getLists']);router['get'](_0x3e3f('0x15'),auth[_0x3e3f('0xb')](),controller[_0x3e3f('0x16')]);router[_0x3e3f('0x17')]('/',auth[_0x3e3f('0xb')](),controller[_0x3e3f('0x18')]);router[_0x3e3f('0x17')](_0x3e3f('0x19'),auth[_0x3e3f('0xb')](),controller[_0x3e3f('0x1a')]);router[_0x3e3f('0x17')]('/:id/lists',auth[_0x3e3f('0xb')](),controller[_0x3e3f('0x1b')]);router['post'](_0x3e3f('0x15'),auth['isAuthenticated'](),controller[_0x3e3f('0x1c')]);router[_0x3e3f('0x1d')]('/:id',auth[_0x3e3f('0xb')](),controller['update']);router['delete'](_0x3e3f('0xa'),auth['isAuthenticated'](),controller[_0x3e3f('0x1e')]);router['delete']('/:id/lists',auth['isAuthenticated'](),controller[_0x3e3f('0x1f')]);router[_0x3e3f('0x20')](_0x3e3f('0x15'),auth['isAuthenticated'](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
index 085c154..eaea5c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa660=['key','sequelize','exports','getDataValue'];(function(_0x5457e9,_0x2117de){var _0x2d7d82=function(_0x204eca){while(--_0x204eca){_0x5457e9['push'](_0x5457e9['shift']());}};_0x2d7d82(++_0x2117de);}(_0xa660,0x1e1));var _0x0a66=function(_0x1a38ba,_0x284548){_0x1a38ba=_0x1a38ba-0x0;var _0x1826e0=_0xa660[_0x1a38ba];return _0x1826e0;};'use strict';var Sequelize=require(_0x0a66('0x0'));module[_0x0a66('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a66('0x2')](_0x0a66('0x3'));}}};
\ No newline at end of file
+var _0x05b2=['sequelize','exports','STRING','TEXT','VIRTUAL','getDataValue','key'];(function(_0x45f575,_0x3ae51c){var _0xd8e1a1=function(_0x34867b){while(--_0x34867b){_0x45f575['push'](_0x45f575['shift']());}};_0xd8e1a1(++_0x3ae51c);}(_0x05b2,0x1f1));var _0x205b=function(_0x392b57,_0x3aba0d){_0x392b57=_0x392b57-0x0;var _0x19032e=_0x05b2[_0x392b57];return _0x19032e;};'use strict';var Sequelize=require(_0x205b('0x0'));module[_0x205b('0x1')]={'key':{'type':Sequelize[_0x205b('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x205b('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0x205b('0x2')]},'name':{'type':Sequelize[_0x205b('0x4')],'get':function(){return this[_0x205b('0x5')](_0x205b('0x6'));}}};
\ No newline at end of file
index dea6a6f..1023281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb251=['error','stack','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','query','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','intersection','body','find','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','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','to-csv','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','update','destroy','get','CannedAnswers','then','sendStatus'];(function(_0x868f1,_0x1b2807){var _0x459534=function(_0x36fb82){while(--_0x36fb82){_0x868f1['push'](_0x868f1['shift']());}};_0x459534(++_0x1b2807);}(_0xb251,0x8d));var _0x1b25=function(_0x166106,_0xa6668b){_0x166106=_0x166106-0x0;var _0x5e85e1=_0xb251[_0x166106];return _0x5e85e1;};'use strict';var emlformat=require(_0x1b25('0x0'));var rimraf=require(_0x1b25('0x1'));var zipdir=require(_0x1b25('0x2'));var jsonpatch=require(_0x1b25('0x3'));var rp=require(_0x1b25('0x4'));var moment=require(_0x1b25('0x5'));var BPromise=require(_0x1b25('0x6'));var Mustache=require(_0x1b25('0x7'));var util=require(_0x1b25('0x8'));var path=require(_0x1b25('0x9'));var sox=require(_0x1b25('0xa'));var csv=require(_0x1b25('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1b25('0xc'));var _=require('lodash');var squel=require(_0x1b25('0xd'));var crypto=require(_0x1b25('0xe'));var jsforce=require(_0x1b25('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1b25('0x10'));var Redis=require(_0x1b25('0x11'));var authService=require(_0x1b25('0x12'));var qs=require(_0x1b25('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1b25('0x14'));var utils=require(_0x1b25('0x15'));var config=require(_0x1b25('0x16'));var licenseUtil=require(_0x1b25('0x17'));var db=require(_0x1b25('0x18'))['db'];function respondWithStatusCode(_0x5db6c7,_0x5d6bdc){_0x5d6bdc=_0x5d6bdc||0xcc;return function(_0x226c43){if(_0x226c43){return _0x5db6c7['sendStatus'](_0x5d6bdc);}return _0x5db6c7[_0x1b25('0x19')](_0x5d6bdc)[_0x1b25('0x1a')]();};}function respondWithResult(_0x24d18a,_0x16beae){_0x16beae=_0x16beae||0xc8;return function(_0x3344e8){if(_0x3344e8){return _0x24d18a['status'](_0x16beae)[_0x1b25('0x1b')](_0x3344e8);}};}function respondWithFilteredResult(_0x501fe0,_0xed475d){return function(_0x33b4c7){if(_0x33b4c7){var _0x1ab3d6=typeof _0xed475d['offset']===_0x1b25('0x1c')&&typeof _0xed475d[_0x1b25('0x1d')]===_0x1b25('0x1c');var _0xe1731b=_0x33b4c7[_0x1b25('0x1e')];var _0x428b4a=_0x1ab3d6?0x0:_0xed475d[_0x1b25('0x1f')];var _0x45769a=_0x1ab3d6?_0x33b4c7['count']:_0xed475d[_0x1b25('0x1f')]+_0xed475d[_0x1b25('0x1d')];var _0xdf3f97;if(_0x45769a>=_0xe1731b){_0x45769a=_0xe1731b;_0xdf3f97=0xc8;}else{_0xdf3f97=0xce;}_0x501fe0[_0x1b25('0x19')](_0xdf3f97);return _0x501fe0[_0x1b25('0x20')]('Content-Range',_0x428b4a+'-'+_0x45769a+'/'+_0xe1731b)[_0x1b25('0x1b')](_0x33b4c7);}return null;};}function patchUpdates(_0xec30ca){return function(_0x36b09b){try{jsonpatch[_0x1b25('0x21')](_0x36b09b,_0xec30ca,!![]);}catch(_0x3842cc){return BPromise['reject'](_0x3842cc);}return _0x36b09b[_0x1b25('0x22')]();};}function saveUpdates(_0x2471b9,_0x26976c){return function(_0x3de138){if(_0x3de138){return _0x3de138[_0x1b25('0x23')](_0x2471b9)['then'](function(_0xda8023){return _0xda8023;});}return null;};}function removeEntity(_0x13f5b6,_0x21dae7){return function(_0x1bb257){if(_0x1bb257){return _0x1bb257[_0x1b25('0x24')]()['then'](function(){var _0x2f414a=_0x1bb257[_0x1b25('0x25')]({'plain':!![]});var _0x1f1048=_0x1b25('0x26');return db['UserProfileResource'][_0x1b25('0x24')]({'where':{'type':_0x1f1048,'resourceId':_0x2f414a['id']}})[_0x1b25('0x27')](function(){return _0x1bb257;});})[_0x1b25('0x27')](function(){_0x13f5b6['status'](0xcc)[_0x1b25('0x1a')]();});}};}function handleEntityNotFound(_0x22ef11,_0x10652f){return function(_0x163a83){if(!_0x163a83){_0x22ef11[_0x1b25('0x28')](0x194);}return _0x163a83;};}function handleError(_0x250d16,_0xb31fb1){_0xb31fb1=_0xb31fb1||0x1f4;return function(_0x41ce5f){logger[_0x1b25('0x29')](_0x41ce5f[_0x1b25('0x2a')]);if(_0x41ce5f[_0x1b25('0x2b')]){delete _0x41ce5f[_0x1b25('0x2b')];}_0x250d16['status'](_0xb31fb1)[_0x1b25('0x2c')](_0x41ce5f);};}exports[_0x1b25('0x2d')]=function(_0x123121,_0x54d609){var _0x589708={},_0xbda793={},_0x4a223e={'count':0x0,'rows':[]};var _0x1ad5f6=_[_0x1b25('0x2e')](db[_0x1b25('0x2f')][_0x1b25('0x30')],function(_0x22c480){return{'name':_0x22c480[_0x1b25('0x31')],'type':_0x22c480[_0x1b25('0x32')][_0x1b25('0x33')]};});_0xbda793['model']=_[_0x1b25('0x2e')](_0x1ad5f6,_0x1b25('0x2b'));_0xbda793[_0x1b25('0x34')]=_['keys'](_0x123121['query']);_0xbda793['filters']=_['intersection'](_0xbda793[_0x1b25('0x35')],_0xbda793[_0x1b25('0x34')]);_0x589708[_0x1b25('0x36')]=_['intersection'](_0xbda793['model'],qs[_0x1b25('0x37')](_0x123121['query'][_0x1b25('0x37')]));_0x589708[_0x1b25('0x36')]=_0x589708[_0x1b25('0x36')][_0x1b25('0x38')]?_0x589708[_0x1b25('0x36')]:_0xbda793['model'];if(!_0x123121['query'][_0x1b25('0x39')](_0x1b25('0x3a'))){_0x589708['limit']=qs[_0x1b25('0x1d')](_0x123121[_0x1b25('0x34')][_0x1b25('0x1d')]);_0x589708[_0x1b25('0x1f')]=qs['offset'](_0x123121['query'][_0x1b25('0x1f')]);}_0x589708[_0x1b25('0x3b')]=qs['sort'](_0x123121[_0x1b25('0x34')]['sort']);_0x589708[_0x1b25('0x3c')]=qs[_0x1b25('0x3d')](_[_0x1b25('0x3e')](_0x123121[_0x1b25('0x34')],_0xbda793[_0x1b25('0x3d')]),_0x1ad5f6);if(_0x123121['query'][_0x1b25('0x3f')]){_0x589708[_0x1b25('0x3c')]=_[_0x1b25('0x40')](_0x589708[_0x1b25('0x3c')],{'$or':[{'key':{'$like':'%'+_0x123121['query'][_0x1b25('0x3f')]+'%'}},{'value':{'$like':'%'+_0x123121[_0x1b25('0x34')][_0x1b25('0x3f')]+'%'}}]});}_0x589708=_[_0x1b25('0x40')]({},_0x589708,_0x123121[_0x1b25('0x41')]);var _0xf4659={'where':_0x589708['where']};return db[_0x1b25('0x2f')]['count'](_0xf4659)[_0x1b25('0x27')](function(_0xa895b7){_0x4a223e['count']=_0xa895b7;if(_0x123121['query'][_0x1b25('0x42')]){_0x589708[_0x1b25('0x43')]=[{'all':!![]}];}return db['CannedAnswer'][_0x1b25('0x44')](_0x589708);})[_0x1b25('0x27')](function(_0x10f299){_0x4a223e[_0x1b25('0x45')]=_0x10f299;return _0x4a223e;})[_0x1b25('0x27')](respondWithFilteredResult(_0x54d609,_0x589708))[_0x1b25('0x46')](handleError(_0x54d609,null));};exports[_0x1b25('0x47')]=function(_0x2be59c,_0xe8a93f){var _0x59f601={'raw':!![],'where':{'id':_0x2be59c[_0x1b25('0x48')]['id']}},_0x52e5b7={};_0x52e5b7[_0x1b25('0x35')]=_[_0x1b25('0x49')](db[_0x1b25('0x2f')][_0x1b25('0x30')]);_0x52e5b7[_0x1b25('0x34')]=_[_0x1b25('0x49')](_0x2be59c[_0x1b25('0x34')]);_0x52e5b7[_0x1b25('0x3d')]=_[_0x1b25('0x4a')](_0x52e5b7[_0x1b25('0x35')],_0x52e5b7[_0x1b25('0x34')]);_0x59f601['attributes']=_['intersection'](_0x52e5b7[_0x1b25('0x35')],qs[_0x1b25('0x37')](_0x2be59c[_0x1b25('0x34')][_0x1b25('0x37')]));_0x59f601[_0x1b25('0x36')]=_0x59f601[_0x1b25('0x36')][_0x1b25('0x38')]?_0x59f601[_0x1b25('0x36')]:_0x52e5b7[_0x1b25('0x35')];if(_0x2be59c[_0x1b25('0x34')]['includeAll']){_0x59f601[_0x1b25('0x43')]=[{'all':!![]}];}_0x59f601=_['merge']({},_0x59f601,_0x2be59c[_0x1b25('0x41')]);return db[_0x1b25('0x2f')]['find'](_0x59f601)[_0x1b25('0x27')](handleEntityNotFound(_0xe8a93f,null))[_0x1b25('0x27')](respondWithResult(_0xe8a93f,null))[_0x1b25('0x46')](handleError(_0xe8a93f,null));};exports[_0x1b25('0x23')]=function(_0x59a3f4,_0x374af6){if(_0x59a3f4[_0x1b25('0x4b')]['id']){delete _0x59a3f4[_0x1b25('0x4b')]['id'];}return db[_0x1b25('0x2f')][_0x1b25('0x4c')]({'where':{'id':_0x59a3f4[_0x1b25('0x48')]['id']}})['then'](handleEntityNotFound(_0x374af6,null))['then'](saveUpdates(_0x59a3f4[_0x1b25('0x4b')],null))[_0x1b25('0x27')](respondWithResult(_0x374af6,null))[_0x1b25('0x46')](handleError(_0x374af6,null));};exports[_0x1b25('0x24')]=function(_0x2c086f,_0x149fa6){return db[_0x1b25('0x2f')][_0x1b25('0x4c')]({'where':{'id':_0x2c086f[_0x1b25('0x48')]['id']}})[_0x1b25('0x27')](handleEntityNotFound(_0x149fa6,null))[_0x1b25('0x27')](removeEntity(_0x149fa6,null))[_0x1b25('0x46')](handleError(_0x149fa6,null));};exports[_0x1b25('0x4d')]=function(_0x5ca87f,_0x41e9cf){var _0x26a9e5={'key':_0x5ca87f[_0x1b25('0x4b')][_0x1b25('0x33')]};if(_0x5ca87f[_0x1b25('0x4b')][_0x1b25('0x4e')]){_0x26a9e5[_0x1b25('0x4e')]=_0x5ca87f[_0x1b25('0x4b')][_0x1b25('0x4e')];}else if(_0x5ca87f[_0x1b25('0x4b')][_0x1b25('0x4f')]){_0x26a9e5[_0x1b25('0x4f')]=_0x5ca87f['body'][_0x1b25('0x4f')];}else if(_0x5ca87f[_0x1b25('0x4b')][_0x1b25('0x50')]){_0x26a9e5[_0x1b25('0x50')]=_0x5ca87f[_0x1b25('0x4b')]['OpenchannelAccountId'];}else if(_0x5ca87f[_0x1b25('0x4b')][_0x1b25('0x51')]){_0x26a9e5[_0x1b25('0x51')]=_0x5ca87f[_0x1b25('0x4b')]['ChatWebsiteId'];}return db[_0x1b25('0x2f')][_0x1b25('0x4c')]({'where':_0x26a9e5})[_0x1b25('0x27')](function(_0x17e499){if(_0x17e499){throw new db[(_0x1b25('0x52'))]['ValidationError'](_0x1b25('0x53'));}return db[_0x1b25('0x2f')]['create'](_0x5ca87f[_0x1b25('0x4b')]);})[_0x1b25('0x27')](function(_0x27c05e){var _0x5f39f1=_0x5ca87f[_0x1b25('0x54')][_0x1b25('0x25')]({'plain':!![]});if(!_0x5f39f1)throw new Error(_0x1b25('0x55'));if(_0x5f39f1[_0x1b25('0x56')]==='user'){var _0x3d272c=_0x27c05e[_0x1b25('0x25')]({'plain':!![]});return db[_0x1b25('0x57')][_0x1b25('0x4c')]({'where':{'name':_0x1b25('0x26'),'userProfileId':_0x5f39f1['userProfileId']},'raw':!![]})[_0x1b25('0x27')](function(_0x4093d7){if(_0x4093d7&&_0x4093d7[_0x1b25('0x58')]===0x0){return db[_0x1b25('0x59')][_0x1b25('0x4d')]({'name':_0x3d272c['name'],'resourceId':_0x3d272c['id'],'type':_0x4093d7[_0x1b25('0x2b')],'sectionId':_0x4093d7['id']},{})['then'](function(){return _0x27c05e;});}else{return _0x27c05e;}})[_0x1b25('0x46')](function(_0x250b06){logger[_0x1b25('0x29')](_0x1b25('0x5a'),_0x250b06);throw _0x250b06;});}return _0x27c05e;})[_0x1b25('0x27')](respondWithResult(_0x41e9cf,0xc9))['catch'](handleError(_0x41e9cf,null));};
\ No newline at end of file
+var _0xdbf7=['where','pick','filter','merge','options','CannedAnswer','includeAll','include','findAll','rows','show','params','body','find','catch','create','MailAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','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','sendStatus','status','json','offset','limit','undefined','set','Content-Range','reject','save','update','then','destroy','get','CannedAnswers','UserProfileResource','end','error','stack','send','index','map','fieldName','type','key','model','name','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort'];(function(_0x3b2148,_0x3eed71){var _0x4dcd51=function(_0x51e79f){while(--_0x51e79f){_0x3b2148['push'](_0x3b2148['shift']());}};_0x4dcd51(++_0x3eed71);}(_0xdbf7,0x12d));var _0x7dbf=function(_0x1c6a3e,_0x5c3938){_0x1c6a3e=_0x1c6a3e-0x0;var _0x3637da=_0xdbf7[_0x1c6a3e];return _0x3637da;};'use strict';var emlformat=require(_0x7dbf('0x0'));var rimraf=require(_0x7dbf('0x1'));var zipdir=require(_0x7dbf('0x2'));var jsonpatch=require(_0x7dbf('0x3'));var rp=require(_0x7dbf('0x4'));var moment=require(_0x7dbf('0x5'));var BPromise=require(_0x7dbf('0x6'));var Mustache=require(_0x7dbf('0x7'));var util=require('util');var path=require(_0x7dbf('0x8'));var sox=require(_0x7dbf('0x9'));var csv=require('to-csv');var ejs=require(_0x7dbf('0xa'));var fs=require('fs');var fs_extra=require(_0x7dbf('0xb'));var _=require(_0x7dbf('0xc'));var squel=require(_0x7dbf('0xd'));var crypto=require(_0x7dbf('0xe'));var jsforce=require(_0x7dbf('0xf'));var deskjs=require(_0x7dbf('0x10'));var toCsv=require('to-csv');var querystring=require(_0x7dbf('0x11'));var Papa=require(_0x7dbf('0x12'));var Redis=require('ioredis');var authService=require(_0x7dbf('0x13'));var qs=require(_0x7dbf('0x14'));var as=require(_0x7dbf('0x15'));var hardwareService=require(_0x7dbf('0x16'));var logger=require(_0x7dbf('0x17'))(_0x7dbf('0x18'));var utils=require(_0x7dbf('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x383565,_0x1cbf0b){_0x1cbf0b=_0x1cbf0b||0xcc;return function(_0x39a0b4){if(_0x39a0b4){return _0x383565[_0x7dbf('0x1a')](_0x1cbf0b);}return _0x383565[_0x7dbf('0x1b')](_0x1cbf0b)['end']();};}function respondWithResult(_0x1a6018,_0x245447){_0x245447=_0x245447||0xc8;return function(_0x42704c){if(_0x42704c){return _0x1a6018['status'](_0x245447)[_0x7dbf('0x1c')](_0x42704c);}};}function respondWithFilteredResult(_0x1085cd,_0xd2bda2){return function(_0xa531b8){if(_0xa531b8){var _0x4002a7=typeof _0xd2bda2[_0x7dbf('0x1d')]==='undefined'&&typeof _0xd2bda2[_0x7dbf('0x1e')]===_0x7dbf('0x1f');var _0x14d4e9=_0xa531b8['count'];var _0x1a822f=_0x4002a7?0x0:_0xd2bda2[_0x7dbf('0x1d')];var _0x1fc42a=_0x4002a7?_0xa531b8['count']:_0xd2bda2[_0x7dbf('0x1d')]+_0xd2bda2[_0x7dbf('0x1e')];var _0x108f6e;if(_0x1fc42a>=_0x14d4e9){_0x1fc42a=_0x14d4e9;_0x108f6e=0xc8;}else{_0x108f6e=0xce;}_0x1085cd[_0x7dbf('0x1b')](_0x108f6e);return _0x1085cd[_0x7dbf('0x20')](_0x7dbf('0x21'),_0x1a822f+'-'+_0x1fc42a+'/'+_0x14d4e9)[_0x7dbf('0x1c')](_0xa531b8);}return null;};}function patchUpdates(_0x58c951){return function(_0x5db709){try{jsonpatch['apply'](_0x5db709,_0x58c951,!![]);}catch(_0x4a5b1c){return BPromise[_0x7dbf('0x22')](_0x4a5b1c);}return _0x5db709[_0x7dbf('0x23')]();};}function saveUpdates(_0x1bf5c4,_0x7b6026){return function(_0x255ea8){if(_0x255ea8){return _0x255ea8[_0x7dbf('0x24')](_0x1bf5c4)[_0x7dbf('0x25')](function(_0x4c3d53){return _0x4c3d53;});}return null;};}function removeEntity(_0x2dcd00,_0x3a00ab){return function(_0x3292c9){if(_0x3292c9){return _0x3292c9[_0x7dbf('0x26')]()[_0x7dbf('0x25')](function(){var _0x23cc32=_0x3292c9[_0x7dbf('0x27')]({'plain':!![]});var _0x3488f9=_0x7dbf('0x28');return db[_0x7dbf('0x29')][_0x7dbf('0x26')]({'where':{'type':_0x3488f9,'resourceId':_0x23cc32['id']}})['then'](function(){return _0x3292c9;});})['then'](function(){_0x2dcd00[_0x7dbf('0x1b')](0xcc)[_0x7dbf('0x2a')]();});}};}function handleEntityNotFound(_0x5476e8,_0x2f87fa){return function(_0x11a602){if(!_0x11a602){_0x5476e8[_0x7dbf('0x1a')](0x194);}return _0x11a602;};}function handleError(_0x579ea3,_0x17db00){_0x17db00=_0x17db00||0x1f4;return function(_0x394cc8){logger[_0x7dbf('0x2b')](_0x394cc8[_0x7dbf('0x2c')]);if(_0x394cc8['name']){delete _0x394cc8['name'];}_0x579ea3[_0x7dbf('0x1b')](_0x17db00)[_0x7dbf('0x2d')](_0x394cc8);};}exports[_0x7dbf('0x2e')]=function(_0x685fe4,_0x1ca9ff){var _0xf9b2d4={},_0x413e9={},_0x4d76f1={'count':0x0,'rows':[]};var _0x4499af=_[_0x7dbf('0x2f')](db['CannedAnswer']['rawAttributes'],function(_0x398295){return{'name':_0x398295[_0x7dbf('0x30')],'type':_0x398295[_0x7dbf('0x31')][_0x7dbf('0x32')]};});_0x413e9[_0x7dbf('0x33')]=_[_0x7dbf('0x2f')](_0x4499af,_0x7dbf('0x34'));_0x413e9[_0x7dbf('0x35')]=_[_0x7dbf('0x36')](_0x685fe4['query']);_0x413e9[_0x7dbf('0x37')]=_['intersection'](_0x413e9[_0x7dbf('0x33')],_0x413e9[_0x7dbf('0x35')]);_0xf9b2d4[_0x7dbf('0x38')]=_[_0x7dbf('0x39')](_0x413e9[_0x7dbf('0x33')],qs['fields'](_0x685fe4[_0x7dbf('0x35')][_0x7dbf('0x3a')]));_0xf9b2d4[_0x7dbf('0x38')]=_0xf9b2d4[_0x7dbf('0x38')][_0x7dbf('0x3b')]?_0xf9b2d4[_0x7dbf('0x38')]:_0x413e9[_0x7dbf('0x33')];if(!_0x685fe4[_0x7dbf('0x35')][_0x7dbf('0x3c')]('nolimit')){_0xf9b2d4['limit']=qs[_0x7dbf('0x1e')](_0x685fe4[_0x7dbf('0x35')][_0x7dbf('0x1e')]);_0xf9b2d4[_0x7dbf('0x1d')]=qs[_0x7dbf('0x1d')](_0x685fe4[_0x7dbf('0x35')]['offset']);}_0xf9b2d4[_0x7dbf('0x3d')]=qs[_0x7dbf('0x3e')](_0x685fe4[_0x7dbf('0x35')][_0x7dbf('0x3e')]);_0xf9b2d4[_0x7dbf('0x3f')]=qs['filters'](_[_0x7dbf('0x40')](_0x685fe4[_0x7dbf('0x35')],_0x413e9[_0x7dbf('0x37')]),_0x4499af);if(_0x685fe4[_0x7dbf('0x35')][_0x7dbf('0x41')]){_0xf9b2d4['where']=_[_0x7dbf('0x42')](_0xf9b2d4[_0x7dbf('0x3f')],{'$or':[{'key':{'$like':'%'+_0x685fe4[_0x7dbf('0x35')][_0x7dbf('0x41')]+'%'}},{'value':{'$like':'%'+_0x685fe4['query']['filter']+'%'}}]});}_0xf9b2d4=_[_0x7dbf('0x42')]({},_0xf9b2d4,_0x685fe4[_0x7dbf('0x43')]);var _0x16f495={'where':_0xf9b2d4['where']};return db[_0x7dbf('0x44')]['count'](_0x16f495)[_0x7dbf('0x25')](function(_0x8a36d2){_0x4d76f1['count']=_0x8a36d2;if(_0x685fe4['query'][_0x7dbf('0x45')]){_0xf9b2d4[_0x7dbf('0x46')]=[{'all':!![]}];}return db[_0x7dbf('0x44')][_0x7dbf('0x47')](_0xf9b2d4);})[_0x7dbf('0x25')](function(_0x12d986){_0x4d76f1[_0x7dbf('0x48')]=_0x12d986;return _0x4d76f1;})[_0x7dbf('0x25')](respondWithFilteredResult(_0x1ca9ff,_0xf9b2d4))['catch'](handleError(_0x1ca9ff,null));};exports[_0x7dbf('0x49')]=function(_0x23f5cf,_0x2f7825){var _0x35920d={'raw':!![],'where':{'id':_0x23f5cf[_0x7dbf('0x4a')]['id']}},_0x42bc79={};_0x42bc79['model']=_[_0x7dbf('0x36')](db[_0x7dbf('0x44')]['rawAttributes']);_0x42bc79[_0x7dbf('0x35')]=_[_0x7dbf('0x36')](_0x23f5cf[_0x7dbf('0x35')]);_0x42bc79[_0x7dbf('0x37')]=_[_0x7dbf('0x39')](_0x42bc79[_0x7dbf('0x33')],_0x42bc79[_0x7dbf('0x35')]);_0x35920d[_0x7dbf('0x38')]=_['intersection'](_0x42bc79[_0x7dbf('0x33')],qs['fields'](_0x23f5cf[_0x7dbf('0x35')][_0x7dbf('0x3a')]));_0x35920d[_0x7dbf('0x38')]=_0x35920d[_0x7dbf('0x38')][_0x7dbf('0x3b')]?_0x35920d[_0x7dbf('0x38')]:_0x42bc79[_0x7dbf('0x33')];if(_0x23f5cf[_0x7dbf('0x35')][_0x7dbf('0x45')]){_0x35920d[_0x7dbf('0x46')]=[{'all':!![]}];}_0x35920d=_[_0x7dbf('0x42')]({},_0x35920d,_0x23f5cf[_0x7dbf('0x43')]);return db[_0x7dbf('0x44')]['find'](_0x35920d)[_0x7dbf('0x25')](handleEntityNotFound(_0x2f7825,null))[_0x7dbf('0x25')](respondWithResult(_0x2f7825,null))['catch'](handleError(_0x2f7825,null));};exports[_0x7dbf('0x24')]=function(_0x54bbe1,_0x26eba1){if(_0x54bbe1[_0x7dbf('0x4b')]['id']){delete _0x54bbe1[_0x7dbf('0x4b')]['id'];}return db['CannedAnswer'][_0x7dbf('0x4c')]({'where':{'id':_0x54bbe1['params']['id']}})[_0x7dbf('0x25')](handleEntityNotFound(_0x26eba1,null))[_0x7dbf('0x25')](saveUpdates(_0x54bbe1[_0x7dbf('0x4b')],null))[_0x7dbf('0x25')](respondWithResult(_0x26eba1,null))[_0x7dbf('0x4d')](handleError(_0x26eba1,null));};exports[_0x7dbf('0x26')]=function(_0xd0abfc,_0x1f8705){return db[_0x7dbf('0x44')][_0x7dbf('0x4c')]({'where':{'id':_0xd0abfc[_0x7dbf('0x4a')]['id']}})[_0x7dbf('0x25')](handleEntityNotFound(_0x1f8705,null))['then'](removeEntity(_0x1f8705,null))[_0x7dbf('0x4d')](handleError(_0x1f8705,null));};exports[_0x7dbf('0x4e')]=function(_0x2d84f3,_0x2dcb40){var _0x38a057={'key':_0x2d84f3[_0x7dbf('0x4b')][_0x7dbf('0x32')]};if(_0x2d84f3[_0x7dbf('0x4b')][_0x7dbf('0x4f')]){_0x38a057[_0x7dbf('0x4f')]=_0x2d84f3[_0x7dbf('0x4b')][_0x7dbf('0x4f')];}else if(_0x2d84f3[_0x7dbf('0x4b')]['SmsAccountId']){_0x38a057['SmsAccountId']=_0x2d84f3['body']['SmsAccountId'];}else if(_0x2d84f3['body'][_0x7dbf('0x50')]){_0x38a057['OpenchannelAccountId']=_0x2d84f3['body'][_0x7dbf('0x50')];}else if(_0x2d84f3[_0x7dbf('0x4b')][_0x7dbf('0x51')]){_0x38a057[_0x7dbf('0x51')]=_0x2d84f3[_0x7dbf('0x4b')][_0x7dbf('0x51')];}return db[_0x7dbf('0x44')][_0x7dbf('0x4c')]({'where':_0x38a057})['then'](function(_0x18a765){if(_0x18a765){throw new db[(_0x7dbf('0x52'))][(_0x7dbf('0x53'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x7dbf('0x44')]['create'](_0x2d84f3[_0x7dbf('0x4b')]);})[_0x7dbf('0x25')](function(_0x566f4d){var _0x2461c1=_0x2d84f3['user'][_0x7dbf('0x27')]({'plain':!![]});if(!_0x2461c1)throw new Error(_0x7dbf('0x54'));if(_0x2461c1[_0x7dbf('0x55')]===_0x7dbf('0x56')){var _0x3336c3=_0x566f4d[_0x7dbf('0x27')]({'plain':!![]});return db[_0x7dbf('0x57')][_0x7dbf('0x4c')]({'where':{'name':_0x7dbf('0x28'),'userProfileId':_0x2461c1[_0x7dbf('0x58')]},'raw':!![]})['then'](function(_0x414e6f){if(_0x414e6f&&_0x414e6f[_0x7dbf('0x59')]===0x0){return db[_0x7dbf('0x29')]['create']({'name':_0x3336c3[_0x7dbf('0x34')],'resourceId':_0x3336c3['id'],'type':_0x414e6f[_0x7dbf('0x34')],'sectionId':_0x414e6f['id']},{})['then'](function(){return _0x566f4d;});}else{return _0x566f4d;}})[_0x7dbf('0x4d')](function(_0xc9c40){logger[_0x7dbf('0x2b')](_0x7dbf('0x5a'),_0xc9c40);throw _0xc9c40;});}return _0x566f4d;})[_0x7dbf('0x25')](respondWithResult(_0x2dcb40,0xc9))[_0x7dbf('0x4d')](handleError(_0x2dcb40,null));};
\ No newline at end of file
index c35a07d..770bb0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c4f=['util','moment','request-promise','path','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3c4f,0x11d));var _0xf3c4=function(_0x25546a,_0x1c160b){_0x25546a=_0x25546a-0x0;var _0x2c71c5=_0x3c4f[_0x25546a];return _0x2c71c5;};'use strict';var _=require(_0xf3c4('0x0'));var util=require(_0xf3c4('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf3c4('0x2'));var BPromise=require('bluebird');var rp=require(_0xf3c4('0x3'));var fs=require('fs');var path=require(_0xf3c4('0x4'));var rimraf=require('rimraf');var config=require(_0xf3c4('0x5'));var attributes=require(_0xf3c4('0x6'));module[_0xf3c4('0x7')]=function(_0x1096de,_0x4c9bcd){return _0x1096de[_0xf3c4('0x8')](_0xf3c4('0x9'),attributes,{'tableName':_0xf3c4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf3c4('0xb'),'collate':_0xf3c4('0xc')});};
\ No newline at end of file
+var _0x2b2d=['api','moment','bluebird','request-promise','path','./cannedAnswer.attributes','define','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x2b2d,0x142));var _0xd2b2=function(_0x1dbfa3,_0x5717dd){_0x1dbfa3=_0x1dbfa3-0x0;var _0x4f8e54=_0x2b2d[_0x1dbfa3];return _0x4f8e54;};'use strict';var _=require('lodash');var util=require(_0xd2b2('0x0'));var logger=require(_0xd2b2('0x1'))(_0xd2b2('0x2'));var moment=require(_0xd2b2('0x3'));var BPromise=require(_0xd2b2('0x4'));var rp=require(_0xd2b2('0x5'));var fs=require('fs');var path=require(_0xd2b2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd2b2('0x7'));module['exports']=function(_0x3b8505,_0x16599c){return _0x3b8505[_0xd2b2('0x8')]('CannedAnswer',attributes,{'tableName':_0xd2b2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd2b2('0xa'),'collate':_0xd2b2('0xb')});};
\ No newline at end of file
index d66f67e..e522cb5 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(_0x37c1aa,_0x4a0c27){var _0x5c57a6=function(_0xc000b){while(--_0xc000b){_0x37c1aa['push'](_0x37c1aa['shift']());}};_0x5c57a6(++_0x4a0c27);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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(_0x308d39,_0x309f94){var _0xad36e4=function(_0x1adc08){while(--_0x1adc08){_0x308d39['push'](_0x308d39['shift']());}};_0xad36e4(++_0x309f94);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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 edac062..ebb7151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb35=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','index','get','isAuthenticated','show','post','create','delete','/:id','exports','multer','path','connect-timeout','express'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xdb35,0x8c));var _0x5db3=function(_0x59fa1b,_0x13aabe){_0x59fa1b=_0x59fa1b-0x0;var _0xc21e4c=_0xdb35[_0x59fa1b];return _0xc21e4c;};'use strict';var multer=require(_0x5db3('0x0'));var util=require('util');var path=require(_0x5db3('0x1'));var timeout=require(_0x5db3('0x2'));var express=require(_0x5db3('0x3'));var router=express['Router']();var fs_extra=require(_0x5db3('0x4'));var auth=require(_0x5db3('0x5'));var interaction=require(_0x5db3('0x6'));var config=require(_0x5db3('0x7'));var controller=require(_0x5db3('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x5db3('0x9')]);router[_0x5db3('0xa')]('/:id',auth[_0x5db3('0xb')](),controller[_0x5db3('0xc')]);router[_0x5db3('0xd')]('/',auth[_0x5db3('0xb')](),controller[_0x5db3('0xe')]);router['put']('/:id',auth[_0x5db3('0xb')](),controller['update']);router[_0x5db3('0xf')](_0x5db3('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x5db3('0x11')]=router;
\ No newline at end of file
+var _0x1556=['Router','fs-extra','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','index','get','/:id','show','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3819fc,_0x5a2a2d){var _0x46d262=function(_0x1e9896){while(--_0x1e9896){_0x3819fc['push'](_0x3819fc['shift']());}};_0x46d262(++_0x5a2a2d);}(_0x1556,0x105));var _0x6155=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x1556[_0x413feb];return _0x40ee88;};'use strict';var multer=require(_0x6155('0x0'));var util=require(_0x6155('0x1'));var path=require(_0x6155('0x2'));var timeout=require(_0x6155('0x3'));var express=require(_0x6155('0x4'));var router=express[_0x6155('0x5')]();var fs_extra=require(_0x6155('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x6155('0x7'));var config=require(_0x6155('0x8'));var controller=require(_0x6155('0x9'));router['get']('/',auth[_0x6155('0xa')](),controller[_0x6155('0xb')]);router[_0x6155('0xc')](_0x6155('0xd'),auth[_0x6155('0xa')](),controller[_0x6155('0xe')]);router['post']('/',auth[_0x6155('0xa')](),controller['create']);router[_0x6155('0xf')]('/:id',auth[_0x6155('0xa')](),controller[_0x6155('0x10')]);router['delete']('/:id',auth[_0x6155('0xa')](),controller[_0x6155('0x11')]);module[_0x6155('0x12')]=router;
\ No newline at end of file
index b5d7d58..88308fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d76=['DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports'];(function(_0x52a4f6,_0x33d555){var _0x12aa50=function(_0x389708){while(--_0x389708){_0x52a4f6['push'](_0x52a4f6['shift']());}};_0x12aa50(++_0x33d555);}(_0x3d76,0x13c));var _0x63d7=function(_0x1e8f35,_0x3db390){_0x1e8f35=_0x1e8f35-0x0;var _0x446c13=_0x3d76[_0x1e8f35];return _0x446c13;};'use strict';var Sequelize=require(_0x63d7('0x0'));module[_0x63d7('0x1')]={'calldate':{'type':Sequelize[_0x63d7('0x2')],'allowNull':![],'defaultValue':_0x63d7('0x3')},'clid':{'type':Sequelize[_0x63d7('0x4')]},'src':{'type':Sequelize[_0x63d7('0x4')]},'dst':{'type':Sequelize[_0x63d7('0x4')]},'dcontext':{'type':Sequelize[_0x63d7('0x4')]},'channel':{'type':Sequelize[_0x63d7('0x4')]},'dstchannel':{'type':Sequelize[_0x63d7('0x4')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x63d7('0x4')]},'duration':{'type':Sequelize[_0x63d7('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x63d7('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x63d7('0x4')]},'amaflags':{'type':Sequelize[_0x63d7('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x63d7('0x4')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x63d7('0x4')]},'linkedid':{'type':Sequelize[_0x63d7('0x4')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x63d7('0x4')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x66f4=['INTEGER','exports','STRING'];(function(_0xeab745,_0x3c7728){var _0x118296=function(_0x3a3403){while(--_0x3a3403){_0xeab745['push'](_0xeab745['shift']());}};_0x118296(++_0x3c7728);}(_0x66f4,0x7f));var _0x466f=function(_0x7fa17b,_0x375ec5){_0x7fa17b=_0x7fa17b-0x0;var _0x21950f=_0x66f4[_0x7fa17b];return _0x21950f;};'use strict';var Sequelize=require('sequelize');module[_0x466f('0x0')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x466f('0x1')]},'src':{'type':Sequelize[_0x466f('0x1')]},'dst':{'type':Sequelize[_0x466f('0x1')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x466f('0x1')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x466f('0x2')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x466f('0x2')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x466f('0x1')]},'amaflags':{'type':Sequelize[_0x466f('0x2')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x466f('0x1')]},'uniqueid':{'type':Sequelize[_0x466f('0x1')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x466f('0x1')]},'tag':{'type':Sequelize[_0x466f('0x1')]}};
\ No newline at end of file
index 7982e11..1de2bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5292=['rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','length','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','params','fields','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','lodash','squel','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','limit','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','Cdr'];(function(_0xfa634c,_0x414e0e){var _0x73e478=function(_0xac2a51){while(--_0xac2a51){_0xfa634c['push'](_0xfa634c['shift']());}};_0x73e478(++_0x414e0e);}(_0x5292,0xf7));var _0x2529=function(_0x2f50db,_0x29205b){_0x2f50db=_0x2f50db-0x0;var _0x345e51=_0x5292[_0x2f50db];return _0x345e51;};'use strict';var emlformat=require(_0x2529('0x0'));var rimraf=require(_0x2529('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2529('0x2'));var rp=require('request-promise');var moment=require(_0x2529('0x3'));var BPromise=require(_0x2529('0x4'));var Mustache=require(_0x2529('0x5'));var util=require(_0x2529('0x6'));var path=require('path');var sox=require(_0x2529('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2529('0x8'));var squel=require(_0x2529('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2529('0xa'));var toCsv=require(_0x2529('0xb'));var querystring=require('querystring');var Papa=require(_0x2529('0xc'));var Redis=require(_0x2529('0xd'));var authService=require(_0x2529('0xe'));var qs=require(_0x2529('0xf'));var as=require(_0x2529('0x10'));var hardwareService=require(_0x2529('0x11'));var logger=require(_0x2529('0x12'))(_0x2529('0x13'));var utils=require('../../config/utils');var config=require(_0x2529('0x14'));var licenseUtil=require(_0x2529('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe333c9,_0x23bfaf){_0x23bfaf=_0x23bfaf||0xcc;return function(_0x149692){if(_0x149692){return _0xe333c9[_0x2529('0x16')](_0x23bfaf);}return _0xe333c9[_0x2529('0x17')](_0x23bfaf)[_0x2529('0x18')]();};}function respondWithResult(_0x3f3b40,_0x5245cf){_0x5245cf=_0x5245cf||0xc8;return function(_0x101668){if(_0x101668){return _0x3f3b40[_0x2529('0x17')](_0x5245cf)[_0x2529('0x19')](_0x101668);}};}function respondWithFilteredResult(_0x19e4bf,_0x1cc716){return function(_0x2598a1){if(_0x2598a1){var _0x1a1ccc=typeof _0x1cc716[_0x2529('0x1a')]==='undefined'&&typeof _0x1cc716[_0x2529('0x1b')]==='undefined';var _0x337720=_0x2598a1[_0x2529('0x1c')];var _0x89be58=_0x1a1ccc?0x0:_0x1cc716['offset'];var _0x5b4d0d=_0x1a1ccc?_0x2598a1[_0x2529('0x1c')]:_0x1cc716[_0x2529('0x1a')]+_0x1cc716[_0x2529('0x1b')];var _0x37204a;if(_0x5b4d0d>=_0x337720){_0x5b4d0d=_0x337720;_0x37204a=0xc8;}else{_0x37204a=0xce;}_0x19e4bf[_0x2529('0x17')](_0x37204a);return _0x19e4bf['set'](_0x2529('0x1d'),_0x89be58+'-'+_0x5b4d0d+'/'+_0x337720)[_0x2529('0x19')](_0x2598a1);}return null;};}function patchUpdates(_0x1ca15f){return function(_0xeff5a6){try{jsonpatch['apply'](_0xeff5a6,_0x1ca15f,!![]);}catch(_0x1fa873){return BPromise[_0x2529('0x1e')](_0x1fa873);}return _0xeff5a6[_0x2529('0x1f')]();};}function saveUpdates(_0x5b4760,_0x3d5d17){return function(_0x3f57da){if(_0x3f57da){return _0x3f57da[_0x2529('0x20')](_0x5b4760)[_0x2529('0x21')](function(_0x5540e4){return _0x5540e4;});}return null;};}function removeEntity(_0x2736f6,_0x2d0c6d){return function(_0x400a01){if(_0x400a01){return _0x400a01[_0x2529('0x22')]()[_0x2529('0x21')](function(){_0x2736f6[_0x2529('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5539ef,_0x856e50){return function(_0x40f42b){if(!_0x40f42b){_0x5539ef[_0x2529('0x16')](0x194);}return _0x40f42b;};}function handleError(_0x431c40,_0x24418a){_0x24418a=_0x24418a||0x1f4;return function(_0x2a8371){logger[_0x2529('0x23')](_0x2a8371[_0x2529('0x24')]);if(_0x2a8371[_0x2529('0x25')]){delete _0x2a8371[_0x2529('0x25')];}_0x431c40['status'](_0x24418a)[_0x2529('0x26')](_0x2a8371);};}exports[_0x2529('0x27')]=function(_0x4dd0fb,_0x1822ce){var _0x3c46c6={},_0x5bea2d={},_0x17bcbd={'count':0x0,'rows':[]};var _0x1d7e98=_['map'](db[_0x2529('0x28')][_0x2529('0x29')],function(_0x4a18f6){return{'name':_0x4a18f6[_0x2529('0x2a')],'type':_0x4a18f6[_0x2529('0x2b')][_0x2529('0x2c')]};});_0x5bea2d[_0x2529('0x2d')]=_[_0x2529('0x2e')](_0x1d7e98,'name');_0x5bea2d[_0x2529('0x2f')]=_[_0x2529('0x30')](_0x4dd0fb[_0x2529('0x2f')]);_0x5bea2d[_0x2529('0x31')]=_[_0x2529('0x32')](_0x5bea2d[_0x2529('0x2d')],_0x5bea2d[_0x2529('0x2f')]);_0x3c46c6['attributes']=_['intersection'](_0x5bea2d[_0x2529('0x2d')],qs['fields'](_0x4dd0fb[_0x2529('0x2f')]['fields']));_0x3c46c6['attributes']=_0x3c46c6['attributes'][_0x2529('0x33')]?_0x3c46c6[_0x2529('0x34')]:_0x5bea2d[_0x2529('0x2d')];if(!_0x4dd0fb['query'][_0x2529('0x35')]('nolimit')){_0x3c46c6['limit']=qs['limit'](_0x4dd0fb[_0x2529('0x2f')][_0x2529('0x1b')]);_0x3c46c6[_0x2529('0x1a')]=qs[_0x2529('0x1a')](_0x4dd0fb[_0x2529('0x2f')][_0x2529('0x1a')]);}_0x3c46c6[_0x2529('0x36')]=qs[_0x2529('0x37')](_0x4dd0fb[_0x2529('0x2f')][_0x2529('0x37')]);_0x3c46c6[_0x2529('0x38')]=qs[_0x2529('0x31')](_[_0x2529('0x39')](_0x4dd0fb['query'],_0x5bea2d['filters']),_0x1d7e98);if(_0x4dd0fb[_0x2529('0x2f')][_0x2529('0x3a')]){_0x3c46c6['where']=_[_0x2529('0x3b')](_0x3c46c6[_0x2529('0x38')],{'$or':_[_0x2529('0x2e')](_0x1d7e98,function(_0x1b1f81){if(_0x1b1f81[_0x2529('0x2b')]!==_0x2529('0x3c')){var _0x1b8226={};_0x1b8226[_0x1b1f81['name']]={'$like':'%'+_0x4dd0fb[_0x2529('0x2f')][_0x2529('0x3a')]+'%'};return _0x1b8226;}})});}_0x3c46c6=_[_0x2529('0x3b')]({},_0x3c46c6,_0x4dd0fb['options']);var _0x1393b7={'where':_0x3c46c6[_0x2529('0x38')]};return db[_0x2529('0x28')][_0x2529('0x1c')](_0x1393b7)[_0x2529('0x21')](function(_0x33acbf){_0x17bcbd[_0x2529('0x1c')]=_0x33acbf;if(_0x4dd0fb[_0x2529('0x2f')][_0x2529('0x3d')]){_0x3c46c6['include']=[{'all':!![]}];}return db[_0x2529('0x28')][_0x2529('0x3e')](_0x3c46c6);})[_0x2529('0x21')](function(_0x3b4e47){_0x17bcbd[_0x2529('0x3f')]=_0x3b4e47;return _0x17bcbd;})[_0x2529('0x21')](respondWithFilteredResult(_0x1822ce,_0x3c46c6))[_0x2529('0x40')](handleError(_0x1822ce,null));};exports['show']=function(_0x8ced2e,_0x33a13e){var _0x3f76e8={'raw':!![],'where':{'id':_0x8ced2e[_0x2529('0x41')]['id']}},_0x2aaecb={};_0x2aaecb['model']=_[_0x2529('0x30')](db[_0x2529('0x28')][_0x2529('0x29')]);_0x2aaecb[_0x2529('0x2f')]=_[_0x2529('0x30')](_0x8ced2e[_0x2529('0x2f')]);_0x2aaecb['filters']=_['intersection'](_0x2aaecb['model'],_0x2aaecb['query']);_0x3f76e8[_0x2529('0x34')]=_['intersection'](_0x2aaecb[_0x2529('0x2d')],qs[_0x2529('0x42')](_0x8ced2e[_0x2529('0x2f')][_0x2529('0x42')]));_0x3f76e8[_0x2529('0x34')]=_0x3f76e8['attributes'][_0x2529('0x33')]?_0x3f76e8['attributes']:_0x2aaecb[_0x2529('0x2d')];if(_0x8ced2e['query'][_0x2529('0x3d')]){_0x3f76e8['include']=[{'all':!![]}];}_0x3f76e8=_[_0x2529('0x3b')]({},_0x3f76e8,_0x8ced2e[_0x2529('0x43')]);return db['Cdr'][_0x2529('0x44')](_0x3f76e8)['then'](handleEntityNotFound(_0x33a13e,null))[_0x2529('0x21')](respondWithResult(_0x33a13e,null))[_0x2529('0x40')](handleError(_0x33a13e,null));};exports[_0x2529('0x45')]=function(_0x3c6d79,_0xdc4bef){return db[_0x2529('0x28')][_0x2529('0x45')](_0x3c6d79[_0x2529('0x46')],{})[_0x2529('0x21')](respondWithResult(_0xdc4bef,0xc9))['catch'](handleError(_0xdc4bef,null));};exports['update']=function(_0x5e72d1,_0x37a23a){if(_0x5e72d1[_0x2529('0x46')]['id']){delete _0x5e72d1[_0x2529('0x46')]['id'];}return db['Cdr']['find']({'where':{'id':_0x5e72d1[_0x2529('0x41')]['id']}})['then'](handleEntityNotFound(_0x37a23a,null))[_0x2529('0x21')](saveUpdates(_0x5e72d1[_0x2529('0x46')],null))[_0x2529('0x21')](respondWithResult(_0x37a23a,null))[_0x2529('0x40')](handleError(_0x37a23a,null));};exports[_0x2529('0x22')]=function(_0x196ee8,_0x4583ba){return db[_0x2529('0x28')]['find']({'where':{'id':_0x196ee8['params']['id']}})[_0x2529('0x21')](handleEntityNotFound(_0x4583ba,null))[_0x2529('0x21')](removeEntity(_0x4583ba,null))[_0x2529('0x40')](handleError(_0x4583ba,null));};exports[_0x2529('0x47')]=function(_0x1f76d3,_0x3ac799){return db[_0x2529('0x28')][_0x2529('0x47')]()[_0x2529('0x21')](respondWithResult(_0x3ac799,null))[_0x2529('0x40')](handleError(_0x3ac799,null));};
\ No newline at end of file
+var _0x8085=['name','send','index','map','Cdr','fieldName','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','length','catch','body','find','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack'];(function(_0x171d3a,_0x161588){var _0xbd17cf=function(_0x331e4e){while(--_0x331e4e){_0x171d3a['push'](_0x171d3a['shift']());}};_0xbd17cf(++_0x161588);}(_0x8085,0x71));var _0x5808=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x8085[_0x2064e5];return _0x21a233;};'use strict';var emlformat=require(_0x5808('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5808('0x1'));var rp=require(_0x5808('0x2'));var moment=require(_0x5808('0x3'));var BPromise=require(_0x5808('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5808('0x5'));var sox=require(_0x5808('0x6'));var csv=require('to-csv');var ejs=require(_0x5808('0x7'));var fs=require('fs');var fs_extra=require(_0x5808('0x8'));var _=require(_0x5808('0x9'));var squel=require(_0x5808('0xa'));var crypto=require(_0x5808('0xb'));var jsforce=require(_0x5808('0xc'));var deskjs=require(_0x5808('0xd'));var toCsv=require(_0x5808('0xe'));var querystring=require(_0x5808('0xf'));var Papa=require(_0x5808('0x10'));var Redis=require(_0x5808('0x11'));var authService=require(_0x5808('0x12'));var qs=require(_0x5808('0x13'));var as=require(_0x5808('0x14'));var hardwareService=require(_0x5808('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x5808('0x16'));var config=require(_0x5808('0x17'));var licenseUtil=require(_0x5808('0x18'));var db=require(_0x5808('0x19'))['db'];function respondWithStatusCode(_0xab4f46,_0x19be03){_0x19be03=_0x19be03||0xcc;return function(_0x10572d){if(_0x10572d){return _0xab4f46['sendStatus'](_0x19be03);}return _0xab4f46['status'](_0x19be03)[_0x5808('0x1a')]();};}function respondWithResult(_0x19252b,_0x3582d6){_0x3582d6=_0x3582d6||0xc8;return function(_0x3e7c09){if(_0x3e7c09){return _0x19252b[_0x5808('0x1b')](_0x3582d6)[_0x5808('0x1c')](_0x3e7c09);}};}function respondWithFilteredResult(_0x299b22,_0x2af9da){return function(_0x1dda8d){if(_0x1dda8d){var _0x46dd8a=typeof _0x2af9da[_0x5808('0x1d')]==='undefined'&&typeof _0x2af9da[_0x5808('0x1e')]==='undefined';var _0x406e65=_0x1dda8d[_0x5808('0x1f')];var _0x3bf0ee=_0x46dd8a?0x0:_0x2af9da['offset'];var _0x9e58d4=_0x46dd8a?_0x1dda8d[_0x5808('0x1f')]:_0x2af9da['offset']+_0x2af9da['limit'];var _0x3c7c02;if(_0x9e58d4>=_0x406e65){_0x9e58d4=_0x406e65;_0x3c7c02=0xc8;}else{_0x3c7c02=0xce;}_0x299b22['status'](_0x3c7c02);return _0x299b22[_0x5808('0x20')](_0x5808('0x21'),_0x3bf0ee+'-'+_0x9e58d4+'/'+_0x406e65)[_0x5808('0x1c')](_0x1dda8d);}return null;};}function patchUpdates(_0xaac16a){return function(_0x578d70){try{jsonpatch['apply'](_0x578d70,_0xaac16a,!![]);}catch(_0xe82ad0){return BPromise[_0x5808('0x22')](_0xe82ad0);}return _0x578d70[_0x5808('0x23')]();};}function saveUpdates(_0x39bca3,_0x409337){return function(_0x33b583){if(_0x33b583){return _0x33b583[_0x5808('0x24')](_0x39bca3)[_0x5808('0x25')](function(_0x3a575e){return _0x3a575e;});}return null;};}function removeEntity(_0x4e1dfc,_0x5b5175){return function(_0x130590){if(_0x130590){return _0x130590[_0x5808('0x26')]()['then'](function(){_0x4e1dfc['status'](0xcc)[_0x5808('0x1a')]();});}};}function handleEntityNotFound(_0x467500,_0x1dddbd){return function(_0x4a4d05){if(!_0x4a4d05){_0x467500['sendStatus'](0x194);}return _0x4a4d05;};}function handleError(_0x24ee0f,_0x2c2cb5){_0x2c2cb5=_0x2c2cb5||0x1f4;return function(_0x27c991){logger[_0x5808('0x27')](_0x27c991[_0x5808('0x28')]);if(_0x27c991['name']){delete _0x27c991[_0x5808('0x29')];}_0x24ee0f[_0x5808('0x1b')](_0x2c2cb5)[_0x5808('0x2a')](_0x27c991);};}exports[_0x5808('0x2b')]=function(_0x28c1eb,_0x19ac63){var _0x1117ac={},_0x4ad6d8={},_0x560e83={'count':0x0,'rows':[]};var _0x4f6342=_[_0x5808('0x2c')](db[_0x5808('0x2d')]['rawAttributes'],function(_0x3faa07){return{'name':_0x3faa07[_0x5808('0x2e')],'type':_0x3faa07[_0x5808('0x2f')][_0x5808('0x30')]};});_0x4ad6d8[_0x5808('0x31')]=_[_0x5808('0x2c')](_0x4f6342,'name');_0x4ad6d8[_0x5808('0x32')]=_[_0x5808('0x33')](_0x28c1eb[_0x5808('0x32')]);_0x4ad6d8['filters']=_['intersection'](_0x4ad6d8[_0x5808('0x31')],_0x4ad6d8['query']);_0x1117ac[_0x5808('0x34')]=_[_0x5808('0x35')](_0x4ad6d8['model'],qs[_0x5808('0x36')](_0x28c1eb[_0x5808('0x32')]['fields']));_0x1117ac['attributes']=_0x1117ac[_0x5808('0x34')]['length']?_0x1117ac[_0x5808('0x34')]:_0x4ad6d8['model'];if(!_0x28c1eb[_0x5808('0x32')][_0x5808('0x37')](_0x5808('0x38'))){_0x1117ac['limit']=qs[_0x5808('0x1e')](_0x28c1eb['query'][_0x5808('0x1e')]);_0x1117ac['offset']=qs['offset'](_0x28c1eb[_0x5808('0x32')][_0x5808('0x1d')]);}_0x1117ac[_0x5808('0x39')]=qs['sort'](_0x28c1eb['query'][_0x5808('0x3a')]);_0x1117ac[_0x5808('0x3b')]=qs['filters'](_[_0x5808('0x3c')](_0x28c1eb[_0x5808('0x32')],_0x4ad6d8[_0x5808('0x3d')]),_0x4f6342);if(_0x28c1eb['query'][_0x5808('0x3e')]){_0x1117ac[_0x5808('0x3b')]=_[_0x5808('0x3f')](_0x1117ac['where'],{'$or':_[_0x5808('0x2c')](_0x4f6342,function(_0x12a045){if(_0x12a045['type']!=='VIRTUAL'){var _0x477278={};_0x477278[_0x12a045['name']]={'$like':'%'+_0x28c1eb[_0x5808('0x32')][_0x5808('0x3e')]+'%'};return _0x477278;}})});}_0x1117ac=_[_0x5808('0x3f')]({},_0x1117ac,_0x28c1eb[_0x5808('0x40')]);var _0x21fc36={'where':_0x1117ac['where']};return db['Cdr'][_0x5808('0x1f')](_0x21fc36)[_0x5808('0x25')](function(_0x402b4e){_0x560e83['count']=_0x402b4e;if(_0x28c1eb[_0x5808('0x32')][_0x5808('0x41')]){_0x1117ac[_0x5808('0x42')]=[{'all':!![]}];}return db[_0x5808('0x2d')][_0x5808('0x43')](_0x1117ac);})['then'](function(_0x1130c8){_0x560e83[_0x5808('0x44')]=_0x1130c8;return _0x560e83;})[_0x5808('0x25')](respondWithFilteredResult(_0x19ac63,_0x1117ac))['catch'](handleError(_0x19ac63,null));};exports[_0x5808('0x45')]=function(_0x287e07,_0xc62608){var _0x5e1230={'raw':!![],'where':{'id':_0x287e07[_0x5808('0x46')]['id']}},_0x5dcb50={};_0x5dcb50[_0x5808('0x31')]=_[_0x5808('0x33')](db[_0x5808('0x2d')][_0x5808('0x47')]);_0x5dcb50[_0x5808('0x32')]=_[_0x5808('0x33')](_0x287e07[_0x5808('0x32')]);_0x5dcb50[_0x5808('0x3d')]=_[_0x5808('0x35')](_0x5dcb50[_0x5808('0x31')],_0x5dcb50[_0x5808('0x32')]);_0x5e1230[_0x5808('0x34')]=_['intersection'](_0x5dcb50['model'],qs[_0x5808('0x36')](_0x287e07[_0x5808('0x32')][_0x5808('0x36')]));_0x5e1230[_0x5808('0x34')]=_0x5e1230[_0x5808('0x34')][_0x5808('0x48')]?_0x5e1230[_0x5808('0x34')]:_0x5dcb50['model'];if(_0x287e07[_0x5808('0x32')]['includeAll']){_0x5e1230[_0x5808('0x42')]=[{'all':!![]}];}_0x5e1230=_['merge']({},_0x5e1230,_0x287e07[_0x5808('0x40')]);return db['Cdr']['find'](_0x5e1230)['then'](handleEntityNotFound(_0xc62608,null))[_0x5808('0x25')](respondWithResult(_0xc62608,null))[_0x5808('0x49')](handleError(_0xc62608,null));};exports['create']=function(_0x46c8ed,_0x4568d0){return db[_0x5808('0x2d')]['create'](_0x46c8ed[_0x5808('0x4a')],{})['then'](respondWithResult(_0x4568d0,0xc9))[_0x5808('0x49')](handleError(_0x4568d0,null));};exports[_0x5808('0x24')]=function(_0x13fe11,_0x5cc977){if(_0x13fe11[_0x5808('0x4a')]['id']){delete _0x13fe11[_0x5808('0x4a')]['id'];}return db[_0x5808('0x2d')][_0x5808('0x4b')]({'where':{'id':_0x13fe11['params']['id']}})[_0x5808('0x25')](handleEntityNotFound(_0x5cc977,null))[_0x5808('0x25')](saveUpdates(_0x13fe11[_0x5808('0x4a')],null))[_0x5808('0x25')](respondWithResult(_0x5cc977,null))[_0x5808('0x49')](handleError(_0x5cc977,null));};exports[_0x5808('0x26')]=function(_0x5572f3,_0x23d2fe){return db[_0x5808('0x2d')][_0x5808('0x4b')]({'where':{'id':_0x5572f3[_0x5808('0x46')]['id']}})[_0x5808('0x25')](handleEntityNotFound(_0x23d2fe,null))['then'](removeEntity(_0x23d2fe,null))[_0x5808('0x49')](handleError(_0x23d2fe,null));};exports[_0x5808('0x4c')]=function(_0xc2c5d7,_0x44ff0a){return db[_0x5808('0x2d')][_0x5808('0x4c')]()['then'](respondWithResult(_0x44ff0a,null))[_0x5808('0x49')](handleError(_0x44ff0a,null));};
\ No newline at end of file
index 058ea46..68bebe9 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(_0x4a8808,_0x35bd1a){var _0x36d174=function(_0xe58565){while(--_0xe58565){_0x4a8808['push'](_0x4a8808['shift']());}};_0x36d174(++_0x35bd1a);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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(_0x292263,_0x389471){var _0xe8a919=function(_0x14ffeb){while(--_0x14ffeb){_0x292263['push'](_0x292263['shift']());}};_0xe8a919(++_0x389471);}(_0x7a54,0x106));var _0x47a5=function(_0x395e5b,_0x21b27a){_0x395e5b=_0x395e5b-0x0;var _0x528496=_0x7a54[_0x395e5b];return _0x528496;};'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 2635a5e..91634ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5604=['error','code','Cdr,\x20%s,\x20%s','message','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','Cdr,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3057fa,_0x1d437f){var _0xcfbbe3=function(_0x2cc5e3){while(--_0x2cc5e3){_0x3057fa['push'](_0x3057fa['shift']());}};_0xcfbbe3(++_0x1d437f);}(_0x5604,0xd6));var _0x4560=function(_0x41ee16,_0xfa94c3){_0x41ee16=_0x41ee16-0x0;var _0x1f60de=_0x5604[_0x41ee16];return _0x1f60de;};'use strict';var _=require('lodash');var util=require(_0x4560('0x0'));var moment=require(_0x4560('0x1'));var BPromise=require(_0x4560('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4560('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4560('0x4'));var logger=require(_0x4560('0x5'))(_0x4560('0x6'));var config=require(_0x4560('0x7'));var jayson=require(_0x4560('0x8'));var client=jayson[_0x4560('0x9')][_0x4560('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x49c159,_0x46cf49,_0x47d7c4){return new BPromise(function(_0x446aad,_0x5401df){return client[_0x4560('0xb')](_0x49c159,_0x47d7c4)[_0x4560('0xc')](function(_0x5004f4){logger[_0x4560('0xd')]('Cdr,\x20%s,\x20%s',_0x46cf49,_0x4560('0xe'));logger['debug'](_0x4560('0xf'),_0x46cf49,_0x4560('0xe'),JSON[_0x4560('0x10')](_0x5004f4));if(_0x5004f4[_0x4560('0x11')]){if(_0x5004f4[_0x4560('0x11')][_0x4560('0x12')]===0x1f4){logger[_0x4560('0x11')](_0x4560('0x13'),_0x46cf49,_0x5004f4['error'][_0x4560('0x14')]);return _0x5401df(_0x5004f4[_0x4560('0x11')][_0x4560('0x14')]);}logger['error'](_0x4560('0x13'),_0x46cf49,_0x5004f4[_0x4560('0x11')][_0x4560('0x14')]);return _0x446aad(_0x5004f4[_0x4560('0x11')][_0x4560('0x14')]);}else{logger[_0x4560('0xd')]('Cdr,\x20%s,\x20%s',_0x46cf49,_0x4560('0xe'));_0x446aad(_0x5004f4['result'][_0x4560('0x14')]);}})['catch'](function(_0x44f911){logger['error'](_0x4560('0x13'),_0x46cf49,_0x44f911);_0x5401df(_0x44f911);});});}
\ No newline at end of file
+var _0x5061=['request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','error','code','message','info','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Cdr,\x20%s,\x20%s'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x5061,0x151));var _0x1506=function(_0x2555d0,_0x4150a6){_0x2555d0=_0x2555d0-0x0;var _0x3bb486=_0x5061[_0x2555d0];return _0x3bb486;};'use strict';var _=require(_0x1506('0x0'));var util=require(_0x1506('0x1'));var moment=require(_0x1506('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1506('0x3'));var db=require(_0x1506('0x4'))['db'];var utils=require(_0x1506('0x5'));var logger=require(_0x1506('0x6'))(_0x1506('0x7'));var config=require(_0x1506('0x8'));var jayson=require(_0x1506('0x9'));var client=jayson[_0x1506('0xa')][_0x1506('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5636e2,_0x37a103,_0x4b570c){return new BPromise(function(_0x51fafa,_0x3c9ed1){return client[_0x1506('0xc')](_0x5636e2,_0x4b570c)[_0x1506('0xd')](function(_0x2acf89){logger['info'](_0x1506('0xe'),_0x37a103,_0x1506('0xf'));logger[_0x1506('0x10')](_0x1506('0x11'),_0x37a103,'request\x20sent',JSON['stringify'](_0x2acf89));if(_0x2acf89[_0x1506('0x12')]){if(_0x2acf89[_0x1506('0x12')][_0x1506('0x13')]===0x1f4){logger[_0x1506('0x12')]('Cdr,\x20%s,\x20%s',_0x37a103,_0x2acf89[_0x1506('0x12')][_0x1506('0x14')]);return _0x3c9ed1(_0x2acf89[_0x1506('0x12')][_0x1506('0x14')]);}logger[_0x1506('0x12')](_0x1506('0xe'),_0x37a103,_0x2acf89[_0x1506('0x12')][_0x1506('0x14')]);return _0x51fafa(_0x2acf89['error'][_0x1506('0x14')]);}else{logger[_0x1506('0x15')](_0x1506('0xe'),_0x37a103,_0x1506('0xf'));_0x51fafa(_0x2acf89['result'][_0x1506('0x14')]);}})['catch'](function(_0x233ff5){logger[_0x1506('0x12')](_0x1506('0xe'),_0x37a103,_0x233ff5);_0x3c9ed1(_0x233ff5);});});}
\ No newline at end of file
index 96abf55..f8c10bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x60286b,_0x3247c1){var _0x5dff69=function(_0x4ecfcf){while(--_0x4ecfcf){_0x60286b['push'](_0x60286b['shift']());}};_0x5dff69(++_0x3247c1);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _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(_0xd1c39b,_0x16f0c6){var _0x58f5bc=function(_0x412cf3){while(--_0x412cf3){_0xd1c39b['push'](_0xd1c39b['shift']());}};_0x58f5bc(++_0x16f0c6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 5978549..b753ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7920=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x137b94,_0x250a96){var _0x4e60a4=function(_0x437753){while(--_0x437753){_0x137b94['push'](_0x137b94['shift']());}};_0x4e60a4(++_0x250a96);}(_0x7920,0x15e));var _0x0792=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x7920[_0x9df060];return _0x338dfe;};'use strict';var Sequelize=require(_0x0792('0x0'));module[_0x0792('0x1')]={'priority':{'type':Sequelize[_0x0792('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x0792('0x3')],'allowNull':![],'defaultValue':_0x0792('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x0792('0x3')]},'interval':{'type':Sequelize[_0x0792('0x3')],'defaultValue':_0x0792('0x5')}};
\ No newline at end of file
+var _0xdbaa=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x87239,_0x38c793){var _0x53af1e=function(_0x11eb5f){while(--_0x11eb5f){_0x87239['push'](_0x87239['shift']());}};_0x53af1e(++_0x38c793);}(_0xdbaa,0xab));var _0xadba=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xdbaa[_0x87b0ff];return _0x3bc0b2;};'use strict';var Sequelize=require(_0xadba('0x0'));module[_0xadba('0x1')]={'priority':{'type':Sequelize[_0xadba('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xadba('0x3')],'allowNull':![],'defaultValue':_0xadba('0x4')},'appdata':{'type':Sequelize[_0xadba('0x5')]()},'description':{'type':Sequelize[_0xadba('0x3')]},'interval':{'type':Sequelize[_0xadba('0x3')],'defaultValue':_0xadba('0x6')}};
\ No newline at end of file
index 933600c..ec638db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd31=['include','options','catch','body','ChatApplication','find','destroy','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','count','limit','set','Content-Range','reject','update','then','error','name','send','show','params','model','keys','rawAttributes','query','filters','attributes','intersection','fields','includeAll'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xcd31,0x15d));var _0x1cd3=function(_0x12107b,_0x24503c){_0x12107b=_0x12107b-0x0;var _0x277078=_0xcd31[_0x12107b];return _0x277078;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cd3('0x0'));var zipdir=require(_0x1cd3('0x1'));var jsonpatch=require(_0x1cd3('0x2'));var rp=require('request-promise');var moment=require(_0x1cd3('0x3'));var BPromise=require(_0x1cd3('0x4'));var Mustache=require(_0x1cd3('0x5'));var util=require(_0x1cd3('0x6'));var path=require(_0x1cd3('0x7'));var sox=require(_0x1cd3('0x8'));var csv=require('to-csv');var ejs=require(_0x1cd3('0x9'));var fs=require('fs');var fs_extra=require(_0x1cd3('0xa'));var _=require(_0x1cd3('0xb'));var squel=require('squel');var crypto=require(_0x1cd3('0xc'));var jsforce=require(_0x1cd3('0xd'));var deskjs=require(_0x1cd3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1cd3('0xf'));var Papa=require(_0x1cd3('0x10'));var Redis=require(_0x1cd3('0x11'));var authService=require(_0x1cd3('0x12'));var qs=require(_0x1cd3('0x13'));var as=require(_0x1cd3('0x14'));var hardwareService=require(_0x1cd3('0x15'));var logger=require('../../config/logger')(_0x1cd3('0x16'));var utils=require(_0x1cd3('0x17'));var config=require(_0x1cd3('0x18'));var licenseUtil=require(_0x1cd3('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfe288e,_0x4c9c6d){_0x4c9c6d=_0x4c9c6d||0xcc;return function(_0x41016f){if(_0x41016f){return _0xfe288e[_0x1cd3('0x1a')](_0x4c9c6d);}return _0xfe288e[_0x1cd3('0x1b')](_0x4c9c6d)['end']();};}function respondWithResult(_0x5b885f,_0x1a874c){_0x1a874c=_0x1a874c||0xc8;return function(_0x1def57){if(_0x1def57){return _0x5b885f[_0x1cd3('0x1b')](_0x1a874c)['json'](_0x1def57);}};}function respondWithFilteredResult(_0x2b28cf,_0x40cbbf){return function(_0x5a2b84){if(_0x5a2b84){var _0x418da3=typeof _0x40cbbf['offset']==='undefined'&&typeof _0x40cbbf['limit']==='undefined';var _0x5ca15c=_0x5a2b84['count'];var _0x14c491=_0x418da3?0x0:_0x40cbbf[_0x1cd3('0x1c')];var _0xf82a46=_0x418da3?_0x5a2b84[_0x1cd3('0x1d')]:_0x40cbbf[_0x1cd3('0x1c')]+_0x40cbbf[_0x1cd3('0x1e')];var _0x35870b;if(_0xf82a46>=_0x5ca15c){_0xf82a46=_0x5ca15c;_0x35870b=0xc8;}else{_0x35870b=0xce;}_0x2b28cf[_0x1cd3('0x1b')](_0x35870b);return _0x2b28cf[_0x1cd3('0x1f')](_0x1cd3('0x20'),_0x14c491+'-'+_0xf82a46+'/'+_0x5ca15c)['json'](_0x5a2b84);}return null;};}function patchUpdates(_0x33fc72){return function(_0x2368b3){try{jsonpatch['apply'](_0x2368b3,_0x33fc72,!![]);}catch(_0x26b59a){return BPromise[_0x1cd3('0x21')](_0x26b59a);}return _0x2368b3['save']();};}function saveUpdates(_0x20cda5,_0x159d22){return function(_0x330741){if(_0x330741){return _0x330741[_0x1cd3('0x22')](_0x20cda5)['then'](function(_0x4f6920){return _0x4f6920;});}return null;};}function removeEntity(_0x29ff8c,_0x1a6dad){return function(_0x49c7b1){if(_0x49c7b1){return _0x49c7b1['destroy']()[_0x1cd3('0x23')](function(){_0x29ff8c[_0x1cd3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55aa9c,_0x34b15f){return function(_0x1589fa){if(!_0x1589fa){_0x55aa9c['sendStatus'](0x194);}return _0x1589fa;};}function handleError(_0x5635f9,_0x1c86f6){_0x1c86f6=_0x1c86f6||0x1f4;return function(_0xc311a9){logger[_0x1cd3('0x24')](_0xc311a9['stack']);if(_0xc311a9['name']){delete _0xc311a9[_0x1cd3('0x25')];}_0x5635f9['status'](_0x1c86f6)[_0x1cd3('0x26')](_0xc311a9);};}exports[_0x1cd3('0x27')]=function(_0x268501,_0x4b7c0b){var _0xae9d0c={'raw':!![],'where':{'id':_0x268501[_0x1cd3('0x28')]['id']}},_0x53979a={};_0x53979a[_0x1cd3('0x29')]=_[_0x1cd3('0x2a')](db['ChatApplication'][_0x1cd3('0x2b')]);_0x53979a[_0x1cd3('0x2c')]=_[_0x1cd3('0x2a')](_0x268501[_0x1cd3('0x2c')]);_0x53979a[_0x1cd3('0x2d')]=_['intersection'](_0x53979a[_0x1cd3('0x29')],_0x53979a[_0x1cd3('0x2c')]);_0xae9d0c[_0x1cd3('0x2e')]=_[_0x1cd3('0x2f')](_0x53979a[_0x1cd3('0x29')],qs[_0x1cd3('0x30')](_0x268501['query'][_0x1cd3('0x30')]));_0xae9d0c[_0x1cd3('0x2e')]=_0xae9d0c['attributes']['length']?_0xae9d0c[_0x1cd3('0x2e')]:_0x53979a[_0x1cd3('0x29')];if(_0x268501[_0x1cd3('0x2c')][_0x1cd3('0x31')]){_0xae9d0c[_0x1cd3('0x32')]=[{'all':!![]}];}_0xae9d0c=_['merge']({},_0xae9d0c,_0x268501[_0x1cd3('0x33')]);return db['ChatApplication']['find'](_0xae9d0c)[_0x1cd3('0x23')](handleEntityNotFound(_0x4b7c0b,null))[_0x1cd3('0x23')](respondWithResult(_0x4b7c0b,null))[_0x1cd3('0x34')](handleError(_0x4b7c0b,null));};exports[_0x1cd3('0x22')]=function(_0x5f30da,_0xd22c1f){if(_0x5f30da['body']['id']){delete _0x5f30da[_0x1cd3('0x35')]['id'];}return db[_0x1cd3('0x36')][_0x1cd3('0x37')]({'where':{'id':_0x5f30da[_0x1cd3('0x28')]['id']}})['then'](handleEntityNotFound(_0xd22c1f,null))['then'](saveUpdates(_0x5f30da[_0x1cd3('0x35')],null))['then'](respondWithResult(_0xd22c1f,null))[_0x1cd3('0x34')](handleError(_0xd22c1f,null));};exports[_0x1cd3('0x38')]=function(_0x2e54a5,_0x346379){return db[_0x1cd3('0x36')]['find']({'where':{'id':_0x2e54a5['params']['id']}})['then'](handleEntityNotFound(_0x346379,null))['then'](removeEntity(_0x346379,null))[_0x1cd3('0x34')](handleError(_0x346379,null));};
\ No newline at end of file
+var _0x78f0=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','error','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring'];(function(_0x90f4e5,_0x446d1e){var _0x4378d1=function(_0x24d1ed){while(--_0x24d1ed){_0x90f4e5['push'](_0x90f4e5['shift']());}};_0x4378d1(++_0x446d1e);}(_0x78f0,0x15d));var _0x078f=function(_0x13e922,_0x1fecb9){_0x13e922=_0x13e922-0x0;var _0x2c4846=_0x78f0[_0x13e922];return _0x2c4846;};'use strict';var emlformat=require(_0x078f('0x0'));var rimraf=require(_0x078f('0x1'));var zipdir=require(_0x078f('0x2'));var jsonpatch=require(_0x078f('0x3'));var rp=require(_0x078f('0x4'));var moment=require(_0x078f('0x5'));var BPromise=require(_0x078f('0x6'));var Mustache=require(_0x078f('0x7'));var util=require('util');var path=require(_0x078f('0x8'));var sox=require(_0x078f('0x9'));var csv=require(_0x078f('0xa'));var ejs=require(_0x078f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x078f('0xc'));var squel=require(_0x078f('0xd'));var crypto=require('crypto');var jsforce=require(_0x078f('0xe'));var deskjs=require(_0x078f('0xf'));var toCsv=require(_0x078f('0xa'));var querystring=require(_0x078f('0x10'));var Papa=require(_0x078f('0x11'));var Redis=require(_0x078f('0x12'));var authService=require(_0x078f('0x13'));var qs=require(_0x078f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x078f('0x15'));var logger=require(_0x078f('0x16'))('api');var utils=require(_0x078f('0x17'));var config=require(_0x078f('0x18'));var licenseUtil=require(_0x078f('0x19'));var db=require(_0x078f('0x1a'))['db'];function respondWithStatusCode(_0x5b6b5a,_0x5de876){_0x5de876=_0x5de876||0xcc;return function(_0xe740c0){if(_0xe740c0){return _0x5b6b5a[_0x078f('0x1b')](_0x5de876);}return _0x5b6b5a[_0x078f('0x1c')](_0x5de876)[_0x078f('0x1d')]();};}function respondWithResult(_0x5df646,_0x36670d){_0x36670d=_0x36670d||0xc8;return function(_0x2d29f8){if(_0x2d29f8){return _0x5df646['status'](_0x36670d)[_0x078f('0x1e')](_0x2d29f8);}};}function respondWithFilteredResult(_0x1a44f1,_0x21fc72){return function(_0x363dfd){if(_0x363dfd){var _0x247de9=typeof _0x21fc72[_0x078f('0x1f')]==='undefined'&&typeof _0x21fc72['limit']===_0x078f('0x20');var _0x1e32c0=_0x363dfd[_0x078f('0x21')];var _0x19a182=_0x247de9?0x0:_0x21fc72[_0x078f('0x1f')];var _0x25bb2d=_0x247de9?_0x363dfd[_0x078f('0x21')]:_0x21fc72[_0x078f('0x1f')]+_0x21fc72[_0x078f('0x22')];var _0x276442;if(_0x25bb2d>=_0x1e32c0){_0x25bb2d=_0x1e32c0;_0x276442=0xc8;}else{_0x276442=0xce;}_0x1a44f1[_0x078f('0x1c')](_0x276442);return _0x1a44f1[_0x078f('0x23')]('Content-Range',_0x19a182+'-'+_0x25bb2d+'/'+_0x1e32c0)[_0x078f('0x1e')](_0x363dfd);}return null;};}function patchUpdates(_0x52c74f){return function(_0x567d26){try{jsonpatch[_0x078f('0x24')](_0x567d26,_0x52c74f,!![]);}catch(_0x3c70c2){return BPromise[_0x078f('0x25')](_0x3c70c2);}return _0x567d26[_0x078f('0x26')]();};}function saveUpdates(_0x712d52,_0x2c6db4){return function(_0x104eeb){if(_0x104eeb){return _0x104eeb[_0x078f('0x27')](_0x712d52)[_0x078f('0x28')](function(_0x4b8d12){return _0x4b8d12;});}return null;};}function removeEntity(_0x1f6b98,_0x14ad5c){return function(_0x363cce){if(_0x363cce){return _0x363cce['destroy']()['then'](function(){_0x1f6b98[_0x078f('0x1c')](0xcc)[_0x078f('0x1d')]();});}};}function handleEntityNotFound(_0x3d9d08,_0x240fb4){return function(_0x25fe4f){if(!_0x25fe4f){_0x3d9d08[_0x078f('0x1b')](0x194);}return _0x25fe4f;};}function handleError(_0x186fe3,_0x4e738b){_0x4e738b=_0x4e738b||0x1f4;return function(_0x1f6596){logger[_0x078f('0x29')](_0x1f6596['stack']);if(_0x1f6596[_0x078f('0x2a')]){delete _0x1f6596[_0x078f('0x2a')];}_0x186fe3[_0x078f('0x1c')](_0x4e738b)[_0x078f('0x2b')](_0x1f6596);};}exports[_0x078f('0x2c')]=function(_0xd57307,_0x1a8530){var _0xe41e2e={'raw':!![],'where':{'id':_0xd57307[_0x078f('0x2d')]['id']}},_0x1f0ad6={};_0x1f0ad6[_0x078f('0x2e')]=_[_0x078f('0x2f')](db[_0x078f('0x30')][_0x078f('0x31')]);_0x1f0ad6[_0x078f('0x32')]=_[_0x078f('0x2f')](_0xd57307[_0x078f('0x32')]);_0x1f0ad6[_0x078f('0x33')]=_['intersection'](_0x1f0ad6[_0x078f('0x2e')],_0x1f0ad6['query']);_0xe41e2e['attributes']=_[_0x078f('0x34')](_0x1f0ad6[_0x078f('0x2e')],qs[_0x078f('0x35')](_0xd57307[_0x078f('0x32')]['fields']));_0xe41e2e[_0x078f('0x36')]=_0xe41e2e[_0x078f('0x36')][_0x078f('0x37')]?_0xe41e2e[_0x078f('0x36')]:_0x1f0ad6[_0x078f('0x2e')];if(_0xd57307['query'][_0x078f('0x38')]){_0xe41e2e[_0x078f('0x39')]=[{'all':!![]}];}_0xe41e2e=_['merge']({},_0xe41e2e,_0xd57307['options']);return db[_0x078f('0x30')][_0x078f('0x3a')](_0xe41e2e)['then'](handleEntityNotFound(_0x1a8530,null))[_0x078f('0x28')](respondWithResult(_0x1a8530,null))[_0x078f('0x3b')](handleError(_0x1a8530,null));};exports[_0x078f('0x27')]=function(_0x5165e4,_0x2dfad1){if(_0x5165e4[_0x078f('0x3c')]['id']){delete _0x5165e4[_0x078f('0x3c')]['id'];}return db[_0x078f('0x30')][_0x078f('0x3a')]({'where':{'id':_0x5165e4[_0x078f('0x2d')]['id']}})['then'](handleEntityNotFound(_0x2dfad1,null))[_0x078f('0x28')](saveUpdates(_0x5165e4[_0x078f('0x3c')],null))[_0x078f('0x28')](respondWithResult(_0x2dfad1,null))[_0x078f('0x3b')](handleError(_0x2dfad1,null));};exports['destroy']=function(_0x474a46,_0x2b1e0f){return db[_0x078f('0x30')][_0x078f('0x3a')]({'where':{'id':_0x474a46[_0x078f('0x2d')]['id']}})[_0x078f('0x28')](handleEntityNotFound(_0x2b1e0f,null))[_0x078f('0x28')](removeEntity(_0x2b1e0f,null))[_0x078f('0x3b')](handleError(_0x2b1e0f,null));};
\ No newline at end of file
index 446fc2d..58994a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a55=['rimraf','../../config/environment','./chatApplication.attributes','exports','define','chat_applications','utf8mb4_unicode_ci','lodash','util','api','bluebird','request-promise','path'];(function(_0x1e3932,_0x28cfdb){var _0x4b713a=function(_0x781f4e){while(--_0x781f4e){_0x1e3932['push'](_0x1e3932['shift']());}};_0x4b713a(++_0x28cfdb);}(_0x7a55,0x173));var _0x57a5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7a55[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x57a5('0x0'));var util=require(_0x57a5('0x1'));var logger=require('../../config/logger')(_0x57a5('0x2'));var moment=require('moment');var BPromise=require(_0x57a5('0x3'));var rp=require(_0x57a5('0x4'));var fs=require('fs');var path=require(_0x57a5('0x5'));var rimraf=require(_0x57a5('0x6'));var config=require(_0x57a5('0x7'));var attributes=require(_0x57a5('0x8'));module[_0x57a5('0x9')]=function(_0x4fbccf,_0x266e51){return _0x4fbccf[_0x57a5('0xa')]('ChatApplication',attributes,{'tableName':_0x57a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x57a5('0xc')});};
\ No newline at end of file
+var _0x095f=['./chatApplication.attributes','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xb5114d,_0x4f6b9e){var _0x50895b=function(_0x48055a){while(--_0x48055a){_0xb5114d['push'](_0xb5114d['shift']());}};_0x50895b(++_0x4f6b9e);}(_0x095f,0x8c));var _0xf095=function(_0x23b29c,_0x8358ae){_0x23b29c=_0x23b29c-0x0;var _0x4b22e1=_0x095f[_0x23b29c];return _0x4b22e1;};'use strict';var _=require(_0xf095('0x0'));var util=require(_0xf095('0x1'));var logger=require(_0xf095('0x2'))(_0xf095('0x3'));var moment=require(_0xf095('0x4'));var BPromise=require(_0xf095('0x5'));var rp=require(_0xf095('0x6'));var fs=require('fs');var path=require(_0xf095('0x7'));var rimraf=require(_0xf095('0x8'));var config=require(_0xf095('0x9'));var attributes=require(_0xf095('0xa'));module['exports']=function(_0x52aa40,_0x28c17e){return _0x52aa40['define'](_0xf095('0xb'),attributes,{'tableName':_0xf095('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf095('0xd'),'collate':_0xf095('0xe')});};
\ No newline at end of file
index da51ae3..086b794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f44=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','ChatApplication,\x20%s,\x20%s','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','util'];(function(_0x5dac40,_0x26a35a){var _0xff3d1a=function(_0x529ed6){while(--_0x529ed6){_0x5dac40['push'](_0x5dac40['shift']());}};_0xff3d1a(++_0x26a35a);}(_0x7f44,0x7d));var _0x47f4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7f44[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x47f4('0x0'));var moment=require(_0x47f4('0x1'));var BPromise=require(_0x47f4('0x2'));var rs=require(_0x47f4('0x3'));var fs=require('fs');var Redis=require(_0x47f4('0x4'));var db=require(_0x47f4('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x47f4('0x6'))(_0x47f4('0x7'));var config=require(_0x47f4('0x8'));var jayson=require(_0x47f4('0x9'));var client=jayson['client'][_0x47f4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xacfb13,_0x3beb8a,_0x24773d){return new BPromise(function(_0x4f50fb,_0x31a3d9){return client[_0x47f4('0xb')](_0xacfb13,_0x24773d)['then'](function(_0x19a59d){logger['info'](_0x47f4('0xc'),_0x3beb8a,'request\x20sent');logger['debug'](_0x47f4('0xd'),_0x3beb8a,'request\x20sent',JSON[_0x47f4('0xe')](_0x19a59d));if(_0x19a59d[_0x47f4('0xf')]){if(_0x19a59d['error'][_0x47f4('0x10')]===0x1f4){logger['error'](_0x47f4('0xc'),_0x3beb8a,_0x19a59d[_0x47f4('0xf')][_0x47f4('0x11')]);return _0x31a3d9(_0x19a59d[_0x47f4('0xf')]['message']);}logger[_0x47f4('0xf')](_0x47f4('0xc'),_0x3beb8a,_0x19a59d[_0x47f4('0xf')][_0x47f4('0x11')]);return _0x4f50fb(_0x19a59d[_0x47f4('0xf')][_0x47f4('0x11')]);}else{logger['info'](_0x47f4('0xc'),_0x3beb8a,_0x47f4('0x12'));_0x4f50fb(_0x19a59d[_0x47f4('0x13')][_0x47f4('0x11')]);}})[_0x47f4('0x14')](function(_0x202a60){logger[_0x47f4('0xf')](_0x47f4('0xc'),_0x3beb8a,_0x202a60);_0x31a3d9(_0x202a60);});});}
\ No newline at end of file
+var _0x58d8=['result','catch','lodash','util','bluebird','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','ChatApplication,\x20%s,\x20%s','message'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x58d8,0xec));var _0x858d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x58d8[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x858d('0x0'));var util=require(_0x858d('0x1'));var moment=require('moment');var BPromise=require(_0x858d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x858d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x858d('0x4'))(_0x858d('0x5'));var config=require('../../config/environment');var jayson=require(_0x858d('0x6'));var client=jayson[_0x858d('0x7')][_0x858d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2bad36,_0x4d2989,_0x19e043){return new BPromise(function(_0x94851d,_0x3545bc){return client['request'](_0x2bad36,_0x19e043)['then'](function(_0x3552ce){logger[_0x858d('0x9')]('ChatApplication,\x20%s,\x20%s',_0x4d2989,_0x858d('0xa'));logger['debug'](_0x858d('0xb'),_0x4d2989,_0x858d('0xa'),JSON[_0x858d('0xc')](_0x3552ce));if(_0x3552ce[_0x858d('0xd')]){if(_0x3552ce['error']['code']===0x1f4){logger['error'](_0x858d('0xe'),_0x4d2989,_0x3552ce['error'][_0x858d('0xf')]);return _0x3545bc(_0x3552ce[_0x858d('0xd')][_0x858d('0xf')]);}logger[_0x858d('0xd')](_0x858d('0xe'),_0x4d2989,_0x3552ce[_0x858d('0xd')]['message']);return _0x94851d(_0x3552ce[_0x858d('0xd')][_0x858d('0xf')]);}else{logger['info'](_0x858d('0xe'),_0x4d2989,_0x858d('0xa'));_0x94851d(_0x3552ce[_0x858d('0x10')]['message']);}})[_0x858d('0x11')](function(_0x2b9e1d){logger[_0x858d('0xd')](_0x858d('0xe'),_0x4d2989,_0x2b9e1d);_0x3545bc(_0x2b9e1d);});});}
\ No newline at end of file
index ea120db..5d51113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8ef=['delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated','show','put','update'];(function(_0x5f3cb2,_0x141f34){var _0x4da262=function(_0x3b558f){while(--_0x3b558f){_0x5f3cb2['push'](_0x5f3cb2['shift']());}};_0x4da262(++_0x141f34);}(_0xc8ef,0x179));var _0xfc8e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xc8ef[_0x37bd26];return _0xe83dc4;};'use strict';var multer=require(_0xfc8e('0x0'));var util=require(_0xfc8e('0x1'));var path=require(_0xfc8e('0x2'));var timeout=require('connect-timeout');var express=require(_0xfc8e('0x3'));var router=express[_0xfc8e('0x4')]();var fs_extra=require(_0xfc8e('0x5'));var auth=require(_0xfc8e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xfc8e('0x7'));var controller=require(_0xfc8e('0x8'));router['get'](_0xfc8e('0x9'),auth[_0xfc8e('0xa')](),controller[_0xfc8e('0xb')]);router[_0xfc8e('0xc')](_0xfc8e('0x9'),auth['isAuthenticated'](),controller[_0xfc8e('0xd')]);router[_0xfc8e('0xe')]('/:id',auth[_0xfc8e('0xa')](),controller[_0xfc8e('0xf')]);module[_0xfc8e('0x10')]=router;
\ No newline at end of file
+var _0xc96a=['delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','/:id','isAuthenticated'];(function(_0x52419c,_0x2a9043){var _0x560902=function(_0x4df864){while(--_0x4df864){_0x52419c['push'](_0x52419c['shift']());}};_0x560902(++_0x2a9043);}(_0xc96a,0xd3));var _0xac96=function(_0x725a4c,_0x102507){_0x725a4c=_0x725a4c-0x0;var _0x37b2cc=_0xc96a[_0x725a4c];return _0x37b2cc;};'use strict';var multer=require('multer');var util=require(_0xac96('0x0'));var path=require(_0xac96('0x1'));var timeout=require(_0xac96('0x2'));var express=require(_0xac96('0x3'));var router=express['Router']();var fs_extra=require(_0xac96('0x4'));var auth=require(_0xac96('0x5'));var interaction=require(_0xac96('0x6'));var config=require(_0xac96('0x7'));var controller=require('./chatApplication.controller');router['get'](_0xac96('0x8'),auth['isAuthenticated'](),controller['show']);router['put'](_0xac96('0x8'),auth[_0xac96('0x9')](),controller['update']);router[_0xac96('0xa')](_0xac96('0x8'),auth[_0xac96('0x9')](),controller[_0xac96('0xb')]);module[_0xac96('0xc')]=router;
\ No newline at end of file
index 38afb8e..9d4e258 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9f=['STRING','BOOLEAN','sequelize','exports'];(function(_0x35c4b6,_0x3f462e){var _0x444f74=function(_0xee09cb){while(--_0xee09cb){_0x35c4b6['push'](_0x35c4b6['shift']());}};_0x444f74(++_0x3f462e);}(_0x0f9f,0xae));var _0xf0f9=function(_0x27efcf,_0x320952){_0x27efcf=_0x27efcf-0x0;var _0xdb0237=_0x0f9f[_0x27efcf];return _0xdb0237;};'use strict';var Sequelize=require(_0xf0f9('0x0'));module[_0xf0f9('0x1')]={'name':{'type':Sequelize[_0xf0f9('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf0f9('0x2')]},'write':{'type':Sequelize[_0xf0f9('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf771=['STRING','BOOLEAN','sequelize','exports'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xf771,0x8e));var _0x1f77=function(_0x7739fc,_0x5e7aad){_0x7739fc=_0x7739fc-0x0;var _0x3d51e8=_0xf771[_0x7739fc];return _0x3d51e8;};'use strict';var Sequelize=require(_0x1f77('0x0'));module[_0x1f77('0x1')]={'name':{'type':Sequelize[_0x1f77('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x1f77('0x2')]},'write':{'type':Sequelize[_0x1f77('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 5c56467..5b18e37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d5=['ChatInternalMessage','user','toInteger','addMembers','ids','getMembers','User','pick','filter','removeMembers','addMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','limit','undefined','offset','count','set','json','apply','reject','save','update','destroy','then','stack','send','index','map','ChatGroup','rawAttributes','type','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','name','options','include','findAll','rows','catch','show','params','keys','intersection','create','body','find','describe','getUnread'];(function(_0x5a9410,_0x522a6e){var _0x633d82=function(_0x485cda){while(--_0x485cda){_0x5a9410['push'](_0x5a9410['shift']());}};_0x633d82(++_0x522a6e);}(_0x10d5,0x12a));var _0x510d=function(_0x868b7c,_0xfa438b){_0x868b7c=_0x868b7c-0x0;var _0x21683c=_0x10d5[_0x868b7c];return _0x21683c;};'use strict';var emlformat=require(_0x510d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x510d('0x1'));var rp=require(_0x510d('0x2'));var moment=require(_0x510d('0x3'));var BPromise=require(_0x510d('0x4'));var Mustache=require(_0x510d('0x5'));var util=require('util');var path=require(_0x510d('0x6'));var sox=require(_0x510d('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x510d('0x8'));var squel=require(_0x510d('0x9'));var crypto=require(_0x510d('0xa'));var jsforce=require(_0x510d('0xb'));var deskjs=require(_0x510d('0xc'));var toCsv=require(_0x510d('0xd'));var querystring=require(_0x510d('0xe'));var Papa=require(_0x510d('0xf'));var Redis=require('ioredis');var authService=require(_0x510d('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x510d('0x11'));var logger=require(_0x510d('0x12'))(_0x510d('0x13'));var utils=require(_0x510d('0x14'));var config=require(_0x510d('0x15'));var licenseUtil=require(_0x510d('0x16'));var db=require(_0x510d('0x17'))['db'];config['redis']=_['defaults'](config[_0x510d('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x510d('0x19'))(new Redis(config['redis']));require(_0x510d('0x1a'))[_0x510d('0x1b')](socket);function respondWithStatusCode(_0x2193a,_0x52b6f9){_0x52b6f9=_0x52b6f9||0xcc;return function(_0x1aded4){if(_0x1aded4){return _0x2193a[_0x510d('0x1c')](_0x52b6f9);}return _0x2193a[_0x510d('0x1d')](_0x52b6f9)[_0x510d('0x1e')]();};}function respondWithResult(_0x5f3f58,_0x4d27bc){_0x4d27bc=_0x4d27bc||0xc8;return function(_0x61ee44){if(_0x61ee44){return _0x5f3f58[_0x510d('0x1d')](_0x4d27bc)['json'](_0x61ee44);}};}function respondWithFilteredResult(_0x511a73,_0x2e6c80){return function(_0x26143d){if(_0x26143d){var _0x4b85a6=typeof _0x2e6c80['offset']==='undefined'&&typeof _0x2e6c80[_0x510d('0x1f')]===_0x510d('0x20');var _0x2c80ca=_0x26143d['count'];var _0x2f2bfb=_0x4b85a6?0x0:_0x2e6c80[_0x510d('0x21')];var _0x1146fb=_0x4b85a6?_0x26143d[_0x510d('0x22')]:_0x2e6c80['offset']+_0x2e6c80[_0x510d('0x1f')];var _0x4280a6;if(_0x1146fb>=_0x2c80ca){_0x1146fb=_0x2c80ca;_0x4280a6=0xc8;}else{_0x4280a6=0xce;}_0x511a73[_0x510d('0x1d')](_0x4280a6);return _0x511a73[_0x510d('0x23')]('Content-Range',_0x2f2bfb+'-'+_0x1146fb+'/'+_0x2c80ca)[_0x510d('0x24')](_0x26143d);}return null;};}function patchUpdates(_0x508f36){return function(_0x248ac2){try{jsonpatch[_0x510d('0x25')](_0x248ac2,_0x508f36,!![]);}catch(_0x456288){return BPromise[_0x510d('0x26')](_0x456288);}return _0x248ac2[_0x510d('0x27')]();};}function saveUpdates(_0x266b81,_0x5c97bf){return function(_0x2e4fd4){if(_0x2e4fd4){return _0x2e4fd4[_0x510d('0x28')](_0x266b81)['then'](function(_0x4da937){return _0x4da937;});}return null;};}function removeEntity(_0x43d6c4,_0x4b3f40){return function(_0x9019f8){if(_0x9019f8){return _0x9019f8[_0x510d('0x29')]()[_0x510d('0x2a')](function(){_0x43d6c4['status'](0xcc)[_0x510d('0x1e')]();});}};}function handleEntityNotFound(_0x120f21,_0xe96a9c){return function(_0x3c7f9c){if(!_0x3c7f9c){_0x120f21[_0x510d('0x1c')](0x194);}return _0x3c7f9c;};}function handleError(_0x237208,_0x4fa991){_0x4fa991=_0x4fa991||0x1f4;return function(_0x3da4aa){logger['error'](_0x3da4aa[_0x510d('0x2b')]);if(_0x3da4aa['name']){delete _0x3da4aa['name'];}_0x237208[_0x510d('0x1d')](_0x4fa991)[_0x510d('0x2c')](_0x3da4aa);};}exports[_0x510d('0x2d')]=function(_0x4bd1f4,_0x5c546d){var _0x344757={},_0x2354ce={},_0x30c80b={'count':0x0,'rows':[]};var _0x21b349=_[_0x510d('0x2e')](db[_0x510d('0x2f')][_0x510d('0x30')],function(_0x53238e){return{'name':_0x53238e['fieldName'],'type':_0x53238e[_0x510d('0x31')]['key']};});_0x2354ce[_0x510d('0x32')]=_[_0x510d('0x2e')](_0x21b349,'name');_0x2354ce[_0x510d('0x33')]=_['keys'](_0x4bd1f4[_0x510d('0x33')]);_0x2354ce[_0x510d('0x34')]=_['intersection'](_0x2354ce[_0x510d('0x32')],_0x2354ce[_0x510d('0x33')]);_0x344757[_0x510d('0x35')]=_['intersection'](_0x2354ce[_0x510d('0x32')],qs[_0x510d('0x36')](_0x4bd1f4[_0x510d('0x33')]['fields']));_0x344757[_0x510d('0x35')]=_0x344757[_0x510d('0x35')][_0x510d('0x37')]?_0x344757[_0x510d('0x35')]:_0x2354ce['model'];if(!_0x4bd1f4[_0x510d('0x33')][_0x510d('0x38')](_0x510d('0x39'))){_0x344757[_0x510d('0x1f')]=qs[_0x510d('0x1f')](_0x4bd1f4[_0x510d('0x33')]['limit']);_0x344757['offset']=qs[_0x510d('0x21')](_0x4bd1f4['query'][_0x510d('0x21')]);}_0x344757[_0x510d('0x3a')]=qs['sort'](_0x4bd1f4[_0x510d('0x33')][_0x510d('0x3b')]);_0x344757[_0x510d('0x3c')]=qs[_0x510d('0x34')](_['pick'](_0x4bd1f4['query'],_0x2354ce['filters']),_0x21b349);if(_0x4bd1f4[_0x510d('0x33')]['filter']){_0x344757[_0x510d('0x3c')]=_[_0x510d('0x3d')](_0x344757[_0x510d('0x3c')],{'$or':_['map'](_0x21b349,function(_0x55a70f){if(_0x55a70f[_0x510d('0x31')]!==_0x510d('0x3e')){var _0x298087={};_0x298087[_0x55a70f[_0x510d('0x3f')]]={'$like':'%'+_0x4bd1f4[_0x510d('0x33')]['filter']+'%'};return _0x298087;}})});}_0x344757=_[_0x510d('0x3d')]({},_0x344757,_0x4bd1f4[_0x510d('0x40')]);var _0x14b9f2={'where':_0x344757[_0x510d('0x3c')]};return db[_0x510d('0x2f')][_0x510d('0x22')](_0x14b9f2)['then'](function(_0x500a18){_0x30c80b[_0x510d('0x22')]=_0x500a18;if(_0x4bd1f4[_0x510d('0x33')]['includeAll']){_0x344757[_0x510d('0x41')]=[{'all':!![]}];}return db[_0x510d('0x2f')][_0x510d('0x42')](_0x344757);})[_0x510d('0x2a')](function(_0x5e649a){_0x30c80b[_0x510d('0x43')]=_0x5e649a;return _0x30c80b;})[_0x510d('0x2a')](respondWithFilteredResult(_0x5c546d,_0x344757))[_0x510d('0x44')](handleError(_0x5c546d,null));};exports[_0x510d('0x45')]=function(_0x504d3c,_0x4b8ead){var _0x472547={'raw':!![],'where':{'id':_0x504d3c[_0x510d('0x46')]['id']}},_0x26c9ce={};_0x26c9ce[_0x510d('0x32')]=_[_0x510d('0x47')](db[_0x510d('0x2f')]['rawAttributes']);_0x26c9ce[_0x510d('0x33')]=_[_0x510d('0x47')](_0x504d3c['query']);_0x26c9ce[_0x510d('0x34')]=_['intersection'](_0x26c9ce[_0x510d('0x32')],_0x26c9ce['query']);_0x472547[_0x510d('0x35')]=_[_0x510d('0x48')](_0x26c9ce[_0x510d('0x32')],qs[_0x510d('0x36')](_0x504d3c[_0x510d('0x33')][_0x510d('0x36')]));_0x472547[_0x510d('0x35')]=_0x472547[_0x510d('0x35')][_0x510d('0x37')]?_0x472547[_0x510d('0x35')]:_0x26c9ce[_0x510d('0x32')];if(_0x504d3c[_0x510d('0x33')]['includeAll']){_0x472547['include']=[{'all':!![]}];}_0x472547=_[_0x510d('0x3d')]({},_0x472547,_0x504d3c[_0x510d('0x40')]);return db['ChatGroup']['find'](_0x472547)[_0x510d('0x2a')](handleEntityNotFound(_0x4b8ead,null))[_0x510d('0x2a')](respondWithResult(_0x4b8ead,null))[_0x510d('0x44')](handleError(_0x4b8ead,null));};exports[_0x510d('0x49')]=function(_0x1990d0,_0x183a29){return db['ChatGroup'][_0x510d('0x49')](_0x1990d0['body'],{})[_0x510d('0x2a')](respondWithResult(_0x183a29,0xc9))['catch'](handleError(_0x183a29,null));};exports['update']=function(_0x5bc632,_0x2518b1){if(_0x5bc632[_0x510d('0x4a')]['id']){delete _0x5bc632['body']['id'];}return db[_0x510d('0x2f')][_0x510d('0x4b')]({'where':{'id':_0x5bc632[_0x510d('0x46')]['id']}})['then'](handleEntityNotFound(_0x2518b1,null))[_0x510d('0x2a')](saveUpdates(_0x5bc632[_0x510d('0x4a')],null))[_0x510d('0x2a')](respondWithResult(_0x2518b1,null))[_0x510d('0x44')](handleError(_0x2518b1,null));};exports[_0x510d('0x29')]=function(_0x5d6b1c,_0x26c406){return db[_0x510d('0x2f')][_0x510d('0x4b')]({'where':{'id':_0x5d6b1c[_0x510d('0x46')]['id']}})['then'](handleEntityNotFound(_0x26c406,null))[_0x510d('0x2a')](removeEntity(_0x26c406,null))['catch'](handleError(_0x26c406,null));};exports[_0x510d('0x4c')]=function(_0x203f66,_0x1e8309){return db[_0x510d('0x2f')][_0x510d('0x4c')]()[_0x510d('0x2a')](respondWithResult(_0x1e8309,null))['catch'](handleError(_0x1e8309,null));};exports[_0x510d('0x4d')]=function(_0x1086be,_0x295220,_0x251a49){return db[_0x510d('0x4e')]['count']({'where':{'ChatGroupId':_0x1086be[_0x510d('0x46')]['id'],'ToId':_0x1086be[_0x510d('0x4f')]['id'],'read':![]}})[_0x510d('0x2a')](function(_0x277f8a){return{'id':_[_0x510d('0x50')](_0x1086be[_0x510d('0x46')]['id']),'count':_0x277f8a};})['then'](respondWithResult(_0x295220,null))[_0x510d('0x44')](handleError(_0x295220,null));};exports[_0x510d('0x51')]=function(_0x45fcfa,_0x58e464,_0x3d58f7){return db[_0x510d('0x2f')][_0x510d('0x4b')]({'where':{'id':_0x45fcfa['params']['id']}})[_0x510d('0x2a')](handleEntityNotFound(_0x58e464,null))[_0x510d('0x2a')](function(_0x557450){if(_0x557450){return _0x557450[_0x510d('0x51')](_0x45fcfa['body'][_0x510d('0x52')],_['omit'](_0x45fcfa[_0x510d('0x4a')],[_0x510d('0x52'),'id'])||{});}})[_0x510d('0x2a')](respondWithResult(_0x58e464,null))[_0x510d('0x44')](handleError(_0x58e464,null));};exports[_0x510d('0x53')]=function(_0xe442f4,_0x486006,_0x5696c0){var _0x2b4042={};var _0x5a2b7e={};var _0x3dcbb4;var _0x44d8df;return db[_0x510d('0x2f')]['findOne']({'where':{'id':_0xe442f4[_0x510d('0x46')]['id']}})['then'](handleEntityNotFound(_0x486006,null))[_0x510d('0x2a')](function(_0x1df0f3){if(_0x1df0f3){_0x3dcbb4=_0x1df0f3;_0x5a2b7e[_0x510d('0x32')]=_[_0x510d('0x47')](db[_0x510d('0x54')][_0x510d('0x30')]);_0x5a2b7e['query']=_['keys'](_0xe442f4['query']);_0x5a2b7e[_0x510d('0x34')]=_[_0x510d('0x48')](_0x5a2b7e[_0x510d('0x32')],_0x5a2b7e[_0x510d('0x33')]);_0x2b4042[_0x510d('0x35')]=_[_0x510d('0x48')](_0x5a2b7e['model'],qs[_0x510d('0x36')](_0xe442f4['query']['fields']));_0x2b4042['attributes']=_0x2b4042['attributes'][_0x510d('0x37')]?_0x2b4042[_0x510d('0x35')]:_0x5a2b7e[_0x510d('0x32')];_0x2b4042[_0x510d('0x3a')]=qs['sort'](_0xe442f4[_0x510d('0x33')][_0x510d('0x3b')]);_0x2b4042[_0x510d('0x3c')]=qs[_0x510d('0x34')](_[_0x510d('0x55')](_0xe442f4[_0x510d('0x33')],_0x5a2b7e[_0x510d('0x34')]));if(_0xe442f4[_0x510d('0x33')][_0x510d('0x56')]){_0x2b4042[_0x510d('0x3c')]=_[_0x510d('0x3d')](_0x2b4042[_0x510d('0x3c')],{'$or':_[_0x510d('0x2e')](_0x2b4042['attributes'],function(_0x52a571){var _0x586f05={};_0x586f05[_0x52a571]={'$like':'%'+_0xe442f4[_0x510d('0x33')][_0x510d('0x56')]+'%'};return _0x586f05;})});}_0x2b4042=_[_0x510d('0x3d')]({},_0x2b4042,_0xe442f4[_0x510d('0x40')]);return _0x3dcbb4[_0x510d('0x53')](_0x2b4042);}})['then'](function(_0x537fc5){if(_0x537fc5){_0x44d8df=_0x537fc5[_0x510d('0x37')];if(!_0xe442f4[_0x510d('0x33')][_0x510d('0x38')](_0x510d('0x39'))){_0x2b4042[_0x510d('0x1f')]=qs[_0x510d('0x1f')](_0xe442f4[_0x510d('0x33')][_0x510d('0x1f')]);_0x2b4042[_0x510d('0x21')]=qs['offset'](_0xe442f4[_0x510d('0x33')][_0x510d('0x21')]);}return _0x3dcbb4['getMembers'](_0x2b4042);}})['then'](function(_0x88ee12){if(_0x88ee12){return _0x88ee12?{'count':_0x44d8df,'rows':_0x88ee12}:null;}})[_0x510d('0x2a')](respondWithResult(_0x486006,null))[_0x510d('0x44')](handleError(_0x486006,null));};exports[_0x510d('0x57')]=function(_0x451775,_0x2a0521,_0x150d75){return db[_0x510d('0x2f')]['find']({'where':{'id':_0x451775['params']['id']}})[_0x510d('0x2a')](handleEntityNotFound(_0x2a0521,null))[_0x510d('0x2a')](function(_0x175eab){if(_0x175eab){return _0x175eab[_0x510d('0x57')](_0x451775[_0x510d('0x33')][_0x510d('0x52')]);}})['then'](respondWithStatusCode(_0x2a0521,null))['catch'](handleError(_0x2a0521,null));};exports[_0x510d('0x58')]=function(_0x335a3e,_0x7ab28c,_0x1f2f4f){if(_0x335a3e[_0x510d('0x4a')]['id']){delete _0x335a3e[_0x510d('0x4a')]['id'];}return db[_0x510d('0x2f')][_0x510d('0x4b')]({'where':{'id':_0x335a3e[_0x510d('0x46')]['id']}})[_0x510d('0x2a')](handleEntityNotFound(_0x7ab28c,null))[_0x510d('0x2a')](function(_0x2d0f59){if(_0x2d0f59){_0x335a3e[_0x510d('0x4a')]['ChatGroupId']=_0x2d0f59['id'];return db[_0x510d('0x4e')][_0x510d('0x49')](_0x335a3e[_0x510d('0x4a')]);}})[_0x510d('0x2a')](respondWithResult(_0x7ab28c,null))['catch'](handleError(_0x7ab28c,null));};exports[_0x510d('0x59')]=function(_0x3f5bcb,_0x29b987,_0x40e89e){var _0x3e2de8={};var _0x55ad6c={};var _0x4245e1;var _0x238e3d;return db[_0x510d('0x2f')]['findOne']({'where':{'id':_0x3f5bcb[_0x510d('0x46')]['id']}})[_0x510d('0x2a')](handleEntityNotFound(_0x29b987,null))['then'](function(_0x4efb1b){if(_0x4efb1b){_0x4245e1=_0x4efb1b;_0x55ad6c['model']=_[_0x510d('0x47')](db[_0x510d('0x4e')][_0x510d('0x30')]);_0x55ad6c[_0x510d('0x33')]=_['keys'](_0x3f5bcb['query']);_0x55ad6c['filters']=_['intersection'](_0x55ad6c[_0x510d('0x32')],_0x55ad6c[_0x510d('0x33')]);_0x3e2de8[_0x510d('0x35')]=_[_0x510d('0x48')](_0x55ad6c[_0x510d('0x32')],qs[_0x510d('0x36')](_0x3f5bcb['query'][_0x510d('0x36')]));_0x3e2de8[_0x510d('0x35')]=_0x3e2de8[_0x510d('0x35')][_0x510d('0x37')]?_0x3e2de8[_0x510d('0x35')]:_0x55ad6c[_0x510d('0x32')];_0x3e2de8[_0x510d('0x3a')]=qs['sort'](_0x3f5bcb[_0x510d('0x33')][_0x510d('0x3b')]);_0x3e2de8[_0x510d('0x3c')]=qs[_0x510d('0x34')](_[_0x510d('0x55')](_0x3f5bcb[_0x510d('0x33')],_0x55ad6c[_0x510d('0x34')]));if(_0x3f5bcb[_0x510d('0x33')]['filter']){_0x3e2de8[_0x510d('0x3c')]=_[_0x510d('0x3d')](_0x3e2de8[_0x510d('0x3c')],{'$or':_[_0x510d('0x2e')](_0x3e2de8[_0x510d('0x35')],function(_0x934caf){var _0x4405f9={};_0x4405f9[_0x934caf]={'$like':'%'+_0x3f5bcb['query'][_0x510d('0x56')]+'%'};return _0x4405f9;})});}if(_0x3f5bcb['query'][_0x510d('0x5a')]){var _0x22e306=_0x3f5bcb[_0x510d('0x33')][_0x510d('0x5a')][_0x510d('0x5b')](',');var _0x2b26b8={};_0x2b26b8[_0x22e306[0x0]]={'$gte':moment(_0x22e306[0x1])[_0x510d('0x5c')](_0x510d('0x5d'))};_0x3e2de8[_0x510d('0x3c')]=_[_0x510d('0x3d')](_0x3e2de8[_0x510d('0x3c')],_0x2b26b8);}_0x3e2de8=_['merge']({},_0x3e2de8,_0x3f5bcb['options']);return _0x4245e1[_0x510d('0x59')](_0x3e2de8);}})[_0x510d('0x2a')](function(_0x488e7b){if(_0x488e7b){_0x238e3d=_0x488e7b[_0x510d('0x37')];if(!_0x3f5bcb[_0x510d('0x33')]['hasOwnProperty']('nolimit')){_0x3e2de8['limit']=qs[_0x510d('0x1f')](_0x3f5bcb[_0x510d('0x33')][_0x510d('0x1f')]);_0x3e2de8['offset']=qs[_0x510d('0x21')](_0x3f5bcb[_0x510d('0x33')][_0x510d('0x21')]);}return _0x4245e1[_0x510d('0x59')](_0x3e2de8);}})['then'](function(_0x5383d6){if(_0x5383d6){return _0x5383d6?{'count':_0x238e3d,'rows':_0x5383d6}:null;}})[_0x510d('0x2a')](respondWithResult(_0x29b987,null))[_0x510d('0x44')](handleError(_0x29b987,null));};
\ No newline at end of file
+var _0x472c=['addMembers','omit','ids','getMembers','findOne','hasOwnProperty','removeMembers','addMessage','ChatGroupId','$gte','split','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatGroup.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','error','name','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','ChatGroup','findAll','rows','catch','show','params','include','options','find','create','body','destroy','describe','getUnread','ChatInternalMessage','toInteger'];(function(_0x270fb7,_0x4b26a7){var _0x586847=function(_0x3d852c){while(--_0x3d852c){_0x270fb7['push'](_0x270fb7['shift']());}};_0x586847(++_0x4b26a7);}(_0x472c,0x11c));var _0xc472=function(_0x4b9a61,_0x1e0f82){_0x4b9a61=_0x4b9a61-0x0;var _0x591643=_0x472c[_0x4b9a61];return _0x591643;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc472('0x0'));var zipdir=require(_0xc472('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc472('0x2'));var moment=require('moment');var BPromise=require(_0xc472('0x3'));var Mustache=require(_0xc472('0x4'));var util=require(_0xc472('0x5'));var path=require(_0xc472('0x6'));var sox=require(_0xc472('0x7'));var csv=require(_0xc472('0x8'));var ejs=require(_0xc472('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc472('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc472('0xb'));var deskjs=require(_0xc472('0xc'));var toCsv=require(_0xc472('0x8'));var querystring=require(_0xc472('0xd'));var Papa=require(_0xc472('0xe'));var Redis=require(_0xc472('0xf'));var authService=require(_0xc472('0x10'));var qs=require(_0xc472('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc472('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xc472('0x13'));var config=require(_0xc472('0x14'));var licenseUtil=require(_0xc472('0x15'));var db=require(_0xc472('0x16'))['db'];config[_0xc472('0x17')]=_[_0xc472('0x18')](config[_0xc472('0x17')],{'host':_0xc472('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc472('0x1a'))[_0xc472('0x1b')](socket);function respondWithStatusCode(_0x474da0,_0x22adfe){_0x22adfe=_0x22adfe||0xcc;return function(_0x1fc9bf){if(_0x1fc9bf){return _0x474da0[_0xc472('0x1c')](_0x22adfe);}return _0x474da0[_0xc472('0x1d')](_0x22adfe)[_0xc472('0x1e')]();};}function respondWithResult(_0x32e96d,_0x195513){_0x195513=_0x195513||0xc8;return function(_0x1bb615){if(_0x1bb615){return _0x32e96d[_0xc472('0x1d')](_0x195513)[_0xc472('0x1f')](_0x1bb615);}};}function respondWithFilteredResult(_0x5c09a7,_0x8fe7ee){return function(_0x22207e){if(_0x22207e){var _0x5ee51b=typeof _0x8fe7ee[_0xc472('0x20')]===_0xc472('0x21')&&typeof _0x8fe7ee[_0xc472('0x22')]===_0xc472('0x21');var _0x5d8ce9=_0x22207e[_0xc472('0x23')];var _0x3e45b9=_0x5ee51b?0x0:_0x8fe7ee[_0xc472('0x20')];var _0x104ddf=_0x5ee51b?_0x22207e[_0xc472('0x23')]:_0x8fe7ee[_0xc472('0x20')]+_0x8fe7ee['limit'];var _0x39c76b;if(_0x104ddf>=_0x5d8ce9){_0x104ddf=_0x5d8ce9;_0x39c76b=0xc8;}else{_0x39c76b=0xce;}_0x5c09a7['status'](_0x39c76b);return _0x5c09a7['set']('Content-Range',_0x3e45b9+'-'+_0x104ddf+'/'+_0x5d8ce9)[_0xc472('0x1f')](_0x22207e);}return null;};}function patchUpdates(_0x3a19b5){return function(_0xfe15b1){try{jsonpatch[_0xc472('0x24')](_0xfe15b1,_0x3a19b5,!![]);}catch(_0x150280){return BPromise[_0xc472('0x25')](_0x150280);}return _0xfe15b1[_0xc472('0x26')]();};}function saveUpdates(_0x3aeb30,_0x10f2c0){return function(_0x598313){if(_0x598313){return _0x598313[_0xc472('0x27')](_0x3aeb30)[_0xc472('0x28')](function(_0x18530b){return _0x18530b;});}return null;};}function removeEntity(_0x369f23,_0x2f8961){return function(_0x5c3573){if(_0x5c3573){return _0x5c3573['destroy']()[_0xc472('0x28')](function(){_0x369f23[_0xc472('0x1d')](0xcc)[_0xc472('0x1e')]();});}};}function handleEntityNotFound(_0x52869c,_0x200aab){return function(_0xf227cf){if(!_0xf227cf){_0x52869c[_0xc472('0x1c')](0x194);}return _0xf227cf;};}function handleError(_0x377e5c,_0x289a43){_0x289a43=_0x289a43||0x1f4;return function(_0x22521b){logger[_0xc472('0x29')](_0x22521b['stack']);if(_0x22521b[_0xc472('0x2a')]){delete _0x22521b[_0xc472('0x2a')];}_0x377e5c['status'](_0x289a43)['send'](_0x22521b);};}exports[_0xc472('0x2b')]=function(_0x4bc370,_0x2c2a54){var _0x3740af={},_0x5f532e={},_0x373e8a={'count':0x0,'rows':[]};var _0x531617=_[_0xc472('0x2c')](db['ChatGroup'][_0xc472('0x2d')],function(_0x4dd5ab){return{'name':_0x4dd5ab[_0xc472('0x2e')],'type':_0x4dd5ab['type'][_0xc472('0x2f')]};});_0x5f532e[_0xc472('0x30')]=_[_0xc472('0x2c')](_0x531617,'name');_0x5f532e['query']=_[_0xc472('0x31')](_0x4bc370[_0xc472('0x32')]);_0x5f532e['filters']=_[_0xc472('0x33')](_0x5f532e[_0xc472('0x30')],_0x5f532e['query']);_0x3740af['attributes']=_[_0xc472('0x33')](_0x5f532e['model'],qs[_0xc472('0x34')](_0x4bc370['query']['fields']));_0x3740af[_0xc472('0x35')]=_0x3740af[_0xc472('0x35')][_0xc472('0x36')]?_0x3740af[_0xc472('0x35')]:_0x5f532e[_0xc472('0x30')];if(!_0x4bc370['query']['hasOwnProperty'](_0xc472('0x37'))){_0x3740af[_0xc472('0x22')]=qs[_0xc472('0x22')](_0x4bc370[_0xc472('0x32')][_0xc472('0x22')]);_0x3740af['offset']=qs[_0xc472('0x20')](_0x4bc370[_0xc472('0x32')][_0xc472('0x20')]);}_0x3740af[_0xc472('0x38')]=qs[_0xc472('0x39')](_0x4bc370[_0xc472('0x32')][_0xc472('0x39')]);_0x3740af[_0xc472('0x3a')]=qs['filters'](_[_0xc472('0x3b')](_0x4bc370[_0xc472('0x32')],_0x5f532e[_0xc472('0x3c')]),_0x531617);if(_0x4bc370['query'][_0xc472('0x3d')]){_0x3740af[_0xc472('0x3a')]=_[_0xc472('0x3e')](_0x3740af['where'],{'$or':_[_0xc472('0x2c')](_0x531617,function(_0x5bd786){if(_0x5bd786['type']!==_0xc472('0x3f')){var _0x8c5d44={};_0x8c5d44[_0x5bd786[_0xc472('0x2a')]]={'$like':'%'+_0x4bc370[_0xc472('0x32')]['filter']+'%'};return _0x8c5d44;}})});}_0x3740af=_[_0xc472('0x3e')]({},_0x3740af,_0x4bc370['options']);var _0x37e42e={'where':_0x3740af['where']};return db[_0xc472('0x40')][_0xc472('0x23')](_0x37e42e)['then'](function(_0x2fca49){_0x373e8a[_0xc472('0x23')]=_0x2fca49;if(_0x4bc370['query']['includeAll']){_0x3740af['include']=[{'all':!![]}];}return db['ChatGroup'][_0xc472('0x41')](_0x3740af);})['then'](function(_0x246f4d){_0x373e8a[_0xc472('0x42')]=_0x246f4d;return _0x373e8a;})[_0xc472('0x28')](respondWithFilteredResult(_0x2c2a54,_0x3740af))[_0xc472('0x43')](handleError(_0x2c2a54,null));};exports[_0xc472('0x44')]=function(_0xb4bfb1,_0x25715e){var _0x400977={'raw':!![],'where':{'id':_0xb4bfb1[_0xc472('0x45')]['id']}},_0x79df3f={};_0x79df3f[_0xc472('0x30')]=_[_0xc472('0x31')](db['ChatGroup'][_0xc472('0x2d')]);_0x79df3f[_0xc472('0x32')]=_['keys'](_0xb4bfb1[_0xc472('0x32')]);_0x79df3f[_0xc472('0x3c')]=_['intersection'](_0x79df3f[_0xc472('0x30')],_0x79df3f['query']);_0x400977[_0xc472('0x35')]=_[_0xc472('0x33')](_0x79df3f[_0xc472('0x30')],qs[_0xc472('0x34')](_0xb4bfb1[_0xc472('0x32')]['fields']));_0x400977['attributes']=_0x400977[_0xc472('0x35')][_0xc472('0x36')]?_0x400977['attributes']:_0x79df3f[_0xc472('0x30')];if(_0xb4bfb1[_0xc472('0x32')]['includeAll']){_0x400977[_0xc472('0x46')]=[{'all':!![]}];}_0x400977=_[_0xc472('0x3e')]({},_0x400977,_0xb4bfb1[_0xc472('0x47')]);return db['ChatGroup'][_0xc472('0x48')](_0x400977)['then'](handleEntityNotFound(_0x25715e,null))[_0xc472('0x28')](respondWithResult(_0x25715e,null))[_0xc472('0x43')](handleError(_0x25715e,null));};exports[_0xc472('0x49')]=function(_0x66c79,_0x206c7d){return db[_0xc472('0x40')]['create'](_0x66c79[_0xc472('0x4a')],{})[_0xc472('0x28')](respondWithResult(_0x206c7d,0xc9))[_0xc472('0x43')](handleError(_0x206c7d,null));};exports['update']=function(_0x4ee2d0,_0x120428){if(_0x4ee2d0[_0xc472('0x4a')]['id']){delete _0x4ee2d0['body']['id'];}return db[_0xc472('0x40')][_0xc472('0x48')]({'where':{'id':_0x4ee2d0[_0xc472('0x45')]['id']}})[_0xc472('0x28')](handleEntityNotFound(_0x120428,null))[_0xc472('0x28')](saveUpdates(_0x4ee2d0[_0xc472('0x4a')],null))['then'](respondWithResult(_0x120428,null))[_0xc472('0x43')](handleError(_0x120428,null));};exports[_0xc472('0x4b')]=function(_0x22b542,_0x335a7e){return db[_0xc472('0x40')][_0xc472('0x48')]({'where':{'id':_0x22b542[_0xc472('0x45')]['id']}})[_0xc472('0x28')](handleEntityNotFound(_0x335a7e,null))[_0xc472('0x28')](removeEntity(_0x335a7e,null))[_0xc472('0x43')](handleError(_0x335a7e,null));};exports['describe']=function(_0x5c23c3,_0x3d088f){return db[_0xc472('0x40')][_0xc472('0x4c')]()[_0xc472('0x28')](respondWithResult(_0x3d088f,null))[_0xc472('0x43')](handleError(_0x3d088f,null));};exports[_0xc472('0x4d')]=function(_0x40f1a5,_0x2e3f09,_0x5108de){return db[_0xc472('0x4e')][_0xc472('0x23')]({'where':{'ChatGroupId':_0x40f1a5['params']['id'],'ToId':_0x40f1a5['user']['id'],'read':![]}})[_0xc472('0x28')](function(_0x10855b){return{'id':_[_0xc472('0x4f')](_0x40f1a5[_0xc472('0x45')]['id']),'count':_0x10855b};})[_0xc472('0x28')](respondWithResult(_0x2e3f09,null))[_0xc472('0x43')](handleError(_0x2e3f09,null));};exports[_0xc472('0x50')]=function(_0x33d3d6,_0x514410,_0x4c1cae){return db[_0xc472('0x40')]['find']({'where':{'id':_0x33d3d6[_0xc472('0x45')]['id']}})[_0xc472('0x28')](handleEntityNotFound(_0x514410,null))['then'](function(_0x507484){if(_0x507484){return _0x507484[_0xc472('0x50')](_0x33d3d6[_0xc472('0x4a')]['ids'],_[_0xc472('0x51')](_0x33d3d6[_0xc472('0x4a')],[_0xc472('0x52'),'id'])||{});}})[_0xc472('0x28')](respondWithResult(_0x514410,null))['catch'](handleError(_0x514410,null));};exports[_0xc472('0x53')]=function(_0x56d091,_0xf8b7b1,_0x328c22){var _0x5b2c47={};var _0x40bfaf={};var _0x566d97;var _0x3ffcc7;return db[_0xc472('0x40')][_0xc472('0x54')]({'where':{'id':_0x56d091['params']['id']}})[_0xc472('0x28')](handleEntityNotFound(_0xf8b7b1,null))['then'](function(_0x7f8879){if(_0x7f8879){_0x566d97=_0x7f8879;_0x40bfaf[_0xc472('0x30')]=_['keys'](db['User'][_0xc472('0x2d')]);_0x40bfaf[_0xc472('0x32')]=_[_0xc472('0x31')](_0x56d091['query']);_0x40bfaf[_0xc472('0x3c')]=_[_0xc472('0x33')](_0x40bfaf[_0xc472('0x30')],_0x40bfaf[_0xc472('0x32')]);_0x5b2c47[_0xc472('0x35')]=_['intersection'](_0x40bfaf[_0xc472('0x30')],qs['fields'](_0x56d091[_0xc472('0x32')]['fields']));_0x5b2c47[_0xc472('0x35')]=_0x5b2c47[_0xc472('0x35')][_0xc472('0x36')]?_0x5b2c47[_0xc472('0x35')]:_0x40bfaf[_0xc472('0x30')];_0x5b2c47[_0xc472('0x38')]=qs[_0xc472('0x39')](_0x56d091[_0xc472('0x32')]['sort']);_0x5b2c47[_0xc472('0x3a')]=qs[_0xc472('0x3c')](_['pick'](_0x56d091[_0xc472('0x32')],_0x40bfaf[_0xc472('0x3c')]));if(_0x56d091[_0xc472('0x32')]['filter']){_0x5b2c47[_0xc472('0x3a')]=_['merge'](_0x5b2c47[_0xc472('0x3a')],{'$or':_[_0xc472('0x2c')](_0x5b2c47['attributes'],function(_0xc1a5cc){var _0x173007={};_0x173007[_0xc1a5cc]={'$like':'%'+_0x56d091[_0xc472('0x32')][_0xc472('0x3d')]+'%'};return _0x173007;})});}_0x5b2c47=_['merge']({},_0x5b2c47,_0x56d091[_0xc472('0x47')]);return _0x566d97[_0xc472('0x53')](_0x5b2c47);}})[_0xc472('0x28')](function(_0x497614){if(_0x497614){_0x3ffcc7=_0x497614['length'];if(!_0x56d091['query'][_0xc472('0x55')](_0xc472('0x37'))){_0x5b2c47[_0xc472('0x22')]=qs['limit'](_0x56d091['query'][_0xc472('0x22')]);_0x5b2c47[_0xc472('0x20')]=qs['offset'](_0x56d091[_0xc472('0x32')][_0xc472('0x20')]);}return _0x566d97[_0xc472('0x53')](_0x5b2c47);}})[_0xc472('0x28')](function(_0x2aea0e){if(_0x2aea0e){return _0x2aea0e?{'count':_0x3ffcc7,'rows':_0x2aea0e}:null;}})[_0xc472('0x28')](respondWithResult(_0xf8b7b1,null))[_0xc472('0x43')](handleError(_0xf8b7b1,null));};exports[_0xc472('0x56')]=function(_0x196eac,_0x56d57d,_0x59fa48){return db[_0xc472('0x40')]['find']({'where':{'id':_0x196eac[_0xc472('0x45')]['id']}})[_0xc472('0x28')](handleEntityNotFound(_0x56d57d,null))[_0xc472('0x28')](function(_0x3f7804){if(_0x3f7804){return _0x3f7804[_0xc472('0x56')](_0x196eac[_0xc472('0x32')][_0xc472('0x52')]);}})[_0xc472('0x28')](respondWithStatusCode(_0x56d57d,null))['catch'](handleError(_0x56d57d,null));};exports[_0xc472('0x57')]=function(_0xd7f3fb,_0x457e4e,_0x3839f5){if(_0xd7f3fb[_0xc472('0x4a')]['id']){delete _0xd7f3fb[_0xc472('0x4a')]['id'];}return db['ChatGroup']['find']({'where':{'id':_0xd7f3fb['params']['id']}})[_0xc472('0x28')](handleEntityNotFound(_0x457e4e,null))[_0xc472('0x28')](function(_0x10b452){if(_0x10b452){_0xd7f3fb['body'][_0xc472('0x58')]=_0x10b452['id'];return db['ChatInternalMessage']['create'](_0xd7f3fb[_0xc472('0x4a')]);}})[_0xc472('0x28')](respondWithResult(_0x457e4e,null))['catch'](handleError(_0x457e4e,null));};exports['getMessages']=function(_0x57198b,_0x31e961,_0x16bc6a){var _0x1cd5f5={};var _0x3d412f={};var _0x4ab432;var _0x4985bb;return db[_0xc472('0x40')][_0xc472('0x54')]({'where':{'id':_0x57198b[_0xc472('0x45')]['id']}})[_0xc472('0x28')](handleEntityNotFound(_0x31e961,null))[_0xc472('0x28')](function(_0x163c38){if(_0x163c38){_0x4ab432=_0x163c38;_0x3d412f['model']=_[_0xc472('0x31')](db[_0xc472('0x4e')][_0xc472('0x2d')]);_0x3d412f[_0xc472('0x32')]=_[_0xc472('0x31')](_0x57198b[_0xc472('0x32')]);_0x3d412f['filters']=_[_0xc472('0x33')](_0x3d412f[_0xc472('0x30')],_0x3d412f['query']);_0x1cd5f5['attributes']=_[_0xc472('0x33')](_0x3d412f[_0xc472('0x30')],qs['fields'](_0x57198b['query']['fields']));_0x1cd5f5['attributes']=_0x1cd5f5[_0xc472('0x35')][_0xc472('0x36')]?_0x1cd5f5['attributes']:_0x3d412f[_0xc472('0x30')];_0x1cd5f5[_0xc472('0x38')]=qs[_0xc472('0x39')](_0x57198b[_0xc472('0x32')][_0xc472('0x39')]);_0x1cd5f5['where']=qs[_0xc472('0x3c')](_[_0xc472('0x3b')](_0x57198b[_0xc472('0x32')],_0x3d412f[_0xc472('0x3c')]));if(_0x57198b['query'][_0xc472('0x3d')]){_0x1cd5f5['where']=_[_0xc472('0x3e')](_0x1cd5f5[_0xc472('0x3a')],{'$or':_['map'](_0x1cd5f5[_0xc472('0x35')],function(_0x3bb340){var _0x4cca0d={};_0x4cca0d[_0x3bb340]={'$like':'%'+_0x57198b[_0xc472('0x32')][_0xc472('0x3d')]+'%'};return _0x4cca0d;})});}if(_0x57198b[_0xc472('0x32')][_0xc472('0x59')]){var _0x9b74f4=_0x57198b[_0xc472('0x32')][_0xc472('0x59')][_0xc472('0x5a')](',');var _0x373006={};_0x373006[_0x9b74f4[0x0]]={'$gte':moment(_0x9b74f4[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x1cd5f5['where']=_[_0xc472('0x3e')](_0x1cd5f5[_0xc472('0x3a')],_0x373006);}_0x1cd5f5=_['merge']({},_0x1cd5f5,_0x57198b[_0xc472('0x47')]);return _0x4ab432['getMessages'](_0x1cd5f5);}})[_0xc472('0x28')](function(_0x687f02){if(_0x687f02){_0x4985bb=_0x687f02[_0xc472('0x36')];if(!_0x57198b['query'][_0xc472('0x55')](_0xc472('0x37'))){_0x1cd5f5[_0xc472('0x22')]=qs[_0xc472('0x22')](_0x57198b[_0xc472('0x32')][_0xc472('0x22')]);_0x1cd5f5['offset']=qs[_0xc472('0x20')](_0x57198b[_0xc472('0x32')][_0xc472('0x20')]);}return _0x4ab432['getMessages'](_0x1cd5f5);}})[_0xc472('0x28')](function(_0x2f297a){if(_0x2f297a){return _0x2f297a?{'count':_0x4985bb,'rows':_0x2f297a}:null;}})[_0xc472('0x28')](respondWithResult(_0x31e961,null))[_0xc472('0x43')](handleError(_0x31e961,null));};
\ No newline at end of file
index cc46613..14ae127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0344=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x1e8a8d,_0x257852){var _0x4657dc=function(_0x10567b){while(--_0x10567b){_0x1e8a8d['push'](_0x1e8a8d['shift']());}};_0x4657dc(++_0x257852);}(_0x0344,0x14b));var _0x4034=function(_0x2ffc54,_0x5ecb94){_0x2ffc54=_0x2ffc54-0x0;var _0x3f54b0=_0x0344[_0x2ffc54];return _0x3f54b0;};'use strict';var EventEmitter=require(_0x4034('0x0'));var ChatGroup=require(_0x4034('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x4034('0x2')](0x0);var events={'afterCreate':_0x4034('0x3'),'afterUpdate':_0x4034('0x4'),'afterDestroy':_0x4034('0x5')};function emitEvent(_0x5456c6){return function(_0x23760f,_0x5a2a21,_0x32499b){ChatGroupEvents[_0x4034('0x6')](_0x5456c6+':'+_0x23760f['id'],_0x23760f);ChatGroupEvents[_0x4034('0x6')](_0x5456c6,_0x23760f);_0x32499b(null);};}for(var e in events){if(events[_0x4034('0x7')](e)){var event=events[e];ChatGroup[_0x4034('0x8')](e,emitEvent(event));}}module[_0x4034('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0x2837=['emit','hook','exports','events','../../mysqldb','ChatGroup','save','update'];(function(_0x5c9c0f,_0x36c608){var _0x180fe6=function(_0x414b28){while(--_0x414b28){_0x5c9c0f['push'](_0x5c9c0f['shift']());}};_0x180fe6(++_0x36c608);}(_0x2837,0x12b));var _0x7283=function(_0x19fb24,_0x4f4d0e){_0x19fb24=_0x19fb24-0x0;var _0x4021cd=_0x2837[_0x19fb24];return _0x4021cd;};'use strict';var EventEmitter=require(_0x7283('0x0'));var ChatGroup=require(_0x7283('0x1'))['db'][_0x7283('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7283('0x3'),'afterUpdate':_0x7283('0x4'),'afterDestroy':'remove'};function emitEvent(_0x53f90e){return function(_0x40df2e,_0x3341f2,_0xdc68e3){ChatGroupEvents['emit'](_0x53f90e+':'+_0x40df2e['id'],_0x40df2e);ChatGroupEvents[_0x7283('0x5')](_0x53f90e,_0x40df2e);_0xdc68e3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x7283('0x6')](e,emitEvent(event));}}module[_0x7283('0x7')]=ChatGroupEvents;
\ No newline at end of file
index 394ec8d..4f00ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ae0=['../../config/logger','api','moment','request-promise','path','../../config/environment','./chatGroup.attributes','exports','ChatGroup','chat_groups','lodash','util'];(function(_0x256478,_0x1f1397){var _0x471bfe=function(_0x39ced0){while(--_0x39ced0){_0x256478['push'](_0x256478['shift']());}};_0x471bfe(++_0x1f1397);}(_0x8ae0,0x18a));var _0x08ae=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x8ae0[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x08ae('0x0'));var util=require(_0x08ae('0x1'));var logger=require(_0x08ae('0x2'))(_0x08ae('0x3'));var moment=require(_0x08ae('0x4'));var BPromise=require('bluebird');var rp=require(_0x08ae('0x5'));var fs=require('fs');var path=require(_0x08ae('0x6'));var rimraf=require('rimraf');var config=require(_0x08ae('0x7'));var attributes=require(_0x08ae('0x8'));module[_0x08ae('0x9')]=function(_0x4d77c,_0x1bef9d){return _0x4d77c['define'](_0x08ae('0xa'),attributes,{'tableName':_0x08ae('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa952=['chat_groups','lodash','util','moment','request-promise','path','../../config/environment','./chatGroup.attributes','exports','define','ChatGroup'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xa952,0x9b));var _0x2a95=function(_0x16d36c,_0x2cb0f6){_0x16d36c=_0x16d36c-0x0;var _0x33a4f1=_0xa952[_0x16d36c];return _0x33a4f1;};'use strict';var _=require(_0x2a95('0x0'));var util=require(_0x2a95('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2a95('0x2'));var BPromise=require('bluebird');var rp=require(_0x2a95('0x3'));var fs=require('fs');var path=require(_0x2a95('0x4'));var rimraf=require('rimraf');var config=require(_0x2a95('0x5'));var attributes=require(_0x2a95('0x6'));module[_0x2a95('0x7')]=function(_0x302732,_0x41e0b2){return _0x302732[_0x2a95('0x8')](_0x2a95('0x9'),attributes,{'tableName':_0x2a95('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 05948c3..3f7c107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10af=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','request','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatGroup,\x20%s,\x20%s','result','catch'];(function(_0x7e37ed,_0x514925){var _0x3eedfe=function(_0x17c125){while(--_0x17c125){_0x7e37ed['push'](_0x7e37ed['shift']());}};_0x3eedfe(++_0x514925);}(_0x10af,0xfc));var _0xf10a=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0x10af[_0x556927];return _0x5f1235;};'use strict';var _=require(_0xf10a('0x0'));var util=require('util');var moment=require(_0xf10a('0x1'));var BPromise=require(_0xf10a('0x2'));var rs=require(_0xf10a('0x3'));var fs=require('fs');var Redis=require(_0xf10a('0x4'));var db=require(_0xf10a('0x5'))['db'];var utils=require(_0xf10a('0x6'));var logger=require(_0xf10a('0x7'))(_0xf10a('0x8'));var config=require('../../config/environment');var jayson=require(_0xf10a('0x9'));var client=jayson[_0xf10a('0xa')]['http']({'port':0x232a});config['redis']=_[_0xf10a('0xb')](config[_0xf10a('0xc')],{'host':_0xf10a('0xd'),'port':0x18eb});var socket=require(_0xf10a('0xe'))(new Redis(config['redis']));require(_0xf10a('0xf'))['register'](socket);function respondWithRpcPromise(_0x35b508,_0x5e3d9b,_0x150d52){return new BPromise(function(_0x587bb0,_0x4b16ec){return client[_0xf10a('0x10')](_0x35b508,_0x150d52)['then'](function(_0x3558c6){logger[_0xf10a('0x11')]('ChatGroup,\x20%s,\x20%s',_0x5e3d9b,_0xf10a('0x12'));logger[_0xf10a('0x13')](_0xf10a('0x14'),_0x5e3d9b,_0xf10a('0x12'),JSON[_0xf10a('0x15')](_0x3558c6));if(_0x3558c6[_0xf10a('0x16')]){if(_0x3558c6[_0xf10a('0x16')][_0xf10a('0x17')]===0x1f4){logger[_0xf10a('0x16')]('ChatGroup,\x20%s,\x20%s',_0x5e3d9b,_0x3558c6[_0xf10a('0x16')]['message']);return _0x4b16ec(_0x3558c6['error'][_0xf10a('0x18')]);}logger[_0xf10a('0x16')](_0xf10a('0x19'),_0x5e3d9b,_0x3558c6[_0xf10a('0x16')][_0xf10a('0x18')]);return _0x587bb0(_0x3558c6['error'][_0xf10a('0x18')]);}else{logger[_0xf10a('0x11')](_0xf10a('0x19'),_0x5e3d9b,_0xf10a('0x12'));_0x587bb0(_0x3558c6[_0xf10a('0x1a')][_0xf10a('0x18')]);}})[_0xf10a('0x1b')](function(_0x27482c){logger[_0xf10a('0x16')](_0xf10a('0x19'),_0x5e3d9b,_0x27482c);_0x4b16ec(_0x27482c);});});}
\ No newline at end of file
+var _0xccc9=['then','info','debug','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request'];(function(_0x1a1d5a,_0x3d1246){var _0x2e578b=function(_0x18f06b){while(--_0x18f06b){_0x1a1d5a['push'](_0x1a1d5a['shift']());}};_0x2e578b(++_0x3d1246);}(_0xccc9,0xf4));var _0x9ccc=function(_0x13948e,_0x3bfc5b){_0x13948e=_0x13948e-0x0;var _0x325561=_0xccc9[_0x13948e];return _0x325561;};'use strict';var _=require(_0x9ccc('0x0'));var util=require(_0x9ccc('0x1'));var moment=require(_0x9ccc('0x2'));var BPromise=require(_0x9ccc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ccc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9ccc('0x5'));var logger=require('../../config/logger')(_0x9ccc('0x6'));var config=require('../../config/environment');var jayson=require(_0x9ccc('0x7'));var client=jayson[_0x9ccc('0x8')][_0x9ccc('0x9')]({'port':0x232a});config[_0x9ccc('0xa')]=_[_0x9ccc('0xb')](config[_0x9ccc('0xa')],{'host':_0x9ccc('0xc'),'port':0x18eb});var socket=require(_0x9ccc('0xd'))(new Redis(config[_0x9ccc('0xa')]));require(_0x9ccc('0xe'))[_0x9ccc('0xf')](socket);function respondWithRpcPromise(_0x256882,_0x5e1fad,_0x14f681){return new BPromise(function(_0x31b622,_0x264673){return client[_0x9ccc('0x10')](_0x256882,_0x14f681)[_0x9ccc('0x11')](function(_0x3ce6d6){logger[_0x9ccc('0x12')]('ChatGroup,\x20%s,\x20%s',_0x5e1fad,'request\x20sent');logger[_0x9ccc('0x13')](_0x9ccc('0x14'),_0x5e1fad,_0x9ccc('0x15'),JSON[_0x9ccc('0x16')](_0x3ce6d6));if(_0x3ce6d6[_0x9ccc('0x17')]){if(_0x3ce6d6[_0x9ccc('0x17')][_0x9ccc('0x18')]===0x1f4){logger[_0x9ccc('0x17')](_0x9ccc('0x19'),_0x5e1fad,_0x3ce6d6[_0x9ccc('0x17')][_0x9ccc('0x1a')]);return _0x264673(_0x3ce6d6[_0x9ccc('0x17')]['message']);}logger[_0x9ccc('0x17')](_0x9ccc('0x19'),_0x5e1fad,_0x3ce6d6[_0x9ccc('0x17')][_0x9ccc('0x1a')]);return _0x31b622(_0x3ce6d6[_0x9ccc('0x17')]['message']);}else{logger[_0x9ccc('0x12')](_0x9ccc('0x19'),_0x5e1fad,_0x9ccc('0x15'));_0x31b622(_0x3ce6d6[_0x9ccc('0x1b')][_0x9ccc('0x1a')]);}})[_0x9ccc('0x1c')](function(_0x500b50){logger[_0x9ccc('0x17')](_0x9ccc('0x19'),_0x5e1fad,_0x500b50);_0x264673(_0x500b50);});});}
\ No newline at end of file
index 03433c0..3f2c71e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db2=['removeListener','chatGroup:','save','update'];(function(_0x54c72c,_0x4a6360){var _0x5e961a=function(_0x51cc86){while(--_0x51cc86){_0x54c72c['push'](_0x54c72c['shift']());}};_0x5e961a(++_0x4a6360);}(_0x5db2,0x112));var _0x25db=function(_0x294a9e,_0x21d7c7){_0x294a9e=_0x294a9e-0x0;var _0x4b3346=_0x5db2[_0x294a9e];return _0x4b3346;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x25db('0x0'),'remove',_0x25db('0x1')];function createListener(_0x173dfd,_0x25e2c0){return function(_0x22ea63){_0x25e2c0['emit'](_0x173dfd,_0x22ea63);};}function removeListener(_0x3454bd,_0x5ea3df){return function(){ChatGroupEvents[_0x25db('0x2')](_0x3454bd,_0x5ea3df);};}exports['register']=function(_0xf76c01){for(var _0x50932e=0x0,_0x12088a=events['length'];_0x50932e<_0x12088a;_0x50932e++){var _0x3d26e1=events[_0x50932e];var _0x408228=createListener(_0x25db('0x3')+_0x3d26e1,_0xf76c01);ChatGroupEvents['on'](_0x3d26e1,_0x408228);}};
\ No newline at end of file
+var _0xd418=['chatGroup:','./chatGroup.events','save','update','removeListener','register','length'];(function(_0x1cfc39,_0x1d3913){var _0x957a28=function(_0x2be930){while(--_0x2be930){_0x1cfc39['push'](_0x1cfc39['shift']());}};_0x957a28(++_0x1d3913);}(_0xd418,0x14a));var _0x8d41=function(_0x29bf8d,_0x43aeee){_0x29bf8d=_0x29bf8d-0x0;var _0x497583=_0xd418[_0x29bf8d];return _0x497583;};'use strict';var ChatGroupEvents=require(_0x8d41('0x0'));var events=[_0x8d41('0x1'),'remove',_0x8d41('0x2')];function createListener(_0x5e5fbb,_0x38dbd8){return function(_0x2327b6){_0x38dbd8['emit'](_0x5e5fbb,_0x2327b6);};}function removeListener(_0x381142,_0x460cfb){return function(){ChatGroupEvents[_0x8d41('0x3')](_0x381142,_0x460cfb);};}exports[_0x8d41('0x4')]=function(_0x366a4a){for(var _0x4aa2b6=0x0,_0x5bc9d2=events[_0x8d41('0x5')];_0x4aa2b6<_0x5bc9d2;_0x4aa2b6++){var _0x3ef06c=events[_0x4aa2b6];var _0x1af172=createListener(_0x8d41('0x6')+_0x3ef06c,_0x366a4a);ChatGroupEvents['on'](_0x3ef06c,_0x1af172);}};
\ No newline at end of file
index 392c71b..ca22250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a38=['create','addMembers','addMessage','put','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','index','/describe','describe','isAuthenticated','show','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post'];(function(_0x4656a4,_0x4c7480){var _0x8291d3=function(_0x52eb54){while(--_0x52eb54){_0x4656a4['push'](_0x4656a4['shift']());}};_0x8291d3(++_0x4c7480);}(_0x0a38,0x166));var _0x80a3=function(_0x10b6e1,_0x3dedcc){_0x10b6e1=_0x10b6e1-0x0;var _0x42d2ae=_0x0a38[_0x10b6e1];return _0x42d2ae;};'use strict';var multer=require(_0x80a3('0x0'));var util=require(_0x80a3('0x1'));var path=require(_0x80a3('0x2'));var timeout=require(_0x80a3('0x3'));var express=require(_0x80a3('0x4'));var router=express[_0x80a3('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x80a3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x80a3('0x7'));var controller=require('./chatGroup.controller');router[_0x80a3('0x8')]('/',auth['isAuthenticated'](),controller[_0x80a3('0x9')]);router['get'](_0x80a3('0xa'),auth['isAuthenticated'](),controller[_0x80a3('0xb')]);router[_0x80a3('0x8')]('/:id',auth[_0x80a3('0xc')](),controller[_0x80a3('0xd')]);router[_0x80a3('0x8')]('/:id/unread',auth[_0x80a3('0xc')](),controller[_0x80a3('0xe')]);router[_0x80a3('0x8')](_0x80a3('0xf'),auth[_0x80a3('0xc')](),controller[_0x80a3('0x10')]);router[_0x80a3('0x8')](_0x80a3('0x11'),auth[_0x80a3('0xc')](),controller[_0x80a3('0x12')]);router[_0x80a3('0x13')]('/',auth[_0x80a3('0xc')](),controller[_0x80a3('0x14')]);router[_0x80a3('0x13')]('/:id/members',auth[_0x80a3('0xc')](),controller[_0x80a3('0x15')]);router[_0x80a3('0x13')](_0x80a3('0x11'),auth[_0x80a3('0xc')](),controller[_0x80a3('0x16')]);router[_0x80a3('0x17')](_0x80a3('0x18'),auth[_0x80a3('0xc')](),controller['update']);router[_0x80a3('0x19')](_0x80a3('0x18'),auth[_0x80a3('0xc')](),controller['destroy']);router['delete'](_0x80a3('0xf'),auth[_0x80a3('0xc')](),controller['removeMembers']);module[_0x80a3('0x1a')]=router;
\ No newline at end of file
+var _0xe77d=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','put','update','delete','destroy','removeMembers','exports','multer','util'];(function(_0x33ee4b,_0x559654){var _0x1f9511=function(_0x914b5c){while(--_0x914b5c){_0x33ee4b['push'](_0x33ee4b['shift']());}};_0x1f9511(++_0x559654);}(_0xe77d,0x1b1));var _0xde77=function(_0x43c05b,_0x5bd7c6){_0x43c05b=_0x43c05b-0x0;var _0x235a74=_0xe77d[_0x43c05b];return _0x235a74;};'use strict';var multer=require(_0xde77('0x0'));var util=require(_0xde77('0x1'));var path=require(_0xde77('0x2'));var timeout=require(_0xde77('0x3'));var express=require(_0xde77('0x4'));var router=express[_0xde77('0x5')]();var fs_extra=require(_0xde77('0x6'));var auth=require(_0xde77('0x7'));var interaction=require(_0xde77('0x8'));var config=require('../../config/environment');var controller=require(_0xde77('0x9'));router[_0xde77('0xa')]('/',auth[_0xde77('0xb')](),controller['index']);router['get'](_0xde77('0xc'),auth[_0xde77('0xb')](),controller[_0xde77('0xd')]);router[_0xde77('0xa')](_0xde77('0xe'),auth[_0xde77('0xb')](),controller[_0xde77('0xf')]);router[_0xde77('0xa')](_0xde77('0x10'),auth['isAuthenticated'](),controller[_0xde77('0x11')]);router[_0xde77('0xa')](_0xde77('0x12'),auth[_0xde77('0xb')](),controller[_0xde77('0x13')]);router['get'](_0xde77('0x14'),auth[_0xde77('0xb')](),controller[_0xde77('0x15')]);router[_0xde77('0x16')]('/',auth[_0xde77('0xb')](),controller['create']);router[_0xde77('0x16')]('/:id/members',auth[_0xde77('0xb')](),controller['addMembers']);router[_0xde77('0x16')]('/:id/messages',auth['isAuthenticated'](),controller['addMessage']);router[_0xde77('0x17')](_0xde77('0xe'),auth[_0xde77('0xb')](),controller[_0xde77('0x18')]);router[_0xde77('0x19')](_0xde77('0xe'),auth[_0xde77('0xb')](),controller[_0xde77('0x1a')]);router[_0xde77('0x19')](_0xde77('0x12'),auth[_0xde77('0xb')](),controller[_0xde77('0x1b')]);module[_0xde77('0x1c')]=router;
\ No newline at end of file
index 6cf42d3..c8624fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3276=['BOOLEAN','sequelize','INTEGER','ENUM','star','thumb','TEXT','STRING','DATE'];(function(_0x6dec06,_0x3fc76c){var _0x1415cf=function(_0x389076){while(--_0x389076){_0x6dec06['push'](_0x6dec06['shift']());}};_0x1415cf(++_0x3fc76c);}(_0x3276,0xc7));var _0x6327=function(_0x499b5d,_0x3c6eb1){_0x499b5d=_0x499b5d-0x0;var _0x35d1e6=_0x3276[_0x499b5d];return _0x35d1e6;};'use strict';var Sequelize=require(_0x6327('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x6327('0x1')]},'ratingType':{'type':Sequelize[_0x6327('0x2')](_0x6327('0x3'),_0x6327('0x4')),'defaultValue':_0x6327('0x3')},'ratingMessage':{'type':Sequelize[_0x6327('0x5')]},'pathTranscript':{'type':Sequelize[_0x6327('0x5')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6327('0x6')]},'secondDisposition':{'type':Sequelize[_0x6327('0x6')]},'thirdDisposition':{'type':Sequelize[_0x6327('0x6')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x6327('0x6')]},'browserVersion':{'type':Sequelize[_0x6327('0x6')]},'osName':{'type':Sequelize[_0x6327('0x6')]},'osVersion':{'type':Sequelize[_0x6327('0x6')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0x6327('0x6')]},'deviceType':{'type':Sequelize[_0x6327('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x6327('0x6')]},'formData':{'type':Sequelize[_0x6327('0x5')]('long')},'read1stAt':{'type':Sequelize[_0x6327('0x7')]},'lastMsgAt':{'type':Sequelize[_0x6327('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x6327('0x2')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x6327('0x6')]},'customerPort':{'type':Sequelize[_0x6327('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x6327('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x6327('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3750=['thumb','star','TEXT','STRING','DATE','long','out','sequelize','exports','BOOLEAN','INTEGER','ENUM'];(function(_0x2a3e9e,_0xbe6590){var _0x53ca15=function(_0x2a5e2f){while(--_0x2a5e2f){_0x2a3e9e['push'](_0x2a3e9e['shift']());}};_0x53ca15(++_0xbe6590);}(_0x3750,0xbb));var _0x0375=function(_0x3a0c4f,_0x5dd1a3){_0x3a0c4f=_0x3a0c4f-0x0;var _0x247049=_0x3750[_0x3a0c4f];return _0x247049;};'use strict';var Sequelize=require(_0x0375('0x0'));module[_0x0375('0x1')]={'closed':{'type':Sequelize[_0x0375('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x0375('0x3')]},'ratingType':{'type':Sequelize[_0x0375('0x4')]('star',_0x0375('0x5')),'defaultValue':_0x0375('0x6')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x0375('0x7')]},'mailTranscript':{'type':Sequelize[_0x0375('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x0375('0x9')]},'disposition':{'type':Sequelize[_0x0375('0x8')]},'secondDisposition':{'type':Sequelize[_0x0375('0x8')]},'thirdDisposition':{'type':Sequelize[_0x0375('0x8')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x0375('0x8')]},'browserVersion':{'type':Sequelize[_0x0375('0x8')]},'osName':{'type':Sequelize[_0x0375('0x8')]},'osVersion':{'type':Sequelize[_0x0375('0x8')]},'deviceModel':{'type':Sequelize[_0x0375('0x8')]},'deviceVendor':{'type':Sequelize[_0x0375('0x8')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x0375('0x7')]},'customerIp':{'type':Sequelize[_0x0375('0x8')]},'formData':{'type':Sequelize[_0x0375('0x7')](_0x0375('0xa'))},'read1stAt':{'type':Sequelize[_0x0375('0x9')]},'lastMsgAt':{'type':Sequelize[_0x0375('0x9')]},'lastMsgDirection':{'type':Sequelize[_0x0375('0x4')]('in',_0x0375('0xb')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x0375('0x8')]},'customerPort':{'type':Sequelize[_0x0375('0x8')]},'vidaooSessionId':{'type':Sequelize[_0x0375('0x7')]},'autoreplyExecuted':{'type':Sequelize[_0x0375('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 6d968d3..7aba505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb161=['now','pathTranscript','User','ContactId','Messages','%s%d','agentAlias','System','customer','format','Visitor','agentIdentifier','website_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','MailServerOut','CloudProvider','getSmtpOptions','sendMail','\x22%s\x22\x20<%s>','email','Smtp','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','ids','getMessages','nolimit','sort','where','pick','ChatInteractionId','filter','split','YYYY-MM-DD\x20HH:mm:ss','options','include','rows','getMyMessages','hasOwnProperty','order','includeAgent','setTags','Tag','color','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','push','Contact','lastName','secret','read','Account','mkdirSync','Chat','Owner','N.A.','createdAt','toString','browserName','osName','referer','customerPort','tail','map','existsSync','pipe','createWriteStream','firstName','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','rimraf','zip-dir','moment','bluebird','mustache','path','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','client','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','update','destroy','stack','name','render','merge','body','agent','interaction','account','index','rawAttributes','type','key','findAll','query','user','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','ChatInteraction','find','create','describe','ChatWebsite','findOne','ChatWebsiteId','vidaooApiKey','vidaooTopic','vidaooEscalation','fullname','contact','POST','isNull','vidaooMetadata','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','disposition','AbandonInteraction','file','mimetype','Attachment','attachmentDownload','join','root','offline-chat/','basename','download','close','mailTranscript','server/files/chat/upload/','transcript-%s.txt'];(function(_0x2487e3,_0x3decfb){var _0x4d49e6=function(_0x52d14f){while(--_0x52d14f){_0x2487e3['push'](_0x2487e3['shift']());}};_0x4d49e6(++_0x3decfb);}(_0xb161,0x122));var _0x1b16=function(_0x7729b1,_0x468322){_0x7729b1=_0x7729b1-0x0;var _0x349504=_0xb161[_0x7729b1];return _0x349504;};'use strict';var rimraf=require(_0x1b16('0x0'));var zipdir=require(_0x1b16('0x1'));var rp=require('request-promise');var moment=require(_0x1b16('0x2'));var BPromise=require(_0x1b16('0x3'));var Mustache=require(_0x1b16('0x4'));var util=require('util');var path=require(_0x1b16('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require(_0x1b16('0x6'));var interaction=require(_0x1b16('0x7'));var qs=require(_0x1b16('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0x1b16('0x9'))(_0x1b16('0xa'));var config=require(_0x1b16('0xb'));var db=require(_0x1b16('0xc'))['db'];config[_0x1b16('0xd')]=_['defaults'](config[_0x1b16('0xd')],{'host':_0x1b16('0xe'),'port':0x18eb});var socket=require(_0x1b16('0xf'))(new Redis(config[_0x1b16('0xd')]));require(_0x1b16('0x10'))[_0x1b16('0x11')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1b16('0x12')][_0x1b16('0x13')]({'port':0x232b});var client9004=jayson[_0x1b16('0x12')][_0x1b16('0x13')]({'port':0x232c});function respondWithRpcPromise(_0xaac92e,_0x40f8ac,_0x46b121,_0x3bc7d4){return new BPromise(function(_0x475a39,_0x47b3b9){var _0x1d1b60=_0x3bc7d4||client;return _0x1d1b60[_0x1b16('0x14')](_0xaac92e,_0x46b121)[_0x1b16('0x15')](function(_0x22c002){logger[_0x1b16('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x40f8ac,_0x1b16('0x17'));logger[_0x1b16('0x18')](_0x1b16('0x19'),_0x40f8ac,'request\x20sent',JSON[_0x1b16('0x1a')](_0x22c002));if(_0x22c002[_0x1b16('0x1b')]){if(_0x22c002['error']['code']===0x1f4){logger[_0x1b16('0x1b')](_0x1b16('0x1c'),_0x40f8ac,_0x22c002['error'][_0x1b16('0x1d')]);return _0x47b3b9(_0x22c002[_0x1b16('0x1b')][_0x1b16('0x1d')]);}logger[_0x1b16('0x1b')](_0x1b16('0x1c'),_0x40f8ac,_0x22c002['error'][_0x1b16('0x1d')]);return _0x475a39(_0x22c002['error'][_0x1b16('0x1d')]);}else{logger[_0x1b16('0x16')](_0x1b16('0x1c'),_0x40f8ac,_0x1b16('0x17'));_0x475a39(_0x22c002[_0x1b16('0x1e')]['message']);}})[_0x1b16('0x1f')](function(_0x37600c){logger['error'](_0x1b16('0x1c'),_0x40f8ac,_0x37600c);_0x47b3b9(_0x37600c);});});}function respondWithStatusCode(_0x2403fb,_0x5bec91){_0x5bec91=_0x5bec91||0xcc;return function(_0x55b2a9){if(_0x55b2a9){return _0x2403fb[_0x1b16('0x20')](_0x5bec91);}return _0x2403fb['status'](_0x5bec91)[_0x1b16('0x21')]();};}function respondWithResult(_0x5015d7,_0x104412){_0x104412=_0x104412||0xc8;return function(_0x2c0c0e){if(_0x2c0c0e){return _0x5015d7[_0x1b16('0x22')](_0x104412)[_0x1b16('0x23')](_0x2c0c0e);}};}function respondWithFilteredResult(_0x524c91,_0x7980a4){return function(_0x29e7f9){if(_0x29e7f9){var _0x338747=typeof _0x7980a4[_0x1b16('0x24')]==='undefined'&&typeof _0x7980a4[_0x1b16('0x25')]===_0x1b16('0x26');var _0x4bc2dc=_0x29e7f9[_0x1b16('0x27')];var _0x18d11c=_0x338747?0x0:_0x7980a4[_0x1b16('0x24')];var _0x465a62=_0x338747?_0x29e7f9[_0x1b16('0x27')]:_0x7980a4[_0x1b16('0x24')]+_0x7980a4[_0x1b16('0x25')];var _0x2428b2;if(_0x465a62>=_0x4bc2dc){_0x465a62=_0x4bc2dc;_0x2428b2=0xc8;}else{_0x2428b2=0xce;}_0x524c91['status'](_0x2428b2);return _0x524c91[_0x1b16('0x28')](_0x1b16('0x29'),_0x18d11c+'-'+_0x465a62+'/'+_0x4bc2dc)[_0x1b16('0x23')](_0x29e7f9);}return null;};}function saveUpdates(_0x345633){return function(_0x276d60){if(_0x276d60){return _0x276d60[_0x1b16('0x2a')](_0x345633)[_0x1b16('0x15')](function(_0x53bb4e){return _0x53bb4e;});}return null;};}function removeEntity(_0x9f52d8){return function(_0x92f119){if(_0x92f119){return _0x92f119[_0x1b16('0x2b')]()[_0x1b16('0x15')](function(){_0x9f52d8[_0x1b16('0x22')](0xcc)[_0x1b16('0x21')]();});}};}function handleEntityNotFound(_0x5b06ff){return function(_0x2e19cd){if(!_0x2e19cd){_0x5b06ff[_0x1b16('0x20')](0x194);}return _0x2e19cd;};}function handleError(_0x4089a2,_0x1df7d3){_0x1df7d3=_0x1df7d3||0x1f4;return function(_0x339164){logger[_0x1b16('0x1b')](_0x339164[_0x1b16('0x2c')]);if(_0x339164[_0x1b16('0x2d')]){delete _0x339164[_0x1b16('0x2d')];}_0x4089a2[_0x1b16('0x22')](_0x1df7d3)['send'](_0x339164);};}function getMustacheRender(_0x309284,_0x587f8d){return Mustache[_0x1b16('0x2e')](_0x309284,_[_0x1b16('0x2f')](_0x587f8d[_0x1b16('0x30')],{'contact':_0x587f8d['contact'],'message':_0x587f8d['message'],'agent':_0x587f8d[_0x1b16('0x31')],'interaction':_0x587f8d[_0x1b16('0x32')],'account':_0x587f8d[_0x1b16('0x33')]}))||'';}exports[_0x1b16('0x34')]=function(_0x3774ac,_0x4d84bd){var _0x52dcfb={};var _0x1135dd=_['map'](db['ChatInteraction'][_0x1b16('0x35')],function(_0x447f9a){return{'name':_0x447f9a['fieldName'],'type':_0x447f9a[_0x1b16('0x36')][_0x1b16('0x37')]};});_0x52dcfb=qs['getOptions'](_0x1135dd,_0x3774ac);return interaction[_0x1b16('0x38')]('chat',_0x3774ac[_0x1b16('0x39')],_0x3774ac[_0x1b16('0x3a')],_0x52dcfb,_0x1135dd)[_0x1b16('0x15')](respondWithFilteredResult(_0x4d84bd,_0x52dcfb))[_0x1b16('0x1f')](handleError(_0x4d84bd,null));};exports[_0x1b16('0x3b')]=function(_0x5d66e8,_0x3f85d1){var _0x543928={'raw':![],'where':{'id':_0x5d66e8[_0x1b16('0x3c')]['id']}},_0x7d14f6={};_0x7d14f6[_0x1b16('0x3d')]=_['keys'](db['ChatInteraction'][_0x1b16('0x35')]);_0x7d14f6[_0x1b16('0x39')]=_[_0x1b16('0x3e')](_0x5d66e8[_0x1b16('0x39')]);_0x7d14f6[_0x1b16('0x3f')]=_[_0x1b16('0x40')](_0x7d14f6[_0x1b16('0x3d')],_0x7d14f6[_0x1b16('0x39')]);_0x543928[_0x1b16('0x41')]=_['intersection'](_0x7d14f6[_0x1b16('0x3d')],qs[_0x1b16('0x42')](_0x5d66e8[_0x1b16('0x39')][_0x1b16('0x42')]));_0x543928['attributes']=_0x543928[_0x1b16('0x41')][_0x1b16('0x43')]?_0x543928[_0x1b16('0x41')]:_0x7d14f6[_0x1b16('0x3d')];if(_0x5d66e8[_0x1b16('0x39')][_0x1b16('0x44')]){_0x543928['include']=[{'all':!![]}];}_0x543928=_['merge']({},_0x543928,_0x5d66e8['options']);return db[_0x1b16('0x45')][_0x1b16('0x46')](_0x543928)[_0x1b16('0x15')](handleEntityNotFound(_0x3f85d1,null))[_0x1b16('0x15')](respondWithResult(_0x3f85d1,null))[_0x1b16('0x1f')](handleError(_0x3f85d1,null));};exports['create']=function(_0xaa8177,_0x1a273c){return db[_0x1b16('0x45')][_0x1b16('0x47')](_0xaa8177[_0x1b16('0x30')],{})[_0x1b16('0x15')](respondWithResult(_0x1a273c,0xc9))['catch'](handleError(_0x1a273c,null));};exports[_0x1b16('0x2a')]=function(_0x5a2dce,_0x1a432b){if(_0x5a2dce['body']['id']){delete _0x5a2dce[_0x1b16('0x30')]['id'];}return db[_0x1b16('0x45')][_0x1b16('0x46')]({'where':{'id':_0x5a2dce[_0x1b16('0x3c')]['id']}})[_0x1b16('0x15')](handleEntityNotFound(_0x1a432b,null))[_0x1b16('0x15')](saveUpdates(_0x5a2dce[_0x1b16('0x30')],null))['then'](respondWithResult(_0x1a432b,null))[_0x1b16('0x1f')](handleError(_0x1a432b,null));};exports[_0x1b16('0x2b')]=function(_0x23a298,_0xc7cf66){return db[_0x1b16('0x45')]['find']({'where':{'id':_0x23a298[_0x1b16('0x3c')]['id']}})[_0x1b16('0x15')](handleEntityNotFound(_0xc7cf66,null))[_0x1b16('0x15')](removeEntity(_0xc7cf66,null))[_0x1b16('0x1f')](handleError(_0xc7cf66,null));};exports[_0x1b16('0x48')]=function(_0x18ce2a,_0x194ff6){return db[_0x1b16('0x45')]['describe']()[_0x1b16('0x15')](respondWithResult(_0x194ff6,null))[_0x1b16('0x1f')](handleError(_0x194ff6,null));};exports['createVidaooSession']=function(_0x15cb4c,_0x2cadd4){var _0xa06e7c=_0x15cb4c[_0x1b16('0x3c')]['id'];var _0xec304b;var _0x21b055;var _0x25596c;return db[_0x1b16('0x45')]['findOne']({'where':{'id':_0xa06e7c}})[_0x1b16('0x15')](function(_0x349f97){_0xec304b=_0x349f97;return db[_0x1b16('0x49')][_0x1b16('0x4a')]({'where':{'id':_0x349f97[_0x1b16('0x4b')]},'attributes':['id',_0x1b16('0x4c'),'vidaooEscalation',_0x1b16('0x4d'),'vidaooNote','vidaooMetadata'],'raw':!![]});})[_0x1b16('0x15')](function(_0x13900e){if(_0x13900e&&_0x13900e['vidaooApiKey']&&_0x13900e[_0x1b16('0x4e')]){_0x21b055=_0x13900e;var _0x57d565={'interaction':{'id':_0xa06e7c},'agent':{'id':_0x15cb4c[_0x1b16('0x3a')]['id'],'name':_0x15cb4c['user']['name'],'fullname':_0x15cb4c[_0x1b16('0x3a')][_0x1b16('0x4f')],'email':_0x15cb4c[_0x1b16('0x3a')]['email']},'contact':_0x15cb4c[_0x1b16('0x30')][_0x1b16('0x50')],'account':_0x15cb4c[_0x1b16('0x30')][_0x1b16('0x33')]};var _0x2184e2={'rejectUnauthorized':![],'method':_0x1b16('0x51'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x13900e[_0x1b16('0x4c')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x15cb4c[_0x1b16('0x3a')]['email']],'buttons':null,'topic':_0x21b055[_0x1b16('0x4d')],'note':_[_0x1b16('0x52')](_0x21b055['vidaooNote'])?null:getMustacheRender(_0x21b055['vidaooNote'],_0x57d565),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x1b16('0x52')](_0x21b055[_0x1b16('0x53')])){var _0x11ae38=getMustacheRender(_0x21b055['vidaooMetadata'],_0x57d565);var _0x5bf0a9=JSON['parse'](_0x11ae38);_0x2184e2[_0x1b16('0x30')][_0x1b16('0x54')]=_0x5bf0a9;}}catch(_0x3154d9){throw new db[(_0x1b16('0x55'))][(_0x1b16('0x56'))](_0x1b16('0x57'));}return rp(_0x2184e2);}else{throw new db[(_0x1b16('0x55'))][(_0x1b16('0x56'))](_0x1b16('0x58'));}})[_0x1b16('0x15')](function(_0x233d04){_0x25596c=_0x233d04;if(_0x25596c['id']){var _0x4f4483={'body':_0x25596c[_0x1b16('0x59')],'ChatWebsiteId':_0x21b055['id'],'ChatInteractionId':_0xec304b['id'],'direction':_0x1b16('0x5a'),'UserId':_0x15cb4c[_0x1b16('0x3a')]['id']};return db[_0x1b16('0x5b')][_0x1b16('0x47')](_0x4f4483,{});}else{throw new db[(_0x1b16('0x55'))]['ValidationError'](_0x1b16('0x5c'));}})[_0x1b16('0x15')](function(){return _0xec304b[_0x1b16('0x5d')]({'vidaooSessionId':_0x25596c['id']});})[_0x1b16('0x15')](respondWithResult(_0x2cadd4,null))[_0x1b16('0x1f')](handleError(_0x2cadd4,null));};exports[_0x1b16('0x5e')]=function(_0x23cdf4,_0xab6fc7){if(_0x23cdf4[_0x1b16('0x30')]['id']){delete _0x23cdf4['body']['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x23cdf4[_0x1b16('0x3c')]['id']},'include':[{'model':db[_0x1b16('0x5f')],'as':'Contact'}]})['then'](handleEntityNotFound(_0xab6fc7,null))[_0x1b16('0x15')](saveUpdates(_0x23cdf4['body'],null))[_0x1b16('0x15')](respondWithResult(_0xab6fc7,null))[_0x1b16('0x1f')](handleError(_0xab6fc7,null));};exports[_0x1b16('0x60')]=function(_0x4f4317,_0x553318){if(_0x4f4317[_0x1b16('0x30')]['id']){delete _0x4f4317[_0x1b16('0x30')]['id'];}return db[_0x1b16('0x45')]['find']({'where':{'id':_0x4f4317[_0x1b16('0x3c')]['id']}})['then'](function(_0x11d6fc){if(!_0x11d6fc){logger[_0x1b16('0x1b')](_0x1b16('0x61'),_0x1b16('0x60'),0x194,_0x1b16('0x62'));_0x553318['sendStatus'](0x194);}else{if(_0x11d6fc[_0x1b16('0x63')]){throw new db[(_0x1b16('0x55'))][(_0x1b16('0x56'))](_0x1b16('0x64'));}}return _0x11d6fc;})[_0x1b16('0x15')](function(_0x2aea33){if(_0x2aea33){return _0x2aea33[_0x1b16('0x2a')]({'closed':_0x4f4317[_0x1b16('0x30')]['closed'],'disposition':_0x4f4317[_0x1b16('0x30')][_0x1b16('0x65')]})[_0x1b16('0x15')](function(_0x347429){return _0x347429;});}})[_0x1b16('0x15')](function(){return respondWithRpcPromise(_0x1b16('0x66'),'abandon',_0x4f4317[_0x1b16('0x30')],client9004);})[_0x1b16('0x15')](respondWithResult(_0x553318,null))[_0x1b16('0x1f')](handleError(_0x553318,null));};exports['attachmentUpload']=function(_0x5de86e,_0x5a8486){_0x5de86e[_0x1b16('0x30')][_0x1b16('0x2d')]=_0x5de86e[_0x1b16('0x67')]['originalname'];_0x5de86e[_0x1b16('0x30')]['basename']=_0x5de86e[_0x1b16('0x67')]['filename'];_0x5de86e[_0x1b16('0x30')][_0x1b16('0x36')]=_0x5de86e[_0x1b16('0x67')][_0x1b16('0x68')];return db[_0x1b16('0x69')]['create'](_0x5de86e[_0x1b16('0x30')])[_0x1b16('0x15')](respondWithResult(_0x5a8486,0xc9))[_0x1b16('0x1f')](handleError(_0x5a8486,null));};exports[_0x1b16('0x6a')]=function(_0x2da41f,_0x5c8269){return db['ChatInteraction']['findOne']({'where':{'id':_0x2da41f[_0x1b16('0x3c')]['id']},'raw':!![]})[_0x1b16('0x15')](handleEntityNotFound(_0x5c8269,null))['then'](function(_0x2fdab4){if(_0x2fdab4){if(_0x2fdab4['closed']){return _0x5c8269[_0x1b16('0x22')](0x193)[_0x1b16('0x23')]({'status':0x193,'message':'Unauthorized'});}return db[_0x1b16('0x69')][_0x1b16('0x4a')]({'where':{'id':_0x2da41f[_0x1b16('0x39')]['attachId']},'raw':!![]})[_0x1b16('0x15')](handleEntityNotFound(_0x5c8269,null));}})[_0x1b16('0x15')](function(_0x1445a9){if(_0x1445a9){var _0x8da3b2=_0x1445a9['ChatOfflineMessageId']!==null;var _0x1345ac=path[_0x1b16('0x6b')](config[_0x1b16('0x6c')],'server/files/attachments/');if(_0x8da3b2){_0x1345ac=path[_0x1b16('0x6b')](_0x1345ac,_0x1b16('0x6d'));}var _0x894ded=path['join'](_0x1345ac,_0x1445a9[_0x1b16('0x6e')]);return _0x5c8269[_0x1b16('0x6f')](_0x894ded);}})[_0x1b16('0x1f')](handleError(_0x5c8269,null));};exports[_0x1b16('0x70')]=function(_0x1ca92d,_0x163d62){var _0x257754=null;var _0x440c5f=null;var _0x581e6a=null;if(_0x1ca92d[_0x1b16('0x30')]['id']){delete _0x1ca92d[_0x1b16('0x30')]['id'];}if(_0x1ca92d['body'][_0x1b16('0x71')]){_0x581e6a=path[_0x1b16('0x6b')](config[_0x1b16('0x6c')],_0x1b16('0x72'),util['format'](_0x1b16('0x73'),Date[_0x1b16('0x74')]()));_0x1ca92d[_0x1b16('0x30')][_0x1b16('0x75')]=_0x581e6a;}return db[_0x1b16('0x45')][_0x1b16('0x46')]({'where':{'id':_0x1ca92d[_0x1b16('0x3c')]['id']},'include':[{'model':db[_0x1b16('0x5b')],'as':'Messages','include':[{'model':db[_0x1b16('0x76')],'as':_0x1b16('0x76')}]}]})[_0x1b16('0x15')](handleEntityNotFound(_0x163d62,null))['then'](saveUpdates(_0x1ca92d[_0x1b16('0x30')],null))['then'](function(_0x408985){if(_0x408985){_0x257754=_0x408985;return db['ChatWebsite'][_0x1b16('0x46')]({'where':{'id':_0x257754[_0x1b16('0x4b')]}});}})[_0x1b16('0x15')](function(_0x37dfa1){if(_0x37dfa1){_0x440c5f=_0x37dfa1;return db[_0x1b16('0x5f')][_0x1b16('0x46')]({'where':{'id':_0x257754[_0x1b16('0x77')]}});}})['then'](function(_0x587c37){if(_0x587c37){if(_0x581e6a){var _0x58174b=null;for(var _0xe6137c=0x1;_0xe6137c<_0x257754[_0x1b16('0x78')][_0x1b16('0x43')];++_0xe6137c){_0x58174b=_0x257754[_0x1b16('0x78')][_0xe6137c];var _0x286547=_0x58174b[_0x1b16('0x63')]?util['format'](_0x1b16('0x79'),_0x440c5f[_0x1b16('0x7a')],_0x58174b['UserId']):_0x1b16('0x7b');var _0x44d56d=_0x1ca92d[_0x1b16('0x30')][_0x1b16('0x7c')]||util[_0x1b16('0x7d')](_0x1b16('0x79'),_0x1b16('0x7e'),_0x58174b[_0x1b16('0x77')]);switch(_0x440c5f[_0x1b16('0x7f')]){case _0x1b16('0x80'):_0x286547=_0x58174b[_0x1b16('0x63')]?util['format'](_0x1b16('0x79'),_0x440c5f['agentAlias'],_0x58174b[_0x1b16('0x63')]):'System';break;case'agent_alias':_0x286547=_0x58174b['UserId']?_0x58174b[_0x1b16('0x76')][_0x1b16('0x81')]||_0x58174b[_0x1b16('0x76')]['fullname']:_0x1b16('0x7b');break;case _0x1b16('0x82'):_0x286547=_0x58174b[_0x1b16('0x63')]?_0x58174b[_0x1b16('0x76')]['fullname']:'System';break;default:_0x286547=_0x58174b['UserId']?util[_0x1b16('0x7d')]('%s%d',_0x440c5f[_0x1b16('0x7a')],_0x58174b[_0x1b16('0x63')]):_0x1b16('0x7b');}var _0x487f8a=util[_0x1b16('0x7d')](_0x1b16('0x83'),moment(_0x58174b['createdAt'])[_0x1b16('0x7d')](_0x1b16('0x84')),_0x58174b[_0x1b16('0x85')]==='in'?_0x44d56d:_0x286547,_0x58174b[_0x1b16('0x30')]);if(!_0x58174b['secret']){fs[_0x1b16('0x86')](_0x581e6a,_0x487f8a);}}return db['MailAccount'][_0x1b16('0x4a')]({'where':{'service':!![]},'include':[{'model':db[_0x1b16('0x87')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x1b16('0x88'),'raw':!![]}]}]});}}})[_0x1b16('0x15')](function(_0x4f4b56){if(!_0x4f4b56||!_0x4f4b56['Smtp']||!_0x1ca92d['body'])return _0x257754;var _0x50ed94=_0x4f4b56[_0x1b16('0x89')]();return respondWithRpcPromise('SendMail',_0x1b16('0x8a'),{'account':_0x50ed94,'message':{'from':util[_0x1b16('0x7d')](_0x1b16('0x8b'),_0x4f4b56[_0x1b16('0x2d')],_0x4f4b56[_0x1b16('0x8c')]||_0x4f4b56[_0x1b16('0x8d')][_0x1b16('0x3a')]),'to':_0x1ca92d['body'][_0x1b16('0x71')],'subject':_0x1b16('0x8e'),'text':util[_0x1b16('0x7d')](_0x1b16('0x8f'),_0x1ca92d[_0x1b16('0x30')][_0x1b16('0x71')]),'attachments':[{'path':_0x581e6a}]}})[_0x1b16('0x15')](function(){return _0x257754;})[_0x1b16('0x1f')](function(_0x5d29b5){logger[_0x1b16('0x1b')](_0x5d29b5);});})[_0x1b16('0x15')](respondWithStatusCode(_0x163d62,0xc8))[_0x1b16('0x1f')](handleError(_0x163d62,null));};exports['addMessage']=function(_0x3747b3,_0x282907){return db[_0x1b16('0x5b')][_0x1b16('0x46')]({'where':{'id':_0x3747b3['params']['id']}})[_0x1b16('0x15')](handleEntityNotFound(_0x282907,null))[_0x1b16('0x15')](function(_0x46260f){if(_0x46260f){return _0x46260f[_0x1b16('0x90')](_0x3747b3[_0x1b16('0x30')]['ids'],_[_0x1b16('0x91')](_0x3747b3['body'],[_0x1b16('0x92'),'id'])||{});}})[_0x1b16('0x15')](respondWithResult(_0x282907,null))[_0x1b16('0x1f')](handleError(_0x282907,null));};exports[_0x1b16('0x93')]=function(_0x196beb,_0x4c6c34){var _0x384941={'raw':![],'where':{}};var _0x14a9bc={};var _0x57fb91={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x1b16('0x4a')]({'where':{'id':_0x196beb[_0x1b16('0x3c')]['id']}})[_0x1b16('0x15')](handleEntityNotFound(_0x4c6c34,null))[_0x1b16('0x15')](function(_0x90890){if(_0x90890){_0x14a9bc[_0x1b16('0x3d')]=_[_0x1b16('0x3e')](db['ChatMessage'][_0x1b16('0x35')]);_0x14a9bc[_0x1b16('0x39')]=_[_0x1b16('0x3e')](_0x196beb[_0x1b16('0x39')]);_0x14a9bc['filters']=_[_0x1b16('0x40')](_0x14a9bc[_0x1b16('0x3d')],_0x14a9bc[_0x1b16('0x39')]);_0x384941[_0x1b16('0x41')]=_['intersection'](_0x14a9bc[_0x1b16('0x3d')],qs[_0x1b16('0x42')](_0x196beb[_0x1b16('0x39')][_0x1b16('0x42')]));_0x384941[_0x1b16('0x41')]=_0x384941[_0x1b16('0x41')][_0x1b16('0x43')]?_0x384941[_0x1b16('0x41')]:_0x14a9bc[_0x1b16('0x3d')];if(!_0x196beb[_0x1b16('0x39')]['hasOwnProperty'](_0x1b16('0x94'))){_0x384941['limit']=qs[_0x1b16('0x25')](_0x196beb[_0x1b16('0x39')][_0x1b16('0x25')]);_0x384941[_0x1b16('0x24')]=qs[_0x1b16('0x24')](_0x196beb[_0x1b16('0x39')][_0x1b16('0x24')]);}_0x384941['order']=qs[_0x1b16('0x95')](_0x196beb[_0x1b16('0x39')][_0x1b16('0x95')]);_0x384941[_0x1b16('0x96')]=qs[_0x1b16('0x3f')](_[_0x1b16('0x97')](_0x196beb[_0x1b16('0x39')],_0x14a9bc[_0x1b16('0x3f')]));_0x384941[_0x1b16('0x96')][_0x1b16('0x98')]=_0x90890['id'];if(_0x196beb[_0x1b16('0x39')][_0x1b16('0x99')]){_0x384941[_0x1b16('0x96')]=_['merge'](_0x384941[_0x1b16('0x96')],{'$or':_['map'](_0x384941[_0x1b16('0x41')],function(_0x5786e3){var _0x5b05aa={};_0x5b05aa[_0x5786e3]={'$like':'%'+_0x196beb[_0x1b16('0x39')][_0x1b16('0x99')]+'%'};return _0x5b05aa;})});}if(_0x196beb[_0x1b16('0x39')]['$gte']){var _0x234c74=_0x196beb[_0x1b16('0x39')]['$gte'][_0x1b16('0x9a')](',');var _0x4906b9={};_0x4906b9[_0x234c74[0x0]]={'$gte':moment(_0x234c74[0x1])[_0x1b16('0x7d')](_0x1b16('0x9b'))};_0x384941[_0x1b16('0x96')]=_['merge'](_0x384941[_0x1b16('0x96')],_0x4906b9);}_0x384941=_[_0x1b16('0x2f')]({},_0x384941,_0x196beb[_0x1b16('0x9c')]);return db[_0x1b16('0x5b')][_0x1b16('0x27')]({'where':_0x384941[_0x1b16('0x96')]})[_0x1b16('0x15')](function(_0x42e56a){_0x57fb91[_0x1b16('0x27')]=_0x42e56a;if(_0x196beb[_0x1b16('0x39')]['includeAll']){_0x384941[_0x1b16('0x9d')]=[{'all':!![]}];}return db[_0x1b16('0x5b')][_0x1b16('0x38')](_0x384941);})[_0x1b16('0x15')](function(_0x534922){_0x57fb91[_0x1b16('0x9e')]=_0x534922;return _0x57fb91;});}})[_0x1b16('0x15')](respondWithFilteredResult(_0x4c6c34,_0x384941))[_0x1b16('0x1f')](handleError(_0x4c6c34,null));};exports[_0x1b16('0x9f')]=function(_0x5689fc,_0x40ac76){var _0x1b3330={'where':{}},_0x5cdf45={},_0x581277={'count':0x0,'rows':[]};return db[_0x1b16('0x45')]['findOne']({'where':{'id':_0x5689fc['params']['id']}})[_0x1b16('0x15')](handleEntityNotFound(_0x40ac76,null))[_0x1b16('0x15')](function(_0x4d11f2){if(_0x4d11f2){_0x5cdf45['model']=_['keys'](db[_0x1b16('0x5b')][_0x1b16('0x35')]);_0x5cdf45[_0x1b16('0x39')]=_[_0x1b16('0x3e')](_0x5689fc[_0x1b16('0x39')]);_0x5cdf45[_0x1b16('0x3f')]=_[_0x1b16('0x40')](_0x5cdf45['model'],_0x5cdf45['query']);_0x1b3330[_0x1b16('0x41')]=_[_0x1b16('0x40')](_0x5cdf45[_0x1b16('0x3d')],qs['fields'](_0x5689fc[_0x1b16('0x39')][_0x1b16('0x42')]));_0x1b3330[_0x1b16('0x41')]=_0x1b3330[_0x1b16('0x41')][_0x1b16('0x43')]?_0x1b3330[_0x1b16('0x41')]:_0x5cdf45[_0x1b16('0x3d')];if(!_0x5689fc[_0x1b16('0x39')][_0x1b16('0xa0')]('nolimit')){_0x1b3330[_0x1b16('0x25')]=qs[_0x1b16('0x25')](_0x5689fc[_0x1b16('0x39')]['limit']);_0x1b3330['offset']=qs['offset'](_0x5689fc['query']['offset']);}_0x1b3330[_0x1b16('0xa1')]=qs['sort'](_0x5689fc[_0x1b16('0x39')][_0x1b16('0x95')]);_0x1b3330['where']=qs['filters'](_[_0x1b16('0x97')](_0x5689fc[_0x1b16('0x39')],_0x5cdf45['filters']));_0x1b3330[_0x1b16('0x96')]['ChatInteractionId']=_0x4d11f2['id'];if(_0x5689fc['query'][_0x1b16('0x99')]){_0x1b3330[_0x1b16('0x96')]=_[_0x1b16('0x2f')](_0x1b3330[_0x1b16('0x96')],{'$or':_['map'](_0x1b3330[_0x1b16('0x41')],function(_0x2f6990){var _0x225b62={};_0x225b62[_0x2f6990]={'$like':'%'+_0x5689fc[_0x1b16('0x39')][_0x1b16('0x99')]+'%'};return _0x225b62;})});}_0x1b3330[_0x1b16('0x96')]['secret']=![];if(_0x5689fc[_0x1b16('0x39')]['id']){_0x1b3330[_0x1b16('0x96')]['id']={'$gt':_0x5689fc[_0x1b16('0x39')]['id']};}_0x1b3330=_[_0x1b16('0x2f')]({},_0x1b3330,_0x5689fc[_0x1b16('0x9c')]);return db[_0x1b16('0x5b')][_0x1b16('0x27')]({'where':_0x1b3330[_0x1b16('0x96')]})['then'](function(_0x4865db){_0x581277['count']=_0x4865db;_0x1b3330[_0x1b16('0x9d')]=[];if(_0x5689fc[_0x1b16('0x39')][_0x1b16('0xa2')]){_0x1b3330[_0x1b16('0x9d')]['push']({'model':db[_0x1b16('0x76')],'as':_0x1b16('0x76'),'attributes':['id',_0x1b16('0x4f'),_0x1b16('0x81')]});}if(_0x5689fc[_0x1b16('0x39')][_0x1b16('0x44')]){_0x1b3330[_0x1b16('0x9d')]=[{'all':!![]}];}return db[_0x1b16('0x5b')]['findAll'](_0x1b3330);})[_0x1b16('0x15')](function(_0x551aad){_0x581277[_0x1b16('0x9e')]=_0x551aad;return _0x581277;});}})[_0x1b16('0x15')](respondWithFilteredResult(_0x40ac76,_0x1b3330))['catch'](handleError(_0x40ac76,null));};exports['addTags']=function(_0x52d276,_0xe061db){return db['ChatInteraction'][_0x1b16('0x46')]({'where':{'id':_0x52d276[_0x1b16('0x3c')]['id']}})[_0x1b16('0x15')](handleEntityNotFound(_0xe061db,null))[_0x1b16('0x15')](function(_0x24ef25){if(_0x24ef25){return _0x24ef25[_0x1b16('0xa3')](_0x52d276[_0x1b16('0x30')]['ids'],_[_0x1b16('0x91')](_0x52d276['body'],[_0x1b16('0x92'),'id'])||{})['spread'](function(){return db[_0x1b16('0xa4')][_0x1b16('0x38')]({'attributes':['id',_0x1b16('0x2d'),_0x1b16('0xa5')],'where':{'id':_0x52d276['body'][_0x1b16('0x92')]}});})[_0x1b16('0x15')](function(_0x8aa174){socket['emit']('chatInteractionTags:save',{'id':Number(_0x52d276['params']['id']),'tags':_0x8aa174||[]});return{'id':Number(_0x52d276[_0x1b16('0x3c')]['id']),'tags':_0x8aa174||[]};});}})['then'](respondWithResult(_0xe061db,null))[_0x1b16('0x1f')](handleError(_0xe061db,null));};exports['removeTags']=function(_0xcdc482,_0x2ea88a){return db['ChatInteraction'][_0x1b16('0x46')]({'where':{'id':_0xcdc482[_0x1b16('0x3c')]['id']}})[_0x1b16('0x15')](handleEntityNotFound(_0x2ea88a,null))['then'](function(_0x5efad3){if(_0x5efad3){return _0x5efad3[_0x1b16('0xa6')](_0xcdc482[_0x1b16('0x39')][_0x1b16('0x92')]);}})[_0x1b16('0x15')](respondWithStatusCode(_0x2ea88a,null))[_0x1b16('0x1f')](handleError(_0x2ea88a,null));};exports['download']=function(_0x40a04b,_0x1bfbd2){var _0x33abd4=moment()[_0x1b16('0xa7')]()['toString']();var _0x29553b=path[_0x1b16('0x6b')](config['root'],_0x1b16('0xa8'),_0x1b16('0xa9'),_0x1b16('0xaa'));var _0x26658f=path['join'](config[_0x1b16('0x6c')],_0x1b16('0xa8'),_0x1b16('0xa9'),_0x1b16('0xab'));var _0x317f6f=path[_0x1b16('0x6b')](_0x29553b,_0x33abd4);var _0x35556c=util[_0x1b16('0x7d')](_0x1b16('0xac'),_0x40a04b[_0x1b16('0x3c')]['id'],_0x33abd4);var _0x217469=path[_0x1b16('0x6b')](_0x29553b,_0x35556c);var _0x2793c2=[];_0x2793c2[_0x1b16('0xad')]({'model':db[_0x1b16('0x76')],'as':_0x1b16('0x76'),'attributes':['id',_0x1b16('0x4f')],'raw':!![]});_0x2793c2[_0x1b16('0xad')]({'model':db[_0x1b16('0x5f')],'as':_0x1b16('0xae'),'attributes':['id','firstName',_0x1b16('0xaf')],'raw':!![]});if(_0x40a04b[_0x1b16('0x39')]['attachments']){_0x2793c2['push']({'model':db['Attachment'],'as':_0x1b16('0x69'),'raw':!![]});}var _0x5a6039=[{'model':db[_0x1b16('0x5b')],'as':_0x1b16('0x78'),'attributes':['id',_0x1b16('0x30'),'createdAt',_0x1b16('0x85'),_0x1b16('0xb0'),_0x1b16('0xb1')],'include':_0x2793c2}];_0x5a6039[_0x1b16('0xad')]({'model':db[_0x1b16('0x49')],'as':_0x1b16('0xb2'),'attributes':['id',_0x1b16('0x2d')]});_0x5a6039['push']({'model':db[_0x1b16('0x76')],'as':'Owner','attributes':['id',_0x1b16('0x4f')]});return db['ChatInteraction'][_0x1b16('0x46')]({'where':{'id':_0x40a04b['params']['id']},'include':_0x5a6039})['then'](handleEntityNotFound(_0x1bfbd2,null))[_0x1b16('0x15')](function(_0x307580){if(_0x307580){var _0xf95ffa=_0x307580['get']({'plain':!![]});fs[_0x1b16('0xb3')](_0x317f6f);var _0x1dbb2a={'channel':_0x1b16('0xb4'),'account':_0xf95ffa[_0x1b16('0xb2')][_0x1b16('0x2d')],'agent':_0xf95ffa[_0x1b16('0xb5')]?_0xf95ffa['Owner'][_0x1b16('0x4f')]:_0x1b16('0xb6'),'createdAt':moment(_0xf95ffa[_0x1b16('0xb7')])['format'](_0x1b16('0x9b'))[_0x1b16('0xb8')](),'closedAt':_0xf95ffa['closed']?moment(_0xf95ffa['closedAt'])[_0x1b16('0x7d')]('YYYY-MM-DD\x20HH:mm:ss')[_0x1b16('0xb8')]():'','disposition':_0xf95ffa[_0x1b16('0x65')],'chatInfo':{'browser':_0xf95ffa[_0x1b16('0xb9')],'os':_0xf95ffa[_0x1b16('0xba')],'referer':_0xf95ffa[_0x1b16('0xbb')],'customerIp':_0xf95ffa['customerIp'],'customerPort':_0xf95ffa['customerPort']?_0xf95ffa[_0x1b16('0xbc')]:_0x1b16('0xb6')},'messages':_(_0xf95ffa[_0x1b16('0x78')])[_0x1b16('0xbd')]()[_0x1b16('0x99')]({'secret':![]})[_0x1b16('0xbe')](function(_0x390be6){if(_0x390be6[_0x1b16('0x69')]){var _0xceae04=path[_0x1b16('0x6b')](_0x26658f,_0x390be6[_0x1b16('0x69')][_0x1b16('0x6e')]);if(fs[_0x1b16('0xbf')](_0xceae04)){fs['createReadStream'](_0xceae04)[_0x1b16('0xc0')](fs[_0x1b16('0xc1')](path[_0x1b16('0x6b')](_0x317f6f,_0x390be6['Attachment'][_0x1b16('0x6e')])));}}return{'date':moment(_0x390be6['createdAt'])[_0x1b16('0x7d')](_0x1b16('0x9b'))[_0x1b16('0xb8')](),'sender':_0x390be6[_0x1b16('0x85')]===_0x1b16('0x5a')?_0x390be6[_0x1b16('0x76')]?_0x390be6[_0x1b16('0x76')][_0x1b16('0x4f')]:_0x1b16('0x7b'):_0x390be6[_0x1b16('0xae')][_0x1b16('0xc2')]+(_0x390be6[_0x1b16('0xae')]['lastName']?'\x20'+_0x390be6[_0x1b16('0xae')][_0x1b16('0xaf')]:''),'body':_0x390be6['Attachment']?_0x390be6[_0x1b16('0x69')][_0x1b16('0x6e')]:_0x390be6[_0x1b16('0x30')],'direction':_0x390be6[_0x1b16('0x85')]==='out'?'A':'C','secret':_0x390be6[_0x1b16('0xb0')],'read':_0x390be6[_0x1b16('0xb1')],'attachment':_0x390be6[_0x1b16('0x69')]};})[_0x1b16('0xc3')]()};return ejs[_0x1b16('0xc4')](path[_0x1b16('0x6b')](config[_0x1b16('0x6c')],'server',_0x1b16('0xc5'),_0x1b16('0xc6')),{'interaction':_0x1dbb2a})[_0x1b16('0x15')](function(_0xc4d54){var _0x543fdb=path['join'](_0x317f6f,_0x1b16('0xc7')+_0xf95ffa['id']+'-'+_0x33abd4+_0x1b16('0xc8'));var _0x4e0ad6={'path':_0x543fdb,'channel':'Chat','interactionId':_0xf95ffa['id']};return pdf[_0x1b16('0xc9')](_0xc4d54,_0x4e0ad6);})['then'](function(){return new Promise(function(_0x49d3b4,_0x5f0de5){zipdir(_0x317f6f,{'saveTo':_0x217469},function(_0x271e13,_0x1f07d1){if(_0x271e13)return _0x5f0de5(_0x271e13);return _0x49d3b4(_0x1f07d1);});})['then'](function(){return new BPromise(function(_0x53109f,_0x171ddf){rimraf(_0x317f6f,function(_0x245f07){if(_0x245f07)_0x171ddf(_0x245f07);return _0x53109f();});});})['then'](function(){return _0x1bfbd2[_0x1b16('0x6f')](_0x217469,_0x35556c,function(_0x4ba808){if(_0x4ba808){logger[_0x1b16('0x1b')](_0x1b16('0xca'),_0x4ba808);}else{fs['unlinkSync'](_0x217469);}});});});}else{return _0x1bfbd2['sendStatus'](0xc8);}})['catch'](handleError(_0x1bfbd2,null));};
\ No newline at end of file
+var _0x4509=['account','map','ChatInteraction','fieldName','type','getOptions','chat','query','user','show','params','rawAttributes','keys','filters','intersection','model','fields','attributes','length','include','merge','find','create','describe','createVidaooSession','findOne','ChatWebsiteId','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','vidaooApiKey','email','POST','isNull','parse','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','ChatOfflineMessageId','root','server/files/attachments/','join','download','close','mailTranscript','format','transcript-%s.txt','now','ChatMessage','Messages','User','ChatWebsite','%s%d','agentAlias','System','customer','Visitor','ContactId','agentIdentifier','website_alias','alias','agent_fullname','fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','getMessages','nolimit','sort','where','pick','ChatInteractionId','filter','$gte','options','includeAll','findAll','rows','getMyMessages','hasOwnProperty','order','includeAgent','push','addTags','setTags','ids','Tag','color','emit','chatInteractionTags:save','removeTags','unix','toString','server','tmp','attachments','transcript-%d-%s.zip','lastName','read','Account','Owner','get','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','referer','customerIp','customerPort','tail','existsSync','createReadStream','createWriteStream','firstName','value','views','downloadInteraction.ejs','transcript-','.pdf','Chat','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','undefined','offset','count','limit','set','Content-Range','destroy','end','stack','name','send','render','body','contact','agent'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x4509,0x173));var _0x9450=function(_0xedb4ff,_0x54430b){_0xedb4ff=_0xedb4ff-0x0;var _0x1956b4=_0x4509[_0xedb4ff];return _0x1956b4;};'use strict';var rimraf=require(_0x9450('0x0'));var zipdir=require(_0x9450('0x1'));var rp=require(_0x9450('0x2'));var moment=require(_0x9450('0x3'));var BPromise=require(_0x9450('0x4'));var Mustache=require(_0x9450('0x5'));var util=require(_0x9450('0x6'));var path=require(_0x9450('0x7'));var ejs=require(_0x9450('0x8'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x9450('0x9'));var interaction=require(_0x9450('0xa'));var qs=require(_0x9450('0xb'));var pdf=require('../../components/export/pdf');var logger=require(_0x9450('0xc'))(_0x9450('0xd'));var config=require(_0x9450('0xe'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9450('0xf')](config[_0x9450('0x10')],{'host':_0x9450('0x11'),'port':0x18eb});var socket=require(_0x9450('0x12'))(new Redis(config[_0x9450('0x10')]));require('./chatInteraction.socket')[_0x9450('0x13')](socket);var jayson=require(_0x9450('0x14'));var client=jayson['client']['http']({'port':0x232b});var client9004=jayson[_0x9450('0x15')][_0x9450('0x16')]({'port':0x232c});function respondWithRpcPromise(_0x1d2af4,_0x576b8d,_0xdf58ce,_0x5cf091){return new BPromise(function(_0x5a221f,_0x3ca086){var _0x468ce0=_0x5cf091||client;return _0x468ce0[_0x9450('0x17')](_0x1d2af4,_0xdf58ce)[_0x9450('0x18')](function(_0x943a81){logger[_0x9450('0x19')]('ChatInteraction,\x20%s,\x20%s',_0x576b8d,_0x9450('0x1a'));logger[_0x9450('0x1b')](_0x9450('0x1c'),_0x576b8d,_0x9450('0x1a'),JSON[_0x9450('0x1d')](_0x943a81));if(_0x943a81[_0x9450('0x1e')]){if(_0x943a81[_0x9450('0x1e')]['code']===0x1f4){logger[_0x9450('0x1e')](_0x9450('0x1f'),_0x576b8d,_0x943a81[_0x9450('0x1e')]['message']);return _0x3ca086(_0x943a81[_0x9450('0x1e')]['message']);}logger[_0x9450('0x1e')]('ChatInteraction,\x20%s,\x20%s',_0x576b8d,_0x943a81[_0x9450('0x1e')][_0x9450('0x20')]);return _0x5a221f(_0x943a81[_0x9450('0x1e')][_0x9450('0x20')]);}else{logger['info']('ChatInteraction,\x20%s,\x20%s',_0x576b8d,'request\x20sent');_0x5a221f(_0x943a81[_0x9450('0x21')][_0x9450('0x20')]);}})[_0x9450('0x22')](function(_0x1f4992){logger['error'](_0x9450('0x1f'),_0x576b8d,_0x1f4992);_0x3ca086(_0x1f4992);});});}function respondWithStatusCode(_0x5c8e17,_0x54612b){_0x54612b=_0x54612b||0xcc;return function(_0x4a7313){if(_0x4a7313){return _0x5c8e17[_0x9450('0x23')](_0x54612b);}return _0x5c8e17[_0x9450('0x24')](_0x54612b)['end']();};}function respondWithResult(_0x567564,_0x4b8eec){_0x4b8eec=_0x4b8eec||0xc8;return function(_0x3906d6){if(_0x3906d6){return _0x567564['status'](_0x4b8eec)[_0x9450('0x25')](_0x3906d6);}};}function respondWithFilteredResult(_0x24082d,_0x5d3b33){return function(_0x153c21){if(_0x153c21){var _0x7613c1=typeof _0x5d3b33['offset']===_0x9450('0x26')&&typeof _0x5d3b33['limit']==='undefined';var _0x36dcd2=_0x153c21['count'];var _0xf7f019=_0x7613c1?0x0:_0x5d3b33[_0x9450('0x27')];var _0x45b261=_0x7613c1?_0x153c21[_0x9450('0x28')]:_0x5d3b33['offset']+_0x5d3b33[_0x9450('0x29')];var _0xf7ff84;if(_0x45b261>=_0x36dcd2){_0x45b261=_0x36dcd2;_0xf7ff84=0xc8;}else{_0xf7ff84=0xce;}_0x24082d['status'](_0xf7ff84);return _0x24082d[_0x9450('0x2a')](_0x9450('0x2b'),_0xf7f019+'-'+_0x45b261+'/'+_0x36dcd2)[_0x9450('0x25')](_0x153c21);}return null;};}function saveUpdates(_0x51ecf9){return function(_0x3c4e07){if(_0x3c4e07){return _0x3c4e07['update'](_0x51ecf9)[_0x9450('0x18')](function(_0x212ed4){return _0x212ed4;});}return null;};}function removeEntity(_0x546482){return function(_0x4a90e3){if(_0x4a90e3){return _0x4a90e3[_0x9450('0x2c')]()[_0x9450('0x18')](function(){_0x546482[_0x9450('0x24')](0xcc)[_0x9450('0x2d')]();});}};}function handleEntityNotFound(_0x253067){return function(_0x5ba6b6){if(!_0x5ba6b6){_0x253067['sendStatus'](0x194);}return _0x5ba6b6;};}function handleError(_0x34b535,_0xd00a1c){_0xd00a1c=_0xd00a1c||0x1f4;return function(_0x39469d){logger[_0x9450('0x1e')](_0x39469d[_0x9450('0x2e')]);if(_0x39469d['name']){delete _0x39469d[_0x9450('0x2f')];}_0x34b535['status'](_0xd00a1c)[_0x9450('0x30')](_0x39469d);};}function getMustacheRender(_0x4a3cdc,_0x16d66e){return Mustache[_0x9450('0x31')](_0x4a3cdc,_['merge'](_0x16d66e[_0x9450('0x32')],{'contact':_0x16d66e[_0x9450('0x33')],'message':_0x16d66e['message'],'agent':_0x16d66e[_0x9450('0x34')],'interaction':_0x16d66e['interaction'],'account':_0x16d66e[_0x9450('0x35')]}))||'';}exports['index']=function(_0x2065b9,_0x1a3ece){var _0x8cacfd={};var _0x296c4b=_[_0x9450('0x36')](db[_0x9450('0x37')]['rawAttributes'],function(_0x476014){return{'name':_0x476014[_0x9450('0x38')],'type':_0x476014[_0x9450('0x39')]['key']};});_0x8cacfd=qs[_0x9450('0x3a')](_0x296c4b,_0x2065b9);return interaction['findAll'](_0x9450('0x3b'),_0x2065b9[_0x9450('0x3c')],_0x2065b9[_0x9450('0x3d')],_0x8cacfd,_0x296c4b)[_0x9450('0x18')](respondWithFilteredResult(_0x1a3ece,_0x8cacfd))[_0x9450('0x22')](handleError(_0x1a3ece,null));};exports[_0x9450('0x3e')]=function(_0x1286a0,_0x2b636b){var _0x35a496={'raw':![],'where':{'id':_0x1286a0[_0x9450('0x3f')]['id']}},_0x8a494a={};_0x8a494a['model']=_['keys'](db[_0x9450('0x37')][_0x9450('0x40')]);_0x8a494a[_0x9450('0x3c')]=_[_0x9450('0x41')](_0x1286a0[_0x9450('0x3c')]);_0x8a494a[_0x9450('0x42')]=_[_0x9450('0x43')](_0x8a494a[_0x9450('0x44')],_0x8a494a[_0x9450('0x3c')]);_0x35a496['attributes']=_['intersection'](_0x8a494a[_0x9450('0x44')],qs[_0x9450('0x45')](_0x1286a0[_0x9450('0x3c')][_0x9450('0x45')]));_0x35a496[_0x9450('0x46')]=_0x35a496[_0x9450('0x46')][_0x9450('0x47')]?_0x35a496[_0x9450('0x46')]:_0x8a494a[_0x9450('0x44')];if(_0x1286a0[_0x9450('0x3c')]['includeAll']){_0x35a496[_0x9450('0x48')]=[{'all':!![]}];}_0x35a496=_[_0x9450('0x49')]({},_0x35a496,_0x1286a0['options']);return db[_0x9450('0x37')][_0x9450('0x4a')](_0x35a496)['then'](handleEntityNotFound(_0x2b636b,null))[_0x9450('0x18')](respondWithResult(_0x2b636b,null))['catch'](handleError(_0x2b636b,null));};exports[_0x9450('0x4b')]=function(_0x3d6085,_0x5a35d0){return db[_0x9450('0x37')][_0x9450('0x4b')](_0x3d6085[_0x9450('0x32')],{})[_0x9450('0x18')](respondWithResult(_0x5a35d0,0xc9))['catch'](handleError(_0x5a35d0,null));};exports['update']=function(_0x5ab9ff,_0x302f25){if(_0x5ab9ff[_0x9450('0x32')]['id']){delete _0x5ab9ff[_0x9450('0x32')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x5ab9ff[_0x9450('0x3f')]['id']}})[_0x9450('0x18')](handleEntityNotFound(_0x302f25,null))['then'](saveUpdates(_0x5ab9ff[_0x9450('0x32')],null))['then'](respondWithResult(_0x302f25,null))[_0x9450('0x22')](handleError(_0x302f25,null));};exports[_0x9450('0x2c')]=function(_0x327475,_0x2a1359){return db[_0x9450('0x37')]['find']({'where':{'id':_0x327475['params']['id']}})[_0x9450('0x18')](handleEntityNotFound(_0x2a1359,null))[_0x9450('0x18')](removeEntity(_0x2a1359,null))[_0x9450('0x22')](handleError(_0x2a1359,null));};exports['describe']=function(_0x410841,_0x5d9832){return db[_0x9450('0x37')][_0x9450('0x4c')]()[_0x9450('0x18')](respondWithResult(_0x5d9832,null))[_0x9450('0x22')](handleError(_0x5d9832,null));};exports[_0x9450('0x4d')]=function(_0x338a95,_0x129408){var _0x1bd76d=_0x338a95[_0x9450('0x3f')]['id'];var _0x49a9d0;var _0x13dfa9;var _0x54af33;return db[_0x9450('0x37')][_0x9450('0x4e')]({'where':{'id':_0x1bd76d}})[_0x9450('0x18')](function(_0x4d623e){_0x49a9d0=_0x4d623e;return db['ChatWebsite'][_0x9450('0x4e')]({'where':{'id':_0x4d623e[_0x9450('0x4f')]},'attributes':['id','vidaooApiKey',_0x9450('0x50'),_0x9450('0x51'),_0x9450('0x52'),_0x9450('0x53')],'raw':!![]});})[_0x9450('0x18')](function(_0x40665a){if(_0x40665a&&_0x40665a[_0x9450('0x54')]&&_0x40665a['vidaooEscalation']){_0x13dfa9=_0x40665a;var _0x42b95c={'interaction':{'id':_0x1bd76d},'agent':{'id':_0x338a95[_0x9450('0x3d')]['id'],'name':_0x338a95[_0x9450('0x3d')][_0x9450('0x2f')],'fullname':_0x338a95[_0x9450('0x3d')]['fullname'],'email':_0x338a95[_0x9450('0x3d')][_0x9450('0x55')]},'contact':_0x338a95[_0x9450('0x32')]['contact'],'account':_0x338a95[_0x9450('0x32')][_0x9450('0x35')]};var _0x438ba4={'rejectUnauthorized':![],'method':_0x9450('0x56'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x40665a[_0x9450('0x54')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x338a95[_0x9450('0x3d')][_0x9450('0x55')]],'buttons':null,'topic':_0x13dfa9[_0x9450('0x51')],'note':_[_0x9450('0x57')](_0x13dfa9[_0x9450('0x52')])?null:getMustacheRender(_0x13dfa9[_0x9450('0x52')],_0x42b95c),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x9450('0x57')](_0x13dfa9['vidaooMetadata'])){var _0xe1ec57=getMustacheRender(_0x13dfa9[_0x9450('0x53')],_0x42b95c);var _0x20e893=JSON[_0x9450('0x58')](_0xe1ec57);_0x438ba4[_0x9450('0x32')][_0x9450('0x59')]=_0x20e893;}}catch(_0x21e98f){throw new db[(_0x9450('0x5a'))][(_0x9450('0x5b'))](_0x9450('0x5c'));}return rp(_0x438ba4);}else{throw new db[(_0x9450('0x5a'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})[_0x9450('0x18')](function(_0x1550f6){_0x54af33=_0x1550f6;if(_0x54af33['id']){var _0x5ed908={'body':_0x54af33[_0x9450('0x5d')],'ChatWebsiteId':_0x13dfa9['id'],'ChatInteractionId':_0x49a9d0['id'],'direction':_0x9450('0x5e'),'UserId':_0x338a95[_0x9450('0x3d')]['id']};return db['ChatMessage'][_0x9450('0x4b')](_0x5ed908,{});}else{throw new db[(_0x9450('0x5a'))]['ValidationError'](_0x9450('0x5f'));}})[_0x9450('0x18')](function(){return _0x49a9d0[_0x9450('0x60')]({'vidaooSessionId':_0x54af33['id']});})[_0x9450('0x18')](respondWithResult(_0x129408,null))['catch'](handleError(_0x129408,null));};exports[_0x9450('0x61')]=function(_0xe3d43e,_0x241d81){if(_0xe3d43e[_0x9450('0x32')]['id']){delete _0xe3d43e[_0x9450('0x32')]['id'];}return db['ChatInteraction'][_0x9450('0x4a')]({'where':{'id':_0xe3d43e[_0x9450('0x3f')]['id']},'include':[{'model':db[_0x9450('0x62')],'as':_0x9450('0x63')}]})[_0x9450('0x18')](handleEntityNotFound(_0x241d81,null))[_0x9450('0x18')](saveUpdates(_0xe3d43e[_0x9450('0x32')],null))[_0x9450('0x18')](respondWithResult(_0x241d81,null))[_0x9450('0x22')](handleError(_0x241d81,null));};exports[_0x9450('0x64')]=function(_0x56fcd1,_0x448c24){if(_0x56fcd1[_0x9450('0x32')]['id']){delete _0x56fcd1[_0x9450('0x32')]['id'];}return db[_0x9450('0x37')][_0x9450('0x4a')]({'where':{'id':_0x56fcd1[_0x9450('0x3f')]['id']}})[_0x9450('0x18')](function(_0x492d71){if(!_0x492d71){logger[_0x9450('0x1e')](_0x9450('0x65'),_0x9450('0x64'),0x194,_0x9450('0x66'));_0x448c24[_0x9450('0x23')](0x194);}else{if(_0x492d71[_0x9450('0x67')]){throw new db[(_0x9450('0x5a'))][(_0x9450('0x5b'))](_0x9450('0x68'));}}return _0x492d71;})[_0x9450('0x18')](function(_0x4c6685){if(_0x4c6685){return _0x4c6685['update']({'closed':_0x56fcd1[_0x9450('0x32')][_0x9450('0x69')],'disposition':_0x56fcd1[_0x9450('0x32')][_0x9450('0x6a')]})['then'](function(_0xb6112f){return _0xb6112f;});}})[_0x9450('0x18')](function(){return respondWithRpcPromise(_0x9450('0x6b'),_0x9450('0x64'),_0x56fcd1[_0x9450('0x32')],client9004);})[_0x9450('0x18')](respondWithResult(_0x448c24,null))['catch'](handleError(_0x448c24,null));};exports[_0x9450('0x6c')]=function(_0x379a1d,_0x2409ec){_0x379a1d[_0x9450('0x32')]['name']=_0x379a1d[_0x9450('0x6d')]['originalname'];_0x379a1d[_0x9450('0x32')][_0x9450('0x6e')]=_0x379a1d[_0x9450('0x6d')][_0x9450('0x6f')];_0x379a1d[_0x9450('0x32')]['type']=_0x379a1d[_0x9450('0x6d')][_0x9450('0x70')];return db[_0x9450('0x71')][_0x9450('0x4b')](_0x379a1d[_0x9450('0x32')])[_0x9450('0x18')](respondWithResult(_0x2409ec,0xc9))['catch'](handleError(_0x2409ec,null));};exports[_0x9450('0x72')]=function(_0x52d4b8,_0x2a2784){return db[_0x9450('0x37')][_0x9450('0x4e')]({'where':{'id':_0x52d4b8[_0x9450('0x3f')]['id']},'raw':!![]})[_0x9450('0x18')](handleEntityNotFound(_0x2a2784,null))['then'](function(_0x3471c8){if(_0x3471c8){if(_0x3471c8[_0x9450('0x69')]){return _0x2a2784[_0x9450('0x24')](0x193)[_0x9450('0x25')]({'status':0x193,'message':_0x9450('0x73')});}return db[_0x9450('0x71')][_0x9450('0x4e')]({'where':{'id':_0x52d4b8[_0x9450('0x3c')]['attachId']},'raw':!![]})[_0x9450('0x18')](handleEntityNotFound(_0x2a2784,null));}})['then'](function(_0x5c7996){if(_0x5c7996){var _0xcd1201=_0x5c7996[_0x9450('0x74')]!==null;var _0x485968=path['join'](config[_0x9450('0x75')],_0x9450('0x76'));if(_0xcd1201){_0x485968=path[_0x9450('0x77')](_0x485968,'offline-chat/');}var _0x11ac39=path['join'](_0x485968,_0x5c7996[_0x9450('0x6e')]);return _0x2a2784[_0x9450('0x78')](_0x11ac39);}})[_0x9450('0x22')](handleError(_0x2a2784,null));};exports[_0x9450('0x79')]=function(_0x2590f4,_0x3dcf9e){var _0x3d0eaa=null;var _0x3d0c46=null;var _0x409819=null;if(_0x2590f4[_0x9450('0x32')]['id']){delete _0x2590f4[_0x9450('0x32')]['id'];}if(_0x2590f4['body'][_0x9450('0x7a')]){_0x409819=path[_0x9450('0x77')](config[_0x9450('0x75')],'server/files/chat/upload/',util[_0x9450('0x7b')](_0x9450('0x7c'),Date[_0x9450('0x7d')]()));_0x2590f4[_0x9450('0x32')]['pathTranscript']=_0x409819;}return db['ChatInteraction'][_0x9450('0x4a')]({'where':{'id':_0x2590f4[_0x9450('0x3f')]['id']},'include':[{'model':db[_0x9450('0x7e')],'as':_0x9450('0x7f'),'include':[{'model':db[_0x9450('0x80')],'as':_0x9450('0x80')}]}]})[_0x9450('0x18')](handleEntityNotFound(_0x3dcf9e,null))['then'](saveUpdates(_0x2590f4[_0x9450('0x32')],null))[_0x9450('0x18')](function(_0x1a05b1){if(_0x1a05b1){_0x3d0eaa=_0x1a05b1;return db[_0x9450('0x81')][_0x9450('0x4a')]({'where':{'id':_0x3d0eaa[_0x9450('0x4f')]}});}})[_0x9450('0x18')](function(_0x18808b){if(_0x18808b){_0x3d0c46=_0x18808b;return db[_0x9450('0x62')][_0x9450('0x4a')]({'where':{'id':_0x3d0eaa['ContactId']}});}})[_0x9450('0x18')](function(_0x3c4628){if(_0x3c4628){if(_0x409819){var _0x3bd07c=null;for(var _0x5d2bff=0x1;_0x5d2bff<_0x3d0eaa['Messages']['length'];++_0x5d2bff){_0x3bd07c=_0x3d0eaa[_0x9450('0x7f')][_0x5d2bff];var _0x173552=_0x3bd07c[_0x9450('0x67')]?util[_0x9450('0x7b')](_0x9450('0x82'),_0x3d0c46[_0x9450('0x83')],_0x3bd07c[_0x9450('0x67')]):_0x9450('0x84');var _0x2c9b21=_0x2590f4[_0x9450('0x32')][_0x9450('0x85')]||util[_0x9450('0x7b')](_0x9450('0x82'),_0x9450('0x86'),_0x3bd07c[_0x9450('0x87')]);switch(_0x3d0c46[_0x9450('0x88')]){case _0x9450('0x89'):_0x173552=_0x3bd07c[_0x9450('0x67')]?util[_0x9450('0x7b')]('%s%d',_0x3d0c46[_0x9450('0x83')],_0x3bd07c[_0x9450('0x67')]):_0x9450('0x84');break;case'agent_alias':_0x173552=_0x3bd07c['UserId']?_0x3bd07c[_0x9450('0x80')][_0x9450('0x8a')]||_0x3bd07c[_0x9450('0x80')]['fullname']:_0x9450('0x84');break;case _0x9450('0x8b'):_0x173552=_0x3bd07c[_0x9450('0x67')]?_0x3bd07c['User'][_0x9450('0x8c')]:_0x9450('0x84');break;default:_0x173552=_0x3bd07c['UserId']?util[_0x9450('0x7b')](_0x9450('0x82'),_0x3d0c46[_0x9450('0x83')],_0x3bd07c[_0x9450('0x67')]):_0x9450('0x84');}var _0x5c02c8=util[_0x9450('0x7b')]('[%s]\x20%s:\x20%s\x0a',moment(_0x3bd07c[_0x9450('0x8d')])[_0x9450('0x7b')](_0x9450('0x8e')),_0x3bd07c[_0x9450('0x8f')]==='in'?_0x2c9b21:_0x173552,_0x3bd07c[_0x9450('0x32')]);if(!_0x3bd07c[_0x9450('0x90')]){fs[_0x9450('0x91')](_0x409819,_0x5c02c8);}}return db[_0x9450('0x92')][_0x9450('0x4e')]({'where':{'service':!![]},'include':[{'model':db[_0x9450('0x93')],'as':_0x9450('0x94'),'raw':!![],'include':[{'model':db[_0x9450('0x95')],'as':_0x9450('0x95'),'raw':!![]}]}]});}}})[_0x9450('0x18')](function(_0x2e69fc){if(!_0x2e69fc||!_0x2e69fc[_0x9450('0x94')]||!_0x2590f4[_0x9450('0x32')])return _0x3d0eaa;var _0x8714ff=_0x2e69fc[_0x9450('0x96')]();return respondWithRpcPromise('SendMail',_0x9450('0x97'),{'account':_0x8714ff,'message':{'from':util[_0x9450('0x7b')](_0x9450('0x98'),_0x2e69fc[_0x9450('0x2f')],_0x2e69fc[_0x9450('0x55')]||_0x2e69fc[_0x9450('0x94')][_0x9450('0x3d')]),'to':_0x2590f4[_0x9450('0x32')][_0x9450('0x7a')],'subject':'Mail\x20Transcript','text':util[_0x9450('0x7b')](_0x9450('0x99'),_0x2590f4[_0x9450('0x32')]['mailTranscript']),'attachments':[{'path':_0x409819}]}})[_0x9450('0x18')](function(){return _0x3d0eaa;})['catch'](function(_0x1a2b5e){logger['error'](_0x1a2b5e);});})['then'](respondWithStatusCode(_0x3dcf9e,0xc8))['catch'](handleError(_0x3dcf9e,null));};exports[_0x9450('0x9a')]=function(_0x587016,_0x5daa6a){return db[_0x9450('0x7e')][_0x9450('0x4a')]({'where':{'id':_0x587016[_0x9450('0x3f')]['id']}})[_0x9450('0x18')](handleEntityNotFound(_0x5daa6a,null))[_0x9450('0x18')](function(_0x128095){if(_0x128095){return _0x128095[_0x9450('0x9a')](_0x587016[_0x9450('0x32')]['ids'],_[_0x9450('0x9b')](_0x587016[_0x9450('0x32')],['ids','id'])||{});}})['then'](respondWithResult(_0x5daa6a,null))[_0x9450('0x22')](handleError(_0x5daa6a,null));};exports[_0x9450('0x9c')]=function(_0x595eb2,_0x536758){var _0x3ed545={'raw':![],'where':{}};var _0x45c796={};var _0x1bb6a1={'count':0x0,'rows':[]};return db[_0x9450('0x37')][_0x9450('0x4e')]({'where':{'id':_0x595eb2['params']['id']}})[_0x9450('0x18')](handleEntityNotFound(_0x536758,null))[_0x9450('0x18')](function(_0x3fc722){if(_0x3fc722){_0x45c796[_0x9450('0x44')]=_[_0x9450('0x41')](db['ChatMessage'][_0x9450('0x40')]);_0x45c796[_0x9450('0x3c')]=_[_0x9450('0x41')](_0x595eb2['query']);_0x45c796[_0x9450('0x42')]=_[_0x9450('0x43')](_0x45c796[_0x9450('0x44')],_0x45c796[_0x9450('0x3c')]);_0x3ed545[_0x9450('0x46')]=_[_0x9450('0x43')](_0x45c796[_0x9450('0x44')],qs[_0x9450('0x45')](_0x595eb2[_0x9450('0x3c')][_0x9450('0x45')]));_0x3ed545[_0x9450('0x46')]=_0x3ed545[_0x9450('0x46')][_0x9450('0x47')]?_0x3ed545[_0x9450('0x46')]:_0x45c796[_0x9450('0x44')];if(!_0x595eb2[_0x9450('0x3c')]['hasOwnProperty'](_0x9450('0x9d'))){_0x3ed545[_0x9450('0x29')]=qs[_0x9450('0x29')](_0x595eb2['query'][_0x9450('0x29')]);_0x3ed545[_0x9450('0x27')]=qs['offset'](_0x595eb2[_0x9450('0x3c')][_0x9450('0x27')]);}_0x3ed545['order']=qs['sort'](_0x595eb2[_0x9450('0x3c')][_0x9450('0x9e')]);_0x3ed545[_0x9450('0x9f')]=qs[_0x9450('0x42')](_[_0x9450('0xa0')](_0x595eb2['query'],_0x45c796[_0x9450('0x42')]));_0x3ed545[_0x9450('0x9f')][_0x9450('0xa1')]=_0x3fc722['id'];if(_0x595eb2[_0x9450('0x3c')][_0x9450('0xa2')]){_0x3ed545[_0x9450('0x9f')]=_['merge'](_0x3ed545[_0x9450('0x9f')],{'$or':_[_0x9450('0x36')](_0x3ed545['attributes'],function(_0xe9b6c1){var _0x2e4038={};_0x2e4038[_0xe9b6c1]={'$like':'%'+_0x595eb2[_0x9450('0x3c')][_0x9450('0xa2')]+'%'};return _0x2e4038;})});}if(_0x595eb2[_0x9450('0x3c')][_0x9450('0xa3')]){var _0x546aaa=_0x595eb2[_0x9450('0x3c')][_0x9450('0xa3')]['split'](',');var _0x11c88b={};_0x11c88b[_0x546aaa[0x0]]={'$gte':moment(_0x546aaa[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x3ed545['where']=_['merge'](_0x3ed545['where'],_0x11c88b);}_0x3ed545=_[_0x9450('0x49')]({},_0x3ed545,_0x595eb2[_0x9450('0xa4')]);return db[_0x9450('0x7e')][_0x9450('0x28')]({'where':_0x3ed545[_0x9450('0x9f')]})[_0x9450('0x18')](function(_0x4c172a){_0x1bb6a1[_0x9450('0x28')]=_0x4c172a;if(_0x595eb2[_0x9450('0x3c')][_0x9450('0xa5')]){_0x3ed545['include']=[{'all':!![]}];}return db[_0x9450('0x7e')][_0x9450('0xa6')](_0x3ed545);})[_0x9450('0x18')](function(_0x393d3d){_0x1bb6a1[_0x9450('0xa7')]=_0x393d3d;return _0x1bb6a1;});}})[_0x9450('0x18')](respondWithFilteredResult(_0x536758,_0x3ed545))[_0x9450('0x22')](handleError(_0x536758,null));};exports[_0x9450('0xa8')]=function(_0x6b290e,_0x38cfcf){var _0x1cc52c={'where':{}},_0x298d9a={},_0x349231={'count':0x0,'rows':[]};return db[_0x9450('0x37')][_0x9450('0x4e')]({'where':{'id':_0x6b290e['params']['id']}})[_0x9450('0x18')](handleEntityNotFound(_0x38cfcf,null))[_0x9450('0x18')](function(_0x458421){if(_0x458421){_0x298d9a['model']=_['keys'](db[_0x9450('0x7e')][_0x9450('0x40')]);_0x298d9a[_0x9450('0x3c')]=_[_0x9450('0x41')](_0x6b290e[_0x9450('0x3c')]);_0x298d9a['filters']=_[_0x9450('0x43')](_0x298d9a[_0x9450('0x44')],_0x298d9a[_0x9450('0x3c')]);_0x1cc52c['attributes']=_[_0x9450('0x43')](_0x298d9a[_0x9450('0x44')],qs['fields'](_0x6b290e[_0x9450('0x3c')][_0x9450('0x45')]));_0x1cc52c['attributes']=_0x1cc52c['attributes'][_0x9450('0x47')]?_0x1cc52c['attributes']:_0x298d9a[_0x9450('0x44')];if(!_0x6b290e['query'][_0x9450('0xa9')](_0x9450('0x9d'))){_0x1cc52c[_0x9450('0x29')]=qs['limit'](_0x6b290e[_0x9450('0x3c')][_0x9450('0x29')]);_0x1cc52c[_0x9450('0x27')]=qs[_0x9450('0x27')](_0x6b290e[_0x9450('0x3c')][_0x9450('0x27')]);}_0x1cc52c[_0x9450('0xaa')]=qs['sort'](_0x6b290e['query'][_0x9450('0x9e')]);_0x1cc52c['where']=qs[_0x9450('0x42')](_['pick'](_0x6b290e['query'],_0x298d9a[_0x9450('0x42')]));_0x1cc52c[_0x9450('0x9f')][_0x9450('0xa1')]=_0x458421['id'];if(_0x6b290e['query'][_0x9450('0xa2')]){_0x1cc52c[_0x9450('0x9f')]=_[_0x9450('0x49')](_0x1cc52c[_0x9450('0x9f')],{'$or':_[_0x9450('0x36')](_0x1cc52c[_0x9450('0x46')],function(_0x23c6f5){var _0x44831a={};_0x44831a[_0x23c6f5]={'$like':'%'+_0x6b290e[_0x9450('0x3c')][_0x9450('0xa2')]+'%'};return _0x44831a;})});}_0x1cc52c[_0x9450('0x9f')][_0x9450('0x90')]=![];if(_0x6b290e[_0x9450('0x3c')]['id']){_0x1cc52c['where']['id']={'$gt':_0x6b290e['query']['id']};}_0x1cc52c=_[_0x9450('0x49')]({},_0x1cc52c,_0x6b290e['options']);return db[_0x9450('0x7e')]['count']({'where':_0x1cc52c['where']})[_0x9450('0x18')](function(_0x286e4a){_0x349231['count']=_0x286e4a;_0x1cc52c[_0x9450('0x48')]=[];if(_0x6b290e[_0x9450('0x3c')][_0x9450('0xab')]){_0x1cc52c[_0x9450('0x48')][_0x9450('0xac')]({'model':db[_0x9450('0x80')],'as':_0x9450('0x80'),'attributes':['id',_0x9450('0x8c'),_0x9450('0x8a')]});}if(_0x6b290e['query']['includeAll']){_0x1cc52c[_0x9450('0x48')]=[{'all':!![]}];}return db['ChatMessage'][_0x9450('0xa6')](_0x1cc52c);})[_0x9450('0x18')](function(_0x29f14c){_0x349231['rows']=_0x29f14c;return _0x349231;});}})[_0x9450('0x18')](respondWithFilteredResult(_0x38cfcf,_0x1cc52c))[_0x9450('0x22')](handleError(_0x38cfcf,null));};exports[_0x9450('0xad')]=function(_0x4cfd3d,_0x2f7dd8){return db[_0x9450('0x37')][_0x9450('0x4a')]({'where':{'id':_0x4cfd3d['params']['id']}})[_0x9450('0x18')](handleEntityNotFound(_0x2f7dd8,null))[_0x9450('0x18')](function(_0xa810f0){if(_0xa810f0){return _0xa810f0[_0x9450('0xae')](_0x4cfd3d[_0x9450('0x32')][_0x9450('0xaf')],_[_0x9450('0x9b')](_0x4cfd3d[_0x9450('0x32')],[_0x9450('0xaf'),'id'])||{})['spread'](function(){return db[_0x9450('0xb0')]['findAll']({'attributes':['id','name',_0x9450('0xb1')],'where':{'id':_0x4cfd3d[_0x9450('0x32')]['ids']}});})[_0x9450('0x18')](function(_0x124f96){socket[_0x9450('0xb2')](_0x9450('0xb3'),{'id':Number(_0x4cfd3d[_0x9450('0x3f')]['id']),'tags':_0x124f96||[]});return{'id':Number(_0x4cfd3d[_0x9450('0x3f')]['id']),'tags':_0x124f96||[]};});}})[_0x9450('0x18')](respondWithResult(_0x2f7dd8,null))[_0x9450('0x22')](handleError(_0x2f7dd8,null));};exports['removeTags']=function(_0x1dc027,_0x5d91e3){return db[_0x9450('0x37')][_0x9450('0x4a')]({'where':{'id':_0x1dc027[_0x9450('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5d91e3,null))[_0x9450('0x18')](function(_0x5ebb6b){if(_0x5ebb6b){return _0x5ebb6b[_0x9450('0xb4')](_0x1dc027[_0x9450('0x3c')]['ids']);}})[_0x9450('0x18')](respondWithStatusCode(_0x5d91e3,null))[_0x9450('0x22')](handleError(_0x5d91e3,null));};exports[_0x9450('0x78')]=function(_0x5d7112,_0x13077d){var _0x2625e7=moment()[_0x9450('0xb5')]()[_0x9450('0xb6')]();var _0x3d949f=path[_0x9450('0x77')](config[_0x9450('0x75')],_0x9450('0xb7'),'files',_0x9450('0xb8'));var _0x14b111=path[_0x9450('0x77')](config[_0x9450('0x75')],_0x9450('0xb7'),'files',_0x9450('0xb9'));var _0x1d26bb=path[_0x9450('0x77')](_0x3d949f,_0x2625e7);var _0x163926=util[_0x9450('0x7b')](_0x9450('0xba'),_0x5d7112[_0x9450('0x3f')]['id'],_0x2625e7);var _0x115e66=path[_0x9450('0x77')](_0x3d949f,_0x163926);var _0x1f1b4a=[];_0x1f1b4a[_0x9450('0xac')]({'model':db[_0x9450('0x80')],'as':_0x9450('0x80'),'attributes':['id','fullname'],'raw':!![]});_0x1f1b4a[_0x9450('0xac')]({'model':db[_0x9450('0x62')],'as':_0x9450('0x63'),'attributes':['id','firstName',_0x9450('0xbb')],'raw':!![]});if(_0x5d7112[_0x9450('0x3c')][_0x9450('0xb9')]){_0x1f1b4a['push']({'model':db[_0x9450('0x71')],'as':_0x9450('0x71'),'raw':!![]});}var _0x229fea=[{'model':db[_0x9450('0x7e')],'as':_0x9450('0x7f'),'attributes':['id',_0x9450('0x32'),_0x9450('0x8d'),_0x9450('0x8f'),'secret',_0x9450('0xbc')],'include':_0x1f1b4a}];_0x229fea[_0x9450('0xac')]({'model':db[_0x9450('0x81')],'as':_0x9450('0xbd'),'attributes':['id',_0x9450('0x2f')]});_0x229fea[_0x9450('0xac')]({'model':db[_0x9450('0x80')],'as':_0x9450('0xbe'),'attributes':['id','fullname']});return db[_0x9450('0x37')][_0x9450('0x4a')]({'where':{'id':_0x5d7112[_0x9450('0x3f')]['id']},'include':_0x229fea})['then'](handleEntityNotFound(_0x13077d,null))[_0x9450('0x18')](function(_0x31c170){if(_0x31c170){var _0x4e800e=_0x31c170[_0x9450('0xbf')]({'plain':!![]});fs['mkdirSync'](_0x1d26bb);var _0x1edd65={'channel':'Chat','account':_0x4e800e[_0x9450('0xbd')]['name'],'agent':_0x4e800e[_0x9450('0xbe')]?_0x4e800e['Owner'][_0x9450('0x8c')]:_0x9450('0xc0'),'createdAt':moment(_0x4e800e[_0x9450('0x8d')])[_0x9450('0x7b')](_0x9450('0xc1'))[_0x9450('0xb6')](),'closedAt':_0x4e800e['closed']?moment(_0x4e800e[_0x9450('0xc2')])[_0x9450('0x7b')]('YYYY-MM-DD\x20HH:mm:ss')[_0x9450('0xb6')]():'','disposition':_0x4e800e[_0x9450('0x6a')],'chatInfo':{'browser':_0x4e800e['browserName'],'os':_0x4e800e['osName'],'referer':_0x4e800e[_0x9450('0xc3')],'customerIp':_0x4e800e[_0x9450('0xc4')],'customerPort':_0x4e800e[_0x9450('0xc5')]?_0x4e800e[_0x9450('0xc5')]:_0x9450('0xc0')},'messages':_(_0x4e800e[_0x9450('0x7f')])[_0x9450('0xc6')]()[_0x9450('0xa2')]({'secret':![]})[_0x9450('0x36')](function(_0x472712){if(_0x472712['Attachment']){var _0x6560ca=path[_0x9450('0x77')](_0x14b111,_0x472712[_0x9450('0x71')]['basename']);if(fs[_0x9450('0xc7')](_0x6560ca)){fs[_0x9450('0xc8')](_0x6560ca)['pipe'](fs[_0x9450('0xc9')](path[_0x9450('0x77')](_0x1d26bb,_0x472712[_0x9450('0x71')][_0x9450('0x6e')])));}}return{'date':moment(_0x472712[_0x9450('0x8d')])['format'](_0x9450('0xc1'))['toString'](),'sender':_0x472712[_0x9450('0x8f')]===_0x9450('0x5e')?_0x472712['User']?_0x472712[_0x9450('0x80')][_0x9450('0x8c')]:'System':_0x472712[_0x9450('0x63')][_0x9450('0xca')]+(_0x472712[_0x9450('0x63')][_0x9450('0xbb')]?'\x20'+_0x472712[_0x9450('0x63')][_0x9450('0xbb')]:''),'body':_0x472712[_0x9450('0x71')]?_0x472712[_0x9450('0x71')][_0x9450('0x6e')]:_0x472712['body'],'direction':_0x472712[_0x9450('0x8f')]===_0x9450('0x5e')?'A':'C','secret':_0x472712[_0x9450('0x90')],'read':_0x472712[_0x9450('0xbc')],'attachment':_0x472712[_0x9450('0x71')]};})[_0x9450('0xcb')]()};return ejs['renderFile'](path[_0x9450('0x77')](config[_0x9450('0x75')],_0x9450('0xb7'),_0x9450('0xcc'),_0x9450('0xcd')),{'interaction':_0x1edd65})[_0x9450('0x18')](function(_0x22cf20){var _0x1aff24=path[_0x9450('0x77')](_0x1d26bb,_0x9450('0xce')+_0x4e800e['id']+'-'+_0x2625e7+_0x9450('0xcf'));var _0x4702b0={'path':_0x1aff24,'channel':_0x9450('0xd0'),'interactionId':_0x4e800e['id']};return pdf[_0x9450('0xd1')](_0x22cf20,_0x4702b0);})[_0x9450('0x18')](function(){return new Promise(function(_0xa1bceb,_0x57ca46){zipdir(_0x1d26bb,{'saveTo':_0x115e66},function(_0x5d3689,_0x17a093){if(_0x5d3689)return _0x57ca46(_0x5d3689);return _0xa1bceb(_0x17a093);});})[_0x9450('0x18')](function(){return new BPromise(function(_0x437758,_0x27cf0e){rimraf(_0x1d26bb,function(_0x4b2396){if(_0x4b2396)_0x27cf0e(_0x4b2396);return _0x437758();});});})['then'](function(){return _0x13077d[_0x9450('0x78')](_0x115e66,_0x163926,function(_0xe6ab8d){if(_0xe6ab8d){logger[_0x9450('0x1e')](_0x9450('0xd2'),_0xe6ab8d);}else{fs[_0x9450('0xd3')](_0x115e66);}});});});}else{return _0x13077d['sendStatus'](0xc8);}})['catch'](handleError(_0x13077d,null));};
\ No newline at end of file
index 22e5b63..b85d985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa1=['save','update','remove','setDataValue','Users','map','findAll','then','emit','catch','hasOwnProperty','hook','exports','events','ChatInteraction','../../mysqldb'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0xbfa1,0x11d));var _0x1bfa=function(_0x3f6c4f,_0x507031){_0x3f6c4f=_0x3f6c4f-0x0;var _0x245e7c=_0xbfa1[_0x3f6c4f];return _0x245e7c;};'use strict';var EventEmitter=require(_0x1bfa('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x1bfa('0x1')];var ChatMessage=require(_0x1bfa('0x2'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1bfa('0x3'),'afterUpdate':_0x1bfa('0x4'),'afterDestroy':_0x1bfa('0x5')};function emitEvent(_0x360c88){return function(_0x5cd60f,_0x178156,_0x47a4a7){_0x5cd60f['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x3087d6){_0x5cd60f[_0x1bfa('0x6')](_0x1bfa('0x7'),_0x3087d6[_0x1bfa('0x8')](function(_0x3d689c){return{'id':_0x3d689c['id']};}));return ChatMessage[_0x1bfa('0x9')]({'where':{'ChatInteractionId':_0x5cd60f['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1bfa('0xa')](function(_0x195374){_0x5cd60f[_0x1bfa('0x6')]('unreadMessages',_0x195374['length']);ChatInteractionEvents[_0x1bfa('0xb')](_0x360c88+':'+_0x5cd60f['id'],_0x5cd60f);ChatInteractionEvents[_0x1bfa('0xb')](_0x360c88,_0x5cd60f);_0x47a4a7(null);})[_0x1bfa('0xc')](_0x47a4a7(null));};}for(var e in events){if(events[_0x1bfa('0xd')](e)){var event=events[e];ChatInteraction[_0x1bfa('0xe')](e,emitEvent(event));}}module[_0x1bfa('0xf')]=ChatInteractionEvents;
\ No newline at end of file
+var _0xf4a4=['then','setDataValue','unreadMessages','emit','catch','hasOwnProperty','exports','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove','getUsers'];(function(_0x3e35b9,_0x482ef8){var _0x558e83=function(_0x1d7b09){while(--_0x1d7b09){_0x3e35b9['push'](_0x3e35b9['shift']());}};_0x558e83(++_0x482ef8);}(_0xf4a4,0x151));var _0x4f4a=function(_0x20f962,_0x12974d){_0x20f962=_0x20f962-0x0;var _0x4df9d9=_0xf4a4[_0x20f962];return _0x4df9d9;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x4f4a('0x0'))['db'][_0x4f4a('0x1')];var ChatMessage=require('../../mysqldb')['db'][_0x4f4a('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x4f4a('0x3')](0x0);var events={'afterCreate':_0x4f4a('0x4'),'afterUpdate':_0x4f4a('0x5'),'afterDestroy':_0x4f4a('0x6')};function emitEvent(_0x3d2852){return function(_0x3ff01e,_0x35a331,_0x38fe8e){_0x3ff01e[_0x4f4a('0x7')]({'attributes':['id'],'raw':!![]})[_0x4f4a('0x8')](function(_0x46f62b){_0x3ff01e[_0x4f4a('0x9')]('Users',_0x46f62b['map'](function(_0x568b14){return{'id':_0x568b14['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x3ff01e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4f4a('0x8')](function(_0x12e184){_0x3ff01e[_0x4f4a('0x9')](_0x4f4a('0xa'),_0x12e184['length']);ChatInteractionEvents[_0x4f4a('0xb')](_0x3d2852+':'+_0x3ff01e['id'],_0x3ff01e);ChatInteractionEvents[_0x4f4a('0xb')](_0x3d2852,_0x3ff01e);_0x38fe8e(null);})[_0x4f4a('0xc')](_0x38fe8e(null));};}for(var e in events){if(events[_0x4f4a('0xd')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x4f4a('0xe')]=ChatInteractionEvents;
\ No newline at end of file
index 84d2d79..ba8ea8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd937=['ChatInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x36fb4e,_0x1ec3ee){var _0x17430f=function(_0xc09cde){while(--_0xc09cde){_0x36fb4e['push'](_0x36fb4e['shift']());}};_0x17430f(++_0x1ec3ee);}(_0xd937,0x1e3));var _0x7d93=function(_0x6b6aa4,_0x560b62){_0x6b6aa4=_0x6b6aa4-0x0;var _0x5e0c45=_0xd937[_0x6b6aa4];return _0x5e0c45;};'use strict';var _=require(_0x7d93('0x0'));var util=require(_0x7d93('0x1'));var logger=require(_0x7d93('0x2'))('api');var moment=require(_0x7d93('0x3'));var BPromise=require('bluebird');var rp=require(_0x7d93('0x4'));var fs=require('fs');var path=require(_0x7d93('0x5'));var rimraf=require(_0x7d93('0x6'));var config=require(_0x7d93('0x7'));var attributes=require('./chatInteraction.attributes');module[_0x7d93('0x8')]=function(_0x353323,_0xdacf01){return _0x353323[_0x7d93('0x9')](_0x7d93('0xa'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x14b31b,_0x2440a2,_0x5d5456){if(_0x14b31b[_0x7d93('0xb')](_0x7d93('0xc'))){_0x14b31b[_0x7d93('0xd')]=moment()[_0x7d93('0xe')](_0x7d93('0xf'));}_0x5d5456(null,_0x14b31b);}},'charset':'utf8mb4','collate':_0x7d93('0x10')});};
\ No newline at end of file
+var _0x9d12=['format','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','path','rimraf','./chatInteraction.attributes','exports','define','chat_interactions','changed','closed'];(function(_0x598504,_0x595134){var _0x23bab6=function(_0x465053){while(--_0x465053){_0x598504['push'](_0x598504['shift']());}};_0x23bab6(++_0x595134);}(_0x9d12,0x173));var _0x29d1=function(_0xecf641,_0xbd2f8f){_0xecf641=_0xecf641-0x0;var _0x1e389b=_0x9d12[_0xecf641];return _0x1e389b;};'use strict';var _=require(_0x29d1('0x0'));var util=require(_0x29d1('0x1'));var logger=require(_0x29d1('0x2'))('api');var moment=require(_0x29d1('0x3'));var BPromise=require(_0x29d1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x29d1('0x5'));var rimraf=require(_0x29d1('0x6'));var config=require('../../config/environment');var attributes=require(_0x29d1('0x7'));module[_0x29d1('0x8')]=function(_0x37d177,_0x5cda5f){return _0x37d177[_0x29d1('0x9')]('ChatInteraction',attributes,{'tableName':_0x29d1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x8c9cf0,_0x279214,_0x5c5d0d){if(_0x8c9cf0[_0x29d1('0xb')](_0x29d1('0xc'))){_0x8c9cf0['closedAt']=moment()[_0x29d1('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5c5d0d(null,_0x8c9cf0);}},'charset':_0x29d1('0xe'),'collate':_0x29d1('0xf')});};
\ No newline at end of file
index 90f0120..4dd659c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec31=['spread','debug','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','ChatInteraction,\x20%s,\x20%s','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','where','attributes','stringify','AddTagsToChatInteraction','find','ids','omit'];(function(_0x3370a8,_0xb43d21){var _0x11833a=function(_0x1bab32){while(--_0x1bab32){_0x3370a8['push'](_0x3370a8['shift']());}};_0x11833a(++_0xb43d21);}(_0xec31,0xa7));var _0x1ec3=function(_0x2fa137,_0x15d570){_0x2fa137=_0x2fa137-0x0;var _0x15a421=_0xec31[_0x2fa137];return _0x15a421;};'use strict';var _=require(_0x1ec3('0x0'));var util=require(_0x1ec3('0x1'));var moment=require(_0x1ec3('0x2'));var BPromise=require(_0x1ec3('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1ec3('0x4'));var db=require(_0x1ec3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1ec3('0x6'))(_0x1ec3('0x7'));var config=require(_0x1ec3('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1ec3('0x9')][_0x1ec3('0xa')]({'port':0x232a});config[_0x1ec3('0xb')]=_[_0x1ec3('0xc')](config[_0x1ec3('0xb')],{'host':_0x1ec3('0xd'),'port':0x18eb});var socket=require(_0x1ec3('0xe'))(new Redis(config['redis']));require('./chatInteraction.socket')[_0x1ec3('0xf')](socket);function respondWithRpcPromise(_0x3cd518,_0x13fcbb,_0x30e68c){return new BPromise(function(_0x7ebd25,_0x348723){return client[_0x1ec3('0x10')](_0x3cd518,_0x30e68c)[_0x1ec3('0x11')](function(_0x178517){logger[_0x1ec3('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x13fcbb,'request\x20sent');logger['debug'](_0x1ec3('0x13'),_0x13fcbb,_0x1ec3('0x14'),JSON['stringify'](_0x178517));if(_0x178517[_0x1ec3('0x15')]){if(_0x178517[_0x1ec3('0x15')]['code']===0x1f4){logger[_0x1ec3('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x13fcbb,_0x178517['error']['message']);return _0x348723(_0x178517[_0x1ec3('0x15')][_0x1ec3('0x16')]);}logger[_0x1ec3('0x15')](_0x1ec3('0x17'),_0x13fcbb,_0x178517[_0x1ec3('0x15')][_0x1ec3('0x16')]);return _0x7ebd25(_0x178517[_0x1ec3('0x15')][_0x1ec3('0x16')]);}else{logger[_0x1ec3('0x12')](_0x1ec3('0x17'),_0x13fcbb,_0x1ec3('0x14'));_0x7ebd25(_0x178517[_0x1ec3('0x18')][_0x1ec3('0x16')]);}})[_0x1ec3('0x19')](function(_0x3b0cf0){logger[_0x1ec3('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x13fcbb,_0x3b0cf0);_0x348723(_0x3b0cf0);});});}exports[_0x1ec3('0x1a')]=function(_0x41c253){var _0x580bbb=this;return new Promise(function(_0xec0789,_0x51b17f){return db[_0x1ec3('0x1b')][_0x1ec3('0x1c')](_0x41c253[_0x1ec3('0x1d')],{'raw':_0x41c253[_0x1ec3('0x1e')]?_0x41c253[_0x1ec3('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41c253['options']?_0x41c253[_0x1ec3('0x1e')][_0x1ec3('0x1f')]||null:null,'attributes':_0x41c253['options']?_0x41c253['options'][_0x1ec3('0x20')]||null:null,'limit':_0x41c253[_0x1ec3('0x1e')]?_0x41c253[_0x1ec3('0x1e')]['limit']||null:null})[_0x1ec3('0x11')](function(_0x4c7eee){logger[_0x1ec3('0x12')](_0x1ec3('0x1a'),_0x41c253);logger['debug'](_0x1ec3('0x1a'),_0x41c253,JSON[_0x1ec3('0x21')](_0x4c7eee));_0xec0789(_0x4c7eee);})['catch'](function(_0x29b4d6){logger[_0x1ec3('0x15')]('UpdateChatInteraction',_0x29b4d6['message'],_0x41c253);_0x51b17f(_0x580bbb['error'](0x1f4,_0x29b4d6['message']));});});};exports[_0x1ec3('0x22')]=function(_0x204ebd){return new Promise(function(_0x119bab,_0x105bd3){return db[_0x1ec3('0x1b')][_0x1ec3('0x23')]({'where':_0x204ebd['options']?_0x204ebd[_0x1ec3('0x1e')][_0x1ec3('0x1f')]||null:null})['then'](function(_0x15b4ec){if(_0x15b4ec){return _0x15b4ec['addTags'](_0x204ebd[_0x1ec3('0x1d')][_0x1ec3('0x24')],_[_0x1ec3('0x25')](_0x204ebd[_0x1ec3('0x1d')],[_0x1ec3('0x24'),'id'])||{});}})[_0x1ec3('0x26')](function(_0x25599a){logger['info']('AddTags',_0x204ebd);logger[_0x1ec3('0x27')](_0x1ec3('0x28'),_0x204ebd,JSON[_0x1ec3('0x21')](_0x25599a));_0x119bab(_0x25599a);})[_0x1ec3('0x19')](function(_0x30c9a4){logger['error'](_0x1ec3('0x28'),_0x30c9a4[_0x1ec3('0x16')],_0x204ebd);_0x105bd3(_this[_0x1ec3('0x15')](0x1f4,_0x30c9a4[_0x1ec3('0x16')]));});});};
\ No newline at end of file
+var _0x7105=['ChatInteraction','update','body','options','raw','where','limit','then','UpdateChatInteraction','AddTagsToChatInteraction','find','addTags','ids','omit','spread','AddTags','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','request','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','info','catch'];(function(_0x1a62f8,_0xbb6aa2){var _0x4a561c=function(_0x129d0d){while(--_0x129d0d){_0x1a62f8['push'](_0x1a62f8['shift']());}};_0x4a561c(++_0xbb6aa2);}(_0x7105,0xa4));var _0x5710=function(_0x5eb0fd,_0x17d8ef){_0x5eb0fd=_0x5eb0fd-0x0;var _0x22cb4a=_0x7105[_0x5eb0fd];return _0x22cb4a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5710('0x0'));var BPromise=require(_0x5710('0x1'));var rs=require(_0x5710('0x2'));var fs=require('fs');var Redis=require(_0x5710('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5710('0x4'));var config=require(_0x5710('0x5'));var jayson=require(_0x5710('0x6'));var client=jayson[_0x5710('0x7')]['http']({'port':0x232a});config['redis']=_[_0x5710('0x8')](config[_0x5710('0x9')],{'host':_0x5710('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x49ec40,_0x3b47bb,_0x710be4){return new BPromise(function(_0x3cca86,_0x3d2d19){return client[_0x5710('0xb')](_0x49ec40,_0x710be4)['then'](function(_0xe6854a){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x3b47bb,'request\x20sent');logger[_0x5710('0xc')](_0x5710('0xd'),_0x3b47bb,'request\x20sent',JSON[_0x5710('0xe')](_0xe6854a));if(_0xe6854a[_0x5710('0xf')]){if(_0xe6854a['error'][_0x5710('0x10')]===0x1f4){logger['error'](_0x5710('0x11'),_0x3b47bb,_0xe6854a['error'][_0x5710('0x12')]);return _0x3d2d19(_0xe6854a['error'][_0x5710('0x12')]);}logger[_0x5710('0xf')](_0x5710('0x11'),_0x3b47bb,_0xe6854a[_0x5710('0xf')][_0x5710('0x12')]);return _0x3cca86(_0xe6854a[_0x5710('0xf')][_0x5710('0x12')]);}else{logger[_0x5710('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x3b47bb,'request\x20sent');_0x3cca86(_0xe6854a['result'][_0x5710('0x12')]);}})[_0x5710('0x14')](function(_0x22482f){logger[_0x5710('0xf')](_0x5710('0x11'),_0x3b47bb,_0x22482f);_0x3d2d19(_0x22482f);});});}exports['UpdateChatInteraction']=function(_0x3b3e95){var _0x39753e=this;return new Promise(function(_0x5dcb75,_0x515ff4){return db[_0x5710('0x15')][_0x5710('0x16')](_0x3b3e95[_0x5710('0x17')],{'raw':_0x3b3e95[_0x5710('0x18')]?_0x3b3e95[_0x5710('0x18')][_0x5710('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b3e95['options']?_0x3b3e95[_0x5710('0x18')][_0x5710('0x1a')]||null:null,'attributes':_0x3b3e95[_0x5710('0x18')]?_0x3b3e95[_0x5710('0x18')]['attributes']||null:null,'limit':_0x3b3e95[_0x5710('0x18')]?_0x3b3e95[_0x5710('0x18')][_0x5710('0x1b')]||null:null})[_0x5710('0x1c')](function(_0x285a73){logger['info'](_0x5710('0x1d'),_0x3b3e95);logger[_0x5710('0xc')](_0x5710('0x1d'),_0x3b3e95,JSON[_0x5710('0xe')](_0x285a73));_0x5dcb75(_0x285a73);})[_0x5710('0x14')](function(_0x4db659){logger[_0x5710('0xf')](_0x5710('0x1d'),_0x4db659[_0x5710('0x12')],_0x3b3e95);_0x515ff4(_0x39753e[_0x5710('0xf')](0x1f4,_0x4db659['message']));});});};exports[_0x5710('0x1e')]=function(_0x1db148){return new Promise(function(_0x2b6475,_0x5d39af){return db[_0x5710('0x15')][_0x5710('0x1f')]({'where':_0x1db148['options']?_0x1db148[_0x5710('0x18')][_0x5710('0x1a')]||null:null})[_0x5710('0x1c')](function(_0x2d0363){if(_0x2d0363){return _0x2d0363[_0x5710('0x20')](_0x1db148[_0x5710('0x17')][_0x5710('0x21')],_[_0x5710('0x22')](_0x1db148[_0x5710('0x17')],[_0x5710('0x21'),'id'])||{});}})[_0x5710('0x23')](function(_0x19525a){logger[_0x5710('0x13')]('AddTags',_0x1db148);logger[_0x5710('0xc')](_0x5710('0x24'),_0x1db148,JSON['stringify'](_0x19525a));_0x2b6475(_0x19525a);})[_0x5710('0x14')](function(_0x1c0446){logger[_0x5710('0xf')](_0x5710('0x24'),_0x1c0446[_0x5710('0x12')],_0x1db148);_0x5d39af(_this[_0x5710('0xf')](0x1f4,_0x1c0446[_0x5710('0x12')]));});});};
\ No newline at end of file
index 4426e76..d220781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7f2=['removeListener','register','length','chatInteraction:','./chatInteraction.events','remove'];(function(_0x4503df,_0xfec122){var _0x3f1b2b=function(_0x32b1de){while(--_0x32b1de){_0x4503df['push'](_0x4503df['shift']());}};_0x3f1b2b(++_0xfec122);}(_0xb7f2,0x15a));var _0x2b7f=function(_0x6c91ea,_0x5af7c1){_0x6c91ea=_0x6c91ea-0x0;var _0x101290=_0xb7f2[_0x6c91ea];return _0x101290;};'use strict';var ChatInteractionEvents=require(_0x2b7f('0x0'));var events=['save',_0x2b7f('0x1'),'update'];function createListener(_0xd6e4f5,_0x112b0c){return function(_0x41264c){_0x112b0c['emit'](_0xd6e4f5,_0x41264c);};}function removeListener(_0x2fc61d,_0x50ded1){return function(){ChatInteractionEvents[_0x2b7f('0x2')](_0x2fc61d,_0x50ded1);};}exports[_0x2b7f('0x3')]=function(_0x1b8ecd){for(var _0x1863fc=0x0,_0x21a805=events[_0x2b7f('0x4')];_0x1863fc<_0x21a805;_0x1863fc++){var _0x378945=events[_0x1863fc];var _0x1a1982=createListener(_0x2b7f('0x5')+_0x378945,_0x1b8ecd);ChatInteractionEvents['on'](_0x378945,_0x1a1982);}};
\ No newline at end of file
+var _0x6ab7=['remove','removeListener','register','length','./chatInteraction.events','save'];(function(_0x14dd0a,_0x4b7074){var _0x4ff564=function(_0x23444f){while(--_0x23444f){_0x14dd0a['push'](_0x14dd0a['shift']());}};_0x4ff564(++_0x4b7074);}(_0x6ab7,0x15a));var _0x76ab=function(_0x51168c,_0x2f3ea2){_0x51168c=_0x51168c-0x0;var _0x323bc0=_0x6ab7[_0x51168c];return _0x323bc0;};'use strict';var ChatInteractionEvents=require(_0x76ab('0x0'));var events=[_0x76ab('0x1'),_0x76ab('0x2'),'update'];function createListener(_0x37b7a0,_0x58c961){return function(_0x2c69e9){_0x58c961['emit'](_0x37b7a0,_0x2c69e9);};}function removeListener(_0x3e962b,_0x56e42e){return function(){ChatInteractionEvents[_0x76ab('0x3')](_0x3e962b,_0x56e42e);};}exports[_0x76ab('0x4')]=function(_0x21403c){for(var _0x43fc37=0x0,_0x40dfc1=events[_0x76ab('0x5')];_0x43fc37<_0x40dfc1;_0x43fc37++){var _0x394009=events[_0x43fc37];var _0x28d95d=createListener('chatInteraction:'+_0x394009,_0x21403c);ChatInteractionEvents['on'](_0x394009,_0x28d95d);}};
\ No newline at end of file
index c8c87e6..0ce1029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e7=['file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','put','chatinteraction:update','update','/:id/custom_update','abandon','/:id/close','close','delete','/:id','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','isChatInteractionAuthorized','show','/:id/attachment_download','/:id/messages','/:id/my_messages','getMyMessages','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','server/files/attachments/','format','%s-%s','now','replace','/:id/attachment_upload','single'];(function(_0x3ba924,_0x3b99f0){var _0x4cc1df=function(_0x15bf28){while(--_0x15bf28){_0x3ba924['push'](_0x3ba924['shift']());}};_0x4cc1df(++_0x3b99f0);}(_0x44e7,0x7a));var _0x744e=function(_0x28fbe3,_0x4ac6f8){_0x28fbe3=_0x28fbe3-0x0;var _0x45db6a=_0x44e7[_0x28fbe3];return _0x45db6a;};'use strict';var multer=require(_0x744e('0x0'));var util=require(_0x744e('0x1'));var path=require(_0x744e('0x2'));var timeout=require(_0x744e('0x3'));var express=require('express');var router=express[_0x744e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x744e('0x5'));var config=require(_0x744e('0x6'));var controller=require('./chatInteraction.controller');router[_0x744e('0x7')]('/',auth[_0x744e('0x8')](),controller[_0x744e('0x9')]);router[_0x744e('0x7')](_0x744e('0xa'),auth['isAuthenticated'](),controller[_0x744e('0xb')]);router['get']('/:id',auth[_0x744e('0xc')](),controller[_0x744e('0xd')]);router[_0x744e('0x7')](_0x744e('0xe'),auth['isChatInteractionAuthorized'](),controller['attachmentDownload']);router[_0x744e('0x7')](_0x744e('0xf'),auth[_0x744e('0x8')](),controller['getMessages']);router['get'](_0x744e('0x10'),auth['isChatInteractionAuthorized'](),controller[_0x744e('0x11')]);router[_0x744e('0x7')]('/:id/download',auth[_0x744e('0x8')](),controller[_0x744e('0x12')]);router[_0x744e('0x13')]('/',auth[_0x744e('0x8')](),controller[_0x744e('0x14')]);router[_0x744e('0x13')](_0x744e('0x15'),auth[_0x744e('0x8')](),controller[_0x744e('0x16')]);var upload=multer({'storage':multer[_0x744e('0x17')]({'destination':function(_0x22e83c,_0x5b0d05,_0x27cfdf){_0x27cfdf(null,path['join'](config['root'],_0x744e('0x18')));},'filename':function(_0x258fc5,_0x567cc7,_0x3bdee2){_0x3bdee2(null,util[_0x744e('0x19')](_0x744e('0x1a'),Date[_0x744e('0x1b')](),_0x567cc7['originalname'][_0x744e('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x744e('0x13')](_0x744e('0x1d'),upload[_0x744e('0x1e')](_0x744e('0x1f')),controller[_0x744e('0x20')]);router['post'](_0x744e('0xf'),auth[_0x744e('0xc')](),controller[_0x744e('0x21')]);router['post'](_0x744e('0x22'),auth['isAuthenticated'](),interaction[_0x744e('0x23')](_0x744e('0x24'),_0x744e('0x25')),controller['addTags']);router[_0x744e('0x26')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x744e('0x24'),_0x744e('0x27')),controller[_0x744e('0x28')]);router[_0x744e('0x26')](_0x744e('0x29'),controller['customUpdate']);router[_0x744e('0x26')]('/:id/abandon',auth['isChatInteractionAuthorized'](),controller[_0x744e('0x2a')]);router[_0x744e('0x26')](_0x744e('0x2b'),controller[_0x744e('0x2c')]);router[_0x744e('0x2d')](_0x744e('0x2e'),auth['isAuthenticated'](),interaction[_0x744e('0x23')](_0x744e('0x24'),_0x744e('0x2f')),controller[_0x744e('0x30')]);router[_0x744e('0x2d')]('/:id/tags',auth[_0x744e('0x8')](),controller[_0x744e('0x31')]);module[_0x744e('0x32')]=router;
\ No newline at end of file
+var _0x488f=['/describe','describe','/:id','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMyMessages','/:id/download','post','create','/:id/vidaoo','createVidaooSession','join','root','server/files/attachments/','format','%s-%s','now','originalname','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','customUpdate','/:id/abandon','abandon','close','delete','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index'];(function(_0x294095,_0x29e946){var _0xd5f54=function(_0x8e8630){while(--_0x8e8630){_0x294095['push'](_0x294095['shift']());}};_0xd5f54(++_0x29e946);}(_0x488f,0x89));var _0xf488=function(_0x265c9f,_0x435dba){_0x265c9f=_0x265c9f-0x0;var _0x3fbd7d=_0x488f[_0x265c9f];return _0x3fbd7d;};'use strict';var multer=require(_0xf488('0x0'));var util=require(_0xf488('0x1'));var path=require('path');var timeout=require(_0xf488('0x2'));var express=require(_0xf488('0x3'));var router=express[_0xf488('0x4')]();var fs_extra=require(_0xf488('0x5'));var auth=require(_0xf488('0x6'));var interaction=require(_0xf488('0x7'));var config=require(_0xf488('0x8'));var controller=require(_0xf488('0x9'));router[_0xf488('0xa')]('/',auth[_0xf488('0xb')](),controller[_0xf488('0xc')]);router['get'](_0xf488('0xd'),auth[_0xf488('0xb')](),controller[_0xf488('0xe')]);router[_0xf488('0xa')](_0xf488('0xf'),auth['isChatInteractionAuthorized'](),controller[_0xf488('0x10')]);router[_0xf488('0xa')](_0xf488('0x11'),auth[_0xf488('0x12')](),controller[_0xf488('0x13')]);router[_0xf488('0xa')](_0xf488('0x14'),auth[_0xf488('0xb')](),controller['getMessages']);router[_0xf488('0xa')]('/:id/my_messages',auth[_0xf488('0x12')](),controller[_0xf488('0x15')]);router[_0xf488('0xa')](_0xf488('0x16'),auth[_0xf488('0xb')](),controller['download']);router[_0xf488('0x17')]('/',auth['isAuthenticated'](),controller[_0xf488('0x18')]);router[_0xf488('0x17')](_0xf488('0x19'),auth[_0xf488('0xb')](),controller[_0xf488('0x1a')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5d8192,_0x32ae85,_0x5146a7){_0x5146a7(null,path[_0xf488('0x1b')](config[_0xf488('0x1c')],_0xf488('0x1d')));},'filename':function(_0x2f878c,_0x2f5f05,_0x44d906){_0x44d906(null,util[_0xf488('0x1e')](_0xf488('0x1f'),Date[_0xf488('0x20')](),_0x2f5f05[_0xf488('0x21')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf488('0x17')]('/:id/attachment_upload',upload['single']('file'),controller[_0xf488('0x22')]);router[_0xf488('0x17')](_0xf488('0x14'),auth[_0xf488('0x12')](),controller[_0xf488('0x23')]);router[_0xf488('0x17')](_0xf488('0x24'),auth[_0xf488('0xb')](),interaction[_0xf488('0x25')](_0xf488('0x26'),_0xf488('0x27')),controller[_0xf488('0x28')]);router[_0xf488('0x29')](_0xf488('0xf'),auth[_0xf488('0xb')](),interaction[_0xf488('0x25')]('chat',_0xf488('0x2a')),controller['update']);router[_0xf488('0x29')]('/:id/custom_update',controller[_0xf488('0x2b')]);router['put'](_0xf488('0x2c'),auth[_0xf488('0x12')](),controller[_0xf488('0x2d')]);router[_0xf488('0x29')]('/:id/close',controller[_0xf488('0x2e')]);router[_0xf488('0x2f')]('/:id',auth[_0xf488('0xb')](),interaction['tracked']('chat','chatinteraction:destroy'),controller['destroy']);router[_0xf488('0x2f')](_0xf488('0x24'),auth['isAuthenticated'](),controller[_0xf488('0x30')]);module[_0xf488('0x31')]=router;
\ No newline at end of file
index 08a9b4b..e940a57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['medium','BOOLEAN','sequelize','exports','TEXT'];(function(_0x2bdc44,_0x47ea79){var _0x387b3c=function(_0x5e7c05){while(--_0x5e7c05){_0x2bdc44['push'](_0x2bdc44['shift']());}};_0x387b3c(++_0x47ea79);}(_0xeb3b,0x1c9));var _0xbeb3=function(_0x1979d8,_0x10d8f2){_0x1979d8=_0x1979d8-0x0;var _0x1d5bb3=_0xeb3b[_0x1979d8];return _0x1d5bb3;};'use strict';var Sequelize=require(_0xbeb3('0x0'));module[_0xbeb3('0x1')]={'body':{'type':Sequelize[_0xbeb3('0x2')](_0xbeb3('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xbeb3('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x2b8c=['medium','BOOLEAN','INTEGER','TEXT'];(function(_0x3e53d2,_0x56ac2b){var _0xfb1cd3=function(_0x42f75b){while(--_0x42f75b){_0x3e53d2['push'](_0x3e53d2['shift']());}};_0xfb1cd3(++_0x56ac2b);}(_0x2b8c,0x147));var _0xc2b8=function(_0x4c2b79,_0x4c064d){_0x4c2b79=_0x4c2b79-0x0;var _0x45063f=_0x2b8c[_0x4c2b79];return _0x45063f;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0xc2b8('0x0')](_0xc2b8('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xc2b8('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xc2b8('0x3')]}};
\ No newline at end of file
index 6473408..a813985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe70=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','then','rows','catch','show','keys','find','create','body','params','describe','get','messages','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','user','fullname','role','userpic','showWebBar','VoiceQueue','type','Unable\x20to\x20retrieve\x20the\x20current\x20user','Agents','userProfileId','autoAssociation','UserProfileResource','resourceId','push','createdAt','FromId','ToId','read','-createdAt','all','eml-format','rimraf','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','destroy','error','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','key','model','query','filters'];(function(_0x231e16,_0x67347b){var _0x570a7c=function(_0x2c35b4){while(--_0x2c35b4){_0x231e16['push'](_0x231e16['shift']());}};_0x570a7c(++_0x67347b);}(_0xfe70,0x17b));var _0x0fe7=function(_0x58c851,_0x1f3d96){_0x58c851=_0x58c851-0x0;var _0x534d8a=_0xfe70[_0x58c851];return _0x534d8a;};'use strict';var emlformat=require(_0x0fe7('0x0'));var rimraf=require(_0x0fe7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0fe7('0x2'));var moment=require(_0x0fe7('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0fe7('0x4'));var util=require(_0x0fe7('0x5'));var path=require('path');var sox=require(_0x0fe7('0x6'));var csv=require(_0x0fe7('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0fe7('0x8'));var squel=require(_0x0fe7('0x9'));var crypto=require(_0x0fe7('0xa'));var jsforce=require(_0x0fe7('0xb'));var deskjs=require(_0x0fe7('0xc'));var toCsv=require(_0x0fe7('0x7'));var querystring=require('querystring');var Papa=require(_0x0fe7('0xd'));var Redis=require(_0x0fe7('0xe'));var authService=require(_0x0fe7('0xf'));var qs=require(_0x0fe7('0x10'));var as=require(_0x0fe7('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0fe7('0x12'))(_0x0fe7('0x13'));var utils=require(_0x0fe7('0x14'));var config=require(_0x0fe7('0x15'));var licenseUtil=require(_0x0fe7('0x16'));var db=require(_0x0fe7('0x17'))['db'];config[_0x0fe7('0x18')]=_[_0x0fe7('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0fe7('0x1a'))(new Redis(config[_0x0fe7('0x18')]));require(_0x0fe7('0x1b'))[_0x0fe7('0x1c')](socket);function respondWithStatusCode(_0x40c3c7,_0x3cad14){_0x3cad14=_0x3cad14||0xcc;return function(_0x25ca6d){if(_0x25ca6d){return _0x40c3c7[_0x0fe7('0x1d')](_0x3cad14);}return _0x40c3c7[_0x0fe7('0x1e')](_0x3cad14)[_0x0fe7('0x1f')]();};}function respondWithResult(_0x2660a9,_0x2640fa){_0x2640fa=_0x2640fa||0xc8;return function(_0x166ea5){if(_0x166ea5){return _0x2660a9[_0x0fe7('0x1e')](_0x2640fa)[_0x0fe7('0x20')](_0x166ea5);}};}function respondWithFilteredResult(_0x4f5d10,_0xc75789){return function(_0x15b08b){if(_0x15b08b){var _0x10d273=typeof _0xc75789[_0x0fe7('0x21')]==='undefined'&&typeof _0xc75789[_0x0fe7('0x22')]===_0x0fe7('0x23');var _0x15116d=_0x15b08b[_0x0fe7('0x24')];var _0x18ae75=_0x10d273?0x0:_0xc75789[_0x0fe7('0x21')];var _0x3d6664=_0x10d273?_0x15b08b[_0x0fe7('0x24')]:_0xc75789['offset']+_0xc75789[_0x0fe7('0x22')];var _0x5b881f;if(_0x3d6664>=_0x15116d){_0x3d6664=_0x15116d;_0x5b881f=0xc8;}else{_0x5b881f=0xce;}_0x4f5d10['status'](_0x5b881f);return _0x4f5d10[_0x0fe7('0x25')]('Content-Range',_0x18ae75+'-'+_0x3d6664+'/'+_0x15116d)[_0x0fe7('0x20')](_0x15b08b);}return null;};}function patchUpdates(_0x37a52b){return function(_0x33f669){try{jsonpatch[_0x0fe7('0x26')](_0x33f669,_0x37a52b,!![]);}catch(_0x3d9289){return BPromise[_0x0fe7('0x27')](_0x3d9289);}return _0x33f669['save']();};}function saveUpdates(_0xacef43,_0x269e7a){return function(_0x4a95ca){if(_0x4a95ca){return _0x4a95ca['update'](_0xacef43)['then'](function(_0x469f7d){return _0x469f7d;});}return null;};}function removeEntity(_0x459b8a,_0xd69316){return function(_0x4b1bfe){if(_0x4b1bfe){return _0x4b1bfe[_0x0fe7('0x28')]()['then'](function(){_0x459b8a['status'](0xcc)[_0x0fe7('0x1f')]();});}};}function handleEntityNotFound(_0x104afc,_0x363883){return function(_0x213026){if(!_0x213026){_0x104afc[_0x0fe7('0x1d')](0x194);}return _0x213026;};}function handleError(_0x877b3c,_0x2c9ecf){_0x2c9ecf=_0x2c9ecf||0x1f4;return function(_0x5651d4){logger[_0x0fe7('0x29')](_0x5651d4['stack']);if(_0x5651d4[_0x0fe7('0x2a')]){delete _0x5651d4[_0x0fe7('0x2a')];}_0x877b3c[_0x0fe7('0x1e')](_0x2c9ecf)[_0x0fe7('0x2b')](_0x5651d4);};}exports[_0x0fe7('0x2c')]=function(_0xb02384,_0x3b6c87){var _0x574975={},_0x51ed77={},_0x59a46d={'count':0x0,'rows':[]};var _0x134e52=_[_0x0fe7('0x2d')](db[_0x0fe7('0x2e')][_0x0fe7('0x2f')],function(_0x3a146d){return{'name':_0x3a146d[_0x0fe7('0x30')],'type':_0x3a146d['type'][_0x0fe7('0x31')]};});_0x51ed77[_0x0fe7('0x32')]=_[_0x0fe7('0x2d')](_0x134e52,_0x0fe7('0x2a'));_0x51ed77[_0x0fe7('0x33')]=_['keys'](_0xb02384[_0x0fe7('0x33')]);_0x51ed77[_0x0fe7('0x34')]=_[_0x0fe7('0x35')](_0x51ed77['model'],_0x51ed77['query']);_0x574975[_0x0fe7('0x36')]=_[_0x0fe7('0x35')](_0x51ed77[_0x0fe7('0x32')],qs[_0x0fe7('0x37')](_0xb02384[_0x0fe7('0x33')][_0x0fe7('0x37')]));_0x574975[_0x0fe7('0x36')]=_0x574975[_0x0fe7('0x36')][_0x0fe7('0x38')]?_0x574975[_0x0fe7('0x36')]:_0x51ed77[_0x0fe7('0x32')];if(!_0xb02384[_0x0fe7('0x33')][_0x0fe7('0x39')](_0x0fe7('0x3a'))){_0x574975[_0x0fe7('0x22')]=qs[_0x0fe7('0x22')](_0xb02384[_0x0fe7('0x33')]['limit']);_0x574975[_0x0fe7('0x21')]=qs[_0x0fe7('0x21')](_0xb02384[_0x0fe7('0x33')]['offset']);}_0x574975[_0x0fe7('0x3b')]=qs[_0x0fe7('0x3c')](_0xb02384['query']['sort']);_0x574975[_0x0fe7('0x3d')]=qs[_0x0fe7('0x34')](_[_0x0fe7('0x3e')](_0xb02384[_0x0fe7('0x33')],_0x51ed77[_0x0fe7('0x34')]),_0x134e52);if(_0xb02384[_0x0fe7('0x33')][_0x0fe7('0x3f')]){_0x574975[_0x0fe7('0x3d')]=_[_0x0fe7('0x40')](_0x574975['where'],{'$or':_[_0x0fe7('0x2d')](_0x134e52,function(_0x97893d){if(_0x97893d['type']!==_0x0fe7('0x41')){var _0x1e7be4={};_0x1e7be4[_0x97893d[_0x0fe7('0x2a')]]={'$like':'%'+_0xb02384['query'][_0x0fe7('0x3f')]+'%'};return _0x1e7be4;}})});}_0x574975=_[_0x0fe7('0x40')]({},_0x574975,_0xb02384['options']);var _0xfb4bf6={'where':_0x574975[_0x0fe7('0x3d')]};return db[_0x0fe7('0x2e')][_0x0fe7('0x24')](_0xfb4bf6)['then'](function(_0x403e39){_0x59a46d['count']=_0x403e39;if(_0xb02384[_0x0fe7('0x33')][_0x0fe7('0x42')]){_0x574975[_0x0fe7('0x43')]=[{'all':!![]}];}return db[_0x0fe7('0x2e')][_0x0fe7('0x44')](_0x574975);})[_0x0fe7('0x45')](function(_0x25dc53){_0x59a46d[_0x0fe7('0x46')]=_0x25dc53;return _0x59a46d;})['then'](respondWithFilteredResult(_0x3b6c87,_0x574975))[_0x0fe7('0x47')](handleError(_0x3b6c87,null));};exports[_0x0fe7('0x48')]=function(_0x49cfe1,_0x223b61){var _0x359abc={'raw':!![],'where':{'id':_0x49cfe1['params']['id']}},_0x210402={};_0x210402[_0x0fe7('0x32')]=_[_0x0fe7('0x49')](db[_0x0fe7('0x2e')][_0x0fe7('0x2f')]);_0x210402[_0x0fe7('0x33')]=_[_0x0fe7('0x49')](_0x49cfe1[_0x0fe7('0x33')]);_0x210402[_0x0fe7('0x34')]=_['intersection'](_0x210402['model'],_0x210402['query']);_0x359abc['attributes']=_[_0x0fe7('0x35')](_0x210402[_0x0fe7('0x32')],qs[_0x0fe7('0x37')](_0x49cfe1[_0x0fe7('0x33')][_0x0fe7('0x37')]));_0x359abc[_0x0fe7('0x36')]=_0x359abc[_0x0fe7('0x36')]['length']?_0x359abc[_0x0fe7('0x36')]:_0x210402[_0x0fe7('0x32')];if(_0x49cfe1[_0x0fe7('0x33')][_0x0fe7('0x42')]){_0x359abc['include']=[{'all':!![]}];}_0x359abc=_['merge']({},_0x359abc,_0x49cfe1['options']);return db[_0x0fe7('0x2e')][_0x0fe7('0x4a')](_0x359abc)[_0x0fe7('0x45')](handleEntityNotFound(_0x223b61,null))['then'](respondWithResult(_0x223b61,null))[_0x0fe7('0x47')](handleError(_0x223b61,null));};exports[_0x0fe7('0x4b')]=function(_0x1efda3,_0x3ec651){return db['ChatInternalMessage']['create'](_0x1efda3['body'],{})['then'](respondWithResult(_0x3ec651,0xc9))[_0x0fe7('0x47')](handleError(_0x3ec651,null));};exports['update']=function(_0x9b779d,_0x57f935){if(_0x9b779d[_0x0fe7('0x4c')]['id']){delete _0x9b779d[_0x0fe7('0x4c')]['id'];}return db[_0x0fe7('0x2e')][_0x0fe7('0x4a')]({'where':{'id':_0x9b779d[_0x0fe7('0x4d')]['id']}})[_0x0fe7('0x45')](handleEntityNotFound(_0x57f935,null))[_0x0fe7('0x45')](saveUpdates(_0x9b779d[_0x0fe7('0x4c')],null))[_0x0fe7('0x45')](respondWithResult(_0x57f935,null))[_0x0fe7('0x47')](handleError(_0x57f935,null));};exports['destroy']=function(_0x470ba4,_0x2e0ecb){return db[_0x0fe7('0x2e')]['find']({'where':{'id':_0x470ba4[_0x0fe7('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2e0ecb,null))['then'](removeEntity(_0x2e0ecb,null))['catch'](handleError(_0x2e0ecb,null));};exports[_0x0fe7('0x4e')]=function(_0x3c0541,_0x32d6cd){return db[_0x0fe7('0x2e')][_0x0fe7('0x4e')]()[_0x0fe7('0x45')](respondWithResult(_0x32d6cd,null))[_0x0fe7('0x47')](handleError(_0x32d6cd,null));};function wrapUser(_0x1d0a26){return function(_0x149c9b){var _0x4ca36a=_0x1d0a26[_0x0fe7('0x4f')]({'plain':!![]});_0x4ca36a[_0x0fe7('0x50')]=[];if(_0x149c9b){_0x4ca36a['lastMessageAt']=_0x149c9b['createdAt'];_0x4ca36a[_0x0fe7('0x51')]=_0x149c9b;}else{_0x4ca36a[_0x0fe7('0x52')]=moment(0x0)[_0x0fe7('0x53')](_0x0fe7('0x54'));_0x4ca36a['lastMessage']={};}return _0x4ca36a;};}exports[_0x0fe7('0x55')]=function(_0x26b0bd,_0x1d5cd6,_0x551044){var _0x35ee17=[];return db[_0x0fe7('0x56')][_0x0fe7('0x44')]({'where':{'role':[_0x0fe7('0x57'),'admin',_0x0fe7('0x58')]},'attributes':['id',_0x0fe7('0x59'),'name',_0x0fe7('0x5a'),_0x0fe7('0x5b'),'internal','online','lastLoginAt','allowmessenger',_0x0fe7('0x5c')],'order':qs['sort']('-online'),'include':[{'model':db[_0x0fe7('0x5d')],'as':'VoiceQueues','attributes':['id',_0x0fe7('0x2a'),_0x0fe7('0x5e')],'through':{'attributes':[]}}]})[_0x0fe7('0x45')](function(_0x2047b){if(_0x2047b){var _0x5c49ca=_0x26b0bd[_0x0fe7('0x58')][_0x0fe7('0x4f')]({'plain':!![]});if(!_0x5c49ca)throw new Error(_0x0fe7('0x5f'));if(_0x5c49ca[_0x0fe7('0x5a')]===_0x0fe7('0x58')){return db['UserProfileSection'][_0x0fe7('0x4a')]({'where':{'name':_0x0fe7('0x60'),'userProfileId':_0x5c49ca[_0x0fe7('0x61')]},'raw':!![]})[_0x0fe7('0x45')](function(_0x417c33){if(_0x417c33){if(_0x417c33[_0x0fe7('0x62')]===0x0){return db[_0x0fe7('0x63')][_0x0fe7('0x44')]({'where':{'sectionId':_0x417c33['id']},'raw':!![]})[_0x0fe7('0x45')](function(_0x44e375){var _0x197e97=[];if(_['isEmpty'](_0x44e375)){_0x197e97=_[_0x0fe7('0x3f')](_0x2047b,function(_0xb8b8c8){if(_0xb8b8c8['role']!=='agent'){return _0xb8b8c8;}});return _0x197e97;}else{for(var _0x552af3=0x0;_0x552af3<_0x2047b[_0x0fe7('0x38')];_0x552af3++){var _0x274ea7=_0x2047b[_0x552af3];if(_0x274ea7[_0x0fe7('0x5a')]==='agent'){var _0x2fb76c=_[_0x0fe7('0x4a')](_0x44e375,function(_0x47a5d3){return _0x47a5d3[_0x0fe7('0x64')]===_0x274ea7['id'];});if(_0x2fb76c)_0x197e97[_0x0fe7('0x65')](_0x274ea7);}else{_0x197e97[_0x0fe7('0x65')](_0x274ea7);}}return _0x197e97;}});}else{return _0x2047b;}}else{var _0x25e24e=_[_0x0fe7('0x3f')](_0x2047b,function(_0x5e2577){if(_0x5e2577[_0x0fe7('0x5a')]!==_0x0fe7('0x57')){return _0x5e2577;}});return _0x25e24e;}});}else{return _0x2047b;}}})['then'](function(_0xc297f8){var _0xa3d2cc=[];if(_0xc297f8){_0x35ee17=_0xc297f8;for(var _0x109693=0x0;_0x109693<_0xc297f8[_0x0fe7('0x38')];_0x109693+=0x1){_0x35ee17[_0x109693][_0x0fe7('0x50')]=[];_0xa3d2cc['push'](db[_0x0fe7('0x2e')][_0x0fe7('0x4a')]({'where':{'FromId':[_0x26b0bd[_0x0fe7('0x58')]['id'],_0xc297f8[_0x109693]['id']],'ToId':[_0x26b0bd[_0x0fe7('0x58')]['id'],_0xc297f8[_0x109693]['id']],'ChatGroupId':null},'attributes':['id',_0x0fe7('0x66'),_0x0fe7('0x67'),_0x0fe7('0x68'),_0x0fe7('0x69'),_0x0fe7('0x4c')],'order':qs[_0x0fe7('0x3c')](_0x0fe7('0x6a')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0xc297f8[_0x109693])));}return BPromise[_0x0fe7('0x6b')](_0xa3d2cc);}return[];})[_0x0fe7('0x45')](function(_0x28bf1c){return{'rows':_0x28bf1c,'count':_0x28bf1c[_0x0fe7('0x38')]};})[_0x0fe7('0x45')](respondWithResult(_0x1d5cd6,null))[_0x0fe7('0x47')](handleError(_0x1d5cd6,null));};
\ No newline at end of file
+var _0xf7fc=['eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','limit','count','set','Content-Range','save','update','then','destroy','error','name','send','index','map','ChatInternalMessage','rawAttributes','type','model','query','keys','attributes','intersection','fields','nolimit','order','sort','filters','pick','merge','where','VIRTUAL','filter','includeAll','include','catch','show','length','find','create','body','params','describe','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','User','findAll','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','VoiceQueues','get','Agents','autoAssociation','UserProfileResource','isEmpty','push','FromId','read','-createdAt','all'];(function(_0x432ca9,_0x5251ce){var _0x6531b9=function(_0x51a9c0){while(--_0x51a9c0){_0x432ca9['push'](_0x432ca9['shift']());}};_0x6531b9(++_0x5251ce);}(_0xf7fc,0x6a));var _0xcf7f=function(_0x1a2d46,_0x19bd98){_0x1a2d46=_0x1a2d46-0x0;var _0x48b660=_0xf7fc[_0x1a2d46];return _0x48b660;};'use strict';var emlformat=require(_0xcf7f('0x0'));var rimraf=require(_0xcf7f('0x1'));var zipdir=require(_0xcf7f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcf7f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xcf7f('0x4'));var util=require(_0xcf7f('0x5'));var path=require(_0xcf7f('0x6'));var sox=require(_0xcf7f('0x7'));var csv=require(_0xcf7f('0x8'));var ejs=require(_0xcf7f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcf7f('0xa'));var squel=require(_0xcf7f('0xb'));var crypto=require(_0xcf7f('0xc'));var jsforce=require(_0xcf7f('0xd'));var deskjs=require(_0xcf7f('0xe'));var toCsv=require(_0xcf7f('0x8'));var querystring=require(_0xcf7f('0xf'));var Papa=require(_0xcf7f('0x10'));var Redis=require(_0xcf7f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcf7f('0x12'));var as=require(_0xcf7f('0x13'));var hardwareService=require(_0xcf7f('0x14'));var logger=require('../../config/logger')(_0xcf7f('0x15'));var utils=require(_0xcf7f('0x16'));var config=require(_0xcf7f('0x17'));var licenseUtil=require(_0xcf7f('0x18'));var db=require(_0xcf7f('0x19'))['db'];config['redis']=_[_0xcf7f('0x1a')](config[_0xcf7f('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xcf7f('0x1c'))(new Redis(config['redis']));require(_0xcf7f('0x1d'))[_0xcf7f('0x1e')](socket);function respondWithStatusCode(_0x3d82ab,_0x3b0e0a){_0x3b0e0a=_0x3b0e0a||0xcc;return function(_0x43e8f2){if(_0x43e8f2){return _0x3d82ab[_0xcf7f('0x1f')](_0x3b0e0a);}return _0x3d82ab[_0xcf7f('0x20')](_0x3b0e0a)[_0xcf7f('0x21')]();};}function respondWithResult(_0x581cd5,_0x548b76){_0x548b76=_0x548b76||0xc8;return function(_0x538b26){if(_0x538b26){return _0x581cd5['status'](_0x548b76)[_0xcf7f('0x22')](_0x538b26);}};}function respondWithFilteredResult(_0x1bbbfb,_0x51a252){return function(_0xf10e01){if(_0xf10e01){var _0xe3e7d8=typeof _0x51a252[_0xcf7f('0x23')]==='undefined'&&typeof _0x51a252[_0xcf7f('0x24')]==='undefined';var _0x291849=_0xf10e01[_0xcf7f('0x25')];var _0xe1da1a=_0xe3e7d8?0x0:_0x51a252[_0xcf7f('0x23')];var _0x2cf936=_0xe3e7d8?_0xf10e01[_0xcf7f('0x25')]:_0x51a252[_0xcf7f('0x23')]+_0x51a252[_0xcf7f('0x24')];var _0x293842;if(_0x2cf936>=_0x291849){_0x2cf936=_0x291849;_0x293842=0xc8;}else{_0x293842=0xce;}_0x1bbbfb[_0xcf7f('0x20')](_0x293842);return _0x1bbbfb[_0xcf7f('0x26')](_0xcf7f('0x27'),_0xe1da1a+'-'+_0x2cf936+'/'+_0x291849)['json'](_0xf10e01);}return null;};}function patchUpdates(_0x4ae600){return function(_0x5039d4){try{jsonpatch['apply'](_0x5039d4,_0x4ae600,!![]);}catch(_0x4c0204){return BPromise['reject'](_0x4c0204);}return _0x5039d4[_0xcf7f('0x28')]();};}function saveUpdates(_0x5b364a,_0xd2630){return function(_0x105123){if(_0x105123){return _0x105123[_0xcf7f('0x29')](_0x5b364a)[_0xcf7f('0x2a')](function(_0x3f4574){return _0x3f4574;});}return null;};}function removeEntity(_0x905d34,_0xbe24b){return function(_0x5ba178){if(_0x5ba178){return _0x5ba178[_0xcf7f('0x2b')]()['then'](function(){_0x905d34[_0xcf7f('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x518e44,_0x3ee97a){return function(_0x411547){if(!_0x411547){_0x518e44[_0xcf7f('0x1f')](0x194);}return _0x411547;};}function handleError(_0x2b5ff7,_0xb7189f){_0xb7189f=_0xb7189f||0x1f4;return function(_0x3d1948){logger[_0xcf7f('0x2c')](_0x3d1948['stack']);if(_0x3d1948['name']){delete _0x3d1948[_0xcf7f('0x2d')];}_0x2b5ff7[_0xcf7f('0x20')](_0xb7189f)[_0xcf7f('0x2e')](_0x3d1948);};}exports[_0xcf7f('0x2f')]=function(_0x33b973,_0x3f5d46){var _0x32e3bc={},_0x9a6b24={},_0x4ae277={'count':0x0,'rows':[]};var _0x3e6dc0=_[_0xcf7f('0x30')](db[_0xcf7f('0x31')][_0xcf7f('0x32')],function(_0x200183){return{'name':_0x200183['fieldName'],'type':_0x200183[_0xcf7f('0x33')]['key']};});_0x9a6b24[_0xcf7f('0x34')]=_[_0xcf7f('0x30')](_0x3e6dc0,'name');_0x9a6b24[_0xcf7f('0x35')]=_[_0xcf7f('0x36')](_0x33b973[_0xcf7f('0x35')]);_0x9a6b24['filters']=_['intersection'](_0x9a6b24[_0xcf7f('0x34')],_0x9a6b24[_0xcf7f('0x35')]);_0x32e3bc[_0xcf7f('0x37')]=_[_0xcf7f('0x38')](_0x9a6b24[_0xcf7f('0x34')],qs[_0xcf7f('0x39')](_0x33b973[_0xcf7f('0x35')]['fields']));_0x32e3bc[_0xcf7f('0x37')]=_0x32e3bc[_0xcf7f('0x37')]['length']?_0x32e3bc[_0xcf7f('0x37')]:_0x9a6b24[_0xcf7f('0x34')];if(!_0x33b973[_0xcf7f('0x35')]['hasOwnProperty'](_0xcf7f('0x3a'))){_0x32e3bc[_0xcf7f('0x24')]=qs['limit'](_0x33b973[_0xcf7f('0x35')][_0xcf7f('0x24')]);_0x32e3bc['offset']=qs[_0xcf7f('0x23')](_0x33b973[_0xcf7f('0x35')]['offset']);}_0x32e3bc[_0xcf7f('0x3b')]=qs[_0xcf7f('0x3c')](_0x33b973[_0xcf7f('0x35')]['sort']);_0x32e3bc['where']=qs[_0xcf7f('0x3d')](_[_0xcf7f('0x3e')](_0x33b973[_0xcf7f('0x35')],_0x9a6b24['filters']),_0x3e6dc0);if(_0x33b973['query']['filter']){_0x32e3bc['where']=_[_0xcf7f('0x3f')](_0x32e3bc[_0xcf7f('0x40')],{'$or':_[_0xcf7f('0x30')](_0x3e6dc0,function(_0x3d39b7){if(_0x3d39b7[_0xcf7f('0x33')]!==_0xcf7f('0x41')){var _0x35c1e4={};_0x35c1e4[_0x3d39b7[_0xcf7f('0x2d')]]={'$like':'%'+_0x33b973[_0xcf7f('0x35')][_0xcf7f('0x42')]+'%'};return _0x35c1e4;}})});}_0x32e3bc=_[_0xcf7f('0x3f')]({},_0x32e3bc,_0x33b973['options']);var _0x5d753c={'where':_0x32e3bc[_0xcf7f('0x40')]};return db[_0xcf7f('0x31')]['count'](_0x5d753c)[_0xcf7f('0x2a')](function(_0x53a197){_0x4ae277['count']=_0x53a197;if(_0x33b973[_0xcf7f('0x35')][_0xcf7f('0x43')]){_0x32e3bc[_0xcf7f('0x44')]=[{'all':!![]}];}return db[_0xcf7f('0x31')]['findAll'](_0x32e3bc);})['then'](function(_0x43b235){_0x4ae277['rows']=_0x43b235;return _0x4ae277;})[_0xcf7f('0x2a')](respondWithFilteredResult(_0x3f5d46,_0x32e3bc))[_0xcf7f('0x45')](handleError(_0x3f5d46,null));};exports[_0xcf7f('0x46')]=function(_0x38fbb7,_0x4b72f8){var _0x46fecd={'raw':!![],'where':{'id':_0x38fbb7['params']['id']}},_0x12551d={};_0x12551d[_0xcf7f('0x34')]=_[_0xcf7f('0x36')](db['ChatInternalMessage'][_0xcf7f('0x32')]);_0x12551d[_0xcf7f('0x35')]=_[_0xcf7f('0x36')](_0x38fbb7[_0xcf7f('0x35')]);_0x12551d[_0xcf7f('0x3d')]=_[_0xcf7f('0x38')](_0x12551d[_0xcf7f('0x34')],_0x12551d[_0xcf7f('0x35')]);_0x46fecd['attributes']=_[_0xcf7f('0x38')](_0x12551d[_0xcf7f('0x34')],qs[_0xcf7f('0x39')](_0x38fbb7[_0xcf7f('0x35')][_0xcf7f('0x39')]));_0x46fecd[_0xcf7f('0x37')]=_0x46fecd[_0xcf7f('0x37')][_0xcf7f('0x47')]?_0x46fecd[_0xcf7f('0x37')]:_0x12551d[_0xcf7f('0x34')];if(_0x38fbb7[_0xcf7f('0x35')]['includeAll']){_0x46fecd[_0xcf7f('0x44')]=[{'all':!![]}];}_0x46fecd=_[_0xcf7f('0x3f')]({},_0x46fecd,_0x38fbb7['options']);return db[_0xcf7f('0x31')][_0xcf7f('0x48')](_0x46fecd)[_0xcf7f('0x2a')](handleEntityNotFound(_0x4b72f8,null))[_0xcf7f('0x2a')](respondWithResult(_0x4b72f8,null))[_0xcf7f('0x45')](handleError(_0x4b72f8,null));};exports['create']=function(_0x25f8d9,_0x4fe318){return db[_0xcf7f('0x31')][_0xcf7f('0x49')](_0x25f8d9['body'],{})[_0xcf7f('0x2a')](respondWithResult(_0x4fe318,0xc9))['catch'](handleError(_0x4fe318,null));};exports['update']=function(_0x3b15f2,_0x181bc1){if(_0x3b15f2[_0xcf7f('0x4a')]['id']){delete _0x3b15f2[_0xcf7f('0x4a')]['id'];}return db[_0xcf7f('0x31')][_0xcf7f('0x48')]({'where':{'id':_0x3b15f2[_0xcf7f('0x4b')]['id']}})[_0xcf7f('0x2a')](handleEntityNotFound(_0x181bc1,null))['then'](saveUpdates(_0x3b15f2[_0xcf7f('0x4a')],null))[_0xcf7f('0x2a')](respondWithResult(_0x181bc1,null))['catch'](handleError(_0x181bc1,null));};exports[_0xcf7f('0x2b')]=function(_0x5942b3,_0x4853ee){return db[_0xcf7f('0x31')][_0xcf7f('0x48')]({'where':{'id':_0x5942b3[_0xcf7f('0x4b')]['id']}})[_0xcf7f('0x2a')](handleEntityNotFound(_0x4853ee,null))[_0xcf7f('0x2a')](removeEntity(_0x4853ee,null))['catch'](handleError(_0x4853ee,null));};exports[_0xcf7f('0x4c')]=function(_0x3f2da8,_0x512937){return db['ChatInternalMessage']['describe']()[_0xcf7f('0x2a')](respondWithResult(_0x512937,null))[_0xcf7f('0x45')](handleError(_0x512937,null));};function wrapUser(_0x467f9f){return function(_0x35d7a2){var _0x118aa4=_0x467f9f['get']({'plain':!![]});_0x118aa4[_0xcf7f('0x4d')]=[];if(_0x35d7a2){_0x118aa4[_0xcf7f('0x4e')]=_0x35d7a2[_0xcf7f('0x4f')];_0x118aa4[_0xcf7f('0x50')]=_0x35d7a2;}else{_0x118aa4[_0xcf7f('0x4e')]=moment(0x0)[_0xcf7f('0x51')](_0xcf7f('0x52'));_0x118aa4[_0xcf7f('0x50')]={};}return _0x118aa4;};}exports['getUsers']=function(_0xaede00,_0x581e1c,_0x5ba1e2){var _0x21cbb7=[];return db[_0xcf7f('0x53')][_0xcf7f('0x54')]({'where':{'role':[_0xcf7f('0x55'),_0xcf7f('0x56'),_0xcf7f('0x57')]},'attributes':['id',_0xcf7f('0x58'),_0xcf7f('0x2d'),_0xcf7f('0x59'),_0xcf7f('0x5a'),_0xcf7f('0x5b'),_0xcf7f('0x5c'),_0xcf7f('0x5d'),_0xcf7f('0x5e'),'showWebBar'],'order':qs[_0xcf7f('0x3c')]('-online'),'include':[{'model':db['VoiceQueue'],'as':_0xcf7f('0x5f'),'attributes':['id',_0xcf7f('0x2d'),_0xcf7f('0x33')],'through':{'attributes':[]}}]})[_0xcf7f('0x2a')](function(_0x18398f){if(_0x18398f){var _0x2ea2e2=_0xaede00[_0xcf7f('0x57')][_0xcf7f('0x60')]({'plain':!![]});if(!_0x2ea2e2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2ea2e2[_0xcf7f('0x59')]===_0xcf7f('0x57')){return db['UserProfileSection']['find']({'where':{'name':_0xcf7f('0x61'),'userProfileId':_0x2ea2e2['userProfileId']},'raw':!![]})[_0xcf7f('0x2a')](function(_0x3d4112){if(_0x3d4112){if(_0x3d4112[_0xcf7f('0x62')]===0x0){return db[_0xcf7f('0x63')]['findAll']({'where':{'sectionId':_0x3d4112['id']},'raw':!![]})[_0xcf7f('0x2a')](function(_0x5e318e){var _0x3a3950=[];if(_[_0xcf7f('0x64')](_0x5e318e)){_0x3a3950=_[_0xcf7f('0x42')](_0x18398f,function(_0x88261c){if(_0x88261c[_0xcf7f('0x59')]!==_0xcf7f('0x55')){return _0x88261c;}});return _0x3a3950;}else{for(var _0x42d82f=0x0;_0x42d82f<_0x18398f[_0xcf7f('0x47')];_0x42d82f++){var _0x1cd12e=_0x18398f[_0x42d82f];if(_0x1cd12e[_0xcf7f('0x59')]==='agent'){var _0xbb2263=_['find'](_0x5e318e,function(_0x408800){return _0x408800['resourceId']===_0x1cd12e['id'];});if(_0xbb2263)_0x3a3950[_0xcf7f('0x65')](_0x1cd12e);}else{_0x3a3950[_0xcf7f('0x65')](_0x1cd12e);}}return _0x3a3950;}});}else{return _0x18398f;}}else{var _0x10293a=_[_0xcf7f('0x42')](_0x18398f,function(_0xcaadbc){if(_0xcaadbc[_0xcf7f('0x59')]!=='agent'){return _0xcaadbc;}});return _0x10293a;}});}else{return _0x18398f;}}})[_0xcf7f('0x2a')](function(_0x30badb){var _0x2236fc=[];if(_0x30badb){_0x21cbb7=_0x30badb;for(var _0x4e6f64=0x0;_0x4e6f64<_0x30badb['length'];_0x4e6f64+=0x1){_0x21cbb7[_0x4e6f64]['messages']=[];_0x2236fc[_0xcf7f('0x65')](db[_0xcf7f('0x31')][_0xcf7f('0x48')]({'where':{'FromId':[_0xaede00[_0xcf7f('0x57')]['id'],_0x30badb[_0x4e6f64]['id']],'ToId':[_0xaede00[_0xcf7f('0x57')]['id'],_0x30badb[_0x4e6f64]['id']],'ChatGroupId':null},'attributes':['id',_0xcf7f('0x4f'),_0xcf7f('0x66'),'ToId',_0xcf7f('0x67'),_0xcf7f('0x4a')],'order':qs['sort'](_0xcf7f('0x68')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x30badb[_0x4e6f64])));}return BPromise[_0xcf7f('0x69')](_0x2236fc);}return[];})['then'](function(_0x6532b1){return{'rows':_0x6532b1,'count':_0x6532b1[_0xcf7f('0x47')]};})[_0xcf7f('0x2a')](respondWithResult(_0x581e1c,null))['catch'](handleError(_0x581e1c,null));};
\ No newline at end of file
index b0dbaa6..7e6c0cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8830=['../../mysqldb','setMaxListeners','save','update','remove','emit','hook','exports'];(function(_0x3eef3a,_0x257124){var _0x225b1e=function(_0x2760e4){while(--_0x2760e4){_0x3eef3a['push'](_0x3eef3a['shift']());}};_0x225b1e(++_0x257124);}(_0x8830,0x78));var _0x0883=function(_0x2b9028,_0x1780e2){_0x2b9028=_0x2b9028-0x0;var _0x36032b=_0x8830[_0x2b9028];return _0x36032b;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x0883('0x0'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x0883('0x1')](0x0);var events={'afterCreate':_0x0883('0x2'),'afterUpdate':_0x0883('0x3'),'afterDestroy':_0x0883('0x4')};function emitEvent(_0x4fcdc0){return function(_0x10ed1b,_0x4b3dcf,_0x3a71a5){ChatInternalMessageEvents[_0x0883('0x5')](_0x4fcdc0+':'+_0x10ed1b['id'],_0x10ed1b);ChatInternalMessageEvents[_0x0883('0x5')](_0x4fcdc0,_0x10ed1b);_0x3a71a5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x0883('0x6')](e,emitEvent(event));}}module[_0x0883('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x864e=['emit','hasOwnProperty','hook','events','ChatInternalMessage','setMaxListeners','update','remove'];(function(_0xc2b3ce,_0x533dfd){var _0x30e6bb=function(_0x1f24aa){while(--_0x1f24aa){_0xc2b3ce['push'](_0xc2b3ce['shift']());}};_0x30e6bb(++_0x533dfd);}(_0x864e,0x13b));var _0xe864=function(_0x5329c5,_0x2bcffc){_0x5329c5=_0x5329c5-0x0;var _0x39cf4e=_0x864e[_0x5329c5];return _0x39cf4e;};'use strict';var EventEmitter=require(_0xe864('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0xe864('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xe864('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe864('0x3'),'afterDestroy':_0xe864('0x4')};function emitEvent(_0x59712b){return function(_0x26cb42,_0x16483e,_0x3b9b1d){ChatInternalMessageEvents[_0xe864('0x5')](_0x59712b+':'+_0x26cb42['id'],_0x26cb42);ChatInternalMessageEvents[_0xe864('0x5')](_0x59712b,_0x26cb42);_0x3b9b1d(null);};}for(var e in events){if(events[_0xe864('0x6')](e)){var event=events[e];ChatInternalMessage[_0xe864('0x7')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
index e5ba256..0b4b40c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9dc=['exports','define','ChatInternalMessage','chat_internal_messages','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3e54d5,_0x179556){var _0x35ad39=function(_0x11cae5){while(--_0x11cae5){_0x3e54d5['push'](_0x3e54d5['shift']());}};_0x35ad39(++_0x179556);}(_0xd9dc,0xd0));var _0xcd9d=function(_0x414297,_0x18578e){_0x414297=_0x414297-0x0;var _0x51ea47=_0xd9dc[_0x414297];return _0x51ea47;};'use strict';var _=require(_0xcd9d('0x0'));var util=require(_0xcd9d('0x1'));var logger=require(_0xcd9d('0x2'))(_0xcd9d('0x3'));var moment=require(_0xcd9d('0x4'));var BPromise=require(_0xcd9d('0x5'));var rp=require(_0xcd9d('0x6'));var fs=require('fs');var path=require(_0xcd9d('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatInternalMessage.attributes');module[_0xcd9d('0x8')]=function(_0x1f013a,_0x3661f7){return _0x1f013a[_0xcd9d('0x9')](_0xcd9d('0xa'),attributes,{'tableName':_0xcd9d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4379=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./chatInternalMessage.attributes','define','ChatInternalMessage','chat_internal_messages','utf8mb4'];(function(_0x33ec2b,_0x153e18){var _0x4ec376=function(_0x2e5742){while(--_0x2e5742){_0x33ec2b['push'](_0x33ec2b['shift']());}};_0x4ec376(++_0x153e18);}(_0x4379,0x138));var _0x9437=function(_0x1aaa28,_0x12f88b){_0x1aaa28=_0x1aaa28-0x0;var _0x1e8371=_0x4379[_0x1aaa28];return _0x1e8371;};'use strict';var _=require(_0x9437('0x0'));var util=require(_0x9437('0x1'));var logger=require(_0x9437('0x2'))(_0x9437('0x3'));var moment=require(_0x9437('0x4'));var BPromise=require(_0x9437('0x5'));var rp=require(_0x9437('0x6'));var fs=require('fs');var path=require(_0x9437('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9437('0x8'));module['exports']=function(_0x1bea4b,_0x1d7ea5){return _0x1bea4b[_0x9437('0x9')](_0x9437('0xa'),attributes,{'tableName':_0x9437('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9437('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 35ba723..590e081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c34=['localhost','socket.io-emitter','./chatInternalMessage.socket','request','then','ChatInternalMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x0c34,0x153));var _0x40c3=function(_0xe7dbec,_0x43c073){_0xe7dbec=_0xe7dbec-0x0;var _0x453f62=_0x0c34[_0xe7dbec];return _0x453f62;};'use strict';var _=require('lodash');var util=require(_0x40c3('0x0'));var moment=require('moment');var BPromise=require(_0x40c3('0x1'));var rs=require(_0x40c3('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x40c3('0x3'))['db'];var utils=require(_0x40c3('0x4'));var logger=require(_0x40c3('0x5'))(_0x40c3('0x6'));var config=require(_0x40c3('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x40c3('0x8')]({'port':0x232a});config[_0x40c3('0x9')]=_[_0x40c3('0xa')](config[_0x40c3('0x9')],{'host':_0x40c3('0xb'),'port':0x18eb});var socket=require(_0x40c3('0xc'))(new Redis(config[_0x40c3('0x9')]));require(_0x40c3('0xd'))['register'](socket);function respondWithRpcPromise(_0x55d8c3,_0x2013f3,_0x541886){return new BPromise(function(_0x24808b,_0x1ded14){return client[_0x40c3('0xe')](_0x55d8c3,_0x541886)[_0x40c3('0xf')](function(_0x3d67e7){logger['info'](_0x40c3('0x10'),_0x2013f3,'request\x20sent');logger[_0x40c3('0x11')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x2013f3,_0x40c3('0x12'),JSON[_0x40c3('0x13')](_0x3d67e7));if(_0x3d67e7['error']){if(_0x3d67e7['error']['code']===0x1f4){logger['error'](_0x40c3('0x10'),_0x2013f3,_0x3d67e7[_0x40c3('0x14')][_0x40c3('0x15')]);return _0x1ded14(_0x3d67e7[_0x40c3('0x14')]['message']);}logger[_0x40c3('0x14')](_0x40c3('0x10'),_0x2013f3,_0x3d67e7[_0x40c3('0x14')][_0x40c3('0x15')]);return _0x24808b(_0x3d67e7[_0x40c3('0x14')][_0x40c3('0x15')]);}else{logger[_0x40c3('0x16')](_0x40c3('0x10'),_0x2013f3,_0x40c3('0x12'));_0x24808b(_0x3d67e7[_0x40c3('0x17')][_0x40c3('0x15')]);}})[_0x40c3('0x18')](function(_0x596522){logger[_0x40c3('0x14')](_0x40c3('0x10'),_0x2013f3,_0x596522);_0x1ded14(_0x596522);});});}
\ No newline at end of file
+var _0x8cb5=['debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','then','ChatInternalMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x19d415,_0x2cbee6){var _0x3d30de=function(_0x54b239){while(--_0x54b239){_0x19d415['push'](_0x19d415['shift']());}};_0x3d30de(++_0x2cbee6);}(_0x8cb5,0x19f));var _0x58cb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8cb5[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x58cb('0x0'));var util=require(_0x58cb('0x1'));var moment=require(_0x58cb('0x2'));var BPromise=require(_0x58cb('0x3'));var rs=require(_0x58cb('0x4'));var fs=require('fs');var Redis=require(_0x58cb('0x5'));var db=require(_0x58cb('0x6'))['db'];var utils=require(_0x58cb('0x7'));var logger=require('../../config/logger')(_0x58cb('0x8'));var config=require(_0x58cb('0x9'));var jayson=require(_0x58cb('0xa'));var client=jayson[_0x58cb('0xb')][_0x58cb('0xc')]({'port':0x232a});config[_0x58cb('0xd')]=_[_0x58cb('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x58cb('0xf'))(new Redis(config[_0x58cb('0xd')]));require('./chatInternalMessage.socket')[_0x58cb('0x10')](socket);function respondWithRpcPromise(_0x28a052,_0x914403,_0xdd4b65){return new BPromise(function(_0x31e886,_0x2eeea9){return client['request'](_0x28a052,_0xdd4b65)[_0x58cb('0x11')](function(_0x250895){logger['info'](_0x58cb('0x12'),_0x914403,_0x58cb('0x13'));logger[_0x58cb('0x14')](_0x58cb('0x15'),_0x914403,_0x58cb('0x13'),JSON[_0x58cb('0x16')](_0x250895));if(_0x250895[_0x58cb('0x17')]){if(_0x250895[_0x58cb('0x17')][_0x58cb('0x18')]===0x1f4){logger[_0x58cb('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x914403,_0x250895[_0x58cb('0x17')]['message']);return _0x2eeea9(_0x250895[_0x58cb('0x17')]['message']);}logger[_0x58cb('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x914403,_0x250895['error']['message']);return _0x31e886(_0x250895[_0x58cb('0x17')][_0x58cb('0x19')]);}else{logger[_0x58cb('0x1a')]('ChatInternalMessage,\x20%s,\x20%s',_0x914403,'request\x20sent');_0x31e886(_0x250895[_0x58cb('0x1b')]['message']);}})[_0x58cb('0x1c')](function(_0x4e11b9){logger[_0x58cb('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x914403,_0x4e11b9);_0x2eeea9(_0x4e11b9);});});}
\ No newline at end of file
index 7c75559..0ac2482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1401=['remove','update','removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events','save'];(function(_0x4c8ede,_0x153903){var _0x297683=function(_0x4cfaf3){while(--_0x4cfaf3){_0x4c8ede['push'](_0x4c8ede['shift']());}};_0x297683(++_0x153903);}(_0x1401,0x6e));var _0x1140=function(_0xd363ae,_0x5d3c6e){_0xd363ae=_0xd363ae-0x0;var _0x116c0b=_0x1401[_0xd363ae];return _0x116c0b;};'use strict';var ChatInternalMessageEvents=require(_0x1140('0x0'));var events=[_0x1140('0x1'),_0x1140('0x2'),_0x1140('0x3')];function createListener(_0x2a7180,_0x2e0cbf){return function(_0x358c18){_0x2e0cbf['emit'](_0x2a7180,_0x358c18);};}function removeListener(_0x3bdab1,_0x100892){return function(){ChatInternalMessageEvents[_0x1140('0x4')](_0x3bdab1,_0x100892);};}exports[_0x1140('0x5')]=function(_0x321e5d){for(var _0x2915e0=0x0,_0x34dfdf=events[_0x1140('0x6')];_0x2915e0<_0x34dfdf;_0x2915e0++){var _0x465d76=events[_0x2915e0];var _0xce84d5=createListener(_0x1140('0x7')+_0x465d76,_0x321e5d);ChatInternalMessageEvents['on'](_0x465d76,_0xce84d5);}};
\ No newline at end of file
+var _0xccd8=['update','emit','removeListener','register','chatInternalMessage:','./chatInternalMessage.events','save','remove'];(function(_0xc444e3,_0x24b4aa){var _0x18c6f3=function(_0x49307e){while(--_0x49307e){_0xc444e3['push'](_0xc444e3['shift']());}};_0x18c6f3(++_0x24b4aa);}(_0xccd8,0x19d));var _0x8ccd=function(_0x424bc1,_0x22cc1b){_0x424bc1=_0x424bc1-0x0;var _0x502fdc=_0xccd8[_0x424bc1];return _0x502fdc;};'use strict';var ChatInternalMessageEvents=require(_0x8ccd('0x0'));var events=[_0x8ccd('0x1'),_0x8ccd('0x2'),_0x8ccd('0x3')];function createListener(_0x31864f,_0x7be675){return function(_0x11d5fc){_0x7be675[_0x8ccd('0x4')](_0x31864f,_0x11d5fc);};}function removeListener(_0x52d552,_0x5d016b){return function(){ChatInternalMessageEvents[_0x8ccd('0x5')](_0x52d552,_0x5d016b);};}exports[_0x8ccd('0x6')]=function(_0x1d6160){for(var _0x5b352b=0x0,_0x2afb42=events['length'];_0x5b352b<_0x2afb42;_0x5b352b++){var _0x2c3982=events[_0x5b352b];var _0x390ff2=createListener(_0x8ccd('0x7')+_0x2c3982,_0x1d6160);ChatInternalMessageEvents['on'](_0x2c3982,_0x390ff2);}};
\ No newline at end of file
index f155751..cb89f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4236=['index','describe','/users','getUsers','/:id','show','post','create','put','update','delete','destroy','multer','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated'];(function(_0x27c827,_0x66e1b){var _0x5d4e35=function(_0xe49f15){while(--_0xe49f15){_0x27c827['push'](_0x27c827['shift']());}};_0x5d4e35(++_0x66e1b);}(_0x4236,0x9f));var _0x6423=function(_0x400adb,_0x50120c){_0x400adb=_0x400adb-0x0;var _0x274bf2=_0x4236[_0x400adb];return _0x274bf2;};'use strict';var multer=require(_0x6423('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6423('0x1'));var express=require(_0x6423('0x2'));var router=express[_0x6423('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6423('0x4'));var config=require(_0x6423('0x5'));var controller=require(_0x6423('0x6'));router[_0x6423('0x7')]('/',auth[_0x6423('0x8')](),controller[_0x6423('0x9')]);router['get']('/describe',auth[_0x6423('0x8')](),controller[_0x6423('0xa')]);router[_0x6423('0x7')](_0x6423('0xb'),auth[_0x6423('0x8')](),controller[_0x6423('0xc')]);router[_0x6423('0x7')](_0x6423('0xd'),auth[_0x6423('0x8')](),controller[_0x6423('0xe')]);router[_0x6423('0xf')]('/',auth[_0x6423('0x8')](),controller[_0x6423('0x10')]);router[_0x6423('0x11')]('/:id',controller[_0x6423('0x12')]);router[_0x6423('0x13')](_0x6423('0xd'),auth[_0x6423('0x8')](),controller[_0x6423('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x7f2d=['delete','multer','util','path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update'];(function(_0x46040d,_0x144f45){var _0x27fe40=function(_0x149b62){while(--_0x149b62){_0x46040d['push'](_0x46040d['shift']());}};_0x27fe40(++_0x144f45);}(_0x7f2d,0x157));var _0xd7f2=function(_0x11b0fc,_0xef00a){_0x11b0fc=_0x11b0fc-0x0;var _0xd79b47=_0x7f2d[_0x11b0fc];return _0xd79b47;};'use strict';var multer=require(_0xd7f2('0x0'));var util=require(_0xd7f2('0x1'));var path=require(_0xd7f2('0x2'));var timeout=require('connect-timeout');var express=require(_0xd7f2('0x3'));var router=express[_0xd7f2('0x4')]();var fs_extra=require(_0xd7f2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd7f2('0x6'));var config=require('../../config/environment');var controller=require('./chatInternalMessage.controller');router[_0xd7f2('0x7')]('/',auth[_0xd7f2('0x8')](),controller['index']);router[_0xd7f2('0x7')](_0xd7f2('0x9'),auth[_0xd7f2('0x8')](),controller[_0xd7f2('0xa')]);router[_0xd7f2('0x7')]('/users',auth[_0xd7f2('0x8')](),controller['getUsers']);router[_0xd7f2('0x7')](_0xd7f2('0xb'),auth[_0xd7f2('0x8')](),controller[_0xd7f2('0xc')]);router[_0xd7f2('0xd')]('/',auth[_0xd7f2('0x8')](),controller[_0xd7f2('0xe')]);router[_0xd7f2('0xf')]('/:id',controller[_0xd7f2('0x10')]);router[_0xd7f2('0x11')]('/:id',auth[_0xd7f2('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c50fdbb..952d0d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d4=['DATE','STRING','TEXT','sequelize','exports','medium','BOOLEAN','out'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x69d4,0x83));var _0x469d=function(_0x320b8e,_0x1da3fe){_0x320b8e=_0x320b8e-0x0;var _0x55a10a=_0x69d4[_0x320b8e];return _0x55a10a;};'use strict';var Sequelize=require(_0x469d('0x0'));module[_0x469d('0x1')]={'body':{'type':Sequelize['TEXT'](_0x469d('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x469d('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x469d('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x469d('0x4')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x469d('0x5')]},'providerName':{'type':Sequelize[_0x469d('0x6')]},'providerResponse':{'type':Sequelize[_0x469d('0x7')]}};
\ No newline at end of file
+var _0x5eb1=['ENUM','out','DATE','STRING','exports','TEXT','medium','BOOLEAN'];(function(_0x4a599b,_0x1d2125){var _0x2d53d3=function(_0x5e7982){while(--_0x5e7982){_0x4a599b['push'](_0x4a599b['shift']());}};_0x2d53d3(++_0x1d2125);}(_0x5eb1,0x7c));var _0x15eb=function(_0x3457b4,_0x4cd8f9){_0x3457b4=_0x3457b4-0x0;var _0xaa8fa9=_0x5eb1[_0x3457b4];return _0xaa8fa9;};'use strict';var Sequelize=require('sequelize');module[_0x15eb('0x0')]={'body':{'type':Sequelize[_0x15eb('0x1')](_0x15eb('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x15eb('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x15eb('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x15eb('0x4')]('in','out'),'defaultValue':_0x15eb('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x15eb('0x6')]},'providerName':{'type':Sequelize[_0x15eb('0x7')]},'providerResponse':{'type':Sequelize[_0x15eb('0x1')]}};
\ No newline at end of file
index 364a56f..fd7d50a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd456=['rejectmessage','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','count','offset','limit','Content-Range','apply','save','update','destroy','end','sendStatus','stack','name','send','index','map','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','ChatMessage','includeAll','findAll','show','params','rawAttributes','keys','include','find','create','body','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','reject','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','interface'];(function(_0x3fe984,_0x532190){var _0x57946b=function(_0x46033a){while(--_0x46033a){_0x3fe984['push'](_0x3fe984['shift']());}};_0x57946b(++_0x532190);}(_0xd456,0x107));var _0x6d45=function(_0x505ff5,_0x2b2ff2){_0x505ff5=_0x505ff5-0x0;var _0x2ea8ee=_0xd456[_0x505ff5];return _0x2ea8ee;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d45('0x0'));var zipdir=require(_0x6d45('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6d45('0x2'));var moment=require('moment');var BPromise=require(_0x6d45('0x3'));var Mustache=require(_0x6d45('0x4'));var util=require(_0x6d45('0x5'));var path=require(_0x6d45('0x6'));var sox=require(_0x6d45('0x7'));var csv=require(_0x6d45('0x8'));var ejs=require(_0x6d45('0x9'));var fs=require('fs');var fs_extra=require(_0x6d45('0xa'));var _=require(_0x6d45('0xb'));var squel=require('squel');var crypto=require(_0x6d45('0xc'));var jsforce=require(_0x6d45('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6d45('0xe'));var Papa=require('papaparse');var Redis=require(_0x6d45('0xf'));var authService=require(_0x6d45('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6d45('0x11'));var logger=require(_0x6d45('0x12'))('api');var utils=require(_0x6d45('0x13'));var config=require(_0x6d45('0x14'));var licenseUtil=require(_0x6d45('0x15'));var db=require('../../mysqldb')['db'];config[_0x6d45('0x16')]=_[_0x6d45('0x17')](config[_0x6d45('0x16')],{'host':_0x6d45('0x18'),'port':0x18eb});var socket=require(_0x6d45('0x19'))(new Redis(config[_0x6d45('0x16')]));require(_0x6d45('0x1a'))[_0x6d45('0x1b')](socket);var jayson=require(_0x6d45('0x1c'));var client=jayson[_0x6d45('0x1d')][_0x6d45('0x1e')]({'port':0x232c});var client9002=jayson[_0x6d45('0x1d')][_0x6d45('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x26a4af,_0x179508,_0x5eb8af,_0x44d635){return new BPromise(function(_0x556ad9,_0x587ac0){var _0x84070d=_0x44d635||client;return _0x84070d[_0x6d45('0x1f')](_0x26a4af,_0x5eb8af)[_0x6d45('0x20')](function(_0x567dda){logger[_0x6d45('0x21')](_0x6d45('0x22'),_0x179508,_0x6d45('0x23'));logger['debug'](_0x6d45('0x24'),_0x179508,_0x6d45('0x23'),JSON[_0x6d45('0x25')](_0x567dda));if(_0x567dda[_0x6d45('0x26')]){if(_0x567dda[_0x6d45('0x26')][_0x6d45('0x27')]===0x1f4){logger[_0x6d45('0x26')](_0x6d45('0x22'),_0x179508,_0x567dda[_0x6d45('0x26')][_0x6d45('0x28')]);return _0x587ac0(_0x567dda[_0x6d45('0x26')][_0x6d45('0x28')]);}logger[_0x6d45('0x26')](_0x6d45('0x22'),_0x179508,_0x567dda[_0x6d45('0x26')][_0x6d45('0x28')]);return _0x556ad9(_0x567dda[_0x6d45('0x26')][_0x6d45('0x28')]);}else{logger['info'](_0x6d45('0x22'),_0x179508,_0x6d45('0x23'));_0x556ad9(_0x567dda['result'][_0x6d45('0x28')]);}})[_0x6d45('0x29')](function(_0x53e475){logger[_0x6d45('0x26')](_0x6d45('0x22'),_0x179508,_0x53e475);_0x587ac0(_0x53e475);});});}function respondWithStatusCode(_0x3cc72d,_0x4c898e){_0x4c898e=_0x4c898e||0xcc;return function(_0x540286){if(_0x540286){return _0x3cc72d['sendStatus'](_0x4c898e);}return _0x3cc72d[_0x6d45('0x2a')](_0x4c898e)['end']();};}function respondWithResult(_0x57000d,_0x288379){_0x288379=_0x288379||0xc8;return function(_0x5d5a85){if(_0x5d5a85){return _0x57000d[_0x6d45('0x2a')](_0x288379)['json'](_0x5d5a85);}};}function respondWithFilteredResult(_0x3f86d9,_0x5cdd68){return function(_0x7270a9){if(_0x7270a9){var _0x3b0488=typeof _0x5cdd68['offset']==='undefined'&&typeof _0x5cdd68['limit']==='undefined';var _0x11d506=_0x7270a9[_0x6d45('0x2b')];var _0x17b256=_0x3b0488?0x0:_0x5cdd68['offset'];var _0x468da2=_0x3b0488?_0x7270a9[_0x6d45('0x2b')]:_0x5cdd68[_0x6d45('0x2c')]+_0x5cdd68[_0x6d45('0x2d')];var _0x216d29;if(_0x468da2>=_0x11d506){_0x468da2=_0x11d506;_0x216d29=0xc8;}else{_0x216d29=0xce;}_0x3f86d9[_0x6d45('0x2a')](_0x216d29);return _0x3f86d9['set'](_0x6d45('0x2e'),_0x17b256+'-'+_0x468da2+'/'+_0x11d506)['json'](_0x7270a9);}return null;};}function patchUpdates(_0x70b129){return function(_0x3a5df0){try{jsonpatch[_0x6d45('0x2f')](_0x3a5df0,_0x70b129,!![]);}catch(_0x1e299a){return BPromise['reject'](_0x1e299a);}return _0x3a5df0[_0x6d45('0x30')]();};}function saveUpdates(_0x1ea887,_0x544c54){return function(_0x58bafe){if(_0x58bafe){return _0x58bafe[_0x6d45('0x31')](_0x1ea887)['then'](function(_0x57e9d8){return _0x57e9d8;});}return null;};}function removeEntity(_0x4706b8,_0x1dc45f){return function(_0x2dffbd){if(_0x2dffbd){return _0x2dffbd[_0x6d45('0x32')]()[_0x6d45('0x20')](function(){_0x4706b8['status'](0xcc)[_0x6d45('0x33')]();});}};}function handleEntityNotFound(_0x451acc,_0x3b9c5c){return function(_0x54c4ec){if(!_0x54c4ec){_0x451acc[_0x6d45('0x34')](0x194);}return _0x54c4ec;};}function handleError(_0x121eee,_0x571877){_0x571877=_0x571877||0x1f4;return function(_0x3f017d){logger[_0x6d45('0x26')](_0x3f017d[_0x6d45('0x35')]);if(_0x3f017d['name']){delete _0x3f017d[_0x6d45('0x36')];}_0x121eee[_0x6d45('0x2a')](_0x571877)[_0x6d45('0x37')](_0x3f017d);};}exports[_0x6d45('0x38')]=function(_0x5b8f24,_0x1713f7){var _0x3993e3={},_0x5e3846={},_0x181806={'count':0x0,'rows':[]};var _0x43efc4=_[_0x6d45('0x39')](db['ChatMessage']['rawAttributes'],function(_0x386905){return{'name':_0x386905[_0x6d45('0x3a')],'type':_0x386905[_0x6d45('0x3b')]['key']};});_0x5e3846[_0x6d45('0x3c')]=_['map'](_0x43efc4,_0x6d45('0x36'));_0x5e3846[_0x6d45('0x3d')]=_['keys'](_0x5b8f24[_0x6d45('0x3d')]);_0x5e3846[_0x6d45('0x3e')]=_[_0x6d45('0x3f')](_0x5e3846[_0x6d45('0x3c')],_0x5e3846[_0x6d45('0x3d')]);_0x3993e3[_0x6d45('0x40')]=_[_0x6d45('0x3f')](_0x5e3846[_0x6d45('0x3c')],qs['fields'](_0x5b8f24[_0x6d45('0x3d')][_0x6d45('0x41')]));_0x3993e3[_0x6d45('0x40')]=_0x3993e3['attributes'][_0x6d45('0x42')]?_0x3993e3[_0x6d45('0x40')]:_0x5e3846['model'];if(!_0x5b8f24['query'][_0x6d45('0x43')](_0x6d45('0x44'))){_0x3993e3[_0x6d45('0x2d')]=qs['limit'](_0x5b8f24[_0x6d45('0x3d')][_0x6d45('0x2d')]);_0x3993e3[_0x6d45('0x2c')]=qs[_0x6d45('0x2c')](_0x5b8f24[_0x6d45('0x3d')][_0x6d45('0x2c')]);}_0x3993e3['order']=qs[_0x6d45('0x45')](_0x5b8f24['query']['sort']);_0x3993e3[_0x6d45('0x46')]=qs[_0x6d45('0x3e')](_[_0x6d45('0x47')](_0x5b8f24['query'],_0x5e3846[_0x6d45('0x3e')]),_0x43efc4);if(_0x5b8f24[_0x6d45('0x3d')][_0x6d45('0x48')]){_0x3993e3[_0x6d45('0x46')]=_[_0x6d45('0x49')](_0x3993e3[_0x6d45('0x46')],{'$or':_[_0x6d45('0x39')](_0x43efc4,function(_0x5be0fa){if(_0x5be0fa[_0x6d45('0x3b')]!==_0x6d45('0x4a')){var _0x52bf59={};_0x52bf59[_0x5be0fa[_0x6d45('0x36')]]={'$like':'%'+_0x5b8f24[_0x6d45('0x3d')][_0x6d45('0x48')]+'%'};return _0x52bf59;}})});}_0x3993e3=_[_0x6d45('0x49')]({},_0x3993e3,_0x5b8f24[_0x6d45('0x4b')]);var _0x3928c0={'where':_0x3993e3[_0x6d45('0x46')]};return db[_0x6d45('0x4c')][_0x6d45('0x2b')](_0x3928c0)['then'](function(_0x27c527){_0x181806['count']=_0x27c527;if(_0x5b8f24[_0x6d45('0x3d')][_0x6d45('0x4d')]){_0x3993e3['include']=[{'all':!![]}];}return db['ChatMessage'][_0x6d45('0x4e')](_0x3993e3);})[_0x6d45('0x20')](function(_0x2686ba){_0x181806['rows']=_0x2686ba;return _0x181806;})[_0x6d45('0x20')](respondWithFilteredResult(_0x1713f7,_0x3993e3))[_0x6d45('0x29')](handleError(_0x1713f7,null));};exports[_0x6d45('0x4f')]=function(_0x3e831d,_0x299287){var _0x51f547={'raw':!![],'where':{'id':_0x3e831d[_0x6d45('0x50')]['id']}},_0x546015={};_0x546015['model']=_['keys'](db[_0x6d45('0x4c')][_0x6d45('0x51')]);_0x546015['query']=_[_0x6d45('0x52')](_0x3e831d[_0x6d45('0x3d')]);_0x546015[_0x6d45('0x3e')]=_[_0x6d45('0x3f')](_0x546015[_0x6d45('0x3c')],_0x546015[_0x6d45('0x3d')]);_0x51f547['attributes']=_[_0x6d45('0x3f')](_0x546015['model'],qs['fields'](_0x3e831d['query']['fields']));_0x51f547[_0x6d45('0x40')]=_0x51f547[_0x6d45('0x40')][_0x6d45('0x42')]?_0x51f547[_0x6d45('0x40')]:_0x546015[_0x6d45('0x3c')];if(_0x3e831d['query'][_0x6d45('0x4d')]){_0x51f547[_0x6d45('0x53')]=[{'all':!![]}];}_0x51f547=_[_0x6d45('0x49')]({},_0x51f547,_0x3e831d[_0x6d45('0x4b')]);return db[_0x6d45('0x4c')][_0x6d45('0x54')](_0x51f547)[_0x6d45('0x20')](handleEntityNotFound(_0x299287,null))[_0x6d45('0x20')](respondWithResult(_0x299287,null))[_0x6d45('0x29')](handleError(_0x299287,null));};exports[_0x6d45('0x55')]=function(_0x56e463,_0x5f1e90){return db['ChatMessage'][_0x6d45('0x55')](_0x56e463[_0x6d45('0x56')],{})[_0x6d45('0x20')](respondWithResult(_0x5f1e90,0xc9))['catch'](handleError(_0x5f1e90,null));};exports[_0x6d45('0x31')]=function(_0x5ea75f,_0x37f503){if(_0x5ea75f['body']['id']){delete _0x5ea75f['body']['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ea75f['params']['id']}})[_0x6d45('0x20')](handleEntityNotFound(_0x37f503,null))[_0x6d45('0x20')](saveUpdates(_0x5ea75f[_0x6d45('0x56')],null))[_0x6d45('0x20')](respondWithResult(_0x37f503,null))[_0x6d45('0x29')](handleError(_0x37f503,null));};exports[_0x6d45('0x32')]=function(_0x2070ee,_0x2cee7f){return db['ChatMessage']['find']({'where':{'id':_0x2070ee['params']['id']}})[_0x6d45('0x20')](handleEntityNotFound(_0x2cee7f,null))[_0x6d45('0x20')](removeEntity(_0x2cee7f,null))[_0x6d45('0x29')](handleError(_0x2cee7f,null));};exports[_0x6d45('0x57')]=function(_0xdf5197,_0x33f6ea){return db[_0x6d45('0x4c')][_0x6d45('0x57')]()[_0x6d45('0x20')](respondWithResult(_0x33f6ea,null))[_0x6d45('0x29')](handleError(_0x33f6ea,null));};var interaction_log=require(_0x6d45('0x12'))(_0x6d45('0x58'));exports[_0x6d45('0x59')]=function(_0x159a6a,_0xe028f2,_0x252565){var _0x2157e9={'agent':{},'channel':_0x6d45('0x5a')};if(_0x159a6a[_0x6d45('0x56')]['id']){delete _0x159a6a[_0x6d45('0x56')]['id'];}_0x159a6a['body'][_0x6d45('0x5b')]=!![];_0x159a6a[_0x6d45('0x56')][_0x6d45('0x5c')]=moment()[_0x6d45('0x5d')](_0x6d45('0x5e'));_0x159a6a[_0x6d45('0x56')]['UserId']=_0x159a6a[_0x6d45('0x56')][_0x6d45('0x5f')]||_0x159a6a[_0x6d45('0x60')]['id'];_0x2157e9[_0x6d45('0x61')]['id']=_0x159a6a[_0x6d45('0x56')]['UserId'];return db['ChatMessage'][_0x6d45('0x54')]({'where':{'id':_0x159a6a[_0x6d45('0x50')]['id'],'UserId':null}})[_0x6d45('0x20')](handleEntityNotFound(_0xe028f2,null))[_0x6d45('0x20')](saveUpdates(_0x159a6a['body'],null))[_0x6d45('0x20')](function(_0x26948c){if(_0x26948c){_0x2157e9[_0x6d45('0x28')]=_0x26948c[_0x6d45('0x62')]({'plain':!![]});return db[_0x6d45('0x63')][_0x6d45('0x54')]({'where':{'id':_0x26948c[_0x6d45('0x64')]}});}return null;})[_0x6d45('0x20')](handleEntityNotFound(_0xe028f2,null))[_0x6d45('0x20')](function(_0x4e2498){if(_0x4e2498){return _0x4e2498[_0x6d45('0x31')]({'UserId':_0x159a6a[_0x6d45('0x56')][_0x6d45('0x5f')],'read1stAt':_['isNil'](_0x4e2498[_0x6d45('0x65')])?moment()['format'](_0x6d45('0x5e')):undefined});}return null;})['then'](function(_0x4c88d7){if(_0x4c88d7){_0x2157e9[_0x6d45('0x66')]=_0x4c88d7[_0x6d45('0x62')]({'plain':!![]});interaction_log[_0x6d45('0x21')](_0x6d45('0x67'),_0x159a6a[_0x6d45('0x60')]['id'],_0x159a6a[_0x6d45('0x60')][_0x6d45('0x36')],_0x159a6a[_0x6d45('0x60')][_0x6d45('0x68')],_0x2157e9[_0x6d45('0x66')]['id'],_0x159a6a[_0x6d45('0x56')]?JSON[_0x6d45('0x25')](_0x159a6a[_0x6d45('0x56')]):_0x6d45('0x69'));return respondWithRpcPromise(_0x6d45('0x6a'),'acceptMessage',_0x2157e9);}return null;})['then'](function(_0x503281){var _0x5f4b5d=_0x6d45('0x6b')+_0x503281[_0x6d45('0x28')]['ContactId'];return db[_0x6d45('0x6c')][_0x6d45('0x3d')](_0x5f4b5d,{'type':db[_0x6d45('0x6d')][_0x6d45('0x6e')][_0x6d45('0x6f')],'raw':!![]})[_0x6d45('0x20')](function(_0x4280ca){return _0x4280ca;});})[_0x6d45('0x20')](function(_0x2165ad){if(_0x2165ad){_0x2157e9[_0x6d45('0x28')][_0x6d45('0x70')]=_0x2165ad[0x0];if(!_0x159a6a[_0x6d45('0x56')][_0x6d45('0x5f')])return;return db[_0x6d45('0x71')]['find']({'where':{'id':_0x159a6a['body']['UserId'],'role':'agent'},'attributes':['id',_0x6d45('0x36'),_0x6d45('0x72'),_0x6d45('0x73'),_0x6d45('0x74')],'raw':!![]});}return null;})[_0x6d45('0x20')](function(_0x4b345c){if(!_0x4b345c)return null;_0x2157e9[_0x6d45('0x28')][_0x6d45('0x61')]=_0x4b345c;return _0x2157e9;})[_0x6d45('0x20')](function(_0x2b2613){if(_0x2b2613){if(_0x159a6a['body']['manual']){_0x2157e9[_0x6d45('0x28')]['interface']=util[_0x6d45('0x5d')](_0x6d45('0x75'),_0x159a6a[_0x6d45('0x60')][_0x6d45('0x36')]);_0x2157e9[_0x6d45('0x28')][_0x6d45('0x76')]=_0x2157e9['channel'];_0x2157e9[_0x6d45('0x28')][_0x6d45('0x77')]=_0x2157e9[_0x6d45('0x76')];_0x2157e9[_0x6d45('0x28')][_0x6d45('0x78')]='accept';return respondWithRpcPromise('EventManager',_0x6d45('0x79'),{'event':_0x6d45('0x7a'),'message':_['merge'](_0x2157e9[_0x6d45('0x28')],JSON[_0x6d45('0x7b')](_0x2157e9[_0x6d45('0x66')][_0x6d45('0x7c')]))},client9002)[_0x6d45('0x20')](function(){return _0x2157e9;});}return _0x2157e9;}return null;})['then'](respondWithResult(_0xe028f2,null))[_0x6d45('0x29')](handleError(_0xe028f2,null));};var interaction_log=require(_0x6d45('0x12'))('chat-interactions');exports[_0x6d45('0x7d')]=function(_0x244df4,_0x41e8bb,_0x28ae9c){var _0x17888c={'agent':{},'channel':_0x6d45('0x5a')};if(_0x244df4[_0x6d45('0x56')]['id']){delete _0x244df4[_0x6d45('0x56')]['id'];}_0x244df4[_0x6d45('0x56')]['UserId']=_0x244df4['body']['UserId']||_0x244df4['user']['id'];_0x17888c[_0x6d45('0x61')]['id']=_0x244df4[_0x6d45('0x56')][_0x6d45('0x5f')];return db['ChatMessage'][_0x6d45('0x54')]({'where':{'id':_0x244df4[_0x6d45('0x50')]['id'],'UserId':null}})[_0x6d45('0x20')](handleEntityNotFound(_0x41e8bb,null))[_0x6d45('0x20')](function(_0x2d43b2){if(_0x2d43b2){_0x17888c['message']=_0x2d43b2[_0x6d45('0x62')]({'plain':!![]});return db[_0x6d45('0x63')][_0x6d45('0x54')]({'where':{'id':_0x2d43b2[_0x6d45('0x64')]}});}return null;})[_0x6d45('0x20')](handleEntityNotFound(_0x41e8bb,null))[_0x6d45('0x20')](function(_0x563070){if(_0x563070){_0x17888c['interaction']=_0x563070[_0x6d45('0x62')]({'plain':!![]});interaction_log['info'](_0x6d45('0x7e'),_0x244df4[_0x6d45('0x60')]['id'],_0x244df4[_0x6d45('0x60')][_0x6d45('0x36')],_0x244df4[_0x6d45('0x60')][_0x6d45('0x68')],_0x17888c[_0x6d45('0x66')]['id'],_0x244df4[_0x6d45('0x56')]?JSON['stringify'](_0x244df4[_0x6d45('0x56')]):_0x6d45('0x69'));return respondWithRpcPromise('RejectMessage',_0x6d45('0x7f'),_0x17888c);}return null;})['then'](function(_0x2f1805){var _0x4b4ace=_0x6d45('0x6b')+_0x2f1805[_0x6d45('0x28')][_0x6d45('0x80')];return db[_0x6d45('0x6c')][_0x6d45('0x3d')](_0x4b4ace,{'type':db[_0x6d45('0x6d')][_0x6d45('0x6e')][_0x6d45('0x6f')],'raw':!![]})[_0x6d45('0x20')](function(_0x4249a8){return _0x4249a8;});})[_0x6d45('0x20')](function(_0x2aabe4){if(_0x2aabe4){_0x17888c['message']['contact']=_0x2aabe4[0x0];if(!_0x244df4['body']['UserId'])return;return db['User']['find']({'where':{'id':_0x244df4[_0x6d45('0x56')]['UserId'],'role':_0x6d45('0x61')},'attributes':['id','name','fullname',_0x6d45('0x73'),_0x6d45('0x74')],'raw':!![]});}return null;})[_0x6d45('0x20')](function(_0x4759f1){if(!_0x4759f1)return null;_0x17888c['message'][_0x6d45('0x61')]=_0x4759f1;return _0x17888c;})[_0x6d45('0x20')](function(_0x461364){if(_0x461364){_0x461364[_0x6d45('0x28')][_0x6d45('0x81')]=util[_0x6d45('0x5d')]('SIP/%s',_0x244df4[_0x6d45('0x60')][_0x6d45('0x36')]);_0x461364[_0x6d45('0x28')][_0x6d45('0x76')]=_0x17888c[_0x6d45('0x76')];_0x461364[_0x6d45('0x28')]['motionChannel']=_0x17888c['channel'];_0x461364[_0x6d45('0x28')]['event']=_0x6d45('0x7d');respondWithRpcPromise('EventManager',_0x6d45('0x79'),{'event':_0x6d45('0x82'),'message':_['merge'](_0x17888c[_0x6d45('0x28')],JSON[_0x6d45('0x7b')](_0x17888c[_0x6d45('0x66')]['formData']))},client9002);return _0x17888c;}return null;})[_0x6d45('0x20')](respondWithResult(_0x41e8bb,null))[_0x6d45('0x29')](handleError(_0x41e8bb,null));};
\ No newline at end of file
+var _0x1658=['attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','rows','show','params','keys','create','body','find','describe','chat-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','reject','RejectMessage','email','rejectmessage','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','offset','limit','set','Content-Range','apply','save','update','destroy','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','key','filters','intersection','query'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x1658,0x14c));var _0x8165=function(_0x382c01,_0x3d04aa){_0x382c01=_0x382c01-0x0;var _0x24cdcd=_0x1658[_0x382c01];return _0x24cdcd;};'use strict';var emlformat=require(_0x8165('0x0'));var rimraf=require(_0x8165('0x1'));var zipdir=require(_0x8165('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8165('0x3'));var moment=require(_0x8165('0x4'));var BPromise=require(_0x8165('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8165('0x6'));var sox=require(_0x8165('0x7'));var csv=require('to-csv');var ejs=require(_0x8165('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8165('0x9'));var squel=require(_0x8165('0xa'));var crypto=require(_0x8165('0xb'));var jsforce=require(_0x8165('0xc'));var deskjs=require(_0x8165('0xd'));var toCsv=require(_0x8165('0xe'));var querystring=require('querystring');var Papa=require(_0x8165('0xf'));var Redis=require(_0x8165('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8165('0x11'));var as=require(_0x8165('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8165('0x13'))(_0x8165('0x14'));var utils=require(_0x8165('0x15'));var config=require(_0x8165('0x16'));var licenseUtil=require(_0x8165('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x8165('0x18')](config['redis'],{'host':_0x8165('0x19'),'port':0x18eb});var socket=require(_0x8165('0x1a'))(new Redis(config['redis']));require('./chatMessage.socket')[_0x8165('0x1b')](socket);var jayson=require(_0x8165('0x1c'));var client=jayson[_0x8165('0x1d')][_0x8165('0x1e')]({'port':0x232c});var client9002=jayson[_0x8165('0x1d')][_0x8165('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x53cee9,_0x170280,_0x5760a7,_0x17849b){return new BPromise(function(_0x440b58,_0x218c6d){var _0x8d48db=_0x17849b||client;return _0x8d48db['request'](_0x53cee9,_0x5760a7)[_0x8165('0x1f')](function(_0x524924){logger[_0x8165('0x20')](_0x8165('0x21'),_0x170280,_0x8165('0x22'));logger[_0x8165('0x23')](_0x8165('0x24'),_0x170280,_0x8165('0x22'),JSON[_0x8165('0x25')](_0x524924));if(_0x524924[_0x8165('0x26')]){if(_0x524924[_0x8165('0x26')][_0x8165('0x27')]===0x1f4){logger[_0x8165('0x26')](_0x8165('0x21'),_0x170280,_0x524924[_0x8165('0x26')][_0x8165('0x28')]);return _0x218c6d(_0x524924[_0x8165('0x26')][_0x8165('0x28')]);}logger[_0x8165('0x26')](_0x8165('0x21'),_0x170280,_0x524924[_0x8165('0x26')][_0x8165('0x28')]);return _0x440b58(_0x524924[_0x8165('0x26')][_0x8165('0x28')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x170280,_0x8165('0x22'));_0x440b58(_0x524924['result']['message']);}})[_0x8165('0x29')](function(_0x1f2a04){logger[_0x8165('0x26')](_0x8165('0x21'),_0x170280,_0x1f2a04);_0x218c6d(_0x1f2a04);});});}function respondWithStatusCode(_0x1cdb2c,_0xc38c3){_0xc38c3=_0xc38c3||0xcc;return function(_0x21aa29){if(_0x21aa29){return _0x1cdb2c[_0x8165('0x2a')](_0xc38c3);}return _0x1cdb2c[_0x8165('0x2b')](_0xc38c3)[_0x8165('0x2c')]();};}function respondWithResult(_0x4e51d0,_0x5a91b5){_0x5a91b5=_0x5a91b5||0xc8;return function(_0x2ddb89){if(_0x2ddb89){return _0x4e51d0[_0x8165('0x2b')](_0x5a91b5)[_0x8165('0x2d')](_0x2ddb89);}};}function respondWithFilteredResult(_0x43e7ae,_0x1a20d0){return function(_0x2eaa36){if(_0x2eaa36){var _0x1ae6f8=typeof _0x1a20d0['offset']===_0x8165('0x2e')&&typeof _0x1a20d0['limit']===_0x8165('0x2e');var _0x29d0a8=_0x2eaa36['count'];var _0x1c2322=_0x1ae6f8?0x0:_0x1a20d0[_0x8165('0x2f')];var _0x3ab18c=_0x1ae6f8?_0x2eaa36['count']:_0x1a20d0[_0x8165('0x2f')]+_0x1a20d0[_0x8165('0x30')];var _0x22248b;if(_0x3ab18c>=_0x29d0a8){_0x3ab18c=_0x29d0a8;_0x22248b=0xc8;}else{_0x22248b=0xce;}_0x43e7ae[_0x8165('0x2b')](_0x22248b);return _0x43e7ae[_0x8165('0x31')](_0x8165('0x32'),_0x1c2322+'-'+_0x3ab18c+'/'+_0x29d0a8)[_0x8165('0x2d')](_0x2eaa36);}return null;};}function patchUpdates(_0x39e4bb){return function(_0x284734){try{jsonpatch[_0x8165('0x33')](_0x284734,_0x39e4bb,!![]);}catch(_0x127bb4){return BPromise['reject'](_0x127bb4);}return _0x284734[_0x8165('0x34')]();};}function saveUpdates(_0x155874,_0x234317){return function(_0x4be661){if(_0x4be661){return _0x4be661[_0x8165('0x35')](_0x155874)[_0x8165('0x1f')](function(_0x1ae0a4){return _0x1ae0a4;});}return null;};}function removeEntity(_0x277db2,_0xde54bd){return function(_0x296fc9){if(_0x296fc9){return _0x296fc9[_0x8165('0x36')]()['then'](function(){_0x277db2[_0x8165('0x2b')](0xcc)[_0x8165('0x2c')]();});}};}function handleEntityNotFound(_0x492521,_0x895ee8){return function(_0x2f3511){if(!_0x2f3511){_0x492521[_0x8165('0x2a')](0x194);}return _0x2f3511;};}function handleError(_0x30a31f,_0x245c2c){_0x245c2c=_0x245c2c||0x1f4;return function(_0x4c5a91){logger['error'](_0x4c5a91[_0x8165('0x37')]);if(_0x4c5a91[_0x8165('0x38')]){delete _0x4c5a91[_0x8165('0x38')];}_0x30a31f['status'](_0x245c2c)[_0x8165('0x39')](_0x4c5a91);};}exports[_0x8165('0x3a')]=function(_0x4aaf2c,_0x1f39cb){var _0x2f36cd={},_0xfbb71b={},_0x1c82f4={'count':0x0,'rows':[]};var _0x4ba21e=_[_0x8165('0x3b')](db[_0x8165('0x3c')][_0x8165('0x3d')],function(_0x393aa0){return{'name':_0x393aa0[_0x8165('0x3e')],'type':_0x393aa0['type'][_0x8165('0x3f')]};});_0xfbb71b['model']=_[_0x8165('0x3b')](_0x4ba21e,_0x8165('0x38'));_0xfbb71b['query']=_['keys'](_0x4aaf2c['query']);_0xfbb71b[_0x8165('0x40')]=_[_0x8165('0x41')](_0xfbb71b['model'],_0xfbb71b[_0x8165('0x42')]);_0x2f36cd[_0x8165('0x43')]=_[_0x8165('0x41')](_0xfbb71b[_0x8165('0x44')],qs['fields'](_0x4aaf2c['query'][_0x8165('0x45')]));_0x2f36cd[_0x8165('0x43')]=_0x2f36cd[_0x8165('0x43')][_0x8165('0x46')]?_0x2f36cd['attributes']:_0xfbb71b[_0x8165('0x44')];if(!_0x4aaf2c['query'][_0x8165('0x47')](_0x8165('0x48'))){_0x2f36cd[_0x8165('0x30')]=qs['limit'](_0x4aaf2c[_0x8165('0x42')][_0x8165('0x30')]);_0x2f36cd[_0x8165('0x2f')]=qs[_0x8165('0x2f')](_0x4aaf2c[_0x8165('0x42')][_0x8165('0x2f')]);}_0x2f36cd[_0x8165('0x49')]=qs[_0x8165('0x4a')](_0x4aaf2c[_0x8165('0x42')]['sort']);_0x2f36cd[_0x8165('0x4b')]=qs[_0x8165('0x40')](_[_0x8165('0x4c')](_0x4aaf2c[_0x8165('0x42')],_0xfbb71b[_0x8165('0x40')]),_0x4ba21e);if(_0x4aaf2c[_0x8165('0x42')][_0x8165('0x4d')]){_0x2f36cd[_0x8165('0x4b')]=_[_0x8165('0x4e')](_0x2f36cd['where'],{'$or':_[_0x8165('0x3b')](_0x4ba21e,function(_0x551a87){if(_0x551a87[_0x8165('0x4f')]!==_0x8165('0x50')){var _0x52f0b4={};_0x52f0b4[_0x551a87['name']]={'$like':'%'+_0x4aaf2c['query'][_0x8165('0x4d')]+'%'};return _0x52f0b4;}})});}_0x2f36cd=_[_0x8165('0x4e')]({},_0x2f36cd,_0x4aaf2c[_0x8165('0x51')]);var _0x45a667={'where':_0x2f36cd[_0x8165('0x4b')]};return db['ChatMessage'][_0x8165('0x52')](_0x45a667)[_0x8165('0x1f')](function(_0x1a326a){_0x1c82f4[_0x8165('0x52')]=_0x1a326a;if(_0x4aaf2c[_0x8165('0x42')][_0x8165('0x53')]){_0x2f36cd[_0x8165('0x54')]=[{'all':!![]}];}return db[_0x8165('0x3c')]['findAll'](_0x2f36cd);})[_0x8165('0x1f')](function(_0x3fc377){_0x1c82f4[_0x8165('0x55')]=_0x3fc377;return _0x1c82f4;})[_0x8165('0x1f')](respondWithFilteredResult(_0x1f39cb,_0x2f36cd))[_0x8165('0x29')](handleError(_0x1f39cb,null));};exports[_0x8165('0x56')]=function(_0x24a8b1,_0x51f597){var _0x23ce7b={'raw':!![],'where':{'id':_0x24a8b1[_0x8165('0x57')]['id']}},_0x27646e={};_0x27646e[_0x8165('0x44')]=_[_0x8165('0x58')](db[_0x8165('0x3c')][_0x8165('0x3d')]);_0x27646e['query']=_[_0x8165('0x58')](_0x24a8b1[_0x8165('0x42')]);_0x27646e[_0x8165('0x40')]=_[_0x8165('0x41')](_0x27646e[_0x8165('0x44')],_0x27646e[_0x8165('0x42')]);_0x23ce7b[_0x8165('0x43')]=_[_0x8165('0x41')](_0x27646e[_0x8165('0x44')],qs[_0x8165('0x45')](_0x24a8b1[_0x8165('0x42')]['fields']));_0x23ce7b[_0x8165('0x43')]=_0x23ce7b[_0x8165('0x43')][_0x8165('0x46')]?_0x23ce7b[_0x8165('0x43')]:_0x27646e[_0x8165('0x44')];if(_0x24a8b1[_0x8165('0x42')][_0x8165('0x53')]){_0x23ce7b[_0x8165('0x54')]=[{'all':!![]}];}_0x23ce7b=_[_0x8165('0x4e')]({},_0x23ce7b,_0x24a8b1[_0x8165('0x51')]);return db[_0x8165('0x3c')]['find'](_0x23ce7b)['then'](handleEntityNotFound(_0x51f597,null))[_0x8165('0x1f')](respondWithResult(_0x51f597,null))[_0x8165('0x29')](handleError(_0x51f597,null));};exports[_0x8165('0x59')]=function(_0x59f5b7,_0x4d88da){return db[_0x8165('0x3c')][_0x8165('0x59')](_0x59f5b7[_0x8165('0x5a')],{})[_0x8165('0x1f')](respondWithResult(_0x4d88da,0xc9))[_0x8165('0x29')](handleError(_0x4d88da,null));};exports[_0x8165('0x35')]=function(_0x2ddb44,_0x547246){if(_0x2ddb44[_0x8165('0x5a')]['id']){delete _0x2ddb44[_0x8165('0x5a')]['id'];}return db[_0x8165('0x3c')][_0x8165('0x5b')]({'where':{'id':_0x2ddb44[_0x8165('0x57')]['id']}})[_0x8165('0x1f')](handleEntityNotFound(_0x547246,null))[_0x8165('0x1f')](saveUpdates(_0x2ddb44[_0x8165('0x5a')],null))[_0x8165('0x1f')](respondWithResult(_0x547246,null))['catch'](handleError(_0x547246,null));};exports['destroy']=function(_0x10e594,_0x180b3f){return db['ChatMessage'][_0x8165('0x5b')]({'where':{'id':_0x10e594['params']['id']}})['then'](handleEntityNotFound(_0x180b3f,null))['then'](removeEntity(_0x180b3f,null))[_0x8165('0x29')](handleError(_0x180b3f,null));};exports['describe']=function(_0x1f9b2f,_0x3a0b12){return db[_0x8165('0x3c')][_0x8165('0x5c')]()[_0x8165('0x1f')](respondWithResult(_0x3a0b12,null))[_0x8165('0x29')](handleError(_0x3a0b12,null));};var interaction_log=require(_0x8165('0x13'))(_0x8165('0x5d'));exports[_0x8165('0x5e')]=function(_0x2fd1a7,_0x1dd940,_0x4ea434){var _0x5e171f={'agent':{},'channel':'chat'};if(_0x2fd1a7[_0x8165('0x5a')]['id']){delete _0x2fd1a7[_0x8165('0x5a')]['id'];}_0x2fd1a7[_0x8165('0x5a')][_0x8165('0x5f')]=!![];_0x2fd1a7['body']['readAt']=moment()[_0x8165('0x60')](_0x8165('0x61'));_0x2fd1a7['body'][_0x8165('0x62')]=_0x2fd1a7[_0x8165('0x5a')][_0x8165('0x62')]||_0x2fd1a7[_0x8165('0x63')]['id'];_0x5e171f[_0x8165('0x64')]['id']=_0x2fd1a7[_0x8165('0x5a')][_0x8165('0x62')];return db['ChatMessage'][_0x8165('0x5b')]({'where':{'id':_0x2fd1a7['params']['id'],'UserId':null}})[_0x8165('0x1f')](handleEntityNotFound(_0x1dd940,null))['then'](saveUpdates(_0x2fd1a7[_0x8165('0x5a')],null))[_0x8165('0x1f')](function(_0x23cbc6){if(_0x23cbc6){_0x5e171f['message']=_0x23cbc6[_0x8165('0x65')]({'plain':!![]});return db[_0x8165('0x66')][_0x8165('0x5b')]({'where':{'id':_0x23cbc6[_0x8165('0x67')]}});}return null;})[_0x8165('0x1f')](handleEntityNotFound(_0x1dd940,null))[_0x8165('0x1f')](function(_0x4c289f){if(_0x4c289f){return _0x4c289f[_0x8165('0x35')]({'UserId':_0x2fd1a7[_0x8165('0x5a')][_0x8165('0x62')],'read1stAt':_[_0x8165('0x68')](_0x4c289f[_0x8165('0x69')])?moment()[_0x8165('0x60')](_0x8165('0x61')):undefined});}return null;})[_0x8165('0x1f')](function(_0x51c446){if(_0x51c446){_0x5e171f[_0x8165('0x6a')]=_0x51c446[_0x8165('0x65')]({'plain':!![]});interaction_log[_0x8165('0x20')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2fd1a7[_0x8165('0x63')]['id'],_0x2fd1a7[_0x8165('0x63')][_0x8165('0x38')],_0x2fd1a7['user'][_0x8165('0x6b')],_0x5e171f['interaction']['id'],_0x2fd1a7[_0x8165('0x5a')]?JSON['stringify'](_0x2fd1a7['body']):_0x8165('0x6c'));return respondWithRpcPromise('AcceptMessage',_0x8165('0x6d'),_0x5e171f);}return null;})[_0x8165('0x1f')](function(_0x4aa66e){var _0x4cd100=_0x8165('0x6e')+_0x4aa66e[_0x8165('0x28')][_0x8165('0x6f')];return db['sequelize'][_0x8165('0x42')](_0x4cd100,{'type':db[_0x8165('0x70')][_0x8165('0x71')][_0x8165('0x72')],'raw':!![]})['then'](function(_0x30a379){return _0x30a379;});})[_0x8165('0x1f')](function(_0x23a80f){if(_0x23a80f){_0x5e171f[_0x8165('0x28')][_0x8165('0x73')]=_0x23a80f[0x0];if(!_0x2fd1a7[_0x8165('0x5a')][_0x8165('0x62')])return;return db[_0x8165('0x74')]['find']({'where':{'id':_0x2fd1a7[_0x8165('0x5a')][_0x8165('0x62')],'role':_0x8165('0x64')},'attributes':['id',_0x8165('0x38'),_0x8165('0x75'),'email',_0x8165('0x76')],'raw':!![]});}return null;})[_0x8165('0x1f')](function(_0x196e19){if(!_0x196e19)return null;_0x5e171f['message'][_0x8165('0x64')]=_0x196e19;return _0x5e171f;})[_0x8165('0x1f')](function(_0x1af162){if(_0x1af162){if(_0x2fd1a7[_0x8165('0x5a')][_0x8165('0x77')]){_0x5e171f[_0x8165('0x28')][_0x8165('0x78')]=util['format'](_0x8165('0x79'),_0x2fd1a7[_0x8165('0x63')][_0x8165('0x38')]);_0x5e171f[_0x8165('0x28')]['channel']=_0x5e171f[_0x8165('0x7a')];_0x5e171f[_0x8165('0x28')][_0x8165('0x7b')]=_0x5e171f[_0x8165('0x7a')];_0x5e171f['message'][_0x8165('0x7c')]=_0x8165('0x5e');return respondWithRpcPromise(_0x8165('0x7d'),_0x8165('0x7d'),{'event':_0x8165('0x7e'),'message':_[_0x8165('0x4e')](_0x5e171f[_0x8165('0x28')],JSON[_0x8165('0x7f')](_0x5e171f[_0x8165('0x6a')][_0x8165('0x80')]))},client9002)[_0x8165('0x1f')](function(){return _0x5e171f;});}return _0x5e171f;}return null;})[_0x8165('0x1f')](respondWithResult(_0x1dd940,null))[_0x8165('0x29')](handleError(_0x1dd940,null));};var interaction_log=require(_0x8165('0x13'))(_0x8165('0x5d'));exports[_0x8165('0x81')]=function(_0x1f4956,_0x4cd3c8,_0x4a367d){var _0x39e5fb={'agent':{},'channel':'chat'};if(_0x1f4956[_0x8165('0x5a')]['id']){delete _0x1f4956[_0x8165('0x5a')]['id'];}_0x1f4956[_0x8165('0x5a')]['UserId']=_0x1f4956[_0x8165('0x5a')][_0x8165('0x62')]||_0x1f4956[_0x8165('0x63')]['id'];_0x39e5fb[_0x8165('0x64')]['id']=_0x1f4956[_0x8165('0x5a')][_0x8165('0x62')];return db[_0x8165('0x3c')]['find']({'where':{'id':_0x1f4956[_0x8165('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4cd3c8,null))[_0x8165('0x1f')](function(_0x218474){if(_0x218474){_0x39e5fb[_0x8165('0x28')]=_0x218474[_0x8165('0x65')]({'plain':!![]});return db[_0x8165('0x66')][_0x8165('0x5b')]({'where':{'id':_0x218474['ChatInteractionId']}});}return null;})[_0x8165('0x1f')](handleEntityNotFound(_0x4cd3c8,null))[_0x8165('0x1f')](function(_0x3d3c67){if(_0x3d3c67){_0x39e5fb[_0x8165('0x6a')]=_0x3d3c67[_0x8165('0x65')]({'plain':!![]});interaction_log[_0x8165('0x20')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1f4956[_0x8165('0x63')]['id'],_0x1f4956[_0x8165('0x63')][_0x8165('0x38')],_0x1f4956['user']['role'],_0x39e5fb[_0x8165('0x6a')]['id'],_0x1f4956[_0x8165('0x5a')]?JSON[_0x8165('0x25')](_0x1f4956[_0x8165('0x5a')]):_0x8165('0x6c'));return respondWithRpcPromise(_0x8165('0x82'),'rejectMessage',_0x39e5fb);}return null;})[_0x8165('0x1f')](function(_0x3691bd){var _0x1094fb='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3691bd[_0x8165('0x28')]['ContactId'];return db['sequelize']['query'](_0x1094fb,{'type':db[_0x8165('0x70')]['QueryTypes']['SELECT'],'raw':!![]})[_0x8165('0x1f')](function(_0x482f6c){return _0x482f6c;});})[_0x8165('0x1f')](function(_0x2723e4){if(_0x2723e4){_0x39e5fb[_0x8165('0x28')][_0x8165('0x73')]=_0x2723e4[0x0];if(!_0x1f4956[_0x8165('0x5a')][_0x8165('0x62')])return;return db[_0x8165('0x74')][_0x8165('0x5b')]({'where':{'id':_0x1f4956[_0x8165('0x5a')][_0x8165('0x62')],'role':_0x8165('0x64')},'attributes':['id','name',_0x8165('0x75'),_0x8165('0x83'),_0x8165('0x76')],'raw':!![]});}return null;})[_0x8165('0x1f')](function(_0x1586e7){if(!_0x1586e7)return null;_0x39e5fb[_0x8165('0x28')][_0x8165('0x64')]=_0x1586e7;return _0x39e5fb;})[_0x8165('0x1f')](function(_0x2c679c){if(_0x2c679c){_0x2c679c[_0x8165('0x28')][_0x8165('0x78')]=util[_0x8165('0x60')]('SIP/%s',_0x1f4956[_0x8165('0x63')][_0x8165('0x38')]);_0x2c679c[_0x8165('0x28')][_0x8165('0x7a')]=_0x39e5fb['channel'];_0x2c679c[_0x8165('0x28')]['motionChannel']=_0x39e5fb['channel'];_0x2c679c[_0x8165('0x28')]['event']=_0x8165('0x81');respondWithRpcPromise(_0x8165('0x7d'),_0x8165('0x7d'),{'event':_0x8165('0x84'),'message':_[_0x8165('0x4e')](_0x39e5fb[_0x8165('0x28')],JSON[_0x8165('0x7f')](_0x39e5fb['interaction']['formData']))},client9002);return _0x39e5fb;}return null;})[_0x8165('0x1f')](respondWithResult(_0x4cd3c8,null))[_0x8165('0x29')](handleError(_0x4cd3c8,null));};
\ No newline at end of file
index 54131df..4354499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe438=['events','../../mysqldb','ChatMessage','save','update','emit','hasOwnProperty','hook'];(function(_0x3e6e2f,_0x242642){var _0x3a0401=function(_0x2b36c7){while(--_0x2b36c7){_0x3e6e2f['push'](_0x3e6e2f['shift']());}};_0x3a0401(++_0x242642);}(_0xe438,0xd8));var _0x8e43=function(_0x356e38,_0xbcfe93){_0x356e38=_0x356e38-0x0;var _0x463f1e=_0xe438[_0x356e38];return _0x463f1e;};'use strict';var EventEmitter=require(_0x8e43('0x0'));var ChatMessage=require(_0x8e43('0x1'))['db'][_0x8e43('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8e43('0x3'),'afterUpdate':_0x8e43('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1cd8e3){return function(_0x2b7da5,_0x39a90b,_0x507b78){ChatMessageEvents[_0x8e43('0x5')](_0x1cd8e3+':'+_0x2b7da5['id'],_0x2b7da5);ChatMessageEvents[_0x8e43('0x5')](_0x1cd8e3,_0x2b7da5);_0x507b78(null);};}for(var e in events){if(events[_0x8e43('0x6')](e)){var event=events[e];ChatMessage[_0x8e43('0x7')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0x55bf=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','save'];(function(_0x5c5d53,_0x4427c3){var _0xb3a9e=function(_0x4f5050){while(--_0x4f5050){_0x5c5d53['push'](_0x5c5d53['shift']());}};_0xb3a9e(++_0x4427c3);}(_0x55bf,0x69));var _0xf55b=function(_0x520da5,_0x30025e){_0x520da5=_0x520da5-0x0;var _0x55425b=_0x55bf[_0x520da5];return _0x55425b;};'use strict';var EventEmitter=require(_0xf55b('0x0'));var ChatMessage=require(_0xf55b('0x1'))['db'][_0xf55b('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xf55b('0x3')](0x0);var events={'afterCreate':_0xf55b('0x4'),'afterUpdate':_0xf55b('0x5'),'afterDestroy':_0xf55b('0x6')};function emitEvent(_0x136681){return function(_0x81c0e9,_0x5c52b4,_0x1640b1){ChatMessageEvents[_0xf55b('0x7')](_0x136681+':'+_0x81c0e9['id'],_0x81c0e9);ChatMessageEvents[_0xf55b('0x7')](_0x136681,_0x81c0e9);_0x1640b1(null);};}for(var e in events){if(events[_0xf55b('0x8')](e)){var event=events[e];ChatMessage[_0xf55b('0x9')](e,emitEvent(event));}}module[_0xf55b('0xa')]=ChatMessageEvents;
\ No newline at end of file
index f5496d7..46d2998 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc7a=['createdAt','catch','error','utf8mb4','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','fti_chat_messages','body','FULLTEXT','models','direction','toLowerCase','out','isNil','ChatInteraction','findOne','ChatInteractionId','then','update'];(function(_0x5c82fa,_0x4e720d){var _0x87d069=function(_0x1bf355){while(--_0x1bf355){_0x5c82fa['push'](_0x5c82fa['shift']());}};_0x87d069(++_0x4e720d);}(_0xcc7a,0x1e0));var _0xacc7=function(_0x566bdf,_0x1f4861){_0x566bdf=_0x566bdf-0x0;var _0x331215=_0xcc7a[_0x566bdf];return _0x331215;};'use strict';var _=require(_0xacc7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xacc7('0x1'));var moment=require(_0xacc7('0x2'));var BPromise=require(_0xacc7('0x3'));var rp=require(_0xacc7('0x4'));var fs=require('fs');var path=require(_0xacc7('0x5'));var rimraf=require('rimraf');var config=require(_0xacc7('0x6'));var attributes=require(_0xacc7('0x7'));module[_0xacc7('0x8')]=function(_0x4fc164,_0x2041e0){return _0x4fc164[_0xacc7('0x9')](_0xacc7('0xa'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0xacc7('0xb'),'fields':[_0xacc7('0xc')],'type':_0xacc7('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3089a8,_0x1cf760,_0x3e577f){var _0x5aaa51=_0x4fc164[_0xacc7('0xe')];var _0x177a44=_0x3089a8['get']({'plain':!![]});if(_0x177a44[_0xacc7('0xf')][_0xacc7('0x10')]()==='in'||_0x177a44['direction'][_0xacc7('0x10')]()===_0xacc7('0x11')&&!_0x177a44['secret']&&!_[_0xacc7('0x12')](_0x177a44['UserId'])){_0x5aaa51[_0xacc7('0x13')][_0xacc7('0x14')]({'where':{'id':_0x177a44[_0xacc7('0x15')]}})[_0xacc7('0x16')](function(_0x349fad){if(_0x349fad){_0x349fad[_0xacc7('0x17')]({'lastMsgAt':_0x177a44[_0xacc7('0x18')],'lastMsgDirection':_0x177a44[_0xacc7('0xf')][_0xacc7('0x10')]()});}})[_0xacc7('0x19')](function(_0x399f6f){console[_0xacc7('0x1a')](_0x399f6f);});}_0x3e577f();}},'charset':_0xacc7('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3f11=['update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./chatMessage.attributes','exports','define','ChatMessage','fti_chat_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','ChatInteraction'];(function(_0x2431dd,_0x5eff9e){var _0x7ac975=function(_0x17329e){while(--_0x17329e){_0x2431dd['push'](_0x2431dd['shift']());}};_0x7ac975(++_0x5eff9e);}(_0x3f11,0x1a5));var _0x13f1=function(_0x127565,_0x4cf4c7){_0x127565=_0x127565-0x0;var _0x35090e=_0x3f11[_0x127565];return _0x35090e;};'use strict';var _=require(_0x13f1('0x0'));var util=require(_0x13f1('0x1'));var logger=require('../../config/logger')(_0x13f1('0x2'));var moment=require(_0x13f1('0x3'));var BPromise=require(_0x13f1('0x4'));var rp=require(_0x13f1('0x5'));var fs=require('fs');var path=require(_0x13f1('0x6'));var rimraf=require(_0x13f1('0x7'));var config=require('../../config/environment');var attributes=require(_0x13f1('0x8'));module[_0x13f1('0x9')]=function(_0x4e71e3,_0x56aa7b){return _0x4e71e3[_0x13f1('0xa')](_0x13f1('0xb'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0x13f1('0xc'),'fields':[_0x13f1('0xd')],'type':_0x13f1('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1d30e9,_0x31c409,_0x146882){var _0x47ffeb=_0x4e71e3[_0x13f1('0xf')];var _0x17cf36=_0x1d30e9['get']({'plain':!![]});if(_0x17cf36[_0x13f1('0x10')]['toLowerCase']()==='in'||_0x17cf36[_0x13f1('0x10')][_0x13f1('0x11')]()===_0x13f1('0x12')&&!_0x17cf36[_0x13f1('0x13')]&&!_['isNil'](_0x17cf36['UserId'])){_0x47ffeb[_0x13f1('0x14')]['findOne']({'where':{'id':_0x17cf36['ChatInteractionId']}})['then'](function(_0x457e8c){if(_0x457e8c){_0x457e8c[_0x13f1('0x15')]({'lastMsgAt':_0x17cf36[_0x13f1('0x16')],'lastMsgDirection':_0x17cf36[_0x13f1('0x10')][_0x13f1('0x11')]()});}})['catch'](function(_0x2f8d74){console[_0x13f1('0x17')](_0x2f8d74);});}_0x146882();}},'charset':_0x13f1('0x18'),'collate':_0x13f1('0x19')});};
\ No newline at end of file
index 96769b1..30ec3a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc70a=['request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatMessage','ChatMessage','create','body','options','raw','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','then','info','ChatMessage,\x20%s,\x20%s'];(function(_0x2166ea,_0x45224d){var _0x311abb=function(_0x2ee9d2){while(--_0x2ee9d2){_0x2166ea['push'](_0x2166ea['shift']());}};_0x311abb(++_0x45224d);}(_0xc70a,0x78));var _0xac70=function(_0x235f8a,_0x7a1187){_0x235f8a=_0x235f8a-0x0;var _0x44567e=_0xc70a[_0x235f8a];return _0x44567e;};'use strict';var _=require(_0xac70('0x0'));var util=require(_0xac70('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xac70('0x2'));var fs=require('fs');var Redis=require(_0xac70('0x3'));var db=require(_0xac70('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xac70('0x5'))(_0xac70('0x6'));var config=require(_0xac70('0x7'));var jayson=require(_0xac70('0x8'));var client=jayson[_0xac70('0x9')][_0xac70('0xa')]({'port':0x232a});config[_0xac70('0xb')]=_[_0xac70('0xc')](config[_0xac70('0xb')],{'host':_0xac70('0xd'),'port':0x18eb});var socket=require(_0xac70('0xe'))(new Redis(config[_0xac70('0xb')]));require(_0xac70('0xf'))[_0xac70('0x10')](socket);function respondWithRpcPromise(_0x972336,_0x33f22e,_0x3fa772){return new BPromise(function(_0x203e08,_0x12ea88){return client['request'](_0x972336,_0x3fa772)[_0xac70('0x11')](function(_0x88c411){logger[_0xac70('0x12')](_0xac70('0x13'),_0x33f22e,_0xac70('0x14'));logger[_0xac70('0x15')](_0xac70('0x16'),_0x33f22e,_0xac70('0x14'),JSON[_0xac70('0x17')](_0x88c411));if(_0x88c411[_0xac70('0x18')]){if(_0x88c411[_0xac70('0x18')][_0xac70('0x19')]===0x1f4){logger['error'](_0xac70('0x13'),_0x33f22e,_0x88c411[_0xac70('0x18')][_0xac70('0x1a')]);return _0x12ea88(_0x88c411['error'][_0xac70('0x1a')]);}logger[_0xac70('0x18')](_0xac70('0x13'),_0x33f22e,_0x88c411[_0xac70('0x18')]['message']);return _0x203e08(_0x88c411[_0xac70('0x18')][_0xac70('0x1a')]);}else{logger[_0xac70('0x12')](_0xac70('0x13'),_0x33f22e,_0xac70('0x14'));_0x203e08(_0x88c411[_0xac70('0x1b')][_0xac70('0x1a')]);}})[_0xac70('0x1c')](function(_0x26924f){logger['error']('ChatMessage,\x20%s,\x20%s',_0x33f22e,_0x26924f);_0x12ea88(_0x26924f);});});}exports[_0xac70('0x1d')]=function(_0x95bbba){var _0x258a75=this;return new Promise(function(_0x5c04e3,_0x1aed38){return db[_0xac70('0x1e')][_0xac70('0x1f')](_0x95bbba[_0xac70('0x20')],{'raw':_0x95bbba['options']?_0x95bbba[_0xac70('0x21')][_0xac70('0x22')]===undefined?!![]:![]:!![]})[_0xac70('0x11')](function(_0x4690a3){logger[_0xac70('0x12')](_0xac70('0x1d'),_0x95bbba);logger['debug']('CreateChatMessage',_0x95bbba,JSON[_0xac70('0x17')](_0x4690a3));_0x5c04e3(_0x4690a3);})[_0xac70('0x1c')](function(_0x5260b1){logger[_0xac70('0x18')](_0xac70('0x1d'),_0x5260b1[_0xac70('0x1a')],_0x95bbba);_0x1aed38(_0x258a75[_0xac70('0x18')](0x1f4,_0x5260b1[_0xac70('0x1a')]));});});};
\ No newline at end of file
+var _0xf781=['result','body','then','info','CreateChatMessage','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','request','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0xd601cd,_0xa60b07){var _0x5664a3=function(_0x3f5247){while(--_0x3f5247){_0xd601cd['push'](_0xd601cd['shift']());}};_0x5664a3(++_0xa60b07);}(_0xf781,0xd2));var _0x1f78=function(_0x225d29,_0x1d34ff){_0x225d29=_0x225d29-0x0;var _0x6ec715=_0xf781[_0x225d29];return _0x6ec715;};'use strict';var _=require(_0x1f78('0x0'));var util=require('util');var moment=require(_0x1f78('0x1'));var BPromise=require(_0x1f78('0x2'));var rs=require(_0x1f78('0x3'));var fs=require('fs');var Redis=require(_0x1f78('0x4'));var db=require(_0x1f78('0x5'))['db'];var utils=require(_0x1f78('0x6'));var logger=require(_0x1f78('0x7'))(_0x1f78('0x8'));var config=require(_0x1f78('0x9'));var jayson=require(_0x1f78('0xa'));var client=jayson[_0x1f78('0xb')][_0x1f78('0xc')]({'port':0x232a});config[_0x1f78('0xd')]=_[_0x1f78('0xe')](config[_0x1f78('0xd')],{'host':_0x1f78('0xf'),'port':0x18eb});var socket=require(_0x1f78('0x10'))(new Redis(config[_0x1f78('0xd')]));require(_0x1f78('0x11'))[_0x1f78('0x12')](socket);function respondWithRpcPromise(_0x16213b,_0x297a6e,_0x509aa1){return new BPromise(function(_0x30346b,_0xa8213c){return client[_0x1f78('0x13')](_0x16213b,_0x509aa1)['then'](function(_0x1b5781){logger['info'](_0x1f78('0x14'),_0x297a6e,'request\x20sent');logger[_0x1f78('0x15')](_0x1f78('0x16'),_0x297a6e,_0x1f78('0x17'),JSON[_0x1f78('0x18')](_0x1b5781));if(_0x1b5781[_0x1f78('0x19')]){if(_0x1b5781[_0x1f78('0x19')][_0x1f78('0x1a')]===0x1f4){logger[_0x1f78('0x19')](_0x1f78('0x14'),_0x297a6e,_0x1b5781['error']['message']);return _0xa8213c(_0x1b5781[_0x1f78('0x19')][_0x1f78('0x1b')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x297a6e,_0x1b5781[_0x1f78('0x19')]['message']);return _0x30346b(_0x1b5781[_0x1f78('0x19')][_0x1f78('0x1b')]);}else{logger['info'](_0x1f78('0x14'),_0x297a6e,'request\x20sent');_0x30346b(_0x1b5781[_0x1f78('0x1c')][_0x1f78('0x1b')]);}})['catch'](function(_0xc93a53){logger['error'](_0x1f78('0x14'),_0x297a6e,_0xc93a53);_0xa8213c(_0xc93a53);});});}exports['CreateChatMessage']=function(_0x245d03){var _0x5c686d=this;return new Promise(function(_0x3677e5,_0x2af3cd){return db['ChatMessage']['create'](_0x245d03[_0x1f78('0x1d')],{'raw':_0x245d03['options']?_0x245d03['options']['raw']===undefined?!![]:![]:!![]})[_0x1f78('0x1e')](function(_0x5121b5){logger[_0x1f78('0x1f')](_0x1f78('0x20'),_0x245d03);logger[_0x1f78('0x15')]('CreateChatMessage',_0x245d03,JSON['stringify'](_0x5121b5));_0x3677e5(_0x5121b5);})[_0x1f78('0x21')](function(_0x4b6f54){logger[_0x1f78('0x19')]('CreateChatMessage',_0x4b6f54[_0x1f78('0x1b')],_0x245d03);_0x2af3cd(_0x5c686d[_0x1f78('0x19')](0x1f4,_0x4b6f54[_0x1f78('0x1b')]));});});};
\ No newline at end of file
index c409a6b..555ea00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['./chatMessage.events','remove','update','emit','removeListener','register','length','chatMessage:'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0x425d,0x1e0));var _0xd425=function(_0x31e00f,_0x1a4e77){_0x31e00f=_0x31e00f-0x0;var _0x260194=_0x425d[_0x31e00f];return _0x260194;};'use strict';var ChatMessageEvents=require(_0xd425('0x0'));var events=['save',_0xd425('0x1'),_0xd425('0x2')];function createListener(_0x314a2b,_0x97e370){return function(_0x183caa){_0x97e370[_0xd425('0x3')](_0x314a2b,_0x183caa);};}function removeListener(_0x47043f,_0x596be7){return function(){ChatMessageEvents[_0xd425('0x4')](_0x47043f,_0x596be7);};}exports[_0xd425('0x5')]=function(_0xc4e080){for(var _0x36866e=0x0,_0x1d97d9=events[_0xd425('0x6')];_0x36866e<_0x1d97d9;_0x36866e++){var _0x50b061=events[_0x36866e];var _0xb6ba8e=createListener(_0xd425('0x7')+_0x50b061,_0xc4e080);ChatMessageEvents['on'](_0x50b061,_0xb6ba8e);}};
\ No newline at end of file
+var _0xb647=['register','length','chatMessage:','./chatMessage.events','save','remove','update','emit'];(function(_0x29d439,_0x1ed945){var _0x25b480=function(_0x43423e){while(--_0x43423e){_0x29d439['push'](_0x29d439['shift']());}};_0x25b480(++_0x1ed945);}(_0xb647,0xdb));var _0x7b64=function(_0x2a4b06,_0x41bf9b){_0x2a4b06=_0x2a4b06-0x0;var _0x4b76c3=_0xb647[_0x2a4b06];return _0x4b76c3;};'use strict';var ChatMessageEvents=require(_0x7b64('0x0'));var events=[_0x7b64('0x1'),_0x7b64('0x2'),_0x7b64('0x3')];function createListener(_0x38de52,_0x3b659e){return function(_0x274824){_0x3b659e[_0x7b64('0x4')](_0x38de52,_0x274824);};}function removeListener(_0x54eee8,_0x36ff12){return function(){ChatMessageEvents['removeListener'](_0x54eee8,_0x36ff12);};}exports[_0x7b64('0x5')]=function(_0x38ebf7){for(var _0x31915b=0x0,_0x80721a=events[_0x7b64('0x6')];_0x31915b<_0x80721a;_0x31915b++){var _0x22eca3=events[_0x31915b];var _0x727684=createListener(_0x7b64('0x7')+_0x22eca3,_0x38ebf7);ChatMessageEvents['on'](_0x22eca3,_0x727684);}};
\ No newline at end of file
index 55f0a0a..b238ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c7=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','describe','/:id','show','chatmessage:create','create','update','put','accept','/:id/reject','reject','delete','exports','multer','util','express','Router','fs-extra'];(function(_0x2c93b7,_0x4ffe9a){var _0x5a096b=function(_0x5a048c){while(--_0x5a048c){_0x2c93b7['push'](_0x2c93b7['shift']());}};_0x5a096b(++_0x4ffe9a);}(_0x72c7,0x1db));var _0x772c=function(_0x2e6939,_0x18d0f5){_0x2e6939=_0x2e6939-0x0;var _0x303fe9=_0x72c7[_0x2e6939];return _0x303fe9;};'use strict';var multer=require(_0x772c('0x0'));var util=require(_0x772c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x772c('0x2'));var router=express[_0x772c('0x3')]();var fs_extra=require(_0x772c('0x4'));var auth=require(_0x772c('0x5'));var interaction=require(_0x772c('0x6'));var config=require(_0x772c('0x7'));var controller=require(_0x772c('0x8'));router[_0x772c('0x9')]('/',auth[_0x772c('0xa')](),controller[_0x772c('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x772c('0xc')]);router[_0x772c('0x9')](_0x772c('0xd'),auth[_0x772c('0xa')](),controller[_0x772c('0xe')]);router['post']('/',auth['isAuthenticated'](),interaction['tracked']('chat',_0x772c('0xf')),controller[_0x772c('0x10')]);router['put']('/:id',controller[_0x772c('0x11')]);router[_0x772c('0x12')]('/:id/accept',auth[_0x772c('0xa')](),controller[_0x772c('0x13')]);router[_0x772c('0x12')](_0x772c('0x14'),auth[_0x772c('0xa')](),controller[_0x772c('0x15')]);router[_0x772c('0x16')](_0x772c('0xd'),auth[_0x772c('0xa')](),controller['destroy']);module[_0x772c('0x17')]=router;
\ No newline at end of file
+var _0x4e57=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','index','describe','/:id','isAuthenticated','tracked','chat','chatmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','util','path'];(function(_0x2fde11,_0x3a54a5){var _0x3c023f=function(_0x2efe52){while(--_0x2efe52){_0x2fde11['push'](_0x2fde11['shift']());}};_0x3c023f(++_0x3a54a5);}(_0x4e57,0x1e3));var _0x74e5=function(_0x498481,_0x3fc2cf){_0x498481=_0x498481-0x0;var _0x6cd424=_0x4e57[_0x498481];return _0x6cd424;};'use strict';var multer=require(_0x74e5('0x0'));var util=require(_0x74e5('0x1'));var path=require(_0x74e5('0x2'));var timeout=require('connect-timeout');var express=require(_0x74e5('0x3'));var router=express[_0x74e5('0x4')]();var fs_extra=require(_0x74e5('0x5'));var auth=require(_0x74e5('0x6'));var interaction=require(_0x74e5('0x7'));var config=require(_0x74e5('0x8'));var controller=require(_0x74e5('0x9'));router[_0x74e5('0xa')]('/',auth['isAuthenticated'](),controller[_0x74e5('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x74e5('0xc')]);router[_0x74e5('0xa')](_0x74e5('0xd'),auth[_0x74e5('0xe')](),controller['show']);router['post']('/',auth[_0x74e5('0xe')](),interaction[_0x74e5('0xf')](_0x74e5('0x10'),_0x74e5('0x11')),controller[_0x74e5('0x12')]);router[_0x74e5('0x13')](_0x74e5('0xd'),controller[_0x74e5('0x14')]);router[_0x74e5('0x13')](_0x74e5('0x15'),auth[_0x74e5('0xe')](),controller[_0x74e5('0x16')]);router['put'](_0x74e5('0x17'),auth[_0x74e5('0xe')](),controller[_0x74e5('0x18')]);router[_0x74e5('0x19')](_0x74e5('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x74e5('0x1a')]=router;
\ No newline at end of file
index 985a9b7..3217d6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['medium','TEXT','exports'];(function(_0x465079,_0x24bce3){var _0xd62a5e=function(_0x337e2d){while(--_0x337e2d){_0x465079['push'](_0x465079['shift']());}};_0xd62a5e(++_0x24bce3);}(_0x5f66,0x1a0));var _0x65f6=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5f66[_0x164eca];return _0x2ce562;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'body':{'type':Sequelize['TEXT'](_0x65f6('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x65f6('0x2')](_0x65f6('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0x0b0e=['medium','sequelize','TEXT'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x0b0e,0x187));var _0xe0b0=function(_0x133296,_0xe8ff9a){_0x133296=_0x133296-0x0;var _0x193517=_0x0b0e[_0x133296];return _0x193517;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'body':{'type':Sequelize[_0xe0b0('0x1')]('medium'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe0b0('0x1')](_0xe0b0('0x2')),'allowNull':![]}};
\ No newline at end of file
index b098d55..2a6bbed 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(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x7a54,0x106));var _0x47a5=function(_0x1b796f,_0x5750c5){_0x1b796f=_0x1b796f-0x0;var _0x58cfa1=_0x7a54[_0x1b796f];return _0x58cfa1;};'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(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0x7a54,0x106));var _0x47a5=function(_0x2961de,_0x25d3d1){_0x2961de=_0x2961de-0x0;var _0x5e05f8=_0x7a54[_0x2961de];return _0x5e05f8;};'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 38d5612..22dd678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0361=['setMaxListeners','remove','emit','hook','exports','../../mysqldb','ChatOfflineMessage'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x0361,0x91));var _0x1036=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0361[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x1036('0x0'))['db'][_0x1036('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x1036('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x1036('0x3')};function emitEvent(_0x2774ae){return function(_0x22d491,_0x44d7af,_0x549761){ChatOfflineMessageEvents[_0x1036('0x4')](_0x2774ae+':'+_0x22d491['id'],_0x22d491);ChatOfflineMessageEvents[_0x1036('0x4')](_0x2774ae,_0x22d491);_0x549761(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x1036('0x5')](e,emitEvent(event));}}module[_0x1036('0x6')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0xd906=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatOfflineMessage'];(function(_0x19bc2b,_0x1fac70){var _0x4a0f75=function(_0x204000){while(--_0x204000){_0x19bc2b['push'](_0x19bc2b['shift']());}};_0x4a0f75(++_0x1fac70);}(_0xd906,0x197));var _0x6d90=function(_0x394d98,_0x40c4dc){_0x394d98=_0x394d98-0x0;var _0x377709=_0xd906[_0x394d98];return _0x377709;};'use strict';var EventEmitter=require(_0x6d90('0x0'));var ChatOfflineMessage=require(_0x6d90('0x1'))['db'][_0x6d90('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x6d90('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6d90('0x4'),'afterDestroy':_0x6d90('0x5')};function emitEvent(_0x4d6081){return function(_0x4f7015,_0x2d1d56,_0x73af2a){ChatOfflineMessageEvents[_0x6d90('0x6')](_0x4d6081+':'+_0x4f7015['id'],_0x4f7015);ChatOfflineMessageEvents[_0x6d90('0x6')](_0x4d6081,_0x4f7015);_0x73af2a(null);};}for(var e in events){if(events[_0x6d90('0x7')](e)){var event=events[e];ChatOfflineMessage[_0x6d90('0x8')](e,emitEvent(event));}}module[_0x6d90('0x9')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 659b90e..c2b7052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2460=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x2460,0x142));var _0x0246=function(_0xd6004d,_0xe6e117){_0xd6004d=_0xd6004d-0x0;var _0x587c73=_0x2460[_0xd6004d];return _0x587c73;};'use strict';var attributes=require(_0x0246('0x0'));module[_0x0246('0x1')]=function(_0x53b388){return _0x53b388[_0x0246('0x2')](_0x0246('0x3'),attributes,{'tableName':_0x0246('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0246('0x5'),'collate':_0x0246('0x6')});};
\ No newline at end of file
+var _0xa9b7=['./chatOfflineMessage.attributes','exports','define'];(function(_0x570408,_0x47dfc0){var _0x1990bf=function(_0x4dc2c2){while(--_0x4dc2c2){_0x570408['push'](_0x570408['shift']());}};_0x1990bf(++_0x47dfc0);}(_0xa9b7,0x13e));var _0x7a9b=function(_0xc908d4,_0xf98162){_0xc908d4=_0xc908d4-0x0;var _0x330143=_0xa9b7[_0xc908d4];return _0x330143;};'use strict';var attributes=require(_0x7a9b('0x0'));module[_0x7a9b('0x1')]=function(_0x2dfa99){return _0x2dfa99[_0x7a9b('0x2')]('ChatOfflineMessage',attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index b7757ac..3efdb15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54eb=['ioredis','../../config/utils','rpc','jayson/promise','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x2ee20b,_0x456279){var _0x487349=function(_0x55b14c){while(--_0x55b14c){_0x2ee20b['push'](_0x2ee20b['shift']());}};_0x487349(++_0x456279);}(_0x54eb,0x6f));var _0xb54e=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x54eb[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xb54e('0x0'));var util=require(_0xb54e('0x1'));var moment=require(_0xb54e('0x2'));var BPromise=require(_0xb54e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb54e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb54e('0x5'));var logger=require('../../config/logger')(_0xb54e('0x6'));var config=require('../../config/environment');var jayson=require(_0xb54e('0x7'));var client=jayson[_0xb54e('0x8')][_0xb54e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x215fbb,_0x582465,_0x3edb2d){return new BPromise(function(_0x4db7c5,_0x54dd69){return client[_0xb54e('0xa')](_0x215fbb,_0x3edb2d)[_0xb54e('0xb')](function(_0x3edcc7){logger[_0xb54e('0xc')](_0xb54e('0xd'),_0x582465,_0xb54e('0xe'));logger[_0xb54e('0xf')](_0xb54e('0x10'),_0x582465,_0xb54e('0xe'),JSON[_0xb54e('0x11')](_0x3edcc7));if(_0x3edcc7[_0xb54e('0x12')]){if(_0x3edcc7[_0xb54e('0x12')][_0xb54e('0x13')]===0x1f4){logger[_0xb54e('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x582465,_0x3edcc7['error'][_0xb54e('0x14')]);return _0x54dd69(_0x3edcc7[_0xb54e('0x12')]['message']);}logger[_0xb54e('0x12')](_0xb54e('0xd'),_0x582465,_0x3edcc7[_0xb54e('0x12')][_0xb54e('0x14')]);return _0x4db7c5(_0x3edcc7['error'][_0xb54e('0x14')]);}else{logger[_0xb54e('0xc')](_0xb54e('0xd'),_0x582465,_0xb54e('0xe'));_0x4db7c5(_0x3edcc7[_0xb54e('0x15')][_0xb54e('0x14')]);}})[_0xb54e('0x16')](function(_0x3731f9){logger[_0xb54e('0x12')](_0xb54e('0xd'),_0x582465,_0x3731f9);_0x54dd69(_0x3731f9);});});}
\ No newline at end of file
+var _0xedc2=['info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then'];(function(_0x4f3882,_0x5127a0){var _0x567c35=function(_0x3515d0){while(--_0x3515d0){_0x4f3882['push'](_0x4f3882['shift']());}};_0x567c35(++_0x5127a0);}(_0xedc2,0x183));var _0x2edc=function(_0xe56e0a,_0x51667b){_0xe56e0a=_0xe56e0a-0x0;var _0x2f8b29=_0xedc2[_0xe56e0a];return _0x2f8b29;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2edc('0x0'));var fs=require('fs');var Redis=require(_0x2edc('0x1'));var db=require(_0x2edc('0x2'))['db'];var utils=require(_0x2edc('0x3'));var logger=require(_0x2edc('0x4'))(_0x2edc('0x5'));var config=require(_0x2edc('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2b08af,_0x476e2f,_0x400875){return new BPromise(function(_0x4712ee,_0x2a13cd){return client[_0x2edc('0x7')](_0x2b08af,_0x400875)[_0x2edc('0x8')](function(_0x3305ef){logger[_0x2edc('0x9')](_0x2edc('0xa'),_0x476e2f,_0x2edc('0xb'));logger[_0x2edc('0xc')](_0x2edc('0xd'),_0x476e2f,_0x2edc('0xb'),JSON[_0x2edc('0xe')](_0x3305ef));if(_0x3305ef[_0x2edc('0xf')]){if(_0x3305ef[_0x2edc('0xf')]['code']===0x1f4){logger[_0x2edc('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x476e2f,_0x3305ef[_0x2edc('0xf')]['message']);return _0x2a13cd(_0x3305ef['error'][_0x2edc('0x10')]);}logger[_0x2edc('0xf')](_0x2edc('0xa'),_0x476e2f,_0x3305ef['error'][_0x2edc('0x10')]);return _0x4712ee(_0x3305ef['error'][_0x2edc('0x10')]);}else{logger[_0x2edc('0x9')](_0x2edc('0xa'),_0x476e2f,_0x2edc('0xb'));_0x4712ee(_0x3305ef[_0x2edc('0x11')][_0x2edc('0x10')]);}})['catch'](function(_0x5a6e60){logger[_0x2edc('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x476e2f,_0x5a6e60);_0x2a13cd(_0x5a6e60);});});}
\ No newline at end of file
index cd5f389..36cff39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33d4=['put','/:id','exports','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','show','post','create'];(function(_0xb15d44,_0x56f418){var _0x355231=function(_0x2cb12d){while(--_0x2cb12d){_0xb15d44['push'](_0xb15d44['shift']());}};_0x355231(++_0x56f418);}(_0x33d4,0xb7));var _0x433d=function(_0x40aab9,_0x10d01e){_0x40aab9=_0x40aab9-0x0;var _0x35f74d=_0x33d4[_0x40aab9];return _0x35f74d;};'use strict';var multer=require('multer');var util=require(_0x433d('0x0'));var path=require('path');var timeout=require(_0x433d('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x433d('0x2'));var auth=require(_0x433d('0x3'));var interaction=require(_0x433d('0x4'));var config=require(_0x433d('0x5'));var controller=require(_0x433d('0x6'));router[_0x433d('0x7')]('/',auth[_0x433d('0x8')](),controller[_0x433d('0x9')]);router[_0x433d('0x7')](_0x433d('0xa'),auth[_0x433d('0x8')](),controller[_0x433d('0xb')]);router['get']('/:id',auth[_0x433d('0x8')](),controller[_0x433d('0xc')]);router[_0x433d('0xd')]('/',auth[_0x433d('0x8')](),controller[_0x433d('0xe')]);router[_0x433d('0xf')](_0x433d('0x10'),auth[_0x433d('0x8')](),controller['update']);router['delete'](_0x433d('0x10'),auth[_0x433d('0x8')](),controller['destroy']);module[_0x433d('0x11')]=router;
\ No newline at end of file
+var _0x36dd=['../../config/environment','./chatOfflineMessage.controller','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x590851,_0x496bee){var _0x3b0115=function(_0x5140cc){while(--_0x5140cc){_0x590851['push'](_0x590851['shift']());}};_0x3b0115(++_0x496bee);}(_0x36dd,0xca));var _0xd36d=function(_0x47a40b,_0x443ecf){_0x47a40b=_0x47a40b-0x0;var _0x19610c=_0x36dd[_0x47a40b];return _0x19610c;};'use strict';var multer=require(_0xd36d('0x0'));var util=require(_0xd36d('0x1'));var path=require('path');var timeout=require(_0xd36d('0x2'));var express=require(_0xd36d('0x3'));var router=express[_0xd36d('0x4')]();var fs_extra=require(_0xd36d('0x5'));var auth=require(_0xd36d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd36d('0x7'));var controller=require(_0xd36d('0x8'));router['get']('/',auth[_0xd36d('0x9')](),controller['index']);router[_0xd36d('0xa')](_0xd36d('0xb'),auth[_0xd36d('0x9')](),controller[_0xd36d('0xc')]);router[_0xd36d('0xa')](_0xd36d('0xd'),auth[_0xd36d('0x9')](),controller[_0xd36d('0xe')]);router['post']('/',auth[_0xd36d('0x9')](),controller[_0xd36d('0xf')]);router[_0xd36d('0x10')](_0xd36d('0xd'),auth[_0xd36d('0x9')](),controller[_0xd36d('0x11')]);router[_0xd36d('0x12')](_0xd36d('0xd'),auth[_0xd36d('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 89fd6a9..bad5141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96d5=['INTEGER','sequelize','exports','STRING','ENUM','timeout','mouseOver'];(function(_0x334eeb,_0x251035){var _0x1c2240=function(_0x7d3a99){while(--_0x7d3a99){_0x334eeb['push'](_0x334eeb['shift']());}};_0x1c2240(++_0x251035);}(_0x96d5,0x8d));var _0x596d=function(_0x1e0ca5,_0x57fd4f){_0x1e0ca5=_0x1e0ca5-0x0;var _0x410923=_0x96d5[_0x1e0ca5];return _0x410923;};'use strict';var Sequelize=require(_0x596d('0x0'));module[_0x596d('0x1')]={'name':{'type':Sequelize[_0x596d('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x596d('0x3')]('mouseOver',_0x596d('0x4')),'defaultValue':_0x596d('0x5')},'selector':{'type':Sequelize[_0x596d('0x2')]},'timeout':{'type':Sequelize[_0x596d('0x6')]}};
\ No newline at end of file
+var _0x5f28=['INTEGER','sequelize','exports','STRING','ENUM','timeout','mouseOver'];(function(_0x36f243,_0x188505){var _0x426436=function(_0x1c8622){while(--_0x1c8622){_0x36f243['push'](_0x36f243['shift']());}};_0x426436(++_0x188505);}(_0x5f28,0x1b3));var _0x85f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5f28[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x85f2('0x0'));module[_0x85f2('0x1')]={'name':{'type':Sequelize[_0x85f2('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x85f2('0x3')]('mouseOver',_0x85f2('0x4')),'defaultValue':_0x85f2('0x5')},'selector':{'type':Sequelize[_0x85f2('0x2')]},'timeout':{'type':Sequelize[_0x85f2('0x6')]}};
\ No newline at end of file
index ee2b441..bb4b6ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0309=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','update','destroy','then','end','error','stack','name','send','show','params','keys','rawAttributes','query','filters','model','attributes','intersection','fields','length','includeAll','include','merge','options','ChatProactiveAction','create','body','find','catch','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x16bc50,_0x2cdca7){var _0x44ecdf=function(_0x4c7951){while(--_0x4c7951){_0x16bc50['push'](_0x16bc50['shift']());}};_0x44ecdf(++_0x2cdca7);}(_0x0309,0x165));var _0x9030=function(_0x376de2,_0x493e28){_0x376de2=_0x376de2-0x0;var _0x24383e=_0x0309[_0x376de2];return _0x24383e;};'use strict';var emlformat=require(_0x9030('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9030('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9030('0x2'));var moment=require(_0x9030('0x3'));var BPromise=require(_0x9030('0x4'));var Mustache=require(_0x9030('0x5'));var util=require(_0x9030('0x6'));var path=require(_0x9030('0x7'));var sox=require(_0x9030('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9030('0x9'));var _=require(_0x9030('0xa'));var squel=require('squel');var crypto=require(_0x9030('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9030('0xc'));var toCsv=require(_0x9030('0xd'));var querystring=require(_0x9030('0xe'));var Papa=require('papaparse');var Redis=require(_0x9030('0xf'));var authService=require(_0x9030('0x10'));var qs=require(_0x9030('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9030('0x12'));var logger=require(_0x9030('0x13'))(_0x9030('0x14'));var utils=require(_0x9030('0x15'));var config=require(_0x9030('0x16'));var licenseUtil=require(_0x9030('0x17'));var db=require(_0x9030('0x18'))['db'];function respondWithStatusCode(_0x5ee60f,_0x45e28a){_0x45e28a=_0x45e28a||0xcc;return function(_0x3274c9){if(_0x3274c9){return _0x5ee60f[_0x9030('0x19')](_0x45e28a);}return _0x5ee60f[_0x9030('0x1a')](_0x45e28a)['end']();};}function respondWithResult(_0x28a505,_0x2dc875){_0x2dc875=_0x2dc875||0xc8;return function(_0x4a7465){if(_0x4a7465){return _0x28a505[_0x9030('0x1a')](_0x2dc875)[_0x9030('0x1b')](_0x4a7465);}};}function respondWithFilteredResult(_0x1615ab,_0x111f3b){return function(_0x1776e6){if(_0x1776e6){var _0xfc6f46=typeof _0x111f3b['offset']===_0x9030('0x1c')&&typeof _0x111f3b[_0x9030('0x1d')]===_0x9030('0x1c');var _0x37afac=_0x1776e6[_0x9030('0x1e')];var _0x1327ec=_0xfc6f46?0x0:_0x111f3b[_0x9030('0x1f')];var _0x28c035=_0xfc6f46?_0x1776e6[_0x9030('0x1e')]:_0x111f3b[_0x9030('0x1f')]+_0x111f3b[_0x9030('0x1d')];var _0x41d506;if(_0x28c035>=_0x37afac){_0x28c035=_0x37afac;_0x41d506=0xc8;}else{_0x41d506=0xce;}_0x1615ab[_0x9030('0x1a')](_0x41d506);return _0x1615ab[_0x9030('0x20')](_0x9030('0x21'),_0x1327ec+'-'+_0x28c035+'/'+_0x37afac)[_0x9030('0x1b')](_0x1776e6);}return null;};}function patchUpdates(_0x4105ec){return function(_0x4b0792){try{jsonpatch['apply'](_0x4b0792,_0x4105ec,!![]);}catch(_0x364d58){return BPromise[_0x9030('0x22')](_0x364d58);}return _0x4b0792['save']();};}function saveUpdates(_0x80098d,_0x2d28fd){return function(_0x1f806a){if(_0x1f806a){return _0x1f806a[_0x9030('0x23')](_0x80098d)['then'](function(_0x4753b2){return _0x4753b2;});}return null;};}function removeEntity(_0x51aca8,_0x4c8d4a){return function(_0xe65792){if(_0xe65792){return _0xe65792[_0x9030('0x24')]()[_0x9030('0x25')](function(){_0x51aca8['status'](0xcc)[_0x9030('0x26')]();});}};}function handleEntityNotFound(_0x408ce6,_0x35adfe){return function(_0xce2840){if(!_0xce2840){_0x408ce6[_0x9030('0x19')](0x194);}return _0xce2840;};}function handleError(_0x4d6bf9,_0x5ca691){_0x5ca691=_0x5ca691||0x1f4;return function(_0x455eeb){logger[_0x9030('0x27')](_0x455eeb[_0x9030('0x28')]);if(_0x455eeb[_0x9030('0x29')]){delete _0x455eeb[_0x9030('0x29')];}_0x4d6bf9[_0x9030('0x1a')](_0x5ca691)[_0x9030('0x2a')](_0x455eeb);};}exports[_0x9030('0x2b')]=function(_0x11c47d,_0x3be936){var _0x1d0c5c={'raw':!![],'where':{'id':_0x11c47d[_0x9030('0x2c')]['id']}},_0x528f75={};_0x528f75['model']=_[_0x9030('0x2d')](db['ChatProactiveAction'][_0x9030('0x2e')]);_0x528f75['query']=_[_0x9030('0x2d')](_0x11c47d[_0x9030('0x2f')]);_0x528f75[_0x9030('0x30')]=_['intersection'](_0x528f75[_0x9030('0x31')],_0x528f75[_0x9030('0x2f')]);_0x1d0c5c[_0x9030('0x32')]=_[_0x9030('0x33')](_0x528f75[_0x9030('0x31')],qs[_0x9030('0x34')](_0x11c47d[_0x9030('0x2f')][_0x9030('0x34')]));_0x1d0c5c[_0x9030('0x32')]=_0x1d0c5c[_0x9030('0x32')][_0x9030('0x35')]?_0x1d0c5c[_0x9030('0x32')]:_0x528f75[_0x9030('0x31')];if(_0x11c47d[_0x9030('0x2f')][_0x9030('0x36')]){_0x1d0c5c[_0x9030('0x37')]=[{'all':!![]}];}_0x1d0c5c=_[_0x9030('0x38')]({},_0x1d0c5c,_0x11c47d[_0x9030('0x39')]);return db['ChatProactiveAction']['find'](_0x1d0c5c)[_0x9030('0x25')](handleEntityNotFound(_0x3be936,null))[_0x9030('0x25')](respondWithResult(_0x3be936,null))['catch'](handleError(_0x3be936,null));};exports['create']=function(_0x2f5d3f,_0x3c8645){return db[_0x9030('0x3a')][_0x9030('0x3b')](_0x2f5d3f['body'],{})[_0x9030('0x25')](respondWithResult(_0x3c8645,0xc9))['catch'](handleError(_0x3c8645,null));};exports[_0x9030('0x23')]=function(_0x9fcce9,_0x4e12a0){if(_0x9fcce9[_0x9030('0x3c')]['id']){delete _0x9fcce9[_0x9030('0x3c')]['id'];}return db[_0x9030('0x3a')]['find']({'where':{'id':_0x9fcce9[_0x9030('0x2c')]['id']}})['then'](handleEntityNotFound(_0x4e12a0,null))[_0x9030('0x25')](saveUpdates(_0x9fcce9['body'],null))[_0x9030('0x25')](respondWithResult(_0x4e12a0,null))['catch'](handleError(_0x4e12a0,null));};exports[_0x9030('0x24')]=function(_0x11d0d8,_0x3dc670){return db[_0x9030('0x3a')][_0x9030('0x3d')]({'where':{'id':_0x11d0d8[_0x9030('0x2c')]['id']}})[_0x9030('0x25')](handleEntityNotFound(_0x3dc670,null))[_0x9030('0x25')](removeEntity(_0x3dc670,null))[_0x9030('0x3e')](handleError(_0x3dc670,null));};
\ No newline at end of file
+var _0x5e11=['body','find','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','stack','send','params','keys','rawAttributes','query','attributes','model','fields','length','merge','catch','create','ChatProactiveAction'];(function(_0x4613d5,_0x50cdfd){var _0x18a5b8=function(_0x26bb02){while(--_0x26bb02){_0x4613d5['push'](_0x4613d5['shift']());}};_0x18a5b8(++_0x50cdfd);}(_0x5e11,0x1c3));var _0x15e1=function(_0x16a223,_0x31b6e8){_0x16a223=_0x16a223-0x0;var _0x5ded66=_0x5e11[_0x16a223];return _0x5ded66;};'use strict';var emlformat=require(_0x15e1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x15e1('0x1'));var jsonpatch=require(_0x15e1('0x2'));var rp=require(_0x15e1('0x3'));var moment=require(_0x15e1('0x4'));var BPromise=require(_0x15e1('0x5'));var Mustache=require(_0x15e1('0x6'));var util=require('util');var path=require(_0x15e1('0x7'));var sox=require('sox');var csv=require(_0x15e1('0x8'));var ejs=require(_0x15e1('0x9'));var fs=require('fs');var fs_extra=require(_0x15e1('0xa'));var _=require(_0x15e1('0xb'));var squel=require(_0x15e1('0xc'));var crypto=require('crypto');var jsforce=require(_0x15e1('0xd'));var deskjs=require(_0x15e1('0xe'));var toCsv=require(_0x15e1('0x8'));var querystring=require(_0x15e1('0xf'));var Papa=require('papaparse');var Redis=require(_0x15e1('0x10'));var authService=require(_0x15e1('0x11'));var qs=require(_0x15e1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x15e1('0x13'));var logger=require(_0x15e1('0x14'))(_0x15e1('0x15'));var utils=require(_0x15e1('0x16'));var config=require(_0x15e1('0x17'));var licenseUtil=require(_0x15e1('0x18'));var db=require(_0x15e1('0x19'))['db'];function respondWithStatusCode(_0xacda2f,_0x3d423c){_0x3d423c=_0x3d423c||0xcc;return function(_0x11486f){if(_0x11486f){return _0xacda2f[_0x15e1('0x1a')](_0x3d423c);}return _0xacda2f[_0x15e1('0x1b')](_0x3d423c)['end']();};}function respondWithResult(_0x3629ea,_0x158d0f){_0x158d0f=_0x158d0f||0xc8;return function(_0x3db265){if(_0x3db265){return _0x3629ea['status'](_0x158d0f)[_0x15e1('0x1c')](_0x3db265);}};}function respondWithFilteredResult(_0x4647a0,_0x499bd3){return function(_0x381bb4){if(_0x381bb4){var _0xa1ba90=typeof _0x499bd3[_0x15e1('0x1d')]===_0x15e1('0x1e')&&typeof _0x499bd3[_0x15e1('0x1f')]===_0x15e1('0x1e');var _0x376500=_0x381bb4[_0x15e1('0x20')];var _0x46cd6f=_0xa1ba90?0x0:_0x499bd3[_0x15e1('0x1d')];var _0x440c73=_0xa1ba90?_0x381bb4[_0x15e1('0x20')]:_0x499bd3[_0x15e1('0x1d')]+_0x499bd3[_0x15e1('0x1f')];var _0x1b3b13;if(_0x440c73>=_0x376500){_0x440c73=_0x376500;_0x1b3b13=0xc8;}else{_0x1b3b13=0xce;}_0x4647a0[_0x15e1('0x1b')](_0x1b3b13);return _0x4647a0['set'](_0x15e1('0x21'),_0x46cd6f+'-'+_0x440c73+'/'+_0x376500)[_0x15e1('0x1c')](_0x381bb4);}return null;};}function patchUpdates(_0x5de6d9){return function(_0x4712fe){try{jsonpatch[_0x15e1('0x22')](_0x4712fe,_0x5de6d9,!![]);}catch(_0x9a97d1){return BPromise[_0x15e1('0x23')](_0x9a97d1);}return _0x4712fe['save']();};}function saveUpdates(_0x522dd0,_0x1648f4){return function(_0x160c65){if(_0x160c65){return _0x160c65[_0x15e1('0x24')](_0x522dd0)[_0x15e1('0x25')](function(_0x2d91ee){return _0x2d91ee;});}return null;};}function removeEntity(_0x2e3f31,_0x2e8796){return function(_0x59369e){if(_0x59369e){return _0x59369e['destroy']()[_0x15e1('0x25')](function(){_0x2e3f31[_0x15e1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b89a3,_0x3d0f0f){return function(_0x130ed6){if(!_0x130ed6){_0x4b89a3['sendStatus'](0x194);}return _0x130ed6;};}function handleError(_0x477ff1,_0x1c8538){_0x1c8538=_0x1c8538||0x1f4;return function(_0x21d188){logger[_0x15e1('0x26')](_0x21d188[_0x15e1('0x27')]);if(_0x21d188['name']){delete _0x21d188['name'];}_0x477ff1['status'](_0x1c8538)[_0x15e1('0x28')](_0x21d188);};}exports['show']=function(_0x2dd839,_0x23664b){var _0x201b53={'raw':!![],'where':{'id':_0x2dd839[_0x15e1('0x29')]['id']}},_0x16c14e={};_0x16c14e['model']=_[_0x15e1('0x2a')](db['ChatProactiveAction'][_0x15e1('0x2b')]);_0x16c14e['query']=_['keys'](_0x2dd839[_0x15e1('0x2c')]);_0x16c14e['filters']=_['intersection'](_0x16c14e['model'],_0x16c14e[_0x15e1('0x2c')]);_0x201b53[_0x15e1('0x2d')]=_['intersection'](_0x16c14e[_0x15e1('0x2e')],qs[_0x15e1('0x2f')](_0x2dd839['query'][_0x15e1('0x2f')]));_0x201b53[_0x15e1('0x2d')]=_0x201b53[_0x15e1('0x2d')][_0x15e1('0x30')]?_0x201b53['attributes']:_0x16c14e[_0x15e1('0x2e')];if(_0x2dd839[_0x15e1('0x2c')]['includeAll']){_0x201b53['include']=[{'all':!![]}];}_0x201b53=_[_0x15e1('0x31')]({},_0x201b53,_0x2dd839['options']);return db['ChatProactiveAction']['find'](_0x201b53)[_0x15e1('0x25')](handleEntityNotFound(_0x23664b,null))[_0x15e1('0x25')](respondWithResult(_0x23664b,null))[_0x15e1('0x32')](handleError(_0x23664b,null));};exports[_0x15e1('0x33')]=function(_0x2616f7,_0x348acd){return db[_0x15e1('0x34')][_0x15e1('0x33')](_0x2616f7[_0x15e1('0x35')],{})[_0x15e1('0x25')](respondWithResult(_0x348acd,0xc9))[_0x15e1('0x32')](handleError(_0x348acd,null));};exports[_0x15e1('0x24')]=function(_0x49866d,_0x4c74e9){if(_0x49866d['body']['id']){delete _0x49866d[_0x15e1('0x35')]['id'];}return db['ChatProactiveAction'][_0x15e1('0x36')]({'where':{'id':_0x49866d['params']['id']}})['then'](handleEntityNotFound(_0x4c74e9,null))[_0x15e1('0x25')](saveUpdates(_0x49866d[_0x15e1('0x35')],null))[_0x15e1('0x25')](respondWithResult(_0x4c74e9,null))[_0x15e1('0x32')](handleError(_0x4c74e9,null));};exports[_0x15e1('0x37')]=function(_0x2cf4f6,_0x55825b){return db[_0x15e1('0x34')][_0x15e1('0x36')]({'where':{'id':_0x2cf4f6['params']['id']}})['then'](handleEntityNotFound(_0x55825b,null))['then'](removeEntity(_0x55825b,null))[_0x15e1('0x32')](handleError(_0x55825b,null));};
\ No newline at end of file
index ee5e4a6..7c2ae62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326c=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','ChatProactiveAction','chat_proactive_actions','lodash'];(function(_0x497f52,_0x2e92e8){var _0xdb8d71=function(_0x43e897){while(--_0x43e897){_0x497f52['push'](_0x497f52['shift']());}};_0xdb8d71(++_0x2e92e8);}(_0x326c,0x11f));var _0xc326=function(_0x51e579,_0x5a22f3){_0x51e579=_0x51e579-0x0;var _0x3ff848=_0x326c[_0x51e579];return _0x3ff848;};'use strict';var _=require(_0xc326('0x0'));var util=require(_0xc326('0x1'));var logger=require(_0xc326('0x2'))(_0xc326('0x3'));var moment=require(_0xc326('0x4'));var BPromise=require('bluebird');var rp=require(_0xc326('0x5'));var fs=require('fs');var path=require(_0xc326('0x6'));var rimraf=require(_0xc326('0x7'));var config=require(_0xc326('0x8'));var attributes=require('./chatProactiveAction.attributes');module[_0xc326('0x9')]=function(_0x438939,_0x251e3b){return _0x438939['define'](_0xc326('0xa'),attributes,{'tableName':_0xc326('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4421=['path','rimraf','../../config/environment','./chatProactiveAction.attributes','define','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x44bee9,_0xd35c5b){var _0x4fea9b=function(_0xc363c0){while(--_0xc363c0){_0x44bee9['push'](_0x44bee9['shift']());}};_0x4fea9b(++_0xd35c5b);}(_0x4421,0x18d));var _0x1442=function(_0x55010f,_0x338587){_0x55010f=_0x55010f-0x0;var _0x3cf4a7=_0x4421[_0x55010f];return _0x3cf4a7;};'use strict';var _=require(_0x1442('0x0'));var util=require(_0x1442('0x1'));var logger=require(_0x1442('0x2'))('api');var moment=require(_0x1442('0x3'));var BPromise=require(_0x1442('0x4'));var rp=require(_0x1442('0x5'));var fs=require('fs');var path=require(_0x1442('0x6'));var rimraf=require(_0x1442('0x7'));var config=require(_0x1442('0x8'));var attributes=require(_0x1442('0x9'));module['exports']=function(_0x23dc35,_0x5d7f52){return _0x23dc35[_0x1442('0xa')](_0x1442('0xb'),attributes,{'tableName':_0x1442('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9cd2acb..75ae577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x785a=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','ChatProactiveAction,\x20%s,\x20%s','message','info','result','lodash','moment','bluebird','randomstring'];(function(_0x94320c,_0x10a7e1){var _0x38736d=function(_0x33c7de){while(--_0x33c7de){_0x94320c['push'](_0x94320c['shift']());}};_0x38736d(++_0x10a7e1);}(_0x785a,0xe2));var _0xa785=function(_0x355c6b,_0x5f4e0a){_0x355c6b=_0x355c6b-0x0;var _0x2f4961=_0x785a[_0x355c6b];return _0x2f4961;};'use strict';var _=require(_0xa785('0x0'));var util=require('util');var moment=require(_0xa785('0x1'));var BPromise=require(_0xa785('0x2'));var rs=require(_0xa785('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa785('0x4'))['db'];var utils=require(_0xa785('0x5'));var logger=require(_0xa785('0x6'))(_0xa785('0x7'));var config=require(_0xa785('0x8'));var jayson=require(_0xa785('0x9'));var client=jayson[_0xa785('0xa')][_0xa785('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2ac5e9,_0x398bc3,_0x139064){return new BPromise(function(_0x25bcea,_0x4ab815){return client[_0xa785('0xc')](_0x2ac5e9,_0x139064)[_0xa785('0xd')](function(_0x3fe10b){logger['info']('ChatProactiveAction,\x20%s,\x20%s',_0x398bc3,_0xa785('0xe'));logger[_0xa785('0xf')](_0xa785('0x10'),_0x398bc3,_0xa785('0xe'),JSON['stringify'](_0x3fe10b));if(_0x3fe10b[_0xa785('0x11')]){if(_0x3fe10b['error'][_0xa785('0x12')]===0x1f4){logger[_0xa785('0x11')](_0xa785('0x13'),_0x398bc3,_0x3fe10b[_0xa785('0x11')][_0xa785('0x14')]);return _0x4ab815(_0x3fe10b[_0xa785('0x11')][_0xa785('0x14')]);}logger[_0xa785('0x11')](_0xa785('0x13'),_0x398bc3,_0x3fe10b[_0xa785('0x11')][_0xa785('0x14')]);return _0x25bcea(_0x3fe10b['error']['message']);}else{logger[_0xa785('0x15')](_0xa785('0x13'),_0x398bc3,_0xa785('0xe'));_0x25bcea(_0x3fe10b[_0xa785('0x16')][_0xa785('0x14')]);}})['catch'](function(_0x46d0b5){logger[_0xa785('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x398bc3,_0x46d0b5);_0x4ab815(_0x46d0b5);});});}
\ No newline at end of file
+var _0x8c58=['ioredis','../../config/logger','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','randomstring'];(function(_0x515afd,_0x1a1e91){var _0x536d53=function(_0x1d3a89){while(--_0x1d3a89){_0x515afd['push'](_0x515afd['shift']());}};_0x536d53(++_0x1a1e91);}(_0x8c58,0x123));var _0x88c5=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x8c58[_0x16d10f];return _0x50c823;};'use strict';var _=require('lodash');var util=require(_0x88c5('0x0'));var moment=require('moment');var BPromise=require(_0x88c5('0x1'));var rs=require(_0x88c5('0x2'));var fs=require('fs');var Redis=require(_0x88c5('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x88c5('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x88c5('0x5'));var client=jayson[_0x88c5('0x6')][_0x88c5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x295e46,_0x27709b,_0x2d0dc6){return new BPromise(function(_0x27a696,_0x19f3f9){return client[_0x88c5('0x8')](_0x295e46,_0x2d0dc6)[_0x88c5('0x9')](function(_0x19dc51){logger[_0x88c5('0xa')](_0x88c5('0xb'),_0x27709b,_0x88c5('0xc'));logger[_0x88c5('0xd')](_0x88c5('0xe'),_0x27709b,_0x88c5('0xc'),JSON[_0x88c5('0xf')](_0x19dc51));if(_0x19dc51['error']){if(_0x19dc51[_0x88c5('0x10')][_0x88c5('0x11')]===0x1f4){logger[_0x88c5('0x10')](_0x88c5('0xb'),_0x27709b,_0x19dc51[_0x88c5('0x10')]['message']);return _0x19f3f9(_0x19dc51[_0x88c5('0x10')][_0x88c5('0x12')]);}logger['error'](_0x88c5('0xb'),_0x27709b,_0x19dc51['error'][_0x88c5('0x12')]);return _0x27a696(_0x19dc51['error'][_0x88c5('0x12')]);}else{logger[_0x88c5('0xa')](_0x88c5('0xb'),_0x27709b,_0x88c5('0xc'));_0x27a696(_0x19dc51[_0x88c5('0x13')]['message']);}})[_0x88c5('0x14')](function(_0xb51307){logger[_0x88c5('0x10')](_0x88c5('0xb'),_0x27709b,_0xb51307);_0x19f3f9(_0xb51307);});});}
\ No newline at end of file
index 0b55af4..0480830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','show','post','create','put','isAuthenticated','update','delete','destroy','exports','multer','util'];(function(_0x31741b,_0x281a22){var _0x184f10=function(_0x16c50e){while(--_0x16c50e){_0x31741b['push'](_0x31741b['shift']());}};_0x184f10(++_0x281a22);}(_0x814b,0x1a2));var _0xb814=function(_0x5fe7ce,_0x1a0d39){_0x5fe7ce=_0x5fe7ce-0x0;var _0x3b5793=_0x814b[_0x5fe7ce];return _0x3b5793;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')](_0xb814('0xb'),auth['isAuthenticated'](),controller[_0xb814('0xc')]);router[_0xb814('0xd')]('/',auth['isAuthenticated'](),controller[_0xb814('0xe')]);router[_0xb814('0xf')](_0xb814('0xb'),auth[_0xb814('0x10')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xb'),auth[_0xb814('0x10')](),controller[_0xb814('0x13')]);module[_0xb814('0x14')]=router;
\ No newline at end of file
+var _0x3eea=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','post','create','update','isAuthenticated','destroy','multer'];(function(_0x42347d,_0x2f37a1){var _0x24560a=function(_0x4dbb87){while(--_0x4dbb87){_0x42347d['push'](_0x42347d['shift']());}};_0x24560a(++_0x2f37a1);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x4be2c3,_0x54181f){_0x4be2c3=_0x4be2c3-0x0;var _0x3b36b9=_0x3eea[_0x4be2c3];return _0x3b36b9;};'use strict';var multer=require(_0xa3ee('0x0'));var util=require('util');var path=require(_0xa3ee('0x1'));var timeout=require(_0xa3ee('0x2'));var express=require(_0xa3ee('0x3'));var router=express[_0xa3ee('0x4')]();var fs_extra=require(_0xa3ee('0x5'));var auth=require(_0xa3ee('0x6'));var interaction=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var controller=require(_0xa3ee('0x9'));router[_0xa3ee('0xa')](_0xa3ee('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xa3ee('0xc')]('/',auth['isAuthenticated'](),controller[_0xa3ee('0xd')]);router['put'](_0xa3ee('0xb'),auth['isAuthenticated'](),controller[_0xa3ee('0xe')]);router['delete'](_0xa3ee('0xb'),auth[_0xa3ee('0xf')](),controller[_0xa3ee('0x10')]);module['exports']=router;
\ No newline at end of file
index a626f3e..ddd7707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fe6=['roundrobin','sequelize','STRING','name','ENUM','rrmemory','beepall'];(function(_0x7b078,_0x16ddae){var _0x46191b=function(_0x52f803){while(--_0x52f803){_0x7b078['push'](_0x7b078['shift']());}};_0x46191b(++_0x16ddae);}(_0x4fe6,0x104));var _0x64fe=function(_0x550338,_0x3270f7){_0x550338=_0x550338-0x0;var _0x26eee2=_0x4fe6[_0x550338];return _0x26eee2;};'use strict';var Sequelize=require(_0x64fe('0x0'));module['exports']={'name':{'type':Sequelize[_0x64fe('0x1')],'unique':_0x64fe('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x64fe('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x64fe('0x3')](_0x64fe('0x4'),_0x64fe('0x5'),_0x64fe('0x6'))}};
\ No newline at end of file
+var _0xe0be=['INTEGER','ENUM','rrmemory','beepall','sequelize','exports','STRING','name'];(function(_0xb0846c,_0x2e868b){var _0x318cc6=function(_0x35c8bc){while(--_0x35c8bc){_0xb0846c['push'](_0xb0846c['shift']());}};_0x318cc6(++_0x2e868b);}(_0xe0be,0x1b4));var _0xee0b=function(_0x39b93c,_0x54fc94){_0x39b93c=_0x39b93c-0x0;var _0x4be668=_0xe0be[_0x39b93c];return _0x4be668;};'use strict';var Sequelize=require(_0xee0b('0x0'));module[_0xee0b('0x1')]={'name':{'type':Sequelize[_0xee0b('0x2')],'unique':_0xee0b('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xee0b('0x2')]},'timeout':{'type':Sequelize[_0xee0b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xee0b('0x5')](_0xee0b('0x6'),_0xee0b('0x7'),'roundrobin')}};
\ No newline at end of file
index fb48c76..be9a0cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe082=['lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','jayson/promise','client','http','request','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','info','result','catch','status','end','offset','limit','undefined','count','apply','reject','update','then','get','ChatQueues','UserProfileResource','destroy','sendStatus','stack','name','send','index','map','ChatQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','ChatQueueId','UserChatQueue','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','hasOwnProperty','addTeams','ids','Team','User','online','voicePause','interface','flatMap','Agents','transaction','findOrCreate','forEach','userChatQueue:save','removeTeams','select','field','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','emit','userChatQueue:remove','addAgents','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0xd3e0b9,_0xd80d4d){var _0x470133=function(_0x1aede8){while(--_0x1aede8){_0xd3e0b9['push'](_0xd3e0b9['shift']());}};_0x470133(++_0xd80d4d);}(_0xe082,0x8f));var _0x2e08=function(_0x2fb866,_0x59bc0c){_0x2fb866=_0x2fb866-0x0;var _0x5d310f=_0xe082[_0x2fb866];return _0x5d310f;};'use strict';var emlformat=require(_0x2e08('0x0'));var rimraf=require(_0x2e08('0x1'));var zipdir=require(_0x2e08('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2e08('0x3'));var moment=require(_0x2e08('0x4'));var BPromise=require(_0x2e08('0x5'));var Mustache=require(_0x2e08('0x6'));var util=require(_0x2e08('0x7'));var path=require(_0x2e08('0x8'));var sox=require(_0x2e08('0x9'));var csv=require(_0x2e08('0xa'));var ejs=require(_0x2e08('0xb'));var fs=require('fs');var fs_extra=require(_0x2e08('0xc'));var _=require(_0x2e08('0xd'));var squel=require(_0x2e08('0xe'));var crypto=require(_0x2e08('0xf'));var jsforce=require(_0x2e08('0x10'));var deskjs=require(_0x2e08('0x11'));var toCsv=require('to-csv');var querystring=require(_0x2e08('0x12'));var Papa=require(_0x2e08('0x13'));var Redis=require(_0x2e08('0x14'));var authService=require(_0x2e08('0x15'));var qs=require(_0x2e08('0x16'));var as=require(_0x2e08('0x17'));var hardwareService=require(_0x2e08('0x18'));var logger=require('../../config/logger')(_0x2e08('0x19'));var utils=require(_0x2e08('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x2e08('0x1b'));var db=require(_0x2e08('0x1c'))['db'];config[_0x2e08('0x1d')]=_[_0x2e08('0x1e')](config[_0x2e08('0x1d')],{'host':_0x2e08('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2e08('0x1d')]));require('./chatQueue.socket')['register'](socket);var jayson=require(_0x2e08('0x20'));var client=jayson[_0x2e08('0x21')][_0x2e08('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5447cf,_0x48edaf,_0xa34711,_0xf92c76){return new BPromise(function(_0x33616c,_0x4191ca){var _0x2728cc=_0xf92c76||client;return _0x2728cc[_0x2e08('0x23')](_0x5447cf,_0xa34711)['then'](function(_0x28065d){logger['info']('ChatQueue,\x20%s,\x20%s',_0x48edaf,_0x2e08('0x24'));logger[_0x2e08('0x25')](_0x2e08('0x26'),_0x48edaf,_0x2e08('0x24'),JSON[_0x2e08('0x27')](_0x28065d));if(_0x28065d[_0x2e08('0x28')]){if(_0x28065d[_0x2e08('0x28')][_0x2e08('0x29')]===0x1f4){logger[_0x2e08('0x28')](_0x2e08('0x2a'),_0x48edaf,_0x28065d['error']['message']);return _0x4191ca(_0x28065d[_0x2e08('0x28')][_0x2e08('0x2b')]);}logger[_0x2e08('0x28')](_0x2e08('0x2a'),_0x48edaf,_0x28065d[_0x2e08('0x28')][_0x2e08('0x2b')]);return _0x33616c(_0x28065d[_0x2e08('0x28')]['message']);}else{logger[_0x2e08('0x2c')]('ChatQueue,\x20%s,\x20%s',_0x48edaf,_0x2e08('0x24'));_0x33616c(_0x28065d[_0x2e08('0x2d')][_0x2e08('0x2b')]);}})[_0x2e08('0x2e')](function(_0x4ed60d){logger[_0x2e08('0x28')](_0x2e08('0x2a'),_0x48edaf,_0x4ed60d);_0x4191ca(_0x4ed60d);});});}function respondWithStatusCode(_0x5a8644,_0x470222){_0x470222=_0x470222||0xcc;return function(_0x5ee54b){if(_0x5ee54b){return _0x5a8644['sendStatus'](_0x470222);}return _0x5a8644[_0x2e08('0x2f')](_0x470222)[_0x2e08('0x30')]();};}function respondWithResult(_0x181881,_0xd9ec8b){_0xd9ec8b=_0xd9ec8b||0xc8;return function(_0x286bf3){if(_0x286bf3){return _0x181881['status'](_0xd9ec8b)['json'](_0x286bf3);}};}function respondWithFilteredResult(_0x5728de,_0x13739f){return function(_0x17bffc){if(_0x17bffc){var _0x378d5e=typeof _0x13739f[_0x2e08('0x31')]==='undefined'&&typeof _0x13739f[_0x2e08('0x32')]===_0x2e08('0x33');var _0x2ec485=_0x17bffc['count'];var _0x366b58=_0x378d5e?0x0:_0x13739f['offset'];var _0x100e39=_0x378d5e?_0x17bffc[_0x2e08('0x34')]:_0x13739f[_0x2e08('0x31')]+_0x13739f['limit'];var _0x6516bd;if(_0x100e39>=_0x2ec485){_0x100e39=_0x2ec485;_0x6516bd=0xc8;}else{_0x6516bd=0xce;}_0x5728de[_0x2e08('0x2f')](_0x6516bd);return _0x5728de['set']('Content-Range',_0x366b58+'-'+_0x100e39+'/'+_0x2ec485)['json'](_0x17bffc);}return null;};}function patchUpdates(_0x4e531b){return function(_0x16bc8c){try{jsonpatch[_0x2e08('0x35')](_0x16bc8c,_0x4e531b,!![]);}catch(_0x51cbaf){return BPromise[_0x2e08('0x36')](_0x51cbaf);}return _0x16bc8c['save']();};}function saveUpdates(_0x5f5acb,_0x4585be){return function(_0x5c4e17){if(_0x5c4e17){return _0x5c4e17[_0x2e08('0x37')](_0x5f5acb)[_0x2e08('0x38')](function(_0x432942){return _0x432942;});}return null;};}function removeEntity(_0x9c396d,_0x3c14e4){return function(_0x2d92dd){if(_0x2d92dd){return _0x2d92dd['destroy']()[_0x2e08('0x38')](function(){var _0x281b56=_0x2d92dd[_0x2e08('0x39')]({'plain':!![]});var _0x298559=_0x2e08('0x3a');return db[_0x2e08('0x3b')][_0x2e08('0x3c')]({'where':{'type':_0x298559,'resourceId':_0x281b56['id']}})[_0x2e08('0x38')](function(){return _0x2d92dd;});})[_0x2e08('0x38')](function(){_0x9c396d[_0x2e08('0x2f')](0xcc)[_0x2e08('0x30')]();});}};}function handleEntityNotFound(_0x5d46d9,_0x280609){return function(_0xbe7813){if(!_0xbe7813){_0x5d46d9[_0x2e08('0x3d')](0x194);}return _0xbe7813;};}function handleError(_0x4e16a9,_0x4dd45d){_0x4dd45d=_0x4dd45d||0x1f4;return function(_0x17d842){logger[_0x2e08('0x28')](_0x17d842[_0x2e08('0x3e')]);if(_0x17d842[_0x2e08('0x3f')]){delete _0x17d842[_0x2e08('0x3f')];}_0x4e16a9['status'](_0x4dd45d)[_0x2e08('0x40')](_0x17d842);};}exports[_0x2e08('0x41')]=function(_0xf3d9,_0x26c643){var _0x5ea183={},_0x522277={},_0x3fade8={'count':0x0,'rows':[]};var _0x539858=_[_0x2e08('0x42')](db[_0x2e08('0x43')]['rawAttributes'],function(_0x3676d3){return{'name':_0x3676d3[_0x2e08('0x44')],'type':_0x3676d3[_0x2e08('0x45')][_0x2e08('0x46')]};});_0x522277[_0x2e08('0x47')]=_[_0x2e08('0x42')](_0x539858,_0x2e08('0x3f'));_0x522277[_0x2e08('0x48')]=_[_0x2e08('0x49')](_0xf3d9[_0x2e08('0x48')]);_0x522277[_0x2e08('0x4a')]=_[_0x2e08('0x4b')](_0x522277[_0x2e08('0x47')],_0x522277[_0x2e08('0x48')]);_0x5ea183[_0x2e08('0x4c')]=_['intersection'](_0x522277[_0x2e08('0x47')],qs[_0x2e08('0x4d')](_0xf3d9['query']['fields']));_0x5ea183[_0x2e08('0x4c')]=_0x5ea183['attributes'][_0x2e08('0x4e')]?_0x5ea183[_0x2e08('0x4c')]:_0x522277['model'];if(!_0xf3d9[_0x2e08('0x48')]['hasOwnProperty'](_0x2e08('0x4f'))){_0x5ea183['limit']=qs[_0x2e08('0x32')](_0xf3d9['query'][_0x2e08('0x32')]);_0x5ea183[_0x2e08('0x31')]=qs[_0x2e08('0x31')](_0xf3d9['query'][_0x2e08('0x31')]);}_0x5ea183[_0x2e08('0x50')]=qs['sort'](_0xf3d9[_0x2e08('0x48')][_0x2e08('0x51')]);_0x5ea183[_0x2e08('0x52')]=qs['filters'](_[_0x2e08('0x53')](_0xf3d9[_0x2e08('0x48')],_0x522277[_0x2e08('0x4a')]),_0x539858);if(_0xf3d9['query']['filter']){_0x5ea183['where']=_[_0x2e08('0x54')](_0x5ea183[_0x2e08('0x52')],{'$or':_['map'](_0x539858,function(_0x395807){if(_0x395807['type']!==_0x2e08('0x55')){var _0x5d1a7d={};_0x5d1a7d[_0x395807[_0x2e08('0x3f')]]={'$like':'%'+_0xf3d9[_0x2e08('0x48')][_0x2e08('0x56')]+'%'};return _0x5d1a7d;}})});}_0x5ea183=_[_0x2e08('0x54')]({},_0x5ea183,_0xf3d9[_0x2e08('0x57')]);var _0x5f0c14={'where':_0x5ea183['where']};return db[_0x2e08('0x43')][_0x2e08('0x34')](_0x5f0c14)['then'](function(_0x5d9cdb){_0x3fade8['count']=_0x5d9cdb;if(_0xf3d9[_0x2e08('0x48')][_0x2e08('0x58')]){_0x5ea183[_0x2e08('0x59')]=[{'all':!![]}];}return db[_0x2e08('0x43')][_0x2e08('0x5a')](_0x5ea183);})[_0x2e08('0x38')](function(_0x5bf4cc){_0x3fade8[_0x2e08('0x5b')]=_0x5bf4cc;return _0x3fade8;})[_0x2e08('0x38')](respondWithFilteredResult(_0x26c643,_0x5ea183))[_0x2e08('0x2e')](handleError(_0x26c643,null));};exports[_0x2e08('0x5c')]=function(_0xc03f44,_0x38d78a){var _0x5d5f91={'raw':!![],'where':{'id':_0xc03f44[_0x2e08('0x5d')]['id']}},_0x539ae1={};_0x539ae1['model']=_[_0x2e08('0x49')](db[_0x2e08('0x43')][_0x2e08('0x5e')]);_0x539ae1[_0x2e08('0x48')]=_[_0x2e08('0x49')](_0xc03f44[_0x2e08('0x48')]);_0x539ae1[_0x2e08('0x4a')]=_[_0x2e08('0x4b')](_0x539ae1[_0x2e08('0x47')],_0x539ae1[_0x2e08('0x48')]);_0x5d5f91['attributes']=_[_0x2e08('0x4b')](_0x539ae1[_0x2e08('0x47')],qs['fields'](_0xc03f44[_0x2e08('0x48')][_0x2e08('0x4d')]));_0x5d5f91[_0x2e08('0x4c')]=_0x5d5f91['attributes'][_0x2e08('0x4e')]?_0x5d5f91[_0x2e08('0x4c')]:_0x539ae1[_0x2e08('0x47')];if(_0xc03f44[_0x2e08('0x48')][_0x2e08('0x58')]){_0x5d5f91[_0x2e08('0x59')]=[{'all':!![]}];}_0x5d5f91=_[_0x2e08('0x54')]({},_0x5d5f91,_0xc03f44[_0x2e08('0x57')]);return db['ChatQueue'][_0x2e08('0x5f')](_0x5d5f91)[_0x2e08('0x38')](handleEntityNotFound(_0x38d78a,null))[_0x2e08('0x38')](respondWithResult(_0x38d78a,null))['catch'](handleError(_0x38d78a,null));};exports['create']=function(_0xf00287,_0x138113){return db['ChatQueue'][_0x2e08('0x60')](_0xf00287[_0x2e08('0x61')],{})[_0x2e08('0x38')](function(_0x3b5a2f){var _0x38cc18=_0xf00287[_0x2e08('0x62')]['get']({'plain':!![]});if(!_0x38cc18)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38cc18[_0x2e08('0x63')]===_0x2e08('0x62')){var _0x241dc7=_0x3b5a2f[_0x2e08('0x39')]({'plain':!![]});var _0x4ce2e0='ChatQueues';return db[_0x2e08('0x64')][_0x2e08('0x5f')]({'where':{'name':_0x4ce2e0,'userProfileId':_0x38cc18[_0x2e08('0x65')]},'raw':!![]})[_0x2e08('0x38')](function(_0x2c21fa){if(_0x2c21fa&&_0x2c21fa[_0x2e08('0x66')]===0x0){return db[_0x2e08('0x3b')][_0x2e08('0x60')]({'name':_0x241dc7[_0x2e08('0x3f')],'resourceId':_0x241dc7['id'],'type':_0x2c21fa['name'],'sectionId':_0x2c21fa['id']},{})[_0x2e08('0x38')](function(){return _0x3b5a2f;});}else{return _0x3b5a2f;}})[_0x2e08('0x2e')](function(_0x319b5a){logger['error'](_0x2e08('0x67'),_0x319b5a);throw _0x319b5a;});}return _0x3b5a2f;})[_0x2e08('0x38')](respondWithResult(_0x138113,0xc9))[_0x2e08('0x2e')](handleError(_0x138113,null));};exports['update']=function(_0x28a383,_0x6d4e99){if(_0x28a383[_0x2e08('0x61')]['id']){delete _0x28a383['body']['id'];}return db[_0x2e08('0x43')][_0x2e08('0x5f')]({'where':{'id':_0x28a383[_0x2e08('0x5d')]['id']}})[_0x2e08('0x38')](handleEntityNotFound(_0x6d4e99,null))[_0x2e08('0x38')](saveUpdates(_0x28a383[_0x2e08('0x61')],null))['then'](respondWithResult(_0x6d4e99,null))[_0x2e08('0x2e')](handleError(_0x6d4e99,null));};exports[_0x2e08('0x3c')]=function(_0x3e0eb5,_0x3ae058){return db[_0x2e08('0x43')][_0x2e08('0x5f')]({'where':{'id':_0x3e0eb5[_0x2e08('0x5d')]['id']}})['then'](handleEntityNotFound(_0x3ae058,null))[_0x2e08('0x38')](removeEntity(_0x3ae058,null))['catch'](handleError(_0x3ae058,null));};exports[_0x2e08('0x68')]=function(_0x8b678,_0x5e0fc2){return db['ChatQueue'][_0x2e08('0x68')]()[_0x2e08('0x38')](respondWithResult(_0x5e0fc2,null))['catch'](handleError(_0x5e0fc2,null));};exports[_0x2e08('0x69')]=function(_0x37d8e1,_0x71a2b1,_0x40e35d){var _0x1a8283={'raw':!![],'where':{}},_0x4ef00d={},_0x56f9e8;return db[_0x2e08('0x43')][_0x2e08('0x6a')]({'where':{'id':_0x37d8e1['params']['id']}})['then'](handleEntityNotFound(_0x71a2b1,null))['then'](function(_0x3da576){if(_0x3da576){_0x56f9e8=_0x3da576['get']({'plain':!![]});_0x4ef00d['model']=_[_0x2e08('0x49')](db['UserChatQueue'][_0x2e08('0x5e')]);_0x4ef00d[_0x2e08('0x48')]=_[_0x2e08('0x49')](_0x37d8e1[_0x2e08('0x48')]);_0x4ef00d[_0x2e08('0x4a')]=_[_0x2e08('0x4b')](_0x4ef00d[_0x2e08('0x47')],_0x4ef00d[_0x2e08('0x48')]);_0x1a8283['attributes']=_[_0x2e08('0x4b')](_0x4ef00d[_0x2e08('0x47')],qs[_0x2e08('0x4d')](_0x37d8e1[_0x2e08('0x48')]['fields']));_0x1a8283['attributes']=_0x1a8283[_0x2e08('0x4c')]['length']?_0x1a8283[_0x2e08('0x4c')]:_0x4ef00d[_0x2e08('0x47')];if(!_0x37d8e1['query']['hasOwnProperty'](_0x2e08('0x4f'))){_0x1a8283[_0x2e08('0x32')]=qs[_0x2e08('0x32')](_0x37d8e1[_0x2e08('0x48')][_0x2e08('0x32')]);_0x1a8283[_0x2e08('0x31')]=qs[_0x2e08('0x31')](_0x37d8e1[_0x2e08('0x48')][_0x2e08('0x31')]);}_0x1a8283[_0x2e08('0x50')]=qs[_0x2e08('0x51')](_0x37d8e1[_0x2e08('0x48')][_0x2e08('0x51')]);_0x1a8283[_0x2e08('0x52')]=qs[_0x2e08('0x4a')](_[_0x2e08('0x53')](_0x37d8e1[_0x2e08('0x48')],_0x4ef00d['filters']));_0x1a8283['where'][_0x2e08('0x6b')]=_0x3da576['id'];if(_0x37d8e1[_0x2e08('0x48')][_0x2e08('0x56')]){_0x1a8283[_0x2e08('0x52')]=_[_0x2e08('0x54')](_0x1a8283['where'],{'$or':_['map'](_0x1a8283[_0x2e08('0x4c')],function(_0x248a81){var _0x4cf64c={};_0x4cf64c[_0x248a81]={'$like':'%'+_0x37d8e1[_0x2e08('0x48')][_0x2e08('0x56')]+'%'};return _0x4cf64c;})});}_0x1a8283=_[_0x2e08('0x54')]({},_0x1a8283,_0x37d8e1[_0x2e08('0x57')]);return db[_0x2e08('0x6c')][_0x2e08('0x5a')](_0x1a8283);}})['then'](function(_0x26b41c){if(_0x26b41c){return db['User'][_0x2e08('0x6d')]({'where':{'id':_['map'](_0x26b41c,_0x2e08('0x6e')),'role':_0x2e08('0x6f')},'attributes':['id',_0x2e08('0x3f'),_0x2e08('0x70'),_0x2e08('0x71'),_0x2e08('0x72')]});}})[_0x2e08('0x38')](function(_0xdcd501){if(_0xdcd501){return{'count':_0xdcd501[_0x2e08('0x34')],'rows':_['map'](_0xdcd501['rows'],function(_0x44abba){return{'membername':_0x44abba['name'],'UserId':_0x44abba['id'],'queue_name':_0x56f9e8['name'],'ChatQueueId':_0x56f9e8['id'],'interface':util[_0x2e08('0x73')](_0x2e08('0x74'),_0x2e08('0x75'),_0x44abba[_0x2e08('0x3f')]),'penalty':0x0,'paused':_0x44abba[_0x2e08('0x70')],'createdAt':_0x44abba[_0x2e08('0x72')],'updatedAt':_0x44abba[_0x2e08('0x71')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x71a2b1,_0x1a8283))[_0x2e08('0x2e')](handleError(_0x71a2b1,null));};exports[_0x2e08('0x76')]=function(_0x41073e,_0x334313,_0x34387d){var _0x1d6a66={};var _0xfc744c={};var _0x2dbc27;var _0x233841;return db[_0x2e08('0x43')]['findOne']({'where':{'id':_0x41073e[_0x2e08('0x5d')]['id']}})['then'](handleEntityNotFound(_0x334313,null))[_0x2e08('0x38')](function(_0x4e0430){if(_0x4e0430){_0x2dbc27=_0x4e0430;_0xfc744c[_0x2e08('0x47')]=_[_0x2e08('0x49')](db['Team'][_0x2e08('0x5e')]);_0xfc744c['query']=_[_0x2e08('0x49')](_0x41073e[_0x2e08('0x48')]);_0xfc744c[_0x2e08('0x4a')]=_['intersection'](_0xfc744c['model'],_0xfc744c[_0x2e08('0x48')]);_0x1d6a66['attributes']=_[_0x2e08('0x4b')](_0xfc744c[_0x2e08('0x47')],qs[_0x2e08('0x4d')](_0x41073e[_0x2e08('0x48')][_0x2e08('0x4d')]));_0x1d6a66[_0x2e08('0x4c')]=_0x1d6a66[_0x2e08('0x4c')][_0x2e08('0x4e')]?_0x1d6a66[_0x2e08('0x4c')]:_0xfc744c[_0x2e08('0x47')];_0x1d6a66['order']=qs[_0x2e08('0x51')](_0x41073e['query'][_0x2e08('0x51')]);_0x1d6a66['where']=qs[_0x2e08('0x4a')](_['pick'](_0x41073e[_0x2e08('0x48')],_0xfc744c[_0x2e08('0x4a')]));if(_0x41073e['query'][_0x2e08('0x56')]){_0x1d6a66[_0x2e08('0x52')]=_[_0x2e08('0x54')](_0x1d6a66[_0x2e08('0x52')],{'$or':_[_0x2e08('0x42')](_0x1d6a66['attributes'],function(_0x38e112){var _0x2aae1c={};_0x2aae1c[_0x38e112]={'$like':'%'+_0x41073e['query'][_0x2e08('0x56')]+'%'};return _0x2aae1c;})});}_0x1d6a66=_[_0x2e08('0x54')]({},_0x1d6a66,_0x41073e[_0x2e08('0x57')]);return _0x2dbc27[_0x2e08('0x76')](_0x1d6a66);}})[_0x2e08('0x38')](function(_0x1a95af){if(_0x1a95af){_0x233841=_0x1a95af[_0x2e08('0x4e')];if(!_0x41073e['query'][_0x2e08('0x77')](_0x2e08('0x4f'))){_0x1d6a66['limit']=qs[_0x2e08('0x32')](_0x41073e['query'][_0x2e08('0x32')]);_0x1d6a66[_0x2e08('0x31')]=qs[_0x2e08('0x31')](_0x41073e['query'][_0x2e08('0x31')]);}return _0x2dbc27['getTeams'](_0x1d6a66);}})[_0x2e08('0x38')](function(_0x345213){if(_0x345213){return _0x345213?{'count':_0x233841,'rows':_0x345213}:null;}})[_0x2e08('0x38')](respondWithResult(_0x334313,null))['catch'](handleError(_0x334313,null));};exports[_0x2e08('0x78')]=function(_0x27ac66,_0xb14fe9,_0x148a4c){var _0x18d806=_0x27ac66[_0x2e08('0x61')][_0x2e08('0x79')];return db[_0x2e08('0x7a')][_0x2e08('0x5a')]({'where':{'id':_0x18d806},'attributes':['id'],'include':[{'model':db[_0x2e08('0x7b')],'as':'Agents','attributes':['id',_0x2e08('0x3f'),_0x2e08('0x7c'),_0x2e08('0x7d'),_0x2e08('0x7e')],'raw':!![]}]})['then'](function(_0x2bea47){if(_0x2bea47){var _0x10fdb2=_[_0x2e08('0x7f')](_0x2bea47,function(_0x3ef6a3){var _0x13d4eb=_0x3ef6a3['get']({'plain':!![]});return _0x13d4eb[_0x2e08('0x80')];});return db['ChatQueue'][_0x2e08('0x5f')]({'where':{'id':_0x27ac66[_0x2e08('0x5d')]['id']}})[_0x2e08('0x38')](function(_0x498514){return db['sequelize'][_0x2e08('0x81')](function(_0x4662de){return _0x498514[_0x2e08('0x78')](_0x18d806,{'transaction':_0x4662de})['then'](function(){return BPromise['each'](_0x10fdb2,function(_0x327007){return db[_0x2e08('0x6c')][_0x2e08('0x82')]({'where':{'UserId':_0x327007['id'],'ChatQueueId':_0x27ac66[_0x2e08('0x5d')]['id']},'transaction':_0x4662de});});})[_0x2e08('0x38')](function(){_0x10fdb2[_0x2e08('0x83')](function(_0x48f5c7){socket['emit'](_0x2e08('0x84'),{'UserId':_0x48f5c7['id'],'ChatQueueId':_0x498514['id']});});});});});}})[_0x2e08('0x38')](respondWithStatusCode(_0xb14fe9,null))[_0x2e08('0x2e')](handleError(_0xb14fe9,null));};exports[_0x2e08('0x85')]=function(_0x1218a3,_0x2c4d32,_0x4f8b64){return db['Team'][_0x2e08('0x5a')]({'where':{'id':_0x1218a3[_0x2e08('0x48')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x2e08('0x80'),'attributes':['id'],'raw':!![]}]})[_0x2e08('0x38')](handleEntityNotFound(_0x2c4d32,null))[_0x2e08('0x38')](function(_0x14afe7){var _0x233f6b=_['map'](_0x14afe7,'id');var _0x9aa8e2=[];var _0x6b611c=[];var _0x2caa44=squel[_0x2e08('0x86')]();_0x2caa44[_0x2e08('0x87')]('tq.TeamId')['from']('team_has_chat_queues','tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x2e08('0x52')](_0x2e08('0x88'),_0x1218a3[_0x2e08('0x5d')]['id']);for(var _0x1cd588=0x0;_0x1cd588<_0x14afe7[_0x2e08('0x4e')];_0x1cd588+=0x1){let _0x5a085a=_0x14afe7[_0x1cd588];for(var _0x3f2de4=0x0;_0x3f2de4<_0x5a085a[_0x2e08('0x80')]['length'];_0x3f2de4+=0x1){let _0x58abe7=_0x5a085a[_0x2e08('0x80')][_0x3f2de4];var _0x4242d1=_0x2caa44['clone']();_0x4242d1[_0x2e08('0x52')](_0x2e08('0x89'),_0x58abe7['id']);_0x6b611c[_0x2e08('0x8a')](db[_0x2e08('0x8b')][_0x2e08('0x48')](_0x4242d1['toString'](),{'type':db[_0x2e08('0x8b')][_0x2e08('0x8c')][_0x2e08('0x8d')]})[_0x2e08('0x38')](function(_0x5b6032){if(_0x5b6032['length']===0x1){return _0x58abe7['id'];}else{var _0x17508f=_[_0x2e08('0x8e')](_[_0x2e08('0x42')](_0x5b6032,_0x2e08('0x8f')),function(_0x22ff3c){return _[_0x2e08('0x90')](_0x233f6b,_0x22ff3c);});if(_0x17508f){return _0x58abe7['id'];}}}));}}return BPromise[_0x2e08('0x91')](_0x6b611c)[_0x2e08('0x38')](function(_0x12a529){_0x9aa8e2=_(_0x9aa8e2)[_0x2e08('0x92')](_0x12a529)[_0x2e08('0x93')]()[_0x2e08('0x94')]();return db[_0x2e08('0x43')]['find']({'where':{'id':_0x1218a3[_0x2e08('0x5d')]['id']}})[_0x2e08('0x38')](function(_0x40af36){return db[_0x2e08('0x8b')][_0x2e08('0x81')](function(_0x58e446){return _0x40af36[_0x2e08('0x85')](_0x1218a3[_0x2e08('0x48')][_0x2e08('0x79')],{'transaction':_0x58e446})[_0x2e08('0x38')](function(){if(!_[_0x2e08('0x95')](_0x9aa8e2)){return _0x40af36['removeAgents'](_0x9aa8e2,{'transaction':_0x58e446});}})[_0x2e08('0x38')](function(){_0x9aa8e2[_0x2e08('0x83')](function(_0x2700f5){socket[_0x2e08('0x96')](_0x2e08('0x97'),{'UserId':_0x2700f5,'ChatQueueId':_0x40af36['id']});});});});});});})[_0x2e08('0x38')](respondWithStatusCode(_0x2c4d32,null))[_0x2e08('0x2e')](handleError(_0x2c4d32,null));};exports[_0x2e08('0x98')]=function(_0x3e2ead,_0x297380,_0x11b6f1){return db[_0x2e08('0x43')][_0x2e08('0x5f')]({'where':{'id':_0x3e2ead[_0x2e08('0x5d')]['id']}})[_0x2e08('0x38')](handleEntityNotFound(_0x297380,null))[_0x2e08('0x38')](function(_0x236944){if(_0x236944){return _0x236944[_0x2e08('0x98')](_0x3e2ead[_0x2e08('0x61')][_0x2e08('0x79')],_['omit'](_0x3e2ead[_0x2e08('0x61')],['ids','id'])||{})['spread'](function(_0x6c6aab){for(var _0x2bf52f=0x0;_0x2bf52f<_0x3e2ead[_0x2e08('0x61')]['ids'][_0x2e08('0x4e')];_0x2bf52f+=0x1){socket[_0x2e08('0x96')](_0x2e08('0x84'),{'UserId':Number(_0x3e2ead[_0x2e08('0x61')][_0x2e08('0x79')][_0x2bf52f]),'ChatQueueId':Number(_0x3e2ead[_0x2e08('0x5d')]['id'])});}return _0x6c6aab;});}})[_0x2e08('0x38')](respondWithResult(_0x297380,null))[_0x2e08('0x2e')](handleError(_0x297380,null));};exports[_0x2e08('0x99')]=function(_0x1880e6,_0x3802b3,_0x38cf62){return db['ChatQueue'][_0x2e08('0x5f')]({'where':{'id':_0x1880e6[_0x2e08('0x5d')]['id']}})['then'](handleEntityNotFound(_0x3802b3,null))[_0x2e08('0x38')](function(_0x5bf6ab){if(_0x5bf6ab){return _0x5bf6ab['removeAgents'](_0x1880e6[_0x2e08('0x48')][_0x2e08('0x79')])[_0x2e08('0x38')](function(){if(_[_0x2e08('0x9a')](_0x1880e6[_0x2e08('0x48')][_0x2e08('0x79')])){for(var _0x1d4b82=0x0;_0x1d4b82<_0x1880e6['query'][_0x2e08('0x79')][_0x2e08('0x4e')];_0x1d4b82+=0x1){socket[_0x2e08('0x96')](_0x2e08('0x97'),{'UserId':Number(_0x1880e6[_0x2e08('0x48')][_0x2e08('0x79')][_0x1d4b82]),'ChatQueueId':Number(_0x1880e6[_0x2e08('0x5d')]['id'])});}}else{socket[_0x2e08('0x96')]('userChatQueue:remove',{'UserId':Number(_0x1880e6[_0x2e08('0x48')][_0x2e08('0x79')]),'ChatQueueId':Number(_0x1880e6[_0x2e08('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0x3802b3,null))[_0x2e08('0x2e')](handleError(_0x3802b3,null));};exports[_0x2e08('0x9b')]=function(_0x16c90b,_0x40840c,_0x5f262e){var _0x525a6d={};var _0x143462={};var _0x1dd579;var _0x5e3f41;return db[_0x2e08('0x43')][_0x2e08('0x6a')]({'where':{'id':_0x16c90b[_0x2e08('0x5d')]['id']}})[_0x2e08('0x38')](handleEntityNotFound(_0x40840c,null))['then'](function(_0x247ed1){if(_0x247ed1){_0x1dd579=_0x247ed1;_0x143462[_0x2e08('0x47')]=_[_0x2e08('0x49')](db['User']['rawAttributes']);_0x143462[_0x2e08('0x48')]=_[_0x2e08('0x49')](_0x16c90b[_0x2e08('0x48')]);_0x143462['filters']=_[_0x2e08('0x4b')](_0x143462['model'],_0x143462[_0x2e08('0x48')]);_0x525a6d[_0x2e08('0x4c')]=_['intersection'](_0x143462[_0x2e08('0x47')],qs['fields'](_0x16c90b[_0x2e08('0x48')][_0x2e08('0x4d')]));_0x525a6d['attributes']=_0x525a6d['attributes'][_0x2e08('0x4e')]?_0x525a6d[_0x2e08('0x4c')]:_0x143462[_0x2e08('0x47')];_0x525a6d['order']=qs['sort'](_0x16c90b['query'][_0x2e08('0x51')]);_0x525a6d[_0x2e08('0x52')]=qs['filters'](_['pick'](_0x16c90b[_0x2e08('0x48')],_0x143462['filters']));if(_0x16c90b['query']['filter']){_0x525a6d[_0x2e08('0x52')]=_[_0x2e08('0x54')](_0x525a6d[_0x2e08('0x52')],{'$or':_[_0x2e08('0x42')](_0x525a6d[_0x2e08('0x4c')],function(_0x301389){var _0x1571f4={};_0x1571f4[_0x301389]={'$like':'%'+_0x16c90b[_0x2e08('0x48')][_0x2e08('0x56')]+'%'};return _0x1571f4;})});}_0x525a6d=_[_0x2e08('0x54')]({},_0x525a6d,_0x16c90b['options']);return _0x1dd579[_0x2e08('0x9b')](_0x525a6d);}})[_0x2e08('0x38')](function(_0x18af85){if(_0x18af85){_0x5e3f41=_0x18af85[_0x2e08('0x4e')];if(!_0x16c90b[_0x2e08('0x48')][_0x2e08('0x77')](_0x2e08('0x4f'))){_0x525a6d[_0x2e08('0x32')]=qs[_0x2e08('0x32')](_0x16c90b['query'][_0x2e08('0x32')]);_0x525a6d['offset']=qs[_0x2e08('0x31')](_0x16c90b[_0x2e08('0x48')][_0x2e08('0x31')]);}return _0x1dd579[_0x2e08('0x9b')](_0x525a6d);}})[_0x2e08('0x38')](function(_0x4c64f3){if(_0x4c64f3){return _0x4c64f3?{'count':_0x5e3f41,'rows':_0x4c64f3}:null;}})[_0x2e08('0x38')](respondWithResult(_0x40840c,null))[_0x2e08('0x2e')](handleError(_0x40840c,null));};
\ No newline at end of file
+var _0x7b23=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','./chatQueue.socket','register','jayson/promise','client','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','get','ChatQueues','UserProfileResource','then','sendStatus','name','index','ChatQueue','type','key','model','map','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','findAll','keys','rawAttributes','length','options','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','params','describe','getMembers','findOne','UserChatQueue','order','ChatQueueId','User','UserId','agent','chatPause','updatedAt','createdAt','rows','format','%s/%s','Team','getTeams','addTeams','ids','Agents','voicePause','interface','sequelize','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','select','from','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','union','value','isEmpty','userChatQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','../../components/auth/service'];(function(_0x56a977,_0x192273){var _0x22539e=function(_0x474132){while(--_0x474132){_0x56a977['push'](_0x56a977['shift']());}};_0x22539e(++_0x192273);}(_0x7b23,0x10b));var _0x37b2=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x7b23[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x37b2('0x0'));var rimraf=require(_0x37b2('0x1'));var zipdir=require(_0x37b2('0x2'));var jsonpatch=require(_0x37b2('0x3'));var rp=require(_0x37b2('0x4'));var moment=require(_0x37b2('0x5'));var BPromise=require(_0x37b2('0x6'));var Mustache=require(_0x37b2('0x7'));var util=require(_0x37b2('0x8'));var path=require(_0x37b2('0x9'));var sox=require(_0x37b2('0xa'));var csv=require(_0x37b2('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x37b2('0xc'));var squel=require(_0x37b2('0xd'));var crypto=require('crypto');var jsforce=require(_0x37b2('0xe'));var deskjs=require(_0x37b2('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x37b2('0x10'));var qs=require(_0x37b2('0x11'));var as=require(_0x37b2('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x37b2('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x37b2('0x14'));var db=require(_0x37b2('0x15'))['db'];config[_0x37b2('0x16')]=_[_0x37b2('0x17')](config[_0x37b2('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x37b2('0x16')]));require(_0x37b2('0x18'))[_0x37b2('0x19')](socket);var jayson=require(_0x37b2('0x1a'));var client=jayson[_0x37b2('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41bac9,_0x16db94,_0x5e91a3,_0x37db1a){return new BPromise(function(_0xacc349,_0x18fd5a){var _0x174d25=_0x37db1a||client;return _0x174d25[_0x37b2('0x1c')](_0x41bac9,_0x5e91a3)['then'](function(_0x5a695e){logger[_0x37b2('0x1d')](_0x37b2('0x1e'),_0x16db94,_0x37b2('0x1f'));logger[_0x37b2('0x20')](_0x37b2('0x21'),_0x16db94,_0x37b2('0x1f'),JSON[_0x37b2('0x22')](_0x5a695e));if(_0x5a695e[_0x37b2('0x23')]){if(_0x5a695e[_0x37b2('0x23')]['code']===0x1f4){logger[_0x37b2('0x23')]('ChatQueue,\x20%s,\x20%s',_0x16db94,_0x5a695e['error'][_0x37b2('0x24')]);return _0x18fd5a(_0x5a695e[_0x37b2('0x23')][_0x37b2('0x24')]);}logger['error'](_0x37b2('0x1e'),_0x16db94,_0x5a695e['error'][_0x37b2('0x24')]);return _0xacc349(_0x5a695e[_0x37b2('0x23')][_0x37b2('0x24')]);}else{logger['info'](_0x37b2('0x1e'),_0x16db94,_0x37b2('0x1f'));_0xacc349(_0x5a695e[_0x37b2('0x25')][_0x37b2('0x24')]);}})[_0x37b2('0x26')](function(_0xfe9923){logger[_0x37b2('0x23')](_0x37b2('0x1e'),_0x16db94,_0xfe9923);_0x18fd5a(_0xfe9923);});});}function respondWithStatusCode(_0x5e70a4,_0x4eb24c){_0x4eb24c=_0x4eb24c||0xcc;return function(_0x3783c9){if(_0x3783c9){return _0x5e70a4['sendStatus'](_0x4eb24c);}return _0x5e70a4[_0x37b2('0x27')](_0x4eb24c)[_0x37b2('0x28')]();};}function respondWithResult(_0x258b57,_0x4b8889){_0x4b8889=_0x4b8889||0xc8;return function(_0x492c9e){if(_0x492c9e){return _0x258b57[_0x37b2('0x27')](_0x4b8889)['json'](_0x492c9e);}};}function respondWithFilteredResult(_0x3b7e73,_0x503206){return function(_0xb5800b){if(_0xb5800b){var _0x4e3f97=typeof _0x503206[_0x37b2('0x29')]===_0x37b2('0x2a')&&typeof _0x503206[_0x37b2('0x2b')]==='undefined';var _0x3296e2=_0xb5800b[_0x37b2('0x2c')];var _0xec7892=_0x4e3f97?0x0:_0x503206[_0x37b2('0x29')];var _0xc4b286=_0x4e3f97?_0xb5800b[_0x37b2('0x2c')]:_0x503206['offset']+_0x503206[_0x37b2('0x2b')];var _0x55c165;if(_0xc4b286>=_0x3296e2){_0xc4b286=_0x3296e2;_0x55c165=0xc8;}else{_0x55c165=0xce;}_0x3b7e73[_0x37b2('0x27')](_0x55c165);return _0x3b7e73[_0x37b2('0x2d')](_0x37b2('0x2e'),_0xec7892+'-'+_0xc4b286+'/'+_0x3296e2)['json'](_0xb5800b);}return null;};}function patchUpdates(_0x32fd3f){return function(_0x35b280){try{jsonpatch['apply'](_0x35b280,_0x32fd3f,!![]);}catch(_0x4b7b3d){return BPromise[_0x37b2('0x2f')](_0x4b7b3d);}return _0x35b280[_0x37b2('0x30')]();};}function saveUpdates(_0x31c1e0,_0x2916a4){return function(_0x5563fd){if(_0x5563fd){return _0x5563fd[_0x37b2('0x31')](_0x31c1e0)['then'](function(_0x4d0f0b){return _0x4d0f0b;});}return null;};}function removeEntity(_0x3912aa,_0x14fea1){return function(_0x3898ef){if(_0x3898ef){return _0x3898ef[_0x37b2('0x32')]()['then'](function(){var _0x15bd03=_0x3898ef[_0x37b2('0x33')]({'plain':!![]});var _0x2cfb97=_0x37b2('0x34');return db[_0x37b2('0x35')][_0x37b2('0x32')]({'where':{'type':_0x2cfb97,'resourceId':_0x15bd03['id']}})[_0x37b2('0x36')](function(){return _0x3898ef;});})[_0x37b2('0x36')](function(){_0x3912aa[_0x37b2('0x27')](0xcc)[_0x37b2('0x28')]();});}};}function handleEntityNotFound(_0x153d5c,_0x142612){return function(_0x5dc5d6){if(!_0x5dc5d6){_0x153d5c[_0x37b2('0x37')](0x194);}return _0x5dc5d6;};}function handleError(_0x10cd13,_0x4af2bf){_0x4af2bf=_0x4af2bf||0x1f4;return function(_0x4a2f45){logger[_0x37b2('0x23')](_0x4a2f45['stack']);if(_0x4a2f45[_0x37b2('0x38')]){delete _0x4a2f45[_0x37b2('0x38')];}_0x10cd13[_0x37b2('0x27')](_0x4af2bf)['send'](_0x4a2f45);};}exports[_0x37b2('0x39')]=function(_0x549403,_0x45fe3a){var _0xabf06f={},_0x5735ea={},_0x552523={'count':0x0,'rows':[]};var _0x3fbc91=_['map'](db[_0x37b2('0x3a')]['rawAttributes'],function(_0x7187f3){return{'name':_0x7187f3['fieldName'],'type':_0x7187f3[_0x37b2('0x3b')][_0x37b2('0x3c')]};});_0x5735ea[_0x37b2('0x3d')]=_[_0x37b2('0x3e')](_0x3fbc91,_0x37b2('0x38'));_0x5735ea[_0x37b2('0x3f')]=_['keys'](_0x549403[_0x37b2('0x3f')]);_0x5735ea[_0x37b2('0x40')]=_['intersection'](_0x5735ea[_0x37b2('0x3d')],_0x5735ea['query']);_0xabf06f[_0x37b2('0x41')]=_[_0x37b2('0x42')](_0x5735ea[_0x37b2('0x3d')],qs['fields'](_0x549403[_0x37b2('0x3f')][_0x37b2('0x43')]));_0xabf06f['attributes']=_0xabf06f[_0x37b2('0x41')]['length']?_0xabf06f[_0x37b2('0x41')]:_0x5735ea[_0x37b2('0x3d')];if(!_0x549403['query'][_0x37b2('0x44')](_0x37b2('0x45'))){_0xabf06f[_0x37b2('0x2b')]=qs[_0x37b2('0x2b')](_0x549403['query'][_0x37b2('0x2b')]);_0xabf06f[_0x37b2('0x29')]=qs[_0x37b2('0x29')](_0x549403['query'][_0x37b2('0x29')]);}_0xabf06f['order']=qs[_0x37b2('0x46')](_0x549403[_0x37b2('0x3f')][_0x37b2('0x46')]);_0xabf06f['where']=qs['filters'](_[_0x37b2('0x47')](_0x549403[_0x37b2('0x3f')],_0x5735ea[_0x37b2('0x40')]),_0x3fbc91);if(_0x549403[_0x37b2('0x3f')][_0x37b2('0x48')]){_0xabf06f['where']=_[_0x37b2('0x49')](_0xabf06f[_0x37b2('0x4a')],{'$or':_[_0x37b2('0x3e')](_0x3fbc91,function(_0xbd370a){if(_0xbd370a[_0x37b2('0x3b')]!==_0x37b2('0x4b')){var _0x3dc8b7={};_0x3dc8b7[_0xbd370a[_0x37b2('0x38')]]={'$like':'%'+_0x549403[_0x37b2('0x3f')][_0x37b2('0x48')]+'%'};return _0x3dc8b7;}})});}_0xabf06f=_[_0x37b2('0x49')]({},_0xabf06f,_0x549403['options']);var _0x4a5b16={'where':_0xabf06f[_0x37b2('0x4a')]};return db[_0x37b2('0x3a')][_0x37b2('0x2c')](_0x4a5b16)['then'](function(_0xdcad8e){_0x552523[_0x37b2('0x2c')]=_0xdcad8e;if(_0x549403[_0x37b2('0x3f')][_0x37b2('0x4c')]){_0xabf06f[_0x37b2('0x4d')]=[{'all':!![]}];}return db[_0x37b2('0x3a')][_0x37b2('0x4e')](_0xabf06f);})[_0x37b2('0x36')](function(_0x1f3f65){_0x552523['rows']=_0x1f3f65;return _0x552523;})[_0x37b2('0x36')](respondWithFilteredResult(_0x45fe3a,_0xabf06f))['catch'](handleError(_0x45fe3a,null));};exports['show']=function(_0x4d623a,_0x1c911f){var _0x2b1dbe={'raw':!![],'where':{'id':_0x4d623a['params']['id']}},_0x2ce8e1={};_0x2ce8e1[_0x37b2('0x3d')]=_[_0x37b2('0x4f')](db[_0x37b2('0x3a')][_0x37b2('0x50')]);_0x2ce8e1[_0x37b2('0x3f')]=_[_0x37b2('0x4f')](_0x4d623a[_0x37b2('0x3f')]);_0x2ce8e1['filters']=_[_0x37b2('0x42')](_0x2ce8e1['model'],_0x2ce8e1[_0x37b2('0x3f')]);_0x2b1dbe['attributes']=_[_0x37b2('0x42')](_0x2ce8e1[_0x37b2('0x3d')],qs[_0x37b2('0x43')](_0x4d623a[_0x37b2('0x3f')][_0x37b2('0x43')]));_0x2b1dbe[_0x37b2('0x41')]=_0x2b1dbe[_0x37b2('0x41')][_0x37b2('0x51')]?_0x2b1dbe[_0x37b2('0x41')]:_0x2ce8e1[_0x37b2('0x3d')];if(_0x4d623a[_0x37b2('0x3f')]['includeAll']){_0x2b1dbe['include']=[{'all':!![]}];}_0x2b1dbe=_[_0x37b2('0x49')]({},_0x2b1dbe,_0x4d623a[_0x37b2('0x52')]);return db[_0x37b2('0x3a')]['find'](_0x2b1dbe)[_0x37b2('0x36')](handleEntityNotFound(_0x1c911f,null))[_0x37b2('0x36')](respondWithResult(_0x1c911f,null))[_0x37b2('0x26')](handleError(_0x1c911f,null));};exports['create']=function(_0x1f5cce,_0x45dccb){return db[_0x37b2('0x3a')]['create'](_0x1f5cce[_0x37b2('0x53')],{})[_0x37b2('0x36')](function(_0x687997){var _0x5a5386=_0x1f5cce[_0x37b2('0x54')]['get']({'plain':!![]});if(!_0x5a5386)throw new Error(_0x37b2('0x55'));if(_0x5a5386[_0x37b2('0x56')]===_0x37b2('0x54')){var _0x387a5c=_0x687997[_0x37b2('0x33')]({'plain':!![]});var _0x4e91ed='ChatQueues';return db['UserProfileSection'][_0x37b2('0x57')]({'where':{'name':_0x4e91ed,'userProfileId':_0x5a5386['userProfileId']},'raw':!![]})[_0x37b2('0x36')](function(_0x1c38d5){if(_0x1c38d5&&_0x1c38d5[_0x37b2('0x58')]===0x0){return db['UserProfileResource']['create']({'name':_0x387a5c[_0x37b2('0x38')],'resourceId':_0x387a5c['id'],'type':_0x1c38d5[_0x37b2('0x38')],'sectionId':_0x1c38d5['id']},{})[_0x37b2('0x36')](function(){return _0x687997;});}else{return _0x687997;}})['catch'](function(_0x4680cf){logger[_0x37b2('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4680cf);throw _0x4680cf;});}return _0x687997;})[_0x37b2('0x36')](respondWithResult(_0x45dccb,0xc9))[_0x37b2('0x26')](handleError(_0x45dccb,null));};exports[_0x37b2('0x31')]=function(_0x5113b3,_0x3bfb4e){if(_0x5113b3['body']['id']){delete _0x5113b3[_0x37b2('0x53')]['id'];}return db[_0x37b2('0x3a')][_0x37b2('0x57')]({'where':{'id':_0x5113b3[_0x37b2('0x59')]['id']}})[_0x37b2('0x36')](handleEntityNotFound(_0x3bfb4e,null))[_0x37b2('0x36')](saveUpdates(_0x5113b3['body'],null))[_0x37b2('0x36')](respondWithResult(_0x3bfb4e,null))['catch'](handleError(_0x3bfb4e,null));};exports[_0x37b2('0x32')]=function(_0x5abd3f,_0x33cf1c){return db[_0x37b2('0x3a')][_0x37b2('0x57')]({'where':{'id':_0x5abd3f[_0x37b2('0x59')]['id']}})[_0x37b2('0x36')](handleEntityNotFound(_0x33cf1c,null))[_0x37b2('0x36')](removeEntity(_0x33cf1c,null))[_0x37b2('0x26')](handleError(_0x33cf1c,null));};exports[_0x37b2('0x5a')]=function(_0x47c5a7,_0x5bed4b){return db[_0x37b2('0x3a')][_0x37b2('0x5a')]()[_0x37b2('0x36')](respondWithResult(_0x5bed4b,null))['catch'](handleError(_0x5bed4b,null));};exports[_0x37b2('0x5b')]=function(_0x31a63c,_0x837233,_0x883698){var _0x57f87d={'raw':!![],'where':{}},_0x339279={},_0x5b45b3;return db[_0x37b2('0x3a')][_0x37b2('0x5c')]({'where':{'id':_0x31a63c[_0x37b2('0x59')]['id']}})['then'](handleEntityNotFound(_0x837233,null))[_0x37b2('0x36')](function(_0x2003ce){if(_0x2003ce){_0x5b45b3=_0x2003ce[_0x37b2('0x33')]({'plain':!![]});_0x339279[_0x37b2('0x3d')]=_[_0x37b2('0x4f')](db[_0x37b2('0x5d')][_0x37b2('0x50')]);_0x339279['query']=_[_0x37b2('0x4f')](_0x31a63c[_0x37b2('0x3f')]);_0x339279[_0x37b2('0x40')]=_['intersection'](_0x339279[_0x37b2('0x3d')],_0x339279[_0x37b2('0x3f')]);_0x57f87d['attributes']=_[_0x37b2('0x42')](_0x339279[_0x37b2('0x3d')],qs[_0x37b2('0x43')](_0x31a63c[_0x37b2('0x3f')][_0x37b2('0x43')]));_0x57f87d[_0x37b2('0x41')]=_0x57f87d[_0x37b2('0x41')][_0x37b2('0x51')]?_0x57f87d[_0x37b2('0x41')]:_0x339279[_0x37b2('0x3d')];if(!_0x31a63c[_0x37b2('0x3f')][_0x37b2('0x44')]('nolimit')){_0x57f87d[_0x37b2('0x2b')]=qs[_0x37b2('0x2b')](_0x31a63c[_0x37b2('0x3f')][_0x37b2('0x2b')]);_0x57f87d[_0x37b2('0x29')]=qs[_0x37b2('0x29')](_0x31a63c[_0x37b2('0x3f')][_0x37b2('0x29')]);}_0x57f87d[_0x37b2('0x5e')]=qs[_0x37b2('0x46')](_0x31a63c[_0x37b2('0x3f')]['sort']);_0x57f87d[_0x37b2('0x4a')]=qs[_0x37b2('0x40')](_[_0x37b2('0x47')](_0x31a63c[_0x37b2('0x3f')],_0x339279['filters']));_0x57f87d[_0x37b2('0x4a')][_0x37b2('0x5f')]=_0x2003ce['id'];if(_0x31a63c[_0x37b2('0x3f')][_0x37b2('0x48')]){_0x57f87d[_0x37b2('0x4a')]=_[_0x37b2('0x49')](_0x57f87d[_0x37b2('0x4a')],{'$or':_['map'](_0x57f87d['attributes'],function(_0x134b96){var _0xb0db15={};_0xb0db15[_0x134b96]={'$like':'%'+_0x31a63c[_0x37b2('0x3f')][_0x37b2('0x48')]+'%'};return _0xb0db15;})});}_0x57f87d=_[_0x37b2('0x49')]({},_0x57f87d,_0x31a63c['options']);return db[_0x37b2('0x5d')][_0x37b2('0x4e')](_0x57f87d);}})[_0x37b2('0x36')](function(_0x214aa7){if(_0x214aa7){return db[_0x37b2('0x60')]['findAndCountAll']({'where':{'id':_[_0x37b2('0x3e')](_0x214aa7,_0x37b2('0x61')),'role':_0x37b2('0x62')},'attributes':['id',_0x37b2('0x38'),_0x37b2('0x63'),_0x37b2('0x64'),_0x37b2('0x65')]});}})[_0x37b2('0x36')](function(_0x121afd){if(_0x121afd){return{'count':_0x121afd[_0x37b2('0x2c')],'rows':_[_0x37b2('0x3e')](_0x121afd[_0x37b2('0x66')],function(_0x581920){return{'membername':_0x581920[_0x37b2('0x38')],'UserId':_0x581920['id'],'queue_name':_0x5b45b3[_0x37b2('0x38')],'ChatQueueId':_0x5b45b3['id'],'interface':util[_0x37b2('0x67')](_0x37b2('0x68'),'SIP',_0x581920[_0x37b2('0x38')]),'penalty':0x0,'paused':_0x581920[_0x37b2('0x63')],'createdAt':_0x581920['createdAt'],'updatedAt':_0x581920[_0x37b2('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x837233,_0x57f87d))[_0x37b2('0x26')](handleError(_0x837233,null));};exports['getTeams']=function(_0x198496,_0x4b60b2,_0x20562a){var _0x30dcb0={};var _0x2fbdf1={};var _0x3be084;var _0x3798d4;return db[_0x37b2('0x3a')]['findOne']({'where':{'id':_0x198496[_0x37b2('0x59')]['id']}})[_0x37b2('0x36')](handleEntityNotFound(_0x4b60b2,null))[_0x37b2('0x36')](function(_0x1d0c57){if(_0x1d0c57){_0x3be084=_0x1d0c57;_0x2fbdf1[_0x37b2('0x3d')]=_['keys'](db[_0x37b2('0x69')][_0x37b2('0x50')]);_0x2fbdf1[_0x37b2('0x3f')]=_[_0x37b2('0x4f')](_0x198496[_0x37b2('0x3f')]);_0x2fbdf1['filters']=_[_0x37b2('0x42')](_0x2fbdf1[_0x37b2('0x3d')],_0x2fbdf1[_0x37b2('0x3f')]);_0x30dcb0[_0x37b2('0x41')]=_[_0x37b2('0x42')](_0x2fbdf1[_0x37b2('0x3d')],qs['fields'](_0x198496[_0x37b2('0x3f')]['fields']));_0x30dcb0['attributes']=_0x30dcb0[_0x37b2('0x41')][_0x37b2('0x51')]?_0x30dcb0[_0x37b2('0x41')]:_0x2fbdf1[_0x37b2('0x3d')];_0x30dcb0['order']=qs[_0x37b2('0x46')](_0x198496[_0x37b2('0x3f')][_0x37b2('0x46')]);_0x30dcb0['where']=qs[_0x37b2('0x40')](_[_0x37b2('0x47')](_0x198496['query'],_0x2fbdf1[_0x37b2('0x40')]));if(_0x198496[_0x37b2('0x3f')][_0x37b2('0x48')]){_0x30dcb0[_0x37b2('0x4a')]=_[_0x37b2('0x49')](_0x30dcb0['where'],{'$or':_['map'](_0x30dcb0[_0x37b2('0x41')],function(_0x277978){var _0xc7aac3={};_0xc7aac3[_0x277978]={'$like':'%'+_0x198496[_0x37b2('0x3f')][_0x37b2('0x48')]+'%'};return _0xc7aac3;})});}_0x30dcb0=_[_0x37b2('0x49')]({},_0x30dcb0,_0x198496['options']);return _0x3be084[_0x37b2('0x6a')](_0x30dcb0);}})[_0x37b2('0x36')](function(_0x58f17e){if(_0x58f17e){_0x3798d4=_0x58f17e[_0x37b2('0x51')];if(!_0x198496[_0x37b2('0x3f')][_0x37b2('0x44')]('nolimit')){_0x30dcb0[_0x37b2('0x2b')]=qs[_0x37b2('0x2b')](_0x198496[_0x37b2('0x3f')][_0x37b2('0x2b')]);_0x30dcb0[_0x37b2('0x29')]=qs[_0x37b2('0x29')](_0x198496[_0x37b2('0x3f')]['offset']);}return _0x3be084[_0x37b2('0x6a')](_0x30dcb0);}})['then'](function(_0x4abbbf){if(_0x4abbbf){return _0x4abbbf?{'count':_0x3798d4,'rows':_0x4abbbf}:null;}})[_0x37b2('0x36')](respondWithResult(_0x4b60b2,null))[_0x37b2('0x26')](handleError(_0x4b60b2,null));};exports[_0x37b2('0x6b')]=function(_0x2d6482,_0x1bbb2e,_0x4919a9){var _0x5159e1=_0x2d6482[_0x37b2('0x53')][_0x37b2('0x6c')];return db[_0x37b2('0x69')][_0x37b2('0x4e')]({'where':{'id':_0x5159e1},'attributes':['id'],'include':[{'model':db[_0x37b2('0x60')],'as':_0x37b2('0x6d'),'attributes':['id',_0x37b2('0x38'),'online',_0x37b2('0x6e'),_0x37b2('0x6f')],'raw':!![]}]})[_0x37b2('0x36')](function(_0x37501b){if(_0x37501b){var _0x1e1e49=_['flatMap'](_0x37501b,function(_0x1d923b){var _0xd64a66=_0x1d923b[_0x37b2('0x33')]({'plain':!![]});return _0xd64a66[_0x37b2('0x6d')];});return db['ChatQueue'][_0x37b2('0x57')]({'where':{'id':_0x2d6482[_0x37b2('0x59')]['id']}})[_0x37b2('0x36')](function(_0x266f15){return db[_0x37b2('0x70')][_0x37b2('0x71')](function(_0x35be63){return _0x266f15[_0x37b2('0x6b')](_0x5159e1,{'transaction':_0x35be63})[_0x37b2('0x36')](function(){return BPromise[_0x37b2('0x72')](_0x1e1e49,function(_0x3fdf26){return db[_0x37b2('0x5d')][_0x37b2('0x73')]({'where':{'UserId':_0x3fdf26['id'],'ChatQueueId':_0x2d6482[_0x37b2('0x59')]['id']},'transaction':_0x35be63});});})['then'](function(){_0x1e1e49[_0x37b2('0x74')](function(_0x2cf0b2){socket[_0x37b2('0x75')](_0x37b2('0x76'),{'UserId':_0x2cf0b2['id'],'ChatQueueId':_0x266f15['id']});});});});});}})[_0x37b2('0x36')](respondWithStatusCode(_0x1bbb2e,null))['catch'](handleError(_0x1bbb2e,null));};exports[_0x37b2('0x77')]=function(_0x50329,_0x5dfa92,_0x3a443e){return db[_0x37b2('0x69')]['findAll']({'where':{'id':_0x50329[_0x37b2('0x3f')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x37b2('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x37b2('0x36')](handleEntityNotFound(_0x5dfa92,null))[_0x37b2('0x36')](function(_0x1a28f3){var _0x416707=_['map'](_0x1a28f3,'id');var _0x3fdb8c=[];var _0x4204ad=[];var _0x5d70f5=squel[_0x37b2('0x78')]();_0x5d70f5['field']('tq.TeamId')[_0x37b2('0x79')]('team_has_chat_queues','tq')[_0x37b2('0x7a')]('user_has_teams','ut',_0x37b2('0x7b'))[_0x37b2('0x4a')](_0x37b2('0x7c'),_0x50329['params']['id']);for(var _0x21c145=0x0;_0x21c145<_0x1a28f3[_0x37b2('0x51')];_0x21c145+=0x1){let _0x5c073a=_0x1a28f3[_0x21c145];for(var _0x1be723=0x0;_0x1be723<_0x5c073a[_0x37b2('0x6d')][_0x37b2('0x51')];_0x1be723+=0x1){let _0x2d00d9=_0x5c073a['Agents'][_0x1be723];var _0x2bd589=_0x5d70f5['clone']();_0x2bd589[_0x37b2('0x4a')](_0x37b2('0x7d'),_0x2d00d9['id']);_0x4204ad[_0x37b2('0x7e')](db[_0x37b2('0x70')][_0x37b2('0x3f')](_0x2bd589[_0x37b2('0x7f')](),{'type':db[_0x37b2('0x70')][_0x37b2('0x80')][_0x37b2('0x81')]})[_0x37b2('0x36')](function(_0x578402){if(_0x578402['length']===0x1){return _0x2d00d9['id'];}else{var _0x1ea508=_[_0x37b2('0x82')](_[_0x37b2('0x3e')](_0x578402,_0x37b2('0x83')),function(_0x4068d8){return _['includes'](_0x416707,_0x4068d8);});if(_0x1ea508){return _0x2d00d9['id'];}}}));}}return BPromise['all'](_0x4204ad)[_0x37b2('0x36')](function(_0x1540cd){_0x3fdb8c=_(_0x3fdb8c)[_0x37b2('0x84')](_0x1540cd)['compact']()[_0x37b2('0x85')]();return db[_0x37b2('0x3a')][_0x37b2('0x57')]({'where':{'id':_0x50329[_0x37b2('0x59')]['id']}})[_0x37b2('0x36')](function(_0x514d89){return db[_0x37b2('0x70')]['transaction'](function(_0x3f8664){return _0x514d89[_0x37b2('0x77')](_0x50329[_0x37b2('0x3f')][_0x37b2('0x6c')],{'transaction':_0x3f8664})[_0x37b2('0x36')](function(){if(!_[_0x37b2('0x86')](_0x3fdb8c)){return _0x514d89['removeAgents'](_0x3fdb8c,{'transaction':_0x3f8664});}})[_0x37b2('0x36')](function(){_0x3fdb8c[_0x37b2('0x74')](function(_0x5d7825){socket[_0x37b2('0x75')](_0x37b2('0x87'),{'UserId':_0x5d7825,'ChatQueueId':_0x514d89['id']});});});});});});})[_0x37b2('0x36')](respondWithStatusCode(_0x5dfa92,null))['catch'](handleError(_0x5dfa92,null));};exports[_0x37b2('0x88')]=function(_0x19ea51,_0x404c52,_0x125bb8){return db['ChatQueue'][_0x37b2('0x57')]({'where':{'id':_0x19ea51[_0x37b2('0x59')]['id']}})[_0x37b2('0x36')](handleEntityNotFound(_0x404c52,null))[_0x37b2('0x36')](function(_0x52a891){if(_0x52a891){return _0x52a891['addAgents'](_0x19ea51[_0x37b2('0x53')][_0x37b2('0x6c')],_[_0x37b2('0x89')](_0x19ea51[_0x37b2('0x53')],[_0x37b2('0x6c'),'id'])||{})[_0x37b2('0x8a')](function(_0x21714f){for(var _0x52b9db=0x0;_0x52b9db<_0x19ea51['body']['ids'][_0x37b2('0x51')];_0x52b9db+=0x1){socket[_0x37b2('0x75')](_0x37b2('0x76'),{'UserId':Number(_0x19ea51['body'][_0x37b2('0x6c')][_0x52b9db]),'ChatQueueId':Number(_0x19ea51[_0x37b2('0x59')]['id'])});}return _0x21714f;});}})[_0x37b2('0x36')](respondWithResult(_0x404c52,null))['catch'](handleError(_0x404c52,null));};exports[_0x37b2('0x8b')]=function(_0x2f8393,_0x12d91a,_0x43b187){return db[_0x37b2('0x3a')][_0x37b2('0x57')]({'where':{'id':_0x2f8393['params']['id']}})[_0x37b2('0x36')](handleEntityNotFound(_0x12d91a,null))[_0x37b2('0x36')](function(_0x118c6c){if(_0x118c6c){return _0x118c6c['removeAgents'](_0x2f8393[_0x37b2('0x3f')]['ids'])[_0x37b2('0x36')](function(){if(_[_0x37b2('0x8c')](_0x2f8393[_0x37b2('0x3f')][_0x37b2('0x6c')])){for(var _0x10e08f=0x0;_0x10e08f<_0x2f8393[_0x37b2('0x3f')][_0x37b2('0x6c')][_0x37b2('0x51')];_0x10e08f+=0x1){socket[_0x37b2('0x75')](_0x37b2('0x87'),{'UserId':Number(_0x2f8393[_0x37b2('0x3f')][_0x37b2('0x6c')][_0x10e08f]),'ChatQueueId':Number(_0x2f8393['params']['id'])});}}else{socket[_0x37b2('0x75')](_0x37b2('0x87'),{'UserId':Number(_0x2f8393[_0x37b2('0x3f')][_0x37b2('0x6c')]),'ChatQueueId':Number(_0x2f8393[_0x37b2('0x59')]['id'])});}});}})[_0x37b2('0x36')](respondWithStatusCode(_0x12d91a,null))['catch'](handleError(_0x12d91a,null));};exports['getAgents']=function(_0x353a7e,_0x2b3094,_0x5e8ab4){var _0x159b00={};var _0x3d27ed={};var _0x134890;var _0x3f4ef2;return db[_0x37b2('0x3a')][_0x37b2('0x5c')]({'where':{'id':_0x353a7e[_0x37b2('0x59')]['id']}})[_0x37b2('0x36')](handleEntityNotFound(_0x2b3094,null))[_0x37b2('0x36')](function(_0x22118d){if(_0x22118d){_0x134890=_0x22118d;_0x3d27ed[_0x37b2('0x3d')]=_[_0x37b2('0x4f')](db[_0x37b2('0x60')][_0x37b2('0x50')]);_0x3d27ed[_0x37b2('0x3f')]=_['keys'](_0x353a7e['query']);_0x3d27ed[_0x37b2('0x40')]=_[_0x37b2('0x42')](_0x3d27ed['model'],_0x3d27ed[_0x37b2('0x3f')]);_0x159b00[_0x37b2('0x41')]=_['intersection'](_0x3d27ed[_0x37b2('0x3d')],qs['fields'](_0x353a7e[_0x37b2('0x3f')][_0x37b2('0x43')]));_0x159b00[_0x37b2('0x41')]=_0x159b00[_0x37b2('0x41')][_0x37b2('0x51')]?_0x159b00['attributes']:_0x3d27ed['model'];_0x159b00['order']=qs['sort'](_0x353a7e[_0x37b2('0x3f')][_0x37b2('0x46')]);_0x159b00[_0x37b2('0x4a')]=qs[_0x37b2('0x40')](_['pick'](_0x353a7e['query'],_0x3d27ed[_0x37b2('0x40')]));if(_0x353a7e[_0x37b2('0x3f')][_0x37b2('0x48')]){_0x159b00[_0x37b2('0x4a')]=_[_0x37b2('0x49')](_0x159b00[_0x37b2('0x4a')],{'$or':_[_0x37b2('0x3e')](_0x159b00[_0x37b2('0x41')],function(_0x30f780){var _0x30795d={};_0x30795d[_0x30f780]={'$like':'%'+_0x353a7e[_0x37b2('0x3f')][_0x37b2('0x48')]+'%'};return _0x30795d;})});}_0x159b00=_[_0x37b2('0x49')]({},_0x159b00,_0x353a7e['options']);return _0x134890['getAgents'](_0x159b00);}})['then'](function(_0x14e3a1){if(_0x14e3a1){_0x3f4ef2=_0x14e3a1[_0x37b2('0x51')];if(!_0x353a7e[_0x37b2('0x3f')][_0x37b2('0x44')](_0x37b2('0x45'))){_0x159b00[_0x37b2('0x2b')]=qs[_0x37b2('0x2b')](_0x353a7e[_0x37b2('0x3f')][_0x37b2('0x2b')]);_0x159b00[_0x37b2('0x29')]=qs[_0x37b2('0x29')](_0x353a7e[_0x37b2('0x3f')][_0x37b2('0x29')]);}return _0x134890[_0x37b2('0x8d')](_0x159b00);}})[_0x37b2('0x36')](function(_0x2d9471){if(_0x2d9471){return _0x2d9471?{'count':_0x3f4ef2,'rows':_0x2d9471}:null;}})['then'](respondWithResult(_0x2b3094,null))[_0x37b2('0x26')](handleError(_0x2b3094,null));};
\ No newline at end of file
index b9fca39..905bc63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1156=['save','update','hasOwnProperty','exports','events','ChatQueue','setMaxListeners'];(function(_0x3a5ac2,_0x344476){var _0x22b54d=function(_0x3551ae){while(--_0x3551ae){_0x3a5ac2['push'](_0x3a5ac2['shift']());}};_0x22b54d(++_0x344476);}(_0x1156,0x1a8));var _0x6115=function(_0x56740a,_0x568894){_0x56740a=_0x56740a-0x0;var _0x257144=_0x1156[_0x56740a];return _0x257144;};'use strict';var EventEmitter=require(_0x6115('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0x6115('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x6115('0x2')](0x0);var events={'afterCreate':_0x6115('0x3'),'afterUpdate':_0x6115('0x4'),'afterDestroy':'remove'};function emitEvent(_0x27e272){return function(_0x15df97,_0x45c335,_0x10f135){ChatQueueEvents['emit'](_0x27e272+':'+_0x15df97['id'],_0x15df97);ChatQueueEvents['emit'](_0x27e272,_0x15df97);_0x10f135(null);};}for(var e in events){if(events[_0x6115('0x5')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x6115('0x6')]=ChatQueueEvents;
\ No newline at end of file
+var _0xf464=['hasOwnProperty','hook','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save','update','emit'];(function(_0x5ec453,_0x30b0ba){var _0x25548f=function(_0x387b62){while(--_0x387b62){_0x5ec453['push'](_0x5ec453['shift']());}};_0x25548f(++_0x30b0ba);}(_0xf464,0x161));var _0x4f46=function(_0x36e41b,_0x320627){_0x36e41b=_0x36e41b-0x0;var _0x40e228=_0xf464[_0x36e41b];return _0x40e228;};'use strict';var EventEmitter=require(_0x4f46('0x0'));var ChatQueue=require(_0x4f46('0x1'))['db'][_0x4f46('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x4f46('0x3')](0x0);var events={'afterCreate':_0x4f46('0x4'),'afterUpdate':_0x4f46('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3535e6){return function(_0x44de5a,_0x33853e,_0x4230dc){ChatQueueEvents[_0x4f46('0x6')](_0x3535e6+':'+_0x44de5a['id'],_0x44de5a);ChatQueueEvents[_0x4f46('0x6')](_0x3535e6,_0x44de5a);_0x4230dc(null);};}for(var e in events){if(events[_0x4f46('0x7')](e)){var event=events[e];ChatQueue[_0x4f46('0x8')](e,emitEvent(event));}}module[_0x4f46('0x9')]=ChatQueueEvents;
\ No newline at end of file
index b3d1f02..23b04f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb85=['./chatQueue.attributes','ChatQueue','chat_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xeb85,0x12f));var _0x5eb8=function(_0x1f386b,_0x332672){_0x1f386b=_0x1f386b-0x0;var _0x4d4883=_0xeb85[_0x1f386b];return _0x4d4883;};'use strict';var _=require('lodash');var util=require(_0x5eb8('0x0'));var logger=require(_0x5eb8('0x1'))(_0x5eb8('0x2'));var moment=require(_0x5eb8('0x3'));var BPromise=require(_0x5eb8('0x4'));var rp=require(_0x5eb8('0x5'));var fs=require('fs');var path=require(_0x5eb8('0x6'));var rimraf=require(_0x5eb8('0x7'));var config=require(_0x5eb8('0x8'));var attributes=require(_0x5eb8('0x9'));module['exports']=function(_0x95b06f,_0x4cfef6){return _0x95b06f['define'](_0x5eb8('0xa'),attributes,{'tableName':_0x5eb8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2e1=['./chatQueue.attributes','exports','define','ChatQueue','../../config/logger','api','bluebird','rimraf','../../config/environment'];(function(_0x5c2a64,_0x4d73d1){var _0x97eb2c=function(_0x191d14){while(--_0x191d14){_0x5c2a64['push'](_0x5c2a64['shift']());}};_0x97eb2c(++_0x4d73d1);}(_0xb2e1,0x70));var _0x1b2e=function(_0x25a4a1,_0x516862){_0x25a4a1=_0x25a4a1-0x0;var _0x3cac71=_0xb2e1[_0x25a4a1];return _0x3cac71;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1b2e('0x0'))(_0x1b2e('0x1'));var moment=require('moment');var BPromise=require(_0x1b2e('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1b2e('0x3'));var config=require(_0x1b2e('0x4'));var attributes=require(_0x1b2e('0x5'));module[_0x1b2e('0x6')]=function(_0x5cca0c,_0xf5ef12){return _0x5cca0c[_0x1b2e('0x7')](_0x1b2e('0x8'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2981ed6..b3031f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdac7=['client','http','defaults','localhost','redis','./chatQueue.socket','register','request','then','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','GetChatQueue','ChatQueue','findAll','options','where','attributes','limit','include','map','model','debug','find','raw','info','ShowChatQueue','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x29592a,_0x4fba3d){var _0xe7badc=function(_0x22fe92){while(--_0x22fe92){_0x29592a['push'](_0x29592a['shift']());}};_0xe7badc(++_0x4fba3d);}(_0xdac7,0x180));var _0x7dac=function(_0x5dc018,_0x266fcc){_0x5dc018=_0x5dc018-0x0;var _0x2238e6=_0xdac7[_0x5dc018];return _0x2238e6;};'use strict';var _=require(_0x7dac('0x0'));var util=require(_0x7dac('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7dac('0x2'));var db=require(_0x7dac('0x3'))['db'];var utils=require(_0x7dac('0x4'));var logger=require(_0x7dac('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7dac('0x6')][_0x7dac('0x7')]({'port':0x232a});config['redis']=_[_0x7dac('0x8')](config['redis'],{'host':_0x7dac('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7dac('0xa')]));require(_0x7dac('0xb'))[_0x7dac('0xc')](socket);function respondWithRpcPromise(_0x43f23f,_0x11b680,_0x2b552f){return new BPromise(function(_0x27eb87,_0x41e0db){return client[_0x7dac('0xd')](_0x43f23f,_0x2b552f)[_0x7dac('0xe')](function(_0x4dba13){logger['info']('ChatQueue,\x20%s,\x20%s',_0x11b680,_0x7dac('0xf'));logger['debug'](_0x7dac('0x10'),_0x11b680,'request\x20sent',JSON[_0x7dac('0x11')](_0x4dba13));if(_0x4dba13[_0x7dac('0x12')]){if(_0x4dba13[_0x7dac('0x12')][_0x7dac('0x13')]===0x1f4){logger[_0x7dac('0x12')](_0x7dac('0x14'),_0x11b680,_0x4dba13[_0x7dac('0x12')]['message']);return _0x41e0db(_0x4dba13[_0x7dac('0x12')]['message']);}logger['error'](_0x7dac('0x14'),_0x11b680,_0x4dba13[_0x7dac('0x12')][_0x7dac('0x15')]);return _0x27eb87(_0x4dba13[_0x7dac('0x12')][_0x7dac('0x15')]);}else{logger['info'](_0x7dac('0x14'),_0x11b680,'request\x20sent');_0x27eb87(_0x4dba13[_0x7dac('0x16')][_0x7dac('0x15')]);}})[_0x7dac('0x17')](function(_0x1ddde7){logger[_0x7dac('0x12')](_0x7dac('0x14'),_0x11b680,_0x1ddde7);_0x41e0db(_0x1ddde7);});});}exports[_0x7dac('0x18')]=function(_0x34e36b){var _0x7a1cac=this;return new Promise(function(_0x212fcc,_0x18f993){return db[_0x7dac('0x19')][_0x7dac('0x1a')]({'raw':_0x34e36b[_0x7dac('0x1b')]?_0x34e36b['options']['raw']===undefined?!![]:![]:!![],'where':_0x34e36b[_0x7dac('0x1b')]?_0x34e36b['options'][_0x7dac('0x1c')]||null:null,'attributes':_0x34e36b[_0x7dac('0x1b')]?_0x34e36b['options'][_0x7dac('0x1d')]||null:null,'limit':_0x34e36b[_0x7dac('0x1b')]?_0x34e36b['options'][_0x7dac('0x1e')]||null:null,'include':_0x34e36b[_0x7dac('0x1b')]?_0x34e36b[_0x7dac('0x1b')][_0x7dac('0x1f')]?_[_0x7dac('0x20')](_0x34e36b[_0x7dac('0x1b')][_0x7dac('0x1f')],function(_0x4b5776){return{'model':db[_0x4b5776[_0x7dac('0x21')]],'as':_0x4b5776['as'],'attributes':_0x4b5776[_0x7dac('0x1d')],'include':_0x4b5776[_0x7dac('0x1f')]?_['map'](_0x4b5776['include'],function(_0x456264){return{'model':db[_0x456264[_0x7dac('0x21')]],'as':_0x456264['as'],'attributes':_0x456264[_0x7dac('0x1d')],'include':_0x456264[_0x7dac('0x1f')]?_[_0x7dac('0x20')](_0x456264[_0x7dac('0x1f')],function(_0x3f76fd){return{'model':db[_0x3f76fd[_0x7dac('0x21')]],'as':_0x3f76fd['as'],'attributes':_0x3f76fd[_0x7dac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7dac('0xe')](function(_0x954909){logger['info']('GetChatQueue',_0x34e36b);logger[_0x7dac('0x22')](_0x7dac('0x18'),_0x34e36b,JSON[_0x7dac('0x11')](_0x954909));_0x212fcc(_0x954909);})['catch'](function(_0x4396f2){logger[_0x7dac('0x12')](_0x7dac('0x18'),_0x4396f2[_0x7dac('0x15')],_0x34e36b);_0x18f993(_0x7a1cac['error'](0x1f4,_0x4396f2[_0x7dac('0x15')]));});});};exports['ShowChatQueue']=function(_0x30c174){var _0x16ed63=this;return new Promise(function(_0x29c529,_0x54944a){return db[_0x7dac('0x19')][_0x7dac('0x23')]({'raw':_0x30c174[_0x7dac('0x1b')]?_0x30c174[_0x7dac('0x1b')][_0x7dac('0x24')]===undefined?!![]:![]:!![],'where':_0x30c174[_0x7dac('0x1b')]?_0x30c174['options']['where']||null:null,'attributes':_0x30c174['options']?_0x30c174[_0x7dac('0x1b')][_0x7dac('0x1d')]||null:null,'include':_0x30c174[_0x7dac('0x1b')]?_0x30c174['options'][_0x7dac('0x1f')]?_[_0x7dac('0x20')](_0x30c174[_0x7dac('0x1b')]['include'],function(_0x44f475){return{'model':db[_0x44f475[_0x7dac('0x21')]],'as':_0x44f475['as'],'attributes':_0x44f475[_0x7dac('0x1d')],'include':_0x44f475[_0x7dac('0x1f')]?_['map'](_0x44f475[_0x7dac('0x1f')],function(_0x2c9b14){return{'model':db[_0x2c9b14[_0x7dac('0x21')]],'as':_0x2c9b14['as'],'attributes':_0x2c9b14[_0x7dac('0x1d')],'include':_0x2c9b14[_0x7dac('0x1f')]?_[_0x7dac('0x20')](_0x2c9b14['include'],function(_0x1cf4b4){return{'model':db[_0x1cf4b4['model']],'as':_0x1cf4b4['as'],'attributes':_0x1cf4b4[_0x7dac('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x253bc4){logger[_0x7dac('0x25')](_0x7dac('0x26'),_0x30c174);logger[_0x7dac('0x22')](_0x7dac('0x26'),_0x30c174,JSON['stringify'](_0x253bc4));_0x29c529(_0x253bc4);})['catch'](function(_0x1ba418){logger['error'](_0x7dac('0x26'),_0x1ba418[_0x7dac('0x15')],_0x30c174);_0x54944a(_0x16ed63[_0x7dac('0x12')](0x1f4,_0x1ba418[_0x7dac('0x15')]));});});};
\ No newline at end of file
+var _0x9f95=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','register','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','findAll','options','where','limit','map','include','model','attributes','GetChatQueue','ShowChatQueue','raw','lodash'];(function(_0x3b085,_0x250543){var _0x476a57=function(_0x480941){while(--_0x480941){_0x3b085['push'](_0x3b085['shift']());}};_0x476a57(++_0x250543);}(_0x9f95,0x97));var _0x59f9=function(_0x3f2b05,_0x53adad){_0x3f2b05=_0x3f2b05-0x0;var _0x3061a9=_0x9f95[_0x3f2b05];return _0x3061a9;};'use strict';var _=require(_0x59f9('0x0'));var util=require('util');var moment=require(_0x59f9('0x1'));var BPromise=require(_0x59f9('0x2'));var rs=require(_0x59f9('0x3'));var fs=require('fs');var Redis=require(_0x59f9('0x4'));var db=require(_0x59f9('0x5'))['db'];var utils=require(_0x59f9('0x6'));var logger=require(_0x59f9('0x7'))('rpc');var config=require(_0x59f9('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x59f9('0x9')]['http']({'port':0x232a});config['redis']=_[_0x59f9('0xa')](config[_0x59f9('0xb')],{'host':_0x59f9('0xc'),'port':0x18eb});var socket=require(_0x59f9('0xd'))(new Redis(config[_0x59f9('0xb')]));require('./chatQueue.socket')[_0x59f9('0xe')](socket);function respondWithRpcPromise(_0x5289dd,_0x3376f5,_0x527bdf){return new BPromise(function(_0x41b875,_0x42dee0){return client['request'](_0x5289dd,_0x527bdf)[_0x59f9('0xf')](function(_0x3ce834){logger[_0x59f9('0x10')]('ChatQueue,\x20%s,\x20%s',_0x3376f5,_0x59f9('0x11'));logger[_0x59f9('0x12')](_0x59f9('0x13'),_0x3376f5,_0x59f9('0x11'),JSON[_0x59f9('0x14')](_0x3ce834));if(_0x3ce834['error']){if(_0x3ce834[_0x59f9('0x15')][_0x59f9('0x16')]===0x1f4){logger['error'](_0x59f9('0x17'),_0x3376f5,_0x3ce834['error'][_0x59f9('0x18')]);return _0x42dee0(_0x3ce834['error'][_0x59f9('0x18')]);}logger[_0x59f9('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3376f5,_0x3ce834[_0x59f9('0x15')][_0x59f9('0x18')]);return _0x41b875(_0x3ce834[_0x59f9('0x15')][_0x59f9('0x18')]);}else{logger[_0x59f9('0x10')](_0x59f9('0x17'),_0x3376f5,_0x59f9('0x11'));_0x41b875(_0x3ce834[_0x59f9('0x19')]['message']);}})[_0x59f9('0x1a')](function(_0x2d9eec){logger[_0x59f9('0x15')](_0x59f9('0x17'),_0x3376f5,_0x2d9eec);_0x42dee0(_0x2d9eec);});});}exports['GetChatQueue']=function(_0x2ba943){var _0x53aecb=this;return new Promise(function(_0x5c2c85,_0x510159){return db['ChatQueue'][_0x59f9('0x1b')]({'raw':_0x2ba943[_0x59f9('0x1c')]?_0x2ba943[_0x59f9('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x2ba943['options']?_0x2ba943['options'][_0x59f9('0x1d')]||null:null,'attributes':_0x2ba943['options']?_0x2ba943[_0x59f9('0x1c')]['attributes']||null:null,'limit':_0x2ba943[_0x59f9('0x1c')]?_0x2ba943[_0x59f9('0x1c')][_0x59f9('0x1e')]||null:null,'include':_0x2ba943[_0x59f9('0x1c')]?_0x2ba943[_0x59f9('0x1c')]['include']?_[_0x59f9('0x1f')](_0x2ba943[_0x59f9('0x1c')][_0x59f9('0x20')],function(_0x5bd4f1){return{'model':db[_0x5bd4f1[_0x59f9('0x21')]],'as':_0x5bd4f1['as'],'attributes':_0x5bd4f1[_0x59f9('0x22')],'include':_0x5bd4f1['include']?_[_0x59f9('0x1f')](_0x5bd4f1[_0x59f9('0x20')],function(_0xb099e9){return{'model':db[_0xb099e9[_0x59f9('0x21')]],'as':_0xb099e9['as'],'attributes':_0xb099e9[_0x59f9('0x22')],'include':_0xb099e9[_0x59f9('0x20')]?_[_0x59f9('0x1f')](_0xb099e9[_0x59f9('0x20')],function(_0x459624){return{'model':db[_0x459624['model']],'as':_0x459624['as'],'attributes':_0x459624[_0x59f9('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x545e8e){logger['info'](_0x59f9('0x23'),_0x2ba943);logger[_0x59f9('0x12')](_0x59f9('0x23'),_0x2ba943,JSON[_0x59f9('0x14')](_0x545e8e));_0x5c2c85(_0x545e8e);})[_0x59f9('0x1a')](function(_0x5e7f10){logger[_0x59f9('0x15')](_0x59f9('0x23'),_0x5e7f10['message'],_0x2ba943);_0x510159(_0x53aecb[_0x59f9('0x15')](0x1f4,_0x5e7f10['message']));});});};exports[_0x59f9('0x24')]=function(_0x2bad87){var _0x2f935a=this;return new Promise(function(_0x87577b,_0x133d9a){return db['ChatQueue']['find']({'raw':_0x2bad87['options']?_0x2bad87['options'][_0x59f9('0x25')]===undefined?!![]:![]:!![],'where':_0x2bad87['options']?_0x2bad87[_0x59f9('0x1c')][_0x59f9('0x1d')]||null:null,'attributes':_0x2bad87[_0x59f9('0x1c')]?_0x2bad87['options'][_0x59f9('0x22')]||null:null,'include':_0x2bad87['options']?_0x2bad87[_0x59f9('0x1c')][_0x59f9('0x20')]?_[_0x59f9('0x1f')](_0x2bad87[_0x59f9('0x1c')][_0x59f9('0x20')],function(_0x54e19f){return{'model':db[_0x54e19f[_0x59f9('0x21')]],'as':_0x54e19f['as'],'attributes':_0x54e19f[_0x59f9('0x22')],'include':_0x54e19f[_0x59f9('0x20')]?_[_0x59f9('0x1f')](_0x54e19f[_0x59f9('0x20')],function(_0x1a8376){return{'model':db[_0x1a8376['model']],'as':_0x1a8376['as'],'attributes':_0x1a8376[_0x59f9('0x22')],'include':_0x1a8376[_0x59f9('0x20')]?_[_0x59f9('0x1f')](_0x1a8376[_0x59f9('0x20')],function(_0x1f42ba){return{'model':db[_0x1f42ba[_0x59f9('0x21')]],'as':_0x1f42ba['as'],'attributes':_0x1f42ba['attributes']};}):[]};}):[]};}):[]:[]})[_0x59f9('0xf')](function(_0x232275){logger[_0x59f9('0x10')](_0x59f9('0x24'),_0x2bad87);logger[_0x59f9('0x12')]('ShowChatQueue',_0x2bad87,JSON[_0x59f9('0x14')](_0x232275));_0x87577b(_0x232275);})['catch'](function(_0x4c7e8e){logger[_0x59f9('0x15')]('ShowChatQueue',_0x4c7e8e['message'],_0x2bad87);_0x133d9a(_0x2f935a[_0x59f9('0x15')](0x1f4,_0x4c7e8e[_0x59f9('0x18')]));});});};
\ No newline at end of file
index 33936ed..ca0ee06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x984b=['chatQueue:','update','length'];(function(_0x519f41,_0x40fe84){var _0x44e47b=function(_0x214c81){while(--_0x214c81){_0x519f41['push'](_0x519f41['shift']());}};_0x44e47b(++_0x40fe84);}(_0x984b,0xee));var _0xb984=function(_0x4f2b01,_0x182758){_0x4f2b01=_0x4f2b01-0x0;var _0x344db9=_0x984b[_0x4f2b01];return _0x344db9;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=['save','remove',_0xb984('0x0')];function createListener(_0x394106,_0x1a7da0){return function(_0x572113){_0x1a7da0['emit'](_0x394106,_0x572113);};}function removeListener(_0x8384b0,_0x340f2c){return function(){ChatQueueEvents['removeListener'](_0x8384b0,_0x340f2c);};}exports['register']=function(_0x2cca53){for(var _0x46c541=0x0,_0x5a605a=events[_0xb984('0x1')];_0x46c541<_0x5a605a;_0x46c541++){var _0x1a00d6=events[_0x46c541];var _0x4d72b7=createListener(_0xb984('0x2')+_0x1a00d6,_0x2cca53);ChatQueueEvents['on'](_0x1a00d6,_0x4d72b7);}};
\ No newline at end of file
+var _0x6aa7=['update','emit','length','chatQueue:','./chatQueue.events','remove'];(function(_0xbb146,_0x1b3260){var _0x5094d0=function(_0x3bd1c0){while(--_0x3bd1c0){_0xbb146['push'](_0xbb146['shift']());}};_0x5094d0(++_0x1b3260);}(_0x6aa7,0x178));var _0x76aa=function(_0x11f568,_0x27e975){_0x11f568=_0x11f568-0x0;var _0x11a019=_0x6aa7[_0x11f568];return _0x11a019;};'use strict';var ChatQueueEvents=require(_0x76aa('0x0'));var events=['save',_0x76aa('0x1'),_0x76aa('0x2')];function createListener(_0x25c818,_0x2db4fe){return function(_0x4f007e){_0x2db4fe[_0x76aa('0x3')](_0x25c818,_0x4f007e);};}function removeListener(_0xef15ef,_0x1d6e04){return function(){ChatQueueEvents['removeListener'](_0xef15ef,_0x1d6e04);};}exports['register']=function(_0x1aceaa){for(var _0x4d53f6=0x0,_0x32dee5=events[_0x76aa('0x4')];_0x4d53f6<_0x32dee5;_0x4d53f6++){var _0xa9b695=events[_0x4d53f6];var _0x56d6bc=createListener(_0x76aa('0x5')+_0xa9b695,_0x1aceaa);ChatQueueEvents['on'](_0xa9b695,_0x56d6bc);}};
\ No newline at end of file
index 176dfcf..2291111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x5fc3,0xa8));var _0x35fc=function(_0x37a7c6,_0x3a84b6){_0x37a7c6=_0x37a7c6-0x0;var _0x539905=_0x5fc3[_0x37a7c6];return _0x539905;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
+var _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(_0x5489c1,_0x4dc85d){var _0x4ab0ee=function(_0x240ca2){while(--_0x240ca2){_0x5489c1['push'](_0x5489c1['shift']());}};_0x4ab0ee(++_0x4dc85d);}(_0xe14b,0x93));var _0xbe14=function(_0xf823ef,_0x2f7a1b){_0xf823ef=_0xf823ef-0x0;var _0x456a79=_0xe14b[_0xf823ef];return _0x456a79;};'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
index b1ab08a..d3a2797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f4c=['STRING','DATE','moment','exports'];(function(_0x5a62b2,_0x15bd8e){var _0x3b4ef0=function(_0x591c36){while(--_0x591c36){_0x5a62b2['push'](_0x5a62b2['shift']());}};_0x3b4ef0(++_0x15bd8e);}(_0x9f4c,0x19a));var _0xc9f4=function(_0x5c22a0,_0x443a88){_0x5c22a0=_0x5c22a0-0x0;var _0x35db4f=_0x9f4c[_0x5c22a0];return _0x35db4f;};'use strict';var moment=require(_0xc9f4('0x0'));var Sequelize=require('sequelize');module[_0xc9f4('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xc9f4('0x2')]},'joinAt':{'type':Sequelize[_0xc9f4('0x3')]},'leaveAt':{'type':Sequelize[_0xc9f4('0x3')]},'acceptAt':{'type':Sequelize[_0xc9f4('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xc9f4('0x2')]}};
\ No newline at end of file
+var _0x57fe=['sequelize','STRING','DATE','moment'];(function(_0x1e03ce,_0x4bfdb3){var _0x1284a2=function(_0x1516ef){while(--_0x1516ef){_0x1e03ce['push'](_0x1e03ce['shift']());}};_0x1284a2(++_0x4bfdb3);}(_0x57fe,0x13b));var _0xe57f=function(_0x513951,_0xccc3cc){_0x513951=_0x513951-0x0;var _0x34657c=_0x57fe[_0x513951];return _0x34657c;};'use strict';var moment=require(_0xe57f('0x0'));var Sequelize=require(_0xe57f('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xe57f('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe57f('0x2')]},'joinAt':{'type':Sequelize[_0xe57f('0x3')]},'leaveAt':{'type':Sequelize[_0xe57f('0x3')]},'acceptAt':{'type':Sequelize[_0xe57f('0x3')]},'exitAt':{'type':Sequelize[_0xe57f('0x3')]},'reason':{'type':Sequelize[_0xe57f('0x2')]}};
\ No newline at end of file
index b451710..f89a078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c71=['bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment'];(function(_0x3c202f,_0x1e76a9){var _0xf5a277=function(_0x28e83b){while(--_0x28e83b){_0x3c202f['push'](_0x3c202f['shift']());}};_0xf5a277(++_0x1e76a9);}(_0x7c71,0x177));var _0x17c7=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x7c71[_0x47aa64];return _0x549c7a;};'use strict';var emlformat=require(_0x17c7('0x0'));var rimraf=require(_0x17c7('0x1'));var zipdir=require(_0x17c7('0x2'));var jsonpatch=require(_0x17c7('0x3'));var rp=require('request-promise');var moment=require(_0x17c7('0x4'));var BPromise=require(_0x17c7('0x5'));var Mustache=require(_0x17c7('0x6'));var util=require('util');var path=require('path');var sox=require(_0x17c7('0x7'));var csv=require(_0x17c7('0x8'));var ejs=require(_0x17c7('0x9'));var fs=require('fs');var fs_extra=require(_0x17c7('0xa'));var _=require(_0x17c7('0xb'));var squel=require(_0x17c7('0xc'));var crypto=require(_0x17c7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x17c7('0xe'));var toCsv=require(_0x17c7('0x8'));var querystring=require(_0x17c7('0xf'));var Papa=require(_0x17c7('0x10'));var Redis=require(_0x17c7('0x11'));var authService=require(_0x17c7('0x12'));var qs=require(_0x17c7('0x13'));var as=require(_0x17c7('0x14'));var hardwareService=require(_0x17c7('0x15'));var logger=require(_0x17c7('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x17c7('0x17'));var licenseUtil=require(_0x17c7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x430506,_0x22ad50){_0x22ad50=_0x22ad50||0xcc;return function(_0x4fd6af){if(_0x4fd6af){return _0x430506[_0x17c7('0x19')](_0x22ad50);}return _0x430506[_0x17c7('0x1a')](_0x22ad50)['end']();};}function respondWithResult(_0x56ef3b,_0xfae300){_0xfae300=_0xfae300||0xc8;return function(_0x2d980d){if(_0x2d980d){return _0x56ef3b[_0x17c7('0x1a')](_0xfae300)[_0x17c7('0x1b')](_0x2d980d);}};}function respondWithFilteredResult(_0x3d0fb2,_0x2851){return function(_0x2c992f){if(_0x2c992f){var _0x295168=typeof _0x2851[_0x17c7('0x1c')]===_0x17c7('0x1d')&&typeof _0x2851[_0x17c7('0x1e')]===_0x17c7('0x1d');var _0x5470ab=_0x2c992f[_0x17c7('0x1f')];var _0x81d998=_0x295168?0x0:_0x2851['offset'];var _0x42d06c=_0x295168?_0x2c992f[_0x17c7('0x1f')]:_0x2851[_0x17c7('0x1c')]+_0x2851[_0x17c7('0x1e')];var _0x5b9e72;if(_0x42d06c>=_0x5470ab){_0x42d06c=_0x5470ab;_0x5b9e72=0xc8;}else{_0x5b9e72=0xce;}_0x3d0fb2['status'](_0x5b9e72);return _0x3d0fb2[_0x17c7('0x20')](_0x17c7('0x21'),_0x81d998+'-'+_0x42d06c+'/'+_0x5470ab)[_0x17c7('0x1b')](_0x2c992f);}return null;};}function patchUpdates(_0x86956b){return function(_0x2579b7){try{jsonpatch[_0x17c7('0x22')](_0x2579b7,_0x86956b,!![]);}catch(_0x357c27){return BPromise['reject'](_0x357c27);}return _0x2579b7[_0x17c7('0x23')]();};}function saveUpdates(_0x3885c8,_0x3c25ba){return function(_0x16700d){if(_0x16700d){return _0x16700d[_0x17c7('0x24')](_0x3885c8)[_0x17c7('0x25')](function(_0x29a4ac){return _0x29a4ac;});}return null;};}function removeEntity(_0x196e0e,_0x512c3c){return function(_0x312373){if(_0x312373){return _0x312373[_0x17c7('0x26')]()[_0x17c7('0x25')](function(){_0x196e0e[_0x17c7('0x1a')](0xcc)[_0x17c7('0x27')]();});}};}function handleEntityNotFound(_0xa6cfe5,_0x4eb516){return function(_0x36236d){if(!_0x36236d){_0xa6cfe5[_0x17c7('0x19')](0x194);}return _0x36236d;};}function handleError(_0x5e21ec,_0x30a3be){_0x30a3be=_0x30a3be||0x1f4;return function(_0x4d2460){logger[_0x17c7('0x28')](_0x4d2460[_0x17c7('0x29')]);if(_0x4d2460['name']){delete _0x4d2460[_0x17c7('0x2a')];}_0x5e21ec[_0x17c7('0x1a')](_0x30a3be)[_0x17c7('0x2b')](_0x4d2460);};}exports[_0x17c7('0x2c')]=function(_0xe6f177,_0xc6d7b2){var _0x3ca9d3={},_0x14ddac={},_0x3ccf3b={'count':0x0,'rows':[]};var _0x24a2cc=_[_0x17c7('0x2d')](db[_0x17c7('0x2e')][_0x17c7('0x2f')],function(_0xd38b0b){return{'name':_0xd38b0b['fieldName'],'type':_0xd38b0b[_0x17c7('0x30')]['key']};});_0x14ddac[_0x17c7('0x31')]=_[_0x17c7('0x2d')](_0x24a2cc,_0x17c7('0x2a'));_0x14ddac[_0x17c7('0x32')]=_[_0x17c7('0x33')](_0xe6f177['query']);_0x14ddac['filters']=_[_0x17c7('0x34')](_0x14ddac[_0x17c7('0x31')],_0x14ddac[_0x17c7('0x32')]);_0x3ca9d3[_0x17c7('0x35')]=_[_0x17c7('0x34')](_0x14ddac[_0x17c7('0x31')],qs[_0x17c7('0x36')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x36')]));_0x3ca9d3['attributes']=_0x3ca9d3[_0x17c7('0x35')][_0x17c7('0x37')]?_0x3ca9d3[_0x17c7('0x35')]:_0x14ddac['model'];if(!_0xe6f177[_0x17c7('0x32')][_0x17c7('0x38')](_0x17c7('0x39'))){_0x3ca9d3[_0x17c7('0x1e')]=qs[_0x17c7('0x1e')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x1e')]);_0x3ca9d3['offset']=qs['offset'](_0xe6f177['query'][_0x17c7('0x1c')]);}_0x3ca9d3['order']=qs[_0x17c7('0x3a')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3a')]);_0x3ca9d3['where']=qs[_0x17c7('0x3b')](_['pick'](_0xe6f177['query'],_0x14ddac[_0x17c7('0x3b')]),_0x24a2cc);if(_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3c')]){_0x3ca9d3[_0x17c7('0x3d')]=_[_0x17c7('0x3e')](_0x3ca9d3[_0x17c7('0x3d')],{'$or':_[_0x17c7('0x2d')](_0x24a2cc,function(_0x342b18){if(_0x342b18[_0x17c7('0x30')]!==_0x17c7('0x3f')){var _0x4ae7a6={};_0x4ae7a6[_0x342b18[_0x17c7('0x2a')]]={'$like':'%'+_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3c')]+'%'};return _0x4ae7a6;}})});}_0x3ca9d3=_[_0x17c7('0x3e')]({},_0x3ca9d3,_0xe6f177[_0x17c7('0x40')]);var _0xbd845c={'where':_0x3ca9d3['where']};return db[_0x17c7('0x2e')][_0x17c7('0x1f')](_0xbd845c)[_0x17c7('0x25')](function(_0x21f15d){_0x3ccf3b[_0x17c7('0x1f')]=_0x21f15d;if(_0xe6f177[_0x17c7('0x32')][_0x17c7('0x41')]){_0x3ca9d3['include']=[{'all':!![]}];}return db['ChatQueueReport'][_0x17c7('0x42')](_0x3ca9d3);})[_0x17c7('0x25')](function(_0xef91f1){_0x3ccf3b[_0x17c7('0x43')]=_0xef91f1;return _0x3ccf3b;})[_0x17c7('0x25')](respondWithFilteredResult(_0xc6d7b2,_0x3ca9d3))['catch'](handleError(_0xc6d7b2,null));};exports[_0x17c7('0x44')]=function(_0x2813ef,_0x5b45db){var _0x13420f={'raw':!![],'where':{'id':_0x2813ef['params']['id']}},_0x3d4f9d={};_0x3d4f9d[_0x17c7('0x31')]=_[_0x17c7('0x33')](db[_0x17c7('0x2e')]['rawAttributes']);_0x3d4f9d['query']=_[_0x17c7('0x33')](_0x2813ef[_0x17c7('0x32')]);_0x3d4f9d[_0x17c7('0x3b')]=_['intersection'](_0x3d4f9d[_0x17c7('0x31')],_0x3d4f9d['query']);_0x13420f[_0x17c7('0x35')]=_['intersection'](_0x3d4f9d[_0x17c7('0x31')],qs[_0x17c7('0x36')](_0x2813ef[_0x17c7('0x32')]['fields']));_0x13420f[_0x17c7('0x35')]=_0x13420f[_0x17c7('0x35')][_0x17c7('0x37')]?_0x13420f[_0x17c7('0x35')]:_0x3d4f9d[_0x17c7('0x31')];if(_0x2813ef[_0x17c7('0x32')][_0x17c7('0x41')]){_0x13420f[_0x17c7('0x45')]=[{'all':!![]}];}_0x13420f=_[_0x17c7('0x3e')]({},_0x13420f,_0x2813ef[_0x17c7('0x40')]);return db['ChatQueueReport'][_0x17c7('0x46')](_0x13420f)['then'](handleEntityNotFound(_0x5b45db,null))[_0x17c7('0x25')](respondWithResult(_0x5b45db,null))['catch'](handleError(_0x5b45db,null));};exports[_0x17c7('0x47')]=function(_0x48d0e5,_0x3b2e65){return db[_0x17c7('0x2e')]['create'](_0x48d0e5['body'],{})[_0x17c7('0x25')](respondWithResult(_0x3b2e65,0xc9))[_0x17c7('0x48')](handleError(_0x3b2e65,null));};exports[_0x17c7('0x24')]=function(_0x32d007,_0x2f1136){if(_0x32d007[_0x17c7('0x49')]['id']){delete _0x32d007[_0x17c7('0x49')]['id'];}return db[_0x17c7('0x2e')]['find']({'where':{'id':_0x32d007[_0x17c7('0x4a')]['id']}})[_0x17c7('0x25')](handleEntityNotFound(_0x2f1136,null))[_0x17c7('0x25')](saveUpdates(_0x32d007[_0x17c7('0x49')],null))[_0x17c7('0x25')](respondWithResult(_0x2f1136,null))[_0x17c7('0x48')](handleError(_0x2f1136,null));};exports[_0x17c7('0x26')]=function(_0x5166c0,_0xb2bb36){return db[_0x17c7('0x2e')]['find']({'where':{'id':_0x5166c0[_0x17c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0xb2bb36,null))[_0x17c7('0x25')](removeEntity(_0xb2bb36,null))[_0x17c7('0x48')](handleError(_0xb2bb36,null));};exports[_0x17c7('0x4b')]=function(_0x292d21,_0x6519f2){return db[_0x17c7('0x2e')][_0x17c7('0x4b')]()[_0x17c7('0x25')](respondWithResult(_0x6519f2,null))[_0x17c7('0x48')](handleError(_0x6519f2,null));};
\ No newline at end of file
+var _0x8861=['then','error','stack','name','send','index','ChatQueueReport','rawAttributes','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','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/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','offset','limit','count','status','Content-Range','apply','save','update','destroy'];(function(_0x5b8118,_0x1ebf18){var _0x2862b3=function(_0x4c0b33){while(--_0x4c0b33){_0x5b8118['push'](_0x5b8118['shift']());}};_0x2862b3(++_0x1ebf18);}(_0x8861,0x6d));var _0x1886=function(_0x4f9544,_0x34fab3){_0x4f9544=_0x4f9544-0x0;var _0x3680b4=_0x8861[_0x4f9544];return _0x3680b4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1886('0x0'));var jsonpatch=require(_0x1886('0x1'));var rp=require(_0x1886('0x2'));var moment=require(_0x1886('0x3'));var BPromise=require(_0x1886('0x4'));var Mustache=require(_0x1886('0x5'));var util=require(_0x1886('0x6'));var path=require(_0x1886('0x7'));var sox=require(_0x1886('0x8'));var csv=require(_0x1886('0x9'));var ejs=require(_0x1886('0xa'));var fs=require('fs');var fs_extra=require(_0x1886('0xb'));var _=require(_0x1886('0xc'));var squel=require(_0x1886('0xd'));var crypto=require(_0x1886('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x1886('0xf'));var toCsv=require('to-csv');var querystring=require(_0x1886('0x10'));var Papa=require('papaparse');var Redis=require(_0x1886('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1886('0x12'));var as=require(_0x1886('0x13'));var hardwareService=require(_0x1886('0x14'));var logger=require(_0x1886('0x15'))(_0x1886('0x16'));var utils=require(_0x1886('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1886('0x18'));var db=require(_0x1886('0x19'))['db'];function respondWithStatusCode(_0x13a77f,_0x30c26a){_0x30c26a=_0x30c26a||0xcc;return function(_0x101b21){if(_0x101b21){return _0x13a77f[_0x1886('0x1a')](_0x30c26a);}return _0x13a77f['status'](_0x30c26a)['end']();};}function respondWithResult(_0x26dcf9,_0x23ec3f){_0x23ec3f=_0x23ec3f||0xc8;return function(_0x218d82){if(_0x218d82){return _0x26dcf9['status'](_0x23ec3f)[_0x1886('0x1b')](_0x218d82);}};}function respondWithFilteredResult(_0x43f020,_0x3767ba){return function(_0x4993fe){if(_0x4993fe){var _0x54d2ee=typeof _0x3767ba[_0x1886('0x1c')]==='undefined'&&typeof _0x3767ba[_0x1886('0x1d')]==='undefined';var _0xe3ba5e=_0x4993fe['count'];var _0x59e422=_0x54d2ee?0x0:_0x3767ba[_0x1886('0x1c')];var _0x33765e=_0x54d2ee?_0x4993fe[_0x1886('0x1e')]:_0x3767ba[_0x1886('0x1c')]+_0x3767ba[_0x1886('0x1d')];var _0x1c9a22;if(_0x33765e>=_0xe3ba5e){_0x33765e=_0xe3ba5e;_0x1c9a22=0xc8;}else{_0x1c9a22=0xce;}_0x43f020[_0x1886('0x1f')](_0x1c9a22);return _0x43f020['set'](_0x1886('0x20'),_0x59e422+'-'+_0x33765e+'/'+_0xe3ba5e)[_0x1886('0x1b')](_0x4993fe);}return null;};}function patchUpdates(_0x49dc6c){return function(_0x3df84f){try{jsonpatch[_0x1886('0x21')](_0x3df84f,_0x49dc6c,!![]);}catch(_0x2f39c4){return BPromise['reject'](_0x2f39c4);}return _0x3df84f[_0x1886('0x22')]();};}function saveUpdates(_0x1b4fb0,_0x257831){return function(_0x452f93){if(_0x452f93){return _0x452f93[_0x1886('0x23')](_0x1b4fb0)['then'](function(_0x500e13){return _0x500e13;});}return null;};}function removeEntity(_0x3f7bb1,_0x345bd7){return function(_0x2e508c){if(_0x2e508c){return _0x2e508c[_0x1886('0x24')]()[_0x1886('0x25')](function(){_0x3f7bb1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c8841,_0x3c4d84){return function(_0x195846){if(!_0x195846){_0x1c8841['sendStatus'](0x194);}return _0x195846;};}function handleError(_0x2d2dff,_0x188ab5){_0x188ab5=_0x188ab5||0x1f4;return function(_0x410046){logger[_0x1886('0x26')](_0x410046[_0x1886('0x27')]);if(_0x410046[_0x1886('0x28')]){delete _0x410046[_0x1886('0x28')];}_0x2d2dff[_0x1886('0x1f')](_0x188ab5)[_0x1886('0x29')](_0x410046);};}exports[_0x1886('0x2a')]=function(_0x13fe64,_0x177307){var _0x4edca2={},_0x2e7a79={},_0x11c0d2={'count':0x0,'rows':[]};var _0x1bd068=_['map'](db[_0x1886('0x2b')][_0x1886('0x2c')],function(_0x3d1142){return{'name':_0x3d1142['fieldName'],'type':_0x3d1142['type']['key']};});_0x2e7a79[_0x1886('0x2d')]=_[_0x1886('0x2e')](_0x1bd068,_0x1886('0x28'));_0x2e7a79[_0x1886('0x2f')]=_[_0x1886('0x30')](_0x13fe64[_0x1886('0x2f')]);_0x2e7a79['filters']=_[_0x1886('0x31')](_0x2e7a79[_0x1886('0x2d')],_0x2e7a79['query']);_0x4edca2[_0x1886('0x32')]=_['intersection'](_0x2e7a79['model'],qs[_0x1886('0x33')](_0x13fe64[_0x1886('0x2f')][_0x1886('0x33')]));_0x4edca2[_0x1886('0x32')]=_0x4edca2[_0x1886('0x32')][_0x1886('0x34')]?_0x4edca2[_0x1886('0x32')]:_0x2e7a79[_0x1886('0x2d')];if(!_0x13fe64[_0x1886('0x2f')][_0x1886('0x35')]('nolimit')){_0x4edca2['limit']=qs[_0x1886('0x1d')](_0x13fe64['query'][_0x1886('0x1d')]);_0x4edca2[_0x1886('0x1c')]=qs[_0x1886('0x1c')](_0x13fe64[_0x1886('0x2f')][_0x1886('0x1c')]);}_0x4edca2[_0x1886('0x36')]=qs[_0x1886('0x37')](_0x13fe64['query'][_0x1886('0x37')]);_0x4edca2[_0x1886('0x38')]=qs[_0x1886('0x39')](_[_0x1886('0x3a')](_0x13fe64[_0x1886('0x2f')],_0x2e7a79[_0x1886('0x39')]),_0x1bd068);if(_0x13fe64[_0x1886('0x2f')][_0x1886('0x3b')]){_0x4edca2['where']=_[_0x1886('0x3c')](_0x4edca2[_0x1886('0x38')],{'$or':_[_0x1886('0x2e')](_0x1bd068,function(_0x89bded){if(_0x89bded[_0x1886('0x3d')]!=='VIRTUAL'){var _0x39694d={};_0x39694d[_0x89bded['name']]={'$like':'%'+_0x13fe64['query']['filter']+'%'};return _0x39694d;}})});}_0x4edca2=_[_0x1886('0x3c')]({},_0x4edca2,_0x13fe64[_0x1886('0x3e')]);var _0x5dafa6={'where':_0x4edca2[_0x1886('0x38')]};return db['ChatQueueReport']['count'](_0x5dafa6)[_0x1886('0x25')](function(_0xe85aad){_0x11c0d2[_0x1886('0x1e')]=_0xe85aad;if(_0x13fe64[_0x1886('0x2f')][_0x1886('0x3f')]){_0x4edca2[_0x1886('0x40')]=[{'all':!![]}];}return db[_0x1886('0x2b')][_0x1886('0x41')](_0x4edca2);})[_0x1886('0x25')](function(_0x298be6){_0x11c0d2[_0x1886('0x42')]=_0x298be6;return _0x11c0d2;})[_0x1886('0x25')](respondWithFilteredResult(_0x177307,_0x4edca2))[_0x1886('0x43')](handleError(_0x177307,null));};exports[_0x1886('0x44')]=function(_0x8d162d,_0x2d406e){var _0x28abde={'raw':!![],'where':{'id':_0x8d162d[_0x1886('0x45')]['id']}},_0x412970={};_0x412970[_0x1886('0x2d')]=_[_0x1886('0x30')](db[_0x1886('0x2b')][_0x1886('0x2c')]);_0x412970[_0x1886('0x2f')]=_[_0x1886('0x30')](_0x8d162d['query']);_0x412970[_0x1886('0x39')]=_['intersection'](_0x412970[_0x1886('0x2d')],_0x412970['query']);_0x28abde[_0x1886('0x32')]=_['intersection'](_0x412970[_0x1886('0x2d')],qs['fields'](_0x8d162d[_0x1886('0x2f')]['fields']));_0x28abde[_0x1886('0x32')]=_0x28abde['attributes'][_0x1886('0x34')]?_0x28abde['attributes']:_0x412970[_0x1886('0x2d')];if(_0x8d162d['query'][_0x1886('0x3f')]){_0x28abde['include']=[{'all':!![]}];}_0x28abde=_[_0x1886('0x3c')]({},_0x28abde,_0x8d162d[_0x1886('0x3e')]);return db['ChatQueueReport'][_0x1886('0x46')](_0x28abde)[_0x1886('0x25')](handleEntityNotFound(_0x2d406e,null))[_0x1886('0x25')](respondWithResult(_0x2d406e,null))['catch'](handleError(_0x2d406e,null));};exports[_0x1886('0x47')]=function(_0x22b229,_0x55f03d){return db[_0x1886('0x2b')][_0x1886('0x47')](_0x22b229[_0x1886('0x48')],{})[_0x1886('0x25')](respondWithResult(_0x55f03d,0xc9))[_0x1886('0x43')](handleError(_0x55f03d,null));};exports[_0x1886('0x23')]=function(_0x40e260,_0x5022ae){if(_0x40e260[_0x1886('0x48')]['id']){delete _0x40e260['body']['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x40e260[_0x1886('0x45')]['id']}})[_0x1886('0x25')](handleEntityNotFound(_0x5022ae,null))['then'](saveUpdates(_0x40e260[_0x1886('0x48')],null))[_0x1886('0x25')](respondWithResult(_0x5022ae,null))[_0x1886('0x43')](handleError(_0x5022ae,null));};exports[_0x1886('0x24')]=function(_0x303a43,_0x5b2caf){return db[_0x1886('0x2b')]['find']({'where':{'id':_0x303a43[_0x1886('0x45')]['id']}})[_0x1886('0x25')](handleEntityNotFound(_0x5b2caf,null))[_0x1886('0x25')](removeEntity(_0x5b2caf,null))[_0x1886('0x43')](handleError(_0x5b2caf,null));};exports['describe']=function(_0x416164,_0x6595f){return db['ChatQueueReport']['describe']()['then'](respondWithResult(_0x6595f,null))['catch'](handleError(_0x6595f,null));};
\ No newline at end of file
index 89b0922..c1d1ba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x443494,_0x51fc7e){var _0x4a6794=function(_0x15197a){while(--_0x15197a){_0x443494['push'](_0x443494['shift']());}};_0x4a6794(++_0x51fc7e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x4277ba,_0x39dd98){var _0x2e6f3d=function(_0x4a218c){while(--_0x4a218c){_0x4277ba['push'](_0x4277ba['shift']());}};_0x2e6f3d(++_0x39dd98);}(_0x757a,0xde));var _0xa757=function(_0xae522a,_0x49854d){_0xae522a=_0xae522a-0x0;var _0x62d323=_0x757a[_0xae522a];return _0x62d323;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index a0a2314..4ec78ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f6=['ChatQueueReport','body','options','CreateChatQueueReport','UpdateChatQueueReport','update','raw','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatQueueReport,\x20%s,\x20%s','catch'];(function(_0x4fb23a,_0x4e0d5d){var _0x1fbabb=function(_0x2aec4d){while(--_0x2aec4d){_0x4fb23a['push'](_0x4fb23a['shift']());}};_0x1fbabb(++_0x4e0d5d);}(_0x41f6,0x8e));var _0x641f=function(_0x163040,_0x38a58c){_0x163040=_0x163040-0x0;var _0x364667=_0x41f6[_0x163040];return _0x364667;};'use strict';var _=require(_0x641f('0x0'));var util=require('util');var moment=require(_0x641f('0x1'));var BPromise=require(_0x641f('0x2'));var rs=require(_0x641f('0x3'));var fs=require('fs');var Redis=require(_0x641f('0x4'));var db=require(_0x641f('0x5'))['db'];var utils=require(_0x641f('0x6'));var logger=require(_0x641f('0x7'))(_0x641f('0x8'));var config=require(_0x641f('0x9'));var jayson=require(_0x641f('0xa'));var client=jayson[_0x641f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x118c00,_0x48c950,_0x5448f0){return new BPromise(function(_0x3425ca,_0x116a33){return client[_0x641f('0xc')](_0x118c00,_0x5448f0)[_0x641f('0xd')](function(_0x2ec42e){logger[_0x641f('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x48c950,_0x641f('0xf'));logger[_0x641f('0x10')](_0x641f('0x11'),_0x48c950,_0x641f('0xf'),JSON[_0x641f('0x12')](_0x2ec42e));if(_0x2ec42e[_0x641f('0x13')]){if(_0x2ec42e[_0x641f('0x13')]['code']===0x1f4){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x48c950,_0x2ec42e[_0x641f('0x13')][_0x641f('0x14')]);return _0x116a33(_0x2ec42e['error'][_0x641f('0x14')]);}logger[_0x641f('0x13')](_0x641f('0x15'),_0x48c950,_0x2ec42e[_0x641f('0x13')][_0x641f('0x14')]);return _0x3425ca(_0x2ec42e[_0x641f('0x13')][_0x641f('0x14')]);}else{logger['info'](_0x641f('0x15'),_0x48c950,'request\x20sent');_0x3425ca(_0x2ec42e['result']['message']);}})[_0x641f('0x16')](function(_0x51ba91){logger[_0x641f('0x13')]('ChatQueueReport,\x20%s,\x20%s',_0x48c950,_0x51ba91);_0x116a33(_0x51ba91);});});}exports['CreateChatQueueReport']=function(_0x33bd72){var _0x2bd75d=this;return new Promise(function(_0x4e4dfb,_0x2d869d){return db[_0x641f('0x17')]['create'](_0x33bd72[_0x641f('0x18')],{'raw':_0x33bd72[_0x641f('0x19')]?_0x33bd72[_0x641f('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x641f('0xd')](function(_0x6e8629){logger[_0x641f('0xe')](_0x641f('0x1a'),_0x33bd72);logger[_0x641f('0x10')](_0x641f('0x1a'),_0x33bd72,JSON['stringify'](_0x6e8629));_0x4e4dfb(_0x6e8629);})[_0x641f('0x16')](function(_0x50e391){logger['error'](_0x641f('0x1a'),_0x50e391['message'],_0x33bd72);_0x2d869d(_0x2bd75d[_0x641f('0x13')](0x1f4,_0x50e391[_0x641f('0x14')]));});});};exports[_0x641f('0x1b')]=function(_0x172ad6){var _0xb2dcea=this;return new Promise(function(_0x274347,_0x4a3d2a){return db['ChatQueueReport'][_0x641f('0x1c')](_0x172ad6['body'],{'raw':_0x172ad6[_0x641f('0x19')]?_0x172ad6[_0x641f('0x19')][_0x641f('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x172ad6[_0x641f('0x19')]?_0x172ad6[_0x641f('0x19')][_0x641f('0x1e')]||null:null,'attributes':_0x172ad6['options']?_0x172ad6[_0x641f('0x19')][_0x641f('0x1f')]||null:null,'limit':_0x172ad6[_0x641f('0x19')]?_0x172ad6['options'][_0x641f('0x20')]||null:null})['then'](function(_0x346bda){logger['info'](_0x641f('0x1b'),_0x172ad6);logger['debug'](_0x641f('0x1b'),_0x172ad6,JSON[_0x641f('0x12')](_0x346bda));_0x274347(_0x346bda);})[_0x641f('0x16')](function(_0x138810){logger['error'](_0x641f('0x1b'),_0x138810['message'],_0x172ad6);_0x4a3d2a(_0xb2dcea[_0x641f('0x13')](0x1f4,_0x138810[_0x641f('0x14')]));});});};
\ No newline at end of file
+var _0x8fde=['catch','ChatQueueReport','create','body','options','raw','then','CreateChatQueueReport','stringify','UpdateChatQueueReport','update','where','attributes','limit','debug','util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','code','error','message','result'];(function(_0x588fde,_0x11084e){var _0x1da4d9=function(_0x4638e5){while(--_0x4638e5){_0x588fde['push'](_0x588fde['shift']());}};_0x1da4d9(++_0x11084e);}(_0x8fde,0x138));var _0xe8fd=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x8fde[_0x42cae2];return _0x5f256f;};'use strict';var _=require('lodash');var util=require(_0xe8fd('0x0'));var moment=require('moment');var BPromise=require(_0xe8fd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe8fd('0x2'));var logger=require(_0xe8fd('0x3'))(_0xe8fd('0x4'));var config=require(_0xe8fd('0x5'));var jayson=require(_0xe8fd('0x6'));var client=jayson[_0xe8fd('0x7')][_0xe8fd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x9236d6,_0x1f07cb,_0xaee575){return new BPromise(function(_0x2eb4cf,_0x31f334){return client[_0xe8fd('0x9')](_0x9236d6,_0xaee575)['then'](function(_0x537227){logger[_0xe8fd('0xa')](_0xe8fd('0xb'),_0x1f07cb,_0xe8fd('0xc'));logger['debug'](_0xe8fd('0xd'),_0x1f07cb,_0xe8fd('0xc'),JSON['stringify'](_0x537227));if(_0x537227['error']){if(_0x537227['error'][_0xe8fd('0xe')]===0x1f4){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x1f07cb,_0x537227[_0xe8fd('0xf')][_0xe8fd('0x10')]);return _0x31f334(_0x537227[_0xe8fd('0xf')][_0xe8fd('0x10')]);}logger[_0xe8fd('0xf')](_0xe8fd('0xb'),_0x1f07cb,_0x537227[_0xe8fd('0xf')][_0xe8fd('0x10')]);return _0x2eb4cf(_0x537227[_0xe8fd('0xf')][_0xe8fd('0x10')]);}else{logger[_0xe8fd('0xa')](_0xe8fd('0xb'),_0x1f07cb,_0xe8fd('0xc'));_0x2eb4cf(_0x537227[_0xe8fd('0x11')][_0xe8fd('0x10')]);}})[_0xe8fd('0x12')](function(_0xa6fe4c){logger[_0xe8fd('0xf')](_0xe8fd('0xb'),_0x1f07cb,_0xa6fe4c);_0x31f334(_0xa6fe4c);});});}exports['CreateChatQueueReport']=function(_0x8eafb7){var _0x2549b9=this;return new Promise(function(_0x18adf5,_0x1c9d0c){return db[_0xe8fd('0x13')][_0xe8fd('0x14')](_0x8eafb7[_0xe8fd('0x15')],{'raw':_0x8eafb7[_0xe8fd('0x16')]?_0x8eafb7[_0xe8fd('0x16')][_0xe8fd('0x17')]===undefined?!![]:![]:!![]})[_0xe8fd('0x18')](function(_0x39a3e3){logger[_0xe8fd('0xa')](_0xe8fd('0x19'),_0x8eafb7);logger['debug'](_0xe8fd('0x19'),_0x8eafb7,JSON[_0xe8fd('0x1a')](_0x39a3e3));_0x18adf5(_0x39a3e3);})['catch'](function(_0x2f1a00){logger['error'](_0xe8fd('0x19'),_0x2f1a00['message'],_0x8eafb7);_0x1c9d0c(_0x2549b9[_0xe8fd('0xf')](0x1f4,_0x2f1a00[_0xe8fd('0x10')]));});});};exports[_0xe8fd('0x1b')]=function(_0x45b52c){var _0x4098fb=this;return new Promise(function(_0x3ab225,_0x25c199){return db[_0xe8fd('0x13')][_0xe8fd('0x1c')](_0x45b52c[_0xe8fd('0x15')],{'raw':_0x45b52c['options']?_0x45b52c[_0xe8fd('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45b52c[_0xe8fd('0x16')]?_0x45b52c[_0xe8fd('0x16')][_0xe8fd('0x1d')]||null:null,'attributes':_0x45b52c[_0xe8fd('0x16')]?_0x45b52c['options'][_0xe8fd('0x1e')]||null:null,'limit':_0x45b52c[_0xe8fd('0x16')]?_0x45b52c[_0xe8fd('0x16')][_0xe8fd('0x1f')]||null:null})['then'](function(_0x277883){logger[_0xe8fd('0xa')](_0xe8fd('0x1b'),_0x45b52c);logger[_0xe8fd('0x20')](_0xe8fd('0x1b'),_0x45b52c,JSON['stringify'](_0x277883));_0x3ab225(_0x277883);})[_0xe8fd('0x12')](function(_0x5d111d){logger[_0xe8fd('0xf')]('UpdateChatQueueReport',_0x5d111d[_0xe8fd('0x10')],_0x45b52c);_0x25c199(_0x4098fb[_0xe8fd('0xf')](0x1f4,_0x5d111d[_0xe8fd('0x10')]));});});};
\ No newline at end of file
index 8781a44..9703a75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf32e=['destroy','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','update','delete'];(function(_0x555337,_0x1559d1){var _0x49b217=function(_0x3cb634){while(--_0x3cb634){_0x555337['push'](_0x555337['shift']());}};_0x49b217(++_0x1559d1);}(_0xf32e,0x18d));var _0xef32=function(_0x436974,_0x78d896){_0x436974=_0x436974-0x0;var _0x2fbfc8=_0xf32e[_0x436974];return _0x2fbfc8;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xef32('0x0'));var express=require(_0xef32('0x1'));var router=express[_0xef32('0x2')]();var fs_extra=require(_0xef32('0x3'));var auth=require(_0xef32('0x4'));var interaction=require(_0xef32('0x5'));var config=require(_0xef32('0x6'));var controller=require(_0xef32('0x7'));router[_0xef32('0x8')]('/',auth[_0xef32('0x9')](),controller[_0xef32('0xa')]);router[_0xef32('0x8')](_0xef32('0xb'),auth[_0xef32('0x9')](),controller[_0xef32('0xc')]);router[_0xef32('0x8')](_0xef32('0xd'),auth[_0xef32('0x9')](),controller['show']);router[_0xef32('0xe')]('/',auth[_0xef32('0x9')](),controller['create']);router['put'](_0xef32('0xd'),auth[_0xef32('0x9')](),controller[_0xef32('0xf')]);router[_0xef32('0x10')](_0xef32('0xd'),auth['isAuthenticated'](),controller[_0xef32('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xda6a=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','describe','show','post','create','put','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda6a,0x14e));var _0xada6=function(_0x13dbbf,_0x15523a){_0x13dbbf=_0x13dbbf-0x0;var _0x2b4fe0=_0xda6a[_0x13dbbf];return _0x2b4fe0;};'use strict';var multer=require(_0xada6('0x0'));var util=require('util');var path=require(_0xada6('0x1'));var timeout=require(_0xada6('0x2'));var express=require(_0xada6('0x3'));var router=express[_0xada6('0x4')]();var fs_extra=require(_0xada6('0x5'));var auth=require(_0xada6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xada6('0x7'));var controller=require(_0xada6('0x8'));router[_0xada6('0x9')]('/',auth[_0xada6('0xa')](),controller[_0xada6('0xb')]);router['get']('/describe',auth[_0xada6('0xa')](),controller[_0xada6('0xc')]);router[_0xada6('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xada6('0xd')]);router[_0xada6('0xe')]('/',auth[_0xada6('0xa')](),controller[_0xada6('0xf')]);router[_0xada6('0x10')](_0xada6('0x11'),auth[_0xada6('0xa')](),controller[_0xada6('0x12')]);router[_0xada6('0x13')]('/:id',auth[_0xada6('0xa')](),controller[_0xada6('0x14')]);module[_0xada6('0x15')]=router;
\ No newline at end of file
index 64d956f..e2379b8 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(_0x2d91c6,_0x10ae0e){var _0x3a8d19=function(_0x27a3ce){while(--_0x27a3ce){_0x2d91c6['push'](_0x2d91c6['shift']());}};_0x3a8d19(++_0x10ae0e);}(_0xb43b,0x1b2));var _0xbb43=function(_0x164e85,_0x460266){_0x164e85=_0x164e85-0x0;var _0x57a89a=_0xb43b[_0x164e85];return _0x57a89a;};'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 _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x23e728,_0x21d571){var _0x548642=function(_0x2b7eaf){while(--_0x2b7eaf){_0x23e728['push'](_0x23e728['shift']());}};_0x548642(++_0x21d571);}(_0xf4eb,0xec));var _0xbf4e=function(_0x2c0608,_0x173e4a){_0x2c0608=_0x2c0608-0x0;var _0x3123d9=_0xf4eb[_0x2c0608];return _0x3123d9;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
index 7b5506c..4bf7d62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80f9=['catch','show','params','keys','length','include','find','create','body','describe','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','name','query','filters','intersection','model','attributes','fields','hasOwnProperty','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x80f9,0x12a));var _0x980f=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x80f9[_0x3c2a69];return _0x596bc8;};'use strict';var emlformat=require(_0x980f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x980f('0x1'));var rp=require(_0x980f('0x2'));var moment=require(_0x980f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x980f('0x4'));var util=require(_0x980f('0x5'));var path=require(_0x980f('0x6'));var sox=require(_0x980f('0x7'));var csv=require(_0x980f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x980f('0x9'));var _=require(_0x980f('0xa'));var squel=require(_0x980f('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x980f('0x8'));var querystring=require('querystring');var Papa=require(_0x980f('0xc'));var Redis=require(_0x980f('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x980f('0xe'));var as=require(_0x980f('0xf'));var hardwareService=require(_0x980f('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x980f('0x11'));var config=require(_0x980f('0x12'));var licenseUtil=require(_0x980f('0x13'));var db=require(_0x980f('0x14'))['db'];function respondWithStatusCode(_0x2e1d19,_0x2c2ccd){_0x2c2ccd=_0x2c2ccd||0xcc;return function(_0x4d76bd){if(_0x4d76bd){return _0x2e1d19[_0x980f('0x15')](_0x2c2ccd);}return _0x2e1d19[_0x980f('0x16')](_0x2c2ccd)[_0x980f('0x17')]();};}function respondWithResult(_0x3ad79f,_0x1dff7b){_0x1dff7b=_0x1dff7b||0xc8;return function(_0x1fb3a0){if(_0x1fb3a0){return _0x3ad79f['status'](_0x1dff7b)[_0x980f('0x18')](_0x1fb3a0);}};}function respondWithFilteredResult(_0x46c331,_0x5a399f){return function(_0x41047a){if(_0x41047a){var _0x2fb0b1=typeof _0x5a399f[_0x980f('0x19')]===_0x980f('0x1a')&&typeof _0x5a399f[_0x980f('0x1b')]===_0x980f('0x1a');var _0x1c2bf4=_0x41047a[_0x980f('0x1c')];var _0x36ab6e=_0x2fb0b1?0x0:_0x5a399f[_0x980f('0x19')];var _0x54333f=_0x2fb0b1?_0x41047a[_0x980f('0x1c')]:_0x5a399f[_0x980f('0x19')]+_0x5a399f[_0x980f('0x1b')];var _0x491935;if(_0x54333f>=_0x1c2bf4){_0x54333f=_0x1c2bf4;_0x491935=0xc8;}else{_0x491935=0xce;}_0x46c331[_0x980f('0x16')](_0x491935);return _0x46c331[_0x980f('0x1d')](_0x980f('0x1e'),_0x36ab6e+'-'+_0x54333f+'/'+_0x1c2bf4)[_0x980f('0x18')](_0x41047a);}return null;};}function patchUpdates(_0xe06239){return function(_0x436866){try{jsonpatch['apply'](_0x436866,_0xe06239,!![]);}catch(_0x74a3aa){return BPromise[_0x980f('0x1f')](_0x74a3aa);}return _0x436866[_0x980f('0x20')]();};}function saveUpdates(_0x66c30f,_0x1a152c){return function(_0x53e171){if(_0x53e171){return _0x53e171[_0x980f('0x21')](_0x66c30f)[_0x980f('0x22')](function(_0x3e46ae){return _0x3e46ae;});}return null;};}function removeEntity(_0x3a340c,_0x4dce82){return function(_0x52b652){if(_0x52b652){return _0x52b652[_0x980f('0x23')]()[_0x980f('0x22')](function(){_0x3a340c['status'](0xcc)[_0x980f('0x17')]();});}};}function handleEntityNotFound(_0x454a76,_0x45c6d7){return function(_0xac0602){if(!_0xac0602){_0x454a76[_0x980f('0x15')](0x194);}return _0xac0602;};}function handleError(_0x16757f,_0x4b8a13){_0x4b8a13=_0x4b8a13||0x1f4;return function(_0x34617a){logger[_0x980f('0x24')](_0x34617a[_0x980f('0x25')]);if(_0x34617a['name']){delete _0x34617a['name'];}_0x16757f[_0x980f('0x16')](_0x4b8a13)[_0x980f('0x26')](_0x34617a);};}exports[_0x980f('0x27')]=function(_0x4f59ab,_0xaa7175){var _0x399b52={},_0x2a8fdc={},_0xaea7b4={'count':0x0,'rows':[]};var _0x170ff4=_[_0x980f('0x28')](db[_0x980f('0x29')][_0x980f('0x2a')],function(_0xca6014){return{'name':_0xca6014[_0x980f('0x2b')],'type':_0xca6014[_0x980f('0x2c')][_0x980f('0x2d')]};});_0x2a8fdc['model']=_[_0x980f('0x28')](_0x170ff4,_0x980f('0x2e'));_0x2a8fdc[_0x980f('0x2f')]=_['keys'](_0x4f59ab['query']);_0x2a8fdc[_0x980f('0x30')]=_[_0x980f('0x31')](_0x2a8fdc[_0x980f('0x32')],_0x2a8fdc[_0x980f('0x2f')]);_0x399b52[_0x980f('0x33')]=_[_0x980f('0x31')](_0x2a8fdc[_0x980f('0x32')],qs[_0x980f('0x34')](_0x4f59ab[_0x980f('0x2f')][_0x980f('0x34')]));_0x399b52[_0x980f('0x33')]=_0x399b52['attributes']['length']?_0x399b52['attributes']:_0x2a8fdc[_0x980f('0x32')];if(!_0x4f59ab[_0x980f('0x2f')][_0x980f('0x35')]('nolimit')){_0x399b52['limit']=qs[_0x980f('0x1b')](_0x4f59ab[_0x980f('0x2f')][_0x980f('0x1b')]);_0x399b52['offset']=qs[_0x980f('0x19')](_0x4f59ab['query'][_0x980f('0x19')]);}_0x399b52['order']=qs[_0x980f('0x36')](_0x4f59ab['query'][_0x980f('0x36')]);_0x399b52[_0x980f('0x37')]=qs[_0x980f('0x30')](_['pick'](_0x4f59ab[_0x980f('0x2f')],_0x2a8fdc[_0x980f('0x30')]),_0x170ff4);if(_0x4f59ab[_0x980f('0x2f')][_0x980f('0x38')]){_0x399b52[_0x980f('0x37')]=_[_0x980f('0x39')](_0x399b52[_0x980f('0x37')],{'$or':_[_0x980f('0x28')](_0x170ff4,function(_0x5f466e){if(_0x5f466e[_0x980f('0x2c')]!==_0x980f('0x3a')){var _0x50a85d={};_0x50a85d[_0x5f466e[_0x980f('0x2e')]]={'$like':'%'+_0x4f59ab[_0x980f('0x2f')][_0x980f('0x38')]+'%'};return _0x50a85d;}})});}_0x399b52=_[_0x980f('0x39')]({},_0x399b52,_0x4f59ab['options']);var _0x486374={'where':_0x399b52[_0x980f('0x37')]};return db['ChatTransferReport'][_0x980f('0x1c')](_0x486374)[_0x980f('0x22')](function(_0x314cdb){_0xaea7b4['count']=_0x314cdb;if(_0x4f59ab['query'][_0x980f('0x3b')]){_0x399b52['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0x980f('0x3c')](_0x399b52);})[_0x980f('0x22')](function(_0x4c0dc9){_0xaea7b4[_0x980f('0x3d')]=_0x4c0dc9;return _0xaea7b4;})['then'](respondWithFilteredResult(_0xaa7175,_0x399b52))[_0x980f('0x3e')](handleError(_0xaa7175,null));};exports[_0x980f('0x3f')]=function(_0x19f2d0,_0x49882d){var _0x51b3ac={'raw':!![],'where':{'id':_0x19f2d0[_0x980f('0x40')]['id']}},_0x2687eb={};_0x2687eb[_0x980f('0x32')]=_[_0x980f('0x41')](db[_0x980f('0x29')]['rawAttributes']);_0x2687eb[_0x980f('0x2f')]=_[_0x980f('0x41')](_0x19f2d0[_0x980f('0x2f')]);_0x2687eb['filters']=_['intersection'](_0x2687eb[_0x980f('0x32')],_0x2687eb['query']);_0x51b3ac[_0x980f('0x33')]=_['intersection'](_0x2687eb[_0x980f('0x32')],qs[_0x980f('0x34')](_0x19f2d0['query'][_0x980f('0x34')]));_0x51b3ac['attributes']=_0x51b3ac[_0x980f('0x33')][_0x980f('0x42')]?_0x51b3ac[_0x980f('0x33')]:_0x2687eb[_0x980f('0x32')];if(_0x19f2d0[_0x980f('0x2f')][_0x980f('0x3b')]){_0x51b3ac[_0x980f('0x43')]=[{'all':!![]}];}_0x51b3ac=_['merge']({},_0x51b3ac,_0x19f2d0['options']);return db['ChatTransferReport'][_0x980f('0x44')](_0x51b3ac)[_0x980f('0x22')](handleEntityNotFound(_0x49882d,null))[_0x980f('0x22')](respondWithResult(_0x49882d,null))[_0x980f('0x3e')](handleError(_0x49882d,null));};exports[_0x980f('0x45')]=function(_0xf2261e,_0x2fb279){return db[_0x980f('0x29')][_0x980f('0x45')](_0xf2261e[_0x980f('0x46')],{})['then'](respondWithResult(_0x2fb279,0xc9))[_0x980f('0x3e')](handleError(_0x2fb279,null));};exports[_0x980f('0x21')]=function(_0x2898a5,_0x50cbee){if(_0x2898a5[_0x980f('0x46')]['id']){delete _0x2898a5[_0x980f('0x46')]['id'];}return db[_0x980f('0x29')]['find']({'where':{'id':_0x2898a5[_0x980f('0x40')]['id']}})[_0x980f('0x22')](handleEntityNotFound(_0x50cbee,null))[_0x980f('0x22')](saveUpdates(_0x2898a5[_0x980f('0x46')],null))[_0x980f('0x22')](respondWithResult(_0x50cbee,null))[_0x980f('0x3e')](handleError(_0x50cbee,null));};exports['destroy']=function(_0x4a60a6,_0x28c2d9){return db[_0x980f('0x29')][_0x980f('0x44')]({'where':{'id':_0x4a60a6[_0x980f('0x40')]['id']}})[_0x980f('0x22')](handleEntityNotFound(_0x28c2d9,null))[_0x980f('0x22')](removeEntity(_0x28c2d9,null))[_0x980f('0x3e')](handleError(_0x28c2d9,null));};exports[_0x980f('0x47')]=function(_0x354f8e,_0x1c1fa3){return db['ChatTransferReport'][_0x980f('0x47')]()[_0x980f('0x22')](respondWithResult(_0x1c1fa3,null))[_0x980f('0x3e')](handleError(_0x1c1fa3,null));};
\ No newline at end of file
+var _0x38ec=['order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','length','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty'];(function(_0x3cd128,_0x4c36f5){var _0x1c3e99=function(_0x2b009f){while(--_0x2b009f){_0x3cd128['push'](_0x3cd128['shift']());}};_0x1c3e99(++_0x4c36f5);}(_0x38ec,0xa6));var _0xc38e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x38ec[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xc38e('0x0'));var rimraf=require(_0xc38e('0x1'));var zipdir=require(_0xc38e('0x2'));var jsonpatch=require(_0xc38e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc38e('0x4'));var Mustache=require('mustache');var util=require(_0xc38e('0x5'));var path=require(_0xc38e('0x6'));var sox=require(_0xc38e('0x7'));var csv=require(_0xc38e('0x8'));var ejs=require(_0xc38e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc38e('0xa'));var squel=require(_0xc38e('0xb'));var crypto=require(_0xc38e('0xc'));var jsforce=require(_0xc38e('0xd'));var deskjs=require(_0xc38e('0xe'));var toCsv=require(_0xc38e('0x8'));var querystring=require(_0xc38e('0xf'));var Papa=require(_0xc38e('0x10'));var Redis=require(_0xc38e('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc38e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc38e('0x13'))(_0xc38e('0x14'));var utils=require(_0xc38e('0x15'));var config=require(_0xc38e('0x16'));var licenseUtil=require(_0xc38e('0x17'));var db=require(_0xc38e('0x18'))['db'];function respondWithStatusCode(_0x22bf41,_0x309b81){_0x309b81=_0x309b81||0xcc;return function(_0x33c1d1){if(_0x33c1d1){return _0x22bf41[_0xc38e('0x19')](_0x309b81);}return _0x22bf41[_0xc38e('0x1a')](_0x309b81)['end']();};}function respondWithResult(_0x45c028,_0x7c105d){_0x7c105d=_0x7c105d||0xc8;return function(_0x337151){if(_0x337151){return _0x45c028[_0xc38e('0x1a')](_0x7c105d)[_0xc38e('0x1b')](_0x337151);}};}function respondWithFilteredResult(_0xd6b2ea,_0x26a6fb){return function(_0xca1988){if(_0xca1988){var _0x3bb910=typeof _0x26a6fb[_0xc38e('0x1c')]===_0xc38e('0x1d')&&typeof _0x26a6fb[_0xc38e('0x1e')]===_0xc38e('0x1d');var _0x3102d7=_0xca1988[_0xc38e('0x1f')];var _0x5cf87c=_0x3bb910?0x0:_0x26a6fb[_0xc38e('0x1c')];var _0x2f8eb3=_0x3bb910?_0xca1988[_0xc38e('0x1f')]:_0x26a6fb[_0xc38e('0x1c')]+_0x26a6fb['limit'];var _0x106704;if(_0x2f8eb3>=_0x3102d7){_0x2f8eb3=_0x3102d7;_0x106704=0xc8;}else{_0x106704=0xce;}_0xd6b2ea[_0xc38e('0x1a')](_0x106704);return _0xd6b2ea['set'](_0xc38e('0x20'),_0x5cf87c+'-'+_0x2f8eb3+'/'+_0x3102d7)[_0xc38e('0x1b')](_0xca1988);}return null;};}function patchUpdates(_0x16cada){return function(_0x149dcb){try{jsonpatch[_0xc38e('0x21')](_0x149dcb,_0x16cada,!![]);}catch(_0x53287f){return BPromise['reject'](_0x53287f);}return _0x149dcb[_0xc38e('0x22')]();};}function saveUpdates(_0x58e648,_0x5a92d9){return function(_0x24813c){if(_0x24813c){return _0x24813c[_0xc38e('0x23')](_0x58e648)[_0xc38e('0x24')](function(_0x4441c0){return _0x4441c0;});}return null;};}function removeEntity(_0x170b97,_0x438abd){return function(_0x3045fd){if(_0x3045fd){return _0x3045fd['destroy']()[_0xc38e('0x24')](function(){_0x170b97[_0xc38e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7960df,_0x45a389){return function(_0x26b91e){if(!_0x26b91e){_0x7960df[_0xc38e('0x19')](0x194);}return _0x26b91e;};}function handleError(_0x51d464,_0xe3864){_0xe3864=_0xe3864||0x1f4;return function(_0x27f69d){logger[_0xc38e('0x25')](_0x27f69d[_0xc38e('0x26')]);if(_0x27f69d[_0xc38e('0x27')]){delete _0x27f69d['name'];}_0x51d464[_0xc38e('0x1a')](_0xe3864)[_0xc38e('0x28')](_0x27f69d);};}exports[_0xc38e('0x29')]=function(_0x3bc1aa,_0x4dd41f){var _0xa05bc5={},_0x4540bc={},_0xbd09c5={'count':0x0,'rows':[]};var _0x44da3d=_[_0xc38e('0x2a')](db[_0xc38e('0x2b')][_0xc38e('0x2c')],function(_0x166368){return{'name':_0x166368[_0xc38e('0x2d')],'type':_0x166368[_0xc38e('0x2e')][_0xc38e('0x2f')]};});_0x4540bc[_0xc38e('0x30')]=_[_0xc38e('0x2a')](_0x44da3d,_0xc38e('0x27'));_0x4540bc[_0xc38e('0x31')]=_[_0xc38e('0x32')](_0x3bc1aa[_0xc38e('0x31')]);_0x4540bc[_0xc38e('0x33')]=_[_0xc38e('0x34')](_0x4540bc[_0xc38e('0x30')],_0x4540bc[_0xc38e('0x31')]);_0xa05bc5[_0xc38e('0x35')]=_['intersection'](_0x4540bc[_0xc38e('0x30')],qs[_0xc38e('0x36')](_0x3bc1aa['query'][_0xc38e('0x36')]));_0xa05bc5[_0xc38e('0x35')]=_0xa05bc5[_0xc38e('0x35')]['length']?_0xa05bc5['attributes']:_0x4540bc[_0xc38e('0x30')];if(!_0x3bc1aa[_0xc38e('0x31')][_0xc38e('0x37')]('nolimit')){_0xa05bc5['limit']=qs['limit'](_0x3bc1aa['query'][_0xc38e('0x1e')]);_0xa05bc5['offset']=qs['offset'](_0x3bc1aa['query'][_0xc38e('0x1c')]);}_0xa05bc5[_0xc38e('0x38')]=qs[_0xc38e('0x39')](_0x3bc1aa[_0xc38e('0x31')][_0xc38e('0x39')]);_0xa05bc5[_0xc38e('0x3a')]=qs[_0xc38e('0x33')](_['pick'](_0x3bc1aa[_0xc38e('0x31')],_0x4540bc['filters']),_0x44da3d);if(_0x3bc1aa[_0xc38e('0x31')][_0xc38e('0x3b')]){_0xa05bc5[_0xc38e('0x3a')]=_[_0xc38e('0x3c')](_0xa05bc5[_0xc38e('0x3a')],{'$or':_[_0xc38e('0x2a')](_0x44da3d,function(_0x49eff4){if(_0x49eff4[_0xc38e('0x2e')]!==_0xc38e('0x3d')){var _0x37c64a={};_0x37c64a[_0x49eff4[_0xc38e('0x27')]]={'$like':'%'+_0x3bc1aa[_0xc38e('0x31')]['filter']+'%'};return _0x37c64a;}})});}_0xa05bc5=_[_0xc38e('0x3c')]({},_0xa05bc5,_0x3bc1aa[_0xc38e('0x3e')]);var _0x4814c2={'where':_0xa05bc5[_0xc38e('0x3a')]};return db[_0xc38e('0x2b')][_0xc38e('0x1f')](_0x4814c2)[_0xc38e('0x24')](function(_0x53ee91){_0xbd09c5[_0xc38e('0x1f')]=_0x53ee91;if(_0x3bc1aa[_0xc38e('0x31')][_0xc38e('0x3f')]){_0xa05bc5[_0xc38e('0x40')]=[{'all':!![]}];}return db[_0xc38e('0x2b')][_0xc38e('0x41')](_0xa05bc5);})[_0xc38e('0x24')](function(_0x4363e6){_0xbd09c5[_0xc38e('0x42')]=_0x4363e6;return _0xbd09c5;})[_0xc38e('0x24')](respondWithFilteredResult(_0x4dd41f,_0xa05bc5))[_0xc38e('0x43')](handleError(_0x4dd41f,null));};exports['show']=function(_0x35c55b,_0x100632){var _0x25fe74={'raw':!![],'where':{'id':_0x35c55b['params']['id']}},_0x530e47={};_0x530e47['model']=_[_0xc38e('0x32')](db[_0xc38e('0x2b')][_0xc38e('0x2c')]);_0x530e47[_0xc38e('0x31')]=_['keys'](_0x35c55b[_0xc38e('0x31')]);_0x530e47[_0xc38e('0x33')]=_[_0xc38e('0x34')](_0x530e47[_0xc38e('0x30')],_0x530e47[_0xc38e('0x31')]);_0x25fe74[_0xc38e('0x35')]=_[_0xc38e('0x34')](_0x530e47[_0xc38e('0x30')],qs[_0xc38e('0x36')](_0x35c55b['query'][_0xc38e('0x36')]));_0x25fe74[_0xc38e('0x35')]=_0x25fe74['attributes'][_0xc38e('0x44')]?_0x25fe74[_0xc38e('0x35')]:_0x530e47[_0xc38e('0x30')];if(_0x35c55b[_0xc38e('0x31')][_0xc38e('0x3f')]){_0x25fe74[_0xc38e('0x40')]=[{'all':!![]}];}_0x25fe74=_[_0xc38e('0x3c')]({},_0x25fe74,_0x35c55b[_0xc38e('0x3e')]);return db[_0xc38e('0x2b')]['find'](_0x25fe74)[_0xc38e('0x24')](handleEntityNotFound(_0x100632,null))['then'](respondWithResult(_0x100632,null))[_0xc38e('0x43')](handleError(_0x100632,null));};exports[_0xc38e('0x45')]=function(_0x4f4f91,_0x258671){return db[_0xc38e('0x2b')][_0xc38e('0x45')](_0x4f4f91[_0xc38e('0x46')],{})[_0xc38e('0x24')](respondWithResult(_0x258671,0xc9))[_0xc38e('0x43')](handleError(_0x258671,null));};exports['update']=function(_0x446791,_0x1ca673){if(_0x446791['body']['id']){delete _0x446791['body']['id'];}return db[_0xc38e('0x2b')][_0xc38e('0x47')]({'where':{'id':_0x446791[_0xc38e('0x48')]['id']}})[_0xc38e('0x24')](handleEntityNotFound(_0x1ca673,null))[_0xc38e('0x24')](saveUpdates(_0x446791[_0xc38e('0x46')],null))[_0xc38e('0x24')](respondWithResult(_0x1ca673,null))[_0xc38e('0x43')](handleError(_0x1ca673,null));};exports['destroy']=function(_0x376f9d,_0x1c13f2){return db['ChatTransferReport']['find']({'where':{'id':_0x376f9d[_0xc38e('0x48')]['id']}})[_0xc38e('0x24')](handleEntityNotFound(_0x1c13f2,null))[_0xc38e('0x24')](removeEntity(_0x1c13f2,null))[_0xc38e('0x43')](handleError(_0x1c13f2,null));};exports[_0xc38e('0x49')]=function(_0x102ecf,_0x465b56){return db[_0xc38e('0x2b')]['describe']()[_0xc38e('0x24')](respondWithResult(_0x465b56,null))['catch'](handleError(_0x465b56,null));};
\ No newline at end of file
index 3563e1c..2a5ea3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81e0=['exports','ChatTransferReport','report_chat_transfer','uniqueid','lodash','moment','request-promise','rimraf','./chatTransferReport.attributes'];(function(_0x4a4a32,_0x2ba798){var _0x154d37=function(_0x491588){while(--_0x491588){_0x4a4a32['push'](_0x4a4a32['shift']());}};_0x154d37(++_0x2ba798);}(_0x81e0,0x199));var _0x081e=function(_0x5b509b,_0x21d5aa){_0x5b509b=_0x5b509b-0x0;var _0x1a4123=_0x81e0[_0x5b509b];return _0x1a4123;};'use strict';var _=require(_0x081e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x081e('0x1'));var BPromise=require('bluebird');var rp=require(_0x081e('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x081e('0x3'));var config=require('../../config/environment');var attributes=require(_0x081e('0x4'));module[_0x081e('0x5')]=function(_0x1ba82e,_0x38fb45){return _0x1ba82e['define'](_0x081e('0x6'),attributes,{'tableName':_0x081e('0x7'),'paranoid':![],'indexes':[{'name':_0x081e('0x8'),'fields':[_0x081e('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdee5=['rimraf','exports','define','ChatTransferReport','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x45715c,_0x17caa5){var _0x2141ef=function(_0x54d51c){while(--_0x54d51c){_0x45715c['push'](_0x45715c['shift']());}};_0x2141ef(++_0x17caa5);}(_0xdee5,0x191));var _0x5dee=function(_0x35027c,_0x4af623){_0x35027c=_0x35027c-0x0;var _0x4bba7d=_0xdee5[_0x35027c];return _0x4bba7d;};'use strict';var _=require('lodash');var util=require(_0x5dee('0x0'));var logger=require(_0x5dee('0x1'))(_0x5dee('0x2'));var moment=require(_0x5dee('0x3'));var BPromise=require(_0x5dee('0x4'));var rp=require(_0x5dee('0x5'));var fs=require('fs');var path=require(_0x5dee('0x6'));var rimraf=require(_0x5dee('0x7'));var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module[_0x5dee('0x8')]=function(_0x2eeb9e,_0x45fde0){return _0x2eeb9e[_0x5dee('0x9')](_0x5dee('0xa'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x5dee('0xb'),'fields':[_0x5dee('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 8ec8a02..8870f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a33=['request\x20sent','error','code','ChatTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','request','info','debug'];(function(_0x2f39cf,_0x3c59ec){var _0xd0ece8=function(_0x4ffc0f){while(--_0x4ffc0f){_0x2f39cf['push'](_0x2f39cf['shift']());}};_0xd0ece8(++_0x3c59ec);}(_0x1a33,0x73));var _0x31a3=function(_0x17ad0d,_0x5672e6){_0x17ad0d=_0x17ad0d-0x0;var _0x1a153c=_0x1a33[_0x17ad0d];return _0x1a153c;};'use strict';var _=require(_0x31a3('0x0'));var util=require(_0x31a3('0x1'));var moment=require(_0x31a3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31a3('0x3'));var db=require(_0x31a3('0x4'))['db'];var utils=require(_0x31a3('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x31a3('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x31a3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x621d1f,_0x24a92a,_0x39c708){return new BPromise(function(_0x1f5084,_0x4b2de2){return client[_0x31a3('0x8')](_0x621d1f,_0x39c708)['then'](function(_0x28a2b8){logger[_0x31a3('0x9')]('ChatTransferReport,\x20%s,\x20%s',_0x24a92a,'request\x20sent');logger[_0x31a3('0xa')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x24a92a,_0x31a3('0xb'),JSON['stringify'](_0x28a2b8));if(_0x28a2b8[_0x31a3('0xc')]){if(_0x28a2b8[_0x31a3('0xc')][_0x31a3('0xd')]===0x1f4){logger['error'](_0x31a3('0xe'),_0x24a92a,_0x28a2b8[_0x31a3('0xc')][_0x31a3('0xf')]);return _0x4b2de2(_0x28a2b8[_0x31a3('0xc')][_0x31a3('0xf')]);}logger[_0x31a3('0xc')](_0x31a3('0xe'),_0x24a92a,_0x28a2b8['error'][_0x31a3('0xf')]);return _0x1f5084(_0x28a2b8[_0x31a3('0xc')][_0x31a3('0xf')]);}else{logger[_0x31a3('0x9')]('ChatTransferReport,\x20%s,\x20%s',_0x24a92a,_0x31a3('0xb'));_0x1f5084(_0x28a2b8[_0x31a3('0x10')][_0x31a3('0xf')]);}})[_0x31a3('0x11')](function(_0x515be5){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x24a92a,_0x515be5);_0x4b2de2(_0x515be5);});});}
\ No newline at end of file
+var _0x790f=['error','code','ChatTransferReport,\x20%s,\x20%s','message','request\x20sent','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x790f,0x1e5));var _0xf790=function(_0x36f47c,_0x38ef4d){_0x36f47c=_0x36f47c-0x0;var _0x296c55=_0x790f[_0x36f47c];return _0x296c55;};'use strict';var _=require(_0xf790('0x0'));var util=require(_0xf790('0x1'));var moment=require(_0xf790('0x2'));var BPromise=require(_0xf790('0x3'));var rs=require(_0xf790('0x4'));var fs=require('fs');var Redis=require(_0xf790('0x5'));var db=require(_0xf790('0x6'))['db'];var utils=require(_0xf790('0x7'));var logger=require(_0xf790('0x8'))('rpc');var config=require(_0xf790('0x9'));var jayson=require(_0xf790('0xa'));var client=jayson[_0xf790('0xb')][_0xf790('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1befe4,_0x4b9ba5,_0x1bdc95){return new BPromise(function(_0x4e5303,_0x33c1a1){return client[_0xf790('0xd')](_0x1befe4,_0x1bdc95)[_0xf790('0xe')](function(_0x56c9ef){logger[_0xf790('0xf')]('ChatTransferReport,\x20%s,\x20%s',_0x4b9ba5,'request\x20sent');logger[_0xf790('0x10')](_0xf790('0x11'),_0x4b9ba5,'request\x20sent',JSON[_0xf790('0x12')](_0x56c9ef));if(_0x56c9ef[_0xf790('0x13')]){if(_0x56c9ef[_0xf790('0x13')][_0xf790('0x14')]===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x4b9ba5,_0x56c9ef[_0xf790('0x13')]['message']);return _0x33c1a1(_0x56c9ef[_0xf790('0x13')]['message']);}logger[_0xf790('0x13')](_0xf790('0x15'),_0x4b9ba5,_0x56c9ef[_0xf790('0x13')]['message']);return _0x4e5303(_0x56c9ef[_0xf790('0x13')][_0xf790('0x16')]);}else{logger[_0xf790('0xf')]('ChatTransferReport,\x20%s,\x20%s',_0x4b9ba5,_0xf790('0x17'));_0x4e5303(_0x56c9ef['result'][_0xf790('0x16')]);}})['catch'](function(_0x3db6ea){logger[_0xf790('0x13')](_0xf790('0x15'),_0x4b9ba5,_0x3db6ea);_0x33c1a1(_0x3db6ea);});});}
\ No newline at end of file
index 12714b6..8b83542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac2=['../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','create','put','/:id','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x553d21,_0x2948ab){var _0x2adf7f=function(_0x2a5cb8){while(--_0x2a5cb8){_0x553d21['push'](_0x553d21['shift']());}};_0x2adf7f(++_0x2948ab);}(_0xaac2,0x1b4));var _0x2aac=function(_0x59d7c5,_0xc85032){_0x59d7c5=_0x59d7c5-0x0;var _0x32defa=_0xaac2[_0x59d7c5];return _0x32defa;};'use strict';var multer=require('multer');var util=require(_0x2aac('0x0'));var path=require(_0x2aac('0x1'));var timeout=require(_0x2aac('0x2'));var express=require(_0x2aac('0x3'));var router=express[_0x2aac('0x4')]();var fs_extra=require(_0x2aac('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2aac('0x6'));var config=require(_0x2aac('0x7'));var controller=require('./chatTransferReport.controller');router[_0x2aac('0x8')]('/',auth[_0x2aac('0x9')](),controller['index']);router['get'](_0x2aac('0xa'),auth[_0x2aac('0x9')](),controller['describe']);router[_0x2aac('0x8')]('/:id',auth[_0x2aac('0x9')](),controller['show']);router['post']('/',auth[_0x2aac('0x9')](),controller[_0x2aac('0xb')]);router[_0x2aac('0xc')](_0x2aac('0xd'),auth['isAuthenticated'](),controller[_0x2aac('0xe')]);router[_0x2aac('0xf')]('/:id',auth[_0x2aac('0x9')](),controller[_0x2aac('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x46b1=['get','/describe','isAuthenticated','describe','/:id','post','create','put','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatTransferReport.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x46b1,0x9a));var _0x146b=function(_0x4d672c,_0x15a6e0){_0x4d672c=_0x4d672c-0x0;var _0x22dc61=_0x46b1[_0x4d672c];return _0x22dc61;};'use strict';var multer=require(_0x146b('0x0'));var util=require(_0x146b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x146b('0x2'));var router=express[_0x146b('0x3')]();var fs_extra=require(_0x146b('0x4'));var auth=require(_0x146b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x146b('0x6'));var controller=require(_0x146b('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x146b('0x8')](_0x146b('0x9'),auth[_0x146b('0xa')](),controller[_0x146b('0xb')]);router['get'](_0x146b('0xc'),auth[_0x146b('0xa')](),controller['show']);router[_0x146b('0xd')]('/',auth[_0x146b('0xa')](),controller[_0x146b('0xe')]);router[_0x146b('0xf')]('/:id',auth[_0x146b('0xa')](),controller['update']);router[_0x146b('0x10')](_0x146b('0xc'),auth[_0x146b('0xa')](),controller['destroy']);module[_0x146b('0x11')]=router;
\ No newline at end of file
index 566444c..9e13544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','BOOLEAN','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Type\x20a\x20message','Skip','star','thumb','stringify','input','text','name','getDataValue','onlineForm','parse','textarea','Comments','Leave\x20your\x20comments','offlineForm','setDataValue','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.','website_alias','CHAT','alternate','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x255aaf,_0x282056){var _0x145bd2=function(_0x6e8c61){while(--_0x6e8c61){_0x255aaf['push'](_0x255aaf['shift']());}};_0x145bd2(++_0x282056);}(_0xedd9,0xfc));var _0x9edd=function(_0x3d5bf4,_0x5eb077){_0x3d5bf4=_0x3d5bf4-0x0;var _0x149af6=_0xedd9[_0x3d5bf4];return _0x149af6;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'name':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![],'unique':_0x9edd('0x3')},'description':{'type':Sequelize[_0x9edd('0x2')]},'mapKey':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x9edd('0x4')},'key':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![],'defaultValue':_0x9edd('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![],'defaultValue':_0x9edd('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9edd('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x9edd('0x2')]},'animation':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0x9edd('0x9'),_0x9edd('0xa')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0xb')},'start_chat_button':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0xc')},'offline_chat_button':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0xd')},'header_offline':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0xe')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x9edd('0xf')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x10')},'defaultWhiteLabel':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x9edd('0x11')]},'closingQuestion':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x12')},'formSubmitSuccessMessage':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x13')},'noteTitle':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x14')},'closingMessage':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x15')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize['ENUM'](_0x9edd('0x16'),_0x9edd('0x17')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x9edd('0x11')],'defaultValue':function(){return JSON[_0x9edd('0x18')]({'items':[{'type':_0x9edd('0x19'),'variable':null,'config':{'placeholder':'name','type':_0x9edd('0x1a'),'required':!![]},'props':{'title':_0x9edd('0x1b'),'helpText':''}},{'type':_0x9edd('0x19'),'props':{'title':_0x9edd('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x9edd('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x9edd('0x1c')](_0x9edd('0x1d'))?JSON[_0x9edd('0x1e')](this[_0x9edd('0x1c')](_0x9edd('0x1d'))):{};},'set':function(_0x4d507f){return this['setDataValue'](_0x9edd('0x1d'),JSON[_0x9edd('0x18')](_0x4d507f));}},'offlineForm':{'type':Sequelize[_0x9edd('0x11')],'defaultValue':function(){return JSON[_0x9edd('0x18')]({'items':[{'type':_0x9edd('0x19'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x9edd('0x4')},'variable':null},{'type':_0x9edd('0x1f'),'config':{'placeholder':_0x9edd('0x20')},'props':{'title':'Comments','helpText':_0x9edd('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x9edd('0x1c')](_0x9edd('0x22'))?JSON[_0x9edd('0x1e')](this['getDataValue'](_0x9edd('0x22'))):{};},'set':function(_0x3fb556){return this[_0x9edd('0x23')](_0x9edd('0x22'),JSON[_0x9edd('0x18')](_0x3fb556));}},'token':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':function(){return rs[_0x9edd('0x24')]();}},'autoclose':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x9edd('0x2')]},'forwardOffline':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x9edd('0x2')]},'waitingTitle':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x25')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x9edd('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x27')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x9edd('0x28')},'enableUnmanagedNote':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x29')},'skipUnmanaged':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x15')},'sendUnmanaged':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0xd')},'enableCustomerAttachment':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x9edd('0x11')]},'showAgentAvatar':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x9edd('0x2')]},'notificationTemplate':{'type':Sequelize[_0x9edd('0x11')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize[_0x9edd('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0x9edd('0xf')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x2b')},'messagesAlignment':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x2c')},'defaultTitle':{'type':Sequelize[_0x9edd('0x2')]},'customerAvatar':{'type':Sequelize[_0x9edd('0x11')]},'showCustomerAvatar':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x9edd('0xf')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':_0x9edd('0x2d')},'systemAvatar':{'type':Sequelize[_0x9edd('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x9edd('0x2e')},'mandatoryDisposition':{'type':Sequelize[_0x9edd('0x8')],'defaultValue':![],'comment':_0x9edd('0x2f'),'set':function(_0x48958a){if(!_0x48958a)this[_0x9edd('0x23')]('mandatoryDispositionPauseId',null);this[_0x9edd('0x23')](_0x9edd('0x30'),_0x48958a);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x9edd('0x2')]},'vidaooTopic':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![],'defaultValue':_0x9edd('0x31')},'vidaooNote':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0x9edd('0x11')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x9edd('0x11')]}};
\ No newline at end of file
+var _0x99e9=['System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','star','thumb','stringify','input','name','getDataValue','onlineForm','parse','setDataValue','Comments','Leave\x20your\x20comments','offlineForm','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x366ef2,_0x16e62f){var _0x51a5f3=function(_0x2d32ea){while(--_0x2d32ea){_0x366ef2['push'](_0x366ef2['shift']());}};_0x51a5f3(++_0x16e62f);}(_0x99e9,0xb4));var _0x999e=function(_0x57a50d,_0x2871f8){_0x57a50d=_0x57a50d-0x0;var _0x1b25b3=_0x99e9[_0x57a50d];return _0x1b25b3;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x999e('0x0'));module[_0x999e('0x1')]={'name':{'type':Sequelize[_0x999e('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x999e('0x2')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x999e('0x2')]},'mapKey':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x3')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x999e('0x3')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x4')},'customerAlias':{'type':Sequelize[_0x999e('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x999e('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x999e('0x2')],'allowNull':![],'defaultValue':_0x999e('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x999e('0x2')],'allowNull':![],'defaultValue':_0x999e('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x999e('0x2')],'allowNull':![],'defaultValue':_0x999e('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x999e('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x999e('0x2')]},'animation':{'type':Sequelize[_0x999e('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x999e('0x9')](_0x999e('0xa'),_0x999e('0xb')),'defaultValue':_0x999e('0xa')},'header_online':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0xc')},'start_chat_button':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0xd')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x999e('0xe')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x999e('0xf')},'download_transcript':{'type':Sequelize[_0x999e('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x999e('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0x999e('0x10')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x999e('0x11')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x13')},'noteTitle':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x14')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x999e('0x15')},'closingMessageButton':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0xe')},'skipMessageButton':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x16')},'conditionAgreement':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x17')},'ratingType':{'type':Sequelize['ENUM'](_0x999e('0x18'),_0x999e('0x19')),'defaultValue':_0x999e('0x18')},'ratingStarsNumber':{'type':Sequelize[_0x999e('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x999e('0x11')],'defaultValue':function(){return JSON[_0x999e('0x1a')]({'items':[{'type':_0x999e('0x1b'),'variable':null,'config':{'placeholder':'name','type':'text','required':!![]},'props':{'title':_0x999e('0x1c'),'helpText':''}},{'type':_0x999e('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x999e('0x3'),'type':_0x999e('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x999e('0x1d')](_0x999e('0x1e'))?JSON[_0x999e('0x1f')](this[_0x999e('0x1d')]('onlineForm')):{};},'set':function(_0x2e1cc5){return this[_0x999e('0x20')](_0x999e('0x1e'),JSON[_0x999e('0x1a')](_0x2e1cc5));}},'offlineForm':{'type':Sequelize[_0x999e('0x11')],'defaultValue':function(){return JSON[_0x999e('0x1a')]({'items':[{'type':_0x999e('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x999e('0x3'),'type':'email'},'variable':null},{'type':'textarea','config':{'placeholder':_0x999e('0x21')},'props':{'title':_0x999e('0x21'),'helpText':_0x999e('0x22')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x999e('0x23'))?JSON[_0x999e('0x1f')](this[_0x999e('0x1d')](_0x999e('0x23'))):{};},'set':function(_0x15dca1){return this[_0x999e('0x20')](_0x999e('0x23'),JSON[_0x999e('0x1a')](_0x15dca1));}},'token':{'type':Sequelize[_0x999e('0x2')],'defaultValue':function(){return rs[_0x999e('0x24')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x999e('0x2')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x999e('0x2')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x25')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0x999e('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x999e('0x2')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x16')},'sendUnmanaged':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0xe')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x999e('0x11')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x999e('0x2')]},'notificationTemplate':{'type':Sequelize[_0x999e('0x11')],'defaultValue':function(){return _0x999e('0x27');}},'notificationSound':{'type':Sequelize[_0x999e('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x999e('0x2')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x999e('0x2')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0x999e('0x7')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x999e('0x2')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x999e('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x999e('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x999e('0x2')],'defaultValue':_0x999e('0x28')},'systemAvatar':{'type':Sequelize[_0x999e('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x999e('0x7')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![],'comment':_0x999e('0x29'),'set':function(_0x1e1229){if(!_0x1e1229)this[_0x999e('0x20')]('mandatoryDispositionPauseId',null);this[_0x999e('0x20')]('mandatoryDisposition',_0x1e1229);}},'vidaooEscalation':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x999e('0x2')]},'vidaooTopic':{'type':Sequelize[_0x999e('0x2')],'allowNull':![],'defaultValue':_0x999e('0x2a')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x999e('0x2b');}},'vidaooMetadata':{'type':Sequelize[_0x999e('0x11')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x999e('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 203b324..4292fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a90=['Sequelize','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','List','Contacts','DESC','ChatApplication','Applications','account','applications','priority','asc','ListId','contact','customerIp','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','browser','%s\x20%s','version','unknown','format','device','vendor','%s\x20%s\x20%s','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','messageId','created','autoclose','push','close','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','offline','files','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','Attachment','bulkCreate','MailServerOut','CloudProvider','Smtp','forwardOfflineAddress','getSmtpOptions','SendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','subjectOffline','toPairsIn','mapValues','NotifyMailAccount','notifyMail','remove','addInteraction','omit','getInteractions','rawAttributes','Owner','internal','Tags','color','tag','getSnippet','iftime\x20%s,%s','interval','timezone','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','../../config/license/util','custom','chatLicenseExceeded','all','some','readFileSync','server/files/chat/iframe.ejs','remote','connection','remoteAddress','virtual','replace','alignment','labelText','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','stack','finally','json','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','onlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','ejs','fs-extra','querystring','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./chatWebsite.socket','register','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','update','destroy','get','ChatWebsites','UserProfileResource','name','send','index','map','ChatWebsite','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','includeAll','rows','show','params','Pause','mandatoryDispositionPause','include','merge','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','describe','ChatWebsiteId','getDispositions','findOne','Disposition','filter','findAll','removeDispositions','ids','CannedAnswer','getAnswers','nolimit','removeAnswers','addLogo','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','sitepic','getLicense','isNil','existsSync','download','getAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','user-agent','getResult','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from'];(function(_0x30ed72,_0x1fa39b){var _0x3f03e9=function(_0x4b8a88){while(--_0x4b8a88){_0x30ed72['push'](_0x30ed72['shift']());}};_0x3f03e9(++_0x1fa39b);}(_0x5a90,0xa2));var _0x05a9=function(_0x5b9a50,_0x22d856){_0x5b9a50=_0x5b9a50-0x0;var _0x1f94fd=_0x5a90[_0x5b9a50];return _0x1f94fd;};'use strict';var BPromise=require(_0x05a9('0x0'));var Mustache=require(_0x05a9('0x1'));var util=require(_0x05a9('0x2'));var path=require(_0x05a9('0x3'));var ejs=require(_0x05a9('0x4'));var fs=require('fs');var fs_extra=require(_0x05a9('0x5'));var _=require('lodash');var querystring=require(_0x05a9('0x6'));var Redis=require('ioredis');var qs=require(_0x05a9('0x7'));var logger=require(_0x05a9('0x8'))('api');var config=require(_0x05a9('0x9'));var db=require(_0x05a9('0xa'))['db'];config['redis']=_[_0x05a9('0xb')](config['redis'],{'host':_0x05a9('0xc'),'port':0x18eb});var socket=require(_0x05a9('0xd'))(new Redis(config[_0x05a9('0xe')]));require(_0x05a9('0xf'))[_0x05a9('0x10')](socket);var htmlToText=require('html-to-text');var jayson=require('jayson/promise');var client=jayson[_0x05a9('0x11')][_0x05a9('0x12')]({'port':0x232c});var client9002=jayson[_0x05a9('0x11')][_0x05a9('0x12')]({'port':0x232a});var client9003=jayson[_0x05a9('0x11')]['http']({'port':0x232b});var client9001=jayson[_0x05a9('0x11')][_0x05a9('0x12')]({'port':0x2329});function respondWithRpcPromise(_0x1068da,_0x1de660,_0x18a26b,_0x10412d){return new BPromise(function(_0xd7fc12,_0x542d58){var _0x295990=_0x10412d||client;return _0x295990[_0x05a9('0x13')](_0x1068da,_0x18a26b)[_0x05a9('0x14')](function(_0x35cf03){logger[_0x05a9('0x15')](_0x05a9('0x16'),_0x1de660,_0x05a9('0x17'));logger['debug'](_0x05a9('0x18'),_0x1de660,_0x05a9('0x17'),JSON[_0x05a9('0x19')](_0x35cf03));if(_0x35cf03['error']){if(_0x35cf03[_0x05a9('0x1a')][_0x05a9('0x1b')]===0x1f4){logger[_0x05a9('0x1a')](_0x05a9('0x16'),_0x1de660,_0x35cf03[_0x05a9('0x1a')]['message']);return _0x542d58(_0x35cf03[_0x05a9('0x1a')][_0x05a9('0x1c')]);}logger[_0x05a9('0x1a')]('ChatWebsite,\x20%s,\x20%s',_0x1de660,_0x35cf03[_0x05a9('0x1a')][_0x05a9('0x1c')]);return _0xd7fc12(_0x35cf03[_0x05a9('0x1a')]['message']);}else{logger[_0x05a9('0x15')](_0x05a9('0x16'),_0x1de660,_0x05a9('0x17'));_0xd7fc12(_0x35cf03[_0x05a9('0x1d')][_0x05a9('0x1c')]);}})[_0x05a9('0x1e')](function(_0x34425e){logger[_0x05a9('0x1a')](_0x05a9('0x16'),_0x1de660,_0x34425e);_0x542d58(_0x34425e);});});}function respondWithStatusCode(_0x173c7f,_0x3e695e){_0x3e695e=_0x3e695e||0xcc;return function(_0xab0ea9){if(_0xab0ea9){return _0x173c7f[_0x05a9('0x1f')](_0x3e695e);}return _0x173c7f[_0x05a9('0x20')](_0x3e695e)[_0x05a9('0x21')]();};}function respondWithResult(_0x549ea9,_0x2e3257){_0x2e3257=_0x2e3257||0xc8;return function(_0x2ecc3e){if(_0x2ecc3e){return _0x549ea9[_0x05a9('0x20')](_0x2e3257)['json'](_0x2ecc3e);}};}function respondWithFilteredResult(_0x4a75d9,_0x4fb2ac){return function(_0x133474){if(_0x133474){var _0x1ee34f=typeof _0x4fb2ac['offset']===_0x05a9('0x22')&&typeof _0x4fb2ac[_0x05a9('0x23')]===_0x05a9('0x22');var _0xb56341=_0x133474[_0x05a9('0x24')];var _0xb0f79=_0x1ee34f?0x0:_0x4fb2ac[_0x05a9('0x25')];var _0x56635d=_0x1ee34f?_0x133474[_0x05a9('0x24')]:_0x4fb2ac[_0x05a9('0x25')]+_0x4fb2ac[_0x05a9('0x23')];var _0x5791c0;if(_0x56635d>=_0xb56341){_0x56635d=_0xb56341;_0x5791c0=0xc8;}else{_0x5791c0=0xce;}_0x4a75d9[_0x05a9('0x20')](_0x5791c0);return _0x4a75d9[_0x05a9('0x26')](_0x05a9('0x27'),_0xb0f79+'-'+_0x56635d+'/'+_0xb56341)['json'](_0x133474);}return null;};}function saveUpdates(_0x209d66){return function(_0x1218a1){if(_0x1218a1){return _0x1218a1[_0x05a9('0x28')](_0x209d66)[_0x05a9('0x14')](function(_0x10a41a){return _0x10a41a;});}return null;};}function removeEntity(_0x44b8ff){return function(_0x33532d){if(_0x33532d){return _0x33532d[_0x05a9('0x29')]()[_0x05a9('0x14')](function(){var _0xff03cd=_0x33532d[_0x05a9('0x2a')]({'plain':!![]});var _0x4753c3=_0x05a9('0x2b');return db[_0x05a9('0x2c')]['destroy']({'where':{'type':_0x4753c3,'resourceId':_0xff03cd['id']}})[_0x05a9('0x14')](function(){return _0x33532d;});})[_0x05a9('0x14')](function(){_0x44b8ff[_0x05a9('0x20')](0xcc)[_0x05a9('0x21')]();});}};}function handleEntityNotFound(_0x280c9e){return function(_0x2bc56a){if(!_0x2bc56a){_0x280c9e[_0x05a9('0x1f')](0x194);}return _0x2bc56a;};}function handleError(_0x3f787d,_0x3aebd4){_0x3aebd4=_0x3aebd4||0x1f4;return function(_0x41062b){logger[_0x05a9('0x1a')](_0x41062b['stack']);if(_0x41062b['name']){delete _0x41062b[_0x05a9('0x2d')];}_0x3f787d[_0x05a9('0x20')](_0x3aebd4)[_0x05a9('0x2e')](_0x41062b);};}exports[_0x05a9('0x2f')]=function(_0x523d9e,_0x50bd3d){var _0x228132={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0xcdce02={},_0x456d70={'count':0x0,'rows':[]};var _0x21867f=_[_0x05a9('0x30')](db[_0x05a9('0x31')]['rawAttributes'],function(_0x2e9889){return{'name':_0x2e9889[_0x05a9('0x32')],'type':_0x2e9889[_0x05a9('0x33')][_0x05a9('0x34')]};});_0xcdce02[_0x05a9('0x35')]=_['map'](_0x21867f,'name');_0xcdce02[_0x05a9('0x36')]=_[_0x05a9('0x37')](_0x523d9e['query']);_0xcdce02[_0x05a9('0x38')]=_[_0x05a9('0x39')](_0xcdce02[_0x05a9('0x35')],_0xcdce02[_0x05a9('0x36')]);_0x228132[_0x05a9('0x3a')]=_[_0x05a9('0x39')](_0xcdce02[_0x05a9('0x35')],qs['fields'](_0x523d9e['query'][_0x05a9('0x3b')]));_0x228132[_0x05a9('0x3a')]=_0x228132[_0x05a9('0x3a')][_0x05a9('0x3c')]?_0x228132[_0x05a9('0x3a')]:_0xcdce02[_0x05a9('0x35')];if(!_0x523d9e[_0x05a9('0x36')][_0x05a9('0x3d')]('nolimit')){_0x228132[_0x05a9('0x23')]=qs[_0x05a9('0x23')](_0x523d9e[_0x05a9('0x36')]['limit']);_0x228132[_0x05a9('0x25')]=qs['offset'](_0x523d9e[_0x05a9('0x36')]['offset']);}_0x228132[_0x05a9('0x3e')]=qs[_0x05a9('0x3f')](_0x523d9e[_0x05a9('0x36')]['sort']);_0x228132[_0x05a9('0x40')]=qs[_0x05a9('0x38')](_[_0x05a9('0x41')](_0x523d9e['query'],_0xcdce02[_0x05a9('0x38')]),_0x21867f);if(_0x523d9e['query']['filter']){_0x228132[_0x05a9('0x40')]=_['merge'](_0x228132[_0x05a9('0x40')],{'$or':_['map'](_0x21867f,function(_0x59208d){if(_0x59208d[_0x05a9('0x33')]!==_0x05a9('0x42')){var _0x173c3d={};_0x173c3d[_0x59208d['name']]={'$like':'%'+_0x523d9e[_0x05a9('0x36')]['filter']+'%'};return _0x173c3d;}})});}_0x228132=_['merge']({},_0x228132,_0x523d9e['options']);var _0x23292d={'where':_0x228132[_0x05a9('0x40')]};return db[_0x05a9('0x31')][_0x05a9('0x24')](_0x23292d)[_0x05a9('0x14')](function(_0x2c5602){_0x456d70['count']=_0x2c5602;if(_0x523d9e['query'][_0x05a9('0x43')]){_0x228132['include']=[{'all':!![]}];}return db[_0x05a9('0x31')]['findAll'](_0x228132);})[_0x05a9('0x14')](function(_0x45eb61){_0x456d70[_0x05a9('0x44')]=_0x45eb61;return _0x456d70;})[_0x05a9('0x14')](respondWithFilteredResult(_0x50bd3d,_0x228132))[_0x05a9('0x1e')](handleError(_0x50bd3d,null));};exports[_0x05a9('0x45')]=function(_0x56b1dc,_0x3d7add){var _0x1e7043={'raw':![],'where':{'id':_0x56b1dc[_0x05a9('0x46')]['id']},'include':[{'model':db[_0x05a9('0x47')],'as':_0x05a9('0x48')}]},_0x246ee6={};_0x246ee6[_0x05a9('0x35')]=_[_0x05a9('0x37')](db['ChatWebsite']['rawAttributes']);_0x246ee6[_0x05a9('0x36')]=_[_0x05a9('0x37')](_0x56b1dc[_0x05a9('0x36')]);_0x246ee6[_0x05a9('0x38')]=_[_0x05a9('0x39')](_0x246ee6['model'],_0x246ee6['query']);_0x1e7043[_0x05a9('0x3a')]=_[_0x05a9('0x39')](_0x246ee6[_0x05a9('0x35')],qs[_0x05a9('0x3b')](_0x56b1dc['query'][_0x05a9('0x3b')]));_0x1e7043[_0x05a9('0x3a')]=_0x1e7043[_0x05a9('0x3a')]['length']?_0x1e7043[_0x05a9('0x3a')]:_0x246ee6[_0x05a9('0x35')];if(_0x56b1dc[_0x05a9('0x36')][_0x05a9('0x43')]){_0x1e7043[_0x05a9('0x49')]=[{'all':!![]}];}_0x1e7043=_[_0x05a9('0x4a')]({},_0x1e7043,_0x56b1dc[_0x05a9('0x4b')]);return db['ChatWebsite'][_0x05a9('0x4c')](_0x1e7043)[_0x05a9('0x14')](handleEntityNotFound(_0x3d7add,null))[_0x05a9('0x14')](respondWithResult(_0x3d7add,null))[_0x05a9('0x1e')](handleError(_0x3d7add,null));};exports['create']=function(_0xd8af72,_0xf02b48){return db[_0x05a9('0x31')][_0x05a9('0x4d')](_0xd8af72[_0x05a9('0x4e')],{})[_0x05a9('0x14')](function(_0x30fbd2){var _0xdc900a=_0xd8af72[_0x05a9('0x4f')]['get']({'plain':!![]});if(!_0xdc900a)throw new Error(_0x05a9('0x50'));if(_0xdc900a['role']===_0x05a9('0x4f')){var _0x4cb12b=_0x30fbd2['get']({'plain':!![]});var _0x5db00c=_0x05a9('0x2b');return db[_0x05a9('0x51')]['find']({'where':{'name':_0x5db00c,'userProfileId':_0xdc900a[_0x05a9('0x52')]},'raw':!![]})[_0x05a9('0x14')](function(_0x40b542){if(_0x40b542&&_0x40b542[_0x05a9('0x53')]===0x0){return db[_0x05a9('0x2c')][_0x05a9('0x4d')]({'name':_0x4cb12b['name'],'resourceId':_0x4cb12b['id'],'type':_0x40b542[_0x05a9('0x2d')],'sectionId':_0x40b542['id']},{})[_0x05a9('0x14')](function(){return _0x30fbd2;});}else{return _0x30fbd2;}})[_0x05a9('0x1e')](function(_0x1d5ddc){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d5ddc);throw _0x1d5ddc;});}return _0x30fbd2;})[_0x05a9('0x14')](respondWithResult(_0xf02b48,0xc9))['catch'](handleError(_0xf02b48,null));};exports[_0x05a9('0x28')]=function(_0x21fdff,_0x2671f2){if(_0x21fdff[_0x05a9('0x4e')]['id']){delete _0x21fdff[_0x05a9('0x4e')]['id'];}return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'where':{'id':_0x21fdff['params']['id']},'include':[{'model':db['Pause'],'as':_0x05a9('0x48')}]})['then'](handleEntityNotFound(_0x2671f2,null))[_0x05a9('0x14')](saveUpdates(_0x21fdff[_0x05a9('0x4e')],null))[_0x05a9('0x14')](respondWithResult(_0x2671f2,null))[_0x05a9('0x1e')](handleError(_0x2671f2,null));};exports['destroy']=function(_0x2c6e4d,_0x40e3a8){return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'where':{'id':_0x2c6e4d['params']['id']}})['then'](handleEntityNotFound(_0x40e3a8,null))[_0x05a9('0x14')](removeEntity(_0x40e3a8,null))['catch'](handleError(_0x40e3a8,null));};exports['describe']=function(_0x43f50a,_0x10fbe9){return db[_0x05a9('0x31')][_0x05a9('0x54')]()[_0x05a9('0x14')](respondWithResult(_0x10fbe9,null))[_0x05a9('0x1e')](handleError(_0x10fbe9,null));};exports['addDisposition']=function(_0x3e4385,_0x23b1ab){if(_0x3e4385[_0x05a9('0x4e')]['id']){delete _0x3e4385['body']['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x3e4385['params']['id']}})['then'](handleEntityNotFound(_0x23b1ab,null))['then'](function(_0x3c63db){if(_0x3c63db){_0x3e4385[_0x05a9('0x4e')][_0x05a9('0x55')]=_0x3c63db['id'];return db['Disposition']['create'](_0x3e4385['body']);}})[_0x05a9('0x14')](respondWithResult(_0x23b1ab,null))['catch'](handleError(_0x23b1ab,null));};exports[_0x05a9('0x56')]=function(_0x5fb002,_0xe5238b){var _0x587c74={'raw':![],'where':{}};var _0x2aaf4f={};var _0xafa72d={'count':0x0,'rows':[]};return db[_0x05a9('0x31')][_0x05a9('0x57')]({'where':{'id':_0x5fb002[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0xe5238b,null))[_0x05a9('0x14')](function(_0x1fd267){if(_0x1fd267){_0x2aaf4f[_0x05a9('0x35')]=_[_0x05a9('0x37')](db[_0x05a9('0x58')]['rawAttributes']);_0x2aaf4f[_0x05a9('0x36')]=_[_0x05a9('0x37')](_0x5fb002[_0x05a9('0x36')]);_0x2aaf4f[_0x05a9('0x38')]=_[_0x05a9('0x39')](_0x2aaf4f[_0x05a9('0x35')],_0x2aaf4f[_0x05a9('0x36')]);_0x587c74[_0x05a9('0x3a')]=_[_0x05a9('0x39')](_0x2aaf4f[_0x05a9('0x35')],qs[_0x05a9('0x3b')](_0x5fb002[_0x05a9('0x36')][_0x05a9('0x3b')]));_0x587c74[_0x05a9('0x3a')]=_0x587c74[_0x05a9('0x3a')]['length']?_0x587c74['attributes']:_0x2aaf4f[_0x05a9('0x35')];if(!_0x5fb002['query']['hasOwnProperty']('nolimit')){_0x587c74[_0x05a9('0x23')]=qs['limit'](_0x5fb002[_0x05a9('0x36')][_0x05a9('0x23')]);_0x587c74[_0x05a9('0x25')]=qs['offset'](_0x5fb002['query'][_0x05a9('0x25')]);}_0x587c74[_0x05a9('0x3e')]=qs['sort'](_0x5fb002['query']['sort']);_0x587c74[_0x05a9('0x40')]=qs[_0x05a9('0x38')](_['pick'](_0x5fb002[_0x05a9('0x36')],_0x2aaf4f['filters']));_0x587c74[_0x05a9('0x40')][_0x05a9('0x55')]=_0x1fd267['id'];if(_0x5fb002[_0x05a9('0x36')][_0x05a9('0x59')]){_0x587c74[_0x05a9('0x40')]=_[_0x05a9('0x4a')](_0x587c74['where'],{'$or':_[_0x05a9('0x30')](_0x587c74['attributes'],function(_0x59a9a8){var _0x336497={};_0x336497[_0x59a9a8]={'$like':'%'+_0x5fb002[_0x05a9('0x36')][_0x05a9('0x59')]+'%'};return _0x336497;})});}_0x587c74=_[_0x05a9('0x4a')]({},_0x587c74,_0x5fb002[_0x05a9('0x4b')]);return db[_0x05a9('0x58')][_0x05a9('0x24')]({'where':_0x587c74[_0x05a9('0x40')]})[_0x05a9('0x14')](function(_0x287104){_0xafa72d[_0x05a9('0x24')]=_0x287104;if(_0x5fb002[_0x05a9('0x36')][_0x05a9('0x43')]){_0x587c74[_0x05a9('0x49')]=[{'all':!![]}];}return db[_0x05a9('0x58')][_0x05a9('0x5a')](_0x587c74);})[_0x05a9('0x14')](function(_0x4b7810){_0xafa72d['rows']=_0x4b7810;return _0xafa72d;});}})[_0x05a9('0x14')](respondWithFilteredResult(_0xe5238b,_0x587c74))[_0x05a9('0x1e')](handleError(_0xe5238b,null));};exports[_0x05a9('0x5b')]=function(_0x38b947,_0x55c1a6){return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'where':{'id':_0x38b947[_0x05a9('0x46')]['id']}})['then'](handleEntityNotFound(_0x55c1a6,null))[_0x05a9('0x14')](function(_0x4827c7){if(_0x4827c7){return _0x4827c7[_0x05a9('0x5b')](_0x38b947['query'][_0x05a9('0x5c')]);}})[_0x05a9('0x14')](respondWithStatusCode(_0x55c1a6,null))['catch'](handleError(_0x55c1a6,null));};exports['addAnswer']=function(_0x17b9cb,_0x541b15){if(_0x17b9cb['body']['id']){delete _0x17b9cb[_0x05a9('0x4e')]['id'];}return db['ChatWebsite'][_0x05a9('0x4c')]({'where':{'id':_0x17b9cb['params']['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x541b15,null))[_0x05a9('0x14')](function(_0x3374db){if(_0x3374db){_0x17b9cb['body']['ChatWebsiteId']=_0x3374db['id'];return db[_0x05a9('0x5d')][_0x05a9('0x4d')](_0x17b9cb[_0x05a9('0x4e')]);}})['then'](respondWithResult(_0x541b15,null))[_0x05a9('0x1e')](handleError(_0x541b15,null));};exports[_0x05a9('0x5e')]=function(_0x105ec6,_0x2bede2){var _0x1ba37f={'raw':![],'where':{}};var _0x20ac37={};var _0x1e4951={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x05a9('0x57')]({'where':{'id':_0x105ec6[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x2bede2,null))[_0x05a9('0x14')](function(_0x173acd){if(_0x173acd){_0x20ac37[_0x05a9('0x35')]=_['keys'](db[_0x05a9('0x5d')]['rawAttributes']);_0x20ac37[_0x05a9('0x36')]=_[_0x05a9('0x37')](_0x105ec6[_0x05a9('0x36')]);_0x20ac37['filters']=_['intersection'](_0x20ac37[_0x05a9('0x35')],_0x20ac37[_0x05a9('0x36')]);_0x1ba37f['attributes']=_['intersection'](_0x20ac37['model'],qs[_0x05a9('0x3b')](_0x105ec6[_0x05a9('0x36')][_0x05a9('0x3b')]));_0x1ba37f[_0x05a9('0x3a')]=_0x1ba37f[_0x05a9('0x3a')]['length']?_0x1ba37f[_0x05a9('0x3a')]:_0x20ac37['model'];if(!_0x105ec6[_0x05a9('0x36')][_0x05a9('0x3d')](_0x05a9('0x5f'))){_0x1ba37f[_0x05a9('0x23')]=qs['limit'](_0x105ec6['query'][_0x05a9('0x23')]);_0x1ba37f[_0x05a9('0x25')]=qs[_0x05a9('0x25')](_0x105ec6['query']['offset']);}_0x1ba37f['order']=qs[_0x05a9('0x3f')](_0x105ec6[_0x05a9('0x36')][_0x05a9('0x3f')]);_0x1ba37f[_0x05a9('0x40')]=qs[_0x05a9('0x38')](_[_0x05a9('0x41')](_0x105ec6[_0x05a9('0x36')],_0x20ac37[_0x05a9('0x38')]));_0x1ba37f[_0x05a9('0x40')][_0x05a9('0x55')]=_0x173acd['id'];if(_0x105ec6['query']['filter']){_0x1ba37f[_0x05a9('0x40')]=_[_0x05a9('0x4a')](_0x1ba37f['where'],{'$or':_[_0x05a9('0x30')](_0x1ba37f[_0x05a9('0x3a')],function(_0x3935e4){var _0x546591={};_0x546591[_0x3935e4]={'$like':'%'+_0x105ec6['query'][_0x05a9('0x59')]+'%'};return _0x546591;})});}_0x1ba37f=_[_0x05a9('0x4a')]({},_0x1ba37f,_0x105ec6[_0x05a9('0x4b')]);return db[_0x05a9('0x5d')]['count']({'where':_0x1ba37f['where']})['then'](function(_0x52fd80){_0x1e4951[_0x05a9('0x24')]=_0x52fd80;if(_0x105ec6[_0x05a9('0x36')][_0x05a9('0x43')]){_0x1ba37f['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x1ba37f);})['then'](function(_0x4fefb3){_0x1e4951[_0x05a9('0x44')]=_0x4fefb3;return _0x1e4951;});}})[_0x05a9('0x14')](respondWithFilteredResult(_0x2bede2,_0x1ba37f))['catch'](handleError(_0x2bede2,null));};exports[_0x05a9('0x60')]=function(_0x186344,_0x14770d){return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'where':{'id':_0x186344[_0x05a9('0x46')]['id']}})['then'](handleEntityNotFound(_0x14770d,null))['then'](function(_0x5501b2){if(_0x5501b2){return _0x5501b2[_0x05a9('0x60')](_0x186344[_0x05a9('0x36')]['ids']);}})[_0x05a9('0x14')](respondWithStatusCode(_0x14770d,null))['catch'](handleError(_0x14770d,null));};exports[_0x05a9('0x61')]=function(_0x474bde,_0x100d58){_0x474bde[_0x05a9('0x4e')]['sitepic']=_0x474bde[_0x05a9('0x62')][_0x05a9('0x63')];return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'where':{'id':_0x474bde['params']['id']}})['then'](handleEntityNotFound(_0x100d58,null))['then'](saveUpdates(_0x474bde['body'],null))['then'](respondWithResult(_0x100d58,null))[_0x05a9('0x1e')](handleError(_0x100d58,null));};exports['addAvatar']=function(_0x485890,_0x934a46){_0x485890[_0x05a9('0x4e')][_0x05a9('0x64')]=_0x485890['file']['filename'];return db[_0x05a9('0x31')]['find']({'where':{'id':_0x485890[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x934a46,null))[_0x05a9('0x14')](saveUpdates(_0x485890[_0x05a9('0x4e')],null))[_0x05a9('0x14')](respondWithResult(_0x934a46,null))[_0x05a9('0x1e')](handleError(_0x934a46,null));};exports[_0x05a9('0x65')]=function(_0x26f3d2,_0x1adb02){_0x26f3d2[_0x05a9('0x4e')][_0x05a9('0x66')]=_0x26f3d2[_0x05a9('0x62')]['filename'];return db[_0x05a9('0x31')]['find']({'where':{'id':_0x26f3d2[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x1adb02,null))[_0x05a9('0x14')](saveUpdates(_0x26f3d2[_0x05a9('0x4e')],null))[_0x05a9('0x14')](respondWithResult(_0x1adb02,null))['catch'](handleError(_0x1adb02,null));};exports['addSystemAvatar']=function(_0x1c53fb,_0x2a2b04){_0x1c53fb[_0x05a9('0x4e')][_0x05a9('0x67')]=_0x1c53fb[_0x05a9('0x62')][_0x05a9('0x63')];return db['ChatWebsite'][_0x05a9('0x4c')]({'where':{'id':_0x1c53fb[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x2a2b04,null))[_0x05a9('0x14')](saveUpdates(_0x1c53fb['body'],null))[_0x05a9('0x14')](respondWithResult(_0x2a2b04,null))[_0x05a9('0x1e')](handleError(_0x2a2b04,null));};exports[_0x05a9('0x68')]=function(_0x41bd77,_0x346814){var _0x39e7bc=path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0x6b'));var _0x2181ee={'where':{'id':_0x41bd77[_0x05a9('0x46')]['id']},'attributes':['id',_0x05a9('0x6c')],'raw':!![]};var _0x1a92de=![];return require('../../config/license/util')[_0x05a9('0x6d')]()['then'](function(_0x3b732f){if(_0x3b732f){_0x1a92de=_0x3b732f['custom'];}})[_0x05a9('0x14')](function(){return db[_0x05a9('0x31')][_0x05a9('0x4c')](_0x2181ee);})[_0x05a9('0x14')](handleEntityNotFound(_0x346814,null))[_0x05a9('0x14')](function(_0xfd8032){if(_0xfd8032){if(!_[_0x05a9('0x6e')](_0xfd8032[_0x05a9('0x6c')])){if(fs[_0x05a9('0x6f')](path[_0x05a9('0x69')](config['root'],'server/files/images/logos/',_0xfd8032[_0x05a9('0x6c')]))&&_0x1a92de){_0x39e7bc=path[_0x05a9('0x69')](config[_0x05a9('0x6a')],'server/files/images/logos/',_0xfd8032['sitepic']);}}return _0x346814[_0x05a9('0x70')](_0x39e7bc);}})[_0x05a9('0x1e')](handleError(_0x346814,null));};exports[_0x05a9('0x71')]=function(_0x51b893,_0x54c762){var _0x2b8082=path['join'](config[_0x05a9('0x6a')],'server/files/images/avatars/default_avatar.png');var _0x1e1ea6={'where':{'id':_0x51b893[_0x05a9('0x46')]['id']},'attributes':['id',_0x05a9('0x64')],'raw':!![]};return db[_0x05a9('0x31')][_0x05a9('0x4c')](_0x1e1ea6)[_0x05a9('0x14')](handleEntityNotFound(_0x54c762,null))[_0x05a9('0x14')](function(_0xbee1a3){if(_0xbee1a3){if(!_['isNil'](_0xbee1a3['agentAvatar'])){if(fs['existsSync'](path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0x72'),_0xbee1a3['agentAvatar']))){_0x2b8082=path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0x72'),_0xbee1a3[_0x05a9('0x64')]);}}return _0x54c762['download'](_0x2b8082);}})[_0x05a9('0x1e')](handleError(_0x54c762,null));};exports[_0x05a9('0x73')]=function(_0x3c94f3,_0x576909){var _0x5a6904=path['join'](config[_0x05a9('0x6a')],_0x05a9('0x74'));var _0x2720c3={'where':{'id':_0x3c94f3[_0x05a9('0x46')]['id']},'attributes':['id',_0x05a9('0x66'),_0x05a9('0x75')],'raw':!![]};return db[_0x05a9('0x31')][_0x05a9('0x4c')](_0x2720c3)[_0x05a9('0x14')](handleEntityNotFound(_0x576909,null))[_0x05a9('0x14')](function(_0x483e5a){if(_0x483e5a){if(!_[_0x05a9('0x6e')](_0x483e5a['customerAvatar'])){if(fs[_0x05a9('0x6f')](path[_0x05a9('0x69')](config['root'],_0x05a9('0x72'),_0x483e5a[_0x05a9('0x66')]))&&_0x483e5a[_0x05a9('0x75')]){_0x5a6904=path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0x72'),_0x483e5a[_0x05a9('0x66')]);}}return _0x576909[_0x05a9('0x70')](_0x5a6904);}})['catch'](handleError(_0x576909,null));};exports[_0x05a9('0x76')]=function(_0xeb86c5,_0x486ee9){var _0x2ca232=path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0x77'));var _0x37de39={'where':{'id':_0xeb86c5[_0x05a9('0x46')]['id']},'attributes':['id',_0x05a9('0x67')],'raw':!![]};return db[_0x05a9('0x31')][_0x05a9('0x4c')](_0x37de39)[_0x05a9('0x14')](handleEntityNotFound(_0x486ee9,null))[_0x05a9('0x14')](function(_0x2cbe0b){if(_0x2cbe0b){if(!_[_0x05a9('0x6e')](_0x2cbe0b[_0x05a9('0x67')])){if(fs[_0x05a9('0x6f')](path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0x72'),_0x2cbe0b[_0x05a9('0x67')]))){_0x2ca232=path[_0x05a9('0x69')](config['root'],_0x05a9('0x72'),_0x2cbe0b[_0x05a9('0x67')]);}}return _0x486ee9['download'](_0x2ca232);}})[_0x05a9('0x1e')](handleError(_0x486ee9,null));};exports[_0x05a9('0x78')]=function(_0x16e07c,_0x349a70){var _0x1f5e4e=require(_0x05a9('0x79'));var _0xe24d9=new _0x1f5e4e();var _0x4eca97=_0xe24d9[_0x05a9('0x7a')](_0x16e07c[_0x05a9('0x7b')][_0x05a9('0x7c')])[_0x05a9('0x7d')]();var _0x4db9fb={'body':_0x16e07c[_0x05a9('0x4e')],'channel':'chat'};var _0xea5e93=[];var _0x276802=[];var _0x4c7f55={};var _0x5e53c9=![];return db[_0x05a9('0x7e')][_0x05a9('0x54')]()['then'](function(_0x12f82f){if(!_0x12f82f){throw new db['Sequelize'][(_0x05a9('0x7f'))](_0x05a9('0x80'));}_0xea5e93=_[_0x05a9('0x81')](_[_0x05a9('0x37')](_0x12f82f),[_0x05a9('0x82'),_0x05a9('0x83')]);_0x276802=_[_0x05a9('0x81')](_['keys'](_0x12f82f),[_0x05a9('0x82'),'updatedAt',_0x05a9('0x84'),'ListId']);if(_0x16e07c['body']['id']){delete _0x16e07c[_0x05a9('0x4e')]['id'];}if(_[_0x05a9('0x6e')](_0x16e07c[_0x05a9('0x4e')][_0x05a9('0x85')])){throw new db[(_0x05a9('0x86'))]['ValidationError'](_0x05a9('0x87'));}if(_[_0x05a9('0x6e')](_0x16e07c[_0x05a9('0x4e')][_0x05a9('0x4e')])||_0x16e07c[_0x05a9('0x4e')]['body']===''){throw new db[(_0x05a9('0x86'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x16e07c['body'][_0x05a9('0x88')])){throw new db[(_0x05a9('0x86'))]['ValidationError'](_0x05a9('0x89')+_0x276802);}if(!_[_0x05a9('0x8a')](_0x276802,_0x16e07c['body']['mapKey'])){throw new db[(_0x05a9('0x86'))][(_0x05a9('0x7f'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x276802);}_0x4c7f55[_0x16e07c['body'][_0x05a9('0x88')]]=_0x16e07c['body'][_0x05a9('0x85')];})['then'](function(){return db['ChatWebsite'][_0x05a9('0x4c')]({'where':{'id':_0x16e07c[_0x05a9('0x46')]['id']},'include':[{'model':db['CmList'],'as':_0x05a9('0x8b'),'include':[{'model':db[_0x05a9('0x7e')],'as':_0x05a9('0x8c'),'where':_0x4c7f55,'limit':0x1,'order':[[_0x05a9('0x83'),_0x05a9('0x8d')]]}]},{'model':db[_0x05a9('0x8e')],'as':_0x05a9('0x8f')}]});})[_0x05a9('0x14')](handleEntityNotFound(_0x349a70,null))['then'](function(_0x1a50c4){if(_0x1a50c4&&_0x1a50c4[_0x05a9('0x8b')]){_0x4db9fb[_0x05a9('0x90')]=_0x1a50c4;_0x4db9fb[_0x05a9('0x91')]=_0x1a50c4['Applications'];_0x4db9fb['list']=_0x1a50c4[_0x05a9('0x8b')];_0x4db9fb['applications']=_['orderBy'](_0x4db9fb['applications'],[_0x05a9('0x92')],[_0x05a9('0x93')]);if(_0x4db9fb['account'][_0x05a9('0x8f')]){delete _0x4db9fb[_0x05a9('0x90')][_0x05a9('0x8f')];}if(_0x4db9fb['account'][_0x05a9('0x8b')]&&_0x4db9fb[_0x05a9('0x90')][_0x05a9('0x8b')]['Contacts']['length']){return _0x4db9fb[_0x05a9('0x90')][_0x05a9('0x8b')][_0x05a9('0x8c')][0x0];}var _0x19f7d1=_['defaults'](_0x16e07c[_0x05a9('0x4e')],{'firstName':_0x16e07c[_0x05a9('0x4e')][_0x05a9('0x85')],'ListId':_0x1a50c4[_0x05a9('0x94')]});_0x19f7d1[_0x16e07c['body']['mapKey']]=_0x16e07c[_0x05a9('0x4e')][_0x05a9('0x85')];return db[_0x05a9('0x7e')][_0x05a9('0x4d')](_0x19f7d1,{'fields':_0xea5e93,'raw':!![]});}})[_0x05a9('0x14')](handleEntityNotFound(_0x349a70,null))[_0x05a9('0x14')](function(_0x5c1d46){_0x4db9fb[_0x05a9('0x95')]=_0x5c1d46;var _0x1f8665=_0x16e07c['body'][_0x05a9('0x96')];if(_0x16e07c['headers'][_0x05a9('0x97')]){_0x1f8665=_0x16e07c['headers']['cf-connecting-ip'];}else if(_0x16e07c[_0x05a9('0x7b')]['x-forwarded-for']){_0x1f8665=_['first'](_0x16e07c[_0x05a9('0x7b')][_0x05a9('0x98')][_0x05a9('0x99')](','));}if(_0x5c1d46){var _0xdec955={'ContactId':_0x5c1d46['id'],'ChatWebsiteId':_0x16e07c[_0x05a9('0x46')]['id'],'from':(_0x5c1d46[_0x05a9('0x9a')]||'')+'\x20'+(_0x5c1d46[_0x05a9('0x9b')]||''),'customerIp':_0x1f8665,'customerPort':_0x16e07c[_0x05a9('0x7b')][_0x05a9('0x9c')]?_0x16e07c[_0x05a9('0x7b')][_0x05a9('0x9c')]:null,'referer':_0x16e07c[_0x05a9('0x4e')]['referer'],'browserName':_0x4eca97[_0x05a9('0x9d')][_0x05a9('0x2d')]&&_0x4eca97['browser']['version']?util['format'](_0x05a9('0x9e'),_0x4eca97[_0x05a9('0x9d')][_0x05a9('0x2d')],_0x4eca97['browser'][_0x05a9('0x9f')]):_0x05a9('0xa0'),'browserVersion':_0x4eca97[_0x05a9('0x9d')][_0x05a9('0x9f')]||_0x05a9('0xa0'),'osName':util[_0x05a9('0xa1')](_0x05a9('0x9e'),_0x4eca97['os'][_0x05a9('0x2d')],_0x4eca97['os'][_0x05a9('0x9f')]),'osVersion':_0x4eca97['os'][_0x05a9('0x9f')],'deviceModel':_0x4eca97[_0x05a9('0xa2')][_0x05a9('0x35')]&&_0x4eca97[_0x05a9('0xa2')][_0x05a9('0xa3')]?util[_0x05a9('0xa1')](_0x05a9('0xa4'),_0x4eca97['device'][_0x05a9('0x35')],_0x4eca97['device'][_0x05a9('0xa3')],_0x4eca97['device']['type']):null,'deviceVendor':_0x4eca97[_0x05a9('0xa2')][_0x05a9('0xa3')],'deviceType':_0x4eca97[_0x05a9('0xa2')]['type'],'formData':JSON[_0x05a9('0x19')](_0x16e07c['body'])};var _0x53dbd9={'ChatWebsiteId':_0x16e07c[_0x05a9('0x46')]['id'],'closed':![]};if(_0x16e07c[_0x05a9('0x4e')]['threadId']){_0x53dbd9[_0x05a9('0xa5')]=_0x16e07c[_0x05a9('0x4e')][_0x05a9('0xa5')];return db['ChatInteraction']['find']({'where':_0x53dbd9})[_0x05a9('0x14')](function(_0x53f712){if(_0x53f712){return[_0x53f712,![]];}_0xdec955[_0x05a9('0xa5')]=_0x16e07c['body'][_0x05a9('0xa5')];_0xdec955[_0x05a9('0xa6')]=_0x16e07c[_0x05a9('0x4e')]['externalUrl'];return db[_0x05a9('0xa7')][_0x05a9('0x4d')](_0xdec955)[_0x05a9('0x14')](function(_0x4305ce){return[_0x4305ce,!![]];});});}_0x53dbd9[_0x05a9('0xa8')]=_0x5c1d46['id'];if(_0x16e07c[_0x05a9('0x4e')]['interaction']&&_0x16e07c['body'][_0x05a9('0xa9')]['id']){_0x53dbd9['id']=_0x16e07c[_0x05a9('0x4e')]['interaction']['id'];return db[_0x05a9('0xa7')][_0x05a9('0x4c')]({'where':_0x53dbd9})[_0x05a9('0x14')](function(_0x51fa72){if(_0x51fa72){return[_0x51fa72,![]];}return db[_0x05a9('0xa7')][_0x05a9('0x4d')](_0xdec955)[_0x05a9('0x14')](function(_0x1d2d24){return[_0x1d2d24,!![]];});});}return db[_0x05a9('0xa7')]['create'](_0xdec955)[_0x05a9('0x14')](function(_0x22aed3){return[_0x22aed3,!![]];});}})[_0x05a9('0xaa')](function(_0x4de44e,_0x4c9911){if(_0x4de44e){_0x5e53c9=_0x4c9911;if(!_0x4c9911){var _0x219dcb={'from':(_0x4db9fb[_0x05a9('0x95')]['firstName']||'')+'\x20'+(_0x4db9fb['contact'][_0x05a9('0x9b')]||'')};if(_0x16e07c[_0x05a9('0x4e')][_0x05a9('0xa5')]&&_0x16e07c[_0x05a9('0x4e')]['messageId']&&_0x16e07c['body'][_0x05a9('0xa5')]!=_0x16e07c['body'][_0x05a9('0xab')]){_0x219dcb['threadId']=_0x16e07c[_0x05a9('0x4e')]['messageId'];}return _0x4de44e[_0x05a9('0x28')](_0x219dcb);}else{return _0x4de44e;}}})['then'](function(_0xfa59f1){_0x4db9fb[_0x05a9('0xa9')]=_0xfa59f1[_0x05a9('0x2a')]({'plain':!![]});_0x4db9fb[_0x05a9('0xa9')]['created']=_0x5e53c9;if(_0x4db9fb[_0x05a9('0xa9')][_0x05a9('0xac')]){if(_0x4db9fb[_0x05a9('0x90')][_0x05a9('0xad')]){_0x4db9fb[_0x05a9('0x91')][_0x05a9('0xae')]({'id':0x0,'priority':_0x4db9fb['applications'][_0x05a9('0x3c')]+0x1,'app':_0x05a9('0xaf'),'appdata':'unmanaged','interval':_0x05a9('0xb0')});}}return db[_0x05a9('0xb1')]['create']({'body':_0x16e07c[_0x05a9('0x4e')][_0x05a9('0x4e')],'ChatWebsiteId':_0x16e07c[_0x05a9('0x46')]['id'],'ChatInteractionId':_0xfa59f1['id'],'direction':'in','ContactId':_0x4db9fb['contact']['id'],'AttachmentId':_0x16e07c['body'][_0x05a9('0xb2')]});})[_0x05a9('0x14')](function(_0x33a24e){_0x4db9fb[_0x05a9('0x1c')]=_0x33a24e;if(_0x4db9fb['interaction'][_0x05a9('0xb3')]){return db[_0x05a9('0xb4')][_0x05a9('0x4c')]({'attributes':['id',_0x05a9('0x2d')],'where':{'id':_0x4db9fb[_0x05a9('0xa9')][_0x05a9('0xb3')]}})[_0x05a9('0x14')](function(_0x480fb5){if(_0x480fb5){_0x4db9fb[_0x05a9('0x91')][_0x05a9('0xb5')]({'id':0x0,'priority':0x0,'app':_0x05a9('0xb6'),'appdata':_0x480fb5['name']+','+(_0x4db9fb[_0x05a9('0x90')][_0x05a9('0xb7')]||0xa),'interval':_0x05a9('0xb0')});_0x4db9fb['forcedOwnership']=!![];}return respondWithRpcPromise(_0x05a9('0xb8'),'startRouting',_0x4db9fb);});}return respondWithRpcPromise('Start',_0x05a9('0xb9'),_0x4db9fb);})[_0x05a9('0x14')](function(_0x454afe){respondWithRpcPromise(_0x05a9('0xba'),_0x05a9('0xba'),{'event':'notify','message':_0x454afe},client9002);return _0x454afe;})[_0x05a9('0x14')](respondWithResult(_0x349a70,null))[_0x05a9('0x1e')](handleError(_0x349a70,null));};exports[_0x05a9('0xbb')]=function(_0x995825,_0x49e35){var _0x2507c2,_0x4dca64,_0xaebe81;var _0x17de7a=[];var _0x2ce78e={};var _0x28e176=_0x995825[_0x05a9('0xbc')]||[];var _0x2883c4=[];var _0x29db1c;return db[_0x05a9('0x7e')][_0x05a9('0x54')]()['then'](function(_0x9ff7a3){if(!_0x9ff7a3){throw new db[(_0x05a9('0x86'))][(_0x05a9('0x7f'))](_0x05a9('0x80'));}_0x17de7a=_[_0x05a9('0x81')](_[_0x05a9('0x37')](_0x9ff7a3),[_0x05a9('0x82'),_0x05a9('0x83'),_0x05a9('0x84'),'ListId']);if(_0x995825[_0x05a9('0x4e')]['id']){delete _0x995825[_0x05a9('0x4e')]['id'];}if(_[_0x05a9('0x6e')](_0x995825[_0x05a9('0x4e')][_0x05a9('0x85')])){throw _0x49e35[_0x05a9('0x20')](0x1f4)[_0x05a9('0x2e')](new db[(_0x05a9('0x86'))][(_0x05a9('0x7f'))](_0x05a9('0x87')));}if(_[_0x05a9('0x6e')](_0x995825[_0x05a9('0x4e')][_0x05a9('0x4e')])||_0x995825['body'][_0x05a9('0x4e')]===''){throw _0x49e35[_0x05a9('0x20')](0x1f4)[_0x05a9('0x2e')](new db[(_0x05a9('0x86'))][(_0x05a9('0x7f'))](_0x05a9('0xbd')));}if(_['isNil'](_0x995825['body'][_0x05a9('0xbe')])){throw _0x49e35['status'](0x1f4)[_0x05a9('0x2e')](new db[(_0x05a9('0x86'))][(_0x05a9('0x7f'))](_0x05a9('0xbf')+_0x17de7a));}if(!_[_0x05a9('0x8a')](_0x17de7a,_0x995825[_0x05a9('0x4e')][_0x05a9('0xbe')])){throw _0x49e35[_0x05a9('0x20')](0x1f4)['send'](new db[(_0x05a9('0x86'))][(_0x05a9('0x7f'))](_0x05a9('0xc0')+_0x17de7a));}_0x2ce78e[_0x995825['body']['mapKeyOffline']]=_0x995825[_0x05a9('0x4e')][_0x05a9('0x85')];})['then'](function(){return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'where':{'id':_0x995825[_0x05a9('0x46')]['id']},'include':[{'model':db[_0x05a9('0xc1')],'as':_0x05a9('0x8b')},{'model':db[_0x05a9('0xc2')],'as':_0x05a9('0xc2')}]});})[_0x05a9('0x14')](handleEntityNotFound(_0x49e35,null))[_0x05a9('0x14')](function(_0x107146){if(_0x107146&&_0x107146[_0x05a9('0x8b')]){_0x4dca64=_0x107146;var _0x2e640b=_['defaults'](_0x995825['body'],{'firstName':_0x995825[_0x05a9('0x4e')][_0x05a9('0x85')],'phone':_0x995825[_0x05a9('0x4e')][_0x05a9('0x85')],'ListId':_0x107146[_0x05a9('0x94')]});_0x2e640b[_0x995825[_0x05a9('0x4e')][_0x05a9('0xbe')]]=_0x995825[_0x05a9('0x4e')]['from'];return db[_0x05a9('0x7e')][_0x05a9('0xc3')]({'where':_0x2ce78e,'defaults':_0x2e640b});}})['spread'](function(_0x141551){if(_0x141551){_0xaebe81=_0x141551;var _0x3918f2=fs['readFileSync'](path[_0x05a9('0x69')](config['root'],_0x05a9('0xc4')),_0x05a9('0xc5'));var _0x6db369=ejs[_0x05a9('0xc6')](_0x3918f2,{'body':_[_0x05a9('0xc7')](_0x995825[_0x05a9('0x4e')][_0x05a9('0x4e')]),'bodyTitle':_0x4dca64[_0x05a9('0xc8')]});return db['ChatOfflineMessage'][_0x05a9('0x4d')]({'body':_0x6db369,'plainBody':htmlToText['fromString'](_0x6db369),'ContactId':_0x141551['id'],'ChatWebsiteId':_0x4dca64['id']});}})['then'](function(_0x99434f){_0x29db1c=_0x99434f;if(_0x28e176[_0x05a9('0x3c')]){var _0x3f1052=_0x28e176[_0x05a9('0x30')](function(_0x5041f5){return{'name':_0x5041f5[_0x05a9('0xc9')],'basename':_0x5041f5[_0x05a9('0x63')],'type':_0x5041f5[_0x05a9('0xca')],'ChatOfflineMessageId':_0x99434f['id']};});_0x2883c4=_0x3f1052[_0x05a9('0x30')](_0x2ca037=>{var _0x98ad5={'filename':_0x2ca037['name'],'path':path['join'](config[_0x05a9('0x6a')],_0x05a9('0xcb'),_0x05a9('0xbc'),_0x05a9('0xcc'),_0x05a9('0xcd'),_0x2ca037[_0x05a9('0xce')])};return _0x98ad5;});if(!_0x4dca64[_0x05a9('0xcf')]){return db[_0x05a9('0xd0')]['transaction'](function(_0x176986){return db[_0x05a9('0xd1')][_0x05a9('0xd2')](_0x3f1052,{'transaction':_0x176986});});}}})[_0x05a9('0x14')](function(){if(_0x29db1c){_0x2507c2=_0x29db1c;return db[_0x05a9('0xc2')][_0x05a9('0x57')]({'where':{'service':!![]},'include':[{'model':db[_0x05a9('0xd3')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x05a9('0xd4')],'as':_0x05a9('0xd4'),'raw':!![]}]}]});}})[_0x05a9('0x14')](function(_0x5e86c2){if(_0x5e86c2&&_0x5e86c2[_0x05a9('0xd5')]&&_0x4dca64['forwardOffline']&&_0x4dca64[_0x05a9('0xd6')]){var _0x1bcc42=_0x5e86c2[_0x05a9('0xd7')]();return respondWithRpcPromise(_0x05a9('0xd8'),'sendMail',{'account':_0x1bcc42,'message':{'from':util['format'](_0x05a9('0xd9'),_0x5e86c2['name'],_0x5e86c2[_0x05a9('0xda')]||_0x5e86c2[_0x05a9('0xd5')][_0x05a9('0x4f')]),'to':_0x4dca64[_0x05a9('0xd6')],'subject':_0x4dca64[_0x05a9('0xdb')],'html':_0x2507c2[_0x05a9('0x4e')],'attachments':_0x2883c4}},client9003)['then'](function(){return _0x2507c2;})[_0x05a9('0x1e')](function(_0x14b4f9){logger['error'](_0x14b4f9);});}})[_0x05a9('0x14')](function(){if(_0x4dca64&&_0x4dca64['openNewInteraction']&&_0x4dca64['MailAccountId']){var _0x33a716=[];if(_0x28e176[_0x05a9('0x3c')]){_0x33a716=_0x28e176[_0x05a9('0x30')](function(_0x3e9738){return{'name':_0x3e9738[_0x05a9('0xc9')],'basename':_0x3e9738[_0x05a9('0x63')],'type':_0x3e9738[_0x05a9('0xca')],'ChatOfflineMessageId':_0x29db1c['id']};});}var _0x378d56;if(!_['isNil'](_0x4dca64[_0x05a9('0xdc')])){var _0x9b34ad=_[_0x05a9('0x30')](_0x995825[_0x05a9('0x4e')],function(_0x148728){return _0x148728;});var _0x115f04=_[_0x05a9('0xdd')](_0x9b34ad)[0x0];var _0x5cb20a=_[_0x05a9('0xde')](_0x115f04,function(_0x115467){return _0x115467;});_0x378d56=_0x5cb20a[0x1][_0x4dca64['subjectOffline']];}var _0xe75bcb={'from':_0xaebe81['email'],'firstName':_0xaebe81[_0x05a9('0x9a')],'lastName':_0xaebe81[_0x05a9('0x9b')],'mapKey':_0x05a9('0xda'),'message':{'from':_0xaebe81[_0x05a9('0xda')],'to':_0x4dca64[_0x05a9('0xc2')][_0x05a9('0xda')],'cc':'','subject':_[_0x05a9('0x6e')](_0x378d56)?_0x4dca64[_0x05a9('0xdb')]:_0x378d56,'messageId':'','sentAt':new Date(),'attach':_0x33a716[_0x05a9('0x3c')],'attachments':_0x33a716,'originChannel':'Chat','ChatWebsiteId':_0x4dca64['id'],'ChatOfflineMessageId':_0x2507c2['id'],'originTo':_0x4dca64[_0x05a9('0xc2')][_0x05a9('0xda')]},'body':_0x2507c2[_0x05a9('0x4e')]};var _0x11a790={'account':{'id':_0x4dca64['MailAccountId']},'body':_0xe75bcb,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x05a9('0xdf'),_0x05a9('0xe0'),_0x11a790,client9001)['then'](function(){return _0x2507c2;})[_0x05a9('0x1e')](function(_0x799e66){logger['error'](_0x799e66);});}return;})[_0x05a9('0x14')](function(){if(_0x2507c2){return _0x2507c2;}})[_0x05a9('0x14')](respondWithResult(_0x49e35,null))[_0x05a9('0x1e')](function(_0x2c2a58){logger[_0x05a9('0x1a')](_0x05a9('0x1e'),_0x2c2a58);for(var _0x193b17 of _0x28e176){var _0x1ae09b=path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0xcb'),'files','attachments',_0x05a9('0xcd'),_0x193b17[_0x05a9('0x63')]);fs_extra[_0x05a9('0xe1')](_0x1ae09b)[_0x05a9('0x1e')](function(_0x4b542d){logger[_0x05a9('0x1a')]('Could\x20not\x20remove\x20attachment\x20file',_0x1ae09b,_0x4b542d);});}});};exports[_0x05a9('0xe2')]=function(_0x5db114,_0x4014a7){return db[_0x05a9('0xa7')]['find']({'where':{'id':_0x5db114['params']['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x4014a7,null))[_0x05a9('0x14')](function(_0x43ba3a){if(_0x43ba3a){return _0x43ba3a[_0x05a9('0xe2')](_0x5db114[_0x05a9('0x4e')][_0x05a9('0x5c')],_[_0x05a9('0xe3')](_0x5db114['body'],[_0x05a9('0x5c'),'id'])||{});}})[_0x05a9('0x14')](respondWithResult(_0x4014a7,null))[_0x05a9('0x1e')](handleError(_0x4014a7,null));};exports[_0x05a9('0xe4')]=function(_0x5d8aa2,_0xc1879d){var _0x13f7d0={'raw':![],'where':{}};var _0x3a3462={};var _0x2502f7={'count':0x0,'rows':[]};return db[_0x05a9('0x31')][_0x05a9('0x57')]({'where':{'id':_0x5d8aa2['params']['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0xc1879d,null))[_0x05a9('0x14')](function(_0x2381b4){if(_0x2381b4){_0x3a3462['model']=_[_0x05a9('0x37')](db['ChatInteraction'][_0x05a9('0xe5')]);_0x3a3462[_0x05a9('0x36')]=_[_0x05a9('0x37')](_0x5d8aa2[_0x05a9('0x36')]);_0x3a3462[_0x05a9('0x38')]=_[_0x05a9('0x39')](_0x3a3462['model'],_0x3a3462[_0x05a9('0x36')]);_0x13f7d0[_0x05a9('0x3a')]=_['intersection'](_0x3a3462[_0x05a9('0x35')],qs[_0x05a9('0x3b')](_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0x3b')]));_0x13f7d0[_0x05a9('0x3a')]=_0x13f7d0[_0x05a9('0x3a')][_0x05a9('0x3c')]?_0x13f7d0[_0x05a9('0x3a')]:_0x3a3462[_0x05a9('0x35')];if(!_0x5d8aa2['query'][_0x05a9('0x3d')](_0x05a9('0x5f'))){_0x13f7d0[_0x05a9('0x23')]=qs[_0x05a9('0x23')](_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0x23')]);_0x13f7d0[_0x05a9('0x25')]=qs['offset'](_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0x25')]);}_0x13f7d0[_0x05a9('0x3e')]=qs[_0x05a9('0x3f')](_0x5d8aa2[_0x05a9('0x36')]['sort']);_0x13f7d0[_0x05a9('0x40')]=qs[_0x05a9('0x38')](_[_0x05a9('0x41')](_0x5d8aa2[_0x05a9('0x36')],_0x3a3462[_0x05a9('0x38')]));_0x13f7d0[_0x05a9('0x40')][_0x05a9('0x55')]=_0x2381b4['id'];if(_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0x59')]){_0x13f7d0[_0x05a9('0x40')]=_[_0x05a9('0x4a')](_0x13f7d0[_0x05a9('0x40')],{'$or':_['map'](_0x13f7d0[_0x05a9('0x3a')],function(_0x2de835){var _0x2459cf={};_0x2459cf[_0x2de835]={'$like':'%'+_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0x59')]+'%'};return _0x2459cf;})});}_0x13f7d0=_['merge']({},_0x13f7d0,_0x5d8aa2[_0x05a9('0x4b')]);return db[_0x05a9('0xa7')][_0x05a9('0x24')]({'where':_0x13f7d0['where']})[_0x05a9('0x14')](function(_0x433a5c){_0x2502f7['count']=_0x433a5c;if(_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0x43')]){_0x13f7d0['include']=[{'model':db[_0x05a9('0x7e')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x05a9('0xe6'),'attributes':[_0x05a9('0x2d'),'fullname',_0x05a9('0xe7')],'required':![]},{'model':db['Tag'],'as':_0x05a9('0xe8'),'attributes':['id',_0x05a9('0x2d'),_0x05a9('0xe9')],'where':_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0xea')]?{'id':_0x5d8aa2[_0x05a9('0x36')]['tag']}:undefined,'required':_0x5d8aa2[_0x05a9('0x36')][_0x05a9('0xea')]?!![]:![]}];}return db[_0x05a9('0xa7')]['findAll'](_0x13f7d0);})['then'](function(_0x50f8ba){_0x2502f7[_0x05a9('0x44')]=_0x50f8ba;return _0x2502f7;});}})[_0x05a9('0x14')](respondWithFilteredResult(_0xc1879d,_0x13f7d0))[_0x05a9('0x1e')](handleError(_0xc1879d,null));};function iftimePromise(_0x2c94a5,_0x5bd510){return respondWithRpcPromise('Command',_0x05a9('0xeb'),{'command':_0x5bd510['timezone']?util[_0x05a9('0xa1')](_0x05a9('0xec'),_0x2c94a5[_0x05a9('0xed')],_0x5bd510[_0x05a9('0xee')]):util[_0x05a9('0xa1')](_0x05a9('0xef'),_0x2c94a5[_0x05a9('0xed')])},client9002)[_0x05a9('0x14')](function(_0x93e635){var _0x22fd6a=_0x93e635&&_0x93e635[_0x05a9('0xf0')](_0x05a9('0xf1'))>=0x0?!![]:![];logger[_0x05a9('0x15')](_0x05a9('0xf2'),_0x5bd510['id'],_0x2c94a5['id'],_0x2c94a5[_0x05a9('0xed')],_0x22fd6a?_0x05a9('0xf3'):_0x05a9('0xf4'),_0x5bd510[_0x05a9('0xee')]?_0x5bd510['timezone']:_0x05a9('0xf5'));return _0x22fd6a;})['catch'](function(_0x558fb6){logger[_0x05a9('0x1a')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x5bd510['id'],_0x2c94a5['id'],_0x2c94a5[_0x05a9('0xed')],util[_0x05a9('0xf6')](_0x558fb6,{'showHidden':![],'depth':null}),_0x5bd510['timezone']?_0x5bd510[_0x05a9('0xee')]:'No\x20timezone');return![];});}exports[_0x05a9('0xeb')]=function(_0x387a1c,_0xd426bd){var _0xfe9d72=0x0;var _0x149674=0x0;var _0x11d6b5=![];var _0x14a423;var _0x27c8ff;return db[_0x05a9('0x31')]['find']({'where':{'id':_0x387a1c[_0x05a9('0x46')]['id']},'include':[{'model':db['Interval'],'as':'Interval','include':[{'model':db[_0x05a9('0xf7')],'as':_0x05a9('0xf8'),'attributes':['id',_0x05a9('0xed')],'raw':!![]}]}]})[_0x05a9('0x14')](handleEntityNotFound(_0xd426bd,null))[_0x05a9('0x14')](function(_0x4a6071){if(_0x4a6071){_0x14a423=_0x4a6071;return _0x4a6071[_0x05a9('0xf9')]({'raw':!![]});}})[_0x05a9('0x14')](function(_0x341e5a){if(_0x14a423){if(_0x341e5a){_0x27c8ff=_0x341e5a;}}return require(_0x05a9('0xfa'))[_0x05a9('0x6d')]();})[_0x05a9('0x14')](function(_0xb07fcb){if(_0xb07fcb){_0x149674=_0xb07fcb['virtual'];_0x11d6b5=_0xb07fcb[_0x05a9('0xfb')];}})[_0x05a9('0x14')](function(){return db[_0x05a9('0xa7')][_0x05a9('0x24')]({'where':{'closed':![]}});})[_0x05a9('0x14')](function(_0x569988){_0xfe9d72=_0x569988;if(_0x149674&&_0x569988>_0x149674){return db['License'][_0x05a9('0x57')]({'where':{'id':0x1}})[_0x05a9('0x14')](function(_0x3b5640){if(_0x3b5640){_0x3b5640['increment'](_0x05a9('0xfc'));}});}})['then'](function(){if(_0x14a423[_0x05a9('0xf7')]&&_0x14a423[_0x05a9('0xf7')][_0x05a9('0xf8')]){var _0x2512e7=[];for(var _0x59ed3f=0x0;_0x59ed3f<_0x14a423[_0x05a9('0xf7')][_0x05a9('0xf8')][_0x05a9('0x3c')];_0x59ed3f++){var _0xdfa656=_0x14a423['Interval'][_0x05a9('0xf8')][_0x59ed3f][_0x05a9('0x2a')]({'plain':!![]});_0x2512e7[_0x05a9('0xae')](iftimePromise(_0xdfa656,_0x14a423));}return BPromise[_0x05a9('0xfd')](_0x2512e7)[_0x05a9('0x14')](function(_0xcf33fa){return _[_0x05a9('0xfe')](_0xcf33fa);});}else{return!![];}})[_0x05a9('0x14')](function(_0x44a630){var _0x4b8f92=fs[_0x05a9('0xff')](path[_0x05a9('0x69')](config[_0x05a9('0x6a')],_0x05a9('0x100')),_0x05a9('0xc5'));var _0x4a96eb={'remote':_0x14a423[_0x05a9('0x101')],'query':querystring['stringify'](_[_0x05a9('0x4a')](_0x14a423['get']({'plain':!![]}),{'customerIp':_0x387a1c[_0x05a9('0x7b')][_0x05a9('0x98')]||_0x387a1c[_0x05a9('0x7b')]['x-real-ip']||_0x387a1c[_0x05a9('0x102')][_0x05a9('0x103')]||_0x387a1c['ip'],'referer':_0x387a1c[_0x05a9('0x7b')]['referer'],'openedInteractions':_0xfe9d72,'maxInteractions':_0x149674,'virtual':_0x11d6b5[_0x05a9('0x104')],'online':_0x44a630,'custom':_0x11d6b5}))[_0x05a9('0x105')](/'/g,'\x5c\x27')};_0xd426bd[_0x05a9('0x2e')](ejs[_0x05a9('0xc6')](Mustache['render'](_0x4b8f92,_0x4a96eb),{'proactiveActions':_0x27c8ff,'alignment':_0x14a423[_0x05a9('0x106')],'verticalAlignment':_0x14a423['verticalAlignment'],'div_color':_0x14a423[_0x05a9('0xe9')],'labelText':_0x14a423[_0x05a9('0x107')],'text_color':_0x14a423['textColor'],'text_button_color':_0x14a423['textButtonColor'],'button_color':_0x14a423[_0x05a9('0x108')],'background_color':_0x14a423[_0x05a9('0x109')],'hideWhenOffline':_0x14a423[_0x05a9('0x10a')],'interval':_0x14a423[_0x05a9('0x10b')]}));})['catch'](handleError(_0xd426bd,null));};exports[_0x05a9('0x10c')]=function(_0x261e2c,_0x176217){var _0x34a192=_0x261e2c['params']['id'];var _0x5cc123=_0x261e2c[_0x05a9('0x4e')];var _0x12572f=0xc8;var _0x382e4d=null;return db['sequelize'][_0x05a9('0x10d')]({'isolationLevel':db[_0x05a9('0xd0')][_0x05a9('0x10e')][_0x05a9('0x10f')][_0x05a9('0x110')]},function(_0x366bbb){return db[_0x05a9('0x31')][_0x05a9('0x57')]({'where':{'id':_0x34a192},'transaction':_0x366bbb})[_0x05a9('0x14')](function(_0x11d5ca){if(_0x11d5ca){return db[_0x05a9('0x8e')][_0x05a9('0x29')]({'where':{'ChatWebsiteId':_0x34a192},'transaction':_0x366bbb})[_0x05a9('0x14')](function(){var _0x29b457=_[_0x05a9('0x30')](_0x5cc123,function(_0x49c66e){_0x49c66e[_0x05a9('0x55')]=_0x34a192;return _0x49c66e;});return db[_0x05a9('0x8e')]['bulkCreate'](_0x29b457,{'transaction':_0x366bbb});});}else{_0x12572f=0x194;_0x382e4d=[];}});})[_0x05a9('0x14')](function(){if(_0x12572f!==0x194){return db['ChatApplication'][_0x05a9('0x111')]({'where':{'ChatWebsiteId':_0x34a192},'order':_0x05a9('0x92')})['then'](function(_0x1b516a){_0x382e4d=_0x1b516a;});}})[_0x05a9('0x1e')](function(_0x40e756){_0x12572f=0x1f4;logger[_0x05a9('0x1a')](_0x40e756[_0x05a9('0x112')]);if(_0x40e756['name']){delete _0x40e756['name'];}_0x382e4d=_0x40e756;})[_0x05a9('0x113')](function(){if(_0x382e4d===null){_0x176217['sendStatus'](_0x12572f);}else{if(_0x12572f===0x1f4){_0x176217[_0x05a9('0x20')](_0x12572f)[_0x05a9('0x2e')](_0x382e4d);}else{_0x176217[_0x05a9('0x20')](_0x12572f)[_0x05a9('0x114')](_0x382e4d);}}});};exports[_0x05a9('0x115')]=function(_0x18ba63,_0x1f584e){var _0x4b622d={};var _0x29a325={};var _0x16179d;var _0x3ed823;return db[_0x05a9('0x31')][_0x05a9('0x57')]({'where':{'id':_0x18ba63[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x1f584e,null))['then'](function(_0x88a66d){if(_0x88a66d){_0x16179d=_0x88a66d;_0x29a325[_0x05a9('0x35')]=_[_0x05a9('0x37')](db[_0x05a9('0x8e')]['rawAttributes']);_0x29a325['query']=_['keys'](_0x18ba63[_0x05a9('0x36')]);_0x29a325['filters']=_[_0x05a9('0x39')](_0x29a325['model'],_0x29a325[_0x05a9('0x36')]);_0x4b622d[_0x05a9('0x3a')]=_[_0x05a9('0x39')](_0x29a325['model'],qs[_0x05a9('0x3b')](_0x18ba63[_0x05a9('0x36')][_0x05a9('0x3b')]));_0x4b622d[_0x05a9('0x3a')]=_0x4b622d[_0x05a9('0x3a')][_0x05a9('0x3c')]?_0x4b622d[_0x05a9('0x3a')]:_0x29a325[_0x05a9('0x35')];_0x4b622d['order']=qs[_0x05a9('0x3f')](_0x18ba63[_0x05a9('0x36')]['sort']);_0x4b622d[_0x05a9('0x40')]=qs[_0x05a9('0x38')](_[_0x05a9('0x41')](_0x18ba63[_0x05a9('0x36')],_0x29a325[_0x05a9('0x38')]));if(_0x18ba63[_0x05a9('0x36')][_0x05a9('0x59')]){_0x4b622d['where']=_[_0x05a9('0x4a')](_0x4b622d[_0x05a9('0x40')],{'$or':_[_0x05a9('0x30')](_0x4b622d['attributes'],function(_0xcf930f){var _0x2daee9={};_0x2daee9[_0xcf930f]={'$like':'%'+_0x18ba63[_0x05a9('0x36')]['filter']+'%'};return _0x2daee9;})});}_0x4b622d=_[_0x05a9('0x4a')]({},_0x4b622d,_0x18ba63[_0x05a9('0x4b')]);return _0x16179d['getApplications'](_0x4b622d);}})['then'](function(_0x3f62e0){if(_0x3f62e0){_0x3ed823=_0x3f62e0[_0x05a9('0x3c')];if(!_0x18ba63[_0x05a9('0x36')][_0x05a9('0x3d')](_0x05a9('0x5f'))){_0x4b622d['limit']=qs['limit'](_0x18ba63[_0x05a9('0x36')]['limit']);_0x4b622d[_0x05a9('0x25')]=qs[_0x05a9('0x25')](_0x18ba63[_0x05a9('0x36')][_0x05a9('0x25')]);}return _0x16179d['getApplications'](_0x4b622d);}})[_0x05a9('0x14')](function(_0x21d287){if(_0x21d287){return _0x21d287?{'count':_0x3ed823,'rows':_0x21d287}:null;}})[_0x05a9('0x14')](respondWithResult(_0x1f584e,null))[_0x05a9('0x1e')](handleError(_0x1f584e,null));};exports[_0x05a9('0x116')]=function(_0x3be457,_0x425c8c){return db[_0x05a9('0x117')][_0x05a9('0x4c')]({'where':{'id':_0x3be457['params']['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x425c8c,null))[_0x05a9('0x14')](function(_0x5dd788){if(_0x5dd788){return _0x5dd788[_0x05a9('0x116')](_0x3be457[_0x05a9('0x4e')][_0x05a9('0x5c')],_[_0x05a9('0xe3')](_0x3be457['body'],[_0x05a9('0x5c'),'id'])||{});}})[_0x05a9('0x14')](respondWithResult(_0x425c8c,null))[_0x05a9('0x1e')](handleError(_0x425c8c,null));};exports[_0x05a9('0xf9')]=function(_0x451adc,_0x473740){var _0x10da68={};var _0x31587f={};var _0x455879;var _0x5cad96;return db[_0x05a9('0x31')][_0x05a9('0x57')]({'where':{'id':_0x451adc[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x473740,null))['then'](function(_0x285330){if(_0x285330){_0x455879=_0x285330;_0x31587f[_0x05a9('0x35')]=_[_0x05a9('0x37')](db[_0x05a9('0x118')][_0x05a9('0xe5')]);_0x31587f[_0x05a9('0x36')]=_['keys'](_0x451adc[_0x05a9('0x36')]);_0x31587f['filters']=_[_0x05a9('0x39')](_0x31587f[_0x05a9('0x35')],_0x31587f['query']);_0x10da68[_0x05a9('0x3a')]=_[_0x05a9('0x39')](_0x31587f[_0x05a9('0x35')],qs['fields'](_0x451adc[_0x05a9('0x36')][_0x05a9('0x3b')]));_0x10da68['attributes']=_0x10da68[_0x05a9('0x3a')][_0x05a9('0x3c')]?_0x10da68['attributes']:_0x31587f['model'];_0x10da68['order']=qs[_0x05a9('0x3f')](_0x451adc['query'][_0x05a9('0x3f')]);_0x10da68[_0x05a9('0x40')]=qs['filters'](_[_0x05a9('0x41')](_0x451adc[_0x05a9('0x36')],_0x31587f[_0x05a9('0x38')]));if(_0x451adc[_0x05a9('0x36')][_0x05a9('0x59')]){_0x10da68[_0x05a9('0x40')]=_['merge'](_0x10da68[_0x05a9('0x40')],{'$or':_[_0x05a9('0x30')](_0x10da68[_0x05a9('0x3a')],function(_0x15afe0){var _0x34040c={};_0x34040c[_0x15afe0]={'$like':'%'+_0x451adc[_0x05a9('0x36')]['filter']+'%'};return _0x34040c;})});}_0x10da68=_[_0x05a9('0x4a')]({},_0x10da68,_0x451adc['options']);return _0x455879[_0x05a9('0xf9')](_0x10da68);}})[_0x05a9('0x14')](function(_0xdf2337){if(_0xdf2337){_0x5cad96=_0xdf2337[_0x05a9('0x3c')];if(!_0x451adc['query']['hasOwnProperty'](_0x05a9('0x5f'))){_0x10da68[_0x05a9('0x23')]=qs[_0x05a9('0x23')](_0x451adc['query'][_0x05a9('0x23')]);_0x10da68[_0x05a9('0x25')]=qs[_0x05a9('0x25')](_0x451adc[_0x05a9('0x36')]['offset']);}return _0x455879[_0x05a9('0xf9')](_0x10da68);}})[_0x05a9('0x14')](function(_0x10a15e){if(_0x10a15e){return _0x10a15e?{'count':_0x5cad96,'rows':_0x10a15e}:null;}})[_0x05a9('0x14')](respondWithResult(_0x473740,null))[_0x05a9('0x1e')](handleError(_0x473740,null));};exports[_0x05a9('0x119')]=function(_0x2a1253,_0xb14106){var _0x3756b4=_0x2a1253['query']['online']==='false'?'offlineForm':_0x05a9('0x11a');return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'attributes':['id',_0x3756b4],'where':{'id':_0x2a1253[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0xb14106,null))[_0x05a9('0x14')](function(_0x3fa259){if(_0x3fa259){var _0x5ea0b7=_0x3fa259[_0x3756b4];var _0x406581=_0x5ea0b7&&_0x5ea0b7[_0x05a9('0x11b')]?_0x5ea0b7[_0x05a9('0x11b')]:[];_0xb14106[_0x05a9('0x2e')]({'fromKey':_[_0x05a9('0x6e')](_0x5ea0b7[_0x05a9('0x11c')])?undefined:_0x5ea0b7[_0x05a9('0x11c')],'count':_0x406581[_0x05a9('0x3c')],'rows':_0x406581});}})[_0x05a9('0x1e')](handleError(_0xb14106,null));};exports[_0x05a9('0x11d')]=function(_0x25badc,_0x57b505){var _0x41df91={'raw':![],'where':{}};var _0x432a1e={};var _0x583c0a={'count':0x0,'rows':[]};return db[_0x05a9('0x31')][_0x05a9('0x57')]({'where':{'id':_0x25badc[_0x05a9('0x46')]['id']}})['then'](handleEntityNotFound(_0x57b505,null))[_0x05a9('0x14')](function(_0x2957b2){if(_0x2957b2){_0x432a1e[_0x05a9('0x35')]=_[_0x05a9('0x37')](db[_0x05a9('0x11e')]['rawAttributes']);_0x432a1e['query']=_[_0x05a9('0x37')](_0x25badc[_0x05a9('0x36')]);_0x432a1e['filters']=_['intersection'](_0x432a1e[_0x05a9('0x35')],_0x432a1e[_0x05a9('0x36')]);_0x41df91[_0x05a9('0x3a')]=_[_0x05a9('0x39')](_0x432a1e['model'],qs[_0x05a9('0x3b')](_0x25badc['query'][_0x05a9('0x3b')]));_0x41df91[_0x05a9('0x3a')]=_0x41df91[_0x05a9('0x3a')][_0x05a9('0x3c')]?_0x41df91[_0x05a9('0x3a')]:_0x432a1e[_0x05a9('0x35')];if(!_0x25badc[_0x05a9('0x36')]['hasOwnProperty'](_0x05a9('0x5f'))){_0x41df91[_0x05a9('0x23')]=qs['limit'](_0x25badc[_0x05a9('0x36')][_0x05a9('0x23')]);_0x41df91[_0x05a9('0x25')]=qs[_0x05a9('0x25')](_0x25badc[_0x05a9('0x36')][_0x05a9('0x25')]);}_0x41df91[_0x05a9('0x3e')]=qs['sort'](_0x25badc['query']['sort']);_0x41df91[_0x05a9('0x40')]=qs[_0x05a9('0x38')](_[_0x05a9('0x41')](_0x25badc[_0x05a9('0x36')],_0x432a1e[_0x05a9('0x38')]));_0x41df91['where'][_0x05a9('0x55')]=_0x2957b2['id'];if(_0x25badc[_0x05a9('0x36')][_0x05a9('0x59')]){_0x41df91[_0x05a9('0x40')]=_['merge'](_0x41df91[_0x05a9('0x40')],{'$or':_[_0x05a9('0x30')](_0x41df91['attributes'],function(_0x376d34){var _0x1a51a3={};_0x1a51a3[_0x376d34]={'$like':'%'+_0x25badc[_0x05a9('0x36')][_0x05a9('0x59')]+'%'};return _0x1a51a3;})});}_0x41df91=_[_0x05a9('0x4a')]({},_0x41df91,_0x25badc[_0x05a9('0x4b')]);return db[_0x05a9('0x11e')][_0x05a9('0x24')]({'where':_0x41df91['where']})[_0x05a9('0x14')](function(_0xb4674d){_0x583c0a[_0x05a9('0x24')]=_0xb4674d;if(_0x25badc[_0x05a9('0x36')]['includeAll']){_0x41df91[_0x05a9('0x49')]=[{'all':!![]}];}else{_0x41df91['include']=[{'model':db[_0x05a9('0x7e')],'as':_0x05a9('0x11f'),'required':![]},{'model':db['Attachment'],'as':_0x05a9('0x120'),'required':![]}];}return db[_0x05a9('0x11e')][_0x05a9('0x5a')](_0x41df91);})['then'](function(_0x4c2aa3){_0x583c0a['rows']=_0x4c2aa3;return _0x583c0a;});}})['then'](respondWithFilteredResult(_0x57b505,_0x41df91))[_0x05a9('0x1e')](handleError(_0x57b505,null));};exports['addAgents']=function(_0x361477,_0x34bb14){return db[_0x05a9('0x31')][_0x05a9('0x4c')]({'where':{'id':_0x361477[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x34bb14,null))[_0x05a9('0x14')](function(_0x2d5247){if(_0x2d5247){return _0x2d5247[_0x05a9('0x121')](_0x361477[_0x05a9('0x4e')][_0x05a9('0x5c')],_[_0x05a9('0xe3')](_0x361477[_0x05a9('0x4e')],['ids','id'])||{})['spread'](function(_0x178045){for(var _0x3474d4=0x0;_0x3474d4<_0x361477['body']['ids'][_0x05a9('0x3c')];_0x3474d4+=0x1){socket[_0x05a9('0x122')](_0x05a9('0x123'),{'UserId':Number(_0x361477[_0x05a9('0x4e')][_0x05a9('0x5c')][_0x3474d4]),'ChatWebsiteId':Number(_0x361477[_0x05a9('0x46')]['id'])});}return _0x178045;});}})[_0x05a9('0x14')](respondWithResult(_0x34bb14,null))['catch'](handleError(_0x34bb14,null));};exports[_0x05a9('0x124')]=function(_0x45aa8c,_0x2d57f8){return db[_0x05a9('0x31')]['find']({'where':{'id':_0x45aa8c[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x2d57f8,null))[_0x05a9('0x14')](function(_0x15b0bd){if(_0x15b0bd){return _0x15b0bd[_0x05a9('0x124')](_0x45aa8c[_0x05a9('0x36')]['ids'])[_0x05a9('0x14')](function(){if(_[_0x05a9('0x125')](_0x45aa8c[_0x05a9('0x36')][_0x05a9('0x5c')])){for(var _0x58f143=0x0;_0x58f143<_0x45aa8c[_0x05a9('0x36')]['ids'][_0x05a9('0x3c')];_0x58f143+=0x1){socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x45aa8c[_0x05a9('0x36')][_0x05a9('0x5c')][_0x58f143]),'ChatWebsiteId':Number(_0x45aa8c[_0x05a9('0x46')]['id'])});}}else{socket[_0x05a9('0x122')](_0x05a9('0x126'),{'UserId':Number(_0x45aa8c['query'][_0x05a9('0x5c')]),'ChatWebsiteId':Number(_0x45aa8c[_0x05a9('0x46')]['id'])});}});}})[_0x05a9('0x14')](respondWithStatusCode(_0x2d57f8,null))[_0x05a9('0x1e')](handleError(_0x2d57f8,null));};exports[_0x05a9('0x127')]=function(_0x49a217,_0x397be8){var _0x29d8e1={};var _0x347bad={};var _0x2b1907;var _0xadc9f3;return db['ChatWebsite'][_0x05a9('0x57')]({'where':{'id':_0x49a217[_0x05a9('0x46')]['id']}})[_0x05a9('0x14')](handleEntityNotFound(_0x397be8,null))[_0x05a9('0x14')](function(_0x120fd8){if(_0x120fd8){_0x2b1907=_0x120fd8;_0x347bad[_0x05a9('0x35')]=_[_0x05a9('0x37')](db['User'][_0x05a9('0xe5')]);_0x347bad[_0x05a9('0x36')]=_[_0x05a9('0x37')](_0x49a217['query']);_0x347bad[_0x05a9('0x38')]=_['intersection'](_0x347bad['model'],_0x347bad[_0x05a9('0x36')]);_0x29d8e1[_0x05a9('0x3a')]=_[_0x05a9('0x39')](_0x347bad['model'],qs[_0x05a9('0x3b')](_0x49a217[_0x05a9('0x36')]['fields']));_0x29d8e1['attributes']=_0x29d8e1['attributes']['length']?_0x29d8e1['attributes']:_0x347bad[_0x05a9('0x35')];_0x29d8e1[_0x05a9('0x3e')]=qs[_0x05a9('0x3f')](_0x49a217['query']['sort']);_0x29d8e1[_0x05a9('0x40')]=qs[_0x05a9('0x38')](_[_0x05a9('0x41')](_0x49a217[_0x05a9('0x36')],_0x347bad[_0x05a9('0x38')]));if(_0x49a217[_0x05a9('0x36')][_0x05a9('0x59')]){_0x29d8e1[_0x05a9('0x40')]=_['merge'](_0x29d8e1['where'],{'$or':_[_0x05a9('0x30')](_0x29d8e1[_0x05a9('0x3a')],function(_0x19d64a){var _0x453f9a={};_0x453f9a[_0x19d64a]={'$like':'%'+_0x49a217[_0x05a9('0x36')][_0x05a9('0x59')]+'%'};return _0x453f9a;})});}_0x29d8e1=_[_0x05a9('0x4a')]({},_0x29d8e1,_0x49a217[_0x05a9('0x4b')]);return _0x2b1907[_0x05a9('0x127')](_0x29d8e1);}})[_0x05a9('0x14')](function(_0x1df3ef){if(_0x1df3ef){_0xadc9f3=_0x1df3ef[_0x05a9('0x3c')];if(!_0x49a217[_0x05a9('0x36')][_0x05a9('0x3d')](_0x05a9('0x5f'))){_0x29d8e1[_0x05a9('0x23')]=qs[_0x05a9('0x23')](_0x49a217[_0x05a9('0x36')][_0x05a9('0x23')]);_0x29d8e1[_0x05a9('0x25')]=qs['offset'](_0x49a217[_0x05a9('0x36')][_0x05a9('0x25')]);}return _0x2b1907[_0x05a9('0x127')](_0x29d8e1);}})['then'](function(_0x428bee){if(_0x428bee){return _0x428bee?{'count':_0xadc9f3,'rows':_0x428bee}:null;}})[_0x05a9('0x14')](respondWithResult(_0x397be8,null))[_0x05a9('0x1e')](handleError(_0x397be8,null));};
\ No newline at end of file
+var _0xfa7f=['redis','defaults','localhost','./chatWebsite.socket','html-to-text','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','update','destroy','get','ChatWebsites','stack','name','send','index','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','Pause','keys','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','removeDispositions','ids','CannedAnswer','getAnswers','findOne','hasOwnProperty','findAll','removeAnswers','addLogo','sitepic','file','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','root','../../config/license/util','getLicense','custom','existsSync','join','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','isNil','agentAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','notify','user-agent-parser','setUA','headers','getResult','chat','CmContact','Sequelize','createdAt','updatedAt','CompanyId','ListId','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','CmList','List','Contacts','DESC','Applications','account','list','applications','orderBy','priority','asc','contact','cf-connecting-ip','x-forwarded-for','first','firstName','lastName','x-real-port','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','stringify','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','push','close','ChatMessage','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','files','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','ChatOfflineMessage','fromString','originalname','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','MailAccountId','mimetype','subjectOffline','toPairsIn','mapValues','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','getInteractions','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','interval','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','inspect','No\x20timezone','Interval','Intervals','getProactiveActions','increment','chatLicenseExceeded','all','some','readFileSync','server/files/chat/iframe.ejs','remote','x-real-ip','connection','replace','alignment','verticalAlignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','Transaction','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','findAndCountAll','finally','getApplications','addProactiveActions','omit','ChatProactiveAction','getFields','online','false','onlineForm','items','fromKey','getOfflineMessages','Contact','addAgents','spread','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','User','bluebird','mustache','util','path','ejs','fs-extra','lodash','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment'];(function(_0x2e1e9f,_0x294546){var _0x1d79f5=function(_0x5fdcf5){while(--_0x5fdcf5){_0x2e1e9f['push'](_0x2e1e9f['shift']());}};_0x1d79f5(++_0x294546);}(_0xfa7f,0x11d));var _0xffa7=function(_0x143f75,_0x290630){_0x143f75=_0x143f75-0x0;var _0x56c94f=_0xfa7f[_0x143f75];return _0x56c94f;};'use strict';var BPromise=require(_0xffa7('0x0'));var Mustache=require(_0xffa7('0x1'));var util=require(_0xffa7('0x2'));var path=require(_0xffa7('0x3'));var ejs=require(_0xffa7('0x4'));var fs=require('fs');var fs_extra=require(_0xffa7('0x5'));var _=require(_0xffa7('0x6'));var querystring=require(_0xffa7('0x7'));var Redis=require(_0xffa7('0x8'));var qs=require(_0xffa7('0x9'));var logger=require(_0xffa7('0xa'))(_0xffa7('0xb'));var config=require(_0xffa7('0xc'));var db=require('../../mysqldb')['db'];config[_0xffa7('0xd')]=_[_0xffa7('0xe')](config['redis'],{'host':_0xffa7('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xffa7('0xd')]));require(_0xffa7('0x10'))['register'](socket);var htmlToText=require(_0xffa7('0x11'));var jayson=require(_0xffa7('0x12'));var client=jayson[_0xffa7('0x13')][_0xffa7('0x14')]({'port':0x232c});var client9002=jayson[_0xffa7('0x13')][_0xffa7('0x14')]({'port':0x232a});var client9003=jayson[_0xffa7('0x13')][_0xffa7('0x14')]({'port':0x232b});var client9001=jayson[_0xffa7('0x13')][_0xffa7('0x14')]({'port':0x2329});function respondWithRpcPromise(_0x299911,_0x5c6457,_0x1fa5d2,_0x32ed18){return new BPromise(function(_0x2912fa,_0x426ac3){var _0x1884cd=_0x32ed18||client;return _0x1884cd[_0xffa7('0x15')](_0x299911,_0x1fa5d2)[_0xffa7('0x16')](function(_0x248cb){logger[_0xffa7('0x17')](_0xffa7('0x18'),_0x5c6457,_0xffa7('0x19'));logger[_0xffa7('0x1a')](_0xffa7('0x1b'),_0x5c6457,'request\x20sent',JSON['stringify'](_0x248cb));if(_0x248cb[_0xffa7('0x1c')]){if(_0x248cb[_0xffa7('0x1c')][_0xffa7('0x1d')]===0x1f4){logger[_0xffa7('0x1c')](_0xffa7('0x18'),_0x5c6457,_0x248cb[_0xffa7('0x1c')]['message']);return _0x426ac3(_0x248cb['error'][_0xffa7('0x1e')]);}logger[_0xffa7('0x1c')]('ChatWebsite,\x20%s,\x20%s',_0x5c6457,_0x248cb[_0xffa7('0x1c')][_0xffa7('0x1e')]);return _0x2912fa(_0x248cb[_0xffa7('0x1c')][_0xffa7('0x1e')]);}else{logger[_0xffa7('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x5c6457,_0xffa7('0x19'));_0x2912fa(_0x248cb['result'][_0xffa7('0x1e')]);}})[_0xffa7('0x1f')](function(_0x5b4b33){logger[_0xffa7('0x1c')](_0xffa7('0x18'),_0x5c6457,_0x5b4b33);_0x426ac3(_0x5b4b33);});});}function respondWithStatusCode(_0xf9051,_0x205674){_0x205674=_0x205674||0xcc;return function(_0x4520fe){if(_0x4520fe){return _0xf9051[_0xffa7('0x20')](_0x205674);}return _0xf9051['status'](_0x205674)[_0xffa7('0x21')]();};}function respondWithResult(_0x17006e,_0x21171f){_0x21171f=_0x21171f||0xc8;return function(_0x3b3581){if(_0x3b3581){return _0x17006e[_0xffa7('0x22')](_0x21171f)['json'](_0x3b3581);}};}function respondWithFilteredResult(_0x5cd2ee,_0x4996f1){return function(_0x1fce85){if(_0x1fce85){var _0xe2552b=typeof _0x4996f1['offset']===_0xffa7('0x23')&&typeof _0x4996f1[_0xffa7('0x24')]===_0xffa7('0x23');var _0x5225b4=_0x1fce85[_0xffa7('0x25')];var _0x5042b4=_0xe2552b?0x0:_0x4996f1[_0xffa7('0x26')];var _0x52b757=_0xe2552b?_0x1fce85[_0xffa7('0x25')]:_0x4996f1['offset']+_0x4996f1[_0xffa7('0x24')];var _0x30f24d;if(_0x52b757>=_0x5225b4){_0x52b757=_0x5225b4;_0x30f24d=0xc8;}else{_0x30f24d=0xce;}_0x5cd2ee[_0xffa7('0x22')](_0x30f24d);return _0x5cd2ee[_0xffa7('0x27')](_0xffa7('0x28'),_0x5042b4+'-'+_0x52b757+'/'+_0x5225b4)[_0xffa7('0x29')](_0x1fce85);}return null;};}function saveUpdates(_0x374e82){return function(_0x28e4f0){if(_0x28e4f0){return _0x28e4f0[_0xffa7('0x2a')](_0x374e82)['then'](function(_0x2ec522){return _0x2ec522;});}return null;};}function removeEntity(_0x16f27e){return function(_0x167648){if(_0x167648){return _0x167648[_0xffa7('0x2b')]()[_0xffa7('0x16')](function(){var _0x3fa0f6=_0x167648[_0xffa7('0x2c')]({'plain':!![]});var _0x36f5fc=_0xffa7('0x2d');return db['UserProfileResource'][_0xffa7('0x2b')]({'where':{'type':_0x36f5fc,'resourceId':_0x3fa0f6['id']}})['then'](function(){return _0x167648;});})['then'](function(){_0x16f27e[_0xffa7('0x22')](0xcc)[_0xffa7('0x21')]();});}};}function handleEntityNotFound(_0x3b808a){return function(_0x357790){if(!_0x357790){_0x3b808a[_0xffa7('0x20')](0x194);}return _0x357790;};}function handleError(_0x586bcd,_0x43e413){_0x43e413=_0x43e413||0x1f4;return function(_0x2430e0){logger[_0xffa7('0x1c')](_0x2430e0[_0xffa7('0x2e')]);if(_0x2430e0[_0xffa7('0x2f')]){delete _0x2430e0[_0xffa7('0x2f')];}_0x586bcd[_0xffa7('0x22')](_0x43e413)[_0xffa7('0x30')](_0x2430e0);};}exports[_0xffa7('0x31')]=function(_0x5c2bd6,_0x582286){var _0x416dc9={'include':[{'model':db['Pause'],'as':_0xffa7('0x32')}]},_0x5b7dce={},_0x5aa95b={'count':0x0,'rows':[]};var _0x58e32a=_[_0xffa7('0x33')](db[_0xffa7('0x34')][_0xffa7('0x35')],function(_0x1203f1){return{'name':_0x1203f1[_0xffa7('0x36')],'type':_0x1203f1[_0xffa7('0x37')][_0xffa7('0x38')]};});_0x5b7dce[_0xffa7('0x39')]=_[_0xffa7('0x33')](_0x58e32a,_0xffa7('0x2f'));_0x5b7dce['query']=_['keys'](_0x5c2bd6[_0xffa7('0x3a')]);_0x5b7dce[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x5b7dce[_0xffa7('0x39')],_0x5b7dce[_0xffa7('0x3a')]);_0x416dc9[_0xffa7('0x3d')]=_[_0xffa7('0x3c')](_0x5b7dce[_0xffa7('0x39')],qs[_0xffa7('0x3e')](_0x5c2bd6['query'][_0xffa7('0x3e')]));_0x416dc9['attributes']=_0x416dc9[_0xffa7('0x3d')]['length']?_0x416dc9[_0xffa7('0x3d')]:_0x5b7dce[_0xffa7('0x39')];if(!_0x5c2bd6[_0xffa7('0x3a')]['hasOwnProperty'](_0xffa7('0x3f'))){_0x416dc9['limit']=qs[_0xffa7('0x24')](_0x5c2bd6[_0xffa7('0x3a')][_0xffa7('0x24')]);_0x416dc9['offset']=qs[_0xffa7('0x26')](_0x5c2bd6[_0xffa7('0x3a')][_0xffa7('0x26')]);}_0x416dc9[_0xffa7('0x40')]=qs[_0xffa7('0x41')](_0x5c2bd6['query'][_0xffa7('0x41')]);_0x416dc9[_0xffa7('0x42')]=qs[_0xffa7('0x3b')](_[_0xffa7('0x43')](_0x5c2bd6[_0xffa7('0x3a')],_0x5b7dce[_0xffa7('0x3b')]),_0x58e32a);if(_0x5c2bd6[_0xffa7('0x3a')]['filter']){_0x416dc9[_0xffa7('0x42')]=_[_0xffa7('0x44')](_0x416dc9[_0xffa7('0x42')],{'$or':_['map'](_0x58e32a,function(_0x357fe6){if(_0x357fe6[_0xffa7('0x37')]!==_0xffa7('0x45')){var _0x1d1927={};_0x1d1927[_0x357fe6[_0xffa7('0x2f')]]={'$like':'%'+_0x5c2bd6[_0xffa7('0x3a')][_0xffa7('0x46')]+'%'};return _0x1d1927;}})});}_0x416dc9=_[_0xffa7('0x44')]({},_0x416dc9,_0x5c2bd6[_0xffa7('0x47')]);var _0x408a19={'where':_0x416dc9[_0xffa7('0x42')]};return db['ChatWebsite'][_0xffa7('0x25')](_0x408a19)[_0xffa7('0x16')](function(_0x18150f){_0x5aa95b[_0xffa7('0x25')]=_0x18150f;if(_0x5c2bd6['query'][_0xffa7('0x48')]){_0x416dc9[_0xffa7('0x49')]=[{'all':!![]}];}return db['ChatWebsite']['findAll'](_0x416dc9);})[_0xffa7('0x16')](function(_0x57e060){_0x5aa95b[_0xffa7('0x4a')]=_0x57e060;return _0x5aa95b;})[_0xffa7('0x16')](respondWithFilteredResult(_0x582286,_0x416dc9))[_0xffa7('0x1f')](handleError(_0x582286,null));};exports[_0xffa7('0x4b')]=function(_0x20baaf,_0x33743e){var _0x4a1a63={'raw':![],'where':{'id':_0x20baaf[_0xffa7('0x4c')]['id']},'include':[{'model':db[_0xffa7('0x4d')],'as':_0xffa7('0x32')}]},_0x5a764d={};_0x5a764d['model']=_[_0xffa7('0x4e')](db[_0xffa7('0x34')][_0xffa7('0x35')]);_0x5a764d['query']=_[_0xffa7('0x4e')](_0x20baaf[_0xffa7('0x3a')]);_0x5a764d[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x5a764d[_0xffa7('0x39')],_0x5a764d['query']);_0x4a1a63['attributes']=_[_0xffa7('0x3c')](_0x5a764d[_0xffa7('0x39')],qs[_0xffa7('0x3e')](_0x20baaf[_0xffa7('0x3a')][_0xffa7('0x3e')]));_0x4a1a63[_0xffa7('0x3d')]=_0x4a1a63[_0xffa7('0x3d')][_0xffa7('0x4f')]?_0x4a1a63['attributes']:_0x5a764d[_0xffa7('0x39')];if(_0x20baaf[_0xffa7('0x3a')][_0xffa7('0x48')]){_0x4a1a63['include']=[{'all':!![]}];}_0x4a1a63=_[_0xffa7('0x44')]({},_0x4a1a63,_0x20baaf[_0xffa7('0x47')]);return db[_0xffa7('0x34')]['find'](_0x4a1a63)['then'](handleEntityNotFound(_0x33743e,null))['then'](respondWithResult(_0x33743e,null))['catch'](handleError(_0x33743e,null));};exports[_0xffa7('0x50')]=function(_0x5c20d6,_0x271b8e){return db[_0xffa7('0x34')][_0xffa7('0x50')](_0x5c20d6[_0xffa7('0x51')],{})[_0xffa7('0x16')](function(_0x597ecd){var _0x535fac=_0x5c20d6[_0xffa7('0x52')][_0xffa7('0x2c')]({'plain':!![]});if(!_0x535fac)throw new Error(_0xffa7('0x53'));if(_0x535fac[_0xffa7('0x54')]===_0xffa7('0x52')){var _0x51cbd8=_0x597ecd[_0xffa7('0x2c')]({'plain':!![]});var _0x1d19d7='ChatWebsites';return db[_0xffa7('0x55')][_0xffa7('0x56')]({'where':{'name':_0x1d19d7,'userProfileId':_0x535fac[_0xffa7('0x57')]},'raw':!![]})[_0xffa7('0x16')](function(_0x174d89){if(_0x174d89&&_0x174d89[_0xffa7('0x58')]===0x0){return db['UserProfileResource'][_0xffa7('0x50')]({'name':_0x51cbd8[_0xffa7('0x2f')],'resourceId':_0x51cbd8['id'],'type':_0x174d89[_0xffa7('0x2f')],'sectionId':_0x174d89['id']},{})['then'](function(){return _0x597ecd;});}else{return _0x597ecd;}})['catch'](function(_0x2c12da){logger[_0xffa7('0x1c')](_0xffa7('0x59'),_0x2c12da);throw _0x2c12da;});}return _0x597ecd;})[_0xffa7('0x16')](respondWithResult(_0x271b8e,0xc9))['catch'](handleError(_0x271b8e,null));};exports[_0xffa7('0x2a')]=function(_0x5c18e5,_0x515c84){if(_0x5c18e5[_0xffa7('0x51')]['id']){delete _0x5c18e5['body']['id'];}return db['ChatWebsite'][_0xffa7('0x56')]({'where':{'id':_0x5c18e5[_0xffa7('0x4c')]['id']},'include':[{'model':db[_0xffa7('0x4d')],'as':_0xffa7('0x32')}]})['then'](handleEntityNotFound(_0x515c84,null))[_0xffa7('0x16')](saveUpdates(_0x5c18e5[_0xffa7('0x51')],null))[_0xffa7('0x16')](respondWithResult(_0x515c84,null))[_0xffa7('0x1f')](handleError(_0x515c84,null));};exports[_0xffa7('0x2b')]=function(_0x20f98f,_0x4ab2f7){return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x20f98f[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4ab2f7,null))[_0xffa7('0x16')](removeEntity(_0x4ab2f7,null))['catch'](handleError(_0x4ab2f7,null));};exports[_0xffa7('0x5a')]=function(_0x2f27c4,_0x2df5be){return db[_0xffa7('0x34')][_0xffa7('0x5a')]()[_0xffa7('0x16')](respondWithResult(_0x2df5be,null))['catch'](handleError(_0x2df5be,null));};exports[_0xffa7('0x5b')]=function(_0x3da240,_0xbed77b){if(_0x3da240[_0xffa7('0x51')]['id']){delete _0x3da240[_0xffa7('0x51')]['id'];}return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x3da240[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0xbed77b,null))[_0xffa7('0x16')](function(_0x3b55d7){if(_0x3b55d7){_0x3da240[_0xffa7('0x51')][_0xffa7('0x5c')]=_0x3b55d7['id'];return db[_0xffa7('0x5d')][_0xffa7('0x50')](_0x3da240[_0xffa7('0x51')]);}})['then'](respondWithResult(_0xbed77b,null))[_0xffa7('0x1f')](handleError(_0xbed77b,null));};exports['getDispositions']=function(_0x1ae3d4,_0x101121){var _0x423aad={'raw':![],'where':{}};var _0x3a930f={};var _0x284fd7={'count':0x0,'rows':[]};return db[_0xffa7('0x34')]['findOne']({'where':{'id':_0x1ae3d4['params']['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x101121,null))[_0xffa7('0x16')](function(_0x1d474f){if(_0x1d474f){_0x3a930f[_0xffa7('0x39')]=_[_0xffa7('0x4e')](db[_0xffa7('0x5d')]['rawAttributes']);_0x3a930f['query']=_[_0xffa7('0x4e')](_0x1ae3d4[_0xffa7('0x3a')]);_0x3a930f[_0xffa7('0x3b')]=_['intersection'](_0x3a930f[_0xffa7('0x39')],_0x3a930f[_0xffa7('0x3a')]);_0x423aad[_0xffa7('0x3d')]=_['intersection'](_0x3a930f[_0xffa7('0x39')],qs[_0xffa7('0x3e')](_0x1ae3d4['query'][_0xffa7('0x3e')]));_0x423aad[_0xffa7('0x3d')]=_0x423aad['attributes'][_0xffa7('0x4f')]?_0x423aad[_0xffa7('0x3d')]:_0x3a930f['model'];if(!_0x1ae3d4['query']['hasOwnProperty']('nolimit')){_0x423aad['limit']=qs[_0xffa7('0x24')](_0x1ae3d4[_0xffa7('0x3a')][_0xffa7('0x24')]);_0x423aad[_0xffa7('0x26')]=qs[_0xffa7('0x26')](_0x1ae3d4[_0xffa7('0x3a')][_0xffa7('0x26')]);}_0x423aad['order']=qs['sort'](_0x1ae3d4[_0xffa7('0x3a')][_0xffa7('0x41')]);_0x423aad[_0xffa7('0x42')]=qs[_0xffa7('0x3b')](_[_0xffa7('0x43')](_0x1ae3d4[_0xffa7('0x3a')],_0x3a930f['filters']));_0x423aad['where'][_0xffa7('0x5c')]=_0x1d474f['id'];if(_0x1ae3d4[_0xffa7('0x3a')]['filter']){_0x423aad[_0xffa7('0x42')]=_['merge'](_0x423aad[_0xffa7('0x42')],{'$or':_['map'](_0x423aad['attributes'],function(_0x406f34){var _0x187134={};_0x187134[_0x406f34]={'$like':'%'+_0x1ae3d4[_0xffa7('0x3a')][_0xffa7('0x46')]+'%'};return _0x187134;})});}_0x423aad=_[_0xffa7('0x44')]({},_0x423aad,_0x1ae3d4[_0xffa7('0x47')]);return db[_0xffa7('0x5d')]['count']({'where':_0x423aad[_0xffa7('0x42')]})[_0xffa7('0x16')](function(_0x9fcbfc){_0x284fd7['count']=_0x9fcbfc;if(_0x1ae3d4[_0xffa7('0x3a')][_0xffa7('0x48')]){_0x423aad[_0xffa7('0x49')]=[{'all':!![]}];}return db[_0xffa7('0x5d')]['findAll'](_0x423aad);})[_0xffa7('0x16')](function(_0x2734e1){_0x284fd7['rows']=_0x2734e1;return _0x284fd7;});}})[_0xffa7('0x16')](respondWithFilteredResult(_0x101121,_0x423aad))[_0xffa7('0x1f')](handleError(_0x101121,null));};exports[_0xffa7('0x5e')]=function(_0x2d90d5,_0x925c44){return db[_0xffa7('0x34')]['find']({'where':{'id':_0x2d90d5[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x925c44,null))[_0xffa7('0x16')](function(_0x56dacc){if(_0x56dacc){return _0x56dacc[_0xffa7('0x5e')](_0x2d90d5[_0xffa7('0x3a')][_0xffa7('0x5f')]);}})[_0xffa7('0x16')](respondWithStatusCode(_0x925c44,null))[_0xffa7('0x1f')](handleError(_0x925c44,null));};exports['addAnswer']=function(_0x3f340f,_0x16febd){if(_0x3f340f[_0xffa7('0x51')]['id']){delete _0x3f340f['body']['id'];}return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x3f340f[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x16febd,null))[_0xffa7('0x16')](function(_0x1095c1){if(_0x1095c1){_0x3f340f[_0xffa7('0x51')][_0xffa7('0x5c')]=_0x1095c1['id'];return db[_0xffa7('0x60')][_0xffa7('0x50')](_0x3f340f[_0xffa7('0x51')]);}})[_0xffa7('0x16')](respondWithResult(_0x16febd,null))[_0xffa7('0x1f')](handleError(_0x16febd,null));};exports[_0xffa7('0x61')]=function(_0x59f872,_0x231c4d){var _0x71406e={'raw':![],'where':{}};var _0x54869f={};var _0x58027a={'count':0x0,'rows':[]};return db[_0xffa7('0x34')][_0xffa7('0x62')]({'where':{'id':_0x59f872['params']['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x231c4d,null))[_0xffa7('0x16')](function(_0x44f8d4){if(_0x44f8d4){_0x54869f[_0xffa7('0x39')]=_[_0xffa7('0x4e')](db['CannedAnswer'][_0xffa7('0x35')]);_0x54869f[_0xffa7('0x3a')]=_[_0xffa7('0x4e')](_0x59f872[_0xffa7('0x3a')]);_0x54869f[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x54869f[_0xffa7('0x39')],_0x54869f[_0xffa7('0x3a')]);_0x71406e[_0xffa7('0x3d')]=_[_0xffa7('0x3c')](_0x54869f[_0xffa7('0x39')],qs[_0xffa7('0x3e')](_0x59f872[_0xffa7('0x3a')][_0xffa7('0x3e')]));_0x71406e[_0xffa7('0x3d')]=_0x71406e[_0xffa7('0x3d')]['length']?_0x71406e[_0xffa7('0x3d')]:_0x54869f[_0xffa7('0x39')];if(!_0x59f872[_0xffa7('0x3a')][_0xffa7('0x63')](_0xffa7('0x3f'))){_0x71406e[_0xffa7('0x24')]=qs[_0xffa7('0x24')](_0x59f872['query'][_0xffa7('0x24')]);_0x71406e[_0xffa7('0x26')]=qs[_0xffa7('0x26')](_0x59f872['query'][_0xffa7('0x26')]);}_0x71406e[_0xffa7('0x40')]=qs[_0xffa7('0x41')](_0x59f872['query']['sort']);_0x71406e[_0xffa7('0x42')]=qs[_0xffa7('0x3b')](_[_0xffa7('0x43')](_0x59f872[_0xffa7('0x3a')],_0x54869f[_0xffa7('0x3b')]));_0x71406e['where'][_0xffa7('0x5c')]=_0x44f8d4['id'];if(_0x59f872[_0xffa7('0x3a')][_0xffa7('0x46')]){_0x71406e[_0xffa7('0x42')]=_['merge'](_0x71406e[_0xffa7('0x42')],{'$or':_[_0xffa7('0x33')](_0x71406e[_0xffa7('0x3d')],function(_0x193eba){var _0x38b94e={};_0x38b94e[_0x193eba]={'$like':'%'+_0x59f872[_0xffa7('0x3a')][_0xffa7('0x46')]+'%'};return _0x38b94e;})});}_0x71406e=_[_0xffa7('0x44')]({},_0x71406e,_0x59f872['options']);return db[_0xffa7('0x60')][_0xffa7('0x25')]({'where':_0x71406e[_0xffa7('0x42')]})[_0xffa7('0x16')](function(_0x27e76c){_0x58027a['count']=_0x27e76c;if(_0x59f872['query'][_0xffa7('0x48')]){_0x71406e[_0xffa7('0x49')]=[{'all':!![]}];}return db['CannedAnswer'][_0xffa7('0x64')](_0x71406e);})[_0xffa7('0x16')](function(_0x1634f6){_0x58027a[_0xffa7('0x4a')]=_0x1634f6;return _0x58027a;});}})[_0xffa7('0x16')](respondWithFilteredResult(_0x231c4d,_0x71406e))[_0xffa7('0x1f')](handleError(_0x231c4d,null));};exports[_0xffa7('0x65')]=function(_0x49aa0c,_0x3afdfe){return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x49aa0c['params']['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x3afdfe,null))[_0xffa7('0x16')](function(_0x362bfc){if(_0x362bfc){return _0x362bfc['removeAnswers'](_0x49aa0c[_0xffa7('0x3a')][_0xffa7('0x5f')]);}})[_0xffa7('0x16')](respondWithStatusCode(_0x3afdfe,null))['catch'](handleError(_0x3afdfe,null));};exports[_0xffa7('0x66')]=function(_0x5ec0b7,_0x5a60eb){_0x5ec0b7['body'][_0xffa7('0x67')]=_0x5ec0b7[_0xffa7('0x68')][_0xffa7('0x69')];return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x5ec0b7[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x5a60eb,null))['then'](saveUpdates(_0x5ec0b7['body'],null))[_0xffa7('0x16')](respondWithResult(_0x5a60eb,null))[_0xffa7('0x1f')](handleError(_0x5a60eb,null));};exports['addAvatar']=function(_0x25419a,_0x3d8a9f){_0x25419a['body']['agentAvatar']=_0x25419a[_0xffa7('0x68')][_0xffa7('0x69')];return db['ChatWebsite'][_0xffa7('0x56')]({'where':{'id':_0x25419a[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x3d8a9f,null))[_0xffa7('0x16')](saveUpdates(_0x25419a[_0xffa7('0x51')],null))[_0xffa7('0x16')](respondWithResult(_0x3d8a9f,null))[_0xffa7('0x1f')](handleError(_0x3d8a9f,null));};exports[_0xffa7('0x6a')]=function(_0x4cb1bf,_0x5805e9){_0x4cb1bf[_0xffa7('0x51')][_0xffa7('0x6b')]=_0x4cb1bf['file'][_0xffa7('0x69')];return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x4cb1bf[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x5805e9,null))['then'](saveUpdates(_0x4cb1bf['body'],null))[_0xffa7('0x16')](respondWithResult(_0x5805e9,null))[_0xffa7('0x1f')](handleError(_0x5805e9,null));};exports[_0xffa7('0x6c')]=function(_0x35ff56,_0x329805){_0x35ff56[_0xffa7('0x51')][_0xffa7('0x6d')]=_0x35ff56[_0xffa7('0x68')][_0xffa7('0x69')];return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x35ff56[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x329805,null))[_0xffa7('0x16')](saveUpdates(_0x35ff56[_0xffa7('0x51')],null))[_0xffa7('0x16')](respondWithResult(_0x329805,null))[_0xffa7('0x1f')](handleError(_0x329805,null));};exports[_0xffa7('0x6e')]=function(_0x5db9f0,_0x218d4e){var _0x263799=path['join'](config[_0xffa7('0x6f')],'server/files/images/logos/default_logo.svg');var _0x1da094={'where':{'id':_0x5db9f0[_0xffa7('0x4c')]['id']},'attributes':['id',_0xffa7('0x67')],'raw':!![]};var _0x91ef40=![];return require(_0xffa7('0x70'))[_0xffa7('0x71')]()['then'](function(_0x485f90){if(_0x485f90){_0x91ef40=_0x485f90[_0xffa7('0x72')];}})[_0xffa7('0x16')](function(){return db[_0xffa7('0x34')]['find'](_0x1da094);})[_0xffa7('0x16')](handleEntityNotFound(_0x218d4e,null))[_0xffa7('0x16')](function(_0x54bfab){if(_0x54bfab){if(!_['isNil'](_0x54bfab[_0xffa7('0x67')])){if(fs[_0xffa7('0x73')](path[_0xffa7('0x74')](config[_0xffa7('0x6f')],_0xffa7('0x75'),_0x54bfab[_0xffa7('0x67')]))&&_0x91ef40){_0x263799=path[_0xffa7('0x74')](config[_0xffa7('0x6f')],'server/files/images/logos/',_0x54bfab[_0xffa7('0x67')]);}}return _0x218d4e[_0xffa7('0x76')](_0x263799);}})[_0xffa7('0x1f')](handleError(_0x218d4e,null));};exports[_0xffa7('0x77')]=function(_0x5e9767,_0x48f3a4){var _0x861f8a=path[_0xffa7('0x74')](config[_0xffa7('0x6f')],_0xffa7('0x78'));var _0x32c84f={'where':{'id':_0x5e9767[_0xffa7('0x4c')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0xffa7('0x34')][_0xffa7('0x56')](_0x32c84f)[_0xffa7('0x16')](handleEntityNotFound(_0x48f3a4,null))[_0xffa7('0x16')](function(_0x58c043){if(_0x58c043){if(!_[_0xffa7('0x79')](_0x58c043[_0xffa7('0x7a')])){if(fs[_0xffa7('0x73')](path['join'](config['root'],_0xffa7('0x7b'),_0x58c043['agentAvatar']))){_0x861f8a=path[_0xffa7('0x74')](config[_0xffa7('0x6f')],'server/files/images/avatars/',_0x58c043[_0xffa7('0x7a')]);}}return _0x48f3a4['download'](_0x861f8a);}})[_0xffa7('0x1f')](handleError(_0x48f3a4,null));};exports[_0xffa7('0x7c')]=function(_0x150d07,_0x47467a){var _0x2c6995=path[_0xffa7('0x74')](config['root'],_0xffa7('0x7d'));var _0x25f0c6={'where':{'id':_0x150d07[_0xffa7('0x4c')]['id']},'attributes':['id',_0xffa7('0x6b'),_0xffa7('0x7e')],'raw':!![]};return db[_0xffa7('0x34')][_0xffa7('0x56')](_0x25f0c6)[_0xffa7('0x16')](handleEntityNotFound(_0x47467a,null))[_0xffa7('0x16')](function(_0x438011){if(_0x438011){if(!_[_0xffa7('0x79')](_0x438011[_0xffa7('0x6b')])){if(fs[_0xffa7('0x73')](path[_0xffa7('0x74')](config[_0xffa7('0x6f')],_0xffa7('0x7b'),_0x438011['customerAvatar']))&&_0x438011['showCustomerAvatar']){_0x2c6995=path[_0xffa7('0x74')](config[_0xffa7('0x6f')],_0xffa7('0x7b'),_0x438011[_0xffa7('0x6b')]);}}return _0x47467a[_0xffa7('0x76')](_0x2c6995);}})[_0xffa7('0x1f')](handleError(_0x47467a,null));};exports['getSystemAvatar']=function(_0x198c9e,_0x1454eb){var _0x5f4e67=path[_0xffa7('0x74')](config[_0xffa7('0x6f')],'server/files/images/avatars/system_avatar.png');var _0x13ae2e={'where':{'id':_0x198c9e['params']['id']},'attributes':['id',_0xffa7('0x6d')],'raw':!![]};return db[_0xffa7('0x34')][_0xffa7('0x56')](_0x13ae2e)[_0xffa7('0x16')](handleEntityNotFound(_0x1454eb,null))['then'](function(_0x23fbd4){if(_0x23fbd4){if(!_[_0xffa7('0x79')](_0x23fbd4[_0xffa7('0x6d')])){if(fs[_0xffa7('0x73')](path[_0xffa7('0x74')](config[_0xffa7('0x6f')],_0xffa7('0x7b'),_0x23fbd4[_0xffa7('0x6d')]))){_0x5f4e67=path[_0xffa7('0x74')](config['root'],'server/files/images/avatars/',_0x23fbd4[_0xffa7('0x6d')]);}}return _0x1454eb[_0xffa7('0x76')](_0x5f4e67);}})[_0xffa7('0x1f')](handleError(_0x1454eb,null));};exports[_0xffa7('0x7f')]=function(_0x5a9740,_0xb57c69){var _0xed1d4b=require(_0xffa7('0x80'));var _0x5bd065=new _0xed1d4b();var _0x3adb7d=_0x5bd065[_0xffa7('0x81')](_0x5a9740[_0xffa7('0x82')]['user-agent'])[_0xffa7('0x83')]();var _0x58f548={'body':_0x5a9740[_0xffa7('0x51')],'channel':_0xffa7('0x84')};var _0x5e01fb=[];var _0x1dd448=[];var _0x1406ae={};var _0x5c456d=![];return db[_0xffa7('0x85')]['describe']()[_0xffa7('0x16')](function(_0x321262){if(!_0x321262){throw new db[(_0xffa7('0x86'))]['ValidationError']('no\x20available\x20attributes');}_0x5e01fb=_['difference'](_[_0xffa7('0x4e')](_0x321262),[_0xffa7('0x87'),_0xffa7('0x88')]);_0x1dd448=_['difference'](_[_0xffa7('0x4e')](_0x321262),['createdAt',_0xffa7('0x88'),_0xffa7('0x89'),_0xffa7('0x8a')]);if(_0x5a9740[_0xffa7('0x51')]['id']){delete _0x5a9740[_0xffa7('0x51')]['id'];}if(_['isNil'](_0x5a9740[_0xffa7('0x51')][_0xffa7('0x8b')])){throw new db[(_0xffa7('0x86'))][(_0xffa7('0x8c'))](_0xffa7('0x8d'));}if(_[_0xffa7('0x79')](_0x5a9740['body'][_0xffa7('0x51')])||_0x5a9740[_0xffa7('0x51')][_0xffa7('0x51')]===''){throw new db[(_0xffa7('0x86'))][(_0xffa7('0x8c'))](_0xffa7('0x8e'));}if(_['isNil'](_0x5a9740[_0xffa7('0x51')]['mapKey'])){throw new db['Sequelize'][(_0xffa7('0x8c'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1dd448);}if(!_[_0xffa7('0x8f')](_0x1dd448,_0x5a9740['body'][_0xffa7('0x90')])){throw new db['Sequelize'][(_0xffa7('0x8c'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1dd448);}_0x1406ae[_0x5a9740[_0xffa7('0x51')][_0xffa7('0x90')]]=_0x5a9740[_0xffa7('0x51')][_0xffa7('0x8b')];})[_0xffa7('0x16')](function(){return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x5a9740[_0xffa7('0x4c')]['id']},'include':[{'model':db[_0xffa7('0x91')],'as':_0xffa7('0x92'),'include':[{'model':db[_0xffa7('0x85')],'as':_0xffa7('0x93'),'where':_0x1406ae,'limit':0x1,'order':[[_0xffa7('0x88'),_0xffa7('0x94')]]}]},{'model':db['ChatApplication'],'as':_0xffa7('0x95')}]});})['then'](handleEntityNotFound(_0xb57c69,null))['then'](function(_0x3a7b37){if(_0x3a7b37&&_0x3a7b37['List']){_0x58f548[_0xffa7('0x96')]=_0x3a7b37;_0x58f548['applications']=_0x3a7b37[_0xffa7('0x95')];_0x58f548[_0xffa7('0x97')]=_0x3a7b37[_0xffa7('0x92')];_0x58f548[_0xffa7('0x98')]=_[_0xffa7('0x99')](_0x58f548['applications'],[_0xffa7('0x9a')],[_0xffa7('0x9b')]);if(_0x58f548[_0xffa7('0x96')][_0xffa7('0x95')]){delete _0x58f548[_0xffa7('0x96')]['Applications'];}if(_0x58f548[_0xffa7('0x96')][_0xffa7('0x92')]&&_0x58f548[_0xffa7('0x96')][_0xffa7('0x92')][_0xffa7('0x93')]['length']){return _0x58f548[_0xffa7('0x96')][_0xffa7('0x92')][_0xffa7('0x93')][0x0];}var _0xe1d653=_[_0xffa7('0xe')](_0x5a9740[_0xffa7('0x51')],{'firstName':_0x5a9740[_0xffa7('0x51')][_0xffa7('0x8b')],'ListId':_0x3a7b37['ListId']});_0xe1d653[_0x5a9740[_0xffa7('0x51')][_0xffa7('0x90')]]=_0x5a9740['body']['from'];return db['CmContact'][_0xffa7('0x50')](_0xe1d653,{'fields':_0x5e01fb,'raw':!![]});}})[_0xffa7('0x16')](handleEntityNotFound(_0xb57c69,null))['then'](function(_0x23bb43){_0x58f548[_0xffa7('0x9c')]=_0x23bb43;var _0x574df8=_0x5a9740[_0xffa7('0x51')]['customerIp'];if(_0x5a9740[_0xffa7('0x82')]['cf-connecting-ip']){_0x574df8=_0x5a9740[_0xffa7('0x82')][_0xffa7('0x9d')];}else if(_0x5a9740['headers'][_0xffa7('0x9e')]){_0x574df8=_[_0xffa7('0x9f')](_0x5a9740['headers']['x-forwarded-for']['split'](','));}if(_0x23bb43){var _0x55cc81={'ContactId':_0x23bb43['id'],'ChatWebsiteId':_0x5a9740['params']['id'],'from':(_0x23bb43[_0xffa7('0xa0')]||'')+'\x20'+(_0x23bb43[_0xffa7('0xa1')]||''),'customerIp':_0x574df8,'customerPort':_0x5a9740[_0xffa7('0x82')][_0xffa7('0xa2')]?_0x5a9740[_0xffa7('0x82')][_0xffa7('0xa2')]:null,'referer':_0x5a9740[_0xffa7('0x51')]['referer'],'browserName':_0x3adb7d['browser'][_0xffa7('0x2f')]&&_0x3adb7d[_0xffa7('0xa3')][_0xffa7('0xa4')]?util[_0xffa7('0xa5')](_0xffa7('0xa6'),_0x3adb7d[_0xffa7('0xa3')][_0xffa7('0x2f')],_0x3adb7d['browser'][_0xffa7('0xa4')]):_0xffa7('0xa7'),'browserVersion':_0x3adb7d[_0xffa7('0xa3')][_0xffa7('0xa4')]||_0xffa7('0xa7'),'osName':util[_0xffa7('0xa5')](_0xffa7('0xa6'),_0x3adb7d['os'][_0xffa7('0x2f')],_0x3adb7d['os'][_0xffa7('0xa4')]),'osVersion':_0x3adb7d['os'][_0xffa7('0xa4')],'deviceModel':_0x3adb7d[_0xffa7('0xa8')]['model']&&_0x3adb7d[_0xffa7('0xa8')][_0xffa7('0xa9')]?util[_0xffa7('0xa5')](_0xffa7('0xaa'),_0x3adb7d[_0xffa7('0xa8')][_0xffa7('0x39')],_0x3adb7d[_0xffa7('0xa8')][_0xffa7('0xa9')],_0x3adb7d['device'][_0xffa7('0x37')]):null,'deviceVendor':_0x3adb7d[_0xffa7('0xa8')][_0xffa7('0xa9')],'deviceType':_0x3adb7d['device'][_0xffa7('0x37')],'formData':JSON[_0xffa7('0xab')](_0x5a9740['body'])};var _0x574134={'ChatWebsiteId':_0x5a9740[_0xffa7('0x4c')]['id'],'closed':![]};if(_0x5a9740['body'][_0xffa7('0xac')]){_0x574134[_0xffa7('0xac')]=_0x5a9740[_0xffa7('0x51')][_0xffa7('0xac')];return db[_0xffa7('0xad')][_0xffa7('0x56')]({'where':_0x574134})[_0xffa7('0x16')](function(_0x557e33){if(_0x557e33){return[_0x557e33,![]];}_0x55cc81[_0xffa7('0xac')]=_0x5a9740['body']['threadId'];_0x55cc81[_0xffa7('0xae')]=_0x5a9740[_0xffa7('0x51')][_0xffa7('0xae')];return db[_0xffa7('0xad')]['create'](_0x55cc81)[_0xffa7('0x16')](function(_0xb6010c){return[_0xb6010c,!![]];});});}_0x574134[_0xffa7('0xaf')]=_0x23bb43['id'];if(_0x5a9740[_0xffa7('0x51')][_0xffa7('0xb0')]&&_0x5a9740[_0xffa7('0x51')][_0xffa7('0xb0')]['id']){_0x574134['id']=_0x5a9740[_0xffa7('0x51')][_0xffa7('0xb0')]['id'];return db[_0xffa7('0xad')][_0xffa7('0x56')]({'where':_0x574134})[_0xffa7('0x16')](function(_0x4656a0){if(_0x4656a0){return[_0x4656a0,![]];}return db[_0xffa7('0xad')][_0xffa7('0x50')](_0x55cc81)[_0xffa7('0x16')](function(_0x1d80d3){return[_0x1d80d3,!![]];});});}return db[_0xffa7('0xad')][_0xffa7('0x50')](_0x55cc81)[_0xffa7('0x16')](function(_0x5571f1){return[_0x5571f1,!![]];});}})['spread'](function(_0x3cebf1,_0x3b6cca){if(_0x3cebf1){_0x5c456d=_0x3b6cca;if(!_0x3b6cca){var _0x3b30db={'from':(_0x58f548[_0xffa7('0x9c')][_0xffa7('0xa0')]||'')+'\x20'+(_0x58f548[_0xffa7('0x9c')]['lastName']||'')};if(_0x5a9740[_0xffa7('0x51')][_0xffa7('0xac')]&&_0x5a9740[_0xffa7('0x51')][_0xffa7('0xb1')]&&_0x5a9740[_0xffa7('0x51')][_0xffa7('0xac')]!=_0x5a9740[_0xffa7('0x51')][_0xffa7('0xb1')]){_0x3b30db[_0xffa7('0xac')]=_0x5a9740['body'][_0xffa7('0xb1')];}return _0x3cebf1[_0xffa7('0x2a')](_0x3b30db);}else{return _0x3cebf1;}}})[_0xffa7('0x16')](function(_0x14cbc7){_0x58f548['interaction']=_0x14cbc7['get']({'plain':!![]});_0x58f548['interaction'][_0xffa7('0xb2')]=_0x5c456d;if(_0x58f548[_0xffa7('0xb0')][_0xffa7('0xb2')]){if(_0x58f548['account']['autoclose']){_0x58f548[_0xffa7('0x98')][_0xffa7('0xb3')]({'id':0x0,'priority':_0x58f548['applications'][_0xffa7('0x4f')]+0x1,'app':_0xffa7('0xb4'),'appdata':'unmanaged','interval':'*,*,*,*'});}}return db[_0xffa7('0xb5')][_0xffa7('0x50')]({'body':_0x5a9740[_0xffa7('0x51')][_0xffa7('0x51')],'ChatWebsiteId':_0x5a9740[_0xffa7('0x4c')]['id'],'ChatInteractionId':_0x14cbc7['id'],'direction':'in','ContactId':_0x58f548['contact']['id'],'AttachmentId':_0x5a9740[_0xffa7('0x51')]['AttachmentId']});})[_0xffa7('0x16')](function(_0x41b4d9){_0x58f548[_0xffa7('0x1e')]=_0x41b4d9;if(_0x58f548[_0xffa7('0xb0')][_0xffa7('0xb6')]){return db['User'][_0xffa7('0x56')]({'attributes':['id',_0xffa7('0x2f')],'where':{'id':_0x58f548[_0xffa7('0xb0')][_0xffa7('0xb6')]}})[_0xffa7('0x16')](function(_0x1b4d82){if(_0x1b4d82){_0x58f548['applications'][_0xffa7('0xb7')]({'id':0x0,'priority':0x0,'app':_0xffa7('0xb8'),'appdata':_0x1b4d82['name']+','+(_0x58f548['account'][_0xffa7('0xb9')]||0xa),'interval':'*,*,*,*'});_0x58f548[_0xffa7('0xba')]=!![];}return respondWithRpcPromise(_0xffa7('0xbb'),_0xffa7('0xbc'),_0x58f548);});}return respondWithRpcPromise(_0xffa7('0xbb'),'startRouting',_0x58f548);})[_0xffa7('0x16')](function(_0x2c79d6){respondWithRpcPromise(_0xffa7('0xbd'),_0xffa7('0xbd'),{'event':'notify','message':_0x2c79d6},client9002);return _0x2c79d6;})['then'](respondWithResult(_0xb57c69,null))['catch'](handleError(_0xb57c69,null));};exports[_0xffa7('0xbe')]=function(_0x129680,_0x22cf04){var _0x4cf31f,_0x4b3f4a,_0x11764e;var _0x4973eb=[];var _0x120d06={};var _0x1f4329=_0x129680[_0xffa7('0xbf')]||[];var _0xcd71f8=[];var _0x5517d3;return db['CmContact'][_0xffa7('0x5a')]()[_0xffa7('0x16')](function(_0x46bbc2){if(!_0x46bbc2){throw new db[(_0xffa7('0x86'))][(_0xffa7('0x8c'))]('no\x20available\x20attributes');}_0x4973eb=_['difference'](_[_0xffa7('0x4e')](_0x46bbc2),[_0xffa7('0x87'),_0xffa7('0x88'),_0xffa7('0x89'),'ListId']);if(_0x129680[_0xffa7('0x51')]['id']){delete _0x129680['body']['id'];}if(_[_0xffa7('0x79')](_0x129680['body']['from'])){throw _0x22cf04[_0xffa7('0x22')](0x1f4)[_0xffa7('0x30')](new db[(_0xffa7('0x86'))]['ValidationError'](_0xffa7('0x8d')));}if(_[_0xffa7('0x79')](_0x129680[_0xffa7('0x51')][_0xffa7('0x51')])||_0x129680['body'][_0xffa7('0x51')]===''){throw _0x22cf04['status'](0x1f4)[_0xffa7('0x30')](new db[(_0xffa7('0x86'))][(_0xffa7('0x8c'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x129680[_0xffa7('0x51')][_0xffa7('0xc0')])){throw _0x22cf04[_0xffa7('0x22')](0x1f4)[_0xffa7('0x30')](new db[(_0xffa7('0x86'))][(_0xffa7('0x8c'))](_0xffa7('0xc1')+_0x4973eb));}if(!_[_0xffa7('0x8f')](_0x4973eb,_0x129680[_0xffa7('0x51')][_0xffa7('0xc0')])){throw _0x22cf04[_0xffa7('0x22')](0x1f4)[_0xffa7('0x30')](new db[(_0xffa7('0x86'))][(_0xffa7('0x8c'))](_0xffa7('0xc2')+_0x4973eb));}_0x120d06[_0x129680['body']['mapKeyOffline']]=_0x129680[_0xffa7('0x51')]['from'];})[_0xffa7('0x16')](function(){return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x129680[_0xffa7('0x4c')]['id']},'include':[{'model':db[_0xffa7('0x91')],'as':'List'},{'model':db[_0xffa7('0xc3')],'as':_0xffa7('0xc3')}]});})[_0xffa7('0x16')](handleEntityNotFound(_0x22cf04,null))['then'](function(_0x5e159b){if(_0x5e159b&&_0x5e159b[_0xffa7('0x92')]){_0x4b3f4a=_0x5e159b;var _0x1131e0=_[_0xffa7('0xe')](_0x129680[_0xffa7('0x51')],{'firstName':_0x129680[_0xffa7('0x51')][_0xffa7('0x8b')],'phone':_0x129680[_0xffa7('0x51')][_0xffa7('0x8b')],'ListId':_0x5e159b[_0xffa7('0x8a')]});_0x1131e0[_0x129680[_0xffa7('0x51')]['mapKeyOffline']]=_0x129680[_0xffa7('0x51')][_0xffa7('0x8b')];return db['CmContact'][_0xffa7('0xc4')]({'where':_0x120d06,'defaults':_0x1131e0});}})['spread'](function(_0x54ae96){if(_0x54ae96){_0x11764e=_0x54ae96;var _0xbaf0c9=fs['readFileSync'](path[_0xffa7('0x74')](config[_0xffa7('0x6f')],_0xffa7('0xc5')),_0xffa7('0xc6'));var _0x1e682d=ejs[_0xffa7('0xc7')](_0xbaf0c9,{'body':_[_0xffa7('0xc8')](_0x129680[_0xffa7('0x51')][_0xffa7('0x51')]),'bodyTitle':_0x4b3f4a['offlineMessageBody']});return db[_0xffa7('0xc9')][_0xffa7('0x50')]({'body':_0x1e682d,'plainBody':htmlToText[_0xffa7('0xca')](_0x1e682d),'ContactId':_0x54ae96['id'],'ChatWebsiteId':_0x4b3f4a['id']});}})[_0xffa7('0x16')](function(_0x409c9a){_0x5517d3=_0x409c9a;if(_0x1f4329[_0xffa7('0x4f')]){var _0x7f5d78=_0x1f4329[_0xffa7('0x33')](function(_0x44629c){return{'name':_0x44629c[_0xffa7('0xcb')],'basename':_0x44629c[_0xffa7('0x69')],'type':_0x44629c['mimetype'],'ChatOfflineMessageId':_0x409c9a['id']};});_0xcd71f8=_0x7f5d78['map'](_0x3a0f59=>{var _0x40ff9b={'filename':_0x3a0f59['name'],'path':path[_0xffa7('0x74')](config[_0xffa7('0x6f')],_0xffa7('0xcc'),_0xffa7('0xbf'),_0xffa7('0xcd'),_0xffa7('0xce'),_0x3a0f59[_0xffa7('0xcf')])};return _0x40ff9b;});if(!_0x4b3f4a[_0xffa7('0xd0')]){return db[_0xffa7('0xd1')][_0xffa7('0xd2')](function(_0x4725d6){return db[_0xffa7('0xd3')][_0xffa7('0xd4')](_0x7f5d78,{'transaction':_0x4725d6});});}}})[_0xffa7('0x16')](function(){if(_0x5517d3){_0x4cf31f=_0x5517d3;return db[_0xffa7('0xc3')][_0xffa7('0x62')]({'where':{'service':!![]},'include':[{'model':db[_0xffa7('0xd5')],'as':_0xffa7('0xd6'),'raw':!![],'include':[{'model':db[_0xffa7('0xd7')],'as':_0xffa7('0xd7'),'raw':!![]}]}]});}})[_0xffa7('0x16')](function(_0x5acc57){if(_0x5acc57&&_0x5acc57[_0xffa7('0xd6')]&&_0x4b3f4a[_0xffa7('0xd8')]&&_0x4b3f4a['forwardOfflineAddress']){var _0x3d2499=_0x5acc57[_0xffa7('0xd9')]();return respondWithRpcPromise(_0xffa7('0xda'),_0xffa7('0xdb'),{'account':_0x3d2499,'message':{'from':util['format'](_0xffa7('0xdc'),_0x5acc57[_0xffa7('0x2f')],_0x5acc57[_0xffa7('0xdd')]||_0x5acc57[_0xffa7('0xd6')][_0xffa7('0x52')]),'to':_0x4b3f4a[_0xffa7('0xde')],'subject':_0x4b3f4a['offlineMessageSubject'],'html':_0x4cf31f[_0xffa7('0x51')],'attachments':_0xcd71f8}},client9003)[_0xffa7('0x16')](function(){return _0x4cf31f;})[_0xffa7('0x1f')](function(_0x5285b5){logger[_0xffa7('0x1c')](_0x5285b5);});}})['then'](function(){if(_0x4b3f4a&&_0x4b3f4a[_0xffa7('0xd0')]&&_0x4b3f4a[_0xffa7('0xdf')]){var _0x378b36=[];if(_0x1f4329[_0xffa7('0x4f')]){_0x378b36=_0x1f4329[_0xffa7('0x33')](function(_0x443207){return{'name':_0x443207[_0xffa7('0xcb')],'basename':_0x443207[_0xffa7('0x69')],'type':_0x443207[_0xffa7('0xe0')],'ChatOfflineMessageId':_0x5517d3['id']};});}var _0x26e1ea;if(!_['isNil'](_0x4b3f4a[_0xffa7('0xe1')])){var _0x33eb6d=_[_0xffa7('0x33')](_0x129680[_0xffa7('0x51')],function(_0x278e16){return _0x278e16;});var _0x274d49=_[_0xffa7('0xe2')](_0x33eb6d)[0x0];var _0x4f1224=_[_0xffa7('0xe3')](_0x274d49,function(_0x461704){return _0x461704;});_0x26e1ea=_0x4f1224[0x1][_0x4b3f4a[_0xffa7('0xe1')]];}var _0x62de4e={'from':_0x11764e[_0xffa7('0xdd')],'firstName':_0x11764e['firstName'],'lastName':_0x11764e[_0xffa7('0xa1')],'mapKey':_0xffa7('0xdd'),'message':{'from':_0x11764e[_0xffa7('0xdd')],'to':_0x4b3f4a[_0xffa7('0xc3')][_0xffa7('0xdd')],'cc':'','subject':_[_0xffa7('0x79')](_0x26e1ea)?_0x4b3f4a['offlineMessageSubject']:_0x26e1ea,'messageId':'','sentAt':new Date(),'attach':_0x378b36[_0xffa7('0x4f')],'attachments':_0x378b36,'originChannel':_0xffa7('0xe4'),'ChatWebsiteId':_0x4b3f4a['id'],'ChatOfflineMessageId':_0x4cf31f['id'],'originTo':_0x4b3f4a['MailAccount'][_0xffa7('0xdd')]},'body':_0x4cf31f[_0xffa7('0x51')]};var _0x32cd21={'account':{'id':_0x4b3f4a[_0xffa7('0xdf')]},'body':_0x62de4e,'log':_0xffa7('0xe5')};return respondWithRpcPromise(_0xffa7('0xe5'),_0xffa7('0xe6'),_0x32cd21,client9001)['then'](function(){return _0x4cf31f;})['catch'](function(_0x17ad24){logger['error'](_0x17ad24);});}return;})[_0xffa7('0x16')](function(){if(_0x4cf31f){return _0x4cf31f;}})[_0xffa7('0x16')](respondWithResult(_0x22cf04,null))[_0xffa7('0x1f')](function(_0x12920e){logger['error'](_0xffa7('0x1f'),_0x12920e);for(var _0x135225 of _0x1f4329){var _0x4d0e5f=path[_0xffa7('0x74')](config['root'],_0xffa7('0xcc'),_0xffa7('0xbf'),_0xffa7('0xcd'),'offline-chat',_0x135225[_0xffa7('0x69')]);fs_extra[_0xffa7('0xe7')](_0x4d0e5f)[_0xffa7('0x1f')](function(_0x55ff5c){logger[_0xffa7('0x1c')](_0xffa7('0xe8'),_0x4d0e5f,_0x55ff5c);});}});};exports[_0xffa7('0xe9')]=function(_0x16894d,_0x5ed92d){return db['ChatInteraction'][_0xffa7('0x56')]({'where':{'id':_0x16894d[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5ed92d,null))[_0xffa7('0x16')](function(_0x14be03){if(_0x14be03){return _0x14be03[_0xffa7('0xe9')](_0x16894d[_0xffa7('0x51')][_0xffa7('0x5f')],_['omit'](_0x16894d[_0xffa7('0x51')],[_0xffa7('0x5f'),'id'])||{});}})[_0xffa7('0x16')](respondWithResult(_0x5ed92d,null))['catch'](handleError(_0x5ed92d,null));};exports[_0xffa7('0xea')]=function(_0x5f423a,_0x4f69af){var _0x5a86ef={'raw':![],'where':{}};var _0x5802cc={};var _0x3f669b={'count':0x0,'rows':[]};return db[_0xffa7('0x34')]['findOne']({'where':{'id':_0x5f423a[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4f69af,null))[_0xffa7('0x16')](function(_0x4234df){if(_0x4234df){_0x5802cc[_0xffa7('0x39')]=_['keys'](db['ChatInteraction'][_0xffa7('0x35')]);_0x5802cc[_0xffa7('0x3a')]=_[_0xffa7('0x4e')](_0x5f423a['query']);_0x5802cc[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x5802cc[_0xffa7('0x39')],_0x5802cc[_0xffa7('0x3a')]);_0x5a86ef['attributes']=_[_0xffa7('0x3c')](_0x5802cc['model'],qs['fields'](_0x5f423a[_0xffa7('0x3a')][_0xffa7('0x3e')]));_0x5a86ef[_0xffa7('0x3d')]=_0x5a86ef[_0xffa7('0x3d')][_0xffa7('0x4f')]?_0x5a86ef['attributes']:_0x5802cc[_0xffa7('0x39')];if(!_0x5f423a[_0xffa7('0x3a')][_0xffa7('0x63')](_0xffa7('0x3f'))){_0x5a86ef[_0xffa7('0x24')]=qs[_0xffa7('0x24')](_0x5f423a[_0xffa7('0x3a')][_0xffa7('0x24')]);_0x5a86ef[_0xffa7('0x26')]=qs[_0xffa7('0x26')](_0x5f423a[_0xffa7('0x3a')][_0xffa7('0x26')]);}_0x5a86ef[_0xffa7('0x40')]=qs[_0xffa7('0x41')](_0x5f423a['query'][_0xffa7('0x41')]);_0x5a86ef[_0xffa7('0x42')]=qs[_0xffa7('0x3b')](_[_0xffa7('0x43')](_0x5f423a[_0xffa7('0x3a')],_0x5802cc['filters']));_0x5a86ef[_0xffa7('0x42')][_0xffa7('0x5c')]=_0x4234df['id'];if(_0x5f423a['query'][_0xffa7('0x46')]){_0x5a86ef[_0xffa7('0x42')]=_[_0xffa7('0x44')](_0x5a86ef[_0xffa7('0x42')],{'$or':_[_0xffa7('0x33')](_0x5a86ef[_0xffa7('0x3d')],function(_0x4132e0){var _0x1239c2={};_0x1239c2[_0x4132e0]={'$like':'%'+_0x5f423a[_0xffa7('0x3a')][_0xffa7('0x46')]+'%'};return _0x1239c2;})});}_0x5a86ef=_[_0xffa7('0x44')]({},_0x5a86ef,_0x5f423a[_0xffa7('0x47')]);return db[_0xffa7('0xad')]['count']({'where':_0x5a86ef['where']})[_0xffa7('0x16')](function(_0x3f83a8){_0x3f669b[_0xffa7('0x25')]=_0x3f83a8;if(_0x5f423a[_0xffa7('0x3a')]['includeAll']){_0x5a86ef['include']=[{'model':db[_0xffa7('0x85')],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xffa7('0x2f'),'fullname',_0xffa7('0xeb')],'required':![]},{'model':db[_0xffa7('0xec')],'as':_0xffa7('0xed'),'attributes':['id','name',_0xffa7('0xee')],'where':_0x5f423a['query'][_0xffa7('0xef')]?{'id':_0x5f423a['query'][_0xffa7('0xef')]}:undefined,'required':_0x5f423a[_0xffa7('0x3a')][_0xffa7('0xef')]?!![]:![]}];}return db['ChatInteraction'][_0xffa7('0x64')](_0x5a86ef);})['then'](function(_0x18bdd2){_0x3f669b['rows']=_0x18bdd2;return _0x3f669b;});}})[_0xffa7('0x16')](respondWithFilteredResult(_0x4f69af,_0x5a86ef))[_0xffa7('0x1f')](handleError(_0x4f69af,null));};function iftimePromise(_0x20ffec,_0x63936f){return respondWithRpcPromise(_0xffa7('0xf0'),_0xffa7('0xf1'),{'command':_0x63936f['timezone']?util[_0xffa7('0xa5')]('iftime\x20%s,%s',_0x20ffec['interval'],_0x63936f[_0xffa7('0xf2')]):util['format']('iftime\x20%s',_0x20ffec[_0xffa7('0xf3')])},client9002)[_0xffa7('0x16')](function(_0x4ed411){var _0xb5ac4e=_0x4ed411&&_0x4ed411['indexOf'](_0xffa7('0xf4'))>=0x0?!![]:![];logger[_0xffa7('0x17')](_0xffa7('0xf5'),_0x63936f['id'],_0x20ffec['id'],_0x20ffec[_0xffa7('0xf3')],_0xb5ac4e?'ONLINE':_0xffa7('0xf6'),_0x63936f[_0xffa7('0xf2')]?_0x63936f['timezone']:'No\x20timezone');return _0xb5ac4e;})['catch'](function(_0x4e4b79){logger['error'](_0xffa7('0xf5'),_0x63936f['id'],_0x20ffec['id'],_0x20ffec[_0xffa7('0xf3')],util[_0xffa7('0xf7')](_0x4e4b79,{'showHidden':![],'depth':null}),_0x63936f[_0xffa7('0xf2')]?_0x63936f[_0xffa7('0xf2')]:_0xffa7('0xf8'));return![];});}exports[_0xffa7('0xf1')]=function(_0x2b51a0,_0x5bf638){var _0x15571a=0x0;var _0x3b9694=0x0;var _0x10772e=![];var _0x850074;var _0x29873e;return db[_0xffa7('0x34')]['find']({'where':{'id':_0x2b51a0[_0xffa7('0x4c')]['id']},'include':[{'model':db[_0xffa7('0xf9')],'as':'Interval','include':[{'model':db[_0xffa7('0xf9')],'as':_0xffa7('0xfa'),'attributes':['id',_0xffa7('0xf3')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x5bf638,null))[_0xffa7('0x16')](function(_0x18ee3f){if(_0x18ee3f){_0x850074=_0x18ee3f;return _0x18ee3f[_0xffa7('0xfb')]({'raw':!![]});}})['then'](function(_0x4b5944){if(_0x850074){if(_0x4b5944){_0x29873e=_0x4b5944;}}return require(_0xffa7('0x70'))['getLicense']();})[_0xffa7('0x16')](function(_0x2dd6b2){if(_0x2dd6b2){_0x3b9694=_0x2dd6b2['virtual'];_0x10772e=_0x2dd6b2['custom'];}})[_0xffa7('0x16')](function(){return db['ChatInteraction'][_0xffa7('0x25')]({'where':{'closed':![]}});})['then'](function(_0x4c9323){_0x15571a=_0x4c9323;if(_0x3b9694&&_0x4c9323>_0x3b9694){return db['License'][_0xffa7('0x62')]({'where':{'id':0x1}})[_0xffa7('0x16')](function(_0x2a9404){if(_0x2a9404){_0x2a9404[_0xffa7('0xfc')](_0xffa7('0xfd'));}});}})[_0xffa7('0x16')](function(){if(_0x850074[_0xffa7('0xf9')]&&_0x850074[_0xffa7('0xf9')][_0xffa7('0xfa')]){var _0x4f7a45=[];for(var _0x36422c=0x0;_0x36422c<_0x850074[_0xffa7('0xf9')][_0xffa7('0xfa')][_0xffa7('0x4f')];_0x36422c++){var _0x1a4855=_0x850074[_0xffa7('0xf9')][_0xffa7('0xfa')][_0x36422c][_0xffa7('0x2c')]({'plain':!![]});_0x4f7a45[_0xffa7('0xb3')](iftimePromise(_0x1a4855,_0x850074));}return BPromise[_0xffa7('0xfe')](_0x4f7a45)[_0xffa7('0x16')](function(_0xa32790){return _[_0xffa7('0xff')](_0xa32790);});}else{return!![];}})[_0xffa7('0x16')](function(_0x54517f){var _0x295d87=fs[_0xffa7('0x100')](path[_0xffa7('0x74')](config['root'],_0xffa7('0x101')),_0xffa7('0xc6'));var _0x22fc97={'remote':_0x850074[_0xffa7('0x102')],'query':querystring[_0xffa7('0xab')](_[_0xffa7('0x44')](_0x850074['get']({'plain':!![]}),{'customerIp':_0x2b51a0[_0xffa7('0x82')][_0xffa7('0x9e')]||_0x2b51a0[_0xffa7('0x82')][_0xffa7('0x103')]||_0x2b51a0[_0xffa7('0x104')]['remoteAddress']||_0x2b51a0['ip'],'referer':_0x2b51a0[_0xffa7('0x82')]['referer'],'openedInteractions':_0x15571a,'maxInteractions':_0x3b9694,'virtual':_0x10772e['virtual'],'online':_0x54517f,'custom':_0x10772e}))[_0xffa7('0x105')](/'/g,'\x5c\x27')};_0x5bf638[_0xffa7('0x30')](ejs[_0xffa7('0xc7')](Mustache[_0xffa7('0xc7')](_0x295d87,_0x22fc97),{'proactiveActions':_0x29873e,'alignment':_0x850074[_0xffa7('0x106')],'verticalAlignment':_0x850074[_0xffa7('0x107')],'div_color':_0x850074['color'],'labelText':_0x850074[_0xffa7('0x108')],'text_color':_0x850074[_0xffa7('0x109')],'text_button_color':_0x850074[_0xffa7('0x10a')],'button_color':_0x850074[_0xffa7('0x10b')],'background_color':_0x850074[_0xffa7('0x10c')],'hideWhenOffline':_0x850074[_0xffa7('0x10d')],'interval':_0x850074[_0xffa7('0x10e')]}));})['catch'](handleError(_0x5bf638,null));};exports['addApplications']=function(_0xd30756,_0x4b9dc7){var _0x35548c=_0xd30756[_0xffa7('0x4c')]['id'];var _0x3dcf05=_0xd30756[_0xffa7('0x51')];var _0x112f0d=0xc8;var _0x2f6881=null;return db[_0xffa7('0xd1')][_0xffa7('0xd2')]({'isolationLevel':db['sequelize'][_0xffa7('0x10f')][_0xffa7('0x110')][_0xffa7('0x111')]},function(_0x83eb9f){return db[_0xffa7('0x34')][_0xffa7('0x62')]({'where':{'id':_0x35548c},'transaction':_0x83eb9f})[_0xffa7('0x16')](function(_0x563007){if(_0x563007){return db['ChatApplication'][_0xffa7('0x2b')]({'where':{'ChatWebsiteId':_0x35548c},'transaction':_0x83eb9f})[_0xffa7('0x16')](function(){var _0x8d7df3=_['map'](_0x3dcf05,function(_0x586508){_0x586508['ChatWebsiteId']=_0x35548c;return _0x586508;});return db[_0xffa7('0x112')][_0xffa7('0xd4')](_0x8d7df3,{'transaction':_0x83eb9f});});}else{_0x112f0d=0x194;_0x2f6881=[];}});})[_0xffa7('0x16')](function(){if(_0x112f0d!==0x194){return db[_0xffa7('0x112')][_0xffa7('0x113')]({'where':{'ChatWebsiteId':_0x35548c},'order':'priority'})[_0xffa7('0x16')](function(_0x5109fc){_0x2f6881=_0x5109fc;});}})['catch'](function(_0x3d7475){_0x112f0d=0x1f4;logger[_0xffa7('0x1c')](_0x3d7475[_0xffa7('0x2e')]);if(_0x3d7475[_0xffa7('0x2f')]){delete _0x3d7475[_0xffa7('0x2f')];}_0x2f6881=_0x3d7475;})[_0xffa7('0x114')](function(){if(_0x2f6881===null){_0x4b9dc7[_0xffa7('0x20')](_0x112f0d);}else{if(_0x112f0d===0x1f4){_0x4b9dc7[_0xffa7('0x22')](_0x112f0d)[_0xffa7('0x30')](_0x2f6881);}else{_0x4b9dc7['status'](_0x112f0d)[_0xffa7('0x29')](_0x2f6881);}}});};exports['getApplications']=function(_0x217159,_0x29ccef){var _0x247ede={};var _0x810c39={};var _0x32c880;var _0x16d8d3;return db[_0xffa7('0x34')][_0xffa7('0x62')]({'where':{'id':_0x217159[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x29ccef,null))[_0xffa7('0x16')](function(_0x1e0d86){if(_0x1e0d86){_0x32c880=_0x1e0d86;_0x810c39[_0xffa7('0x39')]=_[_0xffa7('0x4e')](db[_0xffa7('0x112')][_0xffa7('0x35')]);_0x810c39[_0xffa7('0x3a')]=_['keys'](_0x217159[_0xffa7('0x3a')]);_0x810c39[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x810c39[_0xffa7('0x39')],_0x810c39['query']);_0x247ede[_0xffa7('0x3d')]=_['intersection'](_0x810c39[_0xffa7('0x39')],qs[_0xffa7('0x3e')](_0x217159['query'][_0xffa7('0x3e')]));_0x247ede[_0xffa7('0x3d')]=_0x247ede[_0xffa7('0x3d')][_0xffa7('0x4f')]?_0x247ede['attributes']:_0x810c39['model'];_0x247ede[_0xffa7('0x40')]=qs['sort'](_0x217159[_0xffa7('0x3a')][_0xffa7('0x41')]);_0x247ede[_0xffa7('0x42')]=qs['filters'](_[_0xffa7('0x43')](_0x217159[_0xffa7('0x3a')],_0x810c39[_0xffa7('0x3b')]));if(_0x217159['query'][_0xffa7('0x46')]){_0x247ede[_0xffa7('0x42')]=_[_0xffa7('0x44')](_0x247ede[_0xffa7('0x42')],{'$or':_['map'](_0x247ede['attributes'],function(_0xc03afd){var _0x179f07={};_0x179f07[_0xc03afd]={'$like':'%'+_0x217159['query']['filter']+'%'};return _0x179f07;})});}_0x247ede=_[_0xffa7('0x44')]({},_0x247ede,_0x217159[_0xffa7('0x47')]);return _0x32c880[_0xffa7('0x115')](_0x247ede);}})[_0xffa7('0x16')](function(_0x1cf409){if(_0x1cf409){_0x16d8d3=_0x1cf409[_0xffa7('0x4f')];if(!_0x217159[_0xffa7('0x3a')][_0xffa7('0x63')](_0xffa7('0x3f'))){_0x247ede[_0xffa7('0x24')]=qs['limit'](_0x217159[_0xffa7('0x3a')][_0xffa7('0x24')]);_0x247ede[_0xffa7('0x26')]=qs[_0xffa7('0x26')](_0x217159[_0xffa7('0x3a')][_0xffa7('0x26')]);}return _0x32c880['getApplications'](_0x247ede);}})[_0xffa7('0x16')](function(_0x468a0a){if(_0x468a0a){return _0x468a0a?{'count':_0x16d8d3,'rows':_0x468a0a}:null;}})[_0xffa7('0x16')](respondWithResult(_0x29ccef,null))[_0xffa7('0x1f')](handleError(_0x29ccef,null));};exports[_0xffa7('0x116')]=function(_0x1de24d,_0x16bb3c){return db['chatProactiveAction'][_0xffa7('0x56')]({'where':{'id':_0x1de24d[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x16bb3c,null))['then'](function(_0x38c2a2){if(_0x38c2a2){return _0x38c2a2[_0xffa7('0x116')](_0x1de24d[_0xffa7('0x51')][_0xffa7('0x5f')],_[_0xffa7('0x117')](_0x1de24d[_0xffa7('0x51')],[_0xffa7('0x5f'),'id'])||{});}})[_0xffa7('0x16')](respondWithResult(_0x16bb3c,null))[_0xffa7('0x1f')](handleError(_0x16bb3c,null));};exports['getProactiveActions']=function(_0x2680eb,_0x5c55d2){var _0x462cdd={};var _0x38e609={};var _0x4e5ecb;var _0x1d3f30;return db[_0xffa7('0x34')][_0xffa7('0x62')]({'where':{'id':_0x2680eb[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x5c55d2,null))[_0xffa7('0x16')](function(_0x168edb){if(_0x168edb){_0x4e5ecb=_0x168edb;_0x38e609[_0xffa7('0x39')]=_[_0xffa7('0x4e')](db[_0xffa7('0x118')][_0xffa7('0x35')]);_0x38e609[_0xffa7('0x3a')]=_[_0xffa7('0x4e')](_0x2680eb[_0xffa7('0x3a')]);_0x38e609[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x38e609[_0xffa7('0x39')],_0x38e609[_0xffa7('0x3a')]);_0x462cdd['attributes']=_[_0xffa7('0x3c')](_0x38e609[_0xffa7('0x39')],qs[_0xffa7('0x3e')](_0x2680eb[_0xffa7('0x3a')]['fields']));_0x462cdd[_0xffa7('0x3d')]=_0x462cdd[_0xffa7('0x3d')]['length']?_0x462cdd[_0xffa7('0x3d')]:_0x38e609[_0xffa7('0x39')];_0x462cdd['order']=qs['sort'](_0x2680eb['query'][_0xffa7('0x41')]);_0x462cdd[_0xffa7('0x42')]=qs[_0xffa7('0x3b')](_[_0xffa7('0x43')](_0x2680eb[_0xffa7('0x3a')],_0x38e609[_0xffa7('0x3b')]));if(_0x2680eb[_0xffa7('0x3a')][_0xffa7('0x46')]){_0x462cdd[_0xffa7('0x42')]=_[_0xffa7('0x44')](_0x462cdd[_0xffa7('0x42')],{'$or':_['map'](_0x462cdd[_0xffa7('0x3d')],function(_0x401057){var _0x1b71a0={};_0x1b71a0[_0x401057]={'$like':'%'+_0x2680eb[_0xffa7('0x3a')]['filter']+'%'};return _0x1b71a0;})});}_0x462cdd=_[_0xffa7('0x44')]({},_0x462cdd,_0x2680eb[_0xffa7('0x47')]);return _0x4e5ecb[_0xffa7('0xfb')](_0x462cdd);}})[_0xffa7('0x16')](function(_0x12fc95){if(_0x12fc95){_0x1d3f30=_0x12fc95[_0xffa7('0x4f')];if(!_0x2680eb[_0xffa7('0x3a')][_0xffa7('0x63')](_0xffa7('0x3f'))){_0x462cdd[_0xffa7('0x24')]=qs[_0xffa7('0x24')](_0x2680eb['query'][_0xffa7('0x24')]);_0x462cdd[_0xffa7('0x26')]=qs['offset'](_0x2680eb[_0xffa7('0x3a')][_0xffa7('0x26')]);}return _0x4e5ecb[_0xffa7('0xfb')](_0x462cdd);}})['then'](function(_0x35ef67){if(_0x35ef67){return _0x35ef67?{'count':_0x1d3f30,'rows':_0x35ef67}:null;}})[_0xffa7('0x16')](respondWithResult(_0x5c55d2,null))['catch'](handleError(_0x5c55d2,null));};exports[_0xffa7('0x119')]=function(_0x47869b,_0xc2e97b){var _0x1f0867=_0x47869b[_0xffa7('0x3a')][_0xffa7('0x11a')]===_0xffa7('0x11b')?'offlineForm':_0xffa7('0x11c');return db[_0xffa7('0x34')][_0xffa7('0x56')]({'attributes':['id',_0x1f0867],'where':{'id':_0x47869b[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0xc2e97b,null))[_0xffa7('0x16')](function(_0x1548e2){if(_0x1548e2){var _0x30f031=_0x1548e2[_0x1f0867];var _0x374b3d=_0x30f031&&_0x30f031['items']?_0x30f031[_0xffa7('0x11d')]:[];_0xc2e97b['send']({'fromKey':_['isNil'](_0x30f031[_0xffa7('0x11e')])?undefined:_0x30f031[_0xffa7('0x11e')],'count':_0x374b3d[_0xffa7('0x4f')],'rows':_0x374b3d});}})[_0xffa7('0x1f')](handleError(_0xc2e97b,null));};exports[_0xffa7('0x11f')]=function(_0x2569b8,_0x4ec254){var _0x250abd={'raw':![],'where':{}};var _0x56405f={};var _0x34821e={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xffa7('0x62')]({'where':{'id':_0x2569b8[_0xffa7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4ec254,null))[_0xffa7('0x16')](function(_0x9d7a5b){if(_0x9d7a5b){_0x56405f[_0xffa7('0x39')]=_['keys'](db[_0xffa7('0xc9')]['rawAttributes']);_0x56405f[_0xffa7('0x3a')]=_[_0xffa7('0x4e')](_0x2569b8[_0xffa7('0x3a')]);_0x56405f[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x56405f[_0xffa7('0x39')],_0x56405f['query']);_0x250abd[_0xffa7('0x3d')]=_['intersection'](_0x56405f['model'],qs[_0xffa7('0x3e')](_0x2569b8[_0xffa7('0x3a')]['fields']));_0x250abd[_0xffa7('0x3d')]=_0x250abd[_0xffa7('0x3d')]['length']?_0x250abd['attributes']:_0x56405f[_0xffa7('0x39')];if(!_0x2569b8['query'][_0xffa7('0x63')](_0xffa7('0x3f'))){_0x250abd['limit']=qs[_0xffa7('0x24')](_0x2569b8['query']['limit']);_0x250abd[_0xffa7('0x26')]=qs[_0xffa7('0x26')](_0x2569b8[_0xffa7('0x3a')][_0xffa7('0x26')]);}_0x250abd['order']=qs[_0xffa7('0x41')](_0x2569b8[_0xffa7('0x3a')][_0xffa7('0x41')]);_0x250abd['where']=qs[_0xffa7('0x3b')](_[_0xffa7('0x43')](_0x2569b8[_0xffa7('0x3a')],_0x56405f['filters']));_0x250abd['where']['ChatWebsiteId']=_0x9d7a5b['id'];if(_0x2569b8[_0xffa7('0x3a')][_0xffa7('0x46')]){_0x250abd[_0xffa7('0x42')]=_[_0xffa7('0x44')](_0x250abd[_0xffa7('0x42')],{'$or':_[_0xffa7('0x33')](_0x250abd[_0xffa7('0x3d')],function(_0x29456a){var _0x1bb485={};_0x1bb485[_0x29456a]={'$like':'%'+_0x2569b8[_0xffa7('0x3a')]['filter']+'%'};return _0x1bb485;})});}_0x250abd=_[_0xffa7('0x44')]({},_0x250abd,_0x2569b8[_0xffa7('0x47')]);return db[_0xffa7('0xc9')][_0xffa7('0x25')]({'where':_0x250abd['where']})[_0xffa7('0x16')](function(_0x58fe78){_0x34821e['count']=_0x58fe78;if(_0x2569b8[_0xffa7('0x3a')][_0xffa7('0x48')]){_0x250abd['include']=[{'all':!![]}];}else{_0x250abd[_0xffa7('0x49')]=[{'model':db[_0xffa7('0x85')],'as':_0xffa7('0x120'),'required':![]},{'model':db[_0xffa7('0xd3')],'as':'Attachments','required':![]}];}return db['ChatOfflineMessage'][_0xffa7('0x64')](_0x250abd);})['then'](function(_0x2db90d){_0x34821e[_0xffa7('0x4a')]=_0x2db90d;return _0x34821e;});}})[_0xffa7('0x16')](respondWithFilteredResult(_0x4ec254,_0x250abd))[_0xffa7('0x1f')](handleError(_0x4ec254,null));};exports[_0xffa7('0x121')]=function(_0x3ac8a8,_0x4664a2){return db['ChatWebsite'][_0xffa7('0x56')]({'where':{'id':_0x3ac8a8['params']['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x4664a2,null))['then'](function(_0x4f447e){if(_0x4f447e){return _0x4f447e['addAgents'](_0x3ac8a8[_0xffa7('0x51')][_0xffa7('0x5f')],_['omit'](_0x3ac8a8['body'],['ids','id'])||{})[_0xffa7('0x122')](function(_0x1e65b2){for(var _0x260319=0x0;_0x260319<_0x3ac8a8[_0xffa7('0x51')]['ids']['length'];_0x260319+=0x1){socket['emit'](_0xffa7('0x123'),{'UserId':Number(_0x3ac8a8[_0xffa7('0x51')][_0xffa7('0x5f')][_0x260319]),'ChatWebsiteId':Number(_0x3ac8a8[_0xffa7('0x4c')]['id'])});}return _0x1e65b2;});}})['then'](respondWithResult(_0x4664a2,null))['catch'](handleError(_0x4664a2,null));};exports['removeAgents']=function(_0x3f6a0c,_0x13ccd1){return db[_0xffa7('0x34')][_0xffa7('0x56')]({'where':{'id':_0x3f6a0c[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x13ccd1,null))[_0xffa7('0x16')](function(_0x45d20c){if(_0x45d20c){return _0x45d20c[_0xffa7('0x124')](_0x3f6a0c['query'][_0xffa7('0x5f')])[_0xffa7('0x16')](function(){if(_[_0xffa7('0x125')](_0x3f6a0c['query'][_0xffa7('0x5f')])){for(var _0x2f1b69=0x0;_0x2f1b69<_0x3f6a0c['query'][_0xffa7('0x5f')][_0xffa7('0x4f')];_0x2f1b69+=0x1){socket[_0xffa7('0x126')](_0xffa7('0x127'),{'UserId':Number(_0x3f6a0c['query'][_0xffa7('0x5f')][_0x2f1b69]),'ChatWebsiteId':Number(_0x3f6a0c[_0xffa7('0x4c')]['id'])});}}else{socket[_0xffa7('0x126')](_0xffa7('0x127'),{'UserId':Number(_0x3f6a0c[_0xffa7('0x3a')][_0xffa7('0x5f')]),'ChatWebsiteId':Number(_0x3f6a0c[_0xffa7('0x4c')]['id'])});}});}})[_0xffa7('0x16')](respondWithStatusCode(_0x13ccd1,null))['catch'](handleError(_0x13ccd1,null));};exports[_0xffa7('0x128')]=function(_0x39adc5,_0x1bdd26){var _0x3a4915={};var _0x1b0810={};var _0x52196d;var _0x461ca8;return db[_0xffa7('0x34')][_0xffa7('0x62')]({'where':{'id':_0x39adc5[_0xffa7('0x4c')]['id']}})[_0xffa7('0x16')](handleEntityNotFound(_0x1bdd26,null))[_0xffa7('0x16')](function(_0x439bfb){if(_0x439bfb){_0x52196d=_0x439bfb;_0x1b0810[_0xffa7('0x39')]=_[_0xffa7('0x4e')](db[_0xffa7('0x129')][_0xffa7('0x35')]);_0x1b0810[_0xffa7('0x3a')]=_[_0xffa7('0x4e')](_0x39adc5[_0xffa7('0x3a')]);_0x1b0810[_0xffa7('0x3b')]=_[_0xffa7('0x3c')](_0x1b0810['model'],_0x1b0810[_0xffa7('0x3a')]);_0x3a4915[_0xffa7('0x3d')]=_[_0xffa7('0x3c')](_0x1b0810[_0xffa7('0x39')],qs[_0xffa7('0x3e')](_0x39adc5[_0xffa7('0x3a')][_0xffa7('0x3e')]));_0x3a4915['attributes']=_0x3a4915[_0xffa7('0x3d')][_0xffa7('0x4f')]?_0x3a4915[_0xffa7('0x3d')]:_0x1b0810[_0xffa7('0x39')];_0x3a4915[_0xffa7('0x40')]=qs[_0xffa7('0x41')](_0x39adc5[_0xffa7('0x3a')][_0xffa7('0x41')]);_0x3a4915[_0xffa7('0x42')]=qs['filters'](_['pick'](_0x39adc5[_0xffa7('0x3a')],_0x1b0810[_0xffa7('0x3b')]));if(_0x39adc5[_0xffa7('0x3a')]['filter']){_0x3a4915[_0xffa7('0x42')]=_[_0xffa7('0x44')](_0x3a4915[_0xffa7('0x42')],{'$or':_['map'](_0x3a4915[_0xffa7('0x3d')],function(_0x5ecdd6){var _0x9fc5ce={};_0x9fc5ce[_0x5ecdd6]={'$like':'%'+_0x39adc5[_0xffa7('0x3a')][_0xffa7('0x46')]+'%'};return _0x9fc5ce;})});}_0x3a4915=_[_0xffa7('0x44')]({},_0x3a4915,_0x39adc5[_0xffa7('0x47')]);return _0x52196d[_0xffa7('0x128')](_0x3a4915);}})[_0xffa7('0x16')](function(_0x5a4a37){if(_0x5a4a37){_0x461ca8=_0x5a4a37['length'];if(!_0x39adc5[_0xffa7('0x3a')][_0xffa7('0x63')]('nolimit')){_0x3a4915[_0xffa7('0x24')]=qs[_0xffa7('0x24')](_0x39adc5[_0xffa7('0x3a')][_0xffa7('0x24')]);_0x3a4915['offset']=qs[_0xffa7('0x26')](_0x39adc5[_0xffa7('0x3a')]['offset']);}return _0x52196d['getAgents'](_0x3a4915);}})[_0xffa7('0x16')](function(_0x4ada51){if(_0x4ada51){return _0x4ada51?{'count':_0x461ca8,'rows':_0x4ada51}:null;}})[_0xffa7('0x16')](respondWithResult(_0x1bdd26,null))[_0xffa7('0x1f')](handleError(_0x1bdd26,null));};
\ No newline at end of file
index 3b8dd09..60a4d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0207=['remove','hasOwnProperty','hook','exports','../../mysqldb','save','update'];(function(_0x264194,_0x48ee77){var _0x584be0=function(_0x4f9b57){while(--_0x4f9b57){_0x264194['push'](_0x264194['shift']());}};_0x584be0(++_0x48ee77);}(_0x0207,0x162));var _0x7020=function(_0x2b29ab,_0x201845){_0x2b29ab=_0x2b29ab-0x0;var _0x16e64b=_0x0207[_0x2b29ab];return _0x16e64b;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x7020('0x0'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7020('0x1'),'afterUpdate':_0x7020('0x2'),'afterDestroy':_0x7020('0x3')};function emitEvent(_0x15db09){return function(_0x2e62fd,_0x25174b,_0x1066dd){ChatWebsiteEvents['emit'](_0x15db09+':'+_0x2e62fd['id'],_0x2e62fd);ChatWebsiteEvents['emit'](_0x15db09,_0x2e62fd);_0x1066dd(null);};}for(var e in events){if(events[_0x7020('0x4')](e)){var event=events[e];ChatWebsite[_0x7020('0x5')](e,emitEvent(event));}}module[_0x7020('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x689c=['remove','emit','hasOwnProperty','hook','exports','ChatWebsite','setMaxListeners','save','update'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x689c,0x9e));var _0xc689=function(_0x10e18c,_0x103636){_0x10e18c=_0x10e18c-0x0;var _0x52ca75=_0x689c[_0x10e18c];return _0x52ca75;};'use strict';var EventEmitter=require('events');var ChatWebsite=require('../../mysqldb')['db'][_0xc689('0x0')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xc689('0x1')](0x0);var events={'afterCreate':_0xc689('0x2'),'afterUpdate':_0xc689('0x3'),'afterDestroy':_0xc689('0x4')};function emitEvent(_0x28d0cd){return function(_0x4b863b,_0x3d106f,_0x5ce767){ChatWebsiteEvents['emit'](_0x28d0cd+':'+_0x4b863b['id'],_0x4b863b);ChatWebsiteEvents[_0xc689('0x5')](_0x28d0cd,_0x4b863b);_0x5ce767(null);};}for(var e in events){if(events[_0xc689('0x6')](e)){var event=events[e];ChatWebsite[_0xc689('0x7')](e,emitEvent(event));}}module[_0xc689('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
index 41c0667..23b60f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1752=['api','moment','bluebird','request-promise','path','../../config/environment','./chatWebsite.attributes','exports','ChatWebsite','chat_websites','util','../../config/logger'];(function(_0x9b5bb2,_0x5db315){var _0x2e1e92=function(_0x5621c9){while(--_0x5621c9){_0x9b5bb2['push'](_0x9b5bb2['shift']());}};_0x2e1e92(++_0x5db315);}(_0x1752,0x6a));var _0x2175=function(_0x2c758d,_0x35281e){_0x2c758d=_0x2c758d-0x0;var _0xfada3c=_0x1752[_0x2c758d];return _0xfada3c;};'use strict';var _=require('lodash');var util=require(_0x2175('0x0'));var logger=require(_0x2175('0x1'))(_0x2175('0x2'));var moment=require(_0x2175('0x3'));var BPromise=require(_0x2175('0x4'));var rp=require(_0x2175('0x5'));var fs=require('fs');var path=require(_0x2175('0x6'));var rimraf=require('rimraf');var config=require(_0x2175('0x7'));var attributes=require(_0x2175('0x8'));module[_0x2175('0x9')]=function(_0x2d95f6,_0x4a582b){return _0x2d95f6['define'](_0x2175('0xa'),attributes,{'tableName':_0x2175('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb598=['./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x293256,_0x52f08b){var _0x5f3d32=function(_0x4bcca4){while(--_0x4bcca4){_0x293256['push'](_0x293256['shift']());}};_0x5f3d32(++_0x52f08b);}(_0xb598,0x7a));var _0x8b59=function(_0x213bc2,_0xfa9447){_0x213bc2=_0x213bc2-0x0;var _0x12a74f=_0xb598[_0x213bc2];return _0x12a74f;};'use strict';var _=require(_0x8b59('0x0'));var util=require('util');var logger=require(_0x8b59('0x1'))(_0x8b59('0x2'));var moment=require(_0x8b59('0x3'));var BPromise=require(_0x8b59('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8b59('0x5'));var rimraf=require(_0x8b59('0x6'));var config=require(_0x8b59('0x7'));var attributes=require(_0x8b59('0x8'));module[_0x8b59('0x9')]=function(_0x496aab,_0xf3b887){return _0x496aab[_0x8b59('0xa')](_0x8b59('0xb'),attributes,{'tableName':_0x8b59('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 14ecbad..447e1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e7a=['../../config/logger','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./chatWebsite.socket','register','request','info','ChatWebsite,\x20%s,\x20%s','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x49591f,_0x354625){var _0x55185f=function(_0x28a88b){while(--_0x28a88b){_0x49591f['push'](_0x49591f['shift']());}};_0x55185f(++_0x354625);}(_0x0e7a,0x7d));var _0xa0e7=function(_0x54f695,_0x17e578){_0x54f695=_0x54f695-0x0;var _0x5d8f73=_0x0e7a[_0x54f695];return _0x5d8f73;};'use strict';var _=require(_0xa0e7('0x0'));var util=require('util');var moment=require(_0xa0e7('0x1'));var BPromise=require(_0xa0e7('0x2'));var rs=require(_0xa0e7('0x3'));var fs=require('fs');var Redis=require(_0xa0e7('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa0e7('0x5'))('rpc');var config=require(_0xa0e7('0x6'));var jayson=require(_0xa0e7('0x7'));var client=jayson[_0xa0e7('0x8')]['http']({'port':0x232a});config['redis']=_[_0xa0e7('0x9')](config['redis'],{'host':_0xa0e7('0xa'),'port':0x18eb});var socket=require(_0xa0e7('0xb'))(new Redis(config[_0xa0e7('0xc')]));require(_0xa0e7('0xd'))[_0xa0e7('0xe')](socket);function respondWithRpcPromise(_0x222d4f,_0x5070ae,_0xfb7beb){return new BPromise(function(_0x551320,_0x5b010f){return client[_0xa0e7('0xf')](_0x222d4f,_0xfb7beb)['then'](function(_0xd789ab){logger[_0xa0e7('0x10')](_0xa0e7('0x11'),_0x5070ae,'request\x20sent');logger['debug'](_0xa0e7('0x12'),_0x5070ae,_0xa0e7('0x13'),JSON[_0xa0e7('0x14')](_0xd789ab));if(_0xd789ab[_0xa0e7('0x15')]){if(_0xd789ab[_0xa0e7('0x15')][_0xa0e7('0x16')]===0x1f4){logger['error'](_0xa0e7('0x11'),_0x5070ae,_0xd789ab['error']['message']);return _0x5b010f(_0xd789ab['error']['message']);}logger['error'](_0xa0e7('0x11'),_0x5070ae,_0xd789ab[_0xa0e7('0x15')]['message']);return _0x551320(_0xd789ab['error'][_0xa0e7('0x17')]);}else{logger[_0xa0e7('0x10')](_0xa0e7('0x11'),_0x5070ae,_0xa0e7('0x13'));_0x551320(_0xd789ab[_0xa0e7('0x18')][_0xa0e7('0x17')]);}})[_0xa0e7('0x19')](function(_0x2774a7){logger[_0xa0e7('0x15')](_0xa0e7('0x11'),_0x5070ae,_0x2774a7);_0x5b010f(_0x2774a7);});});}
\ No newline at end of file
+var _0xd59d=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x3c59fc,_0x10dbd2){var _0x2b78d4=function(_0x5f161a){while(--_0x5f161a){_0x3c59fc['push'](_0x3c59fc['shift']());}};_0x2b78d4(++_0x10dbd2);}(_0xd59d,0x1c2));var _0xdd59=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xd59d[_0x31e29a];return _0x32d892;};'use strict';var _=require(_0xdd59('0x0'));var util=require(_0xdd59('0x1'));var moment=require(_0xdd59('0x2'));var BPromise=require(_0xdd59('0x3'));var rs=require(_0xdd59('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdd59('0x5'))['db'];var utils=require(_0xdd59('0x6'));var logger=require('../../config/logger')(_0xdd59('0x7'));var config=require(_0xdd59('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xdd59('0x9')]=_['defaults'](config['redis'],{'host':_0xdd59('0xa'),'port':0x18eb});var socket=require(_0xdd59('0xb'))(new Redis(config[_0xdd59('0x9')]));require(_0xdd59('0xc'))[_0xdd59('0xd')](socket);function respondWithRpcPromise(_0x28b8f2,_0x1b0cdc,_0x24fd20){return new BPromise(function(_0xd1da78,_0x2f2608){return client[_0xdd59('0xe')](_0x28b8f2,_0x24fd20)[_0xdd59('0xf')](function(_0xae6d83){logger[_0xdd59('0x10')](_0xdd59('0x11'),_0x1b0cdc,_0xdd59('0x12'));logger[_0xdd59('0x13')](_0xdd59('0x14'),_0x1b0cdc,_0xdd59('0x12'),JSON['stringify'](_0xae6d83));if(_0xae6d83[_0xdd59('0x15')]){if(_0xae6d83[_0xdd59('0x15')]['code']===0x1f4){logger[_0xdd59('0x15')](_0xdd59('0x11'),_0x1b0cdc,_0xae6d83['error'][_0xdd59('0x16')]);return _0x2f2608(_0xae6d83['error'][_0xdd59('0x16')]);}logger[_0xdd59('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x1b0cdc,_0xae6d83[_0xdd59('0x15')][_0xdd59('0x16')]);return _0xd1da78(_0xae6d83[_0xdd59('0x15')][_0xdd59('0x16')]);}else{logger[_0xdd59('0x10')](_0xdd59('0x11'),_0x1b0cdc,_0xdd59('0x12'));_0xd1da78(_0xae6d83[_0xdd59('0x17')][_0xdd59('0x16')]);}})[_0xdd59('0x18')](function(_0x4d416b){logger[_0xdd59('0x15')](_0xdd59('0x11'),_0x1b0cdc,_0x4d416b);_0x2f2608(_0x4d416b);});});}
\ No newline at end of file
index 4da1e19..552dada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94fb=['length','chatWebsite:','./chatWebsite.events','save','remove','update','emit'];(function(_0x4e1269,_0x197395){var _0x293b6a=function(_0x5ac937){while(--_0x5ac937){_0x4e1269['push'](_0x4e1269['shift']());}};_0x293b6a(++_0x197395);}(_0x94fb,0xcd));var _0xb94f=function(_0x5471ec,_0x1ce81a){_0x5471ec=_0x5471ec-0x0;var _0x121d4c=_0x94fb[_0x5471ec];return _0x121d4c;};'use strict';var ChatWebsiteEvents=require(_0xb94f('0x0'));var events=[_0xb94f('0x1'),_0xb94f('0x2'),_0xb94f('0x3')];function createListener(_0x526cc2,_0x211ef3){return function(_0x45fe3a){_0x211ef3[_0xb94f('0x4')](_0x526cc2,_0x45fe3a);};}function removeListener(_0x5d9a8b,_0x36c985){return function(){ChatWebsiteEvents['removeListener'](_0x5d9a8b,_0x36c985);};}exports['register']=function(_0x87d949){for(var _0x3735ed=0x0,_0x5e4035=events[_0xb94f('0x5')];_0x3735ed<_0x5e4035;_0x3735ed++){var _0x56036c=events[_0x3735ed];var _0xbe4b3c=createListener(_0xb94f('0x6')+_0x56036c,_0x87d949);ChatWebsiteEvents['on'](_0x56036c,_0xbe4b3c);}};
\ No newline at end of file
+var _0xde17=['chatWebsite:','./chatWebsite.events','save','remove','emit','removeListener'];(function(_0xd37620,_0x5cbc85){var _0xc56870=function(_0x4e5904){while(--_0x4e5904){_0xd37620['push'](_0xd37620['shift']());}};_0xc56870(++_0x5cbc85);}(_0xde17,0x7f));var _0x7de1=function(_0x8237a1,_0x3599d0){_0x8237a1=_0x8237a1-0x0;var _0x3e933a=_0xde17[_0x8237a1];return _0x3e933a;};'use strict';var ChatWebsiteEvents=require(_0x7de1('0x0'));var events=[_0x7de1('0x1'),_0x7de1('0x2'),'update'];function createListener(_0x53401e,_0x1185a1){return function(_0x56bcec){_0x1185a1[_0x7de1('0x3')](_0x53401e,_0x56bcec);};}function removeListener(_0x3ffb68,_0x46656e){return function(){ChatWebsiteEvents[_0x7de1('0x4')](_0x3ffb68,_0x46656e);};}exports['register']=function(_0x224cc5){for(var _0x57e591=0x0,_0x234799=events['length'];_0x57e591<_0x234799;_0x57e591++){var _0x4f8d13=events[_0x57e591];var _0x3bfb3a=createListener(_0x7de1('0x5')+_0x4f8d13,_0x224cc5);ChatWebsiteEvents['on'](_0x4f8d13,_0x3bfb3a);}};
\ No newline at end of file
index ed33491..1174524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfdd=['addSystemAvatar','/:id/notify','notify','attachments','offline-chat','replace','extname','any','offline','addAgents','put','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','getCustomerAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','/:id/fields','getFields','/:id/offline_messages','/:id/users','create','post','/:id/dispositions','addDisposition','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','addLogo','server/files/images/avatars/','file','addAvatar','/:id/customer_avatar'];(function(_0x387c0d,_0x36db47){var _0x20eaf2=function(_0x40bcfb){while(--_0x40bcfb){_0x387c0d['push'](_0x387c0d['shift']());}};_0x20eaf2(++_0x36db47);}(_0xbfdd,0x1a9));var _0xdbfd=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xbfdd[_0x297fd3];return _0x2af381;};'use strict';var multer=require(_0xdbfd('0x0'));var util=require(_0xdbfd('0x1'));var path=require('path');var timeout=require(_0xdbfd('0x2'));var express=require(_0xdbfd('0x3'));var router=express[_0xdbfd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xdbfd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdbfd('0x6'));var controller=require('./chatWebsite.controller');router[_0xdbfd('0x7')]('/',auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x9')]);router[_0xdbfd('0x7')](_0xdbfd('0xa'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0xb')]);router[_0xdbfd('0x7')](_0xdbfd('0xc'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0xd')]);router['get']('/:id/dispositions',auth[_0xdbfd('0x8')](),controller[_0xdbfd('0xe')]);router['get'](_0xdbfd('0xf'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x10')]);router[_0xdbfd('0x7')](_0xdbfd('0x11'),controller[_0xdbfd('0x12')]);router[_0xdbfd('0x7')](_0xdbfd('0x13'),controller[_0xdbfd('0x14')]);router[_0xdbfd('0x7')]('/:id/customer_avatar',controller[_0xdbfd('0x15')]);router['get']('/:id/system_avatar',controller['getSystemAvatar']);router[_0xdbfd('0x7')](_0xdbfd('0x16'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x17')]);router[_0xdbfd('0x7')](_0xdbfd('0x18'),controller[_0xdbfd('0x19')]);router[_0xdbfd('0x7')](_0xdbfd('0x1a'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x1b')]);router['get'](_0xdbfd('0x1c'),auth[_0xdbfd('0x8')](),controller['getProactiveActions']);router[_0xdbfd('0x7')](_0xdbfd('0x1d'),controller[_0xdbfd('0x1e')]);router['get'](_0xdbfd('0x1f'),auth[_0xdbfd('0x8')](),controller['getOfflineMessages']);router['get'](_0xdbfd('0x20'),auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x21')]);router[_0xdbfd('0x22')](_0xdbfd('0x23'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x24')]);router[_0xdbfd('0x22')](_0xdbfd('0xf'),auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer[_0xdbfd('0x25')]({'destination':function(_0xc0c5a4,_0x59203e,_0x1221f3){_0x1221f3(null,path[_0xdbfd('0x26')](config[_0xdbfd('0x27')],_0xdbfd('0x28')));},'filename':function(_0x468930,_0x519042,_0xd44118){_0xd44118(null,util[_0xdbfd('0x29')](_0xdbfd('0x2a'),Date[_0xdbfd('0x2b')](),_0x519042[_0xdbfd('0x2c')]));}})});router[_0xdbfd('0x22')](_0xdbfd('0x11'),upload[_0xdbfd('0x2d')]('file'),controller[_0xdbfd('0x2e')]);var upload=multer({'storage':multer[_0xdbfd('0x25')]({'destination':function(_0x1eb8b8,_0x399e01,_0x5ea6dd){_0x5ea6dd(null,path[_0xdbfd('0x26')](config[_0xdbfd('0x27')],_0xdbfd('0x2f')));},'filename':function(_0x30700b,_0x27f135,_0x5b6d78){_0x5b6d78(null,util['format'](_0xdbfd('0x2a'),Date[_0xdbfd('0x2b')](),_0x27f135['originalname']));}})});router[_0xdbfd('0x22')]('/:id/avatar',upload[_0xdbfd('0x2d')](_0xdbfd('0x30')),controller[_0xdbfd('0x31')]);var upload=multer({'storage':multer[_0xdbfd('0x25')]({'destination':function(_0x5270ea,_0x35fcf1,_0x41f5b0){_0x41f5b0(null,path[_0xdbfd('0x26')](config[_0xdbfd('0x27')],'server/files/images/avatars/'));},'filename':function(_0x3605f8,_0x2492ba,_0x140e05){_0x140e05(null,util[_0xdbfd('0x29')](_0xdbfd('0x2a'),Date['now'](),_0x2492ba[_0xdbfd('0x2c')]));}})});router[_0xdbfd('0x22')](_0xdbfd('0x32'),upload[_0xdbfd('0x2d')]('file'),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xdbfd('0x25')]({'destination':function(_0x1e803d,_0x14e5de,_0x5f2e86){_0x5f2e86(null,path['join'](config[_0xdbfd('0x27')],'server/files/images/avatars/'));},'filename':function(_0x3d7e5f,_0x3c7aec,_0x15de53){_0x15de53(null,util['format'](_0xdbfd('0x2a'),Date[_0xdbfd('0x2b')](),_0x3c7aec['originalname']));}})});router[_0xdbfd('0x22')]('/:id/system_avatar',upload['single'](_0xdbfd('0x30')),controller[_0xdbfd('0x33')]);router['post'](_0xdbfd('0x34'),controller[_0xdbfd('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0xdbfd('0x25')]({'destination':function(_0x18e542,_0x346af5,_0x5da6ef){const _0x3321fc=path[_0xdbfd('0x26')](config[_0xdbfd('0x27')],'server/files',_0xdbfd('0x36'),_0xdbfd('0x37'));fs_extra['ensureDir'](_0x3321fc,function(){_0x5da6ef(null,_0x3321fc);});},'filename':function(_0x168a42,_0x5557ff,_0x140df0){const _0x446448=_0x5557ff['originalname'][_0xdbfd('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x13f700=path[_0xdbfd('0x39')](_0x446448);const _0xa56474=Date['now']()+'-'+_0x446448['replace'](_0x13f700,'')+_0x13f700;_0x140df0(null,_0xa56474);}})});router['post']('/:id/offline',offlineUploadMulter[_0xdbfd('0x3a')](),controller[_0xdbfd('0x3b')]);router[_0xdbfd('0x22')](_0xdbfd('0x16'),auth['isAuthenticated'](),controller['addInteraction']);router[_0xdbfd('0x22')]('/:id/applications',auth[_0xdbfd('0x8')](),controller['addApplications']);router['post'](_0xdbfd('0x1c'),auth[_0xdbfd('0x8')](),controller['addProactiveActions']);router[_0xdbfd('0x22')](_0xdbfd('0x20'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x3c')]);router[_0xdbfd('0x3d')](_0xdbfd('0xc'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x3e')]);router[_0xdbfd('0x3f')](_0xdbfd('0xc'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x40')]);router['delete'](_0xdbfd('0x23'),auth[_0xdbfd('0x8')](),controller['removeDispositions']);router['delete'](_0xdbfd('0xf'),auth['isAuthenticated'](),controller[_0xdbfd('0x41')]);router['delete'](_0xdbfd('0x20'),auth[_0xdbfd('0x8')](),controller[_0xdbfd('0x42')]);module[_0xdbfd('0x43')]=router;
\ No newline at end of file
+var _0x5779=['server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','offline','/:id/interactions','addInteraction','addApplications','addAgents','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','/:id/canned_answers','getAnswers','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getInteractions','/:id/snippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','post','create','addDisposition','addAnswer','diskStorage','join','root','format','%s-%s','now','originalname','single','addLogo','server/files/images/avatars/','addAvatar','/:id/system_avatar','file','addSystemAvatar','/:id/notify','notify'];(function(_0x7a6c3f,_0x287200){var _0x4bae05=function(_0x4b35ad){while(--_0x4b35ad){_0x7a6c3f['push'](_0x7a6c3f['shift']());}};_0x4bae05(++_0x287200);}(_0x5779,0x1d6));var _0x9577=function(_0x12c0b3,_0x44ed4d){_0x12c0b3=_0x12c0b3-0x0;var _0x3dae4f=_0x5779[_0x12c0b3];return _0x3dae4f;};'use strict';var multer=require(_0x9577('0x0'));var util=require(_0x9577('0x1'));var path=require(_0x9577('0x2'));var timeout=require(_0x9577('0x3'));var express=require(_0x9577('0x4'));var router=express[_0x9577('0x5')]();var fs_extra=require(_0x9577('0x6'));var auth=require(_0x9577('0x7'));var interaction=require(_0x9577('0x8'));var config=require(_0x9577('0x9'));var controller=require(_0x9577('0xa'));router[_0x9577('0xb')]('/',auth[_0x9577('0xc')](),controller[_0x9577('0xd')]);router[_0x9577('0xb')](_0x9577('0xe'),auth[_0x9577('0xc')](),controller[_0x9577('0xf')]);router[_0x9577('0xb')](_0x9577('0x10'),auth[_0x9577('0xc')](),controller['show']);router['get'](_0x9577('0x11'),auth[_0x9577('0xc')](),controller['getDispositions']);router['get'](_0x9577('0x12'),auth[_0x9577('0xc')](),controller[_0x9577('0x13')]);router['get']('/:id/logo',controller[_0x9577('0x14')]);router[_0x9577('0xb')](_0x9577('0x15'),controller[_0x9577('0x16')]);router[_0x9577('0xb')](_0x9577('0x17'),controller[_0x9577('0x18')]);router[_0x9577('0xb')]('/:id/system_avatar',controller['getSystemAvatar']);router['get']('/:id/interactions',auth[_0x9577('0xc')](),controller[_0x9577('0x19')]);router[_0x9577('0xb')](_0x9577('0x1a'),controller['getSnippet']);router[_0x9577('0xb')](_0x9577('0x1b'),auth['isAuthenticated'](),controller[_0x9577('0x1c')]);router[_0x9577('0xb')](_0x9577('0x1d'),auth['isAuthenticated'](),controller[_0x9577('0x1e')]);router[_0x9577('0xb')](_0x9577('0x1f'),controller[_0x9577('0x20')]);router[_0x9577('0xb')](_0x9577('0x21'),auth[_0x9577('0xc')](),controller['getOfflineMessages']);router[_0x9577('0xb')](_0x9577('0x22'),auth[_0x9577('0xc')](),controller['getAgents']);router[_0x9577('0x23')]('/',auth[_0x9577('0xc')](),controller[_0x9577('0x24')]);router['post'](_0x9577('0x11'),auth['isAuthenticated'](),controller[_0x9577('0x25')]);router[_0x9577('0x23')](_0x9577('0x12'),auth[_0x9577('0xc')](),controller[_0x9577('0x26')]);var upload=multer({'storage':multer[_0x9577('0x27')]({'destination':function(_0x3e2036,_0x327163,_0x5756c6){_0x5756c6(null,path[_0x9577('0x28')](config[_0x9577('0x29')],'server/files/images/logos/'));},'filename':function(_0x2347f5,_0x2aaa04,_0x579977){_0x579977(null,util[_0x9577('0x2a')](_0x9577('0x2b'),Date[_0x9577('0x2c')](),_0x2aaa04[_0x9577('0x2d')]));}})});router[_0x9577('0x23')]('/:id/logo',upload[_0x9577('0x2e')]('file'),controller[_0x9577('0x2f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x192dc0,_0x5b156b,_0x551043){_0x551043(null,path['join'](config[_0x9577('0x29')],_0x9577('0x30')));},'filename':function(_0x286a0e,_0x495ac4,_0x5754a3){_0x5754a3(null,util[_0x9577('0x2a')](_0x9577('0x2b'),Date[_0x9577('0x2c')](),_0x495ac4['originalname']));}})});router[_0x9577('0x23')](_0x9577('0x15'),upload[_0x9577('0x2e')]('file'),controller[_0x9577('0x31')]);var upload=multer({'storage':multer[_0x9577('0x27')]({'destination':function(_0x55f12d,_0x409689,_0x1b8b25){_0x1b8b25(null,path['join'](config[_0x9577('0x29')],_0x9577('0x30')));},'filename':function(_0x7097b6,_0x5cfdba,_0x4d32d1){_0x4d32d1(null,util[_0x9577('0x2a')](_0x9577('0x2b'),Date['now'](),_0x5cfdba[_0x9577('0x2d')]));}})});router[_0x9577('0x23')](_0x9577('0x17'),upload[_0x9577('0x2e')]('file'),controller['addCustomerAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x55641d,_0xfee9ec,_0x134afa){_0x134afa(null,path[_0x9577('0x28')](config[_0x9577('0x29')],_0x9577('0x30')));},'filename':function(_0x2ee6e3,_0x5b1cfa,_0x36dabf){_0x36dabf(null,util[_0x9577('0x2a')](_0x9577('0x2b'),Date[_0x9577('0x2c')](),_0x5b1cfa[_0x9577('0x2d')]));}})});router[_0x9577('0x23')](_0x9577('0x32'),upload[_0x9577('0x2e')](_0x9577('0x33')),controller[_0x9577('0x34')]);router[_0x9577('0x23')](_0x9577('0x35'),controller[_0x9577('0x36')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x5ed47a,_0x2e72c9,_0x5e80ed){const _0x4121c3=path['join'](config[_0x9577('0x29')],_0x9577('0x37'),_0x9577('0x38'),_0x9577('0x39'));fs_extra[_0x9577('0x3a')](_0x4121c3,function(){_0x5e80ed(null,_0x4121c3);});},'filename':function(_0x18b83d,_0x5ba5ae,_0x4bb376){const _0x3bee68=_0x5ba5ae[_0x9577('0x2d')][_0x9577('0x3b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x308fff=path[_0x9577('0x3c')](_0x3bee68);const _0x5f08c2=Date[_0x9577('0x2c')]()+'-'+_0x3bee68['replace'](_0x308fff,'')+_0x308fff;_0x4bb376(null,_0x5f08c2);}})});router['post'](_0x9577('0x3d'),offlineUploadMulter[_0x9577('0x3e')](),controller[_0x9577('0x3f')]);router[_0x9577('0x23')](_0x9577('0x40'),auth['isAuthenticated'](),controller[_0x9577('0x41')]);router[_0x9577('0x23')](_0x9577('0x1b'),auth['isAuthenticated'](),controller[_0x9577('0x42')]);router[_0x9577('0x23')](_0x9577('0x1d'),auth[_0x9577('0xc')](),controller['addProactiveActions']);router[_0x9577('0x23')](_0x9577('0x22'),auth[_0x9577('0xc')](),controller[_0x9577('0x43')]);router[_0x9577('0x44')](_0x9577('0x10'),auth[_0x9577('0xc')](),controller[_0x9577('0x45')]);router['delete'](_0x9577('0x10'),auth[_0x9577('0xc')](),controller['destroy']);router[_0x9577('0x46')](_0x9577('0x11'),auth['isAuthenticated'](),controller[_0x9577('0x47')]);router[_0x9577('0x46')](_0x9577('0x12'),auth[_0x9577('0xc')](),controller[_0x9577('0x48')]);router[_0x9577('0x46')](_0x9577('0x22'),auth['isAuthenticated'](),controller[_0x9577('0x49')]);module[_0x9577('0x4a')]=router;
\ No newline at end of file
index fc43364..f23d14b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17b8=['/client-logs','use','isAuthenticated','exports','beaver-logger/server','../components/auth/service','../config/environment','Router','env','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint'];(function(_0x5514db,_0x217111){var _0xac5371=function(_0x9c4766){while(--_0x9c4766){_0x5514db['push'](_0x5514db['shift']());}};_0xac5371(++_0x217111);}(_0x17b8,0xc7));var _0x817b=function(_0x1f2734,_0x529bad){_0x1f2734=_0x1f2734-0x0;var _0x17b385=_0x17b8[_0x1f2734];return _0x17b385;};var beaverLogger=require(_0x817b('0x0'));var express=require('express');var auth=require(_0x817b('0x1'));var config=require(_0x817b('0x2'));var router=express[_0x817b('0x3')]();var isProduction=config[_0x817b('0x4')]==='production'||![];function clientSideLogs(_0x511985,_0x5c2eec,_0x5175f1){var _0x2807b8=_0x511985['app'][_0x817b('0x5')](_0x817b('0x6'));if(!_0x2807b8){throw new Error(_0x817b('0x7'));}return beaverLogger[_0x817b('0x8')]({'uri':_0x817b('0x9'),'logger':_0x2807b8,'enableCors':!isProduction})(_0x511985,_0x5c2eec,_0x5175f1);}router[_0x817b('0xa')](auth[_0x817b('0xb')](),clientSideLogs);module[_0x817b('0xc')]=router;
\ No newline at end of file
+var _0x71a1=['app','get','client-side-logger','expressEndpoint','/client-logs','exports','beaver-logger/server','express','../config/environment'];(function(_0x446a6c,_0x2ba430){var _0x3d279e=function(_0x328540){while(--_0x328540){_0x446a6c['push'](_0x446a6c['shift']());}};_0x3d279e(++_0x2ba430);}(_0x71a1,0x1da));var _0x171a=function(_0x58217a,_0x4aa596){_0x58217a=_0x58217a-0x0;var _0x3b12d4=_0x71a1[_0x58217a];return _0x3b12d4;};var beaverLogger=require(_0x171a('0x0'));var express=require(_0x171a('0x1'));var auth=require('../components/auth/service');var config=require(_0x171a('0x2'));var router=express['Router']();var isProduction=config['env']==='production'||![];function clientSideLogs(_0x46c57e,_0x41e548,_0xdf04ba){var _0x215b50=_0x46c57e[_0x171a('0x3')][_0x171a('0x4')](_0x171a('0x5'));if(!_0x215b50){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger[_0x171a('0x6')]({'uri':_0x171a('0x7'),'logger':_0x215b50,'enableCors':!isProduction})(_0x46c57e,_0x41e548,_0xdf04ba);}router['use'](auth['isAuthenticated'](),clientSideLogs);module[_0x171a('0x8')]=router;
\ No newline at end of file
index 5b8783c..2d9dd99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96ce=['MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','AmazonAWS','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_id'];(function(_0x4480b9,_0x5c2949){var _0x3f0f02=function(_0x43502f){while(--_0x43502f){_0x4480b9['push'](_0x4480b9['shift']());}};_0x3f0f02(++_0x5c2949);}(_0x96ce,0x123));var _0xe96c=function(_0x81fc31,_0x151260){_0x81fc31=_0x81fc31-0x0;var _0x3c1234=_0x96ce[_0x81fc31];return _0x3c1234;};'use strict';var Sequelize=require(_0xe96c('0x0'));module[_0xe96c('0x1')]={'name':{'type':Sequelize[_0xe96c('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xe96c('0x3')](_0xe96c('0x4'),'Google','MicrosoftAzure'),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xe96c('0x3')](_0xe96c('0x5'),_0xe96c('0x6'))},'data1':{'type':Sequelize[_0xe96c('0x2')],'comment':_0xe96c('0x7')},'data2':{'type':Sequelize[_0xe96c('0x2')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xe96c('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_secret'},'data4':{'type':Sequelize['STRING'],'comment':_0xe96c('0x8')},'data5':{'type':Sequelize[_0xe96c('0x9')],'comment':_0xe96c('0xa')},'data6':{'type':Sequelize[_0xe96c('0x9')],'comment':_0xe96c('0xb')},'data7':{'type':Sequelize[_0xe96c('0x9')],'comment':_0xe96c('0xc')}};
\ No newline at end of file
+var _0x2c49=['MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','STRING','MicrosoftAzure','ENUM','Dynamics365','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','TEXT','MicrosoftAzure\x20=>\x20access_token'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x2c49,0x141));var _0x92c4=function(_0x296923,_0x4adaed){_0x296923=_0x296923-0x0;var _0x29af70=_0x2c49[_0x296923];return _0x29af70;};'use strict';var Sequelize=require(_0x92c4('0x0'));module['exports']={'name':{'type':Sequelize[_0x92c4('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS','Google',_0x92c4('0x2')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x92c4('0x3')]('Outlook365',_0x92c4('0x4'))},'data1':{'type':Sequelize[_0x92c4('0x1')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0x92c4('0x1')],'comment':_0x92c4('0x5')},'data3':{'type':Sequelize[_0x92c4('0x1')],'comment':_0x92c4('0x6')},'data4':{'type':Sequelize[_0x92c4('0x1')],'comment':'MicrosoftAzure\x20=>\x20redirect_uri'},'data5':{'type':Sequelize[_0x92c4('0x7')],'comment':_0x92c4('0x8')},'data6':{'type':Sequelize[_0x92c4('0x7')],'comment':_0x92c4('0x9')},'data7':{'type':Sequelize[_0x92c4('0x7')],'comment':_0x92c4('0xa')}};
\ No newline at end of file
index 3ae24a4..99b4296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4b8=['offset','limit','undefined','set','Content-Range','update','then','destroy','end','error','stack','name','send','padEnd','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','CloudProvider','count','includeAll','findAll','service','decryptString','data3','params','options','find','MicrosoftAzure','create','Name\x20parameter\x20not\x20specified','body','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','catch','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','startRefreshInterval','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','../../components/parsers/qs','../../config/environment','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','socket.io-emitter','sendStatus','status','json'];(function(_0x10bd94,_0x46b509){var _0x364677=function(_0x417683){while(--_0x417683){_0x10bd94['push'](_0x10bd94['shift']());}};_0x364677(++_0x46b509);}(_0xe4b8,0x110));var _0x8e4b=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xe4b8[_0x243b59];return _0x3e1676;};'use strict';var _=require(_0x8e4b('0x0'));var Redis=require('ioredis');var qs=require(_0x8e4b('0x1'));var encryptor=require('../../components/encryptor');var config=require(_0x8e4b('0x2'));var logger=require('../../config/logger')(_0x8e4b('0x3'));var db=require(_0x8e4b('0x4'))['db'];var oauth=require(_0x8e4b('0x5'));config[_0x8e4b('0x6')]=_[_0x8e4b('0x7')](config[_0x8e4b('0x6')],{'host':_0x8e4b('0x8'),'port':0x18eb});var socket=require(_0x8e4b('0x9'))(new Redis(config[_0x8e4b('0x6')]));var redis=new Redis(config[_0x8e4b('0x6')]);function respondWithStatusCode(_0x378453,_0x4af830){_0x4af830=_0x4af830||0xcc;return function(_0x3ac3c8){if(_0x3ac3c8){return _0x378453[_0x8e4b('0xa')](_0x4af830);}return _0x378453[_0x8e4b('0xb')](_0x4af830)['end']();};}function respondWithResult(_0x7982ef,_0x122f08){_0x122f08=_0x122f08||0xc8;return function(_0x336686){if(_0x336686){return _0x7982ef[_0x8e4b('0xb')](_0x122f08)[_0x8e4b('0xc')](_0x336686);}};}function respondWithFilteredResult(_0x512211,_0x3595c2){return function(_0x527c85){if(_0x527c85){var _0x441058=typeof _0x3595c2[_0x8e4b('0xd')]==='undefined'&&typeof _0x3595c2[_0x8e4b('0xe')]===_0x8e4b('0xf');var _0x3dfdf9=_0x527c85['count'];var _0x52d0c1=_0x441058?0x0:_0x3595c2[_0x8e4b('0xd')];var _0x530152=_0x441058?_0x527c85['count']:_0x3595c2['offset']+_0x3595c2[_0x8e4b('0xe')];var _0x22394a;if(_0x530152>=_0x3dfdf9){_0x530152=_0x3dfdf9;_0x22394a=0xc8;}else{_0x22394a=0xce;}_0x512211[_0x8e4b('0xb')](_0x22394a);return _0x512211[_0x8e4b('0x10')](_0x8e4b('0x11'),_0x52d0c1+'-'+_0x530152+'/'+_0x3dfdf9)[_0x8e4b('0xc')](_0x527c85);}return null;};}function saveUpdates(_0x5a946b){return function(_0x494483){if(_0x494483){return _0x494483[_0x8e4b('0x12')](_0x5a946b)[_0x8e4b('0x13')](function(_0x56c158){return _0x56c158;});}return null;};}function removeEntity(_0x36978d){return function(_0x4ecafa){if(_0x4ecafa){return _0x4ecafa[_0x8e4b('0x14')]()[_0x8e4b('0x13')](function(){_0x36978d[_0x8e4b('0xb')](0xcc)[_0x8e4b('0x15')]();});}};}function handleEntityNotFound(_0x18557b){return function(_0x46756e){if(!_0x46756e){_0x18557b[_0x8e4b('0xa')](0x194);}return _0x46756e;};}function handleError(_0x3f5b1e,_0x1f83ca){_0x1f83ca=_0x1f83ca||0x1f4;return function(_0x5cbf2c){logger[_0x8e4b('0x16')](_0x5cbf2c[_0x8e4b('0x17')]);if(_0x5cbf2c['name']){delete _0x5cbf2c[_0x8e4b('0x18')];}_0x3f5b1e[_0x8e4b('0xb')](_0x1f83ca)[_0x8e4b('0x19')](_0x5cbf2c);};}function maskClientSecret(_0x18183c){return _[_0x8e4b('0x1a')](_0x18183c['slice'](0x0,0x3),0x14,'*');}exports['index']=function(_0x3b5e49,_0x1ab62a){var _0x5c27ec={},_0x2ef57f={},_0x58d36e={'count':0x0,'rows':[]};var _0x423b30=_[_0x8e4b('0x1b')](db['CloudProvider'][_0x8e4b('0x1c')],function(_0x697732){return{'name':_0x697732[_0x8e4b('0x1d')],'type':_0x697732[_0x8e4b('0x1e')][_0x8e4b('0x1f')]};});_0x2ef57f[_0x8e4b('0x20')]=_[_0x8e4b('0x1b')](_0x423b30,_0x8e4b('0x18'));_0x2ef57f[_0x8e4b('0x21')]=_[_0x8e4b('0x22')](_0x3b5e49[_0x8e4b('0x21')]);_0x2ef57f[_0x8e4b('0x23')]=_[_0x8e4b('0x24')](_0x2ef57f[_0x8e4b('0x20')],_0x2ef57f[_0x8e4b('0x21')]);_0x5c27ec[_0x8e4b('0x25')]=_[_0x8e4b('0x24')](_0x2ef57f['model'],qs['fields'](_0x3b5e49[_0x8e4b('0x21')][_0x8e4b('0x26')]));_0x5c27ec[_0x8e4b('0x25')]=_0x5c27ec[_0x8e4b('0x25')][_0x8e4b('0x27')]?_0x5c27ec[_0x8e4b('0x25')]:_0x2ef57f[_0x8e4b('0x20')];if(!_0x3b5e49[_0x8e4b('0x21')][_0x8e4b('0x28')](_0x8e4b('0x29'))){_0x5c27ec[_0x8e4b('0xe')]=qs[_0x8e4b('0xe')](_0x3b5e49['query'][_0x8e4b('0xe')]);_0x5c27ec[_0x8e4b('0xd')]=qs[_0x8e4b('0xd')](_0x3b5e49[_0x8e4b('0x21')][_0x8e4b('0xd')]);}_0x5c27ec[_0x8e4b('0x2a')]=qs[_0x8e4b('0x2b')](_0x3b5e49[_0x8e4b('0x21')]['sort']);_0x5c27ec[_0x8e4b('0x2c')]=qs['filters'](_[_0x8e4b('0x2d')](_0x3b5e49[_0x8e4b('0x21')],_0x2ef57f[_0x8e4b('0x23')]),_0x423b30);if(_0x3b5e49[_0x8e4b('0x21')][_0x8e4b('0x2e')]){_0x5c27ec[_0x8e4b('0x2c')]=_[_0x8e4b('0x2f')](_0x5c27ec[_0x8e4b('0x2c')],{'$or':_[_0x8e4b('0x1b')](_0x423b30,function(_0x115d95){if(_0x115d95['type']!=='VIRTUAL'){var _0x192681={};_0x192681[_0x115d95[_0x8e4b('0x18')]]={'$like':'%'+_0x3b5e49[_0x8e4b('0x21')]['filter']+'%'};return _0x192681;}})});}_0x5c27ec=_[_0x8e4b('0x2f')]({},_0x5c27ec,_0x3b5e49['options']);var _0x1382f2={'where':_0x5c27ec[_0x8e4b('0x2c')]};return db[_0x8e4b('0x30')][_0x8e4b('0x31')](_0x1382f2)[_0x8e4b('0x13')](function(_0x398e95){_0x58d36e[_0x8e4b('0x31')]=_0x398e95;if(_0x3b5e49[_0x8e4b('0x21')][_0x8e4b('0x32')]){_0x5c27ec['include']=[{'all':!![]}];}return db[_0x8e4b('0x30')][_0x8e4b('0x33')](_0x5c27ec);})[_0x8e4b('0x13')](function(_0xc990bb){_0x58d36e['rows']=_[_0x8e4b('0x1b')](_0xc990bb,function(_0x4ff5ab){if(_0x4ff5ab[_0x8e4b('0x34')]==='MicrosoftAzure'){var _0x27c365=encryptor[_0x8e4b('0x35')](_0x4ff5ab['data3']);_0x4ff5ab[_0x8e4b('0x36')]=maskClientSecret(_0x27c365);}return _0x4ff5ab;});return _0x58d36e;})[_0x8e4b('0x13')](respondWithFilteredResult(_0x1ab62a,_0x5c27ec))['catch'](handleError(_0x1ab62a,null));};exports['show']=function(_0x1a7998,_0x4f8225){var _0x2a16ed={'raw':!![],'where':{'id':_0x1a7998[_0x8e4b('0x37')]['id']}},_0xa1014c={};_0xa1014c[_0x8e4b('0x20')]=_[_0x8e4b('0x22')](db[_0x8e4b('0x30')][_0x8e4b('0x1c')]);_0xa1014c[_0x8e4b('0x21')]=_['keys'](_0x1a7998[_0x8e4b('0x21')]);_0xa1014c[_0x8e4b('0x23')]=_[_0x8e4b('0x24')](_0xa1014c[_0x8e4b('0x20')],_0xa1014c[_0x8e4b('0x21')]);_0x2a16ed[_0x8e4b('0x25')]=_[_0x8e4b('0x24')](_0xa1014c[_0x8e4b('0x20')],qs['fields'](_0x1a7998[_0x8e4b('0x21')][_0x8e4b('0x26')]));_0x2a16ed[_0x8e4b('0x25')]=_0x2a16ed[_0x8e4b('0x25')][_0x8e4b('0x27')]?_0x2a16ed[_0x8e4b('0x25')]:_0xa1014c[_0x8e4b('0x20')];if(_0x1a7998[_0x8e4b('0x21')][_0x8e4b('0x32')]){_0x2a16ed['include']=[{'all':!![]}];}_0x2a16ed=_[_0x8e4b('0x2f')]({},_0x2a16ed,_0x1a7998[_0x8e4b('0x38')]);return db[_0x8e4b('0x30')][_0x8e4b('0x39')](_0x2a16ed)[_0x8e4b('0x13')](handleEntityNotFound(_0x4f8225,null))[_0x8e4b('0x13')](function(_0x513c7c){if(_0x513c7c[_0x8e4b('0x34')]===_0x8e4b('0x3a')){var _0x3ddf18=encryptor['decryptString'](_0x513c7c[_0x8e4b('0x36')]);_0x513c7c[_0x8e4b('0x36')]=maskClientSecret(_0x3ddf18);}return _0x513c7c;})[_0x8e4b('0x13')](respondWithResult(_0x4f8225,null))['catch'](handleError(_0x4f8225,null));};exports[_0x8e4b('0x3b')]=function(_0x2414e6,_0x41b786){if(!_0x2414e6['body'][_0x8e4b('0x18')])throw new Error(_0x8e4b('0x3c'));if(!_0x2414e6[_0x8e4b('0x3d')][_0x8e4b('0x34')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x3a36ea=db[_0x8e4b('0x30')]['rawAttributes'][_0x8e4b('0x34')][_0x8e4b('0x3e')];if(!_0x3a36ea[_0x8e4b('0x3f')](_0x2414e6['body'][_0x8e4b('0x34')]))throw new Error(_0x8e4b('0x40')+_0x3a36ea[_0x8e4b('0x41')](',\x20'));if(_0x2414e6['body'][_0x8e4b('0x34')]===_0x8e4b('0x3a')&&_0x2414e6[_0x8e4b('0x3d')][_0x8e4b('0x36')]){_0x2414e6[_0x8e4b('0x3d')]['data3']=encryptor[_0x8e4b('0x42')](_0x2414e6[_0x8e4b('0x3d')][_0x8e4b('0x36')]);}return db[_0x8e4b('0x30')]['create'](_0x2414e6[_0x8e4b('0x3d')],{})[_0x8e4b('0x13')](respondWithResult(_0x41b786,0xc9))[_0x8e4b('0x43')](handleError(_0x41b786,null));};exports[_0x8e4b('0x12')]=function(_0x11de5e,_0xaefde1){if(_0x11de5e[_0x8e4b('0x3d')]['id']){delete _0x11de5e[_0x8e4b('0x3d')]['id'];}return db[_0x8e4b('0x30')][_0x8e4b('0x39')]({'where':{'id':_0x11de5e[_0x8e4b('0x37')]['id']}})['then'](handleEntityNotFound(_0xaefde1,null))[_0x8e4b('0x13')](function(_0x516e6d){if(_0x516e6d[_0x8e4b('0x34')]===_0x8e4b('0x3a')&&_0x11de5e[_0x8e4b('0x3d')][_0x8e4b('0x36')]){_0x11de5e[_0x8e4b('0x3d')][_0x8e4b('0x36')]=encryptor[_0x8e4b('0x42')](_0x11de5e[_0x8e4b('0x3d')][_0x8e4b('0x36')]);}return _0x516e6d;})['then'](saveUpdates(_0x11de5e['body'],null))['then'](respondWithResult(_0xaefde1,null))[_0x8e4b('0x43')](handleError(_0xaefde1,null));};exports['destroy']=function(_0x2ff5c5,_0x58ea0a){return db['CloudProvider'][_0x8e4b('0x39')]({'where':{'id':_0x2ff5c5[_0x8e4b('0x37')]['id']}})['then'](handleEntityNotFound(_0x58ea0a,null))[_0x8e4b('0x13')](removeEntity(_0x58ea0a,null))[_0x8e4b('0x43')](handleError(_0x58ea0a,null));};exports[_0x8e4b('0x44')]=function(_0x39d2a3,_0x16e7b0){return db[_0x8e4b('0x30')][_0x8e4b('0x45')]({'where':{'id':_0x39d2a3[_0x8e4b('0x37')]['id']},'raw':!![]})[_0x8e4b('0x13')](function(_0x53a865){if(!_0x53a865)return _0x16e7b0['sendStatus'](0x194);return{'url':oauth[_0x8e4b('0x46')](_0x53a865,_0x39d2a3[_0x8e4b('0x47')]['id'])};})[_0x8e4b('0x13')](respondWithResult(_0x16e7b0,null))[_0x8e4b('0x43')](handleError(_0x16e7b0,null));};exports[_0x8e4b('0x48')]=function(_0xf8dc6b,_0x37876e){var _0x3cc70c=_0xf8dc6b[_0x8e4b('0x3d')];var _0x3a5ce5;var _0xee0888;if(_0x3cc70c[_0x8e4b('0x16')])throw _0x3cc70c;redis[_0x8e4b('0x49')](_0x3cc70c[_0x8e4b('0x4a')])[_0x8e4b('0x13')](function(_0x100a3e){if(!_0x100a3e)throw new Error(_0x8e4b('0x4b'));_0x3a5ce5=JSON[_0x8e4b('0x4c')](_0x100a3e);var _0x5d8b6a=Buffer[_0x8e4b('0x4d')](_0x3cc70c['state'],_0x8e4b('0x4e'))[_0x8e4b('0x4f')]('ascii');_0xee0888=JSON['parse'](_0x5d8b6a);if(!oauth[_0x8e4b('0x50')](_0x3cc70c[_0x8e4b('0x51')],_0x3a5ce5[_0x8e4b('0x52')]))throw new Error(_0x8e4b('0x53'));redis['del'](_0x3cc70c['state']);return oauth[_0x8e4b('0x54')](_0x3cc70c[_0x8e4b('0x55')],_0x3a5ce5);})[_0x8e4b('0x13')](function(_0x588c46){_0x3a5ce5[_0x8e4b('0x56')]=_0x588c46[_0x8e4b('0x57')];_0x3a5ce5['data6']=_0x588c46['refresh_token'];return db[_0x8e4b('0x30')][_0x8e4b('0x12')]({'data5':_0x3a5ce5[_0x8e4b('0x56')],'data6':_0x3a5ce5[_0x8e4b('0x58')]},{'where':{'id':_0x3a5ce5['id']}});})[_0x8e4b('0x13')](function(){oauth[_0x8e4b('0x59')](_0x3a5ce5);socket[_0x8e4b('0x5a')](_0x8e4b('0x5b'),{'id':_0xee0888['id']});return;})[_0x8e4b('0x13')](respondWithStatusCode(_0x37876e,null))[_0x8e4b('0x43')](function(_0x133b7b){if(_0xee0888){socket[_0x8e4b('0x5a')]('microsoftAuthorization:error',{'id':_0xee0888['id']});}if(!_0x3a5ce5){logger[_0x8e4b('0x16')](_0x8e4b('0x5c'),_0x133b7b);return _0x37876e[_0x8e4b('0xb')](0x1f4)[_0x8e4b('0x19')](_0x133b7b['message']);}logger[_0x8e4b('0x16')](_0x8e4b('0x5d'),_0x3a5ce5['id'],JSON[_0x8e4b('0x5e')](_0x133b7b));});};
\ No newline at end of file
+var _0xc096=['error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','findAll','rows','service','MicrosoftAzure','decryptString','data3','includeAll','include','find','create','body','Name\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','catch','params','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','state','parse','from','base64','toString','ascii','isValidIdToken','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','data5','data6','refresh_token','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../config/logger','../../mysqldb','./cloudProvider.oauth','defaults','redis','localhost','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','update','then','destroy'];(function(_0x1eedb8,_0x41a839){var _0x23ce75=function(_0xfdf9c7){while(--_0xfdf9c7){_0x1eedb8['push'](_0x1eedb8['shift']());}};_0x23ce75(++_0x41a839);}(_0xc096,0xac));var _0x6c09=function(_0x4ea444,_0x56dde4){_0x4ea444=_0x4ea444-0x0;var _0x52b1e0=_0xc096[_0x4ea444];return _0x52b1e0;};'use strict';var _=require(_0x6c09('0x0'));var Redis=require(_0x6c09('0x1'));var qs=require(_0x6c09('0x2'));var encryptor=require('../../components/encryptor');var config=require(_0x6c09('0x3'));var logger=require(_0x6c09('0x4'))('api');var db=require(_0x6c09('0x5'))['db'];var oauth=require(_0x6c09('0x6'));config['redis']=_[_0x6c09('0x7')](config[_0x6c09('0x8')],{'host':_0x6c09('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6c09('0x8')]));var redis=new Redis(config[_0x6c09('0x8')]);function respondWithStatusCode(_0x2033d7,_0x10f206){_0x10f206=_0x10f206||0xcc;return function(_0xbc69c0){if(_0xbc69c0){return _0x2033d7[_0x6c09('0xa')](_0x10f206);}return _0x2033d7[_0x6c09('0xb')](_0x10f206)[_0x6c09('0xc')]();};}function respondWithResult(_0x1bb6ed,_0x321a15){_0x321a15=_0x321a15||0xc8;return function(_0x7cc238){if(_0x7cc238){return _0x1bb6ed[_0x6c09('0xb')](_0x321a15)['json'](_0x7cc238);}};}function respondWithFilteredResult(_0x199c2b,_0x344c7b){return function(_0x59388a){if(_0x59388a){var _0x55340c=typeof _0x344c7b[_0x6c09('0xd')]==='undefined'&&typeof _0x344c7b[_0x6c09('0xe')]===_0x6c09('0xf');var _0x3db3ab=_0x59388a[_0x6c09('0x10')];var _0x4d854a=_0x55340c?0x0:_0x344c7b[_0x6c09('0xd')];var _0x37995=_0x55340c?_0x59388a[_0x6c09('0x10')]:_0x344c7b[_0x6c09('0xd')]+_0x344c7b['limit'];var _0x20b34b;if(_0x37995>=_0x3db3ab){_0x37995=_0x3db3ab;_0x20b34b=0xc8;}else{_0x20b34b=0xce;}_0x199c2b[_0x6c09('0xb')](_0x20b34b);return _0x199c2b[_0x6c09('0x11')](_0x6c09('0x12'),_0x4d854a+'-'+_0x37995+'/'+_0x3db3ab)['json'](_0x59388a);}return null;};}function saveUpdates(_0x40f068){return function(_0xc6b885){if(_0xc6b885){return _0xc6b885[_0x6c09('0x13')](_0x40f068)[_0x6c09('0x14')](function(_0x172ac1){return _0x172ac1;});}return null;};}function removeEntity(_0x522ffe){return function(_0xd462ab){if(_0xd462ab){return _0xd462ab[_0x6c09('0x15')]()[_0x6c09('0x14')](function(){_0x522ffe[_0x6c09('0xb')](0xcc)[_0x6c09('0xc')]();});}};}function handleEntityNotFound(_0x30e2f4){return function(_0x115889){if(!_0x115889){_0x30e2f4['sendStatus'](0x194);}return _0x115889;};}function handleError(_0x13acf6,_0x2c03d8){_0x2c03d8=_0x2c03d8||0x1f4;return function(_0x50b6f0){logger[_0x6c09('0x16')](_0x50b6f0[_0x6c09('0x17')]);if(_0x50b6f0[_0x6c09('0x18')]){delete _0x50b6f0[_0x6c09('0x18')];}_0x13acf6['status'](_0x2c03d8)[_0x6c09('0x19')](_0x50b6f0);};}function maskClientSecret(_0x10c230){return _[_0x6c09('0x1a')](_0x10c230[_0x6c09('0x1b')](0x0,0x3),0x14,'*');}exports[_0x6c09('0x1c')]=function(_0x3a00c3,_0x81b90e){var _0x392a67={},_0x462271={},_0x34d7ed={'count':0x0,'rows':[]};var _0x32c8fc=_[_0x6c09('0x1d')](db[_0x6c09('0x1e')][_0x6c09('0x1f')],function(_0x5b7a2a){return{'name':_0x5b7a2a[_0x6c09('0x20')],'type':_0x5b7a2a[_0x6c09('0x21')][_0x6c09('0x22')]};});_0x462271[_0x6c09('0x23')]=_[_0x6c09('0x1d')](_0x32c8fc,_0x6c09('0x18'));_0x462271[_0x6c09('0x24')]=_[_0x6c09('0x25')](_0x3a00c3[_0x6c09('0x24')]);_0x462271['filters']=_[_0x6c09('0x26')](_0x462271[_0x6c09('0x23')],_0x462271[_0x6c09('0x24')]);_0x392a67[_0x6c09('0x27')]=_[_0x6c09('0x26')](_0x462271[_0x6c09('0x23')],qs[_0x6c09('0x28')](_0x3a00c3[_0x6c09('0x24')][_0x6c09('0x28')]));_0x392a67[_0x6c09('0x27')]=_0x392a67['attributes'][_0x6c09('0x29')]?_0x392a67['attributes']:_0x462271[_0x6c09('0x23')];if(!_0x3a00c3['query'][_0x6c09('0x2a')](_0x6c09('0x2b'))){_0x392a67['limit']=qs['limit'](_0x3a00c3[_0x6c09('0x24')][_0x6c09('0xe')]);_0x392a67[_0x6c09('0xd')]=qs[_0x6c09('0xd')](_0x3a00c3['query'][_0x6c09('0xd')]);}_0x392a67['order']=qs[_0x6c09('0x2c')](_0x3a00c3[_0x6c09('0x24')]['sort']);_0x392a67[_0x6c09('0x2d')]=qs[_0x6c09('0x2e')](_['pick'](_0x3a00c3[_0x6c09('0x24')],_0x462271[_0x6c09('0x2e')]),_0x32c8fc);if(_0x3a00c3[_0x6c09('0x24')][_0x6c09('0x2f')]){_0x392a67[_0x6c09('0x2d')]=_[_0x6c09('0x30')](_0x392a67[_0x6c09('0x2d')],{'$or':_['map'](_0x32c8fc,function(_0x49ea5b){if(_0x49ea5b[_0x6c09('0x21')]!==_0x6c09('0x31')){var _0x436428={};_0x436428[_0x49ea5b['name']]={'$like':'%'+_0x3a00c3[_0x6c09('0x24')][_0x6c09('0x2f')]+'%'};return _0x436428;}})});}_0x392a67=_[_0x6c09('0x30')]({},_0x392a67,_0x3a00c3[_0x6c09('0x32')]);var _0x289893={'where':_0x392a67[_0x6c09('0x2d')]};return db[_0x6c09('0x1e')][_0x6c09('0x10')](_0x289893)['then'](function(_0x5979d3){_0x34d7ed[_0x6c09('0x10')]=_0x5979d3;if(_0x3a00c3[_0x6c09('0x24')]['includeAll']){_0x392a67['include']=[{'all':!![]}];}return db['CloudProvider'][_0x6c09('0x33')](_0x392a67);})[_0x6c09('0x14')](function(_0x1be736){_0x34d7ed[_0x6c09('0x34')]=_[_0x6c09('0x1d')](_0x1be736,function(_0x1e01ec){if(_0x1e01ec[_0x6c09('0x35')]===_0x6c09('0x36')){var _0x9cfcce=encryptor[_0x6c09('0x37')](_0x1e01ec[_0x6c09('0x38')]);_0x1e01ec[_0x6c09('0x38')]=maskClientSecret(_0x9cfcce);}return _0x1e01ec;});return _0x34d7ed;})[_0x6c09('0x14')](respondWithFilteredResult(_0x81b90e,_0x392a67))['catch'](handleError(_0x81b90e,null));};exports['show']=function(_0x57a78d,_0x18df4c){var _0x3c24a6={'raw':!![],'where':{'id':_0x57a78d['params']['id']}},_0x677808={};_0x677808[_0x6c09('0x23')]=_[_0x6c09('0x25')](db[_0x6c09('0x1e')][_0x6c09('0x1f')]);_0x677808[_0x6c09('0x24')]=_[_0x6c09('0x25')](_0x57a78d[_0x6c09('0x24')]);_0x677808[_0x6c09('0x2e')]=_[_0x6c09('0x26')](_0x677808[_0x6c09('0x23')],_0x677808[_0x6c09('0x24')]);_0x3c24a6['attributes']=_[_0x6c09('0x26')](_0x677808['model'],qs['fields'](_0x57a78d[_0x6c09('0x24')][_0x6c09('0x28')]));_0x3c24a6[_0x6c09('0x27')]=_0x3c24a6[_0x6c09('0x27')][_0x6c09('0x29')]?_0x3c24a6[_0x6c09('0x27')]:_0x677808[_0x6c09('0x23')];if(_0x57a78d['query'][_0x6c09('0x39')]){_0x3c24a6[_0x6c09('0x3a')]=[{'all':!![]}];}_0x3c24a6=_['merge']({},_0x3c24a6,_0x57a78d[_0x6c09('0x32')]);return db[_0x6c09('0x1e')][_0x6c09('0x3b')](_0x3c24a6)[_0x6c09('0x14')](handleEntityNotFound(_0x18df4c,null))[_0x6c09('0x14')](function(_0xaf4989){if(_0xaf4989['service']===_0x6c09('0x36')){var _0x57edf1=encryptor['decryptString'](_0xaf4989['data3']);_0xaf4989[_0x6c09('0x38')]=maskClientSecret(_0x57edf1);}return _0xaf4989;})[_0x6c09('0x14')](respondWithResult(_0x18df4c,null))['catch'](handleError(_0x18df4c,null));};exports[_0x6c09('0x3c')]=function(_0x1e1a2a,_0x11ac07){if(!_0x1e1a2a[_0x6c09('0x3d')][_0x6c09('0x18')])throw new Error(_0x6c09('0x3e'));if(!_0x1e1a2a['body'][_0x6c09('0x35')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x4c3628=db[_0x6c09('0x1e')][_0x6c09('0x1f')][_0x6c09('0x35')][_0x6c09('0x3f')];if(!_0x4c3628[_0x6c09('0x40')](_0x1e1a2a['body']['service']))throw new Error(_0x6c09('0x41')+_0x4c3628[_0x6c09('0x42')](',\x20'));if(_0x1e1a2a[_0x6c09('0x3d')][_0x6c09('0x35')]==='MicrosoftAzure'&&_0x1e1a2a[_0x6c09('0x3d')][_0x6c09('0x38')]){_0x1e1a2a['body'][_0x6c09('0x38')]=encryptor['encryptString'](_0x1e1a2a['body'][_0x6c09('0x38')]);}return db[_0x6c09('0x1e')]['create'](_0x1e1a2a[_0x6c09('0x3d')],{})[_0x6c09('0x14')](respondWithResult(_0x11ac07,0xc9))[_0x6c09('0x43')](handleError(_0x11ac07,null));};exports[_0x6c09('0x13')]=function(_0x1ccaea,_0x26d1a0){if(_0x1ccaea['body']['id']){delete _0x1ccaea[_0x6c09('0x3d')]['id'];}return db[_0x6c09('0x1e')]['find']({'where':{'id':_0x1ccaea[_0x6c09('0x44')]['id']}})[_0x6c09('0x14')](handleEntityNotFound(_0x26d1a0,null))[_0x6c09('0x14')](function(_0x421d6c){if(_0x421d6c[_0x6c09('0x35')]===_0x6c09('0x36')&&_0x1ccaea[_0x6c09('0x3d')][_0x6c09('0x38')]){_0x1ccaea[_0x6c09('0x3d')][_0x6c09('0x38')]=encryptor[_0x6c09('0x45')](_0x1ccaea[_0x6c09('0x3d')][_0x6c09('0x38')]);}return _0x421d6c;})[_0x6c09('0x14')](saveUpdates(_0x1ccaea[_0x6c09('0x3d')],null))[_0x6c09('0x14')](respondWithResult(_0x26d1a0,null))[_0x6c09('0x43')](handleError(_0x26d1a0,null));};exports[_0x6c09('0x15')]=function(_0x47ad23,_0x512fb5){return db[_0x6c09('0x1e')][_0x6c09('0x3b')]({'where':{'id':_0x47ad23[_0x6c09('0x44')]['id']}})[_0x6c09('0x14')](handleEntityNotFound(_0x512fb5,null))[_0x6c09('0x14')](removeEntity(_0x512fb5,null))[_0x6c09('0x43')](handleError(_0x512fb5,null));};exports[_0x6c09('0x46')]=function(_0x13cc69,_0x460d79){return db[_0x6c09('0x1e')][_0x6c09('0x47')]({'where':{'id':_0x13cc69['params']['id']},'raw':!![]})['then'](function(_0x55a646){if(!_0x55a646)return _0x460d79[_0x6c09('0xa')](0x194);return{'url':oauth[_0x6c09('0x48')](_0x55a646,_0x13cc69[_0x6c09('0x49')]['id'])};})['then'](respondWithResult(_0x460d79,null))[_0x6c09('0x43')](handleError(_0x460d79,null));};exports[_0x6c09('0x4a')]=function(_0x1c4531,_0x1fe189){var _0x5b86f7=_0x1c4531['body'];var _0x1a7707;var _0x3b93c4;if(_0x5b86f7[_0x6c09('0x16')])throw _0x5b86f7;redis['get'](_0x5b86f7[_0x6c09('0x4b')])[_0x6c09('0x14')](function(_0x2b2c57){if(!_0x2b2c57)throw new Error('Invalid\x20state\x20parameter');_0x1a7707=JSON[_0x6c09('0x4c')](_0x2b2c57);var _0x1a1f82=Buffer[_0x6c09('0x4d')](_0x5b86f7[_0x6c09('0x4b')],_0x6c09('0x4e'))[_0x6c09('0x4f')](_0x6c09('0x50'));_0x3b93c4=JSON[_0x6c09('0x4c')](_0x1a1f82);if(!oauth[_0x6c09('0x51')](_0x5b86f7['id_token'],_0x1a7707[_0x6c09('0x52')]))throw new Error(_0x6c09('0x53'));redis[_0x6c09('0x54')](_0x5b86f7[_0x6c09('0x4b')]);return oauth[_0x6c09('0x55')](_0x5b86f7[_0x6c09('0x56')],_0x1a7707);})[_0x6c09('0x14')](function(_0xaadda0){_0x1a7707[_0x6c09('0x57')]=_0xaadda0['access_token'];_0x1a7707[_0x6c09('0x58')]=_0xaadda0[_0x6c09('0x59')];return db[_0x6c09('0x1e')][_0x6c09('0x13')]({'data5':_0x1a7707[_0x6c09('0x57')],'data6':_0x1a7707['data6']},{'where':{'id':_0x1a7707['id']}});})[_0x6c09('0x14')](function(){oauth[_0x6c09('0x5a')](_0x1a7707);socket[_0x6c09('0x5b')](_0x6c09('0x5c'),{'id':_0x3b93c4['id']});return;})[_0x6c09('0x14')](respondWithStatusCode(_0x1fe189,null))[_0x6c09('0x43')](function(_0x1d70cf){if(_0x3b93c4){socket[_0x6c09('0x5b')](_0x6c09('0x5d'),{'id':_0x3b93c4['id']});}if(!_0x1a7707){logger[_0x6c09('0x16')]('Invalid\x20authentication\x20state\x20parameter',_0x1d70cf);return _0x1fe189[_0x6c09('0xb')](0x1f4)[_0x6c09('0x19')](_0x1d70cf[_0x6c09('0x5e')]);}logger[_0x6c09('0x16')](_0x6c09('0x5f'),_0x1a7707['id'],JSON[_0x6c09('0x60')](_0x1d70cf));});};
\ No newline at end of file
index aaef70d..ec48803 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eaa=['rimraf','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x3eaa,0x1b6));var _0xa3ea=function(_0x2fa14c,_0x563cac){_0x2fa14c=_0x2fa14c-0x0;var _0x5d8267=_0x3eaa[_0x2fa14c];return _0x5d8267;};'use strict';var _=require(_0xa3ea('0x0'));var util=require(_0xa3ea('0x1'));var logger=require(_0xa3ea('0x2'))(_0xa3ea('0x3'));var moment=require('moment');var BPromise=require(_0xa3ea('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa3ea('0x5'));var rimraf=require(_0xa3ea('0x6'));var config=require('../../config/environment');var attributes=require(_0xa3ea('0x7'));module[_0xa3ea('0x8')]=function(_0x60290d,_0x4c6f3b){return _0x60290d[_0xa3ea('0x9')](_0xa3ea('0xa'),attributes,{'tableName':_0xa3ea('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8b07=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash'];(function(_0x1788d2,_0x577054){var _0x2f5bc3=function(_0x68a6f4){while(--_0x68a6f4){_0x1788d2['push'](_0x1788d2['shift']());}};_0x2f5bc3(++_0x577054);}(_0x8b07,0xc2));var _0x78b0=function(_0x43597e,_0x542b30){_0x43597e=_0x43597e-0x0;var _0x4cdd53=_0x8b07[_0x43597e];return _0x4cdd53;};'use strict';var _=require(_0x78b0('0x0'));var util=require(_0x78b0('0x1'));var logger=require(_0x78b0('0x2'))(_0x78b0('0x3'));var moment=require(_0x78b0('0x4'));var BPromise=require(_0x78b0('0x5'));var rp=require(_0x78b0('0x6'));var fs=require('fs');var path=require(_0x78b0('0x7'));var rimraf=require(_0x78b0('0x8'));var config=require(_0x78b0('0x9'));var attributes=require(_0x78b0('0xa'));module[_0x78b0('0xb')]=function(_0x2ce1a0,_0x390fa8){return _0x2ce1a0[_0x78b0('0xc')](_0x78b0('0xd'),attributes,{'tableName':_0x78b0('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44945d0..46af9fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2c4=['nonce','prompt','login','key','replace','oauth2/','payload','iss','issuer','aud','isAfter','unix','resolve','then','data3','CloudProvider','findOne','data6','data4','decryptString','data5','access_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','crypto','jsonwebtoken','moment','ioredis','request-promise','util','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','openid','/authorize','/token','map','type','Dynamics365','data7','/.default','join','Outlook365','{TENANT_ID}','data2','from','stringify','randomBytes','hex','client_id','data1','redirect_uri','response_mode','form_post','scope','state'];(function(_0x1e3269,_0x39637b){var _0x26c931=function(_0x4936ae){while(--_0x4936ae){_0x1e3269['push'](_0x1e3269['shift']());}};_0x26c931(++_0x39637b);}(_0xd2c4,0x6d));var _0x4d2c=function(_0x34f3d4,_0x5ae214){_0x34f3d4=_0x34f3d4-0x0;var _0x17f899=_0xd2c4[_0x34f3d4];return _0x17f899;};'use strict';var _=require('lodash');var crypto=require(_0x4d2c('0x0'));var jwt=require(_0x4d2c('0x1'));var moment=require(_0x4d2c('0x2'));var Redis=require(_0x4d2c('0x3'));var rp=require(_0x4d2c('0x4'));var util=require(_0x4d2c('0x5'));var encryptor=require('../../components/encryptor');var config=require(_0x4d2c('0x6'));var logger=require(_0x4d2c('0x7'))(_0x4d2c('0x8'));var schedule=require(_0x4d2c('0x9'));var db=require(_0x4d2c('0xa'))['db'];config[_0x4d2c('0xb')]=_[_0x4d2c('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x4d2c('0xd');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0x4d2c('0xe'),_0x4d2c('0xf'),_0x4d2c('0x10'),_0x4d2c('0x11'),_0x4d2c('0x12'),_0x4d2c('0x13')],'Dynamics365':[_0x4d2c('0x14'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x4d2c('0x15');var MICROSOFT_TOKEN_ENDPOINT=_0x4d2c('0x16');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x17e8dd){var _0x413e02=_[_0x4d2c('0x17')](AZURE_AUTH_SCOPES[_0x17e8dd[_0x4d2c('0x18')]]);if(_0x17e8dd[_0x4d2c('0x18')]===_0x4d2c('0x19'))_0x413e02['push'](_0x17e8dd[_0x4d2c('0x1a')]+_0x4d2c('0x1b'));return _0x413e02[_0x4d2c('0x1c')]('\x20');}function getAccessTokenScope(_0x182f06){if(_0x182f06['type']===_0x4d2c('0x1d'))return _0x4d2c('0x11');if(_0x182f06[_0x4d2c('0x18')]===_0x4d2c('0x19'))return _0x182f06['data7']+'/.default';}function generateMicrosoftAuthorizationUrl(_0x4eca3b,_0x501597){var _0x4ce503=MICROSOFT_AUTH_URL['replace'](_0x4d2c('0x1e'),_0x4eca3b[_0x4d2c('0x1f')]);var _0x915bad=['code','id_token'];var _0x2cfb42=Buffer[_0x4d2c('0x20')](JSON[_0x4d2c('0x21')]({'id':_0x501597}))['toString']('base64');var _0x34e3e6=crypto[_0x4d2c('0x22')](0x10)['toString'](_0x4d2c('0x23'));var _0x10c54c=getAuthorizationScopes(_0x4eca3b);var _0x71dfeb=[{'key':_0x4d2c('0x24'),'value':_0x4eca3b[_0x4d2c('0x25')]},{'key':'response_type','value':encodeURIComponent(_0x915bad[_0x4d2c('0x1c')]('\x20'))},{'key':_0x4d2c('0x26'),'value':_0x4eca3b['data4']},{'key':_0x4d2c('0x27'),'value':_0x4d2c('0x28')},{'key':_0x4d2c('0x29'),'value':encodeURIComponent(_0x10c54c)},{'key':_0x4d2c('0x2a'),'value':_0x2cfb42},{'key':_0x4d2c('0x2b'),'value':_0x34e3e6},{'key':_0x4d2c('0x2c'),'value':_0x4d2c('0x2d')}];var _0x3b58a0=_0x4ce503+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x71dfeb,function(_0x29fc1f){return _0x29fc1f[_0x4d2c('0x2e')]+'='+_0x29fc1f['value'];})[_0x4d2c('0x1c')]('&');_0x4eca3b['oauth2Claims']={'issuer':_0x4ce503[_0x4d2c('0x2f')](_0x4d2c('0x30'),''),'audience':_0x4eca3b[_0x4d2c('0x25')],'state':_0x2cfb42,'nonce':_0x34e3e6};redis['set'](_0x2cfb42,JSON[_0x4d2c('0x21')](_0x4eca3b));return _0x3b58a0;}function isValidIdToken(_0xb4b59b,_0x2fcec3){try{var _0x3ae9b0=jwt['decode'](_0xb4b59b,{'complete':!![]});var _0x396f6b=_0x3ae9b0[_0x4d2c('0x31')];if(_0x396f6b[_0x4d2c('0x32')]!==_0x2fcec3[_0x4d2c('0x33')])return![];if(_0x396f6b[_0x4d2c('0x34')]!==_0x2fcec3['audience'])return![];if(_0x396f6b[_0x4d2c('0x2b')]!==_0x2fcec3[_0x4d2c('0x2b')])return![];if(moment()[_0x4d2c('0x35')](moment[_0x4d2c('0x36')](_0x396f6b['exp'])))return![];return!![];}catch(_0x472579){throw _0x472579;}}function refreshOauth2MicrosoftAccessToken(_0x13e31d){return Promise[_0x4d2c('0x37')]()[_0x4d2c('0x38')](function(){if(_0x13e31d[_0x4d2c('0x39')])return _0x13e31d;return db[_0x4d2c('0x3a')][_0x4d2c('0x3b')]({'where':{'id':_0x13e31d['id']},'raw':!![]});})[_0x4d2c('0x38')](function(_0xb557d1){var _0x1812bb={'grant_type':'refresh_token','refresh_token':_0xb557d1[_0x4d2c('0x3c')],'scope':getAccessTokenScope(_0xb557d1),'redirect_uri':_0xb557d1[_0x4d2c('0x3d')],'client_id':_0xb557d1['data1'],'client_secret':encryptor[_0x4d2c('0x3e')](_0xb557d1[_0x4d2c('0x39')])};var _0x586d3b={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x4d2c('0x2f')]('{TENANT_ID}',_0xb557d1[_0x4d2c('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1812bb,'json':!![]};return rp(_0x586d3b);})[_0x4d2c('0x38')](function(_0x8cb052){_0x13e31d[_0x4d2c('0x3f')]=_0x8cb052[_0x4d2c('0x40')];_0x13e31d[_0x4d2c('0x3c')]=_0x8cb052['refresh_token'];return db[_0x4d2c('0x3a')][_0x4d2c('0x41')]({'data5':_0x13e31d[_0x4d2c('0x3f')],'data6':_0x13e31d['data6']},{'where':{'id':_0x13e31d['id']}});})['then'](function(){return _0x13e31d;})[_0x4d2c('0x42')](function(_0x251a03){logger[_0x4d2c('0x43')](_0x4d2c('0x44'),_0x13e31d['id'],_0x251a03);});}function getOauth2MicrosoftAccessToken(_0x3e8672,_0xa3b6b6){var _0x4358d4={'grant_type':_0x4d2c('0x45'),'code':_0x3e8672,'scope':getAccessTokenScope(_0xa3b6b6),'redirect_uri':_0xa3b6b6[_0x4d2c('0x3d')],'client_id':_0xa3b6b6[_0x4d2c('0x25')],'client_secret':encryptor[_0x4d2c('0x3e')](_0xa3b6b6['data3'])};var _0x5bf652={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x4d2c('0x2f')](_0x4d2c('0x1e'),_0xa3b6b6[_0x4d2c('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4358d4,'json':!![]};return rp(_0x5bf652);}function startRefreshInterval(_0x53b014){var _0x2709ae=schedule[_0x4d2c('0x46')];if(_0x2709ae[_0x53b014['id']])clearInterval(_0x2709ae[_0x53b014['id']]);_0x2709ae[_0x53b014['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x4d2c('0x47')](this,{'id':_0x53b014['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x4d2c('0x46')]=_0x2709ae;}function startAllRefreshIntervals(){return db['CloudProvider']['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x4d2c('0x38')](function(_0x26b01b){var _0x56a3f6=_0x26b01b[_0x4d2c('0x17')](function(_0xec2c6c){return refreshOauth2MicrosoftAccessToken(_0xec2c6c)[_0x4d2c('0x38')](function(_0x40b16b){startRefreshInterval(_0x40b16b);});});return Promise[_0x4d2c('0x48')](_0x56a3f6);})['catch'](function(_0x2f7735){var _0x1e83a0=_0x2f7735?util[_0x4d2c('0x49')](_0x2f7735,{'showHidden':![],'depth':null}):'';logger[_0x4d2c('0x43')](_0x4d2c('0x4a'),_0x1e83a0);});}module[_0x4d2c('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xf98d=['value','oauth2Claims','oauth2/','set','payload','iss','aud','audience','isAfter','unix','data3','findOne','then','refresh_token','decryptString','POST','data5','access_token','data6','update','catch','error','authorization_code','data1','intervals','bind','CloudProvider','findAll','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','crypto','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','map','type','Dynamics365','push','data7','/.default','Outlook365','replace','{TENANT_ID}','data2','code','id_token','from','stringify','toString','base64','randomBytes','hex','client_id','response_type','join','redirect_uri','data4','form_post','scope','state','nonce','prompt','login','key'];(function(_0xf41af4,_0x2dca83){var _0x1290bc=function(_0x1c9c08){while(--_0x1c9c08){_0xf41af4['push'](_0xf41af4['shift']());}};_0x1290bc(++_0x2dca83);}(_0xf98d,0x11e));var _0xdf98=function(_0x12d247,_0x239701){_0x12d247=_0x12d247-0x0;var _0x4c9a7a=_0xf98d[_0x12d247];return _0x4c9a7a;};'use strict';var _=require(_0xdf98('0x0'));var crypto=require(_0xdf98('0x1'));var jwt=require(_0xdf98('0x2'));var moment=require(_0xdf98('0x3'));var Redis=require(_0xdf98('0x4'));var rp=require(_0xdf98('0x5'));var util=require(_0xdf98('0x6'));var encryptor=require(_0xdf98('0x7'));var config=require(_0xdf98('0x8'));var logger=require(_0xdf98('0x9'))(_0xdf98('0xa'));var schedule=require(_0xdf98('0xb'));var db=require(_0xdf98('0xc'))['db'];config[_0xdf98('0xd')]=_[_0xdf98('0xe')](config[_0xdf98('0xd')],{'host':_0xdf98('0xf'),'port':0x18eb});var redis=new Redis(config[_0xdf98('0xd')]);var MICROSOFT_AUTH_URL=_0xdf98('0x10');var AZURE_AUTH_SCOPES={'Outlook365':[_0xdf98('0x11'),'profile',_0xdf98('0x12'),_0xdf98('0x13'),_0xdf98('0x14'),_0xdf98('0x15'),_0xdf98('0x16')],'Dynamics365':[_0xdf98('0x11'),_0xdf98('0x13')]};var MICROSOFT_AUTH_ENDPOINT=_0xdf98('0x17');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x545b96){var _0x51088d=_[_0xdf98('0x18')](AZURE_AUTH_SCOPES[_0x545b96[_0xdf98('0x19')]]);if(_0x545b96[_0xdf98('0x19')]===_0xdf98('0x1a'))_0x51088d[_0xdf98('0x1b')](_0x545b96[_0xdf98('0x1c')]+_0xdf98('0x1d'));return _0x51088d['join']('\x20');}function getAccessTokenScope(_0x16d543){if(_0x16d543[_0xdf98('0x19')]===_0xdf98('0x1e'))return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x16d543[_0xdf98('0x19')]===_0xdf98('0x1a'))return _0x16d543[_0xdf98('0x1c')]+_0xdf98('0x1d');}function generateMicrosoftAuthorizationUrl(_0x1a1094,_0x5cf414){var _0x47f5dd=MICROSOFT_AUTH_URL[_0xdf98('0x1f')](_0xdf98('0x20'),_0x1a1094[_0xdf98('0x21')]);var _0xdc7c57=[_0xdf98('0x22'),_0xdf98('0x23')];var _0x42eb56=Buffer[_0xdf98('0x24')](JSON[_0xdf98('0x25')]({'id':_0x5cf414}))[_0xdf98('0x26')](_0xdf98('0x27'));var _0x93e2ec=crypto[_0xdf98('0x28')](0x10)['toString'](_0xdf98('0x29'));var _0x5cb049=getAuthorizationScopes(_0x1a1094);var _0x13d827=[{'key':_0xdf98('0x2a'),'value':_0x1a1094['data1']},{'key':_0xdf98('0x2b'),'value':encodeURIComponent(_0xdc7c57[_0xdf98('0x2c')]('\x20'))},{'key':_0xdf98('0x2d'),'value':_0x1a1094[_0xdf98('0x2e')]},{'key':'response_mode','value':_0xdf98('0x2f')},{'key':_0xdf98('0x30'),'value':encodeURIComponent(_0x5cb049)},{'key':_0xdf98('0x31'),'value':_0x42eb56},{'key':_0xdf98('0x32'),'value':_0x93e2ec},{'key':_0xdf98('0x33'),'value':_0xdf98('0x34')}];var _0x2c1872=_0x47f5dd+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xdf98('0x18')](_0x13d827,function(_0x4ee237){return _0x4ee237[_0xdf98('0x35')]+'='+_0x4ee237[_0xdf98('0x36')];})['join']('&');_0x1a1094[_0xdf98('0x37')]={'issuer':_0x47f5dd[_0xdf98('0x1f')](_0xdf98('0x38'),''),'audience':_0x1a1094['data1'],'state':_0x42eb56,'nonce':_0x93e2ec};redis[_0xdf98('0x39')](_0x42eb56,JSON[_0xdf98('0x25')](_0x1a1094));return _0x2c1872;}function isValidIdToken(_0x53678c,_0x5b9200){try{var _0x45d6fb=jwt['decode'](_0x53678c,{'complete':!![]});var _0x5b0174=_0x45d6fb[_0xdf98('0x3a')];if(_0x5b0174[_0xdf98('0x3b')]!==_0x5b9200['issuer'])return![];if(_0x5b0174[_0xdf98('0x3c')]!==_0x5b9200[_0xdf98('0x3d')])return![];if(_0x5b0174[_0xdf98('0x32')]!==_0x5b9200[_0xdf98('0x32')])return![];if(moment()[_0xdf98('0x3e')](moment[_0xdf98('0x3f')](_0x5b0174['exp'])))return![];return!![];}catch(_0x2b2015){throw _0x2b2015;}}function refreshOauth2MicrosoftAccessToken(_0xdcdf03){return Promise['resolve']()['then'](function(){if(_0xdcdf03[_0xdf98('0x40')])return _0xdcdf03;return db['CloudProvider'][_0xdf98('0x41')]({'where':{'id':_0xdcdf03['id']},'raw':!![]});})[_0xdf98('0x42')](function(_0x56ced4){var _0xb9df57={'grant_type':_0xdf98('0x43'),'refresh_token':_0x56ced4['data6'],'scope':getAccessTokenScope(_0x56ced4),'redirect_uri':_0x56ced4['data4'],'client_id':_0x56ced4['data1'],'client_secret':encryptor[_0xdf98('0x44')](_0x56ced4['data3'])};var _0xbf3be3={'method':_0xdf98('0x45'),'uri':MICROSOFT_AUTH_URL[_0xdf98('0x1f')]('{TENANT_ID}',_0x56ced4[_0xdf98('0x21')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xb9df57,'json':!![]};return rp(_0xbf3be3);})[_0xdf98('0x42')](function(_0x588710){_0xdcdf03[_0xdf98('0x46')]=_0x588710[_0xdf98('0x47')];_0xdcdf03[_0xdf98('0x48')]=_0x588710[_0xdf98('0x43')];return db['CloudProvider'][_0xdf98('0x49')]({'data5':_0xdcdf03[_0xdf98('0x46')],'data6':_0xdcdf03[_0xdf98('0x48')]},{'where':{'id':_0xdcdf03['id']}});})['then'](function(){return _0xdcdf03;})[_0xdf98('0x4a')](function(_0xe91d8f){logger[_0xdf98('0x4b')]('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0xdcdf03['id'],_0xe91d8f);});}function getOauth2MicrosoftAccessToken(_0x1961d6,_0x11dcfd){var _0x473899={'grant_type':_0xdf98('0x4c'),'code':_0x1961d6,'scope':getAccessTokenScope(_0x11dcfd),'redirect_uri':_0x11dcfd[_0xdf98('0x2e')],'client_id':_0x11dcfd[_0xdf98('0x4d')],'client_secret':encryptor[_0xdf98('0x44')](_0x11dcfd['data3'])};var _0x1fd8ac={'method':_0xdf98('0x45'),'uri':MICROSOFT_AUTH_URL[_0xdf98('0x1f')]('{TENANT_ID}',_0x11dcfd[_0xdf98('0x21')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x473899,'json':!![]};return rp(_0x1fd8ac);}function startRefreshInterval(_0x5787d3){var _0x22ebc4=schedule[_0xdf98('0x4e')];if(_0x22ebc4[_0x5787d3['id']])clearInterval(_0x22ebc4[_0x5787d3['id']]);_0x22ebc4[_0x5787d3['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xdf98('0x4f')](this,{'id':_0x5787d3['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xdf98('0x4e')]=_0x22ebc4;}function startAllRefreshIntervals(){return db[_0xdf98('0x50')][_0xdf98('0x51')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x4c6e92){var _0x30346b=_0x4c6e92['map'](function(_0x46f560){return refreshOauth2MicrosoftAccessToken(_0x46f560)['then'](function(_0x5bb6ff){startRefreshInterval(_0x5bb6ff);});});return Promise[_0xdf98('0x52')](_0x30346b);})[_0xdf98('0x4a')](function(_0x5aaf42){var _0x30cc2a=_0x5aaf42?util[_0xdf98('0x53')](_0x5aaf42,{'showHidden':![],'depth':null}):'';logger['error'](_0xdf98('0x54'),_0x30cc2a);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index e0aa2de..5e4e20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b0e=['client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x8dc04d,_0xaa7559){var _0x2f5f28=function(_0xdd2d1d){while(--_0xdd2d1d){_0x8dc04d['push'](_0x8dc04d['shift']());}};_0x2f5f28(++_0xaa7559);}(_0x8b0e,0x166));var _0xe8b0=function(_0x445101,_0x2414bf){_0x445101=_0x445101-0x0;var _0x3c3d04=_0x8b0e[_0x445101];return _0x3c3d04;};'use strict';var _=require(_0xe8b0('0x0'));var util=require(_0xe8b0('0x1'));var moment=require(_0xe8b0('0x2'));var BPromise=require(_0xe8b0('0x3'));var rs=require(_0xe8b0('0x4'));var fs=require('fs');var Redis=require(_0xe8b0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe8b0('0x6'));var logger=require('../../config/logger')(_0xe8b0('0x7'));var config=require(_0xe8b0('0x8'));var jayson=require(_0xe8b0('0x9'));var client=jayson[_0xe8b0('0xa')][_0xe8b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35fe3d,_0x25faf7,_0x2e56f4){return new BPromise(function(_0x59f3a4,_0x103966){return client[_0xe8b0('0xc')](_0x35fe3d,_0x2e56f4)[_0xe8b0('0xd')](function(_0x82589f){logger[_0xe8b0('0xe')](_0xe8b0('0xf'),_0x25faf7,_0xe8b0('0x10'));logger[_0xe8b0('0x11')](_0xe8b0('0x12'),_0x25faf7,'request\x20sent',JSON['stringify'](_0x82589f));if(_0x82589f[_0xe8b0('0x13')]){if(_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x14')]===0x1f4){logger['error'](_0xe8b0('0xf'),_0x25faf7,_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x15')]);return _0x103966(_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x15')]);}logger[_0xe8b0('0x13')](_0xe8b0('0xf'),_0x25faf7,_0x82589f['error'][_0xe8b0('0x15')]);return _0x59f3a4(_0x82589f[_0xe8b0('0x13')][_0xe8b0('0x15')]);}else{logger['info'](_0xe8b0('0xf'),_0x25faf7,'request\x20sent');_0x59f3a4(_0x82589f['result']['message']);}})[_0xe8b0('0x16')](function(_0x3818a7){logger['error'](_0xe8b0('0xf'),_0x25faf7,_0x3818a7);_0x103966(_0x3818a7);});});}
\ No newline at end of file
+var _0x8f1a=['debug','error','code','CloudProvider,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','request\x20sent'];(function(_0x2ab365,_0xa3812e){var _0x49fef3=function(_0x29b883){while(--_0x29b883){_0x2ab365['push'](_0x2ab365['shift']());}};_0x49fef3(++_0xa3812e);}(_0x8f1a,0xcd));var _0xa8f1=function(_0x5ac090,_0x4cab85){_0x5ac090=_0x5ac090-0x0;var _0x13ffe2=_0x8f1a[_0x5ac090];return _0x13ffe2;};'use strict';var _=require(_0xa8f1('0x0'));var util=require(_0xa8f1('0x1'));var moment=require(_0xa8f1('0x2'));var BPromise=require(_0xa8f1('0x3'));var rs=require(_0xa8f1('0x4'));var fs=require('fs');var Redis=require(_0xa8f1('0x5'));var db=require(_0xa8f1('0x6'))['db'];var utils=require(_0xa8f1('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xa8f1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa8f1('0x9')][_0xa8f1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c2920,_0x43c3ed,_0x13f210){return new BPromise(function(_0xcc8a38,_0x36b58b){return client[_0xa8f1('0xb')](_0x4c2920,_0x13f210)[_0xa8f1('0xc')](function(_0x1a23a0){logger[_0xa8f1('0xd')]('CloudProvider,\x20%s,\x20%s',_0x43c3ed,_0xa8f1('0xe'));logger[_0xa8f1('0xf')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x43c3ed,_0xa8f1('0xe'),JSON['stringify'](_0x1a23a0));if(_0x1a23a0[_0xa8f1('0x10')]){if(_0x1a23a0[_0xa8f1('0x10')][_0xa8f1('0x11')]===0x1f4){logger['error'](_0xa8f1('0x12'),_0x43c3ed,_0x1a23a0[_0xa8f1('0x10')][_0xa8f1('0x13')]);return _0x36b58b(_0x1a23a0[_0xa8f1('0x10')][_0xa8f1('0x13')]);}logger['error'](_0xa8f1('0x12'),_0x43c3ed,_0x1a23a0['error'][_0xa8f1('0x13')]);return _0xcc8a38(_0x1a23a0[_0xa8f1('0x10')]['message']);}else{logger['info'](_0xa8f1('0x12'),_0x43c3ed,_0xa8f1('0xe'));_0xcc8a38(_0x1a23a0[_0xa8f1('0x14')][_0xa8f1('0x13')]);}})[_0xa8f1('0x15')](function(_0x15bfad){logger[_0xa8f1('0x10')](_0xa8f1('0x12'),_0x43c3ed,_0x15bfad);_0x36b58b(_0x15bfad);});});}
\ No newline at end of file
index 8cfb575..7fd641a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x7a54,0x106));var _0x47a5=function(_0x4b50ce,_0x33f1e2){_0x4b50ce=_0x4b50ce-0x0;var _0x17bc53=_0x7a54[_0x4b50ce];return _0x17bc53;};'use strict';var express=require(_0x47a5('0x0'));var router=express[_0x47a5('0x1')]();var auth=require(_0x47a5('0x2'));var controller=require('./cloudProvider.controller');router[_0x47a5('0x3')]('/',auth[_0x47a5('0x4')](),controller['index']);router[_0x47a5('0x3')](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller[_0x47a5('0x6')]);router[_0x47a5('0x7')]('/',auth['isAuthenticated'](),controller[_0x47a5('0x8')]);router['put'](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller['update']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x47a5('0x3')](_0x47a5('0xa'),auth['isAuthenticated'](),controller[_0x47a5('0xb')]);router['post']('/oauth2/microsoft/callback',controller[_0x47a5('0xc')]);module[_0x47a5('0xd')]=router;
\ No newline at end of file
+var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x7a54,0x106));var _0x47a5=function(_0x53564e,_0x126614){_0x53564e=_0x53564e-0x0;var _0x3d35d6=_0x7a54[_0x53564e];return _0x3d35d6;};'use strict';var express=require(_0x47a5('0x0'));var router=express[_0x47a5('0x1')]();var auth=require(_0x47a5('0x2'));var controller=require('./cloudProvider.controller');router[_0x47a5('0x3')]('/',auth[_0x47a5('0x4')](),controller['index']);router[_0x47a5('0x3')](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller[_0x47a5('0x6')]);router[_0x47a5('0x7')]('/',auth['isAuthenticated'](),controller[_0x47a5('0x8')]);router['put'](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller['update']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x47a5('0x3')](_0x47a5('0xa'),auth['isAuthenticated'](),controller[_0x47a5('0xb')]);router['post']('/oauth2/microsoft/callback',controller[_0x47a5('0xc')]);module[_0x47a5('0xd')]=router;
\ No newline at end of file
index b7b14b7..233d842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3218=['STRING','name','sequelize','exports'];(function(_0x534ae6,_0x4e427d){var _0x1c95a1=function(_0x1fae55){while(--_0x1fae55){_0x534ae6['push'](_0x534ae6['shift']());}};_0x1c95a1(++_0x4e427d);}(_0x3218,0xee));var _0x8321=function(_0x571a17,_0x63fb3d){_0x571a17=_0x571a17-0x0;var _0x3ef337=_0x3218[_0x571a17];return _0x3ef337;};'use strict';var Sequelize=require(_0x8321('0x0'));module[_0x8321('0x1')]={'name':{'type':Sequelize[_0x8321('0x2')],'unique':_0x8321('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x8321('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x8321('0x2')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x8321('0x2')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x8321('0x2')]},'postalCode':{'type':Sequelize[_0x8321('0x2')]},'city':{'type':Sequelize[_0x8321('0x2')]},'country':{'type':Sequelize[_0x8321('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x8321('0x2')]},'sStreet':{'type':Sequelize[_0x8321('0x2')]},'sPostalCode':{'type':Sequelize[_0x8321('0x2')]},'sCity':{'type':Sequelize[_0x8321('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8321('0x2')]}};
\ No newline at end of file
+var _0x5f08=['exports','name','STRING'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x5f08,0x138));var _0x85f0=function(_0x2857d9,_0x93afd9){_0x2857d9=_0x2857d9-0x0;var _0x54a427=_0x5f08[_0x2857d9];return _0x54a427;};'use strict';var Sequelize=require('sequelize');module[_0x85f0('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x85f0('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x85f0('0x2')]},'companyId':{'type':Sequelize[_0x85f0('0x2')]},'website':{'type':Sequelize[_0x85f0('0x2')]},'phone':{'type':Sequelize[_0x85f0('0x2')]},'fax':{'type':Sequelize[_0x85f0('0x2')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x85f0('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0x85f0('0x2')]},'sPostalCode':{'type':Sequelize[_0x85f0('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index db8ea47..d585e50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70a6=['role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','ids','getContacts','findOne','CmContact','rawAttributes','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','error','stack','name','send','CmCompany','describe','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','include','findAll','rows','catch','show','params','includeAll','find','body','user'];(function(_0x321d0f,_0xc41539){var _0xbe7682=function(_0xe7f528){while(--_0xe7f528){_0x321d0f['push'](_0x321d0f['shift']());}};_0xbe7682(++_0xc41539);}(_0x70a6,0x1b8));var _0x670a=function(_0x452dd3,_0x66f4b3){_0x452dd3=_0x452dd3-0x0;var _0x4fe6b4=_0x70a6[_0x452dd3];return _0x4fe6b4;};'use strict';var emlformat=require(_0x670a('0x0'));var rimraf=require(_0x670a('0x1'));var zipdir=require(_0x670a('0x2'));var jsonpatch=require(_0x670a('0x3'));var rp=require(_0x670a('0x4'));var moment=require('moment');var BPromise=require(_0x670a('0x5'));var Mustache=require(_0x670a('0x6'));var util=require(_0x670a('0x7'));var path=require(_0x670a('0x8'));var sox=require(_0x670a('0x9'));var csv=require(_0x670a('0xa'));var ejs=require(_0x670a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x670a('0xc'));var squel=require(_0x670a('0xd'));var crypto=require(_0x670a('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x670a('0xa'));var querystring=require('querystring');var Papa=require(_0x670a('0xf'));var Redis=require(_0x670a('0x10'));var authService=require(_0x670a('0x11'));var qs=require(_0x670a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x670a('0x13'));var logger=require('../../config/logger')(_0x670a('0x14'));var utils=require(_0x670a('0x15'));var config=require(_0x670a('0x16'));var licenseUtil=require(_0x670a('0x17'));var db=require(_0x670a('0x18'))['db'];function respondWithStatusCode(_0x412bec,_0x175510){_0x175510=_0x175510||0xcc;return function(_0x3a13e9){if(_0x3a13e9){return _0x412bec[_0x670a('0x19')](_0x175510);}return _0x412bec['status'](_0x175510)[_0x670a('0x1a')]();};}function respondWithResult(_0x1f4f63,_0x5bb24a){_0x5bb24a=_0x5bb24a||0xc8;return function(_0x4ad55a){if(_0x4ad55a){return _0x1f4f63[_0x670a('0x1b')](_0x5bb24a)[_0x670a('0x1c')](_0x4ad55a);}};}function respondWithFilteredResult(_0x7dfa11,_0x15f9c8){return function(_0xc4f8a1){if(_0xc4f8a1){var _0x53e02d=typeof _0x15f9c8[_0x670a('0x1d')]===_0x670a('0x1e')&&typeof _0x15f9c8[_0x670a('0x1f')]===_0x670a('0x1e');var _0x4ec903=_0xc4f8a1[_0x670a('0x20')];var _0x590c94=_0x53e02d?0x0:_0x15f9c8[_0x670a('0x1d')];var _0x2f57bc=_0x53e02d?_0xc4f8a1[_0x670a('0x20')]:_0x15f9c8[_0x670a('0x1d')]+_0x15f9c8['limit'];var _0x157f8e;if(_0x2f57bc>=_0x4ec903){_0x2f57bc=_0x4ec903;_0x157f8e=0xc8;}else{_0x157f8e=0xce;}_0x7dfa11[_0x670a('0x1b')](_0x157f8e);return _0x7dfa11['set'](_0x670a('0x21'),_0x590c94+'-'+_0x2f57bc+'/'+_0x4ec903)[_0x670a('0x1c')](_0xc4f8a1);}return null;};}function patchUpdates(_0x3a5958){return function(_0x44350b){try{jsonpatch[_0x670a('0x22')](_0x44350b,_0x3a5958,!![]);}catch(_0x2e4821){return BPromise[_0x670a('0x23')](_0x2e4821);}return _0x44350b[_0x670a('0x24')]();};}function saveUpdates(_0x32884a,_0x5e1db4){return function(_0x16d9bc){if(_0x16d9bc){return _0x16d9bc[_0x670a('0x25')](_0x32884a)['then'](function(_0x18127b){return _0x18127b;});}return null;};}function removeEntity(_0x42e9e4,_0x56b4e4){return function(_0x27f7d1){if(_0x27f7d1){return _0x27f7d1[_0x670a('0x26')]()[_0x670a('0x27')](function(){var _0x1b3470=_0x27f7d1[_0x670a('0x28')]({'plain':!![]});var _0x247cf4='Companies';return db[_0x670a('0x29')][_0x670a('0x26')]({'where':{'type':_0x247cf4,'resourceId':_0x1b3470['id']}})[_0x670a('0x27')](function(){return _0x27f7d1;});})[_0x670a('0x27')](function(){_0x42e9e4[_0x670a('0x1b')](0xcc)[_0x670a('0x1a')]();});}};}function handleEntityNotFound(_0x186d97,_0x5e8c00){return function(_0x4d62b3){if(!_0x4d62b3){_0x186d97[_0x670a('0x19')](0x194);}return _0x4d62b3;};}function handleError(_0x4bd804,_0x2348be){_0x2348be=_0x2348be||0x1f4;return function(_0x32ac46){logger[_0x670a('0x2a')](_0x32ac46[_0x670a('0x2b')]);if(_0x32ac46[_0x670a('0x2c')]){delete _0x32ac46[_0x670a('0x2c')];}_0x4bd804['status'](_0x2348be)[_0x670a('0x2d')](_0x32ac46);};}exports['index']=function(_0x4d7605,_0xfebc78){var _0x153b71={},_0x1a3739={},_0x5cb11c={'count':0x0,'rows':[]};return db[_0x670a('0x2e')][_0x670a('0x2f')]()['then'](function(_0x52c696){_0x1a3739[_0x670a('0x30')]=_[_0x670a('0x31')](_0x52c696);_0x1a3739[_0x670a('0x32')]=_[_0x670a('0x31')](_0x4d7605['query']);_0x1a3739[_0x670a('0x33')]=_[_0x670a('0x34')](_0x1a3739[_0x670a('0x30')],_0x1a3739[_0x670a('0x32')]);_0x153b71['attributes']=_['intersection'](_0x1a3739['model'],qs[_0x670a('0x35')](_0x4d7605['query'][_0x670a('0x35')]));_0x153b71[_0x670a('0x36')]=_0x153b71[_0x670a('0x36')][_0x670a('0x37')]?_0x153b71['attributes']:_0x1a3739[_0x670a('0x30')];if(!_0x4d7605[_0x670a('0x32')][_0x670a('0x38')](_0x670a('0x39'))){_0x153b71[_0x670a('0x1f')]=qs[_0x670a('0x1f')](_0x4d7605[_0x670a('0x32')][_0x670a('0x1f')]);_0x153b71[_0x670a('0x1d')]=qs['offset'](_0x4d7605[_0x670a('0x32')][_0x670a('0x1d')]);}_0x153b71[_0x670a('0x3a')]=qs[_0x670a('0x3b')](_0x4d7605[_0x670a('0x32')][_0x670a('0x3b')]);_0x153b71[_0x670a('0x3c')]=qs['filters'](_[_0x670a('0x3d')](_0x4d7605[_0x670a('0x32')],_0x1a3739[_0x670a('0x33')]),_0x52c696);if(_0x4d7605[_0x670a('0x32')][_0x670a('0x3e')]){_0x153b71[_0x670a('0x3c')]=_[_0x670a('0x3f')](_0x153b71['where'],{'$or':_[_0x670a('0x40')](_0x153b71[_0x670a('0x36')],function(_0x44c609){var _0x140487={};_0x140487[_0x44c609]={'$like':'%'+_0x4d7605['query'][_0x670a('0x3e')]+'%'};return _0x140487;})});}_0x153b71=_['merge']({},_0x153b71,_0x4d7605[_0x670a('0x41')]);var _0x5d96bb={'where':_0x153b71[_0x670a('0x3c')]};return db[_0x670a('0x2e')]['count'](_0x5d96bb)[_0x670a('0x27')](function(_0x23806a){_0x5cb11c[_0x670a('0x20')]=_0x23806a;if(_0x4d7605[_0x670a('0x32')]['includeAll']){_0x153b71[_0x670a('0x42')]=[{'all':!![]}];}return db[_0x670a('0x2e')][_0x670a('0x43')](_0x153b71);})[_0x670a('0x27')](function(_0x4d51f1){_0x5cb11c[_0x670a('0x44')]=_0x4d51f1;return _0x5cb11c;})['then'](respondWithFilteredResult(_0xfebc78,_0x153b71))[_0x670a('0x45')](handleError(_0xfebc78,null));})[_0x670a('0x45')](handleError(_0xfebc78,null));};exports[_0x670a('0x46')]=function(_0x4659e8,_0x3dcabd){var _0x4268e9={'raw':![],'where':{'id':_0x4659e8[_0x670a('0x47')]['id']}},_0x466259={};_0x466259[_0x670a('0x30')]=_[_0x670a('0x31')](db[_0x670a('0x2e')]['rawAttributes']);_0x466259[_0x670a('0x32')]=_[_0x670a('0x31')](_0x4659e8['query']);_0x466259[_0x670a('0x33')]=_['intersection'](_0x466259[_0x670a('0x30')],_0x466259[_0x670a('0x32')]);_0x4268e9[_0x670a('0x36')]=_[_0x670a('0x34')](_0x466259[_0x670a('0x30')],qs[_0x670a('0x35')](_0x4659e8[_0x670a('0x32')][_0x670a('0x35')]));_0x4268e9[_0x670a('0x36')]=_0x4268e9[_0x670a('0x36')]['length']?_0x4268e9[_0x670a('0x36')]:_0x466259[_0x670a('0x30')];if(_0x4659e8[_0x670a('0x32')][_0x670a('0x48')]){_0x4268e9[_0x670a('0x42')]=[{'all':!![]}];}_0x4268e9=_['merge']({},_0x4268e9,_0x4659e8[_0x670a('0x41')]);return db[_0x670a('0x2e')][_0x670a('0x49')](_0x4268e9)[_0x670a('0x27')](handleEntityNotFound(_0x3dcabd,null))['then'](respondWithResult(_0x3dcabd,null))['catch'](handleError(_0x3dcabd,null));};exports['create']=function(_0x3447d3,_0x282dee){return db[_0x670a('0x2e')]['create'](_0x3447d3[_0x670a('0x4a')],{})[_0x670a('0x27')](function(_0x4581d2){var _0x4d9949=_0x3447d3[_0x670a('0x4b')][_0x670a('0x28')]({'plain':!![]});if(!_0x4d9949)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4d9949[_0x670a('0x4c')]===_0x670a('0x4b')){var _0x5259f5=_0x4581d2[_0x670a('0x28')]({'plain':!![]});var _0x596844='Companies';return db['UserProfileSection'][_0x670a('0x49')]({'where':{'name':_0x596844,'userProfileId':_0x4d9949[_0x670a('0x4d')]},'raw':!![]})[_0x670a('0x27')](function(_0x4a2fc9){if(_0x4a2fc9&&_0x4a2fc9[_0x670a('0x4e')]===0x0){return db[_0x670a('0x29')][_0x670a('0x4f')]({'name':_0x5259f5[_0x670a('0x2c')],'resourceId':_0x5259f5['id'],'type':_0x4a2fc9[_0x670a('0x2c')],'sectionId':_0x4a2fc9['id']},{})['then'](function(){return _0x4581d2;});}else{return _0x4581d2;}})[_0x670a('0x45')](function(_0x12d55b){logger[_0x670a('0x2a')](_0x670a('0x50'),_0x12d55b);throw _0x12d55b;});}return _0x4581d2;})[_0x670a('0x27')](respondWithResult(_0x282dee,0xc9))[_0x670a('0x45')](handleError(_0x282dee,null));};exports[_0x670a('0x25')]=function(_0x22ea86,_0x4739fa){if(_0x22ea86[_0x670a('0x4a')]['id']){delete _0x22ea86[_0x670a('0x4a')]['id'];}return db[_0x670a('0x2e')][_0x670a('0x49')]({'where':{'id':_0x22ea86[_0x670a('0x47')]['id']}})[_0x670a('0x27')](handleEntityNotFound(_0x4739fa,null))[_0x670a('0x27')](saveUpdates(_0x22ea86['body'],null))[_0x670a('0x27')](respondWithResult(_0x4739fa,null))[_0x670a('0x45')](handleError(_0x4739fa,null));};exports[_0x670a('0x26')]=function(_0x52aed8,_0x293d88){return db[_0x670a('0x2e')][_0x670a('0x49')]({'where':{'id':_0x52aed8[_0x670a('0x47')]['id']}})[_0x670a('0x27')](handleEntityNotFound(_0x293d88,null))[_0x670a('0x27')](removeEntity(_0x293d88,null))[_0x670a('0x45')](handleError(_0x293d88,null));};exports[_0x670a('0x2f')]=function(_0x16a88c,_0x3b8ea8){return db['CmCompany']['describe']()['then'](respondWithResult(_0x3b8ea8,null))[_0x670a('0x45')](handleError(_0x3b8ea8,null));};exports['addContacts']=function(_0x11978b,_0x5adbee,_0x30e0bd){return db['CmContact'][_0x670a('0x49')]({'where':{'id':_0x11978b[_0x670a('0x47')]['id']}})[_0x670a('0x27')](handleEntityNotFound(_0x5adbee,null))[_0x670a('0x27')](function(_0x310e86){if(_0x310e86){return _0x310e86['addContacts'](_0x11978b['body']['ids'],_['omit'](_0x11978b[_0x670a('0x4a')],[_0x670a('0x51'),'id'])||{});}})[_0x670a('0x27')](respondWithResult(_0x5adbee,null))[_0x670a('0x45')](handleError(_0x5adbee,null));};exports[_0x670a('0x52')]=function(_0x5da729,_0x5e0562,_0x215416){var _0x397c92={};var _0x1d74f8={};var _0x185864;var _0x354b0f;return db['CmCompany'][_0x670a('0x53')]({'where':{'id':_0x5da729[_0x670a('0x47')]['id']}})[_0x670a('0x27')](handleEntityNotFound(_0x5e0562,null))[_0x670a('0x27')](function(_0x53a46b){if(_0x53a46b){_0x185864=_0x53a46b;_0x1d74f8['model']=_[_0x670a('0x31')](db[_0x670a('0x54')][_0x670a('0x55')]);_0x1d74f8[_0x670a('0x32')]=_[_0x670a('0x31')](_0x5da729[_0x670a('0x32')]);_0x1d74f8[_0x670a('0x33')]=_[_0x670a('0x34')](_0x1d74f8[_0x670a('0x30')],_0x1d74f8[_0x670a('0x32')]);_0x397c92['attributes']=_[_0x670a('0x34')](_0x1d74f8[_0x670a('0x30')],qs['fields'](_0x5da729[_0x670a('0x32')][_0x670a('0x35')]));_0x397c92[_0x670a('0x36')]=_0x397c92[_0x670a('0x36')]['length']?_0x397c92[_0x670a('0x36')]:_0x1d74f8[_0x670a('0x30')];_0x397c92['order']=qs[_0x670a('0x3b')](_0x5da729[_0x670a('0x32')][_0x670a('0x3b')]);_0x397c92[_0x670a('0x3c')]=qs[_0x670a('0x33')](_[_0x670a('0x3d')](_0x5da729[_0x670a('0x32')],_0x1d74f8[_0x670a('0x33')]));if(_0x5da729['query']['filter']){_0x397c92[_0x670a('0x3c')]=_['merge'](_0x397c92['where'],{'$or':_[_0x670a('0x40')](_0x397c92['attributes'],function(_0x15b3cc){var _0x10216c={};_0x10216c[_0x15b3cc]={'$like':'%'+_0x5da729['query'][_0x670a('0x3e')]+'%'};return _0x10216c;})});}_0x397c92=_['merge']({},_0x397c92,_0x5da729[_0x670a('0x41')]);return _0x185864[_0x670a('0x52')](_0x397c92);}})[_0x670a('0x27')](function(_0x49ab4b){if(_0x49ab4b){_0x354b0f=_0x49ab4b[_0x670a('0x37')];if(!_0x5da729['query']['hasOwnProperty'](_0x670a('0x39'))){_0x397c92[_0x670a('0x1f')]=qs[_0x670a('0x1f')](_0x5da729[_0x670a('0x32')][_0x670a('0x1f')]);_0x397c92[_0x670a('0x1d')]=qs[_0x670a('0x1d')](_0x5da729['query'][_0x670a('0x1d')]);}return _0x185864['getContacts'](_0x397c92);}})[_0x670a('0x27')](function(_0x267592){if(_0x267592){return _0x267592?{'count':_0x354b0f,'rows':_0x267592}:null;}})[_0x670a('0x27')](respondWithResult(_0x5e0562,null))['catch'](handleError(_0x5e0562,null));};
\ No newline at end of file
+var _0xe733=['set','apply','save','update','destroy','get','UserProfileResource','then','error','stack','name','send','index','CmCompany','describe','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','findAll','catch','show','params','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Companies','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContact','addContacts','ids','omit','getContacts','findOne','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count'];(function(_0xb15971,_0x839878){var _0x1ec56d=function(_0x3764b0){while(--_0x3764b0){_0xb15971['push'](_0xb15971['shift']());}};_0x1ec56d(++_0x839878);}(_0xe733,0x1e1));var _0x3e73=function(_0xd3a254,_0x3b20d3){_0xd3a254=_0xd3a254-0x0;var _0x2dd3dd=_0xe733[_0xd3a254];return _0x2dd3dd;};'use strict';var emlformat=require(_0x3e73('0x0'));var rimraf=require(_0x3e73('0x1'));var zipdir=require(_0x3e73('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3e73('0x3'));var moment=require(_0x3e73('0x4'));var BPromise=require(_0x3e73('0x5'));var Mustache=require(_0x3e73('0x6'));var util=require('util');var path=require(_0x3e73('0x7'));var sox=require('sox');var csv=require(_0x3e73('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3e73('0x9'));var squel=require('squel');var crypto=require(_0x3e73('0xa'));var jsforce=require(_0x3e73('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3e73('0xc'));var Papa=require('papaparse');var Redis=require(_0x3e73('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x3e73('0xe'));var as=require(_0x3e73('0xf'));var hardwareService=require(_0x3e73('0x10'));var logger=require(_0x3e73('0x11'))(_0x3e73('0x12'));var utils=require(_0x3e73('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x3e73('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cbddf,_0x379c6c){_0x379c6c=_0x379c6c||0xcc;return function(_0x2f3f58){if(_0x2f3f58){return _0x4cbddf[_0x3e73('0x15')](_0x379c6c);}return _0x4cbddf[_0x3e73('0x16')](_0x379c6c)[_0x3e73('0x17')]();};}function respondWithResult(_0x5ea485,_0x4f8d44){_0x4f8d44=_0x4f8d44||0xc8;return function(_0x419fd8){if(_0x419fd8){return _0x5ea485[_0x3e73('0x16')](_0x4f8d44)[_0x3e73('0x18')](_0x419fd8);}};}function respondWithFilteredResult(_0x35bfc5,_0xc5d0e9){return function(_0x112b8c){if(_0x112b8c){var _0x161fe7=typeof _0xc5d0e9[_0x3e73('0x19')]==='undefined'&&typeof _0xc5d0e9[_0x3e73('0x1a')]===_0x3e73('0x1b');var _0x59d197=_0x112b8c[_0x3e73('0x1c')];var _0x61da7f=_0x161fe7?0x0:_0xc5d0e9[_0x3e73('0x19')];var _0x6a0b9=_0x161fe7?_0x112b8c[_0x3e73('0x1c')]:_0xc5d0e9[_0x3e73('0x19')]+_0xc5d0e9[_0x3e73('0x1a')];var _0x569f92;if(_0x6a0b9>=_0x59d197){_0x6a0b9=_0x59d197;_0x569f92=0xc8;}else{_0x569f92=0xce;}_0x35bfc5[_0x3e73('0x16')](_0x569f92);return _0x35bfc5[_0x3e73('0x1d')]('Content-Range',_0x61da7f+'-'+_0x6a0b9+'/'+_0x59d197)['json'](_0x112b8c);}return null;};}function patchUpdates(_0x11ad4c){return function(_0x4368a6){try{jsonpatch[_0x3e73('0x1e')](_0x4368a6,_0x11ad4c,!![]);}catch(_0x4e56df){return BPromise['reject'](_0x4e56df);}return _0x4368a6[_0x3e73('0x1f')]();};}function saveUpdates(_0x3858fe,_0x268c5e){return function(_0x3ea07c){if(_0x3ea07c){return _0x3ea07c[_0x3e73('0x20')](_0x3858fe)['then'](function(_0x4fb919){return _0x4fb919;});}return null;};}function removeEntity(_0x2b8e71,_0x2c5f3b){return function(_0x4f6c58){if(_0x4f6c58){return _0x4f6c58[_0x3e73('0x21')]()['then'](function(){var _0x198fdb=_0x4f6c58[_0x3e73('0x22')]({'plain':!![]});var _0x3a8327='Companies';return db[_0x3e73('0x23')][_0x3e73('0x21')]({'where':{'type':_0x3a8327,'resourceId':_0x198fdb['id']}})[_0x3e73('0x24')](function(){return _0x4f6c58;});})[_0x3e73('0x24')](function(){_0x2b8e71[_0x3e73('0x16')](0xcc)[_0x3e73('0x17')]();});}};}function handleEntityNotFound(_0x18de42,_0x4f7572){return function(_0x4e83a3){if(!_0x4e83a3){_0x18de42['sendStatus'](0x194);}return _0x4e83a3;};}function handleError(_0x140be0,_0x57f408){_0x57f408=_0x57f408||0x1f4;return function(_0xa24f05){logger[_0x3e73('0x25')](_0xa24f05[_0x3e73('0x26')]);if(_0xa24f05[_0x3e73('0x27')]){delete _0xa24f05[_0x3e73('0x27')];}_0x140be0[_0x3e73('0x16')](_0x57f408)[_0x3e73('0x28')](_0xa24f05);};}exports[_0x3e73('0x29')]=function(_0x4e9914,_0x5dc4a6){var _0x1aea96={},_0x410049={},_0x331b47={'count':0x0,'rows':[]};return db[_0x3e73('0x2a')][_0x3e73('0x2b')]()[_0x3e73('0x24')](function(_0x15ca5f){_0x410049[_0x3e73('0x2c')]=_[_0x3e73('0x2d')](_0x15ca5f);_0x410049['query']=_['keys'](_0x4e9914[_0x3e73('0x2e')]);_0x410049[_0x3e73('0x2f')]=_['intersection'](_0x410049[_0x3e73('0x2c')],_0x410049[_0x3e73('0x2e')]);_0x1aea96[_0x3e73('0x30')]=_[_0x3e73('0x31')](_0x410049[_0x3e73('0x2c')],qs['fields'](_0x4e9914[_0x3e73('0x2e')][_0x3e73('0x32')]));_0x1aea96[_0x3e73('0x30')]=_0x1aea96[_0x3e73('0x30')][_0x3e73('0x33')]?_0x1aea96['attributes']:_0x410049[_0x3e73('0x2c')];if(!_0x4e9914[_0x3e73('0x2e')][_0x3e73('0x34')](_0x3e73('0x35'))){_0x1aea96['limit']=qs[_0x3e73('0x1a')](_0x4e9914['query'][_0x3e73('0x1a')]);_0x1aea96['offset']=qs['offset'](_0x4e9914['query'][_0x3e73('0x19')]);}_0x1aea96[_0x3e73('0x36')]=qs['sort'](_0x4e9914[_0x3e73('0x2e')][_0x3e73('0x37')]);_0x1aea96[_0x3e73('0x38')]=qs[_0x3e73('0x2f')](_[_0x3e73('0x39')](_0x4e9914['query'],_0x410049[_0x3e73('0x2f')]),_0x15ca5f);if(_0x4e9914[_0x3e73('0x2e')][_0x3e73('0x3a')]){_0x1aea96[_0x3e73('0x38')]=_[_0x3e73('0x3b')](_0x1aea96['where'],{'$or':_[_0x3e73('0x3c')](_0x1aea96['attributes'],function(_0x37cff8){var _0x5f2940={};_0x5f2940[_0x37cff8]={'$like':'%'+_0x4e9914[_0x3e73('0x2e')][_0x3e73('0x3a')]+'%'};return _0x5f2940;})});}_0x1aea96=_['merge']({},_0x1aea96,_0x4e9914[_0x3e73('0x3d')]);var _0x31fd2c={'where':_0x1aea96[_0x3e73('0x38')]};return db['CmCompany'][_0x3e73('0x1c')](_0x31fd2c)[_0x3e73('0x24')](function(_0x59b52e){_0x331b47[_0x3e73('0x1c')]=_0x59b52e;if(_0x4e9914[_0x3e73('0x2e')][_0x3e73('0x3e')]){_0x1aea96['include']=[{'all':!![]}];}return db[_0x3e73('0x2a')][_0x3e73('0x3f')](_0x1aea96);})[_0x3e73('0x24')](function(_0x289677){_0x331b47['rows']=_0x289677;return _0x331b47;})[_0x3e73('0x24')](respondWithFilteredResult(_0x5dc4a6,_0x1aea96))[_0x3e73('0x40')](handleError(_0x5dc4a6,null));})[_0x3e73('0x40')](handleError(_0x5dc4a6,null));};exports[_0x3e73('0x41')]=function(_0x1d6527,_0x2e16a7){var _0x3651d1={'raw':![],'where':{'id':_0x1d6527[_0x3e73('0x42')]['id']}},_0xfd9871={};_0xfd9871[_0x3e73('0x2c')]=_[_0x3e73('0x2d')](db['CmCompany'][_0x3e73('0x43')]);_0xfd9871[_0x3e73('0x2e')]=_[_0x3e73('0x2d')](_0x1d6527['query']);_0xfd9871[_0x3e73('0x2f')]=_[_0x3e73('0x31')](_0xfd9871[_0x3e73('0x2c')],_0xfd9871[_0x3e73('0x2e')]);_0x3651d1['attributes']=_['intersection'](_0xfd9871[_0x3e73('0x2c')],qs[_0x3e73('0x32')](_0x1d6527[_0x3e73('0x2e')][_0x3e73('0x32')]));_0x3651d1[_0x3e73('0x30')]=_0x3651d1['attributes'][_0x3e73('0x33')]?_0x3651d1[_0x3e73('0x30')]:_0xfd9871[_0x3e73('0x2c')];if(_0x1d6527[_0x3e73('0x2e')][_0x3e73('0x3e')]){_0x3651d1['include']=[{'all':!![]}];}_0x3651d1=_[_0x3e73('0x3b')]({},_0x3651d1,_0x1d6527['options']);return db[_0x3e73('0x2a')][_0x3e73('0x44')](_0x3651d1)[_0x3e73('0x24')](handleEntityNotFound(_0x2e16a7,null))[_0x3e73('0x24')](respondWithResult(_0x2e16a7,null))[_0x3e73('0x40')](handleError(_0x2e16a7,null));};exports[_0x3e73('0x45')]=function(_0x1c7ace,_0x596aa6){return db['CmCompany'][_0x3e73('0x45')](_0x1c7ace[_0x3e73('0x46')],{})['then'](function(_0x4fd38e){var _0x4bb59f=_0x1c7ace['user'][_0x3e73('0x22')]({'plain':!![]});if(!_0x4bb59f)throw new Error(_0x3e73('0x47'));if(_0x4bb59f[_0x3e73('0x48')]===_0x3e73('0x49')){var _0x5e4d48=_0x4fd38e[_0x3e73('0x22')]({'plain':!![]});var _0x54437e=_0x3e73('0x4a');return db[_0x3e73('0x4b')][_0x3e73('0x44')]({'where':{'name':_0x54437e,'userProfileId':_0x4bb59f[_0x3e73('0x4c')]},'raw':!![]})[_0x3e73('0x24')](function(_0xf270a6){if(_0xf270a6&&_0xf270a6[_0x3e73('0x4d')]===0x0){return db[_0x3e73('0x23')]['create']({'name':_0x5e4d48[_0x3e73('0x27')],'resourceId':_0x5e4d48['id'],'type':_0xf270a6['name'],'sectionId':_0xf270a6['id']},{})['then'](function(){return _0x4fd38e;});}else{return _0x4fd38e;}})['catch'](function(_0x56502d){logger['error'](_0x3e73('0x4e'),_0x56502d);throw _0x56502d;});}return _0x4fd38e;})[_0x3e73('0x24')](respondWithResult(_0x596aa6,0xc9))[_0x3e73('0x40')](handleError(_0x596aa6,null));};exports[_0x3e73('0x20')]=function(_0x3d2849,_0x4e412b){if(_0x3d2849['body']['id']){delete _0x3d2849[_0x3e73('0x46')]['id'];}return db[_0x3e73('0x2a')][_0x3e73('0x44')]({'where':{'id':_0x3d2849[_0x3e73('0x42')]['id']}})[_0x3e73('0x24')](handleEntityNotFound(_0x4e412b,null))[_0x3e73('0x24')](saveUpdates(_0x3d2849[_0x3e73('0x46')],null))[_0x3e73('0x24')](respondWithResult(_0x4e412b,null))[_0x3e73('0x40')](handleError(_0x4e412b,null));};exports['destroy']=function(_0x318262,_0x4e0cf9){return db['CmCompany']['find']({'where':{'id':_0x318262[_0x3e73('0x42')]['id']}})[_0x3e73('0x24')](handleEntityNotFound(_0x4e0cf9,null))[_0x3e73('0x24')](removeEntity(_0x4e0cf9,null))['catch'](handleError(_0x4e0cf9,null));};exports[_0x3e73('0x2b')]=function(_0x4c4472,_0x278332){return db[_0x3e73('0x2a')][_0x3e73('0x2b')]()['then'](respondWithResult(_0x278332,null))['catch'](handleError(_0x278332,null));};exports['addContacts']=function(_0xc21e59,_0x76c39f,_0x3ae5c5){return db[_0x3e73('0x4f')]['find']({'where':{'id':_0xc21e59[_0x3e73('0x42')]['id']}})[_0x3e73('0x24')](handleEntityNotFound(_0x76c39f,null))['then'](function(_0x20aa6f){if(_0x20aa6f){return _0x20aa6f[_0x3e73('0x50')](_0xc21e59['body'][_0x3e73('0x51')],_[_0x3e73('0x52')](_0xc21e59[_0x3e73('0x46')],[_0x3e73('0x51'),'id'])||{});}})[_0x3e73('0x24')](respondWithResult(_0x76c39f,null))[_0x3e73('0x40')](handleError(_0x76c39f,null));};exports[_0x3e73('0x53')]=function(_0x3ac4ff,_0x5cb54b,_0x33a7ca){var _0xb81a1e={};var _0x1cd794={};var _0x134514;var _0x835343;return db[_0x3e73('0x2a')][_0x3e73('0x54')]({'where':{'id':_0x3ac4ff[_0x3e73('0x42')]['id']}})[_0x3e73('0x24')](handleEntityNotFound(_0x5cb54b,null))[_0x3e73('0x24')](function(_0x3fedb9){if(_0x3fedb9){_0x134514=_0x3fedb9;_0x1cd794[_0x3e73('0x2c')]=_['keys'](db['CmContact'][_0x3e73('0x43')]);_0x1cd794[_0x3e73('0x2e')]=_['keys'](_0x3ac4ff[_0x3e73('0x2e')]);_0x1cd794[_0x3e73('0x2f')]=_['intersection'](_0x1cd794[_0x3e73('0x2c')],_0x1cd794['query']);_0xb81a1e[_0x3e73('0x30')]=_[_0x3e73('0x31')](_0x1cd794['model'],qs[_0x3e73('0x32')](_0x3ac4ff[_0x3e73('0x2e')][_0x3e73('0x32')]));_0xb81a1e['attributes']=_0xb81a1e[_0x3e73('0x30')][_0x3e73('0x33')]?_0xb81a1e[_0x3e73('0x30')]:_0x1cd794[_0x3e73('0x2c')];_0xb81a1e['order']=qs['sort'](_0x3ac4ff[_0x3e73('0x2e')][_0x3e73('0x37')]);_0xb81a1e['where']=qs[_0x3e73('0x2f')](_[_0x3e73('0x39')](_0x3ac4ff['query'],_0x1cd794[_0x3e73('0x2f')]));if(_0x3ac4ff[_0x3e73('0x2e')]['filter']){_0xb81a1e[_0x3e73('0x38')]=_['merge'](_0xb81a1e[_0x3e73('0x38')],{'$or':_[_0x3e73('0x3c')](_0xb81a1e[_0x3e73('0x30')],function(_0x1849db){var _0x11eb7f={};_0x11eb7f[_0x1849db]={'$like':'%'+_0x3ac4ff[_0x3e73('0x2e')][_0x3e73('0x3a')]+'%'};return _0x11eb7f;})});}_0xb81a1e=_[_0x3e73('0x3b')]({},_0xb81a1e,_0x3ac4ff['options']);return _0x134514[_0x3e73('0x53')](_0xb81a1e);}})['then'](function(_0x1b0ba6){if(_0x1b0ba6){_0x835343=_0x1b0ba6['length'];if(!_0x3ac4ff[_0x3e73('0x2e')][_0x3e73('0x34')](_0x3e73('0x35'))){_0xb81a1e['limit']=qs['limit'](_0x3ac4ff[_0x3e73('0x2e')]['limit']);_0xb81a1e['offset']=qs[_0x3e73('0x19')](_0x3ac4ff[_0x3e73('0x2e')][_0x3e73('0x19')]);}return _0x134514[_0x3e73('0x53')](_0xb81a1e);}})[_0x3e73('0x24')](function(_0x1235fd){if(_0x1235fd){return _0x1235fd?{'count':_0x835343,'rows':_0x1235fd}:null;}})[_0x3e73('0x24')](respondWithResult(_0x5cb54b,null))[_0x3e73('0x40')](handleError(_0x5cb54b,null));};
\ No newline at end of file
index 5f0e4ac..290f032 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e67=['api','moment','path','rimraf','./cmCompany.attributes','exports','CmCompany','lodash','util'];(function(_0x595ff5,_0x4c6ca7){var _0xfc8c3d=function(_0x1f0c2b){while(--_0x1f0c2b){_0x595ff5['push'](_0x595ff5['shift']());}};_0xfc8c3d(++_0x4c6ca7);}(_0x9e67,0xa0));var _0x79e6=function(_0x2a8fde,_0x3fe08c){_0x2a8fde=_0x2a8fde-0x0;var _0x27c905=_0x9e67[_0x2a8fde];return _0x27c905;};'use strict';var _=require(_0x79e6('0x0'));var util=require(_0x79e6('0x1'));var logger=require('../../config/logger')(_0x79e6('0x2'));var moment=require(_0x79e6('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x79e6('0x4'));var rimraf=require(_0x79e6('0x5'));var config=require('../../config/environment');var attributes=require(_0x79e6('0x6'));module[_0x79e6('0x7')]=function(_0x5526b6,_0x59b37c){return _0x5526b6['define'](_0x79e6('0x8'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c83=['exports','define','cm_companies','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes'];(function(_0x12781,_0x5e49b5){var _0x5a88db=function(_0x35f86e){while(--_0x35f86e){_0x12781['push'](_0x12781['shift']());}};_0x5a88db(++_0x5e49b5);}(_0x4c83,0x1d1));var _0x34c8=function(_0x11b377,_0x2f7ccd){_0x11b377=_0x11b377-0x0;var _0x3f5e73=_0x4c83[_0x11b377];return _0x3f5e73;};'use strict';var _=require(_0x34c8('0x0'));var util=require(_0x34c8('0x1'));var logger=require(_0x34c8('0x2'))(_0x34c8('0x3'));var moment=require(_0x34c8('0x4'));var BPromise=require(_0x34c8('0x5'));var rp=require(_0x34c8('0x6'));var fs=require('fs');var path=require(_0x34c8('0x7'));var rimraf=require(_0x34c8('0x8'));var config=require(_0x34c8('0x9'));var attributes=require(_0x34c8('0xa'));module[_0x34c8('0xb')]=function(_0x5eaf6b,_0x221fc1){return _0x5eaf6b[_0x34c8('0xc')]('CmCompany',attributes,{'tableName':_0x34c8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d2a8b55..98574da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12f3=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x4167da,_0x2f596e){var _0x2d3fdb=function(_0x18b1ad){while(--_0x18b1ad){_0x4167da['push'](_0x4167da['shift']());}};_0x2d3fdb(++_0x2f596e);}(_0x12f3,0x13c));var _0x312f=function(_0x1eacc8,_0x2724ef){_0x1eacc8=_0x1eacc8-0x0;var _0x14a837=_0x12f3[_0x1eacc8];return _0x14a837;};'use strict';var _=require(_0x312f('0x0'));var util=require(_0x312f('0x1'));var moment=require('moment');var BPromise=require(_0x312f('0x2'));var rs=require(_0x312f('0x3'));var fs=require('fs');var Redis=require(_0x312f('0x4'));var db=require(_0x312f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x312f('0x6'))(_0x312f('0x7'));var config=require('../../config/environment');var jayson=require(_0x312f('0x8'));var client=jayson[_0x312f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x335a81,_0x1abd30,_0x4292e7){return new BPromise(function(_0x5b100d,_0x1eda88){return client[_0x312f('0xa')](_0x335a81,_0x4292e7)[_0x312f('0xb')](function(_0x1ee8cb){logger[_0x312f('0xc')](_0x312f('0xd'),_0x1abd30,_0x312f('0xe'));logger[_0x312f('0xf')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x1abd30,_0x312f('0xe'),JSON[_0x312f('0x10')](_0x1ee8cb));if(_0x1ee8cb['error']){if(_0x1ee8cb[_0x312f('0x11')]['code']===0x1f4){logger[_0x312f('0x11')](_0x312f('0xd'),_0x1abd30,_0x1ee8cb[_0x312f('0x11')][_0x312f('0x12')]);return _0x1eda88(_0x1ee8cb[_0x312f('0x11')]['message']);}logger['error']('CmCompany,\x20%s,\x20%s',_0x1abd30,_0x1ee8cb[_0x312f('0x11')]['message']);return _0x5b100d(_0x1ee8cb[_0x312f('0x11')]['message']);}else{logger[_0x312f('0xc')](_0x312f('0xd'),_0x1abd30,_0x312f('0xe'));_0x5b100d(_0x1ee8cb[_0x312f('0x13')][_0x312f('0x12')]);}})[_0x312f('0x14')](function(_0x514995){logger[_0x312f('0x11')](_0x312f('0xd'),_0x1abd30,_0x514995);_0x1eda88(_0x514995);});});}
\ No newline at end of file
+var _0xd03a=['code','message','request\x20sent','result','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','CmCompany,\x20%s,\x20%s','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0xd03a,0x17e));var _0xad03=function(_0x14977e,_0x18fb88){_0x14977e=_0x14977e-0x0;var _0x1892b8=_0xd03a[_0x14977e];return _0x1892b8;};'use strict';var _=require(_0xad03('0x0'));var util=require('util');var moment=require(_0xad03('0x1'));var BPromise=require(_0xad03('0x2'));var rs=require(_0xad03('0x3'));var fs=require('fs');var Redis=require(_0xad03('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xad03('0x5'))('rpc');var config=require(_0xad03('0x6'));var jayson=require(_0xad03('0x7'));var client=jayson['client'][_0xad03('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x50d301,_0x589c21,_0x24d557){return new BPromise(function(_0x4b5aa4,_0x47583b){return client[_0xad03('0x9')](_0x50d301,_0x24d557)[_0xad03('0xa')](function(_0x2452f5){logger[_0xad03('0xb')](_0xad03('0xc'),_0x589c21,'request\x20sent');logger[_0xad03('0xd')](_0xad03('0xe'),_0x589c21,'request\x20sent',JSON[_0xad03('0xf')](_0x2452f5));if(_0x2452f5[_0xad03('0x10')]){if(_0x2452f5[_0xad03('0x10')][_0xad03('0x11')]===0x1f4){logger[_0xad03('0x10')]('CmCompany,\x20%s,\x20%s',_0x589c21,_0x2452f5[_0xad03('0x10')][_0xad03('0x12')]);return _0x47583b(_0x2452f5['error'][_0xad03('0x12')]);}logger['error'](_0xad03('0xc'),_0x589c21,_0x2452f5['error'][_0xad03('0x12')]);return _0x4b5aa4(_0x2452f5['error']['message']);}else{logger[_0xad03('0xb')](_0xad03('0xc'),_0x589c21,_0xad03('0x13'));_0x4b5aa4(_0x2452f5[_0xad03('0x14')][_0xad03('0x12')]);}})['catch'](function(_0x43f79b){logger[_0xad03('0x10')](_0xad03('0xc'),_0x589c21,_0x43f79b);_0x47583b(_0x43f79b);});});}
\ No newline at end of file
index a07f616..222f2d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e8a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','describe','/:id','/:id/contacts','getContacts','post','create','addContacts','put','delete','destroy','exports','util','path','express','Router'];(function(_0x4bb2b9,_0x459c78){var _0x40e2a2=function(_0x19a26c){while(--_0x19a26c){_0x4bb2b9['push'](_0x4bb2b9['shift']());}};_0x40e2a2(++_0x459c78);}(_0x8e8a,0x9d));var _0xa8e8=function(_0xc39dbc,_0x56830c){_0xc39dbc=_0xc39dbc-0x0;var _0x46fa74=_0x8e8a[_0xc39dbc];return _0x46fa74;};'use strict';var multer=require('multer');var util=require(_0xa8e8('0x0'));var path=require(_0xa8e8('0x1'));var timeout=require('connect-timeout');var express=require(_0xa8e8('0x2'));var router=express[_0xa8e8('0x3')]();var fs_extra=require(_0xa8e8('0x4'));var auth=require(_0xa8e8('0x5'));var interaction=require(_0xa8e8('0x6'));var config=require(_0xa8e8('0x7'));var controller=require(_0xa8e8('0x8'));router[_0xa8e8('0x9')]('/',auth[_0xa8e8('0xa')](),controller[_0xa8e8('0xb')]);router[_0xa8e8('0x9')]('/describe',auth[_0xa8e8('0xa')](),controller[_0xa8e8('0xc')]);router[_0xa8e8('0x9')](_0xa8e8('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xa8e8('0x9')](_0xa8e8('0xe'),auth[_0xa8e8('0xa')](),controller[_0xa8e8('0xf')]);router[_0xa8e8('0x10')]('/',auth[_0xa8e8('0xa')](),controller[_0xa8e8('0x11')]);router[_0xa8e8('0x10')](_0xa8e8('0xe'),auth['isAuthenticated'](),controller[_0xa8e8('0x12')]);router[_0xa8e8('0x13')](_0xa8e8('0xd'),auth[_0xa8e8('0xa')](),controller['update']);router[_0xa8e8('0x14')](_0xa8e8('0xd'),auth[_0xa8e8('0xa')](),controller[_0xa8e8('0x15')]);module[_0xa8e8('0x16')]=router;
\ No newline at end of file
+var _0x2a38=['post','create','addContacts','put','/:id','update','delete','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./cmCompany.controller','isAuthenticated','get','show','/:id/contacts'];(function(_0x2b85c8,_0x560c38){var _0x50f2a3=function(_0x34d881){while(--_0x34d881){_0x2b85c8['push'](_0x2b85c8['shift']());}};_0x50f2a3(++_0x560c38);}(_0x2a38,0x1e8));var _0x82a3=function(_0x4226d6,_0x3864ca){_0x4226d6=_0x4226d6-0x0;var _0x19655b=_0x2a38[_0x4226d6];return _0x19655b;};'use strict';var multer=require('multer');var util=require(_0x82a3('0x0'));var path=require(_0x82a3('0x1'));var timeout=require(_0x82a3('0x2'));var express=require(_0x82a3('0x3'));var router=express[_0x82a3('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x82a3('0x5'));var config=require(_0x82a3('0x6'));var controller=require(_0x82a3('0x7'));router['get']('/',auth[_0x82a3('0x8')](),controller['index']);router['get']('/describe',auth[_0x82a3('0x8')](),controller['describe']);router[_0x82a3('0x9')]('/:id',auth[_0x82a3('0x8')](),controller[_0x82a3('0xa')]);router[_0x82a3('0x9')](_0x82a3('0xb'),auth[_0x82a3('0x8')](),controller['getContacts']);router[_0x82a3('0xc')]('/',auth[_0x82a3('0x8')](),controller[_0x82a3('0xd')]);router[_0x82a3('0xc')](_0x82a3('0xb'),auth[_0x82a3('0x8')](),controller[_0x82a3('0xe')]);router[_0x82a3('0xf')](_0x82a3('0x10'),auth[_0x82a3('0x8')](),controller[_0x82a3('0x11')]);router[_0x82a3('0x12')](_0x82a3('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x82a3('0x13')]=router;
\ No newline at end of file
index 9892b67..3eef3da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbf7=['DATE','NOW','sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED'];(function(_0x5e3773,_0x4778c6){var _0x4868d4=function(_0x507f15){while(--_0x507f15){_0x5e3773['push'](_0x5e3773['shift']());}};_0x4868d4(++_0x4778c6);}(_0xcbf7,0x132));var _0x7cbf=function(_0x1a4304,_0x7aec4b){_0x1a4304=_0x1a4304-0x0;var _0x4ec76d=_0xcbf7[_0x1a4304];return _0x4ec76d;};'use strict';var _=require('lodash');var Sequelize=require(_0x7cbf('0x0'));module[_0x7cbf('0x1')]={'firstName':{'type':Sequelize[_0x7cbf('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x7cbf('0x2')]},'street':{'type':Sequelize[_0x7cbf('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x7cbf('0x2')]},'country':{'type':Sequelize[_0x7cbf('0x2')]},'dateOfBirth':{'type':Sequelize[_0x7cbf('0x2')]},'description':{'type':Sequelize[_0x7cbf('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x7cbf('0x2')]},'fax':{'type':Sequelize[_0x7cbf('0x2')]},'email':{'type':Sequelize[_0x7cbf('0x2')]},'url':{'type':Sequelize[_0x7cbf('0x2')]},'facebook':{'type':Sequelize[_0x7cbf('0x2')]},'fb_data':{'type':Sequelize[_0x7cbf('0x2')]},'twitter':{'type':Sequelize[_0x7cbf('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x7cbf('0x2')]},'viber':{'type':Sequelize[_0x7cbf('0x2')]},'line':{'type':Sequelize[_0x7cbf('0x2')]},'wechat':{'type':Sequelize[_0x7cbf('0x2')]},'telegram':{'type':Sequelize[_0x7cbf('0x2')]},'UserId':{'type':Sequelize[_0x7cbf('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x7cbf('0x2')]},'priority':{'type':Sequelize[_0x7cbf('0x4')](0x2)[_0x7cbf('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x7cbf('0x6')],'defaultValue':Sequelize[_0x7cbf('0x7')]},'dialTimezone':{'type':Sequelize[_0x7cbf('0x2')]},'utcOffset':{'type':Sequelize[_0x7cbf('0x4')]}};
\ No newline at end of file
+var _0x038e=['INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports','STRING','TEXT'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x038e,0x151));var _0xe038=function(_0x105e63,_0x2c41c2){_0x105e63=_0x105e63-0x0;var _0x4dc9f1=_0x038e[_0x105e63];return _0x4dc9f1;};'use strict';var _=require(_0xe038('0x0'));var Sequelize=require(_0xe038('0x1'));module[_0xe038('0x2')]={'firstName':{'type':Sequelize[_0xe038('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xe038('0x3')]},'postalCode':{'type':Sequelize[_0xe038('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xe038('0x3')]},'description':{'type':Sequelize[_0xe038('0x4')]},'phone':{'type':Sequelize[_0xe038('0x3')]},'mobile':{'type':Sequelize[_0xe038('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xe038('0x3')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xe038('0x3')]},'twitter':{'type':Sequelize[_0xe038('0x3')]},'skype':{'type':Sequelize[_0xe038('0x3')]},'teams':{'type':Sequelize[_0xe038('0x3')]},'viber':{'type':Sequelize[_0xe038('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0xe038('0x3')]},'telegram':{'type':Sequelize[_0xe038('0x3')]},'UserId':{'type':Sequelize[_0xe038('0x5')]},'AdditionalPhones':{'type':Sequelize[_0xe038('0x3')]},'priority':{'type':Sequelize[_0xe038('0x5')](0x2)[_0xe038('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xe038('0x7')],'defaultValue':Sequelize[_0xe038('0x8')]},'dialTimezone':{'type':Sequelize[_0xe038('0x3')]},'utcOffset':{'type':Sequelize[_0xe038('0x5')]}};
\ No newline at end of file
index 49e3d0b..8b70403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
+var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x3b150c,_0x2f93f8){var _0x5cd414=function(_0x26305e){while(--_0x26305e){_0x3b150c['push'](_0x3b150c['shift']());}};_0x5cd414(++_0x2f93f8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
index 681e694..f49341e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e14=['hook','exports','events','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e14,0x1e2));var _0x44e1=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x4e14[_0x4b7895];return _0x264180;};'use strict';var EventEmitter=require(_0x44e1('0x0'));var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x44e1('0x1')](0x0);var events={'afterCreate':_0x44e1('0x2'),'afterUpdate':_0x44e1('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1715d9){return function(_0x153c48,_0x307980,_0x2fe96f){CmContactEvents[_0x44e1('0x4')](_0x1715d9+':'+_0x153c48['id'],_0x153c48);CmContactEvents[_0x44e1('0x4')](_0x1715d9,_0x153c48);_0x2fe96f(null);};}for(var e in events){if(events[_0x44e1('0x5')](e)){var event=events[e];CmContact[_0x44e1('0x6')](e,emitEvent(event));}}module[_0x44e1('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0xaa4e=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','CmContact','setMaxListeners','update'];(function(_0x54e361,_0x144fb7){var _0x172883=function(_0x3bd6d4){while(--_0x3bd6d4){_0x54e361['push'](_0x54e361['shift']());}};_0x172883(++_0x144fb7);}(_0xaa4e,0x176));var _0xeaa4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaa4e[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var CmContact=require(_0xeaa4('0x0'))['db'][_0xeaa4('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xeaa4('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xeaa4('0x3'),'afterDestroy':_0xeaa4('0x4')};function emitEvent(_0x3c1c03){return function(_0x3bccce,_0x469ce6,_0x4d9a11){CmContactEvents[_0xeaa4('0x5')](_0x3c1c03+':'+_0x3bccce['id'],_0x3bccce);CmContactEvents['emit'](_0x3c1c03,_0x3bccce);_0x4d9a11(null);};}for(var e in events){if(events[_0xeaa4('0x6')](e)){var event=events[e];CmContact[_0xeaa4('0x7')](e,emitEvent(event));}}module[_0xeaa4('0x8')]=CmContactEvents;
\ No newline at end of file
index 13cfc3e..397e04f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56d8=['path','rimraf','../../config/environment','../../config/environment/shared','./cmContact.attributes','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','cmContact','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','dialTimezone','VoiceQueue','findOne','then','isNil','timezones','utcOffset','add','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ListId','catch','error','Campaign','minutes','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','findAll','outbound','Lists','dialCheckDuplicateType','always','onlyIfOpen','BlackLists','length','cmContact,\x20%s,\x20%s','CmList','afterCreate','message','List\x20not\x20found','isEmpty','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x44db60,_0x4ec8ca){var _0x3fa929=function(_0x5800a6){while(--_0x5800a6){_0x44db60['push'](_0x44db60['shift']());}};_0x3fa929(++_0x4ec8ca);}(_0x56d8,0x1c2));var _0x856d=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x56d8[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0x856d('0x0'));var util=require(_0x856d('0x1'));var logger=require(_0x856d('0x2'))('api');var moment=require(_0x856d('0x3'));var BPromise=require(_0x856d('0x4'));var rp=require(_0x856d('0x5'));var fs=require('fs');var path=require(_0x856d('0x6'));var rimraf=require(_0x856d('0x7'));var config=require(_0x856d('0x8'));var shared=require(_0x856d('0x9'));var attributes=require(_0x856d('0xa'));module['exports']=function(_0x4b4a76,_0x1d8079){return _0x4b4a76['define'](_0x856d('0xb'),attributes,{'tableName':_0x856d('0xc'),'paranoid':!![],'indexes':[{'name':_0x856d('0xd'),'fields':[_0x856d('0xd')]},{'name':_0x856d('0xe'),'fields':[_0x856d('0xf'),'lastName','phone',_0x856d('0x10'),_0x856d('0x11'),_0x856d('0x12')],'type':_0x856d('0x13')}],'timestamps':!![],'charset':_0x856d('0x14'),'collate':_0x856d('0x15'),'hooks':{'afterCreate':function(_0x3e06f9,_0x36cb19,_0x48764b){var _0x7adca4=_0x4b4a76[_0x856d('0x16')];var _0x12f7db=_0x3e06f9[_0x856d('0x17')]({'plain':!![]});function _0x586da4(){return function(_0x5964a0){logger['error'](_0x856d('0x18'),'afterCreate',util[_0x856d('0x19')](_0x5964a0,{'showHidden':![],'depth':null}));};}function _0x5a7203(_0x536edb,_0x2d0249){var _0x1078ad=_0x2d0249['scheduledat']?_0x2d0249[_0x856d('0x1a')]:moment()[_0x856d('0x1b')](_0x856d('0x1c'));return new BPromise(function(_0x49ff98,_0x58944f){if(_['isNil'](_0x2d0249[_0x856d('0x1d')])){_0x49ff98({'ret':_0x1078ad});}else{_0x7adca4[_0x856d('0x1e')][_0x856d('0x1f')]({'where':{'id':_0x536edb['id']}})[_0x856d('0x20')](function(_0x4235f5){if(!_[_0x856d('0x21')](_0x4235f5)){var _0x8a63e0=_0x4235f5[_0x856d('0x1d')];if(!_[_0x856d('0x21')](_0x8a63e0)){var _0x22b6cf=shared[_0x856d('0x22')];var _0x1cbe64=_0x22b6cf[_0x8a63e0];var _0x5d51cb=_0x22b6cf[_0x2d0249[_0x856d('0x1d')]];if(!_['isNil'](_0x1cbe64)&&!_[_0x856d('0x21')](_0x5d51cb)){var _0x4744a5=_0x1cbe64[_0x856d('0x23')]-_0x5d51cb[_0x856d('0x23')];_0x1078ad=_0x2d0249[_0x856d('0x1a')]?_0x2d0249['scheduledat']:moment();var _0xefc4db=moment(_0x1078ad)[_0x856d('0x24')](_0x4744a5,'minutes');_0x49ff98({'ret':_0xefc4db['format']('YYYY-MM-DD\x20HH:mm:ss')});}else _0x49ff98({'ret':_0x1078ad});}else _0x49ff98({'ret':_0x1078ad});}else{_0x49ff98({'ret':_0x1078ad});}});}});return 0xa;}var _0x4c9237=function(_0x125029){return new BPromise(function(_0x37f555,_0x3d0670){_0x5a7203(_0x125029,_0x12f7db)[_0x856d('0x20')](function(_0x541b7d){_0x12f7db[_0x856d('0x1a')]=_0x541b7d[_0x856d('0x25')];_0x7adca4[_0x856d('0x26')]['findOne']({'where':{'phone':_0x12f7db['phone'],'VoiceQueueId':_0x125029['id']}})[_0x856d('0x20')](function(_0xb1a351){if(!_[_0x856d('0x21')](_0xb1a351)){throw new Error(_0x856d('0x27')+_0x12f7db[_0x856d('0xd')]+_0x856d('0x28')+_0x125029['id']);}return _0x7adca4['CmHopper'][_0x856d('0x29')]({'phone':_0x12f7db[_0x856d('0xd')],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db['ListId'],'priority':_0x12f7db[_0x856d('0x2a')]?_0x12f7db[_0x856d('0x2a')]:0x2,'scheduledat':_0x12f7db[_0x856d('0x1a')]?_0x12f7db[_0x856d('0x1a')]:moment()[_0x856d('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x12f7db[_0x856d('0x2b')]?!![]:![],'callbackuniqueid':_0x12f7db[_0x856d('0x2b')]?_0x12f7db['callbackUniqueid']:undefined,'callbackat':_0x12f7db[_0x856d('0x2b')]?moment()[_0x856d('0x1b')](_0x856d('0x1c')):undefined,'VoiceQueueId':_0x125029['id']});})['catch'](function(_0x542633){_0x3d0670(_0x542633);});});});};var _0x2eb763=function(_0x11b0c8){return new BPromise(function(_0x436d78,_0x10a05b){_0x5a7203(_0x11b0c8,_0x12f7db)['then'](function(_0xf68151){_0x12f7db[_0x856d('0x1a')]=_0xf68151[_0x856d('0x25')];_0x7adca4['CmHopper'][_0x856d('0x1f')]({'where':{'phone':_0x12f7db['phone'],'VoiceQueueId':_0x11b0c8['id']}})[_0x856d('0x20')](function(_0x172596){if(!_[_0x856d('0x21')](_0x172596)){throw new Error(_0x856d('0x27')+_0x12f7db[_0x856d('0xd')]+_0x856d('0x2c')+_0x11b0c8['id']);}return _0x7adca4[_0x856d('0x2d')][_0x856d('0x1f')]({'where':{'calleridnum':_0x12f7db[_0x856d('0xd')],'VoiceQueueId':_0x11b0c8['id']}});})[_0x856d('0x20')](function(_0x347d67){if(!_['isNil'](_0x347d67)){throw new Error(_0x856d('0x2e')+_0x12f7db['phone']+_0x856d('0x2f')+_0x11b0c8['id']);}return _0x7adca4[_0x856d('0x26')][_0x856d('0x29')]({'phone':_0x12f7db[_0x856d('0xd')],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db[_0x856d('0x30')],'priority':_0x12f7db['priority']?_0x12f7db[_0x856d('0x2a')]:0x2,'scheduledat':_0x12f7db[_0x856d('0x1a')]?_0x12f7db[_0x856d('0x1a')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x12f7db[_0x856d('0x2b')]?!![]:![],'callbackuniqueid':_0x12f7db[_0x856d('0x2b')]?_0x12f7db[_0x856d('0x2b')]:undefined,'callbackat':_0x12f7db[_0x856d('0x2b')]?moment()[_0x856d('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x11b0c8['id']});})[_0x856d('0x31')](function(_0x10f1b5){_0x10a05b(_0x10f1b5);});});});};function _0x2373cb(){return function(_0x5817ab){logger[_0x856d('0x32')]('cmContact','afterCreate',util[_0x856d('0x19')](_0x5817ab,{'showHidden':![],'depth':null}));};}function _0x4a3f35(_0x3f772a,_0x47e908){var _0x4eeb32=_0x47e908[_0x856d('0x1a')]?_0x47e908['scheduledat']:moment()[_0x856d('0x1b')](_0x856d('0x1c'));return new BPromise(function(_0xb07d21,_0x568101){if(_[_0x856d('0x21')](_0x47e908[_0x856d('0x1d')])){_0xb07d21({'ret':_0x4eeb32});}else{_0x7adca4[_0x856d('0x33')][_0x856d('0x1f')]({'where':{'id':_0x3f772a['id']}})[_0x856d('0x20')](function(_0x2876d7){if(!_[_0x856d('0x21')](_0x2876d7)){var _0x5997b4=_0x2876d7[_0x856d('0x1d')];if(!_[_0x856d('0x21')](_0x5997b4)){var _0x53f0f5=shared[_0x856d('0x22')];var _0x3d78b0=_0x53f0f5[_0x5997b4];var _0x2f988b=_0x53f0f5[_0x47e908[_0x856d('0x1d')]];if(!_[_0x856d('0x21')](_0x3d78b0)&&!_[_0x856d('0x21')](_0x2f988b)){var _0x542157=_0x3d78b0[_0x856d('0x23')]-_0x2f988b[_0x856d('0x23')];_0x4eeb32=_0x47e908[_0x856d('0x1a')]?_0x47e908[_0x856d('0x1a')]:moment();var _0x5a1e06=moment(_0x4eeb32)[_0x856d('0x24')](_0x542157,_0x856d('0x34'));_0xb07d21({'ret':_0x5a1e06['format'](_0x856d('0x1c'))});}else _0xb07d21({'ret':_0x4eeb32});}else _0xb07d21({'ret':_0x4eeb32});}else{_0xb07d21({'ret':_0x4eeb32});}});}});return 0xa;}var _0x1593dc=function(_0x485e21){return new BPromise(function(_0x2ea23e,_0x482256){_0x4a3f35(_0x485e21,_0x12f7db)[_0x856d('0x20')](function(_0x39ca3f){_0x12f7db[_0x856d('0x1a')]=_0x39ca3f[_0x856d('0x25')];_0x7adca4[_0x856d('0x26')][_0x856d('0x1f')]({'where':{'phone':_0x12f7db['phone'],'CampaignId':_0x485e21['id']}})['then'](function(_0x203f9b){if(!_[_0x856d('0x21')](_0x203f9b)){throw new Error(_0x856d('0x27')+_0x12f7db[_0x856d('0xd')]+_0x856d('0x35')+_0x485e21['id']);}return _0x7adca4[_0x856d('0x26')][_0x856d('0x29')]({'phone':_0x12f7db[_0x856d('0xd')],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db[_0x856d('0x30')],'priority':_0x12f7db[_0x856d('0x2a')]?_0x12f7db[_0x856d('0x2a')]:0x2,'scheduledat':_0x12f7db['scheduledat']?_0x12f7db['scheduledat']:moment()[_0x856d('0x1b')](_0x856d('0x1c')),'callback':_0x12f7db[_0x856d('0x2b')]?!![]:![],'callbackuniqueid':_0x12f7db[_0x856d('0x2b')]?_0x12f7db['callbackUniqueid']:undefined,'callbackat':_0x12f7db[_0x856d('0x2b')]?moment()[_0x856d('0x1b')](_0x856d('0x1c')):undefined,'CampaignId':_0x485e21['id']});})[_0x856d('0x31')](function(_0x3c1019){_0x482256(_0x3c1019);});});});};var _0x46db4b=function(_0x521fae){return new BPromise(function(_0x292a43,_0x90ea0e){_0x4a3f35(_0x521fae,_0x12f7db)[_0x856d('0x20')](function(_0x71a85c){_0x12f7db[_0x856d('0x1a')]=_0x71a85c[_0x856d('0x25')];_0x7adca4[_0x856d('0x26')][_0x856d('0x1f')]({'where':{'phone':_0x12f7db['phone'],'CampaignId':_0x521fae['id']}})[_0x856d('0x20')](function(_0x3921b3){if(!_[_0x856d('0x21')](_0x3921b3)){throw new Error('cmContact,\x20afterCreate\x20'+_0x12f7db[_0x856d('0xd')]+_0x856d('0x36')+_0x521fae['id']);}return _0x7adca4[_0x856d('0x2d')][_0x856d('0x1f')]({'where':{'calleridnum':_0x12f7db['phone'],'CampaignId':_0x521fae['id']}});})[_0x856d('0x20')](function(_0x365ead){if(!_[_0x856d('0x21')](_0x365ead)){throw new Error(_0x856d('0x2e')+_0x12f7db[_0x856d('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x521fae['id']);}return _0x7adca4['CmHopper'][_0x856d('0x29')]({'phone':_0x12f7db['phone'],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db[_0x856d('0x30')],'priority':_0x12f7db['priority']?_0x12f7db[_0x856d('0x2a')]:0x2,'scheduledat':_0x12f7db['scheduledat']?_0x12f7db[_0x856d('0x1a')]:moment()[_0x856d('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x12f7db['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x12f7db[_0x856d('0x2b')]?_0x12f7db['callbackUniqueid']:undefined,'callbackat':_0x12f7db[_0x856d('0x2b')]?moment()[_0x856d('0x1b')](_0x856d('0x1c')):undefined,'CampaignId':_0x521fae['id']});})[_0x856d('0x31')](function(_0x499787){_0x90ea0e(_0x499787);});});});};if(_0x12f7db[_0x856d('0x30')]){_0x7adca4['VoiceQueue'][_0x856d('0x37')]({'where':{'type':_0x856d('0x38')},'attributes':['id','dialCheckDuplicateType',_0x856d('0x1d')],'include':[{'model':_0x7adca4['CmList'],'as':_0x856d('0x39'),'where':{'id':_0x12f7db['ListId']}}]})[_0x856d('0x20')](function(_0x4565d0){if(_0x4565d0){var _0x45f3f3=[];for(var _0x5ec3bb=0x0,_0x87afca;_0x5ec3bb<_0x4565d0['length'];_0x5ec3bb+=0x1){_0x87afca=_0x4565d0[_0x5ec3bb]['get']({'plain':!![]});switch(_0x87afca[_0x856d('0x3a')]){case _0x856d('0x3b'):_0x2eb763(_0x87afca)[_0x856d('0x31')](_0x586da4());break;case _0x856d('0x3c'):_0x4c9237(_0x87afca)[_0x856d('0x31')](_0x586da4());break;default:_0x4a3f35(_0x87afca,_0x12f7db)[_0x856d('0x20')](function(_0x2ddc70){_0x12f7db[_0x856d('0x1a')]=_0x2ddc70['ret'];_0x7adca4['CmHopper'][_0x856d('0x29')]({'phone':_0x12f7db[_0x856d('0xd')],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db[_0x856d('0x30')],'scheduledat':_0x12f7db['scheduledat']?_0x12f7db[_0x856d('0x1a')]:moment()[_0x856d('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x12f7db[_0x856d('0x2a')]?_0x12f7db[_0x856d('0x2a')]:0x2,'callback':_0x12f7db[_0x856d('0x2b')]?!![]:![],'callbackuniqueid':_0x12f7db['callbackUniqueid']?_0x12f7db['callbackUniqueid']:undefined,'callbackat':_0x12f7db[_0x856d('0x2b')]?moment()[_0x856d('0x1b')](_0x856d('0x1c')):undefined,'VoiceQueueId':_0x87afca['id']})['catch'](_0x586da4());});}}}})['then'](function(){return _0x7adca4[_0x856d('0x1e')][_0x856d('0x37')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x7adca4['CmList'],'as':_0x856d('0x3d'),'where':{'id':_0x12f7db[_0x856d('0x30')]}}]})[_0x856d('0x20')](function(_0x10abbc){if(_0x10abbc){var _0x123273=[];for(var _0x468b33=0x0,_0x4b6800;_0x468b33<_0x10abbc[_0x856d('0x3e')];_0x468b33+=0x1){_0x4b6800=_0x10abbc[_0x468b33]['get']({'plain':!![]});_0x7adca4['CmHopperBlack'][_0x856d('0x29')]({'phone':_0x12f7db[_0x856d('0xd')],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db['ListId'],'VoiceQueueId':_0x4b6800['id']})['catch'](function(_0x2c81d1){logger[_0x856d('0x32')](_0x856d('0x3f'),'afterCreate',_0x2c81d1['message']);});}}});})['then'](function(){return _0x7adca4['Campaign'][_0x856d('0x37')]({'attributes':['id',_0x856d('0x3a'),_0x856d('0x1d')],'include':[{'model':_0x7adca4[_0x856d('0x40')],'as':'Lists','where':{'id':_0x12f7db[_0x856d('0x30')]}}]})['then'](function(_0x549d81){if(_0x549d81){var _0x3f3239=[];for(var _0x3507d1=0x0,_0x4fb73b;_0x3507d1<_0x549d81[_0x856d('0x3e')];_0x3507d1+=0x1){_0x4fb73b=_0x549d81[_0x3507d1][_0x856d('0x17')]({'plain':!![]});switch(_0x4fb73b['dialCheckDuplicateType']){case _0x856d('0x3b'):_0x46db4b(_0x4fb73b)[_0x856d('0x31')](_0x2373cb());break;case _0x856d('0x3c'):_0x1593dc(_0x4fb73b)['catch'](_0x2373cb());break;default:_0x7adca4[_0x856d('0x26')][_0x856d('0x29')]({'phone':_0x12f7db[_0x856d('0xd')],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db[_0x856d('0x30')],'scheduledat':_0x12f7db[_0x856d('0x1a')]?_0x12f7db[_0x856d('0x1a')]:moment()[_0x856d('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x12f7db[_0x856d('0x2a')]?_0x12f7db[_0x856d('0x2a')]:0x2,'callback':_0x12f7db[_0x856d('0x2b')]?!![]:![],'callbackuniqueid':_0x12f7db[_0x856d('0x2b')]?_0x12f7db[_0x856d('0x2b')]:undefined,'callbackat':_0x12f7db[_0x856d('0x2b')]?moment()[_0x856d('0x1b')](_0x856d('0x1c')):undefined,'CampaignId':_0x4fb73b['id']})[_0x856d('0x31')](_0x2373cb());}}}});})[_0x856d('0x20')](function(){return _0x7adca4['Campaign'][_0x856d('0x37')]({'attributes':['id'],'include':[{'model':_0x7adca4[_0x856d('0x40')],'as':_0x856d('0x3d'),'where':{'id':_0x12f7db[_0x856d('0x30')]}}]})[_0x856d('0x20')](function(_0x183a7e){if(_0x183a7e){var _0x3d443b=[];for(var _0x23df4b=0x0,_0x5edf8f;_0x23df4b<_0x183a7e[_0x856d('0x3e')];_0x23df4b+=0x1){_0x5edf8f=_0x183a7e[_0x23df4b][_0x856d('0x17')]({'plain':!![]});_0x7adca4['CmHopperBlack'][_0x856d('0x29')]({'phone':_0x12f7db[_0x856d('0xd')],'ContactId':_0x12f7db['id'],'ListId':_0x12f7db[_0x856d('0x30')],'CampaignId':_0x5edf8f['id']})['catch'](function(_0x1fe2f5){logger[_0x856d('0x32')](_0x856d('0x3f'),_0x856d('0x41'),_0x1fe2f5[_0x856d('0x42')]);});}}});})[_0x856d('0x20')](function(){_0x48764b();})['catch'](function(_0x19e4fb){logger['error']('cmContact,\x20%s,\x20%s','afterCreate',_0x19e4fb[_0x856d('0x42')]);_0x48764b(_0x19e4fb);});}else{_0x48764b(new Error(_0x856d('0x43')));}},'afterDestroy':function(_0x169338,_0x1d49c1,_0x3e1d16){var _0x5afcef=_0x4b4a76['models'];var _0x2c0ade=_0x169338[_0x856d('0x17')]({'plain':!![]});return _0x5afcef[_0x856d('0x26')][_0x856d('0x37')]({'raw':!![],'where':{'ListId':_0x2c0ade[_0x856d('0x30')],'ContactId':_0x2c0ade['id']}})['then'](function(_0x363060){if(!_[_0x856d('0x44')](_0x363060)){var _0x3b477f=[];for(var _0x566fcf=0x0;_0x566fcf<_0x363060[_0x856d('0x3e')];_0x566fcf+=0x1){var _0x4873a5=_0x5afcef[_0x856d('0x26')]['destroy']({'where':{'ListId':_0x363060[_0x566fcf][_0x856d('0x30')],'ContactId':_0x363060[_0x566fcf][_0x856d('0x45')],'VoiceQueueId':_0x363060[_0x566fcf][_0x856d('0x46')],'CampaignId':_0x363060[_0x566fcf][_0x856d('0x47')]}});_0x3b477f[_0x856d('0x48')](_0x4873a5);}return BPromise[_0x856d('0x49')](_0x3b477f);}})[_0x856d('0x20')](function(_0x50d14f){logger[_0x856d('0x4a')](_0x856d('0x4b'),util['inspect'](_0x50d14f,{'showHidden':![],'depth':null}));_0x3e1d16();})[_0x856d('0x31')](function(_0x4697cb){logger[_0x856d('0x32')]('[CmContact][afterDestroy][Error]',util[_0x856d('0x19')](_0x4697cb,{'showHidden':![],'depth':null}));_0x3e1d16(_0x4697cb);});}}});};
\ No newline at end of file
+var _0xe1cf=['cmContact','afterCreate','scheduledat','isNil','dialTimezone','VoiceQueue','findOne','then','timezones','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','catch','ret','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','error','Campaign','minutes','Lists','length','dialCheckDuplicateType','always','findAll','outbound','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','CmList','onlyIfOpen','List\x20not\x20found','models','isEmpty','destroy','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','lodash','util','path','../../config/environment','./cmContact.attributes','exports','CmContact','phone','fti_cm_contacts','firstName','lastName','mobile','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get'];(function(_0x343e70,_0xe5f373){var _0x2742fd=function(_0x27e56e){while(--_0x27e56e){_0x343e70['push'](_0x343e70['shift']());}};_0x2742fd(++_0xe5f373);}(_0xe1cf,0xfb));var _0xfe1c=function(_0x100d27,_0x54b77c){_0x100d27=_0x100d27-0x0;var _0x4cc42f=_0xe1cf[_0x100d27];return _0x4cc42f;};'use strict';var _=require(_0xfe1c('0x0'));var util=require(_0xfe1c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfe1c('0x2'));var rimraf=require('rimraf');var config=require(_0xfe1c('0x3'));var shared=require('../../config/environment/shared');var attributes=require(_0xfe1c('0x4'));module[_0xfe1c('0x5')]=function(_0xea049e,_0x3a9d1d){return _0xea049e['define'](_0xfe1c('0x6'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0xfe1c('0x7'),'fields':[_0xfe1c('0x7')]},{'name':_0xfe1c('0x8'),'fields':[_0xfe1c('0x9'),_0xfe1c('0xa'),_0xfe1c('0x7'),_0xfe1c('0xb'),_0xfe1c('0xc'),'email'],'type':_0xfe1c('0xd')}],'timestamps':!![],'charset':_0xfe1c('0xe'),'collate':_0xfe1c('0xf'),'hooks':{'afterCreate':function(_0x33983c,_0x3e38e9,_0xac84be){var _0x4978df=_0xea049e['models'];var _0x4a481f=_0x33983c[_0xfe1c('0x10')]({'plain':!![]});function _0x24e98e(){return function(_0x353b75){logger['error'](_0xfe1c('0x11'),_0xfe1c('0x12'),util['inspect'](_0x353b75,{'showHidden':![],'depth':null}));};}function _0x5df2cb(_0x2f9774,_0x3dfd93){var _0x21b253=_0x3dfd93[_0xfe1c('0x13')]?_0x3dfd93[_0xfe1c('0x13')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x1fe1ed,_0x523e1c){if(_[_0xfe1c('0x14')](_0x3dfd93[_0xfe1c('0x15')])){_0x1fe1ed({'ret':_0x21b253});}else{_0x4978df[_0xfe1c('0x16')][_0xfe1c('0x17')]({'where':{'id':_0x2f9774['id']}})[_0xfe1c('0x18')](function(_0x284a9e){if(!_['isNil'](_0x284a9e)){var _0x4c78bb=_0x284a9e['dialTimezone'];if(!_['isNil'](_0x4c78bb)){var _0x126f17=shared[_0xfe1c('0x19')];var _0x2ff1bc=_0x126f17[_0x4c78bb];var _0x4fbc71=_0x126f17[_0x3dfd93[_0xfe1c('0x15')]];if(!_[_0xfe1c('0x14')](_0x2ff1bc)&&!_[_0xfe1c('0x14')](_0x4fbc71)){var _0x12d86c=_0x2ff1bc[_0xfe1c('0x1a')]-_0x4fbc71['utcOffset'];_0x21b253=_0x3dfd93[_0xfe1c('0x13')]?_0x3dfd93[_0xfe1c('0x13')]:moment();var _0x298a8d=moment(_0x21b253)['add'](_0x12d86c,'minutes');_0x1fe1ed({'ret':_0x298a8d[_0xfe1c('0x1b')](_0xfe1c('0x1c'))});}else _0x1fe1ed({'ret':_0x21b253});}else _0x1fe1ed({'ret':_0x21b253});}else{_0x1fe1ed({'ret':_0x21b253});}});}});return 0xa;}var _0x15d877=function(_0x42785f){return new BPromise(function(_0x58cc12,_0x2d7001){_0x5df2cb(_0x42785f,_0x4a481f)[_0xfe1c('0x18')](function(_0x33447c){_0x4a481f['scheduledat']=_0x33447c['ret'];_0x4978df[_0xfe1c('0x1d')]['findOne']({'where':{'phone':_0x4a481f[_0xfe1c('0x7')],'VoiceQueueId':_0x42785f['id']}})[_0xfe1c('0x18')](function(_0x26b9a5){if(!_[_0xfe1c('0x14')](_0x26b9a5)){throw new Error(_0xfe1c('0x1e')+_0x4a481f[_0xfe1c('0x7')]+_0xfe1c('0x1f')+_0x42785f['id']);}return _0x4978df['CmHopper'][_0xfe1c('0x20')]({'phone':_0x4a481f[_0xfe1c('0x7')],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f[_0xfe1c('0x21')],'priority':_0x4a481f[_0xfe1c('0x22')]?_0x4a481f[_0xfe1c('0x22')]:0x2,'scheduledat':_0x4a481f[_0xfe1c('0x13')]?_0x4a481f[_0xfe1c('0x13')]:moment()[_0xfe1c('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4a481f[_0xfe1c('0x23')]?!![]:![],'callbackuniqueid':_0x4a481f['callbackUniqueid']?_0x4a481f[_0xfe1c('0x23')]:undefined,'callbackat':_0x4a481f[_0xfe1c('0x23')]?moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c')):undefined,'VoiceQueueId':_0x42785f['id']});})[_0xfe1c('0x24')](function(_0x5add14){_0x2d7001(_0x5add14);});});});};var _0x473711=function(_0x50ec26){return new BPromise(function(_0x4abc65,_0x234466){_0x5df2cb(_0x50ec26,_0x4a481f)[_0xfe1c('0x18')](function(_0x43fc41){_0x4a481f['scheduledat']=_0x43fc41[_0xfe1c('0x25')];_0x4978df[_0xfe1c('0x1d')][_0xfe1c('0x17')]({'where':{'phone':_0x4a481f[_0xfe1c('0x7')],'VoiceQueueId':_0x50ec26['id']}})['then'](function(_0x3a9f29){if(!_[_0xfe1c('0x14')](_0x3a9f29)){throw new Error(_0xfe1c('0x1e')+_0x4a481f[_0xfe1c('0x7')]+_0xfe1c('0x26')+_0x50ec26['id']);}return _0x4978df[_0xfe1c('0x27')]['findOne']({'where':{'calleridnum':_0x4a481f['phone'],'VoiceQueueId':_0x50ec26['id']}});})['then'](function(_0x186165){if(!_[_0xfe1c('0x14')](_0x186165)){throw new Error(_0xfe1c('0x28')+_0x4a481f[_0xfe1c('0x7')]+_0xfe1c('0x29')+_0x50ec26['id']);}return _0x4978df['CmHopper'][_0xfe1c('0x20')]({'phone':_0x4a481f[_0xfe1c('0x7')],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f['ListId'],'priority':_0x4a481f[_0xfe1c('0x22')]?_0x4a481f[_0xfe1c('0x22')]:0x2,'scheduledat':_0x4a481f['scheduledat']?_0x4a481f['scheduledat']:moment()['format'](_0xfe1c('0x1c')),'callback':_0x4a481f[_0xfe1c('0x23')]?!![]:![],'callbackuniqueid':_0x4a481f[_0xfe1c('0x23')]?_0x4a481f[_0xfe1c('0x23')]:undefined,'callbackat':_0x4a481f[_0xfe1c('0x23')]?moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c')):undefined,'VoiceQueueId':_0x50ec26['id']});})[_0xfe1c('0x24')](function(_0x3e5f9d){_0x234466(_0x3e5f9d);});});});};function _0x5b6c82(){return function(_0x18111f){logger[_0xfe1c('0x2a')]('cmContact','afterCreate',util['inspect'](_0x18111f,{'showHidden':![],'depth':null}));};}function _0x19aa0f(_0x5b742c,_0x3bf569){var _0x4290d5=_0x3bf569[_0xfe1c('0x13')]?_0x3bf569[_0xfe1c('0x13')]:moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c'));return new BPromise(function(_0x341d80,_0x3f438f){if(_[_0xfe1c('0x14')](_0x3bf569[_0xfe1c('0x15')])){_0x341d80({'ret':_0x4290d5});}else{_0x4978df[_0xfe1c('0x2b')][_0xfe1c('0x17')]({'where':{'id':_0x5b742c['id']}})[_0xfe1c('0x18')](function(_0x2ef97e){if(!_[_0xfe1c('0x14')](_0x2ef97e)){var _0x562bf1=_0x2ef97e[_0xfe1c('0x15')];if(!_[_0xfe1c('0x14')](_0x562bf1)){var _0x5741af=shared[_0xfe1c('0x19')];var _0xa55420=_0x5741af[_0x562bf1];var _0x3a5fdb=_0x5741af[_0x3bf569[_0xfe1c('0x15')]];if(!_[_0xfe1c('0x14')](_0xa55420)&&!_[_0xfe1c('0x14')](_0x3a5fdb)){var _0x38edac=_0xa55420[_0xfe1c('0x1a')]-_0x3a5fdb[_0xfe1c('0x1a')];_0x4290d5=_0x3bf569[_0xfe1c('0x13')]?_0x3bf569['scheduledat']:moment();var _0x34285a=moment(_0x4290d5)['add'](_0x38edac,_0xfe1c('0x2c'));_0x341d80({'ret':_0x34285a[_0xfe1c('0x1b')](_0xfe1c('0x1c'))});}else _0x341d80({'ret':_0x4290d5});}else _0x341d80({'ret':_0x4290d5});}else{_0x341d80({'ret':_0x4290d5});}});}});return 0xa;}var _0x463d3d=function(_0x221f9b){return new BPromise(function(_0x3ad230,_0x5e4041){_0x19aa0f(_0x221f9b,_0x4a481f)[_0xfe1c('0x18')](function(_0x526097){_0x4a481f[_0xfe1c('0x13')]=_0x526097[_0xfe1c('0x25')];_0x4978df[_0xfe1c('0x1d')][_0xfe1c('0x17')]({'where':{'phone':_0x4a481f[_0xfe1c('0x7')],'CampaignId':_0x221f9b['id']}})[_0xfe1c('0x18')](function(_0x15fe9d){if(!_[_0xfe1c('0x14')](_0x15fe9d)){throw new Error('cmContact,\x20afterCreate\x20'+_0x4a481f[_0xfe1c('0x7')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x221f9b['id']);}return _0x4978df['CmHopper']['create']({'phone':_0x4a481f['phone'],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f[_0xfe1c('0x21')],'priority':_0x4a481f[_0xfe1c('0x22')]?_0x4a481f[_0xfe1c('0x22')]:0x2,'scheduledat':_0x4a481f['scheduledat']?_0x4a481f[_0xfe1c('0x13')]:moment()['format'](_0xfe1c('0x1c')),'callback':_0x4a481f[_0xfe1c('0x23')]?!![]:![],'callbackuniqueid':_0x4a481f[_0xfe1c('0x23')]?_0x4a481f[_0xfe1c('0x23')]:undefined,'callbackat':_0x4a481f[_0xfe1c('0x23')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x221f9b['id']});})[_0xfe1c('0x24')](function(_0x5511c9){_0x5e4041(_0x5511c9);});});});};var _0x35e312=function(_0x238359){return new BPromise(function(_0x4b8091,_0x5b3562){_0x19aa0f(_0x238359,_0x4a481f)['then'](function(_0x101806){_0x4a481f['scheduledat']=_0x101806[_0xfe1c('0x25')];_0x4978df[_0xfe1c('0x1d')][_0xfe1c('0x17')]({'where':{'phone':_0x4a481f['phone'],'CampaignId':_0x238359['id']}})[_0xfe1c('0x18')](function(_0x566a42){if(!_['isNil'](_0x566a42)){throw new Error(_0xfe1c('0x1e')+_0x4a481f[_0xfe1c('0x7')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x238359['id']);}return _0x4978df[_0xfe1c('0x27')][_0xfe1c('0x17')]({'where':{'calleridnum':_0x4a481f[_0xfe1c('0x7')],'CampaignId':_0x238359['id']}});})[_0xfe1c('0x18')](function(_0x49745a){if(!_[_0xfe1c('0x14')](_0x49745a)){throw new Error(_0xfe1c('0x28')+_0x4a481f['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x238359['id']);}return _0x4978df[_0xfe1c('0x1d')][_0xfe1c('0x20')]({'phone':_0x4a481f['phone'],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f[_0xfe1c('0x21')],'priority':_0x4a481f[_0xfe1c('0x22')]?_0x4a481f['priority']:0x2,'scheduledat':_0x4a481f['scheduledat']?_0x4a481f[_0xfe1c('0x13')]:moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c')),'callback':_0x4a481f[_0xfe1c('0x23')]?!![]:![],'callbackuniqueid':_0x4a481f[_0xfe1c('0x23')]?_0x4a481f['callbackUniqueid']:undefined,'callbackat':_0x4a481f['callbackUniqueid']?moment()[_0xfe1c('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x238359['id']});})[_0xfe1c('0x24')](function(_0x81156){_0x5b3562(_0x81156);});});});};if(_0x4a481f[_0xfe1c('0x21')]){_0x4978df['VoiceQueue']['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType',_0xfe1c('0x15')],'include':[{'model':_0x4978df['CmList'],'as':_0xfe1c('0x2d'),'where':{'id':_0x4a481f[_0xfe1c('0x21')]}}]})[_0xfe1c('0x18')](function(_0x5ea198){if(_0x5ea198){var _0x35cd9c=[];for(var _0x3b690c=0x0,_0x503ff1;_0x3b690c<_0x5ea198[_0xfe1c('0x2e')];_0x3b690c+=0x1){_0x503ff1=_0x5ea198[_0x3b690c][_0xfe1c('0x10')]({'plain':!![]});switch(_0x503ff1[_0xfe1c('0x2f')]){case _0xfe1c('0x30'):_0x473711(_0x503ff1)[_0xfe1c('0x24')](_0x24e98e());break;case'onlyIfOpen':_0x15d877(_0x503ff1)[_0xfe1c('0x24')](_0x24e98e());break;default:_0x19aa0f(_0x503ff1,_0x4a481f)[_0xfe1c('0x18')](function(_0x3a1ef3){_0x4a481f[_0xfe1c('0x13')]=_0x3a1ef3[_0xfe1c('0x25')];_0x4978df['CmHopper']['create']({'phone':_0x4a481f[_0xfe1c('0x7')],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f['ListId'],'scheduledat':_0x4a481f[_0xfe1c('0x13')]?_0x4a481f[_0xfe1c('0x13')]:moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c')),'priority':_0x4a481f[_0xfe1c('0x22')]?_0x4a481f[_0xfe1c('0x22')]:0x2,'callback':_0x4a481f[_0xfe1c('0x23')]?!![]:![],'callbackuniqueid':_0x4a481f[_0xfe1c('0x23')]?_0x4a481f['callbackUniqueid']:undefined,'callbackat':_0x4a481f[_0xfe1c('0x23')]?moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c')):undefined,'VoiceQueueId':_0x503ff1['id']})[_0xfe1c('0x24')](_0x24e98e());});}}}})[_0xfe1c('0x18')](function(){return _0x4978df['VoiceQueue'][_0xfe1c('0x31')]({'where':{'type':_0xfe1c('0x32')},'attributes':['id'],'include':[{'model':_0x4978df['CmList'],'as':_0xfe1c('0x33'),'where':{'id':_0x4a481f[_0xfe1c('0x21')]}}]})[_0xfe1c('0x18')](function(_0x30bb97){if(_0x30bb97){var _0x415af6=[];for(var _0x12a5b7=0x0,_0x5d9cbc;_0x12a5b7<_0x30bb97[_0xfe1c('0x2e')];_0x12a5b7+=0x1){_0x5d9cbc=_0x30bb97[_0x12a5b7][_0xfe1c('0x10')]({'plain':!![]});_0x4978df[_0xfe1c('0x34')][_0xfe1c('0x20')]({'phone':_0x4a481f['phone'],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f[_0xfe1c('0x21')],'VoiceQueueId':_0x5d9cbc['id']})[_0xfe1c('0x24')](function(_0x5bc820){logger[_0xfe1c('0x2a')](_0xfe1c('0x35'),'afterCreate',_0x5bc820[_0xfe1c('0x36')]);});}}});})[_0xfe1c('0x18')](function(){return _0x4978df[_0xfe1c('0x2b')][_0xfe1c('0x31')]({'attributes':['id',_0xfe1c('0x2f'),'dialTimezone'],'include':[{'model':_0x4978df[_0xfe1c('0x37')],'as':_0xfe1c('0x2d'),'where':{'id':_0x4a481f[_0xfe1c('0x21')]}}]})[_0xfe1c('0x18')](function(_0x369acc){if(_0x369acc){var _0x5e0e1b=[];for(var _0x2301fd=0x0,_0x3ed6bd;_0x2301fd<_0x369acc[_0xfe1c('0x2e')];_0x2301fd+=0x1){_0x3ed6bd=_0x369acc[_0x2301fd]['get']({'plain':!![]});switch(_0x3ed6bd[_0xfe1c('0x2f')]){case _0xfe1c('0x30'):_0x35e312(_0x3ed6bd)[_0xfe1c('0x24')](_0x5b6c82());break;case _0xfe1c('0x38'):_0x463d3d(_0x3ed6bd)['catch'](_0x5b6c82());break;default:_0x4978df[_0xfe1c('0x1d')]['create']({'phone':_0x4a481f[_0xfe1c('0x7')],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f[_0xfe1c('0x21')],'scheduledat':_0x4a481f['scheduledat']?_0x4a481f[_0xfe1c('0x13')]:moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c')),'priority':_0x4a481f[_0xfe1c('0x22')]?_0x4a481f['priority']:0x2,'callback':_0x4a481f[_0xfe1c('0x23')]?!![]:![],'callbackuniqueid':_0x4a481f[_0xfe1c('0x23')]?_0x4a481f[_0xfe1c('0x23')]:undefined,'callbackat':_0x4a481f['callbackUniqueid']?moment()[_0xfe1c('0x1b')](_0xfe1c('0x1c')):undefined,'CampaignId':_0x3ed6bd['id']})[_0xfe1c('0x24')](_0x5b6c82());}}}});})['then'](function(){return _0x4978df[_0xfe1c('0x2b')]['findAll']({'attributes':['id'],'include':[{'model':_0x4978df[_0xfe1c('0x37')],'as':_0xfe1c('0x33'),'where':{'id':_0x4a481f['ListId']}}]})[_0xfe1c('0x18')](function(_0x253ae5){if(_0x253ae5){var _0x370a1b=[];for(var _0x1458ca=0x0,_0x294061;_0x1458ca<_0x253ae5[_0xfe1c('0x2e')];_0x1458ca+=0x1){_0x294061=_0x253ae5[_0x1458ca][_0xfe1c('0x10')]({'plain':!![]});_0x4978df['CmHopperBlack'][_0xfe1c('0x20')]({'phone':_0x4a481f[_0xfe1c('0x7')],'ContactId':_0x4a481f['id'],'ListId':_0x4a481f[_0xfe1c('0x21')],'CampaignId':_0x294061['id']})[_0xfe1c('0x24')](function(_0x27e488){logger[_0xfe1c('0x2a')]('cmContact,\x20%s,\x20%s',_0xfe1c('0x12'),_0x27e488[_0xfe1c('0x36')]);});}}});})[_0xfe1c('0x18')](function(){_0xac84be();})[_0xfe1c('0x24')](function(_0x420cfd){logger[_0xfe1c('0x2a')](_0xfe1c('0x35'),_0xfe1c('0x12'),_0x420cfd[_0xfe1c('0x36')]);_0xac84be(_0x420cfd);});}else{_0xac84be(new Error(_0xfe1c('0x39')));}},'afterDestroy':function(_0x3a4276,_0x37c43,_0x43515f){var _0x3b6891=_0xea049e[_0xfe1c('0x3a')];var _0x5e564c=_0x3a4276[_0xfe1c('0x10')]({'plain':!![]});return _0x3b6891[_0xfe1c('0x1d')][_0xfe1c('0x31')]({'raw':!![],'where':{'ListId':_0x5e564c[_0xfe1c('0x21')],'ContactId':_0x5e564c['id']}})[_0xfe1c('0x18')](function(_0x2aaa31){if(!_[_0xfe1c('0x3b')](_0x2aaa31)){var _0x5088c8=[];for(var _0x324dbf=0x0;_0x324dbf<_0x2aaa31[_0xfe1c('0x2e')];_0x324dbf+=0x1){var _0x5a7067=_0x3b6891[_0xfe1c('0x1d')][_0xfe1c('0x3c')]({'where':{'ListId':_0x2aaa31[_0x324dbf][_0xfe1c('0x21')],'ContactId':_0x2aaa31[_0x324dbf]['ContactId'],'VoiceQueueId':_0x2aaa31[_0x324dbf]['VoiceQueueId'],'CampaignId':_0x2aaa31[_0x324dbf][_0xfe1c('0x3d')]}});_0x5088c8[_0xfe1c('0x3e')](_0x5a7067);}return BPromise['all'](_0x5088c8);}})[_0xfe1c('0x18')](function(_0x1b8c7a){logger[_0xfe1c('0x3f')](_0xfe1c('0x40'),util[_0xfe1c('0x41')](_0x1b8c7a,{'showHidden':![],'depth':null}));_0x43515f();})['catch'](function(_0x451bb2){logger[_0xfe1c('0x2a')](_0xfe1c('0x42'),util[_0xfe1c('0x41')](_0x451bb2,{'showHidden':![],'depth':null}));_0x43515f(_0x451bb2);});}}});};
\ No newline at end of file
index 9162c0e..df0dfb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x46681d,_0x1ac216){var _0x11572a=function(_0x2fff9e){while(--_0x2fff9e){_0x46681d['push'](_0x46681d['shift']());}};_0x11572a(++_0x1ac216);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
+var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
index 3ba424b..13ed081 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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 e82778e..dee1764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x13e8ce,_0xe60559){var _0x3727bd=function(_0x200087){while(--_0x200087){_0x13e8ce['push'](_0x13e8ce['shift']());}};_0x3727bd(++_0xe60559);}(_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'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
+var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x44958c,_0x5dfba8){var _0x29bc81=function(_0x4af1be){while(--_0x4af1be){_0x44958c['push'](_0x44958c['shift']());}};_0x29bc81(++_0x5dfba8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
index d673518..f2e5836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5455=['INTEGER','STRING','PHONE','exports'];(function(_0x98db33,_0x397f20){var _0x5ae63a=function(_0x411f1c){while(--_0x411f1c){_0x98db33['push'](_0x98db33['shift']());}};_0x5ae63a(++_0x397f20);}(_0x5455,0x197));var _0x5545=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5455[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');module[_0x5545('0x0')]={'CmContactId':{'type':Sequelize[_0x5545('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0x5545('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x5545('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x5545('0x2')],'defaultValue':_0x5545('0x3')},'OrderBy':{'type':Sequelize[_0x5545('0x1')],'defaultValue':null},'description':{'type':Sequelize['STRING'],'defaultValue':null}};
\ No newline at end of file
+var _0xd73a=['STRING','sequelize','exports','INTEGER'];(function(_0x32ccd7,_0x4d79e8){var _0x283c96=function(_0x27c734){while(--_0x27c734){_0x32ccd7['push'](_0x32ccd7['shift']());}};_0x283c96(++_0x4d79e8);}(_0xd73a,0x171));var _0xad73=function(_0xd0dce5,_0x32178e){_0xd0dce5=_0xd0dce5-0x0;var _0x59d673=_0xd73a[_0xd0dce5];return _0x59d673;};'use strict';var Sequelize=require(_0xad73('0x0'));module[_0xad73('0x1')]={'CmContactId':{'type':Sequelize[_0xad73('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0xad73('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xad73('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0xad73('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0xad73('0x3')],'defaultValue':null}};
\ No newline at end of file
index ad8aafb..fe3c05c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7874=['offset','set','Content-Range','reject','save','update','then','destroy','get','CmContactHasItems','UserProfileResource','error','stack','name','send','index','map','CmContactHasItem','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','params','rimraf','zip-dir','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x7874,0x1cd));var _0x4787=function(_0x4d8666,_0x2ff19d){_0x4d8666=_0x4d8666-0x0;var _0x37175b=_0x7874[_0x4d8666];return _0x37175b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4787('0x0'));var zipdir=require(_0x4787('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4787('0x2'));var BPromise=require(_0x4787('0x3'));var Mustache=require(_0x4787('0x4'));var util=require('util');var path=require('path');var sox=require(_0x4787('0x5'));var csv=require('to-csv');var ejs=require(_0x4787('0x6'));var fs=require('fs');var fs_extra=require(_0x4787('0x7'));var _=require(_0x4787('0x8'));var squel=require(_0x4787('0x9'));var crypto=require(_0x4787('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4787('0xb'));var toCsv=require('to-csv');var querystring=require(_0x4787('0xc'));var Papa=require(_0x4787('0xd'));var Redis=require(_0x4787('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4787('0xf'));var as=require(_0x4787('0x10'));var hardwareService=require(_0x4787('0x11'));var logger=require(_0x4787('0x12'))(_0x4787('0x13'));var utils=require(_0x4787('0x14'));var config=require(_0x4787('0x15'));var licenseUtil=require(_0x4787('0x16'));var db=require(_0x4787('0x17'))['db'];function respondWithStatusCode(_0x76c830,_0x2ab1b2){_0x2ab1b2=_0x2ab1b2||0xcc;return function(_0x171504){if(_0x171504){return _0x76c830[_0x4787('0x18')](_0x2ab1b2);}return _0x76c830['status'](_0x2ab1b2)[_0x4787('0x19')]();};}function respondWithResult(_0x2cdbb8,_0x481ce3){_0x481ce3=_0x481ce3||0xc8;return function(_0x296a05){if(_0x296a05){return _0x2cdbb8[_0x4787('0x1a')](_0x481ce3)[_0x4787('0x1b')](_0x296a05);}};}function respondWithFilteredResult(_0x4baee4,_0x339dce){return function(_0x5e7788){if(_0x5e7788){var _0xb98522=typeof _0x339dce['offset']===_0x4787('0x1c')&&typeof _0x339dce[_0x4787('0x1d')]==='undefined';var _0x423f01=_0x5e7788[_0x4787('0x1e')];var _0xd0074b=_0xb98522?0x0:_0x339dce[_0x4787('0x1f')];var _0x29b31c=_0xb98522?_0x5e7788[_0x4787('0x1e')]:_0x339dce[_0x4787('0x1f')]+_0x339dce[_0x4787('0x1d')];var _0x5365d9;if(_0x29b31c>=_0x423f01){_0x29b31c=_0x423f01;_0x5365d9=0xc8;}else{_0x5365d9=0xce;}_0x4baee4[_0x4787('0x1a')](_0x5365d9);return _0x4baee4[_0x4787('0x20')](_0x4787('0x21'),_0xd0074b+'-'+_0x29b31c+'/'+_0x423f01)[_0x4787('0x1b')](_0x5e7788);}return null;};}function patchUpdates(_0x5bd1d9){return function(_0x190f87){try{jsonpatch['apply'](_0x190f87,_0x5bd1d9,!![]);}catch(_0x42bd80){return BPromise[_0x4787('0x22')](_0x42bd80);}return _0x190f87[_0x4787('0x23')]();};}function saveUpdates(_0x550a37,_0x2b69a3){return function(_0xdefa03){if(_0xdefa03){return _0xdefa03[_0x4787('0x24')](_0x550a37)[_0x4787('0x25')](function(_0x17edc3){return _0x17edc3;});}return null;};}function removeEntity(_0x39e755,_0x134764){return function(_0x5278a3){if(_0x5278a3){return _0x5278a3[_0x4787('0x26')]()[_0x4787('0x25')](function(){var _0x5e14a2=_0x5278a3[_0x4787('0x27')]({'plain':!![]});var _0x2083d7=_0x4787('0x28');return db[_0x4787('0x29')][_0x4787('0x26')]({'where':{'type':_0x2083d7,'resourceId':_0x5e14a2['id']}})[_0x4787('0x25')](function(){return _0x5278a3;});})[_0x4787('0x25')](function(){_0x39e755[_0x4787('0x1a')](0xcc)[_0x4787('0x19')]();});}};}function handleEntityNotFound(_0x5683cd,_0x40f118){return function(_0x3220d0){if(!_0x3220d0){_0x5683cd[_0x4787('0x18')](0x194);}return _0x3220d0;};}function handleError(_0x2631cc,_0x2ad213){_0x2ad213=_0x2ad213||0x1f4;return function(_0x2e18fb){logger[_0x4787('0x2a')](_0x2e18fb[_0x4787('0x2b')]);if(_0x2e18fb[_0x4787('0x2c')]){delete _0x2e18fb['name'];}_0x2631cc[_0x4787('0x1a')](_0x2ad213)[_0x4787('0x2d')](_0x2e18fb);};}exports[_0x4787('0x2e')]=function(_0xc87c06,_0x1c6966){var _0x42af9d={},_0xee2e34={},_0xb893b={'count':0x0,'rows':[]};var _0x4fe393=_[_0x4787('0x2f')](db[_0x4787('0x30')]['rawAttributes'],function(_0x137b0f){return{'name':_0x137b0f[_0x4787('0x31')],'type':_0x137b0f[_0x4787('0x32')][_0x4787('0x33')]};});_0xee2e34[_0x4787('0x34')]=_['map'](_0x4fe393,_0x4787('0x2c'));_0xee2e34[_0x4787('0x35')]=_[_0x4787('0x36')](_0xc87c06[_0x4787('0x35')]);_0xee2e34[_0x4787('0x37')]=_[_0x4787('0x38')](_0xee2e34['model'],_0xee2e34[_0x4787('0x35')]);_0x42af9d[_0x4787('0x39')]=_[_0x4787('0x38')](_0xee2e34['model'],qs[_0x4787('0x3a')](_0xc87c06[_0x4787('0x35')][_0x4787('0x3a')]));_0x42af9d[_0x4787('0x39')]=_0x42af9d['attributes'][_0x4787('0x3b')]?_0x42af9d[_0x4787('0x39')]:_0xee2e34['model'];if(!_0xc87c06['query'][_0x4787('0x3c')]('nolimit')){_0x42af9d[_0x4787('0x1d')]=qs[_0x4787('0x1d')](_0xc87c06['query'][_0x4787('0x1d')]);_0x42af9d[_0x4787('0x1f')]=qs[_0x4787('0x1f')](_0xc87c06['query'][_0x4787('0x1f')]);}_0x42af9d['order']=qs['sort'](_0xc87c06['query'][_0x4787('0x3d')]);_0x42af9d[_0x4787('0x3e')]=qs['filters'](_['pick'](_0xc87c06[_0x4787('0x35')],_0xee2e34[_0x4787('0x37')]),_0x4fe393);if(_0xc87c06[_0x4787('0x35')][_0x4787('0x3f')]){_0x42af9d[_0x4787('0x3e')]=_[_0x4787('0x40')](_0x42af9d['where'],{'$or':_['map'](_0x4fe393,function(_0x4c6adf){if(_0x4c6adf[_0x4787('0x32')]!==_0x4787('0x41')){var _0x5da501={};_0x5da501[_0x4c6adf[_0x4787('0x2c')]]={'$like':'%'+_0xc87c06['query'][_0x4787('0x3f')]+'%'};return _0x5da501;}})});}_0x42af9d=_['merge']({},_0x42af9d,_0xc87c06[_0x4787('0x42')]);var _0x28469f={'where':_0x42af9d[_0x4787('0x3e')]};return db[_0x4787('0x30')]['count'](_0x28469f)[_0x4787('0x25')](function(_0x230d16){_0xb893b[_0x4787('0x1e')]=_0x230d16;if(_0xc87c06[_0x4787('0x35')]['includeAll']){_0x42af9d[_0x4787('0x43')]=[{'all':!![]}];}return db['CmContactHasItem'][_0x4787('0x44')](_0x42af9d);})['then'](function(_0x40cbc8){_0xb893b[_0x4787('0x45')]=_0x40cbc8;return _0xb893b;})[_0x4787('0x25')](respondWithFilteredResult(_0x1c6966,_0x42af9d))[_0x4787('0x46')](handleError(_0x1c6966,null));};exports[_0x4787('0x47')]=function(_0x24d1fd,_0x3a356b){var _0x4fc53b={'raw':!![],'where':{'id':_0x24d1fd['params']['id']}},_0x449e03={};_0x449e03[_0x4787('0x34')]=_['keys'](db[_0x4787('0x30')][_0x4787('0x48')]);_0x449e03[_0x4787('0x35')]=_[_0x4787('0x36')](_0x24d1fd['query']);_0x449e03['filters']=_[_0x4787('0x38')](_0x449e03[_0x4787('0x34')],_0x449e03[_0x4787('0x35')]);_0x4fc53b[_0x4787('0x39')]=_['intersection'](_0x449e03[_0x4787('0x34')],qs[_0x4787('0x3a')](_0x24d1fd[_0x4787('0x35')][_0x4787('0x3a')]));_0x4fc53b[_0x4787('0x39')]=_0x4fc53b[_0x4787('0x39')][_0x4787('0x3b')]?_0x4fc53b['attributes']:_0x449e03[_0x4787('0x34')];if(_0x24d1fd[_0x4787('0x35')][_0x4787('0x49')]){_0x4fc53b[_0x4787('0x43')]=[{'all':!![]}];}_0x4fc53b=_[_0x4787('0x40')]({},_0x4fc53b,_0x24d1fd[_0x4787('0x42')]);return db[_0x4787('0x30')]['find'](_0x4fc53b)[_0x4787('0x25')](handleEntityNotFound(_0x3a356b,null))[_0x4787('0x25')](respondWithResult(_0x3a356b,null))[_0x4787('0x46')](handleError(_0x3a356b,null));};exports[_0x4787('0x4a')]=function(_0x16218f,_0x55726d){return db[_0x4787('0x30')]['create'](_0x16218f[_0x4787('0x4b')],{})[_0x4787('0x25')](function(_0x54940a){var _0x5da168=_0x16218f[_0x4787('0x4c')][_0x4787('0x27')]({'plain':!![]});if(!_0x5da168)throw new Error(_0x4787('0x4d'));if(_0x5da168[_0x4787('0x4e')]===_0x4787('0x4c')){var _0x35c4cf=_0x54940a['get']({'plain':!![]});var _0x4cbadf=_0x4787('0x28');return db[_0x4787('0x4f')]['find']({'where':{'name':_0x4cbadf,'userProfileId':_0x5da168['userProfileId']},'raw':!![]})['then'](function(_0x2010ec){if(_0x2010ec&&_0x2010ec['autoAssociation']===0x0){return db[_0x4787('0x29')][_0x4787('0x4a')]({'name':_0x35c4cf[_0x4787('0x2c')],'resourceId':_0x35c4cf['id'],'type':_0x2010ec[_0x4787('0x2c')],'sectionId':_0x2010ec['id']},{})[_0x4787('0x25')](function(){return _0x54940a;});}else{return _0x54940a;}})['catch'](function(_0x218209){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x218209);throw _0x218209;});}return _0x54940a;})['then'](respondWithResult(_0x55726d,0xc9))[_0x4787('0x46')](handleError(_0x55726d,null));};exports[_0x4787('0x24')]=function(_0xa95a04,_0x204ca){if(_0xa95a04[_0x4787('0x4b')]['id']){delete _0xa95a04[_0x4787('0x4b')]['id'];}return db[_0x4787('0x30')][_0x4787('0x50')]({'where':{'id':_0xa95a04[_0x4787('0x51')]['id']}})['then'](handleEntityNotFound(_0x204ca,null))['then'](saveUpdates(_0xa95a04[_0x4787('0x4b')],null))['then'](respondWithResult(_0x204ca,null))[_0x4787('0x46')](handleError(_0x204ca,null));};exports[_0x4787('0x26')]=function(_0x5d10fc,_0x34d583){return db[_0x4787('0x30')][_0x4787('0x50')]({'where':{'id':_0x5d10fc[_0x4787('0x51')]['id']}})[_0x4787('0x25')](handleEntityNotFound(_0x34d583,null))['then'](removeEntity(_0x34d583,null))[_0x4787('0x46')](handleError(_0x34d583,null));};
\ No newline at end of file
+var _0x03c0=['create','user','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','CmContactHasItems','UserProfileResource','then','error','stack','name','send','index','CmContactHasItem','rawAttributes','fieldName','type','key','model','map','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find'];(function(_0x1e9dd1,_0x2e180a){var _0x1752dc=function(_0x2612f0){while(--_0x2612f0){_0x1e9dd1['push'](_0x1e9dd1['shift']());}};_0x1752dc(++_0x2e180a);}(_0x03c0,0xb7));var _0x003c=function(_0x20763f,_0x95bba){_0x20763f=_0x20763f-0x0;var _0x5462a3=_0x03c0[_0x20763f];return _0x5462a3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x003c('0x0'));var zipdir=require(_0x003c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x003c('0x2'));var moment=require(_0x003c('0x3'));var BPromise=require(_0x003c('0x4'));var Mustache=require(_0x003c('0x5'));var util=require(_0x003c('0x6'));var path=require('path');var sox=require(_0x003c('0x7'));var csv=require('to-csv');var ejs=require(_0x003c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x003c('0x9'));var squel=require(_0x003c('0xa'));var crypto=require(_0x003c('0xb'));var jsforce=require(_0x003c('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x003c('0xd'));var Papa=require(_0x003c('0xe'));var Redis=require('ioredis');var authService=require(_0x003c('0xf'));var qs=require(_0x003c('0x10'));var as=require(_0x003c('0x11'));var hardwareService=require(_0x003c('0x12'));var logger=require(_0x003c('0x13'))(_0x003c('0x14'));var utils=require(_0x003c('0x15'));var config=require(_0x003c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x003c('0x17'))['db'];function respondWithStatusCode(_0x17a25b,_0x106905){_0x106905=_0x106905||0xcc;return function(_0x4984c7){if(_0x4984c7){return _0x17a25b[_0x003c('0x18')](_0x106905);}return _0x17a25b[_0x003c('0x19')](_0x106905)['end']();};}function respondWithResult(_0x3d1578,_0x15ea54){_0x15ea54=_0x15ea54||0xc8;return function(_0x10d684){if(_0x10d684){return _0x3d1578['status'](_0x15ea54)[_0x003c('0x1a')](_0x10d684);}};}function respondWithFilteredResult(_0x506852,_0x308c93){return function(_0x142a07){if(_0x142a07){var _0x2316e6=typeof _0x308c93[_0x003c('0x1b')]===_0x003c('0x1c')&&typeof _0x308c93[_0x003c('0x1d')]===_0x003c('0x1c');var _0x2d68b7=_0x142a07[_0x003c('0x1e')];var _0x2f7e5a=_0x2316e6?0x0:_0x308c93[_0x003c('0x1b')];var _0x3b3807=_0x2316e6?_0x142a07[_0x003c('0x1e')]:_0x308c93[_0x003c('0x1b')]+_0x308c93['limit'];var _0x878513;if(_0x3b3807>=_0x2d68b7){_0x3b3807=_0x2d68b7;_0x878513=0xc8;}else{_0x878513=0xce;}_0x506852[_0x003c('0x19')](_0x878513);return _0x506852[_0x003c('0x1f')](_0x003c('0x20'),_0x2f7e5a+'-'+_0x3b3807+'/'+_0x2d68b7)['json'](_0x142a07);}return null;};}function patchUpdates(_0xfc660e){return function(_0x65b049){try{jsonpatch[_0x003c('0x21')](_0x65b049,_0xfc660e,!![]);}catch(_0x485c5a){return BPromise[_0x003c('0x22')](_0x485c5a);}return _0x65b049[_0x003c('0x23')]();};}function saveUpdates(_0x255a82,_0x3866e2){return function(_0x18830b){if(_0x18830b){return _0x18830b[_0x003c('0x24')](_0x255a82)['then'](function(_0x5b65b4){return _0x5b65b4;});}return null;};}function removeEntity(_0x24ac44,_0x367ff6){return function(_0x183565){if(_0x183565){return _0x183565[_0x003c('0x25')]()['then'](function(){var _0x2ed6d2=_0x183565['get']({'plain':!![]});var _0x2b665b=_0x003c('0x26');return db[_0x003c('0x27')][_0x003c('0x25')]({'where':{'type':_0x2b665b,'resourceId':_0x2ed6d2['id']}})[_0x003c('0x28')](function(){return _0x183565;});})[_0x003c('0x28')](function(){_0x24ac44[_0x003c('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e55cc,_0x1c6bbb){return function(_0x706554){if(!_0x706554){_0x2e55cc[_0x003c('0x18')](0x194);}return _0x706554;};}function handleError(_0x30e854,_0x2c41b3){_0x2c41b3=_0x2c41b3||0x1f4;return function(_0x435985){logger[_0x003c('0x29')](_0x435985[_0x003c('0x2a')]);if(_0x435985[_0x003c('0x2b')]){delete _0x435985[_0x003c('0x2b')];}_0x30e854['status'](_0x2c41b3)[_0x003c('0x2c')](_0x435985);};}exports[_0x003c('0x2d')]=function(_0x3d5c7f,_0x489f4e){var _0x1d1245={},_0x6d4a2c={},_0x13dc26={'count':0x0,'rows':[]};var _0x231124=_['map'](db[_0x003c('0x2e')][_0x003c('0x2f')],function(_0x3187ab){return{'name':_0x3187ab[_0x003c('0x30')],'type':_0x3187ab[_0x003c('0x31')][_0x003c('0x32')]};});_0x6d4a2c[_0x003c('0x33')]=_[_0x003c('0x34')](_0x231124,'name');_0x6d4a2c['query']=_[_0x003c('0x35')](_0x3d5c7f[_0x003c('0x36')]);_0x6d4a2c['filters']=_['intersection'](_0x6d4a2c['model'],_0x6d4a2c[_0x003c('0x36')]);_0x1d1245[_0x003c('0x37')]=_[_0x003c('0x38')](_0x6d4a2c[_0x003c('0x33')],qs[_0x003c('0x39')](_0x3d5c7f[_0x003c('0x36')]['fields']));_0x1d1245[_0x003c('0x37')]=_0x1d1245[_0x003c('0x37')][_0x003c('0x3a')]?_0x1d1245[_0x003c('0x37')]:_0x6d4a2c[_0x003c('0x33')];if(!_0x3d5c7f[_0x003c('0x36')][_0x003c('0x3b')](_0x003c('0x3c'))){_0x1d1245[_0x003c('0x1d')]=qs[_0x003c('0x1d')](_0x3d5c7f[_0x003c('0x36')][_0x003c('0x1d')]);_0x1d1245['offset']=qs['offset'](_0x3d5c7f[_0x003c('0x36')][_0x003c('0x1b')]);}_0x1d1245[_0x003c('0x3d')]=qs['sort'](_0x3d5c7f[_0x003c('0x36')][_0x003c('0x3e')]);_0x1d1245['where']=qs[_0x003c('0x3f')](_[_0x003c('0x40')](_0x3d5c7f[_0x003c('0x36')],_0x6d4a2c[_0x003c('0x3f')]),_0x231124);if(_0x3d5c7f[_0x003c('0x36')][_0x003c('0x41')]){_0x1d1245[_0x003c('0x42')]=_[_0x003c('0x43')](_0x1d1245[_0x003c('0x42')],{'$or':_[_0x003c('0x34')](_0x231124,function(_0x3cd7f1){if(_0x3cd7f1[_0x003c('0x31')]!==_0x003c('0x44')){var _0x36005e={};_0x36005e[_0x3cd7f1['name']]={'$like':'%'+_0x3d5c7f['query'][_0x003c('0x41')]+'%'};return _0x36005e;}})});}_0x1d1245=_[_0x003c('0x43')]({},_0x1d1245,_0x3d5c7f['options']);var _0x4be5f8={'where':_0x1d1245[_0x003c('0x42')]};return db[_0x003c('0x2e')][_0x003c('0x1e')](_0x4be5f8)[_0x003c('0x28')](function(_0x203203){_0x13dc26[_0x003c('0x1e')]=_0x203203;if(_0x3d5c7f[_0x003c('0x36')][_0x003c('0x45')]){_0x1d1245[_0x003c('0x46')]=[{'all':!![]}];}return db[_0x003c('0x2e')][_0x003c('0x47')](_0x1d1245);})[_0x003c('0x28')](function(_0x55eb2e){_0x13dc26[_0x003c('0x48')]=_0x55eb2e;return _0x13dc26;})['then'](respondWithFilteredResult(_0x489f4e,_0x1d1245))[_0x003c('0x49')](handleError(_0x489f4e,null));};exports[_0x003c('0x4a')]=function(_0xccc883,_0x16d24a){var _0x3afbea={'raw':!![],'where':{'id':_0xccc883[_0x003c('0x4b')]['id']}},_0x453cf6={};_0x453cf6[_0x003c('0x33')]=_[_0x003c('0x35')](db['CmContactHasItem'][_0x003c('0x2f')]);_0x453cf6[_0x003c('0x36')]=_[_0x003c('0x35')](_0xccc883[_0x003c('0x36')]);_0x453cf6[_0x003c('0x3f')]=_[_0x003c('0x38')](_0x453cf6[_0x003c('0x33')],_0x453cf6[_0x003c('0x36')]);_0x3afbea['attributes']=_[_0x003c('0x38')](_0x453cf6[_0x003c('0x33')],qs[_0x003c('0x39')](_0xccc883[_0x003c('0x36')][_0x003c('0x39')]));_0x3afbea[_0x003c('0x37')]=_0x3afbea[_0x003c('0x37')][_0x003c('0x3a')]?_0x3afbea[_0x003c('0x37')]:_0x453cf6[_0x003c('0x33')];if(_0xccc883[_0x003c('0x36')]['includeAll']){_0x3afbea[_0x003c('0x46')]=[{'all':!![]}];}_0x3afbea=_[_0x003c('0x43')]({},_0x3afbea,_0xccc883[_0x003c('0x4c')]);return db['CmContactHasItem'][_0x003c('0x4d')](_0x3afbea)[_0x003c('0x28')](handleEntityNotFound(_0x16d24a,null))[_0x003c('0x28')](respondWithResult(_0x16d24a,null))['catch'](handleError(_0x16d24a,null));};exports[_0x003c('0x4e')]=function(_0x964ea0,_0x3f76d6){return db[_0x003c('0x2e')][_0x003c('0x4e')](_0x964ea0['body'],{})[_0x003c('0x28')](function(_0x259cb2){var _0x4a72a8=_0x964ea0[_0x003c('0x4f')][_0x003c('0x50')]({'plain':!![]});if(!_0x4a72a8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4a72a8[_0x003c('0x51')]===_0x003c('0x4f')){var _0x3466b2=_0x259cb2[_0x003c('0x50')]({'plain':!![]});var _0x197dda=_0x003c('0x26');return db[_0x003c('0x52')][_0x003c('0x4d')]({'where':{'name':_0x197dda,'userProfileId':_0x4a72a8[_0x003c('0x53')]},'raw':!![]})[_0x003c('0x28')](function(_0x3148a0){if(_0x3148a0&&_0x3148a0[_0x003c('0x54')]===0x0){return db[_0x003c('0x27')][_0x003c('0x4e')]({'name':_0x3466b2['name'],'resourceId':_0x3466b2['id'],'type':_0x3148a0[_0x003c('0x2b')],'sectionId':_0x3148a0['id']},{})[_0x003c('0x28')](function(){return _0x259cb2;});}else{return _0x259cb2;}})['catch'](function(_0x1ff1c5){logger[_0x003c('0x29')](_0x003c('0x55'),_0x1ff1c5);throw _0x1ff1c5;});}return _0x259cb2;})['then'](respondWithResult(_0x3f76d6,0xc9))[_0x003c('0x49')](handleError(_0x3f76d6,null));};exports['update']=function(_0x5fd522,_0x46a4a6){if(_0x5fd522['body']['id']){delete _0x5fd522[_0x003c('0x56')]['id'];}return db[_0x003c('0x2e')][_0x003c('0x4d')]({'where':{'id':_0x5fd522[_0x003c('0x4b')]['id']}})[_0x003c('0x28')](handleEntityNotFound(_0x46a4a6,null))[_0x003c('0x28')](saveUpdates(_0x5fd522['body'],null))[_0x003c('0x28')](respondWithResult(_0x46a4a6,null))['catch'](handleError(_0x46a4a6,null));};exports[_0x003c('0x25')]=function(_0x5774ec,_0x1919d){return db[_0x003c('0x2e')][_0x003c('0x4d')]({'where':{'id':_0x5774ec[_0x003c('0x4b')]['id']}})[_0x003c('0x28')](handleEntityNotFound(_0x1919d,null))[_0x003c('0x28')](removeEntity(_0x1919d,null))['catch'](handleError(_0x1919d,null));};
\ No newline at end of file
index 48b403c..97b3031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe83e=['./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x45c536,_0x52a556){var _0x10e06d=function(_0x3fcca0){while(--_0x3fcca0){_0x45c536['push'](_0x45c536['shift']());}};_0x10e06d(++_0x52a556);}(_0xe83e,0x7a));var _0xee83=function(_0x446e8b,_0x2c9932){_0x446e8b=_0x446e8b-0x0;var _0x4cba6f=_0xe83e[_0x446e8b];return _0x4cba6f;};'use strict';var _=require(_0xee83('0x0'));var util=require(_0xee83('0x1'));var logger=require(_0xee83('0x2'))(_0xee83('0x3'));var moment=require(_0xee83('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xee83('0x5'));var rimraf=require(_0xee83('0x6'));var config=require(_0xee83('0x7'));var attributes=require(_0xee83('0x8'));module[_0xee83('0x9')]=function(_0x335a32,_0x5b6c78){return _0x335a32[_0xee83('0xa')](_0xee83('0xb'),attributes,{'tableName':_0xee83('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc64d=['request-promise','../../config/environment','exports','define','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc64d,0x1d2));var _0xdc64=function(_0x416d57,_0x144d3f){_0x416d57=_0x416d57-0x0;var _0x2c2289=_0xc64d[_0x416d57];return _0x2c2289;};'use strict';var _=require(_0xdc64('0x0'));var util=require(_0xdc64('0x1'));var logger=require(_0xdc64('0x2'))(_0xdc64('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xdc64('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdc64('0x5'));var attributes=require('./cmContactHasItem.attributes');module[_0xdc64('0x6')]=function(_0x10baab,_0x38273d){return _0x10baab[_0xdc64('0x7')](_0xdc64('0x8'),attributes,{'tableName':_0xdc64('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa4c079..d6d2b5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49f8=['CmContactHasItem,\x20%s,\x20%s','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','stringify','error','code','message'];(function(_0x41b99d,_0x205e1a){var _0x418916=function(_0x2d47fb){while(--_0x2d47fb){_0x41b99d['push'](_0x41b99d['shift']());}};_0x418916(++_0x205e1a);}(_0x49f8,0x17c));var _0x849f=function(_0x366494,_0x497c8a){_0x366494=_0x366494-0x0;var _0xf041a6=_0x49f8[_0x366494];return _0xf041a6;};'use strict';var _=require('lodash');var util=require(_0x849f('0x0'));var moment=require(_0x849f('0x1'));var BPromise=require(_0x849f('0x2'));var rs=require(_0x849f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x849f('0x4'))['db'];var utils=require(_0x849f('0x5'));var logger=require(_0x849f('0x6'))(_0x849f('0x7'));var config=require(_0x849f('0x8'));var jayson=require(_0x849f('0x9'));var client=jayson[_0x849f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x431421,_0x4916c6,_0x574069){return new BPromise(function(_0x137c06,_0x319c86){return client[_0x849f('0xb')](_0x431421,_0x574069)['then'](function(_0x55b3e2){logger[_0x849f('0xc')]('CmContactHasItem,\x20%s,\x20%s',_0x4916c6,_0x849f('0xd'));logger[_0x849f('0xe')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x4916c6,_0x849f('0xd'),JSON[_0x849f('0xf')](_0x55b3e2));if(_0x55b3e2[_0x849f('0x10')]){if(_0x55b3e2['error'][_0x849f('0x11')]===0x1f4){logger[_0x849f('0x10')]('CmContactHasItem,\x20%s,\x20%s',_0x4916c6,_0x55b3e2[_0x849f('0x10')][_0x849f('0x12')]);return _0x319c86(_0x55b3e2[_0x849f('0x10')][_0x849f('0x12')]);}logger['error'](_0x849f('0x13'),_0x4916c6,_0x55b3e2['error'][_0x849f('0x12')]);return _0x137c06(_0x55b3e2[_0x849f('0x10')][_0x849f('0x12')]);}else{logger[_0x849f('0xc')](_0x849f('0x13'),_0x4916c6,_0x849f('0xd'));_0x137c06(_0x55b3e2['result']['message']);}})[_0x849f('0x14')](function(_0x52263d){logger[_0x849f('0x10')]('CmContactHasItem,\x20%s,\x20%s',_0x4916c6,_0x52263d);_0x319c86(_0x52263d);});});}
\ No newline at end of file
+var _0x5af1=['rpc','client','http','then','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3bc10d,_0x21ebb2){var _0x4619be=function(_0x1e1684){while(--_0x1e1684){_0x3bc10d['push'](_0x3bc10d['shift']());}};_0x4619be(++_0x21ebb2);}(_0x5af1,0xc1));var _0x15af=function(_0x43b08,_0x15f967){_0x43b08=_0x43b08-0x0;var _0x5e05f4=_0x5af1[_0x43b08];return _0x5e05f4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x15af('0x0'));var BPromise=require(_0x15af('0x1'));var rs=require(_0x15af('0x2'));var fs=require('fs');var Redis=require(_0x15af('0x3'));var db=require(_0x15af('0x4'))['db'];var utils=require(_0x15af('0x5'));var logger=require(_0x15af('0x6'))(_0x15af('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x15af('0x8')][_0x15af('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c7a11,_0x50bb92,_0x2811b9){return new BPromise(function(_0x8a52e1,_0x1d201b){return client['request'](_0x5c7a11,_0x2811b9)[_0x15af('0xa')](function(_0x5e74b8){logger['info'](_0x15af('0xb'),_0x50bb92,_0x15af('0xc'));logger[_0x15af('0xd')](_0x15af('0xe'),_0x50bb92,_0x15af('0xc'),JSON[_0x15af('0xf')](_0x5e74b8));if(_0x5e74b8[_0x15af('0x10')]){if(_0x5e74b8[_0x15af('0x10')][_0x15af('0x11')]===0x1f4){logger['error'](_0x15af('0xb'),_0x50bb92,_0x5e74b8[_0x15af('0x10')][_0x15af('0x12')]);return _0x1d201b(_0x5e74b8['error'][_0x15af('0x12')]);}logger[_0x15af('0x10')](_0x15af('0xb'),_0x50bb92,_0x5e74b8['error']['message']);return _0x8a52e1(_0x5e74b8[_0x15af('0x10')][_0x15af('0x12')]);}else{logger['info'](_0x15af('0xb'),_0x50bb92,_0x15af('0xc'));_0x8a52e1(_0x5e74b8['result'][_0x15af('0x12')]);}})[_0x15af('0x13')](function(_0x460e78){logger[_0x15af('0x10')](_0x15af('0xb'),_0x50bb92,_0x460e78);_0x1d201b(_0x460e78);});});}
\ No newline at end of file
index c1197f4..3c17cee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5205=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra'];(function(_0x25ff58,_0x30ac37){var _0x12562d=function(_0x4b2647){while(--_0x4b2647){_0x25ff58['push'](_0x25ff58['shift']());}};_0x12562d(++_0x30ac37);}(_0x5205,0x1e1));var _0x5520=function(_0x798727,_0x59e5a7){_0x798727=_0x798727-0x0;var _0x94556f=_0x5205[_0x798727];return _0x94556f;};'use strict';var multer=require(_0x5520('0x0'));var util=require(_0x5520('0x1'));var path=require('path');var timeout=require(_0x5520('0x2'));var express=require(_0x5520('0x3'));var router=express['Router']();var fs_extra=require(_0x5520('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5520('0x5'));var config=require(_0x5520('0x6'));var controller=require('./cmContactHasItem.controller');router[_0x5520('0x7')]('/',auth[_0x5520('0x8')](),controller[_0x5520('0x9')]);router[_0x5520('0x7')](_0x5520('0xa'),auth['isAuthenticated'](),controller[_0x5520('0xb')]);router[_0x5520('0xc')]('/',auth[_0x5520('0x8')](),controller[_0x5520('0xd')]);router['put'](_0x5520('0xa'),auth[_0x5520('0x8')](),controller[_0x5520('0xe')]);router[_0x5520('0xf')](_0x5520('0xa'),auth[_0x5520('0x8')](),controller[_0x5520('0x10')]);module[_0x5520('0x11')]=router;
\ No newline at end of file
+var _0x68d7=['../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x68d7,0xf4));var _0x768d=function(_0x56244d,_0xd0d67c){_0x56244d=_0x56244d-0x0;var _0x130a2b=_0x68d7[_0x56244d];return _0x130a2b;};'use strict';var multer=require(_0x768d('0x0'));var util=require(_0x768d('0x1'));var path=require('path');var timeout=require(_0x768d('0x2'));var express=require(_0x768d('0x3'));var router=express[_0x768d('0x4')]();var fs_extra=require(_0x768d('0x5'));var auth=require(_0x768d('0x6'));var interaction=require(_0x768d('0x7'));var config=require(_0x768d('0x8'));var controller=require(_0x768d('0x9'));router[_0x768d('0xa')]('/',auth[_0x768d('0xb')](),controller[_0x768d('0xc')]);router[_0x768d('0xa')](_0x768d('0xd'),auth['isAuthenticated'](),controller[_0x768d('0xe')]);router['post']('/',auth[_0x768d('0xb')](),controller[_0x768d('0xf')]);router[_0x768d('0x10')]('/:id',auth[_0x768d('0xb')](),controller[_0x768d('0x11')]);router[_0x768d('0x12')](_0x768d('0xd'),auth[_0x768d('0xb')](),controller[_0x768d('0x13')]);module[_0x768d('0x14')]=router;
\ No newline at end of file
index bda887a..ffd20e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb4a=['long','type','select','parse','values','stringify','BOOLEAN','voice','sequelize','lodash','exports','getDataValue','alias','STRING','setDataValue','name','TEXT'];(function(_0x397f37,_0x3cf86d){var _0x31cae6=function(_0x5cddb9){while(--_0x5cddb9){_0x397f37['push'](_0x397f37['shift']());}};_0x31cae6(++_0x3cf86d);}(_0xeb4a,0x15c));var _0xaeb4=function(_0x4b3fa1,_0x497557){_0x4b3fa1=_0x4b3fa1-0x0;var _0x3a9c0a=_0xeb4a[_0x4b3fa1];return _0x3a9c0a;};'use strict';var Sequelize=require(_0xaeb4('0x0'));var _=require(_0xaeb4('0x1'));module[_0xaeb4('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x5bc085){return this[_0xaeb4('0x3')](_0xaeb4('0x4'));}},'alias':{'type':Sequelize[_0xaeb4('0x5')],'allowNull':![],'set':function(_0x291804){this[_0xaeb4('0x6')](_0xaeb4('0x4'),_0x291804?_0x291804:this['getDataValue'](_0xaeb4('0x7')));}},'type':{'type':Sequelize[_0xaeb4('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xaeb4('0x8')](_0xaeb4('0x9')),'get':function(){if(this[_0xaeb4('0x3')](_0xaeb4('0xa'))===_0xaeb4('0xb')){return JSON[_0xaeb4('0xc')](this[_0xaeb4('0x3')](_0xaeb4('0xd')));}else{return this[_0xaeb4('0x3')](_0xaeb4('0xd'));}},'set':function(_0x1abe88){if(Array['isArray'](_0x1abe88)){this[_0xaeb4('0x6')](_0xaeb4('0xd'),JSON[_0xaeb4('0xe')](_0x1abe88));}else{this[_0xaeb4('0x6')]('values',_0x1abe88);}}},'required':{'type':Sequelize[_0xaeb4('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xaeb4('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xaeb4('0x10'))}};
\ No newline at end of file
+var _0xdc0c=['VIRTUAL','getDataValue','alias','STRING','setDataValue','name','TEXT','long','type','select','parse','values','isArray','stringify','ENUM','voice','sequelize','lodash','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdc0c,0x1eb));var _0xcdc0=function(_0x58be6e,_0x2aced4){_0x58be6e=_0x58be6e-0x0;var _0x334457=_0xdc0c[_0x58be6e];return _0x334457;};'use strict';var Sequelize=require(_0xcdc0('0x0'));var _=require(_0xcdc0('0x1'));module[_0xcdc0('0x2')]={'name':{'type':Sequelize[_0xcdc0('0x3')],'get':function(_0x6dc7d){return this[_0xcdc0('0x4')](_0xcdc0('0x5'));}},'alias':{'type':Sequelize[_0xcdc0('0x6')],'allowNull':![],'set':function(_0x2e501f){this[_0xcdc0('0x7')](_0xcdc0('0x5'),_0x2e501f?_0x2e501f:this[_0xcdc0('0x4')](_0xcdc0('0x8')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xcdc0('0x9')](_0xcdc0('0xa')),'get':function(){if(this['getDataValue'](_0xcdc0('0xb'))===_0xcdc0('0xc')){return JSON[_0xcdc0('0xd')](this['getDataValue'](_0xcdc0('0xe')));}else{return this[_0xcdc0('0x4')]('values');}},'set':function(_0x3c4d55){if(Array[_0xcdc0('0xf')](_0x3c4d55)){this['setDataValue'](_0xcdc0('0xe'),JSON[_0xcdc0('0x10')](_0x3c4d55));}else{this['setDataValue'](_0xcdc0('0xe'),_0x3c4d55);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xcdc0('0x11')](_0xcdc0('0x12'))}};
\ No newline at end of file
index b286e82..cbcd4e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05b9=['mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','then','destroy','end','stack','name','send','map','CmCustomField','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','update','body','find','create','transaction','Sequelize','text','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','cf_%d','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x1dbaf7,_0x3d05b3){var _0x593f05=function(_0x381936){while(--_0x381936){_0x1dbaf7['push'](_0x1dbaf7['shift']());}};_0x593f05(++_0x3d05b3);}(_0x05b9,0xf2));var _0x905b=function(_0x1620f5,_0xcf5340){_0x1620f5=_0x1620f5-0x0;var _0x4017fe=_0x05b9[_0x1620f5];return _0x4017fe;};'use strict';var emlformat=require(_0x905b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x905b('0x1'));var jsonpatch=require(_0x905b('0x2'));var rp=require(_0x905b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x905b('0x4'));var util=require(_0x905b('0x5'));var path=require(_0x905b('0x6'));var sox=require(_0x905b('0x7'));var csv=require(_0x905b('0x8'));var ejs=require(_0x905b('0x9'));var fs=require('fs');var fs_extra=require(_0x905b('0xa'));var _=require('lodash');var squel=require(_0x905b('0xb'));var crypto=require('crypto');var jsforce=require(_0x905b('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x905b('0xd'));var authService=require(_0x905b('0xe'));var qs=require(_0x905b('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x905b('0x10'));var logger=require('../../config/logger')(_0x905b('0x11'));var utils=require(_0x905b('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x905b('0x13'));var db=require(_0x905b('0x14'))['db'];function respondWithStatusCode(_0x4e9b0f,_0x7ae611){_0x7ae611=_0x7ae611||0xcc;return function(_0x2df1cc){if(_0x2df1cc){return _0x4e9b0f[_0x905b('0x15')](_0x7ae611);}return _0x4e9b0f['status'](_0x7ae611)['end']();};}function respondWithResult(_0x195db9,_0x353e53){_0x353e53=_0x353e53||0xc8;return function(_0x367e1f){if(_0x367e1f){return _0x195db9['status'](_0x353e53)[_0x905b('0x16')](_0x367e1f);}};}function respondWithFilteredResult(_0x2fdf5e,_0x3fdc20){return function(_0x427455){if(_0x427455){var _0x492881=typeof _0x3fdc20[_0x905b('0x17')]==='undefined'&&typeof _0x3fdc20[_0x905b('0x18')]===_0x905b('0x19');var _0x224273=_0x427455[_0x905b('0x1a')];var _0x2d3536=_0x492881?0x0:_0x3fdc20[_0x905b('0x17')];var _0x131fd9=_0x492881?_0x427455[_0x905b('0x1a')]:_0x3fdc20[_0x905b('0x17')]+_0x3fdc20['limit'];var _0x148547;if(_0x131fd9>=_0x224273){_0x131fd9=_0x224273;_0x148547=0xc8;}else{_0x148547=0xce;}_0x2fdf5e[_0x905b('0x1b')](_0x148547);return _0x2fdf5e[_0x905b('0x1c')](_0x905b('0x1d'),_0x2d3536+'-'+_0x131fd9+'/'+_0x224273)['json'](_0x427455);}return null;};}function patchUpdates(_0x3ac7de){return function(_0x27d911){try{jsonpatch[_0x905b('0x1e')](_0x27d911,_0x3ac7de,!![]);}catch(_0x3298e2){return BPromise[_0x905b('0x1f')](_0x3298e2);}return _0x27d911[_0x905b('0x20')]();};}function saveUpdates(_0x3038e3,_0xac6686){return function(_0x4c4e8e){if(_0x4c4e8e){return _0x4c4e8e['update'](_0x3038e3)[_0x905b('0x21')](function(_0x49b235){return _0x49b235;});}return null;};}function removeEntity(_0x4d73c4,_0x32fff7){return function(_0x48351a){if(_0x48351a){return _0x48351a[_0x905b('0x22')]()[_0x905b('0x21')](function(){_0x4d73c4[_0x905b('0x1b')](0xcc)[_0x905b('0x23')]();});}};}function handleEntityNotFound(_0x269dc1,_0x34ec5a){return function(_0x2ede79){if(!_0x2ede79){_0x269dc1['sendStatus'](0x194);}return _0x2ede79;};}function handleError(_0x4eb247,_0x134a1a){_0x134a1a=_0x134a1a||0x1f4;return function(_0x24fc34){logger['error'](_0x24fc34[_0x905b('0x24')]);if(_0x24fc34[_0x905b('0x25')]){delete _0x24fc34[_0x905b('0x25')];}_0x4eb247[_0x905b('0x1b')](_0x134a1a)[_0x905b('0x26')](_0x24fc34);};}exports['index']=function(_0x1cb536,_0x47cb59){var _0x39771c={},_0x17581f={},_0x164353={'count':0x0,'rows':[]};var _0x5a16b6=_[_0x905b('0x27')](db[_0x905b('0x28')][_0x905b('0x29')],function(_0x5f30f0){return{'name':_0x5f30f0[_0x905b('0x2a')],'type':_0x5f30f0[_0x905b('0x2b')]['key']};});_0x17581f[_0x905b('0x2c')]=_['differenceBy'](_[_0x905b('0x27')](_0x5a16b6,_0x905b('0x25')),[_0x905b('0x25')]);_0x17581f[_0x905b('0x2d')]=_['keys'](_0x1cb536[_0x905b('0x2d')]);_0x17581f[_0x905b('0x2e')]=_[_0x905b('0x2f')](_0x17581f[_0x905b('0x2c')],_0x17581f['query']);_0x39771c['attributes']=_[_0x905b('0x2f')](_0x17581f[_0x905b('0x2c')],qs[_0x905b('0x30')](_0x1cb536[_0x905b('0x2d')][_0x905b('0x30')]));_0x39771c[_0x905b('0x31')]=_0x39771c[_0x905b('0x31')][_0x905b('0x32')]?_0x39771c['attributes']:_0x17581f['model'];if(!_0x1cb536[_0x905b('0x2d')][_0x905b('0x33')](_0x905b('0x34'))){_0x39771c['limit']=qs[_0x905b('0x18')](_0x1cb536[_0x905b('0x2d')][_0x905b('0x18')]);_0x39771c[_0x905b('0x17')]=qs[_0x905b('0x17')](_0x1cb536['query'][_0x905b('0x17')]);}_0x39771c[_0x905b('0x35')]=qs[_0x905b('0x36')](_0x1cb536['query']['sort']);_0x39771c[_0x905b('0x37')]=qs[_0x905b('0x2e')](_['pick'](_0x1cb536[_0x905b('0x2d')],_0x17581f[_0x905b('0x2e')]),_0x5a16b6);if(_0x1cb536[_0x905b('0x2d')][_0x905b('0x38')]){_0x39771c[_0x905b('0x37')]=_[_0x905b('0x39')](_0x39771c['where'],{'$or':_['map'](_0x5a16b6,function(_0x27047d){if(_0x27047d[_0x905b('0x2b')]!==_0x905b('0x3a')){var _0x1be15c={};_0x1be15c[_0x27047d[_0x905b('0x25')]]={'$like':'%'+_0x1cb536[_0x905b('0x2d')][_0x905b('0x38')]+'%'};return _0x1be15c;}})});}_0x39771c=_['merge']({},_0x39771c,_0x1cb536[_0x905b('0x3b')]);var _0xcc0292={'where':_0x39771c[_0x905b('0x37')]};return db[_0x905b('0x28')][_0x905b('0x1a')](_0xcc0292)[_0x905b('0x21')](function(_0x37c8db){_0x164353[_0x905b('0x1a')]=_0x37c8db;if(_0x1cb536[_0x905b('0x2d')][_0x905b('0x3c')]){_0x39771c[_0x905b('0x3d')]=[{'all':!![]}];}return db[_0x905b('0x28')][_0x905b('0x3e')](_0x39771c);})['then'](function(_0x3c9998){_0x164353[_0x905b('0x3f')]=_0x3c9998;return _0x164353;})[_0x905b('0x21')](respondWithFilteredResult(_0x47cb59,_0x39771c))[_0x905b('0x40')](handleError(_0x47cb59,null));};exports['show']=function(_0x4688f7,_0x58ec75){var _0x5c4eca={'raw':!![],'where':{'id':_0x4688f7[_0x905b('0x41')]['id']}},_0x57e9fc={};_0x57e9fc['model']=_[_0x905b('0x42')](db[_0x905b('0x28')][_0x905b('0x29')]);_0x57e9fc['query']=_[_0x905b('0x42')](_0x4688f7['query']);_0x57e9fc['filters']=_[_0x905b('0x2f')](_0x57e9fc[_0x905b('0x2c')],_0x57e9fc[_0x905b('0x2d')]);_0x5c4eca[_0x905b('0x31')]=_[_0x905b('0x2f')](_0x57e9fc[_0x905b('0x2c')],qs['fields'](_0x4688f7['query'][_0x905b('0x30')]));_0x5c4eca[_0x905b('0x31')]=_0x5c4eca[_0x905b('0x31')][_0x905b('0x32')]?_0x5c4eca[_0x905b('0x31')]:_0x57e9fc[_0x905b('0x2c')];if(_0x4688f7[_0x905b('0x2d')][_0x905b('0x3c')]){_0x5c4eca[_0x905b('0x3d')]=[{'all':!![]}];}_0x5c4eca=_['merge']({},_0x5c4eca,_0x4688f7['options']);return db['CmCustomField']['find'](_0x5c4eca)[_0x905b('0x21')](handleEntityNotFound(_0x58ec75,null))[_0x905b('0x21')](respondWithResult(_0x58ec75,null))['catch'](handleError(_0x58ec75,null));};exports[_0x905b('0x43')]=function(_0x1c2fb6,_0x332ff2){if(_0x1c2fb6['body']['id']){delete _0x1c2fb6[_0x905b('0x44')]['id'];}return db[_0x905b('0x28')]['find']({'where':{'id':_0x1c2fb6[_0x905b('0x41')]['id']}})[_0x905b('0x21')](handleEntityNotFound(_0x332ff2,null))['then'](saveUpdates(_0x1c2fb6['body'],null))['then'](respondWithResult(_0x332ff2,null))[_0x905b('0x40')](handleError(_0x332ff2,null));};exports['destroy']=function(_0x27338d,_0x3b2ca2){return db[_0x905b('0x28')][_0x905b('0x45')]({'where':{'id':_0x27338d['params']['id']}})[_0x905b('0x21')](handleEntityNotFound(_0x3b2ca2,null))[_0x905b('0x21')](removeEntity(_0x3b2ca2,null))['catch'](handleError(_0x3b2ca2,null));};exports[_0x905b('0x46')]=function(_0x9fe0c0,_0x449d49){var _0x4cf90b;return db['sequelize'][_0x905b('0x47')](function(_0x218190){return db['CmCustomField'][_0x905b('0x46')](_0x9fe0c0[_0x905b('0x44')],{'transaction':_0x218190})[_0x905b('0x21')](function(_0x2af113){_0x4cf90b=_0x2af113;var _0x2ba167={'type':db[_0x905b('0x48')]['TEXT'],'transaction':_0x218190};switch(_0x9fe0c0[_0x905b('0x44')][_0x905b('0x2b')]){case _0x905b('0x49'):_0x2ba167[_0x905b('0x2b')]=db[_0x905b('0x48')]['TEXT'];break;case _0x905b('0x4a'):_0x2ba167[_0x905b('0x2b')]=db['Sequelize'][_0x905b('0x4b')];break;case _0x905b('0x4c'):_0x2ba167[_0x905b('0x2b')]=db[_0x905b('0x48')]['BOOLEAN'];_0x2ba167[_0x905b('0x4d')]=![];break;default:}return db['sequelize'][_0x905b('0x4e')][_0x905b('0x4f')](_0x905b('0x50'),util['format'](_0x905b('0x51'),_0x4cf90b['id']),_0x2ba167);})[_0x905b('0x21')](function(){return _0x4cf90b;});})[_0x905b('0x21')](respondWithResult(_0x449d49,0xc9))[_0x905b('0x40')](handleError(_0x449d49,null));};
\ No newline at end of file
+var _0x1378=['includeAll','findAll','rows','catch','show','params','rawAttributes','update','body','find','create','sequelize','TEXT','text','Sequelize','number','INTEGER','defaultValue','queryInterface','addColumn','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','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','status','end','offset','undefined','limit','count','json','apply','reject','save','then','destroy','sendStatus','error','name','send','index','map','CmCustomField','type','keys','query','filters','intersection','attributes','fields','length','model','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options'];(function(_0xd58ad1,_0x38fd59){var _0x2495ac=function(_0x22dbcf){while(--_0x22dbcf){_0xd58ad1['push'](_0xd58ad1['shift']());}};_0x2495ac(++_0x38fd59);}(_0x1378,0x160));var _0x8137=function(_0x4675f5,_0x496ad2){_0x4675f5=_0x4675f5-0x0;var _0x481965=_0x1378[_0x4675f5];return _0x481965;};'use strict';var emlformat=require(_0x8137('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8137('0x1'));var jsonpatch=require(_0x8137('0x2'));var rp=require(_0x8137('0x3'));var moment=require(_0x8137('0x4'));var BPromise=require(_0x8137('0x5'));var Mustache=require(_0x8137('0x6'));var util=require(_0x8137('0x7'));var path=require('path');var sox=require(_0x8137('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8137('0x9'));var squel=require('squel');var crypto=require(_0x8137('0xa'));var jsforce=require(_0x8137('0xb'));var deskjs=require(_0x8137('0xc'));var toCsv=require('to-csv');var querystring=require(_0x8137('0xd'));var Papa=require(_0x8137('0xe'));var Redis=require(_0x8137('0xf'));var authService=require(_0x8137('0x10'));var qs=require(_0x8137('0x11'));var as=require(_0x8137('0x12'));var hardwareService=require(_0x8137('0x13'));var logger=require(_0x8137('0x14'))(_0x8137('0x15'));var utils=require(_0x8137('0x16'));var config=require(_0x8137('0x17'));var licenseUtil=require(_0x8137('0x18'));var db=require(_0x8137('0x19'))['db'];function respondWithStatusCode(_0x156273,_0x9bd661){_0x9bd661=_0x9bd661||0xcc;return function(_0x1e2164){if(_0x1e2164){return _0x156273['sendStatus'](_0x9bd661);}return _0x156273[_0x8137('0x1a')](_0x9bd661)[_0x8137('0x1b')]();};}function respondWithResult(_0x2edce3,_0x58b901){_0x58b901=_0x58b901||0xc8;return function(_0x2f27b5){if(_0x2f27b5){return _0x2edce3[_0x8137('0x1a')](_0x58b901)['json'](_0x2f27b5);}};}function respondWithFilteredResult(_0x1b5328,_0x45d769){return function(_0xa897a){if(_0xa897a){var _0x373c1b=typeof _0x45d769[_0x8137('0x1c')]===_0x8137('0x1d')&&typeof _0x45d769[_0x8137('0x1e')]===_0x8137('0x1d');var _0x41ee37=_0xa897a['count'];var _0x52cd56=_0x373c1b?0x0:_0x45d769['offset'];var _0x4b0de8=_0x373c1b?_0xa897a[_0x8137('0x1f')]:_0x45d769['offset']+_0x45d769['limit'];var _0x261852;if(_0x4b0de8>=_0x41ee37){_0x4b0de8=_0x41ee37;_0x261852=0xc8;}else{_0x261852=0xce;}_0x1b5328['status'](_0x261852);return _0x1b5328['set']('Content-Range',_0x52cd56+'-'+_0x4b0de8+'/'+_0x41ee37)[_0x8137('0x20')](_0xa897a);}return null;};}function patchUpdates(_0x979a81){return function(_0xa175fc){try{jsonpatch[_0x8137('0x21')](_0xa175fc,_0x979a81,!![]);}catch(_0x24f3f6){return BPromise[_0x8137('0x22')](_0x24f3f6);}return _0xa175fc[_0x8137('0x23')]();};}function saveUpdates(_0x59dc27,_0x186c99){return function(_0x302320){if(_0x302320){return _0x302320['update'](_0x59dc27)[_0x8137('0x24')](function(_0x5c1326){return _0x5c1326;});}return null;};}function removeEntity(_0x2bebdd,_0x2b0de0){return function(_0x305b9d){if(_0x305b9d){return _0x305b9d[_0x8137('0x25')]()[_0x8137('0x24')](function(){_0x2bebdd[_0x8137('0x1a')](0xcc)[_0x8137('0x1b')]();});}};}function handleEntityNotFound(_0x560c10,_0x3e9eeb){return function(_0x432141){if(!_0x432141){_0x560c10[_0x8137('0x26')](0x194);}return _0x432141;};}function handleError(_0x37100a,_0x3463c5){_0x3463c5=_0x3463c5||0x1f4;return function(_0x389589){logger[_0x8137('0x27')](_0x389589['stack']);if(_0x389589[_0x8137('0x28')]){delete _0x389589[_0x8137('0x28')];}_0x37100a[_0x8137('0x1a')](_0x3463c5)[_0x8137('0x29')](_0x389589);};}exports[_0x8137('0x2a')]=function(_0x2213d3,_0x36cfb4){var _0x4913de={},_0x1e9a9b={},_0x3e0d3f={'count':0x0,'rows':[]};var _0x4007ba=_[_0x8137('0x2b')](db[_0x8137('0x2c')]['rawAttributes'],function(_0x22405c){return{'name':_0x22405c['fieldName'],'type':_0x22405c[_0x8137('0x2d')]['key']};});_0x1e9a9b['model']=_['differenceBy'](_[_0x8137('0x2b')](_0x4007ba,'name'),['name']);_0x1e9a9b['query']=_[_0x8137('0x2e')](_0x2213d3[_0x8137('0x2f')]);_0x1e9a9b[_0x8137('0x30')]=_[_0x8137('0x31')](_0x1e9a9b['model'],_0x1e9a9b[_0x8137('0x2f')]);_0x4913de[_0x8137('0x32')]=_[_0x8137('0x31')](_0x1e9a9b['model'],qs[_0x8137('0x33')](_0x2213d3[_0x8137('0x2f')][_0x8137('0x33')]));_0x4913de[_0x8137('0x32')]=_0x4913de[_0x8137('0x32')][_0x8137('0x34')]?_0x4913de[_0x8137('0x32')]:_0x1e9a9b[_0x8137('0x35')];if(!_0x2213d3['query']['hasOwnProperty'](_0x8137('0x36'))){_0x4913de[_0x8137('0x1e')]=qs[_0x8137('0x1e')](_0x2213d3[_0x8137('0x2f')][_0x8137('0x1e')]);_0x4913de[_0x8137('0x1c')]=qs[_0x8137('0x1c')](_0x2213d3[_0x8137('0x2f')][_0x8137('0x1c')]);}_0x4913de[_0x8137('0x37')]=qs[_0x8137('0x38')](_0x2213d3[_0x8137('0x2f')][_0x8137('0x38')]);_0x4913de['where']=qs[_0x8137('0x30')](_[_0x8137('0x39')](_0x2213d3[_0x8137('0x2f')],_0x1e9a9b[_0x8137('0x30')]),_0x4007ba);if(_0x2213d3[_0x8137('0x2f')][_0x8137('0x3a')]){_0x4913de[_0x8137('0x3b')]=_['merge'](_0x4913de['where'],{'$or':_[_0x8137('0x2b')](_0x4007ba,function(_0x272fff){if(_0x272fff[_0x8137('0x2d')]!==_0x8137('0x3c')){var _0x271b3c={};_0x271b3c[_0x272fff['name']]={'$like':'%'+_0x2213d3[_0x8137('0x2f')][_0x8137('0x3a')]+'%'};return _0x271b3c;}})});}_0x4913de=_[_0x8137('0x3d')]({},_0x4913de,_0x2213d3[_0x8137('0x3e')]);var _0x426e94={'where':_0x4913de[_0x8137('0x3b')]};return db['CmCustomField']['count'](_0x426e94)[_0x8137('0x24')](function(_0x484bc6){_0x3e0d3f[_0x8137('0x1f')]=_0x484bc6;if(_0x2213d3['query'][_0x8137('0x3f')]){_0x4913de['include']=[{'all':!![]}];}return db[_0x8137('0x2c')][_0x8137('0x40')](_0x4913de);})[_0x8137('0x24')](function(_0x2e530d){_0x3e0d3f[_0x8137('0x41')]=_0x2e530d;return _0x3e0d3f;})[_0x8137('0x24')](respondWithFilteredResult(_0x36cfb4,_0x4913de))[_0x8137('0x42')](handleError(_0x36cfb4,null));};exports[_0x8137('0x43')]=function(_0x384356,_0x4b0e11){var _0x177bc6={'raw':!![],'where':{'id':_0x384356[_0x8137('0x44')]['id']}},_0x4886f3={};_0x4886f3[_0x8137('0x35')]=_[_0x8137('0x2e')](db[_0x8137('0x2c')][_0x8137('0x45')]);_0x4886f3[_0x8137('0x2f')]=_[_0x8137('0x2e')](_0x384356[_0x8137('0x2f')]);_0x4886f3['filters']=_[_0x8137('0x31')](_0x4886f3[_0x8137('0x35')],_0x4886f3[_0x8137('0x2f')]);_0x177bc6[_0x8137('0x32')]=_['intersection'](_0x4886f3[_0x8137('0x35')],qs[_0x8137('0x33')](_0x384356['query']['fields']));_0x177bc6['attributes']=_0x177bc6['attributes'][_0x8137('0x34')]?_0x177bc6[_0x8137('0x32')]:_0x4886f3[_0x8137('0x35')];if(_0x384356[_0x8137('0x2f')][_0x8137('0x3f')]){_0x177bc6['include']=[{'all':!![]}];}_0x177bc6=_[_0x8137('0x3d')]({},_0x177bc6,_0x384356[_0x8137('0x3e')]);return db[_0x8137('0x2c')]['find'](_0x177bc6)[_0x8137('0x24')](handleEntityNotFound(_0x4b0e11,null))[_0x8137('0x24')](respondWithResult(_0x4b0e11,null))[_0x8137('0x42')](handleError(_0x4b0e11,null));};exports[_0x8137('0x46')]=function(_0x17b45c,_0x5d47c7){if(_0x17b45c['body']['id']){delete _0x17b45c[_0x8137('0x47')]['id'];}return db[_0x8137('0x2c')]['find']({'where':{'id':_0x17b45c[_0x8137('0x44')]['id']}})[_0x8137('0x24')](handleEntityNotFound(_0x5d47c7,null))[_0x8137('0x24')](saveUpdates(_0x17b45c[_0x8137('0x47')],null))[_0x8137('0x24')](respondWithResult(_0x5d47c7,null))[_0x8137('0x42')](handleError(_0x5d47c7,null));};exports[_0x8137('0x25')]=function(_0x1cb4c3,_0x16beda){return db['CmCustomField'][_0x8137('0x48')]({'where':{'id':_0x1cb4c3['params']['id']}})[_0x8137('0x24')](handleEntityNotFound(_0x16beda,null))[_0x8137('0x24')](removeEntity(_0x16beda,null))[_0x8137('0x42')](handleError(_0x16beda,null));};exports[_0x8137('0x49')]=function(_0x48dade,_0xe088cb){var _0x42b7b7;return db[_0x8137('0x4a')]['transaction'](function(_0x2d7bc3){return db[_0x8137('0x2c')]['create'](_0x48dade[_0x8137('0x47')],{'transaction':_0x2d7bc3})[_0x8137('0x24')](function(_0x5526b4){_0x42b7b7=_0x5526b4;var _0x2690e4={'type':db['Sequelize'][_0x8137('0x4b')],'transaction':_0x2d7bc3};switch(_0x48dade['body'][_0x8137('0x2d')]){case _0x8137('0x4c'):_0x2690e4[_0x8137('0x2d')]=db[_0x8137('0x4d')][_0x8137('0x4b')];break;case _0x8137('0x4e'):_0x2690e4[_0x8137('0x2d')]=db['Sequelize'][_0x8137('0x4f')];break;case'switch':_0x2690e4[_0x8137('0x2d')]=db[_0x8137('0x4d')]['BOOLEAN'];_0x2690e4[_0x8137('0x50')]=![];break;default:}return db['sequelize'][_0x8137('0x51')][_0x8137('0x52')]('cm_contacts',util['format']('cf_%d',_0x42b7b7['id']),_0x2690e4);})[_0x8137('0x24')](function(){return _0x42b7b7;});})[_0x8137('0x24')](respondWithResult(_0xe088cb,0xc9))[_0x8137('0x42')](handleError(_0xe088cb,null));};
\ No newline at end of file
index 89a13b5..0ad3074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x360f=['util','../../config/logger','bluebird','request-promise','path','rimraf','./cmCustomField.attributes','exports','define','cm_custom_fields'];(function(_0x8f2a36,_0x5cfca1){var _0x148292=function(_0x2414df){while(--_0x2414df){_0x8f2a36['push'](_0x8f2a36['shift']());}};_0x148292(++_0x5cfca1);}(_0x360f,0xa0));var _0xf360=function(_0xaf8cfc,_0x14d9d4){_0xaf8cfc=_0xaf8cfc-0x0;var _0x577204=_0x360f[_0xaf8cfc];return _0x577204;};'use strict';var _=require('lodash');var util=require(_0xf360('0x0'));var logger=require(_0xf360('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf360('0x2'));var rp=require(_0xf360('0x3'));var fs=require('fs');var path=require(_0xf360('0x4'));var rimraf=require(_0xf360('0x5'));var config=require('../../config/environment');var attributes=require(_0xf360('0x6'));module[_0xf360('0x7')]=function(_0x16a3fb,_0x20bae4){return _0x16a3fb[_0xf360('0x8')]('CmCustomField',attributes,{'tableName':_0xf360('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cbb=['moment','request-promise','rimraf','../../config/environment','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','lodash','util','../../config/logger','api'];(function(_0x16dbfd,_0x2f9431){var _0x382254=function(_0x19dade){while(--_0x19dade){_0x16dbfd['push'](_0x16dbfd['shift']());}};_0x382254(++_0x2f9431);}(_0x1cbb,0x141));var _0xb1cb=function(_0x507ea1,_0x3a1b73){_0x507ea1=_0x507ea1-0x0;var _0x3c2089=_0x1cbb[_0x507ea1];return _0x3c2089;};'use strict';var _=require(_0xb1cb('0x0'));var util=require(_0xb1cb('0x1'));var logger=require(_0xb1cb('0x2'))(_0xb1cb('0x3'));var moment=require(_0xb1cb('0x4'));var BPromise=require('bluebird');var rp=require(_0xb1cb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb1cb('0x6'));var config=require(_0xb1cb('0x7'));var attributes=require(_0xb1cb('0x8'));module[_0xb1cb('0x9')]=function(_0x445b60,_0x580759){return _0x445b60[_0xb1cb('0xa')](_0xb1cb('0xb'),attributes,{'tableName':_0xb1cb('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd9119f..58c766e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e82=['jayson/promise','client','http','request','then','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','../../config/utils','rpc'];(function(_0x19f2e6,_0x1c1d08){var _0x486e25=function(_0x13a1cf){while(--_0x13a1cf){_0x19f2e6['push'](_0x19f2e6['shift']());}};_0x486e25(++_0x1c1d08);}(_0x9e82,0x12c));var _0x29e8=function(_0x38a7b1,_0x40048f){_0x38a7b1=_0x38a7b1-0x0;var _0x230b3c=_0x9e82[_0x38a7b1];return _0x230b3c;};'use strict';var _=require('lodash');var util=require(_0x29e8('0x0'));var moment=require(_0x29e8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x29e8('0x2'));var logger=require('../../config/logger')(_0x29e8('0x3'));var config=require('../../config/environment');var jayson=require(_0x29e8('0x4'));var client=jayson[_0x29e8('0x5')][_0x29e8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x5d8a3f,_0x39c1ac,_0x213221){return new BPromise(function(_0x1436d3,_0x19a5cf){return client[_0x29e8('0x7')](_0x5d8a3f,_0x213221)[_0x29e8('0x8')](function(_0x1bc654){logger['info'](_0x29e8('0x9'),_0x39c1ac,_0x29e8('0xa'));logger['debug'](_0x29e8('0xb'),_0x39c1ac,_0x29e8('0xa'),JSON[_0x29e8('0xc')](_0x1bc654));if(_0x1bc654[_0x29e8('0xd')]){if(_0x1bc654[_0x29e8('0xd')][_0x29e8('0xe')]===0x1f4){logger[_0x29e8('0xd')](_0x29e8('0x9'),_0x39c1ac,_0x1bc654[_0x29e8('0xd')][_0x29e8('0xf')]);return _0x19a5cf(_0x1bc654[_0x29e8('0xd')][_0x29e8('0xf')]);}logger[_0x29e8('0xd')]('CmCustomField,\x20%s,\x20%s',_0x39c1ac,_0x1bc654[_0x29e8('0xd')]['message']);return _0x1436d3(_0x1bc654[_0x29e8('0xd')][_0x29e8('0xf')]);}else{logger[_0x29e8('0x10')](_0x29e8('0x9'),_0x39c1ac,_0x29e8('0xa'));_0x1436d3(_0x1bc654[_0x29e8('0x11')]['message']);}})[_0x29e8('0x12')](function(_0x1d4773){logger[_0x29e8('0xd')](_0x29e8('0x9'),_0x39c1ac,_0x1d4773);_0x19a5cf(_0x1d4773);});});}
\ No newline at end of file
+var _0x4499=['http','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1b7ad0,_0xfa0ea2){var _0x6f00e=function(_0x326ab2){while(--_0x326ab2){_0x1b7ad0['push'](_0x1b7ad0['shift']());}};_0x6f00e(++_0xfa0ea2);}(_0x4499,0x186));var _0x9449=function(_0x3941d4,_0x445e2f){_0x3941d4=_0x3941d4-0x0;var _0x42e507=_0x4499[_0x3941d4];return _0x42e507;};'use strict';var _=require(_0x9449('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9449('0x1'));var fs=require('fs');var Redis=require(_0x9449('0x2'));var db=require(_0x9449('0x3'))['db'];var utils=require(_0x9449('0x4'));var logger=require(_0x9449('0x5'))(_0x9449('0x6'));var config=require(_0x9449('0x7'));var jayson=require(_0x9449('0x8'));var client=jayson['client'][_0x9449('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4faee9,_0x5a4e89,_0x2e4b59){return new BPromise(function(_0x2925f8,_0x5670ef){return client['request'](_0x4faee9,_0x2e4b59)[_0x9449('0xa')](function(_0x3eddcf){logger[_0x9449('0xb')](_0x9449('0xc'),_0x5a4e89,_0x9449('0xd'));logger[_0x9449('0xe')](_0x9449('0xf'),_0x5a4e89,_0x9449('0xd'),JSON[_0x9449('0x10')](_0x3eddcf));if(_0x3eddcf[_0x9449('0x11')]){if(_0x3eddcf[_0x9449('0x11')][_0x9449('0x12')]===0x1f4){logger['error'](_0x9449('0xc'),_0x5a4e89,_0x3eddcf[_0x9449('0x11')][_0x9449('0x13')]);return _0x5670ef(_0x3eddcf[_0x9449('0x11')][_0x9449('0x13')]);}logger[_0x9449('0x11')]('CmCustomField,\x20%s,\x20%s',_0x5a4e89,_0x3eddcf[_0x9449('0x11')][_0x9449('0x13')]);return _0x2925f8(_0x3eddcf['error'][_0x9449('0x13')]);}else{logger[_0x9449('0xb')](_0x9449('0xc'),_0x5a4e89,_0x9449('0xd'));_0x2925f8(_0x3eddcf['result']['message']);}})[_0x9449('0x14')](function(_0x4eb016){logger[_0x9449('0x11')](_0x9449('0xc'),_0x5a4e89,_0x4eb016);_0x5670ef(_0x4eb016);});});}
\ No newline at end of file
index 03f4b11..360b45c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0578=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./cmCustomField.controller','isAuthenticated','get','/:id','show','create','put','destroy','exports','multer','util'];(function(_0x23b76a,_0x488a74){var _0xfaab3=function(_0x271791){while(--_0x271791){_0x23b76a['push'](_0x23b76a['shift']());}};_0xfaab3(++_0x488a74);}(_0x0578,0x1b8));var _0x8057=function(_0x1efe08,_0x3dc529){_0x1efe08=_0x1efe08-0x0;var _0x5e9b2a=_0x0578[_0x1efe08];return _0x5e9b2a;};'use strict';var multer=require(_0x8057('0x0'));var util=require(_0x8057('0x1'));var path=require(_0x8057('0x2'));var timeout=require(_0x8057('0x3'));var express=require(_0x8057('0x4'));var router=express['Router']();var fs_extra=require(_0x8057('0x5'));var auth=require(_0x8057('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8057('0x7'));var controller=require(_0x8057('0x8'));router['get']('/',auth[_0x8057('0x9')](),controller['index']);router[_0x8057('0xa')](_0x8057('0xb'),auth['isAuthenticated'](),controller[_0x8057('0xc')]);router['post']('/',auth[_0x8057('0x9')](),controller[_0x8057('0xd')]);router[_0x8057('0xe')](_0x8057('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x8057('0xb'),auth[_0x8057('0x9')](),controller[_0x8057('0xf')]);module[_0x8057('0x10')]=router;
\ No newline at end of file
+var _0x78e0=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./cmCustomField.controller','get','isAuthenticated','index','show','post','create','put','/:id','update'];(function(_0x457192,_0x33b1e9){var _0x3ecc6b=function(_0x1603dd){while(--_0x1603dd){_0x457192['push'](_0x457192['shift']());}};_0x3ecc6b(++_0x33b1e9);}(_0x78e0,0x13e));var _0x078e=function(_0x141f74,_0x420286){_0x141f74=_0x141f74-0x0;var _0x3a462f=_0x78e0[_0x141f74];return _0x3a462f;};'use strict';var multer=require(_0x078e('0x0'));var util=require(_0x078e('0x1'));var path=require(_0x078e('0x2'));var timeout=require(_0x078e('0x3'));var express=require(_0x078e('0x4'));var router=express[_0x078e('0x5')]();var fs_extra=require(_0x078e('0x6'));var auth=require(_0x078e('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x078e('0x8'));router[_0x078e('0x9')]('/',auth[_0x078e('0xa')](),controller[_0x078e('0xb')]);router[_0x078e('0x9')]('/:id',auth[_0x078e('0xa')](),controller[_0x078e('0xc')]);router[_0x078e('0xd')]('/',auth[_0x078e('0xa')](),controller[_0x078e('0xe')]);router[_0x078e('0xf')](_0x078e('0x10'),auth['isAuthenticated'](),controller[_0x078e('0x11')]);router[_0x078e('0x12')](_0x078e('0x10'),auth[_0x078e('0xa')](),controller[_0x078e('0x13')]);module[_0x078e('0x14')]=router;
\ No newline at end of file
index b4a3668..0b3c279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c2=['moment','sequelize','exports','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','STRING','DATE','contactListQueue'];(function(_0x1e48e6,_0x4f2c3a){var _0x8a4d1c=function(_0x52b9ae){while(--_0x52b9ae){_0x1e48e6['push'](_0x1e48e6['shift']());}};_0x8a4d1c(++_0x4f2c3a);}(_0xe2c2,0x122));var _0x2e2c=function(_0x597237,_0x442d47){_0x597237=_0x597237-0x0;var _0x542aed=_0xe2c2[_0x597237];return _0x542aed;};'use strict';var moment=require(_0x2e2c('0x0'));var Sequelize=require(_0x2e2c('0x1'));module[_0x2e2c('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x2e2c('0x3')](_0x2e2c('0x4'))},'countbusyretry':{'type':Sequelize[_0x2e2c('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x2e2c('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x2e2c('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x2e2c('0x6')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2e2c('0x7')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2e2c('0x8')]},'priority':{'type':Sequelize[_0x2e2c('0x5')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x2e2c('0x5')],'unique':_0x2e2c('0x9')},'ListId':{'type':Sequelize[_0x2e2c('0x5')],'unique':_0x2e2c('0x9')},'UserId':{'type':Sequelize[_0x2e2c('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x2e2c('0x5')],'unique':_0x2e2c('0x9')},'CampaignId':{'type':Sequelize[_0x2e2c('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x2e2c('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x2e2c('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2e2c('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x2e2c('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x2e2c('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x2e2c('0x8')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xfece=['contactListQueue','moment','sequelize','exports','STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED'];(function(_0x42b304,_0x427ea2){var _0x36b11f=function(_0x248610){while(--_0x248610){_0x42b304['push'](_0x42b304['shift']());}};_0x36b11f(++_0x427ea2);}(_0xfece,0x6f));var _0xefec=function(_0x18c2cd,_0x1fb459){_0x18c2cd=_0x18c2cd-0x0;var _0x5648ed=_0xfece[_0x18c2cd];return _0x5648ed;};'use strict';var moment=require(_0xefec('0x0'));var Sequelize=require(_0xefec('0x1'));module[_0xefec('0x2')]={'phone':{'type':Sequelize[_0xefec('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0xefec('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xefec('0x5')],'defaultValue':moment()[_0xefec('0x6')](_0xefec('0x7'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xefec('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xefec('0x5')]},'priority':{'type':Sequelize[_0xefec('0x8')](0x2)[_0xefec('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xefec('0x8')],'unique':_0xefec('0xa')},'ListId':{'type':Sequelize[_0xefec('0x8')],'unique':_0xefec('0xa')},'UserId':{'type':Sequelize[_0xefec('0x8')]},'VoiceQueueId':{'type':Sequelize[_0xefec('0x8')],'unique':_0xefec('0xa')},'CampaignId':{'type':Sequelize[_0xefec('0x8')]},'countnosuchnumberretry':{'type':Sequelize[_0xefec('0x8')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xefec('0x8')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xefec('0x8')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xefec('0x8')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xefec('0x8')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0xefec('0x8')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xefec('0x3')]},'recallmeNotifiedDate':{'type':Sequelize[_0xefec('0x5')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 0b9c922..c602144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe198=['key','model','query','keys','filters','intersection','concat','$or','$gt','$gte','$lte','$ne','$eq','$not','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$any','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','findAll','catch','show','length','includeAll','include','find','create','body','update','describe','destroy','params','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','format','calleridnum','campaigntype','queue','ivr','CmContact','ContactId','firstName','isNil','lastName','calleridname','finally','CmHopperAdditionalPhone','end','preview','dialOrderByScheduledAt','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','DESC','ASC','literal','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','phone','recallme','LOCK','UPDATE','Contact','CmCompany','Company','List','Queue','getPreviewRecall','CmList','dialActive','getOpenContacts','getVoiceQueues','outbound','CmHopper,\x20%s,\x20%s,\x20%s','getTimezones','push','utcOffset','getTimezone','moment','lodash','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','then','sendStatus','error','name','send','index','map','CmHopper','rawAttributes','fieldName','type'];(function(_0x3be0c4,_0x5b7eff){var _0x11af9f=function(_0x3f5113){while(--_0x3f5113){_0x3be0c4['push'](_0x3be0c4['shift']());}};_0x11af9f(++_0x5b7eff);}(_0xe198,0x6f));var _0x8e19=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xe198[_0x36c5b0];return _0xf19333;};'use strict';var moment=require(_0x8e19('0x0'));var _=require(_0x8e19('0x1'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x8e19('0x2'));var shared=require(_0x8e19('0x3'));var db=require(_0x8e19('0x4'))['db'];function respondWithResult(_0x529200,_0x32f52f){_0x32f52f=_0x32f52f||0xc8;return function(_0x4e3f58){if(_0x4e3f58){return _0x529200[_0x8e19('0x5')](_0x32f52f)[_0x8e19('0x6')](_0x4e3f58);}};}function respondWithFilteredResult(_0x2fb138,_0x188ce0){return function(_0x1175d6){if(_0x1175d6){var _0x4db35e=typeof _0x188ce0[_0x8e19('0x7')]===_0x8e19('0x8')&&typeof _0x188ce0[_0x8e19('0x9')]===_0x8e19('0x8');var _0x3fbe35=_0x1175d6[_0x8e19('0xa')];var _0x375054=_0x4db35e?0x0:_0x188ce0['offset'];var _0x146989=_0x4db35e?_0x1175d6[_0x8e19('0xa')]:_0x188ce0[_0x8e19('0x7')]+_0x188ce0[_0x8e19('0x9')];var _0x358d90;if(_0x146989>=_0x3fbe35){_0x146989=_0x3fbe35;_0x358d90=0xc8;}else{_0x358d90=0xce;}_0x2fb138[_0x8e19('0x5')](_0x358d90);return _0x2fb138[_0x8e19('0xb')](_0x8e19('0xc'),_0x375054+'-'+_0x146989+'/'+_0x3fbe35)['json'](_0x1175d6);}return null;};}function saveUpdates(_0x51a0c4,_0x3f4a6d){return function(_0x4b1b8d){if(_0x4b1b8d){return _0x4b1b8d['update'](_0x51a0c4)[_0x8e19('0xd')](function(_0x2c2d05){return _0x2c2d05;});}return null;};}function handleEntityNotFound(_0x16b584,_0x76ccdb){return function(_0x4a75e0){if(!_0x4a75e0){_0x16b584[_0x8e19('0xe')](0x194);}return _0x4a75e0;};}function handleError(_0x32f3ef,_0x5c474d){_0x5c474d=_0x5c474d||0x1f4;return function(_0x34a7c9){logger[_0x8e19('0xf')](_0x34a7c9['stack']);if(_0x34a7c9[_0x8e19('0x10')]){delete _0x34a7c9[_0x8e19('0x10')];}_0x32f3ef[_0x8e19('0x5')](_0x5c474d)[_0x8e19('0x11')](_0x34a7c9);};}exports[_0x8e19('0x12')]=function(_0x2e61e9,_0x27be43){var _0x1dde49={},_0x28d288={},_0x1c64f9={'count':0x0,'rows':[]};var _0x18a9d0=_[_0x8e19('0x13')](db[_0x8e19('0x14')][_0x8e19('0x15')],function(_0x4aa341){return{'name':_0x4aa341[_0x8e19('0x16')],'type':_0x4aa341[_0x8e19('0x17')][_0x8e19('0x18')]};});_0x28d288[_0x8e19('0x19')]=_[_0x8e19('0x13')](_0x18a9d0,_0x8e19('0x10'));_0x28d288[_0x8e19('0x1a')]=_[_0x8e19('0x1b')](_0x2e61e9[_0x8e19('0x1a')]);_0x28d288[_0x8e19('0x1c')]=_[_0x8e19('0x1d')](_0x28d288[_0x8e19('0x19')],_0x28d288[_0x8e19('0x1a')]);_0x28d288['filters']=_[_0x8e19('0x1e')](_0x28d288['filters'],['$and',_0x8e19('0x1f'),_0x8e19('0x20'),_0x8e19('0x21'),'$lt',_0x8e19('0x22'),_0x8e19('0x23'),_0x8e19('0x24'),_0x8e19('0x25'),_0x8e19('0x26'),_0x8e19('0x27'),'$in',_0x8e19('0x28'),_0x8e19('0x29'),_0x8e19('0x2a'),_0x8e19('0x2b'),_0x8e19('0x2c'),_0x8e19('0x29'),_0x8e19('0x2d'),'$contains','$contained',_0x8e19('0x2e')]);_0x1dde49[_0x8e19('0x2f')]=_[_0x8e19('0x1d')](_0x28d288[_0x8e19('0x19')],qs[_0x8e19('0x30')](_0x2e61e9[_0x8e19('0x1a')]['fields']));_0x1dde49['attributes']=_0x1dde49[_0x8e19('0x2f')]['length']?_0x1dde49[_0x8e19('0x2f')]:_0x28d288[_0x8e19('0x19')];if(!_0x2e61e9[_0x8e19('0x1a')][_0x8e19('0x31')]('nolimit')){_0x1dde49[_0x8e19('0x9')]=qs[_0x8e19('0x9')](_0x2e61e9['query']['limit']);_0x1dde49[_0x8e19('0x7')]=qs[_0x8e19('0x7')](_0x2e61e9[_0x8e19('0x1a')][_0x8e19('0x7')]);}_0x1dde49[_0x8e19('0x32')]=qs[_0x8e19('0x33')](_0x2e61e9[_0x8e19('0x1a')][_0x8e19('0x33')]);_0x1dde49['where']=qs[_0x8e19('0x1c')](_[_0x8e19('0x34')](_0x2e61e9['query'],_0x28d288[_0x8e19('0x1c')]),_0x18a9d0);if(_0x2e61e9[_0x8e19('0x1a')][_0x8e19('0x35')]){_0x1dde49[_0x8e19('0x36')]=_[_0x8e19('0x37')](_0x1dde49[_0x8e19('0x36')],{'$or':_[_0x8e19('0x13')](_0x18a9d0,function(_0x547368){if(_0x547368[_0x8e19('0x17')]!==_0x8e19('0x38')){var _0x398b9d={};_0x398b9d[_0x547368[_0x8e19('0x10')]]={'$like':'%'+_0x2e61e9[_0x8e19('0x1a')][_0x8e19('0x35')]+'%'};return _0x398b9d;}})});}_0x1dde49=_[_0x8e19('0x37')]({},_0x1dde49,_0x2e61e9[_0x8e19('0x39')]);var _0x15e4e6={'where':_0x1dde49[_0x8e19('0x36')]};return db[_0x8e19('0x14')][_0x8e19('0xa')](_0x15e4e6)['then'](function(_0x841669){_0x1c64f9['count']=_0x841669;if(_0x2e61e9['query']['includeAll']){_0x1dde49['include']=[{'all':!![]}];}return db[_0x8e19('0x14')][_0x8e19('0x3a')](_0x1dde49);})[_0x8e19('0xd')](function(_0xc15b5){_0x1c64f9['rows']=_0xc15b5;return _0x1c64f9;})[_0x8e19('0xd')](respondWithFilteredResult(_0x27be43,_0x1dde49))[_0x8e19('0x3b')](handleError(_0x27be43,null));};exports[_0x8e19('0x3c')]=function(_0x39aee0,_0x40bab6){var _0x1aa40b={'raw':!![],'where':{'id':_0x39aee0['params']['id']}},_0x5b71bb={};_0x5b71bb[_0x8e19('0x19')]=_[_0x8e19('0x1b')](db[_0x8e19('0x14')][_0x8e19('0x15')]);_0x5b71bb['query']=_[_0x8e19('0x1b')](_0x39aee0[_0x8e19('0x1a')]);_0x5b71bb['filters']=_[_0x8e19('0x1d')](_0x5b71bb[_0x8e19('0x19')],_0x5b71bb[_0x8e19('0x1a')]);_0x1aa40b['attributes']=_['intersection'](_0x5b71bb[_0x8e19('0x19')],qs[_0x8e19('0x30')](_0x39aee0[_0x8e19('0x1a')]['fields']));_0x1aa40b[_0x8e19('0x2f')]=_0x1aa40b[_0x8e19('0x2f')][_0x8e19('0x3d')]?_0x1aa40b[_0x8e19('0x2f')]:_0x5b71bb['model'];if(_0x39aee0[_0x8e19('0x1a')][_0x8e19('0x3e')]){_0x1aa40b[_0x8e19('0x3f')]=[{'all':!![]}];}_0x1aa40b=_[_0x8e19('0x37')]({},_0x1aa40b,_0x39aee0['options']);return db[_0x8e19('0x14')][_0x8e19('0x40')](_0x1aa40b)[_0x8e19('0xd')](handleEntityNotFound(_0x40bab6,null))[_0x8e19('0xd')](respondWithResult(_0x40bab6,null))[_0x8e19('0x3b')](handleError(_0x40bab6,null));};exports[_0x8e19('0x41')]=function(_0x1042d7,_0x118b2b){return db[_0x8e19('0x14')]['create'](_0x1042d7[_0x8e19('0x42')],{})['then'](respondWithResult(_0x118b2b,0xc9))[_0x8e19('0x3b')](handleError(_0x118b2b,null));};exports[_0x8e19('0x43')]=function(_0x2324f8,_0x241104){if(_0x2324f8[_0x8e19('0x42')]['id']){delete _0x2324f8[_0x8e19('0x42')]['id'];}return db[_0x8e19('0x14')][_0x8e19('0x40')]({'where':{'id':_0x2324f8['params']['id']}})[_0x8e19('0xd')](handleEntityNotFound(_0x241104,null))[_0x8e19('0xd')](saveUpdates(_0x2324f8[_0x8e19('0x42')],null))[_0x8e19('0xd')](respondWithResult(_0x241104,null))[_0x8e19('0x3b')](handleError(_0x241104,null));};exports[_0x8e19('0x44')]=function(_0x1bb5c8,_0x3edb29){return db[_0x8e19('0x14')]['describe']()[_0x8e19('0xd')](respondWithResult(_0x3edb29,null))[_0x8e19('0x3b')](handleError(_0x3edb29,null));};exports[_0x8e19('0x45')]=function(_0x19831c,_0xe30216){var _0xd9fa7d;var _0x3445cc=_0x19831c['params']['id'];return db['CmHopper']['find']({'where':{'id':_0x19831c[_0x8e19('0x46')]['id']}})[_0x8e19('0xd')](handleEntityNotFound(_0xe30216,null))[_0x8e19('0xd')](function(_0x271502){if(_0x271502){return _0x271502[_0x8e19('0x45')]()['then'](function(_0x2aaf42){return _0x2aaf42;});}})[_0x8e19('0xd')](function(_0x63e5db){_0xd9fa7d=_0x63e5db;if(_0x63e5db){if(_0x63e5db[_0x8e19('0x47')]||_0x63e5db[_0x8e19('0x48')]){return db[_0x63e5db[_0x8e19('0x47')]?_0x8e19('0x49'):_0x8e19('0x4a')]['find']({'where':{'id':_0x63e5db['VoiceQueueId']?_0x63e5db[_0x8e19('0x47')]:_0x63e5db[_0x8e19('0x48')]},'attributes':['id',_0x8e19('0x10')],'raw':!![]});}}})[_0x8e19('0xd')](function(_0x3197d1){var _0x3bdc42={};if(_0x3197d1){_[_0x8e19('0x37')](_0x3bdc42,_[_0x8e19('0x4b')](_0xd9fa7d[_0x8e19('0x4c')],[_0x8e19('0x4d'),_0x8e19('0x4e'),'id']));_0x3bdc42[_0x8e19('0x4f')]=0x15;_0x3bdc42[_0x8e19('0x50')]=_0x8e19('0x51');_0x3bdc42[_0x8e19('0x52')]=_0x3197d1[_0x8e19('0x10')];_0x3bdc42[_0x8e19('0x53')]=_0x19831c[_0x8e19('0x54')]['name'];_0x3bdc42['UserId']=_0x19831c[_0x8e19('0x54')]['id'];_0x3bdc42[_0x8e19('0x51')]=!![];_0x3bdc42['deletedat']=moment()[_0x8e19('0x55')]('YYYY-MM-DD\x20HH:mm:ss');_0x3bdc42[_0x8e19('0x56')]=_0xd9fa7d['phone'];_0x3bdc42[_0x8e19('0x57')]=_0xd9fa7d[_0x8e19('0x47')]?_0x8e19('0x58'):_0x8e19('0x59');return db[_0x8e19('0x5a')][_0x8e19('0x40')]({'where':{'id':_0x3bdc42[_0x8e19('0x5b')]},'attributes':[_0x8e19('0x5c'),'lastName']})[_0x8e19('0xd')](function(_0xdbc7fa){if(!_[_0x8e19('0x5d')](_0xe30216)&&!_[_0x8e19('0x5d')](_0xdbc7fa[_0x8e19('0x5c')])){_0x3bdc42['calleridname']=_0xdbc7fa[_0x8e19('0x5c')];if(!_['isNil'](_0xdbc7fa[_0x8e19('0x5e')])){_0x3bdc42[_0x8e19('0x5f')]+='\x20'+_0xdbc7fa[_0x8e19('0x5e')];}}})[_0x8e19('0x60')](function(){return db['CmHopperFinal']['create'](_0x3bdc42);});}})[_0x8e19('0xd')](function(_0x568302){return db[_0x8e19('0x61')][_0x8e19('0x45')]({'where':{'CmHopperId':_0x3445cc}});})[_0x8e19('0xd')](function(){return _0xe30216[_0x8e19('0x5')](0xcc)[_0x8e19('0x62')]();})[_0x8e19('0x3b')](handleError(_0xe30216,null));};exports['getPreview']=function(_0x4e63e4,_0x2cab3b){var _0xca2cab=[];return db[_0x8e19('0x5a')][_0x8e19('0x44')]()[_0x8e19('0xd')](function(_0x238783){_0xca2cab=_['keys'](_0x238783);return _0x4e63e4['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x8e19('0x63')},'attributes':['id',_0x8e19('0x64'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0x8e19('0xd')](function(_0x17f614){if(_0x17f614&&_0x17f614['length']){return db[_0x8e19('0x65')][_0x8e19('0x66')](function(_0x50308e){var _0x550da4={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x8e19('0x55')](_0x8e19('0x67'))},'VoiceQueueId':{'$in':_[_0x8e19('0x13')](_0x17f614,'id')},'$or':[{'UserId':null},{'UserId':_0x4e63e4[_0x8e19('0x54')]['id']}]};var _0x5cb961={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x17f614)[_0x8e19('0x35')](['dialPreviewAutoRecallMe',0x0])[_0x8e19('0x13')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x4e63e4['user']['id']}]};var _0x1e9cd2={'$or':[_0x550da4,_0x5cb961]};var _0x27c021=[];if(_0x4e63e4['body'][_0x8e19('0x68')]&&_0x4e63e4[_0x8e19('0x42')][_0x8e19('0x68')]===_0x8e19('0x69')){if(!_[_0x8e19('0x6a')](_0x4e63e4['body']['hopperIds'])){_0x1e9cd2['id']={'$in':_0x4e63e4[_0x8e19('0x42')][_0x8e19('0x6b')]};}_0x27c021=[[_0x8e19('0x6c'),'ASC'],['scheduledAt',_0x17f614[0x0][_0x8e19('0x64')]==='ASC'?_0x8e19('0x6d'):_0x8e19('0x6e')],db['sequelize'][_0x8e19('0x6f')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0x8e19('0x6a')](_0x4e63e4[_0x8e19('0x42')]['hopperIds'])){_0x1e9cd2['id']={'$notIn':_0x4e63e4[_0x8e19('0x42')]['hopperIds']};}_0x27c021=[[_0x8e19('0x6c'),_0x8e19('0x6d')],[_0x8e19('0x70'),_0x17f614[0x0][_0x8e19('0x64')]],db[_0x8e19('0x65')][_0x8e19('0x6f')](_0x8e19('0x71')),['id',_0x8e19('0x6e')]];}return db[_0x8e19('0x14')][_0x8e19('0x72')]({'attributes':['id','scheduledat',_0x8e19('0x73'),_0x8e19('0x74')],'where':_0x1e9cd2,'order':_0x27c021,'transaction':_0x50308e,'lock':_0x50308e[_0x8e19('0x75')][_0x8e19('0x76')],'include':[{'model':db[_0x8e19('0x5a')],'as':_0x8e19('0x77'),'attributes':_0xca2cab,'include':[{'model':db[_0x8e19('0x78')],'as':_0x8e19('0x79'),'attributes':['id',_0x8e19('0x10')]}]},{'model':db['CmList'],'as':_0x8e19('0x7a'),'attributes':['id',_0x8e19('0x10')]},{'model':db[_0x8e19('0x49')],'as':_0x8e19('0x7b'),'attributes':['id',_0x8e19('0x10'),'dialActive']}]})[_0x8e19('0xd')](function(_0x1235aa){if(_0x1235aa){return _0x1235aa[_0x8e19('0x43')]({'UserId':_0x4e63e4[_0x8e19('0x54')]['id']},{'transaction':_0x50308e});}});});}})[_0x8e19('0xd')](handleEntityNotFound(_0x2cab3b,null))[_0x8e19('0xd')](respondWithResult(_0x2cab3b,null))['catch'](handleError(_0x2cab3b,null));};exports[_0x8e19('0x7c')]=function(_0x37b474,_0x8fddd2,_0x50c11a){var _0x1b7a5a=[];var _0x39f694=_0x37b474[_0x8e19('0x46')]['id'];var _0x1f0d29=_0x37b474['user']['id'];return db['CmContact'][_0x8e19('0x44')]()[_0x8e19('0xd')](function(_0x573ab9){_0x1b7a5a=_[_0x8e19('0x1b')](_0x573ab9);return db['sequelize'][_0x8e19('0x66')](function(_0x1f4e62){const _0x3e9d2d={'id':_0x39f694};return db[_0x8e19('0x14')][_0x8e19('0x72')]({'attributes':['id','scheduledat',_0x8e19('0x74')],'where':_0x3e9d2d,'transaction':_0x1f4e62,'lock':_0x1f4e62[_0x8e19('0x75')]['UPDATE'],'include':[{'model':db[_0x8e19('0x5a')],'as':'Contact','attributes':_0x1b7a5a,'include':[{'model':db[_0x8e19('0x78')],'as':_0x8e19('0x79'),'attributes':['id','name']}]},{'model':db[_0x8e19('0x7d')],'as':'List','attributes':['id',_0x8e19('0x10')]},{'model':db[_0x8e19('0x49')],'as':_0x8e19('0x7b'),'attributes':['id','name',_0x8e19('0x7e')]}]})[_0x8e19('0xd')](function(_0x228c0c){if(_0x228c0c){return _0x228c0c[_0x8e19('0x43')]({'UserId':_0x1f0d29},{'transaction':_0x1f4e62});}});});})['then'](handleEntityNotFound(_0x8fddd2,null))[_0x8e19('0xd')](respondWithResult(_0x8fddd2,null))[_0x8e19('0x3b')](handleError(_0x8fddd2,null));};exports[_0x8e19('0x7f')]=function(_0x4af320,_0x3e0480){return _0x4af320[_0x8e19('0x54')][_0x8e19('0x80')]({'where':{'type':_0x8e19('0x81'),'dialActive':!![],'dialMethod':_0x8e19('0x63')},'attributes':['id'],'raw':!![]})['then'](function(_0x3af920){if(_0x3af920&&_0x3af920[_0x8e19('0x3d')]){return db[_0x8e19('0x14')][_0x8e19('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x8e19('0x67'))},'VoiceQueueId':{'$in':_[_0x8e19('0x13')](_0x3af920,'id')},'$or':[{'UserId':null},{'UserId':_0x4af320[_0x8e19('0x54')]['id']}]}});}return 0x0;})[_0x8e19('0xd')](function(_0x4030c0){if(!_[_0x8e19('0x5d')](_0x4030c0)&&_['isNumber'](_0x4030c0)){return _0x3e0480[_0x8e19('0x5')](0xc8)['json']({'contacts':_0x4030c0});}else{logger[_0x8e19('0xf')](_0x8e19('0x82'),_0x8e19('0x7f'),0x194,'entity\x20not\x20found');_0x3e0480[_0x8e19('0xe')](0x194);}})[_0x8e19('0x3b')](handleError(_0x3e0480,null));};exports[_0x8e19('0x83')]=function(_0x45d292,_0x5a0465){var _0x140022=shared['timezones'];var _0x2f4637=[];_[_0x8e19('0x13')](_0x140022,function(_0x5fafca){_0x2f4637[_0x8e19('0x84')]({'id':_0x5fafca[_0x8e19('0x10')],'name':_0x5fafca['name'],'utcOffset':_0x5fafca[_0x8e19('0x85')]});});return _0x5a0465[_0x8e19('0x5')](0xc8)[_0x8e19('0x6')]({'tz':_0x2f4637});};exports[_0x8e19('0x86')]=function(_0x572868,_0x330096){var _0x3ad259=shared['timezones'];var _0x284368={};if(!_['isNil'](_0x3ad259[_0x572868[_0x8e19('0x42')]['id']]))_0x284368=_0x3ad259[_0x572868[_0x8e19('0x42')]['id']];return _0x330096['status'](0xc8)['json'](_0x284368);};
\ No newline at end of file
+var _0xac31=['show','find','create','body','params','describe','destroy','CampaignId','VoiceQueueId','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','lastName','firstName','calleridname','CmHopperAdditionalPhone','end','getPreview','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','List','VoiceQueue','Queue','getPreviewRecall','transaction','recallme','dialActive','getVoiceQueues','isNumber','entity\x20not\x20found','getTimezones','timezones','push','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','offset','limit','count','status','Content-Range','json','update','then','sendStatus','error','name','index','CmHopper','rawAttributes','fieldName','model','map','query','keys','filters','intersection','concat','$and','$or','$gte','$lt','$lte','$ne','$eq','$like','$iLike','$notILike','$overlap','$contained','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch'];(function(_0x5e39d0,_0x15516e){var _0xfd2079=function(_0x4dfc9f){while(--_0x4dfc9f){_0x5e39d0['push'](_0x5e39d0['shift']());}};_0xfd2079(++_0x15516e);}(_0xac31,0xca));var _0x1ac3=function(_0x25acdd,_0x1fa596){_0x25acdd=_0x25acdd-0x0;var _0xeceb86=_0xac31[_0x25acdd];return _0xeceb86;};'use strict';var moment=require(_0x1ac3('0x0'));var _=require(_0x1ac3('0x1'));var qs=require(_0x1ac3('0x2'));var logger=require(_0x1ac3('0x3'))(_0x1ac3('0x4'));var shared=require(_0x1ac3('0x5'));var db=require(_0x1ac3('0x6'))['db'];function respondWithResult(_0x59b42c,_0x33b5ab){_0x33b5ab=_0x33b5ab||0xc8;return function(_0x434b5e){if(_0x434b5e){return _0x59b42c['status'](_0x33b5ab)['json'](_0x434b5e);}};}function respondWithFilteredResult(_0xbe22b7,_0x20027f){return function(_0x2bf9b1){if(_0x2bf9b1){var _0x1be223=typeof _0x20027f[_0x1ac3('0x7')]==='undefined'&&typeof _0x20027f[_0x1ac3('0x8')]==='undefined';var _0x1286d2=_0x2bf9b1[_0x1ac3('0x9')];var _0x344674=_0x1be223?0x0:_0x20027f['offset'];var _0xa26c88=_0x1be223?_0x2bf9b1[_0x1ac3('0x9')]:_0x20027f[_0x1ac3('0x7')]+_0x20027f[_0x1ac3('0x8')];var _0x2a8dc7;if(_0xa26c88>=_0x1286d2){_0xa26c88=_0x1286d2;_0x2a8dc7=0xc8;}else{_0x2a8dc7=0xce;}_0xbe22b7[_0x1ac3('0xa')](_0x2a8dc7);return _0xbe22b7['set'](_0x1ac3('0xb'),_0x344674+'-'+_0xa26c88+'/'+_0x1286d2)[_0x1ac3('0xc')](_0x2bf9b1);}return null;};}function saveUpdates(_0x2eeabf,_0x2338b9){return function(_0x50d3b6){if(_0x50d3b6){return _0x50d3b6[_0x1ac3('0xd')](_0x2eeabf)[_0x1ac3('0xe')](function(_0x46c0e9){return _0x46c0e9;});}return null;};}function handleEntityNotFound(_0x2def9f,_0x53cc35){return function(_0x24bb5e){if(!_0x24bb5e){_0x2def9f[_0x1ac3('0xf')](0x194);}return _0x24bb5e;};}function handleError(_0x551eac,_0x29a7b3){_0x29a7b3=_0x29a7b3||0x1f4;return function(_0x1f9641){logger[_0x1ac3('0x10')](_0x1f9641['stack']);if(_0x1f9641[_0x1ac3('0x11')]){delete _0x1f9641[_0x1ac3('0x11')];}_0x551eac[_0x1ac3('0xa')](_0x29a7b3)['send'](_0x1f9641);};}exports[_0x1ac3('0x12')]=function(_0x58000f,_0x291616){var _0x1e1280={},_0x20091d={},_0x3b7e51={'count':0x0,'rows':[]};var _0x18b985=_['map'](db[_0x1ac3('0x13')][_0x1ac3('0x14')],function(_0x296abf){return{'name':_0x296abf[_0x1ac3('0x15')],'type':_0x296abf['type']['key']};});_0x20091d[_0x1ac3('0x16')]=_[_0x1ac3('0x17')](_0x18b985,_0x1ac3('0x11'));_0x20091d[_0x1ac3('0x18')]=_[_0x1ac3('0x19')](_0x58000f[_0x1ac3('0x18')]);_0x20091d[_0x1ac3('0x1a')]=_[_0x1ac3('0x1b')](_0x20091d[_0x1ac3('0x16')],_0x20091d['query']);_0x20091d[_0x1ac3('0x1a')]=_[_0x1ac3('0x1c')](_0x20091d['filters'],[_0x1ac3('0x1d'),_0x1ac3('0x1e'),'$gt',_0x1ac3('0x1f'),_0x1ac3('0x20'),_0x1ac3('0x21'),_0x1ac3('0x22'),_0x1ac3('0x23'),'$not','$between','$notBetween','$in','$notIn',_0x1ac3('0x24'),'$notLike',_0x1ac3('0x25'),_0x1ac3('0x26'),_0x1ac3('0x24'),_0x1ac3('0x27'),'$contains',_0x1ac3('0x28'),'$any']);_0x1e1280[_0x1ac3('0x29')]=_[_0x1ac3('0x1b')](_0x20091d[_0x1ac3('0x16')],qs[_0x1ac3('0x2a')](_0x58000f[_0x1ac3('0x18')][_0x1ac3('0x2a')]));_0x1e1280[_0x1ac3('0x29')]=_0x1e1280['attributes'][_0x1ac3('0x2b')]?_0x1e1280[_0x1ac3('0x29')]:_0x20091d[_0x1ac3('0x16')];if(!_0x58000f[_0x1ac3('0x18')]['hasOwnProperty'](_0x1ac3('0x2c'))){_0x1e1280[_0x1ac3('0x8')]=qs[_0x1ac3('0x8')](_0x58000f[_0x1ac3('0x18')][_0x1ac3('0x8')]);_0x1e1280['offset']=qs[_0x1ac3('0x7')](_0x58000f[_0x1ac3('0x18')][_0x1ac3('0x7')]);}_0x1e1280[_0x1ac3('0x2d')]=qs[_0x1ac3('0x2e')](_0x58000f[_0x1ac3('0x18')]['sort']);_0x1e1280[_0x1ac3('0x2f')]=qs[_0x1ac3('0x1a')](_[_0x1ac3('0x30')](_0x58000f[_0x1ac3('0x18')],_0x20091d['filters']),_0x18b985);if(_0x58000f[_0x1ac3('0x18')][_0x1ac3('0x31')]){_0x1e1280[_0x1ac3('0x2f')]=_[_0x1ac3('0x32')](_0x1e1280[_0x1ac3('0x2f')],{'$or':_[_0x1ac3('0x17')](_0x18b985,function(_0x2c171b){if(_0x2c171b[_0x1ac3('0x33')]!==_0x1ac3('0x34')){var _0x5c29c1={};_0x5c29c1[_0x2c171b[_0x1ac3('0x11')]]={'$like':'%'+_0x58000f[_0x1ac3('0x18')]['filter']+'%'};return _0x5c29c1;}})});}_0x1e1280=_[_0x1ac3('0x32')]({},_0x1e1280,_0x58000f[_0x1ac3('0x35')]);var _0x17c69e={'where':_0x1e1280[_0x1ac3('0x2f')]};return db[_0x1ac3('0x13')][_0x1ac3('0x9')](_0x17c69e)[_0x1ac3('0xe')](function(_0xa15199){_0x3b7e51['count']=_0xa15199;if(_0x58000f[_0x1ac3('0x18')]['includeAll']){_0x1e1280[_0x1ac3('0x36')]=[{'all':!![]}];}return db[_0x1ac3('0x13')][_0x1ac3('0x37')](_0x1e1280);})[_0x1ac3('0xe')](function(_0x3141ae){_0x3b7e51[_0x1ac3('0x38')]=_0x3141ae;return _0x3b7e51;})['then'](respondWithFilteredResult(_0x291616,_0x1e1280))[_0x1ac3('0x39')](handleError(_0x291616,null));};exports[_0x1ac3('0x3a')]=function(_0x43d15,_0x4e2442){var _0x34380d={'raw':!![],'where':{'id':_0x43d15['params']['id']}},_0xb1d970={};_0xb1d970[_0x1ac3('0x16')]=_[_0x1ac3('0x19')](db[_0x1ac3('0x13')][_0x1ac3('0x14')]);_0xb1d970[_0x1ac3('0x18')]=_[_0x1ac3('0x19')](_0x43d15[_0x1ac3('0x18')]);_0xb1d970[_0x1ac3('0x1a')]=_['intersection'](_0xb1d970[_0x1ac3('0x16')],_0xb1d970[_0x1ac3('0x18')]);_0x34380d[_0x1ac3('0x29')]=_[_0x1ac3('0x1b')](_0xb1d970[_0x1ac3('0x16')],qs[_0x1ac3('0x2a')](_0x43d15[_0x1ac3('0x18')]['fields']));_0x34380d['attributes']=_0x34380d[_0x1ac3('0x29')][_0x1ac3('0x2b')]?_0x34380d['attributes']:_0xb1d970[_0x1ac3('0x16')];if(_0x43d15[_0x1ac3('0x18')]['includeAll']){_0x34380d[_0x1ac3('0x36')]=[{'all':!![]}];}_0x34380d=_['merge']({},_0x34380d,_0x43d15[_0x1ac3('0x35')]);return db[_0x1ac3('0x13')][_0x1ac3('0x3b')](_0x34380d)[_0x1ac3('0xe')](handleEntityNotFound(_0x4e2442,null))['then'](respondWithResult(_0x4e2442,null))[_0x1ac3('0x39')](handleError(_0x4e2442,null));};exports[_0x1ac3('0x3c')]=function(_0x1d650b,_0x351936){return db[_0x1ac3('0x13')]['create'](_0x1d650b[_0x1ac3('0x3d')],{})[_0x1ac3('0xe')](respondWithResult(_0x351936,0xc9))[_0x1ac3('0x39')](handleError(_0x351936,null));};exports[_0x1ac3('0xd')]=function(_0x589434,_0x16d56a){if(_0x589434[_0x1ac3('0x3d')]['id']){delete _0x589434[_0x1ac3('0x3d')]['id'];}return db[_0x1ac3('0x13')]['find']({'where':{'id':_0x589434[_0x1ac3('0x3e')]['id']}})[_0x1ac3('0xe')](handleEntityNotFound(_0x16d56a,null))[_0x1ac3('0xe')](saveUpdates(_0x589434[_0x1ac3('0x3d')],null))['then'](respondWithResult(_0x16d56a,null))[_0x1ac3('0x39')](handleError(_0x16d56a,null));};exports['describe']=function(_0x290ddb,_0x10bcaf){return db[_0x1ac3('0x13')][_0x1ac3('0x3f')]()[_0x1ac3('0xe')](respondWithResult(_0x10bcaf,null))[_0x1ac3('0x39')](handleError(_0x10bcaf,null));};exports[_0x1ac3('0x40')]=function(_0x57138a,_0x517f44){var _0xe8f33c;var _0x249c2d=_0x57138a[_0x1ac3('0x3e')]['id'];return db['CmHopper']['find']({'where':{'id':_0x57138a['params']['id']}})[_0x1ac3('0xe')](handleEntityNotFound(_0x517f44,null))[_0x1ac3('0xe')](function(_0x5976f1){if(_0x5976f1){return _0x5976f1[_0x1ac3('0x40')]()[_0x1ac3('0xe')](function(_0x2fc218){return _0x2fc218;});}})[_0x1ac3('0xe')](function(_0x47bf05){_0xe8f33c=_0x47bf05;if(_0x47bf05){if(_0x47bf05['VoiceQueueId']||_0x47bf05[_0x1ac3('0x41')]){return db[_0x47bf05[_0x1ac3('0x42')]?'VoiceQueue':_0x1ac3('0x43')]['find']({'where':{'id':_0x47bf05['VoiceQueueId']?_0x47bf05[_0x1ac3('0x42')]:_0x47bf05[_0x1ac3('0x41')]},'attributes':['id','name'],'raw':!![]});}}})[_0x1ac3('0xe')](function(_0x5a2a42){var _0x267541={};if(_0x5a2a42){_[_0x1ac3('0x32')](_0x267541,_[_0x1ac3('0x44')](_0xe8f33c[_0x1ac3('0x45')],[_0x1ac3('0x46'),_0x1ac3('0x47'),'id']));_0x267541[_0x1ac3('0x48')]=0x15;_0x267541[_0x1ac3('0x49')]=_0x1ac3('0x4a');_0x267541[_0x1ac3('0x4b')]=_0x5a2a42[_0x1ac3('0x11')];_0x267541['membername']=_0x57138a['user'][_0x1ac3('0x11')];_0x267541[_0x1ac3('0x4c')]=_0x57138a[_0x1ac3('0x4d')]['id'];_0x267541[_0x1ac3('0x4a')]=!![];_0x267541[_0x1ac3('0x4e')]=moment()[_0x1ac3('0x4f')](_0x1ac3('0x50'));_0x267541[_0x1ac3('0x51')]=_0xe8f33c[_0x1ac3('0x52')];_0x267541[_0x1ac3('0x53')]=_0xe8f33c['VoiceQueueId']?_0x1ac3('0x54'):_0x1ac3('0x55');return db[_0x1ac3('0x56')][_0x1ac3('0x3b')]({'where':{'id':_0x267541[_0x1ac3('0x57')]},'attributes':['firstName',_0x1ac3('0x58')]})[_0x1ac3('0xe')](function(_0x51eaf0){if(!_['isNil'](_0x517f44)&&!_['isNil'](_0x51eaf0[_0x1ac3('0x59')])){_0x267541[_0x1ac3('0x5a')]=_0x51eaf0[_0x1ac3('0x59')];if(!_['isNil'](_0x51eaf0[_0x1ac3('0x58')])){_0x267541['calleridname']+='\x20'+_0x51eaf0['lastName'];}}})['finally'](function(){return db['CmHopperFinal'][_0x1ac3('0x3c')](_0x267541);});}})[_0x1ac3('0xe')](function(_0x42218b){return db[_0x1ac3('0x5b')][_0x1ac3('0x40')]({'where':{'CmHopperId':_0x249c2d}});})['then'](function(){return _0x517f44[_0x1ac3('0xa')](0xcc)[_0x1ac3('0x5c')]();})['catch'](handleError(_0x517f44,null));};exports[_0x1ac3('0x5d')]=function(_0x1ffbb1,_0xa3be02){var _0x2e79b2=[];return db[_0x1ac3('0x56')]['describe']()[_0x1ac3('0xe')](function(_0x40907d){_0x2e79b2=_[_0x1ac3('0x19')](_0x40907d);return _0x1ffbb1[_0x1ac3('0x4d')]['getVoiceQueues']({'where':{'type':_0x1ac3('0x5e'),'dialActive':!![],'dialMethod':_0x1ac3('0x5f')},'attributes':['id',_0x1ac3('0x60'),_0x1ac3('0x61')],'raw':!![]});})[_0x1ac3('0xe')](function(_0x1ac283){if(_0x1ac283&&_0x1ac283['length']){return db['sequelize']['transaction'](function(_0x582fe2){var _0x3b930b={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x1ac3('0x50'))},'VoiceQueueId':{'$in':_[_0x1ac3('0x17')](_0x1ac283,'id')},'$or':[{'UserId':null},{'UserId':_0x1ffbb1[_0x1ac3('0x4d')]['id']}]};var _0x20fa43={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1ac283)[_0x1ac3('0x31')]([_0x1ac3('0x61'),0x0])['map']('id')[_0x1ac3('0x62')]()},'$or':[{'UserId':null},{'UserId':_0x1ffbb1[_0x1ac3('0x4d')]['id']}]};var _0x3597cb={'$or':[_0x3b930b,_0x20fa43]};var _0x422b15=[];if(_0x1ffbb1['body'][_0x1ac3('0x63')]&&_0x1ffbb1[_0x1ac3('0x3d')][_0x1ac3('0x63')]===_0x1ac3('0x64')){if(!_[_0x1ac3('0x65')](_0x1ffbb1['body'][_0x1ac3('0x66')])){_0x3597cb['id']={'$in':_0x1ffbb1['body']['hopperIds']};}_0x422b15=[[_0x1ac3('0x67'),_0x1ac3('0x68')],[_0x1ac3('0x69'),_0x1ac283[0x0][_0x1ac3('0x60')]===_0x1ac3('0x68')?_0x1ac3('0x6a'):_0x1ac3('0x68')],db[_0x1ac3('0x6b')][_0x1ac3('0x6c')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x1ac3('0x6a')]];}else{if(!_[_0x1ac3('0x65')](_0x1ffbb1[_0x1ac3('0x3d')]['hopperIds'])){_0x3597cb['id']={'$notIn':_0x1ffbb1[_0x1ac3('0x3d')][_0x1ac3('0x66')]};}_0x422b15=[[_0x1ac3('0x67'),_0x1ac3('0x6a')],[_0x1ac3('0x69'),_0x1ac283[0x0][_0x1ac3('0x60')]],db[_0x1ac3('0x6b')][_0x1ac3('0x6c')](_0x1ac3('0x6d')),['id',_0x1ac3('0x68')]];}return db['CmHopper'][_0x1ac3('0x6e')]({'attributes':['id',_0x1ac3('0x6f'),_0x1ac3('0x52'),'recallme'],'where':_0x3597cb,'order':_0x422b15,'transaction':_0x582fe2,'lock':_0x582fe2[_0x1ac3('0x70')][_0x1ac3('0x71')],'include':[{'model':db[_0x1ac3('0x56')],'as':_0x1ac3('0x72'),'attributes':_0x2e79b2,'include':[{'model':db[_0x1ac3('0x73')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':_0x1ac3('0x74'),'attributes':['id','name']},{'model':db[_0x1ac3('0x75')],'as':_0x1ac3('0x76'),'attributes':['id',_0x1ac3('0x11'),'dialActive']}]})[_0x1ac3('0xe')](function(_0x2d5b5a){if(_0x2d5b5a){return _0x2d5b5a[_0x1ac3('0xd')]({'UserId':_0x1ffbb1[_0x1ac3('0x4d')]['id']},{'transaction':_0x582fe2});}});});}})[_0x1ac3('0xe')](handleEntityNotFound(_0xa3be02,null))['then'](respondWithResult(_0xa3be02,null))['catch'](handleError(_0xa3be02,null));};exports[_0x1ac3('0x77')]=function(_0x27f20c,_0x5b3d42,_0x29b026){var _0x476863=[];var _0x2a4316=_0x27f20c['params']['id'];var _0x175174=_0x27f20c[_0x1ac3('0x4d')]['id'];return db['CmContact'][_0x1ac3('0x3f')]()['then'](function(_0x18af8a){_0x476863=_['keys'](_0x18af8a);return db['sequelize'][_0x1ac3('0x78')](function(_0x444b04){const _0xac1654={'id':_0x2a4316};return db[_0x1ac3('0x13')][_0x1ac3('0x6e')]({'attributes':['id',_0x1ac3('0x6f'),_0x1ac3('0x79')],'where':_0xac1654,'transaction':_0x444b04,'lock':_0x444b04[_0x1ac3('0x70')][_0x1ac3('0x71')],'include':[{'model':db[_0x1ac3('0x56')],'as':_0x1ac3('0x72'),'attributes':_0x476863,'include':[{'model':db[_0x1ac3('0x73')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':_0x1ac3('0x74'),'attributes':['id',_0x1ac3('0x11')]},{'model':db['VoiceQueue'],'as':_0x1ac3('0x76'),'attributes':['id',_0x1ac3('0x11'),_0x1ac3('0x7a')]}]})[_0x1ac3('0xe')](function(_0xbadca5){if(_0xbadca5){return _0xbadca5['update']({'UserId':_0x175174},{'transaction':_0x444b04});}});});})[_0x1ac3('0xe')](handleEntityNotFound(_0x5b3d42,null))['then'](respondWithResult(_0x5b3d42,null))[_0x1ac3('0x39')](handleError(_0x5b3d42,null));};exports['getOpenContacts']=function(_0x218712,_0x50278a){return _0x218712[_0x1ac3('0x4d')][_0x1ac3('0x7b')]({'where':{'type':_0x1ac3('0x5e'),'dialActive':!![],'dialMethod':_0x1ac3('0x5f')},'attributes':['id'],'raw':!![]})[_0x1ac3('0xe')](function(_0x5bf7f1){if(_0x5bf7f1&&_0x5bf7f1['length']){return db['CmHopper'][_0x1ac3('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x1ac3('0x4f')](_0x1ac3('0x50'))},'VoiceQueueId':{'$in':_[_0x1ac3('0x17')](_0x5bf7f1,'id')},'$or':[{'UserId':null},{'UserId':_0x218712['user']['id']}]}});}return 0x0;})[_0x1ac3('0xe')](function(_0x441a73){if(!_['isNil'](_0x441a73)&&_[_0x1ac3('0x7c')](_0x441a73)){return _0x50278a['status'](0xc8)[_0x1ac3('0xc')]({'contacts':_0x441a73});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts',0x194,_0x1ac3('0x7d'));_0x50278a[_0x1ac3('0xf')](0x194);}})[_0x1ac3('0x39')](handleError(_0x50278a,null));};exports[_0x1ac3('0x7e')]=function(_0x12cbb4,_0x5bb6af){var _0x40a2b5=shared[_0x1ac3('0x7f')];var _0x16a834=[];_[_0x1ac3('0x17')](_0x40a2b5,function(_0x4a272e){_0x16a834[_0x1ac3('0x80')]({'id':_0x4a272e[_0x1ac3('0x11')],'name':_0x4a272e['name'],'utcOffset':_0x4a272e['utcOffset']});});return _0x5bb6af['status'](0xc8)[_0x1ac3('0xc')]({'tz':_0x16a834});};exports[_0x1ac3('0x81')]=function(_0x37d3cd,_0x3e1a11){var _0x582468=shared[_0x1ac3('0x7f')];var _0x135898={};if(!_['isNil'](_0x582468[_0x37d3cd[_0x1ac3('0x3d')]['id']]))_0x135898=_0x582468[_0x37d3cd[_0x1ac3('0x3d')]['id']];return _0x3e1a11[_0x1ac3('0xa')](0xc8)[_0x1ac3('0xc')](_0x135898);};
\ No newline at end of file
index 7fecbed..f2747d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d9=['define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x5566b7,_0x4e9e2c){var _0x1c7ea7=function(_0x4c366e){while(--_0x4c366e){_0x5566b7['push'](_0x5566b7['shift']());}};_0x1c7ea7(++_0x4e9e2c);}(_0x01d9,0x6c));var _0x901d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x01d9[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x901d('0x0'));var util=require(_0x901d('0x1'));var logger=require(_0x901d('0x2'))(_0x901d('0x3'));var moment=require('moment');var BPromise=require(_0x901d('0x4'));var rp=require(_0x901d('0x5'));var fs=require('fs');var path=require(_0x901d('0x6'));var rimraf=require(_0x901d('0x7'));var config=require(_0x901d('0x8'));var attributes=require(_0x901d('0x9'));module[_0x901d('0xa')]=function(_0x4e7842,_0x1e5d7d){return _0x4e7842[_0x901d('0xb')](_0x901d('0xc'),attributes,{'tableName':_0x901d('0xd'),'paranoid':![],'indexes':[{'name':_0x901d('0xe'),'fields':[_0x901d('0xe')]},{'name':_0x901d('0xf'),'fields':[_0x901d('0xf')]},{'name':_0x901d('0x10'),'fields':[_0x901d('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeff8=['lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopper.attributes','define','CmHopper','scheduledat','phone'];(function(_0x41afe4,_0xa76ce9){var _0x52bdec=function(_0x25019e){while(--_0x25019e){_0x41afe4['push'](_0x41afe4['shift']());}};_0x52bdec(++_0xa76ce9);}(_0xeff8,0x186));var _0x8eff=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0xeff8[_0xac151d];return _0x111dba;};'use strict';var _=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var logger=require('../../config/logger')(_0x8eff('0x2'));var moment=require(_0x8eff('0x3'));var BPromise=require(_0x8eff('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8eff('0x5'));var rimraf=require(_0x8eff('0x6'));var config=require(_0x8eff('0x7'));var attributes=require(_0x8eff('0x8'));module['exports']=function(_0x469641,_0xb54063){return _0x469641[_0x8eff('0x9')](_0x8eff('0xa'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0x8eff('0xb'),'fields':[_0x8eff('0xb')]},{'name':_0x8eff('0xc'),'fields':[_0x8eff('0xc')]},{'name':'priority','fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index 743d2c1..d016160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84c9=['ContactId','MoveContactManagedDialer','transaction','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','contactsRescheduled','GetContactRecallMe','CmContact','GetContactByPhone','findOne','phone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','interval','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','NOW()','CmList','lodash','moment','bluebird','../../mysqldb','findAll','options','raw','where','attributes','limit','include','map','model','then','info','GetCmHopper','debug','stringify','catch','message','ShowCmHopper','CmHopper','find','CreateCmHopper','create','error','UpdateCmHopper','update','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','destroy','DestroyCmHopper','GetContactDialer','describe','sequelize','order','UPDATE','Contact','keys','User','Agent','name','voicePause','length','includes','push','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues'];(function(_0x3090ca,_0x5f5b97){var _0x257331=function(_0x3c0f42){while(--_0x3c0f42){_0x3090ca['push'](_0x3090ca['shift']());}};_0x257331(++_0x5f5b97);}(_0x84c9,0x66));var _0x984c=function(_0x177e63,_0x44ea49){_0x177e63=_0x177e63-0x0;var _0x3804c4=_0x84c9[_0x177e63];return _0x3804c4;};'use strict';var _=require(_0x984c('0x0'));var util=require('util');var moment=require(_0x984c('0x1'));var BPromise=require(_0x984c('0x2'));var db=require(_0x984c('0x3'))['db'];var logger=require('../../config/logger')('rpc');exports['GetCmHopper']=function(_0x19fc97){var _0x3bceb4=this;return new Promise(function(_0x4e798d,_0x5596c1){return db['CmHopper'][_0x984c('0x4')]({'raw':_0x19fc97[_0x984c('0x5')]?_0x19fc97[_0x984c('0x5')][_0x984c('0x6')]===undefined?!![]:![]:!![],'where':_0x19fc97[_0x984c('0x5')]?_0x19fc97[_0x984c('0x5')][_0x984c('0x7')]||null:null,'attributes':_0x19fc97[_0x984c('0x5')]?_0x19fc97[_0x984c('0x5')][_0x984c('0x8')]||null:null,'limit':_0x19fc97['options']?_0x19fc97['options'][_0x984c('0x9')]||null:null,'include':_0x19fc97['options']?_0x19fc97[_0x984c('0x5')][_0x984c('0xa')]?_[_0x984c('0xb')](_0x19fc97[_0x984c('0x5')]['include'],function(_0x1c8733){return{'model':db[_0x1c8733[_0x984c('0xc')]],'as':_0x1c8733['as'],'attributes':_0x1c8733[_0x984c('0x8')],'include':_0x1c8733[_0x984c('0xa')]?_[_0x984c('0xb')](_0x1c8733[_0x984c('0xa')],function(_0x4f4fc2){return{'model':db[_0x4f4fc2[_0x984c('0xc')]],'as':_0x4f4fc2['as'],'attributes':_0x4f4fc2[_0x984c('0x8')],'include':_0x4f4fc2['include']?_[_0x984c('0xb')](_0x4f4fc2[_0x984c('0xa')],function(_0xb22a89){return{'model':db[_0xb22a89[_0x984c('0xc')]],'as':_0xb22a89['as'],'attributes':_0xb22a89['attributes']};}):[]};}):[]};}):[]:[]})[_0x984c('0xd')](function(_0x59237c){logger[_0x984c('0xe')](_0x984c('0xf'),_0x19fc97);logger[_0x984c('0x10')](_0x984c('0xf'),_0x19fc97,JSON[_0x984c('0x11')](_0x59237c));_0x4e798d(_0x59237c);})[_0x984c('0x12')](function(_0x543047){logger['error'](_0x984c('0xf'),_0x543047[_0x984c('0x13')],_0x19fc97);_0x5596c1(_0x3bceb4['error'](0x1f4,_0x543047['message']));});});};exports[_0x984c('0x14')]=function(_0x92bba0){var _0x5582cd=this;return new Promise(function(_0x378dd4,_0x3d37c3){return db[_0x984c('0x15')][_0x984c('0x16')]({'raw':_0x92bba0[_0x984c('0x5')]?_0x92bba0[_0x984c('0x5')][_0x984c('0x6')]===undefined?!![]:![]:!![],'where':_0x92bba0[_0x984c('0x5')]?_0x92bba0[_0x984c('0x5')][_0x984c('0x7')]||null:null,'attributes':_0x92bba0[_0x984c('0x5')]?_0x92bba0[_0x984c('0x5')][_0x984c('0x8')]||null:null,'include':_0x92bba0[_0x984c('0x5')]?_0x92bba0[_0x984c('0x5')]['include']?_['map'](_0x92bba0[_0x984c('0x5')][_0x984c('0xa')],function(_0x1af281){return{'model':db[_0x1af281[_0x984c('0xc')]],'as':_0x1af281['as'],'attributes':_0x1af281[_0x984c('0x8')],'include':_0x1af281[_0x984c('0xa')]?_[_0x984c('0xb')](_0x1af281[_0x984c('0xa')],function(_0x4cb2d0){return{'model':db[_0x4cb2d0[_0x984c('0xc')]],'as':_0x4cb2d0['as'],'attributes':_0x4cb2d0[_0x984c('0x8')],'include':_0x4cb2d0[_0x984c('0xa')]?_[_0x984c('0xb')](_0x4cb2d0[_0x984c('0xa')],function(_0x338c1e){return{'model':db[_0x338c1e[_0x984c('0xc')]],'as':_0x338c1e['as'],'attributes':_0x338c1e[_0x984c('0x8')]};}):[]};}):[]};}):[]:[]})[_0x984c('0xd')](function(_0x39799d){logger['info'](_0x984c('0x14'),_0x92bba0);logger[_0x984c('0x10')](_0x984c('0x14'),_0x92bba0,JSON[_0x984c('0x11')](_0x39799d));_0x378dd4(_0x39799d);})[_0x984c('0x12')](function(_0x5994b3){logger['error'](_0x984c('0x14'),_0x5994b3[_0x984c('0x13')],_0x92bba0);_0x3d37c3(_0x5582cd['error'](0x1f4,_0x5994b3[_0x984c('0x13')]));});});};exports[_0x984c('0x17')]=function(_0x4f3306){var _0x35542b=this;return new Promise(function(_0x5dda84,_0x255ce5){return db['CmHopper'][_0x984c('0x18')](_0x4f3306['body'],{'raw':_0x4f3306[_0x984c('0x5')]?_0x4f3306[_0x984c('0x5')][_0x984c('0x6')]===undefined?!![]:![]:!![]})[_0x984c('0xd')](function(_0x2af821){logger['info'](_0x984c('0x17'),_0x4f3306);logger[_0x984c('0x10')]('CreateCmHopper',_0x4f3306,JSON[_0x984c('0x11')](_0x2af821));_0x5dda84(_0x2af821);})[_0x984c('0x12')](function(_0xf089c1){logger['error'](_0x984c('0x17'),_0xf089c1['message'],_0x4f3306);_0x255ce5(_0x35542b[_0x984c('0x19')](0x1f4,_0xf089c1[_0x984c('0x13')]));});});};exports[_0x984c('0x1a')]=function(_0x15b9b4){var _0x43ab08=this;return new Promise(function(_0x12fe90,_0x393d43){return db[_0x984c('0x15')][_0x984c('0x1b')](_0x15b9b4[_0x984c('0x1c')],{'raw':_0x15b9b4[_0x984c('0x5')]?_0x15b9b4[_0x984c('0x5')][_0x984c('0x6')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x15b9b4['options']?_0x15b9b4['options'][_0x984c('0x7')]||null:null,'attributes':_0x15b9b4[_0x984c('0x5')]?_0x15b9b4[_0x984c('0x5')][_0x984c('0x8')]||null:null,'limit':_0x15b9b4[_0x984c('0x5')]?_0x15b9b4[_0x984c('0x5')]['limit']||null:null})['then'](function(_0x237a53){logger[_0x984c('0xe')](_0x984c('0x1a'),_0x15b9b4);logger[_0x984c('0xe')](_0x984c('0x1d'),JSON[_0x984c('0x11')](_0x15b9b4['options'][_0x984c('0x7')]),_0x15b9b4[_0x984c('0x1c')][_0x984c('0x1e')]);logger[_0x984c('0x10')]('UpdateCmHopper',_0x15b9b4,JSON[_0x984c('0x11')](_0x237a53));_0x12fe90(_0x237a53);})[_0x984c('0x12')](function(_0xc8786){logger[_0x984c('0x19')]('UpdateCmHopper',_0xc8786[_0x984c('0x13')],_0x15b9b4);_0x393d43(_0x43ab08['error'](0x1f4,_0xc8786['message']));});});};exports['DestroyCmHopper']=function(_0x3335c3){var _0x39cead=this;return new Promise(function(_0xa7fcf6,_0x22c306){return db[_0x984c('0x15')][_0x984c('0x1f')]({'where':_0x3335c3['options']?_0x3335c3[_0x984c('0x5')]['where']||null:null})[_0x984c('0xd')](function(_0x98785b){logger[_0x984c('0xe')]('DestroyCmHopper',_0x3335c3);logger[_0x984c('0x10')](_0x984c('0x20'),_0x3335c3,JSON[_0x984c('0x11')](_0x98785b));_0xa7fcf6(_0x98785b);})[_0x984c('0x12')](function(_0x220b29){logger[_0x984c('0x19')](_0x984c('0x20'),_0x220b29[_0x984c('0x13')],_0x3335c3);_0x22c306(_0x39cead[_0x984c('0x19')](0x1f4,_0x220b29[_0x984c('0x13')]));});});};exports[_0x984c('0x21')]=function(_0x3c3657){var _0x2add7c=this;return new Promise(function(_0x9d602b,_0x460d2c){return db['CmContact'][_0x984c('0x22')]()[_0x984c('0xd')](function(_0x36968d){return db[_0x984c('0x23')]['transaction'](function(_0x49e9d2){return db[_0x984c('0x15')][_0x984c('0x4')]({'where':_0x3c3657[_0x984c('0x5')]?_0x3c3657[_0x984c('0x5')][_0x984c('0x7')]||null:null,'attributes':_0x3c3657[_0x984c('0x5')]?_0x3c3657[_0x984c('0x5')][_0x984c('0x8')]||null:null,'limit':_0x3c3657['options']?_0x3c3657['options']['limit']||null:null,'order':_0x3c3657['options']?_0x3c3657[_0x984c('0x5')][_0x984c('0x24')]||null:null,'transaction':_0x49e9d2,'lock':_0x49e9d2['LOCK'][_0x984c('0x25')],'include':[{'model':db['CmContact'],'as':_0x984c('0x26'),'attributes':_[_0x984c('0x27')](_0x36968d)},{'model':db[_0x984c('0x28')],'as':_0x984c('0x29'),'attributes':['id',_0x984c('0x2a'),_0x984c('0x2b')]}]})[_0x984c('0xd')](function(_0xdf7bbc){var _0x44af56=[];var _0x3a75a5=[];for(var _0x141116=0x0;_0x141116<_0xdf7bbc[_0x984c('0x2c')];_0x141116+=0x1){var _0xe020a7=_0xdf7bbc[_0x141116]['UserId'];if(_0xe020a7===null){_0x44af56['push'](_0xdf7bbc[_0x141116][_0x984c('0x1b')](_0x3c3657[_0x984c('0x1c')],{'transaction':_0x49e9d2}));}else if(!_0x3a75a5[_0x984c('0x2d')](_0xe020a7)){_0x3a75a5[_0x984c('0x2e')](_0xe020a7);_0x44af56[_0x984c('0x2e')](_0xdf7bbc[_0x141116][_0x984c('0x1b')](_0x3c3657[_0x984c('0x1c')],{'transaction':_0x49e9d2}));}}return BPromise[_0x984c('0x2f')](_0x44af56);});})['then'](function(_0x5465cc){logger['info'](_0x984c('0x21'),_0x3c3657);if(_0x5465cc['length']>0x0){logger['info'](_0x984c('0x30'),_0x5465cc[0x0][_0x984c('0x31')]['id'],_0x5465cc[0x0]['dataValues'][_0x984c('0x32')],_0x5465cc[0x0][_0x984c('0x31')][_0x984c('0x1e')]);}logger['debug'](_0x984c('0x21'),_0x3c3657,JSON[_0x984c('0x11')](_0x5465cc));_0x9d602b(_0x5465cc);})[_0x984c('0x12')](function(_0x45386f){logger[_0x984c('0x19')](_0x984c('0x21'),_0x45386f[_0x984c('0x13')],_0x3c3657);_0x460d2c(_0x2add7c[_0x984c('0x19')](0x1f4,_0x45386f[_0x984c('0x13')]));});});});};exports[_0x984c('0x33')]=function(_0x45ecaf){var _0x59f87f=this;return new Promise(function(_0x50693c,_0x113125){return db[_0x984c('0x23')][_0x984c('0x34')](function(_0xb1328d){return db[_0x984c('0x35')][_0x984c('0x18')](_0x45ecaf[_0x984c('0x1c')],{'raw':_0x45ecaf[_0x984c('0x5')]?_0x45ecaf[_0x984c('0x5')][_0x984c('0x6')]===undefined?!![]:![]:!![],'transaction':_0xb1328d})[_0x984c('0xd')](function(){logger[_0x984c('0xe')](_0x984c('0x36'),JSON[_0x984c('0x11')](_0x45ecaf[_0x984c('0x5')]['where']),_0x45ecaf['options']['where'][_0x984c('0x1e')]);return db['CmHopper'][_0x984c('0x1f')]({'where':_0x45ecaf[_0x984c('0x5')]?_0x45ecaf['options'][_0x984c('0x7')]||null:null,'transaction':_0xb1328d});});})[_0x984c('0xd')](function(_0x2a5b44){logger[_0x984c('0xe')]('MoveContactManagedDialer',_0x45ecaf);logger[_0x984c('0x10')](_0x984c('0x33'),_0x45ecaf,JSON[_0x984c('0x11')](_0x2a5b44));_0x50693c(_0x2a5b44);})[_0x984c('0x12')](function(_0x4811b5){logger[_0x984c('0x19')](_0x984c('0x33'),_0x4811b5['message'],_0x45ecaf);_0x113125(_0x59f87f[_0x984c('0x19')](0x1f4,_0x4811b5[_0x984c('0x13')]));});});};exports[_0x984c('0x37')]=function(_0x290c23){var _0xaae0d9=this;return new Promise(function(_0x395a23,_0x4b4937){return db[_0x984c('0x15')]['findAll']({'raw':_0x290c23[_0x984c('0x5')]?_0x290c23[_0x984c('0x5')][_0x984c('0x6')]===undefined?!![]:![]:!![],'where':_0x290c23[_0x984c('0x5')]?_0x290c23[_0x984c('0x5')][_0x984c('0x7')]||null:null,'attributes':[[db[_0x984c('0x23')]['fn'](_0x984c('0x38'),db[_0x984c('0x23')]['fn']('IF',db[_0x984c('0x23')][_0x984c('0x39')](_0x984c('0x3a')+util[_0x984c('0x3b')](_0x984c('0x3c'),moment()[_0x984c('0x3b')]('YYYY-MM-DD\x20HH:mm:ss'))+'\x20,\x201,\x20null'))),_0x984c('0x3d')]]})['then'](function(_0x1632a8){logger[_0x984c('0xe')](_0x984c('0x37'),_0x290c23);logger[_0x984c('0x10')](_0x984c('0x37'),_0x290c23,JSON[_0x984c('0x11')](_0x1632a8));_0x395a23(_0x1632a8);})['catch'](function(_0x139bfd){logger[_0x984c('0x19')]('CountReScheduled',_0x139bfd['message'],_0x290c23);_0x4b4937(_0xaae0d9[_0x984c('0x19')](0x1f4,_0x139bfd[_0x984c('0x13')]));});});};exports[_0x984c('0x3e')]=function(_0x2b13d5){var _0x5a43b7=this;return new Promise(function(_0x43b5b4,_0x2c51d4){return db['CmContact'][_0x984c('0x22')]()[_0x984c('0xd')](function(){return db[_0x984c('0x23')][_0x984c('0x34')](function(_0x3b436e){return db[_0x984c('0x15')][_0x984c('0x4')]({'where':_0x2b13d5[_0x984c('0x5')]?_0x2b13d5[_0x984c('0x5')][_0x984c('0x7')]||null:null,'attributes':_0x2b13d5[_0x984c('0x5')]?_0x2b13d5[_0x984c('0x5')][_0x984c('0x8')]||null:null,'limit':0x1,'order':_0x2b13d5[_0x984c('0x5')]?_0x2b13d5[_0x984c('0x5')][_0x984c('0x24')]||null:null,'group':db[_0x984c('0x15')]['UserId'],'transaction':_0x3b436e,'lock':_0x3b436e['LOCK']['UPDATE'],'include':_0x2b13d5[_0x984c('0x5')]?_0x2b13d5[_0x984c('0x5')]['include']?_[_0x984c('0xb')](_0x2b13d5[_0x984c('0x5')][_0x984c('0xa')],function(_0x36f891){return{'model':db[_0x36f891[_0x984c('0xc')]],'as':_0x36f891['as'],'attributes':_0x36f891[_0x984c('0x8')],'include':_0x36f891[_0x984c('0xa')]?_[_0x984c('0xb')](_0x36f891[_0x984c('0xa')],function(_0x5ca128){return{'model':db[_0x5ca128['model']],'as':_0x5ca128['as'],'attributes':_0x5ca128[_0x984c('0x8')],'include':_0x5ca128[_0x984c('0xa')]?_[_0x984c('0xb')](_0x5ca128[_0x984c('0xa')],function(_0x109b95){return{'model':db[_0x109b95[_0x984c('0xc')]],'as':_0x109b95['as'],'attributes':_0x109b95[_0x984c('0x8')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4893c4){var _0x525353=[];for(var _0x1a75dd=0x0;_0x1a75dd<_0x4893c4['length'];_0x1a75dd+=0x1){_0x525353['push'](_0x4893c4[_0x1a75dd][_0x984c('0x1b')](_0x2b13d5[_0x984c('0x1c')],{'transaction':_0x3b436e}));}return BPromise['all'](_0x525353);});})[_0x984c('0xd')](function(_0xb94dd7){logger['info'](_0x984c('0x3e'),_0x2b13d5);logger[_0x984c('0x10')](_0x984c('0x3e'),_0x2b13d5,JSON[_0x984c('0x11')](_0xb94dd7));_0x43b5b4(_0xb94dd7);})['catch'](function(_0x16030a){logger['error'](_0x984c('0x3e'),_0x16030a[_0x984c('0x13')],_0x2b13d5);_0x2c51d4(_0x5a43b7[_0x984c('0x19')](0x1f4,_0x16030a[_0x984c('0x13')]));});});});};exports['GetCmHopperPreview']=function(_0x1bc97c){var _0x44d425=this;return new Promise(function(_0x41fc70,_0x350b6e){db[_0x984c('0x3f')][_0x984c('0x22')]()['then'](function(_0x784a49){return db[_0x984c('0x15')]['findAll']({'raw':_0x1bc97c[_0x984c('0x5')]?_0x1bc97c[_0x984c('0x5')][_0x984c('0x6')]===undefined?!![]:![]:!![],'where':_0x1bc97c[_0x984c('0x5')]?_0x1bc97c[_0x984c('0x5')][_0x984c('0x7')]||null:null,'attributes':_0x1bc97c['options']?_0x1bc97c[_0x984c('0x5')][_0x984c('0x8')]||null:null,'limit':_0x1bc97c[_0x984c('0x5')]?_0x1bc97c[_0x984c('0x5')][_0x984c('0x9')]||null:null,'include':_0x1bc97c[_0x984c('0x5')]?_0x1bc97c[_0x984c('0x5')][_0x984c('0xa')]?_[_0x984c('0xb')](_0x1bc97c[_0x984c('0x5')][_0x984c('0xa')],function(_0x5e0dbc){return{'model':db[_0x5e0dbc[_0x984c('0xc')]],'as':_0x5e0dbc['as'],'attributes':_0x5e0dbc['as']===_0x984c('0x26')?_[_0x984c('0x27')](_0x784a49):_0x5e0dbc[_0x984c('0x8')],'include':_0x5e0dbc[_0x984c('0xa')]?_['map'](_0x5e0dbc[_0x984c('0xa')],function(_0x3c69ad){return{'model':db[_0x3c69ad[_0x984c('0xc')]],'as':_0x3c69ad['as'],'attributes':_0x3c69ad[_0x984c('0x8')],'include':_0x3c69ad[_0x984c('0xa')]?_[_0x984c('0xb')](_0x3c69ad[_0x984c('0xa')],function(_0x151da4){return{'model':db[_0x151da4[_0x984c('0xc')]],'as':_0x151da4['as'],'attributes':_0x151da4[_0x984c('0x8')]};}):[]};}):[]};}):[]:[]})[_0x984c('0xd')](function(_0xba5f0c){logger[_0x984c('0xe')]('GetCmHopper',_0x1bc97c);logger[_0x984c('0x10')](_0x984c('0xf'),_0x1bc97c,JSON[_0x984c('0x11')](_0xba5f0c));_0x41fc70(_0xba5f0c);})[_0x984c('0x12')](function(_0x41dce8){logger[_0x984c('0x19')]('GetCmHopper',_0x41dce8[_0x984c('0x13')],_0x1bc97c);_0x350b6e(_0x44d425[_0x984c('0x19')](0x1f4,_0x41dce8[_0x984c('0x13')]));});});});};exports[_0x984c('0x40')]=function(_0x3a6338){var _0x4c3ffd=this;return new Promise(function(_0x56ee38,_0x4c312e){return db['CmContact'][_0x984c('0x41')]({'raw':!![],'where':{'phone':_0x3a6338[_0x984c('0x5')][_0x984c('0x7')][_0x984c('0x42')]},'attributes':['id','dialTimezone'],'order':[['id',_0x984c('0x43')]]})['then'](function(_0x135efb){logger[_0x984c('0xe')](_0x984c('0x44'),_0x3a6338);logger[_0x984c('0x10')](_0x984c('0x44'),_0x3a6338,JSON[_0x984c('0x11')](_0x135efb));_0x56ee38(_0x135efb);})[_0x984c('0x12')](function(_0xca9ad6){logger['error'](_0x984c('0x44'),_0xca9ad6[_0x984c('0x13')],_0x3a6338);_0x4c312e(_0x4c3ffd[_0x984c('0x19')](0x1f4,_0xca9ad6[_0x984c('0x13')]));});});};exports[_0x984c('0x45')]=function(_0x4b979f){var _0x795f3b=this;return new Promise(function(_0x5e0935,_0x1632e7){return db['sequelize']['transaction'](function(_0x45e79f){var _0x5e0b76=_0x4b979f['options']&&_0x4b979f['options'][_0x984c('0x7')]?_0x4b979f[_0x984c('0x5')]['where']:{};return db['CmHopper']['update'](_0x4b979f[_0x984c('0x1c')],{'where':_0x5e0b76,'transaction':_0x45e79f})[_0x984c('0xd')](function(_0x7c6599){logger[_0x984c('0xe')]('ResetActiveCalls',_0x4b979f);logger[_0x984c('0x10')](_0x984c('0x45'),_0x4b979f,JSON[_0x984c('0x11')](_0x7c6599));_0x5e0935(_0x7c6599);})['catch'](function(_0x46c41c){logger['error'](_0x984c('0x45'),_0x46c41c[_0x984c('0x13')],_0x4b979f);_0x1632e7(_0x795f3b[_0x984c('0x19')](0x1f4,_0x46c41c[_0x984c('0x13')]));});});});};exports[_0x984c('0x46')]=function(_0x5cef32){var _0x3da0b6=this;var _0x2da48a=_0x5cef32[_0x984c('0x1c')][_0x984c('0x7')]['voiceQueueIds'];var _0x2d0845=_0x5cef32[_0x984c('0x1c')][_0x984c('0x7')][_0x984c('0x47')];var _0x5eef5b=_0x5cef32[_0x984c('0x1c')][_0x984c('0x7')]['availableAgentsIds'];return new Promise(function(_0x27f329,_0x19a96c){return db[_0x984c('0x15')][_0x984c('0x4')]({'where':{'voiceQueueId':{'$in':_0x2da48a},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x984c('0x23')][_0x984c('0x39')](_0x984c('0x48')+_0x2d0845+_0x984c('0x49')),'$gt':db[_0x984c('0x23')][_0x984c('0x39')](_0x984c('0x4a'))}},'UserId':{'$in':_0x5eef5b}},'include':[{'model':db[_0x984c('0x3f')],'as':_0x984c('0x26')},{'model':db[_0x984c('0x28')],'as':_0x984c('0x29'),'attributes':['id',_0x984c('0x2a'),_0x984c('0x2b')]},{'model':db[_0x984c('0x4b')],'as':'List'}]})[_0x984c('0xd')](function(_0x260958){if(_0x260958[_0x984c('0x2c')]>0x0){return db[_0x984c('0x23')][_0x984c('0x34')](function(_0x12809d){return db[_0x984c('0x15')]['update']({'recallmeNotifiedDate':db[_0x984c('0x23')][_0x984c('0x39')]('NOW()')},{'where':{'id':{'$in':_['map'](_0x260958,'id')}},'transaction':_0x12809d})['then'](function(){_0x27f329(_0x260958);})[_0x984c('0x12')](function(_0x42e9ce){logger[_0x984c('0x19')](_0x984c('0x46'),_0x42e9ce[_0x984c('0x13')],_0x5cef32);_0x19a96c(_0x3da0b6[_0x984c('0x19')](0x1f4,_0x42e9ce[_0x984c('0x13')]));});})[_0x984c('0x12')](function(_0x48cf7e){logger[_0x984c('0x19')](_0x984c('0x46'),_0x48cf7e['message'],_0x5cef32);_0x19a96c(_0x3da0b6['error'](0x1f4,_0x48cf7e['message']));});}else{_0x27f329(_0x260958);}});});};
\ No newline at end of file
+var _0x7925=['include','model','then','info','debug','stringify','catch','message','ShowCmHopper','find','error','CreateCmHopper','create','body','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','DestroyCmHopper','GetContactDialer','CmContact','describe','transaction','findAll','order','LOCK','UPDATE','Contact','keys','User','Agent','name','voicePause','length','UserId','update','includes','push','all','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]','destroy','CountReScheduled','COUNT','sequelize','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','GetCmHopperPreview','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','NOW()','List','CmHopperHandlePreviewRecallNotifications','util','moment','../../mysqldb','../../config/logger','rpc','GetCmHopper','CmHopper','options','raw','where','attributes','limit','map'];(function(_0xdbd4f7,_0x4e3bdd){var _0x5c3f9d=function(_0xa7a35a){while(--_0xa7a35a){_0xdbd4f7['push'](_0xdbd4f7['shift']());}};_0x5c3f9d(++_0x4e3bdd);}(_0x7925,0xe6));var _0x5792=function(_0x4924d7,_0x448263){_0x4924d7=_0x4924d7-0x0;var _0x3a02cc=_0x7925[_0x4924d7];return _0x3a02cc;};'use strict';var _=require('lodash');var util=require(_0x5792('0x0'));var moment=require(_0x5792('0x1'));var BPromise=require('bluebird');var db=require(_0x5792('0x2'))['db'];var logger=require(_0x5792('0x3'))(_0x5792('0x4'));exports[_0x5792('0x5')]=function(_0x332c98){var _0x14da25=this;return new Promise(function(_0x2adf82,_0x1ef3ac){return db[_0x5792('0x6')]['findAll']({'raw':_0x332c98['options']?_0x332c98[_0x5792('0x7')][_0x5792('0x8')]===undefined?!![]:![]:!![],'where':_0x332c98[_0x5792('0x7')]?_0x332c98[_0x5792('0x7')][_0x5792('0x9')]||null:null,'attributes':_0x332c98[_0x5792('0x7')]?_0x332c98[_0x5792('0x7')][_0x5792('0xa')]||null:null,'limit':_0x332c98[_0x5792('0x7')]?_0x332c98[_0x5792('0x7')][_0x5792('0xb')]||null:null,'include':_0x332c98['options']?_0x332c98[_0x5792('0x7')]['include']?_[_0x5792('0xc')](_0x332c98[_0x5792('0x7')][_0x5792('0xd')],function(_0x611473){return{'model':db[_0x611473[_0x5792('0xe')]],'as':_0x611473['as'],'attributes':_0x611473['attributes'],'include':_0x611473[_0x5792('0xd')]?_['map'](_0x611473[_0x5792('0xd')],function(_0x37ffcb){return{'model':db[_0x37ffcb[_0x5792('0xe')]],'as':_0x37ffcb['as'],'attributes':_0x37ffcb[_0x5792('0xa')],'include':_0x37ffcb[_0x5792('0xd')]?_['map'](_0x37ffcb['include'],function(_0x3f3530){return{'model':db[_0x3f3530[_0x5792('0xe')]],'as':_0x3f3530['as'],'attributes':_0x3f3530[_0x5792('0xa')]};}):[]};}):[]};}):[]:[]})[_0x5792('0xf')](function(_0x53a299){logger[_0x5792('0x10')](_0x5792('0x5'),_0x332c98);logger[_0x5792('0x11')](_0x5792('0x5'),_0x332c98,JSON[_0x5792('0x12')](_0x53a299));_0x2adf82(_0x53a299);})[_0x5792('0x13')](function(_0x3dbe23){logger['error'](_0x5792('0x5'),_0x3dbe23[_0x5792('0x14')],_0x332c98);_0x1ef3ac(_0x14da25['error'](0x1f4,_0x3dbe23['message']));});});};exports[_0x5792('0x15')]=function(_0x8224de){var _0x40ad2d=this;return new Promise(function(_0x133d98,_0x11732a){return db[_0x5792('0x6')][_0x5792('0x16')]({'raw':_0x8224de[_0x5792('0x7')]?_0x8224de[_0x5792('0x7')]['raw']===undefined?!![]:![]:!![],'where':_0x8224de[_0x5792('0x7')]?_0x8224de[_0x5792('0x7')][_0x5792('0x9')]||null:null,'attributes':_0x8224de['options']?_0x8224de[_0x5792('0x7')][_0x5792('0xa')]||null:null,'include':_0x8224de[_0x5792('0x7')]?_0x8224de[_0x5792('0x7')][_0x5792('0xd')]?_[_0x5792('0xc')](_0x8224de[_0x5792('0x7')]['include'],function(_0x21b325){return{'model':db[_0x21b325[_0x5792('0xe')]],'as':_0x21b325['as'],'attributes':_0x21b325[_0x5792('0xa')],'include':_0x21b325['include']?_[_0x5792('0xc')](_0x21b325['include'],function(_0x390789){return{'model':db[_0x390789['model']],'as':_0x390789['as'],'attributes':_0x390789[_0x5792('0xa')],'include':_0x390789[_0x5792('0xd')]?_[_0x5792('0xc')](_0x390789['include'],function(_0x17c68c){return{'model':db[_0x17c68c[_0x5792('0xe')]],'as':_0x17c68c['as'],'attributes':_0x17c68c[_0x5792('0xa')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f88c3){logger[_0x5792('0x10')](_0x5792('0x15'),_0x8224de);logger['debug'](_0x5792('0x15'),_0x8224de,JSON[_0x5792('0x12')](_0x1f88c3));_0x133d98(_0x1f88c3);})['catch'](function(_0x191813){logger[_0x5792('0x17')]('ShowCmHopper',_0x191813[_0x5792('0x14')],_0x8224de);_0x11732a(_0x40ad2d[_0x5792('0x17')](0x1f4,_0x191813[_0x5792('0x14')]));});});};exports[_0x5792('0x18')]=function(_0x37f438){var _0x414cd6=this;return new Promise(function(_0xdc8aba,_0x49abbc){return db[_0x5792('0x6')][_0x5792('0x19')](_0x37f438[_0x5792('0x1a')],{'raw':_0x37f438[_0x5792('0x7')]?_0x37f438[_0x5792('0x7')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x4f4c44){logger[_0x5792('0x10')](_0x5792('0x18'),_0x37f438);logger[_0x5792('0x11')](_0x5792('0x18'),_0x37f438,JSON[_0x5792('0x12')](_0x4f4c44));_0xdc8aba(_0x4f4c44);})[_0x5792('0x13')](function(_0x4b97c8){logger['error']('CreateCmHopper',_0x4b97c8[_0x5792('0x14')],_0x37f438);_0x49abbc(_0x414cd6[_0x5792('0x17')](0x1f4,_0x4b97c8[_0x5792('0x14')]));});});};exports[_0x5792('0x1b')]=function(_0x4c2d84){var _0x58af08=this;return new Promise(function(_0x3f287a,_0x2ae68c){return db['CmHopper']['update'](_0x4c2d84['body'],{'raw':_0x4c2d84[_0x5792('0x7')]?_0x4c2d84[_0x5792('0x7')][_0x5792('0x8')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c2d84[_0x5792('0x7')]?_0x4c2d84['options'][_0x5792('0x9')]||null:null,'attributes':_0x4c2d84[_0x5792('0x7')]?_0x4c2d84['options'][_0x5792('0xa')]||null:null,'limit':_0x4c2d84[_0x5792('0x7')]?_0x4c2d84['options'][_0x5792('0xb')]||null:null})[_0x5792('0xf')](function(_0x285f2c){logger[_0x5792('0x10')]('UpdateCmHopper',_0x4c2d84);logger['info'](_0x5792('0x1c'),JSON[_0x5792('0x12')](_0x4c2d84[_0x5792('0x7')]['where']),_0x4c2d84[_0x5792('0x1a')]['active']);logger[_0x5792('0x11')](_0x5792('0x1b'),_0x4c2d84,JSON[_0x5792('0x12')](_0x285f2c));_0x3f287a(_0x285f2c);})[_0x5792('0x13')](function(_0x4c0050){logger[_0x5792('0x17')](_0x5792('0x1b'),_0x4c0050[_0x5792('0x14')],_0x4c2d84);_0x2ae68c(_0x58af08[_0x5792('0x17')](0x1f4,_0x4c0050[_0x5792('0x14')]));});});};exports[_0x5792('0x1d')]=function(_0xf716d0){var _0x494f52=this;return new Promise(function(_0x5b9eec,_0x13204d){return db[_0x5792('0x6')]['destroy']({'where':_0xf716d0[_0x5792('0x7')]?_0xf716d0['options'][_0x5792('0x9')]||null:null})[_0x5792('0xf')](function(_0x57fb0e){logger[_0x5792('0x10')]('DestroyCmHopper',_0xf716d0);logger[_0x5792('0x11')](_0x5792('0x1d'),_0xf716d0,JSON[_0x5792('0x12')](_0x57fb0e));_0x5b9eec(_0x57fb0e);})['catch'](function(_0x188b6b){logger[_0x5792('0x17')]('DestroyCmHopper',_0x188b6b[_0x5792('0x14')],_0xf716d0);_0x13204d(_0x494f52[_0x5792('0x17')](0x1f4,_0x188b6b['message']));});});};exports[_0x5792('0x1e')]=function(_0x45ba80){var _0x161a00=this;return new Promise(function(_0x12625c,_0x14f446){return db[_0x5792('0x1f')][_0x5792('0x20')]()[_0x5792('0xf')](function(_0x4e3b35){return db['sequelize'][_0x5792('0x21')](function(_0x12cef6){return db[_0x5792('0x6')][_0x5792('0x22')]({'where':_0x45ba80[_0x5792('0x7')]?_0x45ba80[_0x5792('0x7')]['where']||null:null,'attributes':_0x45ba80['options']?_0x45ba80[_0x5792('0x7')][_0x5792('0xa')]||null:null,'limit':_0x45ba80['options']?_0x45ba80[_0x5792('0x7')][_0x5792('0xb')]||null:null,'order':_0x45ba80[_0x5792('0x7')]?_0x45ba80[_0x5792('0x7')][_0x5792('0x23')]||null:null,'transaction':_0x12cef6,'lock':_0x12cef6[_0x5792('0x24')][_0x5792('0x25')],'include':[{'model':db['CmContact'],'as':_0x5792('0x26'),'attributes':_[_0x5792('0x27')](_0x4e3b35)},{'model':db[_0x5792('0x28')],'as':_0x5792('0x29'),'attributes':['id',_0x5792('0x2a'),_0x5792('0x2b')]}]})[_0x5792('0xf')](function(_0x59d1ef){var _0x4acc7f=[];var _0x2f2f61=[];for(var _0x3cb304=0x0;_0x3cb304<_0x59d1ef[_0x5792('0x2c')];_0x3cb304+=0x1){var _0x4e9939=_0x59d1ef[_0x3cb304][_0x5792('0x2d')];if(_0x4e9939===null){_0x4acc7f['push'](_0x59d1ef[_0x3cb304][_0x5792('0x2e')](_0x45ba80['body'],{'transaction':_0x12cef6}));}else if(!_0x2f2f61[_0x5792('0x2f')](_0x4e9939)){_0x2f2f61[_0x5792('0x30')](_0x4e9939);_0x4acc7f['push'](_0x59d1ef[_0x3cb304][_0x5792('0x2e')](_0x45ba80[_0x5792('0x1a')],{'transaction':_0x12cef6}));}}return BPromise[_0x5792('0x31')](_0x4acc7f);});})[_0x5792('0xf')](function(_0x463040){logger[_0x5792('0x10')](_0x5792('0x1e'),_0x45ba80);if(_0x463040[_0x5792('0x2c')]>0x0){logger[_0x5792('0x10')](_0x5792('0x32'),_0x463040[0x0]['dataValues']['id'],_0x463040[0x0][_0x5792('0x33')][_0x5792('0x34')],_0x463040[0x0][_0x5792('0x33')][_0x5792('0x35')]);}logger[_0x5792('0x11')](_0x5792('0x1e'),_0x45ba80,JSON[_0x5792('0x12')](_0x463040));_0x12625c(_0x463040);})['catch'](function(_0x47efc3){logger[_0x5792('0x17')]('GetContactDialer',_0x47efc3[_0x5792('0x14')],_0x45ba80);_0x14f446(_0x161a00[_0x5792('0x17')](0x1f4,_0x47efc3['message']));});});});};exports[_0x5792('0x36')]=function(_0x10c40c){var _0x2ac609=this;return new Promise(function(_0x274712,_0x13645f){return db['sequelize'][_0x5792('0x21')](function(_0x4a5ad4){return db[_0x5792('0x37')][_0x5792('0x19')](_0x10c40c[_0x5792('0x1a')],{'raw':_0x10c40c[_0x5792('0x7')]?_0x10c40c[_0x5792('0x7')]['raw']===undefined?!![]:![]:!![],'transaction':_0x4a5ad4})[_0x5792('0xf')](function(){logger[_0x5792('0x10')](_0x5792('0x38'),JSON[_0x5792('0x12')](_0x10c40c[_0x5792('0x7')][_0x5792('0x9')]),_0x10c40c[_0x5792('0x7')]['where'][_0x5792('0x35')]);return db[_0x5792('0x6')][_0x5792('0x39')]({'where':_0x10c40c['options']?_0x10c40c[_0x5792('0x7')]['where']||null:null,'transaction':_0x4a5ad4});});})[_0x5792('0xf')](function(_0x58281a){logger[_0x5792('0x10')](_0x5792('0x36'),_0x10c40c);logger[_0x5792('0x11')](_0x5792('0x36'),_0x10c40c,JSON[_0x5792('0x12')](_0x58281a));_0x274712(_0x58281a);})[_0x5792('0x13')](function(_0x63f7b0){logger[_0x5792('0x17')](_0x5792('0x36'),_0x63f7b0[_0x5792('0x14')],_0x10c40c);_0x13645f(_0x2ac609[_0x5792('0x17')](0x1f4,_0x63f7b0[_0x5792('0x14')]));});});};exports[_0x5792('0x3a')]=function(_0x381cb3){var _0x174b33=this;return new Promise(function(_0x25012a,_0x319d6d){return db[_0x5792('0x6')][_0x5792('0x22')]({'raw':_0x381cb3[_0x5792('0x7')]?_0x381cb3[_0x5792('0x7')][_0x5792('0x8')]===undefined?!![]:![]:!![],'where':_0x381cb3[_0x5792('0x7')]?_0x381cb3['options'][_0x5792('0x9')]||null:null,'attributes':[[db['sequelize']['fn'](_0x5792('0x3b'),db['sequelize']['fn']('IF',db[_0x5792('0x3c')][_0x5792('0x3d')](_0x5792('0x3e')+util[_0x5792('0x3f')]('\x22%s\x22',moment()[_0x5792('0x3f')](_0x5792('0x40')))+_0x5792('0x41')))),'contactsRescheduled']]})['then'](function(_0x5114ed){logger[_0x5792('0x10')](_0x5792('0x3a'),_0x381cb3);logger[_0x5792('0x11')](_0x5792('0x3a'),_0x381cb3,JSON[_0x5792('0x12')](_0x5114ed));_0x25012a(_0x5114ed);})[_0x5792('0x13')](function(_0x2286fe){logger[_0x5792('0x17')](_0x5792('0x3a'),_0x2286fe[_0x5792('0x14')],_0x381cb3);_0x319d6d(_0x174b33[_0x5792('0x17')](0x1f4,_0x2286fe[_0x5792('0x14')]));});});};exports[_0x5792('0x42')]=function(_0x258f80){var _0x511d3a=this;return new Promise(function(_0x1f1a35,_0x29691b){return db[_0x5792('0x1f')][_0x5792('0x20')]()[_0x5792('0xf')](function(){return db[_0x5792('0x3c')]['transaction'](function(_0x545313){return db[_0x5792('0x6')][_0x5792('0x22')]({'where':_0x258f80[_0x5792('0x7')]?_0x258f80[_0x5792('0x7')][_0x5792('0x9')]||null:null,'attributes':_0x258f80[_0x5792('0x7')]?_0x258f80['options'][_0x5792('0xa')]||null:null,'limit':0x1,'order':_0x258f80[_0x5792('0x7')]?_0x258f80[_0x5792('0x7')]['order']||null:null,'group':db[_0x5792('0x6')][_0x5792('0x2d')],'transaction':_0x545313,'lock':_0x545313['LOCK'][_0x5792('0x25')],'include':_0x258f80[_0x5792('0x7')]?_0x258f80['options'][_0x5792('0xd')]?_[_0x5792('0xc')](_0x258f80['options'][_0x5792('0xd')],function(_0x59a5bf){return{'model':db[_0x59a5bf['model']],'as':_0x59a5bf['as'],'attributes':_0x59a5bf[_0x5792('0xa')],'include':_0x59a5bf[_0x5792('0xd')]?_['map'](_0x59a5bf[_0x5792('0xd')],function(_0x51ee2){return{'model':db[_0x51ee2[_0x5792('0xe')]],'as':_0x51ee2['as'],'attributes':_0x51ee2[_0x5792('0xa')],'include':_0x51ee2[_0x5792('0xd')]?_[_0x5792('0xc')](_0x51ee2[_0x5792('0xd')],function(_0x17795f){return{'model':db[_0x17795f['model']],'as':_0x17795f['as'],'attributes':_0x17795f[_0x5792('0xa')]};}):[]};}):[]};}):[]:[]})[_0x5792('0xf')](function(_0x13ea61){var _0x157bbf=[];for(var _0x3d3c4b=0x0;_0x3d3c4b<_0x13ea61[_0x5792('0x2c')];_0x3d3c4b+=0x1){_0x157bbf[_0x5792('0x30')](_0x13ea61[_0x3d3c4b]['update'](_0x258f80[_0x5792('0x1a')],{'transaction':_0x545313}));}return BPromise[_0x5792('0x31')](_0x157bbf);});})[_0x5792('0xf')](function(_0x7fa83c){logger['info'](_0x5792('0x42'),_0x258f80);logger['debug']('GetContactRecallMe',_0x258f80,JSON[_0x5792('0x12')](_0x7fa83c));_0x1f1a35(_0x7fa83c);})[_0x5792('0x13')](function(_0x361a3c){logger[_0x5792('0x17')](_0x5792('0x42'),_0x361a3c[_0x5792('0x14')],_0x258f80);_0x29691b(_0x511d3a['error'](0x1f4,_0x361a3c['message']));});});});};exports[_0x5792('0x43')]=function(_0x497959){var _0x1e50cf=this;return new Promise(function(_0x3d2835,_0x3e0289){db[_0x5792('0x1f')][_0x5792('0x20')]()[_0x5792('0xf')](function(_0x31b164){return db['CmHopper'][_0x5792('0x22')]({'raw':_0x497959[_0x5792('0x7')]?_0x497959['options'][_0x5792('0x8')]===undefined?!![]:![]:!![],'where':_0x497959['options']?_0x497959[_0x5792('0x7')][_0x5792('0x9')]||null:null,'attributes':_0x497959['options']?_0x497959['options'][_0x5792('0xa')]||null:null,'limit':_0x497959[_0x5792('0x7')]?_0x497959[_0x5792('0x7')][_0x5792('0xb')]||null:null,'include':_0x497959[_0x5792('0x7')]?_0x497959[_0x5792('0x7')][_0x5792('0xd')]?_[_0x5792('0xc')](_0x497959[_0x5792('0x7')][_0x5792('0xd')],function(_0x16e9d4){return{'model':db[_0x16e9d4[_0x5792('0xe')]],'as':_0x16e9d4['as'],'attributes':_0x16e9d4['as']==='Contact'?_[_0x5792('0x27')](_0x31b164):_0x16e9d4[_0x5792('0xa')],'include':_0x16e9d4[_0x5792('0xd')]?_['map'](_0x16e9d4[_0x5792('0xd')],function(_0x549d92){return{'model':db[_0x549d92[_0x5792('0xe')]],'as':_0x549d92['as'],'attributes':_0x549d92['attributes'],'include':_0x549d92[_0x5792('0xd')]?_[_0x5792('0xc')](_0x549d92[_0x5792('0xd')],function(_0x280a65){return{'model':db[_0x280a65[_0x5792('0xe')]],'as':_0x280a65['as'],'attributes':_0x280a65['attributes']};}):[]};}):[]};}):[]:[]})[_0x5792('0xf')](function(_0x4ad80d){logger[_0x5792('0x10')](_0x5792('0x5'),_0x497959);logger[_0x5792('0x11')](_0x5792('0x5'),_0x497959,JSON['stringify'](_0x4ad80d));_0x3d2835(_0x4ad80d);})['catch'](function(_0x4efb43){logger[_0x5792('0x17')]('GetCmHopper',_0x4efb43[_0x5792('0x14')],_0x497959);_0x3e0289(_0x1e50cf[_0x5792('0x17')](0x1f4,_0x4efb43['message']));});});});};exports['GetContactByPhone']=function(_0x2c12a4){var _0x5d56c7=this;return new Promise(function(_0x3d9c4c,_0x4f3661){return db[_0x5792('0x1f')]['findOne']({'raw':!![],'where':{'phone':_0x2c12a4[_0x5792('0x7')][_0x5792('0x9')][_0x5792('0x44')]},'attributes':['id',_0x5792('0x45')],'order':[['id',_0x5792('0x46')]]})[_0x5792('0xf')](function(_0x520097){logger[_0x5792('0x10')]('getContactByPhone',_0x2c12a4);logger[_0x5792('0x11')](_0x5792('0x47'),_0x2c12a4,JSON[_0x5792('0x12')](_0x520097));_0x3d9c4c(_0x520097);})[_0x5792('0x13')](function(_0x39bc28){logger[_0x5792('0x17')](_0x5792('0x47'),_0x39bc28[_0x5792('0x14')],_0x2c12a4);_0x4f3661(_0x5d56c7[_0x5792('0x17')](0x1f4,_0x39bc28['message']));});});};exports[_0x5792('0x48')]=function(_0x507def){var _0x1c0acd=this;return new Promise(function(_0x170d45,_0x7f2bcf){return db[_0x5792('0x3c')][_0x5792('0x21')](function(_0x2e71a2){var _0x59c06f=_0x507def[_0x5792('0x7')]&&_0x507def[_0x5792('0x7')][_0x5792('0x9')]?_0x507def['options'][_0x5792('0x9')]:{};return db['CmHopper']['update'](_0x507def[_0x5792('0x1a')],{'where':_0x59c06f,'transaction':_0x2e71a2})[_0x5792('0xf')](function(_0x32cd98){logger[_0x5792('0x10')](_0x5792('0x48'),_0x507def);logger['debug']('ResetActiveCalls',_0x507def,JSON[_0x5792('0x12')](_0x32cd98));_0x170d45(_0x32cd98);})[_0x5792('0x13')](function(_0x21bd1c){logger[_0x5792('0x17')](_0x5792('0x48'),_0x21bd1c['message'],_0x507def);_0x7f2bcf(_0x1c0acd['error'](0x1f4,_0x21bd1c[_0x5792('0x14')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x1a62e9){var _0x3747c0=this;var _0x9be2c4=_0x1a62e9[_0x5792('0x1a')][_0x5792('0x9')][_0x5792('0x49')];var _0x205ddf=_0x1a62e9['body'][_0x5792('0x9')][_0x5792('0x4a')];var _0x5d4114=_0x1a62e9['body'][_0x5792('0x9')][_0x5792('0x4b')];return new Promise(function(_0x5ec876,_0x433d98){return db[_0x5792('0x6')]['findAll']({'where':{'voiceQueueId':{'$in':_0x9be2c4},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x5792('0x3c')][_0x5792('0x3d')](_0x5792('0x4c')+_0x205ddf+_0x5792('0x4d')),'$gt':db[_0x5792('0x3c')][_0x5792('0x3d')](_0x5792('0x4e'))}},'UserId':{'$in':_0x5d4114}},'include':[{'model':db['CmContact'],'as':_0x5792('0x26')},{'model':db[_0x5792('0x28')],'as':_0x5792('0x29'),'attributes':['id',_0x5792('0x2a'),_0x5792('0x2b')]},{'model':db['CmList'],'as':_0x5792('0x4f')}]})['then'](function(_0x28e1be){if(_0x28e1be['length']>0x0){return db[_0x5792('0x3c')][_0x5792('0x21')](function(_0x43e2b4){return db[_0x5792('0x6')][_0x5792('0x2e')]({'recallmeNotifiedDate':db[_0x5792('0x3c')]['literal'](_0x5792('0x4e'))},{'where':{'id':{'$in':_['map'](_0x28e1be,'id')}},'transaction':_0x43e2b4})['then'](function(){_0x5ec876(_0x28e1be);})[_0x5792('0x13')](function(_0x3af6da){logger[_0x5792('0x17')]('CmHopperHandlePreviewRecallNotifications',_0x3af6da['message'],_0x1a62e9);_0x433d98(_0x3747c0[_0x5792('0x17')](0x1f4,_0x3af6da[_0x5792('0x14')]));});})['catch'](function(_0x1ce5ef){logger[_0x5792('0x17')](_0x5792('0x50'),_0x1ce5ef[_0x5792('0x14')],_0x1a62e9);_0x433d98(_0x3747c0[_0x5792('0x17')](0x1f4,_0x1ce5ef[_0x5792('0x14')]));});}else{_0x5ec876(_0x28e1be);}});});};
\ No newline at end of file
index beba423..659c986 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5b3=['/describe','describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','getPreviewRecall','post','create','getPreview','/timezone','getTimezone','put','update','delete','destroy','exports','express','Router','get','isAuthenticated','index'];(function(_0xa45111,_0x1cae28){var _0x3e54ee=function(_0x9661c6){while(--_0x9661c6){_0xa45111['push'](_0xa45111['shift']());}};_0x3e54ee(++_0x1cae28);}(_0xd5b3,0xe1));var _0x3d5b=function(_0x20424c,_0x542606){_0x20424c=_0x20424c-0x0;var _0x3da4dc=_0xd5b3[_0x20424c];return _0x3da4dc;};'use strict';var express=require(_0x3d5b('0x0'));var router=express[_0x3d5b('0x1')]();var auth=require('../../components/auth/service');var controller=require('./cmHopper.controller');router[_0x3d5b('0x2')]('/',auth[_0x3d5b('0x3')](),controller[_0x3d5b('0x4')]);router[_0x3d5b('0x2')](_0x3d5b('0x5'),auth[_0x3d5b('0x3')](),controller[_0x3d5b('0x6')]);router[_0x3d5b('0x2')](_0x3d5b('0x7'),auth[_0x3d5b('0x3')](),controller[_0x3d5b('0x8')]);router[_0x3d5b('0x2')](_0x3d5b('0x9'),auth[_0x3d5b('0x3')](),controller[_0x3d5b('0xa')]);router['get'](_0x3d5b('0xb'),auth[_0x3d5b('0x3')](),controller['show']);router['get']('/:id/previewrecall',auth[_0x3d5b('0x3')](),controller[_0x3d5b('0xc')]);router[_0x3d5b('0xd')]('/',auth[_0x3d5b('0x3')](),controller[_0x3d5b('0xe')]);router[_0x3d5b('0xd')]('/preview',auth[_0x3d5b('0x3')](),controller[_0x3d5b('0xf')]);router['post'](_0x3d5b('0x10'),auth[_0x3d5b('0x3')](),controller[_0x3d5b('0x11')]);router[_0x3d5b('0x12')](_0x3d5b('0xb'),auth[_0x3d5b('0x3')](),controller[_0x3d5b('0x13')]);router[_0x3d5b('0x14')](_0x3d5b('0xb'),auth[_0x3d5b('0x3')](),controller[_0x3d5b('0x15')]);module[_0x3d5b('0x16')]=router;
\ No newline at end of file
+var _0x64c0=['/describe','isAuthenticated','describe','/opencontacts','getOpenContacts','get','/timezones','getTimezones','getPreviewRecall','post','create','/preview','getPreview','/timezone','put','/:id','update','delete','destroy','exports','../../components/auth/service','./cmHopper.controller','index'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x64c0,0x9e));var _0x064c=function(_0x59aecc,_0x255014){_0x59aecc=_0x59aecc-0x0;var _0x46b112=_0x64c0[_0x59aecc];return _0x46b112;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x064c('0x0'));var controller=require(_0x064c('0x1'));router['get']('/',auth['isAuthenticated'](),controller[_0x064c('0x2')]);router['get'](_0x064c('0x3'),auth[_0x064c('0x4')](),controller[_0x064c('0x5')]);router['get'](_0x064c('0x6'),auth['isAuthenticated'](),controller[_0x064c('0x7')]);router[_0x064c('0x8')](_0x064c('0x9'),auth['isAuthenticated'](),controller[_0x064c('0xa')]);router[_0x064c('0x8')]('/:id',auth[_0x064c('0x4')](),controller['show']);router[_0x064c('0x8')]('/:id/previewrecall',auth[_0x064c('0x4')](),controller[_0x064c('0xb')]);router[_0x064c('0xc')]('/',auth['isAuthenticated'](),controller[_0x064c('0xd')]);router[_0x064c('0xc')](_0x064c('0xe'),auth[_0x064c('0x4')](),controller[_0x064c('0xf')]);router[_0x064c('0xc')](_0x064c('0x10'),auth[_0x064c('0x4')](),controller['getTimezone']);router[_0x064c('0x11')](_0x064c('0x12'),auth['isAuthenticated'](),controller[_0x064c('0x13')]);router[_0x064c('0x14')](_0x064c('0x12'),auth[_0x064c('0x4')](),controller[_0x064c('0x15')]);module[_0x064c('0x16')]=router;
\ No newline at end of file
index 3e6708c..99817a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9fb=['INTEGER','STRING','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize','exports'];(function(_0x6317d6,_0x424384){var _0x5add4d=function(_0x176118){while(--_0x176118){_0x6317d6['push'](_0x6317d6['shift']());}};_0x5add4d(++_0x424384);}(_0xe9fb,0xc3));var _0xbe9f=function(_0x579da4,_0x51b10d){_0x579da4=_0x579da4-0x0;var _0x5a0e08=_0xe9fb[_0x579da4];return _0x5a0e08;};'use strict';var moment=require(_0xbe9f('0x0'));var Sequelize=require(_0xbe9f('0x1'));module[_0xbe9f('0x2')]={'CmHopperId':{'type':Sequelize[_0xbe9f('0x3')]},'phone':{'type':Sequelize[_0xbe9f('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format'](_0xbe9f('0x5'))},'countbusyretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xbe9f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6a20=['sequelize','exports','INTEGER','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment'];(function(_0x402224,_0x5ab8c5){var _0x1d7542=function(_0x29ad20){while(--_0x29ad20){_0x402224['push'](_0x402224['shift']());}};_0x1d7542(++_0x5ab8c5);}(_0x6a20,0xdf));var _0x06a2=function(_0x1c34e7,_0x33f9a8){_0x1c34e7=_0x1c34e7-0x0;var _0x378cb1=_0x6a20[_0x1c34e7];return _0x378cb1;};'use strict';var moment=require(_0x06a2('0x0'));var Sequelize=require(_0x06a2('0x1'));module[_0x06a2('0x2')]={'CmHopperId':{'type':Sequelize[_0x06a2('0x3')]},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x06a2('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x06a2('0x4')],'defaultValue':moment()[_0x06a2('0x5')](_0x06a2('0x6'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x06a2('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x06a2('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x06a2('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x06a2('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x06a2('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x06a2('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 1e5696c..98b7744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbe8=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','apply','then','get','end','sendStatus','error','stack','name','index','map','CmHopperAdditionalPhone','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','CmHopperAdditionalPhones','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x15264b,_0x46cd16){var _0x24148a=function(_0x31c59e){while(--_0x31c59e){_0x15264b['push'](_0x15264b['shift']());}};_0x24148a(++_0x46cd16);}(_0xfbe8,0x141));var _0x8fbe=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xfbe8[_0x4f9b18];return _0x29f20c;};'use strict';var emlformat=require(_0x8fbe('0x0'));var rimraf=require(_0x8fbe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8fbe('0x2'));var rp=require(_0x8fbe('0x3'));var moment=require('moment');var BPromise=require(_0x8fbe('0x4'));var Mustache=require(_0x8fbe('0x5'));var util=require(_0x8fbe('0x6'));var path=require(_0x8fbe('0x7'));var sox=require('sox');var csv=require(_0x8fbe('0x8'));var ejs=require(_0x8fbe('0x9'));var fs=require('fs');var fs_extra=require(_0x8fbe('0xa'));var _=require(_0x8fbe('0xb'));var squel=require(_0x8fbe('0xc'));var crypto=require(_0x8fbe('0xd'));var jsforce=require(_0x8fbe('0xe'));var deskjs=require(_0x8fbe('0xf'));var toCsv=require(_0x8fbe('0x8'));var querystring=require(_0x8fbe('0x10'));var Papa=require(_0x8fbe('0x11'));var Redis=require(_0x8fbe('0x12'));var authService=require(_0x8fbe('0x13'));var qs=require(_0x8fbe('0x14'));var as=require(_0x8fbe('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8fbe('0x16'))(_0x8fbe('0x17'));var utils=require(_0x8fbe('0x18'));var config=require(_0x8fbe('0x19'));var licenseUtil=require(_0x8fbe('0x1a'));var db=require(_0x8fbe('0x1b'))['db'];function respondWithStatusCode(_0x96e757,_0x544ad2){_0x544ad2=_0x544ad2||0xcc;return function(_0x69406a){if(_0x69406a){return _0x96e757['sendStatus'](_0x544ad2);}return _0x96e757[_0x8fbe('0x1c')](_0x544ad2)['end']();};}function respondWithResult(_0x1d59ad,_0x4c8fd7){_0x4c8fd7=_0x4c8fd7||0xc8;return function(_0x242781){if(_0x242781){return _0x1d59ad['status'](_0x4c8fd7)[_0x8fbe('0x1d')](_0x242781);}};}function respondWithFilteredResult(_0x1ed4e4,_0x4ba985){return function(_0x136f44){if(_0x136f44){var _0x4011cb=typeof _0x4ba985[_0x8fbe('0x1e')]===_0x8fbe('0x1f')&&typeof _0x4ba985['limit']===_0x8fbe('0x1f');var _0x472636=_0x136f44[_0x8fbe('0x20')];var _0xf77c69=_0x4011cb?0x0:_0x4ba985[_0x8fbe('0x1e')];var _0xb8f15b=_0x4011cb?_0x136f44[_0x8fbe('0x20')]:_0x4ba985[_0x8fbe('0x1e')]+_0x4ba985[_0x8fbe('0x21')];var _0x14ff4b;if(_0xb8f15b>=_0x472636){_0xb8f15b=_0x472636;_0x14ff4b=0xc8;}else{_0x14ff4b=0xce;}_0x1ed4e4[_0x8fbe('0x1c')](_0x14ff4b);return _0x1ed4e4['set'](_0x8fbe('0x22'),_0xf77c69+'-'+_0xb8f15b+'/'+_0x472636)[_0x8fbe('0x1d')](_0x136f44);}return null;};}function patchUpdates(_0x4f45c3){return function(_0xba6099){try{jsonpatch[_0x8fbe('0x23')](_0xba6099,_0x4f45c3,!![]);}catch(_0x419c83){return BPromise['reject'](_0x419c83);}return _0xba6099['save']();};}function saveUpdates(_0x3eeb4f,_0x580789){return function(_0x4b610b){if(_0x4b610b){return _0x4b610b['update'](_0x3eeb4f)[_0x8fbe('0x24')](function(_0xf98528){return _0xf98528;});}return null;};}function removeEntity(_0x816f67,_0x2990fd){return function(_0x18cdf1){if(_0x18cdf1){return _0x18cdf1['destroy']()['then'](function(){var _0x5d7cd3=_0x18cdf1[_0x8fbe('0x25')]({'plain':!![]});var _0x38b9e1='CmHopperAdditionalPhones';return db['UserProfileResource']['destroy']({'where':{'type':_0x38b9e1,'resourceId':_0x5d7cd3['id']}})[_0x8fbe('0x24')](function(){return _0x18cdf1;});})[_0x8fbe('0x24')](function(){_0x816f67[_0x8fbe('0x1c')](0xcc)[_0x8fbe('0x26')]();});}};}function handleEntityNotFound(_0x1e41ac,_0x177421){return function(_0x455941){if(!_0x455941){_0x1e41ac[_0x8fbe('0x27')](0x194);}return _0x455941;};}function handleError(_0x179177,_0x7e50b0){_0x7e50b0=_0x7e50b0||0x1f4;return function(_0x393cf0){logger[_0x8fbe('0x28')](_0x393cf0[_0x8fbe('0x29')]);if(_0x393cf0[_0x8fbe('0x2a')]){delete _0x393cf0[_0x8fbe('0x2a')];}_0x179177[_0x8fbe('0x1c')](_0x7e50b0)['send'](_0x393cf0);};}exports[_0x8fbe('0x2b')]=function(_0xbf3ece,_0xad1c55){var _0x33f896={},_0x28bdd4={},_0x24f136={'count':0x0,'rows':[]};var _0x351746=_[_0x8fbe('0x2c')](db[_0x8fbe('0x2d')][_0x8fbe('0x2e')],function(_0x3cb265){return{'name':_0x3cb265['fieldName'],'type':_0x3cb265[_0x8fbe('0x2f')][_0x8fbe('0x30')]};});_0x28bdd4[_0x8fbe('0x31')]=_[_0x8fbe('0x2c')](_0x351746,_0x8fbe('0x2a'));_0x28bdd4[_0x8fbe('0x32')]=_['keys'](_0xbf3ece[_0x8fbe('0x32')]);_0x28bdd4[_0x8fbe('0x33')]=_['intersection'](_0x28bdd4[_0x8fbe('0x31')],_0x28bdd4[_0x8fbe('0x32')]);_0x33f896[_0x8fbe('0x34')]=_[_0x8fbe('0x35')](_0x28bdd4[_0x8fbe('0x31')],qs[_0x8fbe('0x36')](_0xbf3ece[_0x8fbe('0x32')][_0x8fbe('0x36')]));_0x33f896[_0x8fbe('0x34')]=_0x33f896['attributes'][_0x8fbe('0x37')]?_0x33f896[_0x8fbe('0x34')]:_0x28bdd4[_0x8fbe('0x31')];if(!_0xbf3ece[_0x8fbe('0x32')][_0x8fbe('0x38')](_0x8fbe('0x39'))){_0x33f896[_0x8fbe('0x21')]=qs[_0x8fbe('0x21')](_0xbf3ece[_0x8fbe('0x32')]['limit']);_0x33f896['offset']=qs[_0x8fbe('0x1e')](_0xbf3ece[_0x8fbe('0x32')][_0x8fbe('0x1e')]);}_0x33f896[_0x8fbe('0x3a')]=qs[_0x8fbe('0x3b')](_0xbf3ece[_0x8fbe('0x32')][_0x8fbe('0x3b')]);_0x33f896[_0x8fbe('0x3c')]=qs[_0x8fbe('0x33')](_[_0x8fbe('0x3d')](_0xbf3ece[_0x8fbe('0x32')],_0x28bdd4['filters']),_0x351746);if(_0xbf3ece[_0x8fbe('0x32')][_0x8fbe('0x3e')]){_0x33f896['where']=_[_0x8fbe('0x3f')](_0x33f896[_0x8fbe('0x3c')],{'$or':_[_0x8fbe('0x2c')](_0x351746,function(_0xf66956){if(_0xf66956[_0x8fbe('0x2f')]!==_0x8fbe('0x40')){var _0x2a2c9d={};_0x2a2c9d[_0xf66956[_0x8fbe('0x2a')]]={'$like':'%'+_0xbf3ece['query'][_0x8fbe('0x3e')]+'%'};return _0x2a2c9d;}})});}_0x33f896=_['merge']({},_0x33f896,_0xbf3ece[_0x8fbe('0x41')]);var _0x1a2368={'where':_0x33f896[_0x8fbe('0x3c')]};return db[_0x8fbe('0x2d')][_0x8fbe('0x20')](_0x1a2368)[_0x8fbe('0x24')](function(_0x16bcbb){_0x24f136['count']=_0x16bcbb;if(_0xbf3ece[_0x8fbe('0x32')]['includeAll']){_0x33f896[_0x8fbe('0x42')]=[{'all':!![]}];}return db[_0x8fbe('0x2d')][_0x8fbe('0x43')](_0x33f896);})[_0x8fbe('0x24')](function(_0x2e5908){_0x24f136[_0x8fbe('0x44')]=_0x2e5908;return _0x24f136;})[_0x8fbe('0x24')](respondWithFilteredResult(_0xad1c55,_0x33f896))[_0x8fbe('0x45')](handleError(_0xad1c55,null));};exports[_0x8fbe('0x46')]=function(_0x29faac,_0x46e0e3){var _0x4fad27={'raw':!![],'where':{'id':_0x29faac[_0x8fbe('0x47')]['id']}},_0x4f4535={};_0x4f4535[_0x8fbe('0x31')]=_['keys'](db['CmHopperAdditionalPhone'][_0x8fbe('0x2e')]);_0x4f4535['query']=_['keys'](_0x29faac[_0x8fbe('0x32')]);_0x4f4535[_0x8fbe('0x33')]=_['intersection'](_0x4f4535[_0x8fbe('0x31')],_0x4f4535[_0x8fbe('0x32')]);_0x4fad27[_0x8fbe('0x34')]=_[_0x8fbe('0x35')](_0x4f4535[_0x8fbe('0x31')],qs[_0x8fbe('0x36')](_0x29faac[_0x8fbe('0x32')][_0x8fbe('0x36')]));_0x4fad27['attributes']=_0x4fad27['attributes'][_0x8fbe('0x37')]?_0x4fad27[_0x8fbe('0x34')]:_0x4f4535[_0x8fbe('0x31')];if(_0x29faac[_0x8fbe('0x32')][_0x8fbe('0x48')]){_0x4fad27[_0x8fbe('0x42')]=[{'all':!![]}];}_0x4fad27=_[_0x8fbe('0x3f')]({},_0x4fad27,_0x29faac[_0x8fbe('0x41')]);return db[_0x8fbe('0x2d')][_0x8fbe('0x49')](_0x4fad27)[_0x8fbe('0x24')](handleEntityNotFound(_0x46e0e3,null))['then'](respondWithResult(_0x46e0e3,null))['catch'](handleError(_0x46e0e3,null));};exports[_0x8fbe('0x4a')]=function(_0x184930,_0x27f879){return db['CmHopperAdditionalPhone'][_0x8fbe('0x4a')](_0x184930['body'],{})[_0x8fbe('0x24')](function(_0x56ede0){var _0x1cfc31=_0x184930[_0x8fbe('0x4b')][_0x8fbe('0x25')]({'plain':!![]});if(!_0x1cfc31)throw new Error(_0x8fbe('0x4c'));if(_0x1cfc31['role']===_0x8fbe('0x4b')){var _0x5ffc3d=_0x56ede0['get']({'plain':!![]});var _0x7db838=_0x8fbe('0x4d');return db[_0x8fbe('0x4e')][_0x8fbe('0x49')]({'where':{'name':_0x7db838,'userProfileId':_0x1cfc31[_0x8fbe('0x4f')]},'raw':!![]})[_0x8fbe('0x24')](function(_0x376fa0){if(_0x376fa0&&_0x376fa0[_0x8fbe('0x50')]===0x0){return db[_0x8fbe('0x51')][_0x8fbe('0x4a')]({'name':_0x5ffc3d[_0x8fbe('0x2a')],'resourceId':_0x5ffc3d['id'],'type':_0x376fa0[_0x8fbe('0x2a')],'sectionId':_0x376fa0['id']},{})[_0x8fbe('0x24')](function(){return _0x56ede0;});}else{return _0x56ede0;}})[_0x8fbe('0x45')](function(_0x4a7db0){logger[_0x8fbe('0x28')](_0x8fbe('0x52'),_0x4a7db0);throw _0x4a7db0;});}return _0x56ede0;})['then'](respondWithResult(_0x27f879,0xc9))[_0x8fbe('0x45')](handleError(_0x27f879,null));};exports[_0x8fbe('0x53')]=function(_0x83fffa,_0x183f0f){if(_0x83fffa['body']['id']){delete _0x83fffa[_0x8fbe('0x54')]['id'];}return db[_0x8fbe('0x2d')]['find']({'where':{'id':_0x83fffa[_0x8fbe('0x47')]['id']}})[_0x8fbe('0x24')](handleEntityNotFound(_0x183f0f,null))[_0x8fbe('0x24')](saveUpdates(_0x83fffa[_0x8fbe('0x54')],null))['then'](respondWithResult(_0x183f0f,null))[_0x8fbe('0x45')](handleError(_0x183f0f,null));};exports[_0x8fbe('0x55')]=function(_0xeaff43,_0x476420){return db[_0x8fbe('0x2d')]['find']({'where':{'id':_0xeaff43[_0x8fbe('0x47')]['id']}})[_0x8fbe('0x24')](handleEntityNotFound(_0x476420,null))[_0x8fbe('0x24')](removeEntity(_0x476420,null))[_0x8fbe('0x45')](handleError(_0x476420,null));};
\ No newline at end of file
+var _0x4d18=['rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','params','include','find','create','body','user','get','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','bluebird','mustache','sox','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','CmHopperAdditionalPhones','UserProfileResource','sendStatus','stack','name','send','index','map','CmHopperAdditionalPhone'];(function(_0x2d4d75,_0x5d4d61){var _0x339312=function(_0x296c03){while(--_0x296c03){_0x2d4d75['push'](_0x2d4d75['shift']());}};_0x339312(++_0x5d4d61);}(_0x4d18,0x1b8));var _0x84d1=function(_0x4c9841,_0x4524df){_0x4c9841=_0x4c9841-0x0;var _0x494fe2=_0x4d18[_0x4c9841];return _0x494fe2;};'use strict';var emlformat=require(_0x84d1('0x0'));var rimraf=require(_0x84d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x84d1('0x2'));var moment=require('moment');var BPromise=require(_0x84d1('0x3'));var Mustache=require(_0x84d1('0x4'));var util=require('util');var path=require('path');var sox=require(_0x84d1('0x5'));var csv=require('to-csv');var ejs=require(_0x84d1('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x84d1('0x7'));var crypto=require(_0x84d1('0x8'));var jsforce=require(_0x84d1('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x84d1('0xa'));var Papa=require(_0x84d1('0xb'));var Redis=require(_0x84d1('0xc'));var authService=require(_0x84d1('0xd'));var qs=require(_0x84d1('0xe'));var as=require(_0x84d1('0xf'));var hardwareService=require(_0x84d1('0x10'));var logger=require(_0x84d1('0x11'))(_0x84d1('0x12'));var utils=require('../../config/utils');var config=require(_0x84d1('0x13'));var licenseUtil=require(_0x84d1('0x14'));var db=require(_0x84d1('0x15'))['db'];function respondWithStatusCode(_0x567e0d,_0x1ef30d){_0x1ef30d=_0x1ef30d||0xcc;return function(_0x48d248){if(_0x48d248){return _0x567e0d['sendStatus'](_0x1ef30d);}return _0x567e0d[_0x84d1('0x16')](_0x1ef30d)[_0x84d1('0x17')]();};}function respondWithResult(_0x188641,_0x42b3d5){_0x42b3d5=_0x42b3d5||0xc8;return function(_0x225e31){if(_0x225e31){return _0x188641[_0x84d1('0x16')](_0x42b3d5)[_0x84d1('0x18')](_0x225e31);}};}function respondWithFilteredResult(_0x470898,_0x4206f9){return function(_0x1c04be){if(_0x1c04be){var _0x1e60b8=typeof _0x4206f9[_0x84d1('0x19')]===_0x84d1('0x1a')&&typeof _0x4206f9[_0x84d1('0x1b')]==='undefined';var _0x1d922d=_0x1c04be[_0x84d1('0x1c')];var _0x5f5623=_0x1e60b8?0x0:_0x4206f9['offset'];var _0x229ddb=_0x1e60b8?_0x1c04be[_0x84d1('0x1c')]:_0x4206f9['offset']+_0x4206f9['limit'];var _0x219831;if(_0x229ddb>=_0x1d922d){_0x229ddb=_0x1d922d;_0x219831=0xc8;}else{_0x219831=0xce;}_0x470898[_0x84d1('0x16')](_0x219831);return _0x470898[_0x84d1('0x1d')](_0x84d1('0x1e'),_0x5f5623+'-'+_0x229ddb+'/'+_0x1d922d)[_0x84d1('0x18')](_0x1c04be);}return null;};}function patchUpdates(_0x3182f2){return function(_0x3d0a00){try{jsonpatch[_0x84d1('0x1f')](_0x3d0a00,_0x3182f2,!![]);}catch(_0x56c24f){return BPromise[_0x84d1('0x20')](_0x56c24f);}return _0x3d0a00[_0x84d1('0x21')]();};}function saveUpdates(_0x39f43b,_0x1d491f){return function(_0xf6d5d9){if(_0xf6d5d9){return _0xf6d5d9[_0x84d1('0x22')](_0x39f43b)[_0x84d1('0x23')](function(_0x2f5ecb){return _0x2f5ecb;});}return null;};}function removeEntity(_0x4051f3,_0x45176f){return function(_0x554383){if(_0x554383){return _0x554383[_0x84d1('0x24')]()[_0x84d1('0x23')](function(){var _0x4bb7f2=_0x554383['get']({'plain':!![]});var _0x266a30=_0x84d1('0x25');return db[_0x84d1('0x26')][_0x84d1('0x24')]({'where':{'type':_0x266a30,'resourceId':_0x4bb7f2['id']}})[_0x84d1('0x23')](function(){return _0x554383;});})[_0x84d1('0x23')](function(){_0x4051f3['status'](0xcc)[_0x84d1('0x17')]();});}};}function handleEntityNotFound(_0x2b601b,_0xd42c13){return function(_0x2c238f){if(!_0x2c238f){_0x2b601b[_0x84d1('0x27')](0x194);}return _0x2c238f;};}function handleError(_0x58bffe,_0x7ef7b2){_0x7ef7b2=_0x7ef7b2||0x1f4;return function(_0x321c4a){logger['error'](_0x321c4a[_0x84d1('0x28')]);if(_0x321c4a[_0x84d1('0x29')]){delete _0x321c4a['name'];}_0x58bffe[_0x84d1('0x16')](_0x7ef7b2)[_0x84d1('0x2a')](_0x321c4a);};}exports[_0x84d1('0x2b')]=function(_0x43d7d3,_0x14a2ba){var _0x4c53a2={},_0x4b9d9f={},_0xbb3b4f={'count':0x0,'rows':[]};var _0x3a451a=_[_0x84d1('0x2c')](db[_0x84d1('0x2d')][_0x84d1('0x2e')],function(_0x2df000){return{'name':_0x2df000[_0x84d1('0x2f')],'type':_0x2df000[_0x84d1('0x30')][_0x84d1('0x31')]};});_0x4b9d9f['model']=_[_0x84d1('0x2c')](_0x3a451a,_0x84d1('0x29'));_0x4b9d9f[_0x84d1('0x32')]=_[_0x84d1('0x33')](_0x43d7d3[_0x84d1('0x32')]);_0x4b9d9f[_0x84d1('0x34')]=_[_0x84d1('0x35')](_0x4b9d9f[_0x84d1('0x36')],_0x4b9d9f[_0x84d1('0x32')]);_0x4c53a2[_0x84d1('0x37')]=_[_0x84d1('0x35')](_0x4b9d9f['model'],qs[_0x84d1('0x38')](_0x43d7d3[_0x84d1('0x32')][_0x84d1('0x38')]));_0x4c53a2['attributes']=_0x4c53a2[_0x84d1('0x37')][_0x84d1('0x39')]?_0x4c53a2[_0x84d1('0x37')]:_0x4b9d9f['model'];if(!_0x43d7d3['query'][_0x84d1('0x3a')](_0x84d1('0x3b'))){_0x4c53a2[_0x84d1('0x1b')]=qs['limit'](_0x43d7d3[_0x84d1('0x32')][_0x84d1('0x1b')]);_0x4c53a2[_0x84d1('0x19')]=qs[_0x84d1('0x19')](_0x43d7d3[_0x84d1('0x32')][_0x84d1('0x19')]);}_0x4c53a2['order']=qs[_0x84d1('0x3c')](_0x43d7d3[_0x84d1('0x32')][_0x84d1('0x3c')]);_0x4c53a2[_0x84d1('0x3d')]=qs[_0x84d1('0x34')](_['pick'](_0x43d7d3[_0x84d1('0x32')],_0x4b9d9f[_0x84d1('0x34')]),_0x3a451a);if(_0x43d7d3[_0x84d1('0x32')][_0x84d1('0x3e')]){_0x4c53a2[_0x84d1('0x3d')]=_[_0x84d1('0x3f')](_0x4c53a2[_0x84d1('0x3d')],{'$or':_[_0x84d1('0x2c')](_0x3a451a,function(_0x3bf7c2){if(_0x3bf7c2['type']!==_0x84d1('0x40')){var _0x3a8be0={};_0x3a8be0[_0x3bf7c2[_0x84d1('0x29')]]={'$like':'%'+_0x43d7d3['query']['filter']+'%'};return _0x3a8be0;}})});}_0x4c53a2=_[_0x84d1('0x3f')]({},_0x4c53a2,_0x43d7d3['options']);var _0x3a9b1e={'where':_0x4c53a2[_0x84d1('0x3d')]};return db[_0x84d1('0x2d')][_0x84d1('0x1c')](_0x3a9b1e)[_0x84d1('0x23')](function(_0x2c56da){_0xbb3b4f['count']=_0x2c56da;if(_0x43d7d3[_0x84d1('0x32')][_0x84d1('0x41')]){_0x4c53a2['include']=[{'all':!![]}];}return db[_0x84d1('0x2d')][_0x84d1('0x42')](_0x4c53a2);})[_0x84d1('0x23')](function(_0x4c4352){_0xbb3b4f[_0x84d1('0x43')]=_0x4c4352;return _0xbb3b4f;})[_0x84d1('0x23')](respondWithFilteredResult(_0x14a2ba,_0x4c53a2))[_0x84d1('0x44')](handleError(_0x14a2ba,null));};exports['show']=function(_0xc180be,_0x34d12e){var _0x335854={'raw':!![],'where':{'id':_0xc180be[_0x84d1('0x45')]['id']}},_0x46a7ed={};_0x46a7ed[_0x84d1('0x36')]=_[_0x84d1('0x33')](db['CmHopperAdditionalPhone']['rawAttributes']);_0x46a7ed[_0x84d1('0x32')]=_[_0x84d1('0x33')](_0xc180be[_0x84d1('0x32')]);_0x46a7ed[_0x84d1('0x34')]=_[_0x84d1('0x35')](_0x46a7ed[_0x84d1('0x36')],_0x46a7ed[_0x84d1('0x32')]);_0x335854['attributes']=_[_0x84d1('0x35')](_0x46a7ed[_0x84d1('0x36')],qs[_0x84d1('0x38')](_0xc180be[_0x84d1('0x32')][_0x84d1('0x38')]));_0x335854[_0x84d1('0x37')]=_0x335854[_0x84d1('0x37')]['length']?_0x335854[_0x84d1('0x37')]:_0x46a7ed[_0x84d1('0x36')];if(_0xc180be[_0x84d1('0x32')][_0x84d1('0x41')]){_0x335854[_0x84d1('0x46')]=[{'all':!![]}];}_0x335854=_['merge']({},_0x335854,_0xc180be['options']);return db[_0x84d1('0x2d')][_0x84d1('0x47')](_0x335854)[_0x84d1('0x23')](handleEntityNotFound(_0x34d12e,null))[_0x84d1('0x23')](respondWithResult(_0x34d12e,null))[_0x84d1('0x44')](handleError(_0x34d12e,null));};exports[_0x84d1('0x48')]=function(_0x585bc4,_0x40e96f){return db[_0x84d1('0x2d')]['create'](_0x585bc4[_0x84d1('0x49')],{})[_0x84d1('0x23')](function(_0x155b41){var _0x2a3de0=_0x585bc4[_0x84d1('0x4a')][_0x84d1('0x4b')]({'plain':!![]});if(!_0x2a3de0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2a3de0[_0x84d1('0x4c')]==='user'){var _0x2a8906=_0x155b41[_0x84d1('0x4b')]({'plain':!![]});var _0x663d03=_0x84d1('0x25');return db[_0x84d1('0x4d')]['find']({'where':{'name':_0x663d03,'userProfileId':_0x2a3de0['userProfileId']},'raw':!![]})[_0x84d1('0x23')](function(_0x278d9a){if(_0x278d9a&&_0x278d9a[_0x84d1('0x4e')]===0x0){return db[_0x84d1('0x26')][_0x84d1('0x48')]({'name':_0x2a8906[_0x84d1('0x29')],'resourceId':_0x2a8906['id'],'type':_0x278d9a['name'],'sectionId':_0x278d9a['id']},{})[_0x84d1('0x23')](function(){return _0x155b41;});}else{return _0x155b41;}})['catch'](function(_0xb84147){logger[_0x84d1('0x4f')](_0x84d1('0x50'),_0xb84147);throw _0xb84147;});}return _0x155b41;})[_0x84d1('0x23')](respondWithResult(_0x40e96f,0xc9))[_0x84d1('0x44')](handleError(_0x40e96f,null));};exports[_0x84d1('0x22')]=function(_0x181dbb,_0x4678d8){if(_0x181dbb[_0x84d1('0x49')]['id']){delete _0x181dbb[_0x84d1('0x49')]['id'];}return db[_0x84d1('0x2d')][_0x84d1('0x47')]({'where':{'id':_0x181dbb['params']['id']}})[_0x84d1('0x23')](handleEntityNotFound(_0x4678d8,null))[_0x84d1('0x23')](saveUpdates(_0x181dbb[_0x84d1('0x49')],null))['then'](respondWithResult(_0x4678d8,null))[_0x84d1('0x44')](handleError(_0x4678d8,null));};exports['destroy']=function(_0x14fcd6,_0x31d128){return db[_0x84d1('0x2d')][_0x84d1('0x47')]({'where':{'id':_0x14fcd6[_0x84d1('0x45')]['id']}})[_0x84d1('0x23')](handleEntityNotFound(_0x31d128,null))[_0x84d1('0x23')](removeEntity(_0x31d128,null))[_0x84d1('0x44')](handleError(_0x31d128,null));};
\ No newline at end of file
index 67ed162..b443898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5c9=['path','rimraf','./cmHopperAdditionalPhone.attributes','exports','cm_hopper_additional_phones','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0xc575b8,_0x4f0388){var _0x5b77aa=function(_0x32cb11){while(--_0x32cb11){_0xc575b8['push'](_0xc575b8['shift']());}};_0x5b77aa(++_0x4f0388);}(_0xe5c9,0x139));var _0x9e5c=function(_0x236cae,_0x5d0de7){_0x236cae=_0x236cae-0x0;var _0x170cdf=_0xe5c9[_0x236cae];return _0x170cdf;};'use strict';var _=require(_0x9e5c('0x0'));var util=require(_0x9e5c('0x1'));var logger=require(_0x9e5c('0x2'))(_0x9e5c('0x3'));var moment=require('moment');var BPromise=require(_0x9e5c('0x4'));var rp=require(_0x9e5c('0x5'));var fs=require('fs');var path=require(_0x9e5c('0x6'));var rimraf=require(_0x9e5c('0x7'));var config=require('../../config/environment');var attributes=require(_0x9e5c('0x8'));module[_0x9e5c('0x9')]=function(_0x131dfe,_0xf21d8b){return _0x131dfe['define']('CmHopperAdditionalPhone',attributes,{'tableName':_0x9e5c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x30a9=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x30a9,0x82));var _0x930a=function(_0x2ff176,_0xf8c5f6){_0x2ff176=_0x2ff176-0x0;var _0x3d4238=_0x30a9[_0x2ff176];return _0x3d4238;};'use strict';var _=require('lodash');var util=require(_0x930a('0x0'));var logger=require(_0x930a('0x1'))(_0x930a('0x2'));var moment=require(_0x930a('0x3'));var BPromise=require(_0x930a('0x4'));var rp=require(_0x930a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x930a('0x6'));var config=require(_0x930a('0x7'));var attributes=require(_0x930a('0x8'));module[_0x930a('0x9')]=function(_0x3550fd,_0x194971){return _0x3550fd[_0x930a('0xa')](_0x930a('0xb'),attributes,{'tableName':_0x930a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b26b4cc..867810a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43d2=['CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','CmHopper','body','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','findOne','OrderBy','ASC','countcongestionretry','countdropretry','countabandonedretry','countmachineretry','entity','dialGlobalMaxRetry','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','catch','VerifyAdditionalPhones','SwapAdditionalPhones','waitTime','duration','isNil','scheduledat','minutes','add','phone','countbusyretry','createdAt','updatedAt','sequelize','update','IncrementPreviewCounters','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x11dab7,_0x11d40b){var _0x544cb2=function(_0x42cde0){while(--_0x42cde0){_0x11dab7['push'](_0x11dab7['shift']());}};_0x544cb2(++_0x11d40b);}(_0x43d2,0x9a));var _0x243d=function(_0x1f1b10,_0x3136fd){_0x1f1b10=_0x1f1b10-0x0;var _0x3d0c2b=_0x43d2[_0x1f1b10];return _0x3d0c2b;};'use strict';var _=require(_0x243d('0x0'));var util=require(_0x243d('0x1'));var moment=require('moment');var BPromise=require(_0x243d('0x2'));var rs=require(_0x243d('0x3'));var fs=require('fs');var Redis=require(_0x243d('0x4'));var db=require(_0x243d('0x5'))['db'];var utils=require(_0x243d('0x6'));var logger=require('../../config/logger')(_0x243d('0x7'));var config=require(_0x243d('0x8'));var jayson=require(_0x243d('0x9'));var client=jayson[_0x243d('0xa')][_0x243d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x22d2a8,_0x34f59d,_0x3a5b6d){return new BPromise(function(_0x266acb,_0x7818ff){return client[_0x243d('0xc')](_0x22d2a8,_0x3a5b6d)[_0x243d('0xd')](function(_0x106a92){logger['info'](_0x243d('0xe'),_0x34f59d,_0x243d('0xf'));logger[_0x243d('0x10')](_0x243d('0x11'),_0x34f59d,_0x243d('0xf'),JSON[_0x243d('0x12')](_0x106a92));if(_0x106a92[_0x243d('0x13')]){if(_0x106a92[_0x243d('0x13')]['code']===0x1f4){logger[_0x243d('0x13')](_0x243d('0xe'),_0x34f59d,_0x106a92['error'][_0x243d('0x14')]);return _0x7818ff(_0x106a92[_0x243d('0x13')][_0x243d('0x14')]);}logger[_0x243d('0x13')](_0x243d('0xe'),_0x34f59d,_0x106a92[_0x243d('0x13')][_0x243d('0x14')]);return _0x266acb(_0x106a92[_0x243d('0x13')][_0x243d('0x14')]);}else{logger[_0x243d('0x15')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x34f59d,_0x243d('0xf'));_0x266acb(_0x106a92[_0x243d('0x16')][_0x243d('0x14')]);}})['catch'](function(_0x15e8d7){logger[_0x243d('0x13')](_0x243d('0xe'),_0x34f59d,_0x15e8d7);_0x7818ff(_0x15e8d7);});});}exports['VerifyAdditionalPhones']=function(_0x286ba3){var _0x5380b1=this;return new Promise(function(_0x16c14c,_0x37f32f){return db[_0x243d('0x17')]['findOne']({'raw':!![],'where':{'ContactId':_0x286ba3[_0x243d('0x18')]['ContactId'],'ListId':_0x286ba3[_0x243d('0x18')][_0x243d('0x19')],'VoiceQueueId':_0x286ba3[_0x243d('0x18')]['VoiceQueueId']===undefined?null:_0x286ba3[_0x243d('0x18')][_0x243d('0x1a')],'CampaignId':_0x286ba3[_0x243d('0x18')][_0x243d('0x1b')]===undefined?null:_0x286ba3['body'][_0x243d('0x1b')]}})[_0x243d('0xd')](function(_0x560652){if(_0x560652!=null){return db[_0x243d('0x1c')][_0x243d('0x1d')]({'raw':!![],'where':{'CmHopperId':_0x560652['id'],'OrderBy':{'$gt':_0x560652[_0x243d('0x1e')]}},'order':[[_0x243d('0x1e'),_0x243d('0x1f')]]})[_0x243d('0xd')](function(_0x16f68a){var _0x4adfe1=0x0;if(_0x16f68a){if(_0x16f68a['countbusyretry']+_0x16f68a[_0x243d('0x20')]+_0x16f68a['countnoanswerretry']+_0x16f68a['countnosuchnumberretry']+_0x16f68a[_0x243d('0x21')]+_0x16f68a[_0x243d('0x22')]+_0x16f68a[_0x243d('0x23')]+_0x16f68a['countagentrejectretry']<_0x286ba3[_0x243d('0x24')][_0x243d('0x25')])_0x4adfe1=0x1;_0x16c14c({'additional':_0x4adfe1});}else{return db[_0x243d('0x1c')][_0x243d('0x1d')]({'raw':!![],'where':{'CmHopperId':_0x560652['id']},'order':[['OrderBy',_0x243d('0x1f')]]})[_0x243d('0xd')](function(_0x179e83){var _0x11b705=0x0;if(_0x179e83){if(_0x179e83['countbusyretry']+_0x179e83[_0x243d('0x20')]+_0x179e83[_0x243d('0x26')]+_0x179e83[_0x243d('0x27')]+_0x179e83['countdropretry']+_0x179e83['countabandonedretry']+_0x179e83[_0x243d('0x23')]+_0x179e83[_0x243d('0x28')]<_0x286ba3[_0x243d('0x24')][_0x243d('0x25')])_0x11b705=0x1;_0x16c14c({'additional':_0x11b705});}else{_0x16c14c({'additional':0x0});}})[_0x243d('0x29')](function(_0x404246){logger[_0x243d('0x13')](_0x243d('0x2a'),_0x404246[_0x243d('0x14')]);_0x37f32f(_0x5380b1[_0x243d('0x13')](0x1f4,_0x404246['message']));});}})[_0x243d('0x29')](function(_0x37d6fe){logger[_0x243d('0x13')](_0x243d('0x2a'),_0x37d6fe[_0x243d('0x14')]);_0x37f32f(_0x5380b1[_0x243d('0x13')](0x1f4,_0x37d6fe[_0x243d('0x14')]));});}else _0x16c14c({'additional':0x0});});});};exports[_0x243d('0x2b')]=function(_0x54c67d){var _0x492b75=this;return new Promise(function(_0x1df2ac,_0x2fb708){return db[_0x243d('0x17')][_0x243d('0x1d')]({'raw':!![],'where':{'ContactId':_0x54c67d[_0x243d('0x18')]['ContactId'],'ListId':_0x54c67d['body'][_0x243d('0x19')],'VoiceQueueId':_0x54c67d[_0x243d('0x18')][_0x243d('0x1a')]===undefined?null:_0x54c67d[_0x243d('0x18')][_0x243d('0x1a')],'CampaignId':_0x54c67d[_0x243d('0x18')][_0x243d('0x1b')]===undefined?null:_0x54c67d[_0x243d('0x18')][_0x243d('0x1b')]}})[_0x243d('0xd')](function(_0x2b4747){if(_0x2b4747!=null){return db['CmHopperAdditionalPhone'][_0x243d('0x1d')]({'raw':!![],'where':{'CmHopperId':_0x2b4747['id'],'OrderBy':{'$gte':_0x2b4747[_0x243d('0x1e')]}},'order':[[_0x243d('0x1e'),_0x243d('0x1f')]]})[_0x243d('0xd')](function(_0x618be7){if(_0x618be7)return activateAdditionalPhone(_0x2b4747,_0x54c67d[_0x243d('0x18')],_0x618be7,_0x54c67d['duration'],_0x54c67d[_0x243d('0x2c')])[_0x243d('0xd')](function(_0xf62173){_0x1df2ac(_0xf62173);});else{return db['CmHopperAdditionalPhone'][_0x243d('0x1d')]({'raw':!![],'where':{'CmHopperId':_0x2b4747['id']},'order':[[_0x243d('0x1e'),'ASC']]})['then'](function(_0x2ca4ae){if(_0x2ca4ae)return activateAdditionalPhone(_0x2b4747,_0x54c67d[_0x243d('0x18')],_0x2ca4ae,_0x54c67d[_0x243d('0x2d')],_0x54c67d[_0x243d('0x2c')])['then'](function(_0x1b108d){_0x1df2ac(_0x1b108d);});else{_0x1df2ac({'id':_0x2b4747['id'],'phone':''});}})[_0x243d('0x29')](function(_0x21f658){logger[_0x243d('0x13')]('VerifyAdditionalPhones',_0x21f658[_0x243d('0x14')]);_0x2fb708(_0x492b75['error'](0x1f4,_0x21f658[_0x243d('0x14')]));});}})[_0x243d('0x29')](function(_0x58f0e4){logger[_0x243d('0x13')]('VerifyAdditionalPhones',_0x58f0e4[_0x243d('0x14')]);_0x2fb708(_0x492b75['error'](0x1f4,_0x58f0e4[_0x243d('0x14')]));});}else _0x1df2ac(0x1);});});};function activateAdditionalPhone(_0x5e7709,_0x353bf5,_0x3629d6,_0x41403c,_0x51416c){return new Promise(function(_0x351a1f,_0x33379d){var _0x1b633f;if(_[_0x243d('0x2e')](_0x3629d6[_0x243d('0x2f')])){_0x3629d6[_0x243d('0x2f')]=moment();}if(moment()>moment(_0x3629d6[_0x243d('0x2f')])){_0x1b633f=moment()['add'](_0x51416c||0x3,_0x243d('0x30'));}else{if(_0x3629d6[_0x243d('0x1e')]==0x0){_0x1b633f=moment(_0x3629d6[_0x243d('0x2f')]);}else{_0x1b633f=moment()[_0x243d('0x31')](_0x51416c||0x3,_0x243d('0x30'));}}if(_[_0x243d('0x2e')](_0x1b633f)){_0x1b633f=moment()[_0x243d('0x31')](_0x51416c||0x3,_0x243d('0x30'));}var _0x12949e={'phone':_0x5e7709[_0x243d('0x32')],'active':0x0,'OrderBy':_[_0x243d('0x2e')](_0x5e7709['OrderBy'])?0x0:_0x5e7709[_0x243d('0x1e')],'scheduledat':moment()[_0x243d('0x31')](_0x41403c||0x1,'minutes'),'countbusyretry':_0x353bf5[_0x243d('0x33')],'countcongestionretry':_0x353bf5[_0x243d('0x20')],'countnoanswerretry':_0x353bf5['countnoanswerretry'],'countnosuchnumberretry':_0x353bf5[_0x243d('0x27')],'countdropretry':_0x353bf5[_0x243d('0x21')],'countabandonedretry':_0x353bf5[_0x243d('0x22')],'countmachineretry':_0x353bf5[_0x243d('0x23')],'countagentrejectretry':_0x353bf5[_0x243d('0x28')],'createdAt':_0x353bf5[_0x243d('0x34')],'updatedAt':_0x353bf5['updatedAt']};var _0x23bef8={'CmHopperId':_0x5e7709['id'],'phone':_0x3629d6['phone'],'active':0x0,'OrderBy':_[_0x243d('0x2e')](_0x3629d6[_0x243d('0x1e')])?0x0:_0x3629d6[_0x243d('0x1e')],'scheduledat':_0x1b633f,'countbusyretry':_0x3629d6[_0x243d('0x33')],'countcongestionretry':_0x3629d6['countcongestionretry'],'countnoanswerretry':_0x3629d6['countnoanswerretry'],'countnosuchnumberretry':_0x3629d6[_0x243d('0x27')],'countdropretry':_0x3629d6['countdropretry'],'countabandonedretry':_0x3629d6[_0x243d('0x22')],'countmachineretry':_0x3629d6[_0x243d('0x23')],'countagentrejectretry':_0x3629d6[_0x243d('0x28')],'createdAt':_0x3629d6['createdAt'],'updatedAt':_0x3629d6[_0x243d('0x35')]};return db[_0x243d('0x36')]['transaction'](function(_0x231801){return db[_0x243d('0x1c')][_0x243d('0x37')](_0x12949e,{'where':{'id':_0x3629d6['id']}},{'transaction':_0x231801})[_0x243d('0xd')](function(){return db[_0x243d('0x17')][_0x243d('0x37')](_0x23bef8,{'where':{'id':_0x5e7709['id']}},{'transaction':_0x231801});});})[_0x243d('0xd')](function(_0x50a446){_0x351a1f({'id':_0x5e7709['id'],'phone':_0x3629d6[_0x243d('0x32')]});})[_0x243d('0x29')](function(_0x557dec){logger['error']('activateAdditionalPhone',_0x557dec[_0x243d('0x14')]);_0x33379d({'error':_0x557dec[_0x243d('0x14')]});});});}exports[_0x243d('0x38')]=function(_0x25b6a9){var _0x490a71=this;return new Promise(function(_0x2e438b,_0x4bab9e){return db[_0x243d('0x17')][_0x243d('0x37')](_0x25b6a9[_0x243d('0x18')]['field'],{'where':{'id':_0x25b6a9[_0x243d('0x18')]['id']}})['then'](function(_0x5ee1dd){_0x2e438b(_0x5ee1dd);})['catch'](function(_0x2dce15){logger[_0x243d('0x13')](_0x243d('0x38'),_0x2dce15['message']);_0x4bab9e(_0x490a71['error'](0x1f4,_0x2dce15[_0x243d('0x14')]));});});};
\ No newline at end of file
+var _0x612a=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','entity','dialGlobalMaxRetry','countnoanswerretry','countmachineretry','countagentrejectretry','duration','isNil','scheduledat','add','minutes','createdAt','updatedAt','sequelize','transaction','update','activateAdditionalPhone','IncrementPreviewCounters','field','lodash'];(function(_0x290201,_0x279632){var _0x3d5c08=function(_0x3d0f41){while(--_0x3d0f41){_0x290201['push'](_0x290201['shift']());}};_0x3d5c08(++_0x279632);}(_0x612a,0x1c7));var _0xa612=function(_0x16771d,_0x224c60){_0x16771d=_0x16771d-0x0;var _0x386f11=_0x612a[_0x16771d];return _0x386f11;};'use strict';var _=require(_0xa612('0x0'));var util=require(_0xa612('0x1'));var moment=require(_0xa612('0x2'));var BPromise=require(_0xa612('0x3'));var rs=require(_0xa612('0x4'));var fs=require('fs');var Redis=require(_0xa612('0x5'));var db=require(_0xa612('0x6'))['db'];var utils=require(_0xa612('0x7'));var logger=require('../../config/logger')(_0xa612('0x8'));var config=require(_0xa612('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa612('0xa')][_0xa612('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1dae12,_0xbe07ae,_0x33489a){return new BPromise(function(_0x29e69b,_0x3990f1){return client['request'](_0x1dae12,_0x33489a)[_0xa612('0xc')](function(_0x160cf1){logger['info'](_0xa612('0xd'),_0xbe07ae,_0xa612('0xe'));logger[_0xa612('0xf')](_0xa612('0x10'),_0xbe07ae,_0xa612('0xe'),JSON[_0xa612('0x11')](_0x160cf1));if(_0x160cf1[_0xa612('0x12')]){if(_0x160cf1[_0xa612('0x12')]['code']===0x1f4){logger[_0xa612('0x12')](_0xa612('0xd'),_0xbe07ae,_0x160cf1[_0xa612('0x12')][_0xa612('0x13')]);return _0x3990f1(_0x160cf1['error'][_0xa612('0x13')]);}logger[_0xa612('0x12')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0xbe07ae,_0x160cf1['error'][_0xa612('0x13')]);return _0x29e69b(_0x160cf1[_0xa612('0x12')][_0xa612('0x13')]);}else{logger[_0xa612('0x14')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0xbe07ae,_0xa612('0xe'));_0x29e69b(_0x160cf1[_0xa612('0x15')][_0xa612('0x13')]);}})[_0xa612('0x16')](function(_0x4e9ef5){logger[_0xa612('0x12')](_0xa612('0xd'),_0xbe07ae,_0x4e9ef5);_0x3990f1(_0x4e9ef5);});});}exports[_0xa612('0x17')]=function(_0xbb8763){var _0x297622=this;return new Promise(function(_0x110bdb,_0x46f329){return db[_0xa612('0x18')][_0xa612('0x19')]({'raw':!![],'where':{'ContactId':_0xbb8763[_0xa612('0x1a')][_0xa612('0x1b')],'ListId':_0xbb8763['body'][_0xa612('0x1c')],'VoiceQueueId':_0xbb8763[_0xa612('0x1a')]['VoiceQueueId']===undefined?null:_0xbb8763[_0xa612('0x1a')][_0xa612('0x1d')],'CampaignId':_0xbb8763[_0xa612('0x1a')][_0xa612('0x1e')]===undefined?null:_0xbb8763['body'][_0xa612('0x1e')]}})['then'](function(_0x5ce5c9){if(_0x5ce5c9!=null){return db[_0xa612('0x1f')][_0xa612('0x19')]({'raw':!![],'where':{'CmHopperId':_0x5ce5c9['id'],'OrderBy':{'$gt':_0x5ce5c9[_0xa612('0x20')]}},'order':[[_0xa612('0x20'),_0xa612('0x21')]]})['then'](function(_0x2714f5){var _0x58d66f=0x0;if(_0x2714f5){if(_0x2714f5[_0xa612('0x22')]+_0x2714f5[_0xa612('0x23')]+_0x2714f5['countnoanswerretry']+_0x2714f5[_0xa612('0x24')]+_0x2714f5[_0xa612('0x25')]+_0x2714f5[_0xa612('0x26')]+_0x2714f5['countmachineretry']+_0x2714f5['countagentrejectretry']<_0xbb8763[_0xa612('0x27')][_0xa612('0x28')])_0x58d66f=0x1;_0x110bdb({'additional':_0x58d66f});}else{return db['CmHopperAdditionalPhone'][_0xa612('0x19')]({'raw':!![],'where':{'CmHopperId':_0x5ce5c9['id']},'order':[[_0xa612('0x20'),_0xa612('0x21')]]})[_0xa612('0xc')](function(_0x14e9e9){var _0x34f1af=0x0;if(_0x14e9e9){if(_0x14e9e9['countbusyretry']+_0x14e9e9[_0xa612('0x23')]+_0x14e9e9[_0xa612('0x29')]+_0x14e9e9[_0xa612('0x24')]+_0x14e9e9[_0xa612('0x25')]+_0x14e9e9[_0xa612('0x26')]+_0x14e9e9[_0xa612('0x2a')]+_0x14e9e9[_0xa612('0x2b')]<_0xbb8763[_0xa612('0x27')]['dialGlobalMaxRetry'])_0x34f1af=0x1;_0x110bdb({'additional':_0x34f1af});}else{_0x110bdb({'additional':0x0});}})['catch'](function(_0x6856ad){logger[_0xa612('0x12')](_0xa612('0x17'),_0x6856ad[_0xa612('0x13')]);_0x46f329(_0x297622['error'](0x1f4,_0x6856ad[_0xa612('0x13')]));});}})[_0xa612('0x16')](function(_0x1c9f2d){logger[_0xa612('0x12')](_0xa612('0x17'),_0x1c9f2d[_0xa612('0x13')]);_0x46f329(_0x297622['error'](0x1f4,_0x1c9f2d['message']));});}else _0x110bdb({'additional':0x0});});});};exports['SwapAdditionalPhones']=function(_0x41b0ec){var _0x25a044=this;return new Promise(function(_0x2764aa,_0x3a77e4){return db[_0xa612('0x18')][_0xa612('0x19')]({'raw':!![],'where':{'ContactId':_0x41b0ec[_0xa612('0x1a')][_0xa612('0x1b')],'ListId':_0x41b0ec[_0xa612('0x1a')][_0xa612('0x1c')],'VoiceQueueId':_0x41b0ec['body']['VoiceQueueId']===undefined?null:_0x41b0ec[_0xa612('0x1a')][_0xa612('0x1d')],'CampaignId':_0x41b0ec[_0xa612('0x1a')][_0xa612('0x1e')]===undefined?null:_0x41b0ec[_0xa612('0x1a')][_0xa612('0x1e')]}})[_0xa612('0xc')](function(_0x1c8eac){if(_0x1c8eac!=null){return db[_0xa612('0x1f')][_0xa612('0x19')]({'raw':!![],'where':{'CmHopperId':_0x1c8eac['id'],'OrderBy':{'$gte':_0x1c8eac['OrderBy']}},'order':[[_0xa612('0x20'),_0xa612('0x21')]]})['then'](function(_0x2a25ed){if(_0x2a25ed)return activateAdditionalPhone(_0x1c8eac,_0x41b0ec[_0xa612('0x1a')],_0x2a25ed,_0x41b0ec['duration'],_0x41b0ec['waitTime'])[_0xa612('0xc')](function(_0x261373){_0x2764aa(_0x261373);});else{return db[_0xa612('0x1f')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x1c8eac['id']},'order':[[_0xa612('0x20'),_0xa612('0x21')]]})[_0xa612('0xc')](function(_0x395224){if(_0x395224)return activateAdditionalPhone(_0x1c8eac,_0x41b0ec['body'],_0x395224,_0x41b0ec[_0xa612('0x2c')],_0x41b0ec['waitTime'])['then'](function(_0x3b216d){_0x2764aa(_0x3b216d);});else{_0x2764aa({'id':_0x1c8eac['id'],'phone':''});}})['catch'](function(_0x31f1a8){logger[_0xa612('0x12')](_0xa612('0x17'),_0x31f1a8['message']);_0x3a77e4(_0x25a044['error'](0x1f4,_0x31f1a8[_0xa612('0x13')]));});}})['catch'](function(_0x2b69e5){logger[_0xa612('0x12')](_0xa612('0x17'),_0x2b69e5[_0xa612('0x13')]);_0x3a77e4(_0x25a044[_0xa612('0x12')](0x1f4,_0x2b69e5[_0xa612('0x13')]));});}else _0x2764aa(0x1);});});};function activateAdditionalPhone(_0x10af81,_0x39abcd,_0x9877da,_0x5e9df9,_0x24675d){return new Promise(function(_0x10ea32,_0x1653b1){var _0x237e81;if(_[_0xa612('0x2d')](_0x9877da[_0xa612('0x2e')])){_0x9877da[_0xa612('0x2e')]=moment();}if(moment()>moment(_0x9877da['scheduledat'])){_0x237e81=moment()[_0xa612('0x2f')](_0x24675d||0x3,_0xa612('0x30'));}else{if(_0x9877da[_0xa612('0x20')]==0x0){_0x237e81=moment(_0x9877da['scheduledat']);}else{_0x237e81=moment()[_0xa612('0x2f')](_0x24675d||0x3,_0xa612('0x30'));}}if(_[_0xa612('0x2d')](_0x237e81)){_0x237e81=moment()[_0xa612('0x2f')](_0x24675d||0x3,'minutes');}var _0x530dc6={'phone':_0x10af81['phone'],'active':0x0,'OrderBy':_['isNil'](_0x10af81[_0xa612('0x20')])?0x0:_0x10af81[_0xa612('0x20')],'scheduledat':moment()[_0xa612('0x2f')](_0x5e9df9||0x1,'minutes'),'countbusyretry':_0x39abcd['countbusyretry'],'countcongestionretry':_0x39abcd[_0xa612('0x23')],'countnoanswerretry':_0x39abcd['countnoanswerretry'],'countnosuchnumberretry':_0x39abcd[_0xa612('0x24')],'countdropretry':_0x39abcd[_0xa612('0x25')],'countabandonedretry':_0x39abcd[_0xa612('0x26')],'countmachineretry':_0x39abcd[_0xa612('0x2a')],'countagentrejectretry':_0x39abcd[_0xa612('0x2b')],'createdAt':_0x39abcd[_0xa612('0x31')],'updatedAt':_0x39abcd[_0xa612('0x32')]};var _0x1d6352={'CmHopperId':_0x10af81['id'],'phone':_0x9877da['phone'],'active':0x0,'OrderBy':_[_0xa612('0x2d')](_0x9877da[_0xa612('0x20')])?0x0:_0x9877da[_0xa612('0x20')],'scheduledat':_0x237e81,'countbusyretry':_0x9877da[_0xa612('0x22')],'countcongestionretry':_0x9877da[_0xa612('0x23')],'countnoanswerretry':_0x9877da['countnoanswerretry'],'countnosuchnumberretry':_0x9877da[_0xa612('0x24')],'countdropretry':_0x9877da[_0xa612('0x25')],'countabandonedretry':_0x9877da[_0xa612('0x26')],'countmachineretry':_0x9877da[_0xa612('0x2a')],'countagentrejectretry':_0x9877da[_0xa612('0x2b')],'createdAt':_0x9877da[_0xa612('0x31')],'updatedAt':_0x9877da[_0xa612('0x32')]};return db[_0xa612('0x33')][_0xa612('0x34')](function(_0x34d229){return db[_0xa612('0x1f')][_0xa612('0x35')](_0x530dc6,{'where':{'id':_0x9877da['id']}},{'transaction':_0x34d229})[_0xa612('0xc')](function(){return db[_0xa612('0x18')]['update'](_0x1d6352,{'where':{'id':_0x10af81['id']}},{'transaction':_0x34d229});});})[_0xa612('0xc')](function(_0x4dff7d){_0x10ea32({'id':_0x10af81['id'],'phone':_0x9877da['phone']});})[_0xa612('0x16')](function(_0x231a2a){logger[_0xa612('0x12')](_0xa612('0x36'),_0x231a2a['message']);_0x1653b1({'error':_0x231a2a['message']});});});}exports[_0xa612('0x37')]=function(_0x4766f6){var _0xc8aa91=this;return new Promise(function(_0x1afec6,_0x31ca32){return db[_0xa612('0x18')][_0xa612('0x35')](_0x4766f6[_0xa612('0x1a')][_0xa612('0x38')],{'where':{'id':_0x4766f6[_0xa612('0x1a')]['id']}})[_0xa612('0xc')](function(_0x78f9a){_0x1afec6(_0x78f9a);})[_0xa612('0x16')](function(_0x5bd687){logger[_0xa612('0x12')](_0xa612('0x37'),_0x5bd687[_0xa612('0x13')]);_0x31ca32(_0xc8aa91[_0xa612('0x12')](0x1f4,_0x5bd687[_0xa612('0x13')]));});});};
\ No newline at end of file
index 7e4bc4f..84561e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc794=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports','util','express','Router'];(function(_0x133d70,_0x419510){var _0x44e6dc=function(_0x2363c4){while(--_0x2363c4){_0x133d70['push'](_0x133d70['shift']());}};_0x44e6dc(++_0x419510);}(_0xc794,0x95));var _0x4c79=function(_0x3cf62f,_0x1933cf){_0x3cf62f=_0x3cf62f-0x0;var _0x1148bf=_0xc794[_0x3cf62f];return _0x1148bf;};'use strict';var multer=require('multer');var util=require(_0x4c79('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4c79('0x1'));var router=express[_0x4c79('0x2')]();var fs_extra=require(_0x4c79('0x3'));var auth=require(_0x4c79('0x4'));var interaction=require(_0x4c79('0x5'));var config=require(_0x4c79('0x6'));var controller=require(_0x4c79('0x7'));router[_0x4c79('0x8')]('/',auth[_0x4c79('0x9')](),controller[_0x4c79('0xa')]);router[_0x4c79('0x8')](_0x4c79('0xb'),auth[_0x4c79('0x9')](),controller[_0x4c79('0xc')]);router[_0x4c79('0xd')]('/',auth[_0x4c79('0x9')](),controller['create']);router[_0x4c79('0xe')]('/:id',auth[_0x4c79('0x9')](),controller[_0x4c79('0xf')]);router[_0x4c79('0x10')](_0x4c79('0xb'),auth['isAuthenticated'](),controller[_0x4c79('0x11')]);module[_0x4c79('0x12')]=router;
\ No newline at end of file
+var _0x5a9a=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','/:id','isAuthenticated','create','put','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x545cf2,_0x1c099e){var _0x1f1462=function(_0x11149d){while(--_0x11149d){_0x545cf2['push'](_0x545cf2['shift']());}};_0x1f1462(++_0x1c099e);}(_0x5a9a,0x1ac));var _0xa5a9=function(_0x42780f,_0x536fc9){_0x42780f=_0x42780f-0x0;var _0x4d7441=_0x5a9a[_0x42780f];return _0x4d7441;};'use strict';var multer=require(_0xa5a9('0x0'));var util=require(_0xa5a9('0x1'));var path=require(_0xa5a9('0x2'));var timeout=require(_0xa5a9('0x3'));var express=require(_0xa5a9('0x4'));var router=express['Router']();var fs_extra=require(_0xa5a9('0x5'));var auth=require(_0xa5a9('0x6'));var interaction=require(_0xa5a9('0x7'));var config=require(_0xa5a9('0x8'));var controller=require(_0xa5a9('0x9'));router[_0xa5a9('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa5a9('0xa')](_0xa5a9('0xb'),auth[_0xa5a9('0xc')](),controller['show']);router['post']('/',auth[_0xa5a9('0xc')](),controller[_0xa5a9('0xd')]);router[_0xa5a9('0xe')](_0xa5a9('0xb'),auth[_0xa5a9('0xc')](),controller['update']);router[_0xa5a9('0xf')](_0xa5a9('0xb'),auth['isAuthenticated'](),controller[_0xa5a9('0x10')]);module[_0xa5a9('0x11')]=router;
\ No newline at end of file
index e5f8b27..c1c5183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af9=['moment','sequelize','INTEGER','contactListQueue'];(function(_0x555fc9,_0x431d34){var _0x5d3910=function(_0x27a1a3){while(--_0x27a1a3){_0x555fc9['push'](_0x555fc9['shift']());}};_0x5d3910(++_0x431d34);}(_0x4af9,0x12c));var _0x94af=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x4af9[_0x397e5f];return _0x5302b8;};'use strict';var moment=require(_0x94af('0x0'));var Sequelize=require(_0x94af('0x1'));module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x94af('0x2')],'unique':_0x94af('0x3')},'ListId':{'type':Sequelize[_0x94af('0x2')],'unique':_0x94af('0x3')},'VoiceQueueId':{'type':Sequelize[_0x94af('0x2')],'unique':_0x94af('0x3')}};
\ No newline at end of file
+var _0x757c=['contactListQueue','moment','sequelize','STRING','INTEGER'];(function(_0x3d1996,_0x1f08f0){var _0x550afd=function(_0xb3b511){while(--_0xb3b511){_0x3d1996['push'](_0x3d1996['shift']());}};_0x550afd(++_0x1f08f0);}(_0x757c,0xc9));var _0xc757=function(_0x9b49d8,_0xb6865e){_0x9b49d8=_0x9b49d8-0x0;var _0x160a9a=_0x757c[_0x9b49d8];return _0x160a9a;};'use strict';var moment=require(_0xc757('0x0'));var Sequelize=require(_0xc757('0x1'));module['exports']={'phone':{'type':Sequelize[_0xc757('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xc757('0x3')],'unique':_0xc757('0x4')},'ListId':{'type':Sequelize[_0xc757('0x3')],'unique':_0xc757('0x4')},'VoiceQueueId':{'type':Sequelize[_0xc757('0x3')],'unique':_0xc757('0x4')}};
\ No newline at end of file
index 1d0bf62..9d5f0c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28ce=['map','CmHopperBlack','key','keys','query','filters','intersection','model','fields','attributes','length','order','sort','pick','filter','where','merge','type','options','includeAll','findAll','catch','show','rawAttributes','include','find','body','params','describe','eml-format','zip-dir','request-promise','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','then','stack','name','send'];(function(_0x6f27a5,_0x487389){var _0x4e3c04=function(_0x2b326e){while(--_0x2b326e){_0x6f27a5['push'](_0x6f27a5['shift']());}};_0x4e3c04(++_0x487389);}(_0x28ce,0xf2));var _0xe28c=function(_0x156142,_0x4529e8){_0x156142=_0x156142-0x0;var _0x333a80=_0x28ce[_0x156142];return _0x333a80;};'use strict';var emlformat=require(_0xe28c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe28c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe28c('0x2'));var moment=require('moment');var BPromise=require(_0xe28c('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe28c('0x4'));var sox=require(_0xe28c('0x5'));var csv=require(_0xe28c('0x6'));var ejs=require(_0xe28c('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe28c('0x8'));var squel=require(_0xe28c('0x9'));var crypto=require(_0xe28c('0xa'));var jsforce=require(_0xe28c('0xb'));var deskjs=require(_0xe28c('0xc'));var toCsv=require(_0xe28c('0x6'));var querystring=require(_0xe28c('0xd'));var Papa=require('papaparse');var Redis=require(_0xe28c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe28c('0xf'));var as=require(_0xe28c('0x10'));var hardwareService=require(_0xe28c('0x11'));var logger=require(_0xe28c('0x12'))(_0xe28c('0x13'));var utils=require(_0xe28c('0x14'));var config=require(_0xe28c('0x15'));var licenseUtil=require(_0xe28c('0x16'));var db=require(_0xe28c('0x17'))['db'];function respondWithStatusCode(_0x465960,_0x5c7a9b){_0x5c7a9b=_0x5c7a9b||0xcc;return function(_0x326d76){if(_0x326d76){return _0x465960[_0xe28c('0x18')](_0x5c7a9b);}return _0x465960[_0xe28c('0x19')](_0x5c7a9b)[_0xe28c('0x1a')]();};}function respondWithResult(_0x2c627f,_0x190617){_0x190617=_0x190617||0xc8;return function(_0x38f490){if(_0x38f490){return _0x2c627f[_0xe28c('0x19')](_0x190617)[_0xe28c('0x1b')](_0x38f490);}};}function respondWithFilteredResult(_0xad5124,_0x2fc669){return function(_0x3ec326){if(_0x3ec326){var _0x2d2d1c=typeof _0x2fc669[_0xe28c('0x1c')]==='undefined'&&typeof _0x2fc669[_0xe28c('0x1d')]===_0xe28c('0x1e');var _0x51a9e5=_0x3ec326[_0xe28c('0x1f')];var _0xa39892=_0x2d2d1c?0x0:_0x2fc669[_0xe28c('0x1c')];var _0x5662fb=_0x2d2d1c?_0x3ec326['count']:_0x2fc669[_0xe28c('0x1c')]+_0x2fc669[_0xe28c('0x1d')];var _0x407172;if(_0x5662fb>=_0x51a9e5){_0x5662fb=_0x51a9e5;_0x407172=0xc8;}else{_0x407172=0xce;}_0xad5124[_0xe28c('0x19')](_0x407172);return _0xad5124[_0xe28c('0x20')](_0xe28c('0x21'),_0xa39892+'-'+_0x5662fb+'/'+_0x51a9e5)[_0xe28c('0x1b')](_0x3ec326);}return null;};}function patchUpdates(_0x3656df){return function(_0x2f0539){try{jsonpatch['apply'](_0x2f0539,_0x3656df,!![]);}catch(_0xfe2f71){return BPromise[_0xe28c('0x22')](_0xfe2f71);}return _0x2f0539[_0xe28c('0x23')]();};}function saveUpdates(_0x5784a9,_0x9194e7){return function(_0x4cd8da){if(_0x4cd8da){return _0x4cd8da[_0xe28c('0x24')](_0x5784a9)['then'](function(_0x56eac3){return _0x56eac3;});}return null;};}function removeEntity(_0x507ec1,_0x36bcea){return function(_0x3c97ff){if(_0x3c97ff){return _0x3c97ff[_0xe28c('0x25')]()[_0xe28c('0x26')](function(){_0x507ec1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x19765f,_0x3bbdd1){return function(_0x156ee9){if(!_0x156ee9){_0x19765f[_0xe28c('0x18')](0x194);}return _0x156ee9;};}function handleError(_0x49db06,_0x279e6a){_0x279e6a=_0x279e6a||0x1f4;return function(_0x12061a){logger['error'](_0x12061a[_0xe28c('0x27')]);if(_0x12061a[_0xe28c('0x28')]){delete _0x12061a['name'];}_0x49db06['status'](_0x279e6a)[_0xe28c('0x29')](_0x12061a);};}exports['index']=function(_0xd6c957,_0x3288eb){var _0x1ae7aa={},_0x33834c={},_0x2652bd={'count':0x0,'rows':[]};var _0x299b84=_[_0xe28c('0x2a')](db[_0xe28c('0x2b')]['rawAttributes'],function(_0xa3b22b){return{'name':_0xa3b22b['fieldName'],'type':_0xa3b22b['type'][_0xe28c('0x2c')]};});_0x33834c['model']=_[_0xe28c('0x2a')](_0x299b84,_0xe28c('0x28'));_0x33834c['query']=_[_0xe28c('0x2d')](_0xd6c957[_0xe28c('0x2e')]);_0x33834c[_0xe28c('0x2f')]=_[_0xe28c('0x30')](_0x33834c['model'],_0x33834c[_0xe28c('0x2e')]);_0x1ae7aa['attributes']=_[_0xe28c('0x30')](_0x33834c[_0xe28c('0x31')],qs[_0xe28c('0x32')](_0xd6c957['query']['fields']));_0x1ae7aa['attributes']=_0x1ae7aa[_0xe28c('0x33')][_0xe28c('0x34')]?_0x1ae7aa[_0xe28c('0x33')]:_0x33834c[_0xe28c('0x31')];if(!_0xd6c957[_0xe28c('0x2e')]['hasOwnProperty']('nolimit')){_0x1ae7aa[_0xe28c('0x1d')]=qs['limit'](_0xd6c957[_0xe28c('0x2e')][_0xe28c('0x1d')]);_0x1ae7aa[_0xe28c('0x1c')]=qs['offset'](_0xd6c957[_0xe28c('0x2e')][_0xe28c('0x1c')]);}_0x1ae7aa[_0xe28c('0x35')]=qs[_0xe28c('0x36')](_0xd6c957[_0xe28c('0x2e')]['sort']);_0x1ae7aa['where']=qs[_0xe28c('0x2f')](_[_0xe28c('0x37')](_0xd6c957[_0xe28c('0x2e')],_0x33834c['filters']),_0x299b84);if(_0xd6c957[_0xe28c('0x2e')][_0xe28c('0x38')]){_0x1ae7aa[_0xe28c('0x39')]=_[_0xe28c('0x3a')](_0x1ae7aa[_0xe28c('0x39')],{'$or':_[_0xe28c('0x2a')](_0x299b84,function(_0x1f18fa){if(_0x1f18fa[_0xe28c('0x3b')]!=='VIRTUAL'){var _0xcd08f6={};_0xcd08f6[_0x1f18fa['name']]={'$like':'%'+_0xd6c957[_0xe28c('0x2e')]['filter']+'%'};return _0xcd08f6;}})});}_0x1ae7aa=_[_0xe28c('0x3a')]({},_0x1ae7aa,_0xd6c957[_0xe28c('0x3c')]);var _0x2b4368={'where':_0x1ae7aa[_0xe28c('0x39')]};return db['CmHopperBlack'][_0xe28c('0x1f')](_0x2b4368)[_0xe28c('0x26')](function(_0x472166){_0x2652bd['count']=_0x472166;if(_0xd6c957[_0xe28c('0x2e')][_0xe28c('0x3d')]){_0x1ae7aa['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0xe28c('0x3e')](_0x1ae7aa);})['then'](function(_0x284e7c){_0x2652bd['rows']=_0x284e7c;return _0x2652bd;})[_0xe28c('0x26')](respondWithFilteredResult(_0x3288eb,_0x1ae7aa))[_0xe28c('0x3f')](handleError(_0x3288eb,null));};exports[_0xe28c('0x40')]=function(_0x20ae54,_0x36c27b){var _0x95bcdb={'raw':!![],'where':{'id':_0x20ae54['params']['id']}},_0x5a894f={};_0x5a894f[_0xe28c('0x31')]=_[_0xe28c('0x2d')](db[_0xe28c('0x2b')][_0xe28c('0x41')]);_0x5a894f[_0xe28c('0x2e')]=_[_0xe28c('0x2d')](_0x20ae54[_0xe28c('0x2e')]);_0x5a894f[_0xe28c('0x2f')]=_[_0xe28c('0x30')](_0x5a894f[_0xe28c('0x31')],_0x5a894f[_0xe28c('0x2e')]);_0x95bcdb[_0xe28c('0x33')]=_[_0xe28c('0x30')](_0x5a894f[_0xe28c('0x31')],qs[_0xe28c('0x32')](_0x20ae54[_0xe28c('0x2e')]['fields']));_0x95bcdb[_0xe28c('0x33')]=_0x95bcdb[_0xe28c('0x33')]['length']?_0x95bcdb[_0xe28c('0x33')]:_0x5a894f[_0xe28c('0x31')];if(_0x20ae54[_0xe28c('0x2e')][_0xe28c('0x3d')]){_0x95bcdb[_0xe28c('0x42')]=[{'all':!![]}];}_0x95bcdb=_[_0xe28c('0x3a')]({},_0x95bcdb,_0x20ae54[_0xe28c('0x3c')]);return db[_0xe28c('0x2b')][_0xe28c('0x43')](_0x95bcdb)['then'](handleEntityNotFound(_0x36c27b,null))[_0xe28c('0x26')](respondWithResult(_0x36c27b,null))[_0xe28c('0x3f')](handleError(_0x36c27b,null));};exports['update']=function(_0x2ea479,_0xce352){if(_0x2ea479[_0xe28c('0x44')]['id']){delete _0x2ea479[_0xe28c('0x44')]['id'];}return db[_0xe28c('0x2b')]['find']({'where':{'id':_0x2ea479[_0xe28c('0x45')]['id']}})[_0xe28c('0x26')](handleEntityNotFound(_0xce352,null))[_0xe28c('0x26')](saveUpdates(_0x2ea479['body'],null))[_0xe28c('0x26')](respondWithResult(_0xce352,null))[_0xe28c('0x3f')](handleError(_0xce352,null));};exports[_0xe28c('0x25')]=function(_0x4ae37c,_0x1b5d16){return db[_0xe28c('0x2b')]['find']({'where':{'id':_0x4ae37c[_0xe28c('0x45')]['id']}})['then'](handleEntityNotFound(_0x1b5d16,null))['then'](removeEntity(_0x1b5d16,null))['catch'](handleError(_0x1b5d16,null));};exports[_0xe28c('0x46')]=function(_0x581bf4,_0x2dd3db){return db['CmHopperBlack'][_0xe28c('0x46')]()[_0xe28c('0x26')](respondWithResult(_0x2dd3db,null))[_0xe28c('0x3f')](handleError(_0x2dd3db,null));};
\ No newline at end of file
+var _0x46ef=['model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','describe','eml-format','fast-json-patch','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','name','send','index','map','CmHopperBlack','rawAttributes','key','query','keys','filters','intersection'];(function(_0x5b56d7,_0x169cb6){var _0x20e2bb=function(_0x387e5c){while(--_0x387e5c){_0x5b56d7['push'](_0x5b56d7['shift']());}};_0x20e2bb(++_0x169cb6);}(_0x46ef,0xaa));var _0xf46e=function(_0x148eac,_0x1ace09){_0x148eac=_0x148eac-0x0;var _0x7eac7c=_0x46ef[_0x148eac];return _0x7eac7c;};'use strict';var emlformat=require(_0xf46e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf46e('0x1'));var rp=require('request-promise');var moment=require(_0xf46e('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf46e('0x3'));var path=require(_0xf46e('0x4'));var sox=require(_0xf46e('0x5'));var csv=require(_0xf46e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf46e('0x7'));var _=require(_0xf46e('0x8'));var squel=require(_0xf46e('0x9'));var crypto=require(_0xf46e('0xa'));var jsforce=require(_0xf46e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf46e('0x6'));var querystring=require(_0xf46e('0xc'));var Papa=require(_0xf46e('0xd'));var Redis=require(_0xf46e('0xe'));var authService=require(_0xf46e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf46e('0x10'));var hardwareService=require(_0xf46e('0x11'));var logger=require('../../config/logger')(_0xf46e('0x12'));var utils=require(_0xf46e('0x13'));var config=require(_0xf46e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf46e('0x15'))['db'];function respondWithStatusCode(_0x211804,_0x30ee06){_0x30ee06=_0x30ee06||0xcc;return function(_0x3a52a1){if(_0x3a52a1){return _0x211804[_0xf46e('0x16')](_0x30ee06);}return _0x211804[_0xf46e('0x17')](_0x30ee06)[_0xf46e('0x18')]();};}function respondWithResult(_0x29036a,_0x2c6405){_0x2c6405=_0x2c6405||0xc8;return function(_0x3f5cbd){if(_0x3f5cbd){return _0x29036a[_0xf46e('0x17')](_0x2c6405)[_0xf46e('0x19')](_0x3f5cbd);}};}function respondWithFilteredResult(_0x407df3,_0x5149ea){return function(_0x1e7e9f){if(_0x1e7e9f){var _0x18ce96=typeof _0x5149ea[_0xf46e('0x1a')]===_0xf46e('0x1b')&&typeof _0x5149ea[_0xf46e('0x1c')]===_0xf46e('0x1b');var _0x5675d5=_0x1e7e9f[_0xf46e('0x1d')];var _0x2df5f8=_0x18ce96?0x0:_0x5149ea[_0xf46e('0x1a')];var _0x3fd6b0=_0x18ce96?_0x1e7e9f[_0xf46e('0x1d')]:_0x5149ea[_0xf46e('0x1a')]+_0x5149ea[_0xf46e('0x1c')];var _0x4fbc2c;if(_0x3fd6b0>=_0x5675d5){_0x3fd6b0=_0x5675d5;_0x4fbc2c=0xc8;}else{_0x4fbc2c=0xce;}_0x407df3[_0xf46e('0x17')](_0x4fbc2c);return _0x407df3[_0xf46e('0x1e')](_0xf46e('0x1f'),_0x2df5f8+'-'+_0x3fd6b0+'/'+_0x5675d5)[_0xf46e('0x19')](_0x1e7e9f);}return null;};}function patchUpdates(_0x4ca2e4){return function(_0x4660e4){try{jsonpatch['apply'](_0x4660e4,_0x4ca2e4,!![]);}catch(_0x2f3840){return BPromise[_0xf46e('0x20')](_0x2f3840);}return _0x4660e4[_0xf46e('0x21')]();};}function saveUpdates(_0x1544ee,_0x5bee97){return function(_0x589987){if(_0x589987){return _0x589987[_0xf46e('0x22')](_0x1544ee)[_0xf46e('0x23')](function(_0xaee1a3){return _0xaee1a3;});}return null;};}function removeEntity(_0x1f6a61,_0x3cd2e1){return function(_0x415f94){if(_0x415f94){return _0x415f94[_0xf46e('0x24')]()[_0xf46e('0x23')](function(){_0x1f6a61[_0xf46e('0x17')](0xcc)[_0xf46e('0x18')]();});}};}function handleEntityNotFound(_0x165ebf,_0x220ffb){return function(_0x587b0c){if(!_0x587b0c){_0x165ebf['sendStatus'](0x194);}return _0x587b0c;};}function handleError(_0x195ab6,_0x38f146){_0x38f146=_0x38f146||0x1f4;return function(_0x294a62){logger[_0xf46e('0x25')](_0x294a62['stack']);if(_0x294a62[_0xf46e('0x26')]){delete _0x294a62[_0xf46e('0x26')];}_0x195ab6[_0xf46e('0x17')](_0x38f146)[_0xf46e('0x27')](_0x294a62);};}exports[_0xf46e('0x28')]=function(_0x481e82,_0x5e7d0c){var _0xafd070={},_0x1ed6e8={},_0x533323={'count':0x0,'rows':[]};var _0x36a53a=_[_0xf46e('0x29')](db[_0xf46e('0x2a')][_0xf46e('0x2b')],function(_0x56e1cf){return{'name':_0x56e1cf['fieldName'],'type':_0x56e1cf['type'][_0xf46e('0x2c')]};});_0x1ed6e8['model']=_['map'](_0x36a53a,_0xf46e('0x26'));_0x1ed6e8[_0xf46e('0x2d')]=_[_0xf46e('0x2e')](_0x481e82[_0xf46e('0x2d')]);_0x1ed6e8[_0xf46e('0x2f')]=_[_0xf46e('0x30')](_0x1ed6e8[_0xf46e('0x31')],_0x1ed6e8['query']);_0xafd070[_0xf46e('0x32')]=_[_0xf46e('0x30')](_0x1ed6e8['model'],qs[_0xf46e('0x33')](_0x481e82[_0xf46e('0x2d')]['fields']));_0xafd070[_0xf46e('0x32')]=_0xafd070[_0xf46e('0x32')][_0xf46e('0x34')]?_0xafd070[_0xf46e('0x32')]:_0x1ed6e8[_0xf46e('0x31')];if(!_0x481e82['query'][_0xf46e('0x35')](_0xf46e('0x36'))){_0xafd070[_0xf46e('0x1c')]=qs[_0xf46e('0x1c')](_0x481e82['query'][_0xf46e('0x1c')]);_0xafd070[_0xf46e('0x1a')]=qs[_0xf46e('0x1a')](_0x481e82[_0xf46e('0x2d')]['offset']);}_0xafd070[_0xf46e('0x37')]=qs['sort'](_0x481e82[_0xf46e('0x2d')][_0xf46e('0x38')]);_0xafd070['where']=qs[_0xf46e('0x2f')](_[_0xf46e('0x39')](_0x481e82[_0xf46e('0x2d')],_0x1ed6e8[_0xf46e('0x2f')]),_0x36a53a);if(_0x481e82['query'][_0xf46e('0x3a')]){_0xafd070[_0xf46e('0x3b')]=_[_0xf46e('0x3c')](_0xafd070['where'],{'$or':_[_0xf46e('0x29')](_0x36a53a,function(_0x5efcc2){if(_0x5efcc2['type']!==_0xf46e('0x3d')){var _0x544a91={};_0x544a91[_0x5efcc2[_0xf46e('0x26')]]={'$like':'%'+_0x481e82[_0xf46e('0x2d')][_0xf46e('0x3a')]+'%'};return _0x544a91;}})});}_0xafd070=_['merge']({},_0xafd070,_0x481e82[_0xf46e('0x3e')]);var _0x53a0db={'where':_0xafd070[_0xf46e('0x3b')]};return db['CmHopperBlack']['count'](_0x53a0db)[_0xf46e('0x23')](function(_0xb2cc89){_0x533323['count']=_0xb2cc89;if(_0x481e82[_0xf46e('0x2d')][_0xf46e('0x3f')]){_0xafd070[_0xf46e('0x40')]=[{'all':!![]}];}return db[_0xf46e('0x2a')][_0xf46e('0x41')](_0xafd070);})[_0xf46e('0x23')](function(_0x2d837c){_0x533323[_0xf46e('0x42')]=_0x2d837c;return _0x533323;})[_0xf46e('0x23')](respondWithFilteredResult(_0x5e7d0c,_0xafd070))[_0xf46e('0x43')](handleError(_0x5e7d0c,null));};exports[_0xf46e('0x44')]=function(_0x4804ba,_0x4ac1e8){var _0x5d06c0={'raw':!![],'where':{'id':_0x4804ba[_0xf46e('0x45')]['id']}},_0x465445={};_0x465445[_0xf46e('0x31')]=_['keys'](db[_0xf46e('0x2a')]['rawAttributes']);_0x465445[_0xf46e('0x2d')]=_[_0xf46e('0x2e')](_0x4804ba[_0xf46e('0x2d')]);_0x465445['filters']=_[_0xf46e('0x30')](_0x465445[_0xf46e('0x31')],_0x465445['query']);_0x5d06c0[_0xf46e('0x32')]=_[_0xf46e('0x30')](_0x465445[_0xf46e('0x31')],qs[_0xf46e('0x33')](_0x4804ba['query'][_0xf46e('0x33')]));_0x5d06c0['attributes']=_0x5d06c0['attributes']['length']?_0x5d06c0[_0xf46e('0x32')]:_0x465445['model'];if(_0x4804ba[_0xf46e('0x2d')][_0xf46e('0x3f')]){_0x5d06c0['include']=[{'all':!![]}];}_0x5d06c0=_[_0xf46e('0x3c')]({},_0x5d06c0,_0x4804ba[_0xf46e('0x3e')]);return db['CmHopperBlack'][_0xf46e('0x46')](_0x5d06c0)['then'](handleEntityNotFound(_0x4ac1e8,null))[_0xf46e('0x23')](respondWithResult(_0x4ac1e8,null))[_0xf46e('0x43')](handleError(_0x4ac1e8,null));};exports['update']=function(_0x42b651,_0x5480b2){if(_0x42b651['body']['id']){delete _0x42b651['body']['id'];}return db['CmHopperBlack'][_0xf46e('0x46')]({'where':{'id':_0x42b651[_0xf46e('0x45')]['id']}})[_0xf46e('0x23')](handleEntityNotFound(_0x5480b2,null))[_0xf46e('0x23')](saveUpdates(_0x42b651[_0xf46e('0x47')],null))['then'](respondWithResult(_0x5480b2,null))[_0xf46e('0x43')](handleError(_0x5480b2,null));};exports[_0xf46e('0x24')]=function(_0x3e6842,_0x2c53ed){return db[_0xf46e('0x2a')][_0xf46e('0x46')]({'where':{'id':_0x3e6842['params']['id']}})[_0xf46e('0x23')](handleEntityNotFound(_0x2c53ed,null))[_0xf46e('0x23')](removeEntity(_0x2c53ed,null))['catch'](handleError(_0x2c53ed,null));};exports[_0xf46e('0x48')]=function(_0x42f811,_0x503a40){return db[_0xf46e('0x2a')]['describe']()[_0xf46e('0x23')](respondWithResult(_0x503a40,null))[_0xf46e('0x43')](handleError(_0x503a40,null));};
\ No newline at end of file
index 35bb03f..ca2745d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb10=['request-promise','path','../../config/environment','./cmHopperBlack.attributes','exports','CmHopperBlack','cm_hopper_black','../../config/logger','api','moment'];(function(_0x83979e,_0x57ea45){var _0x28b0aa=function(_0x202fa1){while(--_0x202fa1){_0x83979e['push'](_0x83979e['shift']());}};_0x28b0aa(++_0x57ea45);}(_0xcb10,0x89));var _0x0cb1=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xcb10[_0x1cc8fe];return _0x230054;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0cb1('0x0'))(_0x0cb1('0x1'));var moment=require(_0x0cb1('0x2'));var BPromise=require('bluebird');var rp=require(_0x0cb1('0x3'));var fs=require('fs');var path=require(_0x0cb1('0x4'));var rimraf=require('rimraf');var config=require(_0x0cb1('0x5'));var attributes=require(_0x0cb1('0x6'));module[_0x0cb1('0x7')]=function(_0x16f4ce,_0x1dd92b){return _0x16f4ce['define'](_0x0cb1('0x8'),attributes,{'tableName':_0x0cb1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x136a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CmHopperBlack','cm_hopper_black','lodash','util','api'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x136a,0x7f));var _0xa136=function(_0x443038,_0x3da9ae){_0x443038=_0x443038-0x0;var _0xeba89c=_0x136a[_0x443038];return _0xeba89c;};'use strict';var _=require(_0xa136('0x0'));var util=require(_0xa136('0x1'));var logger=require('../../config/logger')(_0xa136('0x2'));var moment=require(_0xa136('0x3'));var BPromise=require(_0xa136('0x4'));var rp=require(_0xa136('0x5'));var fs=require('fs');var path=require(_0xa136('0x6'));var rimraf=require(_0xa136('0x7'));var config=require(_0xa136('0x8'));var attributes=require('./cmHopperBlack.attributes');module[_0xa136('0x9')]=function(_0xeb1d67,_0x5c8d96){return _0xeb1d67[_0xa136('0xa')](_0xa136('0xb'),attributes,{'tableName':_0xa136('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 13dfd01..8a231b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd210=['then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCmHopperBlack','options','raw','where','attributes','limit','include','map','model','UpdateCmHopperBlack','CmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3fd289,_0x1f89bf){var _0x14da8e=function(_0x31da4f){while(--_0x31da4f){_0x3fd289['push'](_0x3fd289['shift']());}};_0x14da8e(++_0x1f89bf);}(_0xd210,0x1bd));var _0x0d21=function(_0x4f4c2a,_0x5f5a28){_0x4f4c2a=_0x4f4c2a-0x0;var _0xd15be6=_0xd210[_0x4f4c2a];return _0xd15be6;};'use strict';var _=require(_0x0d21('0x0'));var util=require(_0x0d21('0x1'));var moment=require(_0x0d21('0x2'));var BPromise=require(_0x0d21('0x3'));var rs=require(_0x0d21('0x4'));var fs=require('fs');var Redis=require(_0x0d21('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0d21('0x6'))(_0x0d21('0x7'));var config=require(_0x0d21('0x8'));var jayson=require(_0x0d21('0x9'));var client=jayson['client'][_0x0d21('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5eadfa,_0xd40d8e,_0x43745a){return new BPromise(function(_0x228c93,_0x2c8b0e){return client['request'](_0x5eadfa,_0x43745a)[_0x0d21('0xb')](function(_0x554499){logger[_0x0d21('0xc')](_0x0d21('0xd'),_0xd40d8e,_0x0d21('0xe'));logger[_0x0d21('0xf')](_0x0d21('0x10'),_0xd40d8e,_0x0d21('0xe'),JSON[_0x0d21('0x11')](_0x554499));if(_0x554499['error']){if(_0x554499[_0x0d21('0x12')][_0x0d21('0x13')]===0x1f4){logger[_0x0d21('0x12')](_0x0d21('0xd'),_0xd40d8e,_0x554499[_0x0d21('0x12')][_0x0d21('0x14')]);return _0x2c8b0e(_0x554499[_0x0d21('0x12')][_0x0d21('0x14')]);}logger['error'](_0x0d21('0xd'),_0xd40d8e,_0x554499['error'][_0x0d21('0x14')]);return _0x228c93(_0x554499[_0x0d21('0x12')]['message']);}else{logger[_0x0d21('0xc')](_0x0d21('0xd'),_0xd40d8e,_0x0d21('0xe'));_0x228c93(_0x554499[_0x0d21('0x15')][_0x0d21('0x14')]);}})[_0x0d21('0x16')](function(_0x4d5df9){logger[_0x0d21('0x12')](_0x0d21('0xd'),_0xd40d8e,_0x4d5df9);_0x2c8b0e(_0x4d5df9);});});}exports[_0x0d21('0x17')]=function(_0x4ea403){var _0x4d9c29=this;return new Promise(function(_0x43eac6,_0x5db912){return db['CmHopperBlack']['findAll']({'raw':_0x4ea403[_0x0d21('0x18')]?_0x4ea403[_0x0d21('0x18')][_0x0d21('0x19')]===undefined?!![]:![]:!![],'where':_0x4ea403[_0x0d21('0x18')]?_0x4ea403[_0x0d21('0x18')][_0x0d21('0x1a')]||null:null,'attributes':_0x4ea403[_0x0d21('0x18')]?_0x4ea403[_0x0d21('0x18')][_0x0d21('0x1b')]||null:null,'limit':_0x4ea403[_0x0d21('0x18')]?_0x4ea403[_0x0d21('0x18')][_0x0d21('0x1c')]||null:null,'include':_0x4ea403[_0x0d21('0x18')]?_0x4ea403['options'][_0x0d21('0x1d')]?_[_0x0d21('0x1e')](_0x4ea403[_0x0d21('0x18')]['include'],function(_0x5c0f5b){return{'model':db[_0x5c0f5b[_0x0d21('0x1f')]],'as':_0x5c0f5b['as'],'attributes':_0x5c0f5b['attributes'],'include':_0x5c0f5b[_0x0d21('0x1d')]?_['map'](_0x5c0f5b[_0x0d21('0x1d')],function(_0x252a9d){return{'model':db[_0x252a9d[_0x0d21('0x1f')]],'as':_0x252a9d['as'],'attributes':_0x252a9d[_0x0d21('0x1b')],'include':_0x252a9d[_0x0d21('0x1d')]?_['map'](_0x252a9d['include'],function(_0x5e0ee2){return{'model':db[_0x5e0ee2[_0x0d21('0x1f')]],'as':_0x5e0ee2['as'],'attributes':_0x5e0ee2[_0x0d21('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x0d21('0xb')](function(_0x14bed3){logger[_0x0d21('0xc')](_0x0d21('0x17'),_0x4ea403);logger[_0x0d21('0xf')](_0x0d21('0x17'),_0x4ea403,JSON[_0x0d21('0x11')](_0x14bed3));_0x43eac6(_0x14bed3);})['catch'](function(_0x43ed1e){logger['error']('GetCmHopperBlack',_0x43ed1e[_0x0d21('0x14')],_0x4ea403);_0x5db912(_0x4d9c29[_0x0d21('0x12')](0x1f4,_0x43ed1e['message']));});});};exports[_0x0d21('0x20')]=function(_0x117802){var _0x4891cc=this;return new Promise(function(_0x42a8d2,_0x26b273){return db[_0x0d21('0x21')][_0x0d21('0x22')](_0x117802[_0x0d21('0x23')],{'raw':_0x117802[_0x0d21('0x18')]?_0x117802[_0x0d21('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x117802['options']?_0x117802[_0x0d21('0x18')][_0x0d21('0x1a')]||null:null,'attributes':_0x117802[_0x0d21('0x18')]?_0x117802[_0x0d21('0x18')]['attributes']||null:null,'limit':_0x117802[_0x0d21('0x18')]?_0x117802[_0x0d21('0x18')][_0x0d21('0x1c')]||null:null})[_0x0d21('0xb')](function(_0x52d547){logger[_0x0d21('0xc')](_0x0d21('0x20'),_0x117802);logger['debug'](_0x0d21('0x20'),_0x117802,JSON[_0x0d21('0x11')](_0x52d547));_0x42a8d2(_0x52d547);})[_0x0d21('0x16')](function(_0x2198a7){logger[_0x0d21('0x12')](_0x0d21('0x20'),_0x2198a7[_0x0d21('0x14')],_0x117802);_0x26b273(_0x4891cc['error'](0x1f4,_0x2198a7[_0x0d21('0x14')]));});});};exports[_0x0d21('0x24')]=function(_0x2d6aa9){var _0x48a1bf=this;return new Promise(function(_0x535871,_0x3e242b){return db[_0x0d21('0x21')][_0x0d21('0x25')]({'where':_0x2d6aa9[_0x0d21('0x18')]?_0x2d6aa9[_0x0d21('0x18')][_0x0d21('0x1a')]||null:null})[_0x0d21('0xb')](function(_0x2f6771){logger[_0x0d21('0xc')]('DestroyCmHopperBlack',_0x2d6aa9);logger[_0x0d21('0xf')]('DestroyCmHopperBlack',_0x2d6aa9,JSON[_0x0d21('0x11')](_0x2f6771));_0x535871(_0x2f6771);})['catch'](function(_0x3f12dc){logger[_0x0d21('0x12')](_0x0d21('0x24'),_0x3f12dc[_0x0d21('0x14')],_0x2d6aa9);_0x3e242b(_0x48a1bf[_0x0d21('0x12')](0x1f4,_0x3f12dc[_0x0d21('0x14')]));});});};
\ No newline at end of file
+var _0xeebf=['client','http','request','then','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','raw','options','where','attributes','limit','map','model','include','stringify','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0xfe56fb,_0xa5f6d4){var _0x3da6fa=function(_0x5ec4ef){while(--_0x5ec4ef){_0xfe56fb['push'](_0xfe56fb['shift']());}};_0x3da6fa(++_0xa5f6d4);}(_0xeebf,0x121));var _0xfeeb=function(_0xa0be1c,_0x152d5d){_0xa0be1c=_0xa0be1c-0x0;var _0x546eec=_0xeebf[_0xa0be1c];return _0x546eec;};'use strict';var _=require(_0xfeeb('0x0'));var util=require(_0xfeeb('0x1'));var moment=require('moment');var BPromise=require(_0xfeeb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfeeb('0x3'));var db=require(_0xfeeb('0x4'))['db'];var utils=require(_0xfeeb('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xfeeb('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xfeeb('0x7')][_0xfeeb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x435c41,_0x4b871e,_0x1f7469){return new BPromise(function(_0x1c4b54,_0x32dec0){return client[_0xfeeb('0x9')](_0x435c41,_0x1f7469)[_0xfeeb('0xa')](function(_0x332723){logger['info'](_0xfeeb('0xb'),_0x4b871e,'request\x20sent');logger[_0xfeeb('0xc')](_0xfeeb('0xd'),_0x4b871e,_0xfeeb('0xe'),JSON['stringify'](_0x332723));if(_0x332723[_0xfeeb('0xf')]){if(_0x332723['error']['code']===0x1f4){logger[_0xfeeb('0xf')](_0xfeeb('0xb'),_0x4b871e,_0x332723['error'][_0xfeeb('0x10')]);return _0x32dec0(_0x332723[_0xfeeb('0xf')][_0xfeeb('0x10')]);}logger[_0xfeeb('0xf')]('CmHopperBlack,\x20%s,\x20%s',_0x4b871e,_0x332723[_0xfeeb('0xf')][_0xfeeb('0x10')]);return _0x1c4b54(_0x332723['error']['message']);}else{logger[_0xfeeb('0x11')]('CmHopperBlack,\x20%s,\x20%s',_0x4b871e,'request\x20sent');_0x1c4b54(_0x332723[_0xfeeb('0x12')][_0xfeeb('0x10')]);}})[_0xfeeb('0x13')](function(_0x39a168){logger['error'](_0xfeeb('0xb'),_0x4b871e,_0x39a168);_0x32dec0(_0x39a168);});});}exports[_0xfeeb('0x14')]=function(_0x1e730d){var _0x3fb18e=this;return new Promise(function(_0x582311,_0x2a16af){return db[_0xfeeb('0x15')][_0xfeeb('0x16')]({'raw':_0x1e730d['options']?_0x1e730d['options'][_0xfeeb('0x17')]===undefined?!![]:![]:!![],'where':_0x1e730d[_0xfeeb('0x18')]?_0x1e730d[_0xfeeb('0x18')][_0xfeeb('0x19')]||null:null,'attributes':_0x1e730d['options']?_0x1e730d['options'][_0xfeeb('0x1a')]||null:null,'limit':_0x1e730d[_0xfeeb('0x18')]?_0x1e730d[_0xfeeb('0x18')][_0xfeeb('0x1b')]||null:null,'include':_0x1e730d[_0xfeeb('0x18')]?_0x1e730d['options']['include']?_[_0xfeeb('0x1c')](_0x1e730d[_0xfeeb('0x18')]['include'],function(_0x49b2fc){return{'model':db[_0x49b2fc[_0xfeeb('0x1d')]],'as':_0x49b2fc['as'],'attributes':_0x49b2fc[_0xfeeb('0x1a')],'include':_0x49b2fc[_0xfeeb('0x1e')]?_[_0xfeeb('0x1c')](_0x49b2fc[_0xfeeb('0x1e')],function(_0x1b1292){return{'model':db[_0x1b1292[_0xfeeb('0x1d')]],'as':_0x1b1292['as'],'attributes':_0x1b1292[_0xfeeb('0x1a')],'include':_0x1b1292['include']?_[_0xfeeb('0x1c')](_0x1b1292[_0xfeeb('0x1e')],function(_0x5f1eeb){return{'model':db[_0x5f1eeb['model']],'as':_0x5f1eeb['as'],'attributes':_0x5f1eeb['attributes']};}):[]};}):[]};}):[]:[]})[_0xfeeb('0xa')](function(_0x4e5361){logger[_0xfeeb('0x11')](_0xfeeb('0x14'),_0x1e730d);logger['debug'](_0xfeeb('0x14'),_0x1e730d,JSON[_0xfeeb('0x1f')](_0x4e5361));_0x582311(_0x4e5361);})[_0xfeeb('0x13')](function(_0x2580ef){logger[_0xfeeb('0xf')](_0xfeeb('0x14'),_0x2580ef[_0xfeeb('0x10')],_0x1e730d);_0x2a16af(_0x3fb18e[_0xfeeb('0xf')](0x1f4,_0x2580ef[_0xfeeb('0x10')]));});});};exports[_0xfeeb('0x20')]=function(_0x4293b3){var _0x22e4b0=this;return new Promise(function(_0x29230b,_0x4d54b1){return db[_0xfeeb('0x15')][_0xfeeb('0x21')](_0x4293b3[_0xfeeb('0x22')],{'raw':_0x4293b3[_0xfeeb('0x18')]?_0x4293b3[_0xfeeb('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4293b3[_0xfeeb('0x18')]?_0x4293b3[_0xfeeb('0x18')]['where']||null:null,'attributes':_0x4293b3[_0xfeeb('0x18')]?_0x4293b3['options']['attributes']||null:null,'limit':_0x4293b3[_0xfeeb('0x18')]?_0x4293b3[_0xfeeb('0x18')][_0xfeeb('0x1b')]||null:null})[_0xfeeb('0xa')](function(_0x17d46e){logger['info'](_0xfeeb('0x20'),_0x4293b3);logger[_0xfeeb('0xc')](_0xfeeb('0x20'),_0x4293b3,JSON[_0xfeeb('0x1f')](_0x17d46e));_0x29230b(_0x17d46e);})[_0xfeeb('0x13')](function(_0xc5f0b9){logger['error']('UpdateCmHopperBlack',_0xc5f0b9['message'],_0x4293b3);_0x4d54b1(_0x22e4b0[_0xfeeb('0xf')](0x1f4,_0xc5f0b9[_0xfeeb('0x10')]));});});};exports[_0xfeeb('0x23')]=function(_0x22c825){var _0x4cd23b=this;return new Promise(function(_0x359812,_0x1b8a5c){return db[_0xfeeb('0x15')][_0xfeeb('0x24')]({'where':_0x22c825[_0xfeeb('0x18')]?_0x22c825[_0xfeeb('0x18')][_0xfeeb('0x19')]||null:null})[_0xfeeb('0xa')](function(_0x142b7c){logger[_0xfeeb('0x11')]('DestroyCmHopperBlack',_0x22c825);logger[_0xfeeb('0xc')](_0xfeeb('0x23'),_0x22c825,JSON['stringify'](_0x142b7c));_0x359812(_0x142b7c);})['catch'](function(_0x47b0bb){logger[_0xfeeb('0xf')](_0xfeeb('0x23'),_0x47b0bb['message'],_0x22c825);_0x1b8a5c(_0x4cd23b['error'](0x1f4,_0x47b0bb[_0xfeeb('0x10')]));});});};
\ No newline at end of file
index 0bb3a57..d25eb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741c=['get','isAuthenticated','index','/describe','/:id','show','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','./cmHopperBlack.controller'];(function(_0x51a81c,_0x36467d){var _0x385784=function(_0x5c2106){while(--_0x5c2106){_0x51a81c['push'](_0x51a81c['shift']());}};_0x385784(++_0x36467d);}(_0x741c,0x196));var _0xc741=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x741c[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0xc741('0x0'));var util=require(_0xc741('0x1'));var path=require(_0xc741('0x2'));var timeout=require(_0xc741('0x3'));var express=require(_0xc741('0x4'));var router=express[_0xc741('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc741('0x6'));var config=require('../../config/environment');var controller=require(_0xc741('0x7'));router[_0xc741('0x8')]('/',auth[_0xc741('0x9')](),controller[_0xc741('0xa')]);router[_0xc741('0x8')](_0xc741('0xb'),auth[_0xc741('0x9')](),controller['describe']);router[_0xc741('0x8')](_0xc741('0xc'),auth['isAuthenticated'](),controller[_0xc741('0xd')]);router['put']('/:id',auth[_0xc741('0x9')](),controller[_0xc741('0xe')]);router[_0xc741('0xf')](_0xc741('0xc'),auth[_0xc741('0x9')](),controller[_0xc741('0x10')]);module[_0xc741('0x11')]=router;
\ No newline at end of file
+var _0x7ee1=['Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','isAuthenticated','/:id','delete','destroy','multer','express'];(function(_0x2473bb,_0x26da56){var _0x57f41f=function(_0x2afe61){while(--_0x2afe61){_0x2473bb['push'](_0x2473bb['shift']());}};_0x57f41f(++_0x26da56);}(_0x7ee1,0x8d));var _0x17ee=function(_0x24b59d,_0x536ead){_0x24b59d=_0x24b59d-0x0;var _0x814968=_0x7ee1[_0x24b59d];return _0x814968;};'use strict';var multer=require(_0x17ee('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x17ee('0x1'));var router=express[_0x17ee('0x2')]();var fs_extra=require(_0x17ee('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x17ee('0x4'));var config=require(_0x17ee('0x5'));var controller=require(_0x17ee('0x6'));router[_0x17ee('0x7')]('/',auth['isAuthenticated'](),controller[_0x17ee('0x8')]);router[_0x17ee('0x7')]('/describe',auth[_0x17ee('0x9')](),controller['describe']);router[_0x17ee('0x7')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller['show']);router['put']('/:id',auth[_0x17ee('0x9')](),controller['update']);router[_0x17ee('0xb')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller[_0x17ee('0xc')]);module['exports']=router;
\ No newline at end of file
index 32a63ce..d0ce746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd3=['moment','exports','INTEGER','STRING','DATE','endtime','setDataValue','diff','BOOLEAN','sequelize'];(function(_0x4c4037,_0x15054b){var _0x357862=function(_0x480015){while(--_0x480015){_0x4c4037['push'](_0x4c4037['shift']());}};_0x357862(++_0x15054b);}(_0x5cd3,0x117));var _0x35cd=function(_0x336526,_0x36b7f0){_0x336526=_0x336526-0x0;var _0x209f8d=_0x5cd3[_0x336526];return _0x209f8d;};'use strict';var Sequelize=require(_0x35cd('0x0'));var moment=require(_0x35cd('0x1'));module[_0x35cd('0x2')]={'state':{'type':Sequelize[_0x35cd('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x35cd('0x4')]},'scheduledat':{'type':Sequelize[_0x35cd('0x5')]},'countbusyretry':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x35cd('0x4')]},'originatecalleridname':{'type':Sequelize[_0x35cd('0x4')]},'calleridnum':{'type':Sequelize[_0x35cd('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x35cd('0x5')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x35cd('0x5')]},'droptime':{'type':Sequelize[_0x35cd('0x5')]},'endtime':{'type':Sequelize[_0x35cd('0x5')]},'ringtime':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x35cd('0x4')]},'campaign':{'type':Sequelize[_0x35cd('0x4')]},'campaigntype':{'type':Sequelize[_0x35cd('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x35cd('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x35cd('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x1166aa){var _0x4cb8ed=this['getDataValue'](_0x35cd('0x6'));if(_0x4cb8ed&&_0x1166aa){this[_0x35cd('0x7')]('followuptime',moment(_0x1166aa)[_0x35cd('0x8')](moment(_0x4cb8ed),'seconds'));}}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x35cd('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x35cd('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x35cd('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x35cd('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x35cd('0x5')]},'deleted':{'type':Sequelize[_0x35cd('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x35cd('0x5')]},'recallme':{'type':Sequelize[_0x35cd('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x35cd('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x35cd('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdbfd=['seconds','BOOLEAN','sequelize','moment','INTEGER','STRING','DATE','endtime','setDataValue','followuptime','diff'];(function(_0x895e88,_0x337088){var _0x1193c6=function(_0x576a27){while(--_0x576a27){_0x895e88['push'](_0x895e88['shift']());}};_0x1193c6(++_0x337088);}(_0xdbfd,0x120));var _0xddbf=function(_0x2a406f,_0x5bb1cc){_0x2a406f=_0x2a406f-0x0;var _0xa40d39=_0xdbfd[_0x2a406f];return _0xa40d39;};'use strict';var Sequelize=require(_0xddbf('0x0'));var moment=require(_0xddbf('0x1'));module['exports']={'state':{'type':Sequelize[_0xddbf('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xddbf('0x3')]},'scheduledat':{'type':Sequelize[_0xddbf('0x4')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xddbf('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xddbf('0x3')]},'calleridnum':{'type':Sequelize[_0xddbf('0x3')]},'calleridname':{'type':Sequelize[_0xddbf('0x3')]},'starttime':{'type':Sequelize[_0xddbf('0x4')]},'responsetime':{'type':Sequelize[_0xddbf('0x4')]},'answertime':{'type':Sequelize[_0xddbf('0x4')]},'droptime':{'type':Sequelize[_0xddbf('0x4')]},'endtime':{'type':Sequelize[_0xddbf('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xddbf('0x3')]},'campaign':{'type':Sequelize[_0xddbf('0x3')]},'campaigntype':{'type':Sequelize[_0xddbf('0x3')]},'membername':{'type':Sequelize[_0xddbf('0x3')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xddbf('0x3')]},'thirdDisposition':{'type':Sequelize[_0xddbf('0x3')]},'dispositionat':{'type':Sequelize[_0xddbf('0x4')],'set':function(_0xef9dfb){var _0x45c9a6=this['getDataValue'](_0xddbf('0x5'));if(_0x45c9a6&&_0xef9dfb){this[_0xddbf('0x6')](_0xddbf('0x7'),moment(_0xef9dfb)[_0xddbf('0x8')](moment(_0x45c9a6),_0xddbf('0x9')));}}},'amd':{'type':Sequelize[_0xddbf('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0xddbf('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xddbf('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xddbf('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xddbf('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xddbf('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0xddbf('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xddbf('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xddbf('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ea16d0b..a5e57e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['find','describe','body','uniqueid','params','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','COUNT','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','congestionContacts','reCallContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','select','ANY_VALUE(calleridnum)','field','NOW()','createdAt','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','group','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','index','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','CmHopperFinal','includeAll','include','findAll','rows','catch','length'];(function(_0x550a28,_0x159354){var _0x156800=function(_0x26777c){while(--_0x26777c){_0x550a28['push'](_0x550a28['shift']());}};_0x156800(++_0x159354);}(_0xf494,0x1c6));var _0x4f49=function(_0x3db964,_0x155186){_0x3db964=_0x3db964-0x0;var _0x4b5d99=_0xf494[_0x3db964];return _0x4b5d99;};'use strict';var emlformat=require(_0x4f49('0x0'));var rimraf=require(_0x4f49('0x1'));var zipdir=require(_0x4f49('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4f49('0x3'));var moment=require(_0x4f49('0x4'));var BPromise=require(_0x4f49('0x5'));var Mustache=require(_0x4f49('0x6'));var util=require(_0x4f49('0x7'));var path=require(_0x4f49('0x8'));var sox=require(_0x4f49('0x9'));var csv=require(_0x4f49('0xa'));var ejs=require(_0x4f49('0xb'));var fs=require('fs');var fs_extra=require(_0x4f49('0xc'));var _=require(_0x4f49('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4f49('0xe'));var deskjs=require(_0x4f49('0xf'));var toCsv=require(_0x4f49('0xa'));var querystring=require(_0x4f49('0x10'));var Papa=require(_0x4f49('0x11'));var Redis=require(_0x4f49('0x12'));var authService=require(_0x4f49('0x13'));var qs=require(_0x4f49('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4f49('0x15'));var logger=require(_0x4f49('0x16'))('api');var utils=require(_0x4f49('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4f49('0x18'))['db'];function respondWithStatusCode(_0x12527d,_0x4bf89f){_0x4bf89f=_0x4bf89f||0xcc;return function(_0x1e1c37){if(_0x1e1c37){return _0x12527d[_0x4f49('0x19')](_0x4bf89f);}return _0x12527d[_0x4f49('0x1a')](_0x4bf89f)[_0x4f49('0x1b')]();};}function respondWithResult(_0x1a0f1e,_0x2f0131){_0x2f0131=_0x2f0131||0xc8;return function(_0xfdb477){if(_0xfdb477){return _0x1a0f1e['status'](_0x2f0131)[_0x4f49('0x1c')](_0xfdb477);}};}function respondWithFilteredResult(_0x1f2d0d,_0x415e83){return function(_0x5878f4){if(_0x5878f4){var _0x5bdfaf=typeof _0x415e83[_0x4f49('0x1d')]===_0x4f49('0x1e')&&typeof _0x415e83[_0x4f49('0x1f')]==='undefined';var _0x1dccfd=_0x5878f4[_0x4f49('0x20')];var _0x4e85df=_0x5bdfaf?0x0:_0x415e83['offset'];var _0x5bb23b=_0x5bdfaf?_0x5878f4['count']:_0x415e83['offset']+_0x415e83[_0x4f49('0x1f')];var _0x1834f4;if(_0x5bb23b>=_0x1dccfd){_0x5bb23b=_0x1dccfd;_0x1834f4=0xc8;}else{_0x1834f4=0xce;}_0x1f2d0d[_0x4f49('0x1a')](_0x1834f4);return _0x1f2d0d[_0x4f49('0x21')]('Content-Range',_0x4e85df+'-'+_0x5bb23b+'/'+_0x1dccfd)[_0x4f49('0x1c')](_0x5878f4);}return null;};}function patchUpdates(_0x2aed27){return function(_0x197a49){try{jsonpatch[_0x4f49('0x22')](_0x197a49,_0x2aed27,!![]);}catch(_0xea82f8){return BPromise['reject'](_0xea82f8);}return _0x197a49[_0x4f49('0x23')]();};}function saveUpdates(_0x357446,_0x3ae590){return function(_0x53b57d){if(_0x53b57d){return _0x53b57d[_0x4f49('0x24')](_0x357446)[_0x4f49('0x25')](function(_0x32ca7b){return _0x32ca7b;});}return null;};}function removeEntity(_0x43c458,_0x9d30aa){return function(_0x36187b){if(_0x36187b){return _0x36187b['destroy']()['then'](function(){_0x43c458[_0x4f49('0x1a')](0xcc)[_0x4f49('0x1b')]();});}};}function handleEntityNotFound(_0x4fedbb,_0x408552){return function(_0x2c1519){if(!_0x2c1519){_0x4fedbb[_0x4f49('0x19')](0x194);}return _0x2c1519;};}function handleError(_0x525950,_0xc54070){_0xc54070=_0xc54070||0x1f4;return function(_0x2eed1c){logger[_0x4f49('0x26')](_0x2eed1c[_0x4f49('0x27')]);if(_0x2eed1c[_0x4f49('0x28')]){delete _0x2eed1c[_0x4f49('0x28')];}_0x525950['status'](_0xc54070)['send'](_0x2eed1c);};}exports[_0x4f49('0x29')]=function(_0x2c00ee,_0x605c91){var _0x560050={},_0x3cbfbd={},_0x206203={'count':0x0,'rows':[]};var _0x43d8e3=_['map'](db['CmHopperFinal'][_0x4f49('0x2a')],function(_0x27d004){return{'name':_0x27d004[_0x4f49('0x2b')],'type':_0x27d004['type'][_0x4f49('0x2c')]};});_0x3cbfbd[_0x4f49('0x2d')]=_[_0x4f49('0x2e')](_0x43d8e3,_0x4f49('0x28'));_0x3cbfbd[_0x4f49('0x2f')]=_[_0x4f49('0x30')](_0x2c00ee[_0x4f49('0x2f')]);_0x3cbfbd[_0x4f49('0x31')]=_[_0x4f49('0x32')](_0x3cbfbd[_0x4f49('0x2d')],_0x3cbfbd[_0x4f49('0x2f')]);_0x560050[_0x4f49('0x33')]=_[_0x4f49('0x32')](_0x3cbfbd[_0x4f49('0x2d')],qs[_0x4f49('0x34')](_0x2c00ee[_0x4f49('0x2f')][_0x4f49('0x34')]));_0x560050[_0x4f49('0x33')]=_0x560050[_0x4f49('0x33')]['length']?_0x560050[_0x4f49('0x33')]:_0x3cbfbd[_0x4f49('0x2d')];if(!_0x2c00ee[_0x4f49('0x2f')][_0x4f49('0x35')](_0x4f49('0x36'))){_0x560050[_0x4f49('0x1f')]=qs[_0x4f49('0x1f')](_0x2c00ee[_0x4f49('0x2f')][_0x4f49('0x1f')]);_0x560050[_0x4f49('0x1d')]=qs[_0x4f49('0x1d')](_0x2c00ee[_0x4f49('0x2f')][_0x4f49('0x1d')]);}_0x560050['order']=qs[_0x4f49('0x37')](_0x2c00ee[_0x4f49('0x2f')][_0x4f49('0x37')]);_0x560050[_0x4f49('0x38')]=qs[_0x4f49('0x31')](_[_0x4f49('0x39')](_0x2c00ee[_0x4f49('0x2f')],_0x3cbfbd[_0x4f49('0x31')]),_0x43d8e3);if(_0x2c00ee[_0x4f49('0x2f')][_0x4f49('0x3a')]){_0x560050[_0x4f49('0x38')]=_[_0x4f49('0x3b')](_0x560050[_0x4f49('0x38')],{'$or':_[_0x4f49('0x2e')](_0x43d8e3,function(_0x4e3f72){if(_0x4e3f72[_0x4f49('0x3c')]!==_0x4f49('0x3d')){var _0x543605={};_0x543605[_0x4e3f72[_0x4f49('0x28')]]={'$like':'%'+_0x2c00ee[_0x4f49('0x2f')]['filter']+'%'};return _0x543605;}})});}_0x560050=_[_0x4f49('0x3b')]({},_0x560050,_0x2c00ee[_0x4f49('0x3e')]);var _0x2548ad={'where':_0x560050[_0x4f49('0x38')]};return db[_0x4f49('0x3f')][_0x4f49('0x20')](_0x2548ad)[_0x4f49('0x25')](function(_0x5d464e){_0x206203['count']=_0x5d464e;if(_0x2c00ee['query'][_0x4f49('0x40')]){_0x560050[_0x4f49('0x41')]=[{'all':!![]}];}return db[_0x4f49('0x3f')][_0x4f49('0x42')](_0x560050);})[_0x4f49('0x25')](function(_0x1ecf6c){_0x206203[_0x4f49('0x43')]=_0x1ecf6c;return _0x206203;})[_0x4f49('0x25')](respondWithFilteredResult(_0x605c91,_0x560050))[_0x4f49('0x44')](handleError(_0x605c91,null));};exports['show']=function(_0x5238a3,_0x412395){var _0x432b5d={'raw':!![],'where':{'id':_0x5238a3['params']['id']}},_0x159642={};_0x159642[_0x4f49('0x2d')]=_['keys'](db['CmHopperFinal'][_0x4f49('0x2a')]);_0x159642[_0x4f49('0x2f')]=_[_0x4f49('0x30')](_0x5238a3['query']);_0x159642[_0x4f49('0x31')]=_[_0x4f49('0x32')](_0x159642['model'],_0x159642[_0x4f49('0x2f')]);_0x432b5d['attributes']=_[_0x4f49('0x32')](_0x159642[_0x4f49('0x2d')],qs[_0x4f49('0x34')](_0x5238a3['query'][_0x4f49('0x34')]));_0x432b5d[_0x4f49('0x33')]=_0x432b5d[_0x4f49('0x33')][_0x4f49('0x45')]?_0x432b5d[_0x4f49('0x33')]:_0x159642[_0x4f49('0x2d')];if(_0x5238a3[_0x4f49('0x2f')][_0x4f49('0x40')]){_0x432b5d[_0x4f49('0x41')]=[{'all':!![]}];}_0x432b5d=_[_0x4f49('0x3b')]({},_0x432b5d,_0x5238a3['options']);return db[_0x4f49('0x3f')][_0x4f49('0x46')](_0x432b5d)['then'](handleEntityNotFound(_0x412395,null))[_0x4f49('0x25')](respondWithResult(_0x412395,null))['catch'](handleError(_0x412395,null));};exports[_0x4f49('0x47')]=function(_0x41c580,_0x2d3dcd){return db[_0x4f49('0x3f')]['describe']()[_0x4f49('0x25')](respondWithResult(_0x2d3dcd,null))[_0x4f49('0x44')](handleError(_0x2d3dcd,null));};exports[_0x4f49('0x24')]=function(_0x973099,_0x3ec266){if(_0x973099[_0x4f49('0x48')][_0x4f49('0x49')]){delete _0x973099[_0x4f49('0x48')][_0x4f49('0x49')];}return db[_0x4f49('0x3f')][_0x4f49('0x46')]({'where':{'uniqueid':_0x973099[_0x4f49('0x4a')]['id']}})[_0x4f49('0x25')](handleEntityNotFound(_0x3ec266,null))[_0x4f49('0x25')](saveUpdates(_0x973099[_0x4f49('0x48')],null))[_0x4f49('0x25')](respondWithResult(_0x3ec266,null))['catch'](handleError(_0x3ec266,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0xce5121,_0x197670,_0x36bcc2){return db[_0x4f49('0x3f')][_0x4f49('0x42')]({'raw':![],'where':{'VoiceQueueId':_0xce5121[_0x4f49('0x4a')]['id']},'attributes':[[db[_0x4f49('0x4b')]['fn']('COUNT',db[_0x4f49('0x4b')]['fn']('IF',db['sequelize'][_0x4f49('0x4c')](_0x4f49('0x4d')))),_0x4f49('0x4e')],[db[_0x4f49('0x4b')]['fn']('COUNT',db[_0x4f49('0x4b')]['fn']('IF',db['sequelize']['literal'](_0x4f49('0x4f')))),_0x4f49('0x50')],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db['sequelize']['fn']('IF',db['sequelize'][_0x4f49('0x4c')](_0x4f49('0x52')))),'busyContacts'],[db[_0x4f49('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4f49('0x4b')]['literal'](_0x4f49('0x53')))),'congestionContacts'],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')](_0x4f49('0x54')))),_0x4f49('0x55')],[db[_0x4f49('0x4b')]['fn']('COUNT',db[_0x4f49('0x4b')]['fn']('IF',db['sequelize'][_0x4f49('0x4c')](_0x4f49('0x56')))),_0x4f49('0x57')],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db['sequelize'][_0x4f49('0x4c')](_0x4f49('0x58')))),'reCallContacts'],[db['sequelize']['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')](_0x4f49('0x59')))),'answeringMachine']]})[_0x4f49('0x25')](handleEntityNotFound(_0x197670,null))['then'](respondWithResult(_0x197670,null))[_0x4f49('0x44')](handleError(_0x197670,null));};exports[_0x4f49('0x5a')]=function(_0x2a2b0d,_0x4aae7c,_0x1dade6){return db[_0x4f49('0x3f')][_0x4f49('0x42')]({'raw':![],'where':{'CampaignId':_0x2a2b0d[_0x4f49('0x4a')]['id']},'attributes':[[db['sequelize']['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db['sequelize'][_0x4f49('0x4c')](_0x4f49('0x4d')))),_0x4f49('0x4e')],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')]('`state`\x20=\x203,\x201,\x20null'))),_0x4f49('0x50')],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')](_0x4f49('0x52')))),'busyContacts'],[db[_0x4f49('0x4b')]['fn']('COUNT',db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')](_0x4f49('0x53')))),_0x4f49('0x5b')],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x4f49('0x55')],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db['sequelize']['literal'](_0x4f49('0x56')))),'abandonedContacts'],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')](_0x4f49('0x58')))),_0x4f49('0x5c')],[db[_0x4f49('0x4b')]['fn'](_0x4f49('0x51'),db[_0x4f49('0x4b')]['fn']('IF',db[_0x4f49('0x4b')][_0x4f49('0x4c')](_0x4f49('0x59')))),_0x4f49('0x5d')]]})[_0x4f49('0x25')](handleEntityNotFound(_0x4aae7c,null))[_0x4f49('0x25')](respondWithResult(_0x4aae7c,null))[_0x4f49('0x44')](handleError(_0x4aae7c,null));};exports[_0x4f49('0x5e')]=function(_0x1f9161,_0x1434ea,_0x2c3962){return db[_0x4f49('0x5f')][_0x4f49('0x46')]({'where':{'id':_0x1f9161[_0x4f49('0x4a')]['id']}})[_0x4f49('0x25')](handleEntityNotFound(_0x1434ea,null))['then'](function(_0x3e9460){var _0x4ff0c1;if(_0x3e9460){_0x4ff0c1=squel[_0x4f49('0x60')]()[_0x4f49('0x61')](_0x4f49('0x62'))[_0x4f49('0x63')]([_0x4f49('0x64'),_0x4f49('0x65'),_0x4f49('0x66'),_0x4f49('0x67'),_0x4f49('0x68'),'createdAt','updatedAt'],squel[_0x4f49('0x69')]()['field'](_0x4f49('0x6a'),_0x4f49('0x64'))[_0x4f49('0x6b')](_0x4f49('0x6c'),_0x4f49('0x65'))['field']('ANY_VALUE(ContactId)',_0x4f49('0x66'))[_0x4f49('0x6b')]('ANY_VALUE(ListId)',_0x4f49('0x67'))[_0x4f49('0x6b')]('ANY_VALUE(VoiceQueueId)',_0x4f49('0x68'))['field'](_0x4f49('0x6c'),_0x4f49('0x6d'))['field'](_0x4f49('0x6c'),_0x4f49('0x6e'))[_0x4f49('0x6f')](_0x4f49('0x70'))[_0x4f49('0x38')](_0x4f49('0x71'),_0x1f9161['params']['id'][_0x4f49('0x72')]())['where'](_0x4f49('0x73'),_0x1f9161['body'][_0x4f49('0x74')]['toString']())[_0x4f49('0x38')](_0x4f49('0x75'))[_0x4f49('0x38')](_0x4f49('0x76'),squel['select']()[_0x4f49('0x6b')]('phone')[_0x4f49('0x6f')]('cm_hopper')[_0x4f49('0x38')]('VoiceQueueId\x20=\x20?',_0x1f9161['params']['id'][_0x4f49('0x72')]()))[_0x4f49('0x38')](_0x4f49('0x76'),squel['select']()[_0x4f49('0x6b')](_0x4f49('0x77'))['from']('cm_hopper_final')['where'](_0x4f49('0x71'),_0x1f9161[_0x4f49('0x4a')]['id'][_0x4f49('0x72')]())[_0x4f49('0x38')](_0x4f49('0x78')))['group'](_0x4f49('0x66')))[_0x4f49('0x72')]();return db[_0x4f49('0x4b')]['query'](_0x4ff0c1);}return[];})[_0x4f49('0x25')](respondWithResult(_0x1434ea,null))[_0x4f49('0x44')](handleError(_0x1434ea,null));};exports[_0x4f49('0x79')]=function(_0x2902a1,_0x5ea6b4,_0x249799){return db[_0x4f49('0x7a')][_0x4f49('0x46')]({'where':{'id':_0x2902a1[_0x4f49('0x4a')]['id']}})[_0x4f49('0x25')](handleEntityNotFound(_0x5ea6b4,null))['then'](function(_0x2409a8){var _0x32539c;if(_0x2409a8){_0x32539c=squel['insert']()[_0x4f49('0x61')]('cm_hopper')[_0x4f49('0x63')](['phone',_0x4f49('0x65'),_0x4f49('0x66'),_0x4f49('0x67'),_0x4f49('0x7b'),_0x4f49('0x6d'),'updatedAt'],squel[_0x4f49('0x69')]()[_0x4f49('0x6b')](_0x4f49('0x6a'),_0x4f49('0x64'))['field'](_0x4f49('0x6c'),'scheduledAt')[_0x4f49('0x6b')]('ANY_VALUE(ContactId)',_0x4f49('0x66'))[_0x4f49('0x6b')](_0x4f49('0x7c'),_0x4f49('0x67'))[_0x4f49('0x6b')](_0x4f49('0x7d'),_0x4f49('0x7b'))[_0x4f49('0x6b')](_0x4f49('0x6c'),_0x4f49('0x6d'))['field'](_0x4f49('0x6c'),_0x4f49('0x6e'))[_0x4f49('0x6f')](_0x4f49('0x70'))[_0x4f49('0x38')](_0x4f49('0x7e'),_0x2902a1['params']['id'][_0x4f49('0x72')]())[_0x4f49('0x38')](_0x4f49('0x73'),_0x2902a1[_0x4f49('0x48')]['state'][_0x4f49('0x72')]())['where'](_0x4f49('0x75'))[_0x4f49('0x38')](_0x4f49('0x76'),squel[_0x4f49('0x69')]()['field'](_0x4f49('0x64'))[_0x4f49('0x6f')](_0x4f49('0x62'))[_0x4f49('0x38')](_0x4f49('0x7e'),_0x2902a1[_0x4f49('0x4a')]['id'][_0x4f49('0x72')]()))[_0x4f49('0x38')](_0x4f49('0x76'),squel[_0x4f49('0x69')]()[_0x4f49('0x6b')](_0x4f49('0x77'))[_0x4f49('0x6f')](_0x4f49('0x70'))[_0x4f49('0x38')](_0x4f49('0x7e'),_0x2902a1[_0x4f49('0x4a')]['id'][_0x4f49('0x72')]())['where'](_0x4f49('0x78')))[_0x4f49('0x7f')](_0x4f49('0x66')))[_0x4f49('0x72')]();return db['sequelize'][_0x4f49('0x2f')](_0x32539c);}return[];})[_0x4f49('0x25')](respondWithResult(_0x5ea6b4,null))['catch'](handleError(_0x5ea6b4,null));};exports[_0x4f49('0x80')]=function(_0x57c86c,_0xf6bc4c,_0x3bc245){return db[_0x4f49('0x81')][_0x4f49('0x82')]({'where':{'VoiceQueueId':_0x57c86c[_0x4f49('0x48')][_0x4f49('0x68')],'CampaignId':_0x57c86c[_0x4f49('0x48')][_0x4f49('0x7b')],'ContactId':_0x57c86c[_0x4f49('0x48')][_0x4f49('0x66')]}})['then'](handleEntityNotFound(_0xf6bc4c,null))['then'](function(_0x32b4b4){if(_0x32b4b4){return _0x32b4b4;}return null;})['then'](respondWithResult(_0xf6bc4c,null))[_0x4f49('0x44')](handleError(_0xf6bc4c,null));};
\ No newline at end of file
+var _0xda19=['map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','CmHopperFinal','includeAll','findAll','catch','show','uniqueid','body','find','params','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','VoiceQueue','insert','fromQuery','phone','scheduledAt','VoiceQueueId','createdAt','updatedAt','ANY_VALUE(calleridnum)','field','NOW()','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','VoiceQueueId\x20=\x20?','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','cm_hopper','ListId','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','CmHopper','findOne','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','name','send'];(function(_0xcdd1d,_0x392801){var _0x46e10f=function(_0x57aab6){while(--_0x57aab6){_0xcdd1d['push'](_0xcdd1d['shift']());}};_0x46e10f(++_0x392801);}(_0xda19,0xd5));var _0x9da1=function(_0x558931,_0x251569){_0x558931=_0x558931-0x0;var _0x4ecc54=_0xda19[_0x558931];return _0x4ecc54;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9da1('0x0'));var zipdir=require(_0x9da1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9da1('0x2'));var moment=require('moment');var BPromise=require(_0x9da1('0x3'));var Mustache=require('mustache');var util=require(_0x9da1('0x4'));var path=require(_0x9da1('0x5'));var sox=require(_0x9da1('0x6'));var csv=require(_0x9da1('0x7'));var ejs=require(_0x9da1('0x8'));var fs=require('fs');var fs_extra=require(_0x9da1('0x9'));var _=require(_0x9da1('0xa'));var squel=require(_0x9da1('0xb'));var crypto=require(_0x9da1('0xc'));var jsforce=require(_0x9da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9da1('0xe'));var Redis=require('ioredis');var authService=require(_0x9da1('0xf'));var qs=require(_0x9da1('0x10'));var as=require(_0x9da1('0x11'));var hardwareService=require(_0x9da1('0x12'));var logger=require(_0x9da1('0x13'))(_0x9da1('0x14'));var utils=require(_0x9da1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9da1('0x16'))['db'];function respondWithStatusCode(_0x596b6b,_0x4735c7){_0x4735c7=_0x4735c7||0xcc;return function(_0x1d93f8){if(_0x1d93f8){return _0x596b6b[_0x9da1('0x17')](_0x4735c7);}return _0x596b6b[_0x9da1('0x18')](_0x4735c7)['end']();};}function respondWithResult(_0x2837e3,_0x535a13){_0x535a13=_0x535a13||0xc8;return function(_0x4d17e1){if(_0x4d17e1){return _0x2837e3[_0x9da1('0x18')](_0x535a13)['json'](_0x4d17e1);}};}function respondWithFilteredResult(_0x433ff4,_0x43c093){return function(_0x37653d){if(_0x37653d){var _0x1a1a6b=typeof _0x43c093[_0x9da1('0x19')]==='undefined'&&typeof _0x43c093[_0x9da1('0x1a')]===_0x9da1('0x1b');var _0xf83bf8=_0x37653d[_0x9da1('0x1c')];var _0xfb278d=_0x1a1a6b?0x0:_0x43c093[_0x9da1('0x19')];var _0x497676=_0x1a1a6b?_0x37653d['count']:_0x43c093[_0x9da1('0x19')]+_0x43c093[_0x9da1('0x1a')];var _0x1b0e7f;if(_0x497676>=_0xf83bf8){_0x497676=_0xf83bf8;_0x1b0e7f=0xc8;}else{_0x1b0e7f=0xce;}_0x433ff4[_0x9da1('0x18')](_0x1b0e7f);return _0x433ff4[_0x9da1('0x1d')](_0x9da1('0x1e'),_0xfb278d+'-'+_0x497676+'/'+_0xf83bf8)[_0x9da1('0x1f')](_0x37653d);}return null;};}function patchUpdates(_0x47e5cf){return function(_0x1a459c){try{jsonpatch[_0x9da1('0x20')](_0x1a459c,_0x47e5cf,!![]);}catch(_0x9c3b37){return BPromise[_0x9da1('0x21')](_0x9c3b37);}return _0x1a459c[_0x9da1('0x22')]();};}function saveUpdates(_0x4e9d7d,_0x5454d3){return function(_0x14793b){if(_0x14793b){return _0x14793b[_0x9da1('0x23')](_0x4e9d7d)[_0x9da1('0x24')](function(_0x330219){return _0x330219;});}return null;};}function removeEntity(_0x32eb55,_0x165b73){return function(_0x4c60aa){if(_0x4c60aa){return _0x4c60aa[_0x9da1('0x25')]()[_0x9da1('0x24')](function(){_0x32eb55['status'](0xcc)[_0x9da1('0x26')]();});}};}function handleEntityNotFound(_0x3f5680,_0x534210){return function(_0x2fd49c){if(!_0x2fd49c){_0x3f5680[_0x9da1('0x17')](0x194);}return _0x2fd49c;};}function handleError(_0x4b1152,_0x36b87a){_0x36b87a=_0x36b87a||0x1f4;return function(_0x1d6af5){logger['error'](_0x1d6af5['stack']);if(_0x1d6af5[_0x9da1('0x27')]){delete _0x1d6af5[_0x9da1('0x27')];}_0x4b1152['status'](_0x36b87a)[_0x9da1('0x28')](_0x1d6af5);};}exports['index']=function(_0x5a6f2d,_0x5a59c2){var _0x31b826={},_0x404b86={},_0x24c6d5={'count':0x0,'rows':[]};var _0x26dd58=_[_0x9da1('0x29')](db['CmHopperFinal'][_0x9da1('0x2a')],function(_0x4e6083){return{'name':_0x4e6083[_0x9da1('0x2b')],'type':_0x4e6083[_0x9da1('0x2c')]['key']};});_0x404b86[_0x9da1('0x2d')]=_[_0x9da1('0x29')](_0x26dd58,'name');_0x404b86[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x5a6f2d[_0x9da1('0x2e')]);_0x404b86[_0x9da1('0x30')]=_['intersection'](_0x404b86['model'],_0x404b86[_0x9da1('0x2e')]);_0x31b826[_0x9da1('0x31')]=_[_0x9da1('0x32')](_0x404b86[_0x9da1('0x2d')],qs[_0x9da1('0x33')](_0x5a6f2d['query'][_0x9da1('0x33')]));_0x31b826[_0x9da1('0x31')]=_0x31b826[_0x9da1('0x31')][_0x9da1('0x34')]?_0x31b826[_0x9da1('0x31')]:_0x404b86[_0x9da1('0x2d')];if(!_0x5a6f2d['query'][_0x9da1('0x35')]('nolimit')){_0x31b826['limit']=qs[_0x9da1('0x1a')](_0x5a6f2d['query'][_0x9da1('0x1a')]);_0x31b826[_0x9da1('0x19')]=qs[_0x9da1('0x19')](_0x5a6f2d[_0x9da1('0x2e')][_0x9da1('0x19')]);}_0x31b826[_0x9da1('0x36')]=qs[_0x9da1('0x37')](_0x5a6f2d[_0x9da1('0x2e')]['sort']);_0x31b826[_0x9da1('0x38')]=qs['filters'](_[_0x9da1('0x39')](_0x5a6f2d['query'],_0x404b86['filters']),_0x26dd58);if(_0x5a6f2d[_0x9da1('0x2e')]['filter']){_0x31b826[_0x9da1('0x38')]=_[_0x9da1('0x3a')](_0x31b826['where'],{'$or':_[_0x9da1('0x29')](_0x26dd58,function(_0x1b750f){if(_0x1b750f[_0x9da1('0x2c')]!==_0x9da1('0x3b')){var _0x56bd49={};_0x56bd49[_0x1b750f[_0x9da1('0x27')]]={'$like':'%'+_0x5a6f2d['query'][_0x9da1('0x3c')]+'%'};return _0x56bd49;}})});}_0x31b826=_['merge']({},_0x31b826,_0x5a6f2d[_0x9da1('0x3d')]);var _0x46c176={'where':_0x31b826['where']};return db[_0x9da1('0x3e')][_0x9da1('0x1c')](_0x46c176)[_0x9da1('0x24')](function(_0x4e9af3){_0x24c6d5['count']=_0x4e9af3;if(_0x5a6f2d['query'][_0x9da1('0x3f')]){_0x31b826['include']=[{'all':!![]}];}return db[_0x9da1('0x3e')][_0x9da1('0x40')](_0x31b826);})[_0x9da1('0x24')](function(_0x43c064){_0x24c6d5['rows']=_0x43c064;return _0x24c6d5;})[_0x9da1('0x24')](respondWithFilteredResult(_0x5a59c2,_0x31b826))[_0x9da1('0x41')](handleError(_0x5a59c2,null));};exports[_0x9da1('0x42')]=function(_0x173dc6,_0x28fc88){var _0x26c225={'raw':!![],'where':{'id':_0x173dc6['params']['id']}},_0x28e0b2={};_0x28e0b2[_0x9da1('0x2d')]=_['keys'](db[_0x9da1('0x3e')]['rawAttributes']);_0x28e0b2[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x173dc6['query']);_0x28e0b2[_0x9da1('0x30')]=_[_0x9da1('0x32')](_0x28e0b2['model'],_0x28e0b2[_0x9da1('0x2e')]);_0x26c225['attributes']=_[_0x9da1('0x32')](_0x28e0b2[_0x9da1('0x2d')],qs['fields'](_0x173dc6['query'][_0x9da1('0x33')]));_0x26c225[_0x9da1('0x31')]=_0x26c225[_0x9da1('0x31')][_0x9da1('0x34')]?_0x26c225[_0x9da1('0x31')]:_0x28e0b2[_0x9da1('0x2d')];if(_0x173dc6[_0x9da1('0x2e')][_0x9da1('0x3f')]){_0x26c225['include']=[{'all':!![]}];}_0x26c225=_[_0x9da1('0x3a')]({},_0x26c225,_0x173dc6[_0x9da1('0x3d')]);return db[_0x9da1('0x3e')]['find'](_0x26c225)[_0x9da1('0x24')](handleEntityNotFound(_0x28fc88,null))[_0x9da1('0x24')](respondWithResult(_0x28fc88,null))[_0x9da1('0x41')](handleError(_0x28fc88,null));};exports['describe']=function(_0x336fc3,_0x351d4d){return db[_0x9da1('0x3e')]['describe']()[_0x9da1('0x24')](respondWithResult(_0x351d4d,null))['catch'](handleError(_0x351d4d,null));};exports['update']=function(_0xfbdde9,_0x43c47d){if(_0xfbdde9['body'][_0x9da1('0x43')]){delete _0xfbdde9[_0x9da1('0x44')]['uniqueid'];}return db[_0x9da1('0x3e')][_0x9da1('0x45')]({'where':{'uniqueid':_0xfbdde9[_0x9da1('0x46')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x43c47d,null))[_0x9da1('0x24')](saveUpdates(_0xfbdde9[_0x9da1('0x44')],null))[_0x9da1('0x24')](respondWithResult(_0x43c47d,null))[_0x9da1('0x41')](handleError(_0x43c47d,null));};exports[_0x9da1('0x47')]=function(_0x5c9b46,_0x147c65,_0xe6c667){return db[_0x9da1('0x3e')][_0x9da1('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x5c9b46['params']['id']},'attributes':[[db['sequelize']['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x4b')))),_0x9da1('0x4c')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x4d')))),_0x9da1('0x4e')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')]['literal'](_0x9da1('0x4f')))),'busyContacts'],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x50')))),_0x9da1('0x51')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x9da1('0x52')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x53')))),_0x9da1('0x54')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db['sequelize']['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')]('`state`\x20=\x2022,\x201,\x20null'))),_0x9da1('0x55')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x56')))),'answeringMachine']]})[_0x9da1('0x24')](handleEntityNotFound(_0x147c65,null))[_0x9da1('0x24')](respondWithResult(_0x147c65,null))[_0x9da1('0x41')](handleError(_0x147c65,null));};exports[_0x9da1('0x57')]=function(_0x562e05,_0x1a9df0,_0x5c236e){return db[_0x9da1('0x3e')][_0x9da1('0x40')]({'raw':![],'where':{'CampaignId':_0x562e05[_0x9da1('0x46')]['id']},'attributes':[[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x9da1('0x4b')))),'noSuchContacts'],[db['sequelize']['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db['sequelize'][_0x9da1('0x4a')]('`state`\x20=\x203,\x201,\x20null'))),_0x9da1('0x4e')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')]['literal'](_0x9da1('0x4f')))),_0x9da1('0x58')],[db['sequelize']['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x50')))),_0x9da1('0x51')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x9da1('0x59')))),_0x9da1('0x52')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x53')))),_0x9da1('0x54')],[db['sequelize']['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x5a')))),'reCallContacts'],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x56')))),'answeringMachine']]})[_0x9da1('0x24')](handleEntityNotFound(_0x1a9df0,null))['then'](respondWithResult(_0x1a9df0,null))[_0x9da1('0x41')](handleError(_0x1a9df0,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x7cfa7e,_0xdd3997,_0x44b6c0){return db[_0x9da1('0x5b')]['find']({'where':{'id':_0x7cfa7e['params']['id']}})['then'](handleEntityNotFound(_0xdd3997,null))[_0x9da1('0x24')](function(_0x2b1a71){var _0x266533;if(_0x2b1a71){_0x266533=squel[_0x9da1('0x5c')]()['into']('cm_hopper')[_0x9da1('0x5d')]([_0x9da1('0x5e'),_0x9da1('0x5f'),'ContactId','ListId',_0x9da1('0x60'),_0x9da1('0x61'),_0x9da1('0x62')],squel['select']()['field'](_0x9da1('0x63'),_0x9da1('0x5e'))[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x5f'))['field'](_0x9da1('0x66'),_0x9da1('0x67'))[_0x9da1('0x64')](_0x9da1('0x68'),'ListId')[_0x9da1('0x64')](_0x9da1('0x69'),_0x9da1('0x60'))['field'](_0x9da1('0x65'),_0x9da1('0x61'))[_0x9da1('0x64')]('NOW()',_0x9da1('0x62'))[_0x9da1('0x6a')]('cm_hopper_final')[_0x9da1('0x38')]('VoiceQueueId\x20=\x20?',_0x7cfa7e[_0x9da1('0x46')]['id']['toString']())[_0x9da1('0x38')](_0x9da1('0x6b'),_0x7cfa7e[_0x9da1('0x44')][_0x9da1('0x6c')][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x6e'))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()[_0x9da1('0x64')](_0x9da1('0x5e'))[_0x9da1('0x6a')]('cm_hopper')[_0x9da1('0x38')](_0x9da1('0x71'),_0x7cfa7e[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]()))[_0x9da1('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x9da1('0x70')]()[_0x9da1('0x64')]('calleridnum')['from'](_0x9da1('0x72'))[_0x9da1('0x38')](_0x9da1('0x71'),_0x7cfa7e[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x73')))[_0x9da1('0x74')](_0x9da1('0x67')))[_0x9da1('0x6d')]();return db[_0x9da1('0x49')][_0x9da1('0x2e')](_0x266533);}return[];})[_0x9da1('0x24')](respondWithResult(_0xdd3997,null))['catch'](handleError(_0xdd3997,null));};exports[_0x9da1('0x75')]=function(_0x3a0a84,_0x3f9782,_0x30b6fc){return db[_0x9da1('0x76')]['find']({'where':{'id':_0x3a0a84[_0x9da1('0x46')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x3f9782,null))['then'](function(_0x33b625){var _0x5a0533;if(_0x33b625){_0x5a0533=squel[_0x9da1('0x5c')]()['into'](_0x9da1('0x77'))[_0x9da1('0x5d')]([_0x9da1('0x5e'),_0x9da1('0x5f'),_0x9da1('0x67'),_0x9da1('0x78'),_0x9da1('0x79'),_0x9da1('0x61'),_0x9da1('0x62')],squel[_0x9da1('0x70')]()[_0x9da1('0x64')](_0x9da1('0x63'),'phone')[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x5f'))[_0x9da1('0x64')](_0x9da1('0x66'),_0x9da1('0x67'))['field']('ANY_VALUE(ListId)',_0x9da1('0x78'))[_0x9da1('0x64')](_0x9da1('0x7a'),'CampaignId')[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x61'))[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x62'))[_0x9da1('0x6a')]('cm_hopper_final')[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84['params']['id']['toString']())[_0x9da1('0x38')]('state\x20=\x20?',_0x3a0a84['body'][_0x9da1('0x6c')][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x6e'))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()[_0x9da1('0x64')]('phone')['from'](_0x9da1('0x77'))[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]()))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()['field'](_0x9da1('0x7c'))['from'](_0x9da1('0x72'))[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x73')))['group'](_0x9da1('0x67')))['toString']();return db[_0x9da1('0x49')][_0x9da1('0x2e')](_0x5a0533);}return[];})[_0x9da1('0x24')](respondWithResult(_0x3f9782,null))[_0x9da1('0x41')](handleError(_0x3f9782,null));};exports['checkContactHopper']=function(_0x3310af,_0x1f93bf,_0x2afe1e){return db[_0x9da1('0x7d')][_0x9da1('0x7e')]({'where':{'VoiceQueueId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x60')],'CampaignId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x79')],'ContactId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x67')]}})[_0x9da1('0x24')](handleEntityNotFound(_0x1f93bf,null))[_0x9da1('0x24')](function(_0x32ff53){if(_0x32ff53){return _0x32ff53;}return null;})['then'](respondWithResult(_0x1f93bf,null))[_0x9da1('0x41')](handleError(_0x1f93bf,null));};
\ No newline at end of file
index 8c4c8c5..317b67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa509=['bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','calleridnum','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x34df4a,_0x209d10){var _0x145c69=function(_0xb9bcbd){while(--_0xb9bcbd){_0x34df4a['push'](_0x34df4a['shift']());}};_0x145c69(++_0x209d10);}(_0xa509,0x1bb));var _0x9a50=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa509[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x9a50('0x0'));var util=require(_0x9a50('0x1'));var logger=require(_0x9a50('0x2'))(_0x9a50('0x3'));var moment=require(_0x9a50('0x4'));var BPromise=require(_0x9a50('0x5'));var rp=require(_0x9a50('0x6'));var fs=require('fs');var path=require(_0x9a50('0x7'));var rimraf=require(_0x9a50('0x8'));var config=require(_0x9a50('0x9'));var attributes=require(_0x9a50('0xa'));module[_0x9a50('0xb')]=function(_0x3c4b65,_0x10e4cc){return _0x3c4b65['define']('CmHopperFinal',attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0x9a50('0xc')]},{'name':_0x9a50('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc824=['bluebird','request-promise','path','rimraf','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x3f83dc,_0x5c8047){var _0x3876b8=function(_0x1f8423){while(--_0x1f8423){_0x3f83dc['push'](_0x3f83dc['shift']());}};_0x3876b8(++_0x5c8047);}(_0xc824,0x1be));var _0x4c82=function(_0x4df42c,_0x47bd58){_0x4df42c=_0x4df42c-0x0;var _0x49b958=_0xc824[_0x4df42c];return _0x49b958;};'use strict';var _=require(_0x4c82('0x0'));var util=require('util');var logger=require(_0x4c82('0x1'))(_0x4c82('0x2'));var moment=require(_0x4c82('0x3'));var BPromise=require(_0x4c82('0x4'));var rp=require(_0x4c82('0x5'));var fs=require('fs');var path=require(_0x4c82('0x6'));var rimraf=require(_0x4c82('0x7'));var config=require('../../config/environment');var attributes=require(_0x4c82('0x8'));module[_0x4c82('0x9')]=function(_0x32d15a,_0x58d8ac){return _0x32d15a[_0x4c82('0xa')](_0x4c82('0xb'),attributes,{'tableName':_0x4c82('0xc'),'paranoid':![],'indexes':[{'name':_0x4c82('0xd'),'fields':[_0x4c82('0xd')]},{'name':_0x4c82('0xe'),'fields':[_0x4c82('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 1d36e9b..c861d55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x57d77f,_0x8dc47a){var _0x2e6379=function(_0x384074){while(--_0x384074){_0x57d77f['push'](_0x57d77f['shift']());}};_0x2e6379(++_0x8dc47a);}(_0x7a54,0x106));var _0x47a5=function(_0x1cf87b,_0x4873c7){_0x1cf87b=_0x1cf87b-0x0;var _0x2117b5=_0x7a54[_0x1cf87b];return _0x2117b5;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x52a12e,_0x98bb2){var _0x2b33f4=function(_0x39fff8){while(--_0x39fff8){_0x52a12e['push'](_0x52a12e['shift']());}};_0x2b33f4(++_0x98bb2);}(_0x7a54,0x106));var _0x47a5=function(_0x44ef70,_0x25f042){_0x44ef70=_0x44ef70-0x0;var _0x40b638=_0x7a54[_0x44ef70];return _0x40b638;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 544e5bf..f6441e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90ad=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperFinal.controller','isAuthenticated','index','/describe','describe','countContactsQueueCampaignHopperFinal','get','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','/:id','update','exports'];(function(_0x513fb7,_0x28a899){var _0x358d08=function(_0x461042){while(--_0x461042){_0x513fb7['push'](_0x513fb7['shift']());}};_0x358d08(++_0x28a899);}(_0x90ad,0x195));var _0xd90a=function(_0x412e27,_0x20a978){_0x412e27=_0x412e27-0x0;var _0x53da42=_0x90ad[_0x412e27];return _0x53da42;};'use strict';var multer=require(_0xd90a('0x0'));var util=require(_0xd90a('0x1'));var path=require(_0xd90a('0x2'));var timeout=require(_0xd90a('0x3'));var express=require(_0xd90a('0x4'));var router=express['Router']();var fs_extra=require(_0xd90a('0x5'));var auth=require(_0xd90a('0x6'));var interaction=require(_0xd90a('0x7'));var config=require('../../config/environment');var controller=require(_0xd90a('0x8'));router['get']('/',auth[_0xd90a('0x9')](),controller[_0xd90a('0xa')]);router['get'](_0xd90a('0xb'),auth[_0xd90a('0x9')](),controller[_0xd90a('0xc')]);router['get']('/:id',auth[_0xd90a('0x9')](),controller['show']);router['get']('/voice/queue/countAttributes/:id',auth[_0xd90a('0x9')](),controller[_0xd90a('0xd')]);router[_0xd90a('0xe')](_0xd90a('0xf'),auth['isAuthenticated'](),controller[_0xd90a('0x10')]);router[_0xd90a('0x11')](_0xd90a('0x12'),auth[_0xd90a('0x9')](),controller[_0xd90a('0x13')]);router[_0xd90a('0x11')](_0xd90a('0x14'),auth[_0xd90a('0x9')](),controller[_0xd90a('0x15')]);router[_0xd90a('0x11')]('/checkContactHopper',auth[_0xd90a('0x9')](),controller[_0xd90a('0x16')]);router[_0xd90a('0x17')](_0xd90a('0x18'),auth[_0xd90a('0x9')](),controller[_0xd90a('0x19')]);module[_0xd90a('0x1a')]=router;
\ No newline at end of file
+var _0x20d8=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/campaign/countAttributes/:id','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','update','exports','multer','util'];(function(_0x2b7c80,_0x1c7aa8){var _0x3aa76f=function(_0x350ab8){while(--_0x350ab8){_0x2b7c80['push'](_0x2b7c80['shift']());}};_0x3aa76f(++_0x1c7aa8);}(_0x20d8,0xee));var _0x820d=function(_0x11b6b8,_0x276037){_0x11b6b8=_0x11b6b8-0x0;var _0x27a952=_0x20d8[_0x11b6b8];return _0x27a952;};'use strict';var multer=require(_0x820d('0x0'));var util=require(_0x820d('0x1'));var path=require(_0x820d('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x820d('0x3')]();var fs_extra=require(_0x820d('0x4'));var auth=require(_0x820d('0x5'));var interaction=require(_0x820d('0x6'));var config=require(_0x820d('0x7'));var controller=require('./cmHopperFinal.controller');router[_0x820d('0x8')]('/',auth[_0x820d('0x9')](),controller[_0x820d('0xa')]);router['get'](_0x820d('0xb'),auth[_0x820d('0x9')](),controller[_0x820d('0xc')]);router['get'](_0x820d('0xd'),auth['isAuthenticated'](),controller[_0x820d('0xe')]);router['get']('/voice/queue/countAttributes/:id',auth[_0x820d('0x9')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x820d('0x8')](_0x820d('0xf'),auth[_0x820d('0x9')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x820d('0x10')](_0x820d('0x11'),auth['isAuthenticated'](),controller[_0x820d('0x12')]);router['post'](_0x820d('0x13'),auth[_0x820d('0x9')](),controller[_0x820d('0x14')]);router[_0x820d('0x10')](_0x820d('0x15'),auth[_0x820d('0x9')](),controller['checkContactHopper']);router['put'](_0x820d('0xd'),auth['isAuthenticated'](),controller[_0x820d('0x16')]);module[_0x820d('0x17')]=router;
\ No newline at end of file
index 05284e8..fe3b572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd417=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x15ac2f,_0x1878ed){var _0x36eb5b=function(_0xb172ea){while(--_0xb172ea){_0x15ac2f['push'](_0x15ac2f['shift']());}};_0x36eb5b(++_0x1878ed);}(_0xd417,0x1b5));var _0x7d41=function(_0x471a0b,_0x4fc388){_0x471a0b=_0x471a0b-0x0;var _0x5b7970=_0xd417[_0x471a0b];return _0x5b7970;};'use strict';var Sequelize=require(_0x7d41('0x0'));module[_0x7d41('0x1')]={'state':{'type':Sequelize[_0x7d41('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x7d41('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x7d41('0x3')]},'originatecalleridname':{'type':Sequelize[_0x7d41('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x7d41('0x3')]},'starttime':{'type':Sequelize[_0x7d41('0x4')]},'responsetime':{'type':Sequelize[_0x7d41('0x4')]},'answertime':{'type':Sequelize[_0x7d41('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x7d41('0x4')]},'ringtime':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x7d41('0x3')]},'campaign':{'type':Sequelize[_0x7d41('0x3')]},'campaigntype':{'type':Sequelize[_0x7d41('0x3')]},'membername':{'type':Sequelize[_0x7d41('0x3')]},'reason':{'type':Sequelize[_0x7d41('0x3')]},'amd':{'type':Sequelize[_0x7d41('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x7d41('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x7d41('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x7d41('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x7d41('0x4')]},'edited':{'type':Sequelize[_0x7d41('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x7d41('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x7d41('0x3')]}};
\ No newline at end of file
+var _0xae3d=['INTEGER','STRING','DATE','BOOLEAN','sequelize','exports'];(function(_0x273584,_0x40594e){var _0x434a40=function(_0x48bca4){while(--_0x48bca4){_0x273584['push'](_0x273584['shift']());}};_0x434a40(++_0x40594e);}(_0xae3d,0x1a2));var _0xdae3=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0xae3d[_0x32b542];return _0x554d54;};'use strict';var Sequelize=require(_0xdae3('0x0'));module[_0xdae3('0x1')]={'state':{'type':Sequelize[_0xdae3('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xdae3('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xdae3('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xdae3('0x3')]},'calleridnum':{'type':Sequelize[_0xdae3('0x3')]},'calleridname':{'type':Sequelize[_0xdae3('0x3')]},'starttime':{'type':Sequelize[_0xdae3('0x4')]},'responsetime':{'type':Sequelize[_0xdae3('0x4')]},'answertime':{'type':Sequelize[_0xdae3('0x4')]},'droptime':{'type':Sequelize[_0xdae3('0x4')]},'endtime':{'type':Sequelize[_0xdae3('0x4')]},'ringtime':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xdae3('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xdae3('0x3')]},'membername':{'type':Sequelize[_0xdae3('0x3')]},'reason':{'type':Sequelize[_0xdae3('0x3')]},'amd':{'type':Sequelize[_0xdae3('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0xdae3('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xdae3('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xdae3('0x4')]},'recallme':{'type':Sequelize[_0xdae3('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xdae3('0x4')]},'edited':{'type':Sequelize[_0xdae3('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xdae3('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xdae3('0x3')]}};
\ No newline at end of file
index 807da58..49e482a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bf2=['includeAll','find','catch','create','body','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','save','update','then','destroy','error','stack','name','send','index','CmHopperHistory','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','findAll','rows','show','params'];(function(_0x1b3564,_0x16c919){var _0x504069=function(_0x9322b6){while(--_0x9322b6){_0x1b3564['push'](_0x1b3564['shift']());}};_0x504069(++_0x16c919);}(_0x3bf2,0x13f));var _0x23bf=function(_0x5f4777,_0x1df9ba){_0x5f4777=_0x5f4777-0x0;var _0x187998=_0x3bf2[_0x5f4777];return _0x187998;};'use strict';var emlformat=require(_0x23bf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x23bf('0x1'));var jsonpatch=require(_0x23bf('0x2'));var rp=require(_0x23bf('0x3'));var moment=require(_0x23bf('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x23bf('0x5'));var util=require(_0x23bf('0x6'));var path=require(_0x23bf('0x7'));var sox=require(_0x23bf('0x8'));var csv=require(_0x23bf('0x9'));var ejs=require(_0x23bf('0xa'));var fs=require('fs');var fs_extra=require(_0x23bf('0xb'));var _=require(_0x23bf('0xc'));var squel=require(_0x23bf('0xd'));var crypto=require(_0x23bf('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x23bf('0x9'));var querystring=require(_0x23bf('0xf'));var Papa=require(_0x23bf('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x23bf('0x11'));var as=require(_0x23bf('0x12'));var hardwareService=require(_0x23bf('0x13'));var logger=require(_0x23bf('0x14'))(_0x23bf('0x15'));var utils=require(_0x23bf('0x16'));var config=require(_0x23bf('0x17'));var licenseUtil=require(_0x23bf('0x18'));var db=require(_0x23bf('0x19'))['db'];function respondWithStatusCode(_0x4e7b83,_0xb283be){_0xb283be=_0xb283be||0xcc;return function(_0x452c79){if(_0x452c79){return _0x4e7b83[_0x23bf('0x1a')](_0xb283be);}return _0x4e7b83[_0x23bf('0x1b')](_0xb283be)[_0x23bf('0x1c')]();};}function respondWithResult(_0x430216,_0xcc6d29){_0xcc6d29=_0xcc6d29||0xc8;return function(_0x112b02){if(_0x112b02){return _0x430216['status'](_0xcc6d29)[_0x23bf('0x1d')](_0x112b02);}};}function respondWithFilteredResult(_0x395feb,_0x1f5c37){return function(_0x2f8f2a){if(_0x2f8f2a){var _0x4ed412=typeof _0x1f5c37[_0x23bf('0x1e')]==='undefined'&&typeof _0x1f5c37[_0x23bf('0x1f')]===_0x23bf('0x20');var _0x373090=_0x2f8f2a[_0x23bf('0x21')];var _0x2da1d2=_0x4ed412?0x0:_0x1f5c37['offset'];var _0xdca15a=_0x4ed412?_0x2f8f2a[_0x23bf('0x21')]:_0x1f5c37[_0x23bf('0x1e')]+_0x1f5c37['limit'];var _0x440dbc;if(_0xdca15a>=_0x373090){_0xdca15a=_0x373090;_0x440dbc=0xc8;}else{_0x440dbc=0xce;}_0x395feb[_0x23bf('0x1b')](_0x440dbc);return _0x395feb['set'](_0x23bf('0x22'),_0x2da1d2+'-'+_0xdca15a+'/'+_0x373090)[_0x23bf('0x1d')](_0x2f8f2a);}return null;};}function patchUpdates(_0x1fe031){return function(_0xa66b2){try{jsonpatch['apply'](_0xa66b2,_0x1fe031,!![]);}catch(_0xb78295){return BPromise['reject'](_0xb78295);}return _0xa66b2[_0x23bf('0x23')]();};}function saveUpdates(_0x4ccbb6,_0x385ff3){return function(_0x2e6018){if(_0x2e6018){return _0x2e6018[_0x23bf('0x24')](_0x4ccbb6)[_0x23bf('0x25')](function(_0x553236){return _0x553236;});}return null;};}function removeEntity(_0x47757f,_0x369a21){return function(_0x448cd5){if(_0x448cd5){return _0x448cd5[_0x23bf('0x26')]()[_0x23bf('0x25')](function(){_0x47757f[_0x23bf('0x1b')](0xcc)[_0x23bf('0x1c')]();});}};}function handleEntityNotFound(_0x4878f6,_0x1a3fd0){return function(_0x1813c5){if(!_0x1813c5){_0x4878f6[_0x23bf('0x1a')](0x194);}return _0x1813c5;};}function handleError(_0xc83b9b,_0x40ae8c){_0x40ae8c=_0x40ae8c||0x1f4;return function(_0x4d99d7){logger[_0x23bf('0x27')](_0x4d99d7[_0x23bf('0x28')]);if(_0x4d99d7[_0x23bf('0x29')]){delete _0x4d99d7[_0x23bf('0x29')];}_0xc83b9b[_0x23bf('0x1b')](_0x40ae8c)[_0x23bf('0x2a')](_0x4d99d7);};}exports[_0x23bf('0x2b')]=function(_0x4985f0,_0x3fc3b2){var _0x1784ba={},_0x597c8c={},_0x7af657={'count':0x0,'rows':[]};var _0x31e343=_['map'](db[_0x23bf('0x2c')][_0x23bf('0x2d')],function(_0x362b0d){return{'name':_0x362b0d[_0x23bf('0x2e')],'type':_0x362b0d[_0x23bf('0x2f')][_0x23bf('0x30')]};});_0x597c8c[_0x23bf('0x31')]=_[_0x23bf('0x32')](_0x31e343,_0x23bf('0x29'));_0x597c8c[_0x23bf('0x33')]=_[_0x23bf('0x34')](_0x4985f0[_0x23bf('0x33')]);_0x597c8c[_0x23bf('0x35')]=_[_0x23bf('0x36')](_0x597c8c[_0x23bf('0x31')],_0x597c8c[_0x23bf('0x33')]);_0x1784ba[_0x23bf('0x37')]=_['intersection'](_0x597c8c[_0x23bf('0x31')],qs['fields'](_0x4985f0[_0x23bf('0x33')][_0x23bf('0x38')]));_0x1784ba['attributes']=_0x1784ba[_0x23bf('0x37')][_0x23bf('0x39')]?_0x1784ba[_0x23bf('0x37')]:_0x597c8c[_0x23bf('0x31')];if(!_0x4985f0['query'][_0x23bf('0x3a')](_0x23bf('0x3b'))){_0x1784ba['limit']=qs[_0x23bf('0x1f')](_0x4985f0[_0x23bf('0x33')][_0x23bf('0x1f')]);_0x1784ba['offset']=qs['offset'](_0x4985f0[_0x23bf('0x33')]['offset']);}_0x1784ba[_0x23bf('0x3c')]=qs[_0x23bf('0x3d')](_0x4985f0[_0x23bf('0x33')][_0x23bf('0x3d')]);_0x1784ba[_0x23bf('0x3e')]=qs[_0x23bf('0x35')](_['pick'](_0x4985f0[_0x23bf('0x33')],_0x597c8c[_0x23bf('0x35')]),_0x31e343);if(_0x4985f0[_0x23bf('0x33')][_0x23bf('0x3f')]){_0x1784ba[_0x23bf('0x3e')]=_[_0x23bf('0x40')](_0x1784ba['where'],{'$or':_['map'](_0x31e343,function(_0x5e8248){if(_0x5e8248[_0x23bf('0x2f')]!=='VIRTUAL'){var _0x329661={};_0x329661[_0x5e8248[_0x23bf('0x29')]]={'$like':'%'+_0x4985f0[_0x23bf('0x33')][_0x23bf('0x3f')]+'%'};return _0x329661;}})});}_0x1784ba=_[_0x23bf('0x40')]({},_0x1784ba,_0x4985f0[_0x23bf('0x41')]);var _0x2ca1c8={'where':_0x1784ba[_0x23bf('0x3e')]};return db[_0x23bf('0x2c')][_0x23bf('0x21')](_0x2ca1c8)[_0x23bf('0x25')](function(_0x5074b8){_0x7af657[_0x23bf('0x21')]=_0x5074b8;if(_0x4985f0[_0x23bf('0x33')]['includeAll']){_0x1784ba[_0x23bf('0x42')]=[{'all':!![]}];}return db[_0x23bf('0x2c')][_0x23bf('0x43')](_0x1784ba);})[_0x23bf('0x25')](function(_0x3d321e){_0x7af657[_0x23bf('0x44')]=_0x3d321e;return _0x7af657;})[_0x23bf('0x25')](respondWithFilteredResult(_0x3fc3b2,_0x1784ba))['catch'](handleError(_0x3fc3b2,null));};exports[_0x23bf('0x45')]=function(_0x7d7332,_0x1df82f){var _0x407c16={'raw':!![],'where':{'id':_0x7d7332[_0x23bf('0x46')]['id']}},_0x4cafb7={};_0x4cafb7[_0x23bf('0x31')]=_[_0x23bf('0x34')](db[_0x23bf('0x2c')]['rawAttributes']);_0x4cafb7[_0x23bf('0x33')]=_['keys'](_0x7d7332[_0x23bf('0x33')]);_0x4cafb7[_0x23bf('0x35')]=_[_0x23bf('0x36')](_0x4cafb7[_0x23bf('0x31')],_0x4cafb7[_0x23bf('0x33')]);_0x407c16[_0x23bf('0x37')]=_[_0x23bf('0x36')](_0x4cafb7[_0x23bf('0x31')],qs[_0x23bf('0x38')](_0x7d7332[_0x23bf('0x33')][_0x23bf('0x38')]));_0x407c16[_0x23bf('0x37')]=_0x407c16[_0x23bf('0x37')]['length']?_0x407c16[_0x23bf('0x37')]:_0x4cafb7[_0x23bf('0x31')];if(_0x7d7332[_0x23bf('0x33')][_0x23bf('0x47')]){_0x407c16['include']=[{'all':!![]}];}_0x407c16=_['merge']({},_0x407c16,_0x7d7332[_0x23bf('0x41')]);return db[_0x23bf('0x2c')][_0x23bf('0x48')](_0x407c16)[_0x23bf('0x25')](handleEntityNotFound(_0x1df82f,null))[_0x23bf('0x25')](respondWithResult(_0x1df82f,null))[_0x23bf('0x49')](handleError(_0x1df82f,null));};exports[_0x23bf('0x4a')]=function(_0x33680a,_0x4dd238){return db[_0x23bf('0x2c')][_0x23bf('0x4a')](_0x33680a[_0x23bf('0x4b')],{})[_0x23bf('0x25')](respondWithResult(_0x4dd238,0xc9))['catch'](handleError(_0x4dd238,null));};exports[_0x23bf('0x4c')]=function(_0x49cfb6,_0x343e5e){return db['CmHopperHistory'][_0x23bf('0x4c')]()['then'](respondWithResult(_0x343e5e,null))[_0x23bf('0x49')](handleError(_0x343e5e,null));};exports[_0x23bf('0x24')]=function(_0xc75639,_0x220a26){if(_0xc75639[_0x23bf('0x4b')][_0x23bf('0x4d')]){delete _0xc75639[_0x23bf('0x4b')]['uniqueid'];}return db[_0x23bf('0x2c')][_0x23bf('0x48')]({'where':{'uniqueid':_0xc75639[_0x23bf('0x46')]['id']}})[_0x23bf('0x25')](handleEntityNotFound(_0x220a26,null))[_0x23bf('0x25')](saveUpdates(_0xc75639[_0x23bf('0x4b')],null))[_0x23bf('0x25')](respondWithResult(_0x220a26,null))[_0x23bf('0x49')](handleError(_0x220a26,null));};
\ No newline at end of file
+var _0x1971=['length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','CmHopperHistory','include','findAll','rows','keys','includeAll','options','catch','create','body','describe','update','uniqueid','find','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','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','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','key','model','query','attributes','intersection','fields'];(function(_0x1217cf,_0x1171dc){var _0x280148=function(_0x1de5f3){while(--_0x1de5f3){_0x1217cf['push'](_0x1217cf['shift']());}};_0x280148(++_0x1171dc);}(_0x1971,0x18a));var _0x1197=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x1971[_0x13ea00];return _0x1f7347;};'use strict';var emlformat=require(_0x1197('0x0'));var rimraf=require(_0x1197('0x1'));var zipdir=require(_0x1197('0x2'));var jsonpatch=require(_0x1197('0x3'));var rp=require('request-promise');var moment=require(_0x1197('0x4'));var BPromise=require(_0x1197('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1197('0x6'));var sox=require(_0x1197('0x7'));var csv=require(_0x1197('0x8'));var ejs=require(_0x1197('0x9'));var fs=require('fs');var fs_extra=require(_0x1197('0xa'));var _=require(_0x1197('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1197('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1197('0x8'));var querystring=require(_0x1197('0xd'));var Papa=require(_0x1197('0xe'));var Redis=require(_0x1197('0xf'));var authService=require(_0x1197('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1197('0x11'));var logger=require(_0x1197('0x12'))('api');var utils=require(_0x1197('0x13'));var config=require(_0x1197('0x14'));var licenseUtil=require(_0x1197('0x15'));var db=require(_0x1197('0x16'))['db'];function respondWithStatusCode(_0x523cbf,_0xc37231){_0xc37231=_0xc37231||0xcc;return function(_0x9834f8){if(_0x9834f8){return _0x523cbf[_0x1197('0x17')](_0xc37231);}return _0x523cbf[_0x1197('0x18')](_0xc37231)[_0x1197('0x19')]();};}function respondWithResult(_0x29ed1d,_0x5245c0){_0x5245c0=_0x5245c0||0xc8;return function(_0x36a26d){if(_0x36a26d){return _0x29ed1d[_0x1197('0x18')](_0x5245c0)[_0x1197('0x1a')](_0x36a26d);}};}function respondWithFilteredResult(_0x24283a,_0x57c2c1){return function(_0x4fe7cd){if(_0x4fe7cd){var _0x53db25=typeof _0x57c2c1[_0x1197('0x1b')]===_0x1197('0x1c')&&typeof _0x57c2c1[_0x1197('0x1d')]===_0x1197('0x1c');var _0x2070f4=_0x4fe7cd[_0x1197('0x1e')];var _0x17b1ce=_0x53db25?0x0:_0x57c2c1['offset'];var _0x67c54=_0x53db25?_0x4fe7cd[_0x1197('0x1e')]:_0x57c2c1[_0x1197('0x1b')]+_0x57c2c1[_0x1197('0x1d')];var _0x345e49;if(_0x67c54>=_0x2070f4){_0x67c54=_0x2070f4;_0x345e49=0xc8;}else{_0x345e49=0xce;}_0x24283a[_0x1197('0x18')](_0x345e49);return _0x24283a[_0x1197('0x1f')](_0x1197('0x20'),_0x17b1ce+'-'+_0x67c54+'/'+_0x2070f4)[_0x1197('0x1a')](_0x4fe7cd);}return null;};}function patchUpdates(_0x224f43){return function(_0x96c9f3){try{jsonpatch[_0x1197('0x21')](_0x96c9f3,_0x224f43,!![]);}catch(_0x1f49e1){return BPromise[_0x1197('0x22')](_0x1f49e1);}return _0x96c9f3[_0x1197('0x23')]();};}function saveUpdates(_0x13bdd6,_0x3fb90){return function(_0x27b294){if(_0x27b294){return _0x27b294['update'](_0x13bdd6)[_0x1197('0x24')](function(_0x511505){return _0x511505;});}return null;};}function removeEntity(_0x11ca2c,_0x413093){return function(_0x342549){if(_0x342549){return _0x342549[_0x1197('0x25')]()[_0x1197('0x24')](function(){_0x11ca2c[_0x1197('0x18')](0xcc)[_0x1197('0x19')]();});}};}function handleEntityNotFound(_0xfb133a,_0x303c7a){return function(_0x1837a0){if(!_0x1837a0){_0xfb133a['sendStatus'](0x194);}return _0x1837a0;};}function handleError(_0xdc2799,_0x3bc033){_0x3bc033=_0x3bc033||0x1f4;return function(_0x444492){logger[_0x1197('0x26')](_0x444492[_0x1197('0x27')]);if(_0x444492[_0x1197('0x28')]){delete _0x444492[_0x1197('0x28')];}_0xdc2799[_0x1197('0x18')](_0x3bc033)[_0x1197('0x29')](_0x444492);};}exports[_0x1197('0x2a')]=function(_0x42284b,_0x1a883a){var _0x2a9e62={},_0x11f002={},_0x58b398={'count':0x0,'rows':[]};var _0x14af5a=_[_0x1197('0x2b')](db['CmHopperHistory']['rawAttributes'],function(_0x52f21a){return{'name':_0x52f21a['fieldName'],'type':_0x52f21a['type'][_0x1197('0x2c')]};});_0x11f002[_0x1197('0x2d')]=_[_0x1197('0x2b')](_0x14af5a,_0x1197('0x28'));_0x11f002[_0x1197('0x2e')]=_['keys'](_0x42284b['query']);_0x11f002['filters']=_['intersection'](_0x11f002[_0x1197('0x2d')],_0x11f002[_0x1197('0x2e')]);_0x2a9e62[_0x1197('0x2f')]=_[_0x1197('0x30')](_0x11f002[_0x1197('0x2d')],qs[_0x1197('0x31')](_0x42284b['query']['fields']));_0x2a9e62['attributes']=_0x2a9e62[_0x1197('0x2f')][_0x1197('0x32')]?_0x2a9e62[_0x1197('0x2f')]:_0x11f002['model'];if(!_0x42284b[_0x1197('0x2e')][_0x1197('0x33')]('nolimit')){_0x2a9e62['limit']=qs[_0x1197('0x1d')](_0x42284b[_0x1197('0x2e')][_0x1197('0x1d')]);_0x2a9e62['offset']=qs[_0x1197('0x1b')](_0x42284b[_0x1197('0x2e')]['offset']);}_0x2a9e62[_0x1197('0x34')]=qs['sort'](_0x42284b['query'][_0x1197('0x35')]);_0x2a9e62[_0x1197('0x36')]=qs[_0x1197('0x37')](_[_0x1197('0x38')](_0x42284b['query'],_0x11f002[_0x1197('0x37')]),_0x14af5a);if(_0x42284b['query'][_0x1197('0x39')]){_0x2a9e62[_0x1197('0x36')]=_['merge'](_0x2a9e62['where'],{'$or':_['map'](_0x14af5a,function(_0x523a19){if(_0x523a19['type']!=='VIRTUAL'){var _0x45a99c={};_0x45a99c[_0x523a19[_0x1197('0x28')]]={'$like':'%'+_0x42284b[_0x1197('0x2e')][_0x1197('0x39')]+'%'};return _0x45a99c;}})});}_0x2a9e62=_[_0x1197('0x3a')]({},_0x2a9e62,_0x42284b['options']);var _0x494c00={'where':_0x2a9e62[_0x1197('0x36')]};return db[_0x1197('0x3b')]['count'](_0x494c00)[_0x1197('0x24')](function(_0x9154db){_0x58b398[_0x1197('0x1e')]=_0x9154db;if(_0x42284b[_0x1197('0x2e')]['includeAll']){_0x2a9e62[_0x1197('0x3c')]=[{'all':!![]}];}return db[_0x1197('0x3b')][_0x1197('0x3d')](_0x2a9e62);})[_0x1197('0x24')](function(_0x4897ca){_0x58b398[_0x1197('0x3e')]=_0x4897ca;return _0x58b398;})[_0x1197('0x24')](respondWithFilteredResult(_0x1a883a,_0x2a9e62))['catch'](handleError(_0x1a883a,null));};exports['show']=function(_0x43f5ab,_0x3a14a3){var _0x1cb294={'raw':!![],'where':{'id':_0x43f5ab['params']['id']}},_0xea2d54={};_0xea2d54[_0x1197('0x2d')]=_[_0x1197('0x3f')](db[_0x1197('0x3b')]['rawAttributes']);_0xea2d54[_0x1197('0x2e')]=_[_0x1197('0x3f')](_0x43f5ab[_0x1197('0x2e')]);_0xea2d54[_0x1197('0x37')]=_[_0x1197('0x30')](_0xea2d54[_0x1197('0x2d')],_0xea2d54[_0x1197('0x2e')]);_0x1cb294[_0x1197('0x2f')]=_[_0x1197('0x30')](_0xea2d54[_0x1197('0x2d')],qs['fields'](_0x43f5ab['query'][_0x1197('0x31')]));_0x1cb294[_0x1197('0x2f')]=_0x1cb294[_0x1197('0x2f')][_0x1197('0x32')]?_0x1cb294[_0x1197('0x2f')]:_0xea2d54[_0x1197('0x2d')];if(_0x43f5ab[_0x1197('0x2e')][_0x1197('0x40')]){_0x1cb294[_0x1197('0x3c')]=[{'all':!![]}];}_0x1cb294=_['merge']({},_0x1cb294,_0x43f5ab[_0x1197('0x41')]);return db['CmHopperHistory']['find'](_0x1cb294)[_0x1197('0x24')](handleEntityNotFound(_0x3a14a3,null))[_0x1197('0x24')](respondWithResult(_0x3a14a3,null))[_0x1197('0x42')](handleError(_0x3a14a3,null));};exports[_0x1197('0x43')]=function(_0x4814e4,_0x97adc7){return db[_0x1197('0x3b')][_0x1197('0x43')](_0x4814e4[_0x1197('0x44')],{})['then'](respondWithResult(_0x97adc7,0xc9))[_0x1197('0x42')](handleError(_0x97adc7,null));};exports[_0x1197('0x45')]=function(_0x2f4332,_0x5dd315){return db[_0x1197('0x3b')][_0x1197('0x45')]()[_0x1197('0x24')](respondWithResult(_0x5dd315,null))[_0x1197('0x42')](handleError(_0x5dd315,null));};exports[_0x1197('0x46')]=function(_0xc193e0,_0x2d1f94){if(_0xc193e0['body'][_0x1197('0x47')]){delete _0xc193e0[_0x1197('0x44')][_0x1197('0x47')];}return db[_0x1197('0x3b')][_0x1197('0x48')]({'where':{'uniqueid':_0xc193e0[_0x1197('0x49')]['id']}})[_0x1197('0x24')](handleEntityNotFound(_0x2d1f94,null))[_0x1197('0x24')](saveUpdates(_0xc193e0[_0x1197('0x44')],null))[_0x1197('0x24')](respondWithResult(_0x2d1f94,null))[_0x1197('0x42')](handleError(_0x2d1f94,null));};
\ No newline at end of file
index 3cee873..c70027c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2f=['cm_hopper_history','endtime','uniqueid','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','CmHopperHistory'];(function(_0x262461,_0x503056){var _0x162672=function(_0x45bea6){while(--_0x45bea6){_0x262461['push'](_0x262461['shift']());}};_0x162672(++_0x503056);}(_0x7a2f,0x99));var _0xf7a2=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x7a2f[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xf7a2('0x0'));var util=require(_0xf7a2('0x1'));var logger=require('../../config/logger')(_0xf7a2('0x2'));var moment=require(_0xf7a2('0x3'));var BPromise=require(_0xf7a2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf7a2('0x5'));var rimraf=require(_0xf7a2('0x6'));var config=require(_0xf7a2('0x7'));var attributes=require(_0xf7a2('0x8'));module[_0xf7a2('0x9')]=function(_0x2680b9,_0x5698e1){return _0x2680b9[_0xf7a2('0xa')](_0xf7a2('0xb'),attributes,{'tableName':_0xf7a2('0xc'),'paranoid':![],'indexes':[{'name':_0xf7a2('0xd'),'fields':['endtime']},{'name':_0xf7a2('0xe'),'fields':[_0xf7a2('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x50e5=['cm_hopper_history','endtime','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define'];(function(_0x1abc8d,_0x1e9760){var _0xa3c72f=function(_0x14addc){while(--_0x14addc){_0x1abc8d['push'](_0x1abc8d['shift']());}};_0xa3c72f(++_0x1e9760);}(_0x50e5,0xb7));var _0x550e=function(_0x441e59,_0x290d77){_0x441e59=_0x441e59-0x0;var _0x46e468=_0x50e5[_0x441e59];return _0x46e468;};'use strict';var _=require(_0x550e('0x0'));var util=require(_0x550e('0x1'));var logger=require('../../config/logger')(_0x550e('0x2'));var moment=require(_0x550e('0x3'));var BPromise=require(_0x550e('0x4'));var rp=require(_0x550e('0x5'));var fs=require('fs');var path=require(_0x550e('0x6'));var rimraf=require(_0x550e('0x7'));var config=require(_0x550e('0x8'));var attributes=require(_0x550e('0x9'));module[_0x550e('0xa')]=function(_0x3d8c9b,_0x863e3b){return _0x3d8c9b[_0x550e('0xb')]('CmHopperHistory',attributes,{'tableName':_0x550e('0xc'),'paranoid':![],'indexes':[{'name':_0x550e('0xd'),'fields':['endtime']},{'name':_0x550e('0xe'),'fields':[_0x550e('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 4045d4b..d1b9dfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee64=['../../config/utils','../../config/logger','client','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CmHopperHistory','create','body','options','raw','then','CreateCmHopperHistory','debug','AvgHandleTime','findAll','COUNT','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2011,\x201,\x20null','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','where','campaign','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x1fc84d,_0x3f469d){var _0x2658fa=function(_0x189ad0){while(--_0x189ad0){_0x1fc84d['push'](_0x1fc84d['shift']());}};_0x2658fa(++_0x3f469d);}(_0xee64,0x14d));var _0x4ee6=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xee64[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x4ee6('0x0'));var util=require(_0x4ee6('0x1'));var moment=require(_0x4ee6('0x2'));var BPromise=require(_0x4ee6('0x3'));var rs=require(_0x4ee6('0x4'));var fs=require('fs');var Redis=require(_0x4ee6('0x5'));var db=require(_0x4ee6('0x6'))['db'];var utils=require(_0x4ee6('0x7'));var logger=require(_0x4ee6('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4ee6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e2374,_0x55e889,_0x53756f){return new BPromise(function(_0x57d90a,_0x17afbe){return client['request'](_0x2e2374,_0x53756f)['then'](function(_0x14131c){logger[_0x4ee6('0xa')](_0x4ee6('0xb'),_0x55e889,_0x4ee6('0xc'));logger['debug'](_0x4ee6('0xd'),_0x55e889,_0x4ee6('0xc'),JSON[_0x4ee6('0xe')](_0x14131c));if(_0x14131c[_0x4ee6('0xf')]){if(_0x14131c[_0x4ee6('0xf')][_0x4ee6('0x10')]===0x1f4){logger[_0x4ee6('0xf')](_0x4ee6('0xb'),_0x55e889,_0x14131c[_0x4ee6('0xf')]['message']);return _0x17afbe(_0x14131c['error'][_0x4ee6('0x11')]);}logger[_0x4ee6('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x55e889,_0x14131c[_0x4ee6('0xf')][_0x4ee6('0x11')]);return _0x57d90a(_0x14131c['error']['message']);}else{logger[_0x4ee6('0xa')](_0x4ee6('0xb'),_0x55e889,'request\x20sent');_0x57d90a(_0x14131c['result'][_0x4ee6('0x11')]);}})[_0x4ee6('0x12')](function(_0xe79049){logger[_0x4ee6('0xf')](_0x4ee6('0xb'),_0x55e889,_0xe79049);_0x17afbe(_0xe79049);});});}exports['CreateCmHopperHistory']=function(_0x253ce0){var _0x1d1cad=this;return new Promise(function(_0x42a1c5,_0x5984d8){return db[_0x4ee6('0x13')][_0x4ee6('0x14')](_0x253ce0[_0x4ee6('0x15')],{'raw':_0x253ce0[_0x4ee6('0x16')]?_0x253ce0[_0x4ee6('0x16')][_0x4ee6('0x17')]===undefined?!![]:![]:!![]})[_0x4ee6('0x18')](function(_0x16df0a){logger['info'](_0x4ee6('0x19'),_0x253ce0);logger[_0x4ee6('0x1a')](_0x4ee6('0x19'),_0x253ce0,JSON['stringify'](_0x16df0a));_0x42a1c5(_0x16df0a);})[_0x4ee6('0x12')](function(_0x5e5786){logger[_0x4ee6('0xf')]('CreateCmHopperHistory',_0x5e5786[_0x4ee6('0x11')],_0x253ce0);_0x5984d8(_0x1d1cad[_0x4ee6('0xf')](0x1f4,_0x5e5786[_0x4ee6('0x11')]));});});};exports[_0x4ee6('0x1b')]=function(_0x324cd4){var _0x5d09bb=this;return new Promise(function(_0x284742,_0x43755e){return db[_0x4ee6('0x13')][_0x4ee6('0x1c')]({'raw':_0x324cd4[_0x4ee6('0x16')]?_0x324cd4[_0x4ee6('0x16')][_0x4ee6('0x17')]===undefined?!![]:![]:!![],'where':_0x324cd4[_0x4ee6('0x16')]?_0x324cd4[_0x4ee6('0x16')]['where']||null:null,'attributes':[[db['sequelize']['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')][_0x4ee6('0x1f')]('id')),_0x4ee6('0x20')],[db['sequelize']['fn']('COUNT',db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x22')))),_0x4ee6('0x23')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal']('`state`\x20=\x2010,\x201,\x20null'))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x24')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x25'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal'](_0x4ee6('0x26')))),_0x4ee6('0x27')],[db['sequelize']['fn'](_0x4ee6('0x25'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x28')))),_0x4ee6('0x29')]]})['then'](function(_0x565dff){logger['info'](_0x4ee6('0x1b'),_0x324cd4);logger['debug'](_0x4ee6('0x1b'),_0x324cd4,JSON[_0x4ee6('0xe')](_0x565dff));_0x284742(_0x565dff);})['catch'](function(_0x115fc6){logger[_0x4ee6('0xf')](_0x4ee6('0x1b'),_0x115fc6[_0x4ee6('0x11')],_0x324cd4);_0x43755e(_0x5d09bb[_0x4ee6('0xf')](0x1f4,_0x115fc6['message']));});});};exports['GetVoiceQueueHopperHistory']=function(_0x1132d4){var _0x203723=this;return new Promise(function(_0x498dec,_0x2b7527){return db['CmHopperHistory']['findAll']({'raw':_0x1132d4[_0x4ee6('0x16')]?_0x1132d4[_0x4ee6('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1132d4[_0x4ee6('0x16')]?_0x1132d4[_0x4ee6('0x16')][_0x4ee6('0x2a')]||null:null,'attributes':[[_0x4ee6('0x2b'),_0x4ee6('0x2c')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db['sequelize']['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x2d')))),'outboundNoSuchCallsDay'],[db[_0x4ee6('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x4ee6('0x21')](_0x4ee6('0x2e')))),'outboundNoAnswerCallsDay'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db['sequelize']['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x22')))),_0x4ee6('0x2f')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal'](_0x4ee6('0x30')))),_0x4ee6('0x31')],[db['sequelize']['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x32')))),'outboundCongestionCallsDay'],[db[_0x4ee6('0x1e')]['fn']('COUNT',db[_0x4ee6('0x1e')]['fn']('IF',db['sequelize'][_0x4ee6('0x21')](_0x4ee6('0x33')))),_0x4ee6('0x34')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x35')))),'outboundDropCallsDayCallersExit'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x36')))),_0x4ee6('0x37')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal'](_0x4ee6('0x38')))),_0x4ee6('0x39')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')]('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db['sequelize']['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x3a')))),'outboundRejectCallsDay'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')]('`state`\x20=\x2016,\x201,\x20null'))),_0x4ee6('0x3b')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x3c')))),_0x4ee6('0x3d')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x3e')))),_0x4ee6('0x3f')]],'group':[_0x4ee6('0x2b')]})[_0x4ee6('0x18')](function(_0x4c9627){logger[_0x4ee6('0xa')](_0x4ee6('0x40'),_0x1132d4);logger[_0x4ee6('0x1a')](_0x4ee6('0x40'),_0x1132d4,JSON['stringify'](_0x4c9627));_0x498dec(_0x4c9627);})[_0x4ee6('0x12')](function(_0x10bafc){logger[_0x4ee6('0xf')]('GetVoiceQueueHopperHistory',_0x10bafc[_0x4ee6('0x11')],_0x1132d4);_0x2b7527(_0x203723[_0x4ee6('0xf')](0x1f4,_0x10bafc[_0x4ee6('0x11')]));});});};exports[_0x4ee6('0x41')]=function(_0x13126a){var _0x25d21c=this;return new Promise(function(_0x177b33,_0x315f1c){return db['CmHopperHistory'][_0x4ee6('0x1c')]({'raw':_0x13126a[_0x4ee6('0x16')]?_0x13126a[_0x4ee6('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x13126a[_0x4ee6('0x16')]?_0x13126a[_0x4ee6('0x16')][_0x4ee6('0x2a')]||null:null,'attributes':[[_0x4ee6('0x2b'),_0x4ee6('0x2c')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')][_0x4ee6('0x1f')]('id')),_0x4ee6('0x42')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x22')))),_0x4ee6('0x43')]],'group':['campaign']})[_0x4ee6('0x18')](function(_0x4f2773){logger[_0x4ee6('0xa')](_0x4ee6('0x41'),_0x13126a);logger['debug'](_0x4ee6('0x41'),_0x13126a,JSON[_0x4ee6('0xe')](_0x4f2773));_0x177b33(_0x4f2773);})[_0x4ee6('0x12')](function(_0x5e121d){logger['error'](_0x4ee6('0x41'),_0x5e121d[_0x4ee6('0x11')],_0x13126a);_0x315f1c(_0x25d21c[_0x4ee6('0xf')](0x1f4,_0x5e121d[_0x4ee6('0x11')]));});});};
\ No newline at end of file
+var _0x534d=['findAll','options','sequelize','COUNT','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','where','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','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','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','outboundReCallsDay','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateCmHopperHistory','create','body','raw','debug','AvgHandleTime','CmHopperHistory'];(function(_0x4bc53b,_0x39fc31){var _0x5743f5=function(_0x3db0ea){while(--_0x3db0ea){_0x4bc53b['push'](_0x4bc53b['shift']());}};_0x5743f5(++_0x39fc31);}(_0x534d,0x79));var _0xd534=function(_0x15823d,_0x1707a9){_0x15823d=_0x15823d-0x0;var _0x33eb53=_0x534d[_0x15823d];return _0x33eb53;};'use strict';var _=require(_0xd534('0x0'));var util=require(_0xd534('0x1'));var moment=require(_0xd534('0x2'));var BPromise=require(_0xd534('0x3'));var rs=require(_0xd534('0x4'));var fs=require('fs');var Redis=require(_0xd534('0x5'));var db=require(_0xd534('0x6'))['db'];var utils=require(_0xd534('0x7'));var logger=require(_0xd534('0x8'))(_0xd534('0x9'));var config=require(_0xd534('0xa'));var jayson=require(_0xd534('0xb'));var client=jayson[_0xd534('0xc')][_0xd534('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x1db778,_0x3c8772,_0x4419ee){return new BPromise(function(_0x1a00af,_0x2be8e1){return client['request'](_0x1db778,_0x4419ee)[_0xd534('0xe')](function(_0x37a2c8){logger[_0xd534('0xf')](_0xd534('0x10'),_0x3c8772,_0xd534('0x11'));logger['debug'](_0xd534('0x12'),_0x3c8772,_0xd534('0x11'),JSON[_0xd534('0x13')](_0x37a2c8));if(_0x37a2c8[_0xd534('0x14')]){if(_0x37a2c8[_0xd534('0x14')][_0xd534('0x15')]===0x1f4){logger[_0xd534('0x14')](_0xd534('0x10'),_0x3c8772,_0x37a2c8['error']['message']);return _0x2be8e1(_0x37a2c8[_0xd534('0x14')][_0xd534('0x16')]);}logger[_0xd534('0x14')](_0xd534('0x10'),_0x3c8772,_0x37a2c8[_0xd534('0x14')][_0xd534('0x16')]);return _0x1a00af(_0x37a2c8[_0xd534('0x14')][_0xd534('0x16')]);}else{logger[_0xd534('0xf')](_0xd534('0x10'),_0x3c8772,'request\x20sent');_0x1a00af(_0x37a2c8['result'][_0xd534('0x16')]);}})[_0xd534('0x17')](function(_0x398435){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x3c8772,_0x398435);_0x2be8e1(_0x398435);});});}exports[_0xd534('0x18')]=function(_0x477b62){var _0x36cc6c=this;return new Promise(function(_0xb097fd,_0x4d02b1){return db['CmHopperHistory'][_0xd534('0x19')](_0x477b62[_0xd534('0x1a')],{'raw':_0x477b62['options']?_0x477b62['options'][_0xd534('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x3c0f39){logger[_0xd534('0xf')](_0xd534('0x18'),_0x477b62);logger[_0xd534('0x1c')](_0xd534('0x18'),_0x477b62,JSON['stringify'](_0x3c0f39));_0xb097fd(_0x3c0f39);})['catch'](function(_0x25a176){logger['error'](_0xd534('0x18'),_0x25a176[_0xd534('0x16')],_0x477b62);_0x4d02b1(_0x36cc6c['error'](0x1f4,_0x25a176[_0xd534('0x16')]));});});};exports[_0xd534('0x1d')]=function(_0x3c030e){var _0x2e93fd=this;return new Promise(function(_0x549659,_0x526134){return db[_0xd534('0x1e')][_0xd534('0x1f')]({'raw':_0x3c030e[_0xd534('0x20')]?_0x3c030e['options'][_0xd534('0x1b')]===undefined?!![]:![]:!![],'where':_0x3c030e[_0xd534('0x20')]?_0x3c030e[_0xd534('0x20')]['where']||null:null,'attributes':[[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db['sequelize'][_0xd534('0x23')]('id')),_0xd534('0x24')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')]['literal'](_0xd534('0x25')))),_0xd534('0x26')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')][_0xd534('0x27')](_0xd534('0x28')))),_0xd534('0x29')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db['sequelize'][_0xd534('0x27')](_0xd534('0x2a')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0xd534('0x21')]['fn'](_0xd534('0x2b'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xd534('0x2c')))),_0xd534('0x2d')],[db['sequelize']['fn'](_0xd534('0x2b'),db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')]['literal'](_0xd534('0x2e')))),_0xd534('0x2f')]]})[_0xd534('0xe')](function(_0x4d9404){logger[_0xd534('0xf')](_0xd534('0x1d'),_0x3c030e);logger[_0xd534('0x1c')]('AvgHandleTime',_0x3c030e,JSON[_0xd534('0x13')](_0x4d9404));_0x549659(_0x4d9404);})[_0xd534('0x17')](function(_0x4fbd5d){logger[_0xd534('0x14')](_0xd534('0x1d'),_0x4fbd5d[_0xd534('0x16')],_0x3c030e);_0x526134(_0x2e93fd[_0xd534('0x14')](0x1f4,_0x4fbd5d['message']));});});};exports[_0xd534('0x30')]=function(_0x4ac69b){var _0x503fe7=this;return new Promise(function(_0x5bda69,_0x3d7980){return db[_0xd534('0x1e')][_0xd534('0x1f')]({'raw':_0x4ac69b[_0xd534('0x20')]?_0x4ac69b['options']['raw']===undefined?!![]:![]:!![],'where':_0x4ac69b[_0xd534('0x20')]?_0x4ac69b[_0xd534('0x20')][_0xd534('0x31')]||null:null,'attributes':[[_0xd534('0x32'),_0xd534('0x33')],[db[_0xd534('0x21')]['fn']('COUNT',db[_0xd534('0x21')]['fn']('IF',db['sequelize'][_0xd534('0x27')](_0xd534('0x34')))),_0xd534('0x35')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db['sequelize']['fn']('IF',db[_0xd534('0x21')]['literal'](_0xd534('0x36')))),_0xd534('0x37')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db['sequelize']['literal'](_0xd534('0x25')))),_0xd534('0x38')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')][_0xd534('0x27')](_0xd534('0x39')))),'outboundBusyCallsDay'],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db['sequelize']['literal'](_0xd534('0x3a')))),_0xd534('0x3b')],[db['sequelize']['fn'](_0xd534('0x22'),db['sequelize']['fn']('IF',db[_0xd534('0x21')][_0xd534('0x27')](_0xd534('0x3c')))),'outboundDropCallsDayTimeout'],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')][_0xd534('0x27')](_0xd534('0x3d')))),_0xd534('0x3e')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2012,\x201,\x20null'))),_0xd534('0x3f')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')][_0xd534('0x27')]('`state`\x20=\x2013,\x201,\x20null'))),_0xd534('0x40')],[db['sequelize']['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db['sequelize'][_0xd534('0x27')](_0xd534('0x41')))),_0xd534('0x42')],[db[_0xd534('0x21')]['fn']('COUNT',db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')][_0xd534('0x27')](_0xd534('0x43')))),_0xd534('0x44')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db['sequelize']['fn']('IF',db['sequelize'][_0xd534('0x27')](_0xd534('0x45')))),'outboundAnswerAgiCallsDay'],[db['sequelize']['fn']('COUNT',db[_0xd534('0x21')]['fn']('IF',db['sequelize'][_0xd534('0x27')](_0xd534('0x46')))),_0xd534('0x44')],[db[_0xd534('0x21')]['fn']('COUNT',db[_0xd534('0x21')]['fn']('IF',db[_0xd534('0x21')][_0xd534('0x27')](_0xd534('0x47')))),_0xd534('0x48')]],'group':[_0xd534('0x32')]})[_0xd534('0xe')](function(_0x597506){logger[_0xd534('0xf')](_0xd534('0x30'),_0x4ac69b);logger['debug']('GetVoiceQueueHopperHistory',_0x4ac69b,JSON[_0xd534('0x13')](_0x597506));_0x5bda69(_0x597506);})[_0xd534('0x17')](function(_0x439d13){logger[_0xd534('0x14')](_0xd534('0x30'),_0x439d13[_0xd534('0x16')],_0x4ac69b);_0x3d7980(_0x503fe7['error'](0x1f4,_0x439d13[_0xd534('0x16')]));});});};exports[_0xd534('0x49')]=function(_0x2b140a){var _0x4c8e59=this;return new Promise(function(_0x3646a4,_0x4d11e0){return db['CmHopperHistory'][_0xd534('0x1f')]({'raw':_0x2b140a[_0xd534('0x20')]?_0x2b140a[_0xd534('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x2b140a[_0xd534('0x20')]?_0x2b140a['options'][_0xd534('0x31')]||null:null,'attributes':[[_0xd534('0x32'),'name'],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db['sequelize'][_0xd534('0x23')]('id')),_0xd534('0x4a')],[db[_0xd534('0x21')]['fn'](_0xd534('0x22'),db[_0xd534('0x21')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x204,\x201,\x20null'))),_0xd534('0x4b')]],'group':[_0xd534('0x32')]})['then'](function(_0x5a35d3){logger[_0xd534('0xf')](_0xd534('0x49'),_0x2b140a);logger[_0xd534('0x1c')]('GetCampaignHopperHistory',_0x2b140a,JSON['stringify'](_0x5a35d3));_0x3646a4(_0x5a35d3);})['catch'](function(_0x24112f){logger[_0xd534('0x14')]('GetCampaignHopperHistory',_0x24112f['message'],_0x2b140a);_0x4d11e0(_0x4c8e59['error'](0x1f4,_0x24112f['message']));});});};
\ No newline at end of file
index fc2a325..491d192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6c=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','exports','multer','util','connect-timeout','../../components/auth/service'];(function(_0x510e7b,_0x199298){var _0x3a2ab1=function(_0x308c1b){while(--_0x308c1b){_0x510e7b['push'](_0x510e7b['shift']());}};_0x3a2ab1(++_0x199298);}(_0xbc6c,0xfb));var _0xcbc6=function(_0x4dbde9,_0x47df37){_0x4dbde9=_0x4dbde9-0x0;var _0x7b7296=_0xbc6c[_0x4dbde9];return _0x7b7296;};'use strict';var multer=require(_0xcbc6('0x0'));var util=require(_0xcbc6('0x1'));var path=require('path');var timeout=require(_0xcbc6('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xcbc6('0x3'));var interaction=require(_0xcbc6('0x4'));var config=require(_0xcbc6('0x5'));var controller=require('./cmHopperHistory.controller');router[_0xcbc6('0x6')]('/',auth[_0xcbc6('0x7')](),controller[_0xcbc6('0x8')]);router['get'](_0xcbc6('0x9'),auth['isAuthenticated'](),controller[_0xcbc6('0xa')]);router[_0xcbc6('0x6')](_0xcbc6('0xb'),auth['isAuthenticated'](),controller[_0xcbc6('0xc')]);router['post']('/',auth[_0xcbc6('0x7')](),controller[_0xcbc6('0xd')]);router[_0xcbc6('0xe')](_0xcbc6('0xb'),auth[_0xcbc6('0x7')](),controller[_0xcbc6('0xf')]);module[_0xcbc6('0x10')]=router;
\ No newline at end of file
+var _0x9746=['show','post','create','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','describe','/:id','isAuthenticated'];(function(_0x2823e7,_0x39ef0b){var _0x4f4c25=function(_0x11cf82){while(--_0x11cf82){_0x2823e7['push'](_0x2823e7['shift']());}};_0x4f4c25(++_0x39ef0b);}(_0x9746,0xf4));var _0x6974=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0x9746[_0xd0b415];return _0x2bdf2c;};'use strict';var multer=require(_0x6974('0x0'));var util=require(_0x6974('0x1'));var path=require(_0x6974('0x2'));var timeout=require(_0x6974('0x3'));var express=require(_0x6974('0x4'));var router=express[_0x6974('0x5')]();var fs_extra=require(_0x6974('0x6'));var auth=require(_0x6974('0x7'));var interaction=require(_0x6974('0x8'));var config=require(_0x6974('0x9'));var controller=require(_0x6974('0xa'));router[_0x6974('0xb')]('/',auth['isAuthenticated'](),controller[_0x6974('0xc')]);router[_0x6974('0xb')]('/describe',auth['isAuthenticated'](),controller[_0x6974('0xd')]);router[_0x6974('0xb')](_0x6974('0xe'),auth[_0x6974('0xf')](),controller[_0x6974('0x10')]);router[_0x6974('0x11')]('/',auth['isAuthenticated'](),controller[_0x6974('0x12')]);router['put'](_0x6974('0xe'),auth[_0x6974('0xf')](),controller['update']);module[_0x6974('0x13')]=router;
\ No newline at end of file
index 61fe6af..f68608f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d9=['sequelize','exports','STRING','name'];(function(_0x561a34,_0x41183a){var _0x319863=function(_0x2d3405){while(--_0x2d3405){_0x561a34['push'](_0x561a34['shift']());}};_0x319863(++_0x41183a);}(_0x41d9,0x13c));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x941d('0x0'));module[_0x941d('0x1')]={'name':{'type':Sequelize[_0x941d('0x2')],'unique':_0x941d('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x941d('0x2')]},'dialPrefix':{'type':Sequelize[_0x941d('0x2')]}};
\ No newline at end of file
+var _0x0fda=['STRING','name','sequelize'];(function(_0x544309,_0x3e76c7){var _0x398e1c=function(_0x1c5397){while(--_0x1c5397){_0x544309['push'](_0x544309['shift']());}};_0x398e1c(++_0x3e76c7);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x32154f,_0x4f7371){_0x32154f=_0x32154f-0x0;var _0x2fc7a8=_0x0fda[_0x32154f];return _0x2fc7a8;};'use strict';var Sequelize=require(_0xa0fd('0x0'));module['exports']={'name':{'type':Sequelize[_0xa0fd('0x1')],'unique':_0xa0fd('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa0fd('0x1')]},'dialPrefix':{'type':Sequelize[_0xa0fd('0x1')]}};
\ No newline at end of file
index d6d360e..2d6b492 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1025=['Lists','UserProfileResource','destroy','error','stack','name','send','index','map','CmList','type','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','limit','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','ListId','getDispositions','findOne','Disposition','hasOwnProperty','order','pick','removeDispositions','ids','addContacts','tags','isArray','join','omit','success','errors','push','message','Malformed\x20request\x20syntax','CmCustomField','CustomFields','CmContact','concat','format','cf_%d','raw','getContacts','getContactsCsv','ContactItemType','OrderBy','alias','select','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','field','c.cf_','item','ItemTypeId\x20=\x20?','additionalPhone_','description','cm_contact_has_items','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','setHeader','Content-type','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','info','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','then','get'];(function(_0x1c80cd,_0x467166){var _0x279944=function(_0x2966c8){while(--_0x2966c8){_0x1c80cd['push'](_0x1c80cd['shift']());}};_0x279944(++_0x467166);}(_0x1025,0x7a));var _0x5102=function(_0x2876a0,_0x5a09e3){_0x2876a0=_0x2876a0-0x0;var _0x5c4aae=_0x1025[_0x2876a0];return _0x5c4aae;};'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('request-promise');var moment=require(_0x5102('0x0'));var BPromise=require(_0x5102('0x1'));var Mustache=require(_0x5102('0x2'));var util=require(_0x5102('0x3'));var path=require(_0x5102('0x4'));var sox=require(_0x5102('0x5'));var csv=require('to-csv');var ejs=require(_0x5102('0x6'));var fs=require('fs');var fs_extra=require(_0x5102('0x7'));var _=require(_0x5102('0x8'));var squel=require(_0x5102('0x9'));var crypto=require(_0x5102('0xa'));var jsforce=require(_0x5102('0xb'));var deskjs=require(_0x5102('0xc'));var toCsv=require(_0x5102('0xd'));var querystring=require(_0x5102('0xe'));var Papa=require('papaparse');var Redis=require(_0x5102('0xf'));var authService=require(_0x5102('0x10'));var qs=require(_0x5102('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5102('0x12'));var logger=require('../../config/logger')(_0x5102('0x13'));var utils=require(_0x5102('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x5102('0x15'));var db=require(_0x5102('0x16'))['db'];var csv_results;config[_0x5102('0x17')]=_[_0x5102('0x18')](config[_0x5102('0x17')],{'host':_0x5102('0x19'),'port':0x18eb});var socket=require(_0x5102('0x1a'))(new Redis(config[_0x5102('0x17')]));require('./cmList.socket')[_0x5102('0x1b')](socket);function respondWithStatusCode(_0x1ff048,_0x23c38d){_0x23c38d=_0x23c38d||0xcc;return function(_0x516240){if(_0x516240){return _0x1ff048[_0x5102('0x1c')](_0x23c38d);}return _0x1ff048[_0x5102('0x1d')](_0x23c38d)[_0x5102('0x1e')]();};}function respondWithResult(_0x51c44d,_0xfdc6a){_0xfdc6a=_0xfdc6a||0xc8;return function(_0x35b214){if(_0x35b214){return _0x51c44d[_0x5102('0x1d')](_0xfdc6a)[_0x5102('0x1f')](_0x35b214);}};}function respondWithFilteredResult(_0x2f56e8,_0x36d431){return function(_0x5eabc4){if(_0x5eabc4){var _0x52da5b=typeof _0x36d431[_0x5102('0x20')]==='undefined'&&typeof _0x36d431['limit']===_0x5102('0x21');var _0x1a931d=_0x5eabc4['count'];var _0x2b5d38=_0x52da5b?0x0:_0x36d431['offset'];var _0x55db65=_0x52da5b?_0x5eabc4[_0x5102('0x22')]:_0x36d431[_0x5102('0x20')]+_0x36d431['limit'];var _0x5ebe54;if(_0x55db65>=_0x1a931d){_0x55db65=_0x1a931d;_0x5ebe54=0xc8;}else{_0x5ebe54=0xce;}_0x2f56e8[_0x5102('0x1d')](_0x5ebe54);return _0x2f56e8[_0x5102('0x23')](_0x5102('0x24'),_0x2b5d38+'-'+_0x55db65+'/'+_0x1a931d)[_0x5102('0x1f')](_0x5eabc4);}return null;};}function patchUpdates(_0x27f25d){return function(_0x60c8b3){try{jsonpatch['apply'](_0x60c8b3,_0x27f25d,!![]);}catch(_0x4bc2af){return BPromise[_0x5102('0x25')](_0x4bc2af);}return _0x60c8b3[_0x5102('0x26')]();};}function saveUpdates(_0x496696,_0x54bb74){return function(_0x11c96f){if(_0x11c96f){return _0x11c96f['update'](_0x496696)[_0x5102('0x27')](function(_0x35e8b5){return _0x35e8b5;});}return null;};}function removeEntity(_0x3cab62,_0x240c74){return function(_0x4593dd){if(_0x4593dd){return _0x4593dd['destroy']()[_0x5102('0x27')](function(){var _0x4790c7=_0x4593dd[_0x5102('0x28')]({'plain':!![]});var _0x571aa7=_0x5102('0x29');return db[_0x5102('0x2a')][_0x5102('0x2b')]({'where':{'type':_0x571aa7,'resourceId':_0x4790c7['id']}})[_0x5102('0x27')](function(){return _0x4593dd;});})[_0x5102('0x27')](function(){_0x3cab62[_0x5102('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49efc9,_0x193ec4){return function(_0xd46a3a){if(!_0xd46a3a){_0x49efc9['sendStatus'](0x194);}return _0xd46a3a;};}function handleError(_0x3ee6c4,_0x2c160d){_0x2c160d=_0x2c160d||0x1f4;return function(_0x218e72){logger[_0x5102('0x2c')](_0x218e72[_0x5102('0x2d')]);if(_0x218e72[_0x5102('0x2e')]){delete _0x218e72['name'];}_0x3ee6c4[_0x5102('0x1d')](_0x2c160d)[_0x5102('0x2f')](_0x218e72);};}exports[_0x5102('0x30')]=function(_0x5d5f1f,_0x35a137){var _0x2afd15={},_0x24e50b={},_0x5b3fc5={'count':0x0,'rows':[]};var _0x1ec7f0=_[_0x5102('0x31')](db[_0x5102('0x32')]['rawAttributes'],function(_0x4c152d){return{'name':_0x4c152d['fieldName'],'type':_0x4c152d[_0x5102('0x33')][_0x5102('0x34')]};});_0x24e50b['model']=_[_0x5102('0x31')](_0x1ec7f0,_0x5102('0x2e'));_0x24e50b['query']=_[_0x5102('0x35')](_0x5d5f1f[_0x5102('0x36')]);_0x24e50b[_0x5102('0x37')]=_[_0x5102('0x38')](_0x24e50b[_0x5102('0x39')],_0x24e50b['query']);_0x2afd15[_0x5102('0x3a')]=_[_0x5102('0x38')](_0x24e50b[_0x5102('0x39')],qs['fields'](_0x5d5f1f['query'][_0x5102('0x3b')]));_0x2afd15[_0x5102('0x3a')]=_0x2afd15[_0x5102('0x3a')][_0x5102('0x3c')]?_0x2afd15[_0x5102('0x3a')]:_0x24e50b[_0x5102('0x39')];if(!_0x5d5f1f[_0x5102('0x36')]['hasOwnProperty'](_0x5102('0x3d'))){_0x2afd15['limit']=qs[_0x5102('0x3e')](_0x5d5f1f['query'][_0x5102('0x3e')]);_0x2afd15['offset']=qs[_0x5102('0x20')](_0x5d5f1f[_0x5102('0x36')]['offset']);}_0x2afd15['order']=qs[_0x5102('0x3f')](_0x5d5f1f[_0x5102('0x36')][_0x5102('0x3f')]);_0x2afd15[_0x5102('0x40')]=qs[_0x5102('0x37')](_['pick'](_0x5d5f1f[_0x5102('0x36')],_0x24e50b[_0x5102('0x37')]),_0x1ec7f0);if(_0x5d5f1f[_0x5102('0x36')][_0x5102('0x41')]){_0x2afd15[_0x5102('0x40')]=_[_0x5102('0x42')](_0x2afd15[_0x5102('0x40')],{'$or':_[_0x5102('0x31')](_0x1ec7f0,function(_0x5ad34b){if(_0x5ad34b['type']!=='VIRTUAL'){var _0x4956bc={};_0x4956bc[_0x5ad34b[_0x5102('0x2e')]]={'$like':'%'+_0x5d5f1f['query'][_0x5102('0x41')]+'%'};return _0x4956bc;}})});}_0x2afd15=_[_0x5102('0x42')]({},_0x2afd15,_0x5d5f1f['options']);var _0x441813={'where':_0x2afd15[_0x5102('0x40')]};return db[_0x5102('0x32')][_0x5102('0x22')](_0x441813)[_0x5102('0x27')](function(_0x3a5ac1){_0x5b3fc5[_0x5102('0x22')]=_0x3a5ac1;if(_0x5d5f1f[_0x5102('0x36')][_0x5102('0x43')]){_0x2afd15[_0x5102('0x44')]=[{'all':!![]}];}return db[_0x5102('0x32')][_0x5102('0x45')](_0x2afd15);})[_0x5102('0x27')](function(_0x2b3808){_0x5b3fc5[_0x5102('0x46')]=_0x2b3808;return _0x5b3fc5;})[_0x5102('0x27')](respondWithFilteredResult(_0x35a137,_0x2afd15))[_0x5102('0x47')](handleError(_0x35a137,null));};exports[_0x5102('0x48')]=function(_0x580885,_0x3172bb){var _0x272d18={'raw':![],'where':{'id':_0x580885[_0x5102('0x49')]['id']}},_0x51241b={};_0x51241b[_0x5102('0x39')]=_['keys'](db[_0x5102('0x32')][_0x5102('0x4a')]);_0x51241b[_0x5102('0x36')]=_['keys'](_0x580885['query']);_0x51241b[_0x5102('0x37')]=_[_0x5102('0x38')](_0x51241b['model'],_0x51241b['query']);_0x272d18[_0x5102('0x3a')]=_['intersection'](_0x51241b[_0x5102('0x39')],qs['fields'](_0x580885[_0x5102('0x36')]['fields']));_0x272d18[_0x5102('0x3a')]=_0x272d18[_0x5102('0x3a')][_0x5102('0x3c')]?_0x272d18['attributes']:_0x51241b[_0x5102('0x39')];if(_0x580885[_0x5102('0x36')]['includeAll']){_0x272d18['include']=[{'all':!![]}];}_0x272d18=_[_0x5102('0x42')]({},_0x272d18,_0x580885[_0x5102('0x4b')]);return db[_0x5102('0x32')]['find'](_0x272d18)[_0x5102('0x27')](handleEntityNotFound(_0x3172bb,null))['then'](respondWithResult(_0x3172bb,null))[_0x5102('0x47')](handleError(_0x3172bb,null));};exports[_0x5102('0x4c')]=function(_0x22622b,_0x54caea){return db[_0x5102('0x32')][_0x5102('0x4c')](_0x22622b[_0x5102('0x4d')],{})[_0x5102('0x27')](function(_0x163049){var _0x6be13d=_0x22622b['user'][_0x5102('0x28')]({'plain':!![]});if(!_0x6be13d)throw new Error(_0x5102('0x4e'));if(_0x6be13d['role']===_0x5102('0x4f')){var _0x1acf09=_0x163049[_0x5102('0x28')]({'plain':!![]});var _0x1a9e3b=_0x5102('0x29');return db[_0x5102('0x50')][_0x5102('0x51')]({'where':{'name':_0x1a9e3b,'userProfileId':_0x6be13d[_0x5102('0x52')]},'raw':!![]})[_0x5102('0x27')](function(_0x3b5c71){if(_0x3b5c71&&_0x3b5c71['autoAssociation']===0x0){return db['UserProfileResource'][_0x5102('0x4c')]({'name':_0x1acf09[_0x5102('0x2e')],'resourceId':_0x1acf09['id'],'type':_0x3b5c71[_0x5102('0x2e')],'sectionId':_0x3b5c71['id']},{})[_0x5102('0x27')](function(){return _0x163049;});}else{return _0x163049;}})['catch'](function(_0x23ce3c){logger[_0x5102('0x2c')](_0x5102('0x53'),_0x23ce3c);throw _0x23ce3c;});}return _0x163049;})['then'](respondWithResult(_0x54caea,0xc9))['catch'](handleError(_0x54caea,null));};exports[_0x5102('0x54')]=function(_0x4cb322,_0x1a49bb){if(_0x4cb322[_0x5102('0x4d')]['id']){delete _0x4cb322[_0x5102('0x4d')]['id'];}return db[_0x5102('0x32')]['find']({'where':{'id':_0x4cb322[_0x5102('0x49')]['id']}})[_0x5102('0x27')](handleEntityNotFound(_0x1a49bb,null))[_0x5102('0x27')](saveUpdates(_0x4cb322[_0x5102('0x4d')],null))['then'](respondWithResult(_0x1a49bb,null))[_0x5102('0x47')](handleError(_0x1a49bb,null));};exports[_0x5102('0x2b')]=function(_0x55e093,_0x1333b3){return db[_0x5102('0x32')][_0x5102('0x51')]({'where':{'id':_0x55e093[_0x5102('0x49')]['id']}})['then'](handleEntityNotFound(_0x1333b3,null))['then'](removeEntity(_0x1333b3,null))[_0x5102('0x47')](handleError(_0x1333b3,null));};exports[_0x5102('0x55')]=function(_0x12d0e2,_0x5f552e){return db[_0x5102('0x32')][_0x5102('0x55')]()['then'](respondWithResult(_0x5f552e,null))[_0x5102('0x47')](handleError(_0x5f552e,null));};exports['addDisposition']=function(_0x12a722,_0x3b7bea,_0x35a1a4){if(_0x12a722[_0x5102('0x4d')]['id']){delete _0x12a722[_0x5102('0x4d')]['id'];}return db[_0x5102('0x32')][_0x5102('0x51')]({'where':{'id':_0x12a722[_0x5102('0x49')]['id']}})[_0x5102('0x27')](handleEntityNotFound(_0x3b7bea,null))[_0x5102('0x27')](function(_0x1284df){if(_0x1284df){_0x12a722[_0x5102('0x4d')][_0x5102('0x56')]=_0x1284df['id'];return db['Disposition'][_0x5102('0x4c')](_0x12a722[_0x5102('0x4d')]);}})[_0x5102('0x27')](respondWithResult(_0x3b7bea,null))['catch'](handleError(_0x3b7bea,null));};exports[_0x5102('0x57')]=function(_0x53e600,_0x318d1a,_0x15e790){var _0x45e722={'raw':![],'where':{}};var _0xb6c0cc={};var _0x4fbb5f={'count':0x0,'rows':[]};return db[_0x5102('0x32')][_0x5102('0x58')]({'where':{'id':_0x53e600['params']['id']}})[_0x5102('0x27')](handleEntityNotFound(_0x318d1a,null))[_0x5102('0x27')](function(_0x4d1481){if(_0x4d1481){_0xb6c0cc['model']=_['keys'](db[_0x5102('0x59')][_0x5102('0x4a')]);_0xb6c0cc[_0x5102('0x36')]=_[_0x5102('0x35')](_0x53e600[_0x5102('0x36')]);_0xb6c0cc[_0x5102('0x37')]=_[_0x5102('0x38')](_0xb6c0cc['model'],_0xb6c0cc[_0x5102('0x36')]);_0x45e722[_0x5102('0x3a')]=_['intersection'](_0xb6c0cc[_0x5102('0x39')],qs['fields'](_0x53e600[_0x5102('0x36')][_0x5102('0x3b')]));_0x45e722[_0x5102('0x3a')]=_0x45e722[_0x5102('0x3a')][_0x5102('0x3c')]?_0x45e722[_0x5102('0x3a')]:_0xb6c0cc[_0x5102('0x39')];if(!_0x53e600[_0x5102('0x36')][_0x5102('0x5a')](_0x5102('0x3d'))){_0x45e722[_0x5102('0x3e')]=qs[_0x5102('0x3e')](_0x53e600[_0x5102('0x36')][_0x5102('0x3e')]);_0x45e722[_0x5102('0x20')]=qs[_0x5102('0x20')](_0x53e600['query'][_0x5102('0x20')]);}_0x45e722[_0x5102('0x5b')]=qs[_0x5102('0x3f')](_0x53e600[_0x5102('0x36')]['sort']);_0x45e722['where']=qs[_0x5102('0x37')](_[_0x5102('0x5c')](_0x53e600[_0x5102('0x36')],_0xb6c0cc['filters']));_0x45e722[_0x5102('0x40')][_0x5102('0x56')]=_0x4d1481['id'];if(_0x53e600[_0x5102('0x36')][_0x5102('0x41')]){_0x45e722['where']=_[_0x5102('0x42')](_0x45e722[_0x5102('0x40')],{'$or':_['map'](_0x45e722['attributes'],function(_0x4dd5c5){var _0x4a0092={};_0x4a0092[_0x4dd5c5]={'$like':'%'+_0x53e600['query'][_0x5102('0x41')]+'%'};return _0x4a0092;})});}_0x45e722=_[_0x5102('0x42')]({},_0x45e722,_0x53e600[_0x5102('0x4b')]);return db['Disposition'][_0x5102('0x22')]({'where':_0x45e722['where']})[_0x5102('0x27')](function(_0x392b42){_0x4fbb5f[_0x5102('0x22')]=_0x392b42;if(_0x53e600[_0x5102('0x36')][_0x5102('0x43')]){_0x45e722['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x45e722);})['then'](function(_0x5ab8ed){_0x4fbb5f[_0x5102('0x46')]=_0x5ab8ed;return _0x4fbb5f;});}})['then'](respondWithFilteredResult(_0x318d1a,_0x45e722))[_0x5102('0x47')](handleError(_0x318d1a,null));};exports[_0x5102('0x5d')]=function(_0x1b45c7,_0x2ee85d,_0x554b5f){return db[_0x5102('0x32')]['find']({'where':{'id':_0x1b45c7[_0x5102('0x49')]['id']}})[_0x5102('0x27')](handleEntityNotFound(_0x2ee85d,null))[_0x5102('0x27')](function(_0x5e2e35){if(_0x5e2e35){return _0x5e2e35[_0x5102('0x5d')](_0x1b45c7[_0x5102('0x36')][_0x5102('0x5e')]);}})[_0x5102('0x27')](respondWithStatusCode(_0x2ee85d,null))['catch'](handleError(_0x2ee85d,null));};exports[_0x5102('0x5f')]=function(_0x21c1ef,_0x4869a6,_0x22c85c){return db[_0x5102('0x32')]['find']({'where':{'id':_0x21c1ef[_0x5102('0x49')]['id']}})[_0x5102('0x27')](handleEntityNotFound(_0x4869a6,null))['then'](function(_0x4059e7){if(_0x4059e7){var _0xdf7f6=[];var _0x25013a={'success':[],'errors':[]};return db['CmContact'][_0x5102('0x55')]()['then'](function(_0x101bc0){if(_0x21c1ef[_0x5102('0x4d')][_0x5102('0x60')]&&_[_0x5102('0x61')](_0x21c1ef[_0x5102('0x4d')][_0x5102('0x60')])){if(_0x21c1ef[_0x5102('0x4d')]['tags']['length']){_0x21c1ef[_0x5102('0x4d')]['tags']=_0x21c1ef[_0x5102('0x4d')][_0x5102('0x60')][_0x5102('0x62')](';')+';';}else{_0x21c1ef['body'][_0x5102('0x60')]=null;}}else{_0x21c1ef[_0x5102('0x4d')][_0x5102('0x60')]=null;}if(_0x21c1ef[_0x5102('0x4d')]&&_[_0x5102('0x61')](_0x21c1ef[_0x5102('0x4d')])){for(var _0x5902d2=0x0;_0x5902d2<_0x21c1ef['body']['length'];_0x5902d2+=0x1){_0x21c1ef[_0x5102('0x4d')][_0x5902d2][_0x5102('0x56')]=_0x21c1ef['params']['id'];_0xdf7f6['push'](_0x21c1ef[_0x5102('0x4d')][_0x5902d2]);}return BPromise['each'](_0xdf7f6,function(_0x3de97e){return db['CmContact']['create'](_[_0x5102('0x63')](_0x3de97e,[_0x5102('0x5e'),'id'])||{},{'fields':_['keys'](_0x101bc0),'raw':!![]})['then'](function(_0xc02ee7){_0x25013a[_0x5102('0x64')]['push'](_0xc02ee7['dataValues']);})[_0x5102('0x47')](function(_0x37eca8){_0x25013a[_0x5102('0x65')][_0x5102('0x66')]({'data':_0x3de97e,'error':_0x37eca8[_0x5102('0x67')]});});})[_0x5102('0x27')](function(_0x589a66){return _0x25013a;})[_0x5102('0x47')](function(_0x2d21c4){return _0x2d21c4;});}else{_0x4869a6[_0x5102('0x1d')](0x190)['json']({'message':_0x5102('0x68')});}});}})['then'](respondWithResult(_0x4869a6,null))[_0x5102('0x47')](handleError(_0x4869a6,null));};exports['getContacts']=function(_0x101d5f,_0x5add6f,_0x2e513a){var _0x2d5844;return db['CmList'][_0x5102('0x51')]({'where':{'id':_0x101d5f['params']['id']},'include':[{'model':db[_0x5102('0x69')],'as':_0x5102('0x6a')}]})[_0x5102('0x27')](handleEntityNotFound(_0x5add6f,null))[_0x5102('0x27')](function(_0x532b89){if(_0x532b89){_0x2d5844=_0x532b89;return db[_0x5102('0x6b')]['rawAttributes'];}})[_0x5102('0x27')](function(_0x5b2d45){if(_0x5b2d45){var _0x1e5adc={};var _0x22337a={};_0x22337a[_0x5102('0x39')]=_[_0x5102('0x6c')](_[_0x5102('0x35')](_0x5b2d45),_[_0x5102('0x31')](_0x2d5844[_0x5102('0x6a')],function(_0x372e27){return util[_0x5102('0x6d')](_0x5102('0x6e'),_0x372e27['id']);}));_0x22337a['query']=_['keys'](_0x101d5f[_0x5102('0x36')]);_0x22337a[_0x5102('0x37')]=_[_0x5102('0x38')](_0x22337a[_0x5102('0x39')],_0x22337a[_0x5102('0x36')]);_0x1e5adc[_0x5102('0x3a')]=_[_0x5102('0x38')](_0x22337a[_0x5102('0x39')],qs[_0x5102('0x3b')](_0x101d5f[_0x5102('0x36')][_0x5102('0x3b')]));_0x1e5adc[_0x5102('0x3a')]=_0x1e5adc[_0x5102('0x3a')][_0x5102('0x3c')]?_0x1e5adc[_0x5102('0x3a')]:_0x22337a[_0x5102('0x39')];if(!_0x101d5f[_0x5102('0x36')][_0x5102('0x5a')](_0x5102('0x3d'))){_0x1e5adc[_0x5102('0x3e')]=qs[_0x5102('0x3e')](_0x101d5f[_0x5102('0x36')][_0x5102('0x3e')]);_0x1e5adc['offset']=qs['offset'](_0x101d5f['query'][_0x5102('0x20')]);}_0x1e5adc[_0x5102('0x5b')]=qs['sort'](_0x101d5f[_0x5102('0x36')]['sort']);_0x1e5adc[_0x5102('0x40')]=qs[_0x5102('0x37')](_[_0x5102('0x5c')](_0x101d5f[_0x5102('0x36')],_0x22337a[_0x5102('0x37')]));_0x1e5adc[_0x5102('0x6f')]=!![];if(_0x101d5f[_0x5102('0x36')][_0x5102('0x41')]){_0x1e5adc[_0x5102('0x40')]=_['merge'](_0x1e5adc[_0x5102('0x40')],{'$or':_[_0x5102('0x31')](_0x1e5adc[_0x5102('0x3a')],function(_0x23965a){var _0x23b1a0={};_0x23b1a0[_0x23965a]={'$like':'%'+_0x101d5f[_0x5102('0x36')]['filter']+'%'};return _0x23b1a0;})});}_0x1e5adc=_[_0x5102('0x42')]({},_0x1e5adc,_0x101d5f[_0x5102('0x4b')]);return _0x2d5844[_0x5102('0x70')](_0x1e5adc);}})[_0x5102('0x27')](respondWithResult(_0x5add6f,null))[_0x5102('0x47')](handleError(_0x5add6f,null));};exports[_0x5102('0x71')]=function(_0x58e597,_0xf6becb,_0x4e9119){var _0x35ea17;var _0x23ea51;var _0x464e59;var _0x2b5c08=_0x58e597[_0x5102('0x49')]['id'];csv_results=[];return db[_0x5102('0x72')][_0x5102('0x45')]({'attributes':['id',_0x5102('0x2e')],'raw':!![],'order':[_0x5102('0x73')]})[_0x5102('0x27')](function(_0x3b0ce2){_0x35ea17=_0x3b0ce2;var _0x37d612=_['keys'](db[_0x5102('0x6b')][_0x5102('0x4a')]);return db[_0x5102('0x69')]['findAll']({'raw':!![],'attributes':['id',_0x5102('0x74')]})['then'](function(_0x418812){_0x23ea51=_0x418812;var _0x595b9c=squel[_0x5102('0x75')]()[_0x5102('0x3b')](_0x37d612)[_0x5102('0x76')](_0x5102('0x77'),'c')[_0x5102('0x40')](_0x5102('0x78'),_0x2b5c08)[_0x5102('0x40')](_0x5102('0x79'))[_0x5102('0x7a')]();for(var _0x401e78=0x0;_0x401e78<_0x23ea51[_0x5102('0x3c')];_0x401e78++){_0x595b9c[_0x5102('0x7b')](_0x5102('0x7c')+_0x23ea51[_0x401e78]['id'],'customField_'+_0x23ea51[_0x401e78][_0x5102('0x74')]);}for(var _0x401e78=0x0;_0x401e78<_0x35ea17[_0x5102('0x3c')];_0x401e78++){_0x595b9c[_0x5102('0x7b')](squel[_0x5102('0x75')]()[_0x5102('0x7b')](_0x5102('0x7d'))[_0x5102('0x76')]('cm_contact_has_items')[_0x5102('0x40')](_0x5102('0x7e'),_0x35ea17[_0x401e78]['id'])[_0x5102('0x40')]('CmContactId\x20=\x20c.id'),_0x5102('0x7f')+_0x35ea17[_0x401e78][_0x5102('0x2e')]);_0x595b9c['field'](squel[_0x5102('0x75')]()[_0x5102('0x7b')](_0x5102('0x80'))[_0x5102('0x76')](_0x5102('0x81'))[_0x5102('0x40')](_0x5102('0x7e'),_0x35ea17[_0x401e78]['id'])[_0x5102('0x40')](_0x5102('0x82')),_0x5102('0x83')+_0x35ea17[_0x401e78]['name']);}var _0x25633c=[];_0x25633c[_0x5102('0x66')](_0x595b9c['toString']());BPromise['each'](_0x25633c,handleQuery)[_0x5102('0x27')](function(_0x3760b1){handleQuery(_0x595b9c[_0x5102('0x84')]());var _0x39f349=csv_results[0x0];if(!_['isEmpty'](_0x39f349)){var _0x13792a=toCsv(_0x39f349);var _0x36cf39=Date['now']();fs[_0x5102('0x85')](util[_0x5102('0x6d')](_0x5102('0x86'),_0x2b5c08,_0x36cf39),_0x13792a);_0xf6becb['setHeader'](_0x5102('0x87'),_0x5102('0x88')+util['format'](_0x5102('0x89'),_0x2b5c08,_0x36cf39));_0xf6becb[_0x5102('0x8a')](_0x5102('0x8b'),'text/csv');return _0xf6becb['download'](util['format'](_0x5102('0x86'),_0x2b5c08,_0x36cf39));}else{return _0xf6becb['sendStatus'](0xcc);}});});});};exports['addCustomField']=function(_0x16f983,_0x55e74e,_0x5c5ce8){var _0x1a2416;delete _0x16f983[_0x5102('0x4d')]['id'];return db[_0x5102('0x32')][_0x5102('0x58')]({'where':{'id':_0x16f983['params']['id']}})[_0x5102('0x27')](handleEntityNotFound(_0x55e74e,null))[_0x5102('0x27')](function(_0x177f1d){if(_0x177f1d){return db[_0x5102('0x8c')][_0x5102('0x8d')](function(_0x51655a){return db['CmCustomField'][_0x5102('0x4c')](_0x16f983[_0x5102('0x4d')],{'transaction':_0x51655a})[_0x5102('0x27')](function(_0x4198ad){_0x1a2416=_0x4198ad;return _0x177f1d[_0x5102('0x8e')](_0x4198ad,{'transaction':_0x51655a});})[_0x5102('0x27')](function(){var _0x3dd6fb={'type':db[_0x5102('0x8f')][_0x5102('0x90')],'transaction':_0x51655a};switch(_0x16f983[_0x5102('0x4d')][_0x5102('0x33')]){case _0x5102('0x91'):_0x3dd6fb['type']=db['Sequelize'][_0x5102('0x90')];break;case _0x5102('0x92'):_0x3dd6fb[_0x5102('0x33')]=db[_0x5102('0x8f')][_0x5102('0x93')];break;case _0x5102('0x94'):_0x3dd6fb[_0x5102('0x33')]=db[_0x5102('0x8f')][_0x5102('0x95')];_0x3dd6fb['defaultValue']=![];break;default:}return db[_0x5102('0x8c')][_0x5102('0x96')][_0x5102('0x97')](_0x5102('0x77'),util[_0x5102('0x6d')]('cf_%s',_0x1a2416['id']),_0x3dd6fb);})['then'](function(){return _0x1a2416;});});}})['then'](respondWithResult(_0x55e74e,null))[_0x5102('0x47')](handleError(_0x55e74e,null));};exports[_0x5102('0x98')]=function(_0x184bc1,_0x363b80,_0x54c697){var _0x16aeec={};var _0x340638={};var _0x58a0a6;var _0x531189;return db[_0x5102('0x32')][_0x5102('0x58')]({'where':{'id':_0x184bc1[_0x5102('0x49')]['id']}})[_0x5102('0x27')](handleEntityNotFound(_0x363b80,null))[_0x5102('0x27')](function(_0x58b1){if(_0x58b1){_0x58a0a6=_0x58b1;_0x340638['model']=_[_0x5102('0x35')](db[_0x5102('0x69')]['rawAttributes']);_0x340638[_0x5102('0x36')]=_[_0x5102('0x35')](_0x184bc1[_0x5102('0x36')]);_0x340638[_0x5102('0x37')]=_[_0x5102('0x38')](_0x340638[_0x5102('0x39')],_0x340638[_0x5102('0x36')]);_0x16aeec[_0x5102('0x3a')]=_[_0x5102('0x38')](_0x340638[_0x5102('0x39')],qs[_0x5102('0x3b')](_0x184bc1[_0x5102('0x36')]['fields']));_0x16aeec[_0x5102('0x3a')]=_0x16aeec[_0x5102('0x3a')][_0x5102('0x3c')]?_0x16aeec[_0x5102('0x3a')]:_0x340638[_0x5102('0x39')];_0x16aeec[_0x5102('0x5b')]=qs[_0x5102('0x3f')](_0x184bc1[_0x5102('0x36')][_0x5102('0x3f')]);_0x16aeec['where']=qs[_0x5102('0x37')](_[_0x5102('0x5c')](_0x184bc1['query'],_0x340638[_0x5102('0x37')]));_0x16aeec[_0x5102('0x40')]=_['merge'](_0x16aeec[_0x5102('0x40')],{'$or':[{'ListId':_0x58b1['id']},{'ListId':null}]});if(_0x184bc1[_0x5102('0x36')][_0x5102('0x41')]){_0x16aeec['where']=_['merge'](_0x16aeec[_0x5102('0x40')],{'$or':_[_0x5102('0x31')](_0x16aeec[_0x5102('0x3a')],function(_0x244d22){var _0x4ab76a={};_0x4ab76a[_0x244d22]={'$like':'%'+_0x184bc1[_0x5102('0x36')][_0x5102('0x41')]+'%'};return _0x4ab76a;})});}_0x16aeec=_['merge']({},_0x16aeec,_0x184bc1[_0x5102('0x4b')]);return db[_0x5102('0x69')][_0x5102('0x99')](_0x16aeec);}})[_0x5102('0x27')](respondWithResult(_0x363b80,null))['catch'](handleError(_0x363b80,null));};exports[_0x5102('0x9a')]=function(_0x3e0661,_0x7bba0){return db[_0x5102('0x69')][_0x5102('0x99')]({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x7bba0,null))[_0x5102('0x27')](function(_0x4f4221){return _0x4f4221;})['then'](respondWithResult(_0x7bba0,null))[_0x5102('0x47')](handleError(_0x7bba0,null));};exports[_0x5102('0x9b')]=function(_0x1486ef,_0x2f3750,_0x4222b0){return db[_0x5102('0x32')][_0x5102('0x51')]({'where':{'id':_0x1486ef[_0x5102('0x49')]['id']}})['then'](handleEntityNotFound(_0x2f3750,null))[_0x5102('0x27')](function(_0x39d5c3){if(_0x39d5c3){return _0x39d5c3[_0x5102('0x9b')](_0x1486ef[_0x5102('0x4d')][_0x5102('0x5e')],_[_0x5102('0x63')](_0x1486ef[_0x5102('0x4d')],[_0x5102('0x5e'),'id'])||{})[_0x5102('0x9c')](function(_0x14ab76){for(var _0x356753=0x0;_0x356753<_0x1486ef[_0x5102('0x4d')][_0x5102('0x5e')][_0x5102('0x3c')];_0x356753+=0x1){socket[_0x5102('0x9d')](_0x5102('0x9e'),{'UserId':Number(_0x1486ef[_0x5102('0x4d')][_0x5102('0x5e')][_0x356753]),'CmListId':Number(_0x1486ef[_0x5102('0x49')]['id'])});}return _0x14ab76;});}})[_0x5102('0x27')](respondWithResult(_0x2f3750,null))[_0x5102('0x47')](handleError(_0x2f3750,null));};exports[_0x5102('0x9f')]=function(_0x8acbc7,_0x50d107,_0x566af8){return db['CmList'][_0x5102('0x51')]({'where':{'id':_0x8acbc7[_0x5102('0x49')]['id']}})['then'](handleEntityNotFound(_0x50d107,null))[_0x5102('0x27')](function(_0x24784c){if(_0x24784c){return _0x24784c[_0x5102('0x9f')](_0x8acbc7[_0x5102('0x36')]['ids'])[_0x5102('0x27')](function(){if(_[_0x5102('0x61')](_0x8acbc7[_0x5102('0x36')]['ids'])){for(var _0x9be4da=0x0;_0x9be4da<_0x8acbc7[_0x5102('0x36')][_0x5102('0x5e')][_0x5102('0x3c')];_0x9be4da+=0x1){socket[_0x5102('0x9d')](_0x5102('0xa0'),{'UserId':Number(_0x8acbc7[_0x5102('0x36')]['ids'][_0x9be4da]),'CmListId':Number(_0x8acbc7[_0x5102('0x49')]['id'])});}}else{socket['emit'](_0x5102('0xa0'),{'UserId':Number(_0x8acbc7[_0x5102('0x36')][_0x5102('0x5e')]),'CmListId':Number(_0x8acbc7[_0x5102('0x49')]['id'])});}});}})[_0x5102('0x27')](respondWithStatusCode(_0x50d107,null))[_0x5102('0x47')](handleError(_0x50d107,null));};exports[_0x5102('0xa1')]=function(_0x498772,_0xfea458,_0x1ff5ae){var _0x393cd4={};var _0x54d3bc={};var _0x5ad7b8;var _0x3e4487;return db['CmList'][_0x5102('0x58')]({'where':{'id':_0x498772['params']['id']}})['then'](handleEntityNotFound(_0xfea458,null))[_0x5102('0x27')](function(_0x4178fa){if(_0x4178fa){_0x5ad7b8=_0x4178fa;_0x54d3bc['model']=_[_0x5102('0x35')](db['User'][_0x5102('0x4a')]);_0x54d3bc[_0x5102('0x36')]=_[_0x5102('0x35')](_0x498772[_0x5102('0x36')]);_0x54d3bc[_0x5102('0x37')]=_[_0x5102('0x38')](_0x54d3bc[_0x5102('0x39')],_0x54d3bc[_0x5102('0x36')]);_0x393cd4[_0x5102('0x3a')]=_['intersection'](_0x54d3bc[_0x5102('0x39')],qs['fields'](_0x498772['query'][_0x5102('0x3b')]));_0x393cd4[_0x5102('0x3a')]=_0x393cd4[_0x5102('0x3a')][_0x5102('0x3c')]?_0x393cd4[_0x5102('0x3a')]:_0x54d3bc['model'];_0x393cd4[_0x5102('0x5b')]=qs[_0x5102('0x3f')](_0x498772[_0x5102('0x36')]['sort']);_0x393cd4['where']=qs[_0x5102('0x37')](_[_0x5102('0x5c')](_0x498772[_0x5102('0x36')],_0x54d3bc[_0x5102('0x37')]));if(_0x498772['query']['filter']){_0x393cd4['where']=_[_0x5102('0x42')](_0x393cd4[_0x5102('0x40')],{'$or':_[_0x5102('0x31')](_0x393cd4['attributes'],function(_0x55f53a){var _0x3c9c37={};_0x3c9c37[_0x55f53a]={'$like':'%'+_0x498772['query']['filter']+'%'};return _0x3c9c37;})});}_0x393cd4=_['merge']({},_0x393cd4,_0x498772['options']);return _0x5ad7b8[_0x5102('0xa1')](_0x393cd4);}})[_0x5102('0x27')](function(_0x37f003){if(_0x37f003){_0x3e4487=_0x37f003[_0x5102('0x3c')];if(!_0x498772[_0x5102('0x36')][_0x5102('0x5a')](_0x5102('0x3d'))){_0x393cd4[_0x5102('0x3e')]=qs['limit'](_0x498772[_0x5102('0x36')][_0x5102('0x3e')]);_0x393cd4[_0x5102('0x20')]=qs[_0x5102('0x20')](_0x498772[_0x5102('0x36')][_0x5102('0x20')]);}return _0x5ad7b8[_0x5102('0xa1')](_0x393cd4);}})[_0x5102('0x27')](function(_0x4f6936){if(_0x4f6936){return _0x4f6936?{'count':_0x3e4487,'rows':_0x4f6936}:null;}})[_0x5102('0x27')](respondWithResult(_0xfea458,null))['catch'](handleError(_0xfea458,null));};function handleQuery(_0x3bea2c){logger[_0x5102('0xa2')](_0x3bea2c);return db['sequelize'][_0x5102('0x36')](_0x3bea2c)['spread'](function(_0x45fd8a){csv_results[_0x5102('0x66')](_0x45fd8a);})[_0x5102('0x47')](function(_0x3bbd6d){logger[_0x5102('0x2c')](_0x3bbd6d[_0x5102('0x67')]);});}
\ No newline at end of file
+var _0xf9f4=['CmContactId\x20=\x20c.id','additionalPhone_','description','toString','isEmpty','now','format','Content-disposition','list_%d_%s.csv','setHeader','Content-type','text/csv','download','/tmp/list_%d_%s.csv','addCustomField','sequelize','addCustomFields','TEXT','text','Sequelize','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cf_%s','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','User','getAgents','rimraf','zip-dir','fast-json-patch','moment','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./cmList.socket','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','get','Lists','name','index','map','CmList','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','where','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','catch','create','body','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','getDispositions','findOne','sort','pick','removeDispositions','ids','addContacts','CmContact','tags','join','isArray','push','each','omit','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','cf_%d','merge','ContactItemType','OrderBy','alias','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','field','c.cf_','customField_','select','item','cm_contact_has_items','ItemTypeId\x20=\x20?'];(function(_0x2179f1,_0x21c653){var _0x176ec9=function(_0x4c4a4c){while(--_0x4c4a4c){_0x2179f1['push'](_0x2179f1['shift']());}};_0x176ec9(++_0x21c653);}(_0xf9f4,0x16e));var _0x4f9f=function(_0x280613,_0x37e163){_0x280613=_0x280613-0x0;var _0x2a3fa9=_0xf9f4[_0x280613];return _0x2a3fa9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4f9f('0x0'));var zipdir=require(_0x4f9f('0x1'));var jsonpatch=require(_0x4f9f('0x2'));var rp=require('request-promise');var moment=require(_0x4f9f('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x4f9f('0x4'));var sox=require(_0x4f9f('0x5'));var csv=require(_0x4f9f('0x6'));var ejs=require(_0x4f9f('0x7'));var fs=require('fs');var fs_extra=require(_0x4f9f('0x8'));var _=require(_0x4f9f('0x9'));var squel=require('squel');var crypto=require(_0x4f9f('0xa'));var jsforce=require(_0x4f9f('0xb'));var deskjs=require(_0x4f9f('0xc'));var toCsv=require(_0x4f9f('0x6'));var querystring=require(_0x4f9f('0xd'));var Papa=require(_0x4f9f('0xe'));var Redis=require(_0x4f9f('0xf'));var authService=require(_0x4f9f('0x10'));var qs=require(_0x4f9f('0x11'));var as=require(_0x4f9f('0x12'));var hardwareService=require(_0x4f9f('0x13'));var logger=require(_0x4f9f('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x4f9f('0x15'));var licenseUtil=require(_0x4f9f('0x16'));var db=require('../../mysqldb')['db'];var csv_results;config[_0x4f9f('0x17')]=_[_0x4f9f('0x18')](config[_0x4f9f('0x17')],{'host':_0x4f9f('0x19'),'port':0x18eb});var socket=require(_0x4f9f('0x1a'))(new Redis(config[_0x4f9f('0x17')]));require(_0x4f9f('0x1b'))['register'](socket);function respondWithStatusCode(_0x32acfa,_0x353502){_0x353502=_0x353502||0xcc;return function(_0x4ff44f){if(_0x4ff44f){return _0x32acfa[_0x4f9f('0x1c')](_0x353502);}return _0x32acfa['status'](_0x353502)[_0x4f9f('0x1d')]();};}function respondWithResult(_0x2df9c2,_0x2e1bd){_0x2e1bd=_0x2e1bd||0xc8;return function(_0x51a754){if(_0x51a754){return _0x2df9c2[_0x4f9f('0x1e')](_0x2e1bd)[_0x4f9f('0x1f')](_0x51a754);}};}function respondWithFilteredResult(_0x494d36,_0x4b966d){return function(_0x519ef4){if(_0x519ef4){var _0x399647=typeof _0x4b966d[_0x4f9f('0x20')]===_0x4f9f('0x21')&&typeof _0x4b966d[_0x4f9f('0x22')]===_0x4f9f('0x21');var _0x557481=_0x519ef4[_0x4f9f('0x23')];var _0x5795ce=_0x399647?0x0:_0x4b966d[_0x4f9f('0x20')];var _0x168db5=_0x399647?_0x519ef4[_0x4f9f('0x23')]:_0x4b966d[_0x4f9f('0x20')]+_0x4b966d['limit'];var _0x417dec;if(_0x168db5>=_0x557481){_0x168db5=_0x557481;_0x417dec=0xc8;}else{_0x417dec=0xce;}_0x494d36[_0x4f9f('0x1e')](_0x417dec);return _0x494d36['set'](_0x4f9f('0x24'),_0x5795ce+'-'+_0x168db5+'/'+_0x557481)['json'](_0x519ef4);}return null;};}function patchUpdates(_0x4baa82){return function(_0x20f669){try{jsonpatch[_0x4f9f('0x25')](_0x20f669,_0x4baa82,!![]);}catch(_0x137f5b){return BPromise['reject'](_0x137f5b);}return _0x20f669[_0x4f9f('0x26')]();};}function saveUpdates(_0x5bd766,_0x1c079a){return function(_0xf87e04){if(_0xf87e04){return _0xf87e04[_0x4f9f('0x27')](_0x5bd766)['then'](function(_0x368e28){return _0x368e28;});}return null;};}function removeEntity(_0x14e18c,_0x99be6e){return function(_0x2e979f){if(_0x2e979f){return _0x2e979f[_0x4f9f('0x28')]()[_0x4f9f('0x29')](function(){var _0x15871f=_0x2e979f[_0x4f9f('0x2a')]({'plain':!![]});var _0x13e973=_0x4f9f('0x2b');return db['UserProfileResource'][_0x4f9f('0x28')]({'where':{'type':_0x13e973,'resourceId':_0x15871f['id']}})[_0x4f9f('0x29')](function(){return _0x2e979f;});})[_0x4f9f('0x29')](function(){_0x14e18c[_0x4f9f('0x1e')](0xcc)[_0x4f9f('0x1d')]();});}};}function handleEntityNotFound(_0x2972e5,_0x4f619d){return function(_0x36c3b3){if(!_0x36c3b3){_0x2972e5[_0x4f9f('0x1c')](0x194);}return _0x36c3b3;};}function handleError(_0x152623,_0x45abc1){_0x45abc1=_0x45abc1||0x1f4;return function(_0x426775){logger['error'](_0x426775['stack']);if(_0x426775[_0x4f9f('0x2c')]){delete _0x426775[_0x4f9f('0x2c')];}_0x152623[_0x4f9f('0x1e')](_0x45abc1)['send'](_0x426775);};}exports[_0x4f9f('0x2d')]=function(_0x35fc98,_0x13b63f){var _0x210b4a={},_0x513516={},_0x24a507={'count':0x0,'rows':[]};var _0x13b279=_[_0x4f9f('0x2e')](db[_0x4f9f('0x2f')][_0x4f9f('0x30')],function(_0x23f626){return{'name':_0x23f626[_0x4f9f('0x31')],'type':_0x23f626[_0x4f9f('0x32')][_0x4f9f('0x33')]};});_0x513516['model']=_[_0x4f9f('0x2e')](_0x13b279,_0x4f9f('0x2c'));_0x513516[_0x4f9f('0x34')]=_[_0x4f9f('0x35')](_0x35fc98[_0x4f9f('0x34')]);_0x513516[_0x4f9f('0x36')]=_[_0x4f9f('0x37')](_0x513516[_0x4f9f('0x38')],_0x513516[_0x4f9f('0x34')]);_0x210b4a[_0x4f9f('0x39')]=_[_0x4f9f('0x37')](_0x513516[_0x4f9f('0x38')],qs[_0x4f9f('0x3a')](_0x35fc98[_0x4f9f('0x34')][_0x4f9f('0x3a')]));_0x210b4a[_0x4f9f('0x39')]=_0x210b4a[_0x4f9f('0x39')]['length']?_0x210b4a[_0x4f9f('0x39')]:_0x513516[_0x4f9f('0x38')];if(!_0x35fc98[_0x4f9f('0x34')][_0x4f9f('0x3b')](_0x4f9f('0x3c'))){_0x210b4a[_0x4f9f('0x22')]=qs[_0x4f9f('0x22')](_0x35fc98[_0x4f9f('0x34')][_0x4f9f('0x22')]);_0x210b4a['offset']=qs[_0x4f9f('0x20')](_0x35fc98[_0x4f9f('0x34')][_0x4f9f('0x20')]);}_0x210b4a[_0x4f9f('0x3d')]=qs['sort'](_0x35fc98[_0x4f9f('0x34')]['sort']);_0x210b4a[_0x4f9f('0x3e')]=qs[_0x4f9f('0x36')](_['pick'](_0x35fc98[_0x4f9f('0x34')],_0x513516['filters']),_0x13b279);if(_0x35fc98['query'][_0x4f9f('0x3f')]){_0x210b4a['where']=_['merge'](_0x210b4a[_0x4f9f('0x3e')],{'$or':_[_0x4f9f('0x2e')](_0x13b279,function(_0x39933b){if(_0x39933b[_0x4f9f('0x32')]!==_0x4f9f('0x40')){var _0x1e5680={};_0x1e5680[_0x39933b['name']]={'$like':'%'+_0x35fc98['query'][_0x4f9f('0x3f')]+'%'};return _0x1e5680;}})});}_0x210b4a=_['merge']({},_0x210b4a,_0x35fc98[_0x4f9f('0x41')]);var _0x44336c={'where':_0x210b4a[_0x4f9f('0x3e')]};return db[_0x4f9f('0x2f')][_0x4f9f('0x23')](_0x44336c)[_0x4f9f('0x29')](function(_0x3f48d8){_0x24a507[_0x4f9f('0x23')]=_0x3f48d8;if(_0x35fc98[_0x4f9f('0x34')][_0x4f9f('0x42')]){_0x210b4a[_0x4f9f('0x43')]=[{'all':!![]}];}return db[_0x4f9f('0x2f')][_0x4f9f('0x44')](_0x210b4a);})[_0x4f9f('0x29')](function(_0x10c7c7){_0x24a507[_0x4f9f('0x45')]=_0x10c7c7;return _0x24a507;})[_0x4f9f('0x29')](respondWithFilteredResult(_0x13b63f,_0x210b4a))['catch'](handleError(_0x13b63f,null));};exports[_0x4f9f('0x46')]=function(_0x247979,_0x1331a5){var _0x4480d0={'raw':![],'where':{'id':_0x247979[_0x4f9f('0x47')]['id']}},_0x2c56fe={};_0x2c56fe[_0x4f9f('0x38')]=_[_0x4f9f('0x35')](db['CmList']['rawAttributes']);_0x2c56fe['query']=_['keys'](_0x247979[_0x4f9f('0x34')]);_0x2c56fe[_0x4f9f('0x36')]=_[_0x4f9f('0x37')](_0x2c56fe['model'],_0x2c56fe[_0x4f9f('0x34')]);_0x4480d0[_0x4f9f('0x39')]=_[_0x4f9f('0x37')](_0x2c56fe['model'],qs['fields'](_0x247979[_0x4f9f('0x34')][_0x4f9f('0x3a')]));_0x4480d0[_0x4f9f('0x39')]=_0x4480d0[_0x4f9f('0x39')][_0x4f9f('0x48')]?_0x4480d0[_0x4f9f('0x39')]:_0x2c56fe[_0x4f9f('0x38')];if(_0x247979[_0x4f9f('0x34')][_0x4f9f('0x42')]){_0x4480d0[_0x4f9f('0x43')]=[{'all':!![]}];}_0x4480d0=_['merge']({},_0x4480d0,_0x247979[_0x4f9f('0x41')]);return db[_0x4f9f('0x2f')][_0x4f9f('0x49')](_0x4480d0)[_0x4f9f('0x29')](handleEntityNotFound(_0x1331a5,null))[_0x4f9f('0x29')](respondWithResult(_0x1331a5,null))[_0x4f9f('0x4a')](handleError(_0x1331a5,null));};exports[_0x4f9f('0x4b')]=function(_0x3cc1c6,_0x35b094){return db[_0x4f9f('0x2f')][_0x4f9f('0x4b')](_0x3cc1c6[_0x4f9f('0x4c')],{})[_0x4f9f('0x29')](function(_0x3c960d){var _0x128d2c=_0x3cc1c6[_0x4f9f('0x4d')][_0x4f9f('0x2a')]({'plain':!![]});if(!_0x128d2c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x128d2c['role']===_0x4f9f('0x4d')){var _0x57beb2=_0x3c960d[_0x4f9f('0x2a')]({'plain':!![]});var _0x39fed1='Lists';return db[_0x4f9f('0x4e')]['find']({'where':{'name':_0x39fed1,'userProfileId':_0x128d2c[_0x4f9f('0x4f')]},'raw':!![]})[_0x4f9f('0x29')](function(_0x4c502c){if(_0x4c502c&&_0x4c502c[_0x4f9f('0x50')]===0x0){return db['UserProfileResource'][_0x4f9f('0x4b')]({'name':_0x57beb2[_0x4f9f('0x2c')],'resourceId':_0x57beb2['id'],'type':_0x4c502c[_0x4f9f('0x2c')],'sectionId':_0x4c502c['id']},{})['then'](function(){return _0x3c960d;});}else{return _0x3c960d;}})[_0x4f9f('0x4a')](function(_0x583a6e){logger[_0x4f9f('0x51')](_0x4f9f('0x52'),_0x583a6e);throw _0x583a6e;});}return _0x3c960d;})[_0x4f9f('0x29')](respondWithResult(_0x35b094,0xc9))['catch'](handleError(_0x35b094,null));};exports[_0x4f9f('0x27')]=function(_0x451104,_0x43b289){if(_0x451104[_0x4f9f('0x4c')]['id']){delete _0x451104[_0x4f9f('0x4c')]['id'];}return db[_0x4f9f('0x2f')][_0x4f9f('0x49')]({'where':{'id':_0x451104['params']['id']}})['then'](handleEntityNotFound(_0x43b289,null))[_0x4f9f('0x29')](saveUpdates(_0x451104[_0x4f9f('0x4c')],null))[_0x4f9f('0x29')](respondWithResult(_0x43b289,null))['catch'](handleError(_0x43b289,null));};exports[_0x4f9f('0x28')]=function(_0x4b06c9,_0x236505){return db[_0x4f9f('0x2f')]['find']({'where':{'id':_0x4b06c9[_0x4f9f('0x47')]['id']}})['then'](handleEntityNotFound(_0x236505,null))[_0x4f9f('0x29')](removeEntity(_0x236505,null))[_0x4f9f('0x4a')](handleError(_0x236505,null));};exports[_0x4f9f('0x53')]=function(_0x22b506,_0x1b9ea9){return db['CmList'][_0x4f9f('0x53')]()[_0x4f9f('0x29')](respondWithResult(_0x1b9ea9,null))['catch'](handleError(_0x1b9ea9,null));};exports[_0x4f9f('0x54')]=function(_0x92c60e,_0x46b31f,_0x437c5e){if(_0x92c60e['body']['id']){delete _0x92c60e[_0x4f9f('0x4c')]['id'];}return db['CmList'][_0x4f9f('0x49')]({'where':{'id':_0x92c60e[_0x4f9f('0x47')]['id']}})[_0x4f9f('0x29')](handleEntityNotFound(_0x46b31f,null))[_0x4f9f('0x29')](function(_0x359d2c){if(_0x359d2c){_0x92c60e[_0x4f9f('0x4c')][_0x4f9f('0x55')]=_0x359d2c['id'];return db[_0x4f9f('0x56')][_0x4f9f('0x4b')](_0x92c60e[_0x4f9f('0x4c')]);}})['then'](respondWithResult(_0x46b31f,null))[_0x4f9f('0x4a')](handleError(_0x46b31f,null));};exports[_0x4f9f('0x57')]=function(_0x240ab1,_0x23de01,_0x5bf823){var _0x24cfc4={'raw':![],'where':{}};var _0x5d6cd4={};var _0x53b5fc={'count':0x0,'rows':[]};return db[_0x4f9f('0x2f')][_0x4f9f('0x58')]({'where':{'id':_0x240ab1[_0x4f9f('0x47')]['id']}})[_0x4f9f('0x29')](handleEntityNotFound(_0x23de01,null))[_0x4f9f('0x29')](function(_0x4bb33e){if(_0x4bb33e){_0x5d6cd4[_0x4f9f('0x38')]=_[_0x4f9f('0x35')](db[_0x4f9f('0x56')]['rawAttributes']);_0x5d6cd4[_0x4f9f('0x34')]=_[_0x4f9f('0x35')](_0x240ab1[_0x4f9f('0x34')]);_0x5d6cd4[_0x4f9f('0x36')]=_[_0x4f9f('0x37')](_0x5d6cd4[_0x4f9f('0x38')],_0x5d6cd4[_0x4f9f('0x34')]);_0x24cfc4['attributes']=_['intersection'](_0x5d6cd4[_0x4f9f('0x38')],qs[_0x4f9f('0x3a')](_0x240ab1[_0x4f9f('0x34')][_0x4f9f('0x3a')]));_0x24cfc4['attributes']=_0x24cfc4['attributes'][_0x4f9f('0x48')]?_0x24cfc4[_0x4f9f('0x39')]:_0x5d6cd4[_0x4f9f('0x38')];if(!_0x240ab1[_0x4f9f('0x34')][_0x4f9f('0x3b')](_0x4f9f('0x3c'))){_0x24cfc4[_0x4f9f('0x22')]=qs[_0x4f9f('0x22')](_0x240ab1[_0x4f9f('0x34')][_0x4f9f('0x22')]);_0x24cfc4['offset']=qs['offset'](_0x240ab1['query'][_0x4f9f('0x20')]);}_0x24cfc4['order']=qs[_0x4f9f('0x59')](_0x240ab1[_0x4f9f('0x34')][_0x4f9f('0x59')]);_0x24cfc4[_0x4f9f('0x3e')]=qs[_0x4f9f('0x36')](_[_0x4f9f('0x5a')](_0x240ab1[_0x4f9f('0x34')],_0x5d6cd4[_0x4f9f('0x36')]));_0x24cfc4[_0x4f9f('0x3e')][_0x4f9f('0x55')]=_0x4bb33e['id'];if(_0x240ab1[_0x4f9f('0x34')]['filter']){_0x24cfc4[_0x4f9f('0x3e')]=_['merge'](_0x24cfc4['where'],{'$or':_[_0x4f9f('0x2e')](_0x24cfc4['attributes'],function(_0x1935ae){var _0x4bf698={};_0x4bf698[_0x1935ae]={'$like':'%'+_0x240ab1[_0x4f9f('0x34')]['filter']+'%'};return _0x4bf698;})});}_0x24cfc4=_['merge']({},_0x24cfc4,_0x240ab1[_0x4f9f('0x41')]);return db[_0x4f9f('0x56')]['count']({'where':_0x24cfc4['where']})[_0x4f9f('0x29')](function(_0x5cfcf4){_0x53b5fc[_0x4f9f('0x23')]=_0x5cfcf4;if(_0x240ab1[_0x4f9f('0x34')][_0x4f9f('0x42')]){_0x24cfc4[_0x4f9f('0x43')]=[{'all':!![]}];}return db[_0x4f9f('0x56')]['findAll'](_0x24cfc4);})[_0x4f9f('0x29')](function(_0x3c796b){_0x53b5fc[_0x4f9f('0x45')]=_0x3c796b;return _0x53b5fc;});}})[_0x4f9f('0x29')](respondWithFilteredResult(_0x23de01,_0x24cfc4))[_0x4f9f('0x4a')](handleError(_0x23de01,null));};exports['removeDispositions']=function(_0x44120d,_0x73848d,_0x836a31){return db[_0x4f9f('0x2f')]['find']({'where':{'id':_0x44120d['params']['id']}})[_0x4f9f('0x29')](handleEntityNotFound(_0x73848d,null))['then'](function(_0x3314b1){if(_0x3314b1){return _0x3314b1[_0x4f9f('0x5b')](_0x44120d['query'][_0x4f9f('0x5c')]);}})[_0x4f9f('0x29')](respondWithStatusCode(_0x73848d,null))[_0x4f9f('0x4a')](handleError(_0x73848d,null));};exports[_0x4f9f('0x5d')]=function(_0x256c50,_0x43689b,_0x4285ac){return db[_0x4f9f('0x2f')][_0x4f9f('0x49')]({'where':{'id':_0x256c50['params']['id']}})[_0x4f9f('0x29')](handleEntityNotFound(_0x43689b,null))['then'](function(_0x29678f){if(_0x29678f){var _0x4fa7ae=[];var _0x1511ca={'success':[],'errors':[]};return db[_0x4f9f('0x5e')][_0x4f9f('0x53')]()[_0x4f9f('0x29')](function(_0x67520f){if(_0x256c50['body'][_0x4f9f('0x5f')]&&_['isArray'](_0x256c50[_0x4f9f('0x4c')]['tags'])){if(_0x256c50[_0x4f9f('0x4c')][_0x4f9f('0x5f')][_0x4f9f('0x48')]){_0x256c50[_0x4f9f('0x4c')][_0x4f9f('0x5f')]=_0x256c50[_0x4f9f('0x4c')][_0x4f9f('0x5f')][_0x4f9f('0x60')](';')+';';}else{_0x256c50['body']['tags']=null;}}else{_0x256c50['body'][_0x4f9f('0x5f')]=null;}if(_0x256c50[_0x4f9f('0x4c')]&&_[_0x4f9f('0x61')](_0x256c50[_0x4f9f('0x4c')])){for(var _0x4e60ca=0x0;_0x4e60ca<_0x256c50[_0x4f9f('0x4c')][_0x4f9f('0x48')];_0x4e60ca+=0x1){_0x256c50[_0x4f9f('0x4c')][_0x4e60ca][_0x4f9f('0x55')]=_0x256c50[_0x4f9f('0x47')]['id'];_0x4fa7ae[_0x4f9f('0x62')](_0x256c50['body'][_0x4e60ca]);}return BPromise[_0x4f9f('0x63')](_0x4fa7ae,function(_0x283e6a){return db[_0x4f9f('0x5e')][_0x4f9f('0x4b')](_[_0x4f9f('0x64')](_0x283e6a,[_0x4f9f('0x5c'),'id'])||{},{'fields':_[_0x4f9f('0x35')](_0x67520f),'raw':!![]})[_0x4f9f('0x29')](function(_0x1ecf1b){_0x1511ca[_0x4f9f('0x65')][_0x4f9f('0x62')](_0x1ecf1b[_0x4f9f('0x66')]);})[_0x4f9f('0x4a')](function(_0x4ea343){_0x1511ca[_0x4f9f('0x67')][_0x4f9f('0x62')]({'data':_0x283e6a,'error':_0x4ea343[_0x4f9f('0x68')]});});})[_0x4f9f('0x29')](function(_0x28302){return _0x1511ca;})[_0x4f9f('0x4a')](function(_0x3f2155){return _0x3f2155;});}else{_0x43689b[_0x4f9f('0x1e')](0x190)[_0x4f9f('0x1f')]({'message':_0x4f9f('0x69')});}});}})[_0x4f9f('0x29')](respondWithResult(_0x43689b,null))['catch'](handleError(_0x43689b,null));};exports[_0x4f9f('0x6a')]=function(_0xca2a7,_0x28127f,_0x57400c){var _0x324c52;return db[_0x4f9f('0x2f')][_0x4f9f('0x49')]({'where':{'id':_0xca2a7['params']['id']},'include':[{'model':db[_0x4f9f('0x6b')],'as':_0x4f9f('0x6c')}]})[_0x4f9f('0x29')](handleEntityNotFound(_0x28127f,null))[_0x4f9f('0x29')](function(_0x1bb5ee){if(_0x1bb5ee){_0x324c52=_0x1bb5ee;return db['CmContact']['rawAttributes'];}})[_0x4f9f('0x29')](function(_0x5b32ba){if(_0x5b32ba){var _0x157c1f={};var _0x2b2c08={};_0x2b2c08[_0x4f9f('0x38')]=_['concat'](_['keys'](_0x5b32ba),_[_0x4f9f('0x2e')](_0x324c52[_0x4f9f('0x6c')],function(_0x5cd694){return util['format'](_0x4f9f('0x6d'),_0x5cd694['id']);}));_0x2b2c08[_0x4f9f('0x34')]=_['keys'](_0xca2a7[_0x4f9f('0x34')]);_0x2b2c08[_0x4f9f('0x36')]=_['intersection'](_0x2b2c08[_0x4f9f('0x38')],_0x2b2c08[_0x4f9f('0x34')]);_0x157c1f['attributes']=_[_0x4f9f('0x37')](_0x2b2c08[_0x4f9f('0x38')],qs[_0x4f9f('0x3a')](_0xca2a7[_0x4f9f('0x34')]['fields']));_0x157c1f[_0x4f9f('0x39')]=_0x157c1f[_0x4f9f('0x39')][_0x4f9f('0x48')]?_0x157c1f['attributes']:_0x2b2c08[_0x4f9f('0x38')];if(!_0xca2a7['query'][_0x4f9f('0x3b')]('nolimit')){_0x157c1f[_0x4f9f('0x22')]=qs[_0x4f9f('0x22')](_0xca2a7[_0x4f9f('0x34')][_0x4f9f('0x22')]);_0x157c1f[_0x4f9f('0x20')]=qs['offset'](_0xca2a7[_0x4f9f('0x34')]['offset']);}_0x157c1f['order']=qs[_0x4f9f('0x59')](_0xca2a7[_0x4f9f('0x34')][_0x4f9f('0x59')]);_0x157c1f[_0x4f9f('0x3e')]=qs['filters'](_[_0x4f9f('0x5a')](_0xca2a7['query'],_0x2b2c08['filters']));_0x157c1f['raw']=!![];if(_0xca2a7['query'][_0x4f9f('0x3f')]){_0x157c1f['where']=_[_0x4f9f('0x6e')](_0x157c1f[_0x4f9f('0x3e')],{'$or':_[_0x4f9f('0x2e')](_0x157c1f['attributes'],function(_0x5a5bb4){var _0x2f7c4b={};_0x2f7c4b[_0x5a5bb4]={'$like':'%'+_0xca2a7[_0x4f9f('0x34')][_0x4f9f('0x3f')]+'%'};return _0x2f7c4b;})});}_0x157c1f=_[_0x4f9f('0x6e')]({},_0x157c1f,_0xca2a7[_0x4f9f('0x41')]);return _0x324c52[_0x4f9f('0x6a')](_0x157c1f);}})[_0x4f9f('0x29')](respondWithResult(_0x28127f,null))[_0x4f9f('0x4a')](handleError(_0x28127f,null));};exports['getContactsCsv']=function(_0x1d1f1e,_0x5738e8,_0x2e05e6){var _0x472fcc;var _0x4c8a5d;var _0x5b5778;var _0x2f25ab=_0x1d1f1e[_0x4f9f('0x47')]['id'];csv_results=[];return db[_0x4f9f('0x6f')]['findAll']({'attributes':['id',_0x4f9f('0x2c')],'raw':!![],'order':[_0x4f9f('0x70')]})[_0x4f9f('0x29')](function(_0x1d038d){_0x472fcc=_0x1d038d;var _0x18122b=_['keys'](db[_0x4f9f('0x5e')][_0x4f9f('0x30')]);return db[_0x4f9f('0x6b')][_0x4f9f('0x44')]({'raw':!![],'attributes':['id',_0x4f9f('0x71')]})[_0x4f9f('0x29')](function(_0x33e753){_0x4c8a5d=_0x33e753;var _0xa64932=squel['select']()[_0x4f9f('0x3a')](_0x18122b)[_0x4f9f('0x72')](_0x4f9f('0x73'),'c')[_0x4f9f('0x3e')](_0x4f9f('0x74'),_0x2f25ab)[_0x4f9f('0x3e')](_0x4f9f('0x75'))[_0x4f9f('0x76')]();for(var _0x541c30=0x0;_0x541c30<_0x4c8a5d[_0x4f9f('0x48')];_0x541c30++){_0xa64932[_0x4f9f('0x77')](_0x4f9f('0x78')+_0x4c8a5d[_0x541c30]['id'],_0x4f9f('0x79')+_0x4c8a5d[_0x541c30][_0x4f9f('0x71')]);}for(var _0x541c30=0x0;_0x541c30<_0x472fcc['length'];_0x541c30++){_0xa64932[_0x4f9f('0x77')](squel[_0x4f9f('0x7a')]()[_0x4f9f('0x77')](_0x4f9f('0x7b'))['from'](_0x4f9f('0x7c'))[_0x4f9f('0x3e')](_0x4f9f('0x7d'),_0x472fcc[_0x541c30]['id'])[_0x4f9f('0x3e')](_0x4f9f('0x7e')),_0x4f9f('0x7f')+_0x472fcc[_0x541c30][_0x4f9f('0x2c')]);_0xa64932['field'](squel[_0x4f9f('0x7a')]()[_0x4f9f('0x77')](_0x4f9f('0x80'))[_0x4f9f('0x72')](_0x4f9f('0x7c'))[_0x4f9f('0x3e')](_0x4f9f('0x7d'),_0x472fcc[_0x541c30]['id'])['where']('CmContactId\x20=\x20c.id'),'description_additionalPhone_'+_0x472fcc[_0x541c30][_0x4f9f('0x2c')]);}var _0x54e6ea=[];_0x54e6ea[_0x4f9f('0x62')](_0xa64932[_0x4f9f('0x81')]());BPromise[_0x4f9f('0x63')](_0x54e6ea,handleQuery)[_0x4f9f('0x29')](function(_0x132773){handleQuery(_0xa64932[_0x4f9f('0x81')]());var _0x3d1c15=csv_results[0x0];if(!_[_0x4f9f('0x82')](_0x3d1c15)){var _0x103628=toCsv(_0x3d1c15);var _0x435771=Date[_0x4f9f('0x83')]();fs['writeFileSync'](util[_0x4f9f('0x84')]('/tmp/list_%d_%s.csv',_0x2f25ab,_0x435771),_0x103628);_0x5738e8['setHeader'](_0x4f9f('0x85'),'attachment;\x20filename='+util[_0x4f9f('0x84')](_0x4f9f('0x86'),_0x2f25ab,_0x435771));_0x5738e8[_0x4f9f('0x87')](_0x4f9f('0x88'),_0x4f9f('0x89'));return _0x5738e8[_0x4f9f('0x8a')](util[_0x4f9f('0x84')](_0x4f9f('0x8b'),_0x2f25ab,_0x435771));}else{return _0x5738e8[_0x4f9f('0x1c')](0xcc);}});});});};exports[_0x4f9f('0x8c')]=function(_0x18c5b0,_0x2a83a4,_0xf82bc1){var _0x2313b3;delete _0x18c5b0['body']['id'];return db[_0x4f9f('0x2f')][_0x4f9f('0x58')]({'where':{'id':_0x18c5b0[_0x4f9f('0x47')]['id']}})[_0x4f9f('0x29')](handleEntityNotFound(_0x2a83a4,null))[_0x4f9f('0x29')](function(_0x107ab1){if(_0x107ab1){return db[_0x4f9f('0x8d')]['transaction'](function(_0x5dcd27){return db[_0x4f9f('0x6b')]['create'](_0x18c5b0[_0x4f9f('0x4c')],{'transaction':_0x5dcd27})[_0x4f9f('0x29')](function(_0x323f99){_0x2313b3=_0x323f99;return _0x107ab1[_0x4f9f('0x8e')](_0x323f99,{'transaction':_0x5dcd27});})[_0x4f9f('0x29')](function(){var _0x4c8850={'type':db['Sequelize'][_0x4f9f('0x8f')],'transaction':_0x5dcd27};switch(_0x18c5b0[_0x4f9f('0x4c')]['type']){case _0x4f9f('0x90'):_0x4c8850[_0x4f9f('0x32')]=db[_0x4f9f('0x91')][_0x4f9f('0x8f')];break;case _0x4f9f('0x92'):_0x4c8850[_0x4f9f('0x32')]=db[_0x4f9f('0x91')][_0x4f9f('0x93')];break;case _0x4f9f('0x94'):_0x4c8850[_0x4f9f('0x32')]=db[_0x4f9f('0x91')][_0x4f9f('0x95')];_0x4c8850[_0x4f9f('0x96')]=![];break;default:}return db[_0x4f9f('0x8d')][_0x4f9f('0x97')][_0x4f9f('0x98')](_0x4f9f('0x73'),util[_0x4f9f('0x84')](_0x4f9f('0x99'),_0x2313b3['id']),_0x4c8850);})[_0x4f9f('0x29')](function(){return _0x2313b3;});});}})[_0x4f9f('0x29')](respondWithResult(_0x2a83a4,null))[_0x4f9f('0x4a')](handleError(_0x2a83a4,null));};exports['getCustomFields']=function(_0x25cb7f,_0x2d56df,_0xda7942){var _0x556c51={};var _0x59bd20={};var _0x51d821;var _0x4dc856;return db[_0x4f9f('0x2f')][_0x4f9f('0x58')]({'where':{'id':_0x25cb7f[_0x4f9f('0x47')]['id']}})[_0x4f9f('0x29')](handleEntityNotFound(_0x2d56df,null))['then'](function(_0x1f58b4){if(_0x1f58b4){_0x51d821=_0x1f58b4;_0x59bd20[_0x4f9f('0x38')]=_[_0x4f9f('0x35')](db[_0x4f9f('0x6b')][_0x4f9f('0x30')]);_0x59bd20[_0x4f9f('0x34')]=_[_0x4f9f('0x35')](_0x25cb7f[_0x4f9f('0x34')]);_0x59bd20[_0x4f9f('0x36')]=_['intersection'](_0x59bd20[_0x4f9f('0x38')],_0x59bd20[_0x4f9f('0x34')]);_0x556c51[_0x4f9f('0x39')]=_[_0x4f9f('0x37')](_0x59bd20[_0x4f9f('0x38')],qs['fields'](_0x25cb7f['query']['fields']));_0x556c51[_0x4f9f('0x39')]=_0x556c51['attributes']['length']?_0x556c51[_0x4f9f('0x39')]:_0x59bd20[_0x4f9f('0x38')];_0x556c51[_0x4f9f('0x3d')]=qs['sort'](_0x25cb7f[_0x4f9f('0x34')][_0x4f9f('0x59')]);_0x556c51[_0x4f9f('0x3e')]=qs[_0x4f9f('0x36')](_[_0x4f9f('0x5a')](_0x25cb7f['query'],_0x59bd20['filters']));_0x556c51[_0x4f9f('0x3e')]=_['merge'](_0x556c51['where'],{'$or':[{'ListId':_0x1f58b4['id']},{'ListId':null}]});if(_0x25cb7f['query'][_0x4f9f('0x3f')]){_0x556c51[_0x4f9f('0x3e')]=_[_0x4f9f('0x6e')](_0x556c51[_0x4f9f('0x3e')],{'$or':_[_0x4f9f('0x2e')](_0x556c51[_0x4f9f('0x39')],function(_0x38b1a4){var _0x2aea16={};_0x2aea16[_0x38b1a4]={'$like':'%'+_0x25cb7f['query'][_0x4f9f('0x3f')]+'%'};return _0x2aea16;})});}_0x556c51=_[_0x4f9f('0x6e')]({},_0x556c51,_0x25cb7f['options']);return db['CmCustomField'][_0x4f9f('0x9a')](_0x556c51);}})[_0x4f9f('0x29')](respondWithResult(_0x2d56df,null))['catch'](handleError(_0x2d56df,null));};exports[_0x4f9f('0x9b')]=function(_0x51da82,_0xa03d7f){return db[_0x4f9f('0x6b')][_0x4f9f('0x9a')]({'where':{'ListId':null}})[_0x4f9f('0x29')](handleEntityNotFound(_0xa03d7f,null))['then'](function(_0x7c2b9b){return _0x7c2b9b;})[_0x4f9f('0x29')](respondWithResult(_0xa03d7f,null))[_0x4f9f('0x4a')](handleError(_0xa03d7f,null));};exports['addAgents']=function(_0x50cfee,_0x2c3f06,_0xdf276b){return db[_0x4f9f('0x2f')][_0x4f9f('0x49')]({'where':{'id':_0x50cfee['params']['id']}})['then'](handleEntityNotFound(_0x2c3f06,null))[_0x4f9f('0x29')](function(_0x2779f5){if(_0x2779f5){return _0x2779f5[_0x4f9f('0x9c')](_0x50cfee[_0x4f9f('0x4c')][_0x4f9f('0x5c')],_[_0x4f9f('0x64')](_0x50cfee[_0x4f9f('0x4c')],[_0x4f9f('0x5c'),'id'])||{})[_0x4f9f('0x9d')](function(_0x1e5cff){for(var _0x24a8a9=0x0;_0x24a8a9<_0x50cfee['body'][_0x4f9f('0x5c')]['length'];_0x24a8a9+=0x1){socket[_0x4f9f('0x9e')](_0x4f9f('0x9f'),{'UserId':Number(_0x50cfee[_0x4f9f('0x4c')][_0x4f9f('0x5c')][_0x24a8a9]),'CmListId':Number(_0x50cfee[_0x4f9f('0x47')]['id'])});}return _0x1e5cff;});}})[_0x4f9f('0x29')](respondWithResult(_0x2c3f06,null))['catch'](handleError(_0x2c3f06,null));};exports[_0x4f9f('0xa0')]=function(_0x1a22e7,_0x4113d0,_0x28a2e5){return db[_0x4f9f('0x2f')][_0x4f9f('0x49')]({'where':{'id':_0x1a22e7[_0x4f9f('0x47')]['id']}})[_0x4f9f('0x29')](handleEntityNotFound(_0x4113d0,null))['then'](function(_0x3101f4){if(_0x3101f4){return _0x3101f4[_0x4f9f('0xa0')](_0x1a22e7[_0x4f9f('0x34')]['ids'])[_0x4f9f('0x29')](function(){if(_[_0x4f9f('0x61')](_0x1a22e7[_0x4f9f('0x34')][_0x4f9f('0x5c')])){for(var _0x17f297=0x0;_0x17f297<_0x1a22e7[_0x4f9f('0x34')][_0x4f9f('0x5c')][_0x4f9f('0x48')];_0x17f297+=0x1){socket['emit'](_0x4f9f('0xa1'),{'UserId':Number(_0x1a22e7[_0x4f9f('0x34')][_0x4f9f('0x5c')][_0x17f297]),'CmListId':Number(_0x1a22e7[_0x4f9f('0x47')]['id'])});}}else{socket[_0x4f9f('0x9e')](_0x4f9f('0xa1'),{'UserId':Number(_0x1a22e7[_0x4f9f('0x34')][_0x4f9f('0x5c')]),'CmListId':Number(_0x1a22e7['params']['id'])});}});}})['then'](respondWithStatusCode(_0x4113d0,null))[_0x4f9f('0x4a')](handleError(_0x4113d0,null));};exports['getAgents']=function(_0x1e229c,_0x34dc9f,_0xc73f67){var _0x338475={};var _0x1aca4b={};var _0xa96587;var _0x3d95af;return db[_0x4f9f('0x2f')][_0x4f9f('0x58')]({'where':{'id':_0x1e229c[_0x4f9f('0x47')]['id']}})['then'](handleEntityNotFound(_0x34dc9f,null))[_0x4f9f('0x29')](function(_0x1c9ce2){if(_0x1c9ce2){_0xa96587=_0x1c9ce2;_0x1aca4b[_0x4f9f('0x38')]=_[_0x4f9f('0x35')](db[_0x4f9f('0xa2')]['rawAttributes']);_0x1aca4b['query']=_[_0x4f9f('0x35')](_0x1e229c['query']);_0x1aca4b[_0x4f9f('0x36')]=_[_0x4f9f('0x37')](_0x1aca4b['model'],_0x1aca4b[_0x4f9f('0x34')]);_0x338475['attributes']=_[_0x4f9f('0x37')](_0x1aca4b[_0x4f9f('0x38')],qs['fields'](_0x1e229c[_0x4f9f('0x34')][_0x4f9f('0x3a')]));_0x338475[_0x4f9f('0x39')]=_0x338475[_0x4f9f('0x39')][_0x4f9f('0x48')]?_0x338475['attributes']:_0x1aca4b['model'];_0x338475[_0x4f9f('0x3d')]=qs['sort'](_0x1e229c[_0x4f9f('0x34')][_0x4f9f('0x59')]);_0x338475[_0x4f9f('0x3e')]=qs[_0x4f9f('0x36')](_['pick'](_0x1e229c[_0x4f9f('0x34')],_0x1aca4b[_0x4f9f('0x36')]));if(_0x1e229c[_0x4f9f('0x34')][_0x4f9f('0x3f')]){_0x338475[_0x4f9f('0x3e')]=_[_0x4f9f('0x6e')](_0x338475[_0x4f9f('0x3e')],{'$or':_[_0x4f9f('0x2e')](_0x338475[_0x4f9f('0x39')],function(_0x4bfb08){var _0x4fb6ec={};_0x4fb6ec[_0x4bfb08]={'$like':'%'+_0x1e229c[_0x4f9f('0x34')][_0x4f9f('0x3f')]+'%'};return _0x4fb6ec;})});}_0x338475=_['merge']({},_0x338475,_0x1e229c[_0x4f9f('0x41')]);return _0xa96587[_0x4f9f('0xa3')](_0x338475);}})[_0x4f9f('0x29')](function(_0x4063d5){if(_0x4063d5){_0x3d95af=_0x4063d5['length'];if(!_0x1e229c[_0x4f9f('0x34')][_0x4f9f('0x3b')](_0x4f9f('0x3c'))){_0x338475[_0x4f9f('0x22')]=qs[_0x4f9f('0x22')](_0x1e229c[_0x4f9f('0x34')][_0x4f9f('0x22')]);_0x338475[_0x4f9f('0x20')]=qs['offset'](_0x1e229c[_0x4f9f('0x34')]['offset']);}return _0xa96587[_0x4f9f('0xa3')](_0x338475);}})[_0x4f9f('0x29')](function(_0x32e914){if(_0x32e914){return _0x32e914?{'count':_0x3d95af,'rows':_0x32e914}:null;}})[_0x4f9f('0x29')](respondWithResult(_0x34dc9f,null))['catch'](handleError(_0x34dc9f,null));};function handleQuery(_0x3e2311){logger['info'](_0x3e2311);return db[_0x4f9f('0x8d')][_0x4f9f('0x34')](_0x3e2311)['spread'](function(_0x33e58b){csv_results[_0x4f9f('0x62')](_0x33e58b);})[_0x4f9f('0x4a')](function(_0x188a79){logger['error'](_0x188a79[_0x4f9f('0x68')]);});}
\ No newline at end of file
index 0fd8685..f51074e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x3b395a,_0xb9a82d){var _0x4aeef2=function(_0x44ef00){while(--_0x44ef00){_0x3b395a['push'](_0x3b395a['shift']());}};_0x4aeef2(++_0xb9a82d);}(_0x7217,0x19e));var _0x7721=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x7217[_0x4c7fb5];return _0x2e10ac;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
+var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x39e58f,_0xf91bc5){var _0x541ec7=function(_0x17028a){while(--_0x17028a){_0x39e58f['push'](_0x39e58f['shift']());}};_0x541ec7(++_0xf91bc5);}(_0x814b,0x1a2));var _0xb814=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x814b[_0x2dadb9];return _0x2f0097;};'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 4788845..d4df3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750a=['path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','util','moment','bluebird','request-promise'];(function(_0x189cdf,_0x5558f9){var _0x16513d=function(_0x50c1f7){while(--_0x50c1f7){_0x189cdf['push'](_0x189cdf['shift']());}};_0x16513d(++_0x5558f9);}(_0x750a,0x140));var _0xa750=function(_0x256ce1,_0x28e202){_0x256ce1=_0x256ce1-0x0;var _0x57f694=_0x750a[_0x256ce1];return _0x57f694;};'use strict';var _=require('lodash');var util=require(_0xa750('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa750('0x1'));var BPromise=require(_0xa750('0x2'));var rp=require(_0xa750('0x3'));var fs=require('fs');var path=require(_0xa750('0x4'));var rimraf=require(_0xa750('0x5'));var config=require(_0xa750('0x6'));var attributes=require(_0xa750('0x7'));module[_0xa750('0x8')]=function(_0x10b4d9,_0x2497df){return _0x10b4d9[_0xa750('0x9')](_0xa750('0xa'),attributes,{'tableName':_0xa750('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1be1=['define','cm_lists','../../config/logger','api','bluebird','request-promise','path','rimraf','./cmList.attributes','exports'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x1be1,0x192));var _0x11be=function(_0x2f4b7a,_0x3fc1dd){_0x2f4b7a=_0x2f4b7a-0x0;var _0x4340d0=_0x1be1[_0x2f4b7a];return _0x4340d0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x11be('0x0'))(_0x11be('0x1'));var moment=require('moment');var BPromise=require(_0x11be('0x2'));var rp=require(_0x11be('0x3'));var fs=require('fs');var path=require(_0x11be('0x4'));var rimraf=require(_0x11be('0x5'));var config=require('../../config/environment');var attributes=require(_0x11be('0x6'));module[_0x11be('0x7')]=function(_0x11f793,_0x479719){return _0x11f793[_0x11be('0x8')]('CmList',attributes,{'tableName':_0x11be('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17fbfd8..1a75cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8726=['client','http','defaults','redis','socket.io-emitter','request','then','info','request\x20sent','CmList,\x20%s,\x20%s,\x20%s','stringify','code','error','CmList,\x20%s,\x20%s','message','result','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0xc17305,_0x2aea9c){var _0x3e95e1=function(_0x3c281d){while(--_0x3c281d){_0xc17305['push'](_0xc17305['shift']());}};_0x3e95e1(++_0x2aea9c);}(_0x8726,0xdf));var _0x6872=function(_0x2ea6a3,_0x468e7a){_0x2ea6a3=_0x2ea6a3-0x0;var _0x2e410f=_0x8726[_0x2ea6a3];return _0x2e410f;};'use strict';var _=require('lodash');var util=require(_0x6872('0x0'));var moment=require(_0x6872('0x1'));var BPromise=require(_0x6872('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6872('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6872('0x4'))(_0x6872('0x5'));var config=require(_0x6872('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6872('0x7')][_0x6872('0x8')]({'port':0x232a});config['redis']=_[_0x6872('0x9')](config[_0x6872('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x6872('0xb'))(new Redis(config[_0x6872('0xa')]));require('./cmList.socket')['register'](socket);function respondWithRpcPromise(_0x4ebe0b,_0x1447b1,_0x271c9b){return new BPromise(function(_0x20b1c4,_0x477143){return client[_0x6872('0xc')](_0x4ebe0b,_0x271c9b)[_0x6872('0xd')](function(_0x40baf1){logger[_0x6872('0xe')]('CmList,\x20%s,\x20%s',_0x1447b1,_0x6872('0xf'));logger['debug'](_0x6872('0x10'),_0x1447b1,_0x6872('0xf'),JSON[_0x6872('0x11')](_0x40baf1));if(_0x40baf1['error']){if(_0x40baf1['error'][_0x6872('0x12')]===0x1f4){logger['error']('CmList,\x20%s,\x20%s',_0x1447b1,_0x40baf1[_0x6872('0x13')]['message']);return _0x477143(_0x40baf1[_0x6872('0x13')]['message']);}logger[_0x6872('0x13')](_0x6872('0x14'),_0x1447b1,_0x40baf1['error']['message']);return _0x20b1c4(_0x40baf1['error'][_0x6872('0x15')]);}else{logger['info'](_0x6872('0x14'),_0x1447b1,_0x6872('0xf'));_0x20b1c4(_0x40baf1[_0x6872('0x16')][_0x6872('0x15')]);}})['catch'](function(_0x24d498){logger[_0x6872('0x13')](_0x6872('0x14'),_0x1447b1,_0x24d498);_0x477143(_0x24d498);});});}
\ No newline at end of file
+var _0xab9c=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0xa9d07e,_0x27163c){var _0x2f0a3c=function(_0x576667){while(--_0x576667){_0xa9d07e['push'](_0xa9d07e['shift']());}};_0x2f0a3c(++_0x27163c);}(_0xab9c,0xe4));var _0xcab9=function(_0x15b78a,_0x128448){_0x15b78a=_0x15b78a-0x0;var _0x2fdfd8=_0xab9c[_0x15b78a];return _0x2fdfd8;};'use strict';var _=require(_0xcab9('0x0'));var util=require('util');var moment=require(_0xcab9('0x1'));var BPromise=require(_0xcab9('0x2'));var rs=require(_0xcab9('0x3'));var fs=require('fs');var Redis=require(_0xcab9('0x4'));var db=require(_0xcab9('0x5'))['db'];var utils=require(_0xcab9('0x6'));var logger=require(_0xcab9('0x7'))(_0xcab9('0x8'));var config=require(_0xcab9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xcab9('0xa')][_0xcab9('0xb')]({'port':0x232a});config['redis']=_[_0xcab9('0xc')](config[_0xcab9('0xd')],{'host':_0xcab9('0xe'),'port':0x18eb});var socket=require(_0xcab9('0xf'))(new Redis(config[_0xcab9('0xd')]));require(_0xcab9('0x10'))[_0xcab9('0x11')](socket);function respondWithRpcPromise(_0x9a7e6f,_0x471376,_0x1174c7){return new BPromise(function(_0x5f53c8,_0x2438ec){return client[_0xcab9('0x12')](_0x9a7e6f,_0x1174c7)[_0xcab9('0x13')](function(_0x5549e7){logger[_0xcab9('0x14')](_0xcab9('0x15'),_0x471376,_0xcab9('0x16'));logger[_0xcab9('0x17')]('CmList,\x20%s,\x20%s,\x20%s',_0x471376,_0xcab9('0x16'),JSON[_0xcab9('0x18')](_0x5549e7));if(_0x5549e7[_0xcab9('0x19')]){if(_0x5549e7[_0xcab9('0x19')]['code']===0x1f4){logger[_0xcab9('0x19')]('CmList,\x20%s,\x20%s',_0x471376,_0x5549e7[_0xcab9('0x19')]['message']);return _0x2438ec(_0x5549e7[_0xcab9('0x19')][_0xcab9('0x1a')]);}logger[_0xcab9('0x19')](_0xcab9('0x15'),_0x471376,_0x5549e7[_0xcab9('0x19')][_0xcab9('0x1a')]);return _0x5f53c8(_0x5549e7[_0xcab9('0x19')][_0xcab9('0x1a')]);}else{logger[_0xcab9('0x14')](_0xcab9('0x15'),_0x471376,_0xcab9('0x16'));_0x5f53c8(_0x5549e7[_0xcab9('0x1b')][_0xcab9('0x1a')]);}})[_0xcab9('0x1c')](function(_0x43cf80){logger[_0xcab9('0x19')](_0xcab9('0x15'),_0x471376,_0x43cf80);_0x2438ec(_0x43cf80);});});}
\ No newline at end of file
index a01d35f..feb38c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6752=['emit','removeListener','register','save','remove'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x6752,0x1c0));var _0x2675=function(_0x1ba8b9,_0x231903){_0x1ba8b9=_0x1ba8b9-0x0;var _0x15864e=_0x6752[_0x1ba8b9];return _0x15864e;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x2675('0x0'),_0x2675('0x1'),'update'];function createListener(_0x24120b,_0x3bd9ac){return function(_0x4d05a0){_0x3bd9ac[_0x2675('0x2')](_0x24120b,_0x4d05a0);};}function removeListener(_0x3f5bd7,_0x195105){return function(){CmListEvents[_0x2675('0x3')](_0x3f5bd7,_0x195105);};}exports[_0x2675('0x4')]=function(_0x5243ba){for(var _0x1fc29c=0x0,_0x4806e7=events['length'];_0x1fc29c<_0x4806e7;_0x1fc29c++){var _0x44d087=events[_0x1fc29c];var _0x26f816=createListener('cmList:'+_0x44d087,_0x5243ba);CmListEvents['on'](_0x44d087,_0x26f816);}};
\ No newline at end of file
+var _0xd978=['save','remove','update','removeListener','register','length','cmList:','./cmList.events'];(function(_0x4db845,_0x53e425){var _0x152684=function(_0x5f4ce4){while(--_0x5f4ce4){_0x4db845['push'](_0x4db845['shift']());}};_0x152684(++_0x53e425);}(_0xd978,0x17f));var _0x8d97=function(_0x3f9882,_0x4063bb){_0x3f9882=_0x3f9882-0x0;var _0x18b725=_0xd978[_0x3f9882];return _0x18b725;};'use strict';var CmListEvents=require(_0x8d97('0x0'));var events=[_0x8d97('0x1'),_0x8d97('0x2'),_0x8d97('0x3')];function createListener(_0x4c203f,_0x35625a){return function(_0x155b33){_0x35625a['emit'](_0x4c203f,_0x155b33);};}function removeListener(_0x1a80d1,_0x54f386){return function(){CmListEvents[_0x8d97('0x4')](_0x1a80d1,_0x54f386);};}exports[_0x8d97('0x5')]=function(_0x298a21){for(var _0x21bf99=0x0,_0x58e0f5=events[_0x8d97('0x6')];_0x21bf99<_0x58e0f5;_0x21bf99++){var _0x3b7191=events[_0x21bf99];var _0x50f9e5=createListener(_0x8d97('0x7')+_0x3b7191,_0x298a21);CmListEvents['on'](_0x3b7191,_0x50f9e5);}};
\ No newline at end of file
index b68741e..83b50fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c69=['removeAgents','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','describe','isAuthenticated','/:id','/:id/dispositions','getDispositions','getContacts','/:id/fields','getCustomFields','/:id/users','getAgents','post','addDisposition','addCustomField','addAgents','put','update','delete','destroy','removeDispositions'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x3c69,0x1f1));var _0x93c6=function(_0x21f3c3,_0x42e32c){_0x21f3c3=_0x21f3c3-0x0;var _0x15957=_0x3c69[_0x21f3c3];return _0x15957;};'use strict';var multer=require(_0x93c6('0x0'));var util=require('util');var path=require(_0x93c6('0x1'));var timeout=require(_0x93c6('0x2'));var express=require('express');var router=express[_0x93c6('0x3')]();var fs_extra=require(_0x93c6('0x4'));var auth=require(_0x93c6('0x5'));var interaction=require(_0x93c6('0x6'));var config=require(_0x93c6('0x7'));var controller=require('./cmList.controller');router[_0x93c6('0x8')]('/',auth['isAuthenticated'](),controller[_0x93c6('0x9')]);router[_0x93c6('0x8')](_0x93c6('0xa'),auth['isAuthenticated'](),controller[_0x93c6('0xb')]);router['get']('/global_fields',auth[_0x93c6('0xc')](),controller['getGlobalCustomFields']);router[_0x93c6('0x8')](_0x93c6('0xd'),auth[_0x93c6('0xc')](),controller['show']);router['get'](_0x93c6('0xe'),auth[_0x93c6('0xc')](),controller[_0x93c6('0xf')]);router['get']('/:id/contacts',auth[_0x93c6('0xc')](),controller[_0x93c6('0x10')]);router[_0x93c6('0x8')]('/:id/contacts/csv',auth['isAuthenticated'](),controller['getContactsCsv']);router[_0x93c6('0x8')](_0x93c6('0x11'),auth[_0x93c6('0xc')](),controller[_0x93c6('0x12')]);router[_0x93c6('0x8')](_0x93c6('0x13'),auth[_0x93c6('0xc')](),controller[_0x93c6('0x14')]);router[_0x93c6('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x93c6('0x15')](_0x93c6('0xe'),auth[_0x93c6('0xc')](),controller[_0x93c6('0x16')]);router[_0x93c6('0x15')]('/:id/contacts',auth[_0x93c6('0xc')](),controller['addContacts']);router[_0x93c6('0x15')]('/:id/fields',auth[_0x93c6('0xc')](),controller[_0x93c6('0x17')]);router[_0x93c6('0x15')](_0x93c6('0x13'),auth[_0x93c6('0xc')](),controller[_0x93c6('0x18')]);router[_0x93c6('0x19')](_0x93c6('0xd'),auth[_0x93c6('0xc')](),controller[_0x93c6('0x1a')]);router[_0x93c6('0x1b')]('/:id',auth[_0x93c6('0xc')](),controller[_0x93c6('0x1c')]);router[_0x93c6('0x1b')](_0x93c6('0xe'),auth[_0x93c6('0xc')](),controller[_0x93c6('0x1d')]);router[_0x93c6('0x1b')](_0x93c6('0x13'),auth[_0x93c6('0xc')](),controller[_0x93c6('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x87c6=['/describe','isAuthenticated','describe','/global_fields','getGlobalCustomFields','/:id','show','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','getAgents','post','/:id/dispositions','addDisposition','addContacts','addCustomField','/:id/users','put','update','delete','destroy','removeAgents','exports','multer','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','index'];(function(_0x69975f,_0x48dbb0){var _0x31e0b2=function(_0x1ff63d){while(--_0x1ff63d){_0x69975f['push'](_0x69975f['shift']());}};_0x31e0b2(++_0x48dbb0);}(_0x87c6,0x87));var _0x687c=function(_0xcd93cf,_0x3d5705){_0xcd93cf=_0xcd93cf-0x0;var _0x27e684=_0x87c6[_0xcd93cf];return _0x27e684;};'use strict';var multer=require(_0x687c('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x687c('0x1'));var router=express[_0x687c('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x687c('0x3'));var interaction=require(_0x687c('0x4'));var config=require(_0x687c('0x5'));var controller=require(_0x687c('0x6'));router[_0x687c('0x7')]('/',auth['isAuthenticated'](),controller[_0x687c('0x8')]);router[_0x687c('0x7')](_0x687c('0x9'),auth[_0x687c('0xa')](),controller[_0x687c('0xb')]);router[_0x687c('0x7')](_0x687c('0xc'),auth[_0x687c('0xa')](),controller[_0x687c('0xd')]);router[_0x687c('0x7')](_0x687c('0xe'),auth[_0x687c('0xa')](),controller[_0x687c('0xf')]);router['get']('/:id/dispositions',auth[_0x687c('0xa')](),controller[_0x687c('0x10')]);router[_0x687c('0x7')](_0x687c('0x11'),auth['isAuthenticated'](),controller[_0x687c('0x12')]);router[_0x687c('0x7')](_0x687c('0x13'),auth['isAuthenticated'](),controller[_0x687c('0x14')]);router['get'](_0x687c('0x15'),auth[_0x687c('0xa')](),controller[_0x687c('0x16')]);router[_0x687c('0x7')]('/:id/users',auth[_0x687c('0xa')](),controller[_0x687c('0x17')]);router[_0x687c('0x18')]('/',auth[_0x687c('0xa')](),controller['create']);router[_0x687c('0x18')](_0x687c('0x19'),auth['isAuthenticated'](),controller[_0x687c('0x1a')]);router['post'](_0x687c('0x11'),auth[_0x687c('0xa')](),controller[_0x687c('0x1b')]);router[_0x687c('0x18')](_0x687c('0x15'),auth['isAuthenticated'](),controller[_0x687c('0x1c')]);router[_0x687c('0x18')](_0x687c('0x1d'),auth[_0x687c('0xa')](),controller['addAgents']);router[_0x687c('0x1e')](_0x687c('0xe'),auth['isAuthenticated'](),controller[_0x687c('0x1f')]);router[_0x687c('0x20')](_0x687c('0xe'),auth[_0x687c('0xa')](),controller[_0x687c('0x21')]);router[_0x687c('0x20')](_0x687c('0x19'),auth[_0x687c('0xa')](),controller['removeDispositions']);router[_0x687c('0x20')](_0x687c('0x1d'),auth[_0x687c('0xa')](),controller[_0x687c('0x22')]);module[_0x687c('0x23')]=router;
\ No newline at end of file
index b409f37..f652c04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6646=['field','STRING','sequelize','exports','VIRTUAL','getDataValue'];(function(_0x51b1a5,_0x285a4f){var _0x15c738=function(_0x5c94d7){while(--_0x5c94d7){_0x51b1a5['push'](_0x51b1a5['shift']());}};_0x15c738(++_0x285a4f);}(_0x6646,0x7a));var _0x6664=function(_0x503207,_0x4a9d7a){_0x503207=_0x503207-0x0;var _0x13de53=_0x6646[_0x503207];return _0x13de53;};'use strict';var Sequelize=require(_0x6664('0x0'));module[_0x6664('0x1')]={'name':{'type':Sequelize[_0x6664('0x2')],'get':function(_0x42deb0){return this[_0x6664('0x3')](_0x6664('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x6664('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x6664('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0xf06d=['STRING','sequelize','getDataValue','field'];(function(_0x58836f,_0x5351e2){var _0x28f9b1=function(_0x30a6cc){while(--_0x30a6cc){_0x58836f['push'](_0x58836f['shift']());}};_0x28f9b1(++_0x5351e2);}(_0xf06d,0x189));var _0xdf06=function(_0x227af0,_0x4af0a4){_0x227af0=_0x227af0-0x0;var _0x14c9ed=_0xf06d[_0x227af0];return _0x14c9ed;};'use strict';var Sequelize=require(_0xdf06('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x311e58){return this[_0xdf06('0x1')](_0xdf06('0x2'));}},'field':{'type':Sequelize[_0xdf06('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0xdf06('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index c2d7a1c..a580e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x62caa0,_0x1514e1){var _0x98bd19=function(_0x2e38a2){while(--_0x2e38a2){_0x62caa0['push'](_0x62caa0['shift']());}};_0x98bd19(++_0x1514e1);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x2608f9,_0x25ad99){var _0x33df42=function(_0x31f7fa){while(--_0x31f7fa){_0x2608f9['push'](_0x2608f9['shift']());}};_0x33df42(++_0x25ad99);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index 6e74050..7be56d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8152=['request-promise','path','rimraf','../../config/environment','exports','define','tools_conditions','lodash','util','api','moment','bluebird'];(function(_0xa9a245,_0x2a0387){var _0x2d0eaa=function(_0x2bba86){while(--_0x2bba86){_0xa9a245['push'](_0xa9a245['shift']());}};_0x2d0eaa(++_0x2a0387);}(_0x8152,0x8b));var _0x2815=function(_0x3a673f,_0x5becf0){_0x3a673f=_0x3a673f-0x0;var _0x431d2a=_0x8152[_0x3a673f];return _0x431d2a;};'use strict';var _=require(_0x2815('0x0'));var util=require(_0x2815('0x1'));var logger=require('../../config/logger')(_0x2815('0x2'));var moment=require(_0x2815('0x3'));var BPromise=require(_0x2815('0x4'));var rp=require(_0x2815('0x5'));var fs=require('fs');var path=require(_0x2815('0x6'));var rimraf=require(_0x2815('0x7'));var config=require(_0x2815('0x8'));var attributes=require('./condition.attributes');module[_0x2815('0x9')]=function(_0x118ad9,_0x7789b){return _0x118ad9[_0x2815('0xa')]('Condition',attributes,{'tableName':_0x2815('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c46=['./condition.attributes','exports','define','Condition','tools_conditions','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x11ba83,_0xd5611a){var _0x3f3925=function(_0x3d7cb0){while(--_0x3d7cb0){_0x11ba83['push'](_0x11ba83['shift']());}};_0x3f3925(++_0xd5611a);}(_0x9c46,0x191));var _0x69c4=function(_0x4bc1f9,_0x331c46){_0x4bc1f9=_0x4bc1f9-0x0;var _0x3ad7ef=_0x9c46[_0x4bc1f9];return _0x3ad7ef;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x69c4('0x0'))(_0x69c4('0x1'));var moment=require(_0x69c4('0x2'));var BPromise=require(_0x69c4('0x3'));var rp=require(_0x69c4('0x4'));var fs=require('fs');var path=require(_0x69c4('0x5'));var rimraf=require(_0x69c4('0x6'));var config=require('../../config/environment');var attributes=require(_0x69c4('0x7'));module[_0x69c4('0x8')]=function(_0x30f06d,_0x131733){return _0x30f06d[_0x69c4('0x9')](_0x69c4('0xa'),attributes,{'tableName':_0x69c4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd1fc4e..5c8b550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x223a=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment'];(function(_0x38ff4c,_0x2a41a5){var _0x1dd152=function(_0x5ed28d){while(--_0x5ed28d){_0x38ff4c['push'](_0x38ff4c['shift']());}};_0x1dd152(++_0x2a41a5);}(_0x223a,0x112));var _0xa223=function(_0x37bbc0,_0x4bdf0a){_0x37bbc0=_0x37bbc0-0x0;var _0x5e5e60=_0x223a[_0x37bbc0];return _0x5e5e60;};'use strict';var _=require('lodash');var util=require(_0xa223('0x0'));var moment=require(_0xa223('0x1'));var BPromise=require(_0xa223('0x2'));var rs=require(_0xa223('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa223('0x4'))['db'];var utils=require(_0xa223('0x5'));var logger=require(_0xa223('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa223('0x7'));var client=jayson[_0xa223('0x8')][_0xa223('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b444f,_0x1f6603,_0x13af9a){return new BPromise(function(_0x53d060,_0x52d3cf){return client[_0xa223('0xa')](_0x2b444f,_0x13af9a)[_0xa223('0xb')](function(_0x350016){logger['info'](_0xa223('0xc'),_0x1f6603,_0xa223('0xd'));logger[_0xa223('0xe')](_0xa223('0xf'),_0x1f6603,'request\x20sent',JSON[_0xa223('0x10')](_0x350016));if(_0x350016[_0xa223('0x11')]){if(_0x350016['error'][_0xa223('0x12')]===0x1f4){logger[_0xa223('0x11')](_0xa223('0xc'),_0x1f6603,_0x350016[_0xa223('0x11')][_0xa223('0x13')]);return _0x52d3cf(_0x350016[_0xa223('0x11')][_0xa223('0x13')]);}logger[_0xa223('0x11')](_0xa223('0xc'),_0x1f6603,_0x350016[_0xa223('0x11')]['message']);return _0x53d060(_0x350016[_0xa223('0x11')][_0xa223('0x13')]);}else{logger[_0xa223('0x14')](_0xa223('0xc'),_0x1f6603,_0xa223('0xd'));_0x53d060(_0x350016[_0xa223('0x15')][_0xa223('0x13')]);}})[_0xa223('0x16')](function(_0x2da6bf){logger['error'](_0xa223('0xc'),_0x1f6603,_0x2da6bf);_0x52d3cf(_0x2da6bf);});});}
\ No newline at end of file
+var _0x4ab4=['catch','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0x4ab4,0x109));var _0x44ab=function(_0x1615f3,_0x1dc000){_0x1615f3=_0x1615f3-0x0;var _0x4d7424=_0x4ab4[_0x1615f3];return _0x4d7424;};'use strict';var _=require('lodash');var util=require(_0x44ab('0x0'));var moment=require('moment');var BPromise=require(_0x44ab('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x44ab('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x44ab('0x3'));var logger=require(_0x44ab('0x4'))(_0x44ab('0x5'));var config=require('../../config/environment');var jayson=require(_0x44ab('0x6'));var client=jayson[_0x44ab('0x7')][_0x44ab('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xa0dda0,_0x55a708,_0x1c19f2){return new BPromise(function(_0x11d114,_0x25fa6b){return client[_0x44ab('0x9')](_0xa0dda0,_0x1c19f2)[_0x44ab('0xa')](function(_0x108f75){logger[_0x44ab('0xb')](_0x44ab('0xc'),_0x55a708,_0x44ab('0xd'));logger[_0x44ab('0xe')](_0x44ab('0xf'),_0x55a708,_0x44ab('0xd'),JSON[_0x44ab('0x10')](_0x108f75));if(_0x108f75[_0x44ab('0x11')]){if(_0x108f75[_0x44ab('0x11')][_0x44ab('0x12')]===0x1f4){logger[_0x44ab('0x11')](_0x44ab('0xc'),_0x55a708,_0x108f75['error'][_0x44ab('0x13')]);return _0x25fa6b(_0x108f75[_0x44ab('0x11')]['message']);}logger[_0x44ab('0x11')]('Condition,\x20%s,\x20%s',_0x55a708,_0x108f75[_0x44ab('0x11')][_0x44ab('0x13')]);return _0x11d114(_0x108f75[_0x44ab('0x11')][_0x44ab('0x13')]);}else{logger[_0x44ab('0xb')](_0x44ab('0xc'),_0x55a708,_0x44ab('0xd'));_0x11d114(_0x108f75[_0x44ab('0x14')]['message']);}})[_0x44ab('0x15')](function(_0x462553){logger[_0x44ab('0x11')](_0x44ab('0xc'),_0x55a708,_0x462553);_0x25fa6b(_0x462553);});});}
\ No newline at end of file
index 5f97de6..ff80fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc29d=['/:id','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','./condition.controller','put','isAuthenticated','update','delete'];(function(_0x1af54c,_0x327b2c){var _0x47a08e=function(_0x2b900c){while(--_0x2b900c){_0x1af54c['push'](_0x1af54c['shift']());}};_0x47a08e(++_0x327b2c);}(_0xc29d,0x115));var _0xdc29=function(_0x17357f,_0x2d3605){_0x17357f=_0x17357f-0x0;var _0x1c5cb4=_0xc29d[_0x17357f];return _0x1c5cb4;};'use strict';var multer=require(_0xdc29('0x0'));var util=require(_0xdc29('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdc29('0x2'));var router=express['Router']();var fs_extra=require(_0xdc29('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xdc29('0x4'));var config=require(_0xdc29('0x5'));var controller=require(_0xdc29('0x6'));router[_0xdc29('0x7')]('/:id',auth[_0xdc29('0x8')](),controller[_0xdc29('0x9')]);router[_0xdc29('0xa')](_0xdc29('0xb'),auth[_0xdc29('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x8adf=['../../components/auth/service','../../components/interaction/service','../../config/environment','/:id','isAuthenticated','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8adf,0x1f2));var _0xf8ad=function(_0x14b569,_0x3f7e44){_0x14b569=_0x14b569-0x0;var _0x2aa8f1=_0x8adf[_0x14b569];return _0x2aa8f1;};'use strict';var multer=require(_0xf8ad('0x0'));var util=require(_0xf8ad('0x1'));var path=require(_0xf8ad('0x2'));var timeout=require(_0xf8ad('0x3'));var express=require('express');var router=express[_0xf8ad('0x4')]();var fs_extra=require(_0xf8ad('0x5'));var auth=require(_0xf8ad('0x6'));var interaction=require(_0xf8ad('0x7'));var config=require(_0xf8ad('0x8'));var controller=require('./condition.controller');router['put'](_0xf8ad('0x9'),auth[_0xf8ad('0xa')](),controller[_0xf8ad('0xb')]);router['delete'](_0xf8ad('0x9'),auth['isAuthenticated'](),controller[_0xf8ad('0xc')]);module[_0xf8ad('0xd')]=router;
\ No newline at end of file
index 0b07592..153ea45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda5a=['sequelize','exports','STRING','name','INTEGER'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0xda5a,0xaf));var _0xada5=function(_0x4f6ea8,_0x191395){_0x4f6ea8=_0x4f6ea8-0x0;var _0x39f538=_0xda5a[_0x4f6ea8];return _0x39f538;};'use strict';var Sequelize=require(_0xada5('0x0'));module[_0xada5('0x1')]={'name':{'type':Sequelize[_0xada5('0x2')],'allowNull':![],'unique':_0xada5('0x3')},'OrderBy':{'type':Sequelize[_0xada5('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xada5('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x0ecd=['name','INTEGER','sequelize','STRING'];(function(_0x263d53,_0x2cb38f){var _0x55384c=function(_0x3c36fb){while(--_0x3c36fb){_0x263d53['push'](_0x263d53['shift']());}};_0x55384c(++_0x2cb38f);}(_0x0ecd,0x196));var _0xd0ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0ecd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd0ec('0x0'));module['exports']={'name':{'type':Sequelize[_0xd0ec('0x1')],'allowNull':![],'unique':_0xd0ec('0x2')},'OrderBy':{'type':Sequelize[_0xd0ec('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xd0ec('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 937bf51..82ccf94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','where','ContactItemType','includeAll','include','findAll','rows','params','find','catch','create','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body'];(function(_0x1acae0,_0x5b35f7){var _0x404763=function(_0x14214f){while(--_0x14214f){_0x1acae0['push'](_0x1acae0['shift']());}};_0x404763(++_0x5b35f7);}(_0x8603,0x190));var _0x3860=function(_0x10f6f2,_0x51b75e){_0x10f6f2=_0x10f6f2-0x0;var _0x57c705=_0x8603[_0x10f6f2];return _0x57c705;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3860('0x0'));var zipdir=require(_0x3860('0x1'));var jsonpatch=require(_0x3860('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3860('0x3'));var Mustache=require(_0x3860('0x4'));var util=require(_0x3860('0x5'));var path=require('path');var sox=require(_0x3860('0x6'));var csv=require('to-csv');var ejs=require(_0x3860('0x7'));var fs=require('fs');var fs_extra=require(_0x3860('0x8'));var _=require(_0x3860('0x9'));var squel=require(_0x3860('0xa'));var crypto=require(_0x3860('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3860('0xc'));var Papa=require(_0x3860('0xd'));var Redis=require('ioredis');var authService=require(_0x3860('0xe'));var qs=require(_0x3860('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3860('0x10'));var logger=require(_0x3860('0x11'))('api');var utils=require(_0x3860('0x12'));var config=require(_0x3860('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3860('0x14'))['db'];function respondWithStatusCode(_0x8ad61d,_0x2428f6){_0x2428f6=_0x2428f6||0xcc;return function(_0x1ea619){if(_0x1ea619){return _0x8ad61d[_0x3860('0x15')](_0x2428f6);}return _0x8ad61d[_0x3860('0x16')](_0x2428f6)[_0x3860('0x17')]();};}function respondWithResult(_0x12b23b,_0x465d8d){_0x465d8d=_0x465d8d||0xc8;return function(_0x46264d){if(_0x46264d){return _0x12b23b['status'](_0x465d8d)[_0x3860('0x18')](_0x46264d);}};}function respondWithFilteredResult(_0x21eaf1,_0x122e40){return function(_0x37d9ab){if(_0x37d9ab){var _0x1055b3=typeof _0x122e40[_0x3860('0x19')]===_0x3860('0x1a')&&typeof _0x122e40[_0x3860('0x1b')]===_0x3860('0x1a');var _0x3c0d91=_0x37d9ab[_0x3860('0x1c')];var _0x45b799=_0x1055b3?0x0:_0x122e40['offset'];var _0x4863bd=_0x1055b3?_0x37d9ab[_0x3860('0x1c')]:_0x122e40[_0x3860('0x19')]+_0x122e40[_0x3860('0x1b')];var _0x53fc63;if(_0x4863bd>=_0x3c0d91){_0x4863bd=_0x3c0d91;_0x53fc63=0xc8;}else{_0x53fc63=0xce;}_0x21eaf1[_0x3860('0x16')](_0x53fc63);return _0x21eaf1[_0x3860('0x1d')](_0x3860('0x1e'),_0x45b799+'-'+_0x4863bd+'/'+_0x3c0d91)[_0x3860('0x18')](_0x37d9ab);}return null;};}function patchUpdates(_0x20a5b0){return function(_0x45081f){try{jsonpatch[_0x3860('0x1f')](_0x45081f,_0x20a5b0,!![]);}catch(_0x1f8891){return BPromise[_0x3860('0x20')](_0x1f8891);}return _0x45081f[_0x3860('0x21')]();};}function saveUpdates(_0xacd57f,_0x2e0b6e){return function(_0x280ea9){if(_0x280ea9){return _0x280ea9[_0x3860('0x22')](_0xacd57f)[_0x3860('0x23')](function(_0x564efd){return _0x564efd;});}return null;};}function removeEntity(_0xfc10a5,_0x133093){return function(_0x2b91f2){if(_0x2b91f2){return _0x2b91f2[_0x3860('0x24')]()[_0x3860('0x23')](function(){var _0x56a6d1=_0x2b91f2[_0x3860('0x25')]({'plain':!![]});var _0x568515='ContactItemTypes';return db[_0x3860('0x26')][_0x3860('0x24')]({'where':{'type':_0x568515,'resourceId':_0x56a6d1['id']}})['then'](function(){return _0x2b91f2;});})['then'](function(){_0xfc10a5['status'](0xcc)[_0x3860('0x17')]();});}};}function handleEntityNotFound(_0x3ebc5b,_0xb25cc2){return function(_0x371f3a){if(!_0x371f3a){_0x3ebc5b[_0x3860('0x15')](0x194);}return _0x371f3a;};}function handleError(_0x228d34,_0x544b9a){_0x544b9a=_0x544b9a||0x1f4;return function(_0x4c4314){logger[_0x3860('0x27')](_0x4c4314[_0x3860('0x28')]);if(_0x4c4314['name']){delete _0x4c4314[_0x3860('0x29')];}_0x228d34[_0x3860('0x16')](_0x544b9a)[_0x3860('0x2a')](_0x4c4314);};}exports[_0x3860('0x2b')]=function(_0x3628f7,_0x4bbae9){var _0x36ae2b={},_0xf624ba={},_0x367b14={'count':0x0,'rows':[]};var _0x4bd90c=_[_0x3860('0x2c')](db['ContactItemType'][_0x3860('0x2d')],function(_0x4825f0){return{'name':_0x4825f0[_0x3860('0x2e')],'type':_0x4825f0[_0x3860('0x2f')][_0x3860('0x30')]};});_0xf624ba['model']=_[_0x3860('0x2c')](_0x4bd90c,_0x3860('0x29'));_0xf624ba['query']=_[_0x3860('0x31')](_0x3628f7['query']);_0xf624ba[_0x3860('0x32')]=_[_0x3860('0x33')](_0xf624ba[_0x3860('0x34')],_0xf624ba[_0x3860('0x35')]);_0x36ae2b[_0x3860('0x36')]=_[_0x3860('0x33')](_0xf624ba[_0x3860('0x34')],qs['fields'](_0x3628f7[_0x3860('0x35')][_0x3860('0x37')]));_0x36ae2b['attributes']=_0x36ae2b[_0x3860('0x36')][_0x3860('0x38')]?_0x36ae2b[_0x3860('0x36')]:_0xf624ba['model'];if(!_0x3628f7['query'][_0x3860('0x39')](_0x3860('0x3a'))){_0x36ae2b[_0x3860('0x1b')]=qs[_0x3860('0x1b')](_0x3628f7['query']['limit']);_0x36ae2b[_0x3860('0x19')]=qs[_0x3860('0x19')](_0x3628f7[_0x3860('0x35')][_0x3860('0x19')]);}_0x36ae2b[_0x3860('0x3b')]=qs['sort'](_0x3628f7[_0x3860('0x35')][_0x3860('0x3c')]);_0x36ae2b['where']=qs['filters'](_[_0x3860('0x3d')](_0x3628f7[_0x3860('0x35')],_0xf624ba[_0x3860('0x32')]),_0x4bd90c);if(_0x3628f7[_0x3860('0x35')][_0x3860('0x3e')]){_0x36ae2b['where']=_[_0x3860('0x3f')](_0x36ae2b['where'],{'$or':_[_0x3860('0x2c')](_0x4bd90c,function(_0x35bf7a){if(_0x35bf7a['type']!==_0x3860('0x40')){var _0x162e65={};_0x162e65[_0x35bf7a['name']]={'$like':'%'+_0x3628f7[_0x3860('0x35')][_0x3860('0x3e')]+'%'};return _0x162e65;}})});}_0x36ae2b=_[_0x3860('0x3f')]({},_0x36ae2b,_0x3628f7[_0x3860('0x41')]);var _0x4f486e={'where':_0x36ae2b[_0x3860('0x42')]};return db[_0x3860('0x43')][_0x3860('0x1c')](_0x4f486e)['then'](function(_0x3a87e5){_0x367b14['count']=_0x3a87e5;if(_0x3628f7[_0x3860('0x35')][_0x3860('0x44')]){_0x36ae2b[_0x3860('0x45')]=[{'all':!![]}];}return db[_0x3860('0x43')][_0x3860('0x46')](_0x36ae2b);})[_0x3860('0x23')](function(_0x4e0a44){_0x367b14[_0x3860('0x47')]=_0x4e0a44;return _0x367b14;})[_0x3860('0x23')](respondWithFilteredResult(_0x4bbae9,_0x36ae2b))['catch'](handleError(_0x4bbae9,null));};exports['show']=function(_0x2938d4,_0x5840f7){var _0x4f2f53={'raw':!![],'where':{'id':_0x2938d4[_0x3860('0x48')]['id']}},_0x164a77={};_0x164a77['model']=_[_0x3860('0x31')](db[_0x3860('0x43')][_0x3860('0x2d')]);_0x164a77[_0x3860('0x35')]=_[_0x3860('0x31')](_0x2938d4[_0x3860('0x35')]);_0x164a77[_0x3860('0x32')]=_[_0x3860('0x33')](_0x164a77[_0x3860('0x34')],_0x164a77[_0x3860('0x35')]);_0x4f2f53[_0x3860('0x36')]=_[_0x3860('0x33')](_0x164a77[_0x3860('0x34')],qs['fields'](_0x2938d4[_0x3860('0x35')]['fields']));_0x4f2f53[_0x3860('0x36')]=_0x4f2f53[_0x3860('0x36')][_0x3860('0x38')]?_0x4f2f53[_0x3860('0x36')]:_0x164a77[_0x3860('0x34')];if(_0x2938d4[_0x3860('0x35')][_0x3860('0x44')]){_0x4f2f53[_0x3860('0x45')]=[{'all':!![]}];}_0x4f2f53=_['merge']({},_0x4f2f53,_0x2938d4[_0x3860('0x41')]);return db[_0x3860('0x43')][_0x3860('0x49')](_0x4f2f53)['then'](handleEntityNotFound(_0x5840f7,null))[_0x3860('0x23')](respondWithResult(_0x5840f7,null))[_0x3860('0x4a')](handleError(_0x5840f7,null));};exports[_0x3860('0x4b')]=function(_0x3dc957,_0x5ed2db){return db['ContactItemType'][_0x3860('0x4b')](_0x3dc957['body'],{})[_0x3860('0x23')](function(_0x4226da){var _0x410dab=_0x3dc957['user'][_0x3860('0x25')]({'plain':!![]});if(!_0x410dab)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x410dab[_0x3860('0x4c')]==='user'){var _0xf9edb4=_0x4226da[_0x3860('0x25')]({'plain':!![]});var _0x39b2e0='ContactItemTypes';return db['UserProfileSection'][_0x3860('0x49')]({'where':{'name':_0x39b2e0,'userProfileId':_0x410dab[_0x3860('0x4d')]},'raw':!![]})['then'](function(_0x3910f5){if(_0x3910f5&&_0x3910f5['autoAssociation']===0x0){return db[_0x3860('0x26')][_0x3860('0x4b')]({'name':_0xf9edb4[_0x3860('0x29')],'resourceId':_0xf9edb4['id'],'type':_0x3910f5[_0x3860('0x29')],'sectionId':_0x3910f5['id']},{})[_0x3860('0x23')](function(){return _0x4226da;});}else{return _0x4226da;}})[_0x3860('0x4a')](function(_0x3fad85){logger['error'](_0x3860('0x4e'),_0x3fad85);throw _0x3fad85;});}return _0x4226da;})[_0x3860('0x23')](respondWithResult(_0x5ed2db,0xc9))[_0x3860('0x4a')](handleError(_0x5ed2db,null));};exports[_0x3860('0x22')]=function(_0x279e6f,_0x447163){if(_0x279e6f['body']['id']){delete _0x279e6f[_0x3860('0x4f')]['id'];}return db[_0x3860('0x43')][_0x3860('0x49')]({'where':{'id':_0x279e6f[_0x3860('0x48')]['id']}})[_0x3860('0x23')](handleEntityNotFound(_0x447163,null))[_0x3860('0x23')](saveUpdates(_0x279e6f[_0x3860('0x4f')],null))[_0x3860('0x23')](respondWithResult(_0x447163,null))['catch'](handleError(_0x447163,null));};exports[_0x3860('0x24')]=function(_0x2ff0bf,_0x53a669){return db[_0x3860('0x43')][_0x3860('0x49')]({'where':{'id':_0x2ff0bf[_0x3860('0x48')]['id']}})['then'](handleEntityNotFound(_0x53a669,null))[_0x3860('0x23')](db['CmContactHasItem'][_0x3860('0x22')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x2ff0bf[_0x3860('0x48')]['id']}}))[_0x3860('0x23')](removeEntity(_0x53a669,null))[_0x3860('0x4a')](handleError(_0x53a669,null));};
\ No newline at end of file
+var _0x9f0e=['index','map','ContactItemType','rawAttributes','fieldName','type','key','model','query','intersection','attributes','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','catch','show','params','keys','filters','fields','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','get','ContactItemTypes','UserProfileResource','end','error','stack','name','send'];(function(_0x380f35,_0x5a31d8){var _0xcda2e=function(_0x1ab9e3){while(--_0x1ab9e3){_0x380f35['push'](_0x380f35['shift']());}};_0xcda2e(++_0x5a31d8);}(_0x9f0e,0x116));var _0xe9f0=function(_0x3f19f8,_0x52e9b2){_0x3f19f8=_0x3f19f8-0x0;var _0x380367=_0x9f0e[_0x3f19f8];return _0x380367;};'use strict';var emlformat=require(_0xe9f0('0x0'));var rimraf=require(_0xe9f0('0x1'));var zipdir=require(_0xe9f0('0x2'));var jsonpatch=require(_0xe9f0('0x3'));var rp=require(_0xe9f0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9f0('0x5'));var util=require(_0xe9f0('0x6'));var path=require(_0xe9f0('0x7'));var sox=require(_0xe9f0('0x8'));var csv=require(_0xe9f0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9f0('0xa'));var squel=require(_0xe9f0('0xb'));var crypto=require(_0xe9f0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9f0('0xd'));var toCsv=require(_0xe9f0('0x9'));var querystring=require(_0xe9f0('0xe'));var Papa=require(_0xe9f0('0xf'));var Redis=require(_0xe9f0('0x10'));var authService=require(_0xe9f0('0x11'));var qs=require(_0xe9f0('0x12'));var as=require(_0xe9f0('0x13'));var hardwareService=require(_0xe9f0('0x14'));var logger=require('../../config/logger')(_0xe9f0('0x15'));var utils=require(_0xe9f0('0x16'));var config=require(_0xe9f0('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9f0('0x18'))['db'];function respondWithStatusCode(_0x586763,_0x367545){_0x367545=_0x367545||0xcc;return function(_0xd82420){if(_0xd82420){return _0x586763[_0xe9f0('0x19')](_0x367545);}return _0x586763[_0xe9f0('0x1a')](_0x367545)['end']();};}function respondWithResult(_0x2cf75d,_0x5a10c6){_0x5a10c6=_0x5a10c6||0xc8;return function(_0x1e3ba8){if(_0x1e3ba8){return _0x2cf75d[_0xe9f0('0x1a')](_0x5a10c6)[_0xe9f0('0x1b')](_0x1e3ba8);}};}function respondWithFilteredResult(_0x59320d,_0x28bfac){return function(_0x33e9e4){if(_0x33e9e4){var _0x2e68ef=typeof _0x28bfac['offset']===_0xe9f0('0x1c')&&typeof _0x28bfac[_0xe9f0('0x1d')]===_0xe9f0('0x1c');var _0xd71ac8=_0x33e9e4[_0xe9f0('0x1e')];var _0x2ab12b=_0x2e68ef?0x0:_0x28bfac[_0xe9f0('0x1f')];var _0x59bf5a=_0x2e68ef?_0x33e9e4[_0xe9f0('0x1e')]:_0x28bfac[_0xe9f0('0x1f')]+_0x28bfac[_0xe9f0('0x1d')];var _0x5c4182;if(_0x59bf5a>=_0xd71ac8){_0x59bf5a=_0xd71ac8;_0x5c4182=0xc8;}else{_0x5c4182=0xce;}_0x59320d[_0xe9f0('0x1a')](_0x5c4182);return _0x59320d[_0xe9f0('0x20')](_0xe9f0('0x21'),_0x2ab12b+'-'+_0x59bf5a+'/'+_0xd71ac8)[_0xe9f0('0x1b')](_0x33e9e4);}return null;};}function patchUpdates(_0x5ba788){return function(_0x33f143){try{jsonpatch[_0xe9f0('0x22')](_0x33f143,_0x5ba788,!![]);}catch(_0x583687){return BPromise['reject'](_0x583687);}return _0x33f143['save']();};}function saveUpdates(_0x12fe9f,_0xa1ddc){return function(_0x1211ae){if(_0x1211ae){return _0x1211ae[_0xe9f0('0x23')](_0x12fe9f)[_0xe9f0('0x24')](function(_0x4a5c27){return _0x4a5c27;});}return null;};}function removeEntity(_0x229fe0,_0x38b7ee){return function(_0x437d43){if(_0x437d43){return _0x437d43[_0xe9f0('0x25')]()[_0xe9f0('0x24')](function(){var _0x372ffd=_0x437d43[_0xe9f0('0x26')]({'plain':!![]});var _0x1321bb=_0xe9f0('0x27');return db[_0xe9f0('0x28')]['destroy']({'where':{'type':_0x1321bb,'resourceId':_0x372ffd['id']}})[_0xe9f0('0x24')](function(){return _0x437d43;});})[_0xe9f0('0x24')](function(){_0x229fe0[_0xe9f0('0x1a')](0xcc)[_0xe9f0('0x29')]();});}};}function handleEntityNotFound(_0x4cf1b1,_0x212a38){return function(_0x2613fd){if(!_0x2613fd){_0x4cf1b1[_0xe9f0('0x19')](0x194);}return _0x2613fd;};}function handleError(_0x1f98a7,_0x4335c6){_0x4335c6=_0x4335c6||0x1f4;return function(_0x5457f6){logger[_0xe9f0('0x2a')](_0x5457f6[_0xe9f0('0x2b')]);if(_0x5457f6[_0xe9f0('0x2c')]){delete _0x5457f6[_0xe9f0('0x2c')];}_0x1f98a7[_0xe9f0('0x1a')](_0x4335c6)[_0xe9f0('0x2d')](_0x5457f6);};}exports[_0xe9f0('0x2e')]=function(_0x2efd33,_0x2b6503){var _0x3dbe49={},_0x22806c={},_0x617ad3={'count':0x0,'rows':[]};var _0x445ad0=_[_0xe9f0('0x2f')](db[_0xe9f0('0x30')][_0xe9f0('0x31')],function(_0x80e3ac){return{'name':_0x80e3ac[_0xe9f0('0x32')],'type':_0x80e3ac[_0xe9f0('0x33')][_0xe9f0('0x34')]};});_0x22806c[_0xe9f0('0x35')]=_[_0xe9f0('0x2f')](_0x445ad0,_0xe9f0('0x2c'));_0x22806c[_0xe9f0('0x36')]=_['keys'](_0x2efd33['query']);_0x22806c['filters']=_[_0xe9f0('0x37')](_0x22806c['model'],_0x22806c[_0xe9f0('0x36')]);_0x3dbe49[_0xe9f0('0x38')]=_['intersection'](_0x22806c[_0xe9f0('0x35')],qs['fields'](_0x2efd33['query']['fields']));_0x3dbe49[_0xe9f0('0x38')]=_0x3dbe49[_0xe9f0('0x38')]['length']?_0x3dbe49[_0xe9f0('0x38')]:_0x22806c[_0xe9f0('0x35')];if(!_0x2efd33[_0xe9f0('0x36')]['hasOwnProperty']('nolimit')){_0x3dbe49[_0xe9f0('0x1d')]=qs[_0xe9f0('0x1d')](_0x2efd33[_0xe9f0('0x36')]['limit']);_0x3dbe49[_0xe9f0('0x1f')]=qs[_0xe9f0('0x1f')](_0x2efd33[_0xe9f0('0x36')][_0xe9f0('0x1f')]);}_0x3dbe49[_0xe9f0('0x39')]=qs['sort'](_0x2efd33[_0xe9f0('0x36')][_0xe9f0('0x3a')]);_0x3dbe49[_0xe9f0('0x3b')]=qs['filters'](_[_0xe9f0('0x3c')](_0x2efd33[_0xe9f0('0x36')],_0x22806c['filters']),_0x445ad0);if(_0x2efd33[_0xe9f0('0x36')]['filter']){_0x3dbe49[_0xe9f0('0x3b')]=_['merge'](_0x3dbe49['where'],{'$or':_['map'](_0x445ad0,function(_0x5bddcc){if(_0x5bddcc['type']!==_0xe9f0('0x3d')){var _0x2d4115={};_0x2d4115[_0x5bddcc[_0xe9f0('0x2c')]]={'$like':'%'+_0x2efd33[_0xe9f0('0x36')][_0xe9f0('0x3e')]+'%'};return _0x2d4115;}})});}_0x3dbe49=_[_0xe9f0('0x3f')]({},_0x3dbe49,_0x2efd33[_0xe9f0('0x40')]);var _0x3e79c1={'where':_0x3dbe49[_0xe9f0('0x3b')]};return db['ContactItemType'][_0xe9f0('0x1e')](_0x3e79c1)[_0xe9f0('0x24')](function(_0x36b00a){_0x617ad3['count']=_0x36b00a;if(_0x2efd33['query'][_0xe9f0('0x41')]){_0x3dbe49['include']=[{'all':!![]}];}return db[_0xe9f0('0x30')][_0xe9f0('0x42')](_0x3dbe49);})[_0xe9f0('0x24')](function(_0x42d9d2){_0x617ad3['rows']=_0x42d9d2;return _0x617ad3;})[_0xe9f0('0x24')](respondWithFilteredResult(_0x2b6503,_0x3dbe49))[_0xe9f0('0x43')](handleError(_0x2b6503,null));};exports[_0xe9f0('0x44')]=function(_0x18faaf,_0x37a2ac){var _0x59378a={'raw':!![],'where':{'id':_0x18faaf[_0xe9f0('0x45')]['id']}},_0x60a40d={};_0x60a40d[_0xe9f0('0x35')]=_[_0xe9f0('0x46')](db[_0xe9f0('0x30')]['rawAttributes']);_0x60a40d[_0xe9f0('0x36')]=_['keys'](_0x18faaf['query']);_0x60a40d[_0xe9f0('0x47')]=_[_0xe9f0('0x37')](_0x60a40d['model'],_0x60a40d[_0xe9f0('0x36')]);_0x59378a[_0xe9f0('0x38')]=_[_0xe9f0('0x37')](_0x60a40d[_0xe9f0('0x35')],qs[_0xe9f0('0x48')](_0x18faaf[_0xe9f0('0x36')][_0xe9f0('0x48')]));_0x59378a['attributes']=_0x59378a[_0xe9f0('0x38')]['length']?_0x59378a[_0xe9f0('0x38')]:_0x60a40d['model'];if(_0x18faaf[_0xe9f0('0x36')]['includeAll']){_0x59378a[_0xe9f0('0x49')]=[{'all':!![]}];}_0x59378a=_[_0xe9f0('0x3f')]({},_0x59378a,_0x18faaf[_0xe9f0('0x40')]);return db['ContactItemType'][_0xe9f0('0x4a')](_0x59378a)[_0xe9f0('0x24')](handleEntityNotFound(_0x37a2ac,null))[_0xe9f0('0x24')](respondWithResult(_0x37a2ac,null))[_0xe9f0('0x43')](handleError(_0x37a2ac,null));};exports[_0xe9f0('0x4b')]=function(_0x135175,_0x6ece3f){return db[_0xe9f0('0x30')][_0xe9f0('0x4b')](_0x135175[_0xe9f0('0x4c')],{})[_0xe9f0('0x24')](function(_0x1325a2){var _0x57beee=_0x135175['user'][_0xe9f0('0x26')]({'plain':!![]});if(!_0x57beee)throw new Error(_0xe9f0('0x4d'));if(_0x57beee[_0xe9f0('0x4e')]==='user'){var _0x1ac381=_0x1325a2['get']({'plain':!![]});var _0x323e1e=_0xe9f0('0x27');return db[_0xe9f0('0x4f')][_0xe9f0('0x4a')]({'where':{'name':_0x323e1e,'userProfileId':_0x57beee['userProfileId']},'raw':!![]})[_0xe9f0('0x24')](function(_0x3fa271){if(_0x3fa271&&_0x3fa271['autoAssociation']===0x0){return db[_0xe9f0('0x28')][_0xe9f0('0x4b')]({'name':_0x1ac381[_0xe9f0('0x2c')],'resourceId':_0x1ac381['id'],'type':_0x3fa271[_0xe9f0('0x2c')],'sectionId':_0x3fa271['id']},{})['then'](function(){return _0x1325a2;});}else{return _0x1325a2;}})[_0xe9f0('0x43')](function(_0x3a5d19){logger[_0xe9f0('0x2a')](_0xe9f0('0x50'),_0x3a5d19);throw _0x3a5d19;});}return _0x1325a2;})[_0xe9f0('0x24')](respondWithResult(_0x6ece3f,0xc9))[_0xe9f0('0x43')](handleError(_0x6ece3f,null));};exports[_0xe9f0('0x23')]=function(_0x12d9be,_0x4da78f){if(_0x12d9be[_0xe9f0('0x4c')]['id']){delete _0x12d9be[_0xe9f0('0x4c')]['id'];}return db[_0xe9f0('0x30')][_0xe9f0('0x4a')]({'where':{'id':_0x12d9be[_0xe9f0('0x45')]['id']}})[_0xe9f0('0x24')](handleEntityNotFound(_0x4da78f,null))[_0xe9f0('0x24')](saveUpdates(_0x12d9be[_0xe9f0('0x4c')],null))[_0xe9f0('0x24')](respondWithResult(_0x4da78f,null))[_0xe9f0('0x43')](handleError(_0x4da78f,null));};exports[_0xe9f0('0x25')]=function(_0x3c26ac,_0x4f1c25){return db[_0xe9f0('0x30')]['find']({'where':{'id':_0x3c26ac[_0xe9f0('0x45')]['id']}})[_0xe9f0('0x24')](handleEntityNotFound(_0x4f1c25,null))[_0xe9f0('0x24')](db['CmContactHasItem']['update']({'ItemTypeId':null},{'where':{'ItemTypeId':_0x3c26ac[_0xe9f0('0x45')]['id']}}))['then'](removeEntity(_0x4f1c25,null))[_0xe9f0('0x43')](handleError(_0x4f1c25,null));};
\ No newline at end of file
index bd6bcbf..ca1e907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b3d=['ContactItemType','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./contactItemType.attributes'];(function(_0x7a107c,_0x20592e){var _0xd6ec65=function(_0x4d76cb){while(--_0x4d76cb){_0x7a107c['push'](_0x7a107c['shift']());}};_0xd6ec65(++_0x20592e);}(_0x5b3d,0x137));var _0xd5b3=function(_0x13e11a,_0xe0fc7){_0x13e11a=_0x13e11a-0x0;var _0xd7f115=_0x5b3d[_0x13e11a];return _0xd7f115;};'use strict';var _=require(_0xd5b3('0x0'));var util=require(_0xd5b3('0x1'));var logger=require(_0xd5b3('0x2'))(_0xd5b3('0x3'));var moment=require(_0xd5b3('0x4'));var BPromise=require(_0xd5b3('0x5'));var rp=require(_0xd5b3('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd5b3('0x7'));var config=require('../../config/environment');var attributes=require(_0xd5b3('0x8'));module['exports']=function(_0x41ad80,_0x214dc9){return _0x41ad80['define'](_0xd5b3('0x9'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6360=['request-promise','path','rimraf','./contactItemType.attributes','exports','define','ContactItemType','util','../../config/logger','bluebird'];(function(_0x11fe5b,_0xfe074){var _0xa215f2=function(_0x5d0455){while(--_0x5d0455){_0x11fe5b['push'](_0x11fe5b['shift']());}};_0xa215f2(++_0xfe074);}(_0x6360,0x147));var _0x0636=function(_0x1b5a05,_0x27961b){_0x1b5a05=_0x1b5a05-0x0;var _0x14c8bc=_0x6360[_0x1b5a05];return _0x14c8bc;};'use strict';var _=require('lodash');var util=require(_0x0636('0x0'));var logger=require(_0x0636('0x1'))('api');var moment=require('moment');var BPromise=require(_0x0636('0x2'));var rp=require(_0x0636('0x3'));var fs=require('fs');var path=require(_0x0636('0x4'));var rimraf=require(_0x0636('0x5'));var config=require('../../config/environment');var attributes=require(_0x0636('0x6'));module[_0x0636('0x7')]=function(_0x4b2f98,_0x51a1be){return _0x4b2f98[_0x0636('0x8')](_0x0636('0x9'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e5766fb..d115b69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cfb=['info','ContactItemType,\x20%s,\x20%s','debug','ContactItemType,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then'];(function(_0x145794,_0x592be7){var _0x3af74b=function(_0x1f4f4c){while(--_0x1f4f4c){_0x145794['push'](_0x145794['shift']());}};_0x3af74b(++_0x592be7);}(_0x5cfb,0x107));var _0xb5cf=function(_0x57dd36,_0x4d84bf){_0x57dd36=_0x57dd36-0x0;var _0x1314a1=_0x5cfb[_0x57dd36];return _0x1314a1;};'use strict';var _=require(_0xb5cf('0x0'));var util=require(_0xb5cf('0x1'));var moment=require(_0xb5cf('0x2'));var BPromise=require(_0xb5cf('0x3'));var rs=require(_0xb5cf('0x4'));var fs=require('fs');var Redis=require(_0xb5cf('0x5'));var db=require(_0xb5cf('0x6'))['db'];var utils=require(_0xb5cf('0x7'));var logger=require('../../config/logger')(_0xb5cf('0x8'));var config=require(_0xb5cf('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb5cf('0xa')][_0xb5cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x32b441,_0x15d672,_0x595131){return new BPromise(function(_0x54f0bc,_0x49679f){return client['request'](_0x32b441,_0x595131)[_0xb5cf('0xc')](function(_0x39c4c9){logger[_0xb5cf('0xd')](_0xb5cf('0xe'),_0x15d672,'request\x20sent');logger[_0xb5cf('0xf')](_0xb5cf('0x10'),_0x15d672,_0xb5cf('0x11'),JSON[_0xb5cf('0x12')](_0x39c4c9));if(_0x39c4c9['error']){if(_0x39c4c9[_0xb5cf('0x13')][_0xb5cf('0x14')]===0x1f4){logger[_0xb5cf('0x13')](_0xb5cf('0xe'),_0x15d672,_0x39c4c9[_0xb5cf('0x13')][_0xb5cf('0x15')]);return _0x49679f(_0x39c4c9[_0xb5cf('0x13')][_0xb5cf('0x15')]);}logger['error'](_0xb5cf('0xe'),_0x15d672,_0x39c4c9[_0xb5cf('0x13')]['message']);return _0x54f0bc(_0x39c4c9[_0xb5cf('0x13')]['message']);}else{logger[_0xb5cf('0xd')](_0xb5cf('0xe'),_0x15d672,'request\x20sent');_0x54f0bc(_0x39c4c9[_0xb5cf('0x16')][_0xb5cf('0x15')]);}})['catch'](function(_0x1a8af1){logger[_0xb5cf('0x13')](_0xb5cf('0xe'),_0x15d672,_0x1a8af1);_0x49679f(_0x1a8af1);});});}
\ No newline at end of file
+var _0x61d0=['ContactItemType,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x152f00,_0x3e96c7){var _0x55db7b=function(_0x513efe){while(--_0x513efe){_0x152f00['push'](_0x152f00['shift']());}};_0x55db7b(++_0x3e96c7);}(_0x61d0,0x123));var _0x061d=function(_0x3df822,_0x299495){_0x3df822=_0x3df822-0x0;var _0x4e457d=_0x61d0[_0x3df822];return _0x4e457d;};'use strict';var _=require(_0x061d('0x0'));var util=require(_0x061d('0x1'));var moment=require(_0x061d('0x2'));var BPromise=require(_0x061d('0x3'));var rs=require(_0x061d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x061d('0x5'))['db'];var utils=require(_0x061d('0x6'));var logger=require(_0x061d('0x7'))(_0x061d('0x8'));var config=require('../../config/environment');var jayson=require(_0x061d('0x9'));var client=jayson[_0x061d('0xa')][_0x061d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xf4692c,_0x6aa2f4,_0x4a53fd){return new BPromise(function(_0x5c3b04,_0x48b744){return client['request'](_0xf4692c,_0x4a53fd)[_0x061d('0xc')](function(_0xe8fe32){logger[_0x061d('0xd')](_0x061d('0xe'),_0x6aa2f4,_0x061d('0xf'));logger[_0x061d('0x10')](_0x061d('0x11'),_0x6aa2f4,'request\x20sent',JSON['stringify'](_0xe8fe32));if(_0xe8fe32['error']){if(_0xe8fe32[_0x061d('0x12')][_0x061d('0x13')]===0x1f4){logger['error'](_0x061d('0xe'),_0x6aa2f4,_0xe8fe32[_0x061d('0x12')][_0x061d('0x14')]);return _0x48b744(_0xe8fe32[_0x061d('0x12')][_0x061d('0x14')]);}logger[_0x061d('0x12')](_0x061d('0xe'),_0x6aa2f4,_0xe8fe32[_0x061d('0x12')]['message']);return _0x5c3b04(_0xe8fe32[_0x061d('0x12')][_0x061d('0x14')]);}else{logger[_0x061d('0xd')](_0x061d('0xe'),_0x6aa2f4,_0x061d('0xf'));_0x5c3b04(_0xe8fe32[_0x061d('0x15')][_0x061d('0x14')]);}})['catch'](function(_0x39a45a){logger[_0x061d('0x12')]('ContactItemType,\x20%s,\x20%s',_0x6aa2f4,_0x39a45a);_0x48b744(_0x39a45a);});});}
\ No newline at end of file
index 9094b96..2632c72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b2=['create','put','delete','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','isAuthenticated','get','/:id','show','post'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x42b2,0x9d));var _0x242b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x42b2[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x242b('0x0'));var util=require(_0x242b('0x1'));var path=require('path');var timeout=require(_0x242b('0x2'));var express=require(_0x242b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x242b('0x4'));var interaction=require(_0x242b('0x5'));var config=require(_0x242b('0x6'));var controller=require(_0x242b('0x7'));router['get']('/',auth[_0x242b('0x8')](),controller['index']);router[_0x242b('0x9')](_0x242b('0xa'),auth[_0x242b('0x8')](),controller[_0x242b('0xb')]);router[_0x242b('0xc')]('/',auth[_0x242b('0x8')](),controller[_0x242b('0xd')]);router[_0x242b('0xe')]('/:id',auth[_0x242b('0x8')](),controller['update']);router[_0x242b('0xf')](_0x242b('0xa'),auth[_0x242b('0x8')](),controller[_0x242b('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x25ea=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./contactItemType.controller','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x25ea,0x105));var _0xa25e=function(_0x1b76e6,_0x598520){_0x1b76e6=_0x1b76e6-0x0;var _0x333b53=_0x25ea[_0x1b76e6];return _0x333b53;};'use strict';var multer=require(_0xa25e('0x0'));var util=require(_0xa25e('0x1'));var path=require(_0xa25e('0x2'));var timeout=require(_0xa25e('0x3'));var express=require(_0xa25e('0x4'));var router=express[_0xa25e('0x5')]();var fs_extra=require(_0xa25e('0x6'));var auth=require(_0xa25e('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa25e('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xa25e('0x9')]);router['get'](_0xa25e('0xa'),auth['isAuthenticated'](),controller[_0xa25e('0xb')]);router[_0xa25e('0xc')]('/',auth[_0xa25e('0xd')](),controller[_0xa25e('0xe')]);router[_0xa25e('0xf')](_0xa25e('0xa'),auth[_0xa25e('0xd')](),controller[_0xa25e('0x10')]);router[_0xa25e('0x11')](_0xa25e('0xa'),auth[_0xa25e('0xd')](),controller[_0xa25e('0x12')]);module[_0xa25e('0x13')]=router;
\ No newline at end of file
index 636a534..86c10ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x46c994,_0x5c9716){var _0x5a5296=function(_0x5be7b1){while(--_0x5be7b1){_0x46c994['push'](_0x46c994['shift']());}};_0x5a5296(++_0x5c9716);}(_0x757a,0xde));var _0xa757=function(_0x2545f5,_0x18b295){_0x2545f5=_0x2545f5-0x0;var _0x2ae5e2=_0x757a[_0x2545f5];return _0x2ae5e2;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb7e7=['STRING','sequelize'];(function(_0x5c3ae9,_0x450f9a){var _0x3f5950=function(_0x594c1f){while(--_0x594c1f){_0x5c3ae9['push'](_0x5c3ae9['shift']());}};_0x3f5950(++_0x450f9a);}(_0xb7e7,0x121));var _0x7b7e=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0xb7e7[_0x513aa5];return _0x1a1a7c;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
index 69a2266..12f2d6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b12=['type','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','Dashboard','includeAll','include','findAll','rows','catch','length','options','create','body','user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','error','iframe','attrUrl','attrs','value','custom','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','total','attrSerie2','attrSerie3','attrReport','reportType','attrRefresh','stringify','DashboardItem','getItems','findOne','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','stack','name','index','rawAttributes'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2b12,0xca));var _0x22b1=function(_0x2a07db,_0x51fdb5){_0x2a07db=_0x2a07db-0x0;var _0x893273=_0x2b12[_0x2a07db];return _0x893273;};'use strict';var emlformat=require(_0x22b1('0x0'));var rimraf=require(_0x22b1('0x1'));var zipdir=require(_0x22b1('0x2'));var jsonpatch=require(_0x22b1('0x3'));var rp=require('request-promise');var moment=require(_0x22b1('0x4'));var BPromise=require(_0x22b1('0x5'));var Mustache=require(_0x22b1('0x6'));var util=require(_0x22b1('0x7'));var path=require(_0x22b1('0x8'));var sox=require(_0x22b1('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x22b1('0xa'));var _=require(_0x22b1('0xb'));var squel=require('squel');var crypto=require(_0x22b1('0xc'));var jsforce=require(_0x22b1('0xd'));var deskjs=require(_0x22b1('0xe'));var toCsv=require('to-csv');var querystring=require(_0x22b1('0xf'));var Papa=require(_0x22b1('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x22b1('0x11'));var as=require(_0x22b1('0x12'));var hardwareService=require(_0x22b1('0x13'));var logger=require(_0x22b1('0x14'))(_0x22b1('0x15'));var utils=require(_0x22b1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x22b1('0x17'));var db=require('../../mysqldb')['db'];config[_0x22b1('0x18')]=_['defaults'](config[_0x22b1('0x18')],{'host':_0x22b1('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x22b1('0x18')]));require(_0x22b1('0x1a'))[_0x22b1('0x1b')](socket);function respondWithStatusCode(_0x4f54a0,_0xa9741e){_0xa9741e=_0xa9741e||0xcc;return function(_0x632ec6){if(_0x632ec6){return _0x4f54a0[_0x22b1('0x1c')](_0xa9741e);}return _0x4f54a0[_0x22b1('0x1d')](_0xa9741e)[_0x22b1('0x1e')]();};}function respondWithResult(_0x1d2779,_0x1ec138){_0x1ec138=_0x1ec138||0xc8;return function(_0x2d5122){if(_0x2d5122){return _0x1d2779['status'](_0x1ec138)[_0x22b1('0x1f')](_0x2d5122);}};}function respondWithFilteredResult(_0x4e55ab,_0x1a8ced){return function(_0x4a518d){if(_0x4a518d){var _0x14f466=typeof _0x1a8ced[_0x22b1('0x20')]===_0x22b1('0x21')&&typeof _0x1a8ced[_0x22b1('0x22')]===_0x22b1('0x21');var _0x103d2e=_0x4a518d['count'];var _0x6cd588=_0x14f466?0x0:_0x1a8ced['offset'];var _0x373f14=_0x14f466?_0x4a518d[_0x22b1('0x23')]:_0x1a8ced[_0x22b1('0x20')]+_0x1a8ced[_0x22b1('0x22')];var _0x48aca5;if(_0x373f14>=_0x103d2e){_0x373f14=_0x103d2e;_0x48aca5=0xc8;}else{_0x48aca5=0xce;}_0x4e55ab[_0x22b1('0x1d')](_0x48aca5);return _0x4e55ab[_0x22b1('0x24')](_0x22b1('0x25'),_0x6cd588+'-'+_0x373f14+'/'+_0x103d2e)[_0x22b1('0x1f')](_0x4a518d);}return null;};}function patchUpdates(_0x12236a){return function(_0x57ab76){try{jsonpatch[_0x22b1('0x26')](_0x57ab76,_0x12236a,!![]);}catch(_0x5865de){return BPromise[_0x22b1('0x27')](_0x5865de);}return _0x57ab76[_0x22b1('0x28')]();};}function saveUpdates(_0x28e5b9,_0x11cb01){return function(_0x159fd6){if(_0x159fd6){return _0x159fd6[_0x22b1('0x29')](_0x28e5b9)[_0x22b1('0x2a')](function(_0x5bb737){return _0x5bb737;});}return null;};}function removeEntity(_0x492970,_0x43d10){return function(_0x2688ab){if(_0x2688ab){return _0x2688ab[_0x22b1('0x2b')]()[_0x22b1('0x2a')](function(){var _0x13357c=_0x2688ab[_0x22b1('0x2c')]({'plain':!![]});var _0x4bb836=_0x22b1('0x2d');return db['UserProfileResource'][_0x22b1('0x2b')]({'where':{'type':_0x4bb836,'resourceId':_0x13357c['id']}})[_0x22b1('0x2a')](function(){return _0x2688ab;});})[_0x22b1('0x2a')](function(){_0x492970[_0x22b1('0x1d')](0xcc)[_0x22b1('0x1e')]();});}};}function handleEntityNotFound(_0x28e9a9,_0xd00b7d){return function(_0x2fdcd6){if(!_0x2fdcd6){_0x28e9a9[_0x22b1('0x1c')](0x194);}return _0x2fdcd6;};}function handleError(_0x2807e2,_0x43d7d2){_0x43d7d2=_0x43d7d2||0x1f4;return function(_0x5f3834){logger['error'](_0x5f3834[_0x22b1('0x2e')]);if(_0x5f3834[_0x22b1('0x2f')]){delete _0x5f3834[_0x22b1('0x2f')];}_0x2807e2[_0x22b1('0x1d')](_0x43d7d2)['send'](_0x5f3834);};}exports[_0x22b1('0x30')]=function(_0x1c9e25,_0x4a6456){var _0x4ceb63={},_0x1cd9de={},_0x57109e={'count':0x0,'rows':[]};var _0x13b63a=_['map'](db['Dashboard'][_0x22b1('0x31')],function(_0x6e9e5d){return{'name':_0x6e9e5d['fieldName'],'type':_0x6e9e5d[_0x22b1('0x32')][_0x22b1('0x33')]};});_0x1cd9de[_0x22b1('0x34')]=_[_0x22b1('0x35')](_0x13b63a,_0x22b1('0x2f'));_0x1cd9de['query']=_[_0x22b1('0x36')](_0x1c9e25[_0x22b1('0x37')]);_0x1cd9de['filters']=_[_0x22b1('0x38')](_0x1cd9de[_0x22b1('0x34')],_0x1cd9de[_0x22b1('0x37')]);_0x4ceb63[_0x22b1('0x39')]=_['intersection'](_0x1cd9de['model'],qs['fields'](_0x1c9e25[_0x22b1('0x37')][_0x22b1('0x3a')]));_0x4ceb63[_0x22b1('0x39')]=_0x4ceb63[_0x22b1('0x39')]['length']?_0x4ceb63[_0x22b1('0x39')]:_0x1cd9de[_0x22b1('0x34')];if(!_0x1c9e25['query'][_0x22b1('0x3b')](_0x22b1('0x3c'))){_0x4ceb63[_0x22b1('0x22')]=qs['limit'](_0x1c9e25['query']['limit']);_0x4ceb63[_0x22b1('0x20')]=qs[_0x22b1('0x20')](_0x1c9e25['query'][_0x22b1('0x20')]);}_0x4ceb63[_0x22b1('0x3d')]=qs[_0x22b1('0x3e')](_0x1c9e25[_0x22b1('0x37')][_0x22b1('0x3e')]);_0x4ceb63[_0x22b1('0x3f')]=qs[_0x22b1('0x40')](_[_0x22b1('0x41')](_0x1c9e25[_0x22b1('0x37')],_0x1cd9de[_0x22b1('0x40')]),_0x13b63a);if(_0x1c9e25[_0x22b1('0x37')][_0x22b1('0x42')]){_0x4ceb63[_0x22b1('0x3f')]=_[_0x22b1('0x43')](_0x4ceb63['where'],{'$or':_[_0x22b1('0x35')](_0x13b63a,function(_0x53165b){if(_0x53165b[_0x22b1('0x32')]!==_0x22b1('0x44')){var _0x217d63={};_0x217d63[_0x53165b[_0x22b1('0x2f')]]={'$like':'%'+_0x1c9e25[_0x22b1('0x37')][_0x22b1('0x42')]+'%'};return _0x217d63;}})});}_0x4ceb63=_[_0x22b1('0x43')]({},_0x4ceb63,_0x1c9e25['options']);var _0xc21373={'where':_0x4ceb63[_0x22b1('0x3f')]};return db[_0x22b1('0x45')][_0x22b1('0x23')](_0xc21373)['then'](function(_0x5b0087){_0x57109e[_0x22b1('0x23')]=_0x5b0087;if(_0x1c9e25['query'][_0x22b1('0x46')]){_0x4ceb63[_0x22b1('0x47')]=[{'all':!![]}];}return db[_0x22b1('0x45')][_0x22b1('0x48')](_0x4ceb63);})[_0x22b1('0x2a')](function(_0x55bcb0){_0x57109e[_0x22b1('0x49')]=_0x55bcb0;return _0x57109e;})[_0x22b1('0x2a')](respondWithFilteredResult(_0x4a6456,_0x4ceb63))[_0x22b1('0x4a')](handleError(_0x4a6456,null));};exports['show']=function(_0x1e12c0,_0x3fbafc){var _0xbfe271={'raw':![],'where':{'id':_0x1e12c0['params']['id']}},_0x3ba89e={};_0x3ba89e[_0x22b1('0x34')]=_['keys'](db['Dashboard'][_0x22b1('0x31')]);_0x3ba89e[_0x22b1('0x37')]=_[_0x22b1('0x36')](_0x1e12c0[_0x22b1('0x37')]);_0x3ba89e[_0x22b1('0x40')]=_[_0x22b1('0x38')](_0x3ba89e[_0x22b1('0x34')],_0x3ba89e[_0x22b1('0x37')]);_0xbfe271[_0x22b1('0x39')]=_[_0x22b1('0x38')](_0x3ba89e[_0x22b1('0x34')],qs['fields'](_0x1e12c0[_0x22b1('0x37')][_0x22b1('0x3a')]));_0xbfe271[_0x22b1('0x39')]=_0xbfe271[_0x22b1('0x39')][_0x22b1('0x4b')]?_0xbfe271[_0x22b1('0x39')]:_0x3ba89e[_0x22b1('0x34')];if(_0x1e12c0[_0x22b1('0x37')]['includeAll']){_0xbfe271[_0x22b1('0x47')]=[{'all':!![]}];}_0xbfe271=_[_0x22b1('0x43')]({},_0xbfe271,_0x1e12c0[_0x22b1('0x4c')]);return db[_0x22b1('0x45')]['find'](_0xbfe271)[_0x22b1('0x2a')](handleEntityNotFound(_0x3fbafc,null))[_0x22b1('0x2a')](respondWithResult(_0x3fbafc,null))[_0x22b1('0x4a')](handleError(_0x3fbafc,null));};exports[_0x22b1('0x4d')]=function(_0x18dd9e,_0x3ab802){return db[_0x22b1('0x45')][_0x22b1('0x4d')](_0x18dd9e[_0x22b1('0x4e')],{})[_0x22b1('0x2a')](function(_0x251228){var _0x57d5b1=_0x18dd9e[_0x22b1('0x4f')]['get']({'plain':!![]});if(!_0x57d5b1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x57d5b1[_0x22b1('0x50')]===_0x22b1('0x4f')){var _0x200219=_0x251228[_0x22b1('0x2c')]({'plain':!![]});var _0x21dfb3='CustomDashboards';return db[_0x22b1('0x51')][_0x22b1('0x52')]({'where':{'name':_0x21dfb3,'userProfileId':_0x57d5b1[_0x22b1('0x53')]},'raw':!![]})[_0x22b1('0x2a')](function(_0x198130){if(_0x198130&&_0x198130[_0x22b1('0x54')]===0x0){return db[_0x22b1('0x55')][_0x22b1('0x4d')]({'name':_0x200219['name'],'resourceId':_0x200219['id'],'type':_0x198130[_0x22b1('0x2f')],'sectionId':_0x198130['id']},{})[_0x22b1('0x2a')](function(){return _0x251228;});}else{return _0x251228;}})[_0x22b1('0x4a')](function(_0x33c2b2){logger['error'](_0x22b1('0x56'),_0x33c2b2);throw _0x33c2b2;});}return _0x251228;})[_0x22b1('0x2a')](respondWithResult(_0x3ab802,0xc9))[_0x22b1('0x4a')](handleError(_0x3ab802,null));};exports[_0x22b1('0x57')]=function(_0x352e01,_0x391c98){var _0x1d60ea={'where':{'id':_0x352e01[_0x22b1('0x58')]['id']}},_0x31e799={};_0x31e799[_0x22b1('0x34')]=_[_0x22b1('0x36')](db[_0x22b1('0x45')][_0x22b1('0x31')]);_0x1d60ea[_0x22b1('0x39')]=_[_0x22b1('0x38')](_0x31e799[_0x22b1('0x34')],qs[_0x22b1('0x3a')](_0x352e01[_0x22b1('0x37')][_0x22b1('0x3a')]));_0x1d60ea[_0x22b1('0x39')]=_0x1d60ea[_0x22b1('0x39')][_0x22b1('0x4b')]?_0x1d60ea[_0x22b1('0x39')]:_0x31e799[_0x22b1('0x34')];if(_0x352e01['query']['includeAll']){_0x1d60ea[_0x22b1('0x47')]=[{'all':!![]}];}_0x1d60ea=_[_0x22b1('0x43')]({},_0x1d60ea,_0x352e01[_0x22b1('0x4c')]);return db[_0x22b1('0x45')][_0x22b1('0x52')](_0x1d60ea)['then'](handleEntityNotFound(_0x391c98,null))['then'](function(_0xd66132){if(_0xd66132){var _0x2b6e72=_0xd66132[_0x22b1('0x2c')]({'plain':!![]});_0x2b6e72=qs[_0x22b1('0x59')](_0x2b6e72,['id',_0x22b1('0x5a'),_0x22b1('0x5b')]);_0x352e01[_0x22b1('0x4e')]=_[_0x22b1('0x59')](_0x352e01[_0x22b1('0x4e')],['id',_0x22b1('0x5a'),_0x22b1('0x5b')]);return db['Dashboard'][_0x22b1('0x4d')](_[_0x22b1('0x43')](_0x2b6e72,_0x352e01[_0x22b1('0x4e')]),{'include':_0x352e01[_0x22b1('0x37')][_0x22b1('0x46')]?[{'all':!![]}]:undefined})[_0x22b1('0x2a')](function(_0x2bde7a){var _0x40c17d=_0x352e01['user']['get']({'plain':!![]});if(!_0x40c17d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x40c17d[_0x22b1('0x50')]==='user'){var _0x1434c7=_0x2bde7a[_0x22b1('0x2c')]({'plain':!![]});var _0x1983b1=_0x22b1('0x2d');return db['UserProfileSection'][_0x22b1('0x52')]({'where':{'name':_0x1983b1,'userProfileId':_0x40c17d['userProfileId']},'raw':!![]})['then'](function(_0x426d83){if(_0x426d83&&_0x426d83[_0x22b1('0x54')]===0x0){return db[_0x22b1('0x55')][_0x22b1('0x4d')]({'name':_0x1434c7[_0x22b1('0x2f')],'resourceId':_0x1434c7['id'],'type':_0x426d83[_0x22b1('0x2f')],'sectionId':_0x426d83['id']},{})[_0x22b1('0x2a')](function(){return _0x2bde7a;});}else{return _0x2bde7a;}})[_0x22b1('0x4a')](function(_0x1883d5){logger[_0x22b1('0x5c')](_0x22b1('0x56'),_0x1883d5);throw _0x1883d5;});}return _0x2bde7a;});}})['then'](respondWithResult(_0x391c98,0xc9))[_0x22b1('0x4a')](handleError(_0x391c98,null));};exports[_0x22b1('0x29')]=function(_0x2e77f3,_0x40817f){if(_0x2e77f3[_0x22b1('0x4e')]['id']){delete _0x2e77f3[_0x22b1('0x4e')]['id'];}return db[_0x22b1('0x45')][_0x22b1('0x52')]({'where':{'id':_0x2e77f3[_0x22b1('0x58')]['id']}})['then'](handleEntityNotFound(_0x40817f,null))['then'](saveUpdates(_0x2e77f3['body'],null))[_0x22b1('0x2a')](respondWithResult(_0x40817f,null))['catch'](handleError(_0x40817f,null));};exports[_0x22b1('0x2b')]=function(_0x4a93a2,_0xb5a2ef){return db[_0x22b1('0x45')]['find']({'where':{'id':_0x4a93a2[_0x22b1('0x58')]['id']}})[_0x22b1('0x2a')](handleEntityNotFound(_0xb5a2ef,null))[_0x22b1('0x2a')](removeEntity(_0xb5a2ef,null))[_0x22b1('0x4a')](handleError(_0xb5a2ef,null));};function widgetAttributes(_0x14e175){try{switch(_0x14e175[_0x22b1('0x32')]){case _0x22b1('0x5d'):return[{'name':_0x22b1('0x5e'),'value':_0x14e175[_0x22b1('0x5e')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x0]?_0x14e175['attrs'][0x0][_0x22b1('0x60')]:undefined)||'https://'}];case _0x22b1('0x61'):return[{'name':'attrPath','value':_0x14e175['attrPath']||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x0]?_0x14e175[_0x22b1('0x5f')][0x0][_0x22b1('0x60')]:undefined)||''}];case'clock':return[{'name':'attrHourFormat','value':_0x14e175[_0x22b1('0x62')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x0]?_0x14e175['attrs'][0x0][_0x22b1('0x60')]:undefined)||_0x22b1('0x63')},{'name':_0x22b1('0x64'),'value':_0x14e175[_0x22b1('0x64')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x1]?_0x14e175[_0x22b1('0x5f')][0x1][_0x22b1('0x60')]:undefined)||_0x22b1('0x65')},{'name':_0x22b1('0x66'),'value':_0x14e175[_0x22b1('0x66')]||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x2]?_0x14e175[_0x22b1('0x5f')][0x2]['value']:undefined)||0xc}];case _0x22b1('0x67'):return[{'name':_0x22b1('0x68'),'value':_0x14e175[_0x22b1('0x68')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175['attrs'][0x0]?_0x14e175[_0x22b1('0x5f')][0x0][_0x22b1('0x60')]:undefined)||'total'},{'name':_0x22b1('0x69'),'value':_0x14e175['attrVoiceQueues']||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x1]?_0x14e175['attrs'][0x1][_0x22b1('0x60')]:undefined)||[]},{'name':_0x22b1('0x66'),'value':_0x14e175[_0x22b1('0x66')]||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x2]?_0x14e175[_0x22b1('0x5f')][0x2][_0x22b1('0x60')]:undefined)||0x14},{'name':_0x22b1('0x6a'),'value':_0x14e175[_0x22b1('0x6a')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x3]?_0x14e175[_0x22b1('0x5f')][0x3]['value']:undefined)||_0x22b1('0x6b')},{'name':_0x22b1('0x6c'),'value':_0x14e175[_0x22b1('0x6c')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x4]?_0x14e175[_0x22b1('0x5f')][0x4]['value']:undefined)||''},{'name':_0x22b1('0x6d'),'value':_0x14e175[_0x22b1('0x6d')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x5]?_0x14e175[_0x22b1('0x5f')][0x5][_0x22b1('0x60')]:undefined)||''},{'name':_0x22b1('0x6e'),'value':_0x14e175[_0x22b1('0x6e')]||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x6]?_0x14e175[_0x22b1('0x5f')][0x6][_0x22b1('0x60')]:undefined)||''},{'name':_0x22b1('0x6f'),'value':_0x14e175[_0x22b1('0x6f')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x7]?_0x14e175['attrs'][0x7][_0x22b1('0x60')]:undefined)||''},{'name':_0x22b1('0x70'),'value':_0x14e175['attrWhatsappAccounts']||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x8]?_0x14e175['attrs'][0x8][_0x22b1('0x60')]:undefined)||''},{'name':'attrChatWebsites','value':_0x14e175[_0x22b1('0x71')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x9]?_0x14e175[_0x22b1('0x5f')][0x9]['value']:undefined)||''}];case _0x22b1('0x72'):case'pie-chart':return[{'name':_0x22b1('0x73'),'value':_0x14e175[_0x22b1('0x73')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x0]?_0x14e175[_0x22b1('0x5f')][0x0]['value']:undefined)||_0x22b1('0x74')},{'name':_0x22b1('0x75'),'value':_0x14e175[_0x22b1('0x75')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x1]?_0x14e175[_0x22b1('0x5f')][0x1][_0x22b1('0x60')]:undefined)||null},{'name':_0x22b1('0x76'),'value':_0x14e175[_0x22b1('0x76')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x2]?_0x14e175[_0x22b1('0x5f')][0x2][_0x22b1('0x60')]:undefined)||null},{'name':_0x22b1('0x69'),'value':_0x14e175['attrVoiceQueues']||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x3]?_0x14e175['attrs'][0x3][_0x22b1('0x60')]:undefined)||[]},{'name':'attrChannel','value':_0x14e175[_0x22b1('0x6a')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x4]?_0x14e175[_0x22b1('0x5f')][0x4]['value']:undefined)||_0x22b1('0x6b')},{'name':_0x22b1('0x6c'),'value':_0x14e175['attrEmailAccounts']||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x5]?_0x14e175[_0x22b1('0x5f')][0x5][_0x22b1('0x60')]:undefined)||''},{'name':_0x22b1('0x6d'),'value':_0x14e175[_0x22b1('0x6d')]||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x6]?_0x14e175['attrs'][0x6]['value']:undefined)||''},{'name':_0x22b1('0x6e'),'value':_0x14e175['attrSmsAccounts']||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x7]?_0x14e175['attrs'][0x7][_0x22b1('0x60')]:undefined)||''},{'name':_0x22b1('0x6f'),'value':_0x14e175[_0x22b1('0x6f')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x8]?_0x14e175[_0x22b1('0x5f')][0x8][_0x22b1('0x60')]:undefined)||''},{'name':_0x22b1('0x70'),'value':_0x14e175[_0x22b1('0x70')]||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x9]?_0x14e175[_0x22b1('0x5f')][0x9][_0x22b1('0x60')]:undefined)||''},{'name':_0x22b1('0x71'),'value':_0x14e175['attrChatWebsites']||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0xa]?_0x14e175[_0x22b1('0x5f')][0xa][_0x22b1('0x60')]:undefined)||''}];case'web-report':return[{'name':_0x22b1('0x77'),'type':_0x14e175[_0x22b1('0x78')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175[_0x22b1('0x5f')][0x0]?_0x14e175[_0x22b1('0x5f')][0x0][_0x22b1('0x32')]:undefined)||null,'value':_0x14e175[_0x22b1('0x77')]||(_0x14e175[_0x22b1('0x5f')]&&_0x14e175['attrs'][0x0]?_0x14e175[_0x22b1('0x5f')][0x0][_0x22b1('0x60')]:undefined)||null},{'name':_0x22b1('0x79'),'value':_0x14e175[_0x22b1('0x79')]||(_0x14e175['attrs']&&_0x14e175[_0x22b1('0x5f')][0x1]?_0x14e175['attrs'][0x1][_0x22b1('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x3c85d0){logger[_0x22b1('0x5c')]('widgetAttributes:\x20%s',JSON[_0x22b1('0x7a')](_0x3c85d0));return[];}}exports['addItem']=function(_0x208329,_0x495244,_0x7cbb7b){if(_0x208329['body']['id']){delete _0x208329[_0x22b1('0x4e')]['id'];}return db[_0x22b1('0x45')][_0x22b1('0x52')]({'where':{'id':_0x208329[_0x22b1('0x58')]['id']}})[_0x22b1('0x2a')](handleEntityNotFound(_0x495244,null))[_0x22b1('0x2a')](function(_0x470241){if(_0x470241){_0x208329[_0x22b1('0x4e')]['DashboardId']=_0x470241['id'];_0x208329['body'][_0x22b1('0x5f')]=widgetAttributes(_0x208329[_0x22b1('0x4e')]);return db[_0x22b1('0x7b')]['create'](_0x208329[_0x22b1('0x4e')]);}})[_0x22b1('0x2a')](respondWithResult(_0x495244,null))[_0x22b1('0x4a')](handleError(_0x495244,null));};exports[_0x22b1('0x7c')]=function(_0x2fe286,_0x300cc1,_0x57cfab){var _0x4d956b={};var _0x2062be={};var _0x15e59e;var _0x338d7e;return db[_0x22b1('0x45')][_0x22b1('0x7d')]({'where':{'id':_0x2fe286[_0x22b1('0x58')]['id']}})[_0x22b1('0x2a')](handleEntityNotFound(_0x300cc1,null))[_0x22b1('0x2a')](function(_0x3bc25a){if(_0x3bc25a){_0x15e59e=_0x3bc25a;_0x2062be[_0x22b1('0x34')]=_[_0x22b1('0x36')](db['DashboardItem']['rawAttributes']);_0x2062be[_0x22b1('0x37')]=_[_0x22b1('0x36')](_0x2fe286[_0x22b1('0x37')]);_0x2062be[_0x22b1('0x40')]=_[_0x22b1('0x38')](_0x2062be[_0x22b1('0x34')],_0x2062be['query']);_0x4d956b[_0x22b1('0x39')]=_[_0x22b1('0x38')](_0x2062be['model'],qs[_0x22b1('0x3a')](_0x2fe286[_0x22b1('0x37')]['fields']));_0x4d956b[_0x22b1('0x39')]=_0x4d956b['attributes'][_0x22b1('0x4b')]?_0x4d956b['attributes']:_0x2062be['model'];_0x4d956b[_0x22b1('0x3d')]=qs['sort'](_0x2fe286[_0x22b1('0x37')][_0x22b1('0x3e')]);_0x4d956b['where']=qs[_0x22b1('0x40')](_[_0x22b1('0x41')](_0x2fe286[_0x22b1('0x37')],_0x2062be[_0x22b1('0x40')]));if(_0x2fe286[_0x22b1('0x37')][_0x22b1('0x42')]){_0x4d956b[_0x22b1('0x3f')]=_['merge'](_0x4d956b[_0x22b1('0x3f')],{'$or':_[_0x22b1('0x35')](_0x4d956b[_0x22b1('0x39')],function(_0x110cac){var _0x3abdf5={};_0x3abdf5[_0x110cac]={'$like':'%'+_0x2fe286[_0x22b1('0x37')][_0x22b1('0x42')]+'%'};return _0x3abdf5;})});}_0x4d956b=_[_0x22b1('0x43')]({},_0x4d956b,_0x2fe286['options']);return _0x15e59e[_0x22b1('0x7c')](_0x4d956b);}})[_0x22b1('0x2a')](function(_0xbd3097){if(_0xbd3097){_0x338d7e=_0xbd3097[_0x22b1('0x4b')];if(!_0x2fe286[_0x22b1('0x37')][_0x22b1('0x3b')](_0x22b1('0x3c'))){_0x4d956b[_0x22b1('0x22')]=qs['limit'](_0x2fe286[_0x22b1('0x37')][_0x22b1('0x22')]);_0x4d956b[_0x22b1('0x20')]=qs['offset'](_0x2fe286[_0x22b1('0x37')]['offset']);}return _0x15e59e[_0x22b1('0x7c')](_0x4d956b);}})[_0x22b1('0x2a')](function(_0x46fc54){if(_0x46fc54){return _0x46fc54?{'count':_0x338d7e,'rows':_0x46fc54}:null;}})[_0x22b1('0x2a')](respondWithResult(_0x300cc1,null))[_0x22b1('0x4a')](handleError(_0x300cc1,null));};
\ No newline at end of file
+var _0xa91a=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','index','map','Dashboard','fieldName','key','model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','findAll','rows','catch','show','params','intersection','length','includeAll','options','find','create','body','user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','rawAttributes','include','omit','createdAt','updatedAt','UserProfileSection','update','iframe','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','addItem','DashboardId','DashboardItem','findOne','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','socket.io-emitter','./dashboard.socket','sendStatus'];(function(_0x26ae4e,_0x1d110f){var _0x3cd3bb=function(_0x1f0f67){while(--_0x1f0f67){_0x26ae4e['push'](_0x26ae4e['shift']());}};_0x3cd3bb(++_0x1d110f);}(_0xa91a,0x168));var _0xaa91=function(_0x65f0d8,_0x1937a4){_0x65f0d8=_0x65f0d8-0x0;var _0x35266a=_0xa91a[_0x65f0d8];return _0x35266a;};'use strict';var emlformat=require(_0xaa91('0x0'));var rimraf=require(_0xaa91('0x1'));var zipdir=require(_0xaa91('0x2'));var jsonpatch=require(_0xaa91('0x3'));var rp=require(_0xaa91('0x4'));var moment=require(_0xaa91('0x5'));var BPromise=require(_0xaa91('0x6'));var Mustache=require(_0xaa91('0x7'));var util=require(_0xaa91('0x8'));var path=require(_0xaa91('0x9'));var sox=require(_0xaa91('0xa'));var csv=require(_0xaa91('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaa91('0xc'));var squel=require(_0xaa91('0xd'));var crypto=require(_0xaa91('0xe'));var jsforce=require(_0xaa91('0xf'));var deskjs=require(_0xaa91('0x10'));var toCsv=require(_0xaa91('0xb'));var querystring=require(_0xaa91('0x11'));var Papa=require(_0xaa91('0x12'));var Redis=require(_0xaa91('0x13'));var authService=require(_0xaa91('0x14'));var qs=require(_0xaa91('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaa91('0x16'));var logger=require(_0xaa91('0x17'))(_0xaa91('0x18'));var utils=require(_0xaa91('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xaa91('0x1a')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xaa91('0x1b'))(new Redis(config[_0xaa91('0x1a')]));require(_0xaa91('0x1c'))['register'](socket);function respondWithStatusCode(_0x1a4c9f,_0x3ead90){_0x3ead90=_0x3ead90||0xcc;return function(_0x3b6609){if(_0x3b6609){return _0x1a4c9f[_0xaa91('0x1d')](_0x3ead90);}return _0x1a4c9f[_0xaa91('0x1e')](_0x3ead90)[_0xaa91('0x1f')]();};}function respondWithResult(_0x5b76cc,_0x53b9f0){_0x53b9f0=_0x53b9f0||0xc8;return function(_0x42013b){if(_0x42013b){return _0x5b76cc[_0xaa91('0x1e')](_0x53b9f0)[_0xaa91('0x20')](_0x42013b);}};}function respondWithFilteredResult(_0x59be9c,_0x30c1fd){return function(_0x5773ed){if(_0x5773ed){var _0x17ce32=typeof _0x30c1fd[_0xaa91('0x21')]===_0xaa91('0x22')&&typeof _0x30c1fd[_0xaa91('0x23')]===_0xaa91('0x22');var _0x4a85c4=_0x5773ed[_0xaa91('0x24')];var _0x1e1592=_0x17ce32?0x0:_0x30c1fd[_0xaa91('0x21')];var _0xf2beea=_0x17ce32?_0x5773ed[_0xaa91('0x24')]:_0x30c1fd[_0xaa91('0x21')]+_0x30c1fd[_0xaa91('0x23')];var _0x50b629;if(_0xf2beea>=_0x4a85c4){_0xf2beea=_0x4a85c4;_0x50b629=0xc8;}else{_0x50b629=0xce;}_0x59be9c[_0xaa91('0x1e')](_0x50b629);return _0x59be9c[_0xaa91('0x25')](_0xaa91('0x26'),_0x1e1592+'-'+_0xf2beea+'/'+_0x4a85c4)['json'](_0x5773ed);}return null;};}function patchUpdates(_0x36ff43){return function(_0x199cae){try{jsonpatch[_0xaa91('0x27')](_0x199cae,_0x36ff43,!![]);}catch(_0xd4d0b){return BPromise['reject'](_0xd4d0b);}return _0x199cae[_0xaa91('0x28')]();};}function saveUpdates(_0x246b94,_0x54db76){return function(_0x2ed550){if(_0x2ed550){return _0x2ed550['update'](_0x246b94)[_0xaa91('0x29')](function(_0x442d49){return _0x442d49;});}return null;};}function removeEntity(_0x18cbfb,_0x1b3ed5){return function(_0x106a5f){if(_0x106a5f){return _0x106a5f[_0xaa91('0x2a')]()[_0xaa91('0x29')](function(){var _0x1d4c1d=_0x106a5f[_0xaa91('0x2b')]({'plain':!![]});var _0x1e5277=_0xaa91('0x2c');return db[_0xaa91('0x2d')][_0xaa91('0x2a')]({'where':{'type':_0x1e5277,'resourceId':_0x1d4c1d['id']}})[_0xaa91('0x29')](function(){return _0x106a5f;});})['then'](function(){_0x18cbfb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ba301,_0x3fb8d6){return function(_0x1038b1){if(!_0x1038b1){_0x3ba301[_0xaa91('0x1d')](0x194);}return _0x1038b1;};}function handleError(_0xe4760f,_0x417e49){_0x417e49=_0x417e49||0x1f4;return function(_0x5ee1ff){logger[_0xaa91('0x2e')](_0x5ee1ff[_0xaa91('0x2f')]);if(_0x5ee1ff['name']){delete _0x5ee1ff[_0xaa91('0x30')];}_0xe4760f['status'](_0x417e49)['send'](_0x5ee1ff);};}exports[_0xaa91('0x31')]=function(_0x4256ca,_0x22f515){var _0x5bd635={},_0x5a4cf5={},_0x463afa={'count':0x0,'rows':[]};var _0x48589f=_[_0xaa91('0x32')](db[_0xaa91('0x33')]['rawAttributes'],function(_0x192432){return{'name':_0x192432[_0xaa91('0x34')],'type':_0x192432['type'][_0xaa91('0x35')]};});_0x5a4cf5[_0xaa91('0x36')]=_[_0xaa91('0x32')](_0x48589f,_0xaa91('0x30'));_0x5a4cf5[_0xaa91('0x37')]=_[_0xaa91('0x38')](_0x4256ca['query']);_0x5a4cf5[_0xaa91('0x39')]=_['intersection'](_0x5a4cf5[_0xaa91('0x36')],_0x5a4cf5[_0xaa91('0x37')]);_0x5bd635['attributes']=_['intersection'](_0x5a4cf5[_0xaa91('0x36')],qs[_0xaa91('0x3a')](_0x4256ca['query'][_0xaa91('0x3a')]));_0x5bd635[_0xaa91('0x3b')]=_0x5bd635[_0xaa91('0x3b')]['length']?_0x5bd635[_0xaa91('0x3b')]:_0x5a4cf5[_0xaa91('0x36')];if(!_0x4256ca[_0xaa91('0x37')][_0xaa91('0x3c')](_0xaa91('0x3d'))){_0x5bd635[_0xaa91('0x23')]=qs['limit'](_0x4256ca[_0xaa91('0x37')][_0xaa91('0x23')]);_0x5bd635[_0xaa91('0x21')]=qs[_0xaa91('0x21')](_0x4256ca[_0xaa91('0x37')]['offset']);}_0x5bd635[_0xaa91('0x3e')]=qs['sort'](_0x4256ca[_0xaa91('0x37')][_0xaa91('0x3f')]);_0x5bd635[_0xaa91('0x40')]=qs[_0xaa91('0x39')](_[_0xaa91('0x41')](_0x4256ca['query'],_0x5a4cf5['filters']),_0x48589f);if(_0x4256ca[_0xaa91('0x37')][_0xaa91('0x42')]){_0x5bd635[_0xaa91('0x40')]=_[_0xaa91('0x43')](_0x5bd635[_0xaa91('0x40')],{'$or':_['map'](_0x48589f,function(_0x3473db){if(_0x3473db[_0xaa91('0x44')]!==_0xaa91('0x45')){var _0x42d7ad={};_0x42d7ad[_0x3473db[_0xaa91('0x30')]]={'$like':'%'+_0x4256ca[_0xaa91('0x37')][_0xaa91('0x42')]+'%'};return _0x42d7ad;}})});}_0x5bd635=_[_0xaa91('0x43')]({},_0x5bd635,_0x4256ca['options']);var _0x282161={'where':_0x5bd635[_0xaa91('0x40')]};return db[_0xaa91('0x33')]['count'](_0x282161)[_0xaa91('0x29')](function(_0x17ccdd){_0x463afa['count']=_0x17ccdd;if(_0x4256ca[_0xaa91('0x37')]['includeAll']){_0x5bd635['include']=[{'all':!![]}];}return db[_0xaa91('0x33')][_0xaa91('0x46')](_0x5bd635);})['then'](function(_0x200049){_0x463afa[_0xaa91('0x47')]=_0x200049;return _0x463afa;})[_0xaa91('0x29')](respondWithFilteredResult(_0x22f515,_0x5bd635))[_0xaa91('0x48')](handleError(_0x22f515,null));};exports[_0xaa91('0x49')]=function(_0x2072ac,_0x59d0ac){var _0x54dcd9={'raw':![],'where':{'id':_0x2072ac[_0xaa91('0x4a')]['id']}},_0x495616={};_0x495616[_0xaa91('0x36')]=_[_0xaa91('0x38')](db[_0xaa91('0x33')]['rawAttributes']);_0x495616['query']=_[_0xaa91('0x38')](_0x2072ac[_0xaa91('0x37')]);_0x495616['filters']=_[_0xaa91('0x4b')](_0x495616[_0xaa91('0x36')],_0x495616[_0xaa91('0x37')]);_0x54dcd9[_0xaa91('0x3b')]=_[_0xaa91('0x4b')](_0x495616[_0xaa91('0x36')],qs[_0xaa91('0x3a')](_0x2072ac['query'][_0xaa91('0x3a')]));_0x54dcd9[_0xaa91('0x3b')]=_0x54dcd9[_0xaa91('0x3b')][_0xaa91('0x4c')]?_0x54dcd9[_0xaa91('0x3b')]:_0x495616[_0xaa91('0x36')];if(_0x2072ac[_0xaa91('0x37')][_0xaa91('0x4d')]){_0x54dcd9['include']=[{'all':!![]}];}_0x54dcd9=_['merge']({},_0x54dcd9,_0x2072ac[_0xaa91('0x4e')]);return db[_0xaa91('0x33')][_0xaa91('0x4f')](_0x54dcd9)[_0xaa91('0x29')](handleEntityNotFound(_0x59d0ac,null))[_0xaa91('0x29')](respondWithResult(_0x59d0ac,null))['catch'](handleError(_0x59d0ac,null));};exports[_0xaa91('0x50')]=function(_0x293679,_0x40b37d){return db[_0xaa91('0x33')][_0xaa91('0x50')](_0x293679[_0xaa91('0x51')],{})[_0xaa91('0x29')](function(_0x2639cc){var _0x5c427c=_0x293679[_0xaa91('0x52')]['get']({'plain':!![]});if(!_0x5c427c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5c427c[_0xaa91('0x53')]===_0xaa91('0x52')){var _0x325a99=_0x2639cc['get']({'plain':!![]});var _0x4c02c7=_0xaa91('0x2c');return db['UserProfileSection'][_0xaa91('0x4f')]({'where':{'name':_0x4c02c7,'userProfileId':_0x5c427c[_0xaa91('0x54')]},'raw':!![]})[_0xaa91('0x29')](function(_0x27d4da){if(_0x27d4da&&_0x27d4da['autoAssociation']===0x0){return db[_0xaa91('0x2d')][_0xaa91('0x50')]({'name':_0x325a99['name'],'resourceId':_0x325a99['id'],'type':_0x27d4da[_0xaa91('0x30')],'sectionId':_0x27d4da['id']},{})[_0xaa91('0x29')](function(){return _0x2639cc;});}else{return _0x2639cc;}})[_0xaa91('0x48')](function(_0x2b9d7d){logger[_0xaa91('0x2e')](_0xaa91('0x55'),_0x2b9d7d);throw _0x2b9d7d;});}return _0x2639cc;})[_0xaa91('0x29')](respondWithResult(_0x40b37d,0xc9))[_0xaa91('0x48')](handleError(_0x40b37d,null));};exports[_0xaa91('0x56')]=function(_0x440a50,_0x16d18b){var _0x3419e0={'where':{'id':_0x440a50[_0xaa91('0x4a')]['id']}},_0x17e89f={};_0x17e89f[_0xaa91('0x36')]=_[_0xaa91('0x38')](db[_0xaa91('0x33')][_0xaa91('0x57')]);_0x3419e0[_0xaa91('0x3b')]=_[_0xaa91('0x4b')](_0x17e89f[_0xaa91('0x36')],qs[_0xaa91('0x3a')](_0x440a50[_0xaa91('0x37')]['fields']));_0x3419e0['attributes']=_0x3419e0['attributes'][_0xaa91('0x4c')]?_0x3419e0['attributes']:_0x17e89f[_0xaa91('0x36')];if(_0x440a50[_0xaa91('0x37')][_0xaa91('0x4d')]){_0x3419e0[_0xaa91('0x58')]=[{'all':!![]}];}_0x3419e0=_['merge']({},_0x3419e0,_0x440a50['options']);return db[_0xaa91('0x33')][_0xaa91('0x4f')](_0x3419e0)[_0xaa91('0x29')](handleEntityNotFound(_0x16d18b,null))[_0xaa91('0x29')](function(_0x5f385a){if(_0x5f385a){var _0x5e6770=_0x5f385a['get']({'plain':!![]});_0x5e6770=qs[_0xaa91('0x59')](_0x5e6770,['id',_0xaa91('0x5a'),_0xaa91('0x5b')]);_0x440a50[_0xaa91('0x51')]=_[_0xaa91('0x59')](_0x440a50[_0xaa91('0x51')],['id',_0xaa91('0x5a'),_0xaa91('0x5b')]);return db[_0xaa91('0x33')]['create'](_['merge'](_0x5e6770,_0x440a50[_0xaa91('0x51')]),{'include':_0x440a50[_0xaa91('0x37')]['includeAll']?[{'all':!![]}]:undefined})[_0xaa91('0x29')](function(_0x1cc9b9){var _0x16ae6e=_0x440a50[_0xaa91('0x52')][_0xaa91('0x2b')]({'plain':!![]});if(!_0x16ae6e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x16ae6e[_0xaa91('0x53')]==='user'){var _0x1129f5=_0x1cc9b9['get']({'plain':!![]});var _0x3184ba=_0xaa91('0x2c');return db[_0xaa91('0x5c')][_0xaa91('0x4f')]({'where':{'name':_0x3184ba,'userProfileId':_0x16ae6e[_0xaa91('0x54')]},'raw':!![]})[_0xaa91('0x29')](function(_0x1ea263){if(_0x1ea263&&_0x1ea263['autoAssociation']===0x0){return db[_0xaa91('0x2d')][_0xaa91('0x50')]({'name':_0x1129f5['name'],'resourceId':_0x1129f5['id'],'type':_0x1ea263[_0xaa91('0x30')],'sectionId':_0x1ea263['id']},{})['then'](function(){return _0x1cc9b9;});}else{return _0x1cc9b9;}})[_0xaa91('0x48')](function(_0x7a3b90){logger[_0xaa91('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x7a3b90);throw _0x7a3b90;});}return _0x1cc9b9;});}})['then'](respondWithResult(_0x16d18b,0xc9))[_0xaa91('0x48')](handleError(_0x16d18b,null));};exports[_0xaa91('0x5d')]=function(_0x197cd8,_0xec59fb){if(_0x197cd8[_0xaa91('0x51')]['id']){delete _0x197cd8[_0xaa91('0x51')]['id'];}return db[_0xaa91('0x33')][_0xaa91('0x4f')]({'where':{'id':_0x197cd8[_0xaa91('0x4a')]['id']}})[_0xaa91('0x29')](handleEntityNotFound(_0xec59fb,null))[_0xaa91('0x29')](saveUpdates(_0x197cd8[_0xaa91('0x51')],null))[_0xaa91('0x29')](respondWithResult(_0xec59fb,null))[_0xaa91('0x48')](handleError(_0xec59fb,null));};exports[_0xaa91('0x2a')]=function(_0x2fd89a,_0x23386a){return db[_0xaa91('0x33')]['find']({'where':{'id':_0x2fd89a['params']['id']}})['then'](handleEntityNotFound(_0x23386a,null))[_0xaa91('0x29')](removeEntity(_0x23386a,null))[_0xaa91('0x48')](handleError(_0x23386a,null));};function widgetAttributes(_0x5cb87f){try{switch(_0x5cb87f[_0xaa91('0x44')]){case _0xaa91('0x5e'):return[{'name':_0xaa91('0x5f'),'value':_0x5cb87f[_0xaa91('0x5f')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x0]?_0x5cb87f[_0xaa91('0x60')][0x0][_0xaa91('0x61')]:undefined)||'https://'}];case _0xaa91('0x62'):return[{'name':_0xaa91('0x63'),'value':_0x5cb87f[_0xaa91('0x63')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x0]?_0x5cb87f[_0xaa91('0x60')][0x0][_0xaa91('0x61')]:undefined)||''}];case _0xaa91('0x64'):return[{'name':_0xaa91('0x65'),'value':_0x5cb87f[_0xaa91('0x65')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0x0]?_0x5cb87f[_0xaa91('0x60')][0x0][_0xaa91('0x61')]:undefined)||_0xaa91('0x66')},{'name':_0xaa91('0x67'),'value':_0x5cb87f[_0xaa91('0x67')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0x1]?_0x5cb87f[_0xaa91('0x60')][0x1][_0xaa91('0x61')]:undefined)||_0xaa91('0x68')},{'name':_0xaa91('0x69'),'value':_0x5cb87f[_0xaa91('0x69')]||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x2]?_0x5cb87f[_0xaa91('0x60')][0x2][_0xaa91('0x61')]:undefined)||0xc}];case _0xaa91('0x6a'):return[{'name':_0xaa91('0x6b'),'value':_0x5cb87f[_0xaa91('0x6b')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x0]?_0x5cb87f[_0xaa91('0x60')][0x0]['value']:undefined)||_0xaa91('0x6c')},{'name':_0xaa91('0x6d'),'value':_0x5cb87f[_0xaa91('0x6d')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0x1]?_0x5cb87f[_0xaa91('0x60')][0x1][_0xaa91('0x61')]:undefined)||[]},{'name':_0xaa91('0x69'),'value':_0x5cb87f['attrFontSize']||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0x2]?_0x5cb87f['attrs'][0x2]['value']:undefined)||0x14},{'name':_0xaa91('0x6e'),'value':_0x5cb87f[_0xaa91('0x6e')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x3]?_0x5cb87f[_0xaa91('0x60')][0x3]['value']:undefined)||_0xaa91('0x6f')},{'name':'attrEmailAccounts','value':_0x5cb87f[_0xaa91('0x70')]||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x4]?_0x5cb87f[_0xaa91('0x60')][0x4][_0xaa91('0x61')]:undefined)||''},{'name':_0xaa91('0x71'),'value':_0x5cb87f['attrFaxAccounts']||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x5]?_0x5cb87f[_0xaa91('0x60')][0x5]['value']:undefined)||''},{'name':_0xaa91('0x72'),'value':_0x5cb87f[_0xaa91('0x72')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x6]?_0x5cb87f[_0xaa91('0x60')][0x6][_0xaa91('0x61')]:undefined)||''},{'name':_0xaa91('0x73'),'value':_0x5cb87f[_0xaa91('0x73')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0x7]?_0x5cb87f[_0xaa91('0x60')][0x7][_0xaa91('0x61')]:undefined)||''},{'name':_0xaa91('0x74'),'value':_0x5cb87f['attrWhatsappAccounts']||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x8]?_0x5cb87f[_0xaa91('0x60')][0x8][_0xaa91('0x61')]:undefined)||''},{'name':_0xaa91('0x75'),'value':_0x5cb87f[_0xaa91('0x75')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x9]?_0x5cb87f[_0xaa91('0x60')][0x9][_0xaa91('0x61')]:undefined)||''}];case _0xaa91('0x76'):case'pie-chart':return[{'name':_0xaa91('0x77'),'value':_0x5cb87f[_0xaa91('0x77')]||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x0]?_0x5cb87f[_0xaa91('0x60')][0x0]['value']:undefined)||_0xaa91('0x6c')},{'name':_0xaa91('0x78'),'value':_0x5cb87f[_0xaa91('0x78')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x1]?_0x5cb87f['attrs'][0x1][_0xaa91('0x61')]:undefined)||null},{'name':'attrSerie3','value':_0x5cb87f[_0xaa91('0x79')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x2]?_0x5cb87f[_0xaa91('0x60')][0x2]['value']:undefined)||null},{'name':_0xaa91('0x6d'),'value':_0x5cb87f[_0xaa91('0x6d')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0x3]?_0x5cb87f['attrs'][0x3][_0xaa91('0x61')]:undefined)||[]},{'name':_0xaa91('0x6e'),'value':_0x5cb87f[_0xaa91('0x6e')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x4]?_0x5cb87f[_0xaa91('0x60')][0x4][_0xaa91('0x61')]:undefined)||_0xaa91('0x6f')},{'name':_0xaa91('0x70'),'value':_0x5cb87f['attrEmailAccounts']||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x5]?_0x5cb87f[_0xaa91('0x60')][0x5][_0xaa91('0x61')]:undefined)||''},{'name':_0xaa91('0x71'),'value':_0x5cb87f[_0xaa91('0x71')]||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x6]?_0x5cb87f[_0xaa91('0x60')][0x6][_0xaa91('0x61')]:undefined)||''},{'name':_0xaa91('0x72'),'value':_0x5cb87f[_0xaa91('0x72')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0x7]?_0x5cb87f['attrs'][0x7]['value']:undefined)||''},{'name':_0xaa91('0x73'),'value':_0x5cb87f[_0xaa91('0x73')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x8]?_0x5cb87f['attrs'][0x8][_0xaa91('0x61')]:undefined)||''},{'name':_0xaa91('0x74'),'value':_0x5cb87f[_0xaa91('0x74')]||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x9]?_0x5cb87f['attrs'][0x9]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x5cb87f[_0xaa91('0x75')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f['attrs'][0xa]?_0x5cb87f[_0xaa91('0x60')][0xa][_0xaa91('0x61')]:undefined)||''}];case _0xaa91('0x7a'):return[{'name':'attrReport','type':_0x5cb87f[_0xaa91('0x7b')]||(_0x5cb87f['attrs']&&_0x5cb87f[_0xaa91('0x60')][0x0]?_0x5cb87f[_0xaa91('0x60')][0x0][_0xaa91('0x44')]:undefined)||null,'value':_0x5cb87f[_0xaa91('0x7c')]||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x0]?_0x5cb87f[_0xaa91('0x60')][0x0][_0xaa91('0x61')]:undefined)||null},{'name':'attrRefresh','value':_0x5cb87f['attrRefresh']||(_0x5cb87f[_0xaa91('0x60')]&&_0x5cb87f[_0xaa91('0x60')][0x1]?_0x5cb87f['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x11d0a2){logger[_0xaa91('0x2e')]('widgetAttributes:\x20%s',JSON['stringify'](_0x11d0a2));return[];}}exports[_0xaa91('0x7d')]=function(_0x173473,_0x85870,_0x902ab4){if(_0x173473[_0xaa91('0x51')]['id']){delete _0x173473[_0xaa91('0x51')]['id'];}return db[_0xaa91('0x33')]['find']({'where':{'id':_0x173473[_0xaa91('0x4a')]['id']}})[_0xaa91('0x29')](handleEntityNotFound(_0x85870,null))[_0xaa91('0x29')](function(_0x22853e){if(_0x22853e){_0x173473[_0xaa91('0x51')][_0xaa91('0x7e')]=_0x22853e['id'];_0x173473[_0xaa91('0x51')]['attrs']=widgetAttributes(_0x173473['body']);return db[_0xaa91('0x7f')]['create'](_0x173473[_0xaa91('0x51')]);}})['then'](respondWithResult(_0x85870,null))['catch'](handleError(_0x85870,null));};exports['getItems']=function(_0x4372ee,_0x292f2c,_0xeec75b){var _0x4ebb52={};var _0x2ee9b5={};var _0x5307ab;var _0x55ded7;return db[_0xaa91('0x33')][_0xaa91('0x80')]({'where':{'id':_0x4372ee['params']['id']}})['then'](handleEntityNotFound(_0x292f2c,null))['then'](function(_0x83be41){if(_0x83be41){_0x5307ab=_0x83be41;_0x2ee9b5[_0xaa91('0x36')]=_[_0xaa91('0x38')](db[_0xaa91('0x7f')]['rawAttributes']);_0x2ee9b5[_0xaa91('0x37')]=_[_0xaa91('0x38')](_0x4372ee['query']);_0x2ee9b5[_0xaa91('0x39')]=_[_0xaa91('0x4b')](_0x2ee9b5[_0xaa91('0x36')],_0x2ee9b5[_0xaa91('0x37')]);_0x4ebb52['attributes']=_[_0xaa91('0x4b')](_0x2ee9b5[_0xaa91('0x36')],qs[_0xaa91('0x3a')](_0x4372ee[_0xaa91('0x37')][_0xaa91('0x3a')]));_0x4ebb52[_0xaa91('0x3b')]=_0x4ebb52[_0xaa91('0x3b')][_0xaa91('0x4c')]?_0x4ebb52['attributes']:_0x2ee9b5['model'];_0x4ebb52['order']=qs[_0xaa91('0x3f')](_0x4372ee[_0xaa91('0x37')][_0xaa91('0x3f')]);_0x4ebb52[_0xaa91('0x40')]=qs['filters'](_['pick'](_0x4372ee['query'],_0x2ee9b5[_0xaa91('0x39')]));if(_0x4372ee['query'][_0xaa91('0x42')]){_0x4ebb52['where']=_[_0xaa91('0x43')](_0x4ebb52[_0xaa91('0x40')],{'$or':_[_0xaa91('0x32')](_0x4ebb52['attributes'],function(_0x32072a){var _0x60d31a={};_0x60d31a[_0x32072a]={'$like':'%'+_0x4372ee['query']['filter']+'%'};return _0x60d31a;})});}_0x4ebb52=_[_0xaa91('0x43')]({},_0x4ebb52,_0x4372ee[_0xaa91('0x4e')]);return _0x5307ab[_0xaa91('0x81')](_0x4ebb52);}})[_0xaa91('0x29')](function(_0x27bb8a){if(_0x27bb8a){_0x55ded7=_0x27bb8a[_0xaa91('0x4c')];if(!_0x4372ee['query'][_0xaa91('0x3c')](_0xaa91('0x3d'))){_0x4ebb52[_0xaa91('0x23')]=qs[_0xaa91('0x23')](_0x4372ee['query'][_0xaa91('0x23')]);_0x4ebb52[_0xaa91('0x21')]=qs[_0xaa91('0x21')](_0x4372ee[_0xaa91('0x37')]['offset']);}return _0x5307ab['getItems'](_0x4ebb52);}})[_0xaa91('0x29')](function(_0x392e36){if(_0x392e36){return _0x392e36?{'count':_0x55ded7,'rows':_0x392e36}:null;}})[_0xaa91('0x29')](respondWithResult(_0x292f2c,null))[_0xaa91('0x48')](handleError(_0x292f2c,null));};
\ No newline at end of file
index 52656e2..0fd6782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e2d=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','Dashboard'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x1e2d,0x127));var _0xd1e2=function(_0x3d792a,_0x5ce72d){_0x3d792a=_0x3d792a-0x0;var _0x2af23e=_0x1e2d[_0x3d792a];return _0x2af23e;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0xd1e2('0x0'))['db'][_0xd1e2('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xd1e2('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd1e2('0x3'),'afterDestroy':_0xd1e2('0x4')};function emitEvent(_0x274eae){return function(_0x58e1c6,_0x33cf5b,_0x2e5ea4){DashboardEvents['emit'](_0x274eae+':'+_0x58e1c6['id'],_0x58e1c6);DashboardEvents[_0xd1e2('0x5')](_0x274eae,_0x58e1c6);_0x2e5ea4(null);};}for(var e in events){if(events[_0xd1e2('0x6')](e)){var event=events[e];Dashboard[_0xd1e2('0x7')](e,emitEvent(event));}}module[_0xd1e2('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0x78c6=['hasOwnProperty','hook','exports','setMaxListeners','save','remove','emit'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x78c6,0x168));var _0x678c=function(_0x31b057,_0x86ef95){_0x31b057=_0x31b057-0x0;var _0x823ed5=_0x78c6[_0x31b057];return _0x823ed5;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0x678c('0x0')](0x0);var events={'afterCreate':_0x678c('0x1'),'afterUpdate':'update','afterDestroy':_0x678c('0x2')};function emitEvent(_0x5339f7){return function(_0x75a6fd,_0x30a6b2,_0x388cc5){DashboardEvents['emit'](_0x5339f7+':'+_0x75a6fd['id'],_0x75a6fd);DashboardEvents[_0x678c('0x3')](_0x5339f7,_0x75a6fd);_0x388cc5(null);};}for(var e in events){if(events[_0x678c('0x4')](e)){var event=events[e];Dashboard[_0x678c('0x5')](e,emitEvent(event));}}module[_0x678c('0x6')]=DashboardEvents;
\ No newline at end of file
index bec3301..01a29f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48d8=['path','rimraf','./dashboard.attributes','define','Dashboard','lodash','util','api','bluebird','request-promise'];(function(_0xa1eb6f,_0x52a618){var _0x17012a=function(_0x484173){while(--_0x484173){_0xa1eb6f['push'](_0xa1eb6f['shift']());}};_0x17012a(++_0x52a618);}(_0x48d8,0x1e5));var _0x848d=function(_0x1e7973,_0x232c5a){_0x1e7973=_0x1e7973-0x0;var _0xe06a8a=_0x48d8[_0x1e7973];return _0xe06a8a;};'use strict';var _=require(_0x848d('0x0'));var util=require(_0x848d('0x1'));var logger=require('../../config/logger')(_0x848d('0x2'));var moment=require('moment');var BPromise=require(_0x848d('0x3'));var rp=require(_0x848d('0x4'));var fs=require('fs');var path=require(_0x848d('0x5'));var rimraf=require(_0x848d('0x6'));var config=require('../../config/environment');var attributes=require(_0x848d('0x7'));module['exports']=function(_0x297c13,_0x1dd2c9){return _0x297c13[_0x848d('0x8')](_0x848d('0x9'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2804=['path','rimraf','../../config/environment','./dashboard.attributes','exports','define','Dashboard','dashboards','lodash','util','moment','bluebird'];(function(_0x8a2815,_0x486a45){var _0x1af5a9=function(_0x43c59c){while(--_0x43c59c){_0x8a2815['push'](_0x8a2815['shift']());}};_0x1af5a9(++_0x486a45);}(_0x2804,0xf8));var _0x4280=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x2804[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x4280('0x0'));var util=require(_0x4280('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4280('0x2'));var BPromise=require(_0x4280('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4280('0x4'));var rimraf=require(_0x4280('0x5'));var config=require(_0x4280('0x6'));var attributes=require(_0x4280('0x7'));module[_0x4280('0x8')]=function(_0x1a6037,_0x386b9b){return _0x1a6037[_0x4280('0x9')](_0x4280('0xa'),attributes,{'tableName':_0x4280('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2114ae3..660b571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7872=['then','info','request\x20sent','stringify','error','Dashboard,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','localhost','redis','./dashboard.socket','register','request'];(function(_0xfb3b3,_0x10db7a){var _0x36cae7=function(_0x183814){while(--_0x183814){_0xfb3b3['push'](_0xfb3b3['shift']());}};_0x36cae7(++_0x10db7a);}(_0x7872,0xcf));var _0x2787=function(_0x56235e,_0x34ba49){_0x56235e=_0x56235e-0x0;var _0x4fe492=_0x7872[_0x56235e];return _0x4fe492;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2787('0x0'));var BPromise=require(_0x2787('0x1'));var rs=require(_0x2787('0x2'));var fs=require('fs');var Redis=require(_0x2787('0x3'));var db=require(_0x2787('0x4'))['db'];var utils=require(_0x2787('0x5'));var logger=require(_0x2787('0x6'))('rpc');var config=require(_0x2787('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x2787('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2787('0x9')]));require(_0x2787('0xa'))[_0x2787('0xb')](socket);function respondWithRpcPromise(_0x54b993,_0x3b0881,_0x3d7b3f){return new BPromise(function(_0x4008b0,_0x453eb4){return client[_0x2787('0xc')](_0x54b993,_0x3d7b3f)[_0x2787('0xd')](function(_0x37906c){logger[_0x2787('0xe')]('Dashboard,\x20%s,\x20%s',_0x3b0881,_0x2787('0xf'));logger['debug']('Dashboard,\x20%s,\x20%s,\x20%s',_0x3b0881,_0x2787('0xf'),JSON[_0x2787('0x10')](_0x37906c));if(_0x37906c[_0x2787('0x11')]){if(_0x37906c[_0x2787('0x11')]['code']===0x1f4){logger[_0x2787('0x11')](_0x2787('0x12'),_0x3b0881,_0x37906c[_0x2787('0x11')]['message']);return _0x453eb4(_0x37906c[_0x2787('0x11')][_0x2787('0x13')]);}logger[_0x2787('0x11')](_0x2787('0x12'),_0x3b0881,_0x37906c['error'][_0x2787('0x13')]);return _0x4008b0(_0x37906c[_0x2787('0x11')]['message']);}else{logger[_0x2787('0xe')](_0x2787('0x12'),_0x3b0881,'request\x20sent');_0x4008b0(_0x37906c[_0x2787('0x14')][_0x2787('0x13')]);}})[_0x2787('0x15')](function(_0xc530c8){logger[_0x2787('0x11')](_0x2787('0x12'),_0x3b0881,_0xc530c8);_0x453eb4(_0xc530c8);});});}
\ No newline at end of file
+var _0x87d3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','socket.io-emitter','redis','register','request','then','info','debug','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent','error','Dashboard,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird'];(function(_0x2d59b2,_0x20d65f){var _0x25759b=function(_0x3e8337){while(--_0x3e8337){_0x2d59b2['push'](_0x2d59b2['shift']());}};_0x25759b(++_0x20d65f);}(_0x87d3,0x7f));var _0x387d=function(_0x137815,_0x78dd4b){_0x137815=_0x137815-0x0;var _0x29ded1=_0x87d3[_0x137815];return _0x29ded1;};'use strict';var _=require(_0x387d('0x0'));var util=require('util');var moment=require(_0x387d('0x1'));var BPromise=require(_0x387d('0x2'));var rs=require(_0x387d('0x3'));var fs=require('fs');var Redis=require(_0x387d('0x4'));var db=require(_0x387d('0x5'))['db'];var utils=require(_0x387d('0x6'));var logger=require(_0x387d('0x7'))(_0x387d('0x8'));var config=require(_0x387d('0x9'));var jayson=require(_0x387d('0xa'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x387d('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x387d('0xc'))(new Redis(config[_0x387d('0xd')]));require('./dashboard.socket')[_0x387d('0xe')](socket);function respondWithRpcPromise(_0x542020,_0x22a0e9,_0x15a659){return new BPromise(function(_0xf14565,_0x310fa7){return client[_0x387d('0xf')](_0x542020,_0x15a659)[_0x387d('0x10')](function(_0x4733d5){logger[_0x387d('0x11')]('Dashboard,\x20%s,\x20%s',_0x22a0e9,'request\x20sent');logger[_0x387d('0x12')](_0x387d('0x13'),_0x22a0e9,_0x387d('0x14'),JSON['stringify'](_0x4733d5));if(_0x4733d5['error']){if(_0x4733d5[_0x387d('0x15')]['code']===0x1f4){logger[_0x387d('0x15')](_0x387d('0x16'),_0x22a0e9,_0x4733d5[_0x387d('0x15')][_0x387d('0x17')]);return _0x310fa7(_0x4733d5[_0x387d('0x15')][_0x387d('0x17')]);}logger[_0x387d('0x15')](_0x387d('0x16'),_0x22a0e9,_0x4733d5[_0x387d('0x15')][_0x387d('0x17')]);return _0xf14565(_0x4733d5['error'][_0x387d('0x17')]);}else{logger['info']('Dashboard,\x20%s,\x20%s',_0x22a0e9,_0x387d('0x14'));_0xf14565(_0x4733d5[_0x387d('0x18')]['message']);}})[_0x387d('0x19')](function(_0x21869f){logger[_0x387d('0x15')](_0x387d('0x16'),_0x22a0e9,_0x21869f);_0x310fa7(_0x21869f);});});}
\ No newline at end of file
index 837bac3..f131c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705b=['emit','removeListener','register','length','./dashboard.events','remove','update'];(function(_0x4d934b,_0x52f8e9){var _0xc0338b=function(_0x1a356c){while(--_0x1a356c){_0x4d934b['push'](_0x4d934b['shift']());}};_0xc0338b(++_0x52f8e9);}(_0x705b,0xc8));var _0xb705=function(_0xf7c93e,_0x586f4b){_0xf7c93e=_0xf7c93e-0x0;var _0x2e3b2a=_0x705b[_0xf7c93e];return _0x2e3b2a;};'use strict';var DashboardEvents=require(_0xb705('0x0'));var events=['save',_0xb705('0x1'),_0xb705('0x2')];function createListener(_0x5e99a6,_0x179330){return function(_0x3b316e){_0x179330[_0xb705('0x3')](_0x5e99a6,_0x3b316e);};}function removeListener(_0xd7d732,_0xd7721){return function(){DashboardEvents[_0xb705('0x4')](_0xd7d732,_0xd7721);};}exports[_0xb705('0x5')]=function(_0x56333c){for(var _0x1dd3dd=0x0,_0x238c39=events[_0xb705('0x6')];_0x1dd3dd<_0x238c39;_0x1dd3dd++){var _0x3c289c=events[_0x1dd3dd];var _0x4814a7=createListener('dashboard:'+_0x3c289c,_0x56333c);DashboardEvents['on'](_0x3c289c,_0x4814a7);}};
\ No newline at end of file
+var _0x6aa4=['./dashboard.events','save','update','register','dashboard:'];(function(_0x20d9f3,_0x4b0bc7){var _0x2f36fc=function(_0x1e0db4){while(--_0x1e0db4){_0x20d9f3['push'](_0x20d9f3['shift']());}};_0x2f36fc(++_0x4b0bc7);}(_0x6aa4,0x1db));var _0x46aa=function(_0xd82dc5,_0x4b6c18){_0xd82dc5=_0xd82dc5-0x0;var _0x378a88=_0x6aa4[_0xd82dc5];return _0x378a88;};'use strict';var DashboardEvents=require(_0x46aa('0x0'));var events=[_0x46aa('0x1'),'remove',_0x46aa('0x2')];function createListener(_0x187c51,_0x3d9377){return function(_0x3ceaf2){_0x3d9377['emit'](_0x187c51,_0x3ceaf2);};}function removeListener(_0x1db796,_0x204428){return function(){DashboardEvents['removeListener'](_0x1db796,_0x204428);};}exports[_0x46aa('0x3')]=function(_0x354cff){for(var _0x5767f4=0x0,_0x2652a1=events['length'];_0x5767f4<_0x2652a1;_0x5767f4++){var _0x296cd9=events[_0x5767f4];var _0x120024=createListener(_0x46aa('0x4')+_0x296cd9,_0x354cff);DashboardEvents['on'](_0x296cd9,_0x120024);}};
\ No newline at end of file
index b731672..dd3b022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x855e=['/:id','/:id/items','getItems','post','clone','addItem','put','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x5628b8,_0x168a99){var _0x37c195=function(_0x3d48ff){while(--_0x3d48ff){_0x5628b8['push'](_0x5628b8['shift']());}};_0x37c195(++_0x168a99);}(_0x855e,0xdb));var _0xe855=function(_0x508d1,_0xc0c0e5){_0x508d1=_0x508d1-0x0;var _0x322d8d=_0x855e[_0x508d1];return _0x322d8d;};'use strict';var multer=require(_0xe855('0x0'));var util=require(_0xe855('0x1'));var path=require('path');var timeout=require(_0xe855('0x2'));var express=require(_0xe855('0x3'));var router=express[_0xe855('0x4')]();var fs_extra=require(_0xe855('0x5'));var auth=require(_0xe855('0x6'));var interaction=require(_0xe855('0x7'));var config=require(_0xe855('0x8'));var controller=require('./dashboard.controller');router[_0xe855('0x9')]('/',auth[_0xe855('0xa')](),controller[_0xe855('0xb')]);router[_0xe855('0x9')](_0xe855('0xc'),auth[_0xe855('0xa')](),controller['show']);router[_0xe855('0x9')](_0xe855('0xd'),auth[_0xe855('0xa')](),controller[_0xe855('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xe855('0xf')]('/:id/clone',auth[_0xe855('0xa')](),controller[_0xe855('0x10')]);router['post'](_0xe855('0xd'),auth[_0xe855('0xa')](),controller[_0xe855('0x11')]);router[_0xe855('0x12')](_0xe855('0xc'),auth[_0xe855('0xa')](),controller['update']);router[_0xe855('0x13')](_0xe855('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xe855('0x14')]=router;
\ No newline at end of file
+var _0x43e1=['getItems','post','create','/:id/clone','clone','put','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','isAuthenticated','get','/:id','show','/:id/items'];(function(_0x1f2d19,_0x169b90){var _0x58d273=function(_0x425f90){while(--_0x425f90){_0x1f2d19['push'](_0x1f2d19['shift']());}};_0x58d273(++_0x169b90);}(_0x43e1,0x168));var _0x143e=function(_0x2f4c1c,_0x5a3dd4){_0x2f4c1c=_0x2f4c1c-0x0;var _0x25e0f2=_0x43e1[_0x2f4c1c];return _0x25e0f2;};'use strict';var multer=require(_0x143e('0x0'));var util=require(_0x143e('0x1'));var path=require('path');var timeout=require(_0x143e('0x2'));var express=require('express');var router=express[_0x143e('0x3')]();var fs_extra=require(_0x143e('0x4'));var auth=require(_0x143e('0x5'));var interaction=require(_0x143e('0x6'));var config=require(_0x143e('0x7'));var controller=require(_0x143e('0x8'));router['get']('/',auth[_0x143e('0x9')](),controller['index']);router[_0x143e('0xa')](_0x143e('0xb'),auth[_0x143e('0x9')](),controller[_0x143e('0xc')]);router[_0x143e('0xa')](_0x143e('0xd'),auth[_0x143e('0x9')](),controller[_0x143e('0xe')]);router[_0x143e('0xf')]('/',auth[_0x143e('0x9')](),controller[_0x143e('0x10')]);router[_0x143e('0xf')](_0x143e('0x11'),auth[_0x143e('0x9')](),controller[_0x143e('0x12')]);router['post'](_0x143e('0xd'),auth[_0x143e('0x9')](),controller['addItem']);router[_0x143e('0x13')]('/:id',auth[_0x143e('0x9')](),controller['update']);router[_0x143e('0x14')](_0x143e('0xb'),auth[_0x143e('0x9')](),controller[_0x143e('0x15')]);module['exports']=router;
\ No newline at end of file
index 108ce38..6366456 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['stringify','INTEGER','#ffffff','sequelize','lodash','exports','STRING','TEXT','long','getDataValue','attrs','setDataValue'];(function(_0x58fe65,_0x593e11){var _0x587808=function(_0x196dda){while(--_0x196dda){_0x58fe65['push'](_0x58fe65['shift']());}};_0x587808(++_0x593e11);}(_0x187d,0x93));var _0xd187=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x187d[_0x47e7cb];return _0x2a8874;};'use strict';var Sequelize=require(_0xd187('0x0'));var squel=require('squel');var _=require(_0xd187('0x1'));module[_0xd187('0x2')]={'title':{'type':Sequelize[_0xd187('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xd187('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xd187('0x4')](_0xd187('0x5')),'get':function(){try{return JSON['parse'](this[_0xd187('0x6')](_0xd187('0x7')));}catch(_0x4ebc8d){return[];}},'set':function(_0x1d2533){try{this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')](_0x1d2533));}catch(_0x28ce2f){this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xd187('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xd187('0xa')]},'col':{'type':Sequelize[_0xd187('0xa')]},'background':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':_0xd187('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xd187('0x3')]},'titleFontSize':{'type':Sequelize[_0xd187('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x2ef3=['parse','attrs','stringify','setDataValue','INTEGER','#2196f3','sequelize','squel','lodash','exports','STRING','long'];(function(_0x9f82f3,_0x39b805){var _0x2ee808=function(_0x167be2){while(--_0x167be2){_0x9f82f3['push'](_0x9f82f3['shift']());}};_0x2ee808(++_0x39b805);}(_0x2ef3,0xba));var _0x32ef=function(_0x428852,_0x414d76){_0x428852=_0x428852-0x0;var _0x1e03b0=_0x2ef3[_0x428852];return _0x1e03b0;};'use strict';var Sequelize=require(_0x32ef('0x0'));var squel=require(_0x32ef('0x1'));var _=require(_0x32ef('0x2'));module[_0x32ef('0x3')]={'title':{'type':Sequelize[_0x32ef('0x4')],'allowNull':![]},'type':{'type':Sequelize[_0x32ef('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x32ef('0x5')),'get':function(){try{return JSON[_0x32ef('0x6')](this['getDataValue'](_0x32ef('0x7')));}catch(_0x37dd1d){return[];}},'set':function(_0x4c8104){try{this['setDataValue'](_0x32ef('0x7'),JSON[_0x32ef('0x8')](_0x4c8104));}catch(_0x367c39){this[_0x32ef('0x9')](_0x32ef('0x7'),JSON[_0x32ef('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0x32ef('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x32ef('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x32ef('0xa')]},'col':{'type':Sequelize[_0x32ef('0xa')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x32ef('0x4')],'allowNull':![],'defaultValue':_0x32ef('0xb'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x32ef('0x4')]},'titleFontSize':{'type':Sequelize[_0x32ef('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index 8a3ef5a..c253c97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x282a=['set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','stack','name','show','params','model','DashboardItem','rawAttributes','query','keys','attributes','intersection','fields','length','include','options','find','catch','type','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','voice','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','end','status','offset','undefined','limit','count'];(function(_0x330a51,_0x42c33b){var _0x55aa63=function(_0x5ddc09){while(--_0x5ddc09){_0x330a51['push'](_0x330a51['shift']());}};_0x55aa63(++_0x42c33b);}(_0x282a,0xa2));var _0xa282=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x282a[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa282('0x0'));var zipdir=require(_0xa282('0x1'));var jsonpatch=require(_0xa282('0x2'));var rp=require(_0xa282('0x3'));var moment=require(_0xa282('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa282('0x5'));var util=require(_0xa282('0x6'));var path=require('path');var sox=require(_0xa282('0x7'));var csv=require('to-csv');var ejs=require(_0xa282('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa282('0x9'));var squel=require(_0xa282('0xa'));var crypto=require(_0xa282('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xa282('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa282('0xd'));var Papa=require(_0xa282('0xe'));var Redis=require(_0xa282('0xf'));var authService=require(_0xa282('0x10'));var qs=require(_0xa282('0x11'));var as=require(_0xa282('0x12'));var hardwareService=require(_0xa282('0x13'));var logger=require(_0xa282('0x14'))(_0xa282('0x15'));var utils=require(_0xa282('0x16'));var config=require(_0xa282('0x17'));var licenseUtil=require(_0xa282('0x18'));var db=require(_0xa282('0x19'))['db'];config[_0xa282('0x1a')]=_[_0xa282('0x1b')](config[_0xa282('0x1a')],{'host':_0xa282('0x1c'),'port':0x18eb});var socket=require(_0xa282('0x1d'))(new Redis(config['redis']));require(_0xa282('0x1e'))[_0xa282('0x1f')](socket);function respondWithStatusCode(_0x697eea,_0xdebb0e){_0xdebb0e=_0xdebb0e||0xcc;return function(_0x2cc7a8){if(_0x2cc7a8){return _0x697eea['sendStatus'](_0xdebb0e);}return _0x697eea['status'](_0xdebb0e)[_0xa282('0x20')]();};}function respondWithResult(_0xc2307a,_0xbe95b6){_0xbe95b6=_0xbe95b6||0xc8;return function(_0x288955){if(_0x288955){return _0xc2307a[_0xa282('0x21')](_0xbe95b6)['json'](_0x288955);}};}function respondWithFilteredResult(_0x5eee35,_0x31f655){return function(_0x19aef2){if(_0x19aef2){var _0x2d951c=typeof _0x31f655[_0xa282('0x22')]===_0xa282('0x23')&&typeof _0x31f655[_0xa282('0x24')]===_0xa282('0x23');var _0x151268=_0x19aef2[_0xa282('0x25')];var _0x3cfe15=_0x2d951c?0x0:_0x31f655['offset'];var _0x22dc66=_0x2d951c?_0x19aef2[_0xa282('0x25')]:_0x31f655['offset']+_0x31f655[_0xa282('0x24')];var _0x1c9712;if(_0x22dc66>=_0x151268){_0x22dc66=_0x151268;_0x1c9712=0xc8;}else{_0x1c9712=0xce;}_0x5eee35[_0xa282('0x21')](_0x1c9712);return _0x5eee35[_0xa282('0x26')](_0xa282('0x27'),_0x3cfe15+'-'+_0x22dc66+'/'+_0x151268)[_0xa282('0x28')](_0x19aef2);}return null;};}function patchUpdates(_0x4079fd){return function(_0x3e3714){try{jsonpatch[_0xa282('0x29')](_0x3e3714,_0x4079fd,!![]);}catch(_0x2b5b00){return BPromise[_0xa282('0x2a')](_0x2b5b00);}return _0x3e3714[_0xa282('0x2b')]();};}function saveUpdates(_0x426eda,_0x1b1edc){return function(_0x5300fc){if(_0x5300fc){return _0x5300fc['update'](_0x426eda)[_0xa282('0x2c')](function(_0x3c616f){return _0x3c616f;});}return null;};}function removeEntity(_0x44944a,_0x42b336){return function(_0x23a3bf){if(_0x23a3bf){return _0x23a3bf[_0xa282('0x2d')]()[_0xa282('0x2c')](function(){_0x44944a[_0xa282('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x298901,_0x4f7e79){return function(_0x13938e){if(!_0x13938e){_0x298901[_0xa282('0x2e')](0x194);}return _0x13938e;};}function handleError(_0x33c41c,_0x5a0a49){_0x5a0a49=_0x5a0a49||0x1f4;return function(_0x4f83cc){logger['error'](_0x4f83cc[_0xa282('0x2f')]);if(_0x4f83cc['name']){delete _0x4f83cc[_0xa282('0x30')];}_0x33c41c[_0xa282('0x21')](_0x5a0a49)['send'](_0x4f83cc);};}exports[_0xa282('0x31')]=function(_0x3e266d,_0x3bc695){var _0x143f02={'raw':![],'where':{'id':_0x3e266d[_0xa282('0x32')]['id']}},_0x2541c6={};_0x2541c6[_0xa282('0x33')]=_['keys'](db[_0xa282('0x34')][_0xa282('0x35')]);_0x2541c6[_0xa282('0x36')]=_[_0xa282('0x37')](_0x3e266d[_0xa282('0x36')]);_0x2541c6['filters']=_['intersection'](_0x2541c6['model'],_0x2541c6['query']);_0x143f02[_0xa282('0x38')]=_[_0xa282('0x39')](_0x2541c6['model'],qs[_0xa282('0x3a')](_0x3e266d[_0xa282('0x36')][_0xa282('0x3a')]));_0x143f02[_0xa282('0x38')]=_0x143f02['attributes'][_0xa282('0x3b')]?_0x143f02[_0xa282('0x38')]:_0x2541c6[_0xa282('0x33')];if(_0x3e266d[_0xa282('0x36')]['includeAll']){_0x143f02[_0xa282('0x3c')]=[{'all':!![]}];}_0x143f02=_['merge']({},_0x143f02,_0x3e266d[_0xa282('0x3d')]);return db[_0xa282('0x34')][_0xa282('0x3e')](_0x143f02)[_0xa282('0x2c')](handleEntityNotFound(_0x3bc695,null))[_0xa282('0x2c')](respondWithResult(_0x3bc695,null))[_0xa282('0x3f')](handleError(_0x3bc695,null));};exports[_0xa282('0x2d')]=function(_0x2e6a77,_0x215acc){return db[_0xa282('0x34')][_0xa282('0x3e')]({'where':{'id':_0x2e6a77['params']['id']}})[_0xa282('0x2c')](handleEntityNotFound(_0x215acc,null))[_0xa282('0x2c')](removeEntity(_0x215acc,null))[_0xa282('0x3f')](handleError(_0x215acc,null));};function widgetAttributes(_0x28a96e){try{switch(_0x28a96e[_0xa282('0x40')]){case'iframe':return[{'name':_0xa282('0x41'),'value':_0x28a96e[_0xa282('0x41')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x0]?_0x28a96e[_0xa282('0x42')][0x0][_0xa282('0x43')]:undefined)||_0xa282('0x44')}];case _0xa282('0x45'):return[{'name':'attrPath','value':_0x28a96e[_0xa282('0x46')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x0]?_0x28a96e[_0xa282('0x42')][0x0]['value']:undefined)||''}];case _0xa282('0x47'):return[{'name':_0xa282('0x48'),'value':_0x28a96e[_0xa282('0x48')]||(_0x28a96e['attrs']&&_0x28a96e[_0xa282('0x42')][0x0]?_0x28a96e[_0xa282('0x42')][0x0][_0xa282('0x43')]:undefined)||_0xa282('0x49')},{'name':'attrTimezone','value':_0x28a96e['attrTimezone']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e['attrs'][0x1]?_0x28a96e[_0xa282('0x42')][0x1]['value']:undefined)||_0xa282('0x4a')},{'name':_0xa282('0x4b'),'value':_0x28a96e['attrFontSize']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x2]?_0x28a96e[_0xa282('0x42')][0x2][_0xa282('0x43')]:undefined)||0xc}];case _0xa282('0x4c'):return[{'name':_0xa282('0x4d'),'value':_0x28a96e[_0xa282('0x4d')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x0]?_0x28a96e[_0xa282('0x42')][0x0]['value']:undefined)||_0xa282('0x4e')},{'name':_0xa282('0x4f'),'value':_0x28a96e[_0xa282('0x4f')]||(_0x28a96e['attrs']&&_0x28a96e[_0xa282('0x42')][0x1]?_0x28a96e[_0xa282('0x42')][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x28a96e['attrFontSize']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x2]?_0x28a96e[_0xa282('0x42')][0x2]['value']:undefined)||0x14},{'name':_0xa282('0x50'),'value':_0x28a96e[_0xa282('0x50')]||(_0x28a96e['attrs']&&_0x28a96e[_0xa282('0x42')][0x3]?_0x28a96e['attrs'][0x3][_0xa282('0x43')]:undefined)||'voice'},{'name':_0xa282('0x51'),'value':_0x28a96e[_0xa282('0x51')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x4]?_0x28a96e['attrs'][0x4][_0xa282('0x43')]:undefined)||''},{'name':_0xa282('0x52'),'value':_0x28a96e[_0xa282('0x52')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x5]?_0x28a96e[_0xa282('0x42')][0x5]['value']:undefined)||''},{'name':_0xa282('0x53'),'value':_0x28a96e['attrSmsAccounts']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x6]?_0x28a96e[_0xa282('0x42')][0x6][_0xa282('0x43')]:undefined)||''},{'name':_0xa282('0x54'),'value':_0x28a96e['attrOpenchannelAccounts']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e['attrs'][0x7]?_0x28a96e[_0xa282('0x42')][0x7][_0xa282('0x43')]:undefined)||''},{'name':_0xa282('0x55'),'value':_0x28a96e[_0xa282('0x55')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e['attrs'][0x8]?_0x28a96e[_0xa282('0x42')][0x8][_0xa282('0x43')]:undefined)||''},{'name':_0xa282('0x56'),'value':_0x28a96e[_0xa282('0x56')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x9]?_0x28a96e[_0xa282('0x42')][0x9][_0xa282('0x43')]:undefined)||''}];case _0xa282('0x57'):case _0xa282('0x58'):return[{'name':_0xa282('0x59'),'value':_0x28a96e['attrSerie1']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x0]?_0x28a96e[_0xa282('0x42')][0x0][_0xa282('0x43')]:undefined)||_0xa282('0x4e')},{'name':_0xa282('0x5a'),'value':_0x28a96e[_0xa282('0x5a')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x1]?_0x28a96e[_0xa282('0x42')][0x1][_0xa282('0x43')]:undefined)||null},{'name':_0xa282('0x5b'),'value':_0x28a96e['attrSerie3']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x2]?_0x28a96e[_0xa282('0x42')][0x2][_0xa282('0x43')]:undefined)||null},{'name':_0xa282('0x4f'),'value':_0x28a96e[_0xa282('0x4f')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x3]?_0x28a96e[_0xa282('0x42')][0x3][_0xa282('0x43')]:undefined)||[]},{'name':'attrChannel','value':_0x28a96e['attrChannel']||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x4]?_0x28a96e['attrs'][0x4]['value']:undefined)||_0xa282('0x5c')},{'name':_0xa282('0x51'),'value':_0x28a96e[_0xa282('0x51')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x5]?_0x28a96e[_0xa282('0x42')][0x5]['value']:undefined)||''},{'name':_0xa282('0x52'),'value':_0x28a96e[_0xa282('0x52')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e['attrs'][0x6]?_0x28a96e['attrs'][0x6]['value']:undefined)||''},{'name':_0xa282('0x53'),'value':_0x28a96e[_0xa282('0x53')]||(_0x28a96e['attrs']&&_0x28a96e[_0xa282('0x42')][0x7]?_0x28a96e[_0xa282('0x42')][0x7]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x28a96e[_0xa282('0x54')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e['attrs'][0x8]?_0x28a96e[_0xa282('0x42')][0x8][_0xa282('0x43')]:undefined)||''},{'name':_0xa282('0x55'),'value':_0x28a96e[_0xa282('0x55')]||(_0x28a96e['attrs']&&_0x28a96e['attrs'][0x9]?_0x28a96e[_0xa282('0x42')][0x9][_0xa282('0x43')]:undefined)||''},{'name':_0xa282('0x56'),'value':_0x28a96e[_0xa282('0x56')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e['attrs'][0xa]?_0x28a96e[_0xa282('0x42')][0xa][_0xa282('0x43')]:undefined)||''}];case _0xa282('0x5d'):return[{'name':_0xa282('0x5e'),'type':_0x28a96e[_0xa282('0x5f')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x0]?_0x28a96e['attrs'][0x0][_0xa282('0x40')]:undefined)||null,'value':_0x28a96e[_0xa282('0x5e')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x0]?_0x28a96e[_0xa282('0x42')][0x0][_0xa282('0x43')]:undefined)||null},{'name':_0xa282('0x60'),'value':_0x28a96e[_0xa282('0x60')]||(_0x28a96e[_0xa282('0x42')]&&_0x28a96e[_0xa282('0x42')][0x1]?_0x28a96e[_0xa282('0x42')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x1575e6){logger['error'](_0xa282('0x61'),JSON['stringify'](_0x1575e6));return[];}}exports[_0xa282('0x62')]=function(_0x5f2bc4,_0x2a327a){if(_0x5f2bc4['body']){_0x5f2bc4[_0xa282('0x63')]['attrs']=widgetAttributes(_0x5f2bc4['body']);}return db[_0xa282('0x34')][_0xa282('0x62')](_0x5f2bc4[_0xa282('0x63')],{})[_0xa282('0x2c')](respondWithResult(_0x2a327a,0xc9))[_0xa282('0x3f')](handleError(_0x2a327a,null));};exports['update']=function(_0x2440d0,_0x244504){if(_0x2440d0[_0xa282('0x63')]['id']){delete _0x2440d0['body']['id'];}_0x2440d0['body']['attrs']=widgetAttributes(_0x2440d0[_0xa282('0x63')]);return db[_0xa282('0x34')]['find']({'where':{'id':_0x2440d0[_0xa282('0x32')]['id']}})[_0xa282('0x2c')](handleEntityNotFound(_0x244504,null))[_0xa282('0x2c')](saveUpdates(_0x2440d0[_0xa282('0x63')],null))['then'](respondWithResult(_0x244504,null))[_0xa282('0x3f')](handleError(_0x244504,null));};
\ No newline at end of file
+var _0xe1d3=['HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','web-report','attrReport','reportType','type','attrRefresh','error','stringify','body','create','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','stack','name','show','params','keys','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','find','catch','destroy','DashboardItem','attrs','value','https://','custom','attrPath','clock','attrHourFormat'];(function(_0x2f3aa7,_0x2d7ce7){var _0x2c334c=function(_0x552741){while(--_0x552741){_0x2f3aa7['push'](_0x2f3aa7['shift']());}};_0x2c334c(++_0x2d7ce7);}(_0xe1d3,0x159));var _0x3e1d=function(_0x43fd57,_0xcc26fe){_0x43fd57=_0x43fd57-0x0;var _0x4c671c=_0xe1d3[_0x43fd57];return _0x4c671c;};'use strict';var emlformat=require(_0x3e1d('0x0'));var rimraf=require(_0x3e1d('0x1'));var zipdir=require(_0x3e1d('0x2'));var jsonpatch=require(_0x3e1d('0x3'));var rp=require(_0x3e1d('0x4'));var moment=require('moment');var BPromise=require(_0x3e1d('0x5'));var Mustache=require('mustache');var util=require(_0x3e1d('0x6'));var path=require(_0x3e1d('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3e1d('0x8'));var fs=require('fs');var fs_extra=require(_0x3e1d('0x9'));var _=require(_0x3e1d('0xa'));var squel=require(_0x3e1d('0xb'));var crypto=require(_0x3e1d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3e1d('0xd'));var toCsv=require(_0x3e1d('0xe'));var querystring=require('querystring');var Papa=require(_0x3e1d('0xf'));var Redis=require(_0x3e1d('0x10'));var authService=require(_0x3e1d('0x11'));var qs=require(_0x3e1d('0x12'));var as=require(_0x3e1d('0x13'));var hardwareService=require(_0x3e1d('0x14'));var logger=require(_0x3e1d('0x15'))(_0x3e1d('0x16'));var utils=require(_0x3e1d('0x17'));var config=require(_0x3e1d('0x18'));var licenseUtil=require(_0x3e1d('0x19'));var db=require(_0x3e1d('0x1a'))['db'];config[_0x3e1d('0x1b')]=_[_0x3e1d('0x1c')](config['redis'],{'host':_0x3e1d('0x1d'),'port':0x18eb});var socket=require(_0x3e1d('0x1e'))(new Redis(config['redis']));require(_0x3e1d('0x1f'))[_0x3e1d('0x20')](socket);function respondWithStatusCode(_0x4e77a6,_0x1b9a1f){_0x1b9a1f=_0x1b9a1f||0xcc;return function(_0xa58738){if(_0xa58738){return _0x4e77a6[_0x3e1d('0x21')](_0x1b9a1f);}return _0x4e77a6[_0x3e1d('0x22')](_0x1b9a1f)[_0x3e1d('0x23')]();};}function respondWithResult(_0x5a6513,_0x26626c){_0x26626c=_0x26626c||0xc8;return function(_0x2721e5){if(_0x2721e5){return _0x5a6513['status'](_0x26626c)[_0x3e1d('0x24')](_0x2721e5);}};}function respondWithFilteredResult(_0x368372,_0x517b8d){return function(_0x38a13f){if(_0x38a13f){var _0x46062f=typeof _0x517b8d[_0x3e1d('0x25')]===_0x3e1d('0x26')&&typeof _0x517b8d[_0x3e1d('0x27')]===_0x3e1d('0x26');var _0x4bc1a4=_0x38a13f[_0x3e1d('0x28')];var _0x37a676=_0x46062f?0x0:_0x517b8d['offset'];var _0x135af0=_0x46062f?_0x38a13f[_0x3e1d('0x28')]:_0x517b8d[_0x3e1d('0x25')]+_0x517b8d['limit'];var _0x22e8f0;if(_0x135af0>=_0x4bc1a4){_0x135af0=_0x4bc1a4;_0x22e8f0=0xc8;}else{_0x22e8f0=0xce;}_0x368372['status'](_0x22e8f0);return _0x368372[_0x3e1d('0x29')](_0x3e1d('0x2a'),_0x37a676+'-'+_0x135af0+'/'+_0x4bc1a4)[_0x3e1d('0x24')](_0x38a13f);}return null;};}function patchUpdates(_0x34b191){return function(_0x31556a){try{jsonpatch[_0x3e1d('0x2b')](_0x31556a,_0x34b191,!![]);}catch(_0x263231){return BPromise[_0x3e1d('0x2c')](_0x263231);}return _0x31556a[_0x3e1d('0x2d')]();};}function saveUpdates(_0x5291c4,_0x3d7e21){return function(_0x3d9985){if(_0x3d9985){return _0x3d9985[_0x3e1d('0x2e')](_0x5291c4)[_0x3e1d('0x2f')](function(_0x212c45){return _0x212c45;});}return null;};}function removeEntity(_0x168af6,_0x51db49){return function(_0x59376d){if(_0x59376d){return _0x59376d['destroy']()[_0x3e1d('0x2f')](function(){_0x168af6[_0x3e1d('0x22')](0xcc)[_0x3e1d('0x23')]();});}};}function handleEntityNotFound(_0x438bd4,_0x49c9b3){return function(_0x13eb37){if(!_0x13eb37){_0x438bd4[_0x3e1d('0x21')](0x194);}return _0x13eb37;};}function handleError(_0x353b5,_0x5b974f){_0x5b974f=_0x5b974f||0x1f4;return function(_0x4dd08d){logger['error'](_0x4dd08d[_0x3e1d('0x30')]);if(_0x4dd08d[_0x3e1d('0x31')]){delete _0x4dd08d[_0x3e1d('0x31')];}_0x353b5[_0x3e1d('0x22')](_0x5b974f)['send'](_0x4dd08d);};}exports[_0x3e1d('0x32')]=function(_0xa4768c,_0x3558f6){var _0x2e20c9={'raw':![],'where':{'id':_0xa4768c[_0x3e1d('0x33')]['id']}},_0x5c425f={};_0x5c425f['model']=_[_0x3e1d('0x34')](db['DashboardItem']['rawAttributes']);_0x5c425f[_0x3e1d('0x35')]=_[_0x3e1d('0x34')](_0xa4768c[_0x3e1d('0x35')]);_0x5c425f[_0x3e1d('0x36')]=_[_0x3e1d('0x37')](_0x5c425f[_0x3e1d('0x38')],_0x5c425f[_0x3e1d('0x35')]);_0x2e20c9[_0x3e1d('0x39')]=_['intersection'](_0x5c425f[_0x3e1d('0x38')],qs['fields'](_0xa4768c[_0x3e1d('0x35')][_0x3e1d('0x3a')]));_0x2e20c9[_0x3e1d('0x39')]=_0x2e20c9[_0x3e1d('0x39')][_0x3e1d('0x3b')]?_0x2e20c9['attributes']:_0x5c425f[_0x3e1d('0x38')];if(_0xa4768c[_0x3e1d('0x35')][_0x3e1d('0x3c')]){_0x2e20c9[_0x3e1d('0x3d')]=[{'all':!![]}];}_0x2e20c9=_[_0x3e1d('0x3e')]({},_0x2e20c9,_0xa4768c[_0x3e1d('0x3f')]);return db['DashboardItem'][_0x3e1d('0x40')](_0x2e20c9)[_0x3e1d('0x2f')](handleEntityNotFound(_0x3558f6,null))[_0x3e1d('0x2f')](respondWithResult(_0x3558f6,null))[_0x3e1d('0x41')](handleError(_0x3558f6,null));};exports[_0x3e1d('0x42')]=function(_0x25d742,_0x558e46){return db[_0x3e1d('0x43')][_0x3e1d('0x40')]({'where':{'id':_0x25d742['params']['id']}})['then'](handleEntityNotFound(_0x558e46,null))['then'](removeEntity(_0x558e46,null))[_0x3e1d('0x41')](handleError(_0x558e46,null));};function widgetAttributes(_0x29d1bd){try{switch(_0x29d1bd['type']){case'iframe':return[{'name':'attrUrl','value':_0x29d1bd['attrUrl']||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x0]?_0x29d1bd[_0x3e1d('0x44')][0x0][_0x3e1d('0x45')]:undefined)||_0x3e1d('0x46')}];case _0x3e1d('0x47'):return[{'name':'attrPath','value':_0x29d1bd[_0x3e1d('0x48')]||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x0]?_0x29d1bd[_0x3e1d('0x44')][0x0][_0x3e1d('0x45')]:undefined)||''}];case _0x3e1d('0x49'):return[{'name':_0x3e1d('0x4a'),'value':_0x29d1bd[_0x3e1d('0x4a')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x0]?_0x29d1bd[_0x3e1d('0x44')][0x0][_0x3e1d('0x45')]:undefined)||_0x3e1d('0x4b')},{'name':_0x3e1d('0x4c'),'value':_0x29d1bd[_0x3e1d('0x4c')]||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x1]?_0x29d1bd[_0x3e1d('0x44')][0x1][_0x3e1d('0x45')]:undefined)||_0x3e1d('0x4d')},{'name':'attrFontSize','value':_0x29d1bd[_0x3e1d('0x4e')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd['attrs'][0x2]?_0x29d1bd[_0x3e1d('0x44')][0x2][_0x3e1d('0x45')]:undefined)||0xc}];case _0x3e1d('0x4f'):return[{'name':'attrMetric','value':_0x29d1bd[_0x3e1d('0x50')]||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x0]?_0x29d1bd[_0x3e1d('0x44')][0x0][_0x3e1d('0x45')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x29d1bd[_0x3e1d('0x51')]||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x1]?_0x29d1bd[_0x3e1d('0x44')][0x1][_0x3e1d('0x45')]:undefined)||[]},{'name':_0x3e1d('0x4e'),'value':_0x29d1bd['attrFontSize']||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x2]?_0x29d1bd[_0x3e1d('0x44')][0x2][_0x3e1d('0x45')]:undefined)||0x14},{'name':_0x3e1d('0x52'),'value':_0x29d1bd[_0x3e1d('0x52')]||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x3]?_0x29d1bd[_0x3e1d('0x44')][0x3][_0x3e1d('0x45')]:undefined)||_0x3e1d('0x53')},{'name':'attrEmailAccounts','value':_0x29d1bd[_0x3e1d('0x54')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd['attrs'][0x4]?_0x29d1bd[_0x3e1d('0x44')][0x4][_0x3e1d('0x45')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x29d1bd[_0x3e1d('0x55')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x5]?_0x29d1bd[_0x3e1d('0x44')][0x5][_0x3e1d('0x45')]:undefined)||''},{'name':_0x3e1d('0x56'),'value':_0x29d1bd[_0x3e1d('0x56')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x6]?_0x29d1bd[_0x3e1d('0x44')][0x6][_0x3e1d('0x45')]:undefined)||''},{'name':_0x3e1d('0x57'),'value':_0x29d1bd[_0x3e1d('0x57')]||(_0x29d1bd['attrs']&&_0x29d1bd['attrs'][0x7]?_0x29d1bd[_0x3e1d('0x44')][0x7]['value']:undefined)||''},{'name':_0x3e1d('0x58'),'value':_0x29d1bd[_0x3e1d('0x58')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x8]?_0x29d1bd[_0x3e1d('0x44')][0x8][_0x3e1d('0x45')]:undefined)||''},{'name':'attrChatWebsites','value':_0x29d1bd[_0x3e1d('0x59')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x9]?_0x29d1bd['attrs'][0x9][_0x3e1d('0x45')]:undefined)||''}];case _0x3e1d('0x5a'):case _0x3e1d('0x5b'):return[{'name':_0x3e1d('0x5c'),'value':_0x29d1bd[_0x3e1d('0x5c')]||(_0x29d1bd['attrs']&&_0x29d1bd[_0x3e1d('0x44')][0x0]?_0x29d1bd[_0x3e1d('0x44')][0x0][_0x3e1d('0x45')]:undefined)||_0x3e1d('0x5d')},{'name':_0x3e1d('0x5e'),'value':_0x29d1bd[_0x3e1d('0x5e')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x1]?_0x29d1bd[_0x3e1d('0x44')][0x1][_0x3e1d('0x45')]:undefined)||null},{'name':_0x3e1d('0x5f'),'value':_0x29d1bd[_0x3e1d('0x5f')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd['attrs'][0x2]?_0x29d1bd[_0x3e1d('0x44')][0x2][_0x3e1d('0x45')]:undefined)||null},{'name':_0x3e1d('0x51'),'value':_0x29d1bd[_0x3e1d('0x51')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x3]?_0x29d1bd[_0x3e1d('0x44')][0x3][_0x3e1d('0x45')]:undefined)||[]},{'name':_0x3e1d('0x52'),'value':_0x29d1bd[_0x3e1d('0x52')]||(_0x29d1bd['attrs']&&_0x29d1bd['attrs'][0x4]?_0x29d1bd[_0x3e1d('0x44')][0x4][_0x3e1d('0x45')]:undefined)||'voice'},{'name':_0x3e1d('0x54'),'value':_0x29d1bd[_0x3e1d('0x54')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x5]?_0x29d1bd['attrs'][0x5][_0x3e1d('0x45')]:undefined)||''},{'name':_0x3e1d('0x55'),'value':_0x29d1bd[_0x3e1d('0x55')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x6]?_0x29d1bd[_0x3e1d('0x44')][0x6][_0x3e1d('0x45')]:undefined)||''},{'name':_0x3e1d('0x56'),'value':_0x29d1bd['attrSmsAccounts']||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x7]?_0x29d1bd[_0x3e1d('0x44')][0x7][_0x3e1d('0x45')]:undefined)||''},{'name':_0x3e1d('0x57'),'value':_0x29d1bd[_0x3e1d('0x57')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x8]?_0x29d1bd['attrs'][0x8][_0x3e1d('0x45')]:undefined)||''},{'name':_0x3e1d('0x58'),'value':_0x29d1bd[_0x3e1d('0x58')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x9]?_0x29d1bd[_0x3e1d('0x44')][0x9]['value']:undefined)||''},{'name':_0x3e1d('0x59'),'value':_0x29d1bd['attrChatWebsites']||(_0x29d1bd['attrs']&&_0x29d1bd['attrs'][0xa]?_0x29d1bd[_0x3e1d('0x44')][0xa]['value']:undefined)||''}];case _0x3e1d('0x60'):return[{'name':_0x3e1d('0x61'),'type':_0x29d1bd[_0x3e1d('0x62')]||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x0]?_0x29d1bd['attrs'][0x0][_0x3e1d('0x63')]:undefined)||null,'value':_0x29d1bd['attrReport']||(_0x29d1bd[_0x3e1d('0x44')]&&_0x29d1bd[_0x3e1d('0x44')][0x0]?_0x29d1bd[_0x3e1d('0x44')][0x0][_0x3e1d('0x45')]:undefined)||null},{'name':_0x3e1d('0x64'),'value':_0x29d1bd[_0x3e1d('0x64')]||(_0x29d1bd['attrs']&&_0x29d1bd['attrs'][0x1]?_0x29d1bd[_0x3e1d('0x44')][0x1][_0x3e1d('0x45')]:undefined)||0x0}];default:return[];}}catch(_0xf74b9f){logger[_0x3e1d('0x65')]('widgetAttributes:\x20%s',JSON[_0x3e1d('0x66')](_0xf74b9f));return[];}}exports['create']=function(_0x24b47c,_0x224c6f){if(_0x24b47c['body']){_0x24b47c['body'][_0x3e1d('0x44')]=widgetAttributes(_0x24b47c[_0x3e1d('0x67')]);}return db[_0x3e1d('0x43')][_0x3e1d('0x68')](_0x24b47c['body'],{})[_0x3e1d('0x2f')](respondWithResult(_0x224c6f,0xc9))[_0x3e1d('0x41')](handleError(_0x224c6f,null));};exports[_0x3e1d('0x2e')]=function(_0x1dc1f8,_0xb07d51){if(_0x1dc1f8['body']['id']){delete _0x1dc1f8[_0x3e1d('0x67')]['id'];}_0x1dc1f8['body'][_0x3e1d('0x44')]=widgetAttributes(_0x1dc1f8['body']);return db[_0x3e1d('0x43')][_0x3e1d('0x40')]({'where':{'id':_0x1dc1f8[_0x3e1d('0x33')]['id']}})[_0x3e1d('0x2f')](handleEntityNotFound(_0xb07d51,null))[_0x3e1d('0x2f')](saveUpdates(_0x1dc1f8[_0x3e1d('0x67')],null))[_0x3e1d('0x2f')](respondWithResult(_0xb07d51,null))[_0x3e1d('0x41')](handleError(_0xb07d51,null));};
\ No newline at end of file
index 47486f2..fadc3e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9db3=['hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','update','emit'];(function(_0x333e2b,_0x303c9c){var _0x49df85=function(_0x1f76e9){while(--_0x1f76e9){_0x333e2b['push'](_0x333e2b['shift']());}};_0x49df85(++_0x303c9c);}(_0x9db3,0x1f1));var _0x39db=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9db3[_0x57b54c];return _0x59cc19;};'use strict';var EventEmitter=require(_0x39db('0x0'));var DashboardItem=require(_0x39db('0x1'))['db'][_0x39db('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x39db('0x3')](0x0);var events={'afterCreate':_0x39db('0x4'),'afterUpdate':_0x39db('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5696b2){return function(_0x58b00f,_0xd5516e,_0x2cc6ee){DashboardItemEvents['emit'](_0x5696b2+':'+_0x58b00f['id'],_0x58b00f);DashboardItemEvents[_0x39db('0x6')](_0x5696b2,_0x58b00f);_0x2cc6ee(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0x39db('0x7')](e,emitEvent(event));}}module[_0x39db('0x8')]=DashboardItemEvents;
\ No newline at end of file
+var _0xb8f0=['update','emit','hasOwnProperty','hook','exports','DashboardItem','setMaxListeners','save'];(function(_0x2c1d7f,_0x37a866){var _0x1645ec=function(_0x5c0133){while(--_0x5c0133){_0x2c1d7f['push'](_0x2c1d7f['shift']());}};_0x1645ec(++_0x37a866);}(_0xb8f0,0x6d));var _0x0b8f=function(_0x578226,_0x1e1038){_0x578226=_0x578226-0x0;var _0x8e8833=_0xb8f0[_0x578226];return _0x8e8833;};'use strict';var EventEmitter=require('events');var DashboardItem=require('../../mysqldb')['db'][_0x0b8f('0x0')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x0b8f('0x1')](0x0);var events={'afterCreate':_0x0b8f('0x2'),'afterUpdate':_0x0b8f('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4d3c12){return function(_0x537fec,_0x4ef3a9,_0x42d10c){DashboardItemEvents[_0x0b8f('0x4')](_0x4d3c12+':'+_0x537fec['id'],_0x537fec);DashboardItemEvents['emit'](_0x4d3c12,_0x537fec);_0x42d10c(null);};}for(var e in events){if(events[_0x0b8f('0x5')](e)){var event=events[e];DashboardItem[_0x0b8f('0x6')](e,emitEvent(event));}}module[_0x0b8f('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 6e4c0de..45aa854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fd1=['./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4ef60d,_0x277aa0){var _0x498c82=function(_0x1e03ec){while(--_0x1e03ec){_0x4ef60d['push'](_0x4ef60d['shift']());}};_0x498c82(++_0x277aa0);}(_0x0fd1,0x12b));var _0x10fd=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x0fd1[_0xc4001c];return _0x49f7bc;};'use strict';var _=require(_0x10fd('0x0'));var util=require(_0x10fd('0x1'));var logger=require(_0x10fd('0x2'))('api');var moment=require(_0x10fd('0x3'));var BPromise=require(_0x10fd('0x4'));var rp=require(_0x10fd('0x5'));var fs=require('fs');var path=require(_0x10fd('0x6'));var rimraf=require(_0x10fd('0x7'));var config=require(_0x10fd('0x8'));var attributes=require(_0x10fd('0x9'));module[_0x10fd('0xa')]=function(_0x48150b,_0x35a74b){return _0x48150b[_0x10fd('0xb')](_0x10fd('0xc'),attributes,{'tableName':_0x10fd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec60=['../../config/logger','api','moment','bluebird','path','rimraf','./dashboardItem.attributes','define','DashboardItem','dashboard_items','lodash','util'];(function(_0x23db35,_0xfa66d5){var _0xfc84ed=function(_0x565ac8){while(--_0x565ac8){_0x23db35['push'](_0x23db35['shift']());}};_0xfc84ed(++_0xfa66d5);}(_0xec60,0x1de));var _0x0ec6=function(_0x354a09,_0x14a179){_0x354a09=_0x354a09-0x0;var _0x1fd034=_0xec60[_0x354a09];return _0x1fd034;};'use strict';var _=require(_0x0ec6('0x0'));var util=require(_0x0ec6('0x1'));var logger=require(_0x0ec6('0x2'))(_0x0ec6('0x3'));var moment=require(_0x0ec6('0x4'));var BPromise=require(_0x0ec6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0ec6('0x6'));var rimraf=require(_0x0ec6('0x7'));var config=require('../../config/environment');var attributes=require(_0x0ec6('0x8'));module['exports']=function(_0x57d5d4,_0x539009){return _0x57d5d4[_0x0ec6('0x9')](_0x0ec6('0xa'),attributes,{'tableName':_0x0ec6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index caf7dc9..a35b7ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7081=['request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','defaults','localhost','redis','register','request','then','DashboardItem,\x20%s,\x20%s'];(function(_0x3a19ca,_0xc00220){var _0x5bde87=function(_0x190ae7){while(--_0x190ae7){_0x3a19ca['push'](_0x3a19ca['shift']());}};_0x5bde87(++_0xc00220);}(_0x7081,0x102));var _0x1708=function(_0x30986c,_0x39ce58){_0x30986c=_0x30986c-0x0;var _0x57c209=_0x7081[_0x30986c];return _0x57c209;};'use strict';var _=require(_0x1708('0x0'));var util=require(_0x1708('0x1'));var moment=require('moment');var BPromise=require(_0x1708('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1708('0x3'));var db=require(_0x1708('0x4'))['db'];var utils=require(_0x1708('0x5'));var logger=require(_0x1708('0x6'))(_0x1708('0x7'));var config=require(_0x1708('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1708('0x9')]({'port':0x232a});config['redis']=_[_0x1708('0xa')](config['redis'],{'host':_0x1708('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1708('0xc')]));require('./dashboardItem.socket')[_0x1708('0xd')](socket);function respondWithRpcPromise(_0x4d0dd9,_0x4d8cec,_0x3c8353){return new BPromise(function(_0x1234d4,_0x1eea39){return client[_0x1708('0xe')](_0x4d0dd9,_0x3c8353)[_0x1708('0xf')](function(_0x5236a2){logger['info'](_0x1708('0x10'),_0x4d8cec,_0x1708('0x11'));logger[_0x1708('0x12')](_0x1708('0x13'),_0x4d8cec,'request\x20sent',JSON[_0x1708('0x14')](_0x5236a2));if(_0x5236a2[_0x1708('0x15')]){if(_0x5236a2[_0x1708('0x15')]['code']===0x1f4){logger[_0x1708('0x15')]('DashboardItem,\x20%s,\x20%s',_0x4d8cec,_0x5236a2[_0x1708('0x15')][_0x1708('0x16')]);return _0x1eea39(_0x5236a2[_0x1708('0x15')]['message']);}logger['error'](_0x1708('0x10'),_0x4d8cec,_0x5236a2[_0x1708('0x15')][_0x1708('0x16')]);return _0x1234d4(_0x5236a2[_0x1708('0x15')]['message']);}else{logger[_0x1708('0x17')](_0x1708('0x10'),_0x4d8cec,_0x1708('0x11'));_0x1234d4(_0x5236a2[_0x1708('0x18')][_0x1708('0x16')]);}})['catch'](function(_0xf672ae){logger[_0x1708('0x15')](_0x1708('0x10'),_0x4d8cec,_0xf672ae);_0x1eea39(_0xf672ae);});});}
\ No newline at end of file
+var _0x8c56=['socket.io-emitter','./dashboardItem.socket','register','request','then','info','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8c56,0x195));var _0x68c5=function(_0x358fd3,_0x4a9c44){_0x358fd3=_0x358fd3-0x0;var _0x1ad0f3=_0x8c56[_0x358fd3];return _0x1ad0f3;};'use strict';var _=require(_0x68c5('0x0'));var util=require(_0x68c5('0x1'));var moment=require(_0x68c5('0x2'));var BPromise=require(_0x68c5('0x3'));var rs=require(_0x68c5('0x4'));var fs=require('fs');var Redis=require(_0x68c5('0x5'));var db=require(_0x68c5('0x6'))['db'];var utils=require(_0x68c5('0x7'));var logger=require(_0x68c5('0x8'))(_0x68c5('0x9'));var config=require('../../config/environment');var jayson=require(_0x68c5('0xa'));var client=jayson[_0x68c5('0xb')]['http']({'port':0x232a});config[_0x68c5('0xc')]=_[_0x68c5('0xd')](config[_0x68c5('0xc')],{'host':_0x68c5('0xe'),'port':0x18eb});var socket=require(_0x68c5('0xf'))(new Redis(config[_0x68c5('0xc')]));require(_0x68c5('0x10'))[_0x68c5('0x11')](socket);function respondWithRpcPromise(_0x413d26,_0x8858d0,_0x585b79){return new BPromise(function(_0x474e87,_0x50ee63){return client[_0x68c5('0x12')](_0x413d26,_0x585b79)[_0x68c5('0x13')](function(_0x4f473c){logger[_0x68c5('0x14')]('DashboardItem,\x20%s,\x20%s',_0x8858d0,_0x68c5('0x15'));logger[_0x68c5('0x16')](_0x68c5('0x17'),_0x8858d0,_0x68c5('0x15'),JSON[_0x68c5('0x18')](_0x4f473c));if(_0x4f473c[_0x68c5('0x19')]){if(_0x4f473c[_0x68c5('0x19')][_0x68c5('0x1a')]===0x1f4){logger[_0x68c5('0x19')](_0x68c5('0x1b'),_0x8858d0,_0x4f473c[_0x68c5('0x19')][_0x68c5('0x1c')]);return _0x50ee63(_0x4f473c[_0x68c5('0x19')][_0x68c5('0x1c')]);}logger[_0x68c5('0x19')](_0x68c5('0x1b'),_0x8858d0,_0x4f473c[_0x68c5('0x19')][_0x68c5('0x1c')]);return _0x474e87(_0x4f473c[_0x68c5('0x19')][_0x68c5('0x1c')]);}else{logger[_0x68c5('0x14')]('DashboardItem,\x20%s,\x20%s',_0x8858d0,_0x68c5('0x15'));_0x474e87(_0x4f473c['result'][_0x68c5('0x1c')]);}})[_0x68c5('0x1d')](function(_0xfd1e73){logger[_0x68c5('0x19')](_0x68c5('0x1b'),_0x8858d0,_0xfd1e73);_0x50ee63(_0xfd1e73);});});}
\ No newline at end of file
index 25c4f65..285ca96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ae8=['dashboardItem:','./dashboardItem.events','save','remove','update','register','length'];(function(_0x5dd172,_0x3ecb33){var _0x121f72=function(_0x357702){while(--_0x357702){_0x5dd172['push'](_0x5dd172['shift']());}};_0x121f72(++_0x3ecb33);}(_0x5ae8,0x174));var _0x85ae=function(_0x56227a,_0x32742a){_0x56227a=_0x56227a-0x0;var _0x5e1619=_0x5ae8[_0x56227a];return _0x5e1619;};'use strict';var DashboardItemEvents=require(_0x85ae('0x0'));var events=[_0x85ae('0x1'),_0x85ae('0x2'),_0x85ae('0x3')];function createListener(_0x44dd36,_0x53ba91){return function(_0x138dd1){_0x53ba91['emit'](_0x44dd36,_0x138dd1);};}function removeListener(_0x497e0c,_0x24530f){return function(){DashboardItemEvents['removeListener'](_0x497e0c,_0x24530f);};}exports[_0x85ae('0x4')]=function(_0xa01021){for(var _0x124906=0x0,_0x2ace9c=events[_0x85ae('0x5')];_0x124906<_0x2ace9c;_0x124906++){var _0x1d4268=events[_0x124906];var _0x2f4c92=createListener(_0x85ae('0x6')+_0x1d4268,_0xa01021);DashboardItemEvents['on'](_0x1d4268,_0x2f4c92);}};
\ No newline at end of file
+var _0x2698=['save','remove','emit','removeListener','register','length','./dashboardItem.events'];(function(_0x4e9fed,_0x19f4f3){var _0x5c8cc0=function(_0x36116c){while(--_0x36116c){_0x4e9fed['push'](_0x4e9fed['shift']());}};_0x5c8cc0(++_0x19f4f3);}(_0x2698,0x15d));var _0x8269=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2698[_0x3dd15e];return _0x231fd0;};'use strict';var DashboardItemEvents=require(_0x8269('0x0'));var events=[_0x8269('0x1'),_0x8269('0x2'),'update'];function createListener(_0x1c98cc,_0x1c1182){return function(_0x373dc7){_0x1c1182[_0x8269('0x3')](_0x1c98cc,_0x373dc7);};}function removeListener(_0x2dc7d0,_0x1f0f03){return function(){DashboardItemEvents[_0x8269('0x4')](_0x2dc7d0,_0x1f0f03);};}exports[_0x8269('0x5')]=function(_0x507103){for(var _0x46f3cb=0x0,_0x29586d=events[_0x8269('0x6')];_0x46f3cb<_0x29586d;_0x46f3cb++){var _0xe66f7d=events[_0x46f3cb];var _0x31ce4d=createListener('dashboardItem:'+_0xe66f7d,_0x507103);DashboardItemEvents['on'](_0xe66f7d,_0x31ce4d);}};
\ No newline at end of file
index 3315c30..3d8c06d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf4=['delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','get','isAuthenticated','show','post','create','/:id','update'];(function(_0x5530dc,_0x1cf067){var _0x5f56f6=function(_0x594f6a){while(--_0x594f6a){_0x5530dc['push'](_0x5530dc['shift']());}};_0x5f56f6(++_0x1cf067);}(_0x8bf4,0x16b));var _0x48bf=function(_0x1f02bc,_0x4cdada){_0x1f02bc=_0x1f02bc-0x0;var _0x378387=_0x8bf4[_0x1f02bc];return _0x378387;};'use strict';var multer=require(_0x48bf('0x0'));var util=require(_0x48bf('0x1'));var path=require('path');var timeout=require(_0x48bf('0x2'));var express=require(_0x48bf('0x3'));var router=express['Router']();var fs_extra=require(_0x48bf('0x4'));var auth=require(_0x48bf('0x5'));var interaction=require(_0x48bf('0x6'));var config=require('../../config/environment');var controller=require(_0x48bf('0x7'));router[_0x48bf('0x8')]('/:id',auth[_0x48bf('0x9')](),controller[_0x48bf('0xa')]);router[_0x48bf('0xb')]('/',auth[_0x48bf('0x9')](),controller[_0x48bf('0xc')]);router['put'](_0x48bf('0xd'),auth[_0x48bf('0x9')](),controller[_0x48bf('0xe')]);router[_0x48bf('0xf')](_0x48bf('0xd'),auth[_0x48bf('0x9')](),controller[_0x48bf('0x10')]);module[_0x48bf('0x11')]=router;
\ No newline at end of file
+var _0xd1c3=['create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','get','/:id','isAuthenticated','show'];(function(_0x434467,_0x2c6a75){var _0x5248ba=function(_0x5a3811){while(--_0x5a3811){_0x434467['push'](_0x434467['shift']());}};_0x5248ba(++_0x2c6a75);}(_0xd1c3,0xc3));var _0x3d1c=function(_0x1a254a,_0x42a97f){_0x1a254a=_0x1a254a-0x0;var _0xe0bd7b=_0xd1c3[_0x1a254a];return _0xe0bd7b;};'use strict';var multer=require(_0x3d1c('0x0'));var util=require(_0x3d1c('0x1'));var path=require(_0x3d1c('0x2'));var timeout=require(_0x3d1c('0x3'));var express=require(_0x3d1c('0x4'));var router=express[_0x3d1c('0x5')]();var fs_extra=require(_0x3d1c('0x6'));var auth=require(_0x3d1c('0x7'));var interaction=require(_0x3d1c('0x8'));var config=require('../../config/environment');var controller=require(_0x3d1c('0x9'));router[_0x3d1c('0xa')](_0x3d1c('0xb'),auth[_0x3d1c('0xc')](),controller[_0x3d1c('0xd')]);router['post']('/',auth[_0x3d1c('0xc')](),controller[_0x3d1c('0xe')]);router[_0x3d1c('0xf')](_0x3d1c('0xb'),auth[_0x3d1c('0xc')](),controller['update']);router[_0x3d1c('0x10')](_0x3d1c('0xb'),auth[_0x3d1c('0xc')](),controller[_0x3d1c('0x11')]);module[_0x3d1c('0x12')]=router;
\ No newline at end of file
index b0fa0af..29d3a9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe085=['exports','STRING','ENUM','first','second','third','sequelize'];(function(_0x24d20d,_0xbb84b6){var _0x364387=function(_0x493bcf){while(--_0x493bcf){_0x24d20d['push'](_0x24d20d['shift']());}};_0x364387(++_0xbb84b6);}(_0xe085,0x1b8));var _0x5e08=function(_0x24f480,_0x21fe75){_0x24f480=_0x24f480-0x0;var _0x4cac12=_0xe085[_0x24f480];return _0x4cac12;};'use strict';var Sequelize=require(_0x5e08('0x0'));module[_0x5e08('0x1')]={'name':{'type':Sequelize[_0x5e08('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x5e08('0x3')](_0x5e08('0x4'),_0x5e08('0x5'),_0x5e08('0x6')),'allowNull':![],'defaultValue':_0x5e08('0x4')},'description':{'type':Sequelize[_0x5e08('0x2')]}};
\ No newline at end of file
+var _0xeb04=['first','exports','STRING','ENUM','second','third'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0xeb04,0x14b));var _0x4eb0=function(_0xde045c,_0x1ff677){_0xde045c=_0xde045c-0x0;var _0xc9a348=_0xeb04[_0xde045c];return _0xc9a348;};'use strict';var Sequelize=require('sequelize');module[_0x4eb0('0x0')]={'name':{'type':Sequelize[_0x4eb0('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0x4eb0('0x2')]('first',_0x4eb0('0x3'),_0x4eb0('0x4')),'allowNull':![],'defaultValue':_0x4eb0('0x5')},'description':{'type':Sequelize[_0x4eb0('0x1')]}};
\ No newline at end of file
index eb7ec61..04e3ee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa48=['body','params','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','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','count','limit','set','apply','save','update','then','get','destroy','error','stack','send','index','map','rawAttributes','type','key','model','name','keys','query','filters','intersection','fields','attributes','length','offset','order','sort','pick','where','merge','VIRTUAL','filter','options','Disposition','includeAll','include','findAll','catch','show','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Dispositions','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x58f026,_0x1b8451){var _0x587132=function(_0x2c4436){while(--_0x2c4436){_0x58f026['push'](_0x58f026['shift']());}};_0x587132(++_0x1b8451);}(_0xaa48,0x15a));var _0x8aa4=function(_0x3928bf,_0x4e6c08){_0x3928bf=_0x3928bf-0x0;var _0x583936=_0xaa48[_0x3928bf];return _0x583936;};'use strict';var emlformat=require(_0x8aa4('0x0'));var rimraf=require(_0x8aa4('0x1'));var zipdir=require(_0x8aa4('0x2'));var jsonpatch=require(_0x8aa4('0x3'));var rp=require(_0x8aa4('0x4'));var moment=require(_0x8aa4('0x5'));var BPromise=require(_0x8aa4('0x6'));var Mustache=require(_0x8aa4('0x7'));var util=require(_0x8aa4('0x8'));var path=require(_0x8aa4('0x9'));var sox=require(_0x8aa4('0xa'));var csv=require(_0x8aa4('0xb'));var ejs=require(_0x8aa4('0xc'));var fs=require('fs');var fs_extra=require(_0x8aa4('0xd'));var _=require(_0x8aa4('0xe'));var squel=require(_0x8aa4('0xf'));var crypto=require(_0x8aa4('0x10'));var jsforce=require(_0x8aa4('0x11'));var deskjs=require(_0x8aa4('0x12'));var toCsv=require('to-csv');var querystring=require(_0x8aa4('0x13'));var Papa=require(_0x8aa4('0x14'));var Redis=require('ioredis');var authService=require(_0x8aa4('0x15'));var qs=require(_0x8aa4('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8aa4('0x17'));var logger=require(_0x8aa4('0x18'))(_0x8aa4('0x19'));var utils=require(_0x8aa4('0x1a'));var config=require(_0x8aa4('0x1b'));var licenseUtil=require(_0x8aa4('0x1c'));var db=require(_0x8aa4('0x1d'))['db'];function respondWithStatusCode(_0x3dc274,_0x1dc057){_0x1dc057=_0x1dc057||0xcc;return function(_0x2476ea){if(_0x2476ea){return _0x3dc274['sendStatus'](_0x1dc057);}return _0x3dc274['status'](_0x1dc057)[_0x8aa4('0x1e')]();};}function respondWithResult(_0x455a80,_0xb8ce80){_0xb8ce80=_0xb8ce80||0xc8;return function(_0x38f35f){if(_0x38f35f){return _0x455a80[_0x8aa4('0x1f')](_0xb8ce80)[_0x8aa4('0x20')](_0x38f35f);}};}function respondWithFilteredResult(_0x2b3f62,_0x356df1){return function(_0x1ae822){if(_0x1ae822){var _0xce8df5=typeof _0x356df1['offset']==='undefined'&&typeof _0x356df1['limit']===_0x8aa4('0x21');var _0x188e24=_0x1ae822[_0x8aa4('0x22')];var _0x37cc28=_0xce8df5?0x0:_0x356df1['offset'];var _0xa765ce=_0xce8df5?_0x1ae822[_0x8aa4('0x22')]:_0x356df1['offset']+_0x356df1[_0x8aa4('0x23')];var _0x5176cb;if(_0xa765ce>=_0x188e24){_0xa765ce=_0x188e24;_0x5176cb=0xc8;}else{_0x5176cb=0xce;}_0x2b3f62['status'](_0x5176cb);return _0x2b3f62[_0x8aa4('0x24')]('Content-Range',_0x37cc28+'-'+_0xa765ce+'/'+_0x188e24)[_0x8aa4('0x20')](_0x1ae822);}return null;};}function patchUpdates(_0x2df294){return function(_0x521b69){try{jsonpatch[_0x8aa4('0x25')](_0x521b69,_0x2df294,!![]);}catch(_0x2c7d3b){return BPromise['reject'](_0x2c7d3b);}return _0x521b69[_0x8aa4('0x26')]();};}function saveUpdates(_0x2859d1,_0x1c8676){return function(_0x386bb9){if(_0x386bb9){return _0x386bb9[_0x8aa4('0x27')](_0x2859d1)['then'](function(_0x5280ef){return _0x5280ef;});}return null;};}function removeEntity(_0x4c429f,_0x4984f9){return function(_0x32466f){if(_0x32466f){return _0x32466f['destroy']()[_0x8aa4('0x28')](function(){var _0x3e4d24=_0x32466f[_0x8aa4('0x29')]({'plain':!![]});var _0x387434='Dispositions';return db['UserProfileResource'][_0x8aa4('0x2a')]({'where':{'type':_0x387434,'resourceId':_0x3e4d24['id']}})['then'](function(){return _0x32466f;});})[_0x8aa4('0x28')](function(){_0x4c429f[_0x8aa4('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14b38d,_0x4f1d8b){return function(_0x39ce27){if(!_0x39ce27){_0x14b38d['sendStatus'](0x194);}return _0x39ce27;};}function handleError(_0x46024e,_0x31ebb4){_0x31ebb4=_0x31ebb4||0x1f4;return function(_0x41b1e0){logger[_0x8aa4('0x2b')](_0x41b1e0[_0x8aa4('0x2c')]);if(_0x41b1e0['name']){delete _0x41b1e0['name'];}_0x46024e['status'](_0x31ebb4)[_0x8aa4('0x2d')](_0x41b1e0);};}exports[_0x8aa4('0x2e')]=function(_0x5d26ca,_0x3a6e6f){var _0x1f452e={},_0x3e4595={},_0x3633d1={'count':0x0,'rows':[]};var _0x31443b=_[_0x8aa4('0x2f')](db['Disposition'][_0x8aa4('0x30')],function(_0x599191){return{'name':_0x599191['fieldName'],'type':_0x599191[_0x8aa4('0x31')][_0x8aa4('0x32')]};});_0x3e4595[_0x8aa4('0x33')]=_[_0x8aa4('0x2f')](_0x31443b,_0x8aa4('0x34'));_0x3e4595['query']=_[_0x8aa4('0x35')](_0x5d26ca[_0x8aa4('0x36')]);_0x3e4595[_0x8aa4('0x37')]=_['intersection'](_0x3e4595['model'],_0x3e4595['query']);_0x1f452e['attributes']=_[_0x8aa4('0x38')](_0x3e4595[_0x8aa4('0x33')],qs[_0x8aa4('0x39')](_0x5d26ca[_0x8aa4('0x36')]['fields']));_0x1f452e['attributes']=_0x1f452e[_0x8aa4('0x3a')][_0x8aa4('0x3b')]?_0x1f452e[_0x8aa4('0x3a')]:_0x3e4595[_0x8aa4('0x33')];if(!_0x5d26ca[_0x8aa4('0x36')]['hasOwnProperty']('nolimit')){_0x1f452e[_0x8aa4('0x23')]=qs[_0x8aa4('0x23')](_0x5d26ca[_0x8aa4('0x36')]['limit']);_0x1f452e[_0x8aa4('0x3c')]=qs[_0x8aa4('0x3c')](_0x5d26ca['query'][_0x8aa4('0x3c')]);}_0x1f452e[_0x8aa4('0x3d')]=qs[_0x8aa4('0x3e')](_0x5d26ca['query'][_0x8aa4('0x3e')]);_0x1f452e['where']=qs['filters'](_[_0x8aa4('0x3f')](_0x5d26ca['query'],_0x3e4595[_0x8aa4('0x37')]),_0x31443b);if(_0x5d26ca[_0x8aa4('0x36')]['filter']){_0x1f452e[_0x8aa4('0x40')]=_[_0x8aa4('0x41')](_0x1f452e[_0x8aa4('0x40')],{'$or':_[_0x8aa4('0x2f')](_0x31443b,function(_0x5d404a){if(_0x5d404a[_0x8aa4('0x31')]!==_0x8aa4('0x42')){var _0x460d7c={};_0x460d7c[_0x5d404a['name']]={'$like':'%'+_0x5d26ca[_0x8aa4('0x36')][_0x8aa4('0x43')]+'%'};return _0x460d7c;}})});}_0x1f452e=_['merge']({},_0x1f452e,_0x5d26ca[_0x8aa4('0x44')]);var _0x4831a1={'where':_0x1f452e[_0x8aa4('0x40')]};return db[_0x8aa4('0x45')][_0x8aa4('0x22')](_0x4831a1)[_0x8aa4('0x28')](function(_0xf04c5f){_0x3633d1[_0x8aa4('0x22')]=_0xf04c5f;if(_0x5d26ca[_0x8aa4('0x36')][_0x8aa4('0x46')]){_0x1f452e[_0x8aa4('0x47')]=[{'all':!![]}];}return db[_0x8aa4('0x45')][_0x8aa4('0x48')](_0x1f452e);})[_0x8aa4('0x28')](function(_0x234325){_0x3633d1['rows']=_0x234325;return _0x3633d1;})[_0x8aa4('0x28')](respondWithFilteredResult(_0x3a6e6f,_0x1f452e))[_0x8aa4('0x49')](handleError(_0x3a6e6f,null));};exports[_0x8aa4('0x4a')]=function(_0xb41b3e,_0x3178fe){var _0x1846fb={'raw':!![],'where':{'id':_0xb41b3e['params']['id']}},_0x3395fb={};_0x3395fb[_0x8aa4('0x33')]=_[_0x8aa4('0x35')](db[_0x8aa4('0x45')]['rawAttributes']);_0x3395fb['query']=_['keys'](_0xb41b3e[_0x8aa4('0x36')]);_0x3395fb['filters']=_[_0x8aa4('0x38')](_0x3395fb[_0x8aa4('0x33')],_0x3395fb[_0x8aa4('0x36')]);_0x1846fb[_0x8aa4('0x3a')]=_[_0x8aa4('0x38')](_0x3395fb[_0x8aa4('0x33')],qs[_0x8aa4('0x39')](_0xb41b3e['query'][_0x8aa4('0x39')]));_0x1846fb[_0x8aa4('0x3a')]=_0x1846fb[_0x8aa4('0x3a')][_0x8aa4('0x3b')]?_0x1846fb[_0x8aa4('0x3a')]:_0x3395fb[_0x8aa4('0x33')];if(_0xb41b3e['query'][_0x8aa4('0x46')]){_0x1846fb[_0x8aa4('0x47')]=[{'all':!![]}];}_0x1846fb=_['merge']({},_0x1846fb,_0xb41b3e[_0x8aa4('0x44')]);return db['Disposition'][_0x8aa4('0x4b')](_0x1846fb)[_0x8aa4('0x28')](handleEntityNotFound(_0x3178fe,null))['then'](respondWithResult(_0x3178fe,null))[_0x8aa4('0x49')](handleError(_0x3178fe,null));};exports[_0x8aa4('0x4c')]=function(_0x4d193b,_0xc6557e){return db[_0x8aa4('0x45')]['create'](_0x4d193b['body'],{})[_0x8aa4('0x28')](function(_0x2c7958){var _0xaa9c29=_0x4d193b[_0x8aa4('0x4d')]['get']({'plain':!![]});if(!_0xaa9c29)throw new Error(_0x8aa4('0x4e'));if(_0xaa9c29['role']==='user'){var _0x1d2178=_0x2c7958[_0x8aa4('0x29')]({'plain':!![]});var _0x4b3282=_0x8aa4('0x4f');return db[_0x8aa4('0x50')]['find']({'where':{'name':_0x4b3282,'userProfileId':_0xaa9c29[_0x8aa4('0x51')]},'raw':!![]})[_0x8aa4('0x28')](function(_0xc8b137){if(_0xc8b137&&_0xc8b137[_0x8aa4('0x52')]===0x0){return db['UserProfileResource']['create']({'name':_0x1d2178[_0x8aa4('0x34')],'resourceId':_0x1d2178['id'],'type':_0xc8b137[_0x8aa4('0x34')],'sectionId':_0xc8b137['id']},{})[_0x8aa4('0x28')](function(){return _0x2c7958;});}else{return _0x2c7958;}})[_0x8aa4('0x49')](function(_0x19e3ae){logger[_0x8aa4('0x2b')](_0x8aa4('0x53'),_0x19e3ae);throw _0x19e3ae;});}return _0x2c7958;})[_0x8aa4('0x28')](respondWithResult(_0xc6557e,0xc9))[_0x8aa4('0x49')](handleError(_0xc6557e,null));};exports['update']=function(_0x2de29e,_0x466b7d){if(_0x2de29e[_0x8aa4('0x54')]['id']){delete _0x2de29e['body']['id'];}return db[_0x8aa4('0x45')][_0x8aa4('0x4b')]({'where':{'id':_0x2de29e[_0x8aa4('0x55')]['id']}})['then'](handleEntityNotFound(_0x466b7d,null))['then'](saveUpdates(_0x2de29e[_0x8aa4('0x54')],null))[_0x8aa4('0x28')](respondWithResult(_0x466b7d,null))['catch'](handleError(_0x466b7d,null));};exports[_0x8aa4('0x2a')]=function(_0x429b94,_0x132f5e){return db[_0x8aa4('0x45')][_0x8aa4('0x4b')]({'where':{'id':_0x429b94[_0x8aa4('0x55')]['id']}})[_0x8aa4('0x28')](handleEntityNotFound(_0x132f5e,null))['then'](removeEntity(_0x132f5e,null))['catch'](handleError(_0x132f5e,null));};
\ No newline at end of file
+var _0x270a=['offset','limit','undefined','count','set','json','apply','save','update','destroy','then','get','Dispositions','UserProfileResource','stack','name','send','index','map','Disposition','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','show','params','length','include','find','catch','create','body','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','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','sendStatus','status','end'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x270a,0xe1));var _0xa270=function(_0x3021b9,_0xdb387c){_0x3021b9=_0x3021b9-0x0;var _0xd6a1c2=_0x270a[_0x3021b9];return _0xd6a1c2;};'use strict';var emlformat=require(_0xa270('0x0'));var rimraf=require(_0xa270('0x1'));var zipdir=require(_0xa270('0x2'));var jsonpatch=require(_0xa270('0x3'));var rp=require('request-promise');var moment=require(_0xa270('0x4'));var BPromise=require(_0xa270('0x5'));var Mustache=require(_0xa270('0x6'));var util=require('util');var path=require(_0xa270('0x7'));var sox=require(_0xa270('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa270('0x9'));var _=require(_0xa270('0xa'));var squel=require(_0xa270('0xb'));var crypto=require(_0xa270('0xc'));var jsforce=require(_0xa270('0xd'));var deskjs=require(_0xa270('0xe'));var toCsv=require(_0xa270('0xf'));var querystring=require(_0xa270('0x10'));var Papa=require('papaparse');var Redis=require(_0xa270('0x11'));var authService=require(_0xa270('0x12'));var qs=require(_0xa270('0x13'));var as=require(_0xa270('0x14'));var hardwareService=require(_0xa270('0x15'));var logger=require('../../config/logger')(_0xa270('0x16'));var utils=require(_0xa270('0x17'));var config=require(_0xa270('0x18'));var licenseUtil=require(_0xa270('0x19'));var db=require(_0xa270('0x1a'))['db'];function respondWithStatusCode(_0x37e79d,_0x481e07){_0x481e07=_0x481e07||0xcc;return function(_0x52a24e){if(_0x52a24e){return _0x37e79d[_0xa270('0x1b')](_0x481e07);}return _0x37e79d[_0xa270('0x1c')](_0x481e07)[_0xa270('0x1d')]();};}function respondWithResult(_0x3e0d7b,_0x4fb6ab){_0x4fb6ab=_0x4fb6ab||0xc8;return function(_0x20720a){if(_0x20720a){return _0x3e0d7b['status'](_0x4fb6ab)['json'](_0x20720a);}};}function respondWithFilteredResult(_0x635060,_0x44a893){return function(_0xfb2131){if(_0xfb2131){var _0x19731b=typeof _0x44a893[_0xa270('0x1e')]==='undefined'&&typeof _0x44a893[_0xa270('0x1f')]===_0xa270('0x20');var _0x35852c=_0xfb2131[_0xa270('0x21')];var _0x5d26e0=_0x19731b?0x0:_0x44a893['offset'];var _0x28e8ca=_0x19731b?_0xfb2131[_0xa270('0x21')]:_0x44a893[_0xa270('0x1e')]+_0x44a893['limit'];var _0x29bd00;if(_0x28e8ca>=_0x35852c){_0x28e8ca=_0x35852c;_0x29bd00=0xc8;}else{_0x29bd00=0xce;}_0x635060[_0xa270('0x1c')](_0x29bd00);return _0x635060[_0xa270('0x22')]('Content-Range',_0x5d26e0+'-'+_0x28e8ca+'/'+_0x35852c)[_0xa270('0x23')](_0xfb2131);}return null;};}function patchUpdates(_0x13572d){return function(_0x26cb4f){try{jsonpatch[_0xa270('0x24')](_0x26cb4f,_0x13572d,!![]);}catch(_0x3fb1a5){return BPromise['reject'](_0x3fb1a5);}return _0x26cb4f[_0xa270('0x25')]();};}function saveUpdates(_0x32d515,_0xeaa63b){return function(_0x5d6e95){if(_0x5d6e95){return _0x5d6e95[_0xa270('0x26')](_0x32d515)['then'](function(_0x5e29aa){return _0x5e29aa;});}return null;};}function removeEntity(_0x593c13,_0x1a1b5c){return function(_0x1401ac){if(_0x1401ac){return _0x1401ac[_0xa270('0x27')]()[_0xa270('0x28')](function(){var _0x39433f=_0x1401ac[_0xa270('0x29')]({'plain':!![]});var _0x4d8b9d=_0xa270('0x2a');return db[_0xa270('0x2b')][_0xa270('0x27')]({'where':{'type':_0x4d8b9d,'resourceId':_0x39433f['id']}})[_0xa270('0x28')](function(){return _0x1401ac;});})[_0xa270('0x28')](function(){_0x593c13[_0xa270('0x1c')](0xcc)[_0xa270('0x1d')]();});}};}function handleEntityNotFound(_0x49d2bb,_0x9d23f1){return function(_0x3234be){if(!_0x3234be){_0x49d2bb[_0xa270('0x1b')](0x194);}return _0x3234be;};}function handleError(_0x80a10,_0x224d01){_0x224d01=_0x224d01||0x1f4;return function(_0x328fb7){logger['error'](_0x328fb7[_0xa270('0x2c')]);if(_0x328fb7[_0xa270('0x2d')]){delete _0x328fb7[_0xa270('0x2d')];}_0x80a10[_0xa270('0x1c')](_0x224d01)[_0xa270('0x2e')](_0x328fb7);};}exports[_0xa270('0x2f')]=function(_0x49c504,_0x117908){var _0x37f406={},_0x4d2dab={},_0x5a2f73={'count':0x0,'rows':[]};var _0x3c7b9b=_[_0xa270('0x30')](db[_0xa270('0x31')][_0xa270('0x32')],function(_0x3a46af){return{'name':_0x3a46af[_0xa270('0x33')],'type':_0x3a46af[_0xa270('0x34')][_0xa270('0x35')]};});_0x4d2dab['model']=_[_0xa270('0x30')](_0x3c7b9b,_0xa270('0x2d'));_0x4d2dab[_0xa270('0x36')]=_[_0xa270('0x37')](_0x49c504['query']);_0x4d2dab[_0xa270('0x38')]=_[_0xa270('0x39')](_0x4d2dab[_0xa270('0x3a')],_0x4d2dab[_0xa270('0x36')]);_0x37f406[_0xa270('0x3b')]=_[_0xa270('0x39')](_0x4d2dab['model'],qs[_0xa270('0x3c')](_0x49c504[_0xa270('0x36')][_0xa270('0x3c')]));_0x37f406[_0xa270('0x3b')]=_0x37f406[_0xa270('0x3b')]['length']?_0x37f406[_0xa270('0x3b')]:_0x4d2dab[_0xa270('0x3a')];if(!_0x49c504['query']['hasOwnProperty'](_0xa270('0x3d'))){_0x37f406[_0xa270('0x1f')]=qs[_0xa270('0x1f')](_0x49c504[_0xa270('0x36')]['limit']);_0x37f406[_0xa270('0x1e')]=qs[_0xa270('0x1e')](_0x49c504['query']['offset']);}_0x37f406[_0xa270('0x3e')]=qs[_0xa270('0x3f')](_0x49c504[_0xa270('0x36')][_0xa270('0x3f')]);_0x37f406[_0xa270('0x40')]=qs[_0xa270('0x38')](_[_0xa270('0x41')](_0x49c504[_0xa270('0x36')],_0x4d2dab[_0xa270('0x38')]),_0x3c7b9b);if(_0x49c504[_0xa270('0x36')][_0xa270('0x42')]){_0x37f406[_0xa270('0x40')]=_[_0xa270('0x43')](_0x37f406[_0xa270('0x40')],{'$or':_[_0xa270('0x30')](_0x3c7b9b,function(_0x1bc6cd){if(_0x1bc6cd[_0xa270('0x34')]!==_0xa270('0x44')){var _0x4e181e={};_0x4e181e[_0x1bc6cd['name']]={'$like':'%'+_0x49c504['query'][_0xa270('0x42')]+'%'};return _0x4e181e;}})});}_0x37f406=_[_0xa270('0x43')]({},_0x37f406,_0x49c504[_0xa270('0x45')]);var _0x1aa46a={'where':_0x37f406[_0xa270('0x40')]};return db[_0xa270('0x31')][_0xa270('0x21')](_0x1aa46a)['then'](function(_0x27ca53){_0x5a2f73[_0xa270('0x21')]=_0x27ca53;if(_0x49c504['query'][_0xa270('0x46')]){_0x37f406['include']=[{'all':!![]}];}return db[_0xa270('0x31')]['findAll'](_0x37f406);})['then'](function(_0x2ec5aa){_0x5a2f73[_0xa270('0x47')]=_0x2ec5aa;return _0x5a2f73;})[_0xa270('0x28')](respondWithFilteredResult(_0x117908,_0x37f406))['catch'](handleError(_0x117908,null));};exports[_0xa270('0x48')]=function(_0x326640,_0x309bdb){var _0x23e62c={'raw':!![],'where':{'id':_0x326640[_0xa270('0x49')]['id']}},_0x8f0401={};_0x8f0401[_0xa270('0x3a')]=_['keys'](db[_0xa270('0x31')][_0xa270('0x32')]);_0x8f0401[_0xa270('0x36')]=_[_0xa270('0x37')](_0x326640[_0xa270('0x36')]);_0x8f0401[_0xa270('0x38')]=_['intersection'](_0x8f0401['model'],_0x8f0401[_0xa270('0x36')]);_0x23e62c[_0xa270('0x3b')]=_[_0xa270('0x39')](_0x8f0401['model'],qs[_0xa270('0x3c')](_0x326640['query'][_0xa270('0x3c')]));_0x23e62c['attributes']=_0x23e62c[_0xa270('0x3b')][_0xa270('0x4a')]?_0x23e62c[_0xa270('0x3b')]:_0x8f0401[_0xa270('0x3a')];if(_0x326640[_0xa270('0x36')]['includeAll']){_0x23e62c[_0xa270('0x4b')]=[{'all':!![]}];}_0x23e62c=_[_0xa270('0x43')]({},_0x23e62c,_0x326640['options']);return db[_0xa270('0x31')][_0xa270('0x4c')](_0x23e62c)[_0xa270('0x28')](handleEntityNotFound(_0x309bdb,null))[_0xa270('0x28')](respondWithResult(_0x309bdb,null))[_0xa270('0x4d')](handleError(_0x309bdb,null));};exports[_0xa270('0x4e')]=function(_0x3c33d1,_0x18f17a){return db[_0xa270('0x31')][_0xa270('0x4e')](_0x3c33d1[_0xa270('0x4f')],{})[_0xa270('0x28')](function(_0x34b22c){var _0x5173b7=_0x3c33d1[_0xa270('0x50')]['get']({'plain':!![]});if(!_0x5173b7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5173b7['role']==='user'){var _0x56afc3=_0x34b22c[_0xa270('0x29')]({'plain':!![]});var _0x1ca948=_0xa270('0x2a');return db[_0xa270('0x51')]['find']({'where':{'name':_0x1ca948,'userProfileId':_0x5173b7[_0xa270('0x52')]},'raw':!![]})[_0xa270('0x28')](function(_0x4fdda0){if(_0x4fdda0&&_0x4fdda0[_0xa270('0x53')]===0x0){return db[_0xa270('0x2b')][_0xa270('0x4e')]({'name':_0x56afc3[_0xa270('0x2d')],'resourceId':_0x56afc3['id'],'type':_0x4fdda0[_0xa270('0x2d')],'sectionId':_0x4fdda0['id']},{})['then'](function(){return _0x34b22c;});}else{return _0x34b22c;}})[_0xa270('0x4d')](function(_0x384501){logger['error'](_0xa270('0x54'),_0x384501);throw _0x384501;});}return _0x34b22c;})[_0xa270('0x28')](respondWithResult(_0x18f17a,0xc9))[_0xa270('0x4d')](handleError(_0x18f17a,null));};exports[_0xa270('0x26')]=function(_0x1baac5,_0x334b91){if(_0x1baac5[_0xa270('0x4f')]['id']){delete _0x1baac5[_0xa270('0x4f')]['id'];}return db['Disposition'][_0xa270('0x4c')]({'where':{'id':_0x1baac5['params']['id']}})[_0xa270('0x28')](handleEntityNotFound(_0x334b91,null))[_0xa270('0x28')](saveUpdates(_0x1baac5[_0xa270('0x4f')],null))[_0xa270('0x28')](respondWithResult(_0x334b91,null))[_0xa270('0x4d')](handleError(_0x334b91,null));};exports[_0xa270('0x27')]=function(_0x4658d8,_0x245928){return db[_0xa270('0x31')][_0xa270('0x4c')]({'where':{'id':_0x4658d8[_0xa270('0x49')]['id']}})['then'](handleEntityNotFound(_0x245928,null))[_0xa270('0x28')](removeEntity(_0x245928,null))['catch'](handleError(_0x245928,null));};
\ No newline at end of file
index 9cc3f13..81a1637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65ca=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./disposition.attributes','exports','Disposition','tools_dispositions','name_voice','name','ListId','name_chat','name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','util'];(function(_0x3c4116,_0x8a1a3d){var _0x1bbdcd=function(_0x4ad059){while(--_0x4ad059){_0x3c4116['push'](_0x3c4116['shift']());}};_0x1bbdcd(++_0x8a1a3d);}(_0x65ca,0x140));var _0xa65c=function(_0x590deb,_0x249ee5){_0x590deb=_0x590deb-0x0;var _0x1b0022=_0x65ca[_0x590deb];return _0x1b0022;};'use strict';var _=require(_0xa65c('0x0'));var util=require(_0xa65c('0x1'));var logger=require(_0xa65c('0x2'))(_0xa65c('0x3'));var moment=require(_0xa65c('0x4'));var BPromise=require(_0xa65c('0x5'));var rp=require(_0xa65c('0x6'));var fs=require('fs');var path=require(_0xa65c('0x7'));var rimraf=require(_0xa65c('0x8'));var config=require('../../config/environment');var attributes=require(_0xa65c('0x9'));module[_0xa65c('0xa')]=function(_0x212ae8,_0x282c3){return _0x212ae8['define'](_0xa65c('0xb'),attributes,{'tableName':_0xa65c('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xa65c('0xd'),'fields':[_0xa65c('0xe'),_0xa65c('0xf')]},{'unique':!![],'name':_0xa65c('0x10'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':'name_mail','fields':[_0xa65c('0xe'),'MailAccountId']},{'unique':!![],'name':_0xa65c('0x11'),'fields':[_0xa65c('0xe'),'SmsAccountId']},{'unique':!![],'name':_0xa65c('0x12'),'fields':[_0xa65c('0xe'),_0xa65c('0x13')]},{'unique':!![],'name':_0xa65c('0x14'),'fields':[_0xa65c('0xe'),_0xa65c('0x15')]},{'unique':!![],'name':'name_whatsapp','fields':[_0xa65c('0xe'),_0xa65c('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7086=['name_voice','name','ChatWebsiteId','name_mail','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','./disposition.attributes','exports','define','tools_dispositions'];(function(_0x586fa2,_0x1a45bc){var _0x515be9=function(_0x4e90d5){while(--_0x4e90d5){_0x586fa2['push'](_0x586fa2['shift']());}};_0x515be9(++_0x1a45bc);}(_0x7086,0x181));var _0x6708=function(_0x1f6734,_0x39a504){_0x1f6734=_0x1f6734-0x0;var _0x513561=_0x7086[_0x1f6734];return _0x513561;};'use strict';var _=require(_0x6708('0x0'));var util=require(_0x6708('0x1'));var logger=require(_0x6708('0x2'))('api');var moment=require(_0x6708('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6708('0x4'));var rimraf=require(_0x6708('0x5'));var config=require(_0x6708('0x6'));var attributes=require(_0x6708('0x7'));module[_0x6708('0x8')]=function(_0x4a663e,_0x1daaa3){return _0x4a663e[_0x6708('0x9')]('Disposition',attributes,{'tableName':_0x6708('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x6708('0xb'),'fields':[_0x6708('0xc'),'ListId']},{'unique':!![],'name':'name_chat','fields':[_0x6708('0xc'),_0x6708('0xd')]},{'unique':!![],'name':_0x6708('0xe'),'fields':[_0x6708('0xc'),'MailAccountId']},{'unique':!![],'name':_0x6708('0xf'),'fields':[_0x6708('0xc'),_0x6708('0x10')]},{'unique':!![],'name':_0x6708('0x11'),'fields':[_0x6708('0xc'),_0x6708('0x12')]},{'unique':!![],'name':_0x6708('0x13'),'fields':[_0x6708('0xc'),_0x6708('0x14')]},{'unique':!![],'name':'name_whatsapp','fields':[_0x6708('0xc'),_0x6708('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
index 983ecc6..3742830 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(_0x580f4b,_0x5f17b4){var _0x1c13f7=function(_0x23827f){while(--_0x23827f){_0x580f4b['push'](_0x580f4b['shift']());}};_0x1c13f7(++_0x5f17b4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'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(_0x4f7b16,_0x1c60ba){var _0xab6171=function(_0x550a6e){while(--_0x550a6e){_0x4f7b16['push'](_0x4f7b16['shift']());}};_0xab6171(++_0x1c60ba);}(_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
index 6f05325..a0df1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8da5=['show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./disposition.controller','get','isAuthenticated','index','/:id'];(function(_0x5ad5ae,_0x11ed3c){var _0x237a25=function(_0x2b89b7){while(--_0x2b89b7){_0x5ad5ae['push'](_0x5ad5ae['shift']());}};_0x237a25(++_0x11ed3c);}(_0x8da5,0x198));var _0x58da=function(_0x10353b,_0x3ce7de){_0x10353b=_0x10353b-0x0;var _0x13cd47=_0x8da5[_0x10353b];return _0x13cd47;};'use strict';var multer=require(_0x58da('0x0'));var util=require(_0x58da('0x1'));var path=require(_0x58da('0x2'));var timeout=require(_0x58da('0x3'));var express=require(_0x58da('0x4'));var router=express[_0x58da('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x58da('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x58da('0x7'));router[_0x58da('0x8')]('/',auth[_0x58da('0x9')](),controller[_0x58da('0xa')]);router[_0x58da('0x8')](_0x58da('0xb'),auth['isAuthenticated'](),controller[_0x58da('0xc')]);router[_0x58da('0xd')]('/',auth[_0x58da('0x9')](),controller[_0x58da('0xe')]);router[_0x58da('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x58da('0x10')]);router[_0x58da('0x11')](_0x58da('0xb'),auth[_0x58da('0x9')](),controller[_0x58da('0x12')]);module[_0x58da('0x13')]=router;
\ No newline at end of file
+var _0xc37c=['multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports'];(function(_0x154906,_0x429a62){var _0x63d91a=function(_0x27d5e0){while(--_0x27d5e0){_0x154906['push'](_0x154906['shift']());}};_0x63d91a(++_0x429a62);}(_0xc37c,0x143));var _0xcc37=function(_0x240261,_0x4fe66c){_0x240261=_0x240261-0x0;var _0x45c332=_0xc37c[_0x240261];return _0x45c332;};'use strict';var multer=require(_0xcc37('0x0'));var util=require('util');var path=require(_0xcc37('0x1'));var timeout=require(_0xcc37('0x2'));var express=require(_0xcc37('0x3'));var router=express[_0xcc37('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcc37('0x5'));var config=require(_0xcc37('0x6'));var controller=require('./disposition.controller');router['get']('/',auth[_0xcc37('0x7')](),controller[_0xcc37('0x8')]);router['get'](_0xcc37('0x9'),auth['isAuthenticated'](),controller[_0xcc37('0xa')]);router[_0xcc37('0xb')]('/',auth[_0xcc37('0x7')](),controller[_0xcc37('0xc')]);router['put'](_0xcc37('0x9'),auth['isAuthenticated'](),controller[_0xcc37('0xd')]);router[_0xcc37('0xe')](_0xcc37('0x9'),auth['isAuthenticated'](),controller[_0xcc37('0xf')]);module[_0xcc37('0x10')]=router;
\ No newline at end of file
index 328c31d..4505611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08aa=['KHOMP','SIP','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','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','4800','7200','9600','12000','14400','2400','INTEGER','DADHI'];(function(_0x3e141c,_0x4ef0ab){var _0x3ca506=function(_0x3c338b){while(--_0x3c338b){_0x3e141c['push'](_0x3e141c['shift']());}};_0x3ca506(++_0x4ef0ab);}(_0x08aa,0x9a));var _0xa08a=function(_0x12e63f,_0x503969){_0x12e63f=_0x12e63f-0x0;var _0x5888f4=_0x08aa[_0x12e63f];return _0x5888f4;};'use strict';var Sequelize=require('sequelize');module[_0xa08a('0x0')]={'name':{'type':Sequelize[_0xa08a('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa08a('0x1')]},'ecm':{'type':Sequelize[_0xa08a('0x2')](_0xa08a('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0xa08a('0x1')],'defaultValue':_0xa08a('0x4')},'localstationid':{'type':Sequelize[_0xa08a('0x1')],'unique':_0xa08a('0x5')},'minrate':{'type':Sequelize[_0xa08a('0x2')]('2400',_0xa08a('0x6'),_0xa08a('0x7'),_0xa08a('0x8'),_0xa08a('0x9'),_0xa08a('0xa')),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0xa08a('0x2')](_0xa08a('0xb'),'4800',_0xa08a('0x7'),'9600','12000',_0xa08a('0xa')),'defaultValue':_0xa08a('0xa')},'modem':{'type':Sequelize[_0xa08a('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xa08a('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xa08a('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xa08a('0x2')]('SIP','IAX',_0xa08a('0xd'),_0xa08a('0xe')),'defaultValue':_0xa08a('0xf')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xa08a('0x10')],'defaultValue':function(){return _0xa08a('0x11');}},'notificationSound':{'type':Sequelize[_0xa08a('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa08a('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa08a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa08a('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa08a('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xa08a('0x12')],'defaultValue':![],'comment':_0xa08a('0x13'),'set':function(_0x38cde7){if(!_0x38cde7)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xa08a('0x14')]('mandatoryDisposition',_0x38cde7);}}};
\ No newline at end of file
+var _0x18c9=['mandatoryDisposition','sequelize','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','7200','9600','12000','4800','2400','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','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId'];(function(_0x78d11b,_0x1c2611){var _0x5f2e27=function(_0x58e6ce){while(--_0x58e6ce){_0x78d11b['push'](_0x78d11b['shift']());}};_0x5f2e27(++_0x1c2611);}(_0x18c9,0xd9));var _0x918c=function(_0x5b27da,_0x4a6532){_0x5b27da=_0x5b27da-0x0;var _0x3254f4=_0x18c9[_0x5b27da];return _0x3254f4;};'use strict';var Sequelize=require(_0x918c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x918c('0x1')]},'ecm':{'type':Sequelize[_0x918c('0x2')]('yes','no'),'defaultValue':_0x918c('0x3')},'headerinfo':{'type':Sequelize[_0x918c('0x1')],'defaultValue':_0x918c('0x4')},'localstationid':{'type':Sequelize[_0x918c('0x1')],'unique':'localstationid'},'minrate':{'type':Sequelize['ENUM']('2400','4800',_0x918c('0x5'),_0x918c('0x6'),_0x918c('0x7'),'14400'),'defaultValue':_0x918c('0x8')},'maxrate':{'type':Sequelize[_0x918c('0x2')](_0x918c('0x9'),_0x918c('0x8'),_0x918c('0x5'),_0x918c('0x6'),_0x918c('0x7'),_0x918c('0xa')),'defaultValue':_0x918c('0xa')},'modem':{'type':Sequelize[_0x918c('0x1')],'defaultValue':_0x918c('0xb')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x918c('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x918c('0x2')](_0x918c('0xd'),_0x918c('0xe'),_0x918c('0xf'),_0x918c('0x10')),'defaultValue':_0x918c('0xd')},'key':{'type':Sequelize[_0x918c('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x918c('0x11');}},'notificationSound':{'type':Sequelize[_0x918c('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x918c('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x918c('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x918c('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x918c('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x918c('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x918c('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x918c('0x12')],'defaultValue':![],'comment':_0x918c('0x14'),'set':function(_0x30f20d){if(!_0x30f20d)this[_0x918c('0x15')](_0x918c('0x16'),null);this[_0x918c('0x15')](_0x918c('0x17'),_0x30f20d);}}};
\ No newline at end of file
index fdaa772..0efcca4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47f5=['minrate','modem','FAXOPT(','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','VoiceExtension','bulkCreate','updateAccountApplications','omit','tech','key','createdAt','updatedAt','ListId','findById','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','fax','Send\x20Fax\x20failed','out','filename','Contact\x20not\x20found','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','spread','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','defaults','redis','localhost','./faxAccount.socket','jayson/promise','client','http','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','save','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','index','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','query','keys','filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','Pause','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','params','describe','addDisposition','Disposition','getDispositions','findOne','FaxAccountId','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','FaxInteraction','CmContact','Contact','User','Owner','fullname','Tag','Tags','color','tag','addApplications','transaction','sequelize','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','findAndCountAll','priority','finally','send','getApplications','context','exten','localstationid','app','system','description','Fax\x20Extension','appdata','push','Answer','Set','faxdetect','maxrate'];(function(_0x17264d,_0x1aea86){var _0x4f4507=function(_0x30be31){while(--_0x30be31){_0x17264d['push'](_0x17264d['shift']());}};_0x4f4507(++_0x1aea86);}(_0x47f5,0xf4));var _0x547f=function(_0x531e48,_0x4bb96b){_0x531e48=_0x531e48-0x0;var _0x202971=_0x47f5[_0x531e48];return _0x202971;};'use strict';var emlformat=require(_0x547f('0x0'));var rimraf=require(_0x547f('0x1'));var zipdir=require(_0x547f('0x2'));var jsonpatch=require(_0x547f('0x3'));var rp=require(_0x547f('0x4'));var moment=require(_0x547f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x547f('0x6'));var util=require(_0x547f('0x7'));var path=require(_0x547f('0x8'));var sox=require(_0x547f('0x9'));var csv=require(_0x547f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x547f('0xb'));var _=require(_0x547f('0xc'));var squel=require(_0x547f('0xd'));var crypto=require(_0x547f('0xe'));var jsforce=require(_0x547f('0xf'));var deskjs=require(_0x547f('0x10'));var toCsv=require(_0x547f('0xa'));var querystring=require('querystring');var Papa=require(_0x547f('0x11'));var Redis=require(_0x547f('0x12'));var authService=require(_0x547f('0x13'));var qs=require(_0x547f('0x14'));var as=require(_0x547f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x547f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x547f('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x547f('0x18')](config[_0x547f('0x19')],{'host':_0x547f('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x547f('0x19')]));require(_0x547f('0x1b'))['register'](socket);var jayson=require(_0x547f('0x1c'));var client=jayson[_0x547f('0x1d')][_0x547f('0x1e')]({'port':0x232c});var client9002=jayson[_0x547f('0x1d')][_0x547f('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x1acfe2,_0x48d51f,_0x2270ec,_0x4dc831){return new BPromise(function(_0x381bb6,_0x323339){var _0x2345ce=_0x4dc831||client;return _0x2345ce['request'](_0x1acfe2,_0x2270ec)[_0x547f('0x1f')](function(_0x5117ac){logger[_0x547f('0x20')](_0x547f('0x21'),_0x48d51f,_0x547f('0x22'));logger[_0x547f('0x23')](_0x547f('0x24'),_0x48d51f,'request\x20sent',JSON['stringify'](_0x5117ac));if(_0x5117ac[_0x547f('0x25')]){if(_0x5117ac[_0x547f('0x25')][_0x547f('0x26')]===0x1f4){logger[_0x547f('0x25')](_0x547f('0x21'),_0x48d51f,_0x5117ac['error'][_0x547f('0x27')]);return _0x323339(_0x5117ac[_0x547f('0x25')][_0x547f('0x27')]);}logger[_0x547f('0x25')](_0x547f('0x21'),_0x48d51f,_0x5117ac[_0x547f('0x25')][_0x547f('0x27')]);return _0x381bb6(_0x5117ac[_0x547f('0x25')]['message']);}else{logger[_0x547f('0x20')](_0x547f('0x21'),_0x48d51f,'request\x20sent');_0x381bb6(_0x5117ac[_0x547f('0x28')][_0x547f('0x27')]);}})['catch'](function(_0x281862){logger[_0x547f('0x25')](_0x547f('0x21'),_0x48d51f,_0x281862);_0x323339(_0x281862);});});}function respondWithStatusCode(_0x1b05d4,_0x1eeb51){_0x1eeb51=_0x1eeb51||0xcc;return function(_0x11c800){if(_0x11c800){return _0x1b05d4[_0x547f('0x29')](_0x1eeb51);}return _0x1b05d4[_0x547f('0x2a')](_0x1eeb51)[_0x547f('0x2b')]();};}function respondWithResult(_0x1dd3f9,_0x13e570){_0x13e570=_0x13e570||0xc8;return function(_0x5e927c){if(_0x5e927c){return _0x1dd3f9[_0x547f('0x2a')](_0x13e570)['json'](_0x5e927c);}};}function respondWithFilteredResult(_0x3ca596,_0x4889f8){return function(_0x64ffe9){if(_0x64ffe9){var _0x4aa7cc=typeof _0x4889f8[_0x547f('0x2c')]===_0x547f('0x2d')&&typeof _0x4889f8['limit']===_0x547f('0x2d');var _0x900c64=_0x64ffe9[_0x547f('0x2e')];var _0x350e82=_0x4aa7cc?0x0:_0x4889f8['offset'];var _0x21dce2=_0x4aa7cc?_0x64ffe9[_0x547f('0x2e')]:_0x4889f8[_0x547f('0x2c')]+_0x4889f8[_0x547f('0x2f')];var _0x41583f;if(_0x21dce2>=_0x900c64){_0x21dce2=_0x900c64;_0x41583f=0xc8;}else{_0x41583f=0xce;}_0x3ca596[_0x547f('0x2a')](_0x41583f);return _0x3ca596[_0x547f('0x30')](_0x547f('0x31'),_0x350e82+'-'+_0x21dce2+'/'+_0x900c64)[_0x547f('0x32')](_0x64ffe9);}return null;};}function patchUpdates(_0x19018d){return function(_0x2c9a39){try{jsonpatch['apply'](_0x2c9a39,_0x19018d,!![]);}catch(_0x3fb058){return BPromise['reject'](_0x3fb058);}return _0x2c9a39[_0x547f('0x33')]();};}function saveUpdates(_0x56dc39,_0x48895d){return function(_0x468f9b){if(_0x468f9b){return _0x468f9b[_0x547f('0x34')](_0x56dc39)[_0x547f('0x1f')](function(_0x563d6c){return _0x563d6c;});}return null;};}function removeEntity(_0x2412df,_0x2e8cb1){return function(_0x12ec07){if(_0x12ec07){return _0x12ec07[_0x547f('0x35')]()[_0x547f('0x1f')](function(){var _0x2af13d=_0x12ec07[_0x547f('0x36')]({'plain':!![]});var _0xa2a9b3=_0x547f('0x37');return db[_0x547f('0x38')]['destroy']({'where':{'type':_0xa2a9b3,'resourceId':_0x2af13d['id']}})[_0x547f('0x1f')](function(){return _0x12ec07;});})[_0x547f('0x1f')](function(){_0x2412df[_0x547f('0x2a')](0xcc)[_0x547f('0x2b')]();});}};}function handleEntityNotFound(_0x238758,_0x48407d){return function(_0x29096b){if(!_0x29096b){_0x238758['sendStatus'](0x194);}return _0x29096b;};}function handleError(_0xf5ae9,_0x4f99e8){_0x4f99e8=_0x4f99e8||0x1f4;return function(_0x1e5ccb){logger['error'](_0x1e5ccb[_0x547f('0x39')]);if(_0x1e5ccb[_0x547f('0x3a')]){delete _0x1e5ccb[_0x547f('0x3a')];}_0xf5ae9[_0x547f('0x2a')](_0x4f99e8)['send'](_0x1e5ccb);};}exports[_0x547f('0x3b')]=function(_0x2422b6,_0x263cb7){var _0x47afde={'include':[{'model':db['Pause'],'as':_0x547f('0x3c')}]},_0x24b61e={},_0x1d2cdb={'count':0x0,'rows':[]};var _0x55f5df=_[_0x547f('0x3d')](db[_0x547f('0x3e')][_0x547f('0x3f')],function(_0x39fd8a){return{'name':_0x39fd8a[_0x547f('0x40')],'type':_0x39fd8a[_0x547f('0x41')]['key']};});_0x24b61e['model']=_[_0x547f('0x3d')](_0x55f5df,_0x547f('0x3a'));_0x24b61e[_0x547f('0x42')]=_[_0x547f('0x43')](_0x2422b6[_0x547f('0x42')]);_0x24b61e[_0x547f('0x44')]=_[_0x547f('0x45')](_0x24b61e['model'],_0x24b61e[_0x547f('0x42')]);_0x47afde['attributes']=_[_0x547f('0x45')](_0x24b61e['model'],qs['fields'](_0x2422b6[_0x547f('0x42')][_0x547f('0x46')]));_0x47afde[_0x547f('0x47')]=_0x47afde['attributes'][_0x547f('0x48')]?_0x47afde[_0x547f('0x47')]:_0x24b61e[_0x547f('0x49')];if(!_0x2422b6[_0x547f('0x42')][_0x547f('0x4a')](_0x547f('0x4b'))){_0x47afde[_0x547f('0x2f')]=qs[_0x547f('0x2f')](_0x2422b6[_0x547f('0x42')][_0x547f('0x2f')]);_0x47afde[_0x547f('0x2c')]=qs[_0x547f('0x2c')](_0x2422b6[_0x547f('0x42')][_0x547f('0x2c')]);}_0x47afde[_0x547f('0x4c')]=qs[_0x547f('0x4d')](_0x2422b6['query'][_0x547f('0x4d')]);_0x47afde[_0x547f('0x4e')]=qs['filters'](_[_0x547f('0x4f')](_0x2422b6[_0x547f('0x42')],_0x24b61e[_0x547f('0x44')]),_0x55f5df);if(_0x2422b6['query'][_0x547f('0x50')]){_0x47afde[_0x547f('0x4e')]=_[_0x547f('0x51')](_0x47afde[_0x547f('0x4e')],{'$or':_[_0x547f('0x3d')](_0x55f5df,function(_0x224d35){if(_0x224d35[_0x547f('0x41')]!=='VIRTUAL'){var _0x59236b={};_0x59236b[_0x224d35[_0x547f('0x3a')]]={'$like':'%'+_0x2422b6[_0x547f('0x42')][_0x547f('0x50')]+'%'};return _0x59236b;}})});}_0x47afde=_[_0x547f('0x51')]({},_0x47afde,_0x2422b6[_0x547f('0x52')]);var _0x33a754={'where':_0x47afde[_0x547f('0x4e')]};return db[_0x547f('0x3e')]['count'](_0x33a754)['then'](function(_0x16cd89){_0x1d2cdb['count']=_0x16cd89;if(_0x2422b6[_0x547f('0x42')][_0x547f('0x53')]){_0x47afde[_0x547f('0x54')]=[{'all':!![]}];}return db[_0x547f('0x3e')][_0x547f('0x55')](_0x47afde);})['then'](function(_0x1161b0){_0x1d2cdb[_0x547f('0x56')]=_0x1161b0;return _0x1d2cdb;})['then'](respondWithFilteredResult(_0x263cb7,_0x47afde))['catch'](handleError(_0x263cb7,null));};exports[_0x547f('0x57')]=function(_0x4a144a,_0x4ac21e){var _0x1f85c0={'raw':![],'where':{'id':_0x4a144a['params']['id']},'include':[{'model':db[_0x547f('0x58')],'as':_0x547f('0x3c')}]},_0x2ab3ea={};_0x2ab3ea[_0x547f('0x49')]=_[_0x547f('0x43')](db[_0x547f('0x3e')][_0x547f('0x3f')]);_0x2ab3ea[_0x547f('0x42')]=_[_0x547f('0x43')](_0x4a144a[_0x547f('0x42')]);_0x2ab3ea[_0x547f('0x44')]=_['intersection'](_0x2ab3ea[_0x547f('0x49')],_0x2ab3ea[_0x547f('0x42')]);_0x1f85c0['attributes']=_[_0x547f('0x45')](_0x2ab3ea[_0x547f('0x49')],qs[_0x547f('0x46')](_0x4a144a[_0x547f('0x42')][_0x547f('0x46')]));_0x1f85c0[_0x547f('0x47')]=_0x1f85c0[_0x547f('0x47')][_0x547f('0x48')]?_0x1f85c0['attributes']:_0x2ab3ea['model'];if(_0x4a144a[_0x547f('0x42')][_0x547f('0x53')]){_0x1f85c0['include']=[{'all':!![]}];}_0x1f85c0=_[_0x547f('0x51')]({},_0x1f85c0,_0x4a144a[_0x547f('0x52')]);return db['FaxAccount'][_0x547f('0x59')](_0x1f85c0)[_0x547f('0x1f')](handleEntityNotFound(_0x4ac21e,null))['then'](respondWithResult(_0x4ac21e,null))['catch'](handleError(_0x4ac21e,null));};exports[_0x547f('0x5a')]=function(_0x24d5a4,_0x2891c2){return db[_0x547f('0x3e')][_0x547f('0x5a')](_0x24d5a4[_0x547f('0x5b')],{})[_0x547f('0x1f')](function(_0x4af0a5){var _0x354193=_0x24d5a4[_0x547f('0x5c')][_0x547f('0x36')]({'plain':!![]});if(!_0x354193)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x354193[_0x547f('0x5d')]===_0x547f('0x5c')){var _0x2cdf7a=_0x4af0a5[_0x547f('0x36')]({'plain':!![]});var _0x518cea=_0x547f('0x37');return db[_0x547f('0x5e')][_0x547f('0x59')]({'where':{'name':_0x518cea,'userProfileId':_0x354193[_0x547f('0x5f')]},'raw':!![]})[_0x547f('0x1f')](function(_0x32a656){if(_0x32a656&&_0x32a656[_0x547f('0x60')]===0x0){return db[_0x547f('0x38')][_0x547f('0x5a')]({'name':_0x2cdf7a[_0x547f('0x3a')],'resourceId':_0x2cdf7a['id'],'type':_0x32a656['name'],'sectionId':_0x32a656['id']},{})['then'](function(){return _0x4af0a5;});}else{return _0x4af0a5;}})['catch'](function(_0x3acc93){logger[_0x547f('0x25')](_0x547f('0x61'),_0x3acc93);throw _0x3acc93;});}return _0x4af0a5;})[_0x547f('0x1f')](respondWithResult(_0x2891c2,0xc9))[_0x547f('0x62')](handleError(_0x2891c2,null));};exports[_0x547f('0x34')]=function(_0x16301e,_0x840439){if(_0x16301e[_0x547f('0x5b')]['id']){delete _0x16301e[_0x547f('0x5b')]['id'];}return db['FaxAccount'][_0x547f('0x59')]({'where':{'id':_0x16301e[_0x547f('0x63')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x547f('0x1f')](handleEntityNotFound(_0x840439,null))['then'](saveUpdates(_0x16301e['body'],null))[_0x547f('0x1f')](respondWithResult(_0x840439,null))[_0x547f('0x62')](handleError(_0x840439,null));};exports['destroy']=function(_0x594e65,_0x371513){return db[_0x547f('0x3e')]['find']({'where':{'id':_0x594e65[_0x547f('0x63')]['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x371513,null))[_0x547f('0x1f')](removeEntity(_0x371513,null))[_0x547f('0x62')](handleError(_0x371513,null));};exports['describe']=function(_0xc017cc,_0x267164){return db[_0x547f('0x3e')][_0x547f('0x64')]()[_0x547f('0x1f')](respondWithResult(_0x267164,null))[_0x547f('0x62')](handleError(_0x267164,null));};exports[_0x547f('0x65')]=function(_0x10d612,_0x3d43ea,_0x5048f9){if(_0x10d612[_0x547f('0x5b')]['id']){delete _0x10d612[_0x547f('0x5b')]['id'];}return db[_0x547f('0x3e')][_0x547f('0x59')]({'where':{'id':_0x10d612[_0x547f('0x63')]['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x3d43ea,null))[_0x547f('0x1f')](function(_0x492ed6){if(_0x492ed6){_0x10d612['body']['FaxAccountId']=_0x492ed6['id'];return db[_0x547f('0x66')][_0x547f('0x5a')](_0x10d612[_0x547f('0x5b')]);}})['then'](respondWithResult(_0x3d43ea,null))[_0x547f('0x62')](handleError(_0x3d43ea,null));};exports[_0x547f('0x67')]=function(_0x108b56,_0x13a17b,_0x14f853){var _0x5cb88c={'raw':![],'where':{}};var _0x47db23={};var _0x28df50={'count':0x0,'rows':[]};return db[_0x547f('0x3e')][_0x547f('0x68')]({'where':{'id':_0x108b56['params']['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x13a17b,null))[_0x547f('0x1f')](function(_0x3bb345){if(_0x3bb345){_0x47db23[_0x547f('0x49')]=_[_0x547f('0x43')](db[_0x547f('0x66')]['rawAttributes']);_0x47db23[_0x547f('0x42')]=_[_0x547f('0x43')](_0x108b56[_0x547f('0x42')]);_0x47db23['filters']=_['intersection'](_0x47db23[_0x547f('0x49')],_0x47db23[_0x547f('0x42')]);_0x5cb88c['attributes']=_[_0x547f('0x45')](_0x47db23[_0x547f('0x49')],qs['fields'](_0x108b56[_0x547f('0x42')]['fields']));_0x5cb88c[_0x547f('0x47')]=_0x5cb88c[_0x547f('0x47')][_0x547f('0x48')]?_0x5cb88c[_0x547f('0x47')]:_0x47db23[_0x547f('0x49')];if(!_0x108b56['query']['hasOwnProperty'](_0x547f('0x4b'))){_0x5cb88c[_0x547f('0x2f')]=qs[_0x547f('0x2f')](_0x108b56[_0x547f('0x42')][_0x547f('0x2f')]);_0x5cb88c[_0x547f('0x2c')]=qs[_0x547f('0x2c')](_0x108b56['query'][_0x547f('0x2c')]);}_0x5cb88c[_0x547f('0x4c')]=qs[_0x547f('0x4d')](_0x108b56[_0x547f('0x42')]['sort']);_0x5cb88c[_0x547f('0x4e')]=qs[_0x547f('0x44')](_[_0x547f('0x4f')](_0x108b56['query'],_0x47db23[_0x547f('0x44')]));_0x5cb88c['where'][_0x547f('0x69')]=_0x3bb345['id'];if(_0x108b56[_0x547f('0x42')][_0x547f('0x50')]){_0x5cb88c['where']=_[_0x547f('0x51')](_0x5cb88c[_0x547f('0x4e')],{'$or':_[_0x547f('0x3d')](_0x5cb88c['attributes'],function(_0x41de17){var _0x47cdf5={};_0x47cdf5[_0x41de17]={'$like':'%'+_0x108b56[_0x547f('0x42')][_0x547f('0x50')]+'%'};return _0x47cdf5;})});}_0x5cb88c=_[_0x547f('0x51')]({},_0x5cb88c,_0x108b56['options']);return db[_0x547f('0x66')][_0x547f('0x2e')]({'where':_0x5cb88c['where']})[_0x547f('0x1f')](function(_0x2b7f97){_0x28df50['count']=_0x2b7f97;if(_0x108b56[_0x547f('0x42')][_0x547f('0x53')]){_0x5cb88c['include']=[{'all':!![]}];}return db['Disposition'][_0x547f('0x55')](_0x5cb88c);})[_0x547f('0x1f')](function(_0x426560){_0x28df50[_0x547f('0x56')]=_0x426560;return _0x28df50;});}})['then'](respondWithFilteredResult(_0x13a17b,_0x5cb88c))[_0x547f('0x62')](handleError(_0x13a17b,null));};exports[_0x547f('0x6a')]=function(_0x55b79d,_0x20c741,_0x202ecf){return db[_0x547f('0x3e')]['find']({'where':{'id':_0x55b79d[_0x547f('0x63')]['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x20c741,null))['then'](function(_0x12abec){if(_0x12abec){return _0x12abec[_0x547f('0x6a')](_0x55b79d[_0x547f('0x42')][_0x547f('0x6b')]);}})['then'](respondWithStatusCode(_0x20c741,null))[_0x547f('0x62')](handleError(_0x20c741,null));};exports[_0x547f('0x6c')]=function(_0x35b24c,_0x59ef99,_0x56ae63){if(_0x35b24c[_0x547f('0x5b')]['id']){delete _0x35b24c[_0x547f('0x5b')]['id'];}return db[_0x547f('0x3e')][_0x547f('0x59')]({'where':{'id':_0x35b24c[_0x547f('0x63')]['id']}})['then'](handleEntityNotFound(_0x59ef99,null))[_0x547f('0x1f')](function(_0x319029){if(_0x319029){_0x35b24c['body'][_0x547f('0x69')]=_0x319029['id'];return db['CannedAnswer'][_0x547f('0x5a')](_0x35b24c['body']);}})['then'](respondWithResult(_0x59ef99,null))[_0x547f('0x62')](handleError(_0x59ef99,null));};exports[_0x547f('0x6d')]=function(_0x3d8b54,_0x173bc9,_0x159a77){var _0xc30ee6={'raw':![],'where':{}};var _0x448894={};var _0x685682={'count':0x0,'rows':[]};return db[_0x547f('0x3e')][_0x547f('0x68')]({'where':{'id':_0x3d8b54['params']['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x173bc9,null))[_0x547f('0x1f')](function(_0x4d5a7c){if(_0x4d5a7c){_0x448894[_0x547f('0x49')]=_[_0x547f('0x43')](db[_0x547f('0x6e')][_0x547f('0x3f')]);_0x448894[_0x547f('0x42')]=_['keys'](_0x3d8b54[_0x547f('0x42')]);_0x448894['filters']=_[_0x547f('0x45')](_0x448894['model'],_0x448894[_0x547f('0x42')]);_0xc30ee6['attributes']=_['intersection'](_0x448894[_0x547f('0x49')],qs[_0x547f('0x46')](_0x3d8b54[_0x547f('0x42')][_0x547f('0x46')]));_0xc30ee6[_0x547f('0x47')]=_0xc30ee6['attributes'][_0x547f('0x48')]?_0xc30ee6[_0x547f('0x47')]:_0x448894[_0x547f('0x49')];if(!_0x3d8b54[_0x547f('0x42')][_0x547f('0x4a')](_0x547f('0x4b'))){_0xc30ee6[_0x547f('0x2f')]=qs[_0x547f('0x2f')](_0x3d8b54[_0x547f('0x42')]['limit']);_0xc30ee6['offset']=qs[_0x547f('0x2c')](_0x3d8b54[_0x547f('0x42')][_0x547f('0x2c')]);}_0xc30ee6[_0x547f('0x4c')]=qs['sort'](_0x3d8b54[_0x547f('0x42')][_0x547f('0x4d')]);_0xc30ee6[_0x547f('0x4e')]=qs['filters'](_[_0x547f('0x4f')](_0x3d8b54[_0x547f('0x42')],_0x448894['filters']));_0xc30ee6[_0x547f('0x4e')][_0x547f('0x69')]=_0x4d5a7c['id'];if(_0x3d8b54[_0x547f('0x42')][_0x547f('0x50')]){_0xc30ee6[_0x547f('0x4e')]=_[_0x547f('0x51')](_0xc30ee6[_0x547f('0x4e')],{'$or':_['map'](_0xc30ee6[_0x547f('0x47')],function(_0x32d4a2){var _0x547a18={};_0x547a18[_0x32d4a2]={'$like':'%'+_0x3d8b54['query'][_0x547f('0x50')]+'%'};return _0x547a18;})});}_0xc30ee6=_[_0x547f('0x51')]({},_0xc30ee6,_0x3d8b54[_0x547f('0x52')]);return db[_0x547f('0x6e')][_0x547f('0x2e')]({'where':_0xc30ee6[_0x547f('0x4e')]})[_0x547f('0x1f')](function(_0x366ae2){_0x685682[_0x547f('0x2e')]=_0x366ae2;if(_0x3d8b54[_0x547f('0x42')][_0x547f('0x53')]){_0xc30ee6[_0x547f('0x54')]=[{'all':!![]}];}return db[_0x547f('0x6e')]['findAll'](_0xc30ee6);})[_0x547f('0x1f')](function(_0x4f6963){_0x685682[_0x547f('0x56')]=_0x4f6963;return _0x685682;});}})[_0x547f('0x1f')](respondWithFilteredResult(_0x173bc9,_0xc30ee6))[_0x547f('0x62')](handleError(_0x173bc9,null));};exports[_0x547f('0x6f')]=function(_0x394133,_0x261dd8,_0x137dd4){return db[_0x547f('0x3e')][_0x547f('0x59')]({'where':{'id':_0x394133[_0x547f('0x63')]['id']}})['then'](handleEntityNotFound(_0x261dd8,null))[_0x547f('0x1f')](function(_0x2f3ea3){if(_0x2f3ea3){return _0x2f3ea3[_0x547f('0x6f')](_0x394133['query']['ids']);}})[_0x547f('0x1f')](respondWithStatusCode(_0x261dd8,null))[_0x547f('0x62')](handleError(_0x261dd8,null));};exports['addInteraction']=function(_0x3dbade,_0x52a1b7,_0x7ca349){return db['FaxInteraction'][_0x547f('0x59')]({'where':{'id':_0x3dbade[_0x547f('0x63')]['id']}})['then'](handleEntityNotFound(_0x52a1b7,null))[_0x547f('0x1f')](function(_0x532bcd){if(_0x532bcd){return _0x532bcd['addInteraction'](_0x3dbade['body'][_0x547f('0x6b')],_['omit'](_0x3dbade[_0x547f('0x5b')],[_0x547f('0x6b'),'id'])||{});}})[_0x547f('0x1f')](respondWithResult(_0x52a1b7,null))[_0x547f('0x62')](handleError(_0x52a1b7,null));};exports['getInteractions']=function(_0x1aafe6,_0x2f97ea,_0x4e0c58){var _0x1e8241={'raw':![],'where':{}};var _0x24a177={};var _0xb7cd12={'count':0x0,'rows':[]};return db[_0x547f('0x3e')][_0x547f('0x68')]({'where':{'id':_0x1aafe6[_0x547f('0x63')]['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x2f97ea,null))[_0x547f('0x1f')](function(_0x49c20a){if(_0x49c20a){_0x24a177[_0x547f('0x49')]=_[_0x547f('0x43')](db[_0x547f('0x70')][_0x547f('0x3f')]);_0x24a177[_0x547f('0x42')]=_['keys'](_0x1aafe6[_0x547f('0x42')]);_0x24a177['filters']=_[_0x547f('0x45')](_0x24a177[_0x547f('0x49')],_0x24a177[_0x547f('0x42')]);_0x1e8241[_0x547f('0x47')]=_[_0x547f('0x45')](_0x24a177[_0x547f('0x49')],qs[_0x547f('0x46')](_0x1aafe6[_0x547f('0x42')][_0x547f('0x46')]));_0x1e8241[_0x547f('0x47')]=_0x1e8241[_0x547f('0x47')][_0x547f('0x48')]?_0x1e8241['attributes']:_0x24a177[_0x547f('0x49')];if(!_0x1aafe6[_0x547f('0x42')][_0x547f('0x4a')]('nolimit')){_0x1e8241[_0x547f('0x2f')]=qs['limit'](_0x1aafe6[_0x547f('0x42')][_0x547f('0x2f')]);_0x1e8241[_0x547f('0x2c')]=qs[_0x547f('0x2c')](_0x1aafe6[_0x547f('0x42')][_0x547f('0x2c')]);}_0x1e8241[_0x547f('0x4c')]=qs[_0x547f('0x4d')](_0x1aafe6[_0x547f('0x42')]['sort']);_0x1e8241[_0x547f('0x4e')]=qs[_0x547f('0x44')](_[_0x547f('0x4f')](_0x1aafe6['query'],_0x24a177[_0x547f('0x44')]));_0x1e8241[_0x547f('0x4e')][_0x547f('0x69')]=_0x49c20a['id'];if(_0x1aafe6[_0x547f('0x42')][_0x547f('0x50')]){_0x1e8241[_0x547f('0x4e')]=_[_0x547f('0x51')](_0x1e8241[_0x547f('0x4e')],{'$or':_[_0x547f('0x3d')](_0x1e8241[_0x547f('0x47')],function(_0x290b0d){var _0x291654={};_0x291654[_0x290b0d]={'$like':'%'+_0x1aafe6[_0x547f('0x42')][_0x547f('0x50')]+'%'};return _0x291654;})});}_0x1e8241=_['merge']({},_0x1e8241,_0x1aafe6[_0x547f('0x52')]);return db[_0x547f('0x70')][_0x547f('0x2e')]({'where':_0x1e8241[_0x547f('0x4e')]})[_0x547f('0x1f')](function(_0xca1c7f){_0xb7cd12[_0x547f('0x2e')]=_0xca1c7f;if(_0x1aafe6['query']['includeAll']){_0x1e8241[_0x547f('0x54')]=[{'model':db[_0x547f('0x71')],'as':_0x547f('0x72'),'required':![]},{'model':db[_0x547f('0x73')],'as':_0x547f('0x74'),'attributes':['name',_0x547f('0x75'),'internal'],'required':![]},{'model':db[_0x547f('0x76')],'as':_0x547f('0x77'),'attributes':['id',_0x547f('0x3a'),_0x547f('0x78')],'where':_0x1aafe6[_0x547f('0x42')]['tag']?{'id':_0x1aafe6[_0x547f('0x42')]['tag']}:undefined,'required':_0x1aafe6[_0x547f('0x42')][_0x547f('0x79')]?!![]:![]}];}return db[_0x547f('0x70')][_0x547f('0x55')](_0x1e8241);})[_0x547f('0x1f')](function(_0x574211){_0xb7cd12[_0x547f('0x56')]=_0x574211;return _0xb7cd12;});}})[_0x547f('0x1f')](respondWithFilteredResult(_0x2f97ea,_0x1e8241))['catch'](handleError(_0x2f97ea,null));};exports[_0x547f('0x7a')]=function(_0x482a63,_0x299252){var _0x4168a8=_0x482a63[_0x547f('0x63')]['id'];var _0x2791ce=_0x482a63[_0x547f('0x5b')];var _0x1edc2a=0xc8;var _0x3b6b34=null;return db['sequelize'][_0x547f('0x7b')]({'isolationLevel':db[_0x547f('0x7c')]['Transaction'][_0x547f('0x7d')][_0x547f('0x7e')]},function(_0x1d8f25){return db['FaxAccount'][_0x547f('0x68')]({'where':{'id':_0x4168a8},'transaction':_0x1d8f25})[_0x547f('0x1f')](function(_0x5480b1){if(_0x5480b1){return db['FaxApplication'][_0x547f('0x35')]({'where':{'FaxAccountId':_0x4168a8},'transaction':_0x1d8f25})[_0x547f('0x1f')](function(){var _0x58a943=_[_0x547f('0x3d')](_0x2791ce,function(_0x38038d){_0x38038d[_0x547f('0x69')]=_0x4168a8;return _0x38038d;});return db[_0x547f('0x7f')]['bulkCreate'](_0x58a943,{'transaction':_0x1d8f25});});}else{_0x1edc2a=0x194;_0x3b6b34=[];}});})[_0x547f('0x1f')](function(){if(_0x1edc2a!==0x194){return db['FaxApplication'][_0x547f('0x80')]({'where':{'FaxAccountId':_0x4168a8},'order':_0x547f('0x81')})[_0x547f('0x1f')](function(_0x288aa5){_0x3b6b34=_0x288aa5;});}})[_0x547f('0x62')](function(_0x90b7e6){_0x1edc2a=0x1f4;logger[_0x547f('0x25')](_0x90b7e6['stack']);if(_0x90b7e6[_0x547f('0x3a')]){delete _0x90b7e6[_0x547f('0x3a')];}_0x3b6b34=_0x90b7e6;})[_0x547f('0x82')](function(){if(_0x3b6b34===null){_0x299252[_0x547f('0x29')](_0x1edc2a);}else{if(_0x1edc2a===0x1f4){_0x299252['status'](_0x1edc2a)[_0x547f('0x83')](_0x3b6b34);}else{_0x299252['status'](_0x1edc2a)['json'](_0x3b6b34);}}});};exports['getApplications']=function(_0x744322,_0x1b3b76,_0x49f0c4){var _0x234549={};var _0x46ccb1={};var _0x6e373;var _0x35a029;return db['FaxAccount'][_0x547f('0x68')]({'where':{'id':_0x744322['params']['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x1b3b76,null))[_0x547f('0x1f')](function(_0x4adc98){if(_0x4adc98){_0x6e373=_0x4adc98;_0x46ccb1[_0x547f('0x49')]=_[_0x547f('0x43')](db[_0x547f('0x7f')]['rawAttributes']);_0x46ccb1['query']=_[_0x547f('0x43')](_0x744322[_0x547f('0x42')]);_0x46ccb1['filters']=_['intersection'](_0x46ccb1[_0x547f('0x49')],_0x46ccb1[_0x547f('0x42')]);_0x234549[_0x547f('0x47')]=_['intersection'](_0x46ccb1[_0x547f('0x49')],qs['fields'](_0x744322['query'][_0x547f('0x46')]));_0x234549['attributes']=_0x234549[_0x547f('0x47')][_0x547f('0x48')]?_0x234549[_0x547f('0x47')]:_0x46ccb1[_0x547f('0x49')];_0x234549[_0x547f('0x4c')]=qs['sort'](_0x744322[_0x547f('0x42')]['sort']);_0x234549[_0x547f('0x4e')]=qs['filters'](_[_0x547f('0x4f')](_0x744322[_0x547f('0x42')],_0x46ccb1[_0x547f('0x44')]));if(_0x744322['query'][_0x547f('0x50')]){_0x234549[_0x547f('0x4e')]=_[_0x547f('0x51')](_0x234549[_0x547f('0x4e')],{'$or':_[_0x547f('0x3d')](_0x234549[_0x547f('0x47')],function(_0x3b0217){var _0x10b2ce={};_0x10b2ce[_0x3b0217]={'$like':'%'+_0x744322[_0x547f('0x42')][_0x547f('0x50')]+'%'};return _0x10b2ce;})});}_0x234549=_[_0x547f('0x51')]({},_0x234549,_0x744322['options']);return _0x6e373[_0x547f('0x84')](_0x234549);}})['then'](function(_0x2e42fb){if(_0x2e42fb){_0x35a029=_0x2e42fb[_0x547f('0x48')];if(!_0x744322[_0x547f('0x42')]['hasOwnProperty'](_0x547f('0x4b'))){_0x234549[_0x547f('0x2f')]=qs[_0x547f('0x2f')](_0x744322['query'][_0x547f('0x2f')]);_0x234549['offset']=qs[_0x547f('0x2c')](_0x744322[_0x547f('0x42')][_0x547f('0x2c')]);}return _0x6e373[_0x547f('0x84')](_0x234549);}})[_0x547f('0x1f')](function(_0x693b7){if(_0x693b7){return _0x693b7?{'count':_0x35a029,'rows':_0x693b7}:null;}})[_0x547f('0x1f')](respondWithResult(_0x1b3b76,null))[_0x547f('0x62')](handleError(_0x1b3b76,null));};function Extension(_0xada5e,_0x289915,_0x2ac1dc,_0x359e65){this[_0x547f('0x85')]='from-voip-provider';this[_0x547f('0x86')]=_0xada5e[_0x547f('0x87')];this[_0x547f('0x88')]=_0x359e65;this[_0x547f('0x41')]=_0x547f('0x89');this[_0x547f('0x8a')]=_0x547f('0x8b');this['FaxAccountId']=_0xada5e['id'];this[_0x547f('0x81')]=_0x289915;this[_0x547f('0x8c')]=_0x2ac1dc;}function createExtensionsReciveFax(_0x4f5a98){var _0x5c8323=0x1;var _0x3ac2ac=[];_0x3ac2ac[_0x547f('0x8d')](new Extension(_0x4f5a98,_0x5c8323,'',_0x547f('0x8e')));_0x5c8323+=0x1;_0x3ac2ac[_0x547f('0x8d')](new Extension(_0x4f5a98,_0x5c8323,'CDR(type)=inbound-fax',_0x547f('0x8f')));_0x5c8323+=0x1;for(var _0x1d0c87 in _0x4f5a98){if(_0x4f5a98['hasOwnProperty'](_0x1d0c87)&&(_0x1d0c87==='ecm'||_0x1d0c87===_0x547f('0x87')||_0x1d0c87==='gateway'||_0x1d0c87===_0x547f('0x90')||_0x1d0c87==='headerinfo'||_0x1d0c87===_0x547f('0x91')||_0x1d0c87===_0x547f('0x92')||_0x1d0c87===_0x547f('0x93')||_0x1d0c87==='t38timeout')){_0x3ac2ac[_0x547f('0x8d')](new Extension(_0x4f5a98,_0x5c8323,_0x547f('0x94')+_0x1d0c87+')='+_0x4f5a98[_0x1d0c87],_0x547f('0x8f')));_0x5c8323+=0x1;}}_0x3ac2ac[_0x547f('0x8d')](new Extension(_0x4f5a98,_0x5c8323,'6','Wait'));_0x5c8323+=0x1;_0x3ac2ac[_0x547f('0x8d')](new Extension(_0x4f5a98,_0x5c8323,_0x547f('0x95'),_0x547f('0x96')));_0x5c8323=0x0;return _0x3ac2ac;}exports['addAccountApplications']=function(_0x507d0c,_0x553140,_0x461d1a){var _0x525d55;return db[_0x547f('0x7c')][_0x547f('0x7b')](function(_0x452f0e){return db[_0x547f('0x3e')][_0x547f('0x5a')](_0x507d0c['body'],{'transaction':_0x452f0e})[_0x547f('0x1f')](function(_0x1b9f48){_0x525d55=_0x1b9f48[_0x547f('0x36')]({'plain':!![]});return db[_0x547f('0x97')][_0x547f('0x98')](createExtensionsReciveFax(_0x525d55),{'transaction':_0x452f0e});});})[_0x547f('0x1f')](function(){return _0x525d55;})[_0x547f('0x1f')](respondWithResult(_0x553140,null))[_0x547f('0x62')](handleError(_0x553140,null));};exports[_0x547f('0x99')]=function(_0x3db545,_0x494b7b,_0x2421aa){var _0x93416e;return db[_0x547f('0x7c')][_0x547f('0x7b')](function(_0x34aab5){return db[_0x547f('0x3e')][_0x547f('0x34')](_0x3db545['body'],{'where':{'id':_0x3db545[_0x547f('0x5b')]['id']},'transaction':_0x34aab5})['then'](function(_0x4d1930){return db[_0x547f('0x97')][_0x547f('0x35')]({'where':{'FaxAccountId':_0x3db545[_0x547f('0x5b')]['id']},'transaction':_0x34aab5})[_0x547f('0x1f')](function(_0x5ec9b0){return db[_0x547f('0x97')][_0x547f('0x98')](createExtensionsReciveFax(_[_0x547f('0x9a')](_0x3db545['body'],[_0x547f('0x9b'),_0x547f('0x9c'),_0x547f('0x9d'),_0x547f('0x9e'),'TrunkId',_0x547f('0x9f')])),{'transaction':_0x34aab5});});});})[_0x547f('0x1f')](function(){return db['FaxAccount'][_0x547f('0xa0')](_0x3db545[_0x547f('0x5b')]['id']);})['then'](respondWithResult(_0x494b7b,null))[_0x547f('0x62')](handleError(_0x494b7b,null));};exports['getMessages']=function(_0xee218b,_0x3cf2e5,_0x864824){var _0x20050e={'raw':!![],'where':{}};var _0x21ff8d={};var _0x1b4912={'count':0x0,'rows':[]};return db[_0x547f('0x3e')]['findOne']({'where':{'id':_0xee218b['params']['id']}})['then'](handleEntityNotFound(_0x3cf2e5,null))[_0x547f('0x1f')](function(_0x42bc00){if(_0x42bc00){_0x21ff8d[_0x547f('0x49')]=_['keys'](db[_0x547f('0xa1')][_0x547f('0x3f')]);_0x21ff8d['query']=_[_0x547f('0x43')](_0xee218b[_0x547f('0x42')]);_0x21ff8d[_0x547f('0x44')]=_[_0x547f('0x45')](_0x21ff8d[_0x547f('0x49')],_0x21ff8d[_0x547f('0x42')]);_0x20050e[_0x547f('0x47')]=_['intersection'](_0x21ff8d[_0x547f('0x49')],qs[_0x547f('0x46')](_0xee218b[_0x547f('0x42')][_0x547f('0x46')]));_0x20050e[_0x547f('0x47')]=_0x20050e[_0x547f('0x47')][_0x547f('0x48')]?_0x20050e[_0x547f('0x47')]:_0x21ff8d[_0x547f('0x49')];if(!_0xee218b['query'][_0x547f('0x4a')](_0x547f('0x4b'))){_0x20050e[_0x547f('0x2f')]=qs[_0x547f('0x2f')](_0xee218b['query']['limit']);_0x20050e[_0x547f('0x2c')]=qs[_0x547f('0x2c')](_0xee218b['query'][_0x547f('0x2c')]);}_0x20050e[_0x547f('0x4c')]=qs['sort'](_0xee218b[_0x547f('0x42')][_0x547f('0x4d')]);_0x20050e[_0x547f('0x4e')]=qs[_0x547f('0x44')](_[_0x547f('0x4f')](_0xee218b[_0x547f('0x42')],_0x21ff8d['filters']));_0x20050e[_0x547f('0x4e')][_0x547f('0x69')]=_0x42bc00['id'];if(_0xee218b['query'][_0x547f('0x50')]){_0x20050e[_0x547f('0x4e')]=_[_0x547f('0x51')](_0x20050e[_0x547f('0x4e')],{'$or':_[_0x547f('0x3d')](_0x20050e[_0x547f('0x47')],function(_0x92a210){var _0x1330bd={};_0x1330bd[_0x92a210]={'$like':'%'+_0xee218b[_0x547f('0x42')]['filter']+'%'};return _0x1330bd;})});}if(_0xee218b[_0x547f('0x42')][_0x547f('0xa2')]){var _0x2ea06a=_0xee218b[_0x547f('0x42')]['$gte'][_0x547f('0xa3')](',');var _0x4245d2={};_0x4245d2[_0x2ea06a[0x0]]={'$gte':moment(_0x2ea06a[0x1])[_0x547f('0xa4')](_0x547f('0xa5'))};_0x20050e[_0x547f('0x4e')]=_['merge'](_0x20050e[_0x547f('0x4e')],_0x4245d2);}_0x20050e=_[_0x547f('0x51')]({},_0x20050e,_0xee218b['options']);return db['FaxMessage']['count']({'where':_0x20050e[_0x547f('0x4e')]})[_0x547f('0x1f')](function(_0x29643d){_0x1b4912[_0x547f('0x2e')]=_0x29643d;if(_0xee218b[_0x547f('0x42')][_0x547f('0x53')]){_0x20050e[_0x547f('0x54')]=[{'all':!![]}];}return db[_0x547f('0xa1')]['findAll'](_0x20050e);})[_0x547f('0x1f')](function(_0x310656){_0x1b4912[_0x547f('0x56')]=_0x310656;return _0x1b4912;});}})[_0x547f('0x1f')](respondWithFilteredResult(_0x3cf2e5,_0x20050e))[_0x547f('0x62')](handleError(_0x3cf2e5,null));};exports[_0x547f('0x83')]=function(_0x1c979e,_0xefcfb0,_0x36a878){var _0x4620d1,_0x1e9b26={},_0x3ad181;if(_0x1c979e[_0x547f('0x5b')]['to']){_0x3ad181=_0x1c979e[_0x547f('0x5b')]['to'][0x0];}return db['FaxAccount'][_0x547f('0x59')]({'where':{'id':_0x1c979e['params']['id']},'include':[{'model':db[_0x547f('0xa6')],'as':_0x547f('0xa7'),'include':[{'model':db[_0x547f('0x71')],'as':_0x547f('0xa8'),'where':{'fax':_0x3ad181},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x547f('0x1f')](handleEntityNotFound(_0xefcfb0,null))[_0x547f('0x1f')](function(_0xc2d47c){_0x4620d1=_0xc2d47c;if(_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')]&&_0x1c979e['body'][_0x547f('0xa9')][_0x547f('0x48')]){for(var _0x14d155=0x0;_0x14d155<_0x1c979e[_0x547f('0x5b')]['attachments'][_0x547f('0x48')];_0x14d155+=0x1){_0x1c979e['body'][_0x547f('0xa9')][_0x14d155]={'filename':_0x1c979e['body'][_0x547f('0xa9')][_0x14d155][_0x547f('0x3a')],'id':_0x1c979e['body'][_0x547f('0xa9')][_0x14d155]['id'],'path':path[_0x547f('0xaa')](config[_0x547f('0xab')],_0x547f('0xac'),_0x1c979e[_0x547f('0x5b')]['attachments'][_0x14d155][_0x547f('0xad')])};}}return respondWithRpcPromise(_0x547f('0xae'),'CheckAfterSend',{'FaxAccountId':_[_0x547f('0xaf')](_0x1c979e[_0x547f('0x63')]['id'])?undefined:_0x1c979e[_0x547f('0x63')]['id'],'path':_[_0x547f('0xaf')](_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0][_0x547f('0x8')])?undefined:_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0][_0x547f('0x8')],'fax':_[_0x547f('0xaf')](_0x1c979e['body']['to'][0x0])?undefined:_0x1c979e[_0x547f('0x5b')]['to'][0x0]},client9002);})[_0x547f('0x1f')](function(){if(_0x4620d1){if(_[_0x547f('0xaf')](_0x1c979e['body'][_0x547f('0xb0')])){_0x1c979e[_0x547f('0x5b')][_0x547f('0xb0')]=util['format']('\x22%s\x22\x20<%s>',_0x4620d1[_0x547f('0x3a')],_0x4620d1[_0x547f('0xb1')]);}if(_0x4620d1['List']){if(_0x4620d1[_0x547f('0xa7')][_0x547f('0xa8')][_0x547f('0x48')]){return _0x4620d1['List']['Contacts'][0x0];}else{return db[_0x547f('0x71')][_0x547f('0x5a')](_[_0x547f('0x18')](_0x1c979e[_0x547f('0x5b')],{'firstName':_0x1c979e['body']['to'][0x0],'phone':_0x1c979e[_0x547f('0x5b')]['to'][0x0],'fax':_0x1c979e[_0x547f('0x5b')]['to'][0x0],'ListId':_0x4620d1[_0x547f('0x9f')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x547f('0xb2'));}})['then'](function(_0x30d634){if(_0x30d634){return db[_0x547f('0x70')][_0x547f('0x59')]({'where':{'ContactId':_0x30d634['id'],'closed':![],'FaxAccountId':_0x4620d1['id']}})[_0x547f('0x1f')](function(_0x52a2fa){if(_0x52a2fa){return[_0x52a2fa,![]];}return db[_0x547f('0x70')][_0x547f('0x5a')]({'UserId':_0x1c979e['user']['id'],'ContactId':_0x30d634['id'],'FaxAccountId':_0x4620d1['id'],'fax':_0x1c979e[_0x547f('0x5b')]['to'][0x0],'firstMsgDirection':_0x547f('0xb3'),'Messages':[_[_0x547f('0x51')](_0x1c979e[_0x547f('0x5b')],{'read':![],'body':_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0][_0x547f('0xb4')],'FaxAccountId':_0x4620d1['id'],'UserId':_0x1c979e[_0x547f('0x5c')]['id'],'ContactId':_0x30d634['id'],'AttachmentId':_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0]['id']})]},{'include':[{'model':db[_0x547f('0xa1')],'as':'Messages'}]})[_0x547f('0x1f')](function(_0x15aebe){return[_0x15aebe,!![]];});});}else{throw new Error(_0x547f('0xb5'));}})['spread'](function(_0x37515b,_0x51cc17){if(_0x51cc17){return _0x37515b;}return db[_0x547f('0xa1')][_0x547f('0x5a')]({'direction':'out','read':![],'body':_0x1c979e['body'][_0x547f('0xa9')][0x0]['filename'],'FaxAccountId':_0x4620d1['id'],'FaxInteractionId':_0x37515b['id'],'UserId':_0x1c979e[_0x547f('0x5c')]['id'],'ContactId':_0x37515b[_0x547f('0xb6')],'AttachmentId':_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0]['id']})[_0x547f('0x1f')](function(_0x204169){_0x37515b[_0x547f('0xb7')][_0x547f('0xb8')]=[];_0x37515b[_0x547f('0xb7')][_0x547f('0xb8')][_0x547f('0x8d')](_0x204169['dataValues']);return _0x37515b;});})[_0x547f('0x1f')](function(_0x3963fe){respondWithRpcPromise(_0x547f('0xb9'),'SendFax',{'FaxAccountId':_[_0x547f('0xaf')](_0x1c979e[_0x547f('0x63')]['id'])?undefined:_0x1c979e['params']['id'],'path':_['isNil'](_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0][_0x547f('0x8')])?undefined:_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0][_0x547f('0x8')],'fax':_[_0x547f('0xaf')](_0x1c979e[_0x547f('0x5b')]['to'][0x0])?undefined:_0x1c979e[_0x547f('0x5b')]['to'][0x0],'AttachmentId':_0x1c979e[_0x547f('0x5b')][_0x547f('0xa9')][0x0]['id']},client9002)[_0x547f('0x1f')](function(_0x501869){logger[_0x547f('0x20')](_0x547f('0xba'),_0x501869);})[_0x547f('0x62')](function(_0x1c578e){logger[_0x547f('0x20')]('SendFaxRpc,\x20%s',_0x1c578e);});return _0x3963fe;})['then'](respondWithResult(_0xefcfb0,null))[_0x547f('0x62')](handleError(_0xefcfb0,null));};exports[_0x547f('0xbb')]=function(_0x1a9ad3,_0x411855,_0x2cbddb){return db[_0x547f('0x3e')]['find']({'where':{'id':_0x1a9ad3['params']['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x411855,null))[_0x547f('0x1f')](function(_0x4cae59){if(_0x4cae59){return _0x4cae59[_0x547f('0xbb')](_0x1a9ad3[_0x547f('0x5b')][_0x547f('0x6b')],_['omit'](_0x1a9ad3[_0x547f('0x5b')],[_0x547f('0x6b'),'id'])||{})[_0x547f('0xbc')](function(_0x274c54){for(var _0x3bdad5=0x0;_0x3bdad5<_0x1a9ad3[_0x547f('0x5b')][_0x547f('0x6b')][_0x547f('0x48')];_0x3bdad5+=0x1){socket[_0x547f('0xbd')](_0x547f('0xbe'),{'UserId':Number(_0x1a9ad3[_0x547f('0x5b')][_0x547f('0x6b')][_0x3bdad5]),'FaxAccountId':Number(_0x1a9ad3[_0x547f('0x63')]['id'])});}return _0x274c54;});}})[_0x547f('0x1f')](respondWithResult(_0x411855,null))[_0x547f('0x62')](handleError(_0x411855,null));};exports[_0x547f('0xbf')]=function(_0x30932b,_0x43e9af,_0x286565){return db[_0x547f('0x3e')][_0x547f('0x59')]({'where':{'id':_0x30932b['params']['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0x43e9af,null))[_0x547f('0x1f')](function(_0x54886f){if(_0x54886f){return _0x54886f['removeAgents'](_0x30932b[_0x547f('0x42')][_0x547f('0x6b')])[_0x547f('0x1f')](function(){if(_[_0x547f('0xc0')](_0x30932b['query']['ids'])){for(var _0x3b1156=0x0;_0x3b1156<_0x30932b[_0x547f('0x42')][_0x547f('0x6b')][_0x547f('0x48')];_0x3b1156+=0x1){socket[_0x547f('0xbd')](_0x547f('0xc1'),{'UserId':Number(_0x30932b[_0x547f('0x42')][_0x547f('0x6b')][_0x3b1156]),'FaxAccountId':Number(_0x30932b['params']['id'])});}}else{socket[_0x547f('0xbd')](_0x547f('0xc1'),{'UserId':Number(_0x30932b[_0x547f('0x42')][_0x547f('0x6b')]),'FaxAccountId':Number(_0x30932b['params']['id'])});}});}})[_0x547f('0x1f')](respondWithStatusCode(_0x43e9af,null))[_0x547f('0x62')](handleError(_0x43e9af,null));};exports['getAgents']=function(_0x2c548d,_0xd0feeb,_0x2a8b8b){var _0x4cfbc0={};var _0x2d1bd2={};var _0xd72c1f;var _0x3ced7a;return db[_0x547f('0x3e')]['findOne']({'where':{'id':_0x2c548d['params']['id']}})[_0x547f('0x1f')](handleEntityNotFound(_0xd0feeb,null))[_0x547f('0x1f')](function(_0x804e95){if(_0x804e95){_0xd72c1f=_0x804e95;_0x2d1bd2[_0x547f('0x49')]=_[_0x547f('0x43')](db[_0x547f('0x73')]['rawAttributes']);_0x2d1bd2['query']=_['keys'](_0x2c548d[_0x547f('0x42')]);_0x2d1bd2[_0x547f('0x44')]=_[_0x547f('0x45')](_0x2d1bd2[_0x547f('0x49')],_0x2d1bd2[_0x547f('0x42')]);_0x4cfbc0[_0x547f('0x47')]=_[_0x547f('0x45')](_0x2d1bd2[_0x547f('0x49')],qs[_0x547f('0x46')](_0x2c548d[_0x547f('0x42')][_0x547f('0x46')]));_0x4cfbc0[_0x547f('0x47')]=_0x4cfbc0['attributes'][_0x547f('0x48')]?_0x4cfbc0[_0x547f('0x47')]:_0x2d1bd2[_0x547f('0x49')];_0x4cfbc0[_0x547f('0x4c')]=qs['sort'](_0x2c548d[_0x547f('0x42')][_0x547f('0x4d')]);_0x4cfbc0[_0x547f('0x4e')]=qs[_0x547f('0x44')](_[_0x547f('0x4f')](_0x2c548d['query'],_0x2d1bd2['filters']));if(_0x2c548d[_0x547f('0x42')][_0x547f('0x50')]){_0x4cfbc0[_0x547f('0x4e')]=_[_0x547f('0x51')](_0x4cfbc0[_0x547f('0x4e')],{'$or':_['map'](_0x4cfbc0[_0x547f('0x47')],function(_0x2d20ca){var _0x3add9a={};_0x3add9a[_0x2d20ca]={'$like':'%'+_0x2c548d[_0x547f('0x42')][_0x547f('0x50')]+'%'};return _0x3add9a;})});}_0x4cfbc0=_[_0x547f('0x51')]({},_0x4cfbc0,_0x2c548d[_0x547f('0x52')]);return _0xd72c1f[_0x547f('0xc2')](_0x4cfbc0);}})[_0x547f('0x1f')](function(_0x11a7a9){if(_0x11a7a9){_0x3ced7a=_0x11a7a9[_0x547f('0x48')];if(!_0x2c548d['query'][_0x547f('0x4a')](_0x547f('0x4b'))){_0x4cfbc0['limit']=qs[_0x547f('0x2f')](_0x2c548d[_0x547f('0x42')][_0x547f('0x2f')]);_0x4cfbc0[_0x547f('0x2c')]=qs['offset'](_0x2c548d[_0x547f('0x42')][_0x547f('0x2c')]);}return _0xd72c1f[_0x547f('0xc2')](_0x4cfbc0);}})[_0x547f('0x1f')](function(_0x509f65){if(_0x509f65){return _0x509f65?{'count':_0x3ced7a,'rows':_0x509f65}:null;}})[_0x547f('0x1f')](respondWithResult(_0xd0feeb,null))[_0x547f('0x62')](handleError(_0xd0feeb,null));};
\ No newline at end of file
+var _0x6bc3=['length','hasOwnProperty','nolimit','order','sort','pick','filters','merge','VIRTUAL','where','includeAll','rows','catch','params','mandatoryDispositionPause','include','options','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','FaxAccountId','getDispositions','findOne','Disposition','filter','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','getInteractions','User','Owner','internal','Tag','Tags','tag','FaxInteraction','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','context','from-voip-provider','exten','localstationid','app','system','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','headerinfo','maxrate','minrate','modem','t38timeout','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','VoiceExtension','updateAccountApplications','tech','createdAt','updatedAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','CmList','List','Contacts','attachments','join','root','server/files/attachments','CheckAfterSend','isNil','from','format','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','update','then','destroy','FaxAccounts','UserProfileResource','stack','name','index','Pause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields'];(function(_0x3e0242,_0x4a4116){var _0x5a39f6=function(_0x2083e6){while(--_0x2083e6){_0x3e0242['push'](_0x3e0242['shift']());}};_0x5a39f6(++_0x4a4116);}(_0x6bc3,0x146));var _0x36bc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6bc3[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x36bc('0x0'));var zipdir=require(_0x36bc('0x1'));var jsonpatch=require(_0x36bc('0x2'));var rp=require(_0x36bc('0x3'));var moment=require(_0x36bc('0x4'));var BPromise=require(_0x36bc('0x5'));var Mustache=require(_0x36bc('0x6'));var util=require(_0x36bc('0x7'));var path=require(_0x36bc('0x8'));var sox=require('sox');var csv=require(_0x36bc('0x9'));var ejs=require(_0x36bc('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x36bc('0xb'));var squel=require(_0x36bc('0xc'));var crypto=require(_0x36bc('0xd'));var jsforce=require(_0x36bc('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x36bc('0x9'));var querystring=require(_0x36bc('0xf'));var Papa=require('papaparse');var Redis=require(_0x36bc('0x10'));var authService=require(_0x36bc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x36bc('0x12'));var hardwareService=require(_0x36bc('0x13'));var logger=require(_0x36bc('0x14'))(_0x36bc('0x15'));var utils=require('../../config/utils');var config=require(_0x36bc('0x16'));var licenseUtil=require(_0x36bc('0x17'));var db=require(_0x36bc('0x18'))['db'];config[_0x36bc('0x19')]=_[_0x36bc('0x1a')](config['redis'],{'host':_0x36bc('0x1b'),'port':0x18eb});var socket=require(_0x36bc('0x1c'))(new Redis(config['redis']));require(_0x36bc('0x1d'))[_0x36bc('0x1e')](socket);var jayson=require(_0x36bc('0x1f'));var client=jayson[_0x36bc('0x20')][_0x36bc('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x36bc('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x54a7fb,_0x561266,_0x12f068,_0x1e5784){return new BPromise(function(_0x49f9fb,_0x4563da){var _0x1f7f2b=_0x1e5784||client;return _0x1f7f2b[_0x36bc('0x22')](_0x54a7fb,_0x12f068)['then'](function(_0x1ea004){logger[_0x36bc('0x23')](_0x36bc('0x24'),_0x561266,'request\x20sent');logger[_0x36bc('0x25')](_0x36bc('0x26'),_0x561266,_0x36bc('0x27'),JSON[_0x36bc('0x28')](_0x1ea004));if(_0x1ea004[_0x36bc('0x29')]){if(_0x1ea004['error'][_0x36bc('0x2a')]===0x1f4){logger[_0x36bc('0x29')](_0x36bc('0x24'),_0x561266,_0x1ea004[_0x36bc('0x29')][_0x36bc('0x2b')]);return _0x4563da(_0x1ea004[_0x36bc('0x29')]['message']);}logger['error'](_0x36bc('0x24'),_0x561266,_0x1ea004[_0x36bc('0x29')][_0x36bc('0x2b')]);return _0x49f9fb(_0x1ea004[_0x36bc('0x29')][_0x36bc('0x2b')]);}else{logger[_0x36bc('0x23')](_0x36bc('0x24'),_0x561266,_0x36bc('0x27'));_0x49f9fb(_0x1ea004['result'][_0x36bc('0x2b')]);}})['catch'](function(_0x582222){logger['error'](_0x36bc('0x24'),_0x561266,_0x582222);_0x4563da(_0x582222);});});}function respondWithStatusCode(_0x92a613,_0x20d5c9){_0x20d5c9=_0x20d5c9||0xcc;return function(_0x5636f2){if(_0x5636f2){return _0x92a613[_0x36bc('0x2c')](_0x20d5c9);}return _0x92a613[_0x36bc('0x2d')](_0x20d5c9)[_0x36bc('0x2e')]();};}function respondWithResult(_0x287f7e,_0x4b4466){_0x4b4466=_0x4b4466||0xc8;return function(_0x2ad24a){if(_0x2ad24a){return _0x287f7e[_0x36bc('0x2d')](_0x4b4466)[_0x36bc('0x2f')](_0x2ad24a);}};}function respondWithFilteredResult(_0x26c2a7,_0x204c63){return function(_0xc8a38){if(_0xc8a38){var _0x29dbf3=typeof _0x204c63[_0x36bc('0x30')]==='undefined'&&typeof _0x204c63[_0x36bc('0x31')]===_0x36bc('0x32');var _0x103295=_0xc8a38['count'];var _0x3b8725=_0x29dbf3?0x0:_0x204c63[_0x36bc('0x30')];var _0x31a719=_0x29dbf3?_0xc8a38[_0x36bc('0x33')]:_0x204c63[_0x36bc('0x30')]+_0x204c63[_0x36bc('0x31')];var _0x5d7621;if(_0x31a719>=_0x103295){_0x31a719=_0x103295;_0x5d7621=0xc8;}else{_0x5d7621=0xce;}_0x26c2a7[_0x36bc('0x2d')](_0x5d7621);return _0x26c2a7[_0x36bc('0x34')](_0x36bc('0x35'),_0x3b8725+'-'+_0x31a719+'/'+_0x103295)[_0x36bc('0x2f')](_0xc8a38);}return null;};}function patchUpdates(_0x304ad2){return function(_0x326e98){try{jsonpatch[_0x36bc('0x36')](_0x326e98,_0x304ad2,!![]);}catch(_0x24f14c){return BPromise['reject'](_0x24f14c);}return _0x326e98['save']();};}function saveUpdates(_0x1b7606,_0x171df2){return function(_0x233bed){if(_0x233bed){return _0x233bed[_0x36bc('0x37')](_0x1b7606)[_0x36bc('0x38')](function(_0x10703d){return _0x10703d;});}return null;};}function removeEntity(_0x230cd3,_0x523406){return function(_0x5f393c){if(_0x5f393c){return _0x5f393c[_0x36bc('0x39')]()[_0x36bc('0x38')](function(){var _0x3e7c14=_0x5f393c['get']({'plain':!![]});var _0xfd4338=_0x36bc('0x3a');return db[_0x36bc('0x3b')][_0x36bc('0x39')]({'where':{'type':_0xfd4338,'resourceId':_0x3e7c14['id']}})[_0x36bc('0x38')](function(){return _0x5f393c;});})[_0x36bc('0x38')](function(){_0x230cd3[_0x36bc('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13c3f6,_0xa9a8bd){return function(_0x3c5200){if(!_0x3c5200){_0x13c3f6['sendStatus'](0x194);}return _0x3c5200;};}function handleError(_0x3c842b,_0xd643ba){_0xd643ba=_0xd643ba||0x1f4;return function(_0x5aba39){logger[_0x36bc('0x29')](_0x5aba39[_0x36bc('0x3c')]);if(_0x5aba39[_0x36bc('0x3d')]){delete _0x5aba39['name'];}_0x3c842b['status'](_0xd643ba)['send'](_0x5aba39);};}exports[_0x36bc('0x3e')]=function(_0xdb3fd4,_0x2cd0a4){var _0x36bde7={'include':[{'model':db[_0x36bc('0x3f')],'as':'mandatoryDispositionPause'}]},_0x5d0db3={},_0x3a8811={'count':0x0,'rows':[]};var _0x185be4=_[_0x36bc('0x40')](db[_0x36bc('0x41')][_0x36bc('0x42')],function(_0x23eb00){return{'name':_0x23eb00[_0x36bc('0x43')],'type':_0x23eb00[_0x36bc('0x44')][_0x36bc('0x45')]};});_0x5d0db3[_0x36bc('0x46')]=_[_0x36bc('0x40')](_0x185be4,_0x36bc('0x3d'));_0x5d0db3[_0x36bc('0x47')]=_[_0x36bc('0x48')](_0xdb3fd4['query']);_0x5d0db3['filters']=_[_0x36bc('0x49')](_0x5d0db3[_0x36bc('0x46')],_0x5d0db3[_0x36bc('0x47')]);_0x36bde7[_0x36bc('0x4a')]=_[_0x36bc('0x49')](_0x5d0db3['model'],qs[_0x36bc('0x4b')](_0xdb3fd4[_0x36bc('0x47')][_0x36bc('0x4b')]));_0x36bde7[_0x36bc('0x4a')]=_0x36bde7[_0x36bc('0x4a')][_0x36bc('0x4c')]?_0x36bde7[_0x36bc('0x4a')]:_0x5d0db3['model'];if(!_0xdb3fd4[_0x36bc('0x47')][_0x36bc('0x4d')](_0x36bc('0x4e'))){_0x36bde7[_0x36bc('0x31')]=qs[_0x36bc('0x31')](_0xdb3fd4['query']['limit']);_0x36bde7[_0x36bc('0x30')]=qs[_0x36bc('0x30')](_0xdb3fd4[_0x36bc('0x47')][_0x36bc('0x30')]);}_0x36bde7[_0x36bc('0x4f')]=qs[_0x36bc('0x50')](_0xdb3fd4[_0x36bc('0x47')]['sort']);_0x36bde7['where']=qs['filters'](_[_0x36bc('0x51')](_0xdb3fd4['query'],_0x5d0db3[_0x36bc('0x52')]),_0x185be4);if(_0xdb3fd4[_0x36bc('0x47')]['filter']){_0x36bde7['where']=_[_0x36bc('0x53')](_0x36bde7['where'],{'$or':_['map'](_0x185be4,function(_0x131c03){if(_0x131c03[_0x36bc('0x44')]!==_0x36bc('0x54')){var _0xa3a341={};_0xa3a341[_0x131c03[_0x36bc('0x3d')]]={'$like':'%'+_0xdb3fd4[_0x36bc('0x47')]['filter']+'%'};return _0xa3a341;}})});}_0x36bde7=_['merge']({},_0x36bde7,_0xdb3fd4['options']);var _0x42a2bc={'where':_0x36bde7[_0x36bc('0x55')]};return db['FaxAccount'][_0x36bc('0x33')](_0x42a2bc)['then'](function(_0x35f82a){_0x3a8811[_0x36bc('0x33')]=_0x35f82a;if(_0xdb3fd4[_0x36bc('0x47')][_0x36bc('0x56')]){_0x36bde7['include']=[{'all':!![]}];}return db[_0x36bc('0x41')]['findAll'](_0x36bde7);})[_0x36bc('0x38')](function(_0x46a704){_0x3a8811[_0x36bc('0x57')]=_0x46a704;return _0x3a8811;})[_0x36bc('0x38')](respondWithFilteredResult(_0x2cd0a4,_0x36bde7))[_0x36bc('0x58')](handleError(_0x2cd0a4,null));};exports['show']=function(_0x75997a,_0x536fc0){var _0xdbdf0e={'raw':![],'where':{'id':_0x75997a[_0x36bc('0x59')]['id']},'include':[{'model':db[_0x36bc('0x3f')],'as':_0x36bc('0x5a')}]},_0x3f2ce8={};_0x3f2ce8[_0x36bc('0x46')]=_[_0x36bc('0x48')](db[_0x36bc('0x41')][_0x36bc('0x42')]);_0x3f2ce8['query']=_['keys'](_0x75997a[_0x36bc('0x47')]);_0x3f2ce8[_0x36bc('0x52')]=_['intersection'](_0x3f2ce8['model'],_0x3f2ce8[_0x36bc('0x47')]);_0xdbdf0e[_0x36bc('0x4a')]=_[_0x36bc('0x49')](_0x3f2ce8['model'],qs['fields'](_0x75997a[_0x36bc('0x47')]['fields']));_0xdbdf0e[_0x36bc('0x4a')]=_0xdbdf0e[_0x36bc('0x4a')]['length']?_0xdbdf0e['attributes']:_0x3f2ce8[_0x36bc('0x46')];if(_0x75997a[_0x36bc('0x47')]['includeAll']){_0xdbdf0e[_0x36bc('0x5b')]=[{'all':!![]}];}_0xdbdf0e=_[_0x36bc('0x53')]({},_0xdbdf0e,_0x75997a[_0x36bc('0x5c')]);return db['FaxAccount'][_0x36bc('0x5d')](_0xdbdf0e)['then'](handleEntityNotFound(_0x536fc0,null))['then'](respondWithResult(_0x536fc0,null))['catch'](handleError(_0x536fc0,null));};exports[_0x36bc('0x5e')]=function(_0xe12c89,_0x5b9298){return db['FaxAccount']['create'](_0xe12c89[_0x36bc('0x5f')],{})[_0x36bc('0x38')](function(_0x3f47d4){var _0x77238e=_0xe12c89['user'][_0x36bc('0x60')]({'plain':!![]});if(!_0x77238e)throw new Error(_0x36bc('0x61'));if(_0x77238e['role']===_0x36bc('0x62')){var _0x5ddd85=_0x3f47d4[_0x36bc('0x60')]({'plain':!![]});var _0x489c86='FaxAccounts';return db[_0x36bc('0x63')][_0x36bc('0x5d')]({'where':{'name':_0x489c86,'userProfileId':_0x77238e[_0x36bc('0x64')]},'raw':!![]})[_0x36bc('0x38')](function(_0x507619){if(_0x507619&&_0x507619[_0x36bc('0x65')]===0x0){return db[_0x36bc('0x3b')][_0x36bc('0x5e')]({'name':_0x5ddd85[_0x36bc('0x3d')],'resourceId':_0x5ddd85['id'],'type':_0x507619[_0x36bc('0x3d')],'sectionId':_0x507619['id']},{})[_0x36bc('0x38')](function(){return _0x3f47d4;});}else{return _0x3f47d4;}})[_0x36bc('0x58')](function(_0x3b2210){logger[_0x36bc('0x29')](_0x36bc('0x66'),_0x3b2210);throw _0x3b2210;});}return _0x3f47d4;})[_0x36bc('0x38')](respondWithResult(_0x5b9298,0xc9))['catch'](handleError(_0x5b9298,null));};exports[_0x36bc('0x37')]=function(_0xd0d79f,_0x551404){if(_0xd0d79f['body']['id']){delete _0xd0d79f[_0x36bc('0x5f')]['id'];}return db[_0x36bc('0x41')][_0x36bc('0x5d')]({'where':{'id':_0xd0d79f['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x36bc('0x38')](handleEntityNotFound(_0x551404,null))[_0x36bc('0x38')](saveUpdates(_0xd0d79f[_0x36bc('0x5f')],null))[_0x36bc('0x38')](respondWithResult(_0x551404,null))['catch'](handleError(_0x551404,null));};exports[_0x36bc('0x39')]=function(_0x46367c,_0xc226e3){return db[_0x36bc('0x41')][_0x36bc('0x5d')]({'where':{'id':_0x46367c[_0x36bc('0x59')]['id']}})['then'](handleEntityNotFound(_0xc226e3,null))[_0x36bc('0x38')](removeEntity(_0xc226e3,null))[_0x36bc('0x58')](handleError(_0xc226e3,null));};exports[_0x36bc('0x67')]=function(_0x4a3e79,_0xd6413e){return db[_0x36bc('0x41')][_0x36bc('0x67')]()['then'](respondWithResult(_0xd6413e,null))['catch'](handleError(_0xd6413e,null));};exports['addDisposition']=function(_0x5aa35d,_0x288a8a,_0x2a0cad){if(_0x5aa35d[_0x36bc('0x5f')]['id']){delete _0x5aa35d[_0x36bc('0x5f')]['id'];}return db[_0x36bc('0x41')][_0x36bc('0x5d')]({'where':{'id':_0x5aa35d[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x288a8a,null))[_0x36bc('0x38')](function(_0x44ffad){if(_0x44ffad){_0x5aa35d[_0x36bc('0x5f')][_0x36bc('0x68')]=_0x44ffad['id'];return db['Disposition'][_0x36bc('0x5e')](_0x5aa35d[_0x36bc('0x5f')]);}})['then'](respondWithResult(_0x288a8a,null))[_0x36bc('0x58')](handleError(_0x288a8a,null));};exports[_0x36bc('0x69')]=function(_0x4ca36e,_0x13bc90,_0x1eb4c0){var _0x555129={'raw':![],'where':{}};var _0x124654={};var _0x41eea5={'count':0x0,'rows':[]};return db[_0x36bc('0x41')][_0x36bc('0x6a')]({'where':{'id':_0x4ca36e['params']['id']}})['then'](handleEntityNotFound(_0x13bc90,null))[_0x36bc('0x38')](function(_0x391161){if(_0x391161){_0x124654[_0x36bc('0x46')]=_['keys'](db[_0x36bc('0x6b')]['rawAttributes']);_0x124654[_0x36bc('0x47')]=_[_0x36bc('0x48')](_0x4ca36e['query']);_0x124654['filters']=_[_0x36bc('0x49')](_0x124654[_0x36bc('0x46')],_0x124654['query']);_0x555129[_0x36bc('0x4a')]=_[_0x36bc('0x49')](_0x124654['model'],qs['fields'](_0x4ca36e[_0x36bc('0x47')][_0x36bc('0x4b')]));_0x555129[_0x36bc('0x4a')]=_0x555129[_0x36bc('0x4a')]['length']?_0x555129[_0x36bc('0x4a')]:_0x124654['model'];if(!_0x4ca36e[_0x36bc('0x47')][_0x36bc('0x4d')](_0x36bc('0x4e'))){_0x555129['limit']=qs[_0x36bc('0x31')](_0x4ca36e[_0x36bc('0x47')]['limit']);_0x555129[_0x36bc('0x30')]=qs[_0x36bc('0x30')](_0x4ca36e[_0x36bc('0x47')][_0x36bc('0x30')]);}_0x555129['order']=qs['sort'](_0x4ca36e[_0x36bc('0x47')]['sort']);_0x555129[_0x36bc('0x55')]=qs['filters'](_[_0x36bc('0x51')](_0x4ca36e[_0x36bc('0x47')],_0x124654['filters']));_0x555129[_0x36bc('0x55')][_0x36bc('0x68')]=_0x391161['id'];if(_0x4ca36e['query'][_0x36bc('0x6c')]){_0x555129[_0x36bc('0x55')]=_[_0x36bc('0x53')](_0x555129[_0x36bc('0x55')],{'$or':_[_0x36bc('0x40')](_0x555129['attributes'],function(_0x510908){var _0x52db62={};_0x52db62[_0x510908]={'$like':'%'+_0x4ca36e[_0x36bc('0x47')][_0x36bc('0x6c')]+'%'};return _0x52db62;})});}_0x555129=_[_0x36bc('0x53')]({},_0x555129,_0x4ca36e['options']);return db['Disposition'][_0x36bc('0x33')]({'where':_0x555129[_0x36bc('0x55')]})[_0x36bc('0x38')](function(_0x5968a1){_0x41eea5[_0x36bc('0x33')]=_0x5968a1;if(_0x4ca36e[_0x36bc('0x47')]['includeAll']){_0x555129[_0x36bc('0x5b')]=[{'all':!![]}];}return db[_0x36bc('0x6b')][_0x36bc('0x6d')](_0x555129);})[_0x36bc('0x38')](function(_0x589c42){_0x41eea5[_0x36bc('0x57')]=_0x589c42;return _0x41eea5;});}})[_0x36bc('0x38')](respondWithFilteredResult(_0x13bc90,_0x555129))[_0x36bc('0x58')](handleError(_0x13bc90,null));};exports[_0x36bc('0x6e')]=function(_0x3aa758,_0x1e0f6b,_0x5428f1){return db[_0x36bc('0x41')]['find']({'where':{'id':_0x3aa758[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x1e0f6b,null))[_0x36bc('0x38')](function(_0x255e49){if(_0x255e49){return _0x255e49[_0x36bc('0x6e')](_0x3aa758[_0x36bc('0x47')][_0x36bc('0x6f')]);}})[_0x36bc('0x38')](respondWithStatusCode(_0x1e0f6b,null))[_0x36bc('0x58')](handleError(_0x1e0f6b,null));};exports[_0x36bc('0x70')]=function(_0x1eb918,_0x39bf4e,_0x5add68){if(_0x1eb918[_0x36bc('0x5f')]['id']){delete _0x1eb918[_0x36bc('0x5f')]['id'];}return db[_0x36bc('0x41')][_0x36bc('0x5d')]({'where':{'id':_0x1eb918[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x39bf4e,null))[_0x36bc('0x38')](function(_0x364edf){if(_0x364edf){_0x1eb918[_0x36bc('0x5f')][_0x36bc('0x68')]=_0x364edf['id'];return db[_0x36bc('0x71')][_0x36bc('0x5e')](_0x1eb918[_0x36bc('0x5f')]);}})[_0x36bc('0x38')](respondWithResult(_0x39bf4e,null))[_0x36bc('0x58')](handleError(_0x39bf4e,null));};exports[_0x36bc('0x72')]=function(_0x40f6d7,_0x24b3c5,_0x46e966){var _0x1e9e1e={'raw':![],'where':{}};var _0x4826fa={};var _0x281eb6={'count':0x0,'rows':[]};return db[_0x36bc('0x41')][_0x36bc('0x6a')]({'where':{'id':_0x40f6d7[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x24b3c5,null))['then'](function(_0x188a32){if(_0x188a32){_0x4826fa[_0x36bc('0x46')]=_[_0x36bc('0x48')](db[_0x36bc('0x71')]['rawAttributes']);_0x4826fa[_0x36bc('0x47')]=_['keys'](_0x40f6d7[_0x36bc('0x47')]);_0x4826fa[_0x36bc('0x52')]=_['intersection'](_0x4826fa['model'],_0x4826fa[_0x36bc('0x47')]);_0x1e9e1e[_0x36bc('0x4a')]=_[_0x36bc('0x49')](_0x4826fa[_0x36bc('0x46')],qs[_0x36bc('0x4b')](_0x40f6d7[_0x36bc('0x47')][_0x36bc('0x4b')]));_0x1e9e1e['attributes']=_0x1e9e1e['attributes'][_0x36bc('0x4c')]?_0x1e9e1e[_0x36bc('0x4a')]:_0x4826fa['model'];if(!_0x40f6d7[_0x36bc('0x47')]['hasOwnProperty'](_0x36bc('0x4e'))){_0x1e9e1e[_0x36bc('0x31')]=qs[_0x36bc('0x31')](_0x40f6d7[_0x36bc('0x47')][_0x36bc('0x31')]);_0x1e9e1e[_0x36bc('0x30')]=qs[_0x36bc('0x30')](_0x40f6d7[_0x36bc('0x47')][_0x36bc('0x30')]);}_0x1e9e1e[_0x36bc('0x4f')]=qs[_0x36bc('0x50')](_0x40f6d7['query'][_0x36bc('0x50')]);_0x1e9e1e[_0x36bc('0x55')]=qs[_0x36bc('0x52')](_[_0x36bc('0x51')](_0x40f6d7['query'],_0x4826fa[_0x36bc('0x52')]));_0x1e9e1e['where'][_0x36bc('0x68')]=_0x188a32['id'];if(_0x40f6d7[_0x36bc('0x47')]['filter']){_0x1e9e1e[_0x36bc('0x55')]=_['merge'](_0x1e9e1e['where'],{'$or':_[_0x36bc('0x40')](_0x1e9e1e['attributes'],function(_0x5439a0){var _0x11d344={};_0x11d344[_0x5439a0]={'$like':'%'+_0x40f6d7['query'][_0x36bc('0x6c')]+'%'};return _0x11d344;})});}_0x1e9e1e=_['merge']({},_0x1e9e1e,_0x40f6d7['options']);return db[_0x36bc('0x71')]['count']({'where':_0x1e9e1e['where']})['then'](function(_0x18ee41){_0x281eb6[_0x36bc('0x33')]=_0x18ee41;if(_0x40f6d7[_0x36bc('0x47')]['includeAll']){_0x1e9e1e[_0x36bc('0x5b')]=[{'all':!![]}];}return db[_0x36bc('0x71')][_0x36bc('0x6d')](_0x1e9e1e);})['then'](function(_0x14ae47){_0x281eb6[_0x36bc('0x57')]=_0x14ae47;return _0x281eb6;});}})[_0x36bc('0x38')](respondWithFilteredResult(_0x24b3c5,_0x1e9e1e))[_0x36bc('0x58')](handleError(_0x24b3c5,null));};exports[_0x36bc('0x73')]=function(_0x2a0d35,_0x26dfad,_0x4252a5){return db[_0x36bc('0x41')][_0x36bc('0x5d')]({'where':{'id':_0x2a0d35[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x26dfad,null))[_0x36bc('0x38')](function(_0x15b241){if(_0x15b241){return _0x15b241[_0x36bc('0x73')](_0x2a0d35[_0x36bc('0x47')][_0x36bc('0x6f')]);}})['then'](respondWithStatusCode(_0x26dfad,null))[_0x36bc('0x58')](handleError(_0x26dfad,null));};exports[_0x36bc('0x74')]=function(_0x3d3148,_0x396964,_0x80270d){return db['FaxInteraction'][_0x36bc('0x5d')]({'where':{'id':_0x3d3148[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x396964,null))[_0x36bc('0x38')](function(_0x1bed6d){if(_0x1bed6d){return _0x1bed6d[_0x36bc('0x74')](_0x3d3148[_0x36bc('0x5f')][_0x36bc('0x6f')],_['omit'](_0x3d3148[_0x36bc('0x5f')],[_0x36bc('0x6f'),'id'])||{});}})[_0x36bc('0x38')](respondWithResult(_0x396964,null))['catch'](handleError(_0x396964,null));};exports[_0x36bc('0x75')]=function(_0x318083,_0x286015,_0x4d118c){var _0x3db92a={'raw':![],'where':{}};var _0x2c3c07={};var _0x499349={'count':0x0,'rows':[]};return db[_0x36bc('0x41')]['findOne']({'where':{'id':_0x318083['params']['id']}})['then'](handleEntityNotFound(_0x286015,null))['then'](function(_0x452751){if(_0x452751){_0x2c3c07[_0x36bc('0x46')]=_[_0x36bc('0x48')](db['FaxInteraction']['rawAttributes']);_0x2c3c07[_0x36bc('0x47')]=_['keys'](_0x318083[_0x36bc('0x47')]);_0x2c3c07['filters']=_[_0x36bc('0x49')](_0x2c3c07['model'],_0x2c3c07[_0x36bc('0x47')]);_0x3db92a[_0x36bc('0x4a')]=_[_0x36bc('0x49')](_0x2c3c07[_0x36bc('0x46')],qs[_0x36bc('0x4b')](_0x318083[_0x36bc('0x47')][_0x36bc('0x4b')]));_0x3db92a[_0x36bc('0x4a')]=_0x3db92a['attributes'][_0x36bc('0x4c')]?_0x3db92a[_0x36bc('0x4a')]:_0x2c3c07[_0x36bc('0x46')];if(!_0x318083[_0x36bc('0x47')]['hasOwnProperty'](_0x36bc('0x4e'))){_0x3db92a[_0x36bc('0x31')]=qs[_0x36bc('0x31')](_0x318083['query'][_0x36bc('0x31')]);_0x3db92a['offset']=qs[_0x36bc('0x30')](_0x318083['query'][_0x36bc('0x30')]);}_0x3db92a[_0x36bc('0x4f')]=qs[_0x36bc('0x50')](_0x318083['query'][_0x36bc('0x50')]);_0x3db92a[_0x36bc('0x55')]=qs[_0x36bc('0x52')](_['pick'](_0x318083[_0x36bc('0x47')],_0x2c3c07[_0x36bc('0x52')]));_0x3db92a[_0x36bc('0x55')]['FaxAccountId']=_0x452751['id'];if(_0x318083[_0x36bc('0x47')][_0x36bc('0x6c')]){_0x3db92a[_0x36bc('0x55')]=_[_0x36bc('0x53')](_0x3db92a[_0x36bc('0x55')],{'$or':_[_0x36bc('0x40')](_0x3db92a[_0x36bc('0x4a')],function(_0x4ab6a4){var _0x2f7168={};_0x2f7168[_0x4ab6a4]={'$like':'%'+_0x318083[_0x36bc('0x47')][_0x36bc('0x6c')]+'%'};return _0x2f7168;})});}_0x3db92a=_['merge']({},_0x3db92a,_0x318083['options']);return db['FaxInteraction'][_0x36bc('0x33')]({'where':_0x3db92a[_0x36bc('0x55')]})[_0x36bc('0x38')](function(_0x54761e){_0x499349['count']=_0x54761e;if(_0x318083['query'][_0x36bc('0x56')]){_0x3db92a[_0x36bc('0x5b')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x36bc('0x76')],'as':_0x36bc('0x77'),'attributes':[_0x36bc('0x3d'),'fullname',_0x36bc('0x78')],'required':![]},{'model':db[_0x36bc('0x79')],'as':_0x36bc('0x7a'),'attributes':['id',_0x36bc('0x3d'),'color'],'where':_0x318083[_0x36bc('0x47')][_0x36bc('0x7b')]?{'id':_0x318083[_0x36bc('0x47')][_0x36bc('0x7b')]}:undefined,'required':_0x318083[_0x36bc('0x47')]['tag']?!![]:![]}];}return db[_0x36bc('0x7c')]['findAll'](_0x3db92a);})[_0x36bc('0x38')](function(_0x3d3a73){_0x499349[_0x36bc('0x57')]=_0x3d3a73;return _0x499349;});}})[_0x36bc('0x38')](respondWithFilteredResult(_0x286015,_0x3db92a))[_0x36bc('0x58')](handleError(_0x286015,null));};exports[_0x36bc('0x7d')]=function(_0x306865,_0x57f34c){var _0x22e898=_0x306865[_0x36bc('0x59')]['id'];var _0x5cd986=_0x306865[_0x36bc('0x5f')];var _0x25b88d=0xc8;var _0x5823ce=null;return db[_0x36bc('0x7e')][_0x36bc('0x7f')]({'isolationLevel':db[_0x36bc('0x7e')][_0x36bc('0x80')][_0x36bc('0x81')][_0x36bc('0x82')]},function(_0x1423d6){return db[_0x36bc('0x41')][_0x36bc('0x6a')]({'where':{'id':_0x22e898},'transaction':_0x1423d6})[_0x36bc('0x38')](function(_0x4e2855){if(_0x4e2855){return db[_0x36bc('0x83')]['destroy']({'where':{'FaxAccountId':_0x22e898},'transaction':_0x1423d6})[_0x36bc('0x38')](function(){var _0x500858=_[_0x36bc('0x40')](_0x5cd986,function(_0x4c03b1){_0x4c03b1[_0x36bc('0x68')]=_0x22e898;return _0x4c03b1;});return db[_0x36bc('0x83')][_0x36bc('0x84')](_0x500858,{'transaction':_0x1423d6});});}else{_0x25b88d=0x194;_0x5823ce=[];}});})['then'](function(){if(_0x25b88d!==0x194){return db[_0x36bc('0x83')][_0x36bc('0x85')]({'where':{'FaxAccountId':_0x22e898},'order':_0x36bc('0x86')})[_0x36bc('0x38')](function(_0x116277){_0x5823ce=_0x116277;});}})[_0x36bc('0x58')](function(_0x2c70f4){_0x25b88d=0x1f4;logger['error'](_0x2c70f4['stack']);if(_0x2c70f4[_0x36bc('0x3d')]){delete _0x2c70f4[_0x36bc('0x3d')];}_0x5823ce=_0x2c70f4;})[_0x36bc('0x87')](function(){if(_0x5823ce===null){_0x57f34c['sendStatus'](_0x25b88d);}else{if(_0x25b88d===0x1f4){_0x57f34c[_0x36bc('0x2d')](_0x25b88d)[_0x36bc('0x88')](_0x5823ce);}else{_0x57f34c[_0x36bc('0x2d')](_0x25b88d)[_0x36bc('0x2f')](_0x5823ce);}}});};exports['getApplications']=function(_0x4f760c,_0x1286ce,_0x5953ca){var _0x2d1dc6={};var _0x190779={};var _0x968d09;var _0xb368e6;return db[_0x36bc('0x41')][_0x36bc('0x6a')]({'where':{'id':_0x4f760c['params']['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x1286ce,null))[_0x36bc('0x38')](function(_0x4b373e){if(_0x4b373e){_0x968d09=_0x4b373e;_0x190779[_0x36bc('0x46')]=_[_0x36bc('0x48')](db[_0x36bc('0x83')][_0x36bc('0x42')]);_0x190779[_0x36bc('0x47')]=_[_0x36bc('0x48')](_0x4f760c['query']);_0x190779[_0x36bc('0x52')]=_[_0x36bc('0x49')](_0x190779['model'],_0x190779[_0x36bc('0x47')]);_0x2d1dc6['attributes']=_[_0x36bc('0x49')](_0x190779['model'],qs['fields'](_0x4f760c[_0x36bc('0x47')][_0x36bc('0x4b')]));_0x2d1dc6['attributes']=_0x2d1dc6[_0x36bc('0x4a')][_0x36bc('0x4c')]?_0x2d1dc6[_0x36bc('0x4a')]:_0x190779[_0x36bc('0x46')];_0x2d1dc6[_0x36bc('0x4f')]=qs[_0x36bc('0x50')](_0x4f760c[_0x36bc('0x47')][_0x36bc('0x50')]);_0x2d1dc6[_0x36bc('0x55')]=qs['filters'](_[_0x36bc('0x51')](_0x4f760c[_0x36bc('0x47')],_0x190779[_0x36bc('0x52')]));if(_0x4f760c[_0x36bc('0x47')]['filter']){_0x2d1dc6[_0x36bc('0x55')]=_[_0x36bc('0x53')](_0x2d1dc6[_0x36bc('0x55')],{'$or':_[_0x36bc('0x40')](_0x2d1dc6['attributes'],function(_0x1afda7){var _0x35cd07={};_0x35cd07[_0x1afda7]={'$like':'%'+_0x4f760c[_0x36bc('0x47')][_0x36bc('0x6c')]+'%'};return _0x35cd07;})});}_0x2d1dc6=_[_0x36bc('0x53')]({},_0x2d1dc6,_0x4f760c[_0x36bc('0x5c')]);return _0x968d09[_0x36bc('0x89')](_0x2d1dc6);}})[_0x36bc('0x38')](function(_0xc094c3){if(_0xc094c3){_0xb368e6=_0xc094c3[_0x36bc('0x4c')];if(!_0x4f760c[_0x36bc('0x47')][_0x36bc('0x4d')](_0x36bc('0x4e'))){_0x2d1dc6[_0x36bc('0x31')]=qs[_0x36bc('0x31')](_0x4f760c['query'][_0x36bc('0x31')]);_0x2d1dc6[_0x36bc('0x30')]=qs[_0x36bc('0x30')](_0x4f760c[_0x36bc('0x47')][_0x36bc('0x30')]);}return _0x968d09['getApplications'](_0x2d1dc6);}})[_0x36bc('0x38')](function(_0x1d6cb0){if(_0x1d6cb0){return _0x1d6cb0?{'count':_0xb368e6,'rows':_0x1d6cb0}:null;}})[_0x36bc('0x38')](respondWithResult(_0x1286ce,null))[_0x36bc('0x58')](handleError(_0x1286ce,null));};function Extension(_0x5e79b4,_0x2707f3,_0x5e5ba7,_0x41e431){this[_0x36bc('0x8a')]=_0x36bc('0x8b');this[_0x36bc('0x8c')]=_0x5e79b4[_0x36bc('0x8d')];this[_0x36bc('0x8e')]=_0x41e431;this[_0x36bc('0x44')]=_0x36bc('0x8f');this[_0x36bc('0x90')]='Fax\x20Extension';this['FaxAccountId']=_0x5e79b4['id'];this[_0x36bc('0x86')]=_0x2707f3;this[_0x36bc('0x91')]=_0x5e5ba7;}function createExtensionsReciveFax(_0x2782c9){var _0x3717f7=0x1;var _0x140ab8=[];_0x140ab8[_0x36bc('0x92')](new Extension(_0x2782c9,_0x3717f7,'',_0x36bc('0x93')));_0x3717f7+=0x1;_0x140ab8['push'](new Extension(_0x2782c9,_0x3717f7,_0x36bc('0x94'),_0x36bc('0x95')));_0x3717f7+=0x1;for(var _0x13c896 in _0x2782c9){if(_0x2782c9[_0x36bc('0x4d')](_0x13c896)&&(_0x13c896===_0x36bc('0x96')||_0x13c896===_0x36bc('0x8d')||_0x13c896===_0x36bc('0x97')||_0x13c896==='faxdetect'||_0x13c896===_0x36bc('0x98')||_0x13c896===_0x36bc('0x99')||_0x13c896===_0x36bc('0x9a')||_0x13c896===_0x36bc('0x9b')||_0x13c896===_0x36bc('0x9c'))){_0x140ab8[_0x36bc('0x92')](new Extension(_0x2782c9,_0x3717f7,'FAXOPT('+_0x13c896+')='+_0x2782c9[_0x13c896],_0x36bc('0x95')));_0x3717f7+=0x1;}}_0x140ab8[_0x36bc('0x92')](new Extension(_0x2782c9,_0x3717f7,'6',_0x36bc('0x9d')));_0x3717f7+=0x1;_0x140ab8['push'](new Extension(_0x2782c9,_0x3717f7,_0x36bc('0x9e'),'ReceiveFax'));_0x3717f7=0x0;return _0x140ab8;}exports[_0x36bc('0x9f')]=function(_0x12a52a,_0x122596,_0x4797d7){var _0x33a660;return db[_0x36bc('0x7e')][_0x36bc('0x7f')](function(_0x5caf57){return db['FaxAccount'][_0x36bc('0x5e')](_0x12a52a['body'],{'transaction':_0x5caf57})[_0x36bc('0x38')](function(_0x2642db){_0x33a660=_0x2642db[_0x36bc('0x60')]({'plain':!![]});return db[_0x36bc('0xa0')][_0x36bc('0x84')](createExtensionsReciveFax(_0x33a660),{'transaction':_0x5caf57});});})['then'](function(){return _0x33a660;})['then'](respondWithResult(_0x122596,null))['catch'](handleError(_0x122596,null));};exports[_0x36bc('0xa1')]=function(_0xda5067,_0x21f537,_0x1decb0){var _0x39ff46;return db[_0x36bc('0x7e')]['transaction'](function(_0x2cda4d){return db[_0x36bc('0x41')][_0x36bc('0x37')](_0xda5067['body'],{'where':{'id':_0xda5067[_0x36bc('0x5f')]['id']},'transaction':_0x2cda4d})['then'](function(_0x27021b){return db[_0x36bc('0xa0')][_0x36bc('0x39')]({'where':{'FaxAccountId':_0xda5067[_0x36bc('0x5f')]['id']},'transaction':_0x2cda4d})[_0x36bc('0x38')](function(_0x436c36){return db[_0x36bc('0xa0')][_0x36bc('0x84')](createExtensionsReciveFax(_['omit'](_0xda5067[_0x36bc('0x5f')],[_0x36bc('0xa2'),_0x36bc('0x45'),_0x36bc('0xa3'),_0x36bc('0xa4'),_0x36bc('0xa5'),_0x36bc('0xa6')])),{'transaction':_0x2cda4d});});});})[_0x36bc('0x38')](function(){return db[_0x36bc('0x41')][_0x36bc('0xa7')](_0xda5067[_0x36bc('0x5f')]['id']);})[_0x36bc('0x38')](respondWithResult(_0x21f537,null))[_0x36bc('0x58')](handleError(_0x21f537,null));};exports[_0x36bc('0xa8')]=function(_0x1f53a0,_0x5e1d29,_0x2057fc){var _0x1c4cd6={'raw':!![],'where':{}};var _0x3c6742={};var _0x4bf59c={'count':0x0,'rows':[]};return db[_0x36bc('0x41')][_0x36bc('0x6a')]({'where':{'id':_0x1f53a0['params']['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x5e1d29,null))['then'](function(_0x355b47){if(_0x355b47){_0x3c6742['model']=_[_0x36bc('0x48')](db[_0x36bc('0xa9')][_0x36bc('0x42')]);_0x3c6742[_0x36bc('0x47')]=_[_0x36bc('0x48')](_0x1f53a0[_0x36bc('0x47')]);_0x3c6742[_0x36bc('0x52')]=_[_0x36bc('0x49')](_0x3c6742[_0x36bc('0x46')],_0x3c6742['query']);_0x1c4cd6[_0x36bc('0x4a')]=_[_0x36bc('0x49')](_0x3c6742[_0x36bc('0x46')],qs[_0x36bc('0x4b')](_0x1f53a0[_0x36bc('0x47')][_0x36bc('0x4b')]));_0x1c4cd6[_0x36bc('0x4a')]=_0x1c4cd6['attributes'][_0x36bc('0x4c')]?_0x1c4cd6[_0x36bc('0x4a')]:_0x3c6742[_0x36bc('0x46')];if(!_0x1f53a0['query'][_0x36bc('0x4d')](_0x36bc('0x4e'))){_0x1c4cd6['limit']=qs[_0x36bc('0x31')](_0x1f53a0[_0x36bc('0x47')][_0x36bc('0x31')]);_0x1c4cd6[_0x36bc('0x30')]=qs['offset'](_0x1f53a0['query'][_0x36bc('0x30')]);}_0x1c4cd6[_0x36bc('0x4f')]=qs['sort'](_0x1f53a0[_0x36bc('0x47')][_0x36bc('0x50')]);_0x1c4cd6[_0x36bc('0x55')]=qs['filters'](_['pick'](_0x1f53a0[_0x36bc('0x47')],_0x3c6742[_0x36bc('0x52')]));_0x1c4cd6[_0x36bc('0x55')][_0x36bc('0x68')]=_0x355b47['id'];if(_0x1f53a0[_0x36bc('0x47')][_0x36bc('0x6c')]){_0x1c4cd6[_0x36bc('0x55')]=_[_0x36bc('0x53')](_0x1c4cd6['where'],{'$or':_['map'](_0x1c4cd6['attributes'],function(_0x44c88b){var _0x33970a={};_0x33970a[_0x44c88b]={'$like':'%'+_0x1f53a0[_0x36bc('0x47')][_0x36bc('0x6c')]+'%'};return _0x33970a;})});}if(_0x1f53a0[_0x36bc('0x47')][_0x36bc('0xaa')]){var _0x32c6b1=_0x1f53a0[_0x36bc('0x47')][_0x36bc('0xaa')]['split'](',');var _0x412508={};_0x412508[_0x32c6b1[0x0]]={'$gte':moment(_0x32c6b1[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x1c4cd6[_0x36bc('0x55')]=_['merge'](_0x1c4cd6['where'],_0x412508);}_0x1c4cd6=_[_0x36bc('0x53')]({},_0x1c4cd6,_0x1f53a0['options']);return db[_0x36bc('0xa9')][_0x36bc('0x33')]({'where':_0x1c4cd6[_0x36bc('0x55')]})['then'](function(_0x5ad3f8){_0x4bf59c[_0x36bc('0x33')]=_0x5ad3f8;if(_0x1f53a0['query'][_0x36bc('0x56')]){_0x1c4cd6[_0x36bc('0x5b')]=[{'all':!![]}];}return db[_0x36bc('0xa9')][_0x36bc('0x6d')](_0x1c4cd6);})[_0x36bc('0x38')](function(_0x2ce326){_0x4bf59c[_0x36bc('0x57')]=_0x2ce326;return _0x4bf59c;});}})[_0x36bc('0x38')](respondWithFilteredResult(_0x5e1d29,_0x1c4cd6))[_0x36bc('0x58')](handleError(_0x5e1d29,null));};exports[_0x36bc('0x88')]=function(_0x538092,_0x3eb46f,_0x57b0d4){var _0x214f64,_0x21ab3b={},_0x2975fd;if(_0x538092[_0x36bc('0x5f')]['to']){_0x2975fd=_0x538092[_0x36bc('0x5f')]['to'][0x0];}return db['FaxAccount'][_0x36bc('0x5d')]({'where':{'id':_0x538092[_0x36bc('0x59')]['id']},'include':[{'model':db[_0x36bc('0xab')],'as':_0x36bc('0xac'),'include':[{'model':db['CmContact'],'as':_0x36bc('0xad'),'where':{'fax':_0x2975fd},'limit':0x1,'order':[[_0x36bc('0xa4'),'DESC']]}]}]})[_0x36bc('0x38')](handleEntityNotFound(_0x3eb46f,null))[_0x36bc('0x38')](function(_0xdfd443){_0x214f64=_0xdfd443;if(_0x538092[_0x36bc('0x5f')]['attachments']&&_0x538092['body']['attachments']['length']){for(var _0x212a9b=0x0;_0x212a9b<_0x538092['body'][_0x36bc('0xae')][_0x36bc('0x4c')];_0x212a9b+=0x1){_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][_0x212a9b]={'filename':_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][_0x212a9b][_0x36bc('0x3d')],'id':_0x538092['body'][_0x36bc('0xae')][_0x212a9b]['id'],'path':path[_0x36bc('0xaf')](config[_0x36bc('0xb0')],_0x36bc('0xb1'),_0x538092['body'][_0x36bc('0xae')][_0x212a9b]['basename'])};}}return respondWithRpcPromise(_0x36bc('0xb2'),_0x36bc('0xb2'),{'FaxAccountId':_[_0x36bc('0xb3')](_0x538092[_0x36bc('0x59')]['id'])?undefined:_0x538092[_0x36bc('0x59')]['id'],'path':_[_0x36bc('0xb3')](_0x538092[_0x36bc('0x5f')]['attachments'][0x0][_0x36bc('0x8')])?undefined:_0x538092['body'][_0x36bc('0xae')][0x0][_0x36bc('0x8')],'fax':_[_0x36bc('0xb3')](_0x538092[_0x36bc('0x5f')]['to'][0x0])?undefined:_0x538092['body']['to'][0x0]},client9002);})[_0x36bc('0x38')](function(){if(_0x214f64){if(_['isNil'](_0x538092[_0x36bc('0x5f')][_0x36bc('0xb4')])){_0x538092[_0x36bc('0x5f')][_0x36bc('0xb4')]=util[_0x36bc('0xb5')](_0x36bc('0xb6'),_0x214f64[_0x36bc('0x3d')],_0x214f64[_0x36bc('0xb7')]);}if(_0x214f64[_0x36bc('0xac')]){if(_0x214f64['List'][_0x36bc('0xad')]['length']){return _0x214f64[_0x36bc('0xac')][_0x36bc('0xad')][0x0];}else{return db['CmContact'][_0x36bc('0x5e')](_[_0x36bc('0x1a')](_0x538092['body'],{'firstName':_0x538092[_0x36bc('0x5f')]['to'][0x0],'phone':_0x538092[_0x36bc('0x5f')]['to'][0x0],'fax':_0x538092[_0x36bc('0x5f')]['to'][0x0],'ListId':_0x214f64[_0x36bc('0xa6')]}));}}else{throw new Error(_0x36bc('0xb8'));}}else{throw new Error(_0x36bc('0xb9'));}})[_0x36bc('0x38')](function(_0x4bb25f){if(_0x4bb25f){return db[_0x36bc('0x7c')]['find']({'where':{'ContactId':_0x4bb25f['id'],'closed':![],'FaxAccountId':_0x214f64['id']}})[_0x36bc('0x38')](function(_0xc23d0b){if(_0xc23d0b){return[_0xc23d0b,![]];}return db[_0x36bc('0x7c')]['create']({'UserId':_0x538092[_0x36bc('0x62')]['id'],'ContactId':_0x4bb25f['id'],'FaxAccountId':_0x214f64['id'],'fax':_0x538092[_0x36bc('0x5f')]['to'][0x0],'firstMsgDirection':'out','Messages':[_['merge'](_0x538092['body'],{'read':![],'body':_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][0x0][_0x36bc('0xba')],'FaxAccountId':_0x214f64['id'],'UserId':_0x538092['user']['id'],'ContactId':_0x4bb25f['id'],'AttachmentId':_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0x36bc('0xbb')}]})[_0x36bc('0x38')](function(_0x2ccb25){return[_0x2ccb25,!![]];});});}else{throw new Error(_0x36bc('0xbc'));}})[_0x36bc('0xbd')](function(_0x45e0b7,_0x539612){if(_0x539612){return _0x45e0b7;}return db[_0x36bc('0xa9')]['create']({'direction':'out','read':![],'body':_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][0x0]['filename'],'FaxAccountId':_0x214f64['id'],'FaxInteractionId':_0x45e0b7['id'],'UserId':_0x538092[_0x36bc('0x62')]['id'],'ContactId':_0x45e0b7[_0x36bc('0xbe')],'AttachmentId':_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][0x0]['id']})[_0x36bc('0x38')](function(_0x430163){_0x45e0b7[_0x36bc('0xbf')][_0x36bc('0xbb')]=[];_0x45e0b7[_0x36bc('0xbf')][_0x36bc('0xbb')][_0x36bc('0x92')](_0x430163[_0x36bc('0xbf')]);return _0x45e0b7;});})[_0x36bc('0x38')](function(_0x486454){respondWithRpcPromise(_0x36bc('0xc0'),'SendFax',{'FaxAccountId':_['isNil'](_0x538092[_0x36bc('0x59')]['id'])?undefined:_0x538092[_0x36bc('0x59')]['id'],'path':_['isNil'](_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][0x0][_0x36bc('0x8')])?undefined:_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][0x0][_0x36bc('0x8')],'fax':_[_0x36bc('0xb3')](_0x538092[_0x36bc('0x5f')]['to'][0x0])?undefined:_0x538092[_0x36bc('0x5f')]['to'][0x0],'AttachmentId':_0x538092[_0x36bc('0x5f')][_0x36bc('0xae')][0x0]['id']},client9002)['then'](function(_0x21093d){logger[_0x36bc('0x23')](_0x36bc('0xc1'),_0x21093d);})[_0x36bc('0x58')](function(_0x23ebf8){logger['info'](_0x36bc('0xc1'),_0x23ebf8);});return _0x486454;})[_0x36bc('0x38')](respondWithResult(_0x3eb46f,null))[_0x36bc('0x58')](handleError(_0x3eb46f,null));};exports[_0x36bc('0xc2')]=function(_0x3a6b10,_0x30d47c,_0x2a6391){return db[_0x36bc('0x41')][_0x36bc('0x5d')]({'where':{'id':_0x3a6b10[_0x36bc('0x59')]['id']}})['then'](handleEntityNotFound(_0x30d47c,null))[_0x36bc('0x38')](function(_0x301466){if(_0x301466){return _0x301466['addAgents'](_0x3a6b10['body']['ids'],_['omit'](_0x3a6b10[_0x36bc('0x5f')],['ids','id'])||{})[_0x36bc('0xbd')](function(_0x50f975){for(var _0x4cefd1=0x0;_0x4cefd1<_0x3a6b10[_0x36bc('0x5f')][_0x36bc('0x6f')][_0x36bc('0x4c')];_0x4cefd1+=0x1){socket[_0x36bc('0xc3')](_0x36bc('0xc4'),{'UserId':Number(_0x3a6b10[_0x36bc('0x5f')][_0x36bc('0x6f')][_0x4cefd1]),'FaxAccountId':Number(_0x3a6b10[_0x36bc('0x59')]['id'])});}return _0x50f975;});}})['then'](respondWithResult(_0x30d47c,null))[_0x36bc('0x58')](handleError(_0x30d47c,null));};exports[_0x36bc('0xc5')]=function(_0x5b41a8,_0xc60cb6,_0xf897da){return db[_0x36bc('0x41')][_0x36bc('0x5d')]({'where':{'id':_0x5b41a8[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0xc60cb6,null))[_0x36bc('0x38')](function(_0x42d4d8){if(_0x42d4d8){return _0x42d4d8[_0x36bc('0xc5')](_0x5b41a8[_0x36bc('0x47')][_0x36bc('0x6f')])[_0x36bc('0x38')](function(){if(_[_0x36bc('0xc6')](_0x5b41a8[_0x36bc('0x47')]['ids'])){for(var _0x254885=0x0;_0x254885<_0x5b41a8['query'][_0x36bc('0x6f')][_0x36bc('0x4c')];_0x254885+=0x1){socket['emit'](_0x36bc('0xc7'),{'UserId':Number(_0x5b41a8[_0x36bc('0x47')][_0x36bc('0x6f')][_0x254885]),'FaxAccountId':Number(_0x5b41a8[_0x36bc('0x59')]['id'])});}}else{socket[_0x36bc('0xc3')](_0x36bc('0xc7'),{'UserId':Number(_0x5b41a8[_0x36bc('0x47')][_0x36bc('0x6f')]),'FaxAccountId':Number(_0x5b41a8[_0x36bc('0x59')]['id'])});}});}})[_0x36bc('0x38')](respondWithStatusCode(_0xc60cb6,null))['catch'](handleError(_0xc60cb6,null));};exports[_0x36bc('0xc8')]=function(_0x48a279,_0x5ebd38,_0x167104){var _0x16cde8={};var _0x2233ce={};var _0x5d58ec;var _0x3b0c6c;return db[_0x36bc('0x41')][_0x36bc('0x6a')]({'where':{'id':_0x48a279[_0x36bc('0x59')]['id']}})[_0x36bc('0x38')](handleEntityNotFound(_0x5ebd38,null))['then'](function(_0x1a0158){if(_0x1a0158){_0x5d58ec=_0x1a0158;_0x2233ce[_0x36bc('0x46')]=_['keys'](db[_0x36bc('0x76')][_0x36bc('0x42')]);_0x2233ce[_0x36bc('0x47')]=_[_0x36bc('0x48')](_0x48a279[_0x36bc('0x47')]);_0x2233ce[_0x36bc('0x52')]=_['intersection'](_0x2233ce['model'],_0x2233ce[_0x36bc('0x47')]);_0x16cde8['attributes']=_[_0x36bc('0x49')](_0x2233ce[_0x36bc('0x46')],qs['fields'](_0x48a279[_0x36bc('0x47')][_0x36bc('0x4b')]));_0x16cde8[_0x36bc('0x4a')]=_0x16cde8['attributes']['length']?_0x16cde8['attributes']:_0x2233ce[_0x36bc('0x46')];_0x16cde8['order']=qs[_0x36bc('0x50')](_0x48a279['query'][_0x36bc('0x50')]);_0x16cde8[_0x36bc('0x55')]=qs[_0x36bc('0x52')](_[_0x36bc('0x51')](_0x48a279['query'],_0x2233ce['filters']));if(_0x48a279['query'][_0x36bc('0x6c')]){_0x16cde8[_0x36bc('0x55')]=_['merge'](_0x16cde8[_0x36bc('0x55')],{'$or':_['map'](_0x16cde8[_0x36bc('0x4a')],function(_0x87418b){var _0x5be20e={};_0x5be20e[_0x87418b]={'$like':'%'+_0x48a279[_0x36bc('0x47')][_0x36bc('0x6c')]+'%'};return _0x5be20e;})});}_0x16cde8=_[_0x36bc('0x53')]({},_0x16cde8,_0x48a279['options']);return _0x5d58ec[_0x36bc('0xc8')](_0x16cde8);}})[_0x36bc('0x38')](function(_0x563279){if(_0x563279){_0x3b0c6c=_0x563279[_0x36bc('0x4c')];if(!_0x48a279['query'][_0x36bc('0x4d')]('nolimit')){_0x16cde8[_0x36bc('0x31')]=qs[_0x36bc('0x31')](_0x48a279[_0x36bc('0x47')][_0x36bc('0x31')]);_0x16cde8['offset']=qs[_0x36bc('0x30')](_0x48a279[_0x36bc('0x47')][_0x36bc('0x30')]);}return _0x5d58ec[_0x36bc('0xc8')](_0x16cde8);}})[_0x36bc('0x38')](function(_0x872cef){if(_0x872cef){return _0x872cef?{'count':_0x3b0c6c,'rows':_0x872cef}:null;}})[_0x36bc('0x38')](respondWithResult(_0x5ebd38,null))[_0x36bc('0x58')](handleError(_0x5ebd38,null));};
\ No newline at end of file
index 7a9e9d5..0543859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5354=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','emit'];(function(_0x339e95,_0x19d200){var _0xd4156c=function(_0x30dd96){while(--_0x30dd96){_0x339e95['push'](_0x339e95['shift']());}};_0xd4156c(++_0x19d200);}(_0x5354,0x18b));var _0x4535=function(_0x2d81ae,_0x5ec596){_0x2d81ae=_0x2d81ae-0x0;var _0x6ffb3d=_0x5354[_0x2d81ae];return _0x6ffb3d;};'use strict';var EventEmitter=require(_0x4535('0x0'));var FaxAccount=require(_0x4535('0x1'))['db'][_0x4535('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x4535('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4f6232){return function(_0xb7662e,_0x244c4c,_0x24422a){FaxAccountEvents[_0x4535('0x4')](_0x4f6232+':'+_0xb7662e['id'],_0xb7662e);FaxAccountEvents[_0x4535('0x4')](_0x4f6232,_0xb7662e);_0x24422a(null);};}for(var e in events){if(events[_0x4535('0x5')](e)){var event=events[e];FaxAccount[_0x4535('0x6')](e,emitEvent(event));}}module[_0x4535('0x7')]=FaxAccountEvents;
\ No newline at end of file
+var _0xf380=['setMaxListeners','update','remove','emit','hook','exports','../../mysqldb'];(function(_0xab9f3d,_0xb336fa){var _0x5283bf=function(_0x505e6c){while(--_0x505e6c){_0xab9f3d['push'](_0xab9f3d['shift']());}};_0x5283bf(++_0xb336fa);}(_0xf380,0x1bf));var _0x0f38=function(_0x5441ab,_0x1b4d07){_0x5441ab=_0x5441ab-0x0;var _0x3acae8=_0xf380[_0x5441ab];return _0x3acae8;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0x0f38('0x0'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x0f38('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0f38('0x2'),'afterDestroy':_0x0f38('0x3')};function emitEvent(_0x3ba9d3){return function(_0x1110c6,_0x4352a6,_0x24e289){FaxAccountEvents[_0x0f38('0x4')](_0x3ba9d3+':'+_0x1110c6['id'],_0x1110c6);FaxAccountEvents[_0x0f38('0x4')](_0x3ba9d3,_0x1110c6);_0x24e289(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0x0f38('0x5')](e,emitEvent(event));}}module[_0x0f38('0x6')]=FaxAccountEvents;
\ No newline at end of file
index d11e140..7118537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ab5=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','util'];(function(_0x53333f,_0x1fb4fe){var _0x39fe03=function(_0x388985){while(--_0x388985){_0x53333f['push'](_0x53333f['shift']());}};_0x39fe03(++_0x1fb4fe);}(_0x5ab5,0x14f));var _0x55ab=function(_0x38d1ce,_0x3b2427){_0x38d1ce=_0x38d1ce-0x0;var _0x279ae2=_0x5ab5[_0x38d1ce];return _0x279ae2;};'use strict';var _=require('lodash');var util=require(_0x55ab('0x0'));var logger=require(_0x55ab('0x1'))(_0x55ab('0x2'));var moment=require(_0x55ab('0x3'));var BPromise=require(_0x55ab('0x4'));var rp=require(_0x55ab('0x5'));var fs=require('fs');var path=require(_0x55ab('0x6'));var rimraf=require(_0x55ab('0x7'));var config=require(_0x55ab('0x8'));var attributes=require(_0x55ab('0x9'));module[_0x55ab('0xa')]=function(_0x253e60,_0x11dbb9){return _0x253e60[_0x55ab('0xb')]('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x94f1=['api','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','fax_accounts','lodash','util','../../config/logger'];(function(_0x4d23ee,_0x1f8c29){var _0x324211=function(_0x149f6b){while(--_0x149f6b){_0x4d23ee['push'](_0x4d23ee['shift']());}};_0x324211(++_0x1f8c29);}(_0x94f1,0x105));var _0x194f=function(_0x24371d,_0x4614a6){_0x24371d=_0x24371d-0x0;var _0x31fbdb=_0x94f1[_0x24371d];return _0x31fbdb;};'use strict';var _=require(_0x194f('0x0'));var util=require(_0x194f('0x1'));var logger=require(_0x194f('0x2'))(_0x194f('0x3'));var moment=require('moment');var BPromise=require(_0x194f('0x4'));var rp=require(_0x194f('0x5'));var fs=require('fs');var path=require(_0x194f('0x6'));var rimraf=require(_0x194f('0x7'));var config=require(_0x194f('0x8'));var attributes=require(_0x194f('0x9'));module[_0x194f('0xa')]=function(_0x5e93d5,_0x10483a){return _0x5e93d5['define']('FaxAccount',attributes,{'tableName':_0x194f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba8efb3..9ddaf19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9048=['User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','request','then','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','info','result','GetFaxAccount','FaxAccount','raw','options','where','attributes','map','include','model','catch','NotifyFaxAccount','body','CmContact','no\x20available\x20attributes','difference','keys','updatedAt','createdAt','CompanyId','ListId','isNil','from','Sequelize','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','get','list','applications','orderBy','priority','asc','length','create','contact','FaxInteraction','autoclose','push','close','unmanaged','*,*,*,*','created','interaction','ContactId','UserId'];(function(_0x459947,_0x4efd79){var _0x4e10eb=function(_0x53b099){while(--_0x53b099){_0x459947['push'](_0x459947['shift']());}};_0x4e10eb(++_0x4efd79);}(_0x9048,0x17b));var _0x8904=function(_0x792961,_0x32959c){_0x792961=_0x792961-0x0;var _0x4901d6=_0x9048[_0x792961];return _0x4901d6;};'use strict';var _=require(_0x8904('0x0'));var util=require(_0x8904('0x1'));var moment=require('moment');var BPromise=require(_0x8904('0x2'));var rs=require(_0x8904('0x3'));var fs=require('fs');var Redis=require(_0x8904('0x4'));var db=require(_0x8904('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8904('0x6'))(_0x8904('0x7'));var config=require(_0x8904('0x8'));var jayson=require(_0x8904('0x9'));var client=jayson[_0x8904('0xa')][_0x8904('0xb')]({'port':0x232c});config[_0x8904('0xc')]=_[_0x8904('0xd')](config['redis'],{'host':_0x8904('0xe'),'port':0x18eb});var socket=require(_0x8904('0xf'))(new Redis(config[_0x8904('0xc')]));require(_0x8904('0x10'))['register'](socket);function respondWithRpcPromise(_0x22bfe8,_0x591674,_0x1c52c4){return new BPromise(function(_0x53b5b4,_0xaea4d3){return client[_0x8904('0x11')](_0x22bfe8,_0x1c52c4)[_0x8904('0x12')](function(_0x2c9aa3){logger['info']('FaxAccount,\x20%s,\x20%s',_0x591674,_0x8904('0x13'));logger[_0x8904('0x14')](_0x8904('0x15'),_0x591674,_0x8904('0x13'),JSON[_0x8904('0x16')](_0x2c9aa3));if(_0x2c9aa3[_0x8904('0x17')]){if(_0x2c9aa3[_0x8904('0x17')][_0x8904('0x18')]===0x1f4){logger[_0x8904('0x17')](_0x8904('0x19'),_0x591674,_0x2c9aa3[_0x8904('0x17')]['message']);return _0xaea4d3(_0x2c9aa3[_0x8904('0x17')][_0x8904('0x1a')]);}logger[_0x8904('0x17')](_0x8904('0x19'),_0x591674,_0x2c9aa3[_0x8904('0x17')][_0x8904('0x1a')]);return _0x53b5b4(_0x2c9aa3[_0x8904('0x17')][_0x8904('0x1a')]);}else{logger[_0x8904('0x1b')](_0x8904('0x19'),_0x591674,_0x8904('0x13'));_0x53b5b4(_0x2c9aa3[_0x8904('0x1c')]['message']);}})['catch'](function(_0x4a2764){logger[_0x8904('0x17')](_0x8904('0x19'),_0x591674,_0x4a2764);_0xaea4d3(_0x4a2764);});});}exports[_0x8904('0x1d')]=function(_0x329094){var _0x5b3270=this;return new Promise(function(_0xa57c4f,_0x202700){return db[_0x8904('0x1e')]['findAll']({'raw':_0x329094['options']?_0x329094['options'][_0x8904('0x1f')]===undefined?!![]:![]:!![],'where':_0x329094[_0x8904('0x20')]?_0x329094[_0x8904('0x20')][_0x8904('0x21')]||null:null,'attributes':_0x329094['options']?_0x329094[_0x8904('0x20')][_0x8904('0x22')]||null:null,'limit':_0x329094['options']?_0x329094[_0x8904('0x20')]['limit']||null:null,'include':_0x329094['options']?_0x329094[_0x8904('0x20')]['include']?_[_0x8904('0x23')](_0x329094[_0x8904('0x20')][_0x8904('0x24')],function(_0x42f171){return{'model':db[_0x42f171[_0x8904('0x25')]],'as':_0x42f171['as'],'attributes':_0x42f171['attributes'],'include':_0x42f171['include']?_[_0x8904('0x23')](_0x42f171[_0x8904('0x24')],function(_0x2f0053){return{'model':db[_0x2f0053[_0x8904('0x25')]],'as':_0x2f0053['as'],'attributes':_0x2f0053['attributes'],'include':_0x2f0053[_0x8904('0x24')]?_['map'](_0x2f0053[_0x8904('0x24')],function(_0x5cdb6f){return{'model':db[_0x5cdb6f[_0x8904('0x25')]],'as':_0x5cdb6f['as'],'attributes':_0x5cdb6f[_0x8904('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x30699c){logger[_0x8904('0x1b')]('GetFaxAccount',_0x329094);logger[_0x8904('0x14')](_0x8904('0x1d'),_0x329094,JSON[_0x8904('0x16')](_0x30699c));_0xa57c4f(_0x30699c);})[_0x8904('0x26')](function(_0x1c33c3){logger['error'](_0x8904('0x1d'),_0x1c33c3[_0x8904('0x1a')],_0x329094);_0x202700(_0x5b3270['error'](0x1f4,_0x1c33c3[_0x8904('0x1a')]));});});};exports[_0x8904('0x27')]=function(_0x4107b4,_0x319f85,_0x399c43){var _0x5c576c=this;return new Promise(function(_0x35a550,_0x57a2fb){var _0x1a2a19={'body':_0x4107b4[_0x8904('0x28')],'channel':'fax'};var _0x3f2bac=[];var _0x30d5e6=[];var _0x3dd9cb={};return db[_0x8904('0x29')]['describe']()[_0x8904('0x12')](function(_0x44a3f0){if(!_0x44a3f0){throw new db['Sequelize']['ValidationError'](_0x8904('0x2a'));}_0x3f2bac=_[_0x8904('0x2b')](_[_0x8904('0x2c')](_0x44a3f0),['createdAt',_0x8904('0x2d')]);_0x30d5e6=_['difference'](_[_0x8904('0x2c')](_0x44a3f0),[_0x8904('0x2e'),_0x8904('0x2d'),_0x8904('0x2f'),_0x8904('0x30')]);if(_0x4107b4['body']['id']){delete _0x4107b4[_0x8904('0x28')]['id'];}if(_[_0x8904('0x31')](_0x4107b4[_0x8904('0x28')][_0x8904('0x32')])){throw new db[(_0x8904('0x33'))]['ValidationError'](_0x8904('0x34'));}if(_[_0x8904('0x31')](_0x4107b4['body'][_0x8904('0x28')])||_0x4107b4[_0x8904('0x28')]['body']===''){throw new db[(_0x8904('0x33'))][(_0x8904('0x35'))](_0x8904('0x36'));}if(_[_0x8904('0x31')](_0x4107b4[_0x8904('0x28')][_0x8904('0x37')])){throw new db[(_0x8904('0x33'))][(_0x8904('0x35'))](_0x8904('0x38')+_0x30d5e6);}if(!_[_0x8904('0x39')](_0x30d5e6,_0x4107b4['body'][_0x8904('0x37')])){throw new db[(_0x8904('0x33'))][(_0x8904('0x35'))](_0x8904('0x3a')+_0x30d5e6);}_0x3dd9cb[_0x4107b4[_0x8904('0x28')][_0x8904('0x37')]]=_0x4107b4[_0x8904('0x28')]['from'];})['then'](function(){return db['FaxAccount'][_0x8904('0x3b')]({'where':{'id':_0x4107b4[_0x8904('0x3c')]['id']},'include':[{'model':db[_0x8904('0x3d')],'as':_0x8904('0x3e'),'include':[{'model':db[_0x8904('0x29')],'as':_0x8904('0x3f'),'where':_0x3dd9cb,'limit':0x1,'order':[[_0x8904('0x2d'),_0x8904('0x40')]]}]},{'model':db[_0x8904('0x41')],'as':_0x8904('0x42')}]});})['then'](function(_0x4838b5){if(_0x4838b5&&_0x4838b5[_0x8904('0x3e')]){var _0x5e83df=_0x4838b5[_0x8904('0x43')]({'plain':!![]});_0x1a2a19[_0x8904('0x3c')]=_0x5e83df;_0x1a2a19['applications']=_0x5e83df[_0x8904('0x42')];_0x1a2a19[_0x8904('0x44')]=_0x5e83df[_0x8904('0x3e')];_0x1a2a19[_0x8904('0x45')]=_[_0x8904('0x46')](_0x1a2a19[_0x8904('0x45')],[_0x8904('0x47')],[_0x8904('0x48')]);if(_0x1a2a19[_0x8904('0x3c')][_0x8904('0x42')]){delete _0x1a2a19['account'][_0x8904('0x42')];}if(_0x1a2a19['account'][_0x8904('0x3e')]&&_0x1a2a19['account']['List'][_0x8904('0x3f')][_0x8904('0x49')]){return _0x1a2a19[_0x8904('0x3c')]['List'][_0x8904('0x3f')][0x0];}var _0xbce96e=_['defaults'](_0x4107b4['body'],{'firstName':_0x4107b4['body']['from'],'ListId':_0x5e83df['ListId']});_0xbce96e[_0x4107b4['body']['mapKey']]=_0x4107b4['body'][_0x8904('0x32')];return db['CmContact'][_0x8904('0x4a')](_0xbce96e,{'fields':_0x3f2bac,'raw':!![]});}})[_0x8904('0x12')](function(_0xd2546c){_0x1a2a19[_0x8904('0x4b')]=_0xd2546c;if(_0xd2546c){var _0x4b437e={'ContactId':_0xd2546c['id'],'FaxAccountId':_0x4107b4[_0x8904('0x3c')]['id'],'fax':_0xd2546c['fax']};return db[_0x8904('0x4c')][_0x8904('0x3b')]({'where':{'ContactId':_0xd2546c['id'],'closed':![],'FaxAccountId':_0x4107b4[_0x8904('0x3c')]['id']}})['then'](function(_0x15b3c5){if(_0x15b3c5){return[_0x15b3c5,![]];}return db[_0x8904('0x4c')][_0x8904('0x4a')](_0x4b437e)[_0x8904('0x12')](function(_0xfb5659){return[_0xfb5659,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x2e3dd8,_0x346db0){var _0x5db79c=_0x2e3dd8[_0x8904('0x43')]({'plain':!![]});if(_0x346db0){if(_0x1a2a19[_0x8904('0x3c')][_0x8904('0x4d')]){_0x1a2a19[_0x8904('0x45')][_0x8904('0x4e')]({'id':0x0,'priority':_0x1a2a19[_0x8904('0x45')][_0x8904('0x49')]+0x1,'app':_0x8904('0x4f'),'appdata':_0x8904('0x50'),'interval':_0x8904('0x51')});}_0x5db79c[_0x8904('0x52')]=!![];}else{_0x5db79c[_0x8904('0x52')]=![];}_0x1a2a19[_0x8904('0x53')]=_0x5db79c;return db['FaxMessage'][_0x8904('0x4a')]({'body':_0x4107b4[_0x8904('0x28')][_0x8904('0x28')],'FaxAccountId':_0x4107b4['account']['id'],'FaxInteractionId':_0x2e3dd8['id'],'direction':'in','ContactId':_0x2e3dd8[_0x8904('0x54')],'AttachmentId':_0x4107b4['body']['AttachmentId']});})[_0x8904('0x12')](function(_0x230ba5){_0x1a2a19[_0x8904('0x1a')]=_0x230ba5;if(_0x1a2a19['interaction'][_0x8904('0x55')]){return db[_0x8904('0x56')]['find']({'attributes':['id',_0x8904('0x57')],'where':{'id':_0x1a2a19[_0x8904('0x53')][_0x8904('0x55')]}})['then'](function(_0x4f533d){if(_0x4f533d){_0x1a2a19[_0x8904('0x45')][_0x8904('0x58')]({'id':0x0,'priority':0x0,'app':_0x8904('0x59'),'appdata':_0x4f533d['name']+','+(_0x1a2a19['account'][_0x8904('0x5a')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x8904('0x5b'),_0x8904('0x5c'),_0x1a2a19);});}return respondWithRpcPromise(_0x8904('0x5b'),_0x8904('0x5c'),_0x1a2a19);})[_0x8904('0x12')](function(_0x3251bb){_0x35a550(_0x3251bb);})[_0x8904('0x26')](function(_0x396f8e){_0x57a2fb(_0x5c576c[_0x8904('0x17')](0x1f4,_0x396f8e[_0x8904('0x1a')]));});});};
\ No newline at end of file
+var _0xb347=['mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','Applications','account','list','List','applications','orderBy','priority','create','FaxInteraction','find','Contact\x20not\x20found','spread','get','autoclose','push','length','close','unmanaged','*,*,*,*','created','FaxMessage','ContactId','UserId','name','interaction','unshift','agent','waitForTheAssignedAgent','Start','startRouting','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','info','catch','FaxAccount','findAll','options','raw','attributes','include','map','model','GetFaxAccount','NotifyFaxAccount','body','fax','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xb347,0xd9));var _0x7b34=function(_0x5cb7a3,_0x5c9998){_0x5cb7a3=_0x5cb7a3-0x0;var _0x5a2a55=_0xb347[_0x5cb7a3];return _0x5a2a55;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7b34('0x0'));var fs=require('fs');var Redis=require(_0x7b34('0x1'));var db=require(_0x7b34('0x2'))['db'];var utils=require(_0x7b34('0x3'));var logger=require(_0x7b34('0x4'))(_0x7b34('0x5'));var config=require(_0x7b34('0x6'));var jayson=require(_0x7b34('0x7'));var client=jayson[_0x7b34('0x8')]['http']({'port':0x232c});config['redis']=_[_0x7b34('0x9')](config[_0x7b34('0xa')],{'host':_0x7b34('0xb'),'port':0x18eb});var socket=require(_0x7b34('0xc'))(new Redis(config[_0x7b34('0xa')]));require(_0x7b34('0xd'))[_0x7b34('0xe')](socket);function respondWithRpcPromise(_0x398d0c,_0x5226ca,_0x30c99f){return new BPromise(function(_0x4b5cfd,_0x1b3659){return client[_0x7b34('0xf')](_0x398d0c,_0x30c99f)[_0x7b34('0x10')](function(_0x12c78f){logger['info']('FaxAccount,\x20%s,\x20%s',_0x5226ca,_0x7b34('0x11'));logger[_0x7b34('0x12')](_0x7b34('0x13'),_0x5226ca,_0x7b34('0x11'),JSON[_0x7b34('0x14')](_0x12c78f));if(_0x12c78f[_0x7b34('0x15')]){if(_0x12c78f[_0x7b34('0x15')][_0x7b34('0x16')]===0x1f4){logger[_0x7b34('0x15')](_0x7b34('0x17'),_0x5226ca,_0x12c78f['error'][_0x7b34('0x18')]);return _0x1b3659(_0x12c78f[_0x7b34('0x15')][_0x7b34('0x18')]);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x5226ca,_0x12c78f['error']['message']);return _0x4b5cfd(_0x12c78f[_0x7b34('0x15')][_0x7b34('0x18')]);}else{logger[_0x7b34('0x19')](_0x7b34('0x17'),_0x5226ca,_0x7b34('0x11'));_0x4b5cfd(_0x12c78f['result']['message']);}})[_0x7b34('0x1a')](function(_0x53d24d){logger[_0x7b34('0x15')](_0x7b34('0x17'),_0x5226ca,_0x53d24d);_0x1b3659(_0x53d24d);});});}exports['GetFaxAccount']=function(_0x29a672){var _0x403160=this;return new Promise(function(_0x500e2c,_0x20a380){return db[_0x7b34('0x1b')][_0x7b34('0x1c')]({'raw':_0x29a672[_0x7b34('0x1d')]?_0x29a672['options'][_0x7b34('0x1e')]===undefined?!![]:![]:!![],'where':_0x29a672['options']?_0x29a672['options']['where']||null:null,'attributes':_0x29a672[_0x7b34('0x1d')]?_0x29a672[_0x7b34('0x1d')][_0x7b34('0x1f')]||null:null,'limit':_0x29a672[_0x7b34('0x1d')]?_0x29a672['options']['limit']||null:null,'include':_0x29a672[_0x7b34('0x1d')]?_0x29a672[_0x7b34('0x1d')][_0x7b34('0x20')]?_[_0x7b34('0x21')](_0x29a672[_0x7b34('0x1d')][_0x7b34('0x20')],function(_0x412957){return{'model':db[_0x412957[_0x7b34('0x22')]],'as':_0x412957['as'],'attributes':_0x412957[_0x7b34('0x1f')],'include':_0x412957[_0x7b34('0x20')]?_[_0x7b34('0x21')](_0x412957[_0x7b34('0x20')],function(_0x4ad70e){return{'model':db[_0x4ad70e[_0x7b34('0x22')]],'as':_0x4ad70e['as'],'attributes':_0x4ad70e[_0x7b34('0x1f')],'include':_0x4ad70e['include']?_[_0x7b34('0x21')](_0x4ad70e[_0x7b34('0x20')],function(_0x8575c){return{'model':db[_0x8575c[_0x7b34('0x22')]],'as':_0x8575c['as'],'attributes':_0x8575c[_0x7b34('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7b34('0x10')](function(_0x4e3e89){logger[_0x7b34('0x19')](_0x7b34('0x23'),_0x29a672);logger[_0x7b34('0x12')](_0x7b34('0x23'),_0x29a672,JSON[_0x7b34('0x14')](_0x4e3e89));_0x500e2c(_0x4e3e89);})[_0x7b34('0x1a')](function(_0x175afc){logger['error']('GetFaxAccount',_0x175afc[_0x7b34('0x18')],_0x29a672);_0x20a380(_0x403160[_0x7b34('0x15')](0x1f4,_0x175afc['message']));});});};exports[_0x7b34('0x24')]=function(_0x486480,_0x1c5612,_0x48e1ea){var _0x5c171f=this;return new Promise(function(_0x15bfdb,_0xb6c5d){var _0x5b2939={'body':_0x486480[_0x7b34('0x25')],'channel':_0x7b34('0x26')};var _0x460538=[];var _0x36b92a=[];var _0x2fb39d={};return db['CmContact'][_0x7b34('0x27')]()[_0x7b34('0x10')](function(_0x557c41){if(!_0x557c41){throw new db[(_0x7b34('0x28'))][(_0x7b34('0x29'))](_0x7b34('0x2a'));}_0x460538=_[_0x7b34('0x2b')](_[_0x7b34('0x2c')](_0x557c41),[_0x7b34('0x2d'),_0x7b34('0x2e')]);_0x36b92a=_[_0x7b34('0x2b')](_[_0x7b34('0x2c')](_0x557c41),[_0x7b34('0x2d'),_0x7b34('0x2e'),_0x7b34('0x2f'),_0x7b34('0x30')]);if(_0x486480[_0x7b34('0x25')]['id']){delete _0x486480[_0x7b34('0x25')]['id'];}if(_[_0x7b34('0x31')](_0x486480[_0x7b34('0x25')][_0x7b34('0x32')])){throw new db[(_0x7b34('0x28'))][(_0x7b34('0x29'))](_0x7b34('0x33'));}if(_[_0x7b34('0x31')](_0x486480[_0x7b34('0x25')]['body'])||_0x486480[_0x7b34('0x25')][_0x7b34('0x25')]===''){throw new db['Sequelize'][(_0x7b34('0x29'))](_0x7b34('0x34'));}if(_[_0x7b34('0x31')](_0x486480[_0x7b34('0x25')][_0x7b34('0x35')])){throw new db[(_0x7b34('0x28'))]['ValidationError'](_0x7b34('0x36')+_0x36b92a);}if(!_[_0x7b34('0x37')](_0x36b92a,_0x486480['body']['mapKey'])){throw new db[(_0x7b34('0x28'))][(_0x7b34('0x29'))](_0x7b34('0x38')+_0x36b92a);}_0x2fb39d[_0x486480[_0x7b34('0x25')]['mapKey']]=_0x486480[_0x7b34('0x25')][_0x7b34('0x32')];})[_0x7b34('0x10')](function(){return db[_0x7b34('0x1b')]['find']({'where':{'id':_0x486480['account']['id']},'include':[{'model':db[_0x7b34('0x39')],'as':'List','include':[{'model':db['CmContact'],'as':_0x7b34('0x3a'),'where':_0x2fb39d,'limit':0x1,'order':[[_0x7b34('0x2e'),_0x7b34('0x3b')]]}]},{'model':db['FaxApplication'],'as':_0x7b34('0x3c')}]});})['then'](function(_0xf75f59){if(_0xf75f59&&_0xf75f59['List']){var _0x627d82=_0xf75f59['get']({'plain':!![]});_0x5b2939[_0x7b34('0x3d')]=_0x627d82;_0x5b2939['applications']=_0x627d82[_0x7b34('0x3c')];_0x5b2939[_0x7b34('0x3e')]=_0x627d82[_0x7b34('0x3f')];_0x5b2939[_0x7b34('0x40')]=_[_0x7b34('0x41')](_0x5b2939[_0x7b34('0x40')],[_0x7b34('0x42')],['asc']);if(_0x5b2939[_0x7b34('0x3d')][_0x7b34('0x3c')]){delete _0x5b2939[_0x7b34('0x3d')]['Applications'];}if(_0x5b2939['account']['List']&&_0x5b2939[_0x7b34('0x3d')][_0x7b34('0x3f')][_0x7b34('0x3a')]['length']){return _0x5b2939[_0x7b34('0x3d')]['List'][_0x7b34('0x3a')][0x0];}var _0x17e7eb=_[_0x7b34('0x9')](_0x486480[_0x7b34('0x25')],{'firstName':_0x486480[_0x7b34('0x25')][_0x7b34('0x32')],'ListId':_0x627d82['ListId']});_0x17e7eb[_0x486480['body']['mapKey']]=_0x486480[_0x7b34('0x25')][_0x7b34('0x32')];return db['CmContact'][_0x7b34('0x43')](_0x17e7eb,{'fields':_0x460538,'raw':!![]});}})[_0x7b34('0x10')](function(_0x5d4bb1){_0x5b2939['contact']=_0x5d4bb1;if(_0x5d4bb1){var _0x5031cf={'ContactId':_0x5d4bb1['id'],'FaxAccountId':_0x486480[_0x7b34('0x3d')]['id'],'fax':_0x5d4bb1[_0x7b34('0x26')]};return db[_0x7b34('0x44')][_0x7b34('0x45')]({'where':{'ContactId':_0x5d4bb1['id'],'closed':![],'FaxAccountId':_0x486480[_0x7b34('0x3d')]['id']}})[_0x7b34('0x10')](function(_0x2af37f){if(_0x2af37f){return[_0x2af37f,![]];}return db['FaxInteraction'][_0x7b34('0x43')](_0x5031cf)[_0x7b34('0x10')](function(_0x5d23be){return[_0x5d23be,!![]];});});}else{throw new Error(_0x7b34('0x46'));}})[_0x7b34('0x47')](function(_0x375d96,_0x469728){var _0x130176=_0x375d96[_0x7b34('0x48')]({'plain':!![]});if(_0x469728){if(_0x5b2939[_0x7b34('0x3d')][_0x7b34('0x49')]){_0x5b2939[_0x7b34('0x40')][_0x7b34('0x4a')]({'id':0x0,'priority':_0x5b2939[_0x7b34('0x40')][_0x7b34('0x4b')]+0x1,'app':_0x7b34('0x4c'),'appdata':_0x7b34('0x4d'),'interval':_0x7b34('0x4e')});}_0x130176[_0x7b34('0x4f')]=!![];}else{_0x130176[_0x7b34('0x4f')]=![];}_0x5b2939['interaction']=_0x130176;return db[_0x7b34('0x50')]['create']({'body':_0x486480['body'][_0x7b34('0x25')],'FaxAccountId':_0x486480['account']['id'],'FaxInteractionId':_0x375d96['id'],'direction':'in','ContactId':_0x375d96[_0x7b34('0x51')],'AttachmentId':_0x486480[_0x7b34('0x25')]['AttachmentId']});})['then'](function(_0x438258){_0x5b2939[_0x7b34('0x18')]=_0x438258;if(_0x5b2939['interaction'][_0x7b34('0x52')]){return db['User']['find']({'attributes':['id',_0x7b34('0x53')],'where':{'id':_0x5b2939[_0x7b34('0x54')][_0x7b34('0x52')]}})[_0x7b34('0x10')](function(_0x10f3a5){if(_0x10f3a5){_0x5b2939[_0x7b34('0x40')][_0x7b34('0x55')]({'id':0x0,'priority':0x0,'app':_0x7b34('0x56'),'appdata':_0x10f3a5['name']+','+(_0x5b2939['account'][_0x7b34('0x57')]||0xa),'interval':_0x7b34('0x4e')});}return respondWithRpcPromise(_0x7b34('0x58'),'startRouting',_0x5b2939);});}return respondWithRpcPromise(_0x7b34('0x58'),_0x7b34('0x59'),_0x5b2939);})[_0x7b34('0x10')](function(_0xf37e8c){_0x15bfdb(_0xf37e8c);})['catch'](function(_0x5ebd10){_0xb6c5d(_0x5c171f[_0x7b34('0x15')](0x1f4,_0x5ebd10[_0x7b34('0x18')]));});});};
\ No newline at end of file
index 8ad3ba3..96a7ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dbb=['emit','removeListener','register','length','faxAccount:','./faxAccount.events','save','update'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x5dbb,0x19d));var _0xb5db=function(_0x512490,_0x474d3d){_0x512490=_0x512490-0x0;var _0x4cf8e4=_0x5dbb[_0x512490];return _0x4cf8e4;};'use strict';var FaxAccountEvents=require(_0xb5db('0x0'));var events=[_0xb5db('0x1'),'remove',_0xb5db('0x2')];function createListener(_0x3d018d,_0xc13ecf){return function(_0x4a16b9){_0xc13ecf[_0xb5db('0x3')](_0x3d018d,_0x4a16b9);};}function removeListener(_0x264250,_0x497fa7){return function(){FaxAccountEvents[_0xb5db('0x4')](_0x264250,_0x497fa7);};}exports[_0xb5db('0x5')]=function(_0x11dd2d){for(var _0x47639a=0x0,_0xd6f851=events[_0xb5db('0x6')];_0x47639a<_0xd6f851;_0x47639a++){var _0x1b27c8=events[_0x47639a];var _0x19d88d=createListener(_0xb5db('0x7')+_0x1b27c8,_0x11dd2d);FaxAccountEvents['on'](_0x1b27c8,_0x19d88d);}};
\ No newline at end of file
+var _0xd86c=['faxAccount:','./faxAccount.events','remove','removeListener','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd86c,0xd3));var _0xcd86=function(_0x509273,_0x13fc9f){_0x509273=_0x509273-0x0;var _0x38ef40=_0xd86c[_0x509273];return _0x38ef40;};'use strict';var FaxAccountEvents=require(_0xcd86('0x0'));var events=['save',_0xcd86('0x1'),'update'];function createListener(_0x5b4250,_0x31eb28){return function(_0x2737b8){_0x31eb28['emit'](_0x5b4250,_0x2737b8);};}function removeListener(_0x541687,_0x331580){return function(){FaxAccountEvents[_0xcd86('0x2')](_0x541687,_0x331580);};}exports['register']=function(_0x31f430){for(var _0x559cdf=0x0,_0x4a42d9=events[_0xcd86('0x3')];_0x559cdf<_0x4a42d9;_0x559cdf++){var _0x564ff9=events[_0x559cdf];var _0xc9b441=createListener(_0xcd86('0x4')+_0x564ff9,_0x31f430);FaxAccountEvents['on'](_0x564ff9,_0xc9b441);}};
\ No newline at end of file
index f4798e3..46fb705 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(_0x5a0427,_0x37e40b){var _0x42aab4=function(_0x4f4f48){while(--_0x4f4f48){_0x5a0427['push'](_0x5a0427['shift']());}};_0x42aab4(++_0x37e40b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('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(_0x294eaa,_0x491ec3){var _0x512149=function(_0x5ef019){while(--_0x5ef019){_0x294eaa['push'](_0x294eaa['shift']());}};_0x512149(++_0x491ec3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index 20c250b..d9c1896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a6=['sequelize','noop','TEXT','STRING','*,*,*,*'];(function(_0x276438,_0x3110c4){var _0xbec242=function(_0x32a592){while(--_0x32a592){_0x276438['push'](_0x276438['shift']());}};_0xbec242(++_0x3110c4);}(_0x68a6,0x140));var _0x668a=function(_0x3e6b39,_0x2326d5){_0x3e6b39=_0x3e6b39-0x0;var _0x5a59be=_0x68a6[_0x3e6b39];return _0x5a59be;};'use strict';var Sequelize=require(_0x668a('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x668a('0x1')},'appdata':{'type':Sequelize[_0x668a('0x2')]()},'description':{'type':Sequelize[_0x668a('0x3')]},'interval':{'type':Sequelize[_0x668a('0x3')],'defaultValue':_0x668a('0x4')}};
\ No newline at end of file
+var _0xa8c8=['STRING','*,*,*,*','sequelize','INTEGER','noop'];(function(_0x2c8687,_0x4e04af){var _0x5b4873=function(_0xe49b){while(--_0xe49b){_0x2c8687['push'](_0x2c8687['shift']());}};_0x5b4873(++_0x4e04af);}(_0xa8c8,0x138));var _0x8a8c=function(_0xaf592f,_0x48b9c6){_0xaf592f=_0xaf592f-0x0;var _0x632508=_0xa8c8[_0xaf592f];return _0x632508;};'use strict';var Sequelize=require(_0x8a8c('0x0'));module['exports']={'priority':{'type':Sequelize[_0x8a8c('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8a8c('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x8a8c('0x3')]},'interval':{'type':Sequelize[_0x8a8c('0x3')],'defaultValue':_0x8a8c('0x4')}};
\ No newline at end of file
index 8741d87..a11f2eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba1f=['type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','map','options','include','findAll','rows','catch','show','merge','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','lodash','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','offset','count','limit','Content-Range','apply','save','update','then','destroy','error','name','index','FaxApplication','rawAttributes','fieldName'];(function(_0x530bba,_0x5cd025){var _0x29c6db=function(_0x101796){while(--_0x101796){_0x530bba['push'](_0x530bba['shift']());}};_0x29c6db(++_0x5cd025);}(_0xba1f,0x165));var _0xfba1=function(_0x32f09c,_0x2316f5){_0x32f09c=_0x32f09c-0x0;var _0x12ac8d=_0xba1f[_0x32f09c];return _0x12ac8d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfba1('0x0'));var zipdir=require(_0xfba1('0x1'));var jsonpatch=require(_0xfba1('0x2'));var rp=require(_0xfba1('0x3'));var moment=require('moment');var BPromise=require(_0xfba1('0x4'));var Mustache=require('mustache');var util=require(_0xfba1('0x5'));var path=require(_0xfba1('0x6'));var sox=require('sox');var csv=require(_0xfba1('0x7'));var ejs=require(_0xfba1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfba1('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfba1('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xfba1('0x7'));var querystring=require(_0xfba1('0xb'));var Papa=require(_0xfba1('0xc'));var Redis=require(_0xfba1('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfba1('0xe'));var logger=require(_0xfba1('0xf'))('api');var utils=require(_0xfba1('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xfba1('0x11'));var db=require(_0xfba1('0x12'))['db'];function respondWithStatusCode(_0x46fe10,_0x3a7bb8){_0x3a7bb8=_0x3a7bb8||0xcc;return function(_0x5a5277){if(_0x5a5277){return _0x46fe10[_0xfba1('0x13')](_0x3a7bb8);}return _0x46fe10['status'](_0x3a7bb8)[_0xfba1('0x14')]();};}function respondWithResult(_0xad5c2b,_0x1bcc99){_0x1bcc99=_0x1bcc99||0xc8;return function(_0x58e52c){if(_0x58e52c){return _0xad5c2b[_0xfba1('0x15')](_0x1bcc99)[_0xfba1('0x16')](_0x58e52c);}};}function respondWithFilteredResult(_0x807c55,_0x58434a){return function(_0x26eb91){if(_0x26eb91){var _0x758b7=typeof _0x58434a['offset']===_0xfba1('0x17')&&typeof _0x58434a['limit']===_0xfba1('0x17');var _0x94cf9b=_0x26eb91['count'];var _0x16b023=_0x758b7?0x0:_0x58434a[_0xfba1('0x18')];var _0x3f4e24=_0x758b7?_0x26eb91[_0xfba1('0x19')]:_0x58434a[_0xfba1('0x18')]+_0x58434a[_0xfba1('0x1a')];var _0x4469a6;if(_0x3f4e24>=_0x94cf9b){_0x3f4e24=_0x94cf9b;_0x4469a6=0xc8;}else{_0x4469a6=0xce;}_0x807c55['status'](_0x4469a6);return _0x807c55['set'](_0xfba1('0x1b'),_0x16b023+'-'+_0x3f4e24+'/'+_0x94cf9b)[_0xfba1('0x16')](_0x26eb91);}return null;};}function patchUpdates(_0x54b2fd){return function(_0x4fd2d4){try{jsonpatch[_0xfba1('0x1c')](_0x4fd2d4,_0x54b2fd,!![]);}catch(_0x2b1da3){return BPromise['reject'](_0x2b1da3);}return _0x4fd2d4[_0xfba1('0x1d')]();};}function saveUpdates(_0x30f33a,_0x41c946){return function(_0x5df7bc){if(_0x5df7bc){return _0x5df7bc[_0xfba1('0x1e')](_0x30f33a)[_0xfba1('0x1f')](function(_0x331b87){return _0x331b87;});}return null;};}function removeEntity(_0x39b276,_0x167671){return function(_0x26706c){if(_0x26706c){return _0x26706c[_0xfba1('0x20')]()[_0xfba1('0x1f')](function(){_0x39b276['status'](0xcc)[_0xfba1('0x14')]();});}};}function handleEntityNotFound(_0x3ac2ce,_0x228daf){return function(_0x5e74ab){if(!_0x5e74ab){_0x3ac2ce[_0xfba1('0x13')](0x194);}return _0x5e74ab;};}function handleError(_0x34d35f,_0x2c5d2){_0x2c5d2=_0x2c5d2||0x1f4;return function(_0x5e456b){logger[_0xfba1('0x21')](_0x5e456b['stack']);if(_0x5e456b[_0xfba1('0x22')]){delete _0x5e456b[_0xfba1('0x22')];}_0x34d35f[_0xfba1('0x15')](_0x2c5d2)['send'](_0x5e456b);};}exports[_0xfba1('0x23')]=function(_0x10b5d3,_0x15d9ec){var _0x12dd39={},_0x2b1721={},_0xdd81ce={'count':0x0,'rows':[]};var _0x307dc9=_['map'](db[_0xfba1('0x24')][_0xfba1('0x25')],function(_0x39d3bd){return{'name':_0x39d3bd[_0xfba1('0x26')],'type':_0x39d3bd[_0xfba1('0x27')][_0xfba1('0x28')]};});_0x2b1721[_0xfba1('0x29')]=_['map'](_0x307dc9,_0xfba1('0x22'));_0x2b1721[_0xfba1('0x2a')]=_[_0xfba1('0x2b')](_0x10b5d3[_0xfba1('0x2a')]);_0x2b1721[_0xfba1('0x2c')]=_[_0xfba1('0x2d')](_0x2b1721[_0xfba1('0x29')],_0x2b1721[_0xfba1('0x2a')]);_0x12dd39['attributes']=_[_0xfba1('0x2d')](_0x2b1721['model'],qs[_0xfba1('0x2e')](_0x10b5d3['query'][_0xfba1('0x2e')]));_0x12dd39[_0xfba1('0x2f')]=_0x12dd39['attributes'][_0xfba1('0x30')]?_0x12dd39[_0xfba1('0x2f')]:_0x2b1721['model'];if(!_0x10b5d3[_0xfba1('0x2a')][_0xfba1('0x31')](_0xfba1('0x32'))){_0x12dd39[_0xfba1('0x1a')]=qs['limit'](_0x10b5d3[_0xfba1('0x2a')][_0xfba1('0x1a')]);_0x12dd39[_0xfba1('0x18')]=qs[_0xfba1('0x18')](_0x10b5d3['query'][_0xfba1('0x18')]);}_0x12dd39[_0xfba1('0x33')]=qs['sort'](_0x10b5d3['query']['sort']);_0x12dd39[_0xfba1('0x34')]=qs[_0xfba1('0x2c')](_['pick'](_0x10b5d3[_0xfba1('0x2a')],_0x2b1721[_0xfba1('0x2c')]),_0x307dc9);if(_0x10b5d3[_0xfba1('0x2a')][_0xfba1('0x35')]){_0x12dd39[_0xfba1('0x34')]=_['merge'](_0x12dd39[_0xfba1('0x34')],{'$or':_[_0xfba1('0x36')](_0x307dc9,function(_0x8cc3e){if(_0x8cc3e[_0xfba1('0x27')]!=='VIRTUAL'){var _0x528d36={};_0x528d36[_0x8cc3e[_0xfba1('0x22')]]={'$like':'%'+_0x10b5d3['query'][_0xfba1('0x35')]+'%'};return _0x528d36;}})});}_0x12dd39=_['merge']({},_0x12dd39,_0x10b5d3[_0xfba1('0x37')]);var _0x1ea49d={'where':_0x12dd39[_0xfba1('0x34')]};return db[_0xfba1('0x24')][_0xfba1('0x19')](_0x1ea49d)[_0xfba1('0x1f')](function(_0x36534e){_0xdd81ce[_0xfba1('0x19')]=_0x36534e;if(_0x10b5d3[_0xfba1('0x2a')]['includeAll']){_0x12dd39[_0xfba1('0x38')]=[{'all':!![]}];}return db[_0xfba1('0x24')][_0xfba1('0x39')](_0x12dd39);})['then'](function(_0x568dcf){_0xdd81ce[_0xfba1('0x3a')]=_0x568dcf;return _0xdd81ce;})['then'](respondWithFilteredResult(_0x15d9ec,_0x12dd39))[_0xfba1('0x3b')](handleError(_0x15d9ec,null));};exports[_0xfba1('0x3c')]=function(_0x3dd575,_0x5d867e){var _0x119ccb={'raw':!![],'where':{'id':_0x3dd575['params']['id']}},_0x50bd6d={};_0x50bd6d['model']=_['keys'](db[_0xfba1('0x24')]['rawAttributes']);_0x50bd6d[_0xfba1('0x2a')]=_['keys'](_0x3dd575[_0xfba1('0x2a')]);_0x50bd6d[_0xfba1('0x2c')]=_['intersection'](_0x50bd6d[_0xfba1('0x29')],_0x50bd6d[_0xfba1('0x2a')]);_0x119ccb[_0xfba1('0x2f')]=_[_0xfba1('0x2d')](_0x50bd6d[_0xfba1('0x29')],qs['fields'](_0x3dd575[_0xfba1('0x2a')][_0xfba1('0x2e')]));_0x119ccb[_0xfba1('0x2f')]=_0x119ccb[_0xfba1('0x2f')]['length']?_0x119ccb[_0xfba1('0x2f')]:_0x50bd6d['model'];if(_0x3dd575[_0xfba1('0x2a')]['includeAll']){_0x119ccb[_0xfba1('0x38')]=[{'all':!![]}];}_0x119ccb=_[_0xfba1('0x3d')]({},_0x119ccb,_0x3dd575[_0xfba1('0x37')]);return db[_0xfba1('0x24')][_0xfba1('0x3e')](_0x119ccb)['then'](handleEntityNotFound(_0x5d867e,null))[_0xfba1('0x1f')](respondWithResult(_0x5d867e,null))['catch'](handleError(_0x5d867e,null));};exports[_0xfba1('0x3f')]=function(_0x73ac77,_0xb071ee){return db[_0xfba1('0x24')][_0xfba1('0x3f')](_0x73ac77['body'],{})[_0xfba1('0x1f')](respondWithResult(_0xb071ee,0xc9))[_0xfba1('0x3b')](handleError(_0xb071ee,null));};exports[_0xfba1('0x1e')]=function(_0x3fb8ba,_0x2786d8){if(_0x3fb8ba[_0xfba1('0x40')]['id']){delete _0x3fb8ba['body']['id'];}return db[_0xfba1('0x24')][_0xfba1('0x3e')]({'where':{'id':_0x3fb8ba['params']['id']}})[_0xfba1('0x1f')](handleEntityNotFound(_0x2786d8,null))[_0xfba1('0x1f')](saveUpdates(_0x3fb8ba['body'],null))[_0xfba1('0x1f')](respondWithResult(_0x2786d8,null))[_0xfba1('0x3b')](handleError(_0x2786d8,null));};exports[_0xfba1('0x20')]=function(_0x871185,_0x3104ae){return db[_0xfba1('0x24')][_0xfba1('0x3e')]({'where':{'id':_0x871185[_0xfba1('0x41')]['id']}})[_0xfba1('0x1f')](handleEntityNotFound(_0x3104ae,null))[_0xfba1('0x1f')](removeEntity(_0x3104ae,null))[_0xfba1('0x3b')](handleError(_0x3104ae,null));};
\ No newline at end of file
+var _0xffb5=['set','Content-Range','apply','update','then','destroy','error','name','index','map','FaxApplication','rawAttributes','type','key','query','filters','model','attributes','intersection','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','count','includeAll','include','rows','catch','show','params','keys','fields','find','body','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','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x334688,_0xf68c2c){var _0x42dc15=function(_0x17f90a){while(--_0x17f90a){_0x334688['push'](_0x334688['shift']());}};_0x42dc15(++_0xf68c2c);}(_0xffb5,0x199));var _0x5ffb=function(_0x59024a,_0x51065f){_0x59024a=_0x59024a-0x0;var _0x24c34d=_0xffb5[_0x59024a];return _0x24c34d;};'use strict';var emlformat=require(_0x5ffb('0x0'));var rimraf=require(_0x5ffb('0x1'));var zipdir=require(_0x5ffb('0x2'));var jsonpatch=require(_0x5ffb('0x3'));var rp=require(_0x5ffb('0x4'));var moment=require(_0x5ffb('0x5'));var BPromise=require(_0x5ffb('0x6'));var Mustache=require(_0x5ffb('0x7'));var util=require(_0x5ffb('0x8'));var path=require(_0x5ffb('0x9'));var sox=require(_0x5ffb('0xa'));var csv=require(_0x5ffb('0xb'));var ejs=require(_0x5ffb('0xc'));var fs=require('fs');var fs_extra=require(_0x5ffb('0xd'));var _=require(_0x5ffb('0xe'));var squel=require(_0x5ffb('0xf'));var crypto=require(_0x5ffb('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x5ffb('0x11'));var toCsv=require(_0x5ffb('0xb'));var querystring=require('querystring');var Papa=require(_0x5ffb('0x12'));var Redis=require('ioredis');var authService=require(_0x5ffb('0x13'));var qs=require(_0x5ffb('0x14'));var as=require(_0x5ffb('0x15'));var hardwareService=require(_0x5ffb('0x16'));var logger=require(_0x5ffb('0x17'))(_0x5ffb('0x18'));var utils=require(_0x5ffb('0x19'));var config=require(_0x5ffb('0x1a'));var licenseUtil=require(_0x5ffb('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1bc368,_0x36d0e1){_0x36d0e1=_0x36d0e1||0xcc;return function(_0x5ef18e){if(_0x5ef18e){return _0x1bc368[_0x5ffb('0x1c')](_0x36d0e1);}return _0x1bc368[_0x5ffb('0x1d')](_0x36d0e1)[_0x5ffb('0x1e')]();};}function respondWithResult(_0x3780c8,_0x41f506){_0x41f506=_0x41f506||0xc8;return function(_0x56d79e){if(_0x56d79e){return _0x3780c8[_0x5ffb('0x1d')](_0x41f506)[_0x5ffb('0x1f')](_0x56d79e);}};}function respondWithFilteredResult(_0x5cced1,_0xeae4c4){return function(_0x1c4496){if(_0x1c4496){var _0x16b574=typeof _0xeae4c4[_0x5ffb('0x20')]===_0x5ffb('0x21')&&typeof _0xeae4c4[_0x5ffb('0x22')]===_0x5ffb('0x21');var _0x375620=_0x1c4496['count'];var _0x5b5b1f=_0x16b574?0x0:_0xeae4c4[_0x5ffb('0x20')];var _0x33d5d6=_0x16b574?_0x1c4496['count']:_0xeae4c4[_0x5ffb('0x20')]+_0xeae4c4[_0x5ffb('0x22')];var _0x2f9c4f;if(_0x33d5d6>=_0x375620){_0x33d5d6=_0x375620;_0x2f9c4f=0xc8;}else{_0x2f9c4f=0xce;}_0x5cced1[_0x5ffb('0x1d')](_0x2f9c4f);return _0x5cced1[_0x5ffb('0x23')](_0x5ffb('0x24'),_0x5b5b1f+'-'+_0x33d5d6+'/'+_0x375620)[_0x5ffb('0x1f')](_0x1c4496);}return null;};}function patchUpdates(_0x3f4ce3){return function(_0x5b4e74){try{jsonpatch[_0x5ffb('0x25')](_0x5b4e74,_0x3f4ce3,!![]);}catch(_0x48a415){return BPromise['reject'](_0x48a415);}return _0x5b4e74['save']();};}function saveUpdates(_0x55842c,_0x90fb39){return function(_0x173852){if(_0x173852){return _0x173852[_0x5ffb('0x26')](_0x55842c)[_0x5ffb('0x27')](function(_0x2d26ed){return _0x2d26ed;});}return null;};}function removeEntity(_0x17b1c4,_0x4e1169){return function(_0x4f812d){if(_0x4f812d){return _0x4f812d[_0x5ffb('0x28')]()[_0x5ffb('0x27')](function(){_0x17b1c4[_0x5ffb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14ec2b,_0x41e1a9){return function(_0x549e1c){if(!_0x549e1c){_0x14ec2b[_0x5ffb('0x1c')](0x194);}return _0x549e1c;};}function handleError(_0x1a5f20,_0x1df0b6){_0x1df0b6=_0x1df0b6||0x1f4;return function(_0x522e2d){logger[_0x5ffb('0x29')](_0x522e2d['stack']);if(_0x522e2d[_0x5ffb('0x2a')]){delete _0x522e2d[_0x5ffb('0x2a')];}_0x1a5f20[_0x5ffb('0x1d')](_0x1df0b6)['send'](_0x522e2d);};}exports[_0x5ffb('0x2b')]=function(_0x23cc9f,_0x1b1e63){var _0x420409={},_0xcddc10={},_0x4d7cda={'count':0x0,'rows':[]};var _0x2bb487=_[_0x5ffb('0x2c')](db[_0x5ffb('0x2d')][_0x5ffb('0x2e')],function(_0x8fd977){return{'name':_0x8fd977['fieldName'],'type':_0x8fd977[_0x5ffb('0x2f')][_0x5ffb('0x30')]};});_0xcddc10['model']=_[_0x5ffb('0x2c')](_0x2bb487,_0x5ffb('0x2a'));_0xcddc10[_0x5ffb('0x31')]=_['keys'](_0x23cc9f['query']);_0xcddc10[_0x5ffb('0x32')]=_['intersection'](_0xcddc10[_0x5ffb('0x33')],_0xcddc10[_0x5ffb('0x31')]);_0x420409[_0x5ffb('0x34')]=_[_0x5ffb('0x35')](_0xcddc10[_0x5ffb('0x33')],qs['fields'](_0x23cc9f[_0x5ffb('0x31')]['fields']));_0x420409[_0x5ffb('0x34')]=_0x420409['attributes'][_0x5ffb('0x36')]?_0x420409[_0x5ffb('0x34')]:_0xcddc10[_0x5ffb('0x33')];if(!_0x23cc9f[_0x5ffb('0x31')][_0x5ffb('0x37')]('nolimit')){_0x420409[_0x5ffb('0x22')]=qs[_0x5ffb('0x22')](_0x23cc9f['query']['limit']);_0x420409[_0x5ffb('0x20')]=qs[_0x5ffb('0x20')](_0x23cc9f[_0x5ffb('0x31')]['offset']);}_0x420409[_0x5ffb('0x38')]=qs[_0x5ffb('0x39')](_0x23cc9f['query'][_0x5ffb('0x39')]);_0x420409[_0x5ffb('0x3a')]=qs[_0x5ffb('0x32')](_['pick'](_0x23cc9f[_0x5ffb('0x31')],_0xcddc10['filters']),_0x2bb487);if(_0x23cc9f['query'][_0x5ffb('0x3b')]){_0x420409[_0x5ffb('0x3a')]=_['merge'](_0x420409['where'],{'$or':_[_0x5ffb('0x2c')](_0x2bb487,function(_0x6ce2de){if(_0x6ce2de[_0x5ffb('0x2f')]!==_0x5ffb('0x3c')){var _0x544683={};_0x544683[_0x6ce2de['name']]={'$like':'%'+_0x23cc9f[_0x5ffb('0x31')][_0x5ffb('0x3b')]+'%'};return _0x544683;}})});}_0x420409=_[_0x5ffb('0x3d')]({},_0x420409,_0x23cc9f[_0x5ffb('0x3e')]);var _0x1a230f={'where':_0x420409[_0x5ffb('0x3a')]};return db[_0x5ffb('0x2d')][_0x5ffb('0x3f')](_0x1a230f)[_0x5ffb('0x27')](function(_0x19ee49){_0x4d7cda['count']=_0x19ee49;if(_0x23cc9f[_0x5ffb('0x31')][_0x5ffb('0x40')]){_0x420409[_0x5ffb('0x41')]=[{'all':!![]}];}return db[_0x5ffb('0x2d')]['findAll'](_0x420409);})[_0x5ffb('0x27')](function(_0x5683d2){_0x4d7cda[_0x5ffb('0x42')]=_0x5683d2;return _0x4d7cda;})['then'](respondWithFilteredResult(_0x1b1e63,_0x420409))[_0x5ffb('0x43')](handleError(_0x1b1e63,null));};exports[_0x5ffb('0x44')]=function(_0x538a7d,_0xea7bfc){var _0x332321={'raw':!![],'where':{'id':_0x538a7d[_0x5ffb('0x45')]['id']}},_0xe6e7d1={};_0xe6e7d1[_0x5ffb('0x33')]=_[_0x5ffb('0x46')](db[_0x5ffb('0x2d')]['rawAttributes']);_0xe6e7d1['query']=_[_0x5ffb('0x46')](_0x538a7d['query']);_0xe6e7d1[_0x5ffb('0x32')]=_[_0x5ffb('0x35')](_0xe6e7d1[_0x5ffb('0x33')],_0xe6e7d1[_0x5ffb('0x31')]);_0x332321[_0x5ffb('0x34')]=_[_0x5ffb('0x35')](_0xe6e7d1[_0x5ffb('0x33')],qs[_0x5ffb('0x47')](_0x538a7d[_0x5ffb('0x31')]['fields']));_0x332321['attributes']=_0x332321['attributes'][_0x5ffb('0x36')]?_0x332321['attributes']:_0xe6e7d1[_0x5ffb('0x33')];if(_0x538a7d[_0x5ffb('0x31')]['includeAll']){_0x332321[_0x5ffb('0x41')]=[{'all':!![]}];}_0x332321=_[_0x5ffb('0x3d')]({},_0x332321,_0x538a7d['options']);return db[_0x5ffb('0x2d')][_0x5ffb('0x48')](_0x332321)[_0x5ffb('0x27')](handleEntityNotFound(_0xea7bfc,null))[_0x5ffb('0x27')](respondWithResult(_0xea7bfc,null))[_0x5ffb('0x43')](handleError(_0xea7bfc,null));};exports['create']=function(_0x28250e,_0x43bd42){return db['FaxApplication']['create'](_0x28250e[_0x5ffb('0x49')],{})[_0x5ffb('0x27')](respondWithResult(_0x43bd42,0xc9))[_0x5ffb('0x43')](handleError(_0x43bd42,null));};exports[_0x5ffb('0x26')]=function(_0x1edc64,_0x57f8d1){if(_0x1edc64[_0x5ffb('0x49')]['id']){delete _0x1edc64[_0x5ffb('0x49')]['id'];}return db[_0x5ffb('0x2d')][_0x5ffb('0x48')]({'where':{'id':_0x1edc64[_0x5ffb('0x45')]['id']}})['then'](handleEntityNotFound(_0x57f8d1,null))[_0x5ffb('0x27')](saveUpdates(_0x1edc64['body'],null))[_0x5ffb('0x27')](respondWithResult(_0x57f8d1,null))['catch'](handleError(_0x57f8d1,null));};exports[_0x5ffb('0x28')]=function(_0x5a99d8,_0x1042b0){return db[_0x5ffb('0x2d')][_0x5ffb('0x48')]({'where':{'id':_0x5a99d8[_0x5ffb('0x45')]['id']}})[_0x5ffb('0x27')](handleEntityNotFound(_0x1042b0,null))['then'](removeEntity(_0x1042b0,null))['catch'](handleError(_0x1042b0,null));};
\ No newline at end of file
index 70033ef..cf845b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18ee=['define','FaxApplication','fax_applications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','exports'];(function(_0x4a3820,_0x3a5ca5){var _0x3031ff=function(_0x3baacf){while(--_0x3baacf){_0x4a3820['push'](_0x4a3820['shift']());}};_0x3031ff(++_0x3a5ca5);}(_0x18ee,0x9e));var _0xe18e=function(_0xc634d,_0x29ade8){_0xc634d=_0xc634d-0x0;var _0x1e913c=_0x18ee[_0xc634d];return _0x1e913c;};'use strict';var _=require(_0xe18e('0x0'));var util=require('util');var logger=require(_0xe18e('0x1'))(_0xe18e('0x2'));var moment=require(_0xe18e('0x3'));var BPromise=require('bluebird');var rp=require(_0xe18e('0x4'));var fs=require('fs');var path=require(_0xe18e('0x5'));var rimraf=require(_0xe18e('0x6'));var config=require(_0xe18e('0x7'));var attributes=require(_0xe18e('0x8'));module[_0xe18e('0x9')]=function(_0x16b006,_0x2ab238){return _0x16b006[_0xe18e('0xa')](_0xe18e('0xb'),attributes,{'tableName':_0xe18e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xe18e('0xd')});};
\ No newline at end of file
+var _0xa3b9=['FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./faxApplication.attributes','exports','define'];(function(_0x58a3b0,_0x1155a2){var _0x5597ad=function(_0x338944){while(--_0x338944){_0x58a3b0['push'](_0x58a3b0['shift']());}};_0x5597ad(++_0x1155a2);}(_0xa3b9,0x1c6));var _0x9a3b=function(_0x2c9ef4,_0x1f4811){_0x2c9ef4=_0x2c9ef4-0x0;var _0x36d1a8=_0xa3b9[_0x2c9ef4];return _0x36d1a8;};'use strict';var _=require(_0x9a3b('0x0'));var util=require(_0x9a3b('0x1'));var logger=require(_0x9a3b('0x2'))(_0x9a3b('0x3'));var moment=require(_0x9a3b('0x4'));var BPromise=require('bluebird');var rp=require(_0x9a3b('0x5'));var fs=require('fs');var path=require(_0x9a3b('0x6'));var rimraf=require('rimraf');var config=require(_0x9a3b('0x7'));var attributes=require(_0x9a3b('0x8'));module[_0x9a3b('0x9')]=function(_0x3e4198,_0x1dd059){return _0x3e4198[_0x9a3b('0xa')](_0x9a3b('0xb'),attributes,{'tableName':_0x9a3b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9a3b('0xd'),'collate':_0x9a3b('0xe')});};
\ No newline at end of file
index fe4ad2b..0bd5b09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5204=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','FaxApplication,\x20%s,\x20%s','message','result','catch','UpdateFaxApplication','FaxApplication','body','options','raw','where','limit','lodash'];(function(_0x168593,_0x4bd0e3){var _0x2733ce=function(_0x2bfff8){while(--_0x2bfff8){_0x168593['push'](_0x168593['shift']());}};_0x2733ce(++_0x4bd0e3);}(_0x5204,0xd8));var _0x4520=function(_0x5192de,_0x4e91cd){_0x5192de=_0x5192de-0x0;var _0x4e287e=_0x5204[_0x5192de];return _0x4e287e;};'use strict';var _=require(_0x4520('0x0'));var util=require(_0x4520('0x1'));var moment=require(_0x4520('0x2'));var BPromise=require(_0x4520('0x3'));var rs=require(_0x4520('0x4'));var fs=require('fs');var Redis=require(_0x4520('0x5'));var db=require(_0x4520('0x6'))['db'];var utils=require(_0x4520('0x7'));var logger=require(_0x4520('0x8'))(_0x4520('0x9'));var config=require(_0x4520('0xa'));var jayson=require(_0x4520('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x436f0e,_0x173840,_0x28fe83){return new BPromise(function(_0x55dff4,_0x1b14e5){return client[_0x4520('0xc')](_0x436f0e,_0x28fe83)[_0x4520('0xd')](function(_0x7d102e){logger[_0x4520('0xe')]('FaxApplication,\x20%s,\x20%s',_0x173840,_0x4520('0xf'));logger[_0x4520('0x10')](_0x4520('0x11'),_0x173840,_0x4520('0xf'),JSON[_0x4520('0x12')](_0x7d102e));if(_0x7d102e['error']){if(_0x7d102e[_0x4520('0x13')]['code']===0x1f4){logger[_0x4520('0x13')](_0x4520('0x14'),_0x173840,_0x7d102e[_0x4520('0x13')][_0x4520('0x15')]);return _0x1b14e5(_0x7d102e['error'][_0x4520('0x15')]);}logger[_0x4520('0x13')]('FaxApplication,\x20%s,\x20%s',_0x173840,_0x7d102e[_0x4520('0x13')]['message']);return _0x55dff4(_0x7d102e['error'][_0x4520('0x15')]);}else{logger['info'](_0x4520('0x14'),_0x173840,_0x4520('0xf'));_0x55dff4(_0x7d102e[_0x4520('0x16')]['message']);}})[_0x4520('0x17')](function(_0x38a24b){logger['error'](_0x4520('0x14'),_0x173840,_0x38a24b);_0x1b14e5(_0x38a24b);});});}exports[_0x4520('0x18')]=function(_0x1eaa1f){var _0x430d4b=this;return new Promise(function(_0x4eb7af,_0x1d806f){return db[_0x4520('0x19')]['update'](_0x1eaa1f[_0x4520('0x1a')],{'raw':_0x1eaa1f[_0x4520('0x1b')]?_0x1eaa1f[_0x4520('0x1b')][_0x4520('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1eaa1f['options']?_0x1eaa1f[_0x4520('0x1b')][_0x4520('0x1d')]||null:null,'attributes':_0x1eaa1f[_0x4520('0x1b')]?_0x1eaa1f[_0x4520('0x1b')]['attributes']||null:null,'limit':_0x1eaa1f[_0x4520('0x1b')]?_0x1eaa1f['options'][_0x4520('0x1e')]||null:null})[_0x4520('0xd')](function(_0x5e69e8){logger[_0x4520('0xe')](_0x4520('0x18'),_0x1eaa1f);logger[_0x4520('0x10')]('UpdateFaxApplication',_0x1eaa1f,JSON[_0x4520('0x12')](_0x5e69e8));_0x4eb7af(_0x5e69e8);})[_0x4520('0x17')](function(_0x5527de){logger['error'](_0x4520('0x18'),_0x5527de['message'],_0x1eaa1f);_0x1d806f(_0x430d4b[_0x4520('0x13')](0x1f4,_0x5527de[_0x4520('0x15')]));});});};
\ No newline at end of file
+var _0x1b11=['options','where','limit','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','UpdateFaxApplication','FaxApplication','update'];(function(_0x3bb360,_0x1bc6fc){var _0x1087c9=function(_0x29d1ad){while(--_0x29d1ad){_0x3bb360['push'](_0x3bb360['shift']());}};_0x1087c9(++_0x1bc6fc);}(_0x1b11,0xf7));var _0x11b1=function(_0x2247a3,_0x9258d5){_0x2247a3=_0x2247a3-0x0;var _0x4901b3=_0x1b11[_0x2247a3];return _0x4901b3;};'use strict';var _=require(_0x11b1('0x0'));var util=require(_0x11b1('0x1'));var moment=require('moment');var BPromise=require(_0x11b1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x11b1('0x3'));var db=require(_0x11b1('0x4'))['db'];var utils=require(_0x11b1('0x5'));var logger=require('../../config/logger')(_0x11b1('0x6'));var config=require(_0x11b1('0x7'));var jayson=require(_0x11b1('0x8'));var client=jayson['client'][_0x11b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3d999e,_0x2df611,_0x25aec2){return new BPromise(function(_0x2f59de,_0x998bc4){return client['request'](_0x3d999e,_0x25aec2)[_0x11b1('0xa')](function(_0x28e5f8){logger[_0x11b1('0xb')](_0x11b1('0xc'),_0x2df611,_0x11b1('0xd'));logger[_0x11b1('0xe')](_0x11b1('0xf'),_0x2df611,_0x11b1('0xd'),JSON[_0x11b1('0x10')](_0x28e5f8));if(_0x28e5f8['error']){if(_0x28e5f8['error']['code']===0x1f4){logger[_0x11b1('0x11')](_0x11b1('0xc'),_0x2df611,_0x28e5f8[_0x11b1('0x11')][_0x11b1('0x12')]);return _0x998bc4(_0x28e5f8['error'][_0x11b1('0x12')]);}logger['error'](_0x11b1('0xc'),_0x2df611,_0x28e5f8['error'][_0x11b1('0x12')]);return _0x2f59de(_0x28e5f8[_0x11b1('0x11')][_0x11b1('0x12')]);}else{logger[_0x11b1('0xb')]('FaxApplication,\x20%s,\x20%s',_0x2df611,_0x11b1('0xd'));_0x2f59de(_0x28e5f8[_0x11b1('0x13')][_0x11b1('0x12')]);}})['catch'](function(_0x4d9ac9){logger[_0x11b1('0x11')](_0x11b1('0xc'),_0x2df611,_0x4d9ac9);_0x998bc4(_0x4d9ac9);});});}exports[_0x11b1('0x14')]=function(_0x31a7e4){var _0x2370c4=this;return new Promise(function(_0x1cb777,_0x3db116){return db[_0x11b1('0x15')][_0x11b1('0x16')](_0x31a7e4['body'],{'raw':_0x31a7e4[_0x11b1('0x17')]?_0x31a7e4[_0x11b1('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x31a7e4[_0x11b1('0x17')]?_0x31a7e4[_0x11b1('0x17')][_0x11b1('0x18')]||null:null,'attributes':_0x31a7e4[_0x11b1('0x17')]?_0x31a7e4['options']['attributes']||null:null,'limit':_0x31a7e4[_0x11b1('0x17')]?_0x31a7e4[_0x11b1('0x17')][_0x11b1('0x19')]||null:null})[_0x11b1('0xa')](function(_0xc952d6){logger[_0x11b1('0xb')](_0x11b1('0x14'),_0x31a7e4);logger[_0x11b1('0xe')](_0x11b1('0x14'),_0x31a7e4,JSON[_0x11b1('0x10')](_0xc952d6));_0x1cb777(_0xc952d6);})[_0x11b1('0x1a')](function(_0x19bf50){logger[_0x11b1('0x11')]('UpdateFaxApplication',_0x19bf50[_0x11b1('0x12')],_0x31a7e4);_0x3db116(_0x2370c4[_0x11b1('0x11')](0x1f4,_0x19bf50[_0x11b1('0x12')]));});});};
\ No newline at end of file
index e5e6e5d..8bb7fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x2eb41e,_0x2bdf4c){var _0x493e89=function(_0x180d7f){while(--_0x180d7f){_0x2eb41e['push'](_0x2eb41e['shift']());}};_0x493e89(++_0x2bdf4c);}(_0x2032,0xd9));var _0x2203=function(_0x4260b0,_0x1f1087){_0x4260b0=_0x4260b0-0x0;var _0x3e51fc=_0x2032[_0x4260b0];return _0x3e51fc;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
+var _0xefda=['post','create','update','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','index','/:id','isAuthenticated'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xefda,0x96));var _0xaefd=function(_0x70dc98,_0x156631){_0x70dc98=_0x70dc98-0x0;var _0x3bb1fd=_0xefda[_0x70dc98];return _0x3bb1fd;};'use strict';var multer=require(_0xaefd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaefd('0x1'));var express=require(_0xaefd('0x2'));var router=express['Router']();var fs_extra=require(_0xaefd('0x3'));var auth=require(_0xaefd('0x4'));var interaction=require(_0xaefd('0x5'));var config=require(_0xaefd('0x6'));var controller=require(_0xaefd('0x7'));router[_0xaefd('0x8')]('/',auth['isAuthenticated'](),controller[_0xaefd('0x9')]);router[_0xaefd('0x8')](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller['show']);router[_0xaefd('0xc')]('/',auth[_0xaefd('0xb')](),controller[_0xaefd('0xd')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xaefd('0xe')]);router[_0xaefd('0xf')](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller[_0xaefd('0x10')]);module[_0xaefd('0x11')]=router;
\ No newline at end of file
index f6bdf55..c3e6c7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb1c=['ENUM','out','sequelize','exports','STRING','DATE'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0xdb1c,0x116));var _0xcdb1=function(_0x77d76e,_0x106ed2){_0x77d76e=_0x77d76e-0x0;var _0x5620c8=_0xdb1c[_0x77d76e];return _0x5620c8;};'use strict';var Sequelize=require(_0xcdb1('0x0'));module[_0xcdb1('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xcdb1('0x2')]},'secondDisposition':{'type':Sequelize[_0xcdb1('0x2')]},'thirdDisposition':{'type':Sequelize[_0xcdb1('0x2')]},'note':{'type':Sequelize[_0xcdb1('0x2')]},'read1stAt':{'type':Sequelize[_0xcdb1('0x3')]},'fax':{'type':Sequelize[_0xcdb1('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xcdb1('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xcdb1('0x4')]('in',_0xcdb1('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x51e6=['DATE','STRING','ENUM','out','sequelize'];(function(_0x27638d,_0x4094db){var _0x35da35=function(_0x538095){while(--_0x538095){_0x27638d['push'](_0x27638d['shift']());}};_0x35da35(++_0x4094db);}(_0x51e6,0xef));var _0x651e=function(_0x41a93b,_0x2fc19d){_0x41a93b=_0x41a93b-0x0;var _0x220a7e=_0x51e6[_0x41a93b];return _0x220a7e;};'use strict';var Sequelize=require(_0x651e('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x651e('0x1')]},'disposition':{'type':Sequelize[_0x651e('0x2')]},'secondDisposition':{'type':Sequelize[_0x651e('0x2')]},'thirdDisposition':{'type':Sequelize[_0x651e('0x2')]},'note':{'type':Sequelize[_0x651e('0x2')]},'read1stAt':{'type':Sequelize[_0x651e('0x1')]},'fax':{'type':Sequelize[_0x651e('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x651e('0x3')]('in',_0x651e('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x651e('0x1')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x651e('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 02fcc68..18a1684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8d6=['status','end','offset','undefined','limit','count','set','Content-Range','json','then','sendStatus','error','name','index','map','FaxInteraction','fieldName','type','key','getOptions','fax','query','user','show','params','model','keys','rawAttributes','filters','intersection','attributes','fields','length','includeAll','include','options','create','catch','update','body','find','destroy','describe','addMessage','FaxMessage','ids','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','pick','FaxInteractionId','merge','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','findAll','color','emit','faxInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','format','push','Attachment','Messages','createdAt','mkdirSync','basename','existsSync','createReadStream','createWriteStream','log','unlinkSync','rimraf','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','redis','localhost','socket.io-emitter','./faxInteraction.socket'];(function(_0x3ece46,_0x586b81){var _0x395097=function(_0x50b47a){while(--_0x50b47a){_0x3ece46['push'](_0x3ece46['shift']());}};_0x395097(++_0x586b81);}(_0xf8d6,0x1e6));var _0x6f8d=function(_0x324e86,_0x81b1cb){_0x324e86=_0x324e86-0x0;var _0x592846=_0xf8d6[_0x324e86];return _0x592846;};'use strict';var rimraf=require(_0x6f8d('0x0'));var zipdir=require('zip-dir');var moment=require(_0x6f8d('0x1'));var BPromise=require(_0x6f8d('0x2'));var util=require('util');var path=require(_0x6f8d('0x3'));var fs=require('fs');var _=require(_0x6f8d('0x4'));var Redis=require(_0x6f8d('0x5'));var interaction=require(_0x6f8d('0x6'));var qs=require(_0x6f8d('0x7'));var logger=require(_0x6f8d('0x8'))('api');var config=require(_0x6f8d('0x9'));var db=require('../../mysqldb')['db'];config[_0x6f8d('0xa')]=_['defaults'](config[_0x6f8d('0xa')],{'host':_0x6f8d('0xb'),'port':0x18eb});var socket=require(_0x6f8d('0xc'))(new Redis(config[_0x6f8d('0xa')]));require(_0x6f8d('0xd'))['register'](socket);function respondWithStatusCode(_0x3fc34a,_0x45cf9f){_0x45cf9f=_0x45cf9f||0xcc;return function(_0x18405b){if(_0x18405b){return _0x3fc34a['sendStatus'](_0x45cf9f);}return _0x3fc34a[_0x6f8d('0xe')](_0x45cf9f)[_0x6f8d('0xf')]();};}function respondWithResult(_0x1aa9a8,_0x41d174){_0x41d174=_0x41d174||0xc8;return function(_0x24fc43){if(_0x24fc43){return _0x1aa9a8[_0x6f8d('0xe')](_0x41d174)['json'](_0x24fc43);}};}function respondWithFilteredResult(_0x1b992f,_0xc52f84){return function(_0x4cbeca){if(_0x4cbeca){var _0x2245f8=typeof _0xc52f84[_0x6f8d('0x10')]===_0x6f8d('0x11')&&typeof _0xc52f84[_0x6f8d('0x12')]===_0x6f8d('0x11');var _0x3cf98b=_0x4cbeca[_0x6f8d('0x13')];var _0x1ee098=_0x2245f8?0x0:_0xc52f84[_0x6f8d('0x10')];var _0x23aa19=_0x2245f8?_0x4cbeca[_0x6f8d('0x13')]:_0xc52f84['offset']+_0xc52f84[_0x6f8d('0x12')];var _0x110cb3;if(_0x23aa19>=_0x3cf98b){_0x23aa19=_0x3cf98b;_0x110cb3=0xc8;}else{_0x110cb3=0xce;}_0x1b992f[_0x6f8d('0xe')](_0x110cb3);return _0x1b992f[_0x6f8d('0x14')](_0x6f8d('0x15'),_0x1ee098+'-'+_0x23aa19+'/'+_0x3cf98b)[_0x6f8d('0x16')](_0x4cbeca);}return null;};}function saveUpdates(_0x31fe72){return function(_0x4b97ce){if(_0x4b97ce){return _0x4b97ce['update'](_0x31fe72)[_0x6f8d('0x17')](function(_0x5f1412){return _0x5f1412;});}return null;};}function removeEntity(_0x56c508){return function(_0x1995ad){if(_0x1995ad){return _0x1995ad['destroy']()[_0x6f8d('0x17')](function(){_0x56c508['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xaf5d7e){return function(_0x1de7e2){if(!_0x1de7e2){_0xaf5d7e[_0x6f8d('0x18')](0x194);}return _0x1de7e2;};}function handleError(_0x35ba85,_0x317dc9){_0x317dc9=_0x317dc9||0x1f4;return function(_0xde6158){logger[_0x6f8d('0x19')](_0xde6158['stack']);if(_0xde6158[_0x6f8d('0x1a')]){delete _0xde6158['name'];}_0x35ba85[_0x6f8d('0xe')](_0x317dc9)['send'](_0xde6158);};}exports[_0x6f8d('0x1b')]=function(_0x1b09b0,_0x6ddd8d){var _0x26792f={};var _0x112ea0=_[_0x6f8d('0x1c')](db[_0x6f8d('0x1d')]['rawAttributes'],function(_0x381af9){return{'name':_0x381af9[_0x6f8d('0x1e')],'type':_0x381af9[_0x6f8d('0x1f')][_0x6f8d('0x20')]};});_0x26792f=qs[_0x6f8d('0x21')](_0x112ea0,_0x1b09b0);return interaction['findAll'](_0x6f8d('0x22'),_0x1b09b0[_0x6f8d('0x23')],_0x1b09b0[_0x6f8d('0x24')],_0x26792f,_0x112ea0)['then'](respondWithFilteredResult(_0x6ddd8d,_0x26792f))['catch'](handleError(_0x6ddd8d,null));};exports[_0x6f8d('0x25')]=function(_0x5ec1a8,_0x360f52){var _0x95429e={'raw':![],'where':{'id':_0x5ec1a8[_0x6f8d('0x26')]['id']}},_0x10694a={};_0x10694a[_0x6f8d('0x27')]=_[_0x6f8d('0x28')](db['FaxInteraction'][_0x6f8d('0x29')]);_0x10694a[_0x6f8d('0x23')]=_[_0x6f8d('0x28')](_0x5ec1a8['query']);_0x10694a[_0x6f8d('0x2a')]=_[_0x6f8d('0x2b')](_0x10694a['model'],_0x10694a[_0x6f8d('0x23')]);_0x95429e[_0x6f8d('0x2c')]=_[_0x6f8d('0x2b')](_0x10694a[_0x6f8d('0x27')],qs[_0x6f8d('0x2d')](_0x5ec1a8['query'][_0x6f8d('0x2d')]));_0x95429e['attributes']=_0x95429e[_0x6f8d('0x2c')][_0x6f8d('0x2e')]?_0x95429e[_0x6f8d('0x2c')]:_0x10694a[_0x6f8d('0x27')];if(_0x5ec1a8['query'][_0x6f8d('0x2f')]){_0x95429e[_0x6f8d('0x30')]=[{'all':!![]}];}_0x95429e=_['merge']({},_0x95429e,_0x5ec1a8[_0x6f8d('0x31')]);return db[_0x6f8d('0x1d')]['find'](_0x95429e)[_0x6f8d('0x17')](handleEntityNotFound(_0x360f52,null))[_0x6f8d('0x17')](respondWithResult(_0x360f52,null))['catch'](handleError(_0x360f52,null));};exports['create']=function(_0x35c3f2,_0x2dba46){return db['FaxInteraction'][_0x6f8d('0x32')](_0x35c3f2['body'],{})[_0x6f8d('0x17')](respondWithResult(_0x2dba46,0xc9))[_0x6f8d('0x33')](handleError(_0x2dba46,null));};exports[_0x6f8d('0x34')]=function(_0x5db143,_0xca0f9e){if(_0x5db143[_0x6f8d('0x35')]['id']){delete _0x5db143[_0x6f8d('0x35')]['id'];}return db[_0x6f8d('0x1d')][_0x6f8d('0x36')]({'where':{'id':_0x5db143[_0x6f8d('0x26')]['id']}})[_0x6f8d('0x17')](handleEntityNotFound(_0xca0f9e,null))[_0x6f8d('0x17')](saveUpdates(_0x5db143['body'],null))['then'](respondWithResult(_0xca0f9e,null))['catch'](handleError(_0xca0f9e,null));};exports[_0x6f8d('0x37')]=function(_0x4e5190,_0x5641aa){return db[_0x6f8d('0x1d')][_0x6f8d('0x36')]({'where':{'id':_0x4e5190[_0x6f8d('0x26')]['id']}})['then'](handleEntityNotFound(_0x5641aa,null))['then'](removeEntity(_0x5641aa,null))[_0x6f8d('0x33')](handleError(_0x5641aa,null));};exports[_0x6f8d('0x38')]=function(_0xaa37af,_0x55d7f0){return db[_0x6f8d('0x1d')]['describe']()[_0x6f8d('0x17')](respondWithResult(_0x55d7f0,null))[_0x6f8d('0x33')](handleError(_0x55d7f0,null));};exports[_0x6f8d('0x39')]=function(_0x3ae295,_0x1af113){return db[_0x6f8d('0x3a')][_0x6f8d('0x36')]({'where':{'id':_0x3ae295[_0x6f8d('0x26')]['id']}})[_0x6f8d('0x17')](handleEntityNotFound(_0x1af113,null))[_0x6f8d('0x17')](function(_0x21135a){if(_0x21135a){return _0x21135a[_0x6f8d('0x39')](_0x3ae295[_0x6f8d('0x35')][_0x6f8d('0x3b')],_['omit'](_0x3ae295['body'],['ids','id'])||{});}})[_0x6f8d('0x17')](respondWithResult(_0x1af113,null))[_0x6f8d('0x33')](handleError(_0x1af113,null));};exports[_0x6f8d('0x3c')]=function(_0xaf1881,_0x425ae8){var _0x488748={'raw':![],'where':{}};var _0x4e9b9c={};var _0x4efb22={'count':0x0,'rows':[]};return db[_0x6f8d('0x1d')][_0x6f8d('0x3d')]({'where':{'id':_0xaf1881[_0x6f8d('0x26')]['id']}})['then'](handleEntityNotFound(_0x425ae8,null))[_0x6f8d('0x17')](function(_0x57357e){if(_0x57357e){_0x4e9b9c[_0x6f8d('0x27')]=_[_0x6f8d('0x28')](db['FaxMessage'][_0x6f8d('0x29')]);_0x4e9b9c[_0x6f8d('0x23')]=_['keys'](_0xaf1881[_0x6f8d('0x23')]);_0x4e9b9c[_0x6f8d('0x2a')]=_[_0x6f8d('0x2b')](_0x4e9b9c['model'],_0x4e9b9c[_0x6f8d('0x23')]);_0x488748[_0x6f8d('0x2c')]=_[_0x6f8d('0x2b')](_0x4e9b9c[_0x6f8d('0x27')],qs['fields'](_0xaf1881[_0x6f8d('0x23')][_0x6f8d('0x2d')]));_0x488748[_0x6f8d('0x2c')]=_0x488748[_0x6f8d('0x2c')][_0x6f8d('0x2e')]?_0x488748['attributes']:_0x4e9b9c['model'];if(!_0xaf1881['query'][_0x6f8d('0x3e')](_0x6f8d('0x3f'))){_0x488748[_0x6f8d('0x12')]=qs[_0x6f8d('0x12')](_0xaf1881['query'][_0x6f8d('0x12')]);_0x488748[_0x6f8d('0x10')]=qs[_0x6f8d('0x10')](_0xaf1881[_0x6f8d('0x23')][_0x6f8d('0x10')]);}_0x488748[_0x6f8d('0x40')]=qs[_0x6f8d('0x41')](_0xaf1881['query']['sort']);_0x488748[_0x6f8d('0x42')]=qs[_0x6f8d('0x2a')](_[_0x6f8d('0x43')](_0xaf1881[_0x6f8d('0x23')],_0x4e9b9c['filters']));_0x488748[_0x6f8d('0x42')][_0x6f8d('0x44')]=_0x57357e['id'];if(_0xaf1881[_0x6f8d('0x23')]['filter']){_0x488748[_0x6f8d('0x42')]=_[_0x6f8d('0x45')](_0x488748[_0x6f8d('0x42')],{'$or':_[_0x6f8d('0x1c')](_0x488748[_0x6f8d('0x2c')],function(_0x2967e9){var _0x32c9be={};_0x32c9be[_0x2967e9]={'$like':'%'+_0xaf1881[_0x6f8d('0x23')]['filter']+'%'};return _0x32c9be;})});}if(_0xaf1881[_0x6f8d('0x23')][_0x6f8d('0x46')]){var _0x130937=_0xaf1881[_0x6f8d('0x23')]['$gte'][_0x6f8d('0x47')](',');var _0x587511={};_0x587511[_0x130937[0x0]]={'$gte':moment(_0x130937[0x1])['format'](_0x6f8d('0x48'))};_0x488748[_0x6f8d('0x42')]=_[_0x6f8d('0x45')](_0x488748[_0x6f8d('0x42')],_0x587511);}_0x488748=_[_0x6f8d('0x45')]({},_0x488748,_0xaf1881[_0x6f8d('0x31')]);return db['FaxMessage'][_0x6f8d('0x13')]({'where':_0x488748[_0x6f8d('0x42')]})[_0x6f8d('0x17')](function(_0x392f8b){_0x4efb22[_0x6f8d('0x13')]=_0x392f8b;if(_0xaf1881[_0x6f8d('0x23')][_0x6f8d('0x2f')]){_0x488748[_0x6f8d('0x30')]=[{'all':!![]}];}return db[_0x6f8d('0x3a')]['findAll'](_0x488748);})[_0x6f8d('0x17')](function(_0x503665){_0x4efb22[_0x6f8d('0x49')]=_0x503665;return _0x4efb22;});}})[_0x6f8d('0x17')](respondWithFilteredResult(_0x425ae8,_0x488748))[_0x6f8d('0x33')](handleError(_0x425ae8,null));};exports[_0x6f8d('0x4a')]=function(_0x79bb55,_0x223f63){return db[_0x6f8d('0x1d')][_0x6f8d('0x36')]({'where':{'id':_0x79bb55[_0x6f8d('0x26')]['id']}})[_0x6f8d('0x17')](handleEntityNotFound(_0x223f63,null))[_0x6f8d('0x17')](function(_0x2c5f5d){if(_0x2c5f5d){return _0x2c5f5d['setTags'](_0x79bb55[_0x6f8d('0x35')][_0x6f8d('0x3b')],_['omit'](_0x79bb55[_0x6f8d('0x35')],[_0x6f8d('0x3b'),'id'])||{})['spread'](function(){return db['Tag'][_0x6f8d('0x4b')]({'attributes':['id',_0x6f8d('0x1a'),_0x6f8d('0x4c')],'where':{'id':_0x79bb55[_0x6f8d('0x35')][_0x6f8d('0x3b')]}});})['then'](function(_0x438dbc){socket[_0x6f8d('0x4d')](_0x6f8d('0x4e'),{'id':Number(_0x79bb55[_0x6f8d('0x26')]['id']),'tags':_0x438dbc||[]});return{'id':Number(_0x79bb55[_0x6f8d('0x26')]['id']),'tags':_0x438dbc||[]};});}})['then'](respondWithResult(_0x223f63,null))[_0x6f8d('0x33')](handleError(_0x223f63,null));};exports['removeTags']=function(_0x5362c1,_0x587126){return db['FaxInteraction'][_0x6f8d('0x36')]({'where':{'id':_0x5362c1[_0x6f8d('0x26')]['id']}})['then'](handleEntityNotFound(_0x587126,null))[_0x6f8d('0x17')](function(_0x3086a2){if(_0x3086a2){return _0x3086a2[_0x6f8d('0x4f')](_0x5362c1[_0x6f8d('0x23')][_0x6f8d('0x3b')]);}})[_0x6f8d('0x17')](respondWithStatusCode(_0x587126,null))[_0x6f8d('0x33')](handleError(_0x587126,null));};exports[_0x6f8d('0x50')]=function(_0x273972,_0x1146d7){var _0x353304=moment()[_0x6f8d('0x51')]()['toString']();var _0x128bab=path[_0x6f8d('0x52')](config['root'],_0x6f8d('0x53'),_0x6f8d('0x54'),_0x6f8d('0x55'));var _0x12a1f3=path['join'](config[_0x6f8d('0x56')],_0x6f8d('0x53'),_0x6f8d('0x54'),_0x6f8d('0x57'));var _0x5d1409=path['join'](_0x128bab,_0x353304);var _0x266ad2=util[_0x6f8d('0x58')]('transcript-%d-%s.zip',_0x273972[_0x6f8d('0x26')]['id'],_0x353304);var _0x427dc9=path[_0x6f8d('0x52')](_0x128bab,_0x266ad2);var _0xee59d9=[];_0xee59d9[_0x6f8d('0x59')]({'model':db[_0x6f8d('0x5a')],'as':_0x6f8d('0x5a'),'raw':!![]});var _0x8ea4bb=[{'model':db[_0x6f8d('0x3a')],'as':_0x6f8d('0x5b'),'attributes':['id',_0x6f8d('0x35'),_0x6f8d('0x5c')],'include':_0xee59d9}];return db[_0x6f8d('0x1d')][_0x6f8d('0x36')]({'where':{'id':_0x273972[_0x6f8d('0x26')]['id']},'include':_0x8ea4bb})[_0x6f8d('0x17')](handleEntityNotFound(_0x1146d7,null))['then'](function(_0x178fa7){if(_0x178fa7&&_0x178fa7[_0x6f8d('0x5b')]){var _0x28579d=_0x178fa7['get']({'plain':!![]});fs[_0x6f8d('0x5d')](_0x5d1409);for(var _0x26377d=0x0;_0x26377d<_0x28579d[_0x6f8d('0x5b')][_0x6f8d('0x2e')];_0x26377d++){var _0x5573fb=_0x28579d[_0x6f8d('0x5b')][_0x26377d][_0x6f8d('0x5a')];if(_0x5573fb){var _0x2097ee=path[_0x6f8d('0x52')](_0x12a1f3,_0x5573fb[_0x6f8d('0x5e')]);if(fs[_0x6f8d('0x5f')](_0x2097ee)){fs[_0x6f8d('0x60')](_0x2097ee)['pipe'](fs[_0x6f8d('0x61')](path['join'](_0x5d1409,_0x5573fb[_0x6f8d('0x5e')])));}}}return BPromise['resolve']()[_0x6f8d('0x17')](function(){return new BPromise(function(_0x64056e,_0x4b97fb){zipdir(_0x5d1409,{'saveTo':_0x427dc9},function(_0x221df4,_0x38341e){if(_0x221df4)return _0x4b97fb(_0x221df4);return _0x64056e(_0x38341e);});})[_0x6f8d('0x17')](function(){return new BPromise(function(_0x5c8060,_0x11c2b4){rimraf(_0x5d1409,function(_0x33a390){if(_0x33a390)_0x11c2b4(_0x33a390);return _0x5c8060();});});})[_0x6f8d('0x17')](function(){return _0x1146d7[_0x6f8d('0x50')](_0x427dc9,_0x266ad2,function(_0x6590d6){if(_0x6590d6){console[_0x6f8d('0x62')]('err',_0x6590d6);}else{fs[_0x6f8d('0x63')](_0x427dc9);}});});});}else{return _0x1146d7[_0x6f8d('0x18')](0xc8);}})[_0x6f8d('0x33')](handleError(_0x1146d7,null));};
\ No newline at end of file
+var _0xc373=['then','stack','name','send','map','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','fax','user','catch','show','params','model','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','create','body','destroy','describe','addMessage','FaxMessage','find','ids','getMessages','keys','hasOwnProperty','nolimit','sort','pick','FaxInteractionId','filter','where','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','omit','spread','Tag','color','emit','removeTags','download','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','push','Attachment','Messages','get','mkdirSync','basename','createReadStream','pipe','createWriteStream','resolve','err','unlinkSync','rimraf','zip-dir','moment','util','ioredis','../../components/interaction/service','api','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','./faxInteraction.socket','sendStatus','status','end','limit','count','offset','set','Content-Range','json','update'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0xc373,0xb3));var _0x3c37=function(_0x2390bd,_0x212fbd){_0x2390bd=_0x2390bd-0x0;var _0x3a969d=_0xc373[_0x2390bd];return _0x3a969d;};'use strict';var rimraf=require(_0x3c37('0x0'));var zipdir=require(_0x3c37('0x1'));var moment=require(_0x3c37('0x2'));var BPromise=require('bluebird');var util=require(_0x3c37('0x3'));var path=require('path');var fs=require('fs');var _=require('lodash');var Redis=require(_0x3c37('0x4'));var interaction=require(_0x3c37('0x5'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x3c37('0x6'));var config=require(_0x3c37('0x7'));var db=require(_0x3c37('0x8'))['db'];config['redis']=_[_0x3c37('0x9')](config[_0x3c37('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x3c37('0xb'))(new Redis(config[_0x3c37('0xa')]));require(_0x3c37('0xc'))['register'](socket);function respondWithStatusCode(_0x256603,_0x200938){_0x200938=_0x200938||0xcc;return function(_0x2b464b){if(_0x2b464b){return _0x256603[_0x3c37('0xd')](_0x200938);}return _0x256603[_0x3c37('0xe')](_0x200938)[_0x3c37('0xf')]();};}function respondWithResult(_0x2f3398,_0x25d90f){_0x25d90f=_0x25d90f||0xc8;return function(_0x232614){if(_0x232614){return _0x2f3398[_0x3c37('0xe')](_0x25d90f)['json'](_0x232614);}};}function respondWithFilteredResult(_0x54de0c,_0x4c5bda){return function(_0x488593){if(_0x488593){var _0x12b5ea=typeof _0x4c5bda['offset']==='undefined'&&typeof _0x4c5bda[_0x3c37('0x10')]==='undefined';var _0x4c32fb=_0x488593[_0x3c37('0x11')];var _0x1bff4b=_0x12b5ea?0x0:_0x4c5bda[_0x3c37('0x12')];var _0x48b051=_0x12b5ea?_0x488593[_0x3c37('0x11')]:_0x4c5bda[_0x3c37('0x12')]+_0x4c5bda[_0x3c37('0x10')];var _0x1fef65;if(_0x48b051>=_0x4c32fb){_0x48b051=_0x4c32fb;_0x1fef65=0xc8;}else{_0x1fef65=0xce;}_0x54de0c[_0x3c37('0xe')](_0x1fef65);return _0x54de0c[_0x3c37('0x13')](_0x3c37('0x14'),_0x1bff4b+'-'+_0x48b051+'/'+_0x4c32fb)[_0x3c37('0x15')](_0x488593);}return null;};}function saveUpdates(_0x4e05ef){return function(_0x541abe){if(_0x541abe){return _0x541abe[_0x3c37('0x16')](_0x4e05ef)[_0x3c37('0x17')](function(_0x28600b){return _0x28600b;});}return null;};}function removeEntity(_0x26200d){return function(_0x280924){if(_0x280924){return _0x280924['destroy']()['then'](function(){_0x26200d[_0x3c37('0xe')](0xcc)[_0x3c37('0xf')]();});}};}function handleEntityNotFound(_0x2fb1c4){return function(_0x293810){if(!_0x293810){_0x2fb1c4[_0x3c37('0xd')](0x194);}return _0x293810;};}function handleError(_0x17812e,_0x22ca34){_0x22ca34=_0x22ca34||0x1f4;return function(_0x4c2f31){logger['error'](_0x4c2f31[_0x3c37('0x18')]);if(_0x4c2f31[_0x3c37('0x19')]){delete _0x4c2f31[_0x3c37('0x19')];}_0x17812e[_0x3c37('0xe')](_0x22ca34)[_0x3c37('0x1a')](_0x4c2f31);};}exports['index']=function(_0xaacf67,_0x45c899){var _0x323910={};var _0x50f640=_[_0x3c37('0x1b')](db[_0x3c37('0x1c')][_0x3c37('0x1d')],function(_0xa0e082){return{'name':_0xa0e082[_0x3c37('0x1e')],'type':_0xa0e082[_0x3c37('0x1f')]['key']};});_0x323910=qs[_0x3c37('0x20')](_0x50f640,_0xaacf67);return interaction[_0x3c37('0x21')](_0x3c37('0x22'),_0xaacf67['query'],_0xaacf67[_0x3c37('0x23')],_0x323910,_0x50f640)['then'](respondWithFilteredResult(_0x45c899,_0x323910))[_0x3c37('0x24')](handleError(_0x45c899,null));};exports[_0x3c37('0x25')]=function(_0x4c017d,_0x26aef2){var _0x34cca7={'raw':![],'where':{'id':_0x4c017d[_0x3c37('0x26')]['id']}},_0x51f761={};_0x51f761[_0x3c37('0x27')]=_['keys'](db[_0x3c37('0x1c')]['rawAttributes']);_0x51f761['query']=_['keys'](_0x4c017d[_0x3c37('0x28')]);_0x51f761[_0x3c37('0x29')]=_[_0x3c37('0x2a')](_0x51f761['model'],_0x51f761['query']);_0x34cca7[_0x3c37('0x2b')]=_['intersection'](_0x51f761['model'],qs['fields'](_0x4c017d[_0x3c37('0x28')][_0x3c37('0x2c')]));_0x34cca7[_0x3c37('0x2b')]=_0x34cca7[_0x3c37('0x2b')][_0x3c37('0x2d')]?_0x34cca7[_0x3c37('0x2b')]:_0x51f761['model'];if(_0x4c017d[_0x3c37('0x28')][_0x3c37('0x2e')]){_0x34cca7[_0x3c37('0x2f')]=[{'all':!![]}];}_0x34cca7=_[_0x3c37('0x30')]({},_0x34cca7,_0x4c017d[_0x3c37('0x31')]);return db[_0x3c37('0x1c')]['find'](_0x34cca7)[_0x3c37('0x17')](handleEntityNotFound(_0x26aef2,null))[_0x3c37('0x17')](respondWithResult(_0x26aef2,null))[_0x3c37('0x24')](handleError(_0x26aef2,null));};exports[_0x3c37('0x32')]=function(_0x2258f0,_0x193e86){return db[_0x3c37('0x1c')][_0x3c37('0x32')](_0x2258f0[_0x3c37('0x33')],{})[_0x3c37('0x17')](respondWithResult(_0x193e86,0xc9))[_0x3c37('0x24')](handleError(_0x193e86,null));};exports[_0x3c37('0x16')]=function(_0x2b9f4a,_0x112f29){if(_0x2b9f4a['body']['id']){delete _0x2b9f4a['body']['id'];}return db[_0x3c37('0x1c')]['find']({'where':{'id':_0x2b9f4a[_0x3c37('0x26')]['id']}})['then'](handleEntityNotFound(_0x112f29,null))[_0x3c37('0x17')](saveUpdates(_0x2b9f4a[_0x3c37('0x33')],null))['then'](respondWithResult(_0x112f29,null))[_0x3c37('0x24')](handleError(_0x112f29,null));};exports[_0x3c37('0x34')]=function(_0x26b31,_0x52c7be){return db[_0x3c37('0x1c')]['find']({'where':{'id':_0x26b31[_0x3c37('0x26')]['id']}})[_0x3c37('0x17')](handleEntityNotFound(_0x52c7be,null))[_0x3c37('0x17')](removeEntity(_0x52c7be,null))[_0x3c37('0x24')](handleError(_0x52c7be,null));};exports[_0x3c37('0x35')]=function(_0x2c9c71,_0x82d67){return db[_0x3c37('0x1c')]['describe']()[_0x3c37('0x17')](respondWithResult(_0x82d67,null))[_0x3c37('0x24')](handleError(_0x82d67,null));};exports[_0x3c37('0x36')]=function(_0x283791,_0x56984d){return db[_0x3c37('0x37')][_0x3c37('0x38')]({'where':{'id':_0x283791[_0x3c37('0x26')]['id']}})['then'](handleEntityNotFound(_0x56984d,null))[_0x3c37('0x17')](function(_0x3db277){if(_0x3db277){return _0x3db277['addMessage'](_0x283791[_0x3c37('0x33')][_0x3c37('0x39')],_['omit'](_0x283791[_0x3c37('0x33')],[_0x3c37('0x39'),'id'])||{});}})[_0x3c37('0x17')](respondWithResult(_0x56984d,null))['catch'](handleError(_0x56984d,null));};exports[_0x3c37('0x3a')]=function(_0x35de14,_0x2288e2){var _0x4b748e={'raw':![],'where':{}};var _0x1e5624={};var _0xe9c03f={'count':0x0,'rows':[]};return db['FaxInteraction']['findOne']({'where':{'id':_0x35de14[_0x3c37('0x26')]['id']}})[_0x3c37('0x17')](handleEntityNotFound(_0x2288e2,null))[_0x3c37('0x17')](function(_0x46f5ff){if(_0x46f5ff){_0x1e5624[_0x3c37('0x27')]=_[_0x3c37('0x3b')](db[_0x3c37('0x37')][_0x3c37('0x1d')]);_0x1e5624[_0x3c37('0x28')]=_[_0x3c37('0x3b')](_0x35de14[_0x3c37('0x28')]);_0x1e5624[_0x3c37('0x29')]=_[_0x3c37('0x2a')](_0x1e5624[_0x3c37('0x27')],_0x1e5624[_0x3c37('0x28')]);_0x4b748e[_0x3c37('0x2b')]=_[_0x3c37('0x2a')](_0x1e5624['model'],qs[_0x3c37('0x2c')](_0x35de14[_0x3c37('0x28')][_0x3c37('0x2c')]));_0x4b748e[_0x3c37('0x2b')]=_0x4b748e['attributes']['length']?_0x4b748e[_0x3c37('0x2b')]:_0x1e5624[_0x3c37('0x27')];if(!_0x35de14[_0x3c37('0x28')][_0x3c37('0x3c')](_0x3c37('0x3d'))){_0x4b748e[_0x3c37('0x10')]=qs[_0x3c37('0x10')](_0x35de14[_0x3c37('0x28')]['limit']);_0x4b748e[_0x3c37('0x12')]=qs[_0x3c37('0x12')](_0x35de14[_0x3c37('0x28')]['offset']);}_0x4b748e['order']=qs[_0x3c37('0x3e')](_0x35de14[_0x3c37('0x28')][_0x3c37('0x3e')]);_0x4b748e['where']=qs['filters'](_[_0x3c37('0x3f')](_0x35de14['query'],_0x1e5624[_0x3c37('0x29')]));_0x4b748e['where'][_0x3c37('0x40')]=_0x46f5ff['id'];if(_0x35de14[_0x3c37('0x28')][_0x3c37('0x41')]){_0x4b748e['where']=_[_0x3c37('0x30')](_0x4b748e[_0x3c37('0x42')],{'$or':_[_0x3c37('0x1b')](_0x4b748e['attributes'],function(_0x3586a5){var _0x5a231d={};_0x5a231d[_0x3586a5]={'$like':'%'+_0x35de14[_0x3c37('0x28')][_0x3c37('0x41')]+'%'};return _0x5a231d;})});}if(_0x35de14[_0x3c37('0x28')]['$gte']){var _0x2524f9=_0x35de14[_0x3c37('0x28')][_0x3c37('0x43')][_0x3c37('0x44')](',');var _0x65377={};_0x65377[_0x2524f9[0x0]]={'$gte':moment(_0x2524f9[0x1])[_0x3c37('0x45')](_0x3c37('0x46'))};_0x4b748e[_0x3c37('0x42')]=_[_0x3c37('0x30')](_0x4b748e[_0x3c37('0x42')],_0x65377);}_0x4b748e=_[_0x3c37('0x30')]({},_0x4b748e,_0x35de14[_0x3c37('0x31')]);return db[_0x3c37('0x37')]['count']({'where':_0x4b748e['where']})[_0x3c37('0x17')](function(_0x1f14cb){_0xe9c03f['count']=_0x1f14cb;if(_0x35de14[_0x3c37('0x28')][_0x3c37('0x2e')]){_0x4b748e[_0x3c37('0x2f')]=[{'all':!![]}];}return db['FaxMessage'][_0x3c37('0x21')](_0x4b748e);})[_0x3c37('0x17')](function(_0x429e4c){_0xe9c03f[_0x3c37('0x47')]=_0x429e4c;return _0xe9c03f;});}})[_0x3c37('0x17')](respondWithFilteredResult(_0x2288e2,_0x4b748e))[_0x3c37('0x24')](handleError(_0x2288e2,null));};exports[_0x3c37('0x48')]=function(_0xb05cd2,_0x217ac1){return db[_0x3c37('0x1c')][_0x3c37('0x38')]({'where':{'id':_0xb05cd2['params']['id']}})[_0x3c37('0x17')](handleEntityNotFound(_0x217ac1,null))[_0x3c37('0x17')](function(_0x155167){if(_0x155167){return _0x155167[_0x3c37('0x49')](_0xb05cd2[_0x3c37('0x33')][_0x3c37('0x39')],_[_0x3c37('0x4a')](_0xb05cd2[_0x3c37('0x33')],['ids','id'])||{})[_0x3c37('0x4b')](function(){return db[_0x3c37('0x4c')][_0x3c37('0x21')]({'attributes':['id',_0x3c37('0x19'),_0x3c37('0x4d')],'where':{'id':_0xb05cd2[_0x3c37('0x33')][_0x3c37('0x39')]}});})[_0x3c37('0x17')](function(_0x5de0a4){socket[_0x3c37('0x4e')]('faxInteractionTags:save',{'id':Number(_0xb05cd2[_0x3c37('0x26')]['id']),'tags':_0x5de0a4||[]});return{'id':Number(_0xb05cd2[_0x3c37('0x26')]['id']),'tags':_0x5de0a4||[]};});}})[_0x3c37('0x17')](respondWithResult(_0x217ac1,null))['catch'](handleError(_0x217ac1,null));};exports[_0x3c37('0x4f')]=function(_0x24980f,_0x170948){return db[_0x3c37('0x1c')][_0x3c37('0x38')]({'where':{'id':_0x24980f[_0x3c37('0x26')]['id']}})[_0x3c37('0x17')](handleEntityNotFound(_0x170948,null))[_0x3c37('0x17')](function(_0x26ad30){if(_0x26ad30){return _0x26ad30['removeTags'](_0x24980f[_0x3c37('0x28')][_0x3c37('0x39')]);}})[_0x3c37('0x17')](respondWithStatusCode(_0x170948,null))[_0x3c37('0x24')](handleError(_0x170948,null));};exports[_0x3c37('0x50')]=function(_0x10e480,_0x3aed2f){var _0x22008f=moment()[_0x3c37('0x51')]()[_0x3c37('0x52')]();var _0x453df6=path[_0x3c37('0x53')](config[_0x3c37('0x54')],_0x3c37('0x55'),_0x3c37('0x56'),'tmp');var _0x44efa2=path[_0x3c37('0x53')](config['root'],_0x3c37('0x55'),_0x3c37('0x56'),_0x3c37('0x57'));var _0x216b50=path['join'](_0x453df6,_0x22008f);var _0x3d7e8a=util[_0x3c37('0x45')](_0x3c37('0x58'),_0x10e480[_0x3c37('0x26')]['id'],_0x22008f);var _0x5b7c09=path[_0x3c37('0x53')](_0x453df6,_0x3d7e8a);var _0x50e19f=[];_0x50e19f[_0x3c37('0x59')]({'model':db[_0x3c37('0x5a')],'as':_0x3c37('0x5a'),'raw':!![]});var _0x4e04ec=[{'model':db[_0x3c37('0x37')],'as':_0x3c37('0x5b'),'attributes':['id',_0x3c37('0x33'),'createdAt'],'include':_0x50e19f}];return db[_0x3c37('0x1c')][_0x3c37('0x38')]({'where':{'id':_0x10e480[_0x3c37('0x26')]['id']},'include':_0x4e04ec})[_0x3c37('0x17')](handleEntityNotFound(_0x3aed2f,null))['then'](function(_0x5dba8c){if(_0x5dba8c&&_0x5dba8c[_0x3c37('0x5b')]){var _0x471985=_0x5dba8c[_0x3c37('0x5c')]({'plain':!![]});fs[_0x3c37('0x5d')](_0x216b50);for(var _0x5e07e1=0x0;_0x5e07e1<_0x471985['Messages'][_0x3c37('0x2d')];_0x5e07e1++){var _0x140304=_0x471985[_0x3c37('0x5b')][_0x5e07e1]['Attachment'];if(_0x140304){var _0x41faf6=path[_0x3c37('0x53')](_0x44efa2,_0x140304[_0x3c37('0x5e')]);if(fs['existsSync'](_0x41faf6)){fs[_0x3c37('0x5f')](_0x41faf6)[_0x3c37('0x60')](fs[_0x3c37('0x61')](path[_0x3c37('0x53')](_0x216b50,_0x140304[_0x3c37('0x5e')])));}}}return BPromise[_0x3c37('0x62')]()[_0x3c37('0x17')](function(){return new BPromise(function(_0x4387ad,_0x4f0666){zipdir(_0x216b50,{'saveTo':_0x5b7c09},function(_0x42545c,_0x392b37){if(_0x42545c)return _0x4f0666(_0x42545c);return _0x4387ad(_0x392b37);});})[_0x3c37('0x17')](function(){return new BPromise(function(_0x21b90f,_0x4516f9){rimraf(_0x216b50,function(_0x535fcb){if(_0x535fcb)_0x4516f9(_0x535fcb);return _0x21b90f();});});})[_0x3c37('0x17')](function(){return _0x3aed2f[_0x3c37('0x50')](_0x5b7c09,_0x3d7e8a,function(_0x4827ed){if(_0x4827ed){console['log'](_0x3c37('0x63'),_0x4827ed);}else{fs[_0x3c37('0x64')](_0x5b7c09);}});});});}else{return _0x3aed2f[_0x3c37('0xd')](0xc8);}})[_0x3c37('0x24')](handleError(_0x3aed2f,null));};
\ No newline at end of file
index d8806ca..ba16c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6a=['Users','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue'];(function(_0x58d5d7,_0x199616){var _0x22f407=function(_0x10ac41){while(--_0x10ac41){_0x58d5d7['push'](_0x58d5d7['shift']());}};_0x22f407(++_0x199616);}(_0x3a6a,0x1e3));var _0xa3a6=function(_0x2a56ad,_0x2b94bf){_0x2a56ad=_0x2a56ad-0x0;var _0x425175=_0x3a6a[_0x2a56ad];return _0x425175;};'use strict';var EventEmitter=require(_0xa3a6('0x0'));var FaxInteraction=require(_0xa3a6('0x1'))['db'][_0xa3a6('0x2')];var FaxMessage=require(_0xa3a6('0x1'))['db'][_0xa3a6('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xa3a6('0x4')](0x0);var events={'afterCreate':_0xa3a6('0x5'),'afterUpdate':_0xa3a6('0x6'),'afterDestroy':_0xa3a6('0x7')};function emitEvent(_0x454b3d){return function(_0x21e54c,_0x3e1961,_0x3cc471){_0x21e54c[_0xa3a6('0x8')]({'attributes':['id'],'raw':!![]})[_0xa3a6('0x9')](function(_0xf5a9fb){_0x21e54c[_0xa3a6('0xa')](_0xa3a6('0xb'),_0xf5a9fb['map'](function(_0x1f804b){return{'id':_0x1f804b['id']};}));return FaxMessage[_0xa3a6('0xc')]({'where':{'FaxInteractionId':_0x21e54c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x69bd04){_0x21e54c[_0xa3a6('0xa')](_0xa3a6('0xd'),_0x69bd04['length']);FaxInteractionEvents['emit'](_0x454b3d+':'+_0x21e54c['id'],_0x21e54c);FaxInteractionEvents[_0xa3a6('0xe')](_0x454b3d,_0x21e54c);_0x3cc471(null);})[_0xa3a6('0xf')](_0x3cc471(null));};}for(var e in events){if(events[_0xa3a6('0x10')](e)){var event=events[e];FaxInteraction[_0xa3a6('0x11')](e,emitEvent(event));}}module[_0xa3a6('0x12')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x7de1=['remove','getUsers','then','setDataValue','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7de1,0xe9));var _0x17de=function(_0x1d80be,_0x3a60ff){_0x1d80be=_0x1d80be-0x0;var _0xf9a4f3=_0x7de1[_0x1d80be];return _0xf9a4f3;};'use strict';var EventEmitter=require(_0x17de('0x0'));var FaxInteraction=require('../../mysqldb')['db']['FaxInteraction'];var FaxMessage=require(_0x17de('0x1'))['db'][_0x17de('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x17de('0x3')](0x0);var events={'afterCreate':_0x17de('0x4'),'afterUpdate':'update','afterDestroy':_0x17de('0x5')};function emitEvent(_0x594021){return function(_0x222146,_0xb2ea6d,_0x2450d8){_0x222146[_0x17de('0x6')]({'attributes':['id'],'raw':!![]})[_0x17de('0x7')](function(_0x4b8170){_0x222146[_0x17de('0x8')]('Users',_0x4b8170[_0x17de('0x9')](function(_0x3faa4b){return{'id':_0x3faa4b['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x222146['id'],'direction':'in','read':![]},'raw':!![]});})[_0x17de('0x7')](function(_0x56b02d){_0x222146['setDataValue'](_0x17de('0xa'),_0x56b02d[_0x17de('0xb')]);FaxInteractionEvents[_0x17de('0xc')](_0x594021+':'+_0x222146['id'],_0x222146);FaxInteractionEvents[_0x17de('0xc')](_0x594021,_0x222146);_0x2450d8(null);})[_0x17de('0xd')](_0x2450d8(null));};}for(var e in events){if(events[_0x17de('0xe')](e)){var event=events[e];FaxInteraction[_0x17de('0xf')](e,emitEvent(event));}}module[_0x17de('0x10')]=FaxInteractionEvents;
\ No newline at end of file
index a946b54..71eca9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['request-promise','rimraf','exports','define','FaxInteraction','fax_interactions','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x398294,_0x5ceb9d){var _0x2a872d=function(_0x390883){while(--_0x390883){_0x398294['push'](_0x398294['shift']());}};_0x2a872d(++_0x5ceb9d);}(_0xbff5,0x1bc));var _0x5bff=function(_0xb6df33,_0x2da350){_0xb6df33=_0xb6df33-0x0;var _0x3869a2=_0xbff5[_0xb6df33];return _0x3869a2;};'use strict';var _=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var logger=require(_0x5bff('0x2'))(_0x5bff('0x3'));var moment=require(_0x5bff('0x4'));var BPromise=require(_0x5bff('0x5'));var rp=require(_0x5bff('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5bff('0x7'));var config=require('../../config/environment');var attributes=require('./faxInteraction.attributes');module[_0x5bff('0x8')]=function(_0x1d8650,_0x151add){return _0x1d8650[_0x5bff('0x9')](_0x5bff('0xa'),attributes,{'tableName':_0x5bff('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1acb49,_0x139c99,_0x3eb6f9){if(_0x1acb49['changed'](_0x5bff('0xc'))){_0x1acb49['closedAt']=moment()[_0x5bff('0xd')](_0x5bff('0xe'));}_0x3eb6f9(null,_0x1acb49);}}});};
\ No newline at end of file
+var _0x7373=['request-promise','path','rimraf','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','changed','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x7373,0x1db));var _0x3737=function(_0x3e882f,_0x1e2cb4){_0x3e882f=_0x3e882f-0x0;var _0x2a5ca3=_0x7373[_0x3e882f];return _0x2a5ca3;};'use strict';var _=require(_0x3737('0x0'));var util=require('util');var logger=require(_0x3737('0x1'))(_0x3737('0x2'));var moment=require(_0x3737('0x3'));var BPromise=require(_0x3737('0x4'));var rp=require(_0x3737('0x5'));var fs=require('fs');var path=require(_0x3737('0x6'));var rimraf=require(_0x3737('0x7'));var config=require('../../config/environment');var attributes=require(_0x3737('0x8'));module[_0x3737('0x9')]=function(_0x4a09e4,_0x161ea0){return _0x4a09e4[_0x3737('0xa')](_0x3737('0xb'),attributes,{'tableName':_0x3737('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x227c95,_0x4c32cb,_0x3eccf4){if(_0x227c95[_0x3737('0xd')]('closed')){_0x227c95['closedAt']=moment()['format'](_0x3737('0xe'));}_0x3eccf4(null,_0x227c95);}}});};
\ No newline at end of file
index 4591743..7dd27e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4db=['AddTags','util','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','redis','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateFaxInteraction','update','body','options','raw','where','limit','then','catch','AddTagsToFaxInteraction','FaxInteraction','find','addTags','ids','omit','spread'];(function(_0x366656,_0x777e6e){var _0x380620=function(_0x269d0e){while(--_0x269d0e){_0x366656['push'](_0x366656['shift']());}};_0x380620(++_0x777e6e);}(_0xa4db,0xb5));var _0xba4d=function(_0xa6f99a,_0x14fce7){_0xa6f99a=_0xa6f99a-0x0;var _0x576d9d=_0xa4db[_0xa6f99a];return _0x576d9d;};'use strict';var _=require('lodash');var util=require(_0xba4d('0x0'));var moment=require('moment');var BPromise=require(_0xba4d('0x1'));var rs=require(_0xba4d('0x2'));var fs=require('fs');var Redis=require(_0xba4d('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xba4d('0x4'))(_0xba4d('0x5'));var config=require('../../config/environment');var jayson=require(_0xba4d('0x6'));var client=jayson[_0xba4d('0x7')]['http']({'port':0x232a});config[_0xba4d('0x8')]=_['defaults'](config[_0xba4d('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xba4d('0x8')]));require('./faxInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x17ea50,_0x57d682,_0x5a6b68){return new BPromise(function(_0xf28bfc,_0x2bd72e){return client['request'](_0x17ea50,_0x5a6b68)['then'](function(_0x53b7f1){logger[_0xba4d('0x9')](_0xba4d('0xa'),_0x57d682,_0xba4d('0xb'));logger[_0xba4d('0xc')](_0xba4d('0xd'),_0x57d682,_0xba4d('0xb'),JSON[_0xba4d('0xe')](_0x53b7f1));if(_0x53b7f1[_0xba4d('0xf')]){if(_0x53b7f1[_0xba4d('0xf')][_0xba4d('0x10')]===0x1f4){logger['error'](_0xba4d('0xa'),_0x57d682,_0x53b7f1[_0xba4d('0xf')][_0xba4d('0x11')]);return _0x2bd72e(_0x53b7f1['error'][_0xba4d('0x11')]);}logger[_0xba4d('0xf')](_0xba4d('0xa'),_0x57d682,_0x53b7f1['error'][_0xba4d('0x11')]);return _0xf28bfc(_0x53b7f1[_0xba4d('0xf')]['message']);}else{logger[_0xba4d('0x9')](_0xba4d('0xa'),_0x57d682,_0xba4d('0xb'));_0xf28bfc(_0x53b7f1[_0xba4d('0x12')][_0xba4d('0x11')]);}})['catch'](function(_0x611c79){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x57d682,_0x611c79);_0x2bd72e(_0x611c79);});});}exports[_0xba4d('0x13')]=function(_0x2dc260){var _0x5d1ade=this;return new Promise(function(_0x252541,_0x781f93){return db['FaxInteraction'][_0xba4d('0x14')](_0x2dc260[_0xba4d('0x15')],{'raw':_0x2dc260[_0xba4d('0x16')]?_0x2dc260[_0xba4d('0x16')][_0xba4d('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2dc260[_0xba4d('0x16')]?_0x2dc260[_0xba4d('0x16')][_0xba4d('0x18')]||null:null,'attributes':_0x2dc260[_0xba4d('0x16')]?_0x2dc260[_0xba4d('0x16')]['attributes']||null:null,'limit':_0x2dc260['options']?_0x2dc260[_0xba4d('0x16')][_0xba4d('0x19')]||null:null})[_0xba4d('0x1a')](function(_0xc3619){logger[_0xba4d('0x9')](_0xba4d('0x13'),_0x2dc260);logger[_0xba4d('0xc')](_0xba4d('0x13'),_0x2dc260,JSON['stringify'](_0xc3619));_0x252541(_0xc3619);})[_0xba4d('0x1b')](function(_0xef3eda){logger['error']('UpdateFaxInteraction',_0xef3eda[_0xba4d('0x11')],_0x2dc260);_0x781f93(_0x5d1ade['error'](0x1f4,_0xef3eda['message']));});});};exports[_0xba4d('0x1c')]=function(_0x31a5a2){return new Promise(function(_0x31b7d7,_0x21ec99){return db[_0xba4d('0x1d')][_0xba4d('0x1e')]({'where':_0x31a5a2[_0xba4d('0x16')]?_0x31a5a2[_0xba4d('0x16')]['where']||null:null})['then'](function(_0xeaa44c){if(_0xeaa44c){return _0xeaa44c[_0xba4d('0x1f')](_0x31a5a2['body'][_0xba4d('0x20')],_[_0xba4d('0x21')](_0x31a5a2[_0xba4d('0x15')],[_0xba4d('0x20'),'id'])||{});}})[_0xba4d('0x22')](function(_0x262d6a){logger['info'](_0xba4d('0x23'),_0x31a5a2);logger['debug'](_0xba4d('0x23'),_0x31a5a2,JSON['stringify'](_0x262d6a));_0x31b7d7(_0x262d6a);})[_0xba4d('0x1b')](function(_0x2eeb02){logger['error'](_0xba4d('0x23'),_0x2eeb02[_0xba4d('0x11')],_0x31a5a2);_0x21ec99(_this[_0xba4d('0xf')](0x1f4,_0x2eeb02[_0xba4d('0x11')]));});});};
\ No newline at end of file
+var _0x9271=['message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','attributes','limit','AddTagsToFaxInteraction','find','addTags','ids','spread','AddTags','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x344ea8,_0x2f3904){var _0xad3e9c=function(_0x5ca14){while(--_0x5ca14){_0x344ea8['push'](_0x344ea8['shift']());}};_0xad3e9c(++_0x2f3904);}(_0x9271,0x1e4));var _0x1927=function(_0x1d7519,_0x294bf5){_0x1d7519=_0x1d7519-0x0;var _0x5c3f1a=_0x9271[_0x1d7519];return _0x5c3f1a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1927('0x0'));var BPromise=require(_0x1927('0x1'));var rs=require(_0x1927('0x2'));var fs=require('fs');var Redis=require(_0x1927('0x3'));var db=require(_0x1927('0x4'))['db'];var utils=require(_0x1927('0x5'));var logger=require('../../config/logger')(_0x1927('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x1927('0x7')]({'port':0x232a});config[_0x1927('0x8')]=_[_0x1927('0x9')](config[_0x1927('0x8')],{'host':_0x1927('0xa'),'port':0x18eb});var socket=require(_0x1927('0xb'))(new Redis(config[_0x1927('0x8')]));require(_0x1927('0xc'))['register'](socket);function respondWithRpcPromise(_0x23949c,_0x27dfac,_0x24a7d9){return new BPromise(function(_0xaf5009,_0x25c395){return client[_0x1927('0xd')](_0x23949c,_0x24a7d9)[_0x1927('0xe')](function(_0x32b3a8){logger[_0x1927('0xf')](_0x1927('0x10'),_0x27dfac,'request\x20sent');logger[_0x1927('0x11')](_0x1927('0x12'),_0x27dfac,_0x1927('0x13'),JSON[_0x1927('0x14')](_0x32b3a8));if(_0x32b3a8['error']){if(_0x32b3a8[_0x1927('0x15')][_0x1927('0x16')]===0x1f4){logger[_0x1927('0x15')](_0x1927('0x10'),_0x27dfac,_0x32b3a8[_0x1927('0x15')][_0x1927('0x17')]);return _0x25c395(_0x32b3a8[_0x1927('0x15')][_0x1927('0x17')]);}logger[_0x1927('0x15')](_0x1927('0x10'),_0x27dfac,_0x32b3a8[_0x1927('0x15')]['message']);return _0xaf5009(_0x32b3a8['error'][_0x1927('0x17')]);}else{logger[_0x1927('0xf')]('FaxInteraction,\x20%s,\x20%s',_0x27dfac,_0x1927('0x13'));_0xaf5009(_0x32b3a8[_0x1927('0x18')][_0x1927('0x17')]);}})[_0x1927('0x19')](function(_0x3e318e){logger['error'](_0x1927('0x10'),_0x27dfac,_0x3e318e);_0x25c395(_0x3e318e);});});}exports[_0x1927('0x1a')]=function(_0x57b5d1){var _0x781273=this;return new Promise(function(_0x201150,_0x391131){return db[_0x1927('0x1b')][_0x1927('0x1c')](_0x57b5d1[_0x1927('0x1d')],{'raw':_0x57b5d1[_0x1927('0x1e')]?_0x57b5d1['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x57b5d1[_0x1927('0x1e')]?_0x57b5d1[_0x1927('0x1e')]['where']||null:null,'attributes':_0x57b5d1[_0x1927('0x1e')]?_0x57b5d1['options'][_0x1927('0x1f')]||null:null,'limit':_0x57b5d1[_0x1927('0x1e')]?_0x57b5d1[_0x1927('0x1e')][_0x1927('0x20')]||null:null})[_0x1927('0xe')](function(_0x5885cd){logger[_0x1927('0xf')](_0x1927('0x1a'),_0x57b5d1);logger[_0x1927('0x11')](_0x1927('0x1a'),_0x57b5d1,JSON[_0x1927('0x14')](_0x5885cd));_0x201150(_0x5885cd);})[_0x1927('0x19')](function(_0x44de57){logger[_0x1927('0x15')](_0x1927('0x1a'),_0x44de57['message'],_0x57b5d1);_0x391131(_0x781273[_0x1927('0x15')](0x1f4,_0x44de57[_0x1927('0x17')]));});});};exports[_0x1927('0x21')]=function(_0x503cba){return new Promise(function(_0x5c7c8d,_0x3194eb){return db[_0x1927('0x1b')][_0x1927('0x22')]({'where':_0x503cba[_0x1927('0x1e')]?_0x503cba[_0x1927('0x1e')]['where']||null:null})[_0x1927('0xe')](function(_0x151b63){if(_0x151b63){return _0x151b63[_0x1927('0x23')](_0x503cba[_0x1927('0x1d')][_0x1927('0x24')],_['omit'](_0x503cba['body'],[_0x1927('0x24'),'id'])||{});}})[_0x1927('0x25')](function(_0x3af6e8){logger[_0x1927('0xf')](_0x1927('0x26'),_0x503cba);logger[_0x1927('0x11')]('AddTags',_0x503cba,JSON[_0x1927('0x14')](_0x3af6e8));_0x5c7c8d(_0x3af6e8);})[_0x1927('0x19')](function(_0x31957d){logger[_0x1927('0x15')](_0x1927('0x26'),_0x31957d['message'],_0x503cba);_0x3194eb(_this[_0x1927('0x15')](0x1f4,_0x31957d[_0x1927('0x17')]));});});};
\ No newline at end of file
index 6095775..036aa99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x260e=['emit','register','length','faxInteraction:','save','remove','update'];(function(_0x57d4c5,_0x38e1ad){var _0x52d29b=function(_0x27bc3c){while(--_0x27bc3c){_0x57d4c5['push'](_0x57d4c5['shift']());}};_0x52d29b(++_0x38e1ad);}(_0x260e,0x66));var _0xe260=function(_0x270def,_0x4107a8){_0x270def=_0x270def-0x0;var _0x2ec6ed=_0x260e[_0x270def];return _0x2ec6ed;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0xe260('0x0'),_0xe260('0x1'),_0xe260('0x2')];function createListener(_0x55611a,_0x3e2d97){return function(_0x3405c9){_0x3e2d97[_0xe260('0x3')](_0x55611a,_0x3405c9);};}function removeListener(_0x424041,_0x414179){return function(){FaxInteractionEvents['removeListener'](_0x424041,_0x414179);};}exports[_0xe260('0x4')]=function(_0x3bdd75){for(var _0x2ebf1c=0x0,_0x1d0620=events[_0xe260('0x5')];_0x2ebf1c<_0x1d0620;_0x2ebf1c++){var _0x397374=events[_0x2ebf1c];var _0x24b45b=createListener(_0xe260('0x6')+_0x397374,_0x3bdd75);FaxInteractionEvents['on'](_0x397374,_0x24b45b);}};
\ No newline at end of file
+var _0xc663=['length','faxInteraction:','./faxInteraction.events','save','update','emit','removeListener','register'];(function(_0x3176bf,_0x4e6834){var _0x355328=function(_0x27ae38){while(--_0x27ae38){_0x3176bf['push'](_0x3176bf['shift']());}};_0x355328(++_0x4e6834);}(_0xc663,0x1ca));var _0x3c66=function(_0x3df223,_0x1740fc){_0x3df223=_0x3df223-0x0;var _0x562d11=_0xc663[_0x3df223];return _0x562d11;};'use strict';var FaxInteractionEvents=require(_0x3c66('0x0'));var events=[_0x3c66('0x1'),'remove',_0x3c66('0x2')];function createListener(_0x324530,_0x517a5b){return function(_0xcf2d5d){_0x517a5b[_0x3c66('0x3')](_0x324530,_0xcf2d5d);};}function removeListener(_0x9fbc8c,_0x2a63a6){return function(){FaxInteractionEvents[_0x3c66('0x4')](_0x9fbc8c,_0x2a63a6);};}exports[_0x3c66('0x5')]=function(_0x312fda){for(var _0x171da9=0x0,_0x3d22c2=events[_0x3c66('0x6')];_0x171da9<_0x3d22c2;_0x171da9++){var _0x2e8a86=events[_0x171da9];var _0x22d9a6=createListener(_0x3c66('0x7')+_0x2e8a86,_0x312fda);FaxInteractionEvents['on'](_0x2e8a86,_0x22d9a6);}};
\ No newline at end of file
index 5195d6c..edbcb6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa43a=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','index','get','/describe','isAuthenticated','/:id','/:id/messages','getMessages','/:id/download','download','post','create','/:id/tags','fax','addTags','put','tracked','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout'];(function(_0x1cab32,_0x5e9600){var _0x4a8cd5=function(_0x2ceaa6){while(--_0x2ceaa6){_0x1cab32['push'](_0x1cab32['shift']());}};_0x4a8cd5(++_0x5e9600);}(_0xa43a,0xe3));var _0xaa43=function(_0xf21264,_0x6745e0){_0xf21264=_0xf21264-0x0;var _0x1def0f=_0xa43a[_0xf21264];return _0x1def0f;};'use strict';var multer=require(_0xaa43('0x0'));var util=require(_0xaa43('0x1'));var path=require(_0xaa43('0x2'));var timeout=require(_0xaa43('0x3'));var express=require(_0xaa43('0x4'));var router=express[_0xaa43('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaa43('0x6'));var interaction=require(_0xaa43('0x7'));var config=require(_0xaa43('0x8'));var controller=require(_0xaa43('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xaa43('0xa')]);router[_0xaa43('0xb')](_0xaa43('0xc'),auth[_0xaa43('0xd')](),controller['describe']);router[_0xaa43('0xb')](_0xaa43('0xe'),auth[_0xaa43('0xd')](),controller['show']);router['get'](_0xaa43('0xf'),auth[_0xaa43('0xd')](),controller[_0xaa43('0x10')]);router[_0xaa43('0xb')](_0xaa43('0x11'),auth['isAuthenticated'](),controller[_0xaa43('0x12')]);router[_0xaa43('0x13')]('/',auth[_0xaa43('0xd')](),controller[_0xaa43('0x14')]);router[_0xaa43('0x13')]('/:id/messages',auth['isAuthenticated'](),controller['addMessage']);router['post'](_0xaa43('0x15'),auth[_0xaa43('0xd')](),interaction['tracked'](_0xaa43('0x16'),'faxinteraction:addtags'),controller[_0xaa43('0x17')]);router[_0xaa43('0x18')](_0xaa43('0xe'),auth[_0xaa43('0xd')](),interaction[_0xaa43('0x19')]('fax',_0xaa43('0x1a')),controller[_0xaa43('0x1b')]);router[_0xaa43('0x1c')](_0xaa43('0xe'),auth[_0xaa43('0xd')](),interaction[_0xaa43('0x19')](_0xaa43('0x16'),_0xaa43('0x1d')),controller[_0xaa43('0x1e')]);router[_0xaa43('0x1c')](_0xaa43('0x15'),auth[_0xaa43('0xd')](),controller[_0xaa43('0x1f')]);module[_0xaa43('0x20')]=router;
\ No newline at end of file
+var _0xf3cd=['/:id/messages','addMessage','/:id/tags','tracked','faxinteraction:addtags','addTags','put','/:id','fax','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','show','getMessages','/:id/download','download','post'];(function(_0x3685b0,_0x111044){var _0x548adb=function(_0x26c306){while(--_0x26c306){_0x3685b0['push'](_0x3685b0['shift']());}};_0x548adb(++_0x111044);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xf3cd[_0x102e37];return _0x35a07c;};'use strict';var multer=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var path=require(_0xdf3c('0x2'));var timeout=require(_0xdf3c('0x3'));var express=require(_0xdf3c('0x4'));var router=express[_0xdf3c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdf3c('0x6'));var interaction=require(_0xdf3c('0x7'));var config=require(_0xdf3c('0x8'));var controller=require('./faxInteraction.controller');router[_0xdf3c('0x9')]('/',auth[_0xdf3c('0xa')](),controller[_0xdf3c('0xb')]);router[_0xdf3c('0x9')](_0xdf3c('0xc'),auth[_0xdf3c('0xa')](),controller['describe']);router[_0xdf3c('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0x9')]('/:id/messages',auth[_0xdf3c('0xa')](),controller[_0xdf3c('0xe')]);router[_0xdf3c('0x9')](_0xdf3c('0xf'),auth[_0xdf3c('0xa')](),controller[_0xdf3c('0x10')]);router[_0xdf3c('0x11')]('/',auth[_0xdf3c('0xa')](),controller['create']);router[_0xdf3c('0x11')](_0xdf3c('0x12'),auth[_0xdf3c('0xa')](),controller[_0xdf3c('0x13')]);router['post'](_0xdf3c('0x14'),auth[_0xdf3c('0xa')](),interaction[_0xdf3c('0x15')]('fax',_0xdf3c('0x16')),controller[_0xdf3c('0x17')]);router[_0xdf3c('0x18')](_0xdf3c('0x19'),auth[_0xdf3c('0xa')](),interaction[_0xdf3c('0x15')](_0xdf3c('0x1a'),_0xdf3c('0x1b')),controller[_0xdf3c('0x1c')]);router[_0xdf3c('0x1d')]('/:id',auth[_0xdf3c('0xa')](),interaction[_0xdf3c('0x15')](_0xdf3c('0x1a'),_0xdf3c('0x1e')),controller[_0xdf3c('0x1f')]);router[_0xdf3c('0x1d')](_0xdf3c('0x14'),auth[_0xdf3c('0xa')](),controller[_0xdf3c('0x20')]);module[_0xdf3c('0x21')]=router;
\ No newline at end of file
index c6ba90a..af2007e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c9=['out','DATE','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x2dc1f6,_0x58c347){var _0x4e513b=function(_0x33127e){while(--_0x33127e){_0x2dc1f6['push'](_0x2dc1f6['shift']());}};_0x4e513b(++_0x58c347);}(_0x12c9,0x1c9));var _0x912c=function(_0x3c8a2e,_0x1dce66){_0x3c8a2e=_0x3c8a2e-0x0;var _0xadddf2=_0x12c9[_0x3c8a2e];return _0xadddf2;};'use strict';var Sequelize=require(_0x912c('0x0'));module[_0x912c('0x1')]={'body':{'type':Sequelize[_0x912c('0x2')](_0x912c('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x912c('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x912c('0x5')),'defaultValue':_0x912c('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x912c('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x912c('0x6')]}};
\ No newline at end of file
+var _0x6fad=['DATE','sequelize','exports','TEXT','medium','ENUM','out'];(function(_0x42db2e,_0x225653){var _0x391cbc=function(_0x4cc336){while(--_0x4cc336){_0x42db2e['push'](_0x42db2e['shift']());}};_0x391cbc(++_0x225653);}(_0x6fad,0x174));var _0xd6fa=function(_0x3b3a82,_0x53b5e0){_0x3b3a82=_0x3b3a82-0x0;var _0x267063=_0x6fad[_0x3b3a82];return _0x267063;};'use strict';var Sequelize=require(_0xd6fa('0x0'));module[_0xd6fa('0x1')]={'body':{'type':Sequelize[_0xd6fa('0x2')](_0xd6fa('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xd6fa('0x4')]('in','out'),'defaultValue':_0xd6fa('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xd6fa('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xd6fa('0x6')]}};
\ No newline at end of file
index 783005c..4f3b2eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70fd=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./faxMessage.socket','register','client','http','request','then','info','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','request\x20sent','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','map','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','FaxMessage','includeAll','include','findAll','rows','show','params','rawAttributes','fields','options','find','body','describe','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','FaxInteraction','isNil','read1stAt','interaction','get','role','null','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','SELECT','contact','fullname','internal','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','fax-interactions','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','User','email','event','rejectmessage','create','CmContact','Attachment','findOne','SendFax','FaxAccountId','AttachmentId','download','join','server','files','attachments','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash'];(function(_0x5c298a,_0x579b14){var _0x3419fe=function(_0x340588){while(--_0x340588){_0x5c298a['push'](_0x5c298a['shift']());}};_0x3419fe(++_0x579b14);}(_0x70fd,0x87));var _0xd70f=function(_0x57d11b,_0x2a4299){_0x57d11b=_0x57d11b-0x0;var _0x63ad6e=_0x70fd[_0x57d11b];return _0x63ad6e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd70f('0x0'));var zipdir=require(_0xd70f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd70f('0x2'));var BPromise=require(_0xd70f('0x3'));var Mustache=require(_0xd70f('0x4'));var util=require(_0xd70f('0x5'));var path=require(_0xd70f('0x6'));var sox=require('sox');var csv=require(_0xd70f('0x7'));var ejs=require(_0xd70f('0x8'));var fs=require('fs');var fs_extra=require(_0xd70f('0x9'));var _=require(_0xd70f('0xa'));var squel=require('squel');var crypto=require(_0xd70f('0xb'));var jsforce=require(_0xd70f('0xc'));var deskjs=require(_0xd70f('0xd'));var toCsv=require(_0xd70f('0x7'));var querystring=require(_0xd70f('0xe'));var Papa=require(_0xd70f('0xf'));var Redis=require(_0xd70f('0x10'));var authService=require(_0xd70f('0x11'));var qs=require(_0xd70f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd70f('0x13'))(_0xd70f('0x14'));var utils=require(_0xd70f('0x15'));var config=require(_0xd70f('0x16'));var licenseUtil=require(_0xd70f('0x17'));var db=require(_0xd70f('0x18'))['db'];config[_0xd70f('0x19')]=_[_0xd70f('0x1a')](config[_0xd70f('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xd70f('0x1b'))(new Redis(config[_0xd70f('0x19')]));require(_0xd70f('0x1c'))[_0xd70f('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0xd70f('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0xd70f('0x1e')][_0xd70f('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x261fc6,_0x391d65,_0x18764e,_0x1d25e3){return new BPromise(function(_0x2fe1bb,_0xb25344){var _0x2c79e7=_0x1d25e3||client;return _0x2c79e7[_0xd70f('0x20')](_0x261fc6,_0x18764e)[_0xd70f('0x21')](function(_0x30d470){logger[_0xd70f('0x22')]('FaxMessage,\x20%s,\x20%s',_0x391d65,'request\x20sent');logger[_0xd70f('0x23')](_0xd70f('0x24'),_0x391d65,'request\x20sent',JSON[_0xd70f('0x25')](_0x30d470));if(_0x30d470[_0xd70f('0x26')]){if(_0x30d470[_0xd70f('0x26')][_0xd70f('0x27')]===0x1f4){logger[_0xd70f('0x26')](_0xd70f('0x28'),_0x391d65,_0x30d470[_0xd70f('0x26')][_0xd70f('0x29')]);return _0xb25344(_0x30d470['error'][_0xd70f('0x29')]);}logger['error'](_0xd70f('0x28'),_0x391d65,_0x30d470['error'][_0xd70f('0x29')]);return _0x2fe1bb(_0x30d470['error'][_0xd70f('0x29')]);}else{logger[_0xd70f('0x22')](_0xd70f('0x28'),_0x391d65,_0xd70f('0x2a'));_0x2fe1bb(_0x30d470[_0xd70f('0x2b')][_0xd70f('0x29')]);}})[_0xd70f('0x2c')](function(_0x2d109){logger[_0xd70f('0x26')](_0xd70f('0x28'),_0x391d65,_0x2d109);_0xb25344(_0x2d109);});});}function respondWithStatusCode(_0x451665,_0x164a7c){_0x164a7c=_0x164a7c||0xcc;return function(_0xb7a05d){if(_0xb7a05d){return _0x451665[_0xd70f('0x2d')](_0x164a7c);}return _0x451665['status'](_0x164a7c)[_0xd70f('0x2e')]();};}function respondWithResult(_0x6cb3b8,_0x515d1a){_0x515d1a=_0x515d1a||0xc8;return function(_0x9e9114){if(_0x9e9114){return _0x6cb3b8[_0xd70f('0x2f')](_0x515d1a)[_0xd70f('0x30')](_0x9e9114);}};}function respondWithFilteredResult(_0x49e1a6,_0x2822cb){return function(_0x476f47){if(_0x476f47){var _0xfc9a25=typeof _0x2822cb[_0xd70f('0x31')]===_0xd70f('0x32')&&typeof _0x2822cb[_0xd70f('0x33')]===_0xd70f('0x32');var _0x4e5516=_0x476f47[_0xd70f('0x34')];var _0x49613a=_0xfc9a25?0x0:_0x2822cb[_0xd70f('0x31')];var _0x4878d9=_0xfc9a25?_0x476f47[_0xd70f('0x34')]:_0x2822cb[_0xd70f('0x31')]+_0x2822cb['limit'];var _0x26b4d1;if(_0x4878d9>=_0x4e5516){_0x4878d9=_0x4e5516;_0x26b4d1=0xc8;}else{_0x26b4d1=0xce;}_0x49e1a6[_0xd70f('0x2f')](_0x26b4d1);return _0x49e1a6[_0xd70f('0x35')](_0xd70f('0x36'),_0x49613a+'-'+_0x4878d9+'/'+_0x4e5516)['json'](_0x476f47);}return null;};}function patchUpdates(_0x27612d){return function(_0x1919c0){try{jsonpatch[_0xd70f('0x37')](_0x1919c0,_0x27612d,!![]);}catch(_0xb9d17c){return BPromise[_0xd70f('0x38')](_0xb9d17c);}return _0x1919c0[_0xd70f('0x39')]();};}function saveUpdates(_0x358e2f,_0x2203ae){return function(_0x99f0d4){if(_0x99f0d4){return _0x99f0d4[_0xd70f('0x3a')](_0x358e2f)['then'](function(_0x1084e5){return _0x1084e5;});}return null;};}function removeEntity(_0x27c84c,_0x4d8793){return function(_0x39a197){if(_0x39a197){return _0x39a197[_0xd70f('0x3b')]()['then'](function(){_0x27c84c[_0xd70f('0x2f')](0xcc)[_0xd70f('0x2e')]();});}};}function handleEntityNotFound(_0x756cbe,_0x4370f0){return function(_0x4b11d7){if(!_0x4b11d7){_0x756cbe[_0xd70f('0x2d')](0x194);}return _0x4b11d7;};}function handleError(_0x4d195d,_0x53d44d){_0x53d44d=_0x53d44d||0x1f4;return function(_0x51824d){logger[_0xd70f('0x26')](_0x51824d[_0xd70f('0x3c')]);if(_0x51824d[_0xd70f('0x3d')]){delete _0x51824d[_0xd70f('0x3d')];}_0x4d195d['status'](_0x53d44d)[_0xd70f('0x3e')](_0x51824d);};}exports['index']=function(_0x1ee712,_0x3924e4){var _0xe04341={},_0x375d2e={},_0x55d6fe={'count':0x0,'rows':[]};var _0x4c0d81=_[_0xd70f('0x3f')](db['FaxMessage']['rawAttributes'],function(_0x49f451){return{'name':_0x49f451[_0xd70f('0x40')],'type':_0x49f451['type'][_0xd70f('0x41')]};});_0x375d2e[_0xd70f('0x42')]=_['map'](_0x4c0d81,_0xd70f('0x3d'));_0x375d2e[_0xd70f('0x43')]=_[_0xd70f('0x44')](_0x1ee712[_0xd70f('0x43')]);_0x375d2e[_0xd70f('0x45')]=_[_0xd70f('0x46')](_0x375d2e[_0xd70f('0x42')],_0x375d2e[_0xd70f('0x43')]);_0xe04341[_0xd70f('0x47')]=_['intersection'](_0x375d2e['model'],qs['fields'](_0x1ee712[_0xd70f('0x43')]['fields']));_0xe04341['attributes']=_0xe04341[_0xd70f('0x47')][_0xd70f('0x48')]?_0xe04341[_0xd70f('0x47')]:_0x375d2e[_0xd70f('0x42')];if(!_0x1ee712[_0xd70f('0x43')][_0xd70f('0x49')]('nolimit')){_0xe04341[_0xd70f('0x33')]=qs[_0xd70f('0x33')](_0x1ee712[_0xd70f('0x43')]['limit']);_0xe04341[_0xd70f('0x31')]=qs['offset'](_0x1ee712[_0xd70f('0x43')][_0xd70f('0x31')]);}_0xe04341[_0xd70f('0x4a')]=qs[_0xd70f('0x4b')](_0x1ee712[_0xd70f('0x43')]['sort']);_0xe04341[_0xd70f('0x4c')]=qs[_0xd70f('0x45')](_['pick'](_0x1ee712[_0xd70f('0x43')],_0x375d2e[_0xd70f('0x45')]),_0x4c0d81);if(_0x1ee712[_0xd70f('0x43')][_0xd70f('0x4d')]){_0xe04341['where']=_[_0xd70f('0x4e')](_0xe04341[_0xd70f('0x4c')],{'$or':_[_0xd70f('0x3f')](_0x4c0d81,function(_0x3b60a6){if(_0x3b60a6['type']!==_0xd70f('0x4f')){var _0x28b350={};_0x28b350[_0x3b60a6[_0xd70f('0x3d')]]={'$like':'%'+_0x1ee712[_0xd70f('0x43')]['filter']+'%'};return _0x28b350;}})});}_0xe04341=_[_0xd70f('0x4e')]({},_0xe04341,_0x1ee712['options']);var _0x417de7={'where':_0xe04341['where']};return db[_0xd70f('0x50')]['count'](_0x417de7)[_0xd70f('0x21')](function(_0x56aaac){_0x55d6fe[_0xd70f('0x34')]=_0x56aaac;if(_0x1ee712[_0xd70f('0x43')][_0xd70f('0x51')]){_0xe04341[_0xd70f('0x52')]=[{'all':!![]}];}return db[_0xd70f('0x50')][_0xd70f('0x53')](_0xe04341);})['then'](function(_0x16f1f1){_0x55d6fe[_0xd70f('0x54')]=_0x16f1f1;return _0x55d6fe;})[_0xd70f('0x21')](respondWithFilteredResult(_0x3924e4,_0xe04341))[_0xd70f('0x2c')](handleError(_0x3924e4,null));};exports[_0xd70f('0x55')]=function(_0x11317e,_0x35a250){var _0x48c51c={'raw':!![],'where':{'id':_0x11317e[_0xd70f('0x56')]['id']}},_0x27fc1c={};_0x27fc1c[_0xd70f('0x42')]=_['keys'](db[_0xd70f('0x50')][_0xd70f('0x57')]);_0x27fc1c['query']=_[_0xd70f('0x44')](_0x11317e[_0xd70f('0x43')]);_0x27fc1c['filters']=_['intersection'](_0x27fc1c[_0xd70f('0x42')],_0x27fc1c[_0xd70f('0x43')]);_0x48c51c[_0xd70f('0x47')]=_[_0xd70f('0x46')](_0x27fc1c[_0xd70f('0x42')],qs[_0xd70f('0x58')](_0x11317e[_0xd70f('0x43')]['fields']));_0x48c51c['attributes']=_0x48c51c[_0xd70f('0x47')][_0xd70f('0x48')]?_0x48c51c['attributes']:_0x27fc1c['model'];if(_0x11317e[_0xd70f('0x43')][_0xd70f('0x51')]){_0x48c51c[_0xd70f('0x52')]=[{'all':!![]}];}_0x48c51c=_[_0xd70f('0x4e')]({},_0x48c51c,_0x11317e[_0xd70f('0x59')]);return db[_0xd70f('0x50')][_0xd70f('0x5a')](_0x48c51c)[_0xd70f('0x21')](handleEntityNotFound(_0x35a250,null))[_0xd70f('0x21')](respondWithResult(_0x35a250,null))[_0xd70f('0x2c')](handleError(_0x35a250,null));};exports[_0xd70f('0x3a')]=function(_0x39e122,_0x5c24b5){if(_0x39e122[_0xd70f('0x5b')]['id']){delete _0x39e122['body']['id'];}return db[_0xd70f('0x50')][_0xd70f('0x5a')]({'where':{'id':_0x39e122['params']['id']}})[_0xd70f('0x21')](handleEntityNotFound(_0x5c24b5,null))[_0xd70f('0x21')](saveUpdates(_0x39e122[_0xd70f('0x5b')],null))[_0xd70f('0x21')](respondWithResult(_0x5c24b5,null))['catch'](handleError(_0x5c24b5,null));};exports[_0xd70f('0x3b')]=function(_0x5dc38d,_0xccae1b){return db['FaxMessage'][_0xd70f('0x5a')]({'where':{'id':_0x5dc38d[_0xd70f('0x56')]['id']}})[_0xd70f('0x21')](handleEntityNotFound(_0xccae1b,null))['then'](removeEntity(_0xccae1b,null))[_0xd70f('0x2c')](handleError(_0xccae1b,null));};exports[_0xd70f('0x5c')]=function(_0x5c80b3,_0x2717e6){return db[_0xd70f('0x50')]['describe']()[_0xd70f('0x21')](respondWithResult(_0x2717e6,null))[_0xd70f('0x2c')](handleError(_0x2717e6,null));};var interaction_log=require(_0xd70f('0x13'))('fax-interactions');exports[_0xd70f('0x5d')]=function(_0x2900aa,_0x30f267,_0x459d74){var _0x52a3b9={'agent':{},'channel':_0xd70f('0x5e')};if(_0x2900aa[_0xd70f('0x5b')]['id']){delete _0x2900aa[_0xd70f('0x5b')]['id'];}_0x2900aa[_0xd70f('0x5b')][_0xd70f('0x5f')]=!![];_0x2900aa['body'][_0xd70f('0x60')]=moment()[_0xd70f('0x61')](_0xd70f('0x62'));_0x2900aa['body'][_0xd70f('0x63')]=_0x2900aa['body']['UserId']||_0x2900aa[_0xd70f('0x64')]['id'];_0x52a3b9[_0xd70f('0x65')]['id']=_0x2900aa[_0xd70f('0x5b')]['UserId'];return db[_0xd70f('0x50')]['find']({'where':{'id':_0x2900aa[_0xd70f('0x56')]['id'],'UserId':null}})[_0xd70f('0x21')](handleEntityNotFound(_0x30f267,null))['then'](saveUpdates(_0x2900aa[_0xd70f('0x5b')],null))[_0xd70f('0x21')](function(_0x10d7ba){if(_0x10d7ba){_0x52a3b9[_0xd70f('0x29')]=_0x10d7ba['get']({'plain':!![]});return db[_0xd70f('0x66')]['find']({'where':{'id':_0x10d7ba['FaxInteractionId']}});}return null;})[_0xd70f('0x21')](handleEntityNotFound(_0x30f267,null))[_0xd70f('0x21')](function(_0x17e5a2){if(_0x17e5a2){return _0x17e5a2[_0xd70f('0x3a')]({'UserId':_0x2900aa[_0xd70f('0x5b')][_0xd70f('0x63')],'read1stAt':_[_0xd70f('0x67')](_0x17e5a2[_0xd70f('0x68')])?moment()[_0xd70f('0x61')](_0xd70f('0x62')):undefined});}return null;})[_0xd70f('0x21')](function(_0x377653){if(_0x377653){_0x52a3b9[_0xd70f('0x69')]=_0x377653[_0xd70f('0x6a')]({'plain':!![]});interaction_log[_0xd70f('0x22')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2900aa[_0xd70f('0x64')]['id'],_0x2900aa[_0xd70f('0x64')][_0xd70f('0x3d')],_0x2900aa[_0xd70f('0x64')][_0xd70f('0x6b')],_0x52a3b9[_0xd70f('0x69')]['id'],_0x2900aa[_0xd70f('0x5b')]?JSON['stringify'](_0x2900aa[_0xd70f('0x5b')]):_0xd70f('0x6c'));return respondWithRpcPromise(_0xd70f('0x6d'),_0xd70f('0x6e'),_0x52a3b9);}return null;})[_0xd70f('0x21')](function(_0x5809a0){var _0x161783='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5809a0[_0xd70f('0x29')]['ContactId'];return db[_0xd70f('0x6f')][_0xd70f('0x43')](_0x161783,{'type':db[_0xd70f('0x70')][_0xd70f('0x71')][_0xd70f('0x72')],'raw':!![]})['then'](function(_0x55657d){return _0x55657d;});})['then'](function(_0x3195d4){if(_0x3195d4){_0x52a3b9[_0xd70f('0x29')][_0xd70f('0x73')]=_0x3195d4[0x0];if(!_0x2900aa[_0xd70f('0x5b')][_0xd70f('0x63')])return;return db['User'][_0xd70f('0x5a')]({'where':{'id':_0x2900aa[_0xd70f('0x5b')][_0xd70f('0x63')],'role':_0xd70f('0x65')},'attributes':['id',_0xd70f('0x3d'),_0xd70f('0x74'),'email',_0xd70f('0x75')],'raw':!![]});}return null;})['then'](function(_0x38f8e9){if(!_0x38f8e9)return null;_0x52a3b9[_0xd70f('0x29')]['agent']=_0x38f8e9;return _0x52a3b9;})[_0xd70f('0x21')](function(_0x367533){if(_0x367533){if(_0x2900aa['body']['manual']){_0x52a3b9[_0xd70f('0x29')][_0xd70f('0x76')]=util[_0xd70f('0x61')](_0xd70f('0x77'),_0x2900aa[_0xd70f('0x64')]['name']);_0x52a3b9[_0xd70f('0x29')][_0xd70f('0x78')]=_0x52a3b9[_0xd70f('0x78')];_0x52a3b9[_0xd70f('0x29')][_0xd70f('0x79')]=_0x52a3b9[_0xd70f('0x78')];_0x52a3b9[_0xd70f('0x29')]['event']=_0xd70f('0x5d');return respondWithRpcPromise(_0xd70f('0x7a'),_0xd70f('0x7a'),{'event':_0xd70f('0x7b'),'message':_0x52a3b9[_0xd70f('0x29')]},client9002)[_0xd70f('0x21')](function(){return _0x52a3b9;});}return _0x52a3b9;}return null;})[_0xd70f('0x21')](respondWithResult(_0x30f267,null))[_0xd70f('0x2c')](handleError(_0x30f267,null));};var interaction_log=require(_0xd70f('0x13'))(_0xd70f('0x7c'));exports[_0xd70f('0x38')]=function(_0x1f2354,_0x2d1928,_0x840f55){var _0x1677ed={'agent':{},'channel':_0xd70f('0x5e')};if(_0x1f2354[_0xd70f('0x5b')]['id']){delete _0x1f2354[_0xd70f('0x5b')]['id'];}_0x1f2354[_0xd70f('0x5b')]['UserId']=_0x1f2354[_0xd70f('0x5b')][_0xd70f('0x63')]||_0x1f2354['user']['id'];_0x1677ed[_0xd70f('0x65')]['id']=_0x1f2354[_0xd70f('0x5b')][_0xd70f('0x63')];return db[_0xd70f('0x50')]['find']({'where':{'id':_0x1f2354['params']['id'],'UserId':null}})[_0xd70f('0x21')](handleEntityNotFound(_0x2d1928,null))[_0xd70f('0x21')](function(_0xd744bc){if(_0xd744bc){_0x1677ed['message']=_0xd744bc[_0xd70f('0x6a')]({'plain':!![]});return db[_0xd70f('0x66')][_0xd70f('0x5a')]({'where':{'id':_0xd744bc[_0xd70f('0x7d')]}});}return null;})[_0xd70f('0x21')](handleEntityNotFound(_0x2d1928,null))[_0xd70f('0x21')](function(_0x395fe2){if(_0x395fe2){_0x1677ed[_0xd70f('0x69')]=_0x395fe2['get']({'plain':!![]});interaction_log[_0xd70f('0x22')](_0xd70f('0x7e'),_0x1f2354[_0xd70f('0x64')]['id'],_0x1f2354['user'][_0xd70f('0x3d')],_0x1f2354[_0xd70f('0x64')][_0xd70f('0x6b')],_0x1677ed[_0xd70f('0x69')]['id'],_0x1f2354['body']?JSON['stringify'](_0x1f2354[_0xd70f('0x5b')]):_0xd70f('0x6c'));return respondWithRpcPromise(_0xd70f('0x7f'),'rejectMessage',_0x1677ed);}return null;})['then'](function(_0x3cdfe3){var _0x245318=_0xd70f('0x80')+_0x3cdfe3[_0xd70f('0x29')][_0xd70f('0x81')];return db['sequelize'][_0xd70f('0x43')](_0x245318,{'type':db[_0xd70f('0x70')][_0xd70f('0x71')][_0xd70f('0x72')],'raw':!![]})[_0xd70f('0x21')](function(_0x5e951b){return _0x5e951b;});})[_0xd70f('0x21')](function(_0x29b691){if(_0x29b691){_0x1677ed['message']['contact']=_0x29b691[0x0];if(!_0x1f2354[_0xd70f('0x5b')][_0xd70f('0x63')])return;return db[_0xd70f('0x82')]['find']({'where':{'id':_0x1f2354[_0xd70f('0x5b')][_0xd70f('0x63')],'role':'agent'},'attributes':['id',_0xd70f('0x3d'),_0xd70f('0x74'),_0xd70f('0x83'),_0xd70f('0x75')],'raw':!![]});}return null;})['then'](function(_0x5d8cc8){if(!_0x5d8cc8)return null;_0x1677ed[_0xd70f('0x29')]['agent']=_0x5d8cc8;return _0x1677ed;})[_0xd70f('0x21')](function(_0x498067){if(_0x498067){_0x498067['message'][_0xd70f('0x76')]=util[_0xd70f('0x61')](_0xd70f('0x77'),_0x1f2354[_0xd70f('0x64')]['name']);_0x498067['message'][_0xd70f('0x78')]=_0x1677ed[_0xd70f('0x78')];_0x498067[_0xd70f('0x29')][_0xd70f('0x79')]=_0x1677ed[_0xd70f('0x78')];_0x498067[_0xd70f('0x29')][_0xd70f('0x84')]=_0xd70f('0x38');respondWithRpcPromise(_0xd70f('0x7a'),'EventManager',{'event':_0xd70f('0x85'),'message':_0x498067[_0xd70f('0x29')]},client9002);return _0x1677ed;}return null;})[_0xd70f('0x21')](respondWithResult(_0x2d1928,null))['catch'](handleError(_0x2d1928,null));};exports[_0xd70f('0x86')]=function(_0x1cd4c7,_0x37113c){var _0x71c994;return db[_0xd70f('0x50')]['create'](_0x1cd4c7[_0xd70f('0x5b')],{})[_0xd70f('0x21')](function(_0x48acd8){_0x71c994=_0x48acd8;return db[_0xd70f('0x87')]['findOne']({'where':{'id':_0x71c994[_0xd70f('0x81')]}});})[_0xd70f('0x21')](function(_0x1d9d44){if(_['isNil'](_0x1d9d44)){return;}else{_0x71c994['fax']=_0x1d9d44[_0xd70f('0x5e')];return db[_0xd70f('0x88')][_0xd70f('0x89')]({'where':{'id':_0x71c994['AttachmentId']}});}})['then'](function(_0x1033c8){return respondWithRpcPromise(_0xd70f('0x8a'),_0xd70f('0x8a'),{'FaxAccountId':_[_0xd70f('0x67')](_0x1cd4c7[_0xd70f('0x5b')])?undefined:_0x1cd4c7[_0xd70f('0x5b')][_0xd70f('0x8b')],'path':_[_0xd70f('0x67')](_0x1033c8)?undefined:util['format']('/var/opt/motion2/server/files/attachments/%s',_0x1033c8['basename']),'fax':_['isNil'](_0x71c994['fax'])?undefined:_0x71c994['fax'],'AttachmentId':_0x71c994[_0xd70f('0x8c')]},client9002);})[_0xd70f('0x21')](respondWithResult(_0x37113c,0xc9))['catch'](handleError(_0x37113c,null));};exports[_0xd70f('0x8d')]=function(_0x4fa818,_0x453792){var _0x107135=path[_0xd70f('0x8e')](config['root'],_0xd70f('0x8f'),_0xd70f('0x90'),_0xd70f('0x91'));return db['FaxMessage'][_0xd70f('0x5a')]({'where':{'id':_0x4fa818[_0xd70f('0x56')]['id']},'include':[{'model':db[_0xd70f('0x88')],'as':'Attachment'}]})[_0xd70f('0x21')](handleEntityNotFound(_0x453792,null))[_0xd70f('0x21')](function(_0x3cdf7e){if(_0x3cdf7e){return _0x453792[_0xd70f('0x8d')](path[_0xd70f('0x8e')](_0x107135,_0x3cdf7e[_0xd70f('0x88')]['basename']));}})[_0xd70f('0x2c')](handleError(_0x453792,null));};
\ No newline at end of file
+var _0xe1d8=['then','request\x20sent','debug','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','stack','name','send','map','FaxMessage','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','body','describe','fax-interactions','accept','fax','readAt','format','UserId','user','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','contact','User','agent','email','internal','interface','SIP/%s','channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','Sequelize','fullname','motionChannel','rejectmessage','create','CmContact','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','files','attachments','Attachment','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','http','client','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe1d8,0x70));var _0x8e1d=function(_0x21f58b,_0x24aa9a){_0x21f58b=_0x21f58b-0x0;var _0x5afa91=_0xe1d8[_0x21f58b];return _0x5afa91;};'use strict';var emlformat=require(_0x8e1d('0x0'));var rimraf=require(_0x8e1d('0x1'));var zipdir=require(_0x8e1d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8e1d('0x3'));var moment=require(_0x8e1d('0x4'));var BPromise=require(_0x8e1d('0x5'));var Mustache=require(_0x8e1d('0x6'));var util=require(_0x8e1d('0x7'));var path=require(_0x8e1d('0x8'));var sox=require(_0x8e1d('0x9'));var csv=require(_0x8e1d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8e1d('0xb'));var _=require(_0x8e1d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8e1d('0xd'));var deskjs=require(_0x8e1d('0xe'));var toCsv=require(_0x8e1d('0xa'));var querystring=require('querystring');var Papa=require(_0x8e1d('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8e1d('0x10'));var hardwareService=require(_0x8e1d('0x11'));var logger=require(_0x8e1d('0x12'))('api');var utils=require(_0x8e1d('0x13'));var config=require(_0x8e1d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8e1d('0x15'))['db'];config[_0x8e1d('0x16')]=_[_0x8e1d('0x17')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8e1d('0x18'))(new Redis(config[_0x8e1d('0x16')]));require('./faxMessage.socket')[_0x8e1d('0x19')](socket);var jayson=require(_0x8e1d('0x1a'));var client=jayson['client'][_0x8e1d('0x1b')]({'port':0x232c});var client9002=jayson[_0x8e1d('0x1c')][_0x8e1d('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x340265,_0x288955,_0x2683ea,_0x485beb){return new BPromise(function(_0x3d9d96,_0x51a6bf){var _0x962420=_0x485beb||client;return _0x962420[_0x8e1d('0x1d')](_0x340265,_0x2683ea)[_0x8e1d('0x1e')](function(_0xe03d9b){logger['info']('FaxMessage,\x20%s,\x20%s',_0x288955,_0x8e1d('0x1f'));logger[_0x8e1d('0x20')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x288955,_0x8e1d('0x1f'),JSON[_0x8e1d('0x21')](_0xe03d9b));if(_0xe03d9b['error']){if(_0xe03d9b[_0x8e1d('0x22')][_0x8e1d('0x23')]===0x1f4){logger[_0x8e1d('0x22')](_0x8e1d('0x24'),_0x288955,_0xe03d9b[_0x8e1d('0x22')][_0x8e1d('0x25')]);return _0x51a6bf(_0xe03d9b[_0x8e1d('0x22')][_0x8e1d('0x25')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x288955,_0xe03d9b[_0x8e1d('0x22')]['message']);return _0x3d9d96(_0xe03d9b[_0x8e1d('0x22')][_0x8e1d('0x25')]);}else{logger[_0x8e1d('0x26')](_0x8e1d('0x24'),_0x288955,_0x8e1d('0x1f'));_0x3d9d96(_0xe03d9b[_0x8e1d('0x27')][_0x8e1d('0x25')]);}})[_0x8e1d('0x28')](function(_0x2c7454){logger[_0x8e1d('0x22')]('FaxMessage,\x20%s,\x20%s',_0x288955,_0x2c7454);_0x51a6bf(_0x2c7454);});});}function respondWithStatusCode(_0x350c2d,_0x36e541){_0x36e541=_0x36e541||0xcc;return function(_0x20bce1){if(_0x20bce1){return _0x350c2d[_0x8e1d('0x29')](_0x36e541);}return _0x350c2d[_0x8e1d('0x2a')](_0x36e541)[_0x8e1d('0x2b')]();};}function respondWithResult(_0x2d22fe,_0x5d2304){_0x5d2304=_0x5d2304||0xc8;return function(_0x2ff0ca){if(_0x2ff0ca){return _0x2d22fe['status'](_0x5d2304)[_0x8e1d('0x2c')](_0x2ff0ca);}};}function respondWithFilteredResult(_0x3dd666,_0x35394b){return function(_0x4422ad){if(_0x4422ad){var _0x3ed83d=typeof _0x35394b[_0x8e1d('0x2d')]===_0x8e1d('0x2e')&&typeof _0x35394b[_0x8e1d('0x2f')]==='undefined';var _0x56cdb4=_0x4422ad['count'];var _0x4b4e39=_0x3ed83d?0x0:_0x35394b[_0x8e1d('0x2d')];var _0x29e2ec=_0x3ed83d?_0x4422ad[_0x8e1d('0x30')]:_0x35394b[_0x8e1d('0x2d')]+_0x35394b[_0x8e1d('0x2f')];var _0x3bc159;if(_0x29e2ec>=_0x56cdb4){_0x29e2ec=_0x56cdb4;_0x3bc159=0xc8;}else{_0x3bc159=0xce;}_0x3dd666['status'](_0x3bc159);return _0x3dd666[_0x8e1d('0x31')]('Content-Range',_0x4b4e39+'-'+_0x29e2ec+'/'+_0x56cdb4)[_0x8e1d('0x2c')](_0x4422ad);}return null;};}function patchUpdates(_0x1b5aca){return function(_0x35aa63){try{jsonpatch[_0x8e1d('0x32')](_0x35aa63,_0x1b5aca,!![]);}catch(_0x1702e7){return BPromise['reject'](_0x1702e7);}return _0x35aa63[_0x8e1d('0x33')]();};}function saveUpdates(_0x2fa396,_0x4ee5d1){return function(_0x58f304){if(_0x58f304){return _0x58f304[_0x8e1d('0x34')](_0x2fa396)['then'](function(_0x552538){return _0x552538;});}return null;};}function removeEntity(_0x659c7c,_0x5de444){return function(_0x19ff9f){if(_0x19ff9f){return _0x19ff9f[_0x8e1d('0x35')]()[_0x8e1d('0x1e')](function(){_0x659c7c[_0x8e1d('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20c675,_0x55e3f2){return function(_0x56889f){if(!_0x56889f){_0x20c675['sendStatus'](0x194);}return _0x56889f;};}function handleError(_0x259ef7,_0x34f0f1){_0x34f0f1=_0x34f0f1||0x1f4;return function(_0x2349a7){logger[_0x8e1d('0x22')](_0x2349a7[_0x8e1d('0x36')]);if(_0x2349a7['name']){delete _0x2349a7[_0x8e1d('0x37')];}_0x259ef7[_0x8e1d('0x2a')](_0x34f0f1)[_0x8e1d('0x38')](_0x2349a7);};}exports['index']=function(_0x3d0c67,_0x86850){var _0x3ee268={},_0x145a02={},_0x36a2f7={'count':0x0,'rows':[]};var _0xc74439=_[_0x8e1d('0x39')](db[_0x8e1d('0x3a')][_0x8e1d('0x3b')],function(_0x32850b){return{'name':_0x32850b[_0x8e1d('0x3c')],'type':_0x32850b[_0x8e1d('0x3d')][_0x8e1d('0x3e')]};});_0x145a02[_0x8e1d('0x3f')]=_[_0x8e1d('0x39')](_0xc74439,'name');_0x145a02['query']=_[_0x8e1d('0x40')](_0x3d0c67[_0x8e1d('0x41')]);_0x145a02['filters']=_[_0x8e1d('0x42')](_0x145a02['model'],_0x145a02[_0x8e1d('0x41')]);_0x3ee268['attributes']=_[_0x8e1d('0x42')](_0x145a02[_0x8e1d('0x3f')],qs[_0x8e1d('0x43')](_0x3d0c67[_0x8e1d('0x41')][_0x8e1d('0x43')]));_0x3ee268['attributes']=_0x3ee268[_0x8e1d('0x44')][_0x8e1d('0x45')]?_0x3ee268[_0x8e1d('0x44')]:_0x145a02[_0x8e1d('0x3f')];if(!_0x3d0c67['query'][_0x8e1d('0x46')](_0x8e1d('0x47'))){_0x3ee268['limit']=qs[_0x8e1d('0x2f')](_0x3d0c67['query'][_0x8e1d('0x2f')]);_0x3ee268['offset']=qs[_0x8e1d('0x2d')](_0x3d0c67[_0x8e1d('0x41')][_0x8e1d('0x2d')]);}_0x3ee268['order']=qs[_0x8e1d('0x48')](_0x3d0c67['query']['sort']);_0x3ee268[_0x8e1d('0x49')]=qs[_0x8e1d('0x4a')](_[_0x8e1d('0x4b')](_0x3d0c67[_0x8e1d('0x41')],_0x145a02['filters']),_0xc74439);if(_0x3d0c67[_0x8e1d('0x41')][_0x8e1d('0x4c')]){_0x3ee268[_0x8e1d('0x49')]=_[_0x8e1d('0x4d')](_0x3ee268[_0x8e1d('0x49')],{'$or':_[_0x8e1d('0x39')](_0xc74439,function(_0x10fd8f){if(_0x10fd8f[_0x8e1d('0x3d')]!==_0x8e1d('0x4e')){var _0x234899={};_0x234899[_0x10fd8f[_0x8e1d('0x37')]]={'$like':'%'+_0x3d0c67[_0x8e1d('0x41')][_0x8e1d('0x4c')]+'%'};return _0x234899;}})});}_0x3ee268=_[_0x8e1d('0x4d')]({},_0x3ee268,_0x3d0c67[_0x8e1d('0x4f')]);var _0xd8f7e2={'where':_0x3ee268['where']};return db[_0x8e1d('0x3a')][_0x8e1d('0x30')](_0xd8f7e2)[_0x8e1d('0x1e')](function(_0x469452){_0x36a2f7[_0x8e1d('0x30')]=_0x469452;if(_0x3d0c67['query']['includeAll']){_0x3ee268[_0x8e1d('0x50')]=[{'all':!![]}];}return db[_0x8e1d('0x3a')][_0x8e1d('0x51')](_0x3ee268);})['then'](function(_0x1d475d){_0x36a2f7[_0x8e1d('0x52')]=_0x1d475d;return _0x36a2f7;})['then'](respondWithFilteredResult(_0x86850,_0x3ee268))[_0x8e1d('0x28')](handleError(_0x86850,null));};exports[_0x8e1d('0x53')]=function(_0x4ff47d,_0x2ac56e){var _0x2510a8={'raw':!![],'where':{'id':_0x4ff47d[_0x8e1d('0x54')]['id']}},_0x39b70a={};_0x39b70a['model']=_[_0x8e1d('0x40')](db['FaxMessage']['rawAttributes']);_0x39b70a['query']=_[_0x8e1d('0x40')](_0x4ff47d[_0x8e1d('0x41')]);_0x39b70a[_0x8e1d('0x4a')]=_[_0x8e1d('0x42')](_0x39b70a[_0x8e1d('0x3f')],_0x39b70a[_0x8e1d('0x41')]);_0x2510a8['attributes']=_[_0x8e1d('0x42')](_0x39b70a[_0x8e1d('0x3f')],qs[_0x8e1d('0x43')](_0x4ff47d[_0x8e1d('0x41')][_0x8e1d('0x43')]));_0x2510a8[_0x8e1d('0x44')]=_0x2510a8[_0x8e1d('0x44')][_0x8e1d('0x45')]?_0x2510a8[_0x8e1d('0x44')]:_0x39b70a[_0x8e1d('0x3f')];if(_0x4ff47d[_0x8e1d('0x41')][_0x8e1d('0x55')]){_0x2510a8[_0x8e1d('0x50')]=[{'all':!![]}];}_0x2510a8=_[_0x8e1d('0x4d')]({},_0x2510a8,_0x4ff47d['options']);return db['FaxMessage'][_0x8e1d('0x56')](_0x2510a8)['then'](handleEntityNotFound(_0x2ac56e,null))[_0x8e1d('0x1e')](respondWithResult(_0x2ac56e,null))[_0x8e1d('0x28')](handleError(_0x2ac56e,null));};exports[_0x8e1d('0x34')]=function(_0x12b91d,_0x2f00fa){if(_0x12b91d[_0x8e1d('0x57')]['id']){delete _0x12b91d[_0x8e1d('0x57')]['id'];}return db[_0x8e1d('0x3a')][_0x8e1d('0x56')]({'where':{'id':_0x12b91d[_0x8e1d('0x54')]['id']}})[_0x8e1d('0x1e')](handleEntityNotFound(_0x2f00fa,null))['then'](saveUpdates(_0x12b91d['body'],null))['then'](respondWithResult(_0x2f00fa,null))['catch'](handleError(_0x2f00fa,null));};exports[_0x8e1d('0x35')]=function(_0x51417a,_0x37e208){return db[_0x8e1d('0x3a')][_0x8e1d('0x56')]({'where':{'id':_0x51417a['params']['id']}})[_0x8e1d('0x1e')](handleEntityNotFound(_0x37e208,null))[_0x8e1d('0x1e')](removeEntity(_0x37e208,null))[_0x8e1d('0x28')](handleError(_0x37e208,null));};exports[_0x8e1d('0x58')]=function(_0x480101,_0x2532ce){return db[_0x8e1d('0x3a')][_0x8e1d('0x58')]()[_0x8e1d('0x1e')](respondWithResult(_0x2532ce,null))[_0x8e1d('0x28')](handleError(_0x2532ce,null));};var interaction_log=require(_0x8e1d('0x12'))(_0x8e1d('0x59'));exports[_0x8e1d('0x5a')]=function(_0x575536,_0x493c19,_0x4a530d){var _0x65cca7={'agent':{},'channel':_0x8e1d('0x5b')};if(_0x575536[_0x8e1d('0x57')]['id']){delete _0x575536[_0x8e1d('0x57')]['id'];}_0x575536['body']['read']=!![];_0x575536[_0x8e1d('0x57')][_0x8e1d('0x5c')]=moment()[_0x8e1d('0x5d')]('YYYY-MM-DD\x20HH:mm:ss');_0x575536['body'][_0x8e1d('0x5e')]=_0x575536[_0x8e1d('0x57')][_0x8e1d('0x5e')]||_0x575536[_0x8e1d('0x5f')]['id'];_0x65cca7['agent']['id']=_0x575536[_0x8e1d('0x57')][_0x8e1d('0x5e')];return db['FaxMessage'][_0x8e1d('0x56')]({'where':{'id':_0x575536[_0x8e1d('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x493c19,null))[_0x8e1d('0x1e')](saveUpdates(_0x575536[_0x8e1d('0x57')],null))[_0x8e1d('0x1e')](function(_0x23eed8){if(_0x23eed8){_0x65cca7[_0x8e1d('0x25')]=_0x23eed8[_0x8e1d('0x60')]({'plain':!![]});return db[_0x8e1d('0x61')]['find']({'where':{'id':_0x23eed8[_0x8e1d('0x62')]}});}return null;})[_0x8e1d('0x1e')](handleEntityNotFound(_0x493c19,null))[_0x8e1d('0x1e')](function(_0x683a08){if(_0x683a08){return _0x683a08[_0x8e1d('0x34')]({'UserId':_0x575536[_0x8e1d('0x57')][_0x8e1d('0x5e')],'read1stAt':_[_0x8e1d('0x63')](_0x683a08[_0x8e1d('0x64')])?moment()['format'](_0x8e1d('0x65')):undefined});}return null;})[_0x8e1d('0x1e')](function(_0x14ceb2){if(_0x14ceb2){_0x65cca7['interaction']=_0x14ceb2[_0x8e1d('0x60')]({'plain':!![]});interaction_log[_0x8e1d('0x26')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x575536[_0x8e1d('0x5f')]['id'],_0x575536[_0x8e1d('0x5f')]['name'],_0x575536[_0x8e1d('0x5f')]['role'],_0x65cca7[_0x8e1d('0x66')]['id'],_0x575536[_0x8e1d('0x57')]?JSON['stringify'](_0x575536[_0x8e1d('0x57')]):_0x8e1d('0x67'));return respondWithRpcPromise(_0x8e1d('0x68'),_0x8e1d('0x69'),_0x65cca7);}return null;})[_0x8e1d('0x1e')](function(_0x141aef){var _0x275e51=_0x8e1d('0x6a')+_0x141aef[_0x8e1d('0x25')][_0x8e1d('0x6b')];return db[_0x8e1d('0x6c')][_0x8e1d('0x41')](_0x275e51,{'type':db['Sequelize']['QueryTypes'][_0x8e1d('0x6d')],'raw':!![]})[_0x8e1d('0x1e')](function(_0x3704b3){return _0x3704b3;});})['then'](function(_0x1271dc){if(_0x1271dc){_0x65cca7[_0x8e1d('0x25')][_0x8e1d('0x6e')]=_0x1271dc[0x0];if(!_0x575536[_0x8e1d('0x57')]['UserId'])return;return db[_0x8e1d('0x6f')][_0x8e1d('0x56')]({'where':{'id':_0x575536[_0x8e1d('0x57')][_0x8e1d('0x5e')],'role':_0x8e1d('0x70')},'attributes':['id',_0x8e1d('0x37'),'fullname',_0x8e1d('0x71'),_0x8e1d('0x72')],'raw':!![]});}return null;})['then'](function(_0x1ba2f4){if(!_0x1ba2f4)return null;_0x65cca7[_0x8e1d('0x25')][_0x8e1d('0x70')]=_0x1ba2f4;return _0x65cca7;})[_0x8e1d('0x1e')](function(_0x240cbb){if(_0x240cbb){if(_0x575536['body']['manual']){_0x65cca7[_0x8e1d('0x25')][_0x8e1d('0x73')]=util[_0x8e1d('0x5d')](_0x8e1d('0x74'),_0x575536[_0x8e1d('0x5f')][_0x8e1d('0x37')]);_0x65cca7[_0x8e1d('0x25')][_0x8e1d('0x75')]=_0x65cca7[_0x8e1d('0x75')];_0x65cca7[_0x8e1d('0x25')]['motionChannel']=_0x65cca7[_0x8e1d('0x75')];_0x65cca7['message'][_0x8e1d('0x76')]=_0x8e1d('0x5a');return respondWithRpcPromise(_0x8e1d('0x77'),_0x8e1d('0x77'),{'event':_0x8e1d('0x78'),'message':_0x65cca7[_0x8e1d('0x25')]},client9002)['then'](function(){return _0x65cca7;});}return _0x65cca7;}return null;})[_0x8e1d('0x1e')](respondWithResult(_0x493c19,null))[_0x8e1d('0x28')](handleError(_0x493c19,null));};var interaction_log=require(_0x8e1d('0x12'))(_0x8e1d('0x59'));exports['reject']=function(_0x2d9679,_0x29e4b8,_0x24642a){var _0x380bd2={'agent':{},'channel':_0x8e1d('0x5b')};if(_0x2d9679[_0x8e1d('0x57')]['id']){delete _0x2d9679[_0x8e1d('0x57')]['id'];}_0x2d9679[_0x8e1d('0x57')][_0x8e1d('0x5e')]=_0x2d9679[_0x8e1d('0x57')]['UserId']||_0x2d9679[_0x8e1d('0x5f')]['id'];_0x380bd2[_0x8e1d('0x70')]['id']=_0x2d9679[_0x8e1d('0x57')]['UserId'];return db[_0x8e1d('0x3a')][_0x8e1d('0x56')]({'where':{'id':_0x2d9679[_0x8e1d('0x54')]['id'],'UserId':null}})[_0x8e1d('0x1e')](handleEntityNotFound(_0x29e4b8,null))[_0x8e1d('0x1e')](function(_0x8590e6){if(_0x8590e6){_0x380bd2[_0x8e1d('0x25')]=_0x8590e6[_0x8e1d('0x60')]({'plain':!![]});return db[_0x8e1d('0x61')][_0x8e1d('0x56')]({'where':{'id':_0x8590e6[_0x8e1d('0x62')]}});}return null;})[_0x8e1d('0x1e')](handleEntityNotFound(_0x29e4b8,null))[_0x8e1d('0x1e')](function(_0x2f5030){if(_0x2f5030){_0x380bd2[_0x8e1d('0x66')]=_0x2f5030['get']({'plain':!![]});interaction_log['info'](_0x8e1d('0x79'),_0x2d9679[_0x8e1d('0x5f')]['id'],_0x2d9679['user'][_0x8e1d('0x37')],_0x2d9679[_0x8e1d('0x5f')][_0x8e1d('0x7a')],_0x380bd2[_0x8e1d('0x66')]['id'],_0x2d9679[_0x8e1d('0x57')]?JSON[_0x8e1d('0x21')](_0x2d9679[_0x8e1d('0x57')]):_0x8e1d('0x67'));return respondWithRpcPromise('RejectMessage',_0x8e1d('0x7b'),_0x380bd2);}return null;})[_0x8e1d('0x1e')](function(_0x2d6214){var _0x529924=_0x8e1d('0x6a')+_0x2d6214[_0x8e1d('0x25')]['ContactId'];return db[_0x8e1d('0x6c')][_0x8e1d('0x41')](_0x529924,{'type':db[_0x8e1d('0x7c')]['QueryTypes'][_0x8e1d('0x6d')],'raw':!![]})[_0x8e1d('0x1e')](function(_0x2d46d1){return _0x2d46d1;});})[_0x8e1d('0x1e')](function(_0x12363a){if(_0x12363a){_0x380bd2['message'][_0x8e1d('0x6e')]=_0x12363a[0x0];if(!_0x2d9679[_0x8e1d('0x57')]['UserId'])return;return db[_0x8e1d('0x6f')]['find']({'where':{'id':_0x2d9679[_0x8e1d('0x57')][_0x8e1d('0x5e')],'role':_0x8e1d('0x70')},'attributes':['id','name',_0x8e1d('0x7d'),_0x8e1d('0x71'),_0x8e1d('0x72')],'raw':!![]});}return null;})[_0x8e1d('0x1e')](function(_0x347c02){if(!_0x347c02)return null;_0x380bd2[_0x8e1d('0x25')][_0x8e1d('0x70')]=_0x347c02;return _0x380bd2;})[_0x8e1d('0x1e')](function(_0x2703b6){if(_0x2703b6){_0x2703b6[_0x8e1d('0x25')][_0x8e1d('0x73')]=util[_0x8e1d('0x5d')](_0x8e1d('0x74'),_0x2d9679[_0x8e1d('0x5f')][_0x8e1d('0x37')]);_0x2703b6['message'][_0x8e1d('0x75')]=_0x380bd2[_0x8e1d('0x75')];_0x2703b6['message'][_0x8e1d('0x7e')]=_0x380bd2[_0x8e1d('0x75')];_0x2703b6[_0x8e1d('0x25')][_0x8e1d('0x76')]='reject';respondWithRpcPromise(_0x8e1d('0x77'),_0x8e1d('0x77'),{'event':_0x8e1d('0x7f'),'message':_0x2703b6[_0x8e1d('0x25')]},client9002);return _0x380bd2;}return null;})[_0x8e1d('0x1e')](respondWithResult(_0x29e4b8,null))[_0x8e1d('0x28')](handleError(_0x29e4b8,null));};exports[_0x8e1d('0x80')]=function(_0xf94fe5,_0x5a6a25){var _0x2dcb1a;return db[_0x8e1d('0x3a')]['create'](_0xf94fe5[_0x8e1d('0x57')],{})[_0x8e1d('0x1e')](function(_0x5e58d1){_0x2dcb1a=_0x5e58d1;return db[_0x8e1d('0x81')][_0x8e1d('0x82')]({'where':{'id':_0x2dcb1a[_0x8e1d('0x6b')]}});})[_0x8e1d('0x1e')](function(_0x18bdcb){if(_[_0x8e1d('0x63')](_0x18bdcb)){return;}else{_0x2dcb1a[_0x8e1d('0x5b')]=_0x18bdcb['fax'];return db['Attachment'][_0x8e1d('0x82')]({'where':{'id':_0x2dcb1a[_0x8e1d('0x83')]}});}})[_0x8e1d('0x1e')](function(_0xc7612c){return respondWithRpcPromise(_0x8e1d('0x84'),_0x8e1d('0x84'),{'FaxAccountId':_[_0x8e1d('0x63')](_0xf94fe5[_0x8e1d('0x57')])?undefined:_0xf94fe5[_0x8e1d('0x57')][_0x8e1d('0x85')],'path':_[_0x8e1d('0x63')](_0xc7612c)?undefined:util[_0x8e1d('0x5d')](_0x8e1d('0x86'),_0xc7612c[_0x8e1d('0x87')]),'fax':_['isNil'](_0x2dcb1a[_0x8e1d('0x5b')])?undefined:_0x2dcb1a['fax'],'AttachmentId':_0x2dcb1a[_0x8e1d('0x83')]},client9002);})[_0x8e1d('0x1e')](respondWithResult(_0x5a6a25,0xc9))['catch'](handleError(_0x5a6a25,null));};exports[_0x8e1d('0x88')]=function(_0x301963,_0xbfd856){var _0x5e5fce=path[_0x8e1d('0x89')](config[_0x8e1d('0x8a')],'server',_0x8e1d('0x8b'),_0x8e1d('0x8c'));return db[_0x8e1d('0x3a')]['find']({'where':{'id':_0x301963[_0x8e1d('0x54')]['id']},'include':[{'model':db[_0x8e1d('0x8d')],'as':'Attachment'}]})[_0x8e1d('0x1e')](handleEntityNotFound(_0xbfd856,null))['then'](function(_0x447d15){if(_0x447d15){return _0xbfd856[_0x8e1d('0x88')](path[_0x8e1d('0x89')](_0x5e5fce,_0x447d15[_0x8e1d('0x8d')][_0x8e1d('0x87')]));}})[_0x8e1d('0x28')](handleError(_0xbfd856,null));};
\ No newline at end of file
index d58228a..8b434a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a5a=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','remove'];(function(_0x326e79,_0x33dc91){var _0x37eb89=function(_0xbaef25){while(--_0xbaef25){_0x326e79['push'](_0x326e79['shift']());}};_0x37eb89(++_0x33dc91);}(_0x9a5a,0x194));var _0xa9a5=function(_0x3c17c8,_0x53ba3b){_0x3c17c8=_0x3c17c8-0x0;var _0x4c78d3=_0x9a5a[_0x3c17c8];return _0x4c78d3;};'use strict';var EventEmitter=require(_0xa9a5('0x0'));var FaxMessage=require(_0xa9a5('0x1'))['db'][_0xa9a5('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xa9a5('0x3')](0x0);var events={'afterCreate':_0xa9a5('0x4'),'afterUpdate':'update','afterDestroy':_0xa9a5('0x5')};function emitEvent(_0x1e6fb1){return function(_0x230710,_0x1080a9,_0x31e823){FaxMessageEvents[_0xa9a5('0x6')](_0x1e6fb1+':'+_0x230710['id'],_0x230710);FaxMessageEvents['emit'](_0x1e6fb1,_0x230710);_0x31e823(null);};}for(var e in events){if(events[_0xa9a5('0x7')](e)){var event=events[e];FaxMessage[_0xa9a5('0x8')](e,emitEvent(event));}}module[_0xa9a5('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0x2515=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x19afb4,_0x207b46){var _0x294a13=function(_0x2b6078){while(--_0x2b6078){_0x19afb4['push'](_0x19afb4['shift']());}};_0x294a13(++_0x207b46);}(_0x2515,0x1c2));var _0x5251=function(_0x3966cb,_0x1d59c9){_0x3966cb=_0x3966cb-0x0;var _0x123bc4=_0x2515[_0x3966cb];return _0x123bc4;};'use strict';var EventEmitter=require(_0x5251('0x0'));var FaxMessage=require(_0x5251('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x5251('0x2')](0x0);var events={'afterCreate':_0x5251('0x3'),'afterUpdate':_0x5251('0x4'),'afterDestroy':_0x5251('0x5')};function emitEvent(_0x4c95e4){return function(_0x20a3e1,_0x3fe745,_0x570b38){FaxMessageEvents[_0x5251('0x6')](_0x4c95e4+':'+_0x20a3e1['id'],_0x20a3e1);FaxMessageEvents[_0x5251('0x6')](_0x4c95e4,_0x20a3e1);_0x570b38(null);};}for(var e in events){if(events[_0x5251('0x7')](e)){var event=events[e];FaxMessage[_0x5251('0x8')](e,emitEvent(event));}}module[_0x5251('0x9')]=FaxMessageEvents;
\ No newline at end of file
index 0f079a9..768eb6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80a=['fax_messages','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','FaxInteractionId','then','update','catch','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define'];(function(_0x2ea98d,_0x2db302){var _0x3d4c08=function(_0x3f60bc){while(--_0x3f60bc){_0x2ea98d['push'](_0x2ea98d['shift']());}};_0x3d4c08(++_0x2db302);}(_0xb80a,0x18e));var _0xab80=function(_0x3d4da9,_0x4c5939){_0x3d4da9=_0x3d4da9-0x0;var _0x5c3377=_0xb80a[_0x3d4da9];return _0x5c3377;};'use strict';var _=require(_0xab80('0x0'));var util=require('util');var logger=require(_0xab80('0x1'))('api');var moment=require(_0xab80('0x2'));var BPromise=require(_0xab80('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xab80('0x4'));var rimraf=require(_0xab80('0x5'));var config=require(_0xab80('0x6'));var attributes=require(_0xab80('0x7'));module[_0xab80('0x8')]=function(_0x3989cf,_0x31c344){return _0x3989cf[_0xab80('0x9')]('FaxMessage',attributes,{'tableName':_0xab80('0xa'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':['body'],'type':_0xab80('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x855c5e,_0x4837a7,_0x270cec){var _0xdd0018=_0x3989cf[_0xab80('0xc')];var _0xe649b6=_0x855c5e[_0xab80('0xd')]({'plain':!![]});if(_0xe649b6[_0xab80('0xe')][_0xab80('0xf')]()==='in'||_0xe649b6['direction'][_0xab80('0xf')]()==='out'&&!_0xe649b6[_0xab80('0x10')]&&!_[_0xab80('0x11')](_0xe649b6['UserId'])){_0xdd0018['FaxInteraction']['findOne']({'where':{'id':_0xe649b6[_0xab80('0x12')]}})[_0xab80('0x13')](function(_0x54f1c1){if(_0x54f1c1){_0x54f1c1[_0xab80('0x14')]({'lastMsgAt':_0xe649b6['createdAt'],'lastMsgDirection':_0xe649b6[_0xab80('0xe')][_0xab80('0xf')]()});}})[_0xab80('0x15')](function(_0x5c673b){console['error'](_0x5c673b);});}_0x270cec();}},'charset':_0xab80('0x16'),'collate':_0xab80('0x17')});};
\ No newline at end of file
+var _0xf3a1=['update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','fax_messages','fti_fax_messages','FULLTEXT','models','get','direction','toLowerCase','out','UserId','FaxInteraction','findOne','FaxInteractionId','then'];(function(_0x26afbc,_0x4535c4){var _0x188c04=function(_0xd94654){while(--_0xd94654){_0x26afbc['push'](_0x26afbc['shift']());}};_0x188c04(++_0x4535c4);}(_0xf3a1,0x1e6));var _0x1f3a=function(_0x589374,_0x38995a){_0x589374=_0x589374-0x0;var _0x583abd=_0xf3a1[_0x589374];return _0x583abd;};'use strict';var _=require(_0x1f3a('0x0'));var util=require(_0x1f3a('0x1'));var logger=require('../../config/logger')(_0x1f3a('0x2'));var moment=require('moment');var BPromise=require(_0x1f3a('0x3'));var rp=require(_0x1f3a('0x4'));var fs=require('fs');var path=require(_0x1f3a('0x5'));var rimraf=require(_0x1f3a('0x6'));var config=require(_0x1f3a('0x7'));var attributes=require(_0x1f3a('0x8'));module[_0x1f3a('0x9')]=function(_0xfd6b8f,_0x2f84ff){return _0xfd6b8f[_0x1f3a('0xa')]('FaxMessage',attributes,{'tableName':_0x1f3a('0xb'),'paranoid':![],'indexes':[{'name':_0x1f3a('0xc'),'fields':['body'],'type':_0x1f3a('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4f3604,_0x312a1e,_0x38c3ec){var _0x1a9f8b=_0xfd6b8f[_0x1f3a('0xe')];var _0x50573f=_0x4f3604[_0x1f3a('0xf')]({'plain':!![]});if(_0x50573f[_0x1f3a('0x10')][_0x1f3a('0x11')]()==='in'||_0x50573f[_0x1f3a('0x10')][_0x1f3a('0x11')]()===_0x1f3a('0x12')&&!_0x50573f['secret']&&!_['isNil'](_0x50573f[_0x1f3a('0x13')])){_0x1a9f8b[_0x1f3a('0x14')][_0x1f3a('0x15')]({'where':{'id':_0x50573f[_0x1f3a('0x16')]}})[_0x1f3a('0x17')](function(_0x4c21a1){if(_0x4c21a1){_0x4c21a1[_0x1f3a('0x18')]({'lastMsgAt':_0x50573f[_0x1f3a('0x19')],'lastMsgDirection':_0x50573f[_0x1f3a('0x10')][_0x1f3a('0x11')]()});}})[_0x1f3a('0x1a')](function(_0x2fdd4c){console[_0x1f3a('0x1b')](_0x2fdd4c);});}_0x38c3ec();}},'charset':_0x1f3a('0x1c'),'collate':_0x1f3a('0x1d')});};
\ No newline at end of file
index 11fbc5d..eeca7c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fb=['request','FaxMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','CreateFaxMessage','FaxMessage','create','options','raw','then','debug','UpdateFaxMessage','update','body','attributes','limit','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x22fb,0x192));var _0xb22f=function(_0x6a9b9,_0x291e1b){_0x6a9b9=_0x6a9b9-0x0;var _0x101fd1=_0x22fb[_0x6a9b9];return _0x101fd1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb22f('0x0'));var BPromise=require('bluebird');var rs=require(_0xb22f('0x1'));var fs=require('fs');var Redis=require(_0xb22f('0x2'));var db=require(_0xb22f('0x3'))['db'];var utils=require(_0xb22f('0x4'));var logger=require(_0xb22f('0x5'))('rpc');var config=require(_0xb22f('0x6'));var jayson=require(_0xb22f('0x7'));var client=jayson[_0xb22f('0x8')][_0xb22f('0x9')]({'port':0x232a});config[_0xb22f('0xa')]=_[_0xb22f('0xb')](config['redis'],{'host':_0xb22f('0xc'),'port':0x18eb});var socket=require(_0xb22f('0xd'))(new Redis(config[_0xb22f('0xa')]));require(_0xb22f('0xe'))[_0xb22f('0xf')](socket);function respondWithRpcPromise(_0x3593fb,_0x188cea,_0x2ca6dd){return new BPromise(function(_0x26cf79,_0x2676f3){return client[_0xb22f('0x10')](_0x3593fb,_0x2ca6dd)['then'](function(_0x4b9e56){logger['info'](_0xb22f('0x11'),_0x188cea,'request\x20sent');logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x188cea,_0xb22f('0x12'),JSON[_0xb22f('0x13')](_0x4b9e56));if(_0x4b9e56[_0xb22f('0x14')]){if(_0x4b9e56[_0xb22f('0x14')][_0xb22f('0x15')]===0x1f4){logger[_0xb22f('0x14')]('FaxMessage,\x20%s,\x20%s',_0x188cea,_0x4b9e56[_0xb22f('0x14')]['message']);return _0x2676f3(_0x4b9e56[_0xb22f('0x14')]['message']);}logger[_0xb22f('0x14')](_0xb22f('0x11'),_0x188cea,_0x4b9e56[_0xb22f('0x14')][_0xb22f('0x16')]);return _0x26cf79(_0x4b9e56[_0xb22f('0x14')]['message']);}else{logger[_0xb22f('0x17')]('FaxMessage,\x20%s,\x20%s',_0x188cea,_0xb22f('0x12'));_0x26cf79(_0x4b9e56[_0xb22f('0x18')][_0xb22f('0x16')]);}})[_0xb22f('0x19')](function(_0x139bb6){logger[_0xb22f('0x14')]('FaxMessage,\x20%s,\x20%s',_0x188cea,_0x139bb6);_0x2676f3(_0x139bb6);});});}exports[_0xb22f('0x1a')]=function(_0x4b4510){var _0x3e05ce=this;return new Promise(function(_0x3878d8,_0x316f11){return db[_0xb22f('0x1b')][_0xb22f('0x1c')](_0x4b4510['body'],{'raw':_0x4b4510['options']?_0x4b4510[_0xb22f('0x1d')][_0xb22f('0x1e')]===undefined?!![]:![]:!![]})[_0xb22f('0x1f')](function(_0x16e465){logger[_0xb22f('0x17')](_0xb22f('0x1a'),_0x4b4510);logger[_0xb22f('0x20')](_0xb22f('0x1a'),_0x4b4510,JSON['stringify'](_0x16e465));_0x3878d8(_0x16e465);})['catch'](function(_0x3ab1d8){logger[_0xb22f('0x14')]('CreateFaxMessage',_0x3ab1d8[_0xb22f('0x16')],_0x4b4510);_0x316f11(_0x3e05ce[_0xb22f('0x14')](0x1f4,_0x3ab1d8['message']));});});};exports[_0xb22f('0x21')]=function(_0x2918be){var _0x4dfb62=this;return new Promise(function(_0x3e471f,_0x2c4a9e){return db[_0xb22f('0x1b')][_0xb22f('0x22')](_0x2918be[_0xb22f('0x23')],{'raw':_0x2918be[_0xb22f('0x1d')]?_0x2918be[_0xb22f('0x1d')][_0xb22f('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2918be['options']?_0x2918be['options']['where']||null:null,'attributes':_0x2918be[_0xb22f('0x1d')]?_0x2918be['options'][_0xb22f('0x24')]||null:null,'limit':_0x2918be[_0xb22f('0x1d')]?_0x2918be[_0xb22f('0x1d')][_0xb22f('0x25')]||null:null})[_0xb22f('0x1f')](function(_0x5b2a42){logger['info'](_0xb22f('0x21'),_0x2918be);logger[_0xb22f('0x20')](_0xb22f('0x21'),_0x2918be,JSON[_0xb22f('0x13')](_0x5b2a42));_0x3e471f(_0x5b2a42);})['catch'](function(_0x176133){logger[_0xb22f('0x14')]('UpdateFaxMessage',_0x176133[_0xb22f('0x16')],_0x2918be);_0x2c4a9e(_0x4dfb62[_0xb22f('0x14')](0x1f4,_0x176133[_0xb22f('0x16')]));});});};
\ No newline at end of file
+var _0xe5b3=['FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CreateFaxMessage','FaxMessage','create','body','options','raw','catch','UpdateFaxMessage','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','then','info'];(function(_0x595c15,_0x530e20){var _0x437396=function(_0x19ef71){while(--_0x19ef71){_0x595c15['push'](_0x595c15['shift']());}};_0x437396(++_0x530e20);}(_0xe5b3,0x133));var _0x3e5b=function(_0xf177c3,_0x50d6c5){_0xf177c3=_0xf177c3-0x0;var _0x5a1223=_0xe5b3[_0xf177c3];return _0x5a1223;};'use strict';var _=require('lodash');var util=require(_0x3e5b('0x0'));var moment=require(_0x3e5b('0x1'));var BPromise=require(_0x3e5b('0x2'));var rs=require(_0x3e5b('0x3'));var fs=require('fs');var Redis=require(_0x3e5b('0x4'));var db=require(_0x3e5b('0x5'))['db'];var utils=require(_0x3e5b('0x6'));var logger=require(_0x3e5b('0x7'))(_0x3e5b('0x8'));var config=require(_0x3e5b('0x9'));var jayson=require(_0x3e5b('0xa'));var client=jayson['client'][_0x3e5b('0xb')]({'port':0x232a});config[_0x3e5b('0xc')]=_['defaults'](config[_0x3e5b('0xc')],{'host':_0x3e5b('0xd'),'port':0x18eb});var socket=require(_0x3e5b('0xe'))(new Redis(config[_0x3e5b('0xc')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x1fef54,_0x3d3b6e,_0x22fc1a){return new BPromise(function(_0x17dee7,_0xeeaabc){return client['request'](_0x1fef54,_0x22fc1a)[_0x3e5b('0xf')](function(_0x52efbd){logger[_0x3e5b('0x10')](_0x3e5b('0x11'),_0x3d3b6e,_0x3e5b('0x12'));logger[_0x3e5b('0x13')](_0x3e5b('0x14'),_0x3d3b6e,_0x3e5b('0x12'),JSON[_0x3e5b('0x15')](_0x52efbd));if(_0x52efbd['error']){if(_0x52efbd[_0x3e5b('0x16')]['code']===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x3d3b6e,_0x52efbd[_0x3e5b('0x16')][_0x3e5b('0x17')]);return _0xeeaabc(_0x52efbd[_0x3e5b('0x16')]['message']);}logger[_0x3e5b('0x16')]('FaxMessage,\x20%s,\x20%s',_0x3d3b6e,_0x52efbd['error'][_0x3e5b('0x17')]);return _0x17dee7(_0x52efbd[_0x3e5b('0x16')]['message']);}else{logger[_0x3e5b('0x10')](_0x3e5b('0x11'),_0x3d3b6e,'request\x20sent');_0x17dee7(_0x52efbd[_0x3e5b('0x18')][_0x3e5b('0x17')]);}})['catch'](function(_0x4b189d){logger[_0x3e5b('0x16')](_0x3e5b('0x11'),_0x3d3b6e,_0x4b189d);_0xeeaabc(_0x4b189d);});});}exports[_0x3e5b('0x19')]=function(_0xff4aba){var _0x24de5b=this;return new Promise(function(_0x1564b5,_0x447d36){return db[_0x3e5b('0x1a')][_0x3e5b('0x1b')](_0xff4aba[_0x3e5b('0x1c')],{'raw':_0xff4aba[_0x3e5b('0x1d')]?_0xff4aba[_0x3e5b('0x1d')][_0x3e5b('0x1e')]===undefined?!![]:![]:!![]})[_0x3e5b('0xf')](function(_0x5b46d4){logger[_0x3e5b('0x10')](_0x3e5b('0x19'),_0xff4aba);logger[_0x3e5b('0x13')](_0x3e5b('0x19'),_0xff4aba,JSON['stringify'](_0x5b46d4));_0x1564b5(_0x5b46d4);})[_0x3e5b('0x1f')](function(_0x5b33bb){logger[_0x3e5b('0x16')](_0x3e5b('0x19'),_0x5b33bb['message'],_0xff4aba);_0x447d36(_0x24de5b[_0x3e5b('0x16')](0x1f4,_0x5b33bb[_0x3e5b('0x17')]));});});};exports[_0x3e5b('0x20')]=function(_0x3c8965){var _0x3bb749=this;return new Promise(function(_0x26c7f2,_0x160e87){return db[_0x3e5b('0x1a')]['update'](_0x3c8965[_0x3e5b('0x1c')],{'raw':_0x3c8965['options']?_0x3c8965[_0x3e5b('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c8965[_0x3e5b('0x1d')]?_0x3c8965[_0x3e5b('0x1d')][_0x3e5b('0x21')]||null:null,'attributes':_0x3c8965[_0x3e5b('0x1d')]?_0x3c8965[_0x3e5b('0x1d')][_0x3e5b('0x22')]||null:null,'limit':_0x3c8965[_0x3e5b('0x1d')]?_0x3c8965[_0x3e5b('0x1d')][_0x3e5b('0x23')]||null:null})[_0x3e5b('0xf')](function(_0x1e1565){logger['info'](_0x3e5b('0x20'),_0x3c8965);logger[_0x3e5b('0x13')](_0x3e5b('0x20'),_0x3c8965,JSON[_0x3e5b('0x15')](_0x1e1565));_0x26c7f2(_0x1e1565);})[_0x3e5b('0x1f')](function(_0x31e9f9){logger[_0x3e5b('0x16')]('UpdateFaxMessage',_0x31e9f9[_0x3e5b('0x17')],_0x3c8965);_0x160e87(_0x3bb749['error'](0x1f4,_0x31e9f9['message']));});});};
\ No newline at end of file
index 1986e83..a857b4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc694=['emit','removeListener','faxMessage:','./faxMessage.events','save','remove','update'];(function(_0x26390c,_0x4e887d){var _0x34c3a0=function(_0x415669){while(--_0x415669){_0x26390c['push'](_0x26390c['shift']());}};_0x34c3a0(++_0x4e887d);}(_0xc694,0xdc));var _0x4c69=function(_0x4801a0,_0x252c24){_0x4801a0=_0x4801a0-0x0;var _0x338e26=_0xc694[_0x4801a0];return _0x338e26;};'use strict';var FaxMessageEvents=require(_0x4c69('0x0'));var events=[_0x4c69('0x1'),_0x4c69('0x2'),_0x4c69('0x3')];function createListener(_0x7c3c81,_0x3ed781){return function(_0x23d906){_0x3ed781[_0x4c69('0x4')](_0x7c3c81,_0x23d906);};}function removeListener(_0x3e0235,_0x59de2e){return function(){FaxMessageEvents[_0x4c69('0x5')](_0x3e0235,_0x59de2e);};}exports['register']=function(_0x184b5f){for(var _0x85de2b=0x0,_0x5b44a8=events['length'];_0x85de2b<_0x5b44a8;_0x85de2b++){var _0x4eac03=events[_0x85de2b];var _0x7c54ed=createListener(_0x4c69('0x6')+_0x4eac03,_0x184b5f);FaxMessageEvents['on'](_0x4eac03,_0x7c54ed);}};
\ No newline at end of file
+var _0x9436=['faxMessage:','./faxMessage.events','save','update','emit','removeListener','register','length'];(function(_0x43d66e,_0x1e9306){var _0x3d8cd2=function(_0x2fa6d2){while(--_0x2fa6d2){_0x43d66e['push'](_0x43d66e['shift']());}};_0x3d8cd2(++_0x1e9306);}(_0x9436,0x191));var _0x6943=function(_0x2ae8f6,_0x49d56b){_0x2ae8f6=_0x2ae8f6-0x0;var _0x2a82ce=_0x9436[_0x2ae8f6];return _0x2a82ce;};'use strict';var FaxMessageEvents=require(_0x6943('0x0'));var events=[_0x6943('0x1'),'remove',_0x6943('0x2')];function createListener(_0x3f3e96,_0x3abe9b){return function(_0x596f0c){_0x3abe9b[_0x6943('0x3')](_0x3f3e96,_0x596f0c);};}function removeListener(_0x5db481,_0xcc85a8){return function(){FaxMessageEvents[_0x6943('0x4')](_0x5db481,_0xcc85a8);};}exports[_0x6943('0x5')]=function(_0x2870df){for(var _0x433531=0x0,_0x24b917=events[_0x6943('0x6')];_0x433531<_0x24b917;_0x433531++){var _0x455fc4=events[_0x433531];var _0x279168=createListener(_0x6943('0x7')+_0x455fc4,_0x2870df);FaxMessageEvents['on'](_0x455fc4,_0x279168);}};
\ No newline at end of file
index a21a147..16a3ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['/describe','describe','/:id','show','/:id/download','post','tracked','fax','faxmessage:create','create','/:id/accept','accept','put','/:id/reject','reject','delete','destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x140398,_0x5842dd){var _0x830760=function(_0x9b9839){while(--_0x9b9839){_0x140398['push'](_0x140398['shift']());}};_0x830760(++_0x5842dd);}(_0x1339,0x1ed));var _0x9133=function(_0x37d265,_0x19dc6e){_0x37d265=_0x37d265-0x0;var _0x10b963=_0x1339[_0x37d265];return _0x10b963;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9133('0x0'));var timeout=require(_0x9133('0x1'));var express=require(_0x9133('0x2'));var router=express[_0x9133('0x3')]();var fs_extra=require(_0x9133('0x4'));var auth=require(_0x9133('0x5'));var interaction=require(_0x9133('0x6'));var config=require(_0x9133('0x7'));var controller=require('./faxMessage.controller');router[_0x9133('0x8')]('/',auth[_0x9133('0x9')](),controller[_0x9133('0xa')]);router['get'](_0x9133('0xb'),auth[_0x9133('0x9')](),controller[_0x9133('0xc')]);router[_0x9133('0x8')](_0x9133('0xd'),auth[_0x9133('0x9')](),controller[_0x9133('0xe')]);router[_0x9133('0x8')](_0x9133('0xf'),auth[_0x9133('0x9')](),controller['download']);router[_0x9133('0x10')]('/',auth[_0x9133('0x9')](),interaction[_0x9133('0x11')](_0x9133('0x12'),_0x9133('0x13')),controller[_0x9133('0x14')]);router['put'](_0x9133('0xd'),auth[_0x9133('0x9')](),controller['update']);router['put'](_0x9133('0x15'),auth['isAuthenticated'](),controller[_0x9133('0x16')]);router[_0x9133('0x17')](_0x9133('0x18'),auth[_0x9133('0x9')](),controller[_0x9133('0x19')]);router[_0x9133('0x1a')]('/:id',auth[_0x9133('0x9')](),controller[_0x9133('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x41bb=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','get','isAuthenticated','describe','/:id','show','/:id/download','download','fax','faxmessage:create','create','put','update','/:id/accept','accept','reject','delete','destroy','multer','util','connect-timeout'];(function(_0x23502b,_0x2ed417){var _0x4fce8e=function(_0x5ec687){while(--_0x5ec687){_0x23502b['push'](_0x23502b['shift']());}};_0x4fce8e(++_0x2ed417);}(_0x41bb,0xc5));var _0xb41b=function(_0x1667f1,_0x4fe2cd){_0x1667f1=_0x1667f1-0x0;var _0x47caa6=_0x41bb[_0x1667f1];return _0x47caa6;};'use strict';var multer=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var path=require('path');var timeout=require(_0xb41b('0x2'));var express=require('express');var router=express[_0xb41b('0x3')]();var fs_extra=require(_0xb41b('0x4'));var auth=require(_0xb41b('0x5'));var interaction=require(_0xb41b('0x6'));var config=require('../../config/environment');var controller=require(_0xb41b('0x7'));router[_0xb41b('0x8')]('/',auth[_0xb41b('0x9')](),controller['index']);router['get']('/describe',auth[_0xb41b('0x9')](),controller[_0xb41b('0xa')]);router['get'](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0xc')]);router[_0xb41b('0x8')](_0xb41b('0xd'),auth[_0xb41b('0x9')](),controller[_0xb41b('0xe')]);router['post']('/',auth[_0xb41b('0x9')](),interaction['tracked'](_0xb41b('0xf'),_0xb41b('0x10')),controller[_0xb41b('0x11')]);router[_0xb41b('0x12')](_0xb41b('0xb'),auth['isAuthenticated'](),controller[_0xb41b('0x13')]);router[_0xb41b('0x12')](_0xb41b('0x14'),auth[_0xb41b('0x9')](),controller[_0xb41b('0x15')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xb41b('0x16')]);router[_0xb41b('0x17')](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0x18')]);module['exports']=router;
\ No newline at end of file
index 4878d32..440111b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdf0=['sequelize','exports','STRING','name','ENUM','beepall'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xcdf0,0xa8));var _0x0cdf=function(_0x16a943,_0x227141){_0x16a943=_0x16a943-0x0;var _0x20b420=_0xcdf0[_0x16a943];return _0x20b420;};'use strict';var Sequelize=require(_0x0cdf('0x0'));module[_0x0cdf('0x1')]={'name':{'type':Sequelize[_0x0cdf('0x2')],'unique':_0x0cdf('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x0cdf('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0cdf('0x4')]('rrmemory',_0x0cdf('0x5'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x833c=['name','INTEGER','ENUM','beepall','roundrobin','exports','STRING'];(function(_0x526631,_0x36130d){var _0x3c0945=function(_0x4095a3){while(--_0x4095a3){_0x526631['push'](_0x526631['shift']());}};_0x3c0945(++_0x36130d);}(_0x833c,0x1c5));var _0xc833=function(_0x197f77,_0xc200e0){_0x197f77=_0x197f77-0x0;var _0x289766=_0x833c[_0x197f77];return _0x289766;};'use strict';var Sequelize=require('sequelize');module[_0xc833('0x0')]={'name':{'type':Sequelize[_0xc833('0x1')],'unique':_0xc833('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc833('0x1')]},'timeout':{'type':Sequelize[_0xc833('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc833('0x4')]('rrmemory',_0xc833('0x5'),_0xc833('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xc833('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 7cefe0b..e7f35cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb1b=['catch','show','params','keys','find','create','body','user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','User','agent','updatedAt','createdAt','format','%s/%s','SIP','faxPause','getTeams','Team','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','forEach','emit','removeTeams','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','includes','all','union','compact','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxQueues','error','stack','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x43c837,_0x468b0e){var _0x59e8b9=function(_0x5103a0){while(--_0x5103a0){_0x43c837['push'](_0x43c837['shift']());}};_0x59e8b9(++_0x468b0e);}(_0xfb1b,0x1e7));var _0xbfb1=function(_0x1e1c11,_0x570bab){_0x1e1c11=_0x1e1c11-0x0;var _0x293125=_0xfb1b[_0x1e1c11];return _0x293125;};'use strict';var emlformat=require(_0xbfb1('0x0'));var rimraf=require(_0xbfb1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbfb1('0x2'));var rp=require(_0xbfb1('0x3'));var moment=require(_0xbfb1('0x4'));var BPromise=require(_0xbfb1('0x5'));var Mustache=require(_0xbfb1('0x6'));var util=require(_0xbfb1('0x7'));var path=require(_0xbfb1('0x8'));var sox=require(_0xbfb1('0x9'));var csv=require(_0xbfb1('0xa'));var ejs=require(_0xbfb1('0xb'));var fs=require('fs');var fs_extra=require(_0xbfb1('0xc'));var _=require(_0xbfb1('0xd'));var squel=require(_0xbfb1('0xe'));var crypto=require('crypto');var jsforce=require(_0xbfb1('0xf'));var deskjs=require(_0xbfb1('0x10'));var toCsv=require(_0xbfb1('0xa'));var querystring=require(_0xbfb1('0x11'));var Papa=require('papaparse');var Redis=require(_0xbfb1('0x12'));var authService=require(_0xbfb1('0x13'));var qs=require(_0xbfb1('0x14'));var as=require(_0xbfb1('0x15'));var hardwareService=require(_0xbfb1('0x16'));var logger=require('../../config/logger')(_0xbfb1('0x17'));var utils=require(_0xbfb1('0x18'));var config=require(_0xbfb1('0x19'));var licenseUtil=require(_0xbfb1('0x1a'));var db=require('../../mysqldb')['db'];config[_0xbfb1('0x1b')]=_[_0xbfb1('0x1c')](config[_0xbfb1('0x1b')],{'host':_0xbfb1('0x1d'),'port':0x18eb});var socket=require(_0xbfb1('0x1e'))(new Redis(config['redis']));require('./faxQueue.socket')[_0xbfb1('0x1f')](socket);function respondWithStatusCode(_0x208a61,_0x2adb11){_0x2adb11=_0x2adb11||0xcc;return function(_0x4ad58e){if(_0x4ad58e){return _0x208a61[_0xbfb1('0x20')](_0x2adb11);}return _0x208a61[_0xbfb1('0x21')](_0x2adb11)[_0xbfb1('0x22')]();};}function respondWithResult(_0x4d3d87,_0xe717e0){_0xe717e0=_0xe717e0||0xc8;return function(_0x17b06d){if(_0x17b06d){return _0x4d3d87['status'](_0xe717e0)['json'](_0x17b06d);}};}function respondWithFilteredResult(_0x3f9b1f,_0x5066bf){return function(_0x1b7a3e){if(_0x1b7a3e){var _0x41d784=typeof _0x5066bf[_0xbfb1('0x23')]===_0xbfb1('0x24')&&typeof _0x5066bf[_0xbfb1('0x25')]===_0xbfb1('0x24');var _0x1177cd=_0x1b7a3e[_0xbfb1('0x26')];var _0x4f3f70=_0x41d784?0x0:_0x5066bf[_0xbfb1('0x23')];var _0x3e6acb=_0x41d784?_0x1b7a3e[_0xbfb1('0x26')]:_0x5066bf[_0xbfb1('0x23')]+_0x5066bf[_0xbfb1('0x25')];var _0x235950;if(_0x3e6acb>=_0x1177cd){_0x3e6acb=_0x1177cd;_0x235950=0xc8;}else{_0x235950=0xce;}_0x3f9b1f[_0xbfb1('0x21')](_0x235950);return _0x3f9b1f[_0xbfb1('0x27')](_0xbfb1('0x28'),_0x4f3f70+'-'+_0x3e6acb+'/'+_0x1177cd)['json'](_0x1b7a3e);}return null;};}function patchUpdates(_0x26df08){return function(_0x1e6c21){try{jsonpatch[_0xbfb1('0x29')](_0x1e6c21,_0x26df08,!![]);}catch(_0x2eb054){return BPromise[_0xbfb1('0x2a')](_0x2eb054);}return _0x1e6c21[_0xbfb1('0x2b')]();};}function saveUpdates(_0x1c639d,_0x432c30){return function(_0x5d6a9b){if(_0x5d6a9b){return _0x5d6a9b[_0xbfb1('0x2c')](_0x1c639d)[_0xbfb1('0x2d')](function(_0x4bf65d){return _0x4bf65d;});}return null;};}function removeEntity(_0x1e2b8b,_0x8d7795){return function(_0x283762){if(_0x283762){return _0x283762[_0xbfb1('0x2e')]()[_0xbfb1('0x2d')](function(){var _0x430c58=_0x283762[_0xbfb1('0x2f')]({'plain':!![]});var _0x32f166=_0xbfb1('0x30');return db['UserProfileResource'][_0xbfb1('0x2e')]({'where':{'type':_0x32f166,'resourceId':_0x430c58['id']}})[_0xbfb1('0x2d')](function(){return _0x283762;});})[_0xbfb1('0x2d')](function(){_0x1e2b8b['status'](0xcc)[_0xbfb1('0x22')]();});}};}function handleEntityNotFound(_0x1ea010,_0x4aab24){return function(_0x50f9e5){if(!_0x50f9e5){_0x1ea010['sendStatus'](0x194);}return _0x50f9e5;};}function handleError(_0x50c3a4,_0x19f9b0){_0x19f9b0=_0x19f9b0||0x1f4;return function(_0x503c84){logger[_0xbfb1('0x31')](_0x503c84[_0xbfb1('0x32')]);if(_0x503c84[_0xbfb1('0x33')]){delete _0x503c84[_0xbfb1('0x33')];}_0x50c3a4[_0xbfb1('0x21')](_0x19f9b0)[_0xbfb1('0x34')](_0x503c84);};}exports[_0xbfb1('0x35')]=function(_0xd36553,_0x556b24){var _0x1d88e2={},_0x1e3151={},_0x3194eb={'count':0x0,'rows':[]};var _0x3595d8=_[_0xbfb1('0x36')](db[_0xbfb1('0x37')][_0xbfb1('0x38')],function(_0x433028){return{'name':_0x433028[_0xbfb1('0x39')],'type':_0x433028[_0xbfb1('0x3a')][_0xbfb1('0x3b')]};});_0x1e3151[_0xbfb1('0x3c')]=_[_0xbfb1('0x36')](_0x3595d8,_0xbfb1('0x33'));_0x1e3151[_0xbfb1('0x3d')]=_['keys'](_0xd36553[_0xbfb1('0x3d')]);_0x1e3151[_0xbfb1('0x3e')]=_[_0xbfb1('0x3f')](_0x1e3151[_0xbfb1('0x3c')],_0x1e3151['query']);_0x1d88e2[_0xbfb1('0x40')]=_[_0xbfb1('0x3f')](_0x1e3151[_0xbfb1('0x3c')],qs[_0xbfb1('0x41')](_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x41')]));_0x1d88e2['attributes']=_0x1d88e2[_0xbfb1('0x40')][_0xbfb1('0x42')]?_0x1d88e2[_0xbfb1('0x40')]:_0x1e3151[_0xbfb1('0x3c')];if(!_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x43')](_0xbfb1('0x44'))){_0x1d88e2[_0xbfb1('0x25')]=qs[_0xbfb1('0x25')](_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x25')]);_0x1d88e2[_0xbfb1('0x23')]=qs[_0xbfb1('0x23')](_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x23')]);}_0x1d88e2[_0xbfb1('0x45')]=qs[_0xbfb1('0x46')](_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x46')]);_0x1d88e2[_0xbfb1('0x47')]=qs[_0xbfb1('0x3e')](_[_0xbfb1('0x48')](_0xd36553[_0xbfb1('0x3d')],_0x1e3151[_0xbfb1('0x3e')]),_0x3595d8);if(_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x49')]){_0x1d88e2[_0xbfb1('0x47')]=_[_0xbfb1('0x4a')](_0x1d88e2[_0xbfb1('0x47')],{'$or':_[_0xbfb1('0x36')](_0x3595d8,function(_0x132209){if(_0x132209[_0xbfb1('0x3a')]!==_0xbfb1('0x4b')){var _0x32fb2c={};_0x32fb2c[_0x132209[_0xbfb1('0x33')]]={'$like':'%'+_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x49')]+'%'};return _0x32fb2c;}})});}_0x1d88e2=_[_0xbfb1('0x4a')]({},_0x1d88e2,_0xd36553[_0xbfb1('0x4c')]);var _0x3d7024={'where':_0x1d88e2[_0xbfb1('0x47')]};return db[_0xbfb1('0x37')][_0xbfb1('0x26')](_0x3d7024)[_0xbfb1('0x2d')](function(_0x4e90a6){_0x3194eb[_0xbfb1('0x26')]=_0x4e90a6;if(_0xd36553[_0xbfb1('0x3d')][_0xbfb1('0x4d')]){_0x1d88e2[_0xbfb1('0x4e')]=[{'all':!![]}];}return db[_0xbfb1('0x37')][_0xbfb1('0x4f')](_0x1d88e2);})[_0xbfb1('0x2d')](function(_0x4fe19c){_0x3194eb[_0xbfb1('0x50')]=_0x4fe19c;return _0x3194eb;})[_0xbfb1('0x2d')](respondWithFilteredResult(_0x556b24,_0x1d88e2))[_0xbfb1('0x51')](handleError(_0x556b24,null));};exports[_0xbfb1('0x52')]=function(_0x4ec716,_0x54cba9){var _0x1991d6={'raw':!![],'where':{'id':_0x4ec716[_0xbfb1('0x53')]['id']}},_0x33f0c0={};_0x33f0c0[_0xbfb1('0x3c')]=_['keys'](db[_0xbfb1('0x37')][_0xbfb1('0x38')]);_0x33f0c0[_0xbfb1('0x3d')]=_[_0xbfb1('0x54')](_0x4ec716[_0xbfb1('0x3d')]);_0x33f0c0[_0xbfb1('0x3e')]=_[_0xbfb1('0x3f')](_0x33f0c0[_0xbfb1('0x3c')],_0x33f0c0[_0xbfb1('0x3d')]);_0x1991d6[_0xbfb1('0x40')]=_[_0xbfb1('0x3f')](_0x33f0c0[_0xbfb1('0x3c')],qs[_0xbfb1('0x41')](_0x4ec716[_0xbfb1('0x3d')][_0xbfb1('0x41')]));_0x1991d6[_0xbfb1('0x40')]=_0x1991d6[_0xbfb1('0x40')][_0xbfb1('0x42')]?_0x1991d6[_0xbfb1('0x40')]:_0x33f0c0[_0xbfb1('0x3c')];if(_0x4ec716[_0xbfb1('0x3d')][_0xbfb1('0x4d')]){_0x1991d6[_0xbfb1('0x4e')]=[{'all':!![]}];}_0x1991d6=_[_0xbfb1('0x4a')]({},_0x1991d6,_0x4ec716[_0xbfb1('0x4c')]);return db[_0xbfb1('0x37')][_0xbfb1('0x55')](_0x1991d6)[_0xbfb1('0x2d')](handleEntityNotFound(_0x54cba9,null))[_0xbfb1('0x2d')](respondWithResult(_0x54cba9,null))[_0xbfb1('0x51')](handleError(_0x54cba9,null));};exports[_0xbfb1('0x56')]=function(_0x3ac73d,_0x3b4609){return db['FaxQueue']['create'](_0x3ac73d[_0xbfb1('0x57')],{})['then'](function(_0x3e4977){var _0x9f9ccd=_0x3ac73d[_0xbfb1('0x58')][_0xbfb1('0x2f')]({'plain':!![]});if(!_0x9f9ccd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x9f9ccd[_0xbfb1('0x59')]==='user'){var _0x25918f=_0x3e4977[_0xbfb1('0x2f')]({'plain':!![]});var _0x24de0a=_0xbfb1('0x30');return db['UserProfileSection'][_0xbfb1('0x55')]({'where':{'name':_0x24de0a,'userProfileId':_0x9f9ccd[_0xbfb1('0x5a')]},'raw':!![]})[_0xbfb1('0x2d')](function(_0x2f876e){if(_0x2f876e&&_0x2f876e[_0xbfb1('0x5b')]===0x0){return db[_0xbfb1('0x5c')][_0xbfb1('0x56')]({'name':_0x25918f[_0xbfb1('0x33')],'resourceId':_0x25918f['id'],'type':_0x2f876e['name'],'sectionId':_0x2f876e['id']},{})[_0xbfb1('0x2d')](function(){return _0x3e4977;});}else{return _0x3e4977;}})['catch'](function(_0x45960e){logger['error'](_0xbfb1('0x5d'),_0x45960e);throw _0x45960e;});}return _0x3e4977;})['then'](respondWithResult(_0x3b4609,0xc9))[_0xbfb1('0x51')](handleError(_0x3b4609,null));};exports['update']=function(_0x11d1a1,_0xce2cc8){if(_0x11d1a1['body']['id']){delete _0x11d1a1[_0xbfb1('0x57')]['id'];}return db[_0xbfb1('0x37')]['find']({'where':{'id':_0x11d1a1['params']['id']}})['then'](handleEntityNotFound(_0xce2cc8,null))[_0xbfb1('0x2d')](saveUpdates(_0x11d1a1[_0xbfb1('0x57')],null))['then'](respondWithResult(_0xce2cc8,null))[_0xbfb1('0x51')](handleError(_0xce2cc8,null));};exports[_0xbfb1('0x2e')]=function(_0x52bf51,_0x3c1935){return db[_0xbfb1('0x37')][_0xbfb1('0x55')]({'where':{'id':_0x52bf51['params']['id']}})['then'](handleEntityNotFound(_0x3c1935,null))['then'](removeEntity(_0x3c1935,null))[_0xbfb1('0x51')](handleError(_0x3c1935,null));};exports['describe']=function(_0x440213,_0x3ca773){return db[_0xbfb1('0x37')][_0xbfb1('0x5e')]()[_0xbfb1('0x2d')](respondWithResult(_0x3ca773,null))[_0xbfb1('0x51')](handleError(_0x3ca773,null));};exports[_0xbfb1('0x5f')]=function(_0x154940,_0x2f501f,_0x3739e8){var _0x2ad1bf={'raw':!![],'where':{}},_0x33cd76={},_0x18e098;return db['FaxQueue'][_0xbfb1('0x60')]({'where':{'id':_0x154940[_0xbfb1('0x53')]['id']}})['then'](handleEntityNotFound(_0x2f501f,null))['then'](function(_0x4b58aa){if(_0x4b58aa){_0x18e098=_0x4b58aa[_0xbfb1('0x2f')]({'plain':!![]});_0x33cd76['model']=_['keys'](db['UserFaxQueue'][_0xbfb1('0x38')]);_0x33cd76[_0xbfb1('0x3d')]=_['keys'](_0x154940['query']);_0x33cd76['filters']=_['intersection'](_0x33cd76[_0xbfb1('0x3c')],_0x33cd76[_0xbfb1('0x3d')]);_0x2ad1bf[_0xbfb1('0x40')]=_['intersection'](_0x33cd76[_0xbfb1('0x3c')],qs[_0xbfb1('0x41')](_0x154940[_0xbfb1('0x3d')]['fields']));_0x2ad1bf[_0xbfb1('0x40')]=_0x2ad1bf[_0xbfb1('0x40')][_0xbfb1('0x42')]?_0x2ad1bf['attributes']:_0x33cd76[_0xbfb1('0x3c')];if(!_0x154940[_0xbfb1('0x3d')][_0xbfb1('0x43')]('nolimit')){_0x2ad1bf[_0xbfb1('0x25')]=qs[_0xbfb1('0x25')](_0x154940[_0xbfb1('0x3d')][_0xbfb1('0x25')]);_0x2ad1bf[_0xbfb1('0x23')]=qs['offset'](_0x154940[_0xbfb1('0x3d')][_0xbfb1('0x23')]);}_0x2ad1bf[_0xbfb1('0x45')]=qs[_0xbfb1('0x46')](_0x154940[_0xbfb1('0x3d')][_0xbfb1('0x46')]);_0x2ad1bf[_0xbfb1('0x47')]=qs[_0xbfb1('0x3e')](_[_0xbfb1('0x48')](_0x154940[_0xbfb1('0x3d')],_0x33cd76[_0xbfb1('0x3e')]));_0x2ad1bf[_0xbfb1('0x47')]['FaxQueueId']=_0x4b58aa['id'];if(_0x154940[_0xbfb1('0x3d')][_0xbfb1('0x49')]){_0x2ad1bf[_0xbfb1('0x47')]=_[_0xbfb1('0x4a')](_0x2ad1bf[_0xbfb1('0x47')],{'$or':_[_0xbfb1('0x36')](_0x2ad1bf['attributes'],function(_0x53ca7f){var _0x2db7a5={};_0x2db7a5[_0x53ca7f]={'$like':'%'+_0x154940[_0xbfb1('0x3d')][_0xbfb1('0x49')]+'%'};return _0x2db7a5;})});}_0x2ad1bf=_[_0xbfb1('0x4a')]({},_0x2ad1bf,_0x154940[_0xbfb1('0x4c')]);return db[_0xbfb1('0x61')][_0xbfb1('0x4f')](_0x2ad1bf);}})[_0xbfb1('0x2d')](function(_0x4dbd56){if(_0x4dbd56){return db[_0xbfb1('0x62')]['findAndCountAll']({'where':{'id':_[_0xbfb1('0x36')](_0x4dbd56,'UserId'),'role':_0xbfb1('0x63')},'attributes':['id',_0xbfb1('0x33'),'faxPause',_0xbfb1('0x64'),_0xbfb1('0x65')]});}})['then'](function(_0x1a52dc){if(_0x1a52dc){return{'count':_0x1a52dc['count'],'rows':_[_0xbfb1('0x36')](_0x1a52dc['rows'],function(_0x516da8){return{'membername':_0x516da8[_0xbfb1('0x33')],'UserId':_0x516da8['id'],'queue_name':_0x18e098[_0xbfb1('0x33')],'FaxQueueId':_0x18e098['id'],'interface':util[_0xbfb1('0x66')](_0xbfb1('0x67'),_0xbfb1('0x68'),_0x516da8[_0xbfb1('0x33')]),'penalty':0x0,'paused':_0x516da8[_0xbfb1('0x69')],'createdAt':_0x516da8['createdAt'],'updatedAt':_0x516da8[_0xbfb1('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xbfb1('0x2d')](respondWithFilteredResult(_0x2f501f,_0x2ad1bf))[_0xbfb1('0x51')](handleError(_0x2f501f,null));};exports[_0xbfb1('0x6a')]=function(_0x484ba8,_0x55f220,_0xd9a85c){var _0x7000f={};var _0x3baa93={};var _0x17134e;var _0x53f4a8;return db[_0xbfb1('0x37')][_0xbfb1('0x60')]({'where':{'id':_0x484ba8[_0xbfb1('0x53')]['id']}})['then'](handleEntityNotFound(_0x55f220,null))[_0xbfb1('0x2d')](function(_0x572e8b){if(_0x572e8b){_0x17134e=_0x572e8b;_0x3baa93[_0xbfb1('0x3c')]=_[_0xbfb1('0x54')](db[_0xbfb1('0x6b')][_0xbfb1('0x38')]);_0x3baa93[_0xbfb1('0x3d')]=_[_0xbfb1('0x54')](_0x484ba8[_0xbfb1('0x3d')]);_0x3baa93[_0xbfb1('0x3e')]=_['intersection'](_0x3baa93[_0xbfb1('0x3c')],_0x3baa93[_0xbfb1('0x3d')]);_0x7000f[_0xbfb1('0x40')]=_[_0xbfb1('0x3f')](_0x3baa93[_0xbfb1('0x3c')],qs[_0xbfb1('0x41')](_0x484ba8['query']['fields']));_0x7000f[_0xbfb1('0x40')]=_0x7000f[_0xbfb1('0x40')]['length']?_0x7000f[_0xbfb1('0x40')]:_0x3baa93['model'];_0x7000f[_0xbfb1('0x45')]=qs[_0xbfb1('0x46')](_0x484ba8[_0xbfb1('0x3d')][_0xbfb1('0x46')]);_0x7000f[_0xbfb1('0x47')]=qs[_0xbfb1('0x3e')](_[_0xbfb1('0x48')](_0x484ba8[_0xbfb1('0x3d')],_0x3baa93[_0xbfb1('0x3e')]));if(_0x484ba8['query']['filter']){_0x7000f[_0xbfb1('0x47')]=_[_0xbfb1('0x4a')](_0x7000f[_0xbfb1('0x47')],{'$or':_[_0xbfb1('0x36')](_0x7000f[_0xbfb1('0x40')],function(_0x43c327){var _0x11f255={};_0x11f255[_0x43c327]={'$like':'%'+_0x484ba8[_0xbfb1('0x3d')][_0xbfb1('0x49')]+'%'};return _0x11f255;})});}_0x7000f=_[_0xbfb1('0x4a')]({},_0x7000f,_0x484ba8[_0xbfb1('0x4c')]);return _0x17134e[_0xbfb1('0x6a')](_0x7000f);}})[_0xbfb1('0x2d')](function(_0x5aafce){if(_0x5aafce){_0x53f4a8=_0x5aafce['length'];if(!_0x484ba8['query'][_0xbfb1('0x43')](_0xbfb1('0x44'))){_0x7000f['limit']=qs['limit'](_0x484ba8[_0xbfb1('0x3d')][_0xbfb1('0x25')]);_0x7000f[_0xbfb1('0x23')]=qs[_0xbfb1('0x23')](_0x484ba8[_0xbfb1('0x3d')][_0xbfb1('0x23')]);}return _0x17134e[_0xbfb1('0x6a')](_0x7000f);}})['then'](function(_0x3a7eed){if(_0x3a7eed){return _0x3a7eed?{'count':_0x53f4a8,'rows':_0x3a7eed}:null;}})['then'](respondWithResult(_0x55f220,null))[_0xbfb1('0x51')](handleError(_0x55f220,null));};exports['addTeams']=function(_0x5146f1,_0x43fd23,_0x55b889){var _0x590dad=_0x5146f1[_0xbfb1('0x57')][_0xbfb1('0x6c')];return db[_0xbfb1('0x6b')]['findAll']({'where':{'id':_0x590dad},'attributes':['id'],'include':[{'model':db[_0xbfb1('0x62')],'as':_0xbfb1('0x6d'),'attributes':['id',_0xbfb1('0x33'),_0xbfb1('0x6e'),_0xbfb1('0x6f'),_0xbfb1('0x70')],'raw':!![]}]})[_0xbfb1('0x2d')](function(_0x3fccfd){if(_0x3fccfd){var _0x116733=_[_0xbfb1('0x71')](_0x3fccfd,function(_0x18853b){var _0x21ff19=_0x18853b[_0xbfb1('0x2f')]({'plain':!![]});return _0x21ff19['Agents'];});return db['FaxQueue'][_0xbfb1('0x55')]({'where':{'id':_0x5146f1[_0xbfb1('0x53')]['id']}})[_0xbfb1('0x2d')](function(_0x1785ec){return db[_0xbfb1('0x72')][_0xbfb1('0x73')](function(_0x162e0a){return _0x1785ec['addTeams'](_0x590dad,{'transaction':_0x162e0a})[_0xbfb1('0x2d')](function(){return BPromise['each'](_0x116733,function(_0x307eac){return db[_0xbfb1('0x61')]['findOrCreate']({'where':{'UserId':_0x307eac['id'],'FaxQueueId':_0x5146f1[_0xbfb1('0x53')]['id']},'transaction':_0x162e0a});});})[_0xbfb1('0x2d')](function(){_0x116733[_0xbfb1('0x74')](function(_0x53858e){socket[_0xbfb1('0x75')]('userFaxQueue:save',{'UserId':_0x53858e['id'],'FaxQueueId':_0x1785ec['id']});});});});});}})[_0xbfb1('0x2d')](respondWithStatusCode(_0x43fd23,null))[_0xbfb1('0x51')](handleError(_0x43fd23,null));};exports[_0xbfb1('0x76')]=function(_0x1f3af0,_0x5ca2d3,_0x5ad1e5){return db[_0xbfb1('0x6b')]['findAll']({'where':{'id':_0x1f3af0['query'][_0xbfb1('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xbfb1('0x62')],'as':_0xbfb1('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xbfb1('0x2d')](handleEntityNotFound(_0x5ca2d3,null))['then'](function(_0x5ba462){var _0x252870=_[_0xbfb1('0x36')](_0x5ba462,'id');var _0x5ed8e5=[];var _0x2cf5c2=[];var _0x5514ec=squel['select']();_0x5514ec['field'](_0xbfb1('0x77'))[_0xbfb1('0x78')](_0xbfb1('0x79'),'tq')[_0xbfb1('0x7a')](_0xbfb1('0x7b'),'ut',_0xbfb1('0x7c'))[_0xbfb1('0x47')](_0xbfb1('0x7d'),_0x1f3af0[_0xbfb1('0x53')]['id']);for(var _0x27fc13=0x0;_0x27fc13<_0x5ba462[_0xbfb1('0x42')];_0x27fc13+=0x1){let _0x28a18f=_0x5ba462[_0x27fc13];for(var _0x2fb8b1=0x0;_0x2fb8b1<_0x28a18f[_0xbfb1('0x6d')][_0xbfb1('0x42')];_0x2fb8b1+=0x1){let _0x21c1a4=_0x28a18f[_0xbfb1('0x6d')][_0x2fb8b1];var _0x83a165=_0x5514ec[_0xbfb1('0x7e')]();_0x83a165[_0xbfb1('0x47')](_0xbfb1('0x7f'),_0x21c1a4['id']);_0x2cf5c2['push'](db['sequelize'][_0xbfb1('0x3d')](_0x83a165[_0xbfb1('0x80')](),{'type':db[_0xbfb1('0x72')][_0xbfb1('0x81')]['SELECT']})[_0xbfb1('0x2d')](function(_0x4a43a0){if(_0x4a43a0[_0xbfb1('0x42')]===0x1){return _0x21c1a4['id'];}else{var _0x4f3c4b=_[_0xbfb1('0x82')](_[_0xbfb1('0x36')](_0x4a43a0,'TeamId'),function(_0x30109f){return _[_0xbfb1('0x83')](_0x252870,_0x30109f);});if(_0x4f3c4b){return _0x21c1a4['id'];}}}));}}return BPromise[_0xbfb1('0x84')](_0x2cf5c2)[_0xbfb1('0x2d')](function(_0x577a6e){_0x5ed8e5=_(_0x5ed8e5)[_0xbfb1('0x85')](_0x577a6e)[_0xbfb1('0x86')]()['value']();return db['FaxQueue']['find']({'where':{'id':_0x1f3af0['params']['id']}})[_0xbfb1('0x2d')](function(_0x4a540e){return db[_0xbfb1('0x72')][_0xbfb1('0x73')](function(_0x199fa4){return _0x4a540e[_0xbfb1('0x76')](_0x1f3af0[_0xbfb1('0x3d')]['ids'],{'transaction':_0x199fa4})[_0xbfb1('0x2d')](function(){if(!_['isEmpty'](_0x5ed8e5)){return _0x4a540e[_0xbfb1('0x87')](_0x5ed8e5,{'transaction':_0x199fa4});}})['then'](function(){_0x5ed8e5[_0xbfb1('0x74')](function(_0x4a8579){socket[_0xbfb1('0x75')](_0xbfb1('0x88'),{'UserId':_0x4a8579,'FaxQueueId':_0x4a540e['id']});});});});});});})['then'](respondWithStatusCode(_0x5ca2d3,null))[_0xbfb1('0x51')](handleError(_0x5ca2d3,null));};exports[_0xbfb1('0x89')]=function(_0x14fa77,_0x4dc2a1,_0xad8983){return db[_0xbfb1('0x37')][_0xbfb1('0x55')]({'where':{'id':_0x14fa77['params']['id']}})[_0xbfb1('0x2d')](handleEntityNotFound(_0x4dc2a1,null))[_0xbfb1('0x2d')](function(_0x2badce){if(_0x2badce){return _0x2badce[_0xbfb1('0x89')](_0x14fa77['body'][_0xbfb1('0x6c')],_[_0xbfb1('0x8a')](_0x14fa77[_0xbfb1('0x57')],[_0xbfb1('0x6c'),'id'])||{})[_0xbfb1('0x8b')](function(_0x390015){for(var _0x231361=0x0;_0x231361<_0x14fa77['body'][_0xbfb1('0x6c')][_0xbfb1('0x42')];_0x231361+=0x1){socket[_0xbfb1('0x75')](_0xbfb1('0x8c'),{'UserId':Number(_0x14fa77['body'][_0xbfb1('0x6c')][_0x231361]),'FaxQueueId':Number(_0x14fa77[_0xbfb1('0x53')]['id'])});}return _0x390015;});}})[_0xbfb1('0x2d')](respondWithResult(_0x4dc2a1,null))['catch'](handleError(_0x4dc2a1,null));};exports[_0xbfb1('0x87')]=function(_0x377a44,_0x4659ff,_0x2ca12c){return db[_0xbfb1('0x37')]['find']({'where':{'id':_0x377a44[_0xbfb1('0x53')]['id']}})[_0xbfb1('0x2d')](handleEntityNotFound(_0x4659ff,null))[_0xbfb1('0x2d')](function(_0x44ceac){if(_0x44ceac){return _0x44ceac[_0xbfb1('0x87')](_0x377a44[_0xbfb1('0x3d')][_0xbfb1('0x6c')])[_0xbfb1('0x2d')](function(){if(_['isArray'](_0x377a44[_0xbfb1('0x3d')]['ids'])){for(var _0x172ed9=0x0;_0x172ed9<_0x377a44[_0xbfb1('0x3d')][_0xbfb1('0x6c')][_0xbfb1('0x42')];_0x172ed9+=0x1){socket[_0xbfb1('0x75')](_0xbfb1('0x88'),{'UserId':Number(_0x377a44['query'][_0xbfb1('0x6c')][_0x172ed9]),'FaxQueueId':Number(_0x377a44[_0xbfb1('0x53')]['id'])});}}else{socket[_0xbfb1('0x75')](_0xbfb1('0x88'),{'UserId':Number(_0x377a44[_0xbfb1('0x3d')][_0xbfb1('0x6c')]),'FaxQueueId':Number(_0x377a44[_0xbfb1('0x53')]['id'])});}});}})[_0xbfb1('0x2d')](respondWithStatusCode(_0x4659ff,null))['catch'](handleError(_0x4659ff,null));};exports[_0xbfb1('0x8d')]=function(_0x39983d,_0x4e742e,_0x2f7b02){var _0x5dad30={};var _0x48cc53={};var _0x104644;var _0x58fc78;return db[_0xbfb1('0x37')][_0xbfb1('0x60')]({'where':{'id':_0x39983d[_0xbfb1('0x53')]['id']}})[_0xbfb1('0x2d')](handleEntityNotFound(_0x4e742e,null))['then'](function(_0xf9f574){if(_0xf9f574){_0x104644=_0xf9f574;_0x48cc53[_0xbfb1('0x3c')]=_[_0xbfb1('0x54')](db['User']['rawAttributes']);_0x48cc53[_0xbfb1('0x3d')]=_[_0xbfb1('0x54')](_0x39983d[_0xbfb1('0x3d')]);_0x48cc53['filters']=_[_0xbfb1('0x3f')](_0x48cc53[_0xbfb1('0x3c')],_0x48cc53[_0xbfb1('0x3d')]);_0x5dad30['attributes']=_[_0xbfb1('0x3f')](_0x48cc53[_0xbfb1('0x3c')],qs[_0xbfb1('0x41')](_0x39983d[_0xbfb1('0x3d')][_0xbfb1('0x41')]));_0x5dad30[_0xbfb1('0x40')]=_0x5dad30[_0xbfb1('0x40')][_0xbfb1('0x42')]?_0x5dad30['attributes']:_0x48cc53[_0xbfb1('0x3c')];_0x5dad30[_0xbfb1('0x45')]=qs[_0xbfb1('0x46')](_0x39983d['query'][_0xbfb1('0x46')]);_0x5dad30['where']=qs[_0xbfb1('0x3e')](_['pick'](_0x39983d[_0xbfb1('0x3d')],_0x48cc53[_0xbfb1('0x3e')]));if(_0x39983d[_0xbfb1('0x3d')][_0xbfb1('0x49')]){_0x5dad30[_0xbfb1('0x47')]=_[_0xbfb1('0x4a')](_0x5dad30[_0xbfb1('0x47')],{'$or':_['map'](_0x5dad30[_0xbfb1('0x40')],function(_0x256398){var _0x49a8d4={};_0x49a8d4[_0x256398]={'$like':'%'+_0x39983d[_0xbfb1('0x3d')]['filter']+'%'};return _0x49a8d4;})});}_0x5dad30=_['merge']({},_0x5dad30,_0x39983d[_0xbfb1('0x4c')]);return _0x104644[_0xbfb1('0x8d')](_0x5dad30);}})[_0xbfb1('0x2d')](function(_0x48d6e9){if(_0x48d6e9){_0x58fc78=_0x48d6e9[_0xbfb1('0x42')];if(!_0x39983d[_0xbfb1('0x3d')]['hasOwnProperty'](_0xbfb1('0x44'))){_0x5dad30[_0xbfb1('0x25')]=qs[_0xbfb1('0x25')](_0x39983d[_0xbfb1('0x3d')][_0xbfb1('0x25')]);_0x5dad30[_0xbfb1('0x23')]=qs['offset'](_0x39983d['query']['offset']);}return _0x104644[_0xbfb1('0x8d')](_0x5dad30);}})[_0xbfb1('0x2d')](function(_0x23f981){if(_0x23f981){return _0x23f981?{'count':_0x58fc78,'rows':_0x23f981}:null;}})[_0xbfb1('0x2d')](respondWithResult(_0x4e742e,null))[_0xbfb1('0x51')](handleError(_0x4e742e,null));};
\ No newline at end of file
+var _0xb6e9=['catch','find','create','role','user','FaxQueues','UserProfileSection','userProfileId','autoAssociation','body','params','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','FaxQueueId','User','findAndCountAll','agent','faxPause','updatedAt','rows','format','SIP','getTeams','Team','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','field','tq.TeamId','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','addAgents','isArray','userFaxQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','end','error','stack','name','send','index','FaxQueue','rawAttributes','type','key','model','map','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x4f3c26,_0x41079a){var _0x55277c=function(_0x49db41){while(--_0x49db41){_0x4f3c26['push'](_0x4f3c26['shift']());}};_0x55277c(++_0x41079a);}(_0xb6e9,0x1e8));var _0x9b6e=function(_0x22fd89,_0x2b0241){_0x22fd89=_0x22fd89-0x0;var _0x32e265=_0xb6e9[_0x22fd89];return _0x32e265;};'use strict';var emlformat=require(_0x9b6e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9b6e('0x1'));var jsonpatch=require(_0x9b6e('0x2'));var rp=require(_0x9b6e('0x3'));var moment=require(_0x9b6e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9b6e('0x5'));var util=require(_0x9b6e('0x6'));var path=require(_0x9b6e('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9b6e('0x8'));var _=require(_0x9b6e('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9b6e('0xa'));var deskjs=require(_0x9b6e('0xb'));var toCsv=require(_0x9b6e('0xc'));var querystring=require('querystring');var Papa=require(_0x9b6e('0xd'));var Redis=require(_0x9b6e('0xe'));var authService=require(_0x9b6e('0xf'));var qs=require(_0x9b6e('0x10'));var as=require(_0x9b6e('0x11'));var hardwareService=require(_0x9b6e('0x12'));var logger=require('../../config/logger')(_0x9b6e('0x13'));var utils=require(_0x9b6e('0x14'));var config=require(_0x9b6e('0x15'));var licenseUtil=require(_0x9b6e('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9b6e('0x17')](config[_0x9b6e('0x18')],{'host':_0x9b6e('0x19'),'port':0x18eb});var socket=require(_0x9b6e('0x1a'))(new Redis(config[_0x9b6e('0x18')]));require(_0x9b6e('0x1b'))[_0x9b6e('0x1c')](socket);function respondWithStatusCode(_0x402f6b,_0x4f98a1){_0x4f98a1=_0x4f98a1||0xcc;return function(_0x1dc220){if(_0x1dc220){return _0x402f6b[_0x9b6e('0x1d')](_0x4f98a1);}return _0x402f6b['status'](_0x4f98a1)['end']();};}function respondWithResult(_0x56d6af,_0x1b805b){_0x1b805b=_0x1b805b||0xc8;return function(_0x339bec){if(_0x339bec){return _0x56d6af[_0x9b6e('0x1e')](_0x1b805b)['json'](_0x339bec);}};}function respondWithFilteredResult(_0xbd138a,_0xa0efc9){return function(_0x3f8ad9){if(_0x3f8ad9){var _0x4e0f44=typeof _0xa0efc9['offset']==='undefined'&&typeof _0xa0efc9[_0x9b6e('0x1f')]===_0x9b6e('0x20');var _0x3ac8de=_0x3f8ad9[_0x9b6e('0x21')];var _0x1f75b7=_0x4e0f44?0x0:_0xa0efc9['offset'];var _0x4c1a66=_0x4e0f44?_0x3f8ad9['count']:_0xa0efc9[_0x9b6e('0x22')]+_0xa0efc9[_0x9b6e('0x1f')];var _0x528ed9;if(_0x4c1a66>=_0x3ac8de){_0x4c1a66=_0x3ac8de;_0x528ed9=0xc8;}else{_0x528ed9=0xce;}_0xbd138a[_0x9b6e('0x1e')](_0x528ed9);return _0xbd138a[_0x9b6e('0x23')](_0x9b6e('0x24'),_0x1f75b7+'-'+_0x4c1a66+'/'+_0x3ac8de)['json'](_0x3f8ad9);}return null;};}function patchUpdates(_0x314bed){return function(_0x3dde98){try{jsonpatch[_0x9b6e('0x25')](_0x3dde98,_0x314bed,!![]);}catch(_0x1eedb1){return BPromise[_0x9b6e('0x26')](_0x1eedb1);}return _0x3dde98[_0x9b6e('0x27')]();};}function saveUpdates(_0x294f4e,_0x312736){return function(_0x274cf6){if(_0x274cf6){return _0x274cf6[_0x9b6e('0x28')](_0x294f4e)['then'](function(_0x4fd5bf){return _0x4fd5bf;});}return null;};}function removeEntity(_0x103199,_0x3da366){return function(_0x127699){if(_0x127699){return _0x127699[_0x9b6e('0x29')]()[_0x9b6e('0x2a')](function(){var _0x2d9fd7=_0x127699[_0x9b6e('0x2b')]({'plain':!![]});var _0x57732b='FaxQueues';return db[_0x9b6e('0x2c')][_0x9b6e('0x29')]({'where':{'type':_0x57732b,'resourceId':_0x2d9fd7['id']}})['then'](function(){return _0x127699;});})[_0x9b6e('0x2a')](function(){_0x103199[_0x9b6e('0x1e')](0xcc)[_0x9b6e('0x2d')]();});}};}function handleEntityNotFound(_0x1e8ea2,_0x381d20){return function(_0x324bf9){if(!_0x324bf9){_0x1e8ea2['sendStatus'](0x194);}return _0x324bf9;};}function handleError(_0x28c16d,_0x55cb2b){_0x55cb2b=_0x55cb2b||0x1f4;return function(_0x2aa00a){logger[_0x9b6e('0x2e')](_0x2aa00a[_0x9b6e('0x2f')]);if(_0x2aa00a['name']){delete _0x2aa00a[_0x9b6e('0x30')];}_0x28c16d[_0x9b6e('0x1e')](_0x55cb2b)[_0x9b6e('0x31')](_0x2aa00a);};}exports[_0x9b6e('0x32')]=function(_0xe8e6f4,_0x172320){var _0x288cbb={},_0x5120d9={},_0x1becb5={'count':0x0,'rows':[]};var _0x4c2f46=_['map'](db[_0x9b6e('0x33')][_0x9b6e('0x34')],function(_0x1ec098){return{'name':_0x1ec098['fieldName'],'type':_0x1ec098[_0x9b6e('0x35')][_0x9b6e('0x36')]};});_0x5120d9[_0x9b6e('0x37')]=_[_0x9b6e('0x38')](_0x4c2f46,'name');_0x5120d9[_0x9b6e('0x39')]=_[_0x9b6e('0x3a')](_0xe8e6f4['query']);_0x5120d9['filters']=_['intersection'](_0x5120d9[_0x9b6e('0x37')],_0x5120d9[_0x9b6e('0x39')]);_0x288cbb[_0x9b6e('0x3b')]=_[_0x9b6e('0x3c')](_0x5120d9['model'],qs[_0x9b6e('0x3d')](_0xe8e6f4[_0x9b6e('0x39')]['fields']));_0x288cbb[_0x9b6e('0x3b')]=_0x288cbb[_0x9b6e('0x3b')][_0x9b6e('0x3e')]?_0x288cbb['attributes']:_0x5120d9[_0x9b6e('0x37')];if(!_0xe8e6f4['query']['hasOwnProperty'](_0x9b6e('0x3f'))){_0x288cbb[_0x9b6e('0x1f')]=qs['limit'](_0xe8e6f4[_0x9b6e('0x39')][_0x9b6e('0x1f')]);_0x288cbb[_0x9b6e('0x22')]=qs['offset'](_0xe8e6f4['query'][_0x9b6e('0x22')]);}_0x288cbb[_0x9b6e('0x40')]=qs[_0x9b6e('0x41')](_0xe8e6f4[_0x9b6e('0x39')][_0x9b6e('0x41')]);_0x288cbb[_0x9b6e('0x42')]=qs[_0x9b6e('0x43')](_[_0x9b6e('0x44')](_0xe8e6f4['query'],_0x5120d9[_0x9b6e('0x43')]),_0x4c2f46);if(_0xe8e6f4[_0x9b6e('0x39')][_0x9b6e('0x45')]){_0x288cbb[_0x9b6e('0x42')]=_[_0x9b6e('0x46')](_0x288cbb[_0x9b6e('0x42')],{'$or':_['map'](_0x4c2f46,function(_0x4317a1){if(_0x4317a1[_0x9b6e('0x35')]!==_0x9b6e('0x47')){var _0x200e4a={};_0x200e4a[_0x4317a1[_0x9b6e('0x30')]]={'$like':'%'+_0xe8e6f4[_0x9b6e('0x39')][_0x9b6e('0x45')]+'%'};return _0x200e4a;}})});}_0x288cbb=_[_0x9b6e('0x46')]({},_0x288cbb,_0xe8e6f4[_0x9b6e('0x48')]);var _0x3e5054={'where':_0x288cbb['where']};return db[_0x9b6e('0x33')][_0x9b6e('0x21')](_0x3e5054)['then'](function(_0x3b587e){_0x1becb5['count']=_0x3b587e;if(_0xe8e6f4[_0x9b6e('0x39')][_0x9b6e('0x49')]){_0x288cbb[_0x9b6e('0x4a')]=[{'all':!![]}];}return db[_0x9b6e('0x33')][_0x9b6e('0x4b')](_0x288cbb);})['then'](function(_0x486f40){_0x1becb5['rows']=_0x486f40;return _0x1becb5;})[_0x9b6e('0x2a')](respondWithFilteredResult(_0x172320,_0x288cbb))[_0x9b6e('0x4c')](handleError(_0x172320,null));};exports['show']=function(_0x1bf20f,_0x163c12){var _0x1d4b09={'raw':!![],'where':{'id':_0x1bf20f['params']['id']}},_0x42cb25={};_0x42cb25['model']=_[_0x9b6e('0x3a')](db[_0x9b6e('0x33')][_0x9b6e('0x34')]);_0x42cb25[_0x9b6e('0x39')]=_[_0x9b6e('0x3a')](_0x1bf20f[_0x9b6e('0x39')]);_0x42cb25[_0x9b6e('0x43')]=_[_0x9b6e('0x3c')](_0x42cb25[_0x9b6e('0x37')],_0x42cb25['query']);_0x1d4b09[_0x9b6e('0x3b')]=_[_0x9b6e('0x3c')](_0x42cb25[_0x9b6e('0x37')],qs['fields'](_0x1bf20f[_0x9b6e('0x39')][_0x9b6e('0x3d')]));_0x1d4b09['attributes']=_0x1d4b09[_0x9b6e('0x3b')][_0x9b6e('0x3e')]?_0x1d4b09[_0x9b6e('0x3b')]:_0x42cb25[_0x9b6e('0x37')];if(_0x1bf20f[_0x9b6e('0x39')][_0x9b6e('0x49')]){_0x1d4b09[_0x9b6e('0x4a')]=[{'all':!![]}];}_0x1d4b09=_[_0x9b6e('0x46')]({},_0x1d4b09,_0x1bf20f[_0x9b6e('0x48')]);return db['FaxQueue'][_0x9b6e('0x4d')](_0x1d4b09)[_0x9b6e('0x2a')](handleEntityNotFound(_0x163c12,null))[_0x9b6e('0x2a')](respondWithResult(_0x163c12,null))['catch'](handleError(_0x163c12,null));};exports['create']=function(_0x664e53,_0x151af1){return db[_0x9b6e('0x33')][_0x9b6e('0x4e')](_0x664e53['body'],{})['then'](function(_0x5abf88){var _0x43f871=_0x664e53['user'][_0x9b6e('0x2b')]({'plain':!![]});if(!_0x43f871)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x43f871[_0x9b6e('0x4f')]===_0x9b6e('0x50')){var _0x249d59=_0x5abf88[_0x9b6e('0x2b')]({'plain':!![]});var _0x25477d=_0x9b6e('0x51');return db[_0x9b6e('0x52')][_0x9b6e('0x4d')]({'where':{'name':_0x25477d,'userProfileId':_0x43f871[_0x9b6e('0x53')]},'raw':!![]})[_0x9b6e('0x2a')](function(_0x3a0323){if(_0x3a0323&&_0x3a0323[_0x9b6e('0x54')]===0x0){return db[_0x9b6e('0x2c')][_0x9b6e('0x4e')]({'name':_0x249d59['name'],'resourceId':_0x249d59['id'],'type':_0x3a0323[_0x9b6e('0x30')],'sectionId':_0x3a0323['id']},{})['then'](function(){return _0x5abf88;});}else{return _0x5abf88;}})[_0x9b6e('0x4c')](function(_0x28a3c6){logger[_0x9b6e('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x28a3c6);throw _0x28a3c6;});}return _0x5abf88;})[_0x9b6e('0x2a')](respondWithResult(_0x151af1,0xc9))[_0x9b6e('0x4c')](handleError(_0x151af1,null));};exports[_0x9b6e('0x28')]=function(_0x4ca214,_0x5d3830){if(_0x4ca214[_0x9b6e('0x55')]['id']){delete _0x4ca214[_0x9b6e('0x55')]['id'];}return db[_0x9b6e('0x33')][_0x9b6e('0x4d')]({'where':{'id':_0x4ca214['params']['id']}})['then'](handleEntityNotFound(_0x5d3830,null))[_0x9b6e('0x2a')](saveUpdates(_0x4ca214['body'],null))[_0x9b6e('0x2a')](respondWithResult(_0x5d3830,null))[_0x9b6e('0x4c')](handleError(_0x5d3830,null));};exports['destroy']=function(_0x5d3efb,_0x475529){return db[_0x9b6e('0x33')][_0x9b6e('0x4d')]({'where':{'id':_0x5d3efb[_0x9b6e('0x56')]['id']}})[_0x9b6e('0x2a')](handleEntityNotFound(_0x475529,null))[_0x9b6e('0x2a')](removeEntity(_0x475529,null))[_0x9b6e('0x4c')](handleError(_0x475529,null));};exports[_0x9b6e('0x57')]=function(_0x14950e,_0x869430){return db['FaxQueue']['describe']()[_0x9b6e('0x2a')](respondWithResult(_0x869430,null))[_0x9b6e('0x4c')](handleError(_0x869430,null));};exports[_0x9b6e('0x58')]=function(_0x181604,_0x243731,_0x112356){var _0x5ae812={'raw':!![],'where':{}},_0x3b5ab8={},_0x1ceec7;return db['FaxQueue'][_0x9b6e('0x59')]({'where':{'id':_0x181604['params']['id']}})[_0x9b6e('0x2a')](handleEntityNotFound(_0x243731,null))[_0x9b6e('0x2a')](function(_0x509186){if(_0x509186){_0x1ceec7=_0x509186[_0x9b6e('0x2b')]({'plain':!![]});_0x3b5ab8[_0x9b6e('0x37')]=_['keys'](db[_0x9b6e('0x5a')][_0x9b6e('0x34')]);_0x3b5ab8[_0x9b6e('0x39')]=_[_0x9b6e('0x3a')](_0x181604[_0x9b6e('0x39')]);_0x3b5ab8[_0x9b6e('0x43')]=_[_0x9b6e('0x3c')](_0x3b5ab8[_0x9b6e('0x37')],_0x3b5ab8[_0x9b6e('0x39')]);_0x5ae812['attributes']=_['intersection'](_0x3b5ab8[_0x9b6e('0x37')],qs['fields'](_0x181604[_0x9b6e('0x39')][_0x9b6e('0x3d')]));_0x5ae812[_0x9b6e('0x3b')]=_0x5ae812[_0x9b6e('0x3b')][_0x9b6e('0x3e')]?_0x5ae812[_0x9b6e('0x3b')]:_0x3b5ab8[_0x9b6e('0x37')];if(!_0x181604[_0x9b6e('0x39')][_0x9b6e('0x5b')](_0x9b6e('0x3f'))){_0x5ae812[_0x9b6e('0x1f')]=qs['limit'](_0x181604[_0x9b6e('0x39')][_0x9b6e('0x1f')]);_0x5ae812[_0x9b6e('0x22')]=qs['offset'](_0x181604['query'][_0x9b6e('0x22')]);}_0x5ae812[_0x9b6e('0x40')]=qs[_0x9b6e('0x41')](_0x181604['query'][_0x9b6e('0x41')]);_0x5ae812[_0x9b6e('0x42')]=qs['filters'](_[_0x9b6e('0x44')](_0x181604[_0x9b6e('0x39')],_0x3b5ab8[_0x9b6e('0x43')]));_0x5ae812[_0x9b6e('0x42')][_0x9b6e('0x5c')]=_0x509186['id'];if(_0x181604[_0x9b6e('0x39')][_0x9b6e('0x45')]){_0x5ae812[_0x9b6e('0x42')]=_[_0x9b6e('0x46')](_0x5ae812[_0x9b6e('0x42')],{'$or':_[_0x9b6e('0x38')](_0x5ae812[_0x9b6e('0x3b')],function(_0x5efbff){var _0x32b5df={};_0x32b5df[_0x5efbff]={'$like':'%'+_0x181604[_0x9b6e('0x39')][_0x9b6e('0x45')]+'%'};return _0x32b5df;})});}_0x5ae812=_['merge']({},_0x5ae812,_0x181604[_0x9b6e('0x48')]);return db[_0x9b6e('0x5a')][_0x9b6e('0x4b')](_0x5ae812);}})['then'](function(_0x5c8473){if(_0x5c8473){return db[_0x9b6e('0x5d')][_0x9b6e('0x5e')]({'where':{'id':_[_0x9b6e('0x38')](_0x5c8473,'UserId'),'role':_0x9b6e('0x5f')},'attributes':['id','name',_0x9b6e('0x60'),_0x9b6e('0x61'),'createdAt']});}})[_0x9b6e('0x2a')](function(_0x59dc1a){if(_0x59dc1a){return{'count':_0x59dc1a[_0x9b6e('0x21')],'rows':_[_0x9b6e('0x38')](_0x59dc1a[_0x9b6e('0x62')],function(_0x415e){return{'membername':_0x415e['name'],'UserId':_0x415e['id'],'queue_name':_0x1ceec7[_0x9b6e('0x30')],'FaxQueueId':_0x1ceec7['id'],'interface':util[_0x9b6e('0x63')]('%s/%s',_0x9b6e('0x64'),_0x415e[_0x9b6e('0x30')]),'penalty':0x0,'paused':_0x415e[_0x9b6e('0x60')],'createdAt':_0x415e['createdAt'],'updatedAt':_0x415e[_0x9b6e('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9b6e('0x2a')](respondWithFilteredResult(_0x243731,_0x5ae812))[_0x9b6e('0x4c')](handleError(_0x243731,null));};exports[_0x9b6e('0x65')]=function(_0x7c75b,_0x46f2c9,_0x1436bb){var _0x440d95={};var _0x3c3b42={};var _0x33d78f;var _0x5753db;return db[_0x9b6e('0x33')][_0x9b6e('0x59')]({'where':{'id':_0x7c75b['params']['id']}})['then'](handleEntityNotFound(_0x46f2c9,null))[_0x9b6e('0x2a')](function(_0x338eb4){if(_0x338eb4){_0x33d78f=_0x338eb4;_0x3c3b42[_0x9b6e('0x37')]=_[_0x9b6e('0x3a')](db[_0x9b6e('0x66')][_0x9b6e('0x34')]);_0x3c3b42[_0x9b6e('0x39')]=_[_0x9b6e('0x3a')](_0x7c75b[_0x9b6e('0x39')]);_0x3c3b42[_0x9b6e('0x43')]=_[_0x9b6e('0x3c')](_0x3c3b42[_0x9b6e('0x37')],_0x3c3b42[_0x9b6e('0x39')]);_0x440d95[_0x9b6e('0x3b')]=_['intersection'](_0x3c3b42[_0x9b6e('0x37')],qs['fields'](_0x7c75b[_0x9b6e('0x39')][_0x9b6e('0x3d')]));_0x440d95[_0x9b6e('0x3b')]=_0x440d95[_0x9b6e('0x3b')][_0x9b6e('0x3e')]?_0x440d95[_0x9b6e('0x3b')]:_0x3c3b42[_0x9b6e('0x37')];_0x440d95[_0x9b6e('0x40')]=qs['sort'](_0x7c75b[_0x9b6e('0x39')]['sort']);_0x440d95[_0x9b6e('0x42')]=qs[_0x9b6e('0x43')](_[_0x9b6e('0x44')](_0x7c75b[_0x9b6e('0x39')],_0x3c3b42[_0x9b6e('0x43')]));if(_0x7c75b['query'][_0x9b6e('0x45')]){_0x440d95[_0x9b6e('0x42')]=_['merge'](_0x440d95['where'],{'$or':_[_0x9b6e('0x38')](_0x440d95[_0x9b6e('0x3b')],function(_0x5372f4){var _0x3c2546={};_0x3c2546[_0x5372f4]={'$like':'%'+_0x7c75b['query'][_0x9b6e('0x45')]+'%'};return _0x3c2546;})});}_0x440d95=_[_0x9b6e('0x46')]({},_0x440d95,_0x7c75b[_0x9b6e('0x48')]);return _0x33d78f[_0x9b6e('0x65')](_0x440d95);}})['then'](function(_0x1a82da){if(_0x1a82da){_0x5753db=_0x1a82da[_0x9b6e('0x3e')];if(!_0x7c75b['query']['hasOwnProperty']('nolimit')){_0x440d95['limit']=qs[_0x9b6e('0x1f')](_0x7c75b[_0x9b6e('0x39')][_0x9b6e('0x1f')]);_0x440d95['offset']=qs[_0x9b6e('0x22')](_0x7c75b['query'][_0x9b6e('0x22')]);}return _0x33d78f['getTeams'](_0x440d95);}})[_0x9b6e('0x2a')](function(_0x2f160f){if(_0x2f160f){return _0x2f160f?{'count':_0x5753db,'rows':_0x2f160f}:null;}})[_0x9b6e('0x2a')](respondWithResult(_0x46f2c9,null))[_0x9b6e('0x4c')](handleError(_0x46f2c9,null));};exports[_0x9b6e('0x67')]=function(_0x5815b6,_0x482bce,_0x1fc23a){var _0x361077=_0x5815b6[_0x9b6e('0x55')][_0x9b6e('0x68')];return db[_0x9b6e('0x66')]['findAll']({'where':{'id':_0x361077},'attributes':['id'],'include':[{'model':db[_0x9b6e('0x5d')],'as':_0x9b6e('0x69'),'attributes':['id',_0x9b6e('0x30'),_0x9b6e('0x6a'),'voicePause',_0x9b6e('0x6b')],'raw':!![]}]})[_0x9b6e('0x2a')](function(_0x3a73cc){if(_0x3a73cc){var _0x213c95=_[_0x9b6e('0x6c')](_0x3a73cc,function(_0x38626d){var _0x414afe=_0x38626d[_0x9b6e('0x2b')]({'plain':!![]});return _0x414afe[_0x9b6e('0x69')];});return db[_0x9b6e('0x33')][_0x9b6e('0x4d')]({'where':{'id':_0x5815b6[_0x9b6e('0x56')]['id']}})[_0x9b6e('0x2a')](function(_0x394a75){return db[_0x9b6e('0x6d')][_0x9b6e('0x6e')](function(_0x8e7568){return _0x394a75[_0x9b6e('0x67')](_0x361077,{'transaction':_0x8e7568})[_0x9b6e('0x2a')](function(){return BPromise[_0x9b6e('0x6f')](_0x213c95,function(_0x153477){return db[_0x9b6e('0x5a')][_0x9b6e('0x70')]({'where':{'UserId':_0x153477['id'],'FaxQueueId':_0x5815b6[_0x9b6e('0x56')]['id']},'transaction':_0x8e7568});});})[_0x9b6e('0x2a')](function(){_0x213c95[_0x9b6e('0x71')](function(_0xb7277d){socket[_0x9b6e('0x72')](_0x9b6e('0x73'),{'UserId':_0xb7277d['id'],'FaxQueueId':_0x394a75['id']});});});});});}})[_0x9b6e('0x2a')](respondWithStatusCode(_0x482bce,null))['catch'](handleError(_0x482bce,null));};exports[_0x9b6e('0x74')]=function(_0x44dac5,_0x2ffff1,_0x6fae31){return db['Team'][_0x9b6e('0x4b')]({'where':{'id':_0x44dac5[_0x9b6e('0x39')][_0x9b6e('0x68')]},'attributes':['id'],'include':[{'model':db[_0x9b6e('0x5d')],'as':_0x9b6e('0x69'),'attributes':['id'],'raw':!![]}]})[_0x9b6e('0x2a')](handleEntityNotFound(_0x2ffff1,null))[_0x9b6e('0x2a')](function(_0x46db4f){var _0x48232=_[_0x9b6e('0x38')](_0x46db4f,'id');var _0x493382=[];var _0x4a5955=[];var _0x46014d=squel[_0x9b6e('0x75')]();_0x46014d[_0x9b6e('0x76')](_0x9b6e('0x77'))['from']('team_has_fax_queues','tq')['join'](_0x9b6e('0x78'),'ut',_0x9b6e('0x79'))[_0x9b6e('0x42')](_0x9b6e('0x7a'),_0x44dac5['params']['id']);for(var _0x148779=0x0;_0x148779<_0x46db4f[_0x9b6e('0x3e')];_0x148779+=0x1){let _0x4455d6=_0x46db4f[_0x148779];for(var _0x15a984=0x0;_0x15a984<_0x4455d6[_0x9b6e('0x69')][_0x9b6e('0x3e')];_0x15a984+=0x1){let _0xf0858a=_0x4455d6[_0x9b6e('0x69')][_0x15a984];var _0x28c071=_0x46014d[_0x9b6e('0x7b')]();_0x28c071[_0x9b6e('0x42')](_0x9b6e('0x7c'),_0xf0858a['id']);_0x4a5955[_0x9b6e('0x7d')](db[_0x9b6e('0x6d')][_0x9b6e('0x39')](_0x28c071[_0x9b6e('0x7e')](),{'type':db[_0x9b6e('0x6d')][_0x9b6e('0x7f')][_0x9b6e('0x80')]})[_0x9b6e('0x2a')](function(_0x2998de){if(_0x2998de[_0x9b6e('0x3e')]===0x1){return _0xf0858a['id'];}else{var _0x49ec1c=_[_0x9b6e('0x81')](_['map'](_0x2998de,_0x9b6e('0x82')),function(_0x222825){return _[_0x9b6e('0x83')](_0x48232,_0x222825);});if(_0x49ec1c){return _0xf0858a['id'];}}}));}}return BPromise[_0x9b6e('0x84')](_0x4a5955)[_0x9b6e('0x2a')](function(_0x115b35){_0x493382=_(_0x493382)['union'](_0x115b35)[_0x9b6e('0x85')]()[_0x9b6e('0x86')]();return db[_0x9b6e('0x33')][_0x9b6e('0x4d')]({'where':{'id':_0x44dac5['params']['id']}})['then'](function(_0x5bd8ba){return db['sequelize']['transaction'](function(_0x1ed021){return _0x5bd8ba['removeTeams'](_0x44dac5[_0x9b6e('0x39')]['ids'],{'transaction':_0x1ed021})['then'](function(){if(!_[_0x9b6e('0x87')](_0x493382)){return _0x5bd8ba[_0x9b6e('0x88')](_0x493382,{'transaction':_0x1ed021});}})[_0x9b6e('0x2a')](function(){_0x493382[_0x9b6e('0x71')](function(_0x5108a7){socket['emit']('userFaxQueue:remove',{'UserId':_0x5108a7,'FaxQueueId':_0x5bd8ba['id']});});});});});});})[_0x9b6e('0x2a')](respondWithStatusCode(_0x2ffff1,null))[_0x9b6e('0x4c')](handleError(_0x2ffff1,null));};exports[_0x9b6e('0x89')]=function(_0x56514f,_0x306c7e,_0x385b17){return db[_0x9b6e('0x33')][_0x9b6e('0x4d')]({'where':{'id':_0x56514f['params']['id']}})[_0x9b6e('0x2a')](handleEntityNotFound(_0x306c7e,null))[_0x9b6e('0x2a')](function(_0x45da01){if(_0x45da01){return _0x45da01[_0x9b6e('0x89')](_0x56514f[_0x9b6e('0x55')][_0x9b6e('0x68')],_['omit'](_0x56514f[_0x9b6e('0x55')],['ids','id'])||{})['spread'](function(_0x3c7bfd){for(var _0x211c5a=0x0;_0x211c5a<_0x56514f[_0x9b6e('0x55')][_0x9b6e('0x68')]['length'];_0x211c5a+=0x1){socket['emit']('userFaxQueue:save',{'UserId':Number(_0x56514f[_0x9b6e('0x55')][_0x9b6e('0x68')][_0x211c5a]),'FaxQueueId':Number(_0x56514f[_0x9b6e('0x56')]['id'])});}return _0x3c7bfd;});}})[_0x9b6e('0x2a')](respondWithResult(_0x306c7e,null))[_0x9b6e('0x4c')](handleError(_0x306c7e,null));};exports[_0x9b6e('0x88')]=function(_0x5e85cb,_0x12ab1b,_0x35fb35){return db['FaxQueue'][_0x9b6e('0x4d')]({'where':{'id':_0x5e85cb[_0x9b6e('0x56')]['id']}})[_0x9b6e('0x2a')](handleEntityNotFound(_0x12ab1b,null))['then'](function(_0x40ee87){if(_0x40ee87){return _0x40ee87[_0x9b6e('0x88')](_0x5e85cb['query']['ids'])['then'](function(){if(_[_0x9b6e('0x8a')](_0x5e85cb[_0x9b6e('0x39')][_0x9b6e('0x68')])){for(var _0x11f3d9=0x0;_0x11f3d9<_0x5e85cb['query']['ids'][_0x9b6e('0x3e')];_0x11f3d9+=0x1){socket[_0x9b6e('0x72')](_0x9b6e('0x8b'),{'UserId':Number(_0x5e85cb[_0x9b6e('0x39')][_0x9b6e('0x68')][_0x11f3d9]),'FaxQueueId':Number(_0x5e85cb[_0x9b6e('0x56')]['id'])});}}else{socket[_0x9b6e('0x72')](_0x9b6e('0x8b'),{'UserId':Number(_0x5e85cb[_0x9b6e('0x39')]['ids']),'FaxQueueId':Number(_0x5e85cb['params']['id'])});}});}})[_0x9b6e('0x2a')](respondWithStatusCode(_0x12ab1b,null))['catch'](handleError(_0x12ab1b,null));};exports[_0x9b6e('0x8c')]=function(_0x304221,_0x3c39f9,_0x20cfba){var _0x434966={};var _0x20f058={};var _0x5b6862;var _0x15a699;return db[_0x9b6e('0x33')][_0x9b6e('0x59')]({'where':{'id':_0x304221[_0x9b6e('0x56')]['id']}})['then'](handleEntityNotFound(_0x3c39f9,null))[_0x9b6e('0x2a')](function(_0x9e65d6){if(_0x9e65d6){_0x5b6862=_0x9e65d6;_0x20f058[_0x9b6e('0x37')]=_[_0x9b6e('0x3a')](db[_0x9b6e('0x5d')][_0x9b6e('0x34')]);_0x20f058[_0x9b6e('0x39')]=_[_0x9b6e('0x3a')](_0x304221['query']);_0x20f058[_0x9b6e('0x43')]=_[_0x9b6e('0x3c')](_0x20f058[_0x9b6e('0x37')],_0x20f058[_0x9b6e('0x39')]);_0x434966[_0x9b6e('0x3b')]=_[_0x9b6e('0x3c')](_0x20f058[_0x9b6e('0x37')],qs[_0x9b6e('0x3d')](_0x304221[_0x9b6e('0x39')][_0x9b6e('0x3d')]));_0x434966[_0x9b6e('0x3b')]=_0x434966[_0x9b6e('0x3b')]['length']?_0x434966[_0x9b6e('0x3b')]:_0x20f058['model'];_0x434966[_0x9b6e('0x40')]=qs[_0x9b6e('0x41')](_0x304221['query'][_0x9b6e('0x41')]);_0x434966[_0x9b6e('0x42')]=qs[_0x9b6e('0x43')](_['pick'](_0x304221[_0x9b6e('0x39')],_0x20f058[_0x9b6e('0x43')]));if(_0x304221['query'][_0x9b6e('0x45')]){_0x434966[_0x9b6e('0x42')]=_['merge'](_0x434966[_0x9b6e('0x42')],{'$or':_[_0x9b6e('0x38')](_0x434966['attributes'],function(_0x23d815){var _0xbbd2d6={};_0xbbd2d6[_0x23d815]={'$like':'%'+_0x304221[_0x9b6e('0x39')][_0x9b6e('0x45')]+'%'};return _0xbbd2d6;})});}_0x434966=_[_0x9b6e('0x46')]({},_0x434966,_0x304221[_0x9b6e('0x48')]);return _0x5b6862[_0x9b6e('0x8c')](_0x434966);}})[_0x9b6e('0x2a')](function(_0x36bd5a){if(_0x36bd5a){_0x15a699=_0x36bd5a['length'];if(!_0x304221[_0x9b6e('0x39')]['hasOwnProperty'](_0x9b6e('0x3f'))){_0x434966[_0x9b6e('0x1f')]=qs[_0x9b6e('0x1f')](_0x304221[_0x9b6e('0x39')][_0x9b6e('0x1f')]);_0x434966[_0x9b6e('0x22')]=qs['offset'](_0x304221[_0x9b6e('0x39')][_0x9b6e('0x22')]);}return _0x5b6862[_0x9b6e('0x8c')](_0x434966);}})['then'](function(_0x10a43d){if(_0x10a43d){return _0x10a43d?{'count':_0x15a699,'rows':_0x10a43d}:null;}})['then'](respondWithResult(_0x3c39f9,null))[_0x9b6e('0x4c')](handleError(_0x3c39f9,null));};
\ No newline at end of file
index d89ed23..6903461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e33=['../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3c64d0,_0x4402e6){var _0x3056d4=function(_0x36744e){while(--_0x36744e){_0x3c64d0['push'](_0x3c64d0['shift']());}};_0x3056d4(++_0x4402e6);}(_0x4e33,0x179));var _0x34e3=function(_0x3be2e2,_0x5c166d){_0x3be2e2=_0x3be2e2-0x0;var _0x53b9c5=_0x4e33[_0x3be2e2];return _0x53b9c5;};'use strict';var EventEmitter=require(_0x34e3('0x0'));var FaxQueue=require(_0x34e3('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x34e3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x34e3('0x3'),'afterDestroy':_0x34e3('0x4')};function emitEvent(_0x2c5b74){return function(_0x129837,_0x1af13e,_0x4ce052){FaxQueueEvents[_0x34e3('0x5')](_0x2c5b74+':'+_0x129837['id'],_0x129837);FaxQueueEvents[_0x34e3('0x5')](_0x2c5b74,_0x129837);_0x4ce052(null);};}for(var e in events){if(events[_0x34e3('0x6')](e)){var event=events[e];FaxQueue[_0x34e3('0x7')](e,emitEvent(event));}}module[_0x34e3('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0x8431=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x1ae661,_0x3a7e42){var _0x11edfb=function(_0xe8870f){while(--_0xe8870f){_0x1ae661['push'](_0x1ae661['shift']());}};_0x11edfb(++_0x3a7e42);}(_0x8431,0x1dc));var _0x1843=function(_0x4cac0e,_0x4d314c){_0x4cac0e=_0x4cac0e-0x0;var _0xb731e9=_0x8431[_0x4cac0e];return _0xb731e9;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x1843('0x0'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x1843('0x1')](0x0);var events={'afterCreate':_0x1843('0x2'),'afterUpdate':_0x1843('0x3'),'afterDestroy':_0x1843('0x4')};function emitEvent(_0x5947d7){return function(_0x120762,_0x2a2de3,_0x10e334){FaxQueueEvents[_0x1843('0x5')](_0x5947d7+':'+_0x120762['id'],_0x120762);FaxQueueEvents[_0x1843('0x5')](_0x5947d7,_0x120762);_0x10e334(null);};}for(var e in events){if(events[_0x1843('0x6')](e)){var event=events[e];FaxQueue[_0x1843('0x7')](e,emitEvent(event));}}module[_0x1843('0x8')]=FaxQueueEvents;
\ No newline at end of file
index 48ff71c..d638a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2070=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','define','lodash','util'];(function(_0x1e8f35,_0x3db390){var _0x446c13=function(_0xa1e11e){while(--_0xa1e11e){_0x1e8f35['push'](_0x1e8f35['shift']());}};_0x446c13(++_0x3db390);}(_0x2070,0x10c));var _0x0207=function(_0x2d3f29,_0x5a86ee){_0x2d3f29=_0x2d3f29-0x0;var _0x52e221=_0x2070[_0x2d3f29];return _0x52e221;};'use strict';var _=require(_0x0207('0x0'));var util=require(_0x0207('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0207('0x2'));var BPromise=require(_0x0207('0x3'));var rp=require(_0x0207('0x4'));var fs=require('fs');var path=require(_0x0207('0x5'));var rimraf=require(_0x0207('0x6'));var config=require(_0x0207('0x7'));var attributes=require(_0x0207('0x8'));module['exports']=function(_0x2f7487,_0x37161e){return _0x2f7487[_0x0207('0x9')]('FaxQueue',attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4aee=['rimraf','define','FaxQueue','fax_queues','lodash','util','../../config/logger','bluebird','path'];(function(_0x33acdd,_0x253813){var _0x578b80=function(_0x5dfc69){while(--_0x5dfc69){_0x33acdd['push'](_0x33acdd['shift']());}};_0x578b80(++_0x253813);}(_0x4aee,0x16c));var _0xe4ae=function(_0x15c0e7,_0x54ddae){_0x15c0e7=_0x15c0e7-0x0;var _0x50d3f5=_0x4aee[_0x15c0e7];return _0x50d3f5;};'use strict';var _=require(_0xe4ae('0x0'));var util=require(_0xe4ae('0x1'));var logger=require(_0xe4ae('0x2'))('api');var moment=require('moment');var BPromise=require(_0xe4ae('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe4ae('0x4'));var rimraf=require(_0xe4ae('0x5'));var config=require('../../config/environment');var attributes=require('./faxQueue.attributes');module['exports']=function(_0x127637,_0x4a774c){return _0x127637[_0xe4ae('0x6')](_0xe4ae('0x7'),attributes,{'tableName':_0xe4ae('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bbd7f84..69cbda2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c7b=['where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetFaxQueue','FaxQueue','options','raw','attributes','limit','map','include','model','ShowFaxQueue'];(function(_0x2c0964,_0x504d2f){var _0x3c6616=function(_0x2914d0){while(--_0x2914d0){_0x2c0964['push'](_0x2c0964['shift']());}};_0x3c6616(++_0x504d2f);}(_0x0c7b,0x76));var _0xb0c7=function(_0x34a018,_0x4b97c2){_0x34a018=_0x34a018-0x0;var _0x5070bb=_0x0c7b[_0x34a018];return _0x5070bb;};'use strict';var _=require(_0xb0c7('0x0'));var util=require(_0xb0c7('0x1'));var moment=require(_0xb0c7('0x2'));var BPromise=require(_0xb0c7('0x3'));var rs=require(_0xb0c7('0x4'));var fs=require('fs');var Redis=require(_0xb0c7('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb0c7('0x6'))(_0xb0c7('0x7'));var config=require(_0xb0c7('0x8'));var jayson=require(_0xb0c7('0x9'));var client=jayson[_0xb0c7('0xa')][_0xb0c7('0xb')]({'port':0x232a});config[_0xb0c7('0xc')]=_[_0xb0c7('0xd')](config[_0xb0c7('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb0c7('0xc')]));require(_0xb0c7('0xe'))[_0xb0c7('0xf')](socket);function respondWithRpcPromise(_0x59b4ad,_0x2d7cad,_0x200873){return new BPromise(function(_0x4e4ea9,_0x2ce634){return client[_0xb0c7('0x10')](_0x59b4ad,_0x200873)[_0xb0c7('0x11')](function(_0x43206f){logger[_0xb0c7('0x12')](_0xb0c7('0x13'),_0x2d7cad,_0xb0c7('0x14'));logger[_0xb0c7('0x15')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x2d7cad,_0xb0c7('0x14'),JSON[_0xb0c7('0x16')](_0x43206f));if(_0x43206f[_0xb0c7('0x17')]){if(_0x43206f['error'][_0xb0c7('0x18')]===0x1f4){logger[_0xb0c7('0x17')](_0xb0c7('0x13'),_0x2d7cad,_0x43206f[_0xb0c7('0x17')][_0xb0c7('0x19')]);return _0x2ce634(_0x43206f['error'][_0xb0c7('0x19')]);}logger[_0xb0c7('0x17')](_0xb0c7('0x13'),_0x2d7cad,_0x43206f['error'][_0xb0c7('0x19')]);return _0x4e4ea9(_0x43206f[_0xb0c7('0x17')][_0xb0c7('0x19')]);}else{logger[_0xb0c7('0x12')](_0xb0c7('0x13'),_0x2d7cad,'request\x20sent');_0x4e4ea9(_0x43206f[_0xb0c7('0x1a')][_0xb0c7('0x19')]);}})[_0xb0c7('0x1b')](function(_0x19508e){logger['error']('FaxQueue,\x20%s,\x20%s',_0x2d7cad,_0x19508e);_0x2ce634(_0x19508e);});});}exports[_0xb0c7('0x1c')]=function(_0x34fc4d){var _0x10f8f4=this;return new Promise(function(_0x9b4120,_0x1e3dc8){return db[_0xb0c7('0x1d')]['findAll']({'raw':_0x34fc4d['options']?_0x34fc4d[_0xb0c7('0x1e')][_0xb0c7('0x1f')]===undefined?!![]:![]:!![],'where':_0x34fc4d[_0xb0c7('0x1e')]?_0x34fc4d[_0xb0c7('0x1e')]['where']||null:null,'attributes':_0x34fc4d[_0xb0c7('0x1e')]?_0x34fc4d['options'][_0xb0c7('0x20')]||null:null,'limit':_0x34fc4d['options']?_0x34fc4d[_0xb0c7('0x1e')][_0xb0c7('0x21')]||null:null,'include':_0x34fc4d['options']?_0x34fc4d[_0xb0c7('0x1e')]['include']?_[_0xb0c7('0x22')](_0x34fc4d['options'][_0xb0c7('0x23')],function(_0x1796a7){return{'model':db[_0x1796a7[_0xb0c7('0x24')]],'as':_0x1796a7['as'],'attributes':_0x1796a7[_0xb0c7('0x20')],'include':_0x1796a7[_0xb0c7('0x23')]?_[_0xb0c7('0x22')](_0x1796a7[_0xb0c7('0x23')],function(_0x104ce9){return{'model':db[_0x104ce9['model']],'as':_0x104ce9['as'],'attributes':_0x104ce9[_0xb0c7('0x20')],'include':_0x104ce9['include']?_['map'](_0x104ce9[_0xb0c7('0x23')],function(_0x430a43){return{'model':db[_0x430a43[_0xb0c7('0x24')]],'as':_0x430a43['as'],'attributes':_0x430a43[_0xb0c7('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x54740e){logger['info']('GetFaxQueue',_0x34fc4d);logger[_0xb0c7('0x15')](_0xb0c7('0x1c'),_0x34fc4d,JSON[_0xb0c7('0x16')](_0x54740e));_0x9b4120(_0x54740e);})[_0xb0c7('0x1b')](function(_0x37ebab){logger[_0xb0c7('0x17')](_0xb0c7('0x1c'),_0x37ebab['message'],_0x34fc4d);_0x1e3dc8(_0x10f8f4[_0xb0c7('0x17')](0x1f4,_0x37ebab[_0xb0c7('0x19')]));});});};exports[_0xb0c7('0x25')]=function(_0x57c95f){var _0x521bd3=this;return new Promise(function(_0x3883bc,_0x3d0fdd){return db[_0xb0c7('0x1d')]['find']({'raw':_0x57c95f[_0xb0c7('0x1e')]?_0x57c95f[_0xb0c7('0x1e')][_0xb0c7('0x1f')]===undefined?!![]:![]:!![],'where':_0x57c95f[_0xb0c7('0x1e')]?_0x57c95f[_0xb0c7('0x1e')][_0xb0c7('0x26')]||null:null,'attributes':_0x57c95f[_0xb0c7('0x1e')]?_0x57c95f[_0xb0c7('0x1e')][_0xb0c7('0x20')]||null:null,'include':_0x57c95f['options']?_0x57c95f[_0xb0c7('0x1e')][_0xb0c7('0x23')]?_[_0xb0c7('0x22')](_0x57c95f[_0xb0c7('0x1e')]['include'],function(_0x5cc019){return{'model':db[_0x5cc019[_0xb0c7('0x24')]],'as':_0x5cc019['as'],'attributes':_0x5cc019['attributes'],'include':_0x5cc019['include']?_['map'](_0x5cc019[_0xb0c7('0x23')],function(_0x2cc469){return{'model':db[_0x2cc469[_0xb0c7('0x24')]],'as':_0x2cc469['as'],'attributes':_0x2cc469[_0xb0c7('0x20')],'include':_0x2cc469[_0xb0c7('0x23')]?_[_0xb0c7('0x22')](_0x2cc469[_0xb0c7('0x23')],function(_0x53542e){return{'model':db[_0x53542e['model']],'as':_0x53542e['as'],'attributes':_0x53542e[_0xb0c7('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x106338){logger[_0xb0c7('0x12')](_0xb0c7('0x25'),_0x57c95f);logger[_0xb0c7('0x15')](_0xb0c7('0x25'),_0x57c95f,JSON[_0xb0c7('0x16')](_0x106338));_0x3883bc(_0x106338);})[_0xb0c7('0x1b')](function(_0x5d206e){logger[_0xb0c7('0x17')](_0xb0c7('0x25'),_0x5d206e[_0xb0c7('0x19')],_0x57c95f);_0x3d0fdd(_0x521bd3[_0xb0c7('0x17')](0x1f4,_0x5d206e[_0xb0c7('0x19')]));});});};
\ No newline at end of file
+var _0x9902=['stringify','error','code','message','info','result','catch','findAll','options','raw','attributes','limit','include','map','model','GetFaxQueue','ShowFaxQueue','FaxQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','then','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s'];(function(_0x5a9a22,_0x40eb94){var _0x4e2ef8=function(_0xa7f70c){while(--_0xa7f70c){_0x5a9a22['push'](_0x5a9a22['shift']());}};_0x4e2ef8(++_0x40eb94);}(_0x9902,0x169));var _0x2990=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9902[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require(_0x2990('0x0'));var moment=require(_0x2990('0x1'));var BPromise=require(_0x2990('0x2'));var rs=require(_0x2990('0x3'));var fs=require('fs');var Redis=require(_0x2990('0x4'));var db=require(_0x2990('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2990('0x6'))(_0x2990('0x7'));var config=require(_0x2990('0x8'));var jayson=require(_0x2990('0x9'));var client=jayson[_0x2990('0xa')]['http']({'port':0x232a});config[_0x2990('0xb')]=_[_0x2990('0xc')](config[_0x2990('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x2990('0xd'))(new Redis(config[_0x2990('0xb')]));require('./faxQueue.socket')['register'](socket);function respondWithRpcPromise(_0x1d1b7f,_0x3310ea,_0x1318a2){return new BPromise(function(_0x384bc6,_0x596055){return client['request'](_0x1d1b7f,_0x1318a2)[_0x2990('0xe')](function(_0x3a0757){logger['info'](_0x2990('0xf'),_0x3310ea,_0x2990('0x10'));logger[_0x2990('0x11')](_0x2990('0x12'),_0x3310ea,_0x2990('0x10'),JSON[_0x2990('0x13')](_0x3a0757));if(_0x3a0757[_0x2990('0x14')]){if(_0x3a0757['error'][_0x2990('0x15')]===0x1f4){logger[_0x2990('0x14')](_0x2990('0xf'),_0x3310ea,_0x3a0757[_0x2990('0x14')][_0x2990('0x16')]);return _0x596055(_0x3a0757[_0x2990('0x14')]['message']);}logger[_0x2990('0x14')](_0x2990('0xf'),_0x3310ea,_0x3a0757[_0x2990('0x14')][_0x2990('0x16')]);return _0x384bc6(_0x3a0757['error']['message']);}else{logger[_0x2990('0x17')](_0x2990('0xf'),_0x3310ea,_0x2990('0x10'));_0x384bc6(_0x3a0757[_0x2990('0x18')][_0x2990('0x16')]);}})[_0x2990('0x19')](function(_0x408f0a){logger[_0x2990('0x14')](_0x2990('0xf'),_0x3310ea,_0x408f0a);_0x596055(_0x408f0a);});});}exports['GetFaxQueue']=function(_0xd75164){var _0x49cb69=this;return new Promise(function(_0x23e9ef,_0x36f67c){return db['FaxQueue'][_0x2990('0x1a')]({'raw':_0xd75164['options']?_0xd75164[_0x2990('0x1b')][_0x2990('0x1c')]===undefined?!![]:![]:!![],'where':_0xd75164[_0x2990('0x1b')]?_0xd75164[_0x2990('0x1b')]['where']||null:null,'attributes':_0xd75164['options']?_0xd75164[_0x2990('0x1b')][_0x2990('0x1d')]||null:null,'limit':_0xd75164[_0x2990('0x1b')]?_0xd75164['options'][_0x2990('0x1e')]||null:null,'include':_0xd75164[_0x2990('0x1b')]?_0xd75164[_0x2990('0x1b')][_0x2990('0x1f')]?_[_0x2990('0x20')](_0xd75164[_0x2990('0x1b')]['include'],function(_0x30bc96){return{'model':db[_0x30bc96[_0x2990('0x21')]],'as':_0x30bc96['as'],'attributes':_0x30bc96[_0x2990('0x1d')],'include':_0x30bc96[_0x2990('0x1f')]?_[_0x2990('0x20')](_0x30bc96[_0x2990('0x1f')],function(_0x59725b){return{'model':db[_0x59725b[_0x2990('0x21')]],'as':_0x59725b['as'],'attributes':_0x59725b[_0x2990('0x1d')],'include':_0x59725b['include']?_[_0x2990('0x20')](_0x59725b[_0x2990('0x1f')],function(_0x2dac06){return{'model':db[_0x2dac06[_0x2990('0x21')]],'as':_0x2dac06['as'],'attributes':_0x2dac06[_0x2990('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x2990('0xe')](function(_0x3b7cf0){logger[_0x2990('0x17')](_0x2990('0x22'),_0xd75164);logger[_0x2990('0x11')](_0x2990('0x22'),_0xd75164,JSON[_0x2990('0x13')](_0x3b7cf0));_0x23e9ef(_0x3b7cf0);})[_0x2990('0x19')](function(_0x42939e){logger[_0x2990('0x14')]('GetFaxQueue',_0x42939e['message'],_0xd75164);_0x36f67c(_0x49cb69[_0x2990('0x14')](0x1f4,_0x42939e['message']));});});};exports[_0x2990('0x23')]=function(_0x5e983d){var _0x4bab3a=this;return new Promise(function(_0xc18bf4,_0x352f3c){return db[_0x2990('0x24')][_0x2990('0x25')]({'raw':_0x5e983d[_0x2990('0x1b')]?_0x5e983d[_0x2990('0x1b')][_0x2990('0x1c')]===undefined?!![]:![]:!![],'where':_0x5e983d[_0x2990('0x1b')]?_0x5e983d[_0x2990('0x1b')]['where']||null:null,'attributes':_0x5e983d[_0x2990('0x1b')]?_0x5e983d['options'][_0x2990('0x1d')]||null:null,'include':_0x5e983d[_0x2990('0x1b')]?_0x5e983d['options'][_0x2990('0x1f')]?_[_0x2990('0x20')](_0x5e983d[_0x2990('0x1b')][_0x2990('0x1f')],function(_0x37bbac){return{'model':db[_0x37bbac['model']],'as':_0x37bbac['as'],'attributes':_0x37bbac['attributes'],'include':_0x37bbac[_0x2990('0x1f')]?_[_0x2990('0x20')](_0x37bbac[_0x2990('0x1f')],function(_0x5ba317){return{'model':db[_0x5ba317[_0x2990('0x21')]],'as':_0x5ba317['as'],'attributes':_0x5ba317['attributes'],'include':_0x5ba317[_0x2990('0x1f')]?_['map'](_0x5ba317[_0x2990('0x1f')],function(_0x52e05d){return{'model':db[_0x52e05d['model']],'as':_0x52e05d['as'],'attributes':_0x52e05d['attributes']};}):[]};}):[]};}):[]:[]})[_0x2990('0xe')](function(_0x479086){logger[_0x2990('0x17')](_0x2990('0x23'),_0x5e983d);logger['debug']('ShowFaxQueue',_0x5e983d,JSON[_0x2990('0x13')](_0x479086));_0xc18bf4(_0x479086);})[_0x2990('0x19')](function(_0x3a0b3d){logger[_0x2990('0x14')](_0x2990('0x23'),_0x3a0b3d[_0x2990('0x16')],_0x5e983d);_0x352f3c(_0x4bab3a[_0x2990('0x14')](0x1f4,_0x3a0b3d[_0x2990('0x16')]));});});};
\ No newline at end of file
index 73c603d..8bae703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x248d=['./faxQueue.events','remove','update','emit','register','length','faxQueue:'];(function(_0x277721,_0x46971e){var _0x286051=function(_0x130c98){while(--_0x130c98){_0x277721['push'](_0x277721['shift']());}};_0x286051(++_0x46971e);}(_0x248d,0xfc));var _0xd248=function(_0x3b03f0,_0x1c4c6f){_0x3b03f0=_0x3b03f0-0x0;var _0x136939=_0x248d[_0x3b03f0];return _0x136939;};'use strict';var FaxQueueEvents=require(_0xd248('0x0'));var events=['save',_0xd248('0x1'),_0xd248('0x2')];function createListener(_0x1430d5,_0x3bde77){return function(_0x5f5bcb){_0x3bde77[_0xd248('0x3')](_0x1430d5,_0x5f5bcb);};}function removeListener(_0x2c728b,_0x14fc22){return function(){FaxQueueEvents['removeListener'](_0x2c728b,_0x14fc22);};}exports[_0xd248('0x4')]=function(_0x35f961){for(var _0x453c74=0x0,_0x47bbea=events[_0xd248('0x5')];_0x453c74<_0x47bbea;_0x453c74++){var _0x59b2e7=events[_0x453c74];var _0x27b5da=createListener(_0xd248('0x6')+_0x59b2e7,_0x35f961);FaxQueueEvents['on'](_0x59b2e7,_0x27b5da);}};
\ No newline at end of file
+var _0x9829=['remove','update','emit','removeListener','register','length','faxQueue:','./faxQueue.events','save'];(function(_0x14bfbf,_0x552595){var _0x3a29d4=function(_0x1fae62){while(--_0x1fae62){_0x14bfbf['push'](_0x14bfbf['shift']());}};_0x3a29d4(++_0x552595);}(_0x9829,0xc4));var _0x9982=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x9829[_0x17b6e3];return _0x3906f3;};'use strict';var FaxQueueEvents=require(_0x9982('0x0'));var events=[_0x9982('0x1'),_0x9982('0x2'),_0x9982('0x3')];function createListener(_0x338564,_0x4c01a9){return function(_0x399b6c){_0x4c01a9[_0x9982('0x4')](_0x338564,_0x399b6c);};}function removeListener(_0x2f782a,_0x4bee19){return function(){FaxQueueEvents[_0x9982('0x5')](_0x2f782a,_0x4bee19);};}exports[_0x9982('0x6')]=function(_0x58f8fe){for(var _0x500dfd=0x0,_0x340d62=events[_0x9982('0x7')];_0x500dfd<_0x340d62;_0x500dfd++){var _0x5d0824=events[_0x500dfd];var _0x25f30a=createListener(_0x9982('0x8')+_0x5d0824,_0x58f8fe);FaxQueueEvents['on'](_0x5d0824,_0x25f30a);}};
\ No newline at end of file
index fa7761f..0bbb610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e0e=['get','isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addAgents','put','update','delete','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x4f9a25,_0x351614){var _0x4ad1b5=function(_0x199d47){while(--_0x199d47){_0x4f9a25['push'](_0x4f9a25['shift']());}};_0x4ad1b5(++_0x351614);}(_0x5e0e,0x89));var _0xe5e0=function(_0x541a6c,_0x2e4bf9){_0x541a6c=_0x541a6c-0x0;var _0x3d559d=_0x5e0e[_0x541a6c];return _0x3d559d;};'use strict';var multer=require(_0xe5e0('0x0'));var util=require(_0xe5e0('0x1'));var path=require('path');var timeout=require(_0xe5e0('0x2'));var express=require(_0xe5e0('0x3'));var router=express[_0xe5e0('0x4')]();var fs_extra=require(_0xe5e0('0x5'));var auth=require(_0xe5e0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe5e0('0x7'));var controller=require('./faxQueue.controller');router[_0xe5e0('0x8')]('/',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0xa')]);router[_0xe5e0('0x8')](_0xe5e0('0xb'),auth[_0xe5e0('0x9')](),controller['describe']);router[_0xe5e0('0x8')](_0xe5e0('0xc'),auth['isAuthenticated'](),controller[_0xe5e0('0xd')]);router[_0xe5e0('0x8')](_0xe5e0('0xe'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0xf')]);router[_0xe5e0('0x8')](_0xe5e0('0x10'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x11')]);router[_0xe5e0('0x8')](_0xe5e0('0x12'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x13')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe5e0('0x14')]);router[_0xe5e0('0x15')](_0xe5e0('0x10'),auth[_0xe5e0('0x9')](),controller['addTeams']);router[_0xe5e0('0x15')](_0xe5e0('0x12'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x16')]);router[_0xe5e0('0x17')](_0xe5e0('0xc'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x18')]);router[_0xe5e0('0x19')]('/:id',auth[_0xe5e0('0x9')](),controller['destroy']);router[_0xe5e0('0x19')]('/:id/teams',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x1a')]);router['delete'](_0xe5e0('0x12'),auth['isAuthenticated'](),controller[_0xe5e0('0x1b')]);module[_0xe5e0('0x1c')]=router;
\ No newline at end of file
+var _0xc359=['isAuthenticated','describe','/:id','show','/:id/members','/:id/users','post','create','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeTeams','exports','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get'];(function(_0x2d9a60,_0x1b5bc1){var _0x8f442=function(_0x33a072){while(--_0x33a072){_0x2d9a60['push'](_0x2d9a60['shift']());}};_0x8f442(++_0x1b5bc1);}(_0xc359,0x1d9));var _0x9c35=function(_0x1d606d,_0x376e51){_0x1d606d=_0x1d606d-0x0;var _0x3c38bd=_0xc359[_0x1d606d];return _0x3c38bd;};'use strict';var multer=require('multer');var util=require(_0x9c35('0x0'));var path=require('path');var timeout=require(_0x9c35('0x1'));var express=require(_0x9c35('0x2'));var router=express[_0x9c35('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9c35('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9c35('0x5'));var controller=require('./faxQueue.controller');router[_0x9c35('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0x9c35('0x7')](),controller[_0x9c35('0x8')]);router[_0x9c35('0x6')](_0x9c35('0x9'),auth[_0x9c35('0x7')](),controller[_0x9c35('0xa')]);router['get'](_0x9c35('0xb'),auth[_0x9c35('0x7')](),controller['getMembers']);router['get']('/:id/teams',auth[_0x9c35('0x7')](),controller['getTeams']);router[_0x9c35('0x6')](_0x9c35('0xc'),auth[_0x9c35('0x7')](),controller['getAgents']);router[_0x9c35('0xd')]('/',auth[_0x9c35('0x7')](),controller[_0x9c35('0xe')]);router[_0x9c35('0xd')](_0x9c35('0xf'),auth['isAuthenticated'](),controller[_0x9c35('0x10')]);router[_0x9c35('0xd')](_0x9c35('0xc'),auth[_0x9c35('0x7')](),controller[_0x9c35('0x11')]);router[_0x9c35('0x12')](_0x9c35('0x9'),auth[_0x9c35('0x7')](),controller[_0x9c35('0x13')]);router[_0x9c35('0x14')](_0x9c35('0x9'),auth[_0x9c35('0x7')](),controller[_0x9c35('0x15')]);router[_0x9c35('0x14')](_0x9c35('0xf'),auth['isAuthenticated'](),controller[_0x9c35('0x16')]);router[_0x9c35('0x14')](_0x9c35('0xc'),auth[_0x9c35('0x7')](),controller['removeAgents']);module[_0x9c35('0x17')]=router;
\ No newline at end of file
index 26840be..9010635 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a3f=['DATE','moment','sequelize','exports','STRING'];(function(_0x2df523,_0x11b09e){var _0x43f919=function(_0x53c3d6){while(--_0x53c3d6){_0x2df523['push'](_0x2df523['shift']());}};_0x43f919(++_0x11b09e);}(_0x3a3f,0x11e));var _0xf3a3=function(_0x543815,_0x202ce9){_0x543815=_0x543815-0x0;var _0xed84a=_0x3a3f[_0x543815];return _0xed84a;};'use strict';var moment=require(_0xf3a3('0x0'));var Sequelize=require(_0xf3a3('0x1'));module[_0xf3a3('0x2')]={'uniqueid':{'type':Sequelize[_0xf3a3('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xf3a3('0x3')]},'joinAt':{'type':Sequelize[_0xf3a3('0x4')]},'leaveAt':{'type':Sequelize[_0xf3a3('0x4')]},'acceptAt':{'type':Sequelize[_0xf3a3('0x4')]},'exitAt':{'type':Sequelize[_0xf3a3('0x4')]},'reason':{'type':Sequelize[_0xf3a3('0x3')]}};
\ No newline at end of file
+var _0x53f6=['STRING','DATE','moment','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53f6,0xb2));var _0x653f=function(_0x2b81be,_0x544bdf){_0x2b81be=_0x2b81be-0x0;var _0x8ed4a7=_0x53f6[_0x2b81be];return _0x8ed4a7;};'use strict';var moment=require(_0x653f('0x0'));var Sequelize=require('sequelize');module[_0x653f('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x653f('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x653f('0x3')]},'acceptAt':{'type':Sequelize[_0x653f('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x653f('0x2')]}};
\ No newline at end of file
index 808f951..067fdc3 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(_0x39a885,_0x249f36){var _0x2b0c1a=function(_0x4d7ec9){while(--_0x4d7ec9){_0x39a885['push'](_0x39a885['shift']());}};_0x2b0c1a(++_0x249f36);}(_0x01d3,0xdb));var _0x301d=function(_0x199e25,_0x259bec){_0x199e25=_0x199e25-0x0;var _0x4ceeb4=_0x01d3[_0x199e25];return _0x4ceeb4;};'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 _0x5b02=['body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','error','name','map','FaxQueueReport','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','length','include','find','create'];(function(_0x2b7084,_0x29c2e0){var _0x2dbc3d=function(_0x46e86d){while(--_0x46e86d){_0x2b7084['push'](_0x2b7084['shift']());}};_0x2dbc3d(++_0x29c2e0);}(_0x5b02,0xe9));var _0x25b0=function(_0x5d27b8,_0x59681b){_0x5d27b8=_0x5d27b8-0x0;var _0x4c1944=_0x5b02[_0x5d27b8];return _0x4c1944;};'use strict';var emlformat=require(_0x25b0('0x0'));var rimraf=require(_0x25b0('0x1'));var zipdir=require(_0x25b0('0x2'));var jsonpatch=require(_0x25b0('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x25b0('0x4'));var Mustache=require('mustache');var util=require(_0x25b0('0x5'));var path=require(_0x25b0('0x6'));var sox=require(_0x25b0('0x7'));var csv=require(_0x25b0('0x8'));var ejs=require(_0x25b0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x25b0('0xa'));var squel=require(_0x25b0('0xb'));var crypto=require('crypto');var jsforce=require(_0x25b0('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x25b0('0xd'));var Papa=require(_0x25b0('0xe'));var Redis=require(_0x25b0('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x25b0('0x10'));var as=require(_0x25b0('0x11'));var hardwareService=require(_0x25b0('0x12'));var logger=require(_0x25b0('0x13'))(_0x25b0('0x14'));var utils=require(_0x25b0('0x15'));var config=require(_0x25b0('0x16'));var licenseUtil=require(_0x25b0('0x17'));var db=require(_0x25b0('0x18'))['db'];function respondWithStatusCode(_0x1d3178,_0x184452){_0x184452=_0x184452||0xcc;return function(_0x26a34f){if(_0x26a34f){return _0x1d3178[_0x25b0('0x19')](_0x184452);}return _0x1d3178[_0x25b0('0x1a')](_0x184452)[_0x25b0('0x1b')]();};}function respondWithResult(_0x42cc07,_0x293203){_0x293203=_0x293203||0xc8;return function(_0x211658){if(_0x211658){return _0x42cc07[_0x25b0('0x1a')](_0x293203)[_0x25b0('0x1c')](_0x211658);}};}function respondWithFilteredResult(_0x40071c,_0x5ac18d){return function(_0x51542b){if(_0x51542b){var _0xfe1ea6=typeof _0x5ac18d['offset']===_0x25b0('0x1d')&&typeof _0x5ac18d[_0x25b0('0x1e')]===_0x25b0('0x1d');var _0x3267b9=_0x51542b['count'];var _0x1d850f=_0xfe1ea6?0x0:_0x5ac18d[_0x25b0('0x1f')];var _0x20762e=_0xfe1ea6?_0x51542b[_0x25b0('0x20')]:_0x5ac18d[_0x25b0('0x1f')]+_0x5ac18d[_0x25b0('0x1e')];var _0x54f458;if(_0x20762e>=_0x3267b9){_0x20762e=_0x3267b9;_0x54f458=0xc8;}else{_0x54f458=0xce;}_0x40071c[_0x25b0('0x1a')](_0x54f458);return _0x40071c[_0x25b0('0x21')](_0x25b0('0x22'),_0x1d850f+'-'+_0x20762e+'/'+_0x3267b9)[_0x25b0('0x1c')](_0x51542b);}return null;};}function patchUpdates(_0x1dc691){return function(_0xea4162){try{jsonpatch[_0x25b0('0x23')](_0xea4162,_0x1dc691,!![]);}catch(_0x19599b){return BPromise[_0x25b0('0x24')](_0x19599b);}return _0xea4162[_0x25b0('0x25')]();};}function saveUpdates(_0x2b2eda,_0x3ce1da){return function(_0x5cb746){if(_0x5cb746){return _0x5cb746[_0x25b0('0x26')](_0x2b2eda)[_0x25b0('0x27')](function(_0x517ec5){return _0x517ec5;});}return null;};}function removeEntity(_0x2d7c17,_0x2023d8){return function(_0x3546f0){if(_0x3546f0){return _0x3546f0['destroy']()['then'](function(){_0x2d7c17['status'](0xcc)[_0x25b0('0x1b')]();});}};}function handleEntityNotFound(_0x433085,_0x99bd3a){return function(_0x24f847){if(!_0x24f847){_0x433085[_0x25b0('0x19')](0x194);}return _0x24f847;};}function handleError(_0x23b396,_0x40268a){_0x40268a=_0x40268a||0x1f4;return function(_0x75ce7a){logger[_0x25b0('0x28')](_0x75ce7a['stack']);if(_0x75ce7a[_0x25b0('0x29')]){delete _0x75ce7a[_0x25b0('0x29')];}_0x23b396['status'](_0x40268a)['send'](_0x75ce7a);};}exports['index']=function(_0x1a6212,_0x3f0a54){var _0x251fad={},_0x105129={},_0x214377={'count':0x0,'rows':[]};var _0x3285ae=_[_0x25b0('0x2a')](db[_0x25b0('0x2b')][_0x25b0('0x2c')],function(_0x285a2b){return{'name':_0x285a2b[_0x25b0('0x2d')],'type':_0x285a2b[_0x25b0('0x2e')][_0x25b0('0x2f')]};});_0x105129['model']=_['map'](_0x3285ae,_0x25b0('0x29'));_0x105129['query']=_['keys'](_0x1a6212[_0x25b0('0x30')]);_0x105129[_0x25b0('0x31')]=_[_0x25b0('0x32')](_0x105129[_0x25b0('0x33')],_0x105129[_0x25b0('0x30')]);_0x251fad['attributes']=_[_0x25b0('0x32')](_0x105129[_0x25b0('0x33')],qs['fields'](_0x1a6212[_0x25b0('0x30')][_0x25b0('0x34')]));_0x251fad['attributes']=_0x251fad[_0x25b0('0x35')]['length']?_0x251fad[_0x25b0('0x35')]:_0x105129[_0x25b0('0x33')];if(!_0x1a6212[_0x25b0('0x30')][_0x25b0('0x36')](_0x25b0('0x37'))){_0x251fad[_0x25b0('0x1e')]=qs[_0x25b0('0x1e')](_0x1a6212[_0x25b0('0x30')][_0x25b0('0x1e')]);_0x251fad['offset']=qs[_0x25b0('0x1f')](_0x1a6212[_0x25b0('0x30')][_0x25b0('0x1f')]);}_0x251fad[_0x25b0('0x38')]=qs[_0x25b0('0x39')](_0x1a6212[_0x25b0('0x30')][_0x25b0('0x39')]);_0x251fad[_0x25b0('0x3a')]=qs[_0x25b0('0x31')](_[_0x25b0('0x3b')](_0x1a6212['query'],_0x105129[_0x25b0('0x31')]),_0x3285ae);if(_0x1a6212[_0x25b0('0x30')][_0x25b0('0x3c')]){_0x251fad['where']=_[_0x25b0('0x3d')](_0x251fad[_0x25b0('0x3a')],{'$or':_[_0x25b0('0x2a')](_0x3285ae,function(_0x43e140){if(_0x43e140[_0x25b0('0x2e')]!==_0x25b0('0x3e')){var _0x28f1cd={};_0x28f1cd[_0x43e140[_0x25b0('0x29')]]={'$like':'%'+_0x1a6212['query']['filter']+'%'};return _0x28f1cd;}})});}_0x251fad=_[_0x25b0('0x3d')]({},_0x251fad,_0x1a6212[_0x25b0('0x3f')]);var _0x3f4ae0={'where':_0x251fad['where']};return db[_0x25b0('0x2b')]['count'](_0x3f4ae0)[_0x25b0('0x27')](function(_0x39617a){_0x214377[_0x25b0('0x20')]=_0x39617a;if(_0x1a6212[_0x25b0('0x30')][_0x25b0('0x40')]){_0x251fad['include']=[{'all':!![]}];}return db[_0x25b0('0x2b')][_0x25b0('0x41')](_0x251fad);})[_0x25b0('0x27')](function(_0x376d8a){_0x214377[_0x25b0('0x42')]=_0x376d8a;return _0x214377;})['then'](respondWithFilteredResult(_0x3f0a54,_0x251fad))[_0x25b0('0x43')](handleError(_0x3f0a54,null));};exports[_0x25b0('0x44')]=function(_0x3d1262,_0x44c400){var _0x35fc00={'raw':!![],'where':{'id':_0x3d1262[_0x25b0('0x45')]['id']}},_0x1adf8d={};_0x1adf8d[_0x25b0('0x33')]=_[_0x25b0('0x46')](db[_0x25b0('0x2b')][_0x25b0('0x2c')]);_0x1adf8d['query']=_[_0x25b0('0x46')](_0x3d1262['query']);_0x1adf8d[_0x25b0('0x31')]=_[_0x25b0('0x32')](_0x1adf8d[_0x25b0('0x33')],_0x1adf8d[_0x25b0('0x30')]);_0x35fc00['attributes']=_[_0x25b0('0x32')](_0x1adf8d[_0x25b0('0x33')],qs[_0x25b0('0x34')](_0x3d1262['query'][_0x25b0('0x34')]));_0x35fc00[_0x25b0('0x35')]=_0x35fc00[_0x25b0('0x35')][_0x25b0('0x47')]?_0x35fc00[_0x25b0('0x35')]:_0x1adf8d[_0x25b0('0x33')];if(_0x3d1262[_0x25b0('0x30')]['includeAll']){_0x35fc00[_0x25b0('0x48')]=[{'all':!![]}];}_0x35fc00=_[_0x25b0('0x3d')]({},_0x35fc00,_0x3d1262[_0x25b0('0x3f')]);return db['FaxQueueReport'][_0x25b0('0x49')](_0x35fc00)[_0x25b0('0x27')](handleEntityNotFound(_0x44c400,null))[_0x25b0('0x27')](respondWithResult(_0x44c400,null))[_0x25b0('0x43')](handleError(_0x44c400,null));};exports[_0x25b0('0x4a')]=function(_0x568d83,_0x1e8a8d){return db[_0x25b0('0x2b')][_0x25b0('0x4a')](_0x568d83['body'],{})[_0x25b0('0x27')](respondWithResult(_0x1e8a8d,0xc9))[_0x25b0('0x43')](handleError(_0x1e8a8d,null));};exports[_0x25b0('0x26')]=function(_0x1d6d55,_0x29165e){if(_0x1d6d55[_0x25b0('0x4b')]['id']){delete _0x1d6d55['body']['id'];}return db['FaxQueueReport']['find']({'where':{'id':_0x1d6d55[_0x25b0('0x45')]['id']}})['then'](handleEntityNotFound(_0x29165e,null))['then'](saveUpdates(_0x1d6d55[_0x25b0('0x4b')],null))['then'](respondWithResult(_0x29165e,null))[_0x25b0('0x43')](handleError(_0x29165e,null));};exports['destroy']=function(_0x4fc22d,_0x394e52){return db[_0x25b0('0x2b')][_0x25b0('0x49')]({'where':{'id':_0x4fc22d[_0x25b0('0x45')]['id']}})[_0x25b0('0x27')](handleEntityNotFound(_0x394e52,null))[_0x25b0('0x27')](removeEntity(_0x394e52,null))[_0x25b0('0x43')](handleError(_0x394e52,null));};exports[_0x25b0('0x4c')]=function(_0x2e68ad,_0x20d56f){return db['FaxQueueReport']['describe']()['then'](respondWithResult(_0x20d56f,null))[_0x25b0('0x43')](handleError(_0x20d56f,null));};
\ No newline at end of file
index 8042808..a008beb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['path','rimraf','../../config/environment','define','report_fax_queue','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x3d4ea3,_0x5705ec){var _0x28f19c=function(_0xcc8959){while(--_0xcc8959){_0x3d4ea3['push'](_0x3d4ea3['shift']());}};_0x28f19c(++_0x5705ec);}(_0xabce,0x103));var _0xeabc=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xabce[_0x18a79d];return _0x4f8848;};'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('./faxQueueReport.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('FaxQueueReport',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[{'name':_0xeabc('0xa'),'fields':[_0xeabc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xabce=['path','rimraf','../../config/environment','define','report_fax_queue','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x2a8355,_0xdb76f8){var _0xe35fda=function(_0x469d8f){while(--_0x469d8f){_0x2a8355['push'](_0x2a8355['shift']());}};_0xe35fda(++_0xdb76f8);}(_0xabce,0x103));var _0xeabc=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xabce[_0x5c3c0b];return _0x52ecd2;};'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('./faxQueueReport.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('FaxQueueReport',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[{'name':_0xeabc('0xa'),'fields':[_0xeabc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 6c39df5..4f1e910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04db=['request\x20sent','stringify','error','code','message','info','result','catch','CreateFaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','FaxQueueReport','where','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x198d2a,_0x510eb7){var _0xfda34d=function(_0x581078){while(--_0x581078){_0x198d2a['push'](_0x198d2a['shift']());}};_0xfda34d(++_0x510eb7);}(_0x04db,0x1b1));var _0xb04d=function(_0x57a8c5,_0x3428d0){_0x57a8c5=_0x57a8c5-0x0;var _0x568fa0=_0x04db[_0x57a8c5];return _0x568fa0;};'use strict';var _=require(_0xb04d('0x0'));var util=require(_0xb04d('0x1'));var moment=require(_0xb04d('0x2'));var BPromise=require(_0xb04d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb04d('0x4'));var db=require(_0xb04d('0x5'))['db'];var utils=require(_0xb04d('0x6'));var logger=require(_0xb04d('0x7'))(_0xb04d('0x8'));var config=require(_0xb04d('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x423972,_0x125d82,_0xdf468e){return new BPromise(function(_0x42b762,_0x3a90a7){return client[_0xb04d('0xa')](_0x423972,_0xdf468e)[_0xb04d('0xb')](function(_0x3e289b){logger['info'](_0xb04d('0xc'),_0x125d82,'request\x20sent');logger[_0xb04d('0xd')](_0xb04d('0xe'),_0x125d82,_0xb04d('0xf'),JSON[_0xb04d('0x10')](_0x3e289b));if(_0x3e289b[_0xb04d('0x11')]){if(_0x3e289b[_0xb04d('0x11')][_0xb04d('0x12')]===0x1f4){logger[_0xb04d('0x11')](_0xb04d('0xc'),_0x125d82,_0x3e289b[_0xb04d('0x11')][_0xb04d('0x13')]);return _0x3a90a7(_0x3e289b['error'][_0xb04d('0x13')]);}logger['error'](_0xb04d('0xc'),_0x125d82,_0x3e289b[_0xb04d('0x11')]['message']);return _0x42b762(_0x3e289b['error'][_0xb04d('0x13')]);}else{logger[_0xb04d('0x14')](_0xb04d('0xc'),_0x125d82,_0xb04d('0xf'));_0x42b762(_0x3e289b[_0xb04d('0x15')][_0xb04d('0x13')]);}})[_0xb04d('0x16')](function(_0x7171ef){logger[_0xb04d('0x11')](_0xb04d('0xc'),_0x125d82,_0x7171ef);_0x3a90a7(_0x7171ef);});});}exports[_0xb04d('0x17')]=function(_0x416dbe){var _0xed2621=this;return new Promise(function(_0x11b7c2,_0x5b4b8f){return db['FaxQueueReport'][_0xb04d('0x18')](_0x416dbe[_0xb04d('0x19')],{'raw':_0x416dbe['options']?_0x416dbe[_0xb04d('0x1a')][_0xb04d('0x1b')]===undefined?!![]:![]:!![]})[_0xb04d('0xb')](function(_0x5055f5){logger[_0xb04d('0x14')](_0xb04d('0x17'),_0x416dbe);logger['debug'](_0xb04d('0x17'),_0x416dbe,JSON[_0xb04d('0x10')](_0x5055f5));_0x11b7c2(_0x5055f5);})[_0xb04d('0x16')](function(_0x399772){logger[_0xb04d('0x11')](_0xb04d('0x17'),_0x399772[_0xb04d('0x13')],_0x416dbe);_0x5b4b8f(_0xed2621[_0xb04d('0x11')](0x1f4,_0x399772[_0xb04d('0x13')]));});});};exports[_0xb04d('0x1c')]=function(_0x6b8e2){var _0x514660=this;return new Promise(function(_0x277e61,_0x125855){return db[_0xb04d('0x1d')]['update'](_0x6b8e2[_0xb04d('0x19')],{'raw':_0x6b8e2[_0xb04d('0x1a')]?_0x6b8e2[_0xb04d('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6b8e2['options']?_0x6b8e2[_0xb04d('0x1a')][_0xb04d('0x1e')]||null:null,'attributes':_0x6b8e2['options']?_0x6b8e2[_0xb04d('0x1a')][_0xb04d('0x1f')]||null:null,'limit':_0x6b8e2[_0xb04d('0x1a')]?_0x6b8e2['options']['limit']||null:null})[_0xb04d('0xb')](function(_0x156cbe){logger[_0xb04d('0x14')](_0xb04d('0x1c'),_0x6b8e2);logger[_0xb04d('0xd')](_0xb04d('0x1c'),_0x6b8e2,JSON[_0xb04d('0x10')](_0x156cbe));_0x277e61(_0x156cbe);})[_0xb04d('0x16')](function(_0x6da7aa){logger[_0xb04d('0x11')](_0xb04d('0x1c'),_0x6da7aa['message'],_0x6b8e2);_0x125855(_0x514660['error'](0x1f4,_0x6da7aa[_0xb04d('0x13')]));});});};
\ No newline at end of file
+var _0xcd06=['UpdateFaxQueueReport','update','where','attributes','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','FaxQueueReport,\x20%s,\x20%s','message','result','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw'];(function(_0x472154,_0x414fbb){var _0x58254e=function(_0x1d5782){while(--_0x1d5782){_0x472154['push'](_0x472154['shift']());}};_0x58254e(++_0x414fbb);}(_0xcd06,0x1d9));var _0x6cd0=function(_0x1b6bd9,_0x31c836){_0x1b6bd9=_0x1b6bd9-0x0;var _0x4f6609=_0xcd06[_0x1b6bd9];return _0x4f6609;};'use strict';var _=require(_0x6cd0('0x0'));var util=require(_0x6cd0('0x1'));var moment=require(_0x6cd0('0x2'));var BPromise=require(_0x6cd0('0x3'));var rs=require(_0x6cd0('0x4'));var fs=require('fs');var Redis=require(_0x6cd0('0x5'));var db=require(_0x6cd0('0x6'))['db'];var utils=require(_0x6cd0('0x7'));var logger=require(_0x6cd0('0x8'))(_0x6cd0('0x9'));var config=require(_0x6cd0('0xa'));var jayson=require(_0x6cd0('0xb'));var client=jayson[_0x6cd0('0xc')][_0x6cd0('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3d84ae,_0xb890ff,_0x22446c){return new BPromise(function(_0x46a2f2,_0x2339ec){return client[_0x6cd0('0xe')](_0x3d84ae,_0x22446c)[_0x6cd0('0xf')](function(_0x4b0f7e){logger[_0x6cd0('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0xb890ff,_0x6cd0('0x11'));logger[_0x6cd0('0x12')](_0x6cd0('0x13'),_0xb890ff,_0x6cd0('0x11'),JSON[_0x6cd0('0x14')](_0x4b0f7e));if(_0x4b0f7e[_0x6cd0('0x15')]){if(_0x4b0f7e[_0x6cd0('0x15')]['code']===0x1f4){logger[_0x6cd0('0x15')](_0x6cd0('0x16'),_0xb890ff,_0x4b0f7e[_0x6cd0('0x15')][_0x6cd0('0x17')]);return _0x2339ec(_0x4b0f7e['error'][_0x6cd0('0x17')]);}logger['error']('FaxQueueReport,\x20%s,\x20%s',_0xb890ff,_0x4b0f7e[_0x6cd0('0x15')][_0x6cd0('0x17')]);return _0x46a2f2(_0x4b0f7e[_0x6cd0('0x15')][_0x6cd0('0x17')]);}else{logger[_0x6cd0('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0xb890ff,_0x6cd0('0x11'));_0x46a2f2(_0x4b0f7e[_0x6cd0('0x18')][_0x6cd0('0x17')]);}})['catch'](function(_0x9b804c){logger['error'](_0x6cd0('0x16'),_0xb890ff,_0x9b804c);_0x2339ec(_0x9b804c);});});}exports[_0x6cd0('0x19')]=function(_0x168e16){var _0x40b427=this;return new Promise(function(_0x52ea9d,_0xc7c653){return db[_0x6cd0('0x1a')][_0x6cd0('0x1b')](_0x168e16[_0x6cd0('0x1c')],{'raw':_0x168e16[_0x6cd0('0x1d')]?_0x168e16[_0x6cd0('0x1d')][_0x6cd0('0x1e')]===undefined?!![]:![]:!![]})[_0x6cd0('0xf')](function(_0x23bfbd){logger[_0x6cd0('0x10')](_0x6cd0('0x19'),_0x168e16);logger[_0x6cd0('0x12')](_0x6cd0('0x19'),_0x168e16,JSON[_0x6cd0('0x14')](_0x23bfbd));_0x52ea9d(_0x23bfbd);})['catch'](function(_0x2377f5){logger['error'](_0x6cd0('0x19'),_0x2377f5[_0x6cd0('0x17')],_0x168e16);_0xc7c653(_0x40b427[_0x6cd0('0x15')](0x1f4,_0x2377f5[_0x6cd0('0x17')]));});});};exports[_0x6cd0('0x1f')]=function(_0x2fedbe){var _0x52fe28=this;return new Promise(function(_0x31ffc8,_0x39f103){return db['FaxQueueReport'][_0x6cd0('0x20')](_0x2fedbe[_0x6cd0('0x1c')],{'raw':_0x2fedbe[_0x6cd0('0x1d')]?_0x2fedbe[_0x6cd0('0x1d')][_0x6cd0('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2fedbe[_0x6cd0('0x1d')]?_0x2fedbe[_0x6cd0('0x1d')][_0x6cd0('0x21')]||null:null,'attributes':_0x2fedbe[_0x6cd0('0x1d')]?_0x2fedbe['options'][_0x6cd0('0x22')]||null:null,'limit':_0x2fedbe[_0x6cd0('0x1d')]?_0x2fedbe['options']['limit']||null:null})[_0x6cd0('0xf')](function(_0x2c4f20){logger['info']('UpdateFaxQueueReport',_0x2fedbe);logger[_0x6cd0('0x12')](_0x6cd0('0x1f'),_0x2fedbe,JSON[_0x6cd0('0x14')](_0x2c4f20));_0x31ffc8(_0x2c4f20);})[_0x6cd0('0x23')](function(_0x4315e5){logger[_0x6cd0('0x15')](_0x6cd0('0x1f'),_0x4315e5[_0x6cd0('0x17')],_0x2fedbe);_0x39f103(_0x52fe28[_0x6cd0('0x15')](0x1f4,_0x4315e5[_0x6cd0('0x17')]));});});};
\ No newline at end of file
index 0d4517c..d28a692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc353=['multer','util','path','express','Router','fs-extra','../../components/interaction/service','./faxQueueReport.controller','get','isAuthenticated','describe','/:id','post','put','delete'];(function(_0x5dc4f9,_0x94f0fa){var _0x5614be=function(_0x5e9793){while(--_0x5e9793){_0x5dc4f9['push'](_0x5dc4f9['shift']());}};_0x5614be(++_0x94f0fa);}(_0xc353,0x10e));var _0x3c35=function(_0xe621b4,_0x13bbe3){_0xe621b4=_0xe621b4-0x0;var _0x32944b=_0xc353[_0xe621b4];return _0x32944b;};'use strict';var multer=require(_0x3c35('0x0'));var util=require(_0x3c35('0x1'));var path=require(_0x3c35('0x2'));var timeout=require('connect-timeout');var express=require(_0x3c35('0x3'));var router=express[_0x3c35('0x4')]();var fs_extra=require(_0x3c35('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3c35('0x6'));var config=require('../../config/environment');var controller=require(_0x3c35('0x7'));router[_0x3c35('0x8')]('/',auth[_0x3c35('0x9')](),controller['index']);router[_0x3c35('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x3c35('0xa')]);router['get'](_0x3c35('0xb'),auth[_0x3c35('0x9')](),controller['show']);router[_0x3c35('0xc')]('/',auth[_0x3c35('0x9')](),controller['create']);router[_0x3c35('0xd')](_0x3c35('0xb'),auth[_0x3c35('0x9')](),controller['update']);router[_0x3c35('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x91dd=['../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x3d2aa1,_0x12f3a6){var _0x4907fe=function(_0x2f184b){while(--_0x2f184b){_0x3d2aa1['push'](_0x3d2aa1['shift']());}};_0x4907fe(++_0x12f3a6);}(_0x91dd,0x1f4));var _0xd91d=function(_0x49ad66,_0x280c06){_0x49ad66=_0x49ad66-0x0;var _0x53d812=_0x91dd[_0x49ad66];return _0x53d812;};'use strict';var multer=require(_0xd91d('0x0'));var util=require(_0xd91d('0x1'));var path=require(_0xd91d('0x2'));var timeout=require(_0xd91d('0x3'));var express=require(_0xd91d('0x4'));var router=express['Router']();var fs_extra=require(_0xd91d('0x5'));var auth=require(_0xd91d('0x6'));var interaction=require(_0xd91d('0x7'));var config=require(_0xd91d('0x8'));var controller=require(_0xd91d('0x9'));router['get']('/',auth[_0xd91d('0xa')](),controller[_0xd91d('0xb')]);router[_0xd91d('0xc')](_0xd91d('0xd'),auth[_0xd91d('0xa')](),controller[_0xd91d('0xe')]);router[_0xd91d('0xc')](_0xd91d('0xf'),auth[_0xd91d('0xa')](),controller[_0xd91d('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xd91d('0x11')](_0xd91d('0xf'),auth[_0xd91d('0xa')](),controller[_0xd91d('0x12')]);router[_0xd91d('0x13')](_0xd91d('0xf'),auth['isAuthenticated'](),controller[_0xd91d('0x14')]);module[_0xd91d('0x15')]=router;
\ No newline at end of file
index 4388ad5..41b5e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x546941,_0x3851ad){var _0x5a561c=function(_0x33aa24){while(--_0x33aa24){_0x546941['push'](_0x546941['shift']());}};_0x5a561c(++_0x3851ad);}(_0x54ef,0x112));var _0xf54e=function(_0x7bfa1d,_0x582797){_0x7bfa1d=_0x7bfa1d-0x0;var _0x5f0e48=_0x54ef[_0x7bfa1d];return _0x5f0e48;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x5cfa4f,_0x4d8fe9){var _0x2e5acd=function(_0x474d1a){while(--_0x474d1a){_0x5cfa4f['push'](_0x5cfa4f['shift']());}};_0x2e5acd(++_0x4d8fe9);}(_0x9c44,0x178));var _0x49c4=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x9c44[_0xdea41a];return _0x15d0d8;};'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 1e15696..7c801bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6be2=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','merge','options','FaxTransferReport','includeAll','include','rows','catch','show','params','length','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path'];(function(_0x186571,_0xb17e60){var _0x9b781a=function(_0x528973){while(--_0x528973){_0x186571['push'](_0x186571['shift']());}};_0x9b781a(++_0xb17e60);}(_0x6be2,0x114));var _0x26be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6be2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x26be('0x0'));var rimraf=require(_0x26be('0x1'));var zipdir=require(_0x26be('0x2'));var jsonpatch=require(_0x26be('0x3'));var rp=require(_0x26be('0x4'));var moment=require('moment');var BPromise=require(_0x26be('0x5'));var Mustache=require(_0x26be('0x6'));var util=require('util');var path=require(_0x26be('0x7'));var sox=require('sox');var csv=require(_0x26be('0x8'));var ejs=require(_0x26be('0x9'));var fs=require('fs');var fs_extra=require(_0x26be('0xa'));var _=require(_0x26be('0xb'));var squel=require(_0x26be('0xc'));var crypto=require(_0x26be('0xd'));var jsforce=require(_0x26be('0xe'));var deskjs=require(_0x26be('0xf'));var toCsv=require(_0x26be('0x8'));var querystring=require('querystring');var Papa=require(_0x26be('0x10'));var Redis=require('ioredis');var authService=require(_0x26be('0x11'));var qs=require(_0x26be('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x26be('0x13'));var licenseUtil=require(_0x26be('0x14'));var db=require(_0x26be('0x15'))['db'];function respondWithStatusCode(_0x5387f6,_0x18f12c){_0x18f12c=_0x18f12c||0xcc;return function(_0x1c3271){if(_0x1c3271){return _0x5387f6[_0x26be('0x16')](_0x18f12c);}return _0x5387f6[_0x26be('0x17')](_0x18f12c)[_0x26be('0x18')]();};}function respondWithResult(_0x5da446,_0x204405){_0x204405=_0x204405||0xc8;return function(_0x3c9db3){if(_0x3c9db3){return _0x5da446['status'](_0x204405)[_0x26be('0x19')](_0x3c9db3);}};}function respondWithFilteredResult(_0x26c07f,_0x485851){return function(_0x5e9e93){if(_0x5e9e93){var _0x3b7b23=typeof _0x485851[_0x26be('0x1a')]===_0x26be('0x1b')&&typeof _0x485851['limit']===_0x26be('0x1b');var _0x1f6d17=_0x5e9e93[_0x26be('0x1c')];var _0xacb3bc=_0x3b7b23?0x0:_0x485851[_0x26be('0x1a')];var _0x5c7a2a=_0x3b7b23?_0x5e9e93[_0x26be('0x1c')]:_0x485851[_0x26be('0x1a')]+_0x485851[_0x26be('0x1d')];var _0x4ec8d1;if(_0x5c7a2a>=_0x1f6d17){_0x5c7a2a=_0x1f6d17;_0x4ec8d1=0xc8;}else{_0x4ec8d1=0xce;}_0x26c07f[_0x26be('0x17')](_0x4ec8d1);return _0x26c07f[_0x26be('0x1e')](_0x26be('0x1f'),_0xacb3bc+'-'+_0x5c7a2a+'/'+_0x1f6d17)[_0x26be('0x19')](_0x5e9e93);}return null;};}function patchUpdates(_0x3dd3ff){return function(_0x4b217e){try{jsonpatch['apply'](_0x4b217e,_0x3dd3ff,!![]);}catch(_0x59e398){return BPromise['reject'](_0x59e398);}return _0x4b217e[_0x26be('0x20')]();};}function saveUpdates(_0x24f6d0,_0x31ff09){return function(_0x265b14){if(_0x265b14){return _0x265b14[_0x26be('0x21')](_0x24f6d0)['then'](function(_0x3a389f){return _0x3a389f;});}return null;};}function removeEntity(_0x5ca8a4,_0x34242c){return function(_0x4d1eb4){if(_0x4d1eb4){return _0x4d1eb4['destroy']()[_0x26be('0x22')](function(){_0x5ca8a4[_0x26be('0x17')](0xcc)[_0x26be('0x18')]();});}};}function handleEntityNotFound(_0x9a5670,_0x3946d9){return function(_0x503346){if(!_0x503346){_0x9a5670[_0x26be('0x16')](0x194);}return _0x503346;};}function handleError(_0x23f6ed,_0x2248c1){_0x2248c1=_0x2248c1||0x1f4;return function(_0x7c2b86){logger[_0x26be('0x23')](_0x7c2b86[_0x26be('0x24')]);if(_0x7c2b86[_0x26be('0x25')]){delete _0x7c2b86[_0x26be('0x25')];}_0x23f6ed['status'](_0x2248c1)[_0x26be('0x26')](_0x7c2b86);};}exports[_0x26be('0x27')]=function(_0x13b99b,_0x2172ff){var _0x5ef3f2={},_0x3f0a51={},_0x9b8e7c={'count':0x0,'rows':[]};var _0x483985=_[_0x26be('0x28')](db['FaxTransferReport'][_0x26be('0x29')],function(_0xe14f0a){return{'name':_0xe14f0a[_0x26be('0x2a')],'type':_0xe14f0a[_0x26be('0x2b')]['key']};});_0x3f0a51[_0x26be('0x2c')]=_[_0x26be('0x28')](_0x483985,_0x26be('0x25'));_0x3f0a51[_0x26be('0x2d')]=_[_0x26be('0x2e')](_0x13b99b[_0x26be('0x2d')]);_0x3f0a51[_0x26be('0x2f')]=_[_0x26be('0x30')](_0x3f0a51[_0x26be('0x2c')],_0x3f0a51[_0x26be('0x2d')]);_0x5ef3f2['attributes']=_[_0x26be('0x30')](_0x3f0a51[_0x26be('0x2c')],qs[_0x26be('0x31')](_0x13b99b['query'][_0x26be('0x31')]));_0x5ef3f2[_0x26be('0x32')]=_0x5ef3f2[_0x26be('0x32')]['length']?_0x5ef3f2[_0x26be('0x32')]:_0x3f0a51['model'];if(!_0x13b99b[_0x26be('0x2d')]['hasOwnProperty'](_0x26be('0x33'))){_0x5ef3f2[_0x26be('0x1d')]=qs[_0x26be('0x1d')](_0x13b99b[_0x26be('0x2d')][_0x26be('0x1d')]);_0x5ef3f2['offset']=qs[_0x26be('0x1a')](_0x13b99b[_0x26be('0x2d')][_0x26be('0x1a')]);}_0x5ef3f2[_0x26be('0x34')]=qs['sort'](_0x13b99b[_0x26be('0x2d')][_0x26be('0x35')]);_0x5ef3f2[_0x26be('0x36')]=qs[_0x26be('0x2f')](_['pick'](_0x13b99b[_0x26be('0x2d')],_0x3f0a51['filters']),_0x483985);if(_0x13b99b['query'][_0x26be('0x37')]){_0x5ef3f2['where']=_[_0x26be('0x38')](_0x5ef3f2[_0x26be('0x36')],{'$or':_[_0x26be('0x28')](_0x483985,function(_0x39f346){if(_0x39f346[_0x26be('0x2b')]!=='VIRTUAL'){var _0x1e5566={};_0x1e5566[_0x39f346['name']]={'$like':'%'+_0x13b99b[_0x26be('0x2d')]['filter']+'%'};return _0x1e5566;}})});}_0x5ef3f2=_[_0x26be('0x38')]({},_0x5ef3f2,_0x13b99b[_0x26be('0x39')]);var _0x88750={'where':_0x5ef3f2[_0x26be('0x36')]};return db[_0x26be('0x3a')][_0x26be('0x1c')](_0x88750)[_0x26be('0x22')](function(_0x2e8ada){_0x9b8e7c[_0x26be('0x1c')]=_0x2e8ada;if(_0x13b99b[_0x26be('0x2d')][_0x26be('0x3b')]){_0x5ef3f2[_0x26be('0x3c')]=[{'all':!![]}];}return db[_0x26be('0x3a')]['findAll'](_0x5ef3f2);})['then'](function(_0x511c54){_0x9b8e7c[_0x26be('0x3d')]=_0x511c54;return _0x9b8e7c;})[_0x26be('0x22')](respondWithFilteredResult(_0x2172ff,_0x5ef3f2))[_0x26be('0x3e')](handleError(_0x2172ff,null));};exports[_0x26be('0x3f')]=function(_0x549abb,_0x140dfd){var _0x24b09d={'raw':!![],'where':{'id':_0x549abb[_0x26be('0x40')]['id']}},_0x48d30e={};_0x48d30e['model']=_[_0x26be('0x2e')](db['FaxTransferReport'][_0x26be('0x29')]);_0x48d30e[_0x26be('0x2d')]=_[_0x26be('0x2e')](_0x549abb[_0x26be('0x2d')]);_0x48d30e['filters']=_['intersection'](_0x48d30e[_0x26be('0x2c')],_0x48d30e[_0x26be('0x2d')]);_0x24b09d['attributes']=_[_0x26be('0x30')](_0x48d30e[_0x26be('0x2c')],qs[_0x26be('0x31')](_0x549abb[_0x26be('0x2d')][_0x26be('0x31')]));_0x24b09d[_0x26be('0x32')]=_0x24b09d[_0x26be('0x32')][_0x26be('0x41')]?_0x24b09d[_0x26be('0x32')]:_0x48d30e[_0x26be('0x2c')];if(_0x549abb['query']['includeAll']){_0x24b09d[_0x26be('0x3c')]=[{'all':!![]}];}_0x24b09d=_[_0x26be('0x38')]({},_0x24b09d,_0x549abb['options']);return db['FaxTransferReport'][_0x26be('0x42')](_0x24b09d)['then'](handleEntityNotFound(_0x140dfd,null))['then'](respondWithResult(_0x140dfd,null))[_0x26be('0x3e')](handleError(_0x140dfd,null));};exports[_0x26be('0x43')]=function(_0x343c48,_0xdfc00a){return db[_0x26be('0x3a')]['create'](_0x343c48[_0x26be('0x44')],{})[_0x26be('0x22')](respondWithResult(_0xdfc00a,0xc9))['catch'](handleError(_0xdfc00a,null));};exports['update']=function(_0x362b5e,_0x1fe5aa){if(_0x362b5e[_0x26be('0x44')]['id']){delete _0x362b5e[_0x26be('0x44')]['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x362b5e[_0x26be('0x40')]['id']}})[_0x26be('0x22')](handleEntityNotFound(_0x1fe5aa,null))['then'](saveUpdates(_0x362b5e[_0x26be('0x44')],null))[_0x26be('0x22')](respondWithResult(_0x1fe5aa,null))['catch'](handleError(_0x1fe5aa,null));};exports[_0x26be('0x45')]=function(_0x21d61c,_0x28a903){return db[_0x26be('0x3a')][_0x26be('0x42')]({'where':{'id':_0x21d61c[_0x26be('0x40')]['id']}})[_0x26be('0x22')](handleEntityNotFound(_0x28a903,null))[_0x26be('0x22')](removeEntity(_0x28a903,null))[_0x26be('0x3e')](handleError(_0x28a903,null));};exports[_0x26be('0x46')]=function(_0x59e0ad,_0x5294aa){return db[_0x26be('0x3a')]['describe']()[_0x26be('0x22')](respondWithResult(_0x5294aa,null))['catch'](handleError(_0x5294aa,null));};
\ No newline at end of file
+var _0x592d=['crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x592d,0x187));var _0xd592=function(_0x6d1ea2,_0x11eacb){_0x6d1ea2=_0x6d1ea2-0x0;var _0x414e89=_0x592d[_0x6d1ea2];return _0x414e89;};'use strict';var emlformat=require(_0xd592('0x0'));var rimraf=require(_0xd592('0x1'));var zipdir=require(_0xd592('0x2'));var jsonpatch=require(_0xd592('0x3'));var rp=require(_0xd592('0x4'));var moment=require('moment');var BPromise=require(_0xd592('0x5'));var Mustache=require(_0xd592('0x6'));var util=require(_0xd592('0x7'));var path=require('path');var sox=require(_0xd592('0x8'));var csv=require(_0xd592('0x9'));var ejs=require(_0xd592('0xa'));var fs=require('fs');var fs_extra=require(_0xd592('0xb'));var _=require(_0xd592('0xc'));var squel=require(_0xd592('0xd'));var crypto=require(_0xd592('0xe'));var jsforce=require(_0xd592('0xf'));var deskjs=require(_0xd592('0x10'));var toCsv=require(_0xd592('0x9'));var querystring=require('querystring');var Papa=require(_0xd592('0x11'));var Redis=require(_0xd592('0x12'));var authService=require(_0xd592('0x13'));var qs=require(_0xd592('0x14'));var as=require(_0xd592('0x15'));var hardwareService=require(_0xd592('0x16'));var logger=require(_0xd592('0x17'))('api');var utils=require(_0xd592('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xd592('0x19'));var db=require(_0xd592('0x1a'))['db'];function respondWithStatusCode(_0x2dd300,_0x4245ff){_0x4245ff=_0x4245ff||0xcc;return function(_0x450d13){if(_0x450d13){return _0x2dd300[_0xd592('0x1b')](_0x4245ff);}return _0x2dd300['status'](_0x4245ff)['end']();};}function respondWithResult(_0xbf8d3c,_0x20a3dc){_0x20a3dc=_0x20a3dc||0xc8;return function(_0x3aa3c4){if(_0x3aa3c4){return _0xbf8d3c[_0xd592('0x1c')](_0x20a3dc)[_0xd592('0x1d')](_0x3aa3c4);}};}function respondWithFilteredResult(_0x24e74f,_0x4877ad){return function(_0x12cc23){if(_0x12cc23){var _0x4e0c4a=typeof _0x4877ad[_0xd592('0x1e')]===_0xd592('0x1f')&&typeof _0x4877ad[_0xd592('0x20')]===_0xd592('0x1f');var _0x1f2d10=_0x12cc23[_0xd592('0x21')];var _0x288ed4=_0x4e0c4a?0x0:_0x4877ad[_0xd592('0x1e')];var _0x48c803=_0x4e0c4a?_0x12cc23[_0xd592('0x21')]:_0x4877ad['offset']+_0x4877ad['limit'];var _0x51e92a;if(_0x48c803>=_0x1f2d10){_0x48c803=_0x1f2d10;_0x51e92a=0xc8;}else{_0x51e92a=0xce;}_0x24e74f['status'](_0x51e92a);return _0x24e74f[_0xd592('0x22')](_0xd592('0x23'),_0x288ed4+'-'+_0x48c803+'/'+_0x1f2d10)[_0xd592('0x1d')](_0x12cc23);}return null;};}function patchUpdates(_0x5e5eea){return function(_0x3f5f2c){try{jsonpatch[_0xd592('0x24')](_0x3f5f2c,_0x5e5eea,!![]);}catch(_0x1a17fb){return BPromise[_0xd592('0x25')](_0x1a17fb);}return _0x3f5f2c[_0xd592('0x26')]();};}function saveUpdates(_0x1c8f5f,_0x565aa0){return function(_0x37dfa5){if(_0x37dfa5){return _0x37dfa5[_0xd592('0x27')](_0x1c8f5f)[_0xd592('0x28')](function(_0x4763f1){return _0x4763f1;});}return null;};}function removeEntity(_0x1ca51c,_0x3946da){return function(_0x227be1){if(_0x227be1){return _0x227be1[_0xd592('0x29')]()[_0xd592('0x28')](function(){_0x1ca51c[_0xd592('0x1c')](0xcc)[_0xd592('0x2a')]();});}};}function handleEntityNotFound(_0x4efef8,_0x30b58e){return function(_0x27264c){if(!_0x27264c){_0x4efef8[_0xd592('0x1b')](0x194);}return _0x27264c;};}function handleError(_0x36f18f,_0x554761){_0x554761=_0x554761||0x1f4;return function(_0x311796){logger[_0xd592('0x2b')](_0x311796[_0xd592('0x2c')]);if(_0x311796['name']){delete _0x311796['name'];}_0x36f18f[_0xd592('0x1c')](_0x554761)[_0xd592('0x2d')](_0x311796);};}exports[_0xd592('0x2e')]=function(_0x9f8605,_0x21ef07){var _0x5f1997={},_0x77fb5={},_0x1ee179={'count':0x0,'rows':[]};var _0x2b1474=_[_0xd592('0x2f')](db[_0xd592('0x30')][_0xd592('0x31')],function(_0x48bb9a){return{'name':_0x48bb9a[_0xd592('0x32')],'type':_0x48bb9a[_0xd592('0x33')][_0xd592('0x34')]};});_0x77fb5['model']=_[_0xd592('0x2f')](_0x2b1474,_0xd592('0x35'));_0x77fb5[_0xd592('0x36')]=_[_0xd592('0x37')](_0x9f8605[_0xd592('0x36')]);_0x77fb5[_0xd592('0x38')]=_[_0xd592('0x39')](_0x77fb5['model'],_0x77fb5[_0xd592('0x36')]);_0x5f1997['attributes']=_[_0xd592('0x39')](_0x77fb5[_0xd592('0x3a')],qs[_0xd592('0x3b')](_0x9f8605['query'][_0xd592('0x3b')]));_0x5f1997[_0xd592('0x3c')]=_0x5f1997[_0xd592('0x3c')][_0xd592('0x3d')]?_0x5f1997['attributes']:_0x77fb5['model'];if(!_0x9f8605['query']['hasOwnProperty'](_0xd592('0x3e'))){_0x5f1997['limit']=qs['limit'](_0x9f8605['query'][_0xd592('0x20')]);_0x5f1997[_0xd592('0x1e')]=qs[_0xd592('0x1e')](_0x9f8605[_0xd592('0x36')][_0xd592('0x1e')]);}_0x5f1997[_0xd592('0x3f')]=qs[_0xd592('0x40')](_0x9f8605[_0xd592('0x36')][_0xd592('0x40')]);_0x5f1997['where']=qs[_0xd592('0x38')](_[_0xd592('0x41')](_0x9f8605[_0xd592('0x36')],_0x77fb5[_0xd592('0x38')]),_0x2b1474);if(_0x9f8605[_0xd592('0x36')][_0xd592('0x42')]){_0x5f1997[_0xd592('0x43')]=_[_0xd592('0x44')](_0x5f1997[_0xd592('0x43')],{'$or':_['map'](_0x2b1474,function(_0x4c54e4){if(_0x4c54e4[_0xd592('0x33')]!==_0xd592('0x45')){var _0x570402={};_0x570402[_0x4c54e4['name']]={'$like':'%'+_0x9f8605[_0xd592('0x36')][_0xd592('0x42')]+'%'};return _0x570402;}})});}_0x5f1997=_[_0xd592('0x44')]({},_0x5f1997,_0x9f8605[_0xd592('0x46')]);var _0x50ef99={'where':_0x5f1997[_0xd592('0x43')]};return db[_0xd592('0x30')][_0xd592('0x21')](_0x50ef99)[_0xd592('0x28')](function(_0x4175e2){_0x1ee179[_0xd592('0x21')]=_0x4175e2;if(_0x9f8605['query'][_0xd592('0x47')]){_0x5f1997[_0xd592('0x48')]=[{'all':!![]}];}return db[_0xd592('0x30')]['findAll'](_0x5f1997);})[_0xd592('0x28')](function(_0x1e3d74){_0x1ee179[_0xd592('0x49')]=_0x1e3d74;return _0x1ee179;})['then'](respondWithFilteredResult(_0x21ef07,_0x5f1997))[_0xd592('0x4a')](handleError(_0x21ef07,null));};exports[_0xd592('0x4b')]=function(_0x537351,_0x30fa7d){var _0x129db5={'raw':!![],'where':{'id':_0x537351[_0xd592('0x4c')]['id']}},_0x702ece={};_0x702ece['model']=_['keys'](db[_0xd592('0x30')]['rawAttributes']);_0x702ece[_0xd592('0x36')]=_['keys'](_0x537351[_0xd592('0x36')]);_0x702ece[_0xd592('0x38')]=_['intersection'](_0x702ece[_0xd592('0x3a')],_0x702ece[_0xd592('0x36')]);_0x129db5[_0xd592('0x3c')]=_[_0xd592('0x39')](_0x702ece[_0xd592('0x3a')],qs[_0xd592('0x3b')](_0x537351['query'][_0xd592('0x3b')]));_0x129db5[_0xd592('0x3c')]=_0x129db5[_0xd592('0x3c')][_0xd592('0x3d')]?_0x129db5['attributes']:_0x702ece[_0xd592('0x3a')];if(_0x537351[_0xd592('0x36')][_0xd592('0x47')]){_0x129db5[_0xd592('0x48')]=[{'all':!![]}];}_0x129db5=_['merge']({},_0x129db5,_0x537351['options']);return db[_0xd592('0x30')][_0xd592('0x4d')](_0x129db5)[_0xd592('0x28')](handleEntityNotFound(_0x30fa7d,null))['then'](respondWithResult(_0x30fa7d,null))[_0xd592('0x4a')](handleError(_0x30fa7d,null));};exports[_0xd592('0x4e')]=function(_0x30e771,_0x19a95f){return db['FaxTransferReport']['create'](_0x30e771[_0xd592('0x4f')],{})['then'](respondWithResult(_0x19a95f,0xc9))[_0xd592('0x4a')](handleError(_0x19a95f,null));};exports[_0xd592('0x27')]=function(_0x17b203,_0x3a656e){if(_0x17b203[_0xd592('0x4f')]['id']){delete _0x17b203['body']['id'];}return db[_0xd592('0x30')][_0xd592('0x4d')]({'where':{'id':_0x17b203['params']['id']}})[_0xd592('0x28')](handleEntityNotFound(_0x3a656e,null))['then'](saveUpdates(_0x17b203['body'],null))[_0xd592('0x28')](respondWithResult(_0x3a656e,null))[_0xd592('0x4a')](handleError(_0x3a656e,null));};exports[_0xd592('0x29')]=function(_0x16b4c7,_0x4eefd1){return db[_0xd592('0x30')][_0xd592('0x4d')]({'where':{'id':_0x16b4c7['params']['id']}})['then'](handleEntityNotFound(_0x4eefd1,null))['then'](removeEntity(_0x4eefd1,null))['catch'](handleError(_0x4eefd1,null));};exports[_0xd592('0x50')]=function(_0x486e12,_0x22cc87){return db[_0xd592('0x30')]['describe']()[_0xd592('0x28')](respondWithResult(_0x22cc87,null))[_0xd592('0x4a')](handleError(_0x22cc87,null));};
\ No newline at end of file
index e36971a..fcd3c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2964=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxTransferReport.attributes','exports','define','FaxTransferReport','uniqueid','lodash','util'];(function(_0x11d9ef,_0x155d23){var _0x342ad2=function(_0x4eb2fa){while(--_0x4eb2fa){_0x11d9ef['push'](_0x11d9ef['shift']());}};_0x342ad2(++_0x155d23);}(_0x2964,0x108));var _0x4296=function(_0x411ef3,_0x7f2d68){_0x411ef3=_0x411ef3-0x0;var _0x5f4b32=_0x2964[_0x411ef3];return _0x5f4b32;};'use strict';var _=require(_0x4296('0x0'));var util=require(_0x4296('0x1'));var logger=require(_0x4296('0x2'))(_0x4296('0x3'));var moment=require(_0x4296('0x4'));var BPromise=require(_0x4296('0x5'));var rp=require(_0x4296('0x6'));var fs=require('fs');var path=require(_0x4296('0x7'));var rimraf=require(_0x4296('0x8'));var config=require('../../config/environment');var attributes=require(_0x4296('0x9'));module[_0x4296('0xa')]=function(_0x23dfb1,_0x10a454){return _0x23dfb1[_0x4296('0xb')](_0x4296('0xc'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0x4296('0xd'),'fields':[_0x4296('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xac9a=['../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0xc1c067,_0xdbe378){var _0x183002=function(_0x5a1158){while(--_0x5a1158){_0xc1c067['push'](_0xc1c067['shift']());}};_0x183002(++_0xdbe378);}(_0xac9a,0x131));var _0xaac9=function(_0x21647f,_0x3b766f){_0x21647f=_0x21647f-0x0;var _0x16319a=_0xac9a[_0x21647f];return _0x16319a;};'use strict';var _=require(_0xaac9('0x0'));var util=require(_0xaac9('0x1'));var logger=require(_0xaac9('0x2'))(_0xaac9('0x3'));var moment=require('moment');var BPromise=require(_0xaac9('0x4'));var rp=require(_0xaac9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaac9('0x6'));var config=require(_0xaac9('0x7'));var attributes=require(_0xaac9('0x8'));module[_0xaac9('0x9')]=function(_0xe52744,_0x5bce73){return _0xe52744[_0xaac9('0xa')](_0xaac9('0xb'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xaac9('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6b327c0..00e4098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa5d=['bluebird','ioredis','../../config/utils','rpc','jayson/promise','client','http','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment'];(function(_0x17b8f0,_0x111631){var _0x4f13ff=function(_0x1cf77b){while(--_0x1cf77b){_0x17b8f0['push'](_0x17b8f0['shift']());}};_0x4f13ff(++_0x111631);}(_0xfa5d,0x1b5));var _0xdfa5=function(_0x527a40,_0x9b0161){_0x527a40=_0x527a40-0x0;var _0x170fa8=_0xfa5d[_0x527a40];return _0x170fa8;};'use strict';var _=require(_0xdfa5('0x0'));var util=require(_0xdfa5('0x1'));var moment=require(_0xdfa5('0x2'));var BPromise=require(_0xdfa5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdfa5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xdfa5('0x5'));var logger=require('../../config/logger')(_0xdfa5('0x6'));var config=require('../../config/environment');var jayson=require(_0xdfa5('0x7'));var client=jayson[_0xdfa5('0x8')][_0xdfa5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4520ce,_0x5c9e1f,_0x50dfe5){return new BPromise(function(_0x16bf3d,_0x4fa8ce){return client[_0xdfa5('0xa')](_0x4520ce,_0x50dfe5)[_0xdfa5('0xb')](function(_0x25e3b5){logger['info'](_0xdfa5('0xc'),_0x5c9e1f,_0xdfa5('0xd'));logger[_0xdfa5('0xe')](_0xdfa5('0xf'),_0x5c9e1f,_0xdfa5('0xd'),JSON[_0xdfa5('0x10')](_0x25e3b5));if(_0x25e3b5['error']){if(_0x25e3b5[_0xdfa5('0x11')][_0xdfa5('0x12')]===0x1f4){logger[_0xdfa5('0x11')](_0xdfa5('0xc'),_0x5c9e1f,_0x25e3b5['error'][_0xdfa5('0x13')]);return _0x4fa8ce(_0x25e3b5[_0xdfa5('0x11')][_0xdfa5('0x13')]);}logger[_0xdfa5('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0x5c9e1f,_0x25e3b5[_0xdfa5('0x11')][_0xdfa5('0x13')]);return _0x16bf3d(_0x25e3b5[_0xdfa5('0x11')]['message']);}else{logger[_0xdfa5('0x14')](_0xdfa5('0xc'),_0x5c9e1f,_0xdfa5('0xd'));_0x16bf3d(_0x25e3b5[_0xdfa5('0x15')][_0xdfa5('0x13')]);}})['catch'](function(_0x375363){logger['error'](_0xdfa5('0xc'),_0x5c9e1f,_0x375363);_0x4fa8ce(_0x375363);});});}
\ No newline at end of file
+var _0xad83=['result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0xad83,0x7a));var _0x3ad8=function(_0x38a52b,_0x4021e6){_0x38a52b=_0x38a52b-0x0;var _0x16f000=_0xad83[_0x38a52b];return _0x16f000;};'use strict';var _=require('lodash');var util=require(_0x3ad8('0x0'));var moment=require(_0x3ad8('0x1'));var BPromise=require(_0x3ad8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3ad8('0x3'))['db'];var utils=require(_0x3ad8('0x4'));var logger=require(_0x3ad8('0x5'))(_0x3ad8('0x6'));var config=require(_0x3ad8('0x7'));var jayson=require(_0x3ad8('0x8'));var client=jayson[_0x3ad8('0x9')][_0x3ad8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x261c25,_0x51821d,_0x56d192){return new BPromise(function(_0x3ee12b,_0x2480e5){return client[_0x3ad8('0xb')](_0x261c25,_0x56d192)[_0x3ad8('0xc')](function(_0x493f00){logger[_0x3ad8('0xd')](_0x3ad8('0xe'),_0x51821d,_0x3ad8('0xf'));logger[_0x3ad8('0x10')](_0x3ad8('0x11'),_0x51821d,_0x3ad8('0xf'),JSON[_0x3ad8('0x12')](_0x493f00));if(_0x493f00[_0x3ad8('0x13')]){if(_0x493f00[_0x3ad8('0x13')][_0x3ad8('0x14')]===0x1f4){logger[_0x3ad8('0x13')](_0x3ad8('0xe'),_0x51821d,_0x493f00['error'][_0x3ad8('0x15')]);return _0x2480e5(_0x493f00[_0x3ad8('0x13')][_0x3ad8('0x15')]);}logger['error'](_0x3ad8('0xe'),_0x51821d,_0x493f00[_0x3ad8('0x13')]['message']);return _0x3ee12b(_0x493f00[_0x3ad8('0x13')][_0x3ad8('0x15')]);}else{logger[_0x3ad8('0xd')](_0x3ad8('0xe'),_0x51821d,'request\x20sent');_0x3ee12b(_0x493f00[_0x3ad8('0x16')][_0x3ad8('0x15')]);}})[_0x3ad8('0x17')](function(_0x465540){logger[_0x3ad8('0x13')](_0x3ad8('0xe'),_0x51821d,_0x465540);_0x2480e5(_0x465540);});});}
\ No newline at end of file
index 713c6d2..59bfa23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19b8=['/describe','describe','/:id','show','post','create','update','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x19b8,0xc7));var _0x819b=function(_0xab9b5,_0x4a9adb){_0xab9b5=_0xab9b5-0x0;var _0x46954b=_0x19b8[_0xab9b5];return _0x46954b;};'use strict';var multer=require(_0x819b('0x0'));var util=require(_0x819b('0x1'));var path=require('path');var timeout=require(_0x819b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x819b('0x3'));var auth=require(_0x819b('0x4'));var interaction=require(_0x819b('0x5'));var config=require(_0x819b('0x6'));var controller=require(_0x819b('0x7'));router['get']('/',auth[_0x819b('0x8')](),controller[_0x819b('0x9')]);router['get'](_0x819b('0xa'),auth[_0x819b('0x8')](),controller[_0x819b('0xb')]);router['get'](_0x819b('0xc'),auth[_0x819b('0x8')](),controller[_0x819b('0xd')]);router[_0x819b('0xe')]('/',auth[_0x819b('0x8')](),controller[_0x819b('0xf')]);router['put'](_0x819b('0xc'),auth[_0x819b('0x8')](),controller[_0x819b('0x10')]);router[_0x819b('0x11')](_0x819b('0xc'),auth[_0x819b('0x8')](),controller['destroy']);module[_0x819b('0x12')]=router;
\ No newline at end of file
+var _0x65f6=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x10d61a,_0x5890d8){var _0x590c38=function(_0x4048d2){while(--_0x4048d2){_0x10d61a['push'](_0x10d61a['shift']());}};_0x590c38(++_0x5890d8);}(_0x65f6,0xd5));var _0x665f=function(_0x83ba9a,_0x49fc6d){_0x83ba9a=_0x83ba9a-0x0;var _0x3b7e93=_0x65f6[_0x83ba9a];return _0x3b7e93;};'use strict';var multer=require(_0x665f('0x0'));var util=require(_0x665f('0x1'));var path=require(_0x665f('0x2'));var timeout=require(_0x665f('0x3'));var express=require(_0x665f('0x4'));var router=express[_0x665f('0x5')]();var fs_extra=require(_0x665f('0x6'));var auth=require(_0x665f('0x7'));var interaction=require(_0x665f('0x8'));var config=require(_0x665f('0x9'));var controller=require('./faxTransferReport.controller');router[_0x665f('0xa')]('/',auth[_0x665f('0xb')](),controller[_0x665f('0xc')]);router['get'](_0x665f('0xd'),auth[_0x665f('0xb')](),controller[_0x665f('0xe')]);router[_0x665f('0xa')](_0x665f('0xf'),auth[_0x665f('0xb')](),controller[_0x665f('0x10')]);router[_0x665f('0x11')]('/',auth['isAuthenticated'](),controller[_0x665f('0x12')]);router[_0x665f('0x13')](_0x665f('0xf'),auth[_0x665f('0xb')](),controller[_0x665f('0x14')]);router['delete'](_0x665f('0xf'),auth[_0x665f('0xb')](),controller[_0x665f('0x15')]);module['exports']=router;
\ No newline at end of file
index 3db802e..c4a9cf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbce9=['isAuthenticated','index','show','/:id/configurations','/:id/fields','post','addConfiguration','/:id','update','delete','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','get'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xbce9,0x83));var _0x9bce=function(_0x1d98a3,_0x28e1b8){_0x1d98a3=_0x1d98a3-0x0;var _0x4b8246=_0xbce9[_0x1d98a3];return _0x4b8246;};'use strict';var multer=require(_0x9bce('0x0'));var util=require(_0x9bce('0x1'));var path=require(_0x9bce('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9bce('0x3')]();var fs_extra=require(_0x9bce('0x4'));var auth=require(_0x9bce('0x5'));var interaction=require(_0x9bce('0x6'));var config=require('../../config/environment');var controller=require(_0x9bce('0x7'));router[_0x9bce('0x8')]('/',auth[_0x9bce('0x9')](),controller[_0x9bce('0xa')]);router[_0x9bce('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x9bce('0xb')]);router[_0x9bce('0x8')](_0x9bce('0xc'),auth[_0x9bce('0x9')](),controller['getConfigurations']);router[_0x9bce('0x8')](_0x9bce('0xd'),auth[_0x9bce('0x9')](),controller['getFields']);router[_0x9bce('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x9bce('0xc'),auth[_0x9bce('0x9')](),controller[_0x9bce('0xf')]);router['put'](_0x9bce('0x10'),auth[_0x9bce('0x9')](),controller[_0x9bce('0x11')]);router[_0x9bce('0x12')]('/:id',auth[_0x9bce('0x9')](),controller[_0x9bce('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x46fc=['post','create','/:id/configurations','addConfiguration','put','update','delete','destroy','connect-timeout','express','Router','fs-extra','./intDeskAccount.controller','isAuthenticated','index','get','/:id','getFields'];(function(_0x543795,_0x41c078){var _0x18824d=function(_0x4f8819){while(--_0x4f8819){_0x543795['push'](_0x543795['shift']());}};_0x18824d(++_0x41c078);}(_0x46fc,0x74));var _0xc46f=function(_0x369829,_0x5149ad){_0x369829=_0x369829-0x0;var _0xb9c603=_0x46fc[_0x369829];return _0xb9c603;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xc46f('0x0'));var express=require(_0xc46f('0x1'));var router=express[_0xc46f('0x2')]();var fs_extra=require(_0xc46f('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc46f('0x4'));router['get']('/',auth[_0xc46f('0x5')](),controller[_0xc46f('0x6')]);router[_0xc46f('0x7')](_0xc46f('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xc46f('0x7')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router[_0xc46f('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc46f('0x9')]);router[_0xc46f('0xa')]('/',auth[_0xc46f('0x5')](),controller[_0xc46f('0xb')]);router[_0xc46f('0xa')](_0xc46f('0xc'),auth['isAuthenticated'](),controller[_0xc46f('0xd')]);router[_0xc46f('0xe')](_0xc46f('0x8'),auth[_0xc46f('0x5')](),controller[_0xc46f('0xf')]);router[_0xc46f('0x10')](_0xc46f('0x8'),auth[_0xc46f('0x5')](),controller[_0xc46f('0x11')]);module['exports']=router;
\ No newline at end of file
index fd941b3..80bfd3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd858=['newTab','integrationTab','sequelize','exports','STRING','ENUM','basic'];(function(_0x4d7040,_0xd0677f){var _0x2c36e5=function(_0x489193){while(--_0x489193){_0x4d7040['push'](_0x4d7040['shift']());}};_0x2c36e5(++_0xd0677f);}(_0xd858,0x12f));var _0x8d85=function(_0x436a1f,_0x1d5720){_0x436a1f=_0x436a1f-0x0;var _0x53092e=_0xd858[_0x436a1f];return _0x53092e;};'use strict';var Sequelize=require(_0x8d85('0x0'));module[_0x8d85('0x1')]={'name':{'type':Sequelize[_0x8d85('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x8d85('0x2')]},'remoteUri':{'type':Sequelize[_0x8d85('0x2')]},'authType':{'type':Sequelize[_0x8d85('0x3')](_0x8d85('0x4')),'defaultValue':_0x8d85('0x4')},'password':{'type':Sequelize[_0x8d85('0x2')]},'consumerKey':{'type':Sequelize[_0x8d85('0x2')]},'consumerSecret':{'type':Sequelize[_0x8d85('0x2')]},'token':{'type':Sequelize[_0x8d85('0x2')]},'tokenSecret':{'type':Sequelize[_0x8d85('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x8d85('0x3')]('integrationTab',_0x8d85('0x5')),'defaultValue':_0x8d85('0x6')}};
\ No newline at end of file
+var _0x9165=['basic','integrationTab','newTab','exports','STRING','ENUM'];(function(_0x313c96,_0x3cee6e){var _0x522f53=function(_0x8961e){while(--_0x8961e){_0x313c96['push'](_0x313c96['shift']());}};_0x522f53(++_0x3cee6e);}(_0x9165,0x10b));var _0x5916=function(_0x14cbf0,_0x251be3){_0x14cbf0=_0x14cbf0-0x0;var _0x5405c1=_0x9165[_0x14cbf0];return _0x5405c1;};'use strict';var Sequelize=require('sequelize');module[_0x5916('0x0')]={'name':{'type':Sequelize[_0x5916('0x1')]},'description':{'type':Sequelize[_0x5916('0x1')]},'username':{'type':Sequelize[_0x5916('0x1')]},'remoteUri':{'type':Sequelize[_0x5916('0x1')]},'authType':{'type':Sequelize[_0x5916('0x2')](_0x5916('0x3')),'defaultValue':'basic'},'password':{'type':Sequelize[_0x5916('0x1')]},'consumerKey':{'type':Sequelize[_0x5916('0x1')]},'consumerSecret':{'type':Sequelize[_0x5916('0x1')]},'token':{'type':Sequelize[_0x5916('0x1')]},'tokenSecret':{'type':Sequelize[_0x5916('0x1')]},'serverUrl':{'type':Sequelize[_0x5916('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x5916('0x2')](_0x5916('0x4'),_0x5916('0x5')),'defaultValue':_0x5916('0x4')}};
\ No newline at end of file
index 7e00b2d..c54e04b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0b1=['moment','bluebird','util','path','to-csv','ejs','fs-extra','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','../../components/integrations/configuration','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','DeskAccount','include','findAll','rows','catch','show','includeAll','options','find','create','body','params','findOne','getConfigurations','addConfiguration','Subjects','channel','DeskField','Descriptions','priority','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','GET','format','application/json','basic','headers','Authorization','%s:%s','username','base64','concat','_embedded','entries','active','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','test','Wrong\x20credentials','rimraf','fast-json-patch'];(function(_0x2d8462,_0x3e6b71){var _0x335cd6=function(_0x39e024){while(--_0x39e024){_0x2d8462['push'](_0x2d8462['shift']());}};_0x335cd6(++_0x3e6b71);}(_0xf0b1,0x1c2));var _0x1f0b=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xf0b1[_0x1035c1];return _0x308d67;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1f0b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1f0b('0x1'));var rp=require('request-promise');var moment=require(_0x1f0b('0x2'));var BPromise=require(_0x1f0b('0x3'));var Mustache=require('mustache');var util=require(_0x1f0b('0x4'));var path=require(_0x1f0b('0x5'));var sox=require('sox');var csv=require(_0x1f0b('0x6'));var ejs=require(_0x1f0b('0x7'));var fs=require('fs');var fs_extra=require(_0x1f0b('0x8'));var _=require('lodash');var squel=require(_0x1f0b('0x9'));var crypto=require('crypto');var jsforce=require(_0x1f0b('0xa'));var deskjs=require(_0x1f0b('0xb'));var toCsv=require(_0x1f0b('0x6'));var querystring=require(_0x1f0b('0xc'));var Papa=require(_0x1f0b('0xd'));var Redis=require(_0x1f0b('0xe'));var authService=require(_0x1f0b('0xf'));var qs=require(_0x1f0b('0x10'));var as=require(_0x1f0b('0x11'));var hardwareService=require(_0x1f0b('0x12'));var logger=require('../../config/logger')(_0x1f0b('0x13'));var utils=require(_0x1f0b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x1f0b('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x1f0b('0x16'));function respondWithStatusCode(_0x29b88e,_0x4642f7){_0x4642f7=_0x4642f7||0xcc;return function(_0x273db0){if(_0x273db0){return _0x29b88e[_0x1f0b('0x17')](_0x4642f7);}return _0x29b88e[_0x1f0b('0x18')](_0x4642f7)[_0x1f0b('0x19')]();};}function respondWithResult(_0x1f83c7,_0x1916c2){_0x1916c2=_0x1916c2||0xc8;return function(_0x223d62){if(_0x223d62){return _0x1f83c7[_0x1f0b('0x18')](_0x1916c2)[_0x1f0b('0x1a')](_0x223d62);}};}function respondWithFilteredResult(_0x5baad0,_0x24db4d){return function(_0x30ba5b){if(_0x30ba5b){var _0x315130=typeof _0x24db4d['offset']==='undefined'&&typeof _0x24db4d['limit']===_0x1f0b('0x1b');var _0x38118d=_0x30ba5b[_0x1f0b('0x1c')];var _0x778c32=_0x315130?0x0:_0x24db4d[_0x1f0b('0x1d')];var _0x299e02=_0x315130?_0x30ba5b['count']:_0x24db4d[_0x1f0b('0x1d')]+_0x24db4d[_0x1f0b('0x1e')];var _0x33f8aa;if(_0x299e02>=_0x38118d){_0x299e02=_0x38118d;_0x33f8aa=0xc8;}else{_0x33f8aa=0xce;}_0x5baad0['status'](_0x33f8aa);return _0x5baad0[_0x1f0b('0x1f')](_0x1f0b('0x20'),_0x778c32+'-'+_0x299e02+'/'+_0x38118d)[_0x1f0b('0x1a')](_0x30ba5b);}return null;};}function patchUpdates(_0x2f849b){return function(_0x196d50){try{jsonpatch[_0x1f0b('0x21')](_0x196d50,_0x2f849b,!![]);}catch(_0x26a041){return BPromise[_0x1f0b('0x22')](_0x26a041);}return _0x196d50[_0x1f0b('0x23')]();};}function saveUpdates(_0x78752e,_0x47a081){return function(_0xee2ef9){if(_0xee2ef9){return _0xee2ef9[_0x1f0b('0x24')](_0x78752e)[_0x1f0b('0x25')](function(_0x35864e){return _0x35864e;});}return null;};}function removeEntity(_0x73acdb,_0x393205){return function(_0x5d2ff8){if(_0x5d2ff8){return _0x5d2ff8[_0x1f0b('0x26')]()[_0x1f0b('0x25')](function(){_0x73acdb[_0x1f0b('0x18')](0xcc)[_0x1f0b('0x19')]();});}};}function handleEntityNotFound(_0xc9291f,_0x276bbf){return function(_0x3e1544){if(!_0x3e1544){_0xc9291f['sendStatus'](0x194);}return _0x3e1544;};}function handleError(_0x439d49,_0x4d7cd4){_0x4d7cd4=_0x4d7cd4||0x1f4;return function(_0x2411f1){logger[_0x1f0b('0x27')](_0x2411f1[_0x1f0b('0x28')]);if(_0x2411f1[_0x1f0b('0x29')]){delete _0x2411f1['name'];}_0x439d49[_0x1f0b('0x18')](_0x4d7cd4)['send'](_0x2411f1);};}exports['index']=function(_0x563c4b,_0x2938ee){var _0x7275aa={},_0x19f9ab={},_0x2c8d40={'count':0x0,'rows':[]};var _0x2fd17b=_['map'](db['DeskAccount'][_0x1f0b('0x2a')],function(_0x2a1b8d){return{'name':_0x2a1b8d[_0x1f0b('0x2b')],'type':_0x2a1b8d[_0x1f0b('0x2c')][_0x1f0b('0x2d')]};});_0x19f9ab[_0x1f0b('0x2e')]=_[_0x1f0b('0x2f')](_0x2fd17b,'name');_0x19f9ab[_0x1f0b('0x30')]=_[_0x1f0b('0x31')](_0x563c4b[_0x1f0b('0x30')]);_0x19f9ab[_0x1f0b('0x32')]=_[_0x1f0b('0x33')](_0x19f9ab['model'],_0x19f9ab[_0x1f0b('0x30')]);_0x7275aa[_0x1f0b('0x34')]=_[_0x1f0b('0x33')](_0x19f9ab[_0x1f0b('0x2e')],qs[_0x1f0b('0x35')](_0x563c4b['query'][_0x1f0b('0x35')]));_0x7275aa['attributes']=_0x7275aa[_0x1f0b('0x34')][_0x1f0b('0x36')]?_0x7275aa['attributes']:_0x19f9ab[_0x1f0b('0x2e')];if(!_0x563c4b[_0x1f0b('0x30')][_0x1f0b('0x37')](_0x1f0b('0x38'))){_0x7275aa[_0x1f0b('0x1e')]=qs[_0x1f0b('0x1e')](_0x563c4b[_0x1f0b('0x30')][_0x1f0b('0x1e')]);_0x7275aa[_0x1f0b('0x1d')]=qs[_0x1f0b('0x1d')](_0x563c4b[_0x1f0b('0x30')]['offset']);}_0x7275aa[_0x1f0b('0x39')]=qs[_0x1f0b('0x3a')](_0x563c4b[_0x1f0b('0x30')][_0x1f0b('0x3a')]);_0x7275aa[_0x1f0b('0x3b')]=qs[_0x1f0b('0x32')](_['pick'](_0x563c4b['query'],_0x19f9ab['filters']),_0x2fd17b);if(_0x563c4b[_0x1f0b('0x30')][_0x1f0b('0x3c')]){_0x7275aa[_0x1f0b('0x3b')]=_['merge'](_0x7275aa['where'],{'$or':_['map'](_0x2fd17b,function(_0x2ce6dd){if(_0x2ce6dd['type']!==_0x1f0b('0x3d')){var _0x127f8c={};_0x127f8c[_0x2ce6dd[_0x1f0b('0x29')]]={'$like':'%'+_0x563c4b[_0x1f0b('0x30')][_0x1f0b('0x3c')]+'%'};return _0x127f8c;}})});}_0x7275aa=_[_0x1f0b('0x3e')]({},_0x7275aa,_0x563c4b['options']);var _0xc3ce8={'where':_0x7275aa[_0x1f0b('0x3b')]};return db[_0x1f0b('0x3f')][_0x1f0b('0x1c')](_0xc3ce8)[_0x1f0b('0x25')](function(_0x2be4b7){_0x2c8d40['count']=_0x2be4b7;if(_0x563c4b[_0x1f0b('0x30')]['includeAll']){_0x7275aa[_0x1f0b('0x40')]=[{'all':!![]}];}return db[_0x1f0b('0x3f')][_0x1f0b('0x41')](_0x7275aa);})[_0x1f0b('0x25')](function(_0x2c91b){_0x2c8d40[_0x1f0b('0x42')]=_0x2c91b;return _0x2c8d40;})[_0x1f0b('0x25')](respondWithFilteredResult(_0x2938ee,_0x7275aa))[_0x1f0b('0x43')](handleError(_0x2938ee,null));};exports[_0x1f0b('0x44')]=function(_0x162517,_0x44ea8e){var _0x48c28e={'raw':![],'where':{'id':_0x162517['params']['id']}},_0x55f7c9={};_0x55f7c9[_0x1f0b('0x2e')]=_['keys'](db[_0x1f0b('0x3f')][_0x1f0b('0x2a')]);_0x55f7c9[_0x1f0b('0x30')]=_['keys'](_0x162517[_0x1f0b('0x30')]);_0x55f7c9[_0x1f0b('0x32')]=_[_0x1f0b('0x33')](_0x55f7c9['model'],_0x55f7c9[_0x1f0b('0x30')]);_0x48c28e['attributes']=_[_0x1f0b('0x33')](_0x55f7c9['model'],qs[_0x1f0b('0x35')](_0x162517[_0x1f0b('0x30')]['fields']));_0x48c28e[_0x1f0b('0x34')]=_0x48c28e[_0x1f0b('0x34')][_0x1f0b('0x36')]?_0x48c28e[_0x1f0b('0x34')]:_0x55f7c9[_0x1f0b('0x2e')];if(_0x162517['query'][_0x1f0b('0x45')]){_0x48c28e['include']=[{'all':!![]}];}_0x48c28e=_[_0x1f0b('0x3e')]({},_0x48c28e,_0x162517[_0x1f0b('0x46')]);return db[_0x1f0b('0x3f')][_0x1f0b('0x47')](_0x48c28e)[_0x1f0b('0x25')](handleEntityNotFound(_0x44ea8e,null))[_0x1f0b('0x25')](respondWithResult(_0x44ea8e,null))[_0x1f0b('0x43')](handleError(_0x44ea8e,null));};exports[_0x1f0b('0x48')]=function(_0x52c921,_0x26a4a6){return db[_0x1f0b('0x3f')][_0x1f0b('0x48')](_0x52c921[_0x1f0b('0x49')],{})[_0x1f0b('0x25')](respondWithResult(_0x26a4a6,0xc9))[_0x1f0b('0x43')](handleError(_0x26a4a6,null));};exports[_0x1f0b('0x24')]=function(_0x2d8e34,_0x4286a6){if(_0x2d8e34[_0x1f0b('0x49')]['id']){delete _0x2d8e34[_0x1f0b('0x49')]['id'];}return db['DeskAccount'][_0x1f0b('0x47')]({'where':{'id':_0x2d8e34[_0x1f0b('0x4a')]['id']}})[_0x1f0b('0x25')](handleEntityNotFound(_0x4286a6,null))[_0x1f0b('0x25')](saveUpdates(_0x2d8e34[_0x1f0b('0x49')],null))[_0x1f0b('0x25')](respondWithResult(_0x4286a6,null))[_0x1f0b('0x43')](handleError(_0x4286a6,null));};exports[_0x1f0b('0x26')]=function(_0x531d00,_0x2fba02){return db[_0x1f0b('0x3f')]['find']({'where':{'id':_0x531d00[_0x1f0b('0x4a')]['id']}})[_0x1f0b('0x25')](handleEntityNotFound(_0x2fba02,null))[_0x1f0b('0x25')](removeEntity(_0x2fba02,null))[_0x1f0b('0x43')](handleError(_0x2fba02,null));};exports['getConfigurations']=function(_0x20b7a2,_0x1ceeb8,_0x3a6a6e){var _0x3485d5={};var _0x3afea9={};var _0xae51e9;var _0x11b1f5;return db[_0x1f0b('0x3f')][_0x1f0b('0x4b')]({'where':{'id':_0x20b7a2[_0x1f0b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1ceeb8,null))[_0x1f0b('0x25')](function(_0x362f2b){if(_0x362f2b){_0xae51e9=_0x362f2b;_0x3afea9['model']=_[_0x1f0b('0x31')](db['DeskConfiguration'][_0x1f0b('0x2a')]);_0x3afea9[_0x1f0b('0x30')]=_[_0x1f0b('0x31')](_0x20b7a2[_0x1f0b('0x30')]);_0x3afea9[_0x1f0b('0x32')]=_[_0x1f0b('0x33')](_0x3afea9[_0x1f0b('0x2e')],_0x3afea9[_0x1f0b('0x30')]);_0x3485d5[_0x1f0b('0x34')]=_[_0x1f0b('0x33')](_0x3afea9[_0x1f0b('0x2e')],qs[_0x1f0b('0x35')](_0x20b7a2[_0x1f0b('0x30')]['fields']));_0x3485d5[_0x1f0b('0x34')]=_0x3485d5[_0x1f0b('0x34')]['length']?_0x3485d5['attributes']:_0x3afea9['model'];_0x3485d5[_0x1f0b('0x39')]=qs[_0x1f0b('0x3a')](_0x20b7a2[_0x1f0b('0x30')]['sort']);_0x3485d5[_0x1f0b('0x3b')]=qs[_0x1f0b('0x32')](_['pick'](_0x20b7a2['query'],_0x3afea9['filters']));if(_0x20b7a2[_0x1f0b('0x30')][_0x1f0b('0x3c')]){_0x3485d5[_0x1f0b('0x3b')]=_[_0x1f0b('0x3e')](_0x3485d5[_0x1f0b('0x3b')],{'$or':_[_0x1f0b('0x2f')](_0x3485d5['attributes'],function(_0x2488e4){var _0x526c5b={};_0x526c5b[_0x2488e4]={'$like':'%'+_0x20b7a2[_0x1f0b('0x30')][_0x1f0b('0x3c')]+'%'};return _0x526c5b;})});}_0x3485d5=_['merge']({},_0x3485d5,_0x20b7a2[_0x1f0b('0x46')]);return _0xae51e9[_0x1f0b('0x4c')](_0x3485d5);}})[_0x1f0b('0x25')](function(_0x4dc474){if(_0x4dc474){_0x11b1f5=_0x4dc474['length'];if(!_0x20b7a2[_0x1f0b('0x30')][_0x1f0b('0x37')](_0x1f0b('0x38'))){_0x3485d5[_0x1f0b('0x1e')]=qs[_0x1f0b('0x1e')](_0x20b7a2[_0x1f0b('0x30')][_0x1f0b('0x1e')]);_0x3485d5[_0x1f0b('0x1d')]=qs[_0x1f0b('0x1d')](_0x20b7a2['query'][_0x1f0b('0x1d')]);}return _0xae51e9[_0x1f0b('0x4c')](_0x3485d5);}})['then'](function(_0x18fb53){if(_0x18fb53){return _0x18fb53?{'count':_0x11b1f5,'rows':_0x18fb53}:null;}})[_0x1f0b('0x25')](respondWithResult(_0x1ceeb8,null))[_0x1f0b('0x43')](handleError(_0x1ceeb8,null));};exports[_0x1f0b('0x4d')]=function(_0xc66dc5,_0x8d89ad,_0x5e0b23){if(_0xc66dc5['body']['id']){delete _0xc66dc5[_0x1f0b('0x49')]['id'];}return db[_0x1f0b('0x3f')][_0x1f0b('0x4b')]({'where':{'id':_0xc66dc5['params']['id']}})[_0x1f0b('0x25')](handleEntityNotFound(_0x8d89ad,null))['then'](function(_0x27599b){if(_0x27599b){_0xc66dc5[_0x1f0b('0x49')]['AccountId']=_0x27599b['id'];_0xc66dc5[_0x1f0b('0x49')][_0x1f0b('0x4e')]=integrations['getSubjects'](_0xc66dc5[_0x1f0b('0x49')][_0x1f0b('0x4f')],_0xc66dc5[_0x1f0b('0x49')][_0x1f0b('0x2c')]);_0xc66dc5[_0x1f0b('0x49')]['Descriptions']=integrations['getDescriptions'](_0xc66dc5[_0x1f0b('0x49')][_0x1f0b('0x4f')],_0xc66dc5[_0x1f0b('0x49')][_0x1f0b('0x2c')]);return db['DeskConfiguration'][_0x1f0b('0x48')](_0xc66dc5[_0x1f0b('0x49')],{'include':[{'model':db[_0x1f0b('0x50')],'as':_0x1f0b('0x4e')},{'model':db[_0x1f0b('0x50')],'as':_0x1f0b('0x51')}]});}return null;})[_0x1f0b('0x25')](respondWithResult(_0x8d89ad,null))[_0x1f0b('0x43')](handleError(_0x8d89ad,null));};exports['getFields']=function(_0x107d60,_0x11b5bd,_0x3e0d9b){var _0x5aa5af=[{'name':_0x1f0b('0x52'),'label':_0x1f0b('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 _0xbfe1ba='';return db['DeskAccount']['findOne']({'where':{'id':_0x107d60[_0x1f0b('0x4a')]['id']},'attributes':['id',_0x1f0b('0x53'),_0x1f0b('0x54'),'username',_0x1f0b('0x55'),_0x1f0b('0x56'),_0x1f0b('0x57'),_0x1f0b('0x58'),_0x1f0b('0x59')]})[_0x1f0b('0x25')](handleEntityNotFound(_0x11b5bd,null))[_0x1f0b('0x25')](function(_0x4a9195){if(_0x4a9195){_0xbfe1ba=_0x4a9195['remoteUri'];var _0x541521=_0xbfe1ba[_0x1f0b('0x5a')](-0x1);if(_0x541521==='/'){_0xbfe1ba=_0xbfe1ba[_0x1f0b('0x5b')](0x0,_0xbfe1ba[_0x1f0b('0x5c')](_0x541521));}var _0x1667fd={'method':_0x1f0b('0x5d'),'uri':util[_0x1f0b('0x5e')]('%s/custom_fields',_0xbfe1ba),'headers':{'Content-Type':_0x1f0b('0x5f'),'Accept':_0x1f0b('0x5f')},'json':!![]};if(_0x4a9195['authType']===_0x1f0b('0x60')){_0x1667fd[_0x1f0b('0x61')][_0x1f0b('0x62')]=util[_0x1f0b('0x5e')]('Basic\x20%s',new Buffer(util['format'](_0x1f0b('0x63'),_0x4a9195[_0x1f0b('0x64')],_0x4a9195[_0x1f0b('0x55')]))['toString'](_0x1f0b('0x65')));}return rp(_0x1667fd)[_0x1f0b('0x25')](function(_0x1f9382){return _0x5aa5af[_0x1f0b('0x66')](_[_0x1f0b('0x2f')](_0x1f9382[_0x1f0b('0x67')][_0x1f0b('0x68')],function(_0x9bd9){return{'id':_0x9bd9[_0x1f0b('0x29')],'name':_0x9bd9['name'],'type':_0x9bd9[_0x1f0b('0x2c')],'active':_0x9bd9[_0x1f0b('0x69')],'label':_0x9bd9[_0x1f0b('0x6a')],'custom':!![]};}));});}})['then'](function(_0x385366){return{'count':_0x385366[_0x1f0b('0x36')],'rows':_0x385366};})[_0x1f0b('0x25')](respondWithResult(_0x11b5bd,null))[_0x1f0b('0x43')](function(_0x129b1d){var _0x1fc197=_0x107d60[_0x1f0b('0x30')]['test']?0x1f4:_0x129b1d[_0x1f0b('0x6b')]||0x1f4;logger[_0x1f0b('0x27')](_0x1f0b('0x6c'),_0x1f0b('0x6d'),_0x1fc197,JSON['stringify'](_0x129b1d));delete _0x129b1d[_0x1f0b('0x29')];if(_0x1fc197===0x191){_0x1fc197=0x190;}_0x11b5bd[_0x1f0b('0x18')](_0x1fc197)[_0x1f0b('0x6e')](_0x107d60['query'][_0x1f0b('0x6f')]?{'message':_0x1f0b('0x70'),'statusCode':_0x129b1d[_0x1f0b('0x6b')]}:_0x129b1d);});};
\ No newline at end of file
+var _0xa89e=['sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','offset','undefined','limit','set','Content-Range','apply','reject','save','destroy','then','error','stack','index','map','DeskAccount','rawAttributes','fieldName','type','key','name','query','keys','filters','model','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','create','body','find','params','getConfigurations','findOne','DeskConfiguration','length','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','DeskField','priority','authType','username','password','consumerKey','consumerSecret','remoteUri','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','basic','headers','Authorization','%s:%s','toString','concat','_embedded','active','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path'];(function(_0x21691a,_0x3e3351){var _0x744ba6=function(_0x1aa423){while(--_0x1aa423){_0x21691a['push'](_0x21691a['shift']());}};_0x744ba6(++_0x3e3351);}(_0xa89e,0x156));var _0xea89=function(_0x16cff5,_0x291c69){_0x16cff5=_0x16cff5-0x0;var _0x5d377c=_0xa89e[_0x16cff5];return _0x5d377c;};'use strict';var emlformat=require(_0xea89('0x0'));var rimraf=require(_0xea89('0x1'));var zipdir=require(_0xea89('0x2'));var jsonpatch=require(_0xea89('0x3'));var rp=require('request-promise');var moment=require(_0xea89('0x4'));var BPromise=require(_0xea89('0x5'));var Mustache=require(_0xea89('0x6'));var util=require(_0xea89('0x7'));var path=require(_0xea89('0x8'));var sox=require(_0xea89('0x9'));var csv=require(_0xea89('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xea89('0xb'));var squel=require(_0xea89('0xc'));var crypto=require(_0xea89('0xd'));var jsforce=require(_0xea89('0xe'));var deskjs=require(_0xea89('0xf'));var toCsv=require(_0xea89('0xa'));var querystring=require(_0xea89('0x10'));var Papa=require(_0xea89('0x11'));var Redis=require(_0xea89('0x12'));var authService=require(_0xea89('0x13'));var qs=require(_0xea89('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xea89('0x15'));var logger=require(_0xea89('0x16'))(_0xea89('0x17'));var utils=require(_0xea89('0x18'));var config=require(_0xea89('0x19'));var licenseUtil=require(_0xea89('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0xea89('0x1b'));function respondWithStatusCode(_0x2e145c,_0x1210ef){_0x1210ef=_0x1210ef||0xcc;return function(_0x3cde04){if(_0x3cde04){return _0x2e145c[_0xea89('0x1c')](_0x1210ef);}return _0x2e145c['status'](_0x1210ef)[_0xea89('0x1d')]();};}function respondWithResult(_0x2b6bce,_0x1e35e8){_0x1e35e8=_0x1e35e8||0xc8;return function(_0x24e0d8){if(_0x24e0d8){return _0x2b6bce[_0xea89('0x1e')](_0x1e35e8)['json'](_0x24e0d8);}};}function respondWithFilteredResult(_0x432392,_0x2acb78){return function(_0x363269){if(_0x363269){var _0x26dc41=typeof _0x2acb78[_0xea89('0x1f')]===_0xea89('0x20')&&typeof _0x2acb78[_0xea89('0x21')]===_0xea89('0x20');var _0x4b2500=_0x363269['count'];var _0x25f2dc=_0x26dc41?0x0:_0x2acb78[_0xea89('0x1f')];var _0x550005=_0x26dc41?_0x363269['count']:_0x2acb78[_0xea89('0x1f')]+_0x2acb78[_0xea89('0x21')];var _0x205d11;if(_0x550005>=_0x4b2500){_0x550005=_0x4b2500;_0x205d11=0xc8;}else{_0x205d11=0xce;}_0x432392[_0xea89('0x1e')](_0x205d11);return _0x432392[_0xea89('0x22')](_0xea89('0x23'),_0x25f2dc+'-'+_0x550005+'/'+_0x4b2500)['json'](_0x363269);}return null;};}function patchUpdates(_0x393034){return function(_0x38640b){try{jsonpatch[_0xea89('0x24')](_0x38640b,_0x393034,!![]);}catch(_0x3ef5a0){return BPromise[_0xea89('0x25')](_0x3ef5a0);}return _0x38640b[_0xea89('0x26')]();};}function saveUpdates(_0x439cc6,_0x14308d){return function(_0x5203ad){if(_0x5203ad){return _0x5203ad['update'](_0x439cc6)['then'](function(_0x2b88ef){return _0x2b88ef;});}return null;};}function removeEntity(_0x59463b,_0x5e2b23){return function(_0x585460){if(_0x585460){return _0x585460[_0xea89('0x27')]()[_0xea89('0x28')](function(){_0x59463b[_0xea89('0x1e')](0xcc)[_0xea89('0x1d')]();});}};}function handleEntityNotFound(_0x4d0983,_0x5f06c0){return function(_0x489989){if(!_0x489989){_0x4d0983[_0xea89('0x1c')](0x194);}return _0x489989;};}function handleError(_0x5aaa59,_0xa77a90){_0xa77a90=_0xa77a90||0x1f4;return function(_0x5b1ee8){logger[_0xea89('0x29')](_0x5b1ee8[_0xea89('0x2a')]);if(_0x5b1ee8['name']){delete _0x5b1ee8['name'];}_0x5aaa59[_0xea89('0x1e')](_0xa77a90)['send'](_0x5b1ee8);};}exports[_0xea89('0x2b')]=function(_0x4aef27,_0x3b5b09){var _0x21976e={},_0x4e18d8={},_0x35ae97={'count':0x0,'rows':[]};var _0x4e1146=_[_0xea89('0x2c')](db[_0xea89('0x2d')][_0xea89('0x2e')],function(_0x21110c){return{'name':_0x21110c[_0xea89('0x2f')],'type':_0x21110c[_0xea89('0x30')][_0xea89('0x31')]};});_0x4e18d8['model']=_[_0xea89('0x2c')](_0x4e1146,_0xea89('0x32'));_0x4e18d8[_0xea89('0x33')]=_[_0xea89('0x34')](_0x4aef27[_0xea89('0x33')]);_0x4e18d8[_0xea89('0x35')]=_['intersection'](_0x4e18d8[_0xea89('0x36')],_0x4e18d8['query']);_0x21976e[_0xea89('0x37')]=_[_0xea89('0x38')](_0x4e18d8[_0xea89('0x36')],qs[_0xea89('0x39')](_0x4aef27[_0xea89('0x33')][_0xea89('0x39')]));_0x21976e[_0xea89('0x37')]=_0x21976e[_0xea89('0x37')]['length']?_0x21976e[_0xea89('0x37')]:_0x4e18d8[_0xea89('0x36')];if(!_0x4aef27['query']['hasOwnProperty'](_0xea89('0x3a'))){_0x21976e[_0xea89('0x21')]=qs[_0xea89('0x21')](_0x4aef27[_0xea89('0x33')]['limit']);_0x21976e[_0xea89('0x1f')]=qs['offset'](_0x4aef27[_0xea89('0x33')][_0xea89('0x1f')]);}_0x21976e[_0xea89('0x3b')]=qs[_0xea89('0x3c')](_0x4aef27[_0xea89('0x33')][_0xea89('0x3c')]);_0x21976e[_0xea89('0x3d')]=qs[_0xea89('0x35')](_[_0xea89('0x3e')](_0x4aef27[_0xea89('0x33')],_0x4e18d8[_0xea89('0x35')]),_0x4e1146);if(_0x4aef27['query'][_0xea89('0x3f')]){_0x21976e[_0xea89('0x3d')]=_[_0xea89('0x40')](_0x21976e[_0xea89('0x3d')],{'$or':_[_0xea89('0x2c')](_0x4e1146,function(_0x5871f){if(_0x5871f[_0xea89('0x30')]!==_0xea89('0x41')){var _0x5381c7={};_0x5381c7[_0x5871f[_0xea89('0x32')]]={'$like':'%'+_0x4aef27[_0xea89('0x33')][_0xea89('0x3f')]+'%'};return _0x5381c7;}})});}_0x21976e=_[_0xea89('0x40')]({},_0x21976e,_0x4aef27[_0xea89('0x42')]);var _0x29ea1e={'where':_0x21976e[_0xea89('0x3d')]};return db['DeskAccount']['count'](_0x29ea1e)[_0xea89('0x28')](function(_0x17214d){_0x35ae97[_0xea89('0x43')]=_0x17214d;if(_0x4aef27[_0xea89('0x33')][_0xea89('0x44')]){_0x21976e[_0xea89('0x45')]=[{'all':!![]}];}return db[_0xea89('0x2d')][_0xea89('0x46')](_0x21976e);})[_0xea89('0x28')](function(_0xd65164){_0x35ae97[_0xea89('0x47')]=_0xd65164;return _0x35ae97;})[_0xea89('0x28')](respondWithFilteredResult(_0x3b5b09,_0x21976e))[_0xea89('0x48')](handleError(_0x3b5b09,null));};exports[_0xea89('0x49')]=function(_0x47491b,_0x7b9714){var _0x41f637={'raw':![],'where':{'id':_0x47491b['params']['id']}},_0x2c73b5={};_0x2c73b5[_0xea89('0x36')]=_[_0xea89('0x34')](db[_0xea89('0x2d')][_0xea89('0x2e')]);_0x2c73b5[_0xea89('0x33')]=_[_0xea89('0x34')](_0x47491b[_0xea89('0x33')]);_0x2c73b5[_0xea89('0x35')]=_[_0xea89('0x38')](_0x2c73b5[_0xea89('0x36')],_0x2c73b5['query']);_0x41f637[_0xea89('0x37')]=_[_0xea89('0x38')](_0x2c73b5[_0xea89('0x36')],qs[_0xea89('0x39')](_0x47491b[_0xea89('0x33')][_0xea89('0x39')]));_0x41f637[_0xea89('0x37')]=_0x41f637['attributes']['length']?_0x41f637['attributes']:_0x2c73b5['model'];if(_0x47491b[_0xea89('0x33')]['includeAll']){_0x41f637[_0xea89('0x45')]=[{'all':!![]}];}_0x41f637=_[_0xea89('0x40')]({},_0x41f637,_0x47491b[_0xea89('0x42')]);return db['DeskAccount']['find'](_0x41f637)[_0xea89('0x28')](handleEntityNotFound(_0x7b9714,null))[_0xea89('0x28')](respondWithResult(_0x7b9714,null))[_0xea89('0x48')](handleError(_0x7b9714,null));};exports[_0xea89('0x4a')]=function(_0x1bd499,_0x491ebd){return db[_0xea89('0x2d')][_0xea89('0x4a')](_0x1bd499[_0xea89('0x4b')],{})[_0xea89('0x28')](respondWithResult(_0x491ebd,0xc9))['catch'](handleError(_0x491ebd,null));};exports['update']=function(_0x579581,_0x2b1329){if(_0x579581[_0xea89('0x4b')]['id']){delete _0x579581[_0xea89('0x4b')]['id'];}return db[_0xea89('0x2d')]['find']({'where':{'id':_0x579581['params']['id']}})['then'](handleEntityNotFound(_0x2b1329,null))['then'](saveUpdates(_0x579581[_0xea89('0x4b')],null))[_0xea89('0x28')](respondWithResult(_0x2b1329,null))[_0xea89('0x48')](handleError(_0x2b1329,null));};exports['destroy']=function(_0x55368a,_0x1cf98d){return db[_0xea89('0x2d')][_0xea89('0x4c')]({'where':{'id':_0x55368a[_0xea89('0x4d')]['id']}})[_0xea89('0x28')](handleEntityNotFound(_0x1cf98d,null))[_0xea89('0x28')](removeEntity(_0x1cf98d,null))[_0xea89('0x48')](handleError(_0x1cf98d,null));};exports[_0xea89('0x4e')]=function(_0xa31169,_0x193229,_0x48d069){var _0x45726c={};var _0x578f5a={};var _0x1971f8;var _0x531dfb;return db[_0xea89('0x2d')][_0xea89('0x4f')]({'where':{'id':_0xa31169[_0xea89('0x4d')]['id']}})[_0xea89('0x28')](handleEntityNotFound(_0x193229,null))[_0xea89('0x28')](function(_0x1303f1){if(_0x1303f1){_0x1971f8=_0x1303f1;_0x578f5a[_0xea89('0x36')]=_[_0xea89('0x34')](db[_0xea89('0x50')][_0xea89('0x2e')]);_0x578f5a[_0xea89('0x33')]=_[_0xea89('0x34')](_0xa31169['query']);_0x578f5a[_0xea89('0x35')]=_['intersection'](_0x578f5a[_0xea89('0x36')],_0x578f5a[_0xea89('0x33')]);_0x45726c[_0xea89('0x37')]=_[_0xea89('0x38')](_0x578f5a[_0xea89('0x36')],qs[_0xea89('0x39')](_0xa31169[_0xea89('0x33')][_0xea89('0x39')]));_0x45726c['attributes']=_0x45726c[_0xea89('0x37')]['length']?_0x45726c[_0xea89('0x37')]:_0x578f5a[_0xea89('0x36')];_0x45726c['order']=qs['sort'](_0xa31169['query'][_0xea89('0x3c')]);_0x45726c[_0xea89('0x3d')]=qs[_0xea89('0x35')](_[_0xea89('0x3e')](_0xa31169[_0xea89('0x33')],_0x578f5a['filters']));if(_0xa31169['query'][_0xea89('0x3f')]){_0x45726c[_0xea89('0x3d')]=_[_0xea89('0x40')](_0x45726c[_0xea89('0x3d')],{'$or':_[_0xea89('0x2c')](_0x45726c[_0xea89('0x37')],function(_0x70b503){var _0x1d0d6e={};_0x1d0d6e[_0x70b503]={'$like':'%'+_0xa31169[_0xea89('0x33')][_0xea89('0x3f')]+'%'};return _0x1d0d6e;})});}_0x45726c=_['merge']({},_0x45726c,_0xa31169['options']);return _0x1971f8[_0xea89('0x4e')](_0x45726c);}})['then'](function(_0x2fcfb9){if(_0x2fcfb9){_0x531dfb=_0x2fcfb9[_0xea89('0x51')];if(!_0xa31169[_0xea89('0x33')][_0xea89('0x52')](_0xea89('0x3a'))){_0x45726c[_0xea89('0x21')]=qs[_0xea89('0x21')](_0xa31169[_0xea89('0x33')][_0xea89('0x21')]);_0x45726c[_0xea89('0x1f')]=qs[_0xea89('0x1f')](_0xa31169[_0xea89('0x33')]['offset']);}return _0x1971f8[_0xea89('0x4e')](_0x45726c);}})[_0xea89('0x28')](function(_0x3e6243){if(_0x3e6243){return _0x3e6243?{'count':_0x531dfb,'rows':_0x3e6243}:null;}})[_0xea89('0x28')](respondWithResult(_0x193229,null))[_0xea89('0x48')](handleError(_0x193229,null));};exports[_0xea89('0x53')]=function(_0xbce1f5,_0x23fa58,_0xa7ef1a){if(_0xbce1f5['body']['id']){delete _0xbce1f5[_0xea89('0x4b')]['id'];}return db[_0xea89('0x2d')][_0xea89('0x4f')]({'where':{'id':_0xbce1f5[_0xea89('0x4d')]['id']}})[_0xea89('0x28')](handleEntityNotFound(_0x23fa58,null))[_0xea89('0x28')](function(_0x230196){if(_0x230196){_0xbce1f5[_0xea89('0x4b')][_0xea89('0x54')]=_0x230196['id'];_0xbce1f5[_0xea89('0x4b')][_0xea89('0x55')]=integrations[_0xea89('0x56')](_0xbce1f5['body']['channel'],_0xbce1f5[_0xea89('0x4b')][_0xea89('0x30')]);_0xbce1f5[_0xea89('0x4b')][_0xea89('0x57')]=integrations[_0xea89('0x58')](_0xbce1f5[_0xea89('0x4b')]['channel'],_0xbce1f5['body'][_0xea89('0x30')]);return db[_0xea89('0x50')][_0xea89('0x4a')](_0xbce1f5['body'],{'include':[{'model':db[_0xea89('0x59')],'as':_0xea89('0x55')},{'model':db[_0xea89('0x59')],'as':_0xea89('0x57')}]});}return null;})[_0xea89('0x28')](respondWithResult(_0x23fa58,null))[_0xea89('0x48')](handleError(_0x23fa58,null));};exports['getFields']=function(_0x107d4e,_0x402a2d,_0x204213){var _0x284447=[{'name':_0xea89('0x5a'),'label':_0xea89('0x5a'),'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 _0x38f546='';return db[_0xea89('0x2d')][_0xea89('0x4f')]({'where':{'id':_0x107d4e[_0xea89('0x4d')]['id']},'attributes':['id','remoteUri',_0xea89('0x5b'),_0xea89('0x5c'),_0xea89('0x5d'),_0xea89('0x5e'),_0xea89('0x5f'),'token','tokenSecret']})[_0xea89('0x28')](handleEntityNotFound(_0x402a2d,null))[_0xea89('0x28')](function(_0x342a8e){if(_0x342a8e){_0x38f546=_0x342a8e[_0xea89('0x60')];var _0xdbd3e=_0x38f546[_0xea89('0x61')](-0x1);if(_0xdbd3e==='/'){_0x38f546=_0x38f546[_0xea89('0x62')](0x0,_0x38f546[_0xea89('0x63')](_0xdbd3e));}var _0x2d4dde={'method':'GET','uri':util[_0xea89('0x64')](_0xea89('0x65'),_0x38f546),'headers':{'Content-Type':_0xea89('0x66'),'Accept':'application/json'},'json':!![]};if(_0x342a8e['authType']===_0xea89('0x67')){_0x2d4dde[_0xea89('0x68')][_0xea89('0x69')]=util[_0xea89('0x64')]('Basic\x20%s',new Buffer(util['format'](_0xea89('0x6a'),_0x342a8e[_0xea89('0x5c')],_0x342a8e[_0xea89('0x5d')]))[_0xea89('0x6b')]('base64'));}return rp(_0x2d4dde)[_0xea89('0x28')](function(_0x53412d){return _0x284447[_0xea89('0x6c')](_['map'](_0x53412d[_0xea89('0x6d')]['entries'],function(_0x15ca3e){return{'id':_0x15ca3e[_0xea89('0x32')],'name':_0x15ca3e[_0xea89('0x32')],'type':_0x15ca3e['type'],'active':_0x15ca3e[_0xea89('0x6e')],'label':_0x15ca3e['label'],'custom':!![]};}));});}})[_0xea89('0x28')](function(_0x3aa7f4){return{'count':_0x3aa7f4[_0xea89('0x51')],'rows':_0x3aa7f4};})[_0xea89('0x28')](respondWithResult(_0x402a2d,null))[_0xea89('0x48')](function(_0x21ae51){var _0x1ecb2e=_0x107d4e['query']['test']?0x1f4:_0x21ae51[_0xea89('0x6f')]||0x1f4;logger[_0xea89('0x29')](_0xea89('0x70'),_0xea89('0x71'),_0x1ecb2e,JSON[_0xea89('0x72')](_0x21ae51));delete _0x21ae51[_0xea89('0x32')];if(_0x1ecb2e===0x191){_0x1ecb2e=0x190;}_0x402a2d[_0xea89('0x1e')](_0x1ecb2e)[_0xea89('0x73')](_0x107d4e['query']['test']?{'message':_0xea89('0x74'),'statusCode':_0x21ae51['statusCode']}:_0x21ae51);});};
\ No newline at end of file
index 67dda25..e58681f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cda=['request-promise','path','rimraf','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x4bf8ca,_0x1f6333){var _0x181a12=function(_0x1da78b){while(--_0x1da78b){_0x4bf8ca['push'](_0x4bf8ca['shift']());}};_0x181a12(++_0x1f6333);}(_0x2cda,0xb1));var _0xa2cd=function(_0x436622,_0x4674f9){_0x436622=_0x436622-0x0;var _0x3210c5=_0x2cda[_0x436622];return _0x3210c5;};'use strict';var _=require(_0xa2cd('0x0'));var util=require(_0xa2cd('0x1'));var logger=require(_0xa2cd('0x2'))(_0xa2cd('0x3'));var moment=require(_0xa2cd('0x4'));var BPromise=require('bluebird');var rp=require(_0xa2cd('0x5'));var fs=require('fs');var path=require(_0xa2cd('0x6'));var rimraf=require(_0xa2cd('0x7'));var config=require('../../config/environment');var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xa2cd('0x8'));module[_0xa2cd('0x9')]=function(_0x2714aa,_0xd02b9d){return _0x2714aa[_0xa2cd('0xa')](_0xa2cd('0xb'),attributes,{'tableName':_0xa2cd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f90=['path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','api','moment','bluebird'];(function(_0x50528e,_0x5ae7de){var _0xb53771=function(_0x171db7){while(--_0x171db7){_0x50528e['push'](_0x50528e['shift']());}};_0xb53771(++_0x5ae7de);}(_0x3f90,0xbf));var _0x03f9=function(_0x16eddd,_0x56256d){_0x16eddd=_0x16eddd-0x0;var _0x4739cf=_0x3f90[_0x16eddd];return _0x4739cf;};'use strict';var _=require(_0x03f9('0x0'));var util=require(_0x03f9('0x1'));var logger=require('../../config/logger')(_0x03f9('0x2'));var moment=require(_0x03f9('0x3'));var BPromise=require(_0x03f9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x03f9('0x5'));var rimraf=require(_0x03f9('0x6'));var config=require(_0x03f9('0x7'));var attributes=require(_0x03f9('0x8'));var integrations=require(_0x03f9('0x9'));module[_0x03f9('0xa')]=function(_0x32d848,_0x55ee3d){return _0x32d848[_0x03f9('0xb')](_0x03f9('0xc'),attributes,{'tableName':_0x03f9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ed6851..cf54c43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc96=['request','then','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','info','message','catch','GetDeskAccount','DeskAccount','findAll','options','where','attributes','limit','include','map','model','find','raw','ShowDeskAccount','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http'];(function(_0x10548e,_0x80eaff){var _0x540aa4=function(_0x277e0e){while(--_0x277e0e){_0x10548e['push'](_0x10548e['shift']());}};_0x540aa4(++_0x80eaff);}(_0xbc96,0x74));var _0x6bc9=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xbc96[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x6bc9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6bc9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6bc9('0x2'))['db'];var utils=require(_0x6bc9('0x3'));var logger=require(_0x6bc9('0x4'))(_0x6bc9('0x5'));var config=require(_0x6bc9('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6bc9('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4d122a,_0x55d4e7,_0x3b53f2){return new BPromise(function(_0x2da24c,_0x2320f2){return client[_0x6bc9('0x8')](_0x4d122a,_0x3b53f2)[_0x6bc9('0x9')](function(_0x28059f){logger['info'](_0x6bc9('0xa'),_0x55d4e7,_0x6bc9('0xb'));logger[_0x6bc9('0xc')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x55d4e7,_0x6bc9('0xb'),JSON[_0x6bc9('0xd')](_0x28059f));if(_0x28059f[_0x6bc9('0xe')]){if(_0x28059f['error']['code']===0x1f4){logger[_0x6bc9('0xe')](_0x6bc9('0xa'),_0x55d4e7,_0x28059f['error']['message']);return _0x2320f2(_0x28059f[_0x6bc9('0xe')]['message']);}logger['error'](_0x6bc9('0xa'),_0x55d4e7,_0x28059f[_0x6bc9('0xe')]['message']);return _0x2da24c(_0x28059f[_0x6bc9('0xe')]['message']);}else{logger[_0x6bc9('0xf')](_0x6bc9('0xa'),_0x55d4e7,_0x6bc9('0xb'));_0x2da24c(_0x28059f['result'][_0x6bc9('0x10')]);}})[_0x6bc9('0x11')](function(_0x3b5c43){logger[_0x6bc9('0xe')]('DeskAccount,\x20%s,\x20%s',_0x55d4e7,_0x3b5c43);_0x2320f2(_0x3b5c43);});});}exports[_0x6bc9('0x12')]=function(_0x241416){var _0x1b18b1=this;return new Promise(function(_0x57ba77,_0x492a24){return db[_0x6bc9('0x13')][_0x6bc9('0x14')]({'raw':_0x241416[_0x6bc9('0x15')]?_0x241416[_0x6bc9('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x241416[_0x6bc9('0x15')]?_0x241416[_0x6bc9('0x15')][_0x6bc9('0x16')]||null:null,'attributes':_0x241416[_0x6bc9('0x15')]?_0x241416[_0x6bc9('0x15')][_0x6bc9('0x17')]||null:null,'limit':_0x241416[_0x6bc9('0x15')]?_0x241416[_0x6bc9('0x15')][_0x6bc9('0x18')]||null:null,'include':_0x241416[_0x6bc9('0x15')]?_0x241416['options'][_0x6bc9('0x19')]?_[_0x6bc9('0x1a')](_0x241416[_0x6bc9('0x15')][_0x6bc9('0x19')],function(_0x5e367f){return{'model':db[_0x5e367f['model']],'as':_0x5e367f['as'],'attributes':_0x5e367f[_0x6bc9('0x17')],'include':_0x5e367f[_0x6bc9('0x19')]?_[_0x6bc9('0x1a')](_0x5e367f[_0x6bc9('0x19')],function(_0x2a329c){return{'model':db[_0x2a329c[_0x6bc9('0x1b')]],'as':_0x2a329c['as'],'attributes':_0x2a329c[_0x6bc9('0x17')],'include':_0x2a329c[_0x6bc9('0x19')]?_[_0x6bc9('0x1a')](_0x2a329c[_0x6bc9('0x19')],function(_0x82d7a1){return{'model':db[_0x82d7a1['model']],'as':_0x82d7a1['as'],'attributes':_0x82d7a1[_0x6bc9('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11da0a){logger['info']('GetDeskAccount',_0x241416);logger[_0x6bc9('0xc')](_0x6bc9('0x12'),_0x241416,JSON['stringify'](_0x11da0a));_0x57ba77(_0x11da0a);})['catch'](function(_0x1d4249){logger[_0x6bc9('0xe')](_0x6bc9('0x12'),_0x1d4249['message'],_0x241416);_0x492a24(_0x1b18b1[_0x6bc9('0xe')](0x1f4,_0x1d4249['message']));});});};exports['ShowDeskAccount']=function(_0x1dc845){var _0x28e5aa=this;return new Promise(function(_0x20bf7e,_0x325132){return db[_0x6bc9('0x13')][_0x6bc9('0x1c')]({'raw':_0x1dc845['options']?_0x1dc845[_0x6bc9('0x15')][_0x6bc9('0x1d')]===undefined?!![]:![]:!![],'where':_0x1dc845[_0x6bc9('0x15')]?_0x1dc845[_0x6bc9('0x15')][_0x6bc9('0x16')]||null:null,'attributes':_0x1dc845[_0x6bc9('0x15')]?_0x1dc845[_0x6bc9('0x15')]['attributes']||null:null,'include':_0x1dc845[_0x6bc9('0x15')]?_0x1dc845[_0x6bc9('0x15')]['include']?_[_0x6bc9('0x1a')](_0x1dc845[_0x6bc9('0x15')][_0x6bc9('0x19')],function(_0x475d24){return{'model':db[_0x475d24[_0x6bc9('0x1b')]],'as':_0x475d24['as'],'attributes':_0x475d24[_0x6bc9('0x17')],'include':_0x475d24[_0x6bc9('0x19')]?_[_0x6bc9('0x1a')](_0x475d24['include'],function(_0x3577b1){return{'model':db[_0x3577b1[_0x6bc9('0x1b')]],'as':_0x3577b1['as'],'attributes':_0x3577b1[_0x6bc9('0x17')],'include':_0x3577b1[_0x6bc9('0x19')]?_[_0x6bc9('0x1a')](_0x3577b1[_0x6bc9('0x19')],function(_0x373f37){return{'model':db[_0x373f37[_0x6bc9('0x1b')]],'as':_0x373f37['as'],'attributes':_0x373f37[_0x6bc9('0x17')]};}):[]};}):[]};}):[]:[]})[_0x6bc9('0x9')](function(_0x307823){logger[_0x6bc9('0xf')](_0x6bc9('0x1e'),_0x1dc845);logger[_0x6bc9('0xc')](_0x6bc9('0x1e'),_0x1dc845,JSON[_0x6bc9('0xd')](_0x307823));_0x20bf7e(_0x307823);})[_0x6bc9('0x11')](function(_0xe75f7a){logger[_0x6bc9('0xe')](_0x6bc9('0x1e'),_0xe75f7a[_0x6bc9('0x10')],_0x1dc845);_0x325132(_0x28e5aa[_0x6bc9('0xe')](0x1f4,_0xe75f7a[_0x6bc9('0x10')]));});});};
\ No newline at end of file
+var _0x6809=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','findAll','options','raw','where','attributes','limit','include','map','model','GetDeskAccount','stringify','ShowDeskAccount','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x12ffa0,_0x50f8b){var _0xafdb35=function(_0x5c6e22){while(--_0x5c6e22){_0x12ffa0['push'](_0x12ffa0['shift']());}};_0xafdb35(++_0x50f8b);}(_0x6809,0x17b));var _0x9680=function(_0x56f7e2,_0x145392){_0x56f7e2=_0x56f7e2-0x0;var _0x36240b=_0x6809[_0x56f7e2];return _0x36240b;};'use strict';var _=require('lodash');var util=require(_0x9680('0x0'));var moment=require(_0x9680('0x1'));var BPromise=require(_0x9680('0x2'));var rs=require(_0x9680('0x3'));var fs=require('fs');var Redis=require(_0x9680('0x4'));var db=require(_0x9680('0x5'))['db'];var utils=require(_0x9680('0x6'));var logger=require(_0x9680('0x7'))(_0x9680('0x8'));var config=require(_0x9680('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9680('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3760ae,_0x313abb,_0x37d856){return new BPromise(function(_0x39415f,_0x4c00cb){return client[_0x9680('0xb')](_0x3760ae,_0x37d856)[_0x9680('0xc')](function(_0x5d5e40){logger[_0x9680('0xd')](_0x9680('0xe'),_0x313abb,_0x9680('0xf'));logger[_0x9680('0x10')](_0x9680('0x11'),_0x313abb,_0x9680('0xf'),JSON['stringify'](_0x5d5e40));if(_0x5d5e40['error']){if(_0x5d5e40[_0x9680('0x12')][_0x9680('0x13')]===0x1f4){logger['error'](_0x9680('0xe'),_0x313abb,_0x5d5e40[_0x9680('0x12')][_0x9680('0x14')]);return _0x4c00cb(_0x5d5e40[_0x9680('0x12')][_0x9680('0x14')]);}logger[_0x9680('0x12')](_0x9680('0xe'),_0x313abb,_0x5d5e40[_0x9680('0x12')][_0x9680('0x14')]);return _0x39415f(_0x5d5e40[_0x9680('0x12')]['message']);}else{logger[_0x9680('0xd')](_0x9680('0xe'),_0x313abb,_0x9680('0xf'));_0x39415f(_0x5d5e40['result'][_0x9680('0x14')]);}})[_0x9680('0x15')](function(_0x2e22ea){logger[_0x9680('0x12')](_0x9680('0xe'),_0x313abb,_0x2e22ea);_0x4c00cb(_0x2e22ea);});});}exports['GetDeskAccount']=function(_0x2a917e){var _0x2f3c67=this;return new Promise(function(_0x1519bf,_0x3a19b9){return db['DeskAccount'][_0x9680('0x16')]({'raw':_0x2a917e[_0x9680('0x17')]?_0x2a917e[_0x9680('0x17')][_0x9680('0x18')]===undefined?!![]:![]:!![],'where':_0x2a917e[_0x9680('0x17')]?_0x2a917e[_0x9680('0x17')][_0x9680('0x19')]||null:null,'attributes':_0x2a917e[_0x9680('0x17')]?_0x2a917e[_0x9680('0x17')][_0x9680('0x1a')]||null:null,'limit':_0x2a917e[_0x9680('0x17')]?_0x2a917e[_0x9680('0x17')][_0x9680('0x1b')]||null:null,'include':_0x2a917e[_0x9680('0x17')]?_0x2a917e[_0x9680('0x17')][_0x9680('0x1c')]?_['map'](_0x2a917e[_0x9680('0x17')][_0x9680('0x1c')],function(_0x15b5a1){return{'model':db[_0x15b5a1['model']],'as':_0x15b5a1['as'],'attributes':_0x15b5a1[_0x9680('0x1a')],'include':_0x15b5a1[_0x9680('0x1c')]?_[_0x9680('0x1d')](_0x15b5a1[_0x9680('0x1c')],function(_0xfdec58){return{'model':db[_0xfdec58[_0x9680('0x1e')]],'as':_0xfdec58['as'],'attributes':_0xfdec58[_0x9680('0x1a')],'include':_0xfdec58[_0x9680('0x1c')]?_['map'](_0xfdec58[_0x9680('0x1c')],function(_0x3e9037){return{'model':db[_0x3e9037[_0x9680('0x1e')]],'as':_0x3e9037['as'],'attributes':_0x3e9037[_0x9680('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x470924){logger['info'](_0x9680('0x1f'),_0x2a917e);logger['debug'](_0x9680('0x1f'),_0x2a917e,JSON[_0x9680('0x20')](_0x470924));_0x1519bf(_0x470924);})[_0x9680('0x15')](function(_0x4107ec){logger['error'](_0x9680('0x1f'),_0x4107ec[_0x9680('0x14')],_0x2a917e);_0x3a19b9(_0x2f3c67[_0x9680('0x12')](0x1f4,_0x4107ec['message']));});});};exports[_0x9680('0x21')]=function(_0x59e69b){var _0x43f04d=this;return new Promise(function(_0x4cc596,_0x984951){return db['DeskAccount'][_0x9680('0x22')]({'raw':_0x59e69b['options']?_0x59e69b[_0x9680('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x59e69b[_0x9680('0x17')]?_0x59e69b[_0x9680('0x17')][_0x9680('0x19')]||null:null,'attributes':_0x59e69b[_0x9680('0x17')]?_0x59e69b['options'][_0x9680('0x1a')]||null:null,'include':_0x59e69b[_0x9680('0x17')]?_0x59e69b['options'][_0x9680('0x1c')]?_[_0x9680('0x1d')](_0x59e69b[_0x9680('0x17')][_0x9680('0x1c')],function(_0x54ea27){return{'model':db[_0x54ea27[_0x9680('0x1e')]],'as':_0x54ea27['as'],'attributes':_0x54ea27['attributes'],'include':_0x54ea27[_0x9680('0x1c')]?_[_0x9680('0x1d')](_0x54ea27['include'],function(_0xd6ac44){return{'model':db[_0xd6ac44[_0x9680('0x1e')]],'as':_0xd6ac44['as'],'attributes':_0xd6ac44[_0x9680('0x1a')],'include':_0xd6ac44[_0x9680('0x1c')]?_['map'](_0xd6ac44[_0x9680('0x1c')],function(_0x1f56b0){return{'model':db[_0x1f56b0['model']],'as':_0x1f56b0['as'],'attributes':_0x1f56b0['attributes']};}):[]};}):[]};}):[]:[]})[_0x9680('0xc')](function(_0x48080f){logger['info'](_0x9680('0x21'),_0x59e69b);logger['debug'](_0x9680('0x21'),_0x59e69b,JSON[_0x9680('0x20')](_0x48080f));_0x4cc596(_0x48080f);})['catch'](function(_0x20f058){logger[_0x9680('0x12')](_0x9680('0x21'),_0x20f058['message'],_0x59e69b);_0x984951(_0x43f04d['error'](0x1f4,_0x20f058[_0x9680('0x14')]));});});};
\ No newline at end of file
index 1c14ea8..0414651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x4eaa4c,_0x2f7422){var _0x15aec6=function(_0x23efc9){while(--_0x23efc9){_0x4eaa4c['push'](_0x4eaa4c['shift']());}};_0x15aec6(++_0x2f7422);}(_0x55ca,0x126));var _0xa55c=function(_0xfcb0f1,_0x3f2d57){_0xfcb0f1=_0xfcb0f1-0x0;var _0x4ed14e=_0x55ca[_0xfcb0f1];return _0x4ed14e;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
+var _0xedd9=['getTags','post','create','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x59df9c,_0xbf3b67){var _0x4834f6=function(_0x41b740){while(--_0x41b740){_0x59df9c['push'](_0x59df9c['shift']());}};_0x4834f6(++_0xbf3b67);}(_0xedd9,0xfc));var _0x9edd=function(_0x23b323,_0x3ed936){_0x23b323=_0x23b323-0x0;var _0x588b38=_0xedd9[_0x23b323];return _0x588b38;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['getFields']);router[_0x9edd('0x9')]('/:id/subjects',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['get'](_0x9edd('0x10'),auth[_0x9edd('0xa')](),controller['getDescriptions']);router[_0x9edd('0x9')](_0x9edd('0x11'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')]('/:id/tags',auth[_0x9edd('0xa')](),controller[_0x9edd('0x15')]);router[_0x9edd('0x16')](_0x9edd('0xc'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x17')]);router[_0x9edd('0x18')](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x19')]);module[_0x9edd('0x1a')]=router;
\ No newline at end of file
index 2d77cd7..f8fb2d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x296d=['STRING','sequelize','exports'];(function(_0x4d674b,_0x176474){var _0x535a1f=function(_0xac7726){while(--_0xac7726){_0x4d674b['push'](_0x4d674b['shift']());}};_0x535a1f(++_0x176474);}(_0x296d,0x1d5));var _0xd296=function(_0x2cb111,_0x3c5f83){_0x2cb111=_0x2cb111-0x0;var _0x52d31d=_0x296d[_0x2cb111];return _0x52d31d;};'use strict';var Sequelize=require(_0xd296('0x0'));module[_0xd296('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd296('0x2')]}};
\ No newline at end of file
+var _0xa972=['sequelize','STRING'];(function(_0x214bf9,_0x3623b7){var _0x4f6a0d=function(_0x2282c8){while(--_0x2282c8){_0x214bf9['push'](_0x214bf9['shift']());}};_0x4f6a0d(++_0x3623b7);}(_0xa972,0x9c));var _0x2a97=function(_0x2dd471,_0x51a6af){_0x2dd471=_0x2dd471-0x0;var _0x200f68=_0xa972[_0x2dd471];return _0x200f68;};'use strict';var Sequelize=require(_0x2a97('0x0'));module['exports']={'name':{'type':Sequelize[_0x2a97('0x1')]},'description':{'type':Sequelize[_0x2a97('0x1')]}};
\ No newline at end of file
index a6ce578..f337b6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b6f=['includeAll','include','findAll','rows','catch','show','params','options','find','create','body','findOne','filter','getFields','hasOwnProperty','getSubjects','getDescriptions','DeskField','getTags','Tag','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','DeskConfiguration'];(function(_0x21c87d,_0x49fc13){var _0x5f32aa=function(_0x11242b){while(--_0x11242b){_0x21c87d['push'](_0x21c87d['shift']());}};_0x5f32aa(++_0x49fc13);}(_0x7b6f,0x6c));var _0xf7b6=function(_0x124d74,_0x18eda2){_0x124d74=_0x124d74-0x0;var _0x46418e=_0x7b6f[_0x124d74];return _0x46418e;};'use strict';var emlformat=require(_0xf7b6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf7b6('0x1'));var jsonpatch=require(_0xf7b6('0x2'));var rp=require(_0xf7b6('0x3'));var moment=require(_0xf7b6('0x4'));var BPromise=require(_0xf7b6('0x5'));var Mustache=require(_0xf7b6('0x6'));var util=require('util');var path=require(_0xf7b6('0x7'));var sox=require(_0xf7b6('0x8'));var csv=require(_0xf7b6('0x9'));var ejs=require(_0xf7b6('0xa'));var fs=require('fs');var fs_extra=require(_0xf7b6('0xb'));var _=require(_0xf7b6('0xc'));var squel=require(_0xf7b6('0xd'));var crypto=require(_0xf7b6('0xe'));var jsforce=require(_0xf7b6('0xf'));var deskjs=require(_0xf7b6('0x10'));var toCsv=require(_0xf7b6('0x9'));var querystring=require('querystring');var Papa=require(_0xf7b6('0x11'));var Redis=require(_0xf7b6('0x12'));var authService=require(_0xf7b6('0x13'));var qs=require(_0xf7b6('0x14'));var as=require(_0xf7b6('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xf7b6('0x16'));var config=require(_0xf7b6('0x17'));var licenseUtil=require(_0xf7b6('0x18'));var db=require(_0xf7b6('0x19'))['db'];function respondWithStatusCode(_0x1b006d,_0x1e9659){_0x1e9659=_0x1e9659||0xcc;return function(_0x389d1f){if(_0x389d1f){return _0x1b006d[_0xf7b6('0x1a')](_0x1e9659);}return _0x1b006d['status'](_0x1e9659)[_0xf7b6('0x1b')]();};}function respondWithResult(_0x13731d,_0x207478){_0x207478=_0x207478||0xc8;return function(_0x115e88){if(_0x115e88){return _0x13731d[_0xf7b6('0x1c')](_0x207478)[_0xf7b6('0x1d')](_0x115e88);}};}function respondWithFilteredResult(_0x4fecfd,_0x4c28e7){return function(_0x59c95b){if(_0x59c95b){var _0x149b5c=typeof _0x4c28e7[_0xf7b6('0x1e')]==='undefined'&&typeof _0x4c28e7[_0xf7b6('0x1f')]==='undefined';var _0x27bd4a=_0x59c95b[_0xf7b6('0x20')];var _0x46b06d=_0x149b5c?0x0:_0x4c28e7[_0xf7b6('0x1e')];var _0x180f2b=_0x149b5c?_0x59c95b['count']:_0x4c28e7[_0xf7b6('0x1e')]+_0x4c28e7['limit'];var _0x20f441;if(_0x180f2b>=_0x27bd4a){_0x180f2b=_0x27bd4a;_0x20f441=0xc8;}else{_0x20f441=0xce;}_0x4fecfd[_0xf7b6('0x1c')](_0x20f441);return _0x4fecfd['set'](_0xf7b6('0x21'),_0x46b06d+'-'+_0x180f2b+'/'+_0x27bd4a)[_0xf7b6('0x1d')](_0x59c95b);}return null;};}function patchUpdates(_0x5d2e5a){return function(_0x6c148){try{jsonpatch[_0xf7b6('0x22')](_0x6c148,_0x5d2e5a,!![]);}catch(_0x327b2d){return BPromise[_0xf7b6('0x23')](_0x327b2d);}return _0x6c148[_0xf7b6('0x24')]();};}function saveUpdates(_0x18d8bd,_0x2ef7d2){return function(_0x1aeeb0){if(_0x1aeeb0){return _0x1aeeb0[_0xf7b6('0x25')](_0x18d8bd)[_0xf7b6('0x26')](function(_0x581d60){return _0x581d60;});}return null;};}function removeEntity(_0x3af939,_0x28d5f6){return function(_0x2e2d7b){if(_0x2e2d7b){return _0x2e2d7b[_0xf7b6('0x27')]()[_0xf7b6('0x26')](function(){_0x3af939[_0xf7b6('0x1c')](0xcc)[_0xf7b6('0x1b')]();});}};}function handleEntityNotFound(_0x174acb,_0x1d25b0){return function(_0x5a8b0c){if(!_0x5a8b0c){_0x174acb[_0xf7b6('0x1a')](0x194);}return _0x5a8b0c;};}function handleError(_0xfa7fa,_0x8fee6a){_0x8fee6a=_0x8fee6a||0x1f4;return function(_0x4861c1){logger[_0xf7b6('0x28')](_0x4861c1[_0xf7b6('0x29')]);if(_0x4861c1[_0xf7b6('0x2a')]){delete _0x4861c1['name'];}_0xfa7fa[_0xf7b6('0x1c')](_0x8fee6a)['send'](_0x4861c1);};}exports['index']=function(_0x3c188b,_0x4688b5){var _0xef184a={},_0x2bf531={},_0x3c9f33={'count':0x0,'rows':[]};var _0xdd47f=_[_0xf7b6('0x2b')](db['DeskConfiguration'][_0xf7b6('0x2c')],function(_0x15328a){return{'name':_0x15328a[_0xf7b6('0x2d')],'type':_0x15328a['type'][_0xf7b6('0x2e')]};});_0x2bf531[_0xf7b6('0x2f')]=_[_0xf7b6('0x2b')](_0xdd47f,_0xf7b6('0x2a'));_0x2bf531[_0xf7b6('0x30')]=_[_0xf7b6('0x31')](_0x3c188b[_0xf7b6('0x30')]);_0x2bf531[_0xf7b6('0x32')]=_['intersection'](_0x2bf531['model'],_0x2bf531[_0xf7b6('0x30')]);_0xef184a['attributes']=_[_0xf7b6('0x33')](_0x2bf531['model'],qs[_0xf7b6('0x34')](_0x3c188b[_0xf7b6('0x30')][_0xf7b6('0x34')]));_0xef184a[_0xf7b6('0x35')]=_0xef184a['attributes'][_0xf7b6('0x36')]?_0xef184a[_0xf7b6('0x35')]:_0x2bf531['model'];if(!_0x3c188b['query']['hasOwnProperty'](_0xf7b6('0x37'))){_0xef184a['limit']=qs[_0xf7b6('0x1f')](_0x3c188b[_0xf7b6('0x30')][_0xf7b6('0x1f')]);_0xef184a[_0xf7b6('0x1e')]=qs[_0xf7b6('0x1e')](_0x3c188b['query'][_0xf7b6('0x1e')]);}_0xef184a[_0xf7b6('0x38')]=qs[_0xf7b6('0x39')](_0x3c188b[_0xf7b6('0x30')]['sort']);_0xef184a[_0xf7b6('0x3a')]=qs[_0xf7b6('0x32')](_[_0xf7b6('0x3b')](_0x3c188b[_0xf7b6('0x30')],_0x2bf531[_0xf7b6('0x32')]),_0xdd47f);if(_0x3c188b[_0xf7b6('0x30')]['filter']){_0xef184a[_0xf7b6('0x3a')]=_[_0xf7b6('0x3c')](_0xef184a[_0xf7b6('0x3a')],{'$or':_[_0xf7b6('0x2b')](_0xdd47f,function(_0x16c012){if(_0x16c012[_0xf7b6('0x3d')]!==_0xf7b6('0x3e')){var _0x1079be={};_0x1079be[_0x16c012['name']]={'$like':'%'+_0x3c188b[_0xf7b6('0x30')]['filter']+'%'};return _0x1079be;}})});}_0xef184a=_['merge']({},_0xef184a,_0x3c188b['options']);var _0x2bc2c0={'where':_0xef184a['where']};return db[_0xf7b6('0x3f')]['count'](_0x2bc2c0)['then'](function(_0x5595fa){_0x3c9f33['count']=_0x5595fa;if(_0x3c188b[_0xf7b6('0x30')][_0xf7b6('0x40')]){_0xef184a[_0xf7b6('0x41')]=[{'all':!![]}];}return db[_0xf7b6('0x3f')][_0xf7b6('0x42')](_0xef184a);})['then'](function(_0x518d9b){_0x3c9f33[_0xf7b6('0x43')]=_0x518d9b;return _0x3c9f33;})[_0xf7b6('0x26')](respondWithFilteredResult(_0x4688b5,_0xef184a))[_0xf7b6('0x44')](handleError(_0x4688b5,null));};exports[_0xf7b6('0x45')]=function(_0x1c76bc,_0x1e68da){var _0x3e5e13={'raw':![],'where':{'id':_0x1c76bc[_0xf7b6('0x46')]['id']}},_0x14843a={};_0x14843a['model']=_['keys'](db[_0xf7b6('0x3f')][_0xf7b6('0x2c')]);_0x14843a[_0xf7b6('0x30')]=_[_0xf7b6('0x31')](_0x1c76bc[_0xf7b6('0x30')]);_0x14843a[_0xf7b6('0x32')]=_[_0xf7b6('0x33')](_0x14843a[_0xf7b6('0x2f')],_0x14843a['query']);_0x3e5e13[_0xf7b6('0x35')]=_[_0xf7b6('0x33')](_0x14843a[_0xf7b6('0x2f')],qs[_0xf7b6('0x34')](_0x1c76bc['query'][_0xf7b6('0x34')]));_0x3e5e13[_0xf7b6('0x35')]=_0x3e5e13[_0xf7b6('0x35')]['length']?_0x3e5e13[_0xf7b6('0x35')]:_0x14843a[_0xf7b6('0x2f')];if(_0x1c76bc[_0xf7b6('0x30')][_0xf7b6('0x40')]){_0x3e5e13[_0xf7b6('0x41')]=[{'all':!![]}];}_0x3e5e13=_[_0xf7b6('0x3c')]({},_0x3e5e13,_0x1c76bc[_0xf7b6('0x47')]);return db['DeskConfiguration'][_0xf7b6('0x48')](_0x3e5e13)[_0xf7b6('0x26')](handleEntityNotFound(_0x1e68da,null))[_0xf7b6('0x26')](respondWithResult(_0x1e68da,null))['catch'](handleError(_0x1e68da,null));};exports[_0xf7b6('0x49')]=function(_0x59f814,_0xb61fb7){return db[_0xf7b6('0x3f')][_0xf7b6('0x49')](_0x59f814[_0xf7b6('0x4a')],{})[_0xf7b6('0x26')](respondWithResult(_0xb61fb7,0xc9))[_0xf7b6('0x44')](handleError(_0xb61fb7,null));};exports['update']=function(_0x20f2f3,_0x2a9b5c){if(_0x20f2f3[_0xf7b6('0x4a')]['id']){delete _0x20f2f3[_0xf7b6('0x4a')]['id'];}return db['DeskConfiguration'][_0xf7b6('0x48')]({'where':{'id':_0x20f2f3[_0xf7b6('0x46')]['id']}})[_0xf7b6('0x26')](handleEntityNotFound(_0x2a9b5c,null))[_0xf7b6('0x26')](saveUpdates(_0x20f2f3[_0xf7b6('0x4a')],null))['then'](respondWithResult(_0x2a9b5c,null))['catch'](handleError(_0x2a9b5c,null));};exports[_0xf7b6('0x27')]=function(_0x17dc6f,_0xa58ef6){return db[_0xf7b6('0x3f')][_0xf7b6('0x48')]({'where':{'id':_0x17dc6f[_0xf7b6('0x46')]['id']}})[_0xf7b6('0x26')](handleEntityNotFound(_0xa58ef6,null))[_0xf7b6('0x26')](removeEntity(_0xa58ef6,null))['catch'](handleError(_0xa58ef6,null));};exports['getFields']=function(_0x4f3c9b,_0x1139c2,_0x9f1c6e){var _0x25d6ca={};var _0x589dff={};var _0x228846;var _0x2a951e;return db[_0xf7b6('0x3f')][_0xf7b6('0x4b')]({'where':{'id':_0x4f3c9b[_0xf7b6('0x46')]['id']}})[_0xf7b6('0x26')](handleEntityNotFound(_0x1139c2,null))[_0xf7b6('0x26')](function(_0x375356){if(_0x375356){_0x228846=_0x375356;_0x589dff[_0xf7b6('0x2f')]=_[_0xf7b6('0x31')](db['DeskField'][_0xf7b6('0x2c')]);_0x589dff['query']=_[_0xf7b6('0x31')](_0x4f3c9b[_0xf7b6('0x30')]);_0x589dff[_0xf7b6('0x32')]=_[_0xf7b6('0x33')](_0x589dff[_0xf7b6('0x2f')],_0x589dff[_0xf7b6('0x30')]);_0x25d6ca[_0xf7b6('0x35')]=_[_0xf7b6('0x33')](_0x589dff[_0xf7b6('0x2f')],qs[_0xf7b6('0x34')](_0x4f3c9b[_0xf7b6('0x30')]['fields']));_0x25d6ca[_0xf7b6('0x35')]=_0x25d6ca[_0xf7b6('0x35')][_0xf7b6('0x36')]?_0x25d6ca[_0xf7b6('0x35')]:_0x589dff[_0xf7b6('0x2f')];_0x25d6ca['order']=qs[_0xf7b6('0x39')](_0x4f3c9b[_0xf7b6('0x30')][_0xf7b6('0x39')]);_0x25d6ca['where']=qs[_0xf7b6('0x32')](_[_0xf7b6('0x3b')](_0x4f3c9b[_0xf7b6('0x30')],_0x589dff[_0xf7b6('0x32')]));if(_0x4f3c9b[_0xf7b6('0x30')][_0xf7b6('0x4c')]){_0x25d6ca[_0xf7b6('0x3a')]=_['merge'](_0x25d6ca[_0xf7b6('0x3a')],{'$or':_[_0xf7b6('0x2b')](_0x25d6ca[_0xf7b6('0x35')],function(_0x1b0d3c){var _0x4b6eab={};_0x4b6eab[_0x1b0d3c]={'$like':'%'+_0x4f3c9b[_0xf7b6('0x30')][_0xf7b6('0x4c')]+'%'};return _0x4b6eab;})});}_0x25d6ca=_[_0xf7b6('0x3c')]({},_0x25d6ca,_0x4f3c9b[_0xf7b6('0x47')]);return _0x228846[_0xf7b6('0x4d')](_0x25d6ca);}})[_0xf7b6('0x26')](function(_0x58c715){if(_0x58c715){_0x2a951e=_0x58c715[_0xf7b6('0x36')];if(!_0x4f3c9b[_0xf7b6('0x30')][_0xf7b6('0x4e')](_0xf7b6('0x37'))){_0x25d6ca[_0xf7b6('0x1f')]=qs[_0xf7b6('0x1f')](_0x4f3c9b['query'][_0xf7b6('0x1f')]);_0x25d6ca[_0xf7b6('0x1e')]=qs[_0xf7b6('0x1e')](_0x4f3c9b[_0xf7b6('0x30')][_0xf7b6('0x1e')]);}return _0x228846[_0xf7b6('0x4d')](_0x25d6ca);}})[_0xf7b6('0x26')](function(_0x5e9b0c){if(_0x5e9b0c){return _0x5e9b0c?{'count':_0x2a951e,'rows':_0x5e9b0c}:null;}})['then'](respondWithResult(_0x1139c2,null))[_0xf7b6('0x44')](handleError(_0x1139c2,null));};exports['getSubjects']=function(_0x2e5fe5,_0x44bea2,_0x50c865){var _0x4d3e89={};var _0x47e215={};var _0x476cbf;var _0x2995d9;return db['DeskConfiguration'][_0xf7b6('0x4b')]({'where':{'id':_0x2e5fe5[_0xf7b6('0x46')]['id']}})[_0xf7b6('0x26')](handleEntityNotFound(_0x44bea2,null))[_0xf7b6('0x26')](function(_0x2bf4e0){if(_0x2bf4e0){_0x476cbf=_0x2bf4e0;_0x47e215['model']=_['keys'](db['DeskField']['rawAttributes']);_0x47e215[_0xf7b6('0x30')]=_['keys'](_0x2e5fe5[_0xf7b6('0x30')]);_0x47e215[_0xf7b6('0x32')]=_['intersection'](_0x47e215[_0xf7b6('0x2f')],_0x47e215[_0xf7b6('0x30')]);_0x4d3e89[_0xf7b6('0x35')]=_['intersection'](_0x47e215['model'],qs['fields'](_0x2e5fe5[_0xf7b6('0x30')][_0xf7b6('0x34')]));_0x4d3e89[_0xf7b6('0x35')]=_0x4d3e89['attributes'][_0xf7b6('0x36')]?_0x4d3e89['attributes']:_0x47e215[_0xf7b6('0x2f')];_0x4d3e89[_0xf7b6('0x38')]=qs[_0xf7b6('0x39')](_0x2e5fe5[_0xf7b6('0x30')][_0xf7b6('0x39')]);_0x4d3e89['where']=qs[_0xf7b6('0x32')](_['pick'](_0x2e5fe5[_0xf7b6('0x30')],_0x47e215[_0xf7b6('0x32')]));if(_0x2e5fe5[_0xf7b6('0x30')][_0xf7b6('0x4c')]){_0x4d3e89[_0xf7b6('0x3a')]=_[_0xf7b6('0x3c')](_0x4d3e89[_0xf7b6('0x3a')],{'$or':_['map'](_0x4d3e89[_0xf7b6('0x35')],function(_0x416a73){var _0x4d30d2={};_0x4d30d2[_0x416a73]={'$like':'%'+_0x2e5fe5[_0xf7b6('0x30')][_0xf7b6('0x4c')]+'%'};return _0x4d30d2;})});}_0x4d3e89=_[_0xf7b6('0x3c')]({},_0x4d3e89,_0x2e5fe5[_0xf7b6('0x47')]);return _0x476cbf[_0xf7b6('0x4f')](_0x4d3e89);}})['then'](function(_0x31d8ad){if(_0x31d8ad){_0x2995d9=_0x31d8ad['length'];if(!_0x2e5fe5[_0xf7b6('0x30')][_0xf7b6('0x4e')](_0xf7b6('0x37'))){_0x4d3e89[_0xf7b6('0x1f')]=qs[_0xf7b6('0x1f')](_0x2e5fe5['query']['limit']);_0x4d3e89[_0xf7b6('0x1e')]=qs['offset'](_0x2e5fe5[_0xf7b6('0x30')][_0xf7b6('0x1e')]);}return _0x476cbf[_0xf7b6('0x4f')](_0x4d3e89);}})[_0xf7b6('0x26')](function(_0x2d793c){if(_0x2d793c){return _0x2d793c?{'count':_0x2995d9,'rows':_0x2d793c}:null;}})[_0xf7b6('0x26')](respondWithResult(_0x44bea2,null))[_0xf7b6('0x44')](handleError(_0x44bea2,null));};exports[_0xf7b6('0x50')]=function(_0x396d9e,_0x4c7d3b,_0x311795){var _0x5e8742={};var _0x25bfea={};var _0x332305;var _0x23ade6;return db['DeskConfiguration'][_0xf7b6('0x4b')]({'where':{'id':_0x396d9e[_0xf7b6('0x46')]['id']}})[_0xf7b6('0x26')](handleEntityNotFound(_0x4c7d3b,null))[_0xf7b6('0x26')](function(_0x2a006e){if(_0x2a006e){_0x332305=_0x2a006e;_0x25bfea[_0xf7b6('0x2f')]=_['keys'](db[_0xf7b6('0x51')][_0xf7b6('0x2c')]);_0x25bfea[_0xf7b6('0x30')]=_['keys'](_0x396d9e[_0xf7b6('0x30')]);_0x25bfea['filters']=_[_0xf7b6('0x33')](_0x25bfea[_0xf7b6('0x2f')],_0x25bfea[_0xf7b6('0x30')]);_0x5e8742[_0xf7b6('0x35')]=_[_0xf7b6('0x33')](_0x25bfea[_0xf7b6('0x2f')],qs[_0xf7b6('0x34')](_0x396d9e[_0xf7b6('0x30')][_0xf7b6('0x34')]));_0x5e8742['attributes']=_0x5e8742[_0xf7b6('0x35')][_0xf7b6('0x36')]?_0x5e8742[_0xf7b6('0x35')]:_0x25bfea[_0xf7b6('0x2f')];_0x5e8742[_0xf7b6('0x38')]=qs[_0xf7b6('0x39')](_0x396d9e['query'][_0xf7b6('0x39')]);_0x5e8742[_0xf7b6('0x3a')]=qs[_0xf7b6('0x32')](_[_0xf7b6('0x3b')](_0x396d9e[_0xf7b6('0x30')],_0x25bfea[_0xf7b6('0x32')]));if(_0x396d9e[_0xf7b6('0x30')][_0xf7b6('0x4c')]){_0x5e8742[_0xf7b6('0x3a')]=_['merge'](_0x5e8742[_0xf7b6('0x3a')],{'$or':_['map'](_0x5e8742[_0xf7b6('0x35')],function(_0x357e8f){var _0x1ebe54={};_0x1ebe54[_0x357e8f]={'$like':'%'+_0x396d9e['query']['filter']+'%'};return _0x1ebe54;})});}_0x5e8742=_['merge']({},_0x5e8742,_0x396d9e['options']);return _0x332305[_0xf7b6('0x50')](_0x5e8742);}})['then'](function(_0x5d7ae0){if(_0x5d7ae0){_0x23ade6=_0x5d7ae0['length'];if(!_0x396d9e[_0xf7b6('0x30')][_0xf7b6('0x4e')](_0xf7b6('0x37'))){_0x5e8742[_0xf7b6('0x1f')]=qs[_0xf7b6('0x1f')](_0x396d9e['query'][_0xf7b6('0x1f')]);_0x5e8742[_0xf7b6('0x1e')]=qs['offset'](_0x396d9e[_0xf7b6('0x30')]['offset']);}return _0x332305[_0xf7b6('0x50')](_0x5e8742);}})['then'](function(_0x5bb464){if(_0x5bb464){return _0x5bb464?{'count':_0x23ade6,'rows':_0x5bb464}:null;}})[_0xf7b6('0x26')](respondWithResult(_0x4c7d3b,null))[_0xf7b6('0x44')](handleError(_0x4c7d3b,null));};exports[_0xf7b6('0x52')]=function(_0x3f99c7,_0x437489,_0x48374a){var _0x5b2855={};var _0x57c62f={};var _0x4ca63c;var _0x3d3b1c;return db[_0xf7b6('0x3f')]['findOne']({'where':{'id':_0x3f99c7['params']['id']}})['then'](handleEntityNotFound(_0x437489,null))['then'](function(_0x545415){if(_0x545415){_0x4ca63c=_0x545415;_0x57c62f['model']=_['keys'](db[_0xf7b6('0x53')]['rawAttributes']);_0x57c62f[_0xf7b6('0x30')]=_['keys'](_0x3f99c7[_0xf7b6('0x30')]);_0x57c62f[_0xf7b6('0x32')]=_[_0xf7b6('0x33')](_0x57c62f[_0xf7b6('0x2f')],_0x57c62f['query']);_0x5b2855[_0xf7b6('0x35')]=_['intersection'](_0x57c62f[_0xf7b6('0x2f')],qs[_0xf7b6('0x34')](_0x3f99c7['query'][_0xf7b6('0x34')]));_0x5b2855[_0xf7b6('0x35')]=_0x5b2855[_0xf7b6('0x35')]['length']?_0x5b2855['attributes']:_0x57c62f[_0xf7b6('0x2f')];_0x5b2855[_0xf7b6('0x38')]=qs[_0xf7b6('0x39')](_0x3f99c7[_0xf7b6('0x30')][_0xf7b6('0x39')]);_0x5b2855[_0xf7b6('0x3a')]=qs[_0xf7b6('0x32')](_[_0xf7b6('0x3b')](_0x3f99c7['query'],_0x57c62f[_0xf7b6('0x32')]));if(_0x3f99c7[_0xf7b6('0x30')][_0xf7b6('0x4c')]){_0x5b2855['where']=_['merge'](_0x5b2855[_0xf7b6('0x3a')],{'$or':_[_0xf7b6('0x2b')](_0x5b2855['attributes'],function(_0x1e143f){var _0x491aee={};_0x491aee[_0x1e143f]={'$like':'%'+_0x3f99c7[_0xf7b6('0x30')]['filter']+'%'};return _0x491aee;})});}_0x5b2855=_[_0xf7b6('0x3c')]({},_0x5b2855,_0x3f99c7[_0xf7b6('0x47')]);return _0x4ca63c[_0xf7b6('0x52')](_0x5b2855);}})[_0xf7b6('0x26')](function(_0x143265){if(_0x143265){_0x3d3b1c=_0x143265['length'];if(!_0x3f99c7[_0xf7b6('0x30')][_0xf7b6('0x4e')](_0xf7b6('0x37'))){_0x5b2855[_0xf7b6('0x1f')]=qs['limit'](_0x3f99c7[_0xf7b6('0x30')][_0xf7b6('0x1f')]);_0x5b2855[_0xf7b6('0x1e')]=qs['offset'](_0x3f99c7[_0xf7b6('0x30')][_0xf7b6('0x1e')]);}return _0x4ca63c[_0xf7b6('0x52')](_0x5b2855);}})['then'](function(_0x47d0ab){if(_0x47d0ab){return _0x47d0ab?{'count':_0x3d3b1c,'rows':_0x47d0ab}:null;}})[_0xf7b6('0x26')](respondWithResult(_0x437489,null))[_0xf7b6('0x44')](handleError(_0x437489,null));};exports[_0xf7b6('0x54')]=function(_0x1fe10f,_0x248920,_0x18e6e1){if(_0x1fe10f[_0xf7b6('0x4a')]['id']){delete _0x1fe10f[_0xf7b6('0x4a')]['id'];}return db[_0xf7b6('0x3f')]['findOne']({'where':{'id':_0x1fe10f[_0xf7b6('0x46')]['id']}})[_0xf7b6('0x26')](handleEntityNotFound(_0x248920,null))[_0xf7b6('0x26')](function(_0x50fdaa){if(_0x50fdaa){return _0x50fdaa[_0xf7b6('0x54')](_0x1fe10f['body'][_0xf7b6('0x55')]||[]);}return null;})[_0xf7b6('0x26')](respondWithResult(_0x248920,null))[_0xf7b6('0x44')](handleError(_0x248920,null));};
\ No newline at end of file
+var _0xcc74=['rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','reject','then','destroy','sendStatus','error','stack','name','send','index','map','DeskConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','update','findOne','order','filter','getFields','getSubjects','DeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format'];(function(_0x503ef1,_0x178af4){var _0x2c61dc=function(_0x3136ad){while(--_0x3136ad){_0x503ef1['push'](_0x503ef1['shift']());}};_0x2c61dc(++_0x178af4);}(_0xcc74,0x157));var _0x4cc7=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xcc74[_0xae7c2f];return _0x5d7001;};'use strict';var emlformat=require(_0x4cc7('0x0'));var rimraf=require(_0x4cc7('0x1'));var zipdir=require(_0x4cc7('0x2'));var jsonpatch=require(_0x4cc7('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4cc7('0x4'));var path=require(_0x4cc7('0x5'));var sox=require(_0x4cc7('0x6'));var csv=require(_0x4cc7('0x7'));var ejs=require(_0x4cc7('0x8'));var fs=require('fs');var fs_extra=require(_0x4cc7('0x9'));var _=require(_0x4cc7('0xa'));var squel=require(_0x4cc7('0xb'));var crypto=require(_0x4cc7('0xc'));var jsforce=require(_0x4cc7('0xd'));var deskjs=require(_0x4cc7('0xe'));var toCsv=require(_0x4cc7('0x7'));var querystring=require(_0x4cc7('0xf'));var Papa=require(_0x4cc7('0x10'));var Redis=require('ioredis');var authService=require(_0x4cc7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4cc7('0x12'));var hardwareService=require(_0x4cc7('0x13'));var logger=require(_0x4cc7('0x14'))('api');var utils=require(_0x4cc7('0x15'));var config=require(_0x4cc7('0x16'));var licenseUtil=require(_0x4cc7('0x17'));var db=require(_0x4cc7('0x18'))['db'];function respondWithStatusCode(_0x29029d,_0x30923c){_0x30923c=_0x30923c||0xcc;return function(_0x5c3b95){if(_0x5c3b95){return _0x29029d['sendStatus'](_0x30923c);}return _0x29029d[_0x4cc7('0x19')](_0x30923c)[_0x4cc7('0x1a')]();};}function respondWithResult(_0x365079,_0x5eebf6){_0x5eebf6=_0x5eebf6||0xc8;return function(_0x212c2f){if(_0x212c2f){return _0x365079[_0x4cc7('0x19')](_0x5eebf6)['json'](_0x212c2f);}};}function respondWithFilteredResult(_0x254169,_0x12fa8d){return function(_0xea2a2e){if(_0xea2a2e){var _0x2bd613=typeof _0x12fa8d[_0x4cc7('0x1b')]===_0x4cc7('0x1c')&&typeof _0x12fa8d[_0x4cc7('0x1d')]===_0x4cc7('0x1c');var _0x1133b2=_0xea2a2e[_0x4cc7('0x1e')];var _0x119132=_0x2bd613?0x0:_0x12fa8d[_0x4cc7('0x1b')];var _0x477ee8=_0x2bd613?_0xea2a2e[_0x4cc7('0x1e')]:_0x12fa8d[_0x4cc7('0x1b')]+_0x12fa8d['limit'];var _0x4a1f2a;if(_0x477ee8>=_0x1133b2){_0x477ee8=_0x1133b2;_0x4a1f2a=0xc8;}else{_0x4a1f2a=0xce;}_0x254169[_0x4cc7('0x19')](_0x4a1f2a);return _0x254169[_0x4cc7('0x1f')](_0x4cc7('0x20'),_0x119132+'-'+_0x477ee8+'/'+_0x1133b2)['json'](_0xea2a2e);}return null;};}function patchUpdates(_0x5d8c71){return function(_0x4a2514){try{jsonpatch['apply'](_0x4a2514,_0x5d8c71,!![]);}catch(_0x221ab4){return BPromise[_0x4cc7('0x21')](_0x221ab4);}return _0x4a2514['save']();};}function saveUpdates(_0x5918d8,_0x255333){return function(_0xabcc34){if(_0xabcc34){return _0xabcc34['update'](_0x5918d8)[_0x4cc7('0x22')](function(_0x2e7c3e){return _0x2e7c3e;});}return null;};}function removeEntity(_0x24b565,_0x2218ef){return function(_0x2c42fb){if(_0x2c42fb){return _0x2c42fb[_0x4cc7('0x23')]()[_0x4cc7('0x22')](function(){_0x24b565[_0x4cc7('0x19')](0xcc)[_0x4cc7('0x1a')]();});}};}function handleEntityNotFound(_0x3febde,_0x5b5982){return function(_0x2baddc){if(!_0x2baddc){_0x3febde[_0x4cc7('0x24')](0x194);}return _0x2baddc;};}function handleError(_0x1cc09f,_0x3fccf1){_0x3fccf1=_0x3fccf1||0x1f4;return function(_0x54062e){logger[_0x4cc7('0x25')](_0x54062e[_0x4cc7('0x26')]);if(_0x54062e[_0x4cc7('0x27')]){delete _0x54062e[_0x4cc7('0x27')];}_0x1cc09f[_0x4cc7('0x19')](_0x3fccf1)[_0x4cc7('0x28')](_0x54062e);};}exports[_0x4cc7('0x29')]=function(_0x81171a,_0x4352c7){var _0x47f1bc={},_0x1a966f={},_0x5352b4={'count':0x0,'rows':[]};var _0x4363a8=_[_0x4cc7('0x2a')](db[_0x4cc7('0x2b')]['rawAttributes'],function(_0x889391){return{'name':_0x889391[_0x4cc7('0x2c')],'type':_0x889391[_0x4cc7('0x2d')][_0x4cc7('0x2e')]};});_0x1a966f[_0x4cc7('0x2f')]=_[_0x4cc7('0x2a')](_0x4363a8,_0x4cc7('0x27'));_0x1a966f[_0x4cc7('0x30')]=_[_0x4cc7('0x31')](_0x81171a[_0x4cc7('0x30')]);_0x1a966f[_0x4cc7('0x32')]=_[_0x4cc7('0x33')](_0x1a966f[_0x4cc7('0x2f')],_0x1a966f['query']);_0x47f1bc[_0x4cc7('0x34')]=_[_0x4cc7('0x33')](_0x1a966f[_0x4cc7('0x2f')],qs[_0x4cc7('0x35')](_0x81171a[_0x4cc7('0x30')][_0x4cc7('0x35')]));_0x47f1bc[_0x4cc7('0x34')]=_0x47f1bc['attributes'][_0x4cc7('0x36')]?_0x47f1bc[_0x4cc7('0x34')]:_0x1a966f[_0x4cc7('0x2f')];if(!_0x81171a[_0x4cc7('0x30')][_0x4cc7('0x37')](_0x4cc7('0x38'))){_0x47f1bc['limit']=qs['limit'](_0x81171a[_0x4cc7('0x30')][_0x4cc7('0x1d')]);_0x47f1bc[_0x4cc7('0x1b')]=qs[_0x4cc7('0x1b')](_0x81171a['query']['offset']);}_0x47f1bc['order']=qs[_0x4cc7('0x39')](_0x81171a[_0x4cc7('0x30')][_0x4cc7('0x39')]);_0x47f1bc[_0x4cc7('0x3a')]=qs[_0x4cc7('0x32')](_[_0x4cc7('0x3b')](_0x81171a['query'],_0x1a966f[_0x4cc7('0x32')]),_0x4363a8);if(_0x81171a['query']['filter']){_0x47f1bc[_0x4cc7('0x3a')]=_[_0x4cc7('0x3c')](_0x47f1bc[_0x4cc7('0x3a')],{'$or':_['map'](_0x4363a8,function(_0x2c6598){if(_0x2c6598['type']!==_0x4cc7('0x3d')){var _0x3330ef={};_0x3330ef[_0x2c6598['name']]={'$like':'%'+_0x81171a['query']['filter']+'%'};return _0x3330ef;}})});}_0x47f1bc=_[_0x4cc7('0x3c')]({},_0x47f1bc,_0x81171a[_0x4cc7('0x3e')]);var _0x43f892={'where':_0x47f1bc[_0x4cc7('0x3a')]};return db[_0x4cc7('0x2b')]['count'](_0x43f892)[_0x4cc7('0x22')](function(_0x5094c0){_0x5352b4[_0x4cc7('0x1e')]=_0x5094c0;if(_0x81171a[_0x4cc7('0x30')][_0x4cc7('0x3f')]){_0x47f1bc[_0x4cc7('0x40')]=[{'all':!![]}];}return db[_0x4cc7('0x2b')][_0x4cc7('0x41')](_0x47f1bc);})[_0x4cc7('0x22')](function(_0x213119){_0x5352b4[_0x4cc7('0x42')]=_0x213119;return _0x5352b4;})[_0x4cc7('0x22')](respondWithFilteredResult(_0x4352c7,_0x47f1bc))[_0x4cc7('0x43')](handleError(_0x4352c7,null));};exports[_0x4cc7('0x44')]=function(_0x4d0019,_0x5be00b){var _0x941c20={'raw':![],'where':{'id':_0x4d0019[_0x4cc7('0x45')]['id']}},_0x1be10e={};_0x1be10e[_0x4cc7('0x2f')]=_['keys'](db[_0x4cc7('0x2b')][_0x4cc7('0x46')]);_0x1be10e[_0x4cc7('0x30')]=_[_0x4cc7('0x31')](_0x4d0019[_0x4cc7('0x30')]);_0x1be10e[_0x4cc7('0x32')]=_[_0x4cc7('0x33')](_0x1be10e[_0x4cc7('0x2f')],_0x1be10e[_0x4cc7('0x30')]);_0x941c20[_0x4cc7('0x34')]=_[_0x4cc7('0x33')](_0x1be10e[_0x4cc7('0x2f')],qs[_0x4cc7('0x35')](_0x4d0019[_0x4cc7('0x30')][_0x4cc7('0x35')]));_0x941c20[_0x4cc7('0x34')]=_0x941c20[_0x4cc7('0x34')][_0x4cc7('0x36')]?_0x941c20[_0x4cc7('0x34')]:_0x1be10e[_0x4cc7('0x2f')];if(_0x4d0019['query'][_0x4cc7('0x3f')]){_0x941c20[_0x4cc7('0x40')]=[{'all':!![]}];}_0x941c20=_[_0x4cc7('0x3c')]({},_0x941c20,_0x4d0019[_0x4cc7('0x3e')]);return db[_0x4cc7('0x2b')][_0x4cc7('0x47')](_0x941c20)[_0x4cc7('0x22')](handleEntityNotFound(_0x5be00b,null))[_0x4cc7('0x22')](respondWithResult(_0x5be00b,null))[_0x4cc7('0x43')](handleError(_0x5be00b,null));};exports[_0x4cc7('0x48')]=function(_0x40a524,_0x55a8b8){return db[_0x4cc7('0x2b')][_0x4cc7('0x48')](_0x40a524[_0x4cc7('0x49')],{})['then'](respondWithResult(_0x55a8b8,0xc9))[_0x4cc7('0x43')](handleError(_0x55a8b8,null));};exports[_0x4cc7('0x4a')]=function(_0xa1a552,_0x4aeb4d){if(_0xa1a552[_0x4cc7('0x49')]['id']){delete _0xa1a552[_0x4cc7('0x49')]['id'];}return db[_0x4cc7('0x2b')][_0x4cc7('0x47')]({'where':{'id':_0xa1a552[_0x4cc7('0x45')]['id']}})[_0x4cc7('0x22')](handleEntityNotFound(_0x4aeb4d,null))[_0x4cc7('0x22')](saveUpdates(_0xa1a552['body'],null))[_0x4cc7('0x22')](respondWithResult(_0x4aeb4d,null))[_0x4cc7('0x43')](handleError(_0x4aeb4d,null));};exports[_0x4cc7('0x23')]=function(_0x3b8158,_0x4890f8){return db[_0x4cc7('0x2b')][_0x4cc7('0x47')]({'where':{'id':_0x3b8158[_0x4cc7('0x45')]['id']}})[_0x4cc7('0x22')](handleEntityNotFound(_0x4890f8,null))[_0x4cc7('0x22')](removeEntity(_0x4890f8,null))[_0x4cc7('0x43')](handleError(_0x4890f8,null));};exports['getFields']=function(_0x514ba4,_0x58454b,_0xbe2c4a){var _0xcd3d91={};var _0x41b828={};var _0x16e4d5;var _0x421aff;return db[_0x4cc7('0x2b')][_0x4cc7('0x4b')]({'where':{'id':_0x514ba4[_0x4cc7('0x45')]['id']}})[_0x4cc7('0x22')](handleEntityNotFound(_0x58454b,null))[_0x4cc7('0x22')](function(_0x551965){if(_0x551965){_0x16e4d5=_0x551965;_0x41b828[_0x4cc7('0x2f')]=_[_0x4cc7('0x31')](db['DeskField'][_0x4cc7('0x46')]);_0x41b828[_0x4cc7('0x30')]=_[_0x4cc7('0x31')](_0x514ba4[_0x4cc7('0x30')]);_0x41b828[_0x4cc7('0x32')]=_[_0x4cc7('0x33')](_0x41b828[_0x4cc7('0x2f')],_0x41b828[_0x4cc7('0x30')]);_0xcd3d91['attributes']=_['intersection'](_0x41b828[_0x4cc7('0x2f')],qs[_0x4cc7('0x35')](_0x514ba4[_0x4cc7('0x30')][_0x4cc7('0x35')]));_0xcd3d91[_0x4cc7('0x34')]=_0xcd3d91[_0x4cc7('0x34')][_0x4cc7('0x36')]?_0xcd3d91[_0x4cc7('0x34')]:_0x41b828[_0x4cc7('0x2f')];_0xcd3d91[_0x4cc7('0x4c')]=qs[_0x4cc7('0x39')](_0x514ba4[_0x4cc7('0x30')][_0x4cc7('0x39')]);_0xcd3d91[_0x4cc7('0x3a')]=qs[_0x4cc7('0x32')](_['pick'](_0x514ba4[_0x4cc7('0x30')],_0x41b828[_0x4cc7('0x32')]));if(_0x514ba4[_0x4cc7('0x30')][_0x4cc7('0x4d')]){_0xcd3d91['where']=_['merge'](_0xcd3d91[_0x4cc7('0x3a')],{'$or':_[_0x4cc7('0x2a')](_0xcd3d91['attributes'],function(_0x34c3aa){var _0x15596b={};_0x15596b[_0x34c3aa]={'$like':'%'+_0x514ba4[_0x4cc7('0x30')][_0x4cc7('0x4d')]+'%'};return _0x15596b;})});}_0xcd3d91=_[_0x4cc7('0x3c')]({},_0xcd3d91,_0x514ba4[_0x4cc7('0x3e')]);return _0x16e4d5[_0x4cc7('0x4e')](_0xcd3d91);}})[_0x4cc7('0x22')](function(_0x122058){if(_0x122058){_0x421aff=_0x122058[_0x4cc7('0x36')];if(!_0x514ba4[_0x4cc7('0x30')]['hasOwnProperty'](_0x4cc7('0x38'))){_0xcd3d91[_0x4cc7('0x1d')]=qs[_0x4cc7('0x1d')](_0x514ba4[_0x4cc7('0x30')][_0x4cc7('0x1d')]);_0xcd3d91[_0x4cc7('0x1b')]=qs[_0x4cc7('0x1b')](_0x514ba4[_0x4cc7('0x30')][_0x4cc7('0x1b')]);}return _0x16e4d5[_0x4cc7('0x4e')](_0xcd3d91);}})['then'](function(_0x184161){if(_0x184161){return _0x184161?{'count':_0x421aff,'rows':_0x184161}:null;}})[_0x4cc7('0x22')](respondWithResult(_0x58454b,null))[_0x4cc7('0x43')](handleError(_0x58454b,null));};exports[_0x4cc7('0x4f')]=function(_0x27b59a,_0x3711e4,_0x24c46b){var _0x4159e9={};var _0x392919={};var _0x275dbd;var _0xcb2d5;return db['DeskConfiguration'][_0x4cc7('0x4b')]({'where':{'id':_0x27b59a['params']['id']}})['then'](handleEntityNotFound(_0x3711e4,null))[_0x4cc7('0x22')](function(_0x54a4be){if(_0x54a4be){_0x275dbd=_0x54a4be;_0x392919['model']=_[_0x4cc7('0x31')](db[_0x4cc7('0x50')][_0x4cc7('0x46')]);_0x392919['query']=_['keys'](_0x27b59a['query']);_0x392919[_0x4cc7('0x32')]=_[_0x4cc7('0x33')](_0x392919[_0x4cc7('0x2f')],_0x392919['query']);_0x4159e9['attributes']=_[_0x4cc7('0x33')](_0x392919[_0x4cc7('0x2f')],qs['fields'](_0x27b59a['query'][_0x4cc7('0x35')]));_0x4159e9[_0x4cc7('0x34')]=_0x4159e9[_0x4cc7('0x34')][_0x4cc7('0x36')]?_0x4159e9[_0x4cc7('0x34')]:_0x392919[_0x4cc7('0x2f')];_0x4159e9[_0x4cc7('0x4c')]=qs[_0x4cc7('0x39')](_0x27b59a[_0x4cc7('0x30')]['sort']);_0x4159e9[_0x4cc7('0x3a')]=qs['filters'](_[_0x4cc7('0x3b')](_0x27b59a[_0x4cc7('0x30')],_0x392919[_0x4cc7('0x32')]));if(_0x27b59a[_0x4cc7('0x30')][_0x4cc7('0x4d')]){_0x4159e9[_0x4cc7('0x3a')]=_[_0x4cc7('0x3c')](_0x4159e9[_0x4cc7('0x3a')],{'$or':_['map'](_0x4159e9[_0x4cc7('0x34')],function(_0x6b3d45){var _0x2d5f26={};_0x2d5f26[_0x6b3d45]={'$like':'%'+_0x27b59a[_0x4cc7('0x30')][_0x4cc7('0x4d')]+'%'};return _0x2d5f26;})});}_0x4159e9=_[_0x4cc7('0x3c')]({},_0x4159e9,_0x27b59a[_0x4cc7('0x3e')]);return _0x275dbd[_0x4cc7('0x4f')](_0x4159e9);}})[_0x4cc7('0x22')](function(_0xa7fdbe){if(_0xa7fdbe){_0xcb2d5=_0xa7fdbe[_0x4cc7('0x36')];if(!_0x27b59a[_0x4cc7('0x30')][_0x4cc7('0x37')](_0x4cc7('0x38'))){_0x4159e9[_0x4cc7('0x1d')]=qs[_0x4cc7('0x1d')](_0x27b59a[_0x4cc7('0x30')][_0x4cc7('0x1d')]);_0x4159e9[_0x4cc7('0x1b')]=qs[_0x4cc7('0x1b')](_0x27b59a[_0x4cc7('0x30')]['offset']);}return _0x275dbd['getSubjects'](_0x4159e9);}})[_0x4cc7('0x22')](function(_0x213af5){if(_0x213af5){return _0x213af5?{'count':_0xcb2d5,'rows':_0x213af5}:null;}})[_0x4cc7('0x22')](respondWithResult(_0x3711e4,null))['catch'](handleError(_0x3711e4,null));};exports[_0x4cc7('0x51')]=function(_0x3fa941,_0x229fde,_0x1566ec){var _0xa461b7={};var _0x31a8a3={};var _0x427380;var _0x36b0ff;return db[_0x4cc7('0x2b')]['findOne']({'where':{'id':_0x3fa941[_0x4cc7('0x45')]['id']}})[_0x4cc7('0x22')](handleEntityNotFound(_0x229fde,null))[_0x4cc7('0x22')](function(_0x176723){if(_0x176723){_0x427380=_0x176723;_0x31a8a3[_0x4cc7('0x2f')]=_[_0x4cc7('0x31')](db[_0x4cc7('0x50')][_0x4cc7('0x46')]);_0x31a8a3[_0x4cc7('0x30')]=_[_0x4cc7('0x31')](_0x3fa941[_0x4cc7('0x30')]);_0x31a8a3[_0x4cc7('0x32')]=_[_0x4cc7('0x33')](_0x31a8a3[_0x4cc7('0x2f')],_0x31a8a3[_0x4cc7('0x30')]);_0xa461b7[_0x4cc7('0x34')]=_[_0x4cc7('0x33')](_0x31a8a3['model'],qs[_0x4cc7('0x35')](_0x3fa941[_0x4cc7('0x30')][_0x4cc7('0x35')]));_0xa461b7[_0x4cc7('0x34')]=_0xa461b7['attributes']['length']?_0xa461b7[_0x4cc7('0x34')]:_0x31a8a3[_0x4cc7('0x2f')];_0xa461b7[_0x4cc7('0x4c')]=qs[_0x4cc7('0x39')](_0x3fa941['query']['sort']);_0xa461b7['where']=qs[_0x4cc7('0x32')](_[_0x4cc7('0x3b')](_0x3fa941[_0x4cc7('0x30')],_0x31a8a3[_0x4cc7('0x32')]));if(_0x3fa941[_0x4cc7('0x30')][_0x4cc7('0x4d')]){_0xa461b7[_0x4cc7('0x3a')]=_[_0x4cc7('0x3c')](_0xa461b7[_0x4cc7('0x3a')],{'$or':_['map'](_0xa461b7['attributes'],function(_0x2d34d1){var _0x10dc30={};_0x10dc30[_0x2d34d1]={'$like':'%'+_0x3fa941[_0x4cc7('0x30')][_0x4cc7('0x4d')]+'%'};return _0x10dc30;})});}_0xa461b7=_['merge']({},_0xa461b7,_0x3fa941[_0x4cc7('0x3e')]);return _0x427380['getDescriptions'](_0xa461b7);}})['then'](function(_0x108a62){if(_0x108a62){_0x36b0ff=_0x108a62[_0x4cc7('0x36')];if(!_0x3fa941[_0x4cc7('0x30')][_0x4cc7('0x37')](_0x4cc7('0x38'))){_0xa461b7[_0x4cc7('0x1d')]=qs[_0x4cc7('0x1d')](_0x3fa941[_0x4cc7('0x30')][_0x4cc7('0x1d')]);_0xa461b7['offset']=qs[_0x4cc7('0x1b')](_0x3fa941[_0x4cc7('0x30')][_0x4cc7('0x1b')]);}return _0x427380['getDescriptions'](_0xa461b7);}})[_0x4cc7('0x22')](function(_0x14f1c2){if(_0x14f1c2){return _0x14f1c2?{'count':_0x36b0ff,'rows':_0x14f1c2}:null;}})[_0x4cc7('0x22')](respondWithResult(_0x229fde,null))[_0x4cc7('0x43')](handleError(_0x229fde,null));};exports[_0x4cc7('0x52')]=function(_0x27a59c,_0xd40fa5,_0x3c7a6d){var _0x378e96={};var _0x3f6ffb={};var _0x2ecaae;var _0x11e562;return db['DeskConfiguration'][_0x4cc7('0x4b')]({'where':{'id':_0x27a59c['params']['id']}})[_0x4cc7('0x22')](handleEntityNotFound(_0xd40fa5,null))[_0x4cc7('0x22')](function(_0x21792f){if(_0x21792f){_0x2ecaae=_0x21792f;_0x3f6ffb['model']=_[_0x4cc7('0x31')](db[_0x4cc7('0x53')][_0x4cc7('0x46')]);_0x3f6ffb[_0x4cc7('0x30')]=_['keys'](_0x27a59c['query']);_0x3f6ffb['filters']=_[_0x4cc7('0x33')](_0x3f6ffb[_0x4cc7('0x2f')],_0x3f6ffb[_0x4cc7('0x30')]);_0x378e96[_0x4cc7('0x34')]=_[_0x4cc7('0x33')](_0x3f6ffb['model'],qs['fields'](_0x27a59c[_0x4cc7('0x30')][_0x4cc7('0x35')]));_0x378e96[_0x4cc7('0x34')]=_0x378e96[_0x4cc7('0x34')][_0x4cc7('0x36')]?_0x378e96[_0x4cc7('0x34')]:_0x3f6ffb[_0x4cc7('0x2f')];_0x378e96[_0x4cc7('0x4c')]=qs['sort'](_0x27a59c[_0x4cc7('0x30')]['sort']);_0x378e96[_0x4cc7('0x3a')]=qs[_0x4cc7('0x32')](_['pick'](_0x27a59c['query'],_0x3f6ffb['filters']));if(_0x27a59c[_0x4cc7('0x30')]['filter']){_0x378e96[_0x4cc7('0x3a')]=_[_0x4cc7('0x3c')](_0x378e96[_0x4cc7('0x3a')],{'$or':_[_0x4cc7('0x2a')](_0x378e96['attributes'],function(_0x52b6a3){var _0x58b8af={};_0x58b8af[_0x52b6a3]={'$like':'%'+_0x27a59c['query'][_0x4cc7('0x4d')]+'%'};return _0x58b8af;})});}_0x378e96=_['merge']({},_0x378e96,_0x27a59c[_0x4cc7('0x3e')]);return _0x2ecaae[_0x4cc7('0x52')](_0x378e96);}})[_0x4cc7('0x22')](function(_0x310415){if(_0x310415){_0x11e562=_0x310415[_0x4cc7('0x36')];if(!_0x27a59c[_0x4cc7('0x30')]['hasOwnProperty'](_0x4cc7('0x38'))){_0x378e96['limit']=qs[_0x4cc7('0x1d')](_0x27a59c['query'][_0x4cc7('0x1d')]);_0x378e96[_0x4cc7('0x1b')]=qs[_0x4cc7('0x1b')](_0x27a59c[_0x4cc7('0x30')][_0x4cc7('0x1b')]);}return _0x2ecaae[_0x4cc7('0x52')](_0x378e96);}})[_0x4cc7('0x22')](function(_0x3d2c03){if(_0x3d2c03){return _0x3d2c03?{'count':_0x11e562,'rows':_0x3d2c03}:null;}})[_0x4cc7('0x22')](respondWithResult(_0xd40fa5,null))[_0x4cc7('0x43')](handleError(_0xd40fa5,null));};exports[_0x4cc7('0x54')]=function(_0x4fe1cb,_0x54ae42,_0x32be63){if(_0x4fe1cb[_0x4cc7('0x49')]['id']){delete _0x4fe1cb[_0x4cc7('0x49')]['id'];}return db[_0x4cc7('0x2b')][_0x4cc7('0x4b')]({'where':{'id':_0x4fe1cb['params']['id']}})[_0x4cc7('0x22')](handleEntityNotFound(_0x54ae42,null))['then'](function(_0x5bb340){if(_0x5bb340){return _0x5bb340[_0x4cc7('0x54')](_0x4fe1cb['body'][_0x4cc7('0x55')]||[]);}return null;})[_0x4cc7('0x22')](respondWithResult(_0x54ae42,null))['catch'](handleError(_0x54ae42,null));};
\ No newline at end of file
index ef311ee..5f53795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x642b=['lodash','api','moment','bluebird','request-promise','path','../../config/environment','./intDeskConfiguration.attributes','exports','define','int_desk_configurations'];(function(_0x263b0e,_0xc6479f){var _0x113fee=function(_0x803881){while(--_0x803881){_0x263b0e['push'](_0x263b0e['shift']());}};_0x113fee(++_0xc6479f);}(_0x642b,0xe7));var _0xb642=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x642b[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0xb642('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb642('0x1'));var moment=require(_0xb642('0x2'));var BPromise=require(_0xb642('0x3'));var rp=require(_0xb642('0x4'));var fs=require('fs');var path=require(_0xb642('0x5'));var rimraf=require('rimraf');var config=require(_0xb642('0x6'));var attributes=require(_0xb642('0x7'));module[_0xb642('0x8')]=function(_0x253f8d,_0x5694e0){return _0x253f8d[_0xb642('0x9')]('DeskConfiguration',attributes,{'tableName':_0xb642('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe7bc=['request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define','lodash','util','../../config/logger','moment','bluebird'];(function(_0x1d617b,_0x2214e7){var _0x278fb5=function(_0x4f4a45){while(--_0x4f4a45){_0x1d617b['push'](_0x1d617b['shift']());}};_0x278fb5(++_0x2214e7);}(_0xe7bc,0x19f));var _0xce7b=function(_0x51c819,_0xd812db){_0x51c819=_0x51c819-0x0;var _0x15c5d2=_0xe7bc[_0x51c819];return _0x15c5d2;};'use strict';var _=require(_0xce7b('0x0'));var util=require(_0xce7b('0x1'));var logger=require(_0xce7b('0x2'))('api');var moment=require(_0xce7b('0x3'));var BPromise=require(_0xce7b('0x4'));var rp=require(_0xce7b('0x5'));var fs=require('fs');var path=require(_0xce7b('0x6'));var rimraf=require(_0xce7b('0x7'));var config=require(_0xce7b('0x8'));var attributes=require(_0xce7b('0x9'));module[_0xce7b('0xa')]=function(_0x4fba55,_0x352aa2){return _0x4fba55[_0xce7b('0xb')]('DeskConfiguration',attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2350e37..f08a39c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd906=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','moment'];(function(_0x146484,_0x27a7f0){var _0x4c7aa3=function(_0x481b98){while(--_0x481b98){_0x146484['push'](_0x146484['shift']());}};_0x4c7aa3(++_0x27a7f0);}(_0xd906,0x6b));var _0x6d90=function(_0x24c4bd,_0x2a5676){_0x24c4bd=_0x24c4bd-0x0;var _0x3ca5f0=_0xd906[_0x24c4bd];return _0x3ca5f0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6d90('0x0'));var BPromise=require(_0x6d90('0x1'));var rs=require(_0x6d90('0x2'));var fs=require('fs');var Redis=require(_0x6d90('0x3'));var db=require(_0x6d90('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6d90('0x5'))(_0x6d90('0x6'));var config=require(_0x6d90('0x7'));var jayson=require(_0x6d90('0x8'));var client=jayson['client'][_0x6d90('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x19eb61,_0xd120f6,_0x160c7d){return new BPromise(function(_0x219737,_0x5d0ed4){return client['request'](_0x19eb61,_0x160c7d)['then'](function(_0x41c0a3){logger[_0x6d90('0xa')](_0x6d90('0xb'),_0xd120f6,_0x6d90('0xc'));logger[_0x6d90('0xd')](_0x6d90('0xe'),_0xd120f6,_0x6d90('0xc'),JSON['stringify'](_0x41c0a3));if(_0x41c0a3[_0x6d90('0xf')]){if(_0x41c0a3['error'][_0x6d90('0x10')]===0x1f4){logger['error'](_0x6d90('0xb'),_0xd120f6,_0x41c0a3[_0x6d90('0xf')][_0x6d90('0x11')]);return _0x5d0ed4(_0x41c0a3[_0x6d90('0xf')][_0x6d90('0x11')]);}logger[_0x6d90('0xf')](_0x6d90('0xb'),_0xd120f6,_0x41c0a3[_0x6d90('0xf')]['message']);return _0x219737(_0x41c0a3[_0x6d90('0xf')][_0x6d90('0x11')]);}else{logger[_0x6d90('0xa')](_0x6d90('0xb'),_0xd120f6,_0x6d90('0xc'));_0x219737(_0x41c0a3['result'][_0x6d90('0x11')]);}})['catch'](function(_0x379439){logger['error'](_0x6d90('0xb'),_0xd120f6,_0x379439);_0x5d0ed4(_0x379439);});});}
\ No newline at end of file
+var _0x80e6=['code','DeskConfiguration,\x20%s,\x20%s','message','result','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x60ff93,_0x51b87a){var _0x26bf1f=function(_0x5067f2){while(--_0x5067f2){_0x60ff93['push'](_0x60ff93['shift']());}};_0x26bf1f(++_0x51b87a);}(_0x80e6,0x1e7));var _0x680e=function(_0x1e893a,_0x5b4ada){_0x1e893a=_0x1e893a-0x0;var _0x3ee1db=_0x80e6[_0x1e893a];return _0x3ee1db;};'use strict';var _=require('lodash');var util=require(_0x680e('0x0'));var moment=require(_0x680e('0x1'));var BPromise=require('bluebird');var rs=require(_0x680e('0x2'));var fs=require('fs');var Redis=require(_0x680e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x680e('0x4'));var logger=require('../../config/logger')(_0x680e('0x5'));var config=require(_0x680e('0x6'));var jayson=require(_0x680e('0x7'));var client=jayson[_0x680e('0x8')][_0x680e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x29ce29,_0xd5da80,_0x2026f7){return new BPromise(function(_0x125aeb,_0x2c0ae6){return client[_0x680e('0xa')](_0x29ce29,_0x2026f7)[_0x680e('0xb')](function(_0x18f7e3){logger[_0x680e('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0xd5da80,'request\x20sent');logger['debug'](_0x680e('0xd'),_0xd5da80,_0x680e('0xe'),JSON[_0x680e('0xf')](_0x18f7e3));if(_0x18f7e3[_0x680e('0x10')]){if(_0x18f7e3['error'][_0x680e('0x11')]===0x1f4){logger[_0x680e('0x10')](_0x680e('0x12'),_0xd5da80,_0x18f7e3[_0x680e('0x10')]['message']);return _0x2c0ae6(_0x18f7e3[_0x680e('0x10')][_0x680e('0x13')]);}logger[_0x680e('0x10')](_0x680e('0x12'),_0xd5da80,_0x18f7e3[_0x680e('0x10')][_0x680e('0x13')]);return _0x125aeb(_0x18f7e3[_0x680e('0x10')][_0x680e('0x13')]);}else{logger[_0x680e('0xc')](_0x680e('0x12'),_0xd5da80,_0x680e('0xe'));_0x125aeb(_0x18f7e3[_0x680e('0x14')][_0x680e('0x13')]);}})['catch'](function(_0x2af1c7){logger[_0x680e('0x10')](_0x680e('0x12'),_0xd5da80,_0x2af1c7);_0x2c0ae6(_0x2af1c7);});});}
\ No newline at end of file
index e427257..30c5cf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf7=['/:id','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated'];(function(_0x565104,_0x49e01f){var _0x1a24e4=function(_0x11e148){while(--_0x11e148){_0x565104['push'](_0x565104['shift']());}};_0x1a24e4(++_0x49e01f);}(_0xacf7,0x1bd));var _0x7acf=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xacf7[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0x7acf('0x0'));var util=require(_0x7acf('0x1'));var path=require(_0x7acf('0x2'));var timeout=require(_0x7acf('0x3'));var express=require(_0x7acf('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x7acf('0x5'));var interaction=require(_0x7acf('0x6'));var config=require(_0x7acf('0x7'));var controller=require(_0x7acf('0x8'));router[_0x7acf('0x9')]('/',auth[_0x7acf('0xa')](),controller['index']);router[_0x7acf('0x9')](_0x7acf('0xb'),auth[_0x7acf('0xa')](),controller['show']);router[_0x7acf('0xc')]('/',auth[_0x7acf('0xa')](),controller[_0x7acf('0xd')]);router[_0x7acf('0xe')](_0x7acf('0xb'),auth[_0x7acf('0xa')](),controller[_0x7acf('0xf')]);router[_0x7acf('0x10')](_0x7acf('0xb'),auth[_0x7acf('0xa')](),controller[_0x7acf('0x11')]);module[_0x7acf('0x12')]=router;
\ No newline at end of file
+var _0xd3f3=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x31bfbb,_0x3476ce){var _0x6d6cdd=function(_0x55d12e){while(--_0x55d12e){_0x31bfbb['push'](_0x31bfbb['shift']());}};_0x6d6cdd(++_0x3476ce);}(_0xd3f3,0xf0));var _0x3d3f=function(_0x591963,_0x4b650c){_0x591963=_0x591963-0x0;var _0x1b42bc=_0xd3f3[_0x591963];return _0x1b42bc;};'use strict';var multer=require(_0x3d3f('0x0'));var util=require('util');var path=require(_0x3d3f('0x1'));var timeout=require(_0x3d3f('0x2'));var express=require(_0x3d3f('0x3'));var router=express[_0x3d3f('0x4')]();var fs_extra=require(_0x3d3f('0x5'));var auth=require(_0x3d3f('0x6'));var interaction=require(_0x3d3f('0x7'));var config=require(_0x3d3f('0x8'));var controller=require('./intDeskField.controller');router[_0x3d3f('0x9')]('/',auth[_0x3d3f('0xa')](),controller[_0x3d3f('0xb')]);router[_0x3d3f('0x9')](_0x3d3f('0xc'),auth[_0x3d3f('0xa')](),controller[_0x3d3f('0xd')]);router[_0x3d3f('0xe')]('/',auth[_0x3d3f('0xa')](),controller['create']);router[_0x3d3f('0xf')](_0x3d3f('0xc'),auth[_0x3d3f('0xa')](),controller[_0x3d3f('0x10')]);router['delete'](_0x3d3f('0xc'),auth[_0x3d3f('0xa')](),controller[_0x3d3f('0x11')]);module[_0x3d3f('0x12')]=router;
\ No newline at end of file
index ee4582a..8519fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x701d=['keyValue','picklist','STRING','sequelize','ENUM','string','variable','customVariable'];(function(_0x2044e9,_0x1d8fba){var _0x25afad=function(_0x45a1ac){while(--_0x45a1ac){_0x2044e9['push'](_0x2044e9['shift']());}};_0x25afad(++_0x1d8fba);}(_0x701d,0x1a3));var _0xd701=function(_0x34c5b9,_0x35bb70){_0x34c5b9=_0x34c5b9-0x0;var _0x365b67=_0x701d[_0x34c5b9];return _0x365b67;};'use strict';var Sequelize=require(_0xd701('0x0'));module['exports']={'type':{'type':Sequelize[_0xd701('0x1')](_0xd701('0x2'),_0xd701('0x3'),_0xd701('0x4'),_0xd701('0x5'),_0xd701('0x6')),'defaultValue':_0xd701('0x2')},'content':{'type':Sequelize[_0xd701('0x7')]},'key':{'type':Sequelize[_0xd701('0x7')]},'keyType':{'type':Sequelize[_0xd701('0x1')](_0xd701('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xd701('0x7')]},'idField':{'type':Sequelize[_0xd701('0x7')]},'nameField':{'type':Sequelize[_0xd701('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd701('0x7')]}};
\ No newline at end of file
+var _0x4d74=['sequelize','exports','variable','keyValue','picklist','string','STRING','ENUM','customVariable'];(function(_0x5eb406,_0x416efe){var _0x40bafd=function(_0x53bee6){while(--_0x53bee6){_0x5eb406['push'](_0x5eb406['shift']());}};_0x40bafd(++_0x416efe);}(_0x4d74,0xcf));var _0x44d7=function(_0xd839e7,_0x4209e9){_0xd839e7=_0xd839e7-0x0;var _0xc3cf23=_0x4d74[_0xd839e7];return _0xc3cf23;};'use strict';var Sequelize=require(_0x44d7('0x0'));module[_0x44d7('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x44d7('0x2'),'customVariable',_0x44d7('0x3'),_0x44d7('0x4')),'defaultValue':_0x44d7('0x5')},'content':{'type':Sequelize[_0x44d7('0x6')]},'key':{'type':Sequelize[_0x44d7('0x6')]},'keyType':{'type':Sequelize[_0x44d7('0x7')](_0x44d7('0x5'),_0x44d7('0x2'),_0x44d7('0x8'))},'keyContent':{'type':Sequelize[_0x44d7('0x6')]},'idField':{'type':Sequelize[_0x44d7('0x6')]},'nameField':{'type':Sequelize[_0x44d7('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x44d7('0x6')]}};
\ No newline at end of file
index 168ea48..7c413c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc051=['map','DeskField','rawAttributes','fieldName','type','key','model','keys','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','fields','options','find','catch','create','body','update','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','json','then','destroy','error','stack','name','send','index'];(function(_0xbbd1cd,_0x5f3a89){var _0x9a3176=function(_0x31c37b){while(--_0x31c37b){_0xbbd1cd['push'](_0xbbd1cd['shift']());}};_0x9a3176(++_0x5f3a89);}(_0xc051,0xb5));var _0x1c05=function(_0x43614b,_0x1b8bb0){_0x43614b=_0x43614b-0x0;var _0x188e6b=_0xc051[_0x43614b];return _0x188e6b;};'use strict';var emlformat=require(_0x1c05('0x0'));var rimraf=require(_0x1c05('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1c05('0x2'));var moment=require(_0x1c05('0x3'));var BPromise=require(_0x1c05('0x4'));var Mustache=require(_0x1c05('0x5'));var util=require('util');var path=require(_0x1c05('0x6'));var sox=require(_0x1c05('0x7'));var csv=require(_0x1c05('0x8'));var ejs=require(_0x1c05('0x9'));var fs=require('fs');var fs_extra=require(_0x1c05('0xa'));var _=require(_0x1c05('0xb'));var squel=require(_0x1c05('0xc'));var crypto=require(_0x1c05('0xd'));var jsforce=require(_0x1c05('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1c05('0x8'));var querystring=require(_0x1c05('0xf'));var Papa=require(_0x1c05('0x10'));var Redis=require(_0x1c05('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1c05('0x12'));var as=require(_0x1c05('0x13'));var hardwareService=require(_0x1c05('0x14'));var logger=require(_0x1c05('0x15'))('api');var utils=require(_0x1c05('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x1c05('0x17'));var db=require(_0x1c05('0x18'))['db'];function respondWithStatusCode(_0x188301,_0x32cbf0){_0x32cbf0=_0x32cbf0||0xcc;return function(_0x4474ef){if(_0x4474ef){return _0x188301[_0x1c05('0x19')](_0x32cbf0);}return _0x188301[_0x1c05('0x1a')](_0x32cbf0)[_0x1c05('0x1b')]();};}function respondWithResult(_0x4de1c8,_0x2ba5a2){_0x2ba5a2=_0x2ba5a2||0xc8;return function(_0x2bffb8){if(_0x2bffb8){return _0x4de1c8[_0x1c05('0x1a')](_0x2ba5a2)['json'](_0x2bffb8);}};}function respondWithFilteredResult(_0x8fe340,_0x175166){return function(_0x26a61e){if(_0x26a61e){var _0x568633=typeof _0x175166[_0x1c05('0x1c')]==='undefined'&&typeof _0x175166[_0x1c05('0x1d')]===_0x1c05('0x1e');var _0x3af388=_0x26a61e[_0x1c05('0x1f')];var _0x5ac8cc=_0x568633?0x0:_0x175166['offset'];var _0x6ec656=_0x568633?_0x26a61e[_0x1c05('0x1f')]:_0x175166[_0x1c05('0x1c')]+_0x175166['limit'];var _0x2e177c;if(_0x6ec656>=_0x3af388){_0x6ec656=_0x3af388;_0x2e177c=0xc8;}else{_0x2e177c=0xce;}_0x8fe340[_0x1c05('0x1a')](_0x2e177c);return _0x8fe340[_0x1c05('0x20')]('Content-Range',_0x5ac8cc+'-'+_0x6ec656+'/'+_0x3af388)[_0x1c05('0x21')](_0x26a61e);}return null;};}function patchUpdates(_0x32cce1){return function(_0x4a4bff){try{jsonpatch['apply'](_0x4a4bff,_0x32cce1,!![]);}catch(_0x157af8){return BPromise['reject'](_0x157af8);}return _0x4a4bff['save']();};}function saveUpdates(_0x549b51,_0x31beae){return function(_0xcce64e){if(_0xcce64e){return _0xcce64e['update'](_0x549b51)[_0x1c05('0x22')](function(_0x357401){return _0x357401;});}return null;};}function removeEntity(_0x1d268e,_0x2cf340){return function(_0x5f4a4c){if(_0x5f4a4c){return _0x5f4a4c[_0x1c05('0x23')]()[_0x1c05('0x22')](function(){_0x1d268e[_0x1c05('0x1a')](0xcc)[_0x1c05('0x1b')]();});}};}function handleEntityNotFound(_0x25d863,_0x63ba3e){return function(_0x56c701){if(!_0x56c701){_0x25d863[_0x1c05('0x19')](0x194);}return _0x56c701;};}function handleError(_0x1dd767,_0x248f1d){_0x248f1d=_0x248f1d||0x1f4;return function(_0x334a42){logger[_0x1c05('0x24')](_0x334a42[_0x1c05('0x25')]);if(_0x334a42[_0x1c05('0x26')]){delete _0x334a42['name'];}_0x1dd767[_0x1c05('0x1a')](_0x248f1d)[_0x1c05('0x27')](_0x334a42);};}exports[_0x1c05('0x28')]=function(_0x5026ab,_0x52bc85){var _0x21594d={},_0x1d548e={},_0x1ca0de={'count':0x0,'rows':[]};var _0x404b36=_[_0x1c05('0x29')](db[_0x1c05('0x2a')][_0x1c05('0x2b')],function(_0x6ff3fe){return{'name':_0x6ff3fe[_0x1c05('0x2c')],'type':_0x6ff3fe[_0x1c05('0x2d')][_0x1c05('0x2e')]};});_0x1d548e[_0x1c05('0x2f')]=_[_0x1c05('0x29')](_0x404b36,_0x1c05('0x26'));_0x1d548e['query']=_[_0x1c05('0x30')](_0x5026ab['query']);_0x1d548e['filters']=_[_0x1c05('0x31')](_0x1d548e[_0x1c05('0x2f')],_0x1d548e[_0x1c05('0x32')]);_0x21594d[_0x1c05('0x33')]=_['intersection'](_0x1d548e[_0x1c05('0x2f')],qs['fields'](_0x5026ab[_0x1c05('0x32')]['fields']));_0x21594d[_0x1c05('0x33')]=_0x21594d[_0x1c05('0x33')][_0x1c05('0x34')]?_0x21594d[_0x1c05('0x33')]:_0x1d548e[_0x1c05('0x2f')];if(!_0x5026ab[_0x1c05('0x32')][_0x1c05('0x35')](_0x1c05('0x36'))){_0x21594d[_0x1c05('0x1d')]=qs[_0x1c05('0x1d')](_0x5026ab[_0x1c05('0x32')][_0x1c05('0x1d')]);_0x21594d[_0x1c05('0x1c')]=qs[_0x1c05('0x1c')](_0x5026ab[_0x1c05('0x32')][_0x1c05('0x1c')]);}_0x21594d[_0x1c05('0x37')]=qs[_0x1c05('0x38')](_0x5026ab['query'][_0x1c05('0x38')]);_0x21594d[_0x1c05('0x39')]=qs['filters'](_['pick'](_0x5026ab[_0x1c05('0x32')],_0x1d548e[_0x1c05('0x3a')]),_0x404b36);if(_0x5026ab[_0x1c05('0x32')]['filter']){_0x21594d[_0x1c05('0x39')]=_[_0x1c05('0x3b')](_0x21594d[_0x1c05('0x39')],{'$or':_['map'](_0x404b36,function(_0x21eacf){if(_0x21eacf[_0x1c05('0x2d')]!==_0x1c05('0x3c')){var _0x5b4e12={};_0x5b4e12[_0x21eacf['name']]={'$like':'%'+_0x5026ab['query']['filter']+'%'};return _0x5b4e12;}})});}_0x21594d=_[_0x1c05('0x3b')]({},_0x21594d,_0x5026ab['options']);var _0x583062={'where':_0x21594d[_0x1c05('0x39')]};return db[_0x1c05('0x2a')][_0x1c05('0x1f')](_0x583062)['then'](function(_0x12b88d){_0x1ca0de[_0x1c05('0x1f')]=_0x12b88d;if(_0x5026ab[_0x1c05('0x32')][_0x1c05('0x3d')]){_0x21594d[_0x1c05('0x3e')]=[{'all':!![]}];}return db[_0x1c05('0x2a')][_0x1c05('0x3f')](_0x21594d);})[_0x1c05('0x22')](function(_0x4f6264){_0x1ca0de[_0x1c05('0x40')]=_0x4f6264;return _0x1ca0de;})[_0x1c05('0x22')](respondWithFilteredResult(_0x52bc85,_0x21594d))['catch'](handleError(_0x52bc85,null));};exports[_0x1c05('0x41')]=function(_0x317a0b,_0x568cdd){var _0x28ae69={'raw':!![],'where':{'id':_0x317a0b[_0x1c05('0x42')]['id']}},_0x12bc9f={};_0x12bc9f[_0x1c05('0x2f')]=_['keys'](db[_0x1c05('0x2a')]['rawAttributes']);_0x12bc9f['query']=_[_0x1c05('0x30')](_0x317a0b[_0x1c05('0x32')]);_0x12bc9f[_0x1c05('0x3a')]=_['intersection'](_0x12bc9f[_0x1c05('0x2f')],_0x12bc9f['query']);_0x28ae69[_0x1c05('0x33')]=_['intersection'](_0x12bc9f[_0x1c05('0x2f')],qs[_0x1c05('0x43')](_0x317a0b['query'][_0x1c05('0x43')]));_0x28ae69[_0x1c05('0x33')]=_0x28ae69[_0x1c05('0x33')][_0x1c05('0x34')]?_0x28ae69[_0x1c05('0x33')]:_0x12bc9f[_0x1c05('0x2f')];if(_0x317a0b[_0x1c05('0x32')][_0x1c05('0x3d')]){_0x28ae69[_0x1c05('0x3e')]=[{'all':!![]}];}_0x28ae69=_['merge']({},_0x28ae69,_0x317a0b[_0x1c05('0x44')]);return db[_0x1c05('0x2a')][_0x1c05('0x45')](_0x28ae69)['then'](handleEntityNotFound(_0x568cdd,null))[_0x1c05('0x22')](respondWithResult(_0x568cdd,null))[_0x1c05('0x46')](handleError(_0x568cdd,null));};exports[_0x1c05('0x47')]=function(_0x2a02f7,_0xbb4b31){return db[_0x1c05('0x2a')][_0x1c05('0x47')](_0x2a02f7[_0x1c05('0x48')],{})[_0x1c05('0x22')](respondWithResult(_0xbb4b31,0xc9))[_0x1c05('0x46')](handleError(_0xbb4b31,null));};exports[_0x1c05('0x49')]=function(_0x4dc4fb,_0x3626c4){if(_0x4dc4fb['body']['id']){delete _0x4dc4fb[_0x1c05('0x48')]['id'];}return db[_0x1c05('0x2a')][_0x1c05('0x45')]({'where':{'id':_0x4dc4fb['params']['id']}})[_0x1c05('0x22')](handleEntityNotFound(_0x3626c4,null))['then'](saveUpdates(_0x4dc4fb[_0x1c05('0x48')],null))[_0x1c05('0x22')](respondWithResult(_0x3626c4,null))[_0x1c05('0x46')](handleError(_0x3626c4,null));};exports[_0x1c05('0x23')]=function(_0x3fddb1,_0x448422){return db[_0x1c05('0x2a')][_0x1c05('0x45')]({'where':{'id':_0x3fddb1[_0x1c05('0x42')]['id']}})['then'](handleEntityNotFound(_0x448422,null))[_0x1c05('0x22')](removeEntity(_0x448422,null))[_0x1c05('0x46')](handleError(_0x448422,null));};
\ No newline at end of file
+var _0x017e=['reject','update','then','error','stack','name','index','map','DeskField','rawAttributes','fieldName','key','model','query','keys','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','type','filter','options','includeAll','include','rows','show','params','intersection','fields','merge','catch','create','body','find','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','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','status','end','json','undefined','count','offset','limit','set','apply'];(function(_0x87922d,_0x15ac4c){var _0x2bf78c=function(_0x2b2dba){while(--_0x2b2dba){_0x87922d['push'](_0x87922d['shift']());}};_0x2bf78c(++_0x15ac4c);}(_0x017e,0x10c));var _0xe017=function(_0x5aa4cc,_0x49d641){_0x5aa4cc=_0x5aa4cc-0x0;var _0x52b505=_0x017e[_0x5aa4cc];return _0x52b505;};'use strict';var emlformat=require(_0xe017('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe017('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe017('0x2'));var moment=require(_0xe017('0x3'));var BPromise=require(_0xe017('0x4'));var Mustache=require(_0xe017('0x5'));var util=require(_0xe017('0x6'));var path=require('path');var sox=require(_0xe017('0x7'));var csv=require('to-csv');var ejs=require(_0xe017('0x8'));var fs=require('fs');var fs_extra=require(_0xe017('0x9'));var _=require(_0xe017('0xa'));var squel=require(_0xe017('0xb'));var crypto=require('crypto');var jsforce=require(_0xe017('0xc'));var deskjs=require(_0xe017('0xd'));var toCsv=require(_0xe017('0xe'));var querystring=require(_0xe017('0xf'));var Papa=require(_0xe017('0x10'));var Redis=require(_0xe017('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe017('0x12'));var as=require(_0xe017('0x13'));var hardwareService=require(_0xe017('0x14'));var logger=require(_0xe017('0x15'))(_0xe017('0x16'));var utils=require('../../config/utils');var config=require(_0xe017('0x17'));var licenseUtil=require(_0xe017('0x18'));var db=require(_0xe017('0x19'))['db'];function respondWithStatusCode(_0x45de1e,_0x316f71){_0x316f71=_0x316f71||0xcc;return function(_0x5cbaf7){if(_0x5cbaf7){return _0x45de1e[_0xe017('0x1a')](_0x316f71);}return _0x45de1e[_0xe017('0x1b')](_0x316f71)[_0xe017('0x1c')]();};}function respondWithResult(_0x3615ec,_0x163877){_0x163877=_0x163877||0xc8;return function(_0x7e07b1){if(_0x7e07b1){return _0x3615ec[_0xe017('0x1b')](_0x163877)[_0xe017('0x1d')](_0x7e07b1);}};}function respondWithFilteredResult(_0x2d2a0d,_0x204132){return function(_0x1ac793){if(_0x1ac793){var _0x5055a1=typeof _0x204132['offset']===_0xe017('0x1e')&&typeof _0x204132['limit']===_0xe017('0x1e');var _0x5bfc48=_0x1ac793[_0xe017('0x1f')];var _0x3d7859=_0x5055a1?0x0:_0x204132[_0xe017('0x20')];var _0x1a9d48=_0x5055a1?_0x1ac793[_0xe017('0x1f')]:_0x204132['offset']+_0x204132[_0xe017('0x21')];var _0x1b8cf6;if(_0x1a9d48>=_0x5bfc48){_0x1a9d48=_0x5bfc48;_0x1b8cf6=0xc8;}else{_0x1b8cf6=0xce;}_0x2d2a0d[_0xe017('0x1b')](_0x1b8cf6);return _0x2d2a0d[_0xe017('0x22')]('Content-Range',_0x3d7859+'-'+_0x1a9d48+'/'+_0x5bfc48)[_0xe017('0x1d')](_0x1ac793);}return null;};}function patchUpdates(_0x4079bf){return function(_0x202555){try{jsonpatch[_0xe017('0x23')](_0x202555,_0x4079bf,!![]);}catch(_0x114c87){return BPromise[_0xe017('0x24')](_0x114c87);}return _0x202555['save']();};}function saveUpdates(_0x34aa2f,_0x1026eb){return function(_0x3308bf){if(_0x3308bf){return _0x3308bf[_0xe017('0x25')](_0x34aa2f)['then'](function(_0x1a1202){return _0x1a1202;});}return null;};}function removeEntity(_0x4d1919,_0x19599a){return function(_0x1600e0){if(_0x1600e0){return _0x1600e0['destroy']()[_0xe017('0x26')](function(){_0x4d1919[_0xe017('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dcb34,_0x114049){return function(_0xbde895){if(!_0xbde895){_0x4dcb34[_0xe017('0x1a')](0x194);}return _0xbde895;};}function handleError(_0x50414a,_0x3a31af){_0x3a31af=_0x3a31af||0x1f4;return function(_0x1bdba8){logger[_0xe017('0x27')](_0x1bdba8[_0xe017('0x28')]);if(_0x1bdba8[_0xe017('0x29')]){delete _0x1bdba8[_0xe017('0x29')];}_0x50414a[_0xe017('0x1b')](_0x3a31af)['send'](_0x1bdba8);};}exports[_0xe017('0x2a')]=function(_0x3857de,_0x37527e){var _0x13b9e7={},_0x2436cc={},_0x2f4bc0={'count':0x0,'rows':[]};var _0x4b8ff=_[_0xe017('0x2b')](db[_0xe017('0x2c')][_0xe017('0x2d')],function(_0x19dd70){return{'name':_0x19dd70[_0xe017('0x2e')],'type':_0x19dd70['type'][_0xe017('0x2f')]};});_0x2436cc[_0xe017('0x30')]=_[_0xe017('0x2b')](_0x4b8ff,_0xe017('0x29'));_0x2436cc[_0xe017('0x31')]=_[_0xe017('0x32')](_0x3857de['query']);_0x2436cc['filters']=_['intersection'](_0x2436cc[_0xe017('0x30')],_0x2436cc[_0xe017('0x31')]);_0x13b9e7[_0xe017('0x33')]=_['intersection'](_0x2436cc[_0xe017('0x30')],qs['fields'](_0x3857de[_0xe017('0x31')]['fields']));_0x13b9e7['attributes']=_0x13b9e7[_0xe017('0x33')][_0xe017('0x34')]?_0x13b9e7[_0xe017('0x33')]:_0x2436cc[_0xe017('0x30')];if(!_0x3857de['query'][_0xe017('0x35')](_0xe017('0x36'))){_0x13b9e7['limit']=qs['limit'](_0x3857de[_0xe017('0x31')][_0xe017('0x21')]);_0x13b9e7[_0xe017('0x20')]=qs[_0xe017('0x20')](_0x3857de[_0xe017('0x31')][_0xe017('0x20')]);}_0x13b9e7[_0xe017('0x37')]=qs[_0xe017('0x38')](_0x3857de[_0xe017('0x31')]['sort']);_0x13b9e7['where']=qs[_0xe017('0x39')](_[_0xe017('0x3a')](_0x3857de[_0xe017('0x31')],_0x2436cc['filters']),_0x4b8ff);if(_0x3857de['query']['filter']){_0x13b9e7[_0xe017('0x3b')]=_['merge'](_0x13b9e7[_0xe017('0x3b')],{'$or':_[_0xe017('0x2b')](_0x4b8ff,function(_0x368565){if(_0x368565[_0xe017('0x3c')]!=='VIRTUAL'){var _0x296ce9={};_0x296ce9[_0x368565[_0xe017('0x29')]]={'$like':'%'+_0x3857de[_0xe017('0x31')][_0xe017('0x3d')]+'%'};return _0x296ce9;}})});}_0x13b9e7=_['merge']({},_0x13b9e7,_0x3857de[_0xe017('0x3e')]);var _0x24ca35={'where':_0x13b9e7[_0xe017('0x3b')]};return db[_0xe017('0x2c')]['count'](_0x24ca35)['then'](function(_0x13d147){_0x2f4bc0[_0xe017('0x1f')]=_0x13d147;if(_0x3857de[_0xe017('0x31')][_0xe017('0x3f')]){_0x13b9e7[_0xe017('0x40')]=[{'all':!![]}];}return db[_0xe017('0x2c')]['findAll'](_0x13b9e7);})['then'](function(_0xa643d){_0x2f4bc0[_0xe017('0x41')]=_0xa643d;return _0x2f4bc0;})['then'](respondWithFilteredResult(_0x37527e,_0x13b9e7))['catch'](handleError(_0x37527e,null));};exports[_0xe017('0x42')]=function(_0x3921ab,_0x10fb24){var _0x42e90c={'raw':!![],'where':{'id':_0x3921ab[_0xe017('0x43')]['id']}},_0x45ffe7={};_0x45ffe7[_0xe017('0x30')]=_['keys'](db['DeskField'][_0xe017('0x2d')]);_0x45ffe7['query']=_[_0xe017('0x32')](_0x3921ab[_0xe017('0x31')]);_0x45ffe7[_0xe017('0x39')]=_[_0xe017('0x44')](_0x45ffe7[_0xe017('0x30')],_0x45ffe7['query']);_0x42e90c[_0xe017('0x33')]=_[_0xe017('0x44')](_0x45ffe7['model'],qs[_0xe017('0x45')](_0x3921ab[_0xe017('0x31')][_0xe017('0x45')]));_0x42e90c[_0xe017('0x33')]=_0x42e90c['attributes']['length']?_0x42e90c[_0xe017('0x33')]:_0x45ffe7['model'];if(_0x3921ab[_0xe017('0x31')]['includeAll']){_0x42e90c[_0xe017('0x40')]=[{'all':!![]}];}_0x42e90c=_[_0xe017('0x46')]({},_0x42e90c,_0x3921ab[_0xe017('0x3e')]);return db['DeskField']['find'](_0x42e90c)[_0xe017('0x26')](handleEntityNotFound(_0x10fb24,null))[_0xe017('0x26')](respondWithResult(_0x10fb24,null))[_0xe017('0x47')](handleError(_0x10fb24,null));};exports[_0xe017('0x48')]=function(_0x59a938,_0x53d29a){return db['DeskField'][_0xe017('0x48')](_0x59a938[_0xe017('0x49')],{})['then'](respondWithResult(_0x53d29a,0xc9))[_0xe017('0x47')](handleError(_0x53d29a,null));};exports[_0xe017('0x25')]=function(_0x341aef,_0x5ad758){if(_0x341aef[_0xe017('0x49')]['id']){delete _0x341aef[_0xe017('0x49')]['id'];}return db[_0xe017('0x2c')][_0xe017('0x4a')]({'where':{'id':_0x341aef[_0xe017('0x43')]['id']}})[_0xe017('0x26')](handleEntityNotFound(_0x5ad758,null))[_0xe017('0x26')](saveUpdates(_0x341aef[_0xe017('0x49')],null))[_0xe017('0x26')](respondWithResult(_0x5ad758,null))[_0xe017('0x47')](handleError(_0x5ad758,null));};exports[_0xe017('0x4b')]=function(_0x87b386,_0x3248cd){return db[_0xe017('0x2c')][_0xe017('0x4a')]({'where':{'id':_0x87b386[_0xe017('0x43')]['id']}})['then'](handleEntityNotFound(_0x3248cd,null))['then'](removeEntity(_0x3248cd,null))[_0xe017('0x47')](handleError(_0x3248cd,null));};
\ No newline at end of file
index 76af0d2..6c462ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0fd=['request-promise','../../config/environment','exports','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x19f1fc,_0x142c09){var _0x5822f7=function(_0x4b7038){while(--_0x4b7038){_0x19f1fc['push'](_0x19f1fc['shift']());}};_0x5822f7(++_0x142c09);}(_0xe0fd,0xb9));var _0xde0f=function(_0x3bc89f,_0x49a1b3){_0x3bc89f=_0x3bc89f-0x0;var _0x46e2af=_0xe0fd[_0x3bc89f];return _0x46e2af;};'use strict';var _=require(_0xde0f('0x0'));var util=require(_0xde0f('0x1'));var logger=require(_0xde0f('0x2'))(_0xde0f('0x3'));var moment=require(_0xde0f('0x4'));var BPromise=require('bluebird');var rp=require(_0xde0f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xde0f('0x6'));var attributes=require('./intDeskField.attributes');module[_0xde0f('0x7')]=function(_0x2cb9e7,_0x4773b6){return _0x2cb9e7['define']('DeskField',attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0xde0f('0x8'),_0xde0f('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa0a=['../../config/logger','api','moment','bluebird','request-promise','path','./intDeskField.attributes','exports','define','idField','FieldId','util'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0xfa0a,0x6b));var _0xafa0=function(_0x5f1d5a,_0x1c85a7){_0x5f1d5a=_0x5f1d5a-0x0;var _0x449071=_0xfa0a[_0x5f1d5a];return _0x449071;};'use strict';var _=require('lodash');var util=require(_0xafa0('0x0'));var logger=require(_0xafa0('0x1'))(_0xafa0('0x2'));var moment=require(_0xafa0('0x3'));var BPromise=require(_0xafa0('0x4'));var rp=require(_0xafa0('0x5'));var fs=require('fs');var path=require(_0xafa0('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xafa0('0x7'));module[_0xafa0('0x8')]=function(_0x231d53,_0x332355){return _0x231d53[_0xafa0('0x9')]('DeskField',attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0xafa0('0xa'),_0xafa0('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8847b37..9f88a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d2a=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','debug','request\x20sent','stringify','error','DeskField,\x20%s,\x20%s','message','result','catch'];(function(_0x2709c2,_0x3c971c){var _0x573765=function(_0x41ef3f){while(--_0x41ef3f){_0x2709c2['push'](_0x2709c2['shift']());}};_0x573765(++_0x3c971c);}(_0x5d2a,0x11e));var _0xa5d2=function(_0x563166,_0x23401a){_0x563166=_0x563166-0x0;var _0x59ba99=_0x5d2a[_0x563166];return _0x59ba99;};'use strict';var _=require(_0xa5d2('0x0'));var util=require(_0xa5d2('0x1'));var moment=require(_0xa5d2('0x2'));var BPromise=require(_0xa5d2('0x3'));var rs=require(_0xa5d2('0x4'));var fs=require('fs');var Redis=require(_0xa5d2('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa5d2('0x6'));var logger=require(_0xa5d2('0x7'))(_0xa5d2('0x8'));var config=require(_0xa5d2('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa5d2('0xa')][_0xa5d2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1980f9,_0x36361f,_0x1e7f16){return new BPromise(function(_0x387cf8,_0x57c0c4){return client[_0xa5d2('0xc')](_0x1980f9,_0x1e7f16)['then'](function(_0x41c4c3){logger[_0xa5d2('0xd')]('DeskField,\x20%s,\x20%s',_0x36361f,'request\x20sent');logger[_0xa5d2('0xe')]('DeskField,\x20%s,\x20%s,\x20%s',_0x36361f,_0xa5d2('0xf'),JSON[_0xa5d2('0x10')](_0x41c4c3));if(_0x41c4c3[_0xa5d2('0x11')]){if(_0x41c4c3['error']['code']===0x1f4){logger[_0xa5d2('0x11')](_0xa5d2('0x12'),_0x36361f,_0x41c4c3[_0xa5d2('0x11')][_0xa5d2('0x13')]);return _0x57c0c4(_0x41c4c3[_0xa5d2('0x11')][_0xa5d2('0x13')]);}logger[_0xa5d2('0x11')](_0xa5d2('0x12'),_0x36361f,_0x41c4c3[_0xa5d2('0x11')][_0xa5d2('0x13')]);return _0x387cf8(_0x41c4c3[_0xa5d2('0x11')][_0xa5d2('0x13')]);}else{logger[_0xa5d2('0xd')]('DeskField,\x20%s,\x20%s',_0x36361f,'request\x20sent');_0x387cf8(_0x41c4c3[_0xa5d2('0x14')][_0xa5d2('0x13')]);}})[_0xa5d2('0x15')](function(_0x2bc75d){logger[_0xa5d2('0x11')]('DeskField,\x20%s,\x20%s',_0x36361f,_0x2bc75d);_0x57c0c4(_0x2bc75d);});});}
\ No newline at end of file
+var _0x8e29=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment'];(function(_0x43d7af,_0x6a0acc){var _0xae4ae4=function(_0x37f4dc){while(--_0x37f4dc){_0x43d7af['push'](_0x43d7af['shift']());}};_0xae4ae4(++_0x6a0acc);}(_0x8e29,0x8e));var _0x98e2=function(_0x4905a0,_0x1f4bf8){_0x4905a0=_0x4905a0-0x0;var _0x35e3cc=_0x8e29[_0x4905a0];return _0x35e3cc;};'use strict';var _=require('lodash');var util=require(_0x98e2('0x0'));var moment=require(_0x98e2('0x1'));var BPromise=require(_0x98e2('0x2'));var rs=require(_0x98e2('0x3'));var fs=require('fs');var Redis=require(_0x98e2('0x4'));var db=require(_0x98e2('0x5'))['db'];var utils=require(_0x98e2('0x6'));var logger=require(_0x98e2('0x7'))(_0x98e2('0x8'));var config=require(_0x98e2('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x98e2('0xa')][_0x98e2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3e762f,_0x29115b,_0x5b13b7){return new BPromise(function(_0x181cca,_0x281e48){return client['request'](_0x3e762f,_0x5b13b7)[_0x98e2('0xc')](function(_0x28a7dc){logger['info'](_0x98e2('0xd'),_0x29115b,_0x98e2('0xe'));logger[_0x98e2('0xf')](_0x98e2('0x10'),_0x29115b,_0x98e2('0xe'),JSON[_0x98e2('0x11')](_0x28a7dc));if(_0x28a7dc[_0x98e2('0x12')]){if(_0x28a7dc[_0x98e2('0x12')][_0x98e2('0x13')]===0x1f4){logger[_0x98e2('0x12')](_0x98e2('0xd'),_0x29115b,_0x28a7dc['error']['message']);return _0x281e48(_0x28a7dc[_0x98e2('0x12')][_0x98e2('0x14')]);}logger['error'](_0x98e2('0xd'),_0x29115b,_0x28a7dc[_0x98e2('0x12')]['message']);return _0x181cca(_0x28a7dc[_0x98e2('0x12')][_0x98e2('0x14')]);}else{logger[_0x98e2('0x15')]('DeskField,\x20%s,\x20%s',_0x29115b,'request\x20sent');_0x181cca(_0x28a7dc[_0x98e2('0x16')][_0x98e2('0x14')]);}})[_0x98e2('0x17')](function(_0x56525b){logger[_0x98e2('0x12')](_0x98e2('0xd'),_0x29115b,_0x56525b);_0x281e48(_0x56525b);});});}
\ No newline at end of file
index dd3eea2..638a765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a78=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','post','addConfiguration','put'];(function(_0x59a3a6,_0x4697bd){var _0x39c29c=function(_0x43bfa0){while(--_0x43bfa0){_0x59a3a6['push'](_0x59a3a6['shift']());}};_0x39c29c(++_0x4697bd);}(_0x2a78,0x195));var _0x82a7=function(_0x38b0ca,_0x12a92c){_0x38b0ca=_0x38b0ca-0x0;var _0x4c84c4=_0x2a78[_0x38b0ca];return _0x4c84c4;};'use strict';var multer=require(_0x82a7('0x0'));var util=require(_0x82a7('0x1'));var path=require(_0x82a7('0x2'));var timeout=require(_0x82a7('0x3'));var express=require(_0x82a7('0x4'));var router=express[_0x82a7('0x5')]();var fs_extra=require(_0x82a7('0x6'));var auth=require(_0x82a7('0x7'));var interaction=require(_0x82a7('0x8'));var config=require(_0x82a7('0x9'));var controller=require(_0x82a7('0xa'));router[_0x82a7('0xb')]('/',auth[_0x82a7('0xc')](),controller['index']);router['get']('/:id',auth[_0x82a7('0xc')](),controller[_0x82a7('0xd')]);router[_0x82a7('0xb')](_0x82a7('0xe'),auth[_0x82a7('0xc')](),controller[_0x82a7('0xf')]);router[_0x82a7('0xb')](_0x82a7('0x10'),auth['isAuthenticated'](),controller['getFields']);router[_0x82a7('0x11')]('/',auth[_0x82a7('0xc')](),controller['create']);router[_0x82a7('0x11')](_0x82a7('0xe'),auth[_0x82a7('0xc')](),controller[_0x82a7('0x12')]);router[_0x82a7('0x13')](_0x82a7('0x14'),auth[_0x82a7('0xc')](),controller[_0x82a7('0x15')]);router[_0x82a7('0x16')](_0x82a7('0x14'),auth[_0x82a7('0xc')](),controller[_0x82a7('0x17')]);module[_0x82a7('0x18')]=router;
\ No newline at end of file
+var _0xcd23=['/:id/fields','getFields','create','post','addConfiguration','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','show','getConfigurations'];(function(_0x857c24,_0x2b0167){var _0x4fb875=function(_0x511824){while(--_0x511824){_0x857c24['push'](_0x857c24['shift']());}};_0x4fb875(++_0x2b0167);}(_0xcd23,0x195));var _0x3cd2=function(_0x1d2443,_0x2fe513){_0x1d2443=_0x1d2443-0x0;var _0x422891=_0xcd23[_0x1d2443];return _0x422891;};'use strict';var multer=require(_0x3cd2('0x0'));var util=require(_0x3cd2('0x1'));var path=require('path');var timeout=require(_0x3cd2('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3cd2('0x3'));var auth=require(_0x3cd2('0x4'));var interaction=require(_0x3cd2('0x5'));var config=require(_0x3cd2('0x6'));var controller=require(_0x3cd2('0x7'));router[_0x3cd2('0x8')]('/',auth[_0x3cd2('0x9')](),controller[_0x3cd2('0xa')]);router[_0x3cd2('0x8')]('/:id',auth[_0x3cd2('0x9')](),controller[_0x3cd2('0xb')]);router[_0x3cd2('0x8')]('/:id/configurations',auth[_0x3cd2('0x9')](),controller[_0x3cd2('0xc')]);router[_0x3cd2('0x8')](_0x3cd2('0xd'),auth[_0x3cd2('0x9')](),controller[_0x3cd2('0xe')]);router['post']('/',auth[_0x3cd2('0x9')](),controller[_0x3cd2('0xf')]);router[_0x3cd2('0x10')]('/:id/configurations',auth[_0x3cd2('0x9')](),controller[_0x3cd2('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x3cd2('0x12')]);router[_0x3cd2('0x13')]('/:id',auth[_0x3cd2('0x9')](),controller[_0x3cd2('0x14')]);module[_0x3cd2('0x15')]=router;
\ No newline at end of file
index 9d05206..47805fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f3=['STRING','BOOLEAN','exports'];(function(_0x15af0f,_0x5454ce){var _0x2bd1cb=function(_0x593818){while(--_0x593818){_0x15af0f['push'](_0x15af0f['shift']());}};_0x2bd1cb(++_0x5454ce);}(_0x36f3,0xe6));var _0x336f=function(_0x4345c9,_0x47aea0){_0x4345c9=_0x4345c9-0x0;var _0x78c554=_0x36f3[_0x4345c9];return _0x78c554;};'use strict';var Sequelize=require('sequelize');module[_0x336f('0x0')]={'name':{'type':Sequelize[_0x336f('0x1')]},'username':{'type':Sequelize[_0x336f('0x1')]},'password':{'type':Sequelize[_0x336f('0x1')]},'remoteUri':{'type':Sequelize[_0x336f('0x1')]},'tenantId':{'type':Sequelize[_0x336f('0x1')]},'clientId':{'type':Sequelize[_0x336f('0x1')]},'clientSecret':{'type':Sequelize[_0x336f('0x1')]},'serverUrl':{'type':Sequelize[_0x336f('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0x336f('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x28b1=['exports','STRING','sequelize'];(function(_0x2c6870,_0x51f8b2){var _0x2f9265=function(_0x5b3f5b){while(--_0x5b3f5b){_0x2c6870['push'](_0x2c6870['shift']());}};_0x2f9265(++_0x51f8b2);}(_0x28b1,0x1d6));var _0x128b=function(_0x472b66,_0x272c2c){_0x472b66=_0x472b66-0x0;var _0x1dc02a=_0x28b1[_0x472b66];return _0x1dc02a;};'use strict';var Sequelize=require(_0x128b('0x0'));module[_0x128b('0x1')]={'name':{'type':Sequelize[_0x128b('0x2')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x128b('0x2')]},'remoteUri':{'type':Sequelize[_0x128b('0x2')]},'tenantId':{'type':Sequelize[_0x128b('0x2')]},'clientId':{'type':Sequelize[_0x128b('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x128b('0x2')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 96db2f5..12738e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4202=['4.0','value','GET',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','remove','includes','forEach','@odata.type','lastIndexOf','MetadataId','all','isNil','BooleanAttributeMetadata','push','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','statusCode','EntityDefinitions(',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','Value',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','UserLocalizedLabel','true','FalseOption','false','LogicalName','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','api','../../components/integrations/configuration','status','offset','undefined','count','limit','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','catch','show','params','include','find','create','body','getConfigurations','findOne','Dynamics365Configuration','nolimit','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','Dynamics365Field','substring','format','getFields','ticketType','Incident','description','ownerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidyominame','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','exchangerate','firstresponsebykpiidname','followupby','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','tenantId','clientId','clientSecret','CloudProvider','data5','modernAuthentication','access_token','POST','https://login.microsoftonline.com/','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20'];(function(_0x3f8720,_0x422ede){var _0x3e09b6=function(_0x6a1788){while(--_0x6a1788){_0x3f8720['push'](_0x3f8720['shift']());}};_0x3e09b6(++_0x422ede);}(_0x4202,0xe8));var _0x2420=function(_0x2f6014,_0x5c65b7){_0x2f6014=_0x2f6014-0x0;var _0x21453a=_0x4202[_0x2f6014];return _0x21453a;};'use strict';var rp=require(_0x2420('0x0'));var util=require(_0x2420('0x1'));var _=require(_0x2420('0x2'));var qs=require(_0x2420('0x3'));var logger=require('../../config/logger')(_0x2420('0x4'));var db=require('../../mysqldb')['db'];var integrations=require(_0x2420('0x5'));function respondWithResult(_0xfbd3ab,_0xae4243){_0xae4243=_0xae4243||0xc8;return function(_0x445223){if(_0x445223){return _0xfbd3ab[_0x2420('0x6')](_0xae4243)['json'](_0x445223);}};}function respondWithFilteredResult(_0x2ae4ce,_0x59d3a6){return function(_0x3ae2c3){if(_0x3ae2c3){var _0x51a390=typeof _0x59d3a6[_0x2420('0x7')]===_0x2420('0x8')&&typeof _0x59d3a6['limit']===_0x2420('0x8');var _0x480706=_0x3ae2c3[_0x2420('0x9')];var _0x40cf1f=_0x51a390?0x0:_0x59d3a6['offset'];var _0xc42d88=_0x51a390?_0x3ae2c3[_0x2420('0x9')]:_0x59d3a6[_0x2420('0x7')]+_0x59d3a6[_0x2420('0xa')];var _0x492e43;if(_0xc42d88>=_0x480706){_0xc42d88=_0x480706;_0x492e43=0xc8;}else{_0x492e43=0xce;}_0x2ae4ce['status'](_0x492e43);return _0x2ae4ce[_0x2420('0xb')](_0x2420('0xc'),_0x40cf1f+'-'+_0xc42d88+'/'+_0x480706)['json'](_0x3ae2c3);}return null;};}function saveUpdates(_0xfd3878){return function(_0x46ab1e){if(_0x46ab1e){return _0x46ab1e[_0x2420('0xd')](_0xfd3878)[_0x2420('0xe')](function(_0x1554a7){return _0x1554a7;});}return null;};}function removeEntity(_0xd2e25e){return function(_0x461888){if(_0x461888){return _0x461888[_0x2420('0xf')]()[_0x2420('0xe')](function(){_0xd2e25e[_0x2420('0x6')](0xcc)[_0x2420('0x10')]();});}};}function handleEntityNotFound(_0x39d1fe){return function(_0x5161cd){if(!_0x5161cd){_0x39d1fe[_0x2420('0x11')](0x194);}return _0x5161cd;};}function handleError(_0x164261,_0x2d159f){_0x2d159f=_0x2d159f||0x1f4;return function(_0x297160){logger[_0x2420('0x12')](_0x297160[_0x2420('0x13')]);if(_0x297160['name']){delete _0x297160[_0x2420('0x14')];}_0x164261[_0x2420('0x6')](_0x2d159f)[_0x2420('0x15')](_0x297160);};}exports[_0x2420('0x16')]=function(_0x1d32d1,_0x179cdf){var _0x2c6a31={},_0x2ff65d={},_0x1afb83={'count':0x0,'rows':[]};var _0x2bb5b4=_[_0x2420('0x17')](db[_0x2420('0x18')][_0x2420('0x19')],function(_0x1620d9){return{'name':_0x1620d9[_0x2420('0x1a')],'type':_0x1620d9[_0x2420('0x1b')][_0x2420('0x1c')]};});_0x2ff65d[_0x2420('0x1d')]=_[_0x2420('0x17')](_0x2bb5b4,_0x2420('0x14'));_0x2ff65d[_0x2420('0x1e')]=_[_0x2420('0x1f')](_0x1d32d1[_0x2420('0x1e')]);_0x2ff65d[_0x2420('0x20')]=_[_0x2420('0x21')](_0x2ff65d['model'],_0x2ff65d['query']);_0x2c6a31[_0x2420('0x22')]=_['intersection'](_0x2ff65d[_0x2420('0x1d')],qs[_0x2420('0x23')](_0x1d32d1[_0x2420('0x1e')][_0x2420('0x23')]));_0x2c6a31[_0x2420('0x22')]=_0x2c6a31['attributes'][_0x2420('0x24')]?_0x2c6a31[_0x2420('0x22')]:_0x2ff65d[_0x2420('0x1d')];if(!_0x1d32d1[_0x2420('0x1e')][_0x2420('0x25')]('nolimit')){_0x2c6a31[_0x2420('0xa')]=qs['limit'](_0x1d32d1['query'][_0x2420('0xa')]);_0x2c6a31[_0x2420('0x7')]=qs[_0x2420('0x7')](_0x1d32d1['query']['offset']);}_0x2c6a31[_0x2420('0x26')]=qs[_0x2420('0x27')](_0x1d32d1[_0x2420('0x1e')]['sort']);_0x2c6a31[_0x2420('0x28')]=qs['filters'](_[_0x2420('0x29')](_0x1d32d1[_0x2420('0x1e')],_0x2ff65d['filters']),_0x2bb5b4);if(_0x1d32d1[_0x2420('0x1e')][_0x2420('0x2a')]){_0x2c6a31['where']=_['merge'](_0x2c6a31[_0x2420('0x28')],{'$or':_['map'](_0x2bb5b4,function(_0x3755cd){if(_0x3755cd[_0x2420('0x1b')]!=='VIRTUAL'){var _0x48e52d={};_0x48e52d[_0x3755cd[_0x2420('0x14')]]={'$like':'%'+_0x1d32d1['query'][_0x2420('0x2a')]+'%'};return _0x48e52d;}})});}_0x2c6a31=_[_0x2420('0x2b')]({},_0x2c6a31,_0x1d32d1[_0x2420('0x2c')]);var _0x1abd95={'where':_0x2c6a31['where']};return db['Dynamics365Account'][_0x2420('0x9')](_0x1abd95)[_0x2420('0xe')](function(_0x265732){_0x1afb83[_0x2420('0x9')]=_0x265732;if(_0x1d32d1[_0x2420('0x1e')][_0x2420('0x2d')]){_0x2c6a31['include']=[{'all':!![]}];}return db[_0x2420('0x18')]['findAll'](_0x2c6a31);})[_0x2420('0xe')](function(_0x269813){_0x1afb83['rows']=_0x269813;return _0x1afb83;})['then'](respondWithFilteredResult(_0x179cdf,_0x2c6a31))[_0x2420('0x2e')](handleError(_0x179cdf,null));};exports[_0x2420('0x2f')]=function(_0x577a54,_0x282f8d){var _0x1348d2={'raw':![],'where':{'id':_0x577a54[_0x2420('0x30')]['id']}},_0x4eda2d={};_0x4eda2d[_0x2420('0x1d')]=_[_0x2420('0x1f')](db['Dynamics365Account'][_0x2420('0x19')]);_0x4eda2d[_0x2420('0x1e')]=_[_0x2420('0x1f')](_0x577a54['query']);_0x4eda2d['filters']=_['intersection'](_0x4eda2d[_0x2420('0x1d')],_0x4eda2d[_0x2420('0x1e')]);_0x1348d2[_0x2420('0x22')]=_[_0x2420('0x21')](_0x4eda2d[_0x2420('0x1d')],qs[_0x2420('0x23')](_0x577a54[_0x2420('0x1e')][_0x2420('0x23')]));_0x1348d2[_0x2420('0x22')]=_0x1348d2['attributes'][_0x2420('0x24')]?_0x1348d2[_0x2420('0x22')]:_0x4eda2d[_0x2420('0x1d')];if(_0x577a54['query'][_0x2420('0x2d')]){_0x1348d2[_0x2420('0x31')]=[{'all':!![]}];}_0x1348d2=_['merge']({},_0x1348d2,_0x577a54[_0x2420('0x2c')]);return db[_0x2420('0x18')][_0x2420('0x32')](_0x1348d2)[_0x2420('0xe')](handleEntityNotFound(_0x282f8d,null))['then'](respondWithResult(_0x282f8d,null))[_0x2420('0x2e')](handleError(_0x282f8d,null));};exports[_0x2420('0x33')]=function(_0x577011,_0x23507f){return db['Dynamics365Account']['create'](_0x577011[_0x2420('0x34')],{})['then'](respondWithResult(_0x23507f,0xc9))[_0x2420('0x2e')](handleError(_0x23507f,null));};exports[_0x2420('0xd')]=function(_0x5d63ca,_0x52264b){if(_0x5d63ca[_0x2420('0x34')]['id']){delete _0x5d63ca['body']['id'];}return db[_0x2420('0x18')][_0x2420('0x32')]({'where':{'id':_0x5d63ca[_0x2420('0x30')]['id']}})['then'](handleEntityNotFound(_0x52264b,null))[_0x2420('0xe')](saveUpdates(_0x5d63ca[_0x2420('0x34')],null))[_0x2420('0xe')](respondWithResult(_0x52264b,null))[_0x2420('0x2e')](handleError(_0x52264b,null));};exports[_0x2420('0xf')]=function(_0x437266,_0x144e54){return db[_0x2420('0x18')][_0x2420('0x32')]({'where':{'id':_0x437266[_0x2420('0x30')]['id']}})[_0x2420('0xe')](handleEntityNotFound(_0x144e54,null))[_0x2420('0xe')](removeEntity(_0x144e54,null))[_0x2420('0x2e')](handleError(_0x144e54,null));};exports[_0x2420('0x35')]=function(_0x4a0d40,_0x584068){var _0x1e7c1c={};var _0x22242e={};var _0x390ba6;var _0x3ac44a;return db[_0x2420('0x18')][_0x2420('0x36')]({'where':{'id':_0x4a0d40[_0x2420('0x30')]['id']}})[_0x2420('0xe')](handleEntityNotFound(_0x584068,null))[_0x2420('0xe')](function(_0x587662){if(_0x587662){_0x390ba6=_0x587662;_0x22242e['model']=_[_0x2420('0x1f')](db[_0x2420('0x37')][_0x2420('0x19')]);_0x22242e[_0x2420('0x1e')]=_['keys'](_0x4a0d40[_0x2420('0x1e')]);_0x22242e[_0x2420('0x20')]=_[_0x2420('0x21')](_0x22242e[_0x2420('0x1d')],_0x22242e[_0x2420('0x1e')]);_0x1e7c1c[_0x2420('0x22')]=_[_0x2420('0x21')](_0x22242e[_0x2420('0x1d')],qs[_0x2420('0x23')](_0x4a0d40[_0x2420('0x1e')][_0x2420('0x23')]));_0x1e7c1c['attributes']=_0x1e7c1c[_0x2420('0x22')]['length']?_0x1e7c1c[_0x2420('0x22')]:_0x22242e[_0x2420('0x1d')];_0x1e7c1c['order']=qs[_0x2420('0x27')](_0x4a0d40[_0x2420('0x1e')]['sort']);_0x1e7c1c['where']=qs[_0x2420('0x20')](_[_0x2420('0x29')](_0x4a0d40[_0x2420('0x1e')],_0x22242e['filters']));if(_0x4a0d40['query'][_0x2420('0x2a')]){_0x1e7c1c[_0x2420('0x28')]=_['merge'](_0x1e7c1c[_0x2420('0x28')],{'$or':_[_0x2420('0x17')](_0x1e7c1c[_0x2420('0x22')],function(_0x3fcd68){var _0x5492ad={};_0x5492ad[_0x3fcd68]={'$like':'%'+_0x4a0d40[_0x2420('0x1e')]['filter']+'%'};return _0x5492ad;})});}_0x1e7c1c=_['merge']({},_0x1e7c1c,_0x4a0d40['options']);return _0x390ba6[_0x2420('0x35')](_0x1e7c1c);}})[_0x2420('0xe')](function(_0xbca553){if(_0xbca553){_0x3ac44a=_0xbca553[_0x2420('0x24')];if(!_0x4a0d40[_0x2420('0x1e')][_0x2420('0x25')](_0x2420('0x38'))){_0x1e7c1c[_0x2420('0xa')]=qs[_0x2420('0xa')](_0x4a0d40[_0x2420('0x1e')][_0x2420('0xa')]);_0x1e7c1c[_0x2420('0x7')]=qs[_0x2420('0x7')](_0x4a0d40[_0x2420('0x1e')][_0x2420('0x7')]);}return _0x390ba6['getConfigurations'](_0x1e7c1c);}})[_0x2420('0xe')](function(_0x40cd0f){if(_0x40cd0f){return _0x40cd0f?{'count':_0x3ac44a,'rows':_0x40cd0f}:null;}})[_0x2420('0xe')](respondWithResult(_0x584068,null))[_0x2420('0x2e')](handleError(_0x584068,null));};exports['addConfiguration']=function(_0x5bfbdb,_0x53d389){if(_0x5bfbdb[_0x2420('0x34')]['id']){delete _0x5bfbdb['body']['id'];}return db[_0x2420('0x18')]['findOne']({'where':{'id':_0x5bfbdb[_0x2420('0x30')]['id']}})[_0x2420('0xe')](handleEntityNotFound(_0x53d389,null))[_0x2420('0xe')](function(_0x40dddd){if(_0x40dddd){_0x5bfbdb[_0x2420('0x34')][_0x2420('0x39')]=_0x40dddd['id'];_0x5bfbdb[_0x2420('0x34')][_0x2420('0x3a')]=integrations[_0x2420('0x3b')](_0x5bfbdb[_0x2420('0x34')]['channel'],_0x5bfbdb[_0x2420('0x34')][_0x2420('0x1b')]);_0x5bfbdb[_0x2420('0x34')][_0x2420('0x3c')]=integrations[_0x2420('0x3d')](_0x5bfbdb[_0x2420('0x34')][_0x2420('0x3e')],_0x5bfbdb[_0x2420('0x34')][_0x2420('0x1b')]);return db[_0x2420('0x37')][_0x2420('0x33')](_0x5bfbdb['body'],{'include':[{'model':db['Dynamics365Field'],'as':_0x2420('0x3a')},{'model':db[_0x2420('0x3f')],'as':_0x2420('0x3c')}]});}return null;})[_0x2420('0xe')](respondWithResult(_0x53d389,null))[_0x2420('0x2e')](handleError(_0x53d389,null));};function sanitizeRemoteUri(_0x4058f4){var _0x40c671=_0x4058f4['slice'](-0x1);if(_0x40c671==='/')return _0x4058f4[_0x2420('0x40')](0x0,_0x4058f4['lastIndexOf'](_0x40c671));return _0x4058f4;}function getWebApiUrl(_0x5ec906){return util[_0x2420('0x41')]('%s/api/data/v9.0/',_0x5ec906);}exports[_0x2420('0x42')]=function(_0x6e2d74,_0x5a5a45){var _0xc692d1=_0x6e2d74[_0x2420('0x1e')][_0x2420('0x43')];var _0x18050e=_0xc692d1==='incident'?_0x2420('0x44'):'PhoneCall';var _0x5baf19='';var _0x28e133='';var _0x241e06='';var _0x1fbb71='';var _0x230497='';var _0x2a1c0d='';var _0x5932ae='';var _0xeb5aed='';var _0x493bbc=['title',_0x2420('0x45'),'customerid',_0x2420('0x46'),_0x2420('0x47'),_0x2420('0x48'),'phonenumber',_0x2420('0x49'),_0x2420('0x4a'),_0x2420('0x4b')];var _0x420e6a=[_0x2420('0x4c'),_0x2420('0x4d'),_0x2420('0x4e'),'billedserviceunits','contactidname',_0x2420('0x4f'),'contractdetailidname',_0x2420('0x50'),_0x2420('0x51'),_0x2420('0x52'),_0x2420('0x53'),_0x2420('0x54'),'createdon',_0x2420('0x55'),_0x2420('0x56'),_0x2420('0x57'),_0x2420('0x58'),_0x2420('0x59'),_0x2420('0x5a'),_0x2420('0x5b'),_0x2420('0x5c'),_0x2420('0x5d'),'escalatedon',_0x2420('0x5e'),_0x2420('0x5f'),_0x2420('0x60'),'importsequencenumber',_0x2420('0x61'),_0x2420('0x62'),_0x2420('0x63'),'masteridname',_0x2420('0x64'),_0x2420('0x65'),_0x2420('0x66'),_0x2420('0x67'),_0x2420('0x68'),_0x2420('0x69'),_0x2420('0x6a'),_0x2420('0x6b'),_0x2420('0x6c'),_0x2420('0x6d'),_0x2420('0x6e'),_0x2420('0x6f'),_0x2420('0x70'),_0x2420('0x71'),_0x2420('0x72'),_0x2420('0x73'),_0x2420('0x74'),_0x2420('0x75'),'prioritycodename',_0x2420('0x76'),_0x2420('0x77'),_0x2420('0x78'),_0x2420('0x79'),_0x2420('0x7a'),_0x2420('0x7b'),_0x2420('0x7c'),_0x2420('0x7d'),'slainvokedidname','slaname',_0x2420('0x7e'),_0x2420('0x7f'),_0x2420('0x80'),_0x2420('0x81'),_0x2420('0x82'),_0x2420('0x83'),'transactioncurrencyidname',_0x2420('0x84'),_0x2420('0x85'),_0x2420('0x86')];var _0x4c0e24=_0x493bbc[_0x2420('0x87')](_0x420e6a);return db['Dynamics365Account'][_0x2420('0x36')]({'where':{'id':_0x6e2d74[_0x2420('0x30')]['id']},'attributes':['id',_0x2420('0x88'),_0x2420('0x89'),_0x2420('0x8a'),_0x2420('0x8b'),_0x2420('0x8c'),_0x2420('0x8d'),'modernAuthentication'],'include':[{'model':db['CloudProvider'],'as':_0x2420('0x8e'),'attributes':['id',_0x2420('0x8f'),'data7']}]})[_0x2420('0xe')](handleEntityNotFound(_0x5a5a45,null))[_0x2420('0xe')](function(_0x52171f){if(_0x52171f){if(_0x52171f[_0x2420('0x90')]){_0x52171f[_0x2420('0x91')]=_0x52171f[_0x2420('0x8e')][_0x2420('0x8f')];_0xeb5aed=sanitizeRemoteUri(_0x52171f[_0x2420('0x8e')]['data7']);_0x5932ae=getWebApiUrl(_0xeb5aed);return _0x52171f;}_0xeb5aed=sanitizeRemoteUri(_0x52171f[_0x2420('0x8a')]);_0x5932ae=getWebApiUrl(_0xeb5aed);var _0x16aaf4={'method':_0x2420('0x92'),'uri':_0x2420('0x93')+_0x52171f[_0x2420('0x8b')]+'/oauth2/token','form':{'client_id':_0x52171f['clientId'],'resource':_0xeb5aed,'username':_0x52171f['username'],'password':_0x52171f[_0x2420('0x89')],'grant_type':_0x2420('0x89'),'client_secret':_0x52171f[_0x2420('0x8d')]},'json':!![]};return rp(_0x16aaf4);}})['then'](function(_0x1033a3){_0x2a1c0d=_0x1033a3['access_token'];var _0x51ce0b={'method':'GET','uri':encodeURI(_0x5932ae+_0x2420('0x94')+_0x18050e+'\x27'),'headers':{'Authorization':_0x2420('0x95')+_0x2a1c0d,'If-None-Match':null,'OData-Version':_0x2420('0x96')},'json':!![]};return rp(_0x51ce0b);})[_0x2420('0xe')](function(_0x30db73){var _0x206cd4=_0x30db73[_0x2420('0x97')][0x0];var _0x1d48a6=_0x206cd4['MetadataId'];var _0x4ed1ca={'method':_0x2420('0x98'),'uri':_0x5932ae+'EntityDefinitions('+_0x1d48a6+_0x2420('0x99'),'headers':{'Authorization':_0x2420('0x95')+_0x2a1c0d,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4ed1ca);})[_0x2420('0xe')](function(_0x11acf3){_0x5baf19=_0x11acf3;_0x28e133=_0x5baf19['Attributes'];_0x28e133=_[_0x2420('0x9a')](_0x28e133,function(_0x4baa27){return!_0x4c0e24[_0x2420('0x9b')](_0x4baa27['LogicalName']);});var _0x51acba=[];var _0x27f679=[];_0x28e133[_0x2420('0x9c')](function(_0x589234){if(_0x589234[_0x2420('0x9d')]){var _0x5a98ba=_0x589234[_0x2420('0x9d')][_0x2420('0x40')](_0x589234['@odata.type'][_0x2420('0x9e')]('.')+0x1);if(_0x5a98ba==='PicklistAttributeMetadata'){_0x51acba['push'](getSelectList(_0x5932ae,_0xc692d1,_0x27f679,_0x5baf19['MetadataId'],_0x589234[_0x2420('0x9f')],_0x2a1c0d));}}});return Promise[_0x2420('0xa0')](_0x51acba);})['then'](function(_0x2578e2){_0x241e06=_0x2578e2[0x0];var _0x54b749=[];var _0x316f5f=[];_0x28e133[_0x2420('0x9c')](function(_0x10e015){if(!_[_0x2420('0xa1')](_0x10e015['@odata.type'])){var _0x3ae223=_0x10e015[_0x2420('0x9d')][_0x2420('0x40')](_0x10e015[_0x2420('0x9d')][_0x2420('0x9e')]('.')+0x1);if(_0x3ae223===_0x2420('0xa2')){_0x54b749[_0x2420('0xa3')](getBooleanList(_0x5932ae,_0xc692d1,_0x316f5f,_0x5baf19['MetadataId'],_0x10e015['MetadataId'],_0x2a1c0d));}}});return Promise[_0x2420('0xa0')](_0x54b749);})[_0x2420('0xe')](function(_0x178cee){_0x1fbb71=_0x178cee[0x0];var _0x1546a2=[];var _0x595eba=[];_0x28e133[_0x2420('0x9c')](function(_0x38a411){if(_0x38a411['@odata.type']){var _0x515037=_0x38a411['@odata.type'][_0x2420('0x40')](_0x38a411[_0x2420('0x9d')][_0x2420('0x9e')]('.')+0x1);if(_0x515037==='StringAttributeMetadata'||_0x515037===_0x2420('0xa4')||_0x515037===_0x2420('0xa5')||_0x515037===_0x2420('0xa6')||_0x515037===_0x2420('0xa7')||_0x515037===_0x2420('0xa8')||_0x515037===_0x2420('0xa9')||_0x515037===_0x2420('0xaa')||_0x515037==='StateAttributeMetadata'||_0x515037===_0x2420('0xab')){_0x1546a2[_0x2420('0xa3')](getInputList(_0x5932ae,_0xc692d1,_0x515037,_0x595eba,_0x5baf19[_0x2420('0x9f')],_0x38a411[_0x2420('0x9f')],_0x2a1c0d));}}});return Promise[_0x2420('0xa0')](_0x1546a2);})[_0x2420('0xe')](function(_0x181a3){_0x230497=_0x181a3[0x0];var _0x5b079e=_0x241e06[_0x2420('0x87')](_0x1fbb71)[_0x2420('0x87')](_0x230497);var _0x4e0860={'count':_0x5b079e[_0x2420('0x24')],'rows':_0x5b079e};return _0x4e0860;})[_0x2420('0xe')](respondWithResult(_0x5a5a45,null))['catch'](function(_0x50f831){var _0x3f7de9=_0x6e2d74[_0x2420('0x1e')][_0x2420('0xac')]?0x1f4:_0x50f831[_0x2420('0xad')]||0x1f4;logger['error'](_0x50f831['stack']);delete _0x50f831[_0x2420('0x14')];if(_0x3f7de9===0x191){_0x3f7de9=0x190;}_0x5a5a45[_0x2420('0x6')](_0x3f7de9)['send'](_0x6e2d74['query'][_0x2420('0xac')]?{'message':'Wrong\x20credentials','statusCode':_0x50f831[_0x2420('0xad')]}:_0x50f831);});};function getSelectList(_0x26165d,_0x587168,_0x19893c,_0x5bc0a7,_0x18d58f,_0x57638f){var _0x3fa617={'method':_0x2420('0x98'),'uri':_0x26165d+_0x2420('0xae')+_0x5bc0a7+_0x2420('0xaf')+_0x18d58f+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x2420('0xb0'),'headers':{'Authorization':_0x2420('0x95')+_0x57638f,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3fa617)[_0x2420('0xe')](function(_0x4e3de8){var _0x4d5e6a=[];var _0xae8ffb=_0x4e3de8[_0x2420('0xb1')][_0x2420('0xb2')];_0xae8ffb['forEach'](function(_0x58c09a){_0x4d5e6a['push']({'name':_0x58c09a[_0x2420('0xb3')]['UserLocalizedLabel'][_0x2420('0xb3')],'value':String(_0x58c09a[_0x2420('0xb4')])});});var _0x28e825={'id':_0x587168+'_'+_0x4e3de8['LogicalName'],'name':_0x4e3de8['DisplayName']['UserLocalizedLabel'][_0x2420('0xb3')],'custom':![],'options':_0x4d5e6a};_0x19893c[_0x2420('0xa3')](_0x28e825);return _0x19893c;});}function getBooleanList(_0x2fe760,_0xa1c404,_0x16e3b9,_0x45faf7,_0x4b2e85,_0x33fcd7){var _0x40d044={'method':_0x2420('0x98'),'uri':_0x2fe760+_0x2420('0xae')+_0x45faf7+_0x2420('0xaf')+_0x4b2e85+_0x2420('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x33fcd7,'If-None-Match':null,'OData-Version':_0x2420('0x96')},'json':!![]};return rp(_0x40d044)[_0x2420('0xe')](function(_0x3c3d26){var _0x1426bb=[];_0x1426bb[_0x2420('0xa3')]({'name':_0x3c3d26['OptionSet'][_0x2420('0xb6')][_0x2420('0xb3')][_0x2420('0xb7')][_0x2420('0xb3')],'value':_0x2420('0xb8')},{'name':_0x3c3d26[_0x2420('0xb1')][_0x2420('0xb9')][_0x2420('0xb3')][_0x2420('0xb7')][_0x2420('0xb3')],'value':_0x2420('0xba')});var _0x2f3c10={'id':_0xa1c404+'_'+_0x3c3d26[_0x2420('0xbb')],'name':_0x3c3d26[_0x2420('0xbc')][_0x2420('0xb7')][_0x2420('0xb3')],'custom':![],'options':_0x1426bb};_0x16e3b9[_0x2420('0xa3')](_0x2f3c10);return _0x16e3b9;});}function getInputList(_0x5835b3,_0x20e548,_0x51b2de,_0x51066a,_0x2f40cd,_0x3cb048,_0x195bed){var _0x1afadf={'method':_0x2420('0x98'),'uri':_0x5835b3+'EntityDefinitions('+_0x2f40cd+')/Attributes('+_0x3cb048+_0x2420('0xbd')+_0x51b2de+_0x2420('0xbe'),'headers':{'Authorization':_0x2420('0x95')+_0x195bed,'If-None-Match':null,'OData-Version':_0x2420('0x96')},'json':!![]};return rp(_0x1afadf)[_0x2420('0xe')](function(_0x265e27){var _0x982be={'id':_0x20e548+'_'+_0x265e27[_0x2420('0xbb')],'name':_0x265e27[_0x2420('0xbc')][_0x2420('0xb7')]?_0x265e27[_0x2420('0xbc')][_0x2420('0xb7')][_0x2420('0xb3')]:_0x265e27[_0x2420('0xbb')],'custom':![],'options':[]};_0x51066a[_0x2420('0xa3')](_0x982be);return _0x51066a;});}
\ No newline at end of file
+var _0x61d7=['transactioncurrencyidname','traversedpath','concat','tenantId','clientId','modernAuthentication','CloudProvider','data5','data7','access_token','remoteUri','POST','https://login.microsoftonline.com/','/oauth2/token','username','password','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','value','MetadataId',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','remove','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','all','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','EntityDefinitions(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','UserLocalizedLabel','Label','Value','DisplayName',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','lodash','../../components/parsers/qs','api','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','count','limit','set','update','destroy','then','end','error','stack','send','index','rawAttributes','fieldName','name','query','filters','intersection','attributes','model','length','nolimit','sort','where','merge','map','type','filter','options','Dynamics365Account','include','rows','show','params','keys','fields','includeAll','find','catch','create','body','findOne','Dynamics365Configuration','order','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','substring','lastIndexOf','%s/api/data/v9.0/','getFields','ticketType','incident','description','customerid','ownerid','caseorigincode','subject','phonenumber','directioncode','phonecall_activity_parties','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyyominame','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','overriddencreatedon','owneridname','owneridtype','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','ticketnumber','timezoneruleversionnumber'];(function(_0x6e8186,_0x4f6d8c){var _0x379fcc=function(_0x4d4047){while(--_0x4d4047){_0x6e8186['push'](_0x6e8186['shift']());}};_0x379fcc(++_0x4f6d8c);}(_0x61d7,0xef));var _0x761d=function(_0x510252,_0x1b934c){_0x510252=_0x510252-0x0;var _0x10cca2=_0x61d7[_0x510252];return _0x10cca2;};'use strict';var rp=require(_0x761d('0x0'));var util=require('util');var _=require(_0x761d('0x1'));var qs=require(_0x761d('0x2'));var logger=require('../../config/logger')(_0x761d('0x3'));var db=require(_0x761d('0x4'))['db'];var integrations=require(_0x761d('0x5'));function respondWithResult(_0x18feea,_0x4ff687){_0x4ff687=_0x4ff687||0xc8;return function(_0x40bd57){if(_0x40bd57){return _0x18feea[_0x761d('0x6')](_0x4ff687)[_0x761d('0x7')](_0x40bd57);}};}function respondWithFilteredResult(_0x13e509,_0x4f1ef6){return function(_0x5cd5e4){if(_0x5cd5e4){var _0x2fdd7b=typeof _0x4f1ef6[_0x761d('0x8')]===_0x761d('0x9')&&typeof _0x4f1ef6['limit']==='undefined';var _0x1e0d59=_0x5cd5e4[_0x761d('0xa')];var _0xe491ca=_0x2fdd7b?0x0:_0x4f1ef6['offset'];var _0x5efb00=_0x2fdd7b?_0x5cd5e4[_0x761d('0xa')]:_0x4f1ef6['offset']+_0x4f1ef6[_0x761d('0xb')];var _0x2d62c3;if(_0x5efb00>=_0x1e0d59){_0x5efb00=_0x1e0d59;_0x2d62c3=0xc8;}else{_0x2d62c3=0xce;}_0x13e509[_0x761d('0x6')](_0x2d62c3);return _0x13e509[_0x761d('0xc')]('Content-Range',_0xe491ca+'-'+_0x5efb00+'/'+_0x1e0d59)[_0x761d('0x7')](_0x5cd5e4);}return null;};}function saveUpdates(_0x442208){return function(_0x1a5b74){if(_0x1a5b74){return _0x1a5b74[_0x761d('0xd')](_0x442208)['then'](function(_0xd13ce9){return _0xd13ce9;});}return null;};}function removeEntity(_0x9dc4bd){return function(_0x4c1e6e){if(_0x4c1e6e){return _0x4c1e6e[_0x761d('0xe')]()[_0x761d('0xf')](function(){_0x9dc4bd[_0x761d('0x6')](0xcc)[_0x761d('0x10')]();});}};}function handleEntityNotFound(_0x3331b2){return function(_0x405e12){if(!_0x405e12){_0x3331b2['sendStatus'](0x194);}return _0x405e12;};}function handleError(_0x4bdf13,_0xabac10){_0xabac10=_0xabac10||0x1f4;return function(_0x237b1d){logger[_0x761d('0x11')](_0x237b1d[_0x761d('0x12')]);if(_0x237b1d['name']){delete _0x237b1d['name'];}_0x4bdf13[_0x761d('0x6')](_0xabac10)[_0x761d('0x13')](_0x237b1d);};}exports[_0x761d('0x14')]=function(_0x2aeb62,_0x18b787){var _0x3fc1a5={},_0x1a3c60={},_0x5e5e3a={'count':0x0,'rows':[]};var _0x55b1d1=_['map'](db['Dynamics365Account'][_0x761d('0x15')],function(_0x1d6272){return{'name':_0x1d6272[_0x761d('0x16')],'type':_0x1d6272['type']['key']};});_0x1a3c60['model']=_['map'](_0x55b1d1,_0x761d('0x17'));_0x1a3c60['query']=_['keys'](_0x2aeb62[_0x761d('0x18')]);_0x1a3c60[_0x761d('0x19')]=_[_0x761d('0x1a')](_0x1a3c60['model'],_0x1a3c60['query']);_0x3fc1a5[_0x761d('0x1b')]=_[_0x761d('0x1a')](_0x1a3c60[_0x761d('0x1c')],qs['fields'](_0x2aeb62[_0x761d('0x18')]['fields']));_0x3fc1a5[_0x761d('0x1b')]=_0x3fc1a5[_0x761d('0x1b')][_0x761d('0x1d')]?_0x3fc1a5[_0x761d('0x1b')]:_0x1a3c60[_0x761d('0x1c')];if(!_0x2aeb62[_0x761d('0x18')]['hasOwnProperty'](_0x761d('0x1e'))){_0x3fc1a5[_0x761d('0xb')]=qs[_0x761d('0xb')](_0x2aeb62[_0x761d('0x18')][_0x761d('0xb')]);_0x3fc1a5[_0x761d('0x8')]=qs[_0x761d('0x8')](_0x2aeb62[_0x761d('0x18')]['offset']);}_0x3fc1a5['order']=qs[_0x761d('0x1f')](_0x2aeb62['query'][_0x761d('0x1f')]);_0x3fc1a5[_0x761d('0x20')]=qs[_0x761d('0x19')](_['pick'](_0x2aeb62[_0x761d('0x18')],_0x1a3c60[_0x761d('0x19')]),_0x55b1d1);if(_0x2aeb62['query']['filter']){_0x3fc1a5[_0x761d('0x20')]=_[_0x761d('0x21')](_0x3fc1a5[_0x761d('0x20')],{'$or':_[_0x761d('0x22')](_0x55b1d1,function(_0x4767cd){if(_0x4767cd[_0x761d('0x23')]!=='VIRTUAL'){var _0x33f37e={};_0x33f37e[_0x4767cd['name']]={'$like':'%'+_0x2aeb62[_0x761d('0x18')][_0x761d('0x24')]+'%'};return _0x33f37e;}})});}_0x3fc1a5=_[_0x761d('0x21')]({},_0x3fc1a5,_0x2aeb62[_0x761d('0x25')]);var _0x2f7c41={'where':_0x3fc1a5[_0x761d('0x20')]};return db[_0x761d('0x26')][_0x761d('0xa')](_0x2f7c41)[_0x761d('0xf')](function(_0x2eda10){_0x5e5e3a[_0x761d('0xa')]=_0x2eda10;if(_0x2aeb62['query']['includeAll']){_0x3fc1a5[_0x761d('0x27')]=[{'all':!![]}];}return db[_0x761d('0x26')]['findAll'](_0x3fc1a5);})[_0x761d('0xf')](function(_0x530172){_0x5e5e3a[_0x761d('0x28')]=_0x530172;return _0x5e5e3a;})[_0x761d('0xf')](respondWithFilteredResult(_0x18b787,_0x3fc1a5))['catch'](handleError(_0x18b787,null));};exports[_0x761d('0x29')]=function(_0x3162aa,_0x284a90){var _0xb17d5a={'raw':![],'where':{'id':_0x3162aa[_0x761d('0x2a')]['id']}},_0x328761={};_0x328761[_0x761d('0x1c')]=_[_0x761d('0x2b')](db[_0x761d('0x26')][_0x761d('0x15')]);_0x328761['query']=_[_0x761d('0x2b')](_0x3162aa[_0x761d('0x18')]);_0x328761[_0x761d('0x19')]=_[_0x761d('0x1a')](_0x328761[_0x761d('0x1c')],_0x328761[_0x761d('0x18')]);_0xb17d5a[_0x761d('0x1b')]=_[_0x761d('0x1a')](_0x328761[_0x761d('0x1c')],qs['fields'](_0x3162aa['query'][_0x761d('0x2c')]));_0xb17d5a[_0x761d('0x1b')]=_0xb17d5a[_0x761d('0x1b')]['length']?_0xb17d5a['attributes']:_0x328761[_0x761d('0x1c')];if(_0x3162aa['query'][_0x761d('0x2d')]){_0xb17d5a[_0x761d('0x27')]=[{'all':!![]}];}_0xb17d5a=_[_0x761d('0x21')]({},_0xb17d5a,_0x3162aa[_0x761d('0x25')]);return db[_0x761d('0x26')][_0x761d('0x2e')](_0xb17d5a)[_0x761d('0xf')](handleEntityNotFound(_0x284a90,null))[_0x761d('0xf')](respondWithResult(_0x284a90,null))[_0x761d('0x2f')](handleError(_0x284a90,null));};exports[_0x761d('0x30')]=function(_0x12d13b,_0x2f50dd){return db[_0x761d('0x26')][_0x761d('0x30')](_0x12d13b['body'],{})['then'](respondWithResult(_0x2f50dd,0xc9))[_0x761d('0x2f')](handleError(_0x2f50dd,null));};exports[_0x761d('0xd')]=function(_0x79f09,_0x2f6e11){if(_0x79f09[_0x761d('0x31')]['id']){delete _0x79f09[_0x761d('0x31')]['id'];}return db['Dynamics365Account'][_0x761d('0x2e')]({'where':{'id':_0x79f09[_0x761d('0x2a')]['id']}})[_0x761d('0xf')](handleEntityNotFound(_0x2f6e11,null))[_0x761d('0xf')](saveUpdates(_0x79f09[_0x761d('0x31')],null))[_0x761d('0xf')](respondWithResult(_0x2f6e11,null))[_0x761d('0x2f')](handleError(_0x2f6e11,null));};exports[_0x761d('0xe')]=function(_0x1031dd,_0x55e8d7){return db[_0x761d('0x26')][_0x761d('0x2e')]({'where':{'id':_0x1031dd[_0x761d('0x2a')]['id']}})[_0x761d('0xf')](handleEntityNotFound(_0x55e8d7,null))[_0x761d('0xf')](removeEntity(_0x55e8d7,null))[_0x761d('0x2f')](handleError(_0x55e8d7,null));};exports['getConfigurations']=function(_0x4ed4b7,_0x2cf788){var _0x318771={};var _0x211c04={};var _0x237600;var _0x107218;return db[_0x761d('0x26')][_0x761d('0x32')]({'where':{'id':_0x4ed4b7['params']['id']}})[_0x761d('0xf')](handleEntityNotFound(_0x2cf788,null))[_0x761d('0xf')](function(_0x5ab469){if(_0x5ab469){_0x237600=_0x5ab469;_0x211c04['model']=_[_0x761d('0x2b')](db[_0x761d('0x33')][_0x761d('0x15')]);_0x211c04[_0x761d('0x18')]=_[_0x761d('0x2b')](_0x4ed4b7[_0x761d('0x18')]);_0x211c04[_0x761d('0x19')]=_[_0x761d('0x1a')](_0x211c04[_0x761d('0x1c')],_0x211c04['query']);_0x318771[_0x761d('0x1b')]=_['intersection'](_0x211c04[_0x761d('0x1c')],qs['fields'](_0x4ed4b7[_0x761d('0x18')][_0x761d('0x2c')]));_0x318771[_0x761d('0x1b')]=_0x318771[_0x761d('0x1b')][_0x761d('0x1d')]?_0x318771['attributes']:_0x211c04[_0x761d('0x1c')];_0x318771[_0x761d('0x34')]=qs[_0x761d('0x1f')](_0x4ed4b7[_0x761d('0x18')][_0x761d('0x1f')]);_0x318771[_0x761d('0x20')]=qs[_0x761d('0x19')](_['pick'](_0x4ed4b7[_0x761d('0x18')],_0x211c04[_0x761d('0x19')]));if(_0x4ed4b7[_0x761d('0x18')][_0x761d('0x24')]){_0x318771['where']=_[_0x761d('0x21')](_0x318771[_0x761d('0x20')],{'$or':_[_0x761d('0x22')](_0x318771[_0x761d('0x1b')],function(_0xe74165){var _0x29c952={};_0x29c952[_0xe74165]={'$like':'%'+_0x4ed4b7[_0x761d('0x18')][_0x761d('0x24')]+'%'};return _0x29c952;})});}_0x318771=_[_0x761d('0x21')]({},_0x318771,_0x4ed4b7['options']);return _0x237600['getConfigurations'](_0x318771);}})['then'](function(_0x31cf2e){if(_0x31cf2e){_0x107218=_0x31cf2e['length'];if(!_0x4ed4b7['query']['hasOwnProperty'](_0x761d('0x1e'))){_0x318771[_0x761d('0xb')]=qs[_0x761d('0xb')](_0x4ed4b7['query'][_0x761d('0xb')]);_0x318771[_0x761d('0x8')]=qs[_0x761d('0x8')](_0x4ed4b7[_0x761d('0x18')][_0x761d('0x8')]);}return _0x237600['getConfigurations'](_0x318771);}})[_0x761d('0xf')](function(_0x229348){if(_0x229348){return _0x229348?{'count':_0x107218,'rows':_0x229348}:null;}})['then'](respondWithResult(_0x2cf788,null))['catch'](handleError(_0x2cf788,null));};exports[_0x761d('0x35')]=function(_0x3083b9,_0x5bbce8){if(_0x3083b9[_0x761d('0x31')]['id']){delete _0x3083b9[_0x761d('0x31')]['id'];}return db[_0x761d('0x26')][_0x761d('0x32')]({'where':{'id':_0x3083b9[_0x761d('0x2a')]['id']}})[_0x761d('0xf')](handleEntityNotFound(_0x5bbce8,null))[_0x761d('0xf')](function(_0x47b8c2){if(_0x47b8c2){_0x3083b9[_0x761d('0x31')][_0x761d('0x36')]=_0x47b8c2['id'];_0x3083b9[_0x761d('0x31')][_0x761d('0x37')]=integrations[_0x761d('0x38')](_0x3083b9[_0x761d('0x31')][_0x761d('0x39')],_0x3083b9[_0x761d('0x31')][_0x761d('0x23')]);_0x3083b9['body'][_0x761d('0x3a')]=integrations[_0x761d('0x3b')](_0x3083b9[_0x761d('0x31')][_0x761d('0x39')],_0x3083b9[_0x761d('0x31')][_0x761d('0x23')]);return db[_0x761d('0x33')][_0x761d('0x30')](_0x3083b9[_0x761d('0x31')],{'include':[{'model':db['Dynamics365Field'],'as':'Subjects'},{'model':db['Dynamics365Field'],'as':_0x761d('0x3a')}]});}return null;})[_0x761d('0xf')](respondWithResult(_0x5bbce8,null))[_0x761d('0x2f')](handleError(_0x5bbce8,null));};function sanitizeRemoteUri(_0x45ff01){var _0x415cd8=_0x45ff01['slice'](-0x1);if(_0x415cd8==='/')return _0x45ff01[_0x761d('0x3c')](0x0,_0x45ff01[_0x761d('0x3d')](_0x415cd8));return _0x45ff01;}function getWebApiUrl(_0x35805e){return util['format'](_0x761d('0x3e'),_0x35805e);}exports[_0x761d('0x3f')]=function(_0x4f6834,_0x674b32){var _0xd85a3a=_0x4f6834[_0x761d('0x18')][_0x761d('0x40')];var _0x19b5eb=_0xd85a3a===_0x761d('0x41')?'Incident':'PhoneCall';var _0xc47b6c='';var _0x165aca='';var _0x4772e2='';var _0x373c3a='';var _0x37eb4a='';var _0xca470d='';var _0x2a202c='';var _0x2a14d6='';var _0x5e75de=['title',_0x761d('0x42'),_0x761d('0x43'),_0x761d('0x44'),_0x761d('0x45'),_0x761d('0x46'),_0x761d('0x47'),'regardingobjectid',_0x761d('0x48'),_0x761d('0x49')];var _0x32c8e9=['accountidname','accountidyominame',_0x761d('0x4a'),_0x761d('0x4b'),_0x761d('0x4c'),_0x761d('0x4d'),_0x761d('0x4e'),_0x761d('0x4f'),_0x761d('0x50'),_0x761d('0x51'),_0x761d('0x52'),_0x761d('0x53'),'createdon','createdonbehalfbyname',_0x761d('0x54'),'customeridname',_0x761d('0x55'),_0x761d('0x56'),_0x761d('0x57'),'entitlementidname',_0x761d('0x58'),_0x761d('0x59'),'escalatedon',_0x761d('0x5a'),'firstresponsebykpiidname',_0x761d('0x5b'),_0x761d('0x5c'),_0x761d('0x5d'),_0x761d('0x5e'),_0x761d('0x5f'),'masteridname','modifiedbyexternalpartyname',_0x761d('0x60'),_0x761d('0x61'),'modifiedbyyominame',_0x761d('0x62'),_0x761d('0x63'),_0x761d('0x64'),'msdyn_incidenttypename',_0x761d('0x65'),'numberofchildincidents','onholdtime',_0x761d('0x66'),_0x761d('0x67'),_0x761d('0x68'),'owneridyominame','parentcaseidname',_0x761d('0x69'),_0x761d('0x6a'),_0x761d('0x6b'),_0x761d('0x6c'),_0x761d('0x6d'),_0x761d('0x6e'),'resolvebykpiidname',_0x761d('0x6f'),_0x761d('0x70'),_0x761d('0x71'),_0x761d('0x72'),_0x761d('0x73'),_0x761d('0x74'),_0x761d('0x75'),_0x761d('0x76'),'statuscode','subjectidname',_0x761d('0x77'),_0x761d('0x78'),_0x761d('0x79'),_0x761d('0x7a'),'utcconversiontimezonecode','versionnumber'];var _0x14659e=_0x5e75de[_0x761d('0x7b')](_0x32c8e9);return db[_0x761d('0x26')][_0x761d('0x32')]({'where':{'id':_0x4f6834[_0x761d('0x2a')]['id']},'attributes':['id','username','password','remoteUri',_0x761d('0x7c'),_0x761d('0x7d'),'clientSecret',_0x761d('0x7e')],'include':[{'model':db[_0x761d('0x7f')],'as':_0x761d('0x7f'),'attributes':['id',_0x761d('0x80'),_0x761d('0x81')]}]})[_0x761d('0xf')](handleEntityNotFound(_0x674b32,null))[_0x761d('0xf')](function(_0x3a740f){if(_0x3a740f){if(_0x3a740f['modernAuthentication']){_0x3a740f[_0x761d('0x82')]=_0x3a740f[_0x761d('0x7f')][_0x761d('0x80')];_0x2a14d6=sanitizeRemoteUri(_0x3a740f[_0x761d('0x7f')][_0x761d('0x81')]);_0x2a202c=getWebApiUrl(_0x2a14d6);return _0x3a740f;}_0x2a14d6=sanitizeRemoteUri(_0x3a740f[_0x761d('0x83')]);_0x2a202c=getWebApiUrl(_0x2a14d6);var _0x254ecc={'method':_0x761d('0x84'),'uri':_0x761d('0x85')+_0x3a740f[_0x761d('0x7c')]+_0x761d('0x86'),'form':{'client_id':_0x3a740f[_0x761d('0x7d')],'resource':_0x2a14d6,'username':_0x3a740f[_0x761d('0x87')],'password':_0x3a740f[_0x761d('0x88')],'grant_type':_0x761d('0x88'),'client_secret':_0x3a740f['clientSecret']},'json':!![]};return rp(_0x254ecc);}})[_0x761d('0xf')](function(_0x5c5b3e){_0xca470d=_0x5c5b3e['access_token'];var _0x2dad5a={'method':_0x761d('0x89'),'uri':encodeURI(_0x2a202c+_0x761d('0x8a')+_0x19b5eb+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0xca470d,'If-None-Match':null,'OData-Version':_0x761d('0x8b')},'json':!![]};return rp(_0x2dad5a);})['then'](function(_0x983574){var _0x42d503=_0x983574[_0x761d('0x8c')][0x0];var _0x2a86a8=_0x42d503[_0x761d('0x8d')];var _0x19c7b9={'method':_0x761d('0x89'),'uri':_0x2a202c+'EntityDefinitions('+_0x2a86a8+_0x761d('0x8e'),'headers':{'Authorization':_0x761d('0x8f')+_0xca470d,'If-None-Match':null,'OData-Version':_0x761d('0x8b')},'json':!![]};return rp(_0x19c7b9);})[_0x761d('0xf')](function(_0x8d886e){_0xc47b6c=_0x8d886e;_0x165aca=_0xc47b6c['Attributes'];_0x165aca=_[_0x761d('0x90')](_0x165aca,function(_0x16c7e5){return!_0x14659e['includes'](_0x16c7e5[_0x761d('0x91')]);});var _0x180877=[];var _0x806f77=[];_0x165aca[_0x761d('0x92')](function(_0x2f0359){if(_0x2f0359[_0x761d('0x93')]){var _0x458fcd=_0x2f0359[_0x761d('0x93')][_0x761d('0x3c')](_0x2f0359[_0x761d('0x93')][_0x761d('0x3d')]('.')+0x1);if(_0x458fcd===_0x761d('0x94')){_0x180877[_0x761d('0x95')](getSelectList(_0x2a202c,_0xd85a3a,_0x806f77,_0xc47b6c[_0x761d('0x8d')],_0x2f0359[_0x761d('0x8d')],_0xca470d));}}});return Promise[_0x761d('0x96')](_0x180877);})[_0x761d('0xf')](function(_0x2e0b9f){_0x4772e2=_0x2e0b9f[0x0];var _0x45f3e0=[];var _0x51148c=[];_0x165aca['forEach'](function(_0x30569d){if(!_[_0x761d('0x97')](_0x30569d[_0x761d('0x93')])){var _0x1f35eb=_0x30569d[_0x761d('0x93')]['substring'](_0x30569d[_0x761d('0x93')]['lastIndexOf']('.')+0x1);if(_0x1f35eb===_0x761d('0x98')){_0x45f3e0[_0x761d('0x95')](getBooleanList(_0x2a202c,_0xd85a3a,_0x51148c,_0xc47b6c['MetadataId'],_0x30569d[_0x761d('0x8d')],_0xca470d));}}});return Promise['all'](_0x45f3e0);})[_0x761d('0xf')](function(_0x31d4ad){_0x373c3a=_0x31d4ad[0x0];var _0x29480e=[];var _0x485d06=[];_0x165aca[_0x761d('0x92')](function(_0x7793ac){if(_0x7793ac['@odata.type']){var _0x53c6d5=_0x7793ac[_0x761d('0x93')][_0x761d('0x3c')](_0x7793ac['@odata.type'][_0x761d('0x3d')]('.')+0x1);if(_0x53c6d5===_0x761d('0x99')||_0x53c6d5===_0x761d('0x9a')||_0x53c6d5===_0x761d('0x9b')||_0x53c6d5===_0x761d('0x9c')||_0x53c6d5===_0x761d('0x9d')||_0x53c6d5==='DateTimeAttributeMetadata'||_0x53c6d5===_0x761d('0x9e')||_0x53c6d5===_0x761d('0x9f')||_0x53c6d5===_0x761d('0xa0')||_0x53c6d5===_0x761d('0xa1')){_0x29480e[_0x761d('0x95')](getInputList(_0x2a202c,_0xd85a3a,_0x53c6d5,_0x485d06,_0xc47b6c['MetadataId'],_0x7793ac[_0x761d('0x8d')],_0xca470d));}}});return Promise['all'](_0x29480e);})['then'](function(_0x3712d3){_0x37eb4a=_0x3712d3[0x0];var _0x412b3c=_0x4772e2[_0x761d('0x7b')](_0x373c3a)[_0x761d('0x7b')](_0x37eb4a);var _0x36a35d={'count':_0x412b3c[_0x761d('0x1d')],'rows':_0x412b3c};return _0x36a35d;})[_0x761d('0xf')](respondWithResult(_0x674b32,null))['catch'](function(_0x4c09d4){var _0x362110=_0x4f6834[_0x761d('0x18')][_0x761d('0xa2')]?0x1f4:_0x4c09d4[_0x761d('0xa3')]||0x1f4;logger[_0x761d('0x11')](_0x4c09d4['stack']);delete _0x4c09d4[_0x761d('0x17')];if(_0x362110===0x191){_0x362110=0x190;}_0x674b32[_0x761d('0x6')](_0x362110)[_0x761d('0x13')](_0x4f6834['query'][_0x761d('0xa2')]?{'message':'Wrong\x20credentials','statusCode':_0x4c09d4['statusCode']}:_0x4c09d4);});};function getSelectList(_0x5425dd,_0x5dc7dd,_0x57bd85,_0x308a63,_0x5ed050,_0x46e06c){var _0x24aeac={'method':'GET','uri':_0x5425dd+_0x761d('0xa4')+_0x308a63+')/Attributes('+_0x5ed050+_0x761d('0xa5')+_0x761d('0xa6'),'headers':{'Authorization':'Bearer\x20'+_0x46e06c,'If-None-Match':null,'OData-Version':_0x761d('0x8b')},'json':!![]};return rp(_0x24aeac)['then'](function(_0x15e4af){var _0x1fe579=[];var _0x5b1bf2=_0x15e4af['OptionSet'][_0x761d('0xa7')];_0x5b1bf2['forEach'](function(_0xa78a38){_0x1fe579[_0x761d('0x95')]({'name':_0xa78a38['Label'][_0x761d('0xa8')][_0x761d('0xa9')],'value':String(_0xa78a38[_0x761d('0xaa')])});});var _0x215f80={'id':_0x5dc7dd+'_'+_0x15e4af[_0x761d('0x91')],'name':_0x15e4af[_0x761d('0xab')][_0x761d('0xa8')][_0x761d('0xa9')],'custom':![],'options':_0x1fe579};_0x57bd85[_0x761d('0x95')](_0x215f80);return _0x57bd85;});}function getBooleanList(_0xe119b4,_0x36bede,_0x18e335,_0x8e4d98,_0x484aae,_0x337a47){var _0x4e2d30={'method':_0x761d('0x89'),'uri':_0xe119b4+_0x761d('0xa4')+_0x8e4d98+_0x761d('0xac')+_0x484aae+_0x761d('0xad'),'headers':{'Authorization':_0x761d('0x8f')+_0x337a47,'If-None-Match':null,'OData-Version':_0x761d('0x8b')},'json':!![]};return rp(_0x4e2d30)[_0x761d('0xf')](function(_0x31455d){var _0x3c7f4e=[];_0x3c7f4e[_0x761d('0x95')]({'name':_0x31455d[_0x761d('0xae')][_0x761d('0xaf')][_0x761d('0xa9')][_0x761d('0xa8')][_0x761d('0xa9')],'value':'true'},{'name':_0x31455d[_0x761d('0xae')][_0x761d('0xb0')]['Label'][_0x761d('0xa8')][_0x761d('0xa9')],'value':_0x761d('0xb1')});var _0x4f4e76={'id':_0x36bede+'_'+_0x31455d['LogicalName'],'name':_0x31455d[_0x761d('0xab')][_0x761d('0xa8')][_0x761d('0xa9')],'custom':![],'options':_0x3c7f4e};_0x18e335[_0x761d('0x95')](_0x4f4e76);return _0x18e335;});}function getInputList(_0x2e7dbe,_0x14046f,_0x25546e,_0x428008,_0x14d6e4,_0x2ff1d0,_0x40e697){var _0x4a7f7d={'method':'GET','uri':_0x2e7dbe+_0x761d('0xa4')+_0x14d6e4+_0x761d('0xac')+_0x2ff1d0+_0x761d('0xb2')+_0x25546e+_0x761d('0xb3'),'headers':{'Authorization':_0x761d('0x8f')+_0x40e697,'If-None-Match':null,'OData-Version':_0x761d('0x8b')},'json':!![]};return rp(_0x4a7f7d)['then'](function(_0x24fc1d){var _0x1c9378={'id':_0x14046f+'_'+_0x24fc1d[_0x761d('0x91')],'name':_0x24fc1d[_0x761d('0xab')][_0x761d('0xa8')]?_0x24fc1d[_0x761d('0xab')][_0x761d('0xa8')][_0x761d('0xa9')]:_0x24fc1d['LogicalName'],'custom':![],'options':[]};_0x428008[_0x761d('0x95')](_0x1c9378);return _0x428008;});}
\ No newline at end of file
index 97341fa..9b8193d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x403c65,_0x5a6223){var _0x4d61eb=function(_0x1b0279){while(--_0x1b0279){_0x403c65['push'](_0x403c65['shift']());}};_0x4d61eb(++_0x5a6223);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x15942a,_0x13b58c){_0x15942a=_0x15942a-0x0;var _0x36a9fb=_0xcb91[_0x15942a];return _0x36a9fb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0x40cd30,_0x25e2c4){var _0x4a2caf=function(_0x1e1ce6){while(--_0x1e1ce6){_0x40cd30['push'](_0x40cd30['shift']());}};_0x4a2caf(++_0x25e2c4);}(_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 logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f7b28a..c138af2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x396b=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetDynamics365Account','options','raw','where','attributes','limit','include','map','model','ShowDynamics365Account','Dynamics365Account','find','lodash','util','bluebird'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x396b,0x190));var _0xb396=function(_0x3e7c3c,_0x2f7123){_0x3e7c3c=_0x3e7c3c-0x0;var _0x29b128=_0x396b[_0x3e7c3c];return _0x29b128;};'use strict';var _=require(_0xb396('0x0'));var util=require(_0xb396('0x1'));var moment=require('moment');var BPromise=require(_0xb396('0x2'));var rs=require(_0xb396('0x3'));var fs=require('fs');var Redis=require(_0xb396('0x4'));var db=require(_0xb396('0x5'))['db'];var utils=require(_0xb396('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb396('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb396('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55a795,_0x3894dd,_0x32656c){return new BPromise(function(_0x40d191,_0x4041a5){return client['request'](_0x55a795,_0x32656c)[_0xb396('0x9')](function(_0x46107b){logger[_0xb396('0xa')](_0xb396('0xb'),_0x3894dd,_0xb396('0xc'));logger[_0xb396('0xd')](_0xb396('0xe'),_0x3894dd,'request\x20sent',JSON[_0xb396('0xf')](_0x46107b));if(_0x46107b[_0xb396('0x10')]){if(_0x46107b['error']['code']===0x1f4){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x3894dd,_0x46107b[_0xb396('0x10')][_0xb396('0x11')]);return _0x4041a5(_0x46107b[_0xb396('0x10')][_0xb396('0x11')]);}logger[_0xb396('0x10')](_0xb396('0xb'),_0x3894dd,_0x46107b[_0xb396('0x10')][_0xb396('0x11')]);return _0x40d191(_0x46107b[_0xb396('0x10')][_0xb396('0x11')]);}else{logger[_0xb396('0xa')](_0xb396('0xb'),_0x3894dd,'request\x20sent');_0x40d191(_0x46107b['result'][_0xb396('0x11')]);}})[_0xb396('0x12')](function(_0x32c960){logger[_0xb396('0x10')](_0xb396('0xb'),_0x3894dd,_0x32c960);_0x4041a5(_0x32c960);});});}exports[_0xb396('0x13')]=function(_0x5586e9){var _0x214f17=this;return new Promise(function(_0x5849f6,_0x2cc873){return db['Dynamics365Account']['findAll']({'raw':_0x5586e9['options']?_0x5586e9[_0xb396('0x14')][_0xb396('0x15')]===undefined?!![]:![]:!![],'where':_0x5586e9[_0xb396('0x14')]?_0x5586e9[_0xb396('0x14')][_0xb396('0x16')]||null:null,'attributes':_0x5586e9[_0xb396('0x14')]?_0x5586e9[_0xb396('0x14')][_0xb396('0x17')]||null:null,'limit':_0x5586e9['options']?_0x5586e9['options'][_0xb396('0x18')]||null:null,'include':_0x5586e9[_0xb396('0x14')]?_0x5586e9[_0xb396('0x14')][_0xb396('0x19')]?_[_0xb396('0x1a')](_0x5586e9[_0xb396('0x14')]['include'],function(_0x410c1d){return{'model':db[_0x410c1d['model']],'as':_0x410c1d['as'],'attributes':_0x410c1d[_0xb396('0x17')],'include':_0x410c1d['include']?_[_0xb396('0x1a')](_0x410c1d[_0xb396('0x19')],function(_0x13eb6e){return{'model':db[_0x13eb6e[_0xb396('0x1b')]],'as':_0x13eb6e['as'],'attributes':_0x13eb6e[_0xb396('0x17')],'include':_0x13eb6e['include']?_[_0xb396('0x1a')](_0x13eb6e['include'],function(_0x53d858){return{'model':db[_0x53d858['model']],'as':_0x53d858['as'],'attributes':_0x53d858['attributes']};}):[]};}):[]};}):[]:[]})[_0xb396('0x9')](function(_0x296143){logger[_0xb396('0xa')]('GetDynamics365Account',_0x5586e9);logger['debug'](_0xb396('0x13'),_0x5586e9,JSON[_0xb396('0xf')](_0x296143));_0x5849f6(_0x296143);})['catch'](function(_0x2850e0){logger[_0xb396('0x10')](_0xb396('0x13'),_0x2850e0[_0xb396('0x11')],_0x5586e9);_0x2cc873(_0x214f17[_0xb396('0x10')](0x1f4,_0x2850e0[_0xb396('0x11')]));});});};exports[_0xb396('0x1c')]=function(_0x494a03){var _0x133da4=this;return new Promise(function(_0x577a39,_0x20a879){return db[_0xb396('0x1d')][_0xb396('0x1e')]({'raw':_0x494a03['options']?_0x494a03[_0xb396('0x14')][_0xb396('0x15')]===undefined?!![]:![]:!![],'where':_0x494a03['options']?_0x494a03['options']['where']||null:null,'attributes':_0x494a03[_0xb396('0x14')]?_0x494a03[_0xb396('0x14')][_0xb396('0x17')]||null:null,'include':_0x494a03[_0xb396('0x14')]?_0x494a03[_0xb396('0x14')][_0xb396('0x19')]?_[_0xb396('0x1a')](_0x494a03[_0xb396('0x14')][_0xb396('0x19')],function(_0x12876f){return{'model':db[_0x12876f[_0xb396('0x1b')]],'as':_0x12876f['as'],'attributes':_0x12876f[_0xb396('0x17')],'include':_0x12876f[_0xb396('0x19')]?_['map'](_0x12876f[_0xb396('0x19')],function(_0x4d0c25){return{'model':db[_0x4d0c25[_0xb396('0x1b')]],'as':_0x4d0c25['as'],'attributes':_0x4d0c25[_0xb396('0x17')],'include':_0x4d0c25[_0xb396('0x19')]?_['map'](_0x4d0c25['include'],function(_0x189cfb){return{'model':db[_0x189cfb[_0xb396('0x1b')]],'as':_0x189cfb['as'],'attributes':_0x189cfb[_0xb396('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb396('0x9')](function(_0x4acfeb){logger[_0xb396('0xa')]('ShowDynamics365Account',_0x494a03);logger[_0xb396('0xd')](_0xb396('0x1c'),_0x494a03,JSON[_0xb396('0xf')](_0x4acfeb));_0x577a39(_0x4acfeb);})[_0xb396('0x12')](function(_0x240cb5){logger['error']('ShowDynamics365Account',_0x240cb5['message'],_0x494a03);_0x20a879(_0x133da4[_0xb396('0x10')](0x1f4,_0x240cb5[_0xb396('0x11')]));});});};
\ No newline at end of file
+var _0x5e9a=['Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','message','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','include','map','model','stringify','find','ShowDynamics365Account','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0x5e9a,0x7a));var _0xa5e9=function(_0x1c4cc8,_0x3bbfe1){_0x1c4cc8=_0x1c4cc8-0x0;var _0x3bfcb3=_0x5e9a[_0x1c4cc8];return _0x3bfcb3;};'use strict';var _=require(_0xa5e9('0x0'));var util=require(_0xa5e9('0x1'));var moment=require('moment');var BPromise=require(_0xa5e9('0x2'));var rs=require(_0xa5e9('0x3'));var fs=require('fs');var Redis=require(_0xa5e9('0x4'));var db=require(_0xa5e9('0x5'))['db'];var utils=require(_0xa5e9('0x6'));var logger=require(_0xa5e9('0x7'))(_0xa5e9('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa5e9('0x9')][_0xa5e9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x239c89,_0x5ca5ca,_0x3a6e10){return new BPromise(function(_0x48ddc7,_0x122222){return client[_0xa5e9('0xb')](_0x239c89,_0x3a6e10)[_0xa5e9('0xc')](function(_0x5301ae){logger[_0xa5e9('0xd')](_0xa5e9('0xe'),_0x5ca5ca,_0xa5e9('0xf'));logger[_0xa5e9('0x10')](_0xa5e9('0x11'),_0x5ca5ca,'request\x20sent',JSON['stringify'](_0x5301ae));if(_0x5301ae[_0xa5e9('0x12')]){if(_0x5301ae[_0xa5e9('0x12')]['code']===0x1f4){logger[_0xa5e9('0x12')](_0xa5e9('0xe'),_0x5ca5ca,_0x5301ae[_0xa5e9('0x12')][_0xa5e9('0x13')]);return _0x122222(_0x5301ae[_0xa5e9('0x12')][_0xa5e9('0x13')]);}logger[_0xa5e9('0x12')](_0xa5e9('0xe'),_0x5ca5ca,_0x5301ae[_0xa5e9('0x12')][_0xa5e9('0x13')]);return _0x48ddc7(_0x5301ae[_0xa5e9('0x12')][_0xa5e9('0x13')]);}else{logger[_0xa5e9('0xd')](_0xa5e9('0xe'),_0x5ca5ca,_0xa5e9('0xf'));_0x48ddc7(_0x5301ae['result'][_0xa5e9('0x13')]);}})[_0xa5e9('0x14')](function(_0x2907ea){logger[_0xa5e9('0x12')](_0xa5e9('0xe'),_0x5ca5ca,_0x2907ea);_0x122222(_0x2907ea);});});}exports[_0xa5e9('0x15')]=function(_0x3da571){var _0x27ffdf=this;return new Promise(function(_0x2f6932,_0x3f4904){return db[_0xa5e9('0x16')][_0xa5e9('0x17')]({'raw':_0x3da571['options']?_0x3da571[_0xa5e9('0x18')][_0xa5e9('0x19')]===undefined?!![]:![]:!![],'where':_0x3da571[_0xa5e9('0x18')]?_0x3da571[_0xa5e9('0x18')][_0xa5e9('0x1a')]||null:null,'attributes':_0x3da571['options']?_0x3da571[_0xa5e9('0x18')][_0xa5e9('0x1b')]||null:null,'limit':_0x3da571[_0xa5e9('0x18')]?_0x3da571['options']['limit']||null:null,'include':_0x3da571[_0xa5e9('0x18')]?_0x3da571[_0xa5e9('0x18')][_0xa5e9('0x1c')]?_['map'](_0x3da571[_0xa5e9('0x18')]['include'],function(_0x4d5576){return{'model':db[_0x4d5576['model']],'as':_0x4d5576['as'],'attributes':_0x4d5576[_0xa5e9('0x1b')],'include':_0x4d5576[_0xa5e9('0x1c')]?_[_0xa5e9('0x1d')](_0x4d5576[_0xa5e9('0x1c')],function(_0x42b3df){return{'model':db[_0x42b3df[_0xa5e9('0x1e')]],'as':_0x42b3df['as'],'attributes':_0x42b3df[_0xa5e9('0x1b')],'include':_0x42b3df['include']?_['map'](_0x42b3df['include'],function(_0x56e637){return{'model':db[_0x56e637[_0xa5e9('0x1e')]],'as':_0x56e637['as'],'attributes':_0x56e637[_0xa5e9('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ea0be){logger['info'](_0xa5e9('0x15'),_0x3da571);logger[_0xa5e9('0x10')](_0xa5e9('0x15'),_0x3da571,JSON[_0xa5e9('0x1f')](_0x3ea0be));_0x2f6932(_0x3ea0be);})[_0xa5e9('0x14')](function(_0x11b3d0){logger['error'](_0xa5e9('0x15'),_0x11b3d0[_0xa5e9('0x13')],_0x3da571);_0x3f4904(_0x27ffdf[_0xa5e9('0x12')](0x1f4,_0x11b3d0[_0xa5e9('0x13')]));});});};exports['ShowDynamics365Account']=function(_0x1489b1){var _0x26df68=this;return new Promise(function(_0x40b034,_0x5e00ab){return db[_0xa5e9('0x16')][_0xa5e9('0x20')]({'raw':_0x1489b1[_0xa5e9('0x18')]?_0x1489b1[_0xa5e9('0x18')][_0xa5e9('0x19')]===undefined?!![]:![]:!![],'where':_0x1489b1['options']?_0x1489b1[_0xa5e9('0x18')][_0xa5e9('0x1a')]||null:null,'attributes':_0x1489b1[_0xa5e9('0x18')]?_0x1489b1[_0xa5e9('0x18')][_0xa5e9('0x1b')]||null:null,'include':_0x1489b1[_0xa5e9('0x18')]?_0x1489b1[_0xa5e9('0x18')][_0xa5e9('0x1c')]?_[_0xa5e9('0x1d')](_0x1489b1[_0xa5e9('0x18')]['include'],function(_0x5cfc9a){return{'model':db[_0x5cfc9a[_0xa5e9('0x1e')]],'as':_0x5cfc9a['as'],'attributes':_0x5cfc9a['attributes'],'include':_0x5cfc9a[_0xa5e9('0x1c')]?_[_0xa5e9('0x1d')](_0x5cfc9a[_0xa5e9('0x1c')],function(_0x5bd548){return{'model':db[_0x5bd548['model']],'as':_0x5bd548['as'],'attributes':_0x5bd548['attributes'],'include':_0x5bd548[_0xa5e9('0x1c')]?_[_0xa5e9('0x1d')](_0x5bd548['include'],function(_0x4bba35){return{'model':db[_0x4bba35[_0xa5e9('0x1e')]],'as':_0x4bba35['as'],'attributes':_0x4bba35[_0xa5e9('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd12e78){logger[_0xa5e9('0xd')]('ShowDynamics365Account',_0x1489b1);logger['debug'](_0xa5e9('0x21'),_0x1489b1,JSON['stringify'](_0xd12e78));_0x40b034(_0xd12e78);})[_0xa5e9('0x14')](function(_0x557d9a){logger['error'](_0xa5e9('0x21'),_0x557d9a[_0xa5e9('0x13')],_0x1489b1);_0x5e00ab(_0x26df68['error'](0x1f4,_0x557d9a[_0xa5e9('0x13')]));});});};
\ No newline at end of file
index 680b885..fbd40ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0344=['./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x20cae2,_0x378d30){var _0x32229b=function(_0x2eac7a){while(--_0x2eac7a){_0x20cae2['push'](_0x20cae2['shift']());}};_0x32229b(++_0x378d30);}(_0x0344,0x14b));var _0x4034=function(_0xb6859d,_0x494e05){_0xb6859d=_0xb6859d-0x0;var _0x31da94=_0x0344[_0xb6859d];return _0x31da94;};'use strict';var multer=require(_0x4034('0x0'));var util=require(_0x4034('0x1'));var path=require('path');var timeout=require(_0x4034('0x2'));var express=require(_0x4034('0x3'));var router=express[_0x4034('0x4')]();var fs_extra=require(_0x4034('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4034('0x6'));var config=require('../../config/environment');var controller=require(_0x4034('0x7'));router[_0x4034('0x8')]('/',auth[_0x4034('0x9')](),controller[_0x4034('0xa')]);router[_0x4034('0x8')](_0x4034('0xb'),auth['isAuthenticated'](),controller[_0x4034('0xc')]);router['get'](_0x4034('0xd'),auth[_0x4034('0x9')](),controller[_0x4034('0xe')]);router[_0x4034('0x8')](_0x4034('0xf'),auth['isAuthenticated'](),controller[_0x4034('0x10')]);router[_0x4034('0x8')](_0x4034('0x11'),auth[_0x4034('0x9')](),controller[_0x4034('0x12')]);router[_0x4034('0x13')]('/',auth[_0x4034('0x9')](),controller[_0x4034('0x14')]);router[_0x4034('0x15')](_0x4034('0xb'),auth[_0x4034('0x9')](),controller[_0x4034('0x16')]);router[_0x4034('0x17')](_0x4034('0xb'),auth[_0x4034('0x9')](),controller[_0x4034('0x18')]);module[_0x4034('0x19')]=router;
\ No newline at end of file
+var _0x0f97=['../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','index','get','/:id','isAuthenticated','/:id/fields','getFields','/:id/descriptions','getDescriptions','post','create','put','update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3bb701,_0x446fea){var _0x1dfd05=function(_0x3e3f60){while(--_0x3e3f60){_0x3bb701['push'](_0x3bb701['shift']());}};_0x1dfd05(++_0x446fea);}(_0x0f97,0x196));var _0x70f9=function(_0x5e9a69,_0x40c0ec){_0x5e9a69=_0x5e9a69-0x0;var _0x5979c8=_0x0f97[_0x5e9a69];return _0x5979c8;};'use strict';var multer=require(_0x70f9('0x0'));var util=require(_0x70f9('0x1'));var path=require(_0x70f9('0x2'));var timeout=require(_0x70f9('0x3'));var express=require(_0x70f9('0x4'));var router=express[_0x70f9('0x5')]();var fs_extra=require(_0x70f9('0x6'));var auth=require(_0x70f9('0x7'));var interaction=require(_0x70f9('0x8'));var config=require(_0x70f9('0x9'));var controller=require(_0x70f9('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x70f9('0xb')]);router[_0x70f9('0xc')](_0x70f9('0xd'),auth[_0x70f9('0xe')](),controller['show']);router['get'](_0x70f9('0xf'),auth[_0x70f9('0xe')](),controller[_0x70f9('0x10')]);router[_0x70f9('0xc')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);router['get'](_0x70f9('0x11'),auth[_0x70f9('0xe')](),controller[_0x70f9('0x12')]);router[_0x70f9('0x13')]('/',auth['isAuthenticated'](),controller[_0x70f9('0x14')]);router[_0x70f9('0x15')](_0x70f9('0xd'),auth[_0x70f9('0xe')](),controller[_0x70f9('0x16')]);router['delete'](_0x70f9('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ab71b95..4594e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x876c=['sequelize','ENUM','incident','phonecall','contact','nothing','STRING','BOOLEAN'];(function(_0x377a6e,_0x59b99d){var _0x37f751=function(_0x2ed25c){while(--_0x2ed25c){_0x377a6e['push'](_0x377a6e['shift']());}};_0x37f751(++_0x59b99d);}(_0x876c,0xe8));var _0xc876=function(_0x188aa7,_0x262737){_0x188aa7=_0x188aa7-0x0;var _0x410911=_0x876c[_0x188aa7];return _0x410911;};'use strict';var Sequelize=require(_0xc876('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xc876('0x1')](_0xc876('0x2'),_0xc876('0x3')),'defaultValue':_0xc876('0x2')},'moduleCreate':{'type':Sequelize[_0xc876('0x1')](_0xc876('0x4'),_0xc876('0x5')),'defaultValue':'contact','allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xc876('0x6')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xc876('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x95d0=['ENUM','incident','phonecall','contact','nothing','BOOLEAN','sequelize','exports','STRING'];(function(_0x34cbc8,_0x4f6d6a){var _0x5c82b0=function(_0x98d1b2){while(--_0x98d1b2){_0x34cbc8['push'](_0x34cbc8['shift']());}};_0x5c82b0(++_0x4f6d6a);}(_0x95d0,0x69));var _0x095d=function(_0x1c3e7f,_0x161b03){_0x1c3e7f=_0x1c3e7f-0x0;var _0x2f7c3c=_0x95d0[_0x1c3e7f];return _0x2f7c3c;};'use strict';var Sequelize=require(_0x095d('0x0'));module[_0x095d('0x1')]={'name':{'type':Sequelize[_0x095d('0x2')]},'description':{'type':Sequelize[_0x095d('0x2')]},'ticketType':{'type':Sequelize[_0x095d('0x3')](_0x095d('0x4'),_0x095d('0x5')),'defaultValue':_0x095d('0x4')},'moduleCreate':{'type':Sequelize[_0x095d('0x3')](_0x095d('0x6'),_0x095d('0x7')),'defaultValue':_0x095d('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x095d('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x095d('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 559990b..8f424a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa4b=['sort','where','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','length','find','create','body','getFields','findOne','Dynamics365Field','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x493691,_0x297d43){var _0x1c9cba=function(_0x33da42){while(--_0x33da42){_0x493691['push'](_0x493691['shift']());}};_0x1c9cba(++_0x297d43);}(_0xfa4b,0x10f));var _0xbfa4=function(_0x21438e,_0x559b37){_0x21438e=_0x21438e-0x0;var _0x3db17c=_0xfa4b[_0x21438e];return _0x3db17c;};'use strict';var emlformat=require(_0xbfa4('0x0'));var rimraf=require(_0xbfa4('0x1'));var zipdir=require(_0xbfa4('0x2'));var jsonpatch=require(_0xbfa4('0x3'));var rp=require(_0xbfa4('0x4'));var moment=require(_0xbfa4('0x5'));var BPromise=require(_0xbfa4('0x6'));var Mustache=require(_0xbfa4('0x7'));var util=require(_0xbfa4('0x8'));var path=require(_0xbfa4('0x9'));var sox=require(_0xbfa4('0xa'));var csv=require(_0xbfa4('0xb'));var ejs=require(_0xbfa4('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbfa4('0xd'));var crypto=require('crypto');var jsforce=require(_0xbfa4('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xbfa4('0xb'));var querystring=require('querystring');var Papa=require(_0xbfa4('0xf'));var Redis=require(_0xbfa4('0x10'));var authService=require(_0xbfa4('0x11'));var qs=require(_0xbfa4('0x12'));var as=require(_0xbfa4('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbfa4('0x14'))(_0xbfa4('0x15'));var utils=require(_0xbfa4('0x16'));var config=require(_0xbfa4('0x17'));var licenseUtil=require(_0xbfa4('0x18'));var db=require(_0xbfa4('0x19'))['db'];function respondWithStatusCode(_0x4249b3,_0x4c27db){_0x4c27db=_0x4c27db||0xcc;return function(_0xa61869){if(_0xa61869){return _0x4249b3[_0xbfa4('0x1a')](_0x4c27db);}return _0x4249b3['status'](_0x4c27db)[_0xbfa4('0x1b')]();};}function respondWithResult(_0x5d9034,_0x23de64){_0x23de64=_0x23de64||0xc8;return function(_0x27fa97){if(_0x27fa97){return _0x5d9034[_0xbfa4('0x1c')](_0x23de64)['json'](_0x27fa97);}};}function respondWithFilteredResult(_0xf87acc,_0x17e0ac){return function(_0x1b25ee){if(_0x1b25ee){var _0x2d15e4=typeof _0x17e0ac[_0xbfa4('0x1d')]===_0xbfa4('0x1e')&&typeof _0x17e0ac[_0xbfa4('0x1f')]===_0xbfa4('0x1e');var _0x45b1da=_0x1b25ee[_0xbfa4('0x20')];var _0x2361a0=_0x2d15e4?0x0:_0x17e0ac[_0xbfa4('0x1d')];var _0x5b8cae=_0x2d15e4?_0x1b25ee[_0xbfa4('0x20')]:_0x17e0ac[_0xbfa4('0x1d')]+_0x17e0ac[_0xbfa4('0x1f')];var _0x476380;if(_0x5b8cae>=_0x45b1da){_0x5b8cae=_0x45b1da;_0x476380=0xc8;}else{_0x476380=0xce;}_0xf87acc['status'](_0x476380);return _0xf87acc['set'](_0xbfa4('0x21'),_0x2361a0+'-'+_0x5b8cae+'/'+_0x45b1da)[_0xbfa4('0x22')](_0x1b25ee);}return null;};}function patchUpdates(_0x759cce){return function(_0x1c5e6c){try{jsonpatch[_0xbfa4('0x23')](_0x1c5e6c,_0x759cce,!![]);}catch(_0x9293bd){return BPromise[_0xbfa4('0x24')](_0x9293bd);}return _0x1c5e6c[_0xbfa4('0x25')]();};}function saveUpdates(_0x1dd451,_0x101f4c){return function(_0x4c82a8){if(_0x4c82a8){return _0x4c82a8[_0xbfa4('0x26')](_0x1dd451)[_0xbfa4('0x27')](function(_0x58b65b){return _0x58b65b;});}return null;};}function removeEntity(_0x370e7f,_0x106c20){return function(_0x3ed9b3){if(_0x3ed9b3){return _0x3ed9b3[_0xbfa4('0x28')]()[_0xbfa4('0x27')](function(){_0x370e7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x146083,_0x26a126){return function(_0x124d07){if(!_0x124d07){_0x146083[_0xbfa4('0x1a')](0x194);}return _0x124d07;};}function handleError(_0x5f2805,_0x54a74c){_0x54a74c=_0x54a74c||0x1f4;return function(_0x28309c){logger[_0xbfa4('0x29')](_0x28309c[_0xbfa4('0x2a')]);if(_0x28309c[_0xbfa4('0x2b')]){delete _0x28309c[_0xbfa4('0x2b')];}_0x5f2805['status'](_0x54a74c)[_0xbfa4('0x2c')](_0x28309c);};}exports[_0xbfa4('0x2d')]=function(_0x18f7f1,_0x5c778b){var _0x3be0f4={},_0x167478={},_0x45c249={'count':0x0,'rows':[]};var _0x557b07=_[_0xbfa4('0x2e')](db[_0xbfa4('0x2f')][_0xbfa4('0x30')],function(_0x9c985e){return{'name':_0x9c985e[_0xbfa4('0x31')],'type':_0x9c985e[_0xbfa4('0x32')][_0xbfa4('0x33')]};});_0x167478['model']=_[_0xbfa4('0x2e')](_0x557b07,'name');_0x167478['query']=_[_0xbfa4('0x34')](_0x18f7f1[_0xbfa4('0x35')]);_0x167478['filters']=_[_0xbfa4('0x36')](_0x167478[_0xbfa4('0x37')],_0x167478[_0xbfa4('0x35')]);_0x3be0f4[_0xbfa4('0x38')]=_[_0xbfa4('0x36')](_0x167478['model'],qs[_0xbfa4('0x39')](_0x18f7f1['query'][_0xbfa4('0x39')]));_0x3be0f4['attributes']=_0x3be0f4[_0xbfa4('0x38')]['length']?_0x3be0f4['attributes']:_0x167478[_0xbfa4('0x37')];if(!_0x18f7f1[_0xbfa4('0x35')][_0xbfa4('0x3a')](_0xbfa4('0x3b'))){_0x3be0f4[_0xbfa4('0x1f')]=qs[_0xbfa4('0x1f')](_0x18f7f1['query']['limit']);_0x3be0f4[_0xbfa4('0x1d')]=qs[_0xbfa4('0x1d')](_0x18f7f1[_0xbfa4('0x35')][_0xbfa4('0x1d')]);}_0x3be0f4[_0xbfa4('0x3c')]=qs['sort'](_0x18f7f1[_0xbfa4('0x35')][_0xbfa4('0x3d')]);_0x3be0f4[_0xbfa4('0x3e')]=qs[_0xbfa4('0x3f')](_['pick'](_0x18f7f1['query'],_0x167478[_0xbfa4('0x3f')]),_0x557b07);if(_0x18f7f1[_0xbfa4('0x35')][_0xbfa4('0x40')]){_0x3be0f4[_0xbfa4('0x3e')]=_[_0xbfa4('0x41')](_0x3be0f4[_0xbfa4('0x3e')],{'$or':_[_0xbfa4('0x2e')](_0x557b07,function(_0x2b33e6){if(_0x2b33e6[_0xbfa4('0x32')]!==_0xbfa4('0x42')){var _0x59798b={};_0x59798b[_0x2b33e6[_0xbfa4('0x2b')]]={'$like':'%'+_0x18f7f1['query'][_0xbfa4('0x40')]+'%'};return _0x59798b;}})});}_0x3be0f4=_[_0xbfa4('0x41')]({},_0x3be0f4,_0x18f7f1[_0xbfa4('0x43')]);var _0xea81f2={'where':_0x3be0f4[_0xbfa4('0x3e')]};return db[_0xbfa4('0x2f')][_0xbfa4('0x20')](_0xea81f2)[_0xbfa4('0x27')](function(_0x458b1c){_0x45c249['count']=_0x458b1c;if(_0x18f7f1['query'][_0xbfa4('0x44')]){_0x3be0f4['include']=[{'all':!![]}];}return db[_0xbfa4('0x2f')][_0xbfa4('0x45')](_0x3be0f4);})[_0xbfa4('0x27')](function(_0x15f9ab){_0x45c249[_0xbfa4('0x46')]=_0x15f9ab;return _0x45c249;})[_0xbfa4('0x27')](respondWithFilteredResult(_0x5c778b,_0x3be0f4))[_0xbfa4('0x47')](handleError(_0x5c778b,null));};exports['show']=function(_0x538155,_0x164d2a){var _0x114dcd={'raw':![],'where':{'id':_0x538155[_0xbfa4('0x48')]['id']}},_0x27e03e={};_0x27e03e[_0xbfa4('0x37')]=_[_0xbfa4('0x34')](db[_0xbfa4('0x2f')][_0xbfa4('0x30')]);_0x27e03e[_0xbfa4('0x35')]=_['keys'](_0x538155['query']);_0x27e03e['filters']=_[_0xbfa4('0x36')](_0x27e03e['model'],_0x27e03e[_0xbfa4('0x35')]);_0x114dcd[_0xbfa4('0x38')]=_[_0xbfa4('0x36')](_0x27e03e[_0xbfa4('0x37')],qs['fields'](_0x538155[_0xbfa4('0x35')][_0xbfa4('0x39')]));_0x114dcd['attributes']=_0x114dcd[_0xbfa4('0x38')][_0xbfa4('0x49')]?_0x114dcd[_0xbfa4('0x38')]:_0x27e03e['model'];if(_0x538155[_0xbfa4('0x35')]['includeAll']){_0x114dcd['include']=[{'all':!![]}];}_0x114dcd=_[_0xbfa4('0x41')]({},_0x114dcd,_0x538155[_0xbfa4('0x43')]);return db['Dynamics365Configuration'][_0xbfa4('0x4a')](_0x114dcd)['then'](handleEntityNotFound(_0x164d2a,null))[_0xbfa4('0x27')](respondWithResult(_0x164d2a,null))['catch'](handleError(_0x164d2a,null));};exports[_0xbfa4('0x4b')]=function(_0x3c5e2e,_0x3739ba){return db['Dynamics365Configuration'][_0xbfa4('0x4b')](_0x3c5e2e[_0xbfa4('0x4c')],{})[_0xbfa4('0x27')](respondWithResult(_0x3739ba,0xc9))[_0xbfa4('0x47')](handleError(_0x3739ba,null));};exports['update']=function(_0x492488,_0x567b3c){if(_0x492488['body']['id']){delete _0x492488['body']['id'];}return db['Dynamics365Configuration'][_0xbfa4('0x4a')]({'where':{'id':_0x492488[_0xbfa4('0x48')]['id']}})[_0xbfa4('0x27')](handleEntityNotFound(_0x567b3c,null))[_0xbfa4('0x27')](saveUpdates(_0x492488[_0xbfa4('0x4c')],null))[_0xbfa4('0x27')](respondWithResult(_0x567b3c,null))[_0xbfa4('0x47')](handleError(_0x567b3c,null));};exports['destroy']=function(_0x4268c6,_0x55380c){return db[_0xbfa4('0x2f')]['find']({'where':{'id':_0x4268c6['params']['id']}})[_0xbfa4('0x27')](handleEntityNotFound(_0x55380c,null))['then'](removeEntity(_0x55380c,null))[_0xbfa4('0x47')](handleError(_0x55380c,null));};exports[_0xbfa4('0x4d')]=function(_0x6ea835,_0x7fb021,_0x1e529e){var _0x2f274f={};var _0x128f7d={};var _0x414740;var _0x4a44a4;return db['Dynamics365Configuration'][_0xbfa4('0x4e')]({'where':{'id':_0x6ea835['params']['id']}})[_0xbfa4('0x27')](handleEntityNotFound(_0x7fb021,null))[_0xbfa4('0x27')](function(_0x2e52f5){if(_0x2e52f5){_0x414740=_0x2e52f5;_0x128f7d[_0xbfa4('0x37')]=_[_0xbfa4('0x34')](db[_0xbfa4('0x4f')]['rawAttributes']);_0x128f7d[_0xbfa4('0x35')]=_[_0xbfa4('0x34')](_0x6ea835[_0xbfa4('0x35')]);_0x128f7d[_0xbfa4('0x3f')]=_[_0xbfa4('0x36')](_0x128f7d[_0xbfa4('0x37')],_0x128f7d[_0xbfa4('0x35')]);_0x2f274f[_0xbfa4('0x38')]=_['intersection'](_0x128f7d[_0xbfa4('0x37')],qs[_0xbfa4('0x39')](_0x6ea835[_0xbfa4('0x35')][_0xbfa4('0x39')]));_0x2f274f['attributes']=_0x2f274f[_0xbfa4('0x38')][_0xbfa4('0x49')]?_0x2f274f[_0xbfa4('0x38')]:_0x128f7d[_0xbfa4('0x37')];_0x2f274f['order']=qs[_0xbfa4('0x3d')](_0x6ea835[_0xbfa4('0x35')][_0xbfa4('0x3d')]);_0x2f274f['where']=qs[_0xbfa4('0x3f')](_[_0xbfa4('0x50')](_0x6ea835['query'],_0x128f7d[_0xbfa4('0x3f')]));if(_0x6ea835[_0xbfa4('0x35')][_0xbfa4('0x40')]){_0x2f274f['where']=_[_0xbfa4('0x41')](_0x2f274f['where'],{'$or':_[_0xbfa4('0x2e')](_0x2f274f[_0xbfa4('0x38')],function(_0x2249c9){var _0x268275={};_0x268275[_0x2249c9]={'$like':'%'+_0x6ea835['query']['filter']+'%'};return _0x268275;})});}_0x2f274f=_[_0xbfa4('0x41')]({},_0x2f274f,_0x6ea835['options']);return _0x414740['getFields'](_0x2f274f);}})[_0xbfa4('0x27')](function(_0x2723ca){if(_0x2723ca){_0x4a44a4=_0x2723ca[_0xbfa4('0x49')];if(!_0x6ea835[_0xbfa4('0x35')][_0xbfa4('0x3a')](_0xbfa4('0x3b'))){_0x2f274f[_0xbfa4('0x1f')]=qs[_0xbfa4('0x1f')](_0x6ea835[_0xbfa4('0x35')][_0xbfa4('0x1f')]);_0x2f274f[_0xbfa4('0x1d')]=qs[_0xbfa4('0x1d')](_0x6ea835['query']['offset']);}return _0x414740[_0xbfa4('0x4d')](_0x2f274f);}})[_0xbfa4('0x27')](function(_0x39b2d7){if(_0x39b2d7){return _0x39b2d7?{'count':_0x4a44a4,'rows':_0x39b2d7}:null;}})[_0xbfa4('0x27')](respondWithResult(_0x7fb021,null))[_0xbfa4('0x47')](handleError(_0x7fb021,null));};exports[_0xbfa4('0x51')]=function(_0x44c228,_0x20a71c,_0xf63ee0){var _0x5a2c18={};var _0x3210e8={};var _0x3ec216;var _0x621b09;return db[_0xbfa4('0x2f')][_0xbfa4('0x4e')]({'where':{'id':_0x44c228[_0xbfa4('0x48')]['id']}})[_0xbfa4('0x27')](handleEntityNotFound(_0x20a71c,null))[_0xbfa4('0x27')](function(_0x3834f6){if(_0x3834f6){_0x3ec216=_0x3834f6;_0x3210e8['model']=_[_0xbfa4('0x34')](db[_0xbfa4('0x4f')][_0xbfa4('0x30')]);_0x3210e8[_0xbfa4('0x35')]=_[_0xbfa4('0x34')](_0x44c228[_0xbfa4('0x35')]);_0x3210e8['filters']=_[_0xbfa4('0x36')](_0x3210e8[_0xbfa4('0x37')],_0x3210e8[_0xbfa4('0x35')]);_0x5a2c18[_0xbfa4('0x38')]=_[_0xbfa4('0x36')](_0x3210e8[_0xbfa4('0x37')],qs['fields'](_0x44c228[_0xbfa4('0x35')][_0xbfa4('0x39')]));_0x5a2c18[_0xbfa4('0x38')]=_0x5a2c18[_0xbfa4('0x38')][_0xbfa4('0x49')]?_0x5a2c18[_0xbfa4('0x38')]:_0x3210e8[_0xbfa4('0x37')];_0x5a2c18[_0xbfa4('0x3c')]=qs[_0xbfa4('0x3d')](_0x44c228[_0xbfa4('0x35')][_0xbfa4('0x3d')]);_0x5a2c18[_0xbfa4('0x3e')]=qs['filters'](_['pick'](_0x44c228[_0xbfa4('0x35')],_0x3210e8[_0xbfa4('0x3f')]));if(_0x44c228['query'][_0xbfa4('0x40')]){_0x5a2c18[_0xbfa4('0x3e')]=_['merge'](_0x5a2c18['where'],{'$or':_[_0xbfa4('0x2e')](_0x5a2c18[_0xbfa4('0x38')],function(_0x55b375){var _0x4efae3={};_0x4efae3[_0x55b375]={'$like':'%'+_0x44c228['query'][_0xbfa4('0x40')]+'%'};return _0x4efae3;})});}_0x5a2c18=_[_0xbfa4('0x41')]({},_0x5a2c18,_0x44c228[_0xbfa4('0x43')]);return _0x3ec216[_0xbfa4('0x51')](_0x5a2c18);}})[_0xbfa4('0x27')](function(_0x3b2665){if(_0x3b2665){_0x621b09=_0x3b2665[_0xbfa4('0x49')];if(!_0x44c228[_0xbfa4('0x35')][_0xbfa4('0x3a')](_0xbfa4('0x3b'))){_0x5a2c18[_0xbfa4('0x1f')]=qs[_0xbfa4('0x1f')](_0x44c228[_0xbfa4('0x35')]['limit']);_0x5a2c18[_0xbfa4('0x1d')]=qs[_0xbfa4('0x1d')](_0x44c228['query']['offset']);}return _0x3ec216[_0xbfa4('0x51')](_0x5a2c18);}})[_0xbfa4('0x27')](function(_0x11ce08){if(_0x11ce08){return _0x11ce08?{'count':_0x621b09,'rows':_0x11ce08}:null;}})[_0xbfa4('0x27')](respondWithResult(_0x20a71c,null))[_0xbfa4('0x47')](handleError(_0x20a71c,null));};exports[_0xbfa4('0x52')]=function(_0x23f112,_0x4a170,_0x3a4de3){var _0x396965={};var _0xdaa2bd={};var _0x52f769;var _0x4274c5;return db[_0xbfa4('0x2f')][_0xbfa4('0x4e')]({'where':{'id':_0x23f112[_0xbfa4('0x48')]['id']}})[_0xbfa4('0x27')](handleEntityNotFound(_0x4a170,null))[_0xbfa4('0x27')](function(_0x203245){if(_0x203245){_0x52f769=_0x203245;_0xdaa2bd[_0xbfa4('0x37')]=_[_0xbfa4('0x34')](db[_0xbfa4('0x4f')][_0xbfa4('0x30')]);_0xdaa2bd[_0xbfa4('0x35')]=_['keys'](_0x23f112[_0xbfa4('0x35')]);_0xdaa2bd[_0xbfa4('0x3f')]=_[_0xbfa4('0x36')](_0xdaa2bd[_0xbfa4('0x37')],_0xdaa2bd[_0xbfa4('0x35')]);_0x396965['attributes']=_[_0xbfa4('0x36')](_0xdaa2bd[_0xbfa4('0x37')],qs[_0xbfa4('0x39')](_0x23f112['query'][_0xbfa4('0x39')]));_0x396965[_0xbfa4('0x38')]=_0x396965[_0xbfa4('0x38')][_0xbfa4('0x49')]?_0x396965[_0xbfa4('0x38')]:_0xdaa2bd['model'];_0x396965[_0xbfa4('0x3c')]=qs[_0xbfa4('0x3d')](_0x23f112['query'][_0xbfa4('0x3d')]);_0x396965[_0xbfa4('0x3e')]=qs[_0xbfa4('0x3f')](_[_0xbfa4('0x50')](_0x23f112['query'],_0xdaa2bd[_0xbfa4('0x3f')]));if(_0x23f112[_0xbfa4('0x35')][_0xbfa4('0x40')]){_0x396965[_0xbfa4('0x3e')]=_[_0xbfa4('0x41')](_0x396965[_0xbfa4('0x3e')],{'$or':_['map'](_0x396965[_0xbfa4('0x38')],function(_0x388fdb){var _0x3f270d={};_0x3f270d[_0x388fdb]={'$like':'%'+_0x23f112['query'][_0xbfa4('0x40')]+'%'};return _0x3f270d;})});}_0x396965=_[_0xbfa4('0x41')]({},_0x396965,_0x23f112[_0xbfa4('0x43')]);return _0x52f769[_0xbfa4('0x52')](_0x396965);}})[_0xbfa4('0x27')](function(_0x4779e8){if(_0x4779e8){_0x4274c5=_0x4779e8[_0xbfa4('0x49')];if(!_0x23f112[_0xbfa4('0x35')][_0xbfa4('0x3a')](_0xbfa4('0x3b'))){_0x396965[_0xbfa4('0x1f')]=qs[_0xbfa4('0x1f')](_0x23f112[_0xbfa4('0x35')][_0xbfa4('0x1f')]);_0x396965['offset']=qs[_0xbfa4('0x1d')](_0x23f112[_0xbfa4('0x35')][_0xbfa4('0x1d')]);}return _0x52f769['getDescriptions'](_0x396965);}})[_0xbfa4('0x27')](function(_0x1d3ac5){if(_0x1d3ac5){return _0x1d3ac5?{'count':_0x4274c5,'rows':_0x1d3ac5}:null;}})[_0xbfa4('0x27')](respondWithResult(_0x4a170,null))[_0xbfa4('0x47')](handleError(_0x4a170,null));};
\ No newline at end of file
+var _0x63fb=['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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','count','set','reject','save','update','then','sendStatus','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','fields','find','catch','create','body','destroy','Dynamics365Field','getFields','hasOwnProperty','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0x12c263,_0x2d9bce){var _0x192cd7=function(_0x3a1fc0){while(--_0x3a1fc0){_0x12c263['push'](_0x12c263['shift']());}};_0x192cd7(++_0x2d9bce);}(_0x63fb,0x1f3));var _0xb63f=function(_0x1b5fff,_0x4a7dad){_0x1b5fff=_0x1b5fff-0x0;var _0x31cc64=_0x63fb[_0x1b5fff];return _0x31cc64;};'use strict';var emlformat=require(_0xb63f('0x0'));var rimraf=require(_0xb63f('0x1'));var zipdir=require(_0xb63f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb63f('0x3'));var moment=require(_0xb63f('0x4'));var BPromise=require(_0xb63f('0x5'));var Mustache=require(_0xb63f('0x6'));var util=require(_0xb63f('0x7'));var path=require(_0xb63f('0x8'));var sox=require('sox');var csv=require(_0xb63f('0x9'));var ejs=require(_0xb63f('0xa'));var fs=require('fs');var fs_extra=require(_0xb63f('0xb'));var _=require(_0xb63f('0xc'));var squel=require(_0xb63f('0xd'));var crypto=require(_0xb63f('0xe'));var jsforce=require(_0xb63f('0xf'));var deskjs=require(_0xb63f('0x10'));var toCsv=require(_0xb63f('0x9'));var querystring=require('querystring');var Papa=require(_0xb63f('0x11'));var Redis=require(_0xb63f('0x12'));var authService=require(_0xb63f('0x13'));var qs=require(_0xb63f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb63f('0x15'));var logger=require(_0xb63f('0x16'))(_0xb63f('0x17'));var utils=require(_0xb63f('0x18'));var config=require(_0xb63f('0x19'));var licenseUtil=require(_0xb63f('0x1a'));var db=require(_0xb63f('0x1b'))['db'];function respondWithStatusCode(_0x26ab69,_0x4f081e){_0x4f081e=_0x4f081e||0xcc;return function(_0x4f3a8e){if(_0x4f3a8e){return _0x26ab69['sendStatus'](_0x4f081e);}return _0x26ab69[_0xb63f('0x1c')](_0x4f081e)[_0xb63f('0x1d')]();};}function respondWithResult(_0x59f7cc,_0x759689){_0x759689=_0x759689||0xc8;return function(_0x2db81f){if(_0x2db81f){return _0x59f7cc['status'](_0x759689)['json'](_0x2db81f);}};}function respondWithFilteredResult(_0x28a11d,_0x5c375f){return function(_0x7a0537){if(_0x7a0537){var _0x28f096=typeof _0x5c375f[_0xb63f('0x1e')]==='undefined'&&typeof _0x5c375f[_0xb63f('0x1f')]==='undefined';var _0x50c123=_0x7a0537[_0xb63f('0x20')];var _0x56c274=_0x28f096?0x0:_0x5c375f[_0xb63f('0x1e')];var _0x520aca=_0x28f096?_0x7a0537[_0xb63f('0x20')]:_0x5c375f[_0xb63f('0x1e')]+_0x5c375f[_0xb63f('0x1f')];var _0x19c018;if(_0x520aca>=_0x50c123){_0x520aca=_0x50c123;_0x19c018=0xc8;}else{_0x19c018=0xce;}_0x28a11d[_0xb63f('0x1c')](_0x19c018);return _0x28a11d[_0xb63f('0x21')]('Content-Range',_0x56c274+'-'+_0x520aca+'/'+_0x50c123)['json'](_0x7a0537);}return null;};}function patchUpdates(_0x95d4a0){return function(_0x1b598a){try{jsonpatch['apply'](_0x1b598a,_0x95d4a0,!![]);}catch(_0x505bab){return BPromise[_0xb63f('0x22')](_0x505bab);}return _0x1b598a[_0xb63f('0x23')]();};}function saveUpdates(_0x10848e,_0x13b799){return function(_0x3f44c7){if(_0x3f44c7){return _0x3f44c7[_0xb63f('0x24')](_0x10848e)[_0xb63f('0x25')](function(_0x4d6a1a){return _0x4d6a1a;});}return null;};}function removeEntity(_0x18bf0c,_0x1bf901){return function(_0x1ca579){if(_0x1ca579){return _0x1ca579['destroy']()['then'](function(){_0x18bf0c[_0xb63f('0x1c')](0xcc)[_0xb63f('0x1d')]();});}};}function handleEntityNotFound(_0x163435,_0x2198a9){return function(_0x11c91f){if(!_0x11c91f){_0x163435[_0xb63f('0x26')](0x194);}return _0x11c91f;};}function handleError(_0x1d451e,_0x307ae1){_0x307ae1=_0x307ae1||0x1f4;return function(_0x2514c7){logger[_0xb63f('0x27')](_0x2514c7[_0xb63f('0x28')]);if(_0x2514c7[_0xb63f('0x29')]){delete _0x2514c7[_0xb63f('0x29')];}_0x1d451e['status'](_0x307ae1)[_0xb63f('0x2a')](_0x2514c7);};}exports[_0xb63f('0x2b')]=function(_0x3d15e5,_0x4c182d){var _0x421d93={},_0xa8f65e={},_0x428df2={'count':0x0,'rows':[]};var _0x41e961=_[_0xb63f('0x2c')](db[_0xb63f('0x2d')][_0xb63f('0x2e')],function(_0xa16f4c){return{'name':_0xa16f4c[_0xb63f('0x2f')],'type':_0xa16f4c[_0xb63f('0x30')][_0xb63f('0x31')]};});_0xa8f65e[_0xb63f('0x32')]=_[_0xb63f('0x2c')](_0x41e961,_0xb63f('0x29'));_0xa8f65e['query']=_[_0xb63f('0x33')](_0x3d15e5['query']);_0xa8f65e[_0xb63f('0x34')]=_[_0xb63f('0x35')](_0xa8f65e['model'],_0xa8f65e[_0xb63f('0x36')]);_0x421d93[_0xb63f('0x37')]=_[_0xb63f('0x35')](_0xa8f65e['model'],qs['fields'](_0x3d15e5[_0xb63f('0x36')]['fields']));_0x421d93['attributes']=_0x421d93[_0xb63f('0x37')][_0xb63f('0x38')]?_0x421d93['attributes']:_0xa8f65e[_0xb63f('0x32')];if(!_0x3d15e5[_0xb63f('0x36')]['hasOwnProperty'](_0xb63f('0x39'))){_0x421d93[_0xb63f('0x1f')]=qs[_0xb63f('0x1f')](_0x3d15e5['query'][_0xb63f('0x1f')]);_0x421d93[_0xb63f('0x1e')]=qs[_0xb63f('0x1e')](_0x3d15e5[_0xb63f('0x36')]['offset']);}_0x421d93[_0xb63f('0x3a')]=qs['sort'](_0x3d15e5[_0xb63f('0x36')][_0xb63f('0x3b')]);_0x421d93[_0xb63f('0x3c')]=qs['filters'](_[_0xb63f('0x3d')](_0x3d15e5[_0xb63f('0x36')],_0xa8f65e[_0xb63f('0x34')]),_0x41e961);if(_0x3d15e5['query'][_0xb63f('0x3e')]){_0x421d93['where']=_[_0xb63f('0x3f')](_0x421d93[_0xb63f('0x3c')],{'$or':_[_0xb63f('0x2c')](_0x41e961,function(_0x364a3e){if(_0x364a3e['type']!==_0xb63f('0x40')){var _0x397713={};_0x397713[_0x364a3e[_0xb63f('0x29')]]={'$like':'%'+_0x3d15e5[_0xb63f('0x36')][_0xb63f('0x3e')]+'%'};return _0x397713;}})});}_0x421d93=_[_0xb63f('0x3f')]({},_0x421d93,_0x3d15e5[_0xb63f('0x41')]);var _0x1ba9f2={'where':_0x421d93['where']};return db[_0xb63f('0x2d')]['count'](_0x1ba9f2)[_0xb63f('0x25')](function(_0x40e2df){_0x428df2[_0xb63f('0x20')]=_0x40e2df;if(_0x3d15e5['query'][_0xb63f('0x42')]){_0x421d93[_0xb63f('0x43')]=[{'all':!![]}];}return db[_0xb63f('0x2d')][_0xb63f('0x44')](_0x421d93);})[_0xb63f('0x25')](function(_0x5a18a9){_0x428df2[_0xb63f('0x45')]=_0x5a18a9;return _0x428df2;})[_0xb63f('0x25')](respondWithFilteredResult(_0x4c182d,_0x421d93))['catch'](handleError(_0x4c182d,null));};exports[_0xb63f('0x46')]=function(_0x20c3d3,_0x3792d0){var _0x40f8e7={'raw':![],'where':{'id':_0x20c3d3[_0xb63f('0x47')]['id']}},_0x351bee={};_0x351bee[_0xb63f('0x32')]=_['keys'](db[_0xb63f('0x2d')][_0xb63f('0x2e')]);_0x351bee['query']=_[_0xb63f('0x33')](_0x20c3d3['query']);_0x351bee[_0xb63f('0x34')]=_['intersection'](_0x351bee[_0xb63f('0x32')],_0x351bee[_0xb63f('0x36')]);_0x40f8e7[_0xb63f('0x37')]=_[_0xb63f('0x35')](_0x351bee[_0xb63f('0x32')],qs[_0xb63f('0x48')](_0x20c3d3[_0xb63f('0x36')][_0xb63f('0x48')]));_0x40f8e7['attributes']=_0x40f8e7['attributes'][_0xb63f('0x38')]?_0x40f8e7[_0xb63f('0x37')]:_0x351bee[_0xb63f('0x32')];if(_0x20c3d3['query'][_0xb63f('0x42')]){_0x40f8e7['include']=[{'all':!![]}];}_0x40f8e7=_['merge']({},_0x40f8e7,_0x20c3d3[_0xb63f('0x41')]);return db[_0xb63f('0x2d')][_0xb63f('0x49')](_0x40f8e7)['then'](handleEntityNotFound(_0x3792d0,null))['then'](respondWithResult(_0x3792d0,null))[_0xb63f('0x4a')](handleError(_0x3792d0,null));};exports[_0xb63f('0x4b')]=function(_0x4f548b,_0x5afe93){return db[_0xb63f('0x2d')][_0xb63f('0x4b')](_0x4f548b[_0xb63f('0x4c')],{})['then'](respondWithResult(_0x5afe93,0xc9))[_0xb63f('0x4a')](handleError(_0x5afe93,null));};exports[_0xb63f('0x24')]=function(_0x59ab2a,_0x235362){if(_0x59ab2a[_0xb63f('0x4c')]['id']){delete _0x59ab2a[_0xb63f('0x4c')]['id'];}return db['Dynamics365Configuration'][_0xb63f('0x49')]({'where':{'id':_0x59ab2a[_0xb63f('0x47')]['id']}})[_0xb63f('0x25')](handleEntityNotFound(_0x235362,null))[_0xb63f('0x25')](saveUpdates(_0x59ab2a[_0xb63f('0x4c')],null))[_0xb63f('0x25')](respondWithResult(_0x235362,null))[_0xb63f('0x4a')](handleError(_0x235362,null));};exports[_0xb63f('0x4d')]=function(_0xa7390a,_0xcd4022){return db[_0xb63f('0x2d')][_0xb63f('0x49')]({'where':{'id':_0xa7390a['params']['id']}})['then'](handleEntityNotFound(_0xcd4022,null))[_0xb63f('0x25')](removeEntity(_0xcd4022,null))[_0xb63f('0x4a')](handleError(_0xcd4022,null));};exports['getFields']=function(_0x19ba58,_0x4c0a57,_0x2ec108){var _0x304cd7={};var _0x432916={};var _0x4d7b11;var _0x1465d0;return db[_0xb63f('0x2d')]['findOne']({'where':{'id':_0x19ba58[_0xb63f('0x47')]['id']}})[_0xb63f('0x25')](handleEntityNotFound(_0x4c0a57,null))[_0xb63f('0x25')](function(_0x1aafc5){if(_0x1aafc5){_0x4d7b11=_0x1aafc5;_0x432916['model']=_[_0xb63f('0x33')](db[_0xb63f('0x4e')]['rawAttributes']);_0x432916[_0xb63f('0x36')]=_['keys'](_0x19ba58[_0xb63f('0x36')]);_0x432916['filters']=_[_0xb63f('0x35')](_0x432916[_0xb63f('0x32')],_0x432916[_0xb63f('0x36')]);_0x304cd7[_0xb63f('0x37')]=_[_0xb63f('0x35')](_0x432916['model'],qs['fields'](_0x19ba58['query'][_0xb63f('0x48')]));_0x304cd7[_0xb63f('0x37')]=_0x304cd7[_0xb63f('0x37')]['length']?_0x304cd7['attributes']:_0x432916[_0xb63f('0x32')];_0x304cd7[_0xb63f('0x3a')]=qs[_0xb63f('0x3b')](_0x19ba58[_0xb63f('0x36')]['sort']);_0x304cd7[_0xb63f('0x3c')]=qs[_0xb63f('0x34')](_['pick'](_0x19ba58[_0xb63f('0x36')],_0x432916[_0xb63f('0x34')]));if(_0x19ba58['query'][_0xb63f('0x3e')]){_0x304cd7[_0xb63f('0x3c')]=_['merge'](_0x304cd7[_0xb63f('0x3c')],{'$or':_['map'](_0x304cd7[_0xb63f('0x37')],function(_0x2a30b1){var _0x5ddeb5={};_0x5ddeb5[_0x2a30b1]={'$like':'%'+_0x19ba58[_0xb63f('0x36')][_0xb63f('0x3e')]+'%'};return _0x5ddeb5;})});}_0x304cd7=_[_0xb63f('0x3f')]({},_0x304cd7,_0x19ba58['options']);return _0x4d7b11[_0xb63f('0x4f')](_0x304cd7);}})['then'](function(_0x2f5ed9){if(_0x2f5ed9){_0x1465d0=_0x2f5ed9[_0xb63f('0x38')];if(!_0x19ba58[_0xb63f('0x36')][_0xb63f('0x50')]('nolimit')){_0x304cd7[_0xb63f('0x1f')]=qs[_0xb63f('0x1f')](_0x19ba58[_0xb63f('0x36')][_0xb63f('0x1f')]);_0x304cd7[_0xb63f('0x1e')]=qs[_0xb63f('0x1e')](_0x19ba58['query'][_0xb63f('0x1e')]);}return _0x4d7b11[_0xb63f('0x4f')](_0x304cd7);}})[_0xb63f('0x25')](function(_0x37e61b){if(_0x37e61b){return _0x37e61b?{'count':_0x1465d0,'rows':_0x37e61b}:null;}})['then'](respondWithResult(_0x4c0a57,null))['catch'](handleError(_0x4c0a57,null));};exports[_0xb63f('0x51')]=function(_0x44bac2,_0x1ca8f4,_0xdddf67){var _0x4d827b={};var _0x5d1278={};var _0x142667;var _0x977526;return db['Dynamics365Configuration'][_0xb63f('0x52')]({'where':{'id':_0x44bac2['params']['id']}})['then'](handleEntityNotFound(_0x1ca8f4,null))[_0xb63f('0x25')](function(_0x49cdea){if(_0x49cdea){_0x142667=_0x49cdea;_0x5d1278[_0xb63f('0x32')]=_[_0xb63f('0x33')](db['Dynamics365Field'][_0xb63f('0x2e')]);_0x5d1278[_0xb63f('0x36')]=_[_0xb63f('0x33')](_0x44bac2[_0xb63f('0x36')]);_0x5d1278[_0xb63f('0x34')]=_[_0xb63f('0x35')](_0x5d1278[_0xb63f('0x32')],_0x5d1278['query']);_0x4d827b['attributes']=_['intersection'](_0x5d1278['model'],qs[_0xb63f('0x48')](_0x44bac2[_0xb63f('0x36')][_0xb63f('0x48')]));_0x4d827b['attributes']=_0x4d827b[_0xb63f('0x37')]['length']?_0x4d827b['attributes']:_0x5d1278[_0xb63f('0x32')];_0x4d827b[_0xb63f('0x3a')]=qs[_0xb63f('0x3b')](_0x44bac2[_0xb63f('0x36')][_0xb63f('0x3b')]);_0x4d827b[_0xb63f('0x3c')]=qs[_0xb63f('0x34')](_[_0xb63f('0x3d')](_0x44bac2[_0xb63f('0x36')],_0x5d1278['filters']));if(_0x44bac2[_0xb63f('0x36')][_0xb63f('0x3e')]){_0x4d827b[_0xb63f('0x3c')]=_['merge'](_0x4d827b[_0xb63f('0x3c')],{'$or':_[_0xb63f('0x2c')](_0x4d827b[_0xb63f('0x37')],function(_0x28e0db){var _0x46d7c5={};_0x46d7c5[_0x28e0db]={'$like':'%'+_0x44bac2[_0xb63f('0x36')][_0xb63f('0x3e')]+'%'};return _0x46d7c5;})});}_0x4d827b=_[_0xb63f('0x3f')]({},_0x4d827b,_0x44bac2['options']);return _0x142667['getSubjects'](_0x4d827b);}})[_0xb63f('0x25')](function(_0x4bf97e){if(_0x4bf97e){_0x977526=_0x4bf97e[_0xb63f('0x38')];if(!_0x44bac2[_0xb63f('0x36')][_0xb63f('0x50')]('nolimit')){_0x4d827b[_0xb63f('0x1f')]=qs[_0xb63f('0x1f')](_0x44bac2['query'][_0xb63f('0x1f')]);_0x4d827b[_0xb63f('0x1e')]=qs[_0xb63f('0x1e')](_0x44bac2[_0xb63f('0x36')][_0xb63f('0x1e')]);}return _0x142667[_0xb63f('0x51')](_0x4d827b);}})[_0xb63f('0x25')](function(_0x3268d7){if(_0x3268d7){return _0x3268d7?{'count':_0x977526,'rows':_0x3268d7}:null;}})[_0xb63f('0x25')](respondWithResult(_0x1ca8f4,null))[_0xb63f('0x4a')](handleError(_0x1ca8f4,null));};exports[_0xb63f('0x53')]=function(_0x2a9864,_0x517133,_0x1c0f7c){var _0x8a0ab0={};var _0xb1b0ef={};var _0x58b9ea;var _0x4c93f8;return db[_0xb63f('0x2d')]['findOne']({'where':{'id':_0x2a9864[_0xb63f('0x47')]['id']}})[_0xb63f('0x25')](handleEntityNotFound(_0x517133,null))[_0xb63f('0x25')](function(_0x46c20f){if(_0x46c20f){_0x58b9ea=_0x46c20f;_0xb1b0ef['model']=_[_0xb63f('0x33')](db['Dynamics365Field'][_0xb63f('0x2e')]);_0xb1b0ef[_0xb63f('0x36')]=_[_0xb63f('0x33')](_0x2a9864[_0xb63f('0x36')]);_0xb1b0ef[_0xb63f('0x34')]=_[_0xb63f('0x35')](_0xb1b0ef['model'],_0xb1b0ef['query']);_0x8a0ab0['attributes']=_[_0xb63f('0x35')](_0xb1b0ef['model'],qs[_0xb63f('0x48')](_0x2a9864[_0xb63f('0x36')][_0xb63f('0x48')]));_0x8a0ab0[_0xb63f('0x37')]=_0x8a0ab0[_0xb63f('0x37')][_0xb63f('0x38')]?_0x8a0ab0['attributes']:_0xb1b0ef[_0xb63f('0x32')];_0x8a0ab0['order']=qs[_0xb63f('0x3b')](_0x2a9864[_0xb63f('0x36')]['sort']);_0x8a0ab0[_0xb63f('0x3c')]=qs['filters'](_[_0xb63f('0x3d')](_0x2a9864[_0xb63f('0x36')],_0xb1b0ef['filters']));if(_0x2a9864[_0xb63f('0x36')][_0xb63f('0x3e')]){_0x8a0ab0[_0xb63f('0x3c')]=_['merge'](_0x8a0ab0[_0xb63f('0x3c')],{'$or':_[_0xb63f('0x2c')](_0x8a0ab0[_0xb63f('0x37')],function(_0x512341){var _0x4d5842={};_0x4d5842[_0x512341]={'$like':'%'+_0x2a9864[_0xb63f('0x36')]['filter']+'%'};return _0x4d5842;})});}_0x8a0ab0=_[_0xb63f('0x3f')]({},_0x8a0ab0,_0x2a9864[_0xb63f('0x41')]);return _0x58b9ea[_0xb63f('0x53')](_0x8a0ab0);}})[_0xb63f('0x25')](function(_0xfe8f3b){if(_0xfe8f3b){_0x4c93f8=_0xfe8f3b[_0xb63f('0x38')];if(!_0x2a9864['query']['hasOwnProperty']('nolimit')){_0x8a0ab0[_0xb63f('0x1f')]=qs[_0xb63f('0x1f')](_0x2a9864[_0xb63f('0x36')][_0xb63f('0x1f')]);_0x8a0ab0[_0xb63f('0x1e')]=qs[_0xb63f('0x1e')](_0x2a9864[_0xb63f('0x36')][_0xb63f('0x1e')]);}return _0x58b9ea[_0xb63f('0x53')](_0x8a0ab0);}})['then'](function(_0x58d8db){if(_0x58d8db){return _0x58d8db?{'count':_0x4c93f8,'rows':_0x58d8db}:null;}})[_0xb63f('0x25')](respondWithResult(_0x517133,null))['catch'](handleError(_0x517133,null));};
\ No newline at end of file
index 8989d6b..b52fca9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['request-promise','path','./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','../../config/logger','api','moment','bluebird'];(function(_0x4cc768,_0x28df20){var _0x3b71f2=function(_0x36ad7f){while(--_0x36ad7f){_0x4cc768['push'](_0x4cc768['shift']());}};_0x3b71f2(++_0x28df20);}(_0x9c44,0x178));var _0x49c4=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x9c44[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb821=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util','../../config/logger','bluebird'];(function(_0x1ae878,_0x5bccd5){var _0x174623=function(_0x1e04f9){while(--_0x1e04f9){_0x1ae878['push'](_0x1ae878['shift']());}};_0x174623(++_0x5bccd5);}(_0xb821,0xa7));var _0x1b82=function(_0x4edc55,_0x1676bd){_0x4edc55=_0x4edc55-0x0;var _0x5c6c44=_0xb821[_0x4edc55];return _0x5c6c44;};'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
index 5557460..733c78d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75cb=['debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x75cb,0x92));var _0xb75c=function(_0x312aad,_0x495b70){_0x312aad=_0x312aad-0x0;var _0x99c6cf=_0x75cb[_0x312aad];return _0x99c6cf;};'use strict';var _=require(_0xb75c('0x0'));var util=require(_0xb75c('0x1'));var moment=require(_0xb75c('0x2'));var BPromise=require('bluebird');var rs=require(_0xb75c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb75c('0x4'))['db'];var utils=require(_0xb75c('0x5'));var logger=require(_0xb75c('0x6'))('rpc');var config=require(_0xb75c('0x7'));var jayson=require(_0xb75c('0x8'));var client=jayson[_0xb75c('0x9')][_0xb75c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44d583,_0x233b9d,_0x504fe9){return new BPromise(function(_0x4ed578,_0x19fbf0){return client[_0xb75c('0xb')](_0x44d583,_0x504fe9)[_0xb75c('0xc')](function(_0x1f27a3){logger[_0xb75c('0xd')](_0xb75c('0xe'),_0x233b9d,'request\x20sent');logger[_0xb75c('0xf')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x233b9d,_0xb75c('0x10'),JSON[_0xb75c('0x11')](_0x1f27a3));if(_0x1f27a3['error']){if(_0x1f27a3[_0xb75c('0x12')][_0xb75c('0x13')]===0x1f4){logger['error'](_0xb75c('0xe'),_0x233b9d,_0x1f27a3['error'][_0xb75c('0x14')]);return _0x19fbf0(_0x1f27a3[_0xb75c('0x12')][_0xb75c('0x14')]);}logger[_0xb75c('0x12')](_0xb75c('0xe'),_0x233b9d,_0x1f27a3[_0xb75c('0x12')][_0xb75c('0x14')]);return _0x4ed578(_0x1f27a3['error'][_0xb75c('0x14')]);}else{logger['info'](_0xb75c('0xe'),_0x233b9d,_0xb75c('0x10'));_0x4ed578(_0x1f27a3[_0xb75c('0x15')][_0xb75c('0x14')]);}})[_0xb75c('0x16')](function(_0x4108c5){logger[_0xb75c('0x12')](_0xb75c('0xe'),_0x233b9d,_0x4108c5);_0x19fbf0(_0x4108c5);});});}
\ No newline at end of file
+var _0xedfd=['../../config/utils','rpc','jayson/promise','request','then','info','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Configuration,\x20%s,\x20%s','message','util','moment','bluebird','randomstring','ioredis'];(function(_0x39f9ea,_0x249630){var _0x5062e5=function(_0x3bc37b){while(--_0x3bc37b){_0x39f9ea['push'](_0x39f9ea['shift']());}};_0x5062e5(++_0x249630);}(_0xedfd,0x1b0));var _0xdedf=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0xedfd[_0xd39959];return _0x1ff69c;};'use strict';var _=require('lodash');var util=require(_0xdedf('0x0'));var moment=require(_0xdedf('0x1'));var BPromise=require(_0xdedf('0x2'));var rs=require(_0xdedf('0x3'));var fs=require('fs');var Redis=require(_0xdedf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xdedf('0x5'));var logger=require('../../config/logger')(_0xdedf('0x6'));var config=require('../../config/environment');var jayson=require(_0xdedf('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3cd050,_0x43ee21,_0x47e86d){return new BPromise(function(_0x2a0c95,_0x4ddb43){return client[_0xdedf('0x8')](_0x3cd050,_0x47e86d)[_0xdedf('0x9')](function(_0x5b60f0){logger[_0xdedf('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x43ee21,_0xdedf('0xb'));logger[_0xdedf('0xc')](_0xdedf('0xd'),_0x43ee21,_0xdedf('0xb'),JSON[_0xdedf('0xe')](_0x5b60f0));if(_0x5b60f0[_0xdedf('0xf')]){if(_0x5b60f0[_0xdedf('0xf')][_0xdedf('0x10')]===0x1f4){logger[_0xdedf('0xf')](_0xdedf('0x11'),_0x43ee21,_0x5b60f0[_0xdedf('0xf')][_0xdedf('0x12')]);return _0x4ddb43(_0x5b60f0[_0xdedf('0xf')]['message']);}logger[_0xdedf('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x43ee21,_0x5b60f0[_0xdedf('0xf')][_0xdedf('0x12')]);return _0x2a0c95(_0x5b60f0['error'][_0xdedf('0x12')]);}else{logger[_0xdedf('0xa')](_0xdedf('0x11'),_0x43ee21,'request\x20sent');_0x2a0c95(_0x5b60f0['result']['message']);}})['catch'](function(_0x1d2402){logger[_0xdedf('0xf')](_0xdedf('0x11'),_0x43ee21,_0x1d2402);_0x4ddb43(_0x1d2402);});});}
\ No newline at end of file
index c39a212..3ea879e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cba=['update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x5e5568,_0x300d0d){var _0x557045=function(_0x2ee76c){while(--_0x2ee76c){_0x5e5568['push'](_0x5e5568['shift']());}};_0x557045(++_0x300d0d);}(_0x1cba,0x190));var _0xa1cb=function(_0x462b3a,_0x52fa71){_0x462b3a=_0x462b3a-0x0;var _0xbc5daa=_0x1cba[_0x462b3a];return _0xbc5daa;};'use strict';var multer=require(_0xa1cb('0x0'));var util=require(_0xa1cb('0x1'));var path=require(_0xa1cb('0x2'));var timeout=require(_0xa1cb('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa1cb('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa1cb('0x5'));var controller=require(_0xa1cb('0x6'));router[_0xa1cb('0x7')]('/',auth[_0xa1cb('0x8')](),controller[_0xa1cb('0x9')]);router[_0xa1cb('0x7')](_0xa1cb('0xa'),auth[_0xa1cb('0x8')](),controller[_0xa1cb('0xb')]);router[_0xa1cb('0xc')]('/',auth[_0xa1cb('0x8')](),controller[_0xa1cb('0xd')]);router['put'](_0xa1cb('0xa'),auth[_0xa1cb('0x8')](),controller[_0xa1cb('0xe')]);router[_0xa1cb('0xf')](_0xa1cb('0xa'),auth[_0xa1cb('0x8')](),controller[_0xa1cb('0x10')]);module[_0xa1cb('0x11')]=router;
\ No newline at end of file
+var _0x46dc=['delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/:id','show','post','create'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x46dc,0xc3));var _0xc46d=function(_0x517443,_0x2cad8d){_0x517443=_0x517443-0x0;var _0x5b397b=_0x46dc[_0x517443];return _0x5b397b;};'use strict';var multer=require(_0xc46d('0x0'));var util=require('util');var path=require(_0xc46d('0x1'));var timeout=require('connect-timeout');var express=require(_0xc46d('0x2'));var router=express[_0xc46d('0x3')]();var fs_extra=require(_0xc46d('0x4'));var auth=require(_0xc46d('0x5'));var interaction=require(_0xc46d('0x6'));var config=require('../../config/environment');var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0xc46d('0x7')](),controller['index']);router[_0xc46d('0x8')](_0xc46d('0x9'),auth['isAuthenticated'](),controller[_0xc46d('0xa')]);router[_0xc46d('0xb')]('/',auth[_0xc46d('0x7')](),controller[_0xc46d('0xc')]);router['put']('/:id',auth[_0xc46d('0x7')](),controller['update']);router[_0xc46d('0xd')](_0xc46d('0x9'),auth[_0xc46d('0x7')](),controller[_0xc46d('0xe')]);module[_0xc46d('0xf')]=router;
\ No newline at end of file
index 8867614..82e8f4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab8b=['ENUM','string','picklist','STRING','variable','customVariable','BOOLEAN','exports'];(function(_0x2001e0,_0x3397d3){var _0x52687d=function(_0x38920c){while(--_0x38920c){_0x2001e0['push'](_0x2001e0['shift']());}};_0x52687d(++_0x3397d3);}(_0xab8b,0x147));var _0xbab8=function(_0x3075df,_0x4d30e){_0x3075df=_0x3075df-0x0;var _0x347b93=_0xab8b[_0x3075df];return _0x347b93;};'use strict';var Sequelize=require('sequelize');module[_0xbab8('0x0')]={'type':{'type':Sequelize[_0xbab8('0x1')](_0xbab8('0x2'),'variable','customVariable','keyValue',_0xbab8('0x3')),'defaultValue':_0xbab8('0x2')},'content':{'type':Sequelize[_0xbab8('0x4')]},'key':{'type':Sequelize[_0xbab8('0x4')]},'keyType':{'type':Sequelize[_0xbab8('0x1')](_0xbab8('0x2'),_0xbab8('0x5'),_0xbab8('0x6'))},'keyContent':{'type':Sequelize[_0xbab8('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xbab8('0x4')]},'customField':{'type':Sequelize[_0xbab8('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbab8('0x4')]}};
\ No newline at end of file
+var _0xe79e=['variable','customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x620a6e,_0x5a74c2){var _0x50e2c4=function(_0xd36426){while(--_0xd36426){_0x620a6e['push'](_0x620a6e['shift']());}};_0x50e2c4(++_0x5a74c2);}(_0xe79e,0x1a3));var _0xee79=function(_0x150f01,_0x5e1895){_0x150f01=_0x150f01-0x0;var _0x4573c7=_0xe79e[_0x150f01];return _0x4573c7;};'use strict';var Sequelize=require(_0xee79('0x0'));module[_0xee79('0x1')]={'type':{'type':Sequelize[_0xee79('0x2')](_0xee79('0x3'),_0xee79('0x4'),_0xee79('0x5'),'keyValue',_0xee79('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xee79('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xee79('0x3'),_0xee79('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xee79('0x7')]},'idField':{'type':Sequelize[_0xee79('0x7')]},'nameField':{'type':Sequelize[_0xee79('0x7')]},'customField':{'type':Sequelize[_0xee79('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xee79('0x7')]}};
\ No newline at end of file
index 46581bc..ca5194c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf293=['request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','Dynamics365Field','include','findAll','catch','show','params','includeAll','find','create','body','eml-format','rimraf','fast-json-patch'];(function(_0x57869e,_0x2f0390){var _0x1037d2=function(_0x11c59b){while(--_0x11c59b){_0x57869e['push'](_0x57869e['shift']());}};_0x1037d2(++_0x2f0390);}(_0xf293,0x16f));var _0x3f29=function(_0x141571,_0xec02f9){_0x141571=_0x141571-0x0;var _0x142d13=_0xf293[_0x141571];return _0x142d13;};'use strict';var emlformat=require(_0x3f29('0x0'));var rimraf=require(_0x3f29('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3f29('0x2'));var rp=require(_0x3f29('0x3'));var moment=require(_0x3f29('0x4'));var BPromise=require(_0x3f29('0x5'));var Mustache=require('mustache');var util=require(_0x3f29('0x6'));var path=require(_0x3f29('0x7'));var sox=require('sox');var csv=require(_0x3f29('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3f29('0x9'));var _=require(_0x3f29('0xa'));var squel=require(_0x3f29('0xb'));var crypto=require(_0x3f29('0xc'));var jsforce=require(_0x3f29('0xd'));var deskjs=require(_0x3f29('0xe'));var toCsv=require(_0x3f29('0x8'));var querystring=require(_0x3f29('0xf'));var Papa=require('papaparse');var Redis=require(_0x3f29('0x10'));var authService=require(_0x3f29('0x11'));var qs=require(_0x3f29('0x12'));var as=require(_0x3f29('0x13'));var hardwareService=require(_0x3f29('0x14'));var logger=require(_0x3f29('0x15'))('api');var utils=require(_0x3f29('0x16'));var config=require(_0x3f29('0x17'));var licenseUtil=require(_0x3f29('0x18'));var db=require(_0x3f29('0x19'))['db'];function respondWithStatusCode(_0x52c0af,_0x29ca5f){_0x29ca5f=_0x29ca5f||0xcc;return function(_0x2e336f){if(_0x2e336f){return _0x52c0af[_0x3f29('0x1a')](_0x29ca5f);}return _0x52c0af[_0x3f29('0x1b')](_0x29ca5f)['end']();};}function respondWithResult(_0x2f2b0b,_0x525e00){_0x525e00=_0x525e00||0xc8;return function(_0x54c5e1){if(_0x54c5e1){return _0x2f2b0b['status'](_0x525e00)[_0x3f29('0x1c')](_0x54c5e1);}};}function respondWithFilteredResult(_0xdc5cad,_0x4de2d4){return function(_0x3298c2){if(_0x3298c2){var _0x38492=typeof _0x4de2d4[_0x3f29('0x1d')]===_0x3f29('0x1e')&&typeof _0x4de2d4[_0x3f29('0x1f')]===_0x3f29('0x1e');var _0x3257fa=_0x3298c2['count'];var _0x1de89d=_0x38492?0x0:_0x4de2d4[_0x3f29('0x1d')];var _0x3b1d6e=_0x38492?_0x3298c2[_0x3f29('0x20')]:_0x4de2d4['offset']+_0x4de2d4[_0x3f29('0x1f')];var _0x1714c3;if(_0x3b1d6e>=_0x3257fa){_0x3b1d6e=_0x3257fa;_0x1714c3=0xc8;}else{_0x1714c3=0xce;}_0xdc5cad['status'](_0x1714c3);return _0xdc5cad['set']('Content-Range',_0x1de89d+'-'+_0x3b1d6e+'/'+_0x3257fa)[_0x3f29('0x1c')](_0x3298c2);}return null;};}function patchUpdates(_0x8dfcd9){return function(_0x1324e1){try{jsonpatch[_0x3f29('0x21')](_0x1324e1,_0x8dfcd9,!![]);}catch(_0x9017d5){return BPromise[_0x3f29('0x22')](_0x9017d5);}return _0x1324e1[_0x3f29('0x23')]();};}function saveUpdates(_0x3ca93a,_0x24d276){return function(_0x5dd948){if(_0x5dd948){return _0x5dd948[_0x3f29('0x24')](_0x3ca93a)[_0x3f29('0x25')](function(_0x3afd0f){return _0x3afd0f;});}return null;};}function removeEntity(_0x359054,_0x72c4d8){return function(_0x44df5d){if(_0x44df5d){return _0x44df5d[_0x3f29('0x26')]()['then'](function(){_0x359054[_0x3f29('0x1b')](0xcc)[_0x3f29('0x27')]();});}};}function handleEntityNotFound(_0xb7fe70,_0x44e3a1){return function(_0xc8dce5){if(!_0xc8dce5){_0xb7fe70['sendStatus'](0x194);}return _0xc8dce5;};}function handleError(_0x10ec5b,_0x392111){_0x392111=_0x392111||0x1f4;return function(_0x35108c){logger[_0x3f29('0x28')](_0x35108c[_0x3f29('0x29')]);if(_0x35108c[_0x3f29('0x2a')]){delete _0x35108c[_0x3f29('0x2a')];}_0x10ec5b[_0x3f29('0x1b')](_0x392111)['send'](_0x35108c);};}exports[_0x3f29('0x2b')]=function(_0x599f0e,_0x23603c){var _0x9db9d9={},_0x194db1={},_0x86de88={'count':0x0,'rows':[]};var _0x59e525=_[_0x3f29('0x2c')](db['Dynamics365Field'][_0x3f29('0x2d')],function(_0x32d938){return{'name':_0x32d938[_0x3f29('0x2e')],'type':_0x32d938['type'][_0x3f29('0x2f')]};});_0x194db1[_0x3f29('0x30')]=_[_0x3f29('0x2c')](_0x59e525,'name');_0x194db1[_0x3f29('0x31')]=_[_0x3f29('0x32')](_0x599f0e[_0x3f29('0x31')]);_0x194db1[_0x3f29('0x33')]=_[_0x3f29('0x34')](_0x194db1[_0x3f29('0x30')],_0x194db1['query']);_0x9db9d9[_0x3f29('0x35')]=_[_0x3f29('0x34')](_0x194db1[_0x3f29('0x30')],qs['fields'](_0x599f0e['query'][_0x3f29('0x36')]));_0x9db9d9[_0x3f29('0x35')]=_0x9db9d9['attributes'][_0x3f29('0x37')]?_0x9db9d9[_0x3f29('0x35')]:_0x194db1[_0x3f29('0x30')];if(!_0x599f0e[_0x3f29('0x31')][_0x3f29('0x38')](_0x3f29('0x39'))){_0x9db9d9[_0x3f29('0x1f')]=qs[_0x3f29('0x1f')](_0x599f0e[_0x3f29('0x31')][_0x3f29('0x1f')]);_0x9db9d9[_0x3f29('0x1d')]=qs[_0x3f29('0x1d')](_0x599f0e[_0x3f29('0x31')][_0x3f29('0x1d')]);}_0x9db9d9['order']=qs[_0x3f29('0x3a')](_0x599f0e[_0x3f29('0x31')][_0x3f29('0x3a')]);_0x9db9d9[_0x3f29('0x3b')]=qs[_0x3f29('0x33')](_[_0x3f29('0x3c')](_0x599f0e['query'],_0x194db1['filters']),_0x59e525);if(_0x599f0e['query']['filter']){_0x9db9d9['where']=_[_0x3f29('0x3d')](_0x9db9d9[_0x3f29('0x3b')],{'$or':_[_0x3f29('0x2c')](_0x59e525,function(_0x4c7c93){if(_0x4c7c93['type']!==_0x3f29('0x3e')){var _0x3c90bb={};_0x3c90bb[_0x4c7c93[_0x3f29('0x2a')]]={'$like':'%'+_0x599f0e['query']['filter']+'%'};return _0x3c90bb;}})});}_0x9db9d9=_[_0x3f29('0x3d')]({},_0x9db9d9,_0x599f0e[_0x3f29('0x3f')]);var _0x40898f={'where':_0x9db9d9['where']};return db[_0x3f29('0x40')][_0x3f29('0x20')](_0x40898f)[_0x3f29('0x25')](function(_0x22b075){_0x86de88[_0x3f29('0x20')]=_0x22b075;if(_0x599f0e[_0x3f29('0x31')]['includeAll']){_0x9db9d9[_0x3f29('0x41')]=[{'all':!![]}];}return db['Dynamics365Field'][_0x3f29('0x42')](_0x9db9d9);})[_0x3f29('0x25')](function(_0x25c417){_0x86de88['rows']=_0x25c417;return _0x86de88;})[_0x3f29('0x25')](respondWithFilteredResult(_0x23603c,_0x9db9d9))[_0x3f29('0x43')](handleError(_0x23603c,null));};exports[_0x3f29('0x44')]=function(_0x5aba66,_0x51cdaa){var _0x1153cb={'raw':!![],'where':{'id':_0x5aba66[_0x3f29('0x45')]['id']}},_0x4d2fb2={};_0x4d2fb2['model']=_[_0x3f29('0x32')](db['Dynamics365Field'][_0x3f29('0x2d')]);_0x4d2fb2[_0x3f29('0x31')]=_['keys'](_0x5aba66['query']);_0x4d2fb2[_0x3f29('0x33')]=_['intersection'](_0x4d2fb2[_0x3f29('0x30')],_0x4d2fb2['query']);_0x1153cb['attributes']=_['intersection'](_0x4d2fb2[_0x3f29('0x30')],qs[_0x3f29('0x36')](_0x5aba66[_0x3f29('0x31')][_0x3f29('0x36')]));_0x1153cb[_0x3f29('0x35')]=_0x1153cb[_0x3f29('0x35')]['length']?_0x1153cb[_0x3f29('0x35')]:_0x4d2fb2[_0x3f29('0x30')];if(_0x5aba66['query'][_0x3f29('0x46')]){_0x1153cb['include']=[{'all':!![]}];}_0x1153cb=_[_0x3f29('0x3d')]({},_0x1153cb,_0x5aba66[_0x3f29('0x3f')]);return db[_0x3f29('0x40')][_0x3f29('0x47')](_0x1153cb)[_0x3f29('0x25')](handleEntityNotFound(_0x51cdaa,null))['then'](respondWithResult(_0x51cdaa,null))[_0x3f29('0x43')](handleError(_0x51cdaa,null));};exports[_0x3f29('0x48')]=function(_0x582494,_0x1633d3){return db[_0x3f29('0x40')][_0x3f29('0x48')](_0x582494[_0x3f29('0x49')],{})[_0x3f29('0x25')](respondWithResult(_0x1633d3,0xc9))[_0x3f29('0x43')](handleError(_0x1633d3,null));};exports[_0x3f29('0x24')]=function(_0x9c8cd3,_0x2b0b0f){if(_0x9c8cd3[_0x3f29('0x49')]['id']){delete _0x9c8cd3[_0x3f29('0x49')]['id'];}return db[_0x3f29('0x40')][_0x3f29('0x47')]({'where':{'id':_0x9c8cd3[_0x3f29('0x45')]['id']}})[_0x3f29('0x25')](handleEntityNotFound(_0x2b0b0f,null))['then'](saveUpdates(_0x9c8cd3[_0x3f29('0x49')],null))['then'](respondWithResult(_0x2b0b0f,null))[_0x3f29('0x43')](handleError(_0x2b0b0f,null));};exports[_0x3f29('0x26')]=function(_0x56ea30,_0x4908eb){return db['Dynamics365Field'][_0x3f29('0x47')]({'where':{'id':_0x56ea30['params']['id']}})[_0x3f29('0x25')](handleEntityNotFound(_0x4908eb,null))[_0x3f29('0x25')](removeEntity(_0x4908eb,null))['catch'](handleError(_0x4908eb,null));};
\ No newline at end of file
+var _0x1746=['apply','reject','save','update','then','destroy','error','stack','name','send','rawAttributes','fieldName','type','model','map','filters','intersection','attributes','fields','query','nolimit','where','pick','filter','merge','options','Dynamics365Field','includeAll','catch','keys','length','include','create','body','params','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range'];(function(_0x3de50d,_0x35e361){var _0x56fdc0=function(_0x1a67e9){while(--_0x1a67e9){_0x3de50d['push'](_0x3de50d['shift']());}};_0x56fdc0(++_0x35e361);}(_0x1746,0x13c));var _0x6174=function(_0x373e50,_0x2444ed){_0x373e50=_0x373e50-0x0;var _0x2529be=_0x1746[_0x373e50];return _0x2529be;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6174('0x0'));var zipdir=require(_0x6174('0x1'));var jsonpatch=require(_0x6174('0x2'));var rp=require(_0x6174('0x3'));var moment=require(_0x6174('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6174('0x5'));var util=require(_0x6174('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6174('0x7'));var ejs=require(_0x6174('0x8'));var fs=require('fs');var fs_extra=require(_0x6174('0x9'));var _=require(_0x6174('0xa'));var squel=require(_0x6174('0xb'));var crypto=require(_0x6174('0xc'));var jsforce=require(_0x6174('0xd'));var deskjs=require(_0x6174('0xe'));var toCsv=require(_0x6174('0x7'));var querystring=require(_0x6174('0xf'));var Papa=require(_0x6174('0x10'));var Redis=require(_0x6174('0x11'));var authService=require(_0x6174('0x12'));var qs=require(_0x6174('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6174('0x14'));var logger=require('../../config/logger')(_0x6174('0x15'));var utils=require(_0x6174('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6174('0x17'));var db=require(_0x6174('0x18'))['db'];function respondWithStatusCode(_0x3a303a,_0x1f8340){_0x1f8340=_0x1f8340||0xcc;return function(_0xbe7883){if(_0xbe7883){return _0x3a303a[_0x6174('0x19')](_0x1f8340);}return _0x3a303a[_0x6174('0x1a')](_0x1f8340)[_0x6174('0x1b')]();};}function respondWithResult(_0x12c1af,_0x38fb0a){_0x38fb0a=_0x38fb0a||0xc8;return function(_0x10ed1a){if(_0x10ed1a){return _0x12c1af[_0x6174('0x1a')](_0x38fb0a)[_0x6174('0x1c')](_0x10ed1a);}};}function respondWithFilteredResult(_0x524795,_0x398eeb){return function(_0xf1669e){if(_0xf1669e){var _0x4d0178=typeof _0x398eeb[_0x6174('0x1d')]===_0x6174('0x1e')&&typeof _0x398eeb[_0x6174('0x1f')]===_0x6174('0x1e');var _0x168c1b=_0xf1669e[_0x6174('0x20')];var _0x3d2457=_0x4d0178?0x0:_0x398eeb[_0x6174('0x1d')];var _0x4fd61f=_0x4d0178?_0xf1669e[_0x6174('0x20')]:_0x398eeb[_0x6174('0x1d')]+_0x398eeb['limit'];var _0x1e6d0c;if(_0x4fd61f>=_0x168c1b){_0x4fd61f=_0x168c1b;_0x1e6d0c=0xc8;}else{_0x1e6d0c=0xce;}_0x524795[_0x6174('0x1a')](_0x1e6d0c);return _0x524795['set'](_0x6174('0x21'),_0x3d2457+'-'+_0x4fd61f+'/'+_0x168c1b)[_0x6174('0x1c')](_0xf1669e);}return null;};}function patchUpdates(_0x56ca68){return function(_0x13d9b5){try{jsonpatch[_0x6174('0x22')](_0x13d9b5,_0x56ca68,!![]);}catch(_0x36b092){return BPromise[_0x6174('0x23')](_0x36b092);}return _0x13d9b5[_0x6174('0x24')]();};}function saveUpdates(_0x2271ac,_0x5af28e){return function(_0x3c5cef){if(_0x3c5cef){return _0x3c5cef[_0x6174('0x25')](_0x2271ac)[_0x6174('0x26')](function(_0x8e9b75){return _0x8e9b75;});}return null;};}function removeEntity(_0x3ed7db,_0x44b0f9){return function(_0x3de127){if(_0x3de127){return _0x3de127[_0x6174('0x27')]()[_0x6174('0x26')](function(){_0x3ed7db[_0x6174('0x1a')](0xcc)[_0x6174('0x1b')]();});}};}function handleEntityNotFound(_0x29f281,_0x3cb8e4){return function(_0xf4df77){if(!_0xf4df77){_0x29f281[_0x6174('0x19')](0x194);}return _0xf4df77;};}function handleError(_0x254597,_0x542657){_0x542657=_0x542657||0x1f4;return function(_0x2e922b){logger[_0x6174('0x28')](_0x2e922b[_0x6174('0x29')]);if(_0x2e922b[_0x6174('0x2a')]){delete _0x2e922b[_0x6174('0x2a')];}_0x254597['status'](_0x542657)[_0x6174('0x2b')](_0x2e922b);};}exports['index']=function(_0x2df556,_0x1d7a2d){var _0x61b565={},_0x1c1194={},_0x39b3c6={'count':0x0,'rows':[]};var _0x388223=_['map'](db['Dynamics365Field'][_0x6174('0x2c')],function(_0xe0c703){return{'name':_0xe0c703[_0x6174('0x2d')],'type':_0xe0c703[_0x6174('0x2e')]['key']};});_0x1c1194[_0x6174('0x2f')]=_[_0x6174('0x30')](_0x388223,_0x6174('0x2a'));_0x1c1194['query']=_['keys'](_0x2df556['query']);_0x1c1194[_0x6174('0x31')]=_[_0x6174('0x32')](_0x1c1194[_0x6174('0x2f')],_0x1c1194['query']);_0x61b565[_0x6174('0x33')]=_[_0x6174('0x32')](_0x1c1194[_0x6174('0x2f')],qs[_0x6174('0x34')](_0x2df556[_0x6174('0x35')]['fields']));_0x61b565[_0x6174('0x33')]=_0x61b565[_0x6174('0x33')]['length']?_0x61b565[_0x6174('0x33')]:_0x1c1194[_0x6174('0x2f')];if(!_0x2df556['query']['hasOwnProperty'](_0x6174('0x36'))){_0x61b565[_0x6174('0x1f')]=qs['limit'](_0x2df556['query'][_0x6174('0x1f')]);_0x61b565[_0x6174('0x1d')]=qs[_0x6174('0x1d')](_0x2df556['query']['offset']);}_0x61b565['order']=qs['sort'](_0x2df556[_0x6174('0x35')]['sort']);_0x61b565[_0x6174('0x37')]=qs['filters'](_[_0x6174('0x38')](_0x2df556[_0x6174('0x35')],_0x1c1194[_0x6174('0x31')]),_0x388223);if(_0x2df556[_0x6174('0x35')][_0x6174('0x39')]){_0x61b565[_0x6174('0x37')]=_['merge'](_0x61b565['where'],{'$or':_[_0x6174('0x30')](_0x388223,function(_0x1a2a52){if(_0x1a2a52['type']!=='VIRTUAL'){var _0x429f54={};_0x429f54[_0x1a2a52[_0x6174('0x2a')]]={'$like':'%'+_0x2df556[_0x6174('0x35')][_0x6174('0x39')]+'%'};return _0x429f54;}})});}_0x61b565=_[_0x6174('0x3a')]({},_0x61b565,_0x2df556[_0x6174('0x3b')]);var _0x10e727={'where':_0x61b565[_0x6174('0x37')]};return db[_0x6174('0x3c')][_0x6174('0x20')](_0x10e727)[_0x6174('0x26')](function(_0x41b43a){_0x39b3c6[_0x6174('0x20')]=_0x41b43a;if(_0x2df556[_0x6174('0x35')][_0x6174('0x3d')]){_0x61b565['include']=[{'all':!![]}];}return db[_0x6174('0x3c')]['findAll'](_0x61b565);})['then'](function(_0x355b2f){_0x39b3c6['rows']=_0x355b2f;return _0x39b3c6;})['then'](respondWithFilteredResult(_0x1d7a2d,_0x61b565))[_0x6174('0x3e')](handleError(_0x1d7a2d,null));};exports['show']=function(_0x5bf890,_0x522845){var _0x21cd2e={'raw':!![],'where':{'id':_0x5bf890['params']['id']}},_0x48d967={};_0x48d967[_0x6174('0x2f')]=_[_0x6174('0x3f')](db[_0x6174('0x3c')][_0x6174('0x2c')]);_0x48d967[_0x6174('0x35')]=_['keys'](_0x5bf890[_0x6174('0x35')]);_0x48d967[_0x6174('0x31')]=_[_0x6174('0x32')](_0x48d967[_0x6174('0x2f')],_0x48d967[_0x6174('0x35')]);_0x21cd2e[_0x6174('0x33')]=_['intersection'](_0x48d967[_0x6174('0x2f')],qs[_0x6174('0x34')](_0x5bf890[_0x6174('0x35')]['fields']));_0x21cd2e[_0x6174('0x33')]=_0x21cd2e[_0x6174('0x33')][_0x6174('0x40')]?_0x21cd2e[_0x6174('0x33')]:_0x48d967['model'];if(_0x5bf890[_0x6174('0x35')][_0x6174('0x3d')]){_0x21cd2e[_0x6174('0x41')]=[{'all':!![]}];}_0x21cd2e=_[_0x6174('0x3a')]({},_0x21cd2e,_0x5bf890[_0x6174('0x3b')]);return db['Dynamics365Field']['find'](_0x21cd2e)['then'](handleEntityNotFound(_0x522845,null))[_0x6174('0x26')](respondWithResult(_0x522845,null))[_0x6174('0x3e')](handleError(_0x522845,null));};exports['create']=function(_0x3ac4bf,_0x450926){return db[_0x6174('0x3c')][_0x6174('0x42')](_0x3ac4bf[_0x6174('0x43')],{})[_0x6174('0x26')](respondWithResult(_0x450926,0xc9))[_0x6174('0x3e')](handleError(_0x450926,null));};exports[_0x6174('0x25')]=function(_0x4af24d,_0x28067e){if(_0x4af24d[_0x6174('0x43')]['id']){delete _0x4af24d[_0x6174('0x43')]['id'];}return db[_0x6174('0x3c')]['find']({'where':{'id':_0x4af24d[_0x6174('0x44')]['id']}})['then'](handleEntityNotFound(_0x28067e,null))['then'](saveUpdates(_0x4af24d[_0x6174('0x43')],null))[_0x6174('0x26')](respondWithResult(_0x28067e,null))[_0x6174('0x3e')](handleError(_0x28067e,null));};exports[_0x6174('0x27')]=function(_0xee2810,_0x1831fa){return db[_0x6174('0x3c')][_0x6174('0x45')]({'where':{'id':_0xee2810['params']['id']}})[_0x6174('0x26')](handleEntityNotFound(_0x1831fa,null))[_0x6174('0x26')](removeEntity(_0x1831fa,null))[_0x6174('0x3e')](handleError(_0x1831fa,null));};
\ No newline at end of file
index fe56272..ca43fb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a26=['path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0x5a26,0x191));var _0x65a2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5a26[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x65a2('0x0'));var util=require(_0x65a2('0x1'));var logger=require(_0x65a2('0x2'))(_0x65a2('0x3'));var moment=require(_0x65a2('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x65a2('0x5'));var rimraf=require(_0x65a2('0x6'));var config=require(_0x65a2('0x7'));var attributes=require(_0x65a2('0x8'));module[_0x65a2('0x9')]=function(_0x137026,_0x4fc75f){return _0x137026[_0x65a2('0xa')]('Dynamics365Field',attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0x65a2('0xb'),'fields':[_0x65a2('0xc'),_0x65a2('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x854b=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','define','Dynamics365Field','dynamics365_unique_index','idField','FieldId','lodash','../../config/logger'];(function(_0xb3b67d,_0x544844){var _0x5d69d8=function(_0x5296dc){while(--_0x5296dc){_0xb3b67d['push'](_0xb3b67d['shift']());}};_0x5d69d8(++_0x544844);}(_0x854b,0x1cf));var _0xb854=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x854b[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0xb854('0x0'));var util=require('util');var logger=require(_0xb854('0x1'))(_0xb854('0x2'));var moment=require(_0xb854('0x3'));var BPromise=require(_0xb854('0x4'));var rp=require(_0xb854('0x5'));var fs=require('fs');var path=require(_0xb854('0x6'));var rimraf=require(_0xb854('0x7'));var config=require(_0xb854('0x8'));var attributes=require(_0xb854('0x9'));module['exports']=function(_0xd82f4,_0x4c7b60){return _0xd82f4[_0xb854('0xa')](_0xb854('0xb'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xb854('0xc'),'fields':[_0xb854('0xd'),_0xb854('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 45a6eeb..8f4ed03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x924a=['../../config/logger','client','http','request','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x924a,0x1f1));var _0xa924=function(_0x547209,_0xbccff3){_0x547209=_0x547209-0x0;var _0x191d21=_0x924a[_0x547209];return _0x191d21;};'use strict';var _=require(_0xa924('0x0'));var util=require(_0xa924('0x1'));var moment=require(_0xa924('0x2'));var BPromise=require(_0xa924('0x3'));var rs=require(_0xa924('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa924('0x5'))['db'];var utils=require(_0xa924('0x6'));var logger=require(_0xa924('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa924('0x8')][_0xa924('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b6303,_0x497fdc,_0x29d5e0){return new BPromise(function(_0x1cc18d,_0x58817f){return client[_0xa924('0xa')](_0x2b6303,_0x29d5e0)['then'](function(_0x2bae31){logger['info'](_0xa924('0xb'),_0x497fdc,_0xa924('0xc'));logger[_0xa924('0xd')](_0xa924('0xe'),_0x497fdc,_0xa924('0xc'),JSON['stringify'](_0x2bae31));if(_0x2bae31[_0xa924('0xf')]){if(_0x2bae31[_0xa924('0xf')][_0xa924('0x10')]===0x1f4){logger[_0xa924('0xf')](_0xa924('0xb'),_0x497fdc,_0x2bae31[_0xa924('0xf')][_0xa924('0x11')]);return _0x58817f(_0x2bae31[_0xa924('0xf')][_0xa924('0x11')]);}logger[_0xa924('0xf')](_0xa924('0xb'),_0x497fdc,_0x2bae31[_0xa924('0xf')][_0xa924('0x11')]);return _0x1cc18d(_0x2bae31[_0xa924('0xf')][_0xa924('0x11')]);}else{logger[_0xa924('0x12')](_0xa924('0xb'),_0x497fdc,'request\x20sent');_0x1cc18d(_0x2bae31[_0xa924('0x13')][_0xa924('0x11')]);}})[_0xa924('0x14')](function(_0x573bbf){logger['error'](_0xa924('0xb'),_0x497fdc,_0x573bbf);_0x58817f(_0x573bbf);});});}
\ No newline at end of file
+var _0x875d=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','randomstring'];(function(_0x3d6bd3,_0x12f91c){var _0x4fb7fa=function(_0x2567c6){while(--_0x2567c6){_0x3d6bd3['push'](_0x3d6bd3['shift']());}};_0x4fb7fa(++_0x12f91c);}(_0x875d,0xe3));var _0xd875=function(_0x51c819,_0xd812db){_0x51c819=_0x51c819-0x0;var _0x15c5d2=_0x875d[_0x51c819];return _0x15c5d2;};'use strict';var _=require(_0xd875('0x0'));var util=require('util');var moment=require(_0xd875('0x1'));var BPromise=require('bluebird');var rs=require(_0xd875('0x2'));var fs=require('fs');var Redis=require(_0xd875('0x3'));var db=require(_0xd875('0x4'))['db'];var utils=require(_0xd875('0x5'));var logger=require(_0xd875('0x6'))(_0xd875('0x7'));var config=require(_0xd875('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd875('0x9')][_0xd875('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c7b26,_0x955cf1,_0x34a5e0){return new BPromise(function(_0x52dbf0,_0x10e3e0){return client[_0xd875('0xb')](_0x3c7b26,_0x34a5e0)[_0xd875('0xc')](function(_0x5116ae){logger[_0xd875('0xd')](_0xd875('0xe'),_0x955cf1,_0xd875('0xf'));logger['debug'](_0xd875('0x10'),_0x955cf1,_0xd875('0xf'),JSON[_0xd875('0x11')](_0x5116ae));if(_0x5116ae['error']){if(_0x5116ae[_0xd875('0x12')][_0xd875('0x13')]===0x1f4){logger[_0xd875('0x12')](_0xd875('0xe'),_0x955cf1,_0x5116ae['error'][_0xd875('0x14')]);return _0x10e3e0(_0x5116ae[_0xd875('0x12')]['message']);}logger['error'](_0xd875('0xe'),_0x955cf1,_0x5116ae['error'][_0xd875('0x14')]);return _0x52dbf0(_0x5116ae[_0xd875('0x12')][_0xd875('0x14')]);}else{logger[_0xd875('0xd')]('Dynamics365Field,\x20%s,\x20%s',_0x955cf1,_0xd875('0xf'));_0x52dbf0(_0x5116ae[_0xd875('0x15')][_0xd875('0x14')]);}})[_0xd875('0x16')](function(_0x3db8af){logger[_0xd875('0x12')](_0xd875('0xe'),_0x955cf1,_0x3db8af);_0x10e3e0(_0x3db8af);});});}
\ No newline at end of file
index 2a32fbe..b6c2560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a16=['isAuthenticated','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','index','/:id','show','/:id/configurations'];(function(_0x461bd5,_0x3cc755){var _0x37881f=function(_0x26ffb2){while(--_0x26ffb2){_0x461bd5['push'](_0x461bd5['shift']());}};_0x37881f(++_0x3cc755);}(_0x6a16,0x11e));var _0x66a1=function(_0x2fe5c1,_0x4d219c){_0x2fe5c1=_0x2fe5c1-0x0;var _0x5a54cb=_0x6a16[_0x2fe5c1];return _0x5a54cb;};'use strict';var multer=require(_0x66a1('0x0'));var util=require(_0x66a1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x66a1('0x2'));var router=express['Router']();var fs_extra=require(_0x66a1('0x3'));var auth=require(_0x66a1('0x4'));var interaction=require(_0x66a1('0x5'));var config=require(_0x66a1('0x6'));var controller=require(_0x66a1('0x7'));router[_0x66a1('0x8')]('/',auth['isAuthenticated'](),controller[_0x66a1('0x9')]);router[_0x66a1('0x8')](_0x66a1('0xa'),auth['isAuthenticated'](),controller[_0x66a1('0xb')]);router[_0x66a1('0x8')](_0x66a1('0xc'),auth[_0x66a1('0xd')](),controller[_0x66a1('0xe')]);router['get'](_0x66a1('0xf'),auth[_0x66a1('0xd')](),controller[_0x66a1('0x10')]);router[_0x66a1('0x11')]('/',auth[_0x66a1('0xd')](),controller['create']);router[_0x66a1('0x11')](_0x66a1('0xc'),auth['isAuthenticated'](),controller[_0x66a1('0x12')]);router[_0x66a1('0x13')](_0x66a1('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x66a1('0x14')](_0x66a1('0xa'),auth[_0x66a1('0xd')](),controller[_0x66a1('0x15')]);module[_0x66a1('0x16')]=router;
\ No newline at end of file
+var _0xcbee=['get','/:id/configurations','getConfigurations','/:id/fields','post','create','put','update','exports','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/:id'];(function(_0xd96162,_0x12f9ec){var _0x56076b=function(_0x53148f){while(--_0x53148f){_0xd96162['push'](_0xd96162['shift']());}};_0x56076b(++_0x12f9ec);}(_0xcbee,0x1e9));var _0xecbe=function(_0x50ae69,_0x113b4b){_0x50ae69=_0x50ae69-0x0;var _0x582561=_0xcbee[_0x50ae69];return _0x582561;};'use strict';var multer=require('multer');var util=require(_0xecbe('0x0'));var path=require('path');var timeout=require(_0xecbe('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xecbe('0x2'));var interaction=require(_0xecbe('0x3'));var config=require(_0xecbe('0x4'));var controller=require('./intFreshdeskAccount.controller');router['get']('/',auth[_0xecbe('0x5')](),controller['index']);router['get'](_0xecbe('0x6'),auth[_0xecbe('0x5')](),controller['show']);router[_0xecbe('0x7')](_0xecbe('0x8'),auth[_0xecbe('0x5')](),controller[_0xecbe('0x9')]);router[_0xecbe('0x7')](_0xecbe('0xa'),auth['isAuthenticated'](),controller['getFields']);router[_0xecbe('0xb')]('/',auth[_0xecbe('0x5')](),controller[_0xecbe('0xc')]);router[_0xecbe('0xb')](_0xecbe('0x8'),auth[_0xecbe('0x5')](),controller['addConfiguration']);router[_0xecbe('0xd')]('/:id',auth[_0xecbe('0x5')](),controller[_0xecbe('0xe')]);router['delete'](_0xecbe('0x6'),auth[_0xecbe('0x5')](),controller['destroy']);module[_0xecbe('0xf')]=router;
\ No newline at end of file
index e9a866e..f1ffcd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf61e=['remoteUri','sequelize','exports','STRING','username'];(function(_0x94b482,_0x40e601){var _0x2ef5c7=function(_0x13b7b6){while(--_0x13b7b6){_0x94b482['push'](_0x94b482['shift']());}};_0x2ef5c7(++_0x40e601);}(_0xf61e,0x191));var _0xef61=function(_0x32df69,_0x316a00){_0x32df69=_0x32df69-0x0;var _0x8b013e=_0xf61e[_0x32df69];return _0x8b013e;};'use strict';var Sequelize=require(_0xef61('0x0'));module[_0xef61('0x1')]={'name':{'type':Sequelize[_0xef61('0x2')]},'description':{'type':Sequelize[_0xef61('0x2')]},'username':{'type':Sequelize[_0xef61('0x2')],'unique':_0xef61('0x3')},'apiKey':{'type':Sequelize[_0xef61('0x2')]},'remoteUri':{'type':Sequelize[_0xef61('0x2')],'unique':_0xef61('0x4')},'serverUrl':{'type':Sequelize[_0xef61('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xe5af=['exports','STRING','username','remoteUri'];(function(_0x2aed8b,_0x1492ee){var _0x286b0f=function(_0x21944e){while(--_0x21944e){_0x2aed8b['push'](_0x2aed8b['shift']());}};_0x286b0f(++_0x1492ee);}(_0xe5af,0x9c));var _0xfe5a=function(_0xf4f985,_0x21a7f4){_0xf4f985=_0xf4f985-0x0;var _0x56d65a=_0xe5af[_0xf4f985];return _0x56d65a;};'use strict';var Sequelize=require('sequelize');module[_0xfe5a('0x0')]={'name':{'type':Sequelize[_0xfe5a('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfe5a('0x1')],'unique':_0xfe5a('0x2')},'apiKey':{'type':Sequelize[_0xfe5a('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xfe5a('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 9a6e722..8b41229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6f=['keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','then','rows','catch','show','params','length','find','create','body','getConfigurations','FreshdeskConfiguration','order','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','toString','requester','subject','description','priority','group','source','ticket_type','company','includes','custom_text','custom_dropdown','label','default','choices','capitalize','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','undefined','limit','count','offset','json','apply','reject','update','end','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','model','query'];(function(_0x3999a6,_0x14fec6){var _0x5c4edf=function(_0x425d45){while(--_0x425d45){_0x3999a6['push'](_0x3999a6['shift']());}};_0x5c4edf(++_0x14fec6);}(_0xfd6f,0x19d));var _0xffd6=function(_0x226d9d,_0x448df4){_0x226d9d=_0x226d9d-0x0;var _0x20119c=_0xfd6f[_0x226d9d];return _0x20119c;};'use strict';var emlformat=require(_0xffd6('0x0'));var rimraf=require(_0xffd6('0x1'));var zipdir=require(_0xffd6('0x2'));var jsonpatch=require(_0xffd6('0x3'));var rp=require(_0xffd6('0x4'));var moment=require('moment');var BPromise=require(_0xffd6('0x5'));var Mustache=require(_0xffd6('0x6'));var util=require(_0xffd6('0x7'));var path=require(_0xffd6('0x8'));var sox=require('sox');var csv=require(_0xffd6('0x9'));var ejs=require(_0xffd6('0xa'));var fs=require('fs');var fs_extra=require(_0xffd6('0xb'));var _=require(_0xffd6('0xc'));var squel=require('squel');var crypto=require(_0xffd6('0xd'));var jsforce=require(_0xffd6('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xffd6('0xf'));var Papa=require(_0xffd6('0x10'));var Redis=require(_0xffd6('0x11'));var authService=require(_0xffd6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xffd6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xffd6('0x14'));var utils=require(_0xffd6('0x15'));var config=require(_0xffd6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xffd6('0x17'))['db'];var integrations=require(_0xffd6('0x18'));function respondWithStatusCode(_0x59d2d8,_0x12cbe9){_0x12cbe9=_0x12cbe9||0xcc;return function(_0x1bef90){if(_0x1bef90){return _0x59d2d8[_0xffd6('0x19')](_0x12cbe9);}return _0x59d2d8[_0xffd6('0x1a')](_0x12cbe9)['end']();};}function respondWithResult(_0x5f4765,_0x26ef4){_0x26ef4=_0x26ef4||0xc8;return function(_0x345c44){if(_0x345c44){return _0x5f4765[_0xffd6('0x1a')](_0x26ef4)['json'](_0x345c44);}};}function respondWithFilteredResult(_0x17114f,_0x131661){return function(_0x57e34e){if(_0x57e34e){var _0x39c0a6=typeof _0x131661['offset']===_0xffd6('0x1b')&&typeof _0x131661[_0xffd6('0x1c')]===_0xffd6('0x1b');var _0xb4cfe2=_0x57e34e[_0xffd6('0x1d')];var _0x57af76=_0x39c0a6?0x0:_0x131661[_0xffd6('0x1e')];var _0x39938d=_0x39c0a6?_0x57e34e[_0xffd6('0x1d')]:_0x131661[_0xffd6('0x1e')]+_0x131661['limit'];var _0x4e0446;if(_0x39938d>=_0xb4cfe2){_0x39938d=_0xb4cfe2;_0x4e0446=0xc8;}else{_0x4e0446=0xce;}_0x17114f[_0xffd6('0x1a')](_0x4e0446);return _0x17114f['set']('Content-Range',_0x57af76+'-'+_0x39938d+'/'+_0xb4cfe2)[_0xffd6('0x1f')](_0x57e34e);}return null;};}function patchUpdates(_0x1a7102){return function(_0x3240b1){try{jsonpatch[_0xffd6('0x20')](_0x3240b1,_0x1a7102,!![]);}catch(_0x191642){return BPromise[_0xffd6('0x21')](_0x191642);}return _0x3240b1['save']();};}function saveUpdates(_0x44e5f5,_0x26daf2){return function(_0x531b45){if(_0x531b45){return _0x531b45[_0xffd6('0x22')](_0x44e5f5)['then'](function(_0x270704){return _0x270704;});}return null;};}function removeEntity(_0x207f18,_0x18fd0f){return function(_0x5e0e4c){if(_0x5e0e4c){return _0x5e0e4c['destroy']()['then'](function(){_0x207f18[_0xffd6('0x1a')](0xcc)[_0xffd6('0x23')]();});}};}function handleEntityNotFound(_0x17218b,_0x55c752){return function(_0x423bb8){if(!_0x423bb8){_0x17218b[_0xffd6('0x19')](0x194);}return _0x423bb8;};}function handleError(_0x12352c,_0xdec862){_0xdec862=_0xdec862||0x1f4;return function(_0x3789f8){logger['error'](_0x3789f8[_0xffd6('0x24')]);if(_0x3789f8[_0xffd6('0x25')]){delete _0x3789f8[_0xffd6('0x25')];}_0x12352c[_0xffd6('0x1a')](_0xdec862)[_0xffd6('0x26')](_0x3789f8);};}exports[_0xffd6('0x27')]=function(_0x2f3645,_0x902b39){var _0x23bd05={},_0x4440f8={},_0x44276a={'count':0x0,'rows':[]};var _0x4d0901=_[_0xffd6('0x28')](db[_0xffd6('0x29')][_0xffd6('0x2a')],function(_0x35328a){return{'name':_0x35328a[_0xffd6('0x2b')],'type':_0x35328a[_0xffd6('0x2c')]['key']};});_0x4440f8[_0xffd6('0x2d')]=_[_0xffd6('0x28')](_0x4d0901,_0xffd6('0x25'));_0x4440f8[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x2f3645[_0xffd6('0x2e')]);_0x4440f8[_0xffd6('0x30')]=_[_0xffd6('0x31')](_0x4440f8[_0xffd6('0x2d')],_0x4440f8[_0xffd6('0x2e')]);_0x23bd05[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x4440f8['model'],qs[_0xffd6('0x33')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x23bd05['attributes']=_0x23bd05['attributes']['length']?_0x23bd05[_0xffd6('0x32')]:_0x4440f8[_0xffd6('0x2d')];if(!_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x34')](_0xffd6('0x35'))){_0x23bd05[_0xffd6('0x1c')]=qs[_0xffd6('0x1c')](_0x2f3645['query'][_0xffd6('0x1c')]);_0x23bd05['offset']=qs[_0xffd6('0x1e')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x1e')]);}_0x23bd05['order']=qs[_0xffd6('0x36')](_0x2f3645[_0xffd6('0x2e')]['sort']);_0x23bd05[_0xffd6('0x37')]=qs['filters'](_[_0xffd6('0x38')](_0x2f3645[_0xffd6('0x2e')],_0x4440f8[_0xffd6('0x30')]),_0x4d0901);if(_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x23bd05[_0xffd6('0x37')]=_[_0xffd6('0x3a')](_0x23bd05[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x4d0901,function(_0x4b91fa){if(_0x4b91fa[_0xffd6('0x2c')]!==_0xffd6('0x3b')){var _0x27d0c5={};_0x27d0c5[_0x4b91fa[_0xffd6('0x25')]]={'$like':'%'+_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x27d0c5;}})});}_0x23bd05=_[_0xffd6('0x3a')]({},_0x23bd05,_0x2f3645[_0xffd6('0x3c')]);var _0x2abf19={'where':_0x23bd05[_0xffd6('0x37')]};return db[_0xffd6('0x29')]['count'](_0x2abf19)['then'](function(_0x1bdbc0){_0x44276a[_0xffd6('0x1d')]=_0x1bdbc0;if(_0x2f3645['query'][_0xffd6('0x3d')]){_0x23bd05[_0xffd6('0x3e')]=[{'all':!![]}];}return db[_0xffd6('0x29')][_0xffd6('0x3f')](_0x23bd05);})[_0xffd6('0x40')](function(_0x359998){_0x44276a[_0xffd6('0x41')]=_0x359998;return _0x44276a;})[_0xffd6('0x40')](respondWithFilteredResult(_0x902b39,_0x23bd05))[_0xffd6('0x42')](handleError(_0x902b39,null));};exports[_0xffd6('0x43')]=function(_0x297d05,_0x3791be){var _0x1b680a={'raw':![],'where':{'id':_0x297d05[_0xffd6('0x44')]['id']}},_0x3b5d60={};_0x3b5d60[_0xffd6('0x2d')]=_['keys'](db['FreshdeskAccount']['rawAttributes']);_0x3b5d60[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x297d05[_0xffd6('0x2e')]);_0x3b5d60['filters']=_['intersection'](_0x3b5d60['model'],_0x3b5d60['query']);_0x1b680a[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3b5d60[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x297d05[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x1b680a[_0xffd6('0x32')]=_0x1b680a[_0xffd6('0x32')][_0xffd6('0x45')]?_0x1b680a[_0xffd6('0x32')]:_0x3b5d60[_0xffd6('0x2d')];if(_0x297d05[_0xffd6('0x2e')][_0xffd6('0x3d')]){_0x1b680a[_0xffd6('0x3e')]=[{'all':!![]}];}_0x1b680a=_['merge']({},_0x1b680a,_0x297d05[_0xffd6('0x3c')]);return db[_0xffd6('0x29')][_0xffd6('0x46')](_0x1b680a)[_0xffd6('0x40')](handleEntityNotFound(_0x3791be,null))[_0xffd6('0x40')](respondWithResult(_0x3791be,null))['catch'](handleError(_0x3791be,null));};exports[_0xffd6('0x47')]=function(_0x2d0a51,_0x5d81b5){return db[_0xffd6('0x29')][_0xffd6('0x47')](_0x2d0a51[_0xffd6('0x48')],{})[_0xffd6('0x40')](respondWithResult(_0x5d81b5,0xc9))[_0xffd6('0x42')](handleError(_0x5d81b5,null));};exports[_0xffd6('0x22')]=function(_0x17e609,_0x1930f9){if(_0x17e609[_0xffd6('0x48')]['id']){delete _0x17e609['body']['id'];}return db[_0xffd6('0x29')][_0xffd6('0x46')]({'where':{'id':_0x17e609['params']['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x1930f9,null))[_0xffd6('0x40')](saveUpdates(_0x17e609[_0xffd6('0x48')],null))['then'](respondWithResult(_0x1930f9,null))[_0xffd6('0x42')](handleError(_0x1930f9,null));};exports['destroy']=function(_0x48366a,_0x5ebed3){return db[_0xffd6('0x29')]['find']({'where':{'id':_0x48366a[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x5ebed3,null))[_0xffd6('0x40')](removeEntity(_0x5ebed3,null))['catch'](handleError(_0x5ebed3,null));};exports[_0xffd6('0x49')]=function(_0x50aa80,_0x124912,_0x2b377e){var _0x295646={};var _0x3c1b27={};var _0x7dc3ae;var _0x2a27d9;return db[_0xffd6('0x29')]['findOne']({'where':{'id':_0x50aa80[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x124912,null))[_0xffd6('0x40')](function(_0xa788ab){if(_0xa788ab){_0x7dc3ae=_0xa788ab;_0x3c1b27[_0xffd6('0x2d')]=_[_0xffd6('0x2f')](db[_0xffd6('0x4a')]['rawAttributes']);_0x3c1b27[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x50aa80[_0xffd6('0x2e')]);_0x3c1b27[_0xffd6('0x30')]=_['intersection'](_0x3c1b27[_0xffd6('0x2d')],_0x3c1b27[_0xffd6('0x2e')]);_0x295646[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3c1b27[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x295646[_0xffd6('0x32')]=_0x295646['attributes'][_0xffd6('0x45')]?_0x295646[_0xffd6('0x32')]:_0x3c1b27[_0xffd6('0x2d')];_0x295646[_0xffd6('0x4b')]=qs[_0xffd6('0x36')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x36')]);_0x295646['where']=qs[_0xffd6('0x30')](_[_0xffd6('0x38')](_0x50aa80[_0xffd6('0x2e')],_0x3c1b27[_0xffd6('0x30')]));if(_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x295646['where']=_[_0xffd6('0x3a')](_0x295646[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x295646[_0xffd6('0x32')],function(_0x28f1df){var _0x12aff9={};_0x12aff9[_0x28f1df]={'$like':'%'+_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x12aff9;})});}_0x295646=_[_0xffd6('0x3a')]({},_0x295646,_0x50aa80[_0xffd6('0x3c')]);return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})['then'](function(_0x461771){if(_0x461771){_0x2a27d9=_0x461771['length'];if(!_0x50aa80['query'][_0xffd6('0x34')]('nolimit')){_0x295646[_0xffd6('0x1c')]=qs['limit'](_0x50aa80[_0xffd6('0x2e')]['limit']);_0x295646[_0xffd6('0x1e')]=qs['offset'](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x1e')]);}return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})[_0xffd6('0x40')](function(_0x4f0db0){if(_0x4f0db0){return _0x4f0db0?{'count':_0x2a27d9,'rows':_0x4f0db0}:null;}})[_0xffd6('0x40')](respondWithResult(_0x124912,null))[_0xffd6('0x42')](handleError(_0x124912,null));};exports['addConfiguration']=function(_0x438264,_0x1c324c,_0x25b1a2){if(_0x438264['body']['id']){delete _0x438264['body']['id'];}return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x438264['params']['id']}})['then'](handleEntityNotFound(_0x1c324c,null))[_0xffd6('0x40')](function(_0x8d5a9){if(_0x8d5a9){_0x438264[_0xffd6('0x48')][_0xffd6('0x4d')]=_0x8d5a9['id'];_0x438264['body'][_0xffd6('0x4e')]=integrations[_0xffd6('0x4f')](_0x438264['body'][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);_0x438264[_0xffd6('0x48')][_0xffd6('0x51')]=integrations[_0xffd6('0x52')](_0x438264[_0xffd6('0x48')][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);return db[_0xffd6('0x4a')]['create'](_0x438264[_0xffd6('0x48')],{'include':[{'model':db[_0xffd6('0x53')],'as':'Subjects'},{'model':db[_0xffd6('0x53')],'as':_0xffd6('0x51')}]});}return null;})[_0xffd6('0x40')](respondWithResult(_0x1c324c,null))[_0xffd6('0x42')](handleError(_0x1c324c,null));};exports[_0xffd6('0x54')]=function(_0x3e9b21,_0x8b8b47,_0x4c115e){var _0x4bf7a1='';return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x3e9b21[_0xffd6('0x44')]['id']},'attributes':['id',_0xffd6('0x55'),_0xffd6('0x56')]})[_0xffd6('0x40')](handleEntityNotFound(_0x8b8b47,null))[_0xffd6('0x40')](function(_0x431a6e){if(_0x431a6e){_0x4bf7a1=_0x431a6e[_0xffd6('0x55')];var _0x9bd712=_0x4bf7a1[_0xffd6('0x57')](-0x1);if(_0x9bd712==='/'){_0x4bf7a1=_0x4bf7a1[_0xffd6('0x58')](0x0,_0x4bf7a1[_0xffd6('0x59')](_0x9bd712));}return rp({'method':_0xffd6('0x5a'),'uri':util[_0xffd6('0x5b')](_0xffd6('0x5c'),_0x4bf7a1,_0xffd6('0x5d')),'headers':{'Authorization':util[_0xffd6('0x5b')](_0xffd6('0x5e'),new Buffer(util[_0xffd6('0x5b')]('%s:X',_0x431a6e[_0xffd6('0x56')]))[_0xffd6('0x5f')]('base64'))},'json':!![]});}})[_0xffd6('0x40')](function(_0x2c0592){if(_0x2c0592){var _0x5c9382=[_0xffd6('0x60'),_0xffd6('0x61'),'agent',_0xffd6('0x62'),'status',_0xffd6('0x63'),_0xffd6('0x64'),_0xffd6('0x65'),_0xffd6('0x66'),_0xffd6('0x64'),_0xffd6('0x67')];_['remove'](_0x2c0592,function(_0x23e630){return _0x5c9382[_0xffd6('0x68')](_0x23e630[_0xffd6('0x25')])||!_0x23e630['default']&&_0x23e630['type']!==_0xffd6('0x69')&&_0x23e630[_0xffd6('0x2c')]!==_0xffd6('0x6a');});return{'count':_0x2c0592[_0xffd6('0x45')],'rows':_['map'](_0x2c0592,function(_0x278cbf){return{'id':_0x278cbf[_0xffd6('0x25')],'name':_0x278cbf[_0xffd6('0x6b')],'custom':!_0x278cbf[_0xffd6('0x6c')],'options':_0x278cbf[_0xffd6('0x6d')]?_[_0xffd6('0x28')](_0x278cbf[_0xffd6('0x6d')],function(_0xbc3d41){return{'name':_[_0xffd6('0x6e')](_0xbc3d41),'value':_0xbc3d41};}):[]};})};}})[_0xffd6('0x40')](respondWithResult(_0x8b8b47,null))[_0xffd6('0x42')](function(_0x5b1ade){var _0x114f90=_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?0x1f4:_0x5b1ade[_0xffd6('0x70')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xffd6('0x54'),_0x114f90,JSON[_0xffd6('0x71')](_0x5b1ade));delete _0x5b1ade['name'];if(_0x114f90===0x191){_0x114f90=0x190;}_0x8b8b47[_0xffd6('0x1a')](_0x114f90)[_0xffd6('0x26')](_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?{'message':_0xffd6('0x72'),'statusCode':_0x5b1ade[_0xffd6('0x70')]}:_0x5b1ade);});};
\ No newline at end of file
+var _0x153f=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','FreshdeskAccount','rawAttributes','type','key','model','keys','intersection','query','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','body','find','findOne','FreshdeskConfiguration','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','base64','requester','description','priority','source','ticket_type','company','remove','includes','custom_text','custom_dropdown','label','default','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x4784f4,_0x199217){var _0x1fb0ce=function(_0x24696c){while(--_0x24696c){_0x4784f4['push'](_0x4784f4['shift']());}};_0x1fb0ce(++_0x199217);}(_0x153f,0x15b));var _0xf153=function(_0x435da2,_0x2ef367){_0x435da2=_0x435da2-0x0;var _0x67b767=_0x153f[_0x435da2];return _0x67b767;};'use strict';var emlformat=require(_0xf153('0x0'));var rimraf=require(_0xf153('0x1'));var zipdir=require(_0xf153('0x2'));var jsonpatch=require(_0xf153('0x3'));var rp=require(_0xf153('0x4'));var moment=require(_0xf153('0x5'));var BPromise=require(_0xf153('0x6'));var Mustache=require('mustache');var util=require(_0xf153('0x7'));var path=require('path');var sox=require(_0xf153('0x8'));var csv=require(_0xf153('0x9'));var ejs=require(_0xf153('0xa'));var fs=require('fs');var fs_extra=require(_0xf153('0xb'));var _=require(_0xf153('0xc'));var squel=require('squel');var crypto=require(_0xf153('0xd'));var jsforce=require(_0xf153('0xe'));var deskjs=require(_0xf153('0xf'));var toCsv=require(_0xf153('0x9'));var querystring=require(_0xf153('0x10'));var Papa=require(_0xf153('0x11'));var Redis=require(_0xf153('0x12'));var authService=require(_0xf153('0x13'));var qs=require(_0xf153('0x14'));var as=require(_0xf153('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf153('0x16'))(_0xf153('0x17'));var utils=require(_0xf153('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf153('0x19'));var db=require(_0xf153('0x1a'))['db'];var integrations=require(_0xf153('0x1b'));function respondWithStatusCode(_0x1cc666,_0x256b7d){_0x256b7d=_0x256b7d||0xcc;return function(_0x107d31){if(_0x107d31){return _0x1cc666[_0xf153('0x1c')](_0x256b7d);}return _0x1cc666[_0xf153('0x1d')](_0x256b7d)[_0xf153('0x1e')]();};}function respondWithResult(_0x4c5283,_0x18be7e){_0x18be7e=_0x18be7e||0xc8;return function(_0x2340f5){if(_0x2340f5){return _0x4c5283[_0xf153('0x1d')](_0x18be7e)[_0xf153('0x1f')](_0x2340f5);}};}function respondWithFilteredResult(_0x3afea2,_0x68f436){return function(_0x273a90){if(_0x273a90){var _0x287bc6=typeof _0x68f436['offset']===_0xf153('0x20')&&typeof _0x68f436['limit']===_0xf153('0x20');var _0x2c62b6=_0x273a90[_0xf153('0x21')];var _0x44272e=_0x287bc6?0x0:_0x68f436['offset'];var _0x357d57=_0x287bc6?_0x273a90[_0xf153('0x21')]:_0x68f436[_0xf153('0x22')]+_0x68f436[_0xf153('0x23')];var _0x15230c;if(_0x357d57>=_0x2c62b6){_0x357d57=_0x2c62b6;_0x15230c=0xc8;}else{_0x15230c=0xce;}_0x3afea2[_0xf153('0x1d')](_0x15230c);return _0x3afea2[_0xf153('0x24')](_0xf153('0x25'),_0x44272e+'-'+_0x357d57+'/'+_0x2c62b6)[_0xf153('0x1f')](_0x273a90);}return null;};}function patchUpdates(_0x1dd340){return function(_0x33ce52){try{jsonpatch[_0xf153('0x26')](_0x33ce52,_0x1dd340,!![]);}catch(_0x493e8a){return BPromise[_0xf153('0x27')](_0x493e8a);}return _0x33ce52[_0xf153('0x28')]();};}function saveUpdates(_0x3d3e41,_0x32e759){return function(_0x5c9f44){if(_0x5c9f44){return _0x5c9f44[_0xf153('0x29')](_0x3d3e41)[_0xf153('0x2a')](function(_0x4376f7){return _0x4376f7;});}return null;};}function removeEntity(_0xf67cde,_0x38190c){return function(_0x1570fc){if(_0x1570fc){return _0x1570fc[_0xf153('0x2b')]()[_0xf153('0x2a')](function(){_0xf67cde[_0xf153('0x1d')](0xcc)[_0xf153('0x1e')]();});}};}function handleEntityNotFound(_0x35f9da,_0x141ef4){return function(_0x703adb){if(!_0x703adb){_0x35f9da[_0xf153('0x1c')](0x194);}return _0x703adb;};}function handleError(_0x17f7a4,_0x48ebdc){_0x48ebdc=_0x48ebdc||0x1f4;return function(_0x6d62ef){logger[_0xf153('0x2c')](_0x6d62ef['stack']);if(_0x6d62ef[_0xf153('0x2d')]){delete _0x6d62ef[_0xf153('0x2d')];}_0x17f7a4['status'](_0x48ebdc)[_0xf153('0x2e')](_0x6d62ef);};}exports[_0xf153('0x2f')]=function(_0x261ac0,_0x2b9a9c){var _0x339e96={},_0x258976={},_0x441436={'count':0x0,'rows':[]};var _0x3b5f4f=_[_0xf153('0x30')](db[_0xf153('0x31')][_0xf153('0x32')],function(_0x415a5f){return{'name':_0x415a5f['fieldName'],'type':_0x415a5f[_0xf153('0x33')][_0xf153('0x34')]};});_0x258976[_0xf153('0x35')]=_[_0xf153('0x30')](_0x3b5f4f,'name');_0x258976['query']=_[_0xf153('0x36')](_0x261ac0['query']);_0x258976['filters']=_[_0xf153('0x37')](_0x258976['model'],_0x258976[_0xf153('0x38')]);_0x339e96['attributes']=_[_0xf153('0x37')](_0x258976[_0xf153('0x35')],qs['fields'](_0x261ac0[_0xf153('0x38')][_0xf153('0x39')]));_0x339e96[_0xf153('0x3a')]=_0x339e96[_0xf153('0x3a')][_0xf153('0x3b')]?_0x339e96[_0xf153('0x3a')]:_0x258976['model'];if(!_0x261ac0[_0xf153('0x38')]['hasOwnProperty'](_0xf153('0x3c'))){_0x339e96[_0xf153('0x23')]=qs[_0xf153('0x23')](_0x261ac0[_0xf153('0x38')][_0xf153('0x23')]);_0x339e96[_0xf153('0x22')]=qs['offset'](_0x261ac0[_0xf153('0x38')][_0xf153('0x22')]);}_0x339e96[_0xf153('0x3d')]=qs['sort'](_0x261ac0[_0xf153('0x38')][_0xf153('0x3e')]);_0x339e96[_0xf153('0x3f')]=qs[_0xf153('0x40')](_[_0xf153('0x41')](_0x261ac0[_0xf153('0x38')],_0x258976['filters']),_0x3b5f4f);if(_0x261ac0[_0xf153('0x38')][_0xf153('0x42')]){_0x339e96['where']=_[_0xf153('0x43')](_0x339e96[_0xf153('0x3f')],{'$or':_[_0xf153('0x30')](_0x3b5f4f,function(_0x40e9f0){if(_0x40e9f0[_0xf153('0x33')]!==_0xf153('0x44')){var _0xef1510={};_0xef1510[_0x40e9f0['name']]={'$like':'%'+_0x261ac0[_0xf153('0x38')][_0xf153('0x42')]+'%'};return _0xef1510;}})});}_0x339e96=_[_0xf153('0x43')]({},_0x339e96,_0x261ac0[_0xf153('0x45')]);var _0x25657a={'where':_0x339e96[_0xf153('0x3f')]};return db['FreshdeskAccount']['count'](_0x25657a)[_0xf153('0x2a')](function(_0x5051f3){_0x441436[_0xf153('0x21')]=_0x5051f3;if(_0x261ac0[_0xf153('0x38')][_0xf153('0x46')]){_0x339e96[_0xf153('0x47')]=[{'all':!![]}];}return db[_0xf153('0x31')][_0xf153('0x48')](_0x339e96);})['then'](function(_0x537635){_0x441436[_0xf153('0x49')]=_0x537635;return _0x441436;})[_0xf153('0x2a')](respondWithFilteredResult(_0x2b9a9c,_0x339e96))['catch'](handleError(_0x2b9a9c,null));};exports[_0xf153('0x4a')]=function(_0x1c77a6,_0x1edf65){var _0x3a9cb2={'raw':![],'where':{'id':_0x1c77a6[_0xf153('0x4b')]['id']}},_0x72f7ee={};_0x72f7ee[_0xf153('0x35')]=_[_0xf153('0x36')](db[_0xf153('0x31')][_0xf153('0x32')]);_0x72f7ee[_0xf153('0x38')]=_[_0xf153('0x36')](_0x1c77a6['query']);_0x72f7ee[_0xf153('0x40')]=_[_0xf153('0x37')](_0x72f7ee[_0xf153('0x35')],_0x72f7ee['query']);_0x3a9cb2[_0xf153('0x3a')]=_[_0xf153('0x37')](_0x72f7ee['model'],qs[_0xf153('0x39')](_0x1c77a6['query'][_0xf153('0x39')]));_0x3a9cb2[_0xf153('0x3a')]=_0x3a9cb2[_0xf153('0x3a')]['length']?_0x3a9cb2[_0xf153('0x3a')]:_0x72f7ee[_0xf153('0x35')];if(_0x1c77a6[_0xf153('0x38')][_0xf153('0x46')]){_0x3a9cb2[_0xf153('0x47')]=[{'all':!![]}];}_0x3a9cb2=_['merge']({},_0x3a9cb2,_0x1c77a6[_0xf153('0x45')]);return db[_0xf153('0x31')]['find'](_0x3a9cb2)[_0xf153('0x2a')](handleEntityNotFound(_0x1edf65,null))[_0xf153('0x2a')](respondWithResult(_0x1edf65,null))[_0xf153('0x4c')](handleError(_0x1edf65,null));};exports['create']=function(_0x657403,_0x5b21ab){return db[_0xf153('0x31')][_0xf153('0x4d')](_0x657403[_0xf153('0x4e')],{})[_0xf153('0x2a')](respondWithResult(_0x5b21ab,0xc9))[_0xf153('0x4c')](handleError(_0x5b21ab,null));};exports[_0xf153('0x29')]=function(_0x3b91ed,_0x5b33a5){if(_0x3b91ed[_0xf153('0x4e')]['id']){delete _0x3b91ed['body']['id'];}return db['FreshdeskAccount']['find']({'where':{'id':_0x3b91ed[_0xf153('0x4b')]['id']}})[_0xf153('0x2a')](handleEntityNotFound(_0x5b33a5,null))['then'](saveUpdates(_0x3b91ed[_0xf153('0x4e')],null))[_0xf153('0x2a')](respondWithResult(_0x5b33a5,null))['catch'](handleError(_0x5b33a5,null));};exports[_0xf153('0x2b')]=function(_0xe6e023,_0x40b097){return db[_0xf153('0x31')][_0xf153('0x4f')]({'where':{'id':_0xe6e023[_0xf153('0x4b')]['id']}})['then'](handleEntityNotFound(_0x40b097,null))[_0xf153('0x2a')](removeEntity(_0x40b097,null))[_0xf153('0x4c')](handleError(_0x40b097,null));};exports['getConfigurations']=function(_0x566a65,_0x1a92cb,_0x8cbb80){var _0x325651={};var _0x297e9d={};var _0x419e7e;var _0x1e1c33;return db['FreshdeskAccount'][_0xf153('0x50')]({'where':{'id':_0x566a65['params']['id']}})[_0xf153('0x2a')](handleEntityNotFound(_0x1a92cb,null))[_0xf153('0x2a')](function(_0x454fff){if(_0x454fff){_0x419e7e=_0x454fff;_0x297e9d['model']=_[_0xf153('0x36')](db[_0xf153('0x51')][_0xf153('0x32')]);_0x297e9d[_0xf153('0x38')]=_[_0xf153('0x36')](_0x566a65[_0xf153('0x38')]);_0x297e9d[_0xf153('0x40')]=_['intersection'](_0x297e9d[_0xf153('0x35')],_0x297e9d[_0xf153('0x38')]);_0x325651[_0xf153('0x3a')]=_['intersection'](_0x297e9d[_0xf153('0x35')],qs[_0xf153('0x39')](_0x566a65[_0xf153('0x38')][_0xf153('0x39')]));_0x325651[_0xf153('0x3a')]=_0x325651[_0xf153('0x3a')][_0xf153('0x3b')]?_0x325651[_0xf153('0x3a')]:_0x297e9d['model'];_0x325651[_0xf153('0x3d')]=qs[_0xf153('0x3e')](_0x566a65['query'][_0xf153('0x3e')]);_0x325651[_0xf153('0x3f')]=qs[_0xf153('0x40')](_[_0xf153('0x41')](_0x566a65[_0xf153('0x38')],_0x297e9d[_0xf153('0x40')]));if(_0x566a65[_0xf153('0x38')][_0xf153('0x42')]){_0x325651[_0xf153('0x3f')]=_[_0xf153('0x43')](_0x325651[_0xf153('0x3f')],{'$or':_['map'](_0x325651[_0xf153('0x3a')],function(_0x127777){var _0x58f75d={};_0x58f75d[_0x127777]={'$like':'%'+_0x566a65[_0xf153('0x38')][_0xf153('0x42')]+'%'};return _0x58f75d;})});}_0x325651=_[_0xf153('0x43')]({},_0x325651,_0x566a65[_0xf153('0x45')]);return _0x419e7e[_0xf153('0x52')](_0x325651);}})[_0xf153('0x2a')](function(_0x2736e3){if(_0x2736e3){_0x1e1c33=_0x2736e3['length'];if(!_0x566a65[_0xf153('0x38')][_0xf153('0x53')](_0xf153('0x3c'))){_0x325651[_0xf153('0x23')]=qs[_0xf153('0x23')](_0x566a65[_0xf153('0x38')][_0xf153('0x23')]);_0x325651[_0xf153('0x22')]=qs[_0xf153('0x22')](_0x566a65['query'][_0xf153('0x22')]);}return _0x419e7e[_0xf153('0x52')](_0x325651);}})['then'](function(_0x140c41){if(_0x140c41){return _0x140c41?{'count':_0x1e1c33,'rows':_0x140c41}:null;}})['then'](respondWithResult(_0x1a92cb,null))[_0xf153('0x4c')](handleError(_0x1a92cb,null));};exports[_0xf153('0x54')]=function(_0x4ec6ad,_0x1af890,_0x55ea2b){if(_0x4ec6ad[_0xf153('0x4e')]['id']){delete _0x4ec6ad[_0xf153('0x4e')]['id'];}return db[_0xf153('0x31')][_0xf153('0x50')]({'where':{'id':_0x4ec6ad['params']['id']}})[_0xf153('0x2a')](handleEntityNotFound(_0x1af890,null))[_0xf153('0x2a')](function(_0x4be37e){if(_0x4be37e){_0x4ec6ad[_0xf153('0x4e')][_0xf153('0x55')]=_0x4be37e['id'];_0x4ec6ad[_0xf153('0x4e')][_0xf153('0x56')]=integrations[_0xf153('0x57')](_0x4ec6ad['body'][_0xf153('0x58')],_0x4ec6ad['body'][_0xf153('0x33')]);_0x4ec6ad[_0xf153('0x4e')]['Descriptions']=integrations['getDescriptions'](_0x4ec6ad[_0xf153('0x4e')][_0xf153('0x58')],_0x4ec6ad['body'][_0xf153('0x33')]);return db[_0xf153('0x51')][_0xf153('0x4d')](_0x4ec6ad['body'],{'include':[{'model':db[_0xf153('0x59')],'as':_0xf153('0x56')},{'model':db[_0xf153('0x59')],'as':_0xf153('0x5a')}]});}return null;})[_0xf153('0x2a')](respondWithResult(_0x1af890,null))[_0xf153('0x4c')](handleError(_0x1af890,null));};exports[_0xf153('0x5b')]=function(_0x364957,_0x3cde66,_0x858289){var _0x25091c='';return db[_0xf153('0x31')][_0xf153('0x50')]({'where':{'id':_0x364957[_0xf153('0x4b')]['id']},'attributes':['id',_0xf153('0x5c'),_0xf153('0x5d')]})['then'](handleEntityNotFound(_0x3cde66,null))[_0xf153('0x2a')](function(_0x54d39c){if(_0x54d39c){_0x25091c=_0x54d39c['remoteUri'];var _0x6b51d=_0x25091c['slice'](-0x1);if(_0x6b51d==='/'){_0x25091c=_0x25091c[_0xf153('0x5e')](0x0,_0x25091c[_0xf153('0x5f')](_0x6b51d));}return rp({'method':_0xf153('0x60'),'uri':util[_0xf153('0x61')](_0xf153('0x62'),_0x25091c,_0xf153('0x63')),'headers':{'Authorization':util['format'](_0xf153('0x64'),new Buffer(util[_0xf153('0x61')](_0xf153('0x65'),_0x54d39c['apiKey']))['toString'](_0xf153('0x66')))},'json':!![]});}})[_0xf153('0x2a')](function(_0x44da13){if(_0x44da13){var _0x48755d=[_0xf153('0x67'),'subject','agent',_0xf153('0x68'),_0xf153('0x1d'),_0xf153('0x69'),'group',_0xf153('0x6a'),_0xf153('0x6b'),'group',_0xf153('0x6c')];_[_0xf153('0x6d')](_0x44da13,function(_0x205a23){return _0x48755d[_0xf153('0x6e')](_0x205a23[_0xf153('0x2d')])||!_0x205a23['default']&&_0x205a23[_0xf153('0x33')]!==_0xf153('0x6f')&&_0x205a23[_0xf153('0x33')]!==_0xf153('0x70');});return{'count':_0x44da13[_0xf153('0x3b')],'rows':_[_0xf153('0x30')](_0x44da13,function(_0x2e5f2c){return{'id':_0x2e5f2c['name'],'name':_0x2e5f2c[_0xf153('0x71')],'custom':!_0x2e5f2c[_0xf153('0x72')],'options':_0x2e5f2c[_0xf153('0x73')]?_[_0xf153('0x30')](_0x2e5f2c[_0xf153('0x73')],function(_0x38faed){return{'name':_['capitalize'](_0x38faed),'value':_0x38faed};}):[]};})};}})[_0xf153('0x2a')](respondWithResult(_0x3cde66,null))[_0xf153('0x4c')](function(_0x286575){var _0x305549=_0x364957[_0xf153('0x38')][_0xf153('0x74')]?0x1f4:_0x286575[_0xf153('0x75')]||0x1f4;logger[_0xf153('0x2c')](_0xf153('0x76'),_0xf153('0x5b'),_0x305549,JSON['stringify'](_0x286575));delete _0x286575['name'];if(_0x305549===0x191){_0x305549=0x190;}_0x3cde66['status'](_0x305549)['send'](_0x364957[_0xf153('0x38')][_0xf153('0x74')]?{'message':_0xf153('0x77'),'statusCode':_0x286575[_0xf153('0x75')]}:_0x286575);});};
\ No newline at end of file
index ad0e278..5a7b69a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf9a=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts'];(function(_0x3e88ac,_0x1ec4cc){var _0x264759=function(_0x84970d){while(--_0x84970d){_0x3e88ac['push'](_0x3e88ac['shift']());}};_0x264759(++_0x1ec4cc);}(_0xaf9a,0x152));var _0xaaf9=function(_0x45c8eb,_0xd56a8d){_0x45c8eb=_0x45c8eb-0x0;var _0x3b45b8=_0xaf9a[_0x45c8eb];return _0x3b45b8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xaaf9('0x0'))(_0xaaf9('0x1'));var moment=require(_0xaaf9('0x2'));var BPromise=require('bluebird');var rp=require(_0xaaf9('0x3'));var fs=require('fs');var path=require(_0xaaf9('0x4'));var rimraf=require(_0xaaf9('0x5'));var config=require(_0xaaf9('0x6'));var attributes=require(_0xaaf9('0x7'));var integrations=require(_0xaaf9('0x8'));module[_0xaaf9('0x9')]=function(_0x2d1e66,_0x47b6c0){return _0x2d1e66[_0xaaf9('0xa')](_0xaaf9('0xb'),attributes,{'tableName':_0xaaf9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3794=['rimraf','../../config/environment','./intFreshdeskAccount.attributes','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','api','moment','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3794,0x1eb));var _0x4379=function(_0x319a03,_0x4456d4){_0x319a03=_0x319a03-0x0;var _0x3b6704=_0x3794[_0x319a03];return _0x3b6704;};'use strict';var _=require(_0x4379('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4379('0x1'));var moment=require(_0x4379('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4379('0x3'));var rimraf=require(_0x4379('0x4'));var config=require(_0x4379('0x5'));var attributes=require(_0x4379('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x4379('0x7')]=function(_0x53e0b4,_0x34df5e){return _0x53e0b4[_0x4379('0x8')](_0x4379('0x9'),attributes,{'tableName':_0x4379('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1393649..4ffaa8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ca=['error','code','FreshdeskAccount,\x20%s,\x20%s','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','attributes','map','include','model','find','ShowFreshdeskAccount','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x64bf0f,_0x6f5949){var _0x1b0b63=function(_0x3139b4){while(--_0x3139b4){_0x64bf0f['push'](_0x64bf0f['shift']());}};_0x1b0b63(++_0x6f5949);}(_0x52ca,0x16f));var _0xa52c=function(_0x4c1f8e,_0x240e74){_0x4c1f8e=_0x4c1f8e-0x0;var _0x547ec9=_0x52ca[_0x4c1f8e];return _0x547ec9;};'use strict';var _=require(_0xa52c('0x0'));var util=require('util');var moment=require(_0xa52c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa52c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa52c('0x3'))['db'];var utils=require(_0xa52c('0x4'));var logger=require(_0xa52c('0x5'))(_0xa52c('0x6'));var config=require(_0xa52c('0x7'));var jayson=require(_0xa52c('0x8'));var client=jayson[_0xa52c('0x9')][_0xa52c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x663722,_0x26b19c,_0x156f6a){return new BPromise(function(_0x25ca4c,_0x20e839){return client[_0xa52c('0xb')](_0x663722,_0x156f6a)[_0xa52c('0xc')](function(_0xa45be5){logger[_0xa52c('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x26b19c,'request\x20sent');logger[_0xa52c('0xe')](_0xa52c('0xf'),_0x26b19c,_0xa52c('0x10'),JSON[_0xa52c('0x11')](_0xa45be5));if(_0xa45be5[_0xa52c('0x12')]){if(_0xa45be5[_0xa52c('0x12')][_0xa52c('0x13')]===0x1f4){logger['error'](_0xa52c('0x14'),_0x26b19c,_0xa45be5[_0xa52c('0x12')]['message']);return _0x20e839(_0xa45be5[_0xa52c('0x12')]['message']);}logger['error'](_0xa52c('0x14'),_0x26b19c,_0xa45be5[_0xa52c('0x12')][_0xa52c('0x15')]);return _0x25ca4c(_0xa45be5[_0xa52c('0x12')][_0xa52c('0x15')]);}else{logger['info'](_0xa52c('0x14'),_0x26b19c,_0xa52c('0x10'));_0x25ca4c(_0xa45be5[_0xa52c('0x16')][_0xa52c('0x15')]);}})[_0xa52c('0x17')](function(_0x4852e5){logger[_0xa52c('0x12')](_0xa52c('0x14'),_0x26b19c,_0x4852e5);_0x20e839(_0x4852e5);});});}exports[_0xa52c('0x18')]=function(_0x3760aa){var _0x45585c=this;return new Promise(function(_0xb852cf,_0x81ce53){return db[_0xa52c('0x19')][_0xa52c('0x1a')]({'raw':_0x3760aa[_0xa52c('0x1b')]?_0x3760aa[_0xa52c('0x1b')][_0xa52c('0x1c')]===undefined?!![]:![]:!![],'where':_0x3760aa['options']?_0x3760aa[_0xa52c('0x1b')]['where']||null:null,'attributes':_0x3760aa[_0xa52c('0x1b')]?_0x3760aa[_0xa52c('0x1b')][_0xa52c('0x1d')]||null:null,'limit':_0x3760aa[_0xa52c('0x1b')]?_0x3760aa[_0xa52c('0x1b')]['limit']||null:null,'include':_0x3760aa[_0xa52c('0x1b')]?_0x3760aa[_0xa52c('0x1b')]['include']?_[_0xa52c('0x1e')](_0x3760aa[_0xa52c('0x1b')][_0xa52c('0x1f')],function(_0x909158){return{'model':db[_0x909158[_0xa52c('0x20')]],'as':_0x909158['as'],'attributes':_0x909158[_0xa52c('0x1d')],'include':_0x909158[_0xa52c('0x1f')]?_['map'](_0x909158['include'],function(_0x38be6d){return{'model':db[_0x38be6d['model']],'as':_0x38be6d['as'],'attributes':_0x38be6d['attributes'],'include':_0x38be6d[_0xa52c('0x1f')]?_['map'](_0x38be6d[_0xa52c('0x1f')],function(_0x133f17){return{'model':db[_0x133f17['model']],'as':_0x133f17['as'],'attributes':_0x133f17[_0xa52c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xa52c('0xc')](function(_0x5f4b6b){logger[_0xa52c('0xd')]('GetFreshdeskAccount',_0x3760aa);logger[_0xa52c('0xe')](_0xa52c('0x18'),_0x3760aa,JSON[_0xa52c('0x11')](_0x5f4b6b));_0xb852cf(_0x5f4b6b);})[_0xa52c('0x17')](function(_0x5ace6e){logger['error'](_0xa52c('0x18'),_0x5ace6e['message'],_0x3760aa);_0x81ce53(_0x45585c[_0xa52c('0x12')](0x1f4,_0x5ace6e[_0xa52c('0x15')]));});});};exports['ShowFreshdeskAccount']=function(_0x115f57){var _0x41a5cf=this;return new Promise(function(_0xb0da4c,_0x499a5f){return db[_0xa52c('0x19')][_0xa52c('0x21')]({'raw':_0x115f57[_0xa52c('0x1b')]?_0x115f57[_0xa52c('0x1b')][_0xa52c('0x1c')]===undefined?!![]:![]:!![],'where':_0x115f57[_0xa52c('0x1b')]?_0x115f57['options']['where']||null:null,'attributes':_0x115f57[_0xa52c('0x1b')]?_0x115f57[_0xa52c('0x1b')]['attributes']||null:null,'include':_0x115f57[_0xa52c('0x1b')]?_0x115f57[_0xa52c('0x1b')][_0xa52c('0x1f')]?_['map'](_0x115f57[_0xa52c('0x1b')][_0xa52c('0x1f')],function(_0x2c6c2b){return{'model':db[_0x2c6c2b[_0xa52c('0x20')]],'as':_0x2c6c2b['as'],'attributes':_0x2c6c2b['attributes'],'include':_0x2c6c2b[_0xa52c('0x1f')]?_['map'](_0x2c6c2b['include'],function(_0x3aa2f0){return{'model':db[_0x3aa2f0[_0xa52c('0x20')]],'as':_0x3aa2f0['as'],'attributes':_0x3aa2f0[_0xa52c('0x1d')],'include':_0x3aa2f0[_0xa52c('0x1f')]?_[_0xa52c('0x1e')](_0x3aa2f0[_0xa52c('0x1f')],function(_0x570579){return{'model':db[_0x570579[_0xa52c('0x20')]],'as':_0x570579['as'],'attributes':_0x570579[_0xa52c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xa52c('0xc')](function(_0x2d395a){logger[_0xa52c('0xd')]('ShowFreshdeskAccount',_0x115f57);logger['debug'](_0xa52c('0x22'),_0x115f57,JSON[_0xa52c('0x11')](_0x2d395a));_0xb0da4c(_0x2d395a);})['catch'](function(_0x27324b){logger[_0xa52c('0x12')](_0xa52c('0x22'),_0x27324b[_0xa52c('0x15')],_0x115f57);_0x499a5f(_0x41a5cf[_0xa52c('0x12')](0x1f4,_0x27324b[_0xa52c('0x15')]));});});};
\ No newline at end of file
+var _0x0333=['FreshdeskAccount','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','findAll','options','where','attributes','limit','include','map','model','GetFreshdeskAccount','ShowFreshdeskAccount'];(function(_0x5ce850,_0x28bfe5){var _0x12753a=function(_0x5eacdb){while(--_0x5eacdb){_0x5ce850['push'](_0x5ce850['shift']());}};_0x12753a(++_0x28bfe5);}(_0x0333,0xe0));var _0x3033=function(_0x400322,_0x4353a8){_0x400322=_0x400322-0x0;var _0xfdd597=_0x0333[_0x400322];return _0xfdd597;};'use strict';var _=require(_0x3033('0x0'));var util=require(_0x3033('0x1'));var moment=require(_0x3033('0x2'));var BPromise=require(_0x3033('0x3'));var rs=require(_0x3033('0x4'));var fs=require('fs');var Redis=require(_0x3033('0x5'));var db=require(_0x3033('0x6'))['db'];var utils=require(_0x3033('0x7'));var logger=require('../../config/logger')(_0x3033('0x8'));var config=require('../../config/environment');var jayson=require(_0x3033('0x9'));var client=jayson[_0x3033('0xa')][_0x3033('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d8ef3,_0x4b2cc3,_0x1fc984){return new BPromise(function(_0xd757b4,_0x1fcf6f){return client[_0x3033('0xc')](_0x3d8ef3,_0x1fc984)[_0x3033('0xd')](function(_0x106231){logger['info'](_0x3033('0xe'),_0x4b2cc3,_0x3033('0xf'));logger[_0x3033('0x10')](_0x3033('0x11'),_0x4b2cc3,_0x3033('0xf'),JSON[_0x3033('0x12')](_0x106231));if(_0x106231[_0x3033('0x13')]){if(_0x106231['error'][_0x3033('0x14')]===0x1f4){logger['error'](_0x3033('0xe'),_0x4b2cc3,_0x106231['error'][_0x3033('0x15')]);return _0x1fcf6f(_0x106231['error'][_0x3033('0x15')]);}logger[_0x3033('0x13')](_0x3033('0xe'),_0x4b2cc3,_0x106231[_0x3033('0x13')][_0x3033('0x15')]);return _0xd757b4(_0x106231['error']['message']);}else{logger[_0x3033('0x16')](_0x3033('0xe'),_0x4b2cc3,_0x3033('0xf'));_0xd757b4(_0x106231[_0x3033('0x17')][_0x3033('0x15')]);}})[_0x3033('0x18')](function(_0x353eb8){logger[_0x3033('0x13')]('FreshdeskAccount,\x20%s,\x20%s',_0x4b2cc3,_0x353eb8);_0x1fcf6f(_0x353eb8);});});}exports['GetFreshdeskAccount']=function(_0x4f34a1){var _0x248b64=this;return new Promise(function(_0x1edac4,_0x403005){return db['FreshdeskAccount'][_0x3033('0x19')]({'raw':_0x4f34a1['options']?_0x4f34a1[_0x3033('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4f34a1[_0x3033('0x1a')]?_0x4f34a1['options'][_0x3033('0x1b')]||null:null,'attributes':_0x4f34a1[_0x3033('0x1a')]?_0x4f34a1[_0x3033('0x1a')][_0x3033('0x1c')]||null:null,'limit':_0x4f34a1[_0x3033('0x1a')]?_0x4f34a1[_0x3033('0x1a')][_0x3033('0x1d')]||null:null,'include':_0x4f34a1[_0x3033('0x1a')]?_0x4f34a1[_0x3033('0x1a')][_0x3033('0x1e')]?_[_0x3033('0x1f')](_0x4f34a1[_0x3033('0x1a')][_0x3033('0x1e')],function(_0xa25466){return{'model':db[_0xa25466[_0x3033('0x20')]],'as':_0xa25466['as'],'attributes':_0xa25466[_0x3033('0x1c')],'include':_0xa25466[_0x3033('0x1e')]?_[_0x3033('0x1f')](_0xa25466['include'],function(_0x19707f){return{'model':db[_0x19707f[_0x3033('0x20')]],'as':_0x19707f['as'],'attributes':_0x19707f[_0x3033('0x1c')],'include':_0x19707f[_0x3033('0x1e')]?_['map'](_0x19707f[_0x3033('0x1e')],function(_0x4f705c){return{'model':db[_0x4f705c[_0x3033('0x20')]],'as':_0x4f705c['as'],'attributes':_0x4f705c['attributes']};}):[]};}):[]};}):[]:[]})[_0x3033('0xd')](function(_0x3d75e3){logger[_0x3033('0x16')](_0x3033('0x21'),_0x4f34a1);logger[_0x3033('0x10')]('GetFreshdeskAccount',_0x4f34a1,JSON[_0x3033('0x12')](_0x3d75e3));_0x1edac4(_0x3d75e3);})[_0x3033('0x18')](function(_0x5554a4){logger[_0x3033('0x13')](_0x3033('0x21'),_0x5554a4[_0x3033('0x15')],_0x4f34a1);_0x403005(_0x248b64[_0x3033('0x13')](0x1f4,_0x5554a4[_0x3033('0x15')]));});});};exports[_0x3033('0x22')]=function(_0x1a002f){var _0x3e2dd8=this;return new Promise(function(_0x5bd1e1,_0x36f2a0){return db[_0x3033('0x23')]['find']({'raw':_0x1a002f[_0x3033('0x1a')]?_0x1a002f['options'][_0x3033('0x24')]===undefined?!![]:![]:!![],'where':_0x1a002f['options']?_0x1a002f[_0x3033('0x1a')][_0x3033('0x1b')]||null:null,'attributes':_0x1a002f[_0x3033('0x1a')]?_0x1a002f[_0x3033('0x1a')]['attributes']||null:null,'include':_0x1a002f[_0x3033('0x1a')]?_0x1a002f[_0x3033('0x1a')][_0x3033('0x1e')]?_[_0x3033('0x1f')](_0x1a002f[_0x3033('0x1a')][_0x3033('0x1e')],function(_0x247181){return{'model':db[_0x247181[_0x3033('0x20')]],'as':_0x247181['as'],'attributes':_0x247181['attributes'],'include':_0x247181[_0x3033('0x1e')]?_[_0x3033('0x1f')](_0x247181['include'],function(_0x50e720){return{'model':db[_0x50e720['model']],'as':_0x50e720['as'],'attributes':_0x50e720['attributes'],'include':_0x50e720['include']?_[_0x3033('0x1f')](_0x50e720['include'],function(_0x3acd53){return{'model':db[_0x3acd53[_0x3033('0x20')]],'as':_0x3acd53['as'],'attributes':_0x3acd53[_0x3033('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3033('0xd')](function(_0x17f677){logger[_0x3033('0x16')](_0x3033('0x22'),_0x1a002f);logger[_0x3033('0x10')](_0x3033('0x22'),_0x1a002f,JSON[_0x3033('0x12')](_0x17f677));_0x5bd1e1(_0x17f677);})[_0x3033('0x18')](function(_0xe88d33){logger['error'](_0x3033('0x22'),_0xe88d33['message'],_0x1a002f);_0x36f2a0(_0x3e2dd8['error'](0x1f4,_0xe88d33[_0x3033('0x15')]));});});};
\ No newline at end of file
index 7796db1..a556513 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb54a=['express','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','put','update','delete','destroy','exports','multer','util'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xb54a,0x1ae));var _0xab54=function(_0x14041c,_0x403e9e){_0x14041c=_0x14041c-0x0;var _0x3cca9c=_0xb54a[_0x14041c];return _0x3cca9c;};'use strict';var multer=require(_0xab54('0x0'));var util=require(_0xab54('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xab54('0x2'));var router=express['Router']();var fs_extra=require(_0xab54('0x3'));var auth=require(_0xab54('0x4'));var interaction=require(_0xab54('0x5'));var config=require('../../config/environment');var controller=require(_0xab54('0x6'));router[_0xab54('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xab54('0x7')](_0xab54('0x8'),auth[_0xab54('0x9')](),controller[_0xab54('0xa')]);router[_0xab54('0x7')](_0xab54('0xb'),auth['isAuthenticated'](),controller[_0xab54('0xc')]);router['get'](_0xab54('0xd'),auth[_0xab54('0x9')](),controller[_0xab54('0xe')]);router[_0xab54('0x7')](_0xab54('0xf'),auth['isAuthenticated'](),controller['getDescriptions']);router['get'](_0xab54('0x10'),auth['isAuthenticated'](),controller[_0xab54('0x11')]);router[_0xab54('0x12')]('/',auth[_0xab54('0x9')](),controller['create']);router[_0xab54('0x12')](_0xab54('0x10'),auth[_0xab54('0x9')](),controller['setTags']);router[_0xab54('0x13')](_0xab54('0x8'),auth[_0xab54('0x9')](),controller[_0xab54('0x14')]);router[_0xab54('0x15')]('/:id',auth[_0xab54('0x9')](),controller[_0xab54('0x16')]);module[_0xab54('0x17')]=router;
\ No newline at end of file
+var _0xa8b2=['get','isAuthenticated','index','show','getFields','getSubjects','/:id/descriptions','/:id/tags','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intFreshdeskConfiguration.controller'];(function(_0x75e143,_0x218710){var _0xdddfdb=function(_0x32d694){while(--_0x32d694){_0x75e143['push'](_0x75e143['shift']());}};_0xdddfdb(++_0x218710);}(_0xa8b2,0x147));var _0x2a8b=function(_0x485f4f,_0x1e21ce){_0x485f4f=_0x485f4f-0x0;var _0x5936cb=_0xa8b2[_0x485f4f];return _0x5936cb;};'use strict';var multer=require(_0x2a8b('0x0'));var util=require(_0x2a8b('0x1'));var path=require(_0x2a8b('0x2'));var timeout=require(_0x2a8b('0x3'));var express=require(_0x2a8b('0x4'));var router=express[_0x2a8b('0x5')]();var fs_extra=require(_0x2a8b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2a8b('0x7'));var config=require('../../config/environment');var controller=require(_0x2a8b('0x8'));router[_0x2a8b('0x9')]('/',auth[_0x2a8b('0xa')](),controller[_0x2a8b('0xb')]);router['get']('/:id',auth[_0x2a8b('0xa')](),controller[_0x2a8b('0xc')]);router[_0x2a8b('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x2a8b('0xd')]);router[_0x2a8b('0x9')]('/:id/subjects',auth[_0x2a8b('0xa')](),controller[_0x2a8b('0xe')]);router[_0x2a8b('0x9')](_0x2a8b('0xf'),auth[_0x2a8b('0xa')](),controller['getDescriptions']);router[_0x2a8b('0x9')](_0x2a8b('0x10'),auth[_0x2a8b('0xa')](),controller['getTags']);router[_0x2a8b('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2a8b('0x11')](_0x2a8b('0x10'),auth['isAuthenticated'](),controller['setTags']);router[_0x2a8b('0x12')](_0x2a8b('0x13'),auth[_0x2a8b('0xa')](),controller[_0x2a8b('0x14')]);router[_0x2a8b('0x15')](_0x2a8b('0x13'),auth[_0x2a8b('0xa')](),controller[_0x2a8b('0x16')]);module[_0x2a8b('0x17')]=router;
\ No newline at end of file
index 50568bc..6ad6cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d83=['STRING','exports'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x0d83,0xf7));var _0x30d8=function(_0x5ed275,_0x315cb0){_0x5ed275=_0x5ed275-0x0;var _0x3f74dd=_0x0d83[_0x5ed275];return _0x3f74dd;};'use strict';var Sequelize=require('sequelize');module[_0x30d8('0x0')]={'name':{'type':Sequelize[_0x30d8('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf129=['STRING','sequelize','exports'];(function(_0x2716c6,_0x38dd17){var _0x518dc2=function(_0x36e9e9){while(--_0x36e9e9){_0x2716c6['push'](_0x2716c6['shift']());}};_0x518dc2(++_0x38dd17);}(_0xf129,0x106));var _0x9f12=function(_0x5806ee,_0xf669f3){_0x5806ee=_0x5806ee-0x0;var _0x5e624f=_0xf129[_0x5806ee];return _0x5e624f;};'use strict';var Sequelize=require(_0x9f12('0x0'));module[_0x9f12('0x1')]={'name':{'type':Sequelize[_0x9f12('0x2')]},'description':{'type':Sequelize[_0x9f12('0x2')]}};
\ No newline at end of file
index 9e53015..aae185e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd03=['name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','update','getFields','FreshdeskField','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','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','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','stack'];(function(_0x3fefc7,_0x20a7dc){var _0x1fe591=function(_0x30c32c){while(--_0x30c32c){_0x3fefc7['push'](_0x3fefc7['shift']());}};_0x1fe591(++_0x20a7dc);}(_0xcd03,0xdb));var _0x3cd0=function(_0x1335f5,_0x1d6f12){_0x1335f5=_0x1335f5-0x0;var _0xa78c23=_0xcd03[_0x1335f5];return _0xa78c23;};'use strict';var emlformat=require(_0x3cd0('0x0'));var rimraf=require(_0x3cd0('0x1'));var zipdir=require(_0x3cd0('0x2'));var jsonpatch=require(_0x3cd0('0x3'));var rp=require('request-promise');var moment=require(_0x3cd0('0x4'));var BPromise=require(_0x3cd0('0x5'));var Mustache=require(_0x3cd0('0x6'));var util=require(_0x3cd0('0x7'));var path=require(_0x3cd0('0x8'));var sox=require(_0x3cd0('0x9'));var csv=require(_0x3cd0('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3cd0('0xb'));var _=require(_0x3cd0('0xc'));var squel=require('squel');var crypto=require(_0x3cd0('0xd'));var jsforce=require(_0x3cd0('0xe'));var deskjs=require(_0x3cd0('0xf'));var toCsv=require(_0x3cd0('0xa'));var querystring=require(_0x3cd0('0x10'));var Papa=require(_0x3cd0('0x11'));var Redis=require(_0x3cd0('0x12'));var authService=require(_0x3cd0('0x13'));var qs=require(_0x3cd0('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3cd0('0x15'));var logger=require(_0x3cd0('0x16'))(_0x3cd0('0x17'));var utils=require(_0x3cd0('0x18'));var config=require(_0x3cd0('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x3cd0('0x1a'))['db'];function respondWithStatusCode(_0x4a3f0e,_0x535cd2){_0x535cd2=_0x535cd2||0xcc;return function(_0x52eb74){if(_0x52eb74){return _0x4a3f0e[_0x3cd0('0x1b')](_0x535cd2);}return _0x4a3f0e[_0x3cd0('0x1c')](_0x535cd2)[_0x3cd0('0x1d')]();};}function respondWithResult(_0x17569e,_0xf6b4f8){_0xf6b4f8=_0xf6b4f8||0xc8;return function(_0x2774bd){if(_0x2774bd){return _0x17569e[_0x3cd0('0x1c')](_0xf6b4f8)[_0x3cd0('0x1e')](_0x2774bd);}};}function respondWithFilteredResult(_0xa6dd3c,_0x3fb951){return function(_0x2ac66a){if(_0x2ac66a){var _0x48f597=typeof _0x3fb951[_0x3cd0('0x1f')]===_0x3cd0('0x20')&&typeof _0x3fb951[_0x3cd0('0x21')]===_0x3cd0('0x20');var _0x1e10cc=_0x2ac66a[_0x3cd0('0x22')];var _0x37465d=_0x48f597?0x0:_0x3fb951[_0x3cd0('0x1f')];var _0x1e40c5=_0x48f597?_0x2ac66a[_0x3cd0('0x22')]:_0x3fb951[_0x3cd0('0x1f')]+_0x3fb951[_0x3cd0('0x21')];var _0x4ba0b7;if(_0x1e40c5>=_0x1e10cc){_0x1e40c5=_0x1e10cc;_0x4ba0b7=0xc8;}else{_0x4ba0b7=0xce;}_0xa6dd3c[_0x3cd0('0x1c')](_0x4ba0b7);return _0xa6dd3c['set'](_0x3cd0('0x23'),_0x37465d+'-'+_0x1e40c5+'/'+_0x1e10cc)[_0x3cd0('0x1e')](_0x2ac66a);}return null;};}function patchUpdates(_0x2cbe89){return function(_0x3db659){try{jsonpatch[_0x3cd0('0x24')](_0x3db659,_0x2cbe89,!![]);}catch(_0xaf120){return BPromise[_0x3cd0('0x25')](_0xaf120);}return _0x3db659[_0x3cd0('0x26')]();};}function saveUpdates(_0xcdcfc7,_0x49b79e){return function(_0x3d610d){if(_0x3d610d){return _0x3d610d['update'](_0xcdcfc7)[_0x3cd0('0x27')](function(_0x5c5539){return _0x5c5539;});}return null;};}function removeEntity(_0x1fcda9,_0x5eadca){return function(_0x396efa){if(_0x396efa){return _0x396efa[_0x3cd0('0x28')]()[_0x3cd0('0x27')](function(){_0x1fcda9[_0x3cd0('0x1c')](0xcc)[_0x3cd0('0x1d')]();});}};}function handleEntityNotFound(_0x27d79e,_0x2f0168){return function(_0x57cd50){if(!_0x57cd50){_0x27d79e[_0x3cd0('0x1b')](0x194);}return _0x57cd50;};}function handleError(_0x1bf8c5,_0x315e36){_0x315e36=_0x315e36||0x1f4;return function(_0x5770d3){logger['error'](_0x5770d3[_0x3cd0('0x29')]);if(_0x5770d3[_0x3cd0('0x2a')]){delete _0x5770d3[_0x3cd0('0x2a')];}_0x1bf8c5[_0x3cd0('0x1c')](_0x315e36)[_0x3cd0('0x2b')](_0x5770d3);};}exports[_0x3cd0('0x2c')]=function(_0x1052f8,_0x29b374){var _0x49deed={},_0x2f88b7={},_0x2d6857={'count':0x0,'rows':[]};var _0xfbfc95=_['map'](db[_0x3cd0('0x2d')][_0x3cd0('0x2e')],function(_0x5628f2){return{'name':_0x5628f2[_0x3cd0('0x2f')],'type':_0x5628f2[_0x3cd0('0x30')]['key']};});_0x2f88b7[_0x3cd0('0x31')]=_[_0x3cd0('0x32')](_0xfbfc95,_0x3cd0('0x2a'));_0x2f88b7[_0x3cd0('0x33')]=_[_0x3cd0('0x34')](_0x1052f8[_0x3cd0('0x33')]);_0x2f88b7['filters']=_['intersection'](_0x2f88b7[_0x3cd0('0x31')],_0x2f88b7[_0x3cd0('0x33')]);_0x49deed[_0x3cd0('0x35')]=_[_0x3cd0('0x36')](_0x2f88b7[_0x3cd0('0x31')],qs[_0x3cd0('0x37')](_0x1052f8['query'][_0x3cd0('0x37')]));_0x49deed[_0x3cd0('0x35')]=_0x49deed['attributes'][_0x3cd0('0x38')]?_0x49deed['attributes']:_0x2f88b7[_0x3cd0('0x31')];if(!_0x1052f8[_0x3cd0('0x33')][_0x3cd0('0x39')](_0x3cd0('0x3a'))){_0x49deed[_0x3cd0('0x21')]=qs[_0x3cd0('0x21')](_0x1052f8[_0x3cd0('0x33')][_0x3cd0('0x21')]);_0x49deed[_0x3cd0('0x1f')]=qs[_0x3cd0('0x1f')](_0x1052f8[_0x3cd0('0x33')]['offset']);}_0x49deed[_0x3cd0('0x3b')]=qs[_0x3cd0('0x3c')](_0x1052f8[_0x3cd0('0x33')]['sort']);_0x49deed[_0x3cd0('0x3d')]=qs[_0x3cd0('0x3e')](_[_0x3cd0('0x3f')](_0x1052f8['query'],_0x2f88b7[_0x3cd0('0x3e')]),_0xfbfc95);if(_0x1052f8[_0x3cd0('0x33')][_0x3cd0('0x40')]){_0x49deed['where']=_[_0x3cd0('0x41')](_0x49deed[_0x3cd0('0x3d')],{'$or':_[_0x3cd0('0x32')](_0xfbfc95,function(_0x257b97){if(_0x257b97[_0x3cd0('0x30')]!==_0x3cd0('0x42')){var _0xccb7b0={};_0xccb7b0[_0x257b97['name']]={'$like':'%'+_0x1052f8[_0x3cd0('0x33')][_0x3cd0('0x40')]+'%'};return _0xccb7b0;}})});}_0x49deed=_[_0x3cd0('0x41')]({},_0x49deed,_0x1052f8[_0x3cd0('0x43')]);var _0x18dd2f={'where':_0x49deed['where']};return db[_0x3cd0('0x2d')]['count'](_0x18dd2f)['then'](function(_0x475aab){_0x2d6857['count']=_0x475aab;if(_0x1052f8['query'][_0x3cd0('0x44')]){_0x49deed[_0x3cd0('0x45')]=[{'all':!![]}];}return db[_0x3cd0('0x2d')]['findAll'](_0x49deed);})[_0x3cd0('0x27')](function(_0x3e7fce){_0x2d6857[_0x3cd0('0x46')]=_0x3e7fce;return _0x2d6857;})[_0x3cd0('0x27')](respondWithFilteredResult(_0x29b374,_0x49deed))[_0x3cd0('0x47')](handleError(_0x29b374,null));};exports[_0x3cd0('0x48')]=function(_0xc0d809,_0x50689d){var _0x4ef610={'raw':![],'where':{'id':_0xc0d809[_0x3cd0('0x49')]['id']}},_0x48902e={};_0x48902e[_0x3cd0('0x31')]=_[_0x3cd0('0x34')](db[_0x3cd0('0x2d')][_0x3cd0('0x2e')]);_0x48902e[_0x3cd0('0x33')]=_['keys'](_0xc0d809[_0x3cd0('0x33')]);_0x48902e[_0x3cd0('0x3e')]=_[_0x3cd0('0x36')](_0x48902e[_0x3cd0('0x31')],_0x48902e[_0x3cd0('0x33')]);_0x4ef610[_0x3cd0('0x35')]=_[_0x3cd0('0x36')](_0x48902e[_0x3cd0('0x31')],qs[_0x3cd0('0x37')](_0xc0d809[_0x3cd0('0x33')][_0x3cd0('0x37')]));_0x4ef610[_0x3cd0('0x35')]=_0x4ef610['attributes'][_0x3cd0('0x38')]?_0x4ef610[_0x3cd0('0x35')]:_0x48902e['model'];if(_0xc0d809[_0x3cd0('0x33')]['includeAll']){_0x4ef610[_0x3cd0('0x45')]=[{'all':!![]}];}_0x4ef610=_[_0x3cd0('0x41')]({},_0x4ef610,_0xc0d809['options']);return db['FreshdeskConfiguration'][_0x3cd0('0x4a')](_0x4ef610)[_0x3cd0('0x27')](handleEntityNotFound(_0x50689d,null))[_0x3cd0('0x27')](respondWithResult(_0x50689d,null))[_0x3cd0('0x47')](handleError(_0x50689d,null));};exports[_0x3cd0('0x4b')]=function(_0x5cdc02,_0x13d12a){return db[_0x3cd0('0x2d')][_0x3cd0('0x4b')](_0x5cdc02[_0x3cd0('0x4c')],{})['then'](respondWithResult(_0x13d12a,0xc9))[_0x3cd0('0x47')](handleError(_0x13d12a,null));};exports[_0x3cd0('0x4d')]=function(_0x41eb42,_0x28ce88){if(_0x41eb42[_0x3cd0('0x4c')]['id']){delete _0x41eb42['body']['id'];}return db['FreshdeskConfiguration']['find']({'where':{'id':_0x41eb42[_0x3cd0('0x49')]['id']}})[_0x3cd0('0x27')](handleEntityNotFound(_0x28ce88,null))[_0x3cd0('0x27')](saveUpdates(_0x41eb42['body'],null))[_0x3cd0('0x27')](respondWithResult(_0x28ce88,null))[_0x3cd0('0x47')](handleError(_0x28ce88,null));};exports[_0x3cd0('0x28')]=function(_0x3e903b,_0x18cf99){return db[_0x3cd0('0x2d')][_0x3cd0('0x4a')]({'where':{'id':_0x3e903b[_0x3cd0('0x49')]['id']}})[_0x3cd0('0x27')](handleEntityNotFound(_0x18cf99,null))[_0x3cd0('0x27')](removeEntity(_0x18cf99,null))['catch'](handleError(_0x18cf99,null));};exports[_0x3cd0('0x4e')]=function(_0x576102,_0x3ab254,_0x5ea3cf){var _0x27f47d={};var _0x2cd3d6={};var _0x123873;var _0x4258a7;return db[_0x3cd0('0x2d')]['findOne']({'where':{'id':_0x576102[_0x3cd0('0x49')]['id']}})[_0x3cd0('0x27')](handleEntityNotFound(_0x3ab254,null))[_0x3cd0('0x27')](function(_0xb03a09){if(_0xb03a09){_0x123873=_0xb03a09;_0x2cd3d6[_0x3cd0('0x31')]=_[_0x3cd0('0x34')](db[_0x3cd0('0x4f')][_0x3cd0('0x2e')]);_0x2cd3d6[_0x3cd0('0x33')]=_[_0x3cd0('0x34')](_0x576102[_0x3cd0('0x33')]);_0x2cd3d6['filters']=_[_0x3cd0('0x36')](_0x2cd3d6[_0x3cd0('0x31')],_0x2cd3d6['query']);_0x27f47d[_0x3cd0('0x35')]=_[_0x3cd0('0x36')](_0x2cd3d6[_0x3cd0('0x31')],qs[_0x3cd0('0x37')](_0x576102['query'][_0x3cd0('0x37')]));_0x27f47d['attributes']=_0x27f47d[_0x3cd0('0x35')][_0x3cd0('0x38')]?_0x27f47d[_0x3cd0('0x35')]:_0x2cd3d6[_0x3cd0('0x31')];_0x27f47d[_0x3cd0('0x3b')]=qs[_0x3cd0('0x3c')](_0x576102[_0x3cd0('0x33')][_0x3cd0('0x3c')]);_0x27f47d[_0x3cd0('0x3d')]=qs[_0x3cd0('0x3e')](_[_0x3cd0('0x3f')](_0x576102[_0x3cd0('0x33')],_0x2cd3d6[_0x3cd0('0x3e')]));if(_0x576102['query'][_0x3cd0('0x40')]){_0x27f47d[_0x3cd0('0x3d')]=_[_0x3cd0('0x41')](_0x27f47d['where'],{'$or':_[_0x3cd0('0x32')](_0x27f47d[_0x3cd0('0x35')],function(_0x177f0d){var _0x3a594f={};_0x3a594f[_0x177f0d]={'$like':'%'+_0x576102[_0x3cd0('0x33')][_0x3cd0('0x40')]+'%'};return _0x3a594f;})});}_0x27f47d=_[_0x3cd0('0x41')]({},_0x27f47d,_0x576102[_0x3cd0('0x43')]);return _0x123873[_0x3cd0('0x4e')](_0x27f47d);}})['then'](function(_0x524711){if(_0x524711){_0x4258a7=_0x524711['length'];if(!_0x576102[_0x3cd0('0x33')][_0x3cd0('0x39')](_0x3cd0('0x3a'))){_0x27f47d['limit']=qs['limit'](_0x576102[_0x3cd0('0x33')][_0x3cd0('0x21')]);_0x27f47d['offset']=qs[_0x3cd0('0x1f')](_0x576102[_0x3cd0('0x33')][_0x3cd0('0x1f')]);}return _0x123873['getFields'](_0x27f47d);}})[_0x3cd0('0x27')](function(_0xca09d2){if(_0xca09d2){return _0xca09d2?{'count':_0x4258a7,'rows':_0xca09d2}:null;}})[_0x3cd0('0x27')](respondWithResult(_0x3ab254,null))[_0x3cd0('0x47')](handleError(_0x3ab254,null));};exports[_0x3cd0('0x50')]=function(_0x21fb53,_0x2d2679,_0x5ba08f){var _0x368ec1={};var _0x34829a={};var _0x1dd6ef;var _0x5f1b6d;return db[_0x3cd0('0x2d')][_0x3cd0('0x51')]({'where':{'id':_0x21fb53['params']['id']}})[_0x3cd0('0x27')](handleEntityNotFound(_0x2d2679,null))[_0x3cd0('0x27')](function(_0xa132f9){if(_0xa132f9){_0x1dd6ef=_0xa132f9;_0x34829a[_0x3cd0('0x31')]=_[_0x3cd0('0x34')](db[_0x3cd0('0x4f')][_0x3cd0('0x2e')]);_0x34829a[_0x3cd0('0x33')]=_[_0x3cd0('0x34')](_0x21fb53[_0x3cd0('0x33')]);_0x34829a[_0x3cd0('0x3e')]=_[_0x3cd0('0x36')](_0x34829a[_0x3cd0('0x31')],_0x34829a['query']);_0x368ec1[_0x3cd0('0x35')]=_[_0x3cd0('0x36')](_0x34829a['model'],qs[_0x3cd0('0x37')](_0x21fb53[_0x3cd0('0x33')][_0x3cd0('0x37')]));_0x368ec1[_0x3cd0('0x35')]=_0x368ec1[_0x3cd0('0x35')]['length']?_0x368ec1['attributes']:_0x34829a[_0x3cd0('0x31')];_0x368ec1[_0x3cd0('0x3b')]=qs[_0x3cd0('0x3c')](_0x21fb53[_0x3cd0('0x33')][_0x3cd0('0x3c')]);_0x368ec1[_0x3cd0('0x3d')]=qs[_0x3cd0('0x3e')](_[_0x3cd0('0x3f')](_0x21fb53['query'],_0x34829a['filters']));if(_0x21fb53['query'][_0x3cd0('0x40')]){_0x368ec1[_0x3cd0('0x3d')]=_[_0x3cd0('0x41')](_0x368ec1[_0x3cd0('0x3d')],{'$or':_[_0x3cd0('0x32')](_0x368ec1[_0x3cd0('0x35')],function(_0x27256c){var _0x55a463={};_0x55a463[_0x27256c]={'$like':'%'+_0x21fb53[_0x3cd0('0x33')][_0x3cd0('0x40')]+'%'};return _0x55a463;})});}_0x368ec1=_[_0x3cd0('0x41')]({},_0x368ec1,_0x21fb53[_0x3cd0('0x43')]);return _0x1dd6ef['getSubjects'](_0x368ec1);}})[_0x3cd0('0x27')](function(_0x30b32c){if(_0x30b32c){_0x5f1b6d=_0x30b32c['length'];if(!_0x21fb53[_0x3cd0('0x33')]['hasOwnProperty'](_0x3cd0('0x3a'))){_0x368ec1['limit']=qs[_0x3cd0('0x21')](_0x21fb53[_0x3cd0('0x33')][_0x3cd0('0x21')]);_0x368ec1[_0x3cd0('0x1f')]=qs[_0x3cd0('0x1f')](_0x21fb53[_0x3cd0('0x33')]['offset']);}return _0x1dd6ef[_0x3cd0('0x50')](_0x368ec1);}})['then'](function(_0x319b9f){if(_0x319b9f){return _0x319b9f?{'count':_0x5f1b6d,'rows':_0x319b9f}:null;}})['then'](respondWithResult(_0x2d2679,null))[_0x3cd0('0x47')](handleError(_0x2d2679,null));};exports[_0x3cd0('0x52')]=function(_0x2b813f,_0x7a512a,_0x5868b1){var _0x5b2a6c={};var _0x5515a1={};var _0x25cd2b;var _0x1ea0d0;return db['FreshdeskConfiguration'][_0x3cd0('0x51')]({'where':{'id':_0x2b813f[_0x3cd0('0x49')]['id']}})[_0x3cd0('0x27')](handleEntityNotFound(_0x7a512a,null))['then'](function(_0x3e284e){if(_0x3e284e){_0x25cd2b=_0x3e284e;_0x5515a1[_0x3cd0('0x31')]=_[_0x3cd0('0x34')](db['FreshdeskField'][_0x3cd0('0x2e')]);_0x5515a1[_0x3cd0('0x33')]=_['keys'](_0x2b813f[_0x3cd0('0x33')]);_0x5515a1[_0x3cd0('0x3e')]=_[_0x3cd0('0x36')](_0x5515a1[_0x3cd0('0x31')],_0x5515a1[_0x3cd0('0x33')]);_0x5b2a6c[_0x3cd0('0x35')]=_[_0x3cd0('0x36')](_0x5515a1[_0x3cd0('0x31')],qs[_0x3cd0('0x37')](_0x2b813f[_0x3cd0('0x33')]['fields']));_0x5b2a6c[_0x3cd0('0x35')]=_0x5b2a6c[_0x3cd0('0x35')][_0x3cd0('0x38')]?_0x5b2a6c[_0x3cd0('0x35')]:_0x5515a1[_0x3cd0('0x31')];_0x5b2a6c['order']=qs[_0x3cd0('0x3c')](_0x2b813f[_0x3cd0('0x33')]['sort']);_0x5b2a6c[_0x3cd0('0x3d')]=qs[_0x3cd0('0x3e')](_[_0x3cd0('0x3f')](_0x2b813f[_0x3cd0('0x33')],_0x5515a1['filters']));if(_0x2b813f['query'][_0x3cd0('0x40')]){_0x5b2a6c[_0x3cd0('0x3d')]=_[_0x3cd0('0x41')](_0x5b2a6c[_0x3cd0('0x3d')],{'$or':_[_0x3cd0('0x32')](_0x5b2a6c[_0x3cd0('0x35')],function(_0x445989){var _0x3cfa97={};_0x3cfa97[_0x445989]={'$like':'%'+_0x2b813f[_0x3cd0('0x33')][_0x3cd0('0x40')]+'%'};return _0x3cfa97;})});}_0x5b2a6c=_[_0x3cd0('0x41')]({},_0x5b2a6c,_0x2b813f['options']);return _0x25cd2b[_0x3cd0('0x52')](_0x5b2a6c);}})[_0x3cd0('0x27')](function(_0x413087){if(_0x413087){_0x1ea0d0=_0x413087[_0x3cd0('0x38')];if(!_0x2b813f[_0x3cd0('0x33')]['hasOwnProperty']('nolimit')){_0x5b2a6c[_0x3cd0('0x21')]=qs['limit'](_0x2b813f['query'][_0x3cd0('0x21')]);_0x5b2a6c[_0x3cd0('0x1f')]=qs[_0x3cd0('0x1f')](_0x2b813f[_0x3cd0('0x33')][_0x3cd0('0x1f')]);}return _0x25cd2b[_0x3cd0('0x52')](_0x5b2a6c);}})[_0x3cd0('0x27')](function(_0xbcd9fc){if(_0xbcd9fc){return _0xbcd9fc?{'count':_0x1ea0d0,'rows':_0xbcd9fc}:null;}})[_0x3cd0('0x27')](respondWithResult(_0x7a512a,null))[_0x3cd0('0x47')](handleError(_0x7a512a,null));};exports[_0x3cd0('0x53')]=function(_0x4d1e82,_0xcd5dd5,_0x3ae0a0){var _0x594bf4={};var _0xd2ac0c={};var _0x5c49cd;var _0x139052;return db[_0x3cd0('0x2d')][_0x3cd0('0x51')]({'where':{'id':_0x4d1e82[_0x3cd0('0x49')]['id']}})['then'](handleEntityNotFound(_0xcd5dd5,null))['then'](function(_0x4d788f){if(_0x4d788f){_0x5c49cd=_0x4d788f;_0xd2ac0c['model']=_[_0x3cd0('0x34')](db[_0x3cd0('0x54')]['rawAttributes']);_0xd2ac0c[_0x3cd0('0x33')]=_[_0x3cd0('0x34')](_0x4d1e82['query']);_0xd2ac0c[_0x3cd0('0x3e')]=_[_0x3cd0('0x36')](_0xd2ac0c[_0x3cd0('0x31')],_0xd2ac0c[_0x3cd0('0x33')]);_0x594bf4[_0x3cd0('0x35')]=_['intersection'](_0xd2ac0c[_0x3cd0('0x31')],qs[_0x3cd0('0x37')](_0x4d1e82[_0x3cd0('0x33')]['fields']));_0x594bf4['attributes']=_0x594bf4['attributes'][_0x3cd0('0x38')]?_0x594bf4[_0x3cd0('0x35')]:_0xd2ac0c[_0x3cd0('0x31')];_0x594bf4[_0x3cd0('0x3b')]=qs['sort'](_0x4d1e82[_0x3cd0('0x33')]['sort']);_0x594bf4[_0x3cd0('0x3d')]=qs['filters'](_[_0x3cd0('0x3f')](_0x4d1e82['query'],_0xd2ac0c[_0x3cd0('0x3e')]));if(_0x4d1e82[_0x3cd0('0x33')][_0x3cd0('0x40')]){_0x594bf4[_0x3cd0('0x3d')]=_[_0x3cd0('0x41')](_0x594bf4[_0x3cd0('0x3d')],{'$or':_['map'](_0x594bf4['attributes'],function(_0x14775c){var _0x4e90f0={};_0x4e90f0[_0x14775c]={'$like':'%'+_0x4d1e82[_0x3cd0('0x33')][_0x3cd0('0x40')]+'%'};return _0x4e90f0;})});}_0x594bf4=_['merge']({},_0x594bf4,_0x4d1e82[_0x3cd0('0x43')]);return _0x5c49cd[_0x3cd0('0x53')](_0x594bf4);}})[_0x3cd0('0x27')](function(_0x19fb83){if(_0x19fb83){_0x139052=_0x19fb83[_0x3cd0('0x38')];if(!_0x4d1e82[_0x3cd0('0x33')][_0x3cd0('0x39')](_0x3cd0('0x3a'))){_0x594bf4['limit']=qs['limit'](_0x4d1e82[_0x3cd0('0x33')][_0x3cd0('0x21')]);_0x594bf4[_0x3cd0('0x1f')]=qs[_0x3cd0('0x1f')](_0x4d1e82[_0x3cd0('0x33')]['offset']);}return _0x5c49cd[_0x3cd0('0x53')](_0x594bf4);}})['then'](function(_0x3abeef){if(_0x3abeef){return _0x3abeef?{'count':_0x139052,'rows':_0x3abeef}:null;}})[_0x3cd0('0x27')](respondWithResult(_0xcd5dd5,null))['catch'](handleError(_0xcd5dd5,null));};exports['setTags']=function(_0x552498,_0x2746ac,_0x35c442){if(_0x552498[_0x3cd0('0x4c')]['id']){delete _0x552498[_0x3cd0('0x4c')]['id'];}return db[_0x3cd0('0x2d')][_0x3cd0('0x51')]({'where':{'id':_0x552498[_0x3cd0('0x49')]['id']}})[_0x3cd0('0x27')](handleEntityNotFound(_0x2746ac,null))[_0x3cd0('0x27')](function(_0x123c78){if(_0x123c78){return _0x123c78[_0x3cd0('0x55')](_0x552498['body'][_0x3cd0('0x56')]||[]);}return null;})[_0x3cd0('0x27')](respondWithResult(_0x2746ac,null))['catch'](handleError(_0x2746ac,null));};
\ No newline at end of file
+var _0x0a03=['where','filters','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','keys','FreshdeskConfiguration','find','create','body','params','findOne','pick','getFields','getSubjects','getDescriptions','FreshdeskField','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','lodash','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','../../config/license/util','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','save','update','destroy','end','error','name','send','rawAttributes','fieldName','type','key','model','map','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x4e3ffc,_0x570704){var _0x543119=function(_0x396abb){while(--_0x396abb){_0x4e3ffc['push'](_0x4e3ffc['shift']());}};_0x543119(++_0x570704);}(_0x0a03,0x1cb));var _0x30a0=function(_0x527499,_0xcab30c){_0x527499=_0x527499-0x0;var _0x2c15ce=_0x0a03[_0x527499];return _0x2c15ce;};'use strict';var emlformat=require(_0x30a0('0x0'));var rimraf=require(_0x30a0('0x1'));var zipdir=require(_0x30a0('0x2'));var jsonpatch=require(_0x30a0('0x3'));var rp=require(_0x30a0('0x4'));var moment=require(_0x30a0('0x5'));var BPromise=require(_0x30a0('0x6'));var Mustache=require(_0x30a0('0x7'));var util=require(_0x30a0('0x8'));var path=require('path');var sox=require(_0x30a0('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x30a0('0xa'));var squel=require(_0x30a0('0xb'));var crypto=require(_0x30a0('0xc'));var jsforce=require(_0x30a0('0xd'));var deskjs=require(_0x30a0('0xe'));var toCsv=require(_0x30a0('0xf'));var querystring=require(_0x30a0('0x10'));var Papa=require(_0x30a0('0x11'));var Redis=require(_0x30a0('0x12'));var authService=require(_0x30a0('0x13'));var qs=require(_0x30a0('0x14'));var as=require(_0x30a0('0x15'));var hardwareService=require(_0x30a0('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x30a0('0x17'));var config=require(_0x30a0('0x18'));var licenseUtil=require(_0x30a0('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ffb6e,_0x42718d){_0x42718d=_0x42718d||0xcc;return function(_0x4e3499){if(_0x4e3499){return _0x3ffb6e[_0x30a0('0x1a')](_0x42718d);}return _0x3ffb6e[_0x30a0('0x1b')](_0x42718d)['end']();};}function respondWithResult(_0x2de5a6,_0x962953){_0x962953=_0x962953||0xc8;return function(_0x3b2759){if(_0x3b2759){return _0x2de5a6[_0x30a0('0x1b')](_0x962953)['json'](_0x3b2759);}};}function respondWithFilteredResult(_0x3889a0,_0x33875c){return function(_0xfeb288){if(_0xfeb288){var _0x5c97c1=typeof _0x33875c['offset']===_0x30a0('0x1c')&&typeof _0x33875c[_0x30a0('0x1d')]===_0x30a0('0x1c');var _0x50fa45=_0xfeb288[_0x30a0('0x1e')];var _0x5991a1=_0x5c97c1?0x0:_0x33875c[_0x30a0('0x1f')];var _0x27cbb8=_0x5c97c1?_0xfeb288[_0x30a0('0x1e')]:_0x33875c[_0x30a0('0x1f')]+_0x33875c[_0x30a0('0x1d')];var _0x5efa63;if(_0x27cbb8>=_0x50fa45){_0x27cbb8=_0x50fa45;_0x5efa63=0xc8;}else{_0x5efa63=0xce;}_0x3889a0['status'](_0x5efa63);return _0x3889a0[_0x30a0('0x20')](_0x30a0('0x21'),_0x5991a1+'-'+_0x27cbb8+'/'+_0x50fa45)[_0x30a0('0x22')](_0xfeb288);}return null;};}function patchUpdates(_0x54a438){return function(_0x2a3144){try{jsonpatch['apply'](_0x2a3144,_0x54a438,!![]);}catch(_0x3ae00d){return BPromise['reject'](_0x3ae00d);}return _0x2a3144[_0x30a0('0x23')]();};}function saveUpdates(_0x1a8a4a,_0x484b1a){return function(_0x549759){if(_0x549759){return _0x549759[_0x30a0('0x24')](_0x1a8a4a)['then'](function(_0x2a7104){return _0x2a7104;});}return null;};}function removeEntity(_0x4cc17e,_0x1a4429){return function(_0x448c78){if(_0x448c78){return _0x448c78[_0x30a0('0x25')]()['then'](function(){_0x4cc17e['status'](0xcc)[_0x30a0('0x26')]();});}};}function handleEntityNotFound(_0x4fb255,_0x3cb0b0){return function(_0x3f8697){if(!_0x3f8697){_0x4fb255[_0x30a0('0x1a')](0x194);}return _0x3f8697;};}function handleError(_0x468112,_0x566651){_0x566651=_0x566651||0x1f4;return function(_0x1894bd){logger[_0x30a0('0x27')](_0x1894bd['stack']);if(_0x1894bd[_0x30a0('0x28')]){delete _0x1894bd[_0x30a0('0x28')];}_0x468112['status'](_0x566651)[_0x30a0('0x29')](_0x1894bd);};}exports['index']=function(_0x4d3284,_0x43b9a3){var _0x20c848={},_0x2cc8ed={},_0x4db15b={'count':0x0,'rows':[]};var _0x1a14ff=_['map'](db['FreshdeskConfiguration'][_0x30a0('0x2a')],function(_0x346abd){return{'name':_0x346abd[_0x30a0('0x2b')],'type':_0x346abd[_0x30a0('0x2c')][_0x30a0('0x2d')]};});_0x2cc8ed[_0x30a0('0x2e')]=_[_0x30a0('0x2f')](_0x1a14ff,_0x30a0('0x28'));_0x2cc8ed['query']=_['keys'](_0x4d3284['query']);_0x2cc8ed['filters']=_[_0x30a0('0x30')](_0x2cc8ed[_0x30a0('0x2e')],_0x2cc8ed[_0x30a0('0x31')]);_0x20c848[_0x30a0('0x32')]=_[_0x30a0('0x30')](_0x2cc8ed[_0x30a0('0x2e')],qs[_0x30a0('0x33')](_0x4d3284[_0x30a0('0x31')][_0x30a0('0x33')]));_0x20c848[_0x30a0('0x32')]=_0x20c848[_0x30a0('0x32')][_0x30a0('0x34')]?_0x20c848[_0x30a0('0x32')]:_0x2cc8ed[_0x30a0('0x2e')];if(!_0x4d3284['query'][_0x30a0('0x35')](_0x30a0('0x36'))){_0x20c848[_0x30a0('0x1d')]=qs[_0x30a0('0x1d')](_0x4d3284[_0x30a0('0x31')]['limit']);_0x20c848[_0x30a0('0x1f')]=qs[_0x30a0('0x1f')](_0x4d3284[_0x30a0('0x31')][_0x30a0('0x1f')]);}_0x20c848[_0x30a0('0x37')]=qs[_0x30a0('0x38')](_0x4d3284[_0x30a0('0x31')][_0x30a0('0x38')]);_0x20c848[_0x30a0('0x39')]=qs[_0x30a0('0x3a')](_['pick'](_0x4d3284[_0x30a0('0x31')],_0x2cc8ed[_0x30a0('0x3a')]),_0x1a14ff);if(_0x4d3284[_0x30a0('0x31')][_0x30a0('0x3b')]){_0x20c848['where']=_[_0x30a0('0x3c')](_0x20c848[_0x30a0('0x39')],{'$or':_['map'](_0x1a14ff,function(_0x367949){if(_0x367949[_0x30a0('0x2c')]!==_0x30a0('0x3d')){var _0xd02bd5={};_0xd02bd5[_0x367949[_0x30a0('0x28')]]={'$like':'%'+_0x4d3284[_0x30a0('0x31')]['filter']+'%'};return _0xd02bd5;}})});}_0x20c848=_[_0x30a0('0x3c')]({},_0x20c848,_0x4d3284[_0x30a0('0x3e')]);var _0x482ca8={'where':_0x20c848['where']};return db['FreshdeskConfiguration']['count'](_0x482ca8)[_0x30a0('0x3f')](function(_0x32c8c9){_0x4db15b[_0x30a0('0x1e')]=_0x32c8c9;if(_0x4d3284[_0x30a0('0x31')][_0x30a0('0x40')]){_0x20c848[_0x30a0('0x41')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x30a0('0x42')](_0x20c848);})[_0x30a0('0x3f')](function(_0x8b9de1){_0x4db15b[_0x30a0('0x43')]=_0x8b9de1;return _0x4db15b;})[_0x30a0('0x3f')](respondWithFilteredResult(_0x43b9a3,_0x20c848))[_0x30a0('0x44')](handleError(_0x43b9a3,null));};exports[_0x30a0('0x45')]=function(_0x4c374c,_0x3ac730){var _0x53951d={'raw':![],'where':{'id':_0x4c374c['params']['id']}},_0x4eac03={};_0x4eac03[_0x30a0('0x2e')]=_[_0x30a0('0x46')](db[_0x30a0('0x47')][_0x30a0('0x2a')]);_0x4eac03['query']=_[_0x30a0('0x46')](_0x4c374c[_0x30a0('0x31')]);_0x4eac03[_0x30a0('0x3a')]=_[_0x30a0('0x30')](_0x4eac03[_0x30a0('0x2e')],_0x4eac03[_0x30a0('0x31')]);_0x53951d['attributes']=_[_0x30a0('0x30')](_0x4eac03[_0x30a0('0x2e')],qs[_0x30a0('0x33')](_0x4c374c['query'][_0x30a0('0x33')]));_0x53951d[_0x30a0('0x32')]=_0x53951d[_0x30a0('0x32')][_0x30a0('0x34')]?_0x53951d[_0x30a0('0x32')]:_0x4eac03[_0x30a0('0x2e')];if(_0x4c374c[_0x30a0('0x31')][_0x30a0('0x40')]){_0x53951d[_0x30a0('0x41')]=[{'all':!![]}];}_0x53951d=_[_0x30a0('0x3c')]({},_0x53951d,_0x4c374c['options']);return db['FreshdeskConfiguration'][_0x30a0('0x48')](_0x53951d)['then'](handleEntityNotFound(_0x3ac730,null))['then'](respondWithResult(_0x3ac730,null))[_0x30a0('0x44')](handleError(_0x3ac730,null));};exports[_0x30a0('0x49')]=function(_0x19d31e,_0x37e2fd){return db[_0x30a0('0x47')][_0x30a0('0x49')](_0x19d31e[_0x30a0('0x4a')],{})[_0x30a0('0x3f')](respondWithResult(_0x37e2fd,0xc9))[_0x30a0('0x44')](handleError(_0x37e2fd,null));};exports[_0x30a0('0x24')]=function(_0x1e9d16,_0x4a7f90){if(_0x1e9d16[_0x30a0('0x4a')]['id']){delete _0x1e9d16[_0x30a0('0x4a')]['id'];}return db[_0x30a0('0x47')][_0x30a0('0x48')]({'where':{'id':_0x1e9d16[_0x30a0('0x4b')]['id']}})[_0x30a0('0x3f')](handleEntityNotFound(_0x4a7f90,null))[_0x30a0('0x3f')](saveUpdates(_0x1e9d16[_0x30a0('0x4a')],null))[_0x30a0('0x3f')](respondWithResult(_0x4a7f90,null))[_0x30a0('0x44')](handleError(_0x4a7f90,null));};exports[_0x30a0('0x25')]=function(_0x5b12d9,_0xa37d2){return db['FreshdeskConfiguration'][_0x30a0('0x48')]({'where':{'id':_0x5b12d9[_0x30a0('0x4b')]['id']}})[_0x30a0('0x3f')](handleEntityNotFound(_0xa37d2,null))[_0x30a0('0x3f')](removeEntity(_0xa37d2,null))[_0x30a0('0x44')](handleError(_0xa37d2,null));};exports['getFields']=function(_0x174569,_0x6a661e,_0x941570){var _0x2ce973={};var _0x8fca43={};var _0x2dad26;var _0x496fe3;return db['FreshdeskConfiguration'][_0x30a0('0x4c')]({'where':{'id':_0x174569['params']['id']}})[_0x30a0('0x3f')](handleEntityNotFound(_0x6a661e,null))[_0x30a0('0x3f')](function(_0x881d06){if(_0x881d06){_0x2dad26=_0x881d06;_0x8fca43[_0x30a0('0x2e')]=_[_0x30a0('0x46')](db['FreshdeskField'][_0x30a0('0x2a')]);_0x8fca43[_0x30a0('0x31')]=_[_0x30a0('0x46')](_0x174569[_0x30a0('0x31')]);_0x8fca43[_0x30a0('0x3a')]=_[_0x30a0('0x30')](_0x8fca43[_0x30a0('0x2e')],_0x8fca43['query']);_0x2ce973[_0x30a0('0x32')]=_[_0x30a0('0x30')](_0x8fca43[_0x30a0('0x2e')],qs[_0x30a0('0x33')](_0x174569[_0x30a0('0x31')][_0x30a0('0x33')]));_0x2ce973[_0x30a0('0x32')]=_0x2ce973[_0x30a0('0x32')][_0x30a0('0x34')]?_0x2ce973[_0x30a0('0x32')]:_0x8fca43[_0x30a0('0x2e')];_0x2ce973['order']=qs[_0x30a0('0x38')](_0x174569[_0x30a0('0x31')]['sort']);_0x2ce973['where']=qs['filters'](_[_0x30a0('0x4d')](_0x174569[_0x30a0('0x31')],_0x8fca43[_0x30a0('0x3a')]));if(_0x174569[_0x30a0('0x31')][_0x30a0('0x3b')]){_0x2ce973[_0x30a0('0x39')]=_[_0x30a0('0x3c')](_0x2ce973[_0x30a0('0x39')],{'$or':_[_0x30a0('0x2f')](_0x2ce973[_0x30a0('0x32')],function(_0x11c025){var _0x188859={};_0x188859[_0x11c025]={'$like':'%'+_0x174569[_0x30a0('0x31')][_0x30a0('0x3b')]+'%'};return _0x188859;})});}_0x2ce973=_[_0x30a0('0x3c')]({},_0x2ce973,_0x174569[_0x30a0('0x3e')]);return _0x2dad26[_0x30a0('0x4e')](_0x2ce973);}})['then'](function(_0x39ff7c){if(_0x39ff7c){_0x496fe3=_0x39ff7c[_0x30a0('0x34')];if(!_0x174569[_0x30a0('0x31')]['hasOwnProperty']('nolimit')){_0x2ce973['limit']=qs['limit'](_0x174569[_0x30a0('0x31')][_0x30a0('0x1d')]);_0x2ce973[_0x30a0('0x1f')]=qs[_0x30a0('0x1f')](_0x174569['query'][_0x30a0('0x1f')]);}return _0x2dad26[_0x30a0('0x4e')](_0x2ce973);}})['then'](function(_0x3200ee){if(_0x3200ee){return _0x3200ee?{'count':_0x496fe3,'rows':_0x3200ee}:null;}})['then'](respondWithResult(_0x6a661e,null))[_0x30a0('0x44')](handleError(_0x6a661e,null));};exports['getSubjects']=function(_0x12ff13,_0x203ccf,_0x2d8235){var _0x5a815e={};var _0x33e598={};var _0x271ca8;var _0x15151e;return db[_0x30a0('0x47')]['findOne']({'where':{'id':_0x12ff13[_0x30a0('0x4b')]['id']}})[_0x30a0('0x3f')](handleEntityNotFound(_0x203ccf,null))[_0x30a0('0x3f')](function(_0xb7857){if(_0xb7857){_0x271ca8=_0xb7857;_0x33e598[_0x30a0('0x2e')]=_[_0x30a0('0x46')](db['FreshdeskField'][_0x30a0('0x2a')]);_0x33e598[_0x30a0('0x31')]=_[_0x30a0('0x46')](_0x12ff13['query']);_0x33e598[_0x30a0('0x3a')]=_['intersection'](_0x33e598[_0x30a0('0x2e')],_0x33e598[_0x30a0('0x31')]);_0x5a815e['attributes']=_[_0x30a0('0x30')](_0x33e598[_0x30a0('0x2e')],qs[_0x30a0('0x33')](_0x12ff13[_0x30a0('0x31')]['fields']));_0x5a815e[_0x30a0('0x32')]=_0x5a815e[_0x30a0('0x32')]['length']?_0x5a815e[_0x30a0('0x32')]:_0x33e598[_0x30a0('0x2e')];_0x5a815e[_0x30a0('0x37')]=qs[_0x30a0('0x38')](_0x12ff13[_0x30a0('0x31')][_0x30a0('0x38')]);_0x5a815e[_0x30a0('0x39')]=qs[_0x30a0('0x3a')](_['pick'](_0x12ff13['query'],_0x33e598['filters']));if(_0x12ff13['query'][_0x30a0('0x3b')]){_0x5a815e[_0x30a0('0x39')]=_[_0x30a0('0x3c')](_0x5a815e[_0x30a0('0x39')],{'$or':_[_0x30a0('0x2f')](_0x5a815e['attributes'],function(_0xdca125){var _0x20b1ea={};_0x20b1ea[_0xdca125]={'$like':'%'+_0x12ff13[_0x30a0('0x31')]['filter']+'%'};return _0x20b1ea;})});}_0x5a815e=_['merge']({},_0x5a815e,_0x12ff13['options']);return _0x271ca8['getSubjects'](_0x5a815e);}})[_0x30a0('0x3f')](function(_0x96e035){if(_0x96e035){_0x15151e=_0x96e035['length'];if(!_0x12ff13[_0x30a0('0x31')]['hasOwnProperty'](_0x30a0('0x36'))){_0x5a815e['limit']=qs[_0x30a0('0x1d')](_0x12ff13[_0x30a0('0x31')][_0x30a0('0x1d')]);_0x5a815e['offset']=qs['offset'](_0x12ff13[_0x30a0('0x31')][_0x30a0('0x1f')]);}return _0x271ca8[_0x30a0('0x4f')](_0x5a815e);}})[_0x30a0('0x3f')](function(_0x5522f8){if(_0x5522f8){return _0x5522f8?{'count':_0x15151e,'rows':_0x5522f8}:null;}})[_0x30a0('0x3f')](respondWithResult(_0x203ccf,null))[_0x30a0('0x44')](handleError(_0x203ccf,null));};exports[_0x30a0('0x50')]=function(_0xb06024,_0x296c90,_0x326c4d){var _0x3121ad={};var _0x1be589={};var _0x51e2c6;var _0x444623;return db[_0x30a0('0x47')][_0x30a0('0x4c')]({'where':{'id':_0xb06024['params']['id']}})[_0x30a0('0x3f')](handleEntityNotFound(_0x296c90,null))[_0x30a0('0x3f')](function(_0x3bca54){if(_0x3bca54){_0x51e2c6=_0x3bca54;_0x1be589[_0x30a0('0x2e')]=_['keys'](db[_0x30a0('0x51')]['rawAttributes']);_0x1be589[_0x30a0('0x31')]=_[_0x30a0('0x46')](_0xb06024[_0x30a0('0x31')]);_0x1be589['filters']=_[_0x30a0('0x30')](_0x1be589[_0x30a0('0x2e')],_0x1be589[_0x30a0('0x31')]);_0x3121ad[_0x30a0('0x32')]=_['intersection'](_0x1be589['model'],qs[_0x30a0('0x33')](_0xb06024['query'][_0x30a0('0x33')]));_0x3121ad[_0x30a0('0x32')]=_0x3121ad[_0x30a0('0x32')][_0x30a0('0x34')]?_0x3121ad['attributes']:_0x1be589[_0x30a0('0x2e')];_0x3121ad['order']=qs[_0x30a0('0x38')](_0xb06024[_0x30a0('0x31')]['sort']);_0x3121ad[_0x30a0('0x39')]=qs[_0x30a0('0x3a')](_[_0x30a0('0x4d')](_0xb06024[_0x30a0('0x31')],_0x1be589['filters']));if(_0xb06024[_0x30a0('0x31')][_0x30a0('0x3b')]){_0x3121ad[_0x30a0('0x39')]=_[_0x30a0('0x3c')](_0x3121ad[_0x30a0('0x39')],{'$or':_[_0x30a0('0x2f')](_0x3121ad['attributes'],function(_0x5a9032){var _0x3ed683={};_0x3ed683[_0x5a9032]={'$like':'%'+_0xb06024['query'][_0x30a0('0x3b')]+'%'};return _0x3ed683;})});}_0x3121ad=_[_0x30a0('0x3c')]({},_0x3121ad,_0xb06024[_0x30a0('0x3e')]);return _0x51e2c6[_0x30a0('0x50')](_0x3121ad);}})[_0x30a0('0x3f')](function(_0x2a7460){if(_0x2a7460){_0x444623=_0x2a7460[_0x30a0('0x34')];if(!_0xb06024[_0x30a0('0x31')]['hasOwnProperty'](_0x30a0('0x36'))){_0x3121ad[_0x30a0('0x1d')]=qs[_0x30a0('0x1d')](_0xb06024[_0x30a0('0x31')][_0x30a0('0x1d')]);_0x3121ad[_0x30a0('0x1f')]=qs[_0x30a0('0x1f')](_0xb06024['query'][_0x30a0('0x1f')]);}return _0x51e2c6['getDescriptions'](_0x3121ad);}})[_0x30a0('0x3f')](function(_0x4ef112){if(_0x4ef112){return _0x4ef112?{'count':_0x444623,'rows':_0x4ef112}:null;}})[_0x30a0('0x3f')](respondWithResult(_0x296c90,null))[_0x30a0('0x44')](handleError(_0x296c90,null));};exports[_0x30a0('0x52')]=function(_0xbbc5f,_0x168f62,_0x2bf91c){var _0x44f17f={};var _0x31a4f9={};var _0xbc33ac;var _0x1cbfc7;return db[_0x30a0('0x47')][_0x30a0('0x4c')]({'where':{'id':_0xbbc5f[_0x30a0('0x4b')]['id']}})['then'](handleEntityNotFound(_0x168f62,null))[_0x30a0('0x3f')](function(_0x23d81b){if(_0x23d81b){_0xbc33ac=_0x23d81b;_0x31a4f9[_0x30a0('0x2e')]=_[_0x30a0('0x46')](db[_0x30a0('0x53')][_0x30a0('0x2a')]);_0x31a4f9[_0x30a0('0x31')]=_[_0x30a0('0x46')](_0xbbc5f[_0x30a0('0x31')]);_0x31a4f9[_0x30a0('0x3a')]=_[_0x30a0('0x30')](_0x31a4f9[_0x30a0('0x2e')],_0x31a4f9[_0x30a0('0x31')]);_0x44f17f['attributes']=_[_0x30a0('0x30')](_0x31a4f9[_0x30a0('0x2e')],qs[_0x30a0('0x33')](_0xbbc5f['query'][_0x30a0('0x33')]));_0x44f17f['attributes']=_0x44f17f['attributes'][_0x30a0('0x34')]?_0x44f17f[_0x30a0('0x32')]:_0x31a4f9[_0x30a0('0x2e')];_0x44f17f[_0x30a0('0x37')]=qs[_0x30a0('0x38')](_0xbbc5f[_0x30a0('0x31')][_0x30a0('0x38')]);_0x44f17f['where']=qs[_0x30a0('0x3a')](_[_0x30a0('0x4d')](_0xbbc5f[_0x30a0('0x31')],_0x31a4f9[_0x30a0('0x3a')]));if(_0xbbc5f[_0x30a0('0x31')][_0x30a0('0x3b')]){_0x44f17f[_0x30a0('0x39')]=_[_0x30a0('0x3c')](_0x44f17f[_0x30a0('0x39')],{'$or':_[_0x30a0('0x2f')](_0x44f17f['attributes'],function(_0x24773c){var _0x59e928={};_0x59e928[_0x24773c]={'$like':'%'+_0xbbc5f[_0x30a0('0x31')][_0x30a0('0x3b')]+'%'};return _0x59e928;})});}_0x44f17f=_[_0x30a0('0x3c')]({},_0x44f17f,_0xbbc5f[_0x30a0('0x3e')]);return _0xbc33ac[_0x30a0('0x52')](_0x44f17f);}})['then'](function(_0x32cfd1){if(_0x32cfd1){_0x1cbfc7=_0x32cfd1[_0x30a0('0x34')];if(!_0xbbc5f['query'][_0x30a0('0x35')](_0x30a0('0x36'))){_0x44f17f['limit']=qs[_0x30a0('0x1d')](_0xbbc5f['query'][_0x30a0('0x1d')]);_0x44f17f['offset']=qs[_0x30a0('0x1f')](_0xbbc5f[_0x30a0('0x31')]['offset']);}return _0xbc33ac[_0x30a0('0x52')](_0x44f17f);}})[_0x30a0('0x3f')](function(_0x11a5dc){if(_0x11a5dc){return _0x11a5dc?{'count':_0x1cbfc7,'rows':_0x11a5dc}:null;}})[_0x30a0('0x3f')](respondWithResult(_0x168f62,null))[_0x30a0('0x44')](handleError(_0x168f62,null));};exports[_0x30a0('0x54')]=function(_0x30fae9,_0x5ab45f,_0x28d975){if(_0x30fae9[_0x30a0('0x4a')]['id']){delete _0x30fae9['body']['id'];}return db[_0x30a0('0x47')][_0x30a0('0x4c')]({'where':{'id':_0x30fae9['params']['id']}})[_0x30a0('0x3f')](handleEntityNotFound(_0x5ab45f,null))[_0x30a0('0x3f')](function(_0x5e704b){if(_0x5e704b){return _0x5e704b[_0x30a0('0x54')](_0x30fae9[_0x30a0('0x4a')][_0x30a0('0x55')]||[]);}return null;})[_0x30a0('0x3f')](respondWithResult(_0x5ab45f,null))['catch'](handleError(_0x5ab45f,null));};
\ No newline at end of file
index 05baa3f..44d7536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2208=['exports','define','FreshdeskConfiguration','int_freshdesk_configurations','util','../../config/logger','api','path','rimraf','./intFreshdeskConfiguration.attributes'];(function(_0xa1c86a,_0x2af5f3){var _0x269584=function(_0x370799){while(--_0x370799){_0xa1c86a['push'](_0xa1c86a['shift']());}};_0x269584(++_0x2af5f3);}(_0x2208,0x1d0));var _0x8220=function(_0xd9efd3,_0x37e049){_0xd9efd3=_0xd9efd3-0x0;var _0x3feb1c=_0x2208[_0xd9efd3];return _0x3feb1c;};'use strict';var _=require('lodash');var util=require(_0x8220('0x0'));var logger=require(_0x8220('0x1'))(_0x8220('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8220('0x3'));var rimraf=require(_0x8220('0x4'));var config=require('../../config/environment');var attributes=require(_0x8220('0x5'));module[_0x8220('0x6')]=function(_0x319a12,_0x32398d){return _0x319a12[_0x8220('0x7')](_0x8220('0x8'),attributes,{'tableName':_0x8220('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x32ed=['../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x35e785,_0x503f27){var _0xd0e538=function(_0x30ad2f){while(--_0x30ad2f){_0x35e785['push'](_0x35e785['shift']());}};_0xd0e538(++_0x503f27);}(_0x32ed,0x68));var _0xd32e=function(_0x143727,_0x775f88){_0x143727=_0x143727-0x0;var _0x4753e5=_0x32ed[_0x143727];return _0x4753e5;};'use strict';var _=require('lodash');var util=require(_0xd32e('0x0'));var logger=require(_0xd32e('0x1'))(_0xd32e('0x2'));var moment=require(_0xd32e('0x3'));var BPromise=require(_0xd32e('0x4'));var rp=require(_0xd32e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xd32e('0x6'));var attributes=require(_0xd32e('0x7'));module[_0xd32e('0x8')]=function(_0x2b97eb,_0x15a987){return _0x2b97eb[_0xd32e('0x9')](_0xd32e('0xa'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 504d20e..f6f0f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38ab=['code','message','result','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x440b80,_0x55989f){var _0x40b967=function(_0x221ad3){while(--_0x221ad3){_0x440b80['push'](_0x440b80['shift']());}};_0x40b967(++_0x55989f);}(_0x38ab,0xb7));var _0xb38a=function(_0x687ddc,_0x2092fa){_0x687ddc=_0x687ddc-0x0;var _0x441991=_0x38ab[_0x687ddc];return _0x441991;};'use strict';var _=require(_0xb38a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb38a('0x1'));var rs=require(_0xb38a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb38a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xb38a('0x4'))('rpc');var config=require(_0xb38a('0x5'));var jayson=require(_0xb38a('0x6'));var client=jayson[_0xb38a('0x7')][_0xb38a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5cb6df,_0x1ee873,_0x2800ac){return new BPromise(function(_0x76631,_0x3ce07c){return client[_0xb38a('0x9')](_0x5cb6df,_0x2800ac)[_0xb38a('0xa')](function(_0x2ce9bb){logger[_0xb38a('0xb')](_0xb38a('0xc'),_0x1ee873,_0xb38a('0xd'));logger[_0xb38a('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x1ee873,_0xb38a('0xd'),JSON[_0xb38a('0xf')](_0x2ce9bb));if(_0x2ce9bb[_0xb38a('0x10')]){if(_0x2ce9bb[_0xb38a('0x10')][_0xb38a('0x11')]===0x1f4){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x1ee873,_0x2ce9bb['error'][_0xb38a('0x12')]);return _0x3ce07c(_0x2ce9bb[_0xb38a('0x10')][_0xb38a('0x12')]);}logger['error'](_0xb38a('0xc'),_0x1ee873,_0x2ce9bb[_0xb38a('0x10')]['message']);return _0x76631(_0x2ce9bb[_0xb38a('0x10')]['message']);}else{logger['info'](_0xb38a('0xc'),_0x1ee873,_0xb38a('0xd'));_0x76631(_0x2ce9bb[_0xb38a('0x13')]['message']);}})['catch'](function(_0xe9f9cd){logger[_0xb38a('0x10')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1ee873,_0xe9f9cd);_0x3ce07c(_0xe9f9cd);});});}
\ No newline at end of file
+var _0x5424=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring'];(function(_0x64df77,_0x10e33d){var _0x2d8ce7=function(_0x5016ba){while(--_0x5016ba){_0x64df77['push'](_0x64df77['shift']());}};_0x2d8ce7(++_0x10e33d);}(_0x5424,0xa4));var _0x4542=function(_0x3805e9,_0x33a4ed){_0x3805e9=_0x3805e9-0x0;var _0x207e20=_0x5424[_0x3805e9];return _0x207e20;};'use strict';var _=require(_0x4542('0x0'));var util=require(_0x4542('0x1'));var moment=require(_0x4542('0x2'));var BPromise=require('bluebird');var rs=require(_0x4542('0x3'));var fs=require('fs');var Redis=require(_0x4542('0x4'));var db=require(_0x4542('0x5'))['db'];var utils=require(_0x4542('0x6'));var logger=require(_0x4542('0x7'))(_0x4542('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4542('0x9')][_0x4542('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41a3be,_0x36ebea,_0x1ebb01){return new BPromise(function(_0x329c6b,_0x57e349){return client[_0x4542('0xb')](_0x41a3be,_0x1ebb01)[_0x4542('0xc')](function(_0x1f66ba){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x36ebea,'request\x20sent');logger[_0x4542('0xd')](_0x4542('0xe'),_0x36ebea,_0x4542('0xf'),JSON[_0x4542('0x10')](_0x1f66ba));if(_0x1f66ba[_0x4542('0x11')]){if(_0x1f66ba['error'][_0x4542('0x12')]===0x1f4){logger[_0x4542('0x11')](_0x4542('0x13'),_0x36ebea,_0x1f66ba[_0x4542('0x11')][_0x4542('0x14')]);return _0x57e349(_0x1f66ba[_0x4542('0x11')]['message']);}logger[_0x4542('0x11')](_0x4542('0x13'),_0x36ebea,_0x1f66ba[_0x4542('0x11')][_0x4542('0x14')]);return _0x329c6b(_0x1f66ba['error']['message']);}else{logger[_0x4542('0x15')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x36ebea,_0x4542('0xf'));_0x329c6b(_0x1f66ba[_0x4542('0x16')][_0x4542('0x14')]);}})[_0x4542('0x17')](function(_0x1ee7fc){logger[_0x4542('0x11')](_0x4542('0x13'),_0x36ebea,_0x1ee7fc);_0x57e349(_0x1ee7fc);});});}
\ No newline at end of file
index ec3c100..ca7ac0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5252=['index','/:id','show','post','create','put','update','delete','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','get','isAuthenticated'];(function(_0x554de9,_0x4b1bd2){var _0x2bcb4f=function(_0x52557f){while(--_0x52557f){_0x554de9['push'](_0x554de9['shift']());}};_0x2bcb4f(++_0x4b1bd2);}(_0x5252,0x13a));var _0x2525=function(_0x5f3d7a,_0x2c38b7){_0x5f3d7a=_0x5f3d7a-0x0;var _0x4eaf3e=_0x5252[_0x5f3d7a];return _0x4eaf3e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2525('0x0'));var timeout=require(_0x2525('0x1'));var express=require(_0x2525('0x2'));var router=express[_0x2525('0x3')]();var fs_extra=require(_0x2525('0x4'));var auth=require(_0x2525('0x5'));var interaction=require(_0x2525('0x6'));var config=require('../../config/environment');var controller=require(_0x2525('0x7'));router[_0x2525('0x8')]('/',auth[_0x2525('0x9')](),controller[_0x2525('0xa')]);router['get'](_0x2525('0xb'),auth[_0x2525('0x9')](),controller[_0x2525('0xc')]);router[_0x2525('0xd')]('/',auth[_0x2525('0x9')](),controller[_0x2525('0xe')]);router[_0x2525('0xf')](_0x2525('0xb'),auth['isAuthenticated'](),controller[_0x2525('0x10')]);router[_0x2525('0x11')](_0x2525('0xb'),auth[_0x2525('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1f1d=['post','create','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id'];(function(_0x12f591,_0x2a1f03){var _0x4e51e1=function(_0x4a4486){while(--_0x4a4486){_0x12f591['push'](_0x12f591['shift']());}};_0x4e51e1(++_0x2a1f03);}(_0x1f1d,0x1e5));var _0xd1f1=function(_0xcf7b69,_0x273a94){_0xcf7b69=_0xcf7b69-0x0;var _0x42d79e=_0x1f1d[_0xcf7b69];return _0x42d79e;};'use strict';var multer=require(_0xd1f1('0x0'));var util=require(_0xd1f1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd1f1('0x2'));var router=express['Router']();var fs_extra=require(_0xd1f1('0x3'));var auth=require(_0xd1f1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd1f1('0x5'));var controller=require(_0xd1f1('0x6'));router[_0xd1f1('0x7')]('/',auth[_0xd1f1('0x8')](),controller[_0xd1f1('0x9')]);router[_0xd1f1('0x7')](_0xd1f1('0xa'),auth[_0xd1f1('0x8')](),controller['show']);router[_0xd1f1('0xb')]('/',auth[_0xd1f1('0x8')](),controller[_0xd1f1('0xc')]);router['put'](_0xd1f1('0xa'),auth[_0xd1f1('0x8')](),controller['update']);router[_0xd1f1('0xd')](_0xd1f1('0xa'),auth['isAuthenticated'](),controller[_0xd1f1('0xe')]);module[_0xd1f1('0xf')]=router;
\ No newline at end of file
index 0018fb1..7c54c94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c05=['STRING','customVariable','BOOLEAN','sequelize','exports','ENUM','variable','string'];(function(_0x557fd2,_0x2c0a7a){var _0x1b54a2=function(_0x2e439b){while(--_0x2e439b){_0x557fd2['push'](_0x557fd2['shift']());}};_0x1b54a2(++_0x2c0a7a);}(_0x6c05,0x14b));var _0x56c0=function(_0x1e3b32,_0x24c553){_0x1e3b32=_0x1e3b32-0x0;var _0x1ad3ab=_0x6c05[_0x1e3b32];return _0x1ad3ab;};'use strict';var Sequelize=require(_0x56c0('0x0'));module[_0x56c0('0x1')]={'type':{'type':Sequelize[_0x56c0('0x2')]('string',_0x56c0('0x3'),'customVariable','keyValue','picklist'),'defaultValue':_0x56c0('0x4')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x56c0('0x5')]},'keyType':{'type':Sequelize[_0x56c0('0x2')](_0x56c0('0x4'),_0x56c0('0x3'),_0x56c0('0x6'))},'keyContent':{'type':Sequelize[_0x56c0('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x56c0('0x5')]},'customField':{'type':Sequelize[_0x56c0('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x72dd=['BOOLEAN','exports','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x111daf,_0x1607db){var _0x48a287=function(_0x24b0cb){while(--_0x24b0cb){_0x111daf['push'](_0x111daf['shift']());}};_0x48a287(++_0x1607db);}(_0x72dd,0x141));var _0xd72d=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x72dd[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require('sequelize');module[_0xd72d('0x0')]={'type':{'type':Sequelize[_0xd72d('0x1')](_0xd72d('0x2'),_0xd72d('0x3'),'customVariable',_0xd72d('0x4'),_0xd72d('0x5')),'defaultValue':_0xd72d('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xd72d('0x1')](_0xd72d('0x2'),_0xd72d('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xd72d('0x6')]},'idField':{'type':Sequelize[_0xd72d('0x6')]},'nameField':{'type':Sequelize[_0xd72d('0x6')]},'customField':{'type':Sequelize[_0xd72d('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd72d('0x6')]}};
\ No newline at end of file
index f31ab24..86b5b07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd547=['offset','undefined','limit','count','status','set','Content-Range','reject','save','update','then','error','send','index','map','FreshdeskField','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','destroy','zip-dir','fast-json-patch','request-promise','moment','util','sox','ejs','fs-extra','lodash','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','sendStatus','end','json'];(function(_0x2f601c,_0x5a94a2){var _0x50a269=function(_0x1c4680){while(--_0x1c4680){_0x2f601c['push'](_0x2f601c['shift']());}};_0x50a269(++_0x5a94a2);}(_0xd547,0x1c1));var _0x7d54=function(_0x2881e2,_0x341293){_0x2881e2=_0x2881e2-0x0;var _0x5c1e1f=_0xd547[_0x2881e2];return _0x5c1e1f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7d54('0x0'));var jsonpatch=require(_0x7d54('0x1'));var rp=require(_0x7d54('0x2'));var moment=require(_0x7d54('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7d54('0x4'));var path=require('path');var sox=require(_0x7d54('0x5'));var csv=require('to-csv');var ejs=require(_0x7d54('0x6'));var fs=require('fs');var fs_extra=require(_0x7d54('0x7'));var _=require(_0x7d54('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7d54('0x9'));var toCsv=require(_0x7d54('0xa'));var querystring=require('querystring');var Papa=require(_0x7d54('0xb'));var Redis=require('ioredis');var authService=require(_0x7d54('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x7d54('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7d54('0xe'))(_0x7d54('0xf'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7d54('0x10'))['db'];function respondWithStatusCode(_0x3e8072,_0x428430){_0x428430=_0x428430||0xcc;return function(_0x4be6c5){if(_0x4be6c5){return _0x3e8072[_0x7d54('0x11')](_0x428430);}return _0x3e8072['status'](_0x428430)[_0x7d54('0x12')]();};}function respondWithResult(_0x5e46ee,_0x11c94a){_0x11c94a=_0x11c94a||0xc8;return function(_0x43718a){if(_0x43718a){return _0x5e46ee['status'](_0x11c94a)[_0x7d54('0x13')](_0x43718a);}};}function respondWithFilteredResult(_0x208b3c,_0x25b69c){return function(_0x5a6bec){if(_0x5a6bec){var _0x2b1b0f=typeof _0x25b69c[_0x7d54('0x14')]===_0x7d54('0x15')&&typeof _0x25b69c[_0x7d54('0x16')]===_0x7d54('0x15');var _0x22f27c=_0x5a6bec['count'];var _0x81971b=_0x2b1b0f?0x0:_0x25b69c[_0x7d54('0x14')];var _0x57e789=_0x2b1b0f?_0x5a6bec[_0x7d54('0x17')]:_0x25b69c['offset']+_0x25b69c['limit'];var _0x46a719;if(_0x57e789>=_0x22f27c){_0x57e789=_0x22f27c;_0x46a719=0xc8;}else{_0x46a719=0xce;}_0x208b3c[_0x7d54('0x18')](_0x46a719);return _0x208b3c[_0x7d54('0x19')](_0x7d54('0x1a'),_0x81971b+'-'+_0x57e789+'/'+_0x22f27c)['json'](_0x5a6bec);}return null;};}function patchUpdates(_0x23ea55){return function(_0x2b0770){try{jsonpatch['apply'](_0x2b0770,_0x23ea55,!![]);}catch(_0x22718f){return BPromise[_0x7d54('0x1b')](_0x22718f);}return _0x2b0770[_0x7d54('0x1c')]();};}function saveUpdates(_0x6cc88b,_0x715a4e){return function(_0x4fe2cb){if(_0x4fe2cb){return _0x4fe2cb[_0x7d54('0x1d')](_0x6cc88b)['then'](function(_0x589f93){return _0x589f93;});}return null;};}function removeEntity(_0x5e0c4b,_0x2967b0){return function(_0x299f6e){if(_0x299f6e){return _0x299f6e['destroy']()[_0x7d54('0x1e')](function(){_0x5e0c4b[_0x7d54('0x18')](0xcc)[_0x7d54('0x12')]();});}};}function handleEntityNotFound(_0x19520a,_0x3b611f){return function(_0x6d0375){if(!_0x6d0375){_0x19520a[_0x7d54('0x11')](0x194);}return _0x6d0375;};}function handleError(_0x372f14,_0x509b8f){_0x509b8f=_0x509b8f||0x1f4;return function(_0x2818b6){logger[_0x7d54('0x1f')](_0x2818b6['stack']);if(_0x2818b6['name']){delete _0x2818b6['name'];}_0x372f14['status'](_0x509b8f)[_0x7d54('0x20')](_0x2818b6);};}exports[_0x7d54('0x21')]=function(_0x57e2ce,_0x32df83){var _0x252017={},_0x4a8488={},_0x472032={'count':0x0,'rows':[]};var _0x425a47=_[_0x7d54('0x22')](db[_0x7d54('0x23')][_0x7d54('0x24')],function(_0x2f1052){return{'name':_0x2f1052[_0x7d54('0x25')],'type':_0x2f1052[_0x7d54('0x26')]['key']};});_0x4a8488[_0x7d54('0x27')]=_['map'](_0x425a47,'name');_0x4a8488[_0x7d54('0x28')]=_[_0x7d54('0x29')](_0x57e2ce['query']);_0x4a8488[_0x7d54('0x2a')]=_[_0x7d54('0x2b')](_0x4a8488[_0x7d54('0x27')],_0x4a8488[_0x7d54('0x28')]);_0x252017[_0x7d54('0x2c')]=_[_0x7d54('0x2b')](_0x4a8488[_0x7d54('0x27')],qs['fields'](_0x57e2ce[_0x7d54('0x28')][_0x7d54('0x2d')]));_0x252017['attributes']=_0x252017[_0x7d54('0x2c')][_0x7d54('0x2e')]?_0x252017[_0x7d54('0x2c')]:_0x4a8488['model'];if(!_0x57e2ce[_0x7d54('0x28')][_0x7d54('0x2f')](_0x7d54('0x30'))){_0x252017[_0x7d54('0x16')]=qs[_0x7d54('0x16')](_0x57e2ce['query'][_0x7d54('0x16')]);_0x252017[_0x7d54('0x14')]=qs['offset'](_0x57e2ce[_0x7d54('0x28')][_0x7d54('0x14')]);}_0x252017[_0x7d54('0x31')]=qs[_0x7d54('0x32')](_0x57e2ce[_0x7d54('0x28')][_0x7d54('0x32')]);_0x252017[_0x7d54('0x33')]=qs[_0x7d54('0x2a')](_[_0x7d54('0x34')](_0x57e2ce[_0x7d54('0x28')],_0x4a8488[_0x7d54('0x2a')]),_0x425a47);if(_0x57e2ce[_0x7d54('0x28')]['filter']){_0x252017['where']=_[_0x7d54('0x35')](_0x252017[_0x7d54('0x33')],{'$or':_[_0x7d54('0x22')](_0x425a47,function(_0x624b65){if(_0x624b65['type']!=='VIRTUAL'){var _0x114531={};_0x114531[_0x624b65['name']]={'$like':'%'+_0x57e2ce[_0x7d54('0x28')][_0x7d54('0x36')]+'%'};return _0x114531;}})});}_0x252017=_['merge']({},_0x252017,_0x57e2ce['options']);var _0x20c2ed={'where':_0x252017[_0x7d54('0x33')]};return db['FreshdeskField'][_0x7d54('0x17')](_0x20c2ed)[_0x7d54('0x1e')](function(_0x5adae8){_0x472032['count']=_0x5adae8;if(_0x57e2ce[_0x7d54('0x28')][_0x7d54('0x37')]){_0x252017[_0x7d54('0x38')]=[{'all':!![]}];}return db[_0x7d54('0x23')][_0x7d54('0x39')](_0x252017);})[_0x7d54('0x1e')](function(_0x17f951){_0x472032[_0x7d54('0x3a')]=_0x17f951;return _0x472032;})[_0x7d54('0x1e')](respondWithFilteredResult(_0x32df83,_0x252017))[_0x7d54('0x3b')](handleError(_0x32df83,null));};exports[_0x7d54('0x3c')]=function(_0x543096,_0x536946){var _0x395b0d={'raw':!![],'where':{'id':_0x543096[_0x7d54('0x3d')]['id']}},_0xd8cefd={};_0xd8cefd[_0x7d54('0x27')]=_[_0x7d54('0x29')](db[_0x7d54('0x23')][_0x7d54('0x24')]);_0xd8cefd['query']=_[_0x7d54('0x29')](_0x543096['query']);_0xd8cefd['filters']=_[_0x7d54('0x2b')](_0xd8cefd[_0x7d54('0x27')],_0xd8cefd[_0x7d54('0x28')]);_0x395b0d[_0x7d54('0x2c')]=_[_0x7d54('0x2b')](_0xd8cefd['model'],qs[_0x7d54('0x2d')](_0x543096[_0x7d54('0x28')]['fields']));_0x395b0d[_0x7d54('0x2c')]=_0x395b0d[_0x7d54('0x2c')][_0x7d54('0x2e')]?_0x395b0d[_0x7d54('0x2c')]:_0xd8cefd[_0x7d54('0x27')];if(_0x543096[_0x7d54('0x28')]['includeAll']){_0x395b0d[_0x7d54('0x38')]=[{'all':!![]}];}_0x395b0d=_[_0x7d54('0x35')]({},_0x395b0d,_0x543096[_0x7d54('0x3e')]);return db[_0x7d54('0x23')][_0x7d54('0x3f')](_0x395b0d)[_0x7d54('0x1e')](handleEntityNotFound(_0x536946,null))[_0x7d54('0x1e')](respondWithResult(_0x536946,null))['catch'](handleError(_0x536946,null));};exports[_0x7d54('0x40')]=function(_0x2ea2d0,_0x2cf5f0){return db[_0x7d54('0x23')][_0x7d54('0x40')](_0x2ea2d0['body'],{})[_0x7d54('0x1e')](respondWithResult(_0x2cf5f0,0xc9))['catch'](handleError(_0x2cf5f0,null));};exports[_0x7d54('0x1d')]=function(_0x560b42,_0x5b6449){if(_0x560b42[_0x7d54('0x41')]['id']){delete _0x560b42['body']['id'];}return db['FreshdeskField'][_0x7d54('0x3f')]({'where':{'id':_0x560b42[_0x7d54('0x3d')]['id']}})['then'](handleEntityNotFound(_0x5b6449,null))[_0x7d54('0x1e')](saveUpdates(_0x560b42[_0x7d54('0x41')],null))[_0x7d54('0x1e')](respondWithResult(_0x5b6449,null))['catch'](handleError(_0x5b6449,null));};exports[_0x7d54('0x42')]=function(_0x57bb14,_0x16e23f){return db[_0x7d54('0x23')][_0x7d54('0x3f')]({'where':{'id':_0x57bb14[_0x7d54('0x3d')]['id']}})['then'](handleEntityNotFound(_0x16e23f,null))['then'](removeEntity(_0x16e23f,null))[_0x7d54('0x3b')](handleError(_0x16e23f,null));};
\ No newline at end of file
+var _0x9c5e=['body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','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','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','FreshdeskField','includeAll','include','findAll','rows','catch','show','keys','find','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x5b4a98,_0x376257){_0x5b4a98=_0x5b4a98-0x0;var _0x222b95=_0x9c5e[_0x5b4a98];return _0x222b95;};'use strict';var emlformat=require(_0xe9c5('0x0'));var rimraf=require(_0xe9c5('0x1'));var zipdir=require(_0xe9c5('0x2'));var jsonpatch=require(_0xe9c5('0x3'));var rp=require(_0xe9c5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe9c5('0x5'));var path=require(_0xe9c5('0x6'));var sox=require('sox');var csv=require(_0xe9c5('0x7'));var ejs=require(_0xe9c5('0x8'));var fs=require('fs');var fs_extra=require(_0xe9c5('0x9'));var _=require(_0xe9c5('0xa'));var squel=require('squel');var crypto=require(_0xe9c5('0xb'));var jsforce=require(_0xe9c5('0xc'));var deskjs=require(_0xe9c5('0xd'));var toCsv=require(_0xe9c5('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe9c5('0xe'));var authService=require(_0xe9c5('0xf'));var qs=require(_0xe9c5('0x10'));var as=require(_0xe9c5('0x11'));var hardwareService=require(_0xe9c5('0x12'));var logger=require(_0xe9c5('0x13'))(_0xe9c5('0x14'));var utils=require(_0xe9c5('0x15'));var config=require(_0xe9c5('0x16'));var licenseUtil=require(_0xe9c5('0x17'));var db=require(_0xe9c5('0x18'))['db'];function respondWithStatusCode(_0x27f3e1,_0x471401){_0x471401=_0x471401||0xcc;return function(_0x25ff11){if(_0x25ff11){return _0x27f3e1[_0xe9c5('0x19')](_0x471401);}return _0x27f3e1[_0xe9c5('0x1a')](_0x471401)['end']();};}function respondWithResult(_0x3cce36,_0xe98b11){_0xe98b11=_0xe98b11||0xc8;return function(_0x5eb474){if(_0x5eb474){return _0x3cce36[_0xe9c5('0x1a')](_0xe98b11)[_0xe9c5('0x1b')](_0x5eb474);}};}function respondWithFilteredResult(_0x232584,_0x5d8236){return function(_0x163253){if(_0x163253){var _0x14eb41=typeof _0x5d8236['offset']===_0xe9c5('0x1c')&&typeof _0x5d8236[_0xe9c5('0x1d')]===_0xe9c5('0x1c');var _0x154390=_0x163253[_0xe9c5('0x1e')];var _0x4d9c7d=_0x14eb41?0x0:_0x5d8236[_0xe9c5('0x1f')];var _0x1cecae=_0x14eb41?_0x163253[_0xe9c5('0x1e')]:_0x5d8236[_0xe9c5('0x1f')]+_0x5d8236['limit'];var _0x26492a;if(_0x1cecae>=_0x154390){_0x1cecae=_0x154390;_0x26492a=0xc8;}else{_0x26492a=0xce;}_0x232584[_0xe9c5('0x1a')](_0x26492a);return _0x232584[_0xe9c5('0x20')](_0xe9c5('0x21'),_0x4d9c7d+'-'+_0x1cecae+'/'+_0x154390)[_0xe9c5('0x1b')](_0x163253);}return null;};}function patchUpdates(_0x58fbad){return function(_0x51e860){try{jsonpatch[_0xe9c5('0x22')](_0x51e860,_0x58fbad,!![]);}catch(_0x57818d){return BPromise[_0xe9c5('0x23')](_0x57818d);}return _0x51e860[_0xe9c5('0x24')]();};}function saveUpdates(_0x21b02a,_0x4d16bc){return function(_0x5750ff){if(_0x5750ff){return _0x5750ff[_0xe9c5('0x25')](_0x21b02a)[_0xe9c5('0x26')](function(_0x37fb90){return _0x37fb90;});}return null;};}function removeEntity(_0x189a13,_0x34a7c8){return function(_0x245161){if(_0x245161){return _0x245161[_0xe9c5('0x27')]()[_0xe9c5('0x26')](function(){_0x189a13[_0xe9c5('0x1a')](0xcc)[_0xe9c5('0x28')]();});}};}function handleEntityNotFound(_0x5a3caa,_0x5c8bb7){return function(_0x250e1c){if(!_0x250e1c){_0x5a3caa[_0xe9c5('0x19')](0x194);}return _0x250e1c;};}function handleError(_0x298dca,_0x3bf679){_0x3bf679=_0x3bf679||0x1f4;return function(_0x33fe71){logger[_0xe9c5('0x29')](_0x33fe71['stack']);if(_0x33fe71[_0xe9c5('0x2a')]){delete _0x33fe71['name'];}_0x298dca[_0xe9c5('0x1a')](_0x3bf679)['send'](_0x33fe71);};}exports[_0xe9c5('0x2b')]=function(_0x2112a6,_0x52d008){var _0x36d145={},_0x46d253={},_0x334f5a={'count':0x0,'rows':[]};var _0x37cfa5=_[_0xe9c5('0x2c')](db['FreshdeskField'][_0xe9c5('0x2d')],function(_0x4fcabd){return{'name':_0x4fcabd[_0xe9c5('0x2e')],'type':_0x4fcabd['type'][_0xe9c5('0x2f')]};});_0x46d253[_0xe9c5('0x30')]=_[_0xe9c5('0x2c')](_0x37cfa5,_0xe9c5('0x2a'));_0x46d253[_0xe9c5('0x31')]=_['keys'](_0x2112a6[_0xe9c5('0x31')]);_0x46d253[_0xe9c5('0x32')]=_[_0xe9c5('0x33')](_0x46d253[_0xe9c5('0x30')],_0x46d253[_0xe9c5('0x31')]);_0x36d145['attributes']=_['intersection'](_0x46d253[_0xe9c5('0x30')],qs[_0xe9c5('0x34')](_0x2112a6[_0xe9c5('0x31')][_0xe9c5('0x34')]));_0x36d145[_0xe9c5('0x35')]=_0x36d145[_0xe9c5('0x35')][_0xe9c5('0x36')]?_0x36d145[_0xe9c5('0x35')]:_0x46d253['model'];if(!_0x2112a6[_0xe9c5('0x31')][_0xe9c5('0x37')]('nolimit')){_0x36d145[_0xe9c5('0x1d')]=qs['limit'](_0x2112a6[_0xe9c5('0x31')][_0xe9c5('0x1d')]);_0x36d145[_0xe9c5('0x1f')]=qs[_0xe9c5('0x1f')](_0x2112a6[_0xe9c5('0x31')][_0xe9c5('0x1f')]);}_0x36d145[_0xe9c5('0x38')]=qs[_0xe9c5('0x39')](_0x2112a6[_0xe9c5('0x31')][_0xe9c5('0x39')]);_0x36d145[_0xe9c5('0x3a')]=qs[_0xe9c5('0x32')](_[_0xe9c5('0x3b')](_0x2112a6[_0xe9c5('0x31')],_0x46d253[_0xe9c5('0x32')]),_0x37cfa5);if(_0x2112a6[_0xe9c5('0x31')][_0xe9c5('0x3c')]){_0x36d145[_0xe9c5('0x3a')]=_[_0xe9c5('0x3d')](_0x36d145['where'],{'$or':_[_0xe9c5('0x2c')](_0x37cfa5,function(_0x2e3f15){if(_0x2e3f15[_0xe9c5('0x3e')]!==_0xe9c5('0x3f')){var _0x204b53={};_0x204b53[_0x2e3f15[_0xe9c5('0x2a')]]={'$like':'%'+_0x2112a6['query'][_0xe9c5('0x3c')]+'%'};return _0x204b53;}})});}_0x36d145=_[_0xe9c5('0x3d')]({},_0x36d145,_0x2112a6[_0xe9c5('0x40')]);var _0x480b83={'where':_0x36d145[_0xe9c5('0x3a')]};return db[_0xe9c5('0x41')][_0xe9c5('0x1e')](_0x480b83)[_0xe9c5('0x26')](function(_0x2c1615){_0x334f5a[_0xe9c5('0x1e')]=_0x2c1615;if(_0x2112a6[_0xe9c5('0x31')][_0xe9c5('0x42')]){_0x36d145[_0xe9c5('0x43')]=[{'all':!![]}];}return db[_0xe9c5('0x41')][_0xe9c5('0x44')](_0x36d145);})['then'](function(_0x51dd18){_0x334f5a[_0xe9c5('0x45')]=_0x51dd18;return _0x334f5a;})[_0xe9c5('0x26')](respondWithFilteredResult(_0x52d008,_0x36d145))[_0xe9c5('0x46')](handleError(_0x52d008,null));};exports[_0xe9c5('0x47')]=function(_0x4ca4b0,_0x4a3fc5){var _0x382405={'raw':!![],'where':{'id':_0x4ca4b0['params']['id']}},_0x144e85={};_0x144e85[_0xe9c5('0x30')]=_['keys'](db['FreshdeskField']['rawAttributes']);_0x144e85[_0xe9c5('0x31')]=_[_0xe9c5('0x48')](_0x4ca4b0[_0xe9c5('0x31')]);_0x144e85[_0xe9c5('0x32')]=_['intersection'](_0x144e85[_0xe9c5('0x30')],_0x144e85[_0xe9c5('0x31')]);_0x382405[_0xe9c5('0x35')]=_[_0xe9c5('0x33')](_0x144e85[_0xe9c5('0x30')],qs[_0xe9c5('0x34')](_0x4ca4b0[_0xe9c5('0x31')][_0xe9c5('0x34')]));_0x382405['attributes']=_0x382405[_0xe9c5('0x35')][_0xe9c5('0x36')]?_0x382405[_0xe9c5('0x35')]:_0x144e85[_0xe9c5('0x30')];if(_0x4ca4b0[_0xe9c5('0x31')][_0xe9c5('0x42')]){_0x382405['include']=[{'all':!![]}];}_0x382405=_['merge']({},_0x382405,_0x4ca4b0['options']);return db['FreshdeskField'][_0xe9c5('0x49')](_0x382405)[_0xe9c5('0x26')](handleEntityNotFound(_0x4a3fc5,null))[_0xe9c5('0x26')](respondWithResult(_0x4a3fc5,null))['catch'](handleError(_0x4a3fc5,null));};exports[_0xe9c5('0x4a')]=function(_0x520248,_0x1ed99e){return db[_0xe9c5('0x41')][_0xe9c5('0x4a')](_0x520248[_0xe9c5('0x4b')],{})['then'](respondWithResult(_0x1ed99e,0xc9))[_0xe9c5('0x46')](handleError(_0x1ed99e,null));};exports[_0xe9c5('0x25')]=function(_0x1da6a3,_0x249940){if(_0x1da6a3['body']['id']){delete _0x1da6a3[_0xe9c5('0x4b')]['id'];}return db[_0xe9c5('0x41')][_0xe9c5('0x49')]({'where':{'id':_0x1da6a3[_0xe9c5('0x4c')]['id']}})[_0xe9c5('0x26')](handleEntityNotFound(_0x249940,null))[_0xe9c5('0x26')](saveUpdates(_0x1da6a3['body'],null))[_0xe9c5('0x26')](respondWithResult(_0x249940,null))[_0xe9c5('0x46')](handleError(_0x249940,null));};exports[_0xe9c5('0x27')]=function(_0x9d0154,_0x5e7c24){return db[_0xe9c5('0x41')][_0xe9c5('0x49')]({'where':{'id':_0x9d0154[_0xe9c5('0x4c')]['id']}})[_0xe9c5('0x26')](handleEntityNotFound(_0x5e7c24,null))[_0xe9c5('0x26')](removeEntity(_0x5e7c24,null))[_0xe9c5('0x46')](handleError(_0x5e7c24,null));};
\ No newline at end of file
index d38a418..56f91ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2df9=['api','moment','path','../../config/environment','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x1b5eee,_0x2fbc05){var _0xd70fb7=function(_0x158998){while(--_0x158998){_0x1b5eee['push'](_0x1b5eee['shift']());}};_0xd70fb7(++_0x2fbc05);}(_0x2df9,0x14d));var _0x92df=function(_0x28ab2c,_0x4b8e37){_0x28ab2c=_0x28ab2c-0x0;var _0x203d40=_0x2df9[_0x28ab2c];return _0x203d40;};'use strict';var _=require(_0x92df('0x0'));var util=require(_0x92df('0x1'));var logger=require(_0x92df('0x2'))(_0x92df('0x3'));var moment=require(_0x92df('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x92df('0x5'));var rimraf=require('rimraf');var config=require(_0x92df('0x6'));var attributes=require(_0x92df('0x7'));module['exports']=function(_0x10dbd4,_0x2e14a4){return _0x10dbd4[_0x92df('0x8')](_0x92df('0x9'),attributes,{'tableName':_0x92df('0xa'),'paranoid':![],'indexes':[{'name':_0x92df('0xb'),'fields':[_0x92df('0xc'),_0x92df('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc47c=['../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','freshdesk_unique_index','idField','FieldId','moment','request-promise','path','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc47c,0xe0));var _0xcc47=function(_0x5eb1c6,_0x1989ef){_0x5eb1c6=_0x5eb1c6-0x0;var _0x584208=_0xc47c[_0x5eb1c6];return _0x584208;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xcc47('0x0'));var BPromise=require('bluebird');var rp=require(_0xcc47('0x1'));var fs=require('fs');var path=require(_0xcc47('0x2'));var rimraf=require(_0xcc47('0x3'));var config=require(_0xcc47('0x4'));var attributes=require(_0xcc47('0x5'));module[_0xcc47('0x6')]=function(_0x462acf,_0x5e52b0){return _0x462acf[_0xcc47('0x7')](_0xcc47('0x8'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0xcc47('0x9'),'fields':[_0xcc47('0xa'),_0xcc47('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 71a13e2..5b1426f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3081=['util','moment','bluebird','randomstring','../../config/utils','client','http','request','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x503185,_0x9041ce){var _0x5c5255=function(_0x5500dd){while(--_0x5500dd){_0x503185['push'](_0x503185['shift']());}};_0x5c5255(++_0x9041ce);}(_0x3081,0x167));var _0x1308=function(_0x973de1,_0x74c71e){_0x973de1=_0x973de1-0x0;var _0x492456=_0x3081[_0x973de1];return _0x492456;};'use strict';var _=require(_0x1308('0x0'));var util=require(_0x1308('0x1'));var moment=require(_0x1308('0x2'));var BPromise=require(_0x1308('0x3'));var rs=require(_0x1308('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1308('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1308('0x6')][_0x1308('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x22744c,_0x2b9bbc,_0x168f44){return new BPromise(function(_0x4e611d,_0x3cd2ac){return client[_0x1308('0x8')](_0x22744c,_0x168f44)['then'](function(_0x371cb8){logger[_0x1308('0x9')](_0x1308('0xa'),_0x2b9bbc,_0x1308('0xb'));logger[_0x1308('0xc')](_0x1308('0xd'),_0x2b9bbc,_0x1308('0xb'),JSON[_0x1308('0xe')](_0x371cb8));if(_0x371cb8[_0x1308('0xf')]){if(_0x371cb8[_0x1308('0xf')][_0x1308('0x10')]===0x1f4){logger['error'](_0x1308('0xa'),_0x2b9bbc,_0x371cb8[_0x1308('0xf')]['message']);return _0x3cd2ac(_0x371cb8[_0x1308('0xf')][_0x1308('0x11')]);}logger[_0x1308('0xf')](_0x1308('0xa'),_0x2b9bbc,_0x371cb8[_0x1308('0xf')][_0x1308('0x11')]);return _0x4e611d(_0x371cb8['error']['message']);}else{logger[_0x1308('0x9')](_0x1308('0xa'),_0x2b9bbc,'request\x20sent');_0x4e611d(_0x371cb8[_0x1308('0x12')][_0x1308('0x11')]);}})[_0x1308('0x13')](function(_0x486e30){logger[_0x1308('0xf')](_0x1308('0xa'),_0x2b9bbc,_0x486e30);_0x3cd2ac(_0x486e30);});});}
\ No newline at end of file
+var _0x5671=['../../config/environment','jayson/promise','client','http','request','FreshdeskField,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x1ac051,_0x101a2a){var _0x25eac6=function(_0x43ce26){while(--_0x43ce26){_0x1ac051['push'](_0x1ac051['shift']());}};_0x25eac6(++_0x101a2a);}(_0x5671,0x1d4));var _0x1567=function(_0x476b5f,_0x1f9952){_0x476b5f=_0x476b5f-0x0;var _0x5a23d8=_0x5671[_0x476b5f];return _0x5a23d8;};'use strict';var _=require('lodash');var util=require(_0x1567('0x0'));var moment=require('moment');var BPromise=require(_0x1567('0x1'));var rs=require(_0x1567('0x2'));var fs=require('fs');var Redis=require(_0x1567('0x3'));var db=require(_0x1567('0x4'))['db'];var utils=require(_0x1567('0x5'));var logger=require(_0x1567('0x6'))('rpc');var config=require(_0x1567('0x7'));var jayson=require(_0x1567('0x8'));var client=jayson[_0x1567('0x9')][_0x1567('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2597aa,_0x53afe1,_0x29a86d){return new BPromise(function(_0x414020,_0x5f5778){return client[_0x1567('0xb')](_0x2597aa,_0x29a86d)['then'](function(_0x529764){logger['info'](_0x1567('0xc'),_0x53afe1,_0x1567('0xd'));logger['debug']('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x53afe1,_0x1567('0xd'),JSON[_0x1567('0xe')](_0x529764));if(_0x529764[_0x1567('0xf')]){if(_0x529764[_0x1567('0xf')]['code']===0x1f4){logger[_0x1567('0xf')]('FreshdeskField,\x20%s,\x20%s',_0x53afe1,_0x529764[_0x1567('0xf')]['message']);return _0x5f5778(_0x529764[_0x1567('0xf')][_0x1567('0x10')]);}logger[_0x1567('0xf')](_0x1567('0xc'),_0x53afe1,_0x529764[_0x1567('0xf')][_0x1567('0x10')]);return _0x414020(_0x529764[_0x1567('0xf')]['message']);}else{logger[_0x1567('0x11')]('FreshdeskField,\x20%s,\x20%s',_0x53afe1,_0x1567('0xd'));_0x414020(_0x529764[_0x1567('0x12')][_0x1567('0x10')]);}})['catch'](function(_0x2faaed){logger[_0x1567('0xf')](_0x1567('0xc'),_0x53afe1,_0x2faaed);_0x5f5778(_0x2faaed);});});}
\ No newline at end of file
index 40734e2..286c882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['update','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','index','/:id','isAuthenticated','/:id/configurations','getFields','post','create','addConfiguration','put'];(function(_0x3954f0,_0x38ff5f){var _0x41fc13=function(_0x55004e){while(--_0x55004e){_0x3954f0['push'](_0x3954f0['shift']());}};_0x41fc13(++_0x38ff5f);}(_0xefda,0x96));var _0xaefd=function(_0x4be165,_0x3cefb4){_0x4be165=_0x4be165-0x0;var _0x5133b8=_0xefda[_0x4be165];return _0x5133b8;};'use strict';var multer=require(_0xaefd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaefd('0x1'));var express=require(_0xaefd('0x2'));var router=express['Router']();var fs_extra=require(_0xaefd('0x3'));var auth=require(_0xaefd('0x4'));var interaction=require(_0xaefd('0x5'));var config=require(_0xaefd('0x6'));var controller=require(_0xaefd('0x7'));router[_0xaefd('0x8')]('/',auth['isAuthenticated'](),controller[_0xaefd('0x9')]);router[_0xaefd('0x8')](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller['show']);router[_0xaefd('0x8')](_0xaefd('0xc'),auth[_0xaefd('0xb')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xaefd('0xb')](),controller[_0xaefd('0xd')]);router[_0xaefd('0xe')]('/',auth[_0xaefd('0xb')](),controller[_0xaefd('0xf')]);router[_0xaefd('0xe')](_0xaefd('0xc'),auth[_0xaefd('0xb')](),controller[_0xaefd('0x10')]);router[_0xaefd('0x11')](_0xaefd('0xa'),auth['isAuthenticated'](),controller[_0xaefd('0x12')]);router['delete'](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller[_0xaefd('0x13')]);module[_0xaefd('0x14')]=router;
\ No newline at end of file
+var _0xefda=['update','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','index','/:id','isAuthenticated','/:id/configurations','getFields','post','create','addConfiguration','put'];(function(_0x21c504,_0x3e00c6){var _0x51b5c3=function(_0x5b3f42){while(--_0x5b3f42){_0x21c504['push'](_0x21c504['shift']());}};_0x51b5c3(++_0x3e00c6);}(_0xefda,0x96));var _0xaefd=function(_0x9adac6,_0x40c370){_0x9adac6=_0x9adac6-0x0;var _0x14eb0a=_0xefda[_0x9adac6];return _0x14eb0a;};'use strict';var multer=require(_0xaefd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaefd('0x1'));var express=require(_0xaefd('0x2'));var router=express['Router']();var fs_extra=require(_0xaefd('0x3'));var auth=require(_0xaefd('0x4'));var interaction=require(_0xaefd('0x5'));var config=require(_0xaefd('0x6'));var controller=require(_0xaefd('0x7'));router[_0xaefd('0x8')]('/',auth['isAuthenticated'](),controller[_0xaefd('0x9')]);router[_0xaefd('0x8')](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller['show']);router[_0xaefd('0x8')](_0xaefd('0xc'),auth[_0xaefd('0xb')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xaefd('0xb')](),controller[_0xaefd('0xd')]);router[_0xaefd('0xe')]('/',auth[_0xaefd('0xb')](),controller[_0xaefd('0xf')]);router[_0xaefd('0xe')](_0xaefd('0xc'),auth[_0xaefd('0xb')](),controller[_0xaefd('0x10')]);router[_0xaefd('0x11')](_0xaefd('0xa'),auth['isAuthenticated'](),controller[_0xaefd('0x12')]);router['delete'](_0xaefd('0xa'),auth[_0xaefd('0xb')](),controller[_0xaefd('0x13')]);module[_0xaefd('0x14')]=router;
\ No newline at end of file
index 391b782..519ad6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['exports','STRING','username','remoteUri'];(function(_0x2dd481,_0x5ca00f){var _0x5740f7=function(_0x2264e7){while(--_0x2264e7){_0x2dd481['push'](_0x2dd481['shift']());}};_0x5740f7(++_0x5ca00f);}(_0xe5af,0x9c));var _0xfe5a=function(_0x32e2eb,_0x3347b7){_0x32e2eb=_0x32e2eb-0x0;var _0x2418ce=_0xe5af[_0x32e2eb];return _0x2418ce;};'use strict';var Sequelize=require('sequelize');module[_0xfe5a('0x0')]={'name':{'type':Sequelize[_0xfe5a('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfe5a('0x1')],'unique':_0xfe5a('0x2')},'apiKey':{'type':Sequelize[_0xfe5a('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xfe5a('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xd117=['remoteUri','sequelize','exports','STRING','username'];(function(_0x46df94,_0x5bf7fa){var _0x4721ca=function(_0x34c1e3){while(--_0x34c1e3){_0x46df94['push'](_0x46df94['shift']());}};_0x4721ca(++_0x5bf7fa);}(_0xd117,0x182));var _0x7d11=function(_0x4af01e,_0x543f5c){_0x4af01e=_0x4af01e-0x0;var _0x178c11=_0xd117[_0x4af01e];return _0x178c11;};'use strict';var Sequelize=require(_0x7d11('0x0'));module[_0x7d11('0x1')]={'name':{'type':Sequelize[_0x7d11('0x2')]},'description':{'type':Sequelize[_0x7d11('0x2')]},'username':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x3')},'apiKey':{'type':Sequelize[_0x7d11('0x2')]},'remoteUri':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x4')},'serverUrl':{'type':Sequelize[_0x7d11('0x2')],'allowNull':![]}};
\ No newline at end of file
index a697013..a8d5b6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eaa=['catch','create','body','findOne','FreshsalesConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s%s','Token\x20token=','email','Requested\x20Resource\x20not\x20Found','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','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','merge','VIRTUAL','options','FreshsalesAccount','includeAll','findAll','show','params','include','find'];(function(_0x9e0cb3,_0x9cd497){var _0x5926b7=function(_0x30e82d){while(--_0x30e82d){_0x9e0cb3['push'](_0x9e0cb3['shift']());}};_0x5926b7(++_0x9cd497);}(_0x6eaa,0x88));var _0xa6ea=function(_0x3792e6,_0x32bd91){_0x3792e6=_0x3792e6-0x0;var _0x441e44=_0x6eaa[_0x3792e6];return _0x441e44;};'use strict';var emlformat=require(_0xa6ea('0x0'));var rimraf=require(_0xa6ea('0x1'));var zipdir=require(_0xa6ea('0x2'));var jsonpatch=require(_0xa6ea('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa6ea('0x4'));var Mustache=require(_0xa6ea('0x5'));var util=require(_0xa6ea('0x6'));var path=require(_0xa6ea('0x7'));var sox=require(_0xa6ea('0x8'));var csv=require(_0xa6ea('0x9'));var ejs=require(_0xa6ea('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa6ea('0xb'));var squel=require(_0xa6ea('0xc'));var crypto=require(_0xa6ea('0xd'));var jsforce=require(_0xa6ea('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa6ea('0x9'));var querystring=require(_0xa6ea('0xf'));var Papa=require('papaparse');var Redis=require(_0xa6ea('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa6ea('0x11'));var as=require(_0xa6ea('0x12'));var hardwareService=require(_0xa6ea('0x13'));var logger=require(_0xa6ea('0x14'))('api');var utils=require(_0xa6ea('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa6ea('0x16'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x47e579,_0x57ea33){_0x57ea33=_0x57ea33||0xcc;return function(_0x2151b9){if(_0x2151b9){return _0x47e579[_0xa6ea('0x17')](_0x57ea33);}return _0x47e579[_0xa6ea('0x18')](_0x57ea33)[_0xa6ea('0x19')]();};}function respondWithResult(_0x309b3d,_0x5a19f5){_0x5a19f5=_0x5a19f5||0xc8;return function(_0x189b07){if(_0x189b07){return _0x309b3d[_0xa6ea('0x18')](_0x5a19f5)['json'](_0x189b07);}};}function respondWithFilteredResult(_0x3881e,_0x50458a){return function(_0x3c27cf){if(_0x3c27cf){var _0x4863a0=typeof _0x50458a[_0xa6ea('0x1a')]===_0xa6ea('0x1b')&&typeof _0x50458a[_0xa6ea('0x1c')]===_0xa6ea('0x1b');var _0x527e33=_0x3c27cf[_0xa6ea('0x1d')];var _0x3eb978=_0x4863a0?0x0:_0x50458a['offset'];var _0x2db862=_0x4863a0?_0x3c27cf['count']:_0x50458a[_0xa6ea('0x1a')]+_0x50458a['limit'];var _0x542fb9;if(_0x2db862>=_0x527e33){_0x2db862=_0x527e33;_0x542fb9=0xc8;}else{_0x542fb9=0xce;}_0x3881e[_0xa6ea('0x18')](_0x542fb9);return _0x3881e[_0xa6ea('0x1e')](_0xa6ea('0x1f'),_0x3eb978+'-'+_0x2db862+'/'+_0x527e33)[_0xa6ea('0x20')](_0x3c27cf);}return null;};}function patchUpdates(_0x1c1c0b){return function(_0x14c88f){try{jsonpatch[_0xa6ea('0x21')](_0x14c88f,_0x1c1c0b,!![]);}catch(_0x4cc6d7){return BPromise['reject'](_0x4cc6d7);}return _0x14c88f[_0xa6ea('0x22')]();};}function saveUpdates(_0x124c0c,_0x3db51b){return function(_0x34eded){if(_0x34eded){return _0x34eded[_0xa6ea('0x23')](_0x124c0c)[_0xa6ea('0x24')](function(_0xc3f6dc){return _0xc3f6dc;});}return null;};}function removeEntity(_0x1e0c55,_0x5a01cd){return function(_0x169907){if(_0x169907){return _0x169907[_0xa6ea('0x25')]()['then'](function(){_0x1e0c55[_0xa6ea('0x18')](0xcc)[_0xa6ea('0x19')]();});}};}function handleEntityNotFound(_0xb6cc95,_0x561a86){return function(_0x18347c){if(!_0x18347c){_0xb6cc95[_0xa6ea('0x17')](0x194);}return _0x18347c;};}function handleError(_0x3f173f,_0x4a08d2){_0x4a08d2=_0x4a08d2||0x1f4;return function(_0xd6d234){logger['error'](_0xd6d234[_0xa6ea('0x26')]);if(_0xd6d234[_0xa6ea('0x27')]){delete _0xd6d234['name'];}_0x3f173f['status'](_0x4a08d2)[_0xa6ea('0x28')](_0xd6d234);};}exports[_0xa6ea('0x29')]=function(_0x33567b,_0x4c8576){var _0x31b82c={},_0x42cfe9={},_0x5ef936={'count':0x0,'rows':[]};var _0x251715=_[_0xa6ea('0x2a')](db['FreshsalesAccount'][_0xa6ea('0x2b')],function(_0x3f479e){return{'name':_0x3f479e[_0xa6ea('0x2c')],'type':_0x3f479e[_0xa6ea('0x2d')][_0xa6ea('0x2e')]};});_0x42cfe9[_0xa6ea('0x2f')]=_[_0xa6ea('0x2a')](_0x251715,'name');_0x42cfe9[_0xa6ea('0x30')]=_[_0xa6ea('0x31')](_0x33567b[_0xa6ea('0x30')]);_0x42cfe9[_0xa6ea('0x32')]=_[_0xa6ea('0x33')](_0x42cfe9[_0xa6ea('0x2f')],_0x42cfe9[_0xa6ea('0x30')]);_0x31b82c[_0xa6ea('0x34')]=_['intersection'](_0x42cfe9[_0xa6ea('0x2f')],qs[_0xa6ea('0x35')](_0x33567b[_0xa6ea('0x30')][_0xa6ea('0x35')]));_0x31b82c[_0xa6ea('0x34')]=_0x31b82c[_0xa6ea('0x34')][_0xa6ea('0x36')]?_0x31b82c[_0xa6ea('0x34')]:_0x42cfe9[_0xa6ea('0x2f')];if(!_0x33567b['query'][_0xa6ea('0x37')](_0xa6ea('0x38'))){_0x31b82c[_0xa6ea('0x1c')]=qs[_0xa6ea('0x1c')](_0x33567b[_0xa6ea('0x30')][_0xa6ea('0x1c')]);_0x31b82c[_0xa6ea('0x1a')]=qs[_0xa6ea('0x1a')](_0x33567b[_0xa6ea('0x30')][_0xa6ea('0x1a')]);}_0x31b82c[_0xa6ea('0x39')]=qs[_0xa6ea('0x3a')](_0x33567b['query'][_0xa6ea('0x3a')]);_0x31b82c['where']=qs[_0xa6ea('0x32')](_[_0xa6ea('0x3b')](_0x33567b[_0xa6ea('0x30')],_0x42cfe9[_0xa6ea('0x32')]),_0x251715);if(_0x33567b['query'][_0xa6ea('0x3c')]){_0x31b82c[_0xa6ea('0x3d')]=_[_0xa6ea('0x3e')](_0x31b82c[_0xa6ea('0x3d')],{'$or':_['map'](_0x251715,function(_0x4cd901){if(_0x4cd901[_0xa6ea('0x2d')]!==_0xa6ea('0x3f')){var _0x5a4090={};_0x5a4090[_0x4cd901[_0xa6ea('0x27')]]={'$like':'%'+_0x33567b[_0xa6ea('0x30')]['filter']+'%'};return _0x5a4090;}})});}_0x31b82c=_[_0xa6ea('0x3e')]({},_0x31b82c,_0x33567b[_0xa6ea('0x40')]);var _0x5a913e={'where':_0x31b82c[_0xa6ea('0x3d')]};return db[_0xa6ea('0x41')][_0xa6ea('0x1d')](_0x5a913e)['then'](function(_0xb4f6b0){_0x5ef936[_0xa6ea('0x1d')]=_0xb4f6b0;if(_0x33567b['query'][_0xa6ea('0x42')]){_0x31b82c['include']=[{'all':!![]}];}return db['FreshsalesAccount'][_0xa6ea('0x43')](_0x31b82c);})[_0xa6ea('0x24')](function(_0xcad71e){_0x5ef936['rows']=_0xcad71e;return _0x5ef936;})[_0xa6ea('0x24')](respondWithFilteredResult(_0x4c8576,_0x31b82c))['catch'](handleError(_0x4c8576,null));};exports[_0xa6ea('0x44')]=function(_0x245633,_0x19c1bb){var _0x28a058={'raw':![],'where':{'id':_0x245633[_0xa6ea('0x45')]['id']}},_0x4e719e={};_0x4e719e['model']=_['keys'](db['FreshsalesAccount'][_0xa6ea('0x2b')]);_0x4e719e[_0xa6ea('0x30')]=_[_0xa6ea('0x31')](_0x245633['query']);_0x4e719e['filters']=_[_0xa6ea('0x33')](_0x4e719e[_0xa6ea('0x2f')],_0x4e719e[_0xa6ea('0x30')]);_0x28a058[_0xa6ea('0x34')]=_[_0xa6ea('0x33')](_0x4e719e[_0xa6ea('0x2f')],qs['fields'](_0x245633[_0xa6ea('0x30')]['fields']));_0x28a058[_0xa6ea('0x34')]=_0x28a058[_0xa6ea('0x34')][_0xa6ea('0x36')]?_0x28a058[_0xa6ea('0x34')]:_0x4e719e['model'];if(_0x245633['query'][_0xa6ea('0x42')]){_0x28a058[_0xa6ea('0x46')]=[{'all':!![]}];}_0x28a058=_[_0xa6ea('0x3e')]({},_0x28a058,_0x245633[_0xa6ea('0x40')]);return db[_0xa6ea('0x41')][_0xa6ea('0x47')](_0x28a058)[_0xa6ea('0x24')](handleEntityNotFound(_0x19c1bb,null))[_0xa6ea('0x24')](respondWithResult(_0x19c1bb,null))[_0xa6ea('0x48')](handleError(_0x19c1bb,null));};exports[_0xa6ea('0x49')]=function(_0x3a68cf,_0x470bba){return db[_0xa6ea('0x41')][_0xa6ea('0x49')](_0x3a68cf[_0xa6ea('0x4a')],{})['then'](respondWithResult(_0x470bba,0xc9))[_0xa6ea('0x48')](handleError(_0x470bba,null));};exports['update']=function(_0x320866,_0x371dba){if(_0x320866['body']['id']){delete _0x320866['body']['id'];}return db[_0xa6ea('0x41')]['find']({'where':{'id':_0x320866[_0xa6ea('0x45')]['id']}})['then'](handleEntityNotFound(_0x371dba,null))[_0xa6ea('0x24')](saveUpdates(_0x320866[_0xa6ea('0x4a')],null))[_0xa6ea('0x24')](respondWithResult(_0x371dba,null))[_0xa6ea('0x48')](handleError(_0x371dba,null));};exports[_0xa6ea('0x25')]=function(_0x31cf6c,_0x319a3f){return db[_0xa6ea('0x41')][_0xa6ea('0x47')]({'where':{'id':_0x31cf6c['params']['id']}})[_0xa6ea('0x24')](handleEntityNotFound(_0x319a3f,null))[_0xa6ea('0x24')](removeEntity(_0x319a3f,null))[_0xa6ea('0x48')](handleError(_0x319a3f,null));};exports['getConfigurations']=function(_0x579a38,_0x3aac69,_0x1107a7){var _0x38babd={};var _0x48a063={};var _0x35bdd;var _0x47c21c;return db[_0xa6ea('0x41')][_0xa6ea('0x4b')]({'where':{'id':_0x579a38[_0xa6ea('0x45')]['id']}})[_0xa6ea('0x24')](handleEntityNotFound(_0x3aac69,null))[_0xa6ea('0x24')](function(_0x482c9e){if(_0x482c9e){_0x35bdd=_0x482c9e;_0x48a063[_0xa6ea('0x2f')]=_[_0xa6ea('0x31')](db[_0xa6ea('0x4c')]['rawAttributes']);_0x48a063[_0xa6ea('0x30')]=_['keys'](_0x579a38[_0xa6ea('0x30')]);_0x48a063['filters']=_['intersection'](_0x48a063[_0xa6ea('0x2f')],_0x48a063[_0xa6ea('0x30')]);_0x38babd[_0xa6ea('0x34')]=_[_0xa6ea('0x33')](_0x48a063[_0xa6ea('0x2f')],qs[_0xa6ea('0x35')](_0x579a38[_0xa6ea('0x30')][_0xa6ea('0x35')]));_0x38babd[_0xa6ea('0x34')]=_0x38babd[_0xa6ea('0x34')]['length']?_0x38babd['attributes']:_0x48a063[_0xa6ea('0x2f')];_0x38babd[_0xa6ea('0x39')]=qs[_0xa6ea('0x3a')](_0x579a38[_0xa6ea('0x30')][_0xa6ea('0x3a')]);_0x38babd[_0xa6ea('0x3d')]=qs[_0xa6ea('0x32')](_[_0xa6ea('0x3b')](_0x579a38[_0xa6ea('0x30')],_0x48a063[_0xa6ea('0x32')]));if(_0x579a38[_0xa6ea('0x30')]['filter']){_0x38babd[_0xa6ea('0x3d')]=_[_0xa6ea('0x3e')](_0x38babd[_0xa6ea('0x3d')],{'$or':_['map'](_0x38babd['attributes'],function(_0x18a5c9){var _0x263a18={};_0x263a18[_0x18a5c9]={'$like':'%'+_0x579a38[_0xa6ea('0x30')][_0xa6ea('0x3c')]+'%'};return _0x263a18;})});}_0x38babd=_[_0xa6ea('0x3e')]({},_0x38babd,_0x579a38[_0xa6ea('0x40')]);return _0x35bdd[_0xa6ea('0x4d')](_0x38babd);}})[_0xa6ea('0x24')](function(_0x8b14a4){if(_0x8b14a4){_0x47c21c=_0x8b14a4[_0xa6ea('0x36')];if(!_0x579a38[_0xa6ea('0x30')][_0xa6ea('0x37')](_0xa6ea('0x38'))){_0x38babd[_0xa6ea('0x1c')]=qs[_0xa6ea('0x1c')](_0x579a38[_0xa6ea('0x30')][_0xa6ea('0x1c')]);_0x38babd['offset']=qs[_0xa6ea('0x1a')](_0x579a38[_0xa6ea('0x30')][_0xa6ea('0x1a')]);}return _0x35bdd[_0xa6ea('0x4d')](_0x38babd);}})['then'](function(_0x2207ce){if(_0x2207ce){return _0x2207ce?{'count':_0x47c21c,'rows':_0x2207ce}:null;}})[_0xa6ea('0x24')](respondWithResult(_0x3aac69,null))[_0xa6ea('0x48')](handleError(_0x3aac69,null));};exports[_0xa6ea('0x4e')]=function(_0x48a281,_0x415322,_0x3d9d06){if(_0x48a281[_0xa6ea('0x4a')]['id']){delete _0x48a281['body']['id'];}return db[_0xa6ea('0x41')][_0xa6ea('0x4b')]({'where':{'id':_0x48a281[_0xa6ea('0x45')]['id']}})[_0xa6ea('0x24')](handleEntityNotFound(_0x415322,null))[_0xa6ea('0x24')](function(_0x14416d){if(_0x14416d){_0x48a281[_0xa6ea('0x4a')][_0xa6ea('0x4f')]=_0x14416d['id'];_0x48a281[_0xa6ea('0x4a')][_0xa6ea('0x50')]=integrations[_0xa6ea('0x51')](_0x48a281[_0xa6ea('0x4a')][_0xa6ea('0x52')],_0x48a281['body'][_0xa6ea('0x2d')]);_0x48a281[_0xa6ea('0x4a')][_0xa6ea('0x53')]=integrations[_0xa6ea('0x54')](_0x48a281[_0xa6ea('0x4a')][_0xa6ea('0x52')],_0x48a281[_0xa6ea('0x4a')][_0xa6ea('0x2d')]);return db[_0xa6ea('0x4c')][_0xa6ea('0x49')](_0x48a281[_0xa6ea('0x4a')],{'include':[{'model':db['FreshsalesField'],'as':_0xa6ea('0x50')},{'model':db['FreshsalesField'],'as':_0xa6ea('0x53')}]});}return null;})[_0xa6ea('0x24')](respondWithResult(_0x415322,null))['catch'](handleError(_0x415322,null));};exports[_0xa6ea('0x55')]=function(_0x53cab8,_0xcfe5ac,_0x503209){var _0x5ac892='';var _0x1f641e='';return db['FreshsalesAccount'][_0xa6ea('0x4b')]({'where':{'id':_0x53cab8[_0xa6ea('0x45')]['id']},'attributes':['id',_0xa6ea('0x56'),_0xa6ea('0x57'),_0xa6ea('0x58')]})[_0xa6ea('0x24')](handleEntityNotFound(_0xcfe5ac,null))[_0xa6ea('0x24')](function(_0x440ee2){if(_0x440ee2){_0x1f641e=_0x440ee2['username'];_0x5ac892=_0x440ee2['remoteUri'];var _0x3c4776=_0x440ee2[_0xa6ea('0x57')][_0xa6ea('0x59')](-0x1);if(_0x3c4776==='/'){_0x5ac892=_0x5ac892[_0xa6ea('0x5a')](0x0,_0x5ac892[_0xa6ea('0x5b')](_0x3c4776));}return rp({'method':_0xa6ea('0x5c'),'uri':util[_0xa6ea('0x5d')](_0xa6ea('0x5e'),_0x5ac892,'/api/selector/owners'),'headers':{'Authorization':_0xa6ea('0x5f')+_0x440ee2[_0xa6ea('0x58')]},'json':!![]});}})[_0xa6ea('0x24')](function(_0x451616){if(_0x451616){var _0x3c1d37=_0x451616['users'];var _0x275c11=![];var _0x388fd6=null;for(_0x388fd6=0x0;_0x388fd6<_0x3c1d37[_0xa6ea('0x36')];_0x388fd6++){if(_0x3c1d37[_0x388fd6][_0xa6ea('0x60')]===_0x1f641e){_0x275c11=!![];}}if(_0x275c11){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xa6ea('0x61')});}}})['then'](respondWithResult(_0xcfe5ac,null))[_0xa6ea('0x48')](function(_0x1c7930){var _0x20809f=_0x53cab8[_0xa6ea('0x30')][_0xa6ea('0x62')]?0x1f4:_0x1c7930[_0xa6ea('0x63')]||0x1f4;logger[_0xa6ea('0x64')](_0xa6ea('0x65'),_0xa6ea('0x55'),_0x20809f,JSON[_0xa6ea('0x66')](_0x1c7930));delete _0x1c7930[_0xa6ea('0x27')];if(_0x20809f===0x191){_0x20809f=0x190;}_0xcfe5ac[_0xa6ea('0x18')](_0x20809f)[_0xa6ea('0x28')](_0x53cab8['query'][_0xa6ea('0x62')]?{'message':_0xa6ea('0x67'),'statusCode':_0x1c7930[_0xa6ea('0x63')]}:_0x1c7930);});};
\ No newline at end of file
+var _0x16a1=['body','params','getConfigurations','findOne','FreshsalesConfiguration','pick','addConfiguration','AccountId','getSubjects','Descriptions','getDescriptions','channel','Subjects','getFields','apiKey','username','remoteUri','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','stringify','send','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','filter','includeAll','include','findAll','rows','catch','show','options','create'];(function(_0x3d4ef1,_0x5a957c){var _0x409423=function(_0x1ab129){while(--_0x1ab129){_0x3d4ef1['push'](_0x3d4ef1['shift']());}};_0x409423(++_0x5a957c);}(_0x16a1,0xeb));var _0x116a=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x16a1[_0x1035c1];return _0x308d67;};'use strict';var emlformat=require(_0x116a('0x0'));var rimraf=require(_0x116a('0x1'));var zipdir=require(_0x116a('0x2'));var jsonpatch=require(_0x116a('0x3'));var rp=require('request-promise');var moment=require(_0x116a('0x4'));var BPromise=require(_0x116a('0x5'));var Mustache=require(_0x116a('0x6'));var util=require('util');var path=require(_0x116a('0x7'));var sox=require(_0x116a('0x8'));var csv=require(_0x116a('0x9'));var ejs=require(_0x116a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x116a('0xb'));var crypto=require(_0x116a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x116a('0xd'));var toCsv=require(_0x116a('0x9'));var querystring=require(_0x116a('0xe'));var Papa=require(_0x116a('0xf'));var Redis=require(_0x116a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x116a('0x11'));var as=require(_0x116a('0x12'));var hardwareService=require(_0x116a('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x116a('0x14'));var config=require(_0x116a('0x15'));var licenseUtil=require(_0x116a('0x16'));var db=require(_0x116a('0x17'))['db'];var integrations=require(_0x116a('0x18'));function respondWithStatusCode(_0x441c39,_0x11b1f8){_0x11b1f8=_0x11b1f8||0xcc;return function(_0x2bc45c){if(_0x2bc45c){return _0x441c39[_0x116a('0x19')](_0x11b1f8);}return _0x441c39[_0x116a('0x1a')](_0x11b1f8)[_0x116a('0x1b')]();};}function respondWithResult(_0x410de8,_0x1cd54c){_0x1cd54c=_0x1cd54c||0xc8;return function(_0x137fca){if(_0x137fca){return _0x410de8['status'](_0x1cd54c)[_0x116a('0x1c')](_0x137fca);}};}function respondWithFilteredResult(_0x190b1b,_0x89b776){return function(_0xcf15c0){if(_0xcf15c0){var _0x426b94=typeof _0x89b776['offset']==='undefined'&&typeof _0x89b776[_0x116a('0x1d')]===_0x116a('0x1e');var _0x59054d=_0xcf15c0['count'];var _0x39a9bf=_0x426b94?0x0:_0x89b776[_0x116a('0x1f')];var _0x346f0c=_0x426b94?_0xcf15c0[_0x116a('0x20')]:_0x89b776['offset']+_0x89b776[_0x116a('0x1d')];var _0x5e47f8;if(_0x346f0c>=_0x59054d){_0x346f0c=_0x59054d;_0x5e47f8=0xc8;}else{_0x5e47f8=0xce;}_0x190b1b[_0x116a('0x1a')](_0x5e47f8);return _0x190b1b[_0x116a('0x21')](_0x116a('0x22'),_0x39a9bf+'-'+_0x346f0c+'/'+_0x59054d)[_0x116a('0x1c')](_0xcf15c0);}return null;};}function patchUpdates(_0x227f5c){return function(_0x19aa12){try{jsonpatch[_0x116a('0x23')](_0x19aa12,_0x227f5c,!![]);}catch(_0x1951ee){return BPromise[_0x116a('0x24')](_0x1951ee);}return _0x19aa12[_0x116a('0x25')]();};}function saveUpdates(_0x57b2fa,_0x489b56){return function(_0x40a34b){if(_0x40a34b){return _0x40a34b[_0x116a('0x26')](_0x57b2fa)[_0x116a('0x27')](function(_0x47e1fb){return _0x47e1fb;});}return null;};}function removeEntity(_0x5272d7,_0x2616f4){return function(_0x1f3ce0){if(_0x1f3ce0){return _0x1f3ce0[_0x116a('0x28')]()[_0x116a('0x27')](function(){_0x5272d7[_0x116a('0x1a')](0xcc)[_0x116a('0x1b')]();});}};}function handleEntityNotFound(_0x7a95d0,_0x400acf){return function(_0x177633){if(!_0x177633){_0x7a95d0[_0x116a('0x19')](0x194);}return _0x177633;};}function handleError(_0x2f4069,_0x2ce237){_0x2ce237=_0x2ce237||0x1f4;return function(_0x349823){logger[_0x116a('0x29')](_0x349823[_0x116a('0x2a')]);if(_0x349823[_0x116a('0x2b')]){delete _0x349823[_0x116a('0x2b')];}_0x2f4069[_0x116a('0x1a')](_0x2ce237)['send'](_0x349823);};}exports[_0x116a('0x2c')]=function(_0x1eac61,_0x20eb77){var _0x293e8f={},_0x5b1638={},_0x1bfde8={'count':0x0,'rows':[]};var _0x21429c=_[_0x116a('0x2d')](db[_0x116a('0x2e')][_0x116a('0x2f')],function(_0x4542ab){return{'name':_0x4542ab[_0x116a('0x30')],'type':_0x4542ab[_0x116a('0x31')][_0x116a('0x32')]};});_0x5b1638[_0x116a('0x33')]=_[_0x116a('0x2d')](_0x21429c,'name');_0x5b1638[_0x116a('0x34')]=_[_0x116a('0x35')](_0x1eac61['query']);_0x5b1638['filters']=_[_0x116a('0x36')](_0x5b1638[_0x116a('0x33')],_0x5b1638[_0x116a('0x34')]);_0x293e8f['attributes']=_[_0x116a('0x36')](_0x5b1638[_0x116a('0x33')],qs[_0x116a('0x37')](_0x1eac61[_0x116a('0x34')][_0x116a('0x37')]));_0x293e8f[_0x116a('0x38')]=_0x293e8f['attributes'][_0x116a('0x39')]?_0x293e8f[_0x116a('0x38')]:_0x5b1638['model'];if(!_0x1eac61['query'][_0x116a('0x3a')](_0x116a('0x3b'))){_0x293e8f[_0x116a('0x1d')]=qs[_0x116a('0x1d')](_0x1eac61['query'][_0x116a('0x1d')]);_0x293e8f['offset']=qs['offset'](_0x1eac61[_0x116a('0x34')]['offset']);}_0x293e8f[_0x116a('0x3c')]=qs[_0x116a('0x3d')](_0x1eac61['query']['sort']);_0x293e8f[_0x116a('0x3e')]=qs[_0x116a('0x3f')](_['pick'](_0x1eac61[_0x116a('0x34')],_0x5b1638[_0x116a('0x3f')]),_0x21429c);if(_0x1eac61[_0x116a('0x34')]['filter']){_0x293e8f[_0x116a('0x3e')]=_[_0x116a('0x40')](_0x293e8f[_0x116a('0x3e')],{'$or':_[_0x116a('0x2d')](_0x21429c,function(_0x1157b5){if(_0x1157b5[_0x116a('0x31')]!=='VIRTUAL'){var _0x12fa1b={};_0x12fa1b[_0x1157b5[_0x116a('0x2b')]]={'$like':'%'+_0x1eac61[_0x116a('0x34')][_0x116a('0x41')]+'%'};return _0x12fa1b;}})});}_0x293e8f=_[_0x116a('0x40')]({},_0x293e8f,_0x1eac61['options']);var _0x2ffb3f={'where':_0x293e8f['where']};return db[_0x116a('0x2e')][_0x116a('0x20')](_0x2ffb3f)['then'](function(_0x56f99e){_0x1bfde8[_0x116a('0x20')]=_0x56f99e;if(_0x1eac61[_0x116a('0x34')][_0x116a('0x42')]){_0x293e8f[_0x116a('0x43')]=[{'all':!![]}];}return db[_0x116a('0x2e')][_0x116a('0x44')](_0x293e8f);})['then'](function(_0x1d3ac1){_0x1bfde8[_0x116a('0x45')]=_0x1d3ac1;return _0x1bfde8;})['then'](respondWithFilteredResult(_0x20eb77,_0x293e8f))[_0x116a('0x46')](handleError(_0x20eb77,null));};exports[_0x116a('0x47')]=function(_0x2cf6a5,_0x4a09d0){var _0x4eee5b={'raw':![],'where':{'id':_0x2cf6a5['params']['id']}},_0x33e902={};_0x33e902['model']=_[_0x116a('0x35')](db[_0x116a('0x2e')][_0x116a('0x2f')]);_0x33e902[_0x116a('0x34')]=_['keys'](_0x2cf6a5[_0x116a('0x34')]);_0x33e902[_0x116a('0x3f')]=_[_0x116a('0x36')](_0x33e902[_0x116a('0x33')],_0x33e902[_0x116a('0x34')]);_0x4eee5b[_0x116a('0x38')]=_[_0x116a('0x36')](_0x33e902['model'],qs['fields'](_0x2cf6a5[_0x116a('0x34')][_0x116a('0x37')]));_0x4eee5b[_0x116a('0x38')]=_0x4eee5b[_0x116a('0x38')][_0x116a('0x39')]?_0x4eee5b[_0x116a('0x38')]:_0x33e902[_0x116a('0x33')];if(_0x2cf6a5[_0x116a('0x34')][_0x116a('0x42')]){_0x4eee5b['include']=[{'all':!![]}];}_0x4eee5b=_[_0x116a('0x40')]({},_0x4eee5b,_0x2cf6a5[_0x116a('0x48')]);return db[_0x116a('0x2e')]['find'](_0x4eee5b)[_0x116a('0x27')](handleEntityNotFound(_0x4a09d0,null))[_0x116a('0x27')](respondWithResult(_0x4a09d0,null))[_0x116a('0x46')](handleError(_0x4a09d0,null));};exports[_0x116a('0x49')]=function(_0x2a0b45,_0x40cdad){return db[_0x116a('0x2e')][_0x116a('0x49')](_0x2a0b45[_0x116a('0x4a')],{})[_0x116a('0x27')](respondWithResult(_0x40cdad,0xc9))[_0x116a('0x46')](handleError(_0x40cdad,null));};exports[_0x116a('0x26')]=function(_0x3557c9,_0x5e2b74){if(_0x3557c9[_0x116a('0x4a')]['id']){delete _0x3557c9[_0x116a('0x4a')]['id'];}return db[_0x116a('0x2e')]['find']({'where':{'id':_0x3557c9[_0x116a('0x4b')]['id']}})[_0x116a('0x27')](handleEntityNotFound(_0x5e2b74,null))[_0x116a('0x27')](saveUpdates(_0x3557c9['body'],null))[_0x116a('0x27')](respondWithResult(_0x5e2b74,null))[_0x116a('0x46')](handleError(_0x5e2b74,null));};exports[_0x116a('0x28')]=function(_0x5477d2,_0x3261da){return db[_0x116a('0x2e')]['find']({'where':{'id':_0x5477d2[_0x116a('0x4b')]['id']}})[_0x116a('0x27')](handleEntityNotFound(_0x3261da,null))[_0x116a('0x27')](removeEntity(_0x3261da,null))['catch'](handleError(_0x3261da,null));};exports[_0x116a('0x4c')]=function(_0x4fabc1,_0x24e8ff,_0x50116f){var _0x260dfd={};var _0x4ce1d3={};var _0x3e6f5c;var _0x59889d;return db[_0x116a('0x2e')][_0x116a('0x4d')]({'where':{'id':_0x4fabc1[_0x116a('0x4b')]['id']}})[_0x116a('0x27')](handleEntityNotFound(_0x24e8ff,null))[_0x116a('0x27')](function(_0x40b00c){if(_0x40b00c){_0x3e6f5c=_0x40b00c;_0x4ce1d3[_0x116a('0x33')]=_[_0x116a('0x35')](db[_0x116a('0x4e')][_0x116a('0x2f')]);_0x4ce1d3[_0x116a('0x34')]=_[_0x116a('0x35')](_0x4fabc1[_0x116a('0x34')]);_0x4ce1d3[_0x116a('0x3f')]=_[_0x116a('0x36')](_0x4ce1d3[_0x116a('0x33')],_0x4ce1d3['query']);_0x260dfd[_0x116a('0x38')]=_[_0x116a('0x36')](_0x4ce1d3[_0x116a('0x33')],qs[_0x116a('0x37')](_0x4fabc1[_0x116a('0x34')][_0x116a('0x37')]));_0x260dfd[_0x116a('0x38')]=_0x260dfd[_0x116a('0x38')][_0x116a('0x39')]?_0x260dfd['attributes']:_0x4ce1d3['model'];_0x260dfd['order']=qs['sort'](_0x4fabc1[_0x116a('0x34')]['sort']);_0x260dfd[_0x116a('0x3e')]=qs['filters'](_[_0x116a('0x4f')](_0x4fabc1[_0x116a('0x34')],_0x4ce1d3['filters']));if(_0x4fabc1['query'][_0x116a('0x41')]){_0x260dfd[_0x116a('0x3e')]=_['merge'](_0x260dfd[_0x116a('0x3e')],{'$or':_['map'](_0x260dfd['attributes'],function(_0x38959f){var _0x1396d7={};_0x1396d7[_0x38959f]={'$like':'%'+_0x4fabc1[_0x116a('0x34')]['filter']+'%'};return _0x1396d7;})});}_0x260dfd=_['merge']({},_0x260dfd,_0x4fabc1[_0x116a('0x48')]);return _0x3e6f5c[_0x116a('0x4c')](_0x260dfd);}})[_0x116a('0x27')](function(_0x2332f3){if(_0x2332f3){_0x59889d=_0x2332f3[_0x116a('0x39')];if(!_0x4fabc1['query'][_0x116a('0x3a')]('nolimit')){_0x260dfd[_0x116a('0x1d')]=qs[_0x116a('0x1d')](_0x4fabc1[_0x116a('0x34')][_0x116a('0x1d')]);_0x260dfd[_0x116a('0x1f')]=qs[_0x116a('0x1f')](_0x4fabc1['query'][_0x116a('0x1f')]);}return _0x3e6f5c[_0x116a('0x4c')](_0x260dfd);}})['then'](function(_0x383283){if(_0x383283){return _0x383283?{'count':_0x59889d,'rows':_0x383283}:null;}})[_0x116a('0x27')](respondWithResult(_0x24e8ff,null))[_0x116a('0x46')](handleError(_0x24e8ff,null));};exports[_0x116a('0x50')]=function(_0x2a41c0,_0x38df3b,_0x1f2807){if(_0x2a41c0[_0x116a('0x4a')]['id']){delete _0x2a41c0[_0x116a('0x4a')]['id'];}return db[_0x116a('0x2e')][_0x116a('0x4d')]({'where':{'id':_0x2a41c0[_0x116a('0x4b')]['id']}})[_0x116a('0x27')](handleEntityNotFound(_0x38df3b,null))[_0x116a('0x27')](function(_0x193b9f){if(_0x193b9f){_0x2a41c0['body'][_0x116a('0x51')]=_0x193b9f['id'];_0x2a41c0[_0x116a('0x4a')]['Subjects']=integrations[_0x116a('0x52')](_0x2a41c0[_0x116a('0x4a')]['channel'],_0x2a41c0['body']['type']);_0x2a41c0[_0x116a('0x4a')][_0x116a('0x53')]=integrations[_0x116a('0x54')](_0x2a41c0[_0x116a('0x4a')][_0x116a('0x55')],_0x2a41c0[_0x116a('0x4a')][_0x116a('0x31')]);return db[_0x116a('0x4e')]['create'](_0x2a41c0[_0x116a('0x4a')],{'include':[{'model':db['FreshsalesField'],'as':_0x116a('0x56')},{'model':db['FreshsalesField'],'as':_0x116a('0x53')}]});}return null;})['then'](respondWithResult(_0x38df3b,null))[_0x116a('0x46')](handleError(_0x38df3b,null));};exports[_0x116a('0x57')]=function(_0x2955f9,_0x398cd7,_0x2cee56){var _0x132329='';var _0x301603='';return db['FreshsalesAccount'][_0x116a('0x4d')]({'where':{'id':_0x2955f9[_0x116a('0x4b')]['id']},'attributes':['id','username','remoteUri',_0x116a('0x58')]})[_0x116a('0x27')](handleEntityNotFound(_0x398cd7,null))[_0x116a('0x27')](function(_0x3cf65d){if(_0x3cf65d){_0x301603=_0x3cf65d[_0x116a('0x59')];_0x132329=_0x3cf65d[_0x116a('0x5a')];var _0x5c24f7=_0x3cf65d[_0x116a('0x5a')]['slice'](-0x1);if(_0x5c24f7==='/'){_0x132329=_0x132329['substring'](0x0,_0x132329[_0x116a('0x5b')](_0x5c24f7));}return rp({'method':_0x116a('0x5c'),'uri':util[_0x116a('0x5d')](_0x116a('0x5e'),_0x132329,_0x116a('0x5f')),'headers':{'Authorization':_0x116a('0x60')+_0x3cf65d[_0x116a('0x58')]},'json':!![]});}})[_0x116a('0x27')](function(_0x5a1cbd){if(_0x5a1cbd){var _0x37f46b=_0x5a1cbd[_0x116a('0x61')];var _0x40f4f4=![];var _0x2e6e95=null;for(_0x2e6e95=0x0;_0x2e6e95<_0x37f46b['length'];_0x2e6e95++){if(_0x37f46b[_0x2e6e95][_0x116a('0x62')]===_0x301603){_0x40f4f4=!![];}}if(_0x40f4f4){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x116a('0x63')});}}})[_0x116a('0x27')](respondWithResult(_0x398cd7,null))[_0x116a('0x46')](function(_0x142adf){var _0x1cf835=_0x2955f9[_0x116a('0x34')][_0x116a('0x64')]?0x1f4:_0x142adf['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x116a('0x57'),_0x1cf835,JSON[_0x116a('0x65')](_0x142adf));delete _0x142adf[_0x116a('0x2b')];if(_0x1cf835===0x191){_0x1cf835=0x190;}_0x398cd7[_0x116a('0x1a')](_0x1cf835)[_0x116a('0x66')](_0x2955f9[_0x116a('0x34')][_0x116a('0x64')]?{'message':'Wrong\x20credentials','statusCode':_0x142adf['statusCode']}:_0x142adf);});};
\ No newline at end of file
index 561cf26..c9d4724 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x90b1,0x1bb));var _0x190b=function(_0x6604ba,_0x2a8142){_0x6604ba=_0x6604ba-0x0;var _0x39fb08=_0x90b1[_0x6604ba];return _0x39fb08;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var logger=require(_0x190b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x190b('0x3'));var rp=require(_0x190b('0x4'));var fs=require('fs');var path=require(_0x190b('0x5'));var rimraf=require(_0x190b('0x6'));var config=require('../../config/environment');var attributes=require('./intFreshsalesAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x27ff8c,_0x34a689){return _0x27ff8c[_0x190b('0x7')](_0x190b('0x8'),attributes,{'tableName':_0x190b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0295=['exports','lodash','api','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x0295,0x1f0));var _0x5029=function(_0x347c14,_0xf2472f){_0x347c14=_0x347c14-0x0;var _0x46deb8=_0x0295[_0x347c14];return _0x46deb8;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5029('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5029('0x2'));var fs=require('fs');var path=require(_0x5029('0x3'));var rimraf=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var attributes=require(_0x5029('0x6'));var integrations=require(_0x5029('0x7'));module[_0x5029('0x8')]=function(_0x215955,_0x5b3cd){return _0x215955['define']('FreshsalesAccount',attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bfc26e..d04c895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetFreshsalesAccount','FreshsalesAccount','options','raw','where','limit','include','model','attributes','map','stringify','ShowFreshsalesAccount','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x27a900,_0x1cc305){var _0xea9b1f=function(_0xaddd55){while(--_0xaddd55){_0x27a900['push'](_0x27a900['shift']());}};_0xea9b1f(++_0x1cc305);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8e3f[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var moment=require(_0xf8e3('0x2'));var BPromise=require('bluebird');var rs=require(_0xf8e3('0x3'));var fs=require('fs');var Redis=require(_0xf8e3('0x4'));var db=require(_0xf8e3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf8e3('0x6'))(_0xf8e3('0x7'));var config=require('../../config/environment');var jayson=require(_0xf8e3('0x8'));var client=jayson[_0xf8e3('0x9')][_0xf8e3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ee9f3,_0x4e9e57,_0x4504dd){return new BPromise(function(_0x2e39b7,_0x17f56c){return client[_0xf8e3('0xb')](_0x1ee9f3,_0x4504dd)[_0xf8e3('0xc')](function(_0x4055e2){logger[_0xf8e3('0xd')](_0xf8e3('0xe'),_0x4e9e57,_0xf8e3('0xf'));logger[_0xf8e3('0x10')](_0xf8e3('0x11'),_0x4e9e57,_0xf8e3('0xf'),JSON['stringify'](_0x4055e2));if(_0x4055e2[_0xf8e3('0x12')]){if(_0x4055e2[_0xf8e3('0x12')][_0xf8e3('0x13')]===0x1f4){logger['error'](_0xf8e3('0xe'),_0x4e9e57,_0x4055e2[_0xf8e3('0x12')][_0xf8e3('0x14')]);return _0x17f56c(_0x4055e2[_0xf8e3('0x12')]['message']);}logger[_0xf8e3('0x12')](_0xf8e3('0xe'),_0x4e9e57,_0x4055e2[_0xf8e3('0x12')]['message']);return _0x2e39b7(_0x4055e2[_0xf8e3('0x12')]['message']);}else{logger[_0xf8e3('0xd')](_0xf8e3('0xe'),_0x4e9e57,_0xf8e3('0xf'));_0x2e39b7(_0x4055e2['result']['message']);}})[_0xf8e3('0x15')](function(_0x385dde){logger[_0xf8e3('0x12')](_0xf8e3('0xe'),_0x4e9e57,_0x385dde);_0x17f56c(_0x385dde);});});}exports[_0xf8e3('0x16')]=function(_0x11d4cc){var _0x7a81c3=this;return new Promise(function(_0x2e27e3,_0x1337ae){return db[_0xf8e3('0x17')]['findAll']({'raw':_0x11d4cc[_0xf8e3('0x18')]?_0x11d4cc[_0xf8e3('0x18')][_0xf8e3('0x19')]===undefined?!![]:![]:!![],'where':_0x11d4cc[_0xf8e3('0x18')]?_0x11d4cc[_0xf8e3('0x18')][_0xf8e3('0x1a')]||null:null,'attributes':_0x11d4cc[_0xf8e3('0x18')]?_0x11d4cc[_0xf8e3('0x18')]['attributes']||null:null,'limit':_0x11d4cc[_0xf8e3('0x18')]?_0x11d4cc[_0xf8e3('0x18')][_0xf8e3('0x1b')]||null:null,'include':_0x11d4cc[_0xf8e3('0x18')]?_0x11d4cc['options'][_0xf8e3('0x1c')]?_['map'](_0x11d4cc[_0xf8e3('0x18')][_0xf8e3('0x1c')],function(_0x33d526){return{'model':db[_0x33d526[_0xf8e3('0x1d')]],'as':_0x33d526['as'],'attributes':_0x33d526[_0xf8e3('0x1e')],'include':_0x33d526[_0xf8e3('0x1c')]?_['map'](_0x33d526[_0xf8e3('0x1c')],function(_0x2fc674){return{'model':db[_0x2fc674[_0xf8e3('0x1d')]],'as':_0x2fc674['as'],'attributes':_0x2fc674[_0xf8e3('0x1e')],'include':_0x2fc674[_0xf8e3('0x1c')]?_[_0xf8e3('0x1f')](_0x2fc674[_0xf8e3('0x1c')],function(_0x157a2d){return{'model':db[_0x157a2d['model']],'as':_0x157a2d['as'],'attributes':_0x157a2d[_0xf8e3('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xf8e3('0xc')](function(_0x12ebd2){logger[_0xf8e3('0xd')](_0xf8e3('0x16'),_0x11d4cc);logger[_0xf8e3('0x10')](_0xf8e3('0x16'),_0x11d4cc,JSON[_0xf8e3('0x20')](_0x12ebd2));_0x2e27e3(_0x12ebd2);})['catch'](function(_0x21e1c0){logger[_0xf8e3('0x12')](_0xf8e3('0x16'),_0x21e1c0[_0xf8e3('0x14')],_0x11d4cc);_0x1337ae(_0x7a81c3['error'](0x1f4,_0x21e1c0[_0xf8e3('0x14')]));});});};exports[_0xf8e3('0x21')]=function(_0x40f64d){var _0x45df49=this;return new Promise(function(_0x33f208,_0x46c85d){return db[_0xf8e3('0x17')][_0xf8e3('0x22')]({'raw':_0x40f64d['options']?_0x40f64d[_0xf8e3('0x18')][_0xf8e3('0x19')]===undefined?!![]:![]:!![],'where':_0x40f64d['options']?_0x40f64d['options']['where']||null:null,'attributes':_0x40f64d[_0xf8e3('0x18')]?_0x40f64d['options'][_0xf8e3('0x1e')]||null:null,'include':_0x40f64d[_0xf8e3('0x18')]?_0x40f64d[_0xf8e3('0x18')][_0xf8e3('0x1c')]?_['map'](_0x40f64d['options'][_0xf8e3('0x1c')],function(_0x2f87d8){return{'model':db[_0x2f87d8[_0xf8e3('0x1d')]],'as':_0x2f87d8['as'],'attributes':_0x2f87d8[_0xf8e3('0x1e')],'include':_0x2f87d8[_0xf8e3('0x1c')]?_[_0xf8e3('0x1f')](_0x2f87d8['include'],function(_0x1afead){return{'model':db[_0x1afead['model']],'as':_0x1afead['as'],'attributes':_0x1afead['attributes'],'include':_0x1afead[_0xf8e3('0x1c')]?_[_0xf8e3('0x1f')](_0x1afead[_0xf8e3('0x1c')],function(_0x1b7af2){return{'model':db[_0x1b7af2['model']],'as':_0x1b7af2['as'],'attributes':_0x1b7af2['attributes']};}):[]};}):[]};}):[]:[]})[_0xf8e3('0xc')](function(_0x215183){logger['info'](_0xf8e3('0x21'),_0x40f64d);logger[_0xf8e3('0x10')](_0xf8e3('0x21'),_0x40f64d,JSON[_0xf8e3('0x20')](_0x215183));_0x33f208(_0x215183);})['catch'](function(_0x53cfea){logger['error'](_0xf8e3('0x21'),_0x53cfea[_0xf8e3('0x14')],_0x40f64d);_0x46c85d(_0x45df49[_0xf8e3('0x12')](0x1f4,_0x53cfea[_0xf8e3('0x14')]));});});};
\ No newline at end of file
+var _0x7278=['stringify','error','code','message','result','catch','GetFreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowFreshsalesAccount','FreshsalesAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s'];(function(_0x310c44,_0x541492){var _0x2d128c=function(_0x2f7323){while(--_0x2f7323){_0x310c44['push'](_0x310c44['shift']());}};_0x2d128c(++_0x541492);}(_0x7278,0x161));var _0x8727=function(_0x10c22b,_0x297ac0){_0x10c22b=_0x10c22b-0x0;var _0x211a78=_0x7278[_0x10c22b];return _0x211a78;};'use strict';var _=require(_0x8727('0x0'));var util=require(_0x8727('0x1'));var moment=require(_0x8727('0x2'));var BPromise=require(_0x8727('0x3'));var rs=require(_0x8727('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8727('0x5'))['db'];var utils=require(_0x8727('0x6'));var logger=require(_0x8727('0x7'))(_0x8727('0x8'));var config=require(_0x8727('0x9'));var jayson=require(_0x8727('0xa'));var client=jayson[_0x8727('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfd1902,_0x2f491c,_0xffd783){return new BPromise(function(_0x435911,_0x4160c3){return client['request'](_0xfd1902,_0xffd783)['then'](function(_0x4df6f8){logger[_0x8727('0xc')](_0x8727('0xd'),_0x2f491c,_0x8727('0xe'));logger[_0x8727('0xf')](_0x8727('0x10'),_0x2f491c,_0x8727('0xe'),JSON[_0x8727('0x11')](_0x4df6f8));if(_0x4df6f8[_0x8727('0x12')]){if(_0x4df6f8['error'][_0x8727('0x13')]===0x1f4){logger[_0x8727('0x12')](_0x8727('0xd'),_0x2f491c,_0x4df6f8['error'][_0x8727('0x14')]);return _0x4160c3(_0x4df6f8[_0x8727('0x12')]['message']);}logger[_0x8727('0x12')](_0x8727('0xd'),_0x2f491c,_0x4df6f8[_0x8727('0x12')][_0x8727('0x14')]);return _0x435911(_0x4df6f8[_0x8727('0x12')][_0x8727('0x14')]);}else{logger[_0x8727('0xc')](_0x8727('0xd'),_0x2f491c,_0x8727('0xe'));_0x435911(_0x4df6f8[_0x8727('0x15')]['message']);}})[_0x8727('0x16')](function(_0x1f9538){logger[_0x8727('0x12')](_0x8727('0xd'),_0x2f491c,_0x1f9538);_0x4160c3(_0x1f9538);});});}exports[_0x8727('0x17')]=function(_0xba0af5){var _0x533e6d=this;return new Promise(function(_0x575d29,_0x1a90ed){return db['FreshsalesAccount'][_0x8727('0x18')]({'raw':_0xba0af5[_0x8727('0x19')]?_0xba0af5[_0x8727('0x19')][_0x8727('0x1a')]===undefined?!![]:![]:!![],'where':_0xba0af5[_0x8727('0x19')]?_0xba0af5['options'][_0x8727('0x1b')]||null:null,'attributes':_0xba0af5[_0x8727('0x19')]?_0xba0af5[_0x8727('0x19')][_0x8727('0x1c')]||null:null,'limit':_0xba0af5[_0x8727('0x19')]?_0xba0af5[_0x8727('0x19')][_0x8727('0x1d')]||null:null,'include':_0xba0af5[_0x8727('0x19')]?_0xba0af5[_0x8727('0x19')][_0x8727('0x1e')]?_[_0x8727('0x1f')](_0xba0af5[_0x8727('0x19')]['include'],function(_0x464a32){return{'model':db[_0x464a32[_0x8727('0x20')]],'as':_0x464a32['as'],'attributes':_0x464a32['attributes'],'include':_0x464a32['include']?_[_0x8727('0x1f')](_0x464a32[_0x8727('0x1e')],function(_0x15e8bf){return{'model':db[_0x15e8bf['model']],'as':_0x15e8bf['as'],'attributes':_0x15e8bf[_0x8727('0x1c')],'include':_0x15e8bf[_0x8727('0x1e')]?_[_0x8727('0x1f')](_0x15e8bf[_0x8727('0x1e')],function(_0x2c8cd5){return{'model':db[_0x2c8cd5[_0x8727('0x20')]],'as':_0x2c8cd5['as'],'attributes':_0x2c8cd5[_0x8727('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8727('0x21')](function(_0x5d03f2){logger[_0x8727('0xc')](_0x8727('0x17'),_0xba0af5);logger['debug'](_0x8727('0x17'),_0xba0af5,JSON[_0x8727('0x11')](_0x5d03f2));_0x575d29(_0x5d03f2);})[_0x8727('0x16')](function(_0x228ca9){logger[_0x8727('0x12')](_0x8727('0x17'),_0x228ca9['message'],_0xba0af5);_0x1a90ed(_0x533e6d[_0x8727('0x12')](0x1f4,_0x228ca9['message']));});});};exports[_0x8727('0x22')]=function(_0x47e9f9){var _0x44ed83=this;return new Promise(function(_0x391d60,_0x152a53){return db[_0x8727('0x23')][_0x8727('0x24')]({'raw':_0x47e9f9[_0x8727('0x19')]?_0x47e9f9[_0x8727('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x47e9f9[_0x8727('0x19')]?_0x47e9f9[_0x8727('0x19')][_0x8727('0x1b')]||null:null,'attributes':_0x47e9f9[_0x8727('0x19')]?_0x47e9f9[_0x8727('0x19')][_0x8727('0x1c')]||null:null,'include':_0x47e9f9[_0x8727('0x19')]?_0x47e9f9[_0x8727('0x19')][_0x8727('0x1e')]?_[_0x8727('0x1f')](_0x47e9f9[_0x8727('0x19')][_0x8727('0x1e')],function(_0x54bff3){return{'model':db[_0x54bff3['model']],'as':_0x54bff3['as'],'attributes':_0x54bff3[_0x8727('0x1c')],'include':_0x54bff3[_0x8727('0x1e')]?_[_0x8727('0x1f')](_0x54bff3[_0x8727('0x1e')],function(_0x52220f){return{'model':db[_0x52220f[_0x8727('0x20')]],'as':_0x52220f['as'],'attributes':_0x52220f[_0x8727('0x1c')],'include':_0x52220f[_0x8727('0x1e')]?_[_0x8727('0x1f')](_0x52220f[_0x8727('0x1e')],function(_0x5b96cc){return{'model':db[_0x5b96cc[_0x8727('0x20')]],'as':_0x5b96cc['as'],'attributes':_0x5b96cc[_0x8727('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8727('0x21')](function(_0x1b0e88){logger[_0x8727('0xc')](_0x8727('0x22'),_0x47e9f9);logger[_0x8727('0xf')](_0x8727('0x22'),_0x47e9f9,JSON[_0x8727('0x11')](_0x1b0e88));_0x391d60(_0x1b0e88);})[_0x8727('0x16')](function(_0x396f12){logger[_0x8727('0x12')]('ShowFreshsalesAccount',_0x396f12[_0x8727('0x14')],_0x47e9f9);_0x152a53(_0x44ed83[_0x8727('0x12')](0x1f4,_0x396f12[_0x8727('0x14')]));});});};
\ No newline at end of file
index 867ad03..974d7b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09e2=['getDescriptions','/:id/fields','getFields','put','update','delete','/:id','destroy','exports','multer','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','/:id/subjects','getSubjects'];(function(_0x2daef6,_0xcac228){var _0x62d030=function(_0x26a7d6){while(--_0x26a7d6){_0x2daef6['push'](_0x2daef6['shift']());}};_0x62d030(++_0xcac228);}(_0x09e2,0x87));var _0x209e=function(_0x55db3e,_0x5efa08){_0x55db3e=_0x55db3e-0x0;var _0x43ff08=_0x09e2[_0x55db3e];return _0x43ff08;};'use strict';var multer=require(_0x209e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x209e('0x1'));var express=require(_0x209e('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x209e('0x3'));var interaction=require(_0x209e('0x4'));var config=require(_0x209e('0x5'));var controller=require(_0x209e('0x6'));router[_0x209e('0x7')]('/',auth[_0x209e('0x8')](),controller[_0x209e('0x9')]);router[_0x209e('0x7')]('/:id',auth[_0x209e('0x8')](),controller['show']);router[_0x209e('0x7')](_0x209e('0xa'),auth[_0x209e('0x8')](),controller[_0x209e('0xb')]);router['get']('/:id/descriptions',auth[_0x209e('0x8')](),controller[_0x209e('0xc')]);router[_0x209e('0x7')](_0x209e('0xd'),auth[_0x209e('0x8')](),controller[_0x209e('0xe')]);router['post']('/',auth[_0x209e('0x8')](),controller['create']);router[_0x209e('0xf')]('/:id',auth[_0x209e('0x8')](),controller[_0x209e('0x10')]);router[_0x209e('0x11')](_0x209e('0x12'),auth[_0x209e('0x8')](),controller[_0x209e('0x13')]);module[_0x209e('0x14')]=router;
\ No newline at end of file
+var _0x9f5c=['delete','destroy','exports','util','path','express','Router','fs-extra','./intFreshsalesConfiguration.controller','get','isAuthenticated','/:id','show','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','create','put','update'];(function(_0x72ace8,_0x4ba520){var _0x30a740=function(_0x3ab9b6){while(--_0x3ab9b6){_0x72ace8['push'](_0x72ace8['shift']());}};_0x30a740(++_0x4ba520);}(_0x9f5c,0xea));var _0xc9f5=function(_0x29e1f9,_0x3db782){_0x29e1f9=_0x29e1f9-0x0;var _0xde57f9=_0x9f5c[_0x29e1f9];return _0xde57f9;};'use strict';var multer=require('multer');var util=require(_0xc9f5('0x0'));var path=require(_0xc9f5('0x1'));var timeout=require('connect-timeout');var express=require(_0xc9f5('0x2'));var router=express[_0xc9f5('0x3')]();var fs_extra=require(_0xc9f5('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc9f5('0x5'));router[_0xc9f5('0x6')]('/',auth[_0xc9f5('0x7')](),controller['index']);router[_0xc9f5('0x6')](_0xc9f5('0x8'),auth[_0xc9f5('0x7')](),controller[_0xc9f5('0x9')]);router[_0xc9f5('0x6')](_0xc9f5('0xa'),auth[_0xc9f5('0x7')](),controller[_0xc9f5('0xb')]);router[_0xc9f5('0x6')]('/:id/descriptions',auth[_0xc9f5('0x7')](),controller[_0xc9f5('0xc')]);router['get'](_0xc9f5('0xd'),auth[_0xc9f5('0x7')](),controller[_0xc9f5('0xe')]);router['post']('/',auth[_0xc9f5('0x7')](),controller[_0xc9f5('0xf')]);router[_0xc9f5('0x10')](_0xc9f5('0x8'),auth[_0xc9f5('0x7')](),controller[_0xc9f5('0x11')]);router[_0xc9f5('0x12')]('/:id',auth[_0xc9f5('0x7')](),controller[_0xc9f5('0x13')]);module[_0xc9f5('0x14')]=router;
\ No newline at end of file
index 0a654e8..d4477b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef1d=['STRING','exports'];(function(_0x1bdec8,_0x27fc21){var _0x3ac479=function(_0x4039e7){while(--_0x4039e7){_0x1bdec8['push'](_0x1bdec8['shift']());}};_0x3ac479(++_0x27fc21);}(_0xef1d,0xd5));var _0xdef1=function(_0x400da5,_0x365e9b){_0x400da5=_0x400da5-0x0;var _0x5d8cf7=_0xef1d[_0x400da5];return _0x5d8cf7;};'use strict';var Sequelize=require('sequelize');module[_0xdef1('0x0')]={'name':{'type':Sequelize[_0xdef1('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x42da=['STRING','sequelize','exports'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x42da,0x14b));var _0xa42d=function(_0x38830b,_0x5d4119){_0x38830b=_0x38830b-0x0;var _0x4a1393=_0x42da[_0x38830b];return _0x4a1393;};'use strict';var Sequelize=require(_0xa42d('0x0'));module[_0xa42d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa42d('0x2')]}};
\ No newline at end of file
index 6c7ac12..45597cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bfb=['body','find','params','getSubjects','FreshsalesField','order','getDescriptions','findOne','getFields','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','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','count','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','model','filters','intersection','attributes','query','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','catch','show','keys','include','create'];(function(_0x30994d,_0x2cc269){var _0x4554df=function(_0x125125){while(--_0x125125){_0x30994d['push'](_0x30994d['shift']());}};_0x4554df(++_0x2cc269);}(_0x7bfb,0x199));var _0xb7bf=function(_0x1a3013,_0x56bd3f){_0x1a3013=_0x1a3013-0x0;var _0x36eee9=_0x7bfb[_0x1a3013];return _0x36eee9;};'use strict';var emlformat=require(_0xb7bf('0x0'));var rimraf=require(_0xb7bf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb7bf('0x2'));var rp=require('request-promise');var moment=require(_0xb7bf('0x3'));var BPromise=require(_0xb7bf('0x4'));var Mustache=require(_0xb7bf('0x5'));var util=require('util');var path=require(_0xb7bf('0x6'));var sox=require(_0xb7bf('0x7'));var csv=require(_0xb7bf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb7bf('0x9'));var _=require(_0xb7bf('0xa'));var squel=require('squel');var crypto=require(_0xb7bf('0xb'));var jsforce=require(_0xb7bf('0xc'));var deskjs=require(_0xb7bf('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb7bf('0xe'));var authService=require(_0xb7bf('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xb7bf('0x10'));var hardwareService=require(_0xb7bf('0x11'));var logger=require(_0xb7bf('0x12'))(_0xb7bf('0x13'));var utils=require(_0xb7bf('0x14'));var config=require(_0xb7bf('0x15'));var licenseUtil=require(_0xb7bf('0x16'));var db=require(_0xb7bf('0x17'))['db'];function respondWithStatusCode(_0x28ae96,_0x25ea4e){_0x25ea4e=_0x25ea4e||0xcc;return function(_0x550c7d){if(_0x550c7d){return _0x28ae96[_0xb7bf('0x18')](_0x25ea4e);}return _0x28ae96[_0xb7bf('0x19')](_0x25ea4e)[_0xb7bf('0x1a')]();};}function respondWithResult(_0x145586,_0x1539fe){_0x1539fe=_0x1539fe||0xc8;return function(_0x1c2b47){if(_0x1c2b47){return _0x145586['status'](_0x1539fe)[_0xb7bf('0x1b')](_0x1c2b47);}};}function respondWithFilteredResult(_0x38da0e,_0x21a932){return function(_0x28dbfa){if(_0x28dbfa){var _0x513082=typeof _0x21a932[_0xb7bf('0x1c')]===_0xb7bf('0x1d')&&typeof _0x21a932['limit']==='undefined';var _0xd63709=_0x28dbfa[_0xb7bf('0x1e')];var _0x2a99eb=_0x513082?0x0:_0x21a932['offset'];var _0x2ab4b6=_0x513082?_0x28dbfa[_0xb7bf('0x1e')]:_0x21a932['offset']+_0x21a932['limit'];var _0x518d81;if(_0x2ab4b6>=_0xd63709){_0x2ab4b6=_0xd63709;_0x518d81=0xc8;}else{_0x518d81=0xce;}_0x38da0e['status'](_0x518d81);return _0x38da0e[_0xb7bf('0x1f')](_0xb7bf('0x20'),_0x2a99eb+'-'+_0x2ab4b6+'/'+_0xd63709)[_0xb7bf('0x1b')](_0x28dbfa);}return null;};}function patchUpdates(_0x3fe268){return function(_0x51342d){try{jsonpatch['apply'](_0x51342d,_0x3fe268,!![]);}catch(_0x18fbd8){return BPromise[_0xb7bf('0x21')](_0x18fbd8);}return _0x51342d['save']();};}function saveUpdates(_0x59842d,_0xe4c7df){return function(_0x362f32){if(_0x362f32){return _0x362f32[_0xb7bf('0x22')](_0x59842d)[_0xb7bf('0x23')](function(_0x116b87){return _0x116b87;});}return null;};}function removeEntity(_0x446d40,_0x3b52e4){return function(_0x40ee83){if(_0x40ee83){return _0x40ee83[_0xb7bf('0x24')]()[_0xb7bf('0x23')](function(){_0x446d40[_0xb7bf('0x19')](0xcc)[_0xb7bf('0x1a')]();});}};}function handleEntityNotFound(_0x55bbf9,_0x3db0fe){return function(_0x1bb99e){if(!_0x1bb99e){_0x55bbf9[_0xb7bf('0x18')](0x194);}return _0x1bb99e;};}function handleError(_0x202105,_0x13f26a){_0x13f26a=_0x13f26a||0x1f4;return function(_0x3eecf2){logger[_0xb7bf('0x25')](_0x3eecf2[_0xb7bf('0x26')]);if(_0x3eecf2[_0xb7bf('0x27')]){delete _0x3eecf2['name'];}_0x202105[_0xb7bf('0x19')](_0x13f26a)[_0xb7bf('0x28')](_0x3eecf2);};}exports[_0xb7bf('0x29')]=function(_0x2828cf,_0x1b3865){var _0x21f35a={},_0x43fdc={},_0x172d9a={'count':0x0,'rows':[]};var _0x187da0=_[_0xb7bf('0x2a')](db[_0xb7bf('0x2b')][_0xb7bf('0x2c')],function(_0x26f824){return{'name':_0x26f824[_0xb7bf('0x2d')],'type':_0x26f824['type']['key']};});_0x43fdc[_0xb7bf('0x2e')]=_[_0xb7bf('0x2a')](_0x187da0,'name');_0x43fdc['query']=_['keys'](_0x2828cf['query']);_0x43fdc[_0xb7bf('0x2f')]=_[_0xb7bf('0x30')](_0x43fdc[_0xb7bf('0x2e')],_0x43fdc['query']);_0x21f35a[_0xb7bf('0x31')]=_[_0xb7bf('0x30')](_0x43fdc[_0xb7bf('0x2e')],qs['fields'](_0x2828cf[_0xb7bf('0x32')][_0xb7bf('0x33')]));_0x21f35a[_0xb7bf('0x31')]=_0x21f35a[_0xb7bf('0x31')][_0xb7bf('0x34')]?_0x21f35a['attributes']:_0x43fdc[_0xb7bf('0x2e')];if(!_0x2828cf[_0xb7bf('0x32')][_0xb7bf('0x35')](_0xb7bf('0x36'))){_0x21f35a[_0xb7bf('0x37')]=qs[_0xb7bf('0x37')](_0x2828cf[_0xb7bf('0x32')][_0xb7bf('0x37')]);_0x21f35a[_0xb7bf('0x1c')]=qs[_0xb7bf('0x1c')](_0x2828cf[_0xb7bf('0x32')]['offset']);}_0x21f35a['order']=qs[_0xb7bf('0x38')](_0x2828cf[_0xb7bf('0x32')][_0xb7bf('0x38')]);_0x21f35a[_0xb7bf('0x39')]=qs[_0xb7bf('0x2f')](_[_0xb7bf('0x3a')](_0x2828cf['query'],_0x43fdc[_0xb7bf('0x2f')]),_0x187da0);if(_0x2828cf[_0xb7bf('0x32')][_0xb7bf('0x3b')]){_0x21f35a[_0xb7bf('0x39')]=_['merge'](_0x21f35a['where'],{'$or':_[_0xb7bf('0x2a')](_0x187da0,function(_0x47b261){if(_0x47b261[_0xb7bf('0x3c')]!==_0xb7bf('0x3d')){var _0x313ec7={};_0x313ec7[_0x47b261['name']]={'$like':'%'+_0x2828cf[_0xb7bf('0x32')]['filter']+'%'};return _0x313ec7;}})});}_0x21f35a=_[_0xb7bf('0x3e')]({},_0x21f35a,_0x2828cf[_0xb7bf('0x3f')]);var _0x2867ec={'where':_0x21f35a[_0xb7bf('0x39')]};return db[_0xb7bf('0x2b')]['count'](_0x2867ec)['then'](function(_0x3e8c82){_0x172d9a['count']=_0x3e8c82;if(_0x2828cf['query'][_0xb7bf('0x40')]){_0x21f35a['include']=[{'all':!![]}];}return db[_0xb7bf('0x2b')][_0xb7bf('0x41')](_0x21f35a);})[_0xb7bf('0x23')](function(_0x219783){_0x172d9a['rows']=_0x219783;return _0x172d9a;})[_0xb7bf('0x23')](respondWithFilteredResult(_0x1b3865,_0x21f35a))[_0xb7bf('0x42')](handleError(_0x1b3865,null));};exports[_0xb7bf('0x43')]=function(_0x78a877,_0x4ea5b7){var _0x4ea8b6={'raw':![],'where':{'id':_0x78a877['params']['id']}},_0x5e9d44={};_0x5e9d44['model']=_[_0xb7bf('0x44')](db['FreshsalesConfiguration'][_0xb7bf('0x2c')]);_0x5e9d44[_0xb7bf('0x32')]=_[_0xb7bf('0x44')](_0x78a877['query']);_0x5e9d44[_0xb7bf('0x2f')]=_[_0xb7bf('0x30')](_0x5e9d44[_0xb7bf('0x2e')],_0x5e9d44[_0xb7bf('0x32')]);_0x4ea8b6[_0xb7bf('0x31')]=_[_0xb7bf('0x30')](_0x5e9d44[_0xb7bf('0x2e')],qs[_0xb7bf('0x33')](_0x78a877[_0xb7bf('0x32')][_0xb7bf('0x33')]));_0x4ea8b6['attributes']=_0x4ea8b6[_0xb7bf('0x31')][_0xb7bf('0x34')]?_0x4ea8b6[_0xb7bf('0x31')]:_0x5e9d44[_0xb7bf('0x2e')];if(_0x78a877[_0xb7bf('0x32')][_0xb7bf('0x40')]){_0x4ea8b6[_0xb7bf('0x45')]=[{'all':!![]}];}_0x4ea8b6=_[_0xb7bf('0x3e')]({},_0x4ea8b6,_0x78a877['options']);return db[_0xb7bf('0x2b')]['find'](_0x4ea8b6)['then'](handleEntityNotFound(_0x4ea5b7,null))[_0xb7bf('0x23')](respondWithResult(_0x4ea5b7,null))[_0xb7bf('0x42')](handleError(_0x4ea5b7,null));};exports[_0xb7bf('0x46')]=function(_0x4cc5ba,_0x10e872){return db[_0xb7bf('0x2b')][_0xb7bf('0x46')](_0x4cc5ba['body'],{})[_0xb7bf('0x23')](respondWithResult(_0x10e872,0xc9))[_0xb7bf('0x42')](handleError(_0x10e872,null));};exports[_0xb7bf('0x22')]=function(_0x421a43,_0x3bcc70){if(_0x421a43[_0xb7bf('0x47')]['id']){delete _0x421a43[_0xb7bf('0x47')]['id'];}return db[_0xb7bf('0x2b')][_0xb7bf('0x48')]({'where':{'id':_0x421a43['params']['id']}})[_0xb7bf('0x23')](handleEntityNotFound(_0x3bcc70,null))[_0xb7bf('0x23')](saveUpdates(_0x421a43[_0xb7bf('0x47')],null))['then'](respondWithResult(_0x3bcc70,null))[_0xb7bf('0x42')](handleError(_0x3bcc70,null));};exports[_0xb7bf('0x24')]=function(_0x383c98,_0x55a48c){return db[_0xb7bf('0x2b')][_0xb7bf('0x48')]({'where':{'id':_0x383c98[_0xb7bf('0x49')]['id']}})['then'](handleEntityNotFound(_0x55a48c,null))[_0xb7bf('0x23')](removeEntity(_0x55a48c,null))['catch'](handleError(_0x55a48c,null));};exports[_0xb7bf('0x4a')]=function(_0x1bb28e,_0x19e219,_0x3ed5d8){var _0x8d74fe={};var _0x5f0a60={};var _0x2a02ae;var _0x290019;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x1bb28e['params']['id']}})[_0xb7bf('0x23')](handleEntityNotFound(_0x19e219,null))[_0xb7bf('0x23')](function(_0x57980b){if(_0x57980b){_0x2a02ae=_0x57980b;_0x5f0a60['model']=_[_0xb7bf('0x44')](db[_0xb7bf('0x4b')][_0xb7bf('0x2c')]);_0x5f0a60[_0xb7bf('0x32')]=_[_0xb7bf('0x44')](_0x1bb28e[_0xb7bf('0x32')]);_0x5f0a60[_0xb7bf('0x2f')]=_[_0xb7bf('0x30')](_0x5f0a60[_0xb7bf('0x2e')],_0x5f0a60[_0xb7bf('0x32')]);_0x8d74fe[_0xb7bf('0x31')]=_[_0xb7bf('0x30')](_0x5f0a60['model'],qs[_0xb7bf('0x33')](_0x1bb28e[_0xb7bf('0x32')]['fields']));_0x8d74fe[_0xb7bf('0x31')]=_0x8d74fe[_0xb7bf('0x31')][_0xb7bf('0x34')]?_0x8d74fe[_0xb7bf('0x31')]:_0x5f0a60[_0xb7bf('0x2e')];_0x8d74fe[_0xb7bf('0x4c')]=qs[_0xb7bf('0x38')](_0x1bb28e[_0xb7bf('0x32')][_0xb7bf('0x38')]);_0x8d74fe['where']=qs['filters'](_['pick'](_0x1bb28e[_0xb7bf('0x32')],_0x5f0a60[_0xb7bf('0x2f')]));if(_0x1bb28e[_0xb7bf('0x32')][_0xb7bf('0x3b')]){_0x8d74fe[_0xb7bf('0x39')]=_['merge'](_0x8d74fe[_0xb7bf('0x39')],{'$or':_[_0xb7bf('0x2a')](_0x8d74fe[_0xb7bf('0x31')],function(_0x4b944b){var _0x431f55={};_0x431f55[_0x4b944b]={'$like':'%'+_0x1bb28e[_0xb7bf('0x32')]['filter']+'%'};return _0x431f55;})});}_0x8d74fe=_[_0xb7bf('0x3e')]({},_0x8d74fe,_0x1bb28e[_0xb7bf('0x3f')]);return _0x2a02ae[_0xb7bf('0x4a')](_0x8d74fe);}})[_0xb7bf('0x23')](function(_0x7e1e9f){if(_0x7e1e9f){_0x290019=_0x7e1e9f[_0xb7bf('0x34')];if(!_0x1bb28e[_0xb7bf('0x32')][_0xb7bf('0x35')]('nolimit')){_0x8d74fe['limit']=qs[_0xb7bf('0x37')](_0x1bb28e[_0xb7bf('0x32')][_0xb7bf('0x37')]);_0x8d74fe[_0xb7bf('0x1c')]=qs[_0xb7bf('0x1c')](_0x1bb28e[_0xb7bf('0x32')][_0xb7bf('0x1c')]);}return _0x2a02ae['getSubjects'](_0x8d74fe);}})[_0xb7bf('0x23')](function(_0x55e7b6){if(_0x55e7b6){return _0x55e7b6?{'count':_0x290019,'rows':_0x55e7b6}:null;}})[_0xb7bf('0x23')](respondWithResult(_0x19e219,null))[_0xb7bf('0x42')](handleError(_0x19e219,null));};exports[_0xb7bf('0x4d')]=function(_0x318924,_0x1ce29a,_0x1aa8c2){var _0x34d2de={};var _0x3d86eb={};var _0x421b29;var _0x22bb79;return db[_0xb7bf('0x2b')]['findOne']({'where':{'id':_0x318924[_0xb7bf('0x49')]['id']}})[_0xb7bf('0x23')](handleEntityNotFound(_0x1ce29a,null))[_0xb7bf('0x23')](function(_0x32fa71){if(_0x32fa71){_0x421b29=_0x32fa71;_0x3d86eb['model']=_[_0xb7bf('0x44')](db[_0xb7bf('0x4b')]['rawAttributes']);_0x3d86eb['query']=_[_0xb7bf('0x44')](_0x318924['query']);_0x3d86eb['filters']=_[_0xb7bf('0x30')](_0x3d86eb['model'],_0x3d86eb[_0xb7bf('0x32')]);_0x34d2de[_0xb7bf('0x31')]=_['intersection'](_0x3d86eb['model'],qs[_0xb7bf('0x33')](_0x318924[_0xb7bf('0x32')][_0xb7bf('0x33')]));_0x34d2de[_0xb7bf('0x31')]=_0x34d2de[_0xb7bf('0x31')][_0xb7bf('0x34')]?_0x34d2de[_0xb7bf('0x31')]:_0x3d86eb[_0xb7bf('0x2e')];_0x34d2de[_0xb7bf('0x4c')]=qs[_0xb7bf('0x38')](_0x318924[_0xb7bf('0x32')][_0xb7bf('0x38')]);_0x34d2de[_0xb7bf('0x39')]=qs[_0xb7bf('0x2f')](_[_0xb7bf('0x3a')](_0x318924['query'],_0x3d86eb['filters']));if(_0x318924[_0xb7bf('0x32')][_0xb7bf('0x3b')]){_0x34d2de[_0xb7bf('0x39')]=_[_0xb7bf('0x3e')](_0x34d2de['where'],{'$or':_[_0xb7bf('0x2a')](_0x34d2de[_0xb7bf('0x31')],function(_0x5f47cc){var _0x53b1b8={};_0x53b1b8[_0x5f47cc]={'$like':'%'+_0x318924[_0xb7bf('0x32')][_0xb7bf('0x3b')]+'%'};return _0x53b1b8;})});}_0x34d2de=_[_0xb7bf('0x3e')]({},_0x34d2de,_0x318924[_0xb7bf('0x3f')]);return _0x421b29[_0xb7bf('0x4d')](_0x34d2de);}})[_0xb7bf('0x23')](function(_0x4b3890){if(_0x4b3890){_0x22bb79=_0x4b3890[_0xb7bf('0x34')];if(!_0x318924[_0xb7bf('0x32')][_0xb7bf('0x35')](_0xb7bf('0x36'))){_0x34d2de['limit']=qs[_0xb7bf('0x37')](_0x318924[_0xb7bf('0x32')][_0xb7bf('0x37')]);_0x34d2de[_0xb7bf('0x1c')]=qs[_0xb7bf('0x1c')](_0x318924[_0xb7bf('0x32')][_0xb7bf('0x1c')]);}return _0x421b29[_0xb7bf('0x4d')](_0x34d2de);}})[_0xb7bf('0x23')](function(_0xebedfe){if(_0xebedfe){return _0xebedfe?{'count':_0x22bb79,'rows':_0xebedfe}:null;}})['then'](respondWithResult(_0x1ce29a,null))[_0xb7bf('0x42')](handleError(_0x1ce29a,null));};exports['getFields']=function(_0x3ce043,_0x38f896,_0x3950c4){var _0x58a21d={};var _0x3ed33a={};var _0x3ba489;var _0x503d80;return db['FreshsalesConfiguration'][_0xb7bf('0x4e')]({'where':{'id':_0x3ce043['params']['id']}})['then'](handleEntityNotFound(_0x38f896,null))[_0xb7bf('0x23')](function(_0x878c2f){if(_0x878c2f){_0x3ba489=_0x878c2f;_0x3ed33a[_0xb7bf('0x2e')]=_[_0xb7bf('0x44')](db[_0xb7bf('0x4b')]['rawAttributes']);_0x3ed33a[_0xb7bf('0x32')]=_[_0xb7bf('0x44')](_0x3ce043[_0xb7bf('0x32')]);_0x3ed33a[_0xb7bf('0x2f')]=_['intersection'](_0x3ed33a[_0xb7bf('0x2e')],_0x3ed33a['query']);_0x58a21d[_0xb7bf('0x31')]=_[_0xb7bf('0x30')](_0x3ed33a[_0xb7bf('0x2e')],qs[_0xb7bf('0x33')](_0x3ce043[_0xb7bf('0x32')][_0xb7bf('0x33')]));_0x58a21d[_0xb7bf('0x31')]=_0x58a21d[_0xb7bf('0x31')][_0xb7bf('0x34')]?_0x58a21d[_0xb7bf('0x31')]:_0x3ed33a[_0xb7bf('0x2e')];_0x58a21d[_0xb7bf('0x4c')]=qs[_0xb7bf('0x38')](_0x3ce043[_0xb7bf('0x32')]['sort']);_0x58a21d[_0xb7bf('0x39')]=qs[_0xb7bf('0x2f')](_['pick'](_0x3ce043[_0xb7bf('0x32')],_0x3ed33a[_0xb7bf('0x2f')]));if(_0x3ce043[_0xb7bf('0x32')]['filter']){_0x58a21d[_0xb7bf('0x39')]=_['merge'](_0x58a21d[_0xb7bf('0x39')],{'$or':_[_0xb7bf('0x2a')](_0x58a21d[_0xb7bf('0x31')],function(_0x411b0b){var _0x4e45d8={};_0x4e45d8[_0x411b0b]={'$like':'%'+_0x3ce043['query'][_0xb7bf('0x3b')]+'%'};return _0x4e45d8;})});}_0x58a21d=_[_0xb7bf('0x3e')]({},_0x58a21d,_0x3ce043[_0xb7bf('0x3f')]);return _0x3ba489['getFields'](_0x58a21d);}})['then'](function(_0x25d9c2){if(_0x25d9c2){_0x503d80=_0x25d9c2['length'];if(!_0x3ce043[_0xb7bf('0x32')][_0xb7bf('0x35')](_0xb7bf('0x36'))){_0x58a21d[_0xb7bf('0x37')]=qs[_0xb7bf('0x37')](_0x3ce043[_0xb7bf('0x32')][_0xb7bf('0x37')]);_0x58a21d[_0xb7bf('0x1c')]=qs[_0xb7bf('0x1c')](_0x3ce043[_0xb7bf('0x32')][_0xb7bf('0x1c')]);}return _0x3ba489[_0xb7bf('0x4f')](_0x58a21d);}})[_0xb7bf('0x23')](function(_0x18caa8){if(_0x18caa8){return _0x18caa8?{'count':_0x503d80,'rows':_0x18caa8}:null;}})[_0xb7bf('0x23')](respondWithResult(_0x38f896,null))[_0xb7bf('0x42')](handleError(_0x38f896,null));};
\ No newline at end of file
+var _0xfa4f=['save','then','destroy','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','options','FreshsalesConfiguration','includeAll','include','rows','catch','show','params','find','create','body','findOne','FreshsalesField','rawAttributes','order','filter','getSubjects','getDescriptions','getFields','zip-dir','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject'];(function(_0x15b2af,_0xae2ce8){var _0x2c8fc3=function(_0x3aecc7){while(--_0x3aecc7){_0x15b2af['push'](_0x15b2af['shift']());}};_0x2c8fc3(++_0xae2ce8);}(_0xfa4f,0x11a));var _0xffa4=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xfa4f[_0x4ff09b];return _0x3f5c2e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xffa4('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xffa4('0x1'));var moment=require(_0xffa4('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xffa4('0x3'));var util=require('util');var path=require(_0xffa4('0x4'));var sox=require('sox');var csv=require(_0xffa4('0x5'));var ejs=require(_0xffa4('0x6'));var fs=require('fs');var fs_extra=require(_0xffa4('0x7'));var _=require(_0xffa4('0x8'));var squel=require(_0xffa4('0x9'));var crypto=require('crypto');var jsforce=require(_0xffa4('0xa'));var deskjs=require(_0xffa4('0xb'));var toCsv=require('to-csv');var querystring=require(_0xffa4('0xc'));var Papa=require(_0xffa4('0xd'));var Redis=require(_0xffa4('0xe'));var authService=require(_0xffa4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xffa4('0x10'));var hardwareService=require(_0xffa4('0x11'));var logger=require(_0xffa4('0x12'))(_0xffa4('0x13'));var utils=require(_0xffa4('0x14'));var config=require(_0xffa4('0x15'));var licenseUtil=require(_0xffa4('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x34e631,_0x325c96){_0x325c96=_0x325c96||0xcc;return function(_0x5b6287){if(_0x5b6287){return _0x34e631[_0xffa4('0x17')](_0x325c96);}return _0x34e631[_0xffa4('0x18')](_0x325c96)[_0xffa4('0x19')]();};}function respondWithResult(_0x5bbed0,_0x1a97b4){_0x1a97b4=_0x1a97b4||0xc8;return function(_0x2dde7b){if(_0x2dde7b){return _0x5bbed0[_0xffa4('0x18')](_0x1a97b4)['json'](_0x2dde7b);}};}function respondWithFilteredResult(_0x1ad72d,_0x16bfb4){return function(_0xe01b71){if(_0xe01b71){var _0x29a317=typeof _0x16bfb4['offset']===_0xffa4('0x1a')&&typeof _0x16bfb4[_0xffa4('0x1b')]==='undefined';var _0xdfbb06=_0xe01b71[_0xffa4('0x1c')];var _0x5901d0=_0x29a317?0x0:_0x16bfb4[_0xffa4('0x1d')];var _0x3da02f=_0x29a317?_0xe01b71[_0xffa4('0x1c')]:_0x16bfb4[_0xffa4('0x1d')]+_0x16bfb4['limit'];var _0x5185cb;if(_0x3da02f>=_0xdfbb06){_0x3da02f=_0xdfbb06;_0x5185cb=0xc8;}else{_0x5185cb=0xce;}_0x1ad72d[_0xffa4('0x18')](_0x5185cb);return _0x1ad72d[_0xffa4('0x1e')](_0xffa4('0x1f'),_0x5901d0+'-'+_0x3da02f+'/'+_0xdfbb06)['json'](_0xe01b71);}return null;};}function patchUpdates(_0x1a9b98){return function(_0x7caa16){try{jsonpatch[_0xffa4('0x20')](_0x7caa16,_0x1a9b98,!![]);}catch(_0x1a9726){return BPromise[_0xffa4('0x21')](_0x1a9726);}return _0x7caa16[_0xffa4('0x22')]();};}function saveUpdates(_0x3b2653,_0xda5abb){return function(_0x5007dd){if(_0x5007dd){return _0x5007dd['update'](_0x3b2653)[_0xffa4('0x23')](function(_0x59066b){return _0x59066b;});}return null;};}function removeEntity(_0x4cfc47,_0x2855f7){return function(_0x4157db){if(_0x4157db){return _0x4157db[_0xffa4('0x24')]()['then'](function(){_0x4cfc47[_0xffa4('0x18')](0xcc)[_0xffa4('0x19')]();});}};}function handleEntityNotFound(_0x2d00d4,_0x489380){return function(_0x42a877){if(!_0x42a877){_0x2d00d4['sendStatus'](0x194);}return _0x42a877;};}function handleError(_0x5f5a27,_0x5ad4e1){_0x5ad4e1=_0x5ad4e1||0x1f4;return function(_0x1ac603){logger[_0xffa4('0x25')](_0x1ac603[_0xffa4('0x26')]);if(_0x1ac603[_0xffa4('0x27')]){delete _0x1ac603[_0xffa4('0x27')];}_0x5f5a27[_0xffa4('0x18')](_0x5ad4e1)[_0xffa4('0x28')](_0x1ac603);};}exports[_0xffa4('0x29')]=function(_0x4f2840,_0x1209ea){var _0x2eff15={},_0x25eea0={},_0x15f879={'count':0x0,'rows':[]};var _0x3f8b3f=_[_0xffa4('0x2a')](db['FreshsalesConfiguration']['rawAttributes'],function(_0x4e47f8){return{'name':_0x4e47f8[_0xffa4('0x2b')],'type':_0x4e47f8[_0xffa4('0x2c')][_0xffa4('0x2d')]};});_0x25eea0['model']=_[_0xffa4('0x2a')](_0x3f8b3f,_0xffa4('0x27'));_0x25eea0[_0xffa4('0x2e')]=_[_0xffa4('0x2f')](_0x4f2840[_0xffa4('0x2e')]);_0x25eea0[_0xffa4('0x30')]=_[_0xffa4('0x31')](_0x25eea0[_0xffa4('0x32')],_0x25eea0[_0xffa4('0x2e')]);_0x2eff15[_0xffa4('0x33')]=_[_0xffa4('0x31')](_0x25eea0['model'],qs[_0xffa4('0x34')](_0x4f2840[_0xffa4('0x2e')]['fields']));_0x2eff15[_0xffa4('0x33')]=_0x2eff15[_0xffa4('0x33')][_0xffa4('0x35')]?_0x2eff15[_0xffa4('0x33')]:_0x25eea0['model'];if(!_0x4f2840[_0xffa4('0x2e')][_0xffa4('0x36')](_0xffa4('0x37'))){_0x2eff15[_0xffa4('0x1b')]=qs[_0xffa4('0x1b')](_0x4f2840[_0xffa4('0x2e')][_0xffa4('0x1b')]);_0x2eff15['offset']=qs['offset'](_0x4f2840['query'][_0xffa4('0x1d')]);}_0x2eff15['order']=qs[_0xffa4('0x38')](_0x4f2840[_0xffa4('0x2e')][_0xffa4('0x38')]);_0x2eff15[_0xffa4('0x39')]=qs[_0xffa4('0x30')](_[_0xffa4('0x3a')](_0x4f2840[_0xffa4('0x2e')],_0x25eea0[_0xffa4('0x30')]),_0x3f8b3f);if(_0x4f2840[_0xffa4('0x2e')]['filter']){_0x2eff15[_0xffa4('0x39')]=_[_0xffa4('0x3b')](_0x2eff15['where'],{'$or':_[_0xffa4('0x2a')](_0x3f8b3f,function(_0x119d35){if(_0x119d35['type']!=='VIRTUAL'){var _0x4769e1={};_0x4769e1[_0x119d35[_0xffa4('0x27')]]={'$like':'%'+_0x4f2840['query']['filter']+'%'};return _0x4769e1;}})});}_0x2eff15=_[_0xffa4('0x3b')]({},_0x2eff15,_0x4f2840[_0xffa4('0x3c')]);var _0x15d190={'where':_0x2eff15[_0xffa4('0x39')]};return db[_0xffa4('0x3d')][_0xffa4('0x1c')](_0x15d190)['then'](function(_0x2a258a){_0x15f879[_0xffa4('0x1c')]=_0x2a258a;if(_0x4f2840[_0xffa4('0x2e')][_0xffa4('0x3e')]){_0x2eff15[_0xffa4('0x3f')]=[{'all':!![]}];}return db['FreshsalesConfiguration']['findAll'](_0x2eff15);})[_0xffa4('0x23')](function(_0x2be477){_0x15f879[_0xffa4('0x40')]=_0x2be477;return _0x15f879;})[_0xffa4('0x23')](respondWithFilteredResult(_0x1209ea,_0x2eff15))[_0xffa4('0x41')](handleError(_0x1209ea,null));};exports[_0xffa4('0x42')]=function(_0x551a29,_0x2985f3){var _0x4f1747={'raw':![],'where':{'id':_0x551a29[_0xffa4('0x43')]['id']}},_0x41a34b={};_0x41a34b[_0xffa4('0x32')]=_[_0xffa4('0x2f')](db[_0xffa4('0x3d')]['rawAttributes']);_0x41a34b['query']=_[_0xffa4('0x2f')](_0x551a29['query']);_0x41a34b['filters']=_[_0xffa4('0x31')](_0x41a34b[_0xffa4('0x32')],_0x41a34b['query']);_0x4f1747['attributes']=_['intersection'](_0x41a34b['model'],qs['fields'](_0x551a29[_0xffa4('0x2e')][_0xffa4('0x34')]));_0x4f1747['attributes']=_0x4f1747[_0xffa4('0x33')][_0xffa4('0x35')]?_0x4f1747[_0xffa4('0x33')]:_0x41a34b[_0xffa4('0x32')];if(_0x551a29[_0xffa4('0x2e')][_0xffa4('0x3e')]){_0x4f1747[_0xffa4('0x3f')]=[{'all':!![]}];}_0x4f1747=_['merge']({},_0x4f1747,_0x551a29[_0xffa4('0x3c')]);return db[_0xffa4('0x3d')][_0xffa4('0x44')](_0x4f1747)['then'](handleEntityNotFound(_0x2985f3,null))[_0xffa4('0x23')](respondWithResult(_0x2985f3,null))[_0xffa4('0x41')](handleError(_0x2985f3,null));};exports[_0xffa4('0x45')]=function(_0x1e8924,_0x2960dd){return db[_0xffa4('0x3d')][_0xffa4('0x45')](_0x1e8924['body'],{})['then'](respondWithResult(_0x2960dd,0xc9))['catch'](handleError(_0x2960dd,null));};exports['update']=function(_0x55472d,_0x53b910){if(_0x55472d[_0xffa4('0x46')]['id']){delete _0x55472d[_0xffa4('0x46')]['id'];}return db[_0xffa4('0x3d')][_0xffa4('0x44')]({'where':{'id':_0x55472d[_0xffa4('0x43')]['id']}})[_0xffa4('0x23')](handleEntityNotFound(_0x53b910,null))[_0xffa4('0x23')](saveUpdates(_0x55472d[_0xffa4('0x46')],null))[_0xffa4('0x23')](respondWithResult(_0x53b910,null))[_0xffa4('0x41')](handleError(_0x53b910,null));};exports['destroy']=function(_0x39f4c2,_0x5f0c6e){return db['FreshsalesConfiguration'][_0xffa4('0x44')]({'where':{'id':_0x39f4c2[_0xffa4('0x43')]['id']}})[_0xffa4('0x23')](handleEntityNotFound(_0x5f0c6e,null))[_0xffa4('0x23')](removeEntity(_0x5f0c6e,null))[_0xffa4('0x41')](handleError(_0x5f0c6e,null));};exports['getSubjects']=function(_0x11746c,_0x134c1e,_0x5715cc){var _0x59b1b4={};var _0xda79b={};var _0x27dbbf;var _0x4509fb;return db[_0xffa4('0x3d')][_0xffa4('0x47')]({'where':{'id':_0x11746c[_0xffa4('0x43')]['id']}})[_0xffa4('0x23')](handleEntityNotFound(_0x134c1e,null))[_0xffa4('0x23')](function(_0x24c5c5){if(_0x24c5c5){_0x27dbbf=_0x24c5c5;_0xda79b['model']=_['keys'](db[_0xffa4('0x48')][_0xffa4('0x49')]);_0xda79b[_0xffa4('0x2e')]=_[_0xffa4('0x2f')](_0x11746c['query']);_0xda79b[_0xffa4('0x30')]=_['intersection'](_0xda79b[_0xffa4('0x32')],_0xda79b['query']);_0x59b1b4[_0xffa4('0x33')]=_[_0xffa4('0x31')](_0xda79b[_0xffa4('0x32')],qs['fields'](_0x11746c[_0xffa4('0x2e')][_0xffa4('0x34')]));_0x59b1b4['attributes']=_0x59b1b4['attributes'][_0xffa4('0x35')]?_0x59b1b4[_0xffa4('0x33')]:_0xda79b['model'];_0x59b1b4[_0xffa4('0x4a')]=qs[_0xffa4('0x38')](_0x11746c[_0xffa4('0x2e')][_0xffa4('0x38')]);_0x59b1b4[_0xffa4('0x39')]=qs['filters'](_[_0xffa4('0x3a')](_0x11746c['query'],_0xda79b['filters']));if(_0x11746c[_0xffa4('0x2e')][_0xffa4('0x4b')]){_0x59b1b4[_0xffa4('0x39')]=_[_0xffa4('0x3b')](_0x59b1b4[_0xffa4('0x39')],{'$or':_[_0xffa4('0x2a')](_0x59b1b4[_0xffa4('0x33')],function(_0xd9e0b6){var _0x497d62={};_0x497d62[_0xd9e0b6]={'$like':'%'+_0x11746c[_0xffa4('0x2e')][_0xffa4('0x4b')]+'%'};return _0x497d62;})});}_0x59b1b4=_[_0xffa4('0x3b')]({},_0x59b1b4,_0x11746c['options']);return _0x27dbbf[_0xffa4('0x4c')](_0x59b1b4);}})[_0xffa4('0x23')](function(_0x3f35c9){if(_0x3f35c9){_0x4509fb=_0x3f35c9[_0xffa4('0x35')];if(!_0x11746c['query'][_0xffa4('0x36')](_0xffa4('0x37'))){_0x59b1b4[_0xffa4('0x1b')]=qs[_0xffa4('0x1b')](_0x11746c[_0xffa4('0x2e')]['limit']);_0x59b1b4['offset']=qs[_0xffa4('0x1d')](_0x11746c[_0xffa4('0x2e')][_0xffa4('0x1d')]);}return _0x27dbbf['getSubjects'](_0x59b1b4);}})['then'](function(_0x4a9cf7){if(_0x4a9cf7){return _0x4a9cf7?{'count':_0x4509fb,'rows':_0x4a9cf7}:null;}})[_0xffa4('0x23')](respondWithResult(_0x134c1e,null))[_0xffa4('0x41')](handleError(_0x134c1e,null));};exports[_0xffa4('0x4d')]=function(_0x45c24e,_0x1e4ef0,_0x3c818a){var _0x35650e={};var _0x39dd34={};var _0x504770;var _0x57d762;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x45c24e[_0xffa4('0x43')]['id']}})['then'](handleEntityNotFound(_0x1e4ef0,null))['then'](function(_0x253bf2){if(_0x253bf2){_0x504770=_0x253bf2;_0x39dd34[_0xffa4('0x32')]=_[_0xffa4('0x2f')](db[_0xffa4('0x48')]['rawAttributes']);_0x39dd34['query']=_['keys'](_0x45c24e[_0xffa4('0x2e')]);_0x39dd34[_0xffa4('0x30')]=_[_0xffa4('0x31')](_0x39dd34[_0xffa4('0x32')],_0x39dd34[_0xffa4('0x2e')]);_0x35650e[_0xffa4('0x33')]=_['intersection'](_0x39dd34[_0xffa4('0x32')],qs['fields'](_0x45c24e[_0xffa4('0x2e')][_0xffa4('0x34')]));_0x35650e['attributes']=_0x35650e[_0xffa4('0x33')][_0xffa4('0x35')]?_0x35650e[_0xffa4('0x33')]:_0x39dd34[_0xffa4('0x32')];_0x35650e[_0xffa4('0x4a')]=qs[_0xffa4('0x38')](_0x45c24e[_0xffa4('0x2e')]['sort']);_0x35650e[_0xffa4('0x39')]=qs[_0xffa4('0x30')](_[_0xffa4('0x3a')](_0x45c24e[_0xffa4('0x2e')],_0x39dd34[_0xffa4('0x30')]));if(_0x45c24e[_0xffa4('0x2e')][_0xffa4('0x4b')]){_0x35650e['where']=_[_0xffa4('0x3b')](_0x35650e['where'],{'$or':_[_0xffa4('0x2a')](_0x35650e[_0xffa4('0x33')],function(_0x53f043){var _0x3ba4a2={};_0x3ba4a2[_0x53f043]={'$like':'%'+_0x45c24e[_0xffa4('0x2e')][_0xffa4('0x4b')]+'%'};return _0x3ba4a2;})});}_0x35650e=_[_0xffa4('0x3b')]({},_0x35650e,_0x45c24e['options']);return _0x504770[_0xffa4('0x4d')](_0x35650e);}})['then'](function(_0x2faeea){if(_0x2faeea){_0x57d762=_0x2faeea[_0xffa4('0x35')];if(!_0x45c24e['query'][_0xffa4('0x36')](_0xffa4('0x37'))){_0x35650e[_0xffa4('0x1b')]=qs[_0xffa4('0x1b')](_0x45c24e[_0xffa4('0x2e')][_0xffa4('0x1b')]);_0x35650e['offset']=qs[_0xffa4('0x1d')](_0x45c24e[_0xffa4('0x2e')][_0xffa4('0x1d')]);}return _0x504770[_0xffa4('0x4d')](_0x35650e);}})[_0xffa4('0x23')](function(_0x503698){if(_0x503698){return _0x503698?{'count':_0x57d762,'rows':_0x503698}:null;}})[_0xffa4('0x23')](respondWithResult(_0x1e4ef0,null))[_0xffa4('0x41')](handleError(_0x1e4ef0,null));};exports[_0xffa4('0x4e')]=function(_0x2af5a6,_0x2fcd3b,_0x57b879){var _0x26f278={};var _0x3269f8={};var _0x5d1ec9;var _0x2efc23;return db[_0xffa4('0x3d')][_0xffa4('0x47')]({'where':{'id':_0x2af5a6[_0xffa4('0x43')]['id']}})[_0xffa4('0x23')](handleEntityNotFound(_0x2fcd3b,null))[_0xffa4('0x23')](function(_0x2bbc9e){if(_0x2bbc9e){_0x5d1ec9=_0x2bbc9e;_0x3269f8[_0xffa4('0x32')]=_[_0xffa4('0x2f')](db[_0xffa4('0x48')][_0xffa4('0x49')]);_0x3269f8[_0xffa4('0x2e')]=_[_0xffa4('0x2f')](_0x2af5a6[_0xffa4('0x2e')]);_0x3269f8['filters']=_[_0xffa4('0x31')](_0x3269f8['model'],_0x3269f8[_0xffa4('0x2e')]);_0x26f278[_0xffa4('0x33')]=_['intersection'](_0x3269f8[_0xffa4('0x32')],qs[_0xffa4('0x34')](_0x2af5a6['query'][_0xffa4('0x34')]));_0x26f278['attributes']=_0x26f278[_0xffa4('0x33')][_0xffa4('0x35')]?_0x26f278[_0xffa4('0x33')]:_0x3269f8[_0xffa4('0x32')];_0x26f278[_0xffa4('0x4a')]=qs['sort'](_0x2af5a6['query'][_0xffa4('0x38')]);_0x26f278[_0xffa4('0x39')]=qs[_0xffa4('0x30')](_[_0xffa4('0x3a')](_0x2af5a6[_0xffa4('0x2e')],_0x3269f8[_0xffa4('0x30')]));if(_0x2af5a6[_0xffa4('0x2e')][_0xffa4('0x4b')]){_0x26f278[_0xffa4('0x39')]=_[_0xffa4('0x3b')](_0x26f278[_0xffa4('0x39')],{'$or':_[_0xffa4('0x2a')](_0x26f278[_0xffa4('0x33')],function(_0x1a7956){var _0x3ffcce={};_0x3ffcce[_0x1a7956]={'$like':'%'+_0x2af5a6[_0xffa4('0x2e')][_0xffa4('0x4b')]+'%'};return _0x3ffcce;})});}_0x26f278=_[_0xffa4('0x3b')]({},_0x26f278,_0x2af5a6[_0xffa4('0x3c')]);return _0x5d1ec9['getFields'](_0x26f278);}})['then'](function(_0x4efefd){if(_0x4efefd){_0x2efc23=_0x4efefd['length'];if(!_0x2af5a6[_0xffa4('0x2e')][_0xffa4('0x36')](_0xffa4('0x37'))){_0x26f278[_0xffa4('0x1b')]=qs[_0xffa4('0x1b')](_0x2af5a6['query'][_0xffa4('0x1b')]);_0x26f278[_0xffa4('0x1d')]=qs['offset'](_0x2af5a6[_0xffa4('0x2e')][_0xffa4('0x1d')]);}return _0x5d1ec9[_0xffa4('0x4e')](_0x26f278);}})[_0xffa4('0x23')](function(_0x3e4c5f){if(_0x3e4c5f){return _0x3e4c5f?{'count':_0x2efc23,'rows':_0x3e4c5f}:null;}})['then'](respondWithResult(_0x2fcd3b,null))[_0xffa4('0x41')](handleError(_0x2fcd3b,null));};
\ No newline at end of file
index 9b2c826..185ed54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b6f=['util','../../config/logger','api','moment','request-promise','path','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration','int_freshsales_configurations','lodash'];(function(_0x14a0a0,_0x45d0cf){var _0x56b651=function(_0x1fae09){while(--_0x1fae09){_0x14a0a0['push'](_0x14a0a0['shift']());}};_0x56b651(++_0x45d0cf);}(_0x4b6f,0x14f));var _0xf4b6=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x4b6f[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0xf4b6('0x0'));var util=require(_0xf4b6('0x1'));var logger=require(_0xf4b6('0x2'))(_0xf4b6('0x3'));var moment=require(_0xf4b6('0x4'));var BPromise=require('bluebird');var rp=require(_0xf4b6('0x5'));var fs=require('fs');var path=require(_0xf4b6('0x6'));var rimraf=require('rimraf');var config=require(_0xf4b6('0x7'));var attributes=require(_0xf4b6('0x8'));module['exports']=function(_0x3bc322,_0x3e512e){return _0x3bc322[_0xf4b6('0x9')](_0xf4b6('0xa'),attributes,{'tableName':_0xf4b6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x768f=['request-promise','path','../../config/environment','exports','define','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x1c9783,_0x428ceb){var _0x462761=function(_0x28f97f){while(--_0x28f97f){_0x1c9783['push'](_0x1c9783['shift']());}};_0x462761(++_0x428ceb);}(_0x768f,0x1ab));var _0xf768=function(_0x3a7dda,_0x2a4ecf){_0x3a7dda=_0x3a7dda-0x0;var _0x6b11c5=_0x768f[_0x3a7dda];return _0x6b11c5;};'use strict';var _=require(_0xf768('0x0'));var util=require(_0xf768('0x1'));var logger=require(_0xf768('0x2'))(_0xf768('0x3'));var moment=require(_0xf768('0x4'));var BPromise=require('bluebird');var rp=require(_0xf768('0x5'));var fs=require('fs');var path=require(_0xf768('0x6'));var rimraf=require('rimraf');var config=require(_0xf768('0x7'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0xf768('0x8')]=function(_0x157d27,_0x973991){return _0x157d27[_0xf768('0x9')](_0xf768('0xa'),attributes,{'tableName':_0xf768('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9492df..83c7cac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18e6=['error','code','message','result','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x336a9c,_0x4b32a0){var _0x4ecb53=function(_0x107cad){while(--_0x107cad){_0x336a9c['push'](_0x336a9c['shift']());}};_0x4ecb53(++_0x4b32a0);}(_0x18e6,0xad));var _0x618e=function(_0x3041ca,_0x596575){_0x3041ca=_0x3041ca-0x0;var _0x30e2cc=_0x18e6[_0x3041ca];return _0x30e2cc;};'use strict';var _=require('lodash');var util=require(_0x618e('0x0'));var moment=require('moment');var BPromise=require(_0x618e('0x1'));var rs=require(_0x618e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x618e('0x3'))['db'];var utils=require(_0x618e('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x618e('0x5'));var client=jayson[_0x618e('0x6')][_0x618e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x19e667,_0x4b4201,_0x247a5b){return new BPromise(function(_0x2eb366,_0x2ca601){return client[_0x618e('0x8')](_0x19e667,_0x247a5b)[_0x618e('0x9')](function(_0x5e78cb){logger[_0x618e('0xa')](_0x618e('0xb'),_0x4b4201,_0x618e('0xc'));logger[_0x618e('0xd')](_0x618e('0xe'),_0x4b4201,_0x618e('0xc'),JSON[_0x618e('0xf')](_0x5e78cb));if(_0x5e78cb[_0x618e('0x10')]){if(_0x5e78cb[_0x618e('0x10')][_0x618e('0x11')]===0x1f4){logger[_0x618e('0x10')](_0x618e('0xb'),_0x4b4201,_0x5e78cb['error'][_0x618e('0x12')]);return _0x2ca601(_0x5e78cb['error'][_0x618e('0x12')]);}logger[_0x618e('0x10')](_0x618e('0xb'),_0x4b4201,_0x5e78cb[_0x618e('0x10')]['message']);return _0x2eb366(_0x5e78cb[_0x618e('0x10')][_0x618e('0x12')]);}else{logger[_0x618e('0xa')](_0x618e('0xb'),_0x4b4201,_0x618e('0xc'));_0x2eb366(_0x5e78cb[_0x618e('0x13')][_0x618e('0x12')]);}})[_0x618e('0x14')](function(_0x181e5a){logger[_0x618e('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x4b4201,_0x181e5a);_0x2ca601(_0x181e5a);});});}
\ No newline at end of file
+var _0xf69f=['request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','FreshsalesConfiguration,\x20%s,\x20%s'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xf69f,0xa0));var _0xff69=function(_0x4cf2eb,_0xd1a423){_0x4cf2eb=_0x4cf2eb-0x0;var _0x10f9e8=_0xf69f[_0x4cf2eb];return _0x10f9e8;};'use strict';var _=require(_0xff69('0x0'));var util=require(_0xff69('0x1'));var moment=require(_0xff69('0x2'));var BPromise=require(_0xff69('0x3'));var rs=require(_0xff69('0x4'));var fs=require('fs');var Redis=require(_0xff69('0x5'));var db=require(_0xff69('0x6'))['db'];var utils=require(_0xff69('0x7'));var logger=require(_0xff69('0x8'))(_0xff69('0x9'));var config=require(_0xff69('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xff69('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1dec23,_0xdf3fff,_0x22dfbf){return new BPromise(function(_0x1185ce,_0x14834c){return client[_0xff69('0xc')](_0x1dec23,_0x22dfbf)[_0xff69('0xd')](function(_0x247107){logger['info'](_0xff69('0xe'),_0xdf3fff,_0xff69('0xf'));logger[_0xff69('0x10')](_0xff69('0x11'),_0xdf3fff,_0xff69('0xf'),JSON[_0xff69('0x12')](_0x247107));if(_0x247107[_0xff69('0x13')]){if(_0x247107[_0xff69('0x13')][_0xff69('0x14')]===0x1f4){logger[_0xff69('0x13')](_0xff69('0xe'),_0xdf3fff,_0x247107[_0xff69('0x13')]['message']);return _0x14834c(_0x247107[_0xff69('0x13')][_0xff69('0x15')]);}logger[_0xff69('0x13')](_0xff69('0xe'),_0xdf3fff,_0x247107[_0xff69('0x13')][_0xff69('0x15')]);return _0x1185ce(_0x247107[_0xff69('0x13')][_0xff69('0x15')]);}else{logger[_0xff69('0x16')]('FreshsalesConfiguration,\x20%s,\x20%s',_0xdf3fff,_0xff69('0xf'));_0x1185ce(_0x247107[_0xff69('0x17')][_0xff69('0x15')]);}})[_0xff69('0x18')](function(_0x773f70){logger[_0xff69('0x13')](_0xff69('0xe'),_0xdf3fff,_0x773f70);_0x14834c(_0x773f70);});});}
\ No newline at end of file
index 486ed5a..8037b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb945=['exports','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','/:id','isAuthenticated','show','put','update','delete'];(function(_0x5b2195,_0x4f6d17){var _0x564d5a=function(_0x5cccab){while(--_0x5cccab){_0x5b2195['push'](_0x5b2195['shift']());}};_0x564d5a(++_0x4f6d17);}(_0xb945,0x97));var _0x5b94=function(_0x1d7d56,_0x1104cd){_0x1d7d56=_0x1d7d56-0x0;var _0x38a3d2=_0xb945[_0x1d7d56];return _0x38a3d2;};'use strict';var multer=require(_0x5b94('0x0'));var util=require('util');var path=require(_0x5b94('0x1'));var timeout=require('connect-timeout');var express=require(_0x5b94('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5b94('0x3'));var interaction=require(_0x5b94('0x4'));var config=require(_0x5b94('0x5'));var controller=require(_0x5b94('0x6'));router[_0x5b94('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5b94('0x7')](_0x5b94('0x8'),auth[_0x5b94('0x9')](),controller[_0x5b94('0xa')]);router['post']('/',auth[_0x5b94('0x9')](),controller['create']);router[_0x5b94('0xb')](_0x5b94('0x8'),auth[_0x5b94('0x9')](),controller[_0x5b94('0xc')]);router[_0x5b94('0xd')](_0x5b94('0x8'),auth[_0x5b94('0x9')](),controller['destroy']);module[_0x5b94('0xe')]=router;
\ No newline at end of file
+var _0xb821=['put','update','delete','destroy','exports','util','path','Router','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','show','post','create'];(function(_0x2a211a,_0x20be49){var _0x460f5f=function(_0x2f49d6){while(--_0x2f49d6){_0x2a211a['push'](_0x2a211a['shift']());}};_0x460f5f(++_0x20be49);}(_0xb821,0xa7));var _0x1b82=function(_0x5d6aeb,_0x26d428){_0x5d6aeb=_0x5d6aeb-0x0;var _0x2ce146=_0xb821[_0x5d6aeb];return _0x2ce146;};'use strict';var multer=require('multer');var util=require(_0x1b82('0x0'));var path=require(_0x1b82('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1b82('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1b82('0x3'));var config=require(_0x1b82('0x4'));var controller=require(_0x1b82('0x5'));router[_0x1b82('0x6')]('/',auth['isAuthenticated'](),controller[_0x1b82('0x7')]);router[_0x1b82('0x6')](_0x1b82('0x8'),auth[_0x1b82('0x9')](),controller[_0x1b82('0xa')]);router[_0x1b82('0xb')]('/',auth[_0x1b82('0x9')](),controller[_0x1b82('0xc')]);router[_0x1b82('0xd')]('/:id',auth[_0x1b82('0x9')](),controller[_0x1b82('0xe')]);router[_0x1b82('0xf')](_0x1b82('0x8'),auth[_0x1b82('0x9')](),controller[_0x1b82('0x10')]);module[_0x1b82('0x11')]=router;
\ No newline at end of file
index 9376b12..b415555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e10=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e10,0xba));var _0x04e1=function(_0x611ccf,_0x73219f){_0x611ccf=_0x611ccf-0x0;var _0x41160b=_0x4e10[_0x611ccf];return _0x41160b;};'use strict';var Sequelize=require(_0x04e1('0x0'));module[_0x04e1('0x1')]={'type':{'type':Sequelize[_0x04e1('0x2')](_0x04e1('0x3'),_0x04e1('0x4'),_0x04e1('0x5'),_0x04e1('0x6'),_0x04e1('0x7')),'defaultValue':_0x04e1('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x04e1('0x2')](_0x04e1('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x04e1('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x04e1('0x8')]},'customField':{'type':Sequelize[_0x04e1('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x04e1('0x8')]}};
\ No newline at end of file
+var _0x22d5=['variable','customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x5bc6cf,_0x11ecff){var _0xb448d1=function(_0xedbad3){while(--_0xedbad3){_0x5bc6cf['push'](_0x5bc6cf['shift']());}};_0xb448d1(++_0x11ecff);}(_0x22d5,0xcb));var _0x522d=function(_0x1658af,_0x5dbcab){_0x1658af=_0x1658af-0x0;var _0x30d065=_0x22d5[_0x1658af];return _0x30d065;};'use strict';var Sequelize=require(_0x522d('0x0'));module[_0x522d('0x1')]={'type':{'type':Sequelize[_0x522d('0x2')](_0x522d('0x3'),_0x522d('0x4'),_0x522d('0x5'),_0x522d('0x6'),_0x522d('0x7')),'defaultValue':_0x522d('0x3')},'content':{'type':Sequelize[_0x522d('0x8')]},'key':{'type':Sequelize[_0x522d('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0x522d('0x3'),_0x522d('0x4'),_0x522d('0x5'))},'keyContent':{'type':Sequelize[_0x522d('0x8')]},'idField':{'type':Sequelize[_0x522d('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x522d('0x8')]}};
\ No newline at end of file
index 30cbc75..a66fbfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b3d=['destroy','end','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','length','include','create','update','body','find','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','then'];(function(_0x522516,_0x1045d5){var _0x5853d7=function(_0x502d4b){while(--_0x502d4b){_0x522516['push'](_0x522516['shift']());}};_0x5853d7(++_0x1045d5);}(_0x8b3d,0x16e));var _0xd8b3=function(_0x94c548,_0x73babd){_0x94c548=_0x94c548-0x0;var _0x522cdd=_0x8b3d[_0x94c548];return _0x522cdd;};'use strict';var emlformat=require(_0xd8b3('0x0'));var rimraf=require(_0xd8b3('0x1'));var zipdir=require(_0xd8b3('0x2'));var jsonpatch=require(_0xd8b3('0x3'));var rp=require(_0xd8b3('0x4'));var moment=require(_0xd8b3('0x5'));var BPromise=require(_0xd8b3('0x6'));var Mustache=require(_0xd8b3('0x7'));var util=require(_0xd8b3('0x8'));var path=require(_0xd8b3('0x9'));var sox=require(_0xd8b3('0xa'));var csv=require(_0xd8b3('0xb'));var ejs=require(_0xd8b3('0xc'));var fs=require('fs');var fs_extra=require(_0xd8b3('0xd'));var _=require(_0xd8b3('0xe'));var squel=require(_0xd8b3('0xf'));var crypto=require(_0xd8b3('0x10'));var jsforce=require(_0xd8b3('0x11'));var deskjs=require(_0xd8b3('0x12'));var toCsv=require(_0xd8b3('0xb'));var querystring=require(_0xd8b3('0x13'));var Papa=require(_0xd8b3('0x14'));var Redis=require(_0xd8b3('0x15'));var authService=require(_0xd8b3('0x16'));var qs=require(_0xd8b3('0x17'));var as=require(_0xd8b3('0x18'));var hardwareService=require(_0xd8b3('0x19'));var logger=require(_0xd8b3('0x1a'))(_0xd8b3('0x1b'));var utils=require(_0xd8b3('0x1c'));var config=require(_0xd8b3('0x1d'));var licenseUtil=require(_0xd8b3('0x1e'));var db=require(_0xd8b3('0x1f'))['db'];function respondWithStatusCode(_0x37948e,_0x1a7cab){_0x1a7cab=_0x1a7cab||0xcc;return function(_0xe43ec4){if(_0xe43ec4){return _0x37948e[_0xd8b3('0x20')](_0x1a7cab);}return _0x37948e['status'](_0x1a7cab)['end']();};}function respondWithResult(_0x3b1834,_0x39a9cf){_0x39a9cf=_0x39a9cf||0xc8;return function(_0x2d03a8){if(_0x2d03a8){return _0x3b1834[_0xd8b3('0x21')](_0x39a9cf)[_0xd8b3('0x22')](_0x2d03a8);}};}function respondWithFilteredResult(_0x2d4cf2,_0x3579e0){return function(_0x57718){if(_0x57718){var _0xc74ac0=typeof _0x3579e0[_0xd8b3('0x23')]==='undefined'&&typeof _0x3579e0['limit']===_0xd8b3('0x24');var _0x2ce798=_0x57718[_0xd8b3('0x25')];var _0x5b9f0a=_0xc74ac0?0x0:_0x3579e0[_0xd8b3('0x23')];var _0x48521e=_0xc74ac0?_0x57718[_0xd8b3('0x25')]:_0x3579e0[_0xd8b3('0x23')]+_0x3579e0[_0xd8b3('0x26')];var _0x199b87;if(_0x48521e>=_0x2ce798){_0x48521e=_0x2ce798;_0x199b87=0xc8;}else{_0x199b87=0xce;}_0x2d4cf2[_0xd8b3('0x21')](_0x199b87);return _0x2d4cf2[_0xd8b3('0x27')]('Content-Range',_0x5b9f0a+'-'+_0x48521e+'/'+_0x2ce798)[_0xd8b3('0x22')](_0x57718);}return null;};}function patchUpdates(_0x2a1d52){return function(_0x5c0be7){try{jsonpatch[_0xd8b3('0x28')](_0x5c0be7,_0x2a1d52,!![]);}catch(_0x5e4dd2){return BPromise[_0xd8b3('0x29')](_0x5e4dd2);}return _0x5c0be7[_0xd8b3('0x2a')]();};}function saveUpdates(_0x41db20,_0x31ee8a){return function(_0x4eff57){if(_0x4eff57){return _0x4eff57['update'](_0x41db20)[_0xd8b3('0x2b')](function(_0x125592){return _0x125592;});}return null;};}function removeEntity(_0x27bae4,_0x2202e2){return function(_0x2fdd12){if(_0x2fdd12){return _0x2fdd12[_0xd8b3('0x2c')]()['then'](function(){_0x27bae4[_0xd8b3('0x21')](0xcc)[_0xd8b3('0x2d')]();});}};}function handleEntityNotFound(_0x5a4a6a,_0x78184f){return function(_0x1a1713){if(!_0x1a1713){_0x5a4a6a[_0xd8b3('0x20')](0x194);}return _0x1a1713;};}function handleError(_0x625c94,_0x2e1329){_0x2e1329=_0x2e1329||0x1f4;return function(_0x4a95a0){logger['error'](_0x4a95a0[_0xd8b3('0x2e')]);if(_0x4a95a0[_0xd8b3('0x2f')]){delete _0x4a95a0[_0xd8b3('0x2f')];}_0x625c94[_0xd8b3('0x21')](_0x2e1329)[_0xd8b3('0x30')](_0x4a95a0);};}exports[_0xd8b3('0x31')]=function(_0x2bc327,_0x31e2ee){var _0x1ba43f={},_0x1dd5fc={},_0x241e81={'count':0x0,'rows':[]};var _0x1414a8=_[_0xd8b3('0x32')](db[_0xd8b3('0x33')][_0xd8b3('0x34')],function(_0x33c706){return{'name':_0x33c706[_0xd8b3('0x35')],'type':_0x33c706[_0xd8b3('0x36')][_0xd8b3('0x37')]};});_0x1dd5fc[_0xd8b3('0x38')]=_[_0xd8b3('0x32')](_0x1414a8,_0xd8b3('0x2f'));_0x1dd5fc[_0xd8b3('0x39')]=_[_0xd8b3('0x3a')](_0x2bc327[_0xd8b3('0x39')]);_0x1dd5fc['filters']=_[_0xd8b3('0x3b')](_0x1dd5fc[_0xd8b3('0x38')],_0x1dd5fc[_0xd8b3('0x39')]);_0x1ba43f[_0xd8b3('0x3c')]=_[_0xd8b3('0x3b')](_0x1dd5fc[_0xd8b3('0x38')],qs[_0xd8b3('0x3d')](_0x2bc327[_0xd8b3('0x39')][_0xd8b3('0x3d')]));_0x1ba43f[_0xd8b3('0x3c')]=_0x1ba43f[_0xd8b3('0x3c')]['length']?_0x1ba43f['attributes']:_0x1dd5fc['model'];if(!_0x2bc327[_0xd8b3('0x39')]['hasOwnProperty']('nolimit')){_0x1ba43f[_0xd8b3('0x26')]=qs[_0xd8b3('0x26')](_0x2bc327[_0xd8b3('0x39')]['limit']);_0x1ba43f[_0xd8b3('0x23')]=qs[_0xd8b3('0x23')](_0x2bc327[_0xd8b3('0x39')][_0xd8b3('0x23')]);}_0x1ba43f[_0xd8b3('0x3e')]=qs[_0xd8b3('0x3f')](_0x2bc327[_0xd8b3('0x39')]['sort']);_0x1ba43f[_0xd8b3('0x40')]=qs[_0xd8b3('0x41')](_[_0xd8b3('0x42')](_0x2bc327['query'],_0x1dd5fc[_0xd8b3('0x41')]),_0x1414a8);if(_0x2bc327['query'][_0xd8b3('0x43')]){_0x1ba43f[_0xd8b3('0x40')]=_['merge'](_0x1ba43f[_0xd8b3('0x40')],{'$or':_[_0xd8b3('0x32')](_0x1414a8,function(_0x5fd32b){if(_0x5fd32b[_0xd8b3('0x36')]!=='VIRTUAL'){var _0x104a66={};_0x104a66[_0x5fd32b[_0xd8b3('0x2f')]]={'$like':'%'+_0x2bc327[_0xd8b3('0x39')][_0xd8b3('0x43')]+'%'};return _0x104a66;}})});}_0x1ba43f=_[_0xd8b3('0x44')]({},_0x1ba43f,_0x2bc327[_0xd8b3('0x45')]);var _0x30a53f={'where':_0x1ba43f[_0xd8b3('0x40')]};return db['FreshsalesField']['count'](_0x30a53f)[_0xd8b3('0x2b')](function(_0x2b614b){_0x241e81['count']=_0x2b614b;if(_0x2bc327[_0xd8b3('0x39')][_0xd8b3('0x46')]){_0x1ba43f['include']=[{'all':!![]}];}return db['FreshsalesField'][_0xd8b3('0x47')](_0x1ba43f);})[_0xd8b3('0x2b')](function(_0xef681d){_0x241e81[_0xd8b3('0x48')]=_0xef681d;return _0x241e81;})[_0xd8b3('0x2b')](respondWithFilteredResult(_0x31e2ee,_0x1ba43f))[_0xd8b3('0x49')](handleError(_0x31e2ee,null));};exports[_0xd8b3('0x4a')]=function(_0x4e30f6,_0x59f2da){var _0x591b87={'raw':!![],'where':{'id':_0x4e30f6[_0xd8b3('0x4b')]['id']}},_0x50b564={};_0x50b564[_0xd8b3('0x38')]=_[_0xd8b3('0x3a')](db[_0xd8b3('0x33')][_0xd8b3('0x34')]);_0x50b564[_0xd8b3('0x39')]=_[_0xd8b3('0x3a')](_0x4e30f6[_0xd8b3('0x39')]);_0x50b564['filters']=_['intersection'](_0x50b564[_0xd8b3('0x38')],_0x50b564[_0xd8b3('0x39')]);_0x591b87['attributes']=_[_0xd8b3('0x3b')](_0x50b564[_0xd8b3('0x38')],qs['fields'](_0x4e30f6[_0xd8b3('0x39')][_0xd8b3('0x3d')]));_0x591b87[_0xd8b3('0x3c')]=_0x591b87[_0xd8b3('0x3c')][_0xd8b3('0x4c')]?_0x591b87['attributes']:_0x50b564[_0xd8b3('0x38')];if(_0x4e30f6[_0xd8b3('0x39')][_0xd8b3('0x46')]){_0x591b87[_0xd8b3('0x4d')]=[{'all':!![]}];}_0x591b87=_[_0xd8b3('0x44')]({},_0x591b87,_0x4e30f6[_0xd8b3('0x45')]);return db[_0xd8b3('0x33')]['find'](_0x591b87)[_0xd8b3('0x2b')](handleEntityNotFound(_0x59f2da,null))[_0xd8b3('0x2b')](respondWithResult(_0x59f2da,null))['catch'](handleError(_0x59f2da,null));};exports[_0xd8b3('0x4e')]=function(_0x4d2b24,_0x4c5b06){return db[_0xd8b3('0x33')]['create'](_0x4d2b24['body'],{})[_0xd8b3('0x2b')](respondWithResult(_0x4c5b06,0xc9))[_0xd8b3('0x49')](handleError(_0x4c5b06,null));};exports[_0xd8b3('0x4f')]=function(_0x1380c0,_0x5cd6d2){if(_0x1380c0[_0xd8b3('0x50')]['id']){delete _0x1380c0[_0xd8b3('0x50')]['id'];}return db[_0xd8b3('0x33')][_0xd8b3('0x51')]({'where':{'id':_0x1380c0[_0xd8b3('0x4b')]['id']}})[_0xd8b3('0x2b')](handleEntityNotFound(_0x5cd6d2,null))[_0xd8b3('0x2b')](saveUpdates(_0x1380c0[_0xd8b3('0x50')],null))[_0xd8b3('0x2b')](respondWithResult(_0x5cd6d2,null))[_0xd8b3('0x49')](handleError(_0x5cd6d2,null));};exports[_0xd8b3('0x2c')]=function(_0x1c106c,_0x40557f){return db[_0xd8b3('0x33')][_0xd8b3('0x51')]({'where':{'id':_0x1c106c[_0xd8b3('0x4b')]['id']}})[_0xd8b3('0x2b')](handleEntityNotFound(_0x40557f,null))[_0xd8b3('0x2b')](removeEntity(_0x40557f,null))[_0xd8b3('0x49')](handleError(_0x40557f,null));};
\ No newline at end of file
+var _0x244d=['reject','save','update','destroy','then','error','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','order','where','pick','merge','include','findAll','rows','catch','show','params','fields','length','options','find','create','body','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','count','set','Content-Range'];(function(_0x1406a4,_0x3dc6e3){var _0x28138c=function(_0xcb80a8){while(--_0xcb80a8){_0x1406a4['push'](_0x1406a4['shift']());}};_0x28138c(++_0x3dc6e3);}(_0x244d,0x12a));var _0xd244=function(_0x3b8c63,_0x24a9c6){_0x3b8c63=_0x3b8c63-0x0;var _0x1a8e31=_0x244d[_0x3b8c63];return _0x1a8e31;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd244('0x0'));var jsonpatch=require(_0xd244('0x1'));var rp=require(_0xd244('0x2'));var moment=require('moment');var BPromise=require(_0xd244('0x3'));var Mustache=require(_0xd244('0x4'));var util=require(_0xd244('0x5'));var path=require(_0xd244('0x6'));var sox=require(_0xd244('0x7'));var csv=require(_0xd244('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd244('0x9'));var _=require(_0xd244('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd244('0xb'));var toCsv=require(_0xd244('0x8'));var querystring=require(_0xd244('0xc'));var Papa=require(_0xd244('0xd'));var Redis=require(_0xd244('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd244('0xf'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xd244('0x10'));var licenseUtil=require('../../config/license/util');var db=require(_0xd244('0x11'))['db'];function respondWithStatusCode(_0x2e0e5b,_0x2d3ad1){_0x2d3ad1=_0x2d3ad1||0xcc;return function(_0x3d4dad){if(_0x3d4dad){return _0x2e0e5b[_0xd244('0x12')](_0x2d3ad1);}return _0x2e0e5b['status'](_0x2d3ad1)[_0xd244('0x13')]();};}function respondWithResult(_0xe6b92d,_0x4ca1c3){_0x4ca1c3=_0x4ca1c3||0xc8;return function(_0x184c40){if(_0x184c40){return _0xe6b92d[_0xd244('0x14')](_0x4ca1c3)[_0xd244('0x15')](_0x184c40);}};}function respondWithFilteredResult(_0x53a250,_0x24cf47){return function(_0x291559){if(_0x291559){var _0x2c188c=typeof _0x24cf47[_0xd244('0x16')]==='undefined'&&typeof _0x24cf47[_0xd244('0x17')]==='undefined';var _0x3a4d03=_0x291559[_0xd244('0x18')];var _0x1290fe=_0x2c188c?0x0:_0x24cf47[_0xd244('0x16')];var _0x5f230a=_0x2c188c?_0x291559[_0xd244('0x18')]:_0x24cf47['offset']+_0x24cf47['limit'];var _0x5c5798;if(_0x5f230a>=_0x3a4d03){_0x5f230a=_0x3a4d03;_0x5c5798=0xc8;}else{_0x5c5798=0xce;}_0x53a250[_0xd244('0x14')](_0x5c5798);return _0x53a250[_0xd244('0x19')](_0xd244('0x1a'),_0x1290fe+'-'+_0x5f230a+'/'+_0x3a4d03)[_0xd244('0x15')](_0x291559);}return null;};}function patchUpdates(_0x5225ed){return function(_0x155a26){try{jsonpatch['apply'](_0x155a26,_0x5225ed,!![]);}catch(_0x6c4e3d){return BPromise[_0xd244('0x1b')](_0x6c4e3d);}return _0x155a26[_0xd244('0x1c')]();};}function saveUpdates(_0x5c41eb,_0x25cf5e){return function(_0x47eaf1){if(_0x47eaf1){return _0x47eaf1[_0xd244('0x1d')](_0x5c41eb)['then'](function(_0x5caead){return _0x5caead;});}return null;};}function removeEntity(_0x19544a,_0x14fd1c){return function(_0x3bc6c7){if(_0x3bc6c7){return _0x3bc6c7[_0xd244('0x1e')]()[_0xd244('0x1f')](function(){_0x19544a[_0xd244('0x14')](0xcc)[_0xd244('0x13')]();});}};}function handleEntityNotFound(_0x425cf6,_0x31729c){return function(_0x5e5744){if(!_0x5e5744){_0x425cf6['sendStatus'](0x194);}return _0x5e5744;};}function handleError(_0x2e4a1b,_0x6d7b30){_0x6d7b30=_0x6d7b30||0x1f4;return function(_0x3523d4){logger[_0xd244('0x20')](_0x3523d4[_0xd244('0x21')]);if(_0x3523d4[_0xd244('0x22')]){delete _0x3523d4[_0xd244('0x22')];}_0x2e4a1b['status'](_0x6d7b30)[_0xd244('0x23')](_0x3523d4);};}exports[_0xd244('0x24')]=function(_0x274f6e,_0xd523d8){var _0xfe44c9={},_0x255ad3={},_0x2c9ab4={'count':0x0,'rows':[]};var _0x4d90f5=_[_0xd244('0x25')](db[_0xd244('0x26')][_0xd244('0x27')],function(_0x568b12){return{'name':_0x568b12[_0xd244('0x28')],'type':_0x568b12[_0xd244('0x29')][_0xd244('0x2a')]};});_0x255ad3[_0xd244('0x2b')]=_[_0xd244('0x25')](_0x4d90f5,'name');_0x255ad3['query']=_[_0xd244('0x2c')](_0x274f6e[_0xd244('0x2d')]);_0x255ad3[_0xd244('0x2e')]=_[_0xd244('0x2f')](_0x255ad3[_0xd244('0x2b')],_0x255ad3['query']);_0xfe44c9[_0xd244('0x30')]=_[_0xd244('0x2f')](_0x255ad3[_0xd244('0x2b')],qs['fields'](_0x274f6e['query']['fields']));_0xfe44c9[_0xd244('0x30')]=_0xfe44c9[_0xd244('0x30')]['length']?_0xfe44c9[_0xd244('0x30')]:_0x255ad3[_0xd244('0x2b')];if(!_0x274f6e[_0xd244('0x2d')]['hasOwnProperty']('nolimit')){_0xfe44c9[_0xd244('0x17')]=qs[_0xd244('0x17')](_0x274f6e['query'][_0xd244('0x17')]);_0xfe44c9['offset']=qs[_0xd244('0x16')](_0x274f6e['query'][_0xd244('0x16')]);}_0xfe44c9[_0xd244('0x31')]=qs['sort'](_0x274f6e[_0xd244('0x2d')]['sort']);_0xfe44c9[_0xd244('0x32')]=qs[_0xd244('0x2e')](_[_0xd244('0x33')](_0x274f6e[_0xd244('0x2d')],_0x255ad3['filters']),_0x4d90f5);if(_0x274f6e[_0xd244('0x2d')]['filter']){_0xfe44c9['where']=_[_0xd244('0x34')](_0xfe44c9[_0xd244('0x32')],{'$or':_[_0xd244('0x25')](_0x4d90f5,function(_0x626e98){if(_0x626e98[_0xd244('0x29')]!=='VIRTUAL'){var _0x1ee5ad={};_0x1ee5ad[_0x626e98['name']]={'$like':'%'+_0x274f6e[_0xd244('0x2d')]['filter']+'%'};return _0x1ee5ad;}})});}_0xfe44c9=_[_0xd244('0x34')]({},_0xfe44c9,_0x274f6e['options']);var _0xfbff0e={'where':_0xfe44c9[_0xd244('0x32')]};return db[_0xd244('0x26')]['count'](_0xfbff0e)[_0xd244('0x1f')](function(_0x2a5546){_0x2c9ab4[_0xd244('0x18')]=_0x2a5546;if(_0x274f6e[_0xd244('0x2d')]['includeAll']){_0xfe44c9[_0xd244('0x35')]=[{'all':!![]}];}return db[_0xd244('0x26')][_0xd244('0x36')](_0xfe44c9);})[_0xd244('0x1f')](function(_0x311e98){_0x2c9ab4[_0xd244('0x37')]=_0x311e98;return _0x2c9ab4;})[_0xd244('0x1f')](respondWithFilteredResult(_0xd523d8,_0xfe44c9))[_0xd244('0x38')](handleError(_0xd523d8,null));};exports[_0xd244('0x39')]=function(_0x36785b,_0x292c46){var _0x57dc3f={'raw':!![],'where':{'id':_0x36785b[_0xd244('0x3a')]['id']}},_0x246b37={};_0x246b37[_0xd244('0x2b')]=_['keys'](db['FreshsalesField'][_0xd244('0x27')]);_0x246b37['query']=_[_0xd244('0x2c')](_0x36785b['query']);_0x246b37['filters']=_[_0xd244('0x2f')](_0x246b37[_0xd244('0x2b')],_0x246b37['query']);_0x57dc3f[_0xd244('0x30')]=_[_0xd244('0x2f')](_0x246b37[_0xd244('0x2b')],qs[_0xd244('0x3b')](_0x36785b['query'][_0xd244('0x3b')]));_0x57dc3f[_0xd244('0x30')]=_0x57dc3f[_0xd244('0x30')][_0xd244('0x3c')]?_0x57dc3f[_0xd244('0x30')]:_0x246b37[_0xd244('0x2b')];if(_0x36785b[_0xd244('0x2d')]['includeAll']){_0x57dc3f[_0xd244('0x35')]=[{'all':!![]}];}_0x57dc3f=_['merge']({},_0x57dc3f,_0x36785b[_0xd244('0x3d')]);return db[_0xd244('0x26')][_0xd244('0x3e')](_0x57dc3f)[_0xd244('0x1f')](handleEntityNotFound(_0x292c46,null))[_0xd244('0x1f')](respondWithResult(_0x292c46,null))[_0xd244('0x38')](handleError(_0x292c46,null));};exports[_0xd244('0x3f')]=function(_0x243107,_0xed0113){return db[_0xd244('0x26')][_0xd244('0x3f')](_0x243107[_0xd244('0x40')],{})[_0xd244('0x1f')](respondWithResult(_0xed0113,0xc9))[_0xd244('0x38')](handleError(_0xed0113,null));};exports[_0xd244('0x1d')]=function(_0x4ad34c,_0x157e43){if(_0x4ad34c[_0xd244('0x40')]['id']){delete _0x4ad34c[_0xd244('0x40')]['id'];}return db[_0xd244('0x26')][_0xd244('0x3e')]({'where':{'id':_0x4ad34c[_0xd244('0x3a')]['id']}})[_0xd244('0x1f')](handleEntityNotFound(_0x157e43,null))[_0xd244('0x1f')](saveUpdates(_0x4ad34c[_0xd244('0x40')],null))[_0xd244('0x1f')](respondWithResult(_0x157e43,null))[_0xd244('0x38')](handleError(_0x157e43,null));};exports['destroy']=function(_0x577105,_0x4daa86){return db[_0xd244('0x26')][_0xd244('0x3e')]({'where':{'id':_0x577105[_0xd244('0x3a')]['id']}})[_0xd244('0x1f')](handleEntityNotFound(_0x4daa86,null))[_0xd244('0x1f')](removeEntity(_0x4daa86,null))[_0xd244('0x38')](handleError(_0x4daa86,null));};
\ No newline at end of file
index a8d9a1e..2c3db0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae8e=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xae8e,0xc3));var _0xeae8=function(_0x5f7907,_0x18b64e){_0x5f7907=_0x5f7907-0x0;var _0x3e68ef=_0xae8e[_0x5f7907];return _0x3e68ef;};'use strict';var _=require(_0xeae8('0x0'));var util=require(_0xeae8('0x1'));var logger=require(_0xeae8('0x2'))(_0xeae8('0x3'));var moment=require(_0xeae8('0x4'));var BPromise=require(_0xeae8('0x5'));var rp=require(_0xeae8('0x6'));var fs=require('fs');var path=require(_0xeae8('0x7'));var rimraf=require(_0xeae8('0x8'));var config=require(_0xeae8('0x9'));var attributes=require(_0xeae8('0xa'));module[_0xeae8('0xb')]=function(_0x23b0d7,_0x17345e){return _0x23b0d7[_0xeae8('0xc')](_0xeae8('0xd'),attributes,{'tableName':_0xeae8('0xe'),'paranoid':![],'indexes':[{'name':_0xeae8('0xf'),'fields':[_0xeae8('0x10'),_0xeae8('0x11')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d11=['idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','define','FreshsalesField'];(function(_0x4726f9,_0xffedd6){var _0x1e45db=function(_0x57aedc){while(--_0x57aedc){_0x4726f9['push'](_0x4726f9['shift']());}};_0x1e45db(++_0xffedd6);}(_0x1d11,0xb6));var _0x11d1=function(_0x49388f,_0x3daa43){_0x49388f=_0x49388f-0x0;var _0x1affdc=_0x1d11[_0x49388f];return _0x1affdc;};'use strict';var _=require(_0x11d1('0x0'));var util=require(_0x11d1('0x1'));var logger=require(_0x11d1('0x2'))(_0x11d1('0x3'));var moment=require(_0x11d1('0x4'));var BPromise=require(_0x11d1('0x5'));var rp=require(_0x11d1('0x6'));var fs=require('fs');var path=require(_0x11d1('0x7'));var rimraf=require(_0x11d1('0x8'));var config=require(_0x11d1('0x9'));var attributes=require(_0x11d1('0xa'));module['exports']=function(_0x32d808,_0x4a9622){return _0x32d808[_0x11d1('0xb')](_0x11d1('0xc'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x11d1('0xd'),_0x11d1('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9a42156..635d383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x8c3172,_0x2db963){var _0x4db154=function(_0x50c352){while(--_0x50c352){_0x8c3172['push'](_0x8c3172['shift']());}};_0x4db154(++_0x2db963);}(_0x187d,0x93));var _0xd187=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0x187d[_0x53cf8e];return _0x459197;};'use strict';var _=require(_0xd187('0x0'));var util=require('util');var moment=require(_0xd187('0x1'));var BPromise=require(_0xd187('0x2'));var rs=require(_0xd187('0x3'));var fs=require('fs');var Redis=require(_0xd187('0x4'));var db=require(_0xd187('0x5'))['db'];var utils=require(_0xd187('0x6'));var logger=require('../../config/logger')(_0xd187('0x7'));var config=require(_0xd187('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd187('0x9')][_0xd187('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x444a60,_0x1d3fe4,_0x28ce2f){return new BPromise(function(_0x2d6992,_0x358c45){return client[_0xd187('0xb')](_0x444a60,_0x28ce2f)['then'](function(_0x342539){logger[_0xd187('0xc')](_0xd187('0xd'),_0x1d3fe4,_0xd187('0xe'));logger[_0xd187('0xf')](_0xd187('0x10'),_0x1d3fe4,'request\x20sent',JSON[_0xd187('0x11')](_0x342539));if(_0x342539[_0xd187('0x12')]){if(_0x342539[_0xd187('0x12')]['code']===0x1f4){logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539[_0xd187('0x12')]['message']);return _0x358c45(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539['error'][_0xd187('0x13')]);return _0x2d6992(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}else{logger[_0xd187('0xc')]('FreshsalesField,\x20%s,\x20%s',_0x1d3fe4,_0xd187('0xe'));_0x2d6992(_0x342539['result']['message']);}})[_0xd187('0x14')](function(_0x5a4986){logger['error'](_0xd187('0xd'),_0x1d3fe4,_0x5a4986);_0x358c45(_0x5a4986);});});}
\ No newline at end of file
+var _0x33af=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x5dfde8,_0xa2f77d){var _0x2253fb=function(_0x16ad74){while(--_0x16ad74){_0x5dfde8['push'](_0x5dfde8['shift']());}};_0x2253fb(++_0xa2f77d);}(_0x33af,0xec));var _0xf33a=function(_0x5aa6a9,_0x3ae14c){_0x5aa6a9=_0x5aa6a9-0x0;var _0x119ce5=_0x33af[_0x5aa6a9];return _0x119ce5;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var moment=require('moment');var BPromise=require(_0xf33a('0x1'));var rs=require(_0xf33a('0x2'));var fs=require('fs');var Redis=require(_0xf33a('0x3'));var db=require(_0xf33a('0x4'))['db'];var utils=require(_0xf33a('0x5'));var logger=require(_0xf33a('0x6'))('rpc');var config=require(_0xf33a('0x7'));var jayson=require(_0xf33a('0x8'));var client=jayson['client'][_0xf33a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x384b14,_0x1b2b01,_0x2f3730){return new BPromise(function(_0x2baabb,_0x2cb169){return client['request'](_0x384b14,_0x2f3730)[_0xf33a('0xa')](function(_0x14eb0e){logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,_0xf33a('0xd'));logger[_0xf33a('0xe')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x1b2b01,'request\x20sent',JSON[_0xf33a('0xf')](_0x14eb0e));if(_0x14eb0e[_0xf33a('0x10')]){if(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x11')]===0x1f4){logger[_0xf33a('0x10')]('FreshsalesField,\x20%s,\x20%s',_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2cb169(_0x14eb0e['error']['message']);}logger[_0xf33a('0x10')](_0xf33a('0xc'),_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2baabb(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);}else{logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,'request\x20sent');_0x2baabb(_0x14eb0e[_0xf33a('0x13')]['message']);}})[_0xf33a('0x14')](function(_0x229389){logger['error'](_0xf33a('0xc'),_0x1b2b01,_0x229389);_0x2cb169(_0x229389);});});}
\ No newline at end of file
index 6551d29..bcfcea0 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(_0x2b22e8,_0x4d7144){var _0x335e36=function(_0xc1fb4c){while(--_0xc1fb4c){_0x2b22e8['push'](_0x2b22e8['shift']());}};_0x335e36(++_0x4d7144);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x3eb78e,_0x2426d0){var _0x16aa40=function(_0x52697a){while(--_0x52697a){_0x3eb78e['push'](_0x3eb78e['shift']());}};_0x16aa40(++_0x2426d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 527cee4..fc89ddb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x089d=['STRING','integrationTab','newTab','exports'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x089d,0x137));var _0xd089=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x089d[_0x88cd7b];return _0x56fcc8;};'use strict';var Sequelize=require('sequelize');module[_0xd089('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd089('0x1')]},'username':{'type':Sequelize[_0xd089('0x1')],'unique':'username'},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xd089('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0xd089('0x1')]},'serverUrl':{'type':Sequelize[_0xd089('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xd089('0x2'),_0xd089('0x3')),'defaultValue':_0xd089('0x2')}};
\ No newline at end of file
+var _0x58cc=['ENUM','integrationTab','sequelize','exports','STRING','username'];(function(_0x244ca4,_0xffa146){var _0x5e44d8=function(_0x50acb1){while(--_0x50acb1){_0x244ca4['push'](_0x244ca4['shift']());}};_0x5e44d8(++_0xffa146);}(_0x58cc,0x7a));var _0xc58c=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x58cc[_0x2b10c6];return _0x3789d2;};'use strict';var Sequelize=require(_0xc58c('0x0'));module[_0xc58c('0x1')]={'name':{'type':Sequelize[_0xc58c('0x2')]},'description':{'type':Sequelize[_0xc58c('0x2')]},'username':{'type':Sequelize[_0xc58c('0x2')],'unique':_0xc58c('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xc58c('0x2')]},'clientId':{'type':Sequelize[_0xc58c('0x2')]},'clientSecret':{'type':Sequelize[_0xc58c('0x2')]},'securityToken':{'type':Sequelize[_0xc58c('0x2')]},'serverUrl':{'type':Sequelize[_0xc58c('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xc58c('0x4')]('integrationTab','newTab'),'defaultValue':_0xc58c('0x5')}};
\ No newline at end of file
index 686fa7e..d331259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7978=['order','sort','where','filters','pick','VIRTUAL','name','merge','options','findAll','catch','params','find','create','body','update','SalesforceConfiguration','filter','getConfigurations','nolimit','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','SalesforceField','getFields','Task','remoteUri','clientId','clientSecret','password','securityToken','substring','lastIndexOf','Connection','login','concat','ticketType','sobject','describe','ActivityDate','IsRecurrence','Subject','Description','string','int','picklist','boolean','email','phone','remove','includes','label','custom','picklistValues','value','True','False','false','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','send','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x7978,0xbb));var _0x8797=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0x7978[_0x5627e1];return _0x2f013f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8797('0x0'));var zipdir=require(_0x8797('0x1'));var jsonpatch=require(_0x8797('0x2'));var rp=require(_0x8797('0x3'));var moment=require(_0x8797('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8797('0x5'));var util=require('util');var path=require(_0x8797('0x6'));var sox=require('sox');var csv=require(_0x8797('0x7'));var ejs=require(_0x8797('0x8'));var fs=require('fs');var fs_extra=require(_0x8797('0x9'));var _=require(_0x8797('0xa'));var squel=require(_0x8797('0xb'));var crypto=require(_0x8797('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8797('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8797('0xe'));var Papa=require(_0x8797('0xf'));var Redis=require(_0x8797('0x10'));var authService=require(_0x8797('0x11'));var qs=require(_0x8797('0x12'));var as=require(_0x8797('0x13'));var hardwareService=require(_0x8797('0x14'));var logger=require(_0x8797('0x15'))(_0x8797('0x16'));var utils=require('../../config/utils');var config=require(_0x8797('0x17'));var licenseUtil=require(_0x8797('0x18'));var db=require(_0x8797('0x19'))['db'];var integrations=require(_0x8797('0x1a'));function respondWithStatusCode(_0x2fbb1c,_0x1fc19d){_0x1fc19d=_0x1fc19d||0xcc;return function(_0x13b364){if(_0x13b364){return _0x2fbb1c[_0x8797('0x1b')](_0x1fc19d);}return _0x2fbb1c[_0x8797('0x1c')](_0x1fc19d)[_0x8797('0x1d')]();};}function respondWithResult(_0x7489f3,_0x5d676a){_0x5d676a=_0x5d676a||0xc8;return function(_0x4ed2e5){if(_0x4ed2e5){return _0x7489f3[_0x8797('0x1c')](_0x5d676a)[_0x8797('0x1e')](_0x4ed2e5);}};}function respondWithFilteredResult(_0x5ea2b5,_0x14eb50){return function(_0x204fed){if(_0x204fed){var _0x5331e2=typeof _0x14eb50[_0x8797('0x1f')]===_0x8797('0x20')&&typeof _0x14eb50[_0x8797('0x21')]===_0x8797('0x20');var _0x5d1736=_0x204fed[_0x8797('0x22')];var _0x852bb8=_0x5331e2?0x0:_0x14eb50[_0x8797('0x1f')];var _0x461e38=_0x5331e2?_0x204fed[_0x8797('0x22')]:_0x14eb50[_0x8797('0x1f')]+_0x14eb50['limit'];var _0x3afdb1;if(_0x461e38>=_0x5d1736){_0x461e38=_0x5d1736;_0x3afdb1=0xc8;}else{_0x3afdb1=0xce;}_0x5ea2b5[_0x8797('0x1c')](_0x3afdb1);return _0x5ea2b5[_0x8797('0x23')](_0x8797('0x24'),_0x852bb8+'-'+_0x461e38+'/'+_0x5d1736)[_0x8797('0x1e')](_0x204fed);}return null;};}function patchUpdates(_0x19dca1){return function(_0xe8a272){try{jsonpatch['apply'](_0xe8a272,_0x19dca1,!![]);}catch(_0x366a4a){return BPromise[_0x8797('0x25')](_0x366a4a);}return _0xe8a272[_0x8797('0x26')]();};}function saveUpdates(_0x4d506b,_0x4a2f79){return function(_0x51d452){if(_0x51d452){return _0x51d452['update'](_0x4d506b)[_0x8797('0x27')](function(_0x23ec3c){return _0x23ec3c;});}return null;};}function removeEntity(_0x382dbc,_0x2e927c){return function(_0x121249){if(_0x121249){return _0x121249[_0x8797('0x28')]()[_0x8797('0x27')](function(){_0x382dbc[_0x8797('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e5431,_0x4c3e1e){return function(_0x537a46){if(!_0x537a46){_0x1e5431[_0x8797('0x1b')](0x194);}return _0x537a46;};}function handleError(_0x5a3c0d,_0x318483){_0x318483=_0x318483||0x1f4;return function(_0x146bbe){logger[_0x8797('0x29')](_0x146bbe[_0x8797('0x2a')]);if(_0x146bbe['name']){delete _0x146bbe['name'];}_0x5a3c0d[_0x8797('0x1c')](_0x318483)[_0x8797('0x2b')](_0x146bbe);};}exports[_0x8797('0x2c')]=function(_0x37db55,_0x29f974){var _0x3cfdfd={},_0xeb8d52={},_0x724735={'count':0x0,'rows':[]};var _0x3502fa=_[_0x8797('0x2d')](db[_0x8797('0x2e')][_0x8797('0x2f')],function(_0x40e92e){return{'name':_0x40e92e[_0x8797('0x30')],'type':_0x40e92e[_0x8797('0x31')][_0x8797('0x32')]};});_0xeb8d52['model']=_[_0x8797('0x2d')](_0x3502fa,'name');_0xeb8d52[_0x8797('0x33')]=_[_0x8797('0x34')](_0x37db55[_0x8797('0x33')]);_0xeb8d52['filters']=_[_0x8797('0x35')](_0xeb8d52['model'],_0xeb8d52['query']);_0x3cfdfd['attributes']=_[_0x8797('0x35')](_0xeb8d52[_0x8797('0x36')],qs[_0x8797('0x37')](_0x37db55[_0x8797('0x33')]['fields']));_0x3cfdfd[_0x8797('0x38')]=_0x3cfdfd[_0x8797('0x38')][_0x8797('0x39')]?_0x3cfdfd[_0x8797('0x38')]:_0xeb8d52['model'];if(!_0x37db55[_0x8797('0x33')][_0x8797('0x3a')]('nolimit')){_0x3cfdfd[_0x8797('0x21')]=qs[_0x8797('0x21')](_0x37db55[_0x8797('0x33')]['limit']);_0x3cfdfd[_0x8797('0x1f')]=qs[_0x8797('0x1f')](_0x37db55[_0x8797('0x33')]['offset']);}_0x3cfdfd[_0x8797('0x3b')]=qs[_0x8797('0x3c')](_0x37db55[_0x8797('0x33')][_0x8797('0x3c')]);_0x3cfdfd[_0x8797('0x3d')]=qs[_0x8797('0x3e')](_[_0x8797('0x3f')](_0x37db55[_0x8797('0x33')],_0xeb8d52[_0x8797('0x3e')]),_0x3502fa);if(_0x37db55['query']['filter']){_0x3cfdfd[_0x8797('0x3d')]=_['merge'](_0x3cfdfd[_0x8797('0x3d')],{'$or':_['map'](_0x3502fa,function(_0x365220){if(_0x365220[_0x8797('0x31')]!==_0x8797('0x40')){var _0x17160a={};_0x17160a[_0x365220[_0x8797('0x41')]]={'$like':'%'+_0x37db55[_0x8797('0x33')]['filter']+'%'};return _0x17160a;}})});}_0x3cfdfd=_[_0x8797('0x42')]({},_0x3cfdfd,_0x37db55[_0x8797('0x43')]);var _0x164f08={'where':_0x3cfdfd[_0x8797('0x3d')]};return db[_0x8797('0x2e')]['count'](_0x164f08)['then'](function(_0x4d9809){_0x724735['count']=_0x4d9809;if(_0x37db55[_0x8797('0x33')]['includeAll']){_0x3cfdfd['include']=[{'all':!![]}];}return db[_0x8797('0x2e')][_0x8797('0x44')](_0x3cfdfd);})[_0x8797('0x27')](function(_0x37efea){_0x724735['rows']=_0x37efea;return _0x724735;})[_0x8797('0x27')](respondWithFilteredResult(_0x29f974,_0x3cfdfd))[_0x8797('0x45')](handleError(_0x29f974,null));};exports['show']=function(_0x1d8ebc,_0x3eb7d5){var _0x4fe750={'raw':![],'where':{'id':_0x1d8ebc[_0x8797('0x46')]['id']}},_0xdc8a51={};_0xdc8a51[_0x8797('0x36')]=_[_0x8797('0x34')](db[_0x8797('0x2e')][_0x8797('0x2f')]);_0xdc8a51['query']=_[_0x8797('0x34')](_0x1d8ebc[_0x8797('0x33')]);_0xdc8a51[_0x8797('0x3e')]=_[_0x8797('0x35')](_0xdc8a51[_0x8797('0x36')],_0xdc8a51[_0x8797('0x33')]);_0x4fe750['attributes']=_[_0x8797('0x35')](_0xdc8a51[_0x8797('0x36')],qs['fields'](_0x1d8ebc[_0x8797('0x33')]['fields']));_0x4fe750['attributes']=_0x4fe750[_0x8797('0x38')][_0x8797('0x39')]?_0x4fe750[_0x8797('0x38')]:_0xdc8a51[_0x8797('0x36')];if(_0x1d8ebc['query']['includeAll']){_0x4fe750['include']=[{'all':!![]}];}_0x4fe750=_[_0x8797('0x42')]({},_0x4fe750,_0x1d8ebc['options']);return db[_0x8797('0x2e')][_0x8797('0x47')](_0x4fe750)['then'](handleEntityNotFound(_0x3eb7d5,null))[_0x8797('0x27')](respondWithResult(_0x3eb7d5,null))[_0x8797('0x45')](handleError(_0x3eb7d5,null));};exports[_0x8797('0x48')]=function(_0x1a82eb,_0x353b0e){return db[_0x8797('0x2e')][_0x8797('0x48')](_0x1a82eb[_0x8797('0x49')],{})['then'](respondWithResult(_0x353b0e,0xc9))[_0x8797('0x45')](handleError(_0x353b0e,null));};exports[_0x8797('0x4a')]=function(_0x284bf8,_0x43a709){if(_0x284bf8[_0x8797('0x49')]['id']){delete _0x284bf8[_0x8797('0x49')]['id'];}return db['SalesforceAccount']['find']({'where':{'id':_0x284bf8[_0x8797('0x46')]['id']}})['then'](handleEntityNotFound(_0x43a709,null))[_0x8797('0x27')](saveUpdates(_0x284bf8[_0x8797('0x49')],null))[_0x8797('0x27')](respondWithResult(_0x43a709,null))[_0x8797('0x45')](handleError(_0x43a709,null));};exports['destroy']=function(_0x5c6821,_0x519014){return db[_0x8797('0x2e')]['find']({'where':{'id':_0x5c6821['params']['id']}})[_0x8797('0x27')](handleEntityNotFound(_0x519014,null))[_0x8797('0x27')](removeEntity(_0x519014,null))[_0x8797('0x45')](handleError(_0x519014,null));};exports['getConfigurations']=function(_0x26aec0,_0x3edb79,_0x45073d){var _0x5c5fb0={};var _0x323440={};var _0x55c084;var _0x197208;return db[_0x8797('0x2e')]['findOne']({'where':{'id':_0x26aec0[_0x8797('0x46')]['id']}})['then'](handleEntityNotFound(_0x3edb79,null))[_0x8797('0x27')](function(_0x40110b){if(_0x40110b){_0x55c084=_0x40110b;_0x323440['model']=_[_0x8797('0x34')](db[_0x8797('0x4b')][_0x8797('0x2f')]);_0x323440[_0x8797('0x33')]=_[_0x8797('0x34')](_0x26aec0[_0x8797('0x33')]);_0x323440[_0x8797('0x3e')]=_['intersection'](_0x323440['model'],_0x323440[_0x8797('0x33')]);_0x5c5fb0[_0x8797('0x38')]=_[_0x8797('0x35')](_0x323440[_0x8797('0x36')],qs[_0x8797('0x37')](_0x26aec0[_0x8797('0x33')][_0x8797('0x37')]));_0x5c5fb0[_0x8797('0x38')]=_0x5c5fb0[_0x8797('0x38')][_0x8797('0x39')]?_0x5c5fb0[_0x8797('0x38')]:_0x323440[_0x8797('0x36')];_0x5c5fb0[_0x8797('0x3b')]=qs[_0x8797('0x3c')](_0x26aec0[_0x8797('0x33')][_0x8797('0x3c')]);_0x5c5fb0['where']=qs['filters'](_[_0x8797('0x3f')](_0x26aec0[_0x8797('0x33')],_0x323440[_0x8797('0x3e')]));if(_0x26aec0[_0x8797('0x33')][_0x8797('0x4c')]){_0x5c5fb0['where']=_['merge'](_0x5c5fb0[_0x8797('0x3d')],{'$or':_[_0x8797('0x2d')](_0x5c5fb0['attributes'],function(_0x4f44fa){var _0x392b32={};_0x392b32[_0x4f44fa]={'$like':'%'+_0x26aec0['query'][_0x8797('0x4c')]+'%'};return _0x392b32;})});}_0x5c5fb0=_['merge']({},_0x5c5fb0,_0x26aec0['options']);return _0x55c084[_0x8797('0x4d')](_0x5c5fb0);}})[_0x8797('0x27')](function(_0x492f1c){if(_0x492f1c){_0x197208=_0x492f1c[_0x8797('0x39')];if(!_0x26aec0[_0x8797('0x33')][_0x8797('0x3a')](_0x8797('0x4e'))){_0x5c5fb0[_0x8797('0x21')]=qs[_0x8797('0x21')](_0x26aec0['query'][_0x8797('0x21')]);_0x5c5fb0[_0x8797('0x1f')]=qs[_0x8797('0x1f')](_0x26aec0['query'][_0x8797('0x1f')]);}return _0x55c084[_0x8797('0x4d')](_0x5c5fb0);}})[_0x8797('0x27')](function(_0x318392){if(_0x318392){return _0x318392?{'count':_0x197208,'rows':_0x318392}:null;}})[_0x8797('0x27')](respondWithResult(_0x3edb79,null))['catch'](handleError(_0x3edb79,null));};exports[_0x8797('0x4f')]=function(_0x536c08,_0x27786f,_0x2c773c){if(_0x536c08['body']['id']){delete _0x536c08[_0x8797('0x49')]['id'];}return db[_0x8797('0x2e')][_0x8797('0x50')]({'where':{'id':_0x536c08[_0x8797('0x46')]['id']}})[_0x8797('0x27')](handleEntityNotFound(_0x27786f,null))['then'](function(_0x3a0a66){if(_0x3a0a66){_0x536c08[_0x8797('0x49')]['AccountId']=_0x3a0a66['id'];_0x536c08['body'][_0x8797('0x51')]=integrations[_0x8797('0x52')](_0x536c08[_0x8797('0x49')][_0x8797('0x53')],_0x536c08[_0x8797('0x49')]['type']);_0x536c08[_0x8797('0x49')][_0x8797('0x54')]=integrations['getDescriptions'](_0x536c08[_0x8797('0x49')][_0x8797('0x53')],_0x536c08[_0x8797('0x49')]['type']);return db[_0x8797('0x4b')][_0x8797('0x48')](_0x536c08[_0x8797('0x49')],{'include':[{'model':db[_0x8797('0x55')],'as':_0x8797('0x51')},{'model':db['SalesforceField'],'as':_0x8797('0x54')}]});}return null;})[_0x8797('0x27')](respondWithResult(_0x27786f,null))['catch'](handleError(_0x27786f,null));};exports[_0x8797('0x56')]=function(_0x3dba07,_0x3a248d,_0x57c1ff){var _0x126022;var _0x4097c3='';var _0x2e2a6b=_0x8797('0x57');return db[_0x8797('0x2e')]['findOne']({'where':{'id':_0x3dba07[_0x8797('0x46')]['id']},'attributes':['id',_0x8797('0x58'),_0x8797('0x59'),_0x8797('0x5a'),'username',_0x8797('0x5b'),_0x8797('0x5c')]})[_0x8797('0x27')](handleEntityNotFound(_0x3a248d,null))['then'](function(_0x91826){if(_0x91826){_0x4097c3=_0x91826[_0x8797('0x58')];var _0x3cea9d=_0x4097c3['slice'](-0x1);if(_0x3cea9d==='/'){_0x4097c3=_0x4097c3[_0x8797('0x5d')](0x0,_0x4097c3[_0x8797('0x5e')](_0x3cea9d));}_0x126022=new jsforce[(_0x8797('0x5f'))]({'oauth2':{'loginUrl':_0x4097c3,'clientId':_0x91826[_0x8797('0x59')],'clientSecret':_0x91826[_0x8797('0x5a')]}});return _0x126022[_0x8797('0x60')](_0x91826['username'],_0x91826[_0x8797('0x5b')][_0x8797('0x61')](_0x91826['securityToken']));}})[_0x8797('0x27')](function(_0x441f3d){if(_0x441f3d){if(!_['isNil'](_0x3dba07['query']['ticketType'])){_0x2e2a6b=_0x3dba07[_0x8797('0x33')][_0x8797('0x62')];}return _0x126022[_0x8797('0x63')](_0x2e2a6b)[_0x8797('0x64')]();}})['then'](function(_0xb7ea20){var _0xe8b36=['OwnerId',_0x8797('0x65'),'IsReminderSet',_0x8797('0x66'),_0x8797('0x67'),_0x8797('0x68')];var _0xd8660e=[_0x8797('0x69'),_0x8797('0x6a'),_0x8797('0x6b'),_0x8797('0x6c'),_0x8797('0x6d'),'textarea',_0x8797('0x6e')];if(_0xb7ea20){_[_0x8797('0x6f')](_0xb7ea20[_0x8797('0x37')],function(_0x4a10ca){return _0xe8b36['includes'](_0x4a10ca['name'])||!_0xd8660e[_0x8797('0x70')](_0x4a10ca[_0x8797('0x31')]);});return{'count':_0xb7ea20[_0x8797('0x37')]['length'],'rows':_['map'](_0xb7ea20[_0x8797('0x37')],function(_0x13d5f7){return{'id':_0x13d5f7[_0x8797('0x41')],'name':_0x13d5f7[_0x8797('0x71')],'custom':_0x13d5f7[_0x8797('0x72')],'options':_0x13d5f7['picklistValues']['length']>0x0?_[_0x8797('0x2d')](_0x13d5f7[_0x8797('0x73')],function(_0x413f60){return{'name':_0x413f60[_0x8797('0x71')],'value':_0x413f60[_0x8797('0x74')]};}):_0x13d5f7['type']==_0x8797('0x6c')?[{'name':_0x8797('0x75'),'value':'true'},{'name':_0x8797('0x76'),'value':_0x8797('0x77')}]:[]};})};}})[_0x8797('0x27')](respondWithResult(_0x3a248d,null))[_0x8797('0x45')](function(_0xca4a30){var _0x4c5339=_0x3dba07['query']['test']?0x1f4:_0xca4a30['statusCode']||0x1f4;logger[_0x8797('0x29')](_0x8797('0x78'),'getFields',_0x4c5339,JSON['stringify'](_0xca4a30));delete _0xca4a30[_0x8797('0x41')];if(_0x4c5339===0x191){_0x4c5339=0x190;}_0x3a248d['status'](_0x4c5339)[_0x8797('0x2b')](_0x3dba07[_0x8797('0x33')]['test']?{'message':_0x8797('0x79'),'statusCode':_0xca4a30[_0x8797('0x7a')]}:_0xca4a30);});};
\ No newline at end of file
+var _0x5dfb=['type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','SalesforceAccount','includeAll','include','findAll','catch','show','create','body','params','find','getConfigurations','findOne','SalesforceConfiguration','order','addConfiguration','Subjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','int','picklist','boolean','textarea','remove','includes','label','custom','picklistValues','value','true','False','false','error','stringify','test','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName'];(function(_0x2ef19c,_0x29caee){var _0x20f642=function(_0x26bcfd){while(--_0x26bcfd){_0x2ef19c['push'](_0x2ef19c['shift']());}};_0x20f642(++_0x29caee);}(_0x5dfb,0x1c3));var _0xb5df=function(_0x1998bb,_0x1f1da1){_0x1998bb=_0x1998bb-0x0;var _0x4ae4c9=_0x5dfb[_0x1998bb];return _0x4ae4c9;};'use strict';var emlformat=require(_0xb5df('0x0'));var rimraf=require(_0xb5df('0x1'));var zipdir=require(_0xb5df('0x2'));var jsonpatch=require(_0xb5df('0x3'));var rp=require(_0xb5df('0x4'));var moment=require('moment');var BPromise=require(_0xb5df('0x5'));var Mustache=require('mustache');var util=require(_0xb5df('0x6'));var path=require(_0xb5df('0x7'));var sox=require(_0xb5df('0x8'));var csv=require(_0xb5df('0x9'));var ejs=require(_0xb5df('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb5df('0xb'));var squel=require(_0xb5df('0xc'));var crypto=require(_0xb5df('0xd'));var jsforce=require(_0xb5df('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5df('0x9'));var querystring=require('querystring');var Papa=require(_0xb5df('0xf'));var Redis=require(_0xb5df('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb5df('0x11'));var as=require(_0xb5df('0x12'));var hardwareService=require(_0xb5df('0x13'));var logger=require(_0xb5df('0x14'))(_0xb5df('0x15'));var utils=require(_0xb5df('0x16'));var config=require(_0xb5df('0x17'));var licenseUtil=require(_0xb5df('0x18'));var db=require(_0xb5df('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5aa500,_0x3b406b){_0x3b406b=_0x3b406b||0xcc;return function(_0x1f4b8e){if(_0x1f4b8e){return _0x5aa500[_0xb5df('0x1a')](_0x3b406b);}return _0x5aa500[_0xb5df('0x1b')](_0x3b406b)[_0xb5df('0x1c')]();};}function respondWithResult(_0x500e40,_0x40a478){_0x40a478=_0x40a478||0xc8;return function(_0x571a20){if(_0x571a20){return _0x500e40[_0xb5df('0x1b')](_0x40a478)[_0xb5df('0x1d')](_0x571a20);}};}function respondWithFilteredResult(_0x15155c,_0x3211dc){return function(_0x2b5d48){if(_0x2b5d48){var _0x2b0611=typeof _0x3211dc[_0xb5df('0x1e')]==='undefined'&&typeof _0x3211dc[_0xb5df('0x1f')]===_0xb5df('0x20');var _0x1d4a69=_0x2b5d48[_0xb5df('0x21')];var _0x736b07=_0x2b0611?0x0:_0x3211dc[_0xb5df('0x1e')];var _0x3578d7=_0x2b0611?_0x2b5d48['count']:_0x3211dc['offset']+_0x3211dc[_0xb5df('0x1f')];var _0x2d6637;if(_0x3578d7>=_0x1d4a69){_0x3578d7=_0x1d4a69;_0x2d6637=0xc8;}else{_0x2d6637=0xce;}_0x15155c[_0xb5df('0x1b')](_0x2d6637);return _0x15155c[_0xb5df('0x22')](_0xb5df('0x23'),_0x736b07+'-'+_0x3578d7+'/'+_0x1d4a69)[_0xb5df('0x1d')](_0x2b5d48);}return null;};}function patchUpdates(_0x3bd52c){return function(_0xb59549){try{jsonpatch[_0xb5df('0x24')](_0xb59549,_0x3bd52c,!![]);}catch(_0x243054){return BPromise[_0xb5df('0x25')](_0x243054);}return _0xb59549[_0xb5df('0x26')]();};}function saveUpdates(_0x518069,_0x572ed6){return function(_0x1ba821){if(_0x1ba821){return _0x1ba821[_0xb5df('0x27')](_0x518069)[_0xb5df('0x28')](function(_0x3d16b1){return _0x3d16b1;});}return null;};}function removeEntity(_0x1f8a39,_0x35218a){return function(_0x4ec204){if(_0x4ec204){return _0x4ec204[_0xb5df('0x29')]()[_0xb5df('0x28')](function(){_0x1f8a39[_0xb5df('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x329449,_0x3b124d){return function(_0x496115){if(!_0x496115){_0x329449[_0xb5df('0x1a')](0x194);}return _0x496115;};}function handleError(_0xd334c9,_0x45fb05){_0x45fb05=_0x45fb05||0x1f4;return function(_0x42c1af){logger['error'](_0x42c1af[_0xb5df('0x2a')]);if(_0x42c1af[_0xb5df('0x2b')]){delete _0x42c1af[_0xb5df('0x2b')];}_0xd334c9[_0xb5df('0x1b')](_0x45fb05)[_0xb5df('0x2c')](_0x42c1af);};}exports[_0xb5df('0x2d')]=function(_0x1beb92,_0x491817){var _0x1cb436={},_0x5a0d2d={},_0x8d91a3={'count':0x0,'rows':[]};var _0x587a55=_[_0xb5df('0x2e')](db['SalesforceAccount'][_0xb5df('0x2f')],function(_0x375d00){return{'name':_0x375d00[_0xb5df('0x30')],'type':_0x375d00[_0xb5df('0x31')][_0xb5df('0x32')]};});_0x5a0d2d[_0xb5df('0x33')]=_[_0xb5df('0x2e')](_0x587a55,_0xb5df('0x2b'));_0x5a0d2d['query']=_[_0xb5df('0x34')](_0x1beb92[_0xb5df('0x35')]);_0x5a0d2d[_0xb5df('0x36')]=_[_0xb5df('0x37')](_0x5a0d2d[_0xb5df('0x33')],_0x5a0d2d['query']);_0x1cb436[_0xb5df('0x38')]=_[_0xb5df('0x37')](_0x5a0d2d[_0xb5df('0x33')],qs[_0xb5df('0x39')](_0x1beb92[_0xb5df('0x35')]['fields']));_0x1cb436[_0xb5df('0x38')]=_0x1cb436[_0xb5df('0x38')][_0xb5df('0x3a')]?_0x1cb436[_0xb5df('0x38')]:_0x5a0d2d[_0xb5df('0x33')];if(!_0x1beb92[_0xb5df('0x35')][_0xb5df('0x3b')]('nolimit')){_0x1cb436[_0xb5df('0x1f')]=qs['limit'](_0x1beb92[_0xb5df('0x35')]['limit']);_0x1cb436['offset']=qs[_0xb5df('0x1e')](_0x1beb92[_0xb5df('0x35')][_0xb5df('0x1e')]);}_0x1cb436['order']=qs[_0xb5df('0x3c')](_0x1beb92['query'][_0xb5df('0x3c')]);_0x1cb436[_0xb5df('0x3d')]=qs[_0xb5df('0x36')](_[_0xb5df('0x3e')](_0x1beb92['query'],_0x5a0d2d[_0xb5df('0x36')]),_0x587a55);if(_0x1beb92[_0xb5df('0x35')][_0xb5df('0x3f')]){_0x1cb436['where']=_[_0xb5df('0x40')](_0x1cb436[_0xb5df('0x3d')],{'$or':_[_0xb5df('0x2e')](_0x587a55,function(_0x5ce2da){if(_0x5ce2da[_0xb5df('0x31')]!==_0xb5df('0x41')){var _0x420745={};_0x420745[_0x5ce2da[_0xb5df('0x2b')]]={'$like':'%'+_0x1beb92[_0xb5df('0x35')][_0xb5df('0x3f')]+'%'};return _0x420745;}})});}_0x1cb436=_[_0xb5df('0x40')]({},_0x1cb436,_0x1beb92[_0xb5df('0x42')]);var _0x102f2b={'where':_0x1cb436[_0xb5df('0x3d')]};return db[_0xb5df('0x43')]['count'](_0x102f2b)[_0xb5df('0x28')](function(_0x384e7f){_0x8d91a3['count']=_0x384e7f;if(_0x1beb92[_0xb5df('0x35')][_0xb5df('0x44')]){_0x1cb436[_0xb5df('0x45')]=[{'all':!![]}];}return db[_0xb5df('0x43')][_0xb5df('0x46')](_0x1cb436);})['then'](function(_0x3ca5e8){_0x8d91a3['rows']=_0x3ca5e8;return _0x8d91a3;})['then'](respondWithFilteredResult(_0x491817,_0x1cb436))[_0xb5df('0x47')](handleError(_0x491817,null));};exports[_0xb5df('0x48')]=function(_0x159710,_0x583b58){var _0x250c9f={'raw':![],'where':{'id':_0x159710['params']['id']}},_0x5698e1={};_0x5698e1[_0xb5df('0x33')]=_['keys'](db[_0xb5df('0x43')][_0xb5df('0x2f')]);_0x5698e1[_0xb5df('0x35')]=_['keys'](_0x159710['query']);_0x5698e1['filters']=_['intersection'](_0x5698e1[_0xb5df('0x33')],_0x5698e1['query']);_0x250c9f[_0xb5df('0x38')]=_['intersection'](_0x5698e1[_0xb5df('0x33')],qs[_0xb5df('0x39')](_0x159710[_0xb5df('0x35')][_0xb5df('0x39')]));_0x250c9f[_0xb5df('0x38')]=_0x250c9f['attributes']['length']?_0x250c9f[_0xb5df('0x38')]:_0x5698e1[_0xb5df('0x33')];if(_0x159710[_0xb5df('0x35')][_0xb5df('0x44')]){_0x250c9f['include']=[{'all':!![]}];}_0x250c9f=_[_0xb5df('0x40')]({},_0x250c9f,_0x159710[_0xb5df('0x42')]);return db['SalesforceAccount']['find'](_0x250c9f)[_0xb5df('0x28')](handleEntityNotFound(_0x583b58,null))[_0xb5df('0x28')](respondWithResult(_0x583b58,null))['catch'](handleError(_0x583b58,null));};exports[_0xb5df('0x49')]=function(_0x460fb0,_0x52f85e){return db[_0xb5df('0x43')][_0xb5df('0x49')](_0x460fb0[_0xb5df('0x4a')],{})[_0xb5df('0x28')](respondWithResult(_0x52f85e,0xc9))[_0xb5df('0x47')](handleError(_0x52f85e,null));};exports[_0xb5df('0x27')]=function(_0x466c14,_0x51e083){if(_0x466c14[_0xb5df('0x4a')]['id']){delete _0x466c14[_0xb5df('0x4a')]['id'];}return db[_0xb5df('0x43')]['find']({'where':{'id':_0x466c14[_0xb5df('0x4b')]['id']}})[_0xb5df('0x28')](handleEntityNotFound(_0x51e083,null))['then'](saveUpdates(_0x466c14[_0xb5df('0x4a')],null))[_0xb5df('0x28')](respondWithResult(_0x51e083,null))[_0xb5df('0x47')](handleError(_0x51e083,null));};exports[_0xb5df('0x29')]=function(_0x1e2487,_0x44949d){return db[_0xb5df('0x43')][_0xb5df('0x4c')]({'where':{'id':_0x1e2487[_0xb5df('0x4b')]['id']}})[_0xb5df('0x28')](handleEntityNotFound(_0x44949d,null))['then'](removeEntity(_0x44949d,null))['catch'](handleError(_0x44949d,null));};exports[_0xb5df('0x4d')]=function(_0x4cd2f8,_0x442e0,_0x485b33){var _0x48a33c={};var _0x38baf7={};var _0xbff59d;var _0x57415e;return db[_0xb5df('0x43')][_0xb5df('0x4e')]({'where':{'id':_0x4cd2f8['params']['id']}})[_0xb5df('0x28')](handleEntityNotFound(_0x442e0,null))[_0xb5df('0x28')](function(_0xc6fabb){if(_0xc6fabb){_0xbff59d=_0xc6fabb;_0x38baf7[_0xb5df('0x33')]=_[_0xb5df('0x34')](db[_0xb5df('0x4f')][_0xb5df('0x2f')]);_0x38baf7[_0xb5df('0x35')]=_[_0xb5df('0x34')](_0x4cd2f8['query']);_0x38baf7[_0xb5df('0x36')]=_['intersection'](_0x38baf7[_0xb5df('0x33')],_0x38baf7['query']);_0x48a33c[_0xb5df('0x38')]=_[_0xb5df('0x37')](_0x38baf7[_0xb5df('0x33')],qs[_0xb5df('0x39')](_0x4cd2f8[_0xb5df('0x35')]['fields']));_0x48a33c[_0xb5df('0x38')]=_0x48a33c[_0xb5df('0x38')][_0xb5df('0x3a')]?_0x48a33c[_0xb5df('0x38')]:_0x38baf7[_0xb5df('0x33')];_0x48a33c[_0xb5df('0x50')]=qs['sort'](_0x4cd2f8['query'][_0xb5df('0x3c')]);_0x48a33c[_0xb5df('0x3d')]=qs[_0xb5df('0x36')](_['pick'](_0x4cd2f8['query'],_0x38baf7['filters']));if(_0x4cd2f8[_0xb5df('0x35')]['filter']){_0x48a33c[_0xb5df('0x3d')]=_['merge'](_0x48a33c[_0xb5df('0x3d')],{'$or':_[_0xb5df('0x2e')](_0x48a33c['attributes'],function(_0x466478){var _0x2e60b2={};_0x2e60b2[_0x466478]={'$like':'%'+_0x4cd2f8[_0xb5df('0x35')][_0xb5df('0x3f')]+'%'};return _0x2e60b2;})});}_0x48a33c=_[_0xb5df('0x40')]({},_0x48a33c,_0x4cd2f8['options']);return _0xbff59d[_0xb5df('0x4d')](_0x48a33c);}})[_0xb5df('0x28')](function(_0x19f0f8){if(_0x19f0f8){_0x57415e=_0x19f0f8[_0xb5df('0x3a')];if(!_0x4cd2f8[_0xb5df('0x35')][_0xb5df('0x3b')]('nolimit')){_0x48a33c[_0xb5df('0x1f')]=qs[_0xb5df('0x1f')](_0x4cd2f8[_0xb5df('0x35')][_0xb5df('0x1f')]);_0x48a33c[_0xb5df('0x1e')]=qs[_0xb5df('0x1e')](_0x4cd2f8[_0xb5df('0x35')][_0xb5df('0x1e')]);}return _0xbff59d[_0xb5df('0x4d')](_0x48a33c);}})[_0xb5df('0x28')](function(_0x2e60cf){if(_0x2e60cf){return _0x2e60cf?{'count':_0x57415e,'rows':_0x2e60cf}:null;}})[_0xb5df('0x28')](respondWithResult(_0x442e0,null))[_0xb5df('0x47')](handleError(_0x442e0,null));};exports[_0xb5df('0x51')]=function(_0x2838bf,_0x4a0595,_0x1e40b4){if(_0x2838bf['body']['id']){delete _0x2838bf['body']['id'];}return db['SalesforceAccount'][_0xb5df('0x4e')]({'where':{'id':_0x2838bf[_0xb5df('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4a0595,null))[_0xb5df('0x28')](function(_0x3bb372){if(_0x3bb372){_0x2838bf[_0xb5df('0x4a')]['AccountId']=_0x3bb372['id'];_0x2838bf[_0xb5df('0x4a')][_0xb5df('0x52')]=integrations['getSubjects'](_0x2838bf['body'][_0xb5df('0x53')],_0x2838bf[_0xb5df('0x4a')][_0xb5df('0x31')]);_0x2838bf[_0xb5df('0x4a')][_0xb5df('0x54')]=integrations[_0xb5df('0x55')](_0x2838bf['body'][_0xb5df('0x53')],_0x2838bf[_0xb5df('0x4a')][_0xb5df('0x31')]);return db[_0xb5df('0x4f')][_0xb5df('0x49')](_0x2838bf['body'],{'include':[{'model':db[_0xb5df('0x56')],'as':_0xb5df('0x52')},{'model':db[_0xb5df('0x56')],'as':'Descriptions'}]});}return null;})[_0xb5df('0x28')](respondWithResult(_0x4a0595,null))[_0xb5df('0x47')](handleError(_0x4a0595,null));};exports[_0xb5df('0x57')]=function(_0x2f9156,_0x359b61,_0x3063e4){var _0x39b6c5;var _0xb4827e='';var _0x308282=_0xb5df('0x58');return db[_0xb5df('0x43')][_0xb5df('0x4e')]({'where':{'id':_0x2f9156['params']['id']},'attributes':['id',_0xb5df('0x59'),_0xb5df('0x5a'),_0xb5df('0x5b'),_0xb5df('0x5c'),_0xb5df('0x5d'),_0xb5df('0x5e')]})[_0xb5df('0x28')](handleEntityNotFound(_0x359b61,null))['then'](function(_0x50645f){if(_0x50645f){_0xb4827e=_0x50645f[_0xb5df('0x59')];var _0x30bc80=_0xb4827e[_0xb5df('0x5f')](-0x1);if(_0x30bc80==='/'){_0xb4827e=_0xb4827e[_0xb5df('0x60')](0x0,_0xb4827e[_0xb5df('0x61')](_0x30bc80));}_0x39b6c5=new jsforce[(_0xb5df('0x62'))]({'oauth2':{'loginUrl':_0xb4827e,'clientId':_0x50645f['clientId'],'clientSecret':_0x50645f['clientSecret']}});return _0x39b6c5['login'](_0x50645f[_0xb5df('0x5c')],_0x50645f['password']['concat'](_0x50645f[_0xb5df('0x5e')]));}})[_0xb5df('0x28')](function(_0xa043ea){if(_0xa043ea){if(!_['isNil'](_0x2f9156[_0xb5df('0x35')][_0xb5df('0x63')])){_0x308282=_0x2f9156[_0xb5df('0x35')][_0xb5df('0x63')];}return _0x39b6c5[_0xb5df('0x64')](_0x308282)[_0xb5df('0x65')]();}})[_0xb5df('0x28')](function(_0xffb004){var _0x3d4f09=[_0xb5df('0x66'),_0xb5df('0x67'),_0xb5df('0x68'),_0xb5df('0x69'),'Subject',_0xb5df('0x6a')];var _0x31041a=['string',_0xb5df('0x6b'),_0xb5df('0x6c'),_0xb5df('0x6d'),'email',_0xb5df('0x6e'),'phone'];if(_0xffb004){_[_0xb5df('0x6f')](_0xffb004[_0xb5df('0x39')],function(_0x835584){return _0x3d4f09['includes'](_0x835584[_0xb5df('0x2b')])||!_0x31041a[_0xb5df('0x70')](_0x835584[_0xb5df('0x31')]);});return{'count':_0xffb004[_0xb5df('0x39')]['length'],'rows':_[_0xb5df('0x2e')](_0xffb004['fields'],function(_0x441e40){return{'id':_0x441e40[_0xb5df('0x2b')],'name':_0x441e40[_0xb5df('0x71')],'custom':_0x441e40[_0xb5df('0x72')],'options':_0x441e40[_0xb5df('0x73')][_0xb5df('0x3a')]>0x0?_[_0xb5df('0x2e')](_0x441e40[_0xb5df('0x73')],function(_0x2636a8){return{'name':_0x2636a8[_0xb5df('0x71')],'value':_0x2636a8[_0xb5df('0x74')]};}):_0x441e40[_0xb5df('0x31')]=='boolean'?[{'name':'True','value':_0xb5df('0x75')},{'name':_0xb5df('0x76'),'value':_0xb5df('0x77')}]:[]};})};}})[_0xb5df('0x28')](respondWithResult(_0x359b61,null))['catch'](function(_0x3c432f){var _0x5adb1d=_0x2f9156[_0xb5df('0x35')]['test']?0x1f4:_0x3c432f['statusCode']||0x1f4;logger[_0xb5df('0x78')]('getFields,\x20%s,\x20%s,\x20%s',_0xb5df('0x57'),_0x5adb1d,JSON[_0xb5df('0x79')](_0x3c432f));delete _0x3c432f[_0xb5df('0x2b')];if(_0x5adb1d===0x191){_0x5adb1d=0x190;}_0x359b61[_0xb5df('0x1b')](_0x5adb1d)[_0xb5df('0x2c')](_0x2f9156[_0xb5df('0x35')][_0xb5df('0x7a')]?{'message':_0xb5df('0x7b'),'statusCode':_0x3c432f[_0xb5df('0x7c')]}:_0x3c432f);});};
\ No newline at end of file
index 30e6604..786dbd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe85=['../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x4ee41b,_0x12e0ac){var _0x97e531=function(_0xdd76e7){while(--_0xdd76e7){_0x4ee41b['push'](_0x4ee41b['shift']());}};_0x97e531(++_0x12e0ac);}(_0xbe85,0x19c));var _0x5be8=function(_0x1b0c61,_0x1add0b){_0x1b0c61=_0x1b0c61-0x0;var _0x2f0772=_0xbe85[_0x1b0c61];return _0x2f0772;};'use strict';var _=require(_0x5be8('0x0'));var util=require(_0x5be8('0x1'));var logger=require(_0x5be8('0x2'))('api');var moment=require(_0x5be8('0x3'));var BPromise=require(_0x5be8('0x4'));var rp=require(_0x5be8('0x5'));var fs=require('fs');var path=require(_0x5be8('0x6'));var rimraf=require(_0x5be8('0x7'));var config=require(_0x5be8('0x8'));var attributes=require(_0x5be8('0x9'));var integrations=require(_0x5be8('0xa'));module[_0x5be8('0xb')]=function(_0x40ee6c,_0xa2d9b2){return _0x40ee6c[_0x5be8('0xc')](_0x5be8('0xd'),attributes,{'tableName':_0x5be8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7119=['../../components/integrations/configuration','exports','SalesforceAccount','int_salesforce_accounts','util','api','bluebird','request-promise','path','rimraf','./intSalesforceAccount.attributes'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7119,0x1c7));var _0x9711=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x7119[_0x5d6456];return _0x4d66c1;};'use strict';var _=require('lodash');var util=require(_0x9711('0x0'));var logger=require('../../config/logger')(_0x9711('0x1'));var moment=require('moment');var BPromise=require(_0x9711('0x2'));var rp=require(_0x9711('0x3'));var fs=require('fs');var path=require(_0x9711('0x4'));var rimraf=require(_0x9711('0x5'));var config=require('../../config/environment');var attributes=require(_0x9711('0x6'));var integrations=require(_0x9711('0x7'));module[_0x9711('0x8')]=function(_0x101827,_0x191701){return _0x101827['define'](_0x9711('0x9'),attributes,{'tableName':_0x9711('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 582a22e..0957579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75c2=['../../config/logger','rpc','../../config/environment','client','http','request','info','SalesforceAccount,\x20%s,\x20%s','SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','SalesforceAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','GetSalesforceAccount','debug','ShowSalesforceAccount','find','lodash','util','moment','bluebird'];(function(_0x908b51,_0x2a50c4){var _0x2dcb0d=function(_0x5cd8c5){while(--_0x5cd8c5){_0x908b51['push'](_0x908b51['shift']());}};_0x2dcb0d(++_0x2a50c4);}(_0x75c2,0x1a0));var _0x275c=function(_0x2137eb,_0x4207b7){_0x2137eb=_0x2137eb-0x0;var _0x4ad5aa=_0x75c2[_0x2137eb];return _0x4ad5aa;};'use strict';var _=require(_0x275c('0x0'));var util=require(_0x275c('0x1'));var moment=require(_0x275c('0x2'));var BPromise=require(_0x275c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x275c('0x4'))(_0x275c('0x5'));var config=require(_0x275c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x275c('0x7')][_0x275c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x359eaa,_0x34ef78,_0x480fb9){return new BPromise(function(_0x3fabe2,_0x3ddfad){return client[_0x275c('0x9')](_0x359eaa,_0x480fb9)['then'](function(_0x3bd0cd){logger[_0x275c('0xa')](_0x275c('0xb'),_0x34ef78,'request\x20sent');logger['debug'](_0x275c('0xc'),_0x34ef78,_0x275c('0xd'),JSON[_0x275c('0xe')](_0x3bd0cd));if(_0x3bd0cd[_0x275c('0xf')]){if(_0x3bd0cd['error'][_0x275c('0x10')]===0x1f4){logger[_0x275c('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x34ef78,_0x3bd0cd[_0x275c('0xf')][_0x275c('0x11')]);return _0x3ddfad(_0x3bd0cd[_0x275c('0xf')][_0x275c('0x11')]);}logger[_0x275c('0xf')](_0x275c('0xb'),_0x34ef78,_0x3bd0cd[_0x275c('0xf')][_0x275c('0x11')]);return _0x3fabe2(_0x3bd0cd['error'][_0x275c('0x11')]);}else{logger[_0x275c('0xa')](_0x275c('0xb'),_0x34ef78,_0x275c('0xd'));_0x3fabe2(_0x3bd0cd[_0x275c('0x12')]['message']);}})[_0x275c('0x13')](function(_0x3afef0){logger[_0x275c('0xf')](_0x275c('0xb'),_0x34ef78,_0x3afef0);_0x3ddfad(_0x3afef0);});});}exports['GetSalesforceAccount']=function(_0x357ffc){var _0x52e9e5=this;return new Promise(function(_0x146c50,_0x17757e){return db[_0x275c('0x14')][_0x275c('0x15')]({'raw':_0x357ffc[_0x275c('0x16')]?_0x357ffc['options'][_0x275c('0x17')]===undefined?!![]:![]:!![],'where':_0x357ffc[_0x275c('0x16')]?_0x357ffc[_0x275c('0x16')][_0x275c('0x18')]||null:null,'attributes':_0x357ffc[_0x275c('0x16')]?_0x357ffc[_0x275c('0x16')][_0x275c('0x19')]||null:null,'limit':_0x357ffc['options']?_0x357ffc[_0x275c('0x16')][_0x275c('0x1a')]||null:null,'include':_0x357ffc['options']?_0x357ffc[_0x275c('0x16')][_0x275c('0x1b')]?_[_0x275c('0x1c')](_0x357ffc['options'][_0x275c('0x1b')],function(_0x4cf5d0){return{'model':db[_0x4cf5d0[_0x275c('0x1d')]],'as':_0x4cf5d0['as'],'attributes':_0x4cf5d0[_0x275c('0x19')],'include':_0x4cf5d0['include']?_[_0x275c('0x1c')](_0x4cf5d0['include'],function(_0x59a225){return{'model':db[_0x59a225[_0x275c('0x1d')]],'as':_0x59a225['as'],'attributes':_0x59a225['attributes'],'include':_0x59a225['include']?_[_0x275c('0x1c')](_0x59a225[_0x275c('0x1b')],function(_0x142904){return{'model':db[_0x142904[_0x275c('0x1d')]],'as':_0x142904['as'],'attributes':_0x142904['attributes']};}):[]};}):[]};}):[]:[]})[_0x275c('0x1e')](function(_0x2b598b){logger[_0x275c('0xa')](_0x275c('0x1f'),_0x357ffc);logger[_0x275c('0x20')](_0x275c('0x1f'),_0x357ffc,JSON['stringify'](_0x2b598b));_0x146c50(_0x2b598b);})['catch'](function(_0x5c5f5e){logger[_0x275c('0xf')](_0x275c('0x1f'),_0x5c5f5e[_0x275c('0x11')],_0x357ffc);_0x17757e(_0x52e9e5['error'](0x1f4,_0x5c5f5e[_0x275c('0x11')]));});});};exports[_0x275c('0x21')]=function(_0x4cf828){var _0xb8b58a=this;return new Promise(function(_0x330732,_0x314c12){return db['SalesforceAccount'][_0x275c('0x22')]({'raw':_0x4cf828[_0x275c('0x16')]?_0x4cf828[_0x275c('0x16')][_0x275c('0x17')]===undefined?!![]:![]:!![],'where':_0x4cf828[_0x275c('0x16')]?_0x4cf828[_0x275c('0x16')]['where']||null:null,'attributes':_0x4cf828[_0x275c('0x16')]?_0x4cf828[_0x275c('0x16')][_0x275c('0x19')]||null:null,'include':_0x4cf828[_0x275c('0x16')]?_0x4cf828[_0x275c('0x16')]['include']?_[_0x275c('0x1c')](_0x4cf828[_0x275c('0x16')][_0x275c('0x1b')],function(_0x3999bf){return{'model':db[_0x3999bf[_0x275c('0x1d')]],'as':_0x3999bf['as'],'attributes':_0x3999bf['attributes'],'include':_0x3999bf[_0x275c('0x1b')]?_[_0x275c('0x1c')](_0x3999bf[_0x275c('0x1b')],function(_0x3de737){return{'model':db[_0x3de737['model']],'as':_0x3de737['as'],'attributes':_0x3de737['attributes'],'include':_0x3de737[_0x275c('0x1b')]?_['map'](_0x3de737[_0x275c('0x1b')],function(_0x1d7d15){return{'model':db[_0x1d7d15[_0x275c('0x1d')]],'as':_0x1d7d15['as'],'attributes':_0x1d7d15[_0x275c('0x19')]};}):[]};}):[]};}):[]:[]})[_0x275c('0x1e')](function(_0x2011a2){logger[_0x275c('0xa')]('ShowSalesforceAccount',_0x4cf828);logger[_0x275c('0x20')]('ShowSalesforceAccount',_0x4cf828,JSON[_0x275c('0xe')](_0x2011a2));_0x330732(_0x2011a2);})['catch'](function(_0x58fe7d){logger['error'](_0x275c('0x21'),_0x58fe7d['message'],_0x4cf828);_0x314c12(_0xb8b58a['error'](0x1f4,_0x58fe7d[_0x275c('0x11')]));});});};
\ No newline at end of file
+var _0xc858=['find','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','where','limit','include','map','model','attributes','ShowSalesforceAccount'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xc858,0x6e));var _0x8c85=function(_0x4cfafc,_0x4c8f9e){_0x4cfafc=_0x4cfafc-0x0;var _0x45ee5a=_0xc858[_0x4cfafc];return _0x45ee5a;};'use strict';var _=require(_0x8c85('0x0'));var util=require(_0x8c85('0x1'));var moment=require(_0x8c85('0x2'));var BPromise=require('bluebird');var rs=require(_0x8c85('0x3'));var fs=require('fs');var Redis=require(_0x8c85('0x4'));var db=require(_0x8c85('0x5'))['db'];var utils=require(_0x8c85('0x6'));var logger=require(_0x8c85('0x7'))('rpc');var config=require(_0x8c85('0x8'));var jayson=require(_0x8c85('0x9'));var client=jayson[_0x8c85('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55075a,_0x2cf5f5,_0x195580){return new BPromise(function(_0x4dea73,_0x3993af){return client[_0x8c85('0xb')](_0x55075a,_0x195580)[_0x8c85('0xc')](function(_0x460595){logger[_0x8c85('0xd')](_0x8c85('0xe'),_0x2cf5f5,_0x8c85('0xf'));logger[_0x8c85('0x10')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x2cf5f5,_0x8c85('0xf'),JSON[_0x8c85('0x11')](_0x460595));if(_0x460595[_0x8c85('0x12')]){if(_0x460595[_0x8c85('0x12')][_0x8c85('0x13')]===0x1f4){logger[_0x8c85('0x12')](_0x8c85('0xe'),_0x2cf5f5,_0x460595[_0x8c85('0x12')]['message']);return _0x3993af(_0x460595[_0x8c85('0x12')][_0x8c85('0x14')]);}logger[_0x8c85('0x12')](_0x8c85('0xe'),_0x2cf5f5,_0x460595[_0x8c85('0x12')][_0x8c85('0x14')]);return _0x4dea73(_0x460595[_0x8c85('0x12')][_0x8c85('0x14')]);}else{logger[_0x8c85('0xd')](_0x8c85('0xe'),_0x2cf5f5,_0x8c85('0xf'));_0x4dea73(_0x460595[_0x8c85('0x15')][_0x8c85('0x14')]);}})[_0x8c85('0x16')](function(_0x49fa81){logger[_0x8c85('0x12')](_0x8c85('0xe'),_0x2cf5f5,_0x49fa81);_0x3993af(_0x49fa81);});});}exports[_0x8c85('0x17')]=function(_0xa862ee){var _0x3a1ca9=this;return new Promise(function(_0x33dc53,_0x5a0619){return db[_0x8c85('0x18')][_0x8c85('0x19')]({'raw':_0xa862ee['options']?_0xa862ee['options']['raw']===undefined?!![]:![]:!![],'where':_0xa862ee[_0x8c85('0x1a')]?_0xa862ee[_0x8c85('0x1a')][_0x8c85('0x1b')]||null:null,'attributes':_0xa862ee[_0x8c85('0x1a')]?_0xa862ee['options']['attributes']||null:null,'limit':_0xa862ee[_0x8c85('0x1a')]?_0xa862ee[_0x8c85('0x1a')][_0x8c85('0x1c')]||null:null,'include':_0xa862ee[_0x8c85('0x1a')]?_0xa862ee['options'][_0x8c85('0x1d')]?_[_0x8c85('0x1e')](_0xa862ee[_0x8c85('0x1a')][_0x8c85('0x1d')],function(_0x53dbbc){return{'model':db[_0x53dbbc[_0x8c85('0x1f')]],'as':_0x53dbbc['as'],'attributes':_0x53dbbc['attributes'],'include':_0x53dbbc[_0x8c85('0x1d')]?_[_0x8c85('0x1e')](_0x53dbbc['include'],function(_0x2ce327){return{'model':db[_0x2ce327[_0x8c85('0x1f')]],'as':_0x2ce327['as'],'attributes':_0x2ce327[_0x8c85('0x20')],'include':_0x2ce327[_0x8c85('0x1d')]?_[_0x8c85('0x1e')](_0x2ce327[_0x8c85('0x1d')],function(_0x2284a1){return{'model':db[_0x2284a1[_0x8c85('0x1f')]],'as':_0x2284a1['as'],'attributes':_0x2284a1[_0x8c85('0x20')]};}):[]};}):[]};}):[]:[]})[_0x8c85('0xc')](function(_0x22488e){logger['info'](_0x8c85('0x17'),_0xa862ee);logger[_0x8c85('0x10')](_0x8c85('0x17'),_0xa862ee,JSON['stringify'](_0x22488e));_0x33dc53(_0x22488e);})[_0x8c85('0x16')](function(_0x4efcb3){logger[_0x8c85('0x12')](_0x8c85('0x17'),_0x4efcb3[_0x8c85('0x14')],_0xa862ee);_0x5a0619(_0x3a1ca9['error'](0x1f4,_0x4efcb3[_0x8c85('0x14')]));});});};exports[_0x8c85('0x21')]=function(_0x12bba7){var _0x103513=this;return new Promise(function(_0x470c35,_0x4d8bf2){return db['SalesforceAccount'][_0x8c85('0x22')]({'raw':_0x12bba7[_0x8c85('0x1a')]?_0x12bba7[_0x8c85('0x1a')][_0x8c85('0x23')]===undefined?!![]:![]:!![],'where':_0x12bba7[_0x8c85('0x1a')]?_0x12bba7['options'][_0x8c85('0x1b')]||null:null,'attributes':_0x12bba7[_0x8c85('0x1a')]?_0x12bba7[_0x8c85('0x1a')][_0x8c85('0x20')]||null:null,'include':_0x12bba7[_0x8c85('0x1a')]?_0x12bba7[_0x8c85('0x1a')][_0x8c85('0x1d')]?_[_0x8c85('0x1e')](_0x12bba7[_0x8c85('0x1a')][_0x8c85('0x1d')],function(_0x154186){return{'model':db[_0x154186[_0x8c85('0x1f')]],'as':_0x154186['as'],'attributes':_0x154186[_0x8c85('0x20')],'include':_0x154186[_0x8c85('0x1d')]?_[_0x8c85('0x1e')](_0x154186[_0x8c85('0x1d')],function(_0x3a9db1){return{'model':db[_0x3a9db1[_0x8c85('0x1f')]],'as':_0x3a9db1['as'],'attributes':_0x3a9db1[_0x8c85('0x20')],'include':_0x3a9db1[_0x8c85('0x1d')]?_[_0x8c85('0x1e')](_0x3a9db1['include'],function(_0xc5a3ee){return{'model':db[_0xc5a3ee[_0x8c85('0x1f')]],'as':_0xc5a3ee['as'],'attributes':_0xc5a3ee[_0x8c85('0x20')]};}):[]};}):[]};}):[]:[]})[_0x8c85('0xc')](function(_0x40d339){logger[_0x8c85('0xd')]('ShowSalesforceAccount',_0x12bba7);logger[_0x8c85('0x10')](_0x8c85('0x21'),_0x12bba7,JSON['stringify'](_0x40d339));_0x470c35(_0x40d339);})['catch'](function(_0x24a8fc){logger[_0x8c85('0x12')](_0x8c85('0x21'),_0x24a8fc[_0x8c85('0x14')],_0x12bba7);_0x4d8bf2(_0x103513['error'](0x1f4,_0x24a8fc['message']));});});};
\ No newline at end of file
index eb87b86..61f2a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xdb28,0x106));var _0x8db2=function(_0xcac9a6,_0x24aeec){_0xcac9a6=_0xcac9a6-0x0;var _0x4e1fc7=_0xdb28[_0xcac9a6];return _0x4e1fc7;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xdb28,0x106));var _0x8db2=function(_0x4d92a7,_0x5b777c){_0x4d92a7=_0x4d92a7-0x0;var _0x57dd51=_0xdb28[_0x4d92a7];return _0x57dd51;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
index 65f42c8..094ad0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x374e=['contact_lead','contact','lead','account_contact_lead','account','nothing','exports','STRING','ENUM','Task'];(function(_0x1ca921,_0x48e4e2){var _0x1f7f94=function(_0x7feea1){while(--_0x7feea1){_0x1ca921['push'](_0x1ca921['shift']());}};_0x1f7f94(++_0x48e4e2);}(_0x374e,0x146));var _0xe374=function(_0x23d50b,_0x4ea290){_0x23d50b=_0x23d50b-0x0;var _0x19abbf=_0x374e[_0x23d50b];return _0x19abbf;};'use strict';var Sequelize=require('sequelize');module[_0xe374('0x0')]={'name':{'type':Sequelize[_0xe374('0x1')]},'description':{'type':Sequelize[_0xe374('0x1')]},'ticketType':{'type':Sequelize[_0xe374('0x2')]('Task','Case'),'defaultValue':_0xe374('0x3')},'moduleSearch':{'type':Sequelize[_0xe374('0x2')](_0xe374('0x4'),_0xe374('0x5'),_0xe374('0x6'),_0xe374('0x7'),_0xe374('0x8')),'defaultValue':_0xe374('0x4')},'moduleCreate':{'type':Sequelize[_0xe374('0x2')](_0xe374('0x9'),_0xe374('0x5'),_0xe374('0x6'),'account'),'defaultValue':_0xe374('0x6')},'leadId':{'type':Sequelize[_0xe374('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xe374('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xe374('0x1')]},'additionalSearchLead':{'type':Sequelize[_0xe374('0x1')]}};
\ No newline at end of file
+var _0xc42f=['sequelize','exports','STRING','ENUM','Case','contact_lead','contact','lead','account_contact_lead','account','nothing'];(function(_0xe1770a,_0x4fc5d6){var _0x3e6274=function(_0x1a016f){while(--_0x1a016f){_0xe1770a['push'](_0xe1770a['shift']());}};_0x3e6274(++_0x4fc5d6);}(_0xc42f,0xb0));var _0xfc42=function(_0x4ee6d5,_0x10299f){_0x4ee6d5=_0x4ee6d5-0x0;var _0xcf5445=_0xc42f[_0x4ee6d5];return _0xcf5445;};'use strict';var Sequelize=require(_0xfc42('0x0'));module[_0xfc42('0x1')]={'name':{'type':Sequelize[_0xfc42('0x2')]},'description':{'type':Sequelize[_0xfc42('0x2')]},'ticketType':{'type':Sequelize[_0xfc42('0x3')]('Task',_0xfc42('0x4')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM'](_0xfc42('0x5'),_0xfc42('0x6'),_0xfc42('0x7'),_0xfc42('0x8'),_0xfc42('0x9')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xfc42('0x3')](_0xfc42('0xa'),_0xfc42('0x6'),_0xfc42('0x7'),_0xfc42('0x9')),'defaultValue':_0xfc42('0x7')},'leadId':{'type':Sequelize[_0xfc42('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0xfc42('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xfc42('0x2')]}};
\ No newline at end of file
index c905c26..ff5bcb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x913a=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','destroy','then','stack','name','send','index','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','body','getFields','findOne','pick','getSubjects','SalesforceField','order','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x913a,0xe1));var _0xa913=function(_0x39fcf2,_0x332c24){_0x39fcf2=_0x39fcf2-0x0;var _0x25473e=_0x913a[_0x39fcf2];return _0x25473e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa913('0x0'));var zipdir=require(_0xa913('0x1'));var jsonpatch=require(_0xa913('0x2'));var rp=require(_0xa913('0x3'));var moment=require(_0xa913('0x4'));var BPromise=require(_0xa913('0x5'));var Mustache=require(_0xa913('0x6'));var util=require(_0xa913('0x7'));var path=require(_0xa913('0x8'));var sox=require(_0xa913('0x9'));var csv=require('to-csv');var ejs=require(_0xa913('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa913('0xb'));var squel=require(_0xa913('0xc'));var crypto=require(_0xa913('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa913('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa913('0xf'));var Papa=require(_0xa913('0x10'));var Redis=require(_0xa913('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa913('0x12'));var as=require(_0xa913('0x13'));var hardwareService=require(_0xa913('0x14'));var logger=require(_0xa913('0x15'))(_0xa913('0x16'));var utils=require('../../config/utils');var config=require(_0xa913('0x17'));var licenseUtil=require(_0xa913('0x18'));var db=require(_0xa913('0x19'))['db'];function respondWithStatusCode(_0x4f20d8,_0x3edaae){_0x3edaae=_0x3edaae||0xcc;return function(_0x24020f){if(_0x24020f){return _0x4f20d8[_0xa913('0x1a')](_0x3edaae);}return _0x4f20d8[_0xa913('0x1b')](_0x3edaae)[_0xa913('0x1c')]();};}function respondWithResult(_0x9cf7cf,_0x502306){_0x502306=_0x502306||0xc8;return function(_0x32e9de){if(_0x32e9de){return _0x9cf7cf[_0xa913('0x1b')](_0x502306)['json'](_0x32e9de);}};}function respondWithFilteredResult(_0x4b771a,_0x15e4be){return function(_0x4675a5){if(_0x4675a5){var _0x3a1480=typeof _0x15e4be[_0xa913('0x1d')]===_0xa913('0x1e')&&typeof _0x15e4be[_0xa913('0x1f')]===_0xa913('0x1e');var _0x3eb2d7=_0x4675a5[_0xa913('0x20')];var _0x2da128=_0x3a1480?0x0:_0x15e4be[_0xa913('0x1d')];var _0x49604b=_0x3a1480?_0x4675a5[_0xa913('0x20')]:_0x15e4be[_0xa913('0x1d')]+_0x15e4be[_0xa913('0x1f')];var _0x425d05;if(_0x49604b>=_0x3eb2d7){_0x49604b=_0x3eb2d7;_0x425d05=0xc8;}else{_0x425d05=0xce;}_0x4b771a[_0xa913('0x1b')](_0x425d05);return _0x4b771a[_0xa913('0x21')]('Content-Range',_0x2da128+'-'+_0x49604b+'/'+_0x3eb2d7)[_0xa913('0x22')](_0x4675a5);}return null;};}function patchUpdates(_0x183508){return function(_0x42af1b){try{jsonpatch[_0xa913('0x23')](_0x42af1b,_0x183508,!![]);}catch(_0x47ecb7){return BPromise[_0xa913('0x24')](_0x47ecb7);}return _0x42af1b['save']();};}function saveUpdates(_0x472db3,_0x90e516){return function(_0x8c5d2c){if(_0x8c5d2c){return _0x8c5d2c[_0xa913('0x25')](_0x472db3)['then'](function(_0x38d4c3){return _0x38d4c3;});}return null;};}function removeEntity(_0x369a08,_0x3d9e13){return function(_0x36c65f){if(_0x36c65f){return _0x36c65f[_0xa913('0x26')]()[_0xa913('0x27')](function(){_0x369a08[_0xa913('0x1b')](0xcc)[_0xa913('0x1c')]();});}};}function handleEntityNotFound(_0x5257fb,_0x2728d3){return function(_0x21a85b){if(!_0x21a85b){_0x5257fb[_0xa913('0x1a')](0x194);}return _0x21a85b;};}function handleError(_0x237a2f,_0x1947af){_0x1947af=_0x1947af||0x1f4;return function(_0x48f1b4){logger['error'](_0x48f1b4[_0xa913('0x28')]);if(_0x48f1b4[_0xa913('0x29')]){delete _0x48f1b4['name'];}_0x237a2f[_0xa913('0x1b')](_0x1947af)[_0xa913('0x2a')](_0x48f1b4);};}exports[_0xa913('0x2b')]=function(_0x4ffb3c,_0x49b916){var _0x5f2ebd={},_0x5adb34={},_0x30ed95={'count':0x0,'rows':[]};var _0x2f48cc=_['map'](db[_0xa913('0x2c')][_0xa913('0x2d')],function(_0xd4d173){return{'name':_0xd4d173[_0xa913('0x2e')],'type':_0xd4d173[_0xa913('0x2f')][_0xa913('0x30')]};});_0x5adb34[_0xa913('0x31')]=_['map'](_0x2f48cc,_0xa913('0x29'));_0x5adb34[_0xa913('0x32')]=_[_0xa913('0x33')](_0x4ffb3c[_0xa913('0x32')]);_0x5adb34['filters']=_['intersection'](_0x5adb34[_0xa913('0x31')],_0x5adb34['query']);_0x5f2ebd[_0xa913('0x34')]=_[_0xa913('0x35')](_0x5adb34[_0xa913('0x31')],qs['fields'](_0x4ffb3c[_0xa913('0x32')][_0xa913('0x36')]));_0x5f2ebd[_0xa913('0x34')]=_0x5f2ebd[_0xa913('0x34')][_0xa913('0x37')]?_0x5f2ebd[_0xa913('0x34')]:_0x5adb34[_0xa913('0x31')];if(!_0x4ffb3c[_0xa913('0x32')][_0xa913('0x38')](_0xa913('0x39'))){_0x5f2ebd['limit']=qs[_0xa913('0x1f')](_0x4ffb3c['query'][_0xa913('0x1f')]);_0x5f2ebd['offset']=qs['offset'](_0x4ffb3c[_0xa913('0x32')][_0xa913('0x1d')]);}_0x5f2ebd['order']=qs['sort'](_0x4ffb3c[_0xa913('0x32')][_0xa913('0x3a')]);_0x5f2ebd[_0xa913('0x3b')]=qs[_0xa913('0x3c')](_['pick'](_0x4ffb3c[_0xa913('0x32')],_0x5adb34[_0xa913('0x3c')]),_0x2f48cc);if(_0x4ffb3c[_0xa913('0x32')]['filter']){_0x5f2ebd[_0xa913('0x3b')]=_[_0xa913('0x3d')](_0x5f2ebd[_0xa913('0x3b')],{'$or':_[_0xa913('0x3e')](_0x2f48cc,function(_0x59724b){if(_0x59724b[_0xa913('0x2f')]!==_0xa913('0x3f')){var _0x2647b0={};_0x2647b0[_0x59724b[_0xa913('0x29')]]={'$like':'%'+_0x4ffb3c[_0xa913('0x32')][_0xa913('0x40')]+'%'};return _0x2647b0;}})});}_0x5f2ebd=_['merge']({},_0x5f2ebd,_0x4ffb3c[_0xa913('0x41')]);var _0x36ad82={'where':_0x5f2ebd['where']};return db['SalesforceConfiguration']['count'](_0x36ad82)[_0xa913('0x27')](function(_0x7bf4ad){_0x30ed95[_0xa913('0x20')]=_0x7bf4ad;if(_0x4ffb3c[_0xa913('0x32')][_0xa913('0x42')]){_0x5f2ebd[_0xa913('0x43')]=[{'all':!![]}];}return db[_0xa913('0x2c')][_0xa913('0x44')](_0x5f2ebd);})['then'](function(_0x50ea20){_0x30ed95[_0xa913('0x45')]=_0x50ea20;return _0x30ed95;})[_0xa913('0x27')](respondWithFilteredResult(_0x49b916,_0x5f2ebd))[_0xa913('0x46')](handleError(_0x49b916,null));};exports[_0xa913('0x47')]=function(_0x276bac,_0x5533b6){var _0x3be4c6={'raw':![],'where':{'id':_0x276bac[_0xa913('0x48')]['id']}},_0x202544={};_0x202544[_0xa913('0x31')]=_['keys'](db['SalesforceConfiguration'][_0xa913('0x2d')]);_0x202544['query']=_[_0xa913('0x33')](_0x276bac[_0xa913('0x32')]);_0x202544[_0xa913('0x3c')]=_[_0xa913('0x35')](_0x202544['model'],_0x202544[_0xa913('0x32')]);_0x3be4c6['attributes']=_[_0xa913('0x35')](_0x202544[_0xa913('0x31')],qs[_0xa913('0x36')](_0x276bac['query'][_0xa913('0x36')]));_0x3be4c6[_0xa913('0x34')]=_0x3be4c6[_0xa913('0x34')]['length']?_0x3be4c6[_0xa913('0x34')]:_0x202544[_0xa913('0x31')];if(_0x276bac[_0xa913('0x32')][_0xa913('0x42')]){_0x3be4c6[_0xa913('0x43')]=[{'all':!![]}];}_0x3be4c6=_['merge']({},_0x3be4c6,_0x276bac[_0xa913('0x41')]);return db[_0xa913('0x2c')][_0xa913('0x49')](_0x3be4c6)[_0xa913('0x27')](handleEntityNotFound(_0x5533b6,null))[_0xa913('0x27')](respondWithResult(_0x5533b6,null))[_0xa913('0x46')](handleError(_0x5533b6,null));};exports['create']=function(_0xac92b8,_0x598b4b){return db[_0xa913('0x2c')]['create'](_0xac92b8[_0xa913('0x4a')],{})[_0xa913('0x27')](respondWithResult(_0x598b4b,0xc9))[_0xa913('0x46')](handleError(_0x598b4b,null));};exports[_0xa913('0x25')]=function(_0x4bb2c7,_0x590985){if(_0x4bb2c7[_0xa913('0x4a')]['id']){delete _0x4bb2c7[_0xa913('0x4a')]['id'];}return db[_0xa913('0x2c')][_0xa913('0x49')]({'where':{'id':_0x4bb2c7[_0xa913('0x48')]['id']}})['then'](handleEntityNotFound(_0x590985,null))['then'](saveUpdates(_0x4bb2c7[_0xa913('0x4a')],null))[_0xa913('0x27')](respondWithResult(_0x590985,null))['catch'](handleError(_0x590985,null));};exports[_0xa913('0x26')]=function(_0x3a32dd,_0x31ccf6){return db[_0xa913('0x2c')][_0xa913('0x49')]({'where':{'id':_0x3a32dd[_0xa913('0x48')]['id']}})[_0xa913('0x27')](handleEntityNotFound(_0x31ccf6,null))[_0xa913('0x27')](removeEntity(_0x31ccf6,null))[_0xa913('0x46')](handleError(_0x31ccf6,null));};exports[_0xa913('0x4b')]=function(_0xda3baf,_0x14b973,_0x20317a){var _0x3d4fce={};var _0x2be753={};var _0x565669;var _0xb8a1e7;return db[_0xa913('0x2c')][_0xa913('0x4c')]({'where':{'id':_0xda3baf[_0xa913('0x48')]['id']}})['then'](handleEntityNotFound(_0x14b973,null))['then'](function(_0x5d8b77){if(_0x5d8b77){_0x565669=_0x5d8b77;_0x2be753[_0xa913('0x31')]=_[_0xa913('0x33')](db['SalesforceField'][_0xa913('0x2d')]);_0x2be753[_0xa913('0x32')]=_[_0xa913('0x33')](_0xda3baf[_0xa913('0x32')]);_0x2be753[_0xa913('0x3c')]=_[_0xa913('0x35')](_0x2be753[_0xa913('0x31')],_0x2be753[_0xa913('0x32')]);_0x3d4fce['attributes']=_[_0xa913('0x35')](_0x2be753[_0xa913('0x31')],qs[_0xa913('0x36')](_0xda3baf['query'][_0xa913('0x36')]));_0x3d4fce['attributes']=_0x3d4fce[_0xa913('0x34')][_0xa913('0x37')]?_0x3d4fce[_0xa913('0x34')]:_0x2be753[_0xa913('0x31')];_0x3d4fce['order']=qs['sort'](_0xda3baf['query'][_0xa913('0x3a')]);_0x3d4fce['where']=qs[_0xa913('0x3c')](_[_0xa913('0x4d')](_0xda3baf[_0xa913('0x32')],_0x2be753[_0xa913('0x3c')]));if(_0xda3baf['query']['filter']){_0x3d4fce[_0xa913('0x3b')]=_[_0xa913('0x3d')](_0x3d4fce['where'],{'$or':_[_0xa913('0x3e')](_0x3d4fce['attributes'],function(_0x9820c){var _0x5639ae={};_0x5639ae[_0x9820c]={'$like':'%'+_0xda3baf['query'][_0xa913('0x40')]+'%'};return _0x5639ae;})});}_0x3d4fce=_[_0xa913('0x3d')]({},_0x3d4fce,_0xda3baf[_0xa913('0x41')]);return _0x565669['getFields'](_0x3d4fce);}})[_0xa913('0x27')](function(_0x563002){if(_0x563002){_0xb8a1e7=_0x563002[_0xa913('0x37')];if(!_0xda3baf['query'][_0xa913('0x38')](_0xa913('0x39'))){_0x3d4fce['limit']=qs[_0xa913('0x1f')](_0xda3baf['query']['limit']);_0x3d4fce[_0xa913('0x1d')]=qs[_0xa913('0x1d')](_0xda3baf[_0xa913('0x32')]['offset']);}return _0x565669[_0xa913('0x4b')](_0x3d4fce);}})['then'](function(_0x1a7673){if(_0x1a7673){return _0x1a7673?{'count':_0xb8a1e7,'rows':_0x1a7673}:null;}})[_0xa913('0x27')](respondWithResult(_0x14b973,null))[_0xa913('0x46')](handleError(_0x14b973,null));};exports[_0xa913('0x4e')]=function(_0x2d9962,_0x7a9e3f,_0x5129ba){var _0x14d1d0={};var _0x487fe0={};var _0x1159e2;var _0x32c117;return db['SalesforceConfiguration'][_0xa913('0x4c')]({'where':{'id':_0x2d9962[_0xa913('0x48')]['id']}})[_0xa913('0x27')](handleEntityNotFound(_0x7a9e3f,null))[_0xa913('0x27')](function(_0x1faf49){if(_0x1faf49){_0x1159e2=_0x1faf49;_0x487fe0['model']=_[_0xa913('0x33')](db[_0xa913('0x4f')]['rawAttributes']);_0x487fe0['query']=_[_0xa913('0x33')](_0x2d9962[_0xa913('0x32')]);_0x487fe0[_0xa913('0x3c')]=_['intersection'](_0x487fe0['model'],_0x487fe0[_0xa913('0x32')]);_0x14d1d0['attributes']=_[_0xa913('0x35')](_0x487fe0[_0xa913('0x31')],qs[_0xa913('0x36')](_0x2d9962[_0xa913('0x32')][_0xa913('0x36')]));_0x14d1d0['attributes']=_0x14d1d0[_0xa913('0x34')][_0xa913('0x37')]?_0x14d1d0[_0xa913('0x34')]:_0x487fe0[_0xa913('0x31')];_0x14d1d0[_0xa913('0x50')]=qs['sort'](_0x2d9962['query'][_0xa913('0x3a')]);_0x14d1d0[_0xa913('0x3b')]=qs['filters'](_['pick'](_0x2d9962[_0xa913('0x32')],_0x487fe0[_0xa913('0x3c')]));if(_0x2d9962[_0xa913('0x32')][_0xa913('0x40')]){_0x14d1d0['where']=_[_0xa913('0x3d')](_0x14d1d0['where'],{'$or':_['map'](_0x14d1d0[_0xa913('0x34')],function(_0x8dcca){var _0x502e63={};_0x502e63[_0x8dcca]={'$like':'%'+_0x2d9962['query'][_0xa913('0x40')]+'%'};return _0x502e63;})});}_0x14d1d0=_[_0xa913('0x3d')]({},_0x14d1d0,_0x2d9962['options']);return _0x1159e2[_0xa913('0x4e')](_0x14d1d0);}})[_0xa913('0x27')](function(_0x3d71c0){if(_0x3d71c0){_0x32c117=_0x3d71c0[_0xa913('0x37')];if(!_0x2d9962[_0xa913('0x32')][_0xa913('0x38')]('nolimit')){_0x14d1d0[_0xa913('0x1f')]=qs['limit'](_0x2d9962[_0xa913('0x32')][_0xa913('0x1f')]);_0x14d1d0[_0xa913('0x1d')]=qs[_0xa913('0x1d')](_0x2d9962[_0xa913('0x32')][_0xa913('0x1d')]);}return _0x1159e2[_0xa913('0x4e')](_0x14d1d0);}})[_0xa913('0x27')](function(_0x426047){if(_0x426047){return _0x426047?{'count':_0x32c117,'rows':_0x426047}:null;}})['then'](respondWithResult(_0x7a9e3f,null))[_0xa913('0x46')](handleError(_0x7a9e3f,null));};exports[_0xa913('0x51')]=function(_0x50b9ca,_0x4e7010,_0x4508fb){var _0x381bd9={};var _0x25f4ae={};var _0x2c7723;var _0x43a31e;return db[_0xa913('0x2c')][_0xa913('0x4c')]({'where':{'id':_0x50b9ca[_0xa913('0x48')]['id']}})[_0xa913('0x27')](handleEntityNotFound(_0x4e7010,null))[_0xa913('0x27')](function(_0x36c4d0){if(_0x36c4d0){_0x2c7723=_0x36c4d0;_0x25f4ae[_0xa913('0x31')]=_[_0xa913('0x33')](db[_0xa913('0x4f')][_0xa913('0x2d')]);_0x25f4ae[_0xa913('0x32')]=_[_0xa913('0x33')](_0x50b9ca['query']);_0x25f4ae[_0xa913('0x3c')]=_[_0xa913('0x35')](_0x25f4ae[_0xa913('0x31')],_0x25f4ae[_0xa913('0x32')]);_0x381bd9[_0xa913('0x34')]=_[_0xa913('0x35')](_0x25f4ae[_0xa913('0x31')],qs[_0xa913('0x36')](_0x50b9ca['query'][_0xa913('0x36')]));_0x381bd9[_0xa913('0x34')]=_0x381bd9['attributes']['length']?_0x381bd9[_0xa913('0x34')]:_0x25f4ae[_0xa913('0x31')];_0x381bd9[_0xa913('0x50')]=qs['sort'](_0x50b9ca[_0xa913('0x32')][_0xa913('0x3a')]);_0x381bd9['where']=qs['filters'](_[_0xa913('0x4d')](_0x50b9ca[_0xa913('0x32')],_0x25f4ae[_0xa913('0x3c')]));if(_0x50b9ca[_0xa913('0x32')][_0xa913('0x40')]){_0x381bd9['where']=_[_0xa913('0x3d')](_0x381bd9[_0xa913('0x3b')],{'$or':_['map'](_0x381bd9[_0xa913('0x34')],function(_0xcf7c2f){var _0x58d4f9={};_0x58d4f9[_0xcf7c2f]={'$like':'%'+_0x50b9ca[_0xa913('0x32')]['filter']+'%'};return _0x58d4f9;})});}_0x381bd9=_[_0xa913('0x3d')]({},_0x381bd9,_0x50b9ca[_0xa913('0x41')]);return _0x2c7723[_0xa913('0x51')](_0x381bd9);}})[_0xa913('0x27')](function(_0x3bdbb2){if(_0x3bdbb2){_0x43a31e=_0x3bdbb2[_0xa913('0x37')];if(!_0x50b9ca[_0xa913('0x32')]['hasOwnProperty'](_0xa913('0x39'))){_0x381bd9[_0xa913('0x1f')]=qs[_0xa913('0x1f')](_0x50b9ca['query'][_0xa913('0x1f')]);_0x381bd9[_0xa913('0x1d')]=qs[_0xa913('0x1d')](_0x50b9ca['query']['offset']);}return _0x2c7723[_0xa913('0x51')](_0x381bd9);}})[_0xa913('0x27')](function(_0x4361df){if(_0x4361df){return _0x4361df?{'count':_0x43a31e,'rows':_0x4361df}:null;}})[_0xa913('0x27')](respondWithResult(_0x4e7010,null))[_0xa913('0x46')](handleError(_0x4e7010,null));};
\ No newline at end of file
+var _0x8466=['getDescriptions','eml-format','rimraf','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','name','index','map','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','SalesforceConfiguration','findAll','rows','catch','show','rawAttributes','includeAll','include','find','create','body','update','params','getFields','findOne','getSubjects','SalesforceField'];(function(_0x27c0a8,_0x5e2c33){var _0x260cc6=function(_0x3d93df){while(--_0x3d93df){_0x27c0a8['push'](_0x27c0a8['shift']());}};_0x260cc6(++_0x5e2c33);}(_0x8466,0x139));var _0x6846=function(_0xf86e81,_0x3089d3){_0xf86e81=_0xf86e81-0x0;var _0x477be7=_0x8466[_0xf86e81];return _0x477be7;};'use strict';var emlformat=require(_0x6846('0x0'));var rimraf=require(_0x6846('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6846('0x2'));var moment=require('moment');var BPromise=require(_0x6846('0x3'));var Mustache=require(_0x6846('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6846('0x5'));var ejs=require(_0x6846('0x6'));var fs=require('fs');var fs_extra=require(_0x6846('0x7'));var _=require(_0x6846('0x8'));var squel=require(_0x6846('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6846('0xa'));var toCsv=require(_0x6846('0x5'));var querystring=require(_0x6846('0xb'));var Papa=require(_0x6846('0xc'));var Redis=require(_0x6846('0xd'));var authService=require(_0x6846('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6846('0xf'));var hardwareService=require(_0x6846('0x10'));var logger=require(_0x6846('0x11'))(_0x6846('0x12'));var utils=require(_0x6846('0x13'));var config=require(_0x6846('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6846('0x15'))['db'];function respondWithStatusCode(_0x2d46d6,_0x5db0c2){_0x5db0c2=_0x5db0c2||0xcc;return function(_0x46d013){if(_0x46d013){return _0x2d46d6[_0x6846('0x16')](_0x5db0c2);}return _0x2d46d6[_0x6846('0x17')](_0x5db0c2)[_0x6846('0x18')]();};}function respondWithResult(_0x5e972a,_0x5617e6){_0x5617e6=_0x5617e6||0xc8;return function(_0x16dcad){if(_0x16dcad){return _0x5e972a[_0x6846('0x17')](_0x5617e6)[_0x6846('0x19')](_0x16dcad);}};}function respondWithFilteredResult(_0x2a2c3e,_0x43e4bb){return function(_0x25b8f6){if(_0x25b8f6){var _0x10328e=typeof _0x43e4bb[_0x6846('0x1a')]==='undefined'&&typeof _0x43e4bb['limit']===_0x6846('0x1b');var _0x3ac9cc=_0x25b8f6[_0x6846('0x1c')];var _0xd2c8bb=_0x10328e?0x0:_0x43e4bb[_0x6846('0x1a')];var _0x552ead=_0x10328e?_0x25b8f6[_0x6846('0x1c')]:_0x43e4bb[_0x6846('0x1a')]+_0x43e4bb[_0x6846('0x1d')];var _0x85135e;if(_0x552ead>=_0x3ac9cc){_0x552ead=_0x3ac9cc;_0x85135e=0xc8;}else{_0x85135e=0xce;}_0x2a2c3e[_0x6846('0x17')](_0x85135e);return _0x2a2c3e[_0x6846('0x1e')](_0x6846('0x1f'),_0xd2c8bb+'-'+_0x552ead+'/'+_0x3ac9cc)[_0x6846('0x19')](_0x25b8f6);}return null;};}function patchUpdates(_0x34380e){return function(_0x401f59){try{jsonpatch[_0x6846('0x20')](_0x401f59,_0x34380e,!![]);}catch(_0x57df70){return BPromise[_0x6846('0x21')](_0x57df70);}return _0x401f59[_0x6846('0x22')]();};}function saveUpdates(_0x53fe56,_0x43d7d9){return function(_0x16213f){if(_0x16213f){return _0x16213f['update'](_0x53fe56)[_0x6846('0x23')](function(_0x34ff90){return _0x34ff90;});}return null;};}function removeEntity(_0x5cc4b6,_0x5ec7d1){return function(_0x59bce6){if(_0x59bce6){return _0x59bce6[_0x6846('0x24')]()['then'](function(){_0x5cc4b6['status'](0xcc)[_0x6846('0x18')]();});}};}function handleEntityNotFound(_0x518630,_0x3112ee){return function(_0x907a5){if(!_0x907a5){_0x518630['sendStatus'](0x194);}return _0x907a5;};}function handleError(_0x53527b,_0x29922d){_0x29922d=_0x29922d||0x1f4;return function(_0x4dc001){logger[_0x6846('0x25')](_0x4dc001['stack']);if(_0x4dc001[_0x6846('0x26')]){delete _0x4dc001[_0x6846('0x26')];}_0x53527b['status'](_0x29922d)['send'](_0x4dc001);};}exports[_0x6846('0x27')]=function(_0x2aee50,_0x4de6cf){var _0x4594f1={},_0x5660b2={},_0x491fdb={'count':0x0,'rows':[]};var _0x19955f=_[_0x6846('0x28')](db['SalesforceConfiguration']['rawAttributes'],function(_0x32fae5){return{'name':_0x32fae5['fieldName'],'type':_0x32fae5[_0x6846('0x29')]['key']};});_0x5660b2[_0x6846('0x2a')]=_[_0x6846('0x28')](_0x19955f,'name');_0x5660b2[_0x6846('0x2b')]=_[_0x6846('0x2c')](_0x2aee50[_0x6846('0x2b')]);_0x5660b2[_0x6846('0x2d')]=_['intersection'](_0x5660b2[_0x6846('0x2a')],_0x5660b2[_0x6846('0x2b')]);_0x4594f1[_0x6846('0x2e')]=_[_0x6846('0x2f')](_0x5660b2[_0x6846('0x2a')],qs[_0x6846('0x30')](_0x2aee50[_0x6846('0x2b')][_0x6846('0x30')]));_0x4594f1[_0x6846('0x2e')]=_0x4594f1[_0x6846('0x2e')][_0x6846('0x31')]?_0x4594f1[_0x6846('0x2e')]:_0x5660b2[_0x6846('0x2a')];if(!_0x2aee50['query'][_0x6846('0x32')](_0x6846('0x33'))){_0x4594f1['limit']=qs['limit'](_0x2aee50[_0x6846('0x2b')][_0x6846('0x1d')]);_0x4594f1[_0x6846('0x1a')]=qs['offset'](_0x2aee50[_0x6846('0x2b')]['offset']);}_0x4594f1[_0x6846('0x34')]=qs['sort'](_0x2aee50[_0x6846('0x2b')][_0x6846('0x35')]);_0x4594f1['where']=qs[_0x6846('0x2d')](_[_0x6846('0x36')](_0x2aee50[_0x6846('0x2b')],_0x5660b2[_0x6846('0x2d')]),_0x19955f);if(_0x2aee50['query'][_0x6846('0x37')]){_0x4594f1[_0x6846('0x38')]=_['merge'](_0x4594f1[_0x6846('0x38')],{'$or':_['map'](_0x19955f,function(_0x5b0a35){if(_0x5b0a35[_0x6846('0x29')]!==_0x6846('0x39')){var _0x248b59={};_0x248b59[_0x5b0a35[_0x6846('0x26')]]={'$like':'%'+_0x2aee50[_0x6846('0x2b')][_0x6846('0x37')]+'%'};return _0x248b59;}})});}_0x4594f1=_[_0x6846('0x3a')]({},_0x4594f1,_0x2aee50[_0x6846('0x3b')]);var _0x5bf403={'where':_0x4594f1['where']};return db[_0x6846('0x3c')]['count'](_0x5bf403)[_0x6846('0x23')](function(_0x451019){_0x491fdb[_0x6846('0x1c')]=_0x451019;if(_0x2aee50[_0x6846('0x2b')]['includeAll']){_0x4594f1['include']=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x6846('0x3d')](_0x4594f1);})[_0x6846('0x23')](function(_0x183342){_0x491fdb[_0x6846('0x3e')]=_0x183342;return _0x491fdb;})[_0x6846('0x23')](respondWithFilteredResult(_0x4de6cf,_0x4594f1))[_0x6846('0x3f')](handleError(_0x4de6cf,null));};exports[_0x6846('0x40')]=function(_0x18bf90,_0xbd91bf){var _0xb419a5={'raw':![],'where':{'id':_0x18bf90['params']['id']}},_0x3a5b3f={};_0x3a5b3f['model']=_[_0x6846('0x2c')](db[_0x6846('0x3c')][_0x6846('0x41')]);_0x3a5b3f['query']=_['keys'](_0x18bf90[_0x6846('0x2b')]);_0x3a5b3f[_0x6846('0x2d')]=_[_0x6846('0x2f')](_0x3a5b3f[_0x6846('0x2a')],_0x3a5b3f[_0x6846('0x2b')]);_0xb419a5[_0x6846('0x2e')]=_[_0x6846('0x2f')](_0x3a5b3f['model'],qs['fields'](_0x18bf90[_0x6846('0x2b')]['fields']));_0xb419a5[_0x6846('0x2e')]=_0xb419a5['attributes'][_0x6846('0x31')]?_0xb419a5[_0x6846('0x2e')]:_0x3a5b3f[_0x6846('0x2a')];if(_0x18bf90[_0x6846('0x2b')][_0x6846('0x42')]){_0xb419a5[_0x6846('0x43')]=[{'all':!![]}];}_0xb419a5=_['merge']({},_0xb419a5,_0x18bf90[_0x6846('0x3b')]);return db[_0x6846('0x3c')][_0x6846('0x44')](_0xb419a5)[_0x6846('0x23')](handleEntityNotFound(_0xbd91bf,null))[_0x6846('0x23')](respondWithResult(_0xbd91bf,null))['catch'](handleError(_0xbd91bf,null));};exports[_0x6846('0x45')]=function(_0x538f3b,_0x49b5ae){return db['SalesforceConfiguration'][_0x6846('0x45')](_0x538f3b[_0x6846('0x46')],{})[_0x6846('0x23')](respondWithResult(_0x49b5ae,0xc9))[_0x6846('0x3f')](handleError(_0x49b5ae,null));};exports[_0x6846('0x47')]=function(_0x298115,_0x57cb80){if(_0x298115[_0x6846('0x46')]['id']){delete _0x298115['body']['id'];}return db['SalesforceConfiguration'][_0x6846('0x44')]({'where':{'id':_0x298115[_0x6846('0x48')]['id']}})[_0x6846('0x23')](handleEntityNotFound(_0x57cb80,null))[_0x6846('0x23')](saveUpdates(_0x298115[_0x6846('0x46')],null))[_0x6846('0x23')](respondWithResult(_0x57cb80,null))[_0x6846('0x3f')](handleError(_0x57cb80,null));};exports['destroy']=function(_0x92777f,_0x10cf6d){return db[_0x6846('0x3c')][_0x6846('0x44')]({'where':{'id':_0x92777f[_0x6846('0x48')]['id']}})['then'](handleEntityNotFound(_0x10cf6d,null))[_0x6846('0x23')](removeEntity(_0x10cf6d,null))[_0x6846('0x3f')](handleError(_0x10cf6d,null));};exports[_0x6846('0x49')]=function(_0x4b8b5b,_0x760ab2,_0x50d59e){var _0x28753e={};var _0x14fd98={};var _0x398975;var _0x3d775c;return db[_0x6846('0x3c')][_0x6846('0x4a')]({'where':{'id':_0x4b8b5b['params']['id']}})[_0x6846('0x23')](handleEntityNotFound(_0x760ab2,null))[_0x6846('0x23')](function(_0x3de01c){if(_0x3de01c){_0x398975=_0x3de01c;_0x14fd98[_0x6846('0x2a')]=_[_0x6846('0x2c')](db['SalesforceField'][_0x6846('0x41')]);_0x14fd98[_0x6846('0x2b')]=_['keys'](_0x4b8b5b[_0x6846('0x2b')]);_0x14fd98[_0x6846('0x2d')]=_[_0x6846('0x2f')](_0x14fd98[_0x6846('0x2a')],_0x14fd98['query']);_0x28753e['attributes']=_[_0x6846('0x2f')](_0x14fd98[_0x6846('0x2a')],qs[_0x6846('0x30')](_0x4b8b5b[_0x6846('0x2b')][_0x6846('0x30')]));_0x28753e[_0x6846('0x2e')]=_0x28753e['attributes'][_0x6846('0x31')]?_0x28753e['attributes']:_0x14fd98['model'];_0x28753e[_0x6846('0x34')]=qs[_0x6846('0x35')](_0x4b8b5b[_0x6846('0x2b')][_0x6846('0x35')]);_0x28753e['where']=qs[_0x6846('0x2d')](_[_0x6846('0x36')](_0x4b8b5b[_0x6846('0x2b')],_0x14fd98[_0x6846('0x2d')]));if(_0x4b8b5b['query'][_0x6846('0x37')]){_0x28753e['where']=_[_0x6846('0x3a')](_0x28753e[_0x6846('0x38')],{'$or':_['map'](_0x28753e[_0x6846('0x2e')],function(_0x4a692a){var _0x3ebee0={};_0x3ebee0[_0x4a692a]={'$like':'%'+_0x4b8b5b[_0x6846('0x2b')]['filter']+'%'};return _0x3ebee0;})});}_0x28753e=_[_0x6846('0x3a')]({},_0x28753e,_0x4b8b5b['options']);return _0x398975[_0x6846('0x49')](_0x28753e);}})['then'](function(_0x34725e){if(_0x34725e){_0x3d775c=_0x34725e[_0x6846('0x31')];if(!_0x4b8b5b[_0x6846('0x2b')][_0x6846('0x32')](_0x6846('0x33'))){_0x28753e['limit']=qs['limit'](_0x4b8b5b['query'][_0x6846('0x1d')]);_0x28753e['offset']=qs[_0x6846('0x1a')](_0x4b8b5b[_0x6846('0x2b')][_0x6846('0x1a')]);}return _0x398975['getFields'](_0x28753e);}})[_0x6846('0x23')](function(_0x5e9c3e){if(_0x5e9c3e){return _0x5e9c3e?{'count':_0x3d775c,'rows':_0x5e9c3e}:null;}})[_0x6846('0x23')](respondWithResult(_0x760ab2,null))[_0x6846('0x3f')](handleError(_0x760ab2,null));};exports[_0x6846('0x4b')]=function(_0xc31fa3,_0xbf34dc,_0x386f65){var _0x2d7167={};var _0x36f22a={};var _0x41f637;var _0x4ddf6d;return db[_0x6846('0x3c')][_0x6846('0x4a')]({'where':{'id':_0xc31fa3[_0x6846('0x48')]['id']}})[_0x6846('0x23')](handleEntityNotFound(_0xbf34dc,null))[_0x6846('0x23')](function(_0x177f19){if(_0x177f19){_0x41f637=_0x177f19;_0x36f22a[_0x6846('0x2a')]=_[_0x6846('0x2c')](db[_0x6846('0x4c')][_0x6846('0x41')]);_0x36f22a['query']=_[_0x6846('0x2c')](_0xc31fa3[_0x6846('0x2b')]);_0x36f22a['filters']=_[_0x6846('0x2f')](_0x36f22a[_0x6846('0x2a')],_0x36f22a[_0x6846('0x2b')]);_0x2d7167[_0x6846('0x2e')]=_[_0x6846('0x2f')](_0x36f22a[_0x6846('0x2a')],qs[_0x6846('0x30')](_0xc31fa3[_0x6846('0x2b')][_0x6846('0x30')]));_0x2d7167[_0x6846('0x2e')]=_0x2d7167[_0x6846('0x2e')]['length']?_0x2d7167['attributes']:_0x36f22a[_0x6846('0x2a')];_0x2d7167[_0x6846('0x34')]=qs['sort'](_0xc31fa3['query'][_0x6846('0x35')]);_0x2d7167[_0x6846('0x38')]=qs['filters'](_[_0x6846('0x36')](_0xc31fa3[_0x6846('0x2b')],_0x36f22a[_0x6846('0x2d')]));if(_0xc31fa3[_0x6846('0x2b')][_0x6846('0x37')]){_0x2d7167['where']=_['merge'](_0x2d7167['where'],{'$or':_[_0x6846('0x28')](_0x2d7167[_0x6846('0x2e')],function(_0x1ade30){var _0x12897c={};_0x12897c[_0x1ade30]={'$like':'%'+_0xc31fa3[_0x6846('0x2b')][_0x6846('0x37')]+'%'};return _0x12897c;})});}_0x2d7167=_[_0x6846('0x3a')]({},_0x2d7167,_0xc31fa3[_0x6846('0x3b')]);return _0x41f637[_0x6846('0x4b')](_0x2d7167);}})[_0x6846('0x23')](function(_0x19ed4d){if(_0x19ed4d){_0x4ddf6d=_0x19ed4d[_0x6846('0x31')];if(!_0xc31fa3[_0x6846('0x2b')]['hasOwnProperty']('nolimit')){_0x2d7167[_0x6846('0x1d')]=qs[_0x6846('0x1d')](_0xc31fa3[_0x6846('0x2b')][_0x6846('0x1d')]);_0x2d7167[_0x6846('0x1a')]=qs[_0x6846('0x1a')](_0xc31fa3[_0x6846('0x2b')][_0x6846('0x1a')]);}return _0x41f637[_0x6846('0x4b')](_0x2d7167);}})[_0x6846('0x23')](function(_0x59bbe4){if(_0x59bbe4){return _0x59bbe4?{'count':_0x4ddf6d,'rows':_0x59bbe4}:null;}})[_0x6846('0x23')](respondWithResult(_0xbf34dc,null))[_0x6846('0x3f')](handleError(_0xbf34dc,null));};exports[_0x6846('0x4d')]=function(_0x33785d,_0x31b342,_0x2b9ead){var _0x3b056d={};var _0x3b1cbd={};var _0x224e85;var _0x23a890;return db[_0x6846('0x3c')][_0x6846('0x4a')]({'where':{'id':_0x33785d[_0x6846('0x48')]['id']}})[_0x6846('0x23')](handleEntityNotFound(_0x31b342,null))[_0x6846('0x23')](function(_0x5b62a3){if(_0x5b62a3){_0x224e85=_0x5b62a3;_0x3b1cbd[_0x6846('0x2a')]=_['keys'](db[_0x6846('0x4c')][_0x6846('0x41')]);_0x3b1cbd[_0x6846('0x2b')]=_[_0x6846('0x2c')](_0x33785d['query']);_0x3b1cbd[_0x6846('0x2d')]=_[_0x6846('0x2f')](_0x3b1cbd[_0x6846('0x2a')],_0x3b1cbd[_0x6846('0x2b')]);_0x3b056d['attributes']=_[_0x6846('0x2f')](_0x3b1cbd['model'],qs['fields'](_0x33785d[_0x6846('0x2b')]['fields']));_0x3b056d[_0x6846('0x2e')]=_0x3b056d[_0x6846('0x2e')][_0x6846('0x31')]?_0x3b056d[_0x6846('0x2e')]:_0x3b1cbd['model'];_0x3b056d[_0x6846('0x34')]=qs[_0x6846('0x35')](_0x33785d['query'][_0x6846('0x35')]);_0x3b056d[_0x6846('0x38')]=qs[_0x6846('0x2d')](_[_0x6846('0x36')](_0x33785d['query'],_0x3b1cbd[_0x6846('0x2d')]));if(_0x33785d[_0x6846('0x2b')][_0x6846('0x37')]){_0x3b056d[_0x6846('0x38')]=_[_0x6846('0x3a')](_0x3b056d[_0x6846('0x38')],{'$or':_[_0x6846('0x28')](_0x3b056d[_0x6846('0x2e')],function(_0x11b1b5){var _0x3c7029={};_0x3c7029[_0x11b1b5]={'$like':'%'+_0x33785d[_0x6846('0x2b')][_0x6846('0x37')]+'%'};return _0x3c7029;})});}_0x3b056d=_[_0x6846('0x3a')]({},_0x3b056d,_0x33785d[_0x6846('0x3b')]);return _0x224e85[_0x6846('0x4d')](_0x3b056d);}})[_0x6846('0x23')](function(_0x32fadd){if(_0x32fadd){_0x23a890=_0x32fadd[_0x6846('0x31')];if(!_0x33785d['query'][_0x6846('0x32')]('nolimit')){_0x3b056d[_0x6846('0x1d')]=qs[_0x6846('0x1d')](_0x33785d[_0x6846('0x2b')][_0x6846('0x1d')]);_0x3b056d['offset']=qs[_0x6846('0x1a')](_0x33785d[_0x6846('0x2b')][_0x6846('0x1a')]);}return _0x224e85[_0x6846('0x4d')](_0x3b056d);}})[_0x6846('0x23')](function(_0x4fffd7){if(_0x4fffd7){return _0x4fffd7?{'count':_0x23a890,'rows':_0x4fffd7}:null;}})[_0x6846('0x23')](respondWithResult(_0x31b342,null))[_0x6846('0x3f')](handleError(_0x31b342,null));};
\ No newline at end of file
index dc9d033..aab528b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c32=['request-promise','path','rimraf','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x451468,_0x2dc0b6){var _0x23cde6=function(_0x5ef643){while(--_0x5ef643){_0x451468['push'](_0x451468['shift']());}};_0x23cde6(++_0x2dc0b6);}(_0x4c32,0x1ab));var _0x24c3=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0x4c32[_0x45fc6a];return _0x14bcfd;};'use strict';var _=require(_0x24c3('0x0'));var util=require(_0x24c3('0x1'));var logger=require(_0x24c3('0x2'))(_0x24c3('0x3'));var moment=require(_0x24c3('0x4'));var BPromise=require('bluebird');var rp=require(_0x24c3('0x5'));var fs=require('fs');var path=require(_0x24c3('0x6'));var rimraf=require(_0x24c3('0x7'));var config=require('../../config/environment');var attributes=require('./intSalesforceConfiguration.attributes');module[_0x24c3('0x8')]=function(_0x35011c,_0x2de5be){return _0x35011c[_0x24c3('0x9')](_0x24c3('0xa'),attributes,{'tableName':_0x24c3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd3e1=['rimraf','../../config/environment','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd3e1,0x10a));var _0x1d3e=function(_0x457ee0,_0x3e7bb2){_0x457ee0=_0x457ee0-0x0;var _0x3d415a=_0xd3e1[_0x457ee0];return _0x3d415a;};'use strict';var _=require(_0x1d3e('0x0'));var util=require(_0x1d3e('0x1'));var logger=require(_0x1d3e('0x2'))('api');var moment=require(_0x1d3e('0x3'));var BPromise=require(_0x1d3e('0x4'));var rp=require(_0x1d3e('0x5'));var fs=require('fs');var path=require(_0x1d3e('0x6'));var rimraf=require(_0x1d3e('0x7'));var config=require(_0x1d3e('0x8'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0x1d3e('0x9')]=function(_0x561626,_0x478cbf){return _0x561626[_0x1d3e('0xa')](_0x1d3e('0xb'),attributes,{'tableName':_0x1d3e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd9e112..3dc18de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b8e=['error','code','SalesforceConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4b8e,0x90));var _0xe4b8=function(_0x500c0,_0xdb6a03){_0x500c0=_0x500c0-0x0;var _0xdd146f=_0x4b8e[_0x500c0];return _0xdd146f;};'use strict';var _=require(_0xe4b8('0x0'));var util=require(_0xe4b8('0x1'));var moment=require(_0xe4b8('0x2'));var BPromise=require(_0xe4b8('0x3'));var rs=require(_0xe4b8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4b8('0x5'))['db'];var utils=require(_0xe4b8('0x6'));var logger=require(_0xe4b8('0x7'))(_0xe4b8('0x8'));var config=require(_0xe4b8('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xd71e98,_0xcf812b,_0x342b7b){return new BPromise(function(_0x3e955a,_0x212327){return client[_0xe4b8('0xa')](_0xd71e98,_0x342b7b)[_0xe4b8('0xb')](function(_0x356490){logger[_0xe4b8('0xc')]('SalesforceConfiguration,\x20%s,\x20%s',_0xcf812b,_0xe4b8('0xd'));logger[_0xe4b8('0xe')](_0xe4b8('0xf'),_0xcf812b,'request\x20sent',JSON[_0xe4b8('0x10')](_0x356490));if(_0x356490[_0xe4b8('0x11')]){if(_0x356490['error'][_0xe4b8('0x12')]===0x1f4){logger[_0xe4b8('0x11')](_0xe4b8('0x13'),_0xcf812b,_0x356490[_0xe4b8('0x11')][_0xe4b8('0x14')]);return _0x212327(_0x356490['error'][_0xe4b8('0x14')]);}logger['error'](_0xe4b8('0x13'),_0xcf812b,_0x356490[_0xe4b8('0x11')]['message']);return _0x3e955a(_0x356490[_0xe4b8('0x11')][_0xe4b8('0x14')]);}else{logger['info'](_0xe4b8('0x13'),_0xcf812b,_0xe4b8('0xd'));_0x3e955a(_0x356490[_0xe4b8('0x15')][_0xe4b8('0x14')]);}})[_0xe4b8('0x16')](function(_0x2b3f27){logger[_0xe4b8('0x11')](_0xe4b8('0x13'),_0xcf812b,_0x2b3f27);_0x212327(_0x2b3f27);});});}
\ No newline at end of file
+var _0x8ef5=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3d9caa,_0x229fad){var _0x42db79=function(_0x1379a3){while(--_0x1379a3){_0x3d9caa['push'](_0x3d9caa['shift']());}};_0x42db79(++_0x229fad);}(_0x8ef5,0xe6));var _0x58ef=function(_0x1f2cd3,_0x275010){_0x1f2cd3=_0x1f2cd3-0x0;var _0x165869=_0x8ef5[_0x1f2cd3];return _0x165869;};'use strict';var _=require(_0x58ef('0x0'));var util=require(_0x58ef('0x1'));var moment=require(_0x58ef('0x2'));var BPromise=require(_0x58ef('0x3'));var rs=require(_0x58ef('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x58ef('0x5'))['db'];var utils=require(_0x58ef('0x6'));var logger=require(_0x58ef('0x7'))(_0x58ef('0x8'));var config=require(_0x58ef('0x9'));var jayson=require(_0x58ef('0xa'));var client=jayson[_0x58ef('0xb')][_0x58ef('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x27969a,_0xa68125,_0x6079e3){return new BPromise(function(_0x289157,_0x13f2a8){return client[_0x58ef('0xd')](_0x27969a,_0x6079e3)[_0x58ef('0xe')](function(_0x55072c){logger[_0x58ef('0xf')](_0x58ef('0x10'),_0xa68125,_0x58ef('0x11'));logger['debug'](_0x58ef('0x12'),_0xa68125,_0x58ef('0x11'),JSON[_0x58ef('0x13')](_0x55072c));if(_0x55072c[_0x58ef('0x14')]){if(_0x55072c[_0x58ef('0x14')][_0x58ef('0x15')]===0x1f4){logger[_0x58ef('0x14')](_0x58ef('0x10'),_0xa68125,_0x55072c[_0x58ef('0x14')]['message']);return _0x13f2a8(_0x55072c[_0x58ef('0x14')]['message']);}logger[_0x58ef('0x14')](_0x58ef('0x10'),_0xa68125,_0x55072c[_0x58ef('0x14')]['message']);return _0x289157(_0x55072c[_0x58ef('0x14')][_0x58ef('0x16')]);}else{logger['info'](_0x58ef('0x10'),_0xa68125,'request\x20sent');_0x289157(_0x55072c[_0x58ef('0x17')][_0x58ef('0x16')]);}})[_0x58ef('0x18')](function(_0x3ff643){logger[_0x58ef('0x14')](_0x58ef('0x10'),_0xa68125,_0x3ff643);_0x13f2a8(_0x3ff643);});});}
\ No newline at end of file
index 152f4c5..7b06aa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70be=['show','post','create','/:id','isAuthenticated','destroy','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','index'];(function(_0x332a78,_0x4d38b3){var _0x537ac5=function(_0x1a7526){while(--_0x1a7526){_0x332a78['push'](_0x332a78['shift']());}};_0x537ac5(++_0x4d38b3);}(_0x70be,0x110));var _0xe70b=function(_0xe4b1fc,_0x15dc8b){_0xe4b1fc=_0xe4b1fc-0x0;var _0x57de2d=_0x70be[_0xe4b1fc];return _0x57de2d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe70b('0x0'));var timeout=require(_0xe70b('0x1'));var express=require('express');var router=express[_0xe70b('0x2')]();var fs_extra=require(_0xe70b('0x3'));var auth=require(_0xe70b('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe70b('0x5'));var controller=require('./intSalesforceField.controller');router[_0xe70b('0x6')]('/',auth['isAuthenticated'](),controller[_0xe70b('0x7')]);router[_0xe70b('0x6')]('/:id',auth['isAuthenticated'](),controller[_0xe70b('0x8')]);router[_0xe70b('0x9')]('/',auth['isAuthenticated'](),controller[_0xe70b('0xa')]);router['put'](_0xe70b('0xb'),auth[_0xe70b('0xc')](),controller['update']);router['delete']('/:id',auth[_0xe70b('0xc')](),controller[_0xe70b('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x71a1=['../../config/environment','./intSalesforceField.controller','isAuthenticated','index','get','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x71a1,0x138));var _0x171a=function(_0x2a532c,_0x3d31ad){_0x2a532c=_0x2a532c-0x0;var _0x4e1a25=_0x71a1[_0x2a532c];return _0x4e1a25;};'use strict';var multer=require(_0x171a('0x0'));var util=require('util');var path=require(_0x171a('0x1'));var timeout=require(_0x171a('0x2'));var express=require(_0x171a('0x3'));var router=express[_0x171a('0x4')]();var fs_extra=require(_0x171a('0x5'));var auth=require(_0x171a('0x6'));var interaction=require(_0x171a('0x7'));var config=require(_0x171a('0x8'));var controller=require(_0x171a('0x9'));router['get']('/',auth[_0x171a('0xa')](),controller[_0x171a('0xb')]);router[_0x171a('0xc')]('/:id',auth[_0x171a('0xa')](),controller['show']);router['post']('/',auth[_0x171a('0xa')](),controller[_0x171a('0xd')]);router[_0x171a('0xe')](_0x171a('0xf'),auth[_0x171a('0xa')](),controller[_0x171a('0x10')]);router[_0x171a('0x11')](_0x171a('0xf'),auth['isAuthenticated'](),controller[_0x171a('0x12')]);module[_0x171a('0x13')]=router;
\ No newline at end of file
index bc5a2cd..c5ea76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4502=['sequelize','exports','string','keyValue','picklist','STRING','ENUM','variable','customVariable'];(function(_0x1206bd,_0x8409bd){var _0x18e1ac=function(_0x2e2019){while(--_0x2e2019){_0x1206bd['push'](_0x1206bd['shift']());}};_0x18e1ac(++_0x8409bd);}(_0x4502,0x156));var _0x2450=function(_0x434c7b,_0x5b4c44){_0x434c7b=_0x434c7b-0x0;var _0x571c20=_0x4502[_0x434c7b];return _0x571c20;};'use strict';var Sequelize=require(_0x2450('0x0'));module[_0x2450('0x1')]={'type':{'type':Sequelize['ENUM'](_0x2450('0x2'),'variable','customVariable',_0x2450('0x3'),_0x2450('0x4')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x2450('0x5')]},'keyType':{'type':Sequelize[_0x2450('0x6')](_0x2450('0x2'),_0x2450('0x7'),_0x2450('0x8'))},'keyContent':{'type':Sequelize[_0x2450('0x5')]},'idField':{'type':Sequelize[_0x2450('0x5')]},'variableName':{'type':Sequelize[_0x2450('0x5')]}};
\ No newline at end of file
+var _0x64bb=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0x64bb,0x98));var _0xb64b=function(_0x203730,_0x14851f){_0x203730=_0x203730-0x0;var _0x3100f7=_0x64bb[_0x203730];return _0x3100f7;};'use strict';var Sequelize=require(_0xb64b('0x0'));module[_0xb64b('0x1')]={'type':{'type':Sequelize[_0xb64b('0x2')](_0xb64b('0x3'),_0xb64b('0x4'),_0xb64b('0x5'),_0xb64b('0x6'),_0xb64b('0x7')),'defaultValue':_0xb64b('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xb64b('0x2')]('string',_0xb64b('0x4'),_0xb64b('0x5'))},'keyContent':{'type':Sequelize[_0xb64b('0x8')]},'idField':{'type':Sequelize[_0xb64b('0x8')]},'variableName':{'type':Sequelize[_0xb64b('0x8')]}};
\ No newline at end of file
index fbce3e1..16de24e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb564=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','error','name','send','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','show','params','fields','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x27bbad,_0x558ef0){var _0x188c0b=function(_0x475b50){while(--_0x475b50){_0x27bbad['push'](_0x27bbad['shift']());}};_0x188c0b(++_0x558ef0);}(_0xb564,0x1b8));var _0x4b56=function(_0x59dfed,_0x3f525b){_0x59dfed=_0x59dfed-0x0;var _0x576c7e=_0xb564[_0x59dfed];return _0x576c7e;};'use strict';var emlformat=require(_0x4b56('0x0'));var rimraf=require(_0x4b56('0x1'));var zipdir=require(_0x4b56('0x2'));var jsonpatch=require(_0x4b56('0x3'));var rp=require(_0x4b56('0x4'));var moment=require(_0x4b56('0x5'));var BPromise=require(_0x4b56('0x6'));var Mustache=require(_0x4b56('0x7'));var util=require(_0x4b56('0x8'));var path=require(_0x4b56('0x9'));var sox=require(_0x4b56('0xa'));var csv=require(_0x4b56('0xb'));var ejs=require(_0x4b56('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4b56('0xd'));var squel=require(_0x4b56('0xe'));var crypto=require(_0x4b56('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4b56('0xb'));var querystring=require(_0x4b56('0x10'));var Papa=require(_0x4b56('0x11'));var Redis=require(_0x4b56('0x12'));var authService=require(_0x4b56('0x13'));var qs=require(_0x4b56('0x14'));var as=require(_0x4b56('0x15'));var hardwareService=require(_0x4b56('0x16'));var logger=require(_0x4b56('0x17'))('api');var utils=require(_0x4b56('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x4b56('0x19'));var db=require(_0x4b56('0x1a'))['db'];function respondWithStatusCode(_0x4a5194,_0x3373a1){_0x3373a1=_0x3373a1||0xcc;return function(_0x3bd044){if(_0x3bd044){return _0x4a5194[_0x4b56('0x1b')](_0x3373a1);}return _0x4a5194[_0x4b56('0x1c')](_0x3373a1)[_0x4b56('0x1d')]();};}function respondWithResult(_0x572aec,_0x5f2cda){_0x5f2cda=_0x5f2cda||0xc8;return function(_0x37a71e){if(_0x37a71e){return _0x572aec[_0x4b56('0x1c')](_0x5f2cda)[_0x4b56('0x1e')](_0x37a71e);}};}function respondWithFilteredResult(_0x13057d,_0x4aed50){return function(_0x179bb2){if(_0x179bb2){var _0x5b3db3=typeof _0x4aed50['offset']==='undefined'&&typeof _0x4aed50[_0x4b56('0x1f')]===_0x4b56('0x20');var _0x7b48b=_0x179bb2[_0x4b56('0x21')];var _0x12bad0=_0x5b3db3?0x0:_0x4aed50[_0x4b56('0x22')];var _0x16b2af=_0x5b3db3?_0x179bb2['count']:_0x4aed50[_0x4b56('0x22')]+_0x4aed50['limit'];var _0x5e79a6;if(_0x16b2af>=_0x7b48b){_0x16b2af=_0x7b48b;_0x5e79a6=0xc8;}else{_0x5e79a6=0xce;}_0x13057d[_0x4b56('0x1c')](_0x5e79a6);return _0x13057d[_0x4b56('0x23')](_0x4b56('0x24'),_0x12bad0+'-'+_0x16b2af+'/'+_0x7b48b)[_0x4b56('0x1e')](_0x179bb2);}return null;};}function patchUpdates(_0x1eb0bf){return function(_0x67d74c){try{jsonpatch[_0x4b56('0x25')](_0x67d74c,_0x1eb0bf,!![]);}catch(_0x2c0931){return BPromise[_0x4b56('0x26')](_0x2c0931);}return _0x67d74c[_0x4b56('0x27')]();};}function saveUpdates(_0x555afd,_0x3437e6){return function(_0x4d9100){if(_0x4d9100){return _0x4d9100[_0x4b56('0x28')](_0x555afd)[_0x4b56('0x29')](function(_0x3a43d2){return _0x3a43d2;});}return null;};}function removeEntity(_0x5bd46b,_0x29205e){return function(_0x20a924){if(_0x20a924){return _0x20a924['destroy']()[_0x4b56('0x29')](function(){_0x5bd46b[_0x4b56('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f25a7,_0x4f298c){return function(_0x46f228){if(!_0x46f228){_0x5f25a7[_0x4b56('0x1b')](0x194);}return _0x46f228;};}function handleError(_0x168636,_0x191581){_0x191581=_0x191581||0x1f4;return function(_0x1bb253){logger[_0x4b56('0x2a')](_0x1bb253['stack']);if(_0x1bb253[_0x4b56('0x2b')]){delete _0x1bb253[_0x4b56('0x2b')];}_0x168636[_0x4b56('0x1c')](_0x191581)[_0x4b56('0x2c')](_0x1bb253);};}exports['index']=function(_0x23683b,_0x5ac9b8){var _0x60088={},_0x13a028={},_0x90aaeb={'count':0x0,'rows':[]};var _0x19f38d=_[_0x4b56('0x2d')](db[_0x4b56('0x2e')][_0x4b56('0x2f')],function(_0x46d1db){return{'name':_0x46d1db[_0x4b56('0x30')],'type':_0x46d1db[_0x4b56('0x31')][_0x4b56('0x32')]};});_0x13a028[_0x4b56('0x33')]=_['map'](_0x19f38d,_0x4b56('0x2b'));_0x13a028[_0x4b56('0x34')]=_[_0x4b56('0x35')](_0x23683b[_0x4b56('0x34')]);_0x13a028[_0x4b56('0x36')]=_[_0x4b56('0x37')](_0x13a028[_0x4b56('0x33')],_0x13a028[_0x4b56('0x34')]);_0x60088[_0x4b56('0x38')]=_[_0x4b56('0x37')](_0x13a028[_0x4b56('0x33')],qs['fields'](_0x23683b[_0x4b56('0x34')]['fields']));_0x60088['attributes']=_0x60088[_0x4b56('0x38')][_0x4b56('0x39')]?_0x60088['attributes']:_0x13a028[_0x4b56('0x33')];if(!_0x23683b['query'][_0x4b56('0x3a')](_0x4b56('0x3b'))){_0x60088['limit']=qs[_0x4b56('0x1f')](_0x23683b[_0x4b56('0x34')][_0x4b56('0x1f')]);_0x60088[_0x4b56('0x22')]=qs['offset'](_0x23683b[_0x4b56('0x34')][_0x4b56('0x22')]);}_0x60088[_0x4b56('0x3c')]=qs[_0x4b56('0x3d')](_0x23683b[_0x4b56('0x34')][_0x4b56('0x3d')]);_0x60088[_0x4b56('0x3e')]=qs[_0x4b56('0x36')](_[_0x4b56('0x3f')](_0x23683b['query'],_0x13a028[_0x4b56('0x36')]),_0x19f38d);if(_0x23683b['query'][_0x4b56('0x40')]){_0x60088[_0x4b56('0x3e')]=_[_0x4b56('0x41')](_0x60088[_0x4b56('0x3e')],{'$or':_['map'](_0x19f38d,function(_0x541127){if(_0x541127[_0x4b56('0x31')]!==_0x4b56('0x42')){var _0x131b21={};_0x131b21[_0x541127[_0x4b56('0x2b')]]={'$like':'%'+_0x23683b['query'][_0x4b56('0x40')]+'%'};return _0x131b21;}})});}_0x60088=_[_0x4b56('0x41')]({},_0x60088,_0x23683b[_0x4b56('0x43')]);var _0xc9419c={'where':_0x60088[_0x4b56('0x3e')]};return db[_0x4b56('0x2e')][_0x4b56('0x21')](_0xc9419c)['then'](function(_0x416a60){_0x90aaeb[_0x4b56('0x21')]=_0x416a60;if(_0x23683b[_0x4b56('0x34')][_0x4b56('0x44')]){_0x60088[_0x4b56('0x45')]=[{'all':!![]}];}return db[_0x4b56('0x2e')]['findAll'](_0x60088);})[_0x4b56('0x29')](function(_0xff118f){_0x90aaeb['rows']=_0xff118f;return _0x90aaeb;})[_0x4b56('0x29')](respondWithFilteredResult(_0x5ac9b8,_0x60088))['catch'](handleError(_0x5ac9b8,null));};exports[_0x4b56('0x46')]=function(_0x125541,_0x37d3fb){var _0x3bfac5={'raw':!![],'where':{'id':_0x125541[_0x4b56('0x47')]['id']}},_0x5e983a={};_0x5e983a['model']=_['keys'](db['SalesforceField'][_0x4b56('0x2f')]);_0x5e983a['query']=_[_0x4b56('0x35')](_0x125541[_0x4b56('0x34')]);_0x5e983a[_0x4b56('0x36')]=_[_0x4b56('0x37')](_0x5e983a[_0x4b56('0x33')],_0x5e983a['query']);_0x3bfac5[_0x4b56('0x38')]=_[_0x4b56('0x37')](_0x5e983a[_0x4b56('0x33')],qs[_0x4b56('0x48')](_0x125541['query']['fields']));_0x3bfac5[_0x4b56('0x38')]=_0x3bfac5[_0x4b56('0x38')][_0x4b56('0x39')]?_0x3bfac5[_0x4b56('0x38')]:_0x5e983a['model'];if(_0x125541['query'][_0x4b56('0x44')]){_0x3bfac5[_0x4b56('0x45')]=[{'all':!![]}];}_0x3bfac5=_[_0x4b56('0x41')]({},_0x3bfac5,_0x125541[_0x4b56('0x43')]);return db[_0x4b56('0x2e')][_0x4b56('0x49')](_0x3bfac5)[_0x4b56('0x29')](handleEntityNotFound(_0x37d3fb,null))[_0x4b56('0x29')](respondWithResult(_0x37d3fb,null))[_0x4b56('0x4a')](handleError(_0x37d3fb,null));};exports[_0x4b56('0x4b')]=function(_0x18f891,_0x503e77){return db[_0x4b56('0x2e')][_0x4b56('0x4b')](_0x18f891[_0x4b56('0x4c')],{})[_0x4b56('0x29')](respondWithResult(_0x503e77,0xc9))[_0x4b56('0x4a')](handleError(_0x503e77,null));};exports[_0x4b56('0x28')]=function(_0x35ea7b,_0xf71fc0){if(_0x35ea7b[_0x4b56('0x4c')]['id']){delete _0x35ea7b[_0x4b56('0x4c')]['id'];}return db['SalesforceField'][_0x4b56('0x49')]({'where':{'id':_0x35ea7b[_0x4b56('0x47')]['id']}})[_0x4b56('0x29')](handleEntityNotFound(_0xf71fc0,null))[_0x4b56('0x29')](saveUpdates(_0x35ea7b[_0x4b56('0x4c')],null))[_0x4b56('0x29')](respondWithResult(_0xf71fc0,null))[_0x4b56('0x4a')](handleError(_0xf71fc0,null));};exports['destroy']=function(_0x21795e,_0x111a35){return db[_0x4b56('0x2e')]['find']({'where':{'id':_0x21795e[_0x4b56('0x47')]['id']}})[_0x4b56('0x29')](handleEntityNotFound(_0x111a35,null))['then'](removeEntity(_0x111a35,null))[_0x4b56('0x4a')](handleError(_0x111a35,null));};
\ No newline at end of file
+var _0xcb62=['update','then','error','stack','name','send','SalesforceField','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','filter','options','findAll','rows','catch','show','params','includeAll','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject'];(function(_0xa2a4d8,_0x437e16){var _0x25fec5=function(_0x4493d7){while(--_0x4493d7){_0xa2a4d8['push'](_0xa2a4d8['shift']());}};_0x25fec5(++_0x437e16);}(_0xcb62,0x131));var _0x2cb6=function(_0x1d0dad,_0x3eb5ae){_0x1d0dad=_0x1d0dad-0x0;var _0x5c4c46=_0xcb62[_0x1d0dad];return _0x5c4c46;};'use strict';var emlformat=require(_0x2cb6('0x0'));var rimraf=require(_0x2cb6('0x1'));var zipdir=require(_0x2cb6('0x2'));var jsonpatch=require(_0x2cb6('0x3'));var rp=require('request-promise');var moment=require(_0x2cb6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2cb6('0x5'));var path=require(_0x2cb6('0x6'));var sox=require(_0x2cb6('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2cb6('0x8'));var _=require(_0x2cb6('0x9'));var squel=require(_0x2cb6('0xa'));var crypto=require(_0x2cb6('0xb'));var jsforce=require(_0x2cb6('0xc'));var deskjs=require(_0x2cb6('0xd'));var toCsv=require(_0x2cb6('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2cb6('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2cb6('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2cb6('0x11'))(_0x2cb6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2cb6('0x13'))['db'];function respondWithStatusCode(_0x56ee87,_0x12c915){_0x12c915=_0x12c915||0xcc;return function(_0x14b697){if(_0x14b697){return _0x56ee87[_0x2cb6('0x14')](_0x12c915);}return _0x56ee87[_0x2cb6('0x15')](_0x12c915)[_0x2cb6('0x16')]();};}function respondWithResult(_0x5139f2,_0x180fab){_0x180fab=_0x180fab||0xc8;return function(_0x4a1c72){if(_0x4a1c72){return _0x5139f2[_0x2cb6('0x15')](_0x180fab)[_0x2cb6('0x17')](_0x4a1c72);}};}function respondWithFilteredResult(_0x2c7312,_0x4c74){return function(_0x50fd47){if(_0x50fd47){var _0x95976a=typeof _0x4c74[_0x2cb6('0x18')]==='undefined'&&typeof _0x4c74[_0x2cb6('0x19')]==='undefined';var _0x209729=_0x50fd47[_0x2cb6('0x1a')];var _0x470ec0=_0x95976a?0x0:_0x4c74[_0x2cb6('0x18')];var _0x2bb315=_0x95976a?_0x50fd47[_0x2cb6('0x1a')]:_0x4c74['offset']+_0x4c74['limit'];var _0x44a5a8;if(_0x2bb315>=_0x209729){_0x2bb315=_0x209729;_0x44a5a8=0xc8;}else{_0x44a5a8=0xce;}_0x2c7312[_0x2cb6('0x15')](_0x44a5a8);return _0x2c7312['set'](_0x2cb6('0x1b'),_0x470ec0+'-'+_0x2bb315+'/'+_0x209729)[_0x2cb6('0x17')](_0x50fd47);}return null;};}function patchUpdates(_0x183ca3){return function(_0xd26942){try{jsonpatch[_0x2cb6('0x1c')](_0xd26942,_0x183ca3,!![]);}catch(_0x37fb50){return BPromise[_0x2cb6('0x1d')](_0x37fb50);}return _0xd26942['save']();};}function saveUpdates(_0x5343b,_0x53ef50){return function(_0x481dcc){if(_0x481dcc){return _0x481dcc[_0x2cb6('0x1e')](_0x5343b)[_0x2cb6('0x1f')](function(_0x29f172){return _0x29f172;});}return null;};}function removeEntity(_0x30a9d4,_0x5d29bd){return function(_0x314beb){if(_0x314beb){return _0x314beb['destroy']()[_0x2cb6('0x1f')](function(){_0x30a9d4[_0x2cb6('0x15')](0xcc)[_0x2cb6('0x16')]();});}};}function handleEntityNotFound(_0x15827a,_0x13c878){return function(_0x44e279){if(!_0x44e279){_0x15827a[_0x2cb6('0x14')](0x194);}return _0x44e279;};}function handleError(_0x64bccb,_0x3339a7){_0x3339a7=_0x3339a7||0x1f4;return function(_0x178b2f){logger[_0x2cb6('0x20')](_0x178b2f[_0x2cb6('0x21')]);if(_0x178b2f[_0x2cb6('0x22')]){delete _0x178b2f[_0x2cb6('0x22')];}_0x64bccb[_0x2cb6('0x15')](_0x3339a7)[_0x2cb6('0x23')](_0x178b2f);};}exports['index']=function(_0x146fd4,_0x56387f){var _0x1bb726={},_0x28298f={},_0x4569d8={'count':0x0,'rows':[]};var _0x52d559=_['map'](db[_0x2cb6('0x24')][_0x2cb6('0x25')],function(_0x2490d6){return{'name':_0x2490d6[_0x2cb6('0x26')],'type':_0x2490d6[_0x2cb6('0x27')][_0x2cb6('0x28')]};});_0x28298f[_0x2cb6('0x29')]=_[_0x2cb6('0x2a')](_0x52d559,_0x2cb6('0x22'));_0x28298f['query']=_[_0x2cb6('0x2b')](_0x146fd4[_0x2cb6('0x2c')]);_0x28298f[_0x2cb6('0x2d')]=_[_0x2cb6('0x2e')](_0x28298f['model'],_0x28298f['query']);_0x1bb726[_0x2cb6('0x2f')]=_['intersection'](_0x28298f[_0x2cb6('0x29')],qs[_0x2cb6('0x30')](_0x146fd4['query'][_0x2cb6('0x30')]));_0x1bb726[_0x2cb6('0x2f')]=_0x1bb726[_0x2cb6('0x2f')][_0x2cb6('0x31')]?_0x1bb726[_0x2cb6('0x2f')]:_0x28298f[_0x2cb6('0x29')];if(!_0x146fd4['query'][_0x2cb6('0x32')]('nolimit')){_0x1bb726[_0x2cb6('0x19')]=qs['limit'](_0x146fd4[_0x2cb6('0x2c')]['limit']);_0x1bb726[_0x2cb6('0x18')]=qs[_0x2cb6('0x18')](_0x146fd4[_0x2cb6('0x2c')]['offset']);}_0x1bb726[_0x2cb6('0x33')]=qs[_0x2cb6('0x34')](_0x146fd4[_0x2cb6('0x2c')]['sort']);_0x1bb726[_0x2cb6('0x35')]=qs[_0x2cb6('0x2d')](_[_0x2cb6('0x36')](_0x146fd4[_0x2cb6('0x2c')],_0x28298f['filters']),_0x52d559);if(_0x146fd4['query']['filter']){_0x1bb726['where']=_[_0x2cb6('0x37')](_0x1bb726['where'],{'$or':_['map'](_0x52d559,function(_0x124268){if(_0x124268[_0x2cb6('0x27')]!=='VIRTUAL'){var _0x13b68a={};_0x13b68a[_0x124268[_0x2cb6('0x22')]]={'$like':'%'+_0x146fd4[_0x2cb6('0x2c')][_0x2cb6('0x38')]+'%'};return _0x13b68a;}})});}_0x1bb726=_[_0x2cb6('0x37')]({},_0x1bb726,_0x146fd4[_0x2cb6('0x39')]);var _0x1d4d77={'where':_0x1bb726[_0x2cb6('0x35')]};return db[_0x2cb6('0x24')][_0x2cb6('0x1a')](_0x1d4d77)[_0x2cb6('0x1f')](function(_0x19c487){_0x4569d8['count']=_0x19c487;if(_0x146fd4[_0x2cb6('0x2c')]['includeAll']){_0x1bb726['include']=[{'all':!![]}];}return db['SalesforceField'][_0x2cb6('0x3a')](_0x1bb726);})[_0x2cb6('0x1f')](function(_0x9e66eb){_0x4569d8[_0x2cb6('0x3b')]=_0x9e66eb;return _0x4569d8;})['then'](respondWithFilteredResult(_0x56387f,_0x1bb726))[_0x2cb6('0x3c')](handleError(_0x56387f,null));};exports[_0x2cb6('0x3d')]=function(_0x25f15c,_0x5cce43){var _0x583478={'raw':!![],'where':{'id':_0x25f15c[_0x2cb6('0x3e')]['id']}},_0x522713={};_0x522713[_0x2cb6('0x29')]=_[_0x2cb6('0x2b')](db[_0x2cb6('0x24')][_0x2cb6('0x25')]);_0x522713['query']=_[_0x2cb6('0x2b')](_0x25f15c[_0x2cb6('0x2c')]);_0x522713[_0x2cb6('0x2d')]=_[_0x2cb6('0x2e')](_0x522713['model'],_0x522713['query']);_0x583478[_0x2cb6('0x2f')]=_['intersection'](_0x522713[_0x2cb6('0x29')],qs['fields'](_0x25f15c['query'][_0x2cb6('0x30')]));_0x583478['attributes']=_0x583478[_0x2cb6('0x2f')][_0x2cb6('0x31')]?_0x583478[_0x2cb6('0x2f')]:_0x522713[_0x2cb6('0x29')];if(_0x25f15c[_0x2cb6('0x2c')][_0x2cb6('0x3f')]){_0x583478['include']=[{'all':!![]}];}_0x583478=_['merge']({},_0x583478,_0x25f15c[_0x2cb6('0x39')]);return db[_0x2cb6('0x24')]['find'](_0x583478)[_0x2cb6('0x1f')](handleEntityNotFound(_0x5cce43,null))['then'](respondWithResult(_0x5cce43,null))[_0x2cb6('0x3c')](handleError(_0x5cce43,null));};exports[_0x2cb6('0x40')]=function(_0x5289a1,_0x5662c7){return db[_0x2cb6('0x24')][_0x2cb6('0x40')](_0x5289a1[_0x2cb6('0x41')],{})['then'](respondWithResult(_0x5662c7,0xc9))[_0x2cb6('0x3c')](handleError(_0x5662c7,null));};exports[_0x2cb6('0x1e')]=function(_0x3d960e,_0x3bc9a9){if(_0x3d960e[_0x2cb6('0x41')]['id']){delete _0x3d960e[_0x2cb6('0x41')]['id'];}return db[_0x2cb6('0x24')]['find']({'where':{'id':_0x3d960e['params']['id']}})['then'](handleEntityNotFound(_0x3bc9a9,null))[_0x2cb6('0x1f')](saveUpdates(_0x3d960e[_0x2cb6('0x41')],null))[_0x2cb6('0x1f')](respondWithResult(_0x3bc9a9,null))['catch'](handleError(_0x3bc9a9,null));};exports['destroy']=function(_0x4477ab,_0x4a719d){return db[_0x2cb6('0x24')][_0x2cb6('0x42')]({'where':{'id':_0x4477ab[_0x2cb6('0x3e')]['id']}})['then'](handleEntityNotFound(_0x4a719d,null))[_0x2cb6('0x1f')](removeEntity(_0x4a719d,null))[_0x2cb6('0x3c')](handleError(_0x4a719d,null));};
\ No newline at end of file
index 55587cf..4da578a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf26=['api','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','salesforce_unique_index','FieldId','lodash','util','../../config/logger'];(function(_0x4bfd95,_0x1c3b3b){var _0x1484cd=function(_0x2c622b){while(--_0x2c622b){_0x4bfd95['push'](_0x4bfd95['shift']());}};_0x1484cd(++_0x1c3b3b);}(_0xbf26,0x165));var _0x6bf2=function(_0x129ed5,_0x4c5b10){_0x129ed5=_0x129ed5-0x0;var _0x46443c=_0xbf26[_0x129ed5];return _0x46443c;};'use strict';var _=require(_0x6bf2('0x0'));var util=require(_0x6bf2('0x1'));var logger=require(_0x6bf2('0x2'))(_0x6bf2('0x3'));var moment=require('moment');var BPromise=require(_0x6bf2('0x4'));var rp=require(_0x6bf2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6bf2('0x6'));var config=require(_0x6bf2('0x7'));var attributes=require(_0x6bf2('0x8'));module[_0x6bf2('0x9')]=function(_0x2a7c71,_0x4e466f){return _0x2a7c71[_0x6bf2('0xa')](_0x6bf2('0xb'),attributes,{'tableName':_0x6bf2('0xc'),'paranoid':![],'indexes':[{'name':_0x6bf2('0xd'),'fields':['idField',_0x6bf2('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5299=['rimraf','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x1aab3d,_0x23f693){var _0x3054dd=function(_0x56cf19){while(--_0x56cf19){_0x1aab3d['push'](_0x1aab3d['shift']());}};_0x3054dd(++_0x23f693);}(_0x5299,0x166));var _0x9529=function(_0x4d9398,_0x5f12a3){_0x4d9398=_0x4d9398-0x0;var _0x33fa24=_0x5299[_0x4d9398];return _0x33fa24;};'use strict';var _=require(_0x9529('0x0'));var util=require('util');var logger=require(_0x9529('0x1'))(_0x9529('0x2'));var moment=require(_0x9529('0x3'));var BPromise=require(_0x9529('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9529('0x5'));var rimraf=require(_0x9529('0x6'));var config=require('../../config/environment');var attributes=require(_0x9529('0x7'));module[_0x9529('0x8')]=function(_0x127d51,_0x35180f){return _0x127d51[_0x9529('0x9')](_0x9529('0xa'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x9529('0xb'),'fields':[_0x9529('0xc'),_0x9529('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f5a7ba6..edcd4dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a09=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','SalesforceField,\x20%s,\x20%s','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x5e9d35,_0x382c91){var _0x3beb2e=function(_0x4242cf){while(--_0x4242cf){_0x5e9d35['push'](_0x5e9d35['shift']());}};_0x3beb2e(++_0x382c91);}(_0x1a09,0x1ca));var _0x91a0=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x1a09[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x91a0('0x0'));var util=require(_0x91a0('0x1'));var moment=require(_0x91a0('0x2'));var BPromise=require(_0x91a0('0x3'));var rs=require(_0x91a0('0x4'));var fs=require('fs');var Redis=require(_0x91a0('0x5'));var db=require(_0x91a0('0x6'))['db'];var utils=require(_0x91a0('0x7'));var logger=require(_0x91a0('0x8'))(_0x91a0('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x91a0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4f1ef5,_0x4437b6,_0x3f7a59){return new BPromise(function(_0x32f929,_0x4257fe){return client[_0x91a0('0xb')](_0x4f1ef5,_0x3f7a59)[_0x91a0('0xc')](function(_0xeeb30){logger[_0x91a0('0xd')](_0x91a0('0xe'),_0x4437b6,'request\x20sent');logger['debug'](_0x91a0('0xf'),_0x4437b6,'request\x20sent',JSON[_0x91a0('0x10')](_0xeeb30));if(_0xeeb30[_0x91a0('0x11')]){if(_0xeeb30['error'][_0x91a0('0x12')]===0x1f4){logger['error']('SalesforceField,\x20%s,\x20%s',_0x4437b6,_0xeeb30[_0x91a0('0x11')][_0x91a0('0x13')]);return _0x4257fe(_0xeeb30['error'][_0x91a0('0x13')]);}logger['error'](_0x91a0('0xe'),_0x4437b6,_0xeeb30['error']['message']);return _0x32f929(_0xeeb30[_0x91a0('0x11')][_0x91a0('0x13')]);}else{logger['info']('SalesforceField,\x20%s,\x20%s',_0x4437b6,'request\x20sent');_0x32f929(_0xeeb30[_0x91a0('0x14')]['message']);}})[_0x91a0('0x15')](function(_0x3e40e8){logger[_0x91a0('0x11')]('SalesforceField,\x20%s,\x20%s',_0x4437b6,_0x3e40e8);_0x4257fe(_0x3e40e8);});});}
\ No newline at end of file
+var _0x326a=['SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x115692,_0x128623){var _0x1eec68=function(_0x11eaa4){while(--_0x11eaa4){_0x115692['push'](_0x115692['shift']());}};_0x1eec68(++_0x128623);}(_0x326a,0x77));var _0xa326=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x326a[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0xa326('0x0'));var util=require(_0xa326('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa326('0x2'));var db=require(_0xa326('0x3'))['db'];var utils=require(_0xa326('0x4'));var logger=require('../../config/logger')(_0xa326('0x5'));var config=require('../../config/environment');var jayson=require(_0xa326('0x6'));var client=jayson[_0xa326('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22b9ce,_0x196f8a,_0x4d0992){return new BPromise(function(_0x431607,_0x49ecc9){return client[_0xa326('0x8')](_0x22b9ce,_0x4d0992)[_0xa326('0x9')](function(_0x9a1280){logger[_0xa326('0xa')](_0xa326('0xb'),_0x196f8a,_0xa326('0xc'));logger[_0xa326('0xd')](_0xa326('0xe'),_0x196f8a,_0xa326('0xc'),JSON[_0xa326('0xf')](_0x9a1280));if(_0x9a1280[_0xa326('0x10')]){if(_0x9a1280['error']['code']===0x1f4){logger[_0xa326('0x10')]('SalesforceField,\x20%s,\x20%s',_0x196f8a,_0x9a1280[_0xa326('0x10')][_0xa326('0x11')]);return _0x49ecc9(_0x9a1280[_0xa326('0x10')][_0xa326('0x11')]);}logger[_0xa326('0x10')]('SalesforceField,\x20%s,\x20%s',_0x196f8a,_0x9a1280[_0xa326('0x10')][_0xa326('0x11')]);return _0x431607(_0x9a1280[_0xa326('0x10')][_0xa326('0x11')]);}else{logger[_0xa326('0xa')](_0xa326('0xb'),_0x196f8a,_0xa326('0xc'));_0x431607(_0x9a1280['result']['message']);}})[_0xa326('0x12')](function(_0x194f31){logger[_0xa326('0x10')]('SalesforceField,\x20%s,\x20%s',_0x196f8a,_0x194f31);_0x49ecc9(_0x194f31);});});}
\ No newline at end of file
index b8b9aeb..c5b0518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d8=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','create','post','/:id/configurations','addConfiguration','delete','destroy','exports','multer','util','path','express'];(function(_0x2beb6c,_0x3ed39a){var _0x78df3e=function(_0x485f1b){while(--_0x485f1b){_0x2beb6c['push'](_0x2beb6c['shift']());}};_0x78df3e(++_0x3ed39a);}(_0x10d8,0xee));var _0x810d=function(_0x550191,_0x16543c){_0x550191=_0x550191-0x0;var _0x49ea61=_0x10d8[_0x550191];return _0x49ea61;};'use strict';var multer=require(_0x810d('0x0'));var util=require(_0x810d('0x1'));var path=require(_0x810d('0x2'));var timeout=require('connect-timeout');var express=require(_0x810d('0x3'));var router=express[_0x810d('0x4')]();var fs_extra=require(_0x810d('0x5'));var auth=require(_0x810d('0x6'));var interaction=require(_0x810d('0x7'));var config=require('../../config/environment');var controller=require('./intServicenowAccount.controller');router[_0x810d('0x8')]('/',auth[_0x810d('0x9')](),controller[_0x810d('0xa')]);router[_0x810d('0x8')](_0x810d('0xb'),auth[_0x810d('0x9')](),controller[_0x810d('0xc')]);router['get']('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router[_0x810d('0x8')](_0x810d('0xd'),auth[_0x810d('0x9')](),controller[_0x810d('0xe')]);router['post']('/',auth[_0x810d('0x9')](),controller[_0x810d('0xf')]);router[_0x810d('0x10')](_0x810d('0x11'),auth['isAuthenticated'](),controller[_0x810d('0x12')]);router['put']('/:id',auth[_0x810d('0x9')](),controller['update']);router[_0x810d('0x13')](_0x810d('0xb'),auth['isAuthenticated'](),controller[_0x810d('0x14')]);module[_0x810d('0x15')]=router;
\ No newline at end of file
+var _0xb09d=['/:id/configurations','getConfigurations','/:id/fields','getFields','addConfiguration','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','show'];(function(_0x434672,_0x178e5b){var _0x1a6d6a=function(_0x123b8f){while(--_0x123b8f){_0x434672['push'](_0x434672['shift']());}};_0x1a6d6a(++_0x178e5b);}(_0xb09d,0x171));var _0xdb09=function(_0x295614,_0x40ef59){_0x295614=_0x295614-0x0;var _0x52bf08=_0xb09d[_0x295614];return _0x52bf08;};'use strict';var multer=require('multer');var util=require(_0xdb09('0x0'));var path=require(_0xdb09('0x1'));var timeout=require(_0xdb09('0x2'));var express=require(_0xdb09('0x3'));var router=express[_0xdb09('0x4')]();var fs_extra=require(_0xdb09('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdb09('0x6'));var config=require(_0xdb09('0x7'));var controller=require('./intServicenowAccount.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xdb09('0x8')]('/:id',auth[_0xdb09('0x9')](),controller[_0xdb09('0xa')]);router[_0xdb09('0x8')](_0xdb09('0xb'),auth[_0xdb09('0x9')](),controller[_0xdb09('0xc')]);router[_0xdb09('0x8')](_0xdb09('0xd'),auth[_0xdb09('0x9')](),controller[_0xdb09('0xe')]);router['post']('/',auth[_0xdb09('0x9')](),controller['create']);router['post'](_0xdb09('0xb'),auth[_0xdb09('0x9')](),controller[_0xdb09('0xf')]);router[_0xdb09('0x10')]('/:id',auth[_0xdb09('0x9')](),controller[_0xdb09('0x11')]);router[_0xdb09('0x12')]('/:id',auth[_0xdb09('0x9')](),controller['destroy']);module[_0xdb09('0x13')]=router;
\ No newline at end of file
index ad2f94b..fad8a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7859=['sequelize','exports','STRING','username'];(function(_0x4ddb4e,_0x38c020){var _0x1c2f4c=function(_0x4cf0cb){while(--_0x4cf0cb){_0x4ddb4e['push'](_0x4ddb4e['shift']());}};_0x1c2f4c(++_0x38c020);}(_0x7859,0xe0));var _0x9785=function(_0x145597,_0x5baeb0){_0x145597=_0x145597-0x0;var _0x267788=_0x7859[_0x145597];return _0x267788;};'use strict';var Sequelize=require(_0x9785('0x0'));module[_0x9785('0x1')]={'name':{'type':Sequelize[_0x9785('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x9785('0x2')],'unique':_0x9785('0x3')},'password':{'type':Sequelize[_0x9785('0x2')]},'email':{'type':Sequelize[_0x9785('0x2')]},'remoteUri':{'type':Sequelize[_0x9785('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x9785('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x28c0=['username','remoteUri','sequelize','exports','STRING'];(function(_0x477a50,_0x282b53){var _0xa4c6b6=function(_0x2cc1f2){while(--_0x2cc1f2){_0x477a50['push'](_0x477a50['shift']());}};_0xa4c6b6(++_0x282b53);}(_0x28c0,0x101));var _0x028c=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x28c0[_0x8c43de];return _0xa6591b;};'use strict';var Sequelize=require(_0x028c('0x0'));module[_0x028c('0x1')]={'name':{'type':Sequelize[_0x028c('0x2')]},'description':{'type':Sequelize[_0x028c('0x2')]},'username':{'type':Sequelize[_0x028c('0x2')],'unique':_0x028c('0x3')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x028c('0x2')]},'remoteUri':{'type':Sequelize[_0x028c('0x2')],'unique':_0x028c('0x4')},'serverUrl':{'type':Sequelize[_0x028c('0x2')],'allowNull':![]}};
\ No newline at end of file
index c96aaeb..536e06d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb7=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','update','destroy','then','send','index','ServicenowAccount','rawAttributes','fieldName','type','key','model','map','name','query','keys','intersection','attributes','fields','length','limit','sort','where','filters','filter','merge','includeAll','include','findAll','rows','catch','params','options','find','create','body','getConfigurations','order','hasOwnProperty','nolimit','addConfiguration','findOne','Subjects','channel','Descriptions','getDescriptions','ServicenowConfiguration','ServicenowField','getFields','hold_reason','knowledge','subcategory','notify','severity','category','parent','made_sla','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','delivery_plan','impact','active','work_notes_list','business_service','sys_domain_path','rfc','time_worked','expected_start','opened_at','group_list','work_end','reopened_time','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','description','calendar_duration','sys_class_name','close_notes','parent_incident','contact_type','reopened_by','incident_state','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','serverUrl','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','internalType','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','concat','test','statusCode','stack','Wrong\x20credentials','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','value','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service'];(function(_0x2c8438,_0x27438a){var _0x5da9b0=function(_0x6356){while(--_0x6356){_0x2c8438['push'](_0x2c8438['shift']());}};_0x5da9b0(++_0x27438a);}(_0x9cb7,0xae));var _0x79cb=function(_0x17e021,_0xf752ac){_0x17e021=_0x17e021-0x0;var _0x311e77=_0x9cb7[_0x17e021];return _0x311e77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x79cb('0x0'));var zipdir=require(_0x79cb('0x1'));var jsonpatch=require(_0x79cb('0x2'));var rp=require(_0x79cb('0x3'));var moment=require(_0x79cb('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x79cb('0x5'));var path=require(_0x79cb('0x6'));var sox=require(_0x79cb('0x7'));var csv=require(_0x79cb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x79cb('0x9'));var squel=require(_0x79cb('0xa'));var crypto=require(_0x79cb('0xb'));var jsforce=require(_0x79cb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x79cb('0x8'));var querystring=require(_0x79cb('0xd'));var Papa=require(_0x79cb('0xe'));var Redis=require('ioredis');var authService=require(_0x79cb('0xf'));var qs=require(_0x79cb('0x10'));var as=require(_0x79cb('0x11'));var hardwareService=require(_0x79cb('0x12'));var logger=require('../../config/logger')(_0x79cb('0x13'));var utils=require(_0x79cb('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x79cb('0x15'));var db=require(_0x79cb('0x16'))['db'];var integrations=require(_0x79cb('0x17'));function respondWithStatusCode(_0x57a684,_0x4d8b78){_0x4d8b78=_0x4d8b78||0xcc;return function(_0x5c1946){if(_0x5c1946){return _0x57a684[_0x79cb('0x18')](_0x4d8b78);}return _0x57a684[_0x79cb('0x19')](_0x4d8b78)[_0x79cb('0x1a')]();};}function respondWithResult(_0x56a5a5,_0x828ea1){_0x828ea1=_0x828ea1||0xc8;return function(_0x342ae8){if(_0x342ae8){return _0x56a5a5[_0x79cb('0x19')](_0x828ea1)[_0x79cb('0x1b')](_0x342ae8);}};}function respondWithFilteredResult(_0x4e80a9,_0x540f71){return function(_0x2f3ccc){if(_0x2f3ccc){var _0x5d2518=typeof _0x540f71[_0x79cb('0x1c')]===_0x79cb('0x1d')&&typeof _0x540f71['limit']==='undefined';var _0x152b17=_0x2f3ccc[_0x79cb('0x1e')];var _0x513476=_0x5d2518?0x0:_0x540f71[_0x79cb('0x1c')];var _0x4ca08c=_0x5d2518?_0x2f3ccc[_0x79cb('0x1e')]:_0x540f71['offset']+_0x540f71['limit'];var _0x153abd;if(_0x4ca08c>=_0x152b17){_0x4ca08c=_0x152b17;_0x153abd=0xc8;}else{_0x153abd=0xce;}_0x4e80a9[_0x79cb('0x19')](_0x153abd);return _0x4e80a9[_0x79cb('0x1f')](_0x79cb('0x20'),_0x513476+'-'+_0x4ca08c+'/'+_0x152b17)['json'](_0x2f3ccc);}return null;};}function patchUpdates(_0x524094){return function(_0x3343f7){try{jsonpatch[_0x79cb('0x21')](_0x3343f7,_0x524094,!![]);}catch(_0x2a91ab){return BPromise[_0x79cb('0x22')](_0x2a91ab);}return _0x3343f7['save']();};}function saveUpdates(_0x2fd9ce,_0x57de3a){return function(_0x41a08c){if(_0x41a08c){return _0x41a08c[_0x79cb('0x23')](_0x2fd9ce)['then'](function(_0x3fe84b){return _0x3fe84b;});}return null;};}function removeEntity(_0x13e339,_0x6f0f90){return function(_0x52f2fa){if(_0x52f2fa){return _0x52f2fa[_0x79cb('0x24')]()[_0x79cb('0x25')](function(){_0x13e339[_0x79cb('0x19')](0xcc)[_0x79cb('0x1a')]();});}};}function handleEntityNotFound(_0xd82218,_0x315c51){return function(_0xeca41a){if(!_0xeca41a){_0xd82218['sendStatus'](0x194);}return _0xeca41a;};}function handleError(_0xcd3947,_0xfd0830){_0xfd0830=_0xfd0830||0x1f4;return function(_0x3a72e6){logger['error'](_0x3a72e6['stack']);if(_0x3a72e6['name']){delete _0x3a72e6['name'];}_0xcd3947[_0x79cb('0x19')](_0xfd0830)[_0x79cb('0x26')](_0x3a72e6);};}exports[_0x79cb('0x27')]=function(_0x21669b,_0x26b7cb){var _0x51ff0f={},_0x5f1916={},_0x381189={'count':0x0,'rows':[]};var _0x2623e7=_['map'](db[_0x79cb('0x28')][_0x79cb('0x29')],function(_0x36b087){return{'name':_0x36b087[_0x79cb('0x2a')],'type':_0x36b087[_0x79cb('0x2b')][_0x79cb('0x2c')]};});_0x5f1916[_0x79cb('0x2d')]=_[_0x79cb('0x2e')](_0x2623e7,_0x79cb('0x2f'));_0x5f1916[_0x79cb('0x30')]=_[_0x79cb('0x31')](_0x21669b['query']);_0x5f1916['filters']=_[_0x79cb('0x32')](_0x5f1916[_0x79cb('0x2d')],_0x5f1916[_0x79cb('0x30')]);_0x51ff0f[_0x79cb('0x33')]=_[_0x79cb('0x32')](_0x5f1916[_0x79cb('0x2d')],qs[_0x79cb('0x34')](_0x21669b[_0x79cb('0x30')][_0x79cb('0x34')]));_0x51ff0f[_0x79cb('0x33')]=_0x51ff0f[_0x79cb('0x33')][_0x79cb('0x35')]?_0x51ff0f['attributes']:_0x5f1916[_0x79cb('0x2d')];if(!_0x21669b['query']['hasOwnProperty']('nolimit')){_0x51ff0f[_0x79cb('0x36')]=qs[_0x79cb('0x36')](_0x21669b[_0x79cb('0x30')][_0x79cb('0x36')]);_0x51ff0f['offset']=qs[_0x79cb('0x1c')](_0x21669b['query']['offset']);}_0x51ff0f['order']=qs[_0x79cb('0x37')](_0x21669b[_0x79cb('0x30')][_0x79cb('0x37')]);_0x51ff0f[_0x79cb('0x38')]=qs['filters'](_['pick'](_0x21669b['query'],_0x5f1916[_0x79cb('0x39')]),_0x2623e7);if(_0x21669b[_0x79cb('0x30')][_0x79cb('0x3a')]){_0x51ff0f[_0x79cb('0x38')]=_[_0x79cb('0x3b')](_0x51ff0f[_0x79cb('0x38')],{'$or':_[_0x79cb('0x2e')](_0x2623e7,function(_0x11218a){if(_0x11218a[_0x79cb('0x2b')]!=='VIRTUAL'){var _0x1f7bf8={};_0x1f7bf8[_0x11218a[_0x79cb('0x2f')]]={'$like':'%'+_0x21669b[_0x79cb('0x30')][_0x79cb('0x3a')]+'%'};return _0x1f7bf8;}})});}_0x51ff0f=_[_0x79cb('0x3b')]({},_0x51ff0f,_0x21669b['options']);var _0x44ab55={'where':_0x51ff0f['where']};return db[_0x79cb('0x28')]['count'](_0x44ab55)['then'](function(_0x25c455){_0x381189['count']=_0x25c455;if(_0x21669b[_0x79cb('0x30')][_0x79cb('0x3c')]){_0x51ff0f[_0x79cb('0x3d')]=[{'all':!![]}];}return db[_0x79cb('0x28')][_0x79cb('0x3e')](_0x51ff0f);})[_0x79cb('0x25')](function(_0x55083b){_0x381189[_0x79cb('0x3f')]=_0x55083b;return _0x381189;})['then'](respondWithFilteredResult(_0x26b7cb,_0x51ff0f))[_0x79cb('0x40')](handleError(_0x26b7cb,null));};exports['show']=function(_0x4eb1f6,_0x175164){var _0x45c4fb={'raw':![],'where':{'id':_0x4eb1f6[_0x79cb('0x41')]['id']}},_0x4774e4={};_0x4774e4['model']=_['keys'](db[_0x79cb('0x28')][_0x79cb('0x29')]);_0x4774e4[_0x79cb('0x30')]=_['keys'](_0x4eb1f6[_0x79cb('0x30')]);_0x4774e4[_0x79cb('0x39')]=_[_0x79cb('0x32')](_0x4774e4[_0x79cb('0x2d')],_0x4774e4[_0x79cb('0x30')]);_0x45c4fb['attributes']=_[_0x79cb('0x32')](_0x4774e4[_0x79cb('0x2d')],qs[_0x79cb('0x34')](_0x4eb1f6[_0x79cb('0x30')][_0x79cb('0x34')]));_0x45c4fb[_0x79cb('0x33')]=_0x45c4fb[_0x79cb('0x33')]['length']?_0x45c4fb[_0x79cb('0x33')]:_0x4774e4[_0x79cb('0x2d')];if(_0x4eb1f6[_0x79cb('0x30')][_0x79cb('0x3c')]){_0x45c4fb[_0x79cb('0x3d')]=[{'all':!![]}];}_0x45c4fb=_[_0x79cb('0x3b')]({},_0x45c4fb,_0x4eb1f6[_0x79cb('0x42')]);return db[_0x79cb('0x28')][_0x79cb('0x43')](_0x45c4fb)[_0x79cb('0x25')](handleEntityNotFound(_0x175164,null))[_0x79cb('0x25')](respondWithResult(_0x175164,null))[_0x79cb('0x40')](handleError(_0x175164,null));};exports[_0x79cb('0x44')]=function(_0x2760dd,_0x310080){return db[_0x79cb('0x28')][_0x79cb('0x44')](_0x2760dd['body'],{})[_0x79cb('0x25')](respondWithResult(_0x310080,0xc9))['catch'](handleError(_0x310080,null));};exports[_0x79cb('0x23')]=function(_0x33c1d5,_0x308056){if(_0x33c1d5['body']['id']){delete _0x33c1d5[_0x79cb('0x45')]['id'];}return db['ServicenowAccount'][_0x79cb('0x43')]({'where':{'id':_0x33c1d5[_0x79cb('0x41')]['id']}})[_0x79cb('0x25')](handleEntityNotFound(_0x308056,null))[_0x79cb('0x25')](saveUpdates(_0x33c1d5[_0x79cb('0x45')],null))[_0x79cb('0x25')](respondWithResult(_0x308056,null))[_0x79cb('0x40')](handleError(_0x308056,null));};exports[_0x79cb('0x24')]=function(_0x7dc68a,_0x472a14){return db[_0x79cb('0x28')][_0x79cb('0x43')]({'where':{'id':_0x7dc68a['params']['id']}})[_0x79cb('0x25')](handleEntityNotFound(_0x472a14,null))[_0x79cb('0x25')](removeEntity(_0x472a14,null))[_0x79cb('0x40')](handleError(_0x472a14,null));};exports[_0x79cb('0x46')]=function(_0x30b3e2,_0x3d3de0,_0x59aa2f){var _0x1b6037={};var _0x1943c6={};var _0x526e88;var _0x46e359;return db['ServicenowAccount']['findOne']({'where':{'id':_0x30b3e2[_0x79cb('0x41')]['id']}})['then'](handleEntityNotFound(_0x3d3de0,null))['then'](function(_0x39c0bc){if(_0x39c0bc){_0x526e88=_0x39c0bc;_0x1943c6[_0x79cb('0x2d')]=_[_0x79cb('0x31')](db['ServicenowConfiguration'][_0x79cb('0x29')]);_0x1943c6[_0x79cb('0x30')]=_[_0x79cb('0x31')](_0x30b3e2[_0x79cb('0x30')]);_0x1943c6['filters']=_[_0x79cb('0x32')](_0x1943c6['model'],_0x1943c6[_0x79cb('0x30')]);_0x1b6037[_0x79cb('0x33')]=_['intersection'](_0x1943c6[_0x79cb('0x2d')],qs[_0x79cb('0x34')](_0x30b3e2['query'][_0x79cb('0x34')]));_0x1b6037[_0x79cb('0x33')]=_0x1b6037['attributes'][_0x79cb('0x35')]?_0x1b6037[_0x79cb('0x33')]:_0x1943c6['model'];_0x1b6037[_0x79cb('0x47')]=qs[_0x79cb('0x37')](_0x30b3e2['query'][_0x79cb('0x37')]);_0x1b6037[_0x79cb('0x38')]=qs['filters'](_['pick'](_0x30b3e2[_0x79cb('0x30')],_0x1943c6['filters']));if(_0x30b3e2[_0x79cb('0x30')]['filter']){_0x1b6037['where']=_[_0x79cb('0x3b')](_0x1b6037['where'],{'$or':_[_0x79cb('0x2e')](_0x1b6037[_0x79cb('0x33')],function(_0x3ba422){var _0x52e343={};_0x52e343[_0x3ba422]={'$like':'%'+_0x30b3e2['query']['filter']+'%'};return _0x52e343;})});}_0x1b6037=_[_0x79cb('0x3b')]({},_0x1b6037,_0x30b3e2[_0x79cb('0x42')]);return _0x526e88[_0x79cb('0x46')](_0x1b6037);}})[_0x79cb('0x25')](function(_0x5e2eaf){if(_0x5e2eaf){_0x46e359=_0x5e2eaf[_0x79cb('0x35')];if(!_0x30b3e2[_0x79cb('0x30')][_0x79cb('0x48')](_0x79cb('0x49'))){_0x1b6037[_0x79cb('0x36')]=qs[_0x79cb('0x36')](_0x30b3e2[_0x79cb('0x30')]['limit']);_0x1b6037[_0x79cb('0x1c')]=qs[_0x79cb('0x1c')](_0x30b3e2[_0x79cb('0x30')][_0x79cb('0x1c')]);}return _0x526e88[_0x79cb('0x46')](_0x1b6037);}})[_0x79cb('0x25')](function(_0x5a9e65){if(_0x5a9e65){return _0x5a9e65?{'count':_0x46e359,'rows':_0x5a9e65}:null;}})['then'](respondWithResult(_0x3d3de0,null))[_0x79cb('0x40')](handleError(_0x3d3de0,null));};exports[_0x79cb('0x4a')]=function(_0x492dd2,_0x1c5ec7,_0x280933){if(_0x492dd2['body']['id']){delete _0x492dd2[_0x79cb('0x45')]['id'];}return db['ServicenowAccount'][_0x79cb('0x4b')]({'where':{'id':_0x492dd2[_0x79cb('0x41')]['id']}})['then'](handleEntityNotFound(_0x1c5ec7,null))[_0x79cb('0x25')](function(_0x17bf09){if(_0x17bf09){_0x492dd2[_0x79cb('0x45')]['AccountId']=_0x17bf09['id'];_0x492dd2[_0x79cb('0x45')][_0x79cb('0x4c')]=integrations['getSubjects'](_0x492dd2['body'][_0x79cb('0x4d')],_0x492dd2[_0x79cb('0x45')][_0x79cb('0x2b')]);_0x492dd2['body'][_0x79cb('0x4e')]=integrations[_0x79cb('0x4f')](_0x492dd2[_0x79cb('0x45')][_0x79cb('0x4d')],_0x492dd2[_0x79cb('0x45')][_0x79cb('0x2b')]);return db[_0x79cb('0x50')][_0x79cb('0x44')](_0x492dd2[_0x79cb('0x45')],{'include':[{'model':db[_0x79cb('0x51')],'as':_0x79cb('0x4c')},{'model':db[_0x79cb('0x51')],'as':_0x79cb('0x4e')}]});}return null;})[_0x79cb('0x25')](respondWithResult(_0x1c5ec7,null))[_0x79cb('0x40')](handleError(_0x1c5ec7,null));};exports[_0x79cb('0x52')]=function(_0x486c43,_0x20264d,_0x1e8853){var _0x2b4ffd=['made_sla',_0x79cb('0x53'),_0x79cb('0x54'),_0x79cb('0x55'),'close_code',_0x79cb('0x56'),'incident_state',_0x79cb('0x57'),_0x79cb('0x58')];var _0x324e2f=[_0x79cb('0x59'),_0x79cb('0x5a'),_0x79cb('0x5b'),_0x79cb('0x5c'),_0x79cb('0x5d'),_0x79cb('0x5e'),_0x79cb('0x5f'),'hold_reason',_0x79cb('0x60'),_0x79cb('0x61'),_0x79cb('0x62'),_0x79cb('0x63'),'opened_by',_0x79cb('0x64'),_0x79cb('0x65'),_0x79cb('0x66'),_0x79cb('0x67'),_0x79cb('0x68'),_0x79cb('0x54'),'order',_0x79cb('0x69'),_0x79cb('0x6a'),'cmdb_ci',_0x79cb('0x6b'),_0x79cb('0x6c'),_0x79cb('0x6d'),_0x79cb('0x6e'),_0x79cb('0x6f'),'priority',_0x79cb('0x70'),_0x79cb('0x71'),_0x79cb('0x72'),_0x79cb('0x73'),_0x79cb('0x74'),'business_duration',_0x79cb('0x75'),_0x79cb('0x76'),_0x79cb('0x77'),'resolved_at',_0x79cb('0x78'),_0x79cb('0x79'),_0x79cb('0x55'),_0x79cb('0x7a'),_0x79cb('0x7b'),'close_code',_0x79cb('0x7c'),_0x79cb('0x7d'),_0x79cb('0x7e'),_0x79cb('0x7f'),_0x79cb('0x80'),'additional_assignee_list',_0x79cb('0x81'),_0x79cb('0x82'),_0x79cb('0x56'),_0x79cb('0x83'),_0x79cb('0x84'),'closed_by','follow_up',_0x79cb('0x85'),'sys_id',_0x79cb('0x86'),_0x79cb('0x87'),_0x79cb('0x88'),_0x79cb('0x89'),_0x79cb('0x8a'),_0x79cb('0x8b'),_0x79cb('0x8c'),_0x79cb('0x8d'),_0x79cb('0x8e'),'severity',_0x79cb('0x8f'),_0x79cb('0x90'),_0x79cb('0x91'),_0x79cb('0x92'),_0x79cb('0x93'),_0x79cb('0x94'),_0x79cb('0x95'),_0x79cb('0x96'),_0x79cb('0x97'),_0x79cb('0x98'),_0x79cb('0x99'),_0x79cb('0x9a'),_0x79cb('0x58')];var _0x576bd1='';var _0x398433='';var _0x4225a6=[];var _0x1ae6ad='';var _0x156a48='';var _0x676401=[];var _0x11f313='';var _0x14381e='';var _0x332c0e={};var _0xbbfea='';return db[_0x79cb('0x28')][_0x79cb('0x4b')]({'where':{'id':_0x486c43[_0x79cb('0x41')]['id']},'attributes':['id',_0x79cb('0x9b'),_0x79cb('0x9c'),_0x79cb('0x9d'),_0x79cb('0x9e'),_0x79cb('0x9f')]})['then'](handleEntityNotFound(_0x20264d,null))[_0x79cb('0x25')](function(_0x5c94b7){if(_0x5c94b7){_0xbbfea=_0x5c94b7[_0x79cb('0x9e')];var _0x344ef7=_0xbbfea['slice'](-0x1);if(_0x344ef7==='/'){_0xbbfea=_0xbbfea['substring'](0x0,_0xbbfea[_0x79cb('0xa0')](_0x344ef7));}_0x14381e=util[_0x79cb('0xa1')](_0x79cb('0xa2'),_0xbbfea);_0x11f313=util[_0x79cb('0xa1')](_0x79cb('0xa3'),_0xbbfea);_0x332c0e={'user':_0x5c94b7[_0x79cb('0x9b')],'pass':_0x5c94b7[_0x79cb('0x9c')]};var _0xfea0c={'method':'GET','uri':_0x14381e+_0x79cb('0xa4'),'auth':_0x332c0e,'json':!![]};return rp(_0xfea0c);}})[_0x79cb('0x25')](function(_0x57c49d){if(_0x57c49d[_0x79cb('0xa5')][_0x79cb('0x35')]>0x0){_0x576bd1=_0x57c49d[_0x79cb('0xa5')];}console[_0x79cb('0xa6')](_0x79cb('0xa7'),_0x576bd1);_0x676401=[];_0x398433=Object[_0x79cb('0xa8')]([],_0x576bd1);_[_0x79cb('0xa9')](_0x398433,function(_0x37295c){return!_0x2b4ffd[_0x79cb('0xaa')](_0x37295c[_0x79cb('0x2f')]);});_0x398433['forEach'](function(_0x4f1540){var _0x2672c0=createFieldObject(_0x11f313,_0x332c0e,_0x4f1540[_0x79cb('0xab')],_0x4f1540[_0x79cb('0x2f')],_0x4f1540[_0x79cb('0xac')],![]);_0x676401[_0x79cb('0xad')](_0x2672c0);});return Promise[_0x79cb('0xae')](_0x676401);})[_0x79cb('0x25')](function(_0x1e1edb){_0x4225a6=_0x1e1edb;_0x1ae6ad=Object[_0x79cb('0xa8')]([],_0x576bd1);console[_0x79cb('0xa6')](_0x79cb('0xaf'),_0x576bd1);_[_0x79cb('0xa9')](_0x1ae6ad,function(_0x406422){return _0x324e2f[_0x79cb('0xaa')](_0x406422[_0x79cb('0x2f')]);});console['log'](_0x79cb('0xb0'),_0x1ae6ad);_0x676401=[];_0x1ae6ad[_0x79cb('0xb1')](function(_0x32a77a){var _0x1dcc75=createFieldObject(_0x11f313,_0x332c0e,_0x32a77a['internalType'],_0x32a77a[_0x79cb('0x2f')],_0x32a77a[_0x79cb('0xac')],!![]);_0x676401['push'](_0x1dcc75);});return Promise[_0x79cb('0xae')](_0x676401);})[_0x79cb('0x25')](function(_0x3da3c5){_0x156a48=_0x3da3c5;var _0x304b0c=_0x4225a6[_0x79cb('0xb2')](_0x156a48);return{'count':_0x304b0c[_0x79cb('0x35')],'rows':_0x304b0c};})['then'](respondWithResult(_0x20264d,null))[_0x79cb('0x40')](function(_0x17a3a7){console[_0x79cb('0xa6')]('ServiceNow\x20error:\x20'+_0x17a3a7);var _0xcf3412=_0x486c43['query'][_0x79cb('0xb3')]?0x1f4:_0x17a3a7[_0x79cb('0xb4')]||0x1f4;logger['error'](_0x17a3a7[_0x79cb('0xb5')]);delete _0x17a3a7['name'];if(_0xcf3412===0x191){_0xcf3412=0x190;}_0x20264d[_0x79cb('0x19')](_0xcf3412)['send'](_0x486c43[_0x79cb('0x30')][_0x79cb('0xb3')]?{'message':_0x79cb('0xb6'),'statusCode':_0x17a3a7['statusCode']}:_0x17a3a7);});};function createFieldObject(_0x3416b8,_0x19e05a,_0x383a38,_0x33540f,_0x3ab25d,_0xd2d353){return new Promise(function(_0xc92eb0,_0x57c0e0){var _0x1d8442={'id':_0x33540f,'name':_0x3ab25d,'custom':_0xd2d353};if(_0x383a38===_0x79cb('0xb7')){_0x1d8442[_0x79cb('0x42')]=[{'name':_0x79cb('0xb8'),'value':_0x79cb('0xb9')},{'name':_0x79cb('0xba'),'value':_0x79cb('0xbb')}];_0xc92eb0(_0x1d8442);}else{var _0x17636e={'method':'GET','uri':_0x3416b8+_0x79cb('0xbc')+_0x33540f,'auth':_0x19e05a,'json':!![]};return rp(_0x17636e)['then'](function(_0x2a02f0){var _0x268f07=[];if(_0x2a02f0[_0x79cb('0xa5')]['length']>0x0){_0x2a02f0[_0x79cb('0xa5')][_0x79cb('0xb1')](function(_0x3f5a91){if(_0x3f5a91['inactive']===_0x79cb('0xbb')){var _0x7c7a3a={'name':_0x3f5a91[_0x79cb('0xac')],'value':_0x3f5a91[_0x79cb('0xbd')]};_0x268f07[_0x79cb('0xad')](_0x7c7a3a);}});}_0x1d8442['options']=_0x268f07;if(_0x1d8442[_0x79cb('0x42')][_0x79cb('0x35')]>0x0){_0xc92eb0(_0x1d8442);}else{if(_0xd2d353==![]){_0xc92eb0();}else{_0xc92eb0(_0x1d8442);}}});}});}
\ No newline at end of file
+var _0xb87d=['order','sort','where','pick','filter','type','VIRTUAL','merge','then','includeAll','findAll','catch','show','params','include','options','find','create','body','update','getConfigurations','ServicenowConfiguration','nolimit','addConfiguration','findOne','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','ServicenowField','getFields','knowledge','subcategory','notify','severity','category','caused_by','watch_list','sys_updated_on','child_incidents','hold_reason','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','sys_created_by','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','rfc','expected_start','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','close_code','delivery_task','work_start','assignment_group','description','sys_class_name','parent_incident','sys_id','incident_state','urgency','problem_id','reassignment_count','activity_due','assigned_to','comments','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','correlation_id','password','email','remoteUri','serverUrl','slice','substring','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','assign','remove','forEach','label','push','all','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','internalType','concat','test','statusCode','error','Wrong\x20credentials','boolean','True','true','False','false','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/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','destroy','stack','name','send','index','ServicenowAccount','rawAttributes','key','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty'];(function(_0x3a16d4,_0x23ecda){var _0x31ea9c=function(_0x35fea8){while(--_0x35fea8){_0x3a16d4['push'](_0x3a16d4['shift']());}};_0x31ea9c(++_0x23ecda);}(_0xb87d,0x12f));var _0xdb87=function(_0xc02b50,_0x36ae25){_0xc02b50=_0xc02b50-0x0;var _0xc56de1=_0xb87d[_0xc02b50];return _0xc56de1;};'use strict';var emlformat=require(_0xdb87('0x0'));var rimraf=require(_0xdb87('0x1'));var zipdir=require(_0xdb87('0x2'));var jsonpatch=require(_0xdb87('0x3'));var rp=require(_0xdb87('0x4'));var moment=require(_0xdb87('0x5'));var BPromise=require(_0xdb87('0x6'));var Mustache=require(_0xdb87('0x7'));var util=require(_0xdb87('0x8'));var path=require(_0xdb87('0x9'));var sox=require(_0xdb87('0xa'));var csv=require(_0xdb87('0xb'));var ejs=require(_0xdb87('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdb87('0xd'));var squel=require(_0xdb87('0xe'));var crypto=require(_0xdb87('0xf'));var jsforce=require(_0xdb87('0x10'));var deskjs=require(_0xdb87('0x11'));var toCsv=require(_0xdb87('0xb'));var querystring=require(_0xdb87('0x12'));var Papa=require(_0xdb87('0x13'));var Redis=require(_0xdb87('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xdb87('0x15'));var as=require(_0xdb87('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb87('0x17'))(_0xdb87('0x18'));var utils=require(_0xdb87('0x19'));var config=require(_0xdb87('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x20189d,_0x520a6a){_0x520a6a=_0x520a6a||0xcc;return function(_0x13b140){if(_0x13b140){return _0x20189d[_0xdb87('0x1b')](_0x520a6a);}return _0x20189d[_0xdb87('0x1c')](_0x520a6a)[_0xdb87('0x1d')]();};}function respondWithResult(_0x403b40,_0x515a2a){_0x515a2a=_0x515a2a||0xc8;return function(_0x120040){if(_0x120040){return _0x403b40['status'](_0x515a2a)[_0xdb87('0x1e')](_0x120040);}};}function respondWithFilteredResult(_0x3e3430,_0x133e68){return function(_0x3197b4){if(_0x3197b4){var _0x195b58=typeof _0x133e68[_0xdb87('0x1f')]===_0xdb87('0x20')&&typeof _0x133e68[_0xdb87('0x21')]===_0xdb87('0x20');var _0x5034bb=_0x3197b4[_0xdb87('0x22')];var _0x8019f=_0x195b58?0x0:_0x133e68[_0xdb87('0x1f')];var _0x31fc10=_0x195b58?_0x3197b4[_0xdb87('0x22')]:_0x133e68[_0xdb87('0x1f')]+_0x133e68[_0xdb87('0x21')];var _0x51f1af;if(_0x31fc10>=_0x5034bb){_0x31fc10=_0x5034bb;_0x51f1af=0xc8;}else{_0x51f1af=0xce;}_0x3e3430[_0xdb87('0x1c')](_0x51f1af);return _0x3e3430[_0xdb87('0x23')]('Content-Range',_0x8019f+'-'+_0x31fc10+'/'+_0x5034bb)[_0xdb87('0x1e')](_0x3197b4);}return null;};}function patchUpdates(_0x5b01b0){return function(_0x44d562){try{jsonpatch[_0xdb87('0x24')](_0x44d562,_0x5b01b0,!![]);}catch(_0xb9941f){return BPromise[_0xdb87('0x25')](_0xb9941f);}return _0x44d562[_0xdb87('0x26')]();};}function saveUpdates(_0x386b85,_0x4468dc){return function(_0x388ea9){if(_0x388ea9){return _0x388ea9['update'](_0x386b85)['then'](function(_0x40db78){return _0x40db78;});}return null;};}function removeEntity(_0x357a18,_0x115d70){return function(_0x2e5da1){if(_0x2e5da1){return _0x2e5da1[_0xdb87('0x27')]()['then'](function(){_0x357a18[_0xdb87('0x1c')](0xcc)[_0xdb87('0x1d')]();});}};}function handleEntityNotFound(_0x49a6cb,_0x4e4f70){return function(_0x2fbabf){if(!_0x2fbabf){_0x49a6cb[_0xdb87('0x1b')](0x194);}return _0x2fbabf;};}function handleError(_0x46f555,_0x55a5dd){_0x55a5dd=_0x55a5dd||0x1f4;return function(_0x182c66){logger['error'](_0x182c66[_0xdb87('0x28')]);if(_0x182c66[_0xdb87('0x29')]){delete _0x182c66[_0xdb87('0x29')];}_0x46f555[_0xdb87('0x1c')](_0x55a5dd)[_0xdb87('0x2a')](_0x182c66);};}exports[_0xdb87('0x2b')]=function(_0x2c8153,_0x58fb95){var _0x4792d5={},_0xa640a5={},_0x2433fa={'count':0x0,'rows':[]};var _0x3fc99e=_['map'](db[_0xdb87('0x2c')][_0xdb87('0x2d')],function(_0x11df59){return{'name':_0x11df59['fieldName'],'type':_0x11df59['type'][_0xdb87('0x2e')]};});_0xa640a5['model']=_[_0xdb87('0x2f')](_0x3fc99e,_0xdb87('0x29'));_0xa640a5[_0xdb87('0x30')]=_[_0xdb87('0x31')](_0x2c8153[_0xdb87('0x30')]);_0xa640a5[_0xdb87('0x32')]=_[_0xdb87('0x33')](_0xa640a5['model'],_0xa640a5[_0xdb87('0x30')]);_0x4792d5[_0xdb87('0x34')]=_['intersection'](_0xa640a5[_0xdb87('0x35')],qs[_0xdb87('0x36')](_0x2c8153[_0xdb87('0x30')]['fields']));_0x4792d5[_0xdb87('0x34')]=_0x4792d5[_0xdb87('0x34')][_0xdb87('0x37')]?_0x4792d5[_0xdb87('0x34')]:_0xa640a5['model'];if(!_0x2c8153[_0xdb87('0x30')][_0xdb87('0x38')]('nolimit')){_0x4792d5[_0xdb87('0x21')]=qs[_0xdb87('0x21')](_0x2c8153[_0xdb87('0x30')][_0xdb87('0x21')]);_0x4792d5[_0xdb87('0x1f')]=qs[_0xdb87('0x1f')](_0x2c8153['query'][_0xdb87('0x1f')]);}_0x4792d5[_0xdb87('0x39')]=qs['sort'](_0x2c8153[_0xdb87('0x30')][_0xdb87('0x3a')]);_0x4792d5[_0xdb87('0x3b')]=qs[_0xdb87('0x32')](_[_0xdb87('0x3c')](_0x2c8153['query'],_0xa640a5[_0xdb87('0x32')]),_0x3fc99e);if(_0x2c8153[_0xdb87('0x30')][_0xdb87('0x3d')]){_0x4792d5[_0xdb87('0x3b')]=_['merge'](_0x4792d5[_0xdb87('0x3b')],{'$or':_[_0xdb87('0x2f')](_0x3fc99e,function(_0xb6e2c1){if(_0xb6e2c1[_0xdb87('0x3e')]!==_0xdb87('0x3f')){var _0x32075b={};_0x32075b[_0xb6e2c1[_0xdb87('0x29')]]={'$like':'%'+_0x2c8153['query'][_0xdb87('0x3d')]+'%'};return _0x32075b;}})});}_0x4792d5=_[_0xdb87('0x40')]({},_0x4792d5,_0x2c8153['options']);var _0x56a058={'where':_0x4792d5[_0xdb87('0x3b')]};return db[_0xdb87('0x2c')]['count'](_0x56a058)[_0xdb87('0x41')](function(_0x58c7ec){_0x2433fa[_0xdb87('0x22')]=_0x58c7ec;if(_0x2c8153[_0xdb87('0x30')][_0xdb87('0x42')]){_0x4792d5['include']=[{'all':!![]}];}return db[_0xdb87('0x2c')][_0xdb87('0x43')](_0x4792d5);})[_0xdb87('0x41')](function(_0x4c254c){_0x2433fa['rows']=_0x4c254c;return _0x2433fa;})[_0xdb87('0x41')](respondWithFilteredResult(_0x58fb95,_0x4792d5))[_0xdb87('0x44')](handleError(_0x58fb95,null));};exports[_0xdb87('0x45')]=function(_0x50bd71,_0x12dea6){var _0x4d2d94={'raw':![],'where':{'id':_0x50bd71[_0xdb87('0x46')]['id']}},_0x140acf={};_0x140acf[_0xdb87('0x35')]=_[_0xdb87('0x31')](db[_0xdb87('0x2c')][_0xdb87('0x2d')]);_0x140acf['query']=_[_0xdb87('0x31')](_0x50bd71[_0xdb87('0x30')]);_0x140acf[_0xdb87('0x32')]=_['intersection'](_0x140acf[_0xdb87('0x35')],_0x140acf[_0xdb87('0x30')]);_0x4d2d94['attributes']=_['intersection'](_0x140acf[_0xdb87('0x35')],qs[_0xdb87('0x36')](_0x50bd71[_0xdb87('0x30')][_0xdb87('0x36')]));_0x4d2d94['attributes']=_0x4d2d94[_0xdb87('0x34')][_0xdb87('0x37')]?_0x4d2d94[_0xdb87('0x34')]:_0x140acf['model'];if(_0x50bd71[_0xdb87('0x30')]['includeAll']){_0x4d2d94[_0xdb87('0x47')]=[{'all':!![]}];}_0x4d2d94=_['merge']({},_0x4d2d94,_0x50bd71[_0xdb87('0x48')]);return db[_0xdb87('0x2c')][_0xdb87('0x49')](_0x4d2d94)[_0xdb87('0x41')](handleEntityNotFound(_0x12dea6,null))[_0xdb87('0x41')](respondWithResult(_0x12dea6,null))[_0xdb87('0x44')](handleError(_0x12dea6,null));};exports[_0xdb87('0x4a')]=function(_0x1bfdeb,_0x5e605c){return db[_0xdb87('0x2c')][_0xdb87('0x4a')](_0x1bfdeb[_0xdb87('0x4b')],{})['then'](respondWithResult(_0x5e605c,0xc9))[_0xdb87('0x44')](handleError(_0x5e605c,null));};exports[_0xdb87('0x4c')]=function(_0xaae9ff,_0x125847){if(_0xaae9ff['body']['id']){delete _0xaae9ff[_0xdb87('0x4b')]['id'];}return db[_0xdb87('0x2c')][_0xdb87('0x49')]({'where':{'id':_0xaae9ff['params']['id']}})['then'](handleEntityNotFound(_0x125847,null))['then'](saveUpdates(_0xaae9ff[_0xdb87('0x4b')],null))[_0xdb87('0x41')](respondWithResult(_0x125847,null))['catch'](handleError(_0x125847,null));};exports[_0xdb87('0x27')]=function(_0x205b85,_0x30f200){return db['ServicenowAccount'][_0xdb87('0x49')]({'where':{'id':_0x205b85[_0xdb87('0x46')]['id']}})['then'](handleEntityNotFound(_0x30f200,null))[_0xdb87('0x41')](removeEntity(_0x30f200,null))[_0xdb87('0x44')](handleError(_0x30f200,null));};exports[_0xdb87('0x4d')]=function(_0x104c36,_0x22aaf1,_0x19ec2c){var _0x1f76cf={};var _0x56fcfe={};var _0x29e04f;var _0x561a7e;return db[_0xdb87('0x2c')]['findOne']({'where':{'id':_0x104c36[_0xdb87('0x46')]['id']}})[_0xdb87('0x41')](handleEntityNotFound(_0x22aaf1,null))[_0xdb87('0x41')](function(_0x53ceca){if(_0x53ceca){_0x29e04f=_0x53ceca;_0x56fcfe[_0xdb87('0x35')]=_['keys'](db[_0xdb87('0x4e')][_0xdb87('0x2d')]);_0x56fcfe[_0xdb87('0x30')]=_[_0xdb87('0x31')](_0x104c36[_0xdb87('0x30')]);_0x56fcfe[_0xdb87('0x32')]=_[_0xdb87('0x33')](_0x56fcfe[_0xdb87('0x35')],_0x56fcfe[_0xdb87('0x30')]);_0x1f76cf[_0xdb87('0x34')]=_['intersection'](_0x56fcfe['model'],qs[_0xdb87('0x36')](_0x104c36['query'][_0xdb87('0x36')]));_0x1f76cf[_0xdb87('0x34')]=_0x1f76cf['attributes'][_0xdb87('0x37')]?_0x1f76cf[_0xdb87('0x34')]:_0x56fcfe[_0xdb87('0x35')];_0x1f76cf[_0xdb87('0x39')]=qs[_0xdb87('0x3a')](_0x104c36[_0xdb87('0x30')]['sort']);_0x1f76cf[_0xdb87('0x3b')]=qs[_0xdb87('0x32')](_[_0xdb87('0x3c')](_0x104c36[_0xdb87('0x30')],_0x56fcfe[_0xdb87('0x32')]));if(_0x104c36[_0xdb87('0x30')]['filter']){_0x1f76cf[_0xdb87('0x3b')]=_['merge'](_0x1f76cf[_0xdb87('0x3b')],{'$or':_[_0xdb87('0x2f')](_0x1f76cf['attributes'],function(_0x1a5e25){var _0x3058d={};_0x3058d[_0x1a5e25]={'$like':'%'+_0x104c36[_0xdb87('0x30')][_0xdb87('0x3d')]+'%'};return _0x3058d;})});}_0x1f76cf=_[_0xdb87('0x40')]({},_0x1f76cf,_0x104c36[_0xdb87('0x48')]);return _0x29e04f[_0xdb87('0x4d')](_0x1f76cf);}})[_0xdb87('0x41')](function(_0x4c841f){if(_0x4c841f){_0x561a7e=_0x4c841f['length'];if(!_0x104c36[_0xdb87('0x30')][_0xdb87('0x38')](_0xdb87('0x4f'))){_0x1f76cf['limit']=qs['limit'](_0x104c36['query'][_0xdb87('0x21')]);_0x1f76cf[_0xdb87('0x1f')]=qs[_0xdb87('0x1f')](_0x104c36[_0xdb87('0x30')]['offset']);}return _0x29e04f['getConfigurations'](_0x1f76cf);}})[_0xdb87('0x41')](function(_0x5f2688){if(_0x5f2688){return _0x5f2688?{'count':_0x561a7e,'rows':_0x5f2688}:null;}})[_0xdb87('0x41')](respondWithResult(_0x22aaf1,null))[_0xdb87('0x44')](handleError(_0x22aaf1,null));};exports[_0xdb87('0x50')]=function(_0x3169fc,_0x6404e9,_0x72f773){if(_0x3169fc[_0xdb87('0x4b')]['id']){delete _0x3169fc['body']['id'];}return db[_0xdb87('0x2c')][_0xdb87('0x51')]({'where':{'id':_0x3169fc[_0xdb87('0x46')]['id']}})[_0xdb87('0x41')](handleEntityNotFound(_0x6404e9,null))[_0xdb87('0x41')](function(_0x24f3e3){if(_0x24f3e3){_0x3169fc[_0xdb87('0x4b')][_0xdb87('0x52')]=_0x24f3e3['id'];_0x3169fc[_0xdb87('0x4b')][_0xdb87('0x53')]=integrations[_0xdb87('0x54')](_0x3169fc['body']['channel'],_0x3169fc['body']['type']);_0x3169fc[_0xdb87('0x4b')][_0xdb87('0x55')]=integrations[_0xdb87('0x56')](_0x3169fc[_0xdb87('0x4b')]['channel'],_0x3169fc[_0xdb87('0x4b')]['type']);return db[_0xdb87('0x4e')][_0xdb87('0x4a')](_0x3169fc[_0xdb87('0x4b')],{'include':[{'model':db[_0xdb87('0x57')],'as':'Subjects'},{'model':db['ServicenowField'],'as':'Descriptions'}]});}return null;})[_0xdb87('0x41')](respondWithResult(_0x6404e9,null))['catch'](handleError(_0x6404e9,null));};exports[_0xdb87('0x58')]=function(_0x465db7,_0x36d9c4,_0x14a078){var _0x166a68=['made_sla','hold_reason',_0xdb87('0x59'),_0xdb87('0x5a'),'close_code',_0xdb87('0x5b'),'incident_state',_0xdb87('0x5c'),_0xdb87('0x5d')];var _0x1a5de3=['parent','made_sla',_0xdb87('0x5e'),_0xdb87('0x5f'),'upon_reject',_0xdb87('0x60'),_0xdb87('0x61'),_0xdb87('0x62'),_0xdb87('0x63'),_0xdb87('0x64'),_0xdb87('0x65'),_0xdb87('0x66'),_0xdb87('0x67'),_0xdb87('0x68'),_0xdb87('0x69'),'sys_domain',_0xdb87('0x6a'),_0xdb87('0x6b'),_0xdb87('0x59'),_0xdb87('0x39'),'calendar_stc','closed_at',_0xdb87('0x6c'),_0xdb87('0x6d'),_0xdb87('0x6e'),_0xdb87('0x6f'),_0xdb87('0x70'),_0xdb87('0x71'),_0xdb87('0x72'),_0xdb87('0x73'),_0xdb87('0x74'),'time_worked',_0xdb87('0x75'),'opened_at',_0xdb87('0x76'),_0xdb87('0x77'),_0xdb87('0x78'),_0xdb87('0x79'),_0xdb87('0x7a'),_0xdb87('0x7b'),_0xdb87('0x7c'),'subcategory',_0xdb87('0x7d'),_0xdb87('0x7e'),_0xdb87('0x7f'),'correlation_display',_0xdb87('0x80'),_0xdb87('0x81'),_0xdb87('0x82'),'business_stc','additional_assignee_list',_0xdb87('0x83'),'calendar_duration','notify',_0xdb87('0x84'),'close_notes','closed_by','follow_up',_0xdb87('0x85'),_0xdb87('0x86'),'contact_type','reopened_by',_0xdb87('0x87'),_0xdb87('0x88'),_0xdb87('0x89'),'company',_0xdb87('0x8a'),_0xdb87('0x8b'),_0xdb87('0x8c'),_0xdb87('0x5c'),_0xdb87('0x8d'),'sla_due',_0xdb87('0x8e'),_0xdb87('0x8f'),_0xdb87('0x90'),_0xdb87('0x91'),_0xdb87('0x92'),_0xdb87('0x93'),'escalation','upon_approval',_0xdb87('0x94'),'location',_0xdb87('0x5d')];var _0x2898a2='';var _0x555823='';var _0x32309b=[];var _0x16d8a8='';var _0x3519fa='';var _0x16e968=[];var _0x414e7f='';var _0x2d7cb2='';var _0x4190bd={};var _0x4e1c1f='';return db[_0xdb87('0x2c')][_0xdb87('0x51')]({'where':{'id':_0x465db7[_0xdb87('0x46')]['id']},'attributes':['id','username',_0xdb87('0x95'),_0xdb87('0x96'),_0xdb87('0x97'),_0xdb87('0x98')]})['then'](handleEntityNotFound(_0x36d9c4,null))['then'](function(_0x2004a4){if(_0x2004a4){_0x4e1c1f=_0x2004a4['remoteUri'];var _0x4de425=_0x4e1c1f[_0xdb87('0x99')](-0x1);if(_0x4de425==='/'){_0x4e1c1f=_0x4e1c1f[_0xdb87('0x9a')](0x0,_0x4e1c1f['lastIndexOf'](_0x4de425));}_0x2d7cb2=util[_0xdb87('0x9b')]('%s/api/now/doc/table/schema/',_0x4e1c1f);_0x414e7f=util[_0xdb87('0x9b')](_0xdb87('0x9c'),_0x4e1c1f);_0x4190bd={'user':_0x2004a4['username'],'pass':_0x2004a4[_0xdb87('0x95')]};var _0x3e667a={'method':_0xdb87('0x9d'),'uri':_0x2d7cb2+_0xdb87('0x9e'),'auth':_0x4190bd,'json':!![]};return rp(_0x3e667a);}})[_0xdb87('0x41')](function(_0x1834ec){if(_0x1834ec[_0xdb87('0x9f')]['length']>0x0){_0x2898a2=_0x1834ec['result'];}console[_0xdb87('0xa0')]('incident\x20table\x20objects',_0x2898a2);_0x16e968=[];_0x555823=Object[_0xdb87('0xa1')]([],_0x2898a2);_[_0xdb87('0xa2')](_0x555823,function(_0x18f9e9){return!_0x166a68['includes'](_0x18f9e9[_0xdb87('0x29')]);});_0x555823[_0xdb87('0xa3')](function(_0x46b54d){var _0x38f36f=createFieldObject(_0x414e7f,_0x4190bd,_0x46b54d['internalType'],_0x46b54d['name'],_0x46b54d[_0xdb87('0xa4')],![]);_0x16e968[_0xdb87('0xa5')](_0x38f36f);});return Promise[_0xdb87('0xa6')](_0x16e968);})[_0xdb87('0x41')](function(_0x5a3ceb){_0x32309b=_0x5a3ceb;_0x16d8a8=Object[_0xdb87('0xa1')]([],_0x2898a2);console[_0xdb87('0xa0')]('TCL:\x20_object',_0x2898a2);_['remove'](_0x16d8a8,function(_0x4c7755){return _0x1a5de3[_0xdb87('0xa7')](_0x4c7755[_0xdb87('0x29')]);});console['log'](_0xdb87('0xa8'),_0x16d8a8);_0x16e968=[];_0x16d8a8[_0xdb87('0xa3')](function(_0x2b2083){var _0x15aa72=createFieldObject(_0x414e7f,_0x4190bd,_0x2b2083[_0xdb87('0xa9')],_0x2b2083['name'],_0x2b2083[_0xdb87('0xa4')],!![]);_0x16e968[_0xdb87('0xa5')](_0x15aa72);});return Promise['all'](_0x16e968);})[_0xdb87('0x41')](function(_0x145de0){_0x3519fa=_0x145de0;var _0x4255aa=_0x32309b[_0xdb87('0xaa')](_0x3519fa);return{'count':_0x4255aa[_0xdb87('0x37')],'rows':_0x4255aa};})[_0xdb87('0x41')](respondWithResult(_0x36d9c4,null))['catch'](function(_0x35e859){console[_0xdb87('0xa0')]('ServiceNow\x20error:\x20'+_0x35e859);var _0x194f0c=_0x465db7[_0xdb87('0x30')][_0xdb87('0xab')]?0x1f4:_0x35e859[_0xdb87('0xac')]||0x1f4;logger[_0xdb87('0xad')](_0x35e859[_0xdb87('0x28')]);delete _0x35e859[_0xdb87('0x29')];if(_0x194f0c===0x191){_0x194f0c=0x190;}_0x36d9c4[_0xdb87('0x1c')](_0x194f0c)[_0xdb87('0x2a')](_0x465db7[_0xdb87('0x30')][_0xdb87('0xab')]?{'message':_0xdb87('0xae'),'statusCode':_0x35e859['statusCode']}:_0x35e859);});};function createFieldObject(_0x2c8e21,_0x3f4afd,_0x1ec37e,_0x3c6b47,_0x3b2c83,_0x386cf2){return new Promise(function(_0x459192,_0x5d394b){var _0xca894d={'id':_0x3c6b47,'name':_0x3b2c83,'custom':_0x386cf2};if(_0x1ec37e===_0xdb87('0xaf')){_0xca894d['options']=[{'name':_0xdb87('0xb0'),'value':_0xdb87('0xb1')},{'name':_0xdb87('0xb2'),'value':_0xdb87('0xb3')}];_0x459192(_0xca894d);}else{var _0xefe092={'method':'GET','uri':_0x2c8e21+'sys_choice?sysparm_query=name=incident^element='+_0x3c6b47,'auth':_0x3f4afd,'json':!![]};return rp(_0xefe092)[_0xdb87('0x41')](function(_0x1afe55){var _0xc265a3=[];if(_0x1afe55[_0xdb87('0x9f')][_0xdb87('0x37')]>0x0){_0x1afe55[_0xdb87('0x9f')][_0xdb87('0xa3')](function(_0x3b0580){if(_0x3b0580['inactive']===_0xdb87('0xb3')){var _0x5f0a14={'name':_0x3b0580[_0xdb87('0xa4')],'value':_0x3b0580['value']};_0xc265a3[_0xdb87('0xa5')](_0x5f0a14);}});}_0xca894d[_0xdb87('0x48')]=_0xc265a3;if(_0xca894d[_0xdb87('0x48')][_0xdb87('0x37')]>0x0){_0x459192(_0xca894d);}else{if(_0x386cf2==![]){_0x459192();}else{_0x459192(_0xca894d);}}});}});}
\ No newline at end of file
index 857f2a5..fd94950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','../../config/logger','api'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x802fe1,_0x15435e){_0x802fe1=_0x802fe1-0x0;var _0x3f5fe1=_0x7fbe[_0x802fe1];return _0x3f5fe1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));var integrations=require(_0xe7fb('0x9'));module[_0xe7fb('0xa')]=function(_0x12d1b0,_0x24cd67){return _0x12d1b0[_0xe7fb('0xb')]('ServicenowAccount',attributes,{'tableName':_0xe7fb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x31f0=['./intServicenowAccount.attributes','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0xab5719,_0x34a954){var _0x4f189b=function(_0x5aa411){while(--_0x5aa411){_0xab5719['push'](_0xab5719['shift']());}};_0x4f189b(++_0x34a954);}(_0x31f0,0xb7));var _0x031f=function(_0x356882,_0x35b140){_0x356882=_0x356882-0x0;var _0x4c062b=_0x31f0[_0x356882];return _0x4c062b;};'use strict';var _=require(_0x031f('0x0'));var util=require('util');var logger=require(_0x031f('0x1'))('api');var moment=require(_0x031f('0x2'));var BPromise=require(_0x031f('0x3'));var rp=require(_0x031f('0x4'));var fs=require('fs');var path=require(_0x031f('0x5'));var rimraf=require('rimraf');var config=require(_0x031f('0x6'));var attributes=require(_0x031f('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x56328c,_0x3dc98e){return _0x56328c['define'](_0x031f('0x8'),attributes,{'tableName':_0x031f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ed29fd..a1b03f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc937=['ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','include','map','model','debug','ShowServicenowAccount','lodash','util','bluebird','randomstring'];(function(_0x4b3b1e,_0x164ffd){var _0x10de5b=function(_0x46e083){while(--_0x46e083){_0x4b3b1e['push'](_0x4b3b1e['shift']());}};_0x10de5b(++_0x164ffd);}(_0xc937,0xa1));var _0x7c93=function(_0x1645ea,_0x4565ea){_0x1645ea=_0x1645ea-0x0;var _0x49f897=_0xc937[_0x1645ea];return _0x49f897;};'use strict';var _=require(_0x7c93('0x0'));var util=require(_0x7c93('0x1'));var moment=require('moment');var BPromise=require(_0x7c93('0x2'));var rs=require(_0x7c93('0x3'));var fs=require('fs');var Redis=require(_0x7c93('0x4'));var db=require(_0x7c93('0x5'))['db'];var utils=require(_0x7c93('0x6'));var logger=require(_0x7c93('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c93('0x8'));var client=jayson[_0x7c93('0x9')][_0x7c93('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f6433,_0x2047f6,_0x3c6fc4){return new BPromise(function(_0xdd21f0,_0xeefb48){return client['request'](_0x3f6433,_0x3c6fc4)[_0x7c93('0xb')](function(_0x181e45){logger[_0x7c93('0xc')](_0x7c93('0xd'),_0x2047f6,_0x7c93('0xe'));logger['debug']('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x2047f6,'request\x20sent',JSON[_0x7c93('0xf')](_0x181e45));if(_0x181e45[_0x7c93('0x10')]){if(_0x181e45[_0x7c93('0x10')][_0x7c93('0x11')]===0x1f4){logger[_0x7c93('0x10')](_0x7c93('0xd'),_0x2047f6,_0x181e45['error'][_0x7c93('0x12')]);return _0xeefb48(_0x181e45['error'][_0x7c93('0x12')]);}logger[_0x7c93('0x10')](_0x7c93('0xd'),_0x2047f6,_0x181e45[_0x7c93('0x10')][_0x7c93('0x12')]);return _0xdd21f0(_0x181e45[_0x7c93('0x10')][_0x7c93('0x12')]);}else{logger[_0x7c93('0xc')](_0x7c93('0xd'),_0x2047f6,_0x7c93('0xe'));_0xdd21f0(_0x181e45[_0x7c93('0x13')][_0x7c93('0x12')]);}})[_0x7c93('0x14')](function(_0x319533){logger[_0x7c93('0x10')](_0x7c93('0xd'),_0x2047f6,_0x319533);_0xeefb48(_0x319533);});});}exports[_0x7c93('0x15')]=function(_0x263d8e){var _0x459044=this;return new Promise(function(_0x3ab15f,_0x19e4a8){return db[_0x7c93('0x16')][_0x7c93('0x17')]({'raw':_0x263d8e[_0x7c93('0x18')]?_0x263d8e[_0x7c93('0x18')][_0x7c93('0x19')]===undefined?!![]:![]:!![],'where':_0x263d8e['options']?_0x263d8e[_0x7c93('0x18')][_0x7c93('0x1a')]||null:null,'attributes':_0x263d8e[_0x7c93('0x18')]?_0x263d8e[_0x7c93('0x18')][_0x7c93('0x1b')]||null:null,'limit':_0x263d8e[_0x7c93('0x18')]?_0x263d8e[_0x7c93('0x18')]['limit']||null:null,'include':_0x263d8e['options']?_0x263d8e[_0x7c93('0x18')][_0x7c93('0x1c')]?_[_0x7c93('0x1d')](_0x263d8e['options'][_0x7c93('0x1c')],function(_0x1657c3){return{'model':db[_0x1657c3['model']],'as':_0x1657c3['as'],'attributes':_0x1657c3['attributes'],'include':_0x1657c3[_0x7c93('0x1c')]?_[_0x7c93('0x1d')](_0x1657c3['include'],function(_0x5ddfbc){return{'model':db[_0x5ddfbc[_0x7c93('0x1e')]],'as':_0x5ddfbc['as'],'attributes':_0x5ddfbc['attributes'],'include':_0x5ddfbc[_0x7c93('0x1c')]?_[_0x7c93('0x1d')](_0x5ddfbc[_0x7c93('0x1c')],function(_0x24e2f2){return{'model':db[_0x24e2f2[_0x7c93('0x1e')]],'as':_0x24e2f2['as'],'attributes':_0x24e2f2[_0x7c93('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x7c93('0xb')](function(_0x4138bb){logger['info']('GetServicenowAccount',_0x263d8e);logger[_0x7c93('0x1f')]('GetServicenowAccount',_0x263d8e,JSON['stringify'](_0x4138bb));_0x3ab15f(_0x4138bb);})['catch'](function(_0x4adada){logger[_0x7c93('0x10')]('GetServicenowAccount',_0x4adada['message'],_0x263d8e);_0x19e4a8(_0x459044['error'](0x1f4,_0x4adada['message']));});});};exports[_0x7c93('0x20')]=function(_0x2de8de){var _0x3eb127=this;return new Promise(function(_0x2a1b29,_0x457869){return db[_0x7c93('0x16')]['find']({'raw':_0x2de8de[_0x7c93('0x18')]?_0x2de8de[_0x7c93('0x18')][_0x7c93('0x19')]===undefined?!![]:![]:!![],'where':_0x2de8de[_0x7c93('0x18')]?_0x2de8de[_0x7c93('0x18')][_0x7c93('0x1a')]||null:null,'attributes':_0x2de8de[_0x7c93('0x18')]?_0x2de8de[_0x7c93('0x18')][_0x7c93('0x1b')]||null:null,'include':_0x2de8de[_0x7c93('0x18')]?_0x2de8de[_0x7c93('0x18')][_0x7c93('0x1c')]?_[_0x7c93('0x1d')](_0x2de8de[_0x7c93('0x18')][_0x7c93('0x1c')],function(_0xe27b48){return{'model':db[_0xe27b48[_0x7c93('0x1e')]],'as':_0xe27b48['as'],'attributes':_0xe27b48[_0x7c93('0x1b')],'include':_0xe27b48['include']?_[_0x7c93('0x1d')](_0xe27b48[_0x7c93('0x1c')],function(_0x60957d){return{'model':db[_0x60957d[_0x7c93('0x1e')]],'as':_0x60957d['as'],'attributes':_0x60957d[_0x7c93('0x1b')],'include':_0x60957d[_0x7c93('0x1c')]?_[_0x7c93('0x1d')](_0x60957d[_0x7c93('0x1c')],function(_0x26bd37){return{'model':db[_0x26bd37[_0x7c93('0x1e')]],'as':_0x26bd37['as'],'attributes':_0x26bd37[_0x7c93('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x7c93('0xb')](function(_0x2b13ab){logger[_0x7c93('0xc')](_0x7c93('0x20'),_0x2de8de);logger['debug'](_0x7c93('0x20'),_0x2de8de,JSON[_0x7c93('0xf')](_0x2b13ab));_0x2a1b29(_0x2b13ab);})[_0x7c93('0x14')](function(_0x4282ec){logger['error'](_0x7c93('0x20'),_0x4282ec['message'],_0x2de8de);_0x457869(_0x3eb127[_0x7c93('0x10')](0x1f4,_0x4282ec[_0x7c93('0x12')]));});});};
\ No newline at end of file
+var _0xa055=['client','request','then','info','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','ServicenowAccount,\x20%s,\x20%s','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','include','map','model','stringify','find','ShowServicenowAccount','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise'];(function(_0x559a80,_0x3d193d){var _0x42f555=function(_0x24e596){while(--_0x24e596){_0x559a80['push'](_0x559a80['shift']());}};_0x42f555(++_0x3d193d);}(_0xa055,0x1b9));var _0x5a05=function(_0x3050ca,_0x3e36b0){_0x3050ca=_0x3050ca-0x0;var _0x1eed1d=_0xa055[_0x3050ca];return _0x1eed1d;};'use strict';var _=require(_0x5a05('0x0'));var util=require(_0x5a05('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5a05('0x2'));var fs=require('fs');var Redis=require(_0x5a05('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5a05('0x4'));var logger=require(_0x5a05('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5a05('0x6'));var client=jayson[_0x5a05('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1169ec,_0x5be986,_0x483260){return new BPromise(function(_0x30e253,_0x4983b3){return client[_0x5a05('0x8')](_0x1169ec,_0x483260)[_0x5a05('0x9')](function(_0xeb138e){logger[_0x5a05('0xa')]('ServicenowAccount,\x20%s,\x20%s',_0x5be986,_0x5a05('0xb'));logger[_0x5a05('0xc')](_0x5a05('0xd'),_0x5be986,_0x5a05('0xb'),JSON['stringify'](_0xeb138e));if(_0xeb138e[_0x5a05('0xe')]){if(_0xeb138e[_0x5a05('0xe')]['code']===0x1f4){logger[_0x5a05('0xe')](_0x5a05('0xf'),_0x5be986,_0xeb138e['error'][_0x5a05('0x10')]);return _0x4983b3(_0xeb138e[_0x5a05('0xe')]['message']);}logger[_0x5a05('0xe')](_0x5a05('0xf'),_0x5be986,_0xeb138e['error']['message']);return _0x30e253(_0xeb138e[_0x5a05('0xe')][_0x5a05('0x10')]);}else{logger['info']('ServicenowAccount,\x20%s,\x20%s',_0x5be986,_0x5a05('0xb'));_0x30e253(_0xeb138e[_0x5a05('0x11')]['message']);}})[_0x5a05('0x12')](function(_0x3477f4){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x5be986,_0x3477f4);_0x4983b3(_0x3477f4);});});}exports[_0x5a05('0x13')]=function(_0x54ec6e){var _0x1de527=this;return new Promise(function(_0x3db1be,_0x18f3cb){return db[_0x5a05('0x14')][_0x5a05('0x15')]({'raw':_0x54ec6e[_0x5a05('0x16')]?_0x54ec6e['options'][_0x5a05('0x17')]===undefined?!![]:![]:!![],'where':_0x54ec6e[_0x5a05('0x16')]?_0x54ec6e[_0x5a05('0x16')][_0x5a05('0x18')]||null:null,'attributes':_0x54ec6e[_0x5a05('0x16')]?_0x54ec6e['options'][_0x5a05('0x19')]||null:null,'limit':_0x54ec6e[_0x5a05('0x16')]?_0x54ec6e['options']['limit']||null:null,'include':_0x54ec6e['options']?_0x54ec6e[_0x5a05('0x16')][_0x5a05('0x1a')]?_['map'](_0x54ec6e[_0x5a05('0x16')][_0x5a05('0x1a')],function(_0x69bde5){return{'model':db[_0x69bde5['model']],'as':_0x69bde5['as'],'attributes':_0x69bde5[_0x5a05('0x19')],'include':_0x69bde5['include']?_[_0x5a05('0x1b')](_0x69bde5['include'],function(_0x28f423){return{'model':db[_0x28f423[_0x5a05('0x1c')]],'as':_0x28f423['as'],'attributes':_0x28f423[_0x5a05('0x19')],'include':_0x28f423['include']?_[_0x5a05('0x1b')](_0x28f423[_0x5a05('0x1a')],function(_0x1c162f){return{'model':db[_0x1c162f[_0x5a05('0x1c')]],'as':_0x1c162f['as'],'attributes':_0x1c162f[_0x5a05('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5a05('0x9')](function(_0x5c51f7){logger['info'](_0x5a05('0x13'),_0x54ec6e);logger['debug'](_0x5a05('0x13'),_0x54ec6e,JSON[_0x5a05('0x1d')](_0x5c51f7));_0x3db1be(_0x5c51f7);})[_0x5a05('0x12')](function(_0x268c7a){logger[_0x5a05('0xe')]('GetServicenowAccount',_0x268c7a[_0x5a05('0x10')],_0x54ec6e);_0x18f3cb(_0x1de527[_0x5a05('0xe')](0x1f4,_0x268c7a[_0x5a05('0x10')]));});});};exports['ShowServicenowAccount']=function(_0x12a9fb){var _0x56a650=this;return new Promise(function(_0x54fd69,_0x5dffc1){return db[_0x5a05('0x14')][_0x5a05('0x1e')]({'raw':_0x12a9fb[_0x5a05('0x16')]?_0x12a9fb[_0x5a05('0x16')][_0x5a05('0x17')]===undefined?!![]:![]:!![],'where':_0x12a9fb[_0x5a05('0x16')]?_0x12a9fb[_0x5a05('0x16')][_0x5a05('0x18')]||null:null,'attributes':_0x12a9fb['options']?_0x12a9fb['options'][_0x5a05('0x19')]||null:null,'include':_0x12a9fb[_0x5a05('0x16')]?_0x12a9fb['options']['include']?_[_0x5a05('0x1b')](_0x12a9fb[_0x5a05('0x16')][_0x5a05('0x1a')],function(_0x12f825){return{'model':db[_0x12f825['model']],'as':_0x12f825['as'],'attributes':_0x12f825[_0x5a05('0x19')],'include':_0x12f825['include']?_[_0x5a05('0x1b')](_0x12f825['include'],function(_0x38cefe){return{'model':db[_0x38cefe[_0x5a05('0x1c')]],'as':_0x38cefe['as'],'attributes':_0x38cefe[_0x5a05('0x19')],'include':_0x38cefe[_0x5a05('0x1a')]?_['map'](_0x38cefe[_0x5a05('0x1a')],function(_0x40e47d){return{'model':db[_0x40e47d[_0x5a05('0x1c')]],'as':_0x40e47d['as'],'attributes':_0x40e47d[_0x5a05('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5a05('0x9')](function(_0x6e323f){logger['info'](_0x5a05('0x1f'),_0x12a9fb);logger[_0x5a05('0xc')](_0x5a05('0x1f'),_0x12a9fb,JSON[_0x5a05('0x1d')](_0x6e323f));_0x54fd69(_0x6e323f);})['catch'](function(_0x28231d){logger[_0x5a05('0xe')](_0x5a05('0x1f'),_0x28231d['message'],_0x12a9fb);_0x5dffc1(_0x56a650[_0x5a05('0xe')](0x1f4,_0x28231d['message']));});});};
\ No newline at end of file
index 52ab848..2f2808c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac6=['destroy','exports','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','post','put'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6ac6,0x1c2));var _0x66ac=function(_0x292dba,_0x42ac3e){_0x292dba=_0x292dba-0x0;var _0x475439=_0x6ac6[_0x292dba];return _0x475439;};'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['Router']();var fs_extra=require(_0x66ac('0x0'));var auth=require('../../components/auth/service');var interaction=require(_0x66ac('0x1'));var config=require(_0x66ac('0x2'));var controller=require(_0x66ac('0x3'));router[_0x66ac('0x4')]('/',auth[_0x66ac('0x5')](),controller['index']);router[_0x66ac('0x4')](_0x66ac('0x6'),auth[_0x66ac('0x5')](),controller[_0x66ac('0x7')]);router[_0x66ac('0x4')](_0x66ac('0x8'),auth[_0x66ac('0x5')](),controller['getFields']);router[_0x66ac('0x4')](_0x66ac('0x9'),auth[_0x66ac('0x5')](),controller[_0x66ac('0xa')]);router[_0x66ac('0x4')](_0x66ac('0xb'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x66ac('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x66ac('0xd')](_0x66ac('0x6'),auth[_0x66ac('0x5')](),controller['update']);router['delete']('/:id',auth[_0x66ac('0x5')](),controller[_0x66ac('0xe')]);module[_0x66ac('0xf')]=router;
\ No newline at end of file
+var _0x0dc7=['/:id','show','/:id/fields','getFields','/:id/subjects','getDescriptions','post','create','put','delete','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowConfiguration.controller','isAuthenticated','index','get'];(function(_0x277c64,_0x5a4d3b){var _0x24ce40=function(_0x4aaff9){while(--_0x4aaff9){_0x277c64['push'](_0x277c64['shift']());}};_0x24ce40(++_0x5a4d3b);}(_0x0dc7,0x186));var _0x70dc=function(_0x240261,_0x4fe66c){_0x240261=_0x240261-0x0;var _0x45c332=_0x0dc7[_0x240261];return _0x45c332;};'use strict';var multer=require(_0x70dc('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x70dc('0x1'));var express=require('express');var router=express[_0x70dc('0x2')]();var fs_extra=require(_0x70dc('0x3'));var auth=require(_0x70dc('0x4'));var interaction=require(_0x70dc('0x5'));var config=require('../../config/environment');var controller=require(_0x70dc('0x6'));router['get']('/',auth[_0x70dc('0x7')](),controller[_0x70dc('0x8')]);router[_0x70dc('0x9')](_0x70dc('0xa'),auth['isAuthenticated'](),controller[_0x70dc('0xb')]);router[_0x70dc('0x9')](_0x70dc('0xc'),auth['isAuthenticated'](),controller[_0x70dc('0xd')]);router[_0x70dc('0x9')](_0x70dc('0xe'),auth[_0x70dc('0x7')](),controller['getSubjects']);router[_0x70dc('0x9')]('/:id/descriptions',auth[_0x70dc('0x7')](),controller[_0x70dc('0xf')]);router[_0x70dc('0x10')]('/',auth['isAuthenticated'](),controller[_0x70dc('0x11')]);router[_0x70dc('0x12')](_0x70dc('0xa'),auth[_0x70dc('0x7')](),controller['update']);router[_0x70dc('0x13')](_0x70dc('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 28d96f3..3865cb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ab9=['sequelize','exports','STRING'];(function(_0x108d63,_0x14491b){var _0x51d6df=function(_0x595598){while(--_0x595598){_0x108d63['push'](_0x108d63['shift']());}};_0x51d6df(++_0x14491b);}(_0x8ab9,0x96));var _0x98ab=function(_0x4fd153,_0x4627a5){_0x4fd153=_0x4fd153-0x0;var _0x399aa9=_0x8ab9[_0x4fd153];return _0x399aa9;};'use strict';var Sequelize=require(_0x98ab('0x0'));module[_0x98ab('0x1')]={'name':{'type':Sequelize[_0x98ab('0x2')]},'description':{'type':Sequelize[_0x98ab('0x2')]}};
\ No newline at end of file
+var _0x1948=['STRING','exports'];(function(_0x232cf2,_0x4ffb79){var _0x463cec=function(_0x581b60){while(--_0x581b60){_0x232cf2['push'](_0x232cf2['shift']());}};_0x463cec(++_0x4ffb79);}(_0x1948,0x9d));var _0x8194=function(_0x43f362,_0x51990b){_0x43f362=_0x43f362-0x0;var _0x5becc7=_0x1948[_0x43f362];return _0x5becc7;};'use strict';var Sequelize=require('sequelize');module[_0x8194('0x0')]={'name':{'type':Sequelize[_0x8194('0x1')]},'description':{'type':Sequelize[_0x8194('0x1')]}};
\ No newline at end of file
index 634067a..a048c12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c61=['where','merge','VIRTUAL','ServicenowConfiguration','includeAll','findAll','rows','catch','params','keys','include','options','find','create','body','update','getFields','findOne','ServicenowField','order','sort','length','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','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','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','name','send','index','rawAttributes','fieldName','type','key','map','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','pick','filter'];(function(_0x204eb7,_0x4974c3){var _0x37e444=function(_0x390613){while(--_0x390613){_0x204eb7['push'](_0x204eb7['shift']());}};_0x37e444(++_0x4974c3);}(_0x8c61,0x160));var _0x18c6=function(_0x3b0e40,_0x1a59b1){_0x3b0e40=_0x3b0e40-0x0;var _0x5018e6=_0x8c61[_0x3b0e40];return _0x5018e6;};'use strict';var emlformat=require(_0x18c6('0x0'));var rimraf=require(_0x18c6('0x1'));var zipdir=require(_0x18c6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x18c6('0x3'));var moment=require(_0x18c6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x18c6('0x5'));var util=require(_0x18c6('0x6'));var path=require(_0x18c6('0x7'));var sox=require(_0x18c6('0x8'));var csv=require('to-csv');var ejs=require(_0x18c6('0x9'));var fs=require('fs');var fs_extra=require(_0x18c6('0xa'));var _=require(_0x18c6('0xb'));var squel=require(_0x18c6('0xc'));var crypto=require(_0x18c6('0xd'));var jsforce=require(_0x18c6('0xe'));var deskjs=require(_0x18c6('0xf'));var toCsv=require('to-csv');var querystring=require(_0x18c6('0x10'));var Papa=require(_0x18c6('0x11'));var Redis=require(_0x18c6('0x12'));var authService=require(_0x18c6('0x13'));var qs=require(_0x18c6('0x14'));var as=require(_0x18c6('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x18c6('0x16'));var utils=require(_0x18c6('0x17'));var config=require(_0x18c6('0x18'));var licenseUtil=require(_0x18c6('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x120fc6,_0x22d177){_0x22d177=_0x22d177||0xcc;return function(_0x15a619){if(_0x15a619){return _0x120fc6[_0x18c6('0x1a')](_0x22d177);}return _0x120fc6['status'](_0x22d177)[_0x18c6('0x1b')]();};}function respondWithResult(_0x3d15f1,_0x546b23){_0x546b23=_0x546b23||0xc8;return function(_0x26cc90){if(_0x26cc90){return _0x3d15f1[_0x18c6('0x1c')](_0x546b23)[_0x18c6('0x1d')](_0x26cc90);}};}function respondWithFilteredResult(_0x4f829a,_0x350260){return function(_0x4922e3){if(_0x4922e3){var _0x55da49=typeof _0x350260[_0x18c6('0x1e')]==='undefined'&&typeof _0x350260['limit']===_0x18c6('0x1f');var _0x55aea9=_0x4922e3[_0x18c6('0x20')];var _0x5a95b2=_0x55da49?0x0:_0x350260['offset'];var _0x100a52=_0x55da49?_0x4922e3['count']:_0x350260['offset']+_0x350260[_0x18c6('0x21')];var _0x3f7690;if(_0x100a52>=_0x55aea9){_0x100a52=_0x55aea9;_0x3f7690=0xc8;}else{_0x3f7690=0xce;}_0x4f829a['status'](_0x3f7690);return _0x4f829a['set'](_0x18c6('0x22'),_0x5a95b2+'-'+_0x100a52+'/'+_0x55aea9)[_0x18c6('0x1d')](_0x4922e3);}return null;};}function patchUpdates(_0x2155d0){return function(_0x1143a0){try{jsonpatch[_0x18c6('0x23')](_0x1143a0,_0x2155d0,!![]);}catch(_0x3c01b8){return BPromise[_0x18c6('0x24')](_0x3c01b8);}return _0x1143a0[_0x18c6('0x25')]();};}function saveUpdates(_0x2d3a81,_0x1f52b9){return function(_0xb4e291){if(_0xb4e291){return _0xb4e291['update'](_0x2d3a81)[_0x18c6('0x26')](function(_0x296c6a){return _0x296c6a;});}return null;};}function removeEntity(_0x57995e,_0x1bcb08){return function(_0x25ce2b){if(_0x25ce2b){return _0x25ce2b[_0x18c6('0x27')]()[_0x18c6('0x26')](function(){_0x57995e[_0x18c6('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7b8ef2,_0x47a049){return function(_0x292571){if(!_0x292571){_0x7b8ef2[_0x18c6('0x1a')](0x194);}return _0x292571;};}function handleError(_0x363187,_0x39407f){_0x39407f=_0x39407f||0x1f4;return function(_0x430ef2){logger['error'](_0x430ef2['stack']);if(_0x430ef2[_0x18c6('0x28')]){delete _0x430ef2[_0x18c6('0x28')];}_0x363187['status'](_0x39407f)[_0x18c6('0x29')](_0x430ef2);};}exports[_0x18c6('0x2a')]=function(_0x5db3dc,_0x5f1bee){var _0xd5d52b={},_0x3e8888={},_0x4c4c4b={'count':0x0,'rows':[]};var _0x175e39=_['map'](db['ServicenowConfiguration'][_0x18c6('0x2b')],function(_0x56779f){return{'name':_0x56779f[_0x18c6('0x2c')],'type':_0x56779f[_0x18c6('0x2d')][_0x18c6('0x2e')]};});_0x3e8888['model']=_[_0x18c6('0x2f')](_0x175e39,_0x18c6('0x28'));_0x3e8888[_0x18c6('0x30')]=_['keys'](_0x5db3dc['query']);_0x3e8888[_0x18c6('0x31')]=_[_0x18c6('0x32')](_0x3e8888[_0x18c6('0x33')],_0x3e8888[_0x18c6('0x30')]);_0xd5d52b[_0x18c6('0x34')]=_[_0x18c6('0x32')](_0x3e8888[_0x18c6('0x33')],qs[_0x18c6('0x35')](_0x5db3dc['query'][_0x18c6('0x35')]));_0xd5d52b[_0x18c6('0x34')]=_0xd5d52b[_0x18c6('0x34')]['length']?_0xd5d52b[_0x18c6('0x34')]:_0x3e8888[_0x18c6('0x33')];if(!_0x5db3dc['query'][_0x18c6('0x36')](_0x18c6('0x37'))){_0xd5d52b['limit']=qs[_0x18c6('0x21')](_0x5db3dc[_0x18c6('0x30')][_0x18c6('0x21')]);_0xd5d52b['offset']=qs[_0x18c6('0x1e')](_0x5db3dc['query']['offset']);}_0xd5d52b['order']=qs['sort'](_0x5db3dc[_0x18c6('0x30')]['sort']);_0xd5d52b['where']=qs[_0x18c6('0x31')](_[_0x18c6('0x38')](_0x5db3dc[_0x18c6('0x30')],_0x3e8888[_0x18c6('0x31')]),_0x175e39);if(_0x5db3dc[_0x18c6('0x30')][_0x18c6('0x39')]){_0xd5d52b[_0x18c6('0x3a')]=_[_0x18c6('0x3b')](_0xd5d52b[_0x18c6('0x3a')],{'$or':_['map'](_0x175e39,function(_0x201ff3){if(_0x201ff3[_0x18c6('0x2d')]!==_0x18c6('0x3c')){var _0x28368e={};_0x28368e[_0x201ff3['name']]={'$like':'%'+_0x5db3dc[_0x18c6('0x30')][_0x18c6('0x39')]+'%'};return _0x28368e;}})});}_0xd5d52b=_[_0x18c6('0x3b')]({},_0xd5d52b,_0x5db3dc['options']);var _0x400cac={'where':_0xd5d52b[_0x18c6('0x3a')]};return db[_0x18c6('0x3d')][_0x18c6('0x20')](_0x400cac)['then'](function(_0x98c860){_0x4c4c4b[_0x18c6('0x20')]=_0x98c860;if(_0x5db3dc['query'][_0x18c6('0x3e')]){_0xd5d52b['include']=[{'all':!![]}];}return db[_0x18c6('0x3d')][_0x18c6('0x3f')](_0xd5d52b);})[_0x18c6('0x26')](function(_0x3d3c84){_0x4c4c4b[_0x18c6('0x40')]=_0x3d3c84;return _0x4c4c4b;})[_0x18c6('0x26')](respondWithFilteredResult(_0x5f1bee,_0xd5d52b))[_0x18c6('0x41')](handleError(_0x5f1bee,null));};exports['show']=function(_0x35b837,_0x1a1b68){var _0x29761a={'raw':![],'where':{'id':_0x35b837[_0x18c6('0x42')]['id']}},_0x4a5571={};_0x4a5571[_0x18c6('0x33')]=_[_0x18c6('0x43')](db[_0x18c6('0x3d')][_0x18c6('0x2b')]);_0x4a5571[_0x18c6('0x30')]=_[_0x18c6('0x43')](_0x35b837['query']);_0x4a5571['filters']=_['intersection'](_0x4a5571[_0x18c6('0x33')],_0x4a5571['query']);_0x29761a[_0x18c6('0x34')]=_[_0x18c6('0x32')](_0x4a5571[_0x18c6('0x33')],qs['fields'](_0x35b837[_0x18c6('0x30')]['fields']));_0x29761a[_0x18c6('0x34')]=_0x29761a[_0x18c6('0x34')]['length']?_0x29761a['attributes']:_0x4a5571[_0x18c6('0x33')];if(_0x35b837[_0x18c6('0x30')][_0x18c6('0x3e')]){_0x29761a[_0x18c6('0x44')]=[{'all':!![]}];}_0x29761a=_[_0x18c6('0x3b')]({},_0x29761a,_0x35b837[_0x18c6('0x45')]);return db[_0x18c6('0x3d')][_0x18c6('0x46')](_0x29761a)[_0x18c6('0x26')](handleEntityNotFound(_0x1a1b68,null))['then'](respondWithResult(_0x1a1b68,null))[_0x18c6('0x41')](handleError(_0x1a1b68,null));};exports[_0x18c6('0x47')]=function(_0x2b00c5,_0x48e534){return db[_0x18c6('0x3d')]['create'](_0x2b00c5[_0x18c6('0x48')],{})['then'](respondWithResult(_0x48e534,0xc9))[_0x18c6('0x41')](handleError(_0x48e534,null));};exports[_0x18c6('0x49')]=function(_0xb05a75,_0x4e6926){if(_0xb05a75[_0x18c6('0x48')]['id']){delete _0xb05a75['body']['id'];}return db[_0x18c6('0x3d')]['find']({'where':{'id':_0xb05a75['params']['id']}})['then'](handleEntityNotFound(_0x4e6926,null))['then'](saveUpdates(_0xb05a75[_0x18c6('0x48')],null))[_0x18c6('0x26')](respondWithResult(_0x4e6926,null))[_0x18c6('0x41')](handleError(_0x4e6926,null));};exports['destroy']=function(_0x33a7e7,_0x507ce8){return db[_0x18c6('0x3d')][_0x18c6('0x46')]({'where':{'id':_0x33a7e7[_0x18c6('0x42')]['id']}})['then'](handleEntityNotFound(_0x507ce8,null))[_0x18c6('0x26')](removeEntity(_0x507ce8,null))[_0x18c6('0x41')](handleError(_0x507ce8,null));};exports[_0x18c6('0x4a')]=function(_0x32ae22,_0x5c2522,_0x391838){var _0x220b05={};var _0x28c985={};var _0x53554e;var _0x3f4b9c;return db['ServicenowConfiguration'][_0x18c6('0x4b')]({'where':{'id':_0x32ae22[_0x18c6('0x42')]['id']}})[_0x18c6('0x26')](handleEntityNotFound(_0x5c2522,null))[_0x18c6('0x26')](function(_0x275ec4){if(_0x275ec4){_0x53554e=_0x275ec4;_0x28c985['model']=_['keys'](db[_0x18c6('0x4c')]['rawAttributes']);_0x28c985[_0x18c6('0x30')]=_[_0x18c6('0x43')](_0x32ae22[_0x18c6('0x30')]);_0x28c985[_0x18c6('0x31')]=_[_0x18c6('0x32')](_0x28c985[_0x18c6('0x33')],_0x28c985['query']);_0x220b05[_0x18c6('0x34')]=_[_0x18c6('0x32')](_0x28c985[_0x18c6('0x33')],qs[_0x18c6('0x35')](_0x32ae22[_0x18c6('0x30')][_0x18c6('0x35')]));_0x220b05[_0x18c6('0x34')]=_0x220b05[_0x18c6('0x34')]['length']?_0x220b05['attributes']:_0x28c985['model'];_0x220b05[_0x18c6('0x4d')]=qs[_0x18c6('0x4e')](_0x32ae22['query'][_0x18c6('0x4e')]);_0x220b05['where']=qs[_0x18c6('0x31')](_[_0x18c6('0x38')](_0x32ae22[_0x18c6('0x30')],_0x28c985[_0x18c6('0x31')]));if(_0x32ae22[_0x18c6('0x30')]['filter']){_0x220b05['where']=_[_0x18c6('0x3b')](_0x220b05['where'],{'$or':_['map'](_0x220b05[_0x18c6('0x34')],function(_0x27e565){var _0x3c197d={};_0x3c197d[_0x27e565]={'$like':'%'+_0x32ae22[_0x18c6('0x30')]['filter']+'%'};return _0x3c197d;})});}_0x220b05=_[_0x18c6('0x3b')]({},_0x220b05,_0x32ae22[_0x18c6('0x45')]);return _0x53554e[_0x18c6('0x4a')](_0x220b05);}})['then'](function(_0x28e999){if(_0x28e999){_0x3f4b9c=_0x28e999[_0x18c6('0x4f')];if(!_0x32ae22[_0x18c6('0x30')][_0x18c6('0x36')]('nolimit')){_0x220b05['limit']=qs[_0x18c6('0x21')](_0x32ae22['query'][_0x18c6('0x21')]);_0x220b05[_0x18c6('0x1e')]=qs['offset'](_0x32ae22['query'][_0x18c6('0x1e')]);}return _0x53554e[_0x18c6('0x4a')](_0x220b05);}})['then'](function(_0x55c689){if(_0x55c689){return _0x55c689?{'count':_0x3f4b9c,'rows':_0x55c689}:null;}})['then'](respondWithResult(_0x5c2522,null))[_0x18c6('0x41')](handleError(_0x5c2522,null));};exports[_0x18c6('0x50')]=function(_0x12da99,_0x3fcd60,_0x161140){var _0x5be8a0={};var _0x179607={};var _0x587ce2;var _0x30b19d;return db[_0x18c6('0x3d')][_0x18c6('0x4b')]({'where':{'id':_0x12da99[_0x18c6('0x42')]['id']}})['then'](handleEntityNotFound(_0x3fcd60,null))[_0x18c6('0x26')](function(_0x294213){if(_0x294213){_0x587ce2=_0x294213;_0x179607[_0x18c6('0x33')]=_[_0x18c6('0x43')](db[_0x18c6('0x4c')][_0x18c6('0x2b')]);_0x179607[_0x18c6('0x30')]=_[_0x18c6('0x43')](_0x12da99[_0x18c6('0x30')]);_0x179607['filters']=_[_0x18c6('0x32')](_0x179607[_0x18c6('0x33')],_0x179607[_0x18c6('0x30')]);_0x5be8a0[_0x18c6('0x34')]=_[_0x18c6('0x32')](_0x179607[_0x18c6('0x33')],qs[_0x18c6('0x35')](_0x12da99['query']['fields']));_0x5be8a0[_0x18c6('0x34')]=_0x5be8a0['attributes'][_0x18c6('0x4f')]?_0x5be8a0[_0x18c6('0x34')]:_0x179607['model'];_0x5be8a0[_0x18c6('0x4d')]=qs[_0x18c6('0x4e')](_0x12da99[_0x18c6('0x30')][_0x18c6('0x4e')]);_0x5be8a0[_0x18c6('0x3a')]=qs[_0x18c6('0x31')](_[_0x18c6('0x38')](_0x12da99[_0x18c6('0x30')],_0x179607['filters']));if(_0x12da99['query'][_0x18c6('0x39')]){_0x5be8a0[_0x18c6('0x3a')]=_[_0x18c6('0x3b')](_0x5be8a0[_0x18c6('0x3a')],{'$or':_[_0x18c6('0x2f')](_0x5be8a0[_0x18c6('0x34')],function(_0x595af5){var _0x263463={};_0x263463[_0x595af5]={'$like':'%'+_0x12da99['query'][_0x18c6('0x39')]+'%'};return _0x263463;})});}_0x5be8a0=_[_0x18c6('0x3b')]({},_0x5be8a0,_0x12da99['options']);return _0x587ce2[_0x18c6('0x50')](_0x5be8a0);}})['then'](function(_0x31b6f2){if(_0x31b6f2){_0x30b19d=_0x31b6f2[_0x18c6('0x4f')];if(!_0x12da99[_0x18c6('0x30')][_0x18c6('0x36')](_0x18c6('0x37'))){_0x5be8a0['limit']=qs[_0x18c6('0x21')](_0x12da99[_0x18c6('0x30')][_0x18c6('0x21')]);_0x5be8a0[_0x18c6('0x1e')]=qs[_0x18c6('0x1e')](_0x12da99[_0x18c6('0x30')][_0x18c6('0x1e')]);}return _0x587ce2[_0x18c6('0x50')](_0x5be8a0);}})[_0x18c6('0x26')](function(_0x254f5f){if(_0x254f5f){return _0x254f5f?{'count':_0x30b19d,'rows':_0x254f5f}:null;}})[_0x18c6('0x26')](respondWithResult(_0x3fcd60,null))[_0x18c6('0x41')](handleError(_0x3fcd60,null));};exports['getDescriptions']=function(_0x377f43,_0x84e2e7,_0x12b846){var _0x345e2d={};var _0x388105={};var _0x158995;var _0x2ceea8;return db[_0x18c6('0x3d')][_0x18c6('0x4b')]({'where':{'id':_0x377f43[_0x18c6('0x42')]['id']}})[_0x18c6('0x26')](handleEntityNotFound(_0x84e2e7,null))[_0x18c6('0x26')](function(_0x2d3427){if(_0x2d3427){_0x158995=_0x2d3427;_0x388105[_0x18c6('0x33')]=_[_0x18c6('0x43')](db[_0x18c6('0x4c')]['rawAttributes']);_0x388105[_0x18c6('0x30')]=_[_0x18c6('0x43')](_0x377f43[_0x18c6('0x30')]);_0x388105[_0x18c6('0x31')]=_['intersection'](_0x388105[_0x18c6('0x33')],_0x388105['query']);_0x345e2d[_0x18c6('0x34')]=_['intersection'](_0x388105['model'],qs[_0x18c6('0x35')](_0x377f43['query'][_0x18c6('0x35')]));_0x345e2d[_0x18c6('0x34')]=_0x345e2d[_0x18c6('0x34')]['length']?_0x345e2d[_0x18c6('0x34')]:_0x388105['model'];_0x345e2d['order']=qs['sort'](_0x377f43[_0x18c6('0x30')][_0x18c6('0x4e')]);_0x345e2d[_0x18c6('0x3a')]=qs[_0x18c6('0x31')](_[_0x18c6('0x38')](_0x377f43[_0x18c6('0x30')],_0x388105[_0x18c6('0x31')]));if(_0x377f43['query'][_0x18c6('0x39')]){_0x345e2d[_0x18c6('0x3a')]=_[_0x18c6('0x3b')](_0x345e2d['where'],{'$or':_['map'](_0x345e2d['attributes'],function(_0x41734a){var _0x438b62={};_0x438b62[_0x41734a]={'$like':'%'+_0x377f43[_0x18c6('0x30')]['filter']+'%'};return _0x438b62;})});}_0x345e2d=_[_0x18c6('0x3b')]({},_0x345e2d,_0x377f43['options']);return _0x158995[_0x18c6('0x51')](_0x345e2d);}})[_0x18c6('0x26')](function(_0x21217a){if(_0x21217a){_0x2ceea8=_0x21217a[_0x18c6('0x4f')];if(!_0x377f43[_0x18c6('0x30')][_0x18c6('0x36')]('nolimit')){_0x345e2d['limit']=qs['limit'](_0x377f43[_0x18c6('0x30')][_0x18c6('0x21')]);_0x345e2d[_0x18c6('0x1e')]=qs[_0x18c6('0x1e')](_0x377f43[_0x18c6('0x30')][_0x18c6('0x1e')]);}return _0x158995[_0x18c6('0x51')](_0x345e2d);}})[_0x18c6('0x26')](function(_0x4898e0){if(_0x4898e0){return _0x4898e0?{'count':_0x2ceea8,'rows':_0x4898e0}:null;}})['then'](respondWithResult(_0x84e2e7,null))[_0x18c6('0x41')](handleError(_0x84e2e7,null));};
\ No newline at end of file
+var _0x4661=['hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','update','body','destroy','getFields','findOne','ServicenowField','options','nolimit','getSubjects','getDescriptions','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','name','index','map','ServicenowConfiguration','key','model','query','keys','intersection','fields','length','attributes'];(function(_0x134fa6,_0x5b4e96){var _0x31fd78=function(_0x1cb9bb){while(--_0x1cb9bb){_0x134fa6['push'](_0x134fa6['shift']());}};_0x31fd78(++_0x5b4e96);}(_0x4661,0x68));var _0x1466=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x4661[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1466('0x0'));var rp=require(_0x1466('0x1'));var moment=require(_0x1466('0x2'));var BPromise=require(_0x1466('0x3'));var Mustache=require(_0x1466('0x4'));var util=require(_0x1466('0x5'));var path=require(_0x1466('0x6'));var sox=require(_0x1466('0x7'));var csv=require(_0x1466('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1466('0x9'));var _=require(_0x1466('0xa'));var squel=require(_0x1466('0xb'));var crypto=require(_0x1466('0xc'));var jsforce=require(_0x1466('0xd'));var deskjs=require(_0x1466('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1466('0xf'));var Papa=require('papaparse');var Redis=require(_0x1466('0x10'));var authService=require(_0x1466('0x11'));var qs=require(_0x1466('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1466('0x13'));var utils=require(_0x1466('0x14'));var config=require(_0x1466('0x15'));var licenseUtil=require(_0x1466('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47ba4b,_0x56b6d9){_0x56b6d9=_0x56b6d9||0xcc;return function(_0x35c216){if(_0x35c216){return _0x47ba4b[_0x1466('0x17')](_0x56b6d9);}return _0x47ba4b[_0x1466('0x18')](_0x56b6d9)[_0x1466('0x19')]();};}function respondWithResult(_0x287811,_0x4c2880){_0x4c2880=_0x4c2880||0xc8;return function(_0xf20572){if(_0xf20572){return _0x287811[_0x1466('0x18')](_0x4c2880)['json'](_0xf20572);}};}function respondWithFilteredResult(_0x1f5e47,_0x4df480){return function(_0x41060b){if(_0x41060b){var _0x2a7693=typeof _0x4df480[_0x1466('0x1a')]===_0x1466('0x1b')&&typeof _0x4df480[_0x1466('0x1c')]===_0x1466('0x1b');var _0x27b2d9=_0x41060b[_0x1466('0x1d')];var _0x435847=_0x2a7693?0x0:_0x4df480['offset'];var _0x33c2c2=_0x2a7693?_0x41060b['count']:_0x4df480[_0x1466('0x1a')]+_0x4df480['limit'];var _0x3f1f69;if(_0x33c2c2>=_0x27b2d9){_0x33c2c2=_0x27b2d9;_0x3f1f69=0xc8;}else{_0x3f1f69=0xce;}_0x1f5e47['status'](_0x3f1f69);return _0x1f5e47['set'](_0x1466('0x1e'),_0x435847+'-'+_0x33c2c2+'/'+_0x27b2d9)[_0x1466('0x1f')](_0x41060b);}return null;};}function patchUpdates(_0x4d5a78){return function(_0x3e74fb){try{jsonpatch[_0x1466('0x20')](_0x3e74fb,_0x4d5a78,!![]);}catch(_0x42f565){return BPromise[_0x1466('0x21')](_0x42f565);}return _0x3e74fb[_0x1466('0x22')]();};}function saveUpdates(_0xc22168,_0x571b77){return function(_0x97f745){if(_0x97f745){return _0x97f745['update'](_0xc22168)['then'](function(_0x5af2ac){return _0x5af2ac;});}return null;};}function removeEntity(_0x551790,_0x13a4da){return function(_0x31d00e){if(_0x31d00e){return _0x31d00e['destroy']()[_0x1466('0x23')](function(){_0x551790[_0x1466('0x18')](0xcc)[_0x1466('0x19')]();});}};}function handleEntityNotFound(_0x1e7e75,_0x3d35b4){return function(_0x1ae93a){if(!_0x1ae93a){_0x1e7e75['sendStatus'](0x194);}return _0x1ae93a;};}function handleError(_0x568953,_0x3fc71b){_0x3fc71b=_0x3fc71b||0x1f4;return function(_0x293dfa){logger['error'](_0x293dfa['stack']);if(_0x293dfa[_0x1466('0x24')]){delete _0x293dfa['name'];}_0x568953[_0x1466('0x18')](_0x3fc71b)['send'](_0x293dfa);};}exports[_0x1466('0x25')]=function(_0x181343,_0x103d6c){var _0x1c803b={},_0x4e5600={},_0x5e1fbc={'count':0x0,'rows':[]};var _0x2fbba7=_[_0x1466('0x26')](db[_0x1466('0x27')]['rawAttributes'],function(_0x5d490a){return{'name':_0x5d490a['fieldName'],'type':_0x5d490a['type'][_0x1466('0x28')]};});_0x4e5600[_0x1466('0x29')]=_[_0x1466('0x26')](_0x2fbba7,_0x1466('0x24'));_0x4e5600[_0x1466('0x2a')]=_[_0x1466('0x2b')](_0x181343['query']);_0x4e5600['filters']=_[_0x1466('0x2c')](_0x4e5600[_0x1466('0x29')],_0x4e5600[_0x1466('0x2a')]);_0x1c803b['attributes']=_[_0x1466('0x2c')](_0x4e5600[_0x1466('0x29')],qs[_0x1466('0x2d')](_0x181343['query'][_0x1466('0x2d')]));_0x1c803b['attributes']=_0x1c803b['attributes'][_0x1466('0x2e')]?_0x1c803b[_0x1466('0x2f')]:_0x4e5600[_0x1466('0x29')];if(!_0x181343[_0x1466('0x2a')][_0x1466('0x30')]('nolimit')){_0x1c803b[_0x1466('0x1c')]=qs['limit'](_0x181343[_0x1466('0x2a')]['limit']);_0x1c803b['offset']=qs[_0x1466('0x1a')](_0x181343[_0x1466('0x2a')][_0x1466('0x1a')]);}_0x1c803b[_0x1466('0x31')]=qs[_0x1466('0x32')](_0x181343[_0x1466('0x2a')][_0x1466('0x32')]);_0x1c803b[_0x1466('0x33')]=qs[_0x1466('0x34')](_[_0x1466('0x35')](_0x181343['query'],_0x4e5600[_0x1466('0x34')]),_0x2fbba7);if(_0x181343[_0x1466('0x2a')][_0x1466('0x36')]){_0x1c803b[_0x1466('0x33')]=_['merge'](_0x1c803b[_0x1466('0x33')],{'$or':_[_0x1466('0x26')](_0x2fbba7,function(_0x402958){if(_0x402958['type']!==_0x1466('0x37')){var _0x22f094={};_0x22f094[_0x402958[_0x1466('0x24')]]={'$like':'%'+_0x181343[_0x1466('0x2a')][_0x1466('0x36')]+'%'};return _0x22f094;}})});}_0x1c803b=_[_0x1466('0x38')]({},_0x1c803b,_0x181343['options']);var _0x32fe70={'where':_0x1c803b[_0x1466('0x33')]};return db[_0x1466('0x27')]['count'](_0x32fe70)[_0x1466('0x23')](function(_0x2ad0d6){_0x5e1fbc['count']=_0x2ad0d6;if(_0x181343[_0x1466('0x2a')][_0x1466('0x39')]){_0x1c803b[_0x1466('0x3a')]=[{'all':!![]}];}return db[_0x1466('0x27')][_0x1466('0x3b')](_0x1c803b);})[_0x1466('0x23')](function(_0x2a9ccf){_0x5e1fbc[_0x1466('0x3c')]=_0x2a9ccf;return _0x5e1fbc;})[_0x1466('0x23')](respondWithFilteredResult(_0x103d6c,_0x1c803b))[_0x1466('0x3d')](handleError(_0x103d6c,null));};exports['show']=function(_0x18117b,_0x4518e0){var _0xcdb873={'raw':![],'where':{'id':_0x18117b[_0x1466('0x3e')]['id']}},_0x232ef9={};_0x232ef9[_0x1466('0x29')]=_['keys'](db[_0x1466('0x27')][_0x1466('0x3f')]);_0x232ef9[_0x1466('0x2a')]=_[_0x1466('0x2b')](_0x18117b[_0x1466('0x2a')]);_0x232ef9[_0x1466('0x34')]=_[_0x1466('0x2c')](_0x232ef9[_0x1466('0x29')],_0x232ef9[_0x1466('0x2a')]);_0xcdb873['attributes']=_[_0x1466('0x2c')](_0x232ef9[_0x1466('0x29')],qs['fields'](_0x18117b[_0x1466('0x2a')][_0x1466('0x2d')]));_0xcdb873['attributes']=_0xcdb873[_0x1466('0x2f')]['length']?_0xcdb873['attributes']:_0x232ef9[_0x1466('0x29')];if(_0x18117b[_0x1466('0x2a')][_0x1466('0x39')]){_0xcdb873[_0x1466('0x3a')]=[{'all':!![]}];}_0xcdb873=_[_0x1466('0x38')]({},_0xcdb873,_0x18117b['options']);return db[_0x1466('0x27')][_0x1466('0x40')](_0xcdb873)[_0x1466('0x23')](handleEntityNotFound(_0x4518e0,null))[_0x1466('0x23')](respondWithResult(_0x4518e0,null))[_0x1466('0x3d')](handleError(_0x4518e0,null));};exports[_0x1466('0x41')]=function(_0x4b8c5c,_0x3adf00){return db[_0x1466('0x27')][_0x1466('0x41')](_0x4b8c5c['body'],{})[_0x1466('0x23')](respondWithResult(_0x3adf00,0xc9))[_0x1466('0x3d')](handleError(_0x3adf00,null));};exports[_0x1466('0x42')]=function(_0x355bb2,_0x230475){if(_0x355bb2[_0x1466('0x43')]['id']){delete _0x355bb2[_0x1466('0x43')]['id'];}return db[_0x1466('0x27')][_0x1466('0x40')]({'where':{'id':_0x355bb2[_0x1466('0x3e')]['id']}})['then'](handleEntityNotFound(_0x230475,null))['then'](saveUpdates(_0x355bb2[_0x1466('0x43')],null))[_0x1466('0x23')](respondWithResult(_0x230475,null))[_0x1466('0x3d')](handleError(_0x230475,null));};exports[_0x1466('0x44')]=function(_0x5e3c90,_0x416ed9){return db[_0x1466('0x27')][_0x1466('0x40')]({'where':{'id':_0x5e3c90[_0x1466('0x3e')]['id']}})[_0x1466('0x23')](handleEntityNotFound(_0x416ed9,null))['then'](removeEntity(_0x416ed9,null))[_0x1466('0x3d')](handleError(_0x416ed9,null));};exports[_0x1466('0x45')]=function(_0x46199c,_0x5d62c5,_0x427862){var _0xc26183={};var _0x28678f={};var _0x4e6b7d;var _0x13daf5;return db[_0x1466('0x27')][_0x1466('0x46')]({'where':{'id':_0x46199c[_0x1466('0x3e')]['id']}})[_0x1466('0x23')](handleEntityNotFound(_0x5d62c5,null))['then'](function(_0x464957){if(_0x464957){_0x4e6b7d=_0x464957;_0x28678f[_0x1466('0x29')]=_[_0x1466('0x2b')](db[_0x1466('0x47')][_0x1466('0x3f')]);_0x28678f[_0x1466('0x2a')]=_[_0x1466('0x2b')](_0x46199c[_0x1466('0x2a')]);_0x28678f['filters']=_['intersection'](_0x28678f[_0x1466('0x29')],_0x28678f[_0x1466('0x2a')]);_0xc26183['attributes']=_[_0x1466('0x2c')](_0x28678f[_0x1466('0x29')],qs[_0x1466('0x2d')](_0x46199c[_0x1466('0x2a')][_0x1466('0x2d')]));_0xc26183['attributes']=_0xc26183[_0x1466('0x2f')][_0x1466('0x2e')]?_0xc26183['attributes']:_0x28678f[_0x1466('0x29')];_0xc26183[_0x1466('0x31')]=qs[_0x1466('0x32')](_0x46199c['query'][_0x1466('0x32')]);_0xc26183[_0x1466('0x33')]=qs['filters'](_[_0x1466('0x35')](_0x46199c[_0x1466('0x2a')],_0x28678f[_0x1466('0x34')]));if(_0x46199c[_0x1466('0x2a')][_0x1466('0x36')]){_0xc26183[_0x1466('0x33')]=_['merge'](_0xc26183['where'],{'$or':_[_0x1466('0x26')](_0xc26183[_0x1466('0x2f')],function(_0x142742){var _0xf8731b={};_0xf8731b[_0x142742]={'$like':'%'+_0x46199c[_0x1466('0x2a')]['filter']+'%'};return _0xf8731b;})});}_0xc26183=_['merge']({},_0xc26183,_0x46199c[_0x1466('0x48')]);return _0x4e6b7d[_0x1466('0x45')](_0xc26183);}})['then'](function(_0x33279d){if(_0x33279d){_0x13daf5=_0x33279d[_0x1466('0x2e')];if(!_0x46199c[_0x1466('0x2a')][_0x1466('0x30')](_0x1466('0x49'))){_0xc26183[_0x1466('0x1c')]=qs[_0x1466('0x1c')](_0x46199c[_0x1466('0x2a')][_0x1466('0x1c')]);_0xc26183[_0x1466('0x1a')]=qs['offset'](_0x46199c[_0x1466('0x2a')][_0x1466('0x1a')]);}return _0x4e6b7d[_0x1466('0x45')](_0xc26183);}})[_0x1466('0x23')](function(_0x49cf7){if(_0x49cf7){return _0x49cf7?{'count':_0x13daf5,'rows':_0x49cf7}:null;}})[_0x1466('0x23')](respondWithResult(_0x5d62c5,null))['catch'](handleError(_0x5d62c5,null));};exports[_0x1466('0x4a')]=function(_0xd64cdf,_0x113e2e,_0x34002d){var _0x29418b={};var _0x5a2b33={};var _0x123ad0;var _0x57e643;return db[_0x1466('0x27')][_0x1466('0x46')]({'where':{'id':_0xd64cdf['params']['id']}})['then'](handleEntityNotFound(_0x113e2e,null))[_0x1466('0x23')](function(_0x2b34a3){if(_0x2b34a3){_0x123ad0=_0x2b34a3;_0x5a2b33[_0x1466('0x29')]=_[_0x1466('0x2b')](db[_0x1466('0x47')][_0x1466('0x3f')]);_0x5a2b33[_0x1466('0x2a')]=_[_0x1466('0x2b')](_0xd64cdf[_0x1466('0x2a')]);_0x5a2b33[_0x1466('0x34')]=_[_0x1466('0x2c')](_0x5a2b33[_0x1466('0x29')],_0x5a2b33[_0x1466('0x2a')]);_0x29418b[_0x1466('0x2f')]=_['intersection'](_0x5a2b33[_0x1466('0x29')],qs[_0x1466('0x2d')](_0xd64cdf[_0x1466('0x2a')]['fields']));_0x29418b[_0x1466('0x2f')]=_0x29418b[_0x1466('0x2f')][_0x1466('0x2e')]?_0x29418b[_0x1466('0x2f')]:_0x5a2b33[_0x1466('0x29')];_0x29418b[_0x1466('0x31')]=qs[_0x1466('0x32')](_0xd64cdf[_0x1466('0x2a')]['sort']);_0x29418b['where']=qs[_0x1466('0x34')](_[_0x1466('0x35')](_0xd64cdf[_0x1466('0x2a')],_0x5a2b33[_0x1466('0x34')]));if(_0xd64cdf['query'][_0x1466('0x36')]){_0x29418b['where']=_[_0x1466('0x38')](_0x29418b['where'],{'$or':_[_0x1466('0x26')](_0x29418b[_0x1466('0x2f')],function(_0x243f3a){var _0x40ecc0={};_0x40ecc0[_0x243f3a]={'$like':'%'+_0xd64cdf[_0x1466('0x2a')][_0x1466('0x36')]+'%'};return _0x40ecc0;})});}_0x29418b=_[_0x1466('0x38')]({},_0x29418b,_0xd64cdf[_0x1466('0x48')]);return _0x123ad0[_0x1466('0x4a')](_0x29418b);}})[_0x1466('0x23')](function(_0x459cd9){if(_0x459cd9){_0x57e643=_0x459cd9['length'];if(!_0xd64cdf[_0x1466('0x2a')]['hasOwnProperty']('nolimit')){_0x29418b[_0x1466('0x1c')]=qs[_0x1466('0x1c')](_0xd64cdf['query'][_0x1466('0x1c')]);_0x29418b['offset']=qs['offset'](_0xd64cdf[_0x1466('0x2a')][_0x1466('0x1a')]);}return _0x123ad0[_0x1466('0x4a')](_0x29418b);}})[_0x1466('0x23')](function(_0x2fbb57){if(_0x2fbb57){return _0x2fbb57?{'count':_0x57e643,'rows':_0x2fbb57}:null;}})['then'](respondWithResult(_0x113e2e,null))[_0x1466('0x3d')](handleError(_0x113e2e,null));};exports[_0x1466('0x4b')]=function(_0x2be0f8,_0xff458b,_0x2a1be9){var _0x40e4ad={};var _0x1bee7c={};var _0x977fed;var _0x57a706;return db[_0x1466('0x27')][_0x1466('0x46')]({'where':{'id':_0x2be0f8['params']['id']}})[_0x1466('0x23')](handleEntityNotFound(_0xff458b,null))['then'](function(_0x312860){if(_0x312860){_0x977fed=_0x312860;_0x1bee7c[_0x1466('0x29')]=_[_0x1466('0x2b')](db[_0x1466('0x47')][_0x1466('0x3f')]);_0x1bee7c[_0x1466('0x2a')]=_[_0x1466('0x2b')](_0x2be0f8[_0x1466('0x2a')]);_0x1bee7c[_0x1466('0x34')]=_[_0x1466('0x2c')](_0x1bee7c[_0x1466('0x29')],_0x1bee7c[_0x1466('0x2a')]);_0x40e4ad[_0x1466('0x2f')]=_[_0x1466('0x2c')](_0x1bee7c[_0x1466('0x29')],qs[_0x1466('0x2d')](_0x2be0f8[_0x1466('0x2a')]['fields']));_0x40e4ad['attributes']=_0x40e4ad[_0x1466('0x2f')][_0x1466('0x2e')]?_0x40e4ad['attributes']:_0x1bee7c['model'];_0x40e4ad['order']=qs[_0x1466('0x32')](_0x2be0f8[_0x1466('0x2a')][_0x1466('0x32')]);_0x40e4ad[_0x1466('0x33')]=qs[_0x1466('0x34')](_[_0x1466('0x35')](_0x2be0f8['query'],_0x1bee7c['filters']));if(_0x2be0f8['query'][_0x1466('0x36')]){_0x40e4ad[_0x1466('0x33')]=_[_0x1466('0x38')](_0x40e4ad[_0x1466('0x33')],{'$or':_[_0x1466('0x26')](_0x40e4ad[_0x1466('0x2f')],function(_0x17f130){var _0x2512c3={};_0x2512c3[_0x17f130]={'$like':'%'+_0x2be0f8[_0x1466('0x2a')]['filter']+'%'};return _0x2512c3;})});}_0x40e4ad=_[_0x1466('0x38')]({},_0x40e4ad,_0x2be0f8[_0x1466('0x48')]);return _0x977fed[_0x1466('0x4b')](_0x40e4ad);}})[_0x1466('0x23')](function(_0x4729df){if(_0x4729df){_0x57a706=_0x4729df[_0x1466('0x2e')];if(!_0x2be0f8[_0x1466('0x2a')][_0x1466('0x30')]('nolimit')){_0x40e4ad['limit']=qs[_0x1466('0x1c')](_0x2be0f8[_0x1466('0x2a')]['limit']);_0x40e4ad[_0x1466('0x1a')]=qs[_0x1466('0x1a')](_0x2be0f8[_0x1466('0x2a')][_0x1466('0x1a')]);}return _0x977fed['getDescriptions'](_0x40e4ad);}})[_0x1466('0x23')](function(_0x2d9bca){if(_0x2d9bca){return _0x2d9bca?{'count':_0x57a706,'rows':_0x2d9bca}:null;}})[_0x1466('0x23')](respondWithResult(_0xff458b,null))['catch'](handleError(_0xff458b,null));};
\ No newline at end of file
index 7de4e3e..71d62a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc35f=['util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','int_servicenow_configurations','lodash'];(function(_0x345b2f,_0x2f21c1){var _0x3b02c9=function(_0x318f84){while(--_0x318f84){_0x345b2f['push'](_0x345b2f['shift']());}};_0x3b02c9(++_0x2f21c1);}(_0xc35f,0x1ca));var _0xfc35=function(_0xfdd3d6,_0x20cb69){_0xfdd3d6=_0xfdd3d6-0x0;var _0x13aeba=_0xc35f[_0xfdd3d6];return _0x13aeba;};'use strict';var _=require(_0xfc35('0x0'));var util=require(_0xfc35('0x1'));var logger=require(_0xfc35('0x2'))(_0xfc35('0x3'));var moment=require('moment');var BPromise=require(_0xfc35('0x4'));var rp=require(_0xfc35('0x5'));var fs=require('fs');var path=require(_0xfc35('0x6'));var rimraf=require('rimraf');var config=require(_0xfc35('0x7'));var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0x6d47a0,_0x1991a5){return _0x6d47a0['define']('ServicenowConfiguration',attributes,{'tableName':_0xfc35('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcefd=['int_servicenow_configurations','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intServicenowConfiguration.attributes','exports','ServicenowConfiguration'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0xcefd,0x1bd));var _0xdcef=function(_0x369870,_0x101450){_0x369870=_0x369870-0x0;var _0x30b359=_0xcefd[_0x369870];return _0x30b359;};'use strict';var _=require('lodash');var util=require(_0xdcef('0x0'));var logger=require(_0xdcef('0x1'))(_0xdcef('0x2'));var moment=require(_0xdcef('0x3'));var BPromise=require(_0xdcef('0x4'));var rp=require(_0xdcef('0x5'));var fs=require('fs');var path=require(_0xdcef('0x6'));var rimraf=require('rimraf');var config=require(_0xdcef('0x7'));var attributes=require(_0xdcef('0x8'));module[_0xdcef('0x9')]=function(_0x373ed9,_0x31c2d4){return _0x373ed9['define'](_0xdcef('0xa'),attributes,{'tableName':_0xdcef('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a79772c..2cf6abc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8cc=['then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x3c0aae,_0x2cd036){var _0x23b84f=function(_0x50c2b5){while(--_0x50c2b5){_0x3c0aae['push'](_0x3c0aae['shift']());}};_0x23b84f(++_0x2cd036);}(_0xf8cc,0x173));var _0xcf8c=function(_0x11f376,_0x521391){_0x11f376=_0x11f376-0x0;var _0x4f91e2=_0xf8cc[_0x11f376];return _0x4f91e2;};'use strict';var _=require(_0xcf8c('0x0'));var util=require(_0xcf8c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcf8c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcf8c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xcf8c('0x4'))('rpc');var config=require(_0xcf8c('0x5'));var jayson=require(_0xcf8c('0x6'));var client=jayson[_0xcf8c('0x7')][_0xcf8c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1f77d2,_0x50b6eb,_0x391bb8){return new BPromise(function(_0x3ec3d0,_0xaa9d78){return client['request'](_0x1f77d2,_0x391bb8)[_0xcf8c('0x9')](function(_0x41a3e3){logger['info'](_0xcf8c('0xa'),_0x50b6eb,_0xcf8c('0xb'));logger[_0xcf8c('0xc')](_0xcf8c('0xd'),_0x50b6eb,_0xcf8c('0xb'),JSON[_0xcf8c('0xe')](_0x41a3e3));if(_0x41a3e3['error']){if(_0x41a3e3['error']['code']===0x1f4){logger['error'](_0xcf8c('0xa'),_0x50b6eb,_0x41a3e3[_0xcf8c('0xf')][_0xcf8c('0x10')]);return _0xaa9d78(_0x41a3e3[_0xcf8c('0xf')][_0xcf8c('0x10')]);}logger[_0xcf8c('0xf')](_0xcf8c('0xa'),_0x50b6eb,_0x41a3e3[_0xcf8c('0xf')][_0xcf8c('0x10')]);return _0x3ec3d0(_0x41a3e3['error'][_0xcf8c('0x10')]);}else{logger[_0xcf8c('0x11')](_0xcf8c('0xa'),_0x50b6eb,_0xcf8c('0xb'));_0x3ec3d0(_0x41a3e3[_0xcf8c('0x12')][_0xcf8c('0x10')]);}})[_0xcf8c('0x13')](function(_0x24855a){logger[_0xcf8c('0xf')](_0xcf8c('0xa'),_0x50b6eb,_0x24855a);_0xaa9d78(_0x24855a);});});}
\ No newline at end of file
+var _0x44c2=['ServicenowConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','request\x20sent','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0x44c2,0x100));var _0x244c=function(_0x445101,_0x2414bf){_0x445101=_0x445101-0x0;var _0x3c3d04=_0x44c2[_0x445101];return _0x3c3d04;};'use strict';var _=require(_0x244c('0x0'));var util=require(_0x244c('0x1'));var moment=require(_0x244c('0x2'));var BPromise=require(_0x244c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x244c('0x4'));var db=require(_0x244c('0x5'))['db'];var utils=require(_0x244c('0x6'));var logger=require(_0x244c('0x7'))(_0x244c('0x8'));var config=require(_0x244c('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x244c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c758e,_0x18491b,_0x5b49a1){return new BPromise(function(_0x54b673,_0x1a0f7d){return client[_0x244c('0xb')](_0x4c758e,_0x5b49a1)['then'](function(_0xf5430e){logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x18491b,_0x244c('0xc'));logger['debug'](_0x244c('0xd'),_0x18491b,'request\x20sent',JSON[_0x244c('0xe')](_0xf5430e));if(_0xf5430e['error']){if(_0xf5430e['error'][_0x244c('0xf')]===0x1f4){logger[_0x244c('0x10')](_0x244c('0x11'),_0x18491b,_0xf5430e['error'][_0x244c('0x12')]);return _0x1a0f7d(_0xf5430e[_0x244c('0x10')][_0x244c('0x12')]);}logger[_0x244c('0x10')](_0x244c('0x11'),_0x18491b,_0xf5430e[_0x244c('0x10')][_0x244c('0x12')]);return _0x54b673(_0xf5430e['error'][_0x244c('0x12')]);}else{logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x18491b,_0x244c('0xc'));_0x54b673(_0xf5430e[_0x244c('0x13')][_0x244c('0x12')]);}})[_0x244c('0x14')](function(_0x5f2a11){logger[_0x244c('0x10')](_0x244c('0x11'),_0x18491b,_0x5f2a11);_0x1a0f7d(_0x5f2a11);});});}
\ No newline at end of file
index a2986d4..3e2a9f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1378=['connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','util'];(function(_0x4adb6f,_0x2bbeb4){var _0x315392=function(_0x543e58){while(--_0x543e58){_0x4adb6f['push'](_0x4adb6f['shift']());}};_0x315392(++_0x2bbeb4);}(_0x1378,0x16f));var _0x8137=function(_0x53d5c7,_0xeeefb9){_0x53d5c7=_0x53d5c7-0x0;var _0x5a2146=_0x1378[_0x53d5c7];return _0x5a2146;};'use strict';var multer=require('multer');var util=require(_0x8137('0x0'));var path=require('path');var timeout=require(_0x8137('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8137('0x2'));var auth=require(_0x8137('0x3'));var interaction=require(_0x8137('0x4'));var config=require(_0x8137('0x5'));var controller=require(_0x8137('0x6'));router[_0x8137('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x8137('0x8'),auth[_0x8137('0x9')](),controller[_0x8137('0xa')]);router[_0x8137('0xb')]('/',auth['isAuthenticated'](),controller[_0x8137('0xc')]);router[_0x8137('0xd')](_0x8137('0x8'),auth[_0x8137('0x9')](),controller[_0x8137('0xe')]);router[_0x8137('0xf')](_0x8137('0x8'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x87ca=['post','create','put','update','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id'];(function(_0x508ed6,_0x5f4ee9){var _0x7ad26a=function(_0x4ec9a1){while(--_0x4ec9a1){_0x508ed6['push'](_0x508ed6['shift']());}};_0x7ad26a(++_0x5f4ee9);}(_0x87ca,0x193));var _0xa87c=function(_0x11b8f9,_0x251834){_0x11b8f9=_0x11b8f9-0x0;var _0x51977d=_0x87ca[_0x11b8f9];return _0x51977d;};'use strict';var multer=require(_0xa87c('0x0'));var util=require(_0xa87c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa87c('0x2')]();var fs_extra=require(_0xa87c('0x3'));var auth=require(_0xa87c('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa87c('0x5'));var controller=require(_0xa87c('0x6'));router[_0xa87c('0x7')]('/',auth[_0xa87c('0x8')](),controller[_0xa87c('0x9')]);router[_0xa87c('0x7')](_0xa87c('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xa87c('0xb')]('/',auth[_0xa87c('0x8')](),controller[_0xa87c('0xc')]);router[_0xa87c('0xd')](_0xa87c('0xa'),auth[_0xa87c('0x8')](),controller[_0xa87c('0xe')]);router[_0xa87c('0xf')](_0xa87c('0xa'),auth[_0xa87c('0x8')](),controller[_0xa87c('0x10')]);module[_0xa87c('0x11')]=router;
\ No newline at end of file
index ff50d85..9e4623d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf52e=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x45d391,_0x3e7bea){var _0xa6a374=function(_0x182f92){while(--_0x182f92){_0x45d391['push'](_0x45d391['shift']());}};_0xa6a374(++_0x3e7bea);}(_0xf52e,0x10b));var _0xef52=function(_0xa6d24e,_0x30b380){_0xa6d24e=_0xa6d24e-0x0;var _0x3cd03e=_0xf52e[_0xa6d24e];return _0x3cd03e;};'use strict';var Sequelize=require(_0xef52('0x0'));module[_0xef52('0x1')]={'type':{'type':Sequelize[_0xef52('0x2')](_0xef52('0x3'),_0xef52('0x4'),_0xef52('0x5'),_0xef52('0x6'),_0xef52('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xef52('0x8')]},'key':{'type':Sequelize[_0xef52('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0xef52('0x3'),_0xef52('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xef52('0x8')]},'idField':{'type':Sequelize[_0xef52('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xef52('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xef52('0x8')]}};
\ No newline at end of file
+var _0x5cfb=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x466f6c,_0x4645b9){var _0x53c9ed=function(_0x3746a1){while(--_0x3746a1){_0x466f6c['push'](_0x466f6c['shift']());}};_0x53c9ed(++_0x4645b9);}(_0x5cfb,0x6a));var _0xb5cf=function(_0x339411,_0x47f05c){_0x339411=_0x339411-0x0;var _0x9c19a9=_0x5cfb[_0x339411];return _0x9c19a9;};'use strict';var Sequelize=require(_0xb5cf('0x0'));module[_0xb5cf('0x1')]={'type':{'type':Sequelize[_0xb5cf('0x2')](_0xb5cf('0x3'),_0xb5cf('0x4'),_0xb5cf('0x5'),_0xb5cf('0x6'),_0xb5cf('0x7')),'defaultValue':_0xb5cf('0x3')},'content':{'type':Sequelize[_0xb5cf('0x8')]},'key':{'type':Sequelize[_0xb5cf('0x8')]},'keyType':{'type':Sequelize[_0xb5cf('0x2')](_0xb5cf('0x3'),_0xb5cf('0x4'),_0xb5cf('0x5'))},'keyContent':{'type':Sequelize[_0xb5cf('0x8')]},'idField':{'type':Sequelize[_0xb5cf('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xb5cf('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb5cf('0x8')]}};
\ No newline at end of file
index 517c459..efa6cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae18=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','rows','catch','show','includeAll','create','body','find','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x19bf0a,_0x4cf3b5){var _0x293111=function(_0x3494ea){while(--_0x3494ea){_0x19bf0a['push'](_0x19bf0a['shift']());}};_0x293111(++_0x4cf3b5);}(_0xae18,0x8f));var _0x8ae1=function(_0x5de909,_0x4a95d1){_0x5de909=_0x5de909-0x0;var _0x434a11=_0xae18[_0x5de909];return _0x434a11;};'use strict';var emlformat=require(_0x8ae1('0x0'));var rimraf=require(_0x8ae1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8ae1('0x2'));var rp=require(_0x8ae1('0x3'));var moment=require('moment');var BPromise=require(_0x8ae1('0x4'));var Mustache=require(_0x8ae1('0x5'));var util=require(_0x8ae1('0x6'));var path=require(_0x8ae1('0x7'));var sox=require(_0x8ae1('0x8'));var csv=require('to-csv');var ejs=require(_0x8ae1('0x9'));var fs=require('fs');var fs_extra=require(_0x8ae1('0xa'));var _=require(_0x8ae1('0xb'));var squel=require(_0x8ae1('0xc'));var crypto=require(_0x8ae1('0xd'));var jsforce=require(_0x8ae1('0xe'));var deskjs=require(_0x8ae1('0xf'));var toCsv=require(_0x8ae1('0x10'));var querystring=require(_0x8ae1('0x11'));var Papa=require(_0x8ae1('0x12'));var Redis=require(_0x8ae1('0x13'));var authService=require(_0x8ae1('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x8ae1('0x15'));var hardwareService=require(_0x8ae1('0x16'));var logger=require(_0x8ae1('0x17'))('api');var utils=require(_0x8ae1('0x18'));var config=require(_0x8ae1('0x19'));var licenseUtil=require(_0x8ae1('0x1a'));var db=require(_0x8ae1('0x1b'))['db'];function respondWithStatusCode(_0x1f7480,_0x4722ce){_0x4722ce=_0x4722ce||0xcc;return function(_0x2105b3){if(_0x2105b3){return _0x1f7480[_0x8ae1('0x1c')](_0x4722ce);}return _0x1f7480[_0x8ae1('0x1d')](_0x4722ce)[_0x8ae1('0x1e')]();};}function respondWithResult(_0x8d5ad,_0x1b403c){_0x1b403c=_0x1b403c||0xc8;return function(_0xf8088b){if(_0xf8088b){return _0x8d5ad[_0x8ae1('0x1d')](_0x1b403c)[_0x8ae1('0x1f')](_0xf8088b);}};}function respondWithFilteredResult(_0xf2937b,_0x10150f){return function(_0x27b91f){if(_0x27b91f){var _0x5b5f6b=typeof _0x10150f[_0x8ae1('0x20')]===_0x8ae1('0x21')&&typeof _0x10150f[_0x8ae1('0x22')]===_0x8ae1('0x21');var _0x5021d4=_0x27b91f['count'];var _0x292cf=_0x5b5f6b?0x0:_0x10150f[_0x8ae1('0x20')];var _0xdb857c=_0x5b5f6b?_0x27b91f[_0x8ae1('0x23')]:_0x10150f[_0x8ae1('0x20')]+_0x10150f[_0x8ae1('0x22')];var _0x416d46;if(_0xdb857c>=_0x5021d4){_0xdb857c=_0x5021d4;_0x416d46=0xc8;}else{_0x416d46=0xce;}_0xf2937b[_0x8ae1('0x1d')](_0x416d46);return _0xf2937b[_0x8ae1('0x24')](_0x8ae1('0x25'),_0x292cf+'-'+_0xdb857c+'/'+_0x5021d4)[_0x8ae1('0x1f')](_0x27b91f);}return null;};}function patchUpdates(_0x2b1194){return function(_0x3003a7){try{jsonpatch[_0x8ae1('0x26')](_0x3003a7,_0x2b1194,!![]);}catch(_0x1d2360){return BPromise[_0x8ae1('0x27')](_0x1d2360);}return _0x3003a7['save']();};}function saveUpdates(_0x4fb215,_0x2a402e){return function(_0x22915a){if(_0x22915a){return _0x22915a[_0x8ae1('0x28')](_0x4fb215)[_0x8ae1('0x29')](function(_0x26372c){return _0x26372c;});}return null;};}function removeEntity(_0x2ad0b4,_0x3567c2){return function(_0x40bc41){if(_0x40bc41){return _0x40bc41[_0x8ae1('0x2a')]()[_0x8ae1('0x29')](function(){_0x2ad0b4[_0x8ae1('0x1d')](0xcc)[_0x8ae1('0x1e')]();});}};}function handleEntityNotFound(_0x5ba566,_0x3cd7e0){return function(_0x463f39){if(!_0x463f39){_0x5ba566[_0x8ae1('0x1c')](0x194);}return _0x463f39;};}function handleError(_0x698620,_0x6832a6){_0x6832a6=_0x6832a6||0x1f4;return function(_0x368c21){logger[_0x8ae1('0x2b')](_0x368c21['stack']);if(_0x368c21['name']){delete _0x368c21[_0x8ae1('0x2c')];}_0x698620['status'](_0x6832a6)[_0x8ae1('0x2d')](_0x368c21);};}exports[_0x8ae1('0x2e')]=function(_0x308ab8,_0x2c23b4){var _0x32f9d7={},_0x395c3d={},_0x3ec691={'count':0x0,'rows':[]};var _0x44779e=_['map'](db[_0x8ae1('0x2f')][_0x8ae1('0x30')],function(_0x1b2c1e){return{'name':_0x1b2c1e[_0x8ae1('0x31')],'type':_0x1b2c1e[_0x8ae1('0x32')][_0x8ae1('0x33')]};});_0x395c3d[_0x8ae1('0x34')]=_[_0x8ae1('0x35')](_0x44779e,'name');_0x395c3d[_0x8ae1('0x36')]=_[_0x8ae1('0x37')](_0x308ab8['query']);_0x395c3d[_0x8ae1('0x38')]=_[_0x8ae1('0x39')](_0x395c3d[_0x8ae1('0x34')],_0x395c3d[_0x8ae1('0x36')]);_0x32f9d7[_0x8ae1('0x3a')]=_[_0x8ae1('0x39')](_0x395c3d[_0x8ae1('0x34')],qs['fields'](_0x308ab8[_0x8ae1('0x36')][_0x8ae1('0x3b')]));_0x32f9d7[_0x8ae1('0x3a')]=_0x32f9d7['attributes'][_0x8ae1('0x3c')]?_0x32f9d7[_0x8ae1('0x3a')]:_0x395c3d[_0x8ae1('0x34')];if(!_0x308ab8['query'][_0x8ae1('0x3d')](_0x8ae1('0x3e'))){_0x32f9d7['limit']=qs[_0x8ae1('0x22')](_0x308ab8[_0x8ae1('0x36')][_0x8ae1('0x22')]);_0x32f9d7[_0x8ae1('0x20')]=qs[_0x8ae1('0x20')](_0x308ab8[_0x8ae1('0x36')][_0x8ae1('0x20')]);}_0x32f9d7[_0x8ae1('0x3f')]=qs[_0x8ae1('0x40')](_0x308ab8[_0x8ae1('0x36')][_0x8ae1('0x40')]);_0x32f9d7['where']=qs['filters'](_[_0x8ae1('0x41')](_0x308ab8[_0x8ae1('0x36')],_0x395c3d[_0x8ae1('0x38')]),_0x44779e);if(_0x308ab8[_0x8ae1('0x36')][_0x8ae1('0x42')]){_0x32f9d7[_0x8ae1('0x43')]=_['merge'](_0x32f9d7['where'],{'$or':_[_0x8ae1('0x35')](_0x44779e,function(_0x220f82){if(_0x220f82[_0x8ae1('0x32')]!==_0x8ae1('0x44')){var _0x1d1be6={};_0x1d1be6[_0x220f82['name']]={'$like':'%'+_0x308ab8[_0x8ae1('0x36')][_0x8ae1('0x42')]+'%'};return _0x1d1be6;}})});}_0x32f9d7=_[_0x8ae1('0x45')]({},_0x32f9d7,_0x308ab8[_0x8ae1('0x46')]);var _0x5306b7={'where':_0x32f9d7[_0x8ae1('0x43')]};return db['ServicenowField'][_0x8ae1('0x23')](_0x5306b7)['then'](function(_0x458990){_0x3ec691[_0x8ae1('0x23')]=_0x458990;if(_0x308ab8[_0x8ae1('0x36')]['includeAll']){_0x32f9d7[_0x8ae1('0x47')]=[{'all':!![]}];}return db[_0x8ae1('0x2f')][_0x8ae1('0x48')](_0x32f9d7);})[_0x8ae1('0x29')](function(_0x4db0ef){_0x3ec691[_0x8ae1('0x49')]=_0x4db0ef;return _0x3ec691;})[_0x8ae1('0x29')](respondWithFilteredResult(_0x2c23b4,_0x32f9d7))[_0x8ae1('0x4a')](handleError(_0x2c23b4,null));};exports[_0x8ae1('0x4b')]=function(_0x1f879e,_0x2f7575){var _0x453878={'raw':!![],'where':{'id':_0x1f879e['params']['id']}},_0xca68cb={};_0xca68cb[_0x8ae1('0x34')]=_[_0x8ae1('0x37')](db[_0x8ae1('0x2f')]['rawAttributes']);_0xca68cb['query']=_['keys'](_0x1f879e[_0x8ae1('0x36')]);_0xca68cb['filters']=_[_0x8ae1('0x39')](_0xca68cb[_0x8ae1('0x34')],_0xca68cb['query']);_0x453878['attributes']=_[_0x8ae1('0x39')](_0xca68cb['model'],qs[_0x8ae1('0x3b')](_0x1f879e['query'][_0x8ae1('0x3b')]));_0x453878['attributes']=_0x453878[_0x8ae1('0x3a')][_0x8ae1('0x3c')]?_0x453878[_0x8ae1('0x3a')]:_0xca68cb[_0x8ae1('0x34')];if(_0x1f879e[_0x8ae1('0x36')][_0x8ae1('0x4c')]){_0x453878[_0x8ae1('0x47')]=[{'all':!![]}];}_0x453878=_[_0x8ae1('0x45')]({},_0x453878,_0x1f879e[_0x8ae1('0x46')]);return db[_0x8ae1('0x2f')]['find'](_0x453878)[_0x8ae1('0x29')](handleEntityNotFound(_0x2f7575,null))['then'](respondWithResult(_0x2f7575,null))[_0x8ae1('0x4a')](handleError(_0x2f7575,null));};exports[_0x8ae1('0x4d')]=function(_0x5cb4cf,_0x224474){return db[_0x8ae1('0x2f')][_0x8ae1('0x4d')](_0x5cb4cf[_0x8ae1('0x4e')],{})[_0x8ae1('0x29')](respondWithResult(_0x224474,0xc9))[_0x8ae1('0x4a')](handleError(_0x224474,null));};exports[_0x8ae1('0x28')]=function(_0x13a427,_0x177273){if(_0x13a427[_0x8ae1('0x4e')]['id']){delete _0x13a427[_0x8ae1('0x4e')]['id'];}return db[_0x8ae1('0x2f')][_0x8ae1('0x4f')]({'where':{'id':_0x13a427[_0x8ae1('0x50')]['id']}})[_0x8ae1('0x29')](handleEntityNotFound(_0x177273,null))['then'](saveUpdates(_0x13a427[_0x8ae1('0x4e')],null))[_0x8ae1('0x29')](respondWithResult(_0x177273,null))[_0x8ae1('0x4a')](handleError(_0x177273,null));};exports[_0x8ae1('0x2a')]=function(_0x1ea6ee,_0x312b0b){return db[_0x8ae1('0x2f')]['find']({'where':{'id':_0x1ea6ee['params']['id']}})[_0x8ae1('0x29')](handleEntityNotFound(_0x312b0b,null))['then'](removeEntity(_0x312b0b,null))[_0x8ae1('0x4a')](handleError(_0x312b0b,null));};
\ No newline at end of file
+var _0x633f=['json','offset','limit','count','set','save','update','then','stack','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filters','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','destroy','rimraf','fast-json-patch','request-promise','bluebird','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x393658,_0x4f642b){var _0x23f7e6=function(_0x37cc9d){while(--_0x37cc9d){_0x393658['push'](_0x393658['shift']());}};_0x23f7e6(++_0x4f642b);}(_0x633f,0xf9));var _0xf633=function(_0x4c0e31,_0xa79bf2){_0x4c0e31=_0x4c0e31-0x0;var _0x41707d=_0x633f[_0x4c0e31];return _0x41707d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf633('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf633('0x1'));var rp=require(_0xf633('0x2'));var moment=require('moment');var BPromise=require(_0xf633('0x3'));var Mustache=require('mustache');var util=require(_0xf633('0x4'));var path=require('path');var sox=require(_0xf633('0x5'));var csv=require(_0xf633('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf633('0x7'));var _=require('lodash');var squel=require(_0xf633('0x8'));var crypto=require(_0xf633('0x9'));var jsforce=require(_0xf633('0xa'));var deskjs=require(_0xf633('0xb'));var toCsv=require(_0xf633('0x6'));var querystring=require(_0xf633('0xc'));var Papa=require(_0xf633('0xd'));var Redis=require('ioredis');var authService=require(_0xf633('0xe'));var qs=require(_0xf633('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf633('0x10'));var utils=require('../../config/utils');var config=require(_0xf633('0x11'));var licenseUtil=require(_0xf633('0x12'));var db=require(_0xf633('0x13'))['db'];function respondWithStatusCode(_0x4929e5,_0x45e3d2){_0x45e3d2=_0x45e3d2||0xcc;return function(_0x47b4c9){if(_0x47b4c9){return _0x4929e5[_0xf633('0x14')](_0x45e3d2);}return _0x4929e5[_0xf633('0x15')](_0x45e3d2)[_0xf633('0x16')]();};}function respondWithResult(_0x15ffc3,_0x5c2296){_0x5c2296=_0x5c2296||0xc8;return function(_0x4635ad){if(_0x4635ad){return _0x15ffc3[_0xf633('0x15')](_0x5c2296)[_0xf633('0x17')](_0x4635ad);}};}function respondWithFilteredResult(_0x55eb27,_0x43d6bf){return function(_0x19bbc2){if(_0x19bbc2){var _0x1f16bf=typeof _0x43d6bf[_0xf633('0x18')]==='undefined'&&typeof _0x43d6bf[_0xf633('0x19')]==='undefined';var _0x55e7ce=_0x19bbc2[_0xf633('0x1a')];var _0x112ce6=_0x1f16bf?0x0:_0x43d6bf[_0xf633('0x18')];var _0x54f8c6=_0x1f16bf?_0x19bbc2[_0xf633('0x1a')]:_0x43d6bf[_0xf633('0x18')]+_0x43d6bf[_0xf633('0x19')];var _0x50c537;if(_0x54f8c6>=_0x55e7ce){_0x54f8c6=_0x55e7ce;_0x50c537=0xc8;}else{_0x50c537=0xce;}_0x55eb27[_0xf633('0x15')](_0x50c537);return _0x55eb27[_0xf633('0x1b')]('Content-Range',_0x112ce6+'-'+_0x54f8c6+'/'+_0x55e7ce)[_0xf633('0x17')](_0x19bbc2);}return null;};}function patchUpdates(_0x4a75fe){return function(_0x3686ba){try{jsonpatch['apply'](_0x3686ba,_0x4a75fe,!![]);}catch(_0x16e718){return BPromise['reject'](_0x16e718);}return _0x3686ba[_0xf633('0x1c')]();};}function saveUpdates(_0x41a4b0,_0x4d5007){return function(_0x32b8e0){if(_0x32b8e0){return _0x32b8e0[_0xf633('0x1d')](_0x41a4b0)[_0xf633('0x1e')](function(_0x298a0d){return _0x298a0d;});}return null;};}function removeEntity(_0x2e1a8c,_0x33ad04){return function(_0x23100b){if(_0x23100b){return _0x23100b['destroy']()[_0xf633('0x1e')](function(){_0x2e1a8c[_0xf633('0x15')](0xcc)[_0xf633('0x16')]();});}};}function handleEntityNotFound(_0x401e0c,_0x6a3c25){return function(_0x15b286){if(!_0x15b286){_0x401e0c['sendStatus'](0x194);}return _0x15b286;};}function handleError(_0x3c2f27,_0x5a993e){_0x5a993e=_0x5a993e||0x1f4;return function(_0x587fca){logger['error'](_0x587fca[_0xf633('0x1f')]);if(_0x587fca[_0xf633('0x20')]){delete _0x587fca['name'];}_0x3c2f27[_0xf633('0x15')](_0x5a993e)[_0xf633('0x21')](_0x587fca);};}exports[_0xf633('0x22')]=function(_0x2fbb6e,_0x3d34db){var _0x127ab4={},_0x3c1d5a={},_0x5b4d15={'count':0x0,'rows':[]};var _0x45b7ec=_['map'](db[_0xf633('0x23')][_0xf633('0x24')],function(_0xb2eadd){return{'name':_0xb2eadd[_0xf633('0x25')],'type':_0xb2eadd[_0xf633('0x26')][_0xf633('0x27')]};});_0x3c1d5a[_0xf633('0x28')]=_[_0xf633('0x29')](_0x45b7ec,_0xf633('0x20'));_0x3c1d5a[_0xf633('0x2a')]=_[_0xf633('0x2b')](_0x2fbb6e[_0xf633('0x2a')]);_0x3c1d5a['filters']=_[_0xf633('0x2c')](_0x3c1d5a[_0xf633('0x28')],_0x3c1d5a[_0xf633('0x2a')]);_0x127ab4[_0xf633('0x2d')]=_[_0xf633('0x2c')](_0x3c1d5a[_0xf633('0x28')],qs[_0xf633('0x2e')](_0x2fbb6e[_0xf633('0x2a')][_0xf633('0x2e')]));_0x127ab4['attributes']=_0x127ab4[_0xf633('0x2d')]['length']?_0x127ab4[_0xf633('0x2d')]:_0x3c1d5a[_0xf633('0x28')];if(!_0x2fbb6e[_0xf633('0x2a')][_0xf633('0x2f')]('nolimit')){_0x127ab4['limit']=qs[_0xf633('0x19')](_0x2fbb6e[_0xf633('0x2a')][_0xf633('0x19')]);_0x127ab4[_0xf633('0x18')]=qs[_0xf633('0x18')](_0x2fbb6e['query'][_0xf633('0x18')]);}_0x127ab4[_0xf633('0x30')]=qs[_0xf633('0x31')](_0x2fbb6e[_0xf633('0x2a')][_0xf633('0x31')]);_0x127ab4[_0xf633('0x32')]=qs['filters'](_[_0xf633('0x33')](_0x2fbb6e[_0xf633('0x2a')],_0x3c1d5a[_0xf633('0x34')]),_0x45b7ec);if(_0x2fbb6e[_0xf633('0x2a')]['filter']){_0x127ab4[_0xf633('0x32')]=_[_0xf633('0x35')](_0x127ab4[_0xf633('0x32')],{'$or':_[_0xf633('0x29')](_0x45b7ec,function(_0x55142f){if(_0x55142f['type']!==_0xf633('0x36')){var _0x1ace1d={};_0x1ace1d[_0x55142f['name']]={'$like':'%'+_0x2fbb6e[_0xf633('0x2a')][_0xf633('0x37')]+'%'};return _0x1ace1d;}})});}_0x127ab4=_[_0xf633('0x35')]({},_0x127ab4,_0x2fbb6e[_0xf633('0x38')]);var _0x57bc19={'where':_0x127ab4[_0xf633('0x32')]};return db[_0xf633('0x23')][_0xf633('0x1a')](_0x57bc19)[_0xf633('0x1e')](function(_0xfd56de){_0x5b4d15[_0xf633('0x1a')]=_0xfd56de;if(_0x2fbb6e['query'][_0xf633('0x39')]){_0x127ab4[_0xf633('0x3a')]=[{'all':!![]}];}return db[_0xf633('0x23')][_0xf633('0x3b')](_0x127ab4);})[_0xf633('0x1e')](function(_0x5d2b15){_0x5b4d15[_0xf633('0x3c')]=_0x5d2b15;return _0x5b4d15;})[_0xf633('0x1e')](respondWithFilteredResult(_0x3d34db,_0x127ab4))[_0xf633('0x3d')](handleError(_0x3d34db,null));};exports['show']=function(_0xbe1adb,_0x45b1d2){var _0x174131={'raw':!![],'where':{'id':_0xbe1adb[_0xf633('0x3e')]['id']}},_0x5912e1={};_0x5912e1[_0xf633('0x28')]=_['keys'](db['ServicenowField'][_0xf633('0x24')]);_0x5912e1[_0xf633('0x2a')]=_[_0xf633('0x2b')](_0xbe1adb[_0xf633('0x2a')]);_0x5912e1[_0xf633('0x34')]=_[_0xf633('0x2c')](_0x5912e1[_0xf633('0x28')],_0x5912e1['query']);_0x174131['attributes']=_['intersection'](_0x5912e1['model'],qs[_0xf633('0x2e')](_0xbe1adb[_0xf633('0x2a')][_0xf633('0x2e')]));_0x174131[_0xf633('0x2d')]=_0x174131[_0xf633('0x2d')][_0xf633('0x3f')]?_0x174131['attributes']:_0x5912e1['model'];if(_0xbe1adb['query']['includeAll']){_0x174131['include']=[{'all':!![]}];}_0x174131=_[_0xf633('0x35')]({},_0x174131,_0xbe1adb[_0xf633('0x38')]);return db[_0xf633('0x23')][_0xf633('0x40')](_0x174131)[_0xf633('0x1e')](handleEntityNotFound(_0x45b1d2,null))[_0xf633('0x1e')](respondWithResult(_0x45b1d2,null))['catch'](handleError(_0x45b1d2,null));};exports['create']=function(_0x58c53,_0x2ebd3f){return db['ServicenowField'][_0xf633('0x41')](_0x58c53['body'],{})[_0xf633('0x1e')](respondWithResult(_0x2ebd3f,0xc9))['catch'](handleError(_0x2ebd3f,null));};exports[_0xf633('0x1d')]=function(_0x871c90,_0x25de24){if(_0x871c90[_0xf633('0x42')]['id']){delete _0x871c90[_0xf633('0x42')]['id'];}return db['ServicenowField']['find']({'where':{'id':_0x871c90[_0xf633('0x3e')]['id']}})['then'](handleEntityNotFound(_0x25de24,null))[_0xf633('0x1e')](saveUpdates(_0x871c90[_0xf633('0x42')],null))['then'](respondWithResult(_0x25de24,null))['catch'](handleError(_0x25de24,null));};exports[_0xf633('0x43')]=function(_0x3273e6,_0x56b077){return db[_0xf633('0x23')]['find']({'where':{'id':_0x3273e6[_0xf633('0x3e')]['id']}})[_0xf633('0x1e')](handleEntityNotFound(_0x56b077,null))[_0xf633('0x1e')](removeEntity(_0x56b077,null))[_0xf633('0x3d')](handleError(_0x56b077,null));};
\ No newline at end of file
index 5d5b278..5a91fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa01d=['util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','lodash'];(function(_0x137d8d,_0x19a582){var _0x2d91c0=function(_0x31ff43){while(--_0x31ff43){_0x137d8d['push'](_0x137d8d['shift']());}};_0x2d91c0(++_0x19a582);}(_0xa01d,0x176));var _0xda01=function(_0x2b3237,_0x14add9){_0x2b3237=_0x2b3237-0x0;var _0x559bc1=_0xa01d[_0x2b3237];return _0x559bc1;};'use strict';var _=require(_0xda01('0x0'));var util=require(_0xda01('0x1'));var logger=require(_0xda01('0x2'))('api');var moment=require(_0xda01('0x3'));var BPromise=require('bluebird');var rp=require(_0xda01('0x4'));var fs=require('fs');var path=require(_0xda01('0x5'));var rimraf=require(_0xda01('0x6'));var config=require(_0xda01('0x7'));var attributes=require(_0xda01('0x8'));module[_0xda01('0x9')]=function(_0x39056c,_0x5a0b15){return _0x39056c[_0xda01('0xa')](_0xda01('0xb'),attributes,{'tableName':_0xda01('0xc'),'paranoid':![],'indexes':[{'name':_0xda01('0xd'),'fields':[_0xda01('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6909=['exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x114ae4,_0x14bdc9){var _0x32f566=function(_0x4f3fd1){while(--_0x4f3fd1){_0x114ae4['push'](_0x114ae4['shift']());}};_0x32f566(++_0x14bdc9);}(_0x6909,0x1e3));var _0x9690=function(_0x2181ee,_0x21c98){_0x2181ee=_0x2181ee-0x0;var _0x404325=_0x6909[_0x2181ee];return _0x404325;};'use strict';var _=require('lodash');var util=require(_0x9690('0x0'));var logger=require('../../config/logger')(_0x9690('0x1'));var moment=require(_0x9690('0x2'));var BPromise=require(_0x9690('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9690('0x4'));var rimraf=require(_0x9690('0x5'));var config=require(_0x9690('0x6'));var attributes=require('./intServicenowField.attributes');module[_0x9690('0x7')]=function(_0x1fd22e,_0x184bb1){return _0x1fd22e[_0x9690('0x8')](_0x9690('0x9'),attributes,{'tableName':_0x9690('0xa'),'paranoid':![],'indexes':[{'name':_0x9690('0xb'),'fields':[_0x9690('0xc'),_0x9690('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7a26ddf..3b7fb42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['ServicenowField,\x20%s,\x20%s','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x22d27d,_0xe913c6){var _0x3ebeab=function(_0x3a3d17){while(--_0x3a3d17){_0x22d27d['push'](_0x22d27d['shift']());}};_0x3ebeab(++_0xe913c6);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2555d0,_0x4150a6){_0x2555d0=_0x2555d0-0x0;var _0x3bb486=_0xb7e7[_0x2555d0];return _0x3bb486;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}
\ No newline at end of file
+var _0x0713=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x367a2d,_0x49c2c5){var _0x10f750=function(_0x22e48b){while(--_0x22e48b){_0x367a2d['push'](_0x367a2d['shift']());}};_0x10f750(++_0x49c2c5);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 2b161a4..d5f80b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x723333,_0x3e15ec){var _0x5ca5de=function(_0x3ac499){while(--_0x3ac499){_0x723333['push'](_0x723333['shift']());}};_0x5ca5de(++_0x3e15ec);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x5912f8,_0x6e94e8){var _0x25c891=function(_0x47c3ea){while(--_0x47c3ea){_0x5912f8['push'](_0x5912f8['shift']());}};_0x25c891(++_0x6e94e8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa9e0[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index c7eaabf..15b5989 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x5e950c,_0x3db324){var _0x1fb570=function(_0x58d6ac){while(--_0x58d6ac){_0x5e950c['push'](_0x5e950c['shift']());}};_0x1fb570(++_0x3db324);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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(_0x3d2903,_0x21a081){var _0x5a859f=function(_0x5c7543){while(--_0x5c7543){_0x3d2903['push'](_0x3d2903['shift']());}};_0x5a859f(++_0x21a081);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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 e9e4189..7238d15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d44=['ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','index','map','SugarcrmAccount','rawAttributes','type','key','model','name','keys','filters','fields','query','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','length','find','create','body','getConfigurations','SugarcrmConfiguration','order','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','SugarcrmField','Subjects','getFields','description','date_start','duration_minutes','parent_id','parent_type','username','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','stringify','Calls','values','module_fields','includes','value','statusCode','error','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv'];(function(_0x53efde,_0x10e35d){var _0x2d3ffa=function(_0x34be68){while(--_0x34be68){_0x53efde['push'](_0x53efde['shift']());}};_0x2d3ffa(++_0x10e35d);}(_0x6d44,0x70));var _0x46d4=function(_0x1eb3f6,_0x3f8dc7){_0x1eb3f6=_0x1eb3f6-0x0;var _0x511f68=_0x6d44[_0x1eb3f6];return _0x511f68;};'use strict';var emlformat=require(_0x46d4('0x0'));var rimraf=require(_0x46d4('0x1'));var zipdir=require(_0x46d4('0x2'));var jsonpatch=require(_0x46d4('0x3'));var rp=require(_0x46d4('0x4'));var moment=require(_0x46d4('0x5'));var BPromise=require(_0x46d4('0x6'));var Mustache=require('mustache');var util=require(_0x46d4('0x7'));var path=require(_0x46d4('0x8'));var sox=require(_0x46d4('0x9'));var csv=require(_0x46d4('0xa'));var ejs=require(_0x46d4('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46d4('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x46d4('0xd'));var deskjs=require(_0x46d4('0xe'));var toCsv=require(_0x46d4('0xa'));var querystring=require(_0x46d4('0xf'));var Papa=require(_0x46d4('0x10'));var Redis=require(_0x46d4('0x11'));var authService=require(_0x46d4('0x12'));var qs=require(_0x46d4('0x13'));var as=require(_0x46d4('0x14'));var hardwareService=require(_0x46d4('0x15'));var logger=require(_0x46d4('0x16'))(_0x46d4('0x17'));var utils=require(_0x46d4('0x18'));var config=require(_0x46d4('0x19'));var licenseUtil=require(_0x46d4('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0x46d4('0x1b'));function respondWithStatusCode(_0x1c132b,_0x54e413){_0x54e413=_0x54e413||0xcc;return function(_0x338ee6){if(_0x338ee6){return _0x1c132b[_0x46d4('0x1c')](_0x54e413);}return _0x1c132b[_0x46d4('0x1d')](_0x54e413)[_0x46d4('0x1e')]();};}function respondWithResult(_0x4b5d23,_0x5e62eb){_0x5e62eb=_0x5e62eb||0xc8;return function(_0x3b2cf2){if(_0x3b2cf2){return _0x4b5d23[_0x46d4('0x1d')](_0x5e62eb)[_0x46d4('0x1f')](_0x3b2cf2);}};}function respondWithFilteredResult(_0x456d98,_0x22be3a){return function(_0xe24d95){if(_0xe24d95){var _0x5a50b3=typeof _0x22be3a[_0x46d4('0x20')]===_0x46d4('0x21')&&typeof _0x22be3a[_0x46d4('0x22')]===_0x46d4('0x21');var _0x215018=_0xe24d95[_0x46d4('0x23')];var _0x455724=_0x5a50b3?0x0:_0x22be3a[_0x46d4('0x20')];var _0x307364=_0x5a50b3?_0xe24d95[_0x46d4('0x23')]:_0x22be3a[_0x46d4('0x20')]+_0x22be3a[_0x46d4('0x22')];var _0x94ac89;if(_0x307364>=_0x215018){_0x307364=_0x215018;_0x94ac89=0xc8;}else{_0x94ac89=0xce;}_0x456d98['status'](_0x94ac89);return _0x456d98[_0x46d4('0x24')](_0x46d4('0x25'),_0x455724+'-'+_0x307364+'/'+_0x215018)[_0x46d4('0x1f')](_0xe24d95);}return null;};}function patchUpdates(_0x5b736a){return function(_0x44bedc){try{jsonpatch[_0x46d4('0x26')](_0x44bedc,_0x5b736a,!![]);}catch(_0x491ba9){return BPromise[_0x46d4('0x27')](_0x491ba9);}return _0x44bedc[_0x46d4('0x28')]();};}function saveUpdates(_0xebec8f,_0x13bdda){return function(_0x93fd4b){if(_0x93fd4b){return _0x93fd4b[_0x46d4('0x29')](_0xebec8f)[_0x46d4('0x2a')](function(_0x2c3123){return _0x2c3123;});}return null;};}function removeEntity(_0x26febe,_0x53e768){return function(_0x5c2327){if(_0x5c2327){return _0x5c2327[_0x46d4('0x2b')]()[_0x46d4('0x2a')](function(){_0x26febe['status'](0xcc)[_0x46d4('0x1e')]();});}};}function handleEntityNotFound(_0x5e60a6,_0xda304b){return function(_0x385bfc){if(!_0x385bfc){_0x5e60a6[_0x46d4('0x1c')](0x194);}return _0x385bfc;};}function handleError(_0x174439,_0x58ea3b){_0x58ea3b=_0x58ea3b||0x1f4;return function(_0x204026){logger['error'](_0x204026[_0x46d4('0x2c')]);if(_0x204026['name']){delete _0x204026['name'];}_0x174439['status'](_0x58ea3b)['send'](_0x204026);};}exports[_0x46d4('0x2d')]=function(_0x4707d7,_0x31f620){var _0x4441f2={},_0x405a86={},_0x53f30f={'count':0x0,'rows':[]};var _0x53e105=_[_0x46d4('0x2e')](db[_0x46d4('0x2f')][_0x46d4('0x30')],function(_0xb6f6df){return{'name':_0xb6f6df['fieldName'],'type':_0xb6f6df[_0x46d4('0x31')][_0x46d4('0x32')]};});_0x405a86[_0x46d4('0x33')]=_['map'](_0x53e105,_0x46d4('0x34'));_0x405a86['query']=_[_0x46d4('0x35')](_0x4707d7['query']);_0x405a86[_0x46d4('0x36')]=_['intersection'](_0x405a86[_0x46d4('0x33')],_0x405a86['query']);_0x4441f2['attributes']=_['intersection'](_0x405a86['model'],qs[_0x46d4('0x37')](_0x4707d7[_0x46d4('0x38')]['fields']));_0x4441f2[_0x46d4('0x39')]=_0x4441f2[_0x46d4('0x39')]['length']?_0x4441f2[_0x46d4('0x39')]:_0x405a86['model'];if(!_0x4707d7[_0x46d4('0x38')][_0x46d4('0x3a')](_0x46d4('0x3b'))){_0x4441f2[_0x46d4('0x22')]=qs[_0x46d4('0x22')](_0x4707d7[_0x46d4('0x38')]['limit']);_0x4441f2[_0x46d4('0x20')]=qs['offset'](_0x4707d7[_0x46d4('0x38')][_0x46d4('0x20')]);}_0x4441f2['order']=qs['sort'](_0x4707d7[_0x46d4('0x38')][_0x46d4('0x3c')]);_0x4441f2[_0x46d4('0x3d')]=qs[_0x46d4('0x36')](_[_0x46d4('0x3e')](_0x4707d7[_0x46d4('0x38')],_0x405a86[_0x46d4('0x36')]),_0x53e105);if(_0x4707d7['query'][_0x46d4('0x3f')]){_0x4441f2[_0x46d4('0x3d')]=_[_0x46d4('0x40')](_0x4441f2[_0x46d4('0x3d')],{'$or':_[_0x46d4('0x2e')](_0x53e105,function(_0x4896f2){if(_0x4896f2['type']!==_0x46d4('0x41')){var _0x25555f={};_0x25555f[_0x4896f2['name']]={'$like':'%'+_0x4707d7['query'][_0x46d4('0x3f')]+'%'};return _0x25555f;}})});}_0x4441f2=_['merge']({},_0x4441f2,_0x4707d7[_0x46d4('0x42')]);var _0x1ce852={'where':_0x4441f2[_0x46d4('0x3d')]};return db[_0x46d4('0x2f')]['count'](_0x1ce852)['then'](function(_0x362814){_0x53f30f[_0x46d4('0x23')]=_0x362814;if(_0x4707d7[_0x46d4('0x38')][_0x46d4('0x43')]){_0x4441f2[_0x46d4('0x44')]=[{'all':!![]}];}return db[_0x46d4('0x2f')][_0x46d4('0x45')](_0x4441f2);})[_0x46d4('0x2a')](function(_0x759389){_0x53f30f[_0x46d4('0x46')]=_0x759389;return _0x53f30f;})[_0x46d4('0x2a')](respondWithFilteredResult(_0x31f620,_0x4441f2))[_0x46d4('0x47')](handleError(_0x31f620,null));};exports[_0x46d4('0x48')]=function(_0x3effc0,_0x41e8c9){var _0x58ff76={'raw':![],'where':{'id':_0x3effc0[_0x46d4('0x49')]['id']}},_0x361ccd={};_0x361ccd[_0x46d4('0x33')]=_[_0x46d4('0x35')](db[_0x46d4('0x2f')][_0x46d4('0x30')]);_0x361ccd['query']=_[_0x46d4('0x35')](_0x3effc0[_0x46d4('0x38')]);_0x361ccd[_0x46d4('0x36')]=_[_0x46d4('0x4a')](_0x361ccd[_0x46d4('0x33')],_0x361ccd['query']);_0x58ff76['attributes']=_['intersection'](_0x361ccd[_0x46d4('0x33')],qs[_0x46d4('0x37')](_0x3effc0['query'][_0x46d4('0x37')]));_0x58ff76[_0x46d4('0x39')]=_0x58ff76[_0x46d4('0x39')][_0x46d4('0x4b')]?_0x58ff76[_0x46d4('0x39')]:_0x361ccd[_0x46d4('0x33')];if(_0x3effc0[_0x46d4('0x38')][_0x46d4('0x43')]){_0x58ff76[_0x46d4('0x44')]=[{'all':!![]}];}_0x58ff76=_[_0x46d4('0x40')]({},_0x58ff76,_0x3effc0['options']);return db[_0x46d4('0x2f')][_0x46d4('0x4c')](_0x58ff76)[_0x46d4('0x2a')](handleEntityNotFound(_0x41e8c9,null))[_0x46d4('0x2a')](respondWithResult(_0x41e8c9,null))[_0x46d4('0x47')](handleError(_0x41e8c9,null));};exports[_0x46d4('0x4d')]=function(_0x59f153,_0x4c9ee2){return db[_0x46d4('0x2f')][_0x46d4('0x4d')](_0x59f153[_0x46d4('0x4e')],{})[_0x46d4('0x2a')](respondWithResult(_0x4c9ee2,0xc9))[_0x46d4('0x47')](handleError(_0x4c9ee2,null));};exports[_0x46d4('0x29')]=function(_0x46221d,_0x151567){if(_0x46221d['body']['id']){delete _0x46221d[_0x46d4('0x4e')]['id'];}return db[_0x46d4('0x2f')]['find']({'where':{'id':_0x46221d['params']['id']}})[_0x46d4('0x2a')](handleEntityNotFound(_0x151567,null))[_0x46d4('0x2a')](saveUpdates(_0x46221d['body'],null))[_0x46d4('0x2a')](respondWithResult(_0x151567,null))[_0x46d4('0x47')](handleError(_0x151567,null));};exports[_0x46d4('0x2b')]=function(_0x49b67e,_0x165a4d){return db[_0x46d4('0x2f')]['find']({'where':{'id':_0x49b67e[_0x46d4('0x49')]['id']}})[_0x46d4('0x2a')](handleEntityNotFound(_0x165a4d,null))[_0x46d4('0x2a')](removeEntity(_0x165a4d,null))['catch'](handleError(_0x165a4d,null));};exports[_0x46d4('0x4f')]=function(_0x5a02fd,_0x2ad388,_0xb30c32){var _0x56e8bb={};var _0x4e32f3={};var _0x1375de;var _0x3b50de;return db[_0x46d4('0x2f')]['findOne']({'where':{'id':_0x5a02fd[_0x46d4('0x49')]['id']}})[_0x46d4('0x2a')](handleEntityNotFound(_0x2ad388,null))[_0x46d4('0x2a')](function(_0x33541d){if(_0x33541d){_0x1375de=_0x33541d;_0x4e32f3[_0x46d4('0x33')]=_[_0x46d4('0x35')](db[_0x46d4('0x50')]['rawAttributes']);_0x4e32f3[_0x46d4('0x38')]=_['keys'](_0x5a02fd[_0x46d4('0x38')]);_0x4e32f3[_0x46d4('0x36')]=_[_0x46d4('0x4a')](_0x4e32f3[_0x46d4('0x33')],_0x4e32f3[_0x46d4('0x38')]);_0x56e8bb[_0x46d4('0x39')]=_['intersection'](_0x4e32f3[_0x46d4('0x33')],qs['fields'](_0x5a02fd[_0x46d4('0x38')][_0x46d4('0x37')]));_0x56e8bb[_0x46d4('0x39')]=_0x56e8bb[_0x46d4('0x39')]['length']?_0x56e8bb[_0x46d4('0x39')]:_0x4e32f3[_0x46d4('0x33')];_0x56e8bb[_0x46d4('0x51')]=qs['sort'](_0x5a02fd[_0x46d4('0x38')][_0x46d4('0x3c')]);_0x56e8bb[_0x46d4('0x3d')]=qs[_0x46d4('0x36')](_['pick'](_0x5a02fd[_0x46d4('0x38')],_0x4e32f3[_0x46d4('0x36')]));if(_0x5a02fd['query']['filter']){_0x56e8bb[_0x46d4('0x3d')]=_['merge'](_0x56e8bb['where'],{'$or':_[_0x46d4('0x2e')](_0x56e8bb[_0x46d4('0x39')],function(_0x36bde7){var _0x1e789f={};_0x1e789f[_0x36bde7]={'$like':'%'+_0x5a02fd[_0x46d4('0x38')][_0x46d4('0x3f')]+'%'};return _0x1e789f;})});}_0x56e8bb=_[_0x46d4('0x40')]({},_0x56e8bb,_0x5a02fd['options']);return _0x1375de[_0x46d4('0x4f')](_0x56e8bb);}})[_0x46d4('0x2a')](function(_0x5f382b){if(_0x5f382b){_0x3b50de=_0x5f382b[_0x46d4('0x4b')];if(!_0x5a02fd[_0x46d4('0x38')][_0x46d4('0x3a')](_0x46d4('0x3b'))){_0x56e8bb[_0x46d4('0x22')]=qs[_0x46d4('0x22')](_0x5a02fd[_0x46d4('0x38')][_0x46d4('0x22')]);_0x56e8bb[_0x46d4('0x20')]=qs[_0x46d4('0x20')](_0x5a02fd[_0x46d4('0x38')][_0x46d4('0x20')]);}return _0x1375de[_0x46d4('0x4f')](_0x56e8bb);}})[_0x46d4('0x2a')](function(_0x45e1dc){if(_0x45e1dc){return _0x45e1dc?{'count':_0x3b50de,'rows':_0x45e1dc}:null;}})[_0x46d4('0x2a')](respondWithResult(_0x2ad388,null))[_0x46d4('0x47')](handleError(_0x2ad388,null));};exports[_0x46d4('0x52')]=function(_0x1ea2bf,_0x1fa24a,_0x14849c){if(_0x1ea2bf[_0x46d4('0x4e')]['id']){delete _0x1ea2bf[_0x46d4('0x4e')]['id'];}return db[_0x46d4('0x2f')][_0x46d4('0x53')]({'where':{'id':_0x1ea2bf[_0x46d4('0x49')]['id']}})[_0x46d4('0x2a')](handleEntityNotFound(_0x1fa24a,null))[_0x46d4('0x2a')](function(_0x404142){if(_0x404142){_0x1ea2bf[_0x46d4('0x4e')][_0x46d4('0x54')]=_0x404142['id'];_0x1ea2bf['body']['Subjects']=integrations[_0x46d4('0x55')](_0x1ea2bf['body'][_0x46d4('0x56')],_0x1ea2bf[_0x46d4('0x4e')][_0x46d4('0x31')]);_0x1ea2bf[_0x46d4('0x4e')][_0x46d4('0x57')]=integrations['getDescriptions'](_0x1ea2bf[_0x46d4('0x4e')][_0x46d4('0x56')],_0x1ea2bf[_0x46d4('0x4e')][_0x46d4('0x31')]);return db[_0x46d4('0x50')][_0x46d4('0x4d')](_0x1ea2bf['body'],{'include':[{'model':db[_0x46d4('0x58')],'as':_0x46d4('0x59')},{'model':db[_0x46d4('0x58')],'as':_0x46d4('0x57')}]});}return null;})[_0x46d4('0x2a')](respondWithResult(_0x1fa24a,null))['catch'](handleError(_0x1fa24a,null));};exports[_0x46d4('0x5a')]=function(_0x2e4ace,_0x190da1,_0x361a8d){var _0x1515b5='';var _0x2f3257=['id',_0x46d4('0x34'),'assigned_user_id','created_by',_0x46d4('0x5b'),_0x46d4('0x5c'),'duration_hours',_0x46d4('0x5d'),_0x46d4('0x5e'),_0x46d4('0x5f'),'parent_name','direction'];return db['SugarcrmAccount'][_0x46d4('0x53')]({'where':{'id':_0x2e4ace[_0x46d4('0x49')]['id']},'attributes':['id',_0x46d4('0x60'),'password',_0x46d4('0x61')]})[_0x46d4('0x2a')](handleEntityNotFound(_0x190da1,null))[_0x46d4('0x2a')](function(_0xdcb831){if(_0xdcb831){_0x1515b5=_0xdcb831[_0x46d4('0x61')];var _0xf153b6=_0x1515b5[_0x46d4('0x62')](-0x1);if(_0xf153b6==='/'){_0x1515b5=_0x1515b5[_0x46d4('0x63')](0x0,_0x1515b5[_0x46d4('0x64')](_0xf153b6));}return rp({'method':_0x46d4('0x65'),'uri':util[_0x46d4('0x66')](_0x46d4('0x67'),_0x1515b5,_0x46d4('0x68')),'json':!![],'form':{'method':_0x46d4('0x69'),'input_type':_0x46d4('0x6a'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0xdcb831[_0x46d4('0x60')],'password':_0xdcb831[_0x46d4('0x6b')],'encryption':_0x46d4('0x6c')},'application':_0x46d4('0x6d')})}});}})[_0x46d4('0x2a')](function(_0x32a90d){if(_0x32a90d&&_0x32a90d['name']!==_0x46d4('0x6e')&&_0x32a90d[_0x46d4('0x34')]!==_0x46d4('0x6f')){return rp({'method':_0x46d4('0x65'),'uri':util['format'](_0x46d4('0x67'),_0x1515b5,_0x46d4('0x68')),'json':!![],'form':{'method':'get_module_fields','input_type':_0x46d4('0x6a'),'response_type':_0x46d4('0x6a'),'rest_data':JSON[_0x46d4('0x70')]({'session':_0x32a90d['id'],'module_name':_0x46d4('0x71')})}})[_0x46d4('0x2a')](function(_0x217249){if(_0x217249){var _0x34ae66=_[_0x46d4('0x72')](_0x217249[_0x46d4('0x73')]);_['remove'](_0x34ae66,function(_0x49cf42){return _0x2f3257[_0x46d4('0x74')](_0x49cf42[_0x46d4('0x34')]);});return{'count':_0x34ae66[_0x46d4('0x4b')],'rows':_['map'](_0x34ae66,function(_0xc239ec){return{'id':_0xc239ec[_0x46d4('0x34')],'name':_0xc239ec['label'],'custom':_['endsWith'](_0xc239ec[_0x46d4('0x34')],'_c')?!![]:![],'options':_0xc239ec['options']?_[_0x46d4('0x2e')](_[_0x46d4('0x72')](_0xc239ec[_0x46d4('0x42')]),function(_0x5d1611){return{'name':_0x5d1611[_0x46d4('0x75')],'value':_0x5d1611[_0x46d4('0x34')]};}):[]};})};}})[_0x46d4('0x2a')](respondWithResult(_0x190da1,null))[_0x46d4('0x47')](function(_0x1b0d56){var _0x1a562e=_0x2e4ace[_0x46d4('0x38')]['test']?0x1f4:_0x1b0d56[_0x46d4('0x76')]||0x1f4;logger[_0x46d4('0x77')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x1a562e,JSON[_0x46d4('0x70')](_0x1b0d56));delete _0x1b0d56[_0x46d4('0x34')];if(_0x1a562e===0x191){_0x1a562e=0x190;}_0x190da1['status'](_0x1a562e)[_0x46d4('0x78')](_0x2e4ace[_0x46d4('0x38')][_0x46d4('0x79')]?{'message':_0x46d4('0x7a'),'statusCode':_0x1b0d56[_0x46d4('0x76')]}:_0x1b0d56);});}else{var _0xcac212=0x1f4;_0x190da1['status'](_0xcac212)[_0x46d4('0x78')]({'message':_0x46d4('0x7a'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xc9d4=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','map','rawAttributes','fieldName','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','merge','SugarcrmAccount','include','rows','catch','params','keys','includeAll','options','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','SugarcrmField','Descriptions','getFields','assigned_user_id','created_by','description','duration_hours','duration_minutes','parent_name','direction','username','remoteUri','slice','lastIndexOf','POST','format','%s%s','login','JSON','stringify','password','xCALLY\x20Motion\x20Integration','Password\x20Expired','/service/v4_1/rest.php','get_module_fields','Calls','values','module_fields','remove','includes','label','endsWith','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf'];(function(_0x284bc3,_0x22dffe){var _0x41ac81=function(_0x47031f){while(--_0x47031f){_0x284bc3['push'](_0x284bc3['shift']());}};_0x41ac81(++_0x22dffe);}(_0xc9d4,0xf0));var _0x4c9d=function(_0x37b46c,_0x4595ec){_0x37b46c=_0x37b46c-0x0;var _0x2402d0=_0xc9d4[_0x37b46c];return _0x2402d0;};'use strict';var emlformat=require(_0x4c9d('0x0'));var rimraf=require(_0x4c9d('0x1'));var zipdir=require(_0x4c9d('0x2'));var jsonpatch=require(_0x4c9d('0x3'));var rp=require(_0x4c9d('0x4'));var moment=require(_0x4c9d('0x5'));var BPromise=require(_0x4c9d('0x6'));var Mustache=require(_0x4c9d('0x7'));var util=require(_0x4c9d('0x8'));var path=require(_0x4c9d('0x9'));var sox=require(_0x4c9d('0xa'));var csv=require(_0x4c9d('0xb'));var ejs=require(_0x4c9d('0xc'));var fs=require('fs');var fs_extra=require(_0x4c9d('0xd'));var _=require(_0x4c9d('0xe'));var squel=require(_0x4c9d('0xf'));var crypto=require('crypto');var jsforce=require(_0x4c9d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x4c9d('0xb'));var querystring=require(_0x4c9d('0x11'));var Papa=require(_0x4c9d('0x12'));var Redis=require(_0x4c9d('0x13'));var authService=require(_0x4c9d('0x14'));var qs=require(_0x4c9d('0x15'));var as=require(_0x4c9d('0x16'));var hardwareService=require(_0x4c9d('0x17'));var logger=require(_0x4c9d('0x18'))(_0x4c9d('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4c9d('0x1a'));var db=require(_0x4c9d('0x1b'))['db'];var integrations=require(_0x4c9d('0x1c'));function respondWithStatusCode(_0x43fa4e,_0x2533d4){_0x2533d4=_0x2533d4||0xcc;return function(_0x5e32be){if(_0x5e32be){return _0x43fa4e[_0x4c9d('0x1d')](_0x2533d4);}return _0x43fa4e[_0x4c9d('0x1e')](_0x2533d4)['end']();};}function respondWithResult(_0x5c70d3,_0x375825){_0x375825=_0x375825||0xc8;return function(_0xb0fa62){if(_0xb0fa62){return _0x5c70d3[_0x4c9d('0x1e')](_0x375825)[_0x4c9d('0x1f')](_0xb0fa62);}};}function respondWithFilteredResult(_0x399c69,_0x3d2980){return function(_0x5eadc0){if(_0x5eadc0){var _0x65ca85=typeof _0x3d2980[_0x4c9d('0x20')]===_0x4c9d('0x21')&&typeof _0x3d2980[_0x4c9d('0x22')]===_0x4c9d('0x21');var _0x265c37=_0x5eadc0[_0x4c9d('0x23')];var _0x5224b2=_0x65ca85?0x0:_0x3d2980[_0x4c9d('0x20')];var _0x122063=_0x65ca85?_0x5eadc0['count']:_0x3d2980[_0x4c9d('0x20')]+_0x3d2980[_0x4c9d('0x22')];var _0x19e386;if(_0x122063>=_0x265c37){_0x122063=_0x265c37;_0x19e386=0xc8;}else{_0x19e386=0xce;}_0x399c69['status'](_0x19e386);return _0x399c69[_0x4c9d('0x24')](_0x4c9d('0x25'),_0x5224b2+'-'+_0x122063+'/'+_0x265c37)[_0x4c9d('0x1f')](_0x5eadc0);}return null;};}function patchUpdates(_0x11007a){return function(_0x38dfaa){try{jsonpatch['apply'](_0x38dfaa,_0x11007a,!![]);}catch(_0x5b5202){return BPromise['reject'](_0x5b5202);}return _0x38dfaa[_0x4c9d('0x26')]();};}function saveUpdates(_0x4c1a2e,_0x393ced){return function(_0x56a86f){if(_0x56a86f){return _0x56a86f[_0x4c9d('0x27')](_0x4c1a2e)[_0x4c9d('0x28')](function(_0x1f77a0){return _0x1f77a0;});}return null;};}function removeEntity(_0x580c94,_0x131633){return function(_0x27d5a9){if(_0x27d5a9){return _0x27d5a9[_0x4c9d('0x29')]()[_0x4c9d('0x28')](function(){_0x580c94[_0x4c9d('0x1e')](0xcc)[_0x4c9d('0x2a')]();});}};}function handleEntityNotFound(_0x1a96b5,_0x33ea58){return function(_0x11891a){if(!_0x11891a){_0x1a96b5[_0x4c9d('0x1d')](0x194);}return _0x11891a;};}function handleError(_0x38abaf,_0x588f07){_0x588f07=_0x588f07||0x1f4;return function(_0x2c86bb){logger[_0x4c9d('0x2b')](_0x2c86bb[_0x4c9d('0x2c')]);if(_0x2c86bb['name']){delete _0x2c86bb[_0x4c9d('0x2d')];}_0x38abaf['status'](_0x588f07)[_0x4c9d('0x2e')](_0x2c86bb);};}exports['index']=function(_0x565b03,_0x1c33f4){var _0x49ef8b={},_0x26ab1c={},_0x332dbb={'count':0x0,'rows':[]};var _0x9af1b0=_[_0x4c9d('0x2f')](db['SugarcrmAccount'][_0x4c9d('0x30')],function(_0x40f86a){return{'name':_0x40f86a[_0x4c9d('0x31')],'type':_0x40f86a['type']['key']};});_0x26ab1c['model']=_[_0x4c9d('0x2f')](_0x9af1b0,_0x4c9d('0x2d'));_0x26ab1c[_0x4c9d('0x32')]=_['keys'](_0x565b03[_0x4c9d('0x32')]);_0x26ab1c[_0x4c9d('0x33')]=_[_0x4c9d('0x34')](_0x26ab1c[_0x4c9d('0x35')],_0x26ab1c[_0x4c9d('0x32')]);_0x49ef8b[_0x4c9d('0x36')]=_['intersection'](_0x26ab1c[_0x4c9d('0x35')],qs[_0x4c9d('0x37')](_0x565b03['query'][_0x4c9d('0x37')]));_0x49ef8b['attributes']=_0x49ef8b[_0x4c9d('0x36')][_0x4c9d('0x38')]?_0x49ef8b['attributes']:_0x26ab1c[_0x4c9d('0x35')];if(!_0x565b03['query'][_0x4c9d('0x39')]('nolimit')){_0x49ef8b[_0x4c9d('0x22')]=qs[_0x4c9d('0x22')](_0x565b03[_0x4c9d('0x32')][_0x4c9d('0x22')]);_0x49ef8b[_0x4c9d('0x20')]=qs[_0x4c9d('0x20')](_0x565b03[_0x4c9d('0x32')][_0x4c9d('0x20')]);}_0x49ef8b[_0x4c9d('0x3a')]=qs[_0x4c9d('0x3b')](_0x565b03[_0x4c9d('0x32')][_0x4c9d('0x3b')]);_0x49ef8b[_0x4c9d('0x3c')]=qs[_0x4c9d('0x33')](_[_0x4c9d('0x3d')](_0x565b03[_0x4c9d('0x32')],_0x26ab1c[_0x4c9d('0x33')]),_0x9af1b0);if(_0x565b03[_0x4c9d('0x32')][_0x4c9d('0x3e')]){_0x49ef8b['where']=_['merge'](_0x49ef8b['where'],{'$or':_[_0x4c9d('0x2f')](_0x9af1b0,function(_0x40eebe){if(_0x40eebe[_0x4c9d('0x3f')]!=='VIRTUAL'){var _0x397fd5={};_0x397fd5[_0x40eebe['name']]={'$like':'%'+_0x565b03['query'][_0x4c9d('0x3e')]+'%'};return _0x397fd5;}})});}_0x49ef8b=_[_0x4c9d('0x40')]({},_0x49ef8b,_0x565b03['options']);var _0x542273={'where':_0x49ef8b[_0x4c9d('0x3c')]};return db[_0x4c9d('0x41')]['count'](_0x542273)[_0x4c9d('0x28')](function(_0x5aa548){_0x332dbb['count']=_0x5aa548;if(_0x565b03[_0x4c9d('0x32')]['includeAll']){_0x49ef8b[_0x4c9d('0x42')]=[{'all':!![]}];}return db[_0x4c9d('0x41')]['findAll'](_0x49ef8b);})[_0x4c9d('0x28')](function(_0x55a5a0){_0x332dbb[_0x4c9d('0x43')]=_0x55a5a0;return _0x332dbb;})['then'](respondWithFilteredResult(_0x1c33f4,_0x49ef8b))[_0x4c9d('0x44')](handleError(_0x1c33f4,null));};exports['show']=function(_0x14e55c,_0x5a7b16){var _0x1f390a={'raw':![],'where':{'id':_0x14e55c[_0x4c9d('0x45')]['id']}},_0x3dae2f={};_0x3dae2f[_0x4c9d('0x35')]=_[_0x4c9d('0x46')](db[_0x4c9d('0x41')][_0x4c9d('0x30')]);_0x3dae2f['query']=_[_0x4c9d('0x46')](_0x14e55c[_0x4c9d('0x32')]);_0x3dae2f[_0x4c9d('0x33')]=_['intersection'](_0x3dae2f[_0x4c9d('0x35')],_0x3dae2f[_0x4c9d('0x32')]);_0x1f390a[_0x4c9d('0x36')]=_['intersection'](_0x3dae2f['model'],qs[_0x4c9d('0x37')](_0x14e55c[_0x4c9d('0x32')][_0x4c9d('0x37')]));_0x1f390a[_0x4c9d('0x36')]=_0x1f390a[_0x4c9d('0x36')]['length']?_0x1f390a[_0x4c9d('0x36')]:_0x3dae2f[_0x4c9d('0x35')];if(_0x14e55c[_0x4c9d('0x32')][_0x4c9d('0x47')]){_0x1f390a[_0x4c9d('0x42')]=[{'all':!![]}];}_0x1f390a=_[_0x4c9d('0x40')]({},_0x1f390a,_0x14e55c[_0x4c9d('0x48')]);return db[_0x4c9d('0x41')][_0x4c9d('0x49')](_0x1f390a)[_0x4c9d('0x28')](handleEntityNotFound(_0x5a7b16,null))[_0x4c9d('0x28')](respondWithResult(_0x5a7b16,null))['catch'](handleError(_0x5a7b16,null));};exports[_0x4c9d('0x4a')]=function(_0x396f79,_0x17bd4e){return db[_0x4c9d('0x41')][_0x4c9d('0x4a')](_0x396f79[_0x4c9d('0x4b')],{})[_0x4c9d('0x28')](respondWithResult(_0x17bd4e,0xc9))[_0x4c9d('0x44')](handleError(_0x17bd4e,null));};exports[_0x4c9d('0x27')]=function(_0x2690d9,_0x3b7752){if(_0x2690d9[_0x4c9d('0x4b')]['id']){delete _0x2690d9['body']['id'];}return db[_0x4c9d('0x41')]['find']({'where':{'id':_0x2690d9[_0x4c9d('0x45')]['id']}})[_0x4c9d('0x28')](handleEntityNotFound(_0x3b7752,null))['then'](saveUpdates(_0x2690d9[_0x4c9d('0x4b')],null))[_0x4c9d('0x28')](respondWithResult(_0x3b7752,null))[_0x4c9d('0x44')](handleError(_0x3b7752,null));};exports[_0x4c9d('0x29')]=function(_0x402304,_0x103c12){return db['SugarcrmAccount'][_0x4c9d('0x49')]({'where':{'id':_0x402304[_0x4c9d('0x45')]['id']}})['then'](handleEntityNotFound(_0x103c12,null))[_0x4c9d('0x28')](removeEntity(_0x103c12,null))[_0x4c9d('0x44')](handleError(_0x103c12,null));};exports[_0x4c9d('0x4c')]=function(_0x49a557,_0x18585c,_0x24f589){var _0x531afe={};var _0x2a526e={};var _0x3d10b6;var _0x2c05d8;return db['SugarcrmAccount'][_0x4c9d('0x4d')]({'where':{'id':_0x49a557[_0x4c9d('0x45')]['id']}})[_0x4c9d('0x28')](handleEntityNotFound(_0x18585c,null))['then'](function(_0x531815){if(_0x531815){_0x3d10b6=_0x531815;_0x2a526e[_0x4c9d('0x35')]=_[_0x4c9d('0x46')](db[_0x4c9d('0x4e')][_0x4c9d('0x30')]);_0x2a526e['query']=_[_0x4c9d('0x46')](_0x49a557[_0x4c9d('0x32')]);_0x2a526e[_0x4c9d('0x33')]=_[_0x4c9d('0x34')](_0x2a526e[_0x4c9d('0x35')],_0x2a526e[_0x4c9d('0x32')]);_0x531afe[_0x4c9d('0x36')]=_[_0x4c9d('0x34')](_0x2a526e[_0x4c9d('0x35')],qs[_0x4c9d('0x37')](_0x49a557['query'][_0x4c9d('0x37')]));_0x531afe[_0x4c9d('0x36')]=_0x531afe[_0x4c9d('0x36')][_0x4c9d('0x38')]?_0x531afe['attributes']:_0x2a526e[_0x4c9d('0x35')];_0x531afe['order']=qs['sort'](_0x49a557[_0x4c9d('0x32')][_0x4c9d('0x3b')]);_0x531afe[_0x4c9d('0x3c')]=qs[_0x4c9d('0x33')](_[_0x4c9d('0x3d')](_0x49a557[_0x4c9d('0x32')],_0x2a526e[_0x4c9d('0x33')]));if(_0x49a557[_0x4c9d('0x32')]['filter']){_0x531afe[_0x4c9d('0x3c')]=_[_0x4c9d('0x40')](_0x531afe[_0x4c9d('0x3c')],{'$or':_[_0x4c9d('0x2f')](_0x531afe[_0x4c9d('0x36')],function(_0x1d449b){var _0x1edbf0={};_0x1edbf0[_0x1d449b]={'$like':'%'+_0x49a557['query'][_0x4c9d('0x3e')]+'%'};return _0x1edbf0;})});}_0x531afe=_[_0x4c9d('0x40')]({},_0x531afe,_0x49a557['options']);return _0x3d10b6[_0x4c9d('0x4c')](_0x531afe);}})['then'](function(_0x6abebb){if(_0x6abebb){_0x2c05d8=_0x6abebb[_0x4c9d('0x38')];if(!_0x49a557[_0x4c9d('0x32')][_0x4c9d('0x39')](_0x4c9d('0x4f'))){_0x531afe['limit']=qs[_0x4c9d('0x22')](_0x49a557[_0x4c9d('0x32')][_0x4c9d('0x22')]);_0x531afe[_0x4c9d('0x20')]=qs[_0x4c9d('0x20')](_0x49a557[_0x4c9d('0x32')][_0x4c9d('0x20')]);}return _0x3d10b6[_0x4c9d('0x4c')](_0x531afe);}})['then'](function(_0x46aa7b){if(_0x46aa7b){return _0x46aa7b?{'count':_0x2c05d8,'rows':_0x46aa7b}:null;}})[_0x4c9d('0x28')](respondWithResult(_0x18585c,null))[_0x4c9d('0x44')](handleError(_0x18585c,null));};exports[_0x4c9d('0x50')]=function(_0x389c1c,_0x19d3c3,_0x157843){if(_0x389c1c['body']['id']){delete _0x389c1c[_0x4c9d('0x4b')]['id'];}return db[_0x4c9d('0x41')][_0x4c9d('0x4d')]({'where':{'id':_0x389c1c[_0x4c9d('0x45')]['id']}})[_0x4c9d('0x28')](handleEntityNotFound(_0x19d3c3,null))[_0x4c9d('0x28')](function(_0x60b777){if(_0x60b777){_0x389c1c['body'][_0x4c9d('0x51')]=_0x60b777['id'];_0x389c1c['body'][_0x4c9d('0x52')]=integrations[_0x4c9d('0x53')](_0x389c1c[_0x4c9d('0x4b')][_0x4c9d('0x54')],_0x389c1c[_0x4c9d('0x4b')][_0x4c9d('0x3f')]);_0x389c1c[_0x4c9d('0x4b')]['Descriptions']=integrations['getDescriptions'](_0x389c1c[_0x4c9d('0x4b')][_0x4c9d('0x54')],_0x389c1c[_0x4c9d('0x4b')]['type']);return db['SugarcrmConfiguration'][_0x4c9d('0x4a')](_0x389c1c[_0x4c9d('0x4b')],{'include':[{'model':db[_0x4c9d('0x55')],'as':_0x4c9d('0x52')},{'model':db['SugarcrmField'],'as':_0x4c9d('0x56')}]});}return null;})[_0x4c9d('0x28')](respondWithResult(_0x19d3c3,null))[_0x4c9d('0x44')](handleError(_0x19d3c3,null));};exports[_0x4c9d('0x57')]=function(_0x4a5ddc,_0x18848e,_0x2d586b){var _0xfeb3ed='';var _0x54501e=['id','name',_0x4c9d('0x58'),_0x4c9d('0x59'),_0x4c9d('0x5a'),'date_start',_0x4c9d('0x5b'),_0x4c9d('0x5c'),'parent_id','parent_type',_0x4c9d('0x5d'),_0x4c9d('0x5e')];return db[_0x4c9d('0x41')]['findOne']({'where':{'id':_0x4a5ddc[_0x4c9d('0x45')]['id']},'attributes':['id',_0x4c9d('0x5f'),'password',_0x4c9d('0x60')]})[_0x4c9d('0x28')](handleEntityNotFound(_0x18848e,null))['then'](function(_0x411536){if(_0x411536){_0xfeb3ed=_0x411536['remoteUri'];var _0xe76a78=_0xfeb3ed[_0x4c9d('0x61')](-0x1);if(_0xe76a78==='/'){_0xfeb3ed=_0xfeb3ed['substring'](0x0,_0xfeb3ed[_0x4c9d('0x62')](_0xe76a78));}return rp({'method':_0x4c9d('0x63'),'uri':util[_0x4c9d('0x64')](_0x4c9d('0x65'),_0xfeb3ed,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x4c9d('0x66'),'input_type':'JSON','response_type':_0x4c9d('0x67'),'rest_data':JSON[_0x4c9d('0x68')]({'user_auth':{'user_name':_0x411536[_0x4c9d('0x5f')],'password':_0x411536[_0x4c9d('0x69')],'encryption':'PLAIN'},'application':_0x4c9d('0x6a')})}});}})[_0x4c9d('0x28')](function(_0x4ade7d){if(_0x4ade7d&&_0x4ade7d[_0x4c9d('0x2d')]!=='Invalid\x20Login'&&_0x4ade7d['name']!==_0x4c9d('0x6b')){return rp({'method':_0x4c9d('0x63'),'uri':util[_0x4c9d('0x64')]('%s%s',_0xfeb3ed,_0x4c9d('0x6c')),'json':!![],'form':{'method':_0x4c9d('0x6d'),'input_type':_0x4c9d('0x67'),'response_type':_0x4c9d('0x67'),'rest_data':JSON[_0x4c9d('0x68')]({'session':_0x4ade7d['id'],'module_name':_0x4c9d('0x6e')})}})[_0x4c9d('0x28')](function(_0x4d8c31){if(_0x4d8c31){var _0x86d8b7=_[_0x4c9d('0x6f')](_0x4d8c31[_0x4c9d('0x70')]);_[_0x4c9d('0x71')](_0x86d8b7,function(_0x583a96){return _0x54501e[_0x4c9d('0x72')](_0x583a96['name']);});return{'count':_0x86d8b7[_0x4c9d('0x38')],'rows':_[_0x4c9d('0x2f')](_0x86d8b7,function(_0x38d815){return{'id':_0x38d815[_0x4c9d('0x2d')],'name':_0x38d815[_0x4c9d('0x73')],'custom':_[_0x4c9d('0x74')](_0x38d815['name'],'_c')?!![]:![],'options':_0x38d815[_0x4c9d('0x48')]?_[_0x4c9d('0x2f')](_['values'](_0x38d815[_0x4c9d('0x48')]),function(_0x50be7d){return{'name':_0x50be7d['value'],'value':_0x50be7d[_0x4c9d('0x2d')]};}):[]};})};}})[_0x4c9d('0x28')](respondWithResult(_0x18848e,null))[_0x4c9d('0x44')](function(_0x2747a7){var _0x7be87a=_0x4a5ddc[_0x4c9d('0x32')][_0x4c9d('0x75')]?0x1f4:_0x2747a7[_0x4c9d('0x76')]||0x1f4;logger[_0x4c9d('0x2b')](_0x4c9d('0x77'),_0x4c9d('0x57'),_0x7be87a,JSON['stringify'](_0x2747a7));delete _0x2747a7[_0x4c9d('0x2d')];if(_0x7be87a===0x191){_0x7be87a=0x190;}_0x18848e[_0x4c9d('0x1e')](_0x7be87a)['send'](_0x4a5ddc[_0x4c9d('0x32')][_0x4c9d('0x75')]?{'message':_0x4c9d('0x78'),'statusCode':_0x2747a7[_0x4c9d('0x76')]}:_0x2747a7);});}else{var _0x4ff89f=0x1f4;_0x18848e[_0x4c9d('0x1e')](_0x4ff89f)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index 810e4ca..81b694c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6bf=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts'];(function(_0x431f73,_0x51ae4c){var _0x49b36f=function(_0x415dba){while(--_0x415dba){_0x431f73['push'](_0x431f73['shift']());}};_0x49b36f(++_0x51ae4c);}(_0xc6bf,0x118));var _0xfc6b=function(_0x197d5c,_0x1936b0){_0x197d5c=_0x197d5c-0x0;var _0x13dc71=_0xc6bf[_0x197d5c];return _0x13dc71;};'use strict';var _=require(_0xfc6b('0x0'));var util=require(_0xfc6b('0x1'));var logger=require(_0xfc6b('0x2'))('api');var moment=require(_0xfc6b('0x3'));var BPromise=require(_0xfc6b('0x4'));var rp=require(_0xfc6b('0x5'));var fs=require('fs');var path=require(_0xfc6b('0x6'));var rimraf=require(_0xfc6b('0x7'));var config=require(_0xfc6b('0x8'));var attributes=require(_0xfc6b('0x9'));var integrations=require(_0xfc6b('0xa'));module['exports']=function(_0x27147a,_0x3a65df){return _0x27147a[_0xfc6b('0xb')](_0xfc6b('0xc'),attributes,{'tableName':_0xfc6b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x241c=['request-promise','path','../../config/environment','./intSugarcrmAccount.attributes','exports','int_sugarcrm_accounts','lodash','../../config/logger','api','moment','bluebird'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x241c,0x145));var _0xc241=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x241c[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xc241('0x0'));var util=require('util');var logger=require(_0xc241('0x1'))(_0xc241('0x2'));var moment=require(_0xc241('0x3'));var BPromise=require(_0xc241('0x4'));var rp=require(_0xc241('0x5'));var fs=require('fs');var path=require(_0xc241('0x6'));var rimraf=require('rimraf');var config=require(_0xc241('0x7'));var attributes=require(_0xc241('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xc241('0x9')]=function(_0x4e2093,_0x214949){return _0x4e2093['define']('SugarcrmAccount',attributes,{'tableName':_0xc241('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e76530..d06075c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6919=['then','info','SugarcrmAccount,\x20%s,\x20%s','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','raw','options','where','attributes','limit','include','model','ShowSugarcrmAccount','find','map','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x57d752,_0x1c0561){var _0x4a5b69=function(_0x269677){while(--_0x269677){_0x57d752['push'](_0x57d752['shift']());}};_0x4a5b69(++_0x1c0561);}(_0x6919,0x88));var _0x9691=function(_0x105c50,_0x29ba3e){_0x105c50=_0x105c50-0x0;var _0x570327=_0x6919[_0x105c50];return _0x570327;};'use strict';var _=require(_0x9691('0x0'));var util=require(_0x9691('0x1'));var moment=require(_0x9691('0x2'));var BPromise=require(_0x9691('0x3'));var rs=require(_0x9691('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9691('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9691('0x6'))(_0x9691('0x7'));var config=require(_0x9691('0x8'));var jayson=require(_0x9691('0x9'));var client=jayson['client'][_0x9691('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x548c9d,_0xa6a5d9,_0x1a66bb){return new BPromise(function(_0x42f10a,_0x42281e){return client[_0x9691('0xb')](_0x548c9d,_0x1a66bb)[_0x9691('0xc')](function(_0x3f99ca){logger[_0x9691('0xd')](_0x9691('0xe'),_0xa6a5d9,'request\x20sent');logger[_0x9691('0xf')](_0x9691('0x10'),_0xa6a5d9,_0x9691('0x11'),JSON[_0x9691('0x12')](_0x3f99ca));if(_0x3f99ca[_0x9691('0x13')]){if(_0x3f99ca[_0x9691('0x13')][_0x9691('0x14')]===0x1f4){logger[_0x9691('0x13')](_0x9691('0xe'),_0xa6a5d9,_0x3f99ca[_0x9691('0x13')][_0x9691('0x15')]);return _0x42281e(_0x3f99ca[_0x9691('0x13')][_0x9691('0x15')]);}logger[_0x9691('0x13')](_0x9691('0xe'),_0xa6a5d9,_0x3f99ca[_0x9691('0x13')]['message']);return _0x42f10a(_0x3f99ca[_0x9691('0x13')][_0x9691('0x15')]);}else{logger[_0x9691('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0xa6a5d9,_0x9691('0x11'));_0x42f10a(_0x3f99ca[_0x9691('0x16')][_0x9691('0x15')]);}})[_0x9691('0x17')](function(_0x181b61){logger['error'](_0x9691('0xe'),_0xa6a5d9,_0x181b61);_0x42281e(_0x181b61);});});}exports[_0x9691('0x18')]=function(_0x2d7c40){var _0x11840d=this;return new Promise(function(_0x19c8ba,_0x3ecba1){return db[_0x9691('0x19')][_0x9691('0x1a')]({'raw':_0x2d7c40['options']?_0x2d7c40['options'][_0x9691('0x1b')]===undefined?!![]:![]:!![],'where':_0x2d7c40[_0x9691('0x1c')]?_0x2d7c40[_0x9691('0x1c')][_0x9691('0x1d')]||null:null,'attributes':_0x2d7c40['options']?_0x2d7c40[_0x9691('0x1c')][_0x9691('0x1e')]||null:null,'limit':_0x2d7c40[_0x9691('0x1c')]?_0x2d7c40[_0x9691('0x1c')][_0x9691('0x1f')]||null:null,'include':_0x2d7c40['options']?_0x2d7c40['options'][_0x9691('0x20')]?_['map'](_0x2d7c40[_0x9691('0x1c')][_0x9691('0x20')],function(_0x38fc66){return{'model':db[_0x38fc66[_0x9691('0x21')]],'as':_0x38fc66['as'],'attributes':_0x38fc66[_0x9691('0x1e')],'include':_0x38fc66['include']?_['map'](_0x38fc66[_0x9691('0x20')],function(_0x2bdf28){return{'model':db[_0x2bdf28[_0x9691('0x21')]],'as':_0x2bdf28['as'],'attributes':_0x2bdf28[_0x9691('0x1e')],'include':_0x2bdf28[_0x9691('0x20')]?_['map'](_0x2bdf28[_0x9691('0x20')],function(_0x2bf7a5){return{'model':db[_0x2bf7a5[_0x9691('0x21')]],'as':_0x2bf7a5['as'],'attributes':_0x2bf7a5[_0x9691('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9691('0xc')](function(_0x5c46ff){logger[_0x9691('0xd')](_0x9691('0x18'),_0x2d7c40);logger[_0x9691('0xf')]('GetSugarcrmAccount',_0x2d7c40,JSON[_0x9691('0x12')](_0x5c46ff));_0x19c8ba(_0x5c46ff);})[_0x9691('0x17')](function(_0x578c21){logger[_0x9691('0x13')](_0x9691('0x18'),_0x578c21[_0x9691('0x15')],_0x2d7c40);_0x3ecba1(_0x11840d['error'](0x1f4,_0x578c21[_0x9691('0x15')]));});});};exports[_0x9691('0x22')]=function(_0x25c7fc){var _0x3086d7=this;return new Promise(function(_0x3585e1,_0x567dc1){return db[_0x9691('0x19')][_0x9691('0x23')]({'raw':_0x25c7fc[_0x9691('0x1c')]?_0x25c7fc[_0x9691('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x25c7fc[_0x9691('0x1c')]?_0x25c7fc[_0x9691('0x1c')][_0x9691('0x1d')]||null:null,'attributes':_0x25c7fc['options']?_0x25c7fc[_0x9691('0x1c')]['attributes']||null:null,'include':_0x25c7fc['options']?_0x25c7fc[_0x9691('0x1c')]['include']?_['map'](_0x25c7fc[_0x9691('0x1c')][_0x9691('0x20')],function(_0x3ea59b){return{'model':db[_0x3ea59b[_0x9691('0x21')]],'as':_0x3ea59b['as'],'attributes':_0x3ea59b['attributes'],'include':_0x3ea59b['include']?_[_0x9691('0x24')](_0x3ea59b[_0x9691('0x20')],function(_0x1c3989){return{'model':db[_0x1c3989[_0x9691('0x21')]],'as':_0x1c3989['as'],'attributes':_0x1c3989[_0x9691('0x1e')],'include':_0x1c3989[_0x9691('0x20')]?_[_0x9691('0x24')](_0x1c3989[_0x9691('0x20')],function(_0x474169){return{'model':db[_0x474169[_0x9691('0x21')]],'as':_0x474169['as'],'attributes':_0x474169['attributes']};}):[]};}):[]};}):[]:[]})[_0x9691('0xc')](function(_0x3c2add){logger[_0x9691('0xd')](_0x9691('0x22'),_0x25c7fc);logger['debug']('ShowSugarcrmAccount',_0x25c7fc,JSON[_0x9691('0x12')](_0x3c2add));_0x3585e1(_0x3c2add);})[_0x9691('0x17')](function(_0x5cbd25){logger['error'](_0x9691('0x22'),_0x5cbd25[_0x9691('0x15')],_0x25c7fc);_0x567dc1(_0x3086d7[_0x9691('0x13')](0x1f4,_0x5cbd25[_0x9691('0x15')]));});});};
\ No newline at end of file
+var _0xe002=['options','raw','where','attributes','limit','include','model','map','ShowSugarcrmAccount','find','util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','SugarcrmAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','GetSugarcrmAccount','SugarcrmAccount','findAll'];(function(_0x188a45,_0x4ddf52){var _0x12731d=function(_0x3912fd){while(--_0x3912fd){_0x188a45['push'](_0x188a45['shift']());}};_0x12731d(++_0x4ddf52);}(_0xe002,0xea));var _0x2e00=function(_0xffd8b0,_0x12c51f){_0xffd8b0=_0xffd8b0-0x0;var _0x301ba0=_0xe002[_0xffd8b0];return _0x301ba0;};'use strict';var _=require('lodash');var util=require(_0x2e00('0x0'));var moment=require('moment');var BPromise=require(_0x2e00('0x1'));var rs=require(_0x2e00('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2e00('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2e00('0x4'));var config=require(_0x2e00('0x5'));var jayson=require(_0x2e00('0x6'));var client=jayson[_0x2e00('0x7')][_0x2e00('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f39f2,_0x1e1bf4,_0x4f0d1f){return new BPromise(function(_0x10a5a5,_0x176248){return client['request'](_0x2f39f2,_0x4f0d1f)[_0x2e00('0x9')](function(_0x40d124){logger[_0x2e00('0xa')](_0x2e00('0xb'),_0x1e1bf4,'request\x20sent');logger[_0x2e00('0xc')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x1e1bf4,_0x2e00('0xd'),JSON[_0x2e00('0xe')](_0x40d124));if(_0x40d124[_0x2e00('0xf')]){if(_0x40d124['error'][_0x2e00('0x10')]===0x1f4){logger[_0x2e00('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x1e1bf4,_0x40d124['error'][_0x2e00('0x11')]);return _0x176248(_0x40d124[_0x2e00('0xf')][_0x2e00('0x11')]);}logger[_0x2e00('0xf')](_0x2e00('0xb'),_0x1e1bf4,_0x40d124[_0x2e00('0xf')][_0x2e00('0x11')]);return _0x10a5a5(_0x40d124[_0x2e00('0xf')]['message']);}else{logger[_0x2e00('0xa')](_0x2e00('0xb'),_0x1e1bf4,_0x2e00('0xd'));_0x10a5a5(_0x40d124['result']['message']);}})[_0x2e00('0x12')](function(_0x564148){logger[_0x2e00('0xf')](_0x2e00('0xb'),_0x1e1bf4,_0x564148);_0x176248(_0x564148);});});}exports[_0x2e00('0x13')]=function(_0x2a1585){var _0x19647a=this;return new Promise(function(_0x5226ef,_0x1a6127){return db[_0x2e00('0x14')][_0x2e00('0x15')]({'raw':_0x2a1585[_0x2e00('0x16')]?_0x2a1585['options'][_0x2e00('0x17')]===undefined?!![]:![]:!![],'where':_0x2a1585[_0x2e00('0x16')]?_0x2a1585['options'][_0x2e00('0x18')]||null:null,'attributes':_0x2a1585[_0x2e00('0x16')]?_0x2a1585[_0x2e00('0x16')][_0x2e00('0x19')]||null:null,'limit':_0x2a1585[_0x2e00('0x16')]?_0x2a1585[_0x2e00('0x16')][_0x2e00('0x1a')]||null:null,'include':_0x2a1585['options']?_0x2a1585[_0x2e00('0x16')][_0x2e00('0x1b')]?_['map'](_0x2a1585[_0x2e00('0x16')][_0x2e00('0x1b')],function(_0x3def41){return{'model':db[_0x3def41[_0x2e00('0x1c')]],'as':_0x3def41['as'],'attributes':_0x3def41[_0x2e00('0x19')],'include':_0x3def41[_0x2e00('0x1b')]?_[_0x2e00('0x1d')](_0x3def41[_0x2e00('0x1b')],function(_0x174181){return{'model':db[_0x174181[_0x2e00('0x1c')]],'as':_0x174181['as'],'attributes':_0x174181[_0x2e00('0x19')],'include':_0x174181[_0x2e00('0x1b')]?_['map'](_0x174181['include'],function(_0xf49f84){return{'model':db[_0xf49f84[_0x2e00('0x1c')]],'as':_0xf49f84['as'],'attributes':_0xf49f84[_0x2e00('0x19')]};}):[]};}):[]};}):[]:[]})[_0x2e00('0x9')](function(_0xe6c178){logger['info'](_0x2e00('0x13'),_0x2a1585);logger[_0x2e00('0xc')](_0x2e00('0x13'),_0x2a1585,JSON[_0x2e00('0xe')](_0xe6c178));_0x5226ef(_0xe6c178);})[_0x2e00('0x12')](function(_0xfd8d80){logger['error']('GetSugarcrmAccount',_0xfd8d80[_0x2e00('0x11')],_0x2a1585);_0x1a6127(_0x19647a[_0x2e00('0xf')](0x1f4,_0xfd8d80[_0x2e00('0x11')]));});});};exports[_0x2e00('0x1e')]=function(_0x34af34){var _0x3c344d=this;return new Promise(function(_0x299d0c,_0x57838a){return db['SugarcrmAccount'][_0x2e00('0x1f')]({'raw':_0x34af34[_0x2e00('0x16')]?_0x34af34[_0x2e00('0x16')][_0x2e00('0x17')]===undefined?!![]:![]:!![],'where':_0x34af34[_0x2e00('0x16')]?_0x34af34[_0x2e00('0x16')][_0x2e00('0x18')]||null:null,'attributes':_0x34af34[_0x2e00('0x16')]?_0x34af34['options'][_0x2e00('0x19')]||null:null,'include':_0x34af34[_0x2e00('0x16')]?_0x34af34[_0x2e00('0x16')][_0x2e00('0x1b')]?_['map'](_0x34af34['options'][_0x2e00('0x1b')],function(_0x502379){return{'model':db[_0x502379[_0x2e00('0x1c')]],'as':_0x502379['as'],'attributes':_0x502379[_0x2e00('0x19')],'include':_0x502379[_0x2e00('0x1b')]?_[_0x2e00('0x1d')](_0x502379[_0x2e00('0x1b')],function(_0xe12ae2){return{'model':db[_0xe12ae2[_0x2e00('0x1c')]],'as':_0xe12ae2['as'],'attributes':_0xe12ae2[_0x2e00('0x19')],'include':_0xe12ae2[_0x2e00('0x1b')]?_[_0x2e00('0x1d')](_0xe12ae2[_0x2e00('0x1b')],function(_0x166a7f){return{'model':db[_0x166a7f[_0x2e00('0x1c')]],'as':_0x166a7f['as'],'attributes':_0x166a7f[_0x2e00('0x19')]};}):[]};}):[]};}):[]:[]})[_0x2e00('0x9')](function(_0x479f4c){logger[_0x2e00('0xa')]('ShowSugarcrmAccount',_0x34af34);logger[_0x2e00('0xc')](_0x2e00('0x1e'),_0x34af34,JSON[_0x2e00('0xe')](_0x479f4c));_0x299d0c(_0x479f4c);})[_0x2e00('0x12')](function(_0x232b43){logger['error']('ShowSugarcrmAccount',_0x232b43[_0x2e00('0x11')],_0x34af34);_0x57838a(_0x3c344d['error'](0x1f4,_0x232b43[_0x2e00('0x11')]));});});};
\ No newline at end of file
index a7986b1..a9b3015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0465=['update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','index','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create'];(function(_0x12668a,_0x209bc5){var _0x1867c4=function(_0xc2386){while(--_0xc2386){_0x12668a['push'](_0x12668a['shift']());}};_0x1867c4(++_0x209bc5);}(_0x0465,0x80));var _0x5046=function(_0x2fa6f5,_0x42841b){_0x2fa6f5=_0x2fa6f5-0x0;var _0x40e8ab=_0x0465[_0x2fa6f5];return _0x40e8ab;};'use strict';var multer=require(_0x5046('0x0'));var util=require(_0x5046('0x1'));var path=require(_0x5046('0x2'));var timeout=require('connect-timeout');var express=require(_0x5046('0x3'));var router=express[_0x5046('0x4')]();var fs_extra=require(_0x5046('0x5'));var auth=require(_0x5046('0x6'));var interaction=require(_0x5046('0x7'));var config=require(_0x5046('0x8'));var controller=require(_0x5046('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x5046('0xa')]);router[_0x5046('0xb')](_0x5046('0xc'),auth[_0x5046('0xd')](),controller[_0x5046('0xe')]);router[_0x5046('0xb')](_0x5046('0xf'),auth[_0x5046('0xd')](),controller[_0x5046('0x10')]);router[_0x5046('0xb')](_0x5046('0x11'),auth[_0x5046('0xd')](),controller[_0x5046('0x12')]);router[_0x5046('0xb')](_0x5046('0x13'),auth[_0x5046('0xd')](),controller['getDescriptions']);router[_0x5046('0x14')]('/',auth[_0x5046('0xd')](),controller[_0x5046('0x15')]);router['put'](_0x5046('0xc'),auth[_0x5046('0xd')](),controller[_0x5046('0x16')]);router['delete'](_0x5046('0xc'),auth[_0x5046('0xd')](),controller[_0x5046('0x17')]);module[_0x5046('0x18')]=router;
\ No newline at end of file
+var _0xde48=['exports','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update'];(function(_0x2447d7,_0x3466fe){var _0x262442=function(_0x4fd8d5){while(--_0x4fd8d5){_0x2447d7['push'](_0x2447d7['shift']());}};_0x262442(++_0x3466fe);}(_0xde48,0x119));var _0x8de4=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xde48[_0x2bf141];return _0x48277b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8de4('0x0'));var timeout=require(_0x8de4('0x1'));var express=require('express');var router=express[_0x8de4('0x2')]();var fs_extra=require(_0x8de4('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x8de4('0x4'));var config=require('../../config/environment');var controller=require(_0x8de4('0x5'));router[_0x8de4('0x6')]('/',auth[_0x8de4('0x7')](),controller[_0x8de4('0x8')]);router[_0x8de4('0x6')]('/:id',auth[_0x8de4('0x7')](),controller[_0x8de4('0x9')]);router[_0x8de4('0x6')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x8de4('0x6')](_0x8de4('0xa'),auth[_0x8de4('0x7')](),controller[_0x8de4('0xb')]);router[_0x8de4('0x6')](_0x8de4('0xc'),auth[_0x8de4('0x7')](),controller[_0x8de4('0xd')]);router[_0x8de4('0xe')]('/',auth['isAuthenticated'](),controller[_0x8de4('0xf')]);router[_0x8de4('0x10')](_0x8de4('0x11'),auth[_0x8de4('0x7')](),controller[_0x8de4('0x12')]);router['delete'](_0x8de4('0x11'),auth[_0x8de4('0x7')](),controller['destroy']);module[_0x8de4('0x13')]=router;
\ No newline at end of file
index 38f6377..0da724e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebe7=['exports','STRING','sequelize'];(function(_0xa4378f,_0x46ad0a){var _0x2d6309=function(_0x550e50){while(--_0x550e50){_0xa4378f['push'](_0xa4378f['shift']());}};_0x2d6309(++_0x46ad0a);}(_0xebe7,0x140));var _0x7ebe=function(_0x1b0d17,_0x45b2b1){_0x1b0d17=_0x1b0d17-0x0;var _0x698670=_0xebe7[_0x1b0d17];return _0x698670;};'use strict';var Sequelize=require(_0x7ebe('0x0'));module[_0x7ebe('0x1')]={'name':{'type':Sequelize[_0x7ebe('0x2')]},'description':{'type':Sequelize[_0x7ebe('0x2')]}};
\ No newline at end of file
+var _0x429d=['sequelize'];(function(_0x3ac563,_0x53621e){var _0x3e855f=function(_0xd0d3fb){while(--_0xd0d3fb){_0x3ac563['push'](_0x3ac563['shift']());}};_0x3e855f(++_0x53621e);}(_0x429d,0xcd));var _0xd429=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x429d[_0x49ca18];return _0x145d54;};'use strict';var Sequelize=require(_0xd429('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3527951..f551181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f03=['type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','findOne','SugarcrmField','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','SugarcrmConfiguration'];(function(_0x425997,_0x4bff83){var _0x4d60a1=function(_0x19d21f){while(--_0x19d21f){_0x425997['push'](_0x425997['shift']());}};_0x4d60a1(++_0x4bff83);}(_0x4f03,0x74));var _0x34f0=function(_0x286bfb,_0x46ac3c){_0x286bfb=_0x286bfb-0x0;var _0x52b683=_0x4f03[_0x286bfb];return _0x52b683;};'use strict';var emlformat=require(_0x34f0('0x0'));var rimraf=require(_0x34f0('0x1'));var zipdir=require(_0x34f0('0x2'));var jsonpatch=require(_0x34f0('0x3'));var rp=require(_0x34f0('0x4'));var moment=require(_0x34f0('0x5'));var BPromise=require(_0x34f0('0x6'));var Mustache=require(_0x34f0('0x7'));var util=require(_0x34f0('0x8'));var path=require(_0x34f0('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x34f0('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34f0('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x34f0('0xc'));var toCsv=require(_0x34f0('0xd'));var querystring=require(_0x34f0('0xe'));var Papa=require('papaparse');var Redis=require(_0x34f0('0xf'));var authService=require(_0x34f0('0x10'));var qs=require(_0x34f0('0x11'));var as=require(_0x34f0('0x12'));var hardwareService=require(_0x34f0('0x13'));var logger=require('../../config/logger')(_0x34f0('0x14'));var utils=require('../../config/utils');var config=require(_0x34f0('0x15'));var licenseUtil=require(_0x34f0('0x16'));var db=require(_0x34f0('0x17'))['db'];function respondWithStatusCode(_0x2a63ff,_0x5e8720){_0x5e8720=_0x5e8720||0xcc;return function(_0x58f0c1){if(_0x58f0c1){return _0x2a63ff['sendStatus'](_0x5e8720);}return _0x2a63ff[_0x34f0('0x18')](_0x5e8720)[_0x34f0('0x19')]();};}function respondWithResult(_0xd4d259,_0x2ae814){_0x2ae814=_0x2ae814||0xc8;return function(_0x8ab9e8){if(_0x8ab9e8){return _0xd4d259['status'](_0x2ae814)['json'](_0x8ab9e8);}};}function respondWithFilteredResult(_0xeadf16,_0x2cb0c3){return function(_0x1725c5){if(_0x1725c5){var _0x1024d9=typeof _0x2cb0c3[_0x34f0('0x1a')]===_0x34f0('0x1b')&&typeof _0x2cb0c3[_0x34f0('0x1c')]===_0x34f0('0x1b');var _0xcb816b=_0x1725c5[_0x34f0('0x1d')];var _0x53e4bb=_0x1024d9?0x0:_0x2cb0c3[_0x34f0('0x1a')];var _0x23fcfc=_0x1024d9?_0x1725c5[_0x34f0('0x1d')]:_0x2cb0c3[_0x34f0('0x1a')]+_0x2cb0c3[_0x34f0('0x1c')];var _0x24875f;if(_0x23fcfc>=_0xcb816b){_0x23fcfc=_0xcb816b;_0x24875f=0xc8;}else{_0x24875f=0xce;}_0xeadf16[_0x34f0('0x18')](_0x24875f);return _0xeadf16[_0x34f0('0x1e')](_0x34f0('0x1f'),_0x53e4bb+'-'+_0x23fcfc+'/'+_0xcb816b)[_0x34f0('0x20')](_0x1725c5);}return null;};}function patchUpdates(_0x39afda){return function(_0x1042ba){try{jsonpatch[_0x34f0('0x21')](_0x1042ba,_0x39afda,!![]);}catch(_0x2d5aa2){return BPromise[_0x34f0('0x22')](_0x2d5aa2);}return _0x1042ba[_0x34f0('0x23')]();};}function saveUpdates(_0x4ff6d2,_0x596ffd){return function(_0x5bb73e){if(_0x5bb73e){return _0x5bb73e['update'](_0x4ff6d2)[_0x34f0('0x24')](function(_0xb959b1){return _0xb959b1;});}return null;};}function removeEntity(_0x1d229b,_0x319253){return function(_0x278c64){if(_0x278c64){return _0x278c64[_0x34f0('0x25')]()[_0x34f0('0x24')](function(){_0x1d229b['status'](0xcc)[_0x34f0('0x19')]();});}};}function handleEntityNotFound(_0x3c7870,_0x56e2d0){return function(_0x4c4897){if(!_0x4c4897){_0x3c7870[_0x34f0('0x26')](0x194);}return _0x4c4897;};}function handleError(_0x2d1b6,_0x23ea77){_0x23ea77=_0x23ea77||0x1f4;return function(_0xdb3799){logger[_0x34f0('0x27')](_0xdb3799[_0x34f0('0x28')]);if(_0xdb3799[_0x34f0('0x29')]){delete _0xdb3799['name'];}_0x2d1b6[_0x34f0('0x18')](_0x23ea77)[_0x34f0('0x2a')](_0xdb3799);};}exports[_0x34f0('0x2b')]=function(_0x38ad00,_0x457fec){var _0x212a92={},_0x402684={},_0x30fe36={'count':0x0,'rows':[]};var _0x417fd0=_[_0x34f0('0x2c')](db[_0x34f0('0x2d')]['rawAttributes'],function(_0x3ecfc2){return{'name':_0x3ecfc2['fieldName'],'type':_0x3ecfc2[_0x34f0('0x2e')][_0x34f0('0x2f')]};});_0x402684['model']=_[_0x34f0('0x2c')](_0x417fd0,_0x34f0('0x29'));_0x402684[_0x34f0('0x30')]=_[_0x34f0('0x31')](_0x38ad00[_0x34f0('0x30')]);_0x402684[_0x34f0('0x32')]=_[_0x34f0('0x33')](_0x402684[_0x34f0('0x34')],_0x402684[_0x34f0('0x30')]);_0x212a92[_0x34f0('0x35')]=_[_0x34f0('0x33')](_0x402684[_0x34f0('0x34')],qs[_0x34f0('0x36')](_0x38ad00[_0x34f0('0x30')]['fields']));_0x212a92['attributes']=_0x212a92[_0x34f0('0x35')][_0x34f0('0x37')]?_0x212a92[_0x34f0('0x35')]:_0x402684[_0x34f0('0x34')];if(!_0x38ad00[_0x34f0('0x30')][_0x34f0('0x38')](_0x34f0('0x39'))){_0x212a92[_0x34f0('0x1c')]=qs[_0x34f0('0x1c')](_0x38ad00[_0x34f0('0x30')]['limit']);_0x212a92['offset']=qs[_0x34f0('0x1a')](_0x38ad00[_0x34f0('0x30')][_0x34f0('0x1a')]);}_0x212a92[_0x34f0('0x3a')]=qs[_0x34f0('0x3b')](_0x38ad00['query'][_0x34f0('0x3b')]);_0x212a92[_0x34f0('0x3c')]=qs[_0x34f0('0x32')](_[_0x34f0('0x3d')](_0x38ad00[_0x34f0('0x30')],_0x402684[_0x34f0('0x32')]),_0x417fd0);if(_0x38ad00[_0x34f0('0x30')][_0x34f0('0x3e')]){_0x212a92['where']=_['merge'](_0x212a92['where'],{'$or':_[_0x34f0('0x2c')](_0x417fd0,function(_0xc9979b){if(_0xc9979b[_0x34f0('0x2e')]!==_0x34f0('0x3f')){var _0xbd81f8={};_0xbd81f8[_0xc9979b['name']]={'$like':'%'+_0x38ad00[_0x34f0('0x30')]['filter']+'%'};return _0xbd81f8;}})});}_0x212a92=_[_0x34f0('0x40')]({},_0x212a92,_0x38ad00[_0x34f0('0x41')]);var _0x56b8c7={'where':_0x212a92[_0x34f0('0x3c')]};return db[_0x34f0('0x2d')][_0x34f0('0x1d')](_0x56b8c7)['then'](function(_0x11b7f8){_0x30fe36[_0x34f0('0x1d')]=_0x11b7f8;if(_0x38ad00[_0x34f0('0x30')][_0x34f0('0x42')]){_0x212a92[_0x34f0('0x43')]=[{'all':!![]}];}return db[_0x34f0('0x2d')][_0x34f0('0x44')](_0x212a92);})['then'](function(_0x2e597a){_0x30fe36['rows']=_0x2e597a;return _0x30fe36;})[_0x34f0('0x24')](respondWithFilteredResult(_0x457fec,_0x212a92))[_0x34f0('0x45')](handleError(_0x457fec,null));};exports[_0x34f0('0x46')]=function(_0x38759a,_0x23a005){var _0x1fe1f5={'raw':![],'where':{'id':_0x38759a[_0x34f0('0x47')]['id']}},_0x544056={};_0x544056['model']=_[_0x34f0('0x31')](db[_0x34f0('0x2d')][_0x34f0('0x48')]);_0x544056[_0x34f0('0x30')]=_[_0x34f0('0x31')](_0x38759a[_0x34f0('0x30')]);_0x544056[_0x34f0('0x32')]=_[_0x34f0('0x33')](_0x544056[_0x34f0('0x34')],_0x544056[_0x34f0('0x30')]);_0x1fe1f5[_0x34f0('0x35')]=_[_0x34f0('0x33')](_0x544056['model'],qs['fields'](_0x38759a['query'][_0x34f0('0x36')]));_0x1fe1f5['attributes']=_0x1fe1f5['attributes'][_0x34f0('0x37')]?_0x1fe1f5[_0x34f0('0x35')]:_0x544056[_0x34f0('0x34')];if(_0x38759a[_0x34f0('0x30')]['includeAll']){_0x1fe1f5[_0x34f0('0x43')]=[{'all':!![]}];}_0x1fe1f5=_[_0x34f0('0x40')]({},_0x1fe1f5,_0x38759a[_0x34f0('0x41')]);return db[_0x34f0('0x2d')][_0x34f0('0x49')](_0x1fe1f5)[_0x34f0('0x24')](handleEntityNotFound(_0x23a005,null))[_0x34f0('0x24')](respondWithResult(_0x23a005,null))[_0x34f0('0x45')](handleError(_0x23a005,null));};exports['create']=function(_0x18b14b,_0x4550a6){return db[_0x34f0('0x2d')][_0x34f0('0x4a')](_0x18b14b['body'],{})[_0x34f0('0x24')](respondWithResult(_0x4550a6,0xc9))[_0x34f0('0x45')](handleError(_0x4550a6,null));};exports['update']=function(_0x57dff5,_0x296272){if(_0x57dff5[_0x34f0('0x4b')]['id']){delete _0x57dff5[_0x34f0('0x4b')]['id'];}return db['SugarcrmConfiguration'][_0x34f0('0x49')]({'where':{'id':_0x57dff5[_0x34f0('0x47')]['id']}})[_0x34f0('0x24')](handleEntityNotFound(_0x296272,null))[_0x34f0('0x24')](saveUpdates(_0x57dff5['body'],null))['then'](respondWithResult(_0x296272,null))[_0x34f0('0x45')](handleError(_0x296272,null));};exports['destroy']=function(_0x75ae38,_0x5c4e4e){return db[_0x34f0('0x2d')]['find']({'where':{'id':_0x75ae38[_0x34f0('0x47')]['id']}})['then'](handleEntityNotFound(_0x5c4e4e,null))['then'](removeEntity(_0x5c4e4e,null))[_0x34f0('0x45')](handleError(_0x5c4e4e,null));};exports['getFields']=function(_0x2da4cc,_0x3c7e5b,_0xa59e72){var _0x1c2fdf={};var _0x34aaa9={};var _0x366e70;var _0x33b236;return db[_0x34f0('0x2d')][_0x34f0('0x4c')]({'where':{'id':_0x2da4cc[_0x34f0('0x47')]['id']}})[_0x34f0('0x24')](handleEntityNotFound(_0x3c7e5b,null))[_0x34f0('0x24')](function(_0xc6a787){if(_0xc6a787){_0x366e70=_0xc6a787;_0x34aaa9[_0x34f0('0x34')]=_[_0x34f0('0x31')](db[_0x34f0('0x4d')][_0x34f0('0x48')]);_0x34aaa9[_0x34f0('0x30')]=_[_0x34f0('0x31')](_0x2da4cc['query']);_0x34aaa9['filters']=_[_0x34f0('0x33')](_0x34aaa9['model'],_0x34aaa9[_0x34f0('0x30')]);_0x1c2fdf['attributes']=_[_0x34f0('0x33')](_0x34aaa9[_0x34f0('0x34')],qs[_0x34f0('0x36')](_0x2da4cc[_0x34f0('0x30')]['fields']));_0x1c2fdf['attributes']=_0x1c2fdf[_0x34f0('0x35')]['length']?_0x1c2fdf[_0x34f0('0x35')]:_0x34aaa9[_0x34f0('0x34')];_0x1c2fdf[_0x34f0('0x3a')]=qs[_0x34f0('0x3b')](_0x2da4cc['query'][_0x34f0('0x3b')]);_0x1c2fdf['where']=qs['filters'](_[_0x34f0('0x3d')](_0x2da4cc[_0x34f0('0x30')],_0x34aaa9[_0x34f0('0x32')]));if(_0x2da4cc[_0x34f0('0x30')][_0x34f0('0x3e')]){_0x1c2fdf[_0x34f0('0x3c')]=_[_0x34f0('0x40')](_0x1c2fdf['where'],{'$or':_[_0x34f0('0x2c')](_0x1c2fdf[_0x34f0('0x35')],function(_0x14fc62){var _0x291f4a={};_0x291f4a[_0x14fc62]={'$like':'%'+_0x2da4cc[_0x34f0('0x30')][_0x34f0('0x3e')]+'%'};return _0x291f4a;})});}_0x1c2fdf=_[_0x34f0('0x40')]({},_0x1c2fdf,_0x2da4cc[_0x34f0('0x41')]);return _0x366e70[_0x34f0('0x4e')](_0x1c2fdf);}})[_0x34f0('0x24')](function(_0x4c3db8){if(_0x4c3db8){_0x33b236=_0x4c3db8[_0x34f0('0x37')];if(!_0x2da4cc['query']['hasOwnProperty'](_0x34f0('0x39'))){_0x1c2fdf[_0x34f0('0x1c')]=qs['limit'](_0x2da4cc['query'][_0x34f0('0x1c')]);_0x1c2fdf[_0x34f0('0x1a')]=qs['offset'](_0x2da4cc[_0x34f0('0x30')][_0x34f0('0x1a')]);}return _0x366e70[_0x34f0('0x4e')](_0x1c2fdf);}})[_0x34f0('0x24')](function(_0x1dd8b6){if(_0x1dd8b6){return _0x1dd8b6?{'count':_0x33b236,'rows':_0x1dd8b6}:null;}})[_0x34f0('0x24')](respondWithResult(_0x3c7e5b,null))[_0x34f0('0x45')](handleError(_0x3c7e5b,null));};exports[_0x34f0('0x4f')]=function(_0x3621b7,_0x3d864b,_0x7a7714){var _0x5cd8a9={};var _0x235fab={};var _0x1a0de5;var _0x5a808c;return db[_0x34f0('0x2d')][_0x34f0('0x4c')]({'where':{'id':_0x3621b7['params']['id']}})['then'](handleEntityNotFound(_0x3d864b,null))[_0x34f0('0x24')](function(_0x14c1ca){if(_0x14c1ca){_0x1a0de5=_0x14c1ca;_0x235fab[_0x34f0('0x34')]=_['keys'](db[_0x34f0('0x4d')][_0x34f0('0x48')]);_0x235fab['query']=_[_0x34f0('0x31')](_0x3621b7[_0x34f0('0x30')]);_0x235fab[_0x34f0('0x32')]=_[_0x34f0('0x33')](_0x235fab[_0x34f0('0x34')],_0x235fab['query']);_0x5cd8a9[_0x34f0('0x35')]=_[_0x34f0('0x33')](_0x235fab[_0x34f0('0x34')],qs[_0x34f0('0x36')](_0x3621b7[_0x34f0('0x30')]['fields']));_0x5cd8a9[_0x34f0('0x35')]=_0x5cd8a9[_0x34f0('0x35')][_0x34f0('0x37')]?_0x5cd8a9[_0x34f0('0x35')]:_0x235fab[_0x34f0('0x34')];_0x5cd8a9[_0x34f0('0x3a')]=qs[_0x34f0('0x3b')](_0x3621b7[_0x34f0('0x30')][_0x34f0('0x3b')]);_0x5cd8a9[_0x34f0('0x3c')]=qs[_0x34f0('0x32')](_[_0x34f0('0x3d')](_0x3621b7['query'],_0x235fab[_0x34f0('0x32')]));if(_0x3621b7['query'][_0x34f0('0x3e')]){_0x5cd8a9['where']=_['merge'](_0x5cd8a9[_0x34f0('0x3c')],{'$or':_[_0x34f0('0x2c')](_0x5cd8a9[_0x34f0('0x35')],function(_0x5bf4cf){var _0x382a30={};_0x382a30[_0x5bf4cf]={'$like':'%'+_0x3621b7[_0x34f0('0x30')][_0x34f0('0x3e')]+'%'};return _0x382a30;})});}_0x5cd8a9=_[_0x34f0('0x40')]({},_0x5cd8a9,_0x3621b7[_0x34f0('0x41')]);return _0x1a0de5[_0x34f0('0x4f')](_0x5cd8a9);}})[_0x34f0('0x24')](function(_0x299e2c){if(_0x299e2c){_0x5a808c=_0x299e2c[_0x34f0('0x37')];if(!_0x3621b7[_0x34f0('0x30')][_0x34f0('0x38')]('nolimit')){_0x5cd8a9[_0x34f0('0x1c')]=qs[_0x34f0('0x1c')](_0x3621b7[_0x34f0('0x30')]['limit']);_0x5cd8a9[_0x34f0('0x1a')]=qs[_0x34f0('0x1a')](_0x3621b7[_0x34f0('0x30')]['offset']);}return _0x1a0de5[_0x34f0('0x4f')](_0x5cd8a9);}})[_0x34f0('0x24')](function(_0x3691ff){if(_0x3691ff){return _0x3691ff?{'count':_0x5a808c,'rows':_0x3691ff}:null;}})['then'](respondWithResult(_0x3d864b,null))['catch'](handleError(_0x3d864b,null));};exports[_0x34f0('0x50')]=function(_0x288fc8,_0x583a2d,_0x798b5b){var _0xdee130={};var _0x4e1d92={};var _0x3fcae6;var _0x2f7606;return db[_0x34f0('0x2d')][_0x34f0('0x4c')]({'where':{'id':_0x288fc8[_0x34f0('0x47')]['id']}})[_0x34f0('0x24')](handleEntityNotFound(_0x583a2d,null))['then'](function(_0x1c5c72){if(_0x1c5c72){_0x3fcae6=_0x1c5c72;_0x4e1d92[_0x34f0('0x34')]=_[_0x34f0('0x31')](db[_0x34f0('0x4d')][_0x34f0('0x48')]);_0x4e1d92['query']=_[_0x34f0('0x31')](_0x288fc8[_0x34f0('0x30')]);_0x4e1d92['filters']=_[_0x34f0('0x33')](_0x4e1d92[_0x34f0('0x34')],_0x4e1d92[_0x34f0('0x30')]);_0xdee130[_0x34f0('0x35')]=_[_0x34f0('0x33')](_0x4e1d92[_0x34f0('0x34')],qs['fields'](_0x288fc8['query'][_0x34f0('0x36')]));_0xdee130['attributes']=_0xdee130[_0x34f0('0x35')]['length']?_0xdee130['attributes']:_0x4e1d92['model'];_0xdee130[_0x34f0('0x3a')]=qs[_0x34f0('0x3b')](_0x288fc8[_0x34f0('0x30')][_0x34f0('0x3b')]);_0xdee130[_0x34f0('0x3c')]=qs['filters'](_[_0x34f0('0x3d')](_0x288fc8['query'],_0x4e1d92[_0x34f0('0x32')]));if(_0x288fc8['query'][_0x34f0('0x3e')]){_0xdee130['where']=_['merge'](_0xdee130[_0x34f0('0x3c')],{'$or':_[_0x34f0('0x2c')](_0xdee130[_0x34f0('0x35')],function(_0x18c9cf){var _0x140c54={};_0x140c54[_0x18c9cf]={'$like':'%'+_0x288fc8[_0x34f0('0x30')]['filter']+'%'};return _0x140c54;})});}_0xdee130=_['merge']({},_0xdee130,_0x288fc8['options']);return _0x3fcae6['getDescriptions'](_0xdee130);}})[_0x34f0('0x24')](function(_0x234b7a){if(_0x234b7a){_0x2f7606=_0x234b7a[_0x34f0('0x37')];if(!_0x288fc8[_0x34f0('0x30')]['hasOwnProperty'](_0x34f0('0x39'))){_0xdee130[_0x34f0('0x1c')]=qs[_0x34f0('0x1c')](_0x288fc8[_0x34f0('0x30')]['limit']);_0xdee130['offset']=qs[_0x34f0('0x1a')](_0x288fc8[_0x34f0('0x30')][_0x34f0('0x1a')]);}return _0x3fcae6['getDescriptions'](_0xdee130);}})[_0x34f0('0x24')](function(_0x1b0fea){if(_0x1b0fea){return _0x1b0fea?{'count':_0x2f7606,'rows':_0x1b0fea}:null;}})[_0x34f0('0x24')](respondWithResult(_0x583a2d,null))[_0x34f0('0x45')](handleError(_0x583a2d,null));};
\ No newline at end of file
+var _0xeb7e=['VIRTUAL','includeAll','SugarcrmConfiguration','findAll','catch','show','params','rawAttributes','include','options','find','create','body','getFields','findOne','SugarcrmField','getSubjects','pick','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge'];(function(_0x4670e1,_0x174851){var _0x25da6b=function(_0x14de0e){while(--_0x14de0e){_0x4670e1['push'](_0x4670e1['shift']());}};_0x25da6b(++_0x174851);}(_0xeb7e,0x65));var _0xeeb7=function(_0x300caf,_0x2d22ad){_0x300caf=_0x300caf-0x0;var _0x9d99a4=_0xeb7e[_0x300caf];return _0x9d99a4;};'use strict';var emlformat=require(_0xeeb7('0x0'));var rimraf=require(_0xeeb7('0x1'));var zipdir=require(_0xeeb7('0x2'));var jsonpatch=require(_0xeeb7('0x3'));var rp=require(_0xeeb7('0x4'));var moment=require(_0xeeb7('0x5'));var BPromise=require(_0xeeb7('0x6'));var Mustache=require('mustache');var util=require(_0xeeb7('0x7'));var path=require(_0xeeb7('0x8'));var sox=require('sox');var csv=require(_0xeeb7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeeb7('0xa'));var _=require(_0xeeb7('0xb'));var squel=require(_0xeeb7('0xc'));var crypto=require('crypto');var jsforce=require(_0xeeb7('0xd'));var deskjs=require(_0xeeb7('0xe'));var toCsv=require(_0xeeb7('0x9'));var querystring=require(_0xeeb7('0xf'));var Papa=require('papaparse');var Redis=require(_0xeeb7('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xeeb7('0x11'));var hardwareService=require(_0xeeb7('0x12'));var logger=require('../../config/logger')(_0xeeb7('0x13'));var utils=require(_0xeeb7('0x14'));var config=require(_0xeeb7('0x15'));var licenseUtil=require(_0xeeb7('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d8e91,_0x436f64){_0x436f64=_0x436f64||0xcc;return function(_0x5bffae){if(_0x5bffae){return _0x4d8e91[_0xeeb7('0x17')](_0x436f64);}return _0x4d8e91[_0xeeb7('0x18')](_0x436f64)[_0xeeb7('0x19')]();};}function respondWithResult(_0x1cb010,_0x5378b1){_0x5378b1=_0x5378b1||0xc8;return function(_0x441c0f){if(_0x441c0f){return _0x1cb010['status'](_0x5378b1)[_0xeeb7('0x1a')](_0x441c0f);}};}function respondWithFilteredResult(_0x2b69a9,_0xcedbf5){return function(_0x4448a0){if(_0x4448a0){var _0x308364=typeof _0xcedbf5[_0xeeb7('0x1b')]==='undefined'&&typeof _0xcedbf5['limit']===_0xeeb7('0x1c');var _0x437f15=_0x4448a0[_0xeeb7('0x1d')];var _0x80c580=_0x308364?0x0:_0xcedbf5[_0xeeb7('0x1b')];var _0x37e4e1=_0x308364?_0x4448a0['count']:_0xcedbf5[_0xeeb7('0x1b')]+_0xcedbf5[_0xeeb7('0x1e')];var _0x486ce1;if(_0x37e4e1>=_0x437f15){_0x37e4e1=_0x437f15;_0x486ce1=0xc8;}else{_0x486ce1=0xce;}_0x2b69a9[_0xeeb7('0x18')](_0x486ce1);return _0x2b69a9[_0xeeb7('0x1f')](_0xeeb7('0x20'),_0x80c580+'-'+_0x37e4e1+'/'+_0x437f15)[_0xeeb7('0x1a')](_0x4448a0);}return null;};}function patchUpdates(_0x1f28cb){return function(_0x3ba69c){try{jsonpatch[_0xeeb7('0x21')](_0x3ba69c,_0x1f28cb,!![]);}catch(_0x844050){return BPromise[_0xeeb7('0x22')](_0x844050);}return _0x3ba69c[_0xeeb7('0x23')]();};}function saveUpdates(_0x4ba49f,_0x32be53){return function(_0x36cb0a){if(_0x36cb0a){return _0x36cb0a[_0xeeb7('0x24')](_0x4ba49f)[_0xeeb7('0x25')](function(_0x5b52f1){return _0x5b52f1;});}return null;};}function removeEntity(_0x5b77bb,_0x135aa3){return function(_0x5f1195){if(_0x5f1195){return _0x5f1195[_0xeeb7('0x26')]()[_0xeeb7('0x25')](function(){_0x5b77bb['status'](0xcc)[_0xeeb7('0x19')]();});}};}function handleEntityNotFound(_0x3a7f8d,_0x2e21f1){return function(_0x38904b){if(!_0x38904b){_0x3a7f8d['sendStatus'](0x194);}return _0x38904b;};}function handleError(_0x429255,_0x5a69b0){_0x5a69b0=_0x5a69b0||0x1f4;return function(_0x3cf8ed){logger[_0xeeb7('0x27')](_0x3cf8ed[_0xeeb7('0x28')]);if(_0x3cf8ed['name']){delete _0x3cf8ed[_0xeeb7('0x29')];}_0x429255[_0xeeb7('0x18')](_0x5a69b0)[_0xeeb7('0x2a')](_0x3cf8ed);};}exports[_0xeeb7('0x2b')]=function(_0x2966f1,_0x561510){var _0x40d612={},_0x58b0b5={},_0x2a4688={'count':0x0,'rows':[]};var _0x1b6e88=_[_0xeeb7('0x2c')](db['SugarcrmConfiguration']['rawAttributes'],function(_0x493775){return{'name':_0x493775[_0xeeb7('0x2d')],'type':_0x493775[_0xeeb7('0x2e')][_0xeeb7('0x2f')]};});_0x58b0b5[_0xeeb7('0x30')]=_['map'](_0x1b6e88,'name');_0x58b0b5[_0xeeb7('0x31')]=_[_0xeeb7('0x32')](_0x2966f1[_0xeeb7('0x31')]);_0x58b0b5[_0xeeb7('0x33')]=_['intersection'](_0x58b0b5['model'],_0x58b0b5[_0xeeb7('0x31')]);_0x40d612['attributes']=_[_0xeeb7('0x34')](_0x58b0b5['model'],qs['fields'](_0x2966f1[_0xeeb7('0x31')][_0xeeb7('0x35')]));_0x40d612[_0xeeb7('0x36')]=_0x40d612[_0xeeb7('0x36')][_0xeeb7('0x37')]?_0x40d612[_0xeeb7('0x36')]:_0x58b0b5[_0xeeb7('0x30')];if(!_0x2966f1[_0xeeb7('0x31')][_0xeeb7('0x38')](_0xeeb7('0x39'))){_0x40d612[_0xeeb7('0x1e')]=qs['limit'](_0x2966f1['query']['limit']);_0x40d612[_0xeeb7('0x1b')]=qs[_0xeeb7('0x1b')](_0x2966f1[_0xeeb7('0x31')][_0xeeb7('0x1b')]);}_0x40d612[_0xeeb7('0x3a')]=qs[_0xeeb7('0x3b')](_0x2966f1[_0xeeb7('0x31')][_0xeeb7('0x3b')]);_0x40d612[_0xeeb7('0x3c')]=qs[_0xeeb7('0x33')](_['pick'](_0x2966f1[_0xeeb7('0x31')],_0x58b0b5[_0xeeb7('0x33')]),_0x1b6e88);if(_0x2966f1[_0xeeb7('0x31')][_0xeeb7('0x3d')]){_0x40d612[_0xeeb7('0x3c')]=_[_0xeeb7('0x3e')](_0x40d612[_0xeeb7('0x3c')],{'$or':_['map'](_0x1b6e88,function(_0x266a8b){if(_0x266a8b['type']!==_0xeeb7('0x3f')){var _0x2a5e6b={};_0x2a5e6b[_0x266a8b[_0xeeb7('0x29')]]={'$like':'%'+_0x2966f1[_0xeeb7('0x31')][_0xeeb7('0x3d')]+'%'};return _0x2a5e6b;}})});}_0x40d612=_[_0xeeb7('0x3e')]({},_0x40d612,_0x2966f1['options']);var _0x1f5e65={'where':_0x40d612[_0xeeb7('0x3c')]};return db['SugarcrmConfiguration'][_0xeeb7('0x1d')](_0x1f5e65)[_0xeeb7('0x25')](function(_0x768b39){_0x2a4688[_0xeeb7('0x1d')]=_0x768b39;if(_0x2966f1[_0xeeb7('0x31')][_0xeeb7('0x40')]){_0x40d612['include']=[{'all':!![]}];}return db[_0xeeb7('0x41')][_0xeeb7('0x42')](_0x40d612);})[_0xeeb7('0x25')](function(_0x581e55){_0x2a4688['rows']=_0x581e55;return _0x2a4688;})[_0xeeb7('0x25')](respondWithFilteredResult(_0x561510,_0x40d612))[_0xeeb7('0x43')](handleError(_0x561510,null));};exports[_0xeeb7('0x44')]=function(_0x5bc44e,_0x39d32d){var _0x498df4={'raw':![],'where':{'id':_0x5bc44e[_0xeeb7('0x45')]['id']}},_0x573c0d={};_0x573c0d['model']=_['keys'](db[_0xeeb7('0x41')][_0xeeb7('0x46')]);_0x573c0d[_0xeeb7('0x31')]=_[_0xeeb7('0x32')](_0x5bc44e[_0xeeb7('0x31')]);_0x573c0d['filters']=_['intersection'](_0x573c0d[_0xeeb7('0x30')],_0x573c0d[_0xeeb7('0x31')]);_0x498df4[_0xeeb7('0x36')]=_[_0xeeb7('0x34')](_0x573c0d[_0xeeb7('0x30')],qs['fields'](_0x5bc44e[_0xeeb7('0x31')][_0xeeb7('0x35')]));_0x498df4[_0xeeb7('0x36')]=_0x498df4[_0xeeb7('0x36')][_0xeeb7('0x37')]?_0x498df4[_0xeeb7('0x36')]:_0x573c0d[_0xeeb7('0x30')];if(_0x5bc44e[_0xeeb7('0x31')]['includeAll']){_0x498df4[_0xeeb7('0x47')]=[{'all':!![]}];}_0x498df4=_[_0xeeb7('0x3e')]({},_0x498df4,_0x5bc44e[_0xeeb7('0x48')]);return db[_0xeeb7('0x41')][_0xeeb7('0x49')](_0x498df4)[_0xeeb7('0x25')](handleEntityNotFound(_0x39d32d,null))['then'](respondWithResult(_0x39d32d,null))[_0xeeb7('0x43')](handleError(_0x39d32d,null));};exports[_0xeeb7('0x4a')]=function(_0x3f4cda,_0x1ab859){return db['SugarcrmConfiguration']['create'](_0x3f4cda[_0xeeb7('0x4b')],{})[_0xeeb7('0x25')](respondWithResult(_0x1ab859,0xc9))[_0xeeb7('0x43')](handleError(_0x1ab859,null));};exports[_0xeeb7('0x24')]=function(_0x1d58c8,_0x4cc5e6){if(_0x1d58c8[_0xeeb7('0x4b')]['id']){delete _0x1d58c8[_0xeeb7('0x4b')]['id'];}return db[_0xeeb7('0x41')][_0xeeb7('0x49')]({'where':{'id':_0x1d58c8[_0xeeb7('0x45')]['id']}})[_0xeeb7('0x25')](handleEntityNotFound(_0x4cc5e6,null))[_0xeeb7('0x25')](saveUpdates(_0x1d58c8[_0xeeb7('0x4b')],null))[_0xeeb7('0x25')](respondWithResult(_0x4cc5e6,null))[_0xeeb7('0x43')](handleError(_0x4cc5e6,null));};exports['destroy']=function(_0x9d48b,_0x5d0277){return db[_0xeeb7('0x41')][_0xeeb7('0x49')]({'where':{'id':_0x9d48b['params']['id']}})['then'](handleEntityNotFound(_0x5d0277,null))[_0xeeb7('0x25')](removeEntity(_0x5d0277,null))[_0xeeb7('0x43')](handleError(_0x5d0277,null));};exports[_0xeeb7('0x4c')]=function(_0x42b2e3,_0x250d1d,_0xe82674){var _0x28d99a={};var _0x56fe4a={};var _0x219d25;var _0x55a336;return db['SugarcrmConfiguration'][_0xeeb7('0x4d')]({'where':{'id':_0x42b2e3[_0xeeb7('0x45')]['id']}})[_0xeeb7('0x25')](handleEntityNotFound(_0x250d1d,null))['then'](function(_0x5df018){if(_0x5df018){_0x219d25=_0x5df018;_0x56fe4a[_0xeeb7('0x30')]=_[_0xeeb7('0x32')](db[_0xeeb7('0x4e')]['rawAttributes']);_0x56fe4a['query']=_[_0xeeb7('0x32')](_0x42b2e3[_0xeeb7('0x31')]);_0x56fe4a[_0xeeb7('0x33')]=_[_0xeeb7('0x34')](_0x56fe4a[_0xeeb7('0x30')],_0x56fe4a['query']);_0x28d99a[_0xeeb7('0x36')]=_['intersection'](_0x56fe4a[_0xeeb7('0x30')],qs[_0xeeb7('0x35')](_0x42b2e3[_0xeeb7('0x31')][_0xeeb7('0x35')]));_0x28d99a['attributes']=_0x28d99a[_0xeeb7('0x36')][_0xeeb7('0x37')]?_0x28d99a[_0xeeb7('0x36')]:_0x56fe4a[_0xeeb7('0x30')];_0x28d99a['order']=qs[_0xeeb7('0x3b')](_0x42b2e3[_0xeeb7('0x31')][_0xeeb7('0x3b')]);_0x28d99a[_0xeeb7('0x3c')]=qs[_0xeeb7('0x33')](_['pick'](_0x42b2e3['query'],_0x56fe4a[_0xeeb7('0x33')]));if(_0x42b2e3['query'][_0xeeb7('0x3d')]){_0x28d99a[_0xeeb7('0x3c')]=_[_0xeeb7('0x3e')](_0x28d99a['where'],{'$or':_['map'](_0x28d99a[_0xeeb7('0x36')],function(_0x2cc6a2){var _0x53992a={};_0x53992a[_0x2cc6a2]={'$like':'%'+_0x42b2e3[_0xeeb7('0x31')][_0xeeb7('0x3d')]+'%'};return _0x53992a;})});}_0x28d99a=_['merge']({},_0x28d99a,_0x42b2e3[_0xeeb7('0x48')]);return _0x219d25[_0xeeb7('0x4c')](_0x28d99a);}})['then'](function(_0x166cff){if(_0x166cff){_0x55a336=_0x166cff[_0xeeb7('0x37')];if(!_0x42b2e3[_0xeeb7('0x31')]['hasOwnProperty'](_0xeeb7('0x39'))){_0x28d99a[_0xeeb7('0x1e')]=qs[_0xeeb7('0x1e')](_0x42b2e3['query'][_0xeeb7('0x1e')]);_0x28d99a[_0xeeb7('0x1b')]=qs[_0xeeb7('0x1b')](_0x42b2e3[_0xeeb7('0x31')][_0xeeb7('0x1b')]);}return _0x219d25[_0xeeb7('0x4c')](_0x28d99a);}})[_0xeeb7('0x25')](function(_0x4b3576){if(_0x4b3576){return _0x4b3576?{'count':_0x55a336,'rows':_0x4b3576}:null;}})[_0xeeb7('0x25')](respondWithResult(_0x250d1d,null))[_0xeeb7('0x43')](handleError(_0x250d1d,null));};exports[_0xeeb7('0x4f')]=function(_0x560f21,_0xb7b51b,_0x1ff40c){var _0x57de33={};var _0x35a826={};var _0x58bad6;var _0x4dbea2;return db[_0xeeb7('0x41')]['findOne']({'where':{'id':_0x560f21[_0xeeb7('0x45')]['id']}})[_0xeeb7('0x25')](handleEntityNotFound(_0xb7b51b,null))[_0xeeb7('0x25')](function(_0xcbf4bc){if(_0xcbf4bc){_0x58bad6=_0xcbf4bc;_0x35a826[_0xeeb7('0x30')]=_[_0xeeb7('0x32')](db[_0xeeb7('0x4e')][_0xeeb7('0x46')]);_0x35a826['query']=_[_0xeeb7('0x32')](_0x560f21[_0xeeb7('0x31')]);_0x35a826[_0xeeb7('0x33')]=_['intersection'](_0x35a826[_0xeeb7('0x30')],_0x35a826['query']);_0x57de33[_0xeeb7('0x36')]=_[_0xeeb7('0x34')](_0x35a826['model'],qs[_0xeeb7('0x35')](_0x560f21[_0xeeb7('0x31')][_0xeeb7('0x35')]));_0x57de33[_0xeeb7('0x36')]=_0x57de33['attributes'][_0xeeb7('0x37')]?_0x57de33[_0xeeb7('0x36')]:_0x35a826['model'];_0x57de33[_0xeeb7('0x3a')]=qs[_0xeeb7('0x3b')](_0x560f21[_0xeeb7('0x31')][_0xeeb7('0x3b')]);_0x57de33[_0xeeb7('0x3c')]=qs[_0xeeb7('0x33')](_[_0xeeb7('0x50')](_0x560f21[_0xeeb7('0x31')],_0x35a826[_0xeeb7('0x33')]));if(_0x560f21[_0xeeb7('0x31')]['filter']){_0x57de33[_0xeeb7('0x3c')]=_[_0xeeb7('0x3e')](_0x57de33[_0xeeb7('0x3c')],{'$or':_['map'](_0x57de33[_0xeeb7('0x36')],function(_0x28b6e9){var _0x194aea={};_0x194aea[_0x28b6e9]={'$like':'%'+_0x560f21[_0xeeb7('0x31')][_0xeeb7('0x3d')]+'%'};return _0x194aea;})});}_0x57de33=_[_0xeeb7('0x3e')]({},_0x57de33,_0x560f21[_0xeeb7('0x48')]);return _0x58bad6[_0xeeb7('0x4f')](_0x57de33);}})[_0xeeb7('0x25')](function(_0x369f29){if(_0x369f29){_0x4dbea2=_0x369f29[_0xeeb7('0x37')];if(!_0x560f21['query'][_0xeeb7('0x38')](_0xeeb7('0x39'))){_0x57de33[_0xeeb7('0x1e')]=qs[_0xeeb7('0x1e')](_0x560f21[_0xeeb7('0x31')][_0xeeb7('0x1e')]);_0x57de33[_0xeeb7('0x1b')]=qs['offset'](_0x560f21[_0xeeb7('0x31')][_0xeeb7('0x1b')]);}return _0x58bad6[_0xeeb7('0x4f')](_0x57de33);}})[_0xeeb7('0x25')](function(_0x515ea6){if(_0x515ea6){return _0x515ea6?{'count':_0x4dbea2,'rows':_0x515ea6}:null;}})[_0xeeb7('0x25')](respondWithResult(_0xb7b51b,null))[_0xeeb7('0x43')](handleError(_0xb7b51b,null));};exports['getDescriptions']=function(_0x2d7c82,_0x1be789,_0x5dbf02){var _0x18b3bc={};var _0x29af7d={};var _0x1984f1;var _0x4bd720;return db[_0xeeb7('0x41')][_0xeeb7('0x4d')]({'where':{'id':_0x2d7c82[_0xeeb7('0x45')]['id']}})[_0xeeb7('0x25')](handleEntityNotFound(_0x1be789,null))[_0xeeb7('0x25')](function(_0x57f463){if(_0x57f463){_0x1984f1=_0x57f463;_0x29af7d[_0xeeb7('0x30')]=_[_0xeeb7('0x32')](db['SugarcrmField'][_0xeeb7('0x46')]);_0x29af7d[_0xeeb7('0x31')]=_[_0xeeb7('0x32')](_0x2d7c82[_0xeeb7('0x31')]);_0x29af7d[_0xeeb7('0x33')]=_[_0xeeb7('0x34')](_0x29af7d[_0xeeb7('0x30')],_0x29af7d[_0xeeb7('0x31')]);_0x18b3bc['attributes']=_[_0xeeb7('0x34')](_0x29af7d[_0xeeb7('0x30')],qs[_0xeeb7('0x35')](_0x2d7c82[_0xeeb7('0x31')][_0xeeb7('0x35')]));_0x18b3bc[_0xeeb7('0x36')]=_0x18b3bc[_0xeeb7('0x36')][_0xeeb7('0x37')]?_0x18b3bc[_0xeeb7('0x36')]:_0x29af7d['model'];_0x18b3bc[_0xeeb7('0x3a')]=qs[_0xeeb7('0x3b')](_0x2d7c82[_0xeeb7('0x31')][_0xeeb7('0x3b')]);_0x18b3bc[_0xeeb7('0x3c')]=qs[_0xeeb7('0x33')](_[_0xeeb7('0x50')](_0x2d7c82[_0xeeb7('0x31')],_0x29af7d[_0xeeb7('0x33')]));if(_0x2d7c82[_0xeeb7('0x31')][_0xeeb7('0x3d')]){_0x18b3bc['where']=_[_0xeeb7('0x3e')](_0x18b3bc['where'],{'$or':_['map'](_0x18b3bc[_0xeeb7('0x36')],function(_0x5626f0){var _0x54c5ca={};_0x54c5ca[_0x5626f0]={'$like':'%'+_0x2d7c82['query'][_0xeeb7('0x3d')]+'%'};return _0x54c5ca;})});}_0x18b3bc=_[_0xeeb7('0x3e')]({},_0x18b3bc,_0x2d7c82[_0xeeb7('0x48')]);return _0x1984f1['getDescriptions'](_0x18b3bc);}})['then'](function(_0x3e5599){if(_0x3e5599){_0x4bd720=_0x3e5599[_0xeeb7('0x37')];if(!_0x2d7c82['query'][_0xeeb7('0x38')](_0xeeb7('0x39'))){_0x18b3bc[_0xeeb7('0x1e')]=qs[_0xeeb7('0x1e')](_0x2d7c82[_0xeeb7('0x31')][_0xeeb7('0x1e')]);_0x18b3bc['offset']=qs[_0xeeb7('0x1b')](_0x2d7c82[_0xeeb7('0x31')][_0xeeb7('0x1b')]);}return _0x1984f1[_0xeeb7('0x51')](_0x18b3bc);}})[_0xeeb7('0x25')](function(_0x58e64e){if(_0x58e64e){return _0x58e64e?{'count':_0x4bd720,'rows':_0x58e64e}:null;}})[_0xeeb7('0x25')](respondWithResult(_0x1be789,null))['catch'](handleError(_0x1be789,null));};
\ No newline at end of file
index 6d69242..0ed2431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08e2=['moment','request-promise','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','lodash','util','../../config/logger','api'];(function(_0x1a12c8,_0x2df4dc){var _0x305109=function(_0x438bfb){while(--_0x438bfb){_0x1a12c8['push'](_0x1a12c8['shift']());}};_0x305109(++_0x2df4dc);}(_0x08e2,0x8c));var _0x208e=function(_0x7a8d65,_0x1aefec){_0x7a8d65=_0x7a8d65-0x0;var _0x55c6cd=_0x08e2[_0x7a8d65];return _0x55c6cd;};'use strict';var _=require(_0x208e('0x0'));var util=require(_0x208e('0x1'));var logger=require(_0x208e('0x2'))(_0x208e('0x3'));var moment=require(_0x208e('0x4'));var BPromise=require('bluebird');var rp=require(_0x208e('0x5'));var fs=require('fs');var path=require(_0x208e('0x6'));var rimraf=require(_0x208e('0x7'));var config=require(_0x208e('0x8'));var attributes=require(_0x208e('0x9'));module[_0x208e('0xa')]=function(_0x46a44e,_0x1a49b2){return _0x46a44e[_0x208e('0xb')]('SugarcrmConfiguration',attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1ec4=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x1ec4,0x1c1));var _0x41ec=function(_0x2ca73e,_0x442291){_0x2ca73e=_0x2ca73e-0x0;var _0x247495=_0x1ec4[_0x2ca73e];return _0x247495;};'use strict';var _=require(_0x41ec('0x0'));var util=require(_0x41ec('0x1'));var logger=require(_0x41ec('0x2'))(_0x41ec('0x3'));var moment=require(_0x41ec('0x4'));var BPromise=require(_0x41ec('0x5'));var rp=require(_0x41ec('0x6'));var fs=require('fs');var path=require(_0x41ec('0x7'));var rimraf=require(_0x41ec('0x8'));var config=require('../../config/environment');var attributes=require('./intSugarcrmConfiguration.attributes');module['exports']=function(_0xed9f8f,_0x547e94){return _0xed9f8f['define'](_0x41ec('0x9'),attributes,{'tableName':_0x41ec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 52259de..62479ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa37=['then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client'];(function(_0x25c92b,_0x41b368){var _0xc59d85=function(_0x10b32d){while(--_0x10b32d){_0x25c92b['push'](_0x25c92b['shift']());}};_0xc59d85(++_0x41b368);}(_0xfa37,0x1c2));var _0x7fa3=function(_0x1585ea,_0xb37eb3){_0x1585ea=_0x1585ea-0x0;var _0x5503e8=_0xfa37[_0x1585ea];return _0x5503e8;};'use strict';var _=require(_0x7fa3('0x0'));var util=require(_0x7fa3('0x1'));var moment=require(_0x7fa3('0x2'));var BPromise=require(_0x7fa3('0x3'));var rs=require(_0x7fa3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7fa3('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7fa3('0x6'));var config=require(_0x7fa3('0x7'));var jayson=require(_0x7fa3('0x8'));var client=jayson[_0x7fa3('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x28fc30,_0x55a7b3,_0x6a08d0){return new BPromise(function(_0xdffe68,_0x40d392){return client['request'](_0x28fc30,_0x6a08d0)[_0x7fa3('0xa')](function(_0x35819d){logger[_0x7fa3('0xb')](_0x7fa3('0xc'),_0x55a7b3,_0x7fa3('0xd'));logger[_0x7fa3('0xe')](_0x7fa3('0xf'),_0x55a7b3,'request\x20sent',JSON['stringify'](_0x35819d));if(_0x35819d['error']){if(_0x35819d[_0x7fa3('0x10')][_0x7fa3('0x11')]===0x1f4){logger[_0x7fa3('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x55a7b3,_0x35819d[_0x7fa3('0x10')]['message']);return _0x40d392(_0x35819d[_0x7fa3('0x10')][_0x7fa3('0x12')]);}logger[_0x7fa3('0x10')](_0x7fa3('0xc'),_0x55a7b3,_0x35819d[_0x7fa3('0x10')]['message']);return _0xdffe68(_0x35819d[_0x7fa3('0x10')][_0x7fa3('0x12')]);}else{logger[_0x7fa3('0xb')](_0x7fa3('0xc'),_0x55a7b3,_0x7fa3('0xd'));_0xdffe68(_0x35819d['result']['message']);}})[_0x7fa3('0x13')](function(_0x5867e7){logger[_0x7fa3('0x10')](_0x7fa3('0xc'),_0x55a7b3,_0x5867e7);_0x40d392(_0x5867e7);});});}
\ No newline at end of file
+var _0xf3bc=['client','http','request','info','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmConfiguration,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x231b09,_0x4342ab){var _0x407bb6=function(_0x4744f7){while(--_0x4744f7){_0x231b09['push'](_0x231b09['shift']());}};_0x407bb6(++_0x4342ab);}(_0xf3bc,0x91));var _0xcf3b=function(_0x1a4958,_0x36090e){_0x1a4958=_0x1a4958-0x0;var _0x1b9e68=_0xf3bc[_0x1a4958];return _0x1b9e68;};'use strict';var _=require(_0xcf3b('0x0'));var util=require(_0xcf3b('0x1'));var moment=require(_0xcf3b('0x2'));var BPromise=require(_0xcf3b('0x3'));var rs=require(_0xcf3b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcf3b('0x5'));var logger=require(_0xcf3b('0x6'))(_0xcf3b('0x7'));var config=require('../../config/environment');var jayson=require(_0xcf3b('0x8'));var client=jayson[_0xcf3b('0x9')][_0xcf3b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4f3d11,_0x1fdb0c,_0x5ae4b4){return new BPromise(function(_0x570706,_0x275144){return client[_0xcf3b('0xb')](_0x4f3d11,_0x5ae4b4)['then'](function(_0x45ac79){logger[_0xcf3b('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1fdb0c,_0xcf3b('0xd'));logger[_0xcf3b('0xe')](_0xcf3b('0xf'),_0x1fdb0c,_0xcf3b('0xd'),JSON[_0xcf3b('0x10')](_0x45ac79));if(_0x45ac79[_0xcf3b('0x11')]){if(_0x45ac79[_0xcf3b('0x11')][_0xcf3b('0x12')]===0x1f4){logger[_0xcf3b('0x11')](_0xcf3b('0x13'),_0x1fdb0c,_0x45ac79['error'][_0xcf3b('0x14')]);return _0x275144(_0x45ac79[_0xcf3b('0x11')][_0xcf3b('0x14')]);}logger[_0xcf3b('0x11')](_0xcf3b('0x13'),_0x1fdb0c,_0x45ac79['error'][_0xcf3b('0x14')]);return _0x570706(_0x45ac79[_0xcf3b('0x11')][_0xcf3b('0x14')]);}else{logger[_0xcf3b('0xc')](_0xcf3b('0x13'),_0x1fdb0c,_0xcf3b('0xd'));_0x570706(_0x45ac79['result'][_0xcf3b('0x14')]);}})[_0xcf3b('0x15')](function(_0x38c38b){logger[_0xcf3b('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1fdb0c,_0x38c38b);_0x275144(_0x38c38b);});});}
\ No newline at end of file
index 716d22b..f51922e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ab=['connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x258919,_0x1754e6){var _0xfbd68b=function(_0x3bc3e9){while(--_0x3bc3e9){_0x258919['push'](_0x258919['shift']());}};_0xfbd68b(++_0x1754e6);}(_0x04ab,0x1e4));var _0xb04a=function(_0x33a272,_0x560dc3){_0x33a272=_0x33a272-0x0;var _0x52d8bf=_0x04ab[_0x33a272];return _0x52d8bf;};'use strict';var multer=require('multer');var util=require(_0xb04a('0x0'));var path=require(_0xb04a('0x1'));var timeout=require(_0xb04a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb04a('0x3'));var interaction=require(_0xb04a('0x4'));var config=require(_0xb04a('0x5'));var controller=require('./intSugarcrmField.controller');router[_0xb04a('0x6')]('/',auth[_0xb04a('0x7')](),controller[_0xb04a('0x8')]);router['get'](_0xb04a('0x9'),auth['isAuthenticated'](),controller[_0xb04a('0xa')]);router[_0xb04a('0xb')]('/',auth[_0xb04a('0x7')](),controller[_0xb04a('0xc')]);router[_0xb04a('0xd')](_0xb04a('0x9'),auth[_0xb04a('0x7')](),controller[_0xb04a('0xe')]);router[_0xb04a('0xf')](_0xb04a('0x9'),auth['isAuthenticated'](),controller[_0xb04a('0x10')]);module[_0xb04a('0x11')]=router;
\ No newline at end of file
+var _0x0d5d=['update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intSugarcrmField.controller','isAuthenticated','get','/:id','post','create','put'];(function(_0x5e60f4,_0x5d2465){var _0x1d664b=function(_0x43eb52){while(--_0x43eb52){_0x5e60f4['push'](_0x5e60f4['shift']());}};_0x1d664b(++_0x5d2465);}(_0x0d5d,0x125));var _0xd0d5=function(_0x48bdf2,_0x1fc99b){_0x48bdf2=_0x48bdf2-0x0;var _0x2c9822=_0x0d5d[_0x48bdf2];return _0x2c9822;};'use strict';var multer=require('multer');var util=require(_0xd0d5('0x0'));var path=require('path');var timeout=require(_0xd0d5('0x1'));var express=require(_0xd0d5('0x2'));var router=express[_0xd0d5('0x3')]();var fs_extra=require(_0xd0d5('0x4'));var auth=require(_0xd0d5('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd0d5('0x6'));router['get']('/',auth[_0xd0d5('0x7')](),controller['index']);router[_0xd0d5('0x8')](_0xd0d5('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xd0d5('0xa')]('/',auth[_0xd0d5('0x7')](),controller[_0xd0d5('0xb')]);router[_0xd0d5('0xc')](_0xd0d5('0x9'),auth[_0xd0d5('0x7')](),controller[_0xd0d5('0xd')]);router[_0xd0d5('0xe')]('/:id',auth[_0xd0d5('0x7')](),controller[_0xd0d5('0xf')]);module[_0xd0d5('0x10')]=router;
\ No newline at end of file
index bfc0c64..e2457db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe651=['STRING','customVariable','BOOLEAN','exports','ENUM','variable','keyValue','string'];(function(_0x40798c,_0x522d34){var _0x7ab215=function(_0x518594){while(--_0x518594){_0x40798c['push'](_0x40798c['shift']());}};_0x7ab215(++_0x522d34);}(_0xe651,0x103));var _0x1e65=function(_0x588791,_0x35a42e){_0x588791=_0x588791-0x0;var _0x28937a=_0xe651[_0x588791];return _0x28937a;};'use strict';var Sequelize=require('sequelize');module[_0x1e65('0x0')]={'type':{'type':Sequelize[_0x1e65('0x1')]('string',_0x1e65('0x2'),'customVariable',_0x1e65('0x3'),'picklist'),'defaultValue':_0x1e65('0x4')},'content':{'type':Sequelize[_0x1e65('0x5')]},'key':{'type':Sequelize[_0x1e65('0x5')]},'keyType':{'type':Sequelize['ENUM']('string',_0x1e65('0x2'),_0x1e65('0x6'))},'keyContent':{'type':Sequelize[_0x1e65('0x5')]},'idField':{'type':Sequelize[_0x1e65('0x5')]},'nameField':{'type':Sequelize[_0x1e65('0x5')]},'customField':{'type':Sequelize[_0x1e65('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1e65('0x5')]}};
\ No newline at end of file
+var _0xa633=['BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x99a431,_0x2acee7){var _0x3b9522=function(_0x2b05ea){while(--_0x2b05ea){_0x99a431['push'](_0x99a431['shift']());}};_0x3b9522(++_0x2acee7);}(_0xa633,0x18d));var _0x3a63=function(_0x50e520,_0x9f42d3){_0x50e520=_0x50e520-0x0;var _0x46b7a1=_0xa633[_0x50e520];return _0x46b7a1;};'use strict';var Sequelize=require('sequelize');module[_0x3a63('0x0')]={'type':{'type':Sequelize[_0x3a63('0x1')](_0x3a63('0x2'),_0x3a63('0x3'),_0x3a63('0x4'),_0x3a63('0x5'),_0x3a63('0x6')),'defaultValue':_0x3a63('0x2')},'content':{'type':Sequelize[_0x3a63('0x7')]},'key':{'type':Sequelize[_0x3a63('0x7')]},'keyType':{'type':Sequelize[_0x3a63('0x1')](_0x3a63('0x2'),_0x3a63('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x3a63('0x7')]},'idField':{'type':Sequelize[_0x3a63('0x7')]},'nameField':{'type':Sequelize[_0x3a63('0x7')]},'customField':{'type':Sequelize[_0x3a63('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3a63('0x7')]}};
\ No newline at end of file
index 5d93dc5..df71e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd128=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','merge','filter','options','includeAll','findAll','catch','params','include','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x1d936c,_0x419ccc){var _0xd4c68c=function(_0x3b68ce){while(--_0x3b68ce){_0x1d936c['push'](_0x1d936c['shift']());}};_0xd4c68c(++_0x419ccc);}(_0xd128,0x198));var _0x8d12=function(_0x418f26,_0x4fec69){_0x418f26=_0x418f26-0x0;var _0x28131c=_0xd128[_0x418f26];return _0x28131c;};'use strict';var emlformat=require(_0x8d12('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8d12('0x1'));var jsonpatch=require(_0x8d12('0x2'));var rp=require(_0x8d12('0x3'));var moment=require('moment');var BPromise=require(_0x8d12('0x4'));var Mustache=require(_0x8d12('0x5'));var util=require(_0x8d12('0x6'));var path=require(_0x8d12('0x7'));var sox=require(_0x8d12('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d12('0x9'));var _=require(_0x8d12('0xa'));var squel=require(_0x8d12('0xb'));var crypto=require(_0x8d12('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8d12('0xd'));var toCsv=require(_0x8d12('0xe'));var querystring=require(_0x8d12('0xf'));var Papa=require(_0x8d12('0x10'));var Redis=require(_0x8d12('0x11'));var authService=require(_0x8d12('0x12'));var qs=require(_0x8d12('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8d12('0x14'));var logger=require(_0x8d12('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x8d12('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8d12('0x17'))['db'];function respondWithStatusCode(_0x6072ce,_0x504cec){_0x504cec=_0x504cec||0xcc;return function(_0x1b225f){if(_0x1b225f){return _0x6072ce['sendStatus'](_0x504cec);}return _0x6072ce[_0x8d12('0x18')](_0x504cec)[_0x8d12('0x19')]();};}function respondWithResult(_0x3caddd,_0x21e235){_0x21e235=_0x21e235||0xc8;return function(_0x3c0526){if(_0x3c0526){return _0x3caddd[_0x8d12('0x18')](_0x21e235)['json'](_0x3c0526);}};}function respondWithFilteredResult(_0x5bd0a8,_0x138e41){return function(_0x36af26){if(_0x36af26){var _0x250fee=typeof _0x138e41[_0x8d12('0x1a')]==='undefined'&&typeof _0x138e41['limit']===_0x8d12('0x1b');var _0x143870=_0x36af26['count'];var _0x4ea5e7=_0x250fee?0x0:_0x138e41[_0x8d12('0x1a')];var _0xe9546f=_0x250fee?_0x36af26[_0x8d12('0x1c')]:_0x138e41['offset']+_0x138e41[_0x8d12('0x1d')];var _0x1f2109;if(_0xe9546f>=_0x143870){_0xe9546f=_0x143870;_0x1f2109=0xc8;}else{_0x1f2109=0xce;}_0x5bd0a8[_0x8d12('0x18')](_0x1f2109);return _0x5bd0a8[_0x8d12('0x1e')](_0x8d12('0x1f'),_0x4ea5e7+'-'+_0xe9546f+'/'+_0x143870)[_0x8d12('0x20')](_0x36af26);}return null;};}function patchUpdates(_0x54c2d1){return function(_0x4aacc5){try{jsonpatch['apply'](_0x4aacc5,_0x54c2d1,!![]);}catch(_0x337b32){return BPromise['reject'](_0x337b32);}return _0x4aacc5[_0x8d12('0x21')]();};}function saveUpdates(_0xb0b178,_0x578f8e){return function(_0x46ca79){if(_0x46ca79){return _0x46ca79[_0x8d12('0x22')](_0xb0b178)[_0x8d12('0x23')](function(_0x812b73){return _0x812b73;});}return null;};}function removeEntity(_0x5a2dfd,_0x35cc79){return function(_0x16529d){if(_0x16529d){return _0x16529d[_0x8d12('0x24')]()[_0x8d12('0x23')](function(){_0x5a2dfd[_0x8d12('0x18')](0xcc)[_0x8d12('0x19')]();});}};}function handleEntityNotFound(_0x1a029f,_0x438b37){return function(_0x4a9680){if(!_0x4a9680){_0x1a029f[_0x8d12('0x25')](0x194);}return _0x4a9680;};}function handleError(_0x4de7e8,_0x3f9238){_0x3f9238=_0x3f9238||0x1f4;return function(_0x31a8c6){logger[_0x8d12('0x26')](_0x31a8c6[_0x8d12('0x27')]);if(_0x31a8c6[_0x8d12('0x28')]){delete _0x31a8c6[_0x8d12('0x28')];}_0x4de7e8[_0x8d12('0x18')](_0x3f9238)[_0x8d12('0x29')](_0x31a8c6);};}exports[_0x8d12('0x2a')]=function(_0x139290,_0x36b8b8){var _0x4ebdb2={},_0x278db7={},_0x69afc1={'count':0x0,'rows':[]};var _0x406256=_[_0x8d12('0x2b')](db[_0x8d12('0x2c')][_0x8d12('0x2d')],function(_0x163a08){return{'name':_0x163a08[_0x8d12('0x2e')],'type':_0x163a08[_0x8d12('0x2f')]['key']};});_0x278db7[_0x8d12('0x30')]=_['map'](_0x406256,_0x8d12('0x28'));_0x278db7[_0x8d12('0x31')]=_[_0x8d12('0x32')](_0x139290[_0x8d12('0x31')]);_0x278db7['filters']=_[_0x8d12('0x33')](_0x278db7['model'],_0x278db7[_0x8d12('0x31')]);_0x4ebdb2[_0x8d12('0x34')]=_['intersection'](_0x278db7[_0x8d12('0x30')],qs[_0x8d12('0x35')](_0x139290[_0x8d12('0x31')][_0x8d12('0x35')]));_0x4ebdb2[_0x8d12('0x34')]=_0x4ebdb2['attributes'][_0x8d12('0x36')]?_0x4ebdb2['attributes']:_0x278db7[_0x8d12('0x30')];if(!_0x139290[_0x8d12('0x31')]['hasOwnProperty'](_0x8d12('0x37'))){_0x4ebdb2[_0x8d12('0x1d')]=qs[_0x8d12('0x1d')](_0x139290['query'][_0x8d12('0x1d')]);_0x4ebdb2[_0x8d12('0x1a')]=qs[_0x8d12('0x1a')](_0x139290[_0x8d12('0x31')][_0x8d12('0x1a')]);}_0x4ebdb2['order']=qs[_0x8d12('0x38')](_0x139290[_0x8d12('0x31')][_0x8d12('0x38')]);_0x4ebdb2[_0x8d12('0x39')]=qs[_0x8d12('0x3a')](_[_0x8d12('0x3b')](_0x139290[_0x8d12('0x31')],_0x278db7[_0x8d12('0x3a')]),_0x406256);if(_0x139290[_0x8d12('0x31')]['filter']){_0x4ebdb2[_0x8d12('0x39')]=_[_0x8d12('0x3c')](_0x4ebdb2[_0x8d12('0x39')],{'$or':_['map'](_0x406256,function(_0x1e3cd7){if(_0x1e3cd7[_0x8d12('0x2f')]!=='VIRTUAL'){var _0x45cfd1={};_0x45cfd1[_0x1e3cd7[_0x8d12('0x28')]]={'$like':'%'+_0x139290[_0x8d12('0x31')][_0x8d12('0x3d')]+'%'};return _0x45cfd1;}})});}_0x4ebdb2=_[_0x8d12('0x3c')]({},_0x4ebdb2,_0x139290[_0x8d12('0x3e')]);var _0x28fd15={'where':_0x4ebdb2['where']};return db[_0x8d12('0x2c')][_0x8d12('0x1c')](_0x28fd15)[_0x8d12('0x23')](function(_0x2906a0){_0x69afc1[_0x8d12('0x1c')]=_0x2906a0;if(_0x139290[_0x8d12('0x31')][_0x8d12('0x3f')]){_0x4ebdb2['include']=[{'all':!![]}];}return db[_0x8d12('0x2c')][_0x8d12('0x40')](_0x4ebdb2);})[_0x8d12('0x23')](function(_0x10294d){_0x69afc1['rows']=_0x10294d;return _0x69afc1;})['then'](respondWithFilteredResult(_0x36b8b8,_0x4ebdb2))[_0x8d12('0x41')](handleError(_0x36b8b8,null));};exports['show']=function(_0x299888,_0x33cbc9){var _0x1db369={'raw':!![],'where':{'id':_0x299888[_0x8d12('0x42')]['id']}},_0x183357={};_0x183357['model']=_['keys'](db['SugarcrmField'][_0x8d12('0x2d')]);_0x183357[_0x8d12('0x31')]=_[_0x8d12('0x32')](_0x299888[_0x8d12('0x31')]);_0x183357[_0x8d12('0x3a')]=_['intersection'](_0x183357[_0x8d12('0x30')],_0x183357['query']);_0x1db369[_0x8d12('0x34')]=_[_0x8d12('0x33')](_0x183357[_0x8d12('0x30')],qs['fields'](_0x299888[_0x8d12('0x31')][_0x8d12('0x35')]));_0x1db369[_0x8d12('0x34')]=_0x1db369[_0x8d12('0x34')][_0x8d12('0x36')]?_0x1db369['attributes']:_0x183357[_0x8d12('0x30')];if(_0x299888['query'][_0x8d12('0x3f')]){_0x1db369[_0x8d12('0x43')]=[{'all':!![]}];}_0x1db369=_[_0x8d12('0x3c')]({},_0x1db369,_0x299888[_0x8d12('0x3e')]);return db[_0x8d12('0x2c')][_0x8d12('0x44')](_0x1db369)[_0x8d12('0x23')](handleEntityNotFound(_0x33cbc9,null))['then'](respondWithResult(_0x33cbc9,null))[_0x8d12('0x41')](handleError(_0x33cbc9,null));};exports['create']=function(_0xeb014,_0x120133){return db[_0x8d12('0x2c')][_0x8d12('0x45')](_0xeb014['body'],{})[_0x8d12('0x23')](respondWithResult(_0x120133,0xc9))[_0x8d12('0x41')](handleError(_0x120133,null));};exports[_0x8d12('0x22')]=function(_0x2c7599,_0x286e73){if(_0x2c7599['body']['id']){delete _0x2c7599['body']['id'];}return db[_0x8d12('0x2c')][_0x8d12('0x44')]({'where':{'id':_0x2c7599[_0x8d12('0x42')]['id']}})[_0x8d12('0x23')](handleEntityNotFound(_0x286e73,null))['then'](saveUpdates(_0x2c7599[_0x8d12('0x46')],null))[_0x8d12('0x23')](respondWithResult(_0x286e73,null))[_0x8d12('0x41')](handleError(_0x286e73,null));};exports[_0x8d12('0x24')]=function(_0x3a4e30,_0x16598f){return db[_0x8d12('0x2c')][_0x8d12('0x44')]({'where':{'id':_0x3a4e30[_0x8d12('0x42')]['id']}})['then'](handleEntityNotFound(_0x16598f,null))['then'](removeEntity(_0x16598f,null))[_0x8d12('0x41')](handleError(_0x16598f,null));};
\ No newline at end of file
+var _0x30d9=['desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','undefined','count','offset','limit','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','find','create','body','rimraf','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce'];(function(_0x1f5c02,_0x1ca255){var _0x5beee3=function(_0x330a26){while(--_0x330a26){_0x1f5c02['push'](_0x1f5c02['shift']());}};_0x5beee3(++_0x1ca255);}(_0x30d9,0x10c));var _0x930d=function(_0x54c42f,_0x5a341f){_0x54c42f=_0x54c42f-0x0;var _0x574932=_0x30d9[_0x54c42f];return _0x574932;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x930d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x930d('0x1'));var moment=require(_0x930d('0x2'));var BPromise=require(_0x930d('0x3'));var Mustache=require(_0x930d('0x4'));var util=require(_0x930d('0x5'));var path=require(_0x930d('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x930d('0x7'));var fs=require('fs');var fs_extra=require(_0x930d('0x8'));var _=require(_0x930d('0x9'));var squel=require(_0x930d('0xa'));var crypto=require('crypto');var jsforce=require(_0x930d('0xb'));var deskjs=require(_0x930d('0xc'));var toCsv=require(_0x930d('0xd'));var querystring=require('querystring');var Papa=require(_0x930d('0xe'));var Redis=require(_0x930d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x930d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x930d('0x11'));var logger=require(_0x930d('0x12'))(_0x930d('0x13'));var utils=require(_0x930d('0x14'));var config=require(_0x930d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x930d('0x16'))['db'];function respondWithStatusCode(_0x283ff6,_0x4db5ad){_0x4db5ad=_0x4db5ad||0xcc;return function(_0x3b4cd4){if(_0x3b4cd4){return _0x283ff6['sendStatus'](_0x4db5ad);}return _0x283ff6['status'](_0x4db5ad)[_0x930d('0x17')]();};}function respondWithResult(_0x3d1bf2,_0x1f203a){_0x1f203a=_0x1f203a||0xc8;return function(_0x2cd558){if(_0x2cd558){return _0x3d1bf2[_0x930d('0x18')](_0x1f203a)['json'](_0x2cd558);}};}function respondWithFilteredResult(_0x555595,_0x105cc4){return function(_0x47556c){if(_0x47556c){var _0x49e7c7=typeof _0x105cc4['offset']===_0x930d('0x19')&&typeof _0x105cc4['limit']===_0x930d('0x19');var _0x17f680=_0x47556c[_0x930d('0x1a')];var _0x3ab253=_0x49e7c7?0x0:_0x105cc4[_0x930d('0x1b')];var _0x11a6ab=_0x49e7c7?_0x47556c[_0x930d('0x1a')]:_0x105cc4['offset']+_0x105cc4[_0x930d('0x1c')];var _0x475865;if(_0x11a6ab>=_0x17f680){_0x11a6ab=_0x17f680;_0x475865=0xc8;}else{_0x475865=0xce;}_0x555595[_0x930d('0x18')](_0x475865);return _0x555595['set']('Content-Range',_0x3ab253+'-'+_0x11a6ab+'/'+_0x17f680)[_0x930d('0x1d')](_0x47556c);}return null;};}function patchUpdates(_0x3ca32f){return function(_0x3ba747){try{jsonpatch[_0x930d('0x1e')](_0x3ba747,_0x3ca32f,!![]);}catch(_0x11603c){return BPromise[_0x930d('0x1f')](_0x11603c);}return _0x3ba747[_0x930d('0x20')]();};}function saveUpdates(_0x543cd9,_0x2bc018){return function(_0x259933){if(_0x259933){return _0x259933[_0x930d('0x21')](_0x543cd9)[_0x930d('0x22')](function(_0xdabc29){return _0xdabc29;});}return null;};}function removeEntity(_0x1c4240,_0x5c8e8d){return function(_0x11ac91){if(_0x11ac91){return _0x11ac91[_0x930d('0x23')]()[_0x930d('0x22')](function(){_0x1c4240['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a022a,_0x631842){return function(_0x20697d){if(!_0x20697d){_0x5a022a['sendStatus'](0x194);}return _0x20697d;};}function handleError(_0x209860,_0x2a9b8e){_0x2a9b8e=_0x2a9b8e||0x1f4;return function(_0x5b7693){logger[_0x930d('0x24')](_0x5b7693[_0x930d('0x25')]);if(_0x5b7693[_0x930d('0x26')]){delete _0x5b7693[_0x930d('0x26')];}_0x209860[_0x930d('0x18')](_0x2a9b8e)[_0x930d('0x27')](_0x5b7693);};}exports[_0x930d('0x28')]=function(_0x10531f,_0x21c79c){var _0x5759a9={},_0x563aa7={},_0xdfff73={'count':0x0,'rows':[]};var _0x1e354b=_[_0x930d('0x29')](db[_0x930d('0x2a')][_0x930d('0x2b')],function(_0x22fe95){return{'name':_0x22fe95[_0x930d('0x2c')],'type':_0x22fe95[_0x930d('0x2d')][_0x930d('0x2e')]};});_0x563aa7[_0x930d('0x2f')]=_[_0x930d('0x29')](_0x1e354b,_0x930d('0x26'));_0x563aa7[_0x930d('0x30')]=_[_0x930d('0x31')](_0x10531f['query']);_0x563aa7[_0x930d('0x32')]=_[_0x930d('0x33')](_0x563aa7[_0x930d('0x2f')],_0x563aa7[_0x930d('0x30')]);_0x5759a9[_0x930d('0x34')]=_[_0x930d('0x33')](_0x563aa7[_0x930d('0x2f')],qs['fields'](_0x10531f['query'][_0x930d('0x35')]));_0x5759a9['attributes']=_0x5759a9[_0x930d('0x34')][_0x930d('0x36')]?_0x5759a9[_0x930d('0x34')]:_0x563aa7['model'];if(!_0x10531f[_0x930d('0x30')]['hasOwnProperty']('nolimit')){_0x5759a9[_0x930d('0x1c')]=qs['limit'](_0x10531f['query']['limit']);_0x5759a9[_0x930d('0x1b')]=qs['offset'](_0x10531f[_0x930d('0x30')][_0x930d('0x1b')]);}_0x5759a9['order']=qs[_0x930d('0x37')](_0x10531f[_0x930d('0x30')]['sort']);_0x5759a9[_0x930d('0x38')]=qs['filters'](_[_0x930d('0x39')](_0x10531f[_0x930d('0x30')],_0x563aa7[_0x930d('0x32')]),_0x1e354b);if(_0x10531f[_0x930d('0x30')][_0x930d('0x3a')]){_0x5759a9[_0x930d('0x38')]=_[_0x930d('0x3b')](_0x5759a9[_0x930d('0x38')],{'$or':_['map'](_0x1e354b,function(_0x278cf5){if(_0x278cf5[_0x930d('0x2d')]!==_0x930d('0x3c')){var _0x2632ad={};_0x2632ad[_0x278cf5[_0x930d('0x26')]]={'$like':'%'+_0x10531f[_0x930d('0x30')]['filter']+'%'};return _0x2632ad;}})});}_0x5759a9=_[_0x930d('0x3b')]({},_0x5759a9,_0x10531f[_0x930d('0x3d')]);var _0x4e142a={'where':_0x5759a9[_0x930d('0x38')]};return db[_0x930d('0x2a')][_0x930d('0x1a')](_0x4e142a)['then'](function(_0x28645){_0xdfff73[_0x930d('0x1a')]=_0x28645;if(_0x10531f[_0x930d('0x30')][_0x930d('0x3e')]){_0x5759a9['include']=[{'all':!![]}];}return db[_0x930d('0x2a')][_0x930d('0x3f')](_0x5759a9);})['then'](function(_0x373059){_0xdfff73[_0x930d('0x40')]=_0x373059;return _0xdfff73;})['then'](respondWithFilteredResult(_0x21c79c,_0x5759a9))[_0x930d('0x41')](handleError(_0x21c79c,null));};exports['show']=function(_0x398ca0,_0x2d70e0){var _0x4d954f={'raw':!![],'where':{'id':_0x398ca0[_0x930d('0x42')]['id']}},_0x15f9ad={};_0x15f9ad[_0x930d('0x2f')]=_['keys'](db['SugarcrmField']['rawAttributes']);_0x15f9ad[_0x930d('0x30')]=_['keys'](_0x398ca0[_0x930d('0x30')]);_0x15f9ad['filters']=_[_0x930d('0x33')](_0x15f9ad[_0x930d('0x2f')],_0x15f9ad[_0x930d('0x30')]);_0x4d954f[_0x930d('0x34')]=_[_0x930d('0x33')](_0x15f9ad[_0x930d('0x2f')],qs[_0x930d('0x35')](_0x398ca0['query'][_0x930d('0x35')]));_0x4d954f[_0x930d('0x34')]=_0x4d954f['attributes']['length']?_0x4d954f[_0x930d('0x34')]:_0x15f9ad[_0x930d('0x2f')];if(_0x398ca0[_0x930d('0x30')]['includeAll']){_0x4d954f['include']=[{'all':!![]}];}_0x4d954f=_[_0x930d('0x3b')]({},_0x4d954f,_0x398ca0[_0x930d('0x3d')]);return db[_0x930d('0x2a')][_0x930d('0x43')](_0x4d954f)[_0x930d('0x22')](handleEntityNotFound(_0x2d70e0,null))[_0x930d('0x22')](respondWithResult(_0x2d70e0,null))[_0x930d('0x41')](handleError(_0x2d70e0,null));};exports[_0x930d('0x44')]=function(_0x9a213c,_0x493285){return db[_0x930d('0x2a')][_0x930d('0x44')](_0x9a213c[_0x930d('0x45')],{})[_0x930d('0x22')](respondWithResult(_0x493285,0xc9))[_0x930d('0x41')](handleError(_0x493285,null));};exports[_0x930d('0x21')]=function(_0x2853d9,_0x5c1f7a){if(_0x2853d9[_0x930d('0x45')]['id']){delete _0x2853d9['body']['id'];}return db[_0x930d('0x2a')][_0x930d('0x43')]({'where':{'id':_0x2853d9[_0x930d('0x42')]['id']}})[_0x930d('0x22')](handleEntityNotFound(_0x5c1f7a,null))[_0x930d('0x22')](saveUpdates(_0x2853d9[_0x930d('0x45')],null))[_0x930d('0x22')](respondWithResult(_0x5c1f7a,null))[_0x930d('0x41')](handleError(_0x5c1f7a,null));};exports[_0x930d('0x23')]=function(_0x11d648,_0x122b72){return db['SugarcrmField']['find']({'where':{'id':_0x11d648[_0x930d('0x42')]['id']}})['then'](handleEntityNotFound(_0x122b72,null))['then'](removeEntity(_0x122b72,null))[_0x930d('0x41')](handleError(_0x122b72,null));};
\ No newline at end of file
index 3587eb5..2fa5095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01e2=['lodash','api','moment','bluebird','request-promise','../../config/environment','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','sugarcrm_unique_index','FieldId'];(function(_0x4c7d8b,_0x572388){var _0x187158=function(_0x5e956d){while(--_0x5e956d){_0x4c7d8b['push'](_0x4c7d8b['shift']());}};_0x187158(++_0x572388);}(_0x01e2,0x1bc));var _0x201e=function(_0x3fc03b,_0x1869c0){_0x3fc03b=_0x3fc03b-0x0;var _0x1007a3=_0x01e2[_0x3fc03b];return _0x1007a3;};'use strict';var _=require(_0x201e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x201e('0x1'));var moment=require(_0x201e('0x2'));var BPromise=require(_0x201e('0x3'));var rp=require(_0x201e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x201e('0x5'));var attributes=require(_0x201e('0x6'));module[_0x201e('0x7')]=function(_0x27747d,_0xc70594){return _0x27747d[_0x201e('0x8')]('SugarcrmField',attributes,{'tableName':_0x201e('0x9'),'paranoid':![],'indexes':[{'name':_0x201e('0xa'),'fields':['idField',_0x201e('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2523=['idField','FieldId','lodash','util','../../config/logger','api','moment','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2523,0x122));var _0x3252=function(_0x583ae9,_0x4781bd){_0x583ae9=_0x583ae9-0x0;var _0x4a9264=_0x2523[_0x583ae9];return _0x4a9264;};'use strict';var _=require(_0x3252('0x0'));var util=require(_0x3252('0x1'));var logger=require(_0x3252('0x2'))(_0x3252('0x3'));var moment=require(_0x3252('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3252('0x5'));var attributes=require(_0x3252('0x6'));module[_0x3252('0x7')]=function(_0xb90270,_0x2cee43){return _0xb90270[_0x3252('0x8')](_0x3252('0x9'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x3252('0xa'),_0x3252('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index bd52857..f1dda2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x836c=['error','message','result','lodash','util','moment','bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','info','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x5d969f,_0x3524a5){var _0x3bb5fe=function(_0xde98b9){while(--_0xde98b9){_0x5d969f['push'](_0x5d969f['shift']());}};_0x3bb5fe(++_0x3524a5);}(_0x836c,0x153));var _0xc836=function(_0x28490f,_0x4353d7){_0x28490f=_0x28490f-0x0;var _0x179647=_0x836c[_0x28490f];return _0x179647;};'use strict';var _=require(_0xc836('0x0'));var util=require(_0xc836('0x1'));var moment=require(_0xc836('0x2'));var BPromise=require(_0xc836('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc836('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc836('0x5'))('rpc');var config=require(_0xc836('0x6'));var jayson=require(_0xc836('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xe46484,_0x84842c,_0x34bfd1){return new BPromise(function(_0x2b735f,_0x773828){return client['request'](_0xe46484,_0x34bfd1)['then'](function(_0x52e2af){logger[_0xc836('0x8')](_0xc836('0x9'),_0x84842c,'request\x20sent');logger[_0xc836('0xa')](_0xc836('0xb'),_0x84842c,_0xc836('0xc'),JSON['stringify'](_0x52e2af));if(_0x52e2af[_0xc836('0xd')]){if(_0x52e2af[_0xc836('0xd')]['code']===0x1f4){logger[_0xc836('0xd')](_0xc836('0x9'),_0x84842c,_0x52e2af[_0xc836('0xd')]['message']);return _0x773828(_0x52e2af[_0xc836('0xd')][_0xc836('0xe')]);}logger['error'](_0xc836('0x9'),_0x84842c,_0x52e2af['error'][_0xc836('0xe')]);return _0x2b735f(_0x52e2af[_0xc836('0xd')][_0xc836('0xe')]);}else{logger[_0xc836('0x8')](_0xc836('0x9'),_0x84842c,_0xc836('0xc'));_0x2b735f(_0x52e2af[_0xc836('0xf')][_0xc836('0xe')]);}})['catch'](function(_0x45a50c){logger['error'](_0xc836('0x9'),_0x84842c,_0x45a50c);_0x773828(_0x45a50c);});});}
\ No newline at end of file
+var _0xca5f=['../../mysqldb','jayson/promise','client','then','info','SugarcrmField,\x20%s,\x20%s','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x54f7c0,_0x27af83){var _0x245d03=function(_0x1ad6c4){while(--_0x1ad6c4){_0x54f7c0['push'](_0x54f7c0['shift']());}};_0x245d03(++_0x27af83);}(_0xca5f,0x18a));var _0xfca5=function(_0x36388c,_0x4fffb5){_0x36388c=_0x36388c-0x0;var _0x58f353=_0xca5f[_0x36388c];return _0x58f353;};'use strict';var _=require('lodash');var util=require(_0xfca5('0x0'));var moment=require(_0xfca5('0x1'));var BPromise=require(_0xfca5('0x2'));var rs=require(_0xfca5('0x3'));var fs=require('fs');var Redis=require(_0xfca5('0x4'));var db=require(_0xfca5('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xfca5('0x6'));var client=jayson[_0xfca5('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f167b,_0x144474,_0x5eadcb){return new BPromise(function(_0x4e99bd,_0x1a9002){return client['request'](_0x3f167b,_0x5eadcb)[_0xfca5('0x8')](function(_0x286c51){logger[_0xfca5('0x9')](_0xfca5('0xa'),_0x144474,'request\x20sent');logger['debug'](_0xfca5('0xb'),_0x144474,_0xfca5('0xc'),JSON[_0xfca5('0xd')](_0x286c51));if(_0x286c51[_0xfca5('0xe')]){if(_0x286c51['error'][_0xfca5('0xf')]===0x1f4){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x144474,_0x286c51[_0xfca5('0xe')][_0xfca5('0x10')]);return _0x1a9002(_0x286c51[_0xfca5('0xe')][_0xfca5('0x10')]);}logger['error'](_0xfca5('0xa'),_0x144474,_0x286c51[_0xfca5('0xe')][_0xfca5('0x10')]);return _0x4e99bd(_0x286c51[_0xfca5('0xe')][_0xfca5('0x10')]);}else{logger['info'](_0xfca5('0xa'),_0x144474,'request\x20sent');_0x4e99bd(_0x286c51[_0xfca5('0x11')]['message']);}})[_0xfca5('0x12')](function(_0x3c54ad){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x144474,_0x3c54ad);_0x1a9002(_0x3c54ad);});});}
\ No newline at end of file
index 7345e54..2ccb825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','exports'];(function(_0x83b791,_0x5243fb){var _0x4583d9=function(_0x4e8ca1){while(--_0x4e8ca1){_0x83b791['push'](_0x83b791['shift']());}};_0x4583d9(++_0x5243fb);}(_0x66fa,0x168));var _0xa66f=function(_0x24db15,_0x238a2f){_0x24db15=_0x24db15-0x0;var _0x123144=_0x66fa[_0x24db15];return _0x123144;};'use strict';var multer=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var path=require(_0xa66f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa66f('0x3')]();var fs_extra=require(_0xa66f('0x4'));var auth=require(_0xa66f('0x5'));var interaction=require(_0xa66f('0x6'));var config=require(_0xa66f('0x7'));var controller=require(_0xa66f('0x8'));router[_0xa66f('0x9')]('/',auth[_0xa66f('0xa')](),controller[_0xa66f('0xb')]);router[_0xa66f('0x9')](_0xa66f('0xc'),auth['isAuthenticated'](),controller[_0xa66f('0xd')]);router['get'](_0xa66f('0xe'),auth[_0xa66f('0xa')](),controller['getConfigurations']);router[_0xa66f('0x9')](_0xa66f('0xf'),auth[_0xa66f('0xa')](),controller[_0xa66f('0x10')]);router[_0xa66f('0x11')]('/',auth[_0xa66f('0xa')](),controller['create']);router['post'](_0xa66f('0xe'),auth['isAuthenticated'](),controller[_0xa66f('0x12')]);router[_0xa66f('0x13')](_0xa66f('0xc'),auth['isAuthenticated'](),controller[_0xa66f('0x14')]);router[_0xa66f('0x15')]('/:id',auth[_0xa66f('0xa')](),controller[_0xa66f('0x16')]);module[_0xa66f('0x17')]=router;
\ No newline at end of file
+var _0x09d3=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','getFields','post','create','update','multer','util','path','connect-timeout','express','Router'];(function(_0x20aadb,_0x5a607a){var _0x520018=function(_0x1d258a){while(--_0x1d258a){_0x20aadb['push'](_0x20aadb['shift']());}};_0x520018(++_0x5a607a);}(_0x09d3,0xa5));var _0x309d=function(_0x95b3a3,_0x360d0c){_0x95b3a3=_0x95b3a3-0x0;var _0x26eeaf=_0x09d3[_0x95b3a3];return _0x26eeaf;};'use strict';var multer=require(_0x309d('0x0'));var util=require(_0x309d('0x1'));var path=require(_0x309d('0x2'));var timeout=require(_0x309d('0x3'));var express=require(_0x309d('0x4'));var router=express[_0x309d('0x5')]();var fs_extra=require(_0x309d('0x6'));var auth=require(_0x309d('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x309d('0x8'));var controller=require('./intVtigerAccount.controller');router[_0x309d('0x9')]('/',auth[_0x309d('0xa')](),controller['index']);router[_0x309d('0x9')](_0x309d('0xb'),auth['isAuthenticated'](),controller[_0x309d('0xc')]);router[_0x309d('0x9')](_0x309d('0xd'),auth[_0x309d('0xa')](),controller[_0x309d('0xe')]);router[_0x309d('0x9')]('/:id/fields',auth[_0x309d('0xa')](),controller[_0x309d('0xf')]);router[_0x309d('0x10')]('/',auth[_0x309d('0xa')](),controller[_0x309d('0x11')]);router[_0x309d('0x10')]('/:id/configurations',auth[_0x309d('0xa')](),controller['addConfiguration']);router['put'](_0x309d('0xb'),auth[_0x309d('0xa')](),controller[_0x309d('0x12')]);router['delete'](_0x309d('0xb'),auth[_0x309d('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 94570dd..a3592f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb55b=['HelpDesk','exports','STRING'];(function(_0x34cb78,_0x2fe26f){var _0x2433dc=function(_0x5be8bf){while(--_0x5be8bf){_0x34cb78['push'](_0x34cb78['shift']());}};_0x2433dc(++_0x2fe26f);}(_0xb55b,0xaf));var _0xbb55=function(_0x2f0832,_0x268977){_0x2f0832=_0x2f0832-0x0;var _0x52db08=_0xb55b[_0x2f0832];return _0x52db08;};'use strict';var Sequelize=require('sequelize');module[_0xbb55('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xbb55('0x1')]},'username':{'type':Sequelize[_0xbb55('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xbb55('0x1')],'allowNull':![],'defaultValue':_0xbb55('0x2')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0xbb55('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x38ba=['exports','STRING','HelpDesk','sequelize'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x38ba,0x103));var _0xa38b=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x38ba[_0x18ab2a];return _0x16dcee;};'use strict';var Sequelize=require(_0xa38b('0x0'));module[_0xa38b('0x1')]={'name':{'type':Sequelize[_0xa38b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xa38b('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0xa38b('0x2')],'allowNull':![],'defaultValue':_0xa38b('0x3')},'remoteUri':{'type':Sequelize[_0xa38b('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xa38b('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 58400ee..c9a9ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c13=['merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','findOne','VtigerConfiguration','rawAttributes','order','map','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','format','%s/webservice.php','GET','getchallenge','success','result','describe','sessionName','autogenerated','reference','owner','remove','includes','editable','false','label','startsWith','picklistValues','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','index','VtigerAccount','fieldName','type','keys','query','intersection','model','attributes','fields','length','nolimit','sort','where','filters','pick','filter'];(function(_0x46ab02,_0x46f430){var _0x39d9a4=function(_0x6ec26a){while(--_0x6ec26a){_0x46ab02['push'](_0x46ab02['shift']());}};_0x39d9a4(++_0x46f430);}(_0x5c13,0xb6));var _0x35c1=function(_0x3f3f40,_0x4c71f4){_0x3f3f40=_0x3f3f40-0x0;var _0x403b7a=_0x5c13[_0x3f3f40];return _0x403b7a;};'use strict';var emlformat=require(_0x35c1('0x0'));var rimraf=require(_0x35c1('0x1'));var zipdir=require(_0x35c1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x35c1('0x3'));var moment=require(_0x35c1('0x4'));var BPromise=require(_0x35c1('0x5'));var Mustache=require(_0x35c1('0x6'));var util=require(_0x35c1('0x7'));var path=require(_0x35c1('0x8'));var sox=require('sox');var csv=require(_0x35c1('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x35c1('0xa'));var squel=require(_0x35c1('0xb'));var crypto=require(_0x35c1('0xc'));var jsforce=require(_0x35c1('0xd'));var deskjs=require(_0x35c1('0xe'));var toCsv=require(_0x35c1('0x9'));var querystring=require(_0x35c1('0xf'));var Papa=require(_0x35c1('0x10'));var Redis=require(_0x35c1('0x11'));var authService=require(_0x35c1('0x12'));var qs=require(_0x35c1('0x13'));var as=require(_0x35c1('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x35c1('0x15'));var utils=require(_0x35c1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x35c1('0x17'));var db=require(_0x35c1('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xa0af8a,_0x5587da){_0x5587da=_0x5587da||0xcc;return function(_0x17af71){if(_0x17af71){return _0xa0af8a[_0x35c1('0x19')](_0x5587da);}return _0xa0af8a['status'](_0x5587da)[_0x35c1('0x1a')]();};}function respondWithResult(_0x7692cb,_0x5cb0a8){_0x5cb0a8=_0x5cb0a8||0xc8;return function(_0x52a5e8){if(_0x52a5e8){return _0x7692cb[_0x35c1('0x1b')](_0x5cb0a8)['json'](_0x52a5e8);}};}function respondWithFilteredResult(_0x3365e4,_0x2a787b){return function(_0x1c7084){if(_0x1c7084){var _0x193b5e=typeof _0x2a787b[_0x35c1('0x1c')]===_0x35c1('0x1d')&&typeof _0x2a787b[_0x35c1('0x1e')]===_0x35c1('0x1d');var _0x212ee9=_0x1c7084[_0x35c1('0x1f')];var _0x5012d4=_0x193b5e?0x0:_0x2a787b[_0x35c1('0x1c')];var _0x1040fc=_0x193b5e?_0x1c7084[_0x35c1('0x1f')]:_0x2a787b['offset']+_0x2a787b[_0x35c1('0x1e')];var _0x213935;if(_0x1040fc>=_0x212ee9){_0x1040fc=_0x212ee9;_0x213935=0xc8;}else{_0x213935=0xce;}_0x3365e4[_0x35c1('0x1b')](_0x213935);return _0x3365e4['set'](_0x35c1('0x20'),_0x5012d4+'-'+_0x1040fc+'/'+_0x212ee9)[_0x35c1('0x21')](_0x1c7084);}return null;};}function patchUpdates(_0x458719){return function(_0x5a96c4){try{jsonpatch[_0x35c1('0x22')](_0x5a96c4,_0x458719,!![]);}catch(_0xc0da64){return BPromise[_0x35c1('0x23')](_0xc0da64);}return _0x5a96c4['save']();};}function saveUpdates(_0x324d59,_0x5dddff){return function(_0x498497){if(_0x498497){return _0x498497[_0x35c1('0x24')](_0x324d59)[_0x35c1('0x25')](function(_0x1c3c15){return _0x1c3c15;});}return null;};}function removeEntity(_0x253d59,_0x544162){return function(_0x17d088){if(_0x17d088){return _0x17d088[_0x35c1('0x26')]()[_0x35c1('0x25')](function(){_0x253d59[_0x35c1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27ab22,_0x2b784a){return function(_0x2c9077){if(!_0x2c9077){_0x27ab22['sendStatus'](0x194);}return _0x2c9077;};}function handleError(_0x413306,_0x5516d2){_0x5516d2=_0x5516d2||0x1f4;return function(_0x85d41b){logger[_0x35c1('0x27')](_0x85d41b[_0x35c1('0x28')]);if(_0x85d41b['name']){delete _0x85d41b[_0x35c1('0x29')];}_0x413306['status'](_0x5516d2)[_0x35c1('0x2a')](_0x85d41b);};}exports[_0x35c1('0x2b')]=function(_0x164c4b,_0x1dec31){var _0x237e77={},_0x2e8dc8={},_0xfaa9dc={'count':0x0,'rows':[]};var _0x4875c6=_['map'](db[_0x35c1('0x2c')]['rawAttributes'],function(_0x256c72){return{'name':_0x256c72[_0x35c1('0x2d')],'type':_0x256c72[_0x35c1('0x2e')]['key']};});_0x2e8dc8['model']=_['map'](_0x4875c6,_0x35c1('0x29'));_0x2e8dc8['query']=_[_0x35c1('0x2f')](_0x164c4b[_0x35c1('0x30')]);_0x2e8dc8['filters']=_[_0x35c1('0x31')](_0x2e8dc8[_0x35c1('0x32')],_0x2e8dc8[_0x35c1('0x30')]);_0x237e77[_0x35c1('0x33')]=_[_0x35c1('0x31')](_0x2e8dc8[_0x35c1('0x32')],qs[_0x35c1('0x34')](_0x164c4b['query'][_0x35c1('0x34')]));_0x237e77['attributes']=_0x237e77[_0x35c1('0x33')][_0x35c1('0x35')]?_0x237e77[_0x35c1('0x33')]:_0x2e8dc8['model'];if(!_0x164c4b[_0x35c1('0x30')]['hasOwnProperty'](_0x35c1('0x36'))){_0x237e77['limit']=qs[_0x35c1('0x1e')](_0x164c4b['query'][_0x35c1('0x1e')]);_0x237e77[_0x35c1('0x1c')]=qs['offset'](_0x164c4b[_0x35c1('0x30')]['offset']);}_0x237e77['order']=qs[_0x35c1('0x37')](_0x164c4b[_0x35c1('0x30')]['sort']);_0x237e77[_0x35c1('0x38')]=qs[_0x35c1('0x39')](_[_0x35c1('0x3a')](_0x164c4b['query'],_0x2e8dc8[_0x35c1('0x39')]),_0x4875c6);if(_0x164c4b[_0x35c1('0x30')][_0x35c1('0x3b')]){_0x237e77[_0x35c1('0x38')]=_[_0x35c1('0x3c')](_0x237e77[_0x35c1('0x38')],{'$or':_['map'](_0x4875c6,function(_0x525ad7){if(_0x525ad7[_0x35c1('0x2e')]!==_0x35c1('0x3d')){var _0x18eae7={};_0x18eae7[_0x525ad7[_0x35c1('0x29')]]={'$like':'%'+_0x164c4b[_0x35c1('0x30')][_0x35c1('0x3b')]+'%'};return _0x18eae7;}})});}_0x237e77=_['merge']({},_0x237e77,_0x164c4b[_0x35c1('0x3e')]);var _0x5ae258={'where':_0x237e77[_0x35c1('0x38')]};return db[_0x35c1('0x2c')]['count'](_0x5ae258)[_0x35c1('0x25')](function(_0x302395){_0xfaa9dc['count']=_0x302395;if(_0x164c4b[_0x35c1('0x30')][_0x35c1('0x3f')]){_0x237e77[_0x35c1('0x40')]=[{'all':!![]}];}return db[_0x35c1('0x2c')][_0x35c1('0x41')](_0x237e77);})[_0x35c1('0x25')](function(_0x5a9b57){_0xfaa9dc[_0x35c1('0x42')]=_0x5a9b57;return _0xfaa9dc;})[_0x35c1('0x25')](respondWithFilteredResult(_0x1dec31,_0x237e77))[_0x35c1('0x43')](handleError(_0x1dec31,null));};exports[_0x35c1('0x44')]=function(_0x6bba6d,_0x2bf97c){var _0x1ce339={'raw':![],'where':{'id':_0x6bba6d['params']['id']}},_0x25abde={};_0x25abde[_0x35c1('0x32')]=_[_0x35c1('0x2f')](db[_0x35c1('0x2c')]['rawAttributes']);_0x25abde[_0x35c1('0x30')]=_['keys'](_0x6bba6d[_0x35c1('0x30')]);_0x25abde[_0x35c1('0x39')]=_[_0x35c1('0x31')](_0x25abde[_0x35c1('0x32')],_0x25abde['query']);_0x1ce339[_0x35c1('0x33')]=_[_0x35c1('0x31')](_0x25abde[_0x35c1('0x32')],qs[_0x35c1('0x34')](_0x6bba6d[_0x35c1('0x30')][_0x35c1('0x34')]));_0x1ce339[_0x35c1('0x33')]=_0x1ce339[_0x35c1('0x33')]['length']?_0x1ce339['attributes']:_0x25abde[_0x35c1('0x32')];if(_0x6bba6d[_0x35c1('0x30')]['includeAll']){_0x1ce339[_0x35c1('0x40')]=[{'all':!![]}];}_0x1ce339=_[_0x35c1('0x3c')]({},_0x1ce339,_0x6bba6d['options']);return db['VtigerAccount'][_0x35c1('0x45')](_0x1ce339)[_0x35c1('0x25')](handleEntityNotFound(_0x2bf97c,null))[_0x35c1('0x25')](respondWithResult(_0x2bf97c,null))[_0x35c1('0x43')](handleError(_0x2bf97c,null));};exports[_0x35c1('0x46')]=function(_0x57f092,_0x19750b){return db['VtigerAccount'][_0x35c1('0x46')](_0x57f092['body'],{})[_0x35c1('0x25')](respondWithResult(_0x19750b,0xc9))[_0x35c1('0x43')](handleError(_0x19750b,null));};exports[_0x35c1('0x24')]=function(_0x39690a,_0x1300a6){if(_0x39690a[_0x35c1('0x47')]['id']){delete _0x39690a['body']['id'];}return db[_0x35c1('0x2c')]['find']({'where':{'id':_0x39690a[_0x35c1('0x48')]['id']}})[_0x35c1('0x25')](handleEntityNotFound(_0x1300a6,null))[_0x35c1('0x25')](saveUpdates(_0x39690a[_0x35c1('0x47')],null))[_0x35c1('0x25')](respondWithResult(_0x1300a6,null))[_0x35c1('0x43')](handleError(_0x1300a6,null));};exports['destroy']=function(_0x18cf7b,_0x488660){return db[_0x35c1('0x2c')]['find']({'where':{'id':_0x18cf7b[_0x35c1('0x48')]['id']}})[_0x35c1('0x25')](handleEntityNotFound(_0x488660,null))[_0x35c1('0x25')](removeEntity(_0x488660,null))[_0x35c1('0x43')](handleError(_0x488660,null));};exports['getConfigurations']=function(_0x25d26e,_0x3b4aa9,_0x48a19b){var _0x53e46f={};var _0xa6deaa={};var _0x3eb657;var _0x1d2b74;return db[_0x35c1('0x2c')][_0x35c1('0x49')]({'where':{'id':_0x25d26e[_0x35c1('0x48')]['id']}})[_0x35c1('0x25')](handleEntityNotFound(_0x3b4aa9,null))['then'](function(_0x17a878){if(_0x17a878){_0x3eb657=_0x17a878;_0xa6deaa[_0x35c1('0x32')]=_['keys'](db[_0x35c1('0x4a')][_0x35c1('0x4b')]);_0xa6deaa['query']=_[_0x35c1('0x2f')](_0x25d26e[_0x35c1('0x30')]);_0xa6deaa[_0x35c1('0x39')]=_['intersection'](_0xa6deaa['model'],_0xa6deaa[_0x35c1('0x30')]);_0x53e46f[_0x35c1('0x33')]=_['intersection'](_0xa6deaa[_0x35c1('0x32')],qs[_0x35c1('0x34')](_0x25d26e[_0x35c1('0x30')][_0x35c1('0x34')]));_0x53e46f[_0x35c1('0x33')]=_0x53e46f['attributes'][_0x35c1('0x35')]?_0x53e46f['attributes']:_0xa6deaa[_0x35c1('0x32')];_0x53e46f[_0x35c1('0x4c')]=qs[_0x35c1('0x37')](_0x25d26e[_0x35c1('0x30')][_0x35c1('0x37')]);_0x53e46f['where']=qs['filters'](_['pick'](_0x25d26e['query'],_0xa6deaa['filters']));if(_0x25d26e[_0x35c1('0x30')][_0x35c1('0x3b')]){_0x53e46f[_0x35c1('0x38')]=_[_0x35c1('0x3c')](_0x53e46f[_0x35c1('0x38')],{'$or':_[_0x35c1('0x4d')](_0x53e46f[_0x35c1('0x33')],function(_0x277d7e){var _0x5d4521={};_0x5d4521[_0x277d7e]={'$like':'%'+_0x25d26e[_0x35c1('0x30')][_0x35c1('0x3b')]+'%'};return _0x5d4521;})});}_0x53e46f=_['merge']({},_0x53e46f,_0x25d26e[_0x35c1('0x3e')]);return _0x3eb657['getConfigurations'](_0x53e46f);}})['then'](function(_0x1082e1){if(_0x1082e1){_0x1d2b74=_0x1082e1[_0x35c1('0x35')];if(!_0x25d26e['query']['hasOwnProperty']('nolimit')){_0x53e46f[_0x35c1('0x1e')]=qs['limit'](_0x25d26e[_0x35c1('0x30')][_0x35c1('0x1e')]);_0x53e46f[_0x35c1('0x1c')]=qs[_0x35c1('0x1c')](_0x25d26e[_0x35c1('0x30')]['offset']);}return _0x3eb657[_0x35c1('0x4e')](_0x53e46f);}})[_0x35c1('0x25')](function(_0x3d1338){if(_0x3d1338){return _0x3d1338?{'count':_0x1d2b74,'rows':_0x3d1338}:null;}})[_0x35c1('0x25')](respondWithResult(_0x3b4aa9,null))['catch'](handleError(_0x3b4aa9,null));};exports[_0x35c1('0x4f')]=function(_0x1520ce,_0x509698,_0x122fa2){if(_0x1520ce[_0x35c1('0x47')]['id']){delete _0x1520ce[_0x35c1('0x47')]['id'];}return db['VtigerAccount'][_0x35c1('0x49')]({'where':{'id':_0x1520ce['params']['id']}})[_0x35c1('0x25')](handleEntityNotFound(_0x509698,null))[_0x35c1('0x25')](function(_0x2b52f2){if(_0x2b52f2){_0x1520ce['body'][_0x35c1('0x50')]=_0x2b52f2['id'];_0x1520ce[_0x35c1('0x47')][_0x35c1('0x51')]=integrations[_0x35c1('0x52')](_0x1520ce[_0x35c1('0x47')]['channel'],_0x1520ce[_0x35c1('0x47')]['type']);_0x1520ce[_0x35c1('0x47')][_0x35c1('0x53')]=integrations[_0x35c1('0x54')](_0x1520ce['body']['channel'],_0x1520ce[_0x35c1('0x47')][_0x35c1('0x2e')]);return db[_0x35c1('0x4a')][_0x35c1('0x46')](_0x1520ce[_0x35c1('0x47')],{'include':[{'model':db[_0x35c1('0x55')],'as':_0x35c1('0x51')},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x509698,null))[_0x35c1('0x43')](handleError(_0x509698,null));};var md5=require(_0x35c1('0x56'));exports[_0x35c1('0x57')]=function(_0x12dc59,_0x167ebe,_0x23d607){var _0x12ec15=null;var _0x6e676f=null;var _0xe89dd1=null;var _0x24c8d7=null;var _0x5515b2='';return db[_0x35c1('0x2c')][_0x35c1('0x49')]({'where':{'id':_0x12dc59[_0x35c1('0x48')]['id']},'attributes':['id','name',_0x35c1('0x58'),_0x35c1('0x59'),_0x35c1('0x5a'),_0x35c1('0x5b'),_0x35c1('0x5c'),_0x35c1('0x5d')]})[_0x35c1('0x25')](handleEntityNotFound(_0x167ebe,null))['then'](function(_0x26540b){if(_0x26540b){_0x12ec15=_0x26540b[_0x35c1('0x58')];_0x6e676f=_0x26540b[_0x35c1('0x5d')];_0xe89dd1=_0x26540b[_0x35c1('0x5a')];_0x5515b2=_0x26540b[_0x35c1('0x5b')];var _0x6b326b=_0x5515b2[_0x35c1('0x5e')](-0x1);if(_0x6b326b==='/'){_0x5515b2=_0x5515b2[_0x35c1('0x5f')](0x0,_0x5515b2['lastIndexOf'](_0x6b326b));}_0x24c8d7=util[_0x35c1('0x60')](_0x35c1('0x61'),_0x5515b2);var _0x26e280={'method':_0x35c1('0x62'),'uri':_0x24c8d7,'qs':{'operation':_0x35c1('0x63'),'username':_0x26540b[_0x35c1('0x58')]},'json':!![]};return rp(_0x26e280);}})[_0x35c1('0x25')](function(_0x47e8af){if(_0x47e8af[_0x35c1('0x64')]){var _0x5d6ab0={'method':'POST','uri':_0x24c8d7,'form':{'operation':'login','username':_0x12ec15,'accessKey':md5(_0x47e8af[_0x35c1('0x65')]['token']+_0x6e676f)},'json':!![]};return rp(_0x5d6ab0);}})[_0x35c1('0x25')](function(_0xf0e436){if(_0xf0e436[_0x35c1('0x64')]){var _0x39d5b3={'method':_0x35c1('0x62'),'uri':_0x24c8d7,'qs':{'operation':_0x35c1('0x66'),'username':_0x12ec15,'sessionName':_0xf0e436[_0x35c1('0x65')][_0x35c1('0x67')],'elementType':_0xe89dd1},'json':!![]};return rp(_0x39d5b3);}})[_0x35c1('0x25')](function(_0x2a959a){if(_0x2a959a[_0x35c1('0x64')]){var _0x31a4b7=[_0x35c1('0x68'),_0x35c1('0x69'),_0x35c1('0x6a')];_[_0x35c1('0x6b')](_0x2a959a[_0x35c1('0x65')][_0x35c1('0x34')],function(_0x2c4402){return _0x31a4b7[_0x35c1('0x6c')](_0x2c4402[_0x35c1('0x2e')]['name']);});_[_0x35c1('0x6b')](_0x2a959a[_0x35c1('0x65')]['fields'],function(_0x2fad10){return _0x2fad10[_0x35c1('0x6d')]===_0x35c1('0x6e');});return{'count':_0x2a959a[_0x35c1('0x65')][_0x35c1('0x34')]['length'],'rows':_[_0x35c1('0x4d')](_0x2a959a['result'][_0x35c1('0x34')],function(_0x2d867b){return{'id':_0x2d867b[_0x35c1('0x29')],'name':_0x2d867b[_0x35c1('0x6f')],'custom':_[_0x35c1('0x70')](_0x2d867b[_0x35c1('0x29')],'cf_')?!![]:![],'options':_0x2d867b[_0x35c1('0x2e')][_0x35c1('0x29')]==='picklist'&&_0x2d867b[_0x35c1('0x2e')][_0x35c1('0x71')][_0x35c1('0x35')]>0x0?_[_0x35c1('0x4d')](_0x2d867b['type'][_0x35c1('0x71')],function(_0x366a74){return{'name':_0x366a74['label'],'value':_0x366a74['value']};}):[]};})};}})['then'](respondWithResult(_0x167ebe,null))[_0x35c1('0x43')](function(_0x4ee0c7){console[_0x35c1('0x72')](_0x35c1('0x73')+_0x4ee0c7);var _0x5966b0=_0x12dc59[_0x35c1('0x30')][_0x35c1('0x74')]?0x1f4:_0x4ee0c7[_0x35c1('0x75')]||0x1f4;logger['error'](_0x35c1('0x76'),_0x35c1('0x57'),_0x5966b0,JSON[_0x35c1('0x77')](_0x4ee0c7));delete _0x4ee0c7[_0x35c1('0x29')];if(_0x5966b0===0x191){_0x5966b0=0x190;}_0x167ebe[_0x35c1('0x1b')](_0x5966b0)[_0x35c1('0x2a')](_0x12dc59[_0x35c1('0x30')]['test']?{'message':_0x35c1('0x78'),'statusCode':_0x4ee0c7[_0x35c1('0x75')]}:_0x4ee0c7);});};
\ No newline at end of file
+var _0xfe39=['picklistValues','value','log','vTiger\x20error:\x20','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','VtigerAccount','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','filters','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','VtigerConfiguration','VtigerField','Descriptions','md5','username','description','remoteUri','serverUrl','accessKey','moduleName','slice','substring','lastIndexOf','GET','getchallenge','success','POST','login','result','describe','sessionName','reference','owner','remove','includes','false','length','label','cf_','picklist'];(function(_0x53fc4d,_0x31f802){var _0x35ef36=function(_0x47e31c){while(--_0x47e31c){_0x53fc4d['push'](_0x53fc4d['shift']());}};_0x35ef36(++_0x31f802);}(_0xfe39,0x89));var _0x9fe3=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0xfe39[_0x26462c];return _0x509a42;};'use strict';var emlformat=require(_0x9fe3('0x0'));var rimraf=require(_0x9fe3('0x1'));var zipdir=require(_0x9fe3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9fe3('0x3'));var BPromise=require(_0x9fe3('0x4'));var Mustache=require(_0x9fe3('0x5'));var util=require(_0x9fe3('0x6'));var path=require('path');var sox=require(_0x9fe3('0x7'));var csv=require(_0x9fe3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9fe3('0x9'));var _=require(_0x9fe3('0xa'));var squel=require(_0x9fe3('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9fe3('0xc'));var toCsv=require(_0x9fe3('0x8'));var querystring=require(_0x9fe3('0xd'));var Papa=require(_0x9fe3('0xe'));var Redis=require(_0x9fe3('0xf'));var authService=require(_0x9fe3('0x10'));var qs=require(_0x9fe3('0x11'));var as=require(_0x9fe3('0x12'));var hardwareService=require(_0x9fe3('0x13'));var logger=require(_0x9fe3('0x14'))(_0x9fe3('0x15'));var utils=require(_0x9fe3('0x16'));var config=require(_0x9fe3('0x17'));var licenseUtil=require(_0x9fe3('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x9fe3('0x19'));function respondWithStatusCode(_0x1a505b,_0x330dd2){_0x330dd2=_0x330dd2||0xcc;return function(_0x50e9a6){if(_0x50e9a6){return _0x1a505b[_0x9fe3('0x1a')](_0x330dd2);}return _0x1a505b[_0x9fe3('0x1b')](_0x330dd2)[_0x9fe3('0x1c')]();};}function respondWithResult(_0x43c939,_0xcb6c75){_0xcb6c75=_0xcb6c75||0xc8;return function(_0x437501){if(_0x437501){return _0x43c939[_0x9fe3('0x1b')](_0xcb6c75)[_0x9fe3('0x1d')](_0x437501);}};}function respondWithFilteredResult(_0x21f693,_0x129c3f){return function(_0x2201c2){if(_0x2201c2){var _0x4a42cf=typeof _0x129c3f[_0x9fe3('0x1e')]===_0x9fe3('0x1f')&&typeof _0x129c3f['limit']===_0x9fe3('0x1f');var _0x5a62dd=_0x2201c2[_0x9fe3('0x20')];var _0x3f72f8=_0x4a42cf?0x0:_0x129c3f[_0x9fe3('0x1e')];var _0x1b4286=_0x4a42cf?_0x2201c2['count']:_0x129c3f['offset']+_0x129c3f['limit'];var _0x45614c;if(_0x1b4286>=_0x5a62dd){_0x1b4286=_0x5a62dd;_0x45614c=0xc8;}else{_0x45614c=0xce;}_0x21f693[_0x9fe3('0x1b')](_0x45614c);return _0x21f693[_0x9fe3('0x21')](_0x9fe3('0x22'),_0x3f72f8+'-'+_0x1b4286+'/'+_0x5a62dd)[_0x9fe3('0x1d')](_0x2201c2);}return null;};}function patchUpdates(_0x5f0d87){return function(_0x55b018){try{jsonpatch[_0x9fe3('0x23')](_0x55b018,_0x5f0d87,!![]);}catch(_0x4cfa60){return BPromise[_0x9fe3('0x24')](_0x4cfa60);}return _0x55b018[_0x9fe3('0x25')]();};}function saveUpdates(_0x2a3915,_0x9f3b3f){return function(_0x5e8a8f){if(_0x5e8a8f){return _0x5e8a8f[_0x9fe3('0x26')](_0x2a3915)[_0x9fe3('0x27')](function(_0x1306aa){return _0x1306aa;});}return null;};}function removeEntity(_0x1f49cd,_0x4f58fb){return function(_0x4b1960){if(_0x4b1960){return _0x4b1960[_0x9fe3('0x28')]()['then'](function(){_0x1f49cd[_0x9fe3('0x1b')](0xcc)[_0x9fe3('0x1c')]();});}};}function handleEntityNotFound(_0x142de8,_0x1878ae){return function(_0x18e3dd){if(!_0x18e3dd){_0x142de8[_0x9fe3('0x1a')](0x194);}return _0x18e3dd;};}function handleError(_0x39f1ff,_0x2eb3e2){_0x2eb3e2=_0x2eb3e2||0x1f4;return function(_0x5fcf4d){logger[_0x9fe3('0x29')](_0x5fcf4d[_0x9fe3('0x2a')]);if(_0x5fcf4d[_0x9fe3('0x2b')]){delete _0x5fcf4d[_0x9fe3('0x2b')];}_0x39f1ff[_0x9fe3('0x1b')](_0x2eb3e2)[_0x9fe3('0x2c')](_0x5fcf4d);};}exports[_0x9fe3('0x2d')]=function(_0x4d4580,_0x476e0b){var _0x2210ce={},_0x51319c={},_0x54889c={'count':0x0,'rows':[]};var _0x1e66da=_['map'](db[_0x9fe3('0x2e')][_0x9fe3('0x2f')],function(_0x480c3b){return{'name':_0x480c3b[_0x9fe3('0x30')],'type':_0x480c3b[_0x9fe3('0x31')][_0x9fe3('0x32')]};});_0x51319c['model']=_[_0x9fe3('0x33')](_0x1e66da,_0x9fe3('0x2b'));_0x51319c[_0x9fe3('0x34')]=_[_0x9fe3('0x35')](_0x4d4580[_0x9fe3('0x34')]);_0x51319c['filters']=_[_0x9fe3('0x36')](_0x51319c[_0x9fe3('0x37')],_0x51319c['query']);_0x2210ce[_0x9fe3('0x38')]=_[_0x9fe3('0x36')](_0x51319c[_0x9fe3('0x37')],qs[_0x9fe3('0x39')](_0x4d4580[_0x9fe3('0x34')]['fields']));_0x2210ce[_0x9fe3('0x38')]=_0x2210ce[_0x9fe3('0x38')]['length']?_0x2210ce[_0x9fe3('0x38')]:_0x51319c['model'];if(!_0x4d4580['query'][_0x9fe3('0x3a')](_0x9fe3('0x3b'))){_0x2210ce[_0x9fe3('0x3c')]=qs[_0x9fe3('0x3c')](_0x4d4580['query'][_0x9fe3('0x3c')]);_0x2210ce[_0x9fe3('0x1e')]=qs[_0x9fe3('0x1e')](_0x4d4580[_0x9fe3('0x34')]['offset']);}_0x2210ce[_0x9fe3('0x3d')]=qs[_0x9fe3('0x3e')](_0x4d4580[_0x9fe3('0x34')][_0x9fe3('0x3e')]);_0x2210ce['where']=qs[_0x9fe3('0x3f')](_['pick'](_0x4d4580[_0x9fe3('0x34')],_0x51319c[_0x9fe3('0x3f')]),_0x1e66da);if(_0x4d4580[_0x9fe3('0x34')][_0x9fe3('0x40')]){_0x2210ce['where']=_[_0x9fe3('0x41')](_0x2210ce[_0x9fe3('0x42')],{'$or':_[_0x9fe3('0x33')](_0x1e66da,function(_0x2fcf7d){if(_0x2fcf7d[_0x9fe3('0x31')]!==_0x9fe3('0x43')){var _0xec94b1={};_0xec94b1[_0x2fcf7d[_0x9fe3('0x2b')]]={'$like':'%'+_0x4d4580[_0x9fe3('0x34')][_0x9fe3('0x40')]+'%'};return _0xec94b1;}})});}_0x2210ce=_['merge']({},_0x2210ce,_0x4d4580[_0x9fe3('0x44')]);var _0x50835b={'where':_0x2210ce['where']};return db['VtigerAccount'][_0x9fe3('0x20')](_0x50835b)[_0x9fe3('0x27')](function(_0x214493){_0x54889c['count']=_0x214493;if(_0x4d4580[_0x9fe3('0x34')][_0x9fe3('0x45')]){_0x2210ce[_0x9fe3('0x46')]=[{'all':!![]}];}return db[_0x9fe3('0x2e')][_0x9fe3('0x47')](_0x2210ce);})[_0x9fe3('0x27')](function(_0x30b8fa){_0x54889c[_0x9fe3('0x48')]=_0x30b8fa;return _0x54889c;})[_0x9fe3('0x27')](respondWithFilteredResult(_0x476e0b,_0x2210ce))[_0x9fe3('0x49')](handleError(_0x476e0b,null));};exports[_0x9fe3('0x4a')]=function(_0x231805,_0x637b81){var _0x1c866c={'raw':![],'where':{'id':_0x231805[_0x9fe3('0x4b')]['id']}},_0x236f52={};_0x236f52['model']=_['keys'](db[_0x9fe3('0x2e')]['rawAttributes']);_0x236f52['query']=_[_0x9fe3('0x35')](_0x231805[_0x9fe3('0x34')]);_0x236f52[_0x9fe3('0x3f')]=_[_0x9fe3('0x36')](_0x236f52[_0x9fe3('0x37')],_0x236f52[_0x9fe3('0x34')]);_0x1c866c[_0x9fe3('0x38')]=_['intersection'](_0x236f52['model'],qs[_0x9fe3('0x39')](_0x231805['query'][_0x9fe3('0x39')]));_0x1c866c['attributes']=_0x1c866c['attributes']['length']?_0x1c866c[_0x9fe3('0x38')]:_0x236f52[_0x9fe3('0x37')];if(_0x231805[_0x9fe3('0x34')][_0x9fe3('0x45')]){_0x1c866c[_0x9fe3('0x46')]=[{'all':!![]}];}_0x1c866c=_[_0x9fe3('0x41')]({},_0x1c866c,_0x231805[_0x9fe3('0x44')]);return db[_0x9fe3('0x2e')][_0x9fe3('0x4c')](_0x1c866c)['then'](handleEntityNotFound(_0x637b81,null))['then'](respondWithResult(_0x637b81,null))['catch'](handleError(_0x637b81,null));};exports[_0x9fe3('0x4d')]=function(_0x3d71bd,_0xc390a5){return db['VtigerAccount'][_0x9fe3('0x4d')](_0x3d71bd[_0x9fe3('0x4e')],{})['then'](respondWithResult(_0xc390a5,0xc9))[_0x9fe3('0x49')](handleError(_0xc390a5,null));};exports['update']=function(_0x5260f0,_0x4734b5){if(_0x5260f0[_0x9fe3('0x4e')]['id']){delete _0x5260f0['body']['id'];}return db[_0x9fe3('0x2e')]['find']({'where':{'id':_0x5260f0[_0x9fe3('0x4b')]['id']}})[_0x9fe3('0x27')](handleEntityNotFound(_0x4734b5,null))['then'](saveUpdates(_0x5260f0['body'],null))[_0x9fe3('0x27')](respondWithResult(_0x4734b5,null))[_0x9fe3('0x49')](handleError(_0x4734b5,null));};exports[_0x9fe3('0x28')]=function(_0x54e553,_0x51715a){return db[_0x9fe3('0x2e')][_0x9fe3('0x4c')]({'where':{'id':_0x54e553[_0x9fe3('0x4b')]['id']}})[_0x9fe3('0x27')](handleEntityNotFound(_0x51715a,null))[_0x9fe3('0x27')](removeEntity(_0x51715a,null))[_0x9fe3('0x49')](handleError(_0x51715a,null));};exports[_0x9fe3('0x4f')]=function(_0x4e0e83,_0x41b6db,_0x4017f3){var _0x4c655a={};var _0x25d7c0={};var _0x551c98;var _0x3b420f;return db['VtigerAccount'][_0x9fe3('0x50')]({'where':{'id':_0x4e0e83[_0x9fe3('0x4b')]['id']}})[_0x9fe3('0x27')](handleEntityNotFound(_0x41b6db,null))[_0x9fe3('0x27')](function(_0x36f595){if(_0x36f595){_0x551c98=_0x36f595;_0x25d7c0[_0x9fe3('0x37')]=_['keys'](db['VtigerConfiguration'][_0x9fe3('0x2f')]);_0x25d7c0[_0x9fe3('0x34')]=_[_0x9fe3('0x35')](_0x4e0e83[_0x9fe3('0x34')]);_0x25d7c0['filters']=_[_0x9fe3('0x36')](_0x25d7c0['model'],_0x25d7c0[_0x9fe3('0x34')]);_0x4c655a['attributes']=_[_0x9fe3('0x36')](_0x25d7c0[_0x9fe3('0x37')],qs[_0x9fe3('0x39')](_0x4e0e83['query'][_0x9fe3('0x39')]));_0x4c655a['attributes']=_0x4c655a[_0x9fe3('0x38')]['length']?_0x4c655a[_0x9fe3('0x38')]:_0x25d7c0['model'];_0x4c655a[_0x9fe3('0x3d')]=qs[_0x9fe3('0x3e')](_0x4e0e83[_0x9fe3('0x34')][_0x9fe3('0x3e')]);_0x4c655a['where']=qs[_0x9fe3('0x3f')](_[_0x9fe3('0x51')](_0x4e0e83[_0x9fe3('0x34')],_0x25d7c0[_0x9fe3('0x3f')]));if(_0x4e0e83[_0x9fe3('0x34')][_0x9fe3('0x40')]){_0x4c655a[_0x9fe3('0x42')]=_[_0x9fe3('0x41')](_0x4c655a[_0x9fe3('0x42')],{'$or':_[_0x9fe3('0x33')](_0x4c655a['attributes'],function(_0x9573bf){var _0x2751a5={};_0x2751a5[_0x9573bf]={'$like':'%'+_0x4e0e83[_0x9fe3('0x34')]['filter']+'%'};return _0x2751a5;})});}_0x4c655a=_[_0x9fe3('0x41')]({},_0x4c655a,_0x4e0e83[_0x9fe3('0x44')]);return _0x551c98['getConfigurations'](_0x4c655a);}})[_0x9fe3('0x27')](function(_0x52076e){if(_0x52076e){_0x3b420f=_0x52076e['length'];if(!_0x4e0e83[_0x9fe3('0x34')][_0x9fe3('0x3a')](_0x9fe3('0x3b'))){_0x4c655a[_0x9fe3('0x3c')]=qs[_0x9fe3('0x3c')](_0x4e0e83[_0x9fe3('0x34')]['limit']);_0x4c655a[_0x9fe3('0x1e')]=qs[_0x9fe3('0x1e')](_0x4e0e83[_0x9fe3('0x34')][_0x9fe3('0x1e')]);}return _0x551c98['getConfigurations'](_0x4c655a);}})[_0x9fe3('0x27')](function(_0x26fb38){if(_0x26fb38){return _0x26fb38?{'count':_0x3b420f,'rows':_0x26fb38}:null;}})[_0x9fe3('0x27')](respondWithResult(_0x41b6db,null))[_0x9fe3('0x49')](handleError(_0x41b6db,null));};exports[_0x9fe3('0x52')]=function(_0x194880,_0x5dcdfd,_0x217297){if(_0x194880[_0x9fe3('0x4e')]['id']){delete _0x194880[_0x9fe3('0x4e')]['id'];}return db[_0x9fe3('0x2e')][_0x9fe3('0x50')]({'where':{'id':_0x194880[_0x9fe3('0x4b')]['id']}})[_0x9fe3('0x27')](handleEntityNotFound(_0x5dcdfd,null))['then'](function(_0x4d6a60){if(_0x4d6a60){_0x194880[_0x9fe3('0x4e')][_0x9fe3('0x53')]=_0x4d6a60['id'];_0x194880[_0x9fe3('0x4e')][_0x9fe3('0x54')]=integrations[_0x9fe3('0x55')](_0x194880[_0x9fe3('0x4e')]['channel'],_0x194880[_0x9fe3('0x4e')][_0x9fe3('0x31')]);_0x194880['body']['Descriptions']=integrations['getDescriptions'](_0x194880[_0x9fe3('0x4e')][_0x9fe3('0x56')],_0x194880[_0x9fe3('0x4e')][_0x9fe3('0x31')]);return db[_0x9fe3('0x57')][_0x9fe3('0x4d')](_0x194880[_0x9fe3('0x4e')],{'include':[{'model':db[_0x9fe3('0x58')],'as':_0x9fe3('0x54')},{'model':db[_0x9fe3('0x58')],'as':_0x9fe3('0x59')}]});}return null;})['then'](respondWithResult(_0x5dcdfd,null))[_0x9fe3('0x49')](handleError(_0x5dcdfd,null));};var md5=require(_0x9fe3('0x5a'));exports['getFields']=function(_0x1ec14e,_0x5275dc,_0x2e7808){var _0x4a5296=null;var _0x51a5e1=null;var _0xfcd52a=null;var _0x2d0ffe=null;var _0x543429='';return db[_0x9fe3('0x2e')][_0x9fe3('0x50')]({'where':{'id':_0x1ec14e[_0x9fe3('0x4b')]['id']},'attributes':['id',_0x9fe3('0x2b'),_0x9fe3('0x5b'),_0x9fe3('0x5c'),'moduleName',_0x9fe3('0x5d'),_0x9fe3('0x5e'),_0x9fe3('0x5f')]})[_0x9fe3('0x27')](handleEntityNotFound(_0x5275dc,null))['then'](function(_0x572633){if(_0x572633){_0x4a5296=_0x572633[_0x9fe3('0x5b')];_0x51a5e1=_0x572633[_0x9fe3('0x5f')];_0xfcd52a=_0x572633[_0x9fe3('0x60')];_0x543429=_0x572633[_0x9fe3('0x5d')];var _0x5c62e8=_0x543429[_0x9fe3('0x61')](-0x1);if(_0x5c62e8==='/'){_0x543429=_0x543429[_0x9fe3('0x62')](0x0,_0x543429[_0x9fe3('0x63')](_0x5c62e8));}_0x2d0ffe=util['format']('%s/webservice.php',_0x543429);var _0x97e5c9={'method':_0x9fe3('0x64'),'uri':_0x2d0ffe,'qs':{'operation':_0x9fe3('0x65'),'username':_0x572633[_0x9fe3('0x5b')]},'json':!![]};return rp(_0x97e5c9);}})[_0x9fe3('0x27')](function(_0x392aaf){if(_0x392aaf[_0x9fe3('0x66')]){var _0xa040f7={'method':_0x9fe3('0x67'),'uri':_0x2d0ffe,'form':{'operation':_0x9fe3('0x68'),'username':_0x4a5296,'accessKey':md5(_0x392aaf[_0x9fe3('0x69')]['token']+_0x51a5e1)},'json':!![]};return rp(_0xa040f7);}})[_0x9fe3('0x27')](function(_0x35dacb){if(_0x35dacb[_0x9fe3('0x66')]){var _0x1960a7={'method':_0x9fe3('0x64'),'uri':_0x2d0ffe,'qs':{'operation':_0x9fe3('0x6a'),'username':_0x4a5296,'sessionName':_0x35dacb['result'][_0x9fe3('0x6b')],'elementType':_0xfcd52a},'json':!![]};return rp(_0x1960a7);}})[_0x9fe3('0x27')](function(_0x4598f7){if(_0x4598f7[_0x9fe3('0x66')]){var _0x5416f5=['autogenerated',_0x9fe3('0x6c'),_0x9fe3('0x6d')];_[_0x9fe3('0x6e')](_0x4598f7[_0x9fe3('0x69')][_0x9fe3('0x39')],function(_0x1f4714){return _0x5416f5[_0x9fe3('0x6f')](_0x1f4714[_0x9fe3('0x31')][_0x9fe3('0x2b')]);});_[_0x9fe3('0x6e')](_0x4598f7[_0x9fe3('0x69')]['fields'],function(_0x4addbf){return _0x4addbf['editable']===_0x9fe3('0x70');});return{'count':_0x4598f7[_0x9fe3('0x69')][_0x9fe3('0x39')][_0x9fe3('0x71')],'rows':_[_0x9fe3('0x33')](_0x4598f7[_0x9fe3('0x69')]['fields'],function(_0x2af6e0){return{'id':_0x2af6e0[_0x9fe3('0x2b')],'name':_0x2af6e0[_0x9fe3('0x72')],'custom':_['startsWith'](_0x2af6e0[_0x9fe3('0x2b')],_0x9fe3('0x73'))?!![]:![],'options':_0x2af6e0[_0x9fe3('0x31')][_0x9fe3('0x2b')]===_0x9fe3('0x74')&&_0x2af6e0['type'][_0x9fe3('0x75')][_0x9fe3('0x71')]>0x0?_['map'](_0x2af6e0['type'][_0x9fe3('0x75')],function(_0x2414b1){return{'name':_0x2414b1[_0x9fe3('0x72')],'value':_0x2414b1[_0x9fe3('0x76')]};}):[]};})};}})[_0x9fe3('0x27')](respondWithResult(_0x5275dc,null))['catch'](function(_0xca16a9){console[_0x9fe3('0x77')](_0x9fe3('0x78')+_0xca16a9);var _0xae7104=_0x1ec14e[_0x9fe3('0x34')]['test']?0x1f4:_0xca16a9[_0x9fe3('0x79')]||0x1f4;logger[_0x9fe3('0x29')](_0x9fe3('0x7a'),_0x9fe3('0x7b'),_0xae7104,JSON[_0x9fe3('0x7c')](_0xca16a9));delete _0xca16a9[_0x9fe3('0x2b')];if(_0xae7104===0x191){_0xae7104=0x190;}_0x5275dc[_0x9fe3('0x1b')](_0xae7104)[_0x9fe3('0x2c')](_0x1ec14e['query'][_0x9fe3('0x7d')]?{'message':_0x9fe3('0x7e'),'statusCode':_0xca16a9['statusCode']}:_0xca16a9);});};
\ No newline at end of file
index d058bd6..3b10d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e5e=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','exports','define','VtigerAccount','int_vtiger_accounts'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4e5e,0x196));var _0xe4e5=function(_0x3b6bd9,_0x1c3ffa){_0x3b6bd9=_0x3b6bd9-0x0;var _0x14264f=_0x4e5e[_0x3b6bd9];return _0x14264f;};'use strict';var _=require(_0xe4e5('0x0'));var util=require(_0xe4e5('0x1'));var logger=require(_0xe4e5('0x2'))(_0xe4e5('0x3'));var moment=require('moment');var BPromise=require(_0xe4e5('0x4'));var rp=require(_0xe4e5('0x5'));var fs=require('fs');var path=require(_0xe4e5('0x6'));var rimraf=require(_0xe4e5('0x7'));var config=require(_0xe4e5('0x8'));var attributes=require(_0xe4e5('0x9'));var integrations=require('../../components/integrations/configuration');module[_0xe4e5('0xa')]=function(_0x3fbded,_0x247a0c){return _0x3fbded[_0xe4e5('0xb')](_0xe4e5('0xc'),attributes,{'tableName':_0xe4e5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e0c=['define','VtigerAccount','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x5e478f,_0xf6b846){var _0x3750e6=function(_0xe8f774){while(--_0xe8f774){_0x5e478f['push'](_0x5e478f['shift']());}};_0x3750e6(++_0xf6b846);}(_0x6e0c,0x1a6));var _0xc6e0=function(_0x2d398b,_0x5e98f8){_0x2d398b=_0x2d398b-0x0;var _0x5d8b9d=_0x6e0c[_0x2d398b];return _0x5d8b9d;};'use strict';var _=require(_0xc6e0('0x0'));var util=require(_0xc6e0('0x1'));var logger=require(_0xc6e0('0x2'))(_0xc6e0('0x3'));var moment=require(_0xc6e0('0x4'));var BPromise=require('bluebird');var rp=require(_0xc6e0('0x5'));var fs=require('fs');var path=require(_0xc6e0('0x6'));var rimraf=require(_0xc6e0('0x7'));var config=require(_0xc6e0('0x8'));var attributes=require(_0xc6e0('0x9'));var integrations=require(_0xc6e0('0xa'));module[_0xc6e0('0xb')]=function(_0x537b69,_0x54602d){return _0x537b69[_0xc6e0('0xc')](_0xc6e0('0xd'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 471e41c..530f096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['VtigerAccount,\x20%s,\x20%s','catch','GetVtigerAccount','options','raw','where','attributes','limit','include','map','model','ShowVtigerAccount','VtigerAccount','find','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','message'];(function(_0x4dd838,_0x2209b0){var _0x446118=function(_0xa847eb){while(--_0xa847eb){_0x4dd838['push'](_0x4dd838['shift']());}};_0x446118(++_0x2209b0);}(_0x91a7,0xe7));var _0x791a=function(_0x51d56c,_0x43a8b3){_0x51d56c=_0x51d56c-0x0;var _0x45e340=_0x91a7[_0x51d56c];return _0x45e340;};'use strict';var _=require('lodash');var util=require(_0x791a('0x0'));var moment=require(_0x791a('0x1'));var BPromise=require(_0x791a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x791a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x791a('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x791a('0x5'));var jayson=require(_0x791a('0x6'));var client=jayson['client'][_0x791a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5db6db,_0x33baac,_0x159e24){return new BPromise(function(_0x5aa10a,_0x1a32b4){return client[_0x791a('0x8')](_0x5db6db,_0x159e24)[_0x791a('0x9')](function(_0x80ff65){logger[_0x791a('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x791a('0xb'));logger[_0x791a('0xc')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x33baac,_0x791a('0xb'),JSON[_0x791a('0xd')](_0x80ff65));if(_0x80ff65[_0x791a('0xe')]){if(_0x80ff65[_0x791a('0xe')][_0x791a('0xf')]===0x1f4){logger[_0x791a('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x80ff65['error'][_0x791a('0x10')]);return _0x1a32b4(_0x80ff65[_0x791a('0xe')]['message']);}logger[_0x791a('0xe')](_0x791a('0x11'),_0x33baac,_0x80ff65['error'][_0x791a('0x10')]);return _0x5aa10a(_0x80ff65[_0x791a('0xe')][_0x791a('0x10')]);}else{logger[_0x791a('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x791a('0xb'));_0x5aa10a(_0x80ff65['result'][_0x791a('0x10')]);}})[_0x791a('0x12')](function(_0x49ae3e){logger[_0x791a('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x49ae3e);_0x1a32b4(_0x49ae3e);});});}exports[_0x791a('0x13')]=function(_0x52941d){var _0x4a84ee=this;return new Promise(function(_0x588d00,_0x40f0d3){return db['VtigerAccount']['findAll']({'raw':_0x52941d[_0x791a('0x14')]?_0x52941d[_0x791a('0x14')][_0x791a('0x15')]===undefined?!![]:![]:!![],'where':_0x52941d[_0x791a('0x14')]?_0x52941d['options'][_0x791a('0x16')]||null:null,'attributes':_0x52941d[_0x791a('0x14')]?_0x52941d[_0x791a('0x14')][_0x791a('0x17')]||null:null,'limit':_0x52941d['options']?_0x52941d[_0x791a('0x14')][_0x791a('0x18')]||null:null,'include':_0x52941d[_0x791a('0x14')]?_0x52941d[_0x791a('0x14')][_0x791a('0x19')]?_[_0x791a('0x1a')](_0x52941d[_0x791a('0x14')][_0x791a('0x19')],function(_0x323c6a){return{'model':db[_0x323c6a[_0x791a('0x1b')]],'as':_0x323c6a['as'],'attributes':_0x323c6a[_0x791a('0x17')],'include':_0x323c6a['include']?_[_0x791a('0x1a')](_0x323c6a[_0x791a('0x19')],function(_0x380329){return{'model':db[_0x380329[_0x791a('0x1b')]],'as':_0x380329['as'],'attributes':_0x380329['attributes'],'include':_0x380329[_0x791a('0x19')]?_[_0x791a('0x1a')](_0x380329['include'],function(_0xdfa84f){return{'model':db[_0xdfa84f[_0x791a('0x1b')]],'as':_0xdfa84f['as'],'attributes':_0xdfa84f[_0x791a('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x29194d){logger[_0x791a('0xa')](_0x791a('0x13'),_0x52941d);logger[_0x791a('0xc')](_0x791a('0x13'),_0x52941d,JSON[_0x791a('0xd')](_0x29194d));_0x588d00(_0x29194d);})[_0x791a('0x12')](function(_0x889534){logger['error'](_0x791a('0x13'),_0x889534[_0x791a('0x10')],_0x52941d);_0x40f0d3(_0x4a84ee[_0x791a('0xe')](0x1f4,_0x889534['message']));});});};exports[_0x791a('0x1c')]=function(_0x5df656){var _0xc59f5e=this;return new Promise(function(_0x2e4ec8,_0xcde862){return db[_0x791a('0x1d')][_0x791a('0x1e')]({'raw':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')][_0x791a('0x16')]||null:null,'attributes':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')]['attributes']||null:null,'include':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')][_0x791a('0x19')]?_[_0x791a('0x1a')](_0x5df656[_0x791a('0x14')]['include'],function(_0x305836){return{'model':db[_0x305836[_0x791a('0x1b')]],'as':_0x305836['as'],'attributes':_0x305836[_0x791a('0x17')],'include':_0x305836[_0x791a('0x19')]?_[_0x791a('0x1a')](_0x305836['include'],function(_0xd5609){return{'model':db[_0xd5609['model']],'as':_0xd5609['as'],'attributes':_0xd5609[_0x791a('0x17')],'include':_0xd5609['include']?_['map'](_0xd5609[_0x791a('0x19')],function(_0x404530){return{'model':db[_0x404530[_0x791a('0x1b')]],'as':_0x404530['as'],'attributes':_0x404530[_0x791a('0x17')]};}):[]};}):[]};}):[]:[]})[_0x791a('0x9')](function(_0x3f46be){logger[_0x791a('0xa')]('ShowVtigerAccount',_0x5df656);logger[_0x791a('0xc')]('ShowVtigerAccount',_0x5df656,JSON[_0x791a('0xd')](_0x3f46be));_0x2e4ec8(_0x3f46be);})['catch'](function(_0x25e8cc){logger[_0x791a('0xe')]('ShowVtigerAccount',_0x25e8cc[_0x791a('0x10')],_0x5df656);_0xcde862(_0xc59f5e[_0x791a('0xe')](0x1f4,_0x25e8cc['message']));});});};
\ No newline at end of file
+var _0xda3f=['GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include','map','model','ShowVtigerAccount','find','util','moment','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x54fc68,_0x4d6cd3){var _0x23d6d8=function(_0x4dcf30){while(--_0x4dcf30){_0x54fc68['push'](_0x54fc68['shift']());}};_0x23d6d8(++_0x4d6cd3);}(_0xda3f,0xec));var _0xfda3=function(_0x334df0,_0x4b7222){_0x334df0=_0x334df0-0x0;var _0x467bd1=_0xda3f[_0x334df0];return _0x467bd1;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('VtigerAccount,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('VtigerAccount,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}exports[_0xfda3('0x14')]=function(_0x4680bf){var _0xc62ae6=this;return new Promise(function(_0x54a7c6,_0x15ddb9){return db[_0xfda3('0x15')][_0xfda3('0x16')]({'raw':_0x4680bf[_0xfda3('0x17')]?_0x4680bf['options'][_0xfda3('0x18')]===undefined?!![]:![]:!![],'where':_0x4680bf[_0xfda3('0x17')]?_0x4680bf[_0xfda3('0x17')]['where']||null:null,'attributes':_0x4680bf['options']?_0x4680bf[_0xfda3('0x17')][_0xfda3('0x19')]||null:null,'limit':_0x4680bf[_0xfda3('0x17')]?_0x4680bf['options'][_0xfda3('0x1a')]||null:null,'include':_0x4680bf[_0xfda3('0x17')]?_0x4680bf[_0xfda3('0x17')][_0xfda3('0x1b')]?_[_0xfda3('0x1c')](_0x4680bf[_0xfda3('0x17')][_0xfda3('0x1b')],function(_0xc6fb9a){return{'model':db[_0xc6fb9a[_0xfda3('0x1d')]],'as':_0xc6fb9a['as'],'attributes':_0xc6fb9a['attributes'],'include':_0xc6fb9a[_0xfda3('0x1b')]?_[_0xfda3('0x1c')](_0xc6fb9a[_0xfda3('0x1b')],function(_0x4ae9b9){return{'model':db[_0x4ae9b9[_0xfda3('0x1d')]],'as':_0x4ae9b9['as'],'attributes':_0x4ae9b9[_0xfda3('0x19')],'include':_0x4ae9b9[_0xfda3('0x1b')]?_[_0xfda3('0x1c')](_0x4ae9b9[_0xfda3('0x1b')],function(_0xad9f7b){return{'model':db[_0xad9f7b['model']],'as':_0xad9f7b['as'],'attributes':_0xad9f7b[_0xfda3('0x19')]};}):[]};}):[]};}):[]:[]})[_0xfda3('0x8')](function(_0x2bef2b){logger[_0xfda3('0x9')](_0xfda3('0x14'),_0x4680bf);logger['debug'](_0xfda3('0x14'),_0x4680bf,JSON[_0xfda3('0xe')](_0x2bef2b));_0x54a7c6(_0x2bef2b);})[_0xfda3('0x13')](function(_0x474992){logger[_0xfda3('0xf')](_0xfda3('0x14'),_0x474992[_0xfda3('0x11')],_0x4680bf);_0x15ddb9(_0xc62ae6['error'](0x1f4,_0x474992['message']));});});};exports[_0xfda3('0x1e')]=function(_0x4fd277){var _0x4b9d90=this;return new Promise(function(_0x16b4a2,_0x2a5971){return db[_0xfda3('0x15')][_0xfda3('0x1f')]({'raw':_0x4fd277[_0xfda3('0x17')]?_0x4fd277[_0xfda3('0x17')][_0xfda3('0x18')]===undefined?!![]:![]:!![],'where':_0x4fd277[_0xfda3('0x17')]?_0x4fd277[_0xfda3('0x17')]['where']||null:null,'attributes':_0x4fd277[_0xfda3('0x17')]?_0x4fd277[_0xfda3('0x17')][_0xfda3('0x19')]||null:null,'include':_0x4fd277[_0xfda3('0x17')]?_0x4fd277[_0xfda3('0x17')][_0xfda3('0x1b')]?_[_0xfda3('0x1c')](_0x4fd277[_0xfda3('0x17')][_0xfda3('0x1b')],function(_0x59a1c9){return{'model':db[_0x59a1c9['model']],'as':_0x59a1c9['as'],'attributes':_0x59a1c9[_0xfda3('0x19')],'include':_0x59a1c9[_0xfda3('0x1b')]?_['map'](_0x59a1c9[_0xfda3('0x1b')],function(_0xc861d2){return{'model':db[_0xc861d2[_0xfda3('0x1d')]],'as':_0xc861d2['as'],'attributes':_0xc861d2['attributes'],'include':_0xc861d2[_0xfda3('0x1b')]?_[_0xfda3('0x1c')](_0xc861d2[_0xfda3('0x1b')],function(_0x3151e6){return{'model':db[_0x3151e6[_0xfda3('0x1d')]],'as':_0x3151e6['as'],'attributes':_0x3151e6['attributes']};}):[]};}):[]};}):[]:[]})[_0xfda3('0x8')](function(_0x2d2043){logger[_0xfda3('0x9')]('ShowVtigerAccount',_0x4fd277);logger[_0xfda3('0xc')]('ShowVtigerAccount',_0x4fd277,JSON[_0xfda3('0xe')](_0x2d2043));_0x16b4a2(_0x2d2043);})[_0xfda3('0x13')](function(_0x43a58a){logger[_0xfda3('0xf')](_0xfda3('0x1e'),_0x43a58a[_0xfda3('0x11')],_0x4fd277);_0x2a5971(_0x4b9d90[_0xfda3('0xf')](0x1f4,_0x43a58a[_0xfda3('0x11')]));});});};
\ No newline at end of file
index d573cad..1d301a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ea=['./intVtigerConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x761b6d,_0x7c7fa8){var _0x3a1639=function(_0x33b90a){while(--_0x33b90a){_0x761b6d['push'](_0x761b6d['shift']());}};_0x3a1639(++_0x7c7fa8);}(_0x67ea,0x105));var _0xa67e=function(_0x15b380,_0x1a3c5f){_0x15b380=_0x15b380-0x0;var _0x232c5c=_0x67ea[_0x15b380];return _0x232c5c;};'use strict';var multer=require('multer');var util=require(_0xa67e('0x0'));var path=require(_0xa67e('0x1'));var timeout=require(_0xa67e('0x2'));var express=require(_0xa67e('0x3'));var router=express[_0xa67e('0x4')]();var fs_extra=require(_0xa67e('0x5'));var auth=require(_0xa67e('0x6'));var interaction=require(_0xa67e('0x7'));var config=require(_0xa67e('0x8'));var controller=require(_0xa67e('0x9'));router[_0xa67e('0xa')]('/',auth['isAuthenticated'](),controller[_0xa67e('0xb')]);router['get'](_0xa67e('0xc'),auth[_0xa67e('0xd')](),controller[_0xa67e('0xe')]);router['get'](_0xa67e('0xf'),auth[_0xa67e('0xd')](),controller[_0xa67e('0x10')]);router[_0xa67e('0xa')](_0xa67e('0x11'),auth[_0xa67e('0xd')](),controller[_0xa67e('0x12')]);router[_0xa67e('0xa')](_0xa67e('0x13'),auth[_0xa67e('0xd')](),controller[_0xa67e('0x14')]);router[_0xa67e('0x15')]('/',auth[_0xa67e('0xd')](),controller[_0xa67e('0x16')]);router[_0xa67e('0x17')](_0xa67e('0xc'),auth['isAuthenticated'](),controller[_0xa67e('0x18')]);router[_0xa67e('0x19')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xa67e('0x1a')]=router;
\ No newline at end of file
+var _0x2164=['put','delete','/:id','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create'];(function(_0x3a7cbc,_0x42ad0d){var _0x505bf2=function(_0x431799){while(--_0x431799){_0x3a7cbc['push'](_0x3a7cbc['shift']());}};_0x505bf2(++_0x42ad0d);}(_0x2164,0xc4));var _0x4216=function(_0xafba1f,_0x2111c6){_0xafba1f=_0xafba1f-0x0;var _0x4c6dcf=_0x2164[_0xafba1f];return _0x4c6dcf;};'use strict';var multer=require(_0x4216('0x0'));var util=require(_0x4216('0x1'));var path=require('path');var timeout=require(_0x4216('0x2'));var express=require(_0x4216('0x3'));var router=express[_0x4216('0x4')]();var fs_extra=require(_0x4216('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4216('0x6'));var config=require(_0x4216('0x7'));var controller=require(_0x4216('0x8'));router[_0x4216('0x9')]('/',auth[_0x4216('0xa')](),controller[_0x4216('0xb')]);router[_0x4216('0x9')]('/:id',auth[_0x4216('0xa')](),controller[_0x4216('0xc')]);router[_0x4216('0x9')](_0x4216('0xd'),auth[_0x4216('0xa')](),controller[_0x4216('0xe')]);router['get'](_0x4216('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x4216('0x9')](_0x4216('0x10'),auth[_0x4216('0xa')](),controller[_0x4216('0x11')]);router[_0x4216('0x12')]('/',auth[_0x4216('0xa')](),controller[_0x4216('0x13')]);router[_0x4216('0x14')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x4216('0x15')](_0x4216('0x16'),auth[_0x4216('0xa')](),controller[_0x4216('0x17')]);module['exports']=router;
\ No newline at end of file
index 3c5744d..a0bfef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca02=['exports','STRING','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca02,0x11f));var _0x2ca0=function(_0x539965,_0x284d53){_0x539965=_0x539965-0x0;var _0x41ec61=_0xca02[_0x539965];return _0x41ec61;};'use strict';var Sequelize=require(_0x2ca0('0x0'));module[_0x2ca0('0x1')]={'name':{'type':Sequelize[_0x2ca0('0x2')]},'description':{'type':Sequelize[_0x2ca0('0x2')]}};
\ No newline at end of file
+var _0xa044=['STRING','exports'];(function(_0x10b589,_0x3710f2){var _0x5377a1=function(_0xc65ecb){while(--_0xc65ecb){_0x10b589['push'](_0x10b589['shift']());}};_0x5377a1(++_0x3710f2);}(_0xa044,0x111));var _0x4a04=function(_0x4b4340,_0x295fc0){_0x4b4340=_0x4b4340-0x0;var _0x4cdb42=_0xa044[_0x4b4340];return _0x4cdb42;};'use strict';var Sequelize=require('sequelize');module[_0x4a04('0x0')]={'name':{'type':Sequelize[_0x4a04('0x1')]},'description':{'type':Sequelize[_0x4a04('0x1')]}};
\ No newline at end of file
index 7acacea..fb0a1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eec=['params','find','create','body','findOne','VtigerField','nolimit','getFields','getSubjects','getDescriptions','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','json','apply','reject','update','destroy','then','end','stack','name','index','map','VtigerConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show'];(function(_0x3f2fea,_0x3c4ea8){var _0x69a4d5=function(_0x223109){while(--_0x223109){_0x3f2fea['push'](_0x3f2fea['shift']());}};_0x69a4d5(++_0x3c4ea8);}(_0x0eec,0xac));var _0xc0ee=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0eec[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xc0ee('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc0ee('0x1'));var rp=require(_0xc0ee('0x2'));var moment=require(_0xc0ee('0x3'));var BPromise=require(_0xc0ee('0x4'));var Mustache=require(_0xc0ee('0x5'));var util=require(_0xc0ee('0x6'));var path=require(_0xc0ee('0x7'));var sox=require('sox');var csv=require(_0xc0ee('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc0ee('0x9'));var _=require(_0xc0ee('0xa'));var squel=require(_0xc0ee('0xb'));var crypto=require(_0xc0ee('0xc'));var jsforce=require(_0xc0ee('0xd'));var deskjs=require(_0xc0ee('0xe'));var toCsv=require(_0xc0ee('0x8'));var querystring=require('querystring');var Papa=require(_0xc0ee('0xf'));var Redis=require(_0xc0ee('0x10'));var authService=require(_0xc0ee('0x11'));var qs=require(_0xc0ee('0x12'));var as=require(_0xc0ee('0x13'));var hardwareService=require(_0xc0ee('0x14'));var logger=require(_0xc0ee('0x15'))('api');var utils=require(_0xc0ee('0x16'));var config=require(_0xc0ee('0x17'));var licenseUtil=require(_0xc0ee('0x18'));var db=require(_0xc0ee('0x19'))['db'];function respondWithStatusCode(_0x22d46b,_0x2d4e3c){_0x2d4e3c=_0x2d4e3c||0xcc;return function(_0x454f5d){if(_0x454f5d){return _0x22d46b[_0xc0ee('0x1a')](_0x2d4e3c);}return _0x22d46b[_0xc0ee('0x1b')](_0x2d4e3c)['end']();};}function respondWithResult(_0x51ae2e,_0x1f3ad9){_0x1f3ad9=_0x1f3ad9||0xc8;return function(_0x325193){if(_0x325193){return _0x51ae2e[_0xc0ee('0x1b')](_0x1f3ad9)['json'](_0x325193);}};}function respondWithFilteredResult(_0x170bf9,_0x30c324){return function(_0x448448){if(_0x448448){var _0x58e1f0=typeof _0x30c324['offset']===_0xc0ee('0x1c')&&typeof _0x30c324['limit']===_0xc0ee('0x1c');var _0x20195b=_0x448448[_0xc0ee('0x1d')];var _0x59aad9=_0x58e1f0?0x0:_0x30c324['offset'];var _0x16d050=_0x58e1f0?_0x448448[_0xc0ee('0x1d')]:_0x30c324[_0xc0ee('0x1e')]+_0x30c324['limit'];var _0x390ee4;if(_0x16d050>=_0x20195b){_0x16d050=_0x20195b;_0x390ee4=0xc8;}else{_0x390ee4=0xce;}_0x170bf9[_0xc0ee('0x1b')](_0x390ee4);return _0x170bf9['set']('Content-Range',_0x59aad9+'-'+_0x16d050+'/'+_0x20195b)[_0xc0ee('0x1f')](_0x448448);}return null;};}function patchUpdates(_0x233333){return function(_0x4dd8c9){try{jsonpatch[_0xc0ee('0x20')](_0x4dd8c9,_0x233333,!![]);}catch(_0x30a00c){return BPromise[_0xc0ee('0x21')](_0x30a00c);}return _0x4dd8c9['save']();};}function saveUpdates(_0x49be2a,_0x5af925){return function(_0x7ec74){if(_0x7ec74){return _0x7ec74[_0xc0ee('0x22')](_0x49be2a)['then'](function(_0x2c3d95){return _0x2c3d95;});}return null;};}function removeEntity(_0x453490,_0x20b657){return function(_0x11b6a4){if(_0x11b6a4){return _0x11b6a4[_0xc0ee('0x23')]()[_0xc0ee('0x24')](function(){_0x453490[_0xc0ee('0x1b')](0xcc)[_0xc0ee('0x25')]();});}};}function handleEntityNotFound(_0x38abc9,_0x6d1087){return function(_0x2b0584){if(!_0x2b0584){_0x38abc9[_0xc0ee('0x1a')](0x194);}return _0x2b0584;};}function handleError(_0x168ab5,_0x30582e){_0x30582e=_0x30582e||0x1f4;return function(_0x4288e1){logger['error'](_0x4288e1[_0xc0ee('0x26')]);if(_0x4288e1[_0xc0ee('0x27')]){delete _0x4288e1['name'];}_0x168ab5[_0xc0ee('0x1b')](_0x30582e)['send'](_0x4288e1);};}exports[_0xc0ee('0x28')]=function(_0x410fb2,_0x44b511){var _0x1d3594={},_0x46ca29={},_0x369764={'count':0x0,'rows':[]};var _0x24a67a=_[_0xc0ee('0x29')](db[_0xc0ee('0x2a')][_0xc0ee('0x2b')],function(_0x394777){return{'name':_0x394777[_0xc0ee('0x2c')],'type':_0x394777[_0xc0ee('0x2d')][_0xc0ee('0x2e')]};});_0x46ca29['model']=_['map'](_0x24a67a,_0xc0ee('0x27'));_0x46ca29[_0xc0ee('0x2f')]=_[_0xc0ee('0x30')](_0x410fb2[_0xc0ee('0x2f')]);_0x46ca29[_0xc0ee('0x31')]=_[_0xc0ee('0x32')](_0x46ca29[_0xc0ee('0x33')],_0x46ca29[_0xc0ee('0x2f')]);_0x1d3594[_0xc0ee('0x34')]=_[_0xc0ee('0x32')](_0x46ca29[_0xc0ee('0x33')],qs['fields'](_0x410fb2[_0xc0ee('0x2f')][_0xc0ee('0x35')]));_0x1d3594[_0xc0ee('0x34')]=_0x1d3594[_0xc0ee('0x34')][_0xc0ee('0x36')]?_0x1d3594['attributes']:_0x46ca29[_0xc0ee('0x33')];if(!_0x410fb2[_0xc0ee('0x2f')][_0xc0ee('0x37')]('nolimit')){_0x1d3594[_0xc0ee('0x38')]=qs[_0xc0ee('0x38')](_0x410fb2[_0xc0ee('0x2f')][_0xc0ee('0x38')]);_0x1d3594['offset']=qs[_0xc0ee('0x1e')](_0x410fb2['query'][_0xc0ee('0x1e')]);}_0x1d3594[_0xc0ee('0x39')]=qs[_0xc0ee('0x3a')](_0x410fb2[_0xc0ee('0x2f')][_0xc0ee('0x3a')]);_0x1d3594[_0xc0ee('0x3b')]=qs[_0xc0ee('0x31')](_[_0xc0ee('0x3c')](_0x410fb2[_0xc0ee('0x2f')],_0x46ca29[_0xc0ee('0x31')]),_0x24a67a);if(_0x410fb2[_0xc0ee('0x2f')]['filter']){_0x1d3594[_0xc0ee('0x3b')]=_[_0xc0ee('0x3d')](_0x1d3594[_0xc0ee('0x3b')],{'$or':_[_0xc0ee('0x29')](_0x24a67a,function(_0x1cb120){if(_0x1cb120[_0xc0ee('0x2d')]!==_0xc0ee('0x3e')){var _0x2d7b9e={};_0x2d7b9e[_0x1cb120['name']]={'$like':'%'+_0x410fb2['query'][_0xc0ee('0x3f')]+'%'};return _0x2d7b9e;}})});}_0x1d3594=_['merge']({},_0x1d3594,_0x410fb2[_0xc0ee('0x40')]);var _0xf46dc5={'where':_0x1d3594['where']};return db[_0xc0ee('0x2a')]['count'](_0xf46dc5)[_0xc0ee('0x24')](function(_0x4f385a){_0x369764['count']=_0x4f385a;if(_0x410fb2['query'][_0xc0ee('0x41')]){_0x1d3594[_0xc0ee('0x42')]=[{'all':!![]}];}return db[_0xc0ee('0x2a')][_0xc0ee('0x43')](_0x1d3594);})['then'](function(_0x3c0c7b){_0x369764[_0xc0ee('0x44')]=_0x3c0c7b;return _0x369764;})[_0xc0ee('0x24')](respondWithFilteredResult(_0x44b511,_0x1d3594))[_0xc0ee('0x45')](handleError(_0x44b511,null));};exports[_0xc0ee('0x46')]=function(_0x5c2111,_0x388c7b){var _0x264a41={'raw':![],'where':{'id':_0x5c2111[_0xc0ee('0x47')]['id']}},_0x5577aa={};_0x5577aa['model']=_[_0xc0ee('0x30')](db[_0xc0ee('0x2a')]['rawAttributes']);_0x5577aa[_0xc0ee('0x2f')]=_[_0xc0ee('0x30')](_0x5c2111['query']);_0x5577aa[_0xc0ee('0x31')]=_[_0xc0ee('0x32')](_0x5577aa['model'],_0x5577aa[_0xc0ee('0x2f')]);_0x264a41[_0xc0ee('0x34')]=_[_0xc0ee('0x32')](_0x5577aa[_0xc0ee('0x33')],qs[_0xc0ee('0x35')](_0x5c2111['query']['fields']));_0x264a41[_0xc0ee('0x34')]=_0x264a41[_0xc0ee('0x34')][_0xc0ee('0x36')]?_0x264a41[_0xc0ee('0x34')]:_0x5577aa['model'];if(_0x5c2111['query'][_0xc0ee('0x41')]){_0x264a41[_0xc0ee('0x42')]=[{'all':!![]}];}_0x264a41=_[_0xc0ee('0x3d')]({},_0x264a41,_0x5c2111['options']);return db['VtigerConfiguration'][_0xc0ee('0x48')](_0x264a41)[_0xc0ee('0x24')](handleEntityNotFound(_0x388c7b,null))[_0xc0ee('0x24')](respondWithResult(_0x388c7b,null))['catch'](handleError(_0x388c7b,null));};exports[_0xc0ee('0x49')]=function(_0x3d6a10,_0x5e5f5e){return db[_0xc0ee('0x2a')][_0xc0ee('0x49')](_0x3d6a10[_0xc0ee('0x4a')],{})[_0xc0ee('0x24')](respondWithResult(_0x5e5f5e,0xc9))['catch'](handleError(_0x5e5f5e,null));};exports['update']=function(_0x22c742,_0x5ca93b){if(_0x22c742['body']['id']){delete _0x22c742['body']['id'];}return db[_0xc0ee('0x2a')]['find']({'where':{'id':_0x22c742[_0xc0ee('0x47')]['id']}})[_0xc0ee('0x24')](handleEntityNotFound(_0x5ca93b,null))[_0xc0ee('0x24')](saveUpdates(_0x22c742['body'],null))[_0xc0ee('0x24')](respondWithResult(_0x5ca93b,null))['catch'](handleError(_0x5ca93b,null));};exports[_0xc0ee('0x23')]=function(_0x4b2fcc,_0x3bb5ae){return db[_0xc0ee('0x2a')][_0xc0ee('0x48')]({'where':{'id':_0x4b2fcc[_0xc0ee('0x47')]['id']}})[_0xc0ee('0x24')](handleEntityNotFound(_0x3bb5ae,null))[_0xc0ee('0x24')](removeEntity(_0x3bb5ae,null))['catch'](handleError(_0x3bb5ae,null));};exports['getFields']=function(_0x6e6b2c,_0x497ed9,_0x3f03f8){var _0x59f19f={};var _0x348019={};var _0x3843eb;var _0x45ac12;return db[_0xc0ee('0x2a')][_0xc0ee('0x4b')]({'where':{'id':_0x6e6b2c[_0xc0ee('0x47')]['id']}})['then'](handleEntityNotFound(_0x497ed9,null))[_0xc0ee('0x24')](function(_0x10c89e){if(_0x10c89e){_0x3843eb=_0x10c89e;_0x348019['model']=_[_0xc0ee('0x30')](db[_0xc0ee('0x4c')][_0xc0ee('0x2b')]);_0x348019[_0xc0ee('0x2f')]=_[_0xc0ee('0x30')](_0x6e6b2c[_0xc0ee('0x2f')]);_0x348019['filters']=_[_0xc0ee('0x32')](_0x348019[_0xc0ee('0x33')],_0x348019['query']);_0x59f19f['attributes']=_[_0xc0ee('0x32')](_0x348019['model'],qs[_0xc0ee('0x35')](_0x6e6b2c[_0xc0ee('0x2f')][_0xc0ee('0x35')]));_0x59f19f[_0xc0ee('0x34')]=_0x59f19f[_0xc0ee('0x34')][_0xc0ee('0x36')]?_0x59f19f[_0xc0ee('0x34')]:_0x348019[_0xc0ee('0x33')];_0x59f19f[_0xc0ee('0x39')]=qs[_0xc0ee('0x3a')](_0x6e6b2c[_0xc0ee('0x2f')][_0xc0ee('0x3a')]);_0x59f19f[_0xc0ee('0x3b')]=qs['filters'](_[_0xc0ee('0x3c')](_0x6e6b2c[_0xc0ee('0x2f')],_0x348019[_0xc0ee('0x31')]));if(_0x6e6b2c[_0xc0ee('0x2f')][_0xc0ee('0x3f')]){_0x59f19f['where']=_[_0xc0ee('0x3d')](_0x59f19f['where'],{'$or':_[_0xc0ee('0x29')](_0x59f19f[_0xc0ee('0x34')],function(_0x2e6502){var _0x4277af={};_0x4277af[_0x2e6502]={'$like':'%'+_0x6e6b2c[_0xc0ee('0x2f')][_0xc0ee('0x3f')]+'%'};return _0x4277af;})});}_0x59f19f=_['merge']({},_0x59f19f,_0x6e6b2c[_0xc0ee('0x40')]);return _0x3843eb['getFields'](_0x59f19f);}})[_0xc0ee('0x24')](function(_0x1217c6){if(_0x1217c6){_0x45ac12=_0x1217c6[_0xc0ee('0x36')];if(!_0x6e6b2c[_0xc0ee('0x2f')][_0xc0ee('0x37')](_0xc0ee('0x4d'))){_0x59f19f[_0xc0ee('0x38')]=qs[_0xc0ee('0x38')](_0x6e6b2c[_0xc0ee('0x2f')][_0xc0ee('0x38')]);_0x59f19f[_0xc0ee('0x1e')]=qs[_0xc0ee('0x1e')](_0x6e6b2c[_0xc0ee('0x2f')][_0xc0ee('0x1e')]);}return _0x3843eb[_0xc0ee('0x4e')](_0x59f19f);}})[_0xc0ee('0x24')](function(_0x313865){if(_0x313865){return _0x313865?{'count':_0x45ac12,'rows':_0x313865}:null;}})['then'](respondWithResult(_0x497ed9,null))['catch'](handleError(_0x497ed9,null));};exports[_0xc0ee('0x4f')]=function(_0x33f860,_0x506d29,_0x6252fa){var _0x23a66c={};var _0x55092f={};var _0x5b06b8;var _0x579163;return db[_0xc0ee('0x2a')][_0xc0ee('0x4b')]({'where':{'id':_0x33f860['params']['id']}})[_0xc0ee('0x24')](handleEntityNotFound(_0x506d29,null))[_0xc0ee('0x24')](function(_0x3e1d8e){if(_0x3e1d8e){_0x5b06b8=_0x3e1d8e;_0x55092f['model']=_[_0xc0ee('0x30')](db[_0xc0ee('0x4c')][_0xc0ee('0x2b')]);_0x55092f[_0xc0ee('0x2f')]=_[_0xc0ee('0x30')](_0x33f860[_0xc0ee('0x2f')]);_0x55092f[_0xc0ee('0x31')]=_['intersection'](_0x55092f[_0xc0ee('0x33')],_0x55092f['query']);_0x23a66c[_0xc0ee('0x34')]=_['intersection'](_0x55092f[_0xc0ee('0x33')],qs[_0xc0ee('0x35')](_0x33f860[_0xc0ee('0x2f')][_0xc0ee('0x35')]));_0x23a66c[_0xc0ee('0x34')]=_0x23a66c[_0xc0ee('0x34')][_0xc0ee('0x36')]?_0x23a66c[_0xc0ee('0x34')]:_0x55092f[_0xc0ee('0x33')];_0x23a66c[_0xc0ee('0x39')]=qs['sort'](_0x33f860[_0xc0ee('0x2f')][_0xc0ee('0x3a')]);_0x23a66c[_0xc0ee('0x3b')]=qs[_0xc0ee('0x31')](_['pick'](_0x33f860[_0xc0ee('0x2f')],_0x55092f[_0xc0ee('0x31')]));if(_0x33f860['query']['filter']){_0x23a66c[_0xc0ee('0x3b')]=_[_0xc0ee('0x3d')](_0x23a66c[_0xc0ee('0x3b')],{'$or':_[_0xc0ee('0x29')](_0x23a66c[_0xc0ee('0x34')],function(_0x17a0c4){var _0x3c6aa9={};_0x3c6aa9[_0x17a0c4]={'$like':'%'+_0x33f860[_0xc0ee('0x2f')][_0xc0ee('0x3f')]+'%'};return _0x3c6aa9;})});}_0x23a66c=_[_0xc0ee('0x3d')]({},_0x23a66c,_0x33f860[_0xc0ee('0x40')]);return _0x5b06b8['getSubjects'](_0x23a66c);}})[_0xc0ee('0x24')](function(_0x39cc91){if(_0x39cc91){_0x579163=_0x39cc91[_0xc0ee('0x36')];if(!_0x33f860['query'][_0xc0ee('0x37')](_0xc0ee('0x4d'))){_0x23a66c['limit']=qs[_0xc0ee('0x38')](_0x33f860[_0xc0ee('0x2f')][_0xc0ee('0x38')]);_0x23a66c['offset']=qs[_0xc0ee('0x1e')](_0x33f860[_0xc0ee('0x2f')][_0xc0ee('0x1e')]);}return _0x5b06b8['getSubjects'](_0x23a66c);}})[_0xc0ee('0x24')](function(_0xc4228d){if(_0xc4228d){return _0xc4228d?{'count':_0x579163,'rows':_0xc4228d}:null;}})[_0xc0ee('0x24')](respondWithResult(_0x506d29,null))[_0xc0ee('0x45')](handleError(_0x506d29,null));};exports[_0xc0ee('0x50')]=function(_0x419953,_0x3ba6c6,_0x2952c0){var _0x3d2460={};var _0x53e5b5={};var _0x1d6bff;var _0x443346;return db['VtigerConfiguration'][_0xc0ee('0x4b')]({'where':{'id':_0x419953[_0xc0ee('0x47')]['id']}})[_0xc0ee('0x24')](handleEntityNotFound(_0x3ba6c6,null))['then'](function(_0x2ceeeb){if(_0x2ceeeb){_0x1d6bff=_0x2ceeeb;_0x53e5b5[_0xc0ee('0x33')]=_[_0xc0ee('0x30')](db[_0xc0ee('0x4c')][_0xc0ee('0x2b')]);_0x53e5b5[_0xc0ee('0x2f')]=_[_0xc0ee('0x30')](_0x419953[_0xc0ee('0x2f')]);_0x53e5b5[_0xc0ee('0x31')]=_['intersection'](_0x53e5b5[_0xc0ee('0x33')],_0x53e5b5[_0xc0ee('0x2f')]);_0x3d2460['attributes']=_[_0xc0ee('0x32')](_0x53e5b5['model'],qs['fields'](_0x419953[_0xc0ee('0x2f')]['fields']));_0x3d2460[_0xc0ee('0x34')]=_0x3d2460[_0xc0ee('0x34')][_0xc0ee('0x36')]?_0x3d2460[_0xc0ee('0x34')]:_0x53e5b5[_0xc0ee('0x33')];_0x3d2460[_0xc0ee('0x39')]=qs[_0xc0ee('0x3a')](_0x419953['query']['sort']);_0x3d2460[_0xc0ee('0x3b')]=qs[_0xc0ee('0x31')](_[_0xc0ee('0x3c')](_0x419953[_0xc0ee('0x2f')],_0x53e5b5[_0xc0ee('0x31')]));if(_0x419953[_0xc0ee('0x2f')][_0xc0ee('0x3f')]){_0x3d2460[_0xc0ee('0x3b')]=_['merge'](_0x3d2460['where'],{'$or':_[_0xc0ee('0x29')](_0x3d2460['attributes'],function(_0x1afab7){var _0x18502f={};_0x18502f[_0x1afab7]={'$like':'%'+_0x419953['query'][_0xc0ee('0x3f')]+'%'};return _0x18502f;})});}_0x3d2460=_[_0xc0ee('0x3d')]({},_0x3d2460,_0x419953['options']);return _0x1d6bff[_0xc0ee('0x50')](_0x3d2460);}})[_0xc0ee('0x24')](function(_0x37d575){if(_0x37d575){_0x443346=_0x37d575[_0xc0ee('0x36')];if(!_0x419953[_0xc0ee('0x2f')][_0xc0ee('0x37')]('nolimit')){_0x3d2460[_0xc0ee('0x38')]=qs[_0xc0ee('0x38')](_0x419953['query'][_0xc0ee('0x38')]);_0x3d2460[_0xc0ee('0x1e')]=qs[_0xc0ee('0x1e')](_0x419953[_0xc0ee('0x2f')][_0xc0ee('0x1e')]);}return _0x1d6bff['getDescriptions'](_0x3d2460);}})[_0xc0ee('0x24')](function(_0x33cbaa){if(_0x33cbaa){return _0x33cbaa?{'count':_0x443346,'rows':_0x33cbaa}:null;}})[_0xc0ee('0x24')](respondWithResult(_0x3ba6c6,null))[_0xc0ee('0x45')](handleError(_0x3ba6c6,null));};
\ No newline at end of file
+var _0x90db=['../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','index','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','VtigerConfiguration','includeAll','include','findAll','rows','catch','params','length','options','find','body','findOne','VtigerField','getFields','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x5c2766,_0x906188){var _0x254981=function(_0x1c05b3){while(--_0x1c05b3){_0x5c2766['push'](_0x5c2766['shift']());}};_0x254981(++_0x906188);}(_0x90db,0x1c0));var _0xb90d=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x90db[_0x3054be];return _0x3df150;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb90d('0x0'));var zipdir=require(_0xb90d('0x1'));var jsonpatch=require(_0xb90d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xb90d('0x3'));var sox=require(_0xb90d('0x4'));var csv=require(_0xb90d('0x5'));var ejs=require(_0xb90d('0x6'));var fs=require('fs');var fs_extra=require(_0xb90d('0x7'));var _=require(_0xb90d('0x8'));var squel=require(_0xb90d('0x9'));var crypto=require(_0xb90d('0xa'));var jsforce=require(_0xb90d('0xb'));var deskjs=require(_0xb90d('0xc'));var toCsv=require(_0xb90d('0x5'));var querystring=require(_0xb90d('0xd'));var Papa=require('papaparse');var Redis=require(_0xb90d('0xe'));var authService=require(_0xb90d('0xf'));var qs=require(_0xb90d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb90d('0x11'));var logger=require(_0xb90d('0x12'))(_0xb90d('0x13'));var utils=require(_0xb90d('0x14'));var config=require(_0xb90d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xb90d('0x16'))['db'];function respondWithStatusCode(_0x5bc2b9,_0xe1b1d6){_0xe1b1d6=_0xe1b1d6||0xcc;return function(_0x1d5eed){if(_0x1d5eed){return _0x5bc2b9[_0xb90d('0x17')](_0xe1b1d6);}return _0x5bc2b9[_0xb90d('0x18')](_0xe1b1d6)[_0xb90d('0x19')]();};}function respondWithResult(_0x1152fb,_0x1f797c){_0x1f797c=_0x1f797c||0xc8;return function(_0x56c67c){if(_0x56c67c){return _0x1152fb[_0xb90d('0x18')](_0x1f797c)['json'](_0x56c67c);}};}function respondWithFilteredResult(_0x13dbd5,_0x469d74){return function(_0x5af3c4){if(_0x5af3c4){var _0x1b2324=typeof _0x469d74['offset']===_0xb90d('0x1a')&&typeof _0x469d74[_0xb90d('0x1b')]===_0xb90d('0x1a');var _0x23c136=_0x5af3c4[_0xb90d('0x1c')];var _0x47ee5d=_0x1b2324?0x0:_0x469d74[_0xb90d('0x1d')];var _0x4bd383=_0x1b2324?_0x5af3c4[_0xb90d('0x1c')]:_0x469d74['offset']+_0x469d74['limit'];var _0x73eae9;if(_0x4bd383>=_0x23c136){_0x4bd383=_0x23c136;_0x73eae9=0xc8;}else{_0x73eae9=0xce;}_0x13dbd5[_0xb90d('0x18')](_0x73eae9);return _0x13dbd5[_0xb90d('0x1e')](_0xb90d('0x1f'),_0x47ee5d+'-'+_0x4bd383+'/'+_0x23c136)[_0xb90d('0x20')](_0x5af3c4);}return null;};}function patchUpdates(_0x134076){return function(_0x4d3a04){try{jsonpatch[_0xb90d('0x21')](_0x4d3a04,_0x134076,!![]);}catch(_0x14958c){return BPromise['reject'](_0x14958c);}return _0x4d3a04[_0xb90d('0x22')]();};}function saveUpdates(_0x21d28e,_0x3b3b80){return function(_0x39dcc4){if(_0x39dcc4){return _0x39dcc4[_0xb90d('0x23')](_0x21d28e)[_0xb90d('0x24')](function(_0x818e68){return _0x818e68;});}return null;};}function removeEntity(_0x24f299,_0x37b8ec){return function(_0x1cf8cc){if(_0x1cf8cc){return _0x1cf8cc[_0xb90d('0x25')]()[_0xb90d('0x24')](function(){_0x24f299[_0xb90d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x280ec3,_0x54827c){return function(_0x130cc8){if(!_0x130cc8){_0x280ec3[_0xb90d('0x17')](0x194);}return _0x130cc8;};}function handleError(_0x373246,_0x41273b){_0x41273b=_0x41273b||0x1f4;return function(_0x31aee9){logger[_0xb90d('0x26')](_0x31aee9[_0xb90d('0x27')]);if(_0x31aee9[_0xb90d('0x28')]){delete _0x31aee9[_0xb90d('0x28')];}_0x373246[_0xb90d('0x18')](_0x41273b)['send'](_0x31aee9);};}exports[_0xb90d('0x29')]=function(_0x12022d,_0x9428fe){var _0x112370={},_0x1f9151={},_0x21fcea={'count':0x0,'rows':[]};var _0x480d90=_['map'](db['VtigerConfiguration'][_0xb90d('0x2a')],function(_0x506aa0){return{'name':_0x506aa0[_0xb90d('0x2b')],'type':_0x506aa0[_0xb90d('0x2c')]['key']};});_0x1f9151[_0xb90d('0x2d')]=_[_0xb90d('0x2e')](_0x480d90,_0xb90d('0x28'));_0x1f9151[_0xb90d('0x2f')]=_[_0xb90d('0x30')](_0x12022d[_0xb90d('0x2f')]);_0x1f9151[_0xb90d('0x31')]=_[_0xb90d('0x32')](_0x1f9151[_0xb90d('0x2d')],_0x1f9151[_0xb90d('0x2f')]);_0x112370[_0xb90d('0x33')]=_[_0xb90d('0x32')](_0x1f9151[_0xb90d('0x2d')],qs[_0xb90d('0x34')](_0x12022d[_0xb90d('0x2f')][_0xb90d('0x34')]));_0x112370[_0xb90d('0x33')]=_0x112370[_0xb90d('0x33')]['length']?_0x112370['attributes']:_0x1f9151[_0xb90d('0x2d')];if(!_0x12022d[_0xb90d('0x2f')][_0xb90d('0x35')](_0xb90d('0x36'))){_0x112370[_0xb90d('0x1b')]=qs[_0xb90d('0x1b')](_0x12022d[_0xb90d('0x2f')]['limit']);_0x112370[_0xb90d('0x1d')]=qs['offset'](_0x12022d[_0xb90d('0x2f')][_0xb90d('0x1d')]);}_0x112370[_0xb90d('0x37')]=qs[_0xb90d('0x38')](_0x12022d[_0xb90d('0x2f')][_0xb90d('0x38')]);_0x112370[_0xb90d('0x39')]=qs[_0xb90d('0x31')](_[_0xb90d('0x3a')](_0x12022d['query'],_0x1f9151[_0xb90d('0x31')]),_0x480d90);if(_0x12022d[_0xb90d('0x2f')][_0xb90d('0x3b')]){_0x112370[_0xb90d('0x39')]=_['merge'](_0x112370[_0xb90d('0x39')],{'$or':_[_0xb90d('0x2e')](_0x480d90,function(_0x1965a6){if(_0x1965a6[_0xb90d('0x2c')]!==_0xb90d('0x3c')){var _0x4adffe={};_0x4adffe[_0x1965a6[_0xb90d('0x28')]]={'$like':'%'+_0x12022d[_0xb90d('0x2f')][_0xb90d('0x3b')]+'%'};return _0x4adffe;}})});}_0x112370=_[_0xb90d('0x3d')]({},_0x112370,_0x12022d['options']);var _0x396258={'where':_0x112370[_0xb90d('0x39')]};return db[_0xb90d('0x3e')][_0xb90d('0x1c')](_0x396258)[_0xb90d('0x24')](function(_0x5180db){_0x21fcea[_0xb90d('0x1c')]=_0x5180db;if(_0x12022d[_0xb90d('0x2f')][_0xb90d('0x3f')]){_0x112370[_0xb90d('0x40')]=[{'all':!![]}];}return db[_0xb90d('0x3e')][_0xb90d('0x41')](_0x112370);})[_0xb90d('0x24')](function(_0x238a36){_0x21fcea[_0xb90d('0x42')]=_0x238a36;return _0x21fcea;})[_0xb90d('0x24')](respondWithFilteredResult(_0x9428fe,_0x112370))[_0xb90d('0x43')](handleError(_0x9428fe,null));};exports['show']=function(_0x200de3,_0x539ac4){var _0x3497c2={'raw':![],'where':{'id':_0x200de3[_0xb90d('0x44')]['id']}},_0x53ad19={};_0x53ad19[_0xb90d('0x2d')]=_[_0xb90d('0x30')](db[_0xb90d('0x3e')][_0xb90d('0x2a')]);_0x53ad19['query']=_[_0xb90d('0x30')](_0x200de3[_0xb90d('0x2f')]);_0x53ad19['filters']=_['intersection'](_0x53ad19['model'],_0x53ad19['query']);_0x3497c2[_0xb90d('0x33')]=_[_0xb90d('0x32')](_0x53ad19['model'],qs[_0xb90d('0x34')](_0x200de3['query'][_0xb90d('0x34')]));_0x3497c2['attributes']=_0x3497c2['attributes'][_0xb90d('0x45')]?_0x3497c2[_0xb90d('0x33')]:_0x53ad19[_0xb90d('0x2d')];if(_0x200de3[_0xb90d('0x2f')][_0xb90d('0x3f')]){_0x3497c2['include']=[{'all':!![]}];}_0x3497c2=_[_0xb90d('0x3d')]({},_0x3497c2,_0x200de3[_0xb90d('0x46')]);return db[_0xb90d('0x3e')][_0xb90d('0x47')](_0x3497c2)[_0xb90d('0x24')](handleEntityNotFound(_0x539ac4,null))[_0xb90d('0x24')](respondWithResult(_0x539ac4,null))[_0xb90d('0x43')](handleError(_0x539ac4,null));};exports['create']=function(_0xcd3b8b,_0x240e0f){return db[_0xb90d('0x3e')]['create'](_0xcd3b8b[_0xb90d('0x48')],{})[_0xb90d('0x24')](respondWithResult(_0x240e0f,0xc9))[_0xb90d('0x43')](handleError(_0x240e0f,null));};exports['update']=function(_0x4a50aa,_0x25e5f5){if(_0x4a50aa[_0xb90d('0x48')]['id']){delete _0x4a50aa[_0xb90d('0x48')]['id'];}return db[_0xb90d('0x3e')][_0xb90d('0x47')]({'where':{'id':_0x4a50aa[_0xb90d('0x44')]['id']}})[_0xb90d('0x24')](handleEntityNotFound(_0x25e5f5,null))[_0xb90d('0x24')](saveUpdates(_0x4a50aa[_0xb90d('0x48')],null))[_0xb90d('0x24')](respondWithResult(_0x25e5f5,null))[_0xb90d('0x43')](handleError(_0x25e5f5,null));};exports[_0xb90d('0x25')]=function(_0x3f3c14,_0x45821a){return db['VtigerConfiguration'][_0xb90d('0x47')]({'where':{'id':_0x3f3c14[_0xb90d('0x44')]['id']}})[_0xb90d('0x24')](handleEntityNotFound(_0x45821a,null))['then'](removeEntity(_0x45821a,null))['catch'](handleError(_0x45821a,null));};exports['getFields']=function(_0x1aef13,_0x3d681d,_0x4049ca){var _0x2f286d={};var _0x5a5253={};var _0x2b582d;var _0x24a218;return db[_0xb90d('0x3e')][_0xb90d('0x49')]({'where':{'id':_0x1aef13[_0xb90d('0x44')]['id']}})[_0xb90d('0x24')](handleEntityNotFound(_0x3d681d,null))[_0xb90d('0x24')](function(_0x2ed6a4){if(_0x2ed6a4){_0x2b582d=_0x2ed6a4;_0x5a5253['model']=_[_0xb90d('0x30')](db[_0xb90d('0x4a')]['rawAttributes']);_0x5a5253['query']=_['keys'](_0x1aef13[_0xb90d('0x2f')]);_0x5a5253[_0xb90d('0x31')]=_[_0xb90d('0x32')](_0x5a5253[_0xb90d('0x2d')],_0x5a5253['query']);_0x2f286d[_0xb90d('0x33')]=_['intersection'](_0x5a5253[_0xb90d('0x2d')],qs[_0xb90d('0x34')](_0x1aef13[_0xb90d('0x2f')][_0xb90d('0x34')]));_0x2f286d[_0xb90d('0x33')]=_0x2f286d['attributes']['length']?_0x2f286d[_0xb90d('0x33')]:_0x5a5253[_0xb90d('0x2d')];_0x2f286d[_0xb90d('0x37')]=qs['sort'](_0x1aef13['query'][_0xb90d('0x38')]);_0x2f286d[_0xb90d('0x39')]=qs[_0xb90d('0x31')](_['pick'](_0x1aef13[_0xb90d('0x2f')],_0x5a5253['filters']));if(_0x1aef13[_0xb90d('0x2f')][_0xb90d('0x3b')]){_0x2f286d[_0xb90d('0x39')]=_[_0xb90d('0x3d')](_0x2f286d['where'],{'$or':_['map'](_0x2f286d[_0xb90d('0x33')],function(_0x46d0f8){var _0x5b0777={};_0x5b0777[_0x46d0f8]={'$like':'%'+_0x1aef13[_0xb90d('0x2f')][_0xb90d('0x3b')]+'%'};return _0x5b0777;})});}_0x2f286d=_[_0xb90d('0x3d')]({},_0x2f286d,_0x1aef13[_0xb90d('0x46')]);return _0x2b582d[_0xb90d('0x4b')](_0x2f286d);}})[_0xb90d('0x24')](function(_0xc91141){if(_0xc91141){_0x24a218=_0xc91141[_0xb90d('0x45')];if(!_0x1aef13[_0xb90d('0x2f')]['hasOwnProperty'](_0xb90d('0x36'))){_0x2f286d[_0xb90d('0x1b')]=qs['limit'](_0x1aef13[_0xb90d('0x2f')][_0xb90d('0x1b')]);_0x2f286d[_0xb90d('0x1d')]=qs['offset'](_0x1aef13[_0xb90d('0x2f')][_0xb90d('0x1d')]);}return _0x2b582d['getFields'](_0x2f286d);}})[_0xb90d('0x24')](function(_0xfad567){if(_0xfad567){return _0xfad567?{'count':_0x24a218,'rows':_0xfad567}:null;}})['then'](respondWithResult(_0x3d681d,null))[_0xb90d('0x43')](handleError(_0x3d681d,null));};exports[_0xb90d('0x4c')]=function(_0x26b7cc,_0x2553fa,_0x4b860e){var _0x4eefaa={};var _0x469124={};var _0x249080;var _0x17ad0b;return db[_0xb90d('0x3e')][_0xb90d('0x49')]({'where':{'id':_0x26b7cc[_0xb90d('0x44')]['id']}})[_0xb90d('0x24')](handleEntityNotFound(_0x2553fa,null))[_0xb90d('0x24')](function(_0x3fae7a){if(_0x3fae7a){_0x249080=_0x3fae7a;_0x469124[_0xb90d('0x2d')]=_[_0xb90d('0x30')](db[_0xb90d('0x4a')][_0xb90d('0x2a')]);_0x469124[_0xb90d('0x2f')]=_[_0xb90d('0x30')](_0x26b7cc[_0xb90d('0x2f')]);_0x469124[_0xb90d('0x31')]=_[_0xb90d('0x32')](_0x469124[_0xb90d('0x2d')],_0x469124[_0xb90d('0x2f')]);_0x4eefaa[_0xb90d('0x33')]=_[_0xb90d('0x32')](_0x469124[_0xb90d('0x2d')],qs[_0xb90d('0x34')](_0x26b7cc[_0xb90d('0x2f')]['fields']));_0x4eefaa['attributes']=_0x4eefaa[_0xb90d('0x33')]['length']?_0x4eefaa[_0xb90d('0x33')]:_0x469124[_0xb90d('0x2d')];_0x4eefaa[_0xb90d('0x37')]=qs[_0xb90d('0x38')](_0x26b7cc[_0xb90d('0x2f')][_0xb90d('0x38')]);_0x4eefaa['where']=qs['filters'](_['pick'](_0x26b7cc['query'],_0x469124[_0xb90d('0x31')]));if(_0x26b7cc[_0xb90d('0x2f')]['filter']){_0x4eefaa['where']=_[_0xb90d('0x3d')](_0x4eefaa[_0xb90d('0x39')],{'$or':_[_0xb90d('0x2e')](_0x4eefaa[_0xb90d('0x33')],function(_0x249863){var _0x53ad61={};_0x53ad61[_0x249863]={'$like':'%'+_0x26b7cc[_0xb90d('0x2f')]['filter']+'%'};return _0x53ad61;})});}_0x4eefaa=_['merge']({},_0x4eefaa,_0x26b7cc[_0xb90d('0x46')]);return _0x249080['getSubjects'](_0x4eefaa);}})[_0xb90d('0x24')](function(_0x19e7c8){if(_0x19e7c8){_0x17ad0b=_0x19e7c8['length'];if(!_0x26b7cc[_0xb90d('0x2f')][_0xb90d('0x35')](_0xb90d('0x36'))){_0x4eefaa['limit']=qs[_0xb90d('0x1b')](_0x26b7cc[_0xb90d('0x2f')][_0xb90d('0x1b')]);_0x4eefaa[_0xb90d('0x1d')]=qs[_0xb90d('0x1d')](_0x26b7cc['query'][_0xb90d('0x1d')]);}return _0x249080[_0xb90d('0x4c')](_0x4eefaa);}})[_0xb90d('0x24')](function(_0x4c37e0){if(_0x4c37e0){return _0x4c37e0?{'count':_0x17ad0b,'rows':_0x4c37e0}:null;}})[_0xb90d('0x24')](respondWithResult(_0x2553fa,null))[_0xb90d('0x43')](handleError(_0x2553fa,null));};exports['getDescriptions']=function(_0xeed1e4,_0xb580b6,_0x429d64){var _0x1e8420={};var _0xfaa50d={};var _0x2f1d12;var _0x270da5;return db[_0xb90d('0x3e')]['findOne']({'where':{'id':_0xeed1e4[_0xb90d('0x44')]['id']}})[_0xb90d('0x24')](handleEntityNotFound(_0xb580b6,null))[_0xb90d('0x24')](function(_0x233848){if(_0x233848){_0x2f1d12=_0x233848;_0xfaa50d['model']=_[_0xb90d('0x30')](db['VtigerField'][_0xb90d('0x2a')]);_0xfaa50d[_0xb90d('0x2f')]=_[_0xb90d('0x30')](_0xeed1e4[_0xb90d('0x2f')]);_0xfaa50d[_0xb90d('0x31')]=_['intersection'](_0xfaa50d[_0xb90d('0x2d')],_0xfaa50d['query']);_0x1e8420[_0xb90d('0x33')]=_[_0xb90d('0x32')](_0xfaa50d['model'],qs['fields'](_0xeed1e4[_0xb90d('0x2f')]['fields']));_0x1e8420[_0xb90d('0x33')]=_0x1e8420[_0xb90d('0x33')][_0xb90d('0x45')]?_0x1e8420['attributes']:_0xfaa50d[_0xb90d('0x2d')];_0x1e8420[_0xb90d('0x37')]=qs['sort'](_0xeed1e4[_0xb90d('0x2f')][_0xb90d('0x38')]);_0x1e8420[_0xb90d('0x39')]=qs[_0xb90d('0x31')](_[_0xb90d('0x3a')](_0xeed1e4[_0xb90d('0x2f')],_0xfaa50d[_0xb90d('0x31')]));if(_0xeed1e4[_0xb90d('0x2f')][_0xb90d('0x3b')]){_0x1e8420[_0xb90d('0x39')]=_[_0xb90d('0x3d')](_0x1e8420[_0xb90d('0x39')],{'$or':_['map'](_0x1e8420['attributes'],function(_0x3e95bb){var _0x203845={};_0x203845[_0x3e95bb]={'$like':'%'+_0xeed1e4[_0xb90d('0x2f')][_0xb90d('0x3b')]+'%'};return _0x203845;})});}_0x1e8420=_[_0xb90d('0x3d')]({},_0x1e8420,_0xeed1e4[_0xb90d('0x46')]);return _0x2f1d12[_0xb90d('0x4d')](_0x1e8420);}})['then'](function(_0x40f50c){if(_0x40f50c){_0x270da5=_0x40f50c[_0xb90d('0x45')];if(!_0xeed1e4[_0xb90d('0x2f')][_0xb90d('0x35')](_0xb90d('0x36'))){_0x1e8420[_0xb90d('0x1b')]=qs[_0xb90d('0x1b')](_0xeed1e4[_0xb90d('0x2f')][_0xb90d('0x1b')]);_0x1e8420[_0xb90d('0x1d')]=qs[_0xb90d('0x1d')](_0xeed1e4[_0xb90d('0x2f')]['offset']);}return _0x2f1d12[_0xb90d('0x4d')](_0x1e8420);}})[_0xb90d('0x24')](function(_0x13bce7){if(_0x13bce7){return _0x13bce7?{'count':_0x270da5,'rows':_0x13bce7}:null;}})[_0xb90d('0x24')](respondWithResult(_0xb580b6,null))[_0xb90d('0x43')](handleError(_0xb580b6,null));};
\ No newline at end of file
index 5d3fbf4..e57ee08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eaf=['define','VtigerConfiguration','lodash','util','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x3eaf,0x16a));var _0xf3ea=function(_0x57ff81,_0x2579b6){_0x57ff81=_0x57ff81-0x0;var _0x3090a4=_0x3eaf[_0x57ff81];return _0x3090a4;};'use strict';var _=require(_0xf3ea('0x0'));var util=require(_0xf3ea('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf3ea('0x2'));var BPromise=require('bluebird');var rp=require(_0xf3ea('0x3'));var fs=require('fs');var path=require(_0xf3ea('0x4'));var rimraf=require(_0xf3ea('0x5'));var config=require(_0xf3ea('0x6'));var attributes=require('./intVtigerConfiguration.attributes');module[_0xf3ea('0x7')]=function(_0x242762,_0x32b59e){return _0x242762[_0xf3ea('0x8')](_0xf3ea('0x9'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa974=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define','int_vtiger_configurations','lodash','util'];(function(_0x1d5e52,_0x54d389){var _0x1ae308=function(_0x2da518){while(--_0x2da518){_0x1d5e52['push'](_0x1d5e52['shift']());}};_0x1ae308(++_0x54d389);}(_0xa974,0x140));var _0x4a97=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa974[_0x55f8b4];return _0x2475f9;};'use strict';var _=require(_0x4a97('0x0'));var util=require(_0x4a97('0x1'));var logger=require(_0x4a97('0x2'))(_0x4a97('0x3'));var moment=require(_0x4a97('0x4'));var BPromise=require(_0x4a97('0x5'));var rp=require(_0x4a97('0x6'));var fs=require('fs');var path=require(_0x4a97('0x7'));var rimraf=require(_0x4a97('0x8'));var config=require(_0x4a97('0x9'));var attributes=require(_0x4a97('0xa'));module[_0x4a97('0xb')]=function(_0x22cc09,_0x280611){return _0x22cc09[_0x4a97('0xc')]('VtigerConfiguration',attributes,{'tableName':_0x4a97('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 965fe3e..a7825cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x984c=['jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x5c3904,_0x4d9a96){var _0x2cd01c=function(_0x2d359b){while(--_0x2d359b){_0x5c3904['push'](_0x5c3904['shift']());}};_0x2cd01c(++_0x4d9a96);}(_0x984c,0x87));var _0xc984=function(_0x376b03,_0x4b281a){_0x376b03=_0x376b03-0x0;var _0x13f459=_0x984c[_0x376b03];return _0x13f459;};'use strict';var _=require(_0xc984('0x0'));var util=require(_0xc984('0x1'));var moment=require(_0xc984('0x2'));var BPromise=require(_0xc984('0x3'));var rs=require(_0xc984('0x4'));var fs=require('fs');var Redis=require(_0xc984('0x5'));var db=require(_0xc984('0x6'))['db'];var utils=require(_0xc984('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xc984('0x8'));var jayson=require(_0xc984('0x9'));var client=jayson[_0xc984('0xa')][_0xc984('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4da6e9,_0x4b9f75,_0x34b32f){return new BPromise(function(_0x62652f,_0x587972){return client[_0xc984('0xc')](_0x4da6e9,_0x34b32f)[_0xc984('0xd')](function(_0x4611cc){logger[_0xc984('0xe')](_0xc984('0xf'),_0x4b9f75,_0xc984('0x10'));logger[_0xc984('0x11')](_0xc984('0x12'),_0x4b9f75,_0xc984('0x10'),JSON[_0xc984('0x13')](_0x4611cc));if(_0x4611cc[_0xc984('0x14')]){if(_0x4611cc[_0xc984('0x14')][_0xc984('0x15')]===0x1f4){logger['error'](_0xc984('0xf'),_0x4b9f75,_0x4611cc['error'][_0xc984('0x16')]);return _0x587972(_0x4611cc[_0xc984('0x14')][_0xc984('0x16')]);}logger[_0xc984('0x14')](_0xc984('0xf'),_0x4b9f75,_0x4611cc[_0xc984('0x14')]['message']);return _0x62652f(_0x4611cc[_0xc984('0x14')]['message']);}else{logger['info']('VtigerConfiguration,\x20%s,\x20%s',_0x4b9f75,_0xc984('0x10'));_0x62652f(_0x4611cc['result'][_0xc984('0x16')]);}})[_0xc984('0x17')](function(_0x214a46){logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x4b9f75,_0x214a46);_0x587972(_0x214a46);});});}
\ No newline at end of file
+var _0xea5a=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch'];(function(_0x58daaa,_0x3a432e){var _0x362021=function(_0x3848b2){while(--_0x3848b2){_0x58daaa['push'](_0x58daaa['shift']());}};_0x362021(++_0x3a432e);}(_0xea5a,0x18f));var _0xaea5=function(_0x5af305,_0xaf3cf8){_0x5af305=_0x5af305-0x0;var _0x4d9831=_0xea5a[_0x5af305];return _0x4d9831;};'use strict';var _=require(_0xaea5('0x0'));var util=require('util');var moment=require(_0xaea5('0x1'));var BPromise=require(_0xaea5('0x2'));var rs=require(_0xaea5('0x3'));var fs=require('fs');var Redis=require(_0xaea5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xaea5('0x5'));var logger=require(_0xaea5('0x6'))(_0xaea5('0x7'));var config=require('../../config/environment');var jayson=require(_0xaea5('0x8'));var client=jayson[_0xaea5('0x9')][_0xaea5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x43eef0,_0x3ced80,_0x64296b){return new BPromise(function(_0x50ad2f,_0x1e7feb){return client['request'](_0x43eef0,_0x64296b)[_0xaea5('0xb')](function(_0x4f36a6){logger['info'](_0xaea5('0xc'),_0x3ced80,_0xaea5('0xd'));logger[_0xaea5('0xe')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x3ced80,'request\x20sent',JSON[_0xaea5('0xf')](_0x4f36a6));if(_0x4f36a6[_0xaea5('0x10')]){if(_0x4f36a6['error'][_0xaea5('0x11')]===0x1f4){logger[_0xaea5('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x3ced80,_0x4f36a6[_0xaea5('0x10')][_0xaea5('0x12')]);return _0x1e7feb(_0x4f36a6[_0xaea5('0x10')][_0xaea5('0x12')]);}logger[_0xaea5('0x10')](_0xaea5('0xc'),_0x3ced80,_0x4f36a6['error'][_0xaea5('0x12')]);return _0x50ad2f(_0x4f36a6[_0xaea5('0x10')][_0xaea5('0x12')]);}else{logger[_0xaea5('0x13')]('VtigerConfiguration,\x20%s,\x20%s',_0x3ced80,_0xaea5('0xd'));_0x50ad2f(_0x4f36a6['result'][_0xaea5('0x12')]);}})[_0xaea5('0x14')](function(_0x14fa79){logger[_0xaea5('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x3ced80,_0x14fa79);_0x1e7feb(_0x14fa79);});});}
\ No newline at end of file
index 613de0f..6aa430b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x013d=['path','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x408741,_0x568d1e){var _0x291ab1=function(_0x3558e7){while(--_0x3558e7){_0x408741['push'](_0x408741['shift']());}};_0x291ab1(++_0x568d1e);}(_0x013d,0x154));var _0xd013=function(_0x1e1f97,_0x2f6925){_0x1e1f97=_0x1e1f97-0x0;var _0x1e45fb=_0x013d[_0x1e1f97];return _0x1e45fb;};'use strict';var multer=require(_0xd013('0x0'));var util=require(_0xd013('0x1'));var path=require(_0xd013('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd013('0x3')]();var fs_extra=require(_0xd013('0x4'));var auth=require(_0xd013('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd013('0x6'));var controller=require('./intVtigerField.controller');router[_0xd013('0x7')]('/',auth['isAuthenticated'](),controller[_0xd013('0x8')]);router[_0xd013('0x7')](_0xd013('0x9'),auth[_0xd013('0xa')](),controller['show']);router[_0xd013('0xb')]('/',auth['isAuthenticated'](),controller[_0xd013('0xc')]);router[_0xd013('0xd')](_0xd013('0x9'),auth['isAuthenticated'](),controller[_0xd013('0xe')]);router[_0xd013('0xf')](_0xd013('0x9'),auth['isAuthenticated'](),controller[_0xd013('0x10')]);module[_0xd013('0x11')]=router;
\ No newline at end of file
+var _0xafef=['index','/:id','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated'];(function(_0xa1671c,_0x57700d){var _0x2107f0=function(_0x436e27){while(--_0x436e27){_0xa1671c['push'](_0xa1671c['shift']());}};_0x2107f0(++_0x57700d);}(_0xafef,0x82));var _0xfafe=function(_0x1c0e39,_0x31d188){_0x1c0e39=_0x1c0e39-0x0;var _0x3d0554=_0xafef[_0x1c0e39];return _0x3d0554;};'use strict';var multer=require('multer');var util=require(_0xfafe('0x0'));var path=require('path');var timeout=require(_0xfafe('0x1'));var express=require(_0xfafe('0x2'));var router=express['Router']();var fs_extra=require(_0xfafe('0x3'));var auth=require(_0xfafe('0x4'));var interaction=require(_0xfafe('0x5'));var config=require(_0xfafe('0x6'));var controller=require(_0xfafe('0x7'));router[_0xfafe('0x8')]('/',auth[_0xfafe('0x9')](),controller[_0xfafe('0xa')]);router[_0xfafe('0x8')](_0xfafe('0xb'),auth['isAuthenticated'](),controller[_0xfafe('0xc')]);router[_0xfafe('0xd')]('/',auth[_0xfafe('0x9')](),controller[_0xfafe('0xe')]);router[_0xfafe('0xf')](_0xfafe('0xb'),auth[_0xfafe('0x9')](),controller[_0xfafe('0x10')]);router[_0xfafe('0x11')](_0xfafe('0xb'),auth[_0xfafe('0x9')](),controller[_0xfafe('0x12')]);module[_0xfafe('0x13')]=router;
\ No newline at end of file
index 3d8aff4..4b2efe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd382=['variable','keyValue','picklist','STRING','ENUM','customVariable','BOOLEAN','sequelize','string'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xd382,0xd6));var _0x2d38=function(_0x330caa,_0x31d6a9){_0x330caa=_0x330caa-0x0;var _0x5d0156=_0xd382[_0x330caa];return _0x5d0156;};'use strict';var Sequelize=require(_0x2d38('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x2d38('0x1'),_0x2d38('0x2'),'customVariable',_0x2d38('0x3'),_0x2d38('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x2d38('0x5')]},'key':{'type':Sequelize[_0x2d38('0x5')]},'keyType':{'type':Sequelize[_0x2d38('0x6')](_0x2d38('0x1'),_0x2d38('0x2'),_0x2d38('0x7'))},'keyContent':{'type':Sequelize[_0x2d38('0x5')]},'idField':{'type':Sequelize[_0x2d38('0x5')]},'nameField':{'type':Sequelize[_0x2d38('0x5')]},'customField':{'type':Sequelize[_0x2d38('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf924=['exports','ENUM','variable','customVariable','keyValue','picklist','STRING','string','sequelize'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf924,0xf2));var _0x4f92=function(_0x122fe6,_0x4ac758){_0x122fe6=_0x122fe6-0x0;var _0x36b7d2=_0xf924[_0x122fe6];return _0x36b7d2;};'use strict';var Sequelize=require(_0x4f92('0x0'));module[_0x4f92('0x1')]={'type':{'type':Sequelize[_0x4f92('0x2')]('string',_0x4f92('0x3'),_0x4f92('0x4'),_0x4f92('0x5'),_0x4f92('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4f92('0x7')]},'key':{'type':Sequelize[_0x4f92('0x7')]},'keyType':{'type':Sequelize[_0x4f92('0x2')](_0x4f92('0x8'),_0x4f92('0x3'),_0x4f92('0x4'))},'keyContent':{'type':Sequelize[_0x4f92('0x7')]},'idField':{'type':Sequelize[_0x4f92('0x7')]},'nameField':{'type':Sequelize[_0x4f92('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4f92('0x7')]}};
\ No newline at end of file
index 0852697..920be40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa71=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','end','name','index','map','VtigerField','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','catch','show','params','fields','length','options','find','create','body','eml-format','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service'];(function(_0x5986aa,_0x4b7316){var _0x38eaf3=function(_0x47eb9e){while(--_0x47eb9e){_0x5986aa['push'](_0x5986aa['shift']());}};_0x38eaf3(++_0x4b7316);}(_0xfa71,0x80));var _0x1fa7=function(_0x17e696,_0xad1c39){_0x17e696=_0x17e696-0x0;var _0x1a9e33=_0xfa71[_0x17e696];return _0x1a9e33;};'use strict';var emlformat=require(_0x1fa7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1fa7('0x1'));var moment=require(_0x1fa7('0x2'));var BPromise=require(_0x1fa7('0x3'));var Mustache=require(_0x1fa7('0x4'));var util=require(_0x1fa7('0x5'));var path=require('path');var sox=require(_0x1fa7('0x6'));var csv=require(_0x1fa7('0x7'));var ejs=require(_0x1fa7('0x8'));var fs=require('fs');var fs_extra=require(_0x1fa7('0x9'));var _=require(_0x1fa7('0xa'));var squel=require(_0x1fa7('0xb'));var crypto=require(_0x1fa7('0xc'));var jsforce=require(_0x1fa7('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x1fa7('0x7'));var querystring=require(_0x1fa7('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x1fa7('0xf'));var qs=require(_0x1fa7('0x10'));var as=require(_0x1fa7('0x11'));var hardwareService=require(_0x1fa7('0x12'));var logger=require(_0x1fa7('0x13'))(_0x1fa7('0x14'));var utils=require(_0x1fa7('0x15'));var config=require(_0x1fa7('0x16'));var licenseUtil=require(_0x1fa7('0x17'));var db=require(_0x1fa7('0x18'))['db'];function respondWithStatusCode(_0x29db51,_0x36e0e6){_0x36e0e6=_0x36e0e6||0xcc;return function(_0x580f35){if(_0x580f35){return _0x29db51['sendStatus'](_0x36e0e6);}return _0x29db51['status'](_0x36e0e6)['end']();};}function respondWithResult(_0x3383fe,_0x4583c5){_0x4583c5=_0x4583c5||0xc8;return function(_0x231f3f){if(_0x231f3f){return _0x3383fe[_0x1fa7('0x19')](_0x4583c5)[_0x1fa7('0x1a')](_0x231f3f);}};}function respondWithFilteredResult(_0x24a81b,_0x588ca3){return function(_0x4703bf){if(_0x4703bf){var _0xb31aa2=typeof _0x588ca3['offset']===_0x1fa7('0x1b')&&typeof _0x588ca3[_0x1fa7('0x1c')]===_0x1fa7('0x1b');var _0x2f5b70=_0x4703bf[_0x1fa7('0x1d')];var _0x5b943d=_0xb31aa2?0x0:_0x588ca3['offset'];var _0xedffd8=_0xb31aa2?_0x4703bf[_0x1fa7('0x1d')]:_0x588ca3[_0x1fa7('0x1e')]+_0x588ca3[_0x1fa7('0x1c')];var _0x1d9f6a;if(_0xedffd8>=_0x2f5b70){_0xedffd8=_0x2f5b70;_0x1d9f6a=0xc8;}else{_0x1d9f6a=0xce;}_0x24a81b[_0x1fa7('0x19')](_0x1d9f6a);return _0x24a81b[_0x1fa7('0x1f')](_0x1fa7('0x20'),_0x5b943d+'-'+_0xedffd8+'/'+_0x2f5b70)['json'](_0x4703bf);}return null;};}function patchUpdates(_0xa03801){return function(_0x3a36b9){try{jsonpatch[_0x1fa7('0x21')](_0x3a36b9,_0xa03801,!![]);}catch(_0x4b3692){return BPromise['reject'](_0x4b3692);}return _0x3a36b9[_0x1fa7('0x22')]();};}function saveUpdates(_0x3a18cf,_0x16f047){return function(_0x4fed52){if(_0x4fed52){return _0x4fed52[_0x1fa7('0x23')](_0x3a18cf)[_0x1fa7('0x24')](function(_0x5a1215){return _0x5a1215;});}return null;};}function removeEntity(_0x47cff3,_0x5e4945){return function(_0x291cf8){if(_0x291cf8){return _0x291cf8[_0x1fa7('0x25')]()[_0x1fa7('0x24')](function(){_0x47cff3[_0x1fa7('0x19')](0xcc)[_0x1fa7('0x26')]();});}};}function handleEntityNotFound(_0x26ae76,_0x471477){return function(_0x312cfb){if(!_0x312cfb){_0x26ae76['sendStatus'](0x194);}return _0x312cfb;};}function handleError(_0x2a66a5,_0x50cd81){_0x50cd81=_0x50cd81||0x1f4;return function(_0x435402){logger['error'](_0x435402['stack']);if(_0x435402[_0x1fa7('0x27')]){delete _0x435402['name'];}_0x2a66a5[_0x1fa7('0x19')](_0x50cd81)['send'](_0x435402);};}exports[_0x1fa7('0x28')]=function(_0x549793,_0x31695a){var _0x369282={},_0x22ec33={},_0x27d1b0={'count':0x0,'rows':[]};var _0x311b95=_[_0x1fa7('0x29')](db[_0x1fa7('0x2a')][_0x1fa7('0x2b')],function(_0xe77c71){return{'name':_0xe77c71[_0x1fa7('0x2c')],'type':_0xe77c71[_0x1fa7('0x2d')]['key']};});_0x22ec33['model']=_['map'](_0x311b95,_0x1fa7('0x27'));_0x22ec33[_0x1fa7('0x2e')]=_[_0x1fa7('0x2f')](_0x549793[_0x1fa7('0x2e')]);_0x22ec33[_0x1fa7('0x30')]=_[_0x1fa7('0x31')](_0x22ec33[_0x1fa7('0x32')],_0x22ec33[_0x1fa7('0x2e')]);_0x369282[_0x1fa7('0x33')]=_[_0x1fa7('0x31')](_0x22ec33[_0x1fa7('0x32')],qs['fields'](_0x549793[_0x1fa7('0x2e')]['fields']));_0x369282[_0x1fa7('0x33')]=_0x369282['attributes']['length']?_0x369282[_0x1fa7('0x33')]:_0x22ec33[_0x1fa7('0x32')];if(!_0x549793[_0x1fa7('0x2e')][_0x1fa7('0x34')](_0x1fa7('0x35'))){_0x369282[_0x1fa7('0x1c')]=qs[_0x1fa7('0x1c')](_0x549793[_0x1fa7('0x2e')][_0x1fa7('0x1c')]);_0x369282['offset']=qs[_0x1fa7('0x1e')](_0x549793[_0x1fa7('0x2e')][_0x1fa7('0x1e')]);}_0x369282[_0x1fa7('0x36')]=qs[_0x1fa7('0x37')](_0x549793[_0x1fa7('0x2e')]['sort']);_0x369282[_0x1fa7('0x38')]=qs[_0x1fa7('0x30')](_[_0x1fa7('0x39')](_0x549793[_0x1fa7('0x2e')],_0x22ec33['filters']),_0x311b95);if(_0x549793[_0x1fa7('0x2e')][_0x1fa7('0x3a')]){_0x369282['where']=_['merge'](_0x369282[_0x1fa7('0x38')],{'$or':_[_0x1fa7('0x29')](_0x311b95,function(_0x585079){if(_0x585079[_0x1fa7('0x2d')]!=='VIRTUAL'){var _0x5701c4={};_0x5701c4[_0x585079[_0x1fa7('0x27')]]={'$like':'%'+_0x549793['query'][_0x1fa7('0x3a')]+'%'};return _0x5701c4;}})});}_0x369282=_[_0x1fa7('0x3b')]({},_0x369282,_0x549793['options']);var _0x5d94c9={'where':_0x369282[_0x1fa7('0x38')]};return db[_0x1fa7('0x2a')][_0x1fa7('0x1d')](_0x5d94c9)[_0x1fa7('0x24')](function(_0x249024){_0x27d1b0[_0x1fa7('0x1d')]=_0x249024;if(_0x549793[_0x1fa7('0x2e')][_0x1fa7('0x3c')]){_0x369282[_0x1fa7('0x3d')]=[{'all':!![]}];}return db['VtigerField'][_0x1fa7('0x3e')](_0x369282);})[_0x1fa7('0x24')](function(_0x1c09e8){_0x27d1b0['rows']=_0x1c09e8;return _0x27d1b0;})['then'](respondWithFilteredResult(_0x31695a,_0x369282))[_0x1fa7('0x3f')](handleError(_0x31695a,null));};exports[_0x1fa7('0x40')]=function(_0x196f82,_0x3f4467){var _0x241c8e={'raw':!![],'where':{'id':_0x196f82[_0x1fa7('0x41')]['id']}},_0x45e681={};_0x45e681[_0x1fa7('0x32')]=_[_0x1fa7('0x2f')](db[_0x1fa7('0x2a')][_0x1fa7('0x2b')]);_0x45e681[_0x1fa7('0x2e')]=_[_0x1fa7('0x2f')](_0x196f82[_0x1fa7('0x2e')]);_0x45e681[_0x1fa7('0x30')]=_[_0x1fa7('0x31')](_0x45e681[_0x1fa7('0x32')],_0x45e681[_0x1fa7('0x2e')]);_0x241c8e[_0x1fa7('0x33')]=_['intersection'](_0x45e681[_0x1fa7('0x32')],qs[_0x1fa7('0x42')](_0x196f82[_0x1fa7('0x2e')]['fields']));_0x241c8e[_0x1fa7('0x33')]=_0x241c8e[_0x1fa7('0x33')][_0x1fa7('0x43')]?_0x241c8e[_0x1fa7('0x33')]:_0x45e681['model'];if(_0x196f82[_0x1fa7('0x2e')][_0x1fa7('0x3c')]){_0x241c8e[_0x1fa7('0x3d')]=[{'all':!![]}];}_0x241c8e=_[_0x1fa7('0x3b')]({},_0x241c8e,_0x196f82[_0x1fa7('0x44')]);return db[_0x1fa7('0x2a')][_0x1fa7('0x45')](_0x241c8e)[_0x1fa7('0x24')](handleEntityNotFound(_0x3f4467,null))[_0x1fa7('0x24')](respondWithResult(_0x3f4467,null))[_0x1fa7('0x3f')](handleError(_0x3f4467,null));};exports[_0x1fa7('0x46')]=function(_0x3d4c6b,_0x365f87){return db['VtigerField'][_0x1fa7('0x46')](_0x3d4c6b['body'],{})[_0x1fa7('0x24')](respondWithResult(_0x365f87,0xc9))[_0x1fa7('0x3f')](handleError(_0x365f87,null));};exports[_0x1fa7('0x23')]=function(_0x19d0b1,_0x35187b){if(_0x19d0b1[_0x1fa7('0x47')]['id']){delete _0x19d0b1[_0x1fa7('0x47')]['id'];}return db['VtigerField']['find']({'where':{'id':_0x19d0b1[_0x1fa7('0x41')]['id']}})['then'](handleEntityNotFound(_0x35187b,null))[_0x1fa7('0x24')](saveUpdates(_0x19d0b1['body'],null))[_0x1fa7('0x24')](respondWithResult(_0x35187b,null))['catch'](handleError(_0x35187b,null));};exports[_0x1fa7('0x25')]=function(_0x382efa,_0x4b3dfa){return db['VtigerField'][_0x1fa7('0x45')]({'where':{'id':_0x382efa[_0x1fa7('0x41')]['id']}})[_0x1fa7('0x24')](handleEntityNotFound(_0x4b3dfa,null))[_0x1fa7('0x24')](removeEntity(_0x4b3dfa,null))['catch'](handleError(_0x4b3dfa,null));};
\ No newline at end of file
+var _0xad62=['merge','findAll','rows','catch','show','includeAll','include','options','create','body','find','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','end','name','index','map','VtigerField','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where'];(function(_0x404303,_0xcf6dee){var _0x2bb9e5=function(_0x3a2e12){while(--_0x3a2e12){_0x404303['push'](_0x404303['shift']());}};_0x2bb9e5(++_0xcf6dee);}(_0xad62,0xa1));var _0x2ad6=function(_0x2e6c3a,_0x39199f){_0x2e6c3a=_0x2e6c3a-0x0;var _0x1b36bd=_0xad62[_0x2e6c3a];return _0x1b36bd;};'use strict';var emlformat=require(_0x2ad6('0x0'));var rimraf=require(_0x2ad6('0x1'));var zipdir=require(_0x2ad6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2ad6('0x3'));var moment=require(_0x2ad6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2ad6('0x5'));var util=require(_0x2ad6('0x6'));var path=require(_0x2ad6('0x7'));var sox=require(_0x2ad6('0x8'));var csv=require(_0x2ad6('0x9'));var ejs=require(_0x2ad6('0xa'));var fs=require('fs');var fs_extra=require(_0x2ad6('0xb'));var _=require(_0x2ad6('0xc'));var squel=require('squel');var crypto=require(_0x2ad6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2ad6('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2ad6('0xf'));var Redis=require('ioredis');var authService=require(_0x2ad6('0x10'));var qs=require(_0x2ad6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2ad6('0x12'));var logger=require(_0x2ad6('0x13'))(_0x2ad6('0x14'));var utils=require(_0x2ad6('0x15'));var config=require(_0x2ad6('0x16'));var licenseUtil=require(_0x2ad6('0x17'));var db=require(_0x2ad6('0x18'))['db'];function respondWithStatusCode(_0x422cf0,_0x28b569){_0x28b569=_0x28b569||0xcc;return function(_0xf73629){if(_0xf73629){return _0x422cf0[_0x2ad6('0x19')](_0x28b569);}return _0x422cf0[_0x2ad6('0x1a')](_0x28b569)['end']();};}function respondWithResult(_0x39d02f,_0x3ee814){_0x3ee814=_0x3ee814||0xc8;return function(_0xa37005){if(_0xa37005){return _0x39d02f[_0x2ad6('0x1a')](_0x3ee814)[_0x2ad6('0x1b')](_0xa37005);}};}function respondWithFilteredResult(_0x28c34b,_0x1fc97c){return function(_0x114dd5){if(_0x114dd5){var _0x481f56=typeof _0x1fc97c[_0x2ad6('0x1c')]===_0x2ad6('0x1d')&&typeof _0x1fc97c[_0x2ad6('0x1e')]===_0x2ad6('0x1d');var _0x2146a7=_0x114dd5['count'];var _0x18d498=_0x481f56?0x0:_0x1fc97c[_0x2ad6('0x1c')];var _0x386744=_0x481f56?_0x114dd5[_0x2ad6('0x1f')]:_0x1fc97c[_0x2ad6('0x1c')]+_0x1fc97c[_0x2ad6('0x1e')];var _0x2c8d1f;if(_0x386744>=_0x2146a7){_0x386744=_0x2146a7;_0x2c8d1f=0xc8;}else{_0x2c8d1f=0xce;}_0x28c34b[_0x2ad6('0x1a')](_0x2c8d1f);return _0x28c34b[_0x2ad6('0x20')](_0x2ad6('0x21'),_0x18d498+'-'+_0x386744+'/'+_0x2146a7)[_0x2ad6('0x1b')](_0x114dd5);}return null;};}function patchUpdates(_0x3f8d32){return function(_0x4a743a){try{jsonpatch[_0x2ad6('0x22')](_0x4a743a,_0x3f8d32,!![]);}catch(_0x36a938){return BPromise['reject'](_0x36a938);}return _0x4a743a[_0x2ad6('0x23')]();};}function saveUpdates(_0x3376f2,_0x49e023){return function(_0x58e77c){if(_0x58e77c){return _0x58e77c[_0x2ad6('0x24')](_0x3376f2)['then'](function(_0x11bf3b){return _0x11bf3b;});}return null;};}function removeEntity(_0x340d82,_0x314f60){return function(_0x355a13){if(_0x355a13){return _0x355a13['destroy']()[_0x2ad6('0x25')](function(){_0x340d82[_0x2ad6('0x1a')](0xcc)[_0x2ad6('0x26')]();});}};}function handleEntityNotFound(_0x3e8ba6,_0x5ee545){return function(_0x2ece70){if(!_0x2ece70){_0x3e8ba6[_0x2ad6('0x19')](0x194);}return _0x2ece70;};}function handleError(_0x20145a,_0x29b395){_0x29b395=_0x29b395||0x1f4;return function(_0x45a255){logger['error'](_0x45a255['stack']);if(_0x45a255[_0x2ad6('0x27')]){delete _0x45a255[_0x2ad6('0x27')];}_0x20145a[_0x2ad6('0x1a')](_0x29b395)['send'](_0x45a255);};}exports[_0x2ad6('0x28')]=function(_0x491169,_0x3ad999){var _0x42f78d={},_0x49daaf={},_0x75f20e={'count':0x0,'rows':[]};var _0x4ac1d5=_[_0x2ad6('0x29')](db[_0x2ad6('0x2a')][_0x2ad6('0x2b')],function(_0x148d77){return{'name':_0x148d77['fieldName'],'type':_0x148d77[_0x2ad6('0x2c')][_0x2ad6('0x2d')]};});_0x49daaf['model']=_[_0x2ad6('0x29')](_0x4ac1d5,_0x2ad6('0x27'));_0x49daaf[_0x2ad6('0x2e')]=_[_0x2ad6('0x2f')](_0x491169[_0x2ad6('0x2e')]);_0x49daaf[_0x2ad6('0x30')]=_[_0x2ad6('0x31')](_0x49daaf[_0x2ad6('0x32')],_0x49daaf[_0x2ad6('0x2e')]);_0x42f78d['attributes']=_['intersection'](_0x49daaf[_0x2ad6('0x32')],qs['fields'](_0x491169['query'][_0x2ad6('0x33')]));_0x42f78d[_0x2ad6('0x34')]=_0x42f78d[_0x2ad6('0x34')][_0x2ad6('0x35')]?_0x42f78d[_0x2ad6('0x34')]:_0x49daaf[_0x2ad6('0x32')];if(!_0x491169[_0x2ad6('0x2e')][_0x2ad6('0x36')](_0x2ad6('0x37'))){_0x42f78d[_0x2ad6('0x1e')]=qs['limit'](_0x491169[_0x2ad6('0x2e')]['limit']);_0x42f78d[_0x2ad6('0x1c')]=qs[_0x2ad6('0x1c')](_0x491169['query']['offset']);}_0x42f78d[_0x2ad6('0x38')]=qs[_0x2ad6('0x39')](_0x491169[_0x2ad6('0x2e')][_0x2ad6('0x39')]);_0x42f78d['where']=qs['filters'](_[_0x2ad6('0x3a')](_0x491169['query'],_0x49daaf[_0x2ad6('0x30')]),_0x4ac1d5);if(_0x491169['query'][_0x2ad6('0x3b')]){_0x42f78d[_0x2ad6('0x3c')]=_[_0x2ad6('0x3d')](_0x42f78d[_0x2ad6('0x3c')],{'$or':_['map'](_0x4ac1d5,function(_0x3705d1){if(_0x3705d1[_0x2ad6('0x2c')]!=='VIRTUAL'){var _0x2dbfd1={};_0x2dbfd1[_0x3705d1[_0x2ad6('0x27')]]={'$like':'%'+_0x491169[_0x2ad6('0x2e')][_0x2ad6('0x3b')]+'%'};return _0x2dbfd1;}})});}_0x42f78d=_['merge']({},_0x42f78d,_0x491169['options']);var _0x2f64d1={'where':_0x42f78d[_0x2ad6('0x3c')]};return db[_0x2ad6('0x2a')]['count'](_0x2f64d1)['then'](function(_0x5736d0){_0x75f20e[_0x2ad6('0x1f')]=_0x5736d0;if(_0x491169['query']['includeAll']){_0x42f78d['include']=[{'all':!![]}];}return db[_0x2ad6('0x2a')][_0x2ad6('0x3e')](_0x42f78d);})[_0x2ad6('0x25')](function(_0x108ab3){_0x75f20e[_0x2ad6('0x3f')]=_0x108ab3;return _0x75f20e;})['then'](respondWithFilteredResult(_0x3ad999,_0x42f78d))[_0x2ad6('0x40')](handleError(_0x3ad999,null));};exports[_0x2ad6('0x41')]=function(_0x2f6966,_0x5c2aae){var _0x829dc5={'raw':!![],'where':{'id':_0x2f6966['params']['id']}},_0x56319b={};_0x56319b[_0x2ad6('0x32')]=_[_0x2ad6('0x2f')](db[_0x2ad6('0x2a')]['rawAttributes']);_0x56319b[_0x2ad6('0x2e')]=_['keys'](_0x2f6966[_0x2ad6('0x2e')]);_0x56319b[_0x2ad6('0x30')]=_['intersection'](_0x56319b[_0x2ad6('0x32')],_0x56319b[_0x2ad6('0x2e')]);_0x829dc5['attributes']=_[_0x2ad6('0x31')](_0x56319b[_0x2ad6('0x32')],qs[_0x2ad6('0x33')](_0x2f6966[_0x2ad6('0x2e')][_0x2ad6('0x33')]));_0x829dc5[_0x2ad6('0x34')]=_0x829dc5[_0x2ad6('0x34')][_0x2ad6('0x35')]?_0x829dc5[_0x2ad6('0x34')]:_0x56319b[_0x2ad6('0x32')];if(_0x2f6966[_0x2ad6('0x2e')][_0x2ad6('0x42')]){_0x829dc5[_0x2ad6('0x43')]=[{'all':!![]}];}_0x829dc5=_[_0x2ad6('0x3d')]({},_0x829dc5,_0x2f6966[_0x2ad6('0x44')]);return db[_0x2ad6('0x2a')]['find'](_0x829dc5)[_0x2ad6('0x25')](handleEntityNotFound(_0x5c2aae,null))[_0x2ad6('0x25')](respondWithResult(_0x5c2aae,null))[_0x2ad6('0x40')](handleError(_0x5c2aae,null));};exports[_0x2ad6('0x45')]=function(_0x2e1617,_0x40b3eb){return db[_0x2ad6('0x2a')][_0x2ad6('0x45')](_0x2e1617[_0x2ad6('0x46')],{})[_0x2ad6('0x25')](respondWithResult(_0x40b3eb,0xc9))['catch'](handleError(_0x40b3eb,null));};exports['update']=function(_0x595ff5,_0x119295){if(_0x595ff5[_0x2ad6('0x46')]['id']){delete _0x595ff5[_0x2ad6('0x46')]['id'];}return db[_0x2ad6('0x2a')][_0x2ad6('0x47')]({'where':{'id':_0x595ff5[_0x2ad6('0x48')]['id']}})['then'](handleEntityNotFound(_0x119295,null))[_0x2ad6('0x25')](saveUpdates(_0x595ff5['body'],null))[_0x2ad6('0x25')](respondWithResult(_0x119295,null))[_0x2ad6('0x40')](handleError(_0x119295,null));};exports[_0x2ad6('0x49')]=function(_0x1ed2ba,_0x1ae49c){return db[_0x2ad6('0x2a')]['find']({'where':{'id':_0x1ed2ba[_0x2ad6('0x48')]['id']}})['then'](handleEntityNotFound(_0x1ae49c,null))[_0x2ad6('0x25')](removeEntity(_0x1ae49c,null))['catch'](handleError(_0x1ae49c,null));};
\ No newline at end of file
index 54d3953..985b055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3e9=['util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId'];(function(_0x38765d,_0x39edd2){var _0x53e779=function(_0x34e817){while(--_0x34e817){_0x38765d['push'](_0x38765d['shift']());}};_0x53e779(++_0x39edd2);}(_0xe3e9,0x152));var _0x9e3e=function(_0x2d380b,_0xe169f2){_0x2d380b=_0x2d380b-0x0;var _0x421fbe=_0xe3e9[_0x2d380b];return _0x421fbe;};'use strict';var _=require('lodash');var util=require(_0x9e3e('0x0'));var logger=require(_0x9e3e('0x1'))('api');var moment=require(_0x9e3e('0x2'));var BPromise=require(_0x9e3e('0x3'));var rp=require(_0x9e3e('0x4'));var fs=require('fs');var path=require(_0x9e3e('0x5'));var rimraf=require('rimraf');var config=require(_0x9e3e('0x6'));var attributes=require('./intVtigerField.attributes');module['exports']=function(_0xdeb066,_0x19bb5f){return _0xdeb066[_0x9e3e('0x7')](_0x9e3e('0x8'),attributes,{'tableName':_0x9e3e('0x9'),'paranoid':![],'indexes':[{'name':_0x9e3e('0xa'),'fields':[_0x9e3e('0xb'),_0x9e3e('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xca72=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','util'];(function(_0x49554d,_0x2f57a8){var _0x2ead18=function(_0x343f82){while(--_0x343f82){_0x49554d['push'](_0x49554d['shift']());}};_0x2ead18(++_0x2f57a8);}(_0xca72,0x167));var _0x2ca7=function(_0x7275e9,_0x321fa5){_0x7275e9=_0x7275e9-0x0;var _0x17b99d=_0xca72[_0x7275e9];return _0x17b99d;};'use strict';var _=require('lodash');var util=require(_0x2ca7('0x0'));var logger=require(_0x2ca7('0x1'))('api');var moment=require(_0x2ca7('0x2'));var BPromise=require(_0x2ca7('0x3'));var rp=require(_0x2ca7('0x4'));var fs=require('fs');var path=require(_0x2ca7('0x5'));var rimraf=require(_0x2ca7('0x6'));var config=require(_0x2ca7('0x7'));var attributes=require(_0x2ca7('0x8'));module[_0x2ca7('0x9')]=function(_0x53e964,_0x34aaa5){return _0x53e964['define'](_0x2ca7('0xa'),attributes,{'tableName':_0x2ca7('0xb'),'paranoid':![],'indexes':[{'name':_0x2ca7('0xc'),'fields':[_0x2ca7('0xd'),_0x2ca7('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2e11160..bef1a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7fd=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment','bluebird'];(function(_0x5da8b1,_0x468b3c){var _0x16238d=function(_0x14e4c9){while(--_0x14e4c9){_0x5da8b1['push'](_0x5da8b1['shift']());}};_0x16238d(++_0x468b3c);}(_0xf7fd,0x14c));var _0xdf7f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf7fd[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xdf7f('0x0'));var util=require(_0xdf7f('0x1'));var moment=require(_0xdf7f('0x2'));var BPromise=require(_0xdf7f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdf7f('0x4'));var db=require(_0xdf7f('0x5'))['db'];var utils=require(_0xdf7f('0x6'));var logger=require(_0xdf7f('0x7'))(_0xdf7f('0x8'));var config=require('../../config/environment');var jayson=require(_0xdf7f('0x9'));var client=jayson['client'][_0xdf7f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2db988,_0xaf8337,_0x65508d){return new BPromise(function(_0x1f331f,_0x3af678){return client[_0xdf7f('0xb')](_0x2db988,_0x65508d)[_0xdf7f('0xc')](function(_0x18a13f){logger[_0xdf7f('0xd')](_0xdf7f('0xe'),_0xaf8337,_0xdf7f('0xf'));logger[_0xdf7f('0x10')]('VtigerField,\x20%s,\x20%s,\x20%s',_0xaf8337,_0xdf7f('0xf'),JSON[_0xdf7f('0x11')](_0x18a13f));if(_0x18a13f[_0xdf7f('0x12')]){if(_0x18a13f[_0xdf7f('0x12')]['code']===0x1f4){logger[_0xdf7f('0x12')](_0xdf7f('0xe'),_0xaf8337,_0x18a13f[_0xdf7f('0x12')][_0xdf7f('0x13')]);return _0x3af678(_0x18a13f['error'][_0xdf7f('0x13')]);}logger[_0xdf7f('0x12')](_0xdf7f('0xe'),_0xaf8337,_0x18a13f['error']['message']);return _0x1f331f(_0x18a13f['error'][_0xdf7f('0x13')]);}else{logger[_0xdf7f('0xd')](_0xdf7f('0xe'),_0xaf8337,_0xdf7f('0xf'));_0x1f331f(_0x18a13f['result'][_0xdf7f('0x13')]);}})[_0xdf7f('0x14')](function(_0x16bfc8){logger['error'](_0xdf7f('0xe'),_0xaf8337,_0x16bfc8);_0x3af678(_0x16bfc8);});});}
\ No newline at end of file
+var _0x0e83=['result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x4be31a,_0xc12132){var _0x1321dc=function(_0x157132){while(--_0x157132){_0x4be31a['push'](_0x4be31a['shift']());}};_0x1321dc(++_0xc12132);}(_0x0e83,0x120));var _0x30e8=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0x0e83[_0x5a9c0c];return _0x53c77d;};'use strict';var _=require(_0x30e8('0x0'));var util=require(_0x30e8('0x1'));var moment=require('moment');var BPromise=require(_0x30e8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x30e8('0x3'));var db=require(_0x30e8('0x4'))['db'];var utils=require(_0x30e8('0x5'));var logger=require(_0x30e8('0x6'))(_0x30e8('0x7'));var config=require(_0x30e8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x30e8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x582c0f,_0xe5caf5,_0x4235d9){return new BPromise(function(_0xad1684,_0x5ad1fd){return client[_0x30e8('0xa')](_0x582c0f,_0x4235d9)['then'](function(_0x143d55){logger[_0x30e8('0xb')](_0x30e8('0xc'),_0xe5caf5,'request\x20sent');logger[_0x30e8('0xd')](_0x30e8('0xe'),_0xe5caf5,_0x30e8('0xf'),JSON[_0x30e8('0x10')](_0x143d55));if(_0x143d55[_0x30e8('0x11')]){if(_0x143d55[_0x30e8('0x11')][_0x30e8('0x12')]===0x1f4){logger[_0x30e8('0x11')](_0x30e8('0xc'),_0xe5caf5,_0x143d55['error'][_0x30e8('0x13')]);return _0x5ad1fd(_0x143d55[_0x30e8('0x11')][_0x30e8('0x13')]);}logger[_0x30e8('0x11')]('VtigerField,\x20%s,\x20%s',_0xe5caf5,_0x143d55[_0x30e8('0x11')]['message']);return _0xad1684(_0x143d55[_0x30e8('0x11')][_0x30e8('0x13')]);}else{logger['info'](_0x30e8('0xc'),_0xe5caf5,'request\x20sent');_0xad1684(_0x143d55[_0x30e8('0x14')]['message']);}})[_0x30e8('0x15')](function(_0xf1bbe2){logger[_0x30e8('0x11')](_0x30e8('0xc'),_0xe5caf5,_0xf1bbe2);_0x5ad1fd(_0xf1bbe2);});});}
\ No newline at end of file
index 577266f..12583cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x392a=['/:id/fields','post','addConfiguration','put','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intZendeskAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations'];(function(_0x363f05,_0x4b6f15){var _0x2f86d3=function(_0x49acc8){while(--_0x49acc8){_0x363f05['push'](_0x363f05['shift']());}};_0x2f86d3(++_0x4b6f15);}(_0x392a,0x11d));var _0xa392=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x392a[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0xa392('0x0'));var util=require('util');var path=require(_0xa392('0x1'));var timeout=require(_0xa392('0x2'));var express=require(_0xa392('0x3'));var router=express[_0xa392('0x4')]();var fs_extra=require(_0xa392('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa392('0x6'));var config=require('../../config/environment');var controller=require(_0xa392('0x7'));router[_0xa392('0x8')]('/',auth['isAuthenticated'](),controller[_0xa392('0x9')]);router['get'](_0xa392('0xa'),auth[_0xa392('0xb')](),controller[_0xa392('0xc')]);router[_0xa392('0x8')](_0xa392('0xd'),auth[_0xa392('0xb')](),controller[_0xa392('0xe')]);router[_0xa392('0x8')](_0xa392('0xf'),auth[_0xa392('0xb')](),controller['getFields']);router['post']('/',auth[_0xa392('0xb')](),controller['create']);router[_0xa392('0x10')](_0xa392('0xd'),auth[_0xa392('0xb')](),controller[_0xa392('0x11')]);router[_0xa392('0x12')](_0xa392('0xa'),auth[_0xa392('0xb')](),controller['update']);router['delete'](_0xa392('0xa'),auth['isAuthenticated'](),controller[_0xa392('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xd1f6=['isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','create','post','addConfiguration','put','update','delete','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xd1f6,0x121));var _0x6d1f=function(_0x1ad709,_0x218051){_0x1ad709=_0x1ad709-0x0;var _0x2282e3=_0xd1f6[_0x1ad709];return _0x2282e3;};'use strict';var multer=require(_0x6d1f('0x0'));var util=require(_0x6d1f('0x1'));var path=require(_0x6d1f('0x2'));var timeout=require('connect-timeout');var express=require(_0x6d1f('0x3'));var router=express[_0x6d1f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6d1f('0x5'));var interaction=require(_0x6d1f('0x6'));var config=require(_0x6d1f('0x7'));var controller=require(_0x6d1f('0x8'));router[_0x6d1f('0x9')]('/',auth[_0x6d1f('0xa')](),controller[_0x6d1f('0xb')]);router[_0x6d1f('0x9')](_0x6d1f('0xc'),auth[_0x6d1f('0xa')](),controller[_0x6d1f('0xd')]);router[_0x6d1f('0x9')](_0x6d1f('0xe'),auth[_0x6d1f('0xa')](),controller[_0x6d1f('0xf')]);router[_0x6d1f('0x9')](_0x6d1f('0x10'),auth['isAuthenticated'](),controller['getFields']);router['post']('/',auth[_0x6d1f('0xa')](),controller[_0x6d1f('0x11')]);router[_0x6d1f('0x12')](_0x6d1f('0xe'),auth['isAuthenticated'](),controller[_0x6d1f('0x13')]);router[_0x6d1f('0x14')]('/:id',auth[_0x6d1f('0xa')](),controller[_0x6d1f('0x15')]);router[_0x6d1f('0x16')](_0x6d1f('0xc'),auth[_0x6d1f('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c74807b..2d1a2d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe928=['password','ENUM','integrationTab','sequelize','exports','STRING','remoteUri'];(function(_0x5d21d2,_0x399c53){var _0x495ebd=function(_0x457472){while(--_0x457472){_0x5d21d2['push'](_0x5d21d2['shift']());}};_0x495ebd(++_0x399c53);}(_0xe928,0x145));var _0x8e92=function(_0x1135c0,_0x1fcc56){_0x1135c0=_0x1135c0-0x0;var _0x24fb1a=_0xe928[_0x1135c0];return _0x24fb1a;};'use strict';var Sequelize=require(_0x8e92('0x0'));module[_0x8e92('0x1')]={'name':{'type':Sequelize[_0x8e92('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x8e92('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x8e92('0x2')]},'token':{'type':Sequelize[_0x8e92('0x2')]},'remoteUri':{'type':Sequelize[_0x8e92('0x2')],'unique':_0x8e92('0x3')},'authType':{'type':Sequelize['ENUM'](_0x8e92('0x4'),'token'),'defaultValue':_0x8e92('0x4')},'serverUrl':{'type':Sequelize[_0x8e92('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x8e92('0x5')](_0x8e92('0x6'),'newTab'),'defaultValue':_0x8e92('0x6')}};
\ No newline at end of file
+var _0xdb28=['integrationTab','newTab','sequelize','exports','STRING','username','remoteUri','password','token','ENUM'];(function(_0x1db29a,_0x5263e6){var _0x53525b=function(_0x469d7d){while(--_0x469d7d){_0x1db29a['push'](_0x1db29a['shift']());}};_0x53525b(++_0x5263e6);}(_0xdb28,0x106));var _0x8db2=function(_0x1f7551,_0x120e96){_0x1f7551=_0x1f7551-0x0;var _0x4ccd77=_0xdb28[_0x1f7551];return _0x4ccd77;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'name':{'type':Sequelize[_0x8db2('0x2')]},'description':{'type':Sequelize[_0x8db2('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x8db2('0x3')},'password':{'type':Sequelize[_0x8db2('0x2')]},'token':{'type':Sequelize[_0x8db2('0x2')]},'remoteUri':{'type':Sequelize[_0x8db2('0x2')],'unique':_0x8db2('0x4')},'authType':{'type':Sequelize['ENUM'](_0x8db2('0x5'),_0x8db2('0x6')),'defaultValue':'password'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x8db2('0x7')](_0x8db2('0x8'),_0x8db2('0x9')),'defaultValue':_0x8db2('0x8')}};
\ No newline at end of file
index 25d6e60..32fc208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['error','name','send','index','ZendeskAccount','key','model','map','keys','query','intersection','fields','attributes','length','order','sort','filters','pick','where','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','create','body','find','getConfigurations','findOne','ZendeskConfiguration','hasOwnProperty','nolimit','addConfiguration','AccountId','getSubjects','channel','getDescriptions','ZendeskField','Subjects','Descriptions','getFields','username','password','token','authType','remoteUri','substring','lastIndexOf','GET','format','%s/%s','Basic\x20%s','%s:%s','toString','base64','%s/token:%s','ValidationError','Unknown\x20authentication\x20type','subject','assignee','remove','includes','ticket_fields','title','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end'];(function(_0x441cd0,_0x3e474a){var _0x118063=function(_0x3fe607){while(--_0x3fe607){_0x441cd0['push'](_0x441cd0['shift']());}};_0x118063(++_0x3e474a);}(_0x6324,0x142));var _0x4632=function(_0x1486ce,_0x233c7f){_0x1486ce=_0x1486ce-0x0;var _0x10a7b2=_0x6324[_0x1486ce];return _0x10a7b2;};'use strict';var emlformat=require(_0x4632('0x0'));var rimraf=require(_0x4632('0x1'));var zipdir=require(_0x4632('0x2'));var jsonpatch=require(_0x4632('0x3'));var rp=require('request-promise');var moment=require(_0x4632('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4632('0x5'));var util=require('util');var path=require(_0x4632('0x6'));var sox=require('sox');var csv=require(_0x4632('0x7'));var ejs=require(_0x4632('0x8'));var fs=require('fs');var fs_extra=require(_0x4632('0x9'));var _=require(_0x4632('0xa'));var squel=require('squel');var crypto=require(_0x4632('0xb'));var jsforce=require(_0x4632('0xc'));var deskjs=require(_0x4632('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4632('0xe'));var Papa=require(_0x4632('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4632('0x10'));var as=require(_0x4632('0x11'));var hardwareService=require(_0x4632('0x12'));var logger=require(_0x4632('0x13'))(_0x4632('0x14'));var utils=require(_0x4632('0x15'));var config=require(_0x4632('0x16'));var licenseUtil=require(_0x4632('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x4632('0x18'));function respondWithStatusCode(_0x499d88,_0x4719f7){_0x4719f7=_0x4719f7||0xcc;return function(_0x299073){if(_0x299073){return _0x499d88[_0x4632('0x19')](_0x4719f7);}return _0x499d88[_0x4632('0x1a')](_0x4719f7)['end']();};}function respondWithResult(_0x3ba361,_0x255882){_0x255882=_0x255882||0xc8;return function(_0x3b9901){if(_0x3b9901){return _0x3ba361[_0x4632('0x1a')](_0x255882)[_0x4632('0x1b')](_0x3b9901);}};}function respondWithFilteredResult(_0x5438ab,_0x47b349){return function(_0x2fd7ae){if(_0x2fd7ae){var _0x38bedd=typeof _0x47b349[_0x4632('0x1c')]===_0x4632('0x1d')&&typeof _0x47b349['limit']===_0x4632('0x1d');var _0x113872=_0x2fd7ae[_0x4632('0x1e')];var _0x5b28b7=_0x38bedd?0x0:_0x47b349[_0x4632('0x1c')];var _0x1894bb=_0x38bedd?_0x2fd7ae['count']:_0x47b349['offset']+_0x47b349[_0x4632('0x1f')];var _0x3cf2bd;if(_0x1894bb>=_0x113872){_0x1894bb=_0x113872;_0x3cf2bd=0xc8;}else{_0x3cf2bd=0xce;}_0x5438ab[_0x4632('0x1a')](_0x3cf2bd);return _0x5438ab[_0x4632('0x20')](_0x4632('0x21'),_0x5b28b7+'-'+_0x1894bb+'/'+_0x113872)[_0x4632('0x1b')](_0x2fd7ae);}return null;};}function patchUpdates(_0x9ab826){return function(_0x468ccb){try{jsonpatch[_0x4632('0x22')](_0x468ccb,_0x9ab826,!![]);}catch(_0x3ea0d1){return BPromise[_0x4632('0x23')](_0x3ea0d1);}return _0x468ccb[_0x4632('0x24')]();};}function saveUpdates(_0x2ca6a5,_0x263907){return function(_0x4cfebc){if(_0x4cfebc){return _0x4cfebc[_0x4632('0x25')](_0x2ca6a5)[_0x4632('0x26')](function(_0x3537ed){return _0x3537ed;});}return null;};}function removeEntity(_0x380a9f,_0x1e1b86){return function(_0x38cbbc){if(_0x38cbbc){return _0x38cbbc[_0x4632('0x27')]()[_0x4632('0x26')](function(){_0x380a9f[_0x4632('0x1a')](0xcc)[_0x4632('0x28')]();});}};}function handleEntityNotFound(_0x1b8de0,_0x4af026){return function(_0x2e3428){if(!_0x2e3428){_0x1b8de0[_0x4632('0x19')](0x194);}return _0x2e3428;};}function handleError(_0x372679,_0x22d0f5){_0x22d0f5=_0x22d0f5||0x1f4;return function(_0x2a0b11){logger[_0x4632('0x29')](_0x2a0b11['stack']);if(_0x2a0b11['name']){delete _0x2a0b11[_0x4632('0x2a')];}_0x372679[_0x4632('0x1a')](_0x22d0f5)[_0x4632('0x2b')](_0x2a0b11);};}exports[_0x4632('0x2c')]=function(_0x34079f,_0x119d1b){var _0x3570b2={},_0x5e2ee4={},_0x42d505={'count':0x0,'rows':[]};var _0x135fd2=_['map'](db[_0x4632('0x2d')]['rawAttributes'],function(_0x6599ad){return{'name':_0x6599ad['fieldName'],'type':_0x6599ad['type'][_0x4632('0x2e')]};});_0x5e2ee4[_0x4632('0x2f')]=_[_0x4632('0x30')](_0x135fd2,'name');_0x5e2ee4['query']=_[_0x4632('0x31')](_0x34079f[_0x4632('0x32')]);_0x5e2ee4['filters']=_['intersection'](_0x5e2ee4[_0x4632('0x2f')],_0x5e2ee4[_0x4632('0x32')]);_0x3570b2['attributes']=_[_0x4632('0x33')](_0x5e2ee4[_0x4632('0x2f')],qs[_0x4632('0x34')](_0x34079f[_0x4632('0x32')][_0x4632('0x34')]));_0x3570b2['attributes']=_0x3570b2[_0x4632('0x35')][_0x4632('0x36')]?_0x3570b2['attributes']:_0x5e2ee4['model'];if(!_0x34079f[_0x4632('0x32')]['hasOwnProperty']('nolimit')){_0x3570b2[_0x4632('0x1f')]=qs['limit'](_0x34079f[_0x4632('0x32')][_0x4632('0x1f')]);_0x3570b2[_0x4632('0x1c')]=qs['offset'](_0x34079f[_0x4632('0x32')][_0x4632('0x1c')]);}_0x3570b2[_0x4632('0x37')]=qs[_0x4632('0x38')](_0x34079f[_0x4632('0x32')]['sort']);_0x3570b2['where']=qs[_0x4632('0x39')](_[_0x4632('0x3a')](_0x34079f[_0x4632('0x32')],_0x5e2ee4['filters']),_0x135fd2);if(_0x34079f['query']['filter']){_0x3570b2[_0x4632('0x3b')]=_[_0x4632('0x3c')](_0x3570b2['where'],{'$or':_[_0x4632('0x30')](_0x135fd2,function(_0x20a700){if(_0x20a700[_0x4632('0x3d')]!==_0x4632('0x3e')){var _0x2309f1={};_0x2309f1[_0x20a700[_0x4632('0x2a')]]={'$like':'%'+_0x34079f[_0x4632('0x32')][_0x4632('0x3f')]+'%'};return _0x2309f1;}})});}_0x3570b2=_[_0x4632('0x3c')]({},_0x3570b2,_0x34079f[_0x4632('0x40')]);var _0x1fd3f1={'where':_0x3570b2[_0x4632('0x3b')]};return db['ZendeskAccount'][_0x4632('0x1e')](_0x1fd3f1)[_0x4632('0x26')](function(_0x4c0e13){_0x42d505[_0x4632('0x1e')]=_0x4c0e13;if(_0x34079f[_0x4632('0x32')]['includeAll']){_0x3570b2[_0x4632('0x41')]=[{'all':!![]}];}return db['ZendeskAccount'][_0x4632('0x42')](_0x3570b2);})[_0x4632('0x26')](function(_0x1bfb36){_0x42d505[_0x4632('0x43')]=_0x1bfb36;return _0x42d505;})['then'](respondWithFilteredResult(_0x119d1b,_0x3570b2))[_0x4632('0x44')](handleError(_0x119d1b,null));};exports[_0x4632('0x45')]=function(_0x23ef38,_0x279298){var _0x5cc716={'raw':![],'where':{'id':_0x23ef38[_0x4632('0x46')]['id']}},_0x5b3fa9={};_0x5b3fa9[_0x4632('0x2f')]=_[_0x4632('0x31')](db['ZendeskAccount'][_0x4632('0x47')]);_0x5b3fa9[_0x4632('0x32')]=_[_0x4632('0x31')](_0x23ef38[_0x4632('0x32')]);_0x5b3fa9[_0x4632('0x39')]=_[_0x4632('0x33')](_0x5b3fa9[_0x4632('0x2f')],_0x5b3fa9['query']);_0x5cc716[_0x4632('0x35')]=_[_0x4632('0x33')](_0x5b3fa9[_0x4632('0x2f')],qs[_0x4632('0x34')](_0x23ef38[_0x4632('0x32')]['fields']));_0x5cc716['attributes']=_0x5cc716[_0x4632('0x35')][_0x4632('0x36')]?_0x5cc716[_0x4632('0x35')]:_0x5b3fa9[_0x4632('0x2f')];if(_0x23ef38['query'][_0x4632('0x48')]){_0x5cc716[_0x4632('0x41')]=[{'all':!![]}];}_0x5cc716=_[_0x4632('0x3c')]({},_0x5cc716,_0x23ef38[_0x4632('0x40')]);return db[_0x4632('0x2d')]['find'](_0x5cc716)[_0x4632('0x26')](handleEntityNotFound(_0x279298,null))[_0x4632('0x26')](respondWithResult(_0x279298,null))[_0x4632('0x44')](handleError(_0x279298,null));};exports[_0x4632('0x49')]=function(_0x3676fa,_0x2eb8b0){return db[_0x4632('0x2d')][_0x4632('0x49')](_0x3676fa[_0x4632('0x4a')],{})[_0x4632('0x26')](respondWithResult(_0x2eb8b0,0xc9))[_0x4632('0x44')](handleError(_0x2eb8b0,null));};exports['update']=function(_0xc3ffd0,_0x1ccadb){if(_0xc3ffd0[_0x4632('0x4a')]['id']){delete _0xc3ffd0['body']['id'];}return db[_0x4632('0x2d')][_0x4632('0x4b')]({'where':{'id':_0xc3ffd0[_0x4632('0x46')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0x1ccadb,null))[_0x4632('0x26')](saveUpdates(_0xc3ffd0[_0x4632('0x4a')],null))[_0x4632('0x26')](respondWithResult(_0x1ccadb,null))[_0x4632('0x44')](handleError(_0x1ccadb,null));};exports[_0x4632('0x27')]=function(_0x1aa831,_0x4e89e3){return db[_0x4632('0x2d')][_0x4632('0x4b')]({'where':{'id':_0x1aa831['params']['id']}})[_0x4632('0x26')](handleEntityNotFound(_0x4e89e3,null))[_0x4632('0x26')](removeEntity(_0x4e89e3,null))[_0x4632('0x44')](handleError(_0x4e89e3,null));};exports[_0x4632('0x4c')]=function(_0x2c59f5,_0xfeeac0,_0x248dcf){var _0xf4880f={};var _0x31b42d={};var _0x1b66e0;var _0x3e66d8;return db[_0x4632('0x2d')][_0x4632('0x4d')]({'where':{'id':_0x2c59f5[_0x4632('0x46')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0xfeeac0,null))[_0x4632('0x26')](function(_0x32cd35){if(_0x32cd35){_0x1b66e0=_0x32cd35;_0x31b42d[_0x4632('0x2f')]=_[_0x4632('0x31')](db[_0x4632('0x4e')]['rawAttributes']);_0x31b42d[_0x4632('0x32')]=_[_0x4632('0x31')](_0x2c59f5[_0x4632('0x32')]);_0x31b42d[_0x4632('0x39')]=_[_0x4632('0x33')](_0x31b42d[_0x4632('0x2f')],_0x31b42d['query']);_0xf4880f[_0x4632('0x35')]=_[_0x4632('0x33')](_0x31b42d[_0x4632('0x2f')],qs['fields'](_0x2c59f5[_0x4632('0x32')][_0x4632('0x34')]));_0xf4880f['attributes']=_0xf4880f[_0x4632('0x35')][_0x4632('0x36')]?_0xf4880f[_0x4632('0x35')]:_0x31b42d['model'];_0xf4880f[_0x4632('0x37')]=qs[_0x4632('0x38')](_0x2c59f5[_0x4632('0x32')][_0x4632('0x38')]);_0xf4880f[_0x4632('0x3b')]=qs[_0x4632('0x39')](_[_0x4632('0x3a')](_0x2c59f5[_0x4632('0x32')],_0x31b42d[_0x4632('0x39')]));if(_0x2c59f5[_0x4632('0x32')]['filter']){_0xf4880f[_0x4632('0x3b')]=_[_0x4632('0x3c')](_0xf4880f['where'],{'$or':_[_0x4632('0x30')](_0xf4880f['attributes'],function(_0x48e942){var _0xa55d76={};_0xa55d76[_0x48e942]={'$like':'%'+_0x2c59f5[_0x4632('0x32')][_0x4632('0x3f')]+'%'};return _0xa55d76;})});}_0xf4880f=_[_0x4632('0x3c')]({},_0xf4880f,_0x2c59f5[_0x4632('0x40')]);return _0x1b66e0[_0x4632('0x4c')](_0xf4880f);}})[_0x4632('0x26')](function(_0x3e2849){if(_0x3e2849){_0x3e66d8=_0x3e2849[_0x4632('0x36')];if(!_0x2c59f5[_0x4632('0x32')][_0x4632('0x4f')](_0x4632('0x50'))){_0xf4880f[_0x4632('0x1f')]=qs[_0x4632('0x1f')](_0x2c59f5['query']['limit']);_0xf4880f[_0x4632('0x1c')]=qs[_0x4632('0x1c')](_0x2c59f5[_0x4632('0x32')][_0x4632('0x1c')]);}return _0x1b66e0[_0x4632('0x4c')](_0xf4880f);}})[_0x4632('0x26')](function(_0x5b66ee){if(_0x5b66ee){return _0x5b66ee?{'count':_0x3e66d8,'rows':_0x5b66ee}:null;}})[_0x4632('0x26')](respondWithResult(_0xfeeac0,null))[_0x4632('0x44')](handleError(_0xfeeac0,null));};exports[_0x4632('0x51')]=function(_0x2e4d57,_0x5d1994,_0x529be1){if(_0x2e4d57[_0x4632('0x4a')]['id']){delete _0x2e4d57['body']['id'];}return db[_0x4632('0x2d')][_0x4632('0x4d')]({'where':{'id':_0x2e4d57[_0x4632('0x46')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0x5d1994,null))[_0x4632('0x26')](function(_0x5e5669){if(_0x5e5669){_0x2e4d57[_0x4632('0x4a')][_0x4632('0x52')]=_0x5e5669['id'];_0x2e4d57['body']['Subjects']=integrations[_0x4632('0x53')](_0x2e4d57[_0x4632('0x4a')][_0x4632('0x54')],_0x2e4d57[_0x4632('0x4a')]['type']);_0x2e4d57['body']['Descriptions']=integrations[_0x4632('0x55')](_0x2e4d57['body'][_0x4632('0x54')],_0x2e4d57[_0x4632('0x4a')][_0x4632('0x3d')]);return db[_0x4632('0x4e')][_0x4632('0x49')](_0x2e4d57[_0x4632('0x4a')],{'include':[{'model':db[_0x4632('0x56')],'as':_0x4632('0x57')},{'model':db[_0x4632('0x56')],'as':_0x4632('0x58')}]});}return null;})[_0x4632('0x26')](respondWithResult(_0x5d1994,null))[_0x4632('0x44')](handleError(_0x5d1994,null));};exports[_0x4632('0x59')]=function(_0x3d5e65,_0x461700,_0x1b2905){var _0x550c4d='';return db[_0x4632('0x2d')][_0x4632('0x4d')]({'where':{'id':_0x3d5e65[_0x4632('0x46')]['id']},'attributes':['id',_0x4632('0x5a'),_0x4632('0x5b'),_0x4632('0x5c'),_0x4632('0x5d'),_0x4632('0x5e')]})[_0x4632('0x26')](handleEntityNotFound(_0x461700,null))[_0x4632('0x26')](function(_0x16ed40){if(_0x16ed40){_0x550c4d=_0x16ed40[_0x4632('0x5e')];var _0x27e2a6=_0x550c4d['slice'](-0x1);if(_0x27e2a6==='/'){_0x550c4d=_0x550c4d[_0x4632('0x5f')](0x0,_0x550c4d[_0x4632('0x60')](_0x27e2a6));}var _0x348af1={'method':_0x4632('0x61'),'uri':util[_0x4632('0x62')](_0x4632('0x63'),_0x550c4d,'ticket_fields'),'json':!![]};switch(_0x16ed40[_0x4632('0x5d')]){case _0x4632('0x5b'):_0x348af1['headers']={'Authorization':util[_0x4632('0x62')](_0x4632('0x64'),new Buffer(util[_0x4632('0x62')](_0x4632('0x65'),_0x16ed40[_0x4632('0x5a')],_0x16ed40['password']))[_0x4632('0x66')](_0x4632('0x67')))};break;case _0x4632('0x5c'):_0x348af1['headers']={'Authorization':util[_0x4632('0x62')](_0x4632('0x64'),new Buffer(util[_0x4632('0x62')](_0x4632('0x68'),_0x16ed40[_0x4632('0x5a')],_0x16ed40[_0x4632('0x5c')]))[_0x4632('0x66')](_0x4632('0x67')))};break;default:throw new db['Sequelize'][(_0x4632('0x69'))](_0x4632('0x6a'));}return rp(_0x348af1);}})[_0x4632('0x26')](function(_0x525bf9){if(_0x525bf9){var _0xfc48bd=[_0x4632('0x6b'),'description','group',_0x4632('0x6c')];_[_0x4632('0x6d')](_0x525bf9['ticket_fields'],function(_0x63d3e1){return _0xfc48bd[_0x4632('0x6e')](_0x63d3e1[_0x4632('0x3d')]);});return{'count':_0x525bf9[_0x4632('0x6f')][_0x4632('0x36')],'rows':_[_0x4632('0x30')](_0x525bf9[_0x4632('0x6f')],function(_0x130b52){return{'id':_0x130b52['id'],'name':_0x130b52['position']>0x7?_0x130b52[_0x4632('0x70')]:_0x130b52[_0x4632('0x3d')],'custom':_0x130b52[_0x4632('0x71')]>0x7?!![]:![],'options':_0x130b52[_0x4632('0x72')]?_0x130b52['system_field_options']:_0x130b52[_0x4632('0x73')]?_0x130b52[_0x4632('0x73')]:[]};})};}})[_0x4632('0x26')](respondWithResult(_0x461700,null))[_0x4632('0x44')](function(_0x3cee1d){var _0x4ca8a8=_0x3d5e65[_0x4632('0x32')][_0x4632('0x74')]?0x1f4:_0x3cee1d[_0x4632('0x75')]||0x1f4;logger[_0x4632('0x29')](_0x4632('0x76'),_0x4632('0x59'),_0x4ca8a8,JSON[_0x4632('0x77')](_0x3cee1d));delete _0x3cee1d[_0x4632('0x2a')];if(_0x4ca8a8===0x191){_0x4ca8a8=0x190;}_0x461700['status'](_0x4ca8a8)[_0x4632('0x2b')](_0x3d5e65[_0x4632('0x32')][_0x4632('0x74')]?{'message':_0x4632('0x78'),'statusCode':_0x3cee1d[_0x4632('0x75')]}:_0x3cee1d);});};
\ No newline at end of file
+var _0x84a0=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','name','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','ZendeskAccount','findAll','rows','show','length','include','find','catch','create','body','update','params','findOne','ZendeskConfiguration','order','getConfigurations','hasOwnProperty','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','Descriptions','username','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','password','headers','Basic\x20%s','%s:%s','toString','%s/token:%s','token','ValidationError','Unknown\x20authentication\x20type','subject','description','assignee','remove','ticket_fields','includes','position','title','system_field_options','custom_field_options','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch'];(function(_0x38680c,_0x51a854){var _0x378670=function(_0x4bc7c8){while(--_0x4bc7c8){_0x38680c['push'](_0x38680c['shift']());}};_0x378670(++_0x51a854);}(_0x84a0,0x66));var _0x084a=function(_0x457f47,_0x22dc6c){_0x457f47=_0x457f47-0x0;var _0x43e1ca=_0x84a0[_0x457f47];return _0x43e1ca;};'use strict';var emlformat=require(_0x084a('0x0'));var rimraf=require(_0x084a('0x1'));var zipdir=require(_0x084a('0x2'));var jsonpatch=require(_0x084a('0x3'));var rp=require('request-promise');var moment=require(_0x084a('0x4'));var BPromise=require(_0x084a('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x084a('0x6'));var sox=require(_0x084a('0x7'));var csv=require('to-csv');var ejs=require(_0x084a('0x8'));var fs=require('fs');var fs_extra=require(_0x084a('0x9'));var _=require(_0x084a('0xa'));var squel=require(_0x084a('0xb'));var crypto=require(_0x084a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x084a('0xd'));var toCsv=require(_0x084a('0xe'));var querystring=require(_0x084a('0xf'));var Papa=require(_0x084a('0x10'));var Redis=require(_0x084a('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x084a('0x12'));var hardwareService=require(_0x084a('0x13'));var logger=require(_0x084a('0x14'))(_0x084a('0x15'));var utils=require(_0x084a('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x084a('0x17'))['db'];var integrations=require(_0x084a('0x18'));function respondWithStatusCode(_0xec90a5,_0x9245b1){_0x9245b1=_0x9245b1||0xcc;return function(_0x1bdfb8){if(_0x1bdfb8){return _0xec90a5[_0x084a('0x19')](_0x9245b1);}return _0xec90a5[_0x084a('0x1a')](_0x9245b1)[_0x084a('0x1b')]();};}function respondWithResult(_0x5aef40,_0x4277c9){_0x4277c9=_0x4277c9||0xc8;return function(_0x4b9cc5){if(_0x4b9cc5){return _0x5aef40[_0x084a('0x1a')](_0x4277c9)[_0x084a('0x1c')](_0x4b9cc5);}};}function respondWithFilteredResult(_0x366624,_0x2d35b8){return function(_0xd20527){if(_0xd20527){var _0x4cbd16=typeof _0x2d35b8[_0x084a('0x1d')]==='undefined'&&typeof _0x2d35b8[_0x084a('0x1e')]===_0x084a('0x1f');var _0x4af43e=_0xd20527[_0x084a('0x20')];var _0x32c729=_0x4cbd16?0x0:_0x2d35b8[_0x084a('0x1d')];var _0x14bb19=_0x4cbd16?_0xd20527[_0x084a('0x20')]:_0x2d35b8[_0x084a('0x1d')]+_0x2d35b8[_0x084a('0x1e')];var _0x34e86e;if(_0x14bb19>=_0x4af43e){_0x14bb19=_0x4af43e;_0x34e86e=0xc8;}else{_0x34e86e=0xce;}_0x366624[_0x084a('0x1a')](_0x34e86e);return _0x366624[_0x084a('0x21')](_0x084a('0x22'),_0x32c729+'-'+_0x14bb19+'/'+_0x4af43e)[_0x084a('0x1c')](_0xd20527);}return null;};}function patchUpdates(_0x116328){return function(_0x126efb){try{jsonpatch[_0x084a('0x23')](_0x126efb,_0x116328,!![]);}catch(_0x506f71){return BPromise[_0x084a('0x24')](_0x506f71);}return _0x126efb[_0x084a('0x25')]();};}function saveUpdates(_0x41a90f,_0x2d62bf){return function(_0x1c3f6c){if(_0x1c3f6c){return _0x1c3f6c['update'](_0x41a90f)[_0x084a('0x26')](function(_0x288e9e){return _0x288e9e;});}return null;};}function removeEntity(_0x6346a5,_0x1f2c9f){return function(_0x18b43d){if(_0x18b43d){return _0x18b43d[_0x084a('0x27')]()['then'](function(){_0x6346a5[_0x084a('0x1a')](0xcc)[_0x084a('0x1b')]();});}};}function handleEntityNotFound(_0x54233b,_0x5b1474){return function(_0x8806d5){if(!_0x8806d5){_0x54233b[_0x084a('0x19')](0x194);}return _0x8806d5;};}function handleError(_0xfc9b8c,_0x4c5658){_0x4c5658=_0x4c5658||0x1f4;return function(_0x5596ac){logger['error'](_0x5596ac['stack']);if(_0x5596ac[_0x084a('0x28')]){delete _0x5596ac['name'];}_0xfc9b8c['status'](_0x4c5658)['send'](_0x5596ac);};}exports[_0x084a('0x29')]=function(_0x4651e6,_0x388062){var _0x2c4149={},_0x3be7a6={},_0x25a2a1={'count':0x0,'rows':[]};var _0x378de6=_[_0x084a('0x2a')](db['ZendeskAccount'][_0x084a('0x2b')],function(_0x3b2b38){return{'name':_0x3b2b38['fieldName'],'type':_0x3b2b38[_0x084a('0x2c')][_0x084a('0x2d')]};});_0x3be7a6[_0x084a('0x2e')]=_[_0x084a('0x2a')](_0x378de6,_0x084a('0x28'));_0x3be7a6[_0x084a('0x2f')]=_[_0x084a('0x30')](_0x4651e6[_0x084a('0x2f')]);_0x3be7a6[_0x084a('0x31')]=_[_0x084a('0x32')](_0x3be7a6[_0x084a('0x2e')],_0x3be7a6[_0x084a('0x2f')]);_0x2c4149[_0x084a('0x33')]=_['intersection'](_0x3be7a6['model'],qs[_0x084a('0x34')](_0x4651e6[_0x084a('0x2f')][_0x084a('0x34')]));_0x2c4149[_0x084a('0x33')]=_0x2c4149[_0x084a('0x33')]['length']?_0x2c4149[_0x084a('0x33')]:_0x3be7a6[_0x084a('0x2e')];if(!_0x4651e6[_0x084a('0x2f')]['hasOwnProperty'](_0x084a('0x35'))){_0x2c4149[_0x084a('0x1e')]=qs[_0x084a('0x1e')](_0x4651e6['query']['limit']);_0x2c4149['offset']=qs[_0x084a('0x1d')](_0x4651e6[_0x084a('0x2f')][_0x084a('0x1d')]);}_0x2c4149['order']=qs[_0x084a('0x36')](_0x4651e6[_0x084a('0x2f')][_0x084a('0x36')]);_0x2c4149[_0x084a('0x37')]=qs[_0x084a('0x31')](_[_0x084a('0x38')](_0x4651e6[_0x084a('0x2f')],_0x3be7a6[_0x084a('0x31')]),_0x378de6);if(_0x4651e6[_0x084a('0x2f')][_0x084a('0x39')]){_0x2c4149[_0x084a('0x37')]=_[_0x084a('0x3a')](_0x2c4149[_0x084a('0x37')],{'$or':_[_0x084a('0x2a')](_0x378de6,function(_0x10983f){if(_0x10983f['type']!==_0x084a('0x3b')){var _0x1dada8={};_0x1dada8[_0x10983f[_0x084a('0x28')]]={'$like':'%'+_0x4651e6[_0x084a('0x2f')][_0x084a('0x39')]+'%'};return _0x1dada8;}})});}_0x2c4149=_[_0x084a('0x3a')]({},_0x2c4149,_0x4651e6[_0x084a('0x3c')]);var _0x183e10={'where':_0x2c4149[_0x084a('0x37')]};return db['ZendeskAccount'][_0x084a('0x20')](_0x183e10)[_0x084a('0x26')](function(_0x25a081){_0x25a2a1[_0x084a('0x20')]=_0x25a081;if(_0x4651e6[_0x084a('0x2f')][_0x084a('0x3d')]){_0x2c4149['include']=[{'all':!![]}];}return db[_0x084a('0x3e')][_0x084a('0x3f')](_0x2c4149);})['then'](function(_0x410fdb){_0x25a2a1[_0x084a('0x40')]=_0x410fdb;return _0x25a2a1;})[_0x084a('0x26')](respondWithFilteredResult(_0x388062,_0x2c4149))['catch'](handleError(_0x388062,null));};exports[_0x084a('0x41')]=function(_0xba1081,_0x4fe9c2){var _0x3e2b92={'raw':![],'where':{'id':_0xba1081['params']['id']}},_0xfb565c={};_0xfb565c['model']=_[_0x084a('0x30')](db[_0x084a('0x3e')][_0x084a('0x2b')]);_0xfb565c[_0x084a('0x2f')]=_[_0x084a('0x30')](_0xba1081[_0x084a('0x2f')]);_0xfb565c[_0x084a('0x31')]=_[_0x084a('0x32')](_0xfb565c[_0x084a('0x2e')],_0xfb565c[_0x084a('0x2f')]);_0x3e2b92[_0x084a('0x33')]=_['intersection'](_0xfb565c['model'],qs[_0x084a('0x34')](_0xba1081[_0x084a('0x2f')][_0x084a('0x34')]));_0x3e2b92['attributes']=_0x3e2b92[_0x084a('0x33')][_0x084a('0x42')]?_0x3e2b92[_0x084a('0x33')]:_0xfb565c[_0x084a('0x2e')];if(_0xba1081[_0x084a('0x2f')]['includeAll']){_0x3e2b92[_0x084a('0x43')]=[{'all':!![]}];}_0x3e2b92=_['merge']({},_0x3e2b92,_0xba1081[_0x084a('0x3c')]);return db[_0x084a('0x3e')][_0x084a('0x44')](_0x3e2b92)['then'](handleEntityNotFound(_0x4fe9c2,null))['then'](respondWithResult(_0x4fe9c2,null))[_0x084a('0x45')](handleError(_0x4fe9c2,null));};exports[_0x084a('0x46')]=function(_0x505965,_0x29d8c2){return db[_0x084a('0x3e')][_0x084a('0x46')](_0x505965[_0x084a('0x47')],{})['then'](respondWithResult(_0x29d8c2,0xc9))[_0x084a('0x45')](handleError(_0x29d8c2,null));};exports[_0x084a('0x48')]=function(_0x31677b,_0x10856d){if(_0x31677b['body']['id']){delete _0x31677b[_0x084a('0x47')]['id'];}return db[_0x084a('0x3e')][_0x084a('0x44')]({'where':{'id':_0x31677b[_0x084a('0x49')]['id']}})['then'](handleEntityNotFound(_0x10856d,null))['then'](saveUpdates(_0x31677b[_0x084a('0x47')],null))[_0x084a('0x26')](respondWithResult(_0x10856d,null))[_0x084a('0x45')](handleError(_0x10856d,null));};exports[_0x084a('0x27')]=function(_0xf936e,_0x3b2df4){return db[_0x084a('0x3e')][_0x084a('0x44')]({'where':{'id':_0xf936e[_0x084a('0x49')]['id']}})[_0x084a('0x26')](handleEntityNotFound(_0x3b2df4,null))[_0x084a('0x26')](removeEntity(_0x3b2df4,null))[_0x084a('0x45')](handleError(_0x3b2df4,null));};exports['getConfigurations']=function(_0xcdd5b,_0x37fce4,_0x29fa4b){var _0x39edc1={};var _0x2091b1={};var _0x1c972c;var _0xa5362;return db['ZendeskAccount'][_0x084a('0x4a')]({'where':{'id':_0xcdd5b[_0x084a('0x49')]['id']}})[_0x084a('0x26')](handleEntityNotFound(_0x37fce4,null))['then'](function(_0x54ca1f){if(_0x54ca1f){_0x1c972c=_0x54ca1f;_0x2091b1[_0x084a('0x2e')]=_['keys'](db[_0x084a('0x4b')][_0x084a('0x2b')]);_0x2091b1['query']=_[_0x084a('0x30')](_0xcdd5b['query']);_0x2091b1['filters']=_[_0x084a('0x32')](_0x2091b1[_0x084a('0x2e')],_0x2091b1[_0x084a('0x2f')]);_0x39edc1[_0x084a('0x33')]=_[_0x084a('0x32')](_0x2091b1[_0x084a('0x2e')],qs[_0x084a('0x34')](_0xcdd5b['query'][_0x084a('0x34')]));_0x39edc1[_0x084a('0x33')]=_0x39edc1[_0x084a('0x33')]['length']?_0x39edc1[_0x084a('0x33')]:_0x2091b1[_0x084a('0x2e')];_0x39edc1[_0x084a('0x4c')]=qs[_0x084a('0x36')](_0xcdd5b['query'][_0x084a('0x36')]);_0x39edc1['where']=qs[_0x084a('0x31')](_[_0x084a('0x38')](_0xcdd5b[_0x084a('0x2f')],_0x2091b1['filters']));if(_0xcdd5b['query'][_0x084a('0x39')]){_0x39edc1[_0x084a('0x37')]=_['merge'](_0x39edc1[_0x084a('0x37')],{'$or':_['map'](_0x39edc1['attributes'],function(_0x195ae2){var _0x3f3fd7={};_0x3f3fd7[_0x195ae2]={'$like':'%'+_0xcdd5b[_0x084a('0x2f')][_0x084a('0x39')]+'%'};return _0x3f3fd7;})});}_0x39edc1=_[_0x084a('0x3a')]({},_0x39edc1,_0xcdd5b[_0x084a('0x3c')]);return _0x1c972c[_0x084a('0x4d')](_0x39edc1);}})[_0x084a('0x26')](function(_0x114aa5){if(_0x114aa5){_0xa5362=_0x114aa5['length'];if(!_0xcdd5b[_0x084a('0x2f')][_0x084a('0x4e')](_0x084a('0x35'))){_0x39edc1['limit']=qs[_0x084a('0x1e')](_0xcdd5b[_0x084a('0x2f')]['limit']);_0x39edc1[_0x084a('0x1d')]=qs['offset'](_0xcdd5b['query'][_0x084a('0x1d')]);}return _0x1c972c['getConfigurations'](_0x39edc1);}})['then'](function(_0x2368f5){if(_0x2368f5){return _0x2368f5?{'count':_0xa5362,'rows':_0x2368f5}:null;}})[_0x084a('0x26')](respondWithResult(_0x37fce4,null))[_0x084a('0x45')](handleError(_0x37fce4,null));};exports['addConfiguration']=function(_0xff6c9e,_0xbd063c,_0x2311f5){if(_0xff6c9e[_0x084a('0x47')]['id']){delete _0xff6c9e[_0x084a('0x47')]['id'];}return db[_0x084a('0x3e')][_0x084a('0x4a')]({'where':{'id':_0xff6c9e['params']['id']}})['then'](handleEntityNotFound(_0xbd063c,null))[_0x084a('0x26')](function(_0x36ba24){if(_0x36ba24){_0xff6c9e['body'][_0x084a('0x4f')]=_0x36ba24['id'];_0xff6c9e[_0x084a('0x47')][_0x084a('0x50')]=integrations[_0x084a('0x51')](_0xff6c9e['body'][_0x084a('0x52')],_0xff6c9e[_0x084a('0x47')][_0x084a('0x2c')]);_0xff6c9e['body']['Descriptions']=integrations[_0x084a('0x53')](_0xff6c9e[_0x084a('0x47')][_0x084a('0x52')],_0xff6c9e[_0x084a('0x47')][_0x084a('0x2c')]);return db[_0x084a('0x4b')][_0x084a('0x46')](_0xff6c9e['body'],{'include':[{'model':db[_0x084a('0x54')],'as':'Subjects'},{'model':db['ZendeskField'],'as':_0x084a('0x55')}]});}return null;})[_0x084a('0x26')](respondWithResult(_0xbd063c,null))[_0x084a('0x45')](handleError(_0xbd063c,null));};exports['getFields']=function(_0x163a5d,_0x57729c,_0x1eb7be){var _0x1054ea='';return db[_0x084a('0x3e')][_0x084a('0x4a')]({'where':{'id':_0x163a5d[_0x084a('0x49')]['id']},'attributes':['id',_0x084a('0x56'),'password','token',_0x084a('0x57'),_0x084a('0x58')]})[_0x084a('0x26')](handleEntityNotFound(_0x57729c,null))[_0x084a('0x26')](function(_0x22abf5){if(_0x22abf5){_0x1054ea=_0x22abf5[_0x084a('0x58')];var _0x5c655f=_0x1054ea[_0x084a('0x59')](-0x1);if(_0x5c655f==='/'){_0x1054ea=_0x1054ea[_0x084a('0x5a')](0x0,_0x1054ea[_0x084a('0x5b')](_0x5c655f));}var _0x33c040={'method':_0x084a('0x5c'),'uri':util[_0x084a('0x5d')](_0x084a('0x5e'),_0x1054ea,'ticket_fields'),'json':!![]};switch(_0x22abf5[_0x084a('0x57')]){case _0x084a('0x5f'):_0x33c040[_0x084a('0x60')]={'Authorization':util[_0x084a('0x5d')](_0x084a('0x61'),new Buffer(util[_0x084a('0x5d')](_0x084a('0x62'),_0x22abf5[_0x084a('0x56')],_0x22abf5[_0x084a('0x5f')]))[_0x084a('0x63')]('base64'))};break;case'token':_0x33c040['headers']={'Authorization':util[_0x084a('0x5d')](_0x084a('0x61'),new Buffer(util['format'](_0x084a('0x64'),_0x22abf5[_0x084a('0x56')],_0x22abf5[_0x084a('0x65')]))[_0x084a('0x63')]('base64'))};break;default:throw new db['Sequelize'][(_0x084a('0x66'))](_0x084a('0x67'));}return rp(_0x33c040);}})[_0x084a('0x26')](function(_0x37d05a){if(_0x37d05a){var _0x155450=[_0x084a('0x68'),_0x084a('0x69'),'group',_0x084a('0x6a')];_[_0x084a('0x6b')](_0x37d05a[_0x084a('0x6c')],function(_0x137bba){return _0x155450[_0x084a('0x6d')](_0x137bba[_0x084a('0x2c')]);});return{'count':_0x37d05a[_0x084a('0x6c')]['length'],'rows':_[_0x084a('0x2a')](_0x37d05a[_0x084a('0x6c')],function(_0x26a88c){return{'id':_0x26a88c['id'],'name':_0x26a88c[_0x084a('0x6e')]>0x7?_0x26a88c[_0x084a('0x6f')]:_0x26a88c[_0x084a('0x2c')],'custom':_0x26a88c[_0x084a('0x6e')]>0x7?!![]:![],'options':_0x26a88c[_0x084a('0x70')]?_0x26a88c[_0x084a('0x70')]:_0x26a88c[_0x084a('0x71')]?_0x26a88c[_0x084a('0x71')]:[]};})};}})['then'](respondWithResult(_0x57729c,null))[_0x084a('0x45')](function(_0x29916a){var _0x4b8f1f=_0x163a5d[_0x084a('0x2f')]['test']?0x1f4:_0x29916a['statusCode']||0x1f4;logger[_0x084a('0x72')](_0x084a('0x73'),'getFields',_0x4b8f1f,JSON[_0x084a('0x74')](_0x29916a));delete _0x29916a[_0x084a('0x28')];if(_0x4b8f1f===0x191){_0x4b8f1f=0x190;}_0x57729c[_0x084a('0x1a')](_0x4b8f1f)[_0x084a('0x75')](_0x163a5d[_0x084a('0x2f')][_0x084a('0x76')]?{'message':_0x084a('0x77'),'statusCode':_0x29916a[_0x084a('0x78')]}:_0x29916a);});};
\ No newline at end of file
index 2b33de1..14f0732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92cb=['rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x383bfb,_0x1eb876){var _0x3a292b=function(_0x47c394){while(--_0x47c394){_0x383bfb['push'](_0x383bfb['shift']());}};_0x3a292b(++_0x1eb876);}(_0x92cb,0x1e3));var _0xb92c=function(_0x51f60e,_0x4aab27){_0x51f60e=_0x51f60e-0x0;var _0x1b93ee=_0x92cb[_0x51f60e];return _0x1b93ee;};'use strict';var _=require(_0xb92c('0x0'));var util=require(_0xb92c('0x1'));var logger=require(_0xb92c('0x2'))('api');var moment=require(_0xb92c('0x3'));var BPromise=require(_0xb92c('0x4'));var rp=require(_0xb92c('0x5'));var fs=require('fs');var path=require(_0xb92c('0x6'));var rimraf=require(_0xb92c('0x7'));var config=require(_0xb92c('0x8'));var attributes=require(_0xb92c('0x9'));var integrations=require(_0xb92c('0xa'));module[_0xb92c('0xb')]=function(_0x5839b0,_0x4ab364){return _0x5839b0['define'](_0xb92c('0xc'),attributes,{'tableName':_0xb92c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x295d=['../../config/logger','api','bluebird','request-promise','path','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','util'];(function(_0x3d291c,_0x47ff16){var _0x32498d=function(_0x3613fd){while(--_0x3613fd){_0x3d291c['push'](_0x3d291c['shift']());}};_0x32498d(++_0x47ff16);}(_0x295d,0x8e));var _0xd295=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x295d[_0x56482c];return _0x5aae7a;};'use strict';var _=require('lodash');var util=require(_0xd295('0x0'));var logger=require(_0xd295('0x1'))(_0xd295('0x2'));var moment=require('moment');var BPromise=require(_0xd295('0x3'));var rp=require(_0xd295('0x4'));var fs=require('fs');var path=require(_0xd295('0x5'));var rimraf=require(_0xd295('0x6'));var config=require('../../config/environment');var attributes=require(_0xd295('0x7'));var integrations=require(_0xd295('0x8'));module[_0xd295('0x9')]=function(_0x8b9b49,_0x2175fc){return _0x8b9b49[_0xd295('0xa')](_0xd295('0xb'),attributes,{'tableName':_0xd295('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92adfa9..df84131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a43=['then','ShowZendeskAccount','ZendeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','catch','GetZendeskAccount','options','raw','where','attributes','limit','include','map','model'];(function(_0x20949b,_0x46490e){var _0x35d9fa=function(_0x36ec29){while(--_0x36ec29){_0x20949b['push'](_0x20949b['shift']());}};_0x35d9fa(++_0x46490e);}(_0x5a43,0xd0));var _0x35a4=function(_0x49a4bf,_0x107de2){_0x49a4bf=_0x49a4bf-0x0;var _0x18adfd=_0x5a43[_0x49a4bf];return _0x18adfd;};'use strict';var _=require(_0x35a4('0x0'));var util=require(_0x35a4('0x1'));var moment=require(_0x35a4('0x2'));var BPromise=require(_0x35a4('0x3'));var rs=require(_0x35a4('0x4'));var fs=require('fs');var Redis=require(_0x35a4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x35a4('0x6'))('rpc');var config=require(_0x35a4('0x7'));var jayson=require(_0x35a4('0x8'));var client=jayson[_0x35a4('0x9')][_0x35a4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33f4a0,_0x816bf7,_0x3320ba){return new BPromise(function(_0x3d8b5e,_0x3e1a02){return client[_0x35a4('0xb')](_0x33f4a0,_0x3320ba)['then'](function(_0x571392){logger[_0x35a4('0xc')]('ZendeskAccount,\x20%s,\x20%s',_0x816bf7,_0x35a4('0xd'));logger[_0x35a4('0xe')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x816bf7,_0x35a4('0xd'),JSON['stringify'](_0x571392));if(_0x571392[_0x35a4('0xf')]){if(_0x571392[_0x35a4('0xf')][_0x35a4('0x10')]===0x1f4){logger[_0x35a4('0xf')](_0x35a4('0x11'),_0x816bf7,_0x571392[_0x35a4('0xf')]['message']);return _0x3e1a02(_0x571392[_0x35a4('0xf')][_0x35a4('0x12')]);}logger['error'](_0x35a4('0x11'),_0x816bf7,_0x571392[_0x35a4('0xf')][_0x35a4('0x12')]);return _0x3d8b5e(_0x571392[_0x35a4('0xf')]['message']);}else{logger['info'](_0x35a4('0x11'),_0x816bf7,_0x35a4('0xd'));_0x3d8b5e(_0x571392[_0x35a4('0x13')][_0x35a4('0x12')]);}})[_0x35a4('0x14')](function(_0x123c7a){logger[_0x35a4('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x816bf7,_0x123c7a);_0x3e1a02(_0x123c7a);});});}exports[_0x35a4('0x15')]=function(_0x2f2b5c){var _0x4cea70=this;return new Promise(function(_0x1d180e,_0x3dd48c){return db['ZendeskAccount']['findAll']({'raw':_0x2f2b5c[_0x35a4('0x16')]?_0x2f2b5c[_0x35a4('0x16')][_0x35a4('0x17')]===undefined?!![]:![]:!![],'where':_0x2f2b5c[_0x35a4('0x16')]?_0x2f2b5c[_0x35a4('0x16')][_0x35a4('0x18')]||null:null,'attributes':_0x2f2b5c[_0x35a4('0x16')]?_0x2f2b5c[_0x35a4('0x16')][_0x35a4('0x19')]||null:null,'limit':_0x2f2b5c[_0x35a4('0x16')]?_0x2f2b5c[_0x35a4('0x16')][_0x35a4('0x1a')]||null:null,'include':_0x2f2b5c['options']?_0x2f2b5c[_0x35a4('0x16')][_0x35a4('0x1b')]?_['map'](_0x2f2b5c['options']['include'],function(_0x5167df){return{'model':db[_0x5167df['model']],'as':_0x5167df['as'],'attributes':_0x5167df[_0x35a4('0x19')],'include':_0x5167df['include']?_[_0x35a4('0x1c')](_0x5167df[_0x35a4('0x1b')],function(_0xf876d0){return{'model':db[_0xf876d0[_0x35a4('0x1d')]],'as':_0xf876d0['as'],'attributes':_0xf876d0['attributes'],'include':_0xf876d0['include']?_[_0x35a4('0x1c')](_0xf876d0[_0x35a4('0x1b')],function(_0x33692e){return{'model':db[_0x33692e[_0x35a4('0x1d')]],'as':_0x33692e['as'],'attributes':_0x33692e['attributes']};}):[]};}):[]};}):[]:[]})[_0x35a4('0x1e')](function(_0x431f37){logger[_0x35a4('0xc')]('GetZendeskAccount',_0x2f2b5c);logger['debug']('GetZendeskAccount',_0x2f2b5c,JSON['stringify'](_0x431f37));_0x1d180e(_0x431f37);})['catch'](function(_0x566221){logger[_0x35a4('0xf')]('GetZendeskAccount',_0x566221[_0x35a4('0x12')],_0x2f2b5c);_0x3dd48c(_0x4cea70[_0x35a4('0xf')](0x1f4,_0x566221[_0x35a4('0x12')]));});});};exports[_0x35a4('0x1f')]=function(_0x2e3b7d){var _0x925a03=this;return new Promise(function(_0x270251,_0x4c8752){return db[_0x35a4('0x20')][_0x35a4('0x21')]({'raw':_0x2e3b7d[_0x35a4('0x16')]?_0x2e3b7d['options'][_0x35a4('0x17')]===undefined?!![]:![]:!![],'where':_0x2e3b7d[_0x35a4('0x16')]?_0x2e3b7d[_0x35a4('0x16')][_0x35a4('0x18')]||null:null,'attributes':_0x2e3b7d[_0x35a4('0x16')]?_0x2e3b7d[_0x35a4('0x16')][_0x35a4('0x19')]||null:null,'include':_0x2e3b7d[_0x35a4('0x16')]?_0x2e3b7d[_0x35a4('0x16')][_0x35a4('0x1b')]?_[_0x35a4('0x1c')](_0x2e3b7d[_0x35a4('0x16')]['include'],function(_0x5134d3){return{'model':db[_0x5134d3[_0x35a4('0x1d')]],'as':_0x5134d3['as'],'attributes':_0x5134d3['attributes'],'include':_0x5134d3[_0x35a4('0x1b')]?_[_0x35a4('0x1c')](_0x5134d3[_0x35a4('0x1b')],function(_0x290e7d){return{'model':db[_0x290e7d[_0x35a4('0x1d')]],'as':_0x290e7d['as'],'attributes':_0x290e7d[_0x35a4('0x19')],'include':_0x290e7d['include']?_[_0x35a4('0x1c')](_0x290e7d[_0x35a4('0x1b')],function(_0x53b3f6){return{'model':db[_0x53b3f6[_0x35a4('0x1d')]],'as':_0x53b3f6['as'],'attributes':_0x53b3f6[_0x35a4('0x19')]};}):[]};}):[]};}):[]:[]})[_0x35a4('0x1e')](function(_0x389643){logger[_0x35a4('0xc')]('ShowZendeskAccount',_0x2e3b7d);logger[_0x35a4('0xe')](_0x35a4('0x1f'),_0x2e3b7d,JSON['stringify'](_0x389643));_0x270251(_0x389643);})['catch'](function(_0x4105ae){logger[_0x35a4('0xf')](_0x35a4('0x1f'),_0x4105ae[_0x35a4('0x12')],_0x2e3b7d);_0x4c8752(_0x925a03[_0x35a4('0xf')](0x1f4,_0x4105ae[_0x35a4('0x12')]));});});};
\ No newline at end of file
+var _0xb144=['ZendeskAccount','findAll','options','attributes','include','map','debug','find','where','model','ShowZendeskAccount','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZendeskAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb144,0x146));var _0x4b14=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb144[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x4b14('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4b14('0x1'));var rs=require(_0x4b14('0x2'));var fs=require('fs');var Redis=require(_0x4b14('0x3'));var db=require(_0x4b14('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4b14('0x5'))(_0x4b14('0x6'));var config=require(_0x4b14('0x7'));var jayson=require(_0x4b14('0x8'));var client=jayson[_0x4b14('0x9')][_0x4b14('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51af77,_0x4139fd,_0x6e6817){return new BPromise(function(_0x543e97,_0x231550){return client[_0x4b14('0xb')](_0x51af77,_0x6e6817)[_0x4b14('0xc')](function(_0x3bcdda){logger[_0x4b14('0xd')](_0x4b14('0xe'),_0x4139fd,_0x4b14('0xf'));logger['debug'](_0x4b14('0x10'),_0x4139fd,_0x4b14('0xf'),JSON[_0x4b14('0x11')](_0x3bcdda));if(_0x3bcdda[_0x4b14('0x12')]){if(_0x3bcdda[_0x4b14('0x12')][_0x4b14('0x13')]===0x1f4){logger[_0x4b14('0x12')](_0x4b14('0xe'),_0x4139fd,_0x3bcdda['error']['message']);return _0x231550(_0x3bcdda[_0x4b14('0x12')][_0x4b14('0x14')]);}logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x4139fd,_0x3bcdda['error'][_0x4b14('0x14')]);return _0x543e97(_0x3bcdda['error'][_0x4b14('0x14')]);}else{logger['info'](_0x4b14('0xe'),_0x4139fd,_0x4b14('0xf'));_0x543e97(_0x3bcdda[_0x4b14('0x15')][_0x4b14('0x14')]);}})[_0x4b14('0x16')](function(_0x12dafc){logger[_0x4b14('0x12')](_0x4b14('0xe'),_0x4139fd,_0x12dafc);_0x231550(_0x12dafc);});});}exports[_0x4b14('0x17')]=function(_0x50fd0d){var _0x220d03=this;return new Promise(function(_0x417b98,_0x12f04c){return db[_0x4b14('0x18')][_0x4b14('0x19')]({'raw':_0x50fd0d[_0x4b14('0x1a')]?_0x50fd0d['options']['raw']===undefined?!![]:![]:!![],'where':_0x50fd0d[_0x4b14('0x1a')]?_0x50fd0d[_0x4b14('0x1a')]['where']||null:null,'attributes':_0x50fd0d[_0x4b14('0x1a')]?_0x50fd0d[_0x4b14('0x1a')][_0x4b14('0x1b')]||null:null,'limit':_0x50fd0d[_0x4b14('0x1a')]?_0x50fd0d[_0x4b14('0x1a')]['limit']||null:null,'include':_0x50fd0d[_0x4b14('0x1a')]?_0x50fd0d[_0x4b14('0x1a')][_0x4b14('0x1c')]?_[_0x4b14('0x1d')](_0x50fd0d['options'][_0x4b14('0x1c')],function(_0x456a8c){return{'model':db[_0x456a8c['model']],'as':_0x456a8c['as'],'attributes':_0x456a8c[_0x4b14('0x1b')],'include':_0x456a8c[_0x4b14('0x1c')]?_[_0x4b14('0x1d')](_0x456a8c[_0x4b14('0x1c')],function(_0x525206){return{'model':db[_0x525206['model']],'as':_0x525206['as'],'attributes':_0x525206[_0x4b14('0x1b')],'include':_0x525206[_0x4b14('0x1c')]?_[_0x4b14('0x1d')](_0x525206[_0x4b14('0x1c')],function(_0xe963fb){return{'model':db[_0xe963fb['model']],'as':_0xe963fb['as'],'attributes':_0xe963fb['attributes']};}):[]};}):[]};}):[]:[]})[_0x4b14('0xc')](function(_0x420b02){logger[_0x4b14('0xd')](_0x4b14('0x17'),_0x50fd0d);logger[_0x4b14('0x1e')](_0x4b14('0x17'),_0x50fd0d,JSON[_0x4b14('0x11')](_0x420b02));_0x417b98(_0x420b02);})['catch'](function(_0x4b26ae){logger[_0x4b14('0x12')]('GetZendeskAccount',_0x4b26ae[_0x4b14('0x14')],_0x50fd0d);_0x12f04c(_0x220d03['error'](0x1f4,_0x4b26ae[_0x4b14('0x14')]));});});};exports['ShowZendeskAccount']=function(_0x113032){var _0x305d5e=this;return new Promise(function(_0x4135d8,_0x2ee7cc){return db['ZendeskAccount'][_0x4b14('0x1f')]({'raw':_0x113032[_0x4b14('0x1a')]?_0x113032[_0x4b14('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x113032['options']?_0x113032[_0x4b14('0x1a')][_0x4b14('0x20')]||null:null,'attributes':_0x113032[_0x4b14('0x1a')]?_0x113032['options'][_0x4b14('0x1b')]||null:null,'include':_0x113032[_0x4b14('0x1a')]?_0x113032['options']['include']?_[_0x4b14('0x1d')](_0x113032[_0x4b14('0x1a')][_0x4b14('0x1c')],function(_0x104c96){return{'model':db[_0x104c96[_0x4b14('0x21')]],'as':_0x104c96['as'],'attributes':_0x104c96['attributes'],'include':_0x104c96['include']?_[_0x4b14('0x1d')](_0x104c96['include'],function(_0x317a1c){return{'model':db[_0x317a1c[_0x4b14('0x21')]],'as':_0x317a1c['as'],'attributes':_0x317a1c['attributes'],'include':_0x317a1c['include']?_['map'](_0x317a1c[_0x4b14('0x1c')],function(_0x2e0f11){return{'model':db[_0x2e0f11[_0x4b14('0x21')]],'as':_0x2e0f11['as'],'attributes':_0x2e0f11[_0x4b14('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4b14('0xc')](function(_0x1a3c90){logger[_0x4b14('0xd')](_0x4b14('0x22'),_0x113032);logger[_0x4b14('0x1e')](_0x4b14('0x22'),_0x113032,JSON[_0x4b14('0x11')](_0x1a3c90));_0x4135d8(_0x1a3c90);})[_0x4b14('0x16')](function(_0x4f8bef){logger[_0x4b14('0x12')](_0x4b14('0x22'),_0x4f8bef[_0x4b14('0x14')],_0x113032);_0x2ee7cc(_0x305d5e[_0x4b14('0x12')](0x1f4,_0x4f8bef[_0x4b14('0x14')]));});});};
\ No newline at end of file
index 558f7b5..efa9bd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects'];(function(_0x2e16d8,_0x1110ff){var _0xbb0a07=function(_0x447b90){while(--_0x447b90){_0x2e16d8['push'](_0x2e16d8['shift']());}};_0xbb0a07(++_0x1110ff);}(_0x4483,0x1a3));var _0x3448=function(_0x438aad,_0x1d2e78){_0x438aad=_0x438aad-0x0;var _0x15ab0c=_0x4483[_0x438aad];return _0x15ab0c;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id/fields',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0x9')](_0x3448('0xf'),auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x9')](_0x3448('0x11'),auth[_0x3448('0xa')](),controller[_0x3448('0x12')]);router[_0x3448('0x9')]('/:id/tags',auth['isAuthenticated'](),controller[_0x3448('0x13')]);router[_0x3448('0x14')]('/',auth['isAuthenticated'](),controller[_0x3448('0x15')]);router[_0x3448('0x14')](_0x3448('0x16'),auth['isAuthenticated'](),controller[_0x3448('0x17')]);router[_0x3448('0x18')]('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0x19')]);router[_0x3448('0x1a')]('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0x1b')]);module[_0x3448('0x1c')]=router;
\ No newline at end of file
+var _0x757a=['index','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','post','setTags','put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get'];(function(_0x4d2869,_0x32c524){var _0x122f65=function(_0x5d646c){while(--_0x5d646c){_0x4d2869['push'](_0x4d2869['shift']());}};_0x122f65(++_0x32c524);}(_0x757a,0xde));var _0xa757=function(_0x2e7142,_0x7179f8){_0x2e7142=_0x2e7142-0x0;var _0x1680e8=_0x757a[_0x2e7142];return _0x1680e8;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['getFields']);router[_0xa757('0x7')](_0xa757('0xc'),auth[_0xa757('0x9')](),controller[_0xa757('0xd')]);router[_0xa757('0x7')](_0xa757('0xe'),auth[_0xa757('0x9')](),controller['getDescriptions']);router['get']('/:id/tags',auth['isAuthenticated'](),controller['getTags']);router[_0xa757('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa757('0xf')]('/:id/tags',auth['isAuthenticated'](),controller[_0xa757('0x10')]);router[_0xa757('0x11')](_0xa757('0x12'),auth[_0xa757('0x9')](),controller[_0xa757('0x13')]);router[_0xa757('0x14')](_0xa757('0x12'),auth[_0xa757('0x9')](),controller[_0xa757('0x15')]);module[_0xa757('0x16')]=router;
\ No newline at end of file
index ce01a93..03c5d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0a3=['sequelize','exports','STRING'];(function(_0x6f24f9,_0x14049c){var _0x3d36d7=function(_0x4c54bd){while(--_0x4c54bd){_0x6f24f9['push'](_0x6f24f9['shift']());}};_0x3d36d7(++_0x14049c);}(_0xe0a3,0x195));var _0x3e0a=function(_0x24a88e,_0x22a0b8){_0x24a88e=_0x24a88e-0x0;var _0x232cbb=_0xe0a3[_0x24a88e];return _0x232cbb;};'use strict';var Sequelize=require(_0x3e0a('0x0'));module[_0x3e0a('0x1')]={'name':{'type':Sequelize[_0x3e0a('0x2')]},'description':{'type':Sequelize[_0x3e0a('0x2')]}};
\ No newline at end of file
+var _0xc659=['sequelize','exports','STRING'];(function(_0x6fc198,_0x1d245c){var _0x3912e0=function(_0x5392e4){while(--_0x5392e4){_0x6fc198['push'](_0x6fc198['shift']());}};_0x3912e0(++_0x1d245c);}(_0xc659,0x72));var _0x9c65=function(_0x368dc9,_0x3eaeb3){_0x368dc9=_0x368dc9-0x0;var _0x11f55d=_0xc659[_0x368dc9];return _0x11f55d;};'use strict';var Sequelize=require(_0x9c65('0x0'));module[_0x9c65('0x1')]={'name':{'type':Sequelize[_0x9c65('0x2')]},'description':{'type':Sequelize[_0x9c65('0x2')]}};
\ No newline at end of file
index 25a32b6..52819b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15c5=['catch','show','params','rawAttributes','find','create','body','getFields','findOne','keys','ZendeskField','order','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','ZendeskConfiguration','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows'];(function(_0x3e0791,_0xdd06cf){var _0xe3604e=function(_0x3a3f8){while(--_0x3a3f8){_0x3e0791['push'](_0x3e0791['shift']());}};_0xe3604e(++_0xdd06cf);}(_0x15c5,0x69));var _0x515c=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x15c5[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x515c('0x0'));var rimraf=require(_0x515c('0x1'));var zipdir=require(_0x515c('0x2'));var jsonpatch=require(_0x515c('0x3'));var rp=require(_0x515c('0x4'));var moment=require(_0x515c('0x5'));var BPromise=require(_0x515c('0x6'));var Mustache=require(_0x515c('0x7'));var util=require(_0x515c('0x8'));var path=require('path');var sox=require(_0x515c('0x9'));var csv=require('to-csv');var ejs=require(_0x515c('0xa'));var fs=require('fs');var fs_extra=require(_0x515c('0xb'));var _=require(_0x515c('0xc'));var squel=require(_0x515c('0xd'));var crypto=require(_0x515c('0xe'));var jsforce=require(_0x515c('0xf'));var deskjs=require(_0x515c('0x10'));var toCsv=require(_0x515c('0x11'));var querystring=require(_0x515c('0x12'));var Papa=require(_0x515c('0x13'));var Redis=require(_0x515c('0x14'));var authService=require(_0x515c('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x515c('0x16'));var logger=require(_0x515c('0x17'))(_0x515c('0x18'));var utils=require(_0x515c('0x19'));var config=require(_0x515c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x515c('0x1b'))['db'];function respondWithStatusCode(_0x187d19,_0x5adfc5){_0x5adfc5=_0x5adfc5||0xcc;return function(_0x5f3eb3){if(_0x5f3eb3){return _0x187d19[_0x515c('0x1c')](_0x5adfc5);}return _0x187d19[_0x515c('0x1d')](_0x5adfc5)[_0x515c('0x1e')]();};}function respondWithResult(_0x26f4a5,_0x148955){_0x148955=_0x148955||0xc8;return function(_0x15d850){if(_0x15d850){return _0x26f4a5[_0x515c('0x1d')](_0x148955)[_0x515c('0x1f')](_0x15d850);}};}function respondWithFilteredResult(_0x31aeeb,_0x407fbd){return function(_0x452dec){if(_0x452dec){var _0x54a543=typeof _0x407fbd[_0x515c('0x20')]==='undefined'&&typeof _0x407fbd[_0x515c('0x21')]===_0x515c('0x22');var _0x1a0200=_0x452dec[_0x515c('0x23')];var _0x20464f=_0x54a543?0x0:_0x407fbd[_0x515c('0x20')];var _0x9de7b8=_0x54a543?_0x452dec[_0x515c('0x23')]:_0x407fbd[_0x515c('0x20')]+_0x407fbd[_0x515c('0x21')];var _0x1ee5fe;if(_0x9de7b8>=_0x1a0200){_0x9de7b8=_0x1a0200;_0x1ee5fe=0xc8;}else{_0x1ee5fe=0xce;}_0x31aeeb[_0x515c('0x1d')](_0x1ee5fe);return _0x31aeeb[_0x515c('0x24')](_0x515c('0x25'),_0x20464f+'-'+_0x9de7b8+'/'+_0x1a0200)[_0x515c('0x1f')](_0x452dec);}return null;};}function patchUpdates(_0x5e5ec5){return function(_0x1953f1){try{jsonpatch['apply'](_0x1953f1,_0x5e5ec5,!![]);}catch(_0x4b2df4){return BPromise[_0x515c('0x26')](_0x4b2df4);}return _0x1953f1[_0x515c('0x27')]();};}function saveUpdates(_0x53ecdc,_0x180b22){return function(_0x2a3ba5){if(_0x2a3ba5){return _0x2a3ba5[_0x515c('0x28')](_0x53ecdc)[_0x515c('0x29')](function(_0x4fd468){return _0x4fd468;});}return null;};}function removeEntity(_0x2c1626,_0x3b279d){return function(_0x498253){if(_0x498253){return _0x498253['destroy']()[_0x515c('0x29')](function(){_0x2c1626[_0x515c('0x1d')](0xcc)[_0x515c('0x1e')]();});}};}function handleEntityNotFound(_0x126a9a,_0x589f2b){return function(_0x1ce5b5){if(!_0x1ce5b5){_0x126a9a[_0x515c('0x1c')](0x194);}return _0x1ce5b5;};}function handleError(_0x2434e5,_0x44bd97){_0x44bd97=_0x44bd97||0x1f4;return function(_0xa30685){logger[_0x515c('0x2a')](_0xa30685[_0x515c('0x2b')]);if(_0xa30685['name']){delete _0xa30685[_0x515c('0x2c')];}_0x2434e5[_0x515c('0x1d')](_0x44bd97)[_0x515c('0x2d')](_0xa30685);};}exports[_0x515c('0x2e')]=function(_0x1866cd,_0x570ad2){var _0x1e0755={},_0x376310={},_0x3cf2df={'count':0x0,'rows':[]};var _0x2acc45=_[_0x515c('0x2f')](db[_0x515c('0x30')]['rawAttributes'],function(_0x599783){return{'name':_0x599783[_0x515c('0x31')],'type':_0x599783[_0x515c('0x32')][_0x515c('0x33')]};});_0x376310[_0x515c('0x34')]=_[_0x515c('0x2f')](_0x2acc45,_0x515c('0x2c'));_0x376310[_0x515c('0x35')]=_['keys'](_0x1866cd[_0x515c('0x35')]);_0x376310[_0x515c('0x36')]=_[_0x515c('0x37')](_0x376310['model'],_0x376310[_0x515c('0x35')]);_0x1e0755['attributes']=_[_0x515c('0x37')](_0x376310[_0x515c('0x34')],qs[_0x515c('0x38')](_0x1866cd[_0x515c('0x35')]['fields']));_0x1e0755[_0x515c('0x39')]=_0x1e0755['attributes'][_0x515c('0x3a')]?_0x1e0755[_0x515c('0x39')]:_0x376310[_0x515c('0x34')];if(!_0x1866cd[_0x515c('0x35')][_0x515c('0x3b')](_0x515c('0x3c'))){_0x1e0755['limit']=qs[_0x515c('0x21')](_0x1866cd[_0x515c('0x35')]['limit']);_0x1e0755[_0x515c('0x20')]=qs[_0x515c('0x20')](_0x1866cd[_0x515c('0x35')][_0x515c('0x20')]);}_0x1e0755['order']=qs[_0x515c('0x3d')](_0x1866cd[_0x515c('0x35')][_0x515c('0x3d')]);_0x1e0755[_0x515c('0x3e')]=qs[_0x515c('0x36')](_[_0x515c('0x3f')](_0x1866cd[_0x515c('0x35')],_0x376310[_0x515c('0x36')]),_0x2acc45);if(_0x1866cd[_0x515c('0x35')][_0x515c('0x40')]){_0x1e0755[_0x515c('0x3e')]=_[_0x515c('0x41')](_0x1e0755[_0x515c('0x3e')],{'$or':_[_0x515c('0x2f')](_0x2acc45,function(_0x3e42df){if(_0x3e42df['type']!==_0x515c('0x42')){var _0x511dc0={};_0x511dc0[_0x3e42df[_0x515c('0x2c')]]={'$like':'%'+_0x1866cd[_0x515c('0x35')][_0x515c('0x40')]+'%'};return _0x511dc0;}})});}_0x1e0755=_[_0x515c('0x41')]({},_0x1e0755,_0x1866cd[_0x515c('0x43')]);var _0x30d164={'where':_0x1e0755[_0x515c('0x3e')]};return db[_0x515c('0x30')][_0x515c('0x23')](_0x30d164)[_0x515c('0x29')](function(_0x46560b){_0x3cf2df['count']=_0x46560b;if(_0x1866cd[_0x515c('0x35')][_0x515c('0x44')]){_0x1e0755[_0x515c('0x45')]=[{'all':!![]}];}return db[_0x515c('0x30')]['findAll'](_0x1e0755);})[_0x515c('0x29')](function(_0x33a519){_0x3cf2df[_0x515c('0x46')]=_0x33a519;return _0x3cf2df;})[_0x515c('0x29')](respondWithFilteredResult(_0x570ad2,_0x1e0755))[_0x515c('0x47')](handleError(_0x570ad2,null));};exports[_0x515c('0x48')]=function(_0x21bbfe,_0x208113){var _0xca760c={'raw':![],'where':{'id':_0x21bbfe[_0x515c('0x49')]['id']}},_0x48dd77={};_0x48dd77[_0x515c('0x34')]=_['keys'](db['ZendeskConfiguration'][_0x515c('0x4a')]);_0x48dd77[_0x515c('0x35')]=_['keys'](_0x21bbfe[_0x515c('0x35')]);_0x48dd77['filters']=_['intersection'](_0x48dd77['model'],_0x48dd77['query']);_0xca760c[_0x515c('0x39')]=_[_0x515c('0x37')](_0x48dd77[_0x515c('0x34')],qs['fields'](_0x21bbfe[_0x515c('0x35')][_0x515c('0x38')]));_0xca760c[_0x515c('0x39')]=_0xca760c[_0x515c('0x39')][_0x515c('0x3a')]?_0xca760c[_0x515c('0x39')]:_0x48dd77['model'];if(_0x21bbfe[_0x515c('0x35')][_0x515c('0x44')]){_0xca760c[_0x515c('0x45')]=[{'all':!![]}];}_0xca760c=_[_0x515c('0x41')]({},_0xca760c,_0x21bbfe[_0x515c('0x43')]);return db[_0x515c('0x30')][_0x515c('0x4b')](_0xca760c)[_0x515c('0x29')](handleEntityNotFound(_0x208113,null))[_0x515c('0x29')](respondWithResult(_0x208113,null))['catch'](handleError(_0x208113,null));};exports[_0x515c('0x4c')]=function(_0x5eb058,_0x462298){return db['ZendeskConfiguration'][_0x515c('0x4c')](_0x5eb058['body'],{})[_0x515c('0x29')](respondWithResult(_0x462298,0xc9))[_0x515c('0x47')](handleError(_0x462298,null));};exports[_0x515c('0x28')]=function(_0x102890,_0x2d74d0){if(_0x102890[_0x515c('0x4d')]['id']){delete _0x102890[_0x515c('0x4d')]['id'];}return db[_0x515c('0x30')]['find']({'where':{'id':_0x102890[_0x515c('0x49')]['id']}})['then'](handleEntityNotFound(_0x2d74d0,null))[_0x515c('0x29')](saveUpdates(_0x102890[_0x515c('0x4d')],null))[_0x515c('0x29')](respondWithResult(_0x2d74d0,null))[_0x515c('0x47')](handleError(_0x2d74d0,null));};exports['destroy']=function(_0x12c873,_0x16b600){return db[_0x515c('0x30')][_0x515c('0x4b')]({'where':{'id':_0x12c873['params']['id']}})[_0x515c('0x29')](handleEntityNotFound(_0x16b600,null))['then'](removeEntity(_0x16b600,null))[_0x515c('0x47')](handleError(_0x16b600,null));};exports[_0x515c('0x4e')]=function(_0x4c0511,_0x229b27,_0x1ae55a){var _0x5d83be={};var _0x8a897={};var _0x27ec30;var _0x852553;return db['ZendeskConfiguration'][_0x515c('0x4f')]({'where':{'id':_0x4c0511['params']['id']}})['then'](handleEntityNotFound(_0x229b27,null))['then'](function(_0x36cd27){if(_0x36cd27){_0x27ec30=_0x36cd27;_0x8a897['model']=_[_0x515c('0x50')](db[_0x515c('0x51')][_0x515c('0x4a')]);_0x8a897['query']=_['keys'](_0x4c0511[_0x515c('0x35')]);_0x8a897[_0x515c('0x36')]=_[_0x515c('0x37')](_0x8a897[_0x515c('0x34')],_0x8a897[_0x515c('0x35')]);_0x5d83be['attributes']=_[_0x515c('0x37')](_0x8a897[_0x515c('0x34')],qs[_0x515c('0x38')](_0x4c0511[_0x515c('0x35')][_0x515c('0x38')]));_0x5d83be[_0x515c('0x39')]=_0x5d83be[_0x515c('0x39')][_0x515c('0x3a')]?_0x5d83be[_0x515c('0x39')]:_0x8a897['model'];_0x5d83be[_0x515c('0x52')]=qs[_0x515c('0x3d')](_0x4c0511[_0x515c('0x35')]['sort']);_0x5d83be[_0x515c('0x3e')]=qs['filters'](_[_0x515c('0x3f')](_0x4c0511[_0x515c('0x35')],_0x8a897[_0x515c('0x36')]));if(_0x4c0511[_0x515c('0x35')]['filter']){_0x5d83be[_0x515c('0x3e')]=_[_0x515c('0x41')](_0x5d83be[_0x515c('0x3e')],{'$or':_[_0x515c('0x2f')](_0x5d83be[_0x515c('0x39')],function(_0x3fd042){var _0x5720af={};_0x5720af[_0x3fd042]={'$like':'%'+_0x4c0511[_0x515c('0x35')]['filter']+'%'};return _0x5720af;})});}_0x5d83be=_[_0x515c('0x41')]({},_0x5d83be,_0x4c0511[_0x515c('0x43')]);return _0x27ec30[_0x515c('0x4e')](_0x5d83be);}})[_0x515c('0x29')](function(_0x59219a){if(_0x59219a){_0x852553=_0x59219a[_0x515c('0x3a')];if(!_0x4c0511['query'][_0x515c('0x3b')](_0x515c('0x3c'))){_0x5d83be[_0x515c('0x21')]=qs[_0x515c('0x21')](_0x4c0511['query'][_0x515c('0x21')]);_0x5d83be['offset']=qs['offset'](_0x4c0511[_0x515c('0x35')]['offset']);}return _0x27ec30['getFields'](_0x5d83be);}})[_0x515c('0x29')](function(_0x40a52d){if(_0x40a52d){return _0x40a52d?{'count':_0x852553,'rows':_0x40a52d}:null;}})[_0x515c('0x29')](respondWithResult(_0x229b27,null))[_0x515c('0x47')](handleError(_0x229b27,null));};exports[_0x515c('0x53')]=function(_0x49fd71,_0x1502c1,_0x1a6810){var _0x4a3201={};var _0x1e3fbd={};var _0x1c5443;var _0x4e7421;return db[_0x515c('0x30')][_0x515c('0x4f')]({'where':{'id':_0x49fd71[_0x515c('0x49')]['id']}})[_0x515c('0x29')](handleEntityNotFound(_0x1502c1,null))[_0x515c('0x29')](function(_0x458c6){if(_0x458c6){_0x1c5443=_0x458c6;_0x1e3fbd[_0x515c('0x34')]=_['keys'](db['ZendeskField'][_0x515c('0x4a')]);_0x1e3fbd[_0x515c('0x35')]=_[_0x515c('0x50')](_0x49fd71[_0x515c('0x35')]);_0x1e3fbd[_0x515c('0x36')]=_[_0x515c('0x37')](_0x1e3fbd[_0x515c('0x34')],_0x1e3fbd['query']);_0x4a3201[_0x515c('0x39')]=_['intersection'](_0x1e3fbd['model'],qs[_0x515c('0x38')](_0x49fd71[_0x515c('0x35')][_0x515c('0x38')]));_0x4a3201['attributes']=_0x4a3201[_0x515c('0x39')][_0x515c('0x3a')]?_0x4a3201[_0x515c('0x39')]:_0x1e3fbd['model'];_0x4a3201[_0x515c('0x52')]=qs['sort'](_0x49fd71[_0x515c('0x35')][_0x515c('0x3d')]);_0x4a3201[_0x515c('0x3e')]=qs[_0x515c('0x36')](_[_0x515c('0x3f')](_0x49fd71[_0x515c('0x35')],_0x1e3fbd[_0x515c('0x36')]));if(_0x49fd71[_0x515c('0x35')][_0x515c('0x40')]){_0x4a3201['where']=_[_0x515c('0x41')](_0x4a3201['where'],{'$or':_[_0x515c('0x2f')](_0x4a3201[_0x515c('0x39')],function(_0x4f2ad3){var _0x1dc33d={};_0x1dc33d[_0x4f2ad3]={'$like':'%'+_0x49fd71['query']['filter']+'%'};return _0x1dc33d;})});}_0x4a3201=_[_0x515c('0x41')]({},_0x4a3201,_0x49fd71[_0x515c('0x43')]);return _0x1c5443[_0x515c('0x53')](_0x4a3201);}})['then'](function(_0x3c33d4){if(_0x3c33d4){_0x4e7421=_0x3c33d4['length'];if(!_0x49fd71[_0x515c('0x35')][_0x515c('0x3b')](_0x515c('0x3c'))){_0x4a3201[_0x515c('0x21')]=qs[_0x515c('0x21')](_0x49fd71['query'][_0x515c('0x21')]);_0x4a3201[_0x515c('0x20')]=qs[_0x515c('0x20')](_0x49fd71[_0x515c('0x35')]['offset']);}return _0x1c5443[_0x515c('0x53')](_0x4a3201);}})[_0x515c('0x29')](function(_0x290cb8){if(_0x290cb8){return _0x290cb8?{'count':_0x4e7421,'rows':_0x290cb8}:null;}})[_0x515c('0x29')](respondWithResult(_0x1502c1,null))[_0x515c('0x47')](handleError(_0x1502c1,null));};exports[_0x515c('0x54')]=function(_0x505355,_0x37f9e2,_0xf73025){var _0x37dd9f={};var _0x3ced22={};var _0x3579e9;var _0x3c590b;return db[_0x515c('0x30')]['findOne']({'where':{'id':_0x505355[_0x515c('0x49')]['id']}})[_0x515c('0x29')](handleEntityNotFound(_0x37f9e2,null))[_0x515c('0x29')](function(_0x3edf65){if(_0x3edf65){_0x3579e9=_0x3edf65;_0x3ced22[_0x515c('0x34')]=_[_0x515c('0x50')](db[_0x515c('0x51')][_0x515c('0x4a')]);_0x3ced22[_0x515c('0x35')]=_['keys'](_0x505355[_0x515c('0x35')]);_0x3ced22[_0x515c('0x36')]=_[_0x515c('0x37')](_0x3ced22['model'],_0x3ced22[_0x515c('0x35')]);_0x37dd9f[_0x515c('0x39')]=_[_0x515c('0x37')](_0x3ced22[_0x515c('0x34')],qs[_0x515c('0x38')](_0x505355[_0x515c('0x35')]['fields']));_0x37dd9f[_0x515c('0x39')]=_0x37dd9f['attributes']['length']?_0x37dd9f[_0x515c('0x39')]:_0x3ced22['model'];_0x37dd9f[_0x515c('0x52')]=qs['sort'](_0x505355['query'][_0x515c('0x3d')]);_0x37dd9f[_0x515c('0x3e')]=qs[_0x515c('0x36')](_[_0x515c('0x3f')](_0x505355['query'],_0x3ced22[_0x515c('0x36')]));if(_0x505355[_0x515c('0x35')]['filter']){_0x37dd9f['where']=_[_0x515c('0x41')](_0x37dd9f[_0x515c('0x3e')],{'$or':_['map'](_0x37dd9f[_0x515c('0x39')],function(_0x5062c5){var _0x586a03={};_0x586a03[_0x5062c5]={'$like':'%'+_0x505355[_0x515c('0x35')][_0x515c('0x40')]+'%'};return _0x586a03;})});}_0x37dd9f=_[_0x515c('0x41')]({},_0x37dd9f,_0x505355['options']);return _0x3579e9[_0x515c('0x54')](_0x37dd9f);}})[_0x515c('0x29')](function(_0x14a598){if(_0x14a598){_0x3c590b=_0x14a598[_0x515c('0x3a')];if(!_0x505355[_0x515c('0x35')][_0x515c('0x3b')](_0x515c('0x3c'))){_0x37dd9f[_0x515c('0x21')]=qs[_0x515c('0x21')](_0x505355[_0x515c('0x35')][_0x515c('0x21')]);_0x37dd9f[_0x515c('0x20')]=qs[_0x515c('0x20')](_0x505355['query'][_0x515c('0x20')]);}return _0x3579e9[_0x515c('0x54')](_0x37dd9f);}})['then'](function(_0x550ff6){if(_0x550ff6){return _0x550ff6?{'count':_0x3c590b,'rows':_0x550ff6}:null;}})[_0x515c('0x29')](respondWithResult(_0x37f9e2,null))[_0x515c('0x47')](handleError(_0x37f9e2,null));};exports[_0x515c('0x55')]=function(_0x432b35,_0x2eac29,_0x4b9477){var _0x1777be={};var _0x4eca96={};var _0x14c56a;var _0x1705d7;return db['ZendeskConfiguration'][_0x515c('0x4f')]({'where':{'id':_0x432b35[_0x515c('0x49')]['id']}})[_0x515c('0x29')](handleEntityNotFound(_0x2eac29,null))['then'](function(_0x542a46){if(_0x542a46){_0x14c56a=_0x542a46;_0x4eca96['model']=_[_0x515c('0x50')](db[_0x515c('0x56')][_0x515c('0x4a')]);_0x4eca96[_0x515c('0x35')]=_[_0x515c('0x50')](_0x432b35[_0x515c('0x35')]);_0x4eca96['filters']=_[_0x515c('0x37')](_0x4eca96[_0x515c('0x34')],_0x4eca96[_0x515c('0x35')]);_0x1777be['attributes']=_[_0x515c('0x37')](_0x4eca96[_0x515c('0x34')],qs[_0x515c('0x38')](_0x432b35['query']['fields']));_0x1777be['attributes']=_0x1777be[_0x515c('0x39')][_0x515c('0x3a')]?_0x1777be[_0x515c('0x39')]:_0x4eca96['model'];_0x1777be['order']=qs[_0x515c('0x3d')](_0x432b35[_0x515c('0x35')][_0x515c('0x3d')]);_0x1777be[_0x515c('0x3e')]=qs['filters'](_['pick'](_0x432b35[_0x515c('0x35')],_0x4eca96[_0x515c('0x36')]));if(_0x432b35[_0x515c('0x35')][_0x515c('0x40')]){_0x1777be[_0x515c('0x3e')]=_[_0x515c('0x41')](_0x1777be['where'],{'$or':_[_0x515c('0x2f')](_0x1777be['attributes'],function(_0x14527d){var _0x4bd206={};_0x4bd206[_0x14527d]={'$like':'%'+_0x432b35[_0x515c('0x35')][_0x515c('0x40')]+'%'};return _0x4bd206;})});}_0x1777be=_[_0x515c('0x41')]({},_0x1777be,_0x432b35[_0x515c('0x43')]);return _0x14c56a[_0x515c('0x55')](_0x1777be);}})[_0x515c('0x29')](function(_0x592e11){if(_0x592e11){_0x1705d7=_0x592e11[_0x515c('0x3a')];if(!_0x432b35[_0x515c('0x35')]['hasOwnProperty'](_0x515c('0x3c'))){_0x1777be['limit']=qs[_0x515c('0x21')](_0x432b35['query'][_0x515c('0x21')]);_0x1777be[_0x515c('0x20')]=qs[_0x515c('0x20')](_0x432b35[_0x515c('0x35')][_0x515c('0x20')]);}return _0x14c56a[_0x515c('0x55')](_0x1777be);}})[_0x515c('0x29')](function(_0x2c5936){if(_0x2c5936){return _0x2c5936?{'count':_0x1705d7,'rows':_0x2c5936}:null;}})[_0x515c('0x29')](respondWithResult(_0x2eac29,null))[_0x515c('0x47')](handleError(_0x2eac29,null));};exports[_0x515c('0x57')]=function(_0x4c5ae0,_0x213c6f,_0x30e737){if(_0x4c5ae0[_0x515c('0x4d')]['id']){delete _0x4c5ae0[_0x515c('0x4d')]['id'];}return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x4c5ae0[_0x515c('0x49')]['id']}})[_0x515c('0x29')](handleEntityNotFound(_0x213c6f,null))[_0x515c('0x29')](function(_0x168a22){if(_0x168a22){return _0x168a22[_0x515c('0x57')](_0x4c5ae0[_0x515c('0x4d')]['ids']||[]);}return null;})[_0x515c('0x29')](respondWithResult(_0x213c6f,null))[_0x515c('0x47')](handleError(_0x213c6f,null));};
\ No newline at end of file
+var _0x573b=['where','merge','filter','options','includeAll','include','rows','catch','show','params','length','find','create','body','getFields','findOne','ZendeskField','getSubjects','pick','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort'];(function(_0x1f62c3,_0x1ff95b){var _0x385c1c=function(_0x1db580){while(--_0x1db580){_0x1f62c3['push'](_0x1f62c3['shift']());}};_0x385c1c(++_0x1ff95b);}(_0x573b,0x68));var _0xb573=function(_0x1f802b,_0x2be1fd){_0x1f802b=_0x1f802b-0x0;var _0x4185b5=_0x573b[_0x1f802b];return _0x4185b5;};'use strict';var emlformat=require(_0xb573('0x0'));var rimraf=require(_0xb573('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb573('0x2'));var rp=require('request-promise');var moment=require(_0xb573('0x3'));var BPromise=require(_0xb573('0x4'));var Mustache=require(_0xb573('0x5'));var util=require(_0xb573('0x6'));var path=require(_0xb573('0x7'));var sox=require(_0xb573('0x8'));var csv=require(_0xb573('0x9'));var ejs=require(_0xb573('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb573('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb573('0xc'));var deskjs=require(_0xb573('0xd'));var toCsv=require(_0xb573('0x9'));var querystring=require('querystring');var Papa=require(_0xb573('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb573('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb573('0x10'));var utils=require('../../config/utils');var config=require(_0xb573('0x11'));var licenseUtil=require(_0xb573('0x12'));var db=require(_0xb573('0x13'))['db'];function respondWithStatusCode(_0x25645b,_0x51838a){_0x51838a=_0x51838a||0xcc;return function(_0x1d1a85){if(_0x1d1a85){return _0x25645b['sendStatus'](_0x51838a);}return _0x25645b['status'](_0x51838a)[_0xb573('0x14')]();};}function respondWithResult(_0x144e97,_0x419ea){_0x419ea=_0x419ea||0xc8;return function(_0x55b15e){if(_0x55b15e){return _0x144e97[_0xb573('0x15')](_0x419ea)[_0xb573('0x16')](_0x55b15e);}};}function respondWithFilteredResult(_0x3d8d04,_0x47971b){return function(_0x29d56f){if(_0x29d56f){var _0x26ee13=typeof _0x47971b[_0xb573('0x17')]==='undefined'&&typeof _0x47971b[_0xb573('0x18')]===_0xb573('0x19');var _0x4d3407=_0x29d56f[_0xb573('0x1a')];var _0x1b2ccc=_0x26ee13?0x0:_0x47971b[_0xb573('0x17')];var _0x2d4800=_0x26ee13?_0x29d56f[_0xb573('0x1a')]:_0x47971b['offset']+_0x47971b[_0xb573('0x18')];var _0x147af7;if(_0x2d4800>=_0x4d3407){_0x2d4800=_0x4d3407;_0x147af7=0xc8;}else{_0x147af7=0xce;}_0x3d8d04[_0xb573('0x15')](_0x147af7);return _0x3d8d04[_0xb573('0x1b')](_0xb573('0x1c'),_0x1b2ccc+'-'+_0x2d4800+'/'+_0x4d3407)[_0xb573('0x16')](_0x29d56f);}return null;};}function patchUpdates(_0x2e6691){return function(_0x45dc40){try{jsonpatch[_0xb573('0x1d')](_0x45dc40,_0x2e6691,!![]);}catch(_0x5b2eb8){return BPromise[_0xb573('0x1e')](_0x5b2eb8);}return _0x45dc40[_0xb573('0x1f')]();};}function saveUpdates(_0x4c0adb,_0x50a89a){return function(_0x13754d){if(_0x13754d){return _0x13754d['update'](_0x4c0adb)[_0xb573('0x20')](function(_0x54cf92){return _0x54cf92;});}return null;};}function removeEntity(_0x44149a,_0x2a890c){return function(_0x4da085){if(_0x4da085){return _0x4da085[_0xb573('0x21')]()['then'](function(){_0x44149a['status'](0xcc)[_0xb573('0x14')]();});}};}function handleEntityNotFound(_0x3ab48b,_0x23b9c8){return function(_0x1195c5){if(!_0x1195c5){_0x3ab48b[_0xb573('0x22')](0x194);}return _0x1195c5;};}function handleError(_0x4eef41,_0x1b3277){_0x1b3277=_0x1b3277||0x1f4;return function(_0x5a64b2){logger[_0xb573('0x23')](_0x5a64b2[_0xb573('0x24')]);if(_0x5a64b2[_0xb573('0x25')]){delete _0x5a64b2['name'];}_0x4eef41[_0xb573('0x15')](_0x1b3277)[_0xb573('0x26')](_0x5a64b2);};}exports['index']=function(_0x4b6002,_0x5926c2){var _0x6c841c={},_0x25adc7={},_0x395137={'count':0x0,'rows':[]};var _0x495cef=_[_0xb573('0x27')](db[_0xb573('0x28')][_0xb573('0x29')],function(_0x44eb34){return{'name':_0x44eb34[_0xb573('0x2a')],'type':_0x44eb34[_0xb573('0x2b')][_0xb573('0x2c')]};});_0x25adc7[_0xb573('0x2d')]=_[_0xb573('0x27')](_0x495cef,'name');_0x25adc7[_0xb573('0x2e')]=_[_0xb573('0x2f')](_0x4b6002[_0xb573('0x2e')]);_0x25adc7[_0xb573('0x30')]=_[_0xb573('0x31')](_0x25adc7['model'],_0x25adc7[_0xb573('0x2e')]);_0x6c841c[_0xb573('0x32')]=_['intersection'](_0x25adc7['model'],qs[_0xb573('0x33')](_0x4b6002[_0xb573('0x2e')]['fields']));_0x6c841c['attributes']=_0x6c841c['attributes']['length']?_0x6c841c[_0xb573('0x32')]:_0x25adc7[_0xb573('0x2d')];if(!_0x4b6002[_0xb573('0x2e')][_0xb573('0x34')](_0xb573('0x35'))){_0x6c841c[_0xb573('0x18')]=qs[_0xb573('0x18')](_0x4b6002[_0xb573('0x2e')][_0xb573('0x18')]);_0x6c841c[_0xb573('0x17')]=qs[_0xb573('0x17')](_0x4b6002[_0xb573('0x2e')]['offset']);}_0x6c841c[_0xb573('0x36')]=qs[_0xb573('0x37')](_0x4b6002[_0xb573('0x2e')][_0xb573('0x37')]);_0x6c841c[_0xb573('0x38')]=qs[_0xb573('0x30')](_['pick'](_0x4b6002[_0xb573('0x2e')],_0x25adc7[_0xb573('0x30')]),_0x495cef);if(_0x4b6002['query']['filter']){_0x6c841c[_0xb573('0x38')]=_[_0xb573('0x39')](_0x6c841c[_0xb573('0x38')],{'$or':_[_0xb573('0x27')](_0x495cef,function(_0x4c59f4){if(_0x4c59f4[_0xb573('0x2b')]!=='VIRTUAL'){var _0x4f4a63={};_0x4f4a63[_0x4c59f4['name']]={'$like':'%'+_0x4b6002[_0xb573('0x2e')][_0xb573('0x3a')]+'%'};return _0x4f4a63;}})});}_0x6c841c=_[_0xb573('0x39')]({},_0x6c841c,_0x4b6002[_0xb573('0x3b')]);var _0x425c74={'where':_0x6c841c[_0xb573('0x38')]};return db[_0xb573('0x28')][_0xb573('0x1a')](_0x425c74)['then'](function(_0x554db7){_0x395137[_0xb573('0x1a')]=_0x554db7;if(_0x4b6002['query'][_0xb573('0x3c')]){_0x6c841c[_0xb573('0x3d')]=[{'all':!![]}];}return db[_0xb573('0x28')]['findAll'](_0x6c841c);})[_0xb573('0x20')](function(_0x56a6f9){_0x395137[_0xb573('0x3e')]=_0x56a6f9;return _0x395137;})[_0xb573('0x20')](respondWithFilteredResult(_0x5926c2,_0x6c841c))[_0xb573('0x3f')](handleError(_0x5926c2,null));};exports[_0xb573('0x40')]=function(_0xfc6a5c,_0x48e6b0){var _0x550ae9={'raw':![],'where':{'id':_0xfc6a5c[_0xb573('0x41')]['id']}},_0x44b9a5={};_0x44b9a5[_0xb573('0x2d')]=_['keys'](db[_0xb573('0x28')][_0xb573('0x29')]);_0x44b9a5[_0xb573('0x2e')]=_[_0xb573('0x2f')](_0xfc6a5c[_0xb573('0x2e')]);_0x44b9a5[_0xb573('0x30')]=_[_0xb573('0x31')](_0x44b9a5[_0xb573('0x2d')],_0x44b9a5[_0xb573('0x2e')]);_0x550ae9['attributes']=_['intersection'](_0x44b9a5['model'],qs['fields'](_0xfc6a5c['query'][_0xb573('0x33')]));_0x550ae9[_0xb573('0x32')]=_0x550ae9[_0xb573('0x32')][_0xb573('0x42')]?_0x550ae9['attributes']:_0x44b9a5[_0xb573('0x2d')];if(_0xfc6a5c['query'][_0xb573('0x3c')]){_0x550ae9[_0xb573('0x3d')]=[{'all':!![]}];}_0x550ae9=_['merge']({},_0x550ae9,_0xfc6a5c[_0xb573('0x3b')]);return db[_0xb573('0x28')][_0xb573('0x43')](_0x550ae9)[_0xb573('0x20')](handleEntityNotFound(_0x48e6b0,null))[_0xb573('0x20')](respondWithResult(_0x48e6b0,null))['catch'](handleError(_0x48e6b0,null));};exports[_0xb573('0x44')]=function(_0x283ae2,_0x354a29){return db['ZendeskConfiguration'][_0xb573('0x44')](_0x283ae2['body'],{})['then'](respondWithResult(_0x354a29,0xc9))['catch'](handleError(_0x354a29,null));};exports['update']=function(_0x2c0c69,_0x2858c){if(_0x2c0c69[_0xb573('0x45')]['id']){delete _0x2c0c69['body']['id'];}return db[_0xb573('0x28')]['find']({'where':{'id':_0x2c0c69[_0xb573('0x41')]['id']}})[_0xb573('0x20')](handleEntityNotFound(_0x2858c,null))[_0xb573('0x20')](saveUpdates(_0x2c0c69[_0xb573('0x45')],null))[_0xb573('0x20')](respondWithResult(_0x2858c,null))[_0xb573('0x3f')](handleError(_0x2858c,null));};exports[_0xb573('0x21')]=function(_0x2bba81,_0x40a703){return db[_0xb573('0x28')][_0xb573('0x43')]({'where':{'id':_0x2bba81['params']['id']}})[_0xb573('0x20')](handleEntityNotFound(_0x40a703,null))[_0xb573('0x20')](removeEntity(_0x40a703,null))['catch'](handleError(_0x40a703,null));};exports[_0xb573('0x46')]=function(_0x567c91,_0x2021fc,_0x5e0534){var _0x3c4f97={};var _0x464b19={};var _0x4472a0;var _0x4e5cad;return db[_0xb573('0x28')][_0xb573('0x47')]({'where':{'id':_0x567c91[_0xb573('0x41')]['id']}})[_0xb573('0x20')](handleEntityNotFound(_0x2021fc,null))[_0xb573('0x20')](function(_0x295850){if(_0x295850){_0x4472a0=_0x295850;_0x464b19[_0xb573('0x2d')]=_[_0xb573('0x2f')](db[_0xb573('0x48')]['rawAttributes']);_0x464b19['query']=_['keys'](_0x567c91['query']);_0x464b19[_0xb573('0x30')]=_['intersection'](_0x464b19[_0xb573('0x2d')],_0x464b19[_0xb573('0x2e')]);_0x3c4f97[_0xb573('0x32')]=_['intersection'](_0x464b19[_0xb573('0x2d')],qs[_0xb573('0x33')](_0x567c91[_0xb573('0x2e')]['fields']));_0x3c4f97[_0xb573('0x32')]=_0x3c4f97[_0xb573('0x32')][_0xb573('0x42')]?_0x3c4f97[_0xb573('0x32')]:_0x464b19[_0xb573('0x2d')];_0x3c4f97[_0xb573('0x36')]=qs['sort'](_0x567c91[_0xb573('0x2e')][_0xb573('0x37')]);_0x3c4f97[_0xb573('0x38')]=qs[_0xb573('0x30')](_['pick'](_0x567c91[_0xb573('0x2e')],_0x464b19[_0xb573('0x30')]));if(_0x567c91[_0xb573('0x2e')][_0xb573('0x3a')]){_0x3c4f97['where']=_[_0xb573('0x39')](_0x3c4f97[_0xb573('0x38')],{'$or':_[_0xb573('0x27')](_0x3c4f97[_0xb573('0x32')],function(_0x1c8f3f){var _0x9c8b1b={};_0x9c8b1b[_0x1c8f3f]={'$like':'%'+_0x567c91['query'][_0xb573('0x3a')]+'%'};return _0x9c8b1b;})});}_0x3c4f97=_['merge']({},_0x3c4f97,_0x567c91[_0xb573('0x3b')]);return _0x4472a0[_0xb573('0x46')](_0x3c4f97);}})[_0xb573('0x20')](function(_0x4ebcae){if(_0x4ebcae){_0x4e5cad=_0x4ebcae[_0xb573('0x42')];if(!_0x567c91[_0xb573('0x2e')][_0xb573('0x34')](_0xb573('0x35'))){_0x3c4f97[_0xb573('0x18')]=qs['limit'](_0x567c91[_0xb573('0x2e')][_0xb573('0x18')]);_0x3c4f97['offset']=qs['offset'](_0x567c91['query'][_0xb573('0x17')]);}return _0x4472a0[_0xb573('0x46')](_0x3c4f97);}})[_0xb573('0x20')](function(_0x1b5005){if(_0x1b5005){return _0x1b5005?{'count':_0x4e5cad,'rows':_0x1b5005}:null;}})[_0xb573('0x20')](respondWithResult(_0x2021fc,null))[_0xb573('0x3f')](handleError(_0x2021fc,null));};exports[_0xb573('0x49')]=function(_0x4c6bd3,_0x3b1f7b,_0x1fb552){var _0x5f115f={};var _0x4b3b18={};var _0x4927f8;var _0x324da4;return db[_0xb573('0x28')][_0xb573('0x47')]({'where':{'id':_0x4c6bd3['params']['id']}})[_0xb573('0x20')](handleEntityNotFound(_0x3b1f7b,null))[_0xb573('0x20')](function(_0xe870ae){if(_0xe870ae){_0x4927f8=_0xe870ae;_0x4b3b18[_0xb573('0x2d')]=_[_0xb573('0x2f')](db[_0xb573('0x48')]['rawAttributes']);_0x4b3b18[_0xb573('0x2e')]=_[_0xb573('0x2f')](_0x4c6bd3[_0xb573('0x2e')]);_0x4b3b18[_0xb573('0x30')]=_[_0xb573('0x31')](_0x4b3b18['model'],_0x4b3b18[_0xb573('0x2e')]);_0x5f115f[_0xb573('0x32')]=_[_0xb573('0x31')](_0x4b3b18[_0xb573('0x2d')],qs[_0xb573('0x33')](_0x4c6bd3[_0xb573('0x2e')]['fields']));_0x5f115f[_0xb573('0x32')]=_0x5f115f[_0xb573('0x32')][_0xb573('0x42')]?_0x5f115f['attributes']:_0x4b3b18['model'];_0x5f115f[_0xb573('0x36')]=qs[_0xb573('0x37')](_0x4c6bd3[_0xb573('0x2e')][_0xb573('0x37')]);_0x5f115f[_0xb573('0x38')]=qs['filters'](_[_0xb573('0x4a')](_0x4c6bd3[_0xb573('0x2e')],_0x4b3b18[_0xb573('0x30')]));if(_0x4c6bd3[_0xb573('0x2e')][_0xb573('0x3a')]){_0x5f115f[_0xb573('0x38')]=_['merge'](_0x5f115f[_0xb573('0x38')],{'$or':_[_0xb573('0x27')](_0x5f115f[_0xb573('0x32')],function(_0x14864d){var _0x11bec4={};_0x11bec4[_0x14864d]={'$like':'%'+_0x4c6bd3['query'][_0xb573('0x3a')]+'%'};return _0x11bec4;})});}_0x5f115f=_[_0xb573('0x39')]({},_0x5f115f,_0x4c6bd3[_0xb573('0x3b')]);return _0x4927f8[_0xb573('0x49')](_0x5f115f);}})[_0xb573('0x20')](function(_0x147212){if(_0x147212){_0x324da4=_0x147212[_0xb573('0x42')];if(!_0x4c6bd3[_0xb573('0x2e')][_0xb573('0x34')](_0xb573('0x35'))){_0x5f115f[_0xb573('0x18')]=qs[_0xb573('0x18')](_0x4c6bd3['query'][_0xb573('0x18')]);_0x5f115f['offset']=qs[_0xb573('0x17')](_0x4c6bd3[_0xb573('0x2e')]['offset']);}return _0x4927f8[_0xb573('0x49')](_0x5f115f);}})[_0xb573('0x20')](function(_0x200cfa){if(_0x200cfa){return _0x200cfa?{'count':_0x324da4,'rows':_0x200cfa}:null;}})['then'](respondWithResult(_0x3b1f7b,null))['catch'](handleError(_0x3b1f7b,null));};exports[_0xb573('0x4b')]=function(_0x32ae10,_0x3aab0f,_0x240aea){var _0x33d55b={};var _0x467797={};var _0x104888;var _0x2b6b1a;return db[_0xb573('0x28')]['findOne']({'where':{'id':_0x32ae10[_0xb573('0x41')]['id']}})[_0xb573('0x20')](handleEntityNotFound(_0x3aab0f,null))['then'](function(_0x17a858){if(_0x17a858){_0x104888=_0x17a858;_0x467797[_0xb573('0x2d')]=_[_0xb573('0x2f')](db['ZendeskField'][_0xb573('0x29')]);_0x467797[_0xb573('0x2e')]=_[_0xb573('0x2f')](_0x32ae10[_0xb573('0x2e')]);_0x467797[_0xb573('0x30')]=_[_0xb573('0x31')](_0x467797[_0xb573('0x2d')],_0x467797[_0xb573('0x2e')]);_0x33d55b[_0xb573('0x32')]=_['intersection'](_0x467797[_0xb573('0x2d')],qs[_0xb573('0x33')](_0x32ae10[_0xb573('0x2e')][_0xb573('0x33')]));_0x33d55b['attributes']=_0x33d55b[_0xb573('0x32')]['length']?_0x33d55b[_0xb573('0x32')]:_0x467797[_0xb573('0x2d')];_0x33d55b[_0xb573('0x36')]=qs['sort'](_0x32ae10[_0xb573('0x2e')][_0xb573('0x37')]);_0x33d55b[_0xb573('0x38')]=qs['filters'](_[_0xb573('0x4a')](_0x32ae10[_0xb573('0x2e')],_0x467797['filters']));if(_0x32ae10[_0xb573('0x2e')][_0xb573('0x3a')]){_0x33d55b[_0xb573('0x38')]=_['merge'](_0x33d55b['where'],{'$or':_['map'](_0x33d55b[_0xb573('0x32')],function(_0xcf391d){var _0x430563={};_0x430563[_0xcf391d]={'$like':'%'+_0x32ae10[_0xb573('0x2e')][_0xb573('0x3a')]+'%'};return _0x430563;})});}_0x33d55b=_[_0xb573('0x39')]({},_0x33d55b,_0x32ae10[_0xb573('0x3b')]);return _0x104888[_0xb573('0x4b')](_0x33d55b);}})[_0xb573('0x20')](function(_0xdb86c3){if(_0xdb86c3){_0x2b6b1a=_0xdb86c3[_0xb573('0x42')];if(!_0x32ae10[_0xb573('0x2e')][_0xb573('0x34')](_0xb573('0x35'))){_0x33d55b[_0xb573('0x18')]=qs[_0xb573('0x18')](_0x32ae10[_0xb573('0x2e')][_0xb573('0x18')]);_0x33d55b['offset']=qs[_0xb573('0x17')](_0x32ae10[_0xb573('0x2e')][_0xb573('0x17')]);}return _0x104888[_0xb573('0x4b')](_0x33d55b);}})['then'](function(_0x5bf276){if(_0x5bf276){return _0x5bf276?{'count':_0x2b6b1a,'rows':_0x5bf276}:null;}})[_0xb573('0x20')](respondWithResult(_0x3aab0f,null))[_0xb573('0x3f')](handleError(_0x3aab0f,null));};exports[_0xb573('0x4c')]=function(_0x473a48,_0x1fbf76,_0x6b60c3){var _0x808c1c={};var _0x39c2c7={};var _0x503b4b;var _0x57a731;return db[_0xb573('0x28')][_0xb573('0x47')]({'where':{'id':_0x473a48[_0xb573('0x41')]['id']}})[_0xb573('0x20')](handleEntityNotFound(_0x1fbf76,null))[_0xb573('0x20')](function(_0xdc5238){if(_0xdc5238){_0x503b4b=_0xdc5238;_0x39c2c7[_0xb573('0x2d')]=_['keys'](db[_0xb573('0x4d')]['rawAttributes']);_0x39c2c7[_0xb573('0x2e')]=_['keys'](_0x473a48[_0xb573('0x2e')]);_0x39c2c7['filters']=_[_0xb573('0x31')](_0x39c2c7[_0xb573('0x2d')],_0x39c2c7[_0xb573('0x2e')]);_0x808c1c[_0xb573('0x32')]=_[_0xb573('0x31')](_0x39c2c7['model'],qs[_0xb573('0x33')](_0x473a48[_0xb573('0x2e')][_0xb573('0x33')]));_0x808c1c[_0xb573('0x32')]=_0x808c1c[_0xb573('0x32')][_0xb573('0x42')]?_0x808c1c['attributes']:_0x39c2c7[_0xb573('0x2d')];_0x808c1c[_0xb573('0x36')]=qs[_0xb573('0x37')](_0x473a48['query'][_0xb573('0x37')]);_0x808c1c[_0xb573('0x38')]=qs[_0xb573('0x30')](_['pick'](_0x473a48[_0xb573('0x2e')],_0x39c2c7[_0xb573('0x30')]));if(_0x473a48['query'][_0xb573('0x3a')]){_0x808c1c[_0xb573('0x38')]=_[_0xb573('0x39')](_0x808c1c[_0xb573('0x38')],{'$or':_[_0xb573('0x27')](_0x808c1c[_0xb573('0x32')],function(_0x167db6){var _0x2fc9e0={};_0x2fc9e0[_0x167db6]={'$like':'%'+_0x473a48[_0xb573('0x2e')][_0xb573('0x3a')]+'%'};return _0x2fc9e0;})});}_0x808c1c=_[_0xb573('0x39')]({},_0x808c1c,_0x473a48[_0xb573('0x3b')]);return _0x503b4b[_0xb573('0x4c')](_0x808c1c);}})['then'](function(_0x3afa69){if(_0x3afa69){_0x57a731=_0x3afa69[_0xb573('0x42')];if(!_0x473a48['query']['hasOwnProperty']('nolimit')){_0x808c1c[_0xb573('0x18')]=qs['limit'](_0x473a48[_0xb573('0x2e')][_0xb573('0x18')]);_0x808c1c[_0xb573('0x17')]=qs[_0xb573('0x17')](_0x473a48[_0xb573('0x2e')][_0xb573('0x17')]);}return _0x503b4b[_0xb573('0x4c')](_0x808c1c);}})[_0xb573('0x20')](function(_0x44060c){if(_0x44060c){return _0x44060c?{'count':_0x57a731,'rows':_0x44060c}:null;}})['then'](respondWithResult(_0x1fbf76,null))[_0xb573('0x3f')](handleError(_0x1fbf76,null));};exports[_0xb573('0x4e')]=function(_0x25b873,_0x18be06,_0x45d151){if(_0x25b873[_0xb573('0x45')]['id']){delete _0x25b873[_0xb573('0x45')]['id'];}return db['ZendeskConfiguration'][_0xb573('0x47')]({'where':{'id':_0x25b873[_0xb573('0x41')]['id']}})[_0xb573('0x20')](handleEntityNotFound(_0x18be06,null))[_0xb573('0x20')](function(_0x4dce55){if(_0x4dce55){return _0x4dce55[_0xb573('0x4e')](_0x25b873[_0xb573('0x45')][_0xb573('0x4f')]||[]);}return null;})['then'](respondWithResult(_0x18be06,null))[_0xb573('0x3f')](handleError(_0x18be06,null));};
\ No newline at end of file
index 82201fb..0b590de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x43b042,_0x3ca2a2){var _0x4c61cf=function(_0x198c71){while(--_0x198c71){_0x43b042['push'](_0x43b042['shift']());}};_0x4c61cf(++_0x3ca2a2);}(_0xfef3,0x118));var _0x3fef=function(_0x595e96,_0x39b21b){_0x595e96=_0x595e96-0x0;var _0x382e4d=_0xfef3[_0x595e96];return _0x382e4d;};'use strict';var _=require(_0x3fef('0x0'));var util=require('util');var logger=require(_0x3fef('0x1'))('api');var moment=require(_0x3fef('0x2'));var BPromise=require(_0x3fef('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3fef('0x4'));var rimraf=require(_0x3fef('0x5'));var config=require('../../config/environment');var attributes=require(_0x3fef('0x6'));module[_0x3fef('0x7')]=function(_0x5dd9fb,_0x319a2a){return _0x5dd9fb[_0x3fef('0x8')](_0x3fef('0x9'),attributes,{'tableName':_0x3fef('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf2f=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash'];(function(_0x12deee,_0x21e6e0){var _0x3aab0b=function(_0x5182ec){while(--_0x5182ec){_0x12deee['push'](_0x12deee['shift']());}};_0x3aab0b(++_0x21e6e0);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x38fd57,_0x140b1e){_0x38fd57=_0x38fd57-0x0;var _0x567a2f=_0xcf2f[_0x38fd57];return _0x567a2f;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var logger=require(_0xfcf2('0x2'))(_0xfcf2('0x3'));var moment=require(_0xfcf2('0x4'));var BPromise=require('bluebird');var rp=require(_0xfcf2('0x5'));var fs=require('fs');var path=require(_0xfcf2('0x6'));var rimraf=require(_0xfcf2('0x7'));var config=require(_0xfcf2('0x8'));var attributes=require(_0xfcf2('0x9'));module[_0xfcf2('0xa')]=function(_0x1e6d99,_0x3a4950){return _0x1e6d99[_0xfcf2('0xb')](_0xfcf2('0xc'),attributes,{'tableName':_0xfcf2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1ceb1fa..031c60e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b59=['rpc','../../config/environment','jayson/promise','client','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x507776,_0x117fd6){var _0x17dd2e=function(_0x161475){while(--_0x161475){_0x507776['push'](_0x507776['shift']());}};_0x17dd2e(++_0x117fd6);}(_0x2b59,0x125));var _0x92b5=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x2b59[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x92b5('0x0'));var util=require('util');var moment=require(_0x92b5('0x1'));var BPromise=require('bluebird');var rs=require(_0x92b5('0x2'));var fs=require('fs');var Redis=require(_0x92b5('0x3'));var db=require(_0x92b5('0x4'))['db'];var utils=require(_0x92b5('0x5'));var logger=require(_0x92b5('0x6'))(_0x92b5('0x7'));var config=require(_0x92b5('0x8'));var jayson=require(_0x92b5('0x9'));var client=jayson[_0x92b5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x514a47,_0x528fe4,_0xca4fab){return new BPromise(function(_0x5ed2a4,_0x144064){return client['request'](_0x514a47,_0xca4fab)['then'](function(_0x49ebeb){logger[_0x92b5('0xb')](_0x92b5('0xc'),_0x528fe4,_0x92b5('0xd'));logger[_0x92b5('0xe')](_0x92b5('0xf'),_0x528fe4,_0x92b5('0xd'),JSON['stringify'](_0x49ebeb));if(_0x49ebeb['error']){if(_0x49ebeb['error']['code']===0x1f4){logger[_0x92b5('0x10')](_0x92b5('0xc'),_0x528fe4,_0x49ebeb[_0x92b5('0x10')][_0x92b5('0x11')]);return _0x144064(_0x49ebeb[_0x92b5('0x10')][_0x92b5('0x11')]);}logger[_0x92b5('0x10')](_0x92b5('0xc'),_0x528fe4,_0x49ebeb[_0x92b5('0x10')]['message']);return _0x5ed2a4(_0x49ebeb[_0x92b5('0x10')][_0x92b5('0x11')]);}else{logger[_0x92b5('0xb')](_0x92b5('0xc'),_0x528fe4,_0x92b5('0xd'));_0x5ed2a4(_0x49ebeb[_0x92b5('0x12')]['message']);}})[_0x92b5('0x13')](function(_0x85ec29){logger[_0x92b5('0x10')](_0x92b5('0xc'),_0x528fe4,_0x85ec29);_0x144064(_0x85ec29);});});}
\ No newline at end of file
+var _0xb3f1=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xb3f1,0x1a5));var _0x1b3f=function(_0x59a53b,_0x18551f){_0x59a53b=_0x59a53b-0x0;var _0x391317=_0xb3f1[_0x59a53b];return _0x391317;};'use strict';var _=require(_0x1b3f('0x0'));var util=require(_0x1b3f('0x1'));var moment=require(_0x1b3f('0x2'));var BPromise=require(_0x1b3f('0x3'));var rs=require(_0x1b3f('0x4'));var fs=require('fs');var Redis=require(_0x1b3f('0x5'));var db=require(_0x1b3f('0x6'))['db'];var utils=require(_0x1b3f('0x7'));var logger=require(_0x1b3f('0x8'))(_0x1b3f('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x1b3f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x175618,_0x36d541,_0xb11a0){return new BPromise(function(_0x5b2bcc,_0x372376){return client['request'](_0x175618,_0xb11a0)[_0x1b3f('0xb')](function(_0x59108c){logger[_0x1b3f('0xc')](_0x1b3f('0xd'),_0x36d541,_0x1b3f('0xe'));logger[_0x1b3f('0xf')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x36d541,_0x1b3f('0xe'),JSON[_0x1b3f('0x10')](_0x59108c));if(_0x59108c[_0x1b3f('0x11')]){if(_0x59108c[_0x1b3f('0x11')]['code']===0x1f4){logger['error'](_0x1b3f('0xd'),_0x36d541,_0x59108c['error']['message']);return _0x372376(_0x59108c[_0x1b3f('0x11')][_0x1b3f('0x12')]);}logger[_0x1b3f('0x11')](_0x1b3f('0xd'),_0x36d541,_0x59108c['error'][_0x1b3f('0x12')]);return _0x5b2bcc(_0x59108c[_0x1b3f('0x11')][_0x1b3f('0x12')]);}else{logger[_0x1b3f('0xc')](_0x1b3f('0xd'),_0x36d541,_0x1b3f('0xe'));_0x5b2bcc(_0x59108c[_0x1b3f('0x13')][_0x1b3f('0x12')]);}})['catch'](function(_0x4565ce){logger[_0x1b3f('0x11')](_0x1b3f('0xd'),_0x36d541,_0x4565ce);_0x372376(_0x4565ce);});});}
\ No newline at end of file
index 8ea3d8d..0d6633b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4f7=['destroy','exports','multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','show','create','put','/:id','delete'];(function(_0x427217,_0x4039b1){var _0x5b28fb=function(_0x3eaa08){while(--_0x3eaa08){_0x427217['push'](_0x427217['shift']());}};_0x5b28fb(++_0x4039b1);}(_0xb4f7,0x162));var _0x7b4f=function(_0x28c94b,_0x19098d){_0x28c94b=_0x28c94b-0x0;var _0x392a76=_0xb4f7[_0x28c94b];return _0x392a76;};'use strict';var multer=require(_0x7b4f('0x0'));var util=require('util');var path=require(_0x7b4f('0x1'));var timeout=require(_0x7b4f('0x2'));var express=require('express');var router=express[_0x7b4f('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7b4f('0x4'));var config=require(_0x7b4f('0x5'));var controller=require(_0x7b4f('0x6'));router[_0x7b4f('0x7')]('/',auth[_0x7b4f('0x8')](),controller['index']);router[_0x7b4f('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x7b4f('0x9')]);router['post']('/',auth['isAuthenticated'](),controller[_0x7b4f('0xa')]);router[_0x7b4f('0xb')](_0x7b4f('0xc'),auth[_0x7b4f('0x8')](),controller['update']);router[_0x7b4f('0xd')](_0x7b4f('0xc'),auth[_0x7b4f('0x8')](),controller[_0x7b4f('0xe')]);module[_0x7b4f('0xf')]=router;
\ No newline at end of file
+var _0x10e5=['./intZendeskField.controller','get','isAuthenticated','/:id','show','create','put','update','delete','destroy','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x860f79,_0x121fbb){var _0xe7c610=function(_0x3b7a11){while(--_0x3b7a11){_0x860f79['push'](_0x860f79['shift']());}};_0xe7c610(++_0x121fbb);}(_0x10e5,0x92));var _0x510e=function(_0x891b81,_0xfbb107){_0x891b81=_0x891b81-0x0;var _0x585932=_0x10e5[_0x891b81];return _0x585932;};'use strict';var multer=require(_0x510e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x510e('0x1'));var express=require(_0x510e('0x2'));var router=express[_0x510e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x510e('0x4'));var interaction=require(_0x510e('0x5'));var config=require(_0x510e('0x6'));var controller=require(_0x510e('0x7'));router[_0x510e('0x8')]('/',auth[_0x510e('0x9')](),controller['index']);router[_0x510e('0x8')](_0x510e('0xa'),auth['isAuthenticated'](),controller[_0x510e('0xb')]);router['post']('/',auth[_0x510e('0x9')](),controller[_0x510e('0xc')]);router[_0x510e('0xd')]('/:id',auth[_0x510e('0x9')](),controller[_0x510e('0xe')]);router[_0x510e('0xf')](_0x510e('0xa'),auth[_0x510e('0x9')](),controller[_0x510e('0x10')]);module['exports']=router;
\ No newline at end of file
index 944ef18..44e4bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19d0=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','string'];(function(_0x3116f6,_0x4f1d2d){var _0x40adb2=function(_0xf7cc75){while(--_0xf7cc75){_0x3116f6['push'](_0x3116f6['shift']());}};_0x40adb2(++_0x4f1d2d);}(_0x19d0,0x165));var _0x019d=function(_0x4fb4fa,_0x2db70f){_0x4fb4fa=_0x4fb4fa-0x0;var _0x245e86=_0x19d0[_0x4fb4fa];return _0x245e86;};'use strict';var Sequelize=require(_0x019d('0x0'));module[_0x019d('0x1')]={'type':{'type':Sequelize['ENUM'](_0x019d('0x2'),_0x019d('0x3'),_0x019d('0x4'),_0x019d('0x5'),_0x019d('0x6')),'defaultValue':_0x019d('0x2')},'content':{'type':Sequelize[_0x019d('0x7')]},'key':{'type':Sequelize[_0x019d('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x019d('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x019d('0x7')]},'idField':{'type':Sequelize[_0x019d('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x019d('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x019d('0x7')]}};
\ No newline at end of file
+var _0x6b8e=['variable','customVariable','keyValue','string','STRING','sequelize','exports','ENUM'];(function(_0xbf83ae,_0x34d563){var _0x2899bc=function(_0x35aae4){while(--_0x35aae4){_0xbf83ae['push'](_0xbf83ae['shift']());}};_0x2899bc(++_0x34d563);}(_0x6b8e,0x1cd));var _0xe6b8=function(_0x258ad0,_0xc15ade){_0x258ad0=_0x258ad0-0x0;var _0x14ad52=_0x6b8e[_0x258ad0];return _0x14ad52;};'use strict';var Sequelize=require(_0xe6b8('0x0'));module[_0xe6b8('0x1')]={'type':{'type':Sequelize[_0xe6b8('0x2')]('string',_0xe6b8('0x3'),_0xe6b8('0x4'),_0xe6b8('0x5'),'picklist'),'defaultValue':_0xe6b8('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xe6b8('0x7')]},'keyType':{'type':Sequelize[_0xe6b8('0x2')](_0xe6b8('0x6'),_0xe6b8('0x3'),_0xe6b8('0x4'))},'keyContent':{'type':Sequelize[_0xe6b8('0x7')]},'idField':{'type':Sequelize[_0xe6b8('0x7')]},'nameField':{'type':Sequelize[_0xe6b8('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe6b8('0x7')]}};
\ No newline at end of file
index 9e61158..d40a609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fd6=['json','reject','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','keys','intersection','model','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','ZendeskField','includeAll','include','findAll','catch','show','params','filters','options','find','create','body','eml-format','rimraf','zip-dir','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range'];(function(_0x4c6226,_0x46f13f){var _0x4a9eb2=function(_0x596c64){while(--_0x596c64){_0x4c6226['push'](_0x4c6226['shift']());}};_0x4a9eb2(++_0x46f13f);}(_0x8fd6,0x1ec));var _0x68fd=function(_0x21a173,_0x1f6b9a){_0x21a173=_0x21a173-0x0;var _0x244d96=_0x8fd6[_0x21a173];return _0x244d96;};'use strict';var emlformat=require(_0x68fd('0x0'));var rimraf=require(_0x68fd('0x1'));var zipdir=require(_0x68fd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x68fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x68fd('0x4'));var util=require('util');var path=require(_0x68fd('0x5'));var sox=require(_0x68fd('0x6'));var csv=require(_0x68fd('0x7'));var ejs=require(_0x68fd('0x8'));var fs=require('fs');var fs_extra=require(_0x68fd('0x9'));var _=require(_0x68fd('0xa'));var squel=require(_0x68fd('0xb'));var crypto=require(_0x68fd('0xc'));var jsforce=require(_0x68fd('0xd'));var deskjs=require(_0x68fd('0xe'));var toCsv=require(_0x68fd('0x7'));var querystring=require('querystring');var Papa=require(_0x68fd('0xf'));var Redis=require(_0x68fd('0x10'));var authService=require(_0x68fd('0x11'));var qs=require(_0x68fd('0x12'));var as=require(_0x68fd('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x68fd('0x14'));var utils=require(_0x68fd('0x15'));var config=require(_0x68fd('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x68fd('0x17'))['db'];function respondWithStatusCode(_0x587522,_0x451cad){_0x451cad=_0x451cad||0xcc;return function(_0x4fdd69){if(_0x4fdd69){return _0x587522[_0x68fd('0x18')](_0x451cad);}return _0x587522[_0x68fd('0x19')](_0x451cad)[_0x68fd('0x1a')]();};}function respondWithResult(_0x150bf9,_0x4de440){_0x4de440=_0x4de440||0xc8;return function(_0x3fdb18){if(_0x3fdb18){return _0x150bf9[_0x68fd('0x19')](_0x4de440)['json'](_0x3fdb18);}};}function respondWithFilteredResult(_0x46b03c,_0x2513ef){return function(_0x59b809){if(_0x59b809){var _0x37a5e3=typeof _0x2513ef[_0x68fd('0x1b')]==='undefined'&&typeof _0x2513ef[_0x68fd('0x1c')]===_0x68fd('0x1d');var _0x4f7dc9=_0x59b809[_0x68fd('0x1e')];var _0x59668c=_0x37a5e3?0x0:_0x2513ef[_0x68fd('0x1b')];var _0x2370d5=_0x37a5e3?_0x59b809[_0x68fd('0x1e')]:_0x2513ef[_0x68fd('0x1b')]+_0x2513ef[_0x68fd('0x1c')];var _0x639003;if(_0x2370d5>=_0x4f7dc9){_0x2370d5=_0x4f7dc9;_0x639003=0xc8;}else{_0x639003=0xce;}_0x46b03c['status'](_0x639003);return _0x46b03c[_0x68fd('0x1f')](_0x68fd('0x20'),_0x59668c+'-'+_0x2370d5+'/'+_0x4f7dc9)[_0x68fd('0x21')](_0x59b809);}return null;};}function patchUpdates(_0x331090){return function(_0x47f029){try{jsonpatch['apply'](_0x47f029,_0x331090,!![]);}catch(_0x13516c){return BPromise[_0x68fd('0x22')](_0x13516c);}return _0x47f029['save']();};}function saveUpdates(_0x49d38d,_0x26b99b){return function(_0x3cb46b){if(_0x3cb46b){return _0x3cb46b[_0x68fd('0x23')](_0x49d38d)[_0x68fd('0x24')](function(_0x1a2143){return _0x1a2143;});}return null;};}function removeEntity(_0xe8b589,_0x3dee9f){return function(_0x5eebd2){if(_0x5eebd2){return _0x5eebd2[_0x68fd('0x25')]()['then'](function(){_0xe8b589[_0x68fd('0x19')](0xcc)[_0x68fd('0x1a')]();});}};}function handleEntityNotFound(_0x361145,_0xe5575d){return function(_0x43b47f){if(!_0x43b47f){_0x361145['sendStatus'](0x194);}return _0x43b47f;};}function handleError(_0x197c97,_0x2f8cf5){_0x2f8cf5=_0x2f8cf5||0x1f4;return function(_0x26ec02){logger[_0x68fd('0x26')](_0x26ec02[_0x68fd('0x27')]);if(_0x26ec02[_0x68fd('0x28')]){delete _0x26ec02[_0x68fd('0x28')];}_0x197c97[_0x68fd('0x19')](_0x2f8cf5)['send'](_0x26ec02);};}exports[_0x68fd('0x29')]=function(_0x4ccf0a,_0x557179){var _0x2286a3={},_0x40972c={},_0x4a9807={'count':0x0,'rows':[]};var _0x2aee87=_[_0x68fd('0x2a')](db['ZendeskField'][_0x68fd('0x2b')],function(_0x16af34){return{'name':_0x16af34[_0x68fd('0x2c')],'type':_0x16af34[_0x68fd('0x2d')][_0x68fd('0x2e')]};});_0x40972c['model']=_[_0x68fd('0x2a')](_0x2aee87,_0x68fd('0x28'));_0x40972c['query']=_[_0x68fd('0x2f')](_0x4ccf0a['query']);_0x40972c['filters']=_[_0x68fd('0x30')](_0x40972c[_0x68fd('0x31')],_0x40972c['query']);_0x2286a3[_0x68fd('0x32')]=_[_0x68fd('0x30')](_0x40972c[_0x68fd('0x31')],qs[_0x68fd('0x33')](_0x4ccf0a[_0x68fd('0x34')]['fields']));_0x2286a3[_0x68fd('0x32')]=_0x2286a3[_0x68fd('0x32')][_0x68fd('0x35')]?_0x2286a3[_0x68fd('0x32')]:_0x40972c[_0x68fd('0x31')];if(!_0x4ccf0a['query'][_0x68fd('0x36')](_0x68fd('0x37'))){_0x2286a3[_0x68fd('0x1c')]=qs[_0x68fd('0x1c')](_0x4ccf0a['query'][_0x68fd('0x1c')]);_0x2286a3[_0x68fd('0x1b')]=qs[_0x68fd('0x1b')](_0x4ccf0a['query']['offset']);}_0x2286a3[_0x68fd('0x38')]=qs[_0x68fd('0x39')](_0x4ccf0a['query'][_0x68fd('0x39')]);_0x2286a3[_0x68fd('0x3a')]=qs['filters'](_[_0x68fd('0x3b')](_0x4ccf0a['query'],_0x40972c['filters']),_0x2aee87);if(_0x4ccf0a[_0x68fd('0x34')][_0x68fd('0x3c')]){_0x2286a3['where']=_[_0x68fd('0x3d')](_0x2286a3[_0x68fd('0x3a')],{'$or':_[_0x68fd('0x2a')](_0x2aee87,function(_0x1267bf){if(_0x1267bf[_0x68fd('0x2d')]!==_0x68fd('0x3e')){var _0x38ec75={};_0x38ec75[_0x1267bf[_0x68fd('0x28')]]={'$like':'%'+_0x4ccf0a[_0x68fd('0x34')]['filter']+'%'};return _0x38ec75;}})});}_0x2286a3=_[_0x68fd('0x3d')]({},_0x2286a3,_0x4ccf0a['options']);var _0x434b7d={'where':_0x2286a3[_0x68fd('0x3a')]};return db[_0x68fd('0x3f')][_0x68fd('0x1e')](_0x434b7d)[_0x68fd('0x24')](function(_0x1273fd){_0x4a9807[_0x68fd('0x1e')]=_0x1273fd;if(_0x4ccf0a[_0x68fd('0x34')][_0x68fd('0x40')]){_0x2286a3[_0x68fd('0x41')]=[{'all':!![]}];}return db[_0x68fd('0x3f')][_0x68fd('0x42')](_0x2286a3);})['then'](function(_0x9d7e74){_0x4a9807['rows']=_0x9d7e74;return _0x4a9807;})[_0x68fd('0x24')](respondWithFilteredResult(_0x557179,_0x2286a3))[_0x68fd('0x43')](handleError(_0x557179,null));};exports[_0x68fd('0x44')]=function(_0x5a2515,_0x1bcf23){var _0x276c38={'raw':!![],'where':{'id':_0x5a2515[_0x68fd('0x45')]['id']}},_0x537b32={};_0x537b32[_0x68fd('0x31')]=_[_0x68fd('0x2f')](db[_0x68fd('0x3f')]['rawAttributes']);_0x537b32[_0x68fd('0x34')]=_[_0x68fd('0x2f')](_0x5a2515['query']);_0x537b32[_0x68fd('0x46')]=_['intersection'](_0x537b32[_0x68fd('0x31')],_0x537b32[_0x68fd('0x34')]);_0x276c38[_0x68fd('0x32')]=_[_0x68fd('0x30')](_0x537b32[_0x68fd('0x31')],qs[_0x68fd('0x33')](_0x5a2515[_0x68fd('0x34')][_0x68fd('0x33')]));_0x276c38[_0x68fd('0x32')]=_0x276c38['attributes']['length']?_0x276c38[_0x68fd('0x32')]:_0x537b32['model'];if(_0x5a2515['query']['includeAll']){_0x276c38[_0x68fd('0x41')]=[{'all':!![]}];}_0x276c38=_[_0x68fd('0x3d')]({},_0x276c38,_0x5a2515[_0x68fd('0x47')]);return db[_0x68fd('0x3f')][_0x68fd('0x48')](_0x276c38)['then'](handleEntityNotFound(_0x1bcf23,null))['then'](respondWithResult(_0x1bcf23,null))[_0x68fd('0x43')](handleError(_0x1bcf23,null));};exports[_0x68fd('0x49')]=function(_0x17f895,_0x1c2e11){return db[_0x68fd('0x3f')]['create'](_0x17f895[_0x68fd('0x4a')],{})[_0x68fd('0x24')](respondWithResult(_0x1c2e11,0xc9))[_0x68fd('0x43')](handleError(_0x1c2e11,null));};exports[_0x68fd('0x23')]=function(_0x412493,_0x545f4b){if(_0x412493[_0x68fd('0x4a')]['id']){delete _0x412493['body']['id'];}return db['ZendeskField']['find']({'where':{'id':_0x412493[_0x68fd('0x45')]['id']}})[_0x68fd('0x24')](handleEntityNotFound(_0x545f4b,null))['then'](saveUpdates(_0x412493['body'],null))[_0x68fd('0x24')](respondWithResult(_0x545f4b,null))[_0x68fd('0x43')](handleError(_0x545f4b,null));};exports['destroy']=function(_0x13872d,_0x4db753){return db[_0x68fd('0x3f')][_0x68fd('0x48')]({'where':{'id':_0x13872d[_0x68fd('0x45')]['id']}})[_0x68fd('0x24')](handleEntityNotFound(_0x4db753,null))[_0x68fd('0x24')](removeEntity(_0x4db753,null))['catch'](handleError(_0x4db753,null));};
\ No newline at end of file
+var _0xe71e=['name','send','index','map','ZendeskField','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','options','findAll','rows','show','includeAll','include','catch','create','body','update','find','params','destroy','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error'];(function(_0x14a3d9,_0x12f232){var _0xeef905=function(_0x1d6f4c){while(--_0x1d6f4c){_0x14a3d9['push'](_0x14a3d9['shift']());}};_0xeef905(++_0x12f232);}(_0xe71e,0x103));var _0xee71=function(_0x419c82,_0x41c464){_0x419c82=_0x419c82-0x0;var _0x270458=_0xe71e[_0x419c82];return _0x270458;};'use strict';var emlformat=require(_0xee71('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xee71('0x1'));var jsonpatch=require(_0xee71('0x2'));var rp=require(_0xee71('0x3'));var moment=require('moment');var BPromise=require(_0xee71('0x4'));var Mustache=require(_0xee71('0x5'));var util=require(_0xee71('0x6'));var path=require('path');var sox=require(_0xee71('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xee71('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xee71('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xee71('0xa'));var toCsv=require(_0xee71('0xb'));var querystring=require('querystring');var Papa=require(_0xee71('0xc'));var Redis=require(_0xee71('0xd'));var authService=require(_0xee71('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xee71('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xee71('0x10'))(_0xee71('0x11'));var utils=require(_0xee71('0x12'));var config=require(_0xee71('0x13'));var licenseUtil=require(_0xee71('0x14'));var db=require(_0xee71('0x15'))['db'];function respondWithStatusCode(_0x7afbb8,_0x5d8ddb){_0x5d8ddb=_0x5d8ddb||0xcc;return function(_0x4bb880){if(_0x4bb880){return _0x7afbb8[_0xee71('0x16')](_0x5d8ddb);}return _0x7afbb8['status'](_0x5d8ddb)[_0xee71('0x17')]();};}function respondWithResult(_0x5225eb,_0x56818b){_0x56818b=_0x56818b||0xc8;return function(_0x3c7c31){if(_0x3c7c31){return _0x5225eb[_0xee71('0x18')](_0x56818b)[_0xee71('0x19')](_0x3c7c31);}};}function respondWithFilteredResult(_0x2e2b2a,_0x3d1322){return function(_0x5f1bb2){if(_0x5f1bb2){var _0x53ef3b=typeof _0x3d1322[_0xee71('0x1a')]===_0xee71('0x1b')&&typeof _0x3d1322[_0xee71('0x1c')]===_0xee71('0x1b');var _0x435e4b=_0x5f1bb2[_0xee71('0x1d')];var _0x3660d9=_0x53ef3b?0x0:_0x3d1322[_0xee71('0x1a')];var _0x7a88e2=_0x53ef3b?_0x5f1bb2['count']:_0x3d1322['offset']+_0x3d1322[_0xee71('0x1c')];var _0x54e645;if(_0x7a88e2>=_0x435e4b){_0x7a88e2=_0x435e4b;_0x54e645=0xc8;}else{_0x54e645=0xce;}_0x2e2b2a['status'](_0x54e645);return _0x2e2b2a[_0xee71('0x1e')](_0xee71('0x1f'),_0x3660d9+'-'+_0x7a88e2+'/'+_0x435e4b)[_0xee71('0x19')](_0x5f1bb2);}return null;};}function patchUpdates(_0x19c42a){return function(_0x2ba154){try{jsonpatch[_0xee71('0x20')](_0x2ba154,_0x19c42a,!![]);}catch(_0x3f8018){return BPromise[_0xee71('0x21')](_0x3f8018);}return _0x2ba154[_0xee71('0x22')]();};}function saveUpdates(_0x4f4906,_0x2aa31a){return function(_0x33ce21){if(_0x33ce21){return _0x33ce21['update'](_0x4f4906)[_0xee71('0x23')](function(_0x3846fa){return _0x3846fa;});}return null;};}function removeEntity(_0x4b75b2,_0x1f6419){return function(_0x16a19d){if(_0x16a19d){return _0x16a19d['destroy']()[_0xee71('0x23')](function(){_0x4b75b2['status'](0xcc)[_0xee71('0x17')]();});}};}function handleEntityNotFound(_0x2bf5c1,_0x16fc38){return function(_0x4f23c3){if(!_0x4f23c3){_0x2bf5c1[_0xee71('0x16')](0x194);}return _0x4f23c3;};}function handleError(_0x5f4592,_0x24497b){_0x24497b=_0x24497b||0x1f4;return function(_0x1b9891){logger[_0xee71('0x24')](_0x1b9891['stack']);if(_0x1b9891[_0xee71('0x25')]){delete _0x1b9891[_0xee71('0x25')];}_0x5f4592[_0xee71('0x18')](_0x24497b)[_0xee71('0x26')](_0x1b9891);};}exports[_0xee71('0x27')]=function(_0x69e576,_0xc4afb1){var _0x546f93={},_0x1c38ad={},_0x5b1c93={'count':0x0,'rows':[]};var _0x1dd5af=_[_0xee71('0x28')](db[_0xee71('0x29')][_0xee71('0x2a')],function(_0x3575d3){return{'name':_0x3575d3[_0xee71('0x2b')],'type':_0x3575d3[_0xee71('0x2c')]['key']};});_0x1c38ad[_0xee71('0x2d')]=_['map'](_0x1dd5af,'name');_0x1c38ad['query']=_[_0xee71('0x2e')](_0x69e576['query']);_0x1c38ad[_0xee71('0x2f')]=_[_0xee71('0x30')](_0x1c38ad['model'],_0x1c38ad[_0xee71('0x31')]);_0x546f93[_0xee71('0x32')]=_[_0xee71('0x30')](_0x1c38ad['model'],qs[_0xee71('0x33')](_0x69e576[_0xee71('0x31')][_0xee71('0x33')]));_0x546f93['attributes']=_0x546f93[_0xee71('0x32')][_0xee71('0x34')]?_0x546f93[_0xee71('0x32')]:_0x1c38ad['model'];if(!_0x69e576[_0xee71('0x31')][_0xee71('0x35')](_0xee71('0x36'))){_0x546f93[_0xee71('0x1c')]=qs['limit'](_0x69e576[_0xee71('0x31')][_0xee71('0x1c')]);_0x546f93[_0xee71('0x1a')]=qs[_0xee71('0x1a')](_0x69e576[_0xee71('0x31')][_0xee71('0x1a')]);}_0x546f93[_0xee71('0x37')]=qs[_0xee71('0x38')](_0x69e576[_0xee71('0x31')][_0xee71('0x38')]);_0x546f93['where']=qs[_0xee71('0x2f')](_[_0xee71('0x39')](_0x69e576[_0xee71('0x31')],_0x1c38ad['filters']),_0x1dd5af);if(_0x69e576[_0xee71('0x31')][_0xee71('0x3a')]){_0x546f93['where']=_[_0xee71('0x3b')](_0x546f93[_0xee71('0x3c')],{'$or':_[_0xee71('0x28')](_0x1dd5af,function(_0x27760c){if(_0x27760c['type']!=='VIRTUAL'){var _0x33e653={};_0x33e653[_0x27760c[_0xee71('0x25')]]={'$like':'%'+_0x69e576[_0xee71('0x31')][_0xee71('0x3a')]+'%'};return _0x33e653;}})});}_0x546f93=_[_0xee71('0x3b')]({},_0x546f93,_0x69e576[_0xee71('0x3d')]);var _0x3ae718={'where':_0x546f93['where']};return db[_0xee71('0x29')][_0xee71('0x1d')](_0x3ae718)['then'](function(_0x3d268b){_0x5b1c93[_0xee71('0x1d')]=_0x3d268b;if(_0x69e576[_0xee71('0x31')]['includeAll']){_0x546f93['include']=[{'all':!![]}];}return db[_0xee71('0x29')][_0xee71('0x3e')](_0x546f93);})['then'](function(_0x1b29b7){_0x5b1c93[_0xee71('0x3f')]=_0x1b29b7;return _0x5b1c93;})['then'](respondWithFilteredResult(_0xc4afb1,_0x546f93))['catch'](handleError(_0xc4afb1,null));};exports[_0xee71('0x40')]=function(_0x2aee5f,_0x3de7a9){var _0x120101={'raw':!![],'where':{'id':_0x2aee5f['params']['id']}},_0x3de088={};_0x3de088[_0xee71('0x2d')]=_[_0xee71('0x2e')](db['ZendeskField'][_0xee71('0x2a')]);_0x3de088[_0xee71('0x31')]=_[_0xee71('0x2e')](_0x2aee5f[_0xee71('0x31')]);_0x3de088[_0xee71('0x2f')]=_[_0xee71('0x30')](_0x3de088['model'],_0x3de088[_0xee71('0x31')]);_0x120101[_0xee71('0x32')]=_[_0xee71('0x30')](_0x3de088['model'],qs[_0xee71('0x33')](_0x2aee5f['query'][_0xee71('0x33')]));_0x120101['attributes']=_0x120101['attributes']['length']?_0x120101[_0xee71('0x32')]:_0x3de088[_0xee71('0x2d')];if(_0x2aee5f[_0xee71('0x31')][_0xee71('0x41')]){_0x120101[_0xee71('0x42')]=[{'all':!![]}];}_0x120101=_[_0xee71('0x3b')]({},_0x120101,_0x2aee5f[_0xee71('0x3d')]);return db['ZendeskField']['find'](_0x120101)[_0xee71('0x23')](handleEntityNotFound(_0x3de7a9,null))['then'](respondWithResult(_0x3de7a9,null))[_0xee71('0x43')](handleError(_0x3de7a9,null));};exports[_0xee71('0x44')]=function(_0x252c7a,_0x1349ea){return db[_0xee71('0x29')][_0xee71('0x44')](_0x252c7a[_0xee71('0x45')],{})[_0xee71('0x23')](respondWithResult(_0x1349ea,0xc9))['catch'](handleError(_0x1349ea,null));};exports[_0xee71('0x46')]=function(_0x39e35d,_0x15f1db){if(_0x39e35d['body']['id']){delete _0x39e35d[_0xee71('0x45')]['id'];}return db[_0xee71('0x29')][_0xee71('0x47')]({'where':{'id':_0x39e35d[_0xee71('0x48')]['id']}})[_0xee71('0x23')](handleEntityNotFound(_0x15f1db,null))[_0xee71('0x23')](saveUpdates(_0x39e35d['body'],null))[_0xee71('0x23')](respondWithResult(_0x15f1db,null))[_0xee71('0x43')](handleError(_0x15f1db,null));};exports[_0xee71('0x49')]=function(_0x517827,_0x422ba0){return db['ZendeskField']['find']({'where':{'id':_0x517827[_0xee71('0x48')]['id']}})[_0xee71('0x23')](handleEntityNotFound(_0x422ba0,null))['then'](removeEntity(_0x422ba0,null))[_0xee71('0x43')](handleError(_0x422ba0,null));};
\ No newline at end of file
index c99acaf..970c2eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca7=['rimraf','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise','path'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0x3ca7,0x9f));var _0x73ca=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x3ca7[_0x2892da];return _0x28cff2;};'use strict';var _=require(_0x73ca('0x0'));var util=require(_0x73ca('0x1'));var logger=require('../../config/logger')(_0x73ca('0x2'));var moment=require('moment');var BPromise=require(_0x73ca('0x3'));var rp=require(_0x73ca('0x4'));var fs=require('fs');var path=require(_0x73ca('0x5'));var rimraf=require(_0x73ca('0x6'));var config=require('../../config/environment');var attributes=require(_0x73ca('0x7'));module[_0x73ca('0x8')]=function(_0x3694c1,_0x380867){return _0x3694c1[_0x73ca('0x9')](_0x73ca('0xa'),attributes,{'tableName':_0x73ca('0xb'),'paranoid':![],'indexes':[{'name':_0x73ca('0xc'),'fields':[_0x73ca('0xd'),_0x73ca('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7178=['rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x7178,0xea));var _0x8717=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x7178[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x8717('0x0'));var util=require(_0x8717('0x1'));var logger=require(_0x8717('0x2'))('api');var moment=require(_0x8717('0x3'));var BPromise=require('bluebird');var rp=require(_0x8717('0x4'));var fs=require('fs');var path=require(_0x8717('0x5'));var rimraf=require(_0x8717('0x6'));var config=require(_0x8717('0x7'));var attributes=require(_0x8717('0x8'));module[_0x8717('0x9')]=function(_0x34b6a8,_0x4d52c5){return _0x34b6a8[_0x8717('0xa')](_0x8717('0xb'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x8717('0xc'),'fields':[_0x8717('0xd'),_0x8717('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 98c44b2..704247a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d6=['../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x15e7ec,_0x1b77d5){var _0x49747e=function(_0x4d3b2a){while(--_0x4d3b2a){_0x15e7ec['push'](_0x15e7ec['shift']());}};_0x49747e(++_0x1b77d5);}(_0x10d6,0x186));var _0x610d=function(_0x14a696,_0x33a1db){_0x14a696=_0x14a696-0x0;var _0x4661ce=_0x10d6[_0x14a696];return _0x4661ce;};'use strict';var _=require(_0x610d('0x0'));var util=require(_0x610d('0x1'));var moment=require(_0x610d('0x2'));var BPromise=require(_0x610d('0x3'));var rs=require(_0x610d('0x4'));var fs=require('fs');var Redis=require(_0x610d('0x5'));var db=require(_0x610d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x610d('0x7'))(_0x610d('0x8'));var config=require('../../config/environment');var jayson=require(_0x610d('0x9'));var client=jayson['client'][_0x610d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x280568,_0x13def9,_0xc4f670){return new BPromise(function(_0x1d2e35,_0x32b047){return client[_0x610d('0xb')](_0x280568,_0xc4f670)['then'](function(_0x125156){logger['info'](_0x610d('0xc'),_0x13def9,_0x610d('0xd'));logger[_0x610d('0xe')](_0x610d('0xf'),_0x13def9,'request\x20sent',JSON[_0x610d('0x10')](_0x125156));if(_0x125156[_0x610d('0x11')]){if(_0x125156[_0x610d('0x11')][_0x610d('0x12')]===0x1f4){logger[_0x610d('0x11')](_0x610d('0xc'),_0x13def9,_0x125156[_0x610d('0x11')][_0x610d('0x13')]);return _0x32b047(_0x125156['error'][_0x610d('0x13')]);}logger[_0x610d('0x11')](_0x610d('0xc'),_0x13def9,_0x125156[_0x610d('0x11')][_0x610d('0x13')]);return _0x1d2e35(_0x125156['error'][_0x610d('0x13')]);}else{logger['info']('ZendeskField,\x20%s,\x20%s',_0x13def9,_0x610d('0xd'));_0x1d2e35(_0x125156[_0x610d('0x14')][_0x610d('0x13')]);}})[_0x610d('0x15')](function(_0x50da40){logger['error']('ZendeskField,\x20%s,\x20%s',_0x13def9,_0x50da40);_0x32b047(_0x50da40);});});}
\ No newline at end of file
+var _0xc3f1=['util','ioredis','../../mysqldb','rpc','jayson/promise','client','then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch'];(function(_0x52be88,_0x5e3f77){var _0x3c54a9=function(_0x3dfadf){while(--_0x3dfadf){_0x52be88['push'](_0x52be88['shift']());}};_0x3c54a9(++_0x5e3f77);}(_0xc3f1,0x190));var _0x1c3f=function(_0x324c61,_0x1165dc){_0x324c61=_0x324c61-0x0;var _0x11e812=_0xc3f1[_0x324c61];return _0x11e812;};'use strict';var _=require('lodash');var util=require(_0x1c3f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1c3f('0x1'));var db=require(_0x1c3f('0x2'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1c3f('0x3'));var config=require('../../config/environment');var jayson=require(_0x1c3f('0x4'));var client=jayson[_0x1c3f('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32412e,_0x1c19e1,_0x4a4334){return new BPromise(function(_0x3ae617,_0x55aa92){return client['request'](_0x32412e,_0x4a4334)[_0x1c3f('0x6')](function(_0x59e133){logger['info'](_0x1c3f('0x7'),_0x1c19e1,_0x1c3f('0x8'));logger[_0x1c3f('0x9')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x1c19e1,'request\x20sent',JSON[_0x1c3f('0xa')](_0x59e133));if(_0x59e133[_0x1c3f('0xb')]){if(_0x59e133[_0x1c3f('0xb')][_0x1c3f('0xc')]===0x1f4){logger['error'](_0x1c3f('0x7'),_0x1c19e1,_0x59e133[_0x1c3f('0xb')][_0x1c3f('0xd')]);return _0x55aa92(_0x59e133['error'][_0x1c3f('0xd')]);}logger[_0x1c3f('0xb')](_0x1c3f('0x7'),_0x1c19e1,_0x59e133[_0x1c3f('0xb')][_0x1c3f('0xd')]);return _0x3ae617(_0x59e133[_0x1c3f('0xb')][_0x1c3f('0xd')]);}else{logger[_0x1c3f('0xe')](_0x1c3f('0x7'),_0x1c19e1,_0x1c3f('0x8'));_0x3ae617(_0x59e133['result'][_0x1c3f('0xd')]);}})[_0x1c3f('0xf')](function(_0x1d33c1){logger[_0x1c3f('0xb')]('ZendeskField,\x20%s,\x20%s',_0x1c19e1,_0x1d33c1);_0x55aa92(_0x1d33c1);});});}
\ No newline at end of file
index f5d1811..ff28e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28dc=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','post','/:id/configurations','put','update','destroy'];(function(_0x2538ca,_0xb651c1){var _0x5b4cee=function(_0x1ad646){while(--_0x1ad646){_0x2538ca['push'](_0x2538ca['shift']());}};_0x5b4cee(++_0xb651c1);}(_0x28dc,0x1e4));var _0xc28d=function(_0x3f70cd,_0x6bf4ed){_0x3f70cd=_0x3f70cd-0x0;var _0x3feb93=_0x28dc[_0x3f70cd];return _0x3feb93;};'use strict';var multer=require(_0xc28d('0x0'));var util=require(_0xc28d('0x1'));var path=require(_0xc28d('0x2'));var timeout=require(_0xc28d('0x3'));var express=require(_0xc28d('0x4'));var router=express['Router']();var fs_extra=require(_0xc28d('0x5'));var auth=require(_0xc28d('0x6'));var interaction=require(_0xc28d('0x7'));var config=require(_0xc28d('0x8'));var controller=require(_0xc28d('0x9'));router[_0xc28d('0xa')]('/',auth[_0xc28d('0xb')](),controller[_0xc28d('0xc')]);router[_0xc28d('0xa')](_0xc28d('0xd'),auth['isAuthenticated'](),controller[_0xc28d('0xe')]);router[_0xc28d('0xa')]('/:id/configurations',auth[_0xc28d('0xb')](),controller[_0xc28d('0xf')]);router[_0xc28d('0xa')](_0xc28d('0x10'),auth[_0xc28d('0xb')](),controller['getFields']);router[_0xc28d('0x11')]('/',auth[_0xc28d('0xb')](),controller['create']);router[_0xc28d('0x11')](_0xc28d('0x12'),auth[_0xc28d('0xb')](),controller['addConfiguration']);router[_0xc28d('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xc28d('0x14')]);router['delete'](_0xc28d('0xd'),auth[_0xc28d('0xb')](),controller[_0xc28d('0x15')]);module[_0xc28d('0x16')]=router;
\ No newline at end of file
+var _0xd579=['getFields','post','create','addConfiguration','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields'];(function(_0x2f2ff6,_0x2c0839){var _0x4121f7=function(_0x53d909){while(--_0x53d909){_0x2f2ff6['push'](_0x2f2ff6['shift']());}};_0x4121f7(++_0x2c0839);}(_0xd579,0x1e9));var _0x9d57=function(_0x36a276,_0xc6d265){_0x36a276=_0x36a276-0x0;var _0x5ad0f5=_0xd579[_0x36a276];return _0x5ad0f5;};'use strict';var multer=require(_0x9d57('0x0'));var util=require(_0x9d57('0x1'));var path=require('path');var timeout=require(_0x9d57('0x2'));var express=require(_0x9d57('0x3'));var router=express[_0x9d57('0x4')]();var fs_extra=require(_0x9d57('0x5'));var auth=require(_0x9d57('0x6'));var interaction=require(_0x9d57('0x7'));var config=require(_0x9d57('0x8'));var controller=require(_0x9d57('0x9'));router[_0x9d57('0xa')]('/',auth[_0x9d57('0xb')](),controller[_0x9d57('0xc')]);router[_0x9d57('0xa')](_0x9d57('0xd'),auth[_0x9d57('0xb')](),controller[_0x9d57('0xe')]);router[_0x9d57('0xa')](_0x9d57('0xf'),auth[_0x9d57('0xb')](),controller['getConfigurations']);router[_0x9d57('0xa')](_0x9d57('0x10'),auth[_0x9d57('0xb')](),controller[_0x9d57('0x11')]);router[_0x9d57('0x12')]('/',auth[_0x9d57('0xb')](),controller[_0x9d57('0x13')]);router[_0x9d57('0x12')](_0x9d57('0xf'),auth[_0x9d57('0xb')](),controller[_0x9d57('0x14')]);router['put'](_0x9d57('0xd'),auth[_0x9d57('0xb')](),controller['update']);router[_0x9d57('0x15')](_0x9d57('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x9d57('0x16')]=router;
\ No newline at end of file
index c0a98f1..3475543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['sequelize','exports','STRING'];(function(_0x167914,_0x87b5a){var _0x5e5d79=function(_0x221d4e){while(--_0x221d4e){_0x167914['push'](_0x167914['shift']());}};_0x5e5d79(++_0x87b5a);}(_0x34e8,0x12c));var _0x834e=function(_0x25c6e0,_0x3f36b2){_0x25c6e0=_0x25c6e0-0x0;var _0x3457cc=_0x34e8[_0x25c6e0];return _0x3457cc;};'use strict';var Sequelize=require(_0x834e('0x0'));module[_0x834e('0x1')]={'name':{'type':Sequelize[_0x834e('0x2')]},'description':{'type':Sequelize[_0x834e('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x834e('0x2')]},'clientId':{'type':Sequelize[_0x834e('0x2')]},'clientSecret':{'type':Sequelize[_0x834e('0x2')]},'serverUrl':{'type':Sequelize[_0x834e('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x834e('0x2')]},'refreshToken':{'type':Sequelize[_0x834e('0x2')]}};
\ No newline at end of file
+var _0x5c12=['exports','STRING'];(function(_0x25a5b4,_0x428f64){var _0x4c78ec=function(_0x32f47e){while(--_0x32f47e){_0x25a5b4['push'](_0x25a5b4['shift']());}};_0x4c78ec(++_0x428f64);}(_0x5c12,0x188));var _0x25c1=function(_0x21cb7f,_0x48cd16){_0x21cb7f=_0x21cb7f-0x0;var _0x5a079a=_0x5c12[_0x21cb7f];return _0x5a079a;};'use strict';var Sequelize=require('sequelize');module[_0x25c1('0x0')]={'name':{'type':Sequelize[_0x25c1('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x25c1('0x1')]},'zone':{'type':Sequelize[_0x25c1('0x1')]},'clientId':{'type':Sequelize[_0x25c1('0x1')]},'clientSecret':{'type':Sequelize[_0x25c1('0x1')]},'serverUrl':{'type':Sequelize[_0x25c1('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0x25c1('0x1')]},'refreshToken':{'type':Sequelize[_0x25c1('0x1')]}};
\ No newline at end of file
index 409c948..239610a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9937=['https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','code','zoho.eu','serverUrl','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','Owner','Subject','Description','WhoId','Call_Duration','Call_Start_Time','Call_Type','includes','push','display_label','custom_field','picklist','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','eml-format','rimraf','request-promise','moment','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','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','then','destroy','error','stack','name','send','index','ZohoAccount','fieldName','key','model','map','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','body','update','getConfigurations','findOne','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu'];(function(_0x3b43e6,_0x5583b7){var _0x2a424a=function(_0x98ea8f){while(--_0x98ea8f){_0x3b43e6['push'](_0x3b43e6['shift']());}};_0x2a424a(++_0x5583b7);}(_0x9937,0x120));var _0x7993=function(_0x5a484f,_0x3b5552){_0x5a484f=_0x5a484f-0x0;var _0x2d8bad=_0x9937[_0x5a484f];return _0x2d8bad;};'use strict';var emlformat=require(_0x7993('0x0'));var rimraf=require(_0x7993('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7993('0x2'));var moment=require(_0x7993('0x3'));var BPromise=require(_0x7993('0x4'));var Mustache=require(_0x7993('0x5'));var util=require('util');var path=require(_0x7993('0x6'));var sox=require(_0x7993('0x7'));var csv=require('to-csv');var ejs=require(_0x7993('0x8'));var fs=require('fs');var fs_extra=require(_0x7993('0x9'));var _=require(_0x7993('0xa'));var squel=require('squel');var crypto=require(_0x7993('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7993('0xc'));var toCsv=require(_0x7993('0xd'));var querystring=require(_0x7993('0xe'));var Papa=require(_0x7993('0xf'));var Redis=require(_0x7993('0x10'));var authService=require(_0x7993('0x11'));var qs=require(_0x7993('0x12'));var as=require(_0x7993('0x13'));var hardwareService=require(_0x7993('0x14'));var logger=require('../../config/logger')(_0x7993('0x15'));var utils=require(_0x7993('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7993('0x17'));var db=require(_0x7993('0x18'))['db'];var integrations=require(_0x7993('0x19'));function respondWithStatusCode(_0x2214e7,_0x27920f){_0x27920f=_0x27920f||0xcc;return function(_0x35ade2){if(_0x35ade2){return _0x2214e7[_0x7993('0x1a')](_0x27920f);}return _0x2214e7[_0x7993('0x1b')](_0x27920f)[_0x7993('0x1c')]();};}function respondWithResult(_0x1fee11,_0x421627){_0x421627=_0x421627||0xc8;return function(_0x359472){if(_0x359472){return _0x1fee11[_0x7993('0x1b')](_0x421627)[_0x7993('0x1d')](_0x359472);}};}function respondWithFilteredResult(_0x5519eb,_0x5c4923){return function(_0x52cab3){if(_0x52cab3){var _0x22592f=typeof _0x5c4923['offset']===_0x7993('0x1e')&&typeof _0x5c4923[_0x7993('0x1f')]==='undefined';var _0x49e53f=_0x52cab3[_0x7993('0x20')];var _0x3fbeaf=_0x22592f?0x0:_0x5c4923[_0x7993('0x21')];var _0x2757f0=_0x22592f?_0x52cab3[_0x7993('0x20')]:_0x5c4923[_0x7993('0x21')]+_0x5c4923[_0x7993('0x1f')];var _0x291525;if(_0x2757f0>=_0x49e53f){_0x2757f0=_0x49e53f;_0x291525=0xc8;}else{_0x291525=0xce;}_0x5519eb[_0x7993('0x1b')](_0x291525);return _0x5519eb['set'](_0x7993('0x22'),_0x3fbeaf+'-'+_0x2757f0+'/'+_0x49e53f)[_0x7993('0x1d')](_0x52cab3);}return null;};}function patchUpdates(_0x365e97){return function(_0x1704fb){try{jsonpatch[_0x7993('0x23')](_0x1704fb,_0x365e97,!![]);}catch(_0x4a302e){return BPromise['reject'](_0x4a302e);}return _0x1704fb[_0x7993('0x24')]();};}function saveUpdates(_0x46cff0,_0x2b6188){return function(_0xb6f541){if(_0xb6f541){return _0xb6f541['update'](_0x46cff0)[_0x7993('0x25')](function(_0x804d08){return _0x804d08;});}return null;};}function removeEntity(_0x253f6c,_0x4bd3d1){return function(_0x37fe27){if(_0x37fe27){return _0x37fe27[_0x7993('0x26')]()[_0x7993('0x25')](function(){_0x253f6c[_0x7993('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x418f26,_0x420efa){return function(_0x2bb059){if(!_0x2bb059){_0x418f26['sendStatus'](0x194);}return _0x2bb059;};}function handleError(_0x1d3687,_0x546aca){_0x546aca=_0x546aca||0x1f4;return function(_0x424f94){logger[_0x7993('0x27')](_0x424f94[_0x7993('0x28')]);if(_0x424f94[_0x7993('0x29')]){delete _0x424f94[_0x7993('0x29')];}_0x1d3687['status'](_0x546aca)[_0x7993('0x2a')](_0x424f94);};}exports[_0x7993('0x2b')]=function(_0x5264b3,_0x56dd35){var _0x338a98={},_0x4b8f33={},_0x5d3760={'count':0x0,'rows':[]};var _0x33871e=_['map'](db[_0x7993('0x2c')]['rawAttributes'],function(_0x22bff3){return{'name':_0x22bff3[_0x7993('0x2d')],'type':_0x22bff3['type'][_0x7993('0x2e')]};});_0x4b8f33[_0x7993('0x2f')]=_[_0x7993('0x30')](_0x33871e,_0x7993('0x29'));_0x4b8f33[_0x7993('0x31')]=_['keys'](_0x5264b3[_0x7993('0x31')]);_0x4b8f33['filters']=_['intersection'](_0x4b8f33[_0x7993('0x2f')],_0x4b8f33['query']);_0x338a98[_0x7993('0x32')]=_[_0x7993('0x33')](_0x4b8f33[_0x7993('0x2f')],qs[_0x7993('0x34')](_0x5264b3['query'][_0x7993('0x34')]));_0x338a98['attributes']=_0x338a98[_0x7993('0x32')][_0x7993('0x35')]?_0x338a98[_0x7993('0x32')]:_0x4b8f33[_0x7993('0x2f')];if(!_0x5264b3['query'][_0x7993('0x36')](_0x7993('0x37'))){_0x338a98[_0x7993('0x1f')]=qs['limit'](_0x5264b3[_0x7993('0x31')][_0x7993('0x1f')]);_0x338a98['offset']=qs[_0x7993('0x21')](_0x5264b3[_0x7993('0x31')][_0x7993('0x21')]);}_0x338a98[_0x7993('0x38')]=qs['sort'](_0x5264b3[_0x7993('0x31')][_0x7993('0x39')]);_0x338a98[_0x7993('0x3a')]=qs[_0x7993('0x3b')](_[_0x7993('0x3c')](_0x5264b3[_0x7993('0x31')],_0x4b8f33[_0x7993('0x3b')]),_0x33871e);if(_0x5264b3[_0x7993('0x31')][_0x7993('0x3d')]){_0x338a98['where']=_[_0x7993('0x3e')](_0x338a98['where'],{'$or':_[_0x7993('0x30')](_0x33871e,function(_0xfe70a7){if(_0xfe70a7[_0x7993('0x3f')]!==_0x7993('0x40')){var _0x1175fe={};_0x1175fe[_0xfe70a7[_0x7993('0x29')]]={'$like':'%'+_0x5264b3[_0x7993('0x31')][_0x7993('0x3d')]+'%'};return _0x1175fe;}})});}_0x338a98=_['merge']({},_0x338a98,_0x5264b3[_0x7993('0x41')]);var _0x4dcdf9={'where':_0x338a98[_0x7993('0x3a')]};return db['ZohoAccount'][_0x7993('0x20')](_0x4dcdf9)[_0x7993('0x25')](function(_0x3a5ea4){_0x5d3760[_0x7993('0x20')]=_0x3a5ea4;if(_0x5264b3['query'][_0x7993('0x42')]){_0x338a98[_0x7993('0x43')]=[{'all':!![]}];}return db[_0x7993('0x2c')][_0x7993('0x44')](_0x338a98);})[_0x7993('0x25')](function(_0x3fd784){_0x5d3760[_0x7993('0x45')]=_0x3fd784;return _0x5d3760;})[_0x7993('0x25')](respondWithFilteredResult(_0x56dd35,_0x338a98))[_0x7993('0x46')](handleError(_0x56dd35,null));};exports[_0x7993('0x47')]=function(_0x1fe250,_0x3d90dc){var _0x2c5255={'raw':![],'where':{'id':_0x1fe250[_0x7993('0x48')]['id']}},_0x4b84f9={};_0x4b84f9[_0x7993('0x2f')]=_[_0x7993('0x49')](db[_0x7993('0x2c')][_0x7993('0x4a')]);_0x4b84f9['query']=_[_0x7993('0x49')](_0x1fe250[_0x7993('0x31')]);_0x4b84f9[_0x7993('0x3b')]=_[_0x7993('0x33')](_0x4b84f9[_0x7993('0x2f')],_0x4b84f9[_0x7993('0x31')]);_0x2c5255[_0x7993('0x32')]=_[_0x7993('0x33')](_0x4b84f9[_0x7993('0x2f')],qs[_0x7993('0x34')](_0x1fe250[_0x7993('0x31')][_0x7993('0x34')]));_0x2c5255['attributes']=_0x2c5255['attributes']['length']?_0x2c5255[_0x7993('0x32')]:_0x4b84f9['model'];if(_0x1fe250[_0x7993('0x31')][_0x7993('0x42')]){_0x2c5255[_0x7993('0x43')]=[{'all':!![]}];}_0x2c5255=_['merge']({},_0x2c5255,_0x1fe250[_0x7993('0x41')]);return db[_0x7993('0x2c')][_0x7993('0x4b')](_0x2c5255)['then'](handleEntityNotFound(_0x3d90dc,null))[_0x7993('0x25')](respondWithResult(_0x3d90dc,null))[_0x7993('0x46')](handleError(_0x3d90dc,null));};exports['create']=function(_0x4acc2c,_0x2e2278){return db[_0x7993('0x2c')]['create'](_0x4acc2c[_0x7993('0x4c')],{})[_0x7993('0x25')](respondWithResult(_0x2e2278,0xc9))['catch'](handleError(_0x2e2278,null));};exports[_0x7993('0x4d')]=function(_0x1d9e51,_0x487a97){if(_0x1d9e51['body']['id']){delete _0x1d9e51[_0x7993('0x4c')]['id'];}return db[_0x7993('0x2c')]['find']({'where':{'id':_0x1d9e51[_0x7993('0x48')]['id']}})[_0x7993('0x25')](handleEntityNotFound(_0x487a97,null))[_0x7993('0x25')](saveUpdates(_0x1d9e51[_0x7993('0x4c')],null))[_0x7993('0x25')](respondWithResult(_0x487a97,null))[_0x7993('0x46')](handleError(_0x487a97,null));};exports[_0x7993('0x26')]=function(_0x2756a3,_0x52b5e7){return db[_0x7993('0x2c')][_0x7993('0x4b')]({'where':{'id':_0x2756a3[_0x7993('0x48')]['id']}})[_0x7993('0x25')](handleEntityNotFound(_0x52b5e7,null))[_0x7993('0x25')](removeEntity(_0x52b5e7,null))['catch'](handleError(_0x52b5e7,null));};exports[_0x7993('0x4e')]=function(_0x37e12e,_0x1c4f87,_0x30d060){var _0x305621={};var _0x27af1e={};var _0x135bad;var _0x16aedf;return db[_0x7993('0x2c')][_0x7993('0x4f')]({'where':{'id':_0x37e12e[_0x7993('0x48')]['id']}})[_0x7993('0x25')](handleEntityNotFound(_0x1c4f87,null))[_0x7993('0x25')](function(_0x287052){if(_0x287052){_0x135bad=_0x287052;_0x27af1e[_0x7993('0x2f')]=_[_0x7993('0x49')](db['ZohoConfiguration']['rawAttributes']);_0x27af1e['query']=_[_0x7993('0x49')](_0x37e12e[_0x7993('0x31')]);_0x27af1e['filters']=_[_0x7993('0x33')](_0x27af1e[_0x7993('0x2f')],_0x27af1e[_0x7993('0x31')]);_0x305621[_0x7993('0x32')]=_[_0x7993('0x33')](_0x27af1e[_0x7993('0x2f')],qs[_0x7993('0x34')](_0x37e12e[_0x7993('0x31')][_0x7993('0x34')]));_0x305621[_0x7993('0x32')]=_0x305621['attributes'][_0x7993('0x35')]?_0x305621[_0x7993('0x32')]:_0x27af1e[_0x7993('0x2f')];_0x305621[_0x7993('0x38')]=qs['sort'](_0x37e12e[_0x7993('0x31')][_0x7993('0x39')]);_0x305621['where']=qs[_0x7993('0x3b')](_['pick'](_0x37e12e['query'],_0x27af1e[_0x7993('0x3b')]));if(_0x37e12e[_0x7993('0x31')][_0x7993('0x3d')]){_0x305621[_0x7993('0x3a')]=_['merge'](_0x305621[_0x7993('0x3a')],{'$or':_['map'](_0x305621['attributes'],function(_0x372074){var _0x1507f1={};_0x1507f1[_0x372074]={'$like':'%'+_0x37e12e[_0x7993('0x31')]['filter']+'%'};return _0x1507f1;})});}_0x305621=_['merge']({},_0x305621,_0x37e12e[_0x7993('0x41')]);return _0x135bad[_0x7993('0x4e')](_0x305621);}})[_0x7993('0x25')](function(_0x199813){if(_0x199813){_0x16aedf=_0x199813[_0x7993('0x35')];if(!_0x37e12e['query'][_0x7993('0x36')]('nolimit')){_0x305621[_0x7993('0x1f')]=qs[_0x7993('0x1f')](_0x37e12e[_0x7993('0x31')][_0x7993('0x1f')]);_0x305621[_0x7993('0x21')]=qs['offset'](_0x37e12e[_0x7993('0x31')][_0x7993('0x21')]);}return _0x135bad[_0x7993('0x4e')](_0x305621);}})[_0x7993('0x25')](function(_0x4ecb0b){if(_0x4ecb0b){return _0x4ecb0b?{'count':_0x16aedf,'rows':_0x4ecb0b}:null;}})[_0x7993('0x25')](respondWithResult(_0x1c4f87,null))[_0x7993('0x46')](handleError(_0x1c4f87,null));};exports[_0x7993('0x50')]=function(_0x3bdbd5,_0x23d852,_0x5c2d7c){if(_0x3bdbd5[_0x7993('0x4c')]['id']){delete _0x3bdbd5[_0x7993('0x4c')]['id'];}return db[_0x7993('0x2c')][_0x7993('0x4f')]({'where':{'id':_0x3bdbd5[_0x7993('0x48')]['id']}})[_0x7993('0x25')](handleEntityNotFound(_0x23d852,null))[_0x7993('0x25')](function(_0x5aa819){if(_0x5aa819){_0x3bdbd5[_0x7993('0x4c')]['AccountId']=_0x5aa819['id'];_0x3bdbd5[_0x7993('0x4c')][_0x7993('0x51')]=integrations[_0x7993('0x52')](_0x3bdbd5[_0x7993('0x4c')][_0x7993('0x53')],_0x3bdbd5[_0x7993('0x4c')][_0x7993('0x3f')]);_0x3bdbd5[_0x7993('0x4c')][_0x7993('0x54')]=integrations[_0x7993('0x55')](_0x3bdbd5[_0x7993('0x4c')][_0x7993('0x53')],_0x3bdbd5['body'][_0x7993('0x3f')]);return db['ZohoConfiguration']['create'](_0x3bdbd5['body'],{'include':[{'model':db[_0x7993('0x56')],'as':_0x7993('0x51')},{'model':db['ZohoField'],'as':'Descriptions'}]});}return null;})[_0x7993('0x25')](respondWithResult(_0x23d852,null))[_0x7993('0x46')](handleError(_0x23d852,null));};function getAccessToken(_0x312963){return new Promise(function(_0x3cc42c,_0x447305){var _0x232705;switch(_0x312963['zone']){case'US':_0x232705=_0x7993('0x57');break;case'AU':_0x232705=_0x7993('0x58');break;case'EU':_0x232705=_0x7993('0x59');break;case'IN':_0x232705=_0x7993('0x5a');break;case'CN':_0x232705=_0x7993('0x5b');break;default:_0x232705=_0x7993('0x59');break;}var _0x866a4e={'method':_0x7993('0x5c'),'uri':_0x232705+_0x7993('0x5d'),'qs':{'refresh_token':_0x312963[_0x7993('0x5e')],'client_id':_0x312963[_0x7993('0x5f')],'client_secret':_0x312963[_0x7993('0x60')],'grant_type':_0x7993('0x61')},'json':!![]};return rp(_0x866a4e)[_0x7993('0x25')](function(_0x2e52df){if(_0x2e52df['access_token']){_0x3cc42c(_0x2e52df['access_token']);}else{_0x447305(_0x7993('0x62'));}})[_0x7993('0x46')](function(_0x976ba7){_0x447305(_0x976ba7);});});}exports[_0x7993('0x63')]=function(_0x58a97b,_0x2ade7f,_0xa7ce31){var _0x351671,_0x1ec188,_0x5a23a3,_0x532254,_0x32b6bc;return db[_0x7993('0x2c')]['findOne']({'where':{'id':_0x58a97b[_0x7993('0x48')]['id']},'attributes':['id',_0x7993('0x64'),'zone',_0x7993('0x5f'),_0x7993('0x60'),'serverUrl',_0x7993('0x65'),_0x7993('0x5e')]})['then'](handleEntityNotFound(_0x2ade7f,null))[_0x7993('0x25')](function(_0x52b8ed){_0x32b6bc=_0x52b8ed;_0x351671=_0x32b6bc[_0x7993('0x64')];_0x1ec188=_0x351671===_0x7993('0x66')?'eu':'com';_0x5a23a3=_0x32b6bc[_0x7993('0x67')];var _0x2ad80d=_0x5a23a3['slice'](-0x1);if(_0x2ad80d==='/'||_0x2ad80d==='\x5c'||_0x2ad80d===':'){_0x5a23a3=_0x5a23a3[_0x7993('0x68')](0x0,_0x5a23a3['lastIndexOf'](_0x2ad80d));}if(!_0x32b6bc[_0x7993('0x5e')]){throw new Error(_0x7993('0x69'));}return getAccessToken(_0x32b6bc);})[_0x7993('0x25')](function(_0x4864a7){if(_0x4864a7){return rp({'method':_0x7993('0x6a'),'uri':util['format'](_0x7993('0x6b'),_0x1ec188),'qs':{'module':'Calls'},'headers':{'Authorization':_0x7993('0x6c')+_0x4864a7},'json':!![]});}})[_0x7993('0x25')](function(_0x3f0b01){if(_0x3f0b01){if(_0x3f0b01['response']&&_0x3f0b01[_0x7993('0x6d')][_0x7993('0x27')]){throw new Error(_0x3f0b01[_0x7993('0x6d')][_0x7993('0x27')]['message']);}var _0x1fbb43=[];var _0x32c5ba=[];var _0xf0d695=[_0x7993('0x6e'),_0x7993('0x6f'),_0x7993('0x70'),_0x7993('0x71'),_0x7993('0x72'),'Call_Result',_0x7993('0x73'),_0x7993('0x74')];_0x32c5ba=_['remove'](_0x3f0b01[_0x7993('0x34')],function(_0x4086c3){return _0xf0d695[_0x7993('0x75')](_0x4086c3['api_name']);});for(var _0x58b361=0x0;_0x58b361<_0x32c5ba['length'];_0x58b361++){if(_0x32c5ba[_0x58b361]['system_mandatory']===![]){_0x1fbb43[_0x7993('0x76')]({'id':_0x32c5ba[_0x58b361]['id'],'name':_0x32c5ba[_0x58b361][_0x7993('0x77')],'custom':_0x32c5ba[_0x58b361][_0x7993('0x78')],'options':_0x32c5ba[_0x58b361]['data_type']===_0x7993('0x79')&&_0x32c5ba[_0x58b361][_0x7993('0x7a')]['length']>-0x1?_[_0x7993('0x30')](_0x32c5ba[_0x58b361][_0x7993('0x7a')],function(_0x57ca96){return{'name':_0x57ca96,'value':_0x57ca96};}):[]});}}return{'count':_0x1fbb43[_0x7993('0x35')],'rows':_0x1fbb43};}else{return{'count':0x0,'rows':[]};}})[_0x7993('0x25')](respondWithResult(_0x2ade7f,null))[_0x7993('0x46')](function(_0x59001c){var _0x1f5c02=_0x58a97b[_0x7993('0x31')]['test']?0x1f4:_0x59001c[_0x7993('0x7b')]||0x1f4;logger[_0x7993('0x27')](_0x7993('0x7c'),'getFields',_0x1f5c02,JSON['stringify'](_0x59001c));delete _0x59001c[_0x7993('0x29')];if(_0x1f5c02===0x191){_0x1f5c02=0x190;}_0x2ade7f[_0x7993('0x1b')](_0x1f5c02)[_0x7993('0x2a')](_0x58a97b[_0x7993('0x31')][_0x7993('0x7d')]?{'message':'Wrong\x20credentials','statusCode':_0x59001c['statusCode']}:_0x59001c);});};
\ No newline at end of file
+var _0x7f63=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','ZohoAccount','findAll','rows','catch','show','params','length','includeAll','find','create','body','destroy','getConfigurations','findOne','ZohoConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZohoField','Descriptions','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','zone','serverUrl','com','substring','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','end','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty'];(function(_0x1d3332,_0x57eead){var _0x44b0cc=function(_0x38ef41){while(--_0x38ef41){_0x1d3332['push'](_0x1d3332['shift']());}};_0x44b0cc(++_0x57eead);}(_0x7f63,0xcc));var _0x37f6=function(_0x313927,_0x2b3a6d){_0x313927=_0x313927-0x0;var _0x545b28=_0x7f63[_0x313927];return _0x545b28;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x37f6('0x0'));var jsonpatch=require(_0x37f6('0x1'));var rp=require('request-promise');var moment=require(_0x37f6('0x2'));var BPromise=require(_0x37f6('0x3'));var Mustache=require(_0x37f6('0x4'));var util=require(_0x37f6('0x5'));var path=require('path');var sox=require(_0x37f6('0x6'));var csv=require(_0x37f6('0x7'));var ejs=require(_0x37f6('0x8'));var fs=require('fs');var fs_extra=require(_0x37f6('0x9'));var _=require(_0x37f6('0xa'));var squel=require(_0x37f6('0xb'));var crypto=require(_0x37f6('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x37f6('0xd'));var toCsv=require(_0x37f6('0x7'));var querystring=require(_0x37f6('0xe'));var Papa=require(_0x37f6('0xf'));var Redis=require(_0x37f6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x37f6('0x11'));var as=require(_0x37f6('0x12'));var hardwareService=require(_0x37f6('0x13'));var logger=require(_0x37f6('0x14'))('api');var utils=require(_0x37f6('0x15'));var config=require(_0x37f6('0x16'));var licenseUtil=require(_0x37f6('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x37f6('0x18'));function respondWithStatusCode(_0x156a64,_0x5937cc){_0x5937cc=_0x5937cc||0xcc;return function(_0x2317ff){if(_0x2317ff){return _0x156a64[_0x37f6('0x19')](_0x5937cc);}return _0x156a64[_0x37f6('0x1a')](_0x5937cc)['end']();};}function respondWithResult(_0x1df67d,_0x111f92){_0x111f92=_0x111f92||0xc8;return function(_0x2b1910){if(_0x2b1910){return _0x1df67d[_0x37f6('0x1a')](_0x111f92)[_0x37f6('0x1b')](_0x2b1910);}};}function respondWithFilteredResult(_0x3bab6f,_0xf4f975){return function(_0xee6f6c){if(_0xee6f6c){var _0x5bc50c=typeof _0xf4f975[_0x37f6('0x1c')]==='undefined'&&typeof _0xf4f975[_0x37f6('0x1d')]===_0x37f6('0x1e');var _0x5b4e60=_0xee6f6c[_0x37f6('0x1f')];var _0x2b7a92=_0x5bc50c?0x0:_0xf4f975[_0x37f6('0x1c')];var _0x4969ed=_0x5bc50c?_0xee6f6c['count']:_0xf4f975[_0x37f6('0x1c')]+_0xf4f975[_0x37f6('0x1d')];var _0x208809;if(_0x4969ed>=_0x5b4e60){_0x4969ed=_0x5b4e60;_0x208809=0xc8;}else{_0x208809=0xce;}_0x3bab6f[_0x37f6('0x1a')](_0x208809);return _0x3bab6f[_0x37f6('0x20')](_0x37f6('0x21'),_0x2b7a92+'-'+_0x4969ed+'/'+_0x5b4e60)['json'](_0xee6f6c);}return null;};}function patchUpdates(_0x31a9c7){return function(_0x1e33f5){try{jsonpatch[_0x37f6('0x22')](_0x1e33f5,_0x31a9c7,!![]);}catch(_0x2417d6){return BPromise[_0x37f6('0x23')](_0x2417d6);}return _0x1e33f5[_0x37f6('0x24')]();};}function saveUpdates(_0x42f3e3,_0x4ec23f){return function(_0x528127){if(_0x528127){return _0x528127[_0x37f6('0x25')](_0x42f3e3)[_0x37f6('0x26')](function(_0x3119de){return _0x3119de;});}return null;};}function removeEntity(_0x4a936e,_0x4c0fd1){return function(_0xcea90f){if(_0xcea90f){return _0xcea90f['destroy']()[_0x37f6('0x26')](function(){_0x4a936e[_0x37f6('0x1a')](0xcc)[_0x37f6('0x27')]();});}};}function handleEntityNotFound(_0x232af,_0x2ee860){return function(_0x5c2fa3){if(!_0x5c2fa3){_0x232af[_0x37f6('0x19')](0x194);}return _0x5c2fa3;};}function handleError(_0x5e6de3,_0x403546){_0x403546=_0x403546||0x1f4;return function(_0x45760f){logger['error'](_0x45760f[_0x37f6('0x28')]);if(_0x45760f[_0x37f6('0x29')]){delete _0x45760f[_0x37f6('0x29')];}_0x5e6de3['status'](_0x403546)[_0x37f6('0x2a')](_0x45760f);};}exports[_0x37f6('0x2b')]=function(_0x2d0a9b,_0x262032){var _0x54cacd={},_0xb3e667={},_0x498827={'count':0x0,'rows':[]};var _0x4b8fb7=_[_0x37f6('0x2c')](db['ZohoAccount'][_0x37f6('0x2d')],function(_0x1392a0){return{'name':_0x1392a0[_0x37f6('0x2e')],'type':_0x1392a0[_0x37f6('0x2f')]['key']};});_0xb3e667[_0x37f6('0x30')]=_[_0x37f6('0x2c')](_0x4b8fb7,_0x37f6('0x29'));_0xb3e667['query']=_[_0x37f6('0x31')](_0x2d0a9b[_0x37f6('0x32')]);_0xb3e667[_0x37f6('0x33')]=_['intersection'](_0xb3e667[_0x37f6('0x30')],_0xb3e667['query']);_0x54cacd['attributes']=_[_0x37f6('0x34')](_0xb3e667[_0x37f6('0x30')],qs[_0x37f6('0x35')](_0x2d0a9b['query'][_0x37f6('0x35')]));_0x54cacd['attributes']=_0x54cacd[_0x37f6('0x36')]['length']?_0x54cacd[_0x37f6('0x36')]:_0xb3e667[_0x37f6('0x30')];if(!_0x2d0a9b[_0x37f6('0x32')][_0x37f6('0x37')](_0x37f6('0x38'))){_0x54cacd['limit']=qs['limit'](_0x2d0a9b[_0x37f6('0x32')][_0x37f6('0x1d')]);_0x54cacd[_0x37f6('0x1c')]=qs[_0x37f6('0x1c')](_0x2d0a9b[_0x37f6('0x32')]['offset']);}_0x54cacd[_0x37f6('0x39')]=qs[_0x37f6('0x3a')](_0x2d0a9b[_0x37f6('0x32')][_0x37f6('0x3a')]);_0x54cacd[_0x37f6('0x3b')]=qs['filters'](_[_0x37f6('0x3c')](_0x2d0a9b[_0x37f6('0x32')],_0xb3e667[_0x37f6('0x33')]),_0x4b8fb7);if(_0x2d0a9b[_0x37f6('0x32')][_0x37f6('0x3d')]){_0x54cacd['where']=_[_0x37f6('0x3e')](_0x54cacd[_0x37f6('0x3b')],{'$or':_[_0x37f6('0x2c')](_0x4b8fb7,function(_0xbdb04b){if(_0xbdb04b[_0x37f6('0x2f')]!==_0x37f6('0x3f')){var _0x21a24d={};_0x21a24d[_0xbdb04b['name']]={'$like':'%'+_0x2d0a9b[_0x37f6('0x32')][_0x37f6('0x3d')]+'%'};return _0x21a24d;}})});}_0x54cacd=_['merge']({},_0x54cacd,_0x2d0a9b[_0x37f6('0x40')]);var _0x3dfe05={'where':_0x54cacd[_0x37f6('0x3b')]};return db['ZohoAccount']['count'](_0x3dfe05)[_0x37f6('0x26')](function(_0x5bd3fd){_0x498827[_0x37f6('0x1f')]=_0x5bd3fd;if(_0x2d0a9b[_0x37f6('0x32')]['includeAll']){_0x54cacd[_0x37f6('0x41')]=[{'all':!![]}];}return db[_0x37f6('0x42')][_0x37f6('0x43')](_0x54cacd);})[_0x37f6('0x26')](function(_0x3d3a64){_0x498827[_0x37f6('0x44')]=_0x3d3a64;return _0x498827;})[_0x37f6('0x26')](respondWithFilteredResult(_0x262032,_0x54cacd))[_0x37f6('0x45')](handleError(_0x262032,null));};exports[_0x37f6('0x46')]=function(_0x1c3581,_0x3e9272){var _0x11da7b={'raw':![],'where':{'id':_0x1c3581[_0x37f6('0x47')]['id']}},_0x121e8d={};_0x121e8d[_0x37f6('0x30')]=_[_0x37f6('0x31')](db[_0x37f6('0x42')][_0x37f6('0x2d')]);_0x121e8d['query']=_[_0x37f6('0x31')](_0x1c3581[_0x37f6('0x32')]);_0x121e8d[_0x37f6('0x33')]=_[_0x37f6('0x34')](_0x121e8d[_0x37f6('0x30')],_0x121e8d[_0x37f6('0x32')]);_0x11da7b[_0x37f6('0x36')]=_[_0x37f6('0x34')](_0x121e8d[_0x37f6('0x30')],qs[_0x37f6('0x35')](_0x1c3581[_0x37f6('0x32')][_0x37f6('0x35')]));_0x11da7b[_0x37f6('0x36')]=_0x11da7b[_0x37f6('0x36')][_0x37f6('0x48')]?_0x11da7b['attributes']:_0x121e8d[_0x37f6('0x30')];if(_0x1c3581[_0x37f6('0x32')][_0x37f6('0x49')]){_0x11da7b[_0x37f6('0x41')]=[{'all':!![]}];}_0x11da7b=_[_0x37f6('0x3e')]({},_0x11da7b,_0x1c3581[_0x37f6('0x40')]);return db[_0x37f6('0x42')][_0x37f6('0x4a')](_0x11da7b)[_0x37f6('0x26')](handleEntityNotFound(_0x3e9272,null))['then'](respondWithResult(_0x3e9272,null))['catch'](handleError(_0x3e9272,null));};exports[_0x37f6('0x4b')]=function(_0x27de4d,_0x27ed8e){return db[_0x37f6('0x42')]['create'](_0x27de4d['body'],{})[_0x37f6('0x26')](respondWithResult(_0x27ed8e,0xc9))[_0x37f6('0x45')](handleError(_0x27ed8e,null));};exports['update']=function(_0x132fe8,_0x11fa39){if(_0x132fe8[_0x37f6('0x4c')]['id']){delete _0x132fe8['body']['id'];}return db[_0x37f6('0x42')][_0x37f6('0x4a')]({'where':{'id':_0x132fe8[_0x37f6('0x47')]['id']}})['then'](handleEntityNotFound(_0x11fa39,null))[_0x37f6('0x26')](saveUpdates(_0x132fe8['body'],null))[_0x37f6('0x26')](respondWithResult(_0x11fa39,null))[_0x37f6('0x45')](handleError(_0x11fa39,null));};exports[_0x37f6('0x4d')]=function(_0x433b04,_0x78f283){return db[_0x37f6('0x42')]['find']({'where':{'id':_0x433b04['params']['id']}})[_0x37f6('0x26')](handleEntityNotFound(_0x78f283,null))[_0x37f6('0x26')](removeEntity(_0x78f283,null))[_0x37f6('0x45')](handleError(_0x78f283,null));};exports[_0x37f6('0x4e')]=function(_0x1690fa,_0x1499de,_0x7f86ba){var _0x4511e1={};var _0x2bfe17={};var _0x2c0c53;var _0x54f3ae;return db[_0x37f6('0x42')][_0x37f6('0x4f')]({'where':{'id':_0x1690fa[_0x37f6('0x47')]['id']}})[_0x37f6('0x26')](handleEntityNotFound(_0x1499de,null))[_0x37f6('0x26')](function(_0x485311){if(_0x485311){_0x2c0c53=_0x485311;_0x2bfe17[_0x37f6('0x30')]=_[_0x37f6('0x31')](db[_0x37f6('0x50')][_0x37f6('0x2d')]);_0x2bfe17[_0x37f6('0x32')]=_[_0x37f6('0x31')](_0x1690fa[_0x37f6('0x32')]);_0x2bfe17['filters']=_['intersection'](_0x2bfe17[_0x37f6('0x30')],_0x2bfe17[_0x37f6('0x32')]);_0x4511e1[_0x37f6('0x36')]=_[_0x37f6('0x34')](_0x2bfe17['model'],qs['fields'](_0x1690fa[_0x37f6('0x32')][_0x37f6('0x35')]));_0x4511e1[_0x37f6('0x36')]=_0x4511e1['attributes'][_0x37f6('0x48')]?_0x4511e1[_0x37f6('0x36')]:_0x2bfe17[_0x37f6('0x30')];_0x4511e1[_0x37f6('0x39')]=qs[_0x37f6('0x3a')](_0x1690fa['query'][_0x37f6('0x3a')]);_0x4511e1[_0x37f6('0x3b')]=qs[_0x37f6('0x33')](_[_0x37f6('0x3c')](_0x1690fa[_0x37f6('0x32')],_0x2bfe17[_0x37f6('0x33')]));if(_0x1690fa[_0x37f6('0x32')][_0x37f6('0x3d')]){_0x4511e1[_0x37f6('0x3b')]=_[_0x37f6('0x3e')](_0x4511e1[_0x37f6('0x3b')],{'$or':_[_0x37f6('0x2c')](_0x4511e1[_0x37f6('0x36')],function(_0x28a42f){var _0xe35bc={};_0xe35bc[_0x28a42f]={'$like':'%'+_0x1690fa[_0x37f6('0x32')][_0x37f6('0x3d')]+'%'};return _0xe35bc;})});}_0x4511e1=_['merge']({},_0x4511e1,_0x1690fa[_0x37f6('0x40')]);return _0x2c0c53[_0x37f6('0x4e')](_0x4511e1);}})[_0x37f6('0x26')](function(_0x14a2ec){if(_0x14a2ec){_0x54f3ae=_0x14a2ec['length'];if(!_0x1690fa[_0x37f6('0x32')][_0x37f6('0x37')](_0x37f6('0x38'))){_0x4511e1[_0x37f6('0x1d')]=qs[_0x37f6('0x1d')](_0x1690fa['query'][_0x37f6('0x1d')]);_0x4511e1['offset']=qs[_0x37f6('0x1c')](_0x1690fa[_0x37f6('0x32')][_0x37f6('0x1c')]);}return _0x2c0c53['getConfigurations'](_0x4511e1);}})['then'](function(_0x8d1ec5){if(_0x8d1ec5){return _0x8d1ec5?{'count':_0x54f3ae,'rows':_0x8d1ec5}:null;}})[_0x37f6('0x26')](respondWithResult(_0x1499de,null))['catch'](handleError(_0x1499de,null));};exports['addConfiguration']=function(_0x28ac8a,_0x37e63f,_0x205244){if(_0x28ac8a[_0x37f6('0x4c')]['id']){delete _0x28ac8a[_0x37f6('0x4c')]['id'];}return db[_0x37f6('0x42')][_0x37f6('0x4f')]({'where':{'id':_0x28ac8a[_0x37f6('0x47')]['id']}})[_0x37f6('0x26')](handleEntityNotFound(_0x37e63f,null))[_0x37f6('0x26')](function(_0x1902d0){if(_0x1902d0){_0x28ac8a[_0x37f6('0x4c')][_0x37f6('0x51')]=_0x1902d0['id'];_0x28ac8a[_0x37f6('0x4c')][_0x37f6('0x52')]=integrations[_0x37f6('0x53')](_0x28ac8a[_0x37f6('0x4c')][_0x37f6('0x54')],_0x28ac8a[_0x37f6('0x4c')][_0x37f6('0x2f')]);_0x28ac8a[_0x37f6('0x4c')]['Descriptions']=integrations[_0x37f6('0x55')](_0x28ac8a[_0x37f6('0x4c')]['channel'],_0x28ac8a[_0x37f6('0x4c')][_0x37f6('0x2f')]);return db[_0x37f6('0x50')][_0x37f6('0x4b')](_0x28ac8a[_0x37f6('0x4c')],{'include':[{'model':db[_0x37f6('0x56')],'as':'Subjects'},{'model':db['ZohoField'],'as':_0x37f6('0x57')}]});}return null;})[_0x37f6('0x26')](respondWithResult(_0x37e63f,null))[_0x37f6('0x45')](handleError(_0x37e63f,null));};function getAccessToken(_0x2587b9){return new Promise(function(_0x17873c,_0x4b2436){var _0x43e85d;switch(_0x2587b9['zone']){case'US':_0x43e85d=_0x37f6('0x58');break;case'AU':_0x43e85d='https://accounts.zoho.com.au';break;case'EU':_0x43e85d=_0x37f6('0x59');break;case'IN':_0x43e85d=_0x37f6('0x5a');break;case'CN':_0x43e85d=_0x37f6('0x5b');break;default:_0x43e85d=_0x37f6('0x59');break;}var _0x1a84c8={'method':_0x37f6('0x5c'),'uri':_0x43e85d+'/oauth/v2/token','qs':{'refresh_token':_0x2587b9[_0x37f6('0x5d')],'client_id':_0x2587b9[_0x37f6('0x5e')],'client_secret':_0x2587b9[_0x37f6('0x5f')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x1a84c8)[_0x37f6('0x26')](function(_0x48a25a){if(_0x48a25a[_0x37f6('0x60')]){_0x17873c(_0x48a25a[_0x37f6('0x60')]);}else{_0x4b2436(_0x37f6('0x61'));}})[_0x37f6('0x45')](function(_0xf812d8){_0x4b2436(_0xf812d8);});});}exports['getFields']=function(_0x475054,_0x3e9774,_0x253703){var _0x56079f,_0x44d03f,_0x31b21e,_0x5fec70,_0x2d3edd;return db[_0x37f6('0x42')][_0x37f6('0x4f')]({'where':{'id':_0x475054[_0x37f6('0x47')]['id']},'attributes':['id',_0x37f6('0x62'),_0x37f6('0x63'),_0x37f6('0x5e'),_0x37f6('0x5f'),_0x37f6('0x64'),'code','refreshToken']})[_0x37f6('0x26')](handleEntityNotFound(_0x3e9774,null))['then'](function(_0x257f88){_0x2d3edd=_0x257f88;_0x56079f=_0x2d3edd[_0x37f6('0x62')];_0x44d03f=_0x56079f==='zoho.eu'?'eu':_0x37f6('0x65');_0x31b21e=_0x2d3edd['serverUrl'];var _0x28ff5a=_0x31b21e['slice'](-0x1);if(_0x28ff5a==='/'||_0x28ff5a==='\x5c'||_0x28ff5a===':'){_0x31b21e=_0x31b21e[_0x37f6('0x66')](0x0,_0x31b21e['lastIndexOf'](_0x28ff5a));}if(!_0x2d3edd[_0x37f6('0x5d')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x2d3edd);})[_0x37f6('0x26')](function(_0x14660d){if(_0x14660d){return rp({'method':_0x37f6('0x67'),'uri':util['format'](_0x37f6('0x68'),_0x44d03f),'qs':{'module':'Calls'},'headers':{'Authorization':_0x37f6('0x69')+_0x14660d},'json':!![]});}})['then'](function(_0x111cf4){if(_0x111cf4){if(_0x111cf4[_0x37f6('0x6a')]&&_0x111cf4[_0x37f6('0x6a')][_0x37f6('0x6b')]){throw new Error(_0x111cf4[_0x37f6('0x6a')][_0x37f6('0x6b')][_0x37f6('0x6c')]);}var _0x41aff2=[];var _0x332c8e=[];var _0x40547c=[_0x37f6('0x6d'),_0x37f6('0x6e'),_0x37f6('0x6f'),_0x37f6('0x70'),_0x37f6('0x71'),_0x37f6('0x72'),_0x37f6('0x73'),_0x37f6('0x74')];_0x332c8e=_[_0x37f6('0x75')](_0x111cf4['fields'],function(_0x1b2048){return _0x40547c[_0x37f6('0x76')](_0x1b2048[_0x37f6('0x77')]);});for(var _0x3724b7=0x0;_0x3724b7<_0x332c8e['length'];_0x3724b7++){if(_0x332c8e[_0x3724b7][_0x37f6('0x78')]===![]){_0x41aff2[_0x37f6('0x79')]({'id':_0x332c8e[_0x3724b7]['id'],'name':_0x332c8e[_0x3724b7]['display_label'],'custom':_0x332c8e[_0x3724b7][_0x37f6('0x7a')],'options':_0x332c8e[_0x3724b7][_0x37f6('0x7b')]===_0x37f6('0x7c')&&_0x332c8e[_0x3724b7][_0x37f6('0x7d')][_0x37f6('0x48')]>-0x1?_[_0x37f6('0x2c')](_0x332c8e[_0x3724b7][_0x37f6('0x7d')],function(_0x5dcf1e){return{'name':_0x5dcf1e,'value':_0x5dcf1e};}):[]});}}return{'count':_0x41aff2[_0x37f6('0x48')],'rows':_0x41aff2};}else{return{'count':0x0,'rows':[]};}})[_0x37f6('0x26')](respondWithResult(_0x3e9774,null))[_0x37f6('0x45')](function(_0x77b61b){var _0x19cf93=_0x475054[_0x37f6('0x32')][_0x37f6('0x7e')]?0x1f4:_0x77b61b[_0x37f6('0x7f')]||0x1f4;logger[_0x37f6('0x6b')](_0x37f6('0x80'),_0x37f6('0x81'),_0x19cf93,JSON['stringify'](_0x77b61b));delete _0x77b61b[_0x37f6('0x29')];if(_0x19cf93===0x191){_0x19cf93=0x190;}_0x3e9774[_0x37f6('0x1a')](_0x19cf93)[_0x37f6('0x2a')](_0x475054[_0x37f6('0x32')][_0x37f6('0x7e')]?{'message':'Wrong\x20credentials','statusCode':_0x77b61b[_0x37f6('0x7f')]}:_0x77b61b);});};
\ No newline at end of file
index 8b1a487..c5c3bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1d5=['ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','substring','application/x-www-form-urlencoded','info','error','util','api','bluebird','path','../../config/environment','../../components/integrations/configuration','exports','ZohoAccount','zone','changed','serverUrl','clientId','clientSecret','code','host','slice','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','then','parse','refresh_token','format'];(function(_0x4739ed,_0x1bfd80){var _0x50d46e=function(_0x2b32d2){while(--_0x2b32d2){_0x4739ed['push'](_0x4739ed['shift']());}};_0x50d46e(++_0x1bfd80);}(_0xb1d5,0x1dc));var _0x5b1d=function(_0x90c434,_0x42072a){_0x90c434=_0x90c434-0x0;var _0x10e99a=_0xb1d5[_0x90c434];return _0x10e99a;};'use strict';var _=require('lodash');var util=require(_0x5b1d('0x0'));var logger=require('../../config/logger')(_0x5b1d('0x1'));var moment=require('moment');var BPromise=require(_0x5b1d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5b1d('0x3'));var rimraf=require('rimraf');var config=require(_0x5b1d('0x4'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x5b1d('0x5'));module[_0x5b1d('0x6')]=function(_0x49785d,_0x56b104){return _0x49785d['define'](_0x5b1d('0x7'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3256c9,_0x215260,_0x2ac405){if(_0x3256c9['changed'](_0x5b1d('0x8'))||_0x3256c9[_0x5b1d('0x9')](_0x5b1d('0xa'))||_0x3256c9['changed'](_0x5b1d('0xb'))||_0x3256c9[_0x5b1d('0x9')](_0x5b1d('0xc'))||_0x3256c9[_0x5b1d('0x9')](_0x5b1d('0xd'))||_0x3256c9[_0x5b1d('0x9')](_0x5b1d('0xe'))){var _0x579a7b,_0x5262c7;_0x579a7b=_0x3256c9[_0x5b1d('0xa')];var _0x313513=_0x579a7b[_0x5b1d('0xf')](-0x1);if(_0x313513==='/'||_0x313513==='\x5c'||_0x313513===':'){_0x579a7b=_0x579a7b['substring'](0x0,_0x579a7b[_0x5b1d('0x10')](_0x313513));}switch(_0x3256c9['zone']){case'US':_0x5262c7=_0x5b1d('0x11');break;case'AU':_0x5262c7=_0x5b1d('0x12');break;case'IN':_0x5262c7=_0x5b1d('0x13');break;case'CN':_0x5262c7=_0x5b1d('0x14');break;default:_0x5262c7=_0x5b1d('0x15');break;}var _0x3c627e={'method':'POST','uri':_0x5262c7+_0x5b1d('0x16'),'form':{'grant_type':_0x5b1d('0x17'),'client_id':_0x3256c9[_0x5b1d('0xb')],'client_secret':_0x3256c9[_0x5b1d('0xc')],'redirect_uri':_0x3256c9[_0x5b1d('0xa')],'code':_0x3256c9[_0x5b1d('0xd')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3c627e)[_0x5b1d('0x18')](function(_0x2f452e){var _0xb71ae3=JSON[_0x5b1d('0x19')](_0x2f452e);if(_0xb71ae3['refresh_token']){_0x3256c9['refreshToken']=_0xb71ae3[_0x5b1d('0x1a')];logger['info'](util[_0x5b1d('0x1b')](_0x5b1d('0x1c'),_0x3256c9[_0x5b1d('0x1d')],_0x3256c9['id']));}else{logger['error'](util[_0x5b1d('0x1b')](_0x5b1d('0x1e'),_0x3256c9[_0x5b1d('0x1d')],_0x3256c9['id']),util[_0x5b1d('0x1f')](_0xb71ae3,{'showHidden':![],'depth':null}));}return _0x2ac405(null,_0x215260);})['catch'](function(_0x3b7bf2){logger['error'](util[_0x5b1d('0x1b')](_0x5b1d('0x1e'),_0x3256c9[_0x5b1d('0x1d')],_0x3256c9['id']),util[_0x5b1d('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0x2ac405(_0x3b7bf2);});}else{return _0x2ac405(null,_0x215260);}},'beforeUpdate':function(_0x2f69ea,_0x486581,_0xae3e1a){if(_0x2f69ea['changed']('zone')||_0x2f69ea[_0x5b1d('0x9')](_0x5b1d('0xa'))||_0x2f69ea[_0x5b1d('0x9')](_0x5b1d('0xb'))||_0x2f69ea[_0x5b1d('0x9')](_0x5b1d('0xc'))||_0x2f69ea[_0x5b1d('0x9')]('code')||_0x2f69ea['changed'](_0x5b1d('0xe'))){var _0x5a4b3f,_0x4901b3;_0x5a4b3f=_0x2f69ea[_0x5b1d('0xa')];var _0x4ea171=_0x5a4b3f[_0x5b1d('0xf')](-0x1);if(_0x4ea171==='/'||_0x4ea171==='\x5c'||_0x4ea171===':'){_0x5a4b3f=_0x5a4b3f[_0x5b1d('0x20')](0x0,_0x5a4b3f[_0x5b1d('0x10')](_0x4ea171));}switch(_0x2f69ea[_0x5b1d('0x8')]){case'US':_0x4901b3=_0x5b1d('0x11');break;case'AU':_0x4901b3=_0x5b1d('0x12');break;case'IN':_0x4901b3=_0x5b1d('0x13');break;case'CN':_0x4901b3=_0x5b1d('0x14');break;default:_0x4901b3=_0x5b1d('0x15');break;}var _0xcf02dc={'method':'POST','uri':_0x4901b3+_0x5b1d('0x16'),'form':{'grant_type':'authorization_code','client_id':_0x2f69ea[_0x5b1d('0xb')],'client_secret':_0x2f69ea[_0x5b1d('0xc')],'redirect_uri':_0x2f69ea['serverUrl'],'code':_0x2f69ea[_0x5b1d('0xd')]},'headers':{'Content-Type':_0x5b1d('0x21')}};return rp(_0xcf02dc)[_0x5b1d('0x18')](function(_0x39cb45){var _0x37f47e=JSON[_0x5b1d('0x19')](_0x39cb45);if(_0x37f47e[_0x5b1d('0x1a')]){_0x2f69ea['refreshToken']=_0x37f47e[_0x5b1d('0x1a')];logger[_0x5b1d('0x22')](util[_0x5b1d('0x1b')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2f69ea['name'],_0x2f69ea['id']));}else{logger['error'](util[_0x5b1d('0x1b')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2f69ea['name'],_0x2f69ea['id']),util[_0x5b1d('0x1f')](_0x37f47e,{'showHidden':![],'depth':null}));}return _0xae3e1a(null,_0x486581);})['catch'](function(_0x25a280){logger[_0x5b1d('0x23')](util[_0x5b1d('0x1b')](_0x5b1d('0x1e'),_0x2f69ea[_0x5b1d('0x1d')],_0x2f69ea['id']),util[_0x5b1d('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0xae3e1a(_0x25a280);});}else{return _0xae3e1a(null,_0x486581);}}}});};
\ No newline at end of file
+var _0x979d=['path','./intZohoAccount.attributes','../../components/integrations/configuration','define','int_zoho_accounts','changed','zone','clientId','clientSecret','host','serverUrl','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','code','then','refresh_token','refreshToken','info','name','error','format','catch','inspect','application/x-www-form-urlencoded','parse','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','util','../../config/logger','api'];(function(_0x519756,_0x288785){var _0x37047e=function(_0x3d64a7){while(--_0x3d64a7){_0x519756['push'](_0x519756['shift']());}};_0x37047e(++_0x288785);}(_0x979d,0xdb));var _0xd979=function(_0x3ae0ab,_0x2083a1){_0x3ae0ab=_0x3ae0ab-0x0;var _0x58bb98=_0x979d[_0x3ae0ab];return _0x58bb98;};'use strict';var _=require('lodash');var util=require(_0xd979('0x0'));var logger=require(_0xd979('0x1'))(_0xd979('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd979('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd979('0x4'));var integrations=require(_0xd979('0x5'));module['exports']=function(_0x47a680,_0x279784){return _0x47a680[_0xd979('0x6')]('ZohoAccount',attributes,{'tableName':_0xd979('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x512aa2,_0x525fcf,_0x3cf5f3){if(_0x512aa2[_0xd979('0x8')](_0xd979('0x9'))||_0x512aa2[_0xd979('0x8')]('serverUrl')||_0x512aa2[_0xd979('0x8')](_0xd979('0xa'))||_0x512aa2[_0xd979('0x8')](_0xd979('0xb'))||_0x512aa2[_0xd979('0x8')]('code')||_0x512aa2[_0xd979('0x8')](_0xd979('0xc'))){var _0x308e15,_0x8170f;_0x308e15=_0x512aa2[_0xd979('0xd')];var _0x4d83a8=_0x308e15['slice'](-0x1);if(_0x4d83a8==='/'||_0x4d83a8==='\x5c'||_0x4d83a8===':'){_0x308e15=_0x308e15[_0xd979('0xe')](0x0,_0x308e15[_0xd979('0xf')](_0x4d83a8));}switch(_0x512aa2['zone']){case'US':_0x8170f=_0xd979('0x10');break;case'AU':_0x8170f=_0xd979('0x11');break;case'IN':_0x8170f=_0xd979('0x12');break;case'CN':_0x8170f=_0xd979('0x13');break;default:_0x8170f=_0xd979('0x14');break;}var _0x20382d={'method':_0xd979('0x15'),'uri':_0x8170f+_0xd979('0x16'),'form':{'grant_type':_0xd979('0x17'),'client_id':_0x512aa2[_0xd979('0xa')],'client_secret':_0x512aa2[_0xd979('0xb')],'redirect_uri':_0x512aa2[_0xd979('0xd')],'code':_0x512aa2[_0xd979('0x18')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x20382d)[_0xd979('0x19')](function(_0x561483){var _0x212c49=JSON['parse'](_0x561483);if(_0x212c49[_0xd979('0x1a')]){_0x512aa2[_0xd979('0x1b')]=_0x212c49['refresh_token'];logger[_0xd979('0x1c')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x512aa2[_0xd979('0x1d')],_0x512aa2['id']));}else{logger[_0xd979('0x1e')](util[_0xd979('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x512aa2[_0xd979('0x1d')],_0x512aa2['id']),util['inspect'](_0x212c49,{'showHidden':![],'depth':null}));}return _0x3cf5f3(null,_0x525fcf);})[_0xd979('0x20')](function(_0x5c184a){logger[_0xd979('0x1e')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x512aa2['name'],_0x512aa2['id']),util[_0xd979('0x21')](parsedResult,{'showHidden':![],'depth':null}));return _0x3cf5f3(_0x5c184a);});}else{return _0x3cf5f3(null,_0x525fcf);}},'beforeUpdate':function(_0x345842,_0x25ce56,_0x4432af){if(_0x345842[_0xd979('0x8')](_0xd979('0x9'))||_0x345842['changed']('serverUrl')||_0x345842[_0xd979('0x8')](_0xd979('0xa'))||_0x345842[_0xd979('0x8')]('clientSecret')||_0x345842['changed'](_0xd979('0x18'))||_0x345842[_0xd979('0x8')](_0xd979('0xc'))){var _0x71ab94,_0x14ff2c;_0x71ab94=_0x345842[_0xd979('0xd')];var _0x2de722=_0x71ab94['slice'](-0x1);if(_0x2de722==='/'||_0x2de722==='\x5c'||_0x2de722===':'){_0x71ab94=_0x71ab94[_0xd979('0xe')](0x0,_0x71ab94[_0xd979('0xf')](_0x2de722));}switch(_0x345842[_0xd979('0x9')]){case'US':_0x14ff2c=_0xd979('0x10');break;case'AU':_0x14ff2c='https://accounts.zoho.com.au';break;case'IN':_0x14ff2c=_0xd979('0x12');break;case'CN':_0x14ff2c='https://accounts.zoho.com.cn';break;default:_0x14ff2c='https://accounts.zoho.eu';break;}var _0x274f57={'method':'POST','uri':_0x14ff2c+'/oauth/v2/token','form':{'grant_type':_0xd979('0x17'),'client_id':_0x345842['clientId'],'client_secret':_0x345842[_0xd979('0xb')],'redirect_uri':_0x345842[_0xd979('0xd')],'code':_0x345842[_0xd979('0x18')]},'headers':{'Content-Type':_0xd979('0x22')}};return rp(_0x274f57)['then'](function(_0x574b9d){var _0x5b09ba=JSON[_0xd979('0x23')](_0x574b9d);if(_0x5b09ba[_0xd979('0x1a')]){_0x345842[_0xd979('0x1b')]=_0x5b09ba[_0xd979('0x1a')];logger[_0xd979('0x1c')](util[_0xd979('0x1f')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x345842[_0xd979('0x1d')],_0x345842['id']));}else{logger[_0xd979('0x1e')](util[_0xd979('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x345842[_0xd979('0x1d')],_0x345842['id']),util[_0xd979('0x21')](_0x5b09ba,{'showHidden':![],'depth':null}));}return _0x4432af(null,_0x25ce56);})['catch'](function(_0x318642){logger[_0xd979('0x1e')](util[_0xd979('0x1f')](_0xd979('0x24'),_0x345842[_0xd979('0x1d')],_0x345842['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x4432af(_0x318642);});}else{return _0x4432af(null,_0x25ce56);}}}});};
\ No newline at end of file
index 74da51f..c7d4f2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1dc=['ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowZohoAccount','find','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xc1dc,0x84));var _0xcc1d=function(_0x29baed,_0x43d43e){_0x29baed=_0x29baed-0x0;var _0x192d5f=_0xc1dc[_0x29baed];return _0x192d5f;};'use strict';var _=require(_0xcc1d('0x0'));var util=require(_0xcc1d('0x1'));var moment=require(_0xcc1d('0x2'));var BPromise=require('bluebird');var rs=require(_0xcc1d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcc1d('0x4'))['db'];var utils=require(_0xcc1d('0x5'));var logger=require('../../config/logger')(_0xcc1d('0x6'));var config=require(_0xcc1d('0x7'));var jayson=require(_0xcc1d('0x8'));var client=jayson[_0xcc1d('0x9')][_0xcc1d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x597eb8,_0x4dc8ee,_0x23e085){return new BPromise(function(_0x24d561,_0x6e9800){return client[_0xcc1d('0xb')](_0x597eb8,_0x23e085)[_0xcc1d('0xc')](function(_0x171592){logger['info'](_0xcc1d('0xd'),_0x4dc8ee,_0xcc1d('0xe'));logger[_0xcc1d('0xf')](_0xcc1d('0x10'),_0x4dc8ee,_0xcc1d('0xe'),JSON[_0xcc1d('0x11')](_0x171592));if(_0x171592['error']){if(_0x171592[_0xcc1d('0x12')][_0xcc1d('0x13')]===0x1f4){logger['error'](_0xcc1d('0xd'),_0x4dc8ee,_0x171592[_0xcc1d('0x12')][_0xcc1d('0x14')]);return _0x6e9800(_0x171592[_0xcc1d('0x12')][_0xcc1d('0x14')]);}logger[_0xcc1d('0x12')](_0xcc1d('0xd'),_0x4dc8ee,_0x171592['error']['message']);return _0x24d561(_0x171592[_0xcc1d('0x12')]['message']);}else{logger[_0xcc1d('0x15')](_0xcc1d('0xd'),_0x4dc8ee,_0xcc1d('0xe'));_0x24d561(_0x171592[_0xcc1d('0x16')][_0xcc1d('0x14')]);}})[_0xcc1d('0x17')](function(_0x1f9737){logger[_0xcc1d('0x12')](_0xcc1d('0xd'),_0x4dc8ee,_0x1f9737);_0x6e9800(_0x1f9737);});});}exports[_0xcc1d('0x18')]=function(_0x483963){var _0x57a551=this;return new Promise(function(_0x2ee388,_0x536641){return db[_0xcc1d('0x19')][_0xcc1d('0x1a')]({'raw':_0x483963[_0xcc1d('0x1b')]?_0x483963[_0xcc1d('0x1b')][_0xcc1d('0x1c')]===undefined?!![]:![]:!![],'where':_0x483963[_0xcc1d('0x1b')]?_0x483963[_0xcc1d('0x1b')][_0xcc1d('0x1d')]||null:null,'attributes':_0x483963[_0xcc1d('0x1b')]?_0x483963['options'][_0xcc1d('0x1e')]||null:null,'limit':_0x483963['options']?_0x483963[_0xcc1d('0x1b')][_0xcc1d('0x1f')]||null:null,'include':_0x483963[_0xcc1d('0x1b')]?_0x483963['options'][_0xcc1d('0x20')]?_[_0xcc1d('0x21')](_0x483963[_0xcc1d('0x1b')][_0xcc1d('0x20')],function(_0xac9e86){return{'model':db[_0xac9e86['model']],'as':_0xac9e86['as'],'attributes':_0xac9e86[_0xcc1d('0x1e')],'include':_0xac9e86['include']?_[_0xcc1d('0x21')](_0xac9e86[_0xcc1d('0x20')],function(_0x3f8b30){return{'model':db[_0x3f8b30[_0xcc1d('0x22')]],'as':_0x3f8b30['as'],'attributes':_0x3f8b30[_0xcc1d('0x1e')],'include':_0x3f8b30['include']?_[_0xcc1d('0x21')](_0x3f8b30[_0xcc1d('0x20')],function(_0xec0667){return{'model':db[_0xec0667['model']],'as':_0xec0667['as'],'attributes':_0xec0667[_0xcc1d('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d2b0c){logger['info'](_0xcc1d('0x18'),_0x483963);logger[_0xcc1d('0xf')](_0xcc1d('0x18'),_0x483963,JSON['stringify'](_0x2d2b0c));_0x2ee388(_0x2d2b0c);})[_0xcc1d('0x17')](function(_0x10f5d3){logger[_0xcc1d('0x12')]('GetZohoAccount',_0x10f5d3[_0xcc1d('0x14')],_0x483963);_0x536641(_0x57a551['error'](0x1f4,_0x10f5d3[_0xcc1d('0x14')]));});});};exports[_0xcc1d('0x23')]=function(_0x14a4d4){var _0x380bd2=this;return new Promise(function(_0x5f70cc,_0x5d9163){return db[_0xcc1d('0x19')][_0xcc1d('0x24')]({'raw':_0x14a4d4['options']?_0x14a4d4[_0xcc1d('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x14a4d4[_0xcc1d('0x1b')]?_0x14a4d4['options']['where']||null:null,'attributes':_0x14a4d4[_0xcc1d('0x1b')]?_0x14a4d4['options'][_0xcc1d('0x1e')]||null:null,'include':_0x14a4d4[_0xcc1d('0x1b')]?_0x14a4d4[_0xcc1d('0x1b')][_0xcc1d('0x20')]?_[_0xcc1d('0x21')](_0x14a4d4[_0xcc1d('0x1b')]['include'],function(_0x1610f9){return{'model':db[_0x1610f9['model']],'as':_0x1610f9['as'],'attributes':_0x1610f9[_0xcc1d('0x1e')],'include':_0x1610f9[_0xcc1d('0x20')]?_[_0xcc1d('0x21')](_0x1610f9[_0xcc1d('0x20')],function(_0x5864a9){return{'model':db[_0x5864a9[_0xcc1d('0x22')]],'as':_0x5864a9['as'],'attributes':_0x5864a9[_0xcc1d('0x1e')],'include':_0x5864a9[_0xcc1d('0x20')]?_[_0xcc1d('0x21')](_0x5864a9[_0xcc1d('0x20')],function(_0x26910c){return{'model':db[_0x26910c[_0xcc1d('0x22')]],'as':_0x26910c['as'],'attributes':_0x26910c[_0xcc1d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xcc1d('0xc')](function(_0x21af60){logger['info']('ShowZohoAccount',_0x14a4d4);logger[_0xcc1d('0xf')](_0xcc1d('0x23'),_0x14a4d4,JSON['stringify'](_0x21af60));_0x5f70cc(_0x21af60);})['catch'](function(_0x5e2df9){logger[_0xcc1d('0x12')](_0xcc1d('0x23'),_0x5e2df9[_0xcc1d('0x14')],_0x14a4d4);_0x5d9163(_0x380bd2[_0xcc1d('0x12')](0x1f4,_0x5e2df9[_0xcc1d('0x14')]));});});};
\ No newline at end of file
+var _0xb1ad=['rpc','../../config/environment','jayson/promise','client','http','request','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetZohoAccount','ZohoAccount','findAll','options','where','attributes','limit','include','map','model','debug','ShowZohoAccount','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x5e4f45,_0x1d31c0){var _0x20b528=function(_0x11f4fc){while(--_0x11f4fc){_0x5e4f45['push'](_0x5e4f45['shift']());}};_0x20b528(++_0x1d31c0);}(_0xb1ad,0x184));var _0xdb1a=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xb1ad[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0xdb1a('0x0'));var util=require(_0xdb1a('0x1'));var moment=require(_0xdb1a('0x2'));var BPromise=require(_0xdb1a('0x3'));var rs=require(_0xdb1a('0x4'));var fs=require('fs');var Redis=require(_0xdb1a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdb1a('0x6'));var logger=require(_0xdb1a('0x7'))(_0xdb1a('0x8'));var config=require(_0xdb1a('0x9'));var jayson=require(_0xdb1a('0xa'));var client=jayson[_0xdb1a('0xb')][_0xdb1a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12b8c5,_0x2712fe,_0x2a24f2){return new BPromise(function(_0x5fc831,_0x188988){return client[_0xdb1a('0xd')](_0x12b8c5,_0x2a24f2)[_0xdb1a('0xe')](function(_0x122af8){logger['info'](_0xdb1a('0xf'),_0x2712fe,_0xdb1a('0x10'));logger['debug']('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x2712fe,'request\x20sent',JSON[_0xdb1a('0x11')](_0x122af8));if(_0x122af8[_0xdb1a('0x12')]){if(_0x122af8[_0xdb1a('0x12')][_0xdb1a('0x13')]===0x1f4){logger[_0xdb1a('0x12')](_0xdb1a('0xf'),_0x2712fe,_0x122af8[_0xdb1a('0x12')][_0xdb1a('0x14')]);return _0x188988(_0x122af8[_0xdb1a('0x12')][_0xdb1a('0x14')]);}logger[_0xdb1a('0x12')](_0xdb1a('0xf'),_0x2712fe,_0x122af8[_0xdb1a('0x12')]['message']);return _0x5fc831(_0x122af8[_0xdb1a('0x12')][_0xdb1a('0x14')]);}else{logger[_0xdb1a('0x15')]('ZohoAccount,\x20%s,\x20%s',_0x2712fe,_0xdb1a('0x10'));_0x5fc831(_0x122af8['result'][_0xdb1a('0x14')]);}})[_0xdb1a('0x16')](function(_0x1637fa){logger['error'](_0xdb1a('0xf'),_0x2712fe,_0x1637fa);_0x188988(_0x1637fa);});});}exports[_0xdb1a('0x17')]=function(_0x268ce8){var _0x5539bf=this;return new Promise(function(_0xe3780b,_0x30b54c){return db[_0xdb1a('0x18')][_0xdb1a('0x19')]({'raw':_0x268ce8[_0xdb1a('0x1a')]?_0x268ce8[_0xdb1a('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x268ce8[_0xdb1a('0x1a')]?_0x268ce8[_0xdb1a('0x1a')][_0xdb1a('0x1b')]||null:null,'attributes':_0x268ce8[_0xdb1a('0x1a')]?_0x268ce8[_0xdb1a('0x1a')][_0xdb1a('0x1c')]||null:null,'limit':_0x268ce8[_0xdb1a('0x1a')]?_0x268ce8[_0xdb1a('0x1a')][_0xdb1a('0x1d')]||null:null,'include':_0x268ce8[_0xdb1a('0x1a')]?_0x268ce8['options'][_0xdb1a('0x1e')]?_['map'](_0x268ce8[_0xdb1a('0x1a')][_0xdb1a('0x1e')],function(_0x3d07fc){return{'model':db[_0x3d07fc['model']],'as':_0x3d07fc['as'],'attributes':_0x3d07fc[_0xdb1a('0x1c')],'include':_0x3d07fc['include']?_[_0xdb1a('0x1f')](_0x3d07fc[_0xdb1a('0x1e')],function(_0x22c95e){return{'model':db[_0x22c95e[_0xdb1a('0x20')]],'as':_0x22c95e['as'],'attributes':_0x22c95e[_0xdb1a('0x1c')],'include':_0x22c95e[_0xdb1a('0x1e')]?_[_0xdb1a('0x1f')](_0x22c95e[_0xdb1a('0x1e')],function(_0x5c963b){return{'model':db[_0x5c963b['model']],'as':_0x5c963b['as'],'attributes':_0x5c963b[_0xdb1a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xdb1a('0xe')](function(_0x151af7){logger[_0xdb1a('0x15')](_0xdb1a('0x17'),_0x268ce8);logger[_0xdb1a('0x21')]('GetZohoAccount',_0x268ce8,JSON[_0xdb1a('0x11')](_0x151af7));_0xe3780b(_0x151af7);})['catch'](function(_0x5a67c4){logger[_0xdb1a('0x12')]('GetZohoAccount',_0x5a67c4['message'],_0x268ce8);_0x30b54c(_0x5539bf[_0xdb1a('0x12')](0x1f4,_0x5a67c4[_0xdb1a('0x14')]));});});};exports[_0xdb1a('0x22')]=function(_0x4f8c08){var _0x3ef1ce=this;return new Promise(function(_0x2080a4,_0xc684d5){return db[_0xdb1a('0x18')]['find']({'raw':_0x4f8c08[_0xdb1a('0x1a')]?_0x4f8c08[_0xdb1a('0x1a')][_0xdb1a('0x23')]===undefined?!![]:![]:!![],'where':_0x4f8c08['options']?_0x4f8c08[_0xdb1a('0x1a')][_0xdb1a('0x1b')]||null:null,'attributes':_0x4f8c08[_0xdb1a('0x1a')]?_0x4f8c08[_0xdb1a('0x1a')]['attributes']||null:null,'include':_0x4f8c08['options']?_0x4f8c08['options'][_0xdb1a('0x1e')]?_[_0xdb1a('0x1f')](_0x4f8c08['options'][_0xdb1a('0x1e')],function(_0xdd719a){return{'model':db[_0xdd719a[_0xdb1a('0x20')]],'as':_0xdd719a['as'],'attributes':_0xdd719a[_0xdb1a('0x1c')],'include':_0xdd719a[_0xdb1a('0x1e')]?_['map'](_0xdd719a['include'],function(_0x56fcf1){return{'model':db[_0x56fcf1[_0xdb1a('0x20')]],'as':_0x56fcf1['as'],'attributes':_0x56fcf1['attributes'],'include':_0x56fcf1['include']?_[_0xdb1a('0x1f')](_0x56fcf1[_0xdb1a('0x1e')],function(_0x57feab){return{'model':db[_0x57feab[_0xdb1a('0x20')]],'as':_0x57feab['as'],'attributes':_0x57feab[_0xdb1a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xdb1a('0xe')](function(_0x3459e5){logger[_0xdb1a('0x15')]('ShowZohoAccount',_0x4f8c08);logger['debug'](_0xdb1a('0x22'),_0x4f8c08,JSON[_0xdb1a('0x11')](_0x3459e5));_0x2080a4(_0x3459e5);})[_0xdb1a('0x16')](function(_0x14f66a){logger[_0xdb1a('0x12')](_0xdb1a('0x22'),_0x14f66a[_0xdb1a('0x14')],_0x4f8c08);_0xc684d5(_0x3ef1ce['error'](0x1f4,_0x14f66a[_0xdb1a('0x14')]));});});};
\ No newline at end of file
index 44c4182..9ec01cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bdb=['../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','post','create','put','update','delete','multer','util','connect-timeout','Router','../../components/auth/service'];(function(_0x4829c0,_0x3a2647){var _0x3afccd=function(_0x3c5239){while(--_0x3c5239){_0x4829c0['push'](_0x4829c0['shift']());}};_0x3afccd(++_0x3a2647);}(_0x7bdb,0xd7));var _0xb7bd=function(_0x4b2c74,_0x50760a){_0x4b2c74=_0x4b2c74-0x0;var _0x20f267=_0x7bdb[_0x4b2c74];return _0x20f267;};'use strict';var multer=require(_0xb7bd('0x0'));var util=require(_0xb7bd('0x1'));var path=require('path');var timeout=require(_0xb7bd('0x2'));var express=require('express');var router=express[_0xb7bd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb7bd('0x4'));var interaction=require(_0xb7bd('0x5'));var config=require(_0xb7bd('0x6'));var controller=require(_0xb7bd('0x7'));router[_0xb7bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xb7bd('0x9')]);router[_0xb7bd('0x8')](_0xb7bd('0xa'),auth[_0xb7bd('0xb')](),controller[_0xb7bd('0xc')]);router[_0xb7bd('0x8')](_0xb7bd('0xd'),auth[_0xb7bd('0xb')](),controller[_0xb7bd('0xe')]);router['get'](_0xb7bd('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router['get'](_0xb7bd('0x10'),auth[_0xb7bd('0xb')](),controller['getDescriptions']);router[_0xb7bd('0x11')]('/',auth['isAuthenticated'](),controller[_0xb7bd('0x12')]);router[_0xb7bd('0x13')](_0xb7bd('0xa'),auth[_0xb7bd('0xb')](),controller[_0xb7bd('0x14')]);router[_0xb7bd('0x15')](_0xb7bd('0xa'),auth[_0xb7bd('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x32fc=['isAuthenticated','/:id/fields','getFields','/:id/subjects','/:id/descriptions','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','index','/:id'];(function(_0x25e109,_0x6ab24c){var _0xc0f7d6=function(_0x2fb92b){while(--_0x2fb92b){_0x25e109['push'](_0x25e109['shift']());}};_0xc0f7d6(++_0x6ab24c);}(_0x32fc,0x6b));var _0xc32f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x32fc[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xc32f('0x0'));var util=require('util');var path=require(_0xc32f('0x1'));var timeout=require(_0xc32f('0x2'));var express=require(_0xc32f('0x3'));var router=express[_0xc32f('0x4')]();var fs_extra=require(_0xc32f('0x5'));var auth=require(_0xc32f('0x6'));var interaction=require(_0xc32f('0x7'));var config=require(_0xc32f('0x8'));var controller=require(_0xc32f('0x9'));router[_0xc32f('0xa')]('/',auth['isAuthenticated'](),controller[_0xc32f('0xb')]);router[_0xc32f('0xa')](_0xc32f('0xc'),auth[_0xc32f('0xd')](),controller['show']);router['get'](_0xc32f('0xe'),auth['isAuthenticated'](),controller[_0xc32f('0xf')]);router[_0xc32f('0xa')](_0xc32f('0x10'),auth[_0xc32f('0xd')](),controller['getSubjects']);router[_0xc32f('0xa')](_0xc32f('0x11'),auth[_0xc32f('0xd')](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0xc32f('0x12')]);router[_0xc32f('0x13')](_0xc32f('0xc'),auth[_0xc32f('0xd')](),controller[_0xc32f('0x14')]);router[_0xc32f('0x15')]('/:id',auth[_0xc32f('0xd')](),controller[_0xc32f('0x16')]);module[_0xc32f('0x17')]=router;
\ No newline at end of file
index b46d327..324e098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x501e=['sequelize','exports','STRING','ENUM','lead','contact_lead'];(function(_0x4b3c07,_0xde331f){var _0x3f72ea=function(_0x357a57){while(--_0x357a57){_0x4b3c07['push'](_0x4b3c07['shift']());}};_0x3f72ea(++_0xde331f);}(_0x501e,0x150));var _0xe501=function(_0x1ed84c,_0x11f875){_0x1ed84c=_0x1ed84c-0x0;var _0x2c1173=_0x501e[_0x1ed84c];return _0x2c1173;};'use strict';var Sequelize=require(_0xe501('0x0'));module[_0xe501('0x1')]={'name':{'type':Sequelize[_0xe501('0x2')]},'moduleCreate':{'type':Sequelize[_0xe501('0x3')]('lead','contact','nothing'),'defaultValue':_0xe501('0x4')},'moduleSearch':{'type':Sequelize[_0xe501('0x3')]('contact_lead','contact',_0xe501('0x4')),'defaultValue':_0xe501('0x5')},'description':{'type':Sequelize[_0xe501('0x2')]}};
\ No newline at end of file
+var _0xf505=['contact_lead','STRING','ENUM','lead','contact','nothing'];(function(_0xd5d972,_0x22bddb){var _0x389593=function(_0x34f2a1){while(--_0x34f2a1){_0xd5d972['push'](_0xd5d972['shift']());}};_0x389593(++_0x22bddb);}(_0xf505,0x14b));var _0x5f50=function(_0xc45596,_0x5c410e){_0xc45596=_0xc45596-0x0;var _0x425ffe=_0xf505[_0xc45596];return _0x425ffe;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x5f50('0x0')]},'moduleCreate':{'type':Sequelize[_0x5f50('0x1')](_0x5f50('0x2'),_0x5f50('0x3'),_0x5f50('0x4')),'defaultValue':_0x5f50('0x2')},'moduleSearch':{'type':Sequelize['ENUM'](_0x5f50('0x5'),_0x5f50('0x3'),_0x5f50('0x2')),'defaultValue':_0x5f50('0x5')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5d16d45..c09d88e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d3a=['offset','count','set','Content-Range','reject','save','then','error','stack','name','index','map','ZohoConfiguration','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','show','find','create','body','update','destroy','params','findOne','ZohoField','pick','getFields','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined'];(function(_0x38325,_0x262d3c){var _0x2994d6=function(_0x48af6e){while(--_0x48af6e){_0x38325['push'](_0x38325['shift']());}};_0x2994d6(++_0x262d3c);}(_0x1d3a,0x11c));var _0xa1d3=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0x1d3a[_0x4a3898];return _0x25ceb0;};'use strict';var emlformat=require(_0xa1d3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa1d3('0x1'));var jsonpatch=require(_0xa1d3('0x2'));var rp=require(_0xa1d3('0x3'));var moment=require(_0xa1d3('0x4'));var BPromise=require(_0xa1d3('0x5'));var Mustache=require(_0xa1d3('0x6'));var util=require('util');var path=require(_0xa1d3('0x7'));var sox=require('sox');var csv=require(_0xa1d3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa1d3('0x9'));var _=require('lodash');var squel=require(_0xa1d3('0xa'));var crypto=require(_0xa1d3('0xb'));var jsforce=require(_0xa1d3('0xc'));var deskjs=require(_0xa1d3('0xd'));var toCsv=require(_0xa1d3('0x8'));var querystring=require('querystring');var Papa=require(_0xa1d3('0xe'));var Redis=require(_0xa1d3('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa1d3('0x10'));var hardwareService=require(_0xa1d3('0x11'));var logger=require(_0xa1d3('0x12'))('api');var utils=require(_0xa1d3('0x13'));var config=require(_0xa1d3('0x14'));var licenseUtil=require(_0xa1d3('0x15'));var db=require(_0xa1d3('0x16'))['db'];function respondWithStatusCode(_0x2ccdd2,_0xbcabbc){_0xbcabbc=_0xbcabbc||0xcc;return function(_0x13c08c){if(_0x13c08c){return _0x2ccdd2[_0xa1d3('0x17')](_0xbcabbc);}return _0x2ccdd2[_0xa1d3('0x18')](_0xbcabbc)[_0xa1d3('0x19')]();};}function respondWithResult(_0x440186,_0x465311){_0x465311=_0x465311||0xc8;return function(_0x1aacb9){if(_0x1aacb9){return _0x440186[_0xa1d3('0x18')](_0x465311)[_0xa1d3('0x1a')](_0x1aacb9);}};}function respondWithFilteredResult(_0x10b214,_0x5edbd7){return function(_0x303fec){if(_0x303fec){var _0xa25c85=typeof _0x5edbd7['offset']===_0xa1d3('0x1b')&&typeof _0x5edbd7['limit']===_0xa1d3('0x1b');var _0x241d92=_0x303fec['count'];var _0x6427ed=_0xa25c85?0x0:_0x5edbd7[_0xa1d3('0x1c')];var _0x4cb519=_0xa25c85?_0x303fec[_0xa1d3('0x1d')]:_0x5edbd7[_0xa1d3('0x1c')]+_0x5edbd7['limit'];var _0x4725c1;if(_0x4cb519>=_0x241d92){_0x4cb519=_0x241d92;_0x4725c1=0xc8;}else{_0x4725c1=0xce;}_0x10b214[_0xa1d3('0x18')](_0x4725c1);return _0x10b214[_0xa1d3('0x1e')](_0xa1d3('0x1f'),_0x6427ed+'-'+_0x4cb519+'/'+_0x241d92)[_0xa1d3('0x1a')](_0x303fec);}return null;};}function patchUpdates(_0x4fe36e){return function(_0xc06339){try{jsonpatch['apply'](_0xc06339,_0x4fe36e,!![]);}catch(_0x584294){return BPromise[_0xa1d3('0x20')](_0x584294);}return _0xc06339[_0xa1d3('0x21')]();};}function saveUpdates(_0x25b5c9,_0x48971e){return function(_0x14ef51){if(_0x14ef51){return _0x14ef51['update'](_0x25b5c9)['then'](function(_0x29ad81){return _0x29ad81;});}return null;};}function removeEntity(_0x309f63,_0x47f268){return function(_0x47e489){if(_0x47e489){return _0x47e489['destroy']()[_0xa1d3('0x22')](function(){_0x309f63['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f30b1,_0x13ad61){return function(_0x408f8b){if(!_0x408f8b){_0x1f30b1['sendStatus'](0x194);}return _0x408f8b;};}function handleError(_0x2a2ca3,_0x57b9c1){_0x57b9c1=_0x57b9c1||0x1f4;return function(_0x5adf82){logger[_0xa1d3('0x23')](_0x5adf82[_0xa1d3('0x24')]);if(_0x5adf82[_0xa1d3('0x25')]){delete _0x5adf82[_0xa1d3('0x25')];}_0x2a2ca3[_0xa1d3('0x18')](_0x57b9c1)['send'](_0x5adf82);};}exports[_0xa1d3('0x26')]=function(_0x5c8184,_0x180aaa){var _0x43d426={},_0x13e9a0={},_0x4e67ba={'count':0x0,'rows':[]};var _0x220541=_[_0xa1d3('0x27')](db[_0xa1d3('0x28')][_0xa1d3('0x29')],function(_0x4d9714){return{'name':_0x4d9714['fieldName'],'type':_0x4d9714['type'][_0xa1d3('0x2a')]};});_0x13e9a0[_0xa1d3('0x2b')]=_['map'](_0x220541,_0xa1d3('0x25'));_0x13e9a0[_0xa1d3('0x2c')]=_[_0xa1d3('0x2d')](_0x5c8184[_0xa1d3('0x2c')]);_0x13e9a0[_0xa1d3('0x2e')]=_[_0xa1d3('0x2f')](_0x13e9a0['model'],_0x13e9a0[_0xa1d3('0x2c')]);_0x43d426[_0xa1d3('0x30')]=_[_0xa1d3('0x2f')](_0x13e9a0[_0xa1d3('0x2b')],qs[_0xa1d3('0x31')](_0x5c8184[_0xa1d3('0x2c')][_0xa1d3('0x31')]));_0x43d426['attributes']=_0x43d426[_0xa1d3('0x30')][_0xa1d3('0x32')]?_0x43d426[_0xa1d3('0x30')]:_0x13e9a0[_0xa1d3('0x2b')];if(!_0x5c8184[_0xa1d3('0x2c')][_0xa1d3('0x33')](_0xa1d3('0x34'))){_0x43d426[_0xa1d3('0x35')]=qs[_0xa1d3('0x35')](_0x5c8184[_0xa1d3('0x2c')][_0xa1d3('0x35')]);_0x43d426[_0xa1d3('0x1c')]=qs[_0xa1d3('0x1c')](_0x5c8184[_0xa1d3('0x2c')][_0xa1d3('0x1c')]);}_0x43d426[_0xa1d3('0x36')]=qs[_0xa1d3('0x37')](_0x5c8184['query'][_0xa1d3('0x37')]);_0x43d426['where']=qs[_0xa1d3('0x2e')](_['pick'](_0x5c8184[_0xa1d3('0x2c')],_0x13e9a0['filters']),_0x220541);if(_0x5c8184[_0xa1d3('0x2c')][_0xa1d3('0x38')]){_0x43d426['where']=_[_0xa1d3('0x39')](_0x43d426[_0xa1d3('0x3a')],{'$or':_[_0xa1d3('0x27')](_0x220541,function(_0x4eebf6){if(_0x4eebf6['type']!==_0xa1d3('0x3b')){var _0x1a9606={};_0x1a9606[_0x4eebf6[_0xa1d3('0x25')]]={'$like':'%'+_0x5c8184[_0xa1d3('0x2c')][_0xa1d3('0x38')]+'%'};return _0x1a9606;}})});}_0x43d426=_[_0xa1d3('0x39')]({},_0x43d426,_0x5c8184[_0xa1d3('0x3c')]);var _0x47291d={'where':_0x43d426[_0xa1d3('0x3a')]};return db[_0xa1d3('0x28')][_0xa1d3('0x1d')](_0x47291d)[_0xa1d3('0x22')](function(_0x21ce03){_0x4e67ba[_0xa1d3('0x1d')]=_0x21ce03;if(_0x5c8184[_0xa1d3('0x2c')]['includeAll']){_0x43d426[_0xa1d3('0x3d')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0xa1d3('0x3e')](_0x43d426);})[_0xa1d3('0x22')](function(_0x33a51f){_0x4e67ba[_0xa1d3('0x3f')]=_0x33a51f;return _0x4e67ba;})[_0xa1d3('0x22')](respondWithFilteredResult(_0x180aaa,_0x43d426))[_0xa1d3('0x40')](handleError(_0x180aaa,null));};exports[_0xa1d3('0x41')]=function(_0x5de4c6,_0x9c37ad){var _0x3e6ce6={'raw':![],'where':{'id':_0x5de4c6['params']['id']}},_0x55d1b1={};_0x55d1b1[_0xa1d3('0x2b')]=_[_0xa1d3('0x2d')](db[_0xa1d3('0x28')]['rawAttributes']);_0x55d1b1[_0xa1d3('0x2c')]=_[_0xa1d3('0x2d')](_0x5de4c6[_0xa1d3('0x2c')]);_0x55d1b1[_0xa1d3('0x2e')]=_[_0xa1d3('0x2f')](_0x55d1b1['model'],_0x55d1b1['query']);_0x3e6ce6[_0xa1d3('0x30')]=_[_0xa1d3('0x2f')](_0x55d1b1['model'],qs['fields'](_0x5de4c6[_0xa1d3('0x2c')][_0xa1d3('0x31')]));_0x3e6ce6[_0xa1d3('0x30')]=_0x3e6ce6[_0xa1d3('0x30')][_0xa1d3('0x32')]?_0x3e6ce6['attributes']:_0x55d1b1[_0xa1d3('0x2b')];if(_0x5de4c6[_0xa1d3('0x2c')]['includeAll']){_0x3e6ce6[_0xa1d3('0x3d')]=[{'all':!![]}];}_0x3e6ce6=_[_0xa1d3('0x39')]({},_0x3e6ce6,_0x5de4c6[_0xa1d3('0x3c')]);return db[_0xa1d3('0x28')][_0xa1d3('0x42')](_0x3e6ce6)['then'](handleEntityNotFound(_0x9c37ad,null))[_0xa1d3('0x22')](respondWithResult(_0x9c37ad,null))[_0xa1d3('0x40')](handleError(_0x9c37ad,null));};exports[_0xa1d3('0x43')]=function(_0x32148f,_0x10f728){return db['ZohoConfiguration']['create'](_0x32148f[_0xa1d3('0x44')],{})[_0xa1d3('0x22')](respondWithResult(_0x10f728,0xc9))[_0xa1d3('0x40')](handleError(_0x10f728,null));};exports[_0xa1d3('0x45')]=function(_0x3e7b8b,_0x525f59){if(_0x3e7b8b[_0xa1d3('0x44')]['id']){delete _0x3e7b8b['body']['id'];}return db[_0xa1d3('0x28')][_0xa1d3('0x42')]({'where':{'id':_0x3e7b8b['params']['id']}})[_0xa1d3('0x22')](handleEntityNotFound(_0x525f59,null))[_0xa1d3('0x22')](saveUpdates(_0x3e7b8b['body'],null))[_0xa1d3('0x22')](respondWithResult(_0x525f59,null))[_0xa1d3('0x40')](handleError(_0x525f59,null));};exports[_0xa1d3('0x46')]=function(_0x3f67ab,_0x55f288){return db[_0xa1d3('0x28')]['find']({'where':{'id':_0x3f67ab[_0xa1d3('0x47')]['id']}})[_0xa1d3('0x22')](handleEntityNotFound(_0x55f288,null))['then'](removeEntity(_0x55f288,null))['catch'](handleError(_0x55f288,null));};exports['getFields']=function(_0x535554,_0x28929f,_0x44e368){var _0x476f0c={};var _0x420f88={};var _0x7d7c45;var _0x83ef3a;return db[_0xa1d3('0x28')][_0xa1d3('0x48')]({'where':{'id':_0x535554[_0xa1d3('0x47')]['id']}})[_0xa1d3('0x22')](handleEntityNotFound(_0x28929f,null))[_0xa1d3('0x22')](function(_0x519f2d){if(_0x519f2d){_0x7d7c45=_0x519f2d;_0x420f88[_0xa1d3('0x2b')]=_[_0xa1d3('0x2d')](db[_0xa1d3('0x49')][_0xa1d3('0x29')]);_0x420f88['query']=_['keys'](_0x535554[_0xa1d3('0x2c')]);_0x420f88['filters']=_[_0xa1d3('0x2f')](_0x420f88[_0xa1d3('0x2b')],_0x420f88[_0xa1d3('0x2c')]);_0x476f0c[_0xa1d3('0x30')]=_[_0xa1d3('0x2f')](_0x420f88[_0xa1d3('0x2b')],qs[_0xa1d3('0x31')](_0x535554[_0xa1d3('0x2c')][_0xa1d3('0x31')]));_0x476f0c[_0xa1d3('0x30')]=_0x476f0c[_0xa1d3('0x30')][_0xa1d3('0x32')]?_0x476f0c[_0xa1d3('0x30')]:_0x420f88['model'];_0x476f0c['order']=qs['sort'](_0x535554[_0xa1d3('0x2c')][_0xa1d3('0x37')]);_0x476f0c[_0xa1d3('0x3a')]=qs[_0xa1d3('0x2e')](_[_0xa1d3('0x4a')](_0x535554[_0xa1d3('0x2c')],_0x420f88[_0xa1d3('0x2e')]));if(_0x535554[_0xa1d3('0x2c')][_0xa1d3('0x38')]){_0x476f0c[_0xa1d3('0x3a')]=_[_0xa1d3('0x39')](_0x476f0c['where'],{'$or':_[_0xa1d3('0x27')](_0x476f0c['attributes'],function(_0x14acec){var _0x27148b={};_0x27148b[_0x14acec]={'$like':'%'+_0x535554[_0xa1d3('0x2c')]['filter']+'%'};return _0x27148b;})});}_0x476f0c=_[_0xa1d3('0x39')]({},_0x476f0c,_0x535554[_0xa1d3('0x3c')]);return _0x7d7c45[_0xa1d3('0x4b')](_0x476f0c);}})[_0xa1d3('0x22')](function(_0x5642be){if(_0x5642be){_0x83ef3a=_0x5642be[_0xa1d3('0x32')];if(!_0x535554[_0xa1d3('0x2c')][_0xa1d3('0x33')](_0xa1d3('0x34'))){_0x476f0c[_0xa1d3('0x35')]=qs['limit'](_0x535554[_0xa1d3('0x2c')][_0xa1d3('0x35')]);_0x476f0c[_0xa1d3('0x1c')]=qs[_0xa1d3('0x1c')](_0x535554[_0xa1d3('0x2c')][_0xa1d3('0x1c')]);}return _0x7d7c45['getFields'](_0x476f0c);}})['then'](function(_0x122d00){if(_0x122d00){return _0x122d00?{'count':_0x83ef3a,'rows':_0x122d00}:null;}})['then'](respondWithResult(_0x28929f,null))['catch'](handleError(_0x28929f,null));};exports['getSubjects']=function(_0x1896ad,_0xf4d788,_0x5a37eb){var _0x397b15={};var _0x25669f={};var _0x108e51;var _0x4e598b;return db[_0xa1d3('0x28')][_0xa1d3('0x48')]({'where':{'id':_0x1896ad[_0xa1d3('0x47')]['id']}})[_0xa1d3('0x22')](handleEntityNotFound(_0xf4d788,null))[_0xa1d3('0x22')](function(_0xad33ed){if(_0xad33ed){_0x108e51=_0xad33ed;_0x25669f['model']=_[_0xa1d3('0x2d')](db[_0xa1d3('0x49')][_0xa1d3('0x29')]);_0x25669f[_0xa1d3('0x2c')]=_['keys'](_0x1896ad[_0xa1d3('0x2c')]);_0x25669f[_0xa1d3('0x2e')]=_[_0xa1d3('0x2f')](_0x25669f[_0xa1d3('0x2b')],_0x25669f[_0xa1d3('0x2c')]);_0x397b15[_0xa1d3('0x30')]=_['intersection'](_0x25669f['model'],qs[_0xa1d3('0x31')](_0x1896ad[_0xa1d3('0x2c')][_0xa1d3('0x31')]));_0x397b15[_0xa1d3('0x30')]=_0x397b15[_0xa1d3('0x30')][_0xa1d3('0x32')]?_0x397b15[_0xa1d3('0x30')]:_0x25669f[_0xa1d3('0x2b')];_0x397b15[_0xa1d3('0x36')]=qs['sort'](_0x1896ad[_0xa1d3('0x2c')][_0xa1d3('0x37')]);_0x397b15['where']=qs[_0xa1d3('0x2e')](_[_0xa1d3('0x4a')](_0x1896ad[_0xa1d3('0x2c')],_0x25669f[_0xa1d3('0x2e')]));if(_0x1896ad['query'][_0xa1d3('0x38')]){_0x397b15['where']=_['merge'](_0x397b15[_0xa1d3('0x3a')],{'$or':_[_0xa1d3('0x27')](_0x397b15[_0xa1d3('0x30')],function(_0x499f0f){var _0x97ee70={};_0x97ee70[_0x499f0f]={'$like':'%'+_0x1896ad['query'][_0xa1d3('0x38')]+'%'};return _0x97ee70;})});}_0x397b15=_['merge']({},_0x397b15,_0x1896ad['options']);return _0x108e51[_0xa1d3('0x4c')](_0x397b15);}})[_0xa1d3('0x22')](function(_0x1acfc1){if(_0x1acfc1){_0x4e598b=_0x1acfc1[_0xa1d3('0x32')];if(!_0x1896ad['query'][_0xa1d3('0x33')](_0xa1d3('0x34'))){_0x397b15['limit']=qs['limit'](_0x1896ad[_0xa1d3('0x2c')][_0xa1d3('0x35')]);_0x397b15[_0xa1d3('0x1c')]=qs[_0xa1d3('0x1c')](_0x1896ad[_0xa1d3('0x2c')][_0xa1d3('0x1c')]);}return _0x108e51[_0xa1d3('0x4c')](_0x397b15);}})[_0xa1d3('0x22')](function(_0x330035){if(_0x330035){return _0x330035?{'count':_0x4e598b,'rows':_0x330035}:null;}})[_0xa1d3('0x22')](respondWithResult(_0xf4d788,null))[_0xa1d3('0x40')](handleError(_0xf4d788,null));};exports[_0xa1d3('0x4d')]=function(_0x192100,_0x2b82f6,_0x4e26b6){var _0x2aeff2={};var _0x341c98={};var _0x1d09b7;var _0x5bf4d7;return db['ZohoConfiguration'][_0xa1d3('0x48')]({'where':{'id':_0x192100['params']['id']}})['then'](handleEntityNotFound(_0x2b82f6,null))[_0xa1d3('0x22')](function(_0x3c5443){if(_0x3c5443){_0x1d09b7=_0x3c5443;_0x341c98[_0xa1d3('0x2b')]=_['keys'](db['ZohoField'][_0xa1d3('0x29')]);_0x341c98[_0xa1d3('0x2c')]=_[_0xa1d3('0x2d')](_0x192100[_0xa1d3('0x2c')]);_0x341c98[_0xa1d3('0x2e')]=_['intersection'](_0x341c98['model'],_0x341c98[_0xa1d3('0x2c')]);_0x2aeff2['attributes']=_[_0xa1d3('0x2f')](_0x341c98[_0xa1d3('0x2b')],qs['fields'](_0x192100[_0xa1d3('0x2c')][_0xa1d3('0x31')]));_0x2aeff2[_0xa1d3('0x30')]=_0x2aeff2['attributes'][_0xa1d3('0x32')]?_0x2aeff2[_0xa1d3('0x30')]:_0x341c98['model'];_0x2aeff2['order']=qs[_0xa1d3('0x37')](_0x192100[_0xa1d3('0x2c')][_0xa1d3('0x37')]);_0x2aeff2['where']=qs['filters'](_[_0xa1d3('0x4a')](_0x192100['query'],_0x341c98[_0xa1d3('0x2e')]));if(_0x192100['query'][_0xa1d3('0x38')]){_0x2aeff2[_0xa1d3('0x3a')]=_[_0xa1d3('0x39')](_0x2aeff2['where'],{'$or':_[_0xa1d3('0x27')](_0x2aeff2[_0xa1d3('0x30')],function(_0x4fd8a2){var _0x3abc63={};_0x3abc63[_0x4fd8a2]={'$like':'%'+_0x192100[_0xa1d3('0x2c')]['filter']+'%'};return _0x3abc63;})});}_0x2aeff2=_[_0xa1d3('0x39')]({},_0x2aeff2,_0x192100['options']);return _0x1d09b7[_0xa1d3('0x4d')](_0x2aeff2);}})[_0xa1d3('0x22')](function(_0x38cf50){if(_0x38cf50){_0x5bf4d7=_0x38cf50[_0xa1d3('0x32')];if(!_0x192100[_0xa1d3('0x2c')][_0xa1d3('0x33')](_0xa1d3('0x34'))){_0x2aeff2[_0xa1d3('0x35')]=qs['limit'](_0x192100[_0xa1d3('0x2c')][_0xa1d3('0x35')]);_0x2aeff2['offset']=qs[_0xa1d3('0x1c')](_0x192100[_0xa1d3('0x2c')][_0xa1d3('0x1c')]);}return _0x1d09b7[_0xa1d3('0x4d')](_0x2aeff2);}})['then'](function(_0x5ccd3f){if(_0x5ccd3f){return _0x5ccd3f?{'count':_0x5bf4d7,'rows':_0x5ccd3f}:null;}})['then'](respondWithResult(_0x2b82f6,null))['catch'](handleError(_0x2b82f6,null));};
\ No newline at end of file
+var _0xbb39=['json','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','options','find','create','body','getFields','findOne','ZohoField','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','count','offset','set','Content-Range'];(function(_0x5e09c5,_0x9abc70){var _0xcf3bc1=function(_0x47b9e6){while(--_0x47b9e6){_0x5e09c5['push'](_0x5e09c5['shift']());}};_0xcf3bc1(++_0x9abc70);}(_0xbb39,0x126));var _0x9bb3=function(_0x38a62f,_0x26b533){_0x38a62f=_0x38a62f-0x0;var _0x1f734b=_0xbb39[_0x38a62f];return _0x1f734b;};'use strict';var emlformat=require(_0x9bb3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9bb3('0x1'));var jsonpatch=require(_0x9bb3('0x2'));var rp=require(_0x9bb3('0x3'));var moment=require(_0x9bb3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9bb3('0x5'));var util=require(_0x9bb3('0x6'));var path=require('path');var sox=require(_0x9bb3('0x7'));var csv=require('to-csv');var ejs=require(_0x9bb3('0x8'));var fs=require('fs');var fs_extra=require(_0x9bb3('0x9'));var _=require(_0x9bb3('0xa'));var squel=require(_0x9bb3('0xb'));var crypto=require(_0x9bb3('0xc'));var jsforce=require(_0x9bb3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x9bb3('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9bb3('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9bb3('0x10'));var as=require(_0x9bb3('0x11'));var hardwareService=require(_0x9bb3('0x12'));var logger=require(_0x9bb3('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x9bb3('0x14'));var licenseUtil=require(_0x9bb3('0x15'));var db=require(_0x9bb3('0x16'))['db'];function respondWithStatusCode(_0x41fd8f,_0x295c10){_0x295c10=_0x295c10||0xcc;return function(_0xed8a15){if(_0xed8a15){return _0x41fd8f['sendStatus'](_0x295c10);}return _0x41fd8f[_0x9bb3('0x17')](_0x295c10)[_0x9bb3('0x18')]();};}function respondWithResult(_0x510d35,_0x262bee){_0x262bee=_0x262bee||0xc8;return function(_0x193aa3){if(_0x193aa3){return _0x510d35[_0x9bb3('0x17')](_0x262bee)['json'](_0x193aa3);}};}function respondWithFilteredResult(_0x3291e1,_0x3b1389){return function(_0x59e3c5){if(_0x59e3c5){var _0x13f798=typeof _0x3b1389['offset']===_0x9bb3('0x19')&&typeof _0x3b1389['limit']==='undefined';var _0x3bbfd3=_0x59e3c5[_0x9bb3('0x1a')];var _0x25f86d=_0x13f798?0x0:_0x3b1389[_0x9bb3('0x1b')];var _0x5209b2=_0x13f798?_0x59e3c5[_0x9bb3('0x1a')]:_0x3b1389[_0x9bb3('0x1b')]+_0x3b1389['limit'];var _0xbec0e2;if(_0x5209b2>=_0x3bbfd3){_0x5209b2=_0x3bbfd3;_0xbec0e2=0xc8;}else{_0xbec0e2=0xce;}_0x3291e1['status'](_0xbec0e2);return _0x3291e1[_0x9bb3('0x1c')](_0x9bb3('0x1d'),_0x25f86d+'-'+_0x5209b2+'/'+_0x3bbfd3)[_0x9bb3('0x1e')](_0x59e3c5);}return null;};}function patchUpdates(_0x52fb17){return function(_0x5e0d7a){try{jsonpatch[_0x9bb3('0x1f')](_0x5e0d7a,_0x52fb17,!![]);}catch(_0x5054a1){return BPromise[_0x9bb3('0x20')](_0x5054a1);}return _0x5e0d7a[_0x9bb3('0x21')]();};}function saveUpdates(_0x390f9d,_0x3cc790){return function(_0x3b2c90){if(_0x3b2c90){return _0x3b2c90[_0x9bb3('0x22')](_0x390f9d)[_0x9bb3('0x23')](function(_0x6f723c){return _0x6f723c;});}return null;};}function removeEntity(_0x417311,_0x5d07a9){return function(_0x178d60){if(_0x178d60){return _0x178d60[_0x9bb3('0x24')]()['then'](function(){_0x417311[_0x9bb3('0x17')](0xcc)[_0x9bb3('0x18')]();});}};}function handleEntityNotFound(_0x288284,_0x4fa9db){return function(_0xcc619d){if(!_0xcc619d){_0x288284[_0x9bb3('0x25')](0x194);}return _0xcc619d;};}function handleError(_0x51cba5,_0x2e0460){_0x2e0460=_0x2e0460||0x1f4;return function(_0x4bcc3a){logger[_0x9bb3('0x26')](_0x4bcc3a['stack']);if(_0x4bcc3a[_0x9bb3('0x27')]){delete _0x4bcc3a[_0x9bb3('0x27')];}_0x51cba5['status'](_0x2e0460)[_0x9bb3('0x28')](_0x4bcc3a);};}exports[_0x9bb3('0x29')]=function(_0x402d46,_0x40abb2){var _0x3e04d2={},_0x2464e0={},_0x15db06={'count':0x0,'rows':[]};var _0x1bfbc9=_[_0x9bb3('0x2a')](db[_0x9bb3('0x2b')][_0x9bb3('0x2c')],function(_0x131fb6){return{'name':_0x131fb6[_0x9bb3('0x2d')],'type':_0x131fb6['type'][_0x9bb3('0x2e')]};});_0x2464e0[_0x9bb3('0x2f')]=_['map'](_0x1bfbc9,_0x9bb3('0x27'));_0x2464e0[_0x9bb3('0x30')]=_[_0x9bb3('0x31')](_0x402d46['query']);_0x2464e0[_0x9bb3('0x32')]=_[_0x9bb3('0x33')](_0x2464e0[_0x9bb3('0x2f')],_0x2464e0[_0x9bb3('0x30')]);_0x3e04d2[_0x9bb3('0x34')]=_[_0x9bb3('0x33')](_0x2464e0[_0x9bb3('0x2f')],qs['fields'](_0x402d46[_0x9bb3('0x30')][_0x9bb3('0x35')]));_0x3e04d2[_0x9bb3('0x34')]=_0x3e04d2[_0x9bb3('0x34')][_0x9bb3('0x36')]?_0x3e04d2[_0x9bb3('0x34')]:_0x2464e0[_0x9bb3('0x2f')];if(!_0x402d46[_0x9bb3('0x30')][_0x9bb3('0x37')](_0x9bb3('0x38'))){_0x3e04d2[_0x9bb3('0x39')]=qs[_0x9bb3('0x39')](_0x402d46['query'][_0x9bb3('0x39')]);_0x3e04d2[_0x9bb3('0x1b')]=qs[_0x9bb3('0x1b')](_0x402d46[_0x9bb3('0x30')]['offset']);}_0x3e04d2[_0x9bb3('0x3a')]=qs[_0x9bb3('0x3b')](_0x402d46['query'][_0x9bb3('0x3b')]);_0x3e04d2[_0x9bb3('0x3c')]=qs[_0x9bb3('0x32')](_[_0x9bb3('0x3d')](_0x402d46['query'],_0x2464e0[_0x9bb3('0x32')]),_0x1bfbc9);if(_0x402d46[_0x9bb3('0x30')][_0x9bb3('0x3e')]){_0x3e04d2['where']=_['merge'](_0x3e04d2[_0x9bb3('0x3c')],{'$or':_[_0x9bb3('0x2a')](_0x1bfbc9,function(_0x172b86){if(_0x172b86[_0x9bb3('0x3f')]!==_0x9bb3('0x40')){var _0x564a48={};_0x564a48[_0x172b86['name']]={'$like':'%'+_0x402d46['query']['filter']+'%'};return _0x564a48;}})});}_0x3e04d2=_[_0x9bb3('0x41')]({},_0x3e04d2,_0x402d46['options']);var _0x5e760b={'where':_0x3e04d2['where']};return db[_0x9bb3('0x2b')][_0x9bb3('0x1a')](_0x5e760b)[_0x9bb3('0x23')](function(_0x5e34b5){_0x15db06['count']=_0x5e34b5;if(_0x402d46['query'][_0x9bb3('0x42')]){_0x3e04d2['include']=[{'all':!![]}];}return db[_0x9bb3('0x2b')][_0x9bb3('0x43')](_0x3e04d2);})[_0x9bb3('0x23')](function(_0x25cd1c){_0x15db06[_0x9bb3('0x44')]=_0x25cd1c;return _0x15db06;})[_0x9bb3('0x23')](respondWithFilteredResult(_0x40abb2,_0x3e04d2))[_0x9bb3('0x45')](handleError(_0x40abb2,null));};exports[_0x9bb3('0x46')]=function(_0x3a1e97,_0x2bcb94){var _0x4298cb={'raw':![],'where':{'id':_0x3a1e97[_0x9bb3('0x47')]['id']}},_0x190e06={};_0x190e06[_0x9bb3('0x2f')]=_[_0x9bb3('0x31')](db[_0x9bb3('0x2b')][_0x9bb3('0x2c')]);_0x190e06[_0x9bb3('0x30')]=_[_0x9bb3('0x31')](_0x3a1e97['query']);_0x190e06['filters']=_[_0x9bb3('0x33')](_0x190e06[_0x9bb3('0x2f')],_0x190e06[_0x9bb3('0x30')]);_0x4298cb['attributes']=_['intersection'](_0x190e06[_0x9bb3('0x2f')],qs[_0x9bb3('0x35')](_0x3a1e97[_0x9bb3('0x30')]['fields']));_0x4298cb[_0x9bb3('0x34')]=_0x4298cb[_0x9bb3('0x34')][_0x9bb3('0x36')]?_0x4298cb[_0x9bb3('0x34')]:_0x190e06[_0x9bb3('0x2f')];if(_0x3a1e97[_0x9bb3('0x30')]['includeAll']){_0x4298cb['include']=[{'all':!![]}];}_0x4298cb=_[_0x9bb3('0x41')]({},_0x4298cb,_0x3a1e97[_0x9bb3('0x48')]);return db[_0x9bb3('0x2b')][_0x9bb3('0x49')](_0x4298cb)[_0x9bb3('0x23')](handleEntityNotFound(_0x2bcb94,null))[_0x9bb3('0x23')](respondWithResult(_0x2bcb94,null))['catch'](handleError(_0x2bcb94,null));};exports[_0x9bb3('0x4a')]=function(_0x23e8e7,_0x39d3eb){return db[_0x9bb3('0x2b')]['create'](_0x23e8e7[_0x9bb3('0x4b')],{})['then'](respondWithResult(_0x39d3eb,0xc9))[_0x9bb3('0x45')](handleError(_0x39d3eb,null));};exports[_0x9bb3('0x22')]=function(_0x34a34f,_0xd47a0b){if(_0x34a34f[_0x9bb3('0x4b')]['id']){delete _0x34a34f[_0x9bb3('0x4b')]['id'];}return db[_0x9bb3('0x2b')][_0x9bb3('0x49')]({'where':{'id':_0x34a34f['params']['id']}})[_0x9bb3('0x23')](handleEntityNotFound(_0xd47a0b,null))[_0x9bb3('0x23')](saveUpdates(_0x34a34f['body'],null))[_0x9bb3('0x23')](respondWithResult(_0xd47a0b,null))['catch'](handleError(_0xd47a0b,null));};exports[_0x9bb3('0x24')]=function(_0xe35576,_0x2b3870){return db[_0x9bb3('0x2b')]['find']({'where':{'id':_0xe35576[_0x9bb3('0x47')]['id']}})[_0x9bb3('0x23')](handleEntityNotFound(_0x2b3870,null))[_0x9bb3('0x23')](removeEntity(_0x2b3870,null))[_0x9bb3('0x45')](handleError(_0x2b3870,null));};exports[_0x9bb3('0x4c')]=function(_0x3d171f,_0x5a7ced,_0xd57314){var _0x2f4326={};var _0x30243b={};var _0x51a48e;var _0x5b2e80;return db[_0x9bb3('0x2b')][_0x9bb3('0x4d')]({'where':{'id':_0x3d171f[_0x9bb3('0x47')]['id']}})[_0x9bb3('0x23')](handleEntityNotFound(_0x5a7ced,null))[_0x9bb3('0x23')](function(_0x2b732c){if(_0x2b732c){_0x51a48e=_0x2b732c;_0x30243b[_0x9bb3('0x2f')]=_[_0x9bb3('0x31')](db[_0x9bb3('0x4e')][_0x9bb3('0x2c')]);_0x30243b[_0x9bb3('0x30')]=_['keys'](_0x3d171f[_0x9bb3('0x30')]);_0x30243b[_0x9bb3('0x32')]=_['intersection'](_0x30243b[_0x9bb3('0x2f')],_0x30243b[_0x9bb3('0x30')]);_0x2f4326[_0x9bb3('0x34')]=_['intersection'](_0x30243b[_0x9bb3('0x2f')],qs[_0x9bb3('0x35')](_0x3d171f[_0x9bb3('0x30')]['fields']));_0x2f4326['attributes']=_0x2f4326[_0x9bb3('0x34')][_0x9bb3('0x36')]?_0x2f4326[_0x9bb3('0x34')]:_0x30243b[_0x9bb3('0x2f')];_0x2f4326['order']=qs[_0x9bb3('0x3b')](_0x3d171f[_0x9bb3('0x30')][_0x9bb3('0x3b')]);_0x2f4326[_0x9bb3('0x3c')]=qs[_0x9bb3('0x32')](_[_0x9bb3('0x3d')](_0x3d171f['query'],_0x30243b[_0x9bb3('0x32')]));if(_0x3d171f[_0x9bb3('0x30')]['filter']){_0x2f4326[_0x9bb3('0x3c')]=_[_0x9bb3('0x41')](_0x2f4326[_0x9bb3('0x3c')],{'$or':_['map'](_0x2f4326[_0x9bb3('0x34')],function(_0x5bbb1c){var _0x44ce2d={};_0x44ce2d[_0x5bbb1c]={'$like':'%'+_0x3d171f[_0x9bb3('0x30')][_0x9bb3('0x3e')]+'%'};return _0x44ce2d;})});}_0x2f4326=_[_0x9bb3('0x41')]({},_0x2f4326,_0x3d171f[_0x9bb3('0x48')]);return _0x51a48e[_0x9bb3('0x4c')](_0x2f4326);}})[_0x9bb3('0x23')](function(_0x1434da){if(_0x1434da){_0x5b2e80=_0x1434da['length'];if(!_0x3d171f[_0x9bb3('0x30')][_0x9bb3('0x37')]('nolimit')){_0x2f4326[_0x9bb3('0x39')]=qs['limit'](_0x3d171f[_0x9bb3('0x30')][_0x9bb3('0x39')]);_0x2f4326['offset']=qs[_0x9bb3('0x1b')](_0x3d171f[_0x9bb3('0x30')][_0x9bb3('0x1b')]);}return _0x51a48e['getFields'](_0x2f4326);}})[_0x9bb3('0x23')](function(_0x2cd5a0){if(_0x2cd5a0){return _0x2cd5a0?{'count':_0x5b2e80,'rows':_0x2cd5a0}:null;}})[_0x9bb3('0x23')](respondWithResult(_0x5a7ced,null))['catch'](handleError(_0x5a7ced,null));};exports[_0x9bb3('0x4f')]=function(_0x15b65d,_0x420961,_0xd48cdd){var _0x4d4cbc={};var _0x3aa527={};var _0x3ed1ca;var _0x4f3367;return db[_0x9bb3('0x2b')][_0x9bb3('0x4d')]({'where':{'id':_0x15b65d[_0x9bb3('0x47')]['id']}})['then'](handleEntityNotFound(_0x420961,null))['then'](function(_0x1a5ef1){if(_0x1a5ef1){_0x3ed1ca=_0x1a5ef1;_0x3aa527[_0x9bb3('0x2f')]=_[_0x9bb3('0x31')](db[_0x9bb3('0x4e')][_0x9bb3('0x2c')]);_0x3aa527[_0x9bb3('0x30')]=_[_0x9bb3('0x31')](_0x15b65d['query']);_0x3aa527[_0x9bb3('0x32')]=_['intersection'](_0x3aa527['model'],_0x3aa527[_0x9bb3('0x30')]);_0x4d4cbc['attributes']=_[_0x9bb3('0x33')](_0x3aa527[_0x9bb3('0x2f')],qs['fields'](_0x15b65d[_0x9bb3('0x30')][_0x9bb3('0x35')]));_0x4d4cbc[_0x9bb3('0x34')]=_0x4d4cbc[_0x9bb3('0x34')][_0x9bb3('0x36')]?_0x4d4cbc['attributes']:_0x3aa527[_0x9bb3('0x2f')];_0x4d4cbc['order']=qs[_0x9bb3('0x3b')](_0x15b65d[_0x9bb3('0x30')]['sort']);_0x4d4cbc[_0x9bb3('0x3c')]=qs['filters'](_[_0x9bb3('0x3d')](_0x15b65d[_0x9bb3('0x30')],_0x3aa527[_0x9bb3('0x32')]));if(_0x15b65d[_0x9bb3('0x30')][_0x9bb3('0x3e')]){_0x4d4cbc[_0x9bb3('0x3c')]=_[_0x9bb3('0x41')](_0x4d4cbc[_0x9bb3('0x3c')],{'$or':_[_0x9bb3('0x2a')](_0x4d4cbc[_0x9bb3('0x34')],function(_0x4f9040){var _0x105da1={};_0x105da1[_0x4f9040]={'$like':'%'+_0x15b65d[_0x9bb3('0x30')]['filter']+'%'};return _0x105da1;})});}_0x4d4cbc=_[_0x9bb3('0x41')]({},_0x4d4cbc,_0x15b65d[_0x9bb3('0x48')]);return _0x3ed1ca[_0x9bb3('0x4f')](_0x4d4cbc);}})['then'](function(_0x11a8cf){if(_0x11a8cf){_0x4f3367=_0x11a8cf[_0x9bb3('0x36')];if(!_0x15b65d[_0x9bb3('0x30')][_0x9bb3('0x37')](_0x9bb3('0x38'))){_0x4d4cbc['limit']=qs[_0x9bb3('0x39')](_0x15b65d[_0x9bb3('0x30')][_0x9bb3('0x39')]);_0x4d4cbc[_0x9bb3('0x1b')]=qs[_0x9bb3('0x1b')](_0x15b65d[_0x9bb3('0x30')]['offset']);}return _0x3ed1ca[_0x9bb3('0x4f')](_0x4d4cbc);}})[_0x9bb3('0x23')](function(_0x2091ad){if(_0x2091ad){return _0x2091ad?{'count':_0x4f3367,'rows':_0x2091ad}:null;}})['then'](respondWithResult(_0x420961,null))[_0x9bb3('0x45')](handleError(_0x420961,null));};exports[_0x9bb3('0x50')]=function(_0x2927f0,_0x310725,_0x42fdc){var _0x43830e={};var _0x3686c9={};var _0x4dbcb3;var _0x15a7d8;return db[_0x9bb3('0x2b')][_0x9bb3('0x4d')]({'where':{'id':_0x2927f0[_0x9bb3('0x47')]['id']}})[_0x9bb3('0x23')](handleEntityNotFound(_0x310725,null))['then'](function(_0x3be682){if(_0x3be682){_0x4dbcb3=_0x3be682;_0x3686c9['model']=_[_0x9bb3('0x31')](db[_0x9bb3('0x4e')][_0x9bb3('0x2c')]);_0x3686c9['query']=_['keys'](_0x2927f0[_0x9bb3('0x30')]);_0x3686c9[_0x9bb3('0x32')]=_[_0x9bb3('0x33')](_0x3686c9[_0x9bb3('0x2f')],_0x3686c9[_0x9bb3('0x30')]);_0x43830e[_0x9bb3('0x34')]=_[_0x9bb3('0x33')](_0x3686c9[_0x9bb3('0x2f')],qs[_0x9bb3('0x35')](_0x2927f0[_0x9bb3('0x30')][_0x9bb3('0x35')]));_0x43830e[_0x9bb3('0x34')]=_0x43830e[_0x9bb3('0x34')]['length']?_0x43830e[_0x9bb3('0x34')]:_0x3686c9[_0x9bb3('0x2f')];_0x43830e['order']=qs['sort'](_0x2927f0['query']['sort']);_0x43830e['where']=qs['filters'](_['pick'](_0x2927f0['query'],_0x3686c9[_0x9bb3('0x32')]));if(_0x2927f0[_0x9bb3('0x30')][_0x9bb3('0x3e')]){_0x43830e[_0x9bb3('0x3c')]=_['merge'](_0x43830e[_0x9bb3('0x3c')],{'$or':_[_0x9bb3('0x2a')](_0x43830e[_0x9bb3('0x34')],function(_0x40c825){var _0xcbbce7={};_0xcbbce7[_0x40c825]={'$like':'%'+_0x2927f0[_0x9bb3('0x30')][_0x9bb3('0x3e')]+'%'};return _0xcbbce7;})});}_0x43830e=_[_0x9bb3('0x41')]({},_0x43830e,_0x2927f0[_0x9bb3('0x48')]);return _0x4dbcb3[_0x9bb3('0x50')](_0x43830e);}})[_0x9bb3('0x23')](function(_0x166333){if(_0x166333){_0x15a7d8=_0x166333['length'];if(!_0x2927f0[_0x9bb3('0x30')]['hasOwnProperty'](_0x9bb3('0x38'))){_0x43830e['limit']=qs[_0x9bb3('0x39')](_0x2927f0[_0x9bb3('0x30')][_0x9bb3('0x39')]);_0x43830e['offset']=qs[_0x9bb3('0x1b')](_0x2927f0['query'][_0x9bb3('0x1b')]);}return _0x4dbcb3['getDescriptions'](_0x43830e);}})['then'](function(_0x1d1b0f){if(_0x1d1b0f){return _0x1d1b0f?{'count':_0x15a7d8,'rows':_0x1d1b0f}:null;}})[_0x9bb3('0x23')](respondWithResult(_0x310725,null))[_0x9bb3('0x45')](handleError(_0x310725,null));};
\ No newline at end of file
index 664e1ad..6c0586a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35f1=['../../config/environment','exports','ZohoConfiguration','int_zoho_configurations','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2e58c7,_0x23d092){var _0x26eb00=function(_0x343124){while(--_0x343124){_0x2e58c7['push'](_0x2e58c7['shift']());}};_0x26eb00(++_0x23d092);}(_0x35f1,0x7d));var _0x135f=function(_0x54d5ba,_0x1f1ba9){_0x54d5ba=_0x54d5ba-0x0;var _0x6a592e=_0x35f1[_0x54d5ba];return _0x6a592e;};'use strict';var _=require('lodash');var util=require(_0x135f('0x0'));var logger=require(_0x135f('0x1'))(_0x135f('0x2'));var moment=require(_0x135f('0x3'));var BPromise=require(_0x135f('0x4'));var rp=require(_0x135f('0x5'));var fs=require('fs');var path=require(_0x135f('0x6'));var rimraf=require('rimraf');var config=require(_0x135f('0x7'));var attributes=require('./intZohoConfiguration.attributes');module[_0x135f('0x8')]=function(_0x83721f,_0x1e8f37){return _0x83721f['define'](_0x135f('0x9'),attributes,{'tableName':_0x135f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x440c=['int_zoho_configurations','util','../../config/logger','api','bluebird','../../config/environment','exports','define','ZohoConfiguration'];(function(_0x3a9623,_0x1ca157){var _0xf7c401=function(_0x8b55ae){while(--_0x8b55ae){_0x3a9623['push'](_0x3a9623['shift']());}};_0xf7c401(++_0x1ca157);}(_0x440c,0x172));var _0xc440=function(_0x1ab57e,_0x14630d){_0x1ab57e=_0x1ab57e-0x0;var _0x32cf90=_0x440c[_0x1ab57e];return _0x32cf90;};'use strict';var _=require('lodash');var util=require(_0xc440('0x0'));var logger=require(_0xc440('0x1'))(_0xc440('0x2'));var moment=require('moment');var BPromise=require(_0xc440('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc440('0x4'));var attributes=require('./intZohoConfiguration.attributes');module[_0xc440('0x5')]=function(_0x1f028c,_0x480c6e){return _0x1f028c[_0xc440('0x6')](_0xc440('0x7'),attributes,{'tableName':_0xc440('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59691e9..bf4e50b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3add=['request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','ZohoConfiguration,\x20%s,\x20%s'];(function(_0xcdf809,_0x2881f0){var _0x4d4d70=function(_0x277c61){while(--_0x277c61){_0xcdf809['push'](_0xcdf809['shift']());}};_0x4d4d70(++_0x2881f0);}(_0x3add,0xb8));var _0xd3ad=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x3add[_0x4b055c];return _0x4b62bb;};'use strict';var _=require('lodash');var util=require(_0xd3ad('0x0'));var moment=require(_0xd3ad('0x1'));var BPromise=require('bluebird');var rs=require(_0xd3ad('0x2'));var fs=require('fs');var Redis=require(_0xd3ad('0x3'));var db=require(_0xd3ad('0x4'))['db'];var utils=require(_0xd3ad('0x5'));var logger=require(_0xd3ad('0x6'))(_0xd3ad('0x7'));var config=require(_0xd3ad('0x8'));var jayson=require(_0xd3ad('0x9'));var client=jayson[_0xd3ad('0xa')][_0xd3ad('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x132037,_0x127996,_0x2dc4ad){return new BPromise(function(_0x2fc595,_0x1e0f9e){return client['request'](_0x132037,_0x2dc4ad)['then'](function(_0x5245d8){logger[_0xd3ad('0xc')](_0xd3ad('0xd'),_0x127996,_0xd3ad('0xe'));logger[_0xd3ad('0xf')](_0xd3ad('0x10'),_0x127996,'request\x20sent',JSON[_0xd3ad('0x11')](_0x5245d8));if(_0x5245d8[_0xd3ad('0x12')]){if(_0x5245d8[_0xd3ad('0x12')][_0xd3ad('0x13')]===0x1f4){logger[_0xd3ad('0x12')](_0xd3ad('0xd'),_0x127996,_0x5245d8[_0xd3ad('0x12')][_0xd3ad('0x14')]);return _0x1e0f9e(_0x5245d8[_0xd3ad('0x12')][_0xd3ad('0x14')]);}logger[_0xd3ad('0x12')](_0xd3ad('0xd'),_0x127996,_0x5245d8[_0xd3ad('0x12')][_0xd3ad('0x14')]);return _0x2fc595(_0x5245d8[_0xd3ad('0x12')]['message']);}else{logger['info'](_0xd3ad('0xd'),_0x127996,_0xd3ad('0xe'));_0x2fc595(_0x5245d8[_0xd3ad('0x15')][_0xd3ad('0x14')]);}})['catch'](function(_0x594226){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x127996,_0x594226);_0x1e0f9e(_0x594226);});});}
\ No newline at end of file
+var _0xa21e=['../../config/logger','jayson/promise','request','ZohoConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0xa16e4e,_0x50a69b){var _0x1da279=function(_0x3fe938){while(--_0x3fe938){_0xa16e4e['push'](_0xa16e4e['shift']());}};_0x1da279(++_0x50a69b);}(_0xa21e,0x12b));var _0xea21=function(_0x5ef55a,_0x2a03b1){_0x5ef55a=_0x5ef55a-0x0;var _0x20ae40=_0xa21e[_0x5ef55a];return _0x20ae40;};'use strict';var _=require(_0xea21('0x0'));var util=require('util');var moment=require(_0xea21('0x1'));var BPromise=require(_0xea21('0x2'));var rs=require(_0xea21('0x3'));var fs=require('fs');var Redis=require(_0xea21('0x4'));var db=require(_0xea21('0x5'))['db'];var utils=require(_0xea21('0x6'));var logger=require(_0xea21('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xea21('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x225035,_0x1a7877,_0xaa683e){return new BPromise(function(_0x508f65,_0x294c82){return client[_0xea21('0x9')](_0x225035,_0xaa683e)['then'](function(_0x557ca8){logger['info'](_0xea21('0xa'),_0x1a7877,'request\x20sent');logger[_0xea21('0xb')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x1a7877,_0xea21('0xc'),JSON[_0xea21('0xd')](_0x557ca8));if(_0x557ca8[_0xea21('0xe')]){if(_0x557ca8[_0xea21('0xe')][_0xea21('0xf')]===0x1f4){logger['error'](_0xea21('0xa'),_0x1a7877,_0x557ca8[_0xea21('0xe')]['message']);return _0x294c82(_0x557ca8[_0xea21('0xe')]['message']);}logger['error'](_0xea21('0xa'),_0x1a7877,_0x557ca8[_0xea21('0xe')]['message']);return _0x508f65(_0x557ca8['error'][_0xea21('0x10')]);}else{logger['info'](_0xea21('0xa'),_0x1a7877,_0xea21('0xc'));_0x508f65(_0x557ca8[_0xea21('0x11')]['message']);}})['catch'](function(_0x35cc6c){logger[_0xea21('0xe')](_0xea21('0xa'),_0x1a7877,_0x35cc6c);_0x294c82(_0x35cc6c);});});}
\ No newline at end of file
index 4ff3b4a..b05002f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22f1=['show','create','put','update','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoField.controller','get','index','/:id','isAuthenticated'];(function(_0x3a03ae,_0x4b9aea){var _0x52593e=function(_0x3bf2ad){while(--_0x3bf2ad){_0x3a03ae['push'](_0x3a03ae['shift']());}};_0x52593e(++_0x4b9aea);}(_0x22f1,0x145));var _0x122f=function(_0x399bd0,_0x520cfa){_0x399bd0=_0x399bd0-0x0;var _0x37a8a7=_0x22f1[_0x399bd0];return _0x37a8a7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x122f('0x0'));var timeout=require(_0x122f('0x1'));var express=require(_0x122f('0x2'));var router=express['Router']();var fs_extra=require(_0x122f('0x3'));var auth=require(_0x122f('0x4'));var interaction=require(_0x122f('0x5'));var config=require('../../config/environment');var controller=require(_0x122f('0x6'));router[_0x122f('0x7')]('/',auth['isAuthenticated'](),controller[_0x122f('0x8')]);router[_0x122f('0x7')](_0x122f('0x9'),auth[_0x122f('0xa')](),controller[_0x122f('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x122f('0xc')]);router[_0x122f('0xd')](_0x122f('0x9'),auth[_0x122f('0xa')](),controller[_0x122f('0xe')]);router['delete'](_0x122f('0x9'),auth[_0x122f('0xa')](),controller['destroy']);module[_0x122f('0xf')]=router;
\ No newline at end of file
+var _0x7f09=['isAuthenticated','show','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get'];(function(_0x4c61fc,_0x275686){var _0x4c360f=function(_0x2e6b51){while(--_0x2e6b51){_0x4c61fc['push'](_0x4c61fc['shift']());}};_0x4c360f(++_0x275686);}(_0x7f09,0x1b7));var _0x97f0=function(_0x512a86,_0x3e0aa4){_0x512a86=_0x512a86-0x0;var _0xf1b854=_0x7f09[_0x512a86];return _0xf1b854;};'use strict';var multer=require(_0x97f0('0x0'));var util=require(_0x97f0('0x1'));var path=require('path');var timeout=require(_0x97f0('0x2'));var express=require(_0x97f0('0x3'));var router=express[_0x97f0('0x4')]();var fs_extra=require(_0x97f0('0x5'));var auth=require(_0x97f0('0x6'));var interaction=require(_0x97f0('0x7'));var config=require(_0x97f0('0x8'));var controller=require(_0x97f0('0x9'));router[_0x97f0('0xa')]('/',auth[_0x97f0('0xb')](),controller['index']);router[_0x97f0('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x97f0('0xc')]);router['post']('/',auth[_0x97f0('0xb')](),controller['create']);router['put'](_0x97f0('0xd'),auth[_0x97f0('0xb')](),controller[_0x97f0('0xe')]);router[_0x97f0('0xf')](_0x97f0('0xd'),auth[_0x97f0('0xb')](),controller[_0x97f0('0x10')]);module[_0x97f0('0x11')]=router;
\ No newline at end of file
index a9e357b..4c6b22b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66aa=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize'];(function(_0x13ed69,_0x229161){var _0x50c72e=function(_0x4f1491){while(--_0x4f1491){_0x13ed69['push'](_0x13ed69['shift']());}};_0x50c72e(++_0x229161);}(_0x66aa,0x131));var _0xa66a=function(_0x12f35c,_0x500384){_0x12f35c=_0x12f35c-0x0;var _0x3a318a=_0x66aa[_0x12f35c];return _0x3a318a;};'use strict';var Sequelize=require(_0xa66a('0x0'));module[_0xa66a('0x1')]={'type':{'type':Sequelize[_0xa66a('0x2')](_0xa66a('0x3'),_0xa66a('0x4'),_0xa66a('0x5'),_0xa66a('0x6'),_0xa66a('0x7')),'defaultValue':_0xa66a('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xa66a('0x8')]},'keyType':{'type':Sequelize[_0xa66a('0x2')]('string','variable',_0xa66a('0x5'))},'keyContent':{'type':Sequelize[_0xa66a('0x8')]},'idField':{'type':Sequelize[_0xa66a('0x8')]},'nameField':{'type':Sequelize[_0xa66a('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8ac2=['customVariable','BOOLEAN','sequelize','exports','string','variable','picklist','STRING','ENUM'];(function(_0x2809e3,_0x8e5e76){var _0x5cdb21=function(_0xbace9b){while(--_0xbace9b){_0x2809e3['push'](_0x2809e3['shift']());}};_0x5cdb21(++_0x8e5e76);}(_0x8ac2,0x173));var _0x28ac=function(_0x58a4ac,_0x26f3e7){_0x58a4ac=_0x58a4ac-0x0;var _0x435e2d=_0x8ac2[_0x58a4ac];return _0x435e2d;};'use strict';var Sequelize=require(_0x28ac('0x0'));module[_0x28ac('0x1')]={'type':{'type':Sequelize['ENUM'](_0x28ac('0x2'),_0x28ac('0x3'),'customVariable','keyValue',_0x28ac('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x28ac('0x5')]},'key':{'type':Sequelize[_0x28ac('0x5')]},'keyType':{'type':Sequelize[_0x28ac('0x6')](_0x28ac('0x2'),_0x28ac('0x3'),_0x28ac('0x7'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x28ac('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x28ac('0x5')]}};
\ No newline at end of file
index fc5cf6e..1deded5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d2=['query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','update','then','destroy','sendStatus','name','send','map','ZohoField','rawAttributes','fieldName','type','key','model'];(function(_0x5c4585,_0x3d0eab){var _0x21dede=function(_0x5c3d6a){while(--_0x5c3d6a){_0x5c4585['push'](_0x5c4585['shift']());}};_0x21dede(++_0x3d0eab);}(_0x98d2,0xb3));var _0x298d=function(_0x2d8d69,_0x8e47ff){_0x2d8d69=_0x2d8d69-0x0;var _0x39ae22=_0x98d2[_0x2d8d69];return _0x39ae22;};'use strict';var emlformat=require(_0x298d('0x0'));var rimraf=require(_0x298d('0x1'));var zipdir=require(_0x298d('0x2'));var jsonpatch=require(_0x298d('0x3'));var rp=require(_0x298d('0x4'));var moment=require(_0x298d('0x5'));var BPromise=require(_0x298d('0x6'));var Mustache=require(_0x298d('0x7'));var util=require(_0x298d('0x8'));var path=require('path');var sox=require(_0x298d('0x9'));var csv=require(_0x298d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x298d('0xb'));var _=require(_0x298d('0xc'));var squel=require(_0x298d('0xd'));var crypto=require('crypto');var jsforce=require(_0x298d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x298d('0xf'));var Papa=require('papaparse');var Redis=require(_0x298d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x298d('0x11'));var as=require(_0x298d('0x12'));var hardwareService=require(_0x298d('0x13'));var logger=require(_0x298d('0x14'))(_0x298d('0x15'));var utils=require(_0x298d('0x16'));var config=require(_0x298d('0x17'));var licenseUtil=require(_0x298d('0x18'));var db=require(_0x298d('0x19'))['db'];function respondWithStatusCode(_0x5326ff,_0xcde3b1){_0xcde3b1=_0xcde3b1||0xcc;return function(_0x58f8d1){if(_0x58f8d1){return _0x5326ff['sendStatus'](_0xcde3b1);}return _0x5326ff[_0x298d('0x1a')](_0xcde3b1)[_0x298d('0x1b')]();};}function respondWithResult(_0x30c0e3,_0x2e06c1){_0x2e06c1=_0x2e06c1||0xc8;return function(_0x6d8bdd){if(_0x6d8bdd){return _0x30c0e3[_0x298d('0x1a')](_0x2e06c1)['json'](_0x6d8bdd);}};}function respondWithFilteredResult(_0x4a641b,_0x1c6b1e){return function(_0x5ba082){if(_0x5ba082){var _0x55f5a3=typeof _0x1c6b1e[_0x298d('0x1c')]===_0x298d('0x1d')&&typeof _0x1c6b1e['limit']===_0x298d('0x1d');var _0x1caa49=_0x5ba082[_0x298d('0x1e')];var _0x4cbc15=_0x55f5a3?0x0:_0x1c6b1e[_0x298d('0x1c')];var _0x206a29=_0x55f5a3?_0x5ba082['count']:_0x1c6b1e[_0x298d('0x1c')]+_0x1c6b1e['limit'];var _0x486dbb;if(_0x206a29>=_0x1caa49){_0x206a29=_0x1caa49;_0x486dbb=0xc8;}else{_0x486dbb=0xce;}_0x4a641b[_0x298d('0x1a')](_0x486dbb);return _0x4a641b[_0x298d('0x1f')](_0x298d('0x20'),_0x4cbc15+'-'+_0x206a29+'/'+_0x1caa49)[_0x298d('0x21')](_0x5ba082);}return null;};}function patchUpdates(_0x59a5c2){return function(_0x39a942){try{jsonpatch[_0x298d('0x22')](_0x39a942,_0x59a5c2,!![]);}catch(_0x10e7ce){return BPromise[_0x298d('0x23')](_0x10e7ce);}return _0x39a942['save']();};}function saveUpdates(_0xa51293,_0x4cc025){return function(_0xfdc532){if(_0xfdc532){return _0xfdc532[_0x298d('0x24')](_0xa51293)[_0x298d('0x25')](function(_0x1d2725){return _0x1d2725;});}return null;};}function removeEntity(_0x4f2323,_0x10e07a){return function(_0x49599e){if(_0x49599e){return _0x49599e[_0x298d('0x26')]()[_0x298d('0x25')](function(){_0x4f2323[_0x298d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9da717,_0x33b4c8){return function(_0x410273){if(!_0x410273){_0x9da717[_0x298d('0x27')](0x194);}return _0x410273;};}function handleError(_0x2b9b10,_0x4acd58){_0x4acd58=_0x4acd58||0x1f4;return function(_0x510b33){logger['error'](_0x510b33['stack']);if(_0x510b33[_0x298d('0x28')]){delete _0x510b33['name'];}_0x2b9b10['status'](_0x4acd58)[_0x298d('0x29')](_0x510b33);};}exports['index']=function(_0x45add4,_0x36f10f){var _0x1b015e={},_0x2056f3={},_0x577627={'count':0x0,'rows':[]};var _0x584396=_[_0x298d('0x2a')](db[_0x298d('0x2b')][_0x298d('0x2c')],function(_0xc90cb4){return{'name':_0xc90cb4[_0x298d('0x2d')],'type':_0xc90cb4[_0x298d('0x2e')][_0x298d('0x2f')]};});_0x2056f3[_0x298d('0x30')]=_['map'](_0x584396,_0x298d('0x28'));_0x2056f3[_0x298d('0x31')]=_['keys'](_0x45add4[_0x298d('0x31')]);_0x2056f3[_0x298d('0x32')]=_['intersection'](_0x2056f3['model'],_0x2056f3['query']);_0x1b015e['attributes']=_[_0x298d('0x33')](_0x2056f3['model'],qs[_0x298d('0x34')](_0x45add4[_0x298d('0x31')][_0x298d('0x34')]));_0x1b015e[_0x298d('0x35')]=_0x1b015e[_0x298d('0x35')][_0x298d('0x36')]?_0x1b015e[_0x298d('0x35')]:_0x2056f3[_0x298d('0x30')];if(!_0x45add4[_0x298d('0x31')][_0x298d('0x37')](_0x298d('0x38'))){_0x1b015e[_0x298d('0x39')]=qs['limit'](_0x45add4[_0x298d('0x31')]['limit']);_0x1b015e[_0x298d('0x1c')]=qs[_0x298d('0x1c')](_0x45add4[_0x298d('0x31')]['offset']);}_0x1b015e[_0x298d('0x3a')]=qs[_0x298d('0x3b')](_0x45add4[_0x298d('0x31')][_0x298d('0x3b')]);_0x1b015e[_0x298d('0x3c')]=qs[_0x298d('0x32')](_[_0x298d('0x3d')](_0x45add4[_0x298d('0x31')],_0x2056f3[_0x298d('0x32')]),_0x584396);if(_0x45add4[_0x298d('0x31')][_0x298d('0x3e')]){_0x1b015e[_0x298d('0x3c')]=_[_0x298d('0x3f')](_0x1b015e[_0x298d('0x3c')],{'$or':_[_0x298d('0x2a')](_0x584396,function(_0x4875b2){if(_0x4875b2[_0x298d('0x2e')]!==_0x298d('0x40')){var _0x417569={};_0x417569[_0x4875b2[_0x298d('0x28')]]={'$like':'%'+_0x45add4[_0x298d('0x31')][_0x298d('0x3e')]+'%'};return _0x417569;}})});}_0x1b015e=_[_0x298d('0x3f')]({},_0x1b015e,_0x45add4['options']);var _0x947b8c={'where':_0x1b015e[_0x298d('0x3c')]};return db[_0x298d('0x2b')][_0x298d('0x1e')](_0x947b8c)[_0x298d('0x25')](function(_0x500fc4){_0x577627[_0x298d('0x1e')]=_0x500fc4;if(_0x45add4['query'][_0x298d('0x41')]){_0x1b015e[_0x298d('0x42')]=[{'all':!![]}];}return db[_0x298d('0x2b')][_0x298d('0x43')](_0x1b015e);})[_0x298d('0x25')](function(_0x253a42){_0x577627[_0x298d('0x44')]=_0x253a42;return _0x577627;})['then'](respondWithFilteredResult(_0x36f10f,_0x1b015e))[_0x298d('0x45')](handleError(_0x36f10f,null));};exports[_0x298d('0x46')]=function(_0x27efb9,_0x58ecc5){var _0x2ba922={'raw':!![],'where':{'id':_0x27efb9[_0x298d('0x47')]['id']}},_0x40c9ab={};_0x40c9ab[_0x298d('0x30')]=_['keys'](db[_0x298d('0x2b')]['rawAttributes']);_0x40c9ab['query']=_[_0x298d('0x48')](_0x27efb9['query']);_0x40c9ab['filters']=_[_0x298d('0x33')](_0x40c9ab[_0x298d('0x30')],_0x40c9ab['query']);_0x2ba922['attributes']=_[_0x298d('0x33')](_0x40c9ab[_0x298d('0x30')],qs['fields'](_0x27efb9['query'][_0x298d('0x34')]));_0x2ba922[_0x298d('0x35')]=_0x2ba922[_0x298d('0x35')][_0x298d('0x36')]?_0x2ba922[_0x298d('0x35')]:_0x40c9ab[_0x298d('0x30')];if(_0x27efb9['query']['includeAll']){_0x2ba922[_0x298d('0x42')]=[{'all':!![]}];}_0x2ba922=_[_0x298d('0x3f')]({},_0x2ba922,_0x27efb9['options']);return db['ZohoField']['find'](_0x2ba922)[_0x298d('0x25')](handleEntityNotFound(_0x58ecc5,null))[_0x298d('0x25')](respondWithResult(_0x58ecc5,null))[_0x298d('0x45')](handleError(_0x58ecc5,null));};exports[_0x298d('0x49')]=function(_0x455e94,_0x5b497a){return db[_0x298d('0x2b')][_0x298d('0x49')](_0x455e94['body'],{})[_0x298d('0x25')](respondWithResult(_0x5b497a,0xc9))['catch'](handleError(_0x5b497a,null));};exports[_0x298d('0x24')]=function(_0x5590aa,_0x1d4abf){if(_0x5590aa[_0x298d('0x4a')]['id']){delete _0x5590aa[_0x298d('0x4a')]['id'];}return db[_0x298d('0x2b')][_0x298d('0x4b')]({'where':{'id':_0x5590aa[_0x298d('0x47')]['id']}})[_0x298d('0x25')](handleEntityNotFound(_0x1d4abf,null))[_0x298d('0x25')](saveUpdates(_0x5590aa[_0x298d('0x4a')],null))['then'](respondWithResult(_0x1d4abf,null))['catch'](handleError(_0x1d4abf,null));};exports[_0x298d('0x26')]=function(_0x1fcf1c,_0x49186a){return db['ZohoField'][_0x298d('0x4b')]({'where':{'id':_0x1fcf1c[_0x298d('0x47')]['id']}})[_0x298d('0x25')](handleEntityNotFound(_0x49186a,null))[_0x298d('0x25')](removeEntity(_0x49186a,null))[_0x298d('0x45')](handleError(_0x49186a,null));};
\ No newline at end of file
+var _0x6302=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','then','destroy','end','stack','name','send','index','map','ZohoField','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','count','include','rows','catch','params','rawAttributes','includeAll','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x20be97,_0x347bb5){var _0x3492f8=function(_0x59e258){while(--_0x59e258){_0x20be97['push'](_0x20be97['shift']());}};_0x3492f8(++_0x347bb5);}(_0x6302,0x109));var _0x2630=function(_0x250228,_0x86c53d){_0x250228=_0x250228-0x0;var _0x3f001d=_0x6302[_0x250228];return _0x3f001d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2630('0x0'));var zipdir=require(_0x2630('0x1'));var jsonpatch=require(_0x2630('0x2'));var rp=require(_0x2630('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2630('0x4'));var util=require('util');var path=require('path');var sox=require(_0x2630('0x5'));var csv=require(_0x2630('0x6'));var ejs=require(_0x2630('0x7'));var fs=require('fs');var fs_extra=require(_0x2630('0x8'));var _=require(_0x2630('0x9'));var squel=require(_0x2630('0xa'));var crypto=require(_0x2630('0xb'));var jsforce=require(_0x2630('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2630('0xd'));var Papa=require(_0x2630('0xe'));var Redis=require('ioredis');var authService=require(_0x2630('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x2630('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2630('0x11'))(_0x2630('0x12'));var utils=require(_0x2630('0x13'));var config=require(_0x2630('0x14'));var licenseUtil=require(_0x2630('0x15'));var db=require(_0x2630('0x16'))['db'];function respondWithStatusCode(_0x50b8e5,_0x4424c1){_0x4424c1=_0x4424c1||0xcc;return function(_0x35ad63){if(_0x35ad63){return _0x50b8e5[_0x2630('0x17')](_0x4424c1);}return _0x50b8e5[_0x2630('0x18')](_0x4424c1)['end']();};}function respondWithResult(_0x33f40d,_0x467d72){_0x467d72=_0x467d72||0xc8;return function(_0x23179e){if(_0x23179e){return _0x33f40d['status'](_0x467d72)[_0x2630('0x19')](_0x23179e);}};}function respondWithFilteredResult(_0x53b1d2,_0x1e4731){return function(_0x37c8d7){if(_0x37c8d7){var _0x3b1b78=typeof _0x1e4731[_0x2630('0x1a')]===_0x2630('0x1b')&&typeof _0x1e4731[_0x2630('0x1c')]===_0x2630('0x1b');var _0x2c7855=_0x37c8d7['count'];var _0x427b3c=_0x3b1b78?0x0:_0x1e4731['offset'];var _0x4b6fb9=_0x3b1b78?_0x37c8d7['count']:_0x1e4731[_0x2630('0x1a')]+_0x1e4731[_0x2630('0x1c')];var _0x1fd31c;if(_0x4b6fb9>=_0x2c7855){_0x4b6fb9=_0x2c7855;_0x1fd31c=0xc8;}else{_0x1fd31c=0xce;}_0x53b1d2[_0x2630('0x18')](_0x1fd31c);return _0x53b1d2[_0x2630('0x1d')](_0x2630('0x1e'),_0x427b3c+'-'+_0x4b6fb9+'/'+_0x2c7855)[_0x2630('0x19')](_0x37c8d7);}return null;};}function patchUpdates(_0x608d15){return function(_0x13b5d5){try{jsonpatch[_0x2630('0x1f')](_0x13b5d5,_0x608d15,!![]);}catch(_0x713af1){return BPromise[_0x2630('0x20')](_0x713af1);}return _0x13b5d5['save']();};}function saveUpdates(_0x47a037,_0x2c4a50){return function(_0x42f98a){if(_0x42f98a){return _0x42f98a['update'](_0x47a037)[_0x2630('0x21')](function(_0x5c67b7){return _0x5c67b7;});}return null;};}function removeEntity(_0x452a9c,_0x3d303a){return function(_0xafc7c6){if(_0xafc7c6){return _0xafc7c6[_0x2630('0x22')]()['then'](function(){_0x452a9c[_0x2630('0x18')](0xcc)[_0x2630('0x23')]();});}};}function handleEntityNotFound(_0x126ec3,_0x81ced7){return function(_0x3468dc){if(!_0x3468dc){_0x126ec3[_0x2630('0x17')](0x194);}return _0x3468dc;};}function handleError(_0x4ef7fb,_0xb6442a){_0xb6442a=_0xb6442a||0x1f4;return function(_0x4acf70){logger['error'](_0x4acf70[_0x2630('0x24')]);if(_0x4acf70[_0x2630('0x25')]){delete _0x4acf70[_0x2630('0x25')];}_0x4ef7fb['status'](_0xb6442a)[_0x2630('0x26')](_0x4acf70);};}exports[_0x2630('0x27')]=function(_0x3e0f49,_0x4c63a5){var _0x3ad356={},_0x4ad461={},_0x336226={'count':0x0,'rows':[]};var _0x4fe723=_[_0x2630('0x28')](db[_0x2630('0x29')]['rawAttributes'],function(_0x683f3d){return{'name':_0x683f3d['fieldName'],'type':_0x683f3d['type'][_0x2630('0x2a')]};});_0x4ad461[_0x2630('0x2b')]=_['map'](_0x4fe723,_0x2630('0x25'));_0x4ad461[_0x2630('0x2c')]=_[_0x2630('0x2d')](_0x3e0f49[_0x2630('0x2c')]);_0x4ad461[_0x2630('0x2e')]=_[_0x2630('0x2f')](_0x4ad461[_0x2630('0x2b')],_0x4ad461['query']);_0x3ad356[_0x2630('0x30')]=_[_0x2630('0x2f')](_0x4ad461['model'],qs[_0x2630('0x31')](_0x3e0f49['query'][_0x2630('0x31')]));_0x3ad356['attributes']=_0x3ad356['attributes'][_0x2630('0x32')]?_0x3ad356[_0x2630('0x30')]:_0x4ad461[_0x2630('0x2b')];if(!_0x3e0f49['query'][_0x2630('0x33')](_0x2630('0x34'))){_0x3ad356['limit']=qs[_0x2630('0x1c')](_0x3e0f49[_0x2630('0x2c')]['limit']);_0x3ad356[_0x2630('0x1a')]=qs['offset'](_0x3e0f49[_0x2630('0x2c')][_0x2630('0x1a')]);}_0x3ad356['order']=qs[_0x2630('0x35')](_0x3e0f49[_0x2630('0x2c')]['sort']);_0x3ad356[_0x2630('0x36')]=qs[_0x2630('0x2e')](_[_0x2630('0x37')](_0x3e0f49[_0x2630('0x2c')],_0x4ad461[_0x2630('0x2e')]),_0x4fe723);if(_0x3e0f49[_0x2630('0x2c')][_0x2630('0x38')]){_0x3ad356[_0x2630('0x36')]=_[_0x2630('0x39')](_0x3ad356['where'],{'$or':_[_0x2630('0x28')](_0x4fe723,function(_0x52bbe5){if(_0x52bbe5[_0x2630('0x3a')]!==_0x2630('0x3b')){var _0xd67ae9={};_0xd67ae9[_0x52bbe5[_0x2630('0x25')]]={'$like':'%'+_0x3e0f49[_0x2630('0x2c')][_0x2630('0x38')]+'%'};return _0xd67ae9;}})});}_0x3ad356=_['merge']({},_0x3ad356,_0x3e0f49[_0x2630('0x3c')]);var _0x2137f4={'where':_0x3ad356['where']};return db['ZohoField'][_0x2630('0x3d')](_0x2137f4)['then'](function(_0x9e4a91){_0x336226[_0x2630('0x3d')]=_0x9e4a91;if(_0x3e0f49[_0x2630('0x2c')]['includeAll']){_0x3ad356[_0x2630('0x3e')]=[{'all':!![]}];}return db[_0x2630('0x29')]['findAll'](_0x3ad356);})['then'](function(_0x181fec){_0x336226[_0x2630('0x3f')]=_0x181fec;return _0x336226;})[_0x2630('0x21')](respondWithFilteredResult(_0x4c63a5,_0x3ad356))[_0x2630('0x40')](handleError(_0x4c63a5,null));};exports['show']=function(_0x368764,_0x241354){var _0x3d3bf0={'raw':!![],'where':{'id':_0x368764[_0x2630('0x41')]['id']}},_0x45f5b0={};_0x45f5b0[_0x2630('0x2b')]=_[_0x2630('0x2d')](db['ZohoField'][_0x2630('0x42')]);_0x45f5b0[_0x2630('0x2c')]=_[_0x2630('0x2d')](_0x368764[_0x2630('0x2c')]);_0x45f5b0[_0x2630('0x2e')]=_[_0x2630('0x2f')](_0x45f5b0[_0x2630('0x2b')],_0x45f5b0[_0x2630('0x2c')]);_0x3d3bf0['attributes']=_['intersection'](_0x45f5b0[_0x2630('0x2b')],qs[_0x2630('0x31')](_0x368764[_0x2630('0x2c')][_0x2630('0x31')]));_0x3d3bf0[_0x2630('0x30')]=_0x3d3bf0['attributes'][_0x2630('0x32')]?_0x3d3bf0['attributes']:_0x45f5b0[_0x2630('0x2b')];if(_0x368764['query'][_0x2630('0x43')]){_0x3d3bf0[_0x2630('0x3e')]=[{'all':!![]}];}_0x3d3bf0=_[_0x2630('0x39')]({},_0x3d3bf0,_0x368764[_0x2630('0x3c')]);return db[_0x2630('0x29')][_0x2630('0x44')](_0x3d3bf0)[_0x2630('0x21')](handleEntityNotFound(_0x241354,null))[_0x2630('0x21')](respondWithResult(_0x241354,null))['catch'](handleError(_0x241354,null));};exports[_0x2630('0x45')]=function(_0xaf34be,_0x21b87c){return db[_0x2630('0x29')]['create'](_0xaf34be[_0x2630('0x46')],{})[_0x2630('0x21')](respondWithResult(_0x21b87c,0xc9))['catch'](handleError(_0x21b87c,null));};exports['update']=function(_0x23d240,_0x35a0e5){if(_0x23d240['body']['id']){delete _0x23d240[_0x2630('0x46')]['id'];}return db[_0x2630('0x29')][_0x2630('0x44')]({'where':{'id':_0x23d240['params']['id']}})[_0x2630('0x21')](handleEntityNotFound(_0x35a0e5,null))[_0x2630('0x21')](saveUpdates(_0x23d240['body'],null))['then'](respondWithResult(_0x35a0e5,null))['catch'](handleError(_0x35a0e5,null));};exports[_0x2630('0x22')]=function(_0x25efd0,_0x524ebd){return db[_0x2630('0x29')][_0x2630('0x44')]({'where':{'id':_0x25efd0['params']['id']}})[_0x2630('0x21')](handleEntityNotFound(_0x524ebd,null))[_0x2630('0x21')](removeEntity(_0x524ebd,null))[_0x2630('0x40')](handleError(_0x524ebd,null));};
\ No newline at end of file
index 3d8cc87..1f9d7cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['zoho_unique_index','FieldId','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x9536,0x179));var _0x6953=function(_0x1d3577,_0x17a32e){_0x1d3577=_0x1d3577-0x0;var _0x277d9a=_0x9536[_0x1d3577];return _0x277d9a;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var logger=require(_0x6953('0x2'))(_0x6953('0x3'));var moment=require('moment');var BPromise=require(_0x6953('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6953('0x5'));var rimraf=require(_0x6953('0x6'));var config=require(_0x6953('0x7'));var attributes=require(_0x6953('0x8'));module[_0x6953('0x9')]=function(_0x494ac2,_0x2b273e){return _0x494ac2[_0x6953('0xa')](_0x6953('0xb'),attributes,{'tableName':_0x6953('0xc'),'paranoid':![],'indexes':[{'name':_0x6953('0xd'),'fields':['idField',_0x6953('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a07=['api','moment','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x3eb9fb,_0x5b8af6){var _0x4c9d13=function(_0x276bf7){while(--_0x276bf7){_0x3eb9fb['push'](_0x3eb9fb['shift']());}};_0x4c9d13(++_0x5b8af6);}(_0x2a07,0x74));var _0x72a0=function(_0x30ae7b,_0x3a718f){_0x30ae7b=_0x30ae7b-0x0;var _0xa9d0cf=_0x2a07[_0x30ae7b];return _0xa9d0cf;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var logger=require(_0x72a0('0x2'))(_0x72a0('0x3'));var moment=require(_0x72a0('0x4'));var BPromise=require('bluebird');var rp=require(_0x72a0('0x5'));var fs=require('fs');var path=require(_0x72a0('0x6'));var rimraf=require(_0x72a0('0x7'));var config=require(_0x72a0('0x8'));var attributes=require(_0x72a0('0x9'));module[_0x72a0('0xa')]=function(_0x3ccf6d,_0x20dab9){return _0x3ccf6d[_0x72a0('0xb')](_0x72a0('0xc'),attributes,{'tableName':_0x72a0('0xd'),'paranoid':![],'indexes':[{'name':_0x72a0('0xe'),'fields':[_0x72a0('0xf'),_0x72a0('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5322bed..6e23d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed7e=['debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','then','info','ZohoField,\x20%s,\x20%s'];(function(_0x673722,_0x275d7e){var _0x21249c=function(_0x25b4e7){while(--_0x25b4e7){_0x673722['push'](_0x673722['shift']());}};_0x21249c(++_0x275d7e);}(_0xed7e,0xbc));var _0xeed7=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xed7e[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0xeed7('0x0'));var util=require('util');var moment=require(_0xeed7('0x1'));var BPromise=require(_0xeed7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeed7('0x3'));var db=require(_0xeed7('0x4'))['db'];var utils=require(_0xeed7('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xeed7('0x6'));var jayson=require(_0xeed7('0x7'));var client=jayson['client'][_0xeed7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4a5792,_0xdb6b6f,_0x4aeb3b){return new BPromise(function(_0x5c281a,_0x1eab0a){return client['request'](_0x4a5792,_0x4aeb3b)[_0xeed7('0x9')](function(_0x33dd22){logger[_0xeed7('0xa')](_0xeed7('0xb'),_0xdb6b6f,'request\x20sent');logger[_0xeed7('0xc')](_0xeed7('0xd'),_0xdb6b6f,'request\x20sent',JSON[_0xeed7('0xe')](_0x33dd22));if(_0x33dd22['error']){if(_0x33dd22[_0xeed7('0xf')]['code']===0x1f4){logger[_0xeed7('0xf')]('ZohoField,\x20%s,\x20%s',_0xdb6b6f,_0x33dd22[_0xeed7('0xf')][_0xeed7('0x10')]);return _0x1eab0a(_0x33dd22['error'][_0xeed7('0x10')]);}logger[_0xeed7('0xf')](_0xeed7('0xb'),_0xdb6b6f,_0x33dd22[_0xeed7('0xf')]['message']);return _0x5c281a(_0x33dd22['error'][_0xeed7('0x10')]);}else{logger['info']('ZohoField,\x20%s,\x20%s',_0xdb6b6f,_0xeed7('0x11'));_0x5c281a(_0x33dd22[_0xeed7('0x12')][_0xeed7('0x10')]);}})[_0xeed7('0x13')](function(_0x5bd790){logger[_0xeed7('0xf')](_0xeed7('0xb'),_0xdb6b6f,_0x5bd790);_0x1eab0a(_0x5bd790);});});}
\ No newline at end of file
+var _0x37d0=['info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','then'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x37d0,0x181));var _0x037d=function(_0x5c0e16,_0x1e44e3){_0x5c0e16=_0x5c0e16-0x0;var _0xa07949=_0x37d0[_0x5c0e16];return _0xa07949;};'use strict';var _=require(_0x037d('0x0'));var util=require('util');var moment=require(_0x037d('0x1'));var BPromise=require(_0x037d('0x2'));var rs=require(_0x037d('0x3'));var fs=require('fs');var Redis=require(_0x037d('0x4'));var db=require(_0x037d('0x5'))['db'];var utils=require(_0x037d('0x6'));var logger=require('../../config/logger')(_0x037d('0x7'));var config=require(_0x037d('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x037d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4db204,_0x161ba7,_0x44606){return new BPromise(function(_0x50f8f2,_0x1a6244){return client['request'](_0x4db204,_0x44606)[_0x037d('0xa')](function(_0x59956a){logger[_0x037d('0xb')](_0x037d('0xc'),_0x161ba7,_0x037d('0xd'));logger[_0x037d('0xe')](_0x037d('0xf'),_0x161ba7,_0x037d('0xd'),JSON[_0x037d('0x10')](_0x59956a));if(_0x59956a[_0x037d('0x11')]){if(_0x59956a[_0x037d('0x11')][_0x037d('0x12')]===0x1f4){logger['error'](_0x037d('0xc'),_0x161ba7,_0x59956a[_0x037d('0x11')][_0x037d('0x13')]);return _0x1a6244(_0x59956a['error'][_0x037d('0x13')]);}logger[_0x037d('0x11')](_0x037d('0xc'),_0x161ba7,_0x59956a[_0x037d('0x11')][_0x037d('0x13')]);return _0x50f8f2(_0x59956a[_0x037d('0x11')]['message']);}else{logger[_0x037d('0xb')](_0x037d('0xc'),_0x161ba7,_0x037d('0xd'));_0x50f8f2(_0x59956a[_0x037d('0x14')][_0x037d('0x13')]);}})[_0x037d('0x15')](function(_0x186ae5){logger[_0x037d('0x11')](_0x037d('0xc'),_0x161ba7,_0x186ae5);_0x1a6244(_0x186ae5);});});}
\ No newline at end of file
index 870e061..a969160 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(_0x483102,_0x54e93d){var _0x5cc885=function(_0x54931c){while(--_0x54931c){_0x483102['push'](_0x483102['shift']());}};_0x5cc885(++_0x54e93d);}(_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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x589ef5,_0x189fda){var _0x45561a=function(_0x281e44){while(--_0x281e44){_0x589ef5['push'](_0x589ef5['shift']());}};_0x45561a(++_0x189fda);}(_0xe706,0xa3));var _0x6e70=function(_0x18b2a3,_0x2a639b){_0x18b2a3=_0x18b2a3-0x0;var _0x50659f=_0xe706[_0x18b2a3];return _0x50659f;};'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 73541eb..8c219d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3067=['STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN','state','sequelize','exports'];(function(_0x2da71d,_0x34f66b){var _0x16c334=function(_0x4fd1cf){while(--_0x4fd1cf){_0x2da71d['push'](_0x2da71d['shift']());}};_0x16c334(++_0x34f66b);}(_0x3067,0xee));var _0x7306=function(_0x4128d4,_0x1f2b2f){_0x4128d4=_0x4128d4-0x0;var _0x1fd6d8=_0x3067[_0x4128d4];return _0x1fd6d8;};'use strict';var Sequelize=require(_0x7306('0x0'));module[_0x7306('0x1')]={'name':{'type':Sequelize[_0x7306('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x7306('0x2')],'allowNull':![],'unique':_0x7306('0x3')},'main':{'type':Sequelize[_0x7306('0x2')],'defaultValue':_0x7306('0x4')},'filename':{'type':Sequelize[_0x7306('0x2')]},'path':{'type':Sequelize[_0x7306('0x2')]},'type':{'type':Sequelize[_0x7306('0x2')]},'size':{'type':Sequelize[_0x7306('0x5')]},'active':{'type':Sequelize[_0x7306('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0x7306('0x2')]},'logo':{'type':Sequelize[_0x7306('0x2')]},'state':{'type':Sequelize[_0x7306('0x2')],'unique':_0x7306('0x7')},'description':{'type':Sequelize[_0x7306('0x2')]},'title':{'type':Sequelize[_0x7306('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0xa977=['exports','STRING','unique_name_and_version','app.js','INTEGER','sequelize'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa977,0x125));var _0x7a97=function(_0x38450f,_0x5356e0){_0x38450f=_0x38450f-0x0;var _0x2854d8=_0xa977[_0x38450f];return _0x2854d8;};'use strict';var Sequelize=require(_0x7a97('0x0'));module[_0x7a97('0x1')]={'name':{'type':Sequelize[_0x7a97('0x2')],'allowNull':![],'unique':_0x7a97('0x3')},'version':{'type':Sequelize[_0x7a97('0x2')],'allowNull':![],'unique':_0x7a97('0x3')},'main':{'type':Sequelize['STRING'],'defaultValue':_0x7a97('0x4')},'filename':{'type':Sequelize[_0x7a97('0x2')]},'path':{'type':Sequelize[_0x7a97('0x2')]},'type':{'type':Sequelize[_0x7a97('0x2')]},'size':{'type':Sequelize[_0x7a97('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0x7a97('0x2')]},'state':{'type':Sequelize['STRING'],'unique':'state'},'description':{'type':Sequelize[_0x7a97('0x2')]},'title':{'type':Sequelize[_0x7a97('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x7a97('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index 876f9d1..9fc90e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','keys','filters','intersection','create','catch','body','find','params','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','Integration','rawAttributes','type','key','model','query','attributes','fields','length','hasOwnProperty','order'];(function(_0x5cf40a,_0x21e31f){var _0x26216d=function(_0x82a779){while(--_0x82a779){_0x5cf40a['push'](_0x5cf40a['shift']());}};_0x26216d(++_0x21e31f);}(_0x6d38,0x1ef));var _0x86d3=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x6d38[_0x580576];return _0x3f55a0;};'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['Integration'][_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')](_0x412d0e['body'],{})[_0x86d3('0x20')](respondWithResult(_0xd20863,0xc9))[_0x86d3('0x40')](handleError(_0xd20863,null));};exports[_0x86d3('0x1f')]=function(_0x14fa58,_0x369b75){if(_0x14fa58[_0x86d3('0x41')]['id']){delete _0x14fa58[_0x86d3('0x41')]['id'];}return db[_0x86d3('0x26')][_0x86d3('0x42')]({'where':{'id':_0x14fa58[_0x86d3('0x43')]['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x369b75,null))[_0x86d3('0x20')](saveUpdates(_0x14fa58['body'],null))[_0x86d3('0x20')](respondWithResult(_0x369b75,null))[_0x86d3('0x40')](handleError(_0x369b75,null));};exports['destroy']=function(_0x43290d,_0x23a6ee){return db[_0x86d3('0x26')][_0x86d3('0x42')]({'where':{'id':_0x43290d[_0x86d3('0x43')]['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x23a6ee,null))['then'](removeEntity(_0x23a6ee,null))['catch'](handleError(_0x23a6ee,null));};
\ No newline at end of file
+var _0x2a07=['name','send','index','map','Integration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','catch','show','params','fields','includeAll','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','update','then','error'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x2a07,0x74));var _0x72a0=function(_0x38d8e2,_0x48603c){_0x38d8e2=_0x38d8e2-0x0;var _0x5afbee=_0x2a07[_0x38d8e2];return _0x5afbee;};'use strict';var emlformat=require(_0x72a0('0x0'));var rimraf=require(_0x72a0('0x1'));var zipdir=require(_0x72a0('0x2'));var jsonpatch=require(_0x72a0('0x3'));var rp=require(_0x72a0('0x4'));var moment=require('moment');var BPromise=require(_0x72a0('0x5'));var Mustache=require(_0x72a0('0x6'));var util=require(_0x72a0('0x7'));var path=require(_0x72a0('0x8'));var sox=require(_0x72a0('0x9'));var csv=require(_0x72a0('0xa'));var ejs=require(_0x72a0('0xb'));var fs=require('fs');var fs_extra=require(_0x72a0('0xc'));var _=require(_0x72a0('0xd'));var squel=require(_0x72a0('0xe'));var crypto=require(_0x72a0('0xf'));var jsforce=require(_0x72a0('0x10'));var deskjs=require(_0x72a0('0x11'));var toCsv=require(_0x72a0('0xa'));var querystring=require(_0x72a0('0x12'));var Papa=require(_0x72a0('0x13'));var Redis=require('ioredis');var authService=require(_0x72a0('0x14'));var qs=require(_0x72a0('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x72a0('0x16'));var logger=require(_0x72a0('0x17'))(_0x72a0('0x18'));var utils=require(_0x72a0('0x19'));var config=require(_0x72a0('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x72a0('0x1b'))['db'];function respondWithStatusCode(_0x335b9f,_0x123ca4){_0x123ca4=_0x123ca4||0xcc;return function(_0xf91a82){if(_0xf91a82){return _0x335b9f[_0x72a0('0x1c')](_0x123ca4);}return _0x335b9f[_0x72a0('0x1d')](_0x123ca4)[_0x72a0('0x1e')]();};}function respondWithResult(_0x5e0b5f,_0x4930c5){_0x4930c5=_0x4930c5||0xc8;return function(_0xe103dc){if(_0xe103dc){return _0x5e0b5f[_0x72a0('0x1d')](_0x4930c5)[_0x72a0('0x1f')](_0xe103dc);}};}function respondWithFilteredResult(_0x1d1133,_0x23b001){return function(_0x3f3d62){if(_0x3f3d62){var _0x4ab55e=typeof _0x23b001[_0x72a0('0x20')]===_0x72a0('0x21')&&typeof _0x23b001[_0x72a0('0x22')]===_0x72a0('0x21');var _0x2d1e95=_0x3f3d62['count'];var _0x100d8f=_0x4ab55e?0x0:_0x23b001[_0x72a0('0x20')];var _0x131b73=_0x4ab55e?_0x3f3d62['count']:_0x23b001[_0x72a0('0x20')]+_0x23b001[_0x72a0('0x22')];var _0x30899b;if(_0x131b73>=_0x2d1e95){_0x131b73=_0x2d1e95;_0x30899b=0xc8;}else{_0x30899b=0xce;}_0x1d1133[_0x72a0('0x1d')](_0x30899b);return _0x1d1133['set'](_0x72a0('0x23'),_0x100d8f+'-'+_0x131b73+'/'+_0x2d1e95)['json'](_0x3f3d62);}return null;};}function patchUpdates(_0x3d0607){return function(_0x315413){try{jsonpatch[_0x72a0('0x24')](_0x315413,_0x3d0607,!![]);}catch(_0x5c7479){return BPromise[_0x72a0('0x25')](_0x5c7479);}return _0x315413[_0x72a0('0x26')]();};}function saveUpdates(_0x1d22d8,_0x3d1965){return function(_0x5d6145){if(_0x5d6145){return _0x5d6145[_0x72a0('0x27')](_0x1d22d8)[_0x72a0('0x28')](function(_0x1ddd54){return _0x1ddd54;});}return null;};}function removeEntity(_0x23b918,_0x3022b0){return function(_0x174b1b){if(_0x174b1b){return _0x174b1b['destroy']()['then'](function(){_0x23b918[_0x72a0('0x1d')](0xcc)[_0x72a0('0x1e')]();});}};}function handleEntityNotFound(_0x123df4,_0x1504ed){return function(_0xf5cb49){if(!_0xf5cb49){_0x123df4[_0x72a0('0x1c')](0x194);}return _0xf5cb49;};}function handleError(_0xa5bda0,_0x15922a){_0x15922a=_0x15922a||0x1f4;return function(_0xee99e2){logger[_0x72a0('0x29')](_0xee99e2['stack']);if(_0xee99e2[_0x72a0('0x2a')]){delete _0xee99e2[_0x72a0('0x2a')];}_0xa5bda0[_0x72a0('0x1d')](_0x15922a)[_0x72a0('0x2b')](_0xee99e2);};}exports[_0x72a0('0x2c')]=function(_0x177a3a,_0x432179){var _0x12eda2={},_0x23c96a={},_0x916733={'count':0x0,'rows':[]};var _0x4ba037=_[_0x72a0('0x2d')](db[_0x72a0('0x2e')][_0x72a0('0x2f')],function(_0xfbe9b3){return{'name':_0xfbe9b3[_0x72a0('0x30')],'type':_0xfbe9b3[_0x72a0('0x31')][_0x72a0('0x32')]};});_0x23c96a['model']=_[_0x72a0('0x2d')](_0x4ba037,_0x72a0('0x2a'));_0x23c96a[_0x72a0('0x33')]=_[_0x72a0('0x34')](_0x177a3a[_0x72a0('0x33')]);_0x23c96a[_0x72a0('0x35')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],_0x23c96a['query']);_0x12eda2[_0x72a0('0x38')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],qs['fields'](_0x177a3a[_0x72a0('0x33')]['fields']));_0x12eda2[_0x72a0('0x38')]=_0x12eda2[_0x72a0('0x38')][_0x72a0('0x39')]?_0x12eda2[_0x72a0('0x38')]:_0x23c96a[_0x72a0('0x37')];if(!_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3a')](_0x72a0('0x3b'))){_0x12eda2[_0x72a0('0x22')]=qs[_0x72a0('0x22')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x22')]);_0x12eda2['offset']=qs[_0x72a0('0x20')](_0x177a3a['query'][_0x72a0('0x20')]);}_0x12eda2[_0x72a0('0x3c')]=qs[_0x72a0('0x3d')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3d')]);_0x12eda2[_0x72a0('0x3e')]=qs[_0x72a0('0x35')](_[_0x72a0('0x3f')](_0x177a3a[_0x72a0('0x33')],_0x23c96a['filters']),_0x4ba037);if(_0x177a3a['query'][_0x72a0('0x40')]){_0x12eda2[_0x72a0('0x3e')]=_[_0x72a0('0x41')](_0x12eda2[_0x72a0('0x3e')],{'$or':_[_0x72a0('0x2d')](_0x4ba037,function(_0x512a06){if(_0x512a06[_0x72a0('0x31')]!==_0x72a0('0x42')){var _0x582c90={};_0x582c90[_0x512a06[_0x72a0('0x2a')]]={'$like':'%'+_0x177a3a['query']['filter']+'%'};return _0x582c90;}})});}_0x12eda2=_['merge']({},_0x12eda2,_0x177a3a[_0x72a0('0x43')]);var _0x49633b={'where':_0x12eda2[_0x72a0('0x3e')]};return db[_0x72a0('0x2e')][_0x72a0('0x44')](_0x49633b)[_0x72a0('0x28')](function(_0x4bf56e){_0x916733['count']=_0x4bf56e;if(_0x177a3a['query']['includeAll']){_0x12eda2[_0x72a0('0x45')]=[{'all':!![]}];}return db[_0x72a0('0x2e')]['findAll'](_0x12eda2);})[_0x72a0('0x28')](function(_0x35d790){_0x916733['rows']=_0x35d790;return _0x916733;})[_0x72a0('0x28')](respondWithFilteredResult(_0x432179,_0x12eda2))[_0x72a0('0x46')](handleError(_0x432179,null));};exports[_0x72a0('0x47')]=function(_0xe4abe1,_0x340153){var _0x341451={'raw':![],'where':{'id':_0xe4abe1[_0x72a0('0x48')]['id']}},_0x50eb7f={};_0x50eb7f['model']=_[_0x72a0('0x34')](db['Integration'][_0x72a0('0x2f')]);_0x50eb7f[_0x72a0('0x33')]=_['keys'](_0xe4abe1[_0x72a0('0x33')]);_0x50eb7f['filters']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],_0x50eb7f[_0x72a0('0x33')]);_0x341451['attributes']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],qs[_0x72a0('0x49')](_0xe4abe1['query']['fields']));_0x341451[_0x72a0('0x38')]=_0x341451['attributes'][_0x72a0('0x39')]?_0x341451[_0x72a0('0x38')]:_0x50eb7f[_0x72a0('0x37')];if(_0xe4abe1[_0x72a0('0x33')][_0x72a0('0x4a')]){_0x341451[_0x72a0('0x45')]=[{'all':!![]}];}_0x341451=_[_0x72a0('0x41')]({},_0x341451,_0xe4abe1[_0x72a0('0x43')]);return db[_0x72a0('0x2e')]['find'](_0x341451)[_0x72a0('0x28')](handleEntityNotFound(_0x340153,null))[_0x72a0('0x28')](respondWithResult(_0x340153,null))[_0x72a0('0x46')](handleError(_0x340153,null));};exports[_0x72a0('0x4b')]=function(_0x3a669d,_0x304400){return db[_0x72a0('0x2e')]['create'](_0x3a669d['body'],{})[_0x72a0('0x28')](respondWithResult(_0x304400,0xc9))[_0x72a0('0x46')](handleError(_0x304400,null));};exports[_0x72a0('0x27')]=function(_0x3cab6a,_0x35a6ad){if(_0x3cab6a[_0x72a0('0x4c')]['id']){delete _0x3cab6a[_0x72a0('0x4c')]['id'];}return db[_0x72a0('0x2e')][_0x72a0('0x4d')]({'where':{'id':_0x3cab6a[_0x72a0('0x48')]['id']}})['then'](handleEntityNotFound(_0x35a6ad,null))[_0x72a0('0x28')](saveUpdates(_0x3cab6a[_0x72a0('0x4c')],null))[_0x72a0('0x28')](respondWithResult(_0x35a6ad,null))[_0x72a0('0x46')](handleError(_0x35a6ad,null));};exports[_0x72a0('0x4e')]=function(_0x5c1570,_0x143410){return db['Integration']['find']({'where':{'id':_0x5c1570[_0x72a0('0x48')]['id']}})[_0x72a0('0x28')](handleEntityNotFound(_0x143410,null))[_0x72a0('0x28')](removeEntity(_0x143410,null))[_0x72a0('0x46')](handleError(_0x143410,null));};
\ No newline at end of file
index 454d155..0f0d836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fc1=['./integration.attributes','exports','Integration','integrations','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4c620e,_0x48e7c8){var _0x5bf399=function(_0x4b1ec3){while(--_0x4b1ec3){_0x4c620e['push'](_0x4c620e['shift']());}};_0x5bf399(++_0x48e7c8);}(_0x9fc1,0x117));var _0x19fc=function(_0x369b91,_0x50216d){_0x369b91=_0x369b91-0x0;var _0x5d412a=_0x9fc1[_0x369b91];return _0x5d412a;};'use strict';var _=require('lodash');var util=require(_0x19fc('0x0'));var logger=require('../../config/logger')(_0x19fc('0x1'));var moment=require(_0x19fc('0x2'));var BPromise=require(_0x19fc('0x3'));var rp=require(_0x19fc('0x4'));var fs=require('fs');var path=require(_0x19fc('0x5'));var rimraf=require(_0x19fc('0x6'));var config=require('../../config/environment');var attributes=require(_0x19fc('0x7'));module[_0x19fc('0x8')]=function(_0x4addf2,_0x54f759){return _0x4addf2['define'](_0x19fc('0x9'),attributes,{'tableName':_0x19fc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4aac=['../../config/environment','./integration.attributes','define','Integration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5b24c7,_0x4d4a3b){var _0x4aa715=function(_0x319e0c){while(--_0x319e0c){_0x5b24c7['push'](_0x5b24c7['shift']());}};_0x4aa715(++_0x4d4a3b);}(_0x4aac,0xdc));var _0xc4aa=function(_0x181f95,_0x118690){_0x181f95=_0x181f95-0x0;var _0x23614e=_0x4aac[_0x181f95];return _0x23614e;};'use strict';var _=require(_0xc4aa('0x0'));var util=require(_0xc4aa('0x1'));var logger=require(_0xc4aa('0x2'))(_0xc4aa('0x3'));var moment=require(_0xc4aa('0x4'));var BPromise=require(_0xc4aa('0x5'));var rp=require(_0xc4aa('0x6'));var fs=require('fs');var path=require(_0xc4aa('0x7'));var rimraf=require('rimraf');var config=require(_0xc4aa('0x8'));var attributes=require(_0xc4aa('0x9'));module['exports']=function(_0x2ba71d,_0x3ac022){return _0x2ba71d[_0xc4aa('0xa')](_0xc4aa('0xb'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b49d88b..cc3a41c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x53b063,_0x48043b){var _0x55730b=function(_0x4eb61e){while(--_0x4eb61e){_0x53b063['push'](_0x53b063['shift']());}};_0x55730b(++_0x48043b);}(_0x2542,0x169));var _0x2254=function(_0x2d0185,_0x3cabb1){_0x2d0185=_0x2d0185-0x0;var _0x14c8df=_0x2542[_0x2d0185];return _0x14c8df;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var moment=require(_0x2254('0x2'));var BPromise=require(_0x2254('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2254('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2254('0x5'));var logger=require(_0x2254('0x6'))(_0x2254('0x7'));var config=require(_0x2254('0x8'));var jayson=require(_0x2254('0x9'));var client=jayson['client'][_0x2254('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe8ca50,_0x2ee7ee,_0x3c45ec){return new BPromise(function(_0x1637ad,_0x477b47){return client[_0x2254('0xb')](_0xe8ca50,_0x3c45ec)[_0x2254('0xc')](function(_0xb395da){logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,'request\x20sent');logger[_0x2254('0xf')](_0x2254('0x10'),_0x2ee7ee,_0x2254('0x11'),JSON[_0x2254('0x12')](_0xb395da));if(_0xb395da['error']){if(_0xb395da['error'][_0x2254('0x13')]===0x1f4){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);return _0x477b47(_0xb395da[_0x2254('0x14')]['message']);}logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da['error'][_0x2254('0x15')]);return _0x1637ad(_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);}else{logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,_0x2254('0x11'));_0x1637ad(_0xb395da['result'][_0x2254('0x15')]);}})['catch'](function(_0x327d6d){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0x327d6d);_0x477b47(_0x327d6d);});});}
\ No newline at end of file
+var _0x896e=['Integration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x1ef676,_0x4fc8a6){var _0x151519=function(_0x53df0b){while(--_0x53df0b){_0x1ef676['push'](_0x1ef676['shift']());}};_0x151519(++_0x4fc8a6);}(_0x896e,0x1e9));var _0xe896=function(_0x187ab2,_0x2c2f2c){_0x187ab2=_0x187ab2-0x0;var _0x88c342=_0x896e[_0x187ab2];return _0x88c342;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('Integration,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('Integration,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}
\ No newline at end of file
index b1cc877..426a7c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['create','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x5bca6f,_0x1c95fd){var _0x12b664=function(_0x4f1ad6){while(--_0x4f1ad6){_0x5bca6f['push'](_0x5bca6f['shift']());}};_0x12b664(++_0x1c95fd);}(_0x57ca,0x108));var _0xa57c=function(_0x3fc2ba,_0x5c9aaa){_0x3fc2ba=_0x3fc2ba-0x0;var _0x4a99e1=_0x57ca[_0x3fc2ba];return _0x4a99e1;};'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('0xf')]('/',auth['isAuthenticated'](),controller[_0xa57c('0x10')]);router['put'](_0xa57c('0xd'),auth[_0xa57c('0x9')](),controller['update']);router[_0xa57c('0x11')]('/:id',auth[_0xa57c('0x9')](),controller[_0xa57c('0x12')]);module[_0xa57c('0x13')]=router;
\ No newline at end of file
+var _0x6d38=['path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','/:id','create','update','destroy','exports','util'];(function(_0x5286f5,_0x3cd19d){var _0x348723=function(_0x3434e2){while(--_0x3434e2){_0x5286f5['push'](_0x5286f5['shift']());}};_0x348723(++_0x3cd19d);}(_0x6d38,0x1ef));var _0x86d3=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x6d38[_0x297fd3];return _0x2af381;};'use strict';var multer=require('multer');var util=require(_0x86d3('0x0'));var path=require(_0x86d3('0x1'));var timeout=require(_0x86d3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x86d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var controller=require(_0x86d3('0x6'));router['get']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0x8')]);router[_0x86d3('0x9')](_0x86d3('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x86d3('0x9')](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['show']);router['post']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0xc')]);router['put']('/:id',auth[_0x86d3('0x7')](),controller[_0x86d3('0xd')]);router['delete'](_0x86d3('0xb'),auth['isAuthenticated'](),controller[_0x86d3('0xe')]);module[_0x86d3('0xf')]=router;
\ No newline at end of file
index f7c0427..b09e4b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x944f=['FAILED','sequelize','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x944f,0x65));var _0xf944=function(_0x292600,_0x120a55){_0x292600=_0x292600-0x0;var _0x2ef83b=_0x944f[_0x292600];return _0x2ef83b;};'use strict';var Sequelize=require(_0xf944('0x0'));module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0xf944('0x1')]},'exitStatus':{'type':Sequelize[_0xf944('0x1')]},'ticketId':{'type':Sequelize[_0xf944('0x1')]},'integrationId':{'type':Sequelize[_0xf944('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xf944('0x1')]},'calleridnum':{'type':Sequelize[_0xf944('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xf944('0x1')]},'interface':{'type':Sequelize[_0xf944('0x1')]},'membername':{'type':Sequelize[_0xf944('0x1')]},'agentcalledAt':{'type':Sequelize[_0xf944('0x3')]},'agentconnectAt':{'type':Sequelize[_0xf944('0x3')]},'holdtime':{'type':Sequelize[_0xf944('0x2')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xf944('0x3')]},'talktime':{'type':Sequelize[_0xf944('0x2')]},'agentacw':{'type':Sequelize[_0xf944('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf944('0x2')]},'reason':{'type':Sequelize[_0xf944('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xf944('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0xf944('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xf944('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xf944('0x1')]},'connectedlinenum':{'type':Sequelize[_0xf944('0x1')]},'connectedlinename':{'type':Sequelize[_0xf944('0x1')]},'language':{'type':Sequelize[_0xf944('0x1')]},'accountcode':{'type':Sequelize[_0xf944('0x1')]},'context':{'type':Sequelize[_0xf944('0x1')]},'exten':{'type':Sequelize[_0xf944('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xf944('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xf944('0x1')]},'destcalleridnum':{'type':Sequelize[_0xf944('0x1')]},'destcalleridname':{'type':Sequelize[_0xf944('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xf944('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xf944('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xf944('0x1')]},'destcontext':{'type':Sequelize[_0xf944('0x1')]},'destexten':{'type':Sequelize[_0xf944('0x1')]},'destpriority':{'type':Sequelize[_0xf944('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xf944('0x1')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xf944('0x1')]},'from':{'type':Sequelize[_0xf944('0x1')]},'to':{'type':Sequelize[_0xf944('0x1')]},'cc':{'type':Sequelize[_0xf944('0x1')]},'attachment':{'type':Sequelize[_0xf944('0x5')]},'html':{'type':Sequelize[_0xf944('0x5')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0xf944('0x6')](_0xf944('0x7'),_0xf944('0x8'),'RECEIVED',_0xf944('0x9'))},'url':{'type':Sequelize[_0xf944('0x1')]},'app':{'type':Sequelize[_0xf944('0x1')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0xf944('0x2')]}};
\ No newline at end of file
+var _0xa41d=['TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN'];(function(_0x1aabb5,_0x1adc82){var _0x436413=function(_0x2a4bb7){while(--_0x2a4bb7){_0x1aabb5['push'](_0x1aabb5['shift']());}};_0x436413(++_0x1adc82);}(_0xa41d,0x1b6));var _0xda41=function(_0x4b9d59,_0x910c53){_0x4b9d59=_0x4b9d59-0x0;var _0x2426ba=_0xa41d[_0x4b9d59];return _0x2426ba;};'use strict';var Sequelize=require(_0xda41('0x0'));module[_0xda41('0x1')]={'integration':{'type':Sequelize[_0xda41('0x2')]},'eventChannel':{'type':Sequelize[_0xda41('0x2')]},'exitStatus':{'type':Sequelize[_0xda41('0x2')]},'ticketId':{'type':Sequelize[_0xda41('0x2')]},'integrationId':{'type':Sequelize[_0xda41('0x3')]},'contacts':{'type':Sequelize[_0xda41('0x2')]},'uniqueid':{'type':Sequelize[_0xda41('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xda41('0x2')]},'queue':{'type':Sequelize[_0xda41('0x2')]},'interface':{'type':Sequelize[_0xda41('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xda41('0x4')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xda41('0x3')]},'agentcomplete':{'type':Sequelize[_0xda41('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xda41('0x4')]},'talktime':{'type':Sequelize[_0xda41('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xda41('0x3')]},'reason':{'type':Sequelize[_0xda41('0x2')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xda41('0x4')]},'agentdump':{'type':Sequelize[_0xda41('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xda41('0x4')]},'lastevent':{'type':Sequelize[_0xda41('0x2')]},'channel':{'type':Sequelize[_0xda41('0x2')]},'channelstate':{'type':Sequelize[_0xda41('0x3')]},'channelstatedesc':{'type':Sequelize[_0xda41('0x2')]},'connectedlinenum':{'type':Sequelize[_0xda41('0x2')]},'connectedlinename':{'type':Sequelize[_0xda41('0x2')]},'language':{'type':Sequelize[_0xda41('0x2')]},'accountcode':{'type':Sequelize[_0xda41('0x2')]},'context':{'type':Sequelize[_0xda41('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xda41('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xda41('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xda41('0x2')]},'destcalleridname':{'type':Sequelize[_0xda41('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xda41('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xda41('0x2')]},'destaccountcode':{'type':Sequelize[_0xda41('0x2')]},'destcontext':{'type':Sequelize[_0xda41('0x2')]},'destexten':{'type':Sequelize[_0xda41('0x2')]},'destpriority':{'type':Sequelize[_0xda41('0x2')]},'destuniqueid':{'type':Sequelize[_0xda41('0x2')]},'messageId':{'type':Sequelize[_0xda41('0x2')]},'inReplyTo':{'type':Sequelize[_0xda41('0x2')]},'subject':{'type':Sequelize[_0xda41('0x2')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xda41('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xda41('0x6')]},'html':{'type':Sequelize[_0xda41('0x6')]},'text':{'type':Sequelize[_0xda41('0x6')]},'status':{'type':Sequelize[_0xda41('0x7')](_0xda41('0x8'),_0xda41('0x9'),_0xda41('0xa'),_0xda41('0xb'))},'url':{'type':Sequelize[_0xda41('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xda41('0x2')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index d58fce9..3fd6819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45dc=['crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','json','offset','limit','count','status','Content-Range','update','then','end','sendStatus','error','stack','name','send','index','IntegrationReport','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','include','findAll','rows','catch','show','params','filters','includeAll','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x45dc,0x1ae));var _0xc45d=function(_0x306898,_0x19b59b){_0x306898=_0x306898-0x0;var _0x299817=_0x45dc[_0x306898];return _0x299817;};'use strict';var emlformat=require(_0xc45d('0x0'));var rimraf=require(_0xc45d('0x1'));var zipdir=require(_0xc45d('0x2'));var jsonpatch=require(_0xc45d('0x3'));var rp=require(_0xc45d('0x4'));var moment=require(_0xc45d('0x5'));var BPromise=require(_0xc45d('0x6'));var Mustache=require('mustache');var util=require(_0xc45d('0x7'));var path=require(_0xc45d('0x8'));var sox=require(_0xc45d('0x9'));var csv=require('to-csv');var ejs=require(_0xc45d('0xa'));var fs=require('fs');var fs_extra=require(_0xc45d('0xb'));var _=require(_0xc45d('0xc'));var squel=require(_0xc45d('0xd'));var crypto=require(_0xc45d('0xe'));var jsforce=require(_0xc45d('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc45d('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc45d('0x11'));var authService=require(_0xc45d('0x12'));var qs=require(_0xc45d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc45d('0x14'));var logger=require(_0xc45d('0x15'))(_0xc45d('0x16'));var utils=require(_0xc45d('0x17'));var config=require(_0xc45d('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4db208,_0x157d3b){_0x157d3b=_0x157d3b||0xcc;return function(_0x39b162){if(_0x39b162){return _0x4db208['sendStatus'](_0x157d3b);}return _0x4db208['status'](_0x157d3b)['end']();};}function respondWithResult(_0x450734,_0x5249ee){_0x5249ee=_0x5249ee||0xc8;return function(_0x4fb8b7){if(_0x4fb8b7){return _0x450734['status'](_0x5249ee)[_0xc45d('0x19')](_0x4fb8b7);}};}function respondWithFilteredResult(_0x4fda95,_0x18790c){return function(_0x39e294){if(_0x39e294){var _0x58f980=typeof _0x18790c[_0xc45d('0x1a')]==='undefined'&&typeof _0x18790c[_0xc45d('0x1b')]==='undefined';var _0x1c5188=_0x39e294[_0xc45d('0x1c')];var _0x19f4c0=_0x58f980?0x0:_0x18790c[_0xc45d('0x1a')];var _0x5037f1=_0x58f980?_0x39e294[_0xc45d('0x1c')]:_0x18790c[_0xc45d('0x1a')]+_0x18790c[_0xc45d('0x1b')];var _0x31dcce;if(_0x5037f1>=_0x1c5188){_0x5037f1=_0x1c5188;_0x31dcce=0xc8;}else{_0x31dcce=0xce;}_0x4fda95[_0xc45d('0x1d')](_0x31dcce);return _0x4fda95['set'](_0xc45d('0x1e'),_0x19f4c0+'-'+_0x5037f1+'/'+_0x1c5188)['json'](_0x39e294);}return null;};}function patchUpdates(_0xeedb74){return function(_0x2b219f){try{jsonpatch['apply'](_0x2b219f,_0xeedb74,!![]);}catch(_0x16b10d){return BPromise['reject'](_0x16b10d);}return _0x2b219f['save']();};}function saveUpdates(_0x24f8b4,_0x5b0b0d){return function(_0x11866e){if(_0x11866e){return _0x11866e[_0xc45d('0x1f')](_0x24f8b4)[_0xc45d('0x20')](function(_0x54b8c8){return _0x54b8c8;});}return null;};}function removeEntity(_0x4bdfb2,_0x36c023){return function(_0x225809){if(_0x225809){return _0x225809['destroy']()[_0xc45d('0x20')](function(){_0x4bdfb2[_0xc45d('0x1d')](0xcc)[_0xc45d('0x21')]();});}};}function handleEntityNotFound(_0x4387ab,_0x53e089){return function(_0x2610db){if(!_0x2610db){_0x4387ab[_0xc45d('0x22')](0x194);}return _0x2610db;};}function handleError(_0x3b8099,_0x595124){_0x595124=_0x595124||0x1f4;return function(_0x363546){logger[_0xc45d('0x23')](_0x363546[_0xc45d('0x24')]);if(_0x363546[_0xc45d('0x25')]){delete _0x363546[_0xc45d('0x25')];}_0x3b8099['status'](_0x595124)[_0xc45d('0x26')](_0x363546);};}exports[_0xc45d('0x27')]=function(_0x6a218a,_0x5aa517){var _0x11457b={},_0x50859f={},_0x4d956a={'count':0x0,'rows':[]};var _0x2a88a6=_['map'](db[_0xc45d('0x28')][_0xc45d('0x29')],function(_0x345030){return{'name':_0x345030[_0xc45d('0x2a')],'type':_0x345030[_0xc45d('0x2b')][_0xc45d('0x2c')]};});_0x50859f[_0xc45d('0x2d')]=_[_0xc45d('0x2e')](_0x2a88a6,_0xc45d('0x25'));_0x50859f[_0xc45d('0x2f')]=_[_0xc45d('0x30')](_0x6a218a['query']);_0x50859f['filters']=_[_0xc45d('0x31')](_0x50859f[_0xc45d('0x2d')],_0x50859f[_0xc45d('0x2f')]);_0x11457b['attributes']=_[_0xc45d('0x31')](_0x50859f['model'],qs['fields'](_0x6a218a['query'][_0xc45d('0x32')]));_0x11457b[_0xc45d('0x33')]=_0x11457b['attributes'][_0xc45d('0x34')]?_0x11457b['attributes']:_0x50859f[_0xc45d('0x2d')];if(!_0x6a218a['query'][_0xc45d('0x35')](_0xc45d('0x36'))){_0x11457b[_0xc45d('0x1b')]=qs[_0xc45d('0x1b')](_0x6a218a[_0xc45d('0x2f')]['limit']);_0x11457b[_0xc45d('0x1a')]=qs[_0xc45d('0x1a')](_0x6a218a['query'][_0xc45d('0x1a')]);}_0x11457b['order']=qs['sort'](_0x6a218a['query'][_0xc45d('0x37')]);_0x11457b['where']=qs['filters'](_[_0xc45d('0x38')](_0x6a218a[_0xc45d('0x2f')],_0x50859f['filters']),_0x2a88a6);if(_0x6a218a[_0xc45d('0x2f')][_0xc45d('0x39')]){_0x11457b['where']=_[_0xc45d('0x3a')](_0x11457b[_0xc45d('0x3b')],{'$or':_['map'](_0x2a88a6,function(_0x45f9e1){if(_0x45f9e1[_0xc45d('0x2b')]!=='VIRTUAL'){var _0x41cb99={};_0x41cb99[_0x45f9e1[_0xc45d('0x25')]]={'$like':'%'+_0x6a218a[_0xc45d('0x2f')][_0xc45d('0x39')]+'%'};return _0x41cb99;}})});}_0x11457b=_['merge']({},_0x11457b,_0x6a218a['options']);var _0x28680e={'where':_0x11457b['where']};return db[_0xc45d('0x28')][_0xc45d('0x1c')](_0x28680e)[_0xc45d('0x20')](function(_0x255f1e){_0x4d956a['count']=_0x255f1e;if(_0x6a218a[_0xc45d('0x2f')]['includeAll']){_0x11457b[_0xc45d('0x3c')]=[{'all':!![]}];}return db[_0xc45d('0x28')][_0xc45d('0x3d')](_0x11457b);})[_0xc45d('0x20')](function(_0x56908e){_0x4d956a[_0xc45d('0x3e')]=_0x56908e;return _0x4d956a;})[_0xc45d('0x20')](respondWithFilteredResult(_0x5aa517,_0x11457b))[_0xc45d('0x3f')](handleError(_0x5aa517,null));};exports[_0xc45d('0x40')]=function(_0xf10c15,_0x1428a6){var _0x507988={'raw':![],'where':{'id':_0xf10c15[_0xc45d('0x41')]['id']}},_0x18faf5={};_0x18faf5[_0xc45d('0x2d')]=_[_0xc45d('0x30')](db['IntegrationReport'][_0xc45d('0x29')]);_0x18faf5[_0xc45d('0x2f')]=_['keys'](_0xf10c15[_0xc45d('0x2f')]);_0x18faf5[_0xc45d('0x42')]=_[_0xc45d('0x31')](_0x18faf5[_0xc45d('0x2d')],_0x18faf5[_0xc45d('0x2f')]);_0x507988[_0xc45d('0x33')]=_['intersection'](_0x18faf5['model'],qs[_0xc45d('0x32')](_0xf10c15[_0xc45d('0x2f')][_0xc45d('0x32')]));_0x507988[_0xc45d('0x33')]=_0x507988[_0xc45d('0x33')][_0xc45d('0x34')]?_0x507988[_0xc45d('0x33')]:_0x18faf5[_0xc45d('0x2d')];if(_0xf10c15[_0xc45d('0x2f')][_0xc45d('0x43')]){_0x507988[_0xc45d('0x3c')]=[{'all':!![]}];}_0x507988=_[_0xc45d('0x3a')]({},_0x507988,_0xf10c15[_0xc45d('0x44')]);return db[_0xc45d('0x28')][_0xc45d('0x45')](_0x507988)[_0xc45d('0x20')](handleEntityNotFound(_0x1428a6,null))[_0xc45d('0x20')](respondWithResult(_0x1428a6,null))['catch'](handleError(_0x1428a6,null));};exports[_0xc45d('0x46')]=function(_0x54b54d,_0x44b6e9){return db[_0xc45d('0x28')][_0xc45d('0x46')](_0x54b54d[_0xc45d('0x47')],{})[_0xc45d('0x20')](respondWithResult(_0x44b6e9,0xc9))[_0xc45d('0x3f')](handleError(_0x44b6e9,null));};exports[_0xc45d('0x1f')]=function(_0x43dee3,_0x4d1b88){if(_0x43dee3[_0xc45d('0x47')]['id']){delete _0x43dee3['body']['id'];}return db[_0xc45d('0x28')][_0xc45d('0x45')]({'where':{'id':_0x43dee3[_0xc45d('0x41')]['id']}})['then'](handleEntityNotFound(_0x4d1b88,null))[_0xc45d('0x20')](saveUpdates(_0x43dee3[_0xc45d('0x47')],null))[_0xc45d('0x20')](respondWithResult(_0x4d1b88,null))[_0xc45d('0x3f')](handleError(_0x4d1b88,null));};exports[_0xc45d('0x48')]=function(_0x1b1b60,_0x2fbd94){return db[_0xc45d('0x28')][_0xc45d('0x45')]({'where':{'id':_0x1b1b60['params']['id']}})['then'](handleEntityNotFound(_0x2fbd94,null))[_0xc45d('0x20')](removeEntity(_0x2fbd94,null))[_0xc45d('0x3f')](handleError(_0x2fbd94,null));};exports[_0xc45d('0x49')]=function(_0x32187f,_0x22ca56){return db[_0xc45d('0x28')][_0xc45d('0x49')]()[_0xc45d('0x20')](respondWithResult(_0x22ca56,null))[_0xc45d('0x3f')](handleError(_0x22ca56,null));};
\ No newline at end of file
+var _0x5ec1=['pick','filter','merge','VIRTUAL','options','then','includeAll','include','rows','catch','params','intersection','length','find','create','body','describe','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','destroy','error','stack','name','send','index','map','IntegrationReport','rawAttributes','fieldName','type','key','query','keys','filters','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x188fbd,_0x4e662b){var _0x17745b=function(_0x23386b){while(--_0x23386b){_0x188fbd['push'](_0x188fbd['shift']());}};_0x17745b(++_0x4e662b);}(_0x5ec1,0x13d));var _0x15ec=function(_0x101802,_0x11f913){_0x101802=_0x101802-0x0;var _0x5d61ce=_0x5ec1[_0x101802];return _0x5d61ce;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x15ec('0x0'));var jsonpatch=require(_0x15ec('0x1'));var rp=require('request-promise');var moment=require(_0x15ec('0x2'));var BPromise=require(_0x15ec('0x3'));var Mustache=require(_0x15ec('0x4'));var util=require(_0x15ec('0x5'));var path=require(_0x15ec('0x6'));var sox=require(_0x15ec('0x7'));var csv=require(_0x15ec('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x15ec('0x9'));var _=require('lodash');var squel=require(_0x15ec('0xa'));var crypto=require(_0x15ec('0xb'));var jsforce=require(_0x15ec('0xc'));var deskjs=require(_0x15ec('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x15ec('0xe'));var authService=require(_0x15ec('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x15ec('0x10'));var hardwareService=require(_0x15ec('0x11'));var logger=require(_0x15ec('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x15ec('0x13'));var licenseUtil=require(_0x15ec('0x14'));var db=require(_0x15ec('0x15'))['db'];function respondWithStatusCode(_0x4255ca,_0x560bde){_0x560bde=_0x560bde||0xcc;return function(_0x5c90fd){if(_0x5c90fd){return _0x4255ca[_0x15ec('0x16')](_0x560bde);}return _0x4255ca['status'](_0x560bde)[_0x15ec('0x17')]();};}function respondWithResult(_0x599db6,_0x1af550){_0x1af550=_0x1af550||0xc8;return function(_0x569f9b){if(_0x569f9b){return _0x599db6[_0x15ec('0x18')](_0x1af550)[_0x15ec('0x19')](_0x569f9b);}};}function respondWithFilteredResult(_0x4abeaf,_0x3c9b2b){return function(_0x6ad1){if(_0x6ad1){var _0x53b022=typeof _0x3c9b2b['offset']===_0x15ec('0x1a')&&typeof _0x3c9b2b['limit']===_0x15ec('0x1a');var _0x28ce6b=_0x6ad1[_0x15ec('0x1b')];var _0x171d11=_0x53b022?0x0:_0x3c9b2b[_0x15ec('0x1c')];var _0x4b1064=_0x53b022?_0x6ad1[_0x15ec('0x1b')]:_0x3c9b2b[_0x15ec('0x1c')]+_0x3c9b2b[_0x15ec('0x1d')];var _0x39738e;if(_0x4b1064>=_0x28ce6b){_0x4b1064=_0x28ce6b;_0x39738e=0xc8;}else{_0x39738e=0xce;}_0x4abeaf[_0x15ec('0x18')](_0x39738e);return _0x4abeaf[_0x15ec('0x1e')](_0x15ec('0x1f'),_0x171d11+'-'+_0x4b1064+'/'+_0x28ce6b)[_0x15ec('0x19')](_0x6ad1);}return null;};}function patchUpdates(_0x213bc4){return function(_0x12310a){try{jsonpatch[_0x15ec('0x20')](_0x12310a,_0x213bc4,!![]);}catch(_0x482bd2){return BPromise['reject'](_0x482bd2);}return _0x12310a[_0x15ec('0x21')]();};}function saveUpdates(_0x5a1e8f,_0x2e6cb8){return function(_0x431ae3){if(_0x431ae3){return _0x431ae3[_0x15ec('0x22')](_0x5a1e8f)['then'](function(_0x39bfac){return _0x39bfac;});}return null;};}function removeEntity(_0x1b40b4,_0x566446){return function(_0x2ce7d2){if(_0x2ce7d2){return _0x2ce7d2[_0x15ec('0x23')]()['then'](function(){_0x1b40b4[_0x15ec('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9db0f0,_0x58ecc2){return function(_0x180c44){if(!_0x180c44){_0x9db0f0[_0x15ec('0x16')](0x194);}return _0x180c44;};}function handleError(_0x4bfaa6,_0xc5eb0d){_0xc5eb0d=_0xc5eb0d||0x1f4;return function(_0x2d857a){logger[_0x15ec('0x24')](_0x2d857a[_0x15ec('0x25')]);if(_0x2d857a[_0x15ec('0x26')]){delete _0x2d857a['name'];}_0x4bfaa6[_0x15ec('0x18')](_0xc5eb0d)[_0x15ec('0x27')](_0x2d857a);};}exports[_0x15ec('0x28')]=function(_0x723916,_0x5e8ed0){var _0x1f8fd6={},_0x28e2d0={},_0x705c9e={'count':0x0,'rows':[]};var _0x4c560a=_[_0x15ec('0x29')](db[_0x15ec('0x2a')][_0x15ec('0x2b')],function(_0x2814f4){return{'name':_0x2814f4[_0x15ec('0x2c')],'type':_0x2814f4[_0x15ec('0x2d')][_0x15ec('0x2e')]};});_0x28e2d0['model']=_[_0x15ec('0x29')](_0x4c560a,_0x15ec('0x26'));_0x28e2d0[_0x15ec('0x2f')]=_[_0x15ec('0x30')](_0x723916['query']);_0x28e2d0[_0x15ec('0x31')]=_['intersection'](_0x28e2d0['model'],_0x28e2d0[_0x15ec('0x2f')]);_0x1f8fd6[_0x15ec('0x32')]=_['intersection'](_0x28e2d0[_0x15ec('0x33')],qs['fields'](_0x723916['query'][_0x15ec('0x34')]));_0x1f8fd6['attributes']=_0x1f8fd6[_0x15ec('0x32')]['length']?_0x1f8fd6[_0x15ec('0x32')]:_0x28e2d0['model'];if(!_0x723916[_0x15ec('0x2f')][_0x15ec('0x35')](_0x15ec('0x36'))){_0x1f8fd6[_0x15ec('0x1d')]=qs[_0x15ec('0x1d')](_0x723916[_0x15ec('0x2f')][_0x15ec('0x1d')]);_0x1f8fd6['offset']=qs[_0x15ec('0x1c')](_0x723916[_0x15ec('0x2f')]['offset']);}_0x1f8fd6[_0x15ec('0x37')]=qs[_0x15ec('0x38')](_0x723916[_0x15ec('0x2f')][_0x15ec('0x38')]);_0x1f8fd6[_0x15ec('0x39')]=qs[_0x15ec('0x31')](_[_0x15ec('0x3a')](_0x723916['query'],_0x28e2d0[_0x15ec('0x31')]),_0x4c560a);if(_0x723916[_0x15ec('0x2f')][_0x15ec('0x3b')]){_0x1f8fd6[_0x15ec('0x39')]=_[_0x15ec('0x3c')](_0x1f8fd6[_0x15ec('0x39')],{'$or':_[_0x15ec('0x29')](_0x4c560a,function(_0x21df66){if(_0x21df66[_0x15ec('0x2d')]!==_0x15ec('0x3d')){var _0x252b6f={};_0x252b6f[_0x21df66[_0x15ec('0x26')]]={'$like':'%'+_0x723916['query']['filter']+'%'};return _0x252b6f;}})});}_0x1f8fd6=_['merge']({},_0x1f8fd6,_0x723916[_0x15ec('0x3e')]);var _0x5b4001={'where':_0x1f8fd6['where']};return db[_0x15ec('0x2a')][_0x15ec('0x1b')](_0x5b4001)[_0x15ec('0x3f')](function(_0x25ce92){_0x705c9e[_0x15ec('0x1b')]=_0x25ce92;if(_0x723916[_0x15ec('0x2f')][_0x15ec('0x40')]){_0x1f8fd6[_0x15ec('0x41')]=[{'all':!![]}];}return db[_0x15ec('0x2a')]['findAll'](_0x1f8fd6);})[_0x15ec('0x3f')](function(_0x5e1ceb){_0x705c9e[_0x15ec('0x42')]=_0x5e1ceb;return _0x705c9e;})[_0x15ec('0x3f')](respondWithFilteredResult(_0x5e8ed0,_0x1f8fd6))[_0x15ec('0x43')](handleError(_0x5e8ed0,null));};exports['show']=function(_0x13c60a,_0x250786){var _0x831dba={'raw':![],'where':{'id':_0x13c60a[_0x15ec('0x44')]['id']}},_0x5a0b37={};_0x5a0b37[_0x15ec('0x33')]=_[_0x15ec('0x30')](db[_0x15ec('0x2a')]['rawAttributes']);_0x5a0b37[_0x15ec('0x2f')]=_[_0x15ec('0x30')](_0x13c60a[_0x15ec('0x2f')]);_0x5a0b37[_0x15ec('0x31')]=_[_0x15ec('0x45')](_0x5a0b37[_0x15ec('0x33')],_0x5a0b37[_0x15ec('0x2f')]);_0x831dba[_0x15ec('0x32')]=_[_0x15ec('0x45')](_0x5a0b37[_0x15ec('0x33')],qs['fields'](_0x13c60a['query'][_0x15ec('0x34')]));_0x831dba[_0x15ec('0x32')]=_0x831dba[_0x15ec('0x32')][_0x15ec('0x46')]?_0x831dba[_0x15ec('0x32')]:_0x5a0b37[_0x15ec('0x33')];if(_0x13c60a[_0x15ec('0x2f')][_0x15ec('0x40')]){_0x831dba[_0x15ec('0x41')]=[{'all':!![]}];}_0x831dba=_[_0x15ec('0x3c')]({},_0x831dba,_0x13c60a[_0x15ec('0x3e')]);return db[_0x15ec('0x2a')][_0x15ec('0x47')](_0x831dba)[_0x15ec('0x3f')](handleEntityNotFound(_0x250786,null))[_0x15ec('0x3f')](respondWithResult(_0x250786,null))['catch'](handleError(_0x250786,null));};exports['create']=function(_0x299da8,_0x23182a){return db[_0x15ec('0x2a')][_0x15ec('0x48')](_0x299da8[_0x15ec('0x49')],{})[_0x15ec('0x3f')](respondWithResult(_0x23182a,0xc9))[_0x15ec('0x43')](handleError(_0x23182a,null));};exports[_0x15ec('0x22')]=function(_0x25fc7e,_0x590a29){if(_0x25fc7e[_0x15ec('0x49')]['id']){delete _0x25fc7e[_0x15ec('0x49')]['id'];}return db[_0x15ec('0x2a')][_0x15ec('0x47')]({'where':{'id':_0x25fc7e[_0x15ec('0x44')]['id']}})[_0x15ec('0x3f')](handleEntityNotFound(_0x590a29,null))[_0x15ec('0x3f')](saveUpdates(_0x25fc7e[_0x15ec('0x49')],null))['then'](respondWithResult(_0x590a29,null))[_0x15ec('0x43')](handleError(_0x590a29,null));};exports[_0x15ec('0x23')]=function(_0x198228,_0xd7bd60){return db['IntegrationReport'][_0x15ec('0x47')]({'where':{'id':_0x198228[_0x15ec('0x44')]['id']}})[_0x15ec('0x3f')](handleEntityNotFound(_0xd7bd60,null))['then'](removeEntity(_0xd7bd60,null))['catch'](handleError(_0xd7bd60,null));};exports[_0x15ec('0x4a')]=function(_0x25ce26,_0x45ac30){return db[_0x15ec('0x2a')]['describe']()[_0x15ec('0x3f')](respondWithResult(_0x45ac30,null))[_0x15ec('0x43')](handleError(_0x45ac30,null));};
\ No newline at end of file
index 663b7db..32a46b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x102b=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','lodash','util','api'];(function(_0x2a5acf,_0x20bf9f){var _0x33f148=function(_0x4bdd03){while(--_0x4bdd03){_0x2a5acf['push'](_0x2a5acf['shift']());}};_0x33f148(++_0x20bf9f);}(_0x102b,0x1c0));var _0xb102=function(_0x369f15,_0x245f6b){_0x369f15=_0x369f15-0x0;var _0x873dab=_0x102b[_0x369f15];return _0x873dab;};'use strict';var _=require(_0xb102('0x0'));var util=require(_0xb102('0x1'));var logger=require('../../config/logger')(_0xb102('0x2'));var moment=require(_0xb102('0x3'));var BPromise=require(_0xb102('0x4'));var rp=require(_0xb102('0x5'));var fs=require('fs');var path=require(_0xb102('0x6'));var rimraf=require(_0xb102('0x7'));var config=require(_0xb102('0x8'));var attributes=require('./integrationReport.attributes');module[_0xb102('0x9')]=function(_0x34d4be,_0xb4da21){return _0x34d4be[_0xb102('0xa')]('IntegrationReport',attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8503=['define','IntegrationReport','util','../../config/logger','moment','request-promise','path','../../config/environment'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x8503,0xa2));var _0x3850=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x8503[_0x565c49];return _0x20ca34;};'use strict';var _=require('lodash');var util=require(_0x3850('0x0'));var logger=require(_0x3850('0x1'))('api');var moment=require(_0x3850('0x2'));var BPromise=require('bluebird');var rp=require(_0x3850('0x3'));var fs=require('fs');var path=require(_0x3850('0x4'));var rimraf=require('rimraf');var config=require(_0x3850('0x5'));var attributes=require('./integrationReport.attributes');module['exports']=function(_0x984862,_0x3a12bb){return _0x984862[_0x3850('0x6')](_0x3850('0x7'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60e4c2f..c88fc76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['client','http','request','info','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','IntegrationReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x402cc3,_0x1fad89){var _0x36ab71=function(_0x2d9092){while(--_0x2d9092){_0x402cc3['push'](_0x402cc3['shift']());}};_0x36ab71(++_0x1fad89);}(_0x57ca,0x108));var _0xa57c=function(_0x52eaec,_0x5bbd95){_0x52eaec=_0x52eaec-0x0;var _0x436ae0=_0x57ca[_0x52eaec];return _0x436ae0;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
+var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x53ec,0x192));var _0xc53e=function(_0x3369c5,_0xce66ba){_0x3369c5=_0x3369c5-0x0;var _0x10fae9=_0x53ec[_0x3369c5];return _0x10fae9;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
index 40f9a9a..3644cb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cab=['path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','show','/:id/sub_intervals','getIntervals','create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','/:id','destroy','exports','multer','util'];(function(_0x184e3f,_0x42bedf){var _0x171a93=function(_0x9d269c){while(--_0x9d269c){_0x184e3f['push'](_0x184e3f['shift']());}};_0x171a93(++_0x42bedf);}(_0x7cab,0x91));var _0xb7ca=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x7cab[_0x42cae2];return _0x5f256f;};'use strict';var multer=require(_0xb7ca('0x0'));var util=require(_0xb7ca('0x1'));var path=require(_0xb7ca('0x2'));var timeout=require('connect-timeout');var express=require(_0xb7ca('0x3'));var router=express[_0xb7ca('0x4')]();var fs_extra=require(_0xb7ca('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb7ca('0x6'));var config=require('../../config/environment');var controller=require('./interval.controller');router[_0xb7ca('0x7')]('/',auth[_0xb7ca('0x8')](),controller['index']);router[_0xb7ca('0x7')]('/:id',auth[_0xb7ca('0x8')](),controller[_0xb7ca('0x9')]);router[_0xb7ca('0x7')](_0xb7ca('0xa'),auth[_0xb7ca('0x8')](),controller[_0xb7ca('0xb')]);router['post']('/',auth[_0xb7ca('0x8')](),controller[_0xb7ca('0xc')]);router[_0xb7ca('0xd')]('/:id/sub_intervals',auth[_0xb7ca('0x8')](),controller[_0xb7ca('0xe')]);router['post'](_0xb7ca('0xf'),auth[_0xb7ca('0x8')](),controller[_0xb7ca('0x10')]);router[_0xb7ca('0x11')](_0xb7ca('0x12'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xb7ca('0x12'),auth[_0xb7ca('0x8')](),controller[_0xb7ca('0x13')]);module[_0xb7ca('0x14')]=router;
\ No newline at end of file
+var _0xac39=['create','addInterval','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index','show','/:id/sub_intervals'];(function(_0x49a672,_0x15a267){var _0x57b393=function(_0x14c957){while(--_0x14c957){_0x49a672['push'](_0x49a672['shift']());}};_0x57b393(++_0x15a267);}(_0xac39,0x11c));var _0x9ac3=function(_0x2338bc,_0x4abdd7){_0x2338bc=_0x2338bc-0x0;var _0x1d1900=_0xac39[_0x2338bc];return _0x1d1900;};'use strict';var multer=require(_0x9ac3('0x0'));var util=require(_0x9ac3('0x1'));var path=require(_0x9ac3('0x2'));var timeout=require(_0x9ac3('0x3'));var express=require(_0x9ac3('0x4'));var router=express[_0x9ac3('0x5')]();var fs_extra=require(_0x9ac3('0x6'));var auth=require(_0x9ac3('0x7'));var interaction=require(_0x9ac3('0x8'));var config=require(_0x9ac3('0x9'));var controller=require(_0x9ac3('0xa'));router[_0x9ac3('0xb')]('/',auth[_0x9ac3('0xc')](),controller[_0x9ac3('0xd')]);router[_0x9ac3('0xb')]('/:id',auth[_0x9ac3('0xc')](),controller[_0x9ac3('0xe')]);router[_0x9ac3('0xb')](_0x9ac3('0xf'),auth['isAuthenticated'](),controller['getIntervals']);router['post']('/',auth[_0x9ac3('0xc')](),controller[_0x9ac3('0x10')]);router['post']('/:id/sub_intervals',auth[_0x9ac3('0xc')](),controller[_0x9ac3('0x11')]);router[_0x9ac3('0x12')]('/:id/sub_intervals/create_many',auth[_0x9ac3('0xc')](),controller['addIntervals']);router[_0x9ac3('0x13')](_0x9ac3('0x14'),auth['isAuthenticated'](),controller[_0x9ac3('0x15')]);router[_0x9ac3('0x16')](_0x9ac3('0x14'),auth[_0x9ac3('0xc')](),controller[_0x9ac3('0x17')]);module[_0x9ac3('0x18')]=router;
\ No newline at end of file
index 16f5f0c..8960db5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eeb=['STRING'];(function(_0xb51d68,_0x34b0a3){var _0x5eff88=function(_0x87a554){while(--_0x87a554){_0xb51d68['push'](_0xb51d68['shift']());}};_0x5eff88(++_0x34b0a3);}(_0x4eeb,0x91));var _0xb4ee=function(_0x1caca5,_0x2f841f){_0x1caca5=_0x1caca5-0x0;var _0x4eb553=_0x4eeb[_0x1caca5];return _0x4eb553;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xb4ee('0x0')],'allowNull':!![]}};
\ No newline at end of file
+var _0x3312=['STRING','sequelize','exports'];(function(_0x4c7d8b,_0x572388){var _0x187158=function(_0x5e956d){while(--_0x5e956d){_0x4c7d8b['push'](_0x4c7d8b['shift']());}};_0x187158(++_0x572388);}(_0x3312,0xee));var _0x2331=function(_0x16102f,_0x5ba16f){_0x16102f=_0x16102f-0x0;var _0x170ec9=_0x3312[_0x16102f];return _0x170ec9;};'use strict';var Sequelize=require(_0x2331('0x0'));module[_0x2331('0x1')]={'name':{'type':Sequelize[_0x2331('0x2')]},'description':{'type':Sequelize[_0x2331('0x2')]},'interval':{'type':Sequelize[_0x2331('0x2')],'allowNull':!![]}};
\ No newline at end of file
index f5ea898..6602b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['sort','where','filters','pick','filter','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addInterval','IntervalId','getIntervals','findOne','sequelize','bulkCreate','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','status','end','json','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','sendStatus','stack','name','send','Interval','fieldName','type','keys','intersection','model','attributes','fields','length','query','hasOwnProperty','nolimit','order'];(function(_0x3071bd,_0x196884){var _0x3396fb=function(_0x24f379){while(--_0x24f379){_0x3071bd['push'](_0x3071bd['shift']());}};_0x3396fb(++_0x196884);}(_0xdc97,0x194));var _0x7dc9=function(_0x4b9c7e,_0x2aaf34){_0x4b9c7e=_0x4b9c7e-0x0;var _0x2670d1=_0xdc97[_0x4b9c7e];return _0x2670d1;};'use strict';var emlformat=require(_0x7dc9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7dc9('0x1'));var jsonpatch=require(_0x7dc9('0x2'));var rp=require(_0x7dc9('0x3'));var moment=require(_0x7dc9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7dc9('0x5'));var util=require(_0x7dc9('0x6'));var path=require(_0x7dc9('0x7'));var sox=require(_0x7dc9('0x8'));var csv=require(_0x7dc9('0x9'));var ejs=require(_0x7dc9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7dc9('0xb'));var squel=require('squel');var crypto=require(_0x7dc9('0xc'));var jsforce=require(_0x7dc9('0xd'));var deskjs=require(_0x7dc9('0xe'));var toCsv=require(_0x7dc9('0x9'));var querystring=require(_0x7dc9('0xf'));var Papa=require(_0x7dc9('0x10'));var Redis=require('ioredis');var authService=require(_0x7dc9('0x11'));var qs=require(_0x7dc9('0x12'));var as=require(_0x7dc9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7dc9('0x14'))(_0x7dc9('0x15'));var utils=require(_0x7dc9('0x16'));var config=require(_0x7dc9('0x17'));var licenseUtil=require(_0x7dc9('0x18'));var db=require(_0x7dc9('0x19'))['db'];var extensions=require(_0x7dc9('0x1a'));function respondWithStatusCode(_0x386d4f,_0x5c1799){_0x5c1799=_0x5c1799||0xcc;return function(_0x59d64a){if(_0x59d64a){return _0x386d4f['sendStatus'](_0x5c1799);}return _0x386d4f[_0x7dc9('0x1b')](_0x5c1799)[_0x7dc9('0x1c')]();};}function respondWithResult(_0x1a042d,_0x45fea0){_0x45fea0=_0x45fea0||0xc8;return function(_0x54fc91){if(_0x54fc91){return _0x1a042d[_0x7dc9('0x1b')](_0x45fea0)[_0x7dc9('0x1d')](_0x54fc91);}};}function respondWithFilteredResult(_0x2e28f3,_0x3e472a){return function(_0x4a2609){if(_0x4a2609){var _0x16dd2b=typeof _0x3e472a['offset']==='undefined'&&typeof _0x3e472a['limit']==='undefined';var _0x5ce4dc=_0x4a2609['count'];var _0x594d8e=_0x16dd2b?0x0:_0x3e472a[_0x7dc9('0x1e')];var _0x1b286b=_0x16dd2b?_0x4a2609[_0x7dc9('0x1f')]:_0x3e472a[_0x7dc9('0x1e')]+_0x3e472a[_0x7dc9('0x20')];var _0xfbb6fe;if(_0x1b286b>=_0x5ce4dc){_0x1b286b=_0x5ce4dc;_0xfbb6fe=0xc8;}else{_0xfbb6fe=0xce;}_0x2e28f3[_0x7dc9('0x1b')](_0xfbb6fe);return _0x2e28f3[_0x7dc9('0x21')](_0x7dc9('0x22'),_0x594d8e+'-'+_0x1b286b+'/'+_0x5ce4dc)[_0x7dc9('0x1d')](_0x4a2609);}return null;};}function patchUpdates(_0x1b21b2){return function(_0x5eb0d8){try{jsonpatch[_0x7dc9('0x23')](_0x5eb0d8,_0x1b21b2,!![]);}catch(_0x82e1cf){return BPromise[_0x7dc9('0x24')](_0x82e1cf);}return _0x5eb0d8[_0x7dc9('0x25')]();};}function saveUpdates(_0x2dae2b,_0x51a36e){return function(_0x3a4dd9){if(_0x3a4dd9){return _0x3a4dd9[_0x7dc9('0x26')](_0x2dae2b)[_0x7dc9('0x27')](function(_0xd682dd){return _0xd682dd;});}return null;};}function removeEntity(_0x4e6e01,_0x32b710){return function(_0x5ce760){if(_0x5ce760){return _0x5ce760[_0x7dc9('0x28')]()[_0x7dc9('0x27')](function(){var _0x1a1253=_0x5ce760[_0x7dc9('0x29')]({'plain':!![]});var _0x3df0b8=_0x7dc9('0x2a');return db[_0x7dc9('0x2b')][_0x7dc9('0x28')]({'where':{'type':_0x3df0b8,'resourceId':_0x1a1253['id']}})[_0x7dc9('0x27')](function(){return _0x5ce760;});})['then'](function(){_0x4e6e01['status'](0xcc)[_0x7dc9('0x1c')]();});}};}function handleEntityNotFound(_0x510870,_0x5c5ca8){return function(_0x48a5ed){if(!_0x48a5ed){_0x510870[_0x7dc9('0x2c')](0x194);}return _0x48a5ed;};}function handleError(_0x1eb001,_0x50e473){_0x50e473=_0x50e473||0x1f4;return function(_0x53e45c){logger['error'](_0x53e45c[_0x7dc9('0x2d')]);if(_0x53e45c[_0x7dc9('0x2e')]){delete _0x53e45c[_0x7dc9('0x2e')];}_0x1eb001[_0x7dc9('0x1b')](_0x50e473)[_0x7dc9('0x2f')](_0x53e45c);};}exports['index']=function(_0x19fcba,_0x41c5eb){var _0x397cb6={},_0x1a048c={},_0x427598={'count':0x0,'rows':[]};var _0x385767=_['map'](db[_0x7dc9('0x30')]['rawAttributes'],function(_0xae0576){return{'name':_0xae0576[_0x7dc9('0x31')],'type':_0xae0576[_0x7dc9('0x32')]['key']};});_0x1a048c['model']=_['map'](_0x385767,_0x7dc9('0x2e'));_0x1a048c['query']=_[_0x7dc9('0x33')](_0x19fcba['query']);_0x1a048c['filters']=_[_0x7dc9('0x34')](_0x1a048c[_0x7dc9('0x35')],_0x1a048c['query']);_0x397cb6[_0x7dc9('0x36')]=_[_0x7dc9('0x34')](_0x1a048c[_0x7dc9('0x35')],qs[_0x7dc9('0x37')](_0x19fcba['query']['fields']));_0x397cb6[_0x7dc9('0x36')]=_0x397cb6[_0x7dc9('0x36')][_0x7dc9('0x38')]?_0x397cb6[_0x7dc9('0x36')]:_0x1a048c[_0x7dc9('0x35')];if(!_0x19fcba[_0x7dc9('0x39')][_0x7dc9('0x3a')](_0x7dc9('0x3b'))){_0x397cb6['limit']=qs['limit'](_0x19fcba[_0x7dc9('0x39')][_0x7dc9('0x20')]);_0x397cb6[_0x7dc9('0x1e')]=qs[_0x7dc9('0x1e')](_0x19fcba['query'][_0x7dc9('0x1e')]);}_0x397cb6[_0x7dc9('0x3c')]=qs[_0x7dc9('0x3d')](_0x19fcba['query'][_0x7dc9('0x3d')]);_0x397cb6[_0x7dc9('0x3e')]=qs[_0x7dc9('0x3f')](_[_0x7dc9('0x40')](_0x19fcba[_0x7dc9('0x39')],_0x1a048c[_0x7dc9('0x3f')]),_0x385767);if(_0x19fcba[_0x7dc9('0x39')][_0x7dc9('0x41')]){_0x397cb6['where']=_[_0x7dc9('0x42')](_0x397cb6[_0x7dc9('0x3e')],{'$or':_[_0x7dc9('0x43')](_0x385767,function(_0x520de5){if(_0x520de5[_0x7dc9('0x32')]!==_0x7dc9('0x44')){var _0x1edd5a={};_0x1edd5a[_0x520de5[_0x7dc9('0x2e')]]={'$like':'%'+_0x19fcba['query']['filter']+'%'};return _0x1edd5a;}})});}_0x397cb6=_[_0x7dc9('0x42')]({},_0x397cb6,_0x19fcba['options']);var _0x36da5c={'where':_0x397cb6[_0x7dc9('0x3e')]};return db['Interval'][_0x7dc9('0x1f')](_0x36da5c)[_0x7dc9('0x27')](function(_0x3af5c2){_0x427598[_0x7dc9('0x1f')]=_0x3af5c2;if(_0x19fcba['query'][_0x7dc9('0x45')]){_0x397cb6[_0x7dc9('0x46')]=[{'all':!![]}];}return db[_0x7dc9('0x30')][_0x7dc9('0x47')](_0x397cb6);})[_0x7dc9('0x27')](function(_0x250151){_0x427598[_0x7dc9('0x48')]=_0x250151;return _0x427598;})[_0x7dc9('0x27')](respondWithFilteredResult(_0x41c5eb,_0x397cb6))[_0x7dc9('0x49')](handleError(_0x41c5eb,null));};exports[_0x7dc9('0x4a')]=function(_0x4ddea3,_0x269c7b){var _0x2ea75e={'raw':!![],'where':{'id':_0x4ddea3[_0x7dc9('0x4b')]['id']}},_0x3b8f27={};_0x3b8f27[_0x7dc9('0x35')]=_[_0x7dc9('0x33')](db['Interval'][_0x7dc9('0x4c')]);_0x3b8f27[_0x7dc9('0x39')]=_[_0x7dc9('0x33')](_0x4ddea3[_0x7dc9('0x39')]);_0x3b8f27[_0x7dc9('0x3f')]=_['intersection'](_0x3b8f27['model'],_0x3b8f27[_0x7dc9('0x39')]);_0x2ea75e[_0x7dc9('0x36')]=_[_0x7dc9('0x34')](_0x3b8f27[_0x7dc9('0x35')],qs[_0x7dc9('0x37')](_0x4ddea3[_0x7dc9('0x39')][_0x7dc9('0x37')]));_0x2ea75e[_0x7dc9('0x36')]=_0x2ea75e[_0x7dc9('0x36')][_0x7dc9('0x38')]?_0x2ea75e[_0x7dc9('0x36')]:_0x3b8f27[_0x7dc9('0x35')];if(_0x4ddea3['query'][_0x7dc9('0x45')]){_0x2ea75e['include']=[{'all':!![]}];}_0x2ea75e=_[_0x7dc9('0x42')]({},_0x2ea75e,_0x4ddea3[_0x7dc9('0x4d')]);return db[_0x7dc9('0x30')]['find'](_0x2ea75e)['then'](handleEntityNotFound(_0x269c7b,null))['then'](respondWithResult(_0x269c7b,null))[_0x7dc9('0x49')](handleError(_0x269c7b,null));};exports[_0x7dc9('0x4e')]=function(_0x4eaa78,_0x323acb){return db['Interval'][_0x7dc9('0x4e')](_0x4eaa78['body'],{})[_0x7dc9('0x27')](function(_0x28c8c1){var _0x2af51c=_0x4eaa78[_0x7dc9('0x4f')][_0x7dc9('0x29')]({'plain':!![]});if(!_0x2af51c)throw new Error(_0x7dc9('0x50'));if(_0x2af51c['role']===_0x7dc9('0x4f')){var _0xc47392=_0x28c8c1[_0x7dc9('0x29')]({'plain':!![]});var _0x988831=_0x7dc9('0x2a');return db[_0x7dc9('0x51')][_0x7dc9('0x52')]({'where':{'name':_0x988831,'userProfileId':_0x2af51c[_0x7dc9('0x53')]},'raw':!![]})[_0x7dc9('0x27')](function(_0x3e5da7){if(_0x3e5da7&&_0x3e5da7[_0x7dc9('0x54')]===0x0){return db[_0x7dc9('0x2b')]['create']({'name':_0xc47392['name'],'resourceId':_0xc47392['id'],'type':_0x3e5da7['name'],'sectionId':_0x3e5da7['id']},{})['then'](function(){return _0x28c8c1;});}else{return _0x28c8c1;}})['catch'](function(_0x25a92e){logger['error'](_0x7dc9('0x55'),_0x25a92e);throw _0x25a92e;});}return _0x28c8c1;})[_0x7dc9('0x27')](respondWithResult(_0x323acb,0xc9))[_0x7dc9('0x49')](handleError(_0x323acb,null));};exports[_0x7dc9('0x26')]=function(_0x4c74c3,_0x1d6220){if(_0x4c74c3[_0x7dc9('0x56')]['id']){delete _0x4c74c3[_0x7dc9('0x56')]['id'];}return db[_0x7dc9('0x30')]['find']({'where':{'id':_0x4c74c3[_0x7dc9('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1d6220,null))[_0x7dc9('0x27')](saveUpdates(_0x4c74c3[_0x7dc9('0x56')],null))[_0x7dc9('0x27')](respondWithResult(_0x1d6220,null))[_0x7dc9('0x49')](handleError(_0x1d6220,null));};exports[_0x7dc9('0x28')]=function(_0x5f5b3e,_0x22ac35){return db[_0x7dc9('0x30')][_0x7dc9('0x52')]({'where':{'id':_0x5f5b3e[_0x7dc9('0x4b')]['id']}})[_0x7dc9('0x27')](handleEntityNotFound(_0x22ac35,null))['then'](removeEntity(_0x22ac35,null))[_0x7dc9('0x49')](handleError(_0x22ac35,null));};exports[_0x7dc9('0x57')]=function(_0x51a1e7,_0x363e45,_0x30f646){if(_0x51a1e7['body']['id']){delete _0x51a1e7['body']['id'];}return db[_0x7dc9('0x30')]['find']({'where':{'id':_0x51a1e7[_0x7dc9('0x4b')]['id']}})[_0x7dc9('0x27')](handleEntityNotFound(_0x363e45,null))[_0x7dc9('0x27')](function(_0x5da328){if(_0x5da328){_0x51a1e7[_0x7dc9('0x56')][_0x7dc9('0x58')]=_0x5da328['id'];return db[_0x7dc9('0x30')][_0x7dc9('0x4e')](_0x51a1e7[_0x7dc9('0x56')]);}})['then'](respondWithResult(_0x363e45,null))[_0x7dc9('0x49')](handleError(_0x363e45,null));};exports[_0x7dc9('0x59')]=function(_0x39a7bd,_0x5153c5,_0x3b8d88){var _0x148478={};var _0x5ebf8b={};var _0x44e998;var _0x553d76;return db['Interval'][_0x7dc9('0x5a')]({'where':{'id':_0x39a7bd[_0x7dc9('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5153c5,null))[_0x7dc9('0x27')](function(_0x6848bc){if(_0x6848bc){_0x44e998=_0x6848bc;_0x5ebf8b[_0x7dc9('0x35')]=_[_0x7dc9('0x33')](db['Interval'][_0x7dc9('0x4c')]);_0x5ebf8b[_0x7dc9('0x39')]=_[_0x7dc9('0x33')](_0x39a7bd[_0x7dc9('0x39')]);_0x5ebf8b[_0x7dc9('0x3f')]=_['intersection'](_0x5ebf8b[_0x7dc9('0x35')],_0x5ebf8b[_0x7dc9('0x39')]);_0x148478[_0x7dc9('0x36')]=_[_0x7dc9('0x34')](_0x5ebf8b[_0x7dc9('0x35')],qs[_0x7dc9('0x37')](_0x39a7bd['query']['fields']));_0x148478[_0x7dc9('0x36')]=_0x148478['attributes'][_0x7dc9('0x38')]?_0x148478[_0x7dc9('0x36')]:_0x5ebf8b[_0x7dc9('0x35')];_0x148478[_0x7dc9('0x3c')]=qs['sort'](_0x39a7bd[_0x7dc9('0x39')][_0x7dc9('0x3d')]);_0x148478['where']=qs[_0x7dc9('0x3f')](_[_0x7dc9('0x40')](_0x39a7bd[_0x7dc9('0x39')],_0x5ebf8b[_0x7dc9('0x3f')]));if(_0x39a7bd[_0x7dc9('0x39')][_0x7dc9('0x41')]){_0x148478[_0x7dc9('0x3e')]=_[_0x7dc9('0x42')](_0x148478[_0x7dc9('0x3e')],{'$or':_[_0x7dc9('0x43')](_0x148478[_0x7dc9('0x36')],function(_0x108529){var _0x50cc15={};_0x50cc15[_0x108529]={'$like':'%'+_0x39a7bd['query'][_0x7dc9('0x41')]+'%'};return _0x50cc15;})});}_0x148478=_[_0x7dc9('0x42')]({},_0x148478,_0x39a7bd[_0x7dc9('0x4d')]);return _0x44e998['getIntervals'](_0x148478);}})[_0x7dc9('0x27')](function(_0x19da7f){if(_0x19da7f){_0x553d76=_0x19da7f[_0x7dc9('0x38')];if(!_0x39a7bd['query'][_0x7dc9('0x3a')](_0x7dc9('0x3b'))){_0x148478[_0x7dc9('0x20')]=qs['limit'](_0x39a7bd[_0x7dc9('0x39')][_0x7dc9('0x20')]);_0x148478[_0x7dc9('0x1e')]=qs[_0x7dc9('0x1e')](_0x39a7bd[_0x7dc9('0x39')][_0x7dc9('0x1e')]);}return _0x44e998[_0x7dc9('0x59')](_0x148478);}})[_0x7dc9('0x27')](function(_0x373a83){if(_0x373a83){return _0x373a83?{'count':_0x553d76,'rows':_0x373a83}:null;}})[_0x7dc9('0x27')](respondWithResult(_0x5153c5,null))['catch'](handleError(_0x5153c5,null));};exports['addIntervals']=function(_0x18c34c,_0x31e719,_0xeed9f0){return db[_0x7dc9('0x30')][_0x7dc9('0x5a')]({'where':{'id':_0x18c34c[_0x7dc9('0x4b')]['id']}})[_0x7dc9('0x27')](handleEntityNotFound(_0x31e719,null))['then'](function(_0x9e46f9){if(_0x9e46f9){return db[_0x7dc9('0x5b')]['transaction'](function(_0x5c9a55){return db[_0x7dc9('0x30')]['destroy']({'where':{'IntervalId':_0x18c34c[_0x7dc9('0x4b')]['id']},'transaction':_0x5c9a55})['then'](function(_0x2ca4b7){var _0x670f22=_[_0x7dc9('0x43')](_0x18c34c['body'],function(_0x5cf8d5){delete _0x5cf8d5['id'];_0x5cf8d5['IntervalId']=_0x18c34c[_0x7dc9('0x4b')]['id'];return _0x5cf8d5;});return db['Interval'][_0x7dc9('0x5c')](_0x670f22,{'transaction':_0x5c9a55});});})[_0x7dc9('0x27')](function(){return db[_0x7dc9('0x30')]['findAll']({'where':{'IntervalId':_0x18c34c[_0x7dc9('0x4b')]['id']}});});}})[_0x7dc9('0x27')](respondWithResult(_0x31e719,null))[_0x7dc9('0x49')](handleError(_0x31e719,null));};
\ No newline at end of file
+var _0x6dae=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','get','Intervals','UserProfileResource','destroy','error','stack','name','index','map','Interval','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addInterval','IntervalId','getIntervals','sort','addIntervals','findOne','sequelize','bulkCreate','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x3a422c,_0x4c5700){var _0x2ca0ce=function(_0x31443b){while(--_0x31443b){_0x3a422c['push'](_0x3a422c['shift']());}};_0x2ca0ce(++_0x4c5700);}(_0x6dae,0x100));var _0xe6da=function(_0x497844,_0x40738d){_0x497844=_0x497844-0x0;var _0x20c1ca=_0x6dae[_0x497844];return _0x20c1ca;};'use strict';var emlformat=require(_0xe6da('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe6da('0x1'));var jsonpatch=require(_0xe6da('0x2'));var rp=require(_0xe6da('0x3'));var moment=require('moment');var BPromise=require(_0xe6da('0x4'));var Mustache=require(_0xe6da('0x5'));var util=require('util');var path=require(_0xe6da('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe6da('0x7'));var _=require(_0xe6da('0x8'));var squel=require(_0xe6da('0x9'));var crypto=require(_0xe6da('0xa'));var jsforce=require(_0xe6da('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe6da('0xc'));var querystring=require(_0xe6da('0xd'));var Papa=require(_0xe6da('0xe'));var Redis=require('ioredis');var authService=require(_0xe6da('0xf'));var qs=require(_0xe6da('0x10'));var as=require(_0xe6da('0x11'));var hardwareService=require(_0xe6da('0x12'));var logger=require(_0xe6da('0x13'))(_0xe6da('0x14'));var utils=require(_0xe6da('0x15'));var config=require(_0xe6da('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe6da('0x17'))['db'];var extensions=require(_0xe6da('0x18'));function respondWithStatusCode(_0xe30c98,_0x57d57c){_0x57d57c=_0x57d57c||0xcc;return function(_0x275e6f){if(_0x275e6f){return _0xe30c98[_0xe6da('0x19')](_0x57d57c);}return _0xe30c98[_0xe6da('0x1a')](_0x57d57c)[_0xe6da('0x1b')]();};}function respondWithResult(_0x3cac77,_0x1b28f9){_0x1b28f9=_0x1b28f9||0xc8;return function(_0x5153c8){if(_0x5153c8){return _0x3cac77[_0xe6da('0x1a')](_0x1b28f9)[_0xe6da('0x1c')](_0x5153c8);}};}function respondWithFilteredResult(_0x14acd7,_0x1fa275){return function(_0x22fabf){if(_0x22fabf){var _0x21d587=typeof _0x1fa275[_0xe6da('0x1d')]===_0xe6da('0x1e')&&typeof _0x1fa275[_0xe6da('0x1f')]===_0xe6da('0x1e');var _0x530d2f=_0x22fabf['count'];var _0x2a854b=_0x21d587?0x0:_0x1fa275[_0xe6da('0x1d')];var _0x2568bc=_0x21d587?_0x22fabf[_0xe6da('0x20')]:_0x1fa275[_0xe6da('0x1d')]+_0x1fa275[_0xe6da('0x1f')];var _0x51dcb7;if(_0x2568bc>=_0x530d2f){_0x2568bc=_0x530d2f;_0x51dcb7=0xc8;}else{_0x51dcb7=0xce;}_0x14acd7[_0xe6da('0x1a')](_0x51dcb7);return _0x14acd7['set'](_0xe6da('0x21'),_0x2a854b+'-'+_0x2568bc+'/'+_0x530d2f)['json'](_0x22fabf);}return null;};}function patchUpdates(_0x451b35){return function(_0x5b80d6){try{jsonpatch[_0xe6da('0x22')](_0x5b80d6,_0x451b35,!![]);}catch(_0x1f5b46){return BPromise['reject'](_0x1f5b46);}return _0x5b80d6[_0xe6da('0x23')]();};}function saveUpdates(_0x432068,_0x58c290){return function(_0x6d7dec){if(_0x6d7dec){return _0x6d7dec[_0xe6da('0x24')](_0x432068)['then'](function(_0x341c23){return _0x341c23;});}return null;};}function removeEntity(_0x2bdcf4,_0x56ee2c){return function(_0xe9519f){if(_0xe9519f){return _0xe9519f['destroy']()[_0xe6da('0x25')](function(){var _0x1fe1b7=_0xe9519f[_0xe6da('0x26')]({'plain':!![]});var _0x56a616=_0xe6da('0x27');return db[_0xe6da('0x28')][_0xe6da('0x29')]({'where':{'type':_0x56a616,'resourceId':_0x1fe1b7['id']}})[_0xe6da('0x25')](function(){return _0xe9519f;});})[_0xe6da('0x25')](function(){_0x2bdcf4[_0xe6da('0x1a')](0xcc)[_0xe6da('0x1b')]();});}};}function handleEntityNotFound(_0x2ddb38,_0x349722){return function(_0x4be111){if(!_0x4be111){_0x2ddb38[_0xe6da('0x19')](0x194);}return _0x4be111;};}function handleError(_0x2cb863,_0x3487db){_0x3487db=_0x3487db||0x1f4;return function(_0x80377a){logger[_0xe6da('0x2a')](_0x80377a[_0xe6da('0x2b')]);if(_0x80377a[_0xe6da('0x2c')]){delete _0x80377a[_0xe6da('0x2c')];}_0x2cb863[_0xe6da('0x1a')](_0x3487db)['send'](_0x80377a);};}exports[_0xe6da('0x2d')]=function(_0x45f0ff,_0x2cd8e5){var _0x222a83={},_0x545a87={},_0x4b99e7={'count':0x0,'rows':[]};var _0x5b4364=_[_0xe6da('0x2e')](db[_0xe6da('0x2f')][_0xe6da('0x30')],function(_0x270029){return{'name':_0x270029[_0xe6da('0x31')],'type':_0x270029[_0xe6da('0x32')][_0xe6da('0x33')]};});_0x545a87[_0xe6da('0x34')]=_[_0xe6da('0x2e')](_0x5b4364,_0xe6da('0x2c'));_0x545a87[_0xe6da('0x35')]=_[_0xe6da('0x36')](_0x45f0ff[_0xe6da('0x35')]);_0x545a87['filters']=_[_0xe6da('0x37')](_0x545a87[_0xe6da('0x34')],_0x545a87[_0xe6da('0x35')]);_0x222a83[_0xe6da('0x38')]=_[_0xe6da('0x37')](_0x545a87[_0xe6da('0x34')],qs['fields'](_0x45f0ff['query'][_0xe6da('0x39')]));_0x222a83[_0xe6da('0x38')]=_0x222a83[_0xe6da('0x38')][_0xe6da('0x3a')]?_0x222a83[_0xe6da('0x38')]:_0x545a87[_0xe6da('0x34')];if(!_0x45f0ff['query'][_0xe6da('0x3b')](_0xe6da('0x3c'))){_0x222a83[_0xe6da('0x1f')]=qs['limit'](_0x45f0ff['query'][_0xe6da('0x1f')]);_0x222a83[_0xe6da('0x1d')]=qs[_0xe6da('0x1d')](_0x45f0ff[_0xe6da('0x35')][_0xe6da('0x1d')]);}_0x222a83[_0xe6da('0x3d')]=qs['sort'](_0x45f0ff['query']['sort']);_0x222a83[_0xe6da('0x3e')]=qs['filters'](_[_0xe6da('0x3f')](_0x45f0ff[_0xe6da('0x35')],_0x545a87[_0xe6da('0x40')]),_0x5b4364);if(_0x45f0ff[_0xe6da('0x35')][_0xe6da('0x41')]){_0x222a83[_0xe6da('0x3e')]=_[_0xe6da('0x42')](_0x222a83[_0xe6da('0x3e')],{'$or':_[_0xe6da('0x2e')](_0x5b4364,function(_0x29aebc){if(_0x29aebc['type']!==_0xe6da('0x43')){var _0xe722ca={};_0xe722ca[_0x29aebc[_0xe6da('0x2c')]]={'$like':'%'+_0x45f0ff[_0xe6da('0x35')][_0xe6da('0x41')]+'%'};return _0xe722ca;}})});}_0x222a83=_[_0xe6da('0x42')]({},_0x222a83,_0x45f0ff[_0xe6da('0x44')]);var _0x52d9e1={'where':_0x222a83[_0xe6da('0x3e')]};return db[_0xe6da('0x2f')][_0xe6da('0x20')](_0x52d9e1)[_0xe6da('0x25')](function(_0x1168da){_0x4b99e7['count']=_0x1168da;if(_0x45f0ff[_0xe6da('0x35')]['includeAll']){_0x222a83[_0xe6da('0x45')]=[{'all':!![]}];}return db[_0xe6da('0x2f')][_0xe6da('0x46')](_0x222a83);})['then'](function(_0x43e9ff){_0x4b99e7[_0xe6da('0x47')]=_0x43e9ff;return _0x4b99e7;})['then'](respondWithFilteredResult(_0x2cd8e5,_0x222a83))[_0xe6da('0x48')](handleError(_0x2cd8e5,null));};exports[_0xe6da('0x49')]=function(_0x536f70,_0x26f708){var _0xa7e331={'raw':!![],'where':{'id':_0x536f70[_0xe6da('0x4a')]['id']}},_0x3d3cc7={};_0x3d3cc7[_0xe6da('0x34')]=_[_0xe6da('0x36')](db[_0xe6da('0x2f')][_0xe6da('0x30')]);_0x3d3cc7[_0xe6da('0x35')]=_[_0xe6da('0x36')](_0x536f70[_0xe6da('0x35')]);_0x3d3cc7[_0xe6da('0x40')]=_[_0xe6da('0x37')](_0x3d3cc7[_0xe6da('0x34')],_0x3d3cc7['query']);_0xa7e331['attributes']=_[_0xe6da('0x37')](_0x3d3cc7[_0xe6da('0x34')],qs['fields'](_0x536f70[_0xe6da('0x35')]['fields']));_0xa7e331[_0xe6da('0x38')]=_0xa7e331[_0xe6da('0x38')]['length']?_0xa7e331[_0xe6da('0x38')]:_0x3d3cc7[_0xe6da('0x34')];if(_0x536f70['query']['includeAll']){_0xa7e331[_0xe6da('0x45')]=[{'all':!![]}];}_0xa7e331=_[_0xe6da('0x42')]({},_0xa7e331,_0x536f70[_0xe6da('0x44')]);return db[_0xe6da('0x2f')][_0xe6da('0x4b')](_0xa7e331)[_0xe6da('0x25')](handleEntityNotFound(_0x26f708,null))[_0xe6da('0x25')](respondWithResult(_0x26f708,null))[_0xe6da('0x48')](handleError(_0x26f708,null));};exports['create']=function(_0x518beb,_0x241057){return db[_0xe6da('0x2f')][_0xe6da('0x4c')](_0x518beb['body'],{})[_0xe6da('0x25')](function(_0x45b297){var _0x508bc4=_0x518beb[_0xe6da('0x4d')][_0xe6da('0x26')]({'plain':!![]});if(!_0x508bc4)throw new Error(_0xe6da('0x4e'));if(_0x508bc4['role']===_0xe6da('0x4d')){var _0x3a48b8=_0x45b297[_0xe6da('0x26')]({'plain':!![]});var _0x45be43=_0xe6da('0x27');return db[_0xe6da('0x4f')][_0xe6da('0x4b')]({'where':{'name':_0x45be43,'userProfileId':_0x508bc4['userProfileId']},'raw':!![]})[_0xe6da('0x25')](function(_0x33b5f3){if(_0x33b5f3&&_0x33b5f3[_0xe6da('0x50')]===0x0){return db[_0xe6da('0x28')][_0xe6da('0x4c')]({'name':_0x3a48b8['name'],'resourceId':_0x3a48b8['id'],'type':_0x33b5f3[_0xe6da('0x2c')],'sectionId':_0x33b5f3['id']},{})['then'](function(){return _0x45b297;});}else{return _0x45b297;}})[_0xe6da('0x48')](function(_0x2e9563){logger[_0xe6da('0x2a')](_0xe6da('0x51'),_0x2e9563);throw _0x2e9563;});}return _0x45b297;})[_0xe6da('0x25')](respondWithResult(_0x241057,0xc9))['catch'](handleError(_0x241057,null));};exports[_0xe6da('0x24')]=function(_0x3f86da,_0xccfa5d){if(_0x3f86da[_0xe6da('0x52')]['id']){delete _0x3f86da[_0xe6da('0x52')]['id'];}return db['Interval'][_0xe6da('0x4b')]({'where':{'id':_0x3f86da[_0xe6da('0x4a')]['id']}})[_0xe6da('0x25')](handleEntityNotFound(_0xccfa5d,null))[_0xe6da('0x25')](saveUpdates(_0x3f86da['body'],null))[_0xe6da('0x25')](respondWithResult(_0xccfa5d,null))[_0xe6da('0x48')](handleError(_0xccfa5d,null));};exports[_0xe6da('0x29')]=function(_0x37f55b,_0x3fb366){return db[_0xe6da('0x2f')]['find']({'where':{'id':_0x37f55b['params']['id']}})[_0xe6da('0x25')](handleEntityNotFound(_0x3fb366,null))[_0xe6da('0x25')](removeEntity(_0x3fb366,null))['catch'](handleError(_0x3fb366,null));};exports[_0xe6da('0x53')]=function(_0x1158cd,_0x33df6c,_0x5a4596){if(_0x1158cd['body']['id']){delete _0x1158cd[_0xe6da('0x52')]['id'];}return db[_0xe6da('0x2f')][_0xe6da('0x4b')]({'where':{'id':_0x1158cd[_0xe6da('0x4a')]['id']}})[_0xe6da('0x25')](handleEntityNotFound(_0x33df6c,null))[_0xe6da('0x25')](function(_0x1b5b5e){if(_0x1b5b5e){_0x1158cd['body'][_0xe6da('0x54')]=_0x1b5b5e['id'];return db['Interval'][_0xe6da('0x4c')](_0x1158cd['body']);}})['then'](respondWithResult(_0x33df6c,null))[_0xe6da('0x48')](handleError(_0x33df6c,null));};exports[_0xe6da('0x55')]=function(_0x4816ad,_0x1f3655,_0x2e135f){var _0xc6844a={};var _0x372e96={};var _0x366f4d;var _0x27eb03;return db[_0xe6da('0x2f')]['findOne']({'where':{'id':_0x4816ad[_0xe6da('0x4a')]['id']}})[_0xe6da('0x25')](handleEntityNotFound(_0x1f3655,null))[_0xe6da('0x25')](function(_0xb36591){if(_0xb36591){_0x366f4d=_0xb36591;_0x372e96[_0xe6da('0x34')]=_[_0xe6da('0x36')](db[_0xe6da('0x2f')][_0xe6da('0x30')]);_0x372e96[_0xe6da('0x35')]=_['keys'](_0x4816ad[_0xe6da('0x35')]);_0x372e96[_0xe6da('0x40')]=_['intersection'](_0x372e96[_0xe6da('0x34')],_0x372e96['query']);_0xc6844a[_0xe6da('0x38')]=_[_0xe6da('0x37')](_0x372e96['model'],qs[_0xe6da('0x39')](_0x4816ad['query'][_0xe6da('0x39')]));_0xc6844a[_0xe6da('0x38')]=_0xc6844a['attributes'][_0xe6da('0x3a')]?_0xc6844a[_0xe6da('0x38')]:_0x372e96[_0xe6da('0x34')];_0xc6844a[_0xe6da('0x3d')]=qs[_0xe6da('0x56')](_0x4816ad[_0xe6da('0x35')][_0xe6da('0x56')]);_0xc6844a[_0xe6da('0x3e')]=qs['filters'](_[_0xe6da('0x3f')](_0x4816ad[_0xe6da('0x35')],_0x372e96[_0xe6da('0x40')]));if(_0x4816ad['query'][_0xe6da('0x41')]){_0xc6844a[_0xe6da('0x3e')]=_['merge'](_0xc6844a[_0xe6da('0x3e')],{'$or':_[_0xe6da('0x2e')](_0xc6844a['attributes'],function(_0x565798){var _0x3fa04d={};_0x3fa04d[_0x565798]={'$like':'%'+_0x4816ad[_0xe6da('0x35')][_0xe6da('0x41')]+'%'};return _0x3fa04d;})});}_0xc6844a=_[_0xe6da('0x42')]({},_0xc6844a,_0x4816ad[_0xe6da('0x44')]);return _0x366f4d[_0xe6da('0x55')](_0xc6844a);}})['then'](function(_0x304969){if(_0x304969){_0x27eb03=_0x304969[_0xe6da('0x3a')];if(!_0x4816ad[_0xe6da('0x35')][_0xe6da('0x3b')](_0xe6da('0x3c'))){_0xc6844a['limit']=qs[_0xe6da('0x1f')](_0x4816ad['query'][_0xe6da('0x1f')]);_0xc6844a[_0xe6da('0x1d')]=qs['offset'](_0x4816ad['query'][_0xe6da('0x1d')]);}return _0x366f4d[_0xe6da('0x55')](_0xc6844a);}})[_0xe6da('0x25')](function(_0x12d3b5){if(_0x12d3b5){return _0x12d3b5?{'count':_0x27eb03,'rows':_0x12d3b5}:null;}})[_0xe6da('0x25')](respondWithResult(_0x1f3655,null))[_0xe6da('0x48')](handleError(_0x1f3655,null));};exports[_0xe6da('0x57')]=function(_0x36831a,_0x1f1b8d,_0x551b01){return db[_0xe6da('0x2f')][_0xe6da('0x58')]({'where':{'id':_0x36831a[_0xe6da('0x4a')]['id']}})[_0xe6da('0x25')](handleEntityNotFound(_0x1f1b8d,null))['then'](function(_0x1704ec){if(_0x1704ec){return db[_0xe6da('0x59')]['transaction'](function(_0x569a04){return db[_0xe6da('0x2f')]['destroy']({'where':{'IntervalId':_0x36831a['params']['id']},'transaction':_0x569a04})[_0xe6da('0x25')](function(_0x1355cc){var _0x504754=_[_0xe6da('0x2e')](_0x36831a[_0xe6da('0x52')],function(_0x9bbfe7){delete _0x9bbfe7['id'];_0x9bbfe7[_0xe6da('0x54')]=_0x36831a[_0xe6da('0x4a')]['id'];return _0x9bbfe7;});return db[_0xe6da('0x2f')][_0xe6da('0x5a')](_0x504754,{'transaction':_0x569a04});});})[_0xe6da('0x25')](function(){return db['Interval'][_0xe6da('0x46')]({'where':{'IntervalId':_0x36831a[_0xe6da('0x4a')]['id']}});});}})[_0xe6da('0x25')](respondWithResult(_0x1f1b8d,null))[_0xe6da('0x48')](handleError(_0x1f1b8d,null));};
\ No newline at end of file
index 6b1d8ee..793e60d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['bluebird','request-promise','path','rimraf','./interval.attributes','../../components/extensions/rewrite','define','Interval','tools_intervals','rewrite','../../config/logger','api','moment'];(function(_0x515283,_0x813dea){var _0x38f836=function(_0x40c8f4){while(--_0x40c8f4){_0x515283['push'](_0x515283['shift']());}};_0x38f836(++_0x813dea);}(_0xacf4,0xe7));var _0x4acf=function(_0x4163fd,_0x1da4ce){_0x4163fd=_0x4163fd-0x0;var _0xbc0548=_0xacf4[_0x4163fd];return _0xbc0548;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4acf('0x0'))(_0x4acf('0x1'));var moment=require(_0x4acf('0x2'));var BPromise=require(_0x4acf('0x3'));var rp=require(_0x4acf('0x4'));var fs=require('fs');var path=require(_0x4acf('0x5'));var rimraf=require(_0x4acf('0x6'));var config=require('../../config/environment');var attributes=require(_0x4acf('0x7'));var extensions=require(_0x4acf('0x8'));module['exports']=function(_0x24bf24,_0x2ba08a){return _0x24bf24[_0x4acf('0x9')](_0x4acf('0xa'),attributes,{'tableName':_0x4acf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x50f5f4,_0x55f61d){extensions[_0x4acf('0xc')](_0x24bf24,_0x50f5f4);},'afterBulkCreate':function(_0x59f559,_0x425c8d,_0x2c2cb4){_0x2c2cb4();extensions[_0x4acf('0xc')](_0x24bf24,_0x59f559[0x0]);},'afterUpdate':function(_0x4ff233,_0x290ca7){extensions[_0x4acf('0xc')](_0x24bf24,_0x4ff233);},'afterDestroy':function(_0x5b0b12,_0x5f22d9){extensions[_0x4acf('0xc')](_0x24bf24,_0x5b0b12);}}});};
\ No newline at end of file
+var _0xa199=['api','request-promise','rimraf','../../config/environment','../../components/extensions/rewrite','exports','rewrite','lodash','../../config/logger'];(function(_0x1be853,_0x26a527){var _0x572072=function(_0x4eb8c5){while(--_0x4eb8c5){_0x1be853['push'](_0x1be853['shift']());}};_0x572072(++_0x26a527);}(_0xa199,0xfa));var _0x9a19=function(_0x3130d5,_0x2b518a){_0x3130d5=_0x3130d5-0x0;var _0x4d5df1=_0xa199[_0x3130d5];return _0x4d5df1;};'use strict';var _=require(_0x9a19('0x0'));var util=require('util');var logger=require(_0x9a19('0x1'))(_0x9a19('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9a19('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9a19('0x4'));var config=require(_0x9a19('0x5'));var attributes=require('./interval.attributes');var extensions=require(_0x9a19('0x6'));module[_0x9a19('0x7')]=function(_0x5d16b7,_0x287976){return _0x5d16b7['define']('Interval',attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2ccf29,_0x2ca822){extensions[_0x9a19('0x8')](_0x5d16b7,_0x2ccf29);},'afterBulkCreate':function(_0x36993a,_0x2dd0cf,_0x226887){_0x226887();extensions[_0x9a19('0x8')](_0x5d16b7,_0x36993a[0x0]);},'afterUpdate':function(_0x357c98,_0x2f8100){extensions[_0x9a19('0x8')](_0x5d16b7,_0x357c98);},'afterDestroy':function(_0x471a58,_0x25bf2b){extensions[_0x9a19('0x8')](_0x5d16b7,_0x471a58);}}});};
\ No newline at end of file
index c7ebe9c..1f081da 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(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var 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(_0x3b3210,_0x25e8ed){var _0x5b5484=function(_0x417858){while(--_0x417858){_0x3b3210['push'](_0x3b3210['shift']());}};_0x5b5484(++_0x25e8ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'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 9e0a22f..efb57db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['./jira.controller','post','send','exports','express','../../components/auth/service'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xb10b,0x12a));var _0xbb10=function(_0x2a99ea,_0x1bfb13){_0x2a99ea=_0x2a99ea-0x0;var _0x5887ae=_0xb10b[_0x2a99ea];return _0x5887ae;};'use strict';var express=require(_0xbb10('0x0'));var router=express['Router']();var auth=require(_0xbb10('0x1'));var controller=require(_0xbb10('0x2'));router[_0xbb10('0x3')]('/',auth['isAuthenticated'](),controller[_0xbb10('0x4')]);module[_0xbb10('0x5')]=router;
\ No newline at end of file
+var _0x5f2f=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller','post'];(function(_0x206502,_0x55e258){var _0x2d62c8=function(_0xdf645){while(--_0xdf645){_0x206502['push'](_0x206502['shift']());}};_0x2d62c8(++_0x55e258);}(_0x5f2f,0x73));var _0xf5f2=function(_0xe6113b,_0x105e0e){_0xe6113b=_0xe6113b-0x0;var _0x251eed=_0x5f2f[_0xe6113b];return _0x251eed;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);module[_0xf5f2('0x7')]=router;
\ No newline at end of file
index 7faf771..536b425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea8e=['/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','data','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','summary','Report','description','stringify','issuetype','Bug','fields','oldToken','customfield_11502','customfield_11503','customfield_11504','reason','customfield_10102'];(function(_0xd509f5,_0x4f9890){var _0x375750=function(_0x1bf1ac){while(--_0x1bf1ac){_0xd509f5['push'](_0xd509f5['shift']());}};_0x375750(++_0x4f9890);}(_0xea8e,0x1f1));var _0xeea8=function(_0x6afa2d,_0x8c0e0f){_0x6afa2d=_0x6afa2d-0x0;var _0x1698ee=_0xea8e[_0x6afa2d];return _0x1698ee;};'use strict';var BPromise=require(_0xeea8('0x0'));var https=require(_0xeea8('0x1'));var logger=require(_0xeea8('0x2'))(_0xeea8('0x3'));var USERNAME=_0xeea8('0x4');var PASSWORD=_0xeea8('0x5');function openIssue(_0x51808c,_0x46220b){var _0x49745f={'fields':{'project':{'key':_0x51808c['key']||'MOTGUI'},'summary':(_0x51808c[_0xeea8('0x6')]||_0xeea8('0x7'))+'\x20from\x20'+_0x51808c['ip'],'description':_0x51808c[_0xeea8('0x8')]||JSON[_0xeea8('0x9')](_0x51808c),'issuetype':{'name':_0x51808c[_0xeea8('0xa')]||_0xeea8('0xb')}}};_0x49745f[_0xeea8('0xc')]['customfield_11500']=_0x51808c['email'];_0x49745f[_0xeea8('0xc')]['customfield_11501']=_0x51808c[_0xeea8('0xd')];_0x49745f[_0xeea8('0xc')][_0xeea8('0xe')]=_0x51808c['newToken'];_0x49745f[_0xeea8('0xc')][_0xeea8('0xf')]=_0x51808c['name'];_0x49745f[_0xeea8('0xc')][_0xeea8('0x10')]=_0x51808c[_0xeea8('0x11')];_0x49745f['fields'][_0xeea8('0x12')]=_0x51808c['ip'];var _0x527b63={'host':'track.xcallymotion.com','port':0x1bb,'path':_0xeea8('0x13'),'method':_0xeea8('0x14'),'timeout':0x4e20,'headers':{'Content-Type':_0xeea8('0x15'),'Authorization':_0xeea8('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0xeea8('0x17')](_0xeea8('0x18'))}};var _0x8a7c25=JSON[_0xeea8('0x9')](_0x49745f);var _0x5dde6f=https[_0xeea8('0x19')](_0x527b63,function(_0x3c7597){_0x3c7597['setEncoding']('utf8');var _0x3132ab='';_0x3c7597['on'](_0xeea8('0x1a'),function(_0x2ae58f){_0x3132ab+=_0x2ae58f;});_0x3c7597['on'](_0xeea8('0x1b'),function(){if(_0x46220b){return _0x46220b[_0xeea8('0x1c')](_0x3c7597[_0xeea8('0x1d')])[_0xeea8('0x1e')](JSON[_0xeea8('0x1f')](_0x3132ab));}});});_0x5dde6f['on'](_0xeea8('0x20'),function(_0x190779){if(_0x46220b){return _0x46220b[_0xeea8('0x1c')](0x1f4)[_0xeea8('0x1e')]({'errors':[{'message':_0xeea8('0x21'),'type':_0xeea8('0x22')}]});}});_0x5dde6f['write'](_0x8a7c25);_0x5dde6f[_0xeea8('0x1b')]();}exports[_0xeea8('0x23')]=openIssue;exports[_0xeea8('0x24')]=function(_0xb293e,_0x46af97){_0xb293e[_0xeea8('0x25')]['ip']=_0xb293e[_0xeea8('0x26')][_0xeea8('0x27')]||_0xb293e[_0xeea8('0x28')][_0xeea8('0x29')]||_0xb293e[_0xeea8('0x2a')][_0xeea8('0x29')]||_0xb293e[_0xeea8('0x28')][_0xeea8('0x2a')][_0xeea8('0x29')];return openIssue(_0xb293e[_0xeea8('0x25')],_0x46af97);};
\ No newline at end of file
+var _0x9dc7=['write','openIssue','body','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','description','stringify','issuetype','Bug','customfield_11500','email','customfield_11501','oldToken','fields','customfield_11502','newToken','customfield_11503','name','reason','customfield_10102','POST','application/json','toString','request','setEncoding','utf8','data','end','status','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9dc7,0xbb));var _0x79dc=function(_0x106586,_0x1ef8fe){_0x106586=_0x106586-0x0;var _0x4ae99e=_0x9dc7[_0x106586];return _0x4ae99e;};'use strict';var BPromise=require(_0x79dc('0x0'));var https=require(_0x79dc('0x1'));var logger=require(_0x79dc('0x2'))(_0x79dc('0x3'));var USERNAME=_0x79dc('0x4');var PASSWORD=_0x79dc('0x5');function openIssue(_0x51937a,_0x4b7688){var _0x2c231a={'fields':{'project':{'key':_0x51937a[_0x79dc('0x6')]||_0x79dc('0x7')},'summary':(_0x51937a[_0x79dc('0x8')]||'Report')+'\x20from\x20'+_0x51937a['ip'],'description':_0x51937a[_0x79dc('0x9')]||JSON[_0x79dc('0xa')](_0x51937a),'issuetype':{'name':_0x51937a[_0x79dc('0xb')]||_0x79dc('0xc')}}};_0x2c231a['fields'][_0x79dc('0xd')]=_0x51937a[_0x79dc('0xe')];_0x2c231a['fields'][_0x79dc('0xf')]=_0x51937a[_0x79dc('0x10')];_0x2c231a[_0x79dc('0x11')][_0x79dc('0x12')]=_0x51937a[_0x79dc('0x13')];_0x2c231a[_0x79dc('0x11')][_0x79dc('0x14')]=_0x51937a[_0x79dc('0x15')];_0x2c231a[_0x79dc('0x11')]['customfield_11504']=_0x51937a[_0x79dc('0x16')];_0x2c231a['fields'][_0x79dc('0x17')]=_0x51937a['ip'];var _0x4ec937={'host':'track.xcallymotion.com','port':0x1bb,'path':'/rest/api/2/issue','method':_0x79dc('0x18'),'timeout':0x4e20,'headers':{'Content-Type':_0x79dc('0x19'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x79dc('0x1a')]('base64')}};var _0x2015b2=JSON[_0x79dc('0xa')](_0x2c231a);var _0x4b7e9b=https[_0x79dc('0x1b')](_0x4ec937,function(_0x188821){_0x188821[_0x79dc('0x1c')](_0x79dc('0x1d'));var _0x2937ff='';_0x188821['on'](_0x79dc('0x1e'),function(_0xcdc598){_0x2937ff+=_0xcdc598;});_0x188821['on'](_0x79dc('0x1f'),function(){if(_0x4b7688){return _0x4b7688[_0x79dc('0x20')](_0x188821['statusCode'])[_0x79dc('0x21')](JSON[_0x79dc('0x22')](_0x2937ff));}});});_0x4b7e9b['on'](_0x79dc('0x23'),function(_0xd5064d){if(_0x4b7688){return _0x4b7688['status'](0x1f4)[_0x79dc('0x21')]({'errors':[{'message':_0x79dc('0x24'),'type':_0x79dc('0x25')}]});}});_0x4b7e9b[_0x79dc('0x26')](_0x2015b2);_0x4b7e9b['end']();}exports[_0x79dc('0x27')]=openIssue;exports['send']=function(_0x409358,_0x2d77df){_0x409358[_0x79dc('0x28')]['ip']=_0x409358['headers'][_0x79dc('0x29')]||_0x409358[_0x79dc('0x2a')][_0x79dc('0x2b')]||_0x409358[_0x79dc('0x2c')][_0x79dc('0x2b')]||_0x409358['connection'][_0x79dc('0x2c')][_0x79dc('0x2b')];return openIssue(_0x409358[_0x79dc('0x28')],_0x2d77df);};
\ No newline at end of file
index b44e6e7..3430975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','destroy','exports'];(function(_0x22cbc6,_0x5abbd5){var _0x1889ac=function(_0x4b9c14){while(--_0x4b9c14){_0x22cbc6['push'](_0x22cbc6['shift']());}};_0x1889ac(++_0x5abbd5);}(_0xedd9,0xfc));var _0x9edd=function(_0x188857,_0x13bdc4){_0x188857=_0x188857-0x0;var _0x3957f1=_0xedd9[_0x188857];return _0x3957f1;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['show']);router[_0x9edd('0xf')]('/',auth['isAuthenticated'](),controller[_0x9edd('0x10')]);router[_0x9edd('0x11')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router['delete'](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x13')]);module[_0x9edd('0x14')]=router;
\ No newline at end of file
+var _0xb4e6=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x786db4,_0x276f24){var _0x4a6a73=function(_0x3fcb98){while(--_0x3fcb98){_0x786db4['push'](_0x786db4['shift']());}};_0x4a6a73(++_0x276f24);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x16a637,_0x5eb627){_0x16a637=_0x16a637-0x0;var _0x25126d=_0xb4e6[_0x16a637];return _0x25126d;};'use strict';var multer=require(_0x6b4e('0x0'));var util=require('util');var path=require(_0x6b4e('0x1'));var timeout=require(_0x6b4e('0x2'));var express=require(_0x6b4e('0x3'));var router=express[_0x6b4e('0x4')]();var fs_extra=require(_0x6b4e('0x5'));var auth=require(_0x6b4e('0x6'));var interaction=require(_0x6b4e('0x7'));var config=require('../../config/environment');var controller=require(_0x6b4e('0x8'));router[_0x6b4e('0x9')]('/',auth[_0x6b4e('0xa')](),controller['index']);router[_0x6b4e('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x6b4e('0xb')]);router['get']('/:id',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xc')]);router[_0x6b4e('0xd')]('/',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xe')]);router[_0x6b4e('0xf')](_0x6b4e('0x10'),auth['isAuthenticated'](),controller[_0x6b4e('0x11')]);router[_0x6b4e('0x12')]('/:id',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x13')]);module[_0x6b4e('0x14')]=router;
\ No newline at end of file
index 7bcb855..90af0e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x7a54,0x106));var _0x47a5=function(_0xab14c2,_0x467f82){_0xab14c2=_0xab14c2-0x0;var _0x366beb=_0x7a54[_0xab14c2];return _0x366beb;};'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(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x7a54,0x106));var _0x47a5=function(_0x530efe,_0x29bea7){_0x530efe=_0x530efe-0x0;var _0x10cc27=_0x7a54[_0x530efe];return _0x10cc27;};'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 ae535b3..fa841a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975b=['ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','length','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv'];(function(_0x3280c0,_0x30e33e){var _0x3d91c3=function(_0x9b64ee){while(--_0x9b64ee){_0x3280c0['push'](_0x3280c0['shift']());}};_0x3d91c3(++_0x30e33e);}(_0x975b,0x1c9));var _0xb975=function(_0x76a9ba,_0x8732c4){_0x76a9ba=_0x76a9ba-0x0;var _0x53704c=_0x975b[_0x76a9ba];return _0x53704c;};'use strict';var emlformat=require(_0xb975('0x0'));var rimraf=require(_0xb975('0x1'));var zipdir=require(_0xb975('0x2'));var jsonpatch=require(_0xb975('0x3'));var rp=require(_0xb975('0x4'));var moment=require(_0xb975('0x5'));var BPromise=require(_0xb975('0x6'));var Mustache=require('mustache');var util=require(_0xb975('0x7'));var path=require(_0xb975('0x8'));var sox=require(_0xb975('0x9'));var csv=require(_0xb975('0xa'));var ejs=require(_0xb975('0xb'));var fs=require('fs');var fs_extra=require(_0xb975('0xc'));var _=require(_0xb975('0xd'));var squel=require('squel');var crypto=require(_0xb975('0xe'));var jsforce=require(_0xb975('0xf'));var deskjs=require(_0xb975('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb975('0x11'));var Papa=require(_0xb975('0x12'));var Redis=require(_0xb975('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xb975('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb975('0x15'));var logger=require('../../config/logger')(_0xb975('0x16'));var utils=require('../../config/utils');var config=require(_0xb975('0x17'));var licenseUtil=require(_0xb975('0x18'));var db=require(_0xb975('0x19'))['db'];function respondWithStatusCode(_0x1c4b77,_0x13ca28){_0x13ca28=_0x13ca28||0xcc;return function(_0x558727){if(_0x558727){return _0x1c4b77[_0xb975('0x1a')](_0x13ca28);}return _0x1c4b77[_0xb975('0x1b')](_0x13ca28)[_0xb975('0x1c')]();};}function respondWithResult(_0x24919e,_0x5cea50){_0x5cea50=_0x5cea50||0xc8;return function(_0x470ead){if(_0x470ead){return _0x24919e[_0xb975('0x1b')](_0x5cea50)[_0xb975('0x1d')](_0x470ead);}};}function respondWithFilteredResult(_0x4b1ede,_0x24f8ec){return function(_0x3da9e9){if(_0x3da9e9){var _0x36d959=typeof _0x24f8ec['offset']===_0xb975('0x1e')&&typeof _0x24f8ec['limit']===_0xb975('0x1e');var _0x34e062=_0x3da9e9[_0xb975('0x1f')];var _0x347a04=_0x36d959?0x0:_0x24f8ec[_0xb975('0x20')];var _0x327728=_0x36d959?_0x3da9e9[_0xb975('0x1f')]:_0x24f8ec['offset']+_0x24f8ec['limit'];var _0x2abb84;if(_0x327728>=_0x34e062){_0x327728=_0x34e062;_0x2abb84=0xc8;}else{_0x2abb84=0xce;}_0x4b1ede[_0xb975('0x1b')](_0x2abb84);return _0x4b1ede[_0xb975('0x21')](_0xb975('0x22'),_0x347a04+'-'+_0x327728+'/'+_0x34e062)['json'](_0x3da9e9);}return null;};}function patchUpdates(_0x39af85){return function(_0x49adfa){try{jsonpatch[_0xb975('0x23')](_0x49adfa,_0x39af85,!![]);}catch(_0x3f0876){return BPromise[_0xb975('0x24')](_0x3f0876);}return _0x49adfa['save']();};}function saveUpdates(_0xe7a5f0,_0x493c0b){return function(_0x5d1312){if(_0x5d1312){return _0x5d1312[_0xb975('0x25')](_0xe7a5f0)[_0xb975('0x26')](function(_0x226f21){return _0x226f21;});}return null;};}function removeEntity(_0xa4d4c,_0x35dcc6){return function(_0x5620fc){if(_0x5620fc){return _0x5620fc[_0xb975('0x27')]()['then'](function(){_0xa4d4c[_0xb975('0x1b')](0xcc)[_0xb975('0x1c')]();});}};}function handleEntityNotFound(_0xc0d861,_0x263f73){return function(_0x5309c6){if(!_0x5309c6){_0xc0d861[_0xb975('0x1a')](0x194);}return _0x5309c6;};}function handleError(_0x2824bf,_0x41905e){_0x41905e=_0x41905e||0x1f4;return function(_0xed596){logger['error'](_0xed596[_0xb975('0x28')]);if(_0xed596[_0xb975('0x29')]){delete _0xed596[_0xb975('0x29')];}_0x2824bf[_0xb975('0x1b')](_0x41905e)[_0xb975('0x2a')](_0xed596);};}exports[_0xb975('0x2b')]=function(_0x442bc6,_0x135cc9){var _0x2d730d={},_0x514451={},_0x2b1319={'count':0x0,'rows':[]};var _0x2b3ec2=_[_0xb975('0x2c')](db[_0xb975('0x2d')][_0xb975('0x2e')],function(_0x3bd5cb){return{'name':_0x3bd5cb[_0xb975('0x2f')],'type':_0x3bd5cb[_0xb975('0x30')][_0xb975('0x31')]};});_0x514451[_0xb975('0x32')]=_[_0xb975('0x2c')](_0x2b3ec2,'name');_0x514451[_0xb975('0x33')]=_['keys'](_0x442bc6['query']);_0x514451[_0xb975('0x34')]=_['intersection'](_0x514451[_0xb975('0x32')],_0x514451[_0xb975('0x33')]);_0x2d730d['attributes']=_[_0xb975('0x35')](_0x514451['model'],qs[_0xb975('0x36')](_0x442bc6[_0xb975('0x33')][_0xb975('0x36')]));_0x2d730d[_0xb975('0x37')]=_0x2d730d[_0xb975('0x37')]['length']?_0x2d730d[_0xb975('0x37')]:_0x514451['model'];if(!_0x442bc6['query'][_0xb975('0x38')](_0xb975('0x39'))){_0x2d730d[_0xb975('0x3a')]=qs[_0xb975('0x3a')](_0x442bc6[_0xb975('0x33')][_0xb975('0x3a')]);_0x2d730d[_0xb975('0x20')]=qs[_0xb975('0x20')](_0x442bc6['query'][_0xb975('0x20')]);}_0x2d730d[_0xb975('0x3b')]=qs['sort'](_0x442bc6[_0xb975('0x33')][_0xb975('0x3c')]);_0x2d730d[_0xb975('0x3d')]=qs[_0xb975('0x34')](_[_0xb975('0x3e')](_0x442bc6[_0xb975('0x33')],_0x514451[_0xb975('0x34')]),_0x2b3ec2);if(_0x442bc6['query'][_0xb975('0x3f')]){_0x2d730d['where']=_[_0xb975('0x40')](_0x2d730d[_0xb975('0x3d')],{'$or':_['map'](_0x2b3ec2,function(_0x2341e6){if(_0x2341e6['type']!==_0xb975('0x41')){var _0x378e54={};_0x378e54[_0x2341e6[_0xb975('0x29')]]={'$like':'%'+_0x442bc6[_0xb975('0x33')][_0xb975('0x3f')]+'%'};return _0x378e54;}})});}_0x2d730d=_[_0xb975('0x40')]({},_0x2d730d,_0x442bc6[_0xb975('0x42')]);var _0x2781ab={'where':_0x2d730d['where']};return db[_0xb975('0x2d')][_0xb975('0x1f')](_0x2781ab)[_0xb975('0x26')](function(_0x562e0d){_0x2b1319['count']=_0x562e0d;if(_0x442bc6[_0xb975('0x33')][_0xb975('0x43')]){_0x2d730d[_0xb975('0x44')]=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x2d730d);})[_0xb975('0x26')](function(_0x335011){_0x2b1319[_0xb975('0x45')]=_0x335011;return _0x2b1319;})[_0xb975('0x26')](respondWithFilteredResult(_0x135cc9,_0x2d730d))['catch'](handleError(_0x135cc9,null));};exports[_0xb975('0x46')]=function(_0x17d594,_0xe5c7e7){var _0x160e58={'raw':!![],'where':{'id':_0x17d594[_0xb975('0x47')]['id']}},_0x55f550={};_0x55f550[_0xb975('0x32')]=_['keys'](db['JscriptyAnswerReport'][_0xb975('0x2e')]);_0x55f550['query']=_['keys'](_0x17d594[_0xb975('0x33')]);_0x55f550['filters']=_[_0xb975('0x35')](_0x55f550[_0xb975('0x32')],_0x55f550['query']);_0x160e58[_0xb975('0x37')]=_[_0xb975('0x35')](_0x55f550[_0xb975('0x32')],qs[_0xb975('0x36')](_0x17d594[_0xb975('0x33')]['fields']));_0x160e58[_0xb975('0x37')]=_0x160e58[_0xb975('0x37')][_0xb975('0x48')]?_0x160e58['attributes']:_0x55f550[_0xb975('0x32')];if(_0x17d594[_0xb975('0x33')][_0xb975('0x43')]){_0x160e58['include']=[{'all':!![]}];}_0x160e58=_[_0xb975('0x40')]({},_0x160e58,_0x17d594[_0xb975('0x42')]);return db[_0xb975('0x2d')][_0xb975('0x49')](_0x160e58)['then'](handleEntityNotFound(_0xe5c7e7,null))['then'](respondWithResult(_0xe5c7e7,null))['catch'](handleError(_0xe5c7e7,null));};exports[_0xb975('0x4a')]=function(_0x4483ba,_0x15bc77){return db[_0xb975('0x2d')][_0xb975('0x4a')](_0x4483ba[_0xb975('0x4b')],{})[_0xb975('0x26')](respondWithResult(_0x15bc77,0xc9))[_0xb975('0x4c')](handleError(_0x15bc77,null));};exports[_0xb975('0x25')]=function(_0x466251,_0x1a3268){if(_0x466251['body']['id']){delete _0x466251[_0xb975('0x4b')]['id'];}return db['JscriptyAnswerReport']['find']({'where':{'id':_0x466251['params']['id']}})[_0xb975('0x26')](handleEntityNotFound(_0x1a3268,null))[_0xb975('0x26')](saveUpdates(_0x466251['body'],null))[_0xb975('0x26')](respondWithResult(_0x1a3268,null))[_0xb975('0x4c')](handleError(_0x1a3268,null));};exports[_0xb975('0x27')]=function(_0x22743c,_0x1f9544){return db[_0xb975('0x2d')][_0xb975('0x49')]({'where':{'id':_0x22743c[_0xb975('0x47')]['id']}})[_0xb975('0x26')](handleEntityNotFound(_0x1f9544,null))['then'](removeEntity(_0x1f9544,null))['catch'](handleError(_0x1f9544,null));};exports['describe']=function(_0x3cedf9,_0x1a1f97){return db['JscriptyAnswerReport'][_0xb975('0x4d')]()[_0xb975('0x26')](respondWithResult(_0x1a1f97,null))[_0xb975('0x4c')](handleError(_0x1a1f97,null));};
\ No newline at end of file
+var _0xbfe8=['mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','set','reject','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','pick','filter','where','VIRTUAL','merge','options','includeAll','include','JscriptyAnswerReport','findAll','rows','catch','show','params','find','create','body','destroy','describe','rimraf','fast-json-patch','request-promise'];(function(_0x22b68a,_0x2bffc3){var _0x1ac67a=function(_0x25f9d5){while(--_0x25f9d5){_0x22b68a['push'](_0x22b68a['shift']());}};_0x1ac67a(++_0x2bffc3);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x5d22ed,_0x46b7f8){_0x5d22ed=_0x5d22ed-0x0;var _0x19fdd4=_0xbfe8[_0x5d22ed];return _0x19fdd4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8bfe('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8bfe('0x1'));var rp=require(_0x8bfe('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8bfe('0x3'));var util=require(_0x8bfe('0x4'));var path=require('path');var sox=require(_0x8bfe('0x5'));var csv=require(_0x8bfe('0x6'));var ejs=require(_0x8bfe('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8bfe('0x8'));var squel=require(_0x8bfe('0x9'));var crypto=require(_0x8bfe('0xa'));var jsforce=require(_0x8bfe('0xb'));var deskjs=require(_0x8bfe('0xc'));var toCsv=require(_0x8bfe('0x6'));var querystring=require(_0x8bfe('0xd'));var Papa=require(_0x8bfe('0xe'));var Redis=require(_0x8bfe('0xf'));var authService=require(_0x8bfe('0x10'));var qs=require(_0x8bfe('0x11'));var as=require(_0x8bfe('0x12'));var hardwareService=require(_0x8bfe('0x13'));var logger=require(_0x8bfe('0x14'))(_0x8bfe('0x15'));var utils=require('../../config/utils');var config=require(_0x8bfe('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8bfe('0x17'))['db'];function respondWithStatusCode(_0x2f479d,_0x22a131){_0x22a131=_0x22a131||0xcc;return function(_0x5ba48c){if(_0x5ba48c){return _0x2f479d['sendStatus'](_0x22a131);}return _0x2f479d[_0x8bfe('0x18')](_0x22a131)[_0x8bfe('0x19')]();};}function respondWithResult(_0x22737f,_0x36fd25){_0x36fd25=_0x36fd25||0xc8;return function(_0x46c8e3){if(_0x46c8e3){return _0x22737f['status'](_0x36fd25)[_0x8bfe('0x1a')](_0x46c8e3);}};}function respondWithFilteredResult(_0x5520d7,_0x55914b){return function(_0x778f01){if(_0x778f01){var _0xe57cb1=typeof _0x55914b[_0x8bfe('0x1b')]==='undefined'&&typeof _0x55914b['limit']===_0x8bfe('0x1c');var _0x5019ba=_0x778f01['count'];var _0x2e7c29=_0xe57cb1?0x0:_0x55914b[_0x8bfe('0x1b')];var _0x5d8bf1=_0xe57cb1?_0x778f01[_0x8bfe('0x1d')]:_0x55914b[_0x8bfe('0x1b')]+_0x55914b[_0x8bfe('0x1e')];var _0x3b0837;if(_0x5d8bf1>=_0x5019ba){_0x5d8bf1=_0x5019ba;_0x3b0837=0xc8;}else{_0x3b0837=0xce;}_0x5520d7['status'](_0x3b0837);return _0x5520d7[_0x8bfe('0x1f')]('Content-Range',_0x2e7c29+'-'+_0x5d8bf1+'/'+_0x5019ba)[_0x8bfe('0x1a')](_0x778f01);}return null;};}function patchUpdates(_0x3f8050){return function(_0x3c6e7b){try{jsonpatch['apply'](_0x3c6e7b,_0x3f8050,!![]);}catch(_0x55af8c){return BPromise[_0x8bfe('0x20')](_0x55af8c);}return _0x3c6e7b['save']();};}function saveUpdates(_0x55f5bc,_0xef5e81){return function(_0x5397fb){if(_0x5397fb){return _0x5397fb[_0x8bfe('0x21')](_0x55f5bc)['then'](function(_0x34043a){return _0x34043a;});}return null;};}function removeEntity(_0x19058e,_0x42a93f){return function(_0x260dd9){if(_0x260dd9){return _0x260dd9['destroy']()[_0x8bfe('0x22')](function(){_0x19058e[_0x8bfe('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f73d0,_0x1789f7){return function(_0x46526f){if(!_0x46526f){_0x2f73d0[_0x8bfe('0x23')](0x194);}return _0x46526f;};}function handleError(_0x2dc8d5,_0x91271f){_0x91271f=_0x91271f||0x1f4;return function(_0x4fcb3a){logger[_0x8bfe('0x24')](_0x4fcb3a[_0x8bfe('0x25')]);if(_0x4fcb3a[_0x8bfe('0x26')]){delete _0x4fcb3a[_0x8bfe('0x26')];}_0x2dc8d5[_0x8bfe('0x18')](_0x91271f)[_0x8bfe('0x27')](_0x4fcb3a);};}exports[_0x8bfe('0x28')]=function(_0x2cbfb3,_0x15fccc){var _0x2b47c6={},_0x3c6a3c={},_0x597651={'count':0x0,'rows':[]};var _0xdf4c3f=_[_0x8bfe('0x29')](db['JscriptyAnswerReport'][_0x8bfe('0x2a')],function(_0x2e86ee){return{'name':_0x2e86ee[_0x8bfe('0x2b')],'type':_0x2e86ee['type'][_0x8bfe('0x2c')]};});_0x3c6a3c[_0x8bfe('0x2d')]=_['map'](_0xdf4c3f,'name');_0x3c6a3c[_0x8bfe('0x2e')]=_[_0x8bfe('0x2f')](_0x2cbfb3[_0x8bfe('0x2e')]);_0x3c6a3c[_0x8bfe('0x30')]=_[_0x8bfe('0x31')](_0x3c6a3c[_0x8bfe('0x2d')],_0x3c6a3c[_0x8bfe('0x2e')]);_0x2b47c6[_0x8bfe('0x32')]=_[_0x8bfe('0x31')](_0x3c6a3c[_0x8bfe('0x2d')],qs['fields'](_0x2cbfb3['query'][_0x8bfe('0x33')]));_0x2b47c6[_0x8bfe('0x32')]=_0x2b47c6[_0x8bfe('0x32')][_0x8bfe('0x34')]?_0x2b47c6[_0x8bfe('0x32')]:_0x3c6a3c[_0x8bfe('0x2d')];if(!_0x2cbfb3[_0x8bfe('0x2e')]['hasOwnProperty'](_0x8bfe('0x35'))){_0x2b47c6[_0x8bfe('0x1e')]=qs['limit'](_0x2cbfb3[_0x8bfe('0x2e')][_0x8bfe('0x1e')]);_0x2b47c6[_0x8bfe('0x1b')]=qs[_0x8bfe('0x1b')](_0x2cbfb3[_0x8bfe('0x2e')]['offset']);}_0x2b47c6[_0x8bfe('0x36')]=qs['sort'](_0x2cbfb3['query']['sort']);_0x2b47c6['where']=qs[_0x8bfe('0x30')](_[_0x8bfe('0x37')](_0x2cbfb3[_0x8bfe('0x2e')],_0x3c6a3c[_0x8bfe('0x30')]),_0xdf4c3f);if(_0x2cbfb3[_0x8bfe('0x2e')][_0x8bfe('0x38')]){_0x2b47c6[_0x8bfe('0x39')]=_['merge'](_0x2b47c6[_0x8bfe('0x39')],{'$or':_['map'](_0xdf4c3f,function(_0x5c5801){if(_0x5c5801['type']!==_0x8bfe('0x3a')){var _0x65a1a3={};_0x65a1a3[_0x5c5801[_0x8bfe('0x26')]]={'$like':'%'+_0x2cbfb3[_0x8bfe('0x2e')][_0x8bfe('0x38')]+'%'};return _0x65a1a3;}})});}_0x2b47c6=_[_0x8bfe('0x3b')]({},_0x2b47c6,_0x2cbfb3[_0x8bfe('0x3c')]);var _0x20b085={'where':_0x2b47c6['where']};return db['JscriptyAnswerReport'][_0x8bfe('0x1d')](_0x20b085)[_0x8bfe('0x22')](function(_0x36d23c){_0x597651[_0x8bfe('0x1d')]=_0x36d23c;if(_0x2cbfb3[_0x8bfe('0x2e')][_0x8bfe('0x3d')]){_0x2b47c6[_0x8bfe('0x3e')]=[{'all':!![]}];}return db[_0x8bfe('0x3f')][_0x8bfe('0x40')](_0x2b47c6);})['then'](function(_0x62a6e2){_0x597651[_0x8bfe('0x41')]=_0x62a6e2;return _0x597651;})[_0x8bfe('0x22')](respondWithFilteredResult(_0x15fccc,_0x2b47c6))[_0x8bfe('0x42')](handleError(_0x15fccc,null));};exports[_0x8bfe('0x43')]=function(_0x234edc,_0x403456){var _0x55814c={'raw':!![],'where':{'id':_0x234edc[_0x8bfe('0x44')]['id']}},_0x25d26f={};_0x25d26f['model']=_[_0x8bfe('0x2f')](db['JscriptyAnswerReport']['rawAttributes']);_0x25d26f[_0x8bfe('0x2e')]=_[_0x8bfe('0x2f')](_0x234edc[_0x8bfe('0x2e')]);_0x25d26f['filters']=_[_0x8bfe('0x31')](_0x25d26f['model'],_0x25d26f[_0x8bfe('0x2e')]);_0x55814c[_0x8bfe('0x32')]=_['intersection'](_0x25d26f[_0x8bfe('0x2d')],qs[_0x8bfe('0x33')](_0x234edc[_0x8bfe('0x2e')][_0x8bfe('0x33')]));_0x55814c['attributes']=_0x55814c[_0x8bfe('0x32')][_0x8bfe('0x34')]?_0x55814c[_0x8bfe('0x32')]:_0x25d26f['model'];if(_0x234edc['query'][_0x8bfe('0x3d')]){_0x55814c[_0x8bfe('0x3e')]=[{'all':!![]}];}_0x55814c=_[_0x8bfe('0x3b')]({},_0x55814c,_0x234edc[_0x8bfe('0x3c')]);return db[_0x8bfe('0x3f')][_0x8bfe('0x45')](_0x55814c)[_0x8bfe('0x22')](handleEntityNotFound(_0x403456,null))[_0x8bfe('0x22')](respondWithResult(_0x403456,null))['catch'](handleError(_0x403456,null));};exports[_0x8bfe('0x46')]=function(_0x2af8fa,_0x4e6949){return db['JscriptyAnswerReport'][_0x8bfe('0x46')](_0x2af8fa[_0x8bfe('0x47')],{})[_0x8bfe('0x22')](respondWithResult(_0x4e6949,0xc9))['catch'](handleError(_0x4e6949,null));};exports[_0x8bfe('0x21')]=function(_0x3c4086,_0x55ad6e){if(_0x3c4086[_0x8bfe('0x47')]['id']){delete _0x3c4086[_0x8bfe('0x47')]['id'];}return db[_0x8bfe('0x3f')][_0x8bfe('0x45')]({'where':{'id':_0x3c4086[_0x8bfe('0x44')]['id']}})[_0x8bfe('0x22')](handleEntityNotFound(_0x55ad6e,null))['then'](saveUpdates(_0x3c4086['body'],null))['then'](respondWithResult(_0x55ad6e,null))['catch'](handleError(_0x55ad6e,null));};exports[_0x8bfe('0x48')]=function(_0x2b84a3,_0x36e938){return db[_0x8bfe('0x3f')][_0x8bfe('0x45')]({'where':{'id':_0x2b84a3['params']['id']}})[_0x8bfe('0x22')](handleEntityNotFound(_0x36e938,null))[_0x8bfe('0x22')](removeEntity(_0x36e938,null))[_0x8bfe('0x42')](handleError(_0x36e938,null));};exports[_0x8bfe('0x49')]=function(_0x3c6cbc,_0x43a0c5){return db['JscriptyAnswerReport'][_0x8bfe('0x49')]()[_0x8bfe('0x22')](respondWithResult(_0x43a0c5,null))['catch'](handleError(_0x43a0c5,null));};
\ No newline at end of file
index 9cd66cc..d4dfeff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dfd=['path','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x491b79,_0x5c8e98){var _0x1328cf=function(_0x5e8639){while(--_0x5e8639){_0x491b79['push'](_0x491b79['shift']());}};_0x1328cf(++_0x5c8e98);}(_0x4dfd,0x1c2));var _0xd4df=function(_0x376511,_0x1ef0aa){_0x376511=_0x376511-0x0;var _0xf1afd6=_0x4dfd[_0x376511];return _0xf1afd6;};'use strict';var _=require('lodash');var util=require(_0xd4df('0x0'));var logger=require(_0xd4df('0x1'))(_0xd4df('0x2'));var moment=require(_0xd4df('0x3'));var BPromise=require(_0xd4df('0x4'));var rp=require(_0xd4df('0x5'));var fs=require('fs');var path=require(_0xd4df('0x6'));var rimraf=require('rimraf');var config=require(_0xd4df('0x7'));var attributes=require(_0xd4df('0x8'));module[_0xd4df('0x9')]=function(_0x4cbc55,_0x3bc2f6){return _0x4cbc55[_0xd4df('0xa')](_0xd4df('0xb'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a41=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util'];(function(_0x3cb152,_0x57eb54){var _0x4f54c3=function(_0x273a45){while(--_0x273a45){_0x3cb152['push'](_0x3cb152['shift']());}};_0x4f54c3(++_0x57eb54);}(_0x2a41,0x108));var _0x12a4=function(_0x4d9a42,_0x4baeaa){_0x4d9a42=_0x4d9a42-0x0;var _0x5833d3=_0x2a41[_0x4d9a42];return _0x5833d3;};'use strict';var _=require(_0x12a4('0x0'));var util=require(_0x12a4('0x1'));var logger=require(_0x12a4('0x2'))(_0x12a4('0x3'));var moment=require(_0x12a4('0x4'));var BPromise=require(_0x12a4('0x5'));var rp=require(_0x12a4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x12a4('0x7'));var config=require(_0x12a4('0x8'));var attributes=require(_0x12a4('0x9'));module[_0x12a4('0xa')]=function(_0x596c6a,_0x31463d){return _0x596c6a[_0x12a4('0xb')](_0x12a4('0xc'),attributes,{'tableName':_0x12a4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d1d94f..f735e9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x642f=['client','http','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x642f,0xfb));var _0xf642=function(_0x19166c,_0x13c5a2){_0x19166c=_0x19166c-0x0;var _0x2fda86=_0x642f[_0x19166c];return _0x2fda86;};'use strict';var _=require(_0xf642('0x0'));var util=require('util');var moment=require(_0xf642('0x1'));var BPromise=require(_0xf642('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf642('0x3'));var db=require(_0xf642('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf642('0x5'))(_0xf642('0x6'));var config=require(_0xf642('0x7'));var jayson=require(_0xf642('0x8'));var client=jayson[_0xf642('0x9')][_0xf642('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x16565c,_0x20ad35,_0x1b833f){return new BPromise(function(_0x50d962,_0x5a38aa){return client['request'](_0x16565c,_0x1b833f)[_0xf642('0xb')](function(_0x3a65cc){logger[_0xf642('0xc')](_0xf642('0xd'),_0x20ad35,_0xf642('0xe'));logger['debug'](_0xf642('0xf'),_0x20ad35,_0xf642('0xe'),JSON['stringify'](_0x3a65cc));if(_0x3a65cc[_0xf642('0x10')]){if(_0x3a65cc[_0xf642('0x10')][_0xf642('0x11')]===0x1f4){logger[_0xf642('0x10')](_0xf642('0xd'),_0x20ad35,_0x3a65cc[_0xf642('0x10')][_0xf642('0x12')]);return _0x5a38aa(_0x3a65cc['error'][_0xf642('0x12')]);}logger['error'](_0xf642('0xd'),_0x20ad35,_0x3a65cc['error'][_0xf642('0x12')]);return _0x50d962(_0x3a65cc[_0xf642('0x10')]['message']);}else{logger[_0xf642('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x20ad35,_0xf642('0xe'));_0x50d962(_0x3a65cc['result']['message']);}})[_0xf642('0x13')](function(_0x34f0a6){logger[_0xf642('0x10')](_0xf642('0xd'),_0x20ad35,_0x34f0a6);_0x5a38aa(_0x34f0a6);});});}
\ No newline at end of file
+var _0xccfc=['debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xccfc,0x181));var _0xcccf=function(_0x452351,_0x5c1047){_0x452351=_0x452351-0x0;var _0x120160=_0xccfc[_0x452351];return _0x120160;};'use strict';var _=require(_0xcccf('0x0'));var util=require(_0xcccf('0x1'));var moment=require(_0xcccf('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcccf('0x3'));var db=require(_0xcccf('0x4'))['db'];var utils=require(_0xcccf('0x5'));var logger=require('../../config/logger')(_0xcccf('0x6'));var config=require('../../config/environment');var jayson=require(_0xcccf('0x7'));var client=jayson['client'][_0xcccf('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x34817f,_0xffec35,_0xe380b1){return new BPromise(function(_0x490170,_0x1b5a3f){return client[_0xcccf('0x9')](_0x34817f,_0xe380b1)[_0xcccf('0xa')](function(_0x34227c){logger[_0xcccf('0xb')](_0xcccf('0xc'),_0xffec35,_0xcccf('0xd'));logger[_0xcccf('0xe')](_0xcccf('0xf'),_0xffec35,_0xcccf('0xd'),JSON[_0xcccf('0x10')](_0x34227c));if(_0x34227c[_0xcccf('0x11')]){if(_0x34227c[_0xcccf('0x11')]['code']===0x1f4){logger[_0xcccf('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0xffec35,_0x34227c[_0xcccf('0x11')][_0xcccf('0x12')]);return _0x1b5a3f(_0x34227c[_0xcccf('0x11')][_0xcccf('0x12')]);}logger[_0xcccf('0x11')](_0xcccf('0xc'),_0xffec35,_0x34227c[_0xcccf('0x11')][_0xcccf('0x12')]);return _0x490170(_0x34227c[_0xcccf('0x11')]['message']);}else{logger[_0xcccf('0xb')](_0xcccf('0xc'),_0xffec35,'request\x20sent');_0x490170(_0x34227c[_0xcccf('0x13')][_0xcccf('0x12')]);}})[_0xcccf('0x14')](function(_0x3de743){logger[_0xcccf('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0xffec35,_0x3de743);_0x1b5a3f(_0x3de743);});});}
\ No newline at end of file
index cc35f7c..754bfe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c7=['/:id/summary','30s','post','clone','put','update','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','index','get','/:id','isAuthenticated','show','/:id/sessions','getSessions','/:id/answers','getAnswers'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xc8c7,0x10c));var _0x7c8c=function(_0x4f5e09,_0x30214e){_0x4f5e09=_0x4f5e09-0x0;var _0x3294d8=_0xc8c7[_0x4f5e09];return _0x3294d8;};'use strict';var multer=require('multer');var util=require(_0x7c8c('0x0'));var path=require(_0x7c8c('0x1'));var timeout=require(_0x7c8c('0x2'));var express=require(_0x7c8c('0x3'));var router=express[_0x7c8c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7c8c('0x5'));var interaction=require(_0x7c8c('0x6'));var config=require(_0x7c8c('0x7'));var controller=require(_0x7c8c('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x7c8c('0x9')]);router[_0x7c8c('0xa')](_0x7c8c('0xb'),auth[_0x7c8c('0xc')](),controller[_0x7c8c('0xd')]);router[_0x7c8c('0xa')](_0x7c8c('0xe'),auth[_0x7c8c('0xc')](),controller[_0x7c8c('0xf')]);router[_0x7c8c('0xa')](_0x7c8c('0x10'),auth[_0x7c8c('0xc')](),controller[_0x7c8c('0x11')]);router['get'](_0x7c8c('0x12'),auth[_0x7c8c('0xc')](),timeout(_0x7c8c('0x13')),controller['getSummary']);router[_0x7c8c('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7c8c('0x14')]('/:id/clone',auth['isAuthenticated'](),controller[_0x7c8c('0x15')]);router[_0x7c8c('0x16')](_0x7c8c('0xb'),auth[_0x7c8c('0xc')](),controller[_0x7c8c('0x17')]);router['delete'](_0x7c8c('0xb'),auth[_0x7c8c('0xc')](),controller[_0x7c8c('0x18')]);module[_0x7c8c('0x19')]=router;
\ No newline at end of file
+var _0x4347=['clone','put','/:id','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id/sessions','/:id/answers','/:id/summary','getSummary','post','create','/:id/clone'];(function(_0x5a3841,_0x3756b3){var _0x5ceba5=function(_0x50b9f0){while(--_0x50b9f0){_0x5a3841['push'](_0x5a3841['shift']());}};_0x5ceba5(++_0x3756b3);}(_0x4347,0xff));var _0x7434=function(_0x350ee3,_0x2f9e23){_0x350ee3=_0x350ee3-0x0;var _0x4bfb4e=_0x4347[_0x350ee3];return _0x4bfb4e;};'use strict';var multer=require(_0x7434('0x0'));var util=require(_0x7434('0x1'));var path=require(_0x7434('0x2'));var timeout=require(_0x7434('0x3'));var express=require(_0x7434('0x4'));var router=express['Router']();var fs_extra=require(_0x7434('0x5'));var auth=require(_0x7434('0x6'));var interaction=require(_0x7434('0x7'));var config=require(_0x7434('0x8'));var controller=require(_0x7434('0x9'));router[_0x7434('0xa')]('/',auth[_0x7434('0xb')](),controller[_0x7434('0xc')]);router['get']('/:id',auth[_0x7434('0xb')](),controller['show']);router['get'](_0x7434('0xd'),auth[_0x7434('0xb')](),controller['getSessions']);router[_0x7434('0xa')](_0x7434('0xe'),auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x7434('0xf'),auth['isAuthenticated'](),timeout('30s'),controller[_0x7434('0x10')]);router[_0x7434('0x11')]('/',auth[_0x7434('0xb')](),controller[_0x7434('0x12')]);router[_0x7434('0x11')](_0x7434('0x13'),auth[_0x7434('0xb')](),controller[_0x7434('0x14')]);router[_0x7434('0x15')](_0x7434('0x16'),auth[_0x7434('0xb')](),controller['update']);router[_0x7434('0x17')](_0x7434('0x16'),auth['isAuthenticated'](),controller['destroy']);module[_0x7434('0x18')]=router;
\ No newline at end of file
index 50ddbc9..2ba8d53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x023a=['long','isObjectLike','setDataValue','stringify','isString','formData','format','getDataValue','BOOLEAN','sequelize','lodash','util','STRING','name','TEXT'];(function(_0x109a33,_0x1586c6){var _0x26355b=function(_0x14277c){while(--_0x14277c){_0x109a33['push'](_0x109a33['shift']());}};_0x26355b(++_0x1586c6);}(_0x023a,0x126));var _0xa023=function(_0xb4a2e9,_0x40a752){_0xb4a2e9=_0xb4a2e9-0x0;var _0x10dd8b=_0x023a[_0xb4a2e9];return _0x10dd8b;};'use strict';var Sequelize=require(_0xa023('0x0'));var _=require(_0xa023('0x1'));var util=require(_0xa023('0x2'));module['exports']={'name':{'type':Sequelize[_0xa023('0x3')],'unique':_0xa023('0x4')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xa023('0x5')](_0xa023('0x6')),'set':function(_0x5cc101){if(_[_0xa023('0x7')](_0x5cc101)){this[_0xa023('0x8')]('formData',JSON[_0xa023('0x9')](_0x5cc101));}else if(_[_0xa023('0xa')](_0x5cc101)){this['setDataValue'](_0xa023('0xb'),_0x5cc101);}else{this[_0xa023('0x8')](_0xa023('0xb'),util[_0xa023('0xc')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0xa023('0xd')](_0xa023('0x4'))||'',this['getDataValue']('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xa023('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xa023('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7933=['sequelize','lodash','util','exports','STRING','name','TEXT','long','isObjectLike','setDataValue','formData','format','getDataValue','description','BOOLEAN'];(function(_0x29dab5,_0x703f04){var _0x2af667=function(_0x341e13){while(--_0x341e13){_0x29dab5['push'](_0x29dab5['shift']());}};_0x2af667(++_0x703f04);}(_0x7933,0x168));var _0x3793=function(_0x2e6645,_0x5b19e5){_0x2e6645=_0x2e6645-0x0;var _0x45dd5a=_0x7933[_0x2e6645];return _0x45dd5a;};'use strict';var Sequelize=require(_0x3793('0x0'));var _=require(_0x3793('0x1'));var util=require(_0x3793('0x2'));module[_0x3793('0x3')]={'name':{'type':Sequelize[_0x3793('0x4')],'unique':_0x3793('0x5')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x3793('0x6')](_0x3793('0x7')),'set':function(_0xf08b38){if(_[_0x3793('0x8')](_0xf08b38)){this[_0x3793('0x9')](_0x3793('0xa'),JSON['stringify'](_0xf08b38));}else if(_['isString'](_0xf08b38)){this[_0x3793('0x9')]('formData',_0xf08b38);}else{this[_0x3793('0x9')](_0x3793('0xa'),util[_0x3793('0xb')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x3793('0xc')](_0x3793('0x5'))||'',this[_0x3793('0xc')](_0x3793('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x3793('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 2461d7e..62bdaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe139=['ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','count','set','reject','update','then','destroy','get','Projects','sendStatus','error','stack','name','send','index','map','JscriptyProject','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','keys','rawAttributes','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','updatedAt','omit','createdAt','getSessions','findOne','JscriptySessionReport','pick','filter','rows','getAnswers','JscriptyAnswerReport','ProjectId','number','fromCharCode','apply','toString','indexOf','replace','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','questionId','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','Content-type','text/csv','download','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox'];(function(_0x57db49,_0x288094){var _0xd0636f=function(_0x227787){while(--_0x227787){_0x57db49['push'](_0x57db49['shift']());}};_0xd0636f(++_0x288094);}(_0xe139,0x1eb));var _0x9e13=function(_0x2f0862,_0x5022b8){_0x2f0862=_0x2f0862-0x0;var _0x15f2c0=_0xe139[_0x2f0862];return _0x15f2c0;};'use strict';var emlformat=require(_0x9e13('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9e13('0x1'));var jsonpatch=require(_0x9e13('0x2'));var rp=require(_0x9e13('0x3'));var moment=require('moment');var BPromise=require(_0x9e13('0x4'));var Mustache=require(_0x9e13('0x5'));var util=require(_0x9e13('0x6'));var path=require(_0x9e13('0x7'));var sox=require(_0x9e13('0x8'));var csv=require('to-csv');var ejs=require(_0x9e13('0x9'));var fs=require('fs');var fs_extra=require(_0x9e13('0xa'));var _=require(_0x9e13('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9e13('0xc'));var deskjs=require(_0x9e13('0xd'));var toCsv=require(_0x9e13('0xe'));var querystring=require(_0x9e13('0xf'));var Papa=require(_0x9e13('0x10'));var Redis=require(_0x9e13('0x11'));var authService=require(_0x9e13('0x12'));var qs=require(_0x9e13('0x13'));var as=require(_0x9e13('0x14'));var hardwareService=require(_0x9e13('0x15'));var logger=require(_0x9e13('0x16'))(_0x9e13('0x17'));var utils=require(_0x9e13('0x18'));var config=require(_0x9e13('0x19'));var licenseUtil=require(_0x9e13('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17482e,_0x2df0aa){_0x2df0aa=_0x2df0aa||0xcc;return function(_0x4a0df8){if(_0x4a0df8){return _0x17482e['sendStatus'](_0x2df0aa);}return _0x17482e['status'](_0x2df0aa)['end']();};}function respondWithResult(_0x1d6e67,_0xcffeda){_0xcffeda=_0xcffeda||0xc8;return function(_0x5b80f0){if(_0x5b80f0){return _0x1d6e67[_0x9e13('0x1b')](_0xcffeda)[_0x9e13('0x1c')](_0x5b80f0);}};}function respondWithFilteredResult(_0x3dee6f,_0x2365c5){return function(_0x39d728){if(_0x39d728){var _0x21f4c7=typeof _0x2365c5[_0x9e13('0x1d')]==='undefined'&&typeof _0x2365c5['limit']===_0x9e13('0x1e');var _0x445267=_0x39d728[_0x9e13('0x1f')];var _0x453f77=_0x21f4c7?0x0:_0x2365c5['offset'];var _0x31550b=_0x21f4c7?_0x39d728[_0x9e13('0x1f')]:_0x2365c5['offset']+_0x2365c5['limit'];var _0x4c3daf;if(_0x31550b>=_0x445267){_0x31550b=_0x445267;_0x4c3daf=0xc8;}else{_0x4c3daf=0xce;}_0x3dee6f[_0x9e13('0x1b')](_0x4c3daf);return _0x3dee6f[_0x9e13('0x20')]('Content-Range',_0x453f77+'-'+_0x31550b+'/'+_0x445267)['json'](_0x39d728);}return null;};}function patchUpdates(_0x18d7f1){return function(_0x5c6c98){try{jsonpatch['apply'](_0x5c6c98,_0x18d7f1,!![]);}catch(_0x13683f){return BPromise[_0x9e13('0x21')](_0x13683f);}return _0x5c6c98['save']();};}function saveUpdates(_0x2010e1,_0x3fb874){return function(_0x3bb422){if(_0x3bb422){return _0x3bb422[_0x9e13('0x22')](_0x2010e1)[_0x9e13('0x23')](function(_0x528d9c){return _0x528d9c;});}return null;};}function removeEntity(_0x25f731,_0xeac12e){return function(_0x4acefa){if(_0x4acefa){return _0x4acefa[_0x9e13('0x24')]()[_0x9e13('0x23')](function(){var _0x84da85=_0x4acefa[_0x9e13('0x25')]({'plain':!![]});var _0x4a1e2d=_0x9e13('0x26');return db['UserProfileResource'][_0x9e13('0x24')]({'where':{'type':_0x4a1e2d,'resourceId':_0x84da85['id']}})['then'](function(){return _0x4acefa;});})[_0x9e13('0x23')](function(){_0x25f731[_0x9e13('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x203d48,_0x1c982b){return function(_0xfbf595){if(!_0xfbf595){_0x203d48[_0x9e13('0x27')](0x194);}return _0xfbf595;};}function handleError(_0x5d00ab,_0x1a6f1a){_0x1a6f1a=_0x1a6f1a||0x1f4;return function(_0x461dc0){logger[_0x9e13('0x28')](_0x461dc0[_0x9e13('0x29')]);if(_0x461dc0[_0x9e13('0x2a')]){delete _0x461dc0[_0x9e13('0x2a')];}_0x5d00ab[_0x9e13('0x1b')](_0x1a6f1a)[_0x9e13('0x2b')](_0x461dc0);};}exports[_0x9e13('0x2c')]=function(_0x2c8541,_0x541cb1){var _0x3fb688={},_0x1cf9a8={},_0x2a232d={'count':0x0,'rows':[]};var _0x3edb56=_[_0x9e13('0x2d')](db[_0x9e13('0x2e')]['rawAttributes'],function(_0x4e981f){return{'name':_0x4e981f[_0x9e13('0x2f')],'type':_0x4e981f[_0x9e13('0x30')][_0x9e13('0x31')]};});_0x1cf9a8['model']=_['map'](_0x3edb56,_0x9e13('0x2a'));_0x1cf9a8['query']=_['keys'](_0x2c8541[_0x9e13('0x32')]);_0x1cf9a8[_0x9e13('0x33')]=_[_0x9e13('0x34')](_0x1cf9a8['model'],_0x1cf9a8['query']);_0x3fb688[_0x9e13('0x35')]=_['intersection'](_0x1cf9a8[_0x9e13('0x36')],qs[_0x9e13('0x37')](_0x2c8541[_0x9e13('0x32')][_0x9e13('0x37')]));_0x3fb688['attributes']=_0x3fb688['attributes'][_0x9e13('0x38')]?_0x3fb688[_0x9e13('0x35')]:_0x1cf9a8[_0x9e13('0x36')];if(!_0x2c8541['query'][_0x9e13('0x39')](_0x9e13('0x3a'))){_0x3fb688['limit']=qs[_0x9e13('0x3b')](_0x2c8541[_0x9e13('0x32')][_0x9e13('0x3b')]);_0x3fb688[_0x9e13('0x1d')]=qs[_0x9e13('0x1d')](_0x2c8541[_0x9e13('0x32')]['offset']);}_0x3fb688[_0x9e13('0x3c')]=qs[_0x9e13('0x3d')](_0x2c8541['query'][_0x9e13('0x3d')]);_0x3fb688['where']=qs['filters'](_['pick'](_0x2c8541[_0x9e13('0x32')],_0x1cf9a8[_0x9e13('0x33')]),_0x3edb56);if(_0x2c8541[_0x9e13('0x32')]['filter']){_0x3fb688[_0x9e13('0x3e')]=_[_0x9e13('0x3f')](_0x3fb688['where'],{'$or':_[_0x9e13('0x2d')](_0x3edb56,function(_0x55b816){if(_0x55b816[_0x9e13('0x30')]!==_0x9e13('0x40')){var _0x568b9a={};_0x568b9a[_0x55b816['name']]={'$like':'%'+_0x2c8541['query']['filter']+'%'};return _0x568b9a;}})});}_0x3fb688=_[_0x9e13('0x3f')]({},_0x3fb688,_0x2c8541[_0x9e13('0x41')]);var _0x4958f7={'where':_0x3fb688['where']};return db[_0x9e13('0x2e')][_0x9e13('0x1f')](_0x4958f7)[_0x9e13('0x23')](function(_0x2776eb){_0x2a232d[_0x9e13('0x1f')]=_0x2776eb;if(_0x2c8541[_0x9e13('0x32')][_0x9e13('0x42')]){_0x3fb688['include']=[{'all':!![]}];}return db['JscriptyProject'][_0x9e13('0x43')](_0x3fb688);})[_0x9e13('0x23')](function(_0x1f481e){_0x2a232d['rows']=_0x1f481e;return _0x2a232d;})[_0x9e13('0x23')](respondWithFilteredResult(_0x541cb1,_0x3fb688))[_0x9e13('0x44')](handleError(_0x541cb1,null));};exports[_0x9e13('0x45')]=function(_0x4ef08f,_0x186831){var _0x3895a6={'raw':![],'where':{'id':_0x4ef08f[_0x9e13('0x46')]['id']}},_0x29ba65={};_0x29ba65['model']=_[_0x9e13('0x47')](db[_0x9e13('0x2e')][_0x9e13('0x48')]);_0x29ba65[_0x9e13('0x32')]=_[_0x9e13('0x47')](_0x4ef08f[_0x9e13('0x32')]);_0x29ba65[_0x9e13('0x33')]=_[_0x9e13('0x34')](_0x29ba65[_0x9e13('0x36')],_0x29ba65['query']);_0x3895a6['attributes']=_[_0x9e13('0x34')](_0x29ba65[_0x9e13('0x36')],qs['fields'](_0x4ef08f[_0x9e13('0x32')][_0x9e13('0x37')]));_0x3895a6['attributes']=_0x3895a6['attributes'][_0x9e13('0x38')]?_0x3895a6[_0x9e13('0x35')]:_0x29ba65[_0x9e13('0x36')];if(_0x4ef08f[_0x9e13('0x32')][_0x9e13('0x42')]){_0x3895a6[_0x9e13('0x49')]=[{'all':!![]}];}_0x3895a6=_[_0x9e13('0x3f')]({},_0x3895a6,_0x4ef08f[_0x9e13('0x41')]);return db['JscriptyProject'][_0x9e13('0x4a')](_0x3895a6)[_0x9e13('0x23')](handleEntityNotFound(_0x186831,null))[_0x9e13('0x23')](respondWithResult(_0x186831,null))['catch'](handleError(_0x186831,null));};exports[_0x9e13('0x4b')]=function(_0x1f1650,_0xcd2768){return db[_0x9e13('0x2e')][_0x9e13('0x4b')](_0x1f1650[_0x9e13('0x4c')],{})[_0x9e13('0x23')](function(_0x2401c4){var _0x223eef=_0x1f1650['user'][_0x9e13('0x25')]({'plain':!![]});if(!_0x223eef)throw new Error(_0x9e13('0x4d'));if(_0x223eef[_0x9e13('0x4e')]===_0x9e13('0x4f')){var _0x9b23=_0x2401c4[_0x9e13('0x25')]({'plain':!![]});var _0x59734e=_0x9e13('0x26');return db[_0x9e13('0x50')][_0x9e13('0x4a')]({'where':{'name':_0x59734e,'userProfileId':_0x223eef[_0x9e13('0x51')]},'raw':!![]})['then'](function(_0x583a3f){if(_0x583a3f&&_0x583a3f[_0x9e13('0x52')]===0x0){return db[_0x9e13('0x53')][_0x9e13('0x4b')]({'name':_0x9b23[_0x9e13('0x2a')],'resourceId':_0x9b23['id'],'type':_0x583a3f[_0x9e13('0x2a')],'sectionId':_0x583a3f['id']},{})[_0x9e13('0x23')](function(){return _0x2401c4;});}else{return _0x2401c4;}})['catch'](function(_0x2bc5ef){logger['error'](_0x9e13('0x54'),_0x2bc5ef);throw _0x2bc5ef;});}return _0x2401c4;})['then'](respondWithResult(_0xcd2768,0xc9))[_0x9e13('0x44')](handleError(_0xcd2768,null));};exports['clone']=function(_0xc0ed3,_0x10117a){var _0xed3361={'where':{'id':_0xc0ed3[_0x9e13('0x46')]['id']}},_0x3a5224={};_0x3a5224['model']=_[_0x9e13('0x47')](db[_0x9e13('0x2e')][_0x9e13('0x48')]);_0xed3361['attributes']=_['intersection'](_0x3a5224['model'],qs[_0x9e13('0x37')](_0xc0ed3[_0x9e13('0x32')][_0x9e13('0x37')]));_0xed3361[_0x9e13('0x35')]=_0xed3361[_0x9e13('0x35')][_0x9e13('0x38')]?_0xed3361[_0x9e13('0x35')]:_0x3a5224['model'];if(_0xc0ed3[_0x9e13('0x32')][_0x9e13('0x42')]){_0xed3361[_0x9e13('0x49')]=[{'all':!![]}];}_0xed3361=_[_0x9e13('0x3f')]({},_0xed3361,_0xc0ed3[_0x9e13('0x41')]);return db[_0x9e13('0x2e')][_0x9e13('0x4a')](_0xed3361)[_0x9e13('0x23')](handleEntityNotFound(_0x10117a,null))[_0x9e13('0x23')](function(_0xbc5b00){if(_0xbc5b00){var _0x4fb79f=_0xbc5b00[_0x9e13('0x25')]({'plain':!![]});_0x4fb79f=qs['omit'](_0x4fb79f,['id','createdAt',_0x9e13('0x55')]);_0xc0ed3[_0x9e13('0x4c')]=_[_0x9e13('0x56')](_0xc0ed3[_0x9e13('0x4c')],['id',_0x9e13('0x57'),_0x9e13('0x55')]);return db[_0x9e13('0x2e')][_0x9e13('0x4b')](_[_0x9e13('0x3f')](_0x4fb79f,_0xc0ed3[_0x9e13('0x4c')]),{'include':_0xc0ed3[_0x9e13('0x32')][_0x9e13('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x7336f5){var _0x3aa815=_0xc0ed3[_0x9e13('0x4f')]['get']({'plain':!![]});if(!_0x3aa815)throw new Error(_0x9e13('0x4d'));if(_0x3aa815[_0x9e13('0x4e')]===_0x9e13('0x4f')){var _0x37560a=_0x7336f5[_0x9e13('0x25')]({'plain':!![]});var _0x16da11=_0x9e13('0x26');return db['UserProfileSection'][_0x9e13('0x4a')]({'where':{'name':_0x16da11,'userProfileId':_0x3aa815['userProfileId']},'raw':!![]})['then'](function(_0x2508e3){if(_0x2508e3&&_0x2508e3[_0x9e13('0x52')]===0x0){return db[_0x9e13('0x53')][_0x9e13('0x4b')]({'name':_0x37560a[_0x9e13('0x2a')],'resourceId':_0x37560a['id'],'type':_0x2508e3['name'],'sectionId':_0x2508e3['id']},{})[_0x9e13('0x23')](function(){return _0x7336f5;});}else{return _0x7336f5;}})['catch'](function(_0x145095){logger[_0x9e13('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x145095);throw _0x145095;});}return _0x7336f5;});}})[_0x9e13('0x23')](respondWithResult(_0x10117a,0xc9))['catch'](handleError(_0x10117a,null));};exports[_0x9e13('0x22')]=function(_0x5925e2,_0x219485){if(_0x5925e2[_0x9e13('0x4c')]['id']){delete _0x5925e2[_0x9e13('0x4c')]['id'];}return db[_0x9e13('0x2e')][_0x9e13('0x4a')]({'where':{'id':_0x5925e2[_0x9e13('0x46')]['id']}})['then'](handleEntityNotFound(_0x219485,null))[_0x9e13('0x23')](saveUpdates(_0x5925e2['body'],null))[_0x9e13('0x23')](respondWithResult(_0x219485,null))[_0x9e13('0x44')](handleError(_0x219485,null));};exports[_0x9e13('0x24')]=function(_0x3d11b4,_0x18bdda){return db[_0x9e13('0x2e')][_0x9e13('0x4a')]({'where':{'id':_0x3d11b4[_0x9e13('0x46')]['id']}})[_0x9e13('0x23')](handleEntityNotFound(_0x18bdda,null))[_0x9e13('0x23')](removeEntity(_0x18bdda,null))['catch'](handleError(_0x18bdda,null));};exports[_0x9e13('0x58')]=function(_0x3e16f2,_0x92526d,_0x11c77b){var _0x287fdc={'raw':!![],'where':{}};var _0x2244e8={};var _0x16cdf9={'count':0x0,'rows':[]};return db[_0x9e13('0x2e')][_0x9e13('0x59')]({'where':{'id':_0x3e16f2[_0x9e13('0x46')]['id']}})[_0x9e13('0x23')](handleEntityNotFound(_0x92526d,null))[_0x9e13('0x23')](function(_0x244fb0){if(_0x244fb0){_0x2244e8[_0x9e13('0x36')]=_[_0x9e13('0x47')](db[_0x9e13('0x5a')][_0x9e13('0x48')]);_0x2244e8[_0x9e13('0x32')]=_[_0x9e13('0x47')](_0x3e16f2[_0x9e13('0x32')]);_0x2244e8[_0x9e13('0x33')]=_['intersection'](_0x2244e8['model'],_0x2244e8[_0x9e13('0x32')]);_0x287fdc[_0x9e13('0x35')]=_[_0x9e13('0x34')](_0x2244e8[_0x9e13('0x36')],qs['fields'](_0x3e16f2['query'][_0x9e13('0x37')]));_0x287fdc[_0x9e13('0x35')]=_0x287fdc[_0x9e13('0x35')][_0x9e13('0x38')]?_0x287fdc[_0x9e13('0x35')]:_0x2244e8[_0x9e13('0x36')];if(!_0x3e16f2[_0x9e13('0x32')]['hasOwnProperty']('nolimit')){_0x287fdc[_0x9e13('0x3b')]=qs[_0x9e13('0x3b')](_0x3e16f2['query'][_0x9e13('0x3b')]);_0x287fdc[_0x9e13('0x1d')]=qs[_0x9e13('0x1d')](_0x3e16f2[_0x9e13('0x32')][_0x9e13('0x1d')]);}_0x287fdc[_0x9e13('0x3c')]=qs[_0x9e13('0x3d')](_0x3e16f2['query'][_0x9e13('0x3d')]);_0x287fdc[_0x9e13('0x3e')]=qs['filters'](_[_0x9e13('0x5b')](_0x3e16f2[_0x9e13('0x32')],_0x2244e8[_0x9e13('0x33')]));_0x287fdc[_0x9e13('0x3e')]['ProjectId']=_0x244fb0['id'];if(_0x3e16f2[_0x9e13('0x32')][_0x9e13('0x5c')]){_0x287fdc[_0x9e13('0x3e')]=_[_0x9e13('0x3f')](_0x287fdc[_0x9e13('0x3e')],{'$or':_['map'](_0x287fdc[_0x9e13('0x35')],function(_0x38f652){var _0x306b59={};_0x306b59[_0x38f652]={'$like':'%'+_0x3e16f2[_0x9e13('0x32')]['filter']+'%'};return _0x306b59;})});}_0x287fdc=_['merge']({},_0x287fdc,_0x3e16f2[_0x9e13('0x41')]);return db[_0x9e13('0x5a')][_0x9e13('0x1f')]({'where':_0x287fdc[_0x9e13('0x3e')]})[_0x9e13('0x23')](function(_0x1c72cc){_0x16cdf9[_0x9e13('0x1f')]=_0x1c72cc;if(_0x3e16f2['query'][_0x9e13('0x42')]){_0x287fdc['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x9e13('0x43')](_0x287fdc);})['then'](function(_0x4ba5c1){_0x16cdf9[_0x9e13('0x5d')]=_0x4ba5c1;return _0x16cdf9;});}})[_0x9e13('0x23')](respondWithFilteredResult(_0x92526d,_0x287fdc))['catch'](handleError(_0x92526d,null));};exports[_0x9e13('0x5e')]=function(_0x4344d8,_0xb085f6,_0x521ca6){var _0xe5d0bb={'raw':!![],'where':{}};var _0x4baf03={};var _0x16f48b={'count':0x0,'rows':[]};return db[_0x9e13('0x2e')][_0x9e13('0x59')]({'where':{'id':_0x4344d8['params']['id']}})[_0x9e13('0x23')](handleEntityNotFound(_0xb085f6,null))[_0x9e13('0x23')](function(_0x5f0da0){if(_0x5f0da0){_0x4baf03['model']=_['keys'](db[_0x9e13('0x5f')][_0x9e13('0x48')]);_0x4baf03['query']=_[_0x9e13('0x47')](_0x4344d8[_0x9e13('0x32')]);_0x4baf03[_0x9e13('0x33')]=_[_0x9e13('0x34')](_0x4baf03[_0x9e13('0x36')],_0x4baf03[_0x9e13('0x32')]);_0xe5d0bb[_0x9e13('0x35')]=_[_0x9e13('0x34')](_0x4baf03[_0x9e13('0x36')],qs[_0x9e13('0x37')](_0x4344d8[_0x9e13('0x32')][_0x9e13('0x37')]));_0xe5d0bb[_0x9e13('0x35')]=_0xe5d0bb[_0x9e13('0x35')][_0x9e13('0x38')]?_0xe5d0bb[_0x9e13('0x35')]:_0x4baf03[_0x9e13('0x36')];if(!_0x4344d8[_0x9e13('0x32')]['hasOwnProperty'](_0x9e13('0x3a'))){_0xe5d0bb[_0x9e13('0x3b')]=qs['limit'](_0x4344d8[_0x9e13('0x32')][_0x9e13('0x3b')]);_0xe5d0bb['offset']=qs[_0x9e13('0x1d')](_0x4344d8['query'][_0x9e13('0x1d')]);}_0xe5d0bb[_0x9e13('0x3c')]=qs[_0x9e13('0x3d')](_0x4344d8[_0x9e13('0x32')]['sort']);_0xe5d0bb[_0x9e13('0x3e')]=qs[_0x9e13('0x33')](_[_0x9e13('0x5b')](_0x4344d8[_0x9e13('0x32')],_0x4baf03[_0x9e13('0x33')]));_0xe5d0bb[_0x9e13('0x3e')][_0x9e13('0x60')]=_0x5f0da0['id'];if(_0x4344d8[_0x9e13('0x32')]['filter']){_0xe5d0bb[_0x9e13('0x3e')]=_[_0x9e13('0x3f')](_0xe5d0bb[_0x9e13('0x3e')],{'$or':_['map'](_0xe5d0bb[_0x9e13('0x35')],function(_0x5b061e){var _0x35bd41={};_0x35bd41[_0x5b061e]={'$like':'%'+_0x4344d8[_0x9e13('0x32')][_0x9e13('0x5c')]+'%'};return _0x35bd41;})});}_0xe5d0bb=_[_0x9e13('0x3f')]({},_0xe5d0bb,_0x4344d8['options']);return db['JscriptyAnswerReport'][_0x9e13('0x1f')]({'where':_0xe5d0bb[_0x9e13('0x3e')]})[_0x9e13('0x23')](function(_0x7332ea){_0x16f48b[_0x9e13('0x1f')]=_0x7332ea;if(_0x4344d8['query'][_0x9e13('0x42')]){_0xe5d0bb[_0x9e13('0x49')]=[{'all':!![]}];}return db[_0x9e13('0x5f')]['findAll'](_0xe5d0bb);})[_0x9e13('0x23')](function(_0x3529cb){_0x16f48b[_0x9e13('0x5d')]=_0x3529cb;return _0x16f48b;});}})[_0x9e13('0x23')](respondWithFilteredResult(_0xb085f6,_0xe5d0bb))[_0x9e13('0x44')](handleError(_0xb085f6,null));};function char(_0x4d09e1){return _0x9e13('0x61')===typeof _0x4d09e1?String[_0x9e13('0x62')][_0x9e13('0x63')](null,arguments):_0x4d09e1;}function needsEncapsulation(_0x22a1f4){return!!_0x22a1f4&&(_0x22a1f4[_0x9e13('0x64')]()[_0x9e13('0x65')](char(0xd))>=0x0||_0x22a1f4[_0x9e13('0x64')]()['indexOf'](char(0xa))>=0x0||_0x22a1f4[_0x9e13('0x64')]()[_0x9e13('0x65')](char(0x2c))>=0x0||_0x22a1f4['toString']()[_0x9e13('0x65')](char(0x22))>=0x0);}function encapsulate(_0x653d5c){var _0xe01faf=char(0x22),_0x4984f0='\x5c'+char(0x22),_0x5a0d38=_0x653d5c[_0x9e13('0x64')]()[_0x9e13('0x66')](new RegExp(_0xe01faf,'g'),_0x4984f0);return _0xe01faf+_0x5a0d38+_0xe01faf;}exports[_0x9e13('0x67')]=function(_0x9ead71,_0x5f2e4,_0xc30390){var _0x25a099,_0x16a684;var _0x365aeb={'where':{'ProjectId':_0x9ead71[_0x9e13('0x46')]['id']}};if(_0x9ead71[_0x9e13('0x32')][_0x9e13('0x68')]){_0x365aeb[_0x9e13('0x3e')]['starttime']=JSON[_0x9e13('0x69')](_0x9ead71['query']['startTime']);}return db[_0x9e13('0x5a')]['findAll'](_0x365aeb)[_0x9e13('0x23')](handleEntityNotFound(_0x5f2e4,null))[_0x9e13('0x23')](function(_0x252af3){if(_0x252af3){_0x25a099=_0x252af3;return db[_0x9e13('0x6a')][_0x9e13('0x43')]({'where':{'SessionId':{'$in':_[_0x9e13('0x2d')](_0x25a099,'id')},'ProjectId':_0x9ead71[_0x9e13('0x46')]['id']},'order':_0x9e13('0x6b')});}})['then'](handleEntityNotFound(_0x5f2e4,null))['then'](function(_0x4fb245){if(_0x4fb245){_0x16a684=_0x4fb245;var _0x17b45d={};for(var _0x30dc34=0x0,_0x25c287=_0x16a684['length'];_0x30dc34<_0x25c287;_0x30dc34++){if(!_0x17b45d[_0x9e13('0x39')](_0x16a684[_0x30dc34]['questionId'])){_0x17b45d[_0x16a684[_0x30dc34]['questionId']]=needsEncapsulation(_0x16a684[_0x30dc34]['question'])?encapsulate(_0x16a684[_0x30dc34]['question']):_0x16a684[_0x30dc34][_0x9e13('0x6c')];}}var _0x7ade8=[],_0x56a55c={};for(var _0x64cc83=0x0,_0xab1a97=_0x25a099[_0x9e13('0x38')];_0x64cc83<_0xab1a97;_0x64cc83++){_0x56a55c={'ProjectId':_0x9ead71[_0x9e13('0x46')]['id'],'SessionId':_0x25a099[_0x64cc83]['id'],'StartTime':moment(_0x25a099[_0x64cc83][_0x9e13('0x6d')])[_0x9e13('0x6e')](_0x9e13('0x6f'))};for(var _0x17bb1f=0x0,_0x14c4b8=_0x16a684[_0x9e13('0x38')];_0x17bb1f<_0x14c4b8;_0x17bb1f++){if(_0x16a684[_0x17bb1f][_0x9e13('0x70')]==_0x25a099[_0x64cc83]['id']&&_0x17b45d[_0x9e13('0x39')](_0x16a684[_0x17bb1f][_0x9e13('0x71')])){_0x56a55c[_0x17b45d[_0x16a684[_0x17bb1f][_0x9e13('0x71')]]]=_0x16a684[_0x17bb1f][_0x9e13('0x72')];}}for(var _0x105ee2 in _0x17b45d){if(!_0x56a55c[_0x9e13('0x39')](_0x17b45d[_0x105ee2])){_0x56a55c[_0x17b45d[_0x105ee2]]=null;}}_0x7ade8[_0x9e13('0x73')](_0x56a55c);}return _0x7ade8;}})[_0x9e13('0x23')](function(_0x41b88d){if(!_[_0x9e13('0x74')](_0x41b88d)){var _0x237602=toCsv(_0x41b88d);var _0x3c86f8=Date[_0x9e13('0x75')]();fs[_0x9e13('0x76')](util[_0x9e13('0x6e')](_0x9e13('0x77'),_0x9ead71[_0x9e13('0x46')]['id'],_0x3c86f8),_0x237602);_0x5f2e4[_0x9e13('0x78')]('Content-disposition',_0x9e13('0x79')+util[_0x9e13('0x6e')]('Jscripty_Project_%d_Summary_%s.csv',_0x9ead71['params']['id'],_0x3c86f8));_0x5f2e4[_0x9e13('0x78')](_0x9e13('0x7a'),_0x9e13('0x7b'));return _0x5f2e4[_0x9e13('0x7c')](util[_0x9e13('0x6e')](_0x9e13('0x77'),_0x9ead71[_0x9e13('0x46')]['id'],_0x3c86f8));}else{return _0x5f2e4[_0x9e13('0x27')](0xcc);}})[_0x9e13('0x44')](handleError(_0x5f2e4,null));};
\ No newline at end of file
+var _0x5074=['rows','JscriptyAnswerReport','ProjectId','findAll','fromCharCode','toString','indexOf','getSummary','starttime','parse','startTime','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','Content-type','text/csv','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Projects','end','error','stack','name','index','map','JscriptyProject','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','catch','show','keys','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','rawAttributes','createdAt','updatedAt','params','findOne','JscriptySessionReport'];(function(_0x5219af,_0x22cfef){var _0x2c642a=function(_0x274124){while(--_0x274124){_0x5219af['push'](_0x5219af['shift']());}};_0x2c642a(++_0x22cfef);}(_0x5074,0x1e7));var _0x4507=function(_0x10dfdf,_0x36b623){_0x10dfdf=_0x10dfdf-0x0;var _0x4d857d=_0x5074[_0x10dfdf];return _0x4d857d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4507('0x0'));var zipdir=require(_0x4507('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4507('0x2'));var moment=require(_0x4507('0x3'));var BPromise=require(_0x4507('0x4'));var Mustache=require(_0x4507('0x5'));var util=require(_0x4507('0x6'));var path=require(_0x4507('0x7'));var sox=require(_0x4507('0x8'));var csv=require(_0x4507('0x9'));var ejs=require(_0x4507('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4507('0xb'));var squel=require('squel');var crypto=require(_0x4507('0xc'));var jsforce=require(_0x4507('0xd'));var deskjs=require(_0x4507('0xe'));var toCsv=require(_0x4507('0x9'));var querystring=require('querystring');var Papa=require(_0x4507('0xf'));var Redis=require(_0x4507('0x10'));var authService=require(_0x4507('0x11'));var qs=require(_0x4507('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4507('0x13'));var logger=require(_0x4507('0x14'))(_0x4507('0x15'));var utils=require('../../config/utils');var config=require(_0x4507('0x16'));var licenseUtil=require(_0x4507('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51424a,_0x389172){_0x389172=_0x389172||0xcc;return function(_0x55ae6f){if(_0x55ae6f){return _0x51424a[_0x4507('0x18')](_0x389172);}return _0x51424a['status'](_0x389172)['end']();};}function respondWithResult(_0x13cb5d,_0x55a142){_0x55a142=_0x55a142||0xc8;return function(_0x278fe5){if(_0x278fe5){return _0x13cb5d[_0x4507('0x19')](_0x55a142)['json'](_0x278fe5);}};}function respondWithFilteredResult(_0x490b69,_0x1282f0){return function(_0x5ce8bf){if(_0x5ce8bf){var _0x3d95b1=typeof _0x1282f0[_0x4507('0x1a')]==='undefined'&&typeof _0x1282f0[_0x4507('0x1b')]==='undefined';var _0x2f189c=_0x5ce8bf[_0x4507('0x1c')];var _0x2535a0=_0x3d95b1?0x0:_0x1282f0['offset'];var _0x6ac401=_0x3d95b1?_0x5ce8bf[_0x4507('0x1c')]:_0x1282f0[_0x4507('0x1a')]+_0x1282f0[_0x4507('0x1b')];var _0x16261c;if(_0x6ac401>=_0x2f189c){_0x6ac401=_0x2f189c;_0x16261c=0xc8;}else{_0x16261c=0xce;}_0x490b69[_0x4507('0x19')](_0x16261c);return _0x490b69[_0x4507('0x1d')](_0x4507('0x1e'),_0x2535a0+'-'+_0x6ac401+'/'+_0x2f189c)['json'](_0x5ce8bf);}return null;};}function patchUpdates(_0x4f173c){return function(_0x165ed4){try{jsonpatch[_0x4507('0x1f')](_0x165ed4,_0x4f173c,!![]);}catch(_0x185e00){return BPromise[_0x4507('0x20')](_0x185e00);}return _0x165ed4[_0x4507('0x21')]();};}function saveUpdates(_0x45688c,_0x1278c0){return function(_0x178765){if(_0x178765){return _0x178765[_0x4507('0x22')](_0x45688c)[_0x4507('0x23')](function(_0x17a74b){return _0x17a74b;});}return null;};}function removeEntity(_0xdfc367,_0x1f4f4){return function(_0x5f3d8b){if(_0x5f3d8b){return _0x5f3d8b[_0x4507('0x24')]()[_0x4507('0x23')](function(){var _0x365805=_0x5f3d8b[_0x4507('0x25')]({'plain':!![]});var _0x208dc8=_0x4507('0x26');return db['UserProfileResource'][_0x4507('0x24')]({'where':{'type':_0x208dc8,'resourceId':_0x365805['id']}})[_0x4507('0x23')](function(){return _0x5f3d8b;});})['then'](function(){_0xdfc367['status'](0xcc)[_0x4507('0x27')]();});}};}function handleEntityNotFound(_0x252ce8,_0x5c1aa6){return function(_0x32f5c1){if(!_0x32f5c1){_0x252ce8['sendStatus'](0x194);}return _0x32f5c1;};}function handleError(_0x36d103,_0x5a4eef){_0x5a4eef=_0x5a4eef||0x1f4;return function(_0x70e6ef){logger[_0x4507('0x28')](_0x70e6ef[_0x4507('0x29')]);if(_0x70e6ef[_0x4507('0x2a')]){delete _0x70e6ef['name'];}_0x36d103[_0x4507('0x19')](_0x5a4eef)['send'](_0x70e6ef);};}exports[_0x4507('0x2b')]=function(_0x8f91f3,_0xf985e7){var _0x2f86cf={},_0xfb2937={},_0x22d8ce={'count':0x0,'rows':[]};var _0x4f1567=_[_0x4507('0x2c')](db[_0x4507('0x2d')]['rawAttributes'],function(_0x5d4b58){return{'name':_0x5d4b58[_0x4507('0x2e')],'type':_0x5d4b58['type'][_0x4507('0x2f')]};});_0xfb2937[_0x4507('0x30')]=_[_0x4507('0x2c')](_0x4f1567,_0x4507('0x2a'));_0xfb2937[_0x4507('0x31')]=_['keys'](_0x8f91f3[_0x4507('0x31')]);_0xfb2937[_0x4507('0x32')]=_[_0x4507('0x33')](_0xfb2937['model'],_0xfb2937[_0x4507('0x31')]);_0x2f86cf['attributes']=_[_0x4507('0x33')](_0xfb2937[_0x4507('0x30')],qs[_0x4507('0x34')](_0x8f91f3[_0x4507('0x31')]['fields']));_0x2f86cf[_0x4507('0x35')]=_0x2f86cf[_0x4507('0x35')][_0x4507('0x36')]?_0x2f86cf['attributes']:_0xfb2937[_0x4507('0x30')];if(!_0x8f91f3[_0x4507('0x31')][_0x4507('0x37')](_0x4507('0x38'))){_0x2f86cf[_0x4507('0x1b')]=qs[_0x4507('0x1b')](_0x8f91f3[_0x4507('0x31')][_0x4507('0x1b')]);_0x2f86cf[_0x4507('0x1a')]=qs[_0x4507('0x1a')](_0x8f91f3[_0x4507('0x31')][_0x4507('0x1a')]);}_0x2f86cf[_0x4507('0x39')]=qs[_0x4507('0x3a')](_0x8f91f3[_0x4507('0x31')][_0x4507('0x3a')]);_0x2f86cf['where']=qs[_0x4507('0x32')](_[_0x4507('0x3b')](_0x8f91f3[_0x4507('0x31')],_0xfb2937[_0x4507('0x32')]),_0x4f1567);if(_0x8f91f3[_0x4507('0x31')][_0x4507('0x3c')]){_0x2f86cf['where']=_[_0x4507('0x3d')](_0x2f86cf[_0x4507('0x3e')],{'$or':_[_0x4507('0x2c')](_0x4f1567,function(_0x1c0792){if(_0x1c0792[_0x4507('0x3f')]!==_0x4507('0x40')){var _0x360161={};_0x360161[_0x1c0792[_0x4507('0x2a')]]={'$like':'%'+_0x8f91f3[_0x4507('0x31')][_0x4507('0x3c')]+'%'};return _0x360161;}})});}_0x2f86cf=_[_0x4507('0x3d')]({},_0x2f86cf,_0x8f91f3[_0x4507('0x41')]);var _0x211e8c={'where':_0x2f86cf[_0x4507('0x3e')]};return db[_0x4507('0x2d')][_0x4507('0x1c')](_0x211e8c)[_0x4507('0x23')](function(_0x398623){_0x22d8ce[_0x4507('0x1c')]=_0x398623;if(_0x8f91f3['query'][_0x4507('0x42')]){_0x2f86cf['include']=[{'all':!![]}];}return db[_0x4507('0x2d')]['findAll'](_0x2f86cf);})[_0x4507('0x23')](function(_0x1a0c1f){_0x22d8ce['rows']=_0x1a0c1f;return _0x22d8ce;})[_0x4507('0x23')](respondWithFilteredResult(_0xf985e7,_0x2f86cf))[_0x4507('0x43')](handleError(_0xf985e7,null));};exports[_0x4507('0x44')]=function(_0x24b04b,_0x337581){var _0x90a611={'raw':![],'where':{'id':_0x24b04b['params']['id']}},_0x45041b={};_0x45041b[_0x4507('0x30')]=_[_0x4507('0x45')](db['JscriptyProject']['rawAttributes']);_0x45041b[_0x4507('0x31')]=_[_0x4507('0x45')](_0x24b04b[_0x4507('0x31')]);_0x45041b['filters']=_[_0x4507('0x33')](_0x45041b['model'],_0x45041b[_0x4507('0x31')]);_0x90a611['attributes']=_['intersection'](_0x45041b[_0x4507('0x30')],qs[_0x4507('0x34')](_0x24b04b[_0x4507('0x31')][_0x4507('0x34')]));_0x90a611[_0x4507('0x35')]=_0x90a611[_0x4507('0x35')]['length']?_0x90a611[_0x4507('0x35')]:_0x45041b['model'];if(_0x24b04b[_0x4507('0x31')]['includeAll']){_0x90a611[_0x4507('0x46')]=[{'all':!![]}];}_0x90a611=_[_0x4507('0x3d')]({},_0x90a611,_0x24b04b[_0x4507('0x41')]);return db[_0x4507('0x2d')][_0x4507('0x47')](_0x90a611)[_0x4507('0x23')](handleEntityNotFound(_0x337581,null))[_0x4507('0x23')](respondWithResult(_0x337581,null))[_0x4507('0x43')](handleError(_0x337581,null));};exports[_0x4507('0x48')]=function(_0x136fe5,_0x3c2ea6){return db[_0x4507('0x2d')][_0x4507('0x48')](_0x136fe5[_0x4507('0x49')],{})[_0x4507('0x23')](function(_0x2e2ea3){var _0xcceafb=_0x136fe5['user'][_0x4507('0x25')]({'plain':!![]});if(!_0xcceafb)throw new Error(_0x4507('0x4a'));if(_0xcceafb[_0x4507('0x4b')]===_0x4507('0x4c')){var _0x3f846f=_0x2e2ea3[_0x4507('0x25')]({'plain':!![]});var _0x535b5e='Projects';return db[_0x4507('0x4d')][_0x4507('0x47')]({'where':{'name':_0x535b5e,'userProfileId':_0xcceafb['userProfileId']},'raw':!![]})[_0x4507('0x23')](function(_0x3f81eb){if(_0x3f81eb&&_0x3f81eb[_0x4507('0x4e')]===0x0){return db[_0x4507('0x4f')]['create']({'name':_0x3f846f[_0x4507('0x2a')],'resourceId':_0x3f846f['id'],'type':_0x3f81eb['name'],'sectionId':_0x3f81eb['id']},{})['then'](function(){return _0x2e2ea3;});}else{return _0x2e2ea3;}})['catch'](function(_0x5df3f1){logger['error'](_0x4507('0x50'),_0x5df3f1);throw _0x5df3f1;});}return _0x2e2ea3;})[_0x4507('0x23')](respondWithResult(_0x3c2ea6,0xc9))[_0x4507('0x43')](handleError(_0x3c2ea6,null));};exports[_0x4507('0x51')]=function(_0x165683,_0x3a898b){var _0x2e1007={'where':{'id':_0x165683['params']['id']}},_0x3e813c={};_0x3e813c[_0x4507('0x30')]=_['keys'](db[_0x4507('0x2d')][_0x4507('0x52')]);_0x2e1007['attributes']=_['intersection'](_0x3e813c['model'],qs[_0x4507('0x34')](_0x165683[_0x4507('0x31')][_0x4507('0x34')]));_0x2e1007[_0x4507('0x35')]=_0x2e1007[_0x4507('0x35')]['length']?_0x2e1007[_0x4507('0x35')]:_0x3e813c[_0x4507('0x30')];if(_0x165683[_0x4507('0x31')]['includeAll']){_0x2e1007['include']=[{'all':!![]}];}_0x2e1007=_[_0x4507('0x3d')]({},_0x2e1007,_0x165683['options']);return db[_0x4507('0x2d')][_0x4507('0x47')](_0x2e1007)[_0x4507('0x23')](handleEntityNotFound(_0x3a898b,null))['then'](function(_0x2dc85a){if(_0x2dc85a){var _0x41690e=_0x2dc85a['get']({'plain':!![]});_0x41690e=qs['omit'](_0x41690e,['id',_0x4507('0x53'),_0x4507('0x54')]);_0x165683[_0x4507('0x49')]=_['omit'](_0x165683['body'],['id',_0x4507('0x53'),_0x4507('0x54')]);return db[_0x4507('0x2d')][_0x4507('0x48')](_[_0x4507('0x3d')](_0x41690e,_0x165683[_0x4507('0x49')]),{'include':_0x165683['query'][_0x4507('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0xac0e54){var _0x1dd12f=_0x165683[_0x4507('0x4c')][_0x4507('0x25')]({'plain':!![]});if(!_0x1dd12f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1dd12f['role']===_0x4507('0x4c')){var _0x19ae0a=_0xac0e54[_0x4507('0x25')]({'plain':!![]});var _0x3339f3='Projects';return db[_0x4507('0x4d')][_0x4507('0x47')]({'where':{'name':_0x3339f3,'userProfileId':_0x1dd12f['userProfileId']},'raw':!![]})[_0x4507('0x23')](function(_0x3cd835){if(_0x3cd835&&_0x3cd835[_0x4507('0x4e')]===0x0){return db[_0x4507('0x4f')][_0x4507('0x48')]({'name':_0x19ae0a[_0x4507('0x2a')],'resourceId':_0x19ae0a['id'],'type':_0x3cd835[_0x4507('0x2a')],'sectionId':_0x3cd835['id']},{})[_0x4507('0x23')](function(){return _0xac0e54;});}else{return _0xac0e54;}})['catch'](function(_0x4a51bf){logger[_0x4507('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a51bf);throw _0x4a51bf;});}return _0xac0e54;});}})[_0x4507('0x23')](respondWithResult(_0x3a898b,0xc9))[_0x4507('0x43')](handleError(_0x3a898b,null));};exports[_0x4507('0x22')]=function(_0x2d1dfd,_0x30229d){if(_0x2d1dfd[_0x4507('0x49')]['id']){delete _0x2d1dfd['body']['id'];}return db[_0x4507('0x2d')][_0x4507('0x47')]({'where':{'id':_0x2d1dfd[_0x4507('0x55')]['id']}})[_0x4507('0x23')](handleEntityNotFound(_0x30229d,null))[_0x4507('0x23')](saveUpdates(_0x2d1dfd[_0x4507('0x49')],null))[_0x4507('0x23')](respondWithResult(_0x30229d,null))[_0x4507('0x43')](handleError(_0x30229d,null));};exports[_0x4507('0x24')]=function(_0x4c1448,_0x58240c){return db['JscriptyProject'][_0x4507('0x47')]({'where':{'id':_0x4c1448[_0x4507('0x55')]['id']}})['then'](handleEntityNotFound(_0x58240c,null))['then'](removeEntity(_0x58240c,null))[_0x4507('0x43')](handleError(_0x58240c,null));};exports['getSessions']=function(_0x5eb699,_0x151924,_0x37e235){var _0x26c44c={'raw':!![],'where':{}};var _0x40a233={};var _0x4a5b72={'count':0x0,'rows':[]};return db[_0x4507('0x2d')][_0x4507('0x56')]({'where':{'id':_0x5eb699[_0x4507('0x55')]['id']}})['then'](handleEntityNotFound(_0x151924,null))['then'](function(_0x47b51a){if(_0x47b51a){_0x40a233[_0x4507('0x30')]=_[_0x4507('0x45')](db[_0x4507('0x57')][_0x4507('0x52')]);_0x40a233[_0x4507('0x31')]=_[_0x4507('0x45')](_0x5eb699[_0x4507('0x31')]);_0x40a233[_0x4507('0x32')]=_[_0x4507('0x33')](_0x40a233[_0x4507('0x30')],_0x40a233[_0x4507('0x31')]);_0x26c44c[_0x4507('0x35')]=_[_0x4507('0x33')](_0x40a233[_0x4507('0x30')],qs[_0x4507('0x34')](_0x5eb699[_0x4507('0x31')][_0x4507('0x34')]));_0x26c44c[_0x4507('0x35')]=_0x26c44c[_0x4507('0x35')][_0x4507('0x36')]?_0x26c44c['attributes']:_0x40a233[_0x4507('0x30')];if(!_0x5eb699[_0x4507('0x31')][_0x4507('0x37')](_0x4507('0x38'))){_0x26c44c[_0x4507('0x1b')]=qs[_0x4507('0x1b')](_0x5eb699[_0x4507('0x31')][_0x4507('0x1b')]);_0x26c44c[_0x4507('0x1a')]=qs[_0x4507('0x1a')](_0x5eb699[_0x4507('0x31')][_0x4507('0x1a')]);}_0x26c44c[_0x4507('0x39')]=qs['sort'](_0x5eb699[_0x4507('0x31')][_0x4507('0x3a')]);_0x26c44c['where']=qs[_0x4507('0x32')](_[_0x4507('0x3b')](_0x5eb699[_0x4507('0x31')],_0x40a233[_0x4507('0x32')]));_0x26c44c[_0x4507('0x3e')]['ProjectId']=_0x47b51a['id'];if(_0x5eb699[_0x4507('0x31')][_0x4507('0x3c')]){_0x26c44c[_0x4507('0x3e')]=_[_0x4507('0x3d')](_0x26c44c[_0x4507('0x3e')],{'$or':_[_0x4507('0x2c')](_0x26c44c[_0x4507('0x35')],function(_0x5c77ec){var _0x4d2acd={};_0x4d2acd[_0x5c77ec]={'$like':'%'+_0x5eb699[_0x4507('0x31')][_0x4507('0x3c')]+'%'};return _0x4d2acd;})});}_0x26c44c=_[_0x4507('0x3d')]({},_0x26c44c,_0x5eb699[_0x4507('0x41')]);return db[_0x4507('0x57')][_0x4507('0x1c')]({'where':_0x26c44c[_0x4507('0x3e')]})['then'](function(_0x3dd2cb){_0x4a5b72[_0x4507('0x1c')]=_0x3dd2cb;if(_0x5eb699[_0x4507('0x31')][_0x4507('0x42')]){_0x26c44c[_0x4507('0x46')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x26c44c);})[_0x4507('0x23')](function(_0xadaac9){_0x4a5b72[_0x4507('0x58')]=_0xadaac9;return _0x4a5b72;});}})[_0x4507('0x23')](respondWithFilteredResult(_0x151924,_0x26c44c))[_0x4507('0x43')](handleError(_0x151924,null));};exports['getAnswers']=function(_0x4abd1f,_0x4b3299,_0x151c65){var _0x1a71b8={'raw':!![],'where':{}};var _0x1a2146={};var _0x1bbb32={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x4507('0x56')]({'where':{'id':_0x4abd1f[_0x4507('0x55')]['id']}})[_0x4507('0x23')](handleEntityNotFound(_0x4b3299,null))[_0x4507('0x23')](function(_0x4ef82f){if(_0x4ef82f){_0x1a2146['model']=_[_0x4507('0x45')](db[_0x4507('0x59')][_0x4507('0x52')]);_0x1a2146[_0x4507('0x31')]=_[_0x4507('0x45')](_0x4abd1f['query']);_0x1a2146['filters']=_[_0x4507('0x33')](_0x1a2146[_0x4507('0x30')],_0x1a2146[_0x4507('0x31')]);_0x1a71b8[_0x4507('0x35')]=_[_0x4507('0x33')](_0x1a2146[_0x4507('0x30')],qs['fields'](_0x4abd1f[_0x4507('0x31')]['fields']));_0x1a71b8['attributes']=_0x1a71b8[_0x4507('0x35')][_0x4507('0x36')]?_0x1a71b8['attributes']:_0x1a2146[_0x4507('0x30')];if(!_0x4abd1f[_0x4507('0x31')][_0x4507('0x37')]('nolimit')){_0x1a71b8[_0x4507('0x1b')]=qs['limit'](_0x4abd1f[_0x4507('0x31')][_0x4507('0x1b')]);_0x1a71b8[_0x4507('0x1a')]=qs[_0x4507('0x1a')](_0x4abd1f['query'][_0x4507('0x1a')]);}_0x1a71b8[_0x4507('0x39')]=qs[_0x4507('0x3a')](_0x4abd1f[_0x4507('0x31')]['sort']);_0x1a71b8['where']=qs[_0x4507('0x32')](_[_0x4507('0x3b')](_0x4abd1f['query'],_0x1a2146[_0x4507('0x32')]));_0x1a71b8['where'][_0x4507('0x5a')]=_0x4ef82f['id'];if(_0x4abd1f[_0x4507('0x31')][_0x4507('0x3c')]){_0x1a71b8['where']=_[_0x4507('0x3d')](_0x1a71b8[_0x4507('0x3e')],{'$or':_[_0x4507('0x2c')](_0x1a71b8[_0x4507('0x35')],function(_0x7f96b){var _0x211b4d={};_0x211b4d[_0x7f96b]={'$like':'%'+_0x4abd1f[_0x4507('0x31')][_0x4507('0x3c')]+'%'};return _0x211b4d;})});}_0x1a71b8=_[_0x4507('0x3d')]({},_0x1a71b8,_0x4abd1f['options']);return db['JscriptyAnswerReport'][_0x4507('0x1c')]({'where':_0x1a71b8['where']})[_0x4507('0x23')](function(_0x20d1c7){_0x1bbb32['count']=_0x20d1c7;if(_0x4abd1f['query'][_0x4507('0x42')]){_0x1a71b8[_0x4507('0x46')]=[{'all':!![]}];}return db[_0x4507('0x59')][_0x4507('0x5b')](_0x1a71b8);})[_0x4507('0x23')](function(_0x2be177){_0x1bbb32[_0x4507('0x58')]=_0x2be177;return _0x1bbb32;});}})['then'](respondWithFilteredResult(_0x4b3299,_0x1a71b8))[_0x4507('0x43')](handleError(_0x4b3299,null));};function char(_0x5c2429){return'number'===typeof _0x5c2429?String[_0x4507('0x5c')]['apply'](null,arguments):_0x5c2429;}function needsEncapsulation(_0x486445){return!!_0x486445&&(_0x486445[_0x4507('0x5d')]()[_0x4507('0x5e')](char(0xd))>=0x0||_0x486445[_0x4507('0x5d')]()[_0x4507('0x5e')](char(0xa))>=0x0||_0x486445[_0x4507('0x5d')]()[_0x4507('0x5e')](char(0x2c))>=0x0||_0x486445[_0x4507('0x5d')]()[_0x4507('0x5e')](char(0x22))>=0x0);}function encapsulate(_0x1601f1){var _0x26ce8f=char(0x22),_0x46472a='\x5c'+char(0x22),_0x93651d=_0x1601f1[_0x4507('0x5d')]()['replace'](new RegExp(_0x26ce8f,'g'),_0x46472a);return _0x26ce8f+_0x93651d+_0x26ce8f;}exports[_0x4507('0x5f')]=function(_0x4de122,_0x2adfd3,_0x1fa893){var _0x1577a0,_0x24ae92;var _0x18cbb2={'where':{'ProjectId':_0x4de122[_0x4507('0x55')]['id']}};if(_0x4de122['query']['startTime']){_0x18cbb2['where'][_0x4507('0x60')]=JSON[_0x4507('0x61')](_0x4de122[_0x4507('0x31')][_0x4507('0x62')]);}return db[_0x4507('0x57')][_0x4507('0x5b')](_0x18cbb2)[_0x4507('0x23')](handleEntityNotFound(_0x2adfd3,null))[_0x4507('0x23')](function(_0x324767){if(_0x324767){_0x1577a0=_0x324767;return db[_0x4507('0x63')]['findAll']({'where':{'SessionId':{'$in':_[_0x4507('0x2c')](_0x1577a0,'id')},'ProjectId':_0x4de122[_0x4507('0x55')]['id']},'order':'-createdAt'});}})[_0x4507('0x23')](handleEntityNotFound(_0x2adfd3,null))[_0x4507('0x23')](function(_0x5d5597){if(_0x5d5597){_0x24ae92=_0x5d5597;var _0x4f8111={};for(var _0x415fc6=0x0,_0x394d1b=_0x24ae92[_0x4507('0x36')];_0x415fc6<_0x394d1b;_0x415fc6++){if(!_0x4f8111[_0x4507('0x37')](_0x24ae92[_0x415fc6]['questionId'])){_0x4f8111[_0x24ae92[_0x415fc6][_0x4507('0x64')]]=needsEncapsulation(_0x24ae92[_0x415fc6]['question'])?encapsulate(_0x24ae92[_0x415fc6][_0x4507('0x65')]):_0x24ae92[_0x415fc6][_0x4507('0x65')];}}var _0x5e87da=[],_0x1dc7dd={};for(var _0x19085b=0x0,_0x3d0868=_0x1577a0['length'];_0x19085b<_0x3d0868;_0x19085b++){_0x1dc7dd={'ProjectId':_0x4de122[_0x4507('0x55')]['id'],'SessionId':_0x1577a0[_0x19085b]['id'],'StartTime':moment(_0x1577a0[_0x19085b]['starttime'])[_0x4507('0x66')](_0x4507('0x67'))};for(var _0x3c9088=0x0,_0x4e1449=_0x24ae92['length'];_0x3c9088<_0x4e1449;_0x3c9088++){if(_0x24ae92[_0x3c9088][_0x4507('0x68')]==_0x1577a0[_0x19085b]['id']&&_0x4f8111[_0x4507('0x37')](_0x24ae92[_0x3c9088][_0x4507('0x64')])){_0x1dc7dd[_0x4f8111[_0x24ae92[_0x3c9088][_0x4507('0x64')]]]=_0x24ae92[_0x3c9088][_0x4507('0x69')];}}for(var _0x246346 in _0x4f8111){if(!_0x1dc7dd[_0x4507('0x37')](_0x4f8111[_0x246346])){_0x1dc7dd[_0x4f8111[_0x246346]]=null;}}_0x5e87da[_0x4507('0x6a')](_0x1dc7dd);}return _0x5e87da;}})['then'](function(_0x80429a){if(!_[_0x4507('0x6b')](_0x80429a)){var _0x30a761=toCsv(_0x80429a);var _0x1fcafa=Date[_0x4507('0x6c')]();fs[_0x4507('0x6d')](util[_0x4507('0x66')](_0x4507('0x6e'),_0x4de122[_0x4507('0x55')]['id'],_0x1fcafa),_0x30a761);_0x2adfd3['setHeader'](_0x4507('0x6f'),_0x4507('0x70')+util['format']('Jscripty_Project_%d_Summary_%s.csv',_0x4de122[_0x4507('0x55')]['id'],_0x1fcafa));_0x2adfd3['setHeader'](_0x4507('0x71'),_0x4507('0x72'));return _0x2adfd3['download'](util[_0x4507('0x66')](_0x4507('0x6e'),_0x4de122[_0x4507('0x55')]['id'],_0x1fcafa));}else{return _0x2adfd3[_0x4507('0x18')](0xcc);}})[_0x4507('0x43')](handleError(_0x2adfd3,null));};
\ No newline at end of file
index 7ee8d46..817a0ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af0=['moment','bluebird','request-promise','path','../../config/environment','exports','JscriptyProject','lodash','util','../../config/logger','api'];(function(_0x499ceb,_0x5cef3f){var _0x3154e8=function(_0x6b1278){while(--_0x6b1278){_0x499ceb['push'](_0x499ceb['shift']());}};_0x3154e8(++_0x5cef3f);}(_0x5af0,0x1eb));var _0x05af=function(_0x118d72,_0xbfda49){_0x118d72=_0x118d72-0x0;var _0x576512=_0x5af0[_0x118d72];return _0x576512;};'use strict';var _=require(_0x05af('0x0'));var util=require(_0x05af('0x1'));var logger=require(_0x05af('0x2'))(_0x05af('0x3'));var moment=require(_0x05af('0x4'));var BPromise=require(_0x05af('0x5'));var rp=require(_0x05af('0x6'));var fs=require('fs');var path=require(_0x05af('0x7'));var rimraf=require('rimraf');var config=require(_0x05af('0x8'));var attributes=require('./jscriptyProject.attributes');module[_0x05af('0x9')]=function(_0x27a3e2,_0x2a8ef6){return _0x27a3e2['define'](_0x05af('0xa'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x23f4=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','util'];(function(_0x22420f,_0x2a1dad){var _0x31f7dd=function(_0x293125){while(--_0x293125){_0x22420f['push'](_0x22420f['shift']());}};_0x31f7dd(++_0x2a1dad);}(_0x23f4,0x1ee));var _0x423f=function(_0x1b259a,_0x554793){_0x1b259a=_0x1b259a-0x0;var _0xcb599=_0x23f4[_0x1b259a];return _0xcb599;};'use strict';var _=require('lodash');var util=require(_0x423f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x423f('0x1'));var BPromise=require(_0x423f('0x2'));var rp=require(_0x423f('0x3'));var fs=require('fs');var path=require(_0x423f('0x4'));var rimraf=require(_0x423f('0x5'));var config=require(_0x423f('0x6'));var attributes=require(_0x423f('0x7'));module[_0x423f('0x8')]=function(_0x34a2d9,_0x51066b){return _0x34a2d9[_0x423f('0x9')](_0x423f('0xa'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 166e900..9ac1a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['code','message','JscriptyProject,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x34ea72,_0x1649c0){var _0x5ea8cc=function(_0x5c7f38){while(--_0x5c7f38){_0x34ea72['push'](_0x34ea72['shift']());}};_0x5ea8cc(++_0x1649c0);}(_0x9bde,0xe1));var _0xe9bd=function(_0xadcf5f,_0x15f41c){_0xadcf5f=_0xadcf5f-0x0;var _0xb3206=_0x9bde[_0xadcf5f];return _0xb3206;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
+var _0xaa88=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','error','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x2652e9,_0x1b1faa){var _0x30652e=function(_0x4d8edf){while(--_0x4d8edf){_0x2652e9['push'](_0x2652e9['shift']());}};_0x30652e(++_0x1b1faa);}(_0xaa88,0x137));var _0x8aa8=function(_0x2cc594,_0x4d727b){_0x2cc594=_0x2cc594-0x0;var _0x4abff7=_0xaa88[_0x2cc594];return _0x4abff7;};'use strict';var _=require(_0x8aa8('0x0'));var util=require(_0x8aa8('0x1'));var moment=require(_0x8aa8('0x2'));var BPromise=require(_0x8aa8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8aa8('0x4'));var db=require(_0x8aa8('0x5'))['db'];var utils=require(_0x8aa8('0x6'));var logger=require(_0x8aa8('0x7'))(_0x8aa8('0x8'));var config=require(_0x8aa8('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8aa8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5264ff,_0x449d2d,_0x1ed84d){return new BPromise(function(_0x27c08d,_0x40826f){return client['request'](_0x5264ff,_0x1ed84d)[_0x8aa8('0xb')](function(_0x2d974c){logger[_0x8aa8('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x8aa8('0xd'));logger[_0x8aa8('0xe')](_0x8aa8('0xf'),_0x449d2d,_0x8aa8('0xd'),JSON['stringify'](_0x2d974c));if(_0x2d974c[_0x8aa8('0x10')]){if(_0x2d974c[_0x8aa8('0x10')]['code']===0x1f4){logger[_0x8aa8('0x10')](_0x8aa8('0x11'),_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x40826f(_0x2d974c[_0x8aa8('0x10')][_0x8aa8('0x12')]);}logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x27c08d(_0x2d974c['error'][_0x8aa8('0x12')]);}else{logger[_0x8aa8('0xc')](_0x8aa8('0x11'),_0x449d2d,_0x8aa8('0xd'));_0x27c08d(_0x2d974c[_0x8aa8('0x13')][_0x8aa8('0x12')]);}})[_0x8aa8('0x14')](function(_0xd59fb8){logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0xd59fb8);_0x40826f(_0xd59fb8);});});}
\ No newline at end of file
index e59f611..d45ce50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffe9=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x5a614e,_0x149f7f){var _0x48f89f=function(_0x49c6ac){while(--_0x49c6ac){_0x5a614e['push'](_0x5a614e['shift']());}};_0x48f89f(++_0x149f7f);}(_0xffe9,0x9a));var _0x9ffe=function(_0x614ef4,_0x28a060){_0x614ef4=_0x614ef4-0x0;var _0x35e8e2=_0xffe9[_0x614ef4];return _0x35e8e2;};'use strict';var multer=require(_0x9ffe('0x0'));var util=require('util');var path=require(_0x9ffe('0x1'));var timeout=require(_0x9ffe('0x2'));var express=require(_0x9ffe('0x3'));var router=express[_0x9ffe('0x4')]();var fs_extra=require(_0x9ffe('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9ffe('0x6'));var config=require(_0x9ffe('0x7'));var controller=require('./jscriptyQuestionReport.controller');router[_0x9ffe('0x8')]('/',auth[_0x9ffe('0x9')](),controller[_0x9ffe('0xa')]);router['get']('/describe',auth[_0x9ffe('0x9')](),controller[_0x9ffe('0xb')]);router[_0x9ffe('0x8')](_0x9ffe('0xc'),auth[_0x9ffe('0x9')](),controller[_0x9ffe('0xd')]);router[_0x9ffe('0xe')]('/',auth[_0x9ffe('0x9')](),controller[_0x9ffe('0xf')]);router[_0x9ffe('0x10')]('/:id',auth[_0x9ffe('0x9')](),controller[_0x9ffe('0x11')]);router[_0x9ffe('0x12')](_0x9ffe('0xc'),auth['isAuthenticated'](),controller[_0x9ffe('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xf95e=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','post','/:id','update','destroy','exports','multer','util'];(function(_0x81ec17,_0x592c0c){var _0x100bc1=function(_0x5e22da){while(--_0x5e22da){_0x81ec17['push'](_0x81ec17['shift']());}};_0x100bc1(++_0x592c0c);}(_0xf95e,0x18a));var _0xef95=function(_0x5628cd,_0x45a88a){_0x5628cd=_0x5628cd-0x0;var _0x57d6d6=_0xf95e[_0x5628cd];return _0x57d6d6;};'use strict';var multer=require(_0xef95('0x0'));var util=require(_0xef95('0x1'));var path=require(_0xef95('0x2'));var timeout=require(_0xef95('0x3'));var express=require('express');var router=express[_0xef95('0x4')]();var fs_extra=require(_0xef95('0x5'));var auth=require(_0xef95('0x6'));var interaction=require(_0xef95('0x7'));var config=require(_0xef95('0x8'));var controller=require('./jscriptyQuestionReport.controller');router[_0xef95('0x9')]('/',auth[_0xef95('0xa')](),controller[_0xef95('0xb')]);router[_0xef95('0x9')](_0xef95('0xc'),auth[_0xef95('0xa')](),controller['describe']);router[_0xef95('0x9')]('/:id',auth[_0xef95('0xa')](),controller['show']);router[_0xef95('0xd')]('/',auth[_0xef95('0xa')](),controller['create']);router['put'](_0xef95('0xe'),auth[_0xef95('0xa')](),controller[_0xef95('0xf')]);router['delete'](_0xef95('0xe'),auth[_0xef95('0xa')](),controller[_0xef95('0x10')]);module[_0xef95('0x11')]=router;
\ No newline at end of file
index 71a85be..8144628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x7a54,0x106));var _0x47a5=function(_0x389163,_0x4ea969){_0x389163=_0x389163-0x0;var _0x47966a=_0x7a54[_0x389163];return _0x47966a;};'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(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x7a54,0x106));var _0x47a5=function(_0x54fc0d,_0x4514dc){_0x54fc0d=_0x54fc0d-0x0;var _0x1cad96=_0x7a54[_0x54fc0d];return _0x1cad96;};'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 1c76698..f284518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18f6=['catch','show','include','options','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','save','update','then','destroy','error','stack','name','index','map','rawAttributes','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','JscriptyQuestionReport','includeAll','findAll'];(function(_0x3189f7,_0x553d1a){var _0x45aba8=function(_0xadf530){while(--_0xadf530){_0x3189f7['push'](_0x3189f7['shift']());}};_0x45aba8(++_0x553d1a);}(_0x18f6,0x180));var _0x618f=function(_0x2b25c2,_0x3437cd){_0x2b25c2=_0x2b25c2-0x0;var _0x41c553=_0x18f6[_0x2b25c2];return _0x41c553;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x618f('0x0'));var zipdir=require(_0x618f('0x1'));var jsonpatch=require(_0x618f('0x2'));var rp=require('request-promise');var moment=require(_0x618f('0x3'));var BPromise=require(_0x618f('0x4'));var Mustache=require(_0x618f('0x5'));var util=require(_0x618f('0x6'));var path=require(_0x618f('0x7'));var sox=require(_0x618f('0x8'));var csv=require(_0x618f('0x9'));var ejs=require(_0x618f('0xa'));var fs=require('fs');var fs_extra=require(_0x618f('0xb'));var _=require(_0x618f('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x618f('0xd'));var deskjs=require(_0x618f('0xe'));var toCsv=require(_0x618f('0x9'));var querystring=require(_0x618f('0xf'));var Papa=require(_0x618f('0x10'));var Redis=require('ioredis');var authService=require(_0x618f('0x11'));var qs=require(_0x618f('0x12'));var as=require(_0x618f('0x13'));var hardwareService=require(_0x618f('0x14'));var logger=require('../../config/logger')(_0x618f('0x15'));var utils=require(_0x618f('0x16'));var config=require(_0x618f('0x17'));var licenseUtil=require(_0x618f('0x18'));var db=require(_0x618f('0x19'))['db'];function respondWithStatusCode(_0x375fde,_0x218bbc){_0x218bbc=_0x218bbc||0xcc;return function(_0x53935c){if(_0x53935c){return _0x375fde[_0x618f('0x1a')](_0x218bbc);}return _0x375fde['status'](_0x218bbc)[_0x618f('0x1b')]();};}function respondWithResult(_0x1d50e5,_0x5633e8){_0x5633e8=_0x5633e8||0xc8;return function(_0x4ab31b){if(_0x4ab31b){return _0x1d50e5['status'](_0x5633e8)[_0x618f('0x1c')](_0x4ab31b);}};}function respondWithFilteredResult(_0x135049,_0x104d84){return function(_0x24b13b){if(_0x24b13b){var _0x4ab4ae=typeof _0x104d84[_0x618f('0x1d')]===_0x618f('0x1e')&&typeof _0x104d84[_0x618f('0x1f')]==='undefined';var _0x43595b=_0x24b13b[_0x618f('0x20')];var _0x412745=_0x4ab4ae?0x0:_0x104d84[_0x618f('0x1d')];var _0x6b61b5=_0x4ab4ae?_0x24b13b['count']:_0x104d84['offset']+_0x104d84['limit'];var _0xfab2a1;if(_0x6b61b5>=_0x43595b){_0x6b61b5=_0x43595b;_0xfab2a1=0xc8;}else{_0xfab2a1=0xce;}_0x135049[_0x618f('0x21')](_0xfab2a1);return _0x135049[_0x618f('0x22')](_0x618f('0x23'),_0x412745+'-'+_0x6b61b5+'/'+_0x43595b)[_0x618f('0x1c')](_0x24b13b);}return null;};}function patchUpdates(_0x2e4ce8){return function(_0x1a1101){try{jsonpatch['apply'](_0x1a1101,_0x2e4ce8,!![]);}catch(_0x347dfc){return BPromise['reject'](_0x347dfc);}return _0x1a1101[_0x618f('0x24')]();};}function saveUpdates(_0x402d43,_0x2bfb2a){return function(_0x36625a){if(_0x36625a){return _0x36625a[_0x618f('0x25')](_0x402d43)[_0x618f('0x26')](function(_0x39025b){return _0x39025b;});}return null;};}function removeEntity(_0x540da5,_0x5933c5){return function(_0x17d0c5){if(_0x17d0c5){return _0x17d0c5[_0x618f('0x27')]()[_0x618f('0x26')](function(){_0x540da5['status'](0xcc)[_0x618f('0x1b')]();});}};}function handleEntityNotFound(_0x301838,_0x201cfd){return function(_0x39ce55){if(!_0x39ce55){_0x301838[_0x618f('0x1a')](0x194);}return _0x39ce55;};}function handleError(_0x317074,_0x1a50a0){_0x1a50a0=_0x1a50a0||0x1f4;return function(_0x4c7d33){logger[_0x618f('0x28')](_0x4c7d33[_0x618f('0x29')]);if(_0x4c7d33[_0x618f('0x2a')]){delete _0x4c7d33[_0x618f('0x2a')];}_0x317074[_0x618f('0x21')](_0x1a50a0)['send'](_0x4c7d33);};}exports[_0x618f('0x2b')]=function(_0x186513,_0xa8a095){var _0x538acb={},_0xed641d={},_0x3a248c={'count':0x0,'rows':[]};var _0x2c2231=_[_0x618f('0x2c')](db['JscriptyQuestionReport'][_0x618f('0x2d')],function(_0x57dbac){return{'name':_0x57dbac['fieldName'],'type':_0x57dbac[_0x618f('0x2e')][_0x618f('0x2f')]};});_0xed641d['model']=_[_0x618f('0x2c')](_0x2c2231,_0x618f('0x2a'));_0xed641d[_0x618f('0x30')]=_[_0x618f('0x31')](_0x186513[_0x618f('0x30')]);_0xed641d['filters']=_[_0x618f('0x32')](_0xed641d[_0x618f('0x33')],_0xed641d[_0x618f('0x30')]);_0x538acb[_0x618f('0x34')]=_[_0x618f('0x32')](_0xed641d[_0x618f('0x33')],qs['fields'](_0x186513[_0x618f('0x30')][_0x618f('0x35')]));_0x538acb[_0x618f('0x34')]=_0x538acb[_0x618f('0x34')]['length']?_0x538acb['attributes']:_0xed641d[_0x618f('0x33')];if(!_0x186513[_0x618f('0x30')][_0x618f('0x36')](_0x618f('0x37'))){_0x538acb[_0x618f('0x1f')]=qs[_0x618f('0x1f')](_0x186513[_0x618f('0x30')][_0x618f('0x1f')]);_0x538acb[_0x618f('0x1d')]=qs[_0x618f('0x1d')](_0x186513[_0x618f('0x30')][_0x618f('0x1d')]);}_0x538acb[_0x618f('0x38')]=qs[_0x618f('0x39')](_0x186513[_0x618f('0x30')][_0x618f('0x39')]);_0x538acb[_0x618f('0x3a')]=qs[_0x618f('0x3b')](_['pick'](_0x186513[_0x618f('0x30')],_0xed641d[_0x618f('0x3b')]),_0x2c2231);if(_0x186513[_0x618f('0x30')][_0x618f('0x3c')]){_0x538acb[_0x618f('0x3a')]=_[_0x618f('0x3d')](_0x538acb[_0x618f('0x3a')],{'$or':_['map'](_0x2c2231,function(_0x28bc74){if(_0x28bc74['type']!==_0x618f('0x3e')){var _0x308746={};_0x308746[_0x28bc74[_0x618f('0x2a')]]={'$like':'%'+_0x186513[_0x618f('0x30')][_0x618f('0x3c')]+'%'};return _0x308746;}})});}_0x538acb=_['merge']({},_0x538acb,_0x186513['options']);var _0x28b68f={'where':_0x538acb[_0x618f('0x3a')]};return db[_0x618f('0x3f')][_0x618f('0x20')](_0x28b68f)['then'](function(_0x12ec71){_0x3a248c[_0x618f('0x20')]=_0x12ec71;if(_0x186513[_0x618f('0x30')][_0x618f('0x40')]){_0x538acb['include']=[{'all':!![]}];}return db[_0x618f('0x3f')][_0x618f('0x41')](_0x538acb);})[_0x618f('0x26')](function(_0x2421c9){_0x3a248c['rows']=_0x2421c9;return _0x3a248c;})['then'](respondWithFilteredResult(_0xa8a095,_0x538acb))[_0x618f('0x42')](handleError(_0xa8a095,null));};exports[_0x618f('0x43')]=function(_0x298cd8,_0x15ee34){var _0x162a18={'raw':!![],'where':{'id':_0x298cd8['params']['id']}},_0xfb1823={};_0xfb1823[_0x618f('0x33')]=_['keys'](db['JscriptyQuestionReport'][_0x618f('0x2d')]);_0xfb1823[_0x618f('0x30')]=_[_0x618f('0x31')](_0x298cd8[_0x618f('0x30')]);_0xfb1823[_0x618f('0x3b')]=_[_0x618f('0x32')](_0xfb1823[_0x618f('0x33')],_0xfb1823[_0x618f('0x30')]);_0x162a18[_0x618f('0x34')]=_[_0x618f('0x32')](_0xfb1823[_0x618f('0x33')],qs[_0x618f('0x35')](_0x298cd8['query'][_0x618f('0x35')]));_0x162a18[_0x618f('0x34')]=_0x162a18[_0x618f('0x34')]['length']?_0x162a18[_0x618f('0x34')]:_0xfb1823[_0x618f('0x33')];if(_0x298cd8[_0x618f('0x30')][_0x618f('0x40')]){_0x162a18[_0x618f('0x44')]=[{'all':!![]}];}_0x162a18=_[_0x618f('0x3d')]({},_0x162a18,_0x298cd8[_0x618f('0x45')]);return db['JscriptyQuestionReport'][_0x618f('0x46')](_0x162a18)[_0x618f('0x26')](handleEntityNotFound(_0x15ee34,null))[_0x618f('0x26')](respondWithResult(_0x15ee34,null))['catch'](handleError(_0x15ee34,null));};exports[_0x618f('0x47')]=function(_0x3dd5ae,_0x4f9d49){return db[_0x618f('0x3f')][_0x618f('0x47')](_0x3dd5ae['body'],{})[_0x618f('0x26')](respondWithResult(_0x4f9d49,0xc9))['catch'](handleError(_0x4f9d49,null));};exports[_0x618f('0x25')]=function(_0x5553e8,_0x26c121){if(_0x5553e8[_0x618f('0x48')]['id']){delete _0x5553e8[_0x618f('0x48')]['id'];}return db[_0x618f('0x3f')][_0x618f('0x46')]({'where':{'id':_0x5553e8[_0x618f('0x49')]['id']}})[_0x618f('0x26')](handleEntityNotFound(_0x26c121,null))[_0x618f('0x26')](saveUpdates(_0x5553e8[_0x618f('0x48')],null))[_0x618f('0x26')](respondWithResult(_0x26c121,null))[_0x618f('0x42')](handleError(_0x26c121,null));};exports[_0x618f('0x27')]=function(_0x561602,_0x59921c){return db['JscriptyQuestionReport']['find']({'where':{'id':_0x561602['params']['id']}})[_0x618f('0x26')](handleEntityNotFound(_0x59921c,null))[_0x618f('0x26')](removeEntity(_0x59921c,null))[_0x618f('0x42')](handleError(_0x59921c,null));};exports[_0x618f('0x4a')]=function(_0xee6760,_0x4f84ad){return db['JscriptyQuestionReport'][_0x618f('0x4a')]()['then'](respondWithResult(_0x4f84ad,null))[_0x618f('0x42')](handleError(_0x4f84ad,null));};
\ No newline at end of file
+var _0xf3d8=['query','intersection','attributes','fields','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','catch','params','length','includeAll','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','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/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model'];(function(_0x3659e0,_0x364f9a){var _0x21d0ab=function(_0x2efd4f){while(--_0x2efd4f){_0x3659e0['push'](_0x3659e0['shift']());}};_0x21d0ab(++_0x364f9a);}(_0xf3d8,0x198));var _0x8f3d=function(_0x9d1e6b,_0x3bdc22){_0x9d1e6b=_0x9d1e6b-0x0;var _0x2b3070=_0xf3d8[_0x9d1e6b];return _0x2b3070;};'use strict';var emlformat=require(_0x8f3d('0x0'));var rimraf=require(_0x8f3d('0x1'));var zipdir=require(_0x8f3d('0x2'));var jsonpatch=require(_0x8f3d('0x3'));var rp=require(_0x8f3d('0x4'));var moment=require(_0x8f3d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8f3d('0x6'));var util=require('util');var path=require(_0x8f3d('0x7'));var sox=require(_0x8f3d('0x8'));var csv=require(_0x8f3d('0x9'));var ejs=require(_0x8f3d('0xa'));var fs=require('fs');var fs_extra=require(_0x8f3d('0xb'));var _=require(_0x8f3d('0xc'));var squel=require(_0x8f3d('0xd'));var crypto=require(_0x8f3d('0xe'));var jsforce=require(_0x8f3d('0xf'));var deskjs=require(_0x8f3d('0x10'));var toCsv=require(_0x8f3d('0x9'));var querystring=require(_0x8f3d('0x11'));var Papa=require(_0x8f3d('0x12'));var Redis=require(_0x8f3d('0x13'));var authService=require(_0x8f3d('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x8f3d('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8f3d('0x16'));var utils=require(_0x8f3d('0x17'));var config=require(_0x8f3d('0x18'));var licenseUtil=require(_0x8f3d('0x19'));var db=require(_0x8f3d('0x1a'))['db'];function respondWithStatusCode(_0x14ffd9,_0x55129c){_0x55129c=_0x55129c||0xcc;return function(_0x8ec7b4){if(_0x8ec7b4){return _0x14ffd9['sendStatus'](_0x55129c);}return _0x14ffd9[_0x8f3d('0x1b')](_0x55129c)[_0x8f3d('0x1c')]();};}function respondWithResult(_0x1926d1,_0x1839d3){_0x1839d3=_0x1839d3||0xc8;return function(_0x297664){if(_0x297664){return _0x1926d1[_0x8f3d('0x1b')](_0x1839d3)[_0x8f3d('0x1d')](_0x297664);}};}function respondWithFilteredResult(_0x148663,_0x4aeeea){return function(_0x313581){if(_0x313581){var _0x2de542=typeof _0x4aeeea['offset']===_0x8f3d('0x1e')&&typeof _0x4aeeea[_0x8f3d('0x1f')]==='undefined';var _0x1acbf6=_0x313581[_0x8f3d('0x20')];var _0x1e86e4=_0x2de542?0x0:_0x4aeeea['offset'];var _0x2327a9=_0x2de542?_0x313581['count']:_0x4aeeea[_0x8f3d('0x21')]+_0x4aeeea[_0x8f3d('0x1f')];var _0x563805;if(_0x2327a9>=_0x1acbf6){_0x2327a9=_0x1acbf6;_0x563805=0xc8;}else{_0x563805=0xce;}_0x148663[_0x8f3d('0x1b')](_0x563805);return _0x148663[_0x8f3d('0x22')](_0x8f3d('0x23'),_0x1e86e4+'-'+_0x2327a9+'/'+_0x1acbf6)['json'](_0x313581);}return null;};}function patchUpdates(_0x2ccf21){return function(_0x13df52){try{jsonpatch['apply'](_0x13df52,_0x2ccf21,!![]);}catch(_0x2d5d56){return BPromise[_0x8f3d('0x24')](_0x2d5d56);}return _0x13df52[_0x8f3d('0x25')]();};}function saveUpdates(_0x639d3a,_0x5bae8c){return function(_0x5491da){if(_0x5491da){return _0x5491da[_0x8f3d('0x26')](_0x639d3a)[_0x8f3d('0x27')](function(_0xe887eb){return _0xe887eb;});}return null;};}function removeEntity(_0x6d40ec,_0x5e51f8){return function(_0x110b4b){if(_0x110b4b){return _0x110b4b[_0x8f3d('0x28')]()[_0x8f3d('0x27')](function(){_0x6d40ec[_0x8f3d('0x1b')](0xcc)[_0x8f3d('0x1c')]();});}};}function handleEntityNotFound(_0x4ebedf,_0x2643bf){return function(_0x576962){if(!_0x576962){_0x4ebedf[_0x8f3d('0x29')](0x194);}return _0x576962;};}function handleError(_0x4eb021,_0xb5aeef){_0xb5aeef=_0xb5aeef||0x1f4;return function(_0x137682){logger[_0x8f3d('0x2a')](_0x137682[_0x8f3d('0x2b')]);if(_0x137682[_0x8f3d('0x2c')]){delete _0x137682[_0x8f3d('0x2c')];}_0x4eb021[_0x8f3d('0x1b')](_0xb5aeef)[_0x8f3d('0x2d')](_0x137682);};}exports[_0x8f3d('0x2e')]=function(_0x439260,_0x1eeb5b){var _0x2888c3={},_0x3482a9={},_0x12e812={'count':0x0,'rows':[]};var _0x39211a=_[_0x8f3d('0x2f')](db[_0x8f3d('0x30')][_0x8f3d('0x31')],function(_0x511c50){return{'name':_0x511c50[_0x8f3d('0x32')],'type':_0x511c50[_0x8f3d('0x33')][_0x8f3d('0x34')]};});_0x3482a9[_0x8f3d('0x35')]=_[_0x8f3d('0x2f')](_0x39211a,_0x8f3d('0x2c'));_0x3482a9['query']=_['keys'](_0x439260[_0x8f3d('0x36')]);_0x3482a9['filters']=_[_0x8f3d('0x37')](_0x3482a9[_0x8f3d('0x35')],_0x3482a9[_0x8f3d('0x36')]);_0x2888c3[_0x8f3d('0x38')]=_['intersection'](_0x3482a9['model'],qs[_0x8f3d('0x39')](_0x439260['query']['fields']));_0x2888c3[_0x8f3d('0x38')]=_0x2888c3[_0x8f3d('0x38')]['length']?_0x2888c3[_0x8f3d('0x38')]:_0x3482a9[_0x8f3d('0x35')];if(!_0x439260[_0x8f3d('0x36')]['hasOwnProperty'](_0x8f3d('0x3a'))){_0x2888c3[_0x8f3d('0x1f')]=qs[_0x8f3d('0x1f')](_0x439260[_0x8f3d('0x36')][_0x8f3d('0x1f')]);_0x2888c3[_0x8f3d('0x21')]=qs['offset'](_0x439260[_0x8f3d('0x36')][_0x8f3d('0x21')]);}_0x2888c3[_0x8f3d('0x3b')]=qs[_0x8f3d('0x3c')](_0x439260[_0x8f3d('0x36')]['sort']);_0x2888c3[_0x8f3d('0x3d')]=qs[_0x8f3d('0x3e')](_['pick'](_0x439260['query'],_0x3482a9['filters']),_0x39211a);if(_0x439260['query'][_0x8f3d('0x3f')]){_0x2888c3[_0x8f3d('0x3d')]=_[_0x8f3d('0x40')](_0x2888c3[_0x8f3d('0x3d')],{'$or':_['map'](_0x39211a,function(_0x5e95c5){if(_0x5e95c5[_0x8f3d('0x33')]!==_0x8f3d('0x41')){var _0xae3156={};_0xae3156[_0x5e95c5[_0x8f3d('0x2c')]]={'$like':'%'+_0x439260[_0x8f3d('0x36')]['filter']+'%'};return _0xae3156;}})});}_0x2888c3=_[_0x8f3d('0x40')]({},_0x2888c3,_0x439260[_0x8f3d('0x42')]);var _0x5920e3={'where':_0x2888c3[_0x8f3d('0x3d')]};return db[_0x8f3d('0x30')][_0x8f3d('0x20')](_0x5920e3)[_0x8f3d('0x27')](function(_0xc8d88b){_0x12e812[_0x8f3d('0x20')]=_0xc8d88b;if(_0x439260[_0x8f3d('0x36')]['includeAll']){_0x2888c3[_0x8f3d('0x43')]=[{'all':!![]}];}return db[_0x8f3d('0x30')][_0x8f3d('0x44')](_0x2888c3);})['then'](function(_0x4bc5ae){_0x12e812['rows']=_0x4bc5ae;return _0x12e812;})[_0x8f3d('0x27')](respondWithFilteredResult(_0x1eeb5b,_0x2888c3))[_0x8f3d('0x45')](handleError(_0x1eeb5b,null));};exports['show']=function(_0x5cc458,_0x999bb4){var _0x34b6f2={'raw':!![],'where':{'id':_0x5cc458[_0x8f3d('0x46')]['id']}},_0x3c49db={};_0x3c49db[_0x8f3d('0x35')]=_['keys'](db[_0x8f3d('0x30')]['rawAttributes']);_0x3c49db['query']=_['keys'](_0x5cc458[_0x8f3d('0x36')]);_0x3c49db[_0x8f3d('0x3e')]=_[_0x8f3d('0x37')](_0x3c49db[_0x8f3d('0x35')],_0x3c49db['query']);_0x34b6f2[_0x8f3d('0x38')]=_[_0x8f3d('0x37')](_0x3c49db[_0x8f3d('0x35')],qs['fields'](_0x5cc458['query']['fields']));_0x34b6f2[_0x8f3d('0x38')]=_0x34b6f2[_0x8f3d('0x38')][_0x8f3d('0x47')]?_0x34b6f2[_0x8f3d('0x38')]:_0x3c49db[_0x8f3d('0x35')];if(_0x5cc458[_0x8f3d('0x36')][_0x8f3d('0x48')]){_0x34b6f2[_0x8f3d('0x43')]=[{'all':!![]}];}_0x34b6f2=_[_0x8f3d('0x40')]({},_0x34b6f2,_0x5cc458['options']);return db[_0x8f3d('0x30')]['find'](_0x34b6f2)[_0x8f3d('0x27')](handleEntityNotFound(_0x999bb4,null))[_0x8f3d('0x27')](respondWithResult(_0x999bb4,null))[_0x8f3d('0x45')](handleError(_0x999bb4,null));};exports[_0x8f3d('0x49')]=function(_0x20685f,_0x16b21c){return db[_0x8f3d('0x30')][_0x8f3d('0x49')](_0x20685f[_0x8f3d('0x4a')],{})[_0x8f3d('0x27')](respondWithResult(_0x16b21c,0xc9))['catch'](handleError(_0x16b21c,null));};exports['update']=function(_0xaa0b72,_0x43eb5a){if(_0xaa0b72[_0x8f3d('0x4a')]['id']){delete _0xaa0b72[_0x8f3d('0x4a')]['id'];}return db[_0x8f3d('0x30')][_0x8f3d('0x4b')]({'where':{'id':_0xaa0b72['params']['id']}})[_0x8f3d('0x27')](handleEntityNotFound(_0x43eb5a,null))['then'](saveUpdates(_0xaa0b72[_0x8f3d('0x4a')],null))[_0x8f3d('0x27')](respondWithResult(_0x43eb5a,null))[_0x8f3d('0x45')](handleError(_0x43eb5a,null));};exports[_0x8f3d('0x28')]=function(_0x1f8111,_0x151888){return db[_0x8f3d('0x30')][_0x8f3d('0x4b')]({'where':{'id':_0x1f8111[_0x8f3d('0x46')]['id']}})[_0x8f3d('0x27')](handleEntityNotFound(_0x151888,null))['then'](removeEntity(_0x151888,null))[_0x8f3d('0x45')](handleError(_0x151888,null));};exports[_0x8f3d('0x4c')]=function(_0x3a926f,_0x3e0cd3){return db['JscriptyQuestionReport'][_0x8f3d('0x4c')]()['then'](respondWithResult(_0x3e0cd3,null))[_0x8f3d('0x45')](handleError(_0x3e0cd3,null));};
\ No newline at end of file
index 4b5aac6..35fd882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c7=['request-promise','path','rimraf','../../config/environment','exports','define','JscriptyQuestionReport','report_jscripty_questions','util','../../config/logger','moment'];(function(_0x389074,_0x3354b6){var _0x148a12=function(_0x456cf1){while(--_0x456cf1){_0x389074['push'](_0x389074['shift']());}};_0x148a12(++_0x3354b6);}(_0x49c7,0x17e));var _0x749c=function(_0x4046fe,_0x1ad55e){_0x4046fe=_0x4046fe-0x0;var _0x41c1bc=_0x49c7[_0x4046fe];return _0x41c1bc;};'use strict';var _=require('lodash');var util=require(_0x749c('0x0'));var logger=require(_0x749c('0x1'))('api');var moment=require(_0x749c('0x2'));var BPromise=require('bluebird');var rp=require(_0x749c('0x3'));var fs=require('fs');var path=require(_0x749c('0x4'));var rimraf=require(_0x749c('0x5'));var config=require(_0x749c('0x6'));var attributes=require('./jscriptyQuestionReport.attributes');module[_0x749c('0x7')]=function(_0x431718,_0xe67f7d){return _0x431718[_0x749c('0x8')](_0x749c('0x9'),attributes,{'tableName':_0x749c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0dcb=['./jscriptyQuestionReport.attributes','define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x4f3f85,_0x537743){var _0x33b1bc=function(_0x2ba2cf){while(--_0x2ba2cf){_0x4f3f85['push'](_0x4f3f85['shift']());}};_0x33b1bc(++_0x537743);}(_0x0dcb,0x100));var _0xb0dc=function(_0x3eb435,_0x3be1e3){_0x3eb435=_0x3eb435-0x0;var _0x42203d=_0x0dcb[_0x3eb435];return _0x42203d;};'use strict';var _=require(_0xb0dc('0x0'));var util=require(_0xb0dc('0x1'));var logger=require(_0xb0dc('0x2'))(_0xb0dc('0x3'));var moment=require(_0xb0dc('0x4'));var BPromise=require(_0xb0dc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb0dc('0x6'));var rimraf=require('rimraf');var config=require(_0xb0dc('0x7'));var attributes=require(_0xb0dc('0x8'));module['exports']=function(_0x2feb8e,_0x23d5b1){return _0x2feb8e[_0xb0dc('0x9')](_0xb0dc('0xa'),attributes,{'tableName':_0xb0dc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18b075e..5c9a1a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e2c=['stringify','code','error','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s'];(function(_0x4f48bd,_0x5a9f5b){var _0x493956=function(_0x1bc2d9){while(--_0x1bc2d9){_0x4f48bd['push'](_0x4f48bd['shift']());}};_0x493956(++_0x5a9f5b);}(_0x0e2c,0x15e));var _0xc0e2=function(_0x5245a5,_0x3dfb0c){_0x5245a5=_0x5245a5-0x0;var _0x36d2ea=_0x0e2c[_0x5245a5];return _0x36d2ea;};'use strict';var _=require(_0xc0e2('0x0'));var util=require(_0xc0e2('0x1'));var moment=require('moment');var BPromise=require(_0xc0e2('0x2'));var rs=require(_0xc0e2('0x3'));var fs=require('fs');var Redis=require(_0xc0e2('0x4'));var db=require(_0xc0e2('0x5'))['db'];var utils=require(_0xc0e2('0x6'));var logger=require(_0xc0e2('0x7'))('rpc');var config=require(_0xc0e2('0x8'));var jayson=require(_0xc0e2('0x9'));var client=jayson[_0xc0e2('0xa')][_0xc0e2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d9f82,_0x109962,_0x142055){return new BPromise(function(_0x17b51b,_0x4d3667){return client[_0xc0e2('0xc')](_0x3d9f82,_0x142055)[_0xc0e2('0xd')](function(_0x523d53){logger[_0xc0e2('0xe')](_0xc0e2('0xf'),_0x109962,_0xc0e2('0x10'));logger['debug'](_0xc0e2('0x11'),_0x109962,_0xc0e2('0x10'),JSON[_0xc0e2('0x12')](_0x523d53));if(_0x523d53['error']){if(_0x523d53['error'][_0xc0e2('0x13')]===0x1f4){logger[_0xc0e2('0x14')](_0xc0e2('0xf'),_0x109962,_0x523d53[_0xc0e2('0x14')][_0xc0e2('0x15')]);return _0x4d3667(_0x523d53['error'][_0xc0e2('0x15')]);}logger[_0xc0e2('0x14')](_0xc0e2('0xf'),_0x109962,_0x523d53[_0xc0e2('0x14')][_0xc0e2('0x15')]);return _0x17b51b(_0x523d53[_0xc0e2('0x14')]['message']);}else{logger['info'](_0xc0e2('0xf'),_0x109962,_0xc0e2('0x10'));_0x17b51b(_0x523d53['result']['message']);}})[_0xc0e2('0x16')](function(_0x160b68){logger['error'](_0xc0e2('0xf'),_0x109962,_0x160b68);_0x4d3667(_0x160b68);});});}
\ No newline at end of file
+var _0x6802=['message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x10e057,_0x260324){var _0x2eb129=function(_0x9b7422){while(--_0x9b7422){_0x10e057['push'](_0x10e057['shift']());}};_0x2eb129(++_0x260324);}(_0x6802,0x1b9));var _0x2680=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x6802[_0xdc37a1];return _0x99b4fe;};'use strict';var _=require('lodash');var util=require(_0x2680('0x0'));var moment=require(_0x2680('0x1'));var BPromise=require(_0x2680('0x2'));var rs=require(_0x2680('0x3'));var fs=require('fs');var Redis=require(_0x2680('0x4'));var db=require(_0x2680('0x5'))['db'];var utils=require(_0x2680('0x6'));var logger=require(_0x2680('0x7'))(_0x2680('0x8'));var config=require(_0x2680('0x9'));var jayson=require(_0x2680('0xa'));var client=jayson[_0x2680('0xb')][_0x2680('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xad611f,_0x5111e5,_0x57d025){return new BPromise(function(_0x4d28ec,_0x2733ac){return client[_0x2680('0xd')](_0xad611f,_0x57d025)[_0x2680('0xe')](function(_0x497321){logger['info'](_0x2680('0xf'),_0x5111e5,_0x2680('0x10'));logger['debug'](_0x2680('0x11'),_0x5111e5,_0x2680('0x10'),JSON['stringify'](_0x497321));if(_0x497321['error']){if(_0x497321[_0x2680('0x12')]['code']===0x1f4){logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x5111e5,_0x497321[_0x2680('0x12')]['message']);return _0x2733ac(_0x497321[_0x2680('0x12')][_0x2680('0x13')]);}logger[_0x2680('0x12')](_0x2680('0xf'),_0x5111e5,_0x497321['error']['message']);return _0x4d28ec(_0x497321[_0x2680('0x12')][_0x2680('0x13')]);}else{logger[_0x2680('0x14')](_0x2680('0xf'),_0x5111e5,'request\x20sent');_0x4d28ec(_0x497321[_0x2680('0x15')]['message']);}})[_0x2680('0x16')](function(_0x18d62c){logger[_0x2680('0x12')](_0x2680('0xf'),_0x5111e5,_0x18d62c);_0x2733ac(_0x18d62c);});});}
\ No newline at end of file
index a3a3fef..099b02f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27f4=['path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','isAuthenticated','index','get','describe','getQuestions','create','put','/:id','delete','exports','multer','util'];(function(_0x5647fc,_0xec4b53){var _0xa59454=function(_0x815805){while(--_0x815805){_0x5647fc['push'](_0x5647fc['shift']());}};_0xa59454(++_0xec4b53);}(_0x27f4,0xf5));var _0x427f=function(_0x9307ea,_0x38968a){_0x9307ea=_0x9307ea-0x0;var _0x295554=_0x27f4[_0x9307ea];return _0x295554;};'use strict';var multer=require(_0x427f('0x0'));var util=require(_0x427f('0x1'));var path=require(_0x427f('0x2'));var timeout=require('connect-timeout');var express=require(_0x427f('0x3'));var router=express[_0x427f('0x4')]();var fs_extra=require(_0x427f('0x5'));var auth=require(_0x427f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x427f('0x7'));var controller=require(_0x427f('0x8'));router['get']('/',auth[_0x427f('0x9')](),controller[_0x427f('0xa')]);router[_0x427f('0xb')]('/describe',auth[_0x427f('0x9')](),controller[_0x427f('0xc')]);router[_0x427f('0xb')]('/:id',auth[_0x427f('0x9')](),controller['show']);router[_0x427f('0xb')]('/:id/questions',auth[_0x427f('0x9')](),controller[_0x427f('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x427f('0xe')]);router[_0x427f('0xf')](_0x427f('0x10'),auth['isAuthenticated'](),controller['update']);router[_0x427f('0x11')](_0x427f('0x10'),auth[_0x427f('0x9')](),controller['destroy']);module[_0x427f('0x12')]=router;
\ No newline at end of file
+var _0x148a=['describe','/:id','show','/:id/questions','getQuestions','post','create','put','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','get','/describe','isAuthenticated'];(function(_0x42f437,_0x3fa40e){var _0x1ff49a=function(_0x286dbf){while(--_0x286dbf){_0x42f437['push'](_0x42f437['shift']());}};_0x1ff49a(++_0x3fa40e);}(_0x148a,0xe6));var _0xa148=function(_0x245323,_0x3bf64d){_0x245323=_0x245323-0x0;var _0x5c2ba4=_0x148a[_0x245323];return _0x5c2ba4;};'use strict';var multer=require('multer');var util=require(_0xa148('0x0'));var path=require(_0xa148('0x1'));var timeout=require(_0xa148('0x2'));var express=require(_0xa148('0x3'));var router=express[_0xa148('0x4')]();var fs_extra=require(_0xa148('0x5'));var auth=require(_0xa148('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa148('0x7'));var controller=require(_0xa148('0x8'));router[_0xa148('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa148('0x9')](_0xa148('0xa'),auth[_0xa148('0xb')](),controller[_0xa148('0xc')]);router[_0xa148('0x9')](_0xa148('0xd'),auth[_0xa148('0xb')](),controller[_0xa148('0xe')]);router[_0xa148('0x9')](_0xa148('0xf'),auth[_0xa148('0xb')](),controller[_0xa148('0x10')]);router[_0xa148('0x11')]('/',auth['isAuthenticated'](),controller[_0xa148('0x12')]);router[_0xa148('0x13')](_0xa148('0xd'),auth[_0xa148('0xb')](),controller['update']);router['delete'](_0xa148('0xd'),auth[_0xa148('0xb')](),controller[_0xa148('0x14')]);module[_0xa148('0x15')]=router;
\ No newline at end of file
index 0566cfa..6ca21b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe06e=['moment','sequelize','exports','setDataValue','starttime','endtime','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0xe06e,0x132));var _0xee06=function(_0xf51c06,_0x388e5b){_0xf51c06=_0xf51c06-0x0;var _0x1d5420=_0xe06e[_0xf51c06];return _0x1d5420;};'use strict';var moment=require(_0xee06('0x0'));var Sequelize=require(_0xee06('0x1'));module[_0xee06('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x19effc){this[_0xee06('0x3')](_0xee06('0x4'),_0x19effc);this[_0xee06('0x3')](_0xee06('0x5'),moment()['format'](_0xee06('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xee06('0x7')]},'calleridname':{'type':Sequelize[_0xee06('0x7')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xee06('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf23b=['setDataValue','starttime','endtime','STRING','moment','sequelize','exports','DATE'];(function(_0x342424,_0x1fe35f){var _0xa06c9d=function(_0x44f94d){while(--_0x44f94d){_0x342424['push'](_0x342424['shift']());}};_0xa06c9d(++_0x1fe35f);}(_0xf23b,0xd4));var _0xbf23=function(_0x3d4401,_0xe99a21){_0x3d4401=_0x3d4401-0x0;var _0x454d8d=_0xf23b[_0x3d4401];return _0x454d8d;};'use strict';var moment=require(_0xbf23('0x0'));var Sequelize=require(_0xbf23('0x1'));module[_0xbf23('0x2')]={'starttime':{'type':Sequelize[_0xbf23('0x3')],'set':function(_0x4500e4){this[_0xbf23('0x4')](_0xbf23('0x5'),_0x4500e4);this[_0xbf23('0x4')](_0xbf23('0x6'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xbf23('0x7')]},'projectname':{'type':Sequelize[_0xbf23('0x7')]},'queue':{'type':Sequelize[_0xbf23('0x7')]},'uniqueid':{'type':Sequelize[_0xbf23('0x7')]},'calleridname':{'type':Sequelize[_0xbf23('0x7')]},'calleridnum':{'type':Sequelize[_0xbf23('0x7')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b9b8e8a..99ff05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20e1=['fieldName','type','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','JscriptySessionReport','includeAll','include','findAll','catch','params','find','create','body','update','describe','getQuestions','findOne','JscriptyQuestionReport','rows','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','index','rawAttributes'];(function(_0x3cea78,_0x4a6751){var _0x33b66b=function(_0x1f45cd){while(--_0x1f45cd){_0x3cea78['push'](_0x3cea78['shift']());}};_0x33b66b(++_0x4a6751);}(_0x20e1,0x6d));var _0x120e=function(_0x58175f,_0x275d92){_0x58175f=_0x58175f-0x0;var _0x37e6bc=_0x20e1[_0x58175f];return _0x37e6bc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x120e('0x0'));var zipdir=require(_0x120e('0x1'));var jsonpatch=require(_0x120e('0x2'));var rp=require(_0x120e('0x3'));var moment=require(_0x120e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x120e('0x5'));var sox=require(_0x120e('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x120e('0x7'));var _=require('lodash');var squel=require(_0x120e('0x8'));var crypto=require(_0x120e('0x9'));var jsforce=require(_0x120e('0xa'));var deskjs=require(_0x120e('0xb'));var toCsv=require(_0x120e('0xc'));var querystring=require(_0x120e('0xd'));var Papa=require(_0x120e('0xe'));var Redis=require(_0x120e('0xf'));var authService=require(_0x120e('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x120e('0x11'));var logger=require(_0x120e('0x12'))('api');var utils=require(_0x120e('0x13'));var config=require(_0x120e('0x14'));var licenseUtil=require(_0x120e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39f786,_0x8f23ce){_0x8f23ce=_0x8f23ce||0xcc;return function(_0x192b6a){if(_0x192b6a){return _0x39f786[_0x120e('0x16')](_0x8f23ce);}return _0x39f786[_0x120e('0x17')](_0x8f23ce)[_0x120e('0x18')]();};}function respondWithResult(_0x356e91,_0x4609d0){_0x4609d0=_0x4609d0||0xc8;return function(_0x5b6a56){if(_0x5b6a56){return _0x356e91[_0x120e('0x17')](_0x4609d0)[_0x120e('0x19')](_0x5b6a56);}};}function respondWithFilteredResult(_0x37205c,_0x37542e){return function(_0x3f03b3){if(_0x3f03b3){var _0x25a186=typeof _0x37542e[_0x120e('0x1a')]===_0x120e('0x1b')&&typeof _0x37542e[_0x120e('0x1c')]===_0x120e('0x1b');var _0x53e4c6=_0x3f03b3['count'];var _0x5eab3e=_0x25a186?0x0:_0x37542e[_0x120e('0x1a')];var _0x4f5ae9=_0x25a186?_0x3f03b3[_0x120e('0x1d')]:_0x37542e[_0x120e('0x1a')]+_0x37542e[_0x120e('0x1c')];var _0x291a62;if(_0x4f5ae9>=_0x53e4c6){_0x4f5ae9=_0x53e4c6;_0x291a62=0xc8;}else{_0x291a62=0xce;}_0x37205c['status'](_0x291a62);return _0x37205c[_0x120e('0x1e')]('Content-Range',_0x5eab3e+'-'+_0x4f5ae9+'/'+_0x53e4c6)[_0x120e('0x19')](_0x3f03b3);}return null;};}function patchUpdates(_0x362425){return function(_0x344e91){try{jsonpatch[_0x120e('0x1f')](_0x344e91,_0x362425,!![]);}catch(_0x48393a){return BPromise[_0x120e('0x20')](_0x48393a);}return _0x344e91[_0x120e('0x21')]();};}function saveUpdates(_0x13ddcd,_0x53b75d){return function(_0x171996){if(_0x171996){return _0x171996['update'](_0x13ddcd)[_0x120e('0x22')](function(_0x34fdeb){return _0x34fdeb;});}return null;};}function removeEntity(_0x5921cb,_0x13cc27){return function(_0x179a50){if(_0x179a50){return _0x179a50[_0x120e('0x23')]()[_0x120e('0x22')](function(){_0x5921cb[_0x120e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x469053,_0x179f92){return function(_0xae76ed){if(!_0xae76ed){_0x469053[_0x120e('0x16')](0x194);}return _0xae76ed;};}function handleError(_0x5650e5,_0x4c4b6a){_0x4c4b6a=_0x4c4b6a||0x1f4;return function(_0x15b526){logger[_0x120e('0x24')](_0x15b526[_0x120e('0x25')]);if(_0x15b526[_0x120e('0x26')]){delete _0x15b526[_0x120e('0x26')];}_0x5650e5['status'](_0x4c4b6a)['send'](_0x15b526);};}exports[_0x120e('0x27')]=function(_0x3b52ef,_0xe7250d){var _0x4805ae={},_0x472f63={},_0x176233={'count':0x0,'rows':[]};var _0x494f90=_['map'](db['JscriptySessionReport'][_0x120e('0x28')],function(_0xd3c488){return{'name':_0xd3c488[_0x120e('0x29')],'type':_0xd3c488[_0x120e('0x2a')]['key']};});_0x472f63['model']=_[_0x120e('0x2b')](_0x494f90,'name');_0x472f63[_0x120e('0x2c')]=_[_0x120e('0x2d')](_0x3b52ef['query']);_0x472f63[_0x120e('0x2e')]=_[_0x120e('0x2f')](_0x472f63[_0x120e('0x30')],_0x472f63['query']);_0x4805ae['attributes']=_[_0x120e('0x2f')](_0x472f63[_0x120e('0x30')],qs['fields'](_0x3b52ef[_0x120e('0x2c')][_0x120e('0x31')]));_0x4805ae[_0x120e('0x32')]=_0x4805ae['attributes'][_0x120e('0x33')]?_0x4805ae[_0x120e('0x32')]:_0x472f63['model'];if(!_0x3b52ef[_0x120e('0x2c')][_0x120e('0x34')](_0x120e('0x35'))){_0x4805ae[_0x120e('0x1c')]=qs[_0x120e('0x1c')](_0x3b52ef['query'][_0x120e('0x1c')]);_0x4805ae['offset']=qs[_0x120e('0x1a')](_0x3b52ef['query'][_0x120e('0x1a')]);}_0x4805ae[_0x120e('0x36')]=qs[_0x120e('0x37')](_0x3b52ef['query'][_0x120e('0x37')]);_0x4805ae[_0x120e('0x38')]=qs[_0x120e('0x2e')](_['pick'](_0x3b52ef[_0x120e('0x2c')],_0x472f63[_0x120e('0x2e')]),_0x494f90);if(_0x3b52ef[_0x120e('0x2c')][_0x120e('0x39')]){_0x4805ae[_0x120e('0x38')]=_[_0x120e('0x3a')](_0x4805ae[_0x120e('0x38')],{'$or':_['map'](_0x494f90,function(_0x56acd3){if(_0x56acd3[_0x120e('0x2a')]!=='VIRTUAL'){var _0x2f1051={};_0x2f1051[_0x56acd3[_0x120e('0x26')]]={'$like':'%'+_0x3b52ef[_0x120e('0x2c')]['filter']+'%'};return _0x2f1051;}})});}_0x4805ae=_[_0x120e('0x3a')]({},_0x4805ae,_0x3b52ef[_0x120e('0x3b')]);var _0x2c125e={'where':_0x4805ae['where']};return db[_0x120e('0x3c')][_0x120e('0x1d')](_0x2c125e)[_0x120e('0x22')](function(_0x4a1eb2){_0x176233['count']=_0x4a1eb2;if(_0x3b52ef[_0x120e('0x2c')][_0x120e('0x3d')]){_0x4805ae[_0x120e('0x3e')]=[{'all':!![]}];}return db[_0x120e('0x3c')][_0x120e('0x3f')](_0x4805ae);})['then'](function(_0x508d12){_0x176233['rows']=_0x508d12;return _0x176233;})[_0x120e('0x22')](respondWithFilteredResult(_0xe7250d,_0x4805ae))[_0x120e('0x40')](handleError(_0xe7250d,null));};exports['show']=function(_0x589c84,_0x3afcb4){var _0x5f1405={'raw':!![],'where':{'id':_0x589c84[_0x120e('0x41')]['id']}},_0x7e3085={};_0x7e3085['model']=_[_0x120e('0x2d')](db[_0x120e('0x3c')][_0x120e('0x28')]);_0x7e3085[_0x120e('0x2c')]=_['keys'](_0x589c84[_0x120e('0x2c')]);_0x7e3085[_0x120e('0x2e')]=_['intersection'](_0x7e3085[_0x120e('0x30')],_0x7e3085['query']);_0x5f1405['attributes']=_[_0x120e('0x2f')](_0x7e3085[_0x120e('0x30')],qs[_0x120e('0x31')](_0x589c84[_0x120e('0x2c')][_0x120e('0x31')]));_0x5f1405[_0x120e('0x32')]=_0x5f1405['attributes']['length']?_0x5f1405[_0x120e('0x32')]:_0x7e3085[_0x120e('0x30')];if(_0x589c84[_0x120e('0x2c')]['includeAll']){_0x5f1405[_0x120e('0x3e')]=[{'all':!![]}];}_0x5f1405=_['merge']({},_0x5f1405,_0x589c84[_0x120e('0x3b')]);return db['JscriptySessionReport'][_0x120e('0x42')](_0x5f1405)[_0x120e('0x22')](handleEntityNotFound(_0x3afcb4,null))[_0x120e('0x22')](respondWithResult(_0x3afcb4,null))['catch'](handleError(_0x3afcb4,null));};exports['create']=function(_0x5f3449,_0x505ed2){return db[_0x120e('0x3c')][_0x120e('0x43')](_0x5f3449[_0x120e('0x44')],{})[_0x120e('0x22')](respondWithResult(_0x505ed2,0xc9))[_0x120e('0x40')](handleError(_0x505ed2,null));};exports[_0x120e('0x45')]=function(_0x2a2ad5,_0x5a9333){if(_0x2a2ad5['body']['id']){delete _0x2a2ad5[_0x120e('0x44')]['id'];}return db[_0x120e('0x3c')][_0x120e('0x42')]({'where':{'id':_0x2a2ad5[_0x120e('0x41')]['id']}})[_0x120e('0x22')](handleEntityNotFound(_0x5a9333,null))[_0x120e('0x22')](saveUpdates(_0x2a2ad5[_0x120e('0x44')],null))[_0x120e('0x22')](respondWithResult(_0x5a9333,null))['catch'](handleError(_0x5a9333,null));};exports[_0x120e('0x23')]=function(_0x406b70,_0x11fe66){return db['JscriptySessionReport'][_0x120e('0x42')]({'where':{'id':_0x406b70[_0x120e('0x41')]['id']}})[_0x120e('0x22')](handleEntityNotFound(_0x11fe66,null))[_0x120e('0x22')](removeEntity(_0x11fe66,null))['catch'](handleError(_0x11fe66,null));};exports[_0x120e('0x46')]=function(_0x570623,_0x58ccb1){return db['JscriptySessionReport']['describe']()[_0x120e('0x22')](respondWithResult(_0x58ccb1,null))['catch'](handleError(_0x58ccb1,null));};exports[_0x120e('0x47')]=function(_0x2a703d,_0x218118,_0x221fca){var _0x576efd={'raw':!![],'where':{}};var _0x47208b={};var _0x3f65b2={'count':0x0,'rows':[]};return db[_0x120e('0x3c')][_0x120e('0x48')]({'where':{'id':_0x2a703d[_0x120e('0x41')]['id']}})[_0x120e('0x22')](handleEntityNotFound(_0x218118,null))[_0x120e('0x22')](function(_0x1ad181){if(_0x1ad181){_0x47208b['model']=_['keys'](db[_0x120e('0x49')]['rawAttributes']);_0x47208b[_0x120e('0x2c')]=_[_0x120e('0x2d')](_0x2a703d[_0x120e('0x2c')]);_0x47208b['filters']=_['intersection'](_0x47208b[_0x120e('0x30')],_0x47208b[_0x120e('0x2c')]);_0x576efd[_0x120e('0x32')]=_['intersection'](_0x47208b[_0x120e('0x30')],qs[_0x120e('0x31')](_0x2a703d[_0x120e('0x2c')]['fields']));_0x576efd[_0x120e('0x32')]=_0x576efd[_0x120e('0x32')]['length']?_0x576efd[_0x120e('0x32')]:_0x47208b['model'];if(!_0x2a703d[_0x120e('0x2c')][_0x120e('0x34')](_0x120e('0x35'))){_0x576efd[_0x120e('0x1c')]=qs['limit'](_0x2a703d[_0x120e('0x2c')]['limit']);_0x576efd[_0x120e('0x1a')]=qs[_0x120e('0x1a')](_0x2a703d[_0x120e('0x2c')]['offset']);}_0x576efd[_0x120e('0x36')]=qs['sort'](_0x2a703d[_0x120e('0x2c')][_0x120e('0x37')]);_0x576efd['where']=qs[_0x120e('0x2e')](_['pick'](_0x2a703d['query'],_0x47208b[_0x120e('0x2e')]));_0x576efd[_0x120e('0x38')]['SessionId']=_0x1ad181['id'];if(_0x2a703d[_0x120e('0x2c')]['filter']){_0x576efd[_0x120e('0x38')]=_[_0x120e('0x3a')](_0x576efd[_0x120e('0x38')],{'$or':_[_0x120e('0x2b')](_0x576efd[_0x120e('0x32')],function(_0x3dcc8b){var _0x89ceb0={};_0x89ceb0[_0x3dcc8b]={'$like':'%'+_0x2a703d[_0x120e('0x2c')][_0x120e('0x39')]+'%'};return _0x89ceb0;})});}_0x576efd=_['merge']({},_0x576efd,_0x2a703d['options']);return db['JscriptyQuestionReport'][_0x120e('0x1d')]({'where':_0x576efd[_0x120e('0x38')]})['then'](function(_0x5d9f15){_0x3f65b2[_0x120e('0x1d')]=_0x5d9f15;if(_0x2a703d[_0x120e('0x2c')]['includeAll']){_0x576efd[_0x120e('0x3e')]=[{'all':!![]}];}return db[_0x120e('0x49')][_0x120e('0x3f')](_0x576efd);})[_0x120e('0x22')](function(_0x3748f0){_0x3f65b2[_0x120e('0x4a')]=_0x3748f0;return _0x3f65b2;});}})[_0x120e('0x22')](respondWithFilteredResult(_0x218118,_0x576efd))[_0x120e('0x40')](handleError(_0x218118,null));};
\ No newline at end of file
+var _0xc183=['sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','JscriptySessionReport','rawAttributes','fieldName','model','query','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','merge','type','filter','include','findAll','rows','catch','params','keys','includeAll','options','find','create','body','describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','SessionId','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0xc183,0x1c7));var _0x3c18=function(_0x4e5249,_0x8fc71d){_0x4e5249=_0x4e5249-0x0;var _0x221f04=_0xc183[_0x4e5249];return _0x221f04;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c18('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3c18('0x1'));var rp=require(_0x3c18('0x2'));var moment=require(_0x3c18('0x3'));var BPromise=require(_0x3c18('0x4'));var Mustache=require(_0x3c18('0x5'));var util=require(_0x3c18('0x6'));var path=require(_0x3c18('0x7'));var sox=require(_0x3c18('0x8'));var csv=require('to-csv');var ejs=require(_0x3c18('0x9'));var fs=require('fs');var fs_extra=require(_0x3c18('0xa'));var _=require(_0x3c18('0xb'));var squel=require(_0x3c18('0xc'));var crypto=require(_0x3c18('0xd'));var jsforce=require(_0x3c18('0xe'));var deskjs=require(_0x3c18('0xf'));var toCsv=require(_0x3c18('0x10'));var querystring=require('querystring');var Papa=require(_0x3c18('0x11'));var Redis=require(_0x3c18('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x3c18('0x13'));var as=require(_0x3c18('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3c18('0x15'));var utils=require(_0x3c18('0x16'));var config=require(_0x3c18('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3c18('0x18'))['db'];function respondWithStatusCode(_0x3cc72c,_0x101728){_0x101728=_0x101728||0xcc;return function(_0x4b4012){if(_0x4b4012){return _0x3cc72c[_0x3c18('0x19')](_0x101728);}return _0x3cc72c[_0x3c18('0x1a')](_0x101728)[_0x3c18('0x1b')]();};}function respondWithResult(_0x3f9ff3,_0x397842){_0x397842=_0x397842||0xc8;return function(_0xd442b){if(_0xd442b){return _0x3f9ff3[_0x3c18('0x1a')](_0x397842)[_0x3c18('0x1c')](_0xd442b);}};}function respondWithFilteredResult(_0xf837d5,_0x3110c3){return function(_0x27f9f6){if(_0x27f9f6){var _0x570df6=typeof _0x3110c3[_0x3c18('0x1d')]==='undefined'&&typeof _0x3110c3['limit']===_0x3c18('0x1e');var _0x3b37dd=_0x27f9f6[_0x3c18('0x1f')];var _0x426550=_0x570df6?0x0:_0x3110c3[_0x3c18('0x1d')];var _0x4fee17=_0x570df6?_0x27f9f6[_0x3c18('0x1f')]:_0x3110c3[_0x3c18('0x1d')]+_0x3110c3['limit'];var _0x333178;if(_0x4fee17>=_0x3b37dd){_0x4fee17=_0x3b37dd;_0x333178=0xc8;}else{_0x333178=0xce;}_0xf837d5[_0x3c18('0x1a')](_0x333178);return _0xf837d5[_0x3c18('0x20')](_0x3c18('0x21'),_0x426550+'-'+_0x4fee17+'/'+_0x3b37dd)[_0x3c18('0x1c')](_0x27f9f6);}return null;};}function patchUpdates(_0x3d60e6){return function(_0x5151d9){try{jsonpatch[_0x3c18('0x22')](_0x5151d9,_0x3d60e6,!![]);}catch(_0x477f8d){return BPromise[_0x3c18('0x23')](_0x477f8d);}return _0x5151d9[_0x3c18('0x24')]();};}function saveUpdates(_0x55cf48,_0x19f6a2){return function(_0x2198ca){if(_0x2198ca){return _0x2198ca[_0x3c18('0x25')](_0x55cf48)[_0x3c18('0x26')](function(_0x72562d){return _0x72562d;});}return null;};}function removeEntity(_0x3eb368,_0xd64ec5){return function(_0x17bc91){if(_0x17bc91){return _0x17bc91[_0x3c18('0x27')]()[_0x3c18('0x26')](function(){_0x3eb368[_0x3c18('0x1a')](0xcc)[_0x3c18('0x1b')]();});}};}function handleEntityNotFound(_0xae9e3c,_0x11c916){return function(_0x1624f5){if(!_0x1624f5){_0xae9e3c['sendStatus'](0x194);}return _0x1624f5;};}function handleError(_0x4f82c9,_0x1a1128){_0x1a1128=_0x1a1128||0x1f4;return function(_0x1bbcd7){logger['error'](_0x1bbcd7[_0x3c18('0x28')]);if(_0x1bbcd7[_0x3c18('0x29')]){delete _0x1bbcd7['name'];}_0x4f82c9['status'](_0x1a1128)[_0x3c18('0x2a')](_0x1bbcd7);};}exports['index']=function(_0x4975fe,_0x512568){var _0x567495={},_0x3d5001={},_0x285a22={'count':0x0,'rows':[]};var _0x2a16fd=_[_0x3c18('0x2b')](db[_0x3c18('0x2c')][_0x3c18('0x2d')],function(_0x56705f){return{'name':_0x56705f[_0x3c18('0x2e')],'type':_0x56705f['type']['key']};});_0x3d5001[_0x3c18('0x2f')]=_[_0x3c18('0x2b')](_0x2a16fd,_0x3c18('0x29'));_0x3d5001[_0x3c18('0x30')]=_['keys'](_0x4975fe[_0x3c18('0x30')]);_0x3d5001[_0x3c18('0x31')]=_[_0x3c18('0x32')](_0x3d5001[_0x3c18('0x2f')],_0x3d5001['query']);_0x567495['attributes']=_[_0x3c18('0x32')](_0x3d5001[_0x3c18('0x2f')],qs['fields'](_0x4975fe[_0x3c18('0x30')][_0x3c18('0x33')]));_0x567495['attributes']=_0x567495[_0x3c18('0x34')][_0x3c18('0x35')]?_0x567495[_0x3c18('0x34')]:_0x3d5001[_0x3c18('0x2f')];if(!_0x4975fe['query']['hasOwnProperty'](_0x3c18('0x36'))){_0x567495[_0x3c18('0x37')]=qs[_0x3c18('0x37')](_0x4975fe[_0x3c18('0x30')][_0x3c18('0x37')]);_0x567495[_0x3c18('0x1d')]=qs[_0x3c18('0x1d')](_0x4975fe[_0x3c18('0x30')][_0x3c18('0x1d')]);}_0x567495[_0x3c18('0x38')]=qs[_0x3c18('0x39')](_0x4975fe['query']['sort']);_0x567495[_0x3c18('0x3a')]=qs[_0x3c18('0x31')](_[_0x3c18('0x3b')](_0x4975fe[_0x3c18('0x30')],_0x3d5001[_0x3c18('0x31')]),_0x2a16fd);if(_0x4975fe[_0x3c18('0x30')]['filter']){_0x567495['where']=_[_0x3c18('0x3c')](_0x567495['where'],{'$or':_[_0x3c18('0x2b')](_0x2a16fd,function(_0xc1a50c){if(_0xc1a50c[_0x3c18('0x3d')]!=='VIRTUAL'){var _0x131ead={};_0x131ead[_0xc1a50c['name']]={'$like':'%'+_0x4975fe[_0x3c18('0x30')][_0x3c18('0x3e')]+'%'};return _0x131ead;}})});}_0x567495=_['merge']({},_0x567495,_0x4975fe['options']);var _0x5dfd60={'where':_0x567495[_0x3c18('0x3a')]};return db[_0x3c18('0x2c')][_0x3c18('0x1f')](_0x5dfd60)[_0x3c18('0x26')](function(_0xc6582b){_0x285a22['count']=_0xc6582b;if(_0x4975fe[_0x3c18('0x30')]['includeAll']){_0x567495[_0x3c18('0x3f')]=[{'all':!![]}];}return db[_0x3c18('0x2c')][_0x3c18('0x40')](_0x567495);})['then'](function(_0x4398c8){_0x285a22[_0x3c18('0x41')]=_0x4398c8;return _0x285a22;})[_0x3c18('0x26')](respondWithFilteredResult(_0x512568,_0x567495))[_0x3c18('0x42')](handleError(_0x512568,null));};exports['show']=function(_0x6e98aa,_0x16cbfd){var _0x277767={'raw':!![],'where':{'id':_0x6e98aa[_0x3c18('0x43')]['id']}},_0x249c6e={};_0x249c6e[_0x3c18('0x2f')]=_[_0x3c18('0x44')](db[_0x3c18('0x2c')][_0x3c18('0x2d')]);_0x249c6e['query']=_['keys'](_0x6e98aa[_0x3c18('0x30')]);_0x249c6e[_0x3c18('0x31')]=_[_0x3c18('0x32')](_0x249c6e[_0x3c18('0x2f')],_0x249c6e['query']);_0x277767['attributes']=_['intersection'](_0x249c6e[_0x3c18('0x2f')],qs[_0x3c18('0x33')](_0x6e98aa[_0x3c18('0x30')][_0x3c18('0x33')]));_0x277767[_0x3c18('0x34')]=_0x277767[_0x3c18('0x34')]['length']?_0x277767['attributes']:_0x249c6e['model'];if(_0x6e98aa[_0x3c18('0x30')][_0x3c18('0x45')]){_0x277767['include']=[{'all':!![]}];}_0x277767=_[_0x3c18('0x3c')]({},_0x277767,_0x6e98aa[_0x3c18('0x46')]);return db[_0x3c18('0x2c')][_0x3c18('0x47')](_0x277767)[_0x3c18('0x26')](handleEntityNotFound(_0x16cbfd,null))[_0x3c18('0x26')](respondWithResult(_0x16cbfd,null))['catch'](handleError(_0x16cbfd,null));};exports[_0x3c18('0x48')]=function(_0x1f2b71,_0x80e5a3){return db['JscriptySessionReport'][_0x3c18('0x48')](_0x1f2b71[_0x3c18('0x49')],{})[_0x3c18('0x26')](respondWithResult(_0x80e5a3,0xc9))['catch'](handleError(_0x80e5a3,null));};exports[_0x3c18('0x25')]=function(_0x1ddfa6,_0x18f48a){if(_0x1ddfa6[_0x3c18('0x49')]['id']){delete _0x1ddfa6[_0x3c18('0x49')]['id'];}return db['JscriptySessionReport'][_0x3c18('0x47')]({'where':{'id':_0x1ddfa6['params']['id']}})[_0x3c18('0x26')](handleEntityNotFound(_0x18f48a,null))[_0x3c18('0x26')](saveUpdates(_0x1ddfa6[_0x3c18('0x49')],null))[_0x3c18('0x26')](respondWithResult(_0x18f48a,null))[_0x3c18('0x42')](handleError(_0x18f48a,null));};exports[_0x3c18('0x27')]=function(_0x5dabd8,_0x4dee0d){return db[_0x3c18('0x2c')][_0x3c18('0x47')]({'where':{'id':_0x5dabd8[_0x3c18('0x43')]['id']}})[_0x3c18('0x26')](handleEntityNotFound(_0x4dee0d,null))[_0x3c18('0x26')](removeEntity(_0x4dee0d,null))[_0x3c18('0x42')](handleError(_0x4dee0d,null));};exports['describe']=function(_0x4df495,_0x2acca1){return db['JscriptySessionReport'][_0x3c18('0x4a')]()[_0x3c18('0x26')](respondWithResult(_0x2acca1,null))['catch'](handleError(_0x2acca1,null));};exports[_0x3c18('0x4b')]=function(_0x3e1583,_0x29f0c1,_0x2bae74){var _0x22415e={'raw':!![],'where':{}};var _0x334ad2={};var _0x4a93eb={'count':0x0,'rows':[]};return db[_0x3c18('0x2c')][_0x3c18('0x4c')]({'where':{'id':_0x3e1583[_0x3c18('0x43')]['id']}})[_0x3c18('0x26')](handleEntityNotFound(_0x29f0c1,null))[_0x3c18('0x26')](function(_0x3fe4b2){if(_0x3fe4b2){_0x334ad2[_0x3c18('0x2f')]=_['keys'](db[_0x3c18('0x4d')][_0x3c18('0x2d')]);_0x334ad2[_0x3c18('0x30')]=_[_0x3c18('0x44')](_0x3e1583[_0x3c18('0x30')]);_0x334ad2[_0x3c18('0x31')]=_['intersection'](_0x334ad2[_0x3c18('0x2f')],_0x334ad2[_0x3c18('0x30')]);_0x22415e[_0x3c18('0x34')]=_[_0x3c18('0x32')](_0x334ad2[_0x3c18('0x2f')],qs[_0x3c18('0x33')](_0x3e1583[_0x3c18('0x30')][_0x3c18('0x33')]));_0x22415e[_0x3c18('0x34')]=_0x22415e[_0x3c18('0x34')]['length']?_0x22415e[_0x3c18('0x34')]:_0x334ad2[_0x3c18('0x2f')];if(!_0x3e1583['query'][_0x3c18('0x4e')](_0x3c18('0x36'))){_0x22415e[_0x3c18('0x37')]=qs[_0x3c18('0x37')](_0x3e1583[_0x3c18('0x30')][_0x3c18('0x37')]);_0x22415e[_0x3c18('0x1d')]=qs[_0x3c18('0x1d')](_0x3e1583['query'][_0x3c18('0x1d')]);}_0x22415e[_0x3c18('0x38')]=qs[_0x3c18('0x39')](_0x3e1583[_0x3c18('0x30')][_0x3c18('0x39')]);_0x22415e[_0x3c18('0x3a')]=qs['filters'](_[_0x3c18('0x3b')](_0x3e1583[_0x3c18('0x30')],_0x334ad2[_0x3c18('0x31')]));_0x22415e[_0x3c18('0x3a')][_0x3c18('0x4f')]=_0x3fe4b2['id'];if(_0x3e1583[_0x3c18('0x30')][_0x3c18('0x3e')]){_0x22415e[_0x3c18('0x3a')]=_[_0x3c18('0x3c')](_0x22415e[_0x3c18('0x3a')],{'$or':_[_0x3c18('0x2b')](_0x22415e[_0x3c18('0x34')],function(_0x2ce97c){var _0x369b0c={};_0x369b0c[_0x2ce97c]={'$like':'%'+_0x3e1583[_0x3c18('0x30')][_0x3c18('0x3e')]+'%'};return _0x369b0c;})});}_0x22415e=_[_0x3c18('0x3c')]({},_0x22415e,_0x3e1583[_0x3c18('0x46')]);return db[_0x3c18('0x4d')][_0x3c18('0x1f')]({'where':_0x22415e['where']})[_0x3c18('0x26')](function(_0x15d777){_0x4a93eb[_0x3c18('0x1f')]=_0x15d777;if(_0x3e1583[_0x3c18('0x30')][_0x3c18('0x45')]){_0x22415e[_0x3c18('0x3f')]=[{'all':!![]}];}return db[_0x3c18('0x4d')][_0x3c18('0x40')](_0x22415e);})[_0x3c18('0x26')](function(_0x555d4d){_0x4a93eb[_0x3c18('0x41')]=_0x555d4d;return _0x4a93eb;});}})['then'](respondWithFilteredResult(_0x29f0c1,_0x22415e))[_0x3c18('0x42')](handleError(_0x29f0c1,null));};
\ No newline at end of file
index b4af814..9b77628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca9=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0x3198bc,_0x36bb24){var _0x2ff3cf=function(_0x2593af){while(--_0x2593af){_0x3198bc['push'](_0x3198bc['shift']());}};_0x2ff3cf(++_0x36bb24);}(_0x8ca9,0x9c));var _0x98ca=function(_0x2ae6ee,_0x16805a){_0x2ae6ee=_0x2ae6ee-0x0;var _0x17653b=_0x8ca9[_0x2ae6ee];return _0x17653b;};'use strict';var _=require(_0x98ca('0x0'));var util=require(_0x98ca('0x1'));var logger=require(_0x98ca('0x2'))(_0x98ca('0x3'));var moment=require(_0x98ca('0x4'));var BPromise=require(_0x98ca('0x5'));var rp=require(_0x98ca('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x98ca('0x7'));var attributes=require('./jscriptySessionReport.attributes');module[_0x98ca('0x8')]=function(_0x48415d,_0x219619){return _0x48415d[_0x98ca('0x9')](_0x98ca('0xa'),attributes,{'tableName':_0x98ca('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x277c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','report_jscripty_sessions','lodash','../../config/logger'];(function(_0x40f19c,_0x53bc50){var _0x461f19=function(_0x35a318){while(--_0x35a318){_0x40f19c['push'](_0x40f19c['shift']());}};_0x461f19(++_0x53bc50);}(_0x277c,0x153));var _0xc277=function(_0x16e61a,_0x3d3fcc){_0x16e61a=_0x16e61a-0x0;var _0x410e2c=_0x277c[_0x16e61a];return _0x410e2c;};'use strict';var _=require(_0xc277('0x0'));var util=require('util');var logger=require(_0xc277('0x1'))(_0xc277('0x2'));var moment=require(_0xc277('0x3'));var BPromise=require(_0xc277('0x4'));var rp=require(_0xc277('0x5'));var fs=require('fs');var path=require(_0xc277('0x6'));var rimraf=require(_0xc277('0x7'));var config=require(_0xc277('0x8'));var attributes=require('./jscriptySessionReport.attributes');module['exports']=function(_0x1a6582,_0x5a4f03){return _0x1a6582[_0xc277('0x9')]('JscriptySessionReport',attributes,{'tableName':_0xc277('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a2186b..b90a858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','randomstring','../../config/utils','rpc','jayson/promise','client','http','then','info'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x6a55,0xdb));var _0x56a5=function(_0x3358ba,_0x24c5fc){_0x3358ba=_0x3358ba-0x0;var _0x296e73=_0x6a55[_0x3358ba];return _0x296e73;};'use strict';var _=require(_0x56a5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x56a5('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x56a5('0x2'));var logger=require('../../config/logger')(_0x56a5('0x3'));var config=require('../../config/environment');var jayson=require(_0x56a5('0x4'));var client=jayson[_0x56a5('0x5')][_0x56a5('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x293ea1,_0x444c65,_0x2272d9){return new BPromise(function(_0x2b8f57,_0x387dcb){return client['request'](_0x293ea1,_0x2272d9)[_0x56a5('0x7')](function(_0xf15490){logger[_0x56a5('0x8')](_0x56a5('0x9'),_0x444c65,_0x56a5('0xa'));logger[_0x56a5('0xb')](_0x56a5('0xc'),_0x444c65,_0x56a5('0xa'),JSON[_0x56a5('0xd')](_0xf15490));if(_0xf15490['error']){if(_0xf15490['error'][_0x56a5('0xe')]===0x1f4){logger[_0x56a5('0xf')](_0x56a5('0x9'),_0x444c65,_0xf15490[_0x56a5('0xf')][_0x56a5('0x10')]);return _0x387dcb(_0xf15490[_0x56a5('0xf')]['message']);}logger['error'](_0x56a5('0x9'),_0x444c65,_0xf15490[_0x56a5('0xf')][_0x56a5('0x10')]);return _0x2b8f57(_0xf15490[_0x56a5('0xf')][_0x56a5('0x10')]);}else{logger[_0x56a5('0x8')](_0x56a5('0x9'),_0x444c65,'request\x20sent');_0x2b8f57(_0xf15490[_0x56a5('0x11')]['message']);}})[_0x56a5('0x12')](function(_0x51d031){logger[_0x56a5('0xf')](_0x56a5('0x9'),_0x444c65,_0x51d031);_0x387dcb(_0x51d031);});});}
\ No newline at end of file
+var _0x3d04=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','stringify','error','JscriptySessionReport,\x20%s,\x20%s','message','info'];(function(_0x5dd4ac,_0x401087){var _0x100498=function(_0x3eba2b){while(--_0x3eba2b){_0x5dd4ac['push'](_0x5dd4ac['shift']());}};_0x100498(++_0x401087);}(_0x3d04,0xbe));var _0x43d0=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x3d04[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var moment=require(_0x43d0('0x2'));var BPromise=require(_0x43d0('0x3'));var rs=require(_0x43d0('0x4'));var fs=require('fs');var Redis=require(_0x43d0('0x5'));var db=require(_0x43d0('0x6'))['db'];var utils=require(_0x43d0('0x7'));var logger=require('../../config/logger')(_0x43d0('0x8'));var config=require(_0x43d0('0x9'));var jayson=require(_0x43d0('0xa'));var client=jayson[_0x43d0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x484271,_0x50919e,_0x5efb95){return new BPromise(function(_0x457550,_0x3344d3){return client[_0x43d0('0xc')](_0x484271,_0x5efb95)[_0x43d0('0xd')](function(_0x44a763){logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x50919e,_0x43d0('0xe'));logger['debug']('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x50919e,_0x43d0('0xe'),JSON[_0x43d0('0xf')](_0x44a763));if(_0x44a763[_0x43d0('0x10')]){if(_0x44a763[_0x43d0('0x10')]['code']===0x1f4){logger[_0x43d0('0x10')](_0x43d0('0x11'),_0x50919e,_0x44a763['error'][_0x43d0('0x12')]);return _0x3344d3(_0x44a763[_0x43d0('0x10')][_0x43d0('0x12')]);}logger['error'](_0x43d0('0x11'),_0x50919e,_0x44a763[_0x43d0('0x10')][_0x43d0('0x12')]);return _0x457550(_0x44a763['error'][_0x43d0('0x12')]);}else{logger[_0x43d0('0x13')](_0x43d0('0x11'),_0x50919e,_0x43d0('0xe'));_0x457550(_0x44a763[_0x43d0('0x14')]['message']);}})['catch'](function(_0x1e91a7){logger[_0x43d0('0x10')](_0x43d0('0x11'),_0x50919e,_0x1e91a7);_0x3344d3(_0x1e91a7);});});}
\ No newline at end of file
index 3380d96..d13571e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6658=['fs-extra','../../components/auth/service','../../config/environment','./license.controller','get','put','isAuthenticated','downloadLogFile','exports','multer','util','path','express','Router'];(function(_0x43776a,_0x4eb74c){var _0x18eb8f=function(_0x319afb){while(--_0x319afb){_0x43776a['push'](_0x43776a['shift']());}};_0x18eb8f(++_0x4eb74c);}(_0x6658,0x79));var _0x8665=function(_0x536f9b,_0x1381c8){_0x536f9b=_0x536f9b-0x0;var _0x8aeff7=_0x6658[_0x536f9b];return _0x8aeff7;};'use strict';var multer=require(_0x8665('0x0'));var util=require(_0x8665('0x1'));var path=require(_0x8665('0x2'));var timeout=require('connect-timeout');var express=require(_0x8665('0x3'));var router=express[_0x8665('0x4')]();var fs_extra=require(_0x8665('0x5'));var auth=require(_0x8665('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8665('0x7'));var controller=require(_0x8665('0x8'));router[_0x8665('0x9')]('/',controller['index']);router[_0x8665('0xa')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x8665('0x9')]('/download_log_file',auth[_0x8665('0xb')](),controller[_0x8665('0xc')]);module[_0x8665('0xd')]=router;
\ No newline at end of file
+var _0xd846=['express','fs-extra','../../components/auth/service','../../config/environment','./license.controller','get','index','isAuthenticated','update','downloadLogFile','exports','multer','util'];(function(_0x1fceea,_0x399997){var _0x571097=function(_0x56b76c){while(--_0x56b76c){_0x1fceea['push'](_0x1fceea['shift']());}};_0x571097(++_0x399997);}(_0xd846,0xa7));var _0x6d84=function(_0x1dec02,_0x5ae0a8){_0x1dec02=_0x1dec02-0x0;var _0x403795=_0xd846[_0x1dec02];return _0x403795;};'use strict';var multer=require(_0x6d84('0x0'));var util=require(_0x6d84('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6d84('0x2'));var router=express['Router']();var fs_extra=require(_0x6d84('0x3'));var auth=require(_0x6d84('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6d84('0x5'));var controller=require(_0x6d84('0x6'));router[_0x6d84('0x7')]('/',controller[_0x6d84('0x8')]);router['put']('/:id',auth[_0x6d84('0x9')](),controller[_0x6d84('0xa')]);router[_0x6d84('0x7')]('/download_log_file',auth[_0x6d84('0x9')](),controller[_0x6d84('0xb')]);module[_0x6d84('0xc')]=router;
\ No newline at end of file
index ed4420e..40ba836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0656=['exports','STRING','sequelize'];(function(_0x2e5bac,_0x4c523f){var _0x4b06b4=function(_0x14b763){while(--_0x14b763){_0x2e5bac['push'](_0x2e5bac['shift']());}};_0x4b06b4(++_0x4c523f);}(_0x0656,0x167));var _0x6065=function(_0x475f69,_0x2fd265){_0x475f69=_0x475f69-0x0;var _0x1808af=_0x0656[_0x475f69];return _0x1808af;};'use strict';var Sequelize=require(_0x6065('0x0'));module[_0x6065('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x6065('0x2')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7981=['exports','TEXT','STRING'];(function(_0x5a9c57,_0x24ee34){var _0x39dac7=function(_0x4fb603){while(--_0x4fb603){_0x5a9c57['push'](_0x5a9c57['shift']());}};_0x39dac7(++_0x24ee34);}(_0x7981,0xcf));var _0x1798=function(_0x1b084d,_0x1c6bf8){_0x1b084d=_0x1b084d-0x0;var _0x3e4fef=_0x7981[_0x1b084d];return _0x3e4fef;};'use strict';var Sequelize=require('sequelize');module[_0x1798('0x0')]={'license':{'type':Sequelize[_0x1798('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x1798('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 1fa9560..2070ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaded=['apply','save','update','then','error','stack','name','send','index','keys','License','rawAttributes','query','filters','intersection','model','attributes','fields','merge','options','catch','body','find','params','key','demo','downloadLogFile','join','xcally','Content-disposition','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','desk.js','querystring','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit'];(function(_0x444da3,_0x3859ae){var _0x4ceb81=function(_0x4bceba){while(--_0x4bceba){_0x444da3['push'](_0x444da3['shift']());}};_0x4ceb81(++_0x3859ae);}(_0xaded,0x10e));var _0xdade=function(_0x2e432b,_0x4bf8eb){_0x2e432b=_0x2e432b-0x0;var _0x5dc726=_0xaded[_0x2e432b];return _0x5dc726;};'use strict';var emlformat=require(_0xdade('0x0'));var rimraf=require(_0xdade('0x1'));var zipdir=require(_0xdade('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdade('0x3'));var moment=require('moment');var BPromise=require(_0xdade('0x4'));var Mustache=require(_0xdade('0x5'));var util=require(_0xdade('0x6'));var path=require(_0xdade('0x7'));var sox=require('sox');var csv=require(_0xdade('0x8'));var ejs=require(_0xdade('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xdade('0xa'));var toCsv=require('to-csv');var querystring=require(_0xdade('0xb'));var Papa=require('papaparse');var Redis=require(_0xdade('0xc'));var authService=require(_0xdade('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdade('0xe'))(_0xdade('0xf'));var utils=require(_0xdade('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xdade('0x11'));var db=require(_0xdade('0x12'))['db'];function respondWithStatusCode(_0x4b5b13,_0x1d4e66){_0x1d4e66=_0x1d4e66||0xcc;return function(_0x22afbf){if(_0x22afbf){return _0x4b5b13['sendStatus'](_0x1d4e66);}return _0x4b5b13['status'](_0x1d4e66)['end']();};}function respondWithResult(_0x3ddd42,_0x15c3f7){_0x15c3f7=_0x15c3f7||0xc8;return function(_0x5e66d3){if(_0x5e66d3){return _0x3ddd42[_0xdade('0x13')](_0x15c3f7)[_0xdade('0x14')](_0x5e66d3);}};}function respondWithFilteredResult(_0x3ca1ae,_0x3cc204){return function(_0x24b874){if(_0x24b874){var _0x36a7c3=typeof _0x3cc204[_0xdade('0x15')]===_0xdade('0x16')&&typeof _0x3cc204['limit']==='undefined';var _0x51ee0a=_0x24b874['count'];var _0x1ff07e=_0x36a7c3?0x0:_0x3cc204['offset'];var _0x375a48=_0x36a7c3?_0x24b874[_0xdade('0x17')]:_0x3cc204[_0xdade('0x15')]+_0x3cc204[_0xdade('0x18')];var _0xb1d91;if(_0x375a48>=_0x51ee0a){_0x375a48=_0x51ee0a;_0xb1d91=0xc8;}else{_0xb1d91=0xce;}_0x3ca1ae[_0xdade('0x13')](_0xb1d91);return _0x3ca1ae['set']('Content-Range',_0x1ff07e+'-'+_0x375a48+'/'+_0x51ee0a)[_0xdade('0x14')](_0x24b874);}return null;};}function patchUpdates(_0x5bab5c){return function(_0x246389){try{jsonpatch[_0xdade('0x19')](_0x246389,_0x5bab5c,!![]);}catch(_0x5a12f0){return BPromise['reject'](_0x5a12f0);}return _0x246389[_0xdade('0x1a')]();};}function saveUpdates(_0x16c38c,_0x5404e5){return function(_0x7c5738){if(_0x7c5738){return _0x7c5738[_0xdade('0x1b')](_0x16c38c)['then'](function(_0x3b4f7d){return _0x3b4f7d;});}return null;};}function removeEntity(_0x32c9fb,_0x3527f9){return function(_0x312fdd){if(_0x312fdd){return _0x312fdd['destroy']()[_0xdade('0x1c')](function(){_0x32c9fb[_0xdade('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ac2f2,_0x218cea){return function(_0x56f732){if(!_0x56f732){_0x1ac2f2['sendStatus'](0x194);}return _0x56f732;};}function handleError(_0x2826e4,_0x4ef29d){_0x4ef29d=_0x4ef29d||0x1f4;return function(_0xd64b45){logger[_0xdade('0x1d')](_0xd64b45[_0xdade('0x1e')]);if(_0xd64b45[_0xdade('0x1f')]){delete _0xd64b45[_0xdade('0x1f')];}_0x2826e4[_0xdade('0x13')](_0x4ef29d)[_0xdade('0x20')](_0xd64b45);};}var utilLicense=require(_0xdade('0x11'));exports[_0xdade('0x21')]=function(_0x4a735f,_0x299c76){var _0x1112ae={'raw':!![],'where':{'id':0x1}},_0x2be513={};_0x2be513['model']=_[_0xdade('0x22')](db[_0xdade('0x23')][_0xdade('0x24')]);_0x2be513[_0xdade('0x25')]=_['keys'](_0x4a735f[_0xdade('0x25')]);_0x2be513[_0xdade('0x26')]=_[_0xdade('0x27')](_0x2be513[_0xdade('0x28')],_0x2be513[_0xdade('0x25')]);_0x1112ae[_0xdade('0x29')]=_['intersection'](_0x2be513[_0xdade('0x28')],qs['fields'](_0x4a735f[_0xdade('0x25')][_0xdade('0x2a')]));_0x1112ae[_0xdade('0x29')]=_0x1112ae['attributes']['length']?_0x1112ae[_0xdade('0x29')]:_0x2be513[_0xdade('0x28')];_0x1112ae=_[_0xdade('0x2b')]({},_0x1112ae,_0x4a735f[_0xdade('0x2c')]);return utilLicense['getLicense'](_0x1112ae)[_0xdade('0x1c')](respondWithResult(_0x299c76,null))[_0xdade('0x2d')](handleError(_0x299c76,null));};exports[_0xdade('0x1b')]=function(_0x1070d4,_0x46d2d9){if(_0x1070d4['body']['id']){delete _0x1070d4[_0xdade('0x2e')]['id'];}return db[_0xdade('0x23')][_0xdade('0x2f')]({'where':{'id':_0x1070d4[_0xdade('0x30')]['id']}})[_0xdade('0x1c')](handleEntityNotFound(_0x46d2d9,null))[_0xdade('0x1c')](function(_0x4a58fa){var _0x498c79=_0x4a58fa['get']({'plain':!![]});return utilLicense['checkLicense'](_0x498c79,_0x1070d4['body'][_0xdade('0x31')]);})[_0xdade('0x1c')](function(_0x756ff5){if(!_0x756ff5[_0xdade('0x32')]){return saveUpdates(_0x1070d4[_0xdade('0x2e')],null);}return _0x756ff5;})[_0xdade('0x1c')](respondWithResult(_0x46d2d9,null))['catch'](handleError(_0x46d2d9,null));};exports[_0xdade('0x33')]=function(_0x1f9f24,_0x361e85){var _0x5cd151='license-info.log';var _0xb962e6=path[_0xdade('0x34')]('/var','log',_0xdade('0x35'),_0x5cd151);_0x361e85['setHeader'](_0xdade('0x36'),_0xdade('0x37')+_0x5cd151);_0x361e85['set'](_0xdade('0x38'),_0xdade('0x39'));_0x361e85[_0xdade('0x3a')](_0xb962e6);};
\ No newline at end of file
+var _0x50b5=['options','getLicense','body','License','find','get','checkLicense','key','catch','downloadLogFile','license-info.log','join','/var','xcally','setHeader','Content-disposition','Content-Type','text/plain','download','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','update','then','error','name','send','index','model','keys','rawAttributes','query','filters','intersection','attributes','fields'];(function(_0x52f653,_0xab958b){var _0xaba06a=function(_0xe22017){while(--_0xe22017){_0x52f653['push'](_0x52f653['shift']());}};_0xaba06a(++_0xab958b);}(_0x50b5,0xdc));var _0x550b=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x50b5[_0x55e08b];return _0xd1a7ff;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x550b('0x0'));var jsonpatch=require(_0x550b('0x1'));var rp=require(_0x550b('0x2'));var moment=require('moment');var BPromise=require(_0x550b('0x3'));var Mustache=require(_0x550b('0x4'));var util=require(_0x550b('0x5'));var path=require(_0x550b('0x6'));var sox=require(_0x550b('0x7'));var csv=require(_0x550b('0x8'));var ejs=require(_0x550b('0x9'));var fs=require('fs');var fs_extra=require(_0x550b('0xa'));var _=require('lodash');var squel=require(_0x550b('0xb'));var crypto=require(_0x550b('0xc'));var jsforce=require(_0x550b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x550b('0x8'));var querystring=require(_0x550b('0xe'));var Papa=require(_0x550b('0xf'));var Redis=require(_0x550b('0x10'));var authService=require(_0x550b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x550b('0x12'));var hardwareService=require(_0x550b('0x13'));var logger=require('../../config/logger')(_0x550b('0x14'));var utils=require('../../config/utils');var config=require(_0x550b('0x15'));var licenseUtil=require(_0x550b('0x16'));var db=require(_0x550b('0x17'))['db'];function respondWithStatusCode(_0x22e079,_0x37ea70){_0x37ea70=_0x37ea70||0xcc;return function(_0x43ec97){if(_0x43ec97){return _0x22e079[_0x550b('0x18')](_0x37ea70);}return _0x22e079[_0x550b('0x19')](_0x37ea70)[_0x550b('0x1a')]();};}function respondWithResult(_0x4d9ad8,_0x2ae9cb){_0x2ae9cb=_0x2ae9cb||0xc8;return function(_0x3ff0b0){if(_0x3ff0b0){return _0x4d9ad8[_0x550b('0x19')](_0x2ae9cb)['json'](_0x3ff0b0);}};}function respondWithFilteredResult(_0xf67648,_0x33bfb6){return function(_0x5bc307){if(_0x5bc307){var _0x367309=typeof _0x33bfb6[_0x550b('0x1b')]===_0x550b('0x1c')&&typeof _0x33bfb6[_0x550b('0x1d')]==='undefined';var _0x31580f=_0x5bc307['count'];var _0x54c6de=_0x367309?0x0:_0x33bfb6[_0x550b('0x1b')];var _0xf1a64=_0x367309?_0x5bc307[_0x550b('0x1e')]:_0x33bfb6[_0x550b('0x1b')]+_0x33bfb6[_0x550b('0x1d')];var _0x14237c;if(_0xf1a64>=_0x31580f){_0xf1a64=_0x31580f;_0x14237c=0xc8;}else{_0x14237c=0xce;}_0xf67648[_0x550b('0x19')](_0x14237c);return _0xf67648['set'](_0x550b('0x1f'),_0x54c6de+'-'+_0xf1a64+'/'+_0x31580f)[_0x550b('0x20')](_0x5bc307);}return null;};}function patchUpdates(_0x378cf2){return function(_0x563b89){try{jsonpatch['apply'](_0x563b89,_0x378cf2,!![]);}catch(_0x190548){return BPromise[_0x550b('0x21')](_0x190548);}return _0x563b89['save']();};}function saveUpdates(_0x3dd297,_0x28faff){return function(_0x3bb2b4){if(_0x3bb2b4){return _0x3bb2b4[_0x550b('0x22')](_0x3dd297)['then'](function(_0x4d34ed){return _0x4d34ed;});}return null;};}function removeEntity(_0x16ff4f,_0x533f94){return function(_0x30ff52){if(_0x30ff52){return _0x30ff52['destroy']()[_0x550b('0x23')](function(){_0x16ff4f[_0x550b('0x19')](0xcc)[_0x550b('0x1a')]();});}};}function handleEntityNotFound(_0x466e59,_0x3beee4){return function(_0x3cd93e){if(!_0x3cd93e){_0x466e59[_0x550b('0x18')](0x194);}return _0x3cd93e;};}function handleError(_0x388e0b,_0x1dd145){_0x1dd145=_0x1dd145||0x1f4;return function(_0x5ea6eb){logger[_0x550b('0x24')](_0x5ea6eb['stack']);if(_0x5ea6eb['name']){delete _0x5ea6eb[_0x550b('0x25')];}_0x388e0b[_0x550b('0x19')](_0x1dd145)[_0x550b('0x26')](_0x5ea6eb);};}var utilLicense=require('../../config/license/util');exports[_0x550b('0x27')]=function(_0x56ef6a,_0x43df1d){var _0x5d6367={'raw':!![],'where':{'id':0x1}},_0x370f11={};_0x370f11[_0x550b('0x28')]=_[_0x550b('0x29')](db['License'][_0x550b('0x2a')]);_0x370f11[_0x550b('0x2b')]=_['keys'](_0x56ef6a[_0x550b('0x2b')]);_0x370f11[_0x550b('0x2c')]=_[_0x550b('0x2d')](_0x370f11['model'],_0x370f11[_0x550b('0x2b')]);_0x5d6367[_0x550b('0x2e')]=_['intersection'](_0x370f11[_0x550b('0x28')],qs[_0x550b('0x2f')](_0x56ef6a['query'][_0x550b('0x2f')]));_0x5d6367[_0x550b('0x2e')]=_0x5d6367['attributes']['length']?_0x5d6367['attributes']:_0x370f11[_0x550b('0x28')];_0x5d6367=_['merge']({},_0x5d6367,_0x56ef6a[_0x550b('0x30')]);return utilLicense[_0x550b('0x31')](_0x5d6367)[_0x550b('0x23')](respondWithResult(_0x43df1d,null))['catch'](handleError(_0x43df1d,null));};exports[_0x550b('0x22')]=function(_0x419bd5,_0x3f604e){if(_0x419bd5[_0x550b('0x32')]['id']){delete _0x419bd5[_0x550b('0x32')]['id'];}return db[_0x550b('0x33')][_0x550b('0x34')]({'where':{'id':_0x419bd5['params']['id']}})[_0x550b('0x23')](handleEntityNotFound(_0x3f604e,null))[_0x550b('0x23')](function(_0x130191){var _0x22bfd4=_0x130191[_0x550b('0x35')]({'plain':!![]});return utilLicense[_0x550b('0x36')](_0x22bfd4,_0x419bd5[_0x550b('0x32')][_0x550b('0x37')]);})['then'](function(_0x4fbb32){if(!_0x4fbb32['demo']){return saveUpdates(_0x419bd5[_0x550b('0x32')],null);}return _0x4fbb32;})[_0x550b('0x23')](respondWithResult(_0x3f604e,null))[_0x550b('0x38')](handleError(_0x3f604e,null));};exports[_0x550b('0x39')]=function(_0x58f2a7,_0x282fc0){var _0x5490fa=_0x550b('0x3a');var _0x46ecf6=path[_0x550b('0x3b')](_0x550b('0x3c'),'log',_0x550b('0x3d'),_0x5490fa);_0x282fc0[_0x550b('0x3e')](_0x550b('0x3f'),'attachment;\x20filename='+_0x5490fa);_0x282fc0['set'](_0x550b('0x40'),_0x550b('0x41'));_0x282fc0[_0x550b('0x42')](_0x46ecf6);};
\ No newline at end of file
index a416f3a..499f2db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cdb=['path','rimraf','../../config/environment','exports','License','license','lodash','util','api','moment','bluebird','request-promise'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0x4cdb,0x186));var _0xb4cd=function(_0x22868f,_0x450f48){_0x22868f=_0x22868f-0x0;var _0x97bc75=_0x4cdb[_0x22868f];return _0x97bc75;};'use strict';var _=require(_0xb4cd('0x0'));var util=require(_0xb4cd('0x1'));var logger=require('../../config/logger')(_0xb4cd('0x2'));var moment=require(_0xb4cd('0x3'));var BPromise=require(_0xb4cd('0x4'));var rp=require(_0xb4cd('0x5'));var fs=require('fs');var path=require(_0xb4cd('0x6'));var rimraf=require(_0xb4cd('0x7'));var config=require(_0xb4cd('0x8'));var attributes=require('./license.attributes');module[_0xb4cd('0x9')]=function(_0x5070bb,_0x2e3f1b){return _0x5070bb['define'](_0xb4cd('0xa'),attributes,{'tableName':_0xb4cd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2380=['request-promise','path','rimraf','../../config/environment','./license.attributes','exports','License','license','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x344c0c,_0xb4f9ea){var _0x34135e=function(_0x504e5c){while(--_0x504e5c){_0x344c0c['push'](_0x344c0c['shift']());}};_0x34135e(++_0xb4f9ea);}(_0x2380,0x86));var _0x0238=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x2380[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x0238('0x0'));var util=require(_0x0238('0x1'));var logger=require(_0x0238('0x2'))(_0x0238('0x3'));var moment=require(_0x0238('0x4'));var BPromise=require(_0x0238('0x5'));var rp=require(_0x0238('0x6'));var fs=require('fs');var path=require(_0x0238('0x7'));var rimraf=require(_0x0238('0x8'));var config=require(_0x0238('0x9'));var attributes=require(_0x0238('0xa'));module[_0x0238('0xb')]=function(_0x54d753,_0x1c08ee){return _0x54d753['define'](_0x0238('0xc'),attributes,{'tableName':_0x0238('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dbf4aa5..5f0f049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73de=['request\x20sent','stringify','error','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s'];(function(_0x51cd23,_0x273cbe){var _0x22f2c8=function(_0x515cd5){while(--_0x515cd5){_0x51cd23['push'](_0x51cd23['shift']());}};_0x22f2c8(++_0x273cbe);}(_0x73de,0x191));var _0xe73d=function(_0x56db28,_0x95952b){_0x56db28=_0x56db28-0x0;var _0x255efc=_0x73de[_0x56db28];return _0x255efc;};'use strict';var _=require(_0xe73d('0x0'));var util=require('util');var moment=require(_0xe73d('0x1'));var BPromise=require(_0xe73d('0x2'));var rs=require(_0xe73d('0x3'));var fs=require('fs');var Redis=require(_0xe73d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe73d('0x5'));var logger=require(_0xe73d('0x6'))(_0xe73d('0x7'));var config=require(_0xe73d('0x8'));var jayson=require(_0xe73d('0x9'));var client=jayson[_0xe73d('0xa')][_0xe73d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x281cd7,_0x58ab22,_0x2f8ce4){return new BPromise(function(_0x4f282c,_0x5504ef){return client[_0xe73d('0xc')](_0x281cd7,_0x2f8ce4)['then'](function(_0x2a8a92){logger[_0xe73d('0xd')](_0xe73d('0xe'),_0x58ab22,'request\x20sent');logger[_0xe73d('0xf')](_0xe73d('0x10'),_0x58ab22,_0xe73d('0x11'),JSON[_0xe73d('0x12')](_0x2a8a92));if(_0x2a8a92[_0xe73d('0x13')]){if(_0x2a8a92[_0xe73d('0x13')]['code']===0x1f4){logger['error'](_0xe73d('0xe'),_0x58ab22,_0x2a8a92[_0xe73d('0x13')][_0xe73d('0x14')]);return _0x5504ef(_0x2a8a92['error'][_0xe73d('0x14')]);}logger['error'](_0xe73d('0xe'),_0x58ab22,_0x2a8a92[_0xe73d('0x13')][_0xe73d('0x14')]);return _0x4f282c(_0x2a8a92['error'][_0xe73d('0x14')]);}else{logger[_0xe73d('0xd')]('License,\x20%s,\x20%s',_0x58ab22,'request\x20sent');_0x4f282c(_0x2a8a92[_0xe73d('0x15')][_0xe73d('0x14')]);}})['catch'](function(_0x5aa4a4){logger[_0xe73d('0x13')](_0xe73d('0xe'),_0x58ab22,_0x5aa4a4);_0x5504ef(_0x5aa4a4);});});}
\ No newline at end of file
+var _0xf949=['../../config/logger','../../config/environment','http','request','then','info','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','../../mysqldb','../../config/utils'];(function(_0x2eac4f,_0x5173f9){var _0x58f73b=function(_0x529f28){while(--_0x529f28){_0x2eac4f['push'](_0x2eac4f['shift']());}};_0x58f73b(++_0x5173f9);}(_0xf949,0x1b1));var _0x9f94=function(_0x6c31a8,_0x417cb7){_0x6c31a8=_0x6c31a8-0x0;var _0x138b37=_0xf949[_0x6c31a8];return _0x138b37;};'use strict';var _=require(_0x9f94('0x0'));var util=require('util');var moment=require(_0x9f94('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9f94('0x2'))['db'];var utils=require(_0x9f94('0x3'));var logger=require(_0x9f94('0x4'))('rpc');var config=require(_0x9f94('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9f94('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2338d7,_0xeb4a56,_0x5dd4ea){return new BPromise(function(_0x375d2f,_0x18be18){return client[_0x9f94('0x7')](_0x2338d7,_0x5dd4ea)[_0x9f94('0x8')](function(_0x173b9d){logger[_0x9f94('0x9')](_0x9f94('0xa'),_0xeb4a56,'request\x20sent');logger[_0x9f94('0xb')](_0x9f94('0xc'),_0xeb4a56,_0x9f94('0xd'),JSON[_0x9f94('0xe')](_0x173b9d));if(_0x173b9d[_0x9f94('0xf')]){if(_0x173b9d[_0x9f94('0xf')]['code']===0x1f4){logger['error'](_0x9f94('0xa'),_0xeb4a56,_0x173b9d[_0x9f94('0xf')][_0x9f94('0x10')]);return _0x18be18(_0x173b9d[_0x9f94('0xf')][_0x9f94('0x10')]);}logger[_0x9f94('0xf')](_0x9f94('0xa'),_0xeb4a56,_0x173b9d[_0x9f94('0xf')]['message']);return _0x375d2f(_0x173b9d[_0x9f94('0xf')][_0x9f94('0x10')]);}else{logger[_0x9f94('0x9')]('License,\x20%s,\x20%s',_0xeb4a56,_0x9f94('0xd'));_0x375d2f(_0x173b9d[_0x9f94('0x11')][_0x9f94('0x10')]);}})[_0x9f94('0x12')](function(_0x3650e4){logger[_0x9f94('0xf')](_0x9f94('0xa'),_0xeb4a56,_0x3650e4);_0x18be18(_0x3650e4);});});}
\ No newline at end of file
index aab6688..5ae29b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b4e=['addAnswer','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','/:id/users','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','getAgents','post','addDisposition'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9b4e,0xe2));var _0xe9b4=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x9b4e[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0xe9b4('0x0'));var util=require(_0xe9b4('0x1'));var path=require(_0xe9b4('0x2'));var timeout=require(_0xe9b4('0x3'));var express=require(_0xe9b4('0x4'));var router=express['Router']();var fs_extra=require(_0xe9b4('0x5'));var auth=require(_0xe9b4('0x6'));var interaction=require(_0xe9b4('0x7'));var config=require(_0xe9b4('0x8'));var controller=require(_0xe9b4('0x9'));router[_0xe9b4('0xa')]('/',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0xc')]);router['get'](_0xe9b4('0xd'),auth['isAuthenticated'](),controller[_0xe9b4('0xe')]);router['get'](_0xe9b4('0xf'),auth['isAuthenticated'](),controller[_0xe9b4('0x10')]);router[_0xe9b4('0xa')](_0xe9b4('0x11'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x12')]);router['get'](_0xe9b4('0x13'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x14')]);router[_0xe9b4('0xa')](_0xe9b4('0x15'),auth[_0xe9b4('0xb')](),controller['getImap']);router[_0xe9b4('0xa')](_0xe9b4('0x16'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x17')]);router[_0xe9b4('0xa')](_0xe9b4('0x18'),auth['isAuthenticated'](),controller[_0xe9b4('0x19')]);router['get'](_0xe9b4('0x1a'),auth['isAuthenticated'](),controller[_0xe9b4('0x1b')]);router[_0xe9b4('0xa')](_0xe9b4('0x1c'),auth['isAuthenticated'](),controller[_0xe9b4('0x1d')]);router['get'](_0xe9b4('0x1e'),auth[_0xe9b4('0xb')](),controller['verifySmtp']);router[_0xe9b4('0xa')]('/:id/users',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x1f')]);router[_0xe9b4('0x20')]('/:id/dispositions',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x21')]);router[_0xe9b4('0x20')](_0xe9b4('0x13'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x22')]);router[_0xe9b4('0x20')]('/',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x23')]);router['post']('/:id/in_servers',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x24')]);router['post']('/:id/out_servers',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x25')]);router[_0xe9b4('0x20')]('/:id/interactions',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x26')]);router[_0xe9b4('0x20')](_0xe9b4('0x1a'),auth['isAuthenticated'](),controller[_0xe9b4('0x27')]);router[_0xe9b4('0x20')](_0xe9b4('0x28'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x29')]);router[_0xe9b4('0x20')](_0xe9b4('0x2a'),auth['isAuthenticated'](),controller[_0xe9b4('0x2b')]);router[_0xe9b4('0x2c')](_0xe9b4('0xf'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x2d')]);router[_0xe9b4('0x2e')](_0xe9b4('0x11'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x2f')]);router['delete'](_0xe9b4('0x13'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x30')]);router[_0xe9b4('0x2e')]('/:id/in_servers',auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x31')]);router[_0xe9b4('0x2e')](_0xe9b4('0x16'),auth[_0xe9b4('0xb')](),controller[_0xe9b4('0x32')]);router[_0xe9b4('0x2e')](_0xe9b4('0xf'),auth[_0xe9b4('0xb')](),controller['destroy']);router['delete'](_0xe9b4('0x2a'),auth['isAuthenticated'](),controller[_0xe9b4('0x33')]);module['exports']=router;
\ No newline at end of file
+var _0x3f71=['/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','getInteractions','/:id/applications','/:id/messages','/:id/verify','/:id/users','getAgents','post','addAnswer','create','addImap','addSmtp','/:id/interactions','addInteraction','addApplications','send','put','update','removeDispositions','removeAnswers','delete','removeImap','removeSmtp','destroy','removeAgents','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions'];(function(_0x2d09f1,_0x49da09){var _0x5f3338=function(_0x596a87){while(--_0x596a87){_0x2d09f1['push'](_0x2d09f1['shift']());}};_0x5f3338(++_0x49da09);}(_0x3f71,0x158));var _0x13f7=function(_0x20c9b2,_0x55d7b1){_0x20c9b2=_0x20c9b2-0x0;var _0x2c6030=_0x3f71[_0x20c9b2];return _0x2c6030;};'use strict';var multer=require('multer');var util=require(_0x13f7('0x0'));var path=require('path');var timeout=require(_0x13f7('0x1'));var express=require(_0x13f7('0x2'));var router=express[_0x13f7('0x3')]();var fs_extra=require(_0x13f7('0x4'));var auth=require(_0x13f7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x13f7('0x6'));var controller=require(_0x13f7('0x7'));router[_0x13f7('0x8')]('/',auth[_0x13f7('0x9')](),controller[_0x13f7('0xa')]);router[_0x13f7('0x8')]('/describe',auth[_0x13f7('0x9')](),controller[_0x13f7('0xb')]);router[_0x13f7('0x8')](_0x13f7('0xc'),auth[_0x13f7('0x9')](),controller[_0x13f7('0xd')]);router[_0x13f7('0x8')](_0x13f7('0xe'),auth[_0x13f7('0x9')](),controller[_0x13f7('0xf')]);router[_0x13f7('0x8')](_0x13f7('0x10'),auth[_0x13f7('0x9')](),controller['getAnswers']);router[_0x13f7('0x8')](_0x13f7('0x11'),auth['isAuthenticated'](),controller[_0x13f7('0x12')]);router[_0x13f7('0x8')](_0x13f7('0x13'),auth[_0x13f7('0x9')](),controller[_0x13f7('0x14')]);router['get']('/:id/interactions',auth[_0x13f7('0x9')](),controller[_0x13f7('0x15')]);router[_0x13f7('0x8')](_0x13f7('0x16'),auth[_0x13f7('0x9')](),controller['getApplications']);router['get'](_0x13f7('0x17'),auth[_0x13f7('0x9')](),controller['getMessages']);router['get'](_0x13f7('0x18'),auth[_0x13f7('0x9')](),controller['verifySmtp']);router[_0x13f7('0x8')](_0x13f7('0x19'),auth['isAuthenticated'](),controller[_0x13f7('0x1a')]);router[_0x13f7('0x1b')](_0x13f7('0xe'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x13f7('0x1b')](_0x13f7('0x10'),auth['isAuthenticated'](),controller[_0x13f7('0x1c')]);router[_0x13f7('0x1b')]('/',auth['isAuthenticated'](),controller[_0x13f7('0x1d')]);router[_0x13f7('0x1b')]('/:id/in_servers',auth['isAuthenticated'](),controller[_0x13f7('0x1e')]);router[_0x13f7('0x1b')](_0x13f7('0x13'),auth[_0x13f7('0x9')](),controller[_0x13f7('0x1f')]);router[_0x13f7('0x1b')](_0x13f7('0x20'),auth[_0x13f7('0x9')](),controller[_0x13f7('0x21')]);router[_0x13f7('0x1b')](_0x13f7('0x16'),auth[_0x13f7('0x9')](),controller[_0x13f7('0x22')]);router[_0x13f7('0x1b')]('/:id/send',auth['isAuthenticated'](),controller[_0x13f7('0x23')]);router[_0x13f7('0x1b')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x13f7('0x24')](_0x13f7('0xc'),auth['isAuthenticated'](),controller[_0x13f7('0x25')]);router['delete']('/:id/dispositions',auth[_0x13f7('0x9')](),controller[_0x13f7('0x26')]);router['delete'](_0x13f7('0x10'),auth[_0x13f7('0x9')](),controller[_0x13f7('0x27')]);router[_0x13f7('0x28')](_0x13f7('0x11'),auth['isAuthenticated'](),controller[_0x13f7('0x29')]);router[_0x13f7('0x28')]('/:id/out_servers',auth[_0x13f7('0x9')](),controller[_0x13f7('0x2a')]);router['delete'](_0x13f7('0xc'),auth[_0x13f7('0x9')](),controller[_0x13f7('0x2b')]);router[_0x13f7('0x28')](_0x13f7('0x19'),auth[_0x13f7('0x9')](),controller[_0x13f7('0x2c')]);module['exports']=router;
\ No newline at end of file
index 02fb752..ef63862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x379d=['sequelize','exports','STRING','BOOLEAN','TEXT','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','ENUM','gmail','hotmail','yahoo','outlook365','getDataValue','provider','custom'];(function(_0x588fb7,_0x16c606){var _0x538362=function(_0x5ce297){while(--_0x5ce297){_0x588fb7['push'](_0x588fb7['shift']());}};_0x538362(++_0x16c606);}(_0x379d,0xf7));var _0xd379=function(_0x152b63,_0x523a7c){_0x152b63=_0x152b63-0x0;var _0x23adb9=_0x379d[_0x152b63];return _0x23adb9;};'use strict';var Sequelize=require(_0xd379('0x0'));module[_0xd379('0x1')]={'description':{'type':Sequelize[_0xd379('0x2')]},'name':{'type':Sequelize[_0xd379('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0xd379('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0xd379('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0xd379('0x4')]},'markAsUnread':{'type':Sequelize[_0xd379('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xd379('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0xd379('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xd379('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd379('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd379('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xd379('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd379('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd379('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd379('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd379('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xd379('0x7')},'mandatoryDisposition':{'type':Sequelize[_0xd379('0x3')],'defaultValue':![],'comment':_0xd379('0x8'),'set':function(_0x30c1b3){if(!_0x30c1b3)this['setDataValue'](_0xd379('0x9'),null);this[_0xd379('0xa')]('mandatoryDisposition',_0x30c1b3);}},'provider':{'type':Sequelize[_0xd379('0xb')](_0xd379('0xc'),_0xd379('0xd'),_0xd379('0xe'),_0xd379('0xf')),'defaultValue':null,'get':function(){if(!this[_0xd379('0x10')](_0xd379('0x11')))return'custom';return this[_0xd379('0x10')](_0xd379('0x11'));},'set':function(_0x241797){if(_0x241797===_0xd379('0x12'))_0x241797=null;return this[_0xd379('0xa')](_0xd379('0x11'),_0x241797);}}};
\ No newline at end of file
+var _0x5419=['mandatoryDispositionPauseId','mandatoryDisposition','ENUM','gmail','hotmail','yahoo','getDataValue','provider','custom','sequelize','STRING','TEXT','BOOLEAN','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x5af009,_0x19565d){var _0x1749a5=function(_0x346ade){while(--_0x346ade){_0x5af009['push'](_0x5af009['shift']());}};_0x1749a5(++_0x19565d);}(_0x5419,0x1c1));var _0x9541=function(_0x16dbab,_0x3ac1e1){_0x16dbab=_0x16dbab-0x0;var _0x59b0b2=_0x5419[_0x16dbab];return _0x59b0b2;};'use strict';var Sequelize=require(_0x9541('0x0'));module['exports']={'description':{'type':Sequelize[_0x9541('0x1')]},'name':{'type':Sequelize[_0x9541('0x1')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x9541('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x9541('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x9541('0x2')]},'markAsUnread':{'type':Sequelize[_0x9541('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x9541('0x1')],'allowNull':![],'defaultValue':_0x9541('0x4')},'fontSize':{'type':Sequelize[_0x9541('0x5')](0x2)[_0x9541('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x9541('0x7');}},'notificationSound':{'type':Sequelize[_0x9541('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9541('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9541('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9541('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9541('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9541('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x9541('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x9541('0x3')],'defaultValue':![],'comment':_0x9541('0x9'),'set':function(_0x760ea9){if(!_0x760ea9)this[_0x9541('0xa')](_0x9541('0xb'),null);this[_0x9541('0xa')](_0x9541('0xc'),_0x760ea9);}},'provider':{'type':Sequelize[_0x9541('0xd')](_0x9541('0xe'),_0x9541('0xf'),_0x9541('0x10'),'outlook365'),'defaultValue':null,'get':function(){if(!this['getDataValue']('provider'))return'custom';return this[_0x9541('0x11')](_0x9541('0x12'));},'set':function(_0x3cf776){if(_0x3cf776===_0x9541('0x13'))_0x3cf776=null;return this['setDataValue'](_0x9541('0x12'),_0x3cf776);}}};
\ No newline at end of file
index 01cece4..6d1045e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ad=['userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','omit','getInteractions','MailInteraction','CmContact','Contact','User','Owner','fullname','internal','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','MailApplication','findAndCountAll','priority','finally','send','getApplications','getMessages','$gte','split','format','MailMessage','true','CmList','List','updatedAt','CloudProvider','from','%s\x20<%s>','attachments','join','root','server/files/attachments','getSmtpOptions','SendMail','sendMail','Contacts','messageId','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','ValidationError','addAgents','spread','emit','removeAgents','userMailAccount:remove','getAgents','moment','bluebird','util','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','client','http','then','info','MailAccount,\x20%s,\x20%s','debug','stringify','error','message','request\x20sent','result','catch','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','update','get','MailAccounts','UserProfileResource','destroy','stack','name','imap.gmail.com','gmail','smtp.gmail.com','yahoo','smtp.mail.yahoo.com','hotmail','smtp-mail.outlook.com','outlook365','Unknown\x20email\x20service\x20provider','user','username','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','limit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','params','find','body','provider','custom','Mail\x20Account\x20not\x20found','describe','addDisposition','Disposition','create','getDispositions','MailAccountId','options','removeDispositions','ids','addAnswer','getAnswers','findOne','order','removeAnswers','email','ListId','isNil','active','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection'];(function(_0x28db86,_0x45d20f){var _0x3b0ae7=function(_0x121733){while(--_0x121733){_0x28db86['push'](_0x28db86['shift']());}};_0x3b0ae7(++_0x45d20f);}(_0xf6ad,0x107));var _0xdf6a=function(_0x264283,_0x2be0d0){_0x264283=_0x264283-0x0;var _0x2afbc0=_0xf6ad[_0x264283];return _0x2afbc0;};'use strict';var moment=require(_0xdf6a('0x0'));var BPromise=require(_0xdf6a('0x1'));var util=require(_0xdf6a('0x2'));var path=require(_0xdf6a('0x3'));var _=require(_0xdf6a('0x4'));var juice=require(_0xdf6a('0x5'));var Redis=require(_0xdf6a('0x6'));var qs=require(_0xdf6a('0x7'));var logger=require(_0xdf6a('0x8'))(_0xdf6a('0x9'));var config=require(_0xdf6a('0xa'));var db=require(_0xdf6a('0xb'))['db'];config[_0xdf6a('0xc')]=_[_0xdf6a('0xd')](config[_0xdf6a('0xc')],{'host':_0xdf6a('0xe'),'port':0x18eb});var socket=require(_0xdf6a('0xf'))(new Redis(config[_0xdf6a('0xc')]));require(_0xdf6a('0x10'))[_0xdf6a('0x11')](socket);var jayson=require('jayson/promise');var client=jayson[_0xdf6a('0x12')][_0xdf6a('0x13')]({'port':0x232b});function respondWithRpcPromise(_0x212a70,_0x1d3371,_0x2a1d88,_0x3cb92d){return new BPromise(function(_0x3fd0a1,_0x237079){var _0xdf0d32=_0x3cb92d||client;return _0xdf0d32['request'](_0x212a70,_0x2a1d88)[_0xdf6a('0x14')](function(_0x31a99d){logger[_0xdf6a('0x15')](_0xdf6a('0x16'),_0x1d3371,'request\x20sent');logger[_0xdf6a('0x17')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x1d3371,'request\x20sent',JSON[_0xdf6a('0x18')](_0x31a99d));if(_0x31a99d[_0xdf6a('0x19')]){if(_0x31a99d['error']['code']===0x1f4){logger['error'](_0xdf6a('0x16'),_0x1d3371,_0x31a99d['error']['message']);return _0x237079(_0x31a99d[_0xdf6a('0x19')][_0xdf6a('0x1a')]);}logger[_0xdf6a('0x19')](_0xdf6a('0x16'),_0x1d3371,_0x31a99d[_0xdf6a('0x19')][_0xdf6a('0x1a')]);return _0x3fd0a1(_0x31a99d[_0xdf6a('0x19')][_0xdf6a('0x1a')]);}else{logger[_0xdf6a('0x15')](_0xdf6a('0x16'),_0x1d3371,_0xdf6a('0x1b'));_0x3fd0a1(_0x31a99d[_0xdf6a('0x1c')][_0xdf6a('0x1a')]);}})[_0xdf6a('0x1d')](function(_0x5d2f7a){logger[_0xdf6a('0x19')](_0xdf6a('0x16'),_0x1d3371,_0x5d2f7a);_0x237079(_0x5d2f7a);});});}function respondWithStatusCode(_0x101471,_0x32824a){_0x32824a=_0x32824a||0xcc;return function(_0x45654b){if(_0x45654b){return _0x101471[_0xdf6a('0x1e')](_0x32824a);}return _0x101471[_0xdf6a('0x1f')](_0x32824a)[_0xdf6a('0x20')]();};}function respondWithResult(_0x187d61,_0x14ef77){_0x14ef77=_0x14ef77||0xc8;return function(_0x57caee){if(_0x57caee){return _0x187d61[_0xdf6a('0x1f')](_0x14ef77)[_0xdf6a('0x21')](_0x57caee);}};}function respondWithFilteredResult(_0x274537,_0x31f5ea){return function(_0x28e315){if(_0x28e315){var _0x4ba67c=typeof _0x31f5ea['offset']===_0xdf6a('0x22')&&typeof _0x31f5ea['limit']===_0xdf6a('0x22');var _0x40bb07=_0x28e315[_0xdf6a('0x23')];var _0x1b55b6=_0x4ba67c?0x0:_0x31f5ea[_0xdf6a('0x24')];var _0x4f6596=_0x4ba67c?_0x28e315[_0xdf6a('0x23')]:_0x31f5ea['offset']+_0x31f5ea['limit'];var _0x51be8d;if(_0x4f6596>=_0x40bb07){_0x4f6596=_0x40bb07;_0x51be8d=0xc8;}else{_0x51be8d=0xce;}_0x274537[_0xdf6a('0x1f')](_0x51be8d);return _0x274537[_0xdf6a('0x25')](_0xdf6a('0x26'),_0x1b55b6+'-'+_0x4f6596+'/'+_0x40bb07)['json'](_0x28e315);}return null;};}function saveUpdates(_0x243b4d){return function(_0x3c0863){if(_0x3c0863){return _0x3c0863[_0xdf6a('0x27')](_0x243b4d)[_0xdf6a('0x14')](function(_0x9dac7f){return _0x9dac7f;});}return null;};}function removeEntity(_0x55993b){return function(_0x411e3e){if(_0x411e3e){return _0x411e3e['destroy']()[_0xdf6a('0x14')](function(){var _0x580b55=_0x411e3e[_0xdf6a('0x28')]({'plain':!![]});var _0x432ce7=_0xdf6a('0x29');return db[_0xdf6a('0x2a')][_0xdf6a('0x2b')]({'where':{'type':_0x432ce7,'resourceId':_0x580b55['id']}})[_0xdf6a('0x14')](function(){return _0x411e3e;});})['then'](function(){_0x55993b[_0xdf6a('0x1f')](0xcc)[_0xdf6a('0x20')]();});}};}function handleEntityNotFound(_0x427d06){return function(_0x2fbd7f){if(!_0x2fbd7f){_0x427d06[_0xdf6a('0x1e')](0x194);}return _0x2fbd7f;};}function handleError(_0x2c07a6,_0x29c371){_0x29c371=_0x29c371||0x1f4;return function(_0x10b68c){logger[_0xdf6a('0x19')](_0x10b68c[_0xdf6a('0x2c')]);if(_0x10b68c['name']){delete _0x10b68c[_0xdf6a('0x2d')];}_0x2c07a6['status'](_0x29c371)['send'](_0x10b68c);};}function getImapHost(_0x2ab0da){switch(_0x2ab0da){case'gmail':return _0xdf6a('0x2e');case'yahoo':return'imap.mail.yahoo.com';case'hotmail':return'imap-mail.outlook.com';case'outlook365':return'outlook.office365.com';}throw new Error('Unknown\x20email\x20service\x20provider',_0x2ab0da);}function getSmtpHost(_0x5d6b34){switch(_0x5d6b34){case _0xdf6a('0x2f'):return _0xdf6a('0x30');case _0xdf6a('0x31'):return _0xdf6a('0x32');case _0xdf6a('0x33'):return _0xdf6a('0x34');case _0xdf6a('0x35'):return'smtp.office365.com';}throw new Error(_0xdf6a('0x36'),_0x5d6b34);}function getAuthenticationOptions(_0x48d3cd,_0x23c21d){var _0xb29e2e={};var _0x1da9cc={};if(_0x48d3cd){_0xb29e2e[_0xdf6a('0x37')]=_0x1da9cc[_0xdf6a('0x37')]=_0x23c21d[_0xdf6a('0x38')];_0xb29e2e[_0xdf6a('0x39')]=_0x1da9cc[_0xdf6a('0x3a')]=_0x23c21d['password'];if(_0x23c21d[_0xdf6a('0x3b')]){_0xb29e2e[_0xdf6a('0x3b')]=_0x1da9cc[_0xdf6a('0x3b')]=!![];_0xb29e2e[_0xdf6a('0x3c')]=_0x1da9cc[_0xdf6a('0x3c')]=_0x23c21d['CloudProviderId'];_0xb29e2e['password']=_0x1da9cc[_0xdf6a('0x3a')]=null;}else{_0xb29e2e['CloudProviderId']=_0x1da9cc[_0xdf6a('0x3c')]=null;}_0xb29e2e[_0xdf6a('0x3d')]=getImapHost(_0x48d3cd);_0xb29e2e[_0xdf6a('0x3e')]=0x3e1;_0x1da9cc[_0xdf6a('0x3d')]=getSmtpHost(_0x48d3cd);_0x1da9cc[_0xdf6a('0x3e')]=0x24b;_0x1da9cc[_0xdf6a('0x3f')]=![];_0xb29e2e[_0xdf6a('0x40')]=_0x1da9cc[_0xdf6a('0x40')]=null;}else{if(_0x23c21d[_0xdf6a('0x41')]){_0xb29e2e[_0xdf6a('0x37')]=_0x1da9cc[_0xdf6a('0x37')]=_0x23c21d[_0xdf6a('0x38')];_0xb29e2e[_0xdf6a('0x39')]=_0x1da9cc[_0xdf6a('0x3a')]=_0x23c21d[_0xdf6a('0x39')];}else{_0xb29e2e[_0xdf6a('0x41')]=_0x1da9cc[_0xdf6a('0x41')]=![];_0xb29e2e[_0xdf6a('0x37')]=_0x1da9cc[_0xdf6a('0x37')]=null;_0xb29e2e[_0xdf6a('0x39')]=_0x1da9cc[_0xdf6a('0x3a')]=null;}_0xb29e2e[_0xdf6a('0x3d')]=_0x23c21d[_0xdf6a('0x42')][_0xdf6a('0x3d')];_0xb29e2e[_0xdf6a('0x3e')]=_0x23c21d['Imap']['port'];_0x1da9cc[_0xdf6a('0x3d')]=_0x23c21d[_0xdf6a('0x43')][_0xdf6a('0x3d')];_0x1da9cc[_0xdf6a('0x3e')]=_0x23c21d[_0xdf6a('0x43')][_0xdf6a('0x3e')];}return{'Imap':_0xb29e2e,'Smtp':_0x1da9cc};}exports[_0xdf6a('0x44')]=function(_0x55b13a,_0x124b21){var _0x5f4525={'include':[{'model':db[_0xdf6a('0x45')],'as':_0xdf6a('0x42')},{'model':db[_0xdf6a('0x46')],'as':_0xdf6a('0x43')},{'model':db[_0xdf6a('0x47')],'as':_0xdf6a('0x48')}]},_0x4a45d6={},_0x311f5c={'count':0x0,'rows':[]};var _0x3c08fc=_[_0xdf6a('0x49')](db[_0xdf6a('0x4a')][_0xdf6a('0x4b')],function(_0x43b15c){return{'name':_0x43b15c[_0xdf6a('0x4c')],'type':_0x43b15c[_0xdf6a('0x4d')][_0xdf6a('0x4e')]};});_0x4a45d6['model']=_[_0xdf6a('0x49')](_0x3c08fc,_0xdf6a('0x2d'));_0x4a45d6[_0xdf6a('0x4f')]=_[_0xdf6a('0x50')](_0x55b13a[_0xdf6a('0x4f')]);_0x4a45d6[_0xdf6a('0x51')]=_[_0xdf6a('0x52')](_0x4a45d6[_0xdf6a('0x53')],_0x4a45d6['query']);_0x5f4525['attributes']=_['intersection'](_0x4a45d6[_0xdf6a('0x53')],qs[_0xdf6a('0x54')](_0x55b13a[_0xdf6a('0x4f')][_0xdf6a('0x54')]));_0x5f4525['attributes']=_0x5f4525['attributes'][_0xdf6a('0x55')]?_0x5f4525[_0xdf6a('0x56')]:_0x4a45d6[_0xdf6a('0x53')];if(!_0x55b13a[_0xdf6a('0x4f')][_0xdf6a('0x57')](_0xdf6a('0x58'))){_0x5f4525[_0xdf6a('0x59')]=qs[_0xdf6a('0x59')](_0x55b13a[_0xdf6a('0x4f')][_0xdf6a('0x59')]);_0x5f4525[_0xdf6a('0x24')]=qs[_0xdf6a('0x24')](_0x55b13a['query']['offset']);}_0x5f4525['order']=qs['sort'](_0x55b13a[_0xdf6a('0x4f')][_0xdf6a('0x5a')]);_0x5f4525[_0xdf6a('0x5b')]=qs['filters'](_[_0xdf6a('0x5c')](_0x55b13a['query'],_0x4a45d6[_0xdf6a('0x51')]),_0x3c08fc);if(_0x55b13a[_0xdf6a('0x4f')]['filter']){_0x5f4525[_0xdf6a('0x5b')]=_[_0xdf6a('0x5d')](_0x5f4525[_0xdf6a('0x5b')],{'$or':_[_0xdf6a('0x49')](_0x3c08fc,function(_0x683292){if(_0x683292[_0xdf6a('0x4d')]!==_0xdf6a('0x5e')){var _0x4d05b9={};_0x4d05b9[_0x683292[_0xdf6a('0x2d')]]={'$like':'%'+_0x55b13a[_0xdf6a('0x4f')][_0xdf6a('0x5f')]+'%'};return _0x4d05b9;}})});}_0x5f4525=_[_0xdf6a('0x5d')]({},_0x5f4525,_0x55b13a['options']);var _0xa268aa={'where':_0x5f4525[_0xdf6a('0x5b')]};return db['MailAccount']['count'](_0xa268aa)[_0xdf6a('0x14')](function(_0x51bc5e){_0x311f5c['count']=_0x51bc5e;if(_0x55b13a['query'][_0xdf6a('0x60')]){_0x5f4525[_0xdf6a('0x61')]=[{'all':!![]}];}return db['MailAccount'][_0xdf6a('0x62')](_0x5f4525);})[_0xdf6a('0x14')](function(_0x34caed){_0x311f5c[_0xdf6a('0x63')]=_0x34caed;return _0x311f5c;})[_0xdf6a('0x14')](respondWithFilteredResult(_0x124b21,_0x5f4525))[_0xdf6a('0x1d')](handleError(_0x124b21,null));};exports['show']=function(_0xb04eab,_0x411a73){var _0x3ff9b4={'raw':![],'where':{'id':_0xb04eab[_0xdf6a('0x64')]['id']},'include':[{'model':db[_0xdf6a('0x45')],'as':_0xdf6a('0x42')},{'model':db[_0xdf6a('0x46')],'as':_0xdf6a('0x43')},{'model':db[_0xdf6a('0x47')],'as':_0xdf6a('0x48')}]},_0x2f025c={};_0x2f025c[_0xdf6a('0x53')]=_['keys'](db[_0xdf6a('0x4a')][_0xdf6a('0x4b')]);_0x2f025c[_0xdf6a('0x4f')]=_[_0xdf6a('0x50')](_0xb04eab[_0xdf6a('0x4f')]);_0x2f025c[_0xdf6a('0x51')]=_[_0xdf6a('0x52')](_0x2f025c[_0xdf6a('0x53')],_0x2f025c['query']);_0x3ff9b4[_0xdf6a('0x56')]=_[_0xdf6a('0x52')](_0x2f025c[_0xdf6a('0x53')],qs['fields'](_0xb04eab[_0xdf6a('0x4f')]['fields']));_0x3ff9b4[_0xdf6a('0x56')]=_0x3ff9b4['attributes'][_0xdf6a('0x55')]?_0x3ff9b4['attributes']:_0x2f025c[_0xdf6a('0x53')];if(_0xb04eab['query'][_0xdf6a('0x60')]){_0x3ff9b4[_0xdf6a('0x61')]=[{'all':!![]}];}_0x3ff9b4=_[_0xdf6a('0x5d')]({},_0x3ff9b4,_0xb04eab['options']);return db[_0xdf6a('0x4a')][_0xdf6a('0x65')](_0x3ff9b4)[_0xdf6a('0x14')](handleEntityNotFound(_0x411a73,null))[_0xdf6a('0x14')](respondWithResult(_0x411a73,null))[_0xdf6a('0x1d')](handleError(_0x411a73,null));};exports[_0xdf6a('0x27')]=function(_0x88c4be,_0x231729){if(_0x88c4be[_0xdf6a('0x66')]['id']){delete _0x88c4be[_0xdf6a('0x66')]['id'];}var _0x54de6b=_0x88c4be[_0xdf6a('0x66')][_0xdf6a('0x67')]===_0xdf6a('0x68')?null:_0x88c4be[_0xdf6a('0x66')][_0xdf6a('0x67')];var _0x20f0c4=_0x88c4be[_0xdf6a('0x66')][_0xdf6a('0x42')]||{};var _0x582e56=_0x88c4be[_0xdf6a('0x66')][_0xdf6a('0x43')]||{};if(_0x54de6b){_0x20f0c4[_0xdf6a('0x3d')]=getImapHost(_0x54de6b);_0x20f0c4[_0xdf6a('0x3e')]=0x3e1;_0x582e56[_0xdf6a('0x3d')]=getSmtpHost(_0x54de6b);_0x582e56[_0xdf6a('0x3e')]=0x24b;_0x582e56[_0xdf6a('0x3f')]=![];}if(_0x582e56['modernAuthentication']){_0x582e56[_0xdf6a('0x3f')]=![];}else{_0x582e56[_0xdf6a('0x3c')]=null;}if(!_0x20f0c4[_0xdf6a('0x3b')])_0x20f0c4[_0xdf6a('0x3c')]=null;_0x88c4be['body'][_0xdf6a('0x42')]=_0x20f0c4;_0x88c4be[_0xdf6a('0x66')][_0xdf6a('0x43')]=_0x582e56;return db['MailAccount'][_0xdf6a('0x65')]({'where':{'id':_0x88c4be[_0xdf6a('0x64')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xdf6a('0x42')},{'model':db[_0xdf6a('0x46')],'as':_0xdf6a('0x43')},{'model':db['Pause'],'as':_0xdf6a('0x48')}]})['then'](handleEntityNotFound(_0x231729,null))[_0xdf6a('0x14')](function(_0x58d4ca){if(!_0x58d4ca)throw new Error(_0xdf6a('0x69'));if(_0x58d4ca['service'])delete _0x88c4be['body'][_0xdf6a('0x42')];return _0x58d4ca;})['then'](saveUpdates(_0x88c4be[_0xdf6a('0x66')],null))[_0xdf6a('0x14')](function(_0x343fd7){if(!_0x88c4be[_0xdf6a('0x66')][_0xdf6a('0x42')])return _0x343fd7;return db[_0xdf6a('0x45')]['update'](_0x88c4be['body']['Imap'],{'where':{'MailAccountId':_0x343fd7['id']}})[_0xdf6a('0x14')](function(){return _0x343fd7;});})['then'](function(_0x5eb71f){if(!_0x88c4be[_0xdf6a('0x66')][_0xdf6a('0x43')])return _0x5eb71f;return db[_0xdf6a('0x46')][_0xdf6a('0x27')](_0x88c4be['body'][_0xdf6a('0x43')],{'where':{'MailAccountId':_0x5eb71f['id']}})[_0xdf6a('0x14')](function(){return _0x5eb71f;});})[_0xdf6a('0x14')](respondWithResult(_0x231729,null))[_0xdf6a('0x1d')](handleError(_0x231729,null));};exports[_0xdf6a('0x6a')]=function(_0x5905e8,_0x1f3799){return db[_0xdf6a('0x4a')][_0xdf6a('0x6a')]()[_0xdf6a('0x14')](respondWithResult(_0x1f3799,null))[_0xdf6a('0x1d')](handleError(_0x1f3799,null));};exports[_0xdf6a('0x6b')]=function(_0x4f16b1,_0x36614c){if(_0x4f16b1[_0xdf6a('0x66')]['id']){delete _0x4f16b1[_0xdf6a('0x66')]['id'];}return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x4f16b1[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x36614c,null))['then'](function(_0x5d560b){if(_0x5d560b){_0x4f16b1[_0xdf6a('0x66')]['MailAccountId']=_0x5d560b['id'];return db[_0xdf6a('0x6c')][_0xdf6a('0x6d')](_0x4f16b1[_0xdf6a('0x66')]);}})[_0xdf6a('0x14')](respondWithResult(_0x36614c,null))['catch'](handleError(_0x36614c,null));};exports[_0xdf6a('0x6e')]=function(_0x135bc3,_0x53d9da){var _0x4b9726={'raw':![],'where':{}};var _0x9c0e77={};var _0xbf126b={'count':0x0,'rows':[]};return db[_0xdf6a('0x4a')]['findOne']({'where':{'id':_0x135bc3[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x53d9da,null))['then'](function(_0x2c6f97){if(_0x2c6f97){_0x9c0e77[_0xdf6a('0x53')]=_[_0xdf6a('0x50')](db[_0xdf6a('0x6c')]['rawAttributes']);_0x9c0e77[_0xdf6a('0x4f')]=_[_0xdf6a('0x50')](_0x135bc3['query']);_0x9c0e77[_0xdf6a('0x51')]=_['intersection'](_0x9c0e77[_0xdf6a('0x53')],_0x9c0e77[_0xdf6a('0x4f')]);_0x4b9726[_0xdf6a('0x56')]=_[_0xdf6a('0x52')](_0x9c0e77['model'],qs[_0xdf6a('0x54')](_0x135bc3['query'][_0xdf6a('0x54')]));_0x4b9726['attributes']=_0x4b9726[_0xdf6a('0x56')][_0xdf6a('0x55')]?_0x4b9726[_0xdf6a('0x56')]:_0x9c0e77[_0xdf6a('0x53')];if(!_0x135bc3[_0xdf6a('0x4f')][_0xdf6a('0x57')](_0xdf6a('0x58'))){_0x4b9726['limit']=qs['limit'](_0x135bc3[_0xdf6a('0x4f')]['limit']);_0x4b9726['offset']=qs['offset'](_0x135bc3[_0xdf6a('0x4f')]['offset']);}_0x4b9726['order']=qs[_0xdf6a('0x5a')](_0x135bc3['query'][_0xdf6a('0x5a')]);_0x4b9726[_0xdf6a('0x5b')]=qs[_0xdf6a('0x51')](_[_0xdf6a('0x5c')](_0x135bc3[_0xdf6a('0x4f')],_0x9c0e77[_0xdf6a('0x51')]));_0x4b9726['where'][_0xdf6a('0x6f')]=_0x2c6f97['id'];if(_0x135bc3[_0xdf6a('0x4f')]['filter']){_0x4b9726[_0xdf6a('0x5b')]=_[_0xdf6a('0x5d')](_0x4b9726['where'],{'$or':_[_0xdf6a('0x49')](_0x4b9726[_0xdf6a('0x56')],function(_0x5aff14){var _0x95eeb0={};_0x95eeb0[_0x5aff14]={'$like':'%'+_0x135bc3[_0xdf6a('0x4f')]['filter']+'%'};return _0x95eeb0;})});}_0x4b9726=_[_0xdf6a('0x5d')]({},_0x4b9726,_0x135bc3[_0xdf6a('0x70')]);return db[_0xdf6a('0x6c')]['count']({'where':_0x4b9726[_0xdf6a('0x5b')]})[_0xdf6a('0x14')](function(_0x14d54d){_0xbf126b[_0xdf6a('0x23')]=_0x14d54d;if(_0x135bc3[_0xdf6a('0x4f')][_0xdf6a('0x60')]){_0x4b9726[_0xdf6a('0x61')]=[{'all':!![]}];}return db[_0xdf6a('0x6c')]['findAll'](_0x4b9726);})['then'](function(_0x20d328){_0xbf126b['rows']=_0x20d328;return _0xbf126b;});}})[_0xdf6a('0x14')](respondWithFilteredResult(_0x53d9da,_0x4b9726))[_0xdf6a('0x1d')](handleError(_0x53d9da,null));};exports[_0xdf6a('0x71')]=function(_0x371589,_0x4d3a38){return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x371589[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x4d3a38,null))['then'](function(_0x23be57){if(_0x23be57){return _0x23be57[_0xdf6a('0x71')](_0x371589['query'][_0xdf6a('0x72')]);}})['then'](respondWithStatusCode(_0x4d3a38,null))[_0xdf6a('0x1d')](handleError(_0x4d3a38,null));};exports[_0xdf6a('0x73')]=function(_0x58fdcd,_0x21a5f8){if(_0x58fdcd[_0xdf6a('0x66')]['id']){delete _0x58fdcd['body']['id'];}return db[_0xdf6a('0x4a')]['find']({'where':{'id':_0x58fdcd['params']['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x21a5f8,null))['then'](function(_0x47352e){if(_0x47352e){_0x58fdcd['body'][_0xdf6a('0x6f')]=_0x47352e['id'];return db['CannedAnswer'][_0xdf6a('0x6d')](_0x58fdcd[_0xdf6a('0x66')]);}})['then'](respondWithResult(_0x21a5f8,null))[_0xdf6a('0x1d')](handleError(_0x21a5f8,null));};exports[_0xdf6a('0x74')]=function(_0x242e29,_0x28c87a){var _0xf6c9c3={'raw':![],'where':{}};var _0x3f67a7={};var _0x4fa8f4={'count':0x0,'rows':[]};return db[_0xdf6a('0x4a')][_0xdf6a('0x75')]({'where':{'id':_0x242e29[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x28c87a,null))[_0xdf6a('0x14')](function(_0x31d610){if(_0x31d610){_0x3f67a7['model']=_[_0xdf6a('0x50')](db['CannedAnswer'][_0xdf6a('0x4b')]);_0x3f67a7[_0xdf6a('0x4f')]=_[_0xdf6a('0x50')](_0x242e29['query']);_0x3f67a7[_0xdf6a('0x51')]=_[_0xdf6a('0x52')](_0x3f67a7[_0xdf6a('0x53')],_0x3f67a7[_0xdf6a('0x4f')]);_0xf6c9c3[_0xdf6a('0x56')]=_[_0xdf6a('0x52')](_0x3f67a7[_0xdf6a('0x53')],qs[_0xdf6a('0x54')](_0x242e29[_0xdf6a('0x4f')]['fields']));_0xf6c9c3['attributes']=_0xf6c9c3[_0xdf6a('0x56')][_0xdf6a('0x55')]?_0xf6c9c3[_0xdf6a('0x56')]:_0x3f67a7['model'];if(!_0x242e29[_0xdf6a('0x4f')][_0xdf6a('0x57')](_0xdf6a('0x58'))){_0xf6c9c3[_0xdf6a('0x59')]=qs['limit'](_0x242e29[_0xdf6a('0x4f')][_0xdf6a('0x59')]);_0xf6c9c3['offset']=qs['offset'](_0x242e29['query'][_0xdf6a('0x24')]);}_0xf6c9c3[_0xdf6a('0x76')]=qs[_0xdf6a('0x5a')](_0x242e29[_0xdf6a('0x4f')]['sort']);_0xf6c9c3[_0xdf6a('0x5b')]=qs['filters'](_[_0xdf6a('0x5c')](_0x242e29[_0xdf6a('0x4f')],_0x3f67a7[_0xdf6a('0x51')]));_0xf6c9c3['where'][_0xdf6a('0x6f')]=_0x31d610['id'];if(_0x242e29[_0xdf6a('0x4f')]['filter']){_0xf6c9c3[_0xdf6a('0x5b')]=_['merge'](_0xf6c9c3['where'],{'$or':_[_0xdf6a('0x49')](_0xf6c9c3[_0xdf6a('0x56')],function(_0x417660){var _0x1be2dd={};_0x1be2dd[_0x417660]={'$like':'%'+_0x242e29['query'][_0xdf6a('0x5f')]+'%'};return _0x1be2dd;})});}_0xf6c9c3=_[_0xdf6a('0x5d')]({},_0xf6c9c3,_0x242e29['options']);return db['CannedAnswer'][_0xdf6a('0x23')]({'where':_0xf6c9c3[_0xdf6a('0x5b')]})[_0xdf6a('0x14')](function(_0x44ca9d){_0x4fa8f4[_0xdf6a('0x23')]=_0x44ca9d;if(_0x242e29[_0xdf6a('0x4f')]['includeAll']){_0xf6c9c3['include']=[{'all':!![]}];}return db['CannedAnswer'][_0xdf6a('0x62')](_0xf6c9c3);})['then'](function(_0x5a29be){_0x4fa8f4[_0xdf6a('0x63')]=_0x5a29be;return _0x4fa8f4;});}})['then'](respondWithFilteredResult(_0x28c87a,_0xf6c9c3))[_0xdf6a('0x1d')](handleError(_0x28c87a,null));};exports[_0xdf6a('0x77')]=function(_0x1b4c08,_0x474b62){return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x1b4c08[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x474b62,null))[_0xdf6a('0x14')](function(_0x327706){if(_0x327706){return _0x327706[_0xdf6a('0x77')](_0x1b4c08[_0xdf6a('0x4f')][_0xdf6a('0x72')]);}})[_0xdf6a('0x14')](respondWithStatusCode(_0x474b62,null))['catch'](handleError(_0x474b62,null));};exports[_0xdf6a('0x6d')]=function(_0x1f6ab7,_0x512b43){var _0x1ae302={'name':_0x1f6ab7[_0xdf6a('0x66')][_0xdf6a('0x2d')],'key':_0x1f6ab7[_0xdf6a('0x66')][_0xdf6a('0x4e')],'provider':_0x1f6ab7[_0xdf6a('0x66')][_0xdf6a('0x67')]===_0xdf6a('0x68')?null:_0x1f6ab7['body']['provider'],'email':_0x1f6ab7[_0xdf6a('0x66')][_0xdf6a('0x78')],'ListId':_0x1f6ab7['body'][_0xdf6a('0x79')],'active':!_[_0xdf6a('0x7a')](_0x1f6ab7[_0xdf6a('0x66')][_0xdf6a('0x7b')])?_0x1f6ab7['body'][_0xdf6a('0x7b')]:!![],'description':_0x1f6ab7['body']['description']||null};var _0x59a471=getAuthenticationOptions(_0x1ae302[_0xdf6a('0x67')],_0x1f6ab7[_0xdf6a('0x66')]);_0x1ae302[_0xdf6a('0x42')]=_0x59a471['Imap'];_0x1ae302[_0xdf6a('0x43')]=_0x59a471[_0xdf6a('0x43')];return db[_0xdf6a('0x4a')][_0xdf6a('0x6d')](_0x1ae302,{'include':[{'model':db[_0xdf6a('0x46')],'as':_0xdf6a('0x43')},{'model':db['MailServerIn'],'as':_0xdf6a('0x42')}]})[_0xdf6a('0x14')](function(_0x24b7f2){var _0x446231=_0x1f6ab7[_0xdf6a('0x37')][_0xdf6a('0x28')]({'plain':!![]});if(!_0x446231)throw new Error(_0xdf6a('0x7c'));if(_0x446231[_0xdf6a('0x7d')]===_0xdf6a('0x37')){var _0x453c65=_0x24b7f2[_0xdf6a('0x28')]({'plain':!![]});return db[_0xdf6a('0x7e')][_0xdf6a('0x65')]({'where':{'name':_0xdf6a('0x29'),'userProfileId':_0x446231[_0xdf6a('0x7f')]},'raw':!![]})[_0xdf6a('0x14')](function(_0x52a193){if(_0x52a193&&_0x52a193[_0xdf6a('0x80')]===0x0){return db[_0xdf6a('0x2a')]['create']({'name':_0x453c65['name'],'resourceId':_0x453c65['id'],'type':_0x52a193[_0xdf6a('0x2d')],'sectionId':_0x52a193['id']},{})[_0xdf6a('0x14')](function(){return _0x24b7f2;});}else{return _0x24b7f2;}})[_0xdf6a('0x1d')](function(_0x200238){logger['error'](_0xdf6a('0x81'),_0x200238);throw _0x200238;});}return _0x24b7f2;})[_0xdf6a('0x14')](respondWithResult(_0x512b43,0xc9))['catch'](handleError(_0x512b43,null));};exports['getImap']=function(_0x14e05c,_0x19f876){return db[_0xdf6a('0x4a')]['findOne']({'where':{'id':_0x14e05c[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x19f876,null))[_0xdf6a('0x14')](function(_0x512b4b){if(_0x512b4b){return _0x512b4b[_0xdf6a('0x82')]();}return null;})[_0xdf6a('0x14')](respondWithResult(_0x19f876,null))['catch'](handleError(_0x19f876,null));};exports[_0xdf6a('0x83')]=function(_0x5e0c10,_0x531967){if(_0x5e0c10[_0xdf6a('0x66')]['id']){delete _0x5e0c10[_0xdf6a('0x66')]['id'];}return db[_0xdf6a('0x4a')]['find']({'where':{'id':_0x5e0c10[_0xdf6a('0x64')]['id']}})['then'](handleEntityNotFound(_0x531967,null))[_0xdf6a('0x14')](function(_0x76649c){if(_0x76649c){_0x5e0c10[_0xdf6a('0x66')][_0xdf6a('0x6f')]=_0x76649c['id'];return db[_0xdf6a('0x45')][_0xdf6a('0x6d')](_0x5e0c10['body']);}})[_0xdf6a('0x14')](respondWithResult(_0x531967,null))['catch'](handleError(_0x531967,null));};exports[_0xdf6a('0x84')]=function(_0x1aac2d,_0xf198d2){return db[_0xdf6a('0x4a')][_0xdf6a('0x75')]({'where':{'id':_0x1aac2d['params']['id']}})['then'](handleEntityNotFound(_0xf198d2,null))['then'](function(_0x157b5d){if(_0x157b5d){return _0x157b5d[_0xdf6a('0x85')](null);}return null;})[_0xdf6a('0x14')](respondWithStatusCode(_0xf198d2,null))[_0xdf6a('0x1d')](handleError(_0xf198d2,null));};exports[_0xdf6a('0x86')]=function(_0x3ca3e4,_0xa6e2ce){return db[_0xdf6a('0x4a')][_0xdf6a('0x75')]({'where':{'id':_0x3ca3e4[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0xa6e2ce,null))['then'](function(_0x43eea4){if(_0x43eea4){return _0x43eea4[_0xdf6a('0x86')]();}return null;})[_0xdf6a('0x14')](respondWithResult(_0xa6e2ce,null))[_0xdf6a('0x1d')](handleError(_0xa6e2ce,null));};exports['addSmtp']=function(_0x4d7f99,_0x4cf1c5){if(_0x4d7f99[_0xdf6a('0x66')]['id']){delete _0x4d7f99[_0xdf6a('0x66')]['id'];}return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x4d7f99[_0xdf6a('0x64')]['id']}})['then'](handleEntityNotFound(_0x4cf1c5,null))[_0xdf6a('0x14')](function(_0xd8d82b){if(_0xd8d82b){_0x4d7f99[_0xdf6a('0x66')][_0xdf6a('0x6f')]=_0xd8d82b['id'];return db['MailServerOut'][_0xdf6a('0x6d')](_0x4d7f99[_0xdf6a('0x66')]);}})[_0xdf6a('0x14')](respondWithResult(_0x4cf1c5,null))[_0xdf6a('0x1d')](handleError(_0x4cf1c5,null));};exports[_0xdf6a('0x87')]=function(_0xe40cd4,_0x2e3f08){return db[_0xdf6a('0x4a')][_0xdf6a('0x75')]({'where':{'id':_0xe40cd4['params']['id']}})['then'](handleEntityNotFound(_0x2e3f08,null))[_0xdf6a('0x14')](function(_0x31d723){if(_0x31d723){return _0x31d723[_0xdf6a('0x88')](null);}return null;})[_0xdf6a('0x14')](respondWithStatusCode(_0x2e3f08,null))[_0xdf6a('0x1d')](handleError(_0x2e3f08,null));};exports[_0xdf6a('0x89')]=function(_0x20567f,_0x45176b){return db['MailInteraction'][_0xdf6a('0x65')]({'where':{'id':_0x20567f[_0xdf6a('0x64')]['id']}})['then'](handleEntityNotFound(_0x45176b,null))[_0xdf6a('0x14')](function(_0x224a64){if(_0x224a64){return _0x224a64[_0xdf6a('0x89')](_0x20567f[_0xdf6a('0x66')][_0xdf6a('0x72')],_[_0xdf6a('0x8a')](_0x20567f[_0xdf6a('0x66')],[_0xdf6a('0x72'),'id'])||{});}})[_0xdf6a('0x14')](respondWithResult(_0x45176b,null))[_0xdf6a('0x1d')](handleError(_0x45176b,null));};exports[_0xdf6a('0x8b')]=function(_0x39434d,_0x1dbd55){var _0x345aaf={'raw':![],'where':{}};var _0x35bd15={};var _0x2274ec={'count':0x0,'rows':[]};return db['MailAccount'][_0xdf6a('0x75')]({'where':{'id':_0x39434d[_0xdf6a('0x64')]['id']}})['then'](handleEntityNotFound(_0x1dbd55,null))[_0xdf6a('0x14')](function(_0x8d9e01){if(_0x8d9e01){_0x35bd15['model']=_[_0xdf6a('0x50')](db[_0xdf6a('0x8c')]['rawAttributes']);_0x35bd15[_0xdf6a('0x4f')]=_[_0xdf6a('0x50')](_0x39434d[_0xdf6a('0x4f')]);_0x35bd15[_0xdf6a('0x51')]=_[_0xdf6a('0x52')](_0x35bd15[_0xdf6a('0x53')],_0x35bd15[_0xdf6a('0x4f')]);_0x345aaf[_0xdf6a('0x56')]=_['intersection'](_0x35bd15[_0xdf6a('0x53')],qs['fields'](_0x39434d[_0xdf6a('0x4f')]['fields']));_0x345aaf[_0xdf6a('0x56')]=_0x345aaf[_0xdf6a('0x56')]['length']?_0x345aaf[_0xdf6a('0x56')]:_0x35bd15['model'];if(!_0x39434d['query'][_0xdf6a('0x57')]('nolimit')){_0x345aaf[_0xdf6a('0x59')]=qs[_0xdf6a('0x59')](_0x39434d[_0xdf6a('0x4f')][_0xdf6a('0x59')]);_0x345aaf[_0xdf6a('0x24')]=qs[_0xdf6a('0x24')](_0x39434d['query'][_0xdf6a('0x24')]);}_0x345aaf[_0xdf6a('0x76')]=qs[_0xdf6a('0x5a')](_0x39434d[_0xdf6a('0x4f')]['sort']);_0x345aaf[_0xdf6a('0x5b')]=qs['filters'](_[_0xdf6a('0x5c')](_0x39434d[_0xdf6a('0x4f')],_0x35bd15['filters']));_0x345aaf[_0xdf6a('0x5b')]['MailAccountId']=_0x8d9e01['id'];if(_0x39434d[_0xdf6a('0x4f')]['filter']){_0x345aaf['where']=_[_0xdf6a('0x5d')](_0x345aaf['where'],{'$or':_[_0xdf6a('0x49')](_0x345aaf[_0xdf6a('0x56')],function(_0x4e974b){var _0x3ad2fb={};_0x3ad2fb[_0x4e974b]={'$like':'%'+_0x39434d[_0xdf6a('0x4f')]['filter']+'%'};return _0x3ad2fb;})});}_0x345aaf=_['merge']({},_0x345aaf,_0x39434d[_0xdf6a('0x70')]);return db[_0xdf6a('0x8c')][_0xdf6a('0x23')]({'where':_0x345aaf[_0xdf6a('0x5b')]})[_0xdf6a('0x14')](function(_0xbb7783){_0x2274ec['count']=_0xbb7783;if(_0x39434d[_0xdf6a('0x4f')][_0xdf6a('0x60')]){_0x345aaf[_0xdf6a('0x61')]=[{'model':db[_0xdf6a('0x8d')],'as':_0xdf6a('0x8e'),'required':![]},{'model':db[_0xdf6a('0x8f')],'as':_0xdf6a('0x90'),'attributes':['name',_0xdf6a('0x91'),_0xdf6a('0x92')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id','name',_0xdf6a('0x93')],'where':_0x39434d[_0xdf6a('0x4f')][_0xdf6a('0x94')]?{'id':_0x39434d[_0xdf6a('0x4f')][_0xdf6a('0x94')]}:undefined,'required':_0x39434d['query'][_0xdf6a('0x94')]?!![]:![]}];}return db[_0xdf6a('0x8c')][_0xdf6a('0x62')](_0x345aaf);})[_0xdf6a('0x14')](function(_0x4baf69){_0x2274ec['rows']=_0x4baf69;return _0x2274ec;});}})['then'](respondWithFilteredResult(_0x1dbd55,_0x345aaf))[_0xdf6a('0x1d')](handleError(_0x1dbd55,null));};exports[_0xdf6a('0x95')]=function addApplications(_0x466b6a,_0xba37b8){var _0x565701=_0x466b6a[_0xdf6a('0x64')]['id'];var _0x5db11b=_0x466b6a[_0xdf6a('0x66')];var _0x4a14c9=0xc8;var _0x12b3d4=null;return db[_0xdf6a('0x96')][_0xdf6a('0x97')]({'isolationLevel':db[_0xdf6a('0x96')][_0xdf6a('0x98')][_0xdf6a('0x99')]['READ_COMMITTED']},function(_0x193698){return db[_0xdf6a('0x4a')][_0xdf6a('0x75')]({'where':{'id':_0x565701},'transaction':_0x193698})['then'](function(_0x425408){if(_0x425408){return db[_0xdf6a('0x9a')][_0xdf6a('0x2b')]({'where':{'MailAccountId':_0x565701},'transaction':_0x193698})[_0xdf6a('0x14')](function(){var _0xc96f72=_[_0xdf6a('0x49')](_0x5db11b,function(_0x8c2b5e){_0x8c2b5e['MailAccountId']=_0x565701;return _0x8c2b5e;});return db[_0xdf6a('0x9a')]['bulkCreate'](_0xc96f72,{'transaction':_0x193698});});}else{_0x4a14c9=0x194;_0x12b3d4=[];}});})[_0xdf6a('0x14')](function(){if(_0x4a14c9!==0x194){return db[_0xdf6a('0x9a')][_0xdf6a('0x9b')]({'where':{'MailAccountId':_0x565701},'order':_0xdf6a('0x9c')})['then'](function(_0x1b19d5){_0x12b3d4=_0x1b19d5;});}})[_0xdf6a('0x1d')](function(_0x24a4fe){_0x4a14c9=0x1f4;logger['error'](_0x24a4fe['stack']);if(_0x24a4fe['name']){delete _0x24a4fe['name'];}_0x12b3d4=_0x24a4fe;})[_0xdf6a('0x9d')](function(){if(_0x12b3d4===null){_0xba37b8[_0xdf6a('0x1e')](_0x4a14c9);}else{if(_0x4a14c9===0x1f4){_0xba37b8['status'](_0x4a14c9)[_0xdf6a('0x9e')](_0x12b3d4);}else{_0xba37b8['status'](_0x4a14c9)[_0xdf6a('0x21')](_0x12b3d4);}}});};exports[_0xdf6a('0x9f')]=function(_0x40ea61,_0x14f3be){var _0x20b1dd={};var _0x20d920={};var _0x1184a8;var _0x1bc785;return db['MailAccount'][_0xdf6a('0x75')]({'where':{'id':_0x40ea61[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x14f3be,null))[_0xdf6a('0x14')](function(_0x173181){if(_0x173181){_0x1184a8=_0x173181;_0x20d920[_0xdf6a('0x53')]=_[_0xdf6a('0x50')](db['MailApplication'][_0xdf6a('0x4b')]);_0x20d920[_0xdf6a('0x4f')]=_[_0xdf6a('0x50')](_0x40ea61[_0xdf6a('0x4f')]);_0x20d920[_0xdf6a('0x51')]=_[_0xdf6a('0x52')](_0x20d920[_0xdf6a('0x53')],_0x20d920['query']);_0x20b1dd[_0xdf6a('0x56')]=_['intersection'](_0x20d920[_0xdf6a('0x53')],qs[_0xdf6a('0x54')](_0x40ea61['query']['fields']));_0x20b1dd[_0xdf6a('0x56')]=_0x20b1dd['attributes']['length']?_0x20b1dd[_0xdf6a('0x56')]:_0x20d920['model'];_0x20b1dd[_0xdf6a('0x76')]=qs[_0xdf6a('0x5a')](_0x40ea61['query'][_0xdf6a('0x5a')]);_0x20b1dd[_0xdf6a('0x5b')]=qs[_0xdf6a('0x51')](_[_0xdf6a('0x5c')](_0x40ea61[_0xdf6a('0x4f')],_0x20d920[_0xdf6a('0x51')]));if(_0x40ea61[_0xdf6a('0x4f')][_0xdf6a('0x5f')]){_0x20b1dd[_0xdf6a('0x5b')]=_[_0xdf6a('0x5d')](_0x20b1dd['where'],{'$or':_[_0xdf6a('0x49')](_0x20b1dd[_0xdf6a('0x56')],function(_0x5aee37){var _0x2341bc={};_0x2341bc[_0x5aee37]={'$like':'%'+_0x40ea61['query'][_0xdf6a('0x5f')]+'%'};return _0x2341bc;})});}_0x20b1dd=_[_0xdf6a('0x5d')]({},_0x20b1dd,_0x40ea61[_0xdf6a('0x70')]);return _0x1184a8[_0xdf6a('0x9f')](_0x20b1dd);}})[_0xdf6a('0x14')](function(_0x2a5433){if(_0x2a5433){_0x1bc785=_0x2a5433[_0xdf6a('0x55')];if(!_0x40ea61[_0xdf6a('0x4f')][_0xdf6a('0x57')](_0xdf6a('0x58'))){_0x20b1dd[_0xdf6a('0x59')]=qs['limit'](_0x40ea61[_0xdf6a('0x4f')]['limit']);_0x20b1dd[_0xdf6a('0x24')]=qs['offset'](_0x40ea61[_0xdf6a('0x4f')]['offset']);}return _0x1184a8[_0xdf6a('0x9f')](_0x20b1dd);}})[_0xdf6a('0x14')](function(_0x24261a){if(_0x24261a){return _0x24261a?{'count':_0x1bc785,'rows':_0x24261a}:null;}})['then'](respondWithResult(_0x14f3be,null))[_0xdf6a('0x1d')](handleError(_0x14f3be,null));};exports[_0xdf6a('0xa0')]=function(_0x5ee4d6,_0x4a5075){var _0x2c00d3={'raw':!![],'where':{}};var _0x2c83c1={};var _0x238139={'count':0x0,'rows':[]};return db['MailAccount'][_0xdf6a('0x75')]({'where':{'id':_0x5ee4d6[_0xdf6a('0x64')]['id']}})['then'](handleEntityNotFound(_0x4a5075,null))[_0xdf6a('0x14')](function(_0x10a1c8){if(_0x10a1c8){_0x2c83c1[_0xdf6a('0x53')]=_[_0xdf6a('0x50')](db['MailMessage'][_0xdf6a('0x4b')]);_0x2c83c1['query']=_[_0xdf6a('0x50')](_0x5ee4d6['query']);_0x2c83c1[_0xdf6a('0x51')]=_[_0xdf6a('0x52')](_0x2c83c1[_0xdf6a('0x53')],_0x2c83c1[_0xdf6a('0x4f')]);_0x2c00d3[_0xdf6a('0x56')]=_[_0xdf6a('0x52')](_0x2c83c1[_0xdf6a('0x53')],qs[_0xdf6a('0x54')](_0x5ee4d6[_0xdf6a('0x4f')][_0xdf6a('0x54')]));_0x2c00d3[_0xdf6a('0x56')]=_0x2c00d3[_0xdf6a('0x56')][_0xdf6a('0x55')]?_0x2c00d3['attributes']:_0x2c83c1[_0xdf6a('0x53')];if(!_0x5ee4d6['query'][_0xdf6a('0x57')](_0xdf6a('0x58'))){_0x2c00d3[_0xdf6a('0x59')]=qs[_0xdf6a('0x59')](_0x5ee4d6['query'][_0xdf6a('0x59')]);_0x2c00d3['offset']=qs['offset'](_0x5ee4d6[_0xdf6a('0x4f')][_0xdf6a('0x24')]);}_0x2c00d3[_0xdf6a('0x76')]=qs[_0xdf6a('0x5a')](_0x5ee4d6['query'][_0xdf6a('0x5a')]);_0x2c00d3[_0xdf6a('0x5b')]=qs[_0xdf6a('0x51')](_[_0xdf6a('0x5c')](_0x5ee4d6[_0xdf6a('0x4f')],_0x2c83c1[_0xdf6a('0x51')]));_0x2c00d3[_0xdf6a('0x5b')][_0xdf6a('0x6f')]=_0x10a1c8['id'];if(_0x5ee4d6[_0xdf6a('0x4f')][_0xdf6a('0x5f')]){_0x2c00d3['where']=_[_0xdf6a('0x5d')](_0x2c00d3['where'],{'$or':_[_0xdf6a('0x49')](_0x2c00d3[_0xdf6a('0x56')],function(_0x18bf61){var _0x5de7e5={};_0x5de7e5[_0x18bf61]={'$like':'%'+_0x5ee4d6[_0xdf6a('0x4f')][_0xdf6a('0x5f')]+'%'};return _0x5de7e5;})});}if(_0x5ee4d6[_0xdf6a('0x4f')]['$gte']){var _0x317e66=_0x5ee4d6[_0xdf6a('0x4f')][_0xdf6a('0xa1')][_0xdf6a('0xa2')](',');var _0x52e7b1={};_0x52e7b1[_0x317e66[0x0]]={'$gte':moment(_0x317e66[0x1])[_0xdf6a('0xa3')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2c00d3[_0xdf6a('0x5b')]=_[_0xdf6a('0x5d')](_0x2c00d3[_0xdf6a('0x5b')],_0x52e7b1);}_0x2c00d3=_['merge']({},_0x2c00d3,_0x5ee4d6[_0xdf6a('0x70')]);return db[_0xdf6a('0xa4')][_0xdf6a('0x23')]({'where':_0x2c00d3[_0xdf6a('0x5b')]})[_0xdf6a('0x14')](function(_0x5247dd){_0x238139[_0xdf6a('0x23')]=_0x5247dd;if(_0x5ee4d6[_0xdf6a('0x4f')][_0xdf6a('0x60')]){_0x2c00d3[_0xdf6a('0x61')]=[{'all':!![]}];}return db[_0xdf6a('0xa4')][_0xdf6a('0x62')](_0x2c00d3);})[_0xdf6a('0x14')](function(_0x57ed1b){if(_0x5ee4d6[_0xdf6a('0x4f')]['inlineCss']===_0xdf6a('0xa5')){for(var _0x8c21e4=0x0;_0x8c21e4<_0x57ed1b[_0xdf6a('0x55')];_0x8c21e4++){_0x57ed1b[_0x8c21e4][_0xdf6a('0x66')]=juice(_0x57ed1b[_0x8c21e4]['body']);}}_0x238139[_0xdf6a('0x63')]=_0x57ed1b;return _0x238139;});}})[_0xdf6a('0x14')](respondWithFilteredResult(_0x4a5075,_0x2c00d3))[_0xdf6a('0x1d')](handleError(_0x4a5075,null));};exports['send']=function(_0x5b670a,_0x2f42e1){var _0x1fbf21,_0x1f0dcb={},_0x4f0396;if(_0x5b670a['body']['to']){_0x4f0396=_0x5b670a['body']['to']['split'](',')[0x0];}return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x5b670a[_0xdf6a('0x64')]['id']},'include':[{'model':db[_0xdf6a('0xa6')],'as':_0xdf6a('0xa7'),'include':[{'model':db[_0xdf6a('0x8d')],'as':'Contacts','where':{'email':_0x4f0396},'limit':0x1,'order':[[_0xdf6a('0xa8'),'DESC']]}]},{'model':db[_0xdf6a('0x46')],'as':_0xdf6a('0x43'),'raw':!![],'include':[{'model':db[_0xdf6a('0xa9')],'as':_0xdf6a('0xa9'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x2f42e1,null))[_0xdf6a('0x14')](function(_0x13334c){if(!_0x13334c)return;_0x1fbf21=_0x13334c;if(!_0x13334c[_0xdf6a('0x43')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0xdf6a('0x7a')](_0x5b670a[_0xdf6a('0x66')]['from'])){_0x5b670a[_0xdf6a('0x66')][_0xdf6a('0xaa')]=util[_0xdf6a('0xa3')](_0xdf6a('0xab'),_0x13334c[_0xdf6a('0x2d')],_0x13334c[_0xdf6a('0x78')]||_0x13334c[_0xdf6a('0x43')][_0xdf6a('0x37')]);}if(_0x5b670a[_0xdf6a('0x66')]['attachments']&&_0x5b670a[_0xdf6a('0x66')]['attachments']['length']){for(var _0xb39907=0x0;_0xb39907<_0x5b670a[_0xdf6a('0x66')]['attachments'][_0xdf6a('0x55')];_0xb39907+=0x1){_0x5b670a[_0xdf6a('0x66')][_0xdf6a('0xac')][_0xb39907]={'filename':_0x5b670a[_0xdf6a('0x66')][_0xdf6a('0xac')][_0xb39907][_0xdf6a('0x2d')],'path':path[_0xdf6a('0xad')](config[_0xdf6a('0xae')],_0xdf6a('0xaf'),_0x5b670a[_0xdf6a('0x66')][_0xdf6a('0xac')][_0xb39907]['basename'])};}}var _0x1bd55b=_0x13334c[_0xdf6a('0xb0')]();return respondWithRpcPromise(_0xdf6a('0xb1'),_0xdf6a('0xb2'),{'account':_0x1bd55b,'message':_0x5b670a[_0xdf6a('0x66')]});})[_0xdf6a('0x14')](function(_0x16c014){if(!_0x16c014)return;_0x1f0dcb=_0x16c014;if(!_0x1fbf21[_0xdf6a('0xa7')])throw new Error('List\x20not\x20found');if(_0x1fbf21[_0xdf6a('0xa7')][_0xdf6a('0xb3')][_0xdf6a('0x55')])return _0x1fbf21[_0xdf6a('0xa7')][_0xdf6a('0xb3')][0x0];return db[_0xdf6a('0x8d')][_0xdf6a('0x6d')](_[_0xdf6a('0xd')](_0x5b670a['body'],{'firstName':_0x5b670a[_0xdf6a('0x66')]['to'],'email':_0x5b670a['body']['to'],'phone':_0x5b670a[_0xdf6a('0x66')]['to'],'ListId':_0x1fbf21[_0xdf6a('0x79')]}));})[_0xdf6a('0x14')](function(_0x1176ba){if(!_0x1176ba)return;var _0x369cfd={'UserId':_0x5b670a[_0xdf6a('0x37')]['id'],'ContactId':_0x1176ba['id'],'MailAccountId':_0x1fbf21['id'],'inReplyTo':_0x1f0dcb[_0xdf6a('0xb4')],'to':_0x5b670a[_0xdf6a('0x66')][_0xdf6a('0xaa')],'cc':_0x5b670a[_0xdf6a('0x66')]['cc'],'subject':_0x5b670a['body']['subject'],'attach':_0x5b670a[_0xdf6a('0x66')][_0xdf6a('0xb5')],'firstMsgDirection':'out','lastMsgAt':moment()[_0xdf6a('0xa3')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0xdf6a('0xb6'),'Messages':[_[_0xdf6a('0x5d')](_0x5b670a['body'],{'messageId':_0x1f0dcb['messageId'],'sentAt':moment()['format'](_0xdf6a('0xb7')),'read':!![],'MailAccountId':_0x1fbf21['id'],'UserId':_0x5b670a[_0xdf6a('0x37')]['id'],'ContactId':_0x1176ba['id']})]};if(_0x5b670a['body']['Interaction']){_0x369cfd=_[_0xdf6a('0x5d')](_0x369cfd,_0x5b670a['body'][_0xdf6a('0xb8')]);}return db[_0xdf6a('0x8c')][_0xdf6a('0x6d')](_0x369cfd,{'include':[{'model':db[_0xdf6a('0xa4')],'as':_0xdf6a('0xb9')}]});})[_0xdf6a('0x14')](respondWithResult(_0x2f42e1,null))[_0xdf6a('0x1d')](handleError(_0x2f42e1,null));};exports[_0xdf6a('0xba')]=function(_0x416d82,_0x43c901){return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x416d82[_0xdf6a('0x64')]['id']},'include':[{'model':db['MailServerOut'],'as':_0xdf6a('0x43'),'raw':!![],'include':[{'model':db[_0xdf6a('0xa9')],'as':_0xdf6a('0xa9'),'raw':!![]}]}]})[_0xdf6a('0x14')](handleEntityNotFound(_0x43c901,null))[_0xdf6a('0x14')](function(_0x193a22){if(!_0x193a22['Smtp'])return;var _0x19b102=_0x193a22['getSmtpOptions']();return respondWithRpcPromise(_0xdf6a('0xbb'),_0xdf6a('0xba'),{'account':_0x19b102});})[_0xdf6a('0x14')](respondWithResult(_0x43c901,null))[_0xdf6a('0x1d')](handleError(_0x43c901,null));};exports[_0xdf6a('0x2b')]=function(_0x30df25,_0x14ecc3){return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x30df25[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x14ecc3,null))[_0xdf6a('0x14')](function(_0x4f43e4){if(_0x4f43e4&&_0x4f43e4[_0xdf6a('0x40')]){throw new db['Sequelize'][(_0xdf6a('0xbc'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x4f43e4;})[_0xdf6a('0x14')](removeEntity(_0x14ecc3,null))[_0xdf6a('0x1d')](handleError(_0x14ecc3,null));};exports[_0xdf6a('0xbd')]=function(_0xea867c,_0x22d603){return db[_0xdf6a('0x4a')]['find']({'where':{'id':_0xea867c[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x22d603,null))[_0xdf6a('0x14')](function(_0x175687){if(_0x175687){return _0x175687[_0xdf6a('0xbd')](_0xea867c[_0xdf6a('0x66')][_0xdf6a('0x72')],_[_0xdf6a('0x8a')](_0xea867c[_0xdf6a('0x66')],[_0xdf6a('0x72'),'id'])||{})[_0xdf6a('0xbe')](function(_0x544c0f){for(var _0x389dd2=0x0;_0x389dd2<_0xea867c['body']['ids'][_0xdf6a('0x55')];_0x389dd2+=0x1){socket[_0xdf6a('0xbf')]('userMailAccount:save',{'UserId':Number(_0xea867c['body']['ids'][_0x389dd2]),'MailAccountId':Number(_0xea867c[_0xdf6a('0x64')]['id'])});}return _0x544c0f;});}})['then'](respondWithResult(_0x22d603,null))[_0xdf6a('0x1d')](handleError(_0x22d603,null));};exports[_0xdf6a('0xc0')]=function(_0x3d1952,_0x2812a7){return db[_0xdf6a('0x4a')][_0xdf6a('0x65')]({'where':{'id':_0x3d1952[_0xdf6a('0x64')]['id']}})[_0xdf6a('0x14')](handleEntityNotFound(_0x2812a7,null))[_0xdf6a('0x14')](function(_0x2e0419){if(_0x2e0419){return _0x2e0419['removeAgents'](_0x3d1952[_0xdf6a('0x4f')]['ids'])[_0xdf6a('0x14')](function(){if(_['isArray'](_0x3d1952[_0xdf6a('0x4f')][_0xdf6a('0x72')])){for(var _0x39f3dc=0x0;_0x39f3dc<_0x3d1952[_0xdf6a('0x4f')][_0xdf6a('0x72')][_0xdf6a('0x55')];_0x39f3dc+=0x1){socket[_0xdf6a('0xbf')](_0xdf6a('0xc1'),{'UserId':Number(_0x3d1952['query'][_0xdf6a('0x72')][_0x39f3dc]),'MailAccountId':Number(_0x3d1952[_0xdf6a('0x64')]['id'])});}}else{socket[_0xdf6a('0xbf')](_0xdf6a('0xc1'),{'UserId':Number(_0x3d1952[_0xdf6a('0x4f')][_0xdf6a('0x72')]),'MailAccountId':Number(_0x3d1952[_0xdf6a('0x64')]['id'])});}});}})[_0xdf6a('0x14')](respondWithStatusCode(_0x2812a7,null))[_0xdf6a('0x1d')](handleError(_0x2812a7,null));};exports['getAgents']=function(_0x590ed8,_0x338735){var _0x51f038={};var _0x281fa5={};var _0x386505;var _0x39b487;return db[_0xdf6a('0x4a')]['findOne']({'where':{'id':_0x590ed8[_0xdf6a('0x64')]['id']}})['then'](handleEntityNotFound(_0x338735,null))['then'](function(_0x3f3d57){if(_0x3f3d57){_0x386505=_0x3f3d57;_0x281fa5[_0xdf6a('0x53')]=_[_0xdf6a('0x50')](db[_0xdf6a('0x8f')][_0xdf6a('0x4b')]);_0x281fa5[_0xdf6a('0x4f')]=_[_0xdf6a('0x50')](_0x590ed8[_0xdf6a('0x4f')]);_0x281fa5[_0xdf6a('0x51')]=_[_0xdf6a('0x52')](_0x281fa5[_0xdf6a('0x53')],_0x281fa5[_0xdf6a('0x4f')]);_0x51f038[_0xdf6a('0x56')]=_['intersection'](_0x281fa5['model'],qs[_0xdf6a('0x54')](_0x590ed8[_0xdf6a('0x4f')][_0xdf6a('0x54')]));_0x51f038[_0xdf6a('0x56')]=_0x51f038[_0xdf6a('0x56')][_0xdf6a('0x55')]?_0x51f038[_0xdf6a('0x56')]:_0x281fa5[_0xdf6a('0x53')];_0x51f038[_0xdf6a('0x76')]=qs[_0xdf6a('0x5a')](_0x590ed8[_0xdf6a('0x4f')][_0xdf6a('0x5a')]);_0x51f038[_0xdf6a('0x5b')]=qs[_0xdf6a('0x51')](_[_0xdf6a('0x5c')](_0x590ed8[_0xdf6a('0x4f')],_0x281fa5[_0xdf6a('0x51')]));if(_0x590ed8[_0xdf6a('0x4f')][_0xdf6a('0x5f')]){_0x51f038[_0xdf6a('0x5b')]=_[_0xdf6a('0x5d')](_0x51f038[_0xdf6a('0x5b')],{'$or':_['map'](_0x51f038['attributes'],function(_0x42d778){var _0x4d7929={};_0x4d7929[_0x42d778]={'$like':'%'+_0x590ed8[_0xdf6a('0x4f')][_0xdf6a('0x5f')]+'%'};return _0x4d7929;})});}_0x51f038=_[_0xdf6a('0x5d')]({},_0x51f038,_0x590ed8[_0xdf6a('0x70')]);return _0x386505[_0xdf6a('0xc2')](_0x51f038);}})[_0xdf6a('0x14')](function(_0x46e8e6){if(_0x46e8e6){_0x39b487=_0x46e8e6[_0xdf6a('0x55')];if(!_0x590ed8[_0xdf6a('0x4f')][_0xdf6a('0x57')](_0xdf6a('0x58'))){_0x51f038[_0xdf6a('0x59')]=qs[_0xdf6a('0x59')](_0x590ed8[_0xdf6a('0x4f')]['limit']);_0x51f038[_0xdf6a('0x24')]=qs['offset'](_0x590ed8[_0xdf6a('0x4f')][_0xdf6a('0x24')]);}return _0x386505[_0xdf6a('0xc2')](_0x51f038);}})[_0xdf6a('0x14')](function(_0x3b00ed){if(_0x3b00ed){return _0x3b00ed?{'count':_0x39b487,'rows':_0x3b00ed}:null;}})[_0xdf6a('0x14')](respondWithResult(_0x338735,null))[_0xdf6a('0x1d')](handleError(_0x338735,null));};
\ No newline at end of file
+var _0xb0ca=['defaults','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','UserProfileResource','end','stack','name','send','gmail','imap-mail.outlook.com','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','yahoo','smtp.mail.yahoo.com','hotmail','smtp.office365.com','user','username','pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','query','keys','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','includeAll','include','findAll','rows','catch','length','options','find','body','provider','params','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','key','custom','email','isNil','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','addInteraction','MailInteraction','omit','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','transaction','sequelize','Transaction','READ_COMMITTED','MailApplication','findAndCountAll','priority','finally','getApplications','$gte','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','split','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','getSmtpOptions','SendMail','List','List\x20not\x20found','messageId','subject','attach','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','bluebird','util','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis'];(function(_0x4e20dd,_0x5a1f0c){var _0x2e199b=function(_0x195ffc){while(--_0x195ffc){_0x4e20dd['push'](_0x4e20dd['shift']());}};_0x2e199b(++_0x5a1f0c);}(_0xb0ca,0x17e));var _0xab0c=function(_0x24acae,_0x3453a8){_0x24acae=_0x24acae-0x0;var _0x29e9cc=_0xb0ca[_0x24acae];return _0x29e9cc;};'use strict';var moment=require('moment');var BPromise=require(_0xab0c('0x0'));var util=require(_0xab0c('0x1'));var path=require('path');var _=require(_0xab0c('0x2'));var juice=require(_0xab0c('0x3'));var Redis=require(_0xab0c('0x4'));var qs=require(_0xab0c('0x5'));var logger=require(_0xab0c('0x6'))('api');var config=require(_0xab0c('0x7'));var db=require(_0xab0c('0x8'))['db'];config[_0xab0c('0x9')]=_[_0xab0c('0xa')](config[_0xab0c('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xab0c('0xb'))(new Redis(config[_0xab0c('0x9')]));require(_0xab0c('0xc'))[_0xab0c('0xd')](socket);var jayson=require(_0xab0c('0xe'));var client=jayson[_0xab0c('0xf')]['http']({'port':0x232b});function respondWithRpcPromise(_0x3b218f,_0x30cd18,_0x573bb0,_0x10f616){return new BPromise(function(_0x4401b1,_0x56fa04){var _0x30b2ad=_0x10f616||client;return _0x30b2ad[_0xab0c('0x10')](_0x3b218f,_0x573bb0)[_0xab0c('0x11')](function(_0x5bb9d1){logger[_0xab0c('0x12')](_0xab0c('0x13'),_0x30cd18,_0xab0c('0x14'));logger['debug'](_0xab0c('0x15'),_0x30cd18,_0xab0c('0x14'),JSON[_0xab0c('0x16')](_0x5bb9d1));if(_0x5bb9d1[_0xab0c('0x17')]){if(_0x5bb9d1[_0xab0c('0x17')][_0xab0c('0x18')]===0x1f4){logger[_0xab0c('0x17')]('MailAccount,\x20%s,\x20%s',_0x30cd18,_0x5bb9d1[_0xab0c('0x17')][_0xab0c('0x19')]);return _0x56fa04(_0x5bb9d1[_0xab0c('0x17')][_0xab0c('0x19')]);}logger[_0xab0c('0x17')](_0xab0c('0x13'),_0x30cd18,_0x5bb9d1[_0xab0c('0x17')][_0xab0c('0x19')]);return _0x4401b1(_0x5bb9d1[_0xab0c('0x17')][_0xab0c('0x19')]);}else{logger[_0xab0c('0x12')]('MailAccount,\x20%s,\x20%s',_0x30cd18,_0xab0c('0x14'));_0x4401b1(_0x5bb9d1[_0xab0c('0x1a')][_0xab0c('0x19')]);}})['catch'](function(_0x4cdaba){logger[_0xab0c('0x17')](_0xab0c('0x13'),_0x30cd18,_0x4cdaba);_0x56fa04(_0x4cdaba);});});}function respondWithStatusCode(_0x50af11,_0x1bda49){_0x1bda49=_0x1bda49||0xcc;return function(_0x49cabf){if(_0x49cabf){return _0x50af11[_0xab0c('0x1b')](_0x1bda49);}return _0x50af11[_0xab0c('0x1c')](_0x1bda49)['end']();};}function respondWithResult(_0x10f5a4,_0x5abe2f){_0x5abe2f=_0x5abe2f||0xc8;return function(_0x53febf){if(_0x53febf){return _0x10f5a4[_0xab0c('0x1c')](_0x5abe2f)[_0xab0c('0x1d')](_0x53febf);}};}function respondWithFilteredResult(_0x55447e,_0xf0f2da){return function(_0x6b7351){if(_0x6b7351){var _0x1f2efe=typeof _0xf0f2da[_0xab0c('0x1e')]===_0xab0c('0x1f')&&typeof _0xf0f2da[_0xab0c('0x20')]===_0xab0c('0x1f');var _0x48ef11=_0x6b7351[_0xab0c('0x21')];var _0x3e6fd5=_0x1f2efe?0x0:_0xf0f2da[_0xab0c('0x1e')];var _0x4f9524=_0x1f2efe?_0x6b7351[_0xab0c('0x21')]:_0xf0f2da['offset']+_0xf0f2da[_0xab0c('0x20')];var _0x1ab4cc;if(_0x4f9524>=_0x48ef11){_0x4f9524=_0x48ef11;_0x1ab4cc=0xc8;}else{_0x1ab4cc=0xce;}_0x55447e['status'](_0x1ab4cc);return _0x55447e[_0xab0c('0x22')](_0xab0c('0x23'),_0x3e6fd5+'-'+_0x4f9524+'/'+_0x48ef11)[_0xab0c('0x1d')](_0x6b7351);}return null;};}function saveUpdates(_0xc0b95){return function(_0xb71e9d){if(_0xb71e9d){return _0xb71e9d[_0xab0c('0x24')](_0xc0b95)[_0xab0c('0x11')](function(_0x1c706d){return _0x1c706d;});}return null;};}function removeEntity(_0x5e856f){return function(_0x12ae6b){if(_0x12ae6b){return _0x12ae6b[_0xab0c('0x25')]()['then'](function(){var _0x4d1f14=_0x12ae6b[_0xab0c('0x26')]({'plain':!![]});var _0x95845='MailAccounts';return db[_0xab0c('0x27')]['destroy']({'where':{'type':_0x95845,'resourceId':_0x4d1f14['id']}})['then'](function(){return _0x12ae6b;});})[_0xab0c('0x11')](function(){_0x5e856f['status'](0xcc)[_0xab0c('0x28')]();});}};}function handleEntityNotFound(_0xd72ffa){return function(_0x12b141){if(!_0x12b141){_0xd72ffa[_0xab0c('0x1b')](0x194);}return _0x12b141;};}function handleError(_0x11c8a7,_0x34a510){_0x34a510=_0x34a510||0x1f4;return function(_0x336c72){logger['error'](_0x336c72[_0xab0c('0x29')]);if(_0x336c72[_0xab0c('0x2a')]){delete _0x336c72[_0xab0c('0x2a')];}_0x11c8a7[_0xab0c('0x1c')](_0x34a510)[_0xab0c('0x2b')](_0x336c72);};}function getImapHost(_0x189833){switch(_0x189833){case _0xab0c('0x2c'):return'imap.gmail.com';case'yahoo':return'imap.mail.yahoo.com';case'hotmail':return _0xab0c('0x2d');case'outlook365':return _0xab0c('0x2e');}throw new Error(_0xab0c('0x2f'),_0x189833);}function getSmtpHost(_0x5b6a24){switch(_0x5b6a24){case'gmail':return _0xab0c('0x30');case _0xab0c('0x31'):return _0xab0c('0x32');case _0xab0c('0x33'):return'smtp-mail.outlook.com';case'outlook365':return _0xab0c('0x34');}throw new Error(_0xab0c('0x2f'),_0x5b6a24);}function getAuthenticationOptions(_0x54d2cf,_0x2eea3c){var _0x5670e={};var _0x509fa3={};if(_0x54d2cf){_0x5670e[_0xab0c('0x35')]=_0x509fa3[_0xab0c('0x35')]=_0x2eea3c[_0xab0c('0x36')];_0x5670e['password']=_0x509fa3[_0xab0c('0x37')]=_0x2eea3c[_0xab0c('0x38')];if(_0x2eea3c[_0xab0c('0x39')]){_0x5670e[_0xab0c('0x39')]=_0x509fa3[_0xab0c('0x39')]=!![];_0x5670e[_0xab0c('0x3a')]=_0x509fa3[_0xab0c('0x3a')]=_0x2eea3c['CloudProviderId'];_0x5670e[_0xab0c('0x38')]=_0x509fa3[_0xab0c('0x37')]=null;}else{_0x5670e['CloudProviderId']=_0x509fa3['CloudProviderId']=null;}_0x5670e[_0xab0c('0x3b')]=getImapHost(_0x54d2cf);_0x5670e[_0xab0c('0x3c')]=0x3e1;_0x509fa3[_0xab0c('0x3b')]=getSmtpHost(_0x54d2cf);_0x509fa3[_0xab0c('0x3c')]=0x24b;_0x509fa3[_0xab0c('0x3d')]=![];_0x5670e['service']=_0x509fa3[_0xab0c('0x3e')]=null;}else{if(_0x2eea3c[_0xab0c('0x3f')]){_0x5670e[_0xab0c('0x35')]=_0x509fa3[_0xab0c('0x35')]=_0x2eea3c[_0xab0c('0x36')];_0x5670e['password']=_0x509fa3[_0xab0c('0x37')]=_0x2eea3c[_0xab0c('0x38')];}else{_0x5670e['authentication']=_0x509fa3[_0xab0c('0x3f')]=![];_0x5670e[_0xab0c('0x35')]=_0x509fa3['user']=null;_0x5670e[_0xab0c('0x38')]=_0x509fa3[_0xab0c('0x37')]=null;}_0x5670e[_0xab0c('0x3b')]=_0x2eea3c[_0xab0c('0x40')][_0xab0c('0x3b')];_0x5670e[_0xab0c('0x3c')]=_0x2eea3c[_0xab0c('0x40')][_0xab0c('0x3c')];_0x509fa3[_0xab0c('0x3b')]=_0x2eea3c[_0xab0c('0x41')][_0xab0c('0x3b')];_0x509fa3['port']=_0x2eea3c[_0xab0c('0x41')]['port'];}return{'Imap':_0x5670e,'Smtp':_0x509fa3};}exports['index']=function(_0x2e64ff,_0x176f9d){var _0x6d8d32={'include':[{'model':db[_0xab0c('0x42')],'as':_0xab0c('0x40')},{'model':db[_0xab0c('0x43')],'as':_0xab0c('0x41')},{'model':db[_0xab0c('0x44')],'as':_0xab0c('0x45')}]},_0x41eb29={},_0x3c84b2={'count':0x0,'rows':[]};var _0x308272=_[_0xab0c('0x46')](db[_0xab0c('0x47')][_0xab0c('0x48')],function(_0x5280a3){return{'name':_0x5280a3[_0xab0c('0x49')],'type':_0x5280a3[_0xab0c('0x4a')]['key']};});_0x41eb29['model']=_[_0xab0c('0x46')](_0x308272,_0xab0c('0x2a'));_0x41eb29[_0xab0c('0x4b')]=_[_0xab0c('0x4c')](_0x2e64ff[_0xab0c('0x4b')]);_0x41eb29[_0xab0c('0x4d')]=_['intersection'](_0x41eb29[_0xab0c('0x4e')],_0x41eb29[_0xab0c('0x4b')]);_0x6d8d32['attributes']=_[_0xab0c('0x4f')](_0x41eb29['model'],qs[_0xab0c('0x50')](_0x2e64ff[_0xab0c('0x4b')][_0xab0c('0x50')]));_0x6d8d32[_0xab0c('0x51')]=_0x6d8d32[_0xab0c('0x51')]['length']?_0x6d8d32[_0xab0c('0x51')]:_0x41eb29[_0xab0c('0x4e')];if(!_0x2e64ff[_0xab0c('0x4b')][_0xab0c('0x52')](_0xab0c('0x53'))){_0x6d8d32[_0xab0c('0x20')]=qs['limit'](_0x2e64ff[_0xab0c('0x4b')][_0xab0c('0x20')]);_0x6d8d32[_0xab0c('0x1e')]=qs[_0xab0c('0x1e')](_0x2e64ff[_0xab0c('0x4b')][_0xab0c('0x1e')]);}_0x6d8d32[_0xab0c('0x54')]=qs[_0xab0c('0x55')](_0x2e64ff[_0xab0c('0x4b')]['sort']);_0x6d8d32['where']=qs[_0xab0c('0x4d')](_[_0xab0c('0x56')](_0x2e64ff['query'],_0x41eb29[_0xab0c('0x4d')]),_0x308272);if(_0x2e64ff[_0xab0c('0x4b')]['filter']){_0x6d8d32[_0xab0c('0x57')]=_[_0xab0c('0x58')](_0x6d8d32['where'],{'$or':_[_0xab0c('0x46')](_0x308272,function(_0x1550a0){if(_0x1550a0[_0xab0c('0x4a')]!=='VIRTUAL'){var _0x4ffc86={};_0x4ffc86[_0x1550a0[_0xab0c('0x2a')]]={'$like':'%'+_0x2e64ff[_0xab0c('0x4b')][_0xab0c('0x59')]+'%'};return _0x4ffc86;}})});}_0x6d8d32=_[_0xab0c('0x58')]({},_0x6d8d32,_0x2e64ff['options']);var _0x5bf22b={'where':_0x6d8d32[_0xab0c('0x57')]};return db['MailAccount'][_0xab0c('0x21')](_0x5bf22b)['then'](function(_0x100863){_0x3c84b2['count']=_0x100863;if(_0x2e64ff[_0xab0c('0x4b')][_0xab0c('0x5a')]){_0x6d8d32[_0xab0c('0x5b')]=[{'all':!![]}];}return db[_0xab0c('0x47')][_0xab0c('0x5c')](_0x6d8d32);})['then'](function(_0x2535a1){_0x3c84b2[_0xab0c('0x5d')]=_0x2535a1;return _0x3c84b2;})[_0xab0c('0x11')](respondWithFilteredResult(_0x176f9d,_0x6d8d32))[_0xab0c('0x5e')](handleError(_0x176f9d,null));};exports['show']=function(_0x4bd63,_0x11fc58){var _0xba6683={'raw':![],'where':{'id':_0x4bd63['params']['id']},'include':[{'model':db[_0xab0c('0x42')],'as':_0xab0c('0x40')},{'model':db[_0xab0c('0x43')],'as':_0xab0c('0x41')},{'model':db['Pause'],'as':_0xab0c('0x45')}]},_0x26694a={};_0x26694a[_0xab0c('0x4e')]=_[_0xab0c('0x4c')](db['MailAccount'][_0xab0c('0x48')]);_0x26694a[_0xab0c('0x4b')]=_[_0xab0c('0x4c')](_0x4bd63[_0xab0c('0x4b')]);_0x26694a[_0xab0c('0x4d')]=_[_0xab0c('0x4f')](_0x26694a[_0xab0c('0x4e')],_0x26694a[_0xab0c('0x4b')]);_0xba6683[_0xab0c('0x51')]=_[_0xab0c('0x4f')](_0x26694a[_0xab0c('0x4e')],qs[_0xab0c('0x50')](_0x4bd63['query'][_0xab0c('0x50')]));_0xba6683[_0xab0c('0x51')]=_0xba6683[_0xab0c('0x51')][_0xab0c('0x5f')]?_0xba6683[_0xab0c('0x51')]:_0x26694a[_0xab0c('0x4e')];if(_0x4bd63['query'][_0xab0c('0x5a')]){_0xba6683['include']=[{'all':!![]}];}_0xba6683=_['merge']({},_0xba6683,_0x4bd63[_0xab0c('0x60')]);return db['MailAccount'][_0xab0c('0x61')](_0xba6683)[_0xab0c('0x11')](handleEntityNotFound(_0x11fc58,null))[_0xab0c('0x11')](respondWithResult(_0x11fc58,null))[_0xab0c('0x5e')](handleError(_0x11fc58,null));};exports[_0xab0c('0x24')]=function(_0x52a901,_0x3de118){if(_0x52a901[_0xab0c('0x62')]['id']){delete _0x52a901[_0xab0c('0x62')]['id'];}var _0x1f2199=_0x52a901[_0xab0c('0x62')]['provider']==='custom'?null:_0x52a901[_0xab0c('0x62')][_0xab0c('0x63')];var _0x50f41e=_0x52a901[_0xab0c('0x62')][_0xab0c('0x40')]||{};var _0x1c86de=_0x52a901[_0xab0c('0x62')]['Smtp']||{};if(_0x1f2199){_0x50f41e[_0xab0c('0x3b')]=getImapHost(_0x1f2199);_0x50f41e['port']=0x3e1;_0x1c86de[_0xab0c('0x3b')]=getSmtpHost(_0x1f2199);_0x1c86de[_0xab0c('0x3c')]=0x24b;_0x1c86de[_0xab0c('0x3d')]=![];}if(_0x1c86de[_0xab0c('0x39')]){_0x1c86de['secure']=![];}else{_0x1c86de[_0xab0c('0x3a')]=null;}if(!_0x50f41e[_0xab0c('0x39')])_0x50f41e[_0xab0c('0x3a')]=null;_0x52a901['body'][_0xab0c('0x40')]=_0x50f41e;_0x52a901[_0xab0c('0x62')][_0xab0c('0x41')]=_0x1c86de;return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x52a901[_0xab0c('0x64')]['id']},'include':[{'model':db[_0xab0c('0x42')],'as':'Imap'},{'model':db[_0xab0c('0x43')],'as':'Smtp'},{'model':db[_0xab0c('0x44')],'as':'mandatoryDispositionPause'}]})[_0xab0c('0x11')](handleEntityNotFound(_0x3de118,null))[_0xab0c('0x11')](function(_0x3fe86c){if(!_0x3fe86c)throw new Error(_0xab0c('0x65'));if(_0x3fe86c[_0xab0c('0x3e')])delete _0x52a901[_0xab0c('0x62')][_0xab0c('0x40')];return _0x3fe86c;})[_0xab0c('0x11')](saveUpdates(_0x52a901[_0xab0c('0x62')],null))[_0xab0c('0x11')](function(_0x5bec27){if(!_0x52a901[_0xab0c('0x62')][_0xab0c('0x40')])return _0x5bec27;return db[_0xab0c('0x42')][_0xab0c('0x24')](_0x52a901['body'][_0xab0c('0x40')],{'where':{'MailAccountId':_0x5bec27['id']}})[_0xab0c('0x11')](function(){return _0x5bec27;});})[_0xab0c('0x11')](function(_0x37c6b7){if(!_0x52a901['body'][_0xab0c('0x41')])return _0x37c6b7;return db[_0xab0c('0x43')][_0xab0c('0x24')](_0x52a901['body'][_0xab0c('0x41')],{'where':{'MailAccountId':_0x37c6b7['id']}})[_0xab0c('0x11')](function(){return _0x37c6b7;});})[_0xab0c('0x11')](respondWithResult(_0x3de118,null))[_0xab0c('0x5e')](handleError(_0x3de118,null));};exports[_0xab0c('0x66')]=function(_0x1da7db,_0x3c11e3){return db[_0xab0c('0x47')][_0xab0c('0x66')]()[_0xab0c('0x11')](respondWithResult(_0x3c11e3,null))[_0xab0c('0x5e')](handleError(_0x3c11e3,null));};exports[_0xab0c('0x67')]=function(_0x268476,_0x877930){if(_0x268476['body']['id']){delete _0x268476[_0xab0c('0x62')]['id'];}return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x268476[_0xab0c('0x64')]['id']}})['then'](handleEntityNotFound(_0x877930,null))[_0xab0c('0x11')](function(_0x313c8c){if(_0x313c8c){_0x268476[_0xab0c('0x62')][_0xab0c('0x68')]=_0x313c8c['id'];return db[_0xab0c('0x69')][_0xab0c('0x6a')](_0x268476[_0xab0c('0x62')]);}})[_0xab0c('0x11')](respondWithResult(_0x877930,null))['catch'](handleError(_0x877930,null));};exports[_0xab0c('0x6b')]=function(_0x2cec37,_0x49e467){var _0x2e67da={'raw':![],'where':{}};var _0x336dd1={};var _0x4b48f4={'count':0x0,'rows':[]};return db[_0xab0c('0x47')][_0xab0c('0x6c')]({'where':{'id':_0x2cec37[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x49e467,null))['then'](function(_0x4c6b3a){if(_0x4c6b3a){_0x336dd1[_0xab0c('0x4e')]=_[_0xab0c('0x4c')](db[_0xab0c('0x69')][_0xab0c('0x48')]);_0x336dd1['query']=_['keys'](_0x2cec37[_0xab0c('0x4b')]);_0x336dd1[_0xab0c('0x4d')]=_[_0xab0c('0x4f')](_0x336dd1['model'],_0x336dd1[_0xab0c('0x4b')]);_0x2e67da[_0xab0c('0x51')]=_[_0xab0c('0x4f')](_0x336dd1[_0xab0c('0x4e')],qs[_0xab0c('0x50')](_0x2cec37['query'][_0xab0c('0x50')]));_0x2e67da['attributes']=_0x2e67da[_0xab0c('0x51')]['length']?_0x2e67da['attributes']:_0x336dd1[_0xab0c('0x4e')];if(!_0x2cec37[_0xab0c('0x4b')]['hasOwnProperty'](_0xab0c('0x53'))){_0x2e67da[_0xab0c('0x20')]=qs[_0xab0c('0x20')](_0x2cec37[_0xab0c('0x4b')][_0xab0c('0x20')]);_0x2e67da['offset']=qs[_0xab0c('0x1e')](_0x2cec37[_0xab0c('0x4b')][_0xab0c('0x1e')]);}_0x2e67da[_0xab0c('0x54')]=qs[_0xab0c('0x55')](_0x2cec37['query']['sort']);_0x2e67da['where']=qs['filters'](_[_0xab0c('0x56')](_0x2cec37[_0xab0c('0x4b')],_0x336dd1[_0xab0c('0x4d')]));_0x2e67da[_0xab0c('0x57')][_0xab0c('0x68')]=_0x4c6b3a['id'];if(_0x2cec37['query']['filter']){_0x2e67da[_0xab0c('0x57')]=_[_0xab0c('0x58')](_0x2e67da[_0xab0c('0x57')],{'$or':_[_0xab0c('0x46')](_0x2e67da[_0xab0c('0x51')],function(_0x59e0b8){var _0xb19a94={};_0xb19a94[_0x59e0b8]={'$like':'%'+_0x2cec37[_0xab0c('0x4b')]['filter']+'%'};return _0xb19a94;})});}_0x2e67da=_[_0xab0c('0x58')]({},_0x2e67da,_0x2cec37['options']);return db[_0xab0c('0x69')][_0xab0c('0x21')]({'where':_0x2e67da['where']})[_0xab0c('0x11')](function(_0x1496c3){_0x4b48f4[_0xab0c('0x21')]=_0x1496c3;if(_0x2cec37[_0xab0c('0x4b')]['includeAll']){_0x2e67da[_0xab0c('0x5b')]=[{'all':!![]}];}return db[_0xab0c('0x69')]['findAll'](_0x2e67da);})[_0xab0c('0x11')](function(_0x2ef967){_0x4b48f4['rows']=_0x2ef967;return _0x4b48f4;});}})[_0xab0c('0x11')](respondWithFilteredResult(_0x49e467,_0x2e67da))[_0xab0c('0x5e')](handleError(_0x49e467,null));};exports['removeDispositions']=function(_0x3549de,_0x22d9ce){return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x3549de[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x22d9ce,null))[_0xab0c('0x11')](function(_0x28d1fe){if(_0x28d1fe){return _0x28d1fe[_0xab0c('0x6d')](_0x3549de[_0xab0c('0x4b')][_0xab0c('0x6e')]);}})[_0xab0c('0x11')](respondWithStatusCode(_0x22d9ce,null))[_0xab0c('0x5e')](handleError(_0x22d9ce,null));};exports[_0xab0c('0x6f')]=function(_0x3e830d,_0x575f2d){if(_0x3e830d[_0xab0c('0x62')]['id']){delete _0x3e830d[_0xab0c('0x62')]['id'];}return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x3e830d[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x575f2d,null))[_0xab0c('0x11')](function(_0x2d599f){if(_0x2d599f){_0x3e830d['body'][_0xab0c('0x68')]=_0x2d599f['id'];return db[_0xab0c('0x70')][_0xab0c('0x6a')](_0x3e830d['body']);}})[_0xab0c('0x11')](respondWithResult(_0x575f2d,null))[_0xab0c('0x5e')](handleError(_0x575f2d,null));};exports[_0xab0c('0x71')]=function(_0x18fc0f,_0x4b231e){var _0x84ed55={'raw':![],'where':{}};var _0x7a40fe={};var _0x27d046={'count':0x0,'rows':[]};return db['MailAccount'][_0xab0c('0x6c')]({'where':{'id':_0x18fc0f[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x4b231e,null))[_0xab0c('0x11')](function(_0x1ce940){if(_0x1ce940){_0x7a40fe[_0xab0c('0x4e')]=_[_0xab0c('0x4c')](db[_0xab0c('0x70')][_0xab0c('0x48')]);_0x7a40fe[_0xab0c('0x4b')]=_[_0xab0c('0x4c')](_0x18fc0f[_0xab0c('0x4b')]);_0x7a40fe['filters']=_[_0xab0c('0x4f')](_0x7a40fe[_0xab0c('0x4e')],_0x7a40fe[_0xab0c('0x4b')]);_0x84ed55['attributes']=_['intersection'](_0x7a40fe[_0xab0c('0x4e')],qs[_0xab0c('0x50')](_0x18fc0f[_0xab0c('0x4b')]['fields']));_0x84ed55[_0xab0c('0x51')]=_0x84ed55[_0xab0c('0x51')][_0xab0c('0x5f')]?_0x84ed55[_0xab0c('0x51')]:_0x7a40fe[_0xab0c('0x4e')];if(!_0x18fc0f[_0xab0c('0x4b')][_0xab0c('0x52')](_0xab0c('0x53'))){_0x84ed55[_0xab0c('0x20')]=qs[_0xab0c('0x20')](_0x18fc0f[_0xab0c('0x4b')][_0xab0c('0x20')]);_0x84ed55[_0xab0c('0x1e')]=qs[_0xab0c('0x1e')](_0x18fc0f['query'][_0xab0c('0x1e')]);}_0x84ed55[_0xab0c('0x54')]=qs['sort'](_0x18fc0f[_0xab0c('0x4b')]['sort']);_0x84ed55[_0xab0c('0x57')]=qs[_0xab0c('0x4d')](_[_0xab0c('0x56')](_0x18fc0f['query'],_0x7a40fe[_0xab0c('0x4d')]));_0x84ed55[_0xab0c('0x57')][_0xab0c('0x68')]=_0x1ce940['id'];if(_0x18fc0f[_0xab0c('0x4b')][_0xab0c('0x59')]){_0x84ed55[_0xab0c('0x57')]=_[_0xab0c('0x58')](_0x84ed55[_0xab0c('0x57')],{'$or':_[_0xab0c('0x46')](_0x84ed55['attributes'],function(_0x58fd73){var _0x128106={};_0x128106[_0x58fd73]={'$like':'%'+_0x18fc0f[_0xab0c('0x4b')][_0xab0c('0x59')]+'%'};return _0x128106;})});}_0x84ed55=_[_0xab0c('0x58')]({},_0x84ed55,_0x18fc0f[_0xab0c('0x60')]);return db[_0xab0c('0x70')][_0xab0c('0x21')]({'where':_0x84ed55['where']})[_0xab0c('0x11')](function(_0x9eb97){_0x27d046['count']=_0x9eb97;if(_0x18fc0f['query'][_0xab0c('0x5a')]){_0x84ed55[_0xab0c('0x5b')]=[{'all':!![]}];}return db[_0xab0c('0x70')][_0xab0c('0x5c')](_0x84ed55);})[_0xab0c('0x11')](function(_0x54b47a){_0x27d046[_0xab0c('0x5d')]=_0x54b47a;return _0x27d046;});}})[_0xab0c('0x11')](respondWithFilteredResult(_0x4b231e,_0x84ed55))[_0xab0c('0x5e')](handleError(_0x4b231e,null));};exports['removeAnswers']=function(_0xb902fb,_0x14969f){return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0xb902fb[_0xab0c('0x64')]['id']}})['then'](handleEntityNotFound(_0x14969f,null))['then'](function(_0xc613f1){if(_0xc613f1){return _0xc613f1[_0xab0c('0x72')](_0xb902fb[_0xab0c('0x4b')]['ids']);}})[_0xab0c('0x11')](respondWithStatusCode(_0x14969f,null))[_0xab0c('0x5e')](handleError(_0x14969f,null));};exports['create']=function(_0x581280,_0x61bcc8){var _0x52d731={'name':_0x581280['body'][_0xab0c('0x2a')],'key':_0x581280[_0xab0c('0x62')][_0xab0c('0x73')],'provider':_0x581280[_0xab0c('0x62')][_0xab0c('0x63')]===_0xab0c('0x74')?null:_0x581280[_0xab0c('0x62')][_0xab0c('0x63')],'email':_0x581280[_0xab0c('0x62')][_0xab0c('0x75')],'ListId':_0x581280[_0xab0c('0x62')]['ListId'],'active':!_[_0xab0c('0x76')](_0x581280[_0xab0c('0x62')]['active'])?_0x581280[_0xab0c('0x62')]['active']:!![],'description':_0x581280['body'][_0xab0c('0x77')]||null};var _0x531442=getAuthenticationOptions(_0x52d731[_0xab0c('0x63')],_0x581280[_0xab0c('0x62')]);_0x52d731['Imap']=_0x531442[_0xab0c('0x40')];_0x52d731[_0xab0c('0x41')]=_0x531442[_0xab0c('0x41')];return db['MailAccount'][_0xab0c('0x6a')](_0x52d731,{'include':[{'model':db[_0xab0c('0x43')],'as':_0xab0c('0x41')},{'model':db['MailServerIn'],'as':_0xab0c('0x40')}]})[_0xab0c('0x11')](function(_0xdcf112){var _0x1bc81c=_0x581280[_0xab0c('0x35')][_0xab0c('0x26')]({'plain':!![]});if(!_0x1bc81c)throw new Error(_0xab0c('0x78'));if(_0x1bc81c[_0xab0c('0x79')]===_0xab0c('0x35')){var _0x5aa5c7=_0xdcf112[_0xab0c('0x26')]({'plain':!![]});return db[_0xab0c('0x7a')][_0xab0c('0x61')]({'where':{'name':_0xab0c('0x7b'),'userProfileId':_0x1bc81c[_0xab0c('0x7c')]},'raw':!![]})[_0xab0c('0x11')](function(_0x45fa6a){if(_0x45fa6a&&_0x45fa6a[_0xab0c('0x7d')]===0x0){return db[_0xab0c('0x27')]['create']({'name':_0x5aa5c7[_0xab0c('0x2a')],'resourceId':_0x5aa5c7['id'],'type':_0x45fa6a['name'],'sectionId':_0x45fa6a['id']},{})[_0xab0c('0x11')](function(){return _0xdcf112;});}else{return _0xdcf112;}})[_0xab0c('0x5e')](function(_0x48e121){logger[_0xab0c('0x17')](_0xab0c('0x7e'),_0x48e121);throw _0x48e121;});}return _0xdcf112;})[_0xab0c('0x11')](respondWithResult(_0x61bcc8,0xc9))[_0xab0c('0x5e')](handleError(_0x61bcc8,null));};exports['getImap']=function(_0x58a080,_0x2b60af){return db['MailAccount'][_0xab0c('0x6c')]({'where':{'id':_0x58a080[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x2b60af,null))[_0xab0c('0x11')](function(_0xd716){if(_0xd716){return _0xd716[_0xab0c('0x7f')]();}return null;})['then'](respondWithResult(_0x2b60af,null))[_0xab0c('0x5e')](handleError(_0x2b60af,null));};exports[_0xab0c('0x80')]=function(_0x5457e8,_0x53de42){if(_0x5457e8['body']['id']){delete _0x5457e8[_0xab0c('0x62')]['id'];}return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x5457e8[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x53de42,null))['then'](function(_0x34bfb3){if(_0x34bfb3){_0x5457e8[_0xab0c('0x62')]['MailAccountId']=_0x34bfb3['id'];return db[_0xab0c('0x42')][_0xab0c('0x6a')](_0x5457e8['body']);}})[_0xab0c('0x11')](respondWithResult(_0x53de42,null))['catch'](handleError(_0x53de42,null));};exports[_0xab0c('0x81')]=function(_0x4ed147,_0x2e281f){return db['MailAccount'][_0xab0c('0x6c')]({'where':{'id':_0x4ed147[_0xab0c('0x64')]['id']}})['then'](handleEntityNotFound(_0x2e281f,null))[_0xab0c('0x11')](function(_0x5d41c9){if(_0x5d41c9){return _0x5d41c9[_0xab0c('0x82')](null);}return null;})['then'](respondWithStatusCode(_0x2e281f,null))['catch'](handleError(_0x2e281f,null));};exports[_0xab0c('0x83')]=function(_0x202e94,_0x151104){return db[_0xab0c('0x47')][_0xab0c('0x6c')]({'where':{'id':_0x202e94[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x151104,null))[_0xab0c('0x11')](function(_0x3c370e){if(_0x3c370e){return _0x3c370e[_0xab0c('0x83')]();}return null;})[_0xab0c('0x11')](respondWithResult(_0x151104,null))['catch'](handleError(_0x151104,null));};exports[_0xab0c('0x84')]=function(_0x394c6e,_0x24bf8f){if(_0x394c6e[_0xab0c('0x62')]['id']){delete _0x394c6e[_0xab0c('0x62')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x394c6e['params']['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x24bf8f,null))[_0xab0c('0x11')](function(_0x39aceb){if(_0x39aceb){_0x394c6e[_0xab0c('0x62')]['MailAccountId']=_0x39aceb['id'];return db[_0xab0c('0x43')]['create'](_0x394c6e[_0xab0c('0x62')]);}})['then'](respondWithResult(_0x24bf8f,null))[_0xab0c('0x5e')](handleError(_0x24bf8f,null));};exports[_0xab0c('0x85')]=function(_0x2c40c9,_0x3b8c99){return db[_0xab0c('0x47')][_0xab0c('0x6c')]({'where':{'id':_0x2c40c9[_0xab0c('0x64')]['id']}})['then'](handleEntityNotFound(_0x3b8c99,null))[_0xab0c('0x11')](function(_0x14c047){if(_0x14c047){return _0x14c047['setSmtp'](null);}return null;})[_0xab0c('0x11')](respondWithStatusCode(_0x3b8c99,null))[_0xab0c('0x5e')](handleError(_0x3b8c99,null));};exports[_0xab0c('0x86')]=function(_0x5455ae,_0x3328d6){return db[_0xab0c('0x87')][_0xab0c('0x61')]({'where':{'id':_0x5455ae['params']['id']}})['then'](handleEntityNotFound(_0x3328d6,null))[_0xab0c('0x11')](function(_0x35fd0e){if(_0x35fd0e){return _0x35fd0e[_0xab0c('0x86')](_0x5455ae[_0xab0c('0x62')][_0xab0c('0x6e')],_[_0xab0c('0x88')](_0x5455ae[_0xab0c('0x62')],[_0xab0c('0x6e'),'id'])||{});}})['then'](respondWithResult(_0x3328d6,null))['catch'](handleError(_0x3328d6,null));};exports['getInteractions']=function(_0x313af7,_0x2b5323){var _0x43d9e8={'raw':![],'where':{}};var _0x11bd8e={};var _0x1ff2cf={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x313af7[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x2b5323,null))[_0xab0c('0x11')](function(_0x320066){if(_0x320066){_0x11bd8e[_0xab0c('0x4e')]=_[_0xab0c('0x4c')](db['MailInteraction'][_0xab0c('0x48')]);_0x11bd8e['query']=_[_0xab0c('0x4c')](_0x313af7[_0xab0c('0x4b')]);_0x11bd8e[_0xab0c('0x4d')]=_[_0xab0c('0x4f')](_0x11bd8e[_0xab0c('0x4e')],_0x11bd8e['query']);_0x43d9e8['attributes']=_[_0xab0c('0x4f')](_0x11bd8e['model'],qs[_0xab0c('0x50')](_0x313af7[_0xab0c('0x4b')]['fields']));_0x43d9e8[_0xab0c('0x51')]=_0x43d9e8[_0xab0c('0x51')][_0xab0c('0x5f')]?_0x43d9e8[_0xab0c('0x51')]:_0x11bd8e[_0xab0c('0x4e')];if(!_0x313af7[_0xab0c('0x4b')][_0xab0c('0x52')](_0xab0c('0x53'))){_0x43d9e8[_0xab0c('0x20')]=qs[_0xab0c('0x20')](_0x313af7[_0xab0c('0x4b')][_0xab0c('0x20')]);_0x43d9e8['offset']=qs[_0xab0c('0x1e')](_0x313af7[_0xab0c('0x4b')][_0xab0c('0x1e')]);}_0x43d9e8[_0xab0c('0x54')]=qs[_0xab0c('0x55')](_0x313af7[_0xab0c('0x4b')][_0xab0c('0x55')]);_0x43d9e8['where']=qs[_0xab0c('0x4d')](_[_0xab0c('0x56')](_0x313af7[_0xab0c('0x4b')],_0x11bd8e['filters']));_0x43d9e8[_0xab0c('0x57')]['MailAccountId']=_0x320066['id'];if(_0x313af7['query']['filter']){_0x43d9e8['where']=_[_0xab0c('0x58')](_0x43d9e8[_0xab0c('0x57')],{'$or':_[_0xab0c('0x46')](_0x43d9e8[_0xab0c('0x51')],function(_0x4e00f7){var _0x4e5951={};_0x4e5951[_0x4e00f7]={'$like':'%'+_0x313af7['query'][_0xab0c('0x59')]+'%'};return _0x4e5951;})});}_0x43d9e8=_[_0xab0c('0x58')]({},_0x43d9e8,_0x313af7[_0xab0c('0x60')]);return db[_0xab0c('0x87')]['count']({'where':_0x43d9e8[_0xab0c('0x57')]})[_0xab0c('0x11')](function(_0x28d6e5){_0x1ff2cf[_0xab0c('0x21')]=_0x28d6e5;if(_0x313af7[_0xab0c('0x4b')][_0xab0c('0x5a')]){_0x43d9e8[_0xab0c('0x5b')]=[{'model':db[_0xab0c('0x89')],'as':_0xab0c('0x8a'),'required':![]},{'model':db[_0xab0c('0x8b')],'as':_0xab0c('0x8c'),'attributes':[_0xab0c('0x2a'),_0xab0c('0x8d'),_0xab0c('0x8e')],'required':![]},{'model':db[_0xab0c('0x8f')],'as':_0xab0c('0x90'),'attributes':['id',_0xab0c('0x2a'),_0xab0c('0x91')],'where':_0x313af7[_0xab0c('0x4b')][_0xab0c('0x92')]?{'id':_0x313af7[_0xab0c('0x4b')][_0xab0c('0x92')]}:undefined,'required':_0x313af7[_0xab0c('0x4b')][_0xab0c('0x92')]?!![]:![]}];}return db[_0xab0c('0x87')][_0xab0c('0x5c')](_0x43d9e8);})[_0xab0c('0x11')](function(_0x239fac){_0x1ff2cf[_0xab0c('0x5d')]=_0x239fac;return _0x1ff2cf;});}})[_0xab0c('0x11')](respondWithFilteredResult(_0x2b5323,_0x43d9e8))[_0xab0c('0x5e')](handleError(_0x2b5323,null));};exports[_0xab0c('0x93')]=function addApplications(_0xfccc20,_0x10a0b3){var _0x29106d=_0xfccc20[_0xab0c('0x64')]['id'];var _0x3db139=_0xfccc20['body'];var _0x41c743=0xc8;var _0xb33bd5=null;return db['sequelize'][_0xab0c('0x94')]({'isolationLevel':db[_0xab0c('0x95')][_0xab0c('0x96')]['ISOLATION_LEVELS'][_0xab0c('0x97')]},function(_0x44aa8a){return db[_0xab0c('0x47')][_0xab0c('0x6c')]({'where':{'id':_0x29106d},'transaction':_0x44aa8a})['then'](function(_0x1f669b){if(_0x1f669b){return db['MailApplication'][_0xab0c('0x25')]({'where':{'MailAccountId':_0x29106d},'transaction':_0x44aa8a})[_0xab0c('0x11')](function(){var _0x3b6c3b=_[_0xab0c('0x46')](_0x3db139,function(_0x1546d4){_0x1546d4[_0xab0c('0x68')]=_0x29106d;return _0x1546d4;});return db[_0xab0c('0x98')]['bulkCreate'](_0x3b6c3b,{'transaction':_0x44aa8a});});}else{_0x41c743=0x194;_0xb33bd5=[];}});})[_0xab0c('0x11')](function(){if(_0x41c743!==0x194){return db[_0xab0c('0x98')][_0xab0c('0x99')]({'where':{'MailAccountId':_0x29106d},'order':_0xab0c('0x9a')})[_0xab0c('0x11')](function(_0x47277e){_0xb33bd5=_0x47277e;});}})[_0xab0c('0x5e')](function(_0x2e2fe8){_0x41c743=0x1f4;logger[_0xab0c('0x17')](_0x2e2fe8['stack']);if(_0x2e2fe8[_0xab0c('0x2a')]){delete _0x2e2fe8[_0xab0c('0x2a')];}_0xb33bd5=_0x2e2fe8;})[_0xab0c('0x9b')](function(){if(_0xb33bd5===null){_0x10a0b3[_0xab0c('0x1b')](_0x41c743);}else{if(_0x41c743===0x1f4){_0x10a0b3['status'](_0x41c743)['send'](_0xb33bd5);}else{_0x10a0b3[_0xab0c('0x1c')](_0x41c743)['json'](_0xb33bd5);}}});};exports[_0xab0c('0x9c')]=function(_0x17f0d3,_0x390b80){var _0x477afc={};var _0x5e889f={};var _0x242395;var _0x224225;return db[_0xab0c('0x47')]['findOne']({'where':{'id':_0x17f0d3['params']['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x390b80,null))['then'](function(_0x317591){if(_0x317591){_0x242395=_0x317591;_0x5e889f[_0xab0c('0x4e')]=_[_0xab0c('0x4c')](db[_0xab0c('0x98')]['rawAttributes']);_0x5e889f[_0xab0c('0x4b')]=_[_0xab0c('0x4c')](_0x17f0d3[_0xab0c('0x4b')]);_0x5e889f['filters']=_['intersection'](_0x5e889f[_0xab0c('0x4e')],_0x5e889f['query']);_0x477afc[_0xab0c('0x51')]=_[_0xab0c('0x4f')](_0x5e889f['model'],qs[_0xab0c('0x50')](_0x17f0d3[_0xab0c('0x4b')][_0xab0c('0x50')]));_0x477afc[_0xab0c('0x51')]=_0x477afc[_0xab0c('0x51')][_0xab0c('0x5f')]?_0x477afc[_0xab0c('0x51')]:_0x5e889f[_0xab0c('0x4e')];_0x477afc[_0xab0c('0x54')]=qs[_0xab0c('0x55')](_0x17f0d3[_0xab0c('0x4b')][_0xab0c('0x55')]);_0x477afc['where']=qs[_0xab0c('0x4d')](_[_0xab0c('0x56')](_0x17f0d3[_0xab0c('0x4b')],_0x5e889f[_0xab0c('0x4d')]));if(_0x17f0d3['query'][_0xab0c('0x59')]){_0x477afc[_0xab0c('0x57')]=_[_0xab0c('0x58')](_0x477afc[_0xab0c('0x57')],{'$or':_[_0xab0c('0x46')](_0x477afc[_0xab0c('0x51')],function(_0x9081f1){var _0x38859f={};_0x38859f[_0x9081f1]={'$like':'%'+_0x17f0d3[_0xab0c('0x4b')][_0xab0c('0x59')]+'%'};return _0x38859f;})});}_0x477afc=_[_0xab0c('0x58')]({},_0x477afc,_0x17f0d3[_0xab0c('0x60')]);return _0x242395[_0xab0c('0x9c')](_0x477afc);}})[_0xab0c('0x11')](function(_0x48503c){if(_0x48503c){_0x224225=_0x48503c['length'];if(!_0x17f0d3[_0xab0c('0x4b')]['hasOwnProperty'](_0xab0c('0x53'))){_0x477afc[_0xab0c('0x20')]=qs[_0xab0c('0x20')](_0x17f0d3[_0xab0c('0x4b')][_0xab0c('0x20')]);_0x477afc[_0xab0c('0x1e')]=qs[_0xab0c('0x1e')](_0x17f0d3[_0xab0c('0x4b')]['offset']);}return _0x242395[_0xab0c('0x9c')](_0x477afc);}})[_0xab0c('0x11')](function(_0x241105){if(_0x241105){return _0x241105?{'count':_0x224225,'rows':_0x241105}:null;}})[_0xab0c('0x11')](respondWithResult(_0x390b80,null))['catch'](handleError(_0x390b80,null));};exports['getMessages']=function(_0xfd96b6,_0x45e6f5){var _0x15f2dd={'raw':!![],'where':{}};var _0x1573a3={};var _0x385e4f={'count':0x0,'rows':[]};return db[_0xab0c('0x47')][_0xab0c('0x6c')]({'where':{'id':_0xfd96b6[_0xab0c('0x64')]['id']}})['then'](handleEntityNotFound(_0x45e6f5,null))[_0xab0c('0x11')](function(_0x21a4cb){if(_0x21a4cb){_0x1573a3[_0xab0c('0x4e')]=_['keys'](db['MailMessage'][_0xab0c('0x48')]);_0x1573a3[_0xab0c('0x4b')]=_['keys'](_0xfd96b6[_0xab0c('0x4b')]);_0x1573a3[_0xab0c('0x4d')]=_['intersection'](_0x1573a3[_0xab0c('0x4e')],_0x1573a3[_0xab0c('0x4b')]);_0x15f2dd[_0xab0c('0x51')]=_[_0xab0c('0x4f')](_0x1573a3[_0xab0c('0x4e')],qs[_0xab0c('0x50')](_0xfd96b6['query']['fields']));_0x15f2dd[_0xab0c('0x51')]=_0x15f2dd[_0xab0c('0x51')][_0xab0c('0x5f')]?_0x15f2dd['attributes']:_0x1573a3[_0xab0c('0x4e')];if(!_0xfd96b6[_0xab0c('0x4b')][_0xab0c('0x52')](_0xab0c('0x53'))){_0x15f2dd[_0xab0c('0x20')]=qs[_0xab0c('0x20')](_0xfd96b6[_0xab0c('0x4b')][_0xab0c('0x20')]);_0x15f2dd[_0xab0c('0x1e')]=qs[_0xab0c('0x1e')](_0xfd96b6['query']['offset']);}_0x15f2dd[_0xab0c('0x54')]=qs[_0xab0c('0x55')](_0xfd96b6[_0xab0c('0x4b')][_0xab0c('0x55')]);_0x15f2dd['where']=qs[_0xab0c('0x4d')](_[_0xab0c('0x56')](_0xfd96b6[_0xab0c('0x4b')],_0x1573a3[_0xab0c('0x4d')]));_0x15f2dd['where'][_0xab0c('0x68')]=_0x21a4cb['id'];if(_0xfd96b6[_0xab0c('0x4b')]['filter']){_0x15f2dd[_0xab0c('0x57')]=_['merge'](_0x15f2dd['where'],{'$or':_[_0xab0c('0x46')](_0x15f2dd[_0xab0c('0x51')],function(_0x443015){var _0xbeba96={};_0xbeba96[_0x443015]={'$like':'%'+_0xfd96b6[_0xab0c('0x4b')][_0xab0c('0x59')]+'%'};return _0xbeba96;})});}if(_0xfd96b6[_0xab0c('0x4b')][_0xab0c('0x9d')]){var _0x28762a=_0xfd96b6[_0xab0c('0x4b')]['$gte']['split'](',');var _0x4ce851={};_0x4ce851[_0x28762a[0x0]]={'$gte':moment(_0x28762a[0x1])[_0xab0c('0x9e')](_0xab0c('0x9f'))};_0x15f2dd[_0xab0c('0x57')]=_[_0xab0c('0x58')](_0x15f2dd['where'],_0x4ce851);}_0x15f2dd=_[_0xab0c('0x58')]({},_0x15f2dd,_0xfd96b6['options']);return db[_0xab0c('0xa0')][_0xab0c('0x21')]({'where':_0x15f2dd[_0xab0c('0x57')]})[_0xab0c('0x11')](function(_0x2c8c25){_0x385e4f[_0xab0c('0x21')]=_0x2c8c25;if(_0xfd96b6[_0xab0c('0x4b')][_0xab0c('0x5a')]){_0x15f2dd['include']=[{'all':!![]}];}return db[_0xab0c('0xa0')]['findAll'](_0x15f2dd);})[_0xab0c('0x11')](function(_0x56db9f){if(_0xfd96b6[_0xab0c('0x4b')][_0xab0c('0xa1')]==='true'){for(var _0x5bc695=0x0;_0x5bc695<_0x56db9f[_0xab0c('0x5f')];_0x5bc695++){_0x56db9f[_0x5bc695][_0xab0c('0x62')]=juice(_0x56db9f[_0x5bc695][_0xab0c('0x62')]);}}_0x385e4f[_0xab0c('0x5d')]=_0x56db9f;return _0x385e4f;});}})[_0xab0c('0x11')](respondWithFilteredResult(_0x45e6f5,_0x15f2dd))[_0xab0c('0x5e')](handleError(_0x45e6f5,null));};exports[_0xab0c('0x2b')]=function(_0x12df92,_0x12efa5){var _0x9d4e2d,_0x35082a={},_0x513a9a;if(_0x12df92[_0xab0c('0x62')]['to']){_0x513a9a=_0x12df92['body']['to'][_0xab0c('0xa2')](',')[0x0];}return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x12df92[_0xab0c('0x64')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0xab0c('0xa3'),'where':{'email':_0x513a9a},'limit':0x1,'order':[[_0xab0c('0xa4'),_0xab0c('0xa5')]]}]},{'model':db[_0xab0c('0x43')],'as':_0xab0c('0x41'),'raw':!![],'include':[{'model':db[_0xab0c('0xa6')],'as':_0xab0c('0xa6'),'raw':!![]}]}]})[_0xab0c('0x11')](handleEntityNotFound(_0x12efa5,null))[_0xab0c('0x11')](function(_0x28fca5){if(!_0x28fca5)return;_0x9d4e2d=_0x28fca5;if(!_0x28fca5[_0xab0c('0x41')])throw new Error(_0xab0c('0xa7'));if(_[_0xab0c('0x76')](_0x12df92[_0xab0c('0x62')]['from'])){_0x12df92[_0xab0c('0x62')][_0xab0c('0xa8')]=util[_0xab0c('0x9e')](_0xab0c('0xa9'),_0x28fca5[_0xab0c('0x2a')],_0x28fca5[_0xab0c('0x75')]||_0x28fca5['Smtp'][_0xab0c('0x35')]);}if(_0x12df92[_0xab0c('0x62')][_0xab0c('0xaa')]&&_0x12df92[_0xab0c('0x62')][_0xab0c('0xaa')][_0xab0c('0x5f')]){for(var _0x2406f4=0x0;_0x2406f4<_0x12df92[_0xab0c('0x62')]['attachments'][_0xab0c('0x5f')];_0x2406f4+=0x1){_0x12df92[_0xab0c('0x62')][_0xab0c('0xaa')][_0x2406f4]={'filename':_0x12df92[_0xab0c('0x62')]['attachments'][_0x2406f4][_0xab0c('0x2a')],'path':path[_0xab0c('0xab')](config['root'],_0xab0c('0xac'),_0x12df92['body'][_0xab0c('0xaa')][_0x2406f4][_0xab0c('0xad')])};}}var _0x2ca542=_0x28fca5[_0xab0c('0xae')]();return respondWithRpcPromise(_0xab0c('0xaf'),'sendMail',{'account':_0x2ca542,'message':_0x12df92[_0xab0c('0x62')]});})['then'](function(_0x2f4b78){if(!_0x2f4b78)return;_0x35082a=_0x2f4b78;if(!_0x9d4e2d[_0xab0c('0xb0')])throw new Error(_0xab0c('0xb1'));if(_0x9d4e2d['List'][_0xab0c('0xa3')][_0xab0c('0x5f')])return _0x9d4e2d[_0xab0c('0xb0')]['Contacts'][0x0];return db[_0xab0c('0x89')][_0xab0c('0x6a')](_[_0xab0c('0xa')](_0x12df92[_0xab0c('0x62')],{'firstName':_0x12df92['body']['to'],'email':_0x12df92[_0xab0c('0x62')]['to'],'phone':_0x12df92[_0xab0c('0x62')]['to'],'ListId':_0x9d4e2d['ListId']}));})[_0xab0c('0x11')](function(_0x2b5d23){if(!_0x2b5d23)return;var _0x3f4e0f={'UserId':_0x12df92['user']['id'],'ContactId':_0x2b5d23['id'],'MailAccountId':_0x9d4e2d['id'],'inReplyTo':_0x35082a[_0xab0c('0xb2')],'to':_0x12df92['body'][_0xab0c('0xa8')],'cc':_0x12df92['body']['cc'],'subject':_0x12df92[_0xab0c('0x62')][_0xab0c('0xb3')],'attach':_0x12df92['body'][_0xab0c('0xb4')],'firstMsgDirection':'out','lastMsgAt':moment()[_0xab0c('0x9e')](_0xab0c('0x9f')),'lastMsgDirection':'out','Messages':[_[_0xab0c('0x58')](_0x12df92[_0xab0c('0x62')],{'messageId':_0x35082a[_0xab0c('0xb2')],'sentAt':moment()[_0xab0c('0x9e')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x9d4e2d['id'],'UserId':_0x12df92[_0xab0c('0x35')]['id'],'ContactId':_0x2b5d23['id']})]};if(_0x12df92[_0xab0c('0x62')][_0xab0c('0xb5')]){_0x3f4e0f=_['merge'](_0x3f4e0f,_0x12df92['body'][_0xab0c('0xb5')]);}return db[_0xab0c('0x87')][_0xab0c('0x6a')](_0x3f4e0f,{'include':[{'model':db[_0xab0c('0xa0')],'as':_0xab0c('0xb6')}]});})[_0xab0c('0x11')](respondWithResult(_0x12efa5,null))[_0xab0c('0x5e')](handleError(_0x12efa5,null));};exports[_0xab0c('0xb7')]=function(_0x40957a,_0x51dd19){return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x40957a[_0xab0c('0x64')]['id']},'include':[{'model':db[_0xab0c('0x43')],'as':_0xab0c('0x41'),'raw':!![],'include':[{'model':db[_0xab0c('0xa6')],'as':_0xab0c('0xa6'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x51dd19,null))[_0xab0c('0x11')](function(_0x599729){if(!_0x599729[_0xab0c('0x41')])return;var _0x4bb217=_0x599729['getSmtpOptions']();return respondWithRpcPromise(_0xab0c('0xb8'),_0xab0c('0xb7'),{'account':_0x4bb217});})[_0xab0c('0x11')](respondWithResult(_0x51dd19,null))[_0xab0c('0x5e')](handleError(_0x51dd19,null));};exports['destroy']=function(_0x26496f,_0x5ada29){return db[_0xab0c('0x47')][_0xab0c('0x61')]({'where':{'id':_0x26496f[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x5ada29,null))[_0xab0c('0x11')](function(_0x4f5e65){if(_0x4f5e65&&_0x4f5e65[_0xab0c('0x3e')]){throw new db[(_0xab0c('0xb9'))][(_0xab0c('0xba'))](_0xab0c('0xbb'));}return _0x4f5e65;})[_0xab0c('0x11')](removeEntity(_0x5ada29,null))[_0xab0c('0x5e')](handleError(_0x5ada29,null));};exports[_0xab0c('0xbc')]=function(_0x589792,_0x2ecea9){return db[_0xab0c('0x47')]['find']({'where':{'id':_0x589792[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x2ecea9,null))[_0xab0c('0x11')](function(_0x4595ab){if(_0x4595ab){return _0x4595ab[_0xab0c('0xbc')](_0x589792[_0xab0c('0x62')][_0xab0c('0x6e')],_[_0xab0c('0x88')](_0x589792[_0xab0c('0x62')],[_0xab0c('0x6e'),'id'])||{})[_0xab0c('0xbd')](function(_0x2ce988){for(var _0x465c72=0x0;_0x465c72<_0x589792[_0xab0c('0x62')]['ids']['length'];_0x465c72+=0x1){socket[_0xab0c('0xbe')](_0xab0c('0xbf'),{'UserId':Number(_0x589792[_0xab0c('0x62')]['ids'][_0x465c72]),'MailAccountId':Number(_0x589792[_0xab0c('0x64')]['id'])});}return _0x2ce988;});}})['then'](respondWithResult(_0x2ecea9,null))['catch'](handleError(_0x2ecea9,null));};exports[_0xab0c('0xc0')]=function(_0x5bd559,_0x26b4d8){return db['MailAccount'][_0xab0c('0x61')]({'where':{'id':_0x5bd559['params']['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x26b4d8,null))[_0xab0c('0x11')](function(_0x2e6e58){if(_0x2e6e58){return _0x2e6e58['removeAgents'](_0x5bd559['query'][_0xab0c('0x6e')])[_0xab0c('0x11')](function(){if(_[_0xab0c('0xc1')](_0x5bd559[_0xab0c('0x4b')][_0xab0c('0x6e')])){for(var _0x9bfd62=0x0;_0x9bfd62<_0x5bd559[_0xab0c('0x4b')]['ids'][_0xab0c('0x5f')];_0x9bfd62+=0x1){socket[_0xab0c('0xbe')](_0xab0c('0xc2'),{'UserId':Number(_0x5bd559[_0xab0c('0x4b')]['ids'][_0x9bfd62]),'MailAccountId':Number(_0x5bd559[_0xab0c('0x64')]['id'])});}}else{socket[_0xab0c('0xbe')](_0xab0c('0xc2'),{'UserId':Number(_0x5bd559['query'][_0xab0c('0x6e')]),'MailAccountId':Number(_0x5bd559[_0xab0c('0x64')]['id'])});}});}})[_0xab0c('0x11')](respondWithStatusCode(_0x26b4d8,null))[_0xab0c('0x5e')](handleError(_0x26b4d8,null));};exports[_0xab0c('0xc3')]=function(_0x5510f0,_0x467c94){var _0x3e852a={};var _0x1b044c={};var _0x10b069;var _0x1a8ff8;return db[_0xab0c('0x47')]['findOne']({'where':{'id':_0x5510f0[_0xab0c('0x64')]['id']}})[_0xab0c('0x11')](handleEntityNotFound(_0x467c94,null))['then'](function(_0x271ce5){if(_0x271ce5){_0x10b069=_0x271ce5;_0x1b044c['model']=_['keys'](db['User'][_0xab0c('0x48')]);_0x1b044c['query']=_[_0xab0c('0x4c')](_0x5510f0['query']);_0x1b044c['filters']=_['intersection'](_0x1b044c[_0xab0c('0x4e')],_0x1b044c['query']);_0x3e852a[_0xab0c('0x51')]=_[_0xab0c('0x4f')](_0x1b044c[_0xab0c('0x4e')],qs[_0xab0c('0x50')](_0x5510f0[_0xab0c('0x4b')]['fields']));_0x3e852a[_0xab0c('0x51')]=_0x3e852a[_0xab0c('0x51')][_0xab0c('0x5f')]?_0x3e852a[_0xab0c('0x51')]:_0x1b044c[_0xab0c('0x4e')];_0x3e852a[_0xab0c('0x54')]=qs['sort'](_0x5510f0[_0xab0c('0x4b')]['sort']);_0x3e852a[_0xab0c('0x57')]=qs['filters'](_[_0xab0c('0x56')](_0x5510f0['query'],_0x1b044c[_0xab0c('0x4d')]));if(_0x5510f0[_0xab0c('0x4b')]['filter']){_0x3e852a[_0xab0c('0x57')]=_['merge'](_0x3e852a[_0xab0c('0x57')],{'$or':_['map'](_0x3e852a[_0xab0c('0x51')],function(_0x57ace2){var _0x2226eb={};_0x2226eb[_0x57ace2]={'$like':'%'+_0x5510f0['query'][_0xab0c('0x59')]+'%'};return _0x2226eb;})});}_0x3e852a=_['merge']({},_0x3e852a,_0x5510f0[_0xab0c('0x60')]);return _0x10b069[_0xab0c('0xc3')](_0x3e852a);}})[_0xab0c('0x11')](function(_0x169041){if(_0x169041){_0x1a8ff8=_0x169041['length'];if(!_0x5510f0[_0xab0c('0x4b')][_0xab0c('0x52')](_0xab0c('0x53'))){_0x3e852a[_0xab0c('0x20')]=qs[_0xab0c('0x20')](_0x5510f0[_0xab0c('0x4b')]['limit']);_0x3e852a[_0xab0c('0x1e')]=qs[_0xab0c('0x1e')](_0x5510f0[_0xab0c('0x4b')][_0xab0c('0x1e')]);}return _0x10b069['getAgents'](_0x3e852a);}})[_0xab0c('0x11')](function(_0xc0dfaf){if(_0xc0dfaf){return _0xc0dfaf?{'count':_0x1a8ff8,'rows':_0xc0dfaf}:null;}})[_0xab0c('0x11')](respondWithResult(_0x467c94,null))[_0xab0c('0x5e')](handleError(_0x467c94,null));};
\ No newline at end of file
index 1ac10a6..a7391bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c7a=['hook','exports','events','../../mysqldb','MailAccount','setMaxListeners','save','emit','hasOwnProperty'];(function(_0x585065,_0x4cb3d0){var _0x402f55=function(_0x1f8edf){while(--_0x1f8edf){_0x585065['push'](_0x585065['shift']());}};_0x402f55(++_0x4cb3d0);}(_0x8c7a,0x197));var _0xa8c7=function(_0x5d1132,_0xe7d96c){_0x5d1132=_0x5d1132-0x0;var _0x508516=_0x8c7a[_0x5d1132];return _0x508516;};'use strict';var EventEmitter=require(_0xa8c7('0x0'));var MailAccount=require(_0xa8c7('0x1'))['db'][_0xa8c7('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xa8c7('0x3')](0x0);var events={'afterCreate':_0xa8c7('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5b31d1){return function(_0x189754,_0x44d295,_0x40d483){MailAccountEvents[_0xa8c7('0x5')](_0x5b31d1+':'+_0x189754['id'],_0x189754);MailAccountEvents['emit'](_0x5b31d1,_0x189754);_0x40d483(null);};}for(var e in events){if(events[_0xa8c7('0x6')](e)){var event=events[e];MailAccount[_0xa8c7('0x7')](e,emitEvent(event));}}module[_0xa8c7('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0x7409=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x5bf9a4,_0x33d20c){var _0x2bb53a=function(_0x48f0aa){while(--_0x48f0aa){_0x5bf9a4['push'](_0x5bf9a4['shift']());}};_0x2bb53a(++_0x33d20c);}(_0x7409,0x6e));var _0x9740=function(_0x27ad07,_0x2d3d47){_0x27ad07=_0x27ad07-0x0;var _0x3148b4=_0x7409[_0x27ad07];return _0x3148b4;};'use strict';var EventEmitter=require(_0x9740('0x0'));var MailAccount=require(_0x9740('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x9740('0x2')](0x0);var events={'afterCreate':_0x9740('0x3'),'afterUpdate':_0x9740('0x4'),'afterDestroy':_0x9740('0x5')};function emitEvent(_0x1109e2){return function(_0x2c15f1,_0xf40233,_0x2bb453){MailAccountEvents[_0x9740('0x6')](_0x1109e2+':'+_0x2c15f1['id'],_0x2c15f1);MailAccountEvents['emit'](_0x1109e2,_0x2c15f1);_0x2bb453(null);};}for(var e in events){if(events[_0x9740('0x7')](e)){var event=events[e];MailAccount[_0x9740('0x8')](e,emitEvent(event));}}module[_0x9740('0x9')]=MailAccountEvents;
\ No newline at end of file
index d5f2e27..2e09a7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf33b=['service','Smtp','port','secure','authentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2','data5','pass','exports','MailAccount','provider','custom'];(function(_0x2f8b8f,_0x2cd33c){var _0x2438d1=function(_0x5b752d){while(--_0x5b752d){_0x2f8b8f['push'](_0x2f8b8f['shift']());}};_0x2438d1(++_0x2cd33c);}(_0xf33b,0x1af));var _0xbf33=function(_0x58a4fe,_0x11d439){_0x58a4fe=_0x58a4fe-0x0;var _0x697de2=_0xf33b[_0x58a4fe];return _0x697de2;};'use strict';var attributes=require('./mailAccount.attributes');module[_0xbf33('0x0')]=function(_0x1cc6cb){return _0x1cc6cb['define'](_0xbf33('0x1'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x1ef179=this;var _0x314472={'id':_0x1ef179['id'],'tls':{'rejectUnauthorized':![]}};if(_0x1ef179[_0xbf33('0x2')]!==_0xbf33('0x3')){_0x314472[_0xbf33('0x4')]=_0x1ef179[_0xbf33('0x2')];}else{_0x314472['host']=_0x1ef179[_0xbf33('0x5')]['host'];_0x314472['port']=_0x1ef179[_0xbf33('0x5')][_0xbf33('0x6')];_0x314472[_0xbf33('0x7')]=_0x1ef179[_0xbf33('0x5')][_0xbf33('0x7')];}if(_0x1ef179[_0xbf33('0x5')][_0xbf33('0x8')]){if(_0x1ef179[_0xbf33('0x5')]['modernAuthentication']){if(!_0x1ef179[_0xbf33('0x5')][_0xbf33('0x9')])throw new Error(_0xbf33('0xa'));_0x314472[_0xbf33('0xb')]={'type':_0xbf33('0xc'),'user':_0x1ef179['Smtp']['user'],'accessToken':_0x1ef179['Smtp'][_0xbf33('0x9')][_0xbf33('0xd')]};}else{_0x314472[_0xbf33('0xb')]={'user':_0x1ef179['Smtp']['user'],'pass':_0x1ef179['Smtp'][_0xbf33('0xe')]};}}return _0x314472;}}});};
\ No newline at end of file
+var _0xdca8=['authentication','modernAuthentication','Cloud\x20Provider\x20configuration\x20not\x20found','auth','user','CloudProvider','data5','./mailAccount.attributes','exports','MailAccount','mail_accounts','provider','custom','host','Smtp','port','secure'];(function(_0x1f448a,_0x477d9d){var _0x24c6ac=function(_0x114123){while(--_0x114123){_0x1f448a['push'](_0x1f448a['shift']());}};_0x24c6ac(++_0x477d9d);}(_0xdca8,0x1e3));var _0x8dca=function(_0x53f8de,_0x32626e){_0x53f8de=_0x53f8de-0x0;var _0x432003=_0xdca8[_0x53f8de];return _0x432003;};'use strict';var attributes=require(_0x8dca('0x0'));module[_0x8dca('0x1')]=function(_0xae07bd){return _0xae07bd['define'](_0x8dca('0x2'),attributes,{'tableName':_0x8dca('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x3e5944=this;var _0x2ea14e={'id':_0x3e5944['id'],'tls':{'rejectUnauthorized':![]}};if(_0x3e5944[_0x8dca('0x4')]!==_0x8dca('0x5')){_0x2ea14e['service']=_0x3e5944[_0x8dca('0x4')];}else{_0x2ea14e[_0x8dca('0x6')]=_0x3e5944['Smtp']['host'];_0x2ea14e['port']=_0x3e5944[_0x8dca('0x7')][_0x8dca('0x8')];_0x2ea14e[_0x8dca('0x9')]=_0x3e5944[_0x8dca('0x7')]['secure'];}if(_0x3e5944[_0x8dca('0x7')][_0x8dca('0xa')]){if(_0x3e5944[_0x8dca('0x7')][_0x8dca('0xb')]){if(!_0x3e5944[_0x8dca('0x7')]['CloudProvider'])throw new Error(_0x8dca('0xc'));_0x2ea14e[_0x8dca('0xd')]={'type':'OAuth2','user':_0x3e5944['Smtp'][_0x8dca('0xe')],'accessToken':_0x3e5944[_0x8dca('0x7')][_0x8dca('0xf')][_0x8dca('0x10')]};}else{_0x2ea14e['auth']={'user':_0x3e5944[_0x8dca('0x7')]['user'],'pass':_0x3e5944[_0x8dca('0x7')]['pass']};}}return _0x2ea14e;}}});};
\ No newline at end of file
index a6a2fbe..975e459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','Contacts','updatedAt','DESC','MailApplication','Applications','List','omit','applications','list','orderBy','asc','push','length','close','*,*,*,*','ListId','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','inReplyTo','MailInteraction','create','Contact\x20not\x20found','spread','update','interaction','get','created','originCc','bcc','Email','Attachment','Attachments','UserId','User','unshift','name','waitForTheAssignedAgent','startRouting','Start','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','include','map','model','info','ShowMailAccount','MailAccount','find'];(function(_0x1809e6,_0x35ff29){var _0xbca8a7=function(_0x48a93e){while(--_0x48a93e){_0x1809e6['push'](_0x1809e6['shift']());}};_0xbca8a7(++_0x35ff29);}(_0x57ca,0x108));var _0xa57c=function(_0x52771e,_0x181c58){_0x52771e=_0x52771e-0x0;var _0x5b4edc=_0x57ca[_0x52771e];return _0x5b4edc;};'use strict';var _=require('lodash');var moment=require(_0xa57c('0x0'));var BPromise=require(_0xa57c('0x1'));var rs=require('randomstring');var Redis=require(_0xa57c('0x2'));var db=require(_0xa57c('0x3'))['db'];var logger=require(_0xa57c('0x4'))(_0xa57c('0x5'));var config=require(_0xa57c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa57c('0x7')][_0xa57c('0x8')]({'port':0x232c});config[_0xa57c('0x9')]=_[_0xa57c('0xa')](config[_0xa57c('0x9')],{'host':_0xa57c('0xb'),'port':0x18eb});var socket=require(_0xa57c('0xc'))(new Redis(config[_0xa57c('0x9')]));require('./mailAccount.socket')[_0xa57c('0xd')](socket);function respondWithRpcPromise(_0x4b51d8,_0x46ba92,_0x932dcc){return new BPromise(function(_0x4fa5ed,_0x156bca){return client['request'](_0x4b51d8,_0x932dcc)[_0xa57c('0xe')](function(_0x44b221){logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');logger[_0xa57c('0x10')](_0xa57c('0x11'),_0x46ba92,_0xa57c('0x12'),JSON[_0xa57c('0x13')](_0x44b221));if(_0x44b221[_0xa57c('0x14')]){if(_0x44b221['error'][_0xa57c('0x15')]===0x1f4){logger['error'](_0xa57c('0xf'),_0x46ba92,_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);return _0x156bca(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0x44b221['error'][_0xa57c('0x16')]);return _0x4fa5ed(_0x44b221[_0xa57c('0x14')][_0xa57c('0x16')]);}else{logger['info'](_0xa57c('0xf'),_0x46ba92,'request\x20sent');_0x4fa5ed(_0x44b221[_0xa57c('0x17')][_0xa57c('0x16')]);}})[_0xa57c('0x18')](function(_0xe3d505){logger[_0xa57c('0x14')](_0xa57c('0xf'),_0x46ba92,_0xe3d505);_0x156bca(_0xe3d505);});});}exports[_0xa57c('0x19')]=function(_0x595c7a){var _0x4e4399=this;return new Promise(function(_0x8a8856,_0x4a53ab){return db['MailAccount'][_0xa57c('0x1a')]({'raw':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1c')]===undefined?!![]:![]:!![],'where':_0x595c7a['options']?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1d')]||null:null,'attributes':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1e')]||null:null,'limit':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x1f')]||null:null,'include':_0x595c7a[_0xa57c('0x1b')]?_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x595c7a[_0xa57c('0x1b')][_0xa57c('0x20')],function(_0x431bec){return{'model':db[_0x431bec['model']],'as':_0x431bec['as'],'attributes':_0x431bec[_0xa57c('0x1e')],'include':_0x431bec[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x431bec[_0xa57c('0x20')],function(_0x315ad7){return{'model':db[_0x315ad7[_0xa57c('0x22')]],'as':_0x315ad7['as'],'attributes':_0x315ad7[_0xa57c('0x1e')],'include':_0x315ad7[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x315ad7[_0xa57c('0x20')],function(_0x57ebe0){return{'model':db[_0x57ebe0[_0xa57c('0x22')]],'as':_0x57ebe0['as'],'attributes':_0x57ebe0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x257661){logger[_0xa57c('0x23')]('GetMailAccount',_0x595c7a);logger[_0xa57c('0x10')](_0xa57c('0x19'),_0x595c7a,JSON[_0xa57c('0x13')](_0x257661));_0x8a8856(_0x257661);})['catch'](function(_0xd779f1){logger['error'](_0xa57c('0x19'),_0xd779f1['message'],_0x595c7a);_0x4a53ab(_0x4e4399[_0xa57c('0x14')](0x1f4,_0xd779f1['message']));});});};exports[_0xa57c('0x24')]=function(_0x532164){var _0x9e02bb=this;return new Promise(function(_0x1d82d9,_0x43c8f3){return db[_0xa57c('0x25')][_0xa57c('0x26')]({'raw':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x1d')]||null:null,'attributes':_0x532164[_0xa57c('0x1b')]?_0x532164[_0xa57c('0x1b')]['attributes']||null:null,'include':_0x532164[_0xa57c('0x1b')]?_0x532164['options'][_0xa57c('0x20')]?_['map'](_0x532164[_0xa57c('0x1b')]['include'],function(_0x433116){return{'model':db[_0x433116[_0xa57c('0x22')]],'as':_0x433116['as'],'attributes':_0x433116['attributes'],'include':_0x433116[_0xa57c('0x20')]?_['map'](_0x433116[_0xa57c('0x20')],function(_0x5c56d3){return{'model':db[_0x5c56d3[_0xa57c('0x22')]],'as':_0x5c56d3['as'],'attributes':_0x5c56d3[_0xa57c('0x1e')],'include':_0x5c56d3[_0xa57c('0x20')]?_[_0xa57c('0x21')](_0x5c56d3[_0xa57c('0x20')],function(_0x44350f){return{'model':db[_0x44350f['model']],'as':_0x44350f['as'],'attributes':_0x44350f['attributes']};}):[]};}):[]};}):[]:[]})[_0xa57c('0xe')](function(_0x13e390){if(_0x532164[_0xa57c('0x1b')]['smtp']===!![])_0x13e390[_0xa57c('0x27')]('smtpOptions',_0x13e390[_0xa57c('0x28')]());logger[_0xa57c('0x23')]('ShowMailAccount',_0x532164);logger['debug']('ShowMailAccount',_0x532164,JSON[_0xa57c('0x13')](_0x13e390));_0x1d82d9(_0x13e390);})[_0xa57c('0x18')](function(_0x269a19){logger[_0xa57c('0x14')](_0xa57c('0x24'),_0x269a19[_0xa57c('0x16')],_0x532164);_0x43c8f3(_0x9e02bb['error'](0x1f4,_0x269a19[_0xa57c('0x16')]));});});};exports[_0xa57c('0x29')]=function(_0x5a5490){var _0x5ed42d=this;return new Promise(function(_0x5e10b,_0x203375){var _0x5af5e9={'body':_0x5a5490[_0xa57c('0x2a')],'channel':_0xa57c('0x2b')};var _0x2112b7=_[_0xa57c('0x2c')](_[_0xa57c('0x2d')](db[_0xa57c('0x2e')]['rawAttributes']),[_0xa57c('0x2f'),'updatedAt','CompanyId','ListId']);var _0x520383=![];if(_0x5a5490['body']['id']){delete _0x5a5490[_0xa57c('0x2a')]['id'];}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')]['from'])){return _0x203375(_0x5ed42d['error'](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')])||_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x2a')]===''){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xa57c('0x30')](_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x32')+_0x2112b7));}if(!_[_0xa57c('0x33')](_0x2112b7,_0x5a5490['body'][_0xa57c('0x31')])){return _0x203375(_0x5ed42d[_0xa57c('0x14')](0x1f4,_0xa57c('0x34')+_0x2112b7));}var _0x14e943={};_0x14e943[_0x5a5490[_0xa57c('0x2a')]['mapKey']]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x25')][_0xa57c('0x26')]({'where':{'id':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x37')],'as':'List','include':[{'model':db[_0xa57c('0x2e')],'as':_0xa57c('0x38'),'where':_0x14e943,'limit':0x1,'order':[[_0xa57c('0x39'),_0xa57c('0x3a')]]}]},{'model':db[_0xa57c('0x3b')],'as':_0xa57c('0x3c')},{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]})[_0xa57c('0xe')](function(_0x49492f){if(_0x49492f&&_0x49492f[_0xa57c('0x3d')]){var _0xae87=_0x49492f['get']({'plain':!![]});_0x5af5e9[_0xa57c('0x36')]=_[_0xa57c('0x3e')](_0xae87,[_0xa57c('0x3c'),_0xa57c('0x3d')]);_0x5af5e9[_0xa57c('0x36')]['smtpOptions']=_0x49492f[_0xa57c('0x28')]();_0x5af5e9[_0xa57c('0x3f')]=_0xae87[_0xa57c('0x3c')];_0x5af5e9[_0xa57c('0x40')]=_0xae87[_0xa57c('0x3d')];_0x5af5e9['applications']=_[_0xa57c('0x41')](_0x5af5e9['applications'],['priority'],[_0xa57c('0x42')]);if(_0x5af5e9[_0xa57c('0x36')]&&_0x5af5e9[_0xa57c('0x36')]['autoclose']){_0x5af5e9['applications'][_0xa57c('0x43')]({'id':0x0,'priority':_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x44')]+0x1,'app':_0xa57c('0x45'),'appdata':'autoclose','interval':_0xa57c('0x46')});}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3c')]){delete _0x5af5e9['account']['Applications'];}if(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x3d')]){delete _0x5af5e9['account'][_0xa57c('0x3d')];}if(_0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][_0xa57c('0x44')]){return _0xae87[_0xa57c('0x3d')][_0xa57c('0x38')][0x0];}var _0x4fc413=_['defaults'](_0x5a5490['body'],{'firstName':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')],'ListId':_0xae87[_0xa57c('0x47')]});_0x4fc413[_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x31')]]=_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x35')];return db[_0xa57c('0x2e')]['create'](_0x4fc413);}else{throw new Error('List\x20not\x20found');}})[_0xa57c('0xe')](function(_0x4e18ad){_0x5af5e9[_0xa57c('0x48')]=_0x4e18ad;if(_0x4e18ad){if(!_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['messageId']){_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x49')]=rs['generate']()+'\x20'+_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x35')];}var _0x26a8e1={'ContactId':_0x4e18ad['id'],'MailAccountId':_0x5a5490['account']['id'],'inReplyTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'to':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['from'],'cc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xa57c('0x26')]({'where':{'closed':![],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id']},'include':[{'model':db[_0xa57c('0x4e')],'as':_0xa57c('0x4f'),'attributes':[_0xa57c('0x49')],'where':{'messageId':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x50')]}}]})[_0xa57c('0xe')](function(_0x521acc){if(_0x521acc){return[_0x521acc,![]];}return db[_0xa57c('0x51')][_0xa57c('0x52')](_0x26a8e1)[_0xa57c('0xe')](function(_0xa78a75){return[_0xa78a75,!![]];});});}else{throw new Error(_0xa57c('0x53'));}})[_0xa57c('0x54')](function(_0x24efa0,_0x5e1103){if(_0x24efa0){_0x520383=_0x5e1103;if(!_0x5e1103){return _0x24efa0[_0xa57c('0x55')]({'inReplyTo':_0x5a5490['body'][_0xa57c('0x16')]['messageId'],'to':_0x5a5490[_0xa57c('0x2a')]['message'][_0xa57c('0x35')],'cc':_0x5a5490[_0xa57c('0x2a')]['message']['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x24efa0[_0xa57c('0x4b')]?_0x24efa0['attach']:_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'substatus':null,'substatusAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgAt':moment()[_0xa57c('0x4c')](_0xa57c('0x4d')),'lastMsgDirection':'in'});}else{return _0x24efa0;}}})[_0xa57c('0xe')](function(_0x11c13e){_0x5af5e9[_0xa57c('0x56')]=_0x11c13e[_0xa57c('0x57')]({'plain':!![]});_0x5af5e9[_0xa57c('0x56')][_0xa57c('0x58')]=_0x520383;return db[_0xa57c('0x4e')][_0xa57c('0x52')]({'body':_0x5a5490[_0xa57c('0x2a')]['body'],'MailAccountId':_0x5a5490[_0xa57c('0x36')]['id'],'MailInteractionId':_0x11c13e['id'],'direction':'in','ContactId':_0x5af5e9['contact']['id'],'messageId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x49')],'from':_0x5a5490['body'][_0xa57c('0x16')][_0xa57c('0x35')],'to':_0x5a5490[_0xa57c('0x2a')]['message']['to'],'cc':_0x5a5490['body'][_0xa57c('0x16')]['cc'],'subject':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4a')],'attach':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x4b')],'Attachments':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['attachments'],'originTo':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originTo'],'originCc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x59')],'bcc':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')][_0xa57c('0x5a')],'ChatWebsiteId':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['ChatWebsiteId']||null,'originChannel':_0x5a5490[_0xa57c('0x2a')][_0xa57c('0x16')]['originChannel']||_0xa57c('0x5b'),'ChatOfflineMessageId':_0x5a5490[_0xa57c('0x2a')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xa57c('0x5c')],'as':_0xa57c('0x5d')}]});})[_0xa57c('0xe')](function(_0x1604d6){_0x5af5e9[_0xa57c('0x16')]=_0x1604d6;if(_0x5af5e9['interaction'][_0xa57c('0x5e')]){return db[_0xa57c('0x5f')][_0xa57c('0x26')]({'attributes':['id','name'],'where':{'id':_0x5af5e9[_0xa57c('0x56')]['UserId']}})[_0xa57c('0xe')](function(_0x2963cb){if(_0x2963cb){_0x5af5e9[_0xa57c('0x3f')][_0xa57c('0x60')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2963cb[_0xa57c('0x61')]+','+(_0x5af5e9[_0xa57c('0x36')][_0xa57c('0x62')]||0xa),'interval':_0xa57c('0x46')});}return respondWithRpcPromise('Start',_0xa57c('0x63'),_0x5af5e9);});}return respondWithRpcPromise(_0xa57c('0x64'),_0xa57c('0x63'),_0x5af5e9);})['then'](function(_0x3da413){_0x5e10b(_0x3da413);})[_0xa57c('0x18')](function(_0x2ed4f4){_0x203375(_0x5ed42d['error'](0x1f4,_0x2ed4f4[_0xa57c('0x16')]));});});};
\ No newline at end of file
+var _0x5f66=['../../config/logger','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','debug','request\x20sent','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','GetMailAccount','MailAccount','options','raw','where','limit','include','map','model','attributes','stringify','find','smtp','smtpOptions','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','List','Contacts','updatedAt','DESC','MailApplication','Applications','MailServerOut','CloudProvider','get','omit','getSmtpOptions','list','applications','orderBy','priority','autoclose','push','close','defaults','List\x20not\x20found','contact','messageId','generate','subject','attach','format','MailInteraction','Messages','inReplyTo','Contact\x20not\x20found','spread','YYYY-MM-DD\x20HH:mm:ss','interaction','MailMessage','create','attachments','originTo','originCc','ChatWebsiteId','originChannel','ChatOfflineMessageId','Attachment','UserId','name','unshift','agent','*,*,*,*','startRouting','Start','moment','randomstring','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f66,0x1a0));var _0x65f6=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x5f66[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var moment=require(_0x65f6('0x0'));var BPromise=require('bluebird');var rs=require(_0x65f6('0x1'));var Redis=require(_0x65f6('0x2'));var db=require(_0x65f6('0x3'))['db'];var logger=require(_0x65f6('0x4'))(_0x65f6('0x5'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x6'));var client=jayson['client'][_0x65f6('0x7')]({'port':0x232c});config[_0x65f6('0x8')]=_['defaults'](config['redis'],{'host':_0x65f6('0x9'),'port':0x18eb});var socket=require(_0x65f6('0xa'))(new Redis(config[_0x65f6('0x8')]));require(_0x65f6('0xb'))[_0x65f6('0xc')](socket);function respondWithRpcPromise(_0x14f4c7,_0x48d85c,_0x5123ee){return new BPromise(function(_0x18fea1,_0x2f6d5b){return client[_0x65f6('0xd')](_0x14f4c7,_0x5123ee)[_0x65f6('0xe')](function(_0x50d26d){logger[_0x65f6('0xf')]('MailAccount,\x20%s,\x20%s',_0x48d85c,'request\x20sent');logger[_0x65f6('0x10')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x48d85c,_0x65f6('0x11'),JSON['stringify'](_0x50d26d));if(_0x50d26d[_0x65f6('0x12')]){if(_0x50d26d[_0x65f6('0x12')][_0x65f6('0x13')]===0x1f4){logger[_0x65f6('0x12')](_0x65f6('0x14'),_0x48d85c,_0x50d26d[_0x65f6('0x12')][_0x65f6('0x15')]);return _0x2f6d5b(_0x50d26d[_0x65f6('0x12')][_0x65f6('0x15')]);}logger[_0x65f6('0x12')]('MailAccount,\x20%s,\x20%s',_0x48d85c,_0x50d26d[_0x65f6('0x12')]['message']);return _0x18fea1(_0x50d26d['error'][_0x65f6('0x15')]);}else{logger[_0x65f6('0xf')](_0x65f6('0x14'),_0x48d85c,_0x65f6('0x11'));_0x18fea1(_0x50d26d[_0x65f6('0x16')][_0x65f6('0x15')]);}})[_0x65f6('0x17')](function(_0x18380e){logger['error']('MailAccount,\x20%s,\x20%s',_0x48d85c,_0x18380e);_0x2f6d5b(_0x18380e);});});}exports[_0x65f6('0x18')]=function(_0x5b4055){var _0x4c81f3=this;return new Promise(function(_0x5c5b91,_0x365159){return db[_0x65f6('0x19')]['findAll']({'raw':_0x5b4055[_0x65f6('0x1a')]?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1b')]===undefined?!![]:![]:!![],'where':_0x5b4055[_0x65f6('0x1a')]?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1c')]||null:null,'attributes':_0x5b4055['options']?_0x5b4055[_0x65f6('0x1a')]['attributes']||null:null,'limit':_0x5b4055['options']?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1d')]||null:null,'include':_0x5b4055['options']?_0x5b4055[_0x65f6('0x1a')][_0x65f6('0x1e')]?_[_0x65f6('0x1f')](_0x5b4055[_0x65f6('0x1a')]['include'],function(_0x9d7bb0){return{'model':db[_0x9d7bb0[_0x65f6('0x20')]],'as':_0x9d7bb0['as'],'attributes':_0x9d7bb0[_0x65f6('0x21')],'include':_0x9d7bb0['include']?_['map'](_0x9d7bb0['include'],function(_0x29abdb){return{'model':db[_0x29abdb[_0x65f6('0x20')]],'as':_0x29abdb['as'],'attributes':_0x29abdb['attributes'],'include':_0x29abdb[_0x65f6('0x1e')]?_[_0x65f6('0x1f')](_0x29abdb['include'],function(_0x325cb4){return{'model':db[_0x325cb4[_0x65f6('0x20')]],'as':_0x325cb4['as'],'attributes':_0x325cb4[_0x65f6('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ac04b){logger['info'](_0x65f6('0x18'),_0x5b4055);logger[_0x65f6('0x10')](_0x65f6('0x18'),_0x5b4055,JSON[_0x65f6('0x22')](_0x4ac04b));_0x5c5b91(_0x4ac04b);})[_0x65f6('0x17')](function(_0x14a387){logger[_0x65f6('0x12')]('GetMailAccount',_0x14a387['message'],_0x5b4055);_0x365159(_0x4c81f3[_0x65f6('0x12')](0x1f4,_0x14a387[_0x65f6('0x15')]));});});};exports['ShowMailAccount']=function(_0x4e50c0){var _0x10b368=this;return new Promise(function(_0x1ce43c,_0x11fe3b){return db[_0x65f6('0x19')][_0x65f6('0x23')]({'raw':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0['options'][_0x65f6('0x1b')]===undefined?!![]:![]:!![],'where':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0[_0x65f6('0x1a')]['where']||null:null,'attributes':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x21')]||null:null,'include':_0x4e50c0[_0x65f6('0x1a')]?_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x1e')]?_['map'](_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x1e')],function(_0x4f3e22){return{'model':db[_0x4f3e22[_0x65f6('0x20')]],'as':_0x4f3e22['as'],'attributes':_0x4f3e22['attributes'],'include':_0x4f3e22[_0x65f6('0x1e')]?_['map'](_0x4f3e22[_0x65f6('0x1e')],function(_0x24f7fd){return{'model':db[_0x24f7fd['model']],'as':_0x24f7fd['as'],'attributes':_0x24f7fd[_0x65f6('0x21')],'include':_0x24f7fd[_0x65f6('0x1e')]?_[_0x65f6('0x1f')](_0x24f7fd['include'],function(_0x582c7e){return{'model':db[_0x582c7e[_0x65f6('0x20')]],'as':_0x582c7e['as'],'attributes':_0x582c7e['attributes']};}):[]};}):[]};}):[]:[]})[_0x65f6('0xe')](function(_0x4e6653){if(_0x4e50c0[_0x65f6('0x1a')][_0x65f6('0x24')]===!![])_0x4e6653['setDataValue'](_0x65f6('0x25'),_0x4e6653['getSmtpOptions']());logger['info'](_0x65f6('0x26'),_0x4e50c0);logger[_0x65f6('0x10')](_0x65f6('0x26'),_0x4e50c0,JSON[_0x65f6('0x22')](_0x4e6653));_0x1ce43c(_0x4e6653);})[_0x65f6('0x17')](function(_0x28845a){logger[_0x65f6('0x12')](_0x65f6('0x26'),_0x28845a['message'],_0x4e50c0);_0x11fe3b(_0x10b368[_0x65f6('0x12')](0x1f4,_0x28845a['message']));});});};exports[_0x65f6('0x27')]=function(_0xa4394a){var _0x4ba7db=this;return new Promise(function(_0x2ea7f7,_0x5ef5c2){var _0x32148f={'body':_0xa4394a[_0x65f6('0x28')],'channel':_0x65f6('0x29')};var _0x3fb1c6=_[_0x65f6('0x2a')](_[_0x65f6('0x2b')](db[_0x65f6('0x2c')][_0x65f6('0x2d')]),[_0x65f6('0x2e'),'updatedAt',_0x65f6('0x2f'),_0x65f6('0x30')]);var _0x377ae5=![];if(_0xa4394a[_0x65f6('0x28')]['id']){delete _0xa4394a[_0x65f6('0x28')]['id'];}if(_[_0x65f6('0x31')](_0xa4394a[_0x65f6('0x28')][_0x65f6('0x32')])){return _0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,_0x65f6('0x33')));}if(_[_0x65f6('0x31')](_0xa4394a[_0x65f6('0x28')][_0x65f6('0x28')])||_0xa4394a[_0x65f6('0x28')][_0x65f6('0x28')]===''){return _0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x65f6('0x31')](_0xa4394a[_0x65f6('0x28')][_0x65f6('0x34')])){return _0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3fb1c6));}if(!_[_0x65f6('0x35')](_0x3fb1c6,_0xa4394a[_0x65f6('0x28')][_0x65f6('0x34')])){return _0x5ef5c2(_0x4ba7db['error'](0x1f4,_0x65f6('0x36')+_0x3fb1c6));}var _0x3386a2={};_0x3386a2[_0xa4394a[_0x65f6('0x28')][_0x65f6('0x34')]]=_0xa4394a['body'][_0x65f6('0x32')];return db['MailAccount'][_0x65f6('0x23')]({'where':{'id':_0xa4394a[_0x65f6('0x37')]['id']},'include':[{'model':db['CmList'],'as':_0x65f6('0x38'),'include':[{'model':db['CmContact'],'as':_0x65f6('0x39'),'where':_0x3386a2,'limit':0x1,'order':[[_0x65f6('0x3a'),_0x65f6('0x3b')]]}]},{'model':db[_0x65f6('0x3c')],'as':_0x65f6('0x3d')},{'model':db[_0x65f6('0x3e')],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0x65f6('0x3f')}]}]})[_0x65f6('0xe')](function(_0x3b647a){if(_0x3b647a&&_0x3b647a[_0x65f6('0x38')]){var _0x3b907c=_0x3b647a[_0x65f6('0x40')]({'plain':!![]});_0x32148f[_0x65f6('0x37')]=_[_0x65f6('0x41')](_0x3b907c,[_0x65f6('0x3d'),'List']);_0x32148f[_0x65f6('0x37')][_0x65f6('0x25')]=_0x3b647a[_0x65f6('0x42')]();_0x32148f['applications']=_0x3b907c[_0x65f6('0x3d')];_0x32148f[_0x65f6('0x43')]=_0x3b907c['List'];_0x32148f[_0x65f6('0x44')]=_[_0x65f6('0x45')](_0x32148f['applications'],[_0x65f6('0x46')],['asc']);if(_0x32148f[_0x65f6('0x37')]&&_0x32148f[_0x65f6('0x37')][_0x65f6('0x47')]){_0x32148f['applications'][_0x65f6('0x48')]({'id':0x0,'priority':_0x32148f[_0x65f6('0x44')]['length']+0x1,'app':_0x65f6('0x49'),'appdata':_0x65f6('0x47'),'interval':'*,*,*,*'});}if(_0x32148f[_0x65f6('0x37')][_0x65f6('0x3d')]){delete _0x32148f[_0x65f6('0x37')][_0x65f6('0x3d')];}if(_0x32148f[_0x65f6('0x37')][_0x65f6('0x38')]){delete _0x32148f[_0x65f6('0x37')][_0x65f6('0x38')];}if(_0x3b907c['List']['Contacts']['length']){return _0x3b907c[_0x65f6('0x38')][_0x65f6('0x39')][0x0];}var _0x111a8a=_[_0x65f6('0x4a')](_0xa4394a['body'],{'firstName':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x32')],'ListId':_0x3b907c[_0x65f6('0x30')]});_0x111a8a[_0xa4394a['body'][_0x65f6('0x34')]]=_0xa4394a[_0x65f6('0x28')][_0x65f6('0x32')];return db['CmContact']['create'](_0x111a8a);}else{throw new Error(_0x65f6('0x4b'));}})[_0x65f6('0xe')](function(_0x4125cb){_0x32148f[_0x65f6('0x4c')]=_0x4125cb;if(_0x4125cb){if(!_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4d')]){_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4d')]=rs[_0x65f6('0x4e')]()+'\x20'+_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x32')];}var _0x5ba9c6={'ContactId':_0x4125cb['id'],'MailAccountId':_0xa4394a[_0x65f6('0x37')]['id'],'inReplyTo':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['messageId'],'to':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x32')],'cc':_0xa4394a[_0x65f6('0x28')]['message']['cc'],'subject':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4f')],'attach':_0xa4394a[_0x65f6('0x28')]['message'][_0x65f6('0x50')],'lastMsgAt':moment()[_0x65f6('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x65f6('0x52')][_0x65f6('0x23')]({'where':{'closed':![],'MailAccountId':_0xa4394a[_0x65f6('0x37')]['id']},'include':[{'model':db['MailMessage'],'as':_0x65f6('0x53'),'attributes':[_0x65f6('0x4d')],'where':{'messageId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x54')]}}]})[_0x65f6('0xe')](function(_0x5e4759){if(_0x5e4759){return[_0x5e4759,![]];}return db['MailInteraction']['create'](_0x5ba9c6)[_0x65f6('0xe')](function(_0x367d95){return[_0x367d95,!![]];});});}else{throw new Error(_0x65f6('0x55'));}})[_0x65f6('0x56')](function(_0xab6f0,_0x304cf9){if(_0xab6f0){_0x377ae5=_0x304cf9;if(!_0x304cf9){return _0xab6f0['update']({'inReplyTo':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['messageId'],'to':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x32')],'cc':_0xa4394a['body'][_0x65f6('0x15')]['cc'],'subject':_0xa4394a[_0x65f6('0x28')]['message'][_0x65f6('0x4f')],'attach':_0xab6f0[_0x65f6('0x50')]?_0xab6f0[_0x65f6('0x50')]:_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x50')],'substatus':null,'substatusAt':moment()[_0x65f6('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()['format'](_0x65f6('0x57')),'lastMsgDirection':'in'});}else{return _0xab6f0;}}})[_0x65f6('0xe')](function(_0x4a9524){_0x32148f[_0x65f6('0x58')]=_0x4a9524['get']({'plain':!![]});_0x32148f[_0x65f6('0x58')]['created']=_0x377ae5;return db[_0x65f6('0x59')][_0x65f6('0x5a')]({'body':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x28')],'MailAccountId':_0xa4394a[_0x65f6('0x37')]['id'],'MailInteractionId':_0x4a9524['id'],'direction':'in','ContactId':_0x32148f[_0x65f6('0x4c')]['id'],'messageId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4d')],'from':_0xa4394a['body']['message'][_0x65f6('0x32')],'to':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['to'],'cc':_0xa4394a['body']['message']['cc'],'subject':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x4f')],'attach':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x50')],'Attachments':_0xa4394a['body']['message'][_0x65f6('0x5b')],'originTo':_0xa4394a[_0x65f6('0x28')]['message'][_0x65f6('0x5c')],'originCc':_0xa4394a['body'][_0x65f6('0x15')][_0x65f6('0x5d')],'bcc':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')]['bcc'],'ChatWebsiteId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x5e')]||null,'originChannel':_0xa4394a['body']['message'][_0x65f6('0x5f')]||'Email','ChatOfflineMessageId':_0xa4394a[_0x65f6('0x28')][_0x65f6('0x15')][_0x65f6('0x60')]||null},{'include':[{'model':db[_0x65f6('0x61')],'as':'Attachments'}]});})['then'](function(_0x56f7f1){_0x32148f[_0x65f6('0x15')]=_0x56f7f1;if(_0x32148f[_0x65f6('0x58')][_0x65f6('0x62')]){return db['User'][_0x65f6('0x23')]({'attributes':['id',_0x65f6('0x63')],'where':{'id':_0x32148f[_0x65f6('0x58')]['UserId']}})[_0x65f6('0xe')](function(_0x15809e){if(_0x15809e){_0x32148f['applications'][_0x65f6('0x64')]({'id':0x0,'priority':0x0,'app':_0x65f6('0x65'),'appdata':_0x15809e['name']+','+(_0x32148f[_0x65f6('0x37')]['waitForTheAssignedAgent']||0xa),'interval':_0x65f6('0x66')});}return respondWithRpcPromise('Start',_0x65f6('0x67'),_0x32148f);});}return respondWithRpcPromise(_0x65f6('0x68'),'startRouting',_0x32148f);})[_0x65f6('0xe')](function(_0x442e25){_0x2ea7f7(_0x442e25);})[_0x65f6('0x17')](function(_0x299b85){_0x5ef5c2(_0x4ba7db[_0x65f6('0x12')](0x1f4,_0x299b85[_0x65f6('0x15')]));});});};
\ No newline at end of file
index a004758..b8defd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8897=['./mailAccount.events','save','remove','update','emit','removeListener','register','length','mailAccount:'];(function(_0x530ef9,_0x1094f9){var _0x2cc28c=function(_0x3bf71a){while(--_0x3bf71a){_0x530ef9['push'](_0x530ef9['shift']());}};_0x2cc28c(++_0x1094f9);}(_0x8897,0x132));var _0x7889=function(_0x386c5d,_0x432b23){_0x386c5d=_0x386c5d-0x0;var _0x5c220d=_0x8897[_0x386c5d];return _0x5c220d;};'use strict';var MailAccountEvents=require(_0x7889('0x0'));var events=[_0x7889('0x1'),_0x7889('0x2'),_0x7889('0x3')];function createListener(_0x1cb8b5,_0x20f177){return function(_0xf0cc20){_0x20f177[_0x7889('0x4')](_0x1cb8b5,_0xf0cc20);};}function removeListener(_0x130edd,_0x22595c){return function(){MailAccountEvents[_0x7889('0x5')](_0x130edd,_0x22595c);};}exports[_0x7889('0x6')]=function(_0x3c30d7){for(var _0x840398=0x0,_0x9c9793=events[_0x7889('0x7')];_0x840398<_0x9c9793;_0x840398++){var _0x4f187f=events[_0x840398];var _0x5bec64=createListener(_0x7889('0x8')+_0x4f187f,_0x3c30d7);MailAccountEvents['on'](_0x4f187f,_0x5bec64);}};
\ No newline at end of file
+var _0x9bbd=['remove','update','emit','removeListener','register','mailAccount:'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x9bbd,0x198));var _0xd9bb=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9bbd[_0x618414];return _0x21c19a;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save',_0xd9bb('0x0'),_0xd9bb('0x1')];function createListener(_0x422231,_0x192df6){return function(_0x287a31){_0x192df6[_0xd9bb('0x2')](_0x422231,_0x287a31);};}function removeListener(_0x1b989d,_0x416085){return function(){MailAccountEvents[_0xd9bb('0x3')](_0x1b989d,_0x416085);};}exports[_0xd9bb('0x4')]=function(_0x2a6001){for(var _0x5a7e41=0x0,_0x578b72=events['length'];_0x5a7e41<_0x578b72;_0x5a7e41++){var _0x1e56f4=events[_0x5a7e41];var _0x33dd28=createListener(_0xd9bb('0x5')+_0x1e56f4,_0x2a6001);MailAccountEvents['on'](_0x1e56f4,_0x33dd28);}};
\ No newline at end of file
index 6f70d8d..8b80758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f3e=['show','put','isAuthenticated','update','delete','destroy','multer','util','connect-timeout','fs-extra','./mailApplication.controller','get'];(function(_0x2d4045,_0x58f141){var _0x35ffde=function(_0x24be75){while(--_0x24be75){_0x2d4045['push'](_0x2d4045['shift']());}};_0x35ffde(++_0x58f141);}(_0x3f3e,0x72));var _0xe3f3=function(_0x4e3902,_0x13a480){_0x4e3902=_0x4e3902-0x0;var _0x18c11f=_0x3f3e[_0x4e3902];return _0x18c11f;};'use strict';var multer=require(_0xe3f3('0x0'));var util=require(_0xe3f3('0x1'));var path=require('path');var timeout=require(_0xe3f3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe3f3('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe3f3('0x4'));router[_0xe3f3('0x5')]('/:id',auth['isAuthenticated'](),controller[_0xe3f3('0x6')]);router[_0xe3f3('0x7')]('/:id',auth[_0xe3f3('0x8')](),controller[_0xe3f3('0x9')]);router[_0xe3f3('0xa')]('/:id',auth[_0xe3f3('0x8')](),controller[_0xe3f3('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0x3cb2=['fs-extra','../../components/auth/service','../../config/environment','./mailApplication.controller','get','isAuthenticated','show','put','/:id','destroy','exports','multer','connect-timeout','express','Router'];(function(_0x399869,_0x11b444){var _0x4ff731=function(_0x1a0cc2){while(--_0x1a0cc2){_0x399869['push'](_0x399869['shift']());}};_0x4ff731(++_0x11b444);}(_0x3cb2,0x191));var _0x23cb=function(_0x2300c7,_0x255f74){_0x2300c7=_0x2300c7-0x0;var _0x23f720=_0x3cb2[_0x2300c7];return _0x23f720;};'use strict';var multer=require(_0x23cb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x23cb('0x1'));var express=require(_0x23cb('0x2'));var router=express[_0x23cb('0x3')]();var fs_extra=require(_0x23cb('0x4'));var auth=require(_0x23cb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x23cb('0x6'));var controller=require(_0x23cb('0x7'));router[_0x23cb('0x8')]('/:id',auth[_0x23cb('0x9')](),controller[_0x23cb('0xa')]);router[_0x23cb('0xb')](_0x23cb('0xc'),auth[_0x23cb('0x9')](),controller['update']);router['delete'](_0x23cb('0xc'),auth['isAuthenticated'](),controller[_0x23cb('0xd')]);module[_0x23cb('0xe')]=router;
\ No newline at end of file
index 7ff206c..3aa36bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad38=['noop','TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0x24eab8,_0x2f471c){var _0x41d883=function(_0x542122){while(--_0x542122){_0x24eab8['push'](_0x24eab8['shift']());}};_0x41d883(++_0x2f471c);}(_0xad38,0x123));var _0x8ad3=function(_0x34b61a,_0x1ac6ae){_0x34b61a=_0x34b61a-0x0;var _0x2d01e2=_0xad38[_0x34b61a];return _0x2d01e2;};'use strict';var Sequelize=require(_0x8ad3('0x0'));module[_0x8ad3('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x8ad3('0x2')],'allowNull':![],'defaultValue':_0x8ad3('0x3')},'appdata':{'type':Sequelize[_0x8ad3('0x4')]()},'description':{'type':Sequelize[_0x8ad3('0x2')]},'interval':{'type':Sequelize[_0x8ad3('0x2')],'defaultValue':_0x8ad3('0x5')}};
\ No newline at end of file
+var _0xffc2=['exports','INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize'];(function(_0x5c6299,_0x11bd28){var _0x23b564=function(_0x329ed6){while(--_0x329ed6){_0x5c6299['push'](_0x5c6299['shift']());}};_0x23b564(++_0x11bd28);}(_0xffc2,0xf4));var _0x2ffc=function(_0x5f2acc,_0x47fcfd){_0x5f2acc=_0x5f2acc-0x0;var _0x1ec79c=_0xffc2[_0x5f2acc];return _0x1ec79c;};'use strict';var Sequelize=require(_0x2ffc('0x0'));module[_0x2ffc('0x1')]={'priority':{'type':Sequelize[_0x2ffc('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2ffc('0x3')},'appdata':{'type':Sequelize[_0x2ffc('0x4')]()},'description':{'type':Sequelize[_0x2ffc('0x5')]},'interval':{'type':Sequelize[_0x2ffc('0x5')],'defaultValue':_0x2ffc('0x6')}};
\ No newline at end of file
index 022be6e..15170c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','show','params','model','keys','MailApplication','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','catch','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set'];(function(_0x53447b,_0xc2f316){var _0x52d5fd=function(_0x32c206){while(--_0x32c206){_0x53447b['push'](_0x53447b['shift']());}};_0x52d5fd(++_0xc2f316);}(_0xac4a,0x13f));var _0xaac4=function(_0x366142,_0x2361b9){_0x366142=_0x366142-0x0;var _0x1f4553=_0xac4a[_0x366142];return _0x1f4553;};'use strict';var emlformat=require(_0xaac4('0x0'));var rimraf=require(_0xaac4('0x1'));var zipdir=require(_0xaac4('0x2'));var jsonpatch=require(_0xaac4('0x3'));var rp=require(_0xaac4('0x4'));var moment=require(_0xaac4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xaac4('0x6'));var path=require(_0xaac4('0x7'));var sox=require(_0xaac4('0x8'));var csv=require('to-csv');var ejs=require(_0xaac4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaac4('0xa'));var squel=require('squel');var crypto=require(_0xaac4('0xb'));var jsforce=require(_0xaac4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaac4('0xd'));var Papa=require('papaparse');var Redis=require(_0xaac4('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaac4('0xf'));var hardwareService=require(_0xaac4('0x10'));var logger=require(_0xaac4('0x11'))(_0xaac4('0x12'));var utils=require(_0xaac4('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaac4('0x14'))['db'];function respondWithStatusCode(_0x2e2d02,_0x45e512){_0x45e512=_0x45e512||0xcc;return function(_0x5a4801){if(_0x5a4801){return _0x2e2d02[_0xaac4('0x15')](_0x45e512);}return _0x2e2d02[_0xaac4('0x16')](_0x45e512)['end']();};}function respondWithResult(_0xf06b1d,_0x2b20d0){_0x2b20d0=_0x2b20d0||0xc8;return function(_0x46698d){if(_0x46698d){return _0xf06b1d[_0xaac4('0x16')](_0x2b20d0)[_0xaac4('0x17')](_0x46698d);}};}function respondWithFilteredResult(_0x2fbeb7,_0x31b7e5){return function(_0x1df9ae){if(_0x1df9ae){var _0x233278=typeof _0x31b7e5[_0xaac4('0x18')]===_0xaac4('0x19')&&typeof _0x31b7e5[_0xaac4('0x1a')]===_0xaac4('0x19');var _0x52686a=_0x1df9ae[_0xaac4('0x1b')];var _0x52085a=_0x233278?0x0:_0x31b7e5[_0xaac4('0x18')];var _0x5b6fd6=_0x233278?_0x1df9ae[_0xaac4('0x1b')]:_0x31b7e5[_0xaac4('0x18')]+_0x31b7e5[_0xaac4('0x1a')];var _0x271bcb;if(_0x5b6fd6>=_0x52686a){_0x5b6fd6=_0x52686a;_0x271bcb=0xc8;}else{_0x271bcb=0xce;}_0x2fbeb7[_0xaac4('0x16')](_0x271bcb);return _0x2fbeb7[_0xaac4('0x1c')](_0xaac4('0x1d'),_0x52085a+'-'+_0x5b6fd6+'/'+_0x52686a)[_0xaac4('0x17')](_0x1df9ae);}return null;};}function patchUpdates(_0x4166ee){return function(_0x480fb0){try{jsonpatch[_0xaac4('0x1e')](_0x480fb0,_0x4166ee,!![]);}catch(_0x4e1e89){return BPromise[_0xaac4('0x1f')](_0x4e1e89);}return _0x480fb0[_0xaac4('0x20')]();};}function saveUpdates(_0x43625c,_0x477b77){return function(_0x17140f){if(_0x17140f){return _0x17140f[_0xaac4('0x21')](_0x43625c)['then'](function(_0x43ccdc){return _0x43ccdc;});}return null;};}function removeEntity(_0x27a84d,_0x174860){return function(_0x4f10ec){if(_0x4f10ec){return _0x4f10ec[_0xaac4('0x22')]()[_0xaac4('0x23')](function(){_0x27a84d[_0xaac4('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24186b,_0x4f1b65){return function(_0x54203b){if(!_0x54203b){_0x24186b['sendStatus'](0x194);}return _0x54203b;};}function handleError(_0x5a0bb3,_0x22d5a6){_0x22d5a6=_0x22d5a6||0x1f4;return function(_0x17d25f){logger[_0xaac4('0x24')](_0x17d25f[_0xaac4('0x25')]);if(_0x17d25f[_0xaac4('0x26')]){delete _0x17d25f[_0xaac4('0x26')];}_0x5a0bb3[_0xaac4('0x16')](_0x22d5a6)[_0xaac4('0x27')](_0x17d25f);};}exports[_0xaac4('0x28')]=function(_0x386c9b,_0x4d0f5f){var _0x316445={'raw':!![],'where':{'id':_0x386c9b[_0xaac4('0x29')]['id']}},_0x16b33c={};_0x16b33c[_0xaac4('0x2a')]=_[_0xaac4('0x2b')](db[_0xaac4('0x2c')]['rawAttributes']);_0x16b33c[_0xaac4('0x2d')]=_['keys'](_0x386c9b[_0xaac4('0x2d')]);_0x16b33c[_0xaac4('0x2e')]=_[_0xaac4('0x2f')](_0x16b33c[_0xaac4('0x2a')],_0x16b33c['query']);_0x316445['attributes']=_['intersection'](_0x16b33c[_0xaac4('0x2a')],qs[_0xaac4('0x30')](_0x386c9b[_0xaac4('0x2d')][_0xaac4('0x30')]));_0x316445[_0xaac4('0x31')]=_0x316445[_0xaac4('0x31')][_0xaac4('0x32')]?_0x316445[_0xaac4('0x31')]:_0x16b33c[_0xaac4('0x2a')];if(_0x386c9b[_0xaac4('0x2d')][_0xaac4('0x33')]){_0x316445[_0xaac4('0x34')]=[{'all':!![]}];}_0x316445=_[_0xaac4('0x35')]({},_0x316445,_0x386c9b[_0xaac4('0x36')]);return db[_0xaac4('0x2c')]['find'](_0x316445)['then'](handleEntityNotFound(_0x4d0f5f,null))[_0xaac4('0x23')](respondWithResult(_0x4d0f5f,null))[_0xaac4('0x37')](handleError(_0x4d0f5f,null));};exports[_0xaac4('0x21')]=function(_0x5e6080,_0x191d0f){if(_0x5e6080[_0xaac4('0x38')]['id']){delete _0x5e6080[_0xaac4('0x38')]['id'];}return db[_0xaac4('0x2c')][_0xaac4('0x39')]({'where':{'id':_0x5e6080[_0xaac4('0x29')]['id']}})[_0xaac4('0x23')](handleEntityNotFound(_0x191d0f,null))['then'](saveUpdates(_0x5e6080[_0xaac4('0x38')],null))[_0xaac4('0x23')](respondWithResult(_0x191d0f,null))[_0xaac4('0x37')](handleError(_0x191d0f,null));};exports['destroy']=function(_0x36d84a,_0x497e7b){return db['MailApplication'][_0xaac4('0x39')]({'where':{'id':_0x36d84a[_0xaac4('0x29')]['id']}})[_0xaac4('0x23')](handleEntityNotFound(_0x497e7b,null))['then'](removeEntity(_0x497e7b,null))['catch'](handleError(_0x497e7b,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x18baf4,_0x33086b){var _0x278ed1=function(_0x3ea0a2){while(--_0x3ea0a2){_0x18baf4['push'](_0x18baf4['shift']());}};_0x278ed1(++_0x33086b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
index a56b052..3e2ac7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c6d=['rimraf','../../config/environment','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path'];(function(_0x48f0d9,_0x5cc633){var _0x3ce195=function(_0x228377){while(--_0x228377){_0x48f0d9['push'](_0x48f0d9['shift']());}};_0x3ce195(++_0x5cc633);}(_0x7c6d,0x182));var _0xd7c6=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x7c6d[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0xd7c6('0x0'));var util=require(_0xd7c6('0x1'));var logger=require('../../config/logger')(_0xd7c6('0x2'));var moment=require(_0xd7c6('0x3'));var BPromise=require(_0xd7c6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd7c6('0x5'));var rimraf=require(_0xd7c6('0x6'));var config=require(_0xd7c6('0x7'));var attributes=require('./mailApplication.attributes');module[_0xd7c6('0x8')]=function(_0x5775cd,_0x5cb4e4){return _0x5775cd[_0xd7c6('0x9')](_0xd7c6('0xa'),attributes,{'tableName':_0xd7c6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd7c6('0xc'),'collate':_0xd7c6('0xd')});};
\ No newline at end of file
+var _0xbc80=['utf8mb4_unicode_ci','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications'];(function(_0x339d43,_0x2e8388){var _0x453e41=function(_0x14cdd4){while(--_0x14cdd4){_0x339d43['push'](_0x339d43['shift']());}};_0x453e41(++_0x2e8388);}(_0xbc80,0x187));var _0x0bc8=function(_0x265aa2,_0x220072){_0x265aa2=_0x265aa2-0x0;var _0x447a3a=_0xbc80[_0x265aa2];return _0x447a3a;};'use strict';var _=require('lodash');var util=require(_0x0bc8('0x0'));var logger=require('../../config/logger')(_0x0bc8('0x1'));var moment=require('moment');var BPromise=require(_0x0bc8('0x2'));var rp=require(_0x0bc8('0x3'));var fs=require('fs');var path=require(_0x0bc8('0x4'));var rimraf=require(_0x0bc8('0x5'));var config=require(_0x0bc8('0x6'));var attributes=require(_0x0bc8('0x7'));module[_0x0bc8('0x8')]=function(_0x82d952,_0x46434a){return _0x82d952[_0x0bc8('0x9')](_0x0bc8('0xa'),attributes,{'tableName':_0x0bc8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x0bc8('0xc')});};
\ No newline at end of file
index 654326e..795f3be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa09f=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UpdateMailApplication','MailApplication','update','body','options','where','limit','then'];(function(_0x31df6f,_0x380e73){var _0x31e353=function(_0x3a434b){while(--_0x3a434b){_0x31df6f['push'](_0x31df6f['shift']());}};_0x31e353(++_0x380e73);}(_0xa09f,0x188));var _0xfa09=function(_0x4a6913,_0x496086){_0x4a6913=_0x4a6913-0x0;var _0x4726fd=_0xa09f[_0x4a6913];return _0x4726fd;};'use strict';var _=require('lodash');var util=require(_0xfa09('0x0'));var moment=require(_0xfa09('0x1'));var BPromise=require(_0xfa09('0x2'));var rs=require(_0xfa09('0x3'));var fs=require('fs');var Redis=require(_0xfa09('0x4'));var db=require(_0xfa09('0x5'))['db'];var utils=require(_0xfa09('0x6'));var logger=require(_0xfa09('0x7'))(_0xfa09('0x8'));var config=require('../../config/environment');var jayson=require(_0xfa09('0x9'));var client=jayson[_0xfa09('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x327d3c,_0x38232d,_0x489f3c){return new BPromise(function(_0x23c615,_0x116de8){return client['request'](_0x327d3c,_0x489f3c)['then'](function(_0x450f54){logger[_0xfa09('0xb')](_0xfa09('0xc'),_0x38232d,_0xfa09('0xd'));logger[_0xfa09('0xe')](_0xfa09('0xf'),_0x38232d,'request\x20sent',JSON[_0xfa09('0x10')](_0x450f54));if(_0x450f54[_0xfa09('0x11')]){if(_0x450f54[_0xfa09('0x11')][_0xfa09('0x12')]===0x1f4){logger[_0xfa09('0x11')](_0xfa09('0xc'),_0x38232d,_0x450f54['error'][_0xfa09('0x13')]);return _0x116de8(_0x450f54[_0xfa09('0x11')][_0xfa09('0x13')]);}logger['error'](_0xfa09('0xc'),_0x38232d,_0x450f54['error'][_0xfa09('0x13')]);return _0x23c615(_0x450f54[_0xfa09('0x11')][_0xfa09('0x13')]);}else{logger[_0xfa09('0xb')](_0xfa09('0xc'),_0x38232d,_0xfa09('0xd'));_0x23c615(_0x450f54['result'][_0xfa09('0x13')]);}})['catch'](function(_0x2f5789){logger[_0xfa09('0x11')](_0xfa09('0xc'),_0x38232d,_0x2f5789);_0x116de8(_0x2f5789);});});}exports[_0xfa09('0x14')]=function(_0x198be3){var _0x8df405=this;return new Promise(function(_0x3866e5,_0xaea978){return db[_0xfa09('0x15')][_0xfa09('0x16')](_0x198be3[_0xfa09('0x17')],{'raw':_0x198be3['options']?_0x198be3['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x198be3[_0xfa09('0x18')]?_0x198be3[_0xfa09('0x18')][_0xfa09('0x19')]||null:null,'attributes':_0x198be3[_0xfa09('0x18')]?_0x198be3['options']['attributes']||null:null,'limit':_0x198be3[_0xfa09('0x18')]?_0x198be3[_0xfa09('0x18')][_0xfa09('0x1a')]||null:null})[_0xfa09('0x1b')](function(_0x26bf7e){logger[_0xfa09('0xb')](_0xfa09('0x14'),_0x198be3);logger['debug'](_0xfa09('0x14'),_0x198be3,JSON['stringify'](_0x26bf7e));_0x3866e5(_0x26bf7e);})['catch'](function(_0x5efe45){logger[_0xfa09('0x11')]('UpdateMailApplication',_0x5efe45[_0xfa09('0x13')],_0x198be3);_0xaea978(_0x8df405[_0xfa09('0x11')](0x1f4,_0x5efe45[_0xfa09('0x13')]));});});};
\ No newline at end of file
+var _0xe39a=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','update','body','options','raw','attributes','limit','UpdateMailApplication','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger'];(function(_0x323c6a,_0x1378c0){var _0x4148d8=function(_0xc686b3){while(--_0xc686b3){_0x323c6a['push'](_0x323c6a['shift']());}};_0x4148d8(++_0x1378c0);}(_0xe39a,0x155));var _0xae39=function(_0x580196,_0x49b792){_0x580196=_0x580196-0x0;var _0x1a1ed8=_0xe39a[_0x580196];return _0x1a1ed8;};'use strict';var _=require(_0xae39('0x0'));var util=require(_0xae39('0x1'));var moment=require(_0xae39('0x2'));var BPromise=require(_0xae39('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xae39('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xae39('0x5'));var logger=require(_0xae39('0x6'))(_0xae39('0x7'));var config=require(_0xae39('0x8'));var jayson=require(_0xae39('0x9'));var client=jayson[_0xae39('0xa')][_0xae39('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x257a95,_0x178fd4,_0x416e6c){return new BPromise(function(_0x2b218d,_0x3cf301){return client[_0xae39('0xc')](_0x257a95,_0x416e6c)[_0xae39('0xd')](function(_0x386d39){logger[_0xae39('0xe')](_0xae39('0xf'),_0x178fd4,_0xae39('0x10'));logger['debug'](_0xae39('0x11'),_0x178fd4,_0xae39('0x10'),JSON[_0xae39('0x12')](_0x386d39));if(_0x386d39['error']){if(_0x386d39[_0xae39('0x13')][_0xae39('0x14')]===0x1f4){logger['error'](_0xae39('0xf'),_0x178fd4,_0x386d39[_0xae39('0x13')]['message']);return _0x3cf301(_0x386d39['error'][_0xae39('0x15')]);}logger[_0xae39('0x13')](_0xae39('0xf'),_0x178fd4,_0x386d39['error']['message']);return _0x2b218d(_0x386d39[_0xae39('0x13')][_0xae39('0x15')]);}else{logger[_0xae39('0xe')](_0xae39('0xf'),_0x178fd4,_0xae39('0x10'));_0x2b218d(_0x386d39['result'][_0xae39('0x15')]);}})['catch'](function(_0x439669){logger[_0xae39('0x13')](_0xae39('0xf'),_0x178fd4,_0x439669);_0x3cf301(_0x439669);});});}exports['UpdateMailApplication']=function(_0x198c14){var _0x186a84=this;return new Promise(function(_0xcbef8c,_0x4ebc1a){return db['MailApplication'][_0xae39('0x16')](_0x198c14[_0xae39('0x17')],{'raw':_0x198c14['options']?_0x198c14[_0xae39('0x18')][_0xae39('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x198c14[_0xae39('0x18')]?_0x198c14[_0xae39('0x18')]['where']||null:null,'attributes':_0x198c14[_0xae39('0x18')]?_0x198c14[_0xae39('0x18')][_0xae39('0x1a')]||null:null,'limit':_0x198c14[_0xae39('0x18')]?_0x198c14[_0xae39('0x18')][_0xae39('0x1b')]||null:null})[_0xae39('0xd')](function(_0x586a5d){logger[_0xae39('0xe')](_0xae39('0x1c'),_0x198c14);logger['debug'](_0xae39('0x1c'),_0x198c14,JSON[_0xae39('0x12')](_0x586a5d));_0xcbef8c(_0x586a5d);})['catch'](function(_0x3f3541){logger[_0xae39('0x13')](_0xae39('0x1c'),_0x3f3541['message'],_0x198c14);_0x4ebc1a(_0x186a84[_0xae39('0x13')](0x1f4,_0x3f3541['message']));});});};
\ No newline at end of file
index df88deb..564fd56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x585c=['Router','../../components/interaction/service','./mailInteraction.controller','isAuthenticated','index','get','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','mailinteraction:update','update','delete','removeTags','exports','express'];(function(_0x594d91,_0x589ecb){var _0x30f528=function(_0x149d61){while(--_0x149d61){_0x594d91['push'](_0x594d91['shift']());}};_0x30f528(++_0x589ecb);}(_0x585c,0x8f));var _0xc585=function(_0x28f6dc,_0x3141ed){_0x28f6dc=_0x28f6dc-0x0;var _0x53ab2c=_0x585c[_0x28f6dc];return _0x53ab2c;};'use strict';var express=require(_0xc585('0x0'));var router=express[_0xc585('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0xc585('0x2'));var controller=require(_0xc585('0x3'));router['get']('/',auth[_0xc585('0x4')](),controller[_0xc585('0x5')]);router['get']('/describe',auth[_0xc585('0x4')](),controller['describe']);router[_0xc585('0x6')](_0xc585('0x7'),auth[_0xc585('0x4')](),controller['show']);router[_0xc585('0x6')](_0xc585('0x8'),auth[_0xc585('0x4')](),controller[_0xc585('0x9')]);router[_0xc585('0x6')](_0xc585('0xa'),auth[_0xc585('0x4')](),controller[_0xc585('0xb')]);router[_0xc585('0xc')]('/',auth[_0xc585('0x4')](),controller[_0xc585('0xd')]);router[_0xc585('0xc')]('/:id/messages',auth['isAuthenticated'](),controller[_0xc585('0xe')]);router[_0xc585('0xc')](_0xc585('0xf'),auth['isAuthenticated'](),interaction[_0xc585('0x10')](_0xc585('0x11'),_0xc585('0x12')),controller['addTags']);router['put']('/:id',auth['isAuthenticated'](),interaction[_0xc585('0x10')](_0xc585('0x11'),_0xc585('0x13')),controller[_0xc585('0x14')]);router[_0xc585('0x15')](_0xc585('0x7'),auth[_0xc585('0x4')](),interaction['tracked'](_0xc585('0x11'),'mailinteraction:destroy'),controller['destroy']);router[_0xc585('0x15')](_0xc585('0xf'),auth[_0xc585('0x4')](),controller[_0xc585('0x16')]);module[_0xc585('0x17')]=router;
\ No newline at end of file
+var _0xa3a3=['mailinteraction:update','update','delete','removeTags','exports','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','/:id','/:id/download','download','post','create','/:id/messages','/:id/tags','tracked','mail','mailinteraction:addtags','put'];(function(_0x430715,_0x1b1702){var _0x28856f=function(_0xea06a4){while(--_0xea06a4){_0x430715['push'](_0x430715['shift']());}};_0x28856f(++_0x1b1702);}(_0xa3a3,0x95));var _0x3a3a=function(_0xc2768f,_0x59e6a4){_0xc2768f=_0xc2768f-0x0;var _0x2be6ff=_0xa3a3[_0xc2768f];return _0x2be6ff;};'use strict';var express=require('express');var router=express[_0x3a3a('0x0')]();var auth=require(_0x3a3a('0x1'));var interaction=require(_0x3a3a('0x2'));var controller=require(_0x3a3a('0x3'));router[_0x3a3a('0x4')]('/',auth[_0x3a3a('0x5')](),controller[_0x3a3a('0x6')]);router[_0x3a3a('0x4')](_0x3a3a('0x7'),auth[_0x3a3a('0x5')](),controller['describe']);router['get'](_0x3a3a('0x8'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/messages',auth[_0x3a3a('0x5')](),controller['getMessages']);router['get'](_0x3a3a('0x9'),auth[_0x3a3a('0x5')](),controller[_0x3a3a('0xa')]);router[_0x3a3a('0xb')]('/',auth[_0x3a3a('0x5')](),controller[_0x3a3a('0xc')]);router['post'](_0x3a3a('0xd'),auth[_0x3a3a('0x5')](),controller['addMessage']);router[_0x3a3a('0xb')](_0x3a3a('0xe'),auth['isAuthenticated'](),interaction[_0x3a3a('0xf')](_0x3a3a('0x10'),_0x3a3a('0x11')),controller['addTags']);router[_0x3a3a('0x12')](_0x3a3a('0x8'),auth[_0x3a3a('0x5')](),interaction['tracked']('mail',_0x3a3a('0x13')),controller[_0x3a3a('0x14')]);router['delete'](_0x3a3a('0x8'),auth[_0x3a3a('0x5')](),interaction['tracked'](_0x3a3a('0x10'),'mailinteraction:destroy'),controller['destroy']);router[_0x3a3a('0x15')](_0x3a3a('0xe'),auth[_0x3a3a('0x5')](),controller[_0x3a3a('0x16')]);module[_0x3a3a('0x17')]=router;
\ No newline at end of file
index 855997c..dde68a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab0=['DATE','STRING','TEXT','long','ENUM','out','iconv','exports','BOOLEAN'];(function(_0x5176ce,_0x1052dd){var _0xf4d42b=function(_0x36df01){while(--_0x36df01){_0x5176ce['push'](_0x5176ce['shift']());}};_0xf4d42b(++_0x1052dd);}(_0x4ab0,0xd5));var _0x04ab=function(_0x27122a,_0x3dfa5a){_0x27122a=_0x27122a-0x0;var _0x551370=_0x4ab0[_0x27122a];return _0x551370;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x04ab('0x0'));module[_0x04ab('0x1')]={'closed':{'type':Sequelize[_0x04ab('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x04ab('0x3')]},'disposition':{'type':Sequelize[_0x04ab('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x04ab('0x4')]},'inReplyTo':{'type':Sequelize[_0x04ab('0x4')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x04ab('0x5')](_0x04ab('0x6'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0x04ab('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x04ab('0x3')]},'substatus':{'type':Sequelize[_0x04ab('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x04ab('0x7')]('in',_0x04ab('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x04ab('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x04ab('0x7')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x04ab('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe67d=['DATE','ENUM','out','sequelize','iconv','exports','BOOLEAN','STRING','TEXT'];(function(_0x49a655,_0x1ca0b3){var _0x2d513c=function(_0x2b64af){while(--_0x2b64af){_0x49a655['push'](_0x49a655['shift']());}};_0x2d513c(++_0x1ca0b3);}(_0xe67d,0x123));var _0xde67=function(_0x57d500,_0xf52c67){_0x57d500=_0x57d500-0x0;var _0x142c14=_0xe67d[_0x57d500];return _0x142c14;};'use strict';var Sequelize=require(_0xde67('0x0'));var iconv=require(_0xde67('0x1'));module[_0xde67('0x2')]={'closed':{'type':Sequelize[_0xde67('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xde67('0x4')]},'secondDisposition':{'type':Sequelize[_0xde67('0x4')]},'thirdDisposition':{'type':Sequelize[_0xde67('0x4')]},'note':{'type':Sequelize[_0xde67('0x4')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0xde67('0x4')]},'cc':{'type':Sequelize[_0xde67('0x5')]('long')},'subject':{'type':Sequelize[_0xde67('0x5')]()},'attach':{'type':Sequelize[_0xde67('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xde67('0x6')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xde67('0x7')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xde67('0x6')]},'lastMsgDirection':{'type':Sequelize[_0xde67('0x7')]('in',_0xde67('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xde67('0x3')],'defaultValue':![]}};
\ No newline at end of file
index cbd5a48..9669737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x289f=['true','rows','addTags','setTags','Tag','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','push','Attachment','Attachments','Messages','bcc','subject','createdAt','get','mkdirSync','missing.recipient@your.company.com','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','../../components/interaction/service','../../config/logger','api','../../config/environment','html-entities','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','stack','name','send','index','map','rawAttributes','type','key','getOptions','mail','query','user','show','params','model','keys','MailInteraction','filters','fields','attributes','length','includeAll','include','options','find','catch','create','body','describe','MailMessage','addMessage','ids','omit','getMessages','findOne','intersection','hasOwnProperty','order','sort','where','MailInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss'];(function(_0x40006a,_0x5915a1){var _0xd3c5eb=function(_0x4c7bf9){while(--_0x4c7bf9){_0x40006a['push'](_0x40006a['shift']());}};_0xd3c5eb(++_0x5915a1);}(_0x289f,0x1ee));var _0xf289=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x289f[_0x42bdad];return _0x122626;};'use strict';var emlformat=require(_0xf289('0x0'));var rimraf=require(_0xf289('0x1'));var zipdir=require(_0xf289('0x2'));var moment=require(_0xf289('0x3'));var BPromise=require(_0xf289('0x4'));var util=require(_0xf289('0x5'));var path=require(_0xf289('0x6'));var fs=require('fs');var _=require(_0xf289('0x7'));var juice=require(_0xf289('0x8'));var Redis=require('ioredis');var interaction=require(_0xf289('0x9'));var qs=require('../../components/parsers/qs');var logger=require(_0xf289('0xa'))(_0xf289('0xb'));var config=require(_0xf289('0xc'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0xf289('0xd'));config[_0xf289('0xe')]=_[_0xf289('0xf')](config['redis'],{'host':_0xf289('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf289('0xe')]));require(_0xf289('0x11'))[_0xf289('0x12')](socket);function respondWithStatusCode(_0x26ad25,_0x4bb724){_0x4bb724=_0x4bb724||0xcc;return function(_0x4eb80c){if(_0x4eb80c){return _0x26ad25[_0xf289('0x13')](_0x4bb724);}return _0x26ad25['status'](_0x4bb724)[_0xf289('0x14')]();};}function respondWithResult(_0x4cb257,_0x21c955){_0x21c955=_0x21c955||0xc8;return function(_0x5980b1){if(_0x5980b1){return _0x4cb257[_0xf289('0x15')](_0x21c955)[_0xf289('0x16')](_0x5980b1);}};}function respondWithFilteredResult(_0x489581,_0x32f74e){return function(_0x44841f){if(_0x44841f){var _0x12b6c8=typeof _0x32f74e[_0xf289('0x17')]===_0xf289('0x18')&&typeof _0x32f74e[_0xf289('0x19')]===_0xf289('0x18');var _0x4359e0=_0x44841f[_0xf289('0x1a')];var _0x334f55=_0x12b6c8?0x0:_0x32f74e[_0xf289('0x17')];var _0x4fa84c=_0x12b6c8?_0x44841f[_0xf289('0x1a')]:_0x32f74e[_0xf289('0x17')]+_0x32f74e[_0xf289('0x19')];var _0x3b73a2;if(_0x4fa84c>=_0x4359e0){_0x4fa84c=_0x4359e0;_0x3b73a2=0xc8;}else{_0x3b73a2=0xce;}_0x489581[_0xf289('0x15')](_0x3b73a2);return _0x489581[_0xf289('0x1b')](_0xf289('0x1c'),_0x334f55+'-'+_0x4fa84c+'/'+_0x4359e0)['json'](_0x44841f);}return null;};}function saveUpdates(_0xa99a23){return function(_0x21299e){if(_0x21299e){return _0x21299e[_0xf289('0x1d')](_0xa99a23)['then'](function(_0xd9f104){return _0xd9f104;});}return null;};}function removeEntity(_0x4c1e78){return function(_0x42040c){if(_0x42040c){return _0x42040c[_0xf289('0x1e')]()[_0xf289('0x1f')](function(){_0x4c1e78['status'](0xcc)[_0xf289('0x14')]();});}};}function handleEntityNotFound(_0x4c41bc){return function(_0x1809aa){if(!_0x1809aa){_0x4c41bc[_0xf289('0x13')](0x194);}return _0x1809aa;};}function handleError(_0x29ddc1,_0xe41bdf){_0xe41bdf=_0xe41bdf||0x1f4;return function(_0x26035a){logger['error'](_0x26035a[_0xf289('0x20')]);if(_0x26035a[_0xf289('0x21')]){delete _0x26035a[_0xf289('0x21')];}_0x29ddc1[_0xf289('0x15')](_0xe41bdf)[_0xf289('0x22')](_0x26035a);};}exports[_0xf289('0x23')]=function(_0x493bff,_0x3817d9){var _0x15448a={};var _0x2c85cb=_[_0xf289('0x24')](db['MailInteraction'][_0xf289('0x25')],function(_0xb497ff){return{'name':_0xb497ff['fieldName'],'type':_0xb497ff[_0xf289('0x26')][_0xf289('0x27')]};});_0x15448a=qs[_0xf289('0x28')](_0x2c85cb,_0x493bff);return interaction['findAll'](_0xf289('0x29'),_0x493bff[_0xf289('0x2a')],_0x493bff[_0xf289('0x2b')],_0x15448a,_0x2c85cb)[_0xf289('0x1f')](respondWithFilteredResult(_0x3817d9,_0x15448a))['catch'](handleError(_0x3817d9,null));};exports[_0xf289('0x2c')]=function(_0x8a95b,_0x2c1fde){var _0x398c06={'raw':![],'where':{'id':_0x8a95b[_0xf289('0x2d')]['id']}},_0x28ec82={};_0x28ec82[_0xf289('0x2e')]=_[_0xf289('0x2f')](db[_0xf289('0x30')][_0xf289('0x25')]);_0x28ec82[_0xf289('0x2a')]=_[_0xf289('0x2f')](_0x8a95b[_0xf289('0x2a')]);_0x28ec82[_0xf289('0x31')]=_['intersection'](_0x28ec82['model'],_0x28ec82[_0xf289('0x2a')]);_0x398c06['attributes']=_['intersection'](_0x28ec82[_0xf289('0x2e')],qs[_0xf289('0x32')](_0x8a95b[_0xf289('0x2a')][_0xf289('0x32')]));_0x398c06[_0xf289('0x33')]=_0x398c06[_0xf289('0x33')][_0xf289('0x34')]?_0x398c06['attributes']:_0x28ec82[_0xf289('0x2e')];if(_0x8a95b[_0xf289('0x2a')][_0xf289('0x35')]){_0x398c06[_0xf289('0x36')]=[{'all':!![]}];}_0x398c06=_['merge']({},_0x398c06,_0x8a95b[_0xf289('0x37')]);return db[_0xf289('0x30')][_0xf289('0x38')](_0x398c06)[_0xf289('0x1f')](handleEntityNotFound(_0x2c1fde,null))['then'](respondWithResult(_0x2c1fde,null))[_0xf289('0x39')](handleError(_0x2c1fde,null));};exports['create']=function(_0x5072e5,_0x12b1f7){return db[_0xf289('0x30')][_0xf289('0x3a')](_0x5072e5[_0xf289('0x3b')],{})[_0xf289('0x1f')](respondWithResult(_0x12b1f7,0xc9))[_0xf289('0x39')](handleError(_0x12b1f7,null));};exports[_0xf289('0x1d')]=function(_0x30f2e3,_0x6424c9){if(_0x30f2e3[_0xf289('0x3b')]['id']){delete _0x30f2e3['body']['id'];}return db[_0xf289('0x30')][_0xf289('0x38')]({'where':{'id':_0x30f2e3[_0xf289('0x2d')]['id']}})['then'](handleEntityNotFound(_0x6424c9,null))[_0xf289('0x1f')](saveUpdates(_0x30f2e3[_0xf289('0x3b')],null))[_0xf289('0x1f')](respondWithResult(_0x6424c9,null))[_0xf289('0x39')](handleError(_0x6424c9,null));};exports[_0xf289('0x1e')]=function(_0x121f83,_0x19a51c){return db[_0xf289('0x30')][_0xf289('0x38')]({'where':{'id':_0x121f83[_0xf289('0x2d')]['id']}})['then'](handleEntityNotFound(_0x19a51c,null))[_0xf289('0x1f')](removeEntity(_0x19a51c,null))['catch'](handleError(_0x19a51c,null));};exports[_0xf289('0x3c')]=function(_0x4c56db,_0x1f08d3){return db['MailInteraction'][_0xf289('0x3c')]()[_0xf289('0x1f')](respondWithResult(_0x1f08d3,null))[_0xf289('0x39')](handleError(_0x1f08d3,null));};exports['addMessage']=function(_0x155afd,_0x57bf3b){return db[_0xf289('0x3d')][_0xf289('0x38')]({'where':{'id':_0x155afd[_0xf289('0x2d')]['id']}})[_0xf289('0x1f')](handleEntityNotFound(_0x57bf3b,null))[_0xf289('0x1f')](function(_0x20f6f7){if(_0x20f6f7){return _0x20f6f7[_0xf289('0x3e')](_0x155afd['body'][_0xf289('0x3f')],_[_0xf289('0x40')](_0x155afd[_0xf289('0x3b')],[_0xf289('0x3f'),'id'])||{});}})[_0xf289('0x1f')](respondWithResult(_0x57bf3b,null))[_0xf289('0x39')](handleError(_0x57bf3b,null));};exports[_0xf289('0x41')]=function(_0x53225c,_0x27b00f){var _0x33ca9c={'raw':![],'where':{}};var _0x259684={};var _0x261f95={'count':0x0,'rows':[]};return db['MailInteraction'][_0xf289('0x42')]({'where':{'id':_0x53225c[_0xf289('0x2d')]['id']}})[_0xf289('0x1f')](handleEntityNotFound(_0x27b00f,null))['then'](function(_0x2636bf){if(_0x2636bf){_0x259684['model']=_[_0xf289('0x2f')](db['MailMessage'][_0xf289('0x25')]);_0x259684[_0xf289('0x2a')]=_[_0xf289('0x2f')](_0x53225c[_0xf289('0x2a')]);_0x259684[_0xf289('0x31')]=_['intersection'](_0x259684[_0xf289('0x2e')],_0x259684[_0xf289('0x2a')]);_0x33ca9c[_0xf289('0x33')]=_[_0xf289('0x43')](_0x259684[_0xf289('0x2e')],qs[_0xf289('0x32')](_0x53225c[_0xf289('0x2a')][_0xf289('0x32')]));_0x33ca9c[_0xf289('0x33')]=_0x33ca9c[_0xf289('0x33')][_0xf289('0x34')]?_0x33ca9c[_0xf289('0x33')]:_0x259684['model'];if(!_0x53225c['query'][_0xf289('0x44')]('nolimit')){_0x33ca9c[_0xf289('0x19')]=qs[_0xf289('0x19')](_0x53225c[_0xf289('0x2a')][_0xf289('0x19')]);_0x33ca9c[_0xf289('0x17')]=qs[_0xf289('0x17')](_0x53225c['query'][_0xf289('0x17')]);}_0x33ca9c[_0xf289('0x45')]=qs[_0xf289('0x46')](_0x53225c[_0xf289('0x2a')]['sort']);_0x33ca9c[_0xf289('0x47')]=qs[_0xf289('0x31')](_['pick'](_0x53225c[_0xf289('0x2a')],_0x259684[_0xf289('0x31')]));_0x33ca9c[_0xf289('0x47')][_0xf289('0x48')]=_0x2636bf['id'];if(_0x53225c['query'][_0xf289('0x49')]){_0x33ca9c[_0xf289('0x47')]=_[_0xf289('0x4a')](_0x33ca9c[_0xf289('0x47')],{'$or':_[_0xf289('0x24')](_0x33ca9c[_0xf289('0x33')],function(_0xa6a193){var _0x523e67={};_0x523e67[_0xa6a193]={'$like':'%'+_0x53225c[_0xf289('0x2a')][_0xf289('0x49')]+'%'};return _0x523e67;})});}if(_0x53225c[_0xf289('0x2a')]['$gte']){var _0x19a11e=_0x53225c[_0xf289('0x2a')][_0xf289('0x4b')][_0xf289('0x4c')](',');var _0x4ba1a5={};_0x4ba1a5[_0x19a11e[0x0]]={'$gte':moment(_0x19a11e[0x1])[_0xf289('0x4d')](_0xf289('0x4e'))};_0x33ca9c[_0xf289('0x47')]=_['merge'](_0x33ca9c[_0xf289('0x47')],_0x4ba1a5);}_0x33ca9c=_[_0xf289('0x4a')]({},_0x33ca9c,_0x53225c[_0xf289('0x37')]);return db[_0xf289('0x3d')][_0xf289('0x1a')]({'where':_0x33ca9c['where']})[_0xf289('0x1f')](function(_0x1d5c61){_0x261f95['count']=_0x1d5c61;if(_0x53225c[_0xf289('0x2a')][_0xf289('0x35')]){_0x33ca9c['include']=[{'all':!![]}];}return db['MailMessage'][_0xf289('0x4f')](_0x33ca9c);})[_0xf289('0x1f')](function(_0x133ef2){if(_0x53225c['query'][_0xf289('0x50')]===_0xf289('0x51')){for(var _0x583484=0x0;_0x583484<_0x133ef2[_0xf289('0x34')];_0x583484++){_0x133ef2[_0x583484]['body']=juice(_0x133ef2[_0x583484]['body']);}}_0x261f95[_0xf289('0x52')]=_0x133ef2;return _0x261f95;});}})[_0xf289('0x1f')](respondWithFilteredResult(_0x27b00f,_0x33ca9c))[_0xf289('0x39')](handleError(_0x27b00f,null));};exports[_0xf289('0x53')]=function(_0x33bd5a,_0x592afb){return db[_0xf289('0x30')][_0xf289('0x38')]({'where':{'id':_0x33bd5a[_0xf289('0x2d')]['id']}})[_0xf289('0x1f')](handleEntityNotFound(_0x592afb,null))[_0xf289('0x1f')](function(_0x592752){if(_0x592752){return _0x592752[_0xf289('0x54')](_0x33bd5a['body']['ids'],_['omit'](_0x33bd5a['body'],[_0xf289('0x3f'),'id'])||{})['spread'](function(){return db[_0xf289('0x55')][_0xf289('0x4f')]({'attributes':['id','name','color'],'where':{'id':_0x33bd5a[_0xf289('0x3b')][_0xf289('0x3f')]}});})[_0xf289('0x1f')](function(_0x1cf63f){socket['emit']('mailInteractionTags:save',{'id':Number(_0x33bd5a[_0xf289('0x2d')]['id']),'tags':_0x1cf63f||[]});return{'id':Number(_0x33bd5a['params']['id']),'tags':_0x1cf63f||[]};});}})[_0xf289('0x1f')](respondWithResult(_0x592afb,null))[_0xf289('0x39')](handleError(_0x592afb,null));};exports['removeTags']=function(_0x54de08,_0x40517d){return db[_0xf289('0x30')]['find']({'where':{'id':_0x54de08[_0xf289('0x2d')]['id']}})[_0xf289('0x1f')](handleEntityNotFound(_0x40517d,null))[_0xf289('0x1f')](function(_0x5b4295){if(_0x5b4295){return _0x5b4295[_0xf289('0x56')](_0x54de08['query'][_0xf289('0x3f')]);}})[_0xf289('0x1f')](respondWithStatusCode(_0x40517d,null))[_0xf289('0x39')](handleError(_0x40517d,null));};exports[_0xf289('0x57')]=function(_0x51818c,_0x1802e8){var _0x13dc7e=moment()[_0xf289('0x58')]()[_0xf289('0x59')]();var _0x16bc2e=path[_0xf289('0x5a')](config[_0xf289('0x5b')],_0xf289('0x5c'),_0xf289('0x5d'),_0xf289('0x5e'));var _0x21646d=path['join'](config['root'],_0xf289('0x5c'),'files',_0xf289('0x5f'));var _0xda5e4=path['join'](_0x16bc2e,_0x13dc7e);var _0x2124a0=util[_0xf289('0x4d')]('transcript-%d-%s.zip',_0x51818c[_0xf289('0x2d')]['id'],_0x13dc7e);var _0x3762db=path[_0xf289('0x5a')](_0x16bc2e,_0x2124a0);var _0x2960eb=[];if(_0x51818c[_0xf289('0x2a')][_0xf289('0x5f')]){_0x2960eb[_0xf289('0x60')]({'model':db[_0xf289('0x61')],'as':_0xf289('0x62'),'raw':!![]});}var _0x3837f3=[{'model':db['MailMessage'],'as':_0xf289('0x63'),'attributes':['id','body','from','to','cc',_0xf289('0x64'),_0xf289('0x65'),_0xf289('0x66')],'where':{'secret':![]},'order':qs[_0xf289('0x46')]('id'),'include':_0x2960eb}];return db[_0xf289('0x30')][_0xf289('0x38')]({'where':{'id':_0x51818c['params']['id']},'include':_0x3837f3})[_0xf289('0x1f')](handleEntityNotFound(_0x1802e8,null))['then'](function(_0x187918){if(_0x187918&&_0x187918['Messages']){var _0x598908=_0x187918[_0xf289('0x67')]({'plain':!![]});fs[_0xf289('0x68')](_0xda5e4);return BPromise['each'](_0x598908[_0xf289('0x63')],function(_0x4e4499,_0x2cf194){var _0x3ee328={'from':_0x4e4499['from'],'to':_0x4e4499['to']||_0xf289('0x69'),'subject':_0x4e4499[_0xf289('0x65')],'html':htmlEntities['decode'](_0x4e4499[_0xf289('0x3b')]),'headers':{'Date':moment(_0x4e4499[_0xf289('0x66')])[_0xf289('0x4d')](_0xf289('0x6a'))},'attachments':[]};if(_0x4e4499['cc']){_0x3ee328[_0xf289('0x6b')]['Cc']=_0x4e4499['cc'];}if(_0x4e4499['bcc']){_0x3ee328[_0xf289('0x6b')][_0xf289('0x6c')]=_0x4e4499[_0xf289('0x64')];}return new BPromise(function(_0x72da71,_0xa7abe7){if(_0x4e4499[_0xf289('0x62')]){for(var _0x53f497=0x0;_0x53f497<_0x4e4499['Attachments'][_0xf289('0x34')];_0x53f497++){var _0x12d0d8=_0x4e4499[_0xf289('0x62')][_0x53f497];var _0x15f7ab=path[_0xf289('0x5a')](_0x21646d,_0x12d0d8[_0xf289('0x6d')]);if(fs[_0xf289('0x6e')](_0x15f7ab)){_0x3ee328['attachments']['push']({'name':_0x12d0d8['name'],'contentType':_0x12d0d8[_0xf289('0x26')],'data':fs['readFileSync'](_0x15f7ab)});}}}emlformat[_0xf289('0x6f')](_0x3ee328,function(_0x379917,_0x5d7479){if(_0x379917)return _0xa7abe7(_0x379917);fs[_0xf289('0x70')](path['join'](_0xda5e4,util[_0xf289('0x4d')](_0xf289('0x71'),_0x2cf194)),_0x5d7479);return _0x72da71(_0x5d7479);});});})[_0xf289('0x1f')](function(){return new BPromise(function(_0x27c850,_0x1123a5){zipdir(_0xda5e4,{'saveTo':_0x3762db},function(_0x15dcc9,_0x4074fc){if(_0x15dcc9)return _0x1123a5(_0x15dcc9);return _0x27c850(_0x4074fc);});})['then'](function(){return new BPromise(function(_0xeee7ee,_0x3012cb){rimraf(_0xda5e4,function(_0x38c44f){if(_0x38c44f)_0x3012cb(_0x38c44f);return _0xeee7ee();});});})[_0xf289('0x1f')](function(){return _0x1802e8['download'](_0x3762db,_0x2124a0,function(_0x51a118){if(!_0x51a118)fs[_0xf289('0x72')](_0x3762db);});});});}else{return _0x1802e8[_0xf289('0x13')](0xc8);}})[_0xf289('0x39')](handleError(_0x1802e8,null));};
\ No newline at end of file
+var _0x6570=['hasOwnProperty','nolimit','order','sort','where','pick','filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','true','spread','Tag','findAll','emit','mailInteractionTags:save','removeTags','unix','toString','root','server','files','tmp','attachments','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','mkdirSync','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','join','basename','existsSync','build','writeFileSync','unlinkSync','eml-format','zip-dir','moment','bluebird','util','path','lodash','juice','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','status','end','json','offset','count','limit','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','index','MailInteraction','rawAttributes','type','key','getOptions','mail','query','catch','show','params','model','keys','intersection','fields','attributes','length','includeAll','include','merge','options','find','create','body','describe','addMessage','MailMessage','ids','omit','filters'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x6570,0x10c));var _0x0657=function(_0x9defc4,_0x569d66){_0x9defc4=_0x9defc4-0x0;var _0x5bb415=_0x6570[_0x9defc4];return _0x5bb415;};'use strict';var emlformat=require(_0x0657('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0657('0x1'));var moment=require(_0x0657('0x2'));var BPromise=require(_0x0657('0x3'));var util=require(_0x0657('0x4'));var path=require(_0x0657('0x5'));var fs=require('fs');var _=require(_0x0657('0x6'));var juice=require(_0x0657('0x7'));var Redis=require('ioredis');var interaction=require(_0x0657('0x8'));var qs=require(_0x0657('0x9'));var logger=require(_0x0657('0xa'))(_0x0657('0xb'));var config=require(_0x0657('0xc'));var db=require(_0x0657('0xd'))['db'];var htmlEntities=require(_0x0657('0xe'));config[_0x0657('0xf')]=_[_0x0657('0x10')](config['redis'],{'host':_0x0657('0x11'),'port':0x18eb});var socket=require(_0x0657('0x12'))(new Redis(config[_0x0657('0xf')]));require('./mailInteraction.socket')['register'](socket);function respondWithStatusCode(_0x5db135,_0x5f1d5a){_0x5f1d5a=_0x5f1d5a||0xcc;return function(_0x30c43d){if(_0x30c43d){return _0x5db135['sendStatus'](_0x5f1d5a);}return _0x5db135[_0x0657('0x13')](_0x5f1d5a)[_0x0657('0x14')]();};}function respondWithResult(_0x370987,_0x27cef7){_0x27cef7=_0x27cef7||0xc8;return function(_0x2bb9d5){if(_0x2bb9d5){return _0x370987[_0x0657('0x13')](_0x27cef7)[_0x0657('0x15')](_0x2bb9d5);}};}function respondWithFilteredResult(_0x3f527a,_0x1fd85a){return function(_0x2b9141){if(_0x2b9141){var _0x1f2f61=typeof _0x1fd85a[_0x0657('0x16')]==='undefined'&&typeof _0x1fd85a['limit']==='undefined';var _0x23a497=_0x2b9141[_0x0657('0x17')];var _0x44ae1e=_0x1f2f61?0x0:_0x1fd85a[_0x0657('0x16')];var _0x5e4aed=_0x1f2f61?_0x2b9141['count']:_0x1fd85a[_0x0657('0x16')]+_0x1fd85a[_0x0657('0x18')];var _0xebc032;if(_0x5e4aed>=_0x23a497){_0x5e4aed=_0x23a497;_0xebc032=0xc8;}else{_0xebc032=0xce;}_0x3f527a[_0x0657('0x13')](_0xebc032);return _0x3f527a[_0x0657('0x19')](_0x0657('0x1a'),_0x44ae1e+'-'+_0x5e4aed+'/'+_0x23a497)['json'](_0x2b9141);}return null;};}function saveUpdates(_0x350534){return function(_0x5ce5b7){if(_0x5ce5b7){return _0x5ce5b7[_0x0657('0x1b')](_0x350534)[_0x0657('0x1c')](function(_0x42af18){return _0x42af18;});}return null;};}function removeEntity(_0x279e83){return function(_0x585c7d){if(_0x585c7d){return _0x585c7d[_0x0657('0x1d')]()[_0x0657('0x1c')](function(){_0x279e83['status'](0xcc)[_0x0657('0x14')]();});}};}function handleEntityNotFound(_0x312e14){return function(_0x4e0a43){if(!_0x4e0a43){_0x312e14[_0x0657('0x1e')](0x194);}return _0x4e0a43;};}function handleError(_0x1320e2,_0x3679db){_0x3679db=_0x3679db||0x1f4;return function(_0x131e05){logger[_0x0657('0x1f')](_0x131e05[_0x0657('0x20')]);if(_0x131e05[_0x0657('0x21')]){delete _0x131e05[_0x0657('0x21')];}_0x1320e2[_0x0657('0x13')](_0x3679db)[_0x0657('0x22')](_0x131e05);};}exports[_0x0657('0x23')]=function(_0x160136,_0x1f3b2f){var _0x2ac91e={};var _0x16e3ee=_['map'](db[_0x0657('0x24')][_0x0657('0x25')],function(_0xd9054){return{'name':_0xd9054['fieldName'],'type':_0xd9054[_0x0657('0x26')][_0x0657('0x27')]};});_0x2ac91e=qs[_0x0657('0x28')](_0x16e3ee,_0x160136);return interaction['findAll'](_0x0657('0x29'),_0x160136[_0x0657('0x2a')],_0x160136['user'],_0x2ac91e,_0x16e3ee)[_0x0657('0x1c')](respondWithFilteredResult(_0x1f3b2f,_0x2ac91e))[_0x0657('0x2b')](handleError(_0x1f3b2f,null));};exports[_0x0657('0x2c')]=function(_0x58b858,_0x349d9d){var _0x4a16a5={'raw':![],'where':{'id':_0x58b858[_0x0657('0x2d')]['id']}},_0x10b2c8={};_0x10b2c8[_0x0657('0x2e')]=_[_0x0657('0x2f')](db[_0x0657('0x24')]['rawAttributes']);_0x10b2c8['query']=_[_0x0657('0x2f')](_0x58b858[_0x0657('0x2a')]);_0x10b2c8['filters']=_['intersection'](_0x10b2c8[_0x0657('0x2e')],_0x10b2c8[_0x0657('0x2a')]);_0x4a16a5['attributes']=_[_0x0657('0x30')](_0x10b2c8['model'],qs[_0x0657('0x31')](_0x58b858['query'][_0x0657('0x31')]));_0x4a16a5[_0x0657('0x32')]=_0x4a16a5[_0x0657('0x32')][_0x0657('0x33')]?_0x4a16a5[_0x0657('0x32')]:_0x10b2c8['model'];if(_0x58b858[_0x0657('0x2a')][_0x0657('0x34')]){_0x4a16a5[_0x0657('0x35')]=[{'all':!![]}];}_0x4a16a5=_[_0x0657('0x36')]({},_0x4a16a5,_0x58b858[_0x0657('0x37')]);return db[_0x0657('0x24')][_0x0657('0x38')](_0x4a16a5)['then'](handleEntityNotFound(_0x349d9d,null))[_0x0657('0x1c')](respondWithResult(_0x349d9d,null))[_0x0657('0x2b')](handleError(_0x349d9d,null));};exports[_0x0657('0x39')]=function(_0x10cd96,_0x56d489){return db['MailInteraction'][_0x0657('0x39')](_0x10cd96[_0x0657('0x3a')],{})['then'](respondWithResult(_0x56d489,0xc9))['catch'](handleError(_0x56d489,null));};exports['update']=function(_0x3ebf47,_0x4ba8b7){if(_0x3ebf47[_0x0657('0x3a')]['id']){delete _0x3ebf47[_0x0657('0x3a')]['id'];}return db['MailInteraction'][_0x0657('0x38')]({'where':{'id':_0x3ebf47['params']['id']}})[_0x0657('0x1c')](handleEntityNotFound(_0x4ba8b7,null))[_0x0657('0x1c')](saveUpdates(_0x3ebf47[_0x0657('0x3a')],null))[_0x0657('0x1c')](respondWithResult(_0x4ba8b7,null))['catch'](handleError(_0x4ba8b7,null));};exports[_0x0657('0x1d')]=function(_0x1c427b,_0x89471e){return db[_0x0657('0x24')][_0x0657('0x38')]({'where':{'id':_0x1c427b[_0x0657('0x2d')]['id']}})[_0x0657('0x1c')](handleEntityNotFound(_0x89471e,null))[_0x0657('0x1c')](removeEntity(_0x89471e,null))[_0x0657('0x2b')](handleError(_0x89471e,null));};exports[_0x0657('0x3b')]=function(_0x2d6c86,_0x202990){return db[_0x0657('0x24')][_0x0657('0x3b')]()[_0x0657('0x1c')](respondWithResult(_0x202990,null))[_0x0657('0x2b')](handleError(_0x202990,null));};exports[_0x0657('0x3c')]=function(_0x350db7,_0x2438f2){return db[_0x0657('0x3d')][_0x0657('0x38')]({'where':{'id':_0x350db7[_0x0657('0x2d')]['id']}})[_0x0657('0x1c')](handleEntityNotFound(_0x2438f2,null))[_0x0657('0x1c')](function(_0x32f516){if(_0x32f516){return _0x32f516[_0x0657('0x3c')](_0x350db7['body'][_0x0657('0x3e')],_[_0x0657('0x3f')](_0x350db7[_0x0657('0x3a')],[_0x0657('0x3e'),'id'])||{});}})[_0x0657('0x1c')](respondWithResult(_0x2438f2,null))[_0x0657('0x2b')](handleError(_0x2438f2,null));};exports['getMessages']=function(_0x433e18,_0x179224){var _0x1ec525={'raw':![],'where':{}};var _0x594447={};var _0x1e9075={'count':0x0,'rows':[]};return db['MailInteraction']['findOne']({'where':{'id':_0x433e18[_0x0657('0x2d')]['id']}})[_0x0657('0x1c')](handleEntityNotFound(_0x179224,null))['then'](function(_0x3df96e){if(_0x3df96e){_0x594447['model']=_[_0x0657('0x2f')](db['MailMessage'][_0x0657('0x25')]);_0x594447[_0x0657('0x2a')]=_[_0x0657('0x2f')](_0x433e18['query']);_0x594447[_0x0657('0x40')]=_[_0x0657('0x30')](_0x594447[_0x0657('0x2e')],_0x594447[_0x0657('0x2a')]);_0x1ec525['attributes']=_['intersection'](_0x594447[_0x0657('0x2e')],qs[_0x0657('0x31')](_0x433e18[_0x0657('0x2a')][_0x0657('0x31')]));_0x1ec525['attributes']=_0x1ec525[_0x0657('0x32')][_0x0657('0x33')]?_0x1ec525['attributes']:_0x594447[_0x0657('0x2e')];if(!_0x433e18[_0x0657('0x2a')][_0x0657('0x41')](_0x0657('0x42'))){_0x1ec525[_0x0657('0x18')]=qs[_0x0657('0x18')](_0x433e18['query'][_0x0657('0x18')]);_0x1ec525[_0x0657('0x16')]=qs[_0x0657('0x16')](_0x433e18[_0x0657('0x2a')][_0x0657('0x16')]);}_0x1ec525[_0x0657('0x43')]=qs[_0x0657('0x44')](_0x433e18[_0x0657('0x2a')]['sort']);_0x1ec525[_0x0657('0x45')]=qs[_0x0657('0x40')](_[_0x0657('0x46')](_0x433e18['query'],_0x594447[_0x0657('0x40')]));_0x1ec525[_0x0657('0x45')]['MailInteractionId']=_0x3df96e['id'];if(_0x433e18[_0x0657('0x2a')][_0x0657('0x47')]){_0x1ec525['where']=_[_0x0657('0x36')](_0x1ec525[_0x0657('0x45')],{'$or':_[_0x0657('0x48')](_0x1ec525['attributes'],function(_0x28d2cd){var _0x1961aa={};_0x1961aa[_0x28d2cd]={'$like':'%'+_0x433e18[_0x0657('0x2a')][_0x0657('0x47')]+'%'};return _0x1961aa;})});}if(_0x433e18[_0x0657('0x2a')]['$gte']){var _0x1d99ca=_0x433e18['query'][_0x0657('0x49')][_0x0657('0x4a')](',');var _0x585cb9={};_0x585cb9[_0x1d99ca[0x0]]={'$gte':moment(_0x1d99ca[0x1])[_0x0657('0x4b')](_0x0657('0x4c'))};_0x1ec525[_0x0657('0x45')]=_[_0x0657('0x36')](_0x1ec525['where'],_0x585cb9);}_0x1ec525=_[_0x0657('0x36')]({},_0x1ec525,_0x433e18[_0x0657('0x37')]);return db[_0x0657('0x3d')]['count']({'where':_0x1ec525[_0x0657('0x45')]})[_0x0657('0x1c')](function(_0x505257){_0x1e9075['count']=_0x505257;if(_0x433e18[_0x0657('0x2a')][_0x0657('0x34')]){_0x1ec525[_0x0657('0x35')]=[{'all':!![]}];}return db[_0x0657('0x3d')]['findAll'](_0x1ec525);})['then'](function(_0x1c03c2){if(_0x433e18['query']['inlineCss']===_0x0657('0x4d')){for(var _0x3f50d9=0x0;_0x3f50d9<_0x1c03c2['length'];_0x3f50d9++){_0x1c03c2[_0x3f50d9][_0x0657('0x3a')]=juice(_0x1c03c2[_0x3f50d9]['body']);}}_0x1e9075['rows']=_0x1c03c2;return _0x1e9075;});}})[_0x0657('0x1c')](respondWithFilteredResult(_0x179224,_0x1ec525))[_0x0657('0x2b')](handleError(_0x179224,null));};exports['addTags']=function(_0x2c58a4,_0x5a88e6){return db[_0x0657('0x24')][_0x0657('0x38')]({'where':{'id':_0x2c58a4[_0x0657('0x2d')]['id']}})[_0x0657('0x1c')](handleEntityNotFound(_0x5a88e6,null))['then'](function(_0x45c0b9){if(_0x45c0b9){return _0x45c0b9['setTags'](_0x2c58a4[_0x0657('0x3a')][_0x0657('0x3e')],_[_0x0657('0x3f')](_0x2c58a4[_0x0657('0x3a')],[_0x0657('0x3e'),'id'])||{})[_0x0657('0x4e')](function(){return db[_0x0657('0x4f')][_0x0657('0x50')]({'attributes':['id',_0x0657('0x21'),'color'],'where':{'id':_0x2c58a4[_0x0657('0x3a')]['ids']}});})[_0x0657('0x1c')](function(_0x378da4){socket[_0x0657('0x51')](_0x0657('0x52'),{'id':Number(_0x2c58a4[_0x0657('0x2d')]['id']),'tags':_0x378da4||[]});return{'id':Number(_0x2c58a4[_0x0657('0x2d')]['id']),'tags':_0x378da4||[]};});}})[_0x0657('0x1c')](respondWithResult(_0x5a88e6,null))[_0x0657('0x2b')](handleError(_0x5a88e6,null));};exports[_0x0657('0x53')]=function(_0x182385,_0xd0caa0){return db['MailInteraction'][_0x0657('0x38')]({'where':{'id':_0x182385[_0x0657('0x2d')]['id']}})[_0x0657('0x1c')](handleEntityNotFound(_0xd0caa0,null))[_0x0657('0x1c')](function(_0x30b02f){if(_0x30b02f){return _0x30b02f[_0x0657('0x53')](_0x182385['query'][_0x0657('0x3e')]);}})[_0x0657('0x1c')](respondWithStatusCode(_0xd0caa0,null))[_0x0657('0x2b')](handleError(_0xd0caa0,null));};exports['download']=function(_0x13816b,_0x2557a3){var _0x5281b9=moment()[_0x0657('0x54')]()[_0x0657('0x55')]();var _0x273d93=path['join'](config[_0x0657('0x56')],_0x0657('0x57'),_0x0657('0x58'),_0x0657('0x59'));var _0x54cd37=path['join'](config['root'],'server',_0x0657('0x58'),'attachments');var _0x50348c=path['join'](_0x273d93,_0x5281b9);var _0x4e7ca7=util[_0x0657('0x4b')]('transcript-%d-%s.zip',_0x13816b[_0x0657('0x2d')]['id'],_0x5281b9);var _0x55f412=path['join'](_0x273d93,_0x4e7ca7);var _0x2fdc97=[];if(_0x13816b[_0x0657('0x2a')][_0x0657('0x5a')]){_0x2fdc97[_0x0657('0x5b')]({'model':db[_0x0657('0x5c')],'as':_0x0657('0x5d'),'raw':!![]});}var _0x3fcc13=[{'model':db[_0x0657('0x3d')],'as':_0x0657('0x5e'),'attributes':['id',_0x0657('0x3a'),_0x0657('0x5f'),'to','cc',_0x0657('0x60'),_0x0657('0x61'),_0x0657('0x62')],'where':{'secret':![]},'order':qs[_0x0657('0x44')]('id'),'include':_0x2fdc97}];return db[_0x0657('0x24')][_0x0657('0x38')]({'where':{'id':_0x13816b[_0x0657('0x2d')]['id']},'include':_0x3fcc13})[_0x0657('0x1c')](handleEntityNotFound(_0x2557a3,null))['then'](function(_0x4a9a05){if(_0x4a9a05&&_0x4a9a05[_0x0657('0x5e')]){var _0x3c46dd=_0x4a9a05['get']({'plain':!![]});fs[_0x0657('0x63')](_0x50348c);return BPromise['each'](_0x3c46dd[_0x0657('0x5e')],function(_0x5244d4,_0x33e6ea){var _0x34f4e5={'from':_0x5244d4[_0x0657('0x5f')],'to':_0x5244d4['to']||_0x0657('0x64'),'subject':_0x5244d4[_0x0657('0x61')],'html':htmlEntities[_0x0657('0x65')](_0x5244d4[_0x0657('0x3a')]),'headers':{'Date':moment(_0x5244d4['createdAt'])['format'](_0x0657('0x66'))},'attachments':[]};if(_0x5244d4['cc']){_0x34f4e5[_0x0657('0x67')]['Cc']=_0x5244d4['cc'];}if(_0x5244d4[_0x0657('0x60')]){_0x34f4e5[_0x0657('0x67')][_0x0657('0x68')]=_0x5244d4[_0x0657('0x60')];}return new BPromise(function(_0x566bf9,_0x5ddf41){if(_0x5244d4['Attachments']){for(var _0x12efee=0x0;_0x12efee<_0x5244d4[_0x0657('0x5d')][_0x0657('0x33')];_0x12efee++){var _0x20bde7=_0x5244d4['Attachments'][_0x12efee];var _0x371619=path[_0x0657('0x69')](_0x54cd37,_0x20bde7[_0x0657('0x6a')]);if(fs[_0x0657('0x6b')](_0x371619)){_0x34f4e5['attachments'][_0x0657('0x5b')]({'name':_0x20bde7['name'],'contentType':_0x20bde7[_0x0657('0x26')],'data':fs['readFileSync'](_0x371619)});}}}emlformat[_0x0657('0x6c')](_0x34f4e5,function(_0x3780f7,_0x43e3e9){if(_0x3780f7)return _0x5ddf41(_0x3780f7);fs[_0x0657('0x6d')](path[_0x0657('0x69')](_0x50348c,util[_0x0657('0x4b')]('message%d.eml',_0x33e6ea)),_0x43e3e9);return _0x566bf9(_0x43e3e9);});});})['then'](function(){return new BPromise(function(_0x14fc37,_0xec65b){zipdir(_0x50348c,{'saveTo':_0x55f412},function(_0x4b3d31,_0x5ad697){if(_0x4b3d31)return _0xec65b(_0x4b3d31);return _0x14fc37(_0x5ad697);});})[_0x0657('0x1c')](function(){return new BPromise(function(_0x796b0d,_0x2f179a){rimraf(_0x50348c,function(_0x3b66da){if(_0x3b66da)_0x2f179a(_0x3b66da);return _0x796b0d();});});})[_0x0657('0x1c')](function(){return _0x2557a3['download'](_0x55f412,_0x4e7ca7,function(_0x15a4d6){if(!_0x15a4d6)fs[_0x0657('0x6e')](_0x55f412);});});});}else{return _0x2557a3['sendStatus'](0xc8);}})['catch'](handleError(_0x2557a3,null));};
\ No newline at end of file
index fc46dd1..c403077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dbb=['MailInteraction','save','update','remove','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','length','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x508a75,_0x3fa89b){var _0x6a41f0=function(_0x27c1b7){while(--_0x27c1b7){_0x508a75['push'](_0x508a75['shift']());}};_0x6a41f0(++_0x3fa89b);}(_0x8dbb,0x141));var _0xb8db=function(_0x278763,_0x2d06b2){_0x278763=_0x278763-0x0;var _0x4d6a31=_0x8dbb[_0x278763];return _0x4d6a31;};'use strict';var EventEmitter=require(_0xb8db('0x0'));var MailInteraction=require(_0xb8db('0x1'))['db'][_0xb8db('0x2')];var MailMessage=require(_0xb8db('0x1'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb8db('0x3'),'afterUpdate':_0xb8db('0x4'),'afterDestroy':_0xb8db('0x5')};function emitEvent(_0x23cbd5){return function(_0x2e6521,_0x2d63a8,_0x591224){_0x2e6521[_0xb8db('0x6')]({'attributes':['id'],'raw':!![]})[_0xb8db('0x7')](function(_0x4716c8){_0x2e6521['setDataValue'](_0xb8db('0x8'),_0x4716c8[_0xb8db('0x9')](function(_0x25b2b4){return{'id':_0x25b2b4['id']};}));return MailMessage[_0xb8db('0xa')]({'where':{'MailInteractionId':_0x2e6521['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5ab8c8){_0x2e6521[_0xb8db('0xb')](_0xb8db('0xc'),_0x5ab8c8[_0xb8db('0xd')]);MailInteractionEvents['emit'](_0x23cbd5+':'+_0x2e6521['id'],_0x2e6521);MailInteractionEvents['emit'](_0x23cbd5,_0x2e6521);_0x591224(null);})['catch'](_0x591224(null));};}for(var e in events){if(events[_0xb8db('0xe')](e)){var event=events[e];MailInteraction[_0xb8db('0xf')](e,emitEvent(event));}}module[_0xb8db('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0x1c2f=['MailMessage','setMaxListeners','save','update','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hook','exports','events'];(function(_0x567248,_0x48cd55){var _0x1d30e0=function(_0x4f016e){while(--_0x4f016e){_0x567248['push'](_0x567248['shift']());}};_0x1d30e0(++_0x48cd55);}(_0x1c2f,0x16f));var _0xf1c2=function(_0x40930b,_0x3ac259){_0x40930b=_0x40930b-0x0;var _0x5eda6b=_0x1c2f[_0x40930b];return _0x5eda6b;};'use strict';var EventEmitter=require(_0xf1c2('0x0'));var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require('../../mysqldb')['db'][_0xf1c2('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xf1c2('0x2')](0x0);var events={'afterCreate':_0xf1c2('0x3'),'afterUpdate':_0xf1c2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x26e79b){return function(_0x5f10af,_0x140a29,_0xb75df5){_0x5f10af['getUsers']({'attributes':['id'],'raw':!![]})[_0xf1c2('0x5')](function(_0x2e9b13){_0x5f10af[_0xf1c2('0x6')](_0xf1c2('0x7'),_0x2e9b13[_0xf1c2('0x8')](function(_0x5eeac8){return{'id':_0x5eeac8['id']};}));return MailMessage[_0xf1c2('0x9')]({'where':{'MailInteractionId':_0x5f10af['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3ad82c){_0x5f10af['setDataValue'](_0xf1c2('0xa'),_0x3ad82c[_0xf1c2('0xb')]);MailInteractionEvents[_0xf1c2('0xc')](_0x26e79b+':'+_0x5f10af['id'],_0x5f10af);MailInteractionEvents[_0xf1c2('0xc')](_0x26e79b,_0x5f10af);_0xb75df5(null);})[_0xf1c2('0xd')](_0xb75df5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0xf1c2('0xe')](e,emitEvent(event));}}module[_0xf1c2('0xf')]=MailInteractionEvents;
\ No newline at end of file
index 5dc30a0..35b305c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae9e=['rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','models','update','then','catch','utf8mb4','utf8mb4_unicode_ci','api','request-promise'];(function(_0x3338f7,_0x421ceb){var _0x5ed823=function(_0x523b18){while(--_0x523b18){_0x3338f7['push'](_0x3338f7['shift']());}};_0x5ed823(++_0x421ceb);}(_0xae9e,0xcd));var _0xeae9=function(_0x4f2ea1,_0x67f03b){_0x4f2ea1=_0x4f2ea1-0x0;var _0x57303e=_0xae9e[_0x4f2ea1];return _0x57303e;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xeae9('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xeae9('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeae9('0x2'));var config=require(_0xeae9('0x3'));var attributes=require(_0xeae9('0x4'));module[_0xeae9('0x5')]=function(_0x3bfc59,_0xbd670){return _0x3bfc59[_0xeae9('0x6')](_0xeae9('0x7'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0xeae9('0x8'),'to'],'type':_0xeae9('0x9')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5e2547,_0x513a73,_0x3f69f9){if(_0x5e2547[_0xeae9('0xa')]){_0x5e2547[_0xeae9('0xb')]=moment()[_0xeae9('0xc')](_0xeae9('0xd'));}if(_0x5e2547[_0xeae9('0xe')]){_0x5e2547[_0xeae9('0xf')]=moment()[_0xeae9('0xc')](_0xeae9('0xd'));}_0x3f69f9(null,_0x513a73);},'beforeUpdate':function(_0x22e603,_0x293f79,_0x57bda4){if(_0x22e603[_0xeae9('0x10')](_0xeae9('0xa'))){_0x22e603['substatusAt']=_0x22e603[_0xeae9('0xa')]?moment()[_0xeae9('0xc')](_0xeae9('0xd')):null;}if(_0x22e603[_0xeae9('0x10')]('closed')){_0x22e603[_0xeae9('0xf')]=moment()[_0xeae9('0xc')](_0xeae9('0xd'));_0x22e603['substatus']=null;_0x22e603[_0xeae9('0xb')]=null;}_0x57bda4(null,_0x22e603);},'afterUpdate':function(_0x1de548,_0x5f2cae,_0x161957){var _0x4924f5=_0x3bfc59[_0xeae9('0x11')];var _0x30fba3=_0x1de548['get']({'plain':!![]});if(_0x30fba3[_0xeae9('0xe')]){return _0x4924f5['MailMessage'][_0xeae9('0x12')]({'read':!![]},{'where':{'MailInteractionId':_0x30fba3['id']}})[_0xeae9('0x13')](function(){_0x161957();})[_0xeae9('0x14')](function(_0x589bad){_0x161957(_0x589bad);});}else{_0x161957();}}},'charset':_0xeae9('0x15'),'collate':_0xeae9('0x16')});};
\ No newline at end of file
+var _0xe23b=['moment','bluebird','request-promise','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','format','closed','YYYY-MM-DD\x20HH:mm:ss','changed','substatus','closedAt','substatusAt','models','get','MailMessage','update','catch','utf8mb4','lodash','util','api'];(function(_0x294ccc,_0x1ef0b8){var _0x3fa77e=function(_0x452f26){while(--_0x452f26){_0x294ccc['push'](_0x294ccc['shift']());}};_0x3fa77e(++_0x1ef0b8);}(_0xe23b,0x1c8));var _0xbe23=function(_0x394300,_0x2a1268){_0x394300=_0x394300-0x0;var _0x12fc3d=_0xe23b[_0x394300];return _0x12fc3d;};'use strict';var _=require(_0xbe23('0x0'));var util=require(_0xbe23('0x1'));var logger=require('../../config/logger')(_0xbe23('0x2'));var moment=require(_0xbe23('0x3'));var BPromise=require(_0xbe23('0x4'));var rp=require(_0xbe23('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xbe23('0x6'));var attributes=require(_0xbe23('0x7'));module[_0xbe23('0x8')]=function(_0x1673c5,_0x479b1e){return _0x1673c5[_0xbe23('0x9')](_0xbe23('0xa'),attributes,{'tableName':_0xbe23('0xb'),'paranoid':![],'indexes':[{'name':_0xbe23('0xc'),'fields':[_0xbe23('0xd'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x47304c,_0x122d88,_0x407b71){if(_0x47304c['substatus']){_0x47304c['substatusAt']=moment()[_0xbe23('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x47304c[_0xbe23('0xf')]){_0x47304c['closedAt']=moment()[_0xbe23('0xe')](_0xbe23('0x10'));}_0x407b71(null,_0x122d88);},'beforeUpdate':function(_0xc76b27,_0x522b07,_0x297342){if(_0xc76b27[_0xbe23('0x11')]('substatus')){_0xc76b27['substatusAt']=_0xc76b27[_0xbe23('0x12')]?moment()[_0xbe23('0xe')](_0xbe23('0x10')):null;}if(_0xc76b27[_0xbe23('0x11')](_0xbe23('0xf'))){_0xc76b27[_0xbe23('0x13')]=moment()[_0xbe23('0xe')](_0xbe23('0x10'));_0xc76b27['substatus']=null;_0xc76b27[_0xbe23('0x14')]=null;}_0x297342(null,_0xc76b27);},'afterUpdate':function(_0x18992c,_0x4fc2e6,_0x4d2473){var _0x329e3d=_0x1673c5[_0xbe23('0x15')];var _0x1812aa=_0x18992c[_0xbe23('0x16')]({'plain':!![]});if(_0x1812aa['closed']){return _0x329e3d[_0xbe23('0x17')][_0xbe23('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x1812aa['id']}})['then'](function(){_0x4d2473();})[_0xbe23('0x19')](function(_0x41cafa){_0x4d2473(_0x41cafa);});}else{_0x4d2473();}}},'charset':_0xbe23('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 005822c..38e8fbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90e6=['catch','UpdateMailInteraction','update','options','raw','attributes','limit','then','MailInteraction','find','addTags','body','ids','omit','spread','AddTags','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','request','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x288cd6,_0x1bdffd){var _0x1d1ca4=function(_0x5557b5){while(--_0x5557b5){_0x288cd6['push'](_0x288cd6['shift']());}};_0x1d1ca4(++_0x1bdffd);}(_0x90e6,0xe3));var _0x690e=function(_0xb301d4,_0x27ed18){_0xb301d4=_0xb301d4-0x0;var _0x3b5bde=_0x90e6[_0xb301d4];return _0x3b5bde;};'use strict';var _=require(_0x690e('0x0'));var util=require(_0x690e('0x1'));var moment=require(_0x690e('0x2'));var BPromise=require('bluebird');var rs=require(_0x690e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x690e('0x4'))['db'];var utils=require(_0x690e('0x5'));var logger=require(_0x690e('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x690e('0x7'));var client=jayson[_0x690e('0x8')][_0x690e('0x9')]({'port':0x232a});config[_0x690e('0xa')]=_[_0x690e('0xb')](config['redis'],{'host':_0x690e('0xc'),'port':0x18eb});var socket=require(_0x690e('0xd'))(new Redis(config[_0x690e('0xa')]));require(_0x690e('0xe'))[_0x690e('0xf')](socket);function respondWithRpcPromise(_0x175792,_0x4c7da0,_0x12af70){return new BPromise(function(_0x5416a5,_0x35e5f9){return client[_0x690e('0x10')](_0x175792,_0x12af70)['then'](function(_0x47b924){logger[_0x690e('0x11')](_0x690e('0x12'),_0x4c7da0,_0x690e('0x13'));logger[_0x690e('0x14')](_0x690e('0x15'),_0x4c7da0,_0x690e('0x13'),JSON['stringify'](_0x47b924));if(_0x47b924['error']){if(_0x47b924[_0x690e('0x16')]['code']===0x1f4){logger[_0x690e('0x16')]('MailInteraction,\x20%s,\x20%s',_0x4c7da0,_0x47b924['error'][_0x690e('0x17')]);return _0x35e5f9(_0x47b924['error']['message']);}logger[_0x690e('0x16')](_0x690e('0x12'),_0x4c7da0,_0x47b924[_0x690e('0x16')][_0x690e('0x17')]);return _0x5416a5(_0x47b924[_0x690e('0x16')][_0x690e('0x17')]);}else{logger[_0x690e('0x11')](_0x690e('0x12'),_0x4c7da0,_0x690e('0x13'));_0x5416a5(_0x47b924[_0x690e('0x18')][_0x690e('0x17')]);}})[_0x690e('0x19')](function(_0x1246e3){logger[_0x690e('0x16')](_0x690e('0x12'),_0x4c7da0,_0x1246e3);_0x35e5f9(_0x1246e3);});});}exports[_0x690e('0x1a')]=function(_0xc441a1){var _0x3e41c4=this;return new Promise(function(_0x54e244,_0x52dce2){return db['MailInteraction'][_0x690e('0x1b')](_0xc441a1['body'],{'raw':_0xc441a1[_0x690e('0x1c')]?_0xc441a1[_0x690e('0x1c')][_0x690e('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xc441a1[_0x690e('0x1c')]?_0xc441a1['options']['where']||null:null,'attributes':_0xc441a1[_0x690e('0x1c')]?_0xc441a1[_0x690e('0x1c')][_0x690e('0x1e')]||null:null,'limit':_0xc441a1['options']?_0xc441a1[_0x690e('0x1c')][_0x690e('0x1f')]||null:null})[_0x690e('0x20')](function(_0x103528){logger[_0x690e('0x11')](_0x690e('0x1a'),_0xc441a1);logger['debug'](_0x690e('0x1a'),_0xc441a1,JSON['stringify'](_0x103528));_0x54e244(_0x103528);})[_0x690e('0x19')](function(_0x308064){logger['error']('UpdateMailInteraction',_0x308064[_0x690e('0x17')],_0xc441a1);_0x52dce2(_0x3e41c4['error'](0x1f4,_0x308064['message']));});});};exports['AddTagsToMailInteraction']=function(_0x5037bd){return new Promise(function(_0x37261c,_0x59bd18){return db[_0x690e('0x21')][_0x690e('0x22')]({'where':_0x5037bd['options']?_0x5037bd[_0x690e('0x1c')]['where']||null:null})[_0x690e('0x20')](function(_0x6c1540){if(_0x6c1540){return _0x6c1540[_0x690e('0x23')](_0x5037bd[_0x690e('0x24')][_0x690e('0x25')],_[_0x690e('0x26')](_0x5037bd['body'],[_0x690e('0x25'),'id'])||{});}})[_0x690e('0x27')](function(_0x2e9f3a){logger[_0x690e('0x11')](_0x690e('0x28'),_0x5037bd);logger[_0x690e('0x14')](_0x690e('0x28'),_0x5037bd,JSON[_0x690e('0x29')](_0x2e9f3a));_0x37261c(_0x2e9f3a);})[_0x690e('0x19')](function(_0x4bb310){logger['error'](_0x690e('0x28'),_0x4bb310['message'],_0x5037bd);_0x59bd18(_this[_0x690e('0x16')](0x1f4,_0x4bb310[_0x690e('0x17')]));});});};
\ No newline at end of file
+var _0x0127=['jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','request','then','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','error','code','message','MailInteraction,\x20%s,\x20%s','info','result','catch','UpdateMailInteraction','MailInteraction','update','options','raw','where','attributes','limit','stringify','AddTagsToMailInteraction','body','ids','spread','AddTags','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x58f923,_0x2ac4a7){var _0x12088c=function(_0x415533){while(--_0x415533){_0x58f923['push'](_0x58f923['shift']());}};_0x12088c(++_0x2ac4a7);}(_0x0127,0xa0));var _0x7012=function(_0x255905,_0x5e28c0){_0x255905=_0x255905-0x0;var _0xffc3c2=_0x0127[_0x255905];return _0xffc3c2;};'use strict';var _=require(_0x7012('0x0'));var util=require('util');var moment=require(_0x7012('0x1'));var BPromise=require(_0x7012('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7012('0x3'));var db=require(_0x7012('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7012('0x5'))(_0x7012('0x6'));var config=require(_0x7012('0x7'));var jayson=require(_0x7012('0x8'));var client=jayson[_0x7012('0x9')][_0x7012('0xa')]({'port':0x232a});config[_0x7012('0xb')]=_['defaults'](config[_0x7012('0xb')],{'host':_0x7012('0xc'),'port':0x18eb});var socket=require(_0x7012('0xd'))(new Redis(config[_0x7012('0xb')]));require(_0x7012('0xe'))[_0x7012('0xf')](socket);function respondWithRpcPromise(_0x5da294,_0x7605c2,_0xc758ad){return new BPromise(function(_0x17599d,_0x42d0a2){return client[_0x7012('0x10')](_0x5da294,_0xc758ad)[_0x7012('0x11')](function(_0x15886e){logger['info']('MailInteraction,\x20%s,\x20%s',_0x7605c2,_0x7012('0x12'));logger[_0x7012('0x13')](_0x7012('0x14'),_0x7605c2,'request\x20sent',JSON['stringify'](_0x15886e));if(_0x15886e[_0x7012('0x15')]){if(_0x15886e[_0x7012('0x15')][_0x7012('0x16')]===0x1f4){logger[_0x7012('0x15')]('MailInteraction,\x20%s,\x20%s',_0x7605c2,_0x15886e[_0x7012('0x15')][_0x7012('0x17')]);return _0x42d0a2(_0x15886e[_0x7012('0x15')]['message']);}logger['error'](_0x7012('0x18'),_0x7605c2,_0x15886e[_0x7012('0x15')]['message']);return _0x17599d(_0x15886e[_0x7012('0x15')][_0x7012('0x17')]);}else{logger[_0x7012('0x19')]('MailInteraction,\x20%s,\x20%s',_0x7605c2,'request\x20sent');_0x17599d(_0x15886e[_0x7012('0x1a')][_0x7012('0x17')]);}})[_0x7012('0x1b')](function(_0x5840d4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x7605c2,_0x5840d4);_0x42d0a2(_0x5840d4);});});}exports[_0x7012('0x1c')]=function(_0x3e959b){var _0x2802c1=this;return new Promise(function(_0x35a02f,_0x3b2152){return db[_0x7012('0x1d')][_0x7012('0x1e')](_0x3e959b['body'],{'raw':_0x3e959b['options']?_0x3e959b[_0x7012('0x1f')][_0x7012('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e959b[_0x7012('0x1f')]?_0x3e959b[_0x7012('0x1f')][_0x7012('0x21')]||null:null,'attributes':_0x3e959b[_0x7012('0x1f')]?_0x3e959b['options'][_0x7012('0x22')]||null:null,'limit':_0x3e959b[_0x7012('0x1f')]?_0x3e959b[_0x7012('0x1f')][_0x7012('0x23')]||null:null})[_0x7012('0x11')](function(_0x1946fb){logger[_0x7012('0x19')](_0x7012('0x1c'),_0x3e959b);logger[_0x7012('0x13')](_0x7012('0x1c'),_0x3e959b,JSON[_0x7012('0x24')](_0x1946fb));_0x35a02f(_0x1946fb);})[_0x7012('0x1b')](function(_0x385968){logger[_0x7012('0x15')](_0x7012('0x1c'),_0x385968[_0x7012('0x17')],_0x3e959b);_0x3b2152(_0x2802c1['error'](0x1f4,_0x385968[_0x7012('0x17')]));});});};exports[_0x7012('0x25')]=function(_0x4d78ce){return new Promise(function(_0x2b5488,_0x56012f){return db['MailInteraction']['find']({'where':_0x4d78ce['options']?_0x4d78ce[_0x7012('0x1f')][_0x7012('0x21')]||null:null})['then'](function(_0x394f07){if(_0x394f07){return _0x394f07['addTags'](_0x4d78ce[_0x7012('0x26')][_0x7012('0x27')],_['omit'](_0x4d78ce[_0x7012('0x26')],[_0x7012('0x27'),'id'])||{});}})[_0x7012('0x28')](function(_0x3a48e4){logger[_0x7012('0x19')](_0x7012('0x29'),_0x4d78ce);logger['debug'](_0x7012('0x29'),_0x4d78ce,JSON[_0x7012('0x24')](_0x3a48e4));_0x2b5488(_0x3a48e4);})[_0x7012('0x1b')](function(_0x419541){logger[_0x7012('0x15')]('AddTags',_0x419541[_0x7012('0x17')],_0x4d78ce);_0x56012f(_this[_0x7012('0x15')](0x1f4,_0x419541[_0x7012('0x17')]));});});};
\ No newline at end of file
index 54b1bbe..45b7ccd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea6b=['register','length','./mailInteraction.events','remove','update','emit','removeListener'];(function(_0x427502,_0x4e6214){var _0x1baeff=function(_0x1491e6){while(--_0x1491e6){_0x427502['push'](_0x427502['shift']());}};_0x1baeff(++_0x4e6214);}(_0xea6b,0x198));var _0xbea6=function(_0x5322bb,_0x4a6112){_0x5322bb=_0x5322bb-0x0;var _0x6bd866=_0xea6b[_0x5322bb];return _0x6bd866;};'use strict';var MailInteractionEvents=require(_0xbea6('0x0'));var events=['save',_0xbea6('0x1'),_0xbea6('0x2')];function createListener(_0xddfd39,_0xca97d6){return function(_0xd013aa){_0xca97d6[_0xbea6('0x3')](_0xddfd39,_0xd013aa);};}function removeListener(_0x4b8d78,_0x38c3d8){return function(){MailInteractionEvents[_0xbea6('0x4')](_0x4b8d78,_0x38c3d8);};}exports[_0xbea6('0x5')]=function(_0x57c227){for(var _0x585211=0x0,_0x4c0547=events[_0xbea6('0x6')];_0x585211<_0x4c0547;_0x585211++){var _0x5e0fca=events[_0x585211];var _0x58b97a=createListener('mailInteraction:'+_0x5e0fca,_0x57c227);MailInteractionEvents['on'](_0x5e0fca,_0x58b97a);}};
\ No newline at end of file
+var _0x1975=['register','mailInteraction:','./mailInteraction.events','save','remove','update','emit','removeListener'];(function(_0x5d2f3d,_0x2ab56a){var _0x44a9de=function(_0x6a7ab8){while(--_0x6a7ab8){_0x5d2f3d['push'](_0x5d2f3d['shift']());}};_0x44a9de(++_0x2ab56a);}(_0x1975,0x12a));var _0x5197=function(_0x40b981,_0x48b308){_0x40b981=_0x40b981-0x0;var _0x58696b=_0x1975[_0x40b981];return _0x58696b;};'use strict';var MailInteractionEvents=require(_0x5197('0x0'));var events=[_0x5197('0x1'),_0x5197('0x2'),_0x5197('0x3')];function createListener(_0x340dcc,_0x4cbf67){return function(_0x1155d2){_0x4cbf67[_0x5197('0x4')](_0x340dcc,_0x1155d2);};}function removeListener(_0x3ef83e,_0x9da29b){return function(){MailInteractionEvents[_0x5197('0x5')](_0x3ef83e,_0x9da29b);};}exports[_0x5197('0x6')]=function(_0x436a92){for(var _0x4c7bb5=0x0,_0x2ac84b=events['length'];_0x4c7bb5<_0x2ac84b;_0x4c7bb5++){var _0x1b6378=events[_0x4c7bb5];var _0x108c10=createListener(_0x5197('0x7')+_0x1b6378,_0x436a92);MailInteractionEvents['on'](_0x1b6378,_0x108c10);}};
\ No newline at end of file
index 16bdb0a..2cc50bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9f0=['tracked','mailmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','describe','/:id','show'];(function(_0x25fc41,_0x250864){var _0x1371d1=function(_0x8ab2e3){while(--_0x8ab2e3){_0x25fc41['push'](_0x25fc41['shift']());}};_0x1371d1(++_0x250864);}(_0xb9f0,0xc8));var _0x0b9f=function(_0x1d0b3e,_0x3d9963){_0x1d0b3e=_0x1d0b3e-0x0;var _0x59ac4c=_0xb9f0[_0x1d0b3e];return _0x59ac4c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0b9f('0x0'));var timeout=require(_0x0b9f('0x1'));var express=require(_0x0b9f('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0b9f('0x3'));var interaction=require(_0x0b9f('0x4'));var config=require('../../config/environment');var controller=require('./mailMessage.controller');router[_0x0b9f('0x5')]('/',auth[_0x0b9f('0x6')](),controller['index']);router[_0x0b9f('0x5')]('/describe',auth[_0x0b9f('0x6')](),controller[_0x0b9f('0x7')]);router[_0x0b9f('0x5')](_0x0b9f('0x8'),auth['isAuthenticated'](),controller[_0x0b9f('0x9')]);router[_0x0b9f('0x5')]('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0x0b9f('0x6')](),interaction[_0x0b9f('0xa')]('mail',_0x0b9f('0xb')),controller[_0x0b9f('0xc')]);router[_0x0b9f('0xd')](_0x0b9f('0x8'),auth['isAuthenticated'](),controller[_0x0b9f('0xe')]);router['put'](_0x0b9f('0xf'),auth[_0x0b9f('0x6')](),controller['accept']);router[_0x0b9f('0xd')](_0x0b9f('0x10'),auth['isAuthenticated'](),controller[_0x0b9f('0x11')]);router[_0x0b9f('0x12')](_0x0b9f('0x8'),auth[_0x0b9f('0x6')](),controller[_0x0b9f('0x13')]);module[_0x0b9f('0x14')]=router;
\ No newline at end of file
+var _0xdc9b=['download','post','tracked','mail','mailmessage:create','create','put','update','/:id/reject','delete','destroy','exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','/:id/download'];(function(_0x295172,_0x308de9){var _0x38ea7f=function(_0x3a56f9){while(--_0x3a56f9){_0x295172['push'](_0x295172['shift']());}};_0x38ea7f(++_0x308de9);}(_0xdc9b,0x70));var _0xbdc9=function(_0x318fb7,_0x31323a){_0x318fb7=_0x318fb7-0x0;var _0x59eff4=_0xdc9b[_0x318fb7];return _0x59eff4;};'use strict';var multer=require(_0xbdc9('0x0'));var util=require(_0xbdc9('0x1'));var path=require(_0xbdc9('0x2'));var timeout=require('connect-timeout');var express=require(_0xbdc9('0x3'));var router=express[_0xbdc9('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbdc9('0x5'));var config=require(_0xbdc9('0x6'));var controller=require('./mailMessage.controller');router[_0xbdc9('0x7')]('/',auth[_0xbdc9('0x8')](),controller['index']);router[_0xbdc9('0x7')]('/describe',auth[_0xbdc9('0x8')](),controller[_0xbdc9('0x9')]);router[_0xbdc9('0x7')](_0xbdc9('0xa'),auth[_0xbdc9('0x8')](),controller[_0xbdc9('0xb')]);router[_0xbdc9('0x7')](_0xbdc9('0xc'),auth[_0xbdc9('0x8')](),controller[_0xbdc9('0xd')]);router[_0xbdc9('0xe')]('/',auth[_0xbdc9('0x8')](),interaction[_0xbdc9('0xf')](_0xbdc9('0x10'),_0xbdc9('0x11')),controller[_0xbdc9('0x12')]);router[_0xbdc9('0x13')](_0xbdc9('0xa'),auth[_0xbdc9('0x8')](),controller[_0xbdc9('0x14')]);router[_0xbdc9('0x13')]('/:id/accept',auth[_0xbdc9('0x8')](),controller['accept']);router['put'](_0xbdc9('0x15'),auth[_0xbdc9('0x8')](),controller['reject']);router[_0xbdc9('0x16')](_0xbdc9('0xa'),auth[_0xbdc9('0x8')](),controller[_0xbdc9('0x17')]);module[_0xbdc9('0x18')]=router;
\ No newline at end of file
index eff0c96..0e13d47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12ed=['Email','Chat','sequelize','lodash','exports','TEXT','long','medium','BOOLEAN','ENUM','STRING','DATE'];(function(_0x39e585,_0x340d8e){var _0x4872ab=function(_0x1ac1bb){while(--_0x1ac1bb){_0x39e585['push'](_0x39e585['shift']());}};_0x4872ab(++_0x340d8e);}(_0x12ed,0x1a6));var _0xd12e=function(_0x3a9629,_0x1eb2f5){_0x3a9629=_0x3a9629-0x0;var _0x1849be=_0x12ed[_0x3a9629];return _0x1849be;};'use strict';var Sequelize=require(_0xd12e('0x0'));var _=require(_0xd12e('0x1'));module[_0xd12e('0x2')]={'body':{'type':Sequelize[_0xd12e('0x3')](_0xd12e('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xd12e('0x3')](_0xd12e('0x5'))},'read':{'type':Sequelize[_0xd12e('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd12e('0x7')]('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xd12e('0x8')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xd12e('0x3')](_0xd12e('0x4'))},'cc':{'type':Sequelize['TEXT'](_0xd12e('0x4'))},'bcc':{'type':Sequelize['TEXT'](_0xd12e('0x4'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0xd12e('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xd12e('0x9')]},'originTo':{'type':Sequelize[_0xd12e('0x3')](_0xd12e('0x4'))},'originCc':{'type':Sequelize[_0xd12e('0x3')](_0xd12e('0x4'))},'originChannel':{'type':Sequelize[_0xd12e('0x7')](_0xd12e('0xa'),_0xd12e('0xb')),'defaultValue':_0xd12e('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x6b1c=['medium','BOOLEAN','ENUM','STRING','DATE','INTEGER','Email','sequelize','exports','TEXT','long'];(function(_0x25df80,_0xa2aec5){var _0x17b6d0=function(_0x446155){while(--_0x446155){_0x25df80['push'](_0x25df80['shift']());}};_0x17b6d0(++_0xa2aec5);}(_0x6b1c,0xf9));var _0xc6b1=function(_0x546fa4,_0x5dbb18){_0x546fa4=_0x546fa4-0x0;var _0x25867e=_0x6b1c[_0x546fa4];return _0x25867e;};'use strict';var Sequelize=require(_0xc6b1('0x0'));var _=require('lodash');module[_0xc6b1('0x1')]={'body':{'type':Sequelize[_0xc6b1('0x2')](_0xc6b1('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0xc6b1('0x4'))},'read':{'type':Sequelize[_0xc6b1('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xc6b1('0x6')]('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xc6b1('0x7')](0x1fe)},'from':{'type':Sequelize[_0xc6b1('0x7')]},'to':{'type':Sequelize['TEXT'](_0xc6b1('0x3'))},'cc':{'type':Sequelize[_0xc6b1('0x2')](_0xc6b1('0x3'))},'bcc':{'type':Sequelize[_0xc6b1('0x2')](_0xc6b1('0x3'))},'subject':{'type':Sequelize[_0xc6b1('0x2')]},'sentAt':{'type':Sequelize[_0xc6b1('0x8')]},'attach':{'type':Sequelize[_0xc6b1('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xc6b1('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0xc6b1('0x2')](_0xc6b1('0x3'))},'originCc':{'type':Sequelize['TEXT'](_0xc6b1('0x3'))},'originChannel':{'type':Sequelize['ENUM'](_0xc6b1('0xa'),'Chat'),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index 9116898..560ac14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc801=['include','findAll','rows','catch','show','params','find','update','body','destroy','describe','create','direction','MailAccount','findOne','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','server/files/attachments','basename','ListId','List\x20not\x20found','messageId','format','YYYY-MM-DD\x20HH:mm:ss','read','readAt','UserId','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','channel','motionChannel','event','accept','fromString','EventManager','acceptmessage','mail','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','fullname','interface','reject','rejectmessage','download','unix','toString','join','root','server','tmp','files','message-%s.eml','subject','createdAt','from','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','Attachments','readFileSync','build','writeFileSync','eml-format','moment','bluebird','util','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','json','offset','undefined','limit','count','status','set','Content-Range','stack','name','send','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x5a0f53,_0x3cf8a4){var _0x262793=function(_0x7d6caa){while(--_0x7d6caa){_0x5a0f53['push'](_0x5a0f53['shift']());}};_0x262793(++_0x3cf8a4);}(_0xc801,0x1a6));var _0x1c80=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0xc801[_0x122096];return _0x3d1966;};'use strict';var emlformat=require(_0x1c80('0x0'));var moment=require(_0x1c80('0x1'));var BPromise=require(_0x1c80('0x2'));var util=require(_0x1c80('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x1c80('0x4'));var Redis=require(_0x1c80('0x5'));var htmlToText=require(_0x1c80('0x6'));var qs=require(_0x1c80('0x7'));var logger=require(_0x1c80('0x8'))(_0x1c80('0x9'));var interaction_log=require(_0x1c80('0x8'))('mail-interactions');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x1c80('0xa')]=_[_0x1c80('0xb')](config[_0x1c80('0xa')],{'host':_0x1c80('0xc'),'port':0x18eb});var socket=require(_0x1c80('0xd'))(new Redis(config[_0x1c80('0xa')]));var htmlEntities=require(_0x1c80('0xe'));require(_0x1c80('0xf'))[_0x1c80('0x10')](socket);var jayson=require(_0x1c80('0x11'));var client=jayson[_0x1c80('0x12')][_0x1c80('0x13')]({'port':0x232c});var client9003=jayson[_0x1c80('0x12')]['http']({'port':0x232b});var client9002=jayson[_0x1c80('0x12')][_0x1c80('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x1032af,_0x3e7eb8,_0x370a96,_0x5c7e7a){return new BPromise(function(_0x435dd3,_0x4b2df5){var _0x528742=_0x5c7e7a||client;return _0x528742['request'](_0x1032af,_0x370a96)[_0x1c80('0x14')](function(_0xc653e8){logger[_0x1c80('0x15')](_0x1c80('0x16'),_0x3e7eb8,_0x1c80('0x17'));logger[_0x1c80('0x18')](_0x1c80('0x19'),_0x3e7eb8,_0x1c80('0x17'),JSON[_0x1c80('0x1a')](_0xc653e8));if(_0xc653e8['error']){if(_0xc653e8['error'][_0x1c80('0x1b')]===0x1f4){logger['error'](_0x1c80('0x16'),_0x3e7eb8,_0xc653e8[_0x1c80('0x1c')][_0x1c80('0x1d')]);return _0x4b2df5(_0xc653e8[_0x1c80('0x1c')][_0x1c80('0x1d')]);}logger[_0x1c80('0x1c')](_0x1c80('0x16'),_0x3e7eb8,_0xc653e8[_0x1c80('0x1c')][_0x1c80('0x1d')]);return _0x435dd3(_0xc653e8[_0x1c80('0x1c')]['message']);}else{logger[_0x1c80('0x15')](_0x1c80('0x16'),_0x3e7eb8,_0x1c80('0x17'));_0x435dd3(_0xc653e8[_0x1c80('0x1e')][_0x1c80('0x1d')]);}})['catch'](function(_0x3b0c1d){logger['error'](_0x1c80('0x16'),_0x3e7eb8,_0x3b0c1d);_0x4b2df5(_0x3b0c1d);});});}function respondWithResult(_0x345360,_0x54ae76){_0x54ae76=_0x54ae76||0xc8;return function(_0x494317){if(_0x494317){return _0x345360['status'](_0x54ae76)[_0x1c80('0x1f')](_0x494317);}};}function respondWithFilteredResult(_0x3c7c47,_0x36938a){return function(_0x325391){if(_0x325391){var _0x5f1ea7=typeof _0x36938a[_0x1c80('0x20')]===_0x1c80('0x21')&&typeof _0x36938a[_0x1c80('0x22')]===_0x1c80('0x21');var _0x293c71=_0x325391[_0x1c80('0x23')];var _0x4e363e=_0x5f1ea7?0x0:_0x36938a[_0x1c80('0x20')];var _0x3c57cb=_0x5f1ea7?_0x325391['count']:_0x36938a[_0x1c80('0x20')]+_0x36938a[_0x1c80('0x22')];var _0x1a865e;if(_0x3c57cb>=_0x293c71){_0x3c57cb=_0x293c71;_0x1a865e=0xc8;}else{_0x1a865e=0xce;}_0x3c7c47[_0x1c80('0x24')](_0x1a865e);return _0x3c7c47[_0x1c80('0x25')](_0x1c80('0x26'),_0x4e363e+'-'+_0x3c57cb+'/'+_0x293c71)[_0x1c80('0x1f')](_0x325391);}return null;};}function saveUpdates(_0x5a117c){return function(_0x369274){if(_0x369274){return _0x369274['update'](_0x5a117c)[_0x1c80('0x14')](function(_0x3af8c9){return _0x3af8c9;});}return null;};}function removeEntity(_0x342024){return function(_0x468f44){if(_0x468f44){return _0x468f44['destroy']()[_0x1c80('0x14')](function(){_0x342024['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x37821a){return function(_0x3f88d9){if(!_0x3f88d9){_0x37821a['sendStatus'](0x194);}return _0x3f88d9;};}function handleError(_0x1ffeb8,_0x3ad7c7){_0x3ad7c7=_0x3ad7c7||0x1f4;return function(_0x4d5425){logger['error'](_0x4d5425[_0x1c80('0x27')]);if(_0x4d5425['name']){delete _0x4d5425[_0x1c80('0x28')];}_0x1ffeb8[_0x1c80('0x24')](_0x3ad7c7)[_0x1c80('0x29')](_0x4d5425);};}exports[_0x1c80('0x2a')]=function(_0x2eafb1,_0x8c3990){var _0x55ec9c={},_0x1de05c={},_0x528089={'count':0x0,'rows':[]};var _0x49177e=_[_0x1c80('0x2b')](db[_0x1c80('0x2c')][_0x1c80('0x2d')],function(_0x4d2fb8){return{'name':_0x4d2fb8[_0x1c80('0x2e')],'type':_0x4d2fb8[_0x1c80('0x2f')][_0x1c80('0x30')]};});_0x1de05c[_0x1c80('0x31')]=_[_0x1c80('0x2b')](_0x49177e,_0x1c80('0x28'));_0x1de05c[_0x1c80('0x32')]=_[_0x1c80('0x33')](_0x2eafb1[_0x1c80('0x32')]);_0x1de05c[_0x1c80('0x34')]=_['intersection'](_0x1de05c[_0x1c80('0x31')],_0x1de05c[_0x1c80('0x32')]);_0x55ec9c[_0x1c80('0x35')]=_[_0x1c80('0x36')](_0x1de05c[_0x1c80('0x31')],qs[_0x1c80('0x37')](_0x2eafb1[_0x1c80('0x32')][_0x1c80('0x37')]));_0x55ec9c[_0x1c80('0x35')]=_0x55ec9c[_0x1c80('0x35')][_0x1c80('0x38')]?_0x55ec9c['attributes']:_0x1de05c[_0x1c80('0x31')];if(!_0x2eafb1[_0x1c80('0x32')][_0x1c80('0x39')](_0x1c80('0x3a'))){_0x55ec9c[_0x1c80('0x22')]=qs[_0x1c80('0x22')](_0x2eafb1['query'][_0x1c80('0x22')]);_0x55ec9c[_0x1c80('0x20')]=qs[_0x1c80('0x20')](_0x2eafb1['query'][_0x1c80('0x20')]);}_0x55ec9c[_0x1c80('0x3b')]=qs['sort'](_0x2eafb1[_0x1c80('0x32')]['sort']);_0x55ec9c[_0x1c80('0x3c')]=qs[_0x1c80('0x34')](_[_0x1c80('0x3d')](_0x2eafb1['query'],_0x1de05c[_0x1c80('0x34')]),_0x49177e);if(_0x2eafb1[_0x1c80('0x32')][_0x1c80('0x3e')]){_0x55ec9c['where']=_[_0x1c80('0x3f')](_0x55ec9c['where'],{'$or':_[_0x1c80('0x2b')](_0x49177e,function(_0x35e7fa){if(_0x35e7fa[_0x1c80('0x2f')]!==_0x1c80('0x40')){var _0x51be7c={};_0x51be7c[_0x35e7fa[_0x1c80('0x28')]]={'$like':'%'+_0x2eafb1[_0x1c80('0x32')][_0x1c80('0x3e')]+'%'};return _0x51be7c;}})});}_0x55ec9c=_[_0x1c80('0x3f')]({},_0x55ec9c,_0x2eafb1[_0x1c80('0x41')]);var _0x20f3b2={'where':_0x55ec9c[_0x1c80('0x3c')]};return db[_0x1c80('0x2c')]['count'](_0x20f3b2)[_0x1c80('0x14')](function(_0x5741ac){_0x528089[_0x1c80('0x23')]=_0x5741ac;if(_0x2eafb1['query'][_0x1c80('0x42')]){_0x55ec9c[_0x1c80('0x43')]=[{'all':!![]}];}return db[_0x1c80('0x2c')][_0x1c80('0x44')](_0x55ec9c);})['then'](function(_0x28b243){_0x528089[_0x1c80('0x45')]=_0x28b243;return _0x528089;})[_0x1c80('0x14')](respondWithFilteredResult(_0x8c3990,_0x55ec9c))[_0x1c80('0x46')](handleError(_0x8c3990,null));};exports[_0x1c80('0x47')]=function(_0x5ed821,_0x3b6f8d){var _0x31dd7d={'raw':!![],'where':{'id':_0x5ed821[_0x1c80('0x48')]['id']}},_0x2cef61={};_0x2cef61[_0x1c80('0x31')]=_['keys'](db[_0x1c80('0x2c')][_0x1c80('0x2d')]);_0x2cef61[_0x1c80('0x32')]=_[_0x1c80('0x33')](_0x5ed821[_0x1c80('0x32')]);_0x2cef61[_0x1c80('0x34')]=_[_0x1c80('0x36')](_0x2cef61['model'],_0x2cef61[_0x1c80('0x32')]);_0x31dd7d[_0x1c80('0x35')]=_[_0x1c80('0x36')](_0x2cef61[_0x1c80('0x31')],qs[_0x1c80('0x37')](_0x5ed821[_0x1c80('0x32')][_0x1c80('0x37')]));_0x31dd7d[_0x1c80('0x35')]=_0x31dd7d['attributes'][_0x1c80('0x38')]?_0x31dd7d[_0x1c80('0x35')]:_0x2cef61[_0x1c80('0x31')];if(_0x5ed821[_0x1c80('0x32')][_0x1c80('0x42')]){_0x31dd7d[_0x1c80('0x43')]=[{'all':!![]}];}_0x31dd7d=_[_0x1c80('0x3f')]({},_0x31dd7d,_0x5ed821[_0x1c80('0x41')]);return db[_0x1c80('0x2c')][_0x1c80('0x49')](_0x31dd7d)[_0x1c80('0x14')](handleEntityNotFound(_0x3b6f8d,null))[_0x1c80('0x14')](respondWithResult(_0x3b6f8d,null))['catch'](handleError(_0x3b6f8d,null));};exports[_0x1c80('0x4a')]=function(_0x588be4,_0x54a8b2){if(_0x588be4[_0x1c80('0x4b')]['id']){delete _0x588be4['body']['id'];}return db[_0x1c80('0x2c')][_0x1c80('0x49')]({'where':{'id':_0x588be4[_0x1c80('0x48')]['id']}})['then'](handleEntityNotFound(_0x54a8b2,null))[_0x1c80('0x14')](saveUpdates(_0x588be4['body'],null))[_0x1c80('0x14')](respondWithResult(_0x54a8b2,null))['catch'](handleError(_0x54a8b2,null));};exports[_0x1c80('0x4c')]=function(_0x2b9c16,_0x220cfa){return db[_0x1c80('0x2c')][_0x1c80('0x49')]({'where':{'id':_0x2b9c16[_0x1c80('0x48')]['id']}})[_0x1c80('0x14')](handleEntityNotFound(_0x220cfa,null))[_0x1c80('0x14')](removeEntity(_0x220cfa,null))[_0x1c80('0x46')](handleError(_0x220cfa,null));};exports[_0x1c80('0x4d')]=function(_0x4fa7e9,_0x531e68){return db[_0x1c80('0x2c')][_0x1c80('0x4d')]()[_0x1c80('0x14')](respondWithResult(_0x531e68,null))['catch'](handleError(_0x531e68,null));};exports[_0x1c80('0x4e')]=function(_0x47e4e2,_0x5e36dd){return db[_0x1c80('0x2c')]['create'](_0x47e4e2['body'])[_0x1c80('0x14')](function(_0x1db1f3){if(_0x1db1f3){if(_0x1db1f3[_0x1c80('0x4f')]==='out'&&!_0x1db1f3['secret']){var _0x1586f7,_0x519b9d,_0xe6eaa9;if(_0x47e4e2['body']['to']){_0x519b9d=_0x47e4e2[_0x1c80('0x4b')]['to']['split'](',')[0x0];}return db[_0x1c80('0x50')][_0x1c80('0x51')]({'where':{'id':_0x1db1f3[_0x1c80('0x52')]},'include':[{'model':db[_0x1c80('0x53')],'as':_0x1c80('0x54'),'include':[{'model':db[_0x1c80('0x55')],'as':_0x1c80('0x56'),'where':{'email':_0x519b9d},'limit':0x1,'order':[[_0x1c80('0x57'),_0x1c80('0x58')]]}]},{'model':db[_0x1c80('0x59')],'as':_0x1c80('0x5a'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x1c80('0x5b'),'raw':!![]}]}]})[_0x1c80('0x14')](function(_0x4b91b1){_0x1586f7=_0x4b91b1;if(!_0x1586f7||!_0x1586f7[_0x1c80('0x5a')])return;var _0xc1f201=_0x1586f7[_0x1c80('0x5c')]();if(_0x47e4e2[_0x1c80('0x4b')][_0x1c80('0x5d')]&&_0x47e4e2[_0x1c80('0x4b')][_0x1c80('0x5d')][_0x1c80('0x38')]){for(var _0x1c2684=0x0;_0x1c2684<_0x47e4e2[_0x1c80('0x4b')][_0x1c80('0x5d')][_0x1c80('0x38')];_0x1c2684+=0x1){_0x47e4e2[_0x1c80('0x4b')]['attachments'][_0x1c2684]={'filename':_0x47e4e2[_0x1c80('0x4b')][_0x1c80('0x5d')][_0x1c2684][_0x1c80('0x28')],'path':path['join'](config['root'],_0x1c80('0x5e'),_0x47e4e2[_0x1c80('0x4b')]['attachments'][_0x1c2684][_0x1c80('0x5f')])};}}_0xe6eaa9={'account':_0xc1f201,'message':_0x47e4e2['body']};return;})[_0x1c80('0x14')](function(){if(_0x1586f7[_0x1c80('0x54')]){if(_0x1586f7[_0x1c80('0x54')][_0x1c80('0x56')][_0x1c80('0x38')]){return _0x1586f7[_0x1c80('0x54')][_0x1c80('0x56')][0x0];}else{return db['CmContact']['create'](_[_0x1c80('0xb')](_0x47e4e2[_0x1c80('0x4b')],{'firstName':_0x47e4e2[_0x1c80('0x4b')]['to'],'email':_0x47e4e2[_0x1c80('0x4b')]['to'],'phone':_0x47e4e2[_0x1c80('0x4b')]['to'],'ListId':_0x1586f7[_0x1c80('0x60')]}));}}else{throw new Error(_0x1c80('0x61'));}})[_0x1c80('0x14')](function(){if(_0xe6eaa9){return respondWithRpcPromise('SendMail','sendMail',_0xe6eaa9,client9003)[_0x1c80('0x14')](function(_0x57182f){return _0x1db1f3[_0x1c80('0x4a')]({'read':!![],'messageId':_0x57182f[_0x1c80('0x62')],'sentAt':moment()[_0x1c80('0x63')](_0x1c80('0x64'))});})[_0x1c80('0x46')](function(_0x57467a){logger[_0x1c80('0x1c')]('%s',JSON['stringify'](_0x57467a));return _0x1db1f3;});}return _0x1db1f3;});}return _0x1db1f3;}})[_0x1c80('0x14')](respondWithResult(_0x5e36dd,0xc9))[_0x1c80('0x46')](handleError(_0x5e36dd,null));};exports['accept']=function(_0x3f4952,_0x3d71e8){var _0x5c4136={'agent':{},'channel':'mail'};if(_0x3f4952[_0x1c80('0x4b')]['id']){delete _0x3f4952['body']['id'];}_0x3f4952[_0x1c80('0x4b')][_0x1c80('0x65')]=!![];_0x3f4952[_0x1c80('0x4b')][_0x1c80('0x66')]=moment()['format'](_0x1c80('0x64'));_0x3f4952[_0x1c80('0x4b')][_0x1c80('0x67')]=_0x3f4952[_0x1c80('0x4b')]['UserId']||_0x3f4952['user']['id'];_0x5c4136[_0x1c80('0x68')]['id']=_0x3f4952[_0x1c80('0x4b')][_0x1c80('0x67')];return db[_0x1c80('0x2c')][_0x1c80('0x49')]({'where':{'id':_0x3f4952[_0x1c80('0x48')]['id'],'UserId':null}})[_0x1c80('0x14')](handleEntityNotFound(_0x3d71e8,null))[_0x1c80('0x14')](saveUpdates(_0x3f4952[_0x1c80('0x4b')],null))[_0x1c80('0x14')](function(_0x1b78ae){if(_0x1b78ae){_0x5c4136['message']=_0x1b78ae[_0x1c80('0x69')]({'plain':!![]});return db[_0x1c80('0x6a')][_0x1c80('0x49')]({'where':{'id':_0x1b78ae[_0x1c80('0x6b')]}});}return null;})[_0x1c80('0x14')](handleEntityNotFound(_0x3d71e8,null))[_0x1c80('0x14')](function(_0x117f4d){if(_0x117f4d){return _0x117f4d[_0x1c80('0x4a')]({'UserId':_0x3f4952[_0x1c80('0x4b')]['UserId'],'read1stAt':_['isNil'](_0x117f4d[_0x1c80('0x6c')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x195892){if(_0x195892){_0x5c4136[_0x1c80('0x6d')]=_0x195892[_0x1c80('0x69')]({'plain':!![]});interaction_log[_0x1c80('0x15')](_0x1c80('0x6e'),_0x3f4952[_0x1c80('0x6f')]['id'],_0x3f4952['user']['name'],_0x3f4952[_0x1c80('0x6f')][_0x1c80('0x70')],_0x5c4136[_0x1c80('0x6d')]['id'],_0x3f4952[_0x1c80('0x4b')]?JSON[_0x1c80('0x1a')](_0x3f4952['body']):_0x1c80('0x71'));return respondWithRpcPromise(_0x1c80('0x72'),_0x1c80('0x73'),_0x5c4136);}return null;})[_0x1c80('0x14')](function(_0x310e48){var _0x56b9c2=_0x1c80('0x74')+_0x310e48['message'][_0x1c80('0x75')];return db['sequelize'][_0x1c80('0x32')](_0x56b9c2,{'type':db[_0x1c80('0x76')][_0x1c80('0x77')][_0x1c80('0x78')],'raw':!![]})[_0x1c80('0x14')](function(_0x13cde3){return _0x13cde3;});})['then'](function(_0x3e41a4){if(_0x3e41a4){_0x5c4136[_0x1c80('0x1d')][_0x1c80('0x79')]=_0x3e41a4[0x0];if(!_0x3f4952[_0x1c80('0x4b')][_0x1c80('0x67')])return;return db[_0x1c80('0x7a')]['find']({'where':{'id':_0x3f4952['body']['UserId'],'role':_0x1c80('0x68')},'attributes':['id',_0x1c80('0x28'),'fullname',_0x1c80('0x7b'),_0x1c80('0x7c')],'raw':!![]});}return null;})['then'](function(_0x7a4b37){if(!_0x7a4b37)return null;_0x5c4136[_0x1c80('0x1d')][_0x1c80('0x68')]=_0x7a4b37;return _0x5c4136;})['then'](function(_0x55cc78){if(_0x55cc78){if(_0x3f4952['body'][_0x1c80('0x7d')]){_0x5c4136[_0x1c80('0x1d')]['interface']=util[_0x1c80('0x63')]('SIP/%s',_0x3f4952['user'][_0x1c80('0x28')]);_0x5c4136[_0x1c80('0x1d')][_0x1c80('0x7e')]=_0x5c4136[_0x1c80('0x7e')];_0x5c4136[_0x1c80('0x1d')][_0x1c80('0x7f')]=_0x5c4136[_0x1c80('0x7e')];_0x5c4136['message'][_0x1c80('0x80')]=_0x1c80('0x81');_0x5c4136[_0x1c80('0x1d')][_0x1c80('0x4b')]=htmlToText[_0x1c80('0x82')](_0x5c4136[_0x1c80('0x1d')][_0x1c80('0x4b')]);return respondWithRpcPromise(_0x1c80('0x83'),_0x1c80('0x83'),{'event':_0x1c80('0x84'),'message':_0x5c4136[_0x1c80('0x1d')]},client9002)[_0x1c80('0x14')](function(){return _0x5c4136;});}return _0x5c4136;}return null;})[_0x1c80('0x14')](respondWithResult(_0x3d71e8,null))[_0x1c80('0x46')](handleError(_0x3d71e8,null));};exports['reject']=function(_0x47d87d,_0x2e643d){var _0x557bb8={'agent':{},'channel':_0x1c80('0x85')};if(_0x47d87d['body']['id']){delete _0x47d87d[_0x1c80('0x4b')]['id'];}_0x47d87d[_0x1c80('0x4b')][_0x1c80('0x67')]=_0x47d87d[_0x1c80('0x4b')][_0x1c80('0x67')]||_0x47d87d[_0x1c80('0x6f')]['id'];_0x557bb8[_0x1c80('0x68')]['id']=_0x47d87d['body'][_0x1c80('0x67')];return db['MailMessage'][_0x1c80('0x49')]({'where':{'id':_0x47d87d[_0x1c80('0x48')]['id'],'UserId':null}})[_0x1c80('0x14')](handleEntityNotFound(_0x2e643d,null))[_0x1c80('0x14')](function(_0x2b1944){if(_0x2b1944){_0x557bb8[_0x1c80('0x1d')]=_0x2b1944[_0x1c80('0x69')]({'plain':!![]});return db[_0x1c80('0x6a')][_0x1c80('0x49')]({'where':{'id':_0x2b1944[_0x1c80('0x6b')]}});}return null;})[_0x1c80('0x14')](handleEntityNotFound(_0x2e643d,null))[_0x1c80('0x14')](function(_0x485f5a){if(_0x485f5a){_0x557bb8['interaction']=_0x485f5a[_0x1c80('0x69')]({'plain':!![]});interaction_log[_0x1c80('0x15')](_0x1c80('0x86'),_0x47d87d[_0x1c80('0x6f')]['id'],_0x47d87d[_0x1c80('0x6f')][_0x1c80('0x28')],_0x47d87d[_0x1c80('0x6f')][_0x1c80('0x70')],_0x557bb8[_0x1c80('0x6d')]['id'],_0x47d87d[_0x1c80('0x4b')]?JSON[_0x1c80('0x1a')](_0x47d87d['body']):_0x1c80('0x71'));return respondWithRpcPromise(_0x1c80('0x87'),_0x1c80('0x88'),_0x557bb8);}return null;})[_0x1c80('0x14')](function(_0x1921aa){var _0x2c7345=_0x1c80('0x74')+_0x1921aa[_0x1c80('0x1d')][_0x1c80('0x75')];return db[_0x1c80('0x89')][_0x1c80('0x32')](_0x2c7345,{'type':db['Sequelize'][_0x1c80('0x77')][_0x1c80('0x78')],'raw':!![]})['then'](function(_0x49e46f){return _0x49e46f;});})[_0x1c80('0x14')](function(_0x17e16c){if(_0x17e16c){_0x557bb8[_0x1c80('0x1d')]['contact']=_0x17e16c[0x0];if(!_0x47d87d[_0x1c80('0x4b')]['UserId'])return;return db[_0x1c80('0x7a')][_0x1c80('0x49')]({'where':{'id':_0x47d87d[_0x1c80('0x4b')][_0x1c80('0x67')],'role':'agent'},'attributes':['id',_0x1c80('0x28'),_0x1c80('0x8a'),_0x1c80('0x7b'),_0x1c80('0x7c')],'raw':!![]});}return null;})[_0x1c80('0x14')](function(_0x446073){if(!_0x446073)return null;_0x557bb8[_0x1c80('0x1d')]['agent']=_0x446073;return _0x557bb8;})[_0x1c80('0x14')](function(_0x5b6835){if(_0x5b6835){_0x5b6835[_0x1c80('0x1d')][_0x1c80('0x8b')]=util[_0x1c80('0x63')]('SIP/%s',_0x47d87d['user'][_0x1c80('0x28')]);_0x5b6835['message'][_0x1c80('0x7e')]=_0x557bb8[_0x1c80('0x7e')];_0x5b6835[_0x1c80('0x1d')]['motionChannel']=_0x557bb8[_0x1c80('0x7e')];_0x5b6835['message'][_0x1c80('0x80')]=_0x1c80('0x8c');_0x5b6835[_0x1c80('0x1d')][_0x1c80('0x4b')]=htmlToText[_0x1c80('0x82')](_0x557bb8[_0x1c80('0x1d')][_0x1c80('0x4b')]);respondWithRpcPromise(_0x1c80('0x83'),'EventManager',{'event':_0x1c80('0x8d'),'message':_0x5b6835['message']},client9002);return _0x557bb8;}return null;})[_0x1c80('0x14')](respondWithResult(_0x2e643d,null))[_0x1c80('0x46')](handleError(_0x2e643d,null));};exports[_0x1c80('0x8e')]=function(_0x558afd,_0x181078){var _0x10ea99=moment()[_0x1c80('0x8f')]()[_0x1c80('0x90')]();var _0x1178d0=path[_0x1c80('0x91')](config[_0x1c80('0x92')],_0x1c80('0x93'),'files',_0x1c80('0x94'));var _0x54fa43=path['join'](config['root'],_0x1c80('0x93'),_0x1c80('0x95'),_0x1c80('0x5d'));var _0x2a42a9=util[_0x1c80('0x63')](_0x1c80('0x96'),_0x10ea99);return db['MailMessage'][_0x1c80('0x49')]({'where':{'id':_0x558afd[_0x1c80('0x48')]['id']},'attributes':['id',_0x1c80('0x4b'),'from','to','cc','bcc',_0x1c80('0x97'),_0x1c80('0x98')],'include':_0x558afd['query'][_0x1c80('0x5d')]?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})['then'](handleEntityNotFound(_0x181078,null))[_0x1c80('0x14')](function(_0x153811){if(_0x153811){var _0x55b1d6=_0x153811;var _0x3320bd={'from':_0x55b1d6[_0x1c80('0x99')],'to':_0x55b1d6['to'],'subject':_0x55b1d6[_0x1c80('0x97')],'html':htmlEntities[_0x1c80('0x9a')](_0x55b1d6[_0x1c80('0x4b')]),'headers':{'Date':moment(_0x55b1d6[_0x1c80('0x98')])['format'](_0x1c80('0x9b'))},'attachments':[]};if(_0x153811['cc']){_0x3320bd[_0x1c80('0x9c')]['Cc']=_0x153811['cc'];}if(_0x153811[_0x1c80('0x9d')]){_0x3320bd['headers'][_0x1c80('0x9e')]=_0x153811[_0x1c80('0x9d')];}return new BPromise(function(_0x7d8583,_0x307a64){if(_0x153811[_0x1c80('0x9f')]){for(var _0x3f5d23=0x0;_0x3f5d23<_0x153811[_0x1c80('0x9f')][_0x1c80('0x38')];_0x3f5d23++){var _0x1cf43c=_0x153811[_0x1c80('0x9f')][_0x3f5d23];var _0x3eb534=path[_0x1c80('0x91')](_0x54fa43,_0x1cf43c[_0x1c80('0x5f')]);if(fs['existsSync'](_0x3eb534)){_0x3320bd[_0x1c80('0x5d')]['push']({'name':_0x1cf43c[_0x1c80('0x28')],'contentType':_0x1cf43c[_0x1c80('0x2f')],'data':fs[_0x1c80('0xa0')](_0x3eb534)});}}}emlformat[_0x1c80('0xa1')](_0x3320bd,function(_0x4efa48,_0x40fbc8){if(_0x4efa48)return _0x307a64(_0x4efa48);fs[_0x1c80('0xa2')](path[_0x1c80('0x91')](_0x1178d0,_0x2a42a9),_0x40fbc8);return _0x7d8583(_0x40fbc8);});});}})[_0x1c80('0x14')](function(_0x2575fc){if(_0x2575fc){return _0x181078['download'](path[_0x1c80('0x91')](_0x1178d0,_0x2a42a9),_0x2a42a9,function(_0x24bac4){if(!_0x24bac4)fs['unlinkSync'](path['join'](_0x1178d0,_0x2a42a9));});}})[_0x1c80('0x46')](handleError(_0x181078,null));};
\ No newline at end of file
+var _0x1c18=['email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','interaction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','sequelize','fromString','rejectmessage','download','toString','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','redis','defaults','localhost','socket.io-emitter','html-entities','register','jayson/promise','client','http','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','end','sendStatus','stack','map','MailMessage','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','filter','options','includeAll','findAll','rows','show','params','include','find','body','destroy','describe','create','direction','out','MailAccount','MailAccountId','CmList','List','CmContact','Contacts','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','name','join','root','server/files/attachments','basename','List\x20not\x20found','SendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','format','UserId','user','get','MailInteraction','MailInteractionId','isNil','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','SELECT','contact','User','agent','fullname'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1c18,0xc2));var _0x81c1=function(_0x1a6156,_0x85c3c){_0x1a6156=_0x1a6156-0x0;var _0x480dda=_0x1c18[_0x1a6156];return _0x480dda;};'use strict';var emlformat=require(_0x81c1('0x0'));var moment=require(_0x81c1('0x1'));var BPromise=require(_0x81c1('0x2'));var util=require('util');var path=require(_0x81c1('0x3'));var fs=require('fs');var _=require(_0x81c1('0x4'));var Redis=require(_0x81c1('0x5'));var htmlToText=require(_0x81c1('0x6'));var qs=require(_0x81c1('0x7'));var logger=require(_0x81c1('0x8'))(_0x81c1('0x9'));var interaction_log=require(_0x81c1('0x8'))(_0x81c1('0xa'));var config=require(_0x81c1('0xb'));var db=require('../../mysqldb')['db'];config[_0x81c1('0xc')]=_[_0x81c1('0xd')](config[_0x81c1('0xc')],{'host':_0x81c1('0xe'),'port':0x18eb});var socket=require(_0x81c1('0xf'))(new Redis(config[_0x81c1('0xc')]));var htmlEntities=require(_0x81c1('0x10'));require('./mailMessage.socket')[_0x81c1('0x11')](socket);var jayson=require(_0x81c1('0x12'));var client=jayson[_0x81c1('0x13')][_0x81c1('0x14')]({'port':0x232c});var client9003=jayson[_0x81c1('0x13')][_0x81c1('0x14')]({'port':0x232b});var client9002=jayson['client'][_0x81c1('0x14')]({'port':0x232a});function respondWithRpcPromise(_0x200c74,_0x35cc30,_0x10bbe8,_0x45edfd){return new BPromise(function(_0x38abb3,_0x5f09af){var _0x52f128=_0x45edfd||client;return _0x52f128['request'](_0x200c74,_0x10bbe8)[_0x81c1('0x15')](function(_0x5e8142){logger[_0x81c1('0x16')](_0x81c1('0x17'),_0x35cc30,_0x81c1('0x18'));logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0x35cc30,_0x81c1('0x18'),JSON[_0x81c1('0x19')](_0x5e8142));if(_0x5e8142[_0x81c1('0x1a')]){if(_0x5e8142['error'][_0x81c1('0x1b')]===0x1f4){logger[_0x81c1('0x1a')]('MailMessage,\x20%s,\x20%s',_0x35cc30,_0x5e8142[_0x81c1('0x1a')][_0x81c1('0x1c')]);return _0x5f09af(_0x5e8142[_0x81c1('0x1a')][_0x81c1('0x1c')]);}logger['error'](_0x81c1('0x17'),_0x35cc30,_0x5e8142['error'][_0x81c1('0x1c')]);return _0x38abb3(_0x5e8142['error'][_0x81c1('0x1c')]);}else{logger[_0x81c1('0x16')](_0x81c1('0x17'),_0x35cc30,_0x81c1('0x18'));_0x38abb3(_0x5e8142['result']['message']);}})[_0x81c1('0x1d')](function(_0x4c4cd3){logger[_0x81c1('0x1a')](_0x81c1('0x17'),_0x35cc30,_0x4c4cd3);_0x5f09af(_0x4c4cd3);});});}function respondWithResult(_0x581c5d,_0x3e53e9){_0x3e53e9=_0x3e53e9||0xc8;return function(_0x38d602){if(_0x38d602){return _0x581c5d[_0x81c1('0x1e')](_0x3e53e9)[_0x81c1('0x1f')](_0x38d602);}};}function respondWithFilteredResult(_0x22d803,_0x414655){return function(_0x562213){if(_0x562213){var _0x1a4f10=typeof _0x414655[_0x81c1('0x20')]===_0x81c1('0x21')&&typeof _0x414655[_0x81c1('0x22')]===_0x81c1('0x21');var _0x326639=_0x562213[_0x81c1('0x23')];var _0x18b6a3=_0x1a4f10?0x0:_0x414655[_0x81c1('0x20')];var _0x49abcf=_0x1a4f10?_0x562213['count']:_0x414655[_0x81c1('0x20')]+_0x414655[_0x81c1('0x22')];var _0x2e2c26;if(_0x49abcf>=_0x326639){_0x49abcf=_0x326639;_0x2e2c26=0xc8;}else{_0x2e2c26=0xce;}_0x22d803[_0x81c1('0x1e')](_0x2e2c26);return _0x22d803[_0x81c1('0x24')](_0x81c1('0x25'),_0x18b6a3+'-'+_0x49abcf+'/'+_0x326639)[_0x81c1('0x1f')](_0x562213);}return null;};}function saveUpdates(_0x1c523d){return function(_0x40a790){if(_0x40a790){return _0x40a790[_0x81c1('0x26')](_0x1c523d)['then'](function(_0x14bf6f){return _0x14bf6f;});}return null;};}function removeEntity(_0x23b330){return function(_0x3e7cc8){if(_0x3e7cc8){return _0x3e7cc8['destroy']()['then'](function(){_0x23b330['status'](0xcc)[_0x81c1('0x27')]();});}};}function handleEntityNotFound(_0x566054){return function(_0x5cd46c){if(!_0x5cd46c){_0x566054[_0x81c1('0x28')](0x194);}return _0x5cd46c;};}function handleError(_0x72424e,_0x417609){_0x417609=_0x417609||0x1f4;return function(_0x412116){logger['error'](_0x412116[_0x81c1('0x29')]);if(_0x412116['name']){delete _0x412116['name'];}_0x72424e[_0x81c1('0x1e')](_0x417609)['send'](_0x412116);};}exports['index']=function(_0x25e3ce,_0x434a75){var _0x20196a={},_0x57552e={},_0x251d75={'count':0x0,'rows':[]};var _0x17e2c1=_[_0x81c1('0x2a')](db[_0x81c1('0x2b')][_0x81c1('0x2c')],function(_0x7446a0){return{'name':_0x7446a0[_0x81c1('0x2d')],'type':_0x7446a0[_0x81c1('0x2e')][_0x81c1('0x2f')]};});_0x57552e[_0x81c1('0x30')]=_[_0x81c1('0x2a')](_0x17e2c1,'name');_0x57552e['query']=_[_0x81c1('0x31')](_0x25e3ce['query']);_0x57552e['filters']=_['intersection'](_0x57552e[_0x81c1('0x30')],_0x57552e[_0x81c1('0x32')]);_0x20196a[_0x81c1('0x33')]=_[_0x81c1('0x34')](_0x57552e[_0x81c1('0x30')],qs['fields'](_0x25e3ce['query'][_0x81c1('0x35')]));_0x20196a[_0x81c1('0x33')]=_0x20196a[_0x81c1('0x33')][_0x81c1('0x36')]?_0x20196a['attributes']:_0x57552e[_0x81c1('0x30')];if(!_0x25e3ce[_0x81c1('0x32')][_0x81c1('0x37')]('nolimit')){_0x20196a['limit']=qs['limit'](_0x25e3ce[_0x81c1('0x32')][_0x81c1('0x22')]);_0x20196a[_0x81c1('0x20')]=qs[_0x81c1('0x20')](_0x25e3ce[_0x81c1('0x32')][_0x81c1('0x20')]);}_0x20196a[_0x81c1('0x38')]=qs['sort'](_0x25e3ce[_0x81c1('0x32')][_0x81c1('0x39')]);_0x20196a[_0x81c1('0x3a')]=qs[_0x81c1('0x3b')](_[_0x81c1('0x3c')](_0x25e3ce['query'],_0x57552e['filters']),_0x17e2c1);if(_0x25e3ce['query']['filter']){_0x20196a[_0x81c1('0x3a')]=_[_0x81c1('0x3d')](_0x20196a[_0x81c1('0x3a')],{'$or':_[_0x81c1('0x2a')](_0x17e2c1,function(_0x34529b){if(_0x34529b[_0x81c1('0x2e')]!=='VIRTUAL'){var _0x34af39={};_0x34af39[_0x34529b['name']]={'$like':'%'+_0x25e3ce[_0x81c1('0x32')][_0x81c1('0x3e')]+'%'};return _0x34af39;}})});}_0x20196a=_[_0x81c1('0x3d')]({},_0x20196a,_0x25e3ce[_0x81c1('0x3f')]);var _0x1d6cb3={'where':_0x20196a[_0x81c1('0x3a')]};return db[_0x81c1('0x2b')][_0x81c1('0x23')](_0x1d6cb3)[_0x81c1('0x15')](function(_0x50b849){_0x251d75[_0x81c1('0x23')]=_0x50b849;if(_0x25e3ce['query'][_0x81c1('0x40')]){_0x20196a['include']=[{'all':!![]}];}return db[_0x81c1('0x2b')][_0x81c1('0x41')](_0x20196a);})['then'](function(_0x32e5ad){_0x251d75[_0x81c1('0x42')]=_0x32e5ad;return _0x251d75;})[_0x81c1('0x15')](respondWithFilteredResult(_0x434a75,_0x20196a))[_0x81c1('0x1d')](handleError(_0x434a75,null));};exports[_0x81c1('0x43')]=function(_0x4be2e3,_0x40dd93){var _0x105f36={'raw':!![],'where':{'id':_0x4be2e3[_0x81c1('0x44')]['id']}},_0x39cf84={};_0x39cf84[_0x81c1('0x30')]=_[_0x81c1('0x31')](db[_0x81c1('0x2b')][_0x81c1('0x2c')]);_0x39cf84[_0x81c1('0x32')]=_[_0x81c1('0x31')](_0x4be2e3[_0x81c1('0x32')]);_0x39cf84[_0x81c1('0x3b')]=_[_0x81c1('0x34')](_0x39cf84['model'],_0x39cf84[_0x81c1('0x32')]);_0x105f36[_0x81c1('0x33')]=_['intersection'](_0x39cf84[_0x81c1('0x30')],qs[_0x81c1('0x35')](_0x4be2e3[_0x81c1('0x32')][_0x81c1('0x35')]));_0x105f36[_0x81c1('0x33')]=_0x105f36[_0x81c1('0x33')]['length']?_0x105f36[_0x81c1('0x33')]:_0x39cf84[_0x81c1('0x30')];if(_0x4be2e3['query'][_0x81c1('0x40')]){_0x105f36[_0x81c1('0x45')]=[{'all':!![]}];}_0x105f36=_[_0x81c1('0x3d')]({},_0x105f36,_0x4be2e3[_0x81c1('0x3f')]);return db[_0x81c1('0x2b')][_0x81c1('0x46')](_0x105f36)['then'](handleEntityNotFound(_0x40dd93,null))['then'](respondWithResult(_0x40dd93,null))[_0x81c1('0x1d')](handleError(_0x40dd93,null));};exports[_0x81c1('0x26')]=function(_0x32daac,_0x53ec15){if(_0x32daac[_0x81c1('0x47')]['id']){delete _0x32daac[_0x81c1('0x47')]['id'];}return db[_0x81c1('0x2b')][_0x81c1('0x46')]({'where':{'id':_0x32daac['params']['id']}})['then'](handleEntityNotFound(_0x53ec15,null))[_0x81c1('0x15')](saveUpdates(_0x32daac[_0x81c1('0x47')],null))[_0x81c1('0x15')](respondWithResult(_0x53ec15,null))['catch'](handleError(_0x53ec15,null));};exports[_0x81c1('0x48')]=function(_0xcc479,_0x51439a){return db[_0x81c1('0x2b')][_0x81c1('0x46')]({'where':{'id':_0xcc479[_0x81c1('0x44')]['id']}})[_0x81c1('0x15')](handleEntityNotFound(_0x51439a,null))['then'](removeEntity(_0x51439a,null))[_0x81c1('0x1d')](handleError(_0x51439a,null));};exports[_0x81c1('0x49')]=function(_0x1502a4,_0x265a26){return db[_0x81c1('0x2b')][_0x81c1('0x49')]()[_0x81c1('0x15')](respondWithResult(_0x265a26,null))['catch'](handleError(_0x265a26,null));};exports['create']=function(_0x325e15,_0x23659a){return db[_0x81c1('0x2b')][_0x81c1('0x4a')](_0x325e15['body'])[_0x81c1('0x15')](function(_0x27ad1d){if(_0x27ad1d){if(_0x27ad1d[_0x81c1('0x4b')]===_0x81c1('0x4c')&&!_0x27ad1d['secret']){var _0x41488d,_0x1f2e6e,_0x577401;if(_0x325e15[_0x81c1('0x47')]['to']){_0x1f2e6e=_0x325e15['body']['to']['split'](',')[0x0];}return db[_0x81c1('0x4d')]['findOne']({'where':{'id':_0x27ad1d[_0x81c1('0x4e')]},'include':[{'model':db[_0x81c1('0x4f')],'as':_0x81c1('0x50'),'include':[{'model':db[_0x81c1('0x51')],'as':_0x81c1('0x52'),'where':{'email':_0x1f2e6e},'limit':0x1,'order':[['updatedAt',_0x81c1('0x53')]]}]},{'model':db[_0x81c1('0x54')],'as':_0x81c1('0x55'),'raw':!![],'include':[{'model':db[_0x81c1('0x56')],'as':_0x81c1('0x56'),'raw':!![]}]}]})[_0x81c1('0x15')](function(_0x16d765){_0x41488d=_0x16d765;if(!_0x41488d||!_0x41488d[_0x81c1('0x55')])return;var _0x143ade=_0x41488d[_0x81c1('0x57')]();if(_0x325e15[_0x81c1('0x47')]['attachments']&&_0x325e15[_0x81c1('0x47')][_0x81c1('0x58')][_0x81c1('0x36')]){for(var _0x483d1e=0x0;_0x483d1e<_0x325e15[_0x81c1('0x47')]['attachments'][_0x81c1('0x36')];_0x483d1e+=0x1){_0x325e15[_0x81c1('0x47')]['attachments'][_0x483d1e]={'filename':_0x325e15['body'][_0x81c1('0x58')][_0x483d1e][_0x81c1('0x59')],'path':path[_0x81c1('0x5a')](config[_0x81c1('0x5b')],_0x81c1('0x5c'),_0x325e15[_0x81c1('0x47')][_0x81c1('0x58')][_0x483d1e][_0x81c1('0x5d')])};}}_0x577401={'account':_0x143ade,'message':_0x325e15[_0x81c1('0x47')]};return;})[_0x81c1('0x15')](function(){if(_0x41488d['List']){if(_0x41488d[_0x81c1('0x50')][_0x81c1('0x52')][_0x81c1('0x36')]){return _0x41488d[_0x81c1('0x50')]['Contacts'][0x0];}else{return db[_0x81c1('0x51')][_0x81c1('0x4a')](_[_0x81c1('0xd')](_0x325e15[_0x81c1('0x47')],{'firstName':_0x325e15[_0x81c1('0x47')]['to'],'email':_0x325e15[_0x81c1('0x47')]['to'],'phone':_0x325e15['body']['to'],'ListId':_0x41488d['ListId']}));}}else{throw new Error(_0x81c1('0x5e'));}})[_0x81c1('0x15')](function(){if(_0x577401){return respondWithRpcPromise(_0x81c1('0x5f'),'sendMail',_0x577401,client9003)['then'](function(_0x3adb1d){return _0x27ad1d[_0x81c1('0x26')]({'read':!![],'messageId':_0x3adb1d[_0x81c1('0x60')],'sentAt':moment()['format'](_0x81c1('0x61'))});})[_0x81c1('0x1d')](function(_0x2676a6){logger[_0x81c1('0x1a')]('%s',JSON[_0x81c1('0x19')](_0x2676a6));return _0x27ad1d;});}return _0x27ad1d;});}return _0x27ad1d;}})[_0x81c1('0x15')](respondWithResult(_0x23659a,0xc9))[_0x81c1('0x1d')](handleError(_0x23659a,null));};exports[_0x81c1('0x62')]=function(_0x274611,_0x43d5c2){var _0x1f31c3={'agent':{},'channel':_0x81c1('0x63')};if(_0x274611[_0x81c1('0x47')]['id']){delete _0x274611[_0x81c1('0x47')]['id'];}_0x274611['body']['read']=!![];_0x274611[_0x81c1('0x47')][_0x81c1('0x64')]=moment()[_0x81c1('0x65')](_0x81c1('0x61'));_0x274611[_0x81c1('0x47')]['UserId']=_0x274611[_0x81c1('0x47')][_0x81c1('0x66')]||_0x274611[_0x81c1('0x67')]['id'];_0x1f31c3['agent']['id']=_0x274611[_0x81c1('0x47')][_0x81c1('0x66')];return db[_0x81c1('0x2b')][_0x81c1('0x46')]({'where':{'id':_0x274611[_0x81c1('0x44')]['id'],'UserId':null}})[_0x81c1('0x15')](handleEntityNotFound(_0x43d5c2,null))[_0x81c1('0x15')](saveUpdates(_0x274611[_0x81c1('0x47')],null))[_0x81c1('0x15')](function(_0x615717){if(_0x615717){_0x1f31c3['message']=_0x615717[_0x81c1('0x68')]({'plain':!![]});return db[_0x81c1('0x69')]['find']({'where':{'id':_0x615717[_0x81c1('0x6a')]}});}return null;})[_0x81c1('0x15')](handleEntityNotFound(_0x43d5c2,null))[_0x81c1('0x15')](function(_0x4623c5){if(_0x4623c5){return _0x4623c5[_0x81c1('0x26')]({'UserId':_0x274611[_0x81c1('0x47')][_0x81c1('0x66')],'read1stAt':_[_0x81c1('0x6b')](_0x4623c5[_0x81c1('0x6c')])?moment()[_0x81c1('0x65')](_0x81c1('0x61')):undefined});}return null;})[_0x81c1('0x15')](function(_0x5ed529){if(_0x5ed529){_0x1f31c3['interaction']=_0x5ed529[_0x81c1('0x68')]({'plain':!![]});interaction_log[_0x81c1('0x16')](_0x81c1('0x6d'),_0x274611[_0x81c1('0x67')]['id'],_0x274611[_0x81c1('0x67')][_0x81c1('0x59')],_0x274611[_0x81c1('0x67')][_0x81c1('0x6e')],_0x1f31c3['interaction']['id'],_0x274611[_0x81c1('0x47')]?JSON[_0x81c1('0x19')](_0x274611['body']):_0x81c1('0x6f'));return respondWithRpcPromise(_0x81c1('0x70'),'acceptMessage',_0x1f31c3);}return null;})['then'](function(_0x47ee7d){var _0x51ed7c=_0x81c1('0x71')+_0x47ee7d[_0x81c1('0x1c')]['ContactId'];return db['sequelize'][_0x81c1('0x32')](_0x51ed7c,{'type':db[_0x81c1('0x72')]['QueryTypes'][_0x81c1('0x73')],'raw':!![]})[_0x81c1('0x15')](function(_0xadea38){return _0xadea38;});})[_0x81c1('0x15')](function(_0x5ac64c){if(_0x5ac64c){_0x1f31c3[_0x81c1('0x1c')][_0x81c1('0x74')]=_0x5ac64c[0x0];if(!_0x274611[_0x81c1('0x47')][_0x81c1('0x66')])return;return db[_0x81c1('0x75')][_0x81c1('0x46')]({'where':{'id':_0x274611[_0x81c1('0x47')]['UserId'],'role':_0x81c1('0x76')},'attributes':['id',_0x81c1('0x59'),_0x81c1('0x77'),_0x81c1('0x78'),_0x81c1('0x79')],'raw':!![]});}return null;})[_0x81c1('0x15')](function(_0x508c79){if(!_0x508c79)return null;_0x1f31c3[_0x81c1('0x1c')][_0x81c1('0x76')]=_0x508c79;return _0x1f31c3;})['then'](function(_0xc618c8){if(_0xc618c8){if(_0x274611['body'][_0x81c1('0x7a')]){_0x1f31c3[_0x81c1('0x1c')]['interface']=util['format'](_0x81c1('0x7b'),_0x274611['user'][_0x81c1('0x59')]);_0x1f31c3[_0x81c1('0x1c')][_0x81c1('0x7c')]=_0x1f31c3['channel'];_0x1f31c3['message'][_0x81c1('0x7d')]=_0x1f31c3['channel'];_0x1f31c3[_0x81c1('0x1c')][_0x81c1('0x7e')]=_0x81c1('0x62');_0x1f31c3[_0x81c1('0x1c')][_0x81c1('0x47')]=htmlToText['fromString'](_0x1f31c3['message']['body']);return respondWithRpcPromise(_0x81c1('0x7f'),_0x81c1('0x7f'),{'event':_0x81c1('0x80'),'message':_0x1f31c3[_0x81c1('0x1c')]},client9002)[_0x81c1('0x15')](function(){return _0x1f31c3;});}return _0x1f31c3;}return null;})['then'](respondWithResult(_0x43d5c2,null))[_0x81c1('0x1d')](handleError(_0x43d5c2,null));};exports[_0x81c1('0x81')]=function(_0x49fa98,_0x315ff8){var _0x5ae9d5={'agent':{},'channel':'mail'};if(_0x49fa98[_0x81c1('0x47')]['id']){delete _0x49fa98['body']['id'];}_0x49fa98[_0x81c1('0x47')][_0x81c1('0x66')]=_0x49fa98[_0x81c1('0x47')][_0x81c1('0x66')]||_0x49fa98['user']['id'];_0x5ae9d5[_0x81c1('0x76')]['id']=_0x49fa98[_0x81c1('0x47')][_0x81c1('0x66')];return db[_0x81c1('0x2b')][_0x81c1('0x46')]({'where':{'id':_0x49fa98[_0x81c1('0x44')]['id'],'UserId':null}})[_0x81c1('0x15')](handleEntityNotFound(_0x315ff8,null))[_0x81c1('0x15')](function(_0x130750){if(_0x130750){_0x5ae9d5[_0x81c1('0x1c')]=_0x130750['get']({'plain':!![]});return db[_0x81c1('0x69')][_0x81c1('0x46')]({'where':{'id':_0x130750[_0x81c1('0x6a')]}});}return null;})[_0x81c1('0x15')](handleEntityNotFound(_0x315ff8,null))[_0x81c1('0x15')](function(_0x4ecf6a){if(_0x4ecf6a){_0x5ae9d5[_0x81c1('0x82')]=_0x4ecf6a['get']({'plain':!![]});interaction_log[_0x81c1('0x16')](_0x81c1('0x83'),_0x49fa98[_0x81c1('0x67')]['id'],_0x49fa98[_0x81c1('0x67')][_0x81c1('0x59')],_0x49fa98['user'][_0x81c1('0x6e')],_0x5ae9d5[_0x81c1('0x82')]['id'],_0x49fa98[_0x81c1('0x47')]?JSON[_0x81c1('0x19')](_0x49fa98[_0x81c1('0x47')]):_0x81c1('0x6f'));return respondWithRpcPromise('RejectMessage',_0x81c1('0x84'),_0x5ae9d5);}return null;})[_0x81c1('0x15')](function(_0x2c6955){var _0x1ba7d4=_0x81c1('0x71')+_0x2c6955[_0x81c1('0x1c')]['ContactId'];return db[_0x81c1('0x85')]['query'](_0x1ba7d4,{'type':db[_0x81c1('0x72')]['QueryTypes'][_0x81c1('0x73')],'raw':!![]})[_0x81c1('0x15')](function(_0x4e4d36){return _0x4e4d36;});})[_0x81c1('0x15')](function(_0x555531){if(_0x555531){_0x5ae9d5[_0x81c1('0x1c')][_0x81c1('0x74')]=_0x555531[0x0];if(!_0x49fa98[_0x81c1('0x47')][_0x81c1('0x66')])return;return db['User']['find']({'where':{'id':_0x49fa98['body'][_0x81c1('0x66')],'role':_0x81c1('0x76')},'attributes':['id',_0x81c1('0x59'),'fullname',_0x81c1('0x78'),_0x81c1('0x79')],'raw':!![]});}return null;})[_0x81c1('0x15')](function(_0x58b395){if(!_0x58b395)return null;_0x5ae9d5[_0x81c1('0x1c')][_0x81c1('0x76')]=_0x58b395;return _0x5ae9d5;})[_0x81c1('0x15')](function(_0x360fdf){if(_0x360fdf){_0x360fdf[_0x81c1('0x1c')]['interface']=util[_0x81c1('0x65')](_0x81c1('0x7b'),_0x49fa98[_0x81c1('0x67')][_0x81c1('0x59')]);_0x360fdf[_0x81c1('0x1c')][_0x81c1('0x7c')]=_0x5ae9d5['channel'];_0x360fdf['message'][_0x81c1('0x7d')]=_0x5ae9d5[_0x81c1('0x7c')];_0x360fdf['message'][_0x81c1('0x7e')]=_0x81c1('0x81');_0x360fdf['message']['body']=htmlToText[_0x81c1('0x86')](_0x5ae9d5[_0x81c1('0x1c')][_0x81c1('0x47')]);respondWithRpcPromise(_0x81c1('0x7f'),_0x81c1('0x7f'),{'event':_0x81c1('0x87'),'message':_0x360fdf[_0x81c1('0x1c')]},client9002);return _0x5ae9d5;}return null;})['then'](respondWithResult(_0x315ff8,null))['catch'](handleError(_0x315ff8,null));};exports[_0x81c1('0x88')]=function(_0x4d2f2f,_0xa28be3){var _0x12a80c=moment()['unix']()[_0x81c1('0x89')]();var _0x317dcf=path[_0x81c1('0x5a')](config['root'],_0x81c1('0x8a'),_0x81c1('0x8b'),_0x81c1('0x8c'));var _0x6d5e45=path[_0x81c1('0x5a')](config['root'],_0x81c1('0x8a'),_0x81c1('0x8b'),'attachments');var _0x34d60f=util[_0x81c1('0x65')](_0x81c1('0x8d'),_0x12a80c);return db[_0x81c1('0x2b')]['find']({'where':{'id':_0x4d2f2f[_0x81c1('0x44')]['id']},'attributes':['id','body',_0x81c1('0x8e'),'to','cc',_0x81c1('0x8f'),_0x81c1('0x90'),_0x81c1('0x91')],'include':_0x4d2f2f['query']['attachments']?[{'model':db[_0x81c1('0x92')],'as':_0x81c1('0x93')}]:undefined})[_0x81c1('0x15')](handleEntityNotFound(_0xa28be3,null))['then'](function(_0x3b9e7c){if(_0x3b9e7c){var _0x26db40=_0x3b9e7c;var _0x511e85={'from':_0x26db40[_0x81c1('0x8e')],'to':_0x26db40['to'],'subject':_0x26db40[_0x81c1('0x90')],'html':htmlEntities[_0x81c1('0x94')](_0x26db40['body']),'headers':{'Date':moment(_0x26db40['createdAt'])[_0x81c1('0x65')](_0x81c1('0x95'))},'attachments':[]};if(_0x3b9e7c['cc']){_0x511e85[_0x81c1('0x96')]['Cc']=_0x3b9e7c['cc'];}if(_0x3b9e7c[_0x81c1('0x8f')]){_0x511e85[_0x81c1('0x96')]['Bcc']=_0x3b9e7c[_0x81c1('0x8f')];}return new BPromise(function(_0x1a4b13,_0x598fd1){if(_0x3b9e7c['Attachments']){for(var _0x4291f8=0x0;_0x4291f8<_0x3b9e7c[_0x81c1('0x93')]['length'];_0x4291f8++){var _0x2ac011=_0x3b9e7c[_0x81c1('0x93')][_0x4291f8];var _0x51602c=path[_0x81c1('0x5a')](_0x6d5e45,_0x2ac011[_0x81c1('0x5d')]);if(fs[_0x81c1('0x97')](_0x51602c)){_0x511e85['attachments'][_0x81c1('0x98')]({'name':_0x2ac011[_0x81c1('0x59')],'contentType':_0x2ac011['type'],'data':fs[_0x81c1('0x99')](_0x51602c)});}}}emlformat[_0x81c1('0x9a')](_0x511e85,function(_0x2d0199,_0x569b25){if(_0x2d0199)return _0x598fd1(_0x2d0199);fs[_0x81c1('0x9b')](path[_0x81c1('0x5a')](_0x317dcf,_0x34d60f),_0x569b25);return _0x1a4b13(_0x569b25);});});}})[_0x81c1('0x15')](function(_0x153991){if(_0x153991){return _0xa28be3['download'](path['join'](_0x317dcf,_0x34d60f),_0x34d60f,function(_0x59e4a0){if(!_0x59e4a0)fs[_0x81c1('0x9c')](path[_0x81c1('0x5a')](_0x317dcf,_0x34d60f));});}})[_0x81c1('0x1d')](handleError(_0xa28be3,null));};
\ No newline at end of file
index 0d80f61..8f5ff8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba99=['update','remove','emit','hasOwnProperty','hook','exports','events','MailMessage','setMaxListeners','save'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xba99,0xce));var _0x9ba9=function(_0x2bf6f9,_0x14c39b){_0x2bf6f9=_0x2bf6f9-0x0;var _0xe910af=_0xba99[_0x2bf6f9];return _0xe910af;};'use strict';var EventEmitter=require(_0x9ba9('0x0'));var MailMessage=require('../../mysqldb')['db'][_0x9ba9('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x9ba9('0x2')](0x0);var events={'afterCreate':_0x9ba9('0x3'),'afterUpdate':_0x9ba9('0x4'),'afterDestroy':_0x9ba9('0x5')};function emitEvent(_0x45a484){return function(_0x188854,_0xb4b75f,_0x10e2eb){MailMessageEvents[_0x9ba9('0x6')](_0x45a484+':'+_0x188854['id'],_0x188854);MailMessageEvents['emit'](_0x45a484,_0x188854);_0x10e2eb(null);};}for(var e in events){if(events[_0x9ba9('0x7')](e)){var event=events[e];MailMessage[_0x9ba9('0x8')](e,emitEvent(event));}}module[_0x9ba9('0x9')]=MailMessageEvents;
\ No newline at end of file
+var _0xca2d=['remove','emit','hasOwnProperty','hook','events','MailMessage','save','update'];(function(_0x48e359,_0x4ce2b8){var _0x1ece43=function(_0x542fa4){while(--_0x542fa4){_0x48e359['push'](_0x48e359['shift']());}};_0x1ece43(++_0x4ce2b8);}(_0xca2d,0x1ac));var _0xdca2=function(_0x5e2862,_0x4760eb){_0x5e2862=_0x5e2862-0x0;var _0x8dcad4=_0xca2d[_0x5e2862];return _0x8dcad4;};'use strict';var EventEmitter=require(_0xdca2('0x0'));var MailMessage=require('../../mysqldb')['db'][_0xdca2('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdca2('0x2'),'afterUpdate':_0xdca2('0x3'),'afterDestroy':_0xdca2('0x4')};function emitEvent(_0x3069a3){return function(_0x3f891f,_0x4f9dd9,_0x11a43c){MailMessageEvents['emit'](_0x3069a3+':'+_0x3f891f['id'],_0x3f891f);MailMessageEvents[_0xdca2('0x5')](_0x3069a3,_0x3f891f);_0x11a43c(null);};}for(var e in events){if(events[_0xdca2('0x6')](e)){var event=events[e];MailMessage[_0xdca2('0x7')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index 9a02d92..52dab69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0924=['define','MailMessage','mail_messages','messageId','fti_mail_messages','FULLTEXT','plainBody','fromString','body','models','get','toLowerCase','direction','out','isNil','UserId','MailInteraction','findOne','then','update','createdAt','catch','error','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./mailMessage.attributes','exports'];(function(_0x509273,_0x13fc9f){var _0x38ef40=function(_0xf8d4c9){while(--_0xf8d4c9){_0x509273['push'](_0x509273['shift']());}};_0x38ef40(++_0x13fc9f);}(_0x0924,0xdd));var _0x4092=function(_0x542ae7,_0x57332f){_0x542ae7=_0x542ae7-0x0;var _0x5a96a6=_0x0924[_0x542ae7];return _0x5a96a6;};'use strict';var _=require(_0x4092('0x0'));var util=require(_0x4092('0x1'));var logger=require(_0x4092('0x2'))(_0x4092('0x3'));var moment=require(_0x4092('0x4'));var BPromise=require(_0x4092('0x5'));var rp=require('request-promise');var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x4092('0x6'));var rimraf=require(_0x4092('0x7'));var config=require('../../config/environment');var attributes=require(_0x4092('0x8'));module[_0x4092('0x9')]=function(_0x272701,_0x2e9169){return _0x272701[_0x4092('0xa')](_0x4092('0xb'),attributes,{'tableName':_0x4092('0xc'),'paranoid':![],'indexes':[{'name':_0x4092('0xd'),'fields':[_0x4092('0xd')]},{'name':_0x4092('0xe'),'fields':['plainBody','subject'],'type':_0x4092('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x17b5e3,_0x5d5106,_0x7bae75){if(_0x17b5e3['body']){_0x17b5e3[_0x4092('0x10')]=htmlToText[_0x4092('0x11')](_0x17b5e3[_0x4092('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x7bae75(null,_0x5d5106);},'afterCreate':function(_0x3b6572,_0x375c42,_0x44cda3){var _0xb2467=_0x272701[_0x4092('0x13')];var _0x2543b9=_0x3b6572[_0x4092('0x14')]({'plain':!![]});if(_0x2543b9['direction'][_0x4092('0x15')]()==='in'||_0x2543b9[_0x4092('0x16')]['toLowerCase']()===_0x4092('0x17')&&!_0x2543b9['secret']&&!_[_0x4092('0x18')](_0x2543b9[_0x4092('0x19')])){_0xb2467[_0x4092('0x1a')][_0x4092('0x1b')]({'where':{'id':_0x2543b9['MailInteractionId']}})[_0x4092('0x1c')](function(_0x145769){if(_0x145769){_0x145769[_0x4092('0x1d')]({'lastMsgAt':_0x2543b9[_0x4092('0x1e')],'lastMsgDirection':_0x2543b9[_0x4092('0x16')]['toLowerCase']()});}})[_0x4092('0x1f')](function(_0x3e6eca){console[_0x4092('0x20')](_0x3e6eca);});}_0x44cda3();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3f58=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','plainBody','FULLTEXT','body','fromString','models','get','direction','secret','isNil','UserId','findOne','MailInteractionId','then','update','createdAt','toLowerCase','catch','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x15dcd2,_0x499acd){var _0x290e5e=function(_0x35b0c9){while(--_0x35b0c9){_0x15dcd2['push'](_0x15dcd2['shift']());}};_0x290e5e(++_0x499acd);}(_0x3f58,0xcb));var _0x83f5=function(_0x53aa00,_0x2abc0d){_0x53aa00=_0x53aa00-0x0;var _0x329e0d=_0x3f58[_0x53aa00];return _0x329e0d;};'use strict';var _=require(_0x83f5('0x0'));var util=require(_0x83f5('0x1'));var logger=require(_0x83f5('0x2'))(_0x83f5('0x3'));var moment=require(_0x83f5('0x4'));var BPromise=require(_0x83f5('0x5'));var rp=require('request-promise');var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x83f5('0x6'));var rimraf=require(_0x83f5('0x7'));var config=require(_0x83f5('0x8'));var attributes=require(_0x83f5('0x9'));module[_0x83f5('0xa')]=function(_0x514c3a,_0x49326c){return _0x514c3a[_0x83f5('0xb')](_0x83f5('0xc'),attributes,{'tableName':_0x83f5('0xd'),'paranoid':![],'indexes':[{'name':_0x83f5('0xe'),'fields':[_0x83f5('0xe')]},{'name':'fti_mail_messages','fields':[_0x83f5('0xf'),'subject'],'type':_0x83f5('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x9f4837,_0x88f3c9,_0x28f99f){if(_0x9f4837[_0x83f5('0x11')]){_0x9f4837[_0x83f5('0xf')]=htmlToText[_0x83f5('0x12')](_0x9f4837[_0x83f5('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x28f99f(null,_0x88f3c9);},'afterCreate':function(_0x459814,_0x54b8fc,_0x55272d){var _0x5e19b4=_0x514c3a[_0x83f5('0x13')];var _0x1e2de6=_0x459814[_0x83f5('0x14')]({'plain':!![]});if(_0x1e2de6[_0x83f5('0x15')]['toLowerCase']()==='in'||_0x1e2de6[_0x83f5('0x15')]['toLowerCase']()==='out'&&!_0x1e2de6[_0x83f5('0x16')]&&!_[_0x83f5('0x17')](_0x1e2de6[_0x83f5('0x18')])){_0x5e19b4['MailInteraction'][_0x83f5('0x19')]({'where':{'id':_0x1e2de6[_0x83f5('0x1a')]}})[_0x83f5('0x1b')](function(_0x4677b5){if(_0x4677b5){_0x4677b5[_0x83f5('0x1c')]({'lastMsgAt':_0x1e2de6[_0x83f5('0x1d')],'lastMsgDirection':_0x1e2de6['direction'][_0x83f5('0x1e')]()});}})[_0x83f5('0x1f')](function(_0xa56e3){console['error'](_0xa56e3);});}_0x55272d();}},'charset':_0x83f5('0x20'),'collate':_0x83f5('0x21')});};
\ No newline at end of file
index 4c5ecc3..5a26a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab40=['raw','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','localhost','register','request','then','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateMailMessage','MailMessage','create','options'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xab40,0xcd));var _0x0ab4=function(_0x1170c5,_0x57343e){_0x1170c5=_0x1170c5-0x0;var _0x769284=_0xab40[_0x1170c5];return _0x769284;};'use strict';var _=require(_0x0ab4('0x0'));var util=require(_0x0ab4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0ab4('0x2'));var db=require(_0x0ab4('0x3'))['db'];var utils=require(_0x0ab4('0x4'));var logger=require(_0x0ab4('0x5'))(_0x0ab4('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0ab4('0x7')]['http']({'port':0x232a});config[_0x0ab4('0x8')]=_[_0x0ab4('0x9')](config[_0x0ab4('0x8')],{'host':_0x0ab4('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailMessage.socket')[_0x0ab4('0xb')](socket);function respondWithRpcPromise(_0x30e726,_0x40e4d1,_0x464f7e){return new BPromise(function(_0x413d9b,_0x24c6c1){return client[_0x0ab4('0xc')](_0x30e726,_0x464f7e)[_0x0ab4('0xd')](function(_0x4e1708){logger['info'](_0x0ab4('0xe'),_0x40e4d1,'request\x20sent');logger[_0x0ab4('0xf')](_0x0ab4('0x10'),_0x40e4d1,_0x0ab4('0x11'),JSON[_0x0ab4('0x12')](_0x4e1708));if(_0x4e1708[_0x0ab4('0x13')]){if(_0x4e1708[_0x0ab4('0x13')][_0x0ab4('0x14')]===0x1f4){logger[_0x0ab4('0x13')](_0x0ab4('0xe'),_0x40e4d1,_0x4e1708[_0x0ab4('0x13')][_0x0ab4('0x15')]);return _0x24c6c1(_0x4e1708[_0x0ab4('0x13')][_0x0ab4('0x15')]);}logger[_0x0ab4('0x13')](_0x0ab4('0xe'),_0x40e4d1,_0x4e1708[_0x0ab4('0x13')][_0x0ab4('0x15')]);return _0x413d9b(_0x4e1708[_0x0ab4('0x13')]['message']);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x40e4d1,_0x0ab4('0x11'));_0x413d9b(_0x4e1708[_0x0ab4('0x16')][_0x0ab4('0x15')]);}})['catch'](function(_0x1e3fe2){logger[_0x0ab4('0x13')](_0x0ab4('0xe'),_0x40e4d1,_0x1e3fe2);_0x24c6c1(_0x1e3fe2);});});}exports[_0x0ab4('0x17')]=function(_0x4e7852){var _0x4ff836=this;return new Promise(function(_0xdb0797,_0x5b1ed5){return db[_0x0ab4('0x18')][_0x0ab4('0x19')](_0x4e7852['body'],{'raw':_0x4e7852[_0x0ab4('0x1a')]?_0x4e7852[_0x0ab4('0x1a')][_0x0ab4('0x1b')]===undefined?!![]:![]:!![]})[_0x0ab4('0xd')](function(_0x12d06d){logger['info']('CreateMailMessage',_0x4e7852);logger[_0x0ab4('0xf')](_0x0ab4('0x17'),_0x4e7852,JSON[_0x0ab4('0x12')](_0x12d06d));_0xdb0797(_0x12d06d);})[_0x0ab4('0x1c')](function(_0x4e4b80){logger[_0x0ab4('0x13')](_0x0ab4('0x17'),_0x4e4b80[_0x0ab4('0x15')],_0x4e7852);_0x5b1ed5(_0x4ff836['error'](0x1f4,_0x4e4b80['message']));});});};
\ No newline at end of file
+var _0x2da6=['defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','MailMessage','create','body','options','info','CreateMailMessage','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis'];(function(_0x2bd707,_0x1a6ed2){var _0x2d5bde=function(_0x4de250){while(--_0x4de250){_0x2bd707['push'](_0x2bd707['shift']());}};_0x2d5bde(++_0x1a6ed2);}(_0x2da6,0x1dd));var _0x62da=function(_0x4316c1,_0x5bb1ff){_0x4316c1=_0x4316c1-0x0;var _0x1bde71=_0x2da6[_0x4316c1];return _0x1bde71;};'use strict';var _=require(_0x62da('0x0'));var util=require(_0x62da('0x1'));var moment=require(_0x62da('0x2'));var BPromise=require(_0x62da('0x3'));var rs=require(_0x62da('0x4'));var fs=require('fs');var Redis=require(_0x62da('0x5'));var db=require(_0x62da('0x6'))['db'];var utils=require(_0x62da('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x62da('0x8'));var jayson=require(_0x62da('0x9'));var client=jayson[_0x62da('0xa')][_0x62da('0xb')]({'port':0x232a});config[_0x62da('0xc')]=_[_0x62da('0xd')](config[_0x62da('0xc')],{'host':_0x62da('0xe'),'port':0x18eb});var socket=require(_0x62da('0xf'))(new Redis(config['redis']));require(_0x62da('0x10'))[_0x62da('0x11')](socket);function respondWithRpcPromise(_0x2a3d7c,_0x1b68f8,_0x4cd5a2){return new BPromise(function(_0x241090,_0x3afe3b){return client[_0x62da('0x12')](_0x2a3d7c,_0x4cd5a2)[_0x62da('0x13')](function(_0x23be32){logger['info'](_0x62da('0x14'),_0x1b68f8,_0x62da('0x15'));logger[_0x62da('0x16')](_0x62da('0x17'),_0x1b68f8,_0x62da('0x15'),JSON['stringify'](_0x23be32));if(_0x23be32['error']){if(_0x23be32[_0x62da('0x18')][_0x62da('0x19')]===0x1f4){logger[_0x62da('0x18')](_0x62da('0x14'),_0x1b68f8,_0x23be32[_0x62da('0x18')][_0x62da('0x1a')]);return _0x3afe3b(_0x23be32[_0x62da('0x18')][_0x62da('0x1a')]);}logger[_0x62da('0x18')](_0x62da('0x14'),_0x1b68f8,_0x23be32[_0x62da('0x18')][_0x62da('0x1a')]);return _0x241090(_0x23be32[_0x62da('0x18')][_0x62da('0x1a')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x1b68f8,_0x62da('0x15'));_0x241090(_0x23be32['result'][_0x62da('0x1a')]);}})[_0x62da('0x1b')](function(_0x15b8d0){logger['error'](_0x62da('0x14'),_0x1b68f8,_0x15b8d0);_0x3afe3b(_0x15b8d0);});});}exports['CreateMailMessage']=function(_0x2e6b7e){var _0x37c15d=this;return new Promise(function(_0x3b90c8,_0x2f7b01){return db[_0x62da('0x1c')][_0x62da('0x1d')](_0x2e6b7e[_0x62da('0x1e')],{'raw':_0x2e6b7e[_0x62da('0x1f')]?_0x2e6b7e[_0x62da('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0x62da('0x13')](function(_0x866a76){logger[_0x62da('0x20')](_0x62da('0x21'),_0x2e6b7e);logger[_0x62da('0x16')](_0x62da('0x21'),_0x2e6b7e,JSON[_0x62da('0x22')](_0x866a76));_0x3b90c8(_0x866a76);})['catch'](function(_0x55fd3b){logger['error'](_0x62da('0x21'),_0x55fd3b[_0x62da('0x1a')],_0x2e6b7e);_0x2f7b01(_0x37c15d[_0x62da('0x18')](0x1f4,_0x55fd3b[_0x62da('0x1a')]));});});};
\ No newline at end of file
index 25bfef1..9872634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a2=['remove','update','emit','register','length','mailMessage:','./mailMessage.events'];(function(_0x182701,_0x212b22){var _0x34fb02=function(_0x4f5a00){while(--_0x4f5a00){_0x182701['push'](_0x182701['shift']());}};_0x34fb02(++_0x212b22);}(_0x97a2,0x1b1));var _0x297a=function(_0x19be0b,_0x172366){_0x19be0b=_0x19be0b-0x0;var _0x4707de=_0x97a2[_0x19be0b];return _0x4707de;};'use strict';var MailMessageEvents=require(_0x297a('0x0'));var events=['save',_0x297a('0x1'),_0x297a('0x2')];function createListener(_0x25fc7c,_0xfb9aa2){return function(_0x14d6d3){_0xfb9aa2[_0x297a('0x3')](_0x25fc7c,_0x14d6d3);};}function removeListener(_0x2cf730,_0x42a0a0){return function(){MailMessageEvents['removeListener'](_0x2cf730,_0x42a0a0);};}exports[_0x297a('0x4')]=function(_0x2a420b){for(var _0x2c1f41=0x0,_0x8cbc92=events[_0x297a('0x5')];_0x2c1f41<_0x8cbc92;_0x2c1f41++){var _0x3d9c6a=events[_0x2c1f41];var _0x5ab57b=createListener(_0x297a('0x6')+_0x3d9c6a,_0x2a420b);MailMessageEvents['on'](_0x3d9c6a,_0x5ab57b);}};
\ No newline at end of file
+var _0x072f=['removeListener','length','mailMessage:','save','remove','update'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x072f,0x1a7));var _0xf072=function(_0x2cf07e,_0x108442){_0x2cf07e=_0x2cf07e-0x0;var _0x4cfc65=_0x072f[_0x2cf07e];return _0x4cfc65;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xf072('0x0'),_0xf072('0x1'),_0xf072('0x2')];function createListener(_0x2bab21,_0x19015f){return function(_0x50ea00){_0x19015f['emit'](_0x2bab21,_0x50ea00);};}function removeListener(_0x35cf74,_0x105a7c){return function(){MailMessageEvents[_0xf072('0x3')](_0x35cf74,_0x105a7c);};}exports['register']=function(_0x2b278f){for(var _0xe1502d=0x0,_0x9dd048=events[_0xf072('0x4')];_0xe1502d<_0x9dd048;_0xe1502d++){var _0x2bca9c=events[_0xe1502d];var _0x40ebb9=createListener(_0xf072('0x5')+_0x2bca9c,_0x2b278f);MailMessageEvents['on'](_0x2bca9c,_0x40ebb9);}};
\ No newline at end of file
index 4028151..acfe7f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff21=['util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports'];(function(_0x15f041,_0x32acb1){var _0x16175a=function(_0x55a924){while(--_0x55a924){_0x15f041['push'](_0x15f041['shift']());}};_0x16175a(++_0x32acb1);}(_0xff21,0x91));var _0x1ff2=function(_0x6cf3b6,_0x4b7560){_0x6cf3b6=_0x6cf3b6-0x0;var _0xdbe948=_0xff21[_0x6cf3b6];return _0xdbe948;};'use strict';var multer=require('multer');var util=require(_0x1ff2('0x0'));var path=require('path');var timeout=require(_0x1ff2('0x1'));var express=require(_0x1ff2('0x2'));var router=express[_0x1ff2('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1ff2('0x4'));var interaction=require(_0x1ff2('0x5'));var config=require(_0x1ff2('0x6'));var controller=require(_0x1ff2('0x7'));router[_0x1ff2('0x8')]('/',auth[_0x1ff2('0x9')](),controller[_0x1ff2('0xa')]);router[_0x1ff2('0x8')](_0x1ff2('0xb'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0xc')]);router[_0x1ff2('0x8')]('/:id',auth[_0x1ff2('0x9')](),controller['show']);router['get'](_0x1ff2('0xd'),auth[_0x1ff2('0x9')](),controller['getMembers']);router[_0x1ff2('0x8')](_0x1ff2('0xe'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0xf')]);router[_0x1ff2('0x8')](_0x1ff2('0x10'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0x11')]);router[_0x1ff2('0x12')]('/',auth[_0x1ff2('0x9')](),controller['create']);router[_0x1ff2('0x12')](_0x1ff2('0xe'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0x13')]);router[_0x1ff2('0x12')]('/:id/users',auth['isAuthenticated'](),controller[_0x1ff2('0x14')]);router[_0x1ff2('0x15')](_0x1ff2('0x16'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0x17')]);router[_0x1ff2('0x18')](_0x1ff2('0x16'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0x19')]);router['delete'](_0x1ff2('0xe'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0x1a')]);router[_0x1ff2('0x18')](_0x1ff2('0x10'),auth[_0x1ff2('0x9')](),controller[_0x1ff2('0x1b')]);module[_0x1ff2('0x1c')]=router;
\ No newline at end of file
+var _0x76ad=['../../components/auth/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','delete','destroy','removeAgents','exports','multer','util','path','express','Router','fs-extra'];(function(_0x92dbd0,_0x2c986e){var _0x40759f=function(_0x8ab1f4){while(--_0x8ab1f4){_0x92dbd0['push'](_0x92dbd0['shift']());}};_0x40759f(++_0x2c986e);}(_0x76ad,0xc5));var _0xd76a=function(_0x43616d,_0xf7203c){_0x43616d=_0x43616d-0x0;var _0x5d0681=_0x76ad[_0x43616d];return _0x5d0681;};'use strict';var multer=require(_0xd76a('0x0'));var util=require(_0xd76a('0x1'));var path=require(_0xd76a('0x2'));var timeout=require('connect-timeout');var express=require(_0xd76a('0x3'));var router=express[_0xd76a('0x4')]();var fs_extra=require(_0xd76a('0x5'));var auth=require(_0xd76a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd76a('0x7'));var controller=require(_0xd76a('0x8'));router[_0xd76a('0x9')]('/',auth[_0xd76a('0xa')](),controller[_0xd76a('0xb')]);router[_0xd76a('0x9')](_0xd76a('0xc'),auth[_0xd76a('0xa')](),controller[_0xd76a('0xd')]);router[_0xd76a('0x9')]('/:id',auth[_0xd76a('0xa')](),controller['show']);router[_0xd76a('0x9')](_0xd76a('0xe'),auth[_0xd76a('0xa')](),controller[_0xd76a('0xf')]);router['get'](_0xd76a('0x10'),auth['isAuthenticated'](),controller[_0xd76a('0x11')]);router['get'](_0xd76a('0x12'),auth[_0xd76a('0xa')](),controller[_0xd76a('0x13')]);router['post']('/',auth[_0xd76a('0xa')](),controller[_0xd76a('0x14')]);router[_0xd76a('0x15')](_0xd76a('0x10'),auth[_0xd76a('0xa')](),controller[_0xd76a('0x16')]);router[_0xd76a('0x15')]('/:id/users',auth[_0xd76a('0xa')](),controller[_0xd76a('0x17')]);router[_0xd76a('0x18')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd76a('0x19')]('/:id',auth[_0xd76a('0xa')](),controller[_0xd76a('0x1a')]);router[_0xd76a('0x19')]('/:id/teams',auth[_0xd76a('0xa')](),controller['removeTeams']);router[_0xd76a('0x19')](_0xd76a('0x12'),auth[_0xd76a('0xa')](),controller[_0xd76a('0x1b')]);module[_0xd76a('0x1c')]=router;
\ No newline at end of file
index cbaa944..169063c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa10e=['ENUM','rrmemory','beepall','exports','name','STRING','INTEGER'];(function(_0x12fa9f,_0x2cbe92){var _0xcba002=function(_0x2ca9e8){while(--_0x2ca9e8){_0x12fa9f['push'](_0x12fa9f['shift']());}};_0xcba002(++_0x2cbe92);}(_0xa10e,0x9d));var _0xea10=function(_0x51cc9e,_0x37a294){_0x51cc9e=_0x51cc9e-0x0;var _0x5f3474=_0xa10e[_0x51cc9e];return _0x5f3474;};'use strict';var Sequelize=require('sequelize');module[_0xea10('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xea10('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xea10('0x2')]},'timeout':{'type':Sequelize[_0xea10('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xea10('0x4')](_0xea10('0x5'),_0xea10('0x6'),'roundrobin')}};
\ No newline at end of file
+var _0x400c=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x3309bc,_0x3cc5ef){var _0xb77040=function(_0x48dc41){while(--_0x48dc41){_0x3309bc['push'](_0x3309bc['shift']());}};_0xb77040(++_0x3cc5ef);}(_0x400c,0xcb));var _0xc400=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x400c[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require(_0xc400('0x0'));module[_0xc400('0x1')]={'name':{'type':Sequelize[_0xc400('0x2')],'unique':_0xc400('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc400('0x2')]},'timeout':{'type':Sequelize[_0xc400('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc400('0x5')](_0xc400('0x6'),_0xc400('0x7'),_0xc400('0x8'))}};
\ No newline at end of file
index 4b471c1..2b80576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e1=['updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','Agents','online','voicePause','flatMap','UserMailQueue','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','tq.TeamId','from','join','user_has_teams','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','sequelize','QueryTypes','SELECT','includes','all','union','compact','value','transaction','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','MailQueues','UserProfileResource','stack','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','user','role','UserProfileSection','autoAssociation','error','update','describe','getMembers','MailQueueId','User','findAndCountAll','UserId','agent','mailPause'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0x28e1,0x1d4));var _0x128e=function(_0x590551,_0x156d1d){_0x590551=_0x590551-0x0;var _0x2d92d2=_0x28e1[_0x590551];return _0x2d92d2;};'use strict';var emlformat=require(_0x128e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x128e('0x1'));var jsonpatch=require(_0x128e('0x2'));var rp=require(_0x128e('0x3'));var moment=require('moment');var BPromise=require(_0x128e('0x4'));var Mustache=require(_0x128e('0x5'));var util=require('util');var path=require(_0x128e('0x6'));var sox=require(_0x128e('0x7'));var csv=require(_0x128e('0x8'));var ejs=require(_0x128e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x128e('0xa'));var squel=require('squel');var crypto=require(_0x128e('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x128e('0x8'));var querystring=require(_0x128e('0xc'));var Papa=require(_0x128e('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x128e('0xe'));var as=require(_0x128e('0xf'));var hardwareService=require(_0x128e('0x10'));var logger=require('../../config/logger')(_0x128e('0x11'));var utils=require(_0x128e('0x12'));var config=require(_0x128e('0x13'));var licenseUtil=require(_0x128e('0x14'));var db=require(_0x128e('0x15'))['db'];config[_0x128e('0x16')]=_[_0x128e('0x17')](config[_0x128e('0x16')],{'host':_0x128e('0x18'),'port':0x18eb});var socket=require(_0x128e('0x19'))(new Redis(config[_0x128e('0x16')]));require(_0x128e('0x1a'))[_0x128e('0x1b')](socket);function respondWithStatusCode(_0x4f47cc,_0x2794b9){_0x2794b9=_0x2794b9||0xcc;return function(_0x590bf4){if(_0x590bf4){return _0x4f47cc[_0x128e('0x1c')](_0x2794b9);}return _0x4f47cc['status'](_0x2794b9)[_0x128e('0x1d')]();};}function respondWithResult(_0x4b4664,_0x1a6e88){_0x1a6e88=_0x1a6e88||0xc8;return function(_0x26e95e){if(_0x26e95e){return _0x4b4664[_0x128e('0x1e')](_0x1a6e88)[_0x128e('0x1f')](_0x26e95e);}};}function respondWithFilteredResult(_0x436acf,_0x207369){return function(_0x3c0bc6){if(_0x3c0bc6){var _0x548b9d=typeof _0x207369[_0x128e('0x20')]===_0x128e('0x21')&&typeof _0x207369[_0x128e('0x22')]===_0x128e('0x21');var _0x4b08e7=_0x3c0bc6[_0x128e('0x23')];var _0x2bc68e=_0x548b9d?0x0:_0x207369[_0x128e('0x20')];var _0x2b4cf4=_0x548b9d?_0x3c0bc6['count']:_0x207369['offset']+_0x207369['limit'];var _0x163433;if(_0x2b4cf4>=_0x4b08e7){_0x2b4cf4=_0x4b08e7;_0x163433=0xc8;}else{_0x163433=0xce;}_0x436acf[_0x128e('0x1e')](_0x163433);return _0x436acf[_0x128e('0x24')]('Content-Range',_0x2bc68e+'-'+_0x2b4cf4+'/'+_0x4b08e7)['json'](_0x3c0bc6);}return null;};}function patchUpdates(_0x39ded9){return function(_0x1aed19){try{jsonpatch[_0x128e('0x25')](_0x1aed19,_0x39ded9,!![]);}catch(_0xff1bbe){return BPromise[_0x128e('0x26')](_0xff1bbe);}return _0x1aed19[_0x128e('0x27')]();};}function saveUpdates(_0x4c60e9,_0x32ce13){return function(_0x22367b){if(_0x22367b){return _0x22367b['update'](_0x4c60e9)[_0x128e('0x28')](function(_0x40699d){return _0x40699d;});}return null;};}function removeEntity(_0x1aead8,_0x18fb9a){return function(_0x3e7c38){if(_0x3e7c38){return _0x3e7c38[_0x128e('0x29')]()['then'](function(){var _0x3ce9ea=_0x3e7c38[_0x128e('0x2a')]({'plain':!![]});var _0x582c80=_0x128e('0x2b');return db[_0x128e('0x2c')][_0x128e('0x29')]({'where':{'type':_0x582c80,'resourceId':_0x3ce9ea['id']}})[_0x128e('0x28')](function(){return _0x3e7c38;});})[_0x128e('0x28')](function(){_0x1aead8[_0x128e('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc746fc,_0x196d35){return function(_0x2034e2){if(!_0x2034e2){_0xc746fc[_0x128e('0x1c')](0x194);}return _0x2034e2;};}function handleError(_0x141fd1,_0x3a9b40){_0x3a9b40=_0x3a9b40||0x1f4;return function(_0x4ddd4d){logger['error'](_0x4ddd4d[_0x128e('0x2d')]);if(_0x4ddd4d[_0x128e('0x2e')]){delete _0x4ddd4d['name'];}_0x141fd1[_0x128e('0x1e')](_0x3a9b40)[_0x128e('0x2f')](_0x4ddd4d);};}exports[_0x128e('0x30')]=function(_0xf9edcb,_0x14778c){var _0x290d43={},_0x199cdf={},_0x2b1358={'count':0x0,'rows':[]};var _0xb6d3c4=_[_0x128e('0x31')](db[_0x128e('0x32')][_0x128e('0x33')],function(_0x55423a){return{'name':_0x55423a[_0x128e('0x34')],'type':_0x55423a[_0x128e('0x35')][_0x128e('0x36')]};});_0x199cdf[_0x128e('0x37')]=_[_0x128e('0x31')](_0xb6d3c4,_0x128e('0x2e'));_0x199cdf[_0x128e('0x38')]=_[_0x128e('0x39')](_0xf9edcb[_0x128e('0x38')]);_0x199cdf[_0x128e('0x3a')]=_[_0x128e('0x3b')](_0x199cdf[_0x128e('0x37')],_0x199cdf[_0x128e('0x38')]);_0x290d43[_0x128e('0x3c')]=_['intersection'](_0x199cdf[_0x128e('0x37')],qs[_0x128e('0x3d')](_0xf9edcb[_0x128e('0x38')][_0x128e('0x3d')]));_0x290d43[_0x128e('0x3c')]=_0x290d43[_0x128e('0x3c')][_0x128e('0x3e')]?_0x290d43[_0x128e('0x3c')]:_0x199cdf[_0x128e('0x37')];if(!_0xf9edcb[_0x128e('0x38')][_0x128e('0x3f')](_0x128e('0x40'))){_0x290d43[_0x128e('0x22')]=qs['limit'](_0xf9edcb['query'][_0x128e('0x22')]);_0x290d43['offset']=qs['offset'](_0xf9edcb[_0x128e('0x38')]['offset']);}_0x290d43[_0x128e('0x41')]=qs[_0x128e('0x42')](_0xf9edcb[_0x128e('0x38')][_0x128e('0x42')]);_0x290d43[_0x128e('0x43')]=qs['filters'](_[_0x128e('0x44')](_0xf9edcb[_0x128e('0x38')],_0x199cdf[_0x128e('0x3a')]),_0xb6d3c4);if(_0xf9edcb[_0x128e('0x38')][_0x128e('0x45')]){_0x290d43[_0x128e('0x43')]=_['merge'](_0x290d43[_0x128e('0x43')],{'$or':_[_0x128e('0x31')](_0xb6d3c4,function(_0x1172e6){if(_0x1172e6['type']!==_0x128e('0x46')){var _0x1b4e42={};_0x1b4e42[_0x1172e6[_0x128e('0x2e')]]={'$like':'%'+_0xf9edcb[_0x128e('0x38')][_0x128e('0x45')]+'%'};return _0x1b4e42;}})});}_0x290d43=_[_0x128e('0x47')]({},_0x290d43,_0xf9edcb[_0x128e('0x48')]);var _0x39fdd5={'where':_0x290d43[_0x128e('0x43')]};return db['MailQueue'][_0x128e('0x23')](_0x39fdd5)[_0x128e('0x28')](function(_0x4229fc){_0x2b1358['count']=_0x4229fc;if(_0xf9edcb[_0x128e('0x38')][_0x128e('0x49')]){_0x290d43[_0x128e('0x4a')]=[{'all':!![]}];}return db[_0x128e('0x32')][_0x128e('0x4b')](_0x290d43);})[_0x128e('0x28')](function(_0x3161cf){_0x2b1358[_0x128e('0x4c')]=_0x3161cf;return _0x2b1358;})['then'](respondWithFilteredResult(_0x14778c,_0x290d43))[_0x128e('0x4d')](handleError(_0x14778c,null));};exports['show']=function(_0x517b16,_0x3df256){var _0x226661={'raw':!![],'where':{'id':_0x517b16[_0x128e('0x4e')]['id']}},_0x293d42={};_0x293d42[_0x128e('0x37')]=_[_0x128e('0x39')](db[_0x128e('0x32')][_0x128e('0x33')]);_0x293d42[_0x128e('0x38')]=_[_0x128e('0x39')](_0x517b16[_0x128e('0x38')]);_0x293d42['filters']=_[_0x128e('0x3b')](_0x293d42[_0x128e('0x37')],_0x293d42[_0x128e('0x38')]);_0x226661['attributes']=_[_0x128e('0x3b')](_0x293d42[_0x128e('0x37')],qs['fields'](_0x517b16['query'][_0x128e('0x3d')]));_0x226661[_0x128e('0x3c')]=_0x226661[_0x128e('0x3c')][_0x128e('0x3e')]?_0x226661[_0x128e('0x3c')]:_0x293d42['model'];if(_0x517b16[_0x128e('0x38')][_0x128e('0x49')]){_0x226661[_0x128e('0x4a')]=[{'all':!![]}];}_0x226661=_[_0x128e('0x47')]({},_0x226661,_0x517b16[_0x128e('0x48')]);return db[_0x128e('0x32')][_0x128e('0x4f')](_0x226661)[_0x128e('0x28')](handleEntityNotFound(_0x3df256,null))['then'](respondWithResult(_0x3df256,null))[_0x128e('0x4d')](handleError(_0x3df256,null));};exports['create']=function(_0x2f91cd,_0x286da2){return db[_0x128e('0x32')][_0x128e('0x50')](_0x2f91cd[_0x128e('0x51')],{})[_0x128e('0x28')](function(_0x5563a0){var _0x2172da=_0x2f91cd[_0x128e('0x52')]['get']({'plain':!![]});if(!_0x2172da)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2172da[_0x128e('0x53')]===_0x128e('0x52')){var _0x2ca94a=_0x5563a0[_0x128e('0x2a')]({'plain':!![]});var _0x13b524='MailQueues';return db[_0x128e('0x54')][_0x128e('0x4f')]({'where':{'name':_0x13b524,'userProfileId':_0x2172da['userProfileId']},'raw':!![]})[_0x128e('0x28')](function(_0x5919ca){if(_0x5919ca&&_0x5919ca[_0x128e('0x55')]===0x0){return db[_0x128e('0x2c')][_0x128e('0x50')]({'name':_0x2ca94a[_0x128e('0x2e')],'resourceId':_0x2ca94a['id'],'type':_0x5919ca[_0x128e('0x2e')],'sectionId':_0x5919ca['id']},{})['then'](function(){return _0x5563a0;});}else{return _0x5563a0;}})[_0x128e('0x4d')](function(_0x168523){logger[_0x128e('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x168523);throw _0x168523;});}return _0x5563a0;})[_0x128e('0x28')](respondWithResult(_0x286da2,0xc9))[_0x128e('0x4d')](handleError(_0x286da2,null));};exports[_0x128e('0x57')]=function(_0x1f3bc9,_0x5ad610){if(_0x1f3bc9[_0x128e('0x51')]['id']){delete _0x1f3bc9[_0x128e('0x51')]['id'];}return db['MailQueue'][_0x128e('0x4f')]({'where':{'id':_0x1f3bc9[_0x128e('0x4e')]['id']}})[_0x128e('0x28')](handleEntityNotFound(_0x5ad610,null))[_0x128e('0x28')](saveUpdates(_0x1f3bc9[_0x128e('0x51')],null))[_0x128e('0x28')](respondWithResult(_0x5ad610,null))[_0x128e('0x4d')](handleError(_0x5ad610,null));};exports[_0x128e('0x29')]=function(_0xee7d4b,_0x377a4e){return db[_0x128e('0x32')][_0x128e('0x4f')]({'where':{'id':_0xee7d4b[_0x128e('0x4e')]['id']}})[_0x128e('0x28')](handleEntityNotFound(_0x377a4e,null))['then'](removeEntity(_0x377a4e,null))[_0x128e('0x4d')](handleError(_0x377a4e,null));};exports[_0x128e('0x58')]=function(_0x3aa643,_0x261de9){return db[_0x128e('0x32')]['describe']()['then'](respondWithResult(_0x261de9,null))['catch'](handleError(_0x261de9,null));};exports[_0x128e('0x59')]=function(_0x321ee2,_0x4ffbad,_0x350016){var _0x23a760={'raw':!![],'where':{}},_0x82af32={},_0x1d5ab1;return db[_0x128e('0x32')]['findOne']({'where':{'id':_0x321ee2['params']['id']}})['then'](handleEntityNotFound(_0x4ffbad,null))[_0x128e('0x28')](function(_0x9cb756){if(_0x9cb756){_0x1d5ab1=_0x9cb756['get']({'plain':!![]});_0x82af32[_0x128e('0x37')]=_['keys'](db['UserMailQueue'][_0x128e('0x33')]);_0x82af32[_0x128e('0x38')]=_[_0x128e('0x39')](_0x321ee2[_0x128e('0x38')]);_0x82af32[_0x128e('0x3a')]=_[_0x128e('0x3b')](_0x82af32[_0x128e('0x37')],_0x82af32[_0x128e('0x38')]);_0x23a760[_0x128e('0x3c')]=_['intersection'](_0x82af32[_0x128e('0x37')],qs['fields'](_0x321ee2[_0x128e('0x38')][_0x128e('0x3d')]));_0x23a760['attributes']=_0x23a760['attributes'][_0x128e('0x3e')]?_0x23a760['attributes']:_0x82af32[_0x128e('0x37')];if(!_0x321ee2[_0x128e('0x38')][_0x128e('0x3f')]('nolimit')){_0x23a760[_0x128e('0x22')]=qs[_0x128e('0x22')](_0x321ee2['query'][_0x128e('0x22')]);_0x23a760[_0x128e('0x20')]=qs[_0x128e('0x20')](_0x321ee2[_0x128e('0x38')][_0x128e('0x20')]);}_0x23a760[_0x128e('0x41')]=qs[_0x128e('0x42')](_0x321ee2[_0x128e('0x38')]['sort']);_0x23a760['where']=qs[_0x128e('0x3a')](_[_0x128e('0x44')](_0x321ee2['query'],_0x82af32['filters']));_0x23a760[_0x128e('0x43')][_0x128e('0x5a')]=_0x9cb756['id'];if(_0x321ee2[_0x128e('0x38')]['filter']){_0x23a760[_0x128e('0x43')]=_[_0x128e('0x47')](_0x23a760[_0x128e('0x43')],{'$or':_[_0x128e('0x31')](_0x23a760[_0x128e('0x3c')],function(_0x2a59ff){var _0x559c83={};_0x559c83[_0x2a59ff]={'$like':'%'+_0x321ee2[_0x128e('0x38')][_0x128e('0x45')]+'%'};return _0x559c83;})});}_0x23a760=_['merge']({},_0x23a760,_0x321ee2['options']);return db['UserMailQueue']['findAll'](_0x23a760);}})[_0x128e('0x28')](function(_0x5082f6){if(_0x5082f6){return db[_0x128e('0x5b')][_0x128e('0x5c')]({'where':{'id':_['map'](_0x5082f6,_0x128e('0x5d')),'role':_0x128e('0x5e')},'attributes':['id',_0x128e('0x2e'),_0x128e('0x5f'),_0x128e('0x60'),_0x128e('0x61')]});}})[_0x128e('0x28')](function(_0x515160){if(_0x515160){return{'count':_0x515160[_0x128e('0x23')],'rows':_['map'](_0x515160[_0x128e('0x4c')],function(_0x21c43b){return{'membername':_0x21c43b['name'],'UserId':_0x21c43b['id'],'queue_name':_0x1d5ab1[_0x128e('0x2e')],'MailQueueId':_0x1d5ab1['id'],'interface':util[_0x128e('0x62')](_0x128e('0x63'),_0x128e('0x64'),_0x21c43b[_0x128e('0x2e')]),'penalty':0x0,'paused':_0x21c43b[_0x128e('0x5f')],'createdAt':_0x21c43b['createdAt'],'updatedAt':_0x21c43b[_0x128e('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x128e('0x28')](respondWithFilteredResult(_0x4ffbad,_0x23a760))[_0x128e('0x4d')](handleError(_0x4ffbad,null));};exports[_0x128e('0x65')]=function(_0x475e8c,_0x242581,_0x510d62){var _0x400ddf={};var _0x4b4580={};var _0x2e1d39;var _0x1df818;return db[_0x128e('0x32')][_0x128e('0x66')]({'where':{'id':_0x475e8c['params']['id']}})[_0x128e('0x28')](handleEntityNotFound(_0x242581,null))['then'](function(_0x57865d){if(_0x57865d){_0x2e1d39=_0x57865d;_0x4b4580[_0x128e('0x37')]=_[_0x128e('0x39')](db[_0x128e('0x67')][_0x128e('0x33')]);_0x4b4580[_0x128e('0x38')]=_[_0x128e('0x39')](_0x475e8c[_0x128e('0x38')]);_0x4b4580[_0x128e('0x3a')]=_[_0x128e('0x3b')](_0x4b4580[_0x128e('0x37')],_0x4b4580[_0x128e('0x38')]);_0x400ddf[_0x128e('0x3c')]=_[_0x128e('0x3b')](_0x4b4580['model'],qs[_0x128e('0x3d')](_0x475e8c[_0x128e('0x38')]['fields']));_0x400ddf[_0x128e('0x3c')]=_0x400ddf[_0x128e('0x3c')][_0x128e('0x3e')]?_0x400ddf['attributes']:_0x4b4580[_0x128e('0x37')];_0x400ddf[_0x128e('0x41')]=qs[_0x128e('0x42')](_0x475e8c[_0x128e('0x38')]['sort']);_0x400ddf['where']=qs[_0x128e('0x3a')](_[_0x128e('0x44')](_0x475e8c[_0x128e('0x38')],_0x4b4580['filters']));if(_0x475e8c[_0x128e('0x38')][_0x128e('0x45')]){_0x400ddf['where']=_[_0x128e('0x47')](_0x400ddf[_0x128e('0x43')],{'$or':_[_0x128e('0x31')](_0x400ddf[_0x128e('0x3c')],function(_0x48d7f6){var _0x10dddd={};_0x10dddd[_0x48d7f6]={'$like':'%'+_0x475e8c['query']['filter']+'%'};return _0x10dddd;})});}_0x400ddf=_[_0x128e('0x47')]({},_0x400ddf,_0x475e8c['options']);return _0x2e1d39[_0x128e('0x65')](_0x400ddf);}})[_0x128e('0x28')](function(_0xbc31e4){if(_0xbc31e4){_0x1df818=_0xbc31e4[_0x128e('0x3e')];if(!_0x475e8c[_0x128e('0x38')][_0x128e('0x3f')](_0x128e('0x40'))){_0x400ddf[_0x128e('0x22')]=qs[_0x128e('0x22')](_0x475e8c[_0x128e('0x38')]['limit']);_0x400ddf[_0x128e('0x20')]=qs[_0x128e('0x20')](_0x475e8c[_0x128e('0x38')][_0x128e('0x20')]);}return _0x2e1d39[_0x128e('0x65')](_0x400ddf);}})[_0x128e('0x28')](function(_0x33696a){if(_0x33696a){return _0x33696a?{'count':_0x1df818,'rows':_0x33696a}:null;}})[_0x128e('0x28')](respondWithResult(_0x242581,null))['catch'](handleError(_0x242581,null));};exports[_0x128e('0x68')]=function(_0x4d192a,_0x528e9b,_0x3e1acb){var _0x310ede=_0x4d192a['body'][_0x128e('0x69')];return db['Team']['findAll']({'where':{'id':_0x310ede},'attributes':['id'],'include':[{'model':db[_0x128e('0x5b')],'as':_0x128e('0x6a'),'attributes':['id',_0x128e('0x2e'),_0x128e('0x6b'),_0x128e('0x6c'),'interface'],'raw':!![]}]})[_0x128e('0x28')](function(_0x5b76fd){if(_0x5b76fd){var _0x1f7717=_[_0x128e('0x6d')](_0x5b76fd,function(_0x41bce8){var _0xc4b7ab=_0x41bce8[_0x128e('0x2a')]({'plain':!![]});return _0xc4b7ab['Agents'];});return db[_0x128e('0x32')][_0x128e('0x4f')]({'where':{'id':_0x4d192a[_0x128e('0x4e')]['id']}})[_0x128e('0x28')](function(_0x2fd673){return db['sequelize']['transaction'](function(_0xdb0a5b){return _0x2fd673[_0x128e('0x68')](_0x310ede,{'transaction':_0xdb0a5b})[_0x128e('0x28')](function(){return BPromise['each'](_0x1f7717,function(_0x243cac){return db[_0x128e('0x6e')][_0x128e('0x6f')]({'where':{'UserId':_0x243cac['id'],'MailQueueId':_0x4d192a[_0x128e('0x4e')]['id']},'transaction':_0xdb0a5b});});})[_0x128e('0x28')](function(){_0x1f7717[_0x128e('0x70')](function(_0x49f62a){socket[_0x128e('0x71')](_0x128e('0x72'),{'UserId':_0x49f62a['id'],'MailQueueId':_0x2fd673['id']});});});});});}})['then'](respondWithStatusCode(_0x528e9b,null))[_0x128e('0x4d')](handleError(_0x528e9b,null));};exports[_0x128e('0x73')]=function(_0x29b08d,_0x18d567,_0x378344){return db[_0x128e('0x67')]['findAll']({'where':{'id':_0x29b08d[_0x128e('0x38')][_0x128e('0x69')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x128e('0x28')](handleEntityNotFound(_0x18d567,null))['then'](function(_0x4e1a8a){var _0xa18c96=_['map'](_0x4e1a8a,'id');var _0x6dda1b=[];var _0x3b4ac5=[];var _0x7eab0a=squel['select']();_0x7eab0a[_0x128e('0x74')](_0x128e('0x75'))[_0x128e('0x76')]('team_has_mail_queues','tq')[_0x128e('0x77')](_0x128e('0x78'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x128e('0x43')](_0x128e('0x79'),_0x29b08d[_0x128e('0x4e')]['id']);for(var _0x476142=0x0;_0x476142<_0x4e1a8a[_0x128e('0x3e')];_0x476142+=0x1){let _0x1f2e66=_0x4e1a8a[_0x476142];for(var _0x3f3769=0x0;_0x3f3769<_0x1f2e66[_0x128e('0x6a')][_0x128e('0x3e')];_0x3f3769+=0x1){let _0xa842c3=_0x1f2e66[_0x128e('0x6a')][_0x3f3769];var _0x393f05=_0x7eab0a[_0x128e('0x7a')]();_0x393f05['where'](_0x128e('0x7b'),_0xa842c3['id']);_0x3b4ac5['push'](db['sequelize'][_0x128e('0x38')](_0x393f05[_0x128e('0x7c')](),{'type':db[_0x128e('0x7d')][_0x128e('0x7e')][_0x128e('0x7f')]})['then'](function(_0x450ac0){if(_0x450ac0[_0x128e('0x3e')]===0x1){return _0xa842c3['id'];}else{var _0xf4cbc3=_['every'](_['map'](_0x450ac0,'TeamId'),function(_0xa96de8){return _[_0x128e('0x80')](_0xa18c96,_0xa96de8);});if(_0xf4cbc3){return _0xa842c3['id'];}}}));}}return BPromise[_0x128e('0x81')](_0x3b4ac5)[_0x128e('0x28')](function(_0x5a8da2){_0x6dda1b=_(_0x6dda1b)[_0x128e('0x82')](_0x5a8da2)[_0x128e('0x83')]()[_0x128e('0x84')]();return db['MailQueue'][_0x128e('0x4f')]({'where':{'id':_0x29b08d[_0x128e('0x4e')]['id']}})[_0x128e('0x28')](function(_0x37d4af){return db[_0x128e('0x7d')][_0x128e('0x85')](function(_0x26c74a){return _0x37d4af[_0x128e('0x73')](_0x29b08d[_0x128e('0x38')][_0x128e('0x69')],{'transaction':_0x26c74a})[_0x128e('0x28')](function(){if(!_[_0x128e('0x86')](_0x6dda1b)){return _0x37d4af[_0x128e('0x87')](_0x6dda1b,{'transaction':_0x26c74a});}})[_0x128e('0x28')](function(){_0x6dda1b['forEach'](function(_0x69e728){socket[_0x128e('0x71')](_0x128e('0x88'),{'UserId':_0x69e728,'MailQueueId':_0x37d4af['id']});});});});});});})[_0x128e('0x28')](respondWithStatusCode(_0x18d567,null))[_0x128e('0x4d')](handleError(_0x18d567,null));};exports[_0x128e('0x89')]=function(_0x17ea42,_0x1d8d19,_0x4bd6de){return db[_0x128e('0x32')][_0x128e('0x4f')]({'where':{'id':_0x17ea42[_0x128e('0x4e')]['id']}})[_0x128e('0x28')](handleEntityNotFound(_0x1d8d19,null))[_0x128e('0x28')](function(_0x7b69f){if(_0x7b69f){return _0x7b69f[_0x128e('0x89')](_0x17ea42['body'][_0x128e('0x69')],_[_0x128e('0x8a')](_0x17ea42[_0x128e('0x51')],[_0x128e('0x69'),'id'])||{})['spread'](function(_0x425851){for(var _0x418cc2=0x0;_0x418cc2<_0x17ea42[_0x128e('0x51')][_0x128e('0x69')]['length'];_0x418cc2+=0x1){socket[_0x128e('0x71')](_0x128e('0x72'),{'UserId':Number(_0x17ea42[_0x128e('0x51')]['ids'][_0x418cc2]),'MailQueueId':Number(_0x17ea42[_0x128e('0x4e')]['id'])});}return _0x425851;});}})[_0x128e('0x28')](respondWithResult(_0x1d8d19,null))[_0x128e('0x4d')](handleError(_0x1d8d19,null));};exports[_0x128e('0x87')]=function(_0x4fd13e,_0x158efa,_0x54a421){return db[_0x128e('0x32')][_0x128e('0x4f')]({'where':{'id':_0x4fd13e[_0x128e('0x4e')]['id']}})[_0x128e('0x28')](handleEntityNotFound(_0x158efa,null))[_0x128e('0x28')](function(_0x3f4e3c){if(_0x3f4e3c){return _0x3f4e3c[_0x128e('0x87')](_0x4fd13e[_0x128e('0x38')]['ids'])[_0x128e('0x28')](function(){if(_[_0x128e('0x8b')](_0x4fd13e[_0x128e('0x38')]['ids'])){for(var _0xfc8d30=0x0;_0xfc8d30<_0x4fd13e[_0x128e('0x38')][_0x128e('0x69')][_0x128e('0x3e')];_0xfc8d30+=0x1){socket[_0x128e('0x71')]('userMailQueue:remove',{'UserId':Number(_0x4fd13e['query'][_0x128e('0x69')][_0xfc8d30]),'MailQueueId':Number(_0x4fd13e[_0x128e('0x4e')]['id'])});}}else{socket[_0x128e('0x71')]('userMailQueue:remove',{'UserId':Number(_0x4fd13e[_0x128e('0x38')]['ids']),'MailQueueId':Number(_0x4fd13e[_0x128e('0x4e')]['id'])});}});}})[_0x128e('0x28')](respondWithStatusCode(_0x158efa,null))['catch'](handleError(_0x158efa,null));};exports[_0x128e('0x8c')]=function(_0xb2472b,_0x512f01,_0x20dad5){var _0x1a179c={};var _0x2414a4={};var _0x308f52;var _0x3ce8f0;return db['MailQueue'][_0x128e('0x66')]({'where':{'id':_0xb2472b[_0x128e('0x4e')]['id']}})[_0x128e('0x28')](handleEntityNotFound(_0x512f01,null))[_0x128e('0x28')](function(_0x52420c){if(_0x52420c){_0x308f52=_0x52420c;_0x2414a4[_0x128e('0x37')]=_[_0x128e('0x39')](db[_0x128e('0x5b')]['rawAttributes']);_0x2414a4['query']=_[_0x128e('0x39')](_0xb2472b[_0x128e('0x38')]);_0x2414a4[_0x128e('0x3a')]=_['intersection'](_0x2414a4['model'],_0x2414a4['query']);_0x1a179c[_0x128e('0x3c')]=_[_0x128e('0x3b')](_0x2414a4['model'],qs[_0x128e('0x3d')](_0xb2472b[_0x128e('0x38')][_0x128e('0x3d')]));_0x1a179c[_0x128e('0x3c')]=_0x1a179c[_0x128e('0x3c')][_0x128e('0x3e')]?_0x1a179c['attributes']:_0x2414a4[_0x128e('0x37')];_0x1a179c[_0x128e('0x41')]=qs['sort'](_0xb2472b['query'][_0x128e('0x42')]);_0x1a179c[_0x128e('0x43')]=qs[_0x128e('0x3a')](_[_0x128e('0x44')](_0xb2472b[_0x128e('0x38')],_0x2414a4[_0x128e('0x3a')]));if(_0xb2472b[_0x128e('0x38')][_0x128e('0x45')]){_0x1a179c['where']=_[_0x128e('0x47')](_0x1a179c[_0x128e('0x43')],{'$or':_[_0x128e('0x31')](_0x1a179c[_0x128e('0x3c')],function(_0x3ddd73){var _0x20b1b2={};_0x20b1b2[_0x3ddd73]={'$like':'%'+_0xb2472b['query'][_0x128e('0x45')]+'%'};return _0x20b1b2;})});}_0x1a179c=_[_0x128e('0x47')]({},_0x1a179c,_0xb2472b[_0x128e('0x48')]);return _0x308f52[_0x128e('0x8c')](_0x1a179c);}})[_0x128e('0x28')](function(_0x4ce4c1){if(_0x4ce4c1){_0x3ce8f0=_0x4ce4c1[_0x128e('0x3e')];if(!_0xb2472b[_0x128e('0x38')][_0x128e('0x3f')](_0x128e('0x40'))){_0x1a179c[_0x128e('0x22')]=qs[_0x128e('0x22')](_0xb2472b[_0x128e('0x38')][_0x128e('0x22')]);_0x1a179c['offset']=qs['offset'](_0xb2472b['query'][_0x128e('0x20')]);}return _0x308f52[_0x128e('0x8c')](_0x1a179c);}})[_0x128e('0x28')](function(_0x26d0d9){if(_0x26d0d9){return _0x26d0d9?{'count':_0x3ce8f0,'rows':_0x26d0d9}:null;}})[_0x128e('0x28')](respondWithResult(_0x512f01,null))[_0x128e('0x4d')](handleError(_0x512f01,null));};
\ No newline at end of file
+var _0x8ce1=['union','value','transaction','removeTeams','isEmpty','removeAgents','addAgents','omit','spread','userMailQueue:save','isArray','userMailQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','ejs','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','then','get','MailQueues','UserProfileResource','end','error','stack','index','map','MailQueue','rawAttributes','fieldName','type','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','describe','getMembers','findOne','UserMailQueue','sort','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','Team','getTeams','ids','User','Agents','online','voicePause','addTeams','each','findOrCreate','forEach','emit','select','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','QueryTypes','every','TeamId','includes','all'];(function(_0x53a7af,_0x1408a5){var _0x3cc7f6=function(_0x4bf101){while(--_0x4bf101){_0x53a7af['push'](_0x53a7af['shift']());}};_0x3cc7f6(++_0x1408a5);}(_0x8ce1,0x97));var _0x18ce=function(_0x37f65b,_0x874ce7){_0x37f65b=_0x37f65b-0x0;var _0x1df470=_0x8ce1[_0x37f65b];return _0x1df470;};'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('request-promise');var moment=require(_0x18ce('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x18ce('0x5'));var util=require(_0x18ce('0x6'));var path=require(_0x18ce('0x7'));var sox=require('sox');var csv=require(_0x18ce('0x8'));var ejs=require(_0x18ce('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x18ce('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x18ce('0xb'));var toCsv=require(_0x18ce('0x8'));var querystring=require(_0x18ce('0xc'));var Papa=require(_0x18ce('0xd'));var Redis=require(_0x18ce('0xe'));var authService=require(_0x18ce('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x18ce('0x10'));var hardwareService=require(_0x18ce('0x11'));var logger=require(_0x18ce('0x12'))(_0x18ce('0x13'));var utils=require(_0x18ce('0x14'));var config=require(_0x18ce('0x15'));var licenseUtil=require(_0x18ce('0x16'));var db=require(_0x18ce('0x17'))['db'];config[_0x18ce('0x18')]=_[_0x18ce('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x18ce('0x1a'))(new Redis(config['redis']));require('./mailQueue.socket')['register'](socket);function respondWithStatusCode(_0x5b4220,_0x19b8f4){_0x19b8f4=_0x19b8f4||0xcc;return function(_0x4348d4){if(_0x4348d4){return _0x5b4220[_0x18ce('0x1b')](_0x19b8f4);}return _0x5b4220[_0x18ce('0x1c')](_0x19b8f4)['end']();};}function respondWithResult(_0x43b382,_0xe4fec8){_0xe4fec8=_0xe4fec8||0xc8;return function(_0x40f587){if(_0x40f587){return _0x43b382[_0x18ce('0x1c')](_0xe4fec8)[_0x18ce('0x1d')](_0x40f587);}};}function respondWithFilteredResult(_0x444f12,_0x4a7b92){return function(_0x27d6e5){if(_0x27d6e5){var _0x217fdb=typeof _0x4a7b92[_0x18ce('0x1e')]===_0x18ce('0x1f')&&typeof _0x4a7b92['limit']===_0x18ce('0x1f');var _0x5a1651=_0x27d6e5['count'];var _0x14a73d=_0x217fdb?0x0:_0x4a7b92[_0x18ce('0x1e')];var _0x5bbe7f=_0x217fdb?_0x27d6e5[_0x18ce('0x20')]:_0x4a7b92['offset']+_0x4a7b92[_0x18ce('0x21')];var _0x4462e4;if(_0x5bbe7f>=_0x5a1651){_0x5bbe7f=_0x5a1651;_0x4462e4=0xc8;}else{_0x4462e4=0xce;}_0x444f12[_0x18ce('0x1c')](_0x4462e4);return _0x444f12['set'](_0x18ce('0x22'),_0x14a73d+'-'+_0x5bbe7f+'/'+_0x5a1651)['json'](_0x27d6e5);}return null;};}function patchUpdates(_0x11d92d){return function(_0x3b5d67){try{jsonpatch[_0x18ce('0x23')](_0x3b5d67,_0x11d92d,!![]);}catch(_0xfaceef){return BPromise['reject'](_0xfaceef);}return _0x3b5d67[_0x18ce('0x24')]();};}function saveUpdates(_0x52cf95,_0x484e91){return function(_0x5b6e47){if(_0x5b6e47){return _0x5b6e47[_0x18ce('0x25')](_0x52cf95)['then'](function(_0x33c0f8){return _0x33c0f8;});}return null;};}function removeEntity(_0xa01faa,_0x1ff501){return function(_0x3c44cd){if(_0x3c44cd){return _0x3c44cd[_0x18ce('0x26')]()[_0x18ce('0x27')](function(){var _0x2dd300=_0x3c44cd[_0x18ce('0x28')]({'plain':!![]});var _0x525f59=_0x18ce('0x29');return db[_0x18ce('0x2a')][_0x18ce('0x26')]({'where':{'type':_0x525f59,'resourceId':_0x2dd300['id']}})[_0x18ce('0x27')](function(){return _0x3c44cd;});})[_0x18ce('0x27')](function(){_0xa01faa[_0x18ce('0x1c')](0xcc)[_0x18ce('0x2b')]();});}};}function handleEntityNotFound(_0x4b6b78,_0x3761ba){return function(_0x4a9d2d){if(!_0x4a9d2d){_0x4b6b78[_0x18ce('0x1b')](0x194);}return _0x4a9d2d;};}function handleError(_0x41866b,_0x52f704){_0x52f704=_0x52f704||0x1f4;return function(_0x515c9c){logger[_0x18ce('0x2c')](_0x515c9c[_0x18ce('0x2d')]);if(_0x515c9c['name']){delete _0x515c9c['name'];}_0x41866b['status'](_0x52f704)['send'](_0x515c9c);};}exports[_0x18ce('0x2e')]=function(_0x3fc5f5,_0x396598){var _0x48f384={},_0x26509c={},_0x747bf7={'count':0x0,'rows':[]};var _0x81810=_[_0x18ce('0x2f')](db[_0x18ce('0x30')][_0x18ce('0x31')],function(_0xe07916){return{'name':_0xe07916[_0x18ce('0x32')],'type':_0xe07916[_0x18ce('0x33')]['key']};});_0x26509c['model']=_[_0x18ce('0x2f')](_0x81810,_0x18ce('0x34'));_0x26509c[_0x18ce('0x35')]=_[_0x18ce('0x36')](_0x3fc5f5['query']);_0x26509c[_0x18ce('0x37')]=_[_0x18ce('0x38')](_0x26509c[_0x18ce('0x39')],_0x26509c[_0x18ce('0x35')]);_0x48f384[_0x18ce('0x3a')]=_[_0x18ce('0x38')](_0x26509c['model'],qs[_0x18ce('0x3b')](_0x3fc5f5[_0x18ce('0x35')][_0x18ce('0x3b')]));_0x48f384[_0x18ce('0x3a')]=_0x48f384[_0x18ce('0x3a')][_0x18ce('0x3c')]?_0x48f384['attributes']:_0x26509c[_0x18ce('0x39')];if(!_0x3fc5f5[_0x18ce('0x35')][_0x18ce('0x3d')](_0x18ce('0x3e'))){_0x48f384[_0x18ce('0x21')]=qs[_0x18ce('0x21')](_0x3fc5f5[_0x18ce('0x35')]['limit']);_0x48f384[_0x18ce('0x1e')]=qs['offset'](_0x3fc5f5[_0x18ce('0x35')]['offset']);}_0x48f384[_0x18ce('0x3f')]=qs['sort'](_0x3fc5f5[_0x18ce('0x35')]['sort']);_0x48f384['where']=qs['filters'](_[_0x18ce('0x40')](_0x3fc5f5[_0x18ce('0x35')],_0x26509c[_0x18ce('0x37')]),_0x81810);if(_0x3fc5f5[_0x18ce('0x35')][_0x18ce('0x41')]){_0x48f384['where']=_[_0x18ce('0x42')](_0x48f384[_0x18ce('0x43')],{'$or':_['map'](_0x81810,function(_0x5d497a){if(_0x5d497a[_0x18ce('0x33')]!==_0x18ce('0x44')){var _0xbcda62={};_0xbcda62[_0x5d497a[_0x18ce('0x34')]]={'$like':'%'+_0x3fc5f5['query'][_0x18ce('0x41')]+'%'};return _0xbcda62;}})});}_0x48f384=_[_0x18ce('0x42')]({},_0x48f384,_0x3fc5f5[_0x18ce('0x45')]);var _0x903a44={'where':_0x48f384[_0x18ce('0x43')]};return db[_0x18ce('0x30')][_0x18ce('0x20')](_0x903a44)['then'](function(_0x4116c1){_0x747bf7[_0x18ce('0x20')]=_0x4116c1;if(_0x3fc5f5[_0x18ce('0x35')][_0x18ce('0x46')]){_0x48f384[_0x18ce('0x47')]=[{'all':!![]}];}return db['MailQueue'][_0x18ce('0x48')](_0x48f384);})[_0x18ce('0x27')](function(_0x5b735f){_0x747bf7[_0x18ce('0x49')]=_0x5b735f;return _0x747bf7;})[_0x18ce('0x27')](respondWithFilteredResult(_0x396598,_0x48f384))[_0x18ce('0x4a')](handleError(_0x396598,null));};exports[_0x18ce('0x4b')]=function(_0x2bb0e9,_0x22f07a){var _0x2d7557={'raw':!![],'where':{'id':_0x2bb0e9[_0x18ce('0x4c')]['id']}},_0x2c8897={};_0x2c8897[_0x18ce('0x39')]=_[_0x18ce('0x36')](db[_0x18ce('0x30')]['rawAttributes']);_0x2c8897[_0x18ce('0x35')]=_['keys'](_0x2bb0e9[_0x18ce('0x35')]);_0x2c8897[_0x18ce('0x37')]=_[_0x18ce('0x38')](_0x2c8897[_0x18ce('0x39')],_0x2c8897[_0x18ce('0x35')]);_0x2d7557[_0x18ce('0x3a')]=_[_0x18ce('0x38')](_0x2c8897[_0x18ce('0x39')],qs[_0x18ce('0x3b')](_0x2bb0e9['query'][_0x18ce('0x3b')]));_0x2d7557[_0x18ce('0x3a')]=_0x2d7557[_0x18ce('0x3a')][_0x18ce('0x3c')]?_0x2d7557[_0x18ce('0x3a')]:_0x2c8897[_0x18ce('0x39')];if(_0x2bb0e9[_0x18ce('0x35')]['includeAll']){_0x2d7557[_0x18ce('0x47')]=[{'all':!![]}];}_0x2d7557=_['merge']({},_0x2d7557,_0x2bb0e9[_0x18ce('0x45')]);return db[_0x18ce('0x30')][_0x18ce('0x4d')](_0x2d7557)['then'](handleEntityNotFound(_0x22f07a,null))[_0x18ce('0x27')](respondWithResult(_0x22f07a,null))['catch'](handleError(_0x22f07a,null));};exports['create']=function(_0x240db2,_0x3f4630){return db['MailQueue'][_0x18ce('0x4e')](_0x240db2[_0x18ce('0x4f')],{})[_0x18ce('0x27')](function(_0x35297c){var _0x4be318=_0x240db2[_0x18ce('0x50')][_0x18ce('0x28')]({'plain':!![]});if(!_0x4be318)throw new Error(_0x18ce('0x51'));if(_0x4be318['role']===_0x18ce('0x50')){var _0x48444a=_0x35297c['get']({'plain':!![]});var _0x2bbfd8=_0x18ce('0x29');return db[_0x18ce('0x52')][_0x18ce('0x4d')]({'where':{'name':_0x2bbfd8,'userProfileId':_0x4be318[_0x18ce('0x53')]},'raw':!![]})[_0x18ce('0x27')](function(_0x152c3f){if(_0x152c3f&&_0x152c3f[_0x18ce('0x54')]===0x0){return db[_0x18ce('0x2a')][_0x18ce('0x4e')]({'name':_0x48444a[_0x18ce('0x34')],'resourceId':_0x48444a['id'],'type':_0x152c3f[_0x18ce('0x34')],'sectionId':_0x152c3f['id']},{})[_0x18ce('0x27')](function(){return _0x35297c;});}else{return _0x35297c;}})[_0x18ce('0x4a')](function(_0xe579c1){logger[_0x18ce('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xe579c1);throw _0xe579c1;});}return _0x35297c;})['then'](respondWithResult(_0x3f4630,0xc9))['catch'](handleError(_0x3f4630,null));};exports['update']=function(_0x4ef2e4,_0x10d532){if(_0x4ef2e4['body']['id']){delete _0x4ef2e4['body']['id'];}return db['MailQueue'][_0x18ce('0x4d')]({'where':{'id':_0x4ef2e4[_0x18ce('0x4c')]['id']}})['then'](handleEntityNotFound(_0x10d532,null))[_0x18ce('0x27')](saveUpdates(_0x4ef2e4['body'],null))['then'](respondWithResult(_0x10d532,null))[_0x18ce('0x4a')](handleError(_0x10d532,null));};exports['destroy']=function(_0x2652df,_0x4e1bdd){return db[_0x18ce('0x30')][_0x18ce('0x4d')]({'where':{'id':_0x2652df[_0x18ce('0x4c')]['id']}})[_0x18ce('0x27')](handleEntityNotFound(_0x4e1bdd,null))['then'](removeEntity(_0x4e1bdd,null))['catch'](handleError(_0x4e1bdd,null));};exports[_0x18ce('0x55')]=function(_0x542d5e,_0x3dab43){return db['MailQueue'][_0x18ce('0x55')]()['then'](respondWithResult(_0x3dab43,null))['catch'](handleError(_0x3dab43,null));};exports[_0x18ce('0x56')]=function(_0x5a3283,_0x486777,_0x1d3d53){var _0x20d59f={'raw':!![],'where':{}},_0x55cc56={},_0x5ea909;return db[_0x18ce('0x30')][_0x18ce('0x57')]({'where':{'id':_0x5a3283[_0x18ce('0x4c')]['id']}})[_0x18ce('0x27')](handleEntityNotFound(_0x486777,null))[_0x18ce('0x27')](function(_0x4d81c7){if(_0x4d81c7){_0x5ea909=_0x4d81c7[_0x18ce('0x28')]({'plain':!![]});_0x55cc56[_0x18ce('0x39')]=_['keys'](db[_0x18ce('0x58')][_0x18ce('0x31')]);_0x55cc56[_0x18ce('0x35')]=_[_0x18ce('0x36')](_0x5a3283['query']);_0x55cc56[_0x18ce('0x37')]=_[_0x18ce('0x38')](_0x55cc56['model'],_0x55cc56[_0x18ce('0x35')]);_0x20d59f[_0x18ce('0x3a')]=_[_0x18ce('0x38')](_0x55cc56[_0x18ce('0x39')],qs[_0x18ce('0x3b')](_0x5a3283[_0x18ce('0x35')]['fields']));_0x20d59f[_0x18ce('0x3a')]=_0x20d59f[_0x18ce('0x3a')][_0x18ce('0x3c')]?_0x20d59f['attributes']:_0x55cc56[_0x18ce('0x39')];if(!_0x5a3283['query']['hasOwnProperty'](_0x18ce('0x3e'))){_0x20d59f['limit']=qs[_0x18ce('0x21')](_0x5a3283[_0x18ce('0x35')][_0x18ce('0x21')]);_0x20d59f[_0x18ce('0x1e')]=qs['offset'](_0x5a3283[_0x18ce('0x35')][_0x18ce('0x1e')]);}_0x20d59f[_0x18ce('0x3f')]=qs[_0x18ce('0x59')](_0x5a3283[_0x18ce('0x35')][_0x18ce('0x59')]);_0x20d59f[_0x18ce('0x43')]=qs[_0x18ce('0x37')](_[_0x18ce('0x40')](_0x5a3283[_0x18ce('0x35')],_0x55cc56[_0x18ce('0x37')]));_0x20d59f[_0x18ce('0x43')][_0x18ce('0x5a')]=_0x4d81c7['id'];if(_0x5a3283['query'][_0x18ce('0x41')]){_0x20d59f['where']=_['merge'](_0x20d59f[_0x18ce('0x43')],{'$or':_['map'](_0x20d59f['attributes'],function(_0x597b5e){var _0xf48e92={};_0xf48e92[_0x597b5e]={'$like':'%'+_0x5a3283[_0x18ce('0x35')]['filter']+'%'};return _0xf48e92;})});}_0x20d59f=_[_0x18ce('0x42')]({},_0x20d59f,_0x5a3283[_0x18ce('0x45')]);return db[_0x18ce('0x58')]['findAll'](_0x20d59f);}})['then'](function(_0x2e7f88){if(_0x2e7f88){return db['User'][_0x18ce('0x5b')]({'where':{'id':_[_0x18ce('0x2f')](_0x2e7f88,_0x18ce('0x5c')),'role':_0x18ce('0x5d')},'attributes':['id',_0x18ce('0x34'),_0x18ce('0x5e'),_0x18ce('0x5f'),_0x18ce('0x60')]});}})[_0x18ce('0x27')](function(_0x459ff1){if(_0x459ff1){return{'count':_0x459ff1[_0x18ce('0x20')],'rows':_['map'](_0x459ff1[_0x18ce('0x49')],function(_0x5288d1){return{'membername':_0x5288d1[_0x18ce('0x34')],'UserId':_0x5288d1['id'],'queue_name':_0x5ea909[_0x18ce('0x34')],'MailQueueId':_0x5ea909['id'],'interface':util[_0x18ce('0x61')]('%s/%s','SIP',_0x5288d1['name']),'penalty':0x0,'paused':_0x5288d1[_0x18ce('0x5e')],'createdAt':_0x5288d1[_0x18ce('0x60')],'updatedAt':_0x5288d1[_0x18ce('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x18ce('0x27')](respondWithFilteredResult(_0x486777,_0x20d59f))['catch'](handleError(_0x486777,null));};exports['getTeams']=function(_0x14ebb9,_0x2eeebc,_0x3bbaf2){var _0x417736={};var _0x183395={};var _0xa946a;var _0x2be10c;return db[_0x18ce('0x30')][_0x18ce('0x57')]({'where':{'id':_0x14ebb9[_0x18ce('0x4c')]['id']}})[_0x18ce('0x27')](handleEntityNotFound(_0x2eeebc,null))['then'](function(_0x52a2be){if(_0x52a2be){_0xa946a=_0x52a2be;_0x183395[_0x18ce('0x39')]=_[_0x18ce('0x36')](db[_0x18ce('0x62')][_0x18ce('0x31')]);_0x183395['query']=_[_0x18ce('0x36')](_0x14ebb9['query']);_0x183395[_0x18ce('0x37')]=_['intersection'](_0x183395[_0x18ce('0x39')],_0x183395[_0x18ce('0x35')]);_0x417736['attributes']=_[_0x18ce('0x38')](_0x183395['model'],qs[_0x18ce('0x3b')](_0x14ebb9[_0x18ce('0x35')][_0x18ce('0x3b')]));_0x417736[_0x18ce('0x3a')]=_0x417736[_0x18ce('0x3a')]['length']?_0x417736[_0x18ce('0x3a')]:_0x183395[_0x18ce('0x39')];_0x417736['order']=qs[_0x18ce('0x59')](_0x14ebb9[_0x18ce('0x35')][_0x18ce('0x59')]);_0x417736[_0x18ce('0x43')]=qs[_0x18ce('0x37')](_['pick'](_0x14ebb9[_0x18ce('0x35')],_0x183395['filters']));if(_0x14ebb9['query']['filter']){_0x417736['where']=_[_0x18ce('0x42')](_0x417736['where'],{'$or':_[_0x18ce('0x2f')](_0x417736[_0x18ce('0x3a')],function(_0x689827){var _0x271b17={};_0x271b17[_0x689827]={'$like':'%'+_0x14ebb9[_0x18ce('0x35')]['filter']+'%'};return _0x271b17;})});}_0x417736=_[_0x18ce('0x42')]({},_0x417736,_0x14ebb9[_0x18ce('0x45')]);return _0xa946a[_0x18ce('0x63')](_0x417736);}})[_0x18ce('0x27')](function(_0x2fcca1){if(_0x2fcca1){_0x2be10c=_0x2fcca1[_0x18ce('0x3c')];if(!_0x14ebb9[_0x18ce('0x35')][_0x18ce('0x3d')](_0x18ce('0x3e'))){_0x417736[_0x18ce('0x21')]=qs[_0x18ce('0x21')](_0x14ebb9[_0x18ce('0x35')][_0x18ce('0x21')]);_0x417736[_0x18ce('0x1e')]=qs['offset'](_0x14ebb9['query'][_0x18ce('0x1e')]);}return _0xa946a[_0x18ce('0x63')](_0x417736);}})[_0x18ce('0x27')](function(_0x2cdace){if(_0x2cdace){return _0x2cdace?{'count':_0x2be10c,'rows':_0x2cdace}:null;}})[_0x18ce('0x27')](respondWithResult(_0x2eeebc,null))[_0x18ce('0x4a')](handleError(_0x2eeebc,null));};exports['addTeams']=function(_0x1a4589,_0xe6ce2f,_0x831a41){var _0x20716c=_0x1a4589[_0x18ce('0x4f')][_0x18ce('0x64')];return db[_0x18ce('0x62')]['findAll']({'where':{'id':_0x20716c},'attributes':['id'],'include':[{'model':db[_0x18ce('0x65')],'as':_0x18ce('0x66'),'attributes':['id',_0x18ce('0x34'),_0x18ce('0x67'),_0x18ce('0x68'),'interface'],'raw':!![]}]})[_0x18ce('0x27')](function(_0x18bd0e){if(_0x18bd0e){var _0x487245=_['flatMap'](_0x18bd0e,function(_0x504b0f){var _0x58bfdd=_0x504b0f[_0x18ce('0x28')]({'plain':!![]});return _0x58bfdd[_0x18ce('0x66')];});return db[_0x18ce('0x30')][_0x18ce('0x4d')]({'where':{'id':_0x1a4589[_0x18ce('0x4c')]['id']}})[_0x18ce('0x27')](function(_0x2fbc69){return db['sequelize']['transaction'](function(_0xf9eecf){return _0x2fbc69[_0x18ce('0x69')](_0x20716c,{'transaction':_0xf9eecf})[_0x18ce('0x27')](function(){return BPromise[_0x18ce('0x6a')](_0x487245,function(_0x3f61ce){return db[_0x18ce('0x58')][_0x18ce('0x6b')]({'where':{'UserId':_0x3f61ce['id'],'MailQueueId':_0x1a4589[_0x18ce('0x4c')]['id']},'transaction':_0xf9eecf});});})[_0x18ce('0x27')](function(){_0x487245[_0x18ce('0x6c')](function(_0x746ed7){socket[_0x18ce('0x6d')]('userMailQueue:save',{'UserId':_0x746ed7['id'],'MailQueueId':_0x2fbc69['id']});});});});});}})[_0x18ce('0x27')](respondWithStatusCode(_0xe6ce2f,null))['catch'](handleError(_0xe6ce2f,null));};exports['removeTeams']=function(_0x277dce,_0x371574,_0x5511e6){return db[_0x18ce('0x62')][_0x18ce('0x48')]({'where':{'id':_0x277dce[_0x18ce('0x35')][_0x18ce('0x64')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x18ce('0x66'),'attributes':['id'],'raw':!![]}]})[_0x18ce('0x27')](handleEntityNotFound(_0x371574,null))['then'](function(_0x290bd2){var _0x4db9ae=_[_0x18ce('0x2f')](_0x290bd2,'id');var _0x82a271=[];var _0x54e318=[];var _0x200388=squel[_0x18ce('0x6e')]();_0x200388['field']('tq.TeamId')[_0x18ce('0x6f')](_0x18ce('0x70'),'tq')[_0x18ce('0x71')](_0x18ce('0x72'),'ut',_0x18ce('0x73'))['where'](_0x18ce('0x74'),_0x277dce[_0x18ce('0x4c')]['id']);for(var _0x31391b=0x0;_0x31391b<_0x290bd2[_0x18ce('0x3c')];_0x31391b+=0x1){let _0x47f878=_0x290bd2[_0x31391b];for(var _0x32e8c6=0x0;_0x32e8c6<_0x47f878[_0x18ce('0x66')]['length'];_0x32e8c6+=0x1){let _0x2e70a4=_0x47f878[_0x18ce('0x66')][_0x32e8c6];var _0x311c4d=_0x200388[_0x18ce('0x75')]();_0x311c4d['where'](_0x18ce('0x76'),_0x2e70a4['id']);_0x54e318['push'](db[_0x18ce('0x77')]['query'](_0x311c4d['toString'](),{'type':db['sequelize'][_0x18ce('0x78')]['SELECT']})[_0x18ce('0x27')](function(_0x5665ae){if(_0x5665ae['length']===0x1){return _0x2e70a4['id'];}else{var _0xef12b8=_[_0x18ce('0x79')](_['map'](_0x5665ae,_0x18ce('0x7a')),function(_0x117d00){return _[_0x18ce('0x7b')](_0x4db9ae,_0x117d00);});if(_0xef12b8){return _0x2e70a4['id'];}}}));}}return BPromise[_0x18ce('0x7c')](_0x54e318)[_0x18ce('0x27')](function(_0x453a20){_0x82a271=_(_0x82a271)[_0x18ce('0x7d')](_0x453a20)['compact']()[_0x18ce('0x7e')]();return db[_0x18ce('0x30')]['find']({'where':{'id':_0x277dce[_0x18ce('0x4c')]['id']}})['then'](function(_0x2d6e10){return db[_0x18ce('0x77')][_0x18ce('0x7f')](function(_0x3513c6){return _0x2d6e10[_0x18ce('0x80')](_0x277dce['query'][_0x18ce('0x64')],{'transaction':_0x3513c6})['then'](function(){if(!_[_0x18ce('0x81')](_0x82a271)){return _0x2d6e10[_0x18ce('0x82')](_0x82a271,{'transaction':_0x3513c6});}})['then'](function(){_0x82a271[_0x18ce('0x6c')](function(_0x19d6c7){socket[_0x18ce('0x6d')]('userMailQueue:remove',{'UserId':_0x19d6c7,'MailQueueId':_0x2d6e10['id']});});});});});});})[_0x18ce('0x27')](respondWithStatusCode(_0x371574,null))[_0x18ce('0x4a')](handleError(_0x371574,null));};exports['addAgents']=function(_0x54805c,_0x2d461e,_0x4dd877){return db[_0x18ce('0x30')][_0x18ce('0x4d')]({'where':{'id':_0x54805c[_0x18ce('0x4c')]['id']}})[_0x18ce('0x27')](handleEntityNotFound(_0x2d461e,null))[_0x18ce('0x27')](function(_0xc46d72){if(_0xc46d72){return _0xc46d72[_0x18ce('0x83')](_0x54805c[_0x18ce('0x4f')][_0x18ce('0x64')],_[_0x18ce('0x84')](_0x54805c[_0x18ce('0x4f')],[_0x18ce('0x64'),'id'])||{})[_0x18ce('0x85')](function(_0x2806fb){for(var _0x1ed8b3=0x0;_0x1ed8b3<_0x54805c[_0x18ce('0x4f')][_0x18ce('0x64')]['length'];_0x1ed8b3+=0x1){socket[_0x18ce('0x6d')](_0x18ce('0x86'),{'UserId':Number(_0x54805c[_0x18ce('0x4f')][_0x18ce('0x64')][_0x1ed8b3]),'MailQueueId':Number(_0x54805c[_0x18ce('0x4c')]['id'])});}return _0x2806fb;});}})[_0x18ce('0x27')](respondWithResult(_0x2d461e,null))[_0x18ce('0x4a')](handleError(_0x2d461e,null));};exports[_0x18ce('0x82')]=function(_0x4a10e5,_0x3890bd,_0x38588e){return db['MailQueue'][_0x18ce('0x4d')]({'where':{'id':_0x4a10e5[_0x18ce('0x4c')]['id']}})[_0x18ce('0x27')](handleEntityNotFound(_0x3890bd,null))[_0x18ce('0x27')](function(_0x77f5b7){if(_0x77f5b7){return _0x77f5b7['removeAgents'](_0x4a10e5['query'][_0x18ce('0x64')])[_0x18ce('0x27')](function(){if(_[_0x18ce('0x87')](_0x4a10e5[_0x18ce('0x35')][_0x18ce('0x64')])){for(var _0x6d9461=0x0;_0x6d9461<_0x4a10e5['query'][_0x18ce('0x64')][_0x18ce('0x3c')];_0x6d9461+=0x1){socket[_0x18ce('0x6d')](_0x18ce('0x88'),{'UserId':Number(_0x4a10e5[_0x18ce('0x35')]['ids'][_0x6d9461]),'MailQueueId':Number(_0x4a10e5['params']['id'])});}}else{socket[_0x18ce('0x6d')](_0x18ce('0x88'),{'UserId':Number(_0x4a10e5[_0x18ce('0x35')][_0x18ce('0x64')]),'MailQueueId':Number(_0x4a10e5[_0x18ce('0x4c')]['id'])});}});}})[_0x18ce('0x27')](respondWithStatusCode(_0x3890bd,null))[_0x18ce('0x4a')](handleError(_0x3890bd,null));};exports[_0x18ce('0x89')]=function(_0x370813,_0x21c38c,_0x4556b0){var _0x3d8784={};var _0x5bfe4c={};var _0x5d3add;var _0x1baf52;return db[_0x18ce('0x30')][_0x18ce('0x57')]({'where':{'id':_0x370813[_0x18ce('0x4c')]['id']}})[_0x18ce('0x27')](handleEntityNotFound(_0x21c38c,null))['then'](function(_0x35522a){if(_0x35522a){_0x5d3add=_0x35522a;_0x5bfe4c['model']=_[_0x18ce('0x36')](db['User']['rawAttributes']);_0x5bfe4c[_0x18ce('0x35')]=_[_0x18ce('0x36')](_0x370813[_0x18ce('0x35')]);_0x5bfe4c[_0x18ce('0x37')]=_[_0x18ce('0x38')](_0x5bfe4c['model'],_0x5bfe4c[_0x18ce('0x35')]);_0x3d8784[_0x18ce('0x3a')]=_[_0x18ce('0x38')](_0x5bfe4c[_0x18ce('0x39')],qs[_0x18ce('0x3b')](_0x370813[_0x18ce('0x35')][_0x18ce('0x3b')]));_0x3d8784[_0x18ce('0x3a')]=_0x3d8784[_0x18ce('0x3a')]['length']?_0x3d8784[_0x18ce('0x3a')]:_0x5bfe4c[_0x18ce('0x39')];_0x3d8784[_0x18ce('0x3f')]=qs[_0x18ce('0x59')](_0x370813[_0x18ce('0x35')][_0x18ce('0x59')]);_0x3d8784[_0x18ce('0x43')]=qs[_0x18ce('0x37')](_[_0x18ce('0x40')](_0x370813[_0x18ce('0x35')],_0x5bfe4c[_0x18ce('0x37')]));if(_0x370813[_0x18ce('0x35')][_0x18ce('0x41')]){_0x3d8784[_0x18ce('0x43')]=_[_0x18ce('0x42')](_0x3d8784['where'],{'$or':_['map'](_0x3d8784['attributes'],function(_0x12a1a9){var _0x1ddaa8={};_0x1ddaa8[_0x12a1a9]={'$like':'%'+_0x370813['query'][_0x18ce('0x41')]+'%'};return _0x1ddaa8;})});}_0x3d8784=_[_0x18ce('0x42')]({},_0x3d8784,_0x370813['options']);return _0x5d3add['getAgents'](_0x3d8784);}})[_0x18ce('0x27')](function(_0x3d4b7c){if(_0x3d4b7c){_0x1baf52=_0x3d4b7c[_0x18ce('0x3c')];if(!_0x370813[_0x18ce('0x35')][_0x18ce('0x3d')](_0x18ce('0x3e'))){_0x3d8784[_0x18ce('0x21')]=qs[_0x18ce('0x21')](_0x370813[_0x18ce('0x35')][_0x18ce('0x21')]);_0x3d8784[_0x18ce('0x1e')]=qs[_0x18ce('0x1e')](_0x370813[_0x18ce('0x35')][_0x18ce('0x1e')]);}return _0x5d3add[_0x18ce('0x89')](_0x3d8784);}})['then'](function(_0x17ef3d){if(_0x17ef3d){return _0x17ef3d?{'count':_0x1baf52,'rows':_0x17ef3d}:null;}})[_0x18ce('0x27')](respondWithResult(_0x21c38c,null))[_0x18ce('0x4a')](handleError(_0x21c38c,null));};
\ No newline at end of file
index a927af8..4099f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63f0=['MailQueue','setMaxListeners','update','emit','hasOwnProperty','hook','../../mysqldb'];(function(_0xaf33a2,_0x3038e1){var _0x37d5a3=function(_0x52263c){while(--_0x52263c){_0xaf33a2['push'](_0xaf33a2['shift']());}};_0x37d5a3(++_0x3038e1);}(_0x63f0,0x1c6));var _0x063f=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x63f0[_0x411add];return _0x238242;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x063f('0x0'))['db'][_0x063f('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x063f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x063f('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3f4986){return function(_0x3b3168,_0x3ee27f,_0x5ba97b){MailQueueEvents['emit'](_0x3f4986+':'+_0x3b3168['id'],_0x3b3168);MailQueueEvents[_0x063f('0x4')](_0x3f4986,_0x3b3168);_0x5ba97b(null);};}for(var e in events){if(events[_0x063f('0x5')](e)){var event=events[e];MailQueue[_0x063f('0x6')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0x0c09=['remove','emit','hasOwnProperty','exports','MailQueue','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0c09,0x1e7));var _0x90c0=function(_0x4ff677,_0x188382){_0x4ff677=_0x4ff677-0x0;var _0x47a535=_0x0c09[_0x4ff677];return _0x47a535;};'use strict';var EventEmitter=require('events');var MailQueue=require('../../mysqldb')['db'][_0x90c0('0x0')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x90c0('0x1'),'afterUpdate':_0x90c0('0x2'),'afterDestroy':_0x90c0('0x3')};function emitEvent(_0x45e53f){return function(_0x468ed1,_0x479959,_0x24e05e){MailQueueEvents[_0x90c0('0x4')](_0x45e53f+':'+_0x468ed1['id'],_0x468ed1);MailQueueEvents[_0x90c0('0x4')](_0x45e53f,_0x468ed1);_0x24e05e(null);};}for(var e in events){if(events[_0x90c0('0x5')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0x90c0('0x6')]=MailQueueEvents;
\ No newline at end of file
index 165a1d7..fe8bd87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2186=['MailQueue','mail_queues','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x1205b8,_0x5e7068){var _0x4424c8=function(_0x3bd9c0){while(--_0x3bd9c0){_0x1205b8['push'](_0x1205b8['shift']());}};_0x4424c8(++_0x5e7068);}(_0x2186,0x1d8));var _0x6218=function(_0x192088,_0x6d0e08){_0x192088=_0x192088-0x0;var _0x5086eb=_0x2186[_0x192088];return _0x5086eb;};'use strict';var _=require('lodash');var util=require(_0x6218('0x0'));var logger=require(_0x6218('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6218('0x2'));var rp=require(_0x6218('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6218('0x4'));var config=require(_0x6218('0x5'));var attributes=require('./mailQueue.attributes');module[_0x6218('0x6')]=function(_0x48381a,_0x3b3839){return _0x48381a[_0x6218('0x7')](_0x6218('0x8'),attributes,{'tableName':_0x6218('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe400=['MailQueue','mail_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','exports','define'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xe400,0x1d3));var _0x0e40=function(_0x58ab31,_0x1007c1){_0x58ab31=_0x58ab31-0x0;var _0x26bc8c=_0xe400[_0x58ab31];return _0x26bc8c;};'use strict';var _=require(_0x0e40('0x0'));var util=require(_0x0e40('0x1'));var logger=require(_0x0e40('0x2'))(_0x0e40('0x3'));var moment=require(_0x0e40('0x4'));var BPromise=require(_0x0e40('0x5'));var rp=require(_0x0e40('0x6'));var fs=require('fs');var path=require(_0x0e40('0x7'));var rimraf=require(_0x0e40('0x8'));var config=require(_0x0e40('0x9'));var attributes=require(_0x0e40('0xa'));module[_0x0e40('0xb')]=function(_0x40142e,_0x34b511){return _0x40142e[_0x0e40('0xc')](_0x0e40('0xd'),attributes,{'tableName':_0x0e40('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aa8aac9..c2af246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe844=['http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowMailQueue','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe844,0xba));var _0x4e84=function(_0x1f4b9f,_0x3ffaa3){_0x1f4b9f=_0x1f4b9f-0x0;var _0x475ac6=_0xe844[_0x1f4b9f];return _0x475ac6;};'use strict';var _=require(_0x4e84('0x0'));var util=require(_0x4e84('0x1'));var moment=require(_0x4e84('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4e84('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4e84('0x4'));var logger=require(_0x4e84('0x5'))(_0x4e84('0x6'));var config=require(_0x4e84('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4e84('0x8')][_0x4e84('0x9')]({'port':0x232a});config[_0x4e84('0xa')]=_[_0x4e84('0xb')](config[_0x4e84('0xa')],{'host':_0x4e84('0xc'),'port':0x18eb});var socket=require(_0x4e84('0xd'))(new Redis(config[_0x4e84('0xa')]));require(_0x4e84('0xe'))['register'](socket);function respondWithRpcPromise(_0x3fe79e,_0x110d70,_0x3e3b8){return new BPromise(function(_0x3eb944,_0x4c42a8){return client[_0x4e84('0xf')](_0x3fe79e,_0x3e3b8)[_0x4e84('0x10')](function(_0x24e672){logger[_0x4e84('0x11')](_0x4e84('0x12'),_0x110d70,_0x4e84('0x13'));logger['debug'](_0x4e84('0x14'),_0x110d70,_0x4e84('0x13'),JSON[_0x4e84('0x15')](_0x24e672));if(_0x24e672[_0x4e84('0x16')]){if(_0x24e672[_0x4e84('0x16')][_0x4e84('0x17')]===0x1f4){logger[_0x4e84('0x16')](_0x4e84('0x12'),_0x110d70,_0x24e672[_0x4e84('0x16')]['message']);return _0x4c42a8(_0x24e672[_0x4e84('0x16')]['message']);}logger[_0x4e84('0x16')](_0x4e84('0x12'),_0x110d70,_0x24e672[_0x4e84('0x16')][_0x4e84('0x18')]);return _0x3eb944(_0x24e672[_0x4e84('0x16')]['message']);}else{logger[_0x4e84('0x11')]('MailQueue,\x20%s,\x20%s',_0x110d70,'request\x20sent');_0x3eb944(_0x24e672[_0x4e84('0x19')][_0x4e84('0x18')]);}})[_0x4e84('0x1a')](function(_0x1baf09){logger[_0x4e84('0x16')](_0x4e84('0x12'),_0x110d70,_0x1baf09);_0x4c42a8(_0x1baf09);});});}exports[_0x4e84('0x1b')]=function(_0x48fc96){var _0x15c43b=this;return new Promise(function(_0x3b3ad3,_0x11b884){return db[_0x4e84('0x1c')][_0x4e84('0x1d')]({'raw':_0x48fc96[_0x4e84('0x1e')]?_0x48fc96[_0x4e84('0x1e')][_0x4e84('0x1f')]===undefined?!![]:![]:!![],'where':_0x48fc96['options']?_0x48fc96['options'][_0x4e84('0x20')]||null:null,'attributes':_0x48fc96[_0x4e84('0x1e')]?_0x48fc96[_0x4e84('0x1e')][_0x4e84('0x21')]||null:null,'limit':_0x48fc96[_0x4e84('0x1e')]?_0x48fc96[_0x4e84('0x1e')][_0x4e84('0x22')]||null:null,'include':_0x48fc96['options']?_0x48fc96[_0x4e84('0x1e')][_0x4e84('0x23')]?_[_0x4e84('0x24')](_0x48fc96[_0x4e84('0x1e')][_0x4e84('0x23')],function(_0x5fb1f5){return{'model':db[_0x5fb1f5['model']],'as':_0x5fb1f5['as'],'attributes':_0x5fb1f5[_0x4e84('0x21')],'include':_0x5fb1f5[_0x4e84('0x23')]?_[_0x4e84('0x24')](_0x5fb1f5['include'],function(_0xdb6047){return{'model':db[_0xdb6047['model']],'as':_0xdb6047['as'],'attributes':_0xdb6047[_0x4e84('0x21')],'include':_0xdb6047[_0x4e84('0x23')]?_[_0x4e84('0x24')](_0xdb6047[_0x4e84('0x23')],function(_0x1fa0ae){return{'model':db[_0x1fa0ae[_0x4e84('0x25')]],'as':_0x1fa0ae['as'],'attributes':_0x1fa0ae[_0x4e84('0x21')]};}):[]};}):[]};}):[]:[]})[_0x4e84('0x10')](function(_0x1e3cec){logger[_0x4e84('0x11')]('GetMailQueue',_0x48fc96);logger['debug'](_0x4e84('0x1b'),_0x48fc96,JSON[_0x4e84('0x15')](_0x1e3cec));_0x3b3ad3(_0x1e3cec);})[_0x4e84('0x1a')](function(_0x5cfa03){logger[_0x4e84('0x16')](_0x4e84('0x1b'),_0x5cfa03[_0x4e84('0x18')],_0x48fc96);_0x11b884(_0x15c43b[_0x4e84('0x16')](0x1f4,_0x5cfa03[_0x4e84('0x18')]));});});};exports[_0x4e84('0x26')]=function(_0x2f7b70){var _0x3e9e09=this;return new Promise(function(_0x41d350,_0x4b9ecd){return db[_0x4e84('0x1c')]['find']({'raw':_0x2f7b70[_0x4e84('0x1e')]?_0x2f7b70[_0x4e84('0x1e')][_0x4e84('0x1f')]===undefined?!![]:![]:!![],'where':_0x2f7b70['options']?_0x2f7b70[_0x4e84('0x1e')][_0x4e84('0x20')]||null:null,'attributes':_0x2f7b70[_0x4e84('0x1e')]?_0x2f7b70[_0x4e84('0x1e')][_0x4e84('0x21')]||null:null,'include':_0x2f7b70[_0x4e84('0x1e')]?_0x2f7b70['options']['include']?_[_0x4e84('0x24')](_0x2f7b70[_0x4e84('0x1e')]['include'],function(_0x1db9e9){return{'model':db[_0x1db9e9[_0x4e84('0x25')]],'as':_0x1db9e9['as'],'attributes':_0x1db9e9[_0x4e84('0x21')],'include':_0x1db9e9['include']?_['map'](_0x1db9e9[_0x4e84('0x23')],function(_0x25e926){return{'model':db[_0x25e926['model']],'as':_0x25e926['as'],'attributes':_0x25e926['attributes'],'include':_0x25e926[_0x4e84('0x23')]?_[_0x4e84('0x24')](_0x25e926['include'],function(_0x168a86){return{'model':db[_0x168a86[_0x4e84('0x25')]],'as':_0x168a86['as'],'attributes':_0x168a86['attributes']};}):[]};}):[]};}):[]:[]})[_0x4e84('0x10')](function(_0x314311){logger[_0x4e84('0x11')]('ShowMailQueue',_0x2f7b70);logger['debug'](_0x4e84('0x26'),_0x2f7b70,JSON[_0x4e84('0x15')](_0x314311));_0x41d350(_0x314311);})[_0x4e84('0x1a')](function(_0x4d3c9d){logger[_0x4e84('0x16')](_0x4e84('0x26'),_0x4d3c9d[_0x4e84('0x18')],_0x2f7b70);_0x4b9ecd(_0x3e9e09[_0x4e84('0x16')](0x1f4,_0x4d3c9d[_0x4e84('0x18')]));});});};
\ No newline at end of file
+var _0x7d4d=['code','message','result','catch','GetMailQueue','MailQueue','options','raw','where','attributes','limit','include','map','model','ShowMailQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x191460,_0x16a0cb){var _0x49eeaa=function(_0x3673fa){while(--_0x3673fa){_0x191460['push'](_0x191460['shift']());}};_0x49eeaa(++_0x16a0cb);}(_0x7d4d,0x18a));var _0xd7d4=function(_0xe501ff,_0x955b7e){_0xe501ff=_0xe501ff-0x0;var _0x17135d=_0x7d4d[_0xe501ff];return _0x17135d;};'use strict';var _=require('lodash');var util=require(_0xd7d4('0x0'));var moment=require(_0xd7d4('0x1'));var BPromise=require(_0xd7d4('0x2'));var rs=require(_0xd7d4('0x3'));var fs=require('fs');var Redis=require(_0xd7d4('0x4'));var db=require(_0xd7d4('0x5'))['db'];var utils=require(_0xd7d4('0x6'));var logger=require(_0xd7d4('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd7d4('0x8'));var client=jayson[_0xd7d4('0x9')][_0xd7d4('0xa')]({'port':0x232a});config['redis']=_[_0xd7d4('0xb')](config[_0xd7d4('0xc')],{'host':_0xd7d4('0xd'),'port':0x18eb});var socket=require(_0xd7d4('0xe'))(new Redis(config[_0xd7d4('0xc')]));require(_0xd7d4('0xf'))[_0xd7d4('0x10')](socket);function respondWithRpcPromise(_0x47e13b,_0x432c1e,_0x2abc03){return new BPromise(function(_0x3fe95,_0x7cfc45){return client[_0xd7d4('0x11')](_0x47e13b,_0x2abc03)[_0xd7d4('0x12')](function(_0x40c38a){logger[_0xd7d4('0x13')](_0xd7d4('0x14'),_0x432c1e,'request\x20sent');logger[_0xd7d4('0x15')](_0xd7d4('0x16'),_0x432c1e,_0xd7d4('0x17'),JSON[_0xd7d4('0x18')](_0x40c38a));if(_0x40c38a[_0xd7d4('0x19')]){if(_0x40c38a[_0xd7d4('0x19')][_0xd7d4('0x1a')]===0x1f4){logger[_0xd7d4('0x19')]('MailQueue,\x20%s,\x20%s',_0x432c1e,_0x40c38a[_0xd7d4('0x19')][_0xd7d4('0x1b')]);return _0x7cfc45(_0x40c38a[_0xd7d4('0x19')][_0xd7d4('0x1b')]);}logger[_0xd7d4('0x19')](_0xd7d4('0x14'),_0x432c1e,_0x40c38a['error']['message']);return _0x3fe95(_0x40c38a['error']['message']);}else{logger[_0xd7d4('0x13')](_0xd7d4('0x14'),_0x432c1e,_0xd7d4('0x17'));_0x3fe95(_0x40c38a[_0xd7d4('0x1c')][_0xd7d4('0x1b')]);}})[_0xd7d4('0x1d')](function(_0x1bd27e){logger[_0xd7d4('0x19')](_0xd7d4('0x14'),_0x432c1e,_0x1bd27e);_0x7cfc45(_0x1bd27e);});});}exports[_0xd7d4('0x1e')]=function(_0x30e7d1){var _0x1ed3d6=this;return new Promise(function(_0x1bf200,_0x5ea54e){return db[_0xd7d4('0x1f')]['findAll']({'raw':_0x30e7d1['options']?_0x30e7d1[_0xd7d4('0x20')][_0xd7d4('0x21')]===undefined?!![]:![]:!![],'where':_0x30e7d1[_0xd7d4('0x20')]?_0x30e7d1[_0xd7d4('0x20')][_0xd7d4('0x22')]||null:null,'attributes':_0x30e7d1[_0xd7d4('0x20')]?_0x30e7d1[_0xd7d4('0x20')][_0xd7d4('0x23')]||null:null,'limit':_0x30e7d1[_0xd7d4('0x20')]?_0x30e7d1[_0xd7d4('0x20')][_0xd7d4('0x24')]||null:null,'include':_0x30e7d1[_0xd7d4('0x20')]?_0x30e7d1['options'][_0xd7d4('0x25')]?_[_0xd7d4('0x26')](_0x30e7d1['options']['include'],function(_0x71d327){return{'model':db[_0x71d327[_0xd7d4('0x27')]],'as':_0x71d327['as'],'attributes':_0x71d327[_0xd7d4('0x23')],'include':_0x71d327[_0xd7d4('0x25')]?_[_0xd7d4('0x26')](_0x71d327[_0xd7d4('0x25')],function(_0xbbee5b){return{'model':db[_0xbbee5b[_0xd7d4('0x27')]],'as':_0xbbee5b['as'],'attributes':_0xbbee5b[_0xd7d4('0x23')],'include':_0xbbee5b[_0xd7d4('0x25')]?_['map'](_0xbbee5b['include'],function(_0x4c03d1){return{'model':db[_0x4c03d1[_0xd7d4('0x27')]],'as':_0x4c03d1['as'],'attributes':_0x4c03d1[_0xd7d4('0x23')]};}):[]};}):[]};}):[]:[]})[_0xd7d4('0x12')](function(_0xae1e18){logger[_0xd7d4('0x13')](_0xd7d4('0x1e'),_0x30e7d1);logger[_0xd7d4('0x15')]('GetMailQueue',_0x30e7d1,JSON[_0xd7d4('0x18')](_0xae1e18));_0x1bf200(_0xae1e18);})[_0xd7d4('0x1d')](function(_0xefbf3){logger[_0xd7d4('0x19')](_0xd7d4('0x1e'),_0xefbf3['message'],_0x30e7d1);_0x5ea54e(_0x1ed3d6['error'](0x1f4,_0xefbf3[_0xd7d4('0x1b')]));});});};exports[_0xd7d4('0x28')]=function(_0x2eb18d){var _0x505599=this;return new Promise(function(_0x3e5265,_0x56cf19){return db[_0xd7d4('0x1f')][_0xd7d4('0x29')]({'raw':_0x2eb18d[_0xd7d4('0x20')]?_0x2eb18d['options'][_0xd7d4('0x21')]===undefined?!![]:![]:!![],'where':_0x2eb18d[_0xd7d4('0x20')]?_0x2eb18d[_0xd7d4('0x20')]['where']||null:null,'attributes':_0x2eb18d[_0xd7d4('0x20')]?_0x2eb18d[_0xd7d4('0x20')]['attributes']||null:null,'include':_0x2eb18d[_0xd7d4('0x20')]?_0x2eb18d[_0xd7d4('0x20')][_0xd7d4('0x25')]?_[_0xd7d4('0x26')](_0x2eb18d[_0xd7d4('0x20')][_0xd7d4('0x25')],function(_0x346cbf){return{'model':db[_0x346cbf[_0xd7d4('0x27')]],'as':_0x346cbf['as'],'attributes':_0x346cbf[_0xd7d4('0x23')],'include':_0x346cbf[_0xd7d4('0x25')]?_[_0xd7d4('0x26')](_0x346cbf[_0xd7d4('0x25')],function(_0x4a7013){return{'model':db[_0x4a7013[_0xd7d4('0x27')]],'as':_0x4a7013['as'],'attributes':_0x4a7013[_0xd7d4('0x23')],'include':_0x4a7013[_0xd7d4('0x25')]?_[_0xd7d4('0x26')](_0x4a7013['include'],function(_0x634ed3){return{'model':db[_0x634ed3[_0xd7d4('0x27')]],'as':_0x634ed3['as'],'attributes':_0x634ed3['attributes']};}):[]};}):[]};}):[]:[]})[_0xd7d4('0x12')](function(_0x5cf957){logger['info'](_0xd7d4('0x28'),_0x2eb18d);logger[_0xd7d4('0x15')]('ShowMailQueue',_0x2eb18d,JSON['stringify'](_0x5cf957));_0x3e5265(_0x5cf957);})['catch'](function(_0x1fd7c0){logger['error'](_0xd7d4('0x28'),_0x1fd7c0[_0xd7d4('0x1b')],_0x2eb18d);_0x56cf19(_0x505599[_0xd7d4('0x19')](0x1f4,_0x1fd7c0[_0xd7d4('0x1b')]));});});};
\ No newline at end of file
index b6ab6b1..ea68f26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88de=['save','remove','update','emit','removeListener','length','./mailQueue.events'];(function(_0x4f4e4b,_0x46ea73){var _0x23a628=function(_0x56791){while(--_0x56791){_0x4f4e4b['push'](_0x4f4e4b['shift']());}};_0x23a628(++_0x46ea73);}(_0x88de,0x19c));var _0xe88d=function(_0x4d38f1,_0x2d48c7){_0x4d38f1=_0x4d38f1-0x0;var _0x31b26f=_0x88de[_0x4d38f1];return _0x31b26f;};'use strict';var MailQueueEvents=require(_0xe88d('0x0'));var events=[_0xe88d('0x1'),_0xe88d('0x2'),_0xe88d('0x3')];function createListener(_0x5a5996,_0x487ce1){return function(_0x49b8fa){_0x487ce1[_0xe88d('0x4')](_0x5a5996,_0x49b8fa);};}function removeListener(_0x404d05,_0x4c989b){return function(){MailQueueEvents[_0xe88d('0x5')](_0x404d05,_0x4c989b);};}exports['register']=function(_0x33ce64){for(var _0x1b94dc=0x0,_0x2b25c0=events[_0xe88d('0x6')];_0x1b94dc<_0x2b25c0;_0x1b94dc++){var _0x1bc40f=events[_0x1b94dc];var _0x11ce50=createListener('mailQueue:'+_0x1bc40f,_0x33ce64);MailQueueEvents['on'](_0x1bc40f,_0x11ce50);}};
\ No newline at end of file
+var _0x7871=['remove','update','emit','removeListener','register','mailQueue:','./mailQueue.events'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x7871,0xb5));var _0x1787=function(_0x166c8f,_0x518985){_0x166c8f=_0x166c8f-0x0;var _0x1791d3=_0x7871[_0x166c8f];return _0x1791d3;};'use strict';var MailQueueEvents=require(_0x1787('0x0'));var events=['save',_0x1787('0x1'),_0x1787('0x2')];function createListener(_0x31d18f,_0x3b79aa){return function(_0x404528){_0x3b79aa[_0x1787('0x3')](_0x31d18f,_0x404528);};}function removeListener(_0x15eb27,_0x526c67){return function(){MailQueueEvents[_0x1787('0x4')](_0x15eb27,_0x526c67);};}exports[_0x1787('0x5')]=function(_0x143a97){for(var _0x84bcc6=0x0,_0x314578=events['length'];_0x84bcc6<_0x314578;_0x84bcc6++){var _0x2f60c2=events[_0x84bcc6];var _0x304710=createListener(_0x1787('0x6')+_0x2f60c2,_0x143a97);MailQueueEvents['on'](_0x2f60c2,_0x304710);}};
\ No newline at end of file
index 614b7e4..894b8ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9ab=['util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','index','/describe','isAuthenticated','create','put','/:id','update','delete'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe9ab,0xf0));var _0xbe9a=function(_0x3497ed,_0x218f00){_0x3497ed=_0x3497ed-0x0;var _0x3b4858=_0xe9ab[_0x3497ed];return _0x3b4858;};'use strict';var multer=require('multer');var util=require(_0xbe9a('0x0'));var path=require('path');var timeout=require(_0xbe9a('0x1'));var express=require('express');var router=express[_0xbe9a('0x2')]();var fs_extra=require(_0xbe9a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xbe9a('0x4'));var config=require(_0xbe9a('0x5'));var controller=require(_0xbe9a('0x6'));router[_0xbe9a('0x7')]('/',auth['isAuthenticated'](),controller[_0xbe9a('0x8')]);router[_0xbe9a('0x7')](_0xbe9a('0x9'),auth[_0xbe9a('0xa')](),controller['describe']);router[_0xbe9a('0x7')]('/:id',auth[_0xbe9a('0xa')](),controller['show']);router['post']('/',auth[_0xbe9a('0xa')](),controller[_0xbe9a('0xb')]);router[_0xbe9a('0xc')](_0xbe9a('0xd'),auth[_0xbe9a('0xa')](),controller[_0xbe9a('0xe')]);router[_0xbe9a('0xf')](_0xbe9a('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xb53c=['get','/:id','show','post','create','put','update','delete','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','index','/describe','isAuthenticated','describe'];(function(_0x1031ab,_0x1a69f9){var _0x3f312b=function(_0x22d587){while(--_0x22d587){_0x1031ab['push'](_0x1031ab['shift']());}};_0x3f312b(++_0x1a69f9);}(_0xb53c,0x169));var _0xcb53=function(_0x20c488,_0x188c7a){_0x20c488=_0x20c488-0x0;var _0x5a0816=_0xb53c[_0x20c488];return _0x5a0816;};'use strict';var multer=require(_0xcb53('0x0'));var util=require('util');var path=require(_0xcb53('0x1'));var timeout=require('connect-timeout');var express=require(_0xcb53('0x2'));var router=express[_0xcb53('0x3')]();var fs_extra=require(_0xcb53('0x4'));var auth=require(_0xcb53('0x5'));var interaction=require(_0xcb53('0x6'));var config=require(_0xcb53('0x7'));var controller=require(_0xcb53('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xcb53('0x9')]);router['get'](_0xcb53('0xa'),auth[_0xcb53('0xb')](),controller[_0xcb53('0xc')]);router[_0xcb53('0xd')](_0xcb53('0xe'),auth[_0xcb53('0xb')](),controller[_0xcb53('0xf')]);router[_0xcb53('0x10')]('/',auth[_0xcb53('0xb')](),controller[_0xcb53('0x11')]);router[_0xcb53('0x12')](_0xcb53('0xe'),auth[_0xcb53('0xb')](),controller[_0xcb53('0x13')]);router[_0xcb53('0x14')](_0xcb53('0xe'),auth[_0xcb53('0xb')](),controller['destroy']);module[_0xcb53('0x15')]=router;
\ No newline at end of file
index b23fce7..87af76e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbea=['exports','STRING','DATE','moment','sequelize'];(function(_0x46a2d0,_0x25686f){var _0x120d40=function(_0x361aef){while(--_0x361aef){_0x46a2d0['push'](_0x46a2d0['shift']());}};_0x120d40(++_0x25686f);}(_0xbbea,0xda));var _0xabbe=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xbbea[_0x2641f9];return _0x585741;};'use strict';var moment=require(_0xabbe('0x0'));var Sequelize=require(_0xabbe('0x1'));module[_0xabbe('0x2')]={'uniqueid':{'type':Sequelize[_0xabbe('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xabbe('0x3')]},'joinAt':{'type':Sequelize[_0xabbe('0x4')]},'leaveAt':{'type':Sequelize[_0xabbe('0x4')]},'acceptAt':{'type':Sequelize[_0xabbe('0x4')]},'exitAt':{'type':Sequelize[_0xabbe('0x4')]},'reason':{'type':Sequelize[_0xabbe('0x3')]}};
\ No newline at end of file
+var _0x2707=['STRING','DATE','moment'];(function(_0x5517c0,_0x358609){var _0x33803b=function(_0x513c18){while(--_0x513c18){_0x5517c0['push'](_0x5517c0['shift']());}};_0x33803b(++_0x358609);}(_0x2707,0x143));var _0x7270=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x2707[_0x22b68a];return _0x1ac67a;};'use strict';var moment=require(_0x7270('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x7270('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x7270('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x7270('0x2')]},'reason':{'type':Sequelize[_0x7270('0x1')]}};
\ No newline at end of file
index b766c31..9ccd2fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','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','apply','reject','error','stack','name','send','index','MailQueueReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','map','VIRTUAL','then','includeAll','include','rows','catch','show','params','create','body','update','destroy','find','describe','eml-format'];(function(_0x87f273,_0x321f97){var _0x1f6e0e=function(_0x4ab0c9){while(--_0x4ab0c9){_0x87f273['push'](_0x87f273['shift']());}};_0x1f6e0e(++_0x321f97);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0xf2e3[_0x4a3898];return _0x25ceb0;};'use strict';var emlformat=require(_0x3f2e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3f2e('0x1'));var jsonpatch=require(_0x3f2e('0x2'));var rp=require(_0x3f2e('0x3'));var moment=require(_0x3f2e('0x4'));var BPromise=require(_0x3f2e('0x5'));var Mustache=require(_0x3f2e('0x6'));var util=require(_0x3f2e('0x7'));var path=require(_0x3f2e('0x8'));var sox=require(_0x3f2e('0x9'));var csv=require('to-csv');var ejs=require(_0x3f2e('0xa'));var fs=require('fs');var fs_extra=require(_0x3f2e('0xb'));var _=require(_0x3f2e('0xc'));var squel=require(_0x3f2e('0xd'));var crypto=require(_0x3f2e('0xe'));var jsforce=require(_0x3f2e('0xf'));var deskjs=require(_0x3f2e('0x10'));var toCsv=require(_0x3f2e('0x11'));var querystring=require(_0x3f2e('0x12'));var Papa=require(_0x3f2e('0x13'));var Redis=require(_0x3f2e('0x14'));var authService=require(_0x3f2e('0x15'));var qs=require(_0x3f2e('0x16'));var as=require(_0x3f2e('0x17'));var hardwareService=require(_0x3f2e('0x18'));var logger=require(_0x3f2e('0x19'))(_0x3f2e('0x1a'));var utils=require(_0x3f2e('0x1b'));var config=require(_0x3f2e('0x1c'));var licenseUtil=require('../../config/license/util');var db=require(_0x3f2e('0x1d'))['db'];function respondWithStatusCode(_0xaa6ef5,_0x5471f9){_0x5471f9=_0x5471f9||0xcc;return function(_0xe83663){if(_0xe83663){return _0xaa6ef5[_0x3f2e('0x1e')](_0x5471f9);}return _0xaa6ef5[_0x3f2e('0x1f')](_0x5471f9)[_0x3f2e('0x20')]();};}function respondWithResult(_0x3d20d1,_0x57cba7){_0x57cba7=_0x57cba7||0xc8;return function(_0x298080){if(_0x298080){return _0x3d20d1[_0x3f2e('0x1f')](_0x57cba7)[_0x3f2e('0x21')](_0x298080);}};}function respondWithFilteredResult(_0x4f2e38,_0x43f69e){return function(_0x218b44){if(_0x218b44){var _0x17ef58=typeof _0x43f69e[_0x3f2e('0x22')]===_0x3f2e('0x23')&&typeof _0x43f69e[_0x3f2e('0x24')]===_0x3f2e('0x23');var _0x155411=_0x218b44[_0x3f2e('0x25')];var _0xc00add=_0x17ef58?0x0:_0x43f69e[_0x3f2e('0x22')];var _0x5b9989=_0x17ef58?_0x218b44[_0x3f2e('0x25')]:_0x43f69e[_0x3f2e('0x22')]+_0x43f69e[_0x3f2e('0x24')];var _0xbe899c;if(_0x5b9989>=_0x155411){_0x5b9989=_0x155411;_0xbe899c=0xc8;}else{_0xbe899c=0xce;}_0x4f2e38[_0x3f2e('0x1f')](_0xbe899c);return _0x4f2e38['set']('Content-Range',_0xc00add+'-'+_0x5b9989+'/'+_0x155411)[_0x3f2e('0x21')](_0x218b44);}return null;};}function patchUpdates(_0x11f84c){return function(_0x38bbae){try{jsonpatch[_0x3f2e('0x26')](_0x38bbae,_0x11f84c,!![]);}catch(_0x4381e5){return BPromise[_0x3f2e('0x27')](_0x4381e5);}return _0x38bbae['save']();};}function saveUpdates(_0x5a7047,_0xf81165){return function(_0x37dab2){if(_0x37dab2){return _0x37dab2['update'](_0x5a7047)['then'](function(_0x46bb1c){return _0x46bb1c;});}return null;};}function removeEntity(_0x5646f5,_0x1b8c67){return function(_0x401ed9){if(_0x401ed9){return _0x401ed9['destroy']()['then'](function(){_0x5646f5['status'](0xcc)[_0x3f2e('0x20')]();});}};}function handleEntityNotFound(_0x3d7631,_0x4c61d9){return function(_0x11a7cc){if(!_0x11a7cc){_0x3d7631['sendStatus'](0x194);}return _0x11a7cc;};}function handleError(_0x1ad875,_0x598541){_0x598541=_0x598541||0x1f4;return function(_0x2806d0){logger[_0x3f2e('0x28')](_0x2806d0[_0x3f2e('0x29')]);if(_0x2806d0[_0x3f2e('0x2a')]){delete _0x2806d0[_0x3f2e('0x2a')];}_0x1ad875['status'](_0x598541)[_0x3f2e('0x2b')](_0x2806d0);};}exports[_0x3f2e('0x2c')]=function(_0x5eab38,_0x528063){var _0x2b9fda={},_0x1e5db4={},_0x35f421={'count':0x0,'rows':[]};var _0x22e6ad=_['map'](db[_0x3f2e('0x2d')][_0x3f2e('0x2e')],function(_0x37ddfe){return{'name':_0x37ddfe['fieldName'],'type':_0x37ddfe[_0x3f2e('0x2f')][_0x3f2e('0x30')]};});_0x1e5db4[_0x3f2e('0x31')]=_['map'](_0x22e6ad,_0x3f2e('0x2a'));_0x1e5db4[_0x3f2e('0x32')]=_[_0x3f2e('0x33')](_0x5eab38[_0x3f2e('0x32')]);_0x1e5db4[_0x3f2e('0x34')]=_[_0x3f2e('0x35')](_0x1e5db4['model'],_0x1e5db4[_0x3f2e('0x32')]);_0x2b9fda[_0x3f2e('0x36')]=_[_0x3f2e('0x35')](_0x1e5db4[_0x3f2e('0x31')],qs[_0x3f2e('0x37')](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x37')]));_0x2b9fda['attributes']=_0x2b9fda[_0x3f2e('0x36')][_0x3f2e('0x38')]?_0x2b9fda[_0x3f2e('0x36')]:_0x1e5db4[_0x3f2e('0x31')];if(!_0x5eab38['query']['hasOwnProperty'](_0x3f2e('0x39'))){_0x2b9fda[_0x3f2e('0x24')]=qs[_0x3f2e('0x24')](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x24')]);_0x2b9fda[_0x3f2e('0x22')]=qs[_0x3f2e('0x22')](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x22')]);}_0x2b9fda[_0x3f2e('0x3a')]=qs['sort'](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x3b')]);_0x2b9fda[_0x3f2e('0x3c')]=qs[_0x3f2e('0x34')](_['pick'](_0x5eab38[_0x3f2e('0x32')],_0x1e5db4[_0x3f2e('0x34')]),_0x22e6ad);if(_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x3d')]){_0x2b9fda[_0x3f2e('0x3c')]=_[_0x3f2e('0x3e')](_0x2b9fda[_0x3f2e('0x3c')],{'$or':_[_0x3f2e('0x3f')](_0x22e6ad,function(_0x4c5ac2){if(_0x4c5ac2[_0x3f2e('0x2f')]!==_0x3f2e('0x40')){var _0x238b6b={};_0x238b6b[_0x4c5ac2[_0x3f2e('0x2a')]]={'$like':'%'+_0x5eab38['query'][_0x3f2e('0x3d')]+'%'};return _0x238b6b;}})});}_0x2b9fda=_[_0x3f2e('0x3e')]({},_0x2b9fda,_0x5eab38['options']);var _0x3fc694={'where':_0x2b9fda[_0x3f2e('0x3c')]};return db['MailQueueReport'][_0x3f2e('0x25')](_0x3fc694)[_0x3f2e('0x41')](function(_0x849236){_0x35f421[_0x3f2e('0x25')]=_0x849236;if(_0x5eab38['query'][_0x3f2e('0x42')]){_0x2b9fda[_0x3f2e('0x43')]=[{'all':!![]}];}return db['MailQueueReport']['findAll'](_0x2b9fda);})[_0x3f2e('0x41')](function(_0x23de01){_0x35f421[_0x3f2e('0x44')]=_0x23de01;return _0x35f421;})['then'](respondWithFilteredResult(_0x528063,_0x2b9fda))[_0x3f2e('0x45')](handleError(_0x528063,null));};exports[_0x3f2e('0x46')]=function(_0x43b35a,_0xe9000a){var _0x24df56={'raw':!![],'where':{'id':_0x43b35a[_0x3f2e('0x47')]['id']}},_0x3668dc={};_0x3668dc[_0x3f2e('0x31')]=_[_0x3f2e('0x33')](db[_0x3f2e('0x2d')]['rawAttributes']);_0x3668dc['query']=_[_0x3f2e('0x33')](_0x43b35a[_0x3f2e('0x32')]);_0x3668dc['filters']=_['intersection'](_0x3668dc[_0x3f2e('0x31')],_0x3668dc[_0x3f2e('0x32')]);_0x24df56[_0x3f2e('0x36')]=_['intersection'](_0x3668dc[_0x3f2e('0x31')],qs[_0x3f2e('0x37')](_0x43b35a[_0x3f2e('0x32')]['fields']));_0x24df56[_0x3f2e('0x36')]=_0x24df56[_0x3f2e('0x36')][_0x3f2e('0x38')]?_0x24df56['attributes']:_0x3668dc[_0x3f2e('0x31')];if(_0x43b35a[_0x3f2e('0x32')][_0x3f2e('0x42')]){_0x24df56['include']=[{'all':!![]}];}_0x24df56=_[_0x3f2e('0x3e')]({},_0x24df56,_0x43b35a['options']);return db[_0x3f2e('0x2d')]['find'](_0x24df56)['then'](handleEntityNotFound(_0xe9000a,null))[_0x3f2e('0x41')](respondWithResult(_0xe9000a,null))[_0x3f2e('0x45')](handleError(_0xe9000a,null));};exports[_0x3f2e('0x48')]=function(_0x3d6fd2,_0x3e7fac){return db['MailQueueReport']['create'](_0x3d6fd2[_0x3f2e('0x49')],{})[_0x3f2e('0x41')](respondWithResult(_0x3e7fac,0xc9))[_0x3f2e('0x45')](handleError(_0x3e7fac,null));};exports[_0x3f2e('0x4a')]=function(_0x39dbd1,_0xb891b2){if(_0x39dbd1[_0x3f2e('0x49')]['id']){delete _0x39dbd1[_0x3f2e('0x49')]['id'];}return db[_0x3f2e('0x2d')]['find']({'where':{'id':_0x39dbd1['params']['id']}})[_0x3f2e('0x41')](handleEntityNotFound(_0xb891b2,null))['then'](saveUpdates(_0x39dbd1[_0x3f2e('0x49')],null))[_0x3f2e('0x41')](respondWithResult(_0xb891b2,null))[_0x3f2e('0x45')](handleError(_0xb891b2,null));};exports[_0x3f2e('0x4b')]=function(_0x4b6950,_0xd871da){return db['MailQueueReport'][_0x3f2e('0x4c')]({'where':{'id':_0x4b6950[_0x3f2e('0x47')]['id']}})['then'](handleEntityNotFound(_0xd871da,null))[_0x3f2e('0x41')](removeEntity(_0xd871da,null))['catch'](handleError(_0xd871da,null));};exports[_0x3f2e('0x4d')]=function(_0x336003,_0x9ccf3b){return db['MailQueueReport'][_0x3f2e('0x4d')]()[_0x3f2e('0x41')](respondWithResult(_0x9ccf3b,null))[_0x3f2e('0x45')](handleError(_0x9ccf3b,null));};
\ No newline at end of file
+var _0x5f66=['bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','MailQueueReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','find','create','body','update','catch','describe','rimraf','fast-json-patch','request-promise','moment'];(function(_0x4cc280,_0x3b77f3){var _0x16ed24=function(_0x473e10){while(--_0x473e10){_0x4cc280['push'](_0x4cc280['shift']());}};_0x16ed24(++_0x3b77f3);}(_0x5f66,0x1a0));var _0x65f6=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x5f66[_0x465028];return _0xb783d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'all':!![]}];}return db[_0x65f6('0x27')][_0x65f6('0x3c')](_0x4ac04b);})[_0x65f6('0x21')](function(_0xed4c96){_0x266cfe[_0x65f6('0x3d')]=_0xed4c96;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))['catch'](handleError(_0x559330,null));};exports[_0x65f6('0x3e')]=function(_0x400ed2,_0x377ae5){var _0x181798={'raw':!![],'where':{'id':_0x400ed2[_0x65f6('0x3f')]['id']}},_0x83e2d9={};_0x83e2d9[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x83e2d9[_0x65f6('0x2c')]=_[_0x65f6('0x2b')](_0x400ed2[_0x65f6('0x2c')]);_0x83e2d9[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],_0x83e2d9['query']);_0x181798[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x400ed2['query'][_0x65f6('0x2f')]));_0x181798[_0x65f6('0x30')]=_0x181798[_0x65f6('0x30')]['length']?_0x181798[_0x65f6('0x30')]:_0x83e2d9[_0x65f6('0x2a')];if(_0x400ed2[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x181798['include']=[{'all':!![]}];}_0x181798=_[_0x65f6('0x37')]({},_0x181798,_0x400ed2['options']);return db[_0x65f6('0x27')][_0x65f6('0x40')](_0x181798)['then'](handleEntityNotFound(_0x377ae5,null))[_0x65f6('0x21')](respondWithResult(_0x377ae5,null))['catch'](handleError(_0x377ae5,null));};exports[_0x65f6('0x41')]=function(_0x4d9b76,_0x2d1706){return db[_0x65f6('0x27')][_0x65f6('0x41')](_0x4d9b76[_0x65f6('0x42')],{})['then'](respondWithResult(_0x2d1706,0xc9))['catch'](handleError(_0x2d1706,null));};exports[_0x65f6('0x43')]=function(_0x15d3ba,_0x3b647a){if(_0x15d3ba[_0x65f6('0x42')]['id']){delete _0x15d3ba[_0x65f6('0x42')]['id'];}return db[_0x65f6('0x27')][_0x65f6('0x40')]({'where':{'id':_0x15d3ba[_0x65f6('0x3f')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b647a,null))['then'](saveUpdates(_0x15d3ba[_0x65f6('0x42')],null))[_0x65f6('0x21')](respondWithResult(_0x3b647a,null))[_0x65f6('0x44')](handleError(_0x3b647a,null));};exports['destroy']=function(_0x47e749,_0x42d453){return db['MailQueueReport'][_0x65f6('0x40')]({'where':{'id':_0x47e749[_0x65f6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x42d453,null))[_0x65f6('0x21')](removeEntity(_0x42d453,null))['catch'](handleError(_0x42d453,null));};exports[_0x65f6('0x45')]=function(_0x3b241f,_0x1ca67e){return db['MailQueueReport'][_0x65f6('0x45')]()[_0x65f6('0x21')](respondWithResult(_0x1ca67e,null))['catch'](handleError(_0x1ca67e,null));};
\ No newline at end of file
index 05f3775..bbe7f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21e3=['path','rimraf','../../config/environment','exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4cb2ee,_0x59a3a4){var _0x4c8142=function(_0x6c33aa){while(--_0x6c33aa){_0x4cb2ee['push'](_0x4cb2ee['shift']());}};_0x4c8142(++_0x59a3a4);}(_0x21e3,0x80));var _0x321e=function(_0x2aa275,_0x1bf993){_0x2aa275=_0x2aa275-0x0;var _0x37db6c=_0x21e3[_0x2aa275];return _0x37db6c;};'use strict';var _=require(_0x321e('0x0'));var util=require(_0x321e('0x1'));var logger=require(_0x321e('0x2'))(_0x321e('0x3'));var moment=require(_0x321e('0x4'));var BPromise=require(_0x321e('0x5'));var rp=require(_0x321e('0x6'));var fs=require('fs');var path=require(_0x321e('0x7'));var rimraf=require(_0x321e('0x8'));var config=require(_0x321e('0x9'));var attributes=require('./mailQueueReport.attributes');module[_0x321e('0xa')]=function(_0x3cf7ef,_0x31bc89){return _0x3cf7ef[_0x321e('0xb')](_0x321e('0xc'),attributes,{'tableName':_0x321e('0xd'),'paranoid':![],'indexes':[{'name':_0x321e('0xe'),'fields':[_0x321e('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa635=['define','MailQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./mailQueueReport.attributes','exports'];(function(_0x4c9f6a,_0xcb2cb2){var _0x5df5b9=function(_0x303cf2){while(--_0x303cf2){_0x4c9f6a['push'](_0x4c9f6a['shift']());}};_0x5df5b9(++_0xcb2cb2);}(_0xa635,0x73));var _0x5a63=function(_0x1e1ec0,_0x276bdd){_0x1e1ec0=_0x1e1ec0-0x0;var _0x215da1=_0xa635[_0x1e1ec0];return _0x215da1;};'use strict';var _=require(_0x5a63('0x0'));var util=require(_0x5a63('0x1'));var logger=require(_0x5a63('0x2'))(_0x5a63('0x3'));var moment=require(_0x5a63('0x4'));var BPromise=require(_0x5a63('0x5'));var rp=require(_0x5a63('0x6'));var fs=require('fs');var path=require(_0x5a63('0x7'));var rimraf=require('rimraf');var config=require(_0x5a63('0x8'));var attributes=require(_0x5a63('0x9'));module[_0x5a63('0xa')]=function(_0x58df88,_0x5ad151){return _0x58df88[_0x5a63('0xb')](_0x5a63('0xc'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x5a63('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 1d3311d..388a888 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(_0x5f5523,_0x170eee){var _0x281e9d=function(_0x5b9161){while(--_0x5b9161){_0x5f5523['push'](_0x5f5523['shift']());}};_0x281e9d(++_0x170eee);}(_0x326f,0xd1));var _0xf326=function(_0x56428b,_0x322603){_0x56428b=_0x56428b-0x0;var _0x1364a7=_0x326f[_0x56428b];return _0x1364a7;};'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 _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','MailQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateMailQueueReport','body','options','raw','stringify','MailQueueReport','update','where','UpdateMailQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x1bf34f,_0x19c960){var _0x2d15c9=function(_0x1ea399){while(--_0x1ea399){_0x1bf34f['push'](_0x1bf34f['shift']());}};_0x2d15c9(++_0x19c960);}(_0x1261,0x144));var _0x1126=function(_0xb0de07,_0x3ca2a0){_0xb0de07=_0xb0de07-0x0;var _0x4633d8=_0x1261[_0xb0de07];return _0x4633d8;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailQueueReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}exports[_0x1126('0x15')]=function(_0x4a7b49){var _0x4d2b38=this;return new Promise(function(_0x22ae0b,_0x2b2487){return db['MailQueueReport']['create'](_0x4a7b49[_0x1126('0x16')],{'raw':_0x4a7b49['options']?_0x4a7b49[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![]})[_0x1126('0xc')](function(_0x54400a){logger[_0x1126('0xd')]('CreateMailQueueReport',_0x4a7b49);logger['debug'](_0x1126('0x15'),_0x4a7b49,JSON[_0x1126('0x19')](_0x54400a));_0x22ae0b(_0x54400a);})[_0x1126('0x14')](function(_0x36d254){logger['error'](_0x1126('0x15'),_0x36d254[_0x1126('0x13')],_0x4a7b49);_0x2b2487(_0x4d2b38['error'](0x1f4,_0x36d254[_0x1126('0x13')]));});});};exports['UpdateMailQueueReport']=function(_0x529dd9){var _0x4b57ab=this;return new Promise(function(_0x2199d9,_0x15bcc3){return db[_0x1126('0x1a')][_0x1126('0x1b')](_0x529dd9[_0x1126('0x16')],{'raw':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529dd9['options']?_0x529dd9[_0x1126('0x17')][_0x1126('0x1c')]||null:null,'attributes':_0x529dd9[_0x1126('0x17')]?_0x529dd9['options']['attributes']||null:null,'limit':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')]['limit']||null:null})[_0x1126('0xc')](function(_0x23d2bc){logger['info'](_0x1126('0x1d'),_0x529dd9);logger['debug'](_0x1126('0x1d'),_0x529dd9,JSON['stringify'](_0x23d2bc));_0x2199d9(_0x23d2bc);})[_0x1126('0x14')](function(_0x583ce6){logger[_0x1126('0x11')]('UpdateMailQueueReport',_0x583ce6['message'],_0x529dd9);_0x15bcc3(_0x4b57ab['error'](0x1f4,_0x583ce6[_0x1126('0x13')]));});});};
\ No newline at end of file
index 8850886..f2580e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x9aa35e,_0x1aa81c){var _0x5877db=function(_0x45ead0){while(--_0x45ead0){_0x9aa35e['push'](_0x9aa35e['shift']());}};_0x5877db(++_0x1aa81c);}(_0xedd9,0xfc));var _0x9edd=function(_0x57f595,_0x9881e){_0x57f595=_0x57f595-0x0;var _0x2e96bc=_0xedd9[_0x57f595];return _0x2e96bc;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x1de77e,_0x503bf2){var _0x25d751=function(_0x3d093c){while(--_0x3d093c){_0x1de77e['push'](_0x1de77e['shift']());}};_0x25d751(++_0x503bf2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4bc4c8,_0x3139d3){_0x4bc4c8=_0x4bc4c8-0x0;var _0x3bb121=_0xcb91[_0x4bc4c8];return _0x3bb121;};'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 19e0f95..96c05b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d83=['BOOLEAN','INTEGER','INBOX','sequelize','exports','STRING'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x7d83,0x18f));var _0x37d8=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x7d83[_0x5c351c];return _0x26f3b3;};'use strict';var Sequelize=require(_0x37d8('0x0'));module[_0x37d8('0x1')]={'description':{'type':Sequelize[_0x37d8('0x2')]},'host':{'type':Sequelize[_0x37d8('0x2')]},'authentication':{'type':Sequelize[_0x37d8('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x37d8('0x2')]},'password':{'type':Sequelize[_0x37d8('0x2')]},'port':{'type':Sequelize[_0x37d8('0x4')]},'tls':{'type':Sequelize[_0x37d8('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x37d8('0x5')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x37d8('0x4')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xb093=['INTEGER','INBOX','sequelize','exports','STRING','BOOLEAN'];(function(_0x2cec4d,_0x4efe7f){var _0x68a65=function(_0x5503c4){while(--_0x5503c4){_0x2cec4d['push'](_0x2cec4d['shift']());}};_0x68a65(++_0x4efe7f);}(_0xb093,0x188));var _0x3b09=function(_0x7ecb42,_0x285da2){_0x7ecb42=_0x7ecb42-0x0;var _0x28b560=_0xb093[_0x7ecb42];return _0x28b560;};'use strict';var Sequelize=require(_0x3b09('0x0'));module[_0x3b09('0x1')]={'description':{'type':Sequelize[_0x3b09('0x2')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x3b09('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x3b09('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x3b09('0x4')]},'tls':{'type':Sequelize[_0x3b09('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3b09('0x2')],'defaultValue':_0x3b09('0x5')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3b09('0x4')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index bbedf50..df306aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e40=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailServerIn','mail_servers_in','util'];(function(_0x1e6db3,_0x5643ac){var _0x1de886=function(_0x351318){while(--_0x351318){_0x1e6db3['push'](_0x1e6db3['shift']());}};_0x1de886(++_0x5643ac);}(_0x6e40,0x144));var _0x06e4=function(_0x212a52,_0x18555c){_0x212a52=_0x212a52-0x0;var _0x337dad=_0x6e40[_0x212a52];return _0x337dad;};'use strict';var _=require('lodash');var util=require(_0x06e4('0x0'));var logger=require(_0x06e4('0x1'))(_0x06e4('0x2'));var moment=require(_0x06e4('0x3'));var BPromise=require(_0x06e4('0x4'));var rp=require(_0x06e4('0x5'));var fs=require('fs');var path=require(_0x06e4('0x6'));var rimraf=require(_0x06e4('0x7'));var config=require(_0x06e4('0x8'));var attributes=require('./mailServerIn.attributes');module[_0x06e4('0x9')]=function(_0x432d2b,_0x2eaace){return _0x432d2b[_0x06e4('0xa')](_0x06e4('0xb'),attributes,{'tableName':_0x06e4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2da=['path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','util','api','moment','bluebird','request-promise'];(function(_0x4fb459,_0x39daf6){var _0x5680f7=function(_0x5d3d66){while(--_0x5d3d66){_0x4fb459['push'](_0x4fb459['shift']());}};_0x5680f7(++_0x39daf6);}(_0xb2da,0x166));var _0xab2d=function(_0x40de37,_0x58a91d){_0x40de37=_0x40de37-0x0;var _0x1ba03e=_0xb2da[_0x40de37];return _0x1ba03e;};'use strict';var _=require(_0xab2d('0x0'));var util=require(_0xab2d('0x1'));var logger=require('../../config/logger')(_0xab2d('0x2'));var moment=require(_0xab2d('0x3'));var BPromise=require(_0xab2d('0x4'));var rp=require(_0xab2d('0x5'));var fs=require('fs');var path=require(_0xab2d('0x6'));var rimraf=require(_0xab2d('0x7'));var config=require(_0xab2d('0x8'));var attributes=require(_0xab2d('0x9'));module[_0xab2d('0xa')]=function(_0x508d2f,_0x2eb581){return _0x508d2f[_0xab2d('0xb')](_0xab2d('0xc'),attributes,{'tableName':_0xab2d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bfa374c..3585ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eec=['jayson/promise','http','request','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetMailServerIn','MailServerIn','options','where','attributes','include','model','map','then','stringify','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x579250,_0x18a535){var _0x994b9f=function(_0x4bdd02){while(--_0x4bdd02){_0x579250['push'](_0x579250['shift']());}};_0x994b9f(++_0x18a535);}(_0x0eec,0xac));var _0xc0ee=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0eec[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc0ee('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc0ee('0x1'));var rs=require(_0xc0ee('0x2'));var fs=require('fs');var Redis=require(_0xc0ee('0x3'));var db=require(_0xc0ee('0x4'))['db'];var utils=require(_0xc0ee('0x5'));var logger=require(_0xc0ee('0x6'))(_0xc0ee('0x7'));var config=require('../../config/environment');var jayson=require(_0xc0ee('0x8'));var client=jayson['client'][_0xc0ee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39022a,_0x2d364d,_0x3aaca5){return new BPromise(function(_0x38b387,_0x1d9dca){return client[_0xc0ee('0xa')](_0x39022a,_0x3aaca5)['then'](function(_0x141f4a){logger[_0xc0ee('0xb')](_0xc0ee('0xc'),_0x2d364d,_0xc0ee('0xd'));logger[_0xc0ee('0xe')](_0xc0ee('0xf'),_0x2d364d,_0xc0ee('0xd'),JSON['stringify'](_0x141f4a));if(_0x141f4a[_0xc0ee('0x10')]){if(_0x141f4a[_0xc0ee('0x10')][_0xc0ee('0x11')]===0x1f4){logger[_0xc0ee('0x10')](_0xc0ee('0xc'),_0x2d364d,_0x141f4a[_0xc0ee('0x10')][_0xc0ee('0x12')]);return _0x1d9dca(_0x141f4a[_0xc0ee('0x10')][_0xc0ee('0x12')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x2d364d,_0x141f4a[_0xc0ee('0x10')][_0xc0ee('0x12')]);return _0x38b387(_0x141f4a[_0xc0ee('0x10')]['message']);}else{logger[_0xc0ee('0xb')](_0xc0ee('0xc'),_0x2d364d,_0xc0ee('0xd'));_0x38b387(_0x141f4a['result']['message']);}})[_0xc0ee('0x13')](function(_0x4dc6de){logger[_0xc0ee('0x10')](_0xc0ee('0xc'),_0x2d364d,_0x4dc6de);_0x1d9dca(_0x4dc6de);});});}exports[_0xc0ee('0x14')]=function(_0x59aad9){var _0x4e7e82=this;return new Promise(function(_0x16d050,_0x276e2e){return db[_0xc0ee('0x15')]['findAll']({'raw':_0x59aad9[_0xc0ee('0x16')]?_0x59aad9[_0xc0ee('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x59aad9['options']?_0x59aad9[_0xc0ee('0x16')][_0xc0ee('0x17')]||null:null,'attributes':_0x59aad9['options']?_0x59aad9[_0xc0ee('0x16')][_0xc0ee('0x18')]||null:null,'limit':_0x59aad9[_0xc0ee('0x16')]?_0x59aad9['options']['limit']||null:null,'include':_0x59aad9['options']?_0x59aad9[_0xc0ee('0x16')][_0xc0ee('0x19')]?_['map'](_0x59aad9[_0xc0ee('0x16')][_0xc0ee('0x19')],function(_0x20b657){return{'model':db[_0x20b657[_0xc0ee('0x1a')]],'as':_0x20b657['as'],'attributes':_0x20b657[_0xc0ee('0x18')],'include':_0x20b657[_0xc0ee('0x19')]?_[_0xc0ee('0x1b')](_0x20b657[_0xc0ee('0x19')],function(_0x38abc9){return{'model':db[_0x38abc9[_0xc0ee('0x1a')]],'as':_0x38abc9['as'],'attributes':_0x38abc9[_0xc0ee('0x18')],'include':_0x38abc9[_0xc0ee('0x19')]?_[_0xc0ee('0x1b')](_0x38abc9[_0xc0ee('0x19')],function(_0x4288e1){return{'model':db[_0x4288e1['model']],'as':_0x4288e1['as'],'attributes':_0x4288e1[_0xc0ee('0x18')]};}):[]};}):[]};}):[]:[]})[_0xc0ee('0x1c')](function(_0x4c1b5c){logger[_0xc0ee('0xb')]('GetMailServerIn',_0x59aad9);logger[_0xc0ee('0xe')](_0xc0ee('0x14'),_0x59aad9,JSON[_0xc0ee('0x1d')](_0x4c1b5c));_0x16d050(_0x4c1b5c);})[_0xc0ee('0x13')](function(_0x46ca29){logger[_0xc0ee('0x10')](_0xc0ee('0x14'),_0x46ca29[_0xc0ee('0x12')],_0x59aad9);_0x276e2e(_0x4e7e82[_0xc0ee('0x10')](0x1f4,_0x46ca29[_0xc0ee('0x12')]));});});};
\ No newline at end of file
+var _0x1c8a=['http','then','info','debug','request\x20sent','code','error','MailServerIn,\x20%s,\x20%s','message','result','catch','MailServerIn','findAll','options','raw','where','attributes','limit','include','map','model','GetMailServerIn','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client'];(function(_0x5c9e54,_0x5dd451){var _0x118611=function(_0x2a92da){while(--_0x2a92da){_0x5c9e54['push'](_0x5c9e54['shift']());}};_0x118611(++_0x5dd451);}(_0x1c8a,0x140));var _0xa1c8=function(_0x2cac01,_0x2e8b3d){_0x2cac01=_0x2cac01-0x0;var _0x2257b7=_0x1c8a[_0x2cac01];return _0x2257b7;};'use strict';var _=require(_0xa1c8('0x0'));var util=require(_0xa1c8('0x1'));var moment=require(_0xa1c8('0x2'));var BPromise=require(_0xa1c8('0x3'));var rs=require(_0xa1c8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa1c8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa1c8('0x6'))(_0xa1c8('0x7'));var config=require(_0xa1c8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa1c8('0x9')][_0xa1c8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x14d2f0,_0x57d2d4,_0x32993e){return new BPromise(function(_0xf93962,_0x44cf0d){return client['request'](_0x14d2f0,_0x32993e)[_0xa1c8('0xb')](function(_0x23d253){logger[_0xa1c8('0xc')]('MailServerIn,\x20%s,\x20%s',_0x57d2d4,'request\x20sent');logger[_0xa1c8('0xd')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x57d2d4,_0xa1c8('0xe'),JSON['stringify'](_0x23d253));if(_0x23d253['error']){if(_0x23d253['error'][_0xa1c8('0xf')]===0x1f4){logger[_0xa1c8('0x10')](_0xa1c8('0x11'),_0x57d2d4,_0x23d253[_0xa1c8('0x10')][_0xa1c8('0x12')]);return _0x44cf0d(_0x23d253[_0xa1c8('0x10')]['message']);}logger[_0xa1c8('0x10')](_0xa1c8('0x11'),_0x57d2d4,_0x23d253[_0xa1c8('0x10')][_0xa1c8('0x12')]);return _0xf93962(_0x23d253[_0xa1c8('0x10')][_0xa1c8('0x12')]);}else{logger['info'](_0xa1c8('0x11'),_0x57d2d4,_0xa1c8('0xe'));_0xf93962(_0x23d253[_0xa1c8('0x13')][_0xa1c8('0x12')]);}})[_0xa1c8('0x14')](function(_0x5ab171){logger[_0xa1c8('0x10')]('MailServerIn,\x20%s,\x20%s',_0x57d2d4,_0x5ab171);_0x44cf0d(_0x5ab171);});});}exports['GetMailServerIn']=function(_0x1fe87f){var _0x112ab0=this;return new Promise(function(_0x57fe23,_0x3c66c3){return db[_0xa1c8('0x15')][_0xa1c8('0x16')]({'raw':_0x1fe87f['options']?_0x1fe87f[_0xa1c8('0x17')][_0xa1c8('0x18')]===undefined?!![]:![]:!![],'where':_0x1fe87f[_0xa1c8('0x17')]?_0x1fe87f['options'][_0xa1c8('0x19')]||null:null,'attributes':_0x1fe87f[_0xa1c8('0x17')]?_0x1fe87f['options'][_0xa1c8('0x1a')]||null:null,'limit':_0x1fe87f[_0xa1c8('0x17')]?_0x1fe87f[_0xa1c8('0x17')][_0xa1c8('0x1b')]||null:null,'include':_0x1fe87f[_0xa1c8('0x17')]?_0x1fe87f[_0xa1c8('0x17')][_0xa1c8('0x1c')]?_[_0xa1c8('0x1d')](_0x1fe87f[_0xa1c8('0x17')][_0xa1c8('0x1c')],function(_0x28473c){return{'model':db[_0x28473c[_0xa1c8('0x1e')]],'as':_0x28473c['as'],'attributes':_0x28473c[_0xa1c8('0x1a')],'include':_0x28473c[_0xa1c8('0x1c')]?_[_0xa1c8('0x1d')](_0x28473c[_0xa1c8('0x1c')],function(_0x572362){return{'model':db[_0x572362[_0xa1c8('0x1e')]],'as':_0x572362['as'],'attributes':_0x572362['attributes'],'include':_0x572362[_0xa1c8('0x1c')]?_['map'](_0x572362[_0xa1c8('0x1c')],function(_0x508742){return{'model':db[_0x508742[_0xa1c8('0x1e')]],'as':_0x508742['as'],'attributes':_0x508742['attributes']};}):[]};}):[]};}):[]:[]})[_0xa1c8('0xb')](function(_0x914018){logger[_0xa1c8('0xc')](_0xa1c8('0x1f'),_0x1fe87f);logger['debug'](_0xa1c8('0x1f'),_0x1fe87f,JSON[_0xa1c8('0x20')](_0x914018));_0x57fe23(_0x914018);})[_0xa1c8('0x14')](function(_0x4d0a4f){logger['error'](_0xa1c8('0x1f'),_0x4d0a4f[_0xa1c8('0x12')],_0x1fe87f);_0x3c66c3(_0x112ab0['error'](0x1f4,_0x4d0a4f[_0xa1c8('0x12')]));});});};
\ No newline at end of file
index f609947..c4d2725 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(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x7a54,0x106));var _0x47a5=function(_0x459e92,_0x52b19a){_0x459e92=_0x459e92-0x0;var _0x482432=_0x7a54[_0x459e92];return _0x482432;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index 5508a65..9250759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['BOOLEAN','sequelize','exports','STRING','INTEGER'];(function(_0xa07ea6,_0xbb55be){var _0x4c4d42=function(_0x285434){while(--_0x285434){_0xa07ea6['push'](_0xa07ea6['shift']());}};_0x4c4d42(++_0xbb55be);}(_0xc788,0xc4));var _0x8c78=function(_0x40f4cc,_0x432f55){_0x40f4cc=_0x40f4cc-0x0;var _0x458315=_0xc788[_0x40f4cc];return _0x458315;};'use strict';var Sequelize=require(_0x8c78('0x0'));module[_0x8c78('0x1')]={'description':{'type':Sequelize[_0x8c78('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x8c78('0x2')]},'port':{'type':Sequelize[_0x8c78('0x3')]},'secure':{'type':Sequelize[_0x8c78('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x8c78('0x2')]},'authentication':{'type':Sequelize[_0x8c78('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x4fc2=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x4db72a,_0x5e838b){var _0x394224=function(_0x6fdb6c){while(--_0x6fdb6c){_0x4db72a['push'](_0x4db72a['shift']());}};_0x394224(++_0x5e838b);}(_0x4fc2,0x111));var _0x24fc=function(_0xdee30,_0x41b7b5){_0xdee30=_0xdee30-0x0;var _0x4b95ee=_0x4fc2[_0xdee30];return _0x4b95ee;};'use strict';var Sequelize=require(_0x24fc('0x0'));module[_0x24fc('0x1')]={'description':{'type':Sequelize[_0x24fc('0x2')]},'host':{'type':Sequelize[_0x24fc('0x2')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x24fc('0x2')]},'port':{'type':Sequelize[_0x24fc('0x3')]},'secure':{'type':Sequelize[_0x24fc('0x4')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x24fc('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x24fc('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 2c29616..2453f60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb7a=['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','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','destroy','end','name','status','send','map','MailServerOut','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','catch','keys','rawAttributes','create','body','find','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel'];(function(_0x5bb562,_0x1fe14b){var _0x12ad19=function(_0x589e5a){while(--_0x589e5a){_0x5bb562['push'](_0x5bb562['shift']());}};_0x12ad19(++_0x1fe14b);}(_0xfb7a,0x19d));var _0xafb7=function(_0x3861f7,_0x995b22){_0x3861f7=_0x3861f7-0x0;var _0x50879f=_0xfb7a[_0x3861f7];return _0x50879f;};'use strict';var emlformat=require(_0xafb7('0x0'));var rimraf=require(_0xafb7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xafb7('0x2'));var rp=require(_0xafb7('0x3'));var moment=require(_0xafb7('0x4'));var BPromise=require(_0xafb7('0x5'));var Mustache=require(_0xafb7('0x6'));var util=require(_0xafb7('0x7'));var path=require(_0xafb7('0x8'));var sox=require('sox');var csv=require(_0xafb7('0x9'));var ejs=require(_0xafb7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xafb7('0xb'));var squel=require(_0xafb7('0xc'));var crypto=require(_0xafb7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xafb7('0xe'));var toCsv=require(_0xafb7('0x9'));var querystring=require('querystring');var Papa=require(_0xafb7('0xf'));var Redis=require(_0xafb7('0x10'));var authService=require(_0xafb7('0x11'));var qs=require(_0xafb7('0x12'));var as=require(_0xafb7('0x13'));var hardwareService=require(_0xafb7('0x14'));var logger=require(_0xafb7('0x15'))(_0xafb7('0x16'));var utils=require(_0xafb7('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xafb7('0x18'));var db=require(_0xafb7('0x19'))['db'];function respondWithStatusCode(_0x3882af,_0x3d8730){_0x3d8730=_0x3d8730||0xcc;return function(_0x1f75c8){if(_0x1f75c8){return _0x3882af[_0xafb7('0x1a')](_0x3d8730);}return _0x3882af['status'](_0x3d8730)['end']();};}function respondWithResult(_0x5e7e0c,_0x559cd3){_0x559cd3=_0x559cd3||0xc8;return function(_0x5b0099){if(_0x5b0099){return _0x5e7e0c['status'](_0x559cd3)[_0xafb7('0x1b')](_0x5b0099);}};}function respondWithFilteredResult(_0x40a5ff,_0x25a65f){return function(_0x4ec623){if(_0x4ec623){var _0x16bdf1=typeof _0x25a65f['offset']===_0xafb7('0x1c')&&typeof _0x25a65f[_0xafb7('0x1d')]===_0xafb7('0x1c');var _0x45c9f0=_0x4ec623[_0xafb7('0x1e')];var _0x2f6996=_0x16bdf1?0x0:_0x25a65f['offset'];var _0xdebf38=_0x16bdf1?_0x4ec623[_0xafb7('0x1e')]:_0x25a65f[_0xafb7('0x1f')]+_0x25a65f[_0xafb7('0x1d')];var _0x186cbe;if(_0xdebf38>=_0x45c9f0){_0xdebf38=_0x45c9f0;_0x186cbe=0xc8;}else{_0x186cbe=0xce;}_0x40a5ff['status'](_0x186cbe);return _0x40a5ff['set'](_0xafb7('0x20'),_0x2f6996+'-'+_0xdebf38+'/'+_0x45c9f0)[_0xafb7('0x1b')](_0x4ec623);}return null;};}function patchUpdates(_0x4dd8cd){return function(_0x3fb815){try{jsonpatch[_0xafb7('0x21')](_0x3fb815,_0x4dd8cd,!![]);}catch(_0x37a567){return BPromise[_0xafb7('0x22')](_0x37a567);}return _0x3fb815['save']();};}function saveUpdates(_0x5192b1,_0x4a5bd3){return function(_0x105d08){if(_0x105d08){return _0x105d08[_0xafb7('0x23')](_0x5192b1)[_0xafb7('0x24')](function(_0x308344){return _0x308344;});}return null;};}function removeEntity(_0x48e048,_0x149347){return function(_0xc43ce2){if(_0xc43ce2){return _0xc43ce2[_0xafb7('0x25')]()['then'](function(){_0x48e048['status'](0xcc)[_0xafb7('0x26')]();});}};}function handleEntityNotFound(_0x2e5379,_0x73fa20){return function(_0x2b08cd){if(!_0x2b08cd){_0x2e5379[_0xafb7('0x1a')](0x194);}return _0x2b08cd;};}function handleError(_0x25e6a0,_0x28f27e){_0x28f27e=_0x28f27e||0x1f4;return function(_0x8aa9a1){logger['error'](_0x8aa9a1['stack']);if(_0x8aa9a1[_0xafb7('0x27')]){delete _0x8aa9a1[_0xafb7('0x27')];}_0x25e6a0[_0xafb7('0x28')](_0x28f27e)[_0xafb7('0x29')](_0x8aa9a1);};}exports['index']=function(_0x1c4290,_0xf4e729){var _0x1717f9={},_0x4e5874={},_0x5b7180={'count':0x0,'rows':[]};var _0x118670=_[_0xafb7('0x2a')](db[_0xafb7('0x2b')]['rawAttributes'],function(_0x5b3186){return{'name':_0x5b3186[_0xafb7('0x2c')],'type':_0x5b3186[_0xafb7('0x2d')][_0xafb7('0x2e')]};});_0x4e5874['model']=_[_0xafb7('0x2a')](_0x118670,_0xafb7('0x27'));_0x4e5874[_0xafb7('0x2f')]=_['keys'](_0x1c4290['query']);_0x4e5874[_0xafb7('0x30')]=_[_0xafb7('0x31')](_0x4e5874['model'],_0x4e5874[_0xafb7('0x2f')]);_0x1717f9[_0xafb7('0x32')]=_[_0xafb7('0x31')](_0x4e5874[_0xafb7('0x33')],qs[_0xafb7('0x34')](_0x1c4290['query'][_0xafb7('0x34')]));_0x1717f9[_0xafb7('0x32')]=_0x1717f9[_0xafb7('0x32')][_0xafb7('0x35')]?_0x1717f9['attributes']:_0x4e5874['model'];if(!_0x1c4290[_0xafb7('0x2f')][_0xafb7('0x36')](_0xafb7('0x37'))){_0x1717f9[_0xafb7('0x1d')]=qs['limit'](_0x1c4290[_0xafb7('0x2f')][_0xafb7('0x1d')]);_0x1717f9[_0xafb7('0x1f')]=qs[_0xafb7('0x1f')](_0x1c4290['query'][_0xafb7('0x1f')]);}_0x1717f9[_0xafb7('0x38')]=qs['sort'](_0x1c4290[_0xafb7('0x2f')][_0xafb7('0x39')]);_0x1717f9[_0xafb7('0x3a')]=qs['filters'](_['pick'](_0x1c4290[_0xafb7('0x2f')],_0x4e5874[_0xafb7('0x30')]),_0x118670);if(_0x1c4290[_0xafb7('0x2f')][_0xafb7('0x3b')]){_0x1717f9['where']=_[_0xafb7('0x3c')](_0x1717f9[_0xafb7('0x3a')],{'$or':_[_0xafb7('0x2a')](_0x118670,function(_0x2221c0){if(_0x2221c0[_0xafb7('0x2d')]!=='VIRTUAL'){var _0x482f72={};_0x482f72[_0x2221c0[_0xafb7('0x27')]]={'$like':'%'+_0x1c4290['query'][_0xafb7('0x3b')]+'%'};return _0x482f72;}})});}_0x1717f9=_[_0xafb7('0x3c')]({},_0x1717f9,_0x1c4290['options']);var _0x3bc274={'where':_0x1717f9[_0xafb7('0x3a')]};return db[_0xafb7('0x2b')][_0xafb7('0x1e')](_0x3bc274)[_0xafb7('0x24')](function(_0x24213d){_0x5b7180['count']=_0x24213d;if(_0x1c4290[_0xafb7('0x2f')][_0xafb7('0x3d')]){_0x1717f9[_0xafb7('0x3e')]=[{'all':!![]}];}return db[_0xafb7('0x2b')][_0xafb7('0x3f')](_0x1717f9);})[_0xafb7('0x24')](function(_0x192360){_0x5b7180['rows']=_0x192360;return _0x5b7180;})[_0xafb7('0x24')](respondWithFilteredResult(_0xf4e729,_0x1717f9))[_0xafb7('0x40')](handleError(_0xf4e729,null));};exports['show']=function(_0x254c97,_0x4ab9f8){var _0x5e631f={'raw':!![],'where':{'id':_0x254c97['params']['id']}},_0x49b5c5={};_0x49b5c5[_0xafb7('0x33')]=_[_0xafb7('0x41')](db[_0xafb7('0x2b')][_0xafb7('0x42')]);_0x49b5c5[_0xafb7('0x2f')]=_[_0xafb7('0x41')](_0x254c97[_0xafb7('0x2f')]);_0x49b5c5[_0xafb7('0x30')]=_['intersection'](_0x49b5c5[_0xafb7('0x33')],_0x49b5c5[_0xafb7('0x2f')]);_0x5e631f[_0xafb7('0x32')]=_['intersection'](_0x49b5c5['model'],qs['fields'](_0x254c97[_0xafb7('0x2f')][_0xafb7('0x34')]));_0x5e631f[_0xafb7('0x32')]=_0x5e631f[_0xafb7('0x32')][_0xafb7('0x35')]?_0x5e631f[_0xafb7('0x32')]:_0x49b5c5[_0xafb7('0x33')];if(_0x254c97['query'][_0xafb7('0x3d')]){_0x5e631f['include']=[{'all':!![]}];}_0x5e631f=_[_0xafb7('0x3c')]({},_0x5e631f,_0x254c97['options']);return db[_0xafb7('0x2b')]['find'](_0x5e631f)[_0xafb7('0x24')](handleEntityNotFound(_0x4ab9f8,null))['then'](respondWithResult(_0x4ab9f8,null))[_0xafb7('0x40')](handleError(_0x4ab9f8,null));};exports[_0xafb7('0x43')]=function(_0x11d313,_0x42913b){return db[_0xafb7('0x2b')][_0xafb7('0x43')](_0x11d313[_0xafb7('0x44')],{})[_0xafb7('0x24')](respondWithResult(_0x42913b,0xc9))[_0xafb7('0x40')](handleError(_0x42913b,null));};exports['update']=function(_0x20ba38,_0x3f6d58){if(_0x20ba38['body']['id']){delete _0x20ba38[_0xafb7('0x44')]['id'];}return db[_0xafb7('0x2b')][_0xafb7('0x45')]({'where':{'id':_0x20ba38['params']['id']}})[_0xafb7('0x24')](handleEntityNotFound(_0x3f6d58,null))[_0xafb7('0x24')](saveUpdates(_0x20ba38['body'],null))['then'](respondWithResult(_0x3f6d58,null))['catch'](handleError(_0x3f6d58,null));};exports[_0xafb7('0x25')]=function(_0x509c68,_0xd833a6){return db[_0xafb7('0x2b')][_0xafb7('0x45')]({'where':{'id':_0x509c68[_0xafb7('0x46')]['id']}})[_0xafb7('0x24')](handleEntityNotFound(_0xd833a6,null))[_0xafb7('0x24')](removeEntity(_0xd833a6,null))[_0xafb7('0x40')](handleError(_0xd833a6,null));};
\ No newline at end of file
+var _0x19fa=['include','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','keys'];(function(_0x113b57,_0x203caa){var _0x5e21df=function(_0x3c65e2){while(--_0x3c65e2){_0x113b57['push'](_0x113b57['shift']());}};_0x5e21df(++_0x203caa);}(_0x19fa,0x99));var _0xa19f=function(_0x3447e1,_0x1e883b){_0x3447e1=_0x3447e1-0x0;var _0x58c11f=_0x19fa[_0x3447e1];return _0x58c11f;};'use strict';var emlformat=require(_0xa19f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa19f('0x1'));var jsonpatch=require(_0xa19f('0x2'));var rp=require(_0xa19f('0x3'));var moment=require(_0xa19f('0x4'));var BPromise=require(_0xa19f('0x5'));var Mustache=require(_0xa19f('0x6'));var util=require(_0xa19f('0x7'));var path=require(_0xa19f('0x8'));var sox=require(_0xa19f('0x9'));var csv=require(_0xa19f('0xa'));var ejs=require(_0xa19f('0xb'));var fs=require('fs');var fs_extra=require(_0xa19f('0xc'));var _=require(_0xa19f('0xd'));var squel=require(_0xa19f('0xe'));var crypto=require('crypto');var jsforce=require(_0xa19f('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa19f('0x10'));var Redis=require(_0xa19f('0x11'));var authService=require(_0xa19f('0x12'));var qs=require(_0xa19f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa19f('0x14'))(_0xa19f('0x15'));var utils=require('../../config/utils');var config=require(_0xa19f('0x16'));var licenseUtil=require(_0xa19f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd03f95,_0x9ae304){_0x9ae304=_0x9ae304||0xcc;return function(_0x15e989){if(_0x15e989){return _0xd03f95['sendStatus'](_0x9ae304);}return _0xd03f95[_0xa19f('0x18')](_0x9ae304)[_0xa19f('0x19')]();};}function respondWithResult(_0x416d0a,_0x375f26){_0x375f26=_0x375f26||0xc8;return function(_0x2fd226){if(_0x2fd226){return _0x416d0a[_0xa19f('0x18')](_0x375f26)['json'](_0x2fd226);}};}function respondWithFilteredResult(_0x24d2c7,_0x39ddda){return function(_0x3935e4){if(_0x3935e4){var _0x8578be=typeof _0x39ddda[_0xa19f('0x1a')]===_0xa19f('0x1b')&&typeof _0x39ddda[_0xa19f('0x1c')]===_0xa19f('0x1b');var _0x537962=_0x3935e4[_0xa19f('0x1d')];var _0x4a745c=_0x8578be?0x0:_0x39ddda[_0xa19f('0x1a')];var _0x13793f=_0x8578be?_0x3935e4['count']:_0x39ddda[_0xa19f('0x1a')]+_0x39ddda[_0xa19f('0x1c')];var _0x502052;if(_0x13793f>=_0x537962){_0x13793f=_0x537962;_0x502052=0xc8;}else{_0x502052=0xce;}_0x24d2c7[_0xa19f('0x18')](_0x502052);return _0x24d2c7[_0xa19f('0x1e')](_0xa19f('0x1f'),_0x4a745c+'-'+_0x13793f+'/'+_0x537962)['json'](_0x3935e4);}return null;};}function patchUpdates(_0x185efc){return function(_0x59df9b){try{jsonpatch[_0xa19f('0x20')](_0x59df9b,_0x185efc,!![]);}catch(_0x26a784){return BPromise[_0xa19f('0x21')](_0x26a784);}return _0x59df9b[_0xa19f('0x22')]();};}function saveUpdates(_0x26e560,_0x524107){return function(_0x4f6d77){if(_0x4f6d77){return _0x4f6d77[_0xa19f('0x23')](_0x26e560)[_0xa19f('0x24')](function(_0x18add4){return _0x18add4;});}return null;};}function removeEntity(_0x9fba4a,_0x57ca28){return function(_0x43a388){if(_0x43a388){return _0x43a388[_0xa19f('0x25')]()[_0xa19f('0x24')](function(){_0x9fba4a[_0xa19f('0x18')](0xcc)[_0xa19f('0x19')]();});}};}function handleEntityNotFound(_0x28511b,_0x541c4d){return function(_0x5bf7c9){if(!_0x5bf7c9){_0x28511b[_0xa19f('0x26')](0x194);}return _0x5bf7c9;};}function handleError(_0x13d46d,_0x128137){_0x128137=_0x128137||0x1f4;return function(_0x36458d){logger[_0xa19f('0x27')](_0x36458d[_0xa19f('0x28')]);if(_0x36458d[_0xa19f('0x29')]){delete _0x36458d[_0xa19f('0x29')];}_0x13d46d[_0xa19f('0x18')](_0x128137)['send'](_0x36458d);};}exports['index']=function(_0x3109d6,_0x58cb96){var _0x51b5f9={},_0x473787={},_0x4c2ac={'count':0x0,'rows':[]};var _0x55e05=_[_0xa19f('0x2a')](db[_0xa19f('0x2b')][_0xa19f('0x2c')],function(_0x4720bd){return{'name':_0x4720bd[_0xa19f('0x2d')],'type':_0x4720bd[_0xa19f('0x2e')][_0xa19f('0x2f')]};});_0x473787[_0xa19f('0x30')]=_[_0xa19f('0x2a')](_0x55e05,'name');_0x473787[_0xa19f('0x31')]=_['keys'](_0x3109d6[_0xa19f('0x31')]);_0x473787[_0xa19f('0x32')]=_[_0xa19f('0x33')](_0x473787['model'],_0x473787['query']);_0x51b5f9[_0xa19f('0x34')]=_[_0xa19f('0x33')](_0x473787['model'],qs[_0xa19f('0x35')](_0x3109d6[_0xa19f('0x31')]['fields']));_0x51b5f9[_0xa19f('0x34')]=_0x51b5f9['attributes'][_0xa19f('0x36')]?_0x51b5f9['attributes']:_0x473787[_0xa19f('0x30')];if(!_0x3109d6['query'][_0xa19f('0x37')](_0xa19f('0x38'))){_0x51b5f9[_0xa19f('0x1c')]=qs[_0xa19f('0x1c')](_0x3109d6[_0xa19f('0x31')][_0xa19f('0x1c')]);_0x51b5f9[_0xa19f('0x1a')]=qs[_0xa19f('0x1a')](_0x3109d6['query'][_0xa19f('0x1a')]);}_0x51b5f9['order']=qs[_0xa19f('0x39')](_0x3109d6[_0xa19f('0x31')][_0xa19f('0x39')]);_0x51b5f9[_0xa19f('0x3a')]=qs['filters'](_[_0xa19f('0x3b')](_0x3109d6[_0xa19f('0x31')],_0x473787['filters']),_0x55e05);if(_0x3109d6[_0xa19f('0x31')][_0xa19f('0x3c')]){_0x51b5f9[_0xa19f('0x3a')]=_[_0xa19f('0x3d')](_0x51b5f9[_0xa19f('0x3a')],{'$or':_[_0xa19f('0x2a')](_0x55e05,function(_0x4dfc80){if(_0x4dfc80['type']!==_0xa19f('0x3e')){var _0x5524af={};_0x5524af[_0x4dfc80[_0xa19f('0x29')]]={'$like':'%'+_0x3109d6[_0xa19f('0x31')][_0xa19f('0x3c')]+'%'};return _0x5524af;}})});}_0x51b5f9=_[_0xa19f('0x3d')]({},_0x51b5f9,_0x3109d6['options']);var _0x3ed35c={'where':_0x51b5f9[_0xa19f('0x3a')]};return db[_0xa19f('0x2b')][_0xa19f('0x1d')](_0x3ed35c)['then'](function(_0x49aed4){_0x4c2ac['count']=_0x49aed4;if(_0x3109d6['query'][_0xa19f('0x3f')]){_0x51b5f9['include']=[{'all':!![]}];}return db['MailServerOut'][_0xa19f('0x40')](_0x51b5f9);})[_0xa19f('0x24')](function(_0x1e49a4){_0x4c2ac[_0xa19f('0x41')]=_0x1e49a4;return _0x4c2ac;})[_0xa19f('0x24')](respondWithFilteredResult(_0x58cb96,_0x51b5f9))[_0xa19f('0x42')](handleError(_0x58cb96,null));};exports[_0xa19f('0x43')]=function(_0x4b61bb,_0x41f6f4){var _0x5aa0ce={'raw':!![],'where':{'id':_0x4b61bb['params']['id']}},_0x3d0c0f={};_0x3d0c0f[_0xa19f('0x30')]=_['keys'](db[_0xa19f('0x2b')][_0xa19f('0x2c')]);_0x3d0c0f['query']=_[_0xa19f('0x44')](_0x4b61bb['query']);_0x3d0c0f[_0xa19f('0x32')]=_[_0xa19f('0x33')](_0x3d0c0f[_0xa19f('0x30')],_0x3d0c0f['query']);_0x5aa0ce[_0xa19f('0x34')]=_[_0xa19f('0x33')](_0x3d0c0f[_0xa19f('0x30')],qs[_0xa19f('0x35')](_0x4b61bb[_0xa19f('0x31')][_0xa19f('0x35')]));_0x5aa0ce[_0xa19f('0x34')]=_0x5aa0ce[_0xa19f('0x34')]['length']?_0x5aa0ce[_0xa19f('0x34')]:_0x3d0c0f[_0xa19f('0x30')];if(_0x4b61bb[_0xa19f('0x31')][_0xa19f('0x3f')]){_0x5aa0ce[_0xa19f('0x45')]=[{'all':!![]}];}_0x5aa0ce=_[_0xa19f('0x3d')]({},_0x5aa0ce,_0x4b61bb['options']);return db[_0xa19f('0x2b')][_0xa19f('0x46')](_0x5aa0ce)[_0xa19f('0x24')](handleEntityNotFound(_0x41f6f4,null))['then'](respondWithResult(_0x41f6f4,null))[_0xa19f('0x42')](handleError(_0x41f6f4,null));};exports['create']=function(_0x319699,_0x523ed6){return db['MailServerOut'][_0xa19f('0x47')](_0x319699[_0xa19f('0x48')],{})[_0xa19f('0x24')](respondWithResult(_0x523ed6,0xc9))['catch'](handleError(_0x523ed6,null));};exports[_0xa19f('0x23')]=function(_0x56fc80,_0x3e9ab9){if(_0x56fc80[_0xa19f('0x48')]['id']){delete _0x56fc80[_0xa19f('0x48')]['id'];}return db[_0xa19f('0x2b')][_0xa19f('0x46')]({'where':{'id':_0x56fc80['params']['id']}})[_0xa19f('0x24')](handleEntityNotFound(_0x3e9ab9,null))['then'](saveUpdates(_0x56fc80[_0xa19f('0x48')],null))['then'](respondWithResult(_0x3e9ab9,null))['catch'](handleError(_0x3e9ab9,null));};exports[_0xa19f('0x25')]=function(_0x2450ca,_0x43a4c6){return db[_0xa19f('0x2b')][_0xa19f('0x46')]({'where':{'id':_0x2450ca[_0xa19f('0x49')]['id']}})[_0xa19f('0x24')](handleEntityNotFound(_0x43a4c6,null))['then'](removeEntity(_0x43a4c6,null))[_0xa19f('0x42')](handleError(_0x43a4c6,null));};
\ No newline at end of file
index 28dad48..30457b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aca=['mail_servers_out','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./mailServerOut.attributes','define','MailServerOut'];(function(_0x143565,_0x54d887){var _0x4dc1d9=function(_0x5e8838){while(--_0x5e8838){_0x143565['push'](_0x143565['shift']());}};_0x4dc1d9(++_0x54d887);}(_0x9aca,0x145));var _0xa9ac=function(_0x15555d,_0x132da8){_0x15555d=_0x15555d-0x0;var _0x36b414=_0x9aca[_0x15555d];return _0x36b414;};'use strict';var _=require(_0xa9ac('0x0'));var util=require(_0xa9ac('0x1'));var logger=require(_0xa9ac('0x2'))(_0xa9ac('0x3'));var moment=require(_0xa9ac('0x4'));var BPromise=require(_0xa9ac('0x5'));var rp=require(_0xa9ac('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa9ac('0x7'));var attributes=require(_0xa9ac('0x8'));module['exports']=function(_0x10489f,_0x23e2d1){return _0x10489f[_0xa9ac('0x9')](_0xa9ac('0xa'),attributes,{'tableName':_0xa9ac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9527=['bluebird','request-promise','../../config/environment','./mailServerOut.attributes','exports','MailServerOut','mail_servers_out','lodash','util','../../config/logger','api','moment'];(function(_0x49c653,_0x390195){var _0x31e169=function(_0x3684ac){while(--_0x3684ac){_0x49c653['push'](_0x49c653['shift']());}};_0x31e169(++_0x390195);}(_0x9527,0xdf));var _0x7952=function(_0x4b0848,_0x50bcff){_0x4b0848=_0x4b0848-0x0;var _0x93aad9=_0x9527[_0x4b0848];return _0x93aad9;};'use strict';var _=require(_0x7952('0x0'));var util=require(_0x7952('0x1'));var logger=require(_0x7952('0x2'))(_0x7952('0x3'));var moment=require(_0x7952('0x4'));var BPromise=require(_0x7952('0x5'));var rp=require(_0x7952('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7952('0x7'));var attributes=require(_0x7952('0x8'));module[_0x7952('0x9')]=function(_0x1827f0,_0x83b22c){return _0x1827f0['define'](_0x7952('0xa'),attributes,{'tableName':_0x7952('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3b0766b..2fc16b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x2b2ee7,_0x431f11){_0x2b2ee7=_0x2b2ee7-0x0;var _0x16da75=_0x7a54[_0x2b2ee7];return _0x16da75;};'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')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x5c8d33,_0x222550){var _0x20692d=function(_0x27701f){while(--_0x27701f){_0x5c8d33['push'](_0x5c8d33['shift']());}};_0x20692d(++_0x222550);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1b6158,_0x1b7c2f){_0x1b6158=_0x1b6158-0x0;var _0x5c6338=_0x5f2f[_0x1b6158];return _0x5c6338;};'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')]('MailServerOut,\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 3a50c1a..72ff1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x367a=['fs-extra','../../components/interaction/service','./mailSubstatus.controller','get','isAuthenticated','/:id','show','post','create','put','delete','destroy','multer','util','path','express','Router'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x367a,0x14f));var _0xa367=function(_0x39d0d2,_0x3a367e){_0x39d0d2=_0x39d0d2-0x0;var _0x4b6e8f=_0x367a[_0x39d0d2];return _0x4b6e8f;};'use strict';var multer=require(_0xa367('0x0'));var util=require(_0xa367('0x1'));var path=require(_0xa367('0x2'));var timeout=require('connect-timeout');var express=require(_0xa367('0x3'));var router=express[_0xa367('0x4')]();var fs_extra=require(_0xa367('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa367('0x6'));var config=require('../../config/environment');var controller=require(_0xa367('0x7'));router[_0xa367('0x8')]('/',auth[_0xa367('0x9')](),controller['index']);router[_0xa367('0x8')]('/describe',auth[_0xa367('0x9')](),controller['describe']);router[_0xa367('0x8')](_0xa367('0xa'),auth[_0xa367('0x9')](),controller[_0xa367('0xb')]);router[_0xa367('0xc')]('/',auth[_0xa367('0x9')](),controller[_0xa367('0xd')]);router[_0xa367('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa367('0xf')]('/:id',auth[_0xa367('0x9')](),controller[_0xa367('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x729e=['describe','get','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','/describe'];(function(_0x58ee62,_0x180e9a){var _0x1a10ba=function(_0x2ddf13){while(--_0x2ddf13){_0x58ee62['push'](_0x58ee62['shift']());}};_0x1a10ba(++_0x180e9a);}(_0x729e,0xbd));var _0xe729=function(_0x257974,_0x9bba3a){_0x257974=_0x257974-0x0;var _0x425d11=_0x729e[_0x257974];return _0x425d11;};'use strict';var multer=require(_0xe729('0x0'));var util=require(_0xe729('0x1'));var path=require('path');var timeout=require(_0xe729('0x2'));var express=require('express');var router=express[_0xe729('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe729('0x4'));var interaction=require(_0xe729('0x5'));var config=require(_0xe729('0x6'));var controller=require(_0xe729('0x7'));router['get']('/',auth[_0xe729('0x8')](),controller[_0xe729('0x9')]);router['get'](_0xe729('0xa'),auth[_0xe729('0x8')](),controller[_0xe729('0xb')]);router[_0xe729('0xc')]('/:id',auth[_0xe729('0x8')](),controller[_0xe729('0xd')]);router[_0xe729('0xe')]('/',auth[_0xe729('0x8')](),controller[_0xe729('0xf')]);router[_0xe729('0x10')]('/:id',auth[_0xe729('0x8')](),controller[_0xe729('0x11')]);router[_0xe729('0x12')]('/:id',auth[_0xe729('0x8')](),controller[_0xe729('0x13')]);module['exports']=router;
\ No newline at end of file
index b5b8d5b..ab88aa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa23f=['STRING','sequelize','exports'];(function(_0x14853a,_0x3c4bcc){var _0x53ca7a=function(_0x1cf979){while(--_0x1cf979){_0x14853a['push'](_0x14853a['shift']());}};_0x53ca7a(++_0x3c4bcc);}(_0xa23f,0x7c));var _0xfa23=function(_0x5019a4,_0x2240f5){_0x5019a4=_0x5019a4-0x0;var _0x556d4f=_0xa23f[_0x5019a4];return _0x556d4f;};'use strict';var Sequelize=require(_0xfa23('0x0'));module[_0xfa23('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xfa23('0x2')]}};
\ No newline at end of file
+var _0x3f8a=['name','sequelize','exports','STRING'];(function(_0x4b5b42,_0xe84f7){var _0x155026=function(_0xc5057a){while(--_0xc5057a){_0x4b5b42['push'](_0x4b5b42['shift']());}};_0x155026(++_0xe84f7);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x588c33,_0xe686f7){_0x588c33=_0x588c33-0x0;var _0x5c639c=_0x3f8a[_0x588c33];return _0x5c639c;};'use strict';var Sequelize=require(_0xa3f8('0x0'));module[_0xa3f8('0x1')]={'name':{'type':Sequelize[_0xa3f8('0x2')],'unique':_0xa3f8('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b685a27..2c5ca65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0ac=['request-promise','moment','mustache','util','path','sox','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','limit','undefined','count','offset','set','Content-Range','apply','reject','update','destroy','error','stack','name','map','MailSubstatus','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','include','rows','catch','show','keys','intersection','find','create','body','params','describe','eml-format','rimraf'];(function(_0x51ec61,_0xf9d1e3){var _0x223200=function(_0x3bd510){while(--_0x3bd510){_0x51ec61['push'](_0x51ec61['shift']());}};_0x223200(++_0xf9d1e3);}(_0xa0ac,0x11e));var _0xca0a=function(_0x1ff12a,_0x36a2cf){_0x1ff12a=_0x1ff12a-0x0;var _0x43cdf4=_0xa0ac[_0x1ff12a];return _0x43cdf4;};'use strict';var emlformat=require(_0xca0a('0x0'));var rimraf=require(_0xca0a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xca0a('0x2'));var moment=require(_0xca0a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xca0a('0x4'));var util=require(_0xca0a('0x5'));var path=require(_0xca0a('0x6'));var sox=require(_0xca0a('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xca0a('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xca0a('0x9'));var jsforce=require(_0xca0a('0xa'));var deskjs=require(_0xca0a('0xb'));var toCsv=require(_0xca0a('0xc'));var querystring=require(_0xca0a('0xd'));var Papa=require(_0xca0a('0xe'));var Redis=require(_0xca0a('0xf'));var authService=require(_0xca0a('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xca0a('0x11'));var logger=require(_0xca0a('0x12'))('api');var utils=require(_0xca0a('0x13'));var config=require(_0xca0a('0x14'));var licenseUtil=require(_0xca0a('0x15'));var db=require(_0xca0a('0x16'))['db'];function respondWithStatusCode(_0x51d90d,_0x320af1){_0x320af1=_0x320af1||0xcc;return function(_0x27dc5e){if(_0x27dc5e){return _0x51d90d['sendStatus'](_0x320af1);}return _0x51d90d[_0xca0a('0x17')](_0x320af1)[_0xca0a('0x18')]();};}function respondWithResult(_0x74c99f,_0x56765d){_0x56765d=_0x56765d||0xc8;return function(_0x4460d3){if(_0x4460d3){return _0x74c99f[_0xca0a('0x17')](_0x56765d)['json'](_0x4460d3);}};}function respondWithFilteredResult(_0x1ea5ed,_0x362d51){return function(_0x2e4d6c){if(_0x2e4d6c){var _0x37727f=typeof _0x362d51['offset']==='undefined'&&typeof _0x362d51[_0xca0a('0x19')]===_0xca0a('0x1a');var _0x453131=_0x2e4d6c[_0xca0a('0x1b')];var _0x5b9237=_0x37727f?0x0:_0x362d51[_0xca0a('0x1c')];var _0x3f0ade=_0x37727f?_0x2e4d6c[_0xca0a('0x1b')]:_0x362d51[_0xca0a('0x1c')]+_0x362d51[_0xca0a('0x19')];var _0x490edc;if(_0x3f0ade>=_0x453131){_0x3f0ade=_0x453131;_0x490edc=0xc8;}else{_0x490edc=0xce;}_0x1ea5ed[_0xca0a('0x17')](_0x490edc);return _0x1ea5ed[_0xca0a('0x1d')](_0xca0a('0x1e'),_0x5b9237+'-'+_0x3f0ade+'/'+_0x453131)['json'](_0x2e4d6c);}return null;};}function patchUpdates(_0xff15ca){return function(_0x3f248f){try{jsonpatch[_0xca0a('0x1f')](_0x3f248f,_0xff15ca,!![]);}catch(_0x48ab4b){return BPromise[_0xca0a('0x20')](_0x48ab4b);}return _0x3f248f['save']();};}function saveUpdates(_0x47e3f7,_0x183cdc){return function(_0x439176){if(_0x439176){return _0x439176[_0xca0a('0x21')](_0x47e3f7)['then'](function(_0x480857){return _0x480857;});}return null;};}function removeEntity(_0x1bac05,_0x1412d6){return function(_0xd18881){if(_0xd18881){return _0xd18881[_0xca0a('0x22')]()['then'](function(){_0x1bac05[_0xca0a('0x17')](0xcc)[_0xca0a('0x18')]();});}};}function handleEntityNotFound(_0x4b10c8,_0x478978){return function(_0x173646){if(!_0x173646){_0x4b10c8['sendStatus'](0x194);}return _0x173646;};}function handleError(_0x571e46,_0x4c5ddd){_0x4c5ddd=_0x4c5ddd||0x1f4;return function(_0x32480a){logger[_0xca0a('0x23')](_0x32480a[_0xca0a('0x24')]);if(_0x32480a[_0xca0a('0x25')]){delete _0x32480a[_0xca0a('0x25')];}_0x571e46[_0xca0a('0x17')](_0x4c5ddd)['send'](_0x32480a);};}exports['index']=function(_0x3dc734,_0x17b2e1){var _0x2d6e67={},_0x37c298={},_0x58e391={'count':0x0,'rows':[]};var _0x5af403=_[_0xca0a('0x26')](db[_0xca0a('0x27')][_0xca0a('0x28')],function(_0x2a51bb){return{'name':_0x2a51bb[_0xca0a('0x29')],'type':_0x2a51bb[_0xca0a('0x2a')][_0xca0a('0x2b')]};});_0x37c298[_0xca0a('0x2c')]=_[_0xca0a('0x26')](_0x5af403,_0xca0a('0x25'));_0x37c298[_0xca0a('0x2d')]=_['keys'](_0x3dc734['query']);_0x37c298[_0xca0a('0x2e')]=_['intersection'](_0x37c298[_0xca0a('0x2c')],_0x37c298[_0xca0a('0x2d')]);_0x2d6e67[_0xca0a('0x2f')]=_['intersection'](_0x37c298[_0xca0a('0x2c')],qs[_0xca0a('0x30')](_0x3dc734['query']['fields']));_0x2d6e67['attributes']=_0x2d6e67[_0xca0a('0x2f')][_0xca0a('0x31')]?_0x2d6e67[_0xca0a('0x2f')]:_0x37c298[_0xca0a('0x2c')];if(!_0x3dc734[_0xca0a('0x2d')][_0xca0a('0x32')](_0xca0a('0x33'))){_0x2d6e67['limit']=qs[_0xca0a('0x19')](_0x3dc734[_0xca0a('0x2d')]['limit']);_0x2d6e67[_0xca0a('0x1c')]=qs[_0xca0a('0x1c')](_0x3dc734[_0xca0a('0x2d')][_0xca0a('0x1c')]);}_0x2d6e67[_0xca0a('0x34')]=qs[_0xca0a('0x35')](_0x3dc734[_0xca0a('0x2d')][_0xca0a('0x35')]);_0x2d6e67[_0xca0a('0x36')]=qs[_0xca0a('0x2e')](_[_0xca0a('0x37')](_0x3dc734['query'],_0x37c298[_0xca0a('0x2e')]),_0x5af403);if(_0x3dc734[_0xca0a('0x2d')][_0xca0a('0x38')]){_0x2d6e67[_0xca0a('0x36')]=_[_0xca0a('0x39')](_0x2d6e67[_0xca0a('0x36')],{'$or':_[_0xca0a('0x26')](_0x5af403,function(_0x5365de){if(_0x5365de[_0xca0a('0x2a')]!==_0xca0a('0x3a')){var _0x334865={};_0x334865[_0x5365de['name']]={'$like':'%'+_0x3dc734[_0xca0a('0x2d')][_0xca0a('0x38')]+'%'};return _0x334865;}})});}_0x2d6e67=_[_0xca0a('0x39')]({},_0x2d6e67,_0x3dc734[_0xca0a('0x3b')]);var _0x168555={'where':_0x2d6e67[_0xca0a('0x36')]};return db[_0xca0a('0x27')][_0xca0a('0x1b')](_0x168555)[_0xca0a('0x3c')](function(_0x78191e){_0x58e391[_0xca0a('0x1b')]=_0x78191e;if(_0x3dc734['query']['includeAll']){_0x2d6e67[_0xca0a('0x3d')]=[{'all':!![]}];}return db[_0xca0a('0x27')]['findAll'](_0x2d6e67);})[_0xca0a('0x3c')](function(_0x54cc11){_0x58e391[_0xca0a('0x3e')]=_0x54cc11;return _0x58e391;})[_0xca0a('0x3c')](respondWithFilteredResult(_0x17b2e1,_0x2d6e67))[_0xca0a('0x3f')](handleError(_0x17b2e1,null));};exports[_0xca0a('0x40')]=function(_0x4e0361,_0x194be8){var _0x2024e1={'raw':!![],'where':{'id':_0x4e0361['params']['id']}},_0x8e716={};_0x8e716[_0xca0a('0x2c')]=_[_0xca0a('0x41')](db[_0xca0a('0x27')]['rawAttributes']);_0x8e716[_0xca0a('0x2d')]=_['keys'](_0x4e0361[_0xca0a('0x2d')]);_0x8e716['filters']=_[_0xca0a('0x42')](_0x8e716[_0xca0a('0x2c')],_0x8e716[_0xca0a('0x2d')]);_0x2024e1[_0xca0a('0x2f')]=_[_0xca0a('0x42')](_0x8e716[_0xca0a('0x2c')],qs[_0xca0a('0x30')](_0x4e0361[_0xca0a('0x2d')][_0xca0a('0x30')]));_0x2024e1[_0xca0a('0x2f')]=_0x2024e1[_0xca0a('0x2f')][_0xca0a('0x31')]?_0x2024e1[_0xca0a('0x2f')]:_0x8e716[_0xca0a('0x2c')];if(_0x4e0361[_0xca0a('0x2d')]['includeAll']){_0x2024e1['include']=[{'all':!![]}];}_0x2024e1=_[_0xca0a('0x39')]({},_0x2024e1,_0x4e0361['options']);return db[_0xca0a('0x27')][_0xca0a('0x43')](_0x2024e1)[_0xca0a('0x3c')](handleEntityNotFound(_0x194be8,null))[_0xca0a('0x3c')](respondWithResult(_0x194be8,null))[_0xca0a('0x3f')](handleError(_0x194be8,null));};exports[_0xca0a('0x44')]=function(_0x2f60c3,_0x424833){return db[_0xca0a('0x27')][_0xca0a('0x44')](_0x2f60c3['body'],{})[_0xca0a('0x3c')](respondWithResult(_0x424833,0xc9))['catch'](handleError(_0x424833,null));};exports[_0xca0a('0x21')]=function(_0x44c5ed,_0x4452b7){if(_0x44c5ed[_0xca0a('0x45')]['id']){delete _0x44c5ed[_0xca0a('0x45')]['id'];}return db[_0xca0a('0x27')][_0xca0a('0x43')]({'where':{'id':_0x44c5ed['params']['id']}})[_0xca0a('0x3c')](handleEntityNotFound(_0x4452b7,null))[_0xca0a('0x3c')](saveUpdates(_0x44c5ed[_0xca0a('0x45')],null))[_0xca0a('0x3c')](respondWithResult(_0x4452b7,null))[_0xca0a('0x3f')](handleError(_0x4452b7,null));};exports[_0xca0a('0x22')]=function(_0x512431,_0x66267b){return db[_0xca0a('0x27')][_0xca0a('0x43')]({'where':{'id':_0x512431[_0xca0a('0x46')]['id']}})[_0xca0a('0x3c')](handleEntityNotFound(_0x66267b,null))[_0xca0a('0x3c')](removeEntity(_0x66267b,null))[_0xca0a('0x3f')](handleError(_0x66267b,null));};exports[_0xca0a('0x47')]=function(_0x466cc0,_0x5f238f){return db[_0xca0a('0x27')][_0xca0a('0x47')]()['then'](respondWithResult(_0x5f238f,null))[_0xca0a('0x3f')](handleError(_0x5f238f,null));};
\ No newline at end of file
+var _0xd65d=['rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','MailSubstatus','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','stack','name','send','index'];(function(_0xf0ec6e,_0xa183d3){var _0x8bbc27=function(_0x39822b){while(--_0x39822b){_0xf0ec6e['push'](_0xf0ec6e['shift']());}};_0x8bbc27(++_0xa183d3);}(_0xd65d,0x6d));var _0xdd65=function(_0x23fcf7,_0x492315){_0x23fcf7=_0x23fcf7-0x0;var _0x120a25=_0xd65d[_0x23fcf7];return _0x120a25;};'use strict';var emlformat=require(_0xdd65('0x0'));var rimraf=require(_0xdd65('0x1'));var zipdir=require(_0xdd65('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdd65('0x3'));var moment=require(_0xdd65('0x4'));var BPromise=require(_0xdd65('0x5'));var Mustache=require('mustache');var util=require(_0xdd65('0x6'));var path=require(_0xdd65('0x7'));var sox=require(_0xdd65('0x8'));var csv=require('to-csv');var ejs=require(_0xdd65('0x9'));var fs=require('fs');var fs_extra=require(_0xdd65('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xdd65('0xb'));var jsforce=require(_0xdd65('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xdd65('0xd'));var querystring=require(_0xdd65('0xe'));var Papa=require(_0xdd65('0xf'));var Redis=require(_0xdd65('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xdd65('0x11'));var as=require(_0xdd65('0x12'));var hardwareService=require(_0xdd65('0x13'));var logger=require(_0xdd65('0x14'))(_0xdd65('0x15'));var utils=require(_0xdd65('0x16'));var config=require(_0xdd65('0x17'));var licenseUtil=require(_0xdd65('0x18'));var db=require(_0xdd65('0x19'))['db'];function respondWithStatusCode(_0x4ae2fd,_0x1b0df4){_0x1b0df4=_0x1b0df4||0xcc;return function(_0x130f02){if(_0x130f02){return _0x4ae2fd[_0xdd65('0x1a')](_0x1b0df4);}return _0x4ae2fd['status'](_0x1b0df4)[_0xdd65('0x1b')]();};}function respondWithResult(_0x4bab86,_0x35d87c){_0x35d87c=_0x35d87c||0xc8;return function(_0x207689){if(_0x207689){return _0x4bab86[_0xdd65('0x1c')](_0x35d87c)[_0xdd65('0x1d')](_0x207689);}};}function respondWithFilteredResult(_0x378363,_0x27d412){return function(_0x4a1db8){if(_0x4a1db8){var _0x3ff779=typeof _0x27d412[_0xdd65('0x1e')]==='undefined'&&typeof _0x27d412[_0xdd65('0x1f')]===_0xdd65('0x20');var _0x330483=_0x4a1db8[_0xdd65('0x21')];var _0x3a2402=_0x3ff779?0x0:_0x27d412[_0xdd65('0x1e')];var _0x2f30e4=_0x3ff779?_0x4a1db8[_0xdd65('0x21')]:_0x27d412[_0xdd65('0x1e')]+_0x27d412[_0xdd65('0x1f')];var _0x222a03;if(_0x2f30e4>=_0x330483){_0x2f30e4=_0x330483;_0x222a03=0xc8;}else{_0x222a03=0xce;}_0x378363['status'](_0x222a03);return _0x378363[_0xdd65('0x22')]('Content-Range',_0x3a2402+'-'+_0x2f30e4+'/'+_0x330483)[_0xdd65('0x1d')](_0x4a1db8);}return null;};}function patchUpdates(_0x5aea2b){return function(_0x500d08){try{jsonpatch[_0xdd65('0x23')](_0x500d08,_0x5aea2b,!![]);}catch(_0x2f3156){return BPromise[_0xdd65('0x24')](_0x2f3156);}return _0x500d08[_0xdd65('0x25')]();};}function saveUpdates(_0x5622b1,_0x4e3499){return function(_0x96f03){if(_0x96f03){return _0x96f03[_0xdd65('0x26')](_0x5622b1)[_0xdd65('0x27')](function(_0x38680b){return _0x38680b;});}return null;};}function removeEntity(_0x33bf54,_0x231359){return function(_0x574f0a){if(_0x574f0a){return _0x574f0a[_0xdd65('0x28')]()['then'](function(){_0x33bf54[_0xdd65('0x1c')](0xcc)[_0xdd65('0x1b')]();});}};}function handleEntityNotFound(_0x17447c,_0x75001a){return function(_0x3d28d7){if(!_0x3d28d7){_0x17447c[_0xdd65('0x1a')](0x194);}return _0x3d28d7;};}function handleError(_0x28a685,_0x47af25){_0x47af25=_0x47af25||0x1f4;return function(_0x5d48e3){logger['error'](_0x5d48e3[_0xdd65('0x29')]);if(_0x5d48e3[_0xdd65('0x2a')]){delete _0x5d48e3[_0xdd65('0x2a')];}_0x28a685[_0xdd65('0x1c')](_0x47af25)[_0xdd65('0x2b')](_0x5d48e3);};}exports[_0xdd65('0x2c')]=function(_0x16af79,_0x1fb25e){var _0x1ea936={},_0x3fc887={},_0x26a69d={'count':0x0,'rows':[]};var _0x1aad0f=_['map'](db['MailSubstatus'][_0xdd65('0x2d')],function(_0x516052){return{'name':_0x516052[_0xdd65('0x2e')],'type':_0x516052['type'][_0xdd65('0x2f')]};});_0x3fc887[_0xdd65('0x30')]=_[_0xdd65('0x31')](_0x1aad0f,_0xdd65('0x2a'));_0x3fc887[_0xdd65('0x32')]=_[_0xdd65('0x33')](_0x16af79[_0xdd65('0x32')]);_0x3fc887[_0xdd65('0x34')]=_[_0xdd65('0x35')](_0x3fc887[_0xdd65('0x30')],_0x3fc887[_0xdd65('0x32')]);_0x1ea936[_0xdd65('0x36')]=_[_0xdd65('0x35')](_0x3fc887['model'],qs[_0xdd65('0x37')](_0x16af79['query'][_0xdd65('0x37')]));_0x1ea936[_0xdd65('0x36')]=_0x1ea936[_0xdd65('0x36')][_0xdd65('0x38')]?_0x1ea936[_0xdd65('0x36')]:_0x3fc887[_0xdd65('0x30')];if(!_0x16af79[_0xdd65('0x32')]['hasOwnProperty'](_0xdd65('0x39'))){_0x1ea936['limit']=qs[_0xdd65('0x1f')](_0x16af79[_0xdd65('0x32')]['limit']);_0x1ea936['offset']=qs[_0xdd65('0x1e')](_0x16af79['query'][_0xdd65('0x1e')]);}_0x1ea936[_0xdd65('0x3a')]=qs[_0xdd65('0x3b')](_0x16af79[_0xdd65('0x32')]['sort']);_0x1ea936[_0xdd65('0x3c')]=qs[_0xdd65('0x34')](_[_0xdd65('0x3d')](_0x16af79[_0xdd65('0x32')],_0x3fc887[_0xdd65('0x34')]),_0x1aad0f);if(_0x16af79[_0xdd65('0x32')][_0xdd65('0x3e')]){_0x1ea936['where']=_[_0xdd65('0x3f')](_0x1ea936[_0xdd65('0x3c')],{'$or':_['map'](_0x1aad0f,function(_0x1a0df8){if(_0x1a0df8[_0xdd65('0x40')]!==_0xdd65('0x41')){var _0x400baa={};_0x400baa[_0x1a0df8[_0xdd65('0x2a')]]={'$like':'%'+_0x16af79['query'][_0xdd65('0x3e')]+'%'};return _0x400baa;}})});}_0x1ea936=_['merge']({},_0x1ea936,_0x16af79[_0xdd65('0x42')]);var _0x3ac220={'where':_0x1ea936[_0xdd65('0x3c')]};return db['MailSubstatus'][_0xdd65('0x21')](_0x3ac220)[_0xdd65('0x27')](function(_0x3f107a){_0x26a69d[_0xdd65('0x21')]=_0x3f107a;if(_0x16af79[_0xdd65('0x32')][_0xdd65('0x43')]){_0x1ea936[_0xdd65('0x44')]=[{'all':!![]}];}return db['MailSubstatus']['findAll'](_0x1ea936);})[_0xdd65('0x27')](function(_0x40a4d6){_0x26a69d[_0xdd65('0x45')]=_0x40a4d6;return _0x26a69d;})[_0xdd65('0x27')](respondWithFilteredResult(_0x1fb25e,_0x1ea936))[_0xdd65('0x46')](handleError(_0x1fb25e,null));};exports['show']=function(_0x205581,_0x4a0e30){var _0xfd6837={'raw':!![],'where':{'id':_0x205581['params']['id']}},_0x246f2f={};_0x246f2f[_0xdd65('0x30')]=_[_0xdd65('0x33')](db[_0xdd65('0x47')][_0xdd65('0x2d')]);_0x246f2f[_0xdd65('0x32')]=_['keys'](_0x205581['query']);_0x246f2f[_0xdd65('0x34')]=_[_0xdd65('0x35')](_0x246f2f[_0xdd65('0x30')],_0x246f2f['query']);_0xfd6837[_0xdd65('0x36')]=_[_0xdd65('0x35')](_0x246f2f[_0xdd65('0x30')],qs[_0xdd65('0x37')](_0x205581[_0xdd65('0x32')]['fields']));_0xfd6837['attributes']=_0xfd6837['attributes'][_0xdd65('0x38')]?_0xfd6837[_0xdd65('0x36')]:_0x246f2f[_0xdd65('0x30')];if(_0x205581[_0xdd65('0x32')]['includeAll']){_0xfd6837[_0xdd65('0x44')]=[{'all':!![]}];}_0xfd6837=_['merge']({},_0xfd6837,_0x205581[_0xdd65('0x42')]);return db['MailSubstatus'][_0xdd65('0x48')](_0xfd6837)['then'](handleEntityNotFound(_0x4a0e30,null))[_0xdd65('0x27')](respondWithResult(_0x4a0e30,null))[_0xdd65('0x46')](handleError(_0x4a0e30,null));};exports['create']=function(_0x2cb6f0,_0x164add){return db[_0xdd65('0x47')][_0xdd65('0x49')](_0x2cb6f0[_0xdd65('0x4a')],{})[_0xdd65('0x27')](respondWithResult(_0x164add,0xc9))[_0xdd65('0x46')](handleError(_0x164add,null));};exports[_0xdd65('0x26')]=function(_0x1e15c2,_0x35a49c){if(_0x1e15c2[_0xdd65('0x4a')]['id']){delete _0x1e15c2['body']['id'];}return db[_0xdd65('0x47')][_0xdd65('0x48')]({'where':{'id':_0x1e15c2[_0xdd65('0x4b')]['id']}})[_0xdd65('0x27')](handleEntityNotFound(_0x35a49c,null))[_0xdd65('0x27')](saveUpdates(_0x1e15c2['body'],null))[_0xdd65('0x27')](respondWithResult(_0x35a49c,null))[_0xdd65('0x46')](handleError(_0x35a49c,null));};exports[_0xdd65('0x28')]=function(_0x4f8194,_0x3be1f5){return db['MailSubstatus']['find']({'where':{'id':_0x4f8194[_0xdd65('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3be1f5,null))[_0xdd65('0x27')](removeEntity(_0x3be1f5,null))[_0xdd65('0x46')](handleError(_0x3be1f5,null));};exports[_0xdd65('0x4c')]=function(_0x4d100d,_0x2ed55d){return db[_0xdd65('0x47')][_0xdd65('0x4c')]()[_0xdd65('0x27')](respondWithResult(_0x2ed55d,null))[_0xdd65('0x46')](handleError(_0x2ed55d,null));};
\ No newline at end of file
index daf254a..0750fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3b3=['MailSubstatus','setMaxListeners','update','emit','hasOwnProperty','hook','events'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xd3b3,0x19c));var _0x3d3b=function(_0x2b2094,_0x59e69d){_0x2b2094=_0x2b2094-0x0;var _0x3d56ff=_0xd3b3[_0x2b2094];return _0x3d56ff;};'use strict';var EventEmitter=require(_0x3d3b('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0x3d3b('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x3d3b('0x2')](0x0);var events={'afterUpdate':_0x3d3b('0x3')};function emitEvent(_0x21fb36){return function(_0x2432d6,_0x31dcaa,_0x221c86){MailSubstatusEvents[_0x3d3b('0x4')](_0x21fb36+':'+_0x2432d6['id'],_0x2432d6);MailSubstatusEvents[_0x3d3b('0x4')](_0x21fb36,_0x2432d6);_0x221c86(null);};}for(var e in events){if(events[_0x3d3b('0x5')](e)){var event=events[e];MailSubstatus[_0x3d3b('0x6')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
+var _0x3a8c=['hook','exports','events','../../mysqldb','MailSubstatus','update','emit','hasOwnProperty'];(function(_0x21b451,_0x26c9d9){var _0x4c53d2=function(_0x4c90a9){while(--_0x4c90a9){_0x21b451['push'](_0x21b451['shift']());}};_0x4c53d2(++_0x26c9d9);}(_0x3a8c,0xa2));var _0xc3a8=function(_0x31a6c4,_0x1dba34){_0x31a6c4=_0x31a6c4-0x0;var _0x3b4052=_0x3a8c[_0x31a6c4];return _0x3b4052;};'use strict';var EventEmitter=require(_0xc3a8('0x0'));var MailSubstatus=require(_0xc3a8('0x1'))['db'][_0xc3a8('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents['setMaxListeners'](0x0);var events={'afterUpdate':_0xc3a8('0x3')};function emitEvent(_0x5c039d){return function(_0x5d7e98,_0x529d9a,_0x3c3c4e){MailSubstatusEvents[_0xc3a8('0x4')](_0x5c039d+':'+_0x5d7e98['id'],_0x5d7e98);MailSubstatusEvents[_0xc3a8('0x4')](_0x5c039d,_0x5d7e98);_0x3c3c4e(null);};}for(var e in events){if(events[_0xc3a8('0x5')](e)){var event=events[e];MailSubstatus[_0xc3a8('0x6')](e,emitEvent(event));}}module[_0xc3a8('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index 7ccf617..7984730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf215=['_previousDataValues','catch','./mailSubstatus.attributes','exports','models','define','mail_substatuses','name','mailSubstatus'];(function(_0xbf2704,_0x5583ce){var _0x189f74=function(_0x3869f5){while(--_0x3869f5){_0xbf2704['push'](_0xbf2704['shift']());}};_0x189f74(++_0x5583ce);}(_0xf215,0xec));var _0x5f21=function(_0x3fb1ae,_0x29fa8e){_0x3fb1ae=_0x3fb1ae-0x0;var _0x50d37e=_0xf215[_0x3fb1ae];return _0x50d37e;};'use strict';var attributes=require(_0x5f21('0x0'));module[_0x5f21('0x1')]=function(_0x56aa5d){var _0x29c709=_0x56aa5d[_0x5f21('0x2')];return _0x56aa5d[_0x5f21('0x3')]('MailSubstatus',attributes,{'tableName':_0x5f21('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x2326dd,_0x1e809b,_0xbda431){return _0x29c709['Condition']['update']({'value':_0x2326dd[_0x5f21('0x5')]},{'where':{'field':_0x5f21('0x6'),'value':_0x2326dd[_0x5f21('0x7')][_0x5f21('0x5')]}})['then'](function(){_0xbda431();})[_0x5f21('0x8')](function(_0x456a68){_0xbda431(_0x456a68);});}}});};
\ No newline at end of file
+var _0x9ab8=['mail_substatuses','Condition','update','name','mailSubstatus','_previousDataValues','then','catch','./mailSubstatus.attributes','exports','define'];(function(_0x5229d4,_0x66beb7){var _0x5813a6=function(_0x40e4ce){while(--_0x40e4ce){_0x5229d4['push'](_0x5229d4['shift']());}};_0x5813a6(++_0x66beb7);}(_0x9ab8,0x81));var _0x89ab=function(_0x616efe,_0x2ecbe1){_0x616efe=_0x616efe-0x0;var _0x2ae03c=_0x9ab8[_0x616efe];return _0x2ae03c;};'use strict';var attributes=require(_0x89ab('0x0'));module[_0x89ab('0x1')]=function(_0x23649f){var _0x530b31=_0x23649f['models'];return _0x23649f[_0x89ab('0x2')]('MailSubstatus',attributes,{'tableName':_0x89ab('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x490c1e,_0x50b72d,_0x19fc7e){return _0x530b31[_0x89ab('0x4')][_0x89ab('0x5')]({'value':_0x490c1e[_0x89ab('0x6')]},{'where':{'field':_0x89ab('0x7'),'value':_0x490c1e[_0x89ab('0x8')][_0x89ab('0x6')]}})[_0x89ab('0x9')](function(){_0x19fc7e();})[_0x89ab('0xa')](function(_0x254add){_0x19fc7e(_0x254add);});}}});};
\ No newline at end of file
index a423a61..9f3d5f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x842f=['code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x28df33,_0x582f0a){var _0x1d6751=function(_0x1edcf9){while(--_0x1edcf9){_0x28df33['push'](_0x28df33['shift']());}};_0x1d6751(++_0x582f0a);}(_0x842f,0x15c));var _0xf842=function(_0x314ccd,_0xb410af){_0x314ccd=_0x314ccd-0x0;var _0x27ed35=_0x842f[_0x314ccd];return _0x27ed35;};'use strict';var _=require('lodash');var util=require(_0xf842('0x0'));var moment=require(_0xf842('0x1'));var BPromise=require(_0xf842('0x2'));var rs=require(_0xf842('0x3'));var fs=require('fs');var Redis=require(_0xf842('0x4'));var db=require(_0xf842('0x5'))['db'];var utils=require(_0xf842('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xf842('0x7'));var jayson=require(_0xf842('0x8'));var client=jayson[_0xf842('0x9')][_0xf842('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37cf64,_0x4136e5,_0x56f2de){return new BPromise(function(_0x22722e,_0xd25095){return client[_0xf842('0xb')](_0x37cf64,_0x56f2de)[_0xf842('0xc')](function(_0x14763d){logger[_0xf842('0xd')](_0xf842('0xe'),_0x4136e5,_0xf842('0xf'));logger[_0xf842('0x10')](_0xf842('0x11'),_0x4136e5,_0xf842('0xf'),JSON[_0xf842('0x12')](_0x14763d));if(_0x14763d['error']){if(_0x14763d[_0xf842('0x13')][_0xf842('0x14')]===0x1f4){logger[_0xf842('0x13')]('MailSubstatus,\x20%s,\x20%s',_0x4136e5,_0x14763d[_0xf842('0x13')][_0xf842('0x15')]);return _0xd25095(_0x14763d['error'][_0xf842('0x15')]);}logger['error'](_0xf842('0xe'),_0x4136e5,_0x14763d['error']['message']);return _0x22722e(_0x14763d[_0xf842('0x13')][_0xf842('0x15')]);}else{logger['info'](_0xf842('0xe'),_0x4136e5,_0xf842('0xf'));_0x22722e(_0x14763d['result']['message']);}})[_0xf842('0x16')](function(_0x53ede7){logger[_0xf842('0x13')](_0xf842('0xe'),_0x4136e5,_0x53ede7);_0xd25095(_0x53ede7);});});}
\ No newline at end of file
+var _0x0f03=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','moment'];(function(_0x543b14,_0x238ee5){var _0x4668c9=function(_0xa218d1){while(--_0xa218d1){_0x543b14['push'](_0x543b14['shift']());}};_0x4668c9(++_0x238ee5);}(_0x0f03,0x18e));var _0x30f0=function(_0x35b439,_0x3e1b23){_0x35b439=_0x35b439-0x0;var _0x4f4473=_0x0f03[_0x35b439];return _0x4f4473;};'use strict';var _=require('lodash');var util=require(_0x30f0('0x0'));var moment=require(_0x30f0('0x1'));var BPromise=require('bluebird');var rs=require(_0x30f0('0x2'));var fs=require('fs');var Redis=require(_0x30f0('0x3'));var db=require(_0x30f0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x30f0('0x5'))(_0x30f0('0x6'));var config=require('../../config/environment');var jayson=require(_0x30f0('0x7'));var client=jayson[_0x30f0('0x8')][_0x30f0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c86d2,_0x31aa3a,_0x26d761){return new BPromise(function(_0x4e29fd,_0x1469ea){return client[_0x30f0('0xa')](_0x4c86d2,_0x26d761)[_0x30f0('0xb')](function(_0xc37b1d){logger[_0x30f0('0xc')](_0x30f0('0xd'),_0x31aa3a,_0x30f0('0xe'));logger['debug']('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x31aa3a,_0x30f0('0xe'),JSON[_0x30f0('0xf')](_0xc37b1d));if(_0xc37b1d['error']){if(_0xc37b1d[_0x30f0('0x10')][_0x30f0('0x11')]===0x1f4){logger[_0x30f0('0x10')](_0x30f0('0xd'),_0x31aa3a,_0xc37b1d[_0x30f0('0x10')][_0x30f0('0x12')]);return _0x1469ea(_0xc37b1d[_0x30f0('0x10')][_0x30f0('0x12')]);}logger[_0x30f0('0x10')](_0x30f0('0xd'),_0x31aa3a,_0xc37b1d[_0x30f0('0x10')][_0x30f0('0x12')]);return _0x4e29fd(_0xc37b1d[_0x30f0('0x10')][_0x30f0('0x12')]);}else{logger['info'](_0x30f0('0xd'),_0x31aa3a,_0x30f0('0xe'));_0x4e29fd(_0xc37b1d['result'][_0x30f0('0x12')]);}})[_0x30f0('0x13')](function(_0x56dd24){logger[_0x30f0('0x10')](_0x30f0('0xd'),_0x31aa3a,_0x56dd24);_0x1469ea(_0x56dd24);});});}
\ No newline at end of file
index 47fef8c..4ae00f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28c3=['get','/describe','isAuthenticated','describe','show','post','create','/:id','update','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x53a6ee,_0x352dff){var _0x5d380e=function(_0x4eb891){while(--_0x4eb891){_0x53a6ee['push'](_0x53a6ee['shift']());}};_0x5d380e(++_0x352dff);}(_0x28c3,0x1aa));var _0x328c=function(_0x20f293,_0x113663){_0x20f293=_0x20f293-0x0;var _0x108c07=_0x28c3[_0x20f293];return _0x108c07;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x328c('0x0'));var express=require(_0x328c('0x1'));var router=express[_0x328c('0x2')]();var fs_extra=require(_0x328c('0x3'));var auth=require(_0x328c('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x328c('0x5'));var controller=require('./mailTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x328c('0x6')](_0x328c('0x7'),auth[_0x328c('0x8')](),controller[_0x328c('0x9')]);router[_0x328c('0x6')]('/:id',auth[_0x328c('0x8')](),controller[_0x328c('0xa')]);router[_0x328c('0xb')]('/',auth[_0x328c('0x8')](),controller[_0x328c('0xc')]);router['put'](_0x328c('0xd'),auth[_0x328c('0x8')](),controller[_0x328c('0xe')]);router[_0x328c('0xf')]('/:id',auth[_0x328c('0x8')](),controller[_0x328c('0x10')]);module[_0x328c('0x11')]=router;
\ No newline at end of file
+var _0x4b81=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','post','create','put','/:id','update','delete','exports'];(function(_0x3e723b,_0x5aad35){var _0x16ebf4=function(_0x4828f2){while(--_0x4828f2){_0x3e723b['push'](_0x3e723b['shift']());}};_0x16ebf4(++_0x5aad35);}(_0x4b81,0x104));var _0x14b8=function(_0x5921fc,_0x3f5277){_0x5921fc=_0x5921fc-0x0;var _0x35f8f0=_0x4b81[_0x5921fc];return _0x35f8f0;};'use strict';var multer=require(_0x14b8('0x0'));var util=require(_0x14b8('0x1'));var path=require(_0x14b8('0x2'));var timeout=require(_0x14b8('0x3'));var express=require('express');var router=express[_0x14b8('0x4')]();var fs_extra=require(_0x14b8('0x5'));var auth=require(_0x14b8('0x6'));var interaction=require(_0x14b8('0x7'));var config=require(_0x14b8('0x8'));var controller=require('./mailTransferReport.controller');router[_0x14b8('0x9')]('/',auth['isAuthenticated'](),controller[_0x14b8('0xa')]);router[_0x14b8('0x9')]('/describe',auth[_0x14b8('0xb')](),controller[_0x14b8('0xc')]);router['get']('/:id',auth[_0x14b8('0xb')](),controller['show']);router[_0x14b8('0xd')]('/',auth[_0x14b8('0xb')](),controller[_0x14b8('0xe')]);router[_0x14b8('0xf')](_0x14b8('0x10'),auth['isAuthenticated'](),controller[_0x14b8('0x11')]);router[_0x14b8('0x12')](_0x14b8('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x14b8('0x13')]=router;
\ No newline at end of file
index c1ba909..aa28c5b 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(_0x53dbb9,_0x2f0ea3){var _0x27e2f0=function(_0x506d12){while(--_0x506d12){_0x53dbb9['push'](_0x53dbb9['shift']());}};_0x27e2f0(++_0x2f0ea3);}(_0xaa88,0x137));var _0x8aa8=function(_0x4bb581,_0x6f7037){_0x4bb581=_0x4bb581-0x0;var _0x316bf5=_0xaa88[_0x4bb581];return _0x316bf5;};'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 _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x3eee78,_0x5acc63){var _0x53a5e5=function(_0x472fb6){while(--_0x472fb6){_0x3eee78['push'](_0x3eee78['shift']());}};_0x53a5e5(++_0x5acc63);}(_0x34e8,0x12c));var _0x834e=function(_0x2d9550,_0x319cdb){_0x2d9550=_0x2d9550-0x0;var _0x4c312c=_0x34e8[_0x2d9550];return _0x4c312c;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
index 0c2afe7..6dd6d44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x526f=['apply','reject','save','update','then','destroy','error','stack','name','send','map','MailTransferReport','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','rows','catch','find','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x526f,0x1a4));var _0xf526=function(_0xe95730,_0xf97049){_0xe95730=_0xe95730-0x0;var _0x1bc9cd=_0x526f[_0xe95730];return _0x1bc9cd;};'use strict';var emlformat=require(_0xf526('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf526('0x1'));var jsonpatch=require(_0xf526('0x2'));var rp=require(_0xf526('0x3'));var moment=require(_0xf526('0x4'));var BPromise=require(_0xf526('0x5'));var Mustache=require(_0xf526('0x6'));var util=require(_0xf526('0x7'));var path=require(_0xf526('0x8'));var sox=require(_0xf526('0x9'));var csv=require(_0xf526('0xa'));var ejs=require(_0xf526('0xb'));var fs=require('fs');var fs_extra=require(_0xf526('0xc'));var _=require(_0xf526('0xd'));var squel=require(_0xf526('0xe'));var crypto=require(_0xf526('0xf'));var jsforce=require(_0xf526('0x10'));var deskjs=require(_0xf526('0x11'));var toCsv=require(_0xf526('0xa'));var querystring=require(_0xf526('0x12'));var Papa=require('papaparse');var Redis=require(_0xf526('0x13'));var authService=require(_0xf526('0x14'));var qs=require(_0xf526('0x15'));var as=require(_0xf526('0x16'));var hardwareService=require(_0xf526('0x17'));var logger=require(_0xf526('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xf526('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xf526('0x1a'))['db'];function respondWithStatusCode(_0x3751c0,_0x152dd5){_0x152dd5=_0x152dd5||0xcc;return function(_0x53202a){if(_0x53202a){return _0x3751c0[_0xf526('0x1b')](_0x152dd5);}return _0x3751c0[_0xf526('0x1c')](_0x152dd5)[_0xf526('0x1d')]();};}function respondWithResult(_0x53c2f4,_0x35d3c7){_0x35d3c7=_0x35d3c7||0xc8;return function(_0x6b7d2b){if(_0x6b7d2b){return _0x53c2f4[_0xf526('0x1c')](_0x35d3c7)[_0xf526('0x1e')](_0x6b7d2b);}};}function respondWithFilteredResult(_0x3ab5ba,_0x5c3ba5){return function(_0x5d1bba){if(_0x5d1bba){var _0x19ab0=typeof _0x5c3ba5[_0xf526('0x1f')]==='undefined'&&typeof _0x5c3ba5['limit']===_0xf526('0x20');var _0xa7ee7e=_0x5d1bba['count'];var _0x5f00a7=_0x19ab0?0x0:_0x5c3ba5['offset'];var _0x28120e=_0x19ab0?_0x5d1bba[_0xf526('0x21')]:_0x5c3ba5[_0xf526('0x1f')]+_0x5c3ba5[_0xf526('0x22')];var _0x121480;if(_0x28120e>=_0xa7ee7e){_0x28120e=_0xa7ee7e;_0x121480=0xc8;}else{_0x121480=0xce;}_0x3ab5ba[_0xf526('0x1c')](_0x121480);return _0x3ab5ba[_0xf526('0x23')]('Content-Range',_0x5f00a7+'-'+_0x28120e+'/'+_0xa7ee7e)['json'](_0x5d1bba);}return null;};}function patchUpdates(_0x9a234c){return function(_0x50d086){try{jsonpatch[_0xf526('0x24')](_0x50d086,_0x9a234c,!![]);}catch(_0x157c9f){return BPromise[_0xf526('0x25')](_0x157c9f);}return _0x50d086[_0xf526('0x26')]();};}function saveUpdates(_0x363527,_0x3d9d70){return function(_0x48172a){if(_0x48172a){return _0x48172a[_0xf526('0x27')](_0x363527)[_0xf526('0x28')](function(_0x448a41){return _0x448a41;});}return null;};}function removeEntity(_0x167f43,_0x255e3d){return function(_0x39ee64){if(_0x39ee64){return _0x39ee64[_0xf526('0x29')]()[_0xf526('0x28')](function(){_0x167f43['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa0273b,_0x5bb5f2){return function(_0x859d6b){if(!_0x859d6b){_0xa0273b[_0xf526('0x1b')](0x194);}return _0x859d6b;};}function handleError(_0x500368,_0x4656dd){_0x4656dd=_0x4656dd||0x1f4;return function(_0x11185d){logger[_0xf526('0x2a')](_0x11185d[_0xf526('0x2b')]);if(_0x11185d[_0xf526('0x2c')]){delete _0x11185d[_0xf526('0x2c')];}_0x500368[_0xf526('0x1c')](_0x4656dd)[_0xf526('0x2d')](_0x11185d);};}exports['index']=function(_0x58e6ea,_0x1c0c5c){var _0x313a7a={},_0x13e226={},_0x2c6775={'count':0x0,'rows':[]};var _0x19434f=_[_0xf526('0x2e')](db[_0xf526('0x2f')][_0xf526('0x30')],function(_0x3c310f){return{'name':_0x3c310f['fieldName'],'type':_0x3c310f[_0xf526('0x31')][_0xf526('0x32')]};});_0x13e226[_0xf526('0x33')]=_[_0xf526('0x2e')](_0x19434f,_0xf526('0x2c'));_0x13e226[_0xf526('0x34')]=_[_0xf526('0x35')](_0x58e6ea[_0xf526('0x34')]);_0x13e226['filters']=_[_0xf526('0x36')](_0x13e226[_0xf526('0x33')],_0x13e226[_0xf526('0x34')]);_0x313a7a[_0xf526('0x37')]=_[_0xf526('0x36')](_0x13e226[_0xf526('0x33')],qs[_0xf526('0x38')](_0x58e6ea[_0xf526('0x34')]['fields']));_0x313a7a[_0xf526('0x37')]=_0x313a7a[_0xf526('0x37')][_0xf526('0x39')]?_0x313a7a[_0xf526('0x37')]:_0x13e226[_0xf526('0x33')];if(!_0x58e6ea[_0xf526('0x34')][_0xf526('0x3a')](_0xf526('0x3b'))){_0x313a7a[_0xf526('0x22')]=qs['limit'](_0x58e6ea[_0xf526('0x34')][_0xf526('0x22')]);_0x313a7a[_0xf526('0x1f')]=qs['offset'](_0x58e6ea[_0xf526('0x34')]['offset']);}_0x313a7a[_0xf526('0x3c')]=qs['sort'](_0x58e6ea[_0xf526('0x34')]['sort']);_0x313a7a[_0xf526('0x3d')]=qs['filters'](_[_0xf526('0x3e')](_0x58e6ea[_0xf526('0x34')],_0x13e226[_0xf526('0x3f')]),_0x19434f);if(_0x58e6ea[_0xf526('0x34')][_0xf526('0x40')]){_0x313a7a[_0xf526('0x3d')]=_[_0xf526('0x41')](_0x313a7a['where'],{'$or':_[_0xf526('0x2e')](_0x19434f,function(_0x57f93f){if(_0x57f93f[_0xf526('0x31')]!==_0xf526('0x42')){var _0x1487b3={};_0x1487b3[_0x57f93f[_0xf526('0x2c')]]={'$like':'%'+_0x58e6ea[_0xf526('0x34')]['filter']+'%'};return _0x1487b3;}})});}_0x313a7a=_[_0xf526('0x41')]({},_0x313a7a,_0x58e6ea[_0xf526('0x43')]);var _0x212d98={'where':_0x313a7a[_0xf526('0x3d')]};return db[_0xf526('0x2f')][_0xf526('0x21')](_0x212d98)['then'](function(_0xc29b05){_0x2c6775['count']=_0xc29b05;if(_0x58e6ea[_0xf526('0x34')]['includeAll']){_0x313a7a[_0xf526('0x44')]=[{'all':!![]}];}return db[_0xf526('0x2f')][_0xf526('0x45')](_0x313a7a);})[_0xf526('0x28')](function(_0x481d07){_0x2c6775[_0xf526('0x46')]=_0x481d07;return _0x2c6775;})[_0xf526('0x28')](respondWithFilteredResult(_0x1c0c5c,_0x313a7a))[_0xf526('0x47')](handleError(_0x1c0c5c,null));};exports['show']=function(_0x4cc94a,_0x4de313){var _0x33194b={'raw':!![],'where':{'id':_0x4cc94a['params']['id']}},_0xcde859={};_0xcde859[_0xf526('0x33')]=_['keys'](db[_0xf526('0x2f')][_0xf526('0x30')]);_0xcde859['query']=_['keys'](_0x4cc94a[_0xf526('0x34')]);_0xcde859['filters']=_[_0xf526('0x36')](_0xcde859['model'],_0xcde859['query']);_0x33194b[_0xf526('0x37')]=_[_0xf526('0x36')](_0xcde859[_0xf526('0x33')],qs[_0xf526('0x38')](_0x4cc94a[_0xf526('0x34')][_0xf526('0x38')]));_0x33194b[_0xf526('0x37')]=_0x33194b[_0xf526('0x37')][_0xf526('0x39')]?_0x33194b[_0xf526('0x37')]:_0xcde859['model'];if(_0x4cc94a[_0xf526('0x34')]['includeAll']){_0x33194b[_0xf526('0x44')]=[{'all':!![]}];}_0x33194b=_[_0xf526('0x41')]({},_0x33194b,_0x4cc94a[_0xf526('0x43')]);return db[_0xf526('0x2f')][_0xf526('0x48')](_0x33194b)[_0xf526('0x28')](handleEntityNotFound(_0x4de313,null))[_0xf526('0x28')](respondWithResult(_0x4de313,null))[_0xf526('0x47')](handleError(_0x4de313,null));};exports['create']=function(_0x510683,_0x24403c){return db[_0xf526('0x2f')]['create'](_0x510683[_0xf526('0x49')],{})[_0xf526('0x28')](respondWithResult(_0x24403c,0xc9))[_0xf526('0x47')](handleError(_0x24403c,null));};exports['update']=function(_0x41f0dc,_0x4f8fb8){if(_0x41f0dc[_0xf526('0x49')]['id']){delete _0x41f0dc[_0xf526('0x49')]['id'];}return db[_0xf526('0x2f')]['find']({'where':{'id':_0x41f0dc[_0xf526('0x4a')]['id']}})[_0xf526('0x28')](handleEntityNotFound(_0x4f8fb8,null))[_0xf526('0x28')](saveUpdates(_0x41f0dc[_0xf526('0x49')],null))['then'](respondWithResult(_0x4f8fb8,null))[_0xf526('0x47')](handleError(_0x4f8fb8,null));};exports['destroy']=function(_0x5979df,_0x186c26){return db[_0xf526('0x2f')]['find']({'where':{'id':_0x5979df[_0xf526('0x4a')]['id']}})['then'](handleEntityNotFound(_0x186c26,null))['then'](removeEntity(_0x186c26,null))[_0xf526('0x47')](handleError(_0x186c26,null));};exports[_0xf526('0x4b')]=function(_0x25b0f6,_0x4ea123){return db[_0xf526('0x2f')][_0xf526('0x4b')]()['then'](respondWithResult(_0x4ea123,null))[_0xf526('0x47')](handleError(_0x4ea123,null));};
\ No newline at end of file
+var _0x096d=['rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','sendStatus','error','stack','name','send','index','MailTransferReport','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','include','find','create','body','update','params','destroy','describe'];(function(_0x1a7fcc,_0x2c3737){var _0x5c8a54=function(_0x2d35b3){while(--_0x2d35b3){_0x1a7fcc['push'](_0x1a7fcc['shift']());}};_0x5c8a54(++_0x2c3737);}(_0x096d,0x9a));var _0xd096=function(_0x443e9e,_0x3c1baf){_0x443e9e=_0x443e9e-0x0;var _0x5db340=_0x096d[_0x443e9e];return _0x5db340;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd096('0x0'));var zipdir=require(_0xd096('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd096('0x2'));var BPromise=require(_0xd096('0x3'));var Mustache=require(_0xd096('0x4'));var util=require(_0xd096('0x5'));var path=require(_0xd096('0x6'));var sox=require(_0xd096('0x7'));var csv=require(_0xd096('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd096('0x9'));var _=require('lodash');var squel=require(_0xd096('0xa'));var crypto=require(_0xd096('0xb'));var jsforce=require(_0xd096('0xc'));var deskjs=require(_0xd096('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd096('0xe'));var Papa=require('papaparse');var Redis=require(_0xd096('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd096('0x10'));var as=require(_0xd096('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd096('0x12'))(_0xd096('0x13'));var utils=require('../../config/utils');var config=require(_0xd096('0x14'));var licenseUtil=require(_0xd096('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2bd482,_0xf0bee3){_0xf0bee3=_0xf0bee3||0xcc;return function(_0x41b16f){if(_0x41b16f){return _0x2bd482['sendStatus'](_0xf0bee3);}return _0x2bd482[_0xd096('0x16')](_0xf0bee3)[_0xd096('0x17')]();};}function respondWithResult(_0xa3c5ca,_0x328d4c){_0x328d4c=_0x328d4c||0xc8;return function(_0x1a36d3){if(_0x1a36d3){return _0xa3c5ca[_0xd096('0x16')](_0x328d4c)['json'](_0x1a36d3);}};}function respondWithFilteredResult(_0x12098c,_0x1280cc){return function(_0x5b04ed){if(_0x5b04ed){var _0x41dbf5=typeof _0x1280cc[_0xd096('0x18')]===_0xd096('0x19')&&typeof _0x1280cc[_0xd096('0x1a')]===_0xd096('0x19');var _0x407f2c=_0x5b04ed[_0xd096('0x1b')];var _0x5e65e4=_0x41dbf5?0x0:_0x1280cc['offset'];var _0x2f283e=_0x41dbf5?_0x5b04ed['count']:_0x1280cc[_0xd096('0x18')]+_0x1280cc[_0xd096('0x1a')];var _0x54c4f8;if(_0x2f283e>=_0x407f2c){_0x2f283e=_0x407f2c;_0x54c4f8=0xc8;}else{_0x54c4f8=0xce;}_0x12098c[_0xd096('0x16')](_0x54c4f8);return _0x12098c['set'](_0xd096('0x1c'),_0x5e65e4+'-'+_0x2f283e+'/'+_0x407f2c)[_0xd096('0x1d')](_0x5b04ed);}return null;};}function patchUpdates(_0x120b2a){return function(_0x1d997d){try{jsonpatch[_0xd096('0x1e')](_0x1d997d,_0x120b2a,!![]);}catch(_0x4092b2){return BPromise[_0xd096('0x1f')](_0x4092b2);}return _0x1d997d[_0xd096('0x20')]();};}function saveUpdates(_0x9424ce,_0x394ffd){return function(_0x4b9a6d){if(_0x4b9a6d){return _0x4b9a6d['update'](_0x9424ce)[_0xd096('0x21')](function(_0x18b076){return _0x18b076;});}return null;};}function removeEntity(_0x10f06e,_0x2b144a){return function(_0x33ecdf){if(_0x33ecdf){return _0x33ecdf['destroy']()[_0xd096('0x21')](function(){_0x10f06e[_0xd096('0x16')](0xcc)[_0xd096('0x17')]();});}};}function handleEntityNotFound(_0x2cf23f,_0x1bbd17){return function(_0x55147e){if(!_0x55147e){_0x2cf23f[_0xd096('0x22')](0x194);}return _0x55147e;};}function handleError(_0x2c0ece,_0x1dba1b){_0x1dba1b=_0x1dba1b||0x1f4;return function(_0x319bbe){logger[_0xd096('0x23')](_0x319bbe[_0xd096('0x24')]);if(_0x319bbe[_0xd096('0x25')]){delete _0x319bbe['name'];}_0x2c0ece[_0xd096('0x16')](_0x1dba1b)[_0xd096('0x26')](_0x319bbe);};}exports[_0xd096('0x27')]=function(_0x781b92,_0x457da7){var _0x470d3f={},_0x22c45e={},_0x2f00c9={'count':0x0,'rows':[]};var _0x1751c9=_['map'](db[_0xd096('0x28')][_0xd096('0x29')],function(_0x31325d){return{'name':_0x31325d[_0xd096('0x2a')],'type':_0x31325d['type'][_0xd096('0x2b')]};});_0x22c45e[_0xd096('0x2c')]=_[_0xd096('0x2d')](_0x1751c9,_0xd096('0x25'));_0x22c45e[_0xd096('0x2e')]=_[_0xd096('0x2f')](_0x781b92[_0xd096('0x2e')]);_0x22c45e['filters']=_[_0xd096('0x30')](_0x22c45e[_0xd096('0x2c')],_0x22c45e[_0xd096('0x2e')]);_0x470d3f[_0xd096('0x31')]=_[_0xd096('0x30')](_0x22c45e[_0xd096('0x2c')],qs[_0xd096('0x32')](_0x781b92[_0xd096('0x2e')][_0xd096('0x32')]));_0x470d3f[_0xd096('0x31')]=_0x470d3f[_0xd096('0x31')][_0xd096('0x33')]?_0x470d3f[_0xd096('0x31')]:_0x22c45e[_0xd096('0x2c')];if(!_0x781b92[_0xd096('0x2e')][_0xd096('0x34')](_0xd096('0x35'))){_0x470d3f[_0xd096('0x1a')]=qs[_0xd096('0x1a')](_0x781b92[_0xd096('0x2e')][_0xd096('0x1a')]);_0x470d3f[_0xd096('0x18')]=qs['offset'](_0x781b92['query'][_0xd096('0x18')]);}_0x470d3f[_0xd096('0x36')]=qs[_0xd096('0x37')](_0x781b92['query'][_0xd096('0x37')]);_0x470d3f[_0xd096('0x38')]=qs[_0xd096('0x39')](_[_0xd096('0x3a')](_0x781b92[_0xd096('0x2e')],_0x22c45e[_0xd096('0x39')]),_0x1751c9);if(_0x781b92['query'][_0xd096('0x3b')]){_0x470d3f[_0xd096('0x38')]=_['merge'](_0x470d3f[_0xd096('0x38')],{'$or':_[_0xd096('0x2d')](_0x1751c9,function(_0x394f75){if(_0x394f75[_0xd096('0x3c')]!==_0xd096('0x3d')){var _0x13e0a9={};_0x13e0a9[_0x394f75[_0xd096('0x25')]]={'$like':'%'+_0x781b92[_0xd096('0x2e')][_0xd096('0x3b')]+'%'};return _0x13e0a9;}})});}_0x470d3f=_[_0xd096('0x3e')]({},_0x470d3f,_0x781b92[_0xd096('0x3f')]);var _0xb2fe4={'where':_0x470d3f[_0xd096('0x38')]};return db[_0xd096('0x28')]['count'](_0xb2fe4)[_0xd096('0x21')](function(_0x56d3d2){_0x2f00c9['count']=_0x56d3d2;if(_0x781b92[_0xd096('0x2e')][_0xd096('0x40')]){_0x470d3f['include']=[{'all':!![]}];}return db['MailTransferReport'][_0xd096('0x41')](_0x470d3f);})[_0xd096('0x21')](function(_0x34efba){_0x2f00c9[_0xd096('0x42')]=_0x34efba;return _0x2f00c9;})[_0xd096('0x21')](respondWithFilteredResult(_0x457da7,_0x470d3f))[_0xd096('0x43')](handleError(_0x457da7,null));};exports[_0xd096('0x44')]=function(_0x1d9f68,_0x948a27){var _0x300258={'raw':!![],'where':{'id':_0x1d9f68['params']['id']}},_0x2ea85c={};_0x2ea85c[_0xd096('0x2c')]=_['keys'](db[_0xd096('0x28')]['rawAttributes']);_0x2ea85c[_0xd096('0x2e')]=_['keys'](_0x1d9f68[_0xd096('0x2e')]);_0x2ea85c[_0xd096('0x39')]=_['intersection'](_0x2ea85c[_0xd096('0x2c')],_0x2ea85c[_0xd096('0x2e')]);_0x300258[_0xd096('0x31')]=_[_0xd096('0x30')](_0x2ea85c[_0xd096('0x2c')],qs[_0xd096('0x32')](_0x1d9f68[_0xd096('0x2e')]['fields']));_0x300258[_0xd096('0x31')]=_0x300258[_0xd096('0x31')][_0xd096('0x33')]?_0x300258[_0xd096('0x31')]:_0x2ea85c[_0xd096('0x2c')];if(_0x1d9f68['query'][_0xd096('0x40')]){_0x300258[_0xd096('0x45')]=[{'all':!![]}];}_0x300258=_[_0xd096('0x3e')]({},_0x300258,_0x1d9f68[_0xd096('0x3f')]);return db[_0xd096('0x28')][_0xd096('0x46')](_0x300258)[_0xd096('0x21')](handleEntityNotFound(_0x948a27,null))[_0xd096('0x21')](respondWithResult(_0x948a27,null))['catch'](handleError(_0x948a27,null));};exports[_0xd096('0x47')]=function(_0x386a0b,_0x2c73a2){return db[_0xd096('0x28')]['create'](_0x386a0b[_0xd096('0x48')],{})[_0xd096('0x21')](respondWithResult(_0x2c73a2,0xc9))[_0xd096('0x43')](handleError(_0x2c73a2,null));};exports[_0xd096('0x49')]=function(_0x9352c0,_0xf7f0d){if(_0x9352c0[_0xd096('0x48')]['id']){delete _0x9352c0[_0xd096('0x48')]['id'];}return db[_0xd096('0x28')][_0xd096('0x46')]({'where':{'id':_0x9352c0[_0xd096('0x4a')]['id']}})[_0xd096('0x21')](handleEntityNotFound(_0xf7f0d,null))[_0xd096('0x21')](saveUpdates(_0x9352c0[_0xd096('0x48')],null))[_0xd096('0x21')](respondWithResult(_0xf7f0d,null))[_0xd096('0x43')](handleError(_0xf7f0d,null));};exports[_0xd096('0x4b')]=function(_0x381f96,_0xf91aac){return db[_0xd096('0x28')][_0xd096('0x46')]({'where':{'id':_0x381f96[_0xd096('0x4a')]['id']}})[_0xd096('0x21')](handleEntityNotFound(_0xf91aac,null))[_0xd096('0x21')](removeEntity(_0xf91aac,null))[_0xd096('0x43')](handleError(_0xf91aac,null));};exports['describe']=function(_0x6aa1b0,_0x53ac91){return db[_0xd096('0x28')][_0xd096('0x4c')]()[_0xd096('0x21')](respondWithResult(_0x53ac91,null))[_0xd096('0x43')](handleError(_0x53ac91,null));};
\ No newline at end of file
index 663a084..632ac7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc1=['request-promise','path','rimraf','../../config/environment','exports','MailTransferReport','uniqueid','../../config/logger','bluebird'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x3dc1,0x127));var _0x13dc=function(_0x1be9a4,_0xeefc43){_0x1be9a4=_0x1be9a4-0x0;var _0xf15c53=_0x3dc1[_0x1be9a4];return _0xf15c53;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x13dc('0x0'))('api');var moment=require('moment');var BPromise=require(_0x13dc('0x1'));var rp=require(_0x13dc('0x2'));var fs=require('fs');var path=require(_0x13dc('0x3'));var rimraf=require(_0x13dc('0x4'));var config=require(_0x13dc('0x5'));var attributes=require('./mailTransferReport.attributes');module[_0x13dc('0x6')]=function(_0x35fdcb,_0x4ec993){return _0x35fdcb['define'](_0x13dc('0x7'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x13dc('0x8'),'fields':[_0x13dc('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['../../config/logger','api','moment','path','../../config/environment','./mailTransferReport.attributes','exports','MailTransferReport','report_mail_transfer','uniqueid','lodash'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x3e74,0x175));var _0x43e7=function(_0x373f2b,_0x29893f){_0x373f2b=_0x373f2b-0x0;var _0x500ab6=_0x3e74[_0x373f2b];return _0x500ab6;};'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':[{'name':_0x43e7('0xa'),'fields':[_0x43e7('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index b40efa1..c96af65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c00=['code','message','result','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x56f7e2,_0x145392){var _0x36240b=function(_0x216ff7){while(--_0x216ff7){_0x56f7e2['push'](_0x56f7e2['shift']());}};_0x36240b(++_0x145392);}(_0x7c00,0x121));var _0x07c0=function(_0x1f773d,_0x3b0be2){_0x1f773d=_0x1f773d-0x0;var _0x411122=_0x7c00[_0x1f773d];return _0x411122;};'use strict';var _=require(_0x07c0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x07c0('0x1'));var fs=require('fs');var Redis=require(_0x07c0('0x2'));var db=require(_0x07c0('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x07c0('0x4'))('rpc');var config=require(_0x07c0('0x5'));var jayson=require(_0x07c0('0x6'));var client=jayson[_0x07c0('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x100d6b,_0x439f40,_0x9f0a53){return new BPromise(function(_0x592de4,_0x781ce){return client[_0x07c0('0x8')](_0x100d6b,_0x9f0a53)[_0x07c0('0x9')](function(_0x5a727c){logger[_0x07c0('0xa')](_0x07c0('0xb'),_0x439f40,_0x07c0('0xc'));logger[_0x07c0('0xd')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x439f40,_0x07c0('0xc'),JSON['stringify'](_0x5a727c));if(_0x5a727c[_0x07c0('0xe')]){if(_0x5a727c['error'][_0x07c0('0xf')]===0x1f4){logger[_0x07c0('0xe')](_0x07c0('0xb'),_0x439f40,_0x5a727c[_0x07c0('0xe')][_0x07c0('0x10')]);return _0x781ce(_0x5a727c[_0x07c0('0xe')][_0x07c0('0x10')]);}logger[_0x07c0('0xe')](_0x07c0('0xb'),_0x439f40,_0x5a727c[_0x07c0('0xe')]['message']);return _0x592de4(_0x5a727c['error'][_0x07c0('0x10')]);}else{logger[_0x07c0('0xa')](_0x07c0('0xb'),_0x439f40,_0x07c0('0xc'));_0x592de4(_0x5a727c[_0x07c0('0x11')][_0x07c0('0x10')]);}})[_0x07c0('0x12')](function(_0x5c7585){logger['error']('MailTransferReport,\x20%s,\x20%s',_0x439f40,_0x5c7585);_0x781ce(_0x5c7585);});});}
\ No newline at end of file
+var _0x3707=['error','code','MailTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x482815,_0x3601b1){var _0x272d11=function(_0x414e63){while(--_0x414e63){_0x482815['push'](_0x482815['shift']());}};_0x272d11(++_0x3601b1);}(_0x3707,0x14b));var _0x7370=function(_0x348c9a,_0x17e3cd){_0x348c9a=_0x348c9a-0x0;var _0x5249f4=_0x3707[_0x348c9a];return _0x5249f4;};'use strict';var _=require(_0x7370('0x0'));var util=require(_0x7370('0x1'));var moment=require(_0x7370('0x2'));var BPromise=require(_0x7370('0x3'));var rs=require(_0x7370('0x4'));var fs=require('fs');var Redis=require(_0x7370('0x5'));var db=require(_0x7370('0x6'))['db'];var utils=require(_0x7370('0x7'));var logger=require(_0x7370('0x8'))(_0x7370('0x9'));var config=require(_0x7370('0xa'));var jayson=require(_0x7370('0xb'));var client=jayson[_0x7370('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x574ad5,_0x201093,_0x35fd0e){return new BPromise(function(_0x1a2680,_0x4330dd){return client[_0x7370('0xd')](_0x574ad5,_0x35fd0e)['then'](function(_0x3e01d0){logger[_0x7370('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x201093,_0x7370('0xf'));logger[_0x7370('0x10')](_0x7370('0x11'),_0x201093,_0x7370('0xf'),JSON[_0x7370('0x12')](_0x3e01d0));if(_0x3e01d0[_0x7370('0x13')]){if(_0x3e01d0[_0x7370('0x13')][_0x7370('0x14')]===0x1f4){logger[_0x7370('0x13')](_0x7370('0x15'),_0x201093,_0x3e01d0[_0x7370('0x13')]['message']);return _0x4330dd(_0x3e01d0['error'][_0x7370('0x16')]);}logger[_0x7370('0x13')](_0x7370('0x15'),_0x201093,_0x3e01d0['error'][_0x7370('0x16')]);return _0x1a2680(_0x3e01d0['error'][_0x7370('0x16')]);}else{logger[_0x7370('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x201093,_0x7370('0xf'));_0x1a2680(_0x3e01d0[_0x7370('0x17')]['message']);}})[_0x7370('0x18')](function(_0x1a371a){logger[_0x7370('0x13')](_0x7370('0x15'),_0x201093,_0x1a371a);_0x4330dd(_0x1a371a);});});}
\ No newline at end of file
index b760676..90f8cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06c1=['../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x50c4fb,_0x4ef213){var _0x331201=function(_0x46ef1a){while(--_0x46ef1a){_0x50c4fb['push'](_0x50c4fb['shift']());}};_0x331201(++_0x4ef213);}(_0x06c1,0x19a));var _0x106c=function(_0x1cb163,_0x4f529e){_0x1cb163=_0x1cb163-0x0;var _0x4d390a=_0x06c1[_0x1cb163];return _0x4d390a;};'use strict';var multer=require(_0x106c('0x0'));var util=require(_0x106c('0x1'));var path=require(_0x106c('0x2'));var timeout=require(_0x106c('0x3'));var express=require(_0x106c('0x4'));var router=express[_0x106c('0x5')]();var fs_extra=require(_0x106c('0x6'));var auth=require(_0x106c('0x7'));var interaction=require(_0x106c('0x8'));var config=require(_0x106c('0x9'));var controller=require(_0x106c('0xa'));router[_0x106c('0xb')]('/',auth[_0x106c('0xc')](),controller[_0x106c('0xd')]);router[_0x106c('0xb')]('/describe',auth[_0x106c('0xc')](),controller[_0x106c('0xe')]);router['get'](_0x106c('0xf'),auth['isAuthenticated'](),controller[_0x106c('0x10')]);router[_0x106c('0x11')]('/',auth[_0x106c('0xc')](),controller[_0x106c('0x12')]);router[_0x106c('0x13')](_0x106c('0xf'),auth[_0x106c('0xc')](),controller[_0x106c('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x106c('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x9c7e=['put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./memberReport.controller','get','index','/describe','describe','isAuthenticated','show','post'];(function(_0x441ef6,_0xe1d009){var _0x19e8df=function(_0xbebf8){while(--_0xbebf8){_0x441ef6['push'](_0x441ef6['shift']());}};_0x19e8df(++_0xe1d009);}(_0x9c7e,0x182));var _0xe9c7=function(_0x137728,_0x3ccab8){_0x137728=_0x137728-0x0;var _0x95a1ce=_0x9c7e[_0x137728];return _0x95a1ce;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe9c7('0x0'));var timeout=require(_0xe9c7('0x1'));var express=require(_0xe9c7('0x2'));var router=express[_0xe9c7('0x3')]();var fs_extra=require(_0xe9c7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe9c7('0x5'));var config=require('../../config/environment');var controller=require(_0xe9c7('0x6'));router[_0xe9c7('0x7')]('/',auth['isAuthenticated'](),controller[_0xe9c7('0x8')]);router['get'](_0xe9c7('0x9'),auth['isAuthenticated'](),controller[_0xe9c7('0xa')]);router[_0xe9c7('0x7')]('/:id',auth[_0xe9c7('0xb')](),controller[_0xe9c7('0xc')]);router[_0xe9c7('0xd')]('/',auth[_0xe9c7('0xb')](),controller['create']);router[_0xe9c7('0xe')](_0xe9c7('0xf'),auth[_0xe9c7('0xb')](),controller[_0xe9c7('0x10')]);router[_0xe9c7('0x11')](_0xe9c7('0xf'),auth[_0xe9c7('0xb')](),controller[_0xe9c7('0x12')]);module[_0xe9c7('0x13')]=router;
\ No newline at end of file
index a393dfc..2994fae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa45f=['LOGIN,\x20PAUSE,\x20TALKING','DATE','enterAt','diff','setDataValue','exitAt','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[queue]','INTEGER','sequelize','exports','STRING','DEFAULT\x20PAUSE'];(function(_0x5077ce,_0x4aa05c){var _0x1a1402=function(_0x1b3b24){while(--_0x1b3b24){_0x5077ce['push'](_0x5077ce['shift']());}};_0x1a1402(++_0x4aa05c);}(_0xa45f,0x1e6));var _0xfa45=function(_0x3ab860,_0x33d98e){_0x3ab860=_0x3ab860-0x0;var _0x5e5fb4=_0xa45f[_0x3ab860];return _0x5e5fb4;};'use strict';var Sequelize=require(_0xfa45('0x0'));var moment=require('moment');module[_0xfa45('0x1')]={'channel':{'type':Sequelize[_0xfa45('0x2')]},'membername':{'type':Sequelize[_0xfa45('0x2')]},'interface':{'type':Sequelize[_0xfa45('0x2')]},'type':{'type':Sequelize[_0xfa45('0x2')],'defaultValue':_0xfa45('0x3'),'comment':_0xfa45('0x4')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xfa45('0x5')]},'exitAt':{'type':Sequelize[_0xfa45('0x5')],'set':function(_0x1b4fe0){var _0xf71017=moment(_0x1b4fe0);var _0x3a6533=moment(this['getDataValue'](_0xfa45('0x6')));var _0x311041=_0xf71017[_0xfa45('0x7')](_0x3a6533,'seconds');this[_0xfa45('0x8')](_0xfa45('0x9'),_0x1b4fe0);this[_0xfa45('0x8')]('duration',_0x311041>=0x0?_0x311041:null);}},'data1':{'type':Sequelize[_0xfa45('0x2')],'comment':_0xfa45('0xa')},'data2':{'type':Sequelize[_0xfa45('0x2')],'comment':_0xfa45('0xb')},'data3':{'type':Sequelize[_0xfa45('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0xfa45('0x2')],'comment':_0xfa45('0xc')},'role':{'type':Sequelize[_0xfa45('0x2')]},'internal':{'type':Sequelize[_0xfa45('0xd')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8cb1=['seconds','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','INTEGER','moment','STRING','DEFAULT\x20PAUSE','DATE','diff'];(function(_0x113ff6,_0x38f46e){var _0x34c780=function(_0x4c13dd){while(--_0x4c13dd){_0x113ff6['push'](_0x113ff6['shift']());}};_0x34c780(++_0x38f46e);}(_0x8cb1,0xaf));var _0x18cb=function(_0x54e4f9,_0x35d3ba){_0x54e4f9=_0x54e4f9-0x0;var _0x5de187=_0x8cb1[_0x54e4f9];return _0x5de187;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x18cb('0x0'));module['exports']={'channel':{'type':Sequelize[_0x18cb('0x1')]},'membername':{'type':Sequelize[_0x18cb('0x1')]},'interface':{'type':Sequelize[_0x18cb('0x1')]},'type':{'type':Sequelize[_0x18cb('0x1')],'defaultValue':_0x18cb('0x2'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0x18cb('0x3')]},'exitAt':{'type':Sequelize[_0x18cb('0x3')],'set':function(_0x3a3e45){var _0x341ab6=moment(_0x3a3e45);var _0x12fb7f=moment(this['getDataValue']('enterAt'));var _0x369daf=_0x341ab6[_0x18cb('0x4')](_0x12fb7f,_0x18cb('0x5'));this['setDataValue'](_0x18cb('0x6'),_0x3a3e45);this['setDataValue'](_0x18cb('0x7'),_0x369daf>=0x0?_0x369daf:null);}},'data1':{'type':Sequelize[_0x18cb('0x1')],'comment':_0x18cb('0x8')},'data2':{'type':Sequelize[_0x18cb('0x1')],'comment':_0x18cb('0x9')},'data3':{'type':Sequelize[_0x18cb('0x1')],'comment':_0x18cb('0xa')},'data4':{'type':Sequelize[_0x18cb('0x1')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0x18cb('0x1')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x18cb('0xb')]},'uniqueid':{'type':Sequelize[_0x18cb('0x1')]}};
\ No newline at end of file
index c7c63ec..3c672a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','MemberReport','fieldName','type','model','name','keys'];(function(_0x355817,_0x1fcb56){var _0x4993a9=function(_0x2e26eb){while(--_0x2e26eb){_0x355817['push'](_0x355817['shift']());}};_0x4993a9(++_0x1fcb56);}(_0x7217,0x19e));var _0x7721=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x7217[_0x491a7f];return _0x3d8f44;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x2f')](_0x5c54f0,_0x7721('0x34'));_0xd7d703['query']=_[_0x7721('0x35')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x37')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],_0xd7d703['query']);_0x37b9f0[_0x7721('0x39')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],qs['fields'](_0x158d98[_0x7721('0x36')][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')]['length']?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3b')](_0x7721('0x3c'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0['order']=qs[_0x7721('0x3d')](_0x158d98[_0x7721('0x36')][_0x7721('0x3d')]);_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x37')](_[_0x7721('0x3f')](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98['query']['filter']){_0x37b9f0[_0x7721('0x3e')]=_[_0x7721('0x40')](_0x37b9f0[_0x7721('0x3e')],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4a90ce){if(_0x4a90ce[_0x7721('0x32')]!=='VIRTUAL'){var _0xfab37b={};_0xfab37b[_0x4a90ce[_0x7721('0x34')]]={'$like':'%'+_0x158d98['query'][_0x7721('0x41')]+'%'};return _0xfab37b;}})});}_0x37b9f0=_[_0x7721('0x40')]({},_0x37b9f0,_0x158d98['options']);var _0x4d0111={'where':_0x37b9f0[_0x7721('0x3e')]};return db[_0x7721('0x30')][_0x7721('0x22')](_0x4d0111)[_0x7721('0x29')](function(_0x577af9){_0x1da2d8[_0x7721('0x22')]=_0x577af9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x42')]){_0x37b9f0[_0x7721('0x43')]=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a2c28){_0x1da2d8[_0x7721('0x44')]=_0x4a2c28;return _0x1da2d8;})['then'](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x45')](handleError(_0x1ea4d,null));};exports[_0x7721('0x46')]=function(_0x231dad,_0x49e0c5){var _0x1453d4={'raw':!![],'where':{'id':_0x231dad[_0x7721('0x47')]['id']}},_0x11d853={};_0x11d853['model']=_[_0x7721('0x35')](db[_0x7721('0x30')][_0x7721('0x48')]);_0x11d853[_0x7721('0x36')]=_[_0x7721('0x35')](_0x231dad[_0x7721('0x36')]);_0x11d853[_0x7721('0x37')]=_['intersection'](_0x11d853['model'],_0x11d853[_0x7721('0x36')]);_0x1453d4[_0x7721('0x39')]=_[_0x7721('0x38')](_0x11d853[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x231dad[_0x7721('0x36')][_0x7721('0x3a')]));_0x1453d4[_0x7721('0x39')]=_0x1453d4[_0x7721('0x39')][_0x7721('0x49')]?_0x1453d4['attributes']:_0x11d853['model'];if(_0x231dad[_0x7721('0x36')][_0x7721('0x42')]){_0x1453d4[_0x7721('0x43')]=[{'all':!![]}];}_0x1453d4=_[_0x7721('0x40')]({},_0x1453d4,_0x231dad['options']);return db[_0x7721('0x30')][_0x7721('0x4a')](_0x1453d4)['then'](handleEntityNotFound(_0x49e0c5,null))[_0x7721('0x29')](respondWithResult(_0x49e0c5,null))['catch'](handleError(_0x49e0c5,null));};exports[_0x7721('0x4b')]=function(_0x5c6922,_0x334f23){return db[_0x7721('0x30')][_0x7721('0x4b')](_0x5c6922['body'],{})[_0x7721('0x29')](respondWithResult(_0x334f23,0xc9))[_0x7721('0x45')](handleError(_0x334f23,null));};exports['update']=function(_0x223d93,_0x1196c2){if(_0x223d93[_0x7721('0x4c')]['id']){delete _0x223d93['body']['id'];}return db[_0x7721('0x30')]['find']({'where':{'id':_0x223d93[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0x29')](saveUpdates(_0x223d93[_0x7721('0x4c')],null))[_0x7721('0x29')](respondWithResult(_0x1196c2,null))[_0x7721('0x45')](handleError(_0x1196c2,null));};exports[_0x7721('0x2a')]=function(_0x7fbb73,_0x694d2f){return db[_0x7721('0x30')][_0x7721('0x4a')]({'where':{'id':_0x7fbb73[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x694d2f,null))[_0x7721('0x29')](removeEntity(_0x694d2f,null))[_0x7721('0x45')](handleError(_0x694d2f,null));};exports['describe']=function(_0x474f32,_0x2f6f30){return db[_0x7721('0x30')][_0x7721('0x4d')]()[_0x7721('0x29')](respondWithResult(_0x2f6f30,null))[_0x7721('0x45')](handleError(_0x2f6f30,null));};
\ No newline at end of file
+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(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0xedd9,0xfc));var _0x9edd=function(_0x567779,_0x28d9b2){_0x567779=_0x567779-0x0;var _0x5abfe4=_0xedd9[_0x567779];return _0x5abfe4;};'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 04a117a..47a5238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0447=['moment','bluebird','path','rimraf','exports','MemberReport','report_member','membername_interface','membername','lodash','util','../../config/logger','api'];(function(_0x545dae,_0x10c259){var _0x1d5dcb=function(_0x1a9dce){while(--_0x1a9dce){_0x545dae['push'](_0x545dae['shift']());}};_0x1d5dcb(++_0x10c259);}(_0x0447,0x141));var _0x7044=function(_0xf1e6f9,_0x527826){_0xf1e6f9=_0xf1e6f9-0x0;var _0x30556c=_0x0447[_0xf1e6f9];return _0x30556c;};'use strict';var _=require(_0x7044('0x0'));var util=require(_0x7044('0x1'));var logger=require(_0x7044('0x2'))(_0x7044('0x3'));var moment=require(_0x7044('0x4'));var BPromise=require(_0x7044('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7044('0x6'));var rimraf=require(_0x7044('0x7'));var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x7044('0x8')]=function(_0x4336fa,_0xba31d5){return _0x4336fa['define'](_0x7044('0x9'),attributes,{'tableName':_0x7044('0xa'),'paranoid':![],'indexes':[{'name':_0x7044('0xb'),'fields':[_0x7044('0xc'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6899=['bluebird','request-promise','path','rimraf','./memberReport.attributes','define','MemberReport','membername_interface','interface','lodash','util','../../config/logger','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6899,0x15b));var _0x9689=function(_0x371287,_0x2c0f0d){_0x371287=_0x371287-0x0;var _0x5033a4=_0x6899[_0x371287];return _0x5033a4;};'use strict';var _=require(_0x9689('0x0'));var util=require(_0x9689('0x1'));var logger=require(_0x9689('0x2'))('api');var moment=require(_0x9689('0x3'));var BPromise=require(_0x9689('0x4'));var rp=require(_0x9689('0x5'));var fs=require('fs');var path=require(_0x9689('0x6'));var rimraf=require(_0x9689('0x7'));var config=require('../../config/environment');var attributes=require(_0x9689('0x8'));module['exports']=function(_0x34dd0a,_0x5b1d09){return _0x34dd0a[_0x9689('0x9')](_0x9689('0xa'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x9689('0xb'),'fields':['membername',_0x9689('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4e78523..38031dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c6=['http','request','info','MemberReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetMemberReport','MemberReport','raw','options','attributes','limit','map','include','model','debug','CreateMemberReport','create','body','then','UpdateMemberReport','update','where','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x91c6,0xf9));var _0x691c=function(_0x4b25fa,_0x4f884b){_0x4b25fa=_0x4b25fa-0x0;var _0x3d600b=_0x91c6[_0x4b25fa];return _0x3d600b;};'use strict';var _=require(_0x691c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x691c('0x1'));var rs=require(_0x691c('0x2'));var fs=require('fs');var Redis=require(_0x691c('0x3'));var db=require(_0x691c('0x4'))['db'];var utils=require(_0x691c('0x5'));var logger=require('../../config/logger')(_0x691c('0x6'));var config=require(_0x691c('0x7'));var jayson=require(_0x691c('0x8'));var client=jayson[_0x691c('0x9')][_0x691c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29876a,_0x5ccbe0,_0x93b7b0){return new BPromise(function(_0x40629a,_0xda904f){return client[_0x691c('0xb')](_0x29876a,_0x93b7b0)['then'](function(_0x2cfa1f){logger[_0x691c('0xc')](_0x691c('0xd'),_0x5ccbe0,'request\x20sent');logger['debug']('MemberReport,\x20%s,\x20%s,\x20%s',_0x5ccbe0,_0x691c('0xe'),JSON[_0x691c('0xf')](_0x2cfa1f));if(_0x2cfa1f[_0x691c('0x10')]){if(_0x2cfa1f[_0x691c('0x10')]['code']===0x1f4){logger['error'](_0x691c('0xd'),_0x5ccbe0,_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);return _0xda904f(_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);}logger[_0x691c('0x10')](_0x691c('0xd'),_0x5ccbe0,_0x2cfa1f[_0x691c('0x10')]['message']);return _0x40629a(_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);}else{logger[_0x691c('0xc')](_0x691c('0xd'),_0x5ccbe0,_0x691c('0xe'));_0x40629a(_0x2cfa1f[_0x691c('0x12')][_0x691c('0x11')]);}})[_0x691c('0x13')](function(_0x482351){logger[_0x691c('0x10')](_0x691c('0xd'),_0x5ccbe0,_0x482351);_0xda904f(_0x482351);});});}exports[_0x691c('0x14')]=function(_0x299653){var _0x436951=this;return new Promise(function(_0x522ad0,_0x11e7b5){return db[_0x691c('0x15')]['findAll']({'raw':_0x299653['options']?_0x299653['options'][_0x691c('0x16')]===undefined?!![]:![]:!![],'where':_0x299653['options']?_0x299653[_0x691c('0x17')]['where']||null:null,'attributes':_0x299653['options']?_0x299653[_0x691c('0x17')][_0x691c('0x18')]||null:null,'limit':_0x299653[_0x691c('0x17')]?_0x299653[_0x691c('0x17')][_0x691c('0x19')]||null:null,'include':_0x299653['options']?_0x299653[_0x691c('0x17')]['include']?_[_0x691c('0x1a')](_0x299653['options'][_0x691c('0x1b')],function(_0x52abf){return{'model':db[_0x52abf[_0x691c('0x1c')]],'as':_0x52abf['as'],'attributes':_0x52abf[_0x691c('0x18')],'include':_0x52abf[_0x691c('0x1b')]?_['map'](_0x52abf[_0x691c('0x1b')],function(_0x5a1635){return{'model':db[_0x5a1635[_0x691c('0x1c')]],'as':_0x5a1635['as'],'attributes':_0x5a1635[_0x691c('0x18')],'include':_0x5a1635[_0x691c('0x1b')]?_[_0x691c('0x1a')](_0x5a1635[_0x691c('0x1b')],function(_0x4281ad){return{'model':db[_0x4281ad[_0x691c('0x1c')]],'as':_0x4281ad['as'],'attributes':_0x4281ad[_0x691c('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x7a07ec){logger[_0x691c('0xc')](_0x691c('0x14'),_0x299653);logger[_0x691c('0x1d')]('GetMemberReport',_0x299653,JSON['stringify'](_0x7a07ec));_0x522ad0(_0x7a07ec);})[_0x691c('0x13')](function(_0xcceaa){logger['error'](_0x691c('0x14'),_0xcceaa['message'],_0x299653);_0x11e7b5(_0x436951[_0x691c('0x10')](0x1f4,_0xcceaa['message']));});});};exports[_0x691c('0x1e')]=function(_0x2cb3ab){var _0x21c531=this;return new Promise(function(_0x5cebbd,_0x547db9){return db[_0x691c('0x15')][_0x691c('0x1f')](_0x2cb3ab[_0x691c('0x20')],{'raw':_0x2cb3ab[_0x691c('0x17')]?_0x2cb3ab[_0x691c('0x17')][_0x691c('0x16')]===undefined?!![]:![]:!![]})[_0x691c('0x21')](function(_0x5b1259){logger[_0x691c('0xc')](_0x691c('0x1e'),_0x2cb3ab);logger['debug'](_0x691c('0x1e'),_0x2cb3ab,JSON[_0x691c('0xf')](_0x5b1259));_0x5cebbd(_0x5b1259);})[_0x691c('0x13')](function(_0x4367cc){logger['error'](_0x691c('0x1e'),_0x4367cc[_0x691c('0x11')],_0x2cb3ab);_0x547db9(_0x21c531[_0x691c('0x10')](0x1f4,_0x4367cc['message']));});});};exports[_0x691c('0x22')]=function(_0x37a7da){var _0x8cbbf7=this;return new Promise(function(_0x2ca9d4,_0x278f65){return db['MemberReport'][_0x691c('0x23')](_0x37a7da[_0x691c('0x20')],{'raw':_0x37a7da[_0x691c('0x17')]?_0x37a7da[_0x691c('0x17')][_0x691c('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37a7da[_0x691c('0x17')]?_0x37a7da['options'][_0x691c('0x24')]||null:null,'attributes':_0x37a7da['options']?_0x37a7da['options'][_0x691c('0x18')]||null:null,'limit':_0x37a7da[_0x691c('0x17')]?_0x37a7da[_0x691c('0x17')][_0x691c('0x19')]||null:null})['then'](function(_0x41dfb5){logger[_0x691c('0xc')](_0x691c('0x22'),_0x37a7da);logger[_0x691c('0x1d')](_0x691c('0x22'),_0x37a7da,JSON[_0x691c('0xf')](_0x41dfb5));_0x2ca9d4(_0x41dfb5);})[_0x691c('0x13')](function(_0x2c2cc4){logger[_0x691c('0x10')](_0x691c('0x22'),_0x2c2cc4[_0x691c('0x11')],_0x37a7da);_0x278f65(_0x8cbbf7['error'](0x1f4,_0x2c2cc4[_0x691c('0x11')]));});});};
\ No newline at end of file
+var _0xe451=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetMemberReport','options','where','attributes','limit','include','map','model','CreateMemberReport','MemberReport','body','update','raw','UpdateMemberReport','moment','../../mysqldb'];(function(_0x18d631,_0x4376d2){var _0x50d708=function(_0x3b6ab5){while(--_0x3b6ab5){_0x18d631['push'](_0x18d631['shift']());}};_0x50d708(++_0x4376d2);}(_0xe451,0xec));var _0x1e45=function(_0x177d46,_0x3bc970){_0x177d46=_0x177d46-0x0;var _0x3f82ee=_0xe451[_0x177d46];return _0x3f82ee;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1e45('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1e45('0x1'))['db'];var utils=require(_0x1e45('0x2'));var logger=require(_0x1e45('0x3'))(_0x1e45('0x4'));var config=require('../../config/environment');var jayson=require(_0x1e45('0x5'));var client=jayson[_0x1e45('0x6')][_0x1e45('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x563405,_0xc62c6f,_0x31c118){return new BPromise(function(_0x4dd77f,_0x544710){return client[_0x1e45('0x8')](_0x563405,_0x31c118)[_0x1e45('0x9')](function(_0xde48d9){logger['info'](_0x1e45('0xa'),_0xc62c6f,_0x1e45('0xb'));logger[_0x1e45('0xc')]('MemberReport,\x20%s,\x20%s,\x20%s',_0xc62c6f,'request\x20sent',JSON[_0x1e45('0xd')](_0xde48d9));if(_0xde48d9[_0x1e45('0xe')]){if(_0xde48d9[_0x1e45('0xe')][_0x1e45('0xf')]===0x1f4){logger['error'](_0x1e45('0xa'),_0xc62c6f,_0xde48d9[_0x1e45('0xe')][_0x1e45('0x10')]);return _0x544710(_0xde48d9['error'][_0x1e45('0x10')]);}logger[_0x1e45('0xe')](_0x1e45('0xa'),_0xc62c6f,_0xde48d9[_0x1e45('0xe')]['message']);return _0x4dd77f(_0xde48d9[_0x1e45('0xe')]['message']);}else{logger[_0x1e45('0x11')](_0x1e45('0xa'),_0xc62c6f,'request\x20sent');_0x4dd77f(_0xde48d9[_0x1e45('0x12')][_0x1e45('0x10')]);}})[_0x1e45('0x13')](function(_0x1e5b73){logger[_0x1e45('0xe')](_0x1e45('0xa'),_0xc62c6f,_0x1e5b73);_0x544710(_0x1e5b73);});});}exports[_0x1e45('0x14')]=function(_0x2a6f47){var _0x2aa114=this;return new Promise(function(_0x5d24a7,_0x359dc6){return db['MemberReport']['findAll']({'raw':_0x2a6f47[_0x1e45('0x15')]?_0x2a6f47['options']['raw']===undefined?!![]:![]:!![],'where':_0x2a6f47['options']?_0x2a6f47['options'][_0x1e45('0x16')]||null:null,'attributes':_0x2a6f47[_0x1e45('0x15')]?_0x2a6f47['options'][_0x1e45('0x17')]||null:null,'limit':_0x2a6f47['options']?_0x2a6f47['options'][_0x1e45('0x18')]||null:null,'include':_0x2a6f47['options']?_0x2a6f47['options'][_0x1e45('0x19')]?_[_0x1e45('0x1a')](_0x2a6f47['options'][_0x1e45('0x19')],function(_0x2fb478){return{'model':db[_0x2fb478[_0x1e45('0x1b')]],'as':_0x2fb478['as'],'attributes':_0x2fb478[_0x1e45('0x17')],'include':_0x2fb478[_0x1e45('0x19')]?_[_0x1e45('0x1a')](_0x2fb478[_0x1e45('0x19')],function(_0x55e968){return{'model':db[_0x55e968[_0x1e45('0x1b')]],'as':_0x55e968['as'],'attributes':_0x55e968[_0x1e45('0x17')],'include':_0x55e968[_0x1e45('0x19')]?_[_0x1e45('0x1a')](_0x55e968[_0x1e45('0x19')],function(_0xfd7633){return{'model':db[_0xfd7633[_0x1e45('0x1b')]],'as':_0xfd7633['as'],'attributes':_0xfd7633['attributes']};}):[]};}):[]};}):[]:[]})[_0x1e45('0x9')](function(_0x3a9286){logger[_0x1e45('0x11')](_0x1e45('0x14'),_0x2a6f47);logger['debug'](_0x1e45('0x14'),_0x2a6f47,JSON[_0x1e45('0xd')](_0x3a9286));_0x5d24a7(_0x3a9286);})[_0x1e45('0x13')](function(_0x5229e7){logger[_0x1e45('0xe')]('GetMemberReport',_0x5229e7[_0x1e45('0x10')],_0x2a6f47);_0x359dc6(_0x2aa114['error'](0x1f4,_0x5229e7['message']));});});};exports[_0x1e45('0x1c')]=function(_0x3f33bf){var _0x363615=this;return new Promise(function(_0x3e6836,_0x51facf){return db[_0x1e45('0x1d')]['create'](_0x3f33bf[_0x1e45('0x1e')],{'raw':_0x3f33bf[_0x1e45('0x15')]?_0x3f33bf[_0x1e45('0x15')]['raw']===undefined?!![]:![]:!![]})[_0x1e45('0x9')](function(_0x435fc2){logger[_0x1e45('0x11')]('CreateMemberReport',_0x3f33bf);logger[_0x1e45('0xc')](_0x1e45('0x1c'),_0x3f33bf,JSON[_0x1e45('0xd')](_0x435fc2));_0x3e6836(_0x435fc2);})[_0x1e45('0x13')](function(_0x58e351){logger[_0x1e45('0xe')](_0x1e45('0x1c'),_0x58e351[_0x1e45('0x10')],_0x3f33bf);_0x51facf(_0x363615[_0x1e45('0xe')](0x1f4,_0x58e351[_0x1e45('0x10')]));});});};exports['UpdateMemberReport']=function(_0x56deb6){var _0x542443=this;return new Promise(function(_0x552e4a,_0x215dc4){return db['MemberReport'][_0x1e45('0x1f')](_0x56deb6[_0x1e45('0x1e')],{'raw':_0x56deb6['options']?_0x56deb6['options'][_0x1e45('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56deb6[_0x1e45('0x15')]?_0x56deb6[_0x1e45('0x15')][_0x1e45('0x16')]||null:null,'attributes':_0x56deb6['options']?_0x56deb6[_0x1e45('0x15')][_0x1e45('0x17')]||null:null,'limit':_0x56deb6[_0x1e45('0x15')]?_0x56deb6[_0x1e45('0x15')]['limit']||null:null})[_0x1e45('0x9')](function(_0x1b1f47){logger[_0x1e45('0x11')]('UpdateMemberReport',_0x56deb6);logger['debug'](_0x1e45('0x21'),_0x56deb6,JSON['stringify'](_0x1b1f47));_0x552e4a(_0x1b1f47);})['catch'](function(_0x1bd93a){logger['error']('UpdateMemberReport',_0x1bd93a[_0x1e45('0x10')],_0x56deb6);_0x215dc4(_0x542443[_0x1e45('0xe')](0x1f4,_0x1bd93a[_0x1e45('0x10')]));});});};
\ No newline at end of file
index 27de4cb..36a0583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd42b=['./migration.controller','get','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x33c82f,_0x418e8d){var _0x4cf82e=function(_0x39a8df){while(--_0x39a8df){_0x33c82f['push'](_0x33c82f['shift']());}};_0x4cf82e(++_0x418e8d);}(_0xd42b,0xdf));var _0xbd42=function(_0x179e11,_0xf65436){_0x179e11=_0x179e11-0x0;var _0x549f04=_0xd42b[_0x179e11];return _0x549f04;};'use strict';var multer=require('multer');var util=require(_0xbd42('0x0'));var path=require(_0xbd42('0x1'));var timeout=require(_0xbd42('0x2'));var express=require('express');var router=express[_0xbd42('0x3')]();var fs_extra=require(_0xbd42('0x4'));var auth=require(_0xbd42('0x5'));var interaction=require(_0xbd42('0x6'));var config=require(_0xbd42('0x7'));var controller=require(_0xbd42('0x8'));router[_0xbd42('0x9')]('/',controller['index']);module[_0xbd42('0xa')]=router;
\ No newline at end of file
+var _0x6f47=['exports','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x6f47,0xc7));var _0x76f4=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x6f47[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0x76f4('0x0'));var path=require(_0x76f4('0x1'));var timeout=require('connect-timeout');var express=require(_0x76f4('0x2'));var router=express['Router']();var fs_extra=require(_0x76f4('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x76f4('0x4'));var config=require(_0x76f4('0x5'));var controller=require(_0x76f4('0x6'));router[_0x76f4('0x7')]('/',controller['index']);module[_0x76f4('0x8')]=router;
\ No newline at end of file
index 1e2610f..34411b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa52=['exports','STRING','version','sequelize'];(function(_0x422513,_0x56ec5f){var _0x3fb073=function(_0x3a1e92){while(--_0x3a1e92){_0x422513['push'](_0x422513['shift']());}};_0x3fb073(++_0x56ec5f);}(_0xfa52,0xcb));var _0x2fa5=function(_0x1ed8e2,_0x66d1a0){_0x1ed8e2=_0x1ed8e2-0x0;var _0x495388=_0xfa52[_0x1ed8e2];return _0x495388;};'use strict';var Sequelize=require(_0x2fa5('0x0'));module[_0x2fa5('0x1')]={'version':{'type':Sequelize[_0x2fa5('0x2')],'unique':_0x2fa5('0x3')}};
\ No newline at end of file
+var _0x1d07=['STRING','version','sequelize','exports'];(function(_0x52f1e6,_0xf70489){var _0x21f104=function(_0xb89f9e){while(--_0xb89f9e){_0x52f1e6['push'](_0x52f1e6['shift']());}};_0x21f104(++_0xf70489);}(_0x1d07,0xc6));var _0x71d0=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x1d07[_0x88cd7b];return _0x56fcc8;};'use strict';var Sequelize=require(_0x71d0('0x0'));module[_0x71d0('0x1')]={'version':{'type':Sequelize[_0x71d0('0x2')],'unique':_0x71d0('0x3')}};
\ No newline at end of file
index fc08b69..1fee704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x804b=['index','map','Migration','rawAttributes','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','type','VIRTUAL','options','findAll','rows','catch','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','end','error','stack','name','send'];(function(_0x34ea88,_0x4d1ca8){var _0x6b8f63=function(_0x2cf568){while(--_0x2cf568){_0x34ea88['push'](_0x34ea88['shift']());}};_0x6b8f63(++_0x4d1ca8);}(_0x804b,0x16f));var _0xb804=function(_0x52d28e,_0x3eb733){_0x52d28e=_0x52d28e-0x0;var _0x296306=_0x804b[_0x52d28e];return _0x296306;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb804('0x0'));var zipdir=require(_0xb804('0x1'));var jsonpatch=require(_0xb804('0x2'));var rp=require(_0xb804('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb804('0x4'));var util=require(_0xb804('0x5'));var path=require(_0xb804('0x6'));var sox=require('sox');var csv=require(_0xb804('0x7'));var ejs=require(_0xb804('0x8'));var fs=require('fs');var fs_extra=require(_0xb804('0x9'));var _=require('lodash');var squel=require(_0xb804('0xa'));var crypto=require(_0xb804('0xb'));var jsforce=require(_0xb804('0xc'));var deskjs=require(_0xb804('0xd'));var toCsv=require(_0xb804('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb804('0xe'));var authService=require(_0xb804('0xf'));var qs=require(_0xb804('0x10'));var as=require(_0xb804('0x11'));var hardwareService=require(_0xb804('0x12'));var logger=require('../../config/logger')(_0xb804('0x13'));var utils=require('../../config/utils');var config=require(_0xb804('0x14'));var licenseUtil=require(_0xb804('0x15'));var db=require(_0xb804('0x16'))['db'];function respondWithStatusCode(_0x28722a,_0x4c237e){_0x4c237e=_0x4c237e||0xcc;return function(_0x4ed808){if(_0x4ed808){return _0x28722a[_0xb804('0x17')](_0x4c237e);}return _0x28722a['status'](_0x4c237e)['end']();};}function respondWithResult(_0x288173,_0x33e8a0){_0x33e8a0=_0x33e8a0||0xc8;return function(_0x37821e){if(_0x37821e){return _0x288173[_0xb804('0x18')](_0x33e8a0)[_0xb804('0x19')](_0x37821e);}};}function respondWithFilteredResult(_0x2615f5,_0x39fae1){return function(_0x501990){if(_0x501990){var _0x3f2044=typeof _0x39fae1[_0xb804('0x1a')]===_0xb804('0x1b')&&typeof _0x39fae1['limit']==='undefined';var _0x226004=_0x501990[_0xb804('0x1c')];var _0x5e3cb5=_0x3f2044?0x0:_0x39fae1[_0xb804('0x1a')];var _0x11ddff=_0x3f2044?_0x501990['count']:_0x39fae1[_0xb804('0x1a')]+_0x39fae1[_0xb804('0x1d')];var _0x597161;if(_0x11ddff>=_0x226004){_0x11ddff=_0x226004;_0x597161=0xc8;}else{_0x597161=0xce;}_0x2615f5[_0xb804('0x18')](_0x597161);return _0x2615f5[_0xb804('0x1e')]('Content-Range',_0x5e3cb5+'-'+_0x11ddff+'/'+_0x226004)[_0xb804('0x19')](_0x501990);}return null;};}function patchUpdates(_0x1ab653){return function(_0x16bbbe){try{jsonpatch[_0xb804('0x1f')](_0x16bbbe,_0x1ab653,!![]);}catch(_0x35ae35){return BPromise['reject'](_0x35ae35);}return _0x16bbbe[_0xb804('0x20')]();};}function saveUpdates(_0x48225b,_0x5bc0ab){return function(_0x345dc5){if(_0x345dc5){return _0x345dc5[_0xb804('0x21')](_0x48225b)[_0xb804('0x22')](function(_0x25544b){return _0x25544b;});}return null;};}function removeEntity(_0x5adfc0,_0x515541){return function(_0x2e47de){if(_0x2e47de){return _0x2e47de[_0xb804('0x23')]()[_0xb804('0x22')](function(){_0x5adfc0[_0xb804('0x18')](0xcc)[_0xb804('0x24')]();});}};}function handleEntityNotFound(_0x227f71,_0x4c9cad){return function(_0x53f05b){if(!_0x53f05b){_0x227f71[_0xb804('0x17')](0x194);}return _0x53f05b;};}function handleError(_0x175441,_0x575cb1){_0x575cb1=_0x575cb1||0x1f4;return function(_0x2c58c2){logger[_0xb804('0x25')](_0x2c58c2[_0xb804('0x26')]);if(_0x2c58c2[_0xb804('0x27')]){delete _0x2c58c2[_0xb804('0x27')];}_0x175441[_0xb804('0x18')](_0x575cb1)[_0xb804('0x28')](_0x2c58c2);};}exports[_0xb804('0x29')]=function(_0x3348f8,_0x58af54){var _0x51a7aa={},_0x270d85={},_0x3a3664={'count':0x0,'rows':[]};var _0x25496d=_[_0xb804('0x2a')](db[_0xb804('0x2b')][_0xb804('0x2c')],function(_0x561f7d){return{'name':_0x561f7d['fieldName'],'type':_0x561f7d['type'][_0xb804('0x2d')]};});_0x270d85[_0xb804('0x2e')]=_[_0xb804('0x2a')](_0x25496d,_0xb804('0x27'));_0x270d85[_0xb804('0x2f')]=_[_0xb804('0x30')](_0x3348f8[_0xb804('0x2f')]);_0x270d85['filters']=_[_0xb804('0x31')](_0x270d85[_0xb804('0x2e')],_0x270d85[_0xb804('0x2f')]);_0x51a7aa['attributes']=_[_0xb804('0x31')](_0x270d85[_0xb804('0x2e')],qs[_0xb804('0x32')](_0x3348f8[_0xb804('0x2f')][_0xb804('0x32')]));_0x51a7aa[_0xb804('0x33')]=_0x51a7aa[_0xb804('0x33')][_0xb804('0x34')]?_0x51a7aa[_0xb804('0x33')]:_0x270d85['model'];if(!_0x3348f8[_0xb804('0x2f')][_0xb804('0x35')](_0xb804('0x36'))){_0x51a7aa[_0xb804('0x1d')]=qs[_0xb804('0x1d')](_0x3348f8['query'][_0xb804('0x1d')]);_0x51a7aa[_0xb804('0x1a')]=qs[_0xb804('0x1a')](_0x3348f8['query'][_0xb804('0x1a')]);}_0x51a7aa[_0xb804('0x37')]=qs['sort'](_0x3348f8[_0xb804('0x2f')][_0xb804('0x38')]);_0x51a7aa['where']=qs['filters'](_[_0xb804('0x39')](_0x3348f8['query'],_0x270d85[_0xb804('0x3a')]),_0x25496d);if(_0x3348f8[_0xb804('0x2f')][_0xb804('0x3b')]){_0x51a7aa['where']=_[_0xb804('0x3c')](_0x51a7aa[_0xb804('0x3d')],{'$or':_[_0xb804('0x2a')](_0x25496d,function(_0x3c3a04){if(_0x3c3a04[_0xb804('0x3e')]!==_0xb804('0x3f')){var _0x5a6d14={};_0x5a6d14[_0x3c3a04[_0xb804('0x27')]]={'$like':'%'+_0x3348f8['query'][_0xb804('0x3b')]+'%'};return _0x5a6d14;}})});}_0x51a7aa=_[_0xb804('0x3c')]({},_0x51a7aa,_0x3348f8[_0xb804('0x40')]);var _0x33b4f0={'where':_0x51a7aa[_0xb804('0x3d')]};return db[_0xb804('0x2b')][_0xb804('0x1c')](_0x33b4f0)[_0xb804('0x22')](function(_0x43e787){_0x3a3664['count']=_0x43e787;if(_0x3348f8[_0xb804('0x2f')]['includeAll']){_0x51a7aa['include']=[{'all':!![]}];}return db[_0xb804('0x2b')][_0xb804('0x41')](_0x51a7aa);})[_0xb804('0x22')](function(_0x3a718d){_0x3a3664[_0xb804('0x42')]=_0x3a718d;return _0x3a3664;})[_0xb804('0x22')](respondWithFilteredResult(_0x58af54,_0x51a7aa))[_0xb804('0x43')](handleError(_0x58af54,null));};
\ No newline at end of file
+var _0x5cf7=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','map','Migration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','querystring','papaparse','ioredis'];(function(_0x46636e,_0xc37f59){var _0x396fe5=function(_0x54c425){while(--_0x54c425){_0x46636e['push'](_0x46636e['shift']());}};_0x396fe5(++_0xc37f59);}(_0x5cf7,0xc0));var _0x75cf=function(_0x236900,_0x31d36f){_0x236900=_0x236900-0x0;var _0x1bb8da=_0x5cf7[_0x236900];return _0x1bb8da;};'use strict';var emlformat=require(_0x75cf('0x0'));var rimraf=require(_0x75cf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75cf('0x2'));var moment=require('moment');var BPromise=require(_0x75cf('0x3'));var Mustache=require(_0x75cf('0x4'));var util=require(_0x75cf('0x5'));var path=require(_0x75cf('0x6'));var sox=require(_0x75cf('0x7'));var csv=require(_0x75cf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75cf('0x9'));var _=require(_0x75cf('0xa'));var squel=require(_0x75cf('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x75cf('0x8'));var querystring=require(_0x75cf('0xc'));var Papa=require(_0x75cf('0xd'));var Redis=require(_0x75cf('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x75cf('0xf'));var as=require(_0x75cf('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x75cf('0x11'))('api');var utils=require(_0x75cf('0x12'));var config=require(_0x75cf('0x13'));var licenseUtil=require(_0x75cf('0x14'));var db=require(_0x75cf('0x15'))['db'];function respondWithStatusCode(_0x3256ef,_0x555a98){_0x555a98=_0x555a98||0xcc;return function(_0x59e101){if(_0x59e101){return _0x3256ef[_0x75cf('0x16')](_0x555a98);}return _0x3256ef[_0x75cf('0x17')](_0x555a98)[_0x75cf('0x18')]();};}function respondWithResult(_0x36ed52,_0x3499a5){_0x3499a5=_0x3499a5||0xc8;return function(_0x16fe77){if(_0x16fe77){return _0x36ed52[_0x75cf('0x17')](_0x3499a5)[_0x75cf('0x19')](_0x16fe77);}};}function respondWithFilteredResult(_0x1944b0,_0x21ebc9){return function(_0x2fb1ca){if(_0x2fb1ca){var _0x46038e=typeof _0x21ebc9[_0x75cf('0x1a')]===_0x75cf('0x1b')&&typeof _0x21ebc9['limit']==='undefined';var _0x246a8e=_0x2fb1ca[_0x75cf('0x1c')];var _0x3a11da=_0x46038e?0x0:_0x21ebc9[_0x75cf('0x1a')];var _0x24e52b=_0x46038e?_0x2fb1ca[_0x75cf('0x1c')]:_0x21ebc9[_0x75cf('0x1a')]+_0x21ebc9[_0x75cf('0x1d')];var _0xc85e80;if(_0x24e52b>=_0x246a8e){_0x24e52b=_0x246a8e;_0xc85e80=0xc8;}else{_0xc85e80=0xce;}_0x1944b0[_0x75cf('0x17')](_0xc85e80);return _0x1944b0[_0x75cf('0x1e')](_0x75cf('0x1f'),_0x3a11da+'-'+_0x24e52b+'/'+_0x246a8e)[_0x75cf('0x19')](_0x2fb1ca);}return null;};}function patchUpdates(_0x53bae0){return function(_0x8954da){try{jsonpatch[_0x75cf('0x20')](_0x8954da,_0x53bae0,!![]);}catch(_0x4cfd5f){return BPromise['reject'](_0x4cfd5f);}return _0x8954da[_0x75cf('0x21')]();};}function saveUpdates(_0x405c9a,_0x4f90c9){return function(_0x3e8239){if(_0x3e8239){return _0x3e8239[_0x75cf('0x22')](_0x405c9a)[_0x75cf('0x23')](function(_0x1b393b){return _0x1b393b;});}return null;};}function removeEntity(_0x342e1b,_0x8413fc){return function(_0x1c6270){if(_0x1c6270){return _0x1c6270[_0x75cf('0x24')]()[_0x75cf('0x23')](function(){_0x342e1b[_0x75cf('0x17')](0xcc)[_0x75cf('0x18')]();});}};}function handleEntityNotFound(_0x1689bd,_0x500a91){return function(_0x15f65a){if(!_0x15f65a){_0x1689bd['sendStatus'](0x194);}return _0x15f65a;};}function handleError(_0x4aabb2,_0x54f9b4){_0x54f9b4=_0x54f9b4||0x1f4;return function(_0x4a9bbb){logger[_0x75cf('0x25')](_0x4a9bbb[_0x75cf('0x26')]);if(_0x4a9bbb['name']){delete _0x4a9bbb[_0x75cf('0x27')];}_0x4aabb2[_0x75cf('0x17')](_0x54f9b4)[_0x75cf('0x28')](_0x4a9bbb);};}exports['index']=function(_0x565398,_0x5c83a8){var _0x2dd360={},_0x16d2d8={},_0x3a16b3={'count':0x0,'rows':[]};var _0x365243=_[_0x75cf('0x29')](db[_0x75cf('0x2a')][_0x75cf('0x2b')],function(_0x161325){return{'name':_0x161325[_0x75cf('0x2c')],'type':_0x161325[_0x75cf('0x2d')][_0x75cf('0x2e')]};});_0x16d2d8['model']=_['map'](_0x365243,'name');_0x16d2d8[_0x75cf('0x2f')]=_[_0x75cf('0x30')](_0x565398[_0x75cf('0x2f')]);_0x16d2d8[_0x75cf('0x31')]=_[_0x75cf('0x32')](_0x16d2d8['model'],_0x16d2d8[_0x75cf('0x2f')]);_0x2dd360[_0x75cf('0x33')]=_[_0x75cf('0x32')](_0x16d2d8['model'],qs['fields'](_0x565398[_0x75cf('0x2f')][_0x75cf('0x34')]));_0x2dd360[_0x75cf('0x33')]=_0x2dd360[_0x75cf('0x33')][_0x75cf('0x35')]?_0x2dd360[_0x75cf('0x33')]:_0x16d2d8[_0x75cf('0x36')];if(!_0x565398[_0x75cf('0x2f')][_0x75cf('0x37')](_0x75cf('0x38'))){_0x2dd360[_0x75cf('0x1d')]=qs[_0x75cf('0x1d')](_0x565398[_0x75cf('0x2f')][_0x75cf('0x1d')]);_0x2dd360['offset']=qs[_0x75cf('0x1a')](_0x565398[_0x75cf('0x2f')][_0x75cf('0x1a')]);}_0x2dd360[_0x75cf('0x39')]=qs['sort'](_0x565398[_0x75cf('0x2f')][_0x75cf('0x3a')]);_0x2dd360[_0x75cf('0x3b')]=qs[_0x75cf('0x31')](_[_0x75cf('0x3c')](_0x565398[_0x75cf('0x2f')],_0x16d2d8[_0x75cf('0x31')]),_0x365243);if(_0x565398[_0x75cf('0x2f')][_0x75cf('0x3d')]){_0x2dd360['where']=_[_0x75cf('0x3e')](_0x2dd360[_0x75cf('0x3b')],{'$or':_['map'](_0x365243,function(_0x2040bd){if(_0x2040bd[_0x75cf('0x2d')]!==_0x75cf('0x3f')){var _0x3929c6={};_0x3929c6[_0x2040bd['name']]={'$like':'%'+_0x565398[_0x75cf('0x2f')][_0x75cf('0x3d')]+'%'};return _0x3929c6;}})});}_0x2dd360=_[_0x75cf('0x3e')]({},_0x2dd360,_0x565398[_0x75cf('0x40')]);var _0x5f562b={'where':_0x2dd360['where']};return db['Migration'][_0x75cf('0x1c')](_0x5f562b)[_0x75cf('0x23')](function(_0x59115e){_0x3a16b3['count']=_0x59115e;if(_0x565398[_0x75cf('0x2f')][_0x75cf('0x41')]){_0x2dd360[_0x75cf('0x42')]=[{'all':!![]}];}return db[_0x75cf('0x2a')]['findAll'](_0x2dd360);})[_0x75cf('0x23')](function(_0x3cbcc3){_0x3a16b3[_0x75cf('0x43')]=_0x3cbcc3;return _0x3a16b3;})[_0x75cf('0x23')](respondWithFilteredResult(_0x5c83a8,_0x2dd360))[_0x75cf('0x44')](handleError(_0x5c83a8,null));};
\ No newline at end of file
index 1672b7a..4dd8dea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49ec=['exports','define','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x129267,_0xd537c3){var _0x90e635=function(_0x3b9f18){while(--_0x3b9f18){_0x129267['push'](_0x129267['shift']());}};_0x90e635(++_0xd537c3);}(_0x49ec,0x1c5));var _0xc49e=function(_0x5242fa,_0x3efff5){_0x5242fa=_0x5242fa-0x0;var _0x1a1376=_0x49ec[_0x5242fa];return _0x1a1376;};'use strict';var _=require(_0xc49e('0x0'));var util=require(_0xc49e('0x1'));var logger=require('../../config/logger')(_0xc49e('0x2'));var moment=require(_0xc49e('0x3'));var BPromise=require(_0xc49e('0x4'));var rp=require(_0xc49e('0x5'));var fs=require('fs');var path=require(_0xc49e('0x6'));var rimraf=require(_0xc49e('0x7'));var config=require(_0xc49e('0x8'));var attributes=require('./migration.attributes');module[_0xc49e('0x9')]=function(_0x52dae7,_0x1276e1){return _0x52dae7[_0xc49e('0xa')]('Migration',attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb46=['lodash','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./migration.attributes','define','Migration','migrations'];(function(_0x21783,_0x36e23a){var _0x5becfa=function(_0x1a33c2){while(--_0x1a33c2){_0x21783['push'](_0x21783['shift']());}};_0x5becfa(++_0x36e23a);}(_0xbb46,0xfa));var _0x6bb4=function(_0x3496a1,_0xe1cfe9){_0x3496a1=_0x3496a1-0x0;var _0x313bea=_0xbb46[_0x3496a1];return _0x313bea;};'use strict';var _=require(_0x6bb4('0x0'));var util=require('util');var logger=require(_0x6bb4('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6bb4('0x2'));var rp=require(_0x6bb4('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6bb4('0x4'));var config=require(_0x6bb4('0x5'));var attributes=require(_0x6bb4('0x6'));module['exports']=function(_0x51a4ac,_0x26f276){return _0x51a4ac[_0x6bb4('0x7')](_0x6bb4('0x8'),attributes,{'tableName':_0x6bb4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7a8eaa3..7565d6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x255f=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','moment'];(function(_0x471ac2,_0x2b2fc5){var _0x5d06d5=function(_0x43da12){while(--_0x43da12){_0x471ac2['push'](_0x471ac2['shift']());}};_0x5d06d5(++_0x2b2fc5);}(_0x255f,0x185));var _0xf255=function(_0x448795,_0x5d9f1b){_0x448795=_0x448795-0x0;var _0x25ca6c=_0x255f[_0x448795];return _0x25ca6c;};'use strict';var _=require(_0xf255('0x0'));var util=require('util');var moment=require(_0xf255('0x1'));var BPromise=require(_0xf255('0x2'));var rs=require(_0xf255('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf255('0x4'))['db'];var utils=require(_0xf255('0x5'));var logger=require(_0xf255('0x6'))(_0xf255('0x7'));var config=require(_0xf255('0x8'));var jayson=require(_0xf255('0x9'));var client=jayson[_0xf255('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1236fb,_0x4b98fa,_0x481d8c){return new BPromise(function(_0x4a533f,_0x3cc3fc){return client['request'](_0x1236fb,_0x481d8c)[_0xf255('0xb')](function(_0x2f6020){logger['info'](_0xf255('0xc'),_0x4b98fa,'request\x20sent');logger[_0xf255('0xd')](_0xf255('0xe'),_0x4b98fa,_0xf255('0xf'),JSON[_0xf255('0x10')](_0x2f6020));if(_0x2f6020[_0xf255('0x11')]){if(_0x2f6020['error'][_0xf255('0x12')]===0x1f4){logger[_0xf255('0x11')](_0xf255('0xc'),_0x4b98fa,_0x2f6020['error'][_0xf255('0x13')]);return _0x3cc3fc(_0x2f6020[_0xf255('0x11')]['message']);}logger[_0xf255('0x11')](_0xf255('0xc'),_0x4b98fa,_0x2f6020[_0xf255('0x11')]['message']);return _0x4a533f(_0x2f6020[_0xf255('0x11')][_0xf255('0x13')]);}else{logger[_0xf255('0x14')](_0xf255('0xc'),_0x4b98fa,_0xf255('0xf'));_0x4a533f(_0x2f6020[_0xf255('0x15')]['message']);}})[_0xf255('0x16')](function(_0x4ed7c0){logger[_0xf255('0x11')]('Migration,\x20%s,\x20%s',_0x4b98fa,_0x4ed7c0);_0x3cc3fc(_0x4ed7c0);});});}
\ No newline at end of file
+var _0x7794=['randomstring','../../mysqldb','../../config/utils','rpc','http','request','then','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','Migration,\x20%s,\x20%s','message','result','catch','util','moment','bluebird'];(function(_0x3c6b7d,_0x5f0d90){var _0x1d3ed2=function(_0x1a8f35){while(--_0x1a8f35){_0x3c6b7d['push'](_0x3c6b7d['shift']());}};_0x1d3ed2(++_0x5f0d90);}(_0x7794,0x7b));var _0x4779=function(_0x12fcbd,_0x884804){_0x12fcbd=_0x12fcbd-0x0;var _0x28ec2a=_0x7794[_0x12fcbd];return _0x28ec2a;};'use strict';var _=require('lodash');var util=require(_0x4779('0x0'));var moment=require(_0x4779('0x1'));var BPromise=require(_0x4779('0x2'));var rs=require(_0x4779('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4779('0x4'))['db'];var utils=require(_0x4779('0x5'));var logger=require('../../config/logger')(_0x4779('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x4779('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x339512,_0x523c93,_0xb3fe18){return new BPromise(function(_0x13bb66,_0x270a5f){return client[_0x4779('0x8')](_0x339512,_0xb3fe18)[_0x4779('0x9')](function(_0x7179e1){logger[_0x4779('0xa')]('Migration,\x20%s,\x20%s',_0x523c93,_0x4779('0xb'));logger[_0x4779('0xc')](_0x4779('0xd'),_0x523c93,_0x4779('0xb'),JSON[_0x4779('0xe')](_0x7179e1));if(_0x7179e1[_0x4779('0xf')]){if(_0x7179e1[_0x4779('0xf')][_0x4779('0x10')]===0x1f4){logger[_0x4779('0xf')](_0x4779('0x11'),_0x523c93,_0x7179e1['error']['message']);return _0x270a5f(_0x7179e1['error'][_0x4779('0x12')]);}logger[_0x4779('0xf')](_0x4779('0x11'),_0x523c93,_0x7179e1[_0x4779('0xf')]['message']);return _0x13bb66(_0x7179e1[_0x4779('0xf')][_0x4779('0x12')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0x523c93,_0x4779('0xb'));_0x13bb66(_0x7179e1[_0x4779('0x13')][_0x4779('0x12')]);}})[_0x4779('0x14')](function(_0x56ec51){logger['error'](_0x4779('0x11'),_0x523c93,_0x56ec51);_0x270a5f(_0x56ec51);});});}
\ No newline at end of file
index 514a703..a5eca83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9906=['exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','update','destroy'];(function(_0x504a3f,_0x3b2b5e){var _0x11a321=function(_0x403842){while(--_0x403842){_0x504a3f['push'](_0x504a3f['shift']());}};_0x11a321(++_0x3b2b5e);}(_0x9906,0x1f1));var _0x6990=function(_0x582ad8,_0x45ba12){_0x582ad8=_0x582ad8-0x0;var _0x820f0d=_0x9906[_0x582ad8];return _0x820f0d;};'use strict';var multer=require(_0x6990('0x0'));var util=require(_0x6990('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6990('0x2'));var router=express[_0x6990('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6990('0x4'));var interaction=require(_0x6990('0x5'));var config=require(_0x6990('0x6'));var controller=require('./network.controller');router[_0x6990('0x7')]('/',auth[_0x6990('0x8')](),controller[_0x6990('0x9')]);router['get'](_0x6990('0xa'),auth[_0x6990('0x8')](),controller['show']);router[_0x6990('0xb')]('/',auth[_0x6990('0x8')](),controller[_0x6990('0xc')]);router['put'](_0x6990('0xa'),auth['isAuthenticated'](),controller[_0x6990('0xd')]);router['delete'](_0x6990('0xa'),auth[_0x6990('0x8')](),controller[_0x6990('0xe')]);module[_0x6990('0xf')]=router;
\ No newline at end of file
+var _0x9a4d=['connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','multer','util','path'];(function(_0x9728b8,_0x5a1a6d){var _0x4b80ab=function(_0xdccc9b){while(--_0xdccc9b){_0x9728b8['push'](_0x9728b8['shift']());}};_0x4b80ab(++_0x5a1a6d);}(_0x9a4d,0xa8));var _0xd9a4=function(_0x12428f,_0xed4e38){_0x12428f=_0x12428f-0x0;var _0x4595ae=_0x9a4d[_0x12428f];return _0x4595ae;};'use strict';var multer=require(_0xd9a4('0x0'));var util=require(_0xd9a4('0x1'));var path=require(_0xd9a4('0x2'));var timeout=require(_0xd9a4('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd9a4('0x4'));var interaction=require(_0xd9a4('0x5'));var config=require(_0xd9a4('0x6'));var controller=require(_0xd9a4('0x7'));router[_0xd9a4('0x8')]('/',auth['isAuthenticated'](),controller[_0xd9a4('0x9')]);router[_0xd9a4('0x8')](_0xd9a4('0xa'),auth[_0xd9a4('0xb')](),controller[_0xd9a4('0xc')]);router[_0xd9a4('0xd')]('/',auth['isAuthenticated'](),controller[_0xd9a4('0xe')]);router[_0xd9a4('0xf')](_0xd9a4('0xa'),auth[_0xd9a4('0xb')](),controller['update']);router[_0xd9a4('0x10')](_0xd9a4('0xa'),auth[_0xd9a4('0xb')](),controller[_0xd9a4('0x11')]);module[_0xd9a4('0x12')]=router;
\ No newline at end of file
index ed95726..5ff6782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7a5=['sequelize','exports','stun','STRING'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xb7a5,0xa0));var _0x5b7a=function(_0x2fae55,_0x56ee32){_0x2fae55=_0x2fae55-0x0;var _0xf3c5c7=_0xb7a5[_0x2fae55];return _0xf3c5c7;};'use strict';var Sequelize=require(_0x5b7a('0x0'));module[_0x5b7a('0x1')]={'type':{'type':Sequelize['ENUM']('localnet','externip',_0x5b7a('0x2'),'turn')},'value':{'type':Sequelize[_0x5b7a('0x3')]},'username':{'type':Sequelize[_0x5b7a('0x3')]},'password':{'type':Sequelize[_0x5b7a('0x3')]}};
\ No newline at end of file
+var _0x2762=['exports','ENUM','localnet','externip','stun','turn','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2762,0x70));var _0x2276=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2762[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x2276('0x0')]={'type':{'type':Sequelize[_0x2276('0x1')](_0x2276('0x2'),_0x2276('0x3'),_0x2276('0x4'),_0x2276('0x5'))},'value':{'type':Sequelize[_0x2276('0x6')]},'username':{'type':Sequelize[_0x2276('0x6')]},'password':{'type':Sequelize[_0x2276('0x6')]}};
\ No newline at end of file
index 6744058..6002522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4dd=['info','Network,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','status','json','undefined','limit','offset','count','set','Content-Range','update','end','stack','name','index','Network','fieldName','type','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','rawAttributes','create','body','toUpperCase','STUN','join','root','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','writeFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','toLowerCase','find','readFileSync','TURN','server/files/templates/turn_multiple.ejs','destroy','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','util','ejs','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','request','then'];(function(_0x40cfc9,_0x2c94fc){var _0x10b807=function(_0x5be37f){while(--_0x5be37f){_0x40cfc9['push'](_0x40cfc9['shift']());}};_0x10b807(++_0x2c94fc);}(_0xf4dd,0x142));var _0xdf4d=function(_0x2de4e6,_0x2dbab4){_0x2de4e6=_0x2de4e6-0x0;var _0x156984=_0xf4dd[_0x2de4e6];return _0x156984;};'use strict';var util=require(_0xdf4d('0x0'));var path=require('path');var ejs=require(_0xdf4d('0x1'));var fs=require('fs');var _=require('lodash');var qs=require(_0xdf4d('0x2'));var logger=require(_0xdf4d('0x3'))(_0xdf4d('0x4'));var config=require('../../config/environment');var db=require(_0xdf4d('0x5'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xdf4d('0x6')][_0xdf4d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x577810,_0x290e03,_0x1fbf82,_0x29a85f){return new Promise(function(_0x42fefa,_0x461ea1){var _0x3564a6=_0x29a85f||client;return _0x3564a6[_0xdf4d('0x8')](_0x577810,_0x1fbf82)[_0xdf4d('0x9')](function(_0x424fc8){logger[_0xdf4d('0xa')](_0xdf4d('0xb'),_0x290e03,_0xdf4d('0xc'));logger['debug']('Network,\x20%s,\x20%s,\x20%s',_0x290e03,_0xdf4d('0xc'),JSON[_0xdf4d('0xd')](_0x424fc8));if(_0x424fc8[_0xdf4d('0xe')]){if(_0x424fc8['error'][_0xdf4d('0xf')]===0x1f4){logger['error'](_0xdf4d('0xb'),_0x290e03,_0x424fc8[_0xdf4d('0xe')][_0xdf4d('0x10')]);return _0x461ea1(_0x424fc8['error'][_0xdf4d('0x10')]);}logger[_0xdf4d('0xe')](_0xdf4d('0xb'),_0x290e03,_0x424fc8[_0xdf4d('0xe')][_0xdf4d('0x10')]);return _0x42fefa(_0x424fc8['error'][_0xdf4d('0x10')]);}else{logger[_0xdf4d('0xa')]('Network,\x20%s,\x20%s',_0x290e03,_0xdf4d('0xc'));_0x42fefa(_0x424fc8['result'][_0xdf4d('0x10')]);}})[_0xdf4d('0x11')](function(_0x804c21){logger['error']('Network,\x20%s,\x20%s',_0x290e03,_0x804c21);_0x461ea1(_0x804c21);});});}function respondWithResult(_0x3fac97,_0x3f735c){_0x3f735c=_0x3f735c||0xc8;return function(_0x38ddc9){if(_0x38ddc9){return _0x3fac97[_0xdf4d('0x12')](_0x3f735c)[_0xdf4d('0x13')](_0x38ddc9);}};}function respondWithFilteredResult(_0x93f4aa,_0x736252){return function(_0x29b192){if(_0x29b192){var _0x186bf5=typeof _0x736252['offset']===_0xdf4d('0x14')&&typeof _0x736252[_0xdf4d('0x15')]==='undefined';var _0x523c3f=_0x29b192['count'];var _0x404672=_0x186bf5?0x0:_0x736252[_0xdf4d('0x16')];var _0x104696=_0x186bf5?_0x29b192[_0xdf4d('0x17')]:_0x736252[_0xdf4d('0x16')]+_0x736252[_0xdf4d('0x15')];var _0x36bd69;if(_0x104696>=_0x523c3f){_0x104696=_0x523c3f;_0x36bd69=0xc8;}else{_0x36bd69=0xce;}_0x93f4aa[_0xdf4d('0x12')](_0x36bd69);return _0x93f4aa[_0xdf4d('0x18')](_0xdf4d('0x19'),_0x404672+'-'+_0x104696+'/'+_0x523c3f)[_0xdf4d('0x13')](_0x29b192);}return null;};}function saveUpdates(_0x2006f4){return function(_0x3a2e59){if(_0x3a2e59){return _0x3a2e59[_0xdf4d('0x1a')](_0x2006f4)['then'](function(_0x47ae67){return _0x47ae67;});}return null;};}function removeEntity(_0x8eaa1b){return function(_0x54b4bb){if(_0x54b4bb){return _0x54b4bb['destroy']()[_0xdf4d('0x9')](function(){_0x8eaa1b[_0xdf4d('0x12')](0xcc)[_0xdf4d('0x1b')]();});}};}function handleEntityNotFound(_0x277670){return function(_0x31a6ab){if(!_0x31a6ab){_0x277670['sendStatus'](0x194);}return _0x31a6ab;};}function handleError(_0x245850,_0x271c3d){_0x271c3d=_0x271c3d||0x1f4;return function(_0x79d7e2){logger[_0xdf4d('0xe')](_0x79d7e2[_0xdf4d('0x1c')]);if(_0x79d7e2['name']){delete _0x79d7e2[_0xdf4d('0x1d')];}_0x245850[_0xdf4d('0x12')](_0x271c3d)['send'](_0x79d7e2);};}exports[_0xdf4d('0x1e')]=function(_0x4c88a3,_0x24cda0){var _0x306e11={},_0x1c6616={},_0x137307={'count':0x0,'rows':[]};var _0x2dec7f=_['map'](db[_0xdf4d('0x1f')]['rawAttributes'],function(_0x1e52bd){return{'name':_0x1e52bd[_0xdf4d('0x20')],'type':_0x1e52bd[_0xdf4d('0x21')]['key']};});_0x1c6616['model']=_['map'](_0x2dec7f,'name');_0x1c6616[_0xdf4d('0x22')]=_[_0xdf4d('0x23')](_0x4c88a3[_0xdf4d('0x22')]);_0x1c6616['filters']=_[_0xdf4d('0x24')](_0x1c6616[_0xdf4d('0x25')],_0x1c6616[_0xdf4d('0x22')]);_0x306e11['attributes']=_[_0xdf4d('0x24')](_0x1c6616['model'],qs[_0xdf4d('0x26')](_0x4c88a3[_0xdf4d('0x22')][_0xdf4d('0x26')]));_0x306e11[_0xdf4d('0x27')]=_0x306e11[_0xdf4d('0x27')][_0xdf4d('0x28')]?_0x306e11['attributes']:_0x1c6616[_0xdf4d('0x25')];if(!_0x4c88a3[_0xdf4d('0x22')][_0xdf4d('0x29')](_0xdf4d('0x2a'))){_0x306e11[_0xdf4d('0x15')]=qs[_0xdf4d('0x15')](_0x4c88a3[_0xdf4d('0x22')][_0xdf4d('0x15')]);_0x306e11[_0xdf4d('0x16')]=qs['offset'](_0x4c88a3[_0xdf4d('0x22')]['offset']);}_0x306e11[_0xdf4d('0x2b')]=qs[_0xdf4d('0x2c')](_0x4c88a3[_0xdf4d('0x22')][_0xdf4d('0x2c')]);_0x306e11[_0xdf4d('0x2d')]=qs[_0xdf4d('0x2e')](_[_0xdf4d('0x2f')](_0x4c88a3[_0xdf4d('0x22')],_0x1c6616[_0xdf4d('0x2e')]),_0x2dec7f);if(_0x4c88a3[_0xdf4d('0x22')][_0xdf4d('0x30')]){_0x306e11['where']=_['merge'](_0x306e11[_0xdf4d('0x2d')],{'$or':_[_0xdf4d('0x31')](_0x2dec7f,function(_0x36bb30){if(_0x36bb30[_0xdf4d('0x21')]!==_0xdf4d('0x32')){var _0x216238={};_0x216238[_0x36bb30[_0xdf4d('0x1d')]]={'$like':'%'+_0x4c88a3['query'][_0xdf4d('0x30')]+'%'};return _0x216238;}})});}_0x306e11=_[_0xdf4d('0x33')]({},_0x306e11,_0x4c88a3['options']);var _0x394e58={'where':_0x306e11['where']};return db[_0xdf4d('0x1f')][_0xdf4d('0x17')](_0x394e58)[_0xdf4d('0x9')](function(_0x241ed5){_0x137307[_0xdf4d('0x17')]=_0x241ed5;if(_0x4c88a3[_0xdf4d('0x22')][_0xdf4d('0x34')]){_0x306e11[_0xdf4d('0x35')]=[{'all':!![]}];}return db['Network'][_0xdf4d('0x36')](_0x306e11);})[_0xdf4d('0x9')](function(_0x23059d){_0x137307[_0xdf4d('0x37')]=_0x23059d;return _0x137307;})[_0xdf4d('0x9')](respondWithFilteredResult(_0x24cda0,_0x306e11))[_0xdf4d('0x11')](handleError(_0x24cda0,null));};exports[_0xdf4d('0x38')]=function(_0x3226e7,_0x760f85){var _0x14e8cf={'raw':!![],'where':{'id':_0x3226e7[_0xdf4d('0x39')]['id']}},_0x40da17={};_0x40da17[_0xdf4d('0x25')]=_[_0xdf4d('0x23')](db[_0xdf4d('0x1f')][_0xdf4d('0x3a')]);_0x40da17[_0xdf4d('0x22')]=_['keys'](_0x3226e7['query']);_0x40da17['filters']=_[_0xdf4d('0x24')](_0x40da17[_0xdf4d('0x25')],_0x40da17[_0xdf4d('0x22')]);_0x14e8cf[_0xdf4d('0x27')]=_[_0xdf4d('0x24')](_0x40da17[_0xdf4d('0x25')],qs[_0xdf4d('0x26')](_0x3226e7[_0xdf4d('0x22')][_0xdf4d('0x26')]));_0x14e8cf[_0xdf4d('0x27')]=_0x14e8cf['attributes']['length']?_0x14e8cf['attributes']:_0x40da17[_0xdf4d('0x25')];if(_0x3226e7[_0xdf4d('0x22')][_0xdf4d('0x34')]){_0x14e8cf[_0xdf4d('0x35')]=[{'all':!![]}];}_0x14e8cf=_[_0xdf4d('0x33')]({},_0x14e8cf,_0x3226e7['options']);return db[_0xdf4d('0x1f')]['find'](_0x14e8cf)[_0xdf4d('0x9')](handleEntityNotFound(_0x760f85,null))[_0xdf4d('0x9')](respondWithResult(_0x760f85,null))['catch'](handleError(_0x760f85,null));};exports['create']=function(_0x2d39c3,_0x2c8941){var _0xf73302;return db['Network'][_0xdf4d('0x3b')](_0x2d39c3['body'],{'raw':!![]})[_0xdf4d('0x9')](function(_0x2ade07){_0xf73302=_0x2ade07;return db[_0xdf4d('0x1f')]['findAll']({'where':{'type':_0x2d39c3[_0xdf4d('0x3c')][_0xdf4d('0x21')]},'raw':!![]});})[_0xdf4d('0x9')](function(_0x363a25){if(_0xf73302['type'][_0xdf4d('0x3d')]()==_0xdf4d('0x3e')){var _0x48ff53=fs['readFileSync'](path[_0xdf4d('0x3f')](config[_0xdf4d('0x40')],_0xdf4d('0x41')),_0xdf4d('0x42'));var _0x1a039d=ejs[_0xdf4d('0x43')](_0x48ff53,{'networks':_0x363a25||[]});fs['writeFileSync'](_0xdf4d('0x44'),_0x1a039d);return respondWithRpcPromise(_0xdf4d('0x45'),_0xdf4d('0x3b'),{'module':_0xdf4d('0x46')});}else if(_0xf73302[_0xdf4d('0x21')][_0xdf4d('0x3d')]()=='TURN'){var _0x471da1=fs['readFileSync'](path[_0xdf4d('0x3f')](config['root'],'server/files/templates/turn_multiple.ejs'),_0xdf4d('0x42'));var _0x281f2d=ejs[_0xdf4d('0x43')](_0x471da1,{'networks':_0x363a25||[]});fs[_0xdf4d('0x47')](_0xdf4d('0x48'),_0x281f2d);return respondWithRpcPromise('Reload',_0xdf4d('0x3b'),{'module':_0xdf4d('0x46')});}else{var _0x5a8c83=fs['readFileSync'](path['join'](config[_0xdf4d('0x40')],_0xdf4d('0x49')),_0xdf4d('0x42'));var _0x306304=ejs[_0xdf4d('0x43')](_0x5a8c83,{'networks':_0x363a25||[]});fs[_0xdf4d('0x47')](util[_0xdf4d('0x4a')]('/etc/asterisk/sip_xcally_%s.conf',_0x2d39c3[_0xdf4d('0x3c')][_0xdf4d('0x21')][_0xdf4d('0x4b')]()),_0x306304);return respondWithRpcPromise(_0xdf4d('0x45'),_0xdf4d('0x3b'),{'module':'chan_sip.so'});}})['then'](function(){return _0xf73302;})[_0xdf4d('0x9')](respondWithResult(_0x2c8941,0xc9))[_0xdf4d('0x11')](handleError(_0x2c8941,null));};exports['update']=function(_0x894397,_0x17f555){var _0x3f6fe4;return db[_0xdf4d('0x1f')][_0xdf4d('0x4c')]({'where':{'id':_0x894397['params']['id']}})[_0xdf4d('0x9')](handleEntityNotFound(_0x17f555,null))['then'](saveUpdates(_0x894397[_0xdf4d('0x3c')],null))[_0xdf4d('0x9')](function(_0x2df8bb){if(_0x2df8bb){_0x3f6fe4=_0x2df8bb;return db[_0xdf4d('0x1f')][_0xdf4d('0x36')]({'where':{'type':_0x3f6fe4['type']},'raw':!![]});}return null;})[_0xdf4d('0x9')](function(_0x35f54c){if(_0x3f6fe4[_0xdf4d('0x21')][_0xdf4d('0x3d')]()==_0xdf4d('0x3e')){var _0x40a0af=fs[_0xdf4d('0x4d')](path[_0xdf4d('0x3f')](config[_0xdf4d('0x40')],'server/files/templates/stun_multiple.ejs'),_0xdf4d('0x42'));var _0x44ee05=ejs['render'](_0x40a0af,{'networks':_0x35f54c||[]});fs[_0xdf4d('0x47')](_0xdf4d('0x44'),_0x44ee05);return respondWithRpcPromise(_0xdf4d('0x45'),_0xdf4d('0x1a'),{'module':_0xdf4d('0x46')});}else if(_0x3f6fe4[_0xdf4d('0x21')][_0xdf4d('0x3d')]()==_0xdf4d('0x4e')){var _0x1c9a26=fs[_0xdf4d('0x4d')](path['join'](config[_0xdf4d('0x40')],_0xdf4d('0x4f')),'utf8');var _0x3c5ce8=ejs[_0xdf4d('0x43')](_0x1c9a26,{'networks':_0x35f54c||[]});fs[_0xdf4d('0x47')](_0xdf4d('0x48'),_0x3c5ce8);return respondWithRpcPromise(_0xdf4d('0x45'),_0xdf4d('0x1a'),{'module':'res_stun_monitor.so'});}else{var _0x7a5865=fs[_0xdf4d('0x4d')](path[_0xdf4d('0x3f')](config[_0xdf4d('0x40')],_0xdf4d('0x49')),_0xdf4d('0x42'));var _0xedf133=ejs[_0xdf4d('0x43')](_0x7a5865,{'networks':_0x35f54c||[]});fs[_0xdf4d('0x47')](util[_0xdf4d('0x4a')]('/etc/asterisk/sip_xcally_%s.conf',_0x894397[_0xdf4d('0x3c')][_0xdf4d('0x21')][_0xdf4d('0x4b')]()),_0xedf133);return respondWithRpcPromise(_0xdf4d('0x45'),_0xdf4d('0x1a'),{'module':'chan_sip.so'});}})['then'](function(_0x3785ca){if(_0x3785ca){return _0x3f6fe4;}return null;})[_0xdf4d('0x9')](respondWithResult(_0x17f555,null))['catch'](handleError(_0x17f555,null));};exports[_0xdf4d('0x50')]=function(_0xfc093d,_0x47029b){var _0x1dab3e;return db[_0xdf4d('0x1f')][_0xdf4d('0x4c')]({'where':{'id':_0xfc093d[_0xdf4d('0x39')]['id']}})[_0xdf4d('0x9')](function(_0x6e3ec9){_0x1dab3e=_0x6e3ec9;return _0x6e3ec9;})[_0xdf4d('0x9')](handleEntityNotFound(_0x47029b,null))['then'](removeEntity(_0x47029b,null))[_0xdf4d('0x9')](function(){if(_0x1dab3e){return db['Network'][_0xdf4d('0x36')]({'where':{'type':_0x1dab3e[_0xdf4d('0x21')]},'raw':!![]});}})[_0xdf4d('0x9')](function(_0xd9eff3){if(_0x1dab3e[_0xdf4d('0x21')]['toUpperCase']()==_0xdf4d('0x3e')){var _0x259842=fs[_0xdf4d('0x4d')](path[_0xdf4d('0x3f')](config[_0xdf4d('0x40')],_0xdf4d('0x41')),_0xdf4d('0x42'));var _0x2276c4=ejs[_0xdf4d('0x43')](_0x259842,{'networks':_0xd9eff3||[]});fs[_0xdf4d('0x47')](_0xdf4d('0x44'),_0x2276c4);return respondWithRpcPromise(_0xdf4d('0x45'),_0xdf4d('0x50'),{'module':_0xdf4d('0x46')});}else if(_0x1dab3e[_0xdf4d('0x21')]['toUpperCase']()==_0xdf4d('0x4e')){var _0x33a2fa=fs[_0xdf4d('0x4d')](path[_0xdf4d('0x3f')](config[_0xdf4d('0x40')],_0xdf4d('0x4f')),'utf8');var _0x57a431=ejs[_0xdf4d('0x43')](_0x33a2fa,{'networks':_0xd9eff3||[]});fs[_0xdf4d('0x47')](_0xdf4d('0x48'),_0x57a431);return respondWithRpcPromise(_0xdf4d('0x45'),_0xdf4d('0x50'),{'module':_0xdf4d('0x46')});}else{var _0x229d3b=fs[_0xdf4d('0x4d')](path['join'](config[_0xdf4d('0x40')],_0xdf4d('0x49')),_0xdf4d('0x42'));var _0x569378=ejs[_0xdf4d('0x43')](_0x229d3b,{'networks':_0xd9eff3||[]});fs[_0xdf4d('0x47')](util[_0xdf4d('0x4a')](_0xdf4d('0x51'),_0x1dab3e[_0xdf4d('0x21')][_0xdf4d('0x4b')]()),_0x569378);return respondWithRpcPromise('Reload','destroy',{'module':_0xdf4d('0x52')});}})[_0xdf4d('0x11')](handleError(_0x47029b,null));};
\ No newline at end of file
+var _0x736b=['toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','STUN','format','toLowerCase','ejs','../../components/parsers/qs','../../config/logger','../../config/environment','client','http','request','info','Network,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','end','name','status','send','index','map','Network','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','includeAll','include','rows','show','params','find','create','findAll','body'];(function(_0x3eec74,_0x3bc48e){var _0x4936a5=function(_0x446956){while(--_0x446956){_0x3eec74['push'](_0x3eec74['shift']());}};_0x4936a5(++_0x3bc48e);}(_0x736b,0x1ae));var _0xb736=function(_0x27fd92,_0x2311cb){_0x27fd92=_0x27fd92-0x0;var _0x4f6070=_0x736b[_0x27fd92];return _0x4f6070;};'use strict';var util=require('util');var path=require('path');var ejs=require(_0xb736('0x0'));var fs=require('fs');var _=require('lodash');var qs=require(_0xb736('0x1'));var logger=require(_0xb736('0x2'))('api');var config=require(_0xb736('0x3'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xb736('0x4')][_0xb736('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x34edc8,_0x3e4c74,_0x5561ce,_0x57446e){return new Promise(function(_0x19eb88,_0x5abe14){var _0x41b5a8=_0x57446e||client;return _0x41b5a8[_0xb736('0x6')](_0x34edc8,_0x5561ce)['then'](function(_0x98f081){logger[_0xb736('0x7')](_0xb736('0x8'),_0x3e4c74,'request\x20sent');logger[_0xb736('0x9')]('Network,\x20%s,\x20%s,\x20%s',_0x3e4c74,_0xb736('0xa'),JSON[_0xb736('0xb')](_0x98f081));if(_0x98f081[_0xb736('0xc')]){if(_0x98f081[_0xb736('0xc')]['code']===0x1f4){logger[_0xb736('0xc')](_0xb736('0x8'),_0x3e4c74,_0x98f081['error']['message']);return _0x5abe14(_0x98f081[_0xb736('0xc')]['message']);}logger['error'](_0xb736('0x8'),_0x3e4c74,_0x98f081[_0xb736('0xc')][_0xb736('0xd')]);return _0x19eb88(_0x98f081[_0xb736('0xc')][_0xb736('0xd')]);}else{logger[_0xb736('0x7')](_0xb736('0x8'),_0x3e4c74,_0xb736('0xa'));_0x19eb88(_0x98f081[_0xb736('0xe')][_0xb736('0xd')]);}})[_0xb736('0xf')](function(_0xaf086){logger[_0xb736('0xc')](_0xb736('0x8'),_0x3e4c74,_0xaf086);_0x5abe14(_0xaf086);});});}function respondWithResult(_0xd31c2d,_0x41e31f){_0x41e31f=_0x41e31f||0xc8;return function(_0x116784){if(_0x116784){return _0xd31c2d['status'](_0x41e31f)[_0xb736('0x10')](_0x116784);}};}function respondWithFilteredResult(_0x32d975,_0x567163){return function(_0x22c732){if(_0x22c732){var _0x5edd23=typeof _0x567163[_0xb736('0x11')]===_0xb736('0x12')&&typeof _0x567163['limit']===_0xb736('0x12');var _0x2b551d=_0x22c732[_0xb736('0x13')];var _0x3766e5=_0x5edd23?0x0:_0x567163['offset'];var _0x1f75b8=_0x5edd23?_0x22c732['count']:_0x567163[_0xb736('0x11')]+_0x567163[_0xb736('0x14')];var _0x5b6aa2;if(_0x1f75b8>=_0x2b551d){_0x1f75b8=_0x2b551d;_0x5b6aa2=0xc8;}else{_0x5b6aa2=0xce;}_0x32d975['status'](_0x5b6aa2);return _0x32d975[_0xb736('0x15')](_0xb736('0x16'),_0x3766e5+'-'+_0x1f75b8+'/'+_0x2b551d)[_0xb736('0x10')](_0x22c732);}return null;};}function saveUpdates(_0xb09234){return function(_0x68e9b4){if(_0x68e9b4){return _0x68e9b4[_0xb736('0x17')](_0xb09234)[_0xb736('0x18')](function(_0x112b89){return _0x112b89;});}return null;};}function removeEntity(_0x3b965b){return function(_0x48854e){if(_0x48854e){return _0x48854e[_0xb736('0x19')]()[_0xb736('0x18')](function(){_0x3b965b['status'](0xcc)[_0xb736('0x1a')]();});}};}function handleEntityNotFound(_0x3fbed5){return function(_0x3567ad){if(!_0x3567ad){_0x3fbed5['sendStatus'](0x194);}return _0x3567ad;};}function handleError(_0x589fd5,_0xb7a975){_0xb7a975=_0xb7a975||0x1f4;return function(_0x4e1dc2){logger['error'](_0x4e1dc2['stack']);if(_0x4e1dc2[_0xb736('0x1b')]){delete _0x4e1dc2[_0xb736('0x1b')];}_0x589fd5[_0xb736('0x1c')](_0xb7a975)[_0xb736('0x1d')](_0x4e1dc2);};}exports[_0xb736('0x1e')]=function(_0xe15b26,_0x5d377e){var _0x2933c2={},_0x666de2={},_0x5d88ab={'count':0x0,'rows':[]};var _0x4d538d=_[_0xb736('0x1f')](db[_0xb736('0x20')][_0xb736('0x21')],function(_0x280705){return{'name':_0x280705[_0xb736('0x22')],'type':_0x280705[_0xb736('0x23')][_0xb736('0x24')]};});_0x666de2[_0xb736('0x25')]=_[_0xb736('0x1f')](_0x4d538d,_0xb736('0x1b'));_0x666de2[_0xb736('0x26')]=_[_0xb736('0x27')](_0xe15b26[_0xb736('0x26')]);_0x666de2[_0xb736('0x28')]=_['intersection'](_0x666de2[_0xb736('0x25')],_0x666de2['query']);_0x2933c2['attributes']=_[_0xb736('0x29')](_0x666de2[_0xb736('0x25')],qs['fields'](_0xe15b26['query'][_0xb736('0x2a')]));_0x2933c2[_0xb736('0x2b')]=_0x2933c2[_0xb736('0x2b')][_0xb736('0x2c')]?_0x2933c2['attributes']:_0x666de2[_0xb736('0x25')];if(!_0xe15b26[_0xb736('0x26')]['hasOwnProperty'](_0xb736('0x2d'))){_0x2933c2[_0xb736('0x14')]=qs[_0xb736('0x14')](_0xe15b26[_0xb736('0x26')][_0xb736('0x14')]);_0x2933c2[_0xb736('0x11')]=qs['offset'](_0xe15b26[_0xb736('0x26')][_0xb736('0x11')]);}_0x2933c2[_0xb736('0x2e')]=qs[_0xb736('0x2f')](_0xe15b26['query'][_0xb736('0x2f')]);_0x2933c2['where']=qs[_0xb736('0x28')](_[_0xb736('0x30')](_0xe15b26[_0xb736('0x26')],_0x666de2[_0xb736('0x28')]),_0x4d538d);if(_0xe15b26['query'][_0xb736('0x31')]){_0x2933c2[_0xb736('0x32')]=_['merge'](_0x2933c2[_0xb736('0x32')],{'$or':_['map'](_0x4d538d,function(_0x3cd363){if(_0x3cd363[_0xb736('0x23')]!==_0xb736('0x33')){var _0x369794={};_0x369794[_0x3cd363[_0xb736('0x1b')]]={'$like':'%'+_0xe15b26[_0xb736('0x26')][_0xb736('0x31')]+'%'};return _0x369794;}})});}_0x2933c2=_[_0xb736('0x34')]({},_0x2933c2,_0xe15b26['options']);var _0x105a48={'where':_0x2933c2[_0xb736('0x32')]};return db[_0xb736('0x20')][_0xb736('0x13')](_0x105a48)['then'](function(_0x5f0091){_0x5d88ab[_0xb736('0x13')]=_0x5f0091;if(_0xe15b26[_0xb736('0x26')][_0xb736('0x35')]){_0x2933c2[_0xb736('0x36')]=[{'all':!![]}];}return db['Network']['findAll'](_0x2933c2);})['then'](function(_0x2e866b){_0x5d88ab[_0xb736('0x37')]=_0x2e866b;return _0x5d88ab;})[_0xb736('0x18')](respondWithFilteredResult(_0x5d377e,_0x2933c2))[_0xb736('0xf')](handleError(_0x5d377e,null));};exports[_0xb736('0x38')]=function(_0x3293cf,_0x547f3f){var _0x5178ed={'raw':!![],'where':{'id':_0x3293cf[_0xb736('0x39')]['id']}},_0x3508af={};_0x3508af['model']=_['keys'](db[_0xb736('0x20')][_0xb736('0x21')]);_0x3508af[_0xb736('0x26')]=_[_0xb736('0x27')](_0x3293cf[_0xb736('0x26')]);_0x3508af[_0xb736('0x28')]=_[_0xb736('0x29')](_0x3508af['model'],_0x3508af[_0xb736('0x26')]);_0x5178ed['attributes']=_[_0xb736('0x29')](_0x3508af[_0xb736('0x25')],qs['fields'](_0x3293cf[_0xb736('0x26')]['fields']));_0x5178ed[_0xb736('0x2b')]=_0x5178ed['attributes'][_0xb736('0x2c')]?_0x5178ed['attributes']:_0x3508af['model'];if(_0x3293cf[_0xb736('0x26')][_0xb736('0x35')]){_0x5178ed[_0xb736('0x36')]=[{'all':!![]}];}_0x5178ed=_['merge']({},_0x5178ed,_0x3293cf['options']);return db['Network'][_0xb736('0x3a')](_0x5178ed)['then'](handleEntityNotFound(_0x547f3f,null))['then'](respondWithResult(_0x547f3f,null))[_0xb736('0xf')](handleError(_0x547f3f,null));};exports[_0xb736('0x3b')]=function(_0x61da80,_0x18f674){var _0x391223;return db[_0xb736('0x20')]['create'](_0x61da80['body'],{'raw':!![]})[_0xb736('0x18')](function(_0x3354fb){_0x391223=_0x3354fb;return db[_0xb736('0x20')][_0xb736('0x3c')]({'where':{'type':_0x61da80[_0xb736('0x3d')]['type']},'raw':!![]});})[_0xb736('0x18')](function(_0x142fa7){if(_0x391223[_0xb736('0x23')][_0xb736('0x3e')]()=='STUN'){var _0x1fdc2b=fs[_0xb736('0x3f')](path[_0xb736('0x40')](config[_0xb736('0x41')],_0xb736('0x42')),_0xb736('0x43'));var _0x2c182e=ejs[_0xb736('0x44')](_0x1fdc2b,{'networks':_0x142fa7||[]});fs[_0xb736('0x45')](_0xb736('0x46'),_0x2c182e);return respondWithRpcPromise(_0xb736('0x47'),_0xb736('0x3b'),{'module':'res_stun_monitor.so'});}else if(_0x391223[_0xb736('0x23')][_0xb736('0x3e')]()==_0xb736('0x48')){var _0x24c125=fs[_0xb736('0x3f')](path[_0xb736('0x40')](config[_0xb736('0x41')],_0xb736('0x49')),'utf8');var _0x52814a=ejs['render'](_0x24c125,{'networks':_0x142fa7||[]});fs[_0xb736('0x45')](_0xb736('0x4a'),_0x52814a);return respondWithRpcPromise(_0xb736('0x47'),'create',{'module':_0xb736('0x4b')});}else{var _0x177a2e=fs['readFileSync'](path['join'](config[_0xb736('0x41')],_0xb736('0x4c')),_0xb736('0x43'));var _0x570c46=ejs['render'](_0x177a2e,{'networks':_0x142fa7||[]});fs[_0xb736('0x45')](util['format'](_0xb736('0x4d'),_0x61da80[_0xb736('0x3d')][_0xb736('0x23')]['toLowerCase']()),_0x570c46);return respondWithRpcPromise(_0xb736('0x47'),_0xb736('0x3b'),{'module':_0xb736('0x4e')});}})[_0xb736('0x18')](function(){return _0x391223;})['then'](respondWithResult(_0x18f674,0xc9))['catch'](handleError(_0x18f674,null));};exports[_0xb736('0x17')]=function(_0x423641,_0x3810b){var _0x2e173d;return db[_0xb736('0x20')][_0xb736('0x3a')]({'where':{'id':_0x423641[_0xb736('0x39')]['id']}})[_0xb736('0x18')](handleEntityNotFound(_0x3810b,null))[_0xb736('0x18')](saveUpdates(_0x423641[_0xb736('0x3d')],null))[_0xb736('0x18')](function(_0x1a26dc){if(_0x1a26dc){_0x2e173d=_0x1a26dc;return db['Network']['findAll']({'where':{'type':_0x2e173d['type']},'raw':!![]});}return null;})[_0xb736('0x18')](function(_0x57e93b){if(_0x2e173d[_0xb736('0x23')][_0xb736('0x3e')]()==_0xb736('0x4f')){var _0x1eff72=fs[_0xb736('0x3f')](path[_0xb736('0x40')](config[_0xb736('0x41')],_0xb736('0x42')),'utf8');var _0x92d979=ejs[_0xb736('0x44')](_0x1eff72,{'networks':_0x57e93b||[]});fs['writeFileSync'](_0xb736('0x46'),_0x92d979);return respondWithRpcPromise('Reload',_0xb736('0x17'),{'module':_0xb736('0x4b')});}else if(_0x2e173d['type'][_0xb736('0x3e')]()==_0xb736('0x48')){var _0x66c5cd=fs['readFileSync'](path[_0xb736('0x40')](config[_0xb736('0x41')],_0xb736('0x49')),_0xb736('0x43'));var _0x572732=ejs['render'](_0x66c5cd,{'networks':_0x57e93b||[]});fs[_0xb736('0x45')](_0xb736('0x4a'),_0x572732);return respondWithRpcPromise('Reload',_0xb736('0x17'),{'module':'res_stun_monitor.so'});}else{var _0x59f0c8=fs[_0xb736('0x3f')](path[_0xb736('0x40')](config[_0xb736('0x41')],'server/files/templates/network.ejs'),_0xb736('0x43'));var _0x399c1e=ejs[_0xb736('0x44')](_0x59f0c8,{'networks':_0x57e93b||[]});fs[_0xb736('0x45')](util[_0xb736('0x50')](_0xb736('0x4d'),_0x423641[_0xb736('0x3d')][_0xb736('0x23')]['toLowerCase']()),_0x399c1e);return respondWithRpcPromise(_0xb736('0x47'),_0xb736('0x17'),{'module':'chan_sip.so'});}})[_0xb736('0x18')](function(_0xb44d7d){if(_0xb44d7d){return _0x2e173d;}return null;})['then'](respondWithResult(_0x3810b,null))['catch'](handleError(_0x3810b,null));};exports[_0xb736('0x19')]=function(_0xc09c6e,_0x19b470){var _0x10541a;return db[_0xb736('0x20')][_0xb736('0x3a')]({'where':{'id':_0xc09c6e[_0xb736('0x39')]['id']}})[_0xb736('0x18')](function(_0x1247fc){_0x10541a=_0x1247fc;return _0x1247fc;})['then'](handleEntityNotFound(_0x19b470,null))[_0xb736('0x18')](removeEntity(_0x19b470,null))[_0xb736('0x18')](function(){if(_0x10541a){return db['Network']['findAll']({'where':{'type':_0x10541a['type']},'raw':!![]});}})[_0xb736('0x18')](function(_0x7a22b){if(_0x10541a['type']['toUpperCase']()=='STUN'){var _0x518cbd=fs[_0xb736('0x3f')](path[_0xb736('0x40')](config['root'],_0xb736('0x42')),_0xb736('0x43'));var _0x13634d=ejs[_0xb736('0x44')](_0x518cbd,{'networks':_0x7a22b||[]});fs[_0xb736('0x45')](_0xb736('0x46'),_0x13634d);return respondWithRpcPromise('Reload','destroy',{'module':_0xb736('0x4b')});}else if(_0x10541a['type'][_0xb736('0x3e')]()==_0xb736('0x48')){var _0x480d31=fs[_0xb736('0x3f')](path['join'](config['root'],_0xb736('0x49')),_0xb736('0x43'));var _0x3a8365=ejs[_0xb736('0x44')](_0x480d31,{'networks':_0x7a22b||[]});fs[_0xb736('0x45')]('/etc/asterisk/turn_xcally.conf',_0x3a8365);return respondWithRpcPromise(_0xb736('0x47'),_0xb736('0x19'),{'module':_0xb736('0x4b')});}else{var _0x14a705=fs[_0xb736('0x3f')](path[_0xb736('0x40')](config[_0xb736('0x41')],_0xb736('0x4c')),_0xb736('0x43'));var _0x23b85f=ejs[_0xb736('0x44')](_0x14a705,{'networks':_0x7a22b||[]});fs[_0xb736('0x45')](util[_0xb736('0x50')](_0xb736('0x4d'),_0x10541a[_0xb736('0x23')][_0xb736('0x51')]()),_0x23b85f);return respondWithRpcPromise(_0xb736('0x47'),_0xb736('0x19'),{'module':_0xb736('0x4e')});}})[_0xb736('0xf')](handleError(_0x19b470,null));};
\ No newline at end of file
index 41730f6..84458ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe644=['path','rimraf','../../config/environment','./network.attributes','exports','define','Network','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x24fb83,_0x18caba){var _0x445a66=function(_0x3e4a23){while(--_0x3e4a23){_0x24fb83['push'](_0x24fb83['shift']());}};_0x445a66(++_0x18caba);}(_0xe644,0x159));var _0x4e64=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe644[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4e64('0x0'));var util=require(_0x4e64('0x1'));var logger=require(_0x4e64('0x2'))(_0x4e64('0x3'));var moment=require(_0x4e64('0x4'));var BPromise=require(_0x4e64('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e64('0x6'));var rimraf=require(_0x4e64('0x7'));var config=require(_0x4e64('0x8'));var attributes=require(_0x4e64('0x9'));module[_0x4e64('0xa')]=function(_0x13fa90,_0x55c23b){return _0x13fa90[_0x4e64('0xb')](_0x4e64('0xc'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x780f=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./network.attributes','define','Network','network'];(function(_0x49cec6,_0x25ea07){var _0x3c2ed3=function(_0x33100c){while(--_0x33100c){_0x49cec6['push'](_0x49cec6['shift']());}};_0x3c2ed3(++_0x25ea07);}(_0x780f,0x6c));var _0xf780=function(_0x38b2d9,_0x19fd42){_0x38b2d9=_0x38b2d9-0x0;var _0x23a3e1=_0x780f[_0x38b2d9];return _0x23a3e1;};'use strict';var _=require(_0xf780('0x0'));var util=require(_0xf780('0x1'));var logger=require(_0xf780('0x2'))(_0xf780('0x3'));var moment=require(_0xf780('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf780('0x5'));var rimraf=require(_0xf780('0x6'));var config=require(_0xf780('0x7'));var attributes=require(_0xf780('0x8'));module['exports']=function(_0x37b0a2,_0x4b55e7){return _0x37b0a2[_0xf780('0x9')](_0xf780('0xa'),attributes,{'tableName':_0xf780('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4513aa2..8dd5cc4 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(_0xb78aed,_0x1de6f5){var _0x4ab1b7=function(_0x42bb47){while(--_0x42bb47){_0xb78aed['push'](_0xb78aed['shift']());}};_0x4ab1b7(++_0x1de6f5);}(_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 moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0x183f39,_0x3a5d80){_0x183f39=_0x183f39-0x0;var _0x2de57c=_0x7a54[_0x183f39];return _0x2de57c;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 0597b9d..16d1f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd76=['index','get','describe','/:id','show','getDispositions','/:id/canned_answers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','notify','addApplications','/:id/send','send','put','delete','destroy','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','isAuthenticated'];(function(_0x569f19,_0x585ae6){var _0x41ac04=function(_0x523c13){while(--_0x523c13){_0x569f19['push'](_0x569f19['shift']());}};_0x41ac04(++_0x585ae6);}(_0xcd76,0x198));var _0x6cd7=function(_0x26656e,_0x2c7d2){_0x26656e=_0x26656e-0x0;var _0x475ed6=_0xcd76[_0x26656e];return _0x475ed6;};'use strict';var multer=require(_0x6cd7('0x0'));var util=require(_0x6cd7('0x1'));var path=require(_0x6cd7('0x2'));var timeout=require(_0x6cd7('0x3'));var express=require(_0x6cd7('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6cd7('0x5'));var interaction=require(_0x6cd7('0x6'));var config=require(_0x6cd7('0x7'));var controller=require(_0x6cd7('0x8'));router['get']('/',auth[_0x6cd7('0x9')](),controller[_0x6cd7('0xa')]);router[_0x6cd7('0xb')]('/describe',auth['isAuthenticated'](),controller[_0x6cd7('0xc')]);router[_0x6cd7('0xb')](_0x6cd7('0xd'),auth['isAuthenticated'](),controller[_0x6cd7('0xe')]);router[_0x6cd7('0xb')]('/:id/dispositions',auth[_0x6cd7('0x9')](),controller[_0x6cd7('0xf')]);router[_0x6cd7('0xb')](_0x6cd7('0x10'),auth[_0x6cd7('0x9')](),controller['getAnswers']);router[_0x6cd7('0xb')](_0x6cd7('0x11'),auth['isAuthenticated'](),controller[_0x6cd7('0x12')]);router[_0x6cd7('0xb')](_0x6cd7('0x13'),auth['isAuthenticated'](),controller[_0x6cd7('0x14')]);router[_0x6cd7('0xb')](_0x6cd7('0x15'),auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x16')]);router[_0x6cd7('0x17')]('/',auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x18')]);router[_0x6cd7('0x17')](_0x6cd7('0x19'),auth['isAuthenticated'](),controller[_0x6cd7('0x1a')]);router[_0x6cd7('0x17')](_0x6cd7('0x10'),auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x1b')]);router[_0x6cd7('0x17')](_0x6cd7('0x1c'),controller[_0x6cd7('0x1d')]);router[_0x6cd7('0x17')](_0x6cd7('0x11'),auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x1e')]);router[_0x6cd7('0x17')]('/:id/users',auth[_0x6cd7('0x9')](),controller['addAgents']);router[_0x6cd7('0x17')](_0x6cd7('0x1f'),auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x20')]);router[_0x6cd7('0x21')]('/:id',auth[_0x6cd7('0x9')](),controller['update']);router[_0x6cd7('0x22')](_0x6cd7('0xd'),auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x23')]);router[_0x6cd7('0x22')]('/:id/dispositions',auth[_0x6cd7('0x9')](),controller['removeDispositions']);router[_0x6cd7('0x22')]('/:id/canned_answers',auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x24')]);router[_0x6cd7('0x22')](_0x6cd7('0x15'),auth[_0x6cd7('0x9')](),controller[_0x6cd7('0x25')]);module['exports']=router;
\ No newline at end of file
+var _0xb782=['send','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getApplications','/:id/interactions','/:id/users','post','addDisposition','addAnswer','/:id/notify','/:id/applications','addApplications','addAgents','/:id/send'];(function(_0xd255e,_0x1b567c){var _0x18059f=function(_0x488ff2){while(--_0x488ff2){_0xd255e['push'](_0xd255e['shift']());}};_0x18059f(++_0x1b567c);}(_0xb782,0x138));var _0x2b78=function(_0x363709,_0x5ed3f6){_0x363709=_0x363709-0x0;var _0x503372=_0xb782[_0x363709];return _0x503372;};'use strict';var multer=require(_0x2b78('0x0'));var util=require(_0x2b78('0x1'));var path=require(_0x2b78('0x2'));var timeout=require(_0x2b78('0x3'));var express=require(_0x2b78('0x4'));var router=express[_0x2b78('0x5')]();var fs_extra=require(_0x2b78('0x6'));var auth=require(_0x2b78('0x7'));var interaction=require(_0x2b78('0x8'));var config=require(_0x2b78('0x9'));var controller=require(_0x2b78('0xa'));router[_0x2b78('0xb')]('/',auth[_0x2b78('0xc')](),controller['index']);router[_0x2b78('0xb')]('/describe',auth['isAuthenticated'](),controller[_0x2b78('0xd')]);router[_0x2b78('0xb')](_0x2b78('0xe'),auth[_0x2b78('0xc')](),controller[_0x2b78('0xf')]);router[_0x2b78('0xb')](_0x2b78('0x10'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x11')]);router[_0x2b78('0xb')](_0x2b78('0x12'),auth['isAuthenticated'](),controller['getAnswers']);router['get']('/:id/applications',auth[_0x2b78('0xc')](),controller[_0x2b78('0x13')]);router[_0x2b78('0xb')](_0x2b78('0x14'),auth[_0x2b78('0xc')](),controller['getInteractions']);router[_0x2b78('0xb')](_0x2b78('0x15'),auth[_0x2b78('0xc')](),controller['getAgents']);router[_0x2b78('0x16')]('/',auth[_0x2b78('0xc')](),controller['create']);router[_0x2b78('0x16')](_0x2b78('0x10'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x17')]);router[_0x2b78('0x16')](_0x2b78('0x12'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x18')]);router[_0x2b78('0x16')](_0x2b78('0x19'),controller['notify']);router[_0x2b78('0x16')](_0x2b78('0x1a'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x1b')]);router['post'](_0x2b78('0x15'),auth['isAuthenticated'](),controller[_0x2b78('0x1c')]);router[_0x2b78('0x16')](_0x2b78('0x1d'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x1e')]);router[_0x2b78('0x1f')](_0x2b78('0xe'),auth['isAuthenticated'](),controller[_0x2b78('0x20')]);router[_0x2b78('0x21')](_0x2b78('0xe'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x22')]);router['delete'](_0x2b78('0x10'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x23')]);router[_0x2b78('0x21')](_0x2b78('0x12'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x24')]);router[_0x2b78('0x21')](_0x2b78('0x15'),auth[_0x2b78('0xc')](),controller[_0x2b78('0x25')]);module['exports']=router;
\ No newline at end of file
index 013b6dc..536d67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e43=['mandatoryDispositionPauseId','mandatoryDisposition','randomstring','STRING','name','generate','TEXT','BOOLEAN','INTEGER','setDataValue'];(function(_0x1d94b1,_0x2f59f6){var _0x5eeb8d=function(_0x2fced0){while(--_0x2fced0){_0x1d94b1['push'](_0x1d94b1['shift']());}};_0x5eeb8d(++_0x2f59f6);}(_0x2e43,0x14c));var _0x32e4=function(_0x5f55af,_0x5ae05c){_0x5f55af=_0x5f55af-0x0;var _0x2494a6=_0x2e43[_0x5f55af];return _0x2494a6;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x32e4('0x0'));module['exports']={'name':{'type':Sequelize[_0x32e4('0x1')],'unique':_0x32e4('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x32e4('0x1')]},'token':{'type':Sequelize[_0x32e4('0x1')],'defaultValue':function(){return rs[_0x32e4('0x3')]();}},'replyUri':{'type':Sequelize[_0x32e4('0x1')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x32e4('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x32e4('0x4')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x32e4('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x32e4('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x32e4('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x32e4('0x1')]},'queueTransfer':{'type':Sequelize[_0x32e4('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x32e4('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x32e4('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x32e4('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x32e4('0x6')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x32e4('0x5')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x559da7){if(!_0x559da7)this[_0x32e4('0x7')](_0x32e4('0x8'),null);this[_0x32e4('0x7')](_0x32e4('0x9'),_0x559da7);}}};
\ No newline at end of file
+var _0x0524=['BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','STRING','name','generate'];(function(_0x507692,_0x546639){var _0x5b0e60=function(_0x5e1950){while(--_0x5e1950){_0x507692['push'](_0x507692['shift']());}};_0x5b0e60(++_0x546639);}(_0x0524,0x11d));var _0x4052=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x0524[_0x3c2a69];return _0x596bc8;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x4052('0x0')],'unique':_0x4052('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x4052('0x0')]},'token':{'type':Sequelize[_0x4052('0x0')],'defaultValue':function(){return rs[_0x4052('0x2')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x4052('0x0')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x4052('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4052('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4052('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x4052('0x0')]},'queueTransfer':{'type':Sequelize[_0x4052('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4052('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4052('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4052('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x4052('0x3')],'defaultValue':![],'comment':_0x4052('0x5'),'set':function(_0xf23f0){if(!_0xf23f0)this[_0x4052('0x6')](_0x4052('0x7'),null);this['setDataValue'](_0x4052('0x8'),_0xf23f0);}}};
\ No newline at end of file
index c86e90f..ce0baee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fec=['filter','merge','VIRTUAL','includeAll','include','findAll','rows','mandatoryDispositionPause','length','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','describe','addDisposition','OpenchannelAccountId','Disposition','findOne','params','hasOwnProperty','removeDispositions','ids','CannedAnswer','removeAnswers','notify','openchannel','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','Contacts','OpenchannelApplication','Applications','account','applications','list','List','orderBy','priority','asc','ListId','contact','firstName','threadId','externalUrl','OpenchannelInteraction','ContactId','lastName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','findAndCountAll','finally','getApplications','order','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','spread','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','CmList','DESC','user','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','defaults','redis','localhost','socket.io-emitter','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','json','apply','save','update','get','OpenchannelAccounts','stack','name','send','index','Pause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','nolimit','sort','where','filters','pick'];(function(_0x409353,_0xe9f04d){var _0x4f4b59=function(_0x64b587){while(--_0x64b587){_0x409353['push'](_0x409353['shift']());}};_0x4f4b59(++_0xe9f04d);}(_0x7fec,0x6e));var _0xc7fe=function(_0x55636e,_0x2b22fa){_0x55636e=_0x55636e-0x0;var _0x41ab83=_0x7fec[_0x55636e];return _0x41ab83;};'use strict';var emlformat=require(_0xc7fe('0x0'));var rimraf=require(_0xc7fe('0x1'));var zipdir=require(_0xc7fe('0x2'));var jsonpatch=require(_0xc7fe('0x3'));var rp=require(_0xc7fe('0x4'));var moment=require(_0xc7fe('0x5'));var BPromise=require(_0xc7fe('0x6'));var Mustache=require('mustache');var util=require(_0xc7fe('0x7'));var path=require('path');var sox=require(_0xc7fe('0x8'));var csv=require(_0xc7fe('0x9'));var ejs=require(_0xc7fe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc7fe('0xb'));var crypto=require(_0xc7fe('0xc'));var jsforce=require(_0xc7fe('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc7fe('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc7fe('0xe'));var authService=require(_0xc7fe('0xf'));var qs=require(_0xc7fe('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc7fe('0x11'));var logger=require('../../config/logger')(_0xc7fe('0x12'));var utils=require(_0xc7fe('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc7fe('0x14'))['db'];config['redis']=_[_0xc7fe('0x15')](config[_0xc7fe('0x16')],{'host':_0xc7fe('0x17'),'port':0x18eb});var socket=require(_0xc7fe('0x18'))(new Redis(config['redis']));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0xc7fe('0x19'));var client=jayson[_0xc7fe('0x1a')][_0xc7fe('0x1b')]({'port':0x232c});var client9002=jayson[_0xc7fe('0x1a')][_0xc7fe('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x353241,_0x388118,_0x8bc322,_0x52638f){return new BPromise(function(_0x57f40c,_0x4cab90){var _0x97c3ee=_0x52638f||client;return _0x97c3ee[_0xc7fe('0x1c')](_0x353241,_0x8bc322)[_0xc7fe('0x1d')](function(_0x14a3c7){logger[_0xc7fe('0x1e')](_0xc7fe('0x1f'),_0x388118,_0xc7fe('0x20'));logger['debug'](_0xc7fe('0x21'),_0x388118,'request\x20sent',JSON['stringify'](_0x14a3c7));if(_0x14a3c7[_0xc7fe('0x22')]){if(_0x14a3c7[_0xc7fe('0x22')][_0xc7fe('0x23')]===0x1f4){logger[_0xc7fe('0x22')](_0xc7fe('0x1f'),_0x388118,_0x14a3c7[_0xc7fe('0x22')][_0xc7fe('0x24')]);return _0x4cab90(_0x14a3c7[_0xc7fe('0x22')][_0xc7fe('0x24')]);}logger[_0xc7fe('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x388118,_0x14a3c7[_0xc7fe('0x22')][_0xc7fe('0x24')]);return _0x57f40c(_0x14a3c7['error'][_0xc7fe('0x24')]);}else{logger['info'](_0xc7fe('0x1f'),_0x388118,_0xc7fe('0x20'));_0x57f40c(_0x14a3c7[_0xc7fe('0x25')][_0xc7fe('0x24')]);}})[_0xc7fe('0x26')](function(_0x49927a){logger[_0xc7fe('0x22')](_0xc7fe('0x1f'),_0x388118,_0x49927a);_0x4cab90(_0x49927a);});});}function respondWithStatusCode(_0x1f3b30,_0x4842ce){_0x4842ce=_0x4842ce||0xcc;return function(_0x3cf61c){if(_0x3cf61c){return _0x1f3b30[_0xc7fe('0x27')](_0x4842ce);}return _0x1f3b30[_0xc7fe('0x28')](_0x4842ce)[_0xc7fe('0x29')]();};}function respondWithResult(_0x89594a,_0x6bb212){_0x6bb212=_0x6bb212||0xc8;return function(_0x425f40){if(_0x425f40){return _0x89594a[_0xc7fe('0x28')](_0x6bb212)['json'](_0x425f40);}};}function respondWithFilteredResult(_0x3e8767,_0x17f304){return function(_0x58fd1b){if(_0x58fd1b){var _0x390d86=typeof _0x17f304['offset']==='undefined'&&typeof _0x17f304[_0xc7fe('0x2a')]===_0xc7fe('0x2b');var _0x29218a=_0x58fd1b[_0xc7fe('0x2c')];var _0x31da5f=_0x390d86?0x0:_0x17f304[_0xc7fe('0x2d')];var _0x1f3918=_0x390d86?_0x58fd1b[_0xc7fe('0x2c')]:_0x17f304[_0xc7fe('0x2d')]+_0x17f304[_0xc7fe('0x2a')];var _0x349f55;if(_0x1f3918>=_0x29218a){_0x1f3918=_0x29218a;_0x349f55=0xc8;}else{_0x349f55=0xce;}_0x3e8767[_0xc7fe('0x28')](_0x349f55);return _0x3e8767[_0xc7fe('0x2e')](_0xc7fe('0x2f'),_0x31da5f+'-'+_0x1f3918+'/'+_0x29218a)[_0xc7fe('0x30')](_0x58fd1b);}return null;};}function patchUpdates(_0x1d22b0){return function(_0x54abae){try{jsonpatch[_0xc7fe('0x31')](_0x54abae,_0x1d22b0,!![]);}catch(_0x280789){return BPromise['reject'](_0x280789);}return _0x54abae[_0xc7fe('0x32')]();};}function saveUpdates(_0x521f77,_0x39c2ae){return function(_0xef38e6){if(_0xef38e6){return _0xef38e6[_0xc7fe('0x33')](_0x521f77)['then'](function(_0x502a42){return _0x502a42;});}return null;};}function removeEntity(_0x5425a9,_0x1d042a){return function(_0x317ee2){if(_0x317ee2){return _0x317ee2['destroy']()[_0xc7fe('0x1d')](function(){var _0x3702d4=_0x317ee2[_0xc7fe('0x34')]({'plain':!![]});var _0x2bd207=_0xc7fe('0x35');return db['UserProfileResource']['destroy']({'where':{'type':_0x2bd207,'resourceId':_0x3702d4['id']}})[_0xc7fe('0x1d')](function(){return _0x317ee2;});})['then'](function(){_0x5425a9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x24b40e,_0x1a6482){return function(_0x13b623){if(!_0x13b623){_0x24b40e[_0xc7fe('0x27')](0x194);}return _0x13b623;};}function handleError(_0x54e3f0,_0x4cce17){_0x4cce17=_0x4cce17||0x1f4;return function(_0x272d43){logger['error'](_0x272d43[_0xc7fe('0x36')]);if(_0x272d43['name']){delete _0x272d43[_0xc7fe('0x37')];}_0x54e3f0[_0xc7fe('0x28')](_0x4cce17)[_0xc7fe('0x38')](_0x272d43);};}exports[_0xc7fe('0x39')]=function(_0x15aa55,_0x7b6fa0){var _0x295ed7={'include':[{'model':db[_0xc7fe('0x3a')],'as':'mandatoryDispositionPause'}]},_0x51a1d6={},_0x1e9767={'count':0x0,'rows':[]};var _0x1ee061=_[_0xc7fe('0x3b')](db[_0xc7fe('0x3c')][_0xc7fe('0x3d')],function(_0x40c8e4){return{'name':_0x40c8e4[_0xc7fe('0x3e')],'type':_0x40c8e4[_0xc7fe('0x3f')][_0xc7fe('0x40')]};});_0x51a1d6[_0xc7fe('0x41')]=_[_0xc7fe('0x3b')](_0x1ee061,'name');_0x51a1d6[_0xc7fe('0x42')]=_[_0xc7fe('0x43')](_0x15aa55[_0xc7fe('0x42')]);_0x51a1d6['filters']=_['intersection'](_0x51a1d6[_0xc7fe('0x41')],_0x51a1d6[_0xc7fe('0x42')]);_0x295ed7[_0xc7fe('0x44')]=_[_0xc7fe('0x45')](_0x51a1d6[_0xc7fe('0x41')],qs[_0xc7fe('0x46')](_0x15aa55[_0xc7fe('0x42')][_0xc7fe('0x46')]));_0x295ed7['attributes']=_0x295ed7[_0xc7fe('0x44')]['length']?_0x295ed7[_0xc7fe('0x44')]:_0x51a1d6[_0xc7fe('0x41')];if(!_0x15aa55[_0xc7fe('0x42')]['hasOwnProperty'](_0xc7fe('0x47'))){_0x295ed7[_0xc7fe('0x2a')]=qs[_0xc7fe('0x2a')](_0x15aa55[_0xc7fe('0x42')][_0xc7fe('0x2a')]);_0x295ed7[_0xc7fe('0x2d')]=qs[_0xc7fe('0x2d')](_0x15aa55[_0xc7fe('0x42')]['offset']);}_0x295ed7['order']=qs[_0xc7fe('0x48')](_0x15aa55['query'][_0xc7fe('0x48')]);_0x295ed7[_0xc7fe('0x49')]=qs[_0xc7fe('0x4a')](_[_0xc7fe('0x4b')](_0x15aa55['query'],_0x51a1d6[_0xc7fe('0x4a')]),_0x1ee061);if(_0x15aa55['query'][_0xc7fe('0x4c')]){_0x295ed7[_0xc7fe('0x49')]=_[_0xc7fe('0x4d')](_0x295ed7[_0xc7fe('0x49')],{'$or':_['map'](_0x1ee061,function(_0x180a9a){if(_0x180a9a['type']!==_0xc7fe('0x4e')){var _0x14677b={};_0x14677b[_0x180a9a[_0xc7fe('0x37')]]={'$like':'%'+_0x15aa55[_0xc7fe('0x42')][_0xc7fe('0x4c')]+'%'};return _0x14677b;}})});}_0x295ed7=_[_0xc7fe('0x4d')]({},_0x295ed7,_0x15aa55['options']);var _0x179c3c={'where':_0x295ed7['where']};return db[_0xc7fe('0x3c')][_0xc7fe('0x2c')](_0x179c3c)[_0xc7fe('0x1d')](function(_0x164dc7){_0x1e9767['count']=_0x164dc7;if(_0x15aa55[_0xc7fe('0x42')][_0xc7fe('0x4f')]){_0x295ed7[_0xc7fe('0x50')]=[{'all':!![]}];}return db[_0xc7fe('0x3c')][_0xc7fe('0x51')](_0x295ed7);})[_0xc7fe('0x1d')](function(_0x10131a){_0x1e9767[_0xc7fe('0x52')]=_0x10131a;return _0x1e9767;})[_0xc7fe('0x1d')](respondWithFilteredResult(_0x7b6fa0,_0x295ed7))['catch'](handleError(_0x7b6fa0,null));};exports['show']=function(_0x379389,_0x2a9cff){var _0x3d1151={'raw':![],'where':{'id':_0x379389['params']['id']},'include':[{'model':db[_0xc7fe('0x3a')],'as':_0xc7fe('0x53')}]},_0x1eb656={};_0x1eb656['model']=_[_0xc7fe('0x43')](db[_0xc7fe('0x3c')][_0xc7fe('0x3d')]);_0x1eb656[_0xc7fe('0x42')]=_[_0xc7fe('0x43')](_0x379389['query']);_0x1eb656['filters']=_[_0xc7fe('0x45')](_0x1eb656[_0xc7fe('0x41')],_0x1eb656[_0xc7fe('0x42')]);_0x3d1151[_0xc7fe('0x44')]=_[_0xc7fe('0x45')](_0x1eb656[_0xc7fe('0x41')],qs[_0xc7fe('0x46')](_0x379389[_0xc7fe('0x42')][_0xc7fe('0x46')]));_0x3d1151[_0xc7fe('0x44')]=_0x3d1151[_0xc7fe('0x44')][_0xc7fe('0x54')]?_0x3d1151['attributes']:_0x1eb656[_0xc7fe('0x41')];if(_0x379389[_0xc7fe('0x42')]['includeAll']){_0x3d1151['include']=[{'all':!![]}];}_0x3d1151=_[_0xc7fe('0x4d')]({},_0x3d1151,_0x379389[_0xc7fe('0x55')]);return db[_0xc7fe('0x3c')][_0xc7fe('0x56')](_0x3d1151)[_0xc7fe('0x1d')](handleEntityNotFound(_0x2a9cff,null))[_0xc7fe('0x1d')](respondWithResult(_0x2a9cff,null))[_0xc7fe('0x26')](handleError(_0x2a9cff,null));};exports[_0xc7fe('0x57')]=function(_0x19d3a2,_0xaabef3){return db[_0xc7fe('0x3c')]['create'](_0x19d3a2['body'],{})[_0xc7fe('0x1d')](function(_0x1ca202){var _0x4f306a=_0x19d3a2['user'][_0xc7fe('0x34')]({'plain':!![]});if(!_0x4f306a)throw new Error(_0xc7fe('0x58'));if(_0x4f306a[_0xc7fe('0x59')]==='user'){var _0x61939f=_0x1ca202[_0xc7fe('0x34')]({'plain':!![]});var _0xeeedae=_0xc7fe('0x35');return db[_0xc7fe('0x5a')]['find']({'where':{'name':_0xeeedae,'userProfileId':_0x4f306a['userProfileId']},'raw':!![]})[_0xc7fe('0x1d')](function(_0xb67101){if(_0xb67101&&_0xb67101['autoAssociation']===0x0){return db[_0xc7fe('0x5b')]['create']({'name':_0x61939f[_0xc7fe('0x37')],'resourceId':_0x61939f['id'],'type':_0xb67101[_0xc7fe('0x37')],'sectionId':_0xb67101['id']},{})[_0xc7fe('0x1d')](function(){return _0x1ca202;});}else{return _0x1ca202;}})[_0xc7fe('0x26')](function(_0x1057a4){logger['error'](_0xc7fe('0x5c'),_0x1057a4);throw _0x1057a4;});}return _0x1ca202;})[_0xc7fe('0x1d')](respondWithResult(_0xaabef3,0xc9))[_0xc7fe('0x26')](handleError(_0xaabef3,null));};exports[_0xc7fe('0x33')]=function(_0xb68d9d,_0xc05c32){if(_0xb68d9d['body']['id']){delete _0xb68d9d[_0xc7fe('0x5d')]['id'];}return db[_0xc7fe('0x3c')][_0xc7fe('0x56')]({'where':{'id':_0xb68d9d['params']['id']},'include':[{'model':db[_0xc7fe('0x3a')],'as':_0xc7fe('0x53')}]})[_0xc7fe('0x1d')](handleEntityNotFound(_0xc05c32,null))[_0xc7fe('0x1d')](saveUpdates(_0xb68d9d[_0xc7fe('0x5d')],null))[_0xc7fe('0x1d')](respondWithResult(_0xc05c32,null))['catch'](handleError(_0xc05c32,null));};exports[_0xc7fe('0x5e')]=function(_0x1146fe,_0x367256){return db['OpenchannelAccount'][_0xc7fe('0x56')]({'where':{'id':_0x1146fe['params']['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x367256,null))[_0xc7fe('0x1d')](removeEntity(_0x367256,null))[_0xc7fe('0x26')](handleError(_0x367256,null));};exports['describe']=function(_0x1d6798,_0x2606e7){return db[_0xc7fe('0x3c')][_0xc7fe('0x5f')]()[_0xc7fe('0x1d')](respondWithResult(_0x2606e7,null))[_0xc7fe('0x26')](handleError(_0x2606e7,null));};exports[_0xc7fe('0x60')]=function(_0x6faef5,_0x4d5752,_0x34558b){if(_0x6faef5[_0xc7fe('0x5d')]['id']){delete _0x6faef5['body']['id'];}return db[_0xc7fe('0x3c')][_0xc7fe('0x56')]({'where':{'id':_0x6faef5['params']['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x4d5752,null))[_0xc7fe('0x1d')](function(_0x4b6562){if(_0x4b6562){_0x6faef5['body'][_0xc7fe('0x61')]=_0x4b6562['id'];return db[_0xc7fe('0x62')][_0xc7fe('0x57')](_0x6faef5[_0xc7fe('0x5d')]);}})[_0xc7fe('0x1d')](respondWithResult(_0x4d5752,null))[_0xc7fe('0x26')](handleError(_0x4d5752,null));};exports['getDispositions']=function(_0x4c7f9d,_0x2b0d2d,_0x3af384){var _0x58d5b8={'raw':![],'where':{}};var _0x1bf5da={};var _0x2e8971={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xc7fe('0x63')]({'where':{'id':_0x4c7f9d[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x2b0d2d,null))[_0xc7fe('0x1d')](function(_0x1da99e){if(_0x1da99e){_0x1bf5da['model']=_['keys'](db[_0xc7fe('0x62')]['rawAttributes']);_0x1bf5da[_0xc7fe('0x42')]=_[_0xc7fe('0x43')](_0x4c7f9d[_0xc7fe('0x42')]);_0x1bf5da['filters']=_[_0xc7fe('0x45')](_0x1bf5da['model'],_0x1bf5da[_0xc7fe('0x42')]);_0x58d5b8[_0xc7fe('0x44')]=_[_0xc7fe('0x45')](_0x1bf5da['model'],qs[_0xc7fe('0x46')](_0x4c7f9d[_0xc7fe('0x42')][_0xc7fe('0x46')]));_0x58d5b8[_0xc7fe('0x44')]=_0x58d5b8['attributes']['length']?_0x58d5b8[_0xc7fe('0x44')]:_0x1bf5da[_0xc7fe('0x41')];if(!_0x4c7f9d[_0xc7fe('0x42')][_0xc7fe('0x65')]('nolimit')){_0x58d5b8[_0xc7fe('0x2a')]=qs[_0xc7fe('0x2a')](_0x4c7f9d[_0xc7fe('0x42')][_0xc7fe('0x2a')]);_0x58d5b8[_0xc7fe('0x2d')]=qs[_0xc7fe('0x2d')](_0x4c7f9d[_0xc7fe('0x42')][_0xc7fe('0x2d')]);}_0x58d5b8['order']=qs[_0xc7fe('0x48')](_0x4c7f9d['query'][_0xc7fe('0x48')]);_0x58d5b8[_0xc7fe('0x49')]=qs[_0xc7fe('0x4a')](_['pick'](_0x4c7f9d[_0xc7fe('0x42')],_0x1bf5da[_0xc7fe('0x4a')]));_0x58d5b8[_0xc7fe('0x49')][_0xc7fe('0x61')]=_0x1da99e['id'];if(_0x4c7f9d[_0xc7fe('0x42')]['filter']){_0x58d5b8[_0xc7fe('0x49')]=_['merge'](_0x58d5b8[_0xc7fe('0x49')],{'$or':_[_0xc7fe('0x3b')](_0x58d5b8[_0xc7fe('0x44')],function(_0x42c0ba){var _0xacb65d={};_0xacb65d[_0x42c0ba]={'$like':'%'+_0x4c7f9d[_0xc7fe('0x42')][_0xc7fe('0x4c')]+'%'};return _0xacb65d;})});}_0x58d5b8=_[_0xc7fe('0x4d')]({},_0x58d5b8,_0x4c7f9d['options']);return db['Disposition'][_0xc7fe('0x2c')]({'where':_0x58d5b8[_0xc7fe('0x49')]})['then'](function(_0x241612){_0x2e8971[_0xc7fe('0x2c')]=_0x241612;if(_0x4c7f9d[_0xc7fe('0x42')][_0xc7fe('0x4f')]){_0x58d5b8['include']=[{'all':!![]}];}return db[_0xc7fe('0x62')][_0xc7fe('0x51')](_0x58d5b8);})['then'](function(_0x1f6a4d){_0x2e8971[_0xc7fe('0x52')]=_0x1f6a4d;return _0x2e8971;});}})[_0xc7fe('0x1d')](respondWithFilteredResult(_0x2b0d2d,_0x58d5b8))['catch'](handleError(_0x2b0d2d,null));};exports[_0xc7fe('0x66')]=function(_0x596138,_0x3dba0d,_0x2ec635){return db[_0xc7fe('0x3c')][_0xc7fe('0x56')]({'where':{'id':_0x596138[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x3dba0d,null))[_0xc7fe('0x1d')](function(_0x5ef8e0){if(_0x5ef8e0){return _0x5ef8e0['removeDispositions'](_0x596138[_0xc7fe('0x42')][_0xc7fe('0x67')]);}})[_0xc7fe('0x1d')](respondWithStatusCode(_0x3dba0d,null))[_0xc7fe('0x26')](handleError(_0x3dba0d,null));};exports['addAnswer']=function(_0x2b9f49,_0x696fe8,_0x327346){if(_0x2b9f49[_0xc7fe('0x5d')]['id']){delete _0x2b9f49[_0xc7fe('0x5d')]['id'];}return db[_0xc7fe('0x3c')][_0xc7fe('0x56')]({'where':{'id':_0x2b9f49[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x696fe8,null))[_0xc7fe('0x1d')](function(_0x4852a7){if(_0x4852a7){_0x2b9f49['body'][_0xc7fe('0x61')]=_0x4852a7['id'];return db[_0xc7fe('0x68')]['create'](_0x2b9f49[_0xc7fe('0x5d')]);}})['then'](respondWithResult(_0x696fe8,null))[_0xc7fe('0x26')](handleError(_0x696fe8,null));};exports['getAnswers']=function(_0x19fcf8,_0x28df1f,_0x102af7){var _0x5d49e8={'raw':![],'where':{}};var _0x38bd3d={};var _0x340436={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xc7fe('0x63')]({'where':{'id':_0x19fcf8[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x28df1f,null))['then'](function(_0x140f95){if(_0x140f95){_0x38bd3d[_0xc7fe('0x41')]=_[_0xc7fe('0x43')](db[_0xc7fe('0x68')]['rawAttributes']);_0x38bd3d[_0xc7fe('0x42')]=_[_0xc7fe('0x43')](_0x19fcf8[_0xc7fe('0x42')]);_0x38bd3d['filters']=_[_0xc7fe('0x45')](_0x38bd3d[_0xc7fe('0x41')],_0x38bd3d['query']);_0x5d49e8[_0xc7fe('0x44')]=_['intersection'](_0x38bd3d[_0xc7fe('0x41')],qs[_0xc7fe('0x46')](_0x19fcf8[_0xc7fe('0x42')]['fields']));_0x5d49e8['attributes']=_0x5d49e8['attributes']['length']?_0x5d49e8['attributes']:_0x38bd3d['model'];if(!_0x19fcf8[_0xc7fe('0x42')][_0xc7fe('0x65')](_0xc7fe('0x47'))){_0x5d49e8['limit']=qs[_0xc7fe('0x2a')](_0x19fcf8[_0xc7fe('0x42')][_0xc7fe('0x2a')]);_0x5d49e8[_0xc7fe('0x2d')]=qs[_0xc7fe('0x2d')](_0x19fcf8[_0xc7fe('0x42')][_0xc7fe('0x2d')]);}_0x5d49e8['order']=qs[_0xc7fe('0x48')](_0x19fcf8[_0xc7fe('0x42')]['sort']);_0x5d49e8[_0xc7fe('0x49')]=qs['filters'](_[_0xc7fe('0x4b')](_0x19fcf8[_0xc7fe('0x42')],_0x38bd3d[_0xc7fe('0x4a')]));_0x5d49e8['where'][_0xc7fe('0x61')]=_0x140f95['id'];if(_0x19fcf8[_0xc7fe('0x42')]['filter']){_0x5d49e8[_0xc7fe('0x49')]=_[_0xc7fe('0x4d')](_0x5d49e8[_0xc7fe('0x49')],{'$or':_[_0xc7fe('0x3b')](_0x5d49e8['attributes'],function(_0x6e5353){var _0x24b935={};_0x24b935[_0x6e5353]={'$like':'%'+_0x19fcf8[_0xc7fe('0x42')][_0xc7fe('0x4c')]+'%'};return _0x24b935;})});}_0x5d49e8=_[_0xc7fe('0x4d')]({},_0x5d49e8,_0x19fcf8[_0xc7fe('0x55')]);return db['CannedAnswer']['count']({'where':_0x5d49e8[_0xc7fe('0x49')]})[_0xc7fe('0x1d')](function(_0x2dabf2){_0x340436['count']=_0x2dabf2;if(_0x19fcf8[_0xc7fe('0x42')][_0xc7fe('0x4f')]){_0x5d49e8[_0xc7fe('0x50')]=[{'all':!![]}];}return db[_0xc7fe('0x68')][_0xc7fe('0x51')](_0x5d49e8);})['then'](function(_0x369950){_0x340436['rows']=_0x369950;return _0x340436;});}})[_0xc7fe('0x1d')](respondWithFilteredResult(_0x28df1f,_0x5d49e8))[_0xc7fe('0x26')](handleError(_0x28df1f,null));};exports['removeAnswers']=function(_0x398d9c,_0x5af9e0,_0x25d526){return db[_0xc7fe('0x3c')][_0xc7fe('0x56')]({'where':{'id':_0x398d9c[_0xc7fe('0x64')]['id']}})['then'](handleEntityNotFound(_0x5af9e0,null))[_0xc7fe('0x1d')](function(_0x2389fd){if(_0x2389fd){return _0x2389fd[_0xc7fe('0x69')](_0x398d9c['query'][_0xc7fe('0x67')]);}})[_0xc7fe('0x1d')](respondWithStatusCode(_0x5af9e0,null))['catch'](handleError(_0x5af9e0,null));};exports[_0xc7fe('0x6a')]=function(_0x388703,_0x543cc7,_0x24274c){var _0x2cde09={'body':_0x388703[_0xc7fe('0x5d')],'channel':_0xc7fe('0x6b')};var _0x2389d6=[];var _0x157596=[];var _0xd8c5f5={};var _0x5901d3=![];return db[_0xc7fe('0x6c')][_0xc7fe('0x5f')]()['then'](function(_0x1e5dae){if(!_0x1e5dae){throw new db[(_0xc7fe('0x6d'))]['ValidationError'](_0xc7fe('0x6e'));}_0x2389d6=_[_0xc7fe('0x6f')](_[_0xc7fe('0x43')](_0x1e5dae),[_0xc7fe('0x70'),_0xc7fe('0x71')]);_0x157596=_[_0xc7fe('0x6f')](_['keys'](_0x1e5dae),[_0xc7fe('0x70'),_0xc7fe('0x71'),'CompanyId','ListId']);if(_0x388703['body']['id']){delete _0x388703[_0xc7fe('0x5d')]['id'];}if(_['isNil'](_0x388703[_0xc7fe('0x5d')]['from'])){throw new db[(_0xc7fe('0x6d'))][(_0xc7fe('0x72'))](_0xc7fe('0x73'));}if(_['isNil'](_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x5d')])||_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x5d')]===''){throw new db['Sequelize'][(_0xc7fe('0x72'))](_0xc7fe('0x74'));}if(_[_0xc7fe('0x75')](_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x76')])){throw new db[(_0xc7fe('0x6d'))][(_0xc7fe('0x72'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x157596);}if(!_['includes'](_0x157596,_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x76')])){throw new db[(_0xc7fe('0x6d'))][(_0xc7fe('0x72'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x157596);}_0xd8c5f5[_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x76')]]=_0x388703[_0xc7fe('0x5d')]['from'];})[_0xc7fe('0x1d')](function(){return db[_0xc7fe('0x3c')]['find']({'where':{'id':_0x388703[_0xc7fe('0x64')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xc7fe('0x6c')],'as':_0xc7fe('0x77'),'where':_0xd8c5f5,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xc7fe('0x78')],'as':_0xc7fe('0x79')}]});})[_0xc7fe('0x1d')](handleEntityNotFound(_0x543cc7,null))[_0xc7fe('0x1d')](function(_0x55d7d8){if(_0x55d7d8&&_0x55d7d8['List']){_0x2cde09[_0xc7fe('0x7a')]=_0x55d7d8;_0x2cde09[_0xc7fe('0x7b')]=_0x55d7d8['Applications'];_0x2cde09[_0xc7fe('0x7c')]=_0x55d7d8[_0xc7fe('0x7d')];_0x2cde09[_0xc7fe('0x7b')]=_[_0xc7fe('0x7e')](_0x2cde09[_0xc7fe('0x7b')],[_0xc7fe('0x7f')],[_0xc7fe('0x80')]);if(_0x2cde09['account']['Applications']){delete _0x2cde09[_0xc7fe('0x7a')][_0xc7fe('0x79')];}if(_0x2cde09['account'][_0xc7fe('0x7d')]&&_0x2cde09[_0xc7fe('0x7a')][_0xc7fe('0x7d')][_0xc7fe('0x77')][_0xc7fe('0x54')]){return _0x2cde09[_0xc7fe('0x7a')]['List'][_0xc7fe('0x77')][0x0];}var _0x3a7d39=_[_0xc7fe('0x15')](_0x388703[_0xc7fe('0x5d')],{'firstName':_0x388703[_0xc7fe('0x5d')]['from'],'ListId':_0x55d7d8[_0xc7fe('0x81')]});_0x3a7d39[_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x76')]]=_0x388703['body']['from'];return db['CmContact'][_0xc7fe('0x57')](_0x3a7d39,{'fields':_0x2389d6,'raw':!![]});}})['then'](handleEntityNotFound(_0x543cc7,null))[_0xc7fe('0x1d')](function(_0x8a5792){_0x2cde09[_0xc7fe('0x82')]=_0x8a5792;if(_0x8a5792){var _0x58afc3={'ContactId':_0x8a5792['id'],'OpenchannelAccountId':_0x388703[_0xc7fe('0x64')]['id'],'from':(_0x8a5792[_0xc7fe('0x83')]||'')+'\x20'+(_0x8a5792['lastName']||'')};var _0x300067={'OpenchannelAccountId':_0x388703[_0xc7fe('0x64')]['id'],'closed':![]};if(_0x388703['body'][_0xc7fe('0x84')]){_0x300067[_0xc7fe('0x84')]=_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x84')];return db['OpenchannelInteraction'][_0xc7fe('0x56')]({'where':_0x300067})[_0xc7fe('0x1d')](function(_0x14f134){if(_0x14f134){return[_0x14f134,![]];}_0x58afc3[_0xc7fe('0x84')]=_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x84')];_0x58afc3[_0xc7fe('0x85')]=_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x85')];return db[_0xc7fe('0x86')][_0xc7fe('0x57')](_0x58afc3)['then'](function(_0x37a38c){return[_0x37a38c,!![]];});});}else{_0x300067[_0xc7fe('0x84')]=null;}_0x300067[_0xc7fe('0x87')]=_0x8a5792['id'];return db[_0xc7fe('0x86')][_0xc7fe('0x56')]({'where':_0x300067})['then'](function(_0x808364){if(_0x808364){return[_0x808364,![]];}return db[_0xc7fe('0x86')]['create'](_0x58afc3)[_0xc7fe('0x1d')](function(_0x3677c9){return[_0x3677c9,!![]];});});}})['spread'](function(_0x31d511,_0x265156){if(_0x31d511){_0x5901d3=_0x265156;if(!_0x265156){var _0x599213={'from':(_0x2cde09[_0xc7fe('0x82')][_0xc7fe('0x83')]||'')+'\x20'+(_0x2cde09[_0xc7fe('0x82')][_0xc7fe('0x88')]||'')};if(_0x388703[_0xc7fe('0x5d')]['threadId']&&_0x388703[_0xc7fe('0x5d')]['messageId']&&_0x388703['body'][_0xc7fe('0x84')]!=_0x388703[_0xc7fe('0x5d')]['messageId']){_0x599213['threadId']=_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x89')];}return _0x31d511[_0xc7fe('0x33')](_0x599213);}else{return _0x31d511;}}})[_0xc7fe('0x1d')](function(_0x1cddb5){_0x2cde09[_0xc7fe('0x8a')]=_0x1cddb5[_0xc7fe('0x34')]({'plain':!![]});_0x2cde09['interaction'][_0xc7fe('0x8b')]=_0x5901d3;if(_0x2cde09['interaction'][_0xc7fe('0x8b')]){if(_0x2cde09['account'][_0xc7fe('0x8c')]){_0x2cde09[_0xc7fe('0x7b')][_0xc7fe('0x8d')]({'id':0x0,'priority':_0x2cde09[_0xc7fe('0x7b')][_0xc7fe('0x54')]+0x1,'app':_0xc7fe('0x8e'),'appdata':_0xc7fe('0x8f'),'interval':_0xc7fe('0x90')});}}return db[_0xc7fe('0x91')][_0xc7fe('0x57')]({'body':_0x388703[_0xc7fe('0x5d')][_0xc7fe('0x5d')],'OpenchannelAccountId':_0x388703['params']['id'],'OpenchannelInteractionId':_0x1cddb5['id'],'direction':'in','ContactId':_0x2cde09[_0xc7fe('0x82')]['id'],'AttachmentId':_0x388703['body'][_0xc7fe('0x92')]});})['then'](function(_0x16cae2){_0x2cde09[_0xc7fe('0x24')]=_0x16cae2;if(_0x2cde09['interaction'][_0xc7fe('0x93')]){return db['User'][_0xc7fe('0x56')]({'attributes':['id',_0xc7fe('0x37')],'where':{'id':_0x2cde09['interaction']['UserId']}})[_0xc7fe('0x1d')](function(_0x322e0e){if(_0x322e0e){_0x2cde09[_0xc7fe('0x7b')][_0xc7fe('0x94')]({'id':0x0,'priority':0x0,'app':_0xc7fe('0x95'),'appdata':_0x322e0e[_0xc7fe('0x37')]+','+(_0x2cde09['account'][_0xc7fe('0x96')]||0xa),'interval':_0xc7fe('0x90')});_0x2cde09[_0xc7fe('0x97')]=![];}return respondWithRpcPromise('Start',_0xc7fe('0x98'),_0x2cde09);});}return respondWithRpcPromise('Start',_0xc7fe('0x98'),_0x2cde09);})[_0xc7fe('0x1d')](function(_0x13e7d8){respondWithRpcPromise(_0xc7fe('0x99'),_0xc7fe('0x99'),{'event':_0xc7fe('0x6a'),'message':_0x13e7d8},client9002);return _0x13e7d8;})['then'](respondWithResult(_0x543cc7,null))['catch'](handleError(_0x543cc7,null));};exports[_0xc7fe('0x9a')]=function(_0x49b235,_0x12e7a1){var _0x5d6ffa=_0x49b235[_0xc7fe('0x64')]['id'];var _0x1f0646=_0x49b235[_0xc7fe('0x5d')];var _0x574fcd=0xc8;var _0x1599ec=null;return db[_0xc7fe('0x9b')][_0xc7fe('0x9c')]({'isolationLevel':db[_0xc7fe('0x9b')][_0xc7fe('0x9d')]['ISOLATION_LEVELS'][_0xc7fe('0x9e')]},function(_0x17f2b0){return db[_0xc7fe('0x3c')][_0xc7fe('0x63')]({'where':{'id':_0x5d6ffa},'transaction':_0x17f2b0})[_0xc7fe('0x1d')](function(_0x1be959){if(_0x1be959){return db['OpenchannelApplication']['destroy']({'where':{'OpenchannelAccountId':_0x5d6ffa},'transaction':_0x17f2b0})[_0xc7fe('0x1d')](function(){var _0x1d65e9=_[_0xc7fe('0x3b')](_0x1f0646,function(_0x2b033){_0x2b033['OpenchannelAccountId']=_0x5d6ffa;return _0x2b033;});return db['OpenchannelApplication']['bulkCreate'](_0x1d65e9,{'transaction':_0x17f2b0});});}else{_0x574fcd=0x194;_0x1599ec=[];}});})[_0xc7fe('0x1d')](function(){if(_0x574fcd!==0x194){return db[_0xc7fe('0x78')][_0xc7fe('0x9f')]({'where':{'OpenchannelAccountId':_0x5d6ffa},'order':_0xc7fe('0x7f')})[_0xc7fe('0x1d')](function(_0x199b2d){_0x1599ec=_0x199b2d;});}})[_0xc7fe('0x26')](function(_0x30e4d7){_0x574fcd=0x1f4;logger[_0xc7fe('0x22')](_0x30e4d7[_0xc7fe('0x36')]);if(_0x30e4d7[_0xc7fe('0x37')]){delete _0x30e4d7[_0xc7fe('0x37')];}_0x1599ec=_0x30e4d7;})[_0xc7fe('0xa0')](function(){if(_0x1599ec===null){_0x12e7a1[_0xc7fe('0x27')](_0x574fcd);}else{if(_0x574fcd===0x1f4){_0x12e7a1[_0xc7fe('0x28')](_0x574fcd)[_0xc7fe('0x38')](_0x1599ec);}else{_0x12e7a1[_0xc7fe('0x28')](_0x574fcd)['json'](_0x1599ec);}}});};exports[_0xc7fe('0xa1')]=function(_0x4ff62c,_0x24fd2e,_0x534caa){var _0x7bce2a={};var _0x3f506a={};var _0x55cd7d;var _0x4ef09e;return db[_0xc7fe('0x3c')][_0xc7fe('0x63')]({'where':{'id':_0x4ff62c[_0xc7fe('0x64')]['id']}})['then'](handleEntityNotFound(_0x24fd2e,null))[_0xc7fe('0x1d')](function(_0x2a8eb9){if(_0x2a8eb9){_0x55cd7d=_0x2a8eb9;_0x3f506a[_0xc7fe('0x41')]=_[_0xc7fe('0x43')](db[_0xc7fe('0x78')][_0xc7fe('0x3d')]);_0x3f506a[_0xc7fe('0x42')]=_[_0xc7fe('0x43')](_0x4ff62c[_0xc7fe('0x42')]);_0x3f506a[_0xc7fe('0x4a')]=_[_0xc7fe('0x45')](_0x3f506a[_0xc7fe('0x41')],_0x3f506a[_0xc7fe('0x42')]);_0x7bce2a[_0xc7fe('0x44')]=_[_0xc7fe('0x45')](_0x3f506a[_0xc7fe('0x41')],qs[_0xc7fe('0x46')](_0x4ff62c[_0xc7fe('0x42')][_0xc7fe('0x46')]));_0x7bce2a[_0xc7fe('0x44')]=_0x7bce2a[_0xc7fe('0x44')][_0xc7fe('0x54')]?_0x7bce2a['attributes']:_0x3f506a[_0xc7fe('0x41')];_0x7bce2a[_0xc7fe('0xa2')]=qs[_0xc7fe('0x48')](_0x4ff62c[_0xc7fe('0x42')][_0xc7fe('0x48')]);_0x7bce2a['where']=qs[_0xc7fe('0x4a')](_[_0xc7fe('0x4b')](_0x4ff62c[_0xc7fe('0x42')],_0x3f506a[_0xc7fe('0x4a')]));if(_0x4ff62c[_0xc7fe('0x42')][_0xc7fe('0x4c')]){_0x7bce2a[_0xc7fe('0x49')]=_[_0xc7fe('0x4d')](_0x7bce2a[_0xc7fe('0x49')],{'$or':_[_0xc7fe('0x3b')](_0x7bce2a['attributes'],function(_0x298a12){var _0x5f2bf7={};_0x5f2bf7[_0x298a12]={'$like':'%'+_0x4ff62c[_0xc7fe('0x42')][_0xc7fe('0x4c')]+'%'};return _0x5f2bf7;})});}_0x7bce2a=_[_0xc7fe('0x4d')]({},_0x7bce2a,_0x4ff62c[_0xc7fe('0x55')]);return _0x55cd7d[_0xc7fe('0xa1')](_0x7bce2a);}})[_0xc7fe('0x1d')](function(_0x1fbf59){if(_0x1fbf59){_0x4ef09e=_0x1fbf59[_0xc7fe('0x54')];if(!_0x4ff62c[_0xc7fe('0x42')][_0xc7fe('0x65')](_0xc7fe('0x47'))){_0x7bce2a[_0xc7fe('0x2a')]=qs['limit'](_0x4ff62c[_0xc7fe('0x42')]['limit']);_0x7bce2a['offset']=qs[_0xc7fe('0x2d')](_0x4ff62c[_0xc7fe('0x42')][_0xc7fe('0x2d')]);}return _0x55cd7d['getApplications'](_0x7bce2a);}})[_0xc7fe('0x1d')](function(_0x5eb677){if(_0x5eb677){return _0x5eb677?{'count':_0x4ef09e,'rows':_0x5eb677}:null;}})[_0xc7fe('0x1d')](respondWithResult(_0x24fd2e,null))[_0xc7fe('0x26')](handleError(_0x24fd2e,null));};exports['getInteractions']=function(_0x4337ed,_0x323463,_0x63dac4){var _0x118875={'raw':![],'where':{}};var _0x2747c6={};var _0x3d6082={'count':0x0,'rows':[]};return db[_0xc7fe('0x3c')][_0xc7fe('0x63')]({'where':{'id':_0x4337ed[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x323463,null))[_0xc7fe('0x1d')](function(_0x1785e0){if(_0x1785e0){_0x2747c6[_0xc7fe('0x41')]=_[_0xc7fe('0x43')](db[_0xc7fe('0x86')][_0xc7fe('0x3d')]);_0x2747c6[_0xc7fe('0x42')]=_[_0xc7fe('0x43')](_0x4337ed[_0xc7fe('0x42')]);_0x2747c6['filters']=_['intersection'](_0x2747c6['model'],_0x2747c6[_0xc7fe('0x42')]);_0x118875['attributes']=_[_0xc7fe('0x45')](_0x2747c6['model'],qs[_0xc7fe('0x46')](_0x4337ed[_0xc7fe('0x42')][_0xc7fe('0x46')]));_0x118875[_0xc7fe('0x44')]=_0x118875[_0xc7fe('0x44')][_0xc7fe('0x54')]?_0x118875[_0xc7fe('0x44')]:_0x2747c6[_0xc7fe('0x41')];if(!_0x4337ed['query'][_0xc7fe('0x65')](_0xc7fe('0x47'))){_0x118875[_0xc7fe('0x2a')]=qs[_0xc7fe('0x2a')](_0x4337ed[_0xc7fe('0x42')][_0xc7fe('0x2a')]);_0x118875[_0xc7fe('0x2d')]=qs[_0xc7fe('0x2d')](_0x4337ed[_0xc7fe('0x42')][_0xc7fe('0x2d')]);}_0x118875[_0xc7fe('0xa2')]=qs[_0xc7fe('0x48')](_0x4337ed[_0xc7fe('0x42')][_0xc7fe('0x48')]);_0x118875[_0xc7fe('0x49')]=qs[_0xc7fe('0x4a')](_[_0xc7fe('0x4b')](_0x4337ed['query'],_0x2747c6[_0xc7fe('0x4a')]));_0x118875[_0xc7fe('0x49')][_0xc7fe('0x61')]=_0x1785e0['id'];if(_0x4337ed['query']['filter']){_0x118875[_0xc7fe('0x49')]=_[_0xc7fe('0x4d')](_0x118875['where'],{'$or':_[_0xc7fe('0x3b')](_0x118875[_0xc7fe('0x44')],function(_0x268eb3){var _0xe93fa7={};_0xe93fa7[_0x268eb3]={'$like':'%'+_0x4337ed[_0xc7fe('0x42')][_0xc7fe('0x4c')]+'%'};return _0xe93fa7;})});}_0x118875=_[_0xc7fe('0x4d')]({},_0x118875,_0x4337ed[_0xc7fe('0x55')]);return db[_0xc7fe('0x86')]['count']({'where':_0x118875['where']})[_0xc7fe('0x1d')](function(_0x244661){_0x3d6082[_0xc7fe('0x2c')]=_0x244661;if(_0x4337ed[_0xc7fe('0x42')][_0xc7fe('0x4f')]){_0x118875[_0xc7fe('0x50')]=[{'model':db['CmContact'],'as':_0xc7fe('0xa3'),'required':![]},{'model':db[_0xc7fe('0xa4')],'as':_0xc7fe('0xa5'),'attributes':[_0xc7fe('0x37'),_0xc7fe('0xa6'),_0xc7fe('0xa7')],'required':![]},{'model':db[_0xc7fe('0xa8')],'as':_0xc7fe('0xa9'),'attributes':['id','name',_0xc7fe('0xaa')],'where':_0x4337ed['query'][_0xc7fe('0xab')]?{'id':_0x4337ed[_0xc7fe('0x42')][_0xc7fe('0xab')]}:undefined,'required':_0x4337ed[_0xc7fe('0x42')]['tag']?!![]:![]}];}return db[_0xc7fe('0x86')][_0xc7fe('0x51')](_0x118875);})[_0xc7fe('0x1d')](function(_0x5177c0){_0x3d6082[_0xc7fe('0x52')]=_0x5177c0;return _0x3d6082;});}})[_0xc7fe('0x1d')](respondWithFilteredResult(_0x323463,_0x118875))['catch'](handleError(_0x323463,null));};exports[_0xc7fe('0xac')]=function(_0x1554de,_0x256006,_0x3b8842){return db[_0xc7fe('0x3c')][_0xc7fe('0x56')]({'where':{'id':_0x1554de[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x256006,null))[_0xc7fe('0x1d')](function(_0x245a94){if(_0x245a94){return _0x245a94[_0xc7fe('0xac')](_0x1554de[_0xc7fe('0x5d')][_0xc7fe('0x67')],_[_0xc7fe('0xad')](_0x1554de[_0xc7fe('0x5d')],[_0xc7fe('0x67'),'id'])||{})[_0xc7fe('0xae')](function(_0x1428ec){for(var _0x354fa0=0x0;_0x354fa0<_0x1554de['body'][_0xc7fe('0x67')][_0xc7fe('0x54')];_0x354fa0+=0x1){socket[_0xc7fe('0xaf')](_0xc7fe('0xb0'),{'UserId':Number(_0x1554de[_0xc7fe('0x5d')][_0xc7fe('0x67')][_0x354fa0]),'OpenchannelAccountId':Number(_0x1554de[_0xc7fe('0x64')]['id'])});}return _0x1428ec;});}})[_0xc7fe('0x1d')](respondWithResult(_0x256006,null))[_0xc7fe('0x26')](handleError(_0x256006,null));};exports['removeAgents']=function(_0x3cfb3f,_0x53bf75,_0x3b3110){return db[_0xc7fe('0x3c')][_0xc7fe('0x56')]({'where':{'id':_0x3cfb3f[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x53bf75,null))[_0xc7fe('0x1d')](function(_0xd3d3c6){if(_0xd3d3c6){return _0xd3d3c6[_0xc7fe('0xb1')](_0x3cfb3f[_0xc7fe('0x42')][_0xc7fe('0x67')])['then'](function(){if(_['isArray'](_0x3cfb3f[_0xc7fe('0x42')][_0xc7fe('0x67')])){for(var _0x560f88=0x0;_0x560f88<_0x3cfb3f[_0xc7fe('0x42')][_0xc7fe('0x67')][_0xc7fe('0x54')];_0x560f88+=0x1){socket[_0xc7fe('0xaf')](_0xc7fe('0xb2'),{'UserId':Number(_0x3cfb3f[_0xc7fe('0x42')]['ids'][_0x560f88]),'OpenchannelAccountId':Number(_0x3cfb3f[_0xc7fe('0x64')]['id'])});}}else{socket[_0xc7fe('0xaf')](_0xc7fe('0xb2'),{'UserId':Number(_0x3cfb3f[_0xc7fe('0x42')]['ids']),'OpenchannelAccountId':Number(_0x3cfb3f[_0xc7fe('0x64')]['id'])});}});}})[_0xc7fe('0x1d')](respondWithStatusCode(_0x53bf75,null))[_0xc7fe('0x26')](handleError(_0x53bf75,null));};exports['getAgents']=function(_0x10173b,_0x1d1c57,_0x4ea8df){var _0x2488e6={};var _0x4483fa={};var _0x5962de;var _0x570ccb;return db[_0xc7fe('0x3c')][_0xc7fe('0x63')]({'where':{'id':_0x10173b[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x1d1c57,null))[_0xc7fe('0x1d')](function(_0x599972){if(_0x599972){_0x5962de=_0x599972;_0x4483fa['model']=_['keys'](db['User'][_0xc7fe('0x3d')]);_0x4483fa[_0xc7fe('0x42')]=_[_0xc7fe('0x43')](_0x10173b[_0xc7fe('0x42')]);_0x4483fa[_0xc7fe('0x4a')]=_[_0xc7fe('0x45')](_0x4483fa['model'],_0x4483fa['query']);_0x2488e6[_0xc7fe('0x44')]=_['intersection'](_0x4483fa['model'],qs['fields'](_0x10173b[_0xc7fe('0x42')][_0xc7fe('0x46')]));_0x2488e6[_0xc7fe('0x44')]=_0x2488e6[_0xc7fe('0x44')]['length']?_0x2488e6[_0xc7fe('0x44')]:_0x4483fa[_0xc7fe('0x41')];_0x2488e6['order']=qs[_0xc7fe('0x48')](_0x10173b[_0xc7fe('0x42')][_0xc7fe('0x48')]);_0x2488e6['where']=qs['filters'](_[_0xc7fe('0x4b')](_0x10173b['query'],_0x4483fa[_0xc7fe('0x4a')]));if(_0x10173b['query'][_0xc7fe('0x4c')]){_0x2488e6[_0xc7fe('0x49')]=_[_0xc7fe('0x4d')](_0x2488e6['where'],{'$or':_['map'](_0x2488e6[_0xc7fe('0x44')],function(_0x3d73fc){var _0x4290ed={};_0x4290ed[_0x3d73fc]={'$like':'%'+_0x10173b[_0xc7fe('0x42')][_0xc7fe('0x4c')]+'%'};return _0x4290ed;})});}_0x2488e6=_[_0xc7fe('0x4d')]({},_0x2488e6,_0x10173b['options']);return _0x5962de['getAgents'](_0x2488e6);}})[_0xc7fe('0x1d')](function(_0x10b4c6){if(_0x10b4c6){_0x570ccb=_0x10b4c6['length'];if(!_0x10173b[_0xc7fe('0x42')][_0xc7fe('0x65')](_0xc7fe('0x47'))){_0x2488e6[_0xc7fe('0x2a')]=qs['limit'](_0x10173b['query']['limit']);_0x2488e6['offset']=qs['offset'](_0x10173b[_0xc7fe('0x42')][_0xc7fe('0x2d')]);}return _0x5962de[_0xc7fe('0xb3')](_0x2488e6);}})[_0xc7fe('0x1d')](function(_0x33f656){if(_0x33f656){return _0x33f656?{'count':_0x570ccb,'rows':_0x33f656}:null;}})[_0xc7fe('0x1d')](respondWithResult(_0x1d1c57,null))[_0xc7fe('0x26')](handleError(_0x1d1c57,null));};exports[_0xc7fe('0x38')]=function(_0x46e6d6,_0x46808e,_0x44f118){var _0x494467,_0x37faf3,_0x16cd69;if(_[_0xc7fe('0x75')](_0x46e6d6[_0xc7fe('0x5d')][_0xc7fe('0x5d')])||_0x46e6d6[_0xc7fe('0x5d')]['body']===''){throw new db[(_0xc7fe('0x6d'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xc7fe('0x75')](_0x46e6d6[_0xc7fe('0x5d')]['to'])){}_0x494467=_0x46e6d6[_0xc7fe('0x5d')]['to'];return db[_0xc7fe('0x3c')][_0xc7fe('0x63')]({'where':{'id':_0x46e6d6[_0xc7fe('0x64')]['id']}})[_0xc7fe('0x1d')](handleEntityNotFound(_0x46808e,null))[_0xc7fe('0x1d')](function(_0x597e88){if(_0x597e88){return db['OpenchannelAccount'][_0xc7fe('0x56')]({'where':{'id':_0x597e88['id']},'include':[{'model':db[_0xc7fe('0xb4')],'as':'List','include':[{'model':db[_0xc7fe('0x6c')],'as':_0xc7fe('0x77'),'where':{[_0x597e88[_0xc7fe('0x76')]]:_0x494467},'limit':0x1,'order':[[_0xc7fe('0x71'),_0xc7fe('0xb5')]]}]}]})[_0xc7fe('0x1d')](handleEntityNotFound(_0x46808e,null))['then'](function(_0x4e0b4c){if(_0x4e0b4c&&_0x4e0b4c['List']){_0x37faf3=_0x4e0b4c[_0xc7fe('0x34')]({'plain':!![]});if(_0x37faf3[_0xc7fe('0x7d')]&&_0x37faf3[_0xc7fe('0x7d')]['Contacts']['length']){return _0x37faf3['List']['Contacts'][0x0];}return db[_0xc7fe('0x6c')][_0xc7fe('0x57')](_[_0xc7fe('0x15')](_0x46e6d6[_0xc7fe('0x5d')],{'firstName':_0x494467,[_0x4e0b4c[_0xc7fe('0x76')]]:_0x494467,'phone':_0x494467,'ListId':_0x37faf3[_0xc7fe('0x81')]}));}})['then'](handleEntityNotFound(_0x46808e,null))[_0xc7fe('0x1d')](function(_0x10dc31){if(_0x10dc31){_0x16cd69=_0x10dc31;return db['OpenchannelInteraction']['find']({'where':{'ContactId':_0x16cd69['id'],'closed':![],'OpenchannelAccountId':_0x37faf3['id']}})[_0xc7fe('0x1d')](function(_0x143090){if(_0x143090){return[_0x143090,![]];}return db[_0xc7fe('0x86')][_0xc7fe('0x57')]({'UserId':_0x46e6d6[_0xc7fe('0xb6')]['id'],'ContactId':_0x16cd69['id'],'OpenchannelAccountId':_0x37faf3['id'],'lastMsgDirection':_0xc7fe('0xb7'),'firstMsgDirection':_0xc7fe('0xb7'),'Messages':[_['merge'](_0x46e6d6[_0xc7fe('0x5d')],{'read':![],'body':_0x46e6d6[_0xc7fe('0x5d')][_0xc7fe('0x5d')],'OpenchannelAccountId':_0x37faf3['id'],'UserId':_0x46e6d6[_0xc7fe('0xb6')]['id'],'ContactId':_0x16cd69['id']})]},{'include':[{'model':db[_0xc7fe('0x91')],'as':_0xc7fe('0xb8')}]})[_0xc7fe('0x1d')](function(_0x4e49e7){return[_0x4e49e7,!![]];});});}})[_0xc7fe('0xae')](function(_0x4c51d2,_0x2e8457){if(_0x2e8457){return _0x4c51d2;}return db[_0xc7fe('0x91')][_0xc7fe('0x57')](_['merge'](_0x46e6d6[_0xc7fe('0x5d')],{'read':![],'body':_0x46e6d6[_0xc7fe('0x5d')][_0xc7fe('0x5d')],'OpenchannelAccountId':_0x37faf3['id'],'OpenchannelInteractionId':_0x4c51d2['id'],'UserId':_0x46e6d6[_0xc7fe('0xb6')]['id'],'ContactId':_0x16cd69['id']}))[_0xc7fe('0x1d')](function(_0x23a7a9){_0x4c51d2[_0xc7fe('0xb9')][_0xc7fe('0xb8')]=[];_0x4c51d2['dataValues'][_0xc7fe('0xb8')][_0xc7fe('0x8d')](_0x23a7a9[_0xc7fe('0xb9')]);return _0x4c51d2;});});}})[_0xc7fe('0x1d')](respondWithResult(_0x46808e,null))[_0xc7fe('0x26')](handleError(_0x46808e,null));};
\ No newline at end of file
+var _0x99c9=['order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','rows','show','params','fields','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','OpenchannelAccounts','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','removeDispositions','addAnswer','CannedAnswer','findAll','removeAnswers','openchannel','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','Sequelize','ValidationError','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','OpenchannelApplication','account','applications','Applications','list','priority','asc','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','contact','messageId','interaction','created','autoclose','push','close','*,*,*,*','AttachmentId','unshift','agent','Start','startRouting','EventManager','addApplications','sequelize','READ_COMMITTED','bulkCreate','findAndCountAll','finally','json','getApplications','getInteractions','pick','Contact','User','Owner','fullname','Tag','Tags','color','tag','addAgents','ids','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','CmList','out','OpenchannelMessage','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','offset','undefined','limit','count','status','set','apply','save','destroy','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','fieldName','key','map','keys','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit'];(function(_0x1d50f2,_0x3c3ec6){var _0x3769b8=function(_0x50926a){while(--_0x50926a){_0x1d50f2['push'](_0x1d50f2['shift']());}};_0x3769b8(++_0x3c3ec6);}(_0x99c9,0x13c));var _0x999c=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0x99c9[_0x5a776b];return _0xbbef59;};'use strict';var emlformat=require(_0x999c('0x0'));var rimraf=require(_0x999c('0x1'));var zipdir=require(_0x999c('0x2'));var jsonpatch=require(_0x999c('0x3'));var rp=require(_0x999c('0x4'));var moment=require(_0x999c('0x5'));var BPromise=require(_0x999c('0x6'));var Mustache=require('mustache');var util=require(_0x999c('0x7'));var path=require(_0x999c('0x8'));var sox=require(_0x999c('0x9'));var csv=require(_0x999c('0xa'));var ejs=require(_0x999c('0xb'));var fs=require('fs');var fs_extra=require(_0x999c('0xc'));var _=require(_0x999c('0xd'));var squel=require(_0x999c('0xe'));var crypto=require(_0x999c('0xf'));var jsforce=require(_0x999c('0x10'));var deskjs=require(_0x999c('0x11'));var toCsv=require(_0x999c('0xa'));var querystring=require(_0x999c('0x12'));var Papa=require(_0x999c('0x13'));var Redis=require('ioredis');var authService=require(_0x999c('0x14'));var qs=require(_0x999c('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x999c('0x16'));var logger=require(_0x999c('0x17'))(_0x999c('0x18'));var utils=require(_0x999c('0x19'));var config=require(_0x999c('0x1a'));var licenseUtil=require(_0x999c('0x1b'));var db=require(_0x999c('0x1c'))['db'];config[_0x999c('0x1d')]=_[_0x999c('0x1e')](config[_0x999c('0x1d')],{'host':_0x999c('0x1f'),'port':0x18eb});var socket=require(_0x999c('0x20'))(new Redis(config['redis']));require(_0x999c('0x21'))[_0x999c('0x22')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x999c('0x23')][_0x999c('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x203a73,_0x116f08,_0x2a6667,_0x5d5d12){return new BPromise(function(_0x226437,_0x2b05e9){var _0x2b6126=_0x5d5d12||client;return _0x2b6126[_0x999c('0x25')](_0x203a73,_0x2a6667)[_0x999c('0x26')](function(_0x500048){logger[_0x999c('0x27')](_0x999c('0x28'),_0x116f08,_0x999c('0x29'));logger[_0x999c('0x2a')](_0x999c('0x2b'),_0x116f08,'request\x20sent',JSON[_0x999c('0x2c')](_0x500048));if(_0x500048[_0x999c('0x2d')]){if(_0x500048[_0x999c('0x2d')][_0x999c('0x2e')]===0x1f4){logger[_0x999c('0x2d')](_0x999c('0x28'),_0x116f08,_0x500048['error'][_0x999c('0x2f')]);return _0x2b05e9(_0x500048[_0x999c('0x2d')][_0x999c('0x2f')]);}logger[_0x999c('0x2d')](_0x999c('0x28'),_0x116f08,_0x500048[_0x999c('0x2d')][_0x999c('0x2f')]);return _0x226437(_0x500048[_0x999c('0x2d')][_0x999c('0x2f')]);}else{logger[_0x999c('0x27')](_0x999c('0x28'),_0x116f08,'request\x20sent');_0x226437(_0x500048[_0x999c('0x30')][_0x999c('0x2f')]);}})[_0x999c('0x31')](function(_0x2e9d58){logger[_0x999c('0x2d')](_0x999c('0x28'),_0x116f08,_0x2e9d58);_0x2b05e9(_0x2e9d58);});});}function respondWithStatusCode(_0x575897,_0x4755c2){_0x4755c2=_0x4755c2||0xcc;return function(_0x43293f){if(_0x43293f){return _0x575897[_0x999c('0x32')](_0x4755c2);}return _0x575897['status'](_0x4755c2)[_0x999c('0x33')]();};}function respondWithResult(_0x4413c5,_0x53953d){_0x53953d=_0x53953d||0xc8;return function(_0x6e5e54){if(_0x6e5e54){return _0x4413c5['status'](_0x53953d)['json'](_0x6e5e54);}};}function respondWithFilteredResult(_0xedf57d,_0x42cb25){return function(_0x457df3){if(_0x457df3){var _0x2de6d5=typeof _0x42cb25[_0x999c('0x34')]===_0x999c('0x35')&&typeof _0x42cb25[_0x999c('0x36')]===_0x999c('0x35');var _0x352c25=_0x457df3[_0x999c('0x37')];var _0x532bae=_0x2de6d5?0x0:_0x42cb25[_0x999c('0x34')];var _0x192976=_0x2de6d5?_0x457df3[_0x999c('0x37')]:_0x42cb25[_0x999c('0x34')]+_0x42cb25[_0x999c('0x36')];var _0x1d0ba6;if(_0x192976>=_0x352c25){_0x192976=_0x352c25;_0x1d0ba6=0xc8;}else{_0x1d0ba6=0xce;}_0xedf57d[_0x999c('0x38')](_0x1d0ba6);return _0xedf57d[_0x999c('0x39')]('Content-Range',_0x532bae+'-'+_0x192976+'/'+_0x352c25)['json'](_0x457df3);}return null;};}function patchUpdates(_0x2fa094){return function(_0x98537f){try{jsonpatch[_0x999c('0x3a')](_0x98537f,_0x2fa094,!![]);}catch(_0x3872b7){return BPromise['reject'](_0x3872b7);}return _0x98537f[_0x999c('0x3b')]();};}function saveUpdates(_0xe28e45,_0x46815d){return function(_0x2a3b74){if(_0x2a3b74){return _0x2a3b74['update'](_0xe28e45)['then'](function(_0x21d6df){return _0x21d6df;});}return null;};}function removeEntity(_0x22aa6d,_0x3664fa){return function(_0x323956){if(_0x323956){return _0x323956[_0x999c('0x3c')]()[_0x999c('0x26')](function(){var _0x4bb1c0=_0x323956['get']({'plain':!![]});var _0x5ad13e='OpenchannelAccounts';return db[_0x999c('0x3d')][_0x999c('0x3c')]({'where':{'type':_0x5ad13e,'resourceId':_0x4bb1c0['id']}})['then'](function(){return _0x323956;});})['then'](function(){_0x22aa6d['status'](0xcc)[_0x999c('0x33')]();});}};}function handleEntityNotFound(_0x10fcf3,_0x15dc10){return function(_0x3a112d){if(!_0x3a112d){_0x10fcf3['sendStatus'](0x194);}return _0x3a112d;};}function handleError(_0x105c33,_0x7cc663){_0x7cc663=_0x7cc663||0x1f4;return function(_0x513aa4){logger['error'](_0x513aa4[_0x999c('0x3e')]);if(_0x513aa4['name']){delete _0x513aa4[_0x999c('0x3f')];}_0x105c33['status'](_0x7cc663)[_0x999c('0x40')](_0x513aa4);};}exports[_0x999c('0x41')]=function(_0x1763f0,_0xcd729){var _0x59029b={'include':[{'model':db[_0x999c('0x42')],'as':_0x999c('0x43')}]},_0x580593={},_0x21318e={'count':0x0,'rows':[]};var _0xf26ba3=_['map'](db[_0x999c('0x44')][_0x999c('0x45')],function(_0x2b7956){return{'name':_0x2b7956[_0x999c('0x46')],'type':_0x2b7956['type'][_0x999c('0x47')]};});_0x580593['model']=_[_0x999c('0x48')](_0xf26ba3,_0x999c('0x3f'));_0x580593['query']=_[_0x999c('0x49')](_0x1763f0[_0x999c('0x4a')]);_0x580593[_0x999c('0x4b')]=_[_0x999c('0x4c')](_0x580593[_0x999c('0x4d')],_0x580593[_0x999c('0x4a')]);_0x59029b[_0x999c('0x4e')]=_[_0x999c('0x4c')](_0x580593['model'],qs['fields'](_0x1763f0['query']['fields']));_0x59029b[_0x999c('0x4e')]=_0x59029b[_0x999c('0x4e')][_0x999c('0x4f')]?_0x59029b[_0x999c('0x4e')]:_0x580593[_0x999c('0x4d')];if(!_0x1763f0['query'][_0x999c('0x50')](_0x999c('0x51'))){_0x59029b[_0x999c('0x36')]=qs[_0x999c('0x36')](_0x1763f0[_0x999c('0x4a')]['limit']);_0x59029b[_0x999c('0x34')]=qs[_0x999c('0x34')](_0x1763f0[_0x999c('0x4a')][_0x999c('0x34')]);}_0x59029b[_0x999c('0x52')]=qs[_0x999c('0x53')](_0x1763f0[_0x999c('0x4a')][_0x999c('0x53')]);_0x59029b[_0x999c('0x54')]=qs['filters'](_['pick'](_0x1763f0[_0x999c('0x4a')],_0x580593[_0x999c('0x4b')]),_0xf26ba3);if(_0x1763f0[_0x999c('0x4a')][_0x999c('0x55')]){_0x59029b[_0x999c('0x54')]=_[_0x999c('0x56')](_0x59029b[_0x999c('0x54')],{'$or':_[_0x999c('0x48')](_0xf26ba3,function(_0x133395){if(_0x133395[_0x999c('0x57')]!==_0x999c('0x58')){var _0x4ca662={};_0x4ca662[_0x133395[_0x999c('0x3f')]]={'$like':'%'+_0x1763f0[_0x999c('0x4a')][_0x999c('0x55')]+'%'};return _0x4ca662;}})});}_0x59029b=_[_0x999c('0x56')]({},_0x59029b,_0x1763f0[_0x999c('0x59')]);var _0x386be6={'where':_0x59029b[_0x999c('0x54')]};return db[_0x999c('0x44')]['count'](_0x386be6)[_0x999c('0x26')](function(_0x1a0472){_0x21318e[_0x999c('0x37')]=_0x1a0472;if(_0x1763f0[_0x999c('0x4a')][_0x999c('0x5a')]){_0x59029b[_0x999c('0x5b')]=[{'all':!![]}];}return db[_0x999c('0x44')]['findAll'](_0x59029b);})['then'](function(_0x1139f6){_0x21318e[_0x999c('0x5c')]=_0x1139f6;return _0x21318e;})[_0x999c('0x26')](respondWithFilteredResult(_0xcd729,_0x59029b))[_0x999c('0x31')](handleError(_0xcd729,null));};exports[_0x999c('0x5d')]=function(_0x57327c,_0x3defe9){var _0x116d7f={'raw':![],'where':{'id':_0x57327c[_0x999c('0x5e')]['id']},'include':[{'model':db['Pause'],'as':_0x999c('0x43')}]},_0x38b75a={};_0x38b75a['model']=_[_0x999c('0x49')](db[_0x999c('0x44')][_0x999c('0x45')]);_0x38b75a[_0x999c('0x4a')]=_[_0x999c('0x49')](_0x57327c[_0x999c('0x4a')]);_0x38b75a[_0x999c('0x4b')]=_['intersection'](_0x38b75a[_0x999c('0x4d')],_0x38b75a[_0x999c('0x4a')]);_0x116d7f[_0x999c('0x4e')]=_['intersection'](_0x38b75a[_0x999c('0x4d')],qs[_0x999c('0x5f')](_0x57327c[_0x999c('0x4a')]['fields']));_0x116d7f[_0x999c('0x4e')]=_0x116d7f['attributes'][_0x999c('0x4f')]?_0x116d7f[_0x999c('0x4e')]:_0x38b75a[_0x999c('0x4d')];if(_0x57327c[_0x999c('0x4a')]['includeAll']){_0x116d7f[_0x999c('0x5b')]=[{'all':!![]}];}_0x116d7f=_['merge']({},_0x116d7f,_0x57327c['options']);return db[_0x999c('0x44')][_0x999c('0x60')](_0x116d7f)['then'](handleEntityNotFound(_0x3defe9,null))[_0x999c('0x26')](respondWithResult(_0x3defe9,null))['catch'](handleError(_0x3defe9,null));};exports[_0x999c('0x61')]=function(_0xe89a71,_0x4e21d2){return db[_0x999c('0x44')][_0x999c('0x61')](_0xe89a71[_0x999c('0x62')],{})[_0x999c('0x26')](function(_0x237524){var _0x2da455=_0xe89a71[_0x999c('0x63')][_0x999c('0x64')]({'plain':!![]});if(!_0x2da455)throw new Error(_0x999c('0x65'));if(_0x2da455['role']===_0x999c('0x63')){var _0x260467=_0x237524[_0x999c('0x64')]({'plain':!![]});var _0xcadfbc=_0x999c('0x66');return db[_0x999c('0x67')]['find']({'where':{'name':_0xcadfbc,'userProfileId':_0x2da455['userProfileId']},'raw':!![]})['then'](function(_0x4a6b73){if(_0x4a6b73&&_0x4a6b73[_0x999c('0x68')]===0x0){return db[_0x999c('0x3d')][_0x999c('0x61')]({'name':_0x260467['name'],'resourceId':_0x260467['id'],'type':_0x4a6b73[_0x999c('0x3f')],'sectionId':_0x4a6b73['id']},{})['then'](function(){return _0x237524;});}else{return _0x237524;}})[_0x999c('0x31')](function(_0x5c25c2){logger[_0x999c('0x2d')](_0x999c('0x69'),_0x5c25c2);throw _0x5c25c2;});}return _0x237524;})[_0x999c('0x26')](respondWithResult(_0x4e21d2,0xc9))[_0x999c('0x31')](handleError(_0x4e21d2,null));};exports[_0x999c('0x6a')]=function(_0x534c67,_0x2fa2e5){if(_0x534c67[_0x999c('0x62')]['id']){delete _0x534c67[_0x999c('0x62')]['id'];}return db[_0x999c('0x44')][_0x999c('0x60')]({'where':{'id':_0x534c67[_0x999c('0x5e')]['id']},'include':[{'model':db[_0x999c('0x42')],'as':'mandatoryDispositionPause'}]})[_0x999c('0x26')](handleEntityNotFound(_0x2fa2e5,null))[_0x999c('0x26')](saveUpdates(_0x534c67[_0x999c('0x62')],null))[_0x999c('0x26')](respondWithResult(_0x2fa2e5,null))[_0x999c('0x31')](handleError(_0x2fa2e5,null));};exports[_0x999c('0x3c')]=function(_0x3a9a0d,_0x4f22bd){return db[_0x999c('0x44')][_0x999c('0x60')]({'where':{'id':_0x3a9a0d['params']['id']}})['then'](handleEntityNotFound(_0x4f22bd,null))[_0x999c('0x26')](removeEntity(_0x4f22bd,null))[_0x999c('0x31')](handleError(_0x4f22bd,null));};exports[_0x999c('0x6b')]=function(_0x5e57d0,_0x40aea7){return db[_0x999c('0x44')][_0x999c('0x6b')]()[_0x999c('0x26')](respondWithResult(_0x40aea7,null))[_0x999c('0x31')](handleError(_0x40aea7,null));};exports[_0x999c('0x6c')]=function(_0x50b65c,_0x9ce623,_0x54d0a5){if(_0x50b65c[_0x999c('0x62')]['id']){delete _0x50b65c[_0x999c('0x62')]['id'];}return db[_0x999c('0x44')][_0x999c('0x60')]({'where':{'id':_0x50b65c[_0x999c('0x5e')]['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x9ce623,null))[_0x999c('0x26')](function(_0x39aa48){if(_0x39aa48){_0x50b65c[_0x999c('0x62')][_0x999c('0x6d')]=_0x39aa48['id'];return db[_0x999c('0x6e')][_0x999c('0x61')](_0x50b65c[_0x999c('0x62')]);}})['then'](respondWithResult(_0x9ce623,null))[_0x999c('0x31')](handleError(_0x9ce623,null));};exports[_0x999c('0x6f')]=function(_0x55ce3a,_0x1066c8,_0x1b91b3){var _0x2d5fca={'raw':![],'where':{}};var _0x52d38a={};var _0x2e0a60={'count':0x0,'rows':[]};return db[_0x999c('0x44')][_0x999c('0x70')]({'where':{'id':_0x55ce3a[_0x999c('0x5e')]['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x1066c8,null))['then'](function(_0x42e688){if(_0x42e688){_0x52d38a[_0x999c('0x4d')]=_[_0x999c('0x49')](db[_0x999c('0x6e')][_0x999c('0x45')]);_0x52d38a[_0x999c('0x4a')]=_[_0x999c('0x49')](_0x55ce3a[_0x999c('0x4a')]);_0x52d38a['filters']=_[_0x999c('0x4c')](_0x52d38a[_0x999c('0x4d')],_0x52d38a['query']);_0x2d5fca['attributes']=_[_0x999c('0x4c')](_0x52d38a[_0x999c('0x4d')],qs[_0x999c('0x5f')](_0x55ce3a[_0x999c('0x4a')]['fields']));_0x2d5fca[_0x999c('0x4e')]=_0x2d5fca[_0x999c('0x4e')][_0x999c('0x4f')]?_0x2d5fca['attributes']:_0x52d38a[_0x999c('0x4d')];if(!_0x55ce3a['query'][_0x999c('0x50')](_0x999c('0x51'))){_0x2d5fca[_0x999c('0x36')]=qs[_0x999c('0x36')](_0x55ce3a['query'][_0x999c('0x36')]);_0x2d5fca[_0x999c('0x34')]=qs[_0x999c('0x34')](_0x55ce3a[_0x999c('0x4a')][_0x999c('0x34')]);}_0x2d5fca[_0x999c('0x52')]=qs[_0x999c('0x53')](_0x55ce3a[_0x999c('0x4a')][_0x999c('0x53')]);_0x2d5fca[_0x999c('0x54')]=qs[_0x999c('0x4b')](_['pick'](_0x55ce3a[_0x999c('0x4a')],_0x52d38a[_0x999c('0x4b')]));_0x2d5fca[_0x999c('0x54')][_0x999c('0x6d')]=_0x42e688['id'];if(_0x55ce3a[_0x999c('0x4a')][_0x999c('0x55')]){_0x2d5fca['where']=_['merge'](_0x2d5fca[_0x999c('0x54')],{'$or':_[_0x999c('0x48')](_0x2d5fca['attributes'],function(_0x1e45d7){var _0x2714f9={};_0x2714f9[_0x1e45d7]={'$like':'%'+_0x55ce3a[_0x999c('0x4a')]['filter']+'%'};return _0x2714f9;})});}_0x2d5fca=_[_0x999c('0x56')]({},_0x2d5fca,_0x55ce3a['options']);return db[_0x999c('0x6e')][_0x999c('0x37')]({'where':_0x2d5fca[_0x999c('0x54')]})[_0x999c('0x26')](function(_0xa46c99){_0x2e0a60[_0x999c('0x37')]=_0xa46c99;if(_0x55ce3a[_0x999c('0x4a')][_0x999c('0x5a')]){_0x2d5fca['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x2d5fca);})[_0x999c('0x26')](function(_0x288cf8){_0x2e0a60[_0x999c('0x5c')]=_0x288cf8;return _0x2e0a60;});}})[_0x999c('0x26')](respondWithFilteredResult(_0x1066c8,_0x2d5fca))[_0x999c('0x31')](handleError(_0x1066c8,null));};exports[_0x999c('0x71')]=function(_0x462bea,_0x482164,_0x30c4fe){return db[_0x999c('0x44')][_0x999c('0x60')]({'where':{'id':_0x462bea[_0x999c('0x5e')]['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x482164,null))['then'](function(_0x2bfb6e){if(_0x2bfb6e){return _0x2bfb6e['removeDispositions'](_0x462bea[_0x999c('0x4a')]['ids']);}})['then'](respondWithStatusCode(_0x482164,null))['catch'](handleError(_0x482164,null));};exports[_0x999c('0x72')]=function(_0x5b77af,_0x2e3cb8,_0x38df92){if(_0x5b77af[_0x999c('0x62')]['id']){delete _0x5b77af[_0x999c('0x62')]['id'];}return db[_0x999c('0x44')][_0x999c('0x60')]({'where':{'id':_0x5b77af[_0x999c('0x5e')]['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x2e3cb8,null))[_0x999c('0x26')](function(_0x23fc2b){if(_0x23fc2b){_0x5b77af[_0x999c('0x62')][_0x999c('0x6d')]=_0x23fc2b['id'];return db[_0x999c('0x73')][_0x999c('0x61')](_0x5b77af['body']);}})[_0x999c('0x26')](respondWithResult(_0x2e3cb8,null))[_0x999c('0x31')](handleError(_0x2e3cb8,null));};exports['getAnswers']=function(_0x19d749,_0x4ddc1c,_0x20b10b){var _0x5a55df={'raw':![],'where':{}};var _0x20fc31={};var _0x5f2925={'count':0x0,'rows':[]};return db[_0x999c('0x44')][_0x999c('0x70')]({'where':{'id':_0x19d749[_0x999c('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4ddc1c,null))[_0x999c('0x26')](function(_0x119a3a){if(_0x119a3a){_0x20fc31[_0x999c('0x4d')]=_[_0x999c('0x49')](db['CannedAnswer'][_0x999c('0x45')]);_0x20fc31[_0x999c('0x4a')]=_['keys'](_0x19d749['query']);_0x20fc31['filters']=_['intersection'](_0x20fc31['model'],_0x20fc31[_0x999c('0x4a')]);_0x5a55df[_0x999c('0x4e')]=_[_0x999c('0x4c')](_0x20fc31[_0x999c('0x4d')],qs[_0x999c('0x5f')](_0x19d749[_0x999c('0x4a')]['fields']));_0x5a55df[_0x999c('0x4e')]=_0x5a55df['attributes'][_0x999c('0x4f')]?_0x5a55df[_0x999c('0x4e')]:_0x20fc31[_0x999c('0x4d')];if(!_0x19d749[_0x999c('0x4a')]['hasOwnProperty'](_0x999c('0x51'))){_0x5a55df['limit']=qs['limit'](_0x19d749[_0x999c('0x4a')][_0x999c('0x36')]);_0x5a55df[_0x999c('0x34')]=qs[_0x999c('0x34')](_0x19d749[_0x999c('0x4a')][_0x999c('0x34')]);}_0x5a55df[_0x999c('0x52')]=qs[_0x999c('0x53')](_0x19d749[_0x999c('0x4a')]['sort']);_0x5a55df['where']=qs[_0x999c('0x4b')](_['pick'](_0x19d749[_0x999c('0x4a')],_0x20fc31[_0x999c('0x4b')]));_0x5a55df[_0x999c('0x54')]['OpenchannelAccountId']=_0x119a3a['id'];if(_0x19d749[_0x999c('0x4a')][_0x999c('0x55')]){_0x5a55df[_0x999c('0x54')]=_[_0x999c('0x56')](_0x5a55df['where'],{'$or':_['map'](_0x5a55df['attributes'],function(_0x46a204){var _0x2e618a={};_0x2e618a[_0x46a204]={'$like':'%'+_0x19d749[_0x999c('0x4a')][_0x999c('0x55')]+'%'};return _0x2e618a;})});}_0x5a55df=_[_0x999c('0x56')]({},_0x5a55df,_0x19d749[_0x999c('0x59')]);return db[_0x999c('0x73')][_0x999c('0x37')]({'where':_0x5a55df[_0x999c('0x54')]})['then'](function(_0x32acce){_0x5f2925[_0x999c('0x37')]=_0x32acce;if(_0x19d749['query'][_0x999c('0x5a')]){_0x5a55df[_0x999c('0x5b')]=[{'all':!![]}];}return db['CannedAnswer'][_0x999c('0x74')](_0x5a55df);})[_0x999c('0x26')](function(_0x4a217f){_0x5f2925[_0x999c('0x5c')]=_0x4a217f;return _0x5f2925;});}})[_0x999c('0x26')](respondWithFilteredResult(_0x4ddc1c,_0x5a55df))[_0x999c('0x31')](handleError(_0x4ddc1c,null));};exports[_0x999c('0x75')]=function(_0x3811dc,_0x3a23b6,_0x31d350){return db['OpenchannelAccount']['find']({'where':{'id':_0x3811dc[_0x999c('0x5e')]['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x3a23b6,null))[_0x999c('0x26')](function(_0x350c00){if(_0x350c00){return _0x350c00[_0x999c('0x75')](_0x3811dc['query']['ids']);}})[_0x999c('0x26')](respondWithStatusCode(_0x3a23b6,null))[_0x999c('0x31')](handleError(_0x3a23b6,null));};exports['notify']=function(_0x352c27,_0x5127ae,_0x173ffe){var _0x39158e={'body':_0x352c27[_0x999c('0x62')],'channel':_0x999c('0x76')};var _0x5cfcd2=[];var _0x4bcdc7=[];var _0x33badb={};var _0x487912=![];return db[_0x999c('0x77')]['describe']()[_0x999c('0x26')](function(_0x591266){if(!_0x591266){throw new db['Sequelize']['ValidationError'](_0x999c('0x78'));}_0x5cfcd2=_[_0x999c('0x79')](_[_0x999c('0x49')](_0x591266),[_0x999c('0x7a'),_0x999c('0x7b')]);_0x4bcdc7=_[_0x999c('0x79')](_['keys'](_0x591266),[_0x999c('0x7a'),'updatedAt',_0x999c('0x7c'),_0x999c('0x7d')]);if(_0x352c27['body']['id']){delete _0x352c27[_0x999c('0x62')]['id'];}if(_[_0x999c('0x7e')](_0x352c27[_0x999c('0x62')][_0x999c('0x7f')])){throw new db['Sequelize']['ValidationError'](_0x999c('0x80'));}if(_[_0x999c('0x7e')](_0x352c27[_0x999c('0x62')][_0x999c('0x62')])||_0x352c27[_0x999c('0x62')][_0x999c('0x62')]===''){throw new db[(_0x999c('0x81'))][(_0x999c('0x82'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x999c('0x7e')](_0x352c27[_0x999c('0x62')][_0x999c('0x83')])){throw new db[(_0x999c('0x81'))][(_0x999c('0x82'))](_0x999c('0x84')+_0x4bcdc7);}if(!_[_0x999c('0x85')](_0x4bcdc7,_0x352c27[_0x999c('0x62')]['mapKey'])){throw new db[(_0x999c('0x81'))][(_0x999c('0x82'))](_0x999c('0x86')+_0x4bcdc7);}_0x33badb[_0x352c27[_0x999c('0x62')][_0x999c('0x83')]]=_0x352c27[_0x999c('0x62')][_0x999c('0x7f')];})[_0x999c('0x26')](function(){return db['OpenchannelAccount'][_0x999c('0x60')]({'where':{'id':_0x352c27[_0x999c('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0x999c('0x87'),'include':[{'model':db[_0x999c('0x77')],'as':_0x999c('0x88'),'where':_0x33badb,'limit':0x1,'order':[['updatedAt',_0x999c('0x89')]]}]},{'model':db[_0x999c('0x8a')],'as':'Applications'}]});})[_0x999c('0x26')](handleEntityNotFound(_0x5127ae,null))['then'](function(_0x4d68c5){if(_0x4d68c5&&_0x4d68c5['List']){_0x39158e[_0x999c('0x8b')]=_0x4d68c5;_0x39158e[_0x999c('0x8c')]=_0x4d68c5[_0x999c('0x8d')];_0x39158e[_0x999c('0x8e')]=_0x4d68c5['List'];_0x39158e[_0x999c('0x8c')]=_['orderBy'](_0x39158e[_0x999c('0x8c')],[_0x999c('0x8f')],[_0x999c('0x90')]);if(_0x39158e[_0x999c('0x8b')][_0x999c('0x8d')]){delete _0x39158e[_0x999c('0x8b')][_0x999c('0x8d')];}if(_0x39158e['account'][_0x999c('0x87')]&&_0x39158e[_0x999c('0x8b')][_0x999c('0x87')][_0x999c('0x88')][_0x999c('0x4f')]){return _0x39158e[_0x999c('0x8b')][_0x999c('0x87')][_0x999c('0x88')][0x0];}var _0x3e81f1=_['defaults'](_0x352c27['body'],{'firstName':_0x352c27[_0x999c('0x62')]['from'],'ListId':_0x4d68c5['ListId']});_0x3e81f1[_0x352c27[_0x999c('0x62')][_0x999c('0x83')]]=_0x352c27[_0x999c('0x62')][_0x999c('0x7f')];return db[_0x999c('0x77')][_0x999c('0x61')](_0x3e81f1,{'fields':_0x5cfcd2,'raw':!![]});}})[_0x999c('0x26')](handleEntityNotFound(_0x5127ae,null))[_0x999c('0x26')](function(_0x901111){_0x39158e['contact']=_0x901111;if(_0x901111){var _0x118e98={'ContactId':_0x901111['id'],'OpenchannelAccountId':_0x352c27['params']['id'],'from':(_0x901111[_0x999c('0x91')]||'')+'\x20'+(_0x901111[_0x999c('0x92')]||'')};var _0xb579d8={'OpenchannelAccountId':_0x352c27[_0x999c('0x5e')]['id'],'closed':![]};if(_0x352c27[_0x999c('0x62')][_0x999c('0x93')]){_0xb579d8[_0x999c('0x93')]=_0x352c27[_0x999c('0x62')][_0x999c('0x93')];return db[_0x999c('0x94')][_0x999c('0x60')]({'where':_0xb579d8})[_0x999c('0x26')](function(_0x2f9f8d){if(_0x2f9f8d){return[_0x2f9f8d,![]];}_0x118e98[_0x999c('0x93')]=_0x352c27[_0x999c('0x62')][_0x999c('0x93')];_0x118e98[_0x999c('0x95')]=_0x352c27[_0x999c('0x62')]['externalUrl'];return db[_0x999c('0x94')][_0x999c('0x61')](_0x118e98)['then'](function(_0x154f00){return[_0x154f00,!![]];});});}else{_0xb579d8['threadId']=null;}_0xb579d8[_0x999c('0x96')]=_0x901111['id'];return db[_0x999c('0x94')][_0x999c('0x60')]({'where':_0xb579d8})[_0x999c('0x26')](function(_0x12e274){if(_0x12e274){return[_0x12e274,![]];}return db[_0x999c('0x94')]['create'](_0x118e98)['then'](function(_0x89a587){return[_0x89a587,!![]];});});}})[_0x999c('0x97')](function(_0x49f0af,_0x56bbdd){if(_0x49f0af){_0x487912=_0x56bbdd;if(!_0x56bbdd){var _0x14dfe2={'from':(_0x39158e[_0x999c('0x98')]['firstName']||'')+'\x20'+(_0x39158e[_0x999c('0x98')][_0x999c('0x92')]||'')};if(_0x352c27[_0x999c('0x62')][_0x999c('0x93')]&&_0x352c27[_0x999c('0x62')][_0x999c('0x99')]&&_0x352c27[_0x999c('0x62')][_0x999c('0x93')]!=_0x352c27[_0x999c('0x62')][_0x999c('0x99')]){_0x14dfe2['threadId']=_0x352c27['body'][_0x999c('0x99')];}return _0x49f0af[_0x999c('0x6a')](_0x14dfe2);}else{return _0x49f0af;}}})[_0x999c('0x26')](function(_0x1888db){_0x39158e[_0x999c('0x9a')]=_0x1888db[_0x999c('0x64')]({'plain':!![]});_0x39158e[_0x999c('0x9a')][_0x999c('0x9b')]=_0x487912;if(_0x39158e[_0x999c('0x9a')][_0x999c('0x9b')]){if(_0x39158e[_0x999c('0x8b')][_0x999c('0x9c')]){_0x39158e[_0x999c('0x8c')][_0x999c('0x9d')]({'id':0x0,'priority':_0x39158e[_0x999c('0x8c')][_0x999c('0x4f')]+0x1,'app':_0x999c('0x9e'),'appdata':'unmanaged','interval':_0x999c('0x9f')});}}return db['OpenchannelMessage'][_0x999c('0x61')]({'body':_0x352c27[_0x999c('0x62')]['body'],'OpenchannelAccountId':_0x352c27[_0x999c('0x5e')]['id'],'OpenchannelInteractionId':_0x1888db['id'],'direction':'in','ContactId':_0x39158e['contact']['id'],'AttachmentId':_0x352c27[_0x999c('0x62')][_0x999c('0xa0')]});})[_0x999c('0x26')](function(_0x58bd74){_0x39158e['message']=_0x58bd74;if(_0x39158e[_0x999c('0x9a')]['UserId']){return db['User'][_0x999c('0x60')]({'attributes':['id','name'],'where':{'id':_0x39158e[_0x999c('0x9a')]['UserId']}})[_0x999c('0x26')](function(_0x5e38d2){if(_0x5e38d2){_0x39158e['applications'][_0x999c('0xa1')]({'id':0x0,'priority':0x0,'app':_0x999c('0xa2'),'appdata':_0x5e38d2[_0x999c('0x3f')]+','+(_0x39158e[_0x999c('0x8b')]['waitForTheAssignedAgent']||0xa),'interval':_0x999c('0x9f')});_0x39158e['forcedOwnership']=![];}return respondWithRpcPromise(_0x999c('0xa3'),'startRouting',_0x39158e);});}return respondWithRpcPromise(_0x999c('0xa3'),_0x999c('0xa4'),_0x39158e);})['then'](function(_0x46729e){respondWithRpcPromise(_0x999c('0xa5'),'EventManager',{'event':'notify','message':_0x46729e},client9002);return _0x46729e;})['then'](respondWithResult(_0x5127ae,null))[_0x999c('0x31')](handleError(_0x5127ae,null));};exports[_0x999c('0xa6')]=function(_0x1126ab,_0x4c0a3c){var _0x1c57eb=_0x1126ab[_0x999c('0x5e')]['id'];var _0xc96aa=_0x1126ab[_0x999c('0x62')];var _0x2a2dd7=0xc8;var _0x1b085d=null;return db[_0x999c('0xa7')]['transaction']({'isolationLevel':db[_0x999c('0xa7')]['Transaction']['ISOLATION_LEVELS'][_0x999c('0xa8')]},function(_0xcd7120){return db[_0x999c('0x44')]['findOne']({'where':{'id':_0x1c57eb},'transaction':_0xcd7120})[_0x999c('0x26')](function(_0xaf8cb){if(_0xaf8cb){return db[_0x999c('0x8a')][_0x999c('0x3c')]({'where':{'OpenchannelAccountId':_0x1c57eb},'transaction':_0xcd7120})[_0x999c('0x26')](function(){var _0x2d1ce6=_[_0x999c('0x48')](_0xc96aa,function(_0x387dd6){_0x387dd6[_0x999c('0x6d')]=_0x1c57eb;return _0x387dd6;});return db[_0x999c('0x8a')][_0x999c('0xa9')](_0x2d1ce6,{'transaction':_0xcd7120});});}else{_0x2a2dd7=0x194;_0x1b085d=[];}});})[_0x999c('0x26')](function(){if(_0x2a2dd7!==0x194){return db[_0x999c('0x8a')][_0x999c('0xaa')]({'where':{'OpenchannelAccountId':_0x1c57eb},'order':'priority'})[_0x999c('0x26')](function(_0x4855b3){_0x1b085d=_0x4855b3;});}})[_0x999c('0x31')](function(_0x36c587){_0x2a2dd7=0x1f4;logger[_0x999c('0x2d')](_0x36c587[_0x999c('0x3e')]);if(_0x36c587[_0x999c('0x3f')]){delete _0x36c587[_0x999c('0x3f')];}_0x1b085d=_0x36c587;})[_0x999c('0xab')](function(){if(_0x1b085d===null){_0x4c0a3c[_0x999c('0x32')](_0x2a2dd7);}else{if(_0x2a2dd7===0x1f4){_0x4c0a3c[_0x999c('0x38')](_0x2a2dd7)[_0x999c('0x40')](_0x1b085d);}else{_0x4c0a3c['status'](_0x2a2dd7)[_0x999c('0xac')](_0x1b085d);}}});};exports['getApplications']=function(_0x324e7b,_0xdbfafa,_0x4b7564){var _0xcf1c09={};var _0x17ccc5={};var _0x132c7e;var _0x33e645;return db[_0x999c('0x44')][_0x999c('0x70')]({'where':{'id':_0x324e7b['params']['id']}})['then'](handleEntityNotFound(_0xdbfafa,null))[_0x999c('0x26')](function(_0x2bdb8b){if(_0x2bdb8b){_0x132c7e=_0x2bdb8b;_0x17ccc5[_0x999c('0x4d')]=_[_0x999c('0x49')](db[_0x999c('0x8a')][_0x999c('0x45')]);_0x17ccc5[_0x999c('0x4a')]=_['keys'](_0x324e7b[_0x999c('0x4a')]);_0x17ccc5[_0x999c('0x4b')]=_[_0x999c('0x4c')](_0x17ccc5[_0x999c('0x4d')],_0x17ccc5['query']);_0xcf1c09[_0x999c('0x4e')]=_[_0x999c('0x4c')](_0x17ccc5[_0x999c('0x4d')],qs[_0x999c('0x5f')](_0x324e7b[_0x999c('0x4a')]['fields']));_0xcf1c09[_0x999c('0x4e')]=_0xcf1c09['attributes']['length']?_0xcf1c09[_0x999c('0x4e')]:_0x17ccc5[_0x999c('0x4d')];_0xcf1c09[_0x999c('0x52')]=qs[_0x999c('0x53')](_0x324e7b[_0x999c('0x4a')][_0x999c('0x53')]);_0xcf1c09['where']=qs['filters'](_['pick'](_0x324e7b['query'],_0x17ccc5[_0x999c('0x4b')]));if(_0x324e7b[_0x999c('0x4a')]['filter']){_0xcf1c09['where']=_['merge'](_0xcf1c09[_0x999c('0x54')],{'$or':_[_0x999c('0x48')](_0xcf1c09['attributes'],function(_0x2c39aa){var _0xf12ee2={};_0xf12ee2[_0x2c39aa]={'$like':'%'+_0x324e7b[_0x999c('0x4a')][_0x999c('0x55')]+'%'};return _0xf12ee2;})});}_0xcf1c09=_['merge']({},_0xcf1c09,_0x324e7b[_0x999c('0x59')]);return _0x132c7e['getApplications'](_0xcf1c09);}})[_0x999c('0x26')](function(_0x30bb15){if(_0x30bb15){_0x33e645=_0x30bb15[_0x999c('0x4f')];if(!_0x324e7b[_0x999c('0x4a')][_0x999c('0x50')](_0x999c('0x51'))){_0xcf1c09[_0x999c('0x36')]=qs[_0x999c('0x36')](_0x324e7b[_0x999c('0x4a')]['limit']);_0xcf1c09[_0x999c('0x34')]=qs[_0x999c('0x34')](_0x324e7b['query'][_0x999c('0x34')]);}return _0x132c7e[_0x999c('0xad')](_0xcf1c09);}})[_0x999c('0x26')](function(_0x10d14e){if(_0x10d14e){return _0x10d14e?{'count':_0x33e645,'rows':_0x10d14e}:null;}})[_0x999c('0x26')](respondWithResult(_0xdbfafa,null))[_0x999c('0x31')](handleError(_0xdbfafa,null));};exports[_0x999c('0xae')]=function(_0x2a9d84,_0x55797f,_0x26804a){var _0x2988be={'raw':![],'where':{}};var _0x1669ae={};var _0x1cfa81={'count':0x0,'rows':[]};return db[_0x999c('0x44')]['findOne']({'where':{'id':_0x2a9d84['params']['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x55797f,null))['then'](function(_0x11be94){if(_0x11be94){_0x1669ae[_0x999c('0x4d')]=_['keys'](db[_0x999c('0x94')][_0x999c('0x45')]);_0x1669ae[_0x999c('0x4a')]=_[_0x999c('0x49')](_0x2a9d84[_0x999c('0x4a')]);_0x1669ae[_0x999c('0x4b')]=_[_0x999c('0x4c')](_0x1669ae['model'],_0x1669ae[_0x999c('0x4a')]);_0x2988be['attributes']=_[_0x999c('0x4c')](_0x1669ae['model'],qs[_0x999c('0x5f')](_0x2a9d84[_0x999c('0x4a')][_0x999c('0x5f')]));_0x2988be['attributes']=_0x2988be['attributes'][_0x999c('0x4f')]?_0x2988be[_0x999c('0x4e')]:_0x1669ae[_0x999c('0x4d')];if(!_0x2a9d84[_0x999c('0x4a')][_0x999c('0x50')](_0x999c('0x51'))){_0x2988be['limit']=qs[_0x999c('0x36')](_0x2a9d84[_0x999c('0x4a')]['limit']);_0x2988be[_0x999c('0x34')]=qs[_0x999c('0x34')](_0x2a9d84[_0x999c('0x4a')][_0x999c('0x34')]);}_0x2988be['order']=qs[_0x999c('0x53')](_0x2a9d84['query']['sort']);_0x2988be['where']=qs[_0x999c('0x4b')](_[_0x999c('0xaf')](_0x2a9d84['query'],_0x1669ae['filters']));_0x2988be['where']['OpenchannelAccountId']=_0x11be94['id'];if(_0x2a9d84['query'][_0x999c('0x55')]){_0x2988be[_0x999c('0x54')]=_['merge'](_0x2988be[_0x999c('0x54')],{'$or':_[_0x999c('0x48')](_0x2988be[_0x999c('0x4e')],function(_0x68ad07){var _0x2ba1e3={};_0x2ba1e3[_0x68ad07]={'$like':'%'+_0x2a9d84[_0x999c('0x4a')][_0x999c('0x55')]+'%'};return _0x2ba1e3;})});}_0x2988be=_['merge']({},_0x2988be,_0x2a9d84[_0x999c('0x59')]);return db['OpenchannelInteraction']['count']({'where':_0x2988be[_0x999c('0x54')]})[_0x999c('0x26')](function(_0x1ff70f){_0x1cfa81[_0x999c('0x37')]=_0x1ff70f;if(_0x2a9d84[_0x999c('0x4a')][_0x999c('0x5a')]){_0x2988be[_0x999c('0x5b')]=[{'model':db[_0x999c('0x77')],'as':_0x999c('0xb0'),'required':![]},{'model':db[_0x999c('0xb1')],'as':_0x999c('0xb2'),'attributes':[_0x999c('0x3f'),_0x999c('0xb3'),'internal'],'required':![]},{'model':db[_0x999c('0xb4')],'as':_0x999c('0xb5'),'attributes':['id',_0x999c('0x3f'),_0x999c('0xb6')],'where':_0x2a9d84[_0x999c('0x4a')][_0x999c('0xb7')]?{'id':_0x2a9d84[_0x999c('0x4a')][_0x999c('0xb7')]}:undefined,'required':_0x2a9d84['query'][_0x999c('0xb7')]?!![]:![]}];}return db['OpenchannelInteraction'][_0x999c('0x74')](_0x2988be);})[_0x999c('0x26')](function(_0x34e051){_0x1cfa81['rows']=_0x34e051;return _0x1cfa81;});}})[_0x999c('0x26')](respondWithFilteredResult(_0x55797f,_0x2988be))['catch'](handleError(_0x55797f,null));};exports[_0x999c('0xb8')]=function(_0x283c4e,_0x5575bf,_0x52e8a4){return db[_0x999c('0x44')][_0x999c('0x60')]({'where':{'id':_0x283c4e[_0x999c('0x5e')]['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x5575bf,null))[_0x999c('0x26')](function(_0x1d121c){if(_0x1d121c){return _0x1d121c[_0x999c('0xb8')](_0x283c4e[_0x999c('0x62')][_0x999c('0xb9')],_[_0x999c('0xba')](_0x283c4e[_0x999c('0x62')],['ids','id'])||{})['spread'](function(_0x7be8cd){for(var _0x21652b=0x0;_0x21652b<_0x283c4e['body'][_0x999c('0xb9')][_0x999c('0x4f')];_0x21652b+=0x1){socket[_0x999c('0xbb')](_0x999c('0xbc'),{'UserId':Number(_0x283c4e['body'][_0x999c('0xb9')][_0x21652b]),'OpenchannelAccountId':Number(_0x283c4e[_0x999c('0x5e')]['id'])});}return _0x7be8cd;});}})['then'](respondWithResult(_0x5575bf,null))[_0x999c('0x31')](handleError(_0x5575bf,null));};exports[_0x999c('0xbd')]=function(_0x3f54cd,_0x4e2b28,_0x431bea){return db[_0x999c('0x44')]['find']({'where':{'id':_0x3f54cd['params']['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x4e2b28,null))[_0x999c('0x26')](function(_0x265c41){if(_0x265c41){return _0x265c41['removeAgents'](_0x3f54cd['query']['ids'])[_0x999c('0x26')](function(){if(_[_0x999c('0xbe')](_0x3f54cd[_0x999c('0x4a')][_0x999c('0xb9')])){for(var _0xdefce=0x0;_0xdefce<_0x3f54cd[_0x999c('0x4a')][_0x999c('0xb9')][_0x999c('0x4f')];_0xdefce+=0x1){socket['emit'](_0x999c('0xbf'),{'UserId':Number(_0x3f54cd[_0x999c('0x4a')][_0x999c('0xb9')][_0xdefce]),'OpenchannelAccountId':Number(_0x3f54cd[_0x999c('0x5e')]['id'])});}}else{socket[_0x999c('0xbb')](_0x999c('0xbf'),{'UserId':Number(_0x3f54cd[_0x999c('0x4a')][_0x999c('0xb9')]),'OpenchannelAccountId':Number(_0x3f54cd[_0x999c('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x4e2b28,null))[_0x999c('0x31')](handleError(_0x4e2b28,null));};exports[_0x999c('0xc0')]=function(_0x503aab,_0x4e07ad,_0x597c7e){var _0x5d31ce={};var _0x18bb3b={};var _0xc73b3f;var _0x2abe2f;return db[_0x999c('0x44')][_0x999c('0x70')]({'where':{'id':_0x503aab[_0x999c('0x5e')]['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x4e07ad,null))[_0x999c('0x26')](function(_0x3d8a25){if(_0x3d8a25){_0xc73b3f=_0x3d8a25;_0x18bb3b[_0x999c('0x4d')]=_[_0x999c('0x49')](db[_0x999c('0xb1')]['rawAttributes']);_0x18bb3b['query']=_[_0x999c('0x49')](_0x503aab[_0x999c('0x4a')]);_0x18bb3b[_0x999c('0x4b')]=_[_0x999c('0x4c')](_0x18bb3b[_0x999c('0x4d')],_0x18bb3b[_0x999c('0x4a')]);_0x5d31ce['attributes']=_['intersection'](_0x18bb3b[_0x999c('0x4d')],qs[_0x999c('0x5f')](_0x503aab[_0x999c('0x4a')][_0x999c('0x5f')]));_0x5d31ce[_0x999c('0x4e')]=_0x5d31ce[_0x999c('0x4e')][_0x999c('0x4f')]?_0x5d31ce[_0x999c('0x4e')]:_0x18bb3b['model'];_0x5d31ce[_0x999c('0x52')]=qs[_0x999c('0x53')](_0x503aab[_0x999c('0x4a')][_0x999c('0x53')]);_0x5d31ce[_0x999c('0x54')]=qs[_0x999c('0x4b')](_[_0x999c('0xaf')](_0x503aab['query'],_0x18bb3b[_0x999c('0x4b')]));if(_0x503aab[_0x999c('0x4a')]['filter']){_0x5d31ce[_0x999c('0x54')]=_[_0x999c('0x56')](_0x5d31ce[_0x999c('0x54')],{'$or':_[_0x999c('0x48')](_0x5d31ce['attributes'],function(_0xdb4e4c){var _0x38e2ff={};_0x38e2ff[_0xdb4e4c]={'$like':'%'+_0x503aab[_0x999c('0x4a')][_0x999c('0x55')]+'%'};return _0x38e2ff;})});}_0x5d31ce=_[_0x999c('0x56')]({},_0x5d31ce,_0x503aab[_0x999c('0x59')]);return _0xc73b3f['getAgents'](_0x5d31ce);}})[_0x999c('0x26')](function(_0x30ae83){if(_0x30ae83){_0x2abe2f=_0x30ae83[_0x999c('0x4f')];if(!_0x503aab[_0x999c('0x4a')][_0x999c('0x50')](_0x999c('0x51'))){_0x5d31ce[_0x999c('0x36')]=qs[_0x999c('0x36')](_0x503aab[_0x999c('0x4a')][_0x999c('0x36')]);_0x5d31ce[_0x999c('0x34')]=qs[_0x999c('0x34')](_0x503aab[_0x999c('0x4a')][_0x999c('0x34')]);}return _0xc73b3f['getAgents'](_0x5d31ce);}})[_0x999c('0x26')](function(_0x50d085){if(_0x50d085){return _0x50d085?{'count':_0x2abe2f,'rows':_0x50d085}:null;}})[_0x999c('0x26')](respondWithResult(_0x4e07ad,null))[_0x999c('0x31')](handleError(_0x4e07ad,null));};exports[_0x999c('0x40')]=function(_0x2bd2fa,_0x5adc12,_0x421e19){var _0x9a038a,_0x1ef534,_0x520e48;if(_[_0x999c('0x7e')](_0x2bd2fa[_0x999c('0x62')][_0x999c('0x62')])||_0x2bd2fa['body']['body']===''){throw new db[(_0x999c('0x81'))][(_0x999c('0x82'))](_0x999c('0xc1'));}if(_[_0x999c('0x7e')](_0x2bd2fa[_0x999c('0x62')]['to'])){}_0x9a038a=_0x2bd2fa[_0x999c('0x62')]['to'];return db[_0x999c('0x44')][_0x999c('0x70')]({'where':{'id':_0x2bd2fa['params']['id']}})[_0x999c('0x26')](handleEntityNotFound(_0x5adc12,null))[_0x999c('0x26')](function(_0x5a7180){if(_0x5a7180){return db[_0x999c('0x44')][_0x999c('0x60')]({'where':{'id':_0x5a7180['id']},'include':[{'model':db[_0x999c('0xc2')],'as':_0x999c('0x87'),'include':[{'model':db['CmContact'],'as':_0x999c('0x88'),'where':{[_0x5a7180[_0x999c('0x83')]]:_0x9a038a},'limit':0x1,'order':[[_0x999c('0x7b'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x5adc12,null))[_0x999c('0x26')](function(_0x467b88){if(_0x467b88&&_0x467b88[_0x999c('0x87')]){_0x1ef534=_0x467b88[_0x999c('0x64')]({'plain':!![]});if(_0x1ef534[_0x999c('0x87')]&&_0x1ef534[_0x999c('0x87')][_0x999c('0x88')][_0x999c('0x4f')]){return _0x1ef534[_0x999c('0x87')][_0x999c('0x88')][0x0];}return db['CmContact'][_0x999c('0x61')](_[_0x999c('0x1e')](_0x2bd2fa['body'],{'firstName':_0x9a038a,[_0x467b88[_0x999c('0x83')]]:_0x9a038a,'phone':_0x9a038a,'ListId':_0x1ef534['ListId']}));}})[_0x999c('0x26')](handleEntityNotFound(_0x5adc12,null))[_0x999c('0x26')](function(_0x23ea9e){if(_0x23ea9e){_0x520e48=_0x23ea9e;return db[_0x999c('0x94')][_0x999c('0x60')]({'where':{'ContactId':_0x520e48['id'],'closed':![],'OpenchannelAccountId':_0x1ef534['id']}})[_0x999c('0x26')](function(_0x2b89ba){if(_0x2b89ba){return[_0x2b89ba,![]];}return db[_0x999c('0x94')]['create']({'UserId':_0x2bd2fa[_0x999c('0x63')]['id'],'ContactId':_0x520e48['id'],'OpenchannelAccountId':_0x1ef534['id'],'lastMsgDirection':_0x999c('0xc3'),'firstMsgDirection':_0x999c('0xc3'),'Messages':[_['merge'](_0x2bd2fa[_0x999c('0x62')],{'read':![],'body':_0x2bd2fa[_0x999c('0x62')][_0x999c('0x62')],'OpenchannelAccountId':_0x1ef534['id'],'UserId':_0x2bd2fa['user']['id'],'ContactId':_0x520e48['id']})]},{'include':[{'model':db[_0x999c('0xc4')],'as':'Messages'}]})['then'](function(_0x4da901){return[_0x4da901,!![]];});});}})[_0x999c('0x97')](function(_0x3788d6,_0x52039a){if(_0x52039a){return _0x3788d6;}return db['OpenchannelMessage']['create'](_[_0x999c('0x56')](_0x2bd2fa['body'],{'read':![],'body':_0x2bd2fa['body'][_0x999c('0x62')],'OpenchannelAccountId':_0x1ef534['id'],'OpenchannelInteractionId':_0x3788d6['id'],'UserId':_0x2bd2fa[_0x999c('0x63')]['id'],'ContactId':_0x520e48['id']}))[_0x999c('0x26')](function(_0x4174d0){_0x3788d6[_0x999c('0xc5')][_0x999c('0xc6')]=[];_0x3788d6[_0x999c('0xc5')]['Messages'][_0x999c('0x9d')](_0x4174d0[_0x999c('0xc5')]);return _0x3788d6;});});}})[_0x999c('0x26')](respondWithResult(_0x5adc12,null))[_0x999c('0x31')](handleError(_0x5adc12,null));};
\ No newline at end of file
index f5c2dee..a0ee46f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['hasOwnProperty','hook','events','../../mysqldb','OpenchannelAccount','setMaxListeners','update','emit'];(function(_0x263de6,_0x283e3b){var _0x8cf806=function(_0x52d6cd){while(--_0x52d6cd){_0x263de6['push'](_0x263de6['shift']());}};_0x8cf806(++_0x283e3b);}(_0x6324,0x142));var _0x4632=function(_0x27a1a0,_0x32380c){_0x27a1a0=_0x27a1a0-0x0;var _0x38cf5c=_0x6324[_0x27a1a0];return _0x38cf5c;};'use strict';var EventEmitter=require(_0x4632('0x0'));var OpenchannelAccount=require(_0x4632('0x1'))['db'][_0x4632('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x4632('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4632('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3bea40){return function(_0x54c200,_0x13b218,_0x592e39){OpenchannelAccountEvents[_0x4632('0x5')](_0x3bea40+':'+_0x54c200['id'],_0x54c200);OpenchannelAccountEvents[_0x4632('0x5')](_0x3bea40,_0x54c200);_0x592e39(null);};}for(var e in events){if(events[_0x4632('0x6')](e)){var event=events[e];OpenchannelAccount[_0x4632('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x1be1=['OpenchannelAccount','setMaxListeners','update','remove','emit','hook'];(function(_0x118627,_0x4d515b){var _0x5264c3=function(_0xa4aee5){while(--_0xa4aee5){_0x118627['push'](_0x118627['shift']());}};_0x5264c3(++_0x4d515b);}(_0x1be1,0x192));var _0x11be=function(_0x3f1e10,_0x189bd6){_0x3f1e10=_0x3f1e10-0x0;var _0x495d54=_0x1be1[_0x3f1e10];return _0x495d54;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0x11be('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x11be('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x11be('0x2'),'afterDestroy':_0x11be('0x3')};function emitEvent(_0x200b2a){return function(_0x318d41,_0x504d3a,_0x3ce56d){OpenchannelAccountEvents[_0x11be('0x4')](_0x200b2a+':'+_0x318d41['id'],_0x318d41);OpenchannelAccountEvents[_0x11be('0x4')](_0x200b2a,_0x318d41);_0x3ce56d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x11be('0x5')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 5c27375..e325db4 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(_0xa725c,_0x5674d0){var _0x14723f=function(_0x2dda60){while(--_0x2dda60){_0xa725c['push'](_0xa725c['shift']());}};_0x14723f(++_0x5674d0);}(_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(_0x509457,_0x2b9dbd){var _0x1441c1=function(_0x1d51e9){while(--_0x1d51e9){_0x509457['push'](_0x509457['shift']());}};_0x1441c1(++_0x2b9dbd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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 856f264..cea28a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','request','then','info'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x148511,_0x13eac4){_0x148511=_0x148511-0x0;var _0x5de769=_0x9ffd[_0x148511];return _0x5de769;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});config[_0xd9ff('0xb')]=_[_0xd9ff('0xc')](config[_0xd9ff('0xb')],{'host':_0xd9ff('0xd'),'port':0x18eb});var socket=require(_0xd9ff('0xe'))(new Redis(config[_0xd9ff('0xb')]));require(_0xd9ff('0xf'))['register'](socket);function respondWithRpcPromise(_0x54a555,_0x567f79,_0x5aa954){return new BPromise(function(_0x2355ab,_0x2fd77a){return client[_0xd9ff('0x10')](_0x54a555,_0x5aa954)[_0xd9ff('0x11')](function(_0x37d2c0){logger[_0xd9ff('0x12')](_0xd9ff('0x13'),_0x567f79,_0xd9ff('0x14'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x567f79,_0xd9ff('0x14'),JSON[_0xd9ff('0x15')](_0x37d2c0));if(_0x37d2c0[_0xd9ff('0x16')]){if(_0x37d2c0[_0xd9ff('0x16')][_0xd9ff('0x17')]===0x1f4){logger['error'](_0xd9ff('0x13'),_0x567f79,_0x37d2c0[_0xd9ff('0x16')]['message']);return _0x2fd77a(_0x37d2c0[_0xd9ff('0x16')]['message']);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x567f79,_0x37d2c0['error'][_0xd9ff('0x18')]);return _0x2355ab(_0x37d2c0['error'][_0xd9ff('0x18')]);}else{logger[_0xd9ff('0x12')](_0xd9ff('0x13'),_0x567f79,_0xd9ff('0x14'));_0x2355ab(_0x37d2c0[_0xd9ff('0x19')][_0xd9ff('0x18')]);}})[_0xd9ff('0x1a')](function(_0x128588){logger[_0xd9ff('0x16')](_0xd9ff('0x13'),_0x567f79,_0x128588);_0x2fd77a(_0x128588);});});}
\ No newline at end of file
+var _0x351d=['rpc','jayson/promise','client','http','defaults','redis','socket.io-emitter','request','then','info','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger'];(function(_0x534e2b,_0x407c68){var _0x461599=function(_0x30875d){while(--_0x30875d){_0x534e2b['push'](_0x534e2b['shift']());}};_0x461599(++_0x407c68);}(_0x351d,0x90));var _0xd351=function(_0x445b22,_0x1fe88a){_0x445b22=_0x445b22-0x0;var _0x38f68f=_0x351d[_0x445b22];return _0x38f68f;};'use strict';var _=require(_0xd351('0x0'));var util=require('util');var moment=require(_0xd351('0x1'));var BPromise=require(_0xd351('0x2'));var rs=require(_0xd351('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd351('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd351('0x5'))(_0xd351('0x6'));var config=require('../../config/environment');var jayson=require(_0xd351('0x7'));var client=jayson[_0xd351('0x8')][_0xd351('0x9')]({'port':0x232a});config['redis']=_[_0xd351('0xa')](config[_0xd351('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xd351('0xc'))(new Redis(config[_0xd351('0xb')]));require('./openchannelAccount.socket')['register'](socket);function respondWithRpcPromise(_0x44bf81,_0x4904b4,_0x34cfc7){return new BPromise(function(_0x39b8c8,_0x5949a4){return client[_0xd351('0xd')](_0x44bf81,_0x34cfc7)[_0xd351('0xe')](function(_0x4ebca1){logger[_0xd351('0xf')]('OpenchannelAccount,\x20%s,\x20%s',_0x4904b4,'request\x20sent');logger[_0xd351('0x10')](_0xd351('0x11'),_0x4904b4,_0xd351('0x12'),JSON[_0xd351('0x13')](_0x4ebca1));if(_0x4ebca1['error']){if(_0x4ebca1[_0xd351('0x14')][_0xd351('0x15')]===0x1f4){logger['error'](_0xd351('0x16'),_0x4904b4,_0x4ebca1[_0xd351('0x14')][_0xd351('0x17')]);return _0x5949a4(_0x4ebca1[_0xd351('0x14')][_0xd351('0x17')]);}logger['error'](_0xd351('0x16'),_0x4904b4,_0x4ebca1['error']['message']);return _0x39b8c8(_0x4ebca1[_0xd351('0x14')]['message']);}else{logger[_0xd351('0xf')](_0xd351('0x16'),_0x4904b4,_0xd351('0x12'));_0x39b8c8(_0x4ebca1['result'][_0xd351('0x17')]);}})[_0xd351('0x18')](function(_0x77985a){logger[_0xd351('0x14')]('OpenchannelAccount,\x20%s,\x20%s',_0x4904b4,_0x77985a);_0x5949a4(_0x77985a);});});}
\ No newline at end of file
index bb55bff..1af574a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7834=['openchannelAccount:','./openchannelAccount.events','update','emit','removeListener','register'];(function(_0x3f49c0,_0x12abe1){var _0x2aab78=function(_0x527dd8){while(--_0x527dd8){_0x3f49c0['push'](_0x3f49c0['shift']());}};_0x2aab78(++_0x12abe1);}(_0x7834,0x13f));var _0x4783=function(_0x2d9f8f,_0x40bc79){_0x2d9f8f=_0x2d9f8f-0x0;var _0x240df4=_0x7834[_0x2d9f8f];return _0x240df4;};'use strict';var OpenchannelAccountEvents=require(_0x4783('0x0'));var events=['save','remove',_0x4783('0x1')];function createListener(_0x51b60a,_0x15dbb4){return function(_0x30c3ee){_0x15dbb4[_0x4783('0x2')](_0x51b60a,_0x30c3ee);};}function removeListener(_0x2ebef6,_0x29566c){return function(){OpenchannelAccountEvents[_0x4783('0x3')](_0x2ebef6,_0x29566c);};}exports[_0x4783('0x4')]=function(_0x49114c){for(var _0x1cb674=0x0,_0xf8c030=events['length'];_0x1cb674<_0xf8c030;_0x1cb674++){var _0x2dcf46=events[_0x1cb674];var _0x16c83e=createListener(_0x4783('0x5')+_0x2dcf46,_0x49114c);OpenchannelAccountEvents['on'](_0x2dcf46,_0x16c83e);}};
\ No newline at end of file
+var _0x7794=['update','emit','openchannelAccount:','save','remove'];(function(_0x4aa71a,_0x58800f){var _0x17bb3=function(_0x157183){while(--_0x157183){_0x4aa71a['push'](_0x4aa71a['shift']());}};_0x17bb3(++_0x58800f);}(_0x7794,0x7b));var _0x4779=function(_0x3f31ce,_0x4cccae){_0x3f31ce=_0x3f31ce-0x0;var _0x3683c5=_0x7794[_0x3f31ce];return _0x3683c5;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x4779('0x0'),_0x4779('0x1'),_0x4779('0x2')];function createListener(_0xa47992,_0x493318){return function(_0x309b79){_0x493318[_0x4779('0x3')](_0xa47992,_0x309b79);};}function removeListener(_0x4d3b05,_0x40e5f9){return function(){OpenchannelAccountEvents['removeListener'](_0x4d3b05,_0x40e5f9);};}exports['register']=function(_0x53fd58){for(var _0x45cd71=0x0,_0x339512=events['length'];_0x45cd71<_0x339512;_0x45cd71++){var _0xb3fe18=events[_0x45cd71];var _0x13bb66=createListener(_0x4779('0x4')+_0xb3fe18,_0x53fd58);OpenchannelAccountEvents['on'](_0xb3fe18,_0x13bb66);}};
\ No newline at end of file
index 3162395..cc02d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf084=['post','create','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show'];(function(_0x408816,_0x2bf108){var _0x41e8fe=function(_0x32723d){while(--_0x32723d){_0x408816['push'](_0x408816['shift']());}};_0x41e8fe(++_0x2bf108);}(_0xf084,0x1b5));var _0x4f08=function(_0x33d8ee,_0x21ee2a){_0x33d8ee=_0x33d8ee-0x0;var _0x3a22fb=_0xf084[_0x33d8ee];return _0x3a22fb;};'use strict';var multer=require(_0x4f08('0x0'));var util=require(_0x4f08('0x1'));var path=require('path');var timeout=require(_0x4f08('0x2'));var express=require(_0x4f08('0x3'));var router=express[_0x4f08('0x4')]();var fs_extra=require(_0x4f08('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4f08('0x6'));var config=require(_0x4f08('0x7'));var controller=require('./openchannelApplication.controller');router[_0x4f08('0x8')]('/',auth['isAuthenticated'](),controller[_0x4f08('0x9')]);router['get'](_0x4f08('0xa'),auth[_0x4f08('0xb')](),controller[_0x4f08('0xc')]);router[_0x4f08('0xd')]('/',auth[_0x4f08('0xb')](),controller[_0x4f08('0xe')]);router['put'](_0x4f08('0xa'),auth[_0x4f08('0xb')](),controller[_0x4f08('0xf')]);router[_0x4f08('0x10')]('/:id',auth[_0x4f08('0xb')](),controller['destroy']);module[_0x4f08('0x11')]=router;
\ No newline at end of file
+var _0x8c28=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','/:id','create','put','update','delete','destroy','exports','multer','util','path','express','Router'];(function(_0x51bccb,_0x119c89){var _0x310355=function(_0xc339c9){while(--_0xc339c9){_0x51bccb['push'](_0x51bccb['shift']());}};_0x310355(++_0x119c89);}(_0x8c28,0x18b));var _0x88c2=function(_0x49e052,_0x561274){_0x49e052=_0x49e052-0x0;var _0x1d4ed2=_0x8c28[_0x49e052];return _0x1d4ed2;};'use strict';var multer=require(_0x88c2('0x0'));var util=require(_0x88c2('0x1'));var path=require(_0x88c2('0x2'));var timeout=require('connect-timeout');var express=require(_0x88c2('0x3'));var router=express[_0x88c2('0x4')]();var fs_extra=require(_0x88c2('0x5'));var auth=require(_0x88c2('0x6'));var interaction=require(_0x88c2('0x7'));var config=require(_0x88c2('0x8'));var controller=require(_0x88c2('0x9'));router[_0x88c2('0xa')]('/',auth[_0x88c2('0xb')](),controller[_0x88c2('0xc')]);router[_0x88c2('0xa')](_0x88c2('0xd'),auth[_0x88c2('0xb')](),controller['show']);router['post']('/',auth[_0x88c2('0xb')](),controller[_0x88c2('0xe')]);router[_0x88c2('0xf')](_0x88c2('0xd'),auth[_0x88c2('0xb')](),controller[_0x88c2('0x10')]);router[_0x88c2('0x11')](_0x88c2('0xd'),auth[_0x88c2('0xb')](),controller[_0x88c2('0x12')]);module[_0x88c2('0x13')]=router;
\ No newline at end of file
index e5a2798..e1823ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d37=['INTEGER','STRING','noop','sequelize','exports'];(function(_0x42273d,_0x287da6){var _0x2a1741=function(_0x2c6297){while(--_0x2c6297){_0x42273d['push'](_0x42273d['shift']());}};_0x2a1741(++_0x287da6);}(_0x0d37,0x80));var _0x70d3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0d37[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x70d3('0x0'));module[_0x70d3('0x1')]={'priority':{'type':Sequelize[_0x70d3('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x70d3('0x3')],'allowNull':![],'defaultValue':_0x70d3('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x70d3('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xc63a=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0xe52ce4,_0x305a97){var _0x2417e9=function(_0x5b0607){while(--_0x5b0607){_0xe52ce4['push'](_0xe52ce4['shift']());}};_0x2417e9(++_0x305a97);}(_0xc63a,0x86));var _0xac63=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xc63a[_0x580647];return _0x5f0792;};'use strict';var Sequelize=require(_0xac63('0x0'));module[_0xac63('0x1')]={'priority':{'type':Sequelize[_0xac63('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xac63('0x3')],'allowNull':![],'defaultValue':_0xac63('0x4')},'appdata':{'type':Sequelize[_0xac63('0x5')]()},'description':{'type':Sequelize[_0xac63('0x3')]},'interval':{'type':Sequelize[_0xac63('0x3')],'defaultValue':_0xac63('0x6')}};
\ No newline at end of file
index 666e044..625c6c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x987b=['then','catch','show','params','create','body','find','eml-format','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','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','limit','set','update','destroy','error','name','send','map','rawAttributes','fieldName','type','key','keys','filters','model','attributes','intersection','query','fields','length','nolimit','offset','order','where','pick','filter','merge','VIRTUAL','options','include','OpenchannelApplication'];(function(_0x210051,_0x57744a){var _0x37fb69=function(_0x3f863b){while(--_0x3f863b){_0x210051['push'](_0x210051['shift']());}};_0x37fb69(++_0x57744a);}(_0x987b,0x12b));var _0xb987=function(_0x5928c4,_0x2800cf){_0x5928c4=_0x5928c4-0x0;var _0x37147b=_0x987b[_0x5928c4];return _0x37147b;};'use strict';var emlformat=require(_0xb987('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb987('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb987('0x2'));var moment=require(_0xb987('0x3'));var BPromise=require(_0xb987('0x4'));var Mustache=require(_0xb987('0x5'));var util=require(_0xb987('0x6'));var path=require(_0xb987('0x7'));var sox=require(_0xb987('0x8'));var csv=require(_0xb987('0x9'));var ejs=require(_0xb987('0xa'));var fs=require('fs');var fs_extra=require(_0xb987('0xb'));var _=require(_0xb987('0xc'));var squel=require(_0xb987('0xd'));var crypto=require(_0xb987('0xe'));var jsforce=require(_0xb987('0xf'));var deskjs=require(_0xb987('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb987('0x11'));var Papa=require(_0xb987('0x12'));var Redis=require(_0xb987('0x13'));var authService=require(_0xb987('0x14'));var qs=require(_0xb987('0x15'));var as=require(_0xb987('0x16'));var hardwareService=require(_0xb987('0x17'));var logger=require(_0xb987('0x18'))(_0xb987('0x19'));var utils=require(_0xb987('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xb987('0x1b'));var db=require(_0xb987('0x1c'))['db'];function respondWithStatusCode(_0x9915c,_0x5d743f){_0x5d743f=_0x5d743f||0xcc;return function(_0x25eec0){if(_0x25eec0){return _0x9915c[_0xb987('0x1d')](_0x5d743f);}return _0x9915c[_0xb987('0x1e')](_0x5d743f)[_0xb987('0x1f')]();};}function respondWithResult(_0x42275e,_0x1bcf00){_0x1bcf00=_0x1bcf00||0xc8;return function(_0x32fe0d){if(_0x32fe0d){return _0x42275e[_0xb987('0x1e')](_0x1bcf00)[_0xb987('0x20')](_0x32fe0d);}};}function respondWithFilteredResult(_0x556433,_0x388be1){return function(_0x3d1e8b){if(_0x3d1e8b){var _0x497e77=typeof _0x388be1['offset']===_0xb987('0x21')&&typeof _0x388be1['limit']===_0xb987('0x21');var _0x579364=_0x3d1e8b[_0xb987('0x22')];var _0x3dae2c=_0x497e77?0x0:_0x388be1['offset'];var _0x22d285=_0x497e77?_0x3d1e8b['count']:_0x388be1['offset']+_0x388be1[_0xb987('0x23')];var _0x4c4c92;if(_0x22d285>=_0x579364){_0x22d285=_0x579364;_0x4c4c92=0xc8;}else{_0x4c4c92=0xce;}_0x556433['status'](_0x4c4c92);return _0x556433[_0xb987('0x24')]('Content-Range',_0x3dae2c+'-'+_0x22d285+'/'+_0x579364)['json'](_0x3d1e8b);}return null;};}function patchUpdates(_0x2f01e8){return function(_0x428297){try{jsonpatch['apply'](_0x428297,_0x2f01e8,!![]);}catch(_0x2af164){return BPromise['reject'](_0x2af164);}return _0x428297['save']();};}function saveUpdates(_0x50cec0,_0x9a647e){return function(_0x4de670){if(_0x4de670){return _0x4de670[_0xb987('0x25')](_0x50cec0)['then'](function(_0x50b981){return _0x50b981;});}return null;};}function removeEntity(_0x974a5b,_0x274f5e){return function(_0x15f65f){if(_0x15f65f){return _0x15f65f[_0xb987('0x26')]()['then'](function(){_0x974a5b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5322fc,_0x18b3d9){return function(_0x5496f0){if(!_0x5496f0){_0x5322fc[_0xb987('0x1d')](0x194);}return _0x5496f0;};}function handleError(_0x2d3c6c,_0x239b66){_0x239b66=_0x239b66||0x1f4;return function(_0xdecbf2){logger[_0xb987('0x27')](_0xdecbf2['stack']);if(_0xdecbf2['name']){delete _0xdecbf2[_0xb987('0x28')];}_0x2d3c6c[_0xb987('0x1e')](_0x239b66)[_0xb987('0x29')](_0xdecbf2);};}exports['index']=function(_0x3020e6,_0x592005){var _0x4909c6={},_0x527148={},_0x28f269={'count':0x0,'rows':[]};var _0x19fbd2=_[_0xb987('0x2a')](db['OpenchannelApplication'][_0xb987('0x2b')],function(_0x3dded0){return{'name':_0x3dded0[_0xb987('0x2c')],'type':_0x3dded0[_0xb987('0x2d')][_0xb987('0x2e')]};});_0x527148['model']=_[_0xb987('0x2a')](_0x19fbd2,_0xb987('0x28'));_0x527148['query']=_[_0xb987('0x2f')](_0x3020e6['query']);_0x527148[_0xb987('0x30')]=_['intersection'](_0x527148[_0xb987('0x31')],_0x527148['query']);_0x4909c6[_0xb987('0x32')]=_[_0xb987('0x33')](_0x527148[_0xb987('0x31')],qs['fields'](_0x3020e6[_0xb987('0x34')][_0xb987('0x35')]));_0x4909c6[_0xb987('0x32')]=_0x4909c6[_0xb987('0x32')][_0xb987('0x36')]?_0x4909c6[_0xb987('0x32')]:_0x527148['model'];if(!_0x3020e6[_0xb987('0x34')]['hasOwnProperty'](_0xb987('0x37'))){_0x4909c6[_0xb987('0x23')]=qs[_0xb987('0x23')](_0x3020e6[_0xb987('0x34')][_0xb987('0x23')]);_0x4909c6[_0xb987('0x38')]=qs['offset'](_0x3020e6[_0xb987('0x34')]['offset']);}_0x4909c6[_0xb987('0x39')]=qs['sort'](_0x3020e6['query']['sort']);_0x4909c6[_0xb987('0x3a')]=qs[_0xb987('0x30')](_[_0xb987('0x3b')](_0x3020e6[_0xb987('0x34')],_0x527148[_0xb987('0x30')]),_0x19fbd2);if(_0x3020e6[_0xb987('0x34')][_0xb987('0x3c')]){_0x4909c6[_0xb987('0x3a')]=_[_0xb987('0x3d')](_0x4909c6[_0xb987('0x3a')],{'$or':_[_0xb987('0x2a')](_0x19fbd2,function(_0x5e2863){if(_0x5e2863[_0xb987('0x2d')]!==_0xb987('0x3e')){var _0x496efd={};_0x496efd[_0x5e2863['name']]={'$like':'%'+_0x3020e6[_0xb987('0x34')]['filter']+'%'};return _0x496efd;}})});}_0x4909c6=_[_0xb987('0x3d')]({},_0x4909c6,_0x3020e6[_0xb987('0x3f')]);var _0xfb2892={'where':_0x4909c6['where']};return db['OpenchannelApplication'][_0xb987('0x22')](_0xfb2892)['then'](function(_0x481034){_0x28f269[_0xb987('0x22')]=_0x481034;if(_0x3020e6['query']['includeAll']){_0x4909c6[_0xb987('0x40')]=[{'all':!![]}];}return db[_0xb987('0x41')]['findAll'](_0x4909c6);})[_0xb987('0x42')](function(_0x32006d){_0x28f269['rows']=_0x32006d;return _0x28f269;})[_0xb987('0x42')](respondWithFilteredResult(_0x592005,_0x4909c6))[_0xb987('0x43')](handleError(_0x592005,null));};exports[_0xb987('0x44')]=function(_0xfd9034,_0x23047b){var _0x55d3b8={'raw':!![],'where':{'id':_0xfd9034[_0xb987('0x45')]['id']}},_0x197df7={};_0x197df7[_0xb987('0x31')]=_[_0xb987('0x2f')](db['OpenchannelApplication']['rawAttributes']);_0x197df7[_0xb987('0x34')]=_[_0xb987('0x2f')](_0xfd9034['query']);_0x197df7[_0xb987('0x30')]=_[_0xb987('0x33')](_0x197df7[_0xb987('0x31')],_0x197df7[_0xb987('0x34')]);_0x55d3b8[_0xb987('0x32')]=_[_0xb987('0x33')](_0x197df7[_0xb987('0x31')],qs['fields'](_0xfd9034[_0xb987('0x34')][_0xb987('0x35')]));_0x55d3b8[_0xb987('0x32')]=_0x55d3b8['attributes'][_0xb987('0x36')]?_0x55d3b8[_0xb987('0x32')]:_0x197df7[_0xb987('0x31')];if(_0xfd9034[_0xb987('0x34')]['includeAll']){_0x55d3b8['include']=[{'all':!![]}];}_0x55d3b8=_['merge']({},_0x55d3b8,_0xfd9034['options']);return db['OpenchannelApplication']['find'](_0x55d3b8)[_0xb987('0x42')](handleEntityNotFound(_0x23047b,null))[_0xb987('0x42')](respondWithResult(_0x23047b,null))['catch'](handleError(_0x23047b,null));};exports['create']=function(_0x59e50b,_0x29e3f1){return db[_0xb987('0x41')][_0xb987('0x46')](_0x59e50b[_0xb987('0x47')],{})['then'](respondWithResult(_0x29e3f1,0xc9))[_0xb987('0x43')](handleError(_0x29e3f1,null));};exports['update']=function(_0x254ee7,_0x377e9f){if(_0x254ee7[_0xb987('0x47')]['id']){delete _0x254ee7['body']['id'];}return db[_0xb987('0x41')][_0xb987('0x48')]({'where':{'id':_0x254ee7[_0xb987('0x45')]['id']}})[_0xb987('0x42')](handleEntityNotFound(_0x377e9f,null))[_0xb987('0x42')](saveUpdates(_0x254ee7[_0xb987('0x47')],null))[_0xb987('0x42')](respondWithResult(_0x377e9f,null))[_0xb987('0x43')](handleError(_0x377e9f,null));};exports[_0xb987('0x26')]=function(_0x4d7e64,_0x4b75ab){return db[_0xb987('0x41')][_0xb987('0x48')]({'where':{'id':_0x4d7e64[_0xb987('0x45')]['id']}})[_0xb987('0x42')](handleEntityNotFound(_0x4b75ab,null))['then'](removeEntity(_0x4b75ab,null))[_0xb987('0x43')](handleError(_0x4b75ab,null));};
\ No newline at end of file
+var _0xbb41=['../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x5f08a6,_0x400121){var _0x5d0641=function(_0x304467){while(--_0x304467){_0x5f08a6['push'](_0x5f08a6['shift']());}};_0x5d0641(++_0x400121);}(_0xbb41,0xff));var _0x1bb4=function(_0x2e44cf,_0x16f684){_0x2e44cf=_0x2e44cf-0x0;var _0x361268=_0xbb41[_0x2e44cf];return _0x361268;};'use strict';var emlformat=require(_0x1bb4('0x0'));var rimraf=require(_0x1bb4('0x1'));var zipdir=require(_0x1bb4('0x2'));var jsonpatch=require(_0x1bb4('0x3'));var rp=require(_0x1bb4('0x4'));var moment=require(_0x1bb4('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1bb4('0x6'));var util=require(_0x1bb4('0x7'));var path=require('path');var sox=require(_0x1bb4('0x8'));var csv=require('to-csv');var ejs=require(_0x1bb4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1bb4('0xa'));var squel=require('squel');var crypto=require(_0x1bb4('0xb'));var jsforce=require(_0x1bb4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1bb4('0xd'));var Papa=require('papaparse');var Redis=require(_0x1bb4('0xe'));var authService=require(_0x1bb4('0xf'));var qs=require(_0x1bb4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1bb4('0x11'));var logger=require(_0x1bb4('0x12'))(_0x1bb4('0x13'));var utils=require(_0x1bb4('0x14'));var config=require(_0x1bb4('0x15'));var licenseUtil=require(_0x1bb4('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4248ca,_0x2f685d){_0x2f685d=_0x2f685d||0xcc;return function(_0x3cb042){if(_0x3cb042){return _0x4248ca['sendStatus'](_0x2f685d);}return _0x4248ca[_0x1bb4('0x17')](_0x2f685d)[_0x1bb4('0x18')]();};}function respondWithResult(_0xf95eb1,_0x1e1295){_0x1e1295=_0x1e1295||0xc8;return function(_0x3909b3){if(_0x3909b3){return _0xf95eb1[_0x1bb4('0x17')](_0x1e1295)[_0x1bb4('0x19')](_0x3909b3);}};}function respondWithFilteredResult(_0x1495f0,_0x273361){return function(_0x49907a){if(_0x49907a){var _0x435d49=typeof _0x273361[_0x1bb4('0x1a')]===_0x1bb4('0x1b')&&typeof _0x273361[_0x1bb4('0x1c')]===_0x1bb4('0x1b');var _0x3183b1=_0x49907a[_0x1bb4('0x1d')];var _0x204910=_0x435d49?0x0:_0x273361['offset'];var _0xd22ca3=_0x435d49?_0x49907a['count']:_0x273361[_0x1bb4('0x1a')]+_0x273361[_0x1bb4('0x1c')];var _0x22a50b;if(_0xd22ca3>=_0x3183b1){_0xd22ca3=_0x3183b1;_0x22a50b=0xc8;}else{_0x22a50b=0xce;}_0x1495f0[_0x1bb4('0x17')](_0x22a50b);return _0x1495f0['set']('Content-Range',_0x204910+'-'+_0xd22ca3+'/'+_0x3183b1)[_0x1bb4('0x19')](_0x49907a);}return null;};}function patchUpdates(_0x2d078b){return function(_0x4e8713){try{jsonpatch[_0x1bb4('0x1e')](_0x4e8713,_0x2d078b,!![]);}catch(_0x4ebe34){return BPromise[_0x1bb4('0x1f')](_0x4ebe34);}return _0x4e8713[_0x1bb4('0x20')]();};}function saveUpdates(_0x49cf48,_0x238c84){return function(_0x6e9c01){if(_0x6e9c01){return _0x6e9c01[_0x1bb4('0x21')](_0x49cf48)[_0x1bb4('0x22')](function(_0xaf428b){return _0xaf428b;});}return null;};}function removeEntity(_0xda82fb,_0x315042){return function(_0x2973da){if(_0x2973da){return _0x2973da[_0x1bb4('0x23')]()[_0x1bb4('0x22')](function(){_0xda82fb['status'](0xcc)[_0x1bb4('0x18')]();});}};}function handleEntityNotFound(_0x25c37c,_0x23b80a){return function(_0x5417f9){if(!_0x5417f9){_0x25c37c[_0x1bb4('0x24')](0x194);}return _0x5417f9;};}function handleError(_0x1f0de5,_0x5daa44){_0x5daa44=_0x5daa44||0x1f4;return function(_0x137ca9){logger['error'](_0x137ca9[_0x1bb4('0x25')]);if(_0x137ca9[_0x1bb4('0x26')]){delete _0x137ca9[_0x1bb4('0x26')];}_0x1f0de5[_0x1bb4('0x17')](_0x5daa44)[_0x1bb4('0x27')](_0x137ca9);};}exports[_0x1bb4('0x28')]=function(_0x26fb1e,_0x4316e4){var _0x3a4c48={},_0x402347={},_0x5afce7={'count':0x0,'rows':[]};var _0x452e05=_[_0x1bb4('0x29')](db[_0x1bb4('0x2a')][_0x1bb4('0x2b')],function(_0x3356f1){return{'name':_0x3356f1[_0x1bb4('0x2c')],'type':_0x3356f1['type']['key']};});_0x402347[_0x1bb4('0x2d')]=_[_0x1bb4('0x29')](_0x452e05,_0x1bb4('0x26'));_0x402347[_0x1bb4('0x2e')]=_[_0x1bb4('0x2f')](_0x26fb1e[_0x1bb4('0x2e')]);_0x402347[_0x1bb4('0x30')]=_[_0x1bb4('0x31')](_0x402347[_0x1bb4('0x2d')],_0x402347['query']);_0x3a4c48['attributes']=_[_0x1bb4('0x31')](_0x402347[_0x1bb4('0x2d')],qs[_0x1bb4('0x32')](_0x26fb1e[_0x1bb4('0x2e')][_0x1bb4('0x32')]));_0x3a4c48[_0x1bb4('0x33')]=_0x3a4c48[_0x1bb4('0x33')][_0x1bb4('0x34')]?_0x3a4c48[_0x1bb4('0x33')]:_0x402347[_0x1bb4('0x2d')];if(!_0x26fb1e[_0x1bb4('0x2e')]['hasOwnProperty']('nolimit')){_0x3a4c48[_0x1bb4('0x1c')]=qs[_0x1bb4('0x1c')](_0x26fb1e[_0x1bb4('0x2e')][_0x1bb4('0x1c')]);_0x3a4c48['offset']=qs[_0x1bb4('0x1a')](_0x26fb1e['query'][_0x1bb4('0x1a')]);}_0x3a4c48[_0x1bb4('0x35')]=qs[_0x1bb4('0x36')](_0x26fb1e[_0x1bb4('0x2e')]['sort']);_0x3a4c48[_0x1bb4('0x37')]=qs['filters'](_[_0x1bb4('0x38')](_0x26fb1e[_0x1bb4('0x2e')],_0x402347['filters']),_0x452e05);if(_0x26fb1e[_0x1bb4('0x2e')][_0x1bb4('0x39')]){_0x3a4c48[_0x1bb4('0x37')]=_[_0x1bb4('0x3a')](_0x3a4c48[_0x1bb4('0x37')],{'$or':_[_0x1bb4('0x29')](_0x452e05,function(_0xf989b7){if(_0xf989b7[_0x1bb4('0x3b')]!==_0x1bb4('0x3c')){var _0x388f9a={};_0x388f9a[_0xf989b7[_0x1bb4('0x26')]]={'$like':'%'+_0x26fb1e[_0x1bb4('0x2e')][_0x1bb4('0x39')]+'%'};return _0x388f9a;}})});}_0x3a4c48=_[_0x1bb4('0x3a')]({},_0x3a4c48,_0x26fb1e[_0x1bb4('0x3d')]);var _0x4b171d={'where':_0x3a4c48[_0x1bb4('0x37')]};return db[_0x1bb4('0x2a')][_0x1bb4('0x1d')](_0x4b171d)[_0x1bb4('0x22')](function(_0x3e0eac){_0x5afce7[_0x1bb4('0x1d')]=_0x3e0eac;if(_0x26fb1e[_0x1bb4('0x2e')][_0x1bb4('0x3e')]){_0x3a4c48[_0x1bb4('0x3f')]=[{'all':!![]}];}return db[_0x1bb4('0x2a')]['findAll'](_0x3a4c48);})[_0x1bb4('0x22')](function(_0x4b3604){_0x5afce7['rows']=_0x4b3604;return _0x5afce7;})[_0x1bb4('0x22')](respondWithFilteredResult(_0x4316e4,_0x3a4c48))[_0x1bb4('0x40')](handleError(_0x4316e4,null));};exports['show']=function(_0x3d53ee,_0x47f7e2){var _0x152123={'raw':!![],'where':{'id':_0x3d53ee[_0x1bb4('0x41')]['id']}},_0xdbb5fa={};_0xdbb5fa[_0x1bb4('0x2d')]=_['keys'](db[_0x1bb4('0x2a')][_0x1bb4('0x2b')]);_0xdbb5fa['query']=_[_0x1bb4('0x2f')](_0x3d53ee[_0x1bb4('0x2e')]);_0xdbb5fa['filters']=_[_0x1bb4('0x31')](_0xdbb5fa[_0x1bb4('0x2d')],_0xdbb5fa[_0x1bb4('0x2e')]);_0x152123['attributes']=_['intersection'](_0xdbb5fa['model'],qs['fields'](_0x3d53ee[_0x1bb4('0x2e')][_0x1bb4('0x32')]));_0x152123['attributes']=_0x152123[_0x1bb4('0x33')][_0x1bb4('0x34')]?_0x152123[_0x1bb4('0x33')]:_0xdbb5fa[_0x1bb4('0x2d')];if(_0x3d53ee[_0x1bb4('0x2e')]['includeAll']){_0x152123[_0x1bb4('0x3f')]=[{'all':!![]}];}_0x152123=_[_0x1bb4('0x3a')]({},_0x152123,_0x3d53ee['options']);return db[_0x1bb4('0x2a')][_0x1bb4('0x42')](_0x152123)[_0x1bb4('0x22')](handleEntityNotFound(_0x47f7e2,null))[_0x1bb4('0x22')](respondWithResult(_0x47f7e2,null))[_0x1bb4('0x40')](handleError(_0x47f7e2,null));};exports['create']=function(_0x394202,_0x35866b){return db[_0x1bb4('0x2a')][_0x1bb4('0x43')](_0x394202[_0x1bb4('0x44')],{})[_0x1bb4('0x22')](respondWithResult(_0x35866b,0xc9))[_0x1bb4('0x40')](handleError(_0x35866b,null));};exports[_0x1bb4('0x21')]=function(_0x5a2fb2,_0x313956){if(_0x5a2fb2[_0x1bb4('0x44')]['id']){delete _0x5a2fb2[_0x1bb4('0x44')]['id'];}return db[_0x1bb4('0x2a')][_0x1bb4('0x42')]({'where':{'id':_0x5a2fb2[_0x1bb4('0x41')]['id']}})[_0x1bb4('0x22')](handleEntityNotFound(_0x313956,null))[_0x1bb4('0x22')](saveUpdates(_0x5a2fb2['body'],null))[_0x1bb4('0x22')](respondWithResult(_0x313956,null))[_0x1bb4('0x40')](handleError(_0x313956,null));};exports[_0x1bb4('0x23')]=function(_0x11b5b1,_0x5d455b){return db['OpenchannelApplication'][_0x1bb4('0x42')]({'where':{'id':_0x11b5b1[_0x1bb4('0x41')]['id']}})[_0x1bb4('0x22')](handleEntityNotFound(_0x5d455b,null))[_0x1bb4('0x22')](removeEntity(_0x5d455b,null))[_0x1bb4('0x40')](handleError(_0x5d455b,null));};
\ No newline at end of file
index cee51f0..e76e016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f27=['util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./openchannelApplication.attributes','OpenchannelApplication','utf8mb4','utf8mb4_unicode_ci'];(function(_0x3615f1,_0x47d835){var _0x14ffa2=function(_0x2c0607){while(--_0x2c0607){_0x3615f1['push'](_0x3615f1['shift']());}};_0x14ffa2(++_0x47d835);}(_0x7f27,0x1d9));var _0x77f2=function(_0x3a6bf2,_0x651a4e){_0x3a6bf2=_0x3a6bf2-0x0;var _0xc91d2=_0x7f27[_0x3a6bf2];return _0xc91d2;};'use strict';var _=require('lodash');var util=require(_0x77f2('0x0'));var logger=require(_0x77f2('0x1'))(_0x77f2('0x2'));var moment=require(_0x77f2('0x3'));var BPromise=require(_0x77f2('0x4'));var rp=require(_0x77f2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x77f2('0x6'));var attributes=require(_0x77f2('0x7'));module['exports']=function(_0x317e96,_0x373d79){return _0x317e96['define'](_0x77f2('0x8'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x77f2('0x9'),'collate':_0x77f2('0xa')});};
\ No newline at end of file
+var _0x49fd=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','define','openchannel_applications','utf8mb4_unicode_ci','lodash','util'];(function(_0x83fd34,_0x58309c){var _0x45c003=function(_0x32a3e6){while(--_0x32a3e6){_0x83fd34['push'](_0x83fd34['shift']());}};_0x45c003(++_0x58309c);}(_0x49fd,0x8e));var _0xd49f=function(_0x405ce7,_0x5dbeeb){_0x405ce7=_0x405ce7-0x0;var _0x4d497a=_0x49fd[_0x405ce7];return _0x4d497a;};'use strict';var _=require(_0xd49f('0x0'));var util=require(_0xd49f('0x1'));var logger=require(_0xd49f('0x2'))(_0xd49f('0x3'));var moment=require('moment');var BPromise=require(_0xd49f('0x4'));var rp=require(_0xd49f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd49f('0x6'));var config=require(_0xd49f('0x7'));var attributes=require('./openchannelApplication.attributes');module[_0xd49f('0x8')]=function(_0x3a92f7,_0x11a5df){return _0x3a92f7[_0xd49f('0x9')]('OpenchannelApplication',attributes,{'tableName':_0xd49f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xd49f('0xb')});};
\ No newline at end of file
index 3102825..bcfb0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2796=['error','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelApplication','update','body','options','where','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s'];(function(_0x53efb8,_0x28fa89){var _0x6fc966=function(_0xe78ee7){while(--_0xe78ee7){_0x53efb8['push'](_0x53efb8['shift']());}};_0x6fc966(++_0x28fa89);}(_0x2796,0xb9));var _0x6279=function(_0x130c83,_0x16593f){_0x130c83=_0x130c83-0x0;var _0x13ce72=_0x2796[_0x130c83];return _0x13ce72;};'use strict';var _=require(_0x6279('0x0'));var util=require(_0x6279('0x1'));var moment=require('moment');var BPromise=require(_0x6279('0x2'));var rs=require(_0x6279('0x3'));var fs=require('fs');var Redis=require(_0x6279('0x4'));var db=require(_0x6279('0x5'))['db'];var utils=require(_0x6279('0x6'));var logger=require(_0x6279('0x7'))(_0x6279('0x8'));var config=require(_0x6279('0x9'));var jayson=require(_0x6279('0xa'));var client=jayson[_0x6279('0xb')][_0x6279('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5d6515,_0x5b562d,_0x5e5940){return new BPromise(function(_0x2a314e,_0x451219){return client['request'](_0x5d6515,_0x5e5940)[_0x6279('0xd')](function(_0x48f7e5){logger[_0x6279('0xe')]('OpenchannelApplication,\x20%s,\x20%s',_0x5b562d,_0x6279('0xf'));logger[_0x6279('0x10')](_0x6279('0x11'),_0x5b562d,_0x6279('0xf'),JSON['stringify'](_0x48f7e5));if(_0x48f7e5[_0x6279('0x12')]){if(_0x48f7e5[_0x6279('0x12')]['code']===0x1f4){logger[_0x6279('0x12')](_0x6279('0x13'),_0x5b562d,_0x48f7e5[_0x6279('0x12')]['message']);return _0x451219(_0x48f7e5[_0x6279('0x12')][_0x6279('0x14')]);}logger[_0x6279('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x5b562d,_0x48f7e5[_0x6279('0x12')][_0x6279('0x14')]);return _0x2a314e(_0x48f7e5[_0x6279('0x12')][_0x6279('0x14')]);}else{logger[_0x6279('0xe')](_0x6279('0x13'),_0x5b562d,_0x6279('0xf'));_0x2a314e(_0x48f7e5[_0x6279('0x15')]['message']);}})[_0x6279('0x16')](function(_0x27f743){logger[_0x6279('0x12')](_0x6279('0x13'),_0x5b562d,_0x27f743);_0x451219(_0x27f743);});});}exports[_0x6279('0x17')]=function(_0x496276){var _0x405535=this;return new Promise(function(_0x1059b2,_0x2d9e4b){return db['OpenchannelApplication'][_0x6279('0x18')](_0x496276[_0x6279('0x19')],{'raw':_0x496276[_0x6279('0x1a')]?_0x496276['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x496276[_0x6279('0x1a')]?_0x496276['options'][_0x6279('0x1b')]||null:null,'attributes':_0x496276[_0x6279('0x1a')]?_0x496276['options']['attributes']||null:null,'limit':_0x496276[_0x6279('0x1a')]?_0x496276[_0x6279('0x1a')]['limit']||null:null})[_0x6279('0xd')](function(_0x16e067){logger[_0x6279('0xe')](_0x6279('0x17'),_0x496276);logger[_0x6279('0x10')](_0x6279('0x17'),_0x496276,JSON[_0x6279('0x1c')](_0x16e067));_0x1059b2(_0x16e067);})[_0x6279('0x16')](function(_0x59cf1d){logger[_0x6279('0x12')]('UpdateOpenchannelApplication',_0x59cf1d[_0x6279('0x14')],_0x496276);_0x2d9e4b(_0x405535['error'](0x1f4,_0x59cf1d[_0x6279('0x14')]));});});};
\ No newline at end of file
+var _0x6b63=['OpenchannelApplication','update','body','options','raw','where','attributes','limit','then','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','http','request','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelApplication'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x6b63,0x165));var _0x36b6=function(_0x418093,_0x2033cf){_0x418093=_0x418093-0x0;var _0xfdeccb=_0x6b63[_0x418093];return _0xfdeccb;};'use strict';var _=require(_0x36b6('0x0'));var util=require(_0x36b6('0x1'));var moment=require(_0x36b6('0x2'));var BPromise=require('bluebird');var rs=require(_0x36b6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x36b6('0x4'))['db'];var utils=require(_0x36b6('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x36b6('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x36b6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x55768a,_0xf75b27,_0x17b877){return new BPromise(function(_0x414e6c,_0x168cd1){return client[_0x36b6('0x8')](_0x55768a,_0x17b877)['then'](function(_0x2b10aa){logger[_0x36b6('0x9')](_0x36b6('0xa'),_0xf75b27,_0x36b6('0xb'));logger['debug'](_0x36b6('0xc'),_0xf75b27,'request\x20sent',JSON[_0x36b6('0xd')](_0x2b10aa));if(_0x2b10aa[_0x36b6('0xe')]){if(_0x2b10aa[_0x36b6('0xe')][_0x36b6('0xf')]===0x1f4){logger['error'](_0x36b6('0xa'),_0xf75b27,_0x2b10aa['error']['message']);return _0x168cd1(_0x2b10aa['error'][_0x36b6('0x10')]);}logger['error'](_0x36b6('0xa'),_0xf75b27,_0x2b10aa[_0x36b6('0xe')][_0x36b6('0x10')]);return _0x414e6c(_0x2b10aa[_0x36b6('0xe')][_0x36b6('0x10')]);}else{logger['info'](_0x36b6('0xa'),_0xf75b27,'request\x20sent');_0x414e6c(_0x2b10aa[_0x36b6('0x11')]['message']);}})[_0x36b6('0x12')](function(_0x377432){logger[_0x36b6('0xe')](_0x36b6('0xa'),_0xf75b27,_0x377432);_0x168cd1(_0x377432);});});}exports[_0x36b6('0x13')]=function(_0x5611d4){var _0x491620=this;return new Promise(function(_0x435f52,_0x1d9faf){return db[_0x36b6('0x14')][_0x36b6('0x15')](_0x5611d4[_0x36b6('0x16')],{'raw':_0x5611d4[_0x36b6('0x17')]?_0x5611d4[_0x36b6('0x17')][_0x36b6('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5611d4[_0x36b6('0x17')]?_0x5611d4['options'][_0x36b6('0x19')]||null:null,'attributes':_0x5611d4[_0x36b6('0x17')]?_0x5611d4[_0x36b6('0x17')][_0x36b6('0x1a')]||null:null,'limit':_0x5611d4[_0x36b6('0x17')]?_0x5611d4['options'][_0x36b6('0x1b')]||null:null})[_0x36b6('0x1c')](function(_0x40a1d){logger[_0x36b6('0x9')]('UpdateOpenchannelApplication',_0x5611d4);logger['debug'](_0x36b6('0x13'),_0x5611d4,JSON[_0x36b6('0xd')](_0x40a1d));_0x435f52(_0x40a1d);})[_0x36b6('0x12')](function(_0x3b63a0){logger[_0x36b6('0xe')]('UpdateOpenchannelApplication',_0x3b63a0[_0x36b6('0x10')],_0x5611d4);_0x1d9faf(_0x491620['error'](0x1f4,_0x3b63a0['message']));});});};
\ No newline at end of file
index 8114f17..14b1358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb77f=['isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','update','delete','openchannelinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','index','/describe'];(function(_0x1945cb,_0x4b58f8){var _0x5cfaf7=function(_0xf21e99){while(--_0xf21e99){_0x1945cb['push'](_0x1945cb['shift']());}};_0x5cfaf7(++_0x4b58f8);}(_0xb77f,0x17f));var _0xfb77=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb77f[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xfb77('0x0'));var util=require(_0xfb77('0x1'));var path=require(_0xfb77('0x2'));var timeout=require(_0xfb77('0x3'));var express=require(_0xfb77('0x4'));var router=express[_0xfb77('0x5')]();var fs_extra=require(_0xfb77('0x6'));var auth=require(_0xfb77('0x7'));var interaction=require(_0xfb77('0x8'));var config=require('../../config/environment');var controller=require(_0xfb77('0x9'));router[_0xfb77('0xa')]('/',auth['isAuthenticated'](),controller[_0xfb77('0xb')]);router[_0xfb77('0xa')](_0xfb77('0xc'),auth[_0xfb77('0xd')](),controller[_0xfb77('0xe')]);router[_0xfb77('0xa')](_0xfb77('0xf'),auth[_0xfb77('0xd')](),controller[_0xfb77('0x10')]);router[_0xfb77('0xa')](_0xfb77('0x11'),auth[_0xfb77('0xd')](),controller[_0xfb77('0x12')]);router['get'](_0xfb77('0x13'),auth[_0xfb77('0xd')](),controller[_0xfb77('0x14')]);router[_0xfb77('0x15')]('/',auth['isAuthenticated'](),controller[_0xfb77('0x16')]);router[_0xfb77('0x15')](_0xfb77('0x11'),auth['isAuthenticated'](),controller[_0xfb77('0x17')]);router['post'](_0xfb77('0x18'),auth[_0xfb77('0xd')](),interaction[_0xfb77('0x19')](_0xfb77('0x1a'),_0xfb77('0x1b')),controller[_0xfb77('0x1c')]);router[_0xfb77('0x1d')](_0xfb77('0xf'),auth['isAuthenticated'](),interaction[_0xfb77('0x19')](_0xfb77('0x1a'),'openchannelinteraction:update'),controller[_0xfb77('0x1e')]);router[_0xfb77('0x1f')](_0xfb77('0xf'),auth[_0xfb77('0xd')](),interaction[_0xfb77('0x19')](_0xfb77('0x1a'),_0xfb77('0x20')),controller[_0xfb77('0x21')]);router[_0xfb77('0x1f')](_0xfb77('0x18'),auth['isAuthenticated'](),controller[_0xfb77('0x22')]);module[_0xfb77('0x23')]=router;
\ No newline at end of file
+var _0x0584=['getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','/:id','openchannelinteraction:destroy','destroy','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','show','/:id/messages'];(function(_0x17aaba,_0x5b7c1c){var _0x43c429=function(_0x4d0503){while(--_0x4d0503){_0x17aaba['push'](_0x17aaba['shift']());}};_0x43c429(++_0x5b7c1c);}(_0x0584,0x11b));var _0x4058=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x0584[_0xd1d19a];return _0x52a79d;};'use strict';var multer=require(_0x4058('0x0'));var util=require(_0x4058('0x1'));var path=require('path');var timeout=require(_0x4058('0x2'));var express=require(_0x4058('0x3'));var router=express[_0x4058('0x4')]();var fs_extra=require(_0x4058('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4058('0x6'));router[_0x4058('0x7')]('/',auth[_0x4058('0x8')](),controller[_0x4058('0x9')]);router[_0x4058('0x7')](_0x4058('0xa'),auth[_0x4058('0x8')](),controller[_0x4058('0xb')]);router[_0x4058('0x7')]('/:id',auth[_0x4058('0x8')](),controller[_0x4058('0xc')]);router['get'](_0x4058('0xd'),auth[_0x4058('0x8')](),controller[_0x4058('0xe')]);router[_0x4058('0x7')](_0x4058('0xf'),auth[_0x4058('0x8')](),controller[_0x4058('0x10')]);router[_0x4058('0x11')]('/',auth[_0x4058('0x8')](),controller[_0x4058('0x12')]);router['post'](_0x4058('0xd'),auth[_0x4058('0x8')](),controller[_0x4058('0x13')]);router[_0x4058('0x11')](_0x4058('0x14'),auth[_0x4058('0x8')](),interaction[_0x4058('0x15')](_0x4058('0x16'),_0x4058('0x17')),controller[_0x4058('0x18')]);router[_0x4058('0x19')]('/:id',auth[_0x4058('0x8')](),interaction['tracked']('openchannel',_0x4058('0x1a')),controller[_0x4058('0x1b')]);router['delete'](_0x4058('0x1c'),auth['isAuthenticated'](),interaction[_0x4058('0x15')]('openchannel',_0x4058('0x1d')),controller[_0x4058('0x1e')]);router['delete'](_0x4058('0x14'),auth[_0x4058('0x8')](),controller[_0x4058('0x1f')]);module[_0x4058('0x20')]=router;
\ No newline at end of file
index f262fb8..839bb0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff4=['ENUM','out','DATE','STRING'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x9ff4,0x196));var _0x49ff=function(_0x19496a,_0x54861a){_0x19496a=_0x19496a-0x0;var _0x3f04b2=_0x9ff4[_0x19496a];return _0x3f04b2;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x49ff('0x0')]},'disposition':{'type':Sequelize[_0x49ff('0x1')]},'secondDisposition':{'type':Sequelize[_0x49ff('0x1')]},'thirdDisposition':{'type':Sequelize[_0x49ff('0x1')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x49ff('0x0')]},'threadId':{'type':Sequelize[_0x49ff('0x1')]},'externalUrl':{'type':Sequelize[_0x49ff('0x1')]},'lastMsgAt':{'type':Sequelize[_0x49ff('0x0')]},'firstMsgDirection':{'type':Sequelize[_0x49ff('0x2')]('in',_0x49ff('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x49ff('0x2')]('in',_0x49ff('0x3')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x54ef=['ENUM','sequelize','exports','BOOLEAN','STRING','DATE','out'];(function(_0x3d2163,_0x3f3c98){var _0x50a23b=function(_0x1bb878){while(--_0x1bb878){_0x3d2163['push'](_0x3d2163['shift']());}};_0x50a23b(++_0x3f3c98);}(_0x54ef,0x112));var _0xf54e=function(_0x284133,_0x339e26){_0x284133=_0x284133-0x0;var _0x2d23c7=_0x54ef[_0x284133];return _0x2d23c7;};'use strict';var Sequelize=require(_0xf54e('0x0'));module[_0xf54e('0x1')]={'closed':{'type':Sequelize[_0xf54e('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xf54e('0x3')]},'secondDisposition':{'type':Sequelize[_0xf54e('0x3')]},'thirdDisposition':{'type':Sequelize[_0xf54e('0x3')]},'note':{'type':Sequelize[_0xf54e('0x3')]},'read1stAt':{'type':Sequelize[_0xf54e('0x4')]},'threadId':{'type':Sequelize[_0xf54e('0x3')]},'externalUrl':{'type':Sequelize[_0xf54e('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xf54e('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xf54e('0x6')]('in',_0xf54e('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0xf54e('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 852b98b..adf4177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f07=['../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','getOptions','findAll','openchannel','user','catch','show','query','from','params','model','keys','OpenchannelInteraction','filters','attributes','include','merge','find','create','body','describe','OpenchannelMessage','addMessage','ids','getMessages','findOne','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','OpenchannelInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','rows','addTags','setTags','omit','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','root','files','server','attachments','transcript-%d-%s.zip','push','User','CmContact','Contact','firstName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','Owner','fullname','get','mkdirSync','N.A.','closed','closedAt','disposition','threadId','Private','basename','existsSync','pipe','createWriteStream','out','lastName','value','downloadInteraction.ejs','transcript-','Openchannel','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','zip-dir','moment','util','ejs','../../components/interaction/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f07,0x181));var _0x76f0=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x6f07[_0x19950b];return _0x3c6b41;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x76f0('0x0'));var moment=require(_0x76f0('0x1'));var util=require(_0x76f0('0x2'));var path=require('path');var ejs=require(_0x76f0('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x76f0('0x4'));var qs=require(_0x76f0('0x5'));var pdf=require(_0x76f0('0x6'));var logger=require('../../config/logger')(_0x76f0('0x7'));var config=require(_0x76f0('0x8'));var db=require(_0x76f0('0x9'))['db'];config['redis']=_[_0x76f0('0xa')](config['redis'],{'host':_0x76f0('0xb'),'port':0x18eb});var socket=require(_0x76f0('0xc'))(new Redis(config[_0x76f0('0xd')]));require(_0x76f0('0xe'))[_0x76f0('0xf')](socket);function respondWithStatusCode(_0x2e69a7,_0x23dfd4){_0x23dfd4=_0x23dfd4||0xcc;return function(_0x18918e){if(_0x18918e){return _0x2e69a7[_0x76f0('0x10')](_0x23dfd4);}return _0x2e69a7[_0x76f0('0x11')](_0x23dfd4)[_0x76f0('0x12')]();};}function respondWithResult(_0x42b9f1,_0x598635){_0x598635=_0x598635||0xc8;return function(_0x534a1e){if(_0x534a1e){return _0x42b9f1[_0x76f0('0x11')](_0x598635)['json'](_0x534a1e);}};}function respondWithFilteredResult(_0x21ee15,_0x65dab2){return function(_0x5a914a){if(_0x5a914a){var _0x16f633=typeof _0x65dab2[_0x76f0('0x13')]==='undefined'&&typeof _0x65dab2['limit']===_0x76f0('0x14');var _0x103e4a=_0x5a914a[_0x76f0('0x15')];var _0x112535=_0x16f633?0x0:_0x65dab2[_0x76f0('0x13')];var _0x573258=_0x16f633?_0x5a914a['count']:_0x65dab2[_0x76f0('0x13')]+_0x65dab2[_0x76f0('0x16')];var _0x33dfcf;if(_0x573258>=_0x103e4a){_0x573258=_0x103e4a;_0x33dfcf=0xc8;}else{_0x33dfcf=0xce;}_0x21ee15[_0x76f0('0x11')](_0x33dfcf);return _0x21ee15[_0x76f0('0x17')](_0x76f0('0x18'),_0x112535+'-'+_0x573258+'/'+_0x103e4a)[_0x76f0('0x19')](_0x5a914a);}return null;};}function saveUpdates(_0x2bc4fe){return function(_0x4a03ad){if(_0x4a03ad){return _0x4a03ad[_0x76f0('0x1a')](_0x2bc4fe)[_0x76f0('0x1b')](function(_0x141dfd){return _0x141dfd;});}return null;};}function removeEntity(_0x311f08){return function(_0xc7fe78){if(_0xc7fe78){return _0xc7fe78[_0x76f0('0x1c')]()['then'](function(){_0x311f08['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a7af7){return function(_0x1d9828){if(!_0x1d9828){_0x5a7af7[_0x76f0('0x10')](0x194);}return _0x1d9828;};}function handleError(_0x10068b,_0xbef6e2){_0xbef6e2=_0xbef6e2||0x1f4;return function(_0x42a277){logger[_0x76f0('0x1d')](_0x42a277[_0x76f0('0x1e')]);if(_0x42a277[_0x76f0('0x1f')]){delete _0x42a277[_0x76f0('0x1f')];}_0x10068b[_0x76f0('0x11')](_0xbef6e2)['send'](_0x42a277);};}exports[_0x76f0('0x20')]=function(_0x52ece5,_0x349ae1){var _0x47df40={};var _0x5b8f69=_[_0x76f0('0x21')](db['OpenchannelInteraction'][_0x76f0('0x22')],function(_0x6c4aef){return{'name':_0x6c4aef[_0x76f0('0x23')],'type':_0x6c4aef[_0x76f0('0x24')]['key']};});_0x47df40=qs[_0x76f0('0x25')](_0x5b8f69,_0x52ece5);return interaction[_0x76f0('0x26')](_0x76f0('0x27'),_0x52ece5['query'],_0x52ece5[_0x76f0('0x28')],_0x47df40,_0x5b8f69)[_0x76f0('0x1b')](respondWithFilteredResult(_0x349ae1,_0x47df40))[_0x76f0('0x29')](handleError(_0x349ae1,null));};exports[_0x76f0('0x2a')]=function(_0x5a37e1,_0x22c12b){var _0x3ddc13={};if(_0x5a37e1[_0x76f0('0x2b')][_0x76f0('0x24')]&&_0x5a37e1[_0x76f0('0x2b')][_0x76f0('0x24')]==='from'){_0x3ddc13[_0x76f0('0x2c')]=_0x5a37e1[_0x76f0('0x2d')]['id'];}else{_0x3ddc13['id']=_0x5a37e1['params']['id'];}var _0x1da34a={'raw':![],'where':_0x3ddc13},_0x9bf734={};_0x9bf734[_0x76f0('0x2e')]=_[_0x76f0('0x2f')](db[_0x76f0('0x30')]['rawAttributes']);_0x9bf734[_0x76f0('0x2b')]=_[_0x76f0('0x2f')](_0x5a37e1[_0x76f0('0x2b')]);_0x9bf734[_0x76f0('0x31')]=_['intersection'](_0x9bf734[_0x76f0('0x2e')],_0x9bf734[_0x76f0('0x2b')]);_0x1da34a['attributes']=_['intersection'](_0x9bf734[_0x76f0('0x2e')],qs['fields'](_0x5a37e1[_0x76f0('0x2b')]['fields']));_0x1da34a[_0x76f0('0x32')]=_0x1da34a[_0x76f0('0x32')]['length']?_0x1da34a[_0x76f0('0x32')]:_0x9bf734[_0x76f0('0x2e')];if(_0x5a37e1[_0x76f0('0x2b')]['includeAll']){_0x1da34a[_0x76f0('0x33')]=[{'all':!![]}];}_0x1da34a=_[_0x76f0('0x34')]({},_0x1da34a,_0x5a37e1['options']);return db[_0x76f0('0x30')][_0x76f0('0x35')](_0x1da34a)['then'](handleEntityNotFound(_0x22c12b,null))[_0x76f0('0x1b')](respondWithResult(_0x22c12b,null))[_0x76f0('0x29')](handleError(_0x22c12b,null));};exports[_0x76f0('0x36')]=function(_0x30d713,_0x3ead7c){return db[_0x76f0('0x30')]['create'](_0x30d713[_0x76f0('0x37')],{})[_0x76f0('0x1b')](respondWithResult(_0x3ead7c,0xc9))[_0x76f0('0x29')](handleError(_0x3ead7c,null));};exports[_0x76f0('0x1a')]=function(_0x4536ad,_0x5a1688){if(_0x4536ad[_0x76f0('0x37')]['id']){delete _0x4536ad[_0x76f0('0x37')]['id'];}return db[_0x76f0('0x30')]['find']({'where':{'id':_0x4536ad[_0x76f0('0x2d')]['id']}})[_0x76f0('0x1b')](handleEntityNotFound(_0x5a1688,null))[_0x76f0('0x1b')](saveUpdates(_0x4536ad[_0x76f0('0x37')],null))[_0x76f0('0x1b')](respondWithResult(_0x5a1688,null))[_0x76f0('0x29')](handleError(_0x5a1688,null));};exports['destroy']=function(_0x4af086,_0x37d11c){return db[_0x76f0('0x30')][_0x76f0('0x35')]({'where':{'id':_0x4af086[_0x76f0('0x2d')]['id']}})[_0x76f0('0x1b')](handleEntityNotFound(_0x37d11c,null))[_0x76f0('0x1b')](removeEntity(_0x37d11c,null))[_0x76f0('0x29')](handleError(_0x37d11c,null));};exports[_0x76f0('0x38')]=function(_0x1c016d,_0x36332f){return db['OpenchannelInteraction'][_0x76f0('0x38')]()[_0x76f0('0x1b')](respondWithResult(_0x36332f,null))[_0x76f0('0x29')](handleError(_0x36332f,null));};exports['addMessage']=function(_0x241c7c,_0x2c14b3){return db[_0x76f0('0x39')][_0x76f0('0x35')]({'where':{'id':_0x241c7c[_0x76f0('0x2d')]['id']}})[_0x76f0('0x1b')](handleEntityNotFound(_0x2c14b3,null))['then'](function(_0x3ea811){if(_0x3ea811){return _0x3ea811[_0x76f0('0x3a')](_0x241c7c[_0x76f0('0x37')][_0x76f0('0x3b')],_['omit'](_0x241c7c['body'],[_0x76f0('0x3b'),'id'])||{});}})['then'](respondWithResult(_0x2c14b3,null))[_0x76f0('0x29')](handleError(_0x2c14b3,null));};exports[_0x76f0('0x3c')]=function(_0x19fe77,_0x3d85e4){var _0x3211cb={'raw':![],'where':{}};var _0x3363fa={};var _0x1aef74={'count':0x0,'rows':[]};return db[_0x76f0('0x30')][_0x76f0('0x3d')]({'where':{'id':_0x19fe77[_0x76f0('0x2d')]['id']}})[_0x76f0('0x1b')](handleEntityNotFound(_0x3d85e4,null))['then'](function(_0x38d5c5){if(_0x38d5c5){_0x3363fa[_0x76f0('0x2e')]=_['keys'](db['OpenchannelMessage']['rawAttributes']);_0x3363fa['query']=_[_0x76f0('0x2f')](_0x19fe77['query']);_0x3363fa[_0x76f0('0x31')]=_[_0x76f0('0x3e')](_0x3363fa['model'],_0x3363fa[_0x76f0('0x2b')]);_0x3211cb[_0x76f0('0x32')]=_[_0x76f0('0x3e')](_0x3363fa[_0x76f0('0x2e')],qs[_0x76f0('0x3f')](_0x19fe77['query'][_0x76f0('0x3f')]));_0x3211cb[_0x76f0('0x32')]=_0x3211cb[_0x76f0('0x32')]['length']?_0x3211cb[_0x76f0('0x32')]:_0x3363fa[_0x76f0('0x2e')];if(!_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x40')](_0x76f0('0x41'))){_0x3211cb['limit']=qs[_0x76f0('0x16')](_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x16')]);_0x3211cb['offset']=qs[_0x76f0('0x13')](_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x13')]);}_0x3211cb['order']=qs['sort'](_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x42')]);_0x3211cb[_0x76f0('0x43')]=qs[_0x76f0('0x31')](_[_0x76f0('0x44')](_0x19fe77[_0x76f0('0x2b')],_0x3363fa['filters']));_0x3211cb[_0x76f0('0x43')][_0x76f0('0x45')]=_0x38d5c5['id'];if(_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x46')]){_0x3211cb['where']=_[_0x76f0('0x34')](_0x3211cb['where'],{'$or':_[_0x76f0('0x21')](_0x3211cb['attributes'],function(_0x94c3dd){var _0x1e0885={};_0x1e0885[_0x94c3dd]={'$like':'%'+_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x46')]+'%'};return _0x1e0885;})});}if(_0x19fe77['query'][_0x76f0('0x47')]){var _0x388bc5=_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x47')][_0x76f0('0x48')](',');var _0x3b3ce9={};_0x3b3ce9[_0x388bc5[0x0]]={'$gte':moment(_0x388bc5[0x1])[_0x76f0('0x49')](_0x76f0('0x4a'))};_0x3211cb['where']=_['merge'](_0x3211cb['where'],_0x3b3ce9);}_0x3211cb=_['merge']({},_0x3211cb,_0x19fe77[_0x76f0('0x4b')]);return db[_0x76f0('0x39')][_0x76f0('0x15')]({'where':_0x3211cb['where']})['then'](function(_0x4402d5){_0x1aef74[_0x76f0('0x15')]=_0x4402d5;if(_0x19fe77[_0x76f0('0x2b')][_0x76f0('0x4c')]){_0x3211cb[_0x76f0('0x33')]=[{'all':!![]}];}return db[_0x76f0('0x39')][_0x76f0('0x26')](_0x3211cb);})[_0x76f0('0x1b')](function(_0x4ca6b){_0x1aef74[_0x76f0('0x4d')]=_0x4ca6b;return _0x1aef74;});}})['then'](respondWithFilteredResult(_0x3d85e4,_0x3211cb))['catch'](handleError(_0x3d85e4,null));};exports[_0x76f0('0x4e')]=function(_0x24ff7f,_0x10326e){return db['OpenchannelInteraction']['find']({'where':{'id':_0x24ff7f[_0x76f0('0x2d')]['id']}})[_0x76f0('0x1b')](handleEntityNotFound(_0x10326e,null))[_0x76f0('0x1b')](function(_0x17a4b1){if(_0x17a4b1){return _0x17a4b1[_0x76f0('0x4f')](_0x24ff7f[_0x76f0('0x37')][_0x76f0('0x3b')],_[_0x76f0('0x50')](_0x24ff7f[_0x76f0('0x37')],[_0x76f0('0x3b'),'id'])||{})['spread'](function(){return db[_0x76f0('0x51')][_0x76f0('0x26')]({'attributes':['id',_0x76f0('0x1f'),_0x76f0('0x52')],'where':{'id':_0x24ff7f[_0x76f0('0x37')][_0x76f0('0x3b')]}});})[_0x76f0('0x1b')](function(_0x30d638){socket[_0x76f0('0x53')](_0x76f0('0x54'),{'id':Number(_0x24ff7f['params']['id']),'tags':_0x30d638||[]});return{'id':Number(_0x24ff7f[_0x76f0('0x2d')]['id']),'tags':_0x30d638||[]};});}})['then'](respondWithResult(_0x10326e,null))[_0x76f0('0x29')](handleError(_0x10326e,null));};exports['removeTags']=function(_0x242e06,_0x511280){return db['OpenchannelInteraction'][_0x76f0('0x35')]({'where':{'id':_0x242e06[_0x76f0('0x2d')]['id']}})[_0x76f0('0x1b')](handleEntityNotFound(_0x511280,null))[_0x76f0('0x1b')](function(_0x25ce60){if(_0x25ce60){return _0x25ce60[_0x76f0('0x55')](_0x242e06['query'][_0x76f0('0x3b')]);}})[_0x76f0('0x1b')](respondWithStatusCode(_0x511280,null))['catch'](handleError(_0x511280,null));};exports[_0x76f0('0x56')]=function(_0x4fe9af,_0x1288e1){var _0x17d198=moment()[_0x76f0('0x57')]()[_0x76f0('0x58')]();var _0x3d42b6=path[_0x76f0('0x59')](config[_0x76f0('0x5a')],'server',_0x76f0('0x5b'),'tmp');var _0x21272c=path[_0x76f0('0x59')](config[_0x76f0('0x5a')],_0x76f0('0x5c'),_0x76f0('0x5b'),_0x76f0('0x5d'));var _0x49e679=path[_0x76f0('0x59')](_0x3d42b6,_0x17d198);var _0x1f2b41=util['format'](_0x76f0('0x5e'),_0x4fe9af[_0x76f0('0x2d')]['id'],_0x17d198);var _0x2f89e9=path[_0x76f0('0x59')](_0x3d42b6,_0x1f2b41);var _0x16c798=[];_0x16c798[_0x76f0('0x5f')]({'model':db['User'],'as':_0x76f0('0x60'),'attributes':['id','fullname'],'raw':!![]});_0x16c798['push']({'model':db[_0x76f0('0x61')],'as':_0x76f0('0x62'),'attributes':['id',_0x76f0('0x63'),'lastName'],'raw':!![]});if(_0x4fe9af[_0x76f0('0x2b')][_0x76f0('0x5d')]){_0x16c798['push']({'model':db['Attachment'],'as':_0x76f0('0x64'),'raw':!![]});}var _0x1ce7b9=[{'model':db['OpenchannelMessage'],'as':_0x76f0('0x65'),'attributes':['id',_0x76f0('0x37'),_0x76f0('0x66'),_0x76f0('0x67'),_0x76f0('0x68'),_0x76f0('0x69')],'include':_0x16c798}];_0x1ce7b9['push']({'model':db[_0x76f0('0x6a')],'as':_0x76f0('0x6b'),'attributes':['id',_0x76f0('0x1f')]});_0x1ce7b9['push']({'model':db['User'],'as':_0x76f0('0x6c'),'attributes':['id',_0x76f0('0x6d')]});return db[_0x76f0('0x30')][_0x76f0('0x35')]({'where':{'id':_0x4fe9af[_0x76f0('0x2d')]['id']},'include':_0x1ce7b9})[_0x76f0('0x1b')](handleEntityNotFound(_0x1288e1,null))[_0x76f0('0x1b')](function(_0x570a4e){if(_0x570a4e){var _0x3d13b8=_0x570a4e[_0x76f0('0x6e')]({'plain':!![]});fs[_0x76f0('0x6f')](_0x49e679);var _0x2f1b67={'channel':'Openchannel','account':_0x3d13b8[_0x76f0('0x6b')]['name'],'agent':_0x3d13b8[_0x76f0('0x6c')]?_0x3d13b8[_0x76f0('0x6c')][_0x76f0('0x6d')]:_0x76f0('0x70'),'createdAt':moment(_0x3d13b8[_0x76f0('0x66')])[_0x76f0('0x49')](_0x76f0('0x4a'))[_0x76f0('0x58')](),'closedAt':_0x3d13b8[_0x76f0('0x71')]?moment(_0x3d13b8[_0x76f0('0x72')])[_0x76f0('0x49')](_0x76f0('0x4a'))['toString']():'','disposition':_0x3d13b8[_0x76f0('0x73')],'visibility':_0x3d13b8[_0x76f0('0x74')]?'Public':_0x76f0('0x75'),'messages':_(_0x3d13b8[_0x76f0('0x65')])[_0x76f0('0x46')]({'secret':![]})[_0x76f0('0x21')](function(_0x265f94){if(_0x265f94[_0x76f0('0x64')]){var _0x2ed4e1=path[_0x76f0('0x59')](_0x21272c,_0x265f94['Attachment'][_0x76f0('0x76')]);if(fs[_0x76f0('0x77')](_0x2ed4e1)){fs['createReadStream'](_0x2ed4e1)[_0x76f0('0x78')](fs[_0x76f0('0x79')](path[_0x76f0('0x59')](_0x49e679,_0x265f94[_0x76f0('0x64')][_0x76f0('0x76')])));}}return{'date':moment(_0x265f94['createdAt'])[_0x76f0('0x49')](_0x76f0('0x4a'))[_0x76f0('0x58')](),'sender':_0x265f94[_0x76f0('0x67')]===_0x76f0('0x7a')?_0x265f94[_0x76f0('0x60')]?_0x265f94[_0x76f0('0x60')][_0x76f0('0x6d')]:'System':_0x265f94[_0x76f0('0x62')]['firstName']+(_0x265f94[_0x76f0('0x62')][_0x76f0('0x7b')]?'\x20'+_0x265f94[_0x76f0('0x62')][_0x76f0('0x7b')]:''),'body':_0x265f94['Attachment']?_0x265f94[_0x76f0('0x64')][_0x76f0('0x76')]:_0x265f94[_0x76f0('0x37')],'direction':_0x265f94[_0x76f0('0x67')]==='out'?'A':'C','secret':_0x265f94['secret'],'read':_0x265f94[_0x76f0('0x69')],'attachment':_0x265f94['Attachment']};})[_0x76f0('0x7c')]()};return ejs['renderFile'](path[_0x76f0('0x59')](config['root'],_0x76f0('0x5c'),'views',_0x76f0('0x7d')),{'interaction':_0x2f1b67})[_0x76f0('0x1b')](function(_0xc3e1d4){var _0x10f056=path['join'](_0x49e679,_0x76f0('0x7e')+_0x3d13b8['id']+'-'+_0x17d198+'.pdf');var _0x467304={'path':_0x10f056,'channel':_0x76f0('0x7f'),'interactionId':_0x3d13b8['id']};return pdf['createPdfFromHTML'](_0xc3e1d4,_0x467304);})['then'](function(){return new Promise(function(_0x1376b0,_0x95a40){zipdir(_0x49e679,{'saveTo':_0x2f89e9},function(_0x414177,_0x3056c8){if(_0x414177)return _0x95a40(_0x414177);return _0x1376b0(_0x3056c8);});})[_0x76f0('0x1b')](function(){return new Promise(function(_0x1c97d8,_0x4cd8a2){rimraf(_0x49e679,function(_0xa7b2f6){if(_0xa7b2f6)_0x4cd8a2(_0xa7b2f6);return _0x1c97d8();});});})[_0x76f0('0x1b')](function(){return _0x1288e1['download'](_0x2f89e9,_0x1f2b41,function(_0x5d92dd){if(_0x5d92dd){logger[_0x76f0('0x1d')](_0x76f0('0x80'),_0x5d92dd);}else{fs[_0x76f0('0x81')](_0x2f89e9);}});});});}else{return _0x1288e1[_0x76f0('0x10')](0xc8);}})[_0x76f0('0x29')](handleError(_0x1288e1,null));};
\ No newline at end of file
+var _0x68e8=['../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./openchannelInteraction.socket','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','type','openchannel','user','catch','show','query','from','params','keys','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','create','body','find','describe','addMessage','OpenchannelMessage','ids','findOne','nolimit','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','split','addTags','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','unix','join','root','server','tmp','attachments','format','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','secret','read','Account','Owner','get','mkdirSync','Openchannel','N.A.','createdAt','YYYY-MM-DD\x20HH:mm:ss','closed','disposition','threadId','Public','Private','Messages','createReadStream','pipe','createWriteStream','basename','toString','direction','out','System','value','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','download','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','zip-dir','moment','util','path','lodash','ioredis','../../components/interaction/service'];(function(_0x2a94d2,_0xfb73a1){var _0x5c6c59=function(_0x216b17){while(--_0x216b17){_0x2a94d2['push'](_0x2a94d2['shift']());}};_0x5c6c59(++_0xfb73a1);}(_0x68e8,0x7a));var _0x868e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x68e8[_0x20a584];return _0x4b41a8;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x868e('0x0'));var moment=require(_0x868e('0x1'));var util=require(_0x868e('0x2'));var path=require(_0x868e('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x868e('0x4'));var Redis=require(_0x868e('0x5'));var interaction=require(_0x868e('0x6'));var qs=require('../../components/parsers/qs');var pdf=require(_0x868e('0x7'));var logger=require(_0x868e('0x8'))(_0x868e('0x9'));var config=require(_0x868e('0xa'));var db=require(_0x868e('0xb'))['db'];config[_0x868e('0xc')]=_['defaults'](config[_0x868e('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x868e('0xd'))(new Redis(config['redis']));require(_0x868e('0xe'))['register'](socket);function respondWithStatusCode(_0x5f3a6d,_0x379064){_0x379064=_0x379064||0xcc;return function(_0x5e80be){if(_0x5e80be){return _0x5f3a6d[_0x868e('0xf')](_0x379064);}return _0x5f3a6d['status'](_0x379064)[_0x868e('0x10')]();};}function respondWithResult(_0x17c764,_0x457a4c){_0x457a4c=_0x457a4c||0xc8;return function(_0x4a8e24){if(_0x4a8e24){return _0x17c764[_0x868e('0x11')](_0x457a4c)[_0x868e('0x12')](_0x4a8e24);}};}function respondWithFilteredResult(_0x5022f1,_0x5e8358){return function(_0x457ea4){if(_0x457ea4){var _0x39c722=typeof _0x5e8358[_0x868e('0x13')]==='undefined'&&typeof _0x5e8358['limit']===_0x868e('0x14');var _0x2d14e5=_0x457ea4[_0x868e('0x15')];var _0x424a5e=_0x39c722?0x0:_0x5e8358[_0x868e('0x13')];var _0x40a210=_0x39c722?_0x457ea4[_0x868e('0x15')]:_0x5e8358['offset']+_0x5e8358[_0x868e('0x16')];var _0x57bab3;if(_0x40a210>=_0x2d14e5){_0x40a210=_0x2d14e5;_0x57bab3=0xc8;}else{_0x57bab3=0xce;}_0x5022f1[_0x868e('0x11')](_0x57bab3);return _0x5022f1[_0x868e('0x17')](_0x868e('0x18'),_0x424a5e+'-'+_0x40a210+'/'+_0x2d14e5)[_0x868e('0x12')](_0x457ea4);}return null;};}function saveUpdates(_0x3b4cf9){return function(_0x268733){if(_0x268733){return _0x268733[_0x868e('0x19')](_0x3b4cf9)[_0x868e('0x1a')](function(_0x3938e1){return _0x3938e1;});}return null;};}function removeEntity(_0x4c73ae){return function(_0x548d8c){if(_0x548d8c){return _0x548d8c[_0x868e('0x1b')]()[_0x868e('0x1a')](function(){_0x4c73ae['status'](0xcc)[_0x868e('0x10')]();});}};}function handleEntityNotFound(_0x22239b){return function(_0x2a80c8){if(!_0x2a80c8){_0x22239b[_0x868e('0xf')](0x194);}return _0x2a80c8;};}function handleError(_0x23f0aa,_0x40baf4){_0x40baf4=_0x40baf4||0x1f4;return function(_0x8114f3){logger[_0x868e('0x1c')](_0x8114f3[_0x868e('0x1d')]);if(_0x8114f3[_0x868e('0x1e')]){delete _0x8114f3[_0x868e('0x1e')];}_0x23f0aa['status'](_0x40baf4)[_0x868e('0x1f')](_0x8114f3);};}exports[_0x868e('0x20')]=function(_0x13da9f,_0x6ba6c2){var _0x35be0a={};var _0xa23df8=_[_0x868e('0x21')](db[_0x868e('0x22')][_0x868e('0x23')],function(_0x4be1ee){return{'name':_0x4be1ee['fieldName'],'type':_0x4be1ee[_0x868e('0x24')]['key']};});_0x35be0a=qs['getOptions'](_0xa23df8,_0x13da9f);return interaction['findAll'](_0x868e('0x25'),_0x13da9f['query'],_0x13da9f[_0x868e('0x26')],_0x35be0a,_0xa23df8)['then'](respondWithFilteredResult(_0x6ba6c2,_0x35be0a))[_0x868e('0x27')](handleError(_0x6ba6c2,null));};exports[_0x868e('0x28')]=function(_0x5ad0f8,_0x5a1568){var _0x21fe1b={};if(_0x5ad0f8['query'][_0x868e('0x24')]&&_0x5ad0f8[_0x868e('0x29')][_0x868e('0x24')]===_0x868e('0x2a')){_0x21fe1b['from']=_0x5ad0f8[_0x868e('0x2b')]['id'];}else{_0x21fe1b['id']=_0x5ad0f8['params']['id'];}var _0x111026={'raw':![],'where':_0x21fe1b},_0x2582ed={};_0x2582ed['model']=_['keys'](db[_0x868e('0x22')]['rawAttributes']);_0x2582ed[_0x868e('0x29')]=_[_0x868e('0x2c')](_0x5ad0f8[_0x868e('0x29')]);_0x2582ed[_0x868e('0x2d')]=_[_0x868e('0x2e')](_0x2582ed[_0x868e('0x2f')],_0x2582ed[_0x868e('0x29')]);_0x111026[_0x868e('0x30')]=_['intersection'](_0x2582ed[_0x868e('0x2f')],qs[_0x868e('0x31')](_0x5ad0f8[_0x868e('0x29')]['fields']));_0x111026[_0x868e('0x30')]=_0x111026[_0x868e('0x30')][_0x868e('0x32')]?_0x111026[_0x868e('0x30')]:_0x2582ed[_0x868e('0x2f')];if(_0x5ad0f8['query'][_0x868e('0x33')]){_0x111026[_0x868e('0x34')]=[{'all':!![]}];}_0x111026=_[_0x868e('0x35')]({},_0x111026,_0x5ad0f8[_0x868e('0x36')]);return db[_0x868e('0x22')]['find'](_0x111026)[_0x868e('0x1a')](handleEntityNotFound(_0x5a1568,null))['then'](respondWithResult(_0x5a1568,null))['catch'](handleError(_0x5a1568,null));};exports[_0x868e('0x37')]=function(_0x973b9,_0xf5e2be){return db[_0x868e('0x22')][_0x868e('0x37')](_0x973b9['body'],{})[_0x868e('0x1a')](respondWithResult(_0xf5e2be,0xc9))['catch'](handleError(_0xf5e2be,null));};exports[_0x868e('0x19')]=function(_0x542f74,_0x2ce107){if(_0x542f74[_0x868e('0x38')]['id']){delete _0x542f74[_0x868e('0x38')]['id'];}return db[_0x868e('0x22')][_0x868e('0x39')]({'where':{'id':_0x542f74[_0x868e('0x2b')]['id']}})[_0x868e('0x1a')](handleEntityNotFound(_0x2ce107,null))[_0x868e('0x1a')](saveUpdates(_0x542f74[_0x868e('0x38')],null))[_0x868e('0x1a')](respondWithResult(_0x2ce107,null))[_0x868e('0x27')](handleError(_0x2ce107,null));};exports['destroy']=function(_0x264ad3,_0x485507){return db[_0x868e('0x22')][_0x868e('0x39')]({'where':{'id':_0x264ad3[_0x868e('0x2b')]['id']}})[_0x868e('0x1a')](handleEntityNotFound(_0x485507,null))[_0x868e('0x1a')](removeEntity(_0x485507,null))['catch'](handleError(_0x485507,null));};exports['describe']=function(_0x12a617,_0x109afa){return db[_0x868e('0x22')][_0x868e('0x3a')]()[_0x868e('0x1a')](respondWithResult(_0x109afa,null))[_0x868e('0x27')](handleError(_0x109afa,null));};exports[_0x868e('0x3b')]=function(_0xec95c2,_0xe221cc){return db[_0x868e('0x3c')][_0x868e('0x39')]({'where':{'id':_0xec95c2[_0x868e('0x2b')]['id']}})[_0x868e('0x1a')](handleEntityNotFound(_0xe221cc,null))[_0x868e('0x1a')](function(_0x399fba){if(_0x399fba){return _0x399fba[_0x868e('0x3b')](_0xec95c2[_0x868e('0x38')][_0x868e('0x3d')],_['omit'](_0xec95c2[_0x868e('0x38')],[_0x868e('0x3d'),'id'])||{});}})[_0x868e('0x1a')](respondWithResult(_0xe221cc,null))[_0x868e('0x27')](handleError(_0xe221cc,null));};exports['getMessages']=function(_0x4cfee9,_0x4775fd){var _0x4a0642={'raw':![],'where':{}};var _0x52f279={};var _0x2961f4={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x868e('0x3e')]({'where':{'id':_0x4cfee9[_0x868e('0x2b')]['id']}})[_0x868e('0x1a')](handleEntityNotFound(_0x4775fd,null))[_0x868e('0x1a')](function(_0x2bfeea){if(_0x2bfeea){_0x52f279[_0x868e('0x2f')]=_[_0x868e('0x2c')](db[_0x868e('0x3c')][_0x868e('0x23')]);_0x52f279[_0x868e('0x29')]=_[_0x868e('0x2c')](_0x4cfee9[_0x868e('0x29')]);_0x52f279[_0x868e('0x2d')]=_['intersection'](_0x52f279[_0x868e('0x2f')],_0x52f279[_0x868e('0x29')]);_0x4a0642['attributes']=_[_0x868e('0x2e')](_0x52f279['model'],qs[_0x868e('0x31')](_0x4cfee9[_0x868e('0x29')]['fields']));_0x4a0642[_0x868e('0x30')]=_0x4a0642[_0x868e('0x30')]['length']?_0x4a0642[_0x868e('0x30')]:_0x52f279[_0x868e('0x2f')];if(!_0x4cfee9[_0x868e('0x29')]['hasOwnProperty'](_0x868e('0x3f'))){_0x4a0642[_0x868e('0x16')]=qs[_0x868e('0x16')](_0x4cfee9[_0x868e('0x29')]['limit']);_0x4a0642[_0x868e('0x13')]=qs[_0x868e('0x13')](_0x4cfee9['query'][_0x868e('0x13')]);}_0x4a0642[_0x868e('0x40')]=qs[_0x868e('0x41')](_0x4cfee9['query'][_0x868e('0x41')]);_0x4a0642[_0x868e('0x42')]=qs['filters'](_[_0x868e('0x43')](_0x4cfee9['query'],_0x52f279[_0x868e('0x2d')]));_0x4a0642[_0x868e('0x42')][_0x868e('0x44')]=_0x2bfeea['id'];if(_0x4cfee9[_0x868e('0x29')][_0x868e('0x45')]){_0x4a0642[_0x868e('0x42')]=_[_0x868e('0x35')](_0x4a0642['where'],{'$or':_[_0x868e('0x21')](_0x4a0642[_0x868e('0x30')],function(_0x216029){var _0x1effa2={};_0x1effa2[_0x216029]={'$like':'%'+_0x4cfee9[_0x868e('0x29')][_0x868e('0x45')]+'%'};return _0x1effa2;})});}if(_0x4cfee9[_0x868e('0x29')]['$gte']){var _0x39c935=_0x4cfee9[_0x868e('0x29')][_0x868e('0x46')][_0x868e('0x47')](',');var _0x1cd47d={};_0x1cd47d[_0x39c935[0x0]]={'$gte':moment(_0x39c935[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x4a0642[_0x868e('0x42')]=_[_0x868e('0x35')](_0x4a0642[_0x868e('0x42')],_0x1cd47d);}_0x4a0642=_[_0x868e('0x35')]({},_0x4a0642,_0x4cfee9['options']);return db[_0x868e('0x3c')][_0x868e('0x15')]({'where':_0x4a0642[_0x868e('0x42')]})[_0x868e('0x1a')](function(_0x287938){_0x2961f4[_0x868e('0x15')]=_0x287938;if(_0x4cfee9[_0x868e('0x29')][_0x868e('0x33')]){_0x4a0642[_0x868e('0x34')]=[{'all':!![]}];}return db[_0x868e('0x3c')]['findAll'](_0x4a0642);})[_0x868e('0x1a')](function(_0x59f6f7){_0x2961f4['rows']=_0x59f6f7;return _0x2961f4;});}})['then'](respondWithFilteredResult(_0x4775fd,_0x4a0642))[_0x868e('0x27')](handleError(_0x4775fd,null));};exports[_0x868e('0x48')]=function(_0x2c44ef,_0x3e1c59){return db[_0x868e('0x22')]['find']({'where':{'id':_0x2c44ef[_0x868e('0x2b')]['id']}})['then'](handleEntityNotFound(_0x3e1c59,null))['then'](function(_0x4c797c){if(_0x4c797c){return _0x4c797c[_0x868e('0x49')](_0x2c44ef['body'][_0x868e('0x3d')],_['omit'](_0x2c44ef[_0x868e('0x38')],[_0x868e('0x3d'),'id'])||{})[_0x868e('0x4a')](function(){return db[_0x868e('0x4b')]['findAll']({'attributes':['id',_0x868e('0x1e'),_0x868e('0x4c')],'where':{'id':_0x2c44ef['body'][_0x868e('0x3d')]}});})[_0x868e('0x1a')](function(_0x3032d3){socket[_0x868e('0x4d')](_0x868e('0x4e'),{'id':Number(_0x2c44ef[_0x868e('0x2b')]['id']),'tags':_0x3032d3||[]});return{'id':Number(_0x2c44ef[_0x868e('0x2b')]['id']),'tags':_0x3032d3||[]};});}})[_0x868e('0x1a')](respondWithResult(_0x3e1c59,null))['catch'](handleError(_0x3e1c59,null));};exports[_0x868e('0x4f')]=function(_0x70363e,_0x57a620){return db['OpenchannelInteraction'][_0x868e('0x39')]({'where':{'id':_0x70363e['params']['id']}})[_0x868e('0x1a')](handleEntityNotFound(_0x57a620,null))[_0x868e('0x1a')](function(_0x58463f){if(_0x58463f){return _0x58463f[_0x868e('0x4f')](_0x70363e[_0x868e('0x29')]['ids']);}})[_0x868e('0x1a')](respondWithStatusCode(_0x57a620,null))[_0x868e('0x27')](handleError(_0x57a620,null));};exports['download']=function(_0x6a20f9,_0x3007d0){var _0x118209=moment()[_0x868e('0x50')]()['toString']();var _0x22b58c=path[_0x868e('0x51')](config[_0x868e('0x52')],_0x868e('0x53'),'files',_0x868e('0x54'));var _0x4fc409=path[_0x868e('0x51')](config[_0x868e('0x52')],_0x868e('0x53'),'files',_0x868e('0x55'));var _0x217aeb=path['join'](_0x22b58c,_0x118209);var _0x4f04dc=util[_0x868e('0x56')](_0x868e('0x57'),_0x6a20f9['params']['id'],_0x118209);var _0x222194=path[_0x868e('0x51')](_0x22b58c,_0x4f04dc);var _0x3941ec=[];_0x3941ec[_0x868e('0x58')]({'model':db[_0x868e('0x59')],'as':'User','attributes':['id',_0x868e('0x5a')],'raw':!![]});_0x3941ec[_0x868e('0x58')]({'model':db[_0x868e('0x5b')],'as':_0x868e('0x5c'),'attributes':['id',_0x868e('0x5d'),_0x868e('0x5e')],'raw':!![]});if(_0x6a20f9[_0x868e('0x29')][_0x868e('0x55')]){_0x3941ec['push']({'model':db[_0x868e('0x5f')],'as':'Attachment','raw':!![]});}var _0x3777ed=[{'model':db[_0x868e('0x3c')],'as':'Messages','attributes':['id',_0x868e('0x38'),'createdAt','direction',_0x868e('0x60'),_0x868e('0x61')],'include':_0x3941ec}];_0x3777ed[_0x868e('0x58')]({'model':db['OpenchannelAccount'],'as':_0x868e('0x62'),'attributes':['id',_0x868e('0x1e')]});_0x3777ed[_0x868e('0x58')]({'model':db['User'],'as':_0x868e('0x63'),'attributes':['id',_0x868e('0x5a')]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x6a20f9['params']['id']},'include':_0x3777ed})['then'](handleEntityNotFound(_0x3007d0,null))[_0x868e('0x1a')](function(_0x10d9c8){if(_0x10d9c8){var _0x1f1b26=_0x10d9c8[_0x868e('0x64')]({'plain':!![]});fs[_0x868e('0x65')](_0x217aeb);var _0x2de62b={'channel':_0x868e('0x66'),'account':_0x1f1b26['Account']['name'],'agent':_0x1f1b26[_0x868e('0x63')]?_0x1f1b26[_0x868e('0x63')][_0x868e('0x5a')]:_0x868e('0x67'),'createdAt':moment(_0x1f1b26[_0x868e('0x68')])['format'](_0x868e('0x69'))['toString'](),'closedAt':_0x1f1b26[_0x868e('0x6a')]?moment(_0x1f1b26['closedAt'])['format'](_0x868e('0x69'))['toString']():'','disposition':_0x1f1b26[_0x868e('0x6b')],'visibility':_0x1f1b26[_0x868e('0x6c')]?_0x868e('0x6d'):_0x868e('0x6e'),'messages':_(_0x1f1b26[_0x868e('0x6f')])[_0x868e('0x45')]({'secret':![]})[_0x868e('0x21')](function(_0x12e73c){if(_0x12e73c[_0x868e('0x5f')]){var _0x4804dd=path[_0x868e('0x51')](_0x4fc409,_0x12e73c[_0x868e('0x5f')]['basename']);if(fs['existsSync'](_0x4804dd)){fs[_0x868e('0x70')](_0x4804dd)[_0x868e('0x71')](fs[_0x868e('0x72')](path['join'](_0x217aeb,_0x12e73c[_0x868e('0x5f')][_0x868e('0x73')])));}}return{'date':moment(_0x12e73c['createdAt'])[_0x868e('0x56')](_0x868e('0x69'))[_0x868e('0x74')](),'sender':_0x12e73c[_0x868e('0x75')]===_0x868e('0x76')?_0x12e73c[_0x868e('0x59')]?_0x12e73c[_0x868e('0x59')]['fullname']:_0x868e('0x77'):_0x12e73c['Contact'][_0x868e('0x5d')]+(_0x12e73c[_0x868e('0x5c')][_0x868e('0x5e')]?'\x20'+_0x12e73c['Contact'][_0x868e('0x5e')]:''),'body':_0x12e73c[_0x868e('0x5f')]?_0x12e73c[_0x868e('0x5f')]['basename']:_0x12e73c[_0x868e('0x38')],'direction':_0x12e73c[_0x868e('0x75')]===_0x868e('0x76')?'A':'C','secret':_0x12e73c[_0x868e('0x60')],'read':_0x12e73c[_0x868e('0x61')],'attachment':_0x12e73c[_0x868e('0x5f')]};})[_0x868e('0x78')]()};return ejs[_0x868e('0x79')](path[_0x868e('0x51')](config[_0x868e('0x52')],_0x868e('0x53'),_0x868e('0x7a'),_0x868e('0x7b')),{'interaction':_0x2de62b})[_0x868e('0x1a')](function(_0x1018e2){var _0x48e48d=path['join'](_0x217aeb,'transcript-'+_0x1f1b26['id']+'-'+_0x118209+_0x868e('0x7c'));var _0x29ff0a={'path':_0x48e48d,'channel':_0x868e('0x66'),'interactionId':_0x1f1b26['id']};return pdf[_0x868e('0x7d')](_0x1018e2,_0x29ff0a);})[_0x868e('0x1a')](function(){return new Promise(function(_0x4f22b3,_0xa71e18){zipdir(_0x217aeb,{'saveTo':_0x222194},function(_0x3a9e49,_0x2fb9b5){if(_0x3a9e49)return _0xa71e18(_0x3a9e49);return _0x4f22b3(_0x2fb9b5);});})[_0x868e('0x1a')](function(){return new Promise(function(_0xf9ff79,_0x430055){rimraf(_0x217aeb,function(_0x3ff15e){if(_0x3ff15e)_0x430055(_0x3ff15e);return _0xf9ff79();});});})[_0x868e('0x1a')](function(){return _0x3007d0[_0x868e('0x7e')](_0x222194,_0x4f04dc,function(_0x4a8bc1){if(_0x4a8bc1){logger['error'](_0x868e('0x7f'),_0x4a8bc1);}else{fs[_0x868e('0x80')](_0x222194);}});});});}else{return _0x3007d0[_0x868e('0xf')](0xc8);}})[_0x868e('0x27')](handleError(_0x3007d0,null));};
\ No newline at end of file
index 2b4cc1f..f138603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7532=['emit','catch','hasOwnProperty','hook','exports','OpenchannelInteraction','OpenchannelMessage','save','update','getUsers','then','setDataValue','Users','map','unreadMessages','length'];(function(_0x18309d,_0x18bfa0){var _0x5518df=function(_0x5cb332){while(--_0x5cb332){_0x18309d['push'](_0x18309d['shift']());}};_0x5518df(++_0x18bfa0);}(_0x7532,0x1d5));var _0x2753=function(_0x53b37c,_0x1e3dae){_0x53b37c=_0x53b37c-0x0;var _0x912a5=_0x7532[_0x53b37c];return _0x912a5;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require('../../mysqldb')['db'][_0x2753('0x0')];var OpenchannelMessage=require('../../mysqldb')['db'][_0x2753('0x1')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2753('0x2'),'afterUpdate':_0x2753('0x3'),'afterDestroy':'remove'};function emitEvent(_0x9e2e7){return function(_0x3e7b5c,_0x2f403c,_0x307944){_0x3e7b5c[_0x2753('0x4')]({'attributes':['id'],'raw':!![]})[_0x2753('0x5')](function(_0x144314){_0x3e7b5c[_0x2753('0x6')](_0x2753('0x7'),_0x144314[_0x2753('0x8')](function(_0x28ee48){return{'id':_0x28ee48['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x3e7b5c['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2753('0x5')](function(_0x584faa){_0x3e7b5c[_0x2753('0x6')](_0x2753('0x9'),_0x584faa[_0x2753('0xa')]);OpenchannelInteractionEvents[_0x2753('0xb')](_0x9e2e7+':'+_0x3e7b5c['id'],_0x3e7b5c);OpenchannelInteractionEvents[_0x2753('0xb')](_0x9e2e7,_0x3e7b5c);_0x307944(null);})[_0x2753('0xc')](_0x307944(null));};}for(var e in events){if(events[_0x2753('0xd')](e)){var event=events[e];OpenchannelInteraction[_0x2753('0xe')](e,emitEvent(event));}}module[_0x2753('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xe74a=['setDataValue','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','remove','then'];(function(_0x515add,_0x5a0051){var _0x344e99=function(_0x3de1af){while(--_0x3de1af){_0x515add['push'](_0x515add['shift']());}};_0x344e99(++_0x5a0051);}(_0xe74a,0x156));var _0xae74=function(_0x1d6a82,_0x37c315){_0x1d6a82=_0x1d6a82-0x0;var _0x5834ac=_0xe74a[_0x1d6a82];return _0x5834ac;};'use strict';var EventEmitter=require(_0xae74('0x0'));var OpenchannelInteraction=require(_0xae74('0x1'))['db'][_0xae74('0x2')];var OpenchannelMessage=require(_0xae74('0x1'))['db'][_0xae74('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xae74('0x4')](0x0);var events={'afterCreate':_0xae74('0x5'),'afterUpdate':'update','afterDestroy':_0xae74('0x6')};function emitEvent(_0x1f80e4){return function(_0x3c63a1,_0x3ea989,_0x55876f){_0x3c63a1['getUsers']({'attributes':['id'],'raw':!![]})[_0xae74('0x7')](function(_0x5f3ed0){_0x3c63a1['setDataValue']('Users',_0x5f3ed0['map'](function(_0x494ce1){return{'id':_0x494ce1['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x3c63a1['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x255e5b){_0x3c63a1[_0xae74('0x8')]('unreadMessages',_0x255e5b[_0xae74('0x9')]);OpenchannelInteractionEvents[_0xae74('0xa')](_0x1f80e4+':'+_0x3c63a1['id'],_0x3c63a1);OpenchannelInteractionEvents[_0xae74('0xa')](_0x1f80e4,_0x3c63a1);_0x55876f(null);})[_0xae74('0xb')](_0x55876f(null));};}for(var e in events){if(events[_0xae74('0xc')](e)){var event=events[e];OpenchannelInteraction[_0xae74('0xd')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index 5f7a814..cf4b443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x329d=['utf8mb4_unicode_ci','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4'];(function(_0x1f0019,_0x436a07){var _0x1b0c2a=function(_0x31de86){while(--_0x31de86){_0x1f0019['push'](_0x1f0019['shift']());}};_0x1b0c2a(++_0x436a07);}(_0x329d,0x1bd));var _0xd329=function(_0x4d521e,_0x58ba39){_0x4d521e=_0x4d521e-0x0;var _0x3beb42=_0x329d[_0x4d521e];return _0x3beb42;};'use strict';var _=require(_0xd329('0x0'));var util=require(_0xd329('0x1'));var logger=require(_0xd329('0x2'))(_0xd329('0x3'));var moment=require(_0xd329('0x4'));var BPromise=require(_0xd329('0x5'));var rp=require(_0xd329('0x6'));var fs=require('fs');var path=require(_0xd329('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd329('0x8'));module[_0xd329('0x9')]=function(_0x45bc48,_0x60db25){return _0x45bc48[_0xd329('0xa')](_0xd329('0xb'),attributes,{'tableName':_0xd329('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd329('0xd'),'collate':_0xd329('0xe'),'hooks':{'beforeUpdate':function(_0xc206b1,_0x2f7f45,_0x137091){if(_0xc206b1['changed']('closed')){_0xc206b1[_0xd329('0xf')]=moment()['format'](_0xd329('0x10'));}_0x137091(null,_0xc206b1);}}});};
\ No newline at end of file
+var _0x2e7e=['format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','bluebird','path','rimraf','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt'];(function(_0x515227,_0x342e4e){var _0xa20618=function(_0x94fd3f){while(--_0x94fd3f){_0x515227['push'](_0x515227['shift']());}};_0xa20618(++_0x342e4e);}(_0x2e7e,0xce));var _0xe2e7=function(_0x34a56d,_0x346c56){_0x34a56d=_0x34a56d-0x0;var _0x47d0a7=_0x2e7e[_0x34a56d];return _0x47d0a7;};'use strict';var _=require('lodash');var util=require(_0xe2e7('0x0'));var logger=require(_0xe2e7('0x1'))(_0xe2e7('0x2'));var moment=require('moment');var BPromise=require(_0xe2e7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe2e7('0x4'));var rimraf=require(_0xe2e7('0x5'));var config=require('../../config/environment');var attributes=require(_0xe2e7('0x6'));module[_0xe2e7('0x7')]=function(_0x286698,_0x2aa7bb){return _0x286698[_0xe2e7('0x8')](_0xe2e7('0x9'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe2e7('0xa'),'collate':_0xe2e7('0xb'),'hooks':{'beforeUpdate':function(_0x312fd7,_0x35956d,_0x3614d3){if(_0x312fd7[_0xe2e7('0xc')](_0xe2e7('0xd'))){_0x312fd7[_0xe2e7('0xe')]=moment()[_0xe2e7('0xf')](_0xe2e7('0x10'));}_0x3614d3(null,_0x312fd7);}}});};
\ No newline at end of file
index e2989c1..b65522c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaacb=['attributes','limit','AddTagsToOpenchannelInteraction','find','where','omit','ids','spread','AddTags','lodash','moment','bluebird','../../mysqldb','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','request','info','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelInteraction,\x20%s,\x20%s','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','body','raw','options'];(function(_0x4c3070,_0xc2fb4c){var _0x536a44=function(_0x1412a5){while(--_0x1412a5){_0x4c3070['push'](_0x4c3070['shift']());}};_0x536a44(++_0xc2fb4c);}(_0xaacb,0xcc));var _0xbaac=function(_0x474d97,_0x5909ce){_0x474d97=_0x474d97-0x0;var _0x1edf25=_0xaacb[_0x474d97];return _0x1edf25;};'use strict';var _=require(_0xbaac('0x0'));var util=require('util');var moment=require(_0xbaac('0x1'));var BPromise=require(_0xbaac('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbaac('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbaac('0x4'));var config=require(_0xbaac('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xbaac('0x6')][_0xbaac('0x7')]({'port':0x232a});config['redis']=_[_0xbaac('0x8')](config[_0xbaac('0x9')],{'host':_0xbaac('0xa'),'port':0x18eb});var socket=require(_0xbaac('0xb'))(new Redis(config[_0xbaac('0x9')]));require(_0xbaac('0xc'))[_0xbaac('0xd')](socket);function respondWithRpcPromise(_0x149eba,_0x2743e6,_0x29e333){return new BPromise(function(_0x289eea,_0x3115b7){return client[_0xbaac('0xe')](_0x149eba,_0x29e333)['then'](function(_0x568630){logger[_0xbaac('0xf')]('OpenchannelInteraction,\x20%s,\x20%s',_0x2743e6,_0xbaac('0x10'));logger[_0xbaac('0x11')](_0xbaac('0x12'),_0x2743e6,_0xbaac('0x10'),JSON[_0xbaac('0x13')](_0x568630));if(_0x568630[_0xbaac('0x14')]){if(_0x568630[_0xbaac('0x14')][_0xbaac('0x15')]===0x1f4){logger[_0xbaac('0x14')](_0xbaac('0x16'),_0x2743e6,_0x568630[_0xbaac('0x14')]['message']);return _0x3115b7(_0x568630['error'][_0xbaac('0x17')]);}logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x2743e6,_0x568630[_0xbaac('0x14')]['message']);return _0x289eea(_0x568630[_0xbaac('0x14')][_0xbaac('0x17')]);}else{logger[_0xbaac('0xf')](_0xbaac('0x16'),_0x2743e6,_0xbaac('0x10'));_0x289eea(_0x568630['result'][_0xbaac('0x17')]);}})[_0xbaac('0x18')](function(_0x155c55){logger[_0xbaac('0x14')](_0xbaac('0x16'),_0x2743e6,_0x155c55);_0x3115b7(_0x155c55);});});}exports[_0xbaac('0x19')]=function(_0x24e76e){var _0x21c126=this;return new Promise(function(_0x45b9cc,_0x14919b){return db[_0xbaac('0x1a')]['update'](_0x24e76e[_0xbaac('0x1b')],{'raw':_0x24e76e['options']?_0x24e76e['options'][_0xbaac('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24e76e[_0xbaac('0x1d')]?_0x24e76e[_0xbaac('0x1d')]['where']||null:null,'attributes':_0x24e76e[_0xbaac('0x1d')]?_0x24e76e[_0xbaac('0x1d')][_0xbaac('0x1e')]||null:null,'limit':_0x24e76e[_0xbaac('0x1d')]?_0x24e76e['options'][_0xbaac('0x1f')]||null:null})['then'](function(_0x4f4754){logger[_0xbaac('0xf')](_0xbaac('0x19'),_0x24e76e);logger['debug']('UpdateOpenchannelInteraction',_0x24e76e,JSON[_0xbaac('0x13')](_0x4f4754));_0x45b9cc(_0x4f4754);})[_0xbaac('0x18')](function(_0x4a067a){logger['error'](_0xbaac('0x19'),_0x4a067a[_0xbaac('0x17')],_0x24e76e);_0x14919b(_0x21c126[_0xbaac('0x14')](0x1f4,_0x4a067a['message']));});});};exports[_0xbaac('0x20')]=function(_0x329a82){return new Promise(function(_0x486b2b,_0x2be1a5){return db['OpenchannelInteraction'][_0xbaac('0x21')]({'where':_0x329a82[_0xbaac('0x1d')]?_0x329a82[_0xbaac('0x1d')][_0xbaac('0x22')]||null:null})['then'](function(_0x3e15a6){if(_0x3e15a6){return _0x3e15a6['addTags'](_0x329a82[_0xbaac('0x1b')]['ids'],_[_0xbaac('0x23')](_0x329a82[_0xbaac('0x1b')],[_0xbaac('0x24'),'id'])||{});}})[_0xbaac('0x25')](function(_0xf2f0ef){logger[_0xbaac('0xf')](_0xbaac('0x26'),_0x329a82);logger[_0xbaac('0x11')](_0xbaac('0x26'),_0x329a82,JSON[_0xbaac('0x13')](_0xf2f0ef));_0x486b2b(_0xf2f0ef);})[_0xbaac('0x18')](function(_0x9b0fb8){logger['error'](_0xbaac('0x26'),_0x9b0fb8[_0xbaac('0x17')],_0x329a82);_0x2be1a5(_this[_0xbaac('0x14')](0x1f4,_0x9b0fb8[_0xbaac('0x17')]));});});};
\ No newline at end of file
+var _0x584a=['info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','OpenchannelInteraction','update','body','options','where','attributes','limit','UpdateOpenchannelInteraction','stringify','AddTagsToOpenchannelInteraction','find','addTags','ids','omit','spread','AddTags','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','register','request','then'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x584a,0x95));var _0xa584=function(_0x389318,_0x13a53d){_0x389318=_0x389318-0x0;var _0x7919e3=_0x584a[_0x389318];return _0x7919e3;};'use strict';var _=require('lodash');var util=require(_0xa584('0x0'));var moment=require(_0xa584('0x1'));var BPromise=require(_0xa584('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa584('0x3'));var db=require(_0xa584('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa584('0x5'));var config=require(_0xa584('0x6'));var jayson=require(_0xa584('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xa584('0x8')]=_[_0xa584('0x9')](config[_0xa584('0x8')],{'host':_0xa584('0xa'),'port':0x18eb});var socket=require(_0xa584('0xb'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0xa584('0xc')](socket);function respondWithRpcPromise(_0x268f72,_0x4b70d3,_0x255f8a){return new BPromise(function(_0x570e72,_0x568401){return client[_0xa584('0xd')](_0x268f72,_0x255f8a)[_0xa584('0xe')](function(_0x1cbb9a){logger[_0xa584('0xf')](_0xa584('0x10'),_0x4b70d3,'request\x20sent');logger[_0xa584('0x11')](_0xa584('0x12'),_0x4b70d3,_0xa584('0x13'),JSON['stringify'](_0x1cbb9a));if(_0x1cbb9a['error']){if(_0x1cbb9a[_0xa584('0x14')][_0xa584('0x15')]===0x1f4){logger[_0xa584('0x14')](_0xa584('0x10'),_0x4b70d3,_0x1cbb9a['error']['message']);return _0x568401(_0x1cbb9a[_0xa584('0x14')][_0xa584('0x16')]);}logger[_0xa584('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0x4b70d3,_0x1cbb9a['error'][_0xa584('0x16')]);return _0x570e72(_0x1cbb9a['error'][_0xa584('0x16')]);}else{logger[_0xa584('0xf')](_0xa584('0x10'),_0x4b70d3,'request\x20sent');_0x570e72(_0x1cbb9a[_0xa584('0x17')][_0xa584('0x16')]);}})[_0xa584('0x18')](function(_0x2e3394){logger[_0xa584('0x14')](_0xa584('0x10'),_0x4b70d3,_0x2e3394);_0x568401(_0x2e3394);});});}exports['UpdateOpenchannelInteraction']=function(_0x1919f6){var _0x3f02b3=this;return new Promise(function(_0x204134,_0x39b426){return db[_0xa584('0x19')][_0xa584('0x1a')](_0x1919f6[_0xa584('0x1b')],{'raw':_0x1919f6[_0xa584('0x1c')]?_0x1919f6[_0xa584('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1919f6[_0xa584('0x1c')]?_0x1919f6[_0xa584('0x1c')][_0xa584('0x1d')]||null:null,'attributes':_0x1919f6[_0xa584('0x1c')]?_0x1919f6['options'][_0xa584('0x1e')]||null:null,'limit':_0x1919f6[_0xa584('0x1c')]?_0x1919f6['options'][_0xa584('0x1f')]||null:null})[_0xa584('0xe')](function(_0x102539){logger[_0xa584('0xf')](_0xa584('0x20'),_0x1919f6);logger['debug'](_0xa584('0x20'),_0x1919f6,JSON[_0xa584('0x21')](_0x102539));_0x204134(_0x102539);})[_0xa584('0x18')](function(_0x425b45){logger[_0xa584('0x14')](_0xa584('0x20'),_0x425b45[_0xa584('0x16')],_0x1919f6);_0x39b426(_0x3f02b3[_0xa584('0x14')](0x1f4,_0x425b45[_0xa584('0x16')]));});});};exports[_0xa584('0x22')]=function(_0x3d721b){return new Promise(function(_0x3f685,_0x3e58b9){return db[_0xa584('0x19')][_0xa584('0x23')]({'where':_0x3d721b['options']?_0x3d721b['options'][_0xa584('0x1d')]||null:null})['then'](function(_0x206879){if(_0x206879){return _0x206879[_0xa584('0x24')](_0x3d721b[_0xa584('0x1b')][_0xa584('0x25')],_[_0xa584('0x26')](_0x3d721b['body'],[_0xa584('0x25'),'id'])||{});}})[_0xa584('0x27')](function(_0x48ebf6){logger[_0xa584('0xf')]('AddTags',_0x3d721b);logger[_0xa584('0x11')](_0xa584('0x28'),_0x3d721b,JSON['stringify'](_0x48ebf6));_0x3f685(_0x48ebf6);})[_0xa584('0x18')](function(_0x4503dd){logger['error'](_0xa584('0x28'),_0x4503dd[_0xa584('0x16')],_0x3d721b);_0x3e58b9(_this[_0xa584('0x14')](0x1f4,_0x4503dd[_0xa584('0x16')]));});});};
\ No newline at end of file
index 5056c02..699cc9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x250c=['save','remove','emit','removeListener','register','length','./openchannelInteraction.events'];(function(_0x23b980,_0x57697f){var _0x475354=function(_0x3ee3fb){while(--_0x3ee3fb){_0x23b980['push'](_0x23b980['shift']());}};_0x475354(++_0x57697f);}(_0x250c,0x117));var _0xc250=function(_0x22db1b,_0x4d92b1){_0x22db1b=_0x22db1b-0x0;var _0x474b67=_0x250c[_0x22db1b];return _0x474b67;};'use strict';var OpenchannelInteractionEvents=require(_0xc250('0x0'));var events=[_0xc250('0x1'),_0xc250('0x2'),'update'];function createListener(_0x3f3cea,_0xcad29b){return function(_0x468b7a){_0xcad29b[_0xc250('0x3')](_0x3f3cea,_0x468b7a);};}function removeListener(_0x93dea7,_0x13a3d4){return function(){OpenchannelInteractionEvents[_0xc250('0x4')](_0x93dea7,_0x13a3d4);};}exports[_0xc250('0x5')]=function(_0x20d95a){for(var _0x335b72=0x0,_0x541b64=events[_0xc250('0x6')];_0x335b72<_0x541b64;_0x335b72++){var _0x72713=events[_0x335b72];var _0x29ece0=createListener('openchannelInteraction:'+_0x72713,_0x20d95a);OpenchannelInteractionEvents['on'](_0x72713,_0x29ece0);}};
\ No newline at end of file
+var _0x59e5=['remove','update','emit','removeListener','length','openchannelInteraction:','save'];(function(_0x1812a7,_0xd225a3){var _0x217865=function(_0x3a343e){while(--_0x3a343e){_0x1812a7['push'](_0x1812a7['shift']());}};_0x217865(++_0xd225a3);}(_0x59e5,0x1e2));var _0x559e=function(_0x299c51,_0x339760){_0x299c51=_0x299c51-0x0;var _0x322925=_0x59e5[_0x299c51];return _0x322925;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x559e('0x0'),_0x559e('0x1'),_0x559e('0x2')];function createListener(_0x2d50a5,_0x429609){return function(_0x12535c){_0x429609[_0x559e('0x3')](_0x2d50a5,_0x12535c);};}function removeListener(_0x38adcb,_0x3b5c12){return function(){OpenchannelInteractionEvents[_0x559e('0x4')](_0x38adcb,_0x3b5c12);};}exports['register']=function(_0xe2ce24){for(var _0x302dd6=0x0,_0x591717=events[_0x559e('0x5')];_0x302dd6<_0x591717;_0x302dd6++){var _0x507ff8=events[_0x302dd6];var _0x90b00b=createListener(_0x559e('0x6')+_0x507ff8,_0xe2ce24);OpenchannelInteractionEvents['on'](_0x507ff8,_0x90b00b);}};
\ No newline at end of file
index 40d2bf4..a586385 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x2df523,_0x11b09e){var _0x43f919=function(_0x53c3d6){while(--_0x53c3d6){_0x2df523['push'](_0x2df523['shift']());}};_0x43f919(++_0x11b09e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5e3701,_0x596265){_0x5e3701=_0x5e3701-0x0;var _0x345dcf=_0xcb91[_0x5e3701];return _0x345dcf;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
+var _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(_0x5a7be0,_0x113e18){var _0x1dc72e=function(_0x4f8cbf){while(--_0x4f8cbf){_0x5a7be0['push'](_0x5a7be0['shift']());}};_0x1dc72e(++_0x113e18);}(_0x9c44,0x178));var _0x49c4=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x9c44[_0x1969a7];return _0x3d665f;};'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
index 92b8c57..8a80dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39c4=['exports','BOOLEAN','out','DATE','STRING','TEXT'];(function(_0x6bad1a,_0x51cdf8){var _0x4a7bc6=function(_0x594bdf){while(--_0x594bdf){_0x6bad1a['push'](_0x6bad1a['shift']());}};_0x4a7bc6(++_0x51cdf8);}(_0x39c4,0x174));var _0x439c=function(_0xb5fef5,_0xd3f124){_0xb5fef5=_0xb5fef5-0x0;var _0x3a960c=_0x39c4[_0xb5fef5];return _0x3a960c;};'use strict';var Sequelize=require('sequelize');module[_0x439c('0x0')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x439c('0x1')],'defaultValue':![]},'secret':{'type':Sequelize[_0x439c('0x1')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x439c('0x2'),'allowNull':![]},'readAt':{'type':Sequelize[_0x439c('0x3')]},'providerName':{'type':Sequelize[_0x439c('0x4')]},'providerResponse':{'type':Sequelize[_0x439c('0x5')]}};
\ No newline at end of file
+var _0x3419=['exports','TEXT','medium','BOOLEAN','ENUM','out','DATE','STRING','sequelize'];(function(_0x537e38,_0x477dcd){var _0x444a34=function(_0x3b5132){while(--_0x3b5132){_0x537e38['push'](_0x537e38['shift']());}};_0x444a34(++_0x477dcd);}(_0x3419,0xb3));var _0x9341=function(_0x1c6089,_0x3816e2){_0x1c6089=_0x1c6089-0x0;var _0x4d97c1=_0x3419[_0x1c6089];return _0x4d97c1;};'use strict';var Sequelize=require(_0x9341('0x0'));module[_0x9341('0x1')]={'body':{'type':Sequelize[_0x9341('0x2')](_0x9341('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x9341('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x9341('0x5')]('in',_0x9341('0x6')),'defaultValue':_0x9341('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x9341('0x7')]},'providerName':{'type':Sequelize[_0x9341('0x8')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 1501b76..8689883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb769=['type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','options','include','rows','show','keys','includeAll','create','body','find','params','describe','openchannel-interactions','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','OpenchannelInteractionId','read1stAt','format','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','ContactId','contact','agent','fullname','email','internal','manual','interface','SIP/%s','channel','event','acceptmessage','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','User','motionChannel','EventManager','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','client','http','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','undefined','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','OpenchannelMessage','rawAttributes'];(function(_0x437fcc,_0x35bfae){var _0x1487dd=function(_0x3fc7db){while(--_0x3fc7db){_0x437fcc['push'](_0x437fcc['shift']());}};_0x1487dd(++_0x35bfae);}(_0xb769,0x143));var _0x9b76=function(_0x4675c3,_0x2a6913){_0x4675c3=_0x4675c3-0x0;var _0x4185d6=_0xb769[_0x4675c3];return _0x4185d6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9b76('0x0'));var jsonpatch=require(_0x9b76('0x1'));var rp=require(_0x9b76('0x2'));var moment=require(_0x9b76('0x3'));var BPromise=require(_0x9b76('0x4'));var Mustache=require(_0x9b76('0x5'));var util=require(_0x9b76('0x6'));var path=require('path');var sox=require(_0x9b76('0x7'));var csv=require(_0x9b76('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9b76('0x9'));var _=require(_0x9b76('0xa'));var squel=require(_0x9b76('0xb'));var crypto=require(_0x9b76('0xc'));var jsforce=require(_0x9b76('0xd'));var deskjs=require(_0x9b76('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9b76('0xf'));var Papa=require(_0x9b76('0x10'));var Redis=require(_0x9b76('0x11'));var authService=require(_0x9b76('0x12'));var qs=require(_0x9b76('0x13'));var as=require(_0x9b76('0x14'));var hardwareService=require(_0x9b76('0x15'));var logger=require(_0x9b76('0x16'))('api');var utils=require(_0x9b76('0x17'));var config=require(_0x9b76('0x18'));var licenseUtil=require(_0x9b76('0x19'));var db=require('../../mysqldb')['db'];config[_0x9b76('0x1a')]=_[_0x9b76('0x1b')](config[_0x9b76('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x9b76('0x1c'))(new Redis(config[_0x9b76('0x1a')]));require('./openchannelMessage.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x9b76('0x1d')][_0x9b76('0x1e')]({'port':0x232c});var client9002=jayson[_0x9b76('0x1d')][_0x9b76('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x35d545,_0x535895,_0x2b2212,_0x2b7a33){return new BPromise(function(_0x573c5e,_0x557741){var _0x463e60=_0x2b7a33||client;return _0x463e60['request'](_0x35d545,_0x2b2212)['then'](function(_0x51b23e){logger[_0x9b76('0x1f')](_0x9b76('0x20'),_0x535895,_0x9b76('0x21'));logger[_0x9b76('0x22')](_0x9b76('0x23'),_0x535895,_0x9b76('0x21'),JSON[_0x9b76('0x24')](_0x51b23e));if(_0x51b23e[_0x9b76('0x25')]){if(_0x51b23e['error'][_0x9b76('0x26')]===0x1f4){logger['error'](_0x9b76('0x20'),_0x535895,_0x51b23e['error']['message']);return _0x557741(_0x51b23e[_0x9b76('0x25')][_0x9b76('0x27')]);}logger[_0x9b76('0x25')](_0x9b76('0x20'),_0x535895,_0x51b23e['error'][_0x9b76('0x27')]);return _0x573c5e(_0x51b23e['error']['message']);}else{logger[_0x9b76('0x1f')](_0x9b76('0x20'),_0x535895,_0x9b76('0x21'));_0x573c5e(_0x51b23e['result'][_0x9b76('0x27')]);}})[_0x9b76('0x28')](function(_0x56a7e2){logger['error'](_0x9b76('0x20'),_0x535895,_0x56a7e2);_0x557741(_0x56a7e2);});});}function respondWithStatusCode(_0x1b6105,_0x27c439){_0x27c439=_0x27c439||0xcc;return function(_0x1f73c8){if(_0x1f73c8){return _0x1b6105[_0x9b76('0x29')](_0x27c439);}return _0x1b6105[_0x9b76('0x2a')](_0x27c439)[_0x9b76('0x2b')]();};}function respondWithResult(_0x462a45,_0x25bf0d){_0x25bf0d=_0x25bf0d||0xc8;return function(_0x591371){if(_0x591371){return _0x462a45[_0x9b76('0x2a')](_0x25bf0d)['json'](_0x591371);}};}function respondWithFilteredResult(_0x164be5,_0x28b1f5){return function(_0x219be7){if(_0x219be7){var _0x3e93a8=typeof _0x28b1f5['offset']===_0x9b76('0x2c')&&typeof _0x28b1f5['limit']===_0x9b76('0x2c');var _0x11b08c=_0x219be7['count'];var _0x32a694=_0x3e93a8?0x0:_0x28b1f5[_0x9b76('0x2d')];var _0x29f242=_0x3e93a8?_0x219be7[_0x9b76('0x2e')]:_0x28b1f5[_0x9b76('0x2d')]+_0x28b1f5['limit'];var _0x3e93df;if(_0x29f242>=_0x11b08c){_0x29f242=_0x11b08c;_0x3e93df=0xc8;}else{_0x3e93df=0xce;}_0x164be5[_0x9b76('0x2a')](_0x3e93df);return _0x164be5[_0x9b76('0x2f')](_0x9b76('0x30'),_0x32a694+'-'+_0x29f242+'/'+_0x11b08c)['json'](_0x219be7);}return null;};}function patchUpdates(_0x1b9667){return function(_0x3efafa){try{jsonpatch[_0x9b76('0x31')](_0x3efafa,_0x1b9667,!![]);}catch(_0xe83fbe){return BPromise[_0x9b76('0x32')](_0xe83fbe);}return _0x3efafa[_0x9b76('0x33')]();};}function saveUpdates(_0x5ca8f3,_0x42104e){return function(_0x10f3fb){if(_0x10f3fb){return _0x10f3fb[_0x9b76('0x34')](_0x5ca8f3)[_0x9b76('0x35')](function(_0x1bde65){return _0x1bde65;});}return null;};}function removeEntity(_0x1f57d5,_0x5f4a51){return function(_0xb17293){if(_0xb17293){return _0xb17293[_0x9b76('0x36')]()[_0x9b76('0x35')](function(){_0x1f57d5['status'](0xcc)[_0x9b76('0x2b')]();});}};}function handleEntityNotFound(_0x594055,_0x30c866){return function(_0x5b8719){if(!_0x5b8719){_0x594055[_0x9b76('0x29')](0x194);}return _0x5b8719;};}function handleError(_0x2c9586,_0x542535){_0x542535=_0x542535||0x1f4;return function(_0x466371){logger[_0x9b76('0x25')](_0x466371[_0x9b76('0x37')]);if(_0x466371[_0x9b76('0x38')]){delete _0x466371[_0x9b76('0x38')];}_0x2c9586[_0x9b76('0x2a')](_0x542535)[_0x9b76('0x39')](_0x466371);};}exports['index']=function(_0xbdd833,_0x2c0d70){var _0x468c9a={},_0x457a1f={},_0x458e48={'count':0x0,'rows':[]};var _0x4d2334=_[_0x9b76('0x3a')](db[_0x9b76('0x3b')][_0x9b76('0x3c')],function(_0x12dc24){return{'name':_0x12dc24['fieldName'],'type':_0x12dc24[_0x9b76('0x3d')][_0x9b76('0x3e')]};});_0x457a1f[_0x9b76('0x3f')]=_[_0x9b76('0x3a')](_0x4d2334,_0x9b76('0x38'));_0x457a1f[_0x9b76('0x40')]=_['keys'](_0xbdd833[_0x9b76('0x40')]);_0x457a1f[_0x9b76('0x41')]=_['intersection'](_0x457a1f[_0x9b76('0x3f')],_0x457a1f['query']);_0x468c9a[_0x9b76('0x42')]=_[_0x9b76('0x43')](_0x457a1f[_0x9b76('0x3f')],qs[_0x9b76('0x44')](_0xbdd833[_0x9b76('0x40')][_0x9b76('0x44')]));_0x468c9a['attributes']=_0x468c9a[_0x9b76('0x42')][_0x9b76('0x45')]?_0x468c9a['attributes']:_0x457a1f[_0x9b76('0x3f')];if(!_0xbdd833['query'][_0x9b76('0x46')](_0x9b76('0x47'))){_0x468c9a[_0x9b76('0x48')]=qs[_0x9b76('0x48')](_0xbdd833[_0x9b76('0x40')][_0x9b76('0x48')]);_0x468c9a[_0x9b76('0x2d')]=qs[_0x9b76('0x2d')](_0xbdd833[_0x9b76('0x40')][_0x9b76('0x2d')]);}_0x468c9a[_0x9b76('0x49')]=qs[_0x9b76('0x4a')](_0xbdd833['query'][_0x9b76('0x4a')]);_0x468c9a[_0x9b76('0x4b')]=qs['filters'](_['pick'](_0xbdd833[_0x9b76('0x40')],_0x457a1f['filters']),_0x4d2334);if(_0xbdd833[_0x9b76('0x40')][_0x9b76('0x4c')]){_0x468c9a['where']=_['merge'](_0x468c9a[_0x9b76('0x4b')],{'$or':_[_0x9b76('0x3a')](_0x4d2334,function(_0x56bcb0){if(_0x56bcb0[_0x9b76('0x3d')]!==_0x9b76('0x4d')){var _0x1b979f={};_0x1b979f[_0x56bcb0[_0x9b76('0x38')]]={'$like':'%'+_0xbdd833[_0x9b76('0x40')][_0x9b76('0x4c')]+'%'};return _0x1b979f;}})});}_0x468c9a=_[_0x9b76('0x4e')]({},_0x468c9a,_0xbdd833[_0x9b76('0x4f')]);var _0x5a0802={'where':_0x468c9a[_0x9b76('0x4b')]};return db[_0x9b76('0x3b')][_0x9b76('0x2e')](_0x5a0802)[_0x9b76('0x35')](function(_0x3017b1){_0x458e48['count']=_0x3017b1;if(_0xbdd833[_0x9b76('0x40')]['includeAll']){_0x468c9a[_0x9b76('0x50')]=[{'all':!![]}];}return db[_0x9b76('0x3b')]['findAll'](_0x468c9a);})[_0x9b76('0x35')](function(_0x335b29){_0x458e48[_0x9b76('0x51')]=_0x335b29;return _0x458e48;})[_0x9b76('0x35')](respondWithFilteredResult(_0x2c0d70,_0x468c9a))[_0x9b76('0x28')](handleError(_0x2c0d70,null));};exports[_0x9b76('0x52')]=function(_0xadc4b3,_0x3bcbe4){var _0x5c8ba2={'raw':!![],'where':{'id':_0xadc4b3['params']['id']}},_0x437585={};_0x437585[_0x9b76('0x3f')]=_[_0x9b76('0x53')](db['OpenchannelMessage']['rawAttributes']);_0x437585[_0x9b76('0x40')]=_[_0x9b76('0x53')](_0xadc4b3['query']);_0x437585[_0x9b76('0x41')]=_[_0x9b76('0x43')](_0x437585['model'],_0x437585[_0x9b76('0x40')]);_0x5c8ba2[_0x9b76('0x42')]=_['intersection'](_0x437585[_0x9b76('0x3f')],qs[_0x9b76('0x44')](_0xadc4b3[_0x9b76('0x40')][_0x9b76('0x44')]));_0x5c8ba2[_0x9b76('0x42')]=_0x5c8ba2[_0x9b76('0x42')]['length']?_0x5c8ba2[_0x9b76('0x42')]:_0x437585[_0x9b76('0x3f')];if(_0xadc4b3[_0x9b76('0x40')][_0x9b76('0x54')]){_0x5c8ba2[_0x9b76('0x50')]=[{'all':!![]}];}_0x5c8ba2=_['merge']({},_0x5c8ba2,_0xadc4b3[_0x9b76('0x4f')]);return db[_0x9b76('0x3b')]['find'](_0x5c8ba2)['then'](handleEntityNotFound(_0x3bcbe4,null))[_0x9b76('0x35')](respondWithResult(_0x3bcbe4,null))['catch'](handleError(_0x3bcbe4,null));};exports[_0x9b76('0x55')]=function(_0x2fd4ea,_0x3f655b){return db[_0x9b76('0x3b')][_0x9b76('0x55')](_0x2fd4ea[_0x9b76('0x56')],{})[_0x9b76('0x35')](respondWithResult(_0x3f655b,0xc9))[_0x9b76('0x28')](handleError(_0x3f655b,null));};exports[_0x9b76('0x34')]=function(_0x41479e,_0x18caf3){if(_0x41479e[_0x9b76('0x56')]['id']){delete _0x41479e[_0x9b76('0x56')]['id'];}return db['OpenchannelMessage'][_0x9b76('0x57')]({'where':{'id':_0x41479e[_0x9b76('0x58')]['id']}})['then'](handleEntityNotFound(_0x18caf3,null))[_0x9b76('0x35')](saveUpdates(_0x41479e['body'],null))[_0x9b76('0x35')](respondWithResult(_0x18caf3,null))['catch'](handleError(_0x18caf3,null));};exports[_0x9b76('0x36')]=function(_0x355045,_0x44b356){return db[_0x9b76('0x3b')][_0x9b76('0x57')]({'where':{'id':_0x355045[_0x9b76('0x58')]['id']}})['then'](handleEntityNotFound(_0x44b356,null))[_0x9b76('0x35')](removeEntity(_0x44b356,null))[_0x9b76('0x28')](handleError(_0x44b356,null));};exports[_0x9b76('0x59')]=function(_0x5d6ae5,_0x509fa2){return db[_0x9b76('0x3b')][_0x9b76('0x59')]()[_0x9b76('0x35')](respondWithResult(_0x509fa2,null))['catch'](handleError(_0x509fa2,null));};var interaction_log=require(_0x9b76('0x16'))(_0x9b76('0x5a'));exports[_0x9b76('0x5b')]=function(_0x112e16,_0x5df8c9,_0x2c0bb4){var _0x3f20a7={'agent':{},'channel':'openchannel'};if(_0x112e16[_0x9b76('0x56')]['id']){delete _0x112e16[_0x9b76('0x56')]['id'];}_0x112e16[_0x9b76('0x56')][_0x9b76('0x5c')]=!![];_0x112e16[_0x9b76('0x56')][_0x9b76('0x5d')]=moment()['format'](_0x9b76('0x5e'));_0x112e16[_0x9b76('0x56')][_0x9b76('0x5f')]=_0x112e16['body'][_0x9b76('0x5f')]||_0x112e16[_0x9b76('0x60')]['id'];_0x3f20a7['agent']['id']=_0x112e16[_0x9b76('0x56')][_0x9b76('0x5f')];return db[_0x9b76('0x3b')][_0x9b76('0x57')]({'where':{'id':_0x112e16['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5df8c9,null))[_0x9b76('0x35')](saveUpdates(_0x112e16[_0x9b76('0x56')],null))[_0x9b76('0x35')](function(_0x22ee6f){if(_0x22ee6f){_0x3f20a7['message']=_0x22ee6f[_0x9b76('0x61')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x22ee6f[_0x9b76('0x62')]}});}return null;})[_0x9b76('0x35')](handleEntityNotFound(_0x5df8c9,null))[_0x9b76('0x35')](function(_0x544cb8){if(_0x544cb8){return _0x544cb8[_0x9b76('0x34')]({'UserId':_0x112e16['body'][_0x9b76('0x5f')],'read1stAt':_['isNil'](_0x544cb8[_0x9b76('0x63')])?moment()[_0x9b76('0x64')](_0x9b76('0x5e')):undefined});}return null;})[_0x9b76('0x35')](function(_0x47c302){if(_0x47c302){_0x3f20a7[_0x9b76('0x65')]=_0x47c302[_0x9b76('0x61')]({'plain':!![]});interaction_log[_0x9b76('0x1f')](_0x9b76('0x66'),_0x112e16[_0x9b76('0x60')]['id'],_0x112e16[_0x9b76('0x60')]['name'],_0x112e16[_0x9b76('0x60')][_0x9b76('0x67')],_0x3f20a7['interaction']['id'],_0x112e16[_0x9b76('0x56')]?JSON[_0x9b76('0x24')](_0x112e16['body']):_0x9b76('0x68'));return respondWithRpcPromise(_0x9b76('0x69'),_0x9b76('0x6a'),_0x3f20a7);}return null;})[_0x9b76('0x35')](function(_0xc469eb){var _0x5ed8da='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xc469eb[_0x9b76('0x27')][_0x9b76('0x6b')];return db['sequelize']['query'](_0x5ed8da,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x9b76('0x35')](function(_0x470b65){return _0x470b65;});})[_0x9b76('0x35')](function(_0x5c22b0){if(_0x5c22b0){_0x3f20a7[_0x9b76('0x27')][_0x9b76('0x6c')]=_0x5c22b0[0x0];if(!_0x112e16[_0x9b76('0x56')]['UserId'])return;return db['User'][_0x9b76('0x57')]({'where':{'id':_0x112e16[_0x9b76('0x56')][_0x9b76('0x5f')],'role':_0x9b76('0x6d')},'attributes':['id','name',_0x9b76('0x6e'),_0x9b76('0x6f'),_0x9b76('0x70')],'raw':!![]});}return null;})['then'](function(_0x36d2d9){if(!_0x36d2d9)return null;_0x3f20a7[_0x9b76('0x27')]['agent']=_0x36d2d9;return _0x3f20a7;})[_0x9b76('0x35')](function(_0x2892a5){if(_0x2892a5){if(_0x112e16[_0x9b76('0x56')][_0x9b76('0x71')]){_0x3f20a7[_0x9b76('0x27')][_0x9b76('0x72')]=util[_0x9b76('0x64')](_0x9b76('0x73'),_0x112e16['user'][_0x9b76('0x38')]);_0x3f20a7['message'][_0x9b76('0x74')]=_0x3f20a7[_0x9b76('0x74')];_0x3f20a7[_0x9b76('0x27')]['motionChannel']=_0x3f20a7[_0x9b76('0x74')];_0x3f20a7[_0x9b76('0x27')][_0x9b76('0x75')]=_0x9b76('0x5b');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x9b76('0x76'),'message':_0x3f20a7[_0x9b76('0x27')]},client9002)['then'](function(){return _0x3f20a7;});}return _0x3f20a7;}return null;})['then'](respondWithResult(_0x5df8c9,null))[_0x9b76('0x28')](handleError(_0x5df8c9,null));};var interaction_log=require(_0x9b76('0x16'))(_0x9b76('0x5a'));exports[_0x9b76('0x32')]=function(_0x3018eb,_0x3ee225,_0xaf25ba){var _0x46e166={'agent':{},'channel':_0x9b76('0x77')};if(_0x3018eb[_0x9b76('0x56')]['id']){delete _0x3018eb['body']['id'];}_0x3018eb[_0x9b76('0x56')][_0x9b76('0x5f')]=_0x3018eb[_0x9b76('0x56')][_0x9b76('0x5f')]||_0x3018eb['user']['id'];_0x46e166[_0x9b76('0x6d')]['id']=_0x3018eb[_0x9b76('0x56')][_0x9b76('0x5f')];return db[_0x9b76('0x3b')][_0x9b76('0x57')]({'where':{'id':_0x3018eb['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3ee225,null))[_0x9b76('0x35')](function(_0xbe34f1){if(_0xbe34f1){_0x46e166[_0x9b76('0x27')]=_0xbe34f1[_0x9b76('0x61')]({'plain':!![]});return db['OpenchannelInteraction'][_0x9b76('0x57')]({'where':{'id':_0xbe34f1[_0x9b76('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x3ee225,null))[_0x9b76('0x35')](function(_0x2ebe0f){if(_0x2ebe0f){_0x46e166['interaction']=_0x2ebe0f[_0x9b76('0x61')]({'plain':!![]});interaction_log[_0x9b76('0x1f')](_0x9b76('0x78'),_0x3018eb[_0x9b76('0x60')]['id'],_0x3018eb['user'][_0x9b76('0x38')],_0x3018eb[_0x9b76('0x60')][_0x9b76('0x67')],_0x46e166[_0x9b76('0x65')]['id'],_0x3018eb[_0x9b76('0x56')]?JSON[_0x9b76('0x24')](_0x3018eb[_0x9b76('0x56')]):_0x9b76('0x68'));return respondWithRpcPromise(_0x9b76('0x79'),_0x9b76('0x7a'),_0x46e166);}return null;})['then'](function(_0x48d7e8){var _0x25d192=_0x9b76('0x7b')+_0x48d7e8[_0x9b76('0x27')][_0x9b76('0x6b')];return db['sequelize'][_0x9b76('0x40')](_0x25d192,{'type':db['Sequelize']['QueryTypes'][_0x9b76('0x7c')],'raw':!![]})[_0x9b76('0x35')](function(_0x1f385c){return _0x1f385c;});})[_0x9b76('0x35')](function(_0x529f42){if(_0x529f42){_0x46e166['message'][_0x9b76('0x6c')]=_0x529f42[0x0];if(!_0x3018eb[_0x9b76('0x56')][_0x9b76('0x5f')])return;return db[_0x9b76('0x7d')][_0x9b76('0x57')]({'where':{'id':_0x3018eb[_0x9b76('0x56')][_0x9b76('0x5f')],'role':_0x9b76('0x6d')},'attributes':['id',_0x9b76('0x38'),_0x9b76('0x6e'),_0x9b76('0x6f'),'internal'],'raw':!![]});}return null;})['then'](function(_0x5cf57c){if(!_0x5cf57c)return null;_0x46e166[_0x9b76('0x27')][_0x9b76('0x6d')]=_0x5cf57c;return _0x46e166;})[_0x9b76('0x35')](function(_0x2960f9){if(_0x2960f9){_0x2960f9[_0x9b76('0x27')]['interface']=util['format'](_0x9b76('0x73'),_0x3018eb['user'][_0x9b76('0x38')]);_0x2960f9[_0x9b76('0x27')][_0x9b76('0x74')]=_0x46e166[_0x9b76('0x74')];_0x2960f9[_0x9b76('0x27')][_0x9b76('0x7e')]=_0x46e166[_0x9b76('0x74')];_0x2960f9['message']['event']='reject';respondWithRpcPromise(_0x9b76('0x7f'),_0x9b76('0x7f'),{'event':'rejectmessage','message':_0x2960f9[_0x9b76('0x27')]},client9002);return _0x46e166;}return null;})[_0x9b76('0x35')](respondWithResult(_0x3ee225,null))['catch'](handleError(_0x3ee225,null));};
\ No newline at end of file
+var _0xb613=['SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','reject','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','event','rejectmessage','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','end','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','create','body','describe','openchannel-interactions','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes'];(function(_0x323d87,_0x4ef3f9){var _0x5e8f74=function(_0x185735){while(--_0x185735){_0x323d87['push'](_0x323d87['shift']());}};_0x5e8f74(++_0x4ef3f9);}(_0xb613,0x1b8));var _0x3b61=function(_0x53b53e,_0x498437){_0x53b53e=_0x53b53e-0x0;var _0xbb6179=_0xb613[_0x53b53e];return _0xbb6179;};'use strict';var emlformat=require(_0x3b61('0x0'));var rimraf=require(_0x3b61('0x1'));var zipdir=require(_0x3b61('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3b61('0x3'));var moment=require('moment');var BPromise=require(_0x3b61('0x4'));var Mustache=require('mustache');var util=require(_0x3b61('0x5'));var path=require(_0x3b61('0x6'));var sox=require(_0x3b61('0x7'));var csv=require(_0x3b61('0x8'));var ejs=require(_0x3b61('0x9'));var fs=require('fs');var fs_extra=require(_0x3b61('0xa'));var _=require(_0x3b61('0xb'));var squel=require(_0x3b61('0xc'));var crypto=require(_0x3b61('0xd'));var jsforce=require(_0x3b61('0xe'));var deskjs=require(_0x3b61('0xf'));var toCsv=require(_0x3b61('0x8'));var querystring=require(_0x3b61('0x10'));var Papa=require(_0x3b61('0x11'));var Redis=require(_0x3b61('0x12'));var authService=require(_0x3b61('0x13'));var qs=require(_0x3b61('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3b61('0x15'));var logger=require(_0x3b61('0x16'))(_0x3b61('0x17'));var utils=require(_0x3b61('0x18'));var config=require(_0x3b61('0x19'));var licenseUtil=require(_0x3b61('0x1a'));var db=require(_0x3b61('0x1b'))['db'];config[_0x3b61('0x1c')]=_[_0x3b61('0x1d')](config[_0x3b61('0x1c')],{'host':_0x3b61('0x1e'),'port':0x18eb});var socket=require(_0x3b61('0x1f'))(new Redis(config[_0x3b61('0x1c')]));require(_0x3b61('0x20'))[_0x3b61('0x21')](socket);var jayson=require(_0x3b61('0x22'));var client=jayson[_0x3b61('0x23')][_0x3b61('0x24')]({'port':0x232c});var client9002=jayson[_0x3b61('0x23')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29ae93,_0x57041a,_0x166134,_0x2b077b){return new BPromise(function(_0x1bfde4,_0x2e2d54){var _0x29d796=_0x2b077b||client;return _0x29d796['request'](_0x29ae93,_0x166134)[_0x3b61('0x25')](function(_0x217f40){logger[_0x3b61('0x26')](_0x3b61('0x27'),_0x57041a,_0x3b61('0x28'));logger['debug']('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x57041a,_0x3b61('0x28'),JSON[_0x3b61('0x29')](_0x217f40));if(_0x217f40[_0x3b61('0x2a')]){if(_0x217f40['error'][_0x3b61('0x2b')]===0x1f4){logger['error'](_0x3b61('0x27'),_0x57041a,_0x217f40[_0x3b61('0x2a')][_0x3b61('0x2c')]);return _0x2e2d54(_0x217f40[_0x3b61('0x2a')][_0x3b61('0x2c')]);}logger['error'](_0x3b61('0x27'),_0x57041a,_0x217f40['error']['message']);return _0x1bfde4(_0x217f40[_0x3b61('0x2a')][_0x3b61('0x2c')]);}else{logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x57041a,_0x3b61('0x28'));_0x1bfde4(_0x217f40[_0x3b61('0x2d')][_0x3b61('0x2c')]);}})[_0x3b61('0x2e')](function(_0x3d8d29){logger[_0x3b61('0x2a')](_0x3b61('0x27'),_0x57041a,_0x3d8d29);_0x2e2d54(_0x3d8d29);});});}function respondWithStatusCode(_0x2fcc4d,_0x52a40b){_0x52a40b=_0x52a40b||0xcc;return function(_0x3e36b0){if(_0x3e36b0){return _0x2fcc4d[_0x3b61('0x2f')](_0x52a40b);}return _0x2fcc4d[_0x3b61('0x30')](_0x52a40b)['end']();};}function respondWithResult(_0xbc36b,_0x34671b){_0x34671b=_0x34671b||0xc8;return function(_0x5e0cf3){if(_0x5e0cf3){return _0xbc36b[_0x3b61('0x30')](_0x34671b)[_0x3b61('0x31')](_0x5e0cf3);}};}function respondWithFilteredResult(_0x56a31f,_0x6bfdcd){return function(_0x4c15aa){if(_0x4c15aa){var _0x481d40=typeof _0x6bfdcd[_0x3b61('0x32')]===_0x3b61('0x33')&&typeof _0x6bfdcd[_0x3b61('0x34')]===_0x3b61('0x33');var _0x119680=_0x4c15aa[_0x3b61('0x35')];var _0x383f03=_0x481d40?0x0:_0x6bfdcd[_0x3b61('0x32')];var _0x111ab5=_0x481d40?_0x4c15aa['count']:_0x6bfdcd[_0x3b61('0x32')]+_0x6bfdcd['limit'];var _0x4f95e3;if(_0x111ab5>=_0x119680){_0x111ab5=_0x119680;_0x4f95e3=0xc8;}else{_0x4f95e3=0xce;}_0x56a31f['status'](_0x4f95e3);return _0x56a31f[_0x3b61('0x36')](_0x3b61('0x37'),_0x383f03+'-'+_0x111ab5+'/'+_0x119680)['json'](_0x4c15aa);}return null;};}function patchUpdates(_0x30a899){return function(_0x136804){try{jsonpatch[_0x3b61('0x38')](_0x136804,_0x30a899,!![]);}catch(_0x3d47b3){return BPromise['reject'](_0x3d47b3);}return _0x136804[_0x3b61('0x39')]();};}function saveUpdates(_0x43f6c4,_0x319a14){return function(_0x24959e){if(_0x24959e){return _0x24959e[_0x3b61('0x3a')](_0x43f6c4)[_0x3b61('0x25')](function(_0xa9368f){return _0xa9368f;});}return null;};}function removeEntity(_0x24218a,_0x419f65){return function(_0x358854){if(_0x358854){return _0x358854[_0x3b61('0x3b')]()[_0x3b61('0x25')](function(){_0x24218a['status'](0xcc)[_0x3b61('0x3c')]();});}};}function handleEntityNotFound(_0x15ef5c,_0x3a4abe){return function(_0x572709){if(!_0x572709){_0x15ef5c[_0x3b61('0x2f')](0x194);}return _0x572709;};}function handleError(_0x493a4f,_0x158cbc){_0x158cbc=_0x158cbc||0x1f4;return function(_0x515a43){logger[_0x3b61('0x2a')](_0x515a43['stack']);if(_0x515a43['name']){delete _0x515a43[_0x3b61('0x3d')];}_0x493a4f['status'](_0x158cbc)[_0x3b61('0x3e')](_0x515a43);};}exports[_0x3b61('0x3f')]=function(_0x47864b,_0x24fab7){var _0x1d5615={},_0x5ab48e={},_0x357080={'count':0x0,'rows':[]};var _0x2f6a4b=_[_0x3b61('0x40')](db[_0x3b61('0x41')][_0x3b61('0x42')],function(_0x284196){return{'name':_0x284196[_0x3b61('0x43')],'type':_0x284196[_0x3b61('0x44')][_0x3b61('0x45')]};});_0x5ab48e[_0x3b61('0x46')]=_[_0x3b61('0x40')](_0x2f6a4b,'name');_0x5ab48e['query']=_[_0x3b61('0x47')](_0x47864b[_0x3b61('0x48')]);_0x5ab48e[_0x3b61('0x49')]=_[_0x3b61('0x4a')](_0x5ab48e[_0x3b61('0x46')],_0x5ab48e[_0x3b61('0x48')]);_0x1d5615[_0x3b61('0x4b')]=_[_0x3b61('0x4a')](_0x5ab48e[_0x3b61('0x46')],qs['fields'](_0x47864b['query'][_0x3b61('0x4c')]));_0x1d5615[_0x3b61('0x4b')]=_0x1d5615['attributes'][_0x3b61('0x4d')]?_0x1d5615[_0x3b61('0x4b')]:_0x5ab48e[_0x3b61('0x46')];if(!_0x47864b[_0x3b61('0x48')][_0x3b61('0x4e')](_0x3b61('0x4f'))){_0x1d5615['limit']=qs[_0x3b61('0x34')](_0x47864b[_0x3b61('0x48')][_0x3b61('0x34')]);_0x1d5615[_0x3b61('0x32')]=qs[_0x3b61('0x32')](_0x47864b[_0x3b61('0x48')][_0x3b61('0x32')]);}_0x1d5615[_0x3b61('0x50')]=qs[_0x3b61('0x51')](_0x47864b[_0x3b61('0x48')][_0x3b61('0x51')]);_0x1d5615[_0x3b61('0x52')]=qs[_0x3b61('0x49')](_[_0x3b61('0x53')](_0x47864b['query'],_0x5ab48e[_0x3b61('0x49')]),_0x2f6a4b);if(_0x47864b[_0x3b61('0x48')][_0x3b61('0x54')]){_0x1d5615['where']=_[_0x3b61('0x55')](_0x1d5615[_0x3b61('0x52')],{'$or':_[_0x3b61('0x40')](_0x2f6a4b,function(_0x15e7c4){if(_0x15e7c4['type']!==_0x3b61('0x56')){var _0x4b7753={};_0x4b7753[_0x15e7c4[_0x3b61('0x3d')]]={'$like':'%'+_0x47864b[_0x3b61('0x48')][_0x3b61('0x54')]+'%'};return _0x4b7753;}})});}_0x1d5615=_['merge']({},_0x1d5615,_0x47864b[_0x3b61('0x57')]);var _0x4e2d8b={'where':_0x1d5615[_0x3b61('0x52')]};return db[_0x3b61('0x41')][_0x3b61('0x35')](_0x4e2d8b)[_0x3b61('0x25')](function(_0x38168b){_0x357080[_0x3b61('0x35')]=_0x38168b;if(_0x47864b[_0x3b61('0x48')][_0x3b61('0x58')]){_0x1d5615[_0x3b61('0x59')]=[{'all':!![]}];}return db[_0x3b61('0x41')][_0x3b61('0x5a')](_0x1d5615);})['then'](function(_0x29f496){_0x357080[_0x3b61('0x5b')]=_0x29f496;return _0x357080;})[_0x3b61('0x25')](respondWithFilteredResult(_0x24fab7,_0x1d5615))[_0x3b61('0x2e')](handleError(_0x24fab7,null));};exports['show']=function(_0x2108b7,_0x4aa4ea){var _0x1bc987={'raw':!![],'where':{'id':_0x2108b7[_0x3b61('0x5c')]['id']}},_0x4205fe={};_0x4205fe[_0x3b61('0x46')]=_[_0x3b61('0x47')](db[_0x3b61('0x41')]['rawAttributes']);_0x4205fe[_0x3b61('0x48')]=_[_0x3b61('0x47')](_0x2108b7['query']);_0x4205fe[_0x3b61('0x49')]=_[_0x3b61('0x4a')](_0x4205fe[_0x3b61('0x46')],_0x4205fe[_0x3b61('0x48')]);_0x1bc987[_0x3b61('0x4b')]=_[_0x3b61('0x4a')](_0x4205fe['model'],qs[_0x3b61('0x4c')](_0x2108b7['query'][_0x3b61('0x4c')]));_0x1bc987[_0x3b61('0x4b')]=_0x1bc987[_0x3b61('0x4b')][_0x3b61('0x4d')]?_0x1bc987[_0x3b61('0x4b')]:_0x4205fe[_0x3b61('0x46')];if(_0x2108b7[_0x3b61('0x48')]['includeAll']){_0x1bc987['include']=[{'all':!![]}];}_0x1bc987=_[_0x3b61('0x55')]({},_0x1bc987,_0x2108b7[_0x3b61('0x57')]);return db[_0x3b61('0x41')][_0x3b61('0x5d')](_0x1bc987)[_0x3b61('0x25')](handleEntityNotFound(_0x4aa4ea,null))['then'](respondWithResult(_0x4aa4ea,null))[_0x3b61('0x2e')](handleError(_0x4aa4ea,null));};exports[_0x3b61('0x5e')]=function(_0x4e7363,_0x4e0794){return db[_0x3b61('0x41')]['create'](_0x4e7363[_0x3b61('0x5f')],{})[_0x3b61('0x25')](respondWithResult(_0x4e0794,0xc9))[_0x3b61('0x2e')](handleError(_0x4e0794,null));};exports[_0x3b61('0x3a')]=function(_0x597a32,_0xc0eb57){if(_0x597a32[_0x3b61('0x5f')]['id']){delete _0x597a32[_0x3b61('0x5f')]['id'];}return db[_0x3b61('0x41')][_0x3b61('0x5d')]({'where':{'id':_0x597a32['params']['id']}})[_0x3b61('0x25')](handleEntityNotFound(_0xc0eb57,null))[_0x3b61('0x25')](saveUpdates(_0x597a32[_0x3b61('0x5f')],null))[_0x3b61('0x25')](respondWithResult(_0xc0eb57,null))['catch'](handleError(_0xc0eb57,null));};exports[_0x3b61('0x3b')]=function(_0x2f8754,_0x2d7375){return db[_0x3b61('0x41')][_0x3b61('0x5d')]({'where':{'id':_0x2f8754[_0x3b61('0x5c')]['id']}})['then'](handleEntityNotFound(_0x2d7375,null))[_0x3b61('0x25')](removeEntity(_0x2d7375,null))[_0x3b61('0x2e')](handleError(_0x2d7375,null));};exports[_0x3b61('0x60')]=function(_0x30f88e,_0x12bea3){return db[_0x3b61('0x41')][_0x3b61('0x60')]()['then'](respondWithResult(_0x12bea3,null))[_0x3b61('0x2e')](handleError(_0x12bea3,null));};var interaction_log=require(_0x3b61('0x16'))(_0x3b61('0x61'));exports[_0x3b61('0x62')]=function(_0x3bee3b,_0x3bd5f7,_0x30fb2c){var _0x10427a={'agent':{},'channel':_0x3b61('0x63')};if(_0x3bee3b[_0x3b61('0x5f')]['id']){delete _0x3bee3b[_0x3b61('0x5f')]['id'];}_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x64')]=!![];_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x65')]=moment()[_0x3b61('0x66')](_0x3b61('0x67'));_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x68')]=_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x68')]||_0x3bee3b[_0x3b61('0x69')]['id'];_0x10427a[_0x3b61('0x6a')]['id']=_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x68')];return db['OpenchannelMessage'][_0x3b61('0x5d')]({'where':{'id':_0x3bee3b[_0x3b61('0x5c')]['id'],'UserId':null}})[_0x3b61('0x25')](handleEntityNotFound(_0x3bd5f7,null))['then'](saveUpdates(_0x3bee3b[_0x3b61('0x5f')],null))[_0x3b61('0x25')](function(_0x33e469){if(_0x33e469){_0x10427a[_0x3b61('0x2c')]=_0x33e469[_0x3b61('0x6b')]({'plain':!![]});return db[_0x3b61('0x6c')][_0x3b61('0x5d')]({'where':{'id':_0x33e469[_0x3b61('0x6d')]}});}return null;})[_0x3b61('0x25')](handleEntityNotFound(_0x3bd5f7,null))[_0x3b61('0x25')](function(_0x2a597d){if(_0x2a597d){return _0x2a597d[_0x3b61('0x3a')]({'UserId':_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x68')],'read1stAt':_['isNil'](_0x2a597d['read1stAt'])?moment()[_0x3b61('0x66')](_0x3b61('0x67')):undefined});}return null;})[_0x3b61('0x25')](function(_0x56ce3a){if(_0x56ce3a){_0x10427a[_0x3b61('0x6e')]=_0x56ce3a[_0x3b61('0x6b')]({'plain':!![]});interaction_log[_0x3b61('0x26')](_0x3b61('0x6f'),_0x3bee3b[_0x3b61('0x69')]['id'],_0x3bee3b[_0x3b61('0x69')][_0x3b61('0x3d')],_0x3bee3b['user']['role'],_0x10427a[_0x3b61('0x6e')]['id'],_0x3bee3b[_0x3b61('0x5f')]?JSON[_0x3b61('0x29')](_0x3bee3b[_0x3b61('0x5f')]):_0x3b61('0x70'));return respondWithRpcPromise(_0x3b61('0x71'),_0x3b61('0x72'),_0x10427a);}return null;})[_0x3b61('0x25')](function(_0x44edfc){var _0x1a69ea=_0x3b61('0x73')+_0x44edfc[_0x3b61('0x2c')][_0x3b61('0x74')];return db[_0x3b61('0x75')][_0x3b61('0x48')](_0x1a69ea,{'type':db[_0x3b61('0x76')][_0x3b61('0x77')][_0x3b61('0x78')],'raw':!![]})[_0x3b61('0x25')](function(_0x1a9f77){return _0x1a9f77;});})[_0x3b61('0x25')](function(_0x34e7b7){if(_0x34e7b7){_0x10427a[_0x3b61('0x2c')][_0x3b61('0x79')]=_0x34e7b7[0x0];if(!_0x3bee3b[_0x3b61('0x5f')]['UserId'])return;return db[_0x3b61('0x7a')][_0x3b61('0x5d')]({'where':{'id':_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x68')],'role':_0x3b61('0x6a')},'attributes':['id',_0x3b61('0x3d'),_0x3b61('0x7b'),_0x3b61('0x7c'),_0x3b61('0x7d')],'raw':!![]});}return null;})[_0x3b61('0x25')](function(_0x42aa10){if(!_0x42aa10)return null;_0x10427a['message'][_0x3b61('0x6a')]=_0x42aa10;return _0x10427a;})['then'](function(_0x29efc1){if(_0x29efc1){if(_0x3bee3b[_0x3b61('0x5f')][_0x3b61('0x7e')]){_0x10427a['message'][_0x3b61('0x7f')]=util[_0x3b61('0x66')](_0x3b61('0x80'),_0x3bee3b['user']['name']);_0x10427a[_0x3b61('0x2c')]['channel']=_0x10427a[_0x3b61('0x81')];_0x10427a['message'][_0x3b61('0x82')]=_0x10427a[_0x3b61('0x81')];_0x10427a[_0x3b61('0x2c')]['event']=_0x3b61('0x62');return respondWithRpcPromise(_0x3b61('0x83'),_0x3b61('0x83'),{'event':_0x3b61('0x84'),'message':_0x10427a[_0x3b61('0x2c')]},client9002)[_0x3b61('0x25')](function(){return _0x10427a;});}return _0x10427a;}return null;})[_0x3b61('0x25')](respondWithResult(_0x3bd5f7,null))[_0x3b61('0x2e')](handleError(_0x3bd5f7,null));};var interaction_log=require(_0x3b61('0x16'))(_0x3b61('0x61'));exports[_0x3b61('0x85')]=function(_0x517a52,_0xeca9eb,_0x575e4c){var _0x54abd0={'agent':{},'channel':'openchannel'};if(_0x517a52[_0x3b61('0x5f')]['id']){delete _0x517a52['body']['id'];}_0x517a52[_0x3b61('0x5f')][_0x3b61('0x68')]=_0x517a52[_0x3b61('0x5f')][_0x3b61('0x68')]||_0x517a52[_0x3b61('0x69')]['id'];_0x54abd0[_0x3b61('0x6a')]['id']=_0x517a52[_0x3b61('0x5f')][_0x3b61('0x68')];return db[_0x3b61('0x41')]['find']({'where':{'id':_0x517a52[_0x3b61('0x5c')]['id'],'UserId':null}})[_0x3b61('0x25')](handleEntityNotFound(_0xeca9eb,null))[_0x3b61('0x25')](function(_0x17280f){if(_0x17280f){_0x54abd0[_0x3b61('0x2c')]=_0x17280f['get']({'plain':!![]});return db[_0x3b61('0x6c')][_0x3b61('0x5d')]({'where':{'id':_0x17280f['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0xeca9eb,null))[_0x3b61('0x25')](function(_0x313e9d){if(_0x313e9d){_0x54abd0['interaction']=_0x313e9d[_0x3b61('0x6b')]({'plain':!![]});interaction_log['info'](_0x3b61('0x86'),_0x517a52[_0x3b61('0x69')]['id'],_0x517a52['user'][_0x3b61('0x3d')],_0x517a52[_0x3b61('0x69')][_0x3b61('0x87')],_0x54abd0[_0x3b61('0x6e')]['id'],_0x517a52[_0x3b61('0x5f')]?JSON['stringify'](_0x517a52[_0x3b61('0x5f')]):_0x3b61('0x70'));return respondWithRpcPromise(_0x3b61('0x88'),_0x3b61('0x89'),_0x54abd0);}return null;})[_0x3b61('0x25')](function(_0x1b6ccc){var _0x172185=_0x3b61('0x73')+_0x1b6ccc[_0x3b61('0x2c')][_0x3b61('0x74')];return db[_0x3b61('0x75')][_0x3b61('0x48')](_0x172185,{'type':db['Sequelize']['QueryTypes'][_0x3b61('0x78')],'raw':!![]})[_0x3b61('0x25')](function(_0x20f10d){return _0x20f10d;});})[_0x3b61('0x25')](function(_0x22a2a3){if(_0x22a2a3){_0x54abd0[_0x3b61('0x2c')][_0x3b61('0x79')]=_0x22a2a3[0x0];if(!_0x517a52[_0x3b61('0x5f')][_0x3b61('0x68')])return;return db[_0x3b61('0x7a')]['find']({'where':{'id':_0x517a52[_0x3b61('0x5f')][_0x3b61('0x68')],'role':_0x3b61('0x6a')},'attributes':['id',_0x3b61('0x3d'),_0x3b61('0x7b'),_0x3b61('0x7c'),_0x3b61('0x7d')],'raw':!![]});}return null;})['then'](function(_0xb6b529){if(!_0xb6b529)return null;_0x54abd0[_0x3b61('0x2c')][_0x3b61('0x6a')]=_0xb6b529;return _0x54abd0;})['then'](function(_0x82fb71){if(_0x82fb71){_0x82fb71[_0x3b61('0x2c')]['interface']=util[_0x3b61('0x66')](_0x3b61('0x80'),_0x517a52[_0x3b61('0x69')][_0x3b61('0x3d')]);_0x82fb71[_0x3b61('0x2c')][_0x3b61('0x81')]=_0x54abd0[_0x3b61('0x81')];_0x82fb71['message'][_0x3b61('0x82')]=_0x54abd0['channel'];_0x82fb71[_0x3b61('0x2c')][_0x3b61('0x8a')]=_0x3b61('0x85');respondWithRpcPromise(_0x3b61('0x83'),'EventManager',{'event':_0x3b61('0x8b'),'message':_0x82fb71[_0x3b61('0x2c')]},client9002);return _0x54abd0;}return null;})[_0x3b61('0x25')](respondWithResult(_0xeca9eb,null))[_0x3b61('0x2e')](handleError(_0xeca9eb,null));};
\ No newline at end of file
index 71eff26..64045c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c8f=['../../mysqldb','OpenchannelMessage','save','update','emit','hook','exports'];(function(_0x498bc8,_0x570299){var _0x176ed1=function(_0x1dfd89){while(--_0x1dfd89){_0x498bc8['push'](_0x498bc8['shift']());}};_0x176ed1(++_0x570299);}(_0x2c8f,0xcb));var _0xf2c8=function(_0x1098fb,_0x530d79){_0x1098fb=_0x1098fb-0x0;var _0x8d71d9=_0x2c8f[_0x1098fb];return _0x8d71d9;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0xf2c8('0x0'))['db'][_0xf2c8('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf2c8('0x2'),'afterUpdate':_0xf2c8('0x3'),'afterDestroy':'remove'};function emitEvent(_0x55a03e){return function(_0x3913df,_0x218238,_0x47fdf9){OpenchannelMessageEvents[_0xf2c8('0x4')](_0x55a03e+':'+_0x3913df['id'],_0x3913df);OpenchannelMessageEvents[_0xf2c8('0x4')](_0x55a03e,_0x3913df);_0x47fdf9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0xf2c8('0x5')](e,emitEvent(event));}}module[_0xf2c8('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x4974=['emit','hasOwnProperty','hook','exports','OpenchannelMessage','setMaxListeners','update','remove'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x4974,0xd4));var _0x4497=function(_0x389c80,_0x5977d5){_0x389c80=_0x389c80-0x0;var _0x3f643e=_0x4974[_0x389c80];return _0x3f643e;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db'][_0x4497('0x0')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x4497('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4497('0x2'),'afterDestroy':_0x4497('0x3')};function emitEvent(_0x3e6647){return function(_0x1b7d2f,_0x4a523f,_0x40169a){OpenchannelMessageEvents['emit'](_0x3e6647+':'+_0x1b7d2f['id'],_0x1b7d2f);OpenchannelMessageEvents[_0x4497('0x4')](_0x3e6647,_0x1b7d2f);_0x40169a(null);};}for(var e in events){if(events[_0x4497('0x5')](e)){var event=events[e];OpenchannelMessage[_0x4497('0x6')](e,emitEvent(event));}}module[_0x4497('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 0f6d56f..364e9dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf6f=['utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','get','direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','OpenchannelInteractionId','then','update','catch','error','CmContact','describe','OpenchannelAccount','find','Contact','keys','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','Interactions','POST','method','GET','info','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction'];(function(_0x214034,_0x131afe){var _0x215ff7=function(_0x5e5107){while(--_0x5e5107){_0x214034['push'](_0x214034['shift']());}};_0x215ff7(++_0x131afe);}(_0xdf6f,0x144));var _0xfdf6=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xdf6f[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xfdf6('0x0'));var util=require('util');var logger=require(_0xfdf6('0x1'))('api');var moment=require(_0xfdf6('0x2'));var BPromise=require(_0xfdf6('0x3'));var rp=require(_0xfdf6('0x4'));var fs=require('fs');var path=require(_0xfdf6('0x5'));var rimraf=require(_0xfdf6('0x6'));var config=require('../../config/environment');var attributes=require('./openchannelMessage.attributes');module[_0xfdf6('0x7')]=function(_0xec4092,_0x4f7f18){return _0xec4092[_0xfdf6('0x8')](_0xfdf6('0x9'),attributes,{'tableName':_0xfdf6('0xa'),'paranoid':![],'indexes':[{'name':_0xfdf6('0xb'),'fields':[_0xfdf6('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x39d958,_0x4f1ff3,_0x50a1da){var _0x1a570e=_0xec4092['models'];var _0x1957f8=_0x39d958[_0xfdf6('0xd')]({'plain':!![]});if(_0x1957f8[_0xfdf6('0xe')][_0xfdf6('0xf')]()==='in'||_0x1957f8['direction'][_0xfdf6('0xf')]()===_0xfdf6('0x10')&&!_0x1957f8[_0xfdf6('0x11')]&&!_['isNil'](_0x1957f8[_0xfdf6('0x12')])){_0x1a570e[_0xfdf6('0x13')]['findOne']({'where':{'id':_0x1957f8[_0xfdf6('0x14')]}})[_0xfdf6('0x15')](function(_0x20f59f){if(_0x20f59f){_0x20f59f[_0xfdf6('0x16')]({'lastMsgAt':_0x1957f8['createdAt'],'lastMsgDirection':_0x1957f8[_0xfdf6('0xe')][_0xfdf6('0xf')]()});}})[_0xfdf6('0x17')](function(_0x28b1d4){console[_0xfdf6('0x18')](_0x28b1d4);});}if(_0x1957f8['direction']===_0xfdf6('0x10')&&!_0x1957f8[_0xfdf6('0x11')]){var _0x283f0c;_0x1a570e[_0xfdf6('0x19')][_0xfdf6('0x1a')]()['then'](function(_0x150186){return _0x1a570e[_0xfdf6('0x1b')][_0xfdf6('0x1c')]({'where':{'id':_0x1957f8['OpenchannelAccountId']},'include':[{'model':_0x1a570e['OpenchannelInteraction'],'as':'Interactions','where':{'id':_0x1957f8['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x1a570e['CmContact'],'as':_0xfdf6('0x1d'),'attributes':_[_0xfdf6('0x1e')](_0x150186)}]}]});})['then'](function(_0x1a4254){_0x283f0c=_0x1a4254[_0xfdf6('0xd')]({'plain':!![]});if(_0x283f0c&&_0x283f0c['replyUri']){logger['info'](_0xfdf6('0x1f'),_0xfdf6('0x20'),util[_0xfdf6('0x21')](_0xfdf6('0x22'),_0x1957f8['id'],_0x283f0c[_0xfdf6('0x23')]));if(_0x283f0c[_0xfdf6('0x24')]&&_0x283f0c['Interactions']['length']){_0x1957f8['Interaction']=_['omit'](_0x283f0c['Interactions'][0x0],_0xfdf6('0x1d'));_0x1957f8[_0xfdf6('0x1d')]=_0x283f0c['Interactions'][0x0][_0xfdf6('0x1d')];}var _0x4f1ff3={'method':_0xfdf6('0x25'),'uri':encodeURI(_0x283f0c[_0xfdf6('0x23')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x4f1ff3[_0xfdf6('0x26')]){case _0xfdf6('0x27'):_0x4f1ff3['qs']=_0x1957f8;break;case _0xfdf6('0x25'):_0x4f1ff3[_0xfdf6('0xc')]=_0x1957f8;break;}return rp(_0x4f1ff3)['then'](function(_0x36d49b){logger[_0xfdf6('0x28')](_0xfdf6('0x1f'),_0xfdf6('0x20'),util[_0xfdf6('0x21')](_0xfdf6('0x29'),_0x1957f8['id'],_0x283f0c[_0xfdf6('0x23')]));if(_0x36d49b[_0xfdf6('0xc')]['threadId']&&_0x36d49b[_0xfdf6('0xc')][_0xfdf6('0x2a')]!=_0x1957f8[_0xfdf6('0x2b')][_0xfdf6('0x2a')]){return _0x1a570e['OpenchannelInteraction'][_0xfdf6('0x16')]({'threadId':_0x36d49b['body'][_0xfdf6('0x2a')]},{'where':{'id':_0x1957f8[_0xfdf6('0x2b')]['id']}});}else{return;}})[_0xfdf6('0x15')](function(){return _0x39d958[_0xfdf6('0x16')]({'read':!![]});})[_0xfdf6('0x17')](function(_0x2a44e8){logger['error'](_0xfdf6('0x1f'),_0xfdf6('0x20'),util['inspect'](_0x2a44e8,{'showHidden':![],'depth':null}));_0x50a1da();});}else{_0x50a1da();}})['finally'](function(){_0x50a1da();});}else{_0x50a1da();}}},'charset':_0xfdf6('0x2c'),'collate':_0xfdf6('0x2d')});};
\ No newline at end of file
+var _0x07a7=['body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','OpenchannelInteraction','OpenchannelInteractionId','then','update','createdAt','catch','error','CmContact','OpenchannelAccount','OpenchannelAccountId','Interactions','Contact','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','omit','POST','method','GET','threadId','Interaction','inspect','finally','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','path','rimraf','define','OpenchannelMessage'];(function(_0x26d26a,_0x55bc37){var _0x2d75ff=function(_0x33ab63){while(--_0x33ab63){_0x26d26a['push'](_0x26d26a['shift']());}};_0x2d75ff(++_0x55bc37);}(_0x07a7,0x1ba));var _0x707a=function(_0x565dab,_0x500f01){_0x565dab=_0x565dab-0x0;var _0x37a556=_0x07a7[_0x565dab];return _0x37a556;};'use strict';var _=require(_0x707a('0x0'));var util=require('util');var logger=require(_0x707a('0x1'))(_0x707a('0x2'));var moment=require('moment');var BPromise=require(_0x707a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x707a('0x4'));var rimraf=require(_0x707a('0x5'));var config=require('../../config/environment');var attributes=require('./openchannelMessage.attributes');module['exports']=function(_0x238968,_0x5a9f59){return _0x238968[_0x707a('0x6')](_0x707a('0x7'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x707a('0x8')],'type':_0x707a('0x9')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1ff685,_0x287a18,_0x2bc218){var _0x53a27d=_0x238968[_0x707a('0xa')];var _0x3bf1cd=_0x1ff685[_0x707a('0xb')]({'plain':!![]});if(_0x3bf1cd[_0x707a('0xc')][_0x707a('0xd')]()==='in'||_0x3bf1cd[_0x707a('0xc')][_0x707a('0xd')]()===_0x707a('0xe')&&!_0x3bf1cd[_0x707a('0xf')]&&!_[_0x707a('0x10')](_0x3bf1cd['UserId'])){_0x53a27d[_0x707a('0x11')]['findOne']({'where':{'id':_0x3bf1cd[_0x707a('0x12')]}})[_0x707a('0x13')](function(_0x1ddf19){if(_0x1ddf19){_0x1ddf19[_0x707a('0x14')]({'lastMsgAt':_0x3bf1cd[_0x707a('0x15')],'lastMsgDirection':_0x3bf1cd[_0x707a('0xc')][_0x707a('0xd')]()});}})[_0x707a('0x16')](function(_0x22d8b7){console[_0x707a('0x17')](_0x22d8b7);});}if(_0x3bf1cd['direction']===_0x707a('0xe')&&!_0x3bf1cd[_0x707a('0xf')]){var _0x56b422;_0x53a27d[_0x707a('0x18')]['describe']()[_0x707a('0x13')](function(_0x11f99f){return _0x53a27d[_0x707a('0x19')]['find']({'where':{'id':_0x3bf1cd[_0x707a('0x1a')]},'include':[{'model':_0x53a27d[_0x707a('0x11')],'as':_0x707a('0x1b'),'where':{'id':_0x3bf1cd[_0x707a('0x12')]},'limit':0x1,'include':[{'model':_0x53a27d[_0x707a('0x18')],'as':_0x707a('0x1c'),'attributes':_['keys'](_0x11f99f)}]}]});})[_0x707a('0x13')](function(_0x13df28){_0x56b422=_0x13df28[_0x707a('0xb')]({'plain':!![]});if(_0x56b422&&_0x56b422['replyUri']){logger[_0x707a('0x1d')](_0x707a('0x1e'),_0x707a('0x1f'),util[_0x707a('0x20')](_0x707a('0x21'),_0x3bf1cd['id'],_0x56b422[_0x707a('0x22')]));if(_0x56b422[_0x707a('0x1b')]&&_0x56b422[_0x707a('0x1b')][_0x707a('0x23')]){_0x3bf1cd['Interaction']=_[_0x707a('0x24')](_0x56b422[_0x707a('0x1b')][0x0],_0x707a('0x1c'));_0x3bf1cd[_0x707a('0x1c')]=_0x56b422[_0x707a('0x1b')][0x0]['Contact'];}var _0x287a18={'method':_0x707a('0x25'),'uri':encodeURI(_0x56b422[_0x707a('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x287a18[_0x707a('0x26')]){case _0x707a('0x27'):_0x287a18['qs']=_0x3bf1cd;break;case'POST':_0x287a18[_0x707a('0x8')]=_0x3bf1cd;break;}return rp(_0x287a18)[_0x707a('0x13')](function(_0x311e87){logger[_0x707a('0x1d')]('OpenchannelMessage,\x20%s,\x20%s',_0x707a('0x1f'),util['format']('Message\x20%d\x20forwarded\x20to\x20%s',_0x3bf1cd['id'],_0x56b422['replyUri']));if(_0x311e87[_0x707a('0x8')][_0x707a('0x28')]&&_0x311e87['body'][_0x707a('0x28')]!=_0x3bf1cd[_0x707a('0x29')]['threadId']){return _0x53a27d['OpenchannelInteraction']['update']({'threadId':_0x311e87['body']['threadId']},{'where':{'id':_0x3bf1cd['Interaction']['id']}});}else{return;}})['then'](function(){return _0x1ff685[_0x707a('0x14')]({'read':!![]});})[_0x707a('0x16')](function(_0xe63386){logger[_0x707a('0x17')]('OpenchannelMessage,\x20%s,\x20%s',_0x707a('0x1f'),util[_0x707a('0x2a')](_0xe63386,{'showHidden':![],'depth':null}));_0x2bc218();});}else{_0x2bc218();}})[_0x707a('0x2b')](function(){_0x2bc218();});}else{_0x2bc218();}}},'charset':'utf8mb4','collate':_0x707a('0x2c')});};
\ No newline at end of file
index 7536f3e..5f13a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x474b5f,_0x21b10d){var _0x453305=function(_0x24c306){while(--_0x24c306){_0x474b5f['push'](_0x474b5f['shift']());}};_0x453305(++_0x21b10d);}(_0x0b0e,0x187));var _0xe0b0=function(_0xe775be,_0x4822af){_0xe775be=_0xe775be-0x0;var _0x49e73c=_0x0b0e[_0xe775be];return _0x49e73c;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
+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(_0x2ab42f,_0x58dc9b){var _0x167e06=function(_0x27d672){while(--_0x27d672){_0x2ab42f['push'](_0x2ab42f['shift']());}};_0x167e06(++_0x58dc9b);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x5f66[_0x4cf98e];return _0x1623ac;};'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
index 842faad..bf79d73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb76b=['emit','removeListener','register','save','remove','update'];(function(_0x493d3c,_0x121187){var _0x4fde0a=function(_0x209732){while(--_0x209732){_0x493d3c['push'](_0x493d3c['shift']());}};_0x4fde0a(++_0x121187);}(_0xb76b,0x12f));var _0xbb76=function(_0x4cbe3c,_0x59d0bd){_0x4cbe3c=_0x4cbe3c-0x0;var _0x48d92f=_0xb76b[_0x4cbe3c];return _0x48d92f;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0xbb76('0x0'),_0xbb76('0x1'),_0xbb76('0x2')];function createListener(_0x524a14,_0x394abe){return function(_0x1622ac){_0x394abe[_0xbb76('0x3')](_0x524a14,_0x1622ac);};}function removeListener(_0x82d22d,_0x24ebfc){return function(){OpenchannelMessageEvents[_0xbb76('0x4')](_0x82d22d,_0x24ebfc);};}exports[_0xbb76('0x5')]=function(_0x789165){for(var _0x2a98c0=0x0,_0x392c01=events['length'];_0x2a98c0<_0x392c01;_0x2a98c0++){var _0x2de2b2=events[_0x2a98c0];var _0x25c1e3=createListener('openchannelMessage:'+_0x2de2b2,_0x789165);OpenchannelMessageEvents['on'](_0x2de2b2,_0x25c1e3);}};
\ No newline at end of file
+var _0x3339=['save','remove','update','emit','openchannelMessage:','./openchannelMessage.events'];(function(_0x879b3f,_0x213e3d){var _0x4e64fa=function(_0x3fd1cf){while(--_0x3fd1cf){_0x879b3f['push'](_0x879b3f['shift']());}};_0x4e64fa(++_0x213e3d);}(_0x3339,0x19d));var _0x9333=function(_0x4b28cb,_0x4d80b1){_0x4b28cb=_0x4b28cb-0x0;var _0x24ae9b=_0x3339[_0x4b28cb];return _0x24ae9b;};'use strict';var OpenchannelMessageEvents=require(_0x9333('0x0'));var events=[_0x9333('0x1'),_0x9333('0x2'),_0x9333('0x3')];function createListener(_0x52e097,_0x47fde4){return function(_0x22eac0){_0x47fde4[_0x9333('0x4')](_0x52e097,_0x22eac0);};}function removeListener(_0x4fbf4d,_0x29c3a3){return function(){OpenchannelMessageEvents['removeListener'](_0x4fbf4d,_0x29c3a3);};}exports['register']=function(_0x10c741){for(var _0x4e19c7=0x0,_0x2fbf96=events['length'];_0x4e19c7<_0x2fbf96;_0x4e19c7++){var _0x3fe466=events[_0x4e19c7];var _0x51e0c8=createListener(_0x9333('0x5')+_0x3fe466,_0x10c741);OpenchannelMessageEvents['on'](_0x3fe466,_0x51e0c8);}};
\ No newline at end of file
index e43e699..72d2ad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf3=['create','addTeams','post','addAgents','put','/:id','update','destroy','delete','removeAgents','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','/describe','describe','show','/:id/teams','getTeams','/:id/users'];(function(_0x3a919a,_0x45a59a){var _0x110464=function(_0x508427){while(--_0x508427){_0x3a919a['push'](_0x3a919a['shift']());}};_0x110464(++_0x45a59a);}(_0xfdf3,0x1f1));var _0x3fdf=function(_0x19b490,_0x2e529a){_0x19b490=_0x19b490-0x0;var _0x4e5c65=_0xfdf3[_0x19b490];return _0x4e5c65;};'use strict';var multer=require('multer');var util=require(_0x3fdf('0x0'));var path=require(_0x3fdf('0x1'));var timeout=require('connect-timeout');var express=require(_0x3fdf('0x2'));var router=express[_0x3fdf('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3fdf('0x4'));var interaction=require(_0x3fdf('0x5'));var config=require(_0x3fdf('0x6'));var controller=require(_0x3fdf('0x7'));router[_0x3fdf('0x8')]('/',auth[_0x3fdf('0x9')](),controller['index']);router[_0x3fdf('0x8')](_0x3fdf('0xa'),auth[_0x3fdf('0x9')](),controller[_0x3fdf('0xb')]);router[_0x3fdf('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3fdf('0xc')]);router[_0x3fdf('0x8')]('/:id/members',auth[_0x3fdf('0x9')](),controller['getMembers']);router[_0x3fdf('0x8')](_0x3fdf('0xd'),auth['isAuthenticated'](),controller[_0x3fdf('0xe')]);router[_0x3fdf('0x8')](_0x3fdf('0xf'),auth[_0x3fdf('0x9')](),controller['getAgents']);router['post']('/',auth[_0x3fdf('0x9')](),controller[_0x3fdf('0x10')]);router['post'](_0x3fdf('0xd'),auth[_0x3fdf('0x9')](),controller[_0x3fdf('0x11')]);router[_0x3fdf('0x12')](_0x3fdf('0xf'),auth[_0x3fdf('0x9')](),controller[_0x3fdf('0x13')]);router[_0x3fdf('0x14')](_0x3fdf('0x15'),auth['isAuthenticated'](),controller[_0x3fdf('0x16')]);router['delete'](_0x3fdf('0x15'),auth[_0x3fdf('0x9')](),controller[_0x3fdf('0x17')]);router[_0x3fdf('0x18')](_0x3fdf('0xd'),auth[_0x3fdf('0x9')](),controller['removeTeams']);router[_0x3fdf('0x18')](_0x3fdf('0xf'),auth[_0x3fdf('0x9')](),controller[_0x3fdf('0x19')]);module[_0x3fdf('0x1a')]=router;
\ No newline at end of file
+var _0x8ffd=['removeAgents','exports','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams'];(function(_0x4f1651,_0xc4ac4f){var _0x44868e=function(_0x2a2ec1){while(--_0x2a2ec1){_0x4f1651['push'](_0x4f1651['shift']());}};_0x44868e(++_0xc4ac4f);}(_0x8ffd,0x12b));var _0xd8ff=function(_0x2d2ec8,_0x3f04b1){_0x2d2ec8=_0x2d2ec8-0x0;var _0x30e4e9=_0x8ffd[_0x2d2ec8];return _0x30e4e9;};'use strict';var multer=require('multer');var util=require(_0xd8ff('0x0'));var path=require('path');var timeout=require(_0xd8ff('0x1'));var express=require('express');var router=express[_0xd8ff('0x2')]();var fs_extra=require(_0xd8ff('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd8ff('0x4'));var config=require(_0xd8ff('0x5'));var controller=require(_0xd8ff('0x6'));router[_0xd8ff('0x7')]('/',auth[_0xd8ff('0x8')](),controller[_0xd8ff('0x9')]);router[_0xd8ff('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd8ff('0x7')](_0xd8ff('0xa'),auth['isAuthenticated'](),controller[_0xd8ff('0xb')]);router['get'](_0xd8ff('0xc'),auth[_0xd8ff('0x8')](),controller[_0xd8ff('0xd')]);router[_0xd8ff('0x7')](_0xd8ff('0xe'),auth[_0xd8ff('0x8')](),controller['getTeams']);router[_0xd8ff('0x7')](_0xd8ff('0xf'),auth[_0xd8ff('0x8')](),controller[_0xd8ff('0x10')]);router[_0xd8ff('0x11')]('/',auth[_0xd8ff('0x8')](),controller[_0xd8ff('0x12')]);router[_0xd8ff('0x11')](_0xd8ff('0xe'),auth[_0xd8ff('0x8')](),controller[_0xd8ff('0x13')]);router[_0xd8ff('0x11')](_0xd8ff('0xf'),auth['isAuthenticated'](),controller[_0xd8ff('0x14')]);router[_0xd8ff('0x15')](_0xd8ff('0xa'),auth[_0xd8ff('0x8')](),controller[_0xd8ff('0x16')]);router[_0xd8ff('0x17')](_0xd8ff('0xa'),auth[_0xd8ff('0x8')](),controller['destroy']);router['delete'](_0xd8ff('0xe'),auth[_0xd8ff('0x8')](),controller[_0xd8ff('0x18')]);router['delete'](_0xd8ff('0xf'),auth[_0xd8ff('0x8')](),controller[_0xd8ff('0x19')]);module[_0xd8ff('0x1a')]=router;
\ No newline at end of file
index 50358a9..99d69c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x976a=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x3afe18,_0x26922c){var _0x19ed1f=function(_0x1c0660){while(--_0x1c0660){_0x3afe18['push'](_0x3afe18['shift']());}};_0x19ed1f(++_0x26922c);}(_0x976a,0x1b3));var _0xa976=function(_0x1f27df,_0x4f1a64){_0x1f27df=_0x1f27df-0x0;var _0x286ee2=_0x976a[_0x1f27df];return _0x286ee2;};'use strict';var Sequelize=require(_0xa976('0x0'));module[_0xa976('0x1')]={'name':{'type':Sequelize[_0xa976('0x2')],'unique':_0xa976('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xa976('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa976('0x5')](_0xa976('0x6'),_0xa976('0x7'),_0xa976('0x8'))}};
\ No newline at end of file
+var _0xc2c7=['beepall','sequelize','STRING','name','ENUM','rrmemory'];(function(_0x4ea8a4,_0x381baa){var _0x128999=function(_0x5edce4){while(--_0x5edce4){_0x4ea8a4['push'](_0x4ea8a4['shift']());}};_0x128999(++_0x381baa);}(_0xc2c7,0x151));var _0x7c2c=function(_0x342eb1,_0x54e4c2){_0x342eb1=_0x342eb1-0x0;var _0x31e4a9=_0xc2c7[_0x342eb1];return _0x31e4a9;};'use strict';var Sequelize=require(_0x7c2c('0x0'));module['exports']={'name':{'type':Sequelize[_0x7c2c('0x1')],'unique':_0x7c2c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7c2c('0x3')](_0x7c2c('0x4'),_0x7c2c('0x5'),'roundrobin')}};
\ No newline at end of file
index 212f9a0..0886024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd566=['forEach','userOpenchannelQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','then','get','error','stack','name','send','index','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','OpenchannelQueue','includeAll','rows','show','keys','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OpenchannelQueues','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','destroy','describe','getMembers','UserOpenchannelQueue','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','getTeams','findOne','Team','addTeams','findAll','online','voicePause','interface','Agents','transaction','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','ids','User','select','field','tq.TeamId','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xd566,0x136));var _0x6d56=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xd566[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x6d56('0x0'));var rimraf=require(_0x6d56('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6d56('0x2'));var rp=require(_0x6d56('0x3'));var moment=require('moment');var BPromise=require(_0x6d56('0x4'));var Mustache=require(_0x6d56('0x5'));var util=require('util');var path=require(_0x6d56('0x6'));var sox=require(_0x6d56('0x7'));var csv=require('to-csv');var ejs=require(_0x6d56('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6d56('0x9'));var squel=require(_0x6d56('0xa'));var crypto=require(_0x6d56('0xb'));var jsforce=require(_0x6d56('0xc'));var deskjs=require(_0x6d56('0xd'));var toCsv=require(_0x6d56('0xe'));var querystring=require(_0x6d56('0xf'));var Papa=require(_0x6d56('0x10'));var Redis=require(_0x6d56('0x11'));var authService=require(_0x6d56('0x12'));var qs=require(_0x6d56('0x13'));var as=require(_0x6d56('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6d56('0x15'))(_0x6d56('0x16'));var utils=require(_0x6d56('0x17'));var config=require(_0x6d56('0x18'));var licenseUtil=require(_0x6d56('0x19'));var db=require(_0x6d56('0x1a'))['db'];config['redis']=_[_0x6d56('0x1b')](config[_0x6d56('0x1c')],{'host':_0x6d56('0x1d'),'port':0x18eb});var socket=require(_0x6d56('0x1e'))(new Redis(config['redis']));require(_0x6d56('0x1f'))[_0x6d56('0x20')](socket);function respondWithStatusCode(_0xb87a70,_0x5eb829){_0x5eb829=_0x5eb829||0xcc;return function(_0x5014e5){if(_0x5014e5){return _0xb87a70[_0x6d56('0x21')](_0x5eb829);}return _0xb87a70[_0x6d56('0x22')](_0x5eb829)[_0x6d56('0x23')]();};}function respondWithResult(_0x3244f5,_0x335de1){_0x335de1=_0x335de1||0xc8;return function(_0x5ee99d){if(_0x5ee99d){return _0x3244f5[_0x6d56('0x22')](_0x335de1)[_0x6d56('0x24')](_0x5ee99d);}};}function respondWithFilteredResult(_0xd68012,_0x1992bd){return function(_0x430bdc){if(_0x430bdc){var _0x54cdbd=typeof _0x1992bd['offset']===_0x6d56('0x25')&&typeof _0x1992bd[_0x6d56('0x26')]===_0x6d56('0x25');var _0x13acc3=_0x430bdc[_0x6d56('0x27')];var _0x48e928=_0x54cdbd?0x0:_0x1992bd['offset'];var _0x4f31e5=_0x54cdbd?_0x430bdc[_0x6d56('0x27')]:_0x1992bd[_0x6d56('0x28')]+_0x1992bd['limit'];var _0x2a3519;if(_0x4f31e5>=_0x13acc3){_0x4f31e5=_0x13acc3;_0x2a3519=0xc8;}else{_0x2a3519=0xce;}_0xd68012[_0x6d56('0x22')](_0x2a3519);return _0xd68012[_0x6d56('0x29')]('Content-Range',_0x48e928+'-'+_0x4f31e5+'/'+_0x13acc3)[_0x6d56('0x24')](_0x430bdc);}return null;};}function patchUpdates(_0xe27a82){return function(_0x16a43a){try{jsonpatch[_0x6d56('0x2a')](_0x16a43a,_0xe27a82,!![]);}catch(_0x53766d){return BPromise[_0x6d56('0x2b')](_0x53766d);}return _0x16a43a[_0x6d56('0x2c')]();};}function saveUpdates(_0x3dbd62,_0x8afce1){return function(_0x4f29d0){if(_0x4f29d0){return _0x4f29d0['update'](_0x3dbd62)[_0x6d56('0x2d')](function(_0x25858a){return _0x25858a;});}return null;};}function removeEntity(_0x5d0bb8,_0x32bcf4){return function(_0x54138a){if(_0x54138a){return _0x54138a['destroy']()[_0x6d56('0x2d')](function(){var _0xe15125=_0x54138a[_0x6d56('0x2e')]({'plain':!![]});var _0x1c9322='OpenchannelQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x1c9322,'resourceId':_0xe15125['id']}})[_0x6d56('0x2d')](function(){return _0x54138a;});})[_0x6d56('0x2d')](function(){_0x5d0bb8[_0x6d56('0x22')](0xcc)[_0x6d56('0x23')]();});}};}function handleEntityNotFound(_0x2bfe41,_0x1716ce){return function(_0x1b1532){if(!_0x1b1532){_0x2bfe41[_0x6d56('0x21')](0x194);}return _0x1b1532;};}function handleError(_0x2cff4d,_0x46864d){_0x46864d=_0x46864d||0x1f4;return function(_0x231965){logger[_0x6d56('0x2f')](_0x231965[_0x6d56('0x30')]);if(_0x231965[_0x6d56('0x31')]){delete _0x231965[_0x6d56('0x31')];}_0x2cff4d[_0x6d56('0x22')](_0x46864d)[_0x6d56('0x32')](_0x231965);};}exports[_0x6d56('0x33')]=function(_0x54bc95,_0x38b9f9){var _0x227a85={},_0x4e072a={},_0x19e8f1={'count':0x0,'rows':[]};var _0x1c794b=_['map'](db['OpenchannelQueue'][_0x6d56('0x34')],function(_0x2389f1){return{'name':_0x2389f1['fieldName'],'type':_0x2389f1[_0x6d56('0x35')][_0x6d56('0x36')]};});_0x4e072a[_0x6d56('0x37')]=_[_0x6d56('0x38')](_0x1c794b,_0x6d56('0x31'));_0x4e072a[_0x6d56('0x39')]=_['keys'](_0x54bc95[_0x6d56('0x39')]);_0x4e072a[_0x6d56('0x3a')]=_[_0x6d56('0x3b')](_0x4e072a[_0x6d56('0x37')],_0x4e072a[_0x6d56('0x39')]);_0x227a85[_0x6d56('0x3c')]=_['intersection'](_0x4e072a[_0x6d56('0x37')],qs[_0x6d56('0x3d')](_0x54bc95['query']['fields']));_0x227a85['attributes']=_0x227a85[_0x6d56('0x3c')][_0x6d56('0x3e')]?_0x227a85[_0x6d56('0x3c')]:_0x4e072a[_0x6d56('0x37')];if(!_0x54bc95[_0x6d56('0x39')][_0x6d56('0x3f')](_0x6d56('0x40'))){_0x227a85['limit']=qs[_0x6d56('0x26')](_0x54bc95['query'][_0x6d56('0x26')]);_0x227a85[_0x6d56('0x28')]=qs[_0x6d56('0x28')](_0x54bc95[_0x6d56('0x39')][_0x6d56('0x28')]);}_0x227a85[_0x6d56('0x41')]=qs[_0x6d56('0x42')](_0x54bc95[_0x6d56('0x39')][_0x6d56('0x42')]);_0x227a85[_0x6d56('0x43')]=qs['filters'](_[_0x6d56('0x44')](_0x54bc95['query'],_0x4e072a[_0x6d56('0x3a')]),_0x1c794b);if(_0x54bc95[_0x6d56('0x39')][_0x6d56('0x45')]){_0x227a85[_0x6d56('0x43')]=_['merge'](_0x227a85[_0x6d56('0x43')],{'$or':_['map'](_0x1c794b,function(_0x2ae792){if(_0x2ae792['type']!==_0x6d56('0x46')){var _0x31d0a7={};_0x31d0a7[_0x2ae792['name']]={'$like':'%'+_0x54bc95[_0x6d56('0x39')][_0x6d56('0x45')]+'%'};return _0x31d0a7;}})});}_0x227a85=_[_0x6d56('0x47')]({},_0x227a85,_0x54bc95[_0x6d56('0x48')]);var _0x3e3ab1={'where':_0x227a85['where']};return db[_0x6d56('0x49')][_0x6d56('0x27')](_0x3e3ab1)[_0x6d56('0x2d')](function(_0x2b33f1){_0x19e8f1[_0x6d56('0x27')]=_0x2b33f1;if(_0x54bc95[_0x6d56('0x39')][_0x6d56('0x4a')]){_0x227a85['include']=[{'all':!![]}];}return db[_0x6d56('0x49')]['findAll'](_0x227a85);})[_0x6d56('0x2d')](function(_0xfbd2bd){_0x19e8f1[_0x6d56('0x4b')]=_0xfbd2bd;return _0x19e8f1;})[_0x6d56('0x2d')](respondWithFilteredResult(_0x38b9f9,_0x227a85))['catch'](handleError(_0x38b9f9,null));};exports[_0x6d56('0x4c')]=function(_0x1722ef,_0x320e98){var _0x1c0779={'raw':!![],'where':{'id':_0x1722ef['params']['id']}},_0x356e2a={};_0x356e2a[_0x6d56('0x37')]=_[_0x6d56('0x4d')](db[_0x6d56('0x49')][_0x6d56('0x34')]);_0x356e2a[_0x6d56('0x39')]=_['keys'](_0x1722ef[_0x6d56('0x39')]);_0x356e2a['filters']=_[_0x6d56('0x3b')](_0x356e2a[_0x6d56('0x37')],_0x356e2a[_0x6d56('0x39')]);_0x1c0779['attributes']=_[_0x6d56('0x3b')](_0x356e2a[_0x6d56('0x37')],qs['fields'](_0x1722ef[_0x6d56('0x39')]['fields']));_0x1c0779[_0x6d56('0x3c')]=_0x1c0779['attributes'][_0x6d56('0x3e')]?_0x1c0779[_0x6d56('0x3c')]:_0x356e2a[_0x6d56('0x37')];if(_0x1722ef[_0x6d56('0x39')][_0x6d56('0x4a')]){_0x1c0779[_0x6d56('0x4e')]=[{'all':!![]}];}_0x1c0779=_[_0x6d56('0x47')]({},_0x1c0779,_0x1722ef[_0x6d56('0x48')]);return db[_0x6d56('0x49')]['find'](_0x1c0779)[_0x6d56('0x2d')](handleEntityNotFound(_0x320e98,null))['then'](respondWithResult(_0x320e98,null))['catch'](handleError(_0x320e98,null));};exports[_0x6d56('0x4f')]=function(_0x4b44d1,_0x3a0737){return db['OpenchannelQueue']['create'](_0x4b44d1[_0x6d56('0x50')],{})['then'](function(_0x16a566){var _0xfb0682=_0x4b44d1[_0x6d56('0x51')][_0x6d56('0x2e')]({'plain':!![]});if(!_0xfb0682)throw new Error(_0x6d56('0x52'));if(_0xfb0682[_0x6d56('0x53')]===_0x6d56('0x51')){var _0x42c2db=_0x16a566[_0x6d56('0x2e')]({'plain':!![]});var _0xdcce28=_0x6d56('0x54');return db[_0x6d56('0x55')][_0x6d56('0x56')]({'where':{'name':_0xdcce28,'userProfileId':_0xfb0682[_0x6d56('0x57')]},'raw':!![]})[_0x6d56('0x2d')](function(_0x478cd0){if(_0x478cd0&&_0x478cd0[_0x6d56('0x58')]===0x0){return db[_0x6d56('0x59')]['create']({'name':_0x42c2db['name'],'resourceId':_0x42c2db['id'],'type':_0x478cd0[_0x6d56('0x31')],'sectionId':_0x478cd0['id']},{})[_0x6d56('0x2d')](function(){return _0x16a566;});}else{return _0x16a566;}})[_0x6d56('0x5a')](function(_0x794ff0){logger['error'](_0x6d56('0x5b'),_0x794ff0);throw _0x794ff0;});}return _0x16a566;})[_0x6d56('0x2d')](respondWithResult(_0x3a0737,0xc9))[_0x6d56('0x5a')](handleError(_0x3a0737,null));};exports[_0x6d56('0x5c')]=function(_0x1585e0,_0x2d6f8c){if(_0x1585e0[_0x6d56('0x50')]['id']){delete _0x1585e0[_0x6d56('0x50')]['id'];}return db[_0x6d56('0x49')][_0x6d56('0x56')]({'where':{'id':_0x1585e0[_0x6d56('0x5d')]['id']}})[_0x6d56('0x2d')](handleEntityNotFound(_0x2d6f8c,null))[_0x6d56('0x2d')](saveUpdates(_0x1585e0['body'],null))[_0x6d56('0x2d')](respondWithResult(_0x2d6f8c,null))[_0x6d56('0x5a')](handleError(_0x2d6f8c,null));};exports[_0x6d56('0x5e')]=function(_0x1edc64,_0x189974){return db[_0x6d56('0x49')][_0x6d56('0x56')]({'where':{'id':_0x1edc64[_0x6d56('0x5d')]['id']}})[_0x6d56('0x2d')](handleEntityNotFound(_0x189974,null))['then'](removeEntity(_0x189974,null))[_0x6d56('0x5a')](handleError(_0x189974,null));};exports['describe']=function(_0x200ff6,_0x295848){return db[_0x6d56('0x49')][_0x6d56('0x5f')]()['then'](respondWithResult(_0x295848,null))[_0x6d56('0x5a')](handleError(_0x295848,null));};exports[_0x6d56('0x60')]=function(_0x441841,_0x449dc9,_0x85e514){var _0x566cc7={'raw':!![],'where':{}},_0x1eaec6={},_0x86b34a;return db[_0x6d56('0x49')]['findOne']({'where':{'id':_0x441841[_0x6d56('0x5d')]['id']}})[_0x6d56('0x2d')](handleEntityNotFound(_0x449dc9,null))[_0x6d56('0x2d')](function(_0xb2ed3b){if(_0xb2ed3b){_0x86b34a=_0xb2ed3b[_0x6d56('0x2e')]({'plain':!![]});_0x1eaec6[_0x6d56('0x37')]=_[_0x6d56('0x4d')](db[_0x6d56('0x61')][_0x6d56('0x34')]);_0x1eaec6[_0x6d56('0x39')]=_['keys'](_0x441841[_0x6d56('0x39')]);_0x1eaec6[_0x6d56('0x3a')]=_[_0x6d56('0x3b')](_0x1eaec6['model'],_0x1eaec6[_0x6d56('0x39')]);_0x566cc7[_0x6d56('0x3c')]=_[_0x6d56('0x3b')](_0x1eaec6['model'],qs['fields'](_0x441841[_0x6d56('0x39')]['fields']));_0x566cc7[_0x6d56('0x3c')]=_0x566cc7[_0x6d56('0x3c')][_0x6d56('0x3e')]?_0x566cc7[_0x6d56('0x3c')]:_0x1eaec6['model'];if(!_0x441841[_0x6d56('0x39')]['hasOwnProperty'](_0x6d56('0x40'))){_0x566cc7['limit']=qs[_0x6d56('0x26')](_0x441841[_0x6d56('0x39')][_0x6d56('0x26')]);_0x566cc7[_0x6d56('0x28')]=qs['offset'](_0x441841[_0x6d56('0x39')]['offset']);}_0x566cc7[_0x6d56('0x41')]=qs[_0x6d56('0x42')](_0x441841[_0x6d56('0x39')][_0x6d56('0x42')]);_0x566cc7[_0x6d56('0x43')]=qs[_0x6d56('0x3a')](_['pick'](_0x441841['query'],_0x1eaec6[_0x6d56('0x3a')]));_0x566cc7['where']['OpenchannelQueueId']=_0xb2ed3b['id'];if(_0x441841['query'][_0x6d56('0x45')]){_0x566cc7[_0x6d56('0x43')]=_[_0x6d56('0x47')](_0x566cc7[_0x6d56('0x43')],{'$or':_[_0x6d56('0x38')](_0x566cc7[_0x6d56('0x3c')],function(_0xbbe0ad){var _0x3c34ea={};_0x3c34ea[_0xbbe0ad]={'$like':'%'+_0x441841[_0x6d56('0x39')][_0x6d56('0x45')]+'%'};return _0x3c34ea;})});}_0x566cc7=_[_0x6d56('0x47')]({},_0x566cc7,_0x441841[_0x6d56('0x48')]);return db['UserOpenchannelQueue']['findAll'](_0x566cc7);}})['then'](function(_0x5a2036){if(_0x5a2036){return db['User'][_0x6d56('0x62')]({'where':{'id':_['map'](_0x5a2036,_0x6d56('0x63')),'role':_0x6d56('0x64')},'attributes':['id','name',_0x6d56('0x65'),_0x6d56('0x66'),_0x6d56('0x67')]});}})[_0x6d56('0x2d')](function(_0x801d7){if(_0x801d7){return{'count':_0x801d7['count'],'rows':_[_0x6d56('0x38')](_0x801d7['rows'],function(_0x3e90fb){return{'membername':_0x3e90fb[_0x6d56('0x31')],'UserId':_0x3e90fb['id'],'queue_name':_0x86b34a['name'],'OpenchannelQueueId':_0x86b34a['id'],'interface':util[_0x6d56('0x68')](_0x6d56('0x69'),'SIP',_0x3e90fb[_0x6d56('0x31')]),'penalty':0x0,'paused':_0x3e90fb[_0x6d56('0x65')],'createdAt':_0x3e90fb[_0x6d56('0x67')],'updatedAt':_0x3e90fb[_0x6d56('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x449dc9,_0x566cc7))['catch'](handleError(_0x449dc9,null));};exports[_0x6d56('0x6a')]=function(_0x290874,_0x47fd45,_0x2af8ec){var _0x434d9b={};var _0x5ec52b={};var _0x5195ad;var _0x504efd;return db[_0x6d56('0x49')][_0x6d56('0x6b')]({'where':{'id':_0x290874['params']['id']}})[_0x6d56('0x2d')](handleEntityNotFound(_0x47fd45,null))[_0x6d56('0x2d')](function(_0x2f4966){if(_0x2f4966){_0x5195ad=_0x2f4966;_0x5ec52b['model']=_['keys'](db[_0x6d56('0x6c')][_0x6d56('0x34')]);_0x5ec52b[_0x6d56('0x39')]=_[_0x6d56('0x4d')](_0x290874['query']);_0x5ec52b[_0x6d56('0x3a')]=_[_0x6d56('0x3b')](_0x5ec52b['model'],_0x5ec52b['query']);_0x434d9b[_0x6d56('0x3c')]=_[_0x6d56('0x3b')](_0x5ec52b['model'],qs[_0x6d56('0x3d')](_0x290874[_0x6d56('0x39')][_0x6d56('0x3d')]));_0x434d9b['attributes']=_0x434d9b[_0x6d56('0x3c')][_0x6d56('0x3e')]?_0x434d9b[_0x6d56('0x3c')]:_0x5ec52b[_0x6d56('0x37')];_0x434d9b[_0x6d56('0x41')]=qs[_0x6d56('0x42')](_0x290874[_0x6d56('0x39')]['sort']);_0x434d9b[_0x6d56('0x43')]=qs[_0x6d56('0x3a')](_[_0x6d56('0x44')](_0x290874[_0x6d56('0x39')],_0x5ec52b[_0x6d56('0x3a')]));if(_0x290874[_0x6d56('0x39')][_0x6d56('0x45')]){_0x434d9b[_0x6d56('0x43')]=_['merge'](_0x434d9b['where'],{'$or':_[_0x6d56('0x38')](_0x434d9b[_0x6d56('0x3c')],function(_0xd33da){var _0x4df4f7={};_0x4df4f7[_0xd33da]={'$like':'%'+_0x290874[_0x6d56('0x39')]['filter']+'%'};return _0x4df4f7;})});}_0x434d9b=_[_0x6d56('0x47')]({},_0x434d9b,_0x290874['options']);return _0x5195ad[_0x6d56('0x6a')](_0x434d9b);}})[_0x6d56('0x2d')](function(_0x5a454a){if(_0x5a454a){_0x504efd=_0x5a454a[_0x6d56('0x3e')];if(!_0x290874[_0x6d56('0x39')][_0x6d56('0x3f')](_0x6d56('0x40'))){_0x434d9b[_0x6d56('0x26')]=qs[_0x6d56('0x26')](_0x290874['query'][_0x6d56('0x26')]);_0x434d9b[_0x6d56('0x28')]=qs[_0x6d56('0x28')](_0x290874[_0x6d56('0x39')][_0x6d56('0x28')]);}return _0x5195ad['getTeams'](_0x434d9b);}})[_0x6d56('0x2d')](function(_0x4a786c){if(_0x4a786c){return _0x4a786c?{'count':_0x504efd,'rows':_0x4a786c}:null;}})[_0x6d56('0x2d')](respondWithResult(_0x47fd45,null))[_0x6d56('0x5a')](handleError(_0x47fd45,null));};exports[_0x6d56('0x6d')]=function(_0x1e6356,_0x16662c,_0x15cd5e){var _0x48b2b8=_0x1e6356[_0x6d56('0x50')]['ids'];return db[_0x6d56('0x6c')][_0x6d56('0x6e')]({'where':{'id':_0x48b2b8},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x6d56('0x31'),_0x6d56('0x6f'),_0x6d56('0x70'),_0x6d56('0x71')],'raw':!![]}]})['then'](function(_0x39bacb){if(_0x39bacb){var _0x15cc44=_['flatMap'](_0x39bacb,function(_0x135282){var _0x12e949=_0x135282[_0x6d56('0x2e')]({'plain':!![]});return _0x12e949[_0x6d56('0x72')];});return db[_0x6d56('0x49')][_0x6d56('0x56')]({'where':{'id':_0x1e6356[_0x6d56('0x5d')]['id']}})[_0x6d56('0x2d')](function(_0x3a1330){return db['sequelize'][_0x6d56('0x73')](function(_0x233889){return _0x3a1330[_0x6d56('0x6d')](_0x48b2b8,{'transaction':_0x233889})['then'](function(){return BPromise[_0x6d56('0x74')](_0x15cc44,function(_0x13c4c1){return db[_0x6d56('0x61')][_0x6d56('0x75')]({'where':{'UserId':_0x13c4c1['id'],'OpenchannelQueueId':_0x1e6356[_0x6d56('0x5d')]['id']},'transaction':_0x233889});});})['then'](function(){_0x15cc44['forEach'](function(_0x5bf4f0){socket[_0x6d56('0x76')](_0x6d56('0x77'),{'UserId':_0x5bf4f0['id'],'OpenchannelQueueId':_0x3a1330['id']});});});});});}})['then'](respondWithStatusCode(_0x16662c,null))[_0x6d56('0x5a')](handleError(_0x16662c,null));};exports[_0x6d56('0x78')]=function(_0x43f0e8,_0x4dd76d,_0x3d80cb){return db['Team'][_0x6d56('0x6e')]({'where':{'id':_0x43f0e8[_0x6d56('0x39')][_0x6d56('0x79')]},'attributes':['id'],'include':[{'model':db[_0x6d56('0x7a')],'as':_0x6d56('0x72'),'attributes':['id'],'raw':!![]}]})[_0x6d56('0x2d')](handleEntityNotFound(_0x4dd76d,null))['then'](function(_0x4ea221){var _0x334fcb=_[_0x6d56('0x38')](_0x4ea221,'id');var _0x57f2f5=[];var _0x5a0f7d=[];var _0x21558d=squel[_0x6d56('0x7b')]();_0x21558d[_0x6d56('0x7c')](_0x6d56('0x7d'))[_0x6d56('0x7e')](_0x6d56('0x7f'),'tq')[_0x6d56('0x80')]('user_has_teams','ut',_0x6d56('0x81'))[_0x6d56('0x43')](_0x6d56('0x82'),_0x43f0e8[_0x6d56('0x5d')]['id']);for(var _0x47f893=0x0;_0x47f893<_0x4ea221[_0x6d56('0x3e')];_0x47f893+=0x1){let _0x34ba72=_0x4ea221[_0x47f893];for(var _0x4fc6c4=0x0;_0x4fc6c4<_0x34ba72['Agents']['length'];_0x4fc6c4+=0x1){let _0x3f3d75=_0x34ba72[_0x6d56('0x72')][_0x4fc6c4];var _0x12273b=_0x21558d[_0x6d56('0x83')]();_0x12273b[_0x6d56('0x43')]('ut.UserId\x20=\x20?',_0x3f3d75['id']);_0x5a0f7d[_0x6d56('0x84')](db[_0x6d56('0x85')][_0x6d56('0x39')](_0x12273b[_0x6d56('0x86')](),{'type':db[_0x6d56('0x85')][_0x6d56('0x87')][_0x6d56('0x88')]})[_0x6d56('0x2d')](function(_0x2596bf){if(_0x2596bf[_0x6d56('0x3e')]===0x1){return _0x3f3d75['id'];}else{var _0x45cb5e=_[_0x6d56('0x89')](_[_0x6d56('0x38')](_0x2596bf,_0x6d56('0x8a')),function(_0x3e89d1){return _[_0x6d56('0x8b')](_0x334fcb,_0x3e89d1);});if(_0x45cb5e){return _0x3f3d75['id'];}}}));}}return BPromise[_0x6d56('0x8c')](_0x5a0f7d)[_0x6d56('0x2d')](function(_0x5b8c3f){_0x57f2f5=_(_0x57f2f5)[_0x6d56('0x8d')](_0x5b8c3f)[_0x6d56('0x8e')]()[_0x6d56('0x8f')]();return db[_0x6d56('0x49')]['find']({'where':{'id':_0x43f0e8[_0x6d56('0x5d')]['id']}})[_0x6d56('0x2d')](function(_0x2133bd){return db[_0x6d56('0x85')][_0x6d56('0x73')](function(_0x231169){return _0x2133bd['removeTeams'](_0x43f0e8[_0x6d56('0x39')][_0x6d56('0x79')],{'transaction':_0x231169})[_0x6d56('0x2d')](function(){if(!_[_0x6d56('0x90')](_0x57f2f5)){return _0x2133bd[_0x6d56('0x91')](_0x57f2f5,{'transaction':_0x231169});}})[_0x6d56('0x2d')](function(){_0x57f2f5[_0x6d56('0x92')](function(_0x355d5d){socket[_0x6d56('0x76')](_0x6d56('0x93'),{'UserId':_0x355d5d,'OpenchannelQueueId':_0x2133bd['id']});});});});});});})['then'](respondWithStatusCode(_0x4dd76d,null))['catch'](handleError(_0x4dd76d,null));};exports[_0x6d56('0x94')]=function(_0x2b705a,_0x42f560,_0x1a15e4){return db[_0x6d56('0x49')][_0x6d56('0x56')]({'where':{'id':_0x2b705a[_0x6d56('0x5d')]['id']}})[_0x6d56('0x2d')](handleEntityNotFound(_0x42f560,null))['then'](function(_0x3021b3){if(_0x3021b3){return _0x3021b3[_0x6d56('0x94')](_0x2b705a[_0x6d56('0x50')][_0x6d56('0x79')],_['omit'](_0x2b705a['body'],[_0x6d56('0x79'),'id'])||{})[_0x6d56('0x95')](function(_0x15c60c){for(var _0x3a1e36=0x0;_0x3a1e36<_0x2b705a['body'][_0x6d56('0x79')][_0x6d56('0x3e')];_0x3a1e36+=0x1){socket[_0x6d56('0x76')]('userOpenchannelQueue:save',{'UserId':Number(_0x2b705a['body'][_0x6d56('0x79')][_0x3a1e36]),'OpenchannelQueueId':Number(_0x2b705a[_0x6d56('0x5d')]['id'])});}return _0x15c60c;});}})[_0x6d56('0x2d')](respondWithResult(_0x42f560,null))[_0x6d56('0x5a')](handleError(_0x42f560,null));};exports[_0x6d56('0x91')]=function(_0x2513d8,_0x3ce5fe,_0x7be0f5){return db[_0x6d56('0x49')][_0x6d56('0x56')]({'where':{'id':_0x2513d8['params']['id']}})[_0x6d56('0x2d')](handleEntityNotFound(_0x3ce5fe,null))[_0x6d56('0x2d')](function(_0x1763e5){if(_0x1763e5){return _0x1763e5['removeAgents'](_0x2513d8[_0x6d56('0x39')][_0x6d56('0x79')])[_0x6d56('0x2d')](function(){if(_[_0x6d56('0x96')](_0x2513d8['query'][_0x6d56('0x79')])){for(var _0x891be4=0x0;_0x891be4<_0x2513d8['query'][_0x6d56('0x79')]['length'];_0x891be4+=0x1){socket[_0x6d56('0x76')](_0x6d56('0x93'),{'UserId':Number(_0x2513d8[_0x6d56('0x39')][_0x6d56('0x79')][_0x891be4]),'OpenchannelQueueId':Number(_0x2513d8[_0x6d56('0x5d')]['id'])});}}else{socket[_0x6d56('0x76')](_0x6d56('0x93'),{'UserId':Number(_0x2513d8[_0x6d56('0x39')]['ids']),'OpenchannelQueueId':Number(_0x2513d8[_0x6d56('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0x3ce5fe,null))[_0x6d56('0x5a')](handleError(_0x3ce5fe,null));};exports['getAgents']=function(_0x517334,_0x540266,_0x4831df){var _0x58c755={};var _0x3a3384={};var _0x4c128e;var _0x35fe36;return db['OpenchannelQueue'][_0x6d56('0x6b')]({'where':{'id':_0x517334[_0x6d56('0x5d')]['id']}})['then'](handleEntityNotFound(_0x540266,null))[_0x6d56('0x2d')](function(_0x38ea20){if(_0x38ea20){_0x4c128e=_0x38ea20;_0x3a3384[_0x6d56('0x37')]=_[_0x6d56('0x4d')](db[_0x6d56('0x7a')]['rawAttributes']);_0x3a3384['query']=_['keys'](_0x517334['query']);_0x3a3384[_0x6d56('0x3a')]=_[_0x6d56('0x3b')](_0x3a3384[_0x6d56('0x37')],_0x3a3384['query']);_0x58c755['attributes']=_[_0x6d56('0x3b')](_0x3a3384[_0x6d56('0x37')],qs[_0x6d56('0x3d')](_0x517334['query'][_0x6d56('0x3d')]));_0x58c755['attributes']=_0x58c755[_0x6d56('0x3c')][_0x6d56('0x3e')]?_0x58c755[_0x6d56('0x3c')]:_0x3a3384[_0x6d56('0x37')];_0x58c755['order']=qs[_0x6d56('0x42')](_0x517334[_0x6d56('0x39')][_0x6d56('0x42')]);_0x58c755[_0x6d56('0x43')]=qs['filters'](_[_0x6d56('0x44')](_0x517334[_0x6d56('0x39')],_0x3a3384['filters']));if(_0x517334[_0x6d56('0x39')][_0x6d56('0x45')]){_0x58c755[_0x6d56('0x43')]=_['merge'](_0x58c755[_0x6d56('0x43')],{'$or':_[_0x6d56('0x38')](_0x58c755[_0x6d56('0x3c')],function(_0x5c198f){var _0x1f82ae={};_0x1f82ae[_0x5c198f]={'$like':'%'+_0x517334[_0x6d56('0x39')][_0x6d56('0x45')]+'%'};return _0x1f82ae;})});}_0x58c755=_[_0x6d56('0x47')]({},_0x58c755,_0x517334[_0x6d56('0x48')]);return _0x4c128e[_0x6d56('0x97')](_0x58c755);}})[_0x6d56('0x2d')](function(_0x23e26b){if(_0x23e26b){_0x35fe36=_0x23e26b[_0x6d56('0x3e')];if(!_0x517334[_0x6d56('0x39')][_0x6d56('0x3f')](_0x6d56('0x40'))){_0x58c755[_0x6d56('0x26')]=qs[_0x6d56('0x26')](_0x517334[_0x6d56('0x39')]['limit']);_0x58c755[_0x6d56('0x28')]=qs[_0x6d56('0x28')](_0x517334[_0x6d56('0x39')][_0x6d56('0x28')]);}return _0x4c128e['getAgents'](_0x58c755);}})['then'](function(_0x4701b5){if(_0x4701b5){return _0x4701b5?{'count':_0x35fe36,'rows':_0x4701b5}:null;}})[_0x6d56('0x2d')](respondWithResult(_0x540266,null))[_0x6d56('0x5a')](handleError(_0x540266,null));};
\ No newline at end of file
+var _0x3a86=['get','UserOpenchannelQueue','OpenchannelQueueId','findAll','findAndCountAll','UserId','agent','updatedAt','createdAt','count','format','%s/%s','SIP','openchannelPause','Team','getTeams','addTeams','ids','online','voicePause','interface','flatMap','Agents','transaction','each','findOrCreate','userOpenchannelQueue:save','removeTeams','User','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','push','sequelize','toString','every','TeamId','includes','all','compact','isEmpty','removeAgents','addAgents','omit','spread','emit','isArray','userOpenchannelQueue:remove','getAgents','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OpenchannelQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers'];(function(_0x3e18e8,_0x3e1a25){var _0xd23fae=function(_0x9f7100){while(--_0x9f7100){_0x3e18e8['push'](_0x3e18e8['shift']());}};_0xd23fae(++_0x3e1a25);}(_0x3a86,0xcb));var _0x63a8=function(_0x455c6c,_0x1e78b7){_0x455c6c=_0x455c6c-0x0;var _0x488242=_0x3a86[_0x455c6c];return _0x488242;};'use strict';var emlformat=require(_0x63a8('0x0'));var rimraf=require(_0x63a8('0x1'));var zipdir=require(_0x63a8('0x2'));var jsonpatch=require(_0x63a8('0x3'));var rp=require(_0x63a8('0x4'));var moment=require(_0x63a8('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x63a8('0x6'));var util=require('util');var path=require('path');var sox=require(_0x63a8('0x7'));var csv=require('to-csv');var ejs=require(_0x63a8('0x8'));var fs=require('fs');var fs_extra=require(_0x63a8('0x9'));var _=require(_0x63a8('0xa'));var squel=require(_0x63a8('0xb'));var crypto=require(_0x63a8('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x63a8('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x63a8('0xe'));var Redis=require('ioredis');var authService=require(_0x63a8('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x63a8('0x10'));var hardwareService=require(_0x63a8('0x11'));var logger=require(_0x63a8('0x12'))(_0x63a8('0x13'));var utils=require(_0x63a8('0x14'));var config=require(_0x63a8('0x15'));var licenseUtil=require(_0x63a8('0x16'));var db=require(_0x63a8('0x17'))['db'];config[_0x63a8('0x18')]=_[_0x63a8('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x63a8('0x1a'))(new Redis(config[_0x63a8('0x18')]));require('./openchannelQueue.socket')[_0x63a8('0x1b')](socket);function respondWithStatusCode(_0x4c0326,_0x220e1c){_0x220e1c=_0x220e1c||0xcc;return function(_0x2dca2d){if(_0x2dca2d){return _0x4c0326[_0x63a8('0x1c')](_0x220e1c);}return _0x4c0326[_0x63a8('0x1d')](_0x220e1c)[_0x63a8('0x1e')]();};}function respondWithResult(_0x745f6b,_0x2dc5b0){_0x2dc5b0=_0x2dc5b0||0xc8;return function(_0x3e1ec2){if(_0x3e1ec2){return _0x745f6b[_0x63a8('0x1d')](_0x2dc5b0)[_0x63a8('0x1f')](_0x3e1ec2);}};}function respondWithFilteredResult(_0x25260b,_0x5d423c){return function(_0xdbf2a1){if(_0xdbf2a1){var _0x4d8c87=typeof _0x5d423c[_0x63a8('0x20')]==='undefined'&&typeof _0x5d423c['limit']==='undefined';var _0x31cfb7=_0xdbf2a1['count'];var _0x3d9f3b=_0x4d8c87?0x0:_0x5d423c[_0x63a8('0x20')];var _0x4997dc=_0x4d8c87?_0xdbf2a1['count']:_0x5d423c[_0x63a8('0x20')]+_0x5d423c['limit'];var _0x812589;if(_0x4997dc>=_0x31cfb7){_0x4997dc=_0x31cfb7;_0x812589=0xc8;}else{_0x812589=0xce;}_0x25260b[_0x63a8('0x1d')](_0x812589);return _0x25260b[_0x63a8('0x21')](_0x63a8('0x22'),_0x3d9f3b+'-'+_0x4997dc+'/'+_0x31cfb7)[_0x63a8('0x1f')](_0xdbf2a1);}return null;};}function patchUpdates(_0x909e0d){return function(_0x38edcd){try{jsonpatch[_0x63a8('0x23')](_0x38edcd,_0x909e0d,!![]);}catch(_0x56bc8f){return BPromise[_0x63a8('0x24')](_0x56bc8f);}return _0x38edcd[_0x63a8('0x25')]();};}function saveUpdates(_0x2ef6ee,_0x4c8c76){return function(_0xbb560){if(_0xbb560){return _0xbb560[_0x63a8('0x26')](_0x2ef6ee)[_0x63a8('0x27')](function(_0x23f2c3){return _0x23f2c3;});}return null;};}function removeEntity(_0x417af8,_0x2869d7){return function(_0x1279ec){if(_0x1279ec){return _0x1279ec[_0x63a8('0x28')]()[_0x63a8('0x27')](function(){var _0x4f53b4=_0x1279ec['get']({'plain':!![]});var _0x7c8ee0='OpenchannelQueues';return db['UserProfileResource'][_0x63a8('0x28')]({'where':{'type':_0x7c8ee0,'resourceId':_0x4f53b4['id']}})[_0x63a8('0x27')](function(){return _0x1279ec;});})['then'](function(){_0x417af8[_0x63a8('0x1d')](0xcc)[_0x63a8('0x1e')]();});}};}function handleEntityNotFound(_0x4e7b55,_0x41597b){return function(_0x553097){if(!_0x553097){_0x4e7b55[_0x63a8('0x1c')](0x194);}return _0x553097;};}function handleError(_0x51364a,_0x3848d3){_0x3848d3=_0x3848d3||0x1f4;return function(_0xf46836){logger[_0x63a8('0x29')](_0xf46836[_0x63a8('0x2a')]);if(_0xf46836[_0x63a8('0x2b')]){delete _0xf46836[_0x63a8('0x2b')];}_0x51364a[_0x63a8('0x1d')](_0x3848d3)[_0x63a8('0x2c')](_0xf46836);};}exports[_0x63a8('0x2d')]=function(_0x229642,_0x1892c2){var _0x46e920={},_0x26f5ba={},_0x51b3d7={'count':0x0,'rows':[]};var _0x2e9d9d=_[_0x63a8('0x2e')](db[_0x63a8('0x2f')][_0x63a8('0x30')],function(_0x48c8ba){return{'name':_0x48c8ba['fieldName'],'type':_0x48c8ba[_0x63a8('0x31')][_0x63a8('0x32')]};});_0x26f5ba[_0x63a8('0x33')]=_[_0x63a8('0x2e')](_0x2e9d9d,_0x63a8('0x2b'));_0x26f5ba[_0x63a8('0x34')]=_['keys'](_0x229642[_0x63a8('0x34')]);_0x26f5ba['filters']=_[_0x63a8('0x35')](_0x26f5ba[_0x63a8('0x33')],_0x26f5ba[_0x63a8('0x34')]);_0x46e920[_0x63a8('0x36')]=_[_0x63a8('0x35')](_0x26f5ba['model'],qs[_0x63a8('0x37')](_0x229642[_0x63a8('0x34')]['fields']));_0x46e920[_0x63a8('0x36')]=_0x46e920[_0x63a8('0x36')][_0x63a8('0x38')]?_0x46e920[_0x63a8('0x36')]:_0x26f5ba[_0x63a8('0x33')];if(!_0x229642[_0x63a8('0x34')][_0x63a8('0x39')](_0x63a8('0x3a'))){_0x46e920[_0x63a8('0x3b')]=qs[_0x63a8('0x3b')](_0x229642[_0x63a8('0x34')]['limit']);_0x46e920[_0x63a8('0x20')]=qs[_0x63a8('0x20')](_0x229642[_0x63a8('0x34')][_0x63a8('0x20')]);}_0x46e920[_0x63a8('0x3c')]=qs[_0x63a8('0x3d')](_0x229642[_0x63a8('0x34')]['sort']);_0x46e920[_0x63a8('0x3e')]=qs[_0x63a8('0x3f')](_[_0x63a8('0x40')](_0x229642[_0x63a8('0x34')],_0x26f5ba[_0x63a8('0x3f')]),_0x2e9d9d);if(_0x229642['query'][_0x63a8('0x41')]){_0x46e920['where']=_[_0x63a8('0x42')](_0x46e920['where'],{'$or':_[_0x63a8('0x2e')](_0x2e9d9d,function(_0x11adea){if(_0x11adea['type']!==_0x63a8('0x43')){var _0x4717a7={};_0x4717a7[_0x11adea[_0x63a8('0x2b')]]={'$like':'%'+_0x229642[_0x63a8('0x34')]['filter']+'%'};return _0x4717a7;}})});}_0x46e920=_[_0x63a8('0x42')]({},_0x46e920,_0x229642[_0x63a8('0x44')]);var _0x3b18c6={'where':_0x46e920[_0x63a8('0x3e')]};return db['OpenchannelQueue']['count'](_0x3b18c6)[_0x63a8('0x27')](function(_0x571070){_0x51b3d7['count']=_0x571070;if(_0x229642[_0x63a8('0x34')][_0x63a8('0x45')]){_0x46e920[_0x63a8('0x46')]=[{'all':!![]}];}return db[_0x63a8('0x2f')]['findAll'](_0x46e920);})[_0x63a8('0x27')](function(_0x185185){_0x51b3d7[_0x63a8('0x47')]=_0x185185;return _0x51b3d7;})['then'](respondWithFilteredResult(_0x1892c2,_0x46e920))[_0x63a8('0x48')](handleError(_0x1892c2,null));};exports[_0x63a8('0x49')]=function(_0x498aae,_0x222f82){var _0x55de23={'raw':!![],'where':{'id':_0x498aae[_0x63a8('0x4a')]['id']}},_0x563f3a={};_0x563f3a['model']=_[_0x63a8('0x4b')](db['OpenchannelQueue']['rawAttributes']);_0x563f3a['query']=_[_0x63a8('0x4b')](_0x498aae[_0x63a8('0x34')]);_0x563f3a[_0x63a8('0x3f')]=_[_0x63a8('0x35')](_0x563f3a[_0x63a8('0x33')],_0x563f3a[_0x63a8('0x34')]);_0x55de23['attributes']=_[_0x63a8('0x35')](_0x563f3a['model'],qs['fields'](_0x498aae['query'][_0x63a8('0x37')]));_0x55de23[_0x63a8('0x36')]=_0x55de23[_0x63a8('0x36')]['length']?_0x55de23[_0x63a8('0x36')]:_0x563f3a['model'];if(_0x498aae[_0x63a8('0x34')]['includeAll']){_0x55de23['include']=[{'all':!![]}];}_0x55de23=_[_0x63a8('0x42')]({},_0x55de23,_0x498aae[_0x63a8('0x44')]);return db[_0x63a8('0x2f')][_0x63a8('0x4c')](_0x55de23)[_0x63a8('0x27')](handleEntityNotFound(_0x222f82,null))[_0x63a8('0x27')](respondWithResult(_0x222f82,null))[_0x63a8('0x48')](handleError(_0x222f82,null));};exports[_0x63a8('0x4d')]=function(_0x29e680,_0x2090df){return db['OpenchannelQueue'][_0x63a8('0x4d')](_0x29e680[_0x63a8('0x4e')],{})[_0x63a8('0x27')](function(_0x4d8d13){var _0x107f64=_0x29e680[_0x63a8('0x4f')]['get']({'plain':!![]});if(!_0x107f64)throw new Error(_0x63a8('0x50'));if(_0x107f64[_0x63a8('0x51')]===_0x63a8('0x4f')){var _0x4f107f=_0x4d8d13['get']({'plain':!![]});var _0x1f9c67=_0x63a8('0x52');return db[_0x63a8('0x53')][_0x63a8('0x4c')]({'where':{'name':_0x1f9c67,'userProfileId':_0x107f64[_0x63a8('0x54')]},'raw':!![]})['then'](function(_0x316bce){if(_0x316bce&&_0x316bce[_0x63a8('0x55')]===0x0){return db['UserProfileResource'][_0x63a8('0x4d')]({'name':_0x4f107f['name'],'resourceId':_0x4f107f['id'],'type':_0x316bce[_0x63a8('0x2b')],'sectionId':_0x316bce['id']},{})[_0x63a8('0x27')](function(){return _0x4d8d13;});}else{return _0x4d8d13;}})[_0x63a8('0x48')](function(_0x23e8c2){logger[_0x63a8('0x29')](_0x63a8('0x56'),_0x23e8c2);throw _0x23e8c2;});}return _0x4d8d13;})[_0x63a8('0x27')](respondWithResult(_0x2090df,0xc9))[_0x63a8('0x48')](handleError(_0x2090df,null));};exports['update']=function(_0x445f22,_0x46487c){if(_0x445f22[_0x63a8('0x4e')]['id']){delete _0x445f22[_0x63a8('0x4e')]['id'];}return db[_0x63a8('0x2f')][_0x63a8('0x4c')]({'where':{'id':_0x445f22['params']['id']}})[_0x63a8('0x27')](handleEntityNotFound(_0x46487c,null))['then'](saveUpdates(_0x445f22['body'],null))['then'](respondWithResult(_0x46487c,null))['catch'](handleError(_0x46487c,null));};exports[_0x63a8('0x28')]=function(_0x563761,_0x2b7d19){return db['OpenchannelQueue']['find']({'where':{'id':_0x563761[_0x63a8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2b7d19,null))[_0x63a8('0x27')](removeEntity(_0x2b7d19,null))[_0x63a8('0x48')](handleError(_0x2b7d19,null));};exports['describe']=function(_0x2b6ce1,_0x22d97b){return db[_0x63a8('0x2f')][_0x63a8('0x57')]()[_0x63a8('0x27')](respondWithResult(_0x22d97b,null))[_0x63a8('0x48')](handleError(_0x22d97b,null));};exports[_0x63a8('0x58')]=function(_0x37a2eb,_0x208abc,_0x2de7d0){var _0x4141f0={'raw':!![],'where':{}},_0x2a5c5f={},_0x2c7bc1;return db[_0x63a8('0x2f')]['findOne']({'where':{'id':_0x37a2eb[_0x63a8('0x4a')]['id']}})[_0x63a8('0x27')](handleEntityNotFound(_0x208abc,null))[_0x63a8('0x27')](function(_0x56afc9){if(_0x56afc9){_0x2c7bc1=_0x56afc9[_0x63a8('0x59')]({'plain':!![]});_0x2a5c5f[_0x63a8('0x33')]=_[_0x63a8('0x4b')](db[_0x63a8('0x5a')][_0x63a8('0x30')]);_0x2a5c5f[_0x63a8('0x34')]=_[_0x63a8('0x4b')](_0x37a2eb['query']);_0x2a5c5f[_0x63a8('0x3f')]=_[_0x63a8('0x35')](_0x2a5c5f[_0x63a8('0x33')],_0x2a5c5f['query']);_0x4141f0['attributes']=_[_0x63a8('0x35')](_0x2a5c5f[_0x63a8('0x33')],qs['fields'](_0x37a2eb['query'][_0x63a8('0x37')]));_0x4141f0[_0x63a8('0x36')]=_0x4141f0[_0x63a8('0x36')][_0x63a8('0x38')]?_0x4141f0[_0x63a8('0x36')]:_0x2a5c5f[_0x63a8('0x33')];if(!_0x37a2eb[_0x63a8('0x34')]['hasOwnProperty']('nolimit')){_0x4141f0[_0x63a8('0x3b')]=qs[_0x63a8('0x3b')](_0x37a2eb[_0x63a8('0x34')]['limit']);_0x4141f0['offset']=qs[_0x63a8('0x20')](_0x37a2eb[_0x63a8('0x34')][_0x63a8('0x20')]);}_0x4141f0[_0x63a8('0x3c')]=qs[_0x63a8('0x3d')](_0x37a2eb[_0x63a8('0x34')][_0x63a8('0x3d')]);_0x4141f0[_0x63a8('0x3e')]=qs[_0x63a8('0x3f')](_[_0x63a8('0x40')](_0x37a2eb[_0x63a8('0x34')],_0x2a5c5f[_0x63a8('0x3f')]));_0x4141f0['where'][_0x63a8('0x5b')]=_0x56afc9['id'];if(_0x37a2eb[_0x63a8('0x34')][_0x63a8('0x41')]){_0x4141f0[_0x63a8('0x3e')]=_[_0x63a8('0x42')](_0x4141f0[_0x63a8('0x3e')],{'$or':_[_0x63a8('0x2e')](_0x4141f0[_0x63a8('0x36')],function(_0x52e95b){var _0x5bf554={};_0x5bf554[_0x52e95b]={'$like':'%'+_0x37a2eb[_0x63a8('0x34')][_0x63a8('0x41')]+'%'};return _0x5bf554;})});}_0x4141f0=_['merge']({},_0x4141f0,_0x37a2eb[_0x63a8('0x44')]);return db[_0x63a8('0x5a')][_0x63a8('0x5c')](_0x4141f0);}})[_0x63a8('0x27')](function(_0x1628f2){if(_0x1628f2){return db['User'][_0x63a8('0x5d')]({'where':{'id':_[_0x63a8('0x2e')](_0x1628f2,_0x63a8('0x5e')),'role':_0x63a8('0x5f')},'attributes':['id',_0x63a8('0x2b'),'openchannelPause',_0x63a8('0x60'),_0x63a8('0x61')]});}})[_0x63a8('0x27')](function(_0x194053){if(_0x194053){return{'count':_0x194053[_0x63a8('0x62')],'rows':_[_0x63a8('0x2e')](_0x194053['rows'],function(_0x5c4699){return{'membername':_0x5c4699[_0x63a8('0x2b')],'UserId':_0x5c4699['id'],'queue_name':_0x2c7bc1['name'],'OpenchannelQueueId':_0x2c7bc1['id'],'interface':util[_0x63a8('0x63')](_0x63a8('0x64'),_0x63a8('0x65'),_0x5c4699[_0x63a8('0x2b')]),'penalty':0x0,'paused':_0x5c4699[_0x63a8('0x66')],'createdAt':_0x5c4699['createdAt'],'updatedAt':_0x5c4699[_0x63a8('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x63a8('0x27')](respondWithFilteredResult(_0x208abc,_0x4141f0))[_0x63a8('0x48')](handleError(_0x208abc,null));};exports['getTeams']=function(_0x3d4bea,_0x49d10d,_0x2d13bb){var _0x42966a={};var _0x50e0e9={};var _0x40703f;var _0x1fd77d;return db[_0x63a8('0x2f')]['findOne']({'where':{'id':_0x3d4bea[_0x63a8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x49d10d,null))['then'](function(_0x377217){if(_0x377217){_0x40703f=_0x377217;_0x50e0e9[_0x63a8('0x33')]=_[_0x63a8('0x4b')](db[_0x63a8('0x67')][_0x63a8('0x30')]);_0x50e0e9[_0x63a8('0x34')]=_['keys'](_0x3d4bea['query']);_0x50e0e9[_0x63a8('0x3f')]=_[_0x63a8('0x35')](_0x50e0e9[_0x63a8('0x33')],_0x50e0e9[_0x63a8('0x34')]);_0x42966a[_0x63a8('0x36')]=_[_0x63a8('0x35')](_0x50e0e9[_0x63a8('0x33')],qs['fields'](_0x3d4bea[_0x63a8('0x34')][_0x63a8('0x37')]));_0x42966a[_0x63a8('0x36')]=_0x42966a['attributes'][_0x63a8('0x38')]?_0x42966a[_0x63a8('0x36')]:_0x50e0e9[_0x63a8('0x33')];_0x42966a[_0x63a8('0x3c')]=qs[_0x63a8('0x3d')](_0x3d4bea[_0x63a8('0x34')][_0x63a8('0x3d')]);_0x42966a[_0x63a8('0x3e')]=qs[_0x63a8('0x3f')](_[_0x63a8('0x40')](_0x3d4bea['query'],_0x50e0e9[_0x63a8('0x3f')]));if(_0x3d4bea[_0x63a8('0x34')][_0x63a8('0x41')]){_0x42966a[_0x63a8('0x3e')]=_[_0x63a8('0x42')](_0x42966a[_0x63a8('0x3e')],{'$or':_[_0x63a8('0x2e')](_0x42966a[_0x63a8('0x36')],function(_0x414fa4){var _0x1d91e0={};_0x1d91e0[_0x414fa4]={'$like':'%'+_0x3d4bea[_0x63a8('0x34')][_0x63a8('0x41')]+'%'};return _0x1d91e0;})});}_0x42966a=_[_0x63a8('0x42')]({},_0x42966a,_0x3d4bea[_0x63a8('0x44')]);return _0x40703f[_0x63a8('0x68')](_0x42966a);}})[_0x63a8('0x27')](function(_0x382228){if(_0x382228){_0x1fd77d=_0x382228[_0x63a8('0x38')];if(!_0x3d4bea[_0x63a8('0x34')][_0x63a8('0x39')](_0x63a8('0x3a'))){_0x42966a['limit']=qs['limit'](_0x3d4bea['query']['limit']);_0x42966a[_0x63a8('0x20')]=qs['offset'](_0x3d4bea[_0x63a8('0x34')][_0x63a8('0x20')]);}return _0x40703f[_0x63a8('0x68')](_0x42966a);}})[_0x63a8('0x27')](function(_0x4808ab){if(_0x4808ab){return _0x4808ab?{'count':_0x1fd77d,'rows':_0x4808ab}:null;}})[_0x63a8('0x27')](respondWithResult(_0x49d10d,null))[_0x63a8('0x48')](handleError(_0x49d10d,null));};exports[_0x63a8('0x69')]=function(_0x24a68f,_0x58129c,_0x3df036){var _0x19b14b=_0x24a68f[_0x63a8('0x4e')][_0x63a8('0x6a')];return db['Team'][_0x63a8('0x5c')]({'where':{'id':_0x19b14b},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0x63a8('0x6b'),_0x63a8('0x6c'),_0x63a8('0x6d')],'raw':!![]}]})[_0x63a8('0x27')](function(_0x597e97){if(_0x597e97){var _0x2928e8=_[_0x63a8('0x6e')](_0x597e97,function(_0x335251){var _0x4db8fa=_0x335251[_0x63a8('0x59')]({'plain':!![]});return _0x4db8fa[_0x63a8('0x6f')];});return db[_0x63a8('0x2f')][_0x63a8('0x4c')]({'where':{'id':_0x24a68f['params']['id']}})[_0x63a8('0x27')](function(_0x22f63a){return db['sequelize'][_0x63a8('0x70')](function(_0x4911d0){return _0x22f63a[_0x63a8('0x69')](_0x19b14b,{'transaction':_0x4911d0})[_0x63a8('0x27')](function(){return BPromise[_0x63a8('0x71')](_0x2928e8,function(_0x7cc71e){return db[_0x63a8('0x5a')][_0x63a8('0x72')]({'where':{'UserId':_0x7cc71e['id'],'OpenchannelQueueId':_0x24a68f[_0x63a8('0x4a')]['id']},'transaction':_0x4911d0});});})[_0x63a8('0x27')](function(){_0x2928e8['forEach'](function(_0x3d129f){socket['emit'](_0x63a8('0x73'),{'UserId':_0x3d129f['id'],'OpenchannelQueueId':_0x22f63a['id']});});});});});}})[_0x63a8('0x27')](respondWithStatusCode(_0x58129c,null))['catch'](handleError(_0x58129c,null));};exports[_0x63a8('0x74')]=function(_0x443445,_0x4721d8,_0x232782){return db['Team']['findAll']({'where':{'id':_0x443445['query'][_0x63a8('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x63a8('0x75')],'as':_0x63a8('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x63a8('0x27')](handleEntityNotFound(_0x4721d8,null))['then'](function(_0x48a373){var _0x2ad97c=_[_0x63a8('0x2e')](_0x48a373,'id');var _0x19604d=[];var _0x1da5e0=[];var _0x2f335c=squel[_0x63a8('0x76')]();_0x2f335c[_0x63a8('0x77')](_0x63a8('0x78'))[_0x63a8('0x79')](_0x63a8('0x7a'),'tq')[_0x63a8('0x7b')](_0x63a8('0x7c'),'ut',_0x63a8('0x7d'))[_0x63a8('0x3e')](_0x63a8('0x7e'),_0x443445[_0x63a8('0x4a')]['id']);for(var _0x19b439=0x0;_0x19b439<_0x48a373[_0x63a8('0x38')];_0x19b439+=0x1){let _0x58df4b=_0x48a373[_0x19b439];for(var _0x15d5a2=0x0;_0x15d5a2<_0x58df4b[_0x63a8('0x6f')][_0x63a8('0x38')];_0x15d5a2+=0x1){let _0x26a9aa=_0x58df4b[_0x63a8('0x6f')][_0x15d5a2];var _0x4ebb70=_0x2f335c[_0x63a8('0x7f')]();_0x4ebb70[_0x63a8('0x3e')]('ut.UserId\x20=\x20?',_0x26a9aa['id']);_0x1da5e0[_0x63a8('0x80')](db[_0x63a8('0x81')][_0x63a8('0x34')](_0x4ebb70[_0x63a8('0x82')](),{'type':db[_0x63a8('0x81')]['QueryTypes']['SELECT']})[_0x63a8('0x27')](function(_0x1aec48){if(_0x1aec48['length']===0x1){return _0x26a9aa['id'];}else{var _0x3eceab=_[_0x63a8('0x83')](_[_0x63a8('0x2e')](_0x1aec48,_0x63a8('0x84')),function(_0xc1d662){return _[_0x63a8('0x85')](_0x2ad97c,_0xc1d662);});if(_0x3eceab){return _0x26a9aa['id'];}}}));}}return BPromise[_0x63a8('0x86')](_0x1da5e0)['then'](function(_0x4a01a7){_0x19604d=_(_0x19604d)['union'](_0x4a01a7)[_0x63a8('0x87')]()['value']();return db[_0x63a8('0x2f')][_0x63a8('0x4c')]({'where':{'id':_0x443445[_0x63a8('0x4a')]['id']}})[_0x63a8('0x27')](function(_0x411af9){return db[_0x63a8('0x81')]['transaction'](function(_0x38b417){return _0x411af9['removeTeams'](_0x443445[_0x63a8('0x34')][_0x63a8('0x6a')],{'transaction':_0x38b417})[_0x63a8('0x27')](function(){if(!_[_0x63a8('0x88')](_0x19604d)){return _0x411af9[_0x63a8('0x89')](_0x19604d,{'transaction':_0x38b417});}})['then'](function(){_0x19604d['forEach'](function(_0x2a3c39){socket['emit']('userOpenchannelQueue:remove',{'UserId':_0x2a3c39,'OpenchannelQueueId':_0x411af9['id']});});});});});});})[_0x63a8('0x27')](respondWithStatusCode(_0x4721d8,null))[_0x63a8('0x48')](handleError(_0x4721d8,null));};exports[_0x63a8('0x8a')]=function(_0x5f1ae1,_0x4fa527,_0x5d4160){return db['OpenchannelQueue']['find']({'where':{'id':_0x5f1ae1[_0x63a8('0x4a')]['id']}})[_0x63a8('0x27')](handleEntityNotFound(_0x4fa527,null))[_0x63a8('0x27')](function(_0xe634b6){if(_0xe634b6){return _0xe634b6['addAgents'](_0x5f1ae1[_0x63a8('0x4e')][_0x63a8('0x6a')],_[_0x63a8('0x8b')](_0x5f1ae1[_0x63a8('0x4e')],['ids','id'])||{})[_0x63a8('0x8c')](function(_0x2e54ee){for(var _0x1d8ebe=0x0;_0x1d8ebe<_0x5f1ae1[_0x63a8('0x4e')][_0x63a8('0x6a')][_0x63a8('0x38')];_0x1d8ebe+=0x1){socket[_0x63a8('0x8d')](_0x63a8('0x73'),{'UserId':Number(_0x5f1ae1[_0x63a8('0x4e')][_0x63a8('0x6a')][_0x1d8ebe]),'OpenchannelQueueId':Number(_0x5f1ae1[_0x63a8('0x4a')]['id'])});}return _0x2e54ee;});}})[_0x63a8('0x27')](respondWithResult(_0x4fa527,null))[_0x63a8('0x48')](handleError(_0x4fa527,null));};exports[_0x63a8('0x89')]=function(_0x54da88,_0x88232a,_0x4843af){return db[_0x63a8('0x2f')][_0x63a8('0x4c')]({'where':{'id':_0x54da88[_0x63a8('0x4a')]['id']}})[_0x63a8('0x27')](handleEntityNotFound(_0x88232a,null))['then'](function(_0x5f4efb){if(_0x5f4efb){return _0x5f4efb['removeAgents'](_0x54da88['query'][_0x63a8('0x6a')])[_0x63a8('0x27')](function(){if(_[_0x63a8('0x8e')](_0x54da88[_0x63a8('0x34')][_0x63a8('0x6a')])){for(var _0xeef0c1=0x0;_0xeef0c1<_0x54da88[_0x63a8('0x34')][_0x63a8('0x6a')]['length'];_0xeef0c1+=0x1){socket[_0x63a8('0x8d')](_0x63a8('0x8f'),{'UserId':Number(_0x54da88['query'][_0x63a8('0x6a')][_0xeef0c1]),'OpenchannelQueueId':Number(_0x54da88[_0x63a8('0x4a')]['id'])});}}else{socket[_0x63a8('0x8d')](_0x63a8('0x8f'),{'UserId':Number(_0x54da88[_0x63a8('0x34')][_0x63a8('0x6a')]),'OpenchannelQueueId':Number(_0x54da88[_0x63a8('0x4a')]['id'])});}});}})[_0x63a8('0x27')](respondWithStatusCode(_0x88232a,null))['catch'](handleError(_0x88232a,null));};exports[_0x63a8('0x90')]=function(_0x11a6a2,_0x2573fd,_0xf9a581){var _0x25bdc3={};var _0x2c4191={};var _0x1efe91;var _0x111efc;return db[_0x63a8('0x2f')][_0x63a8('0x91')]({'where':{'id':_0x11a6a2[_0x63a8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2573fd,null))[_0x63a8('0x27')](function(_0x2cdcda){if(_0x2cdcda){_0x1efe91=_0x2cdcda;_0x2c4191['model']=_[_0x63a8('0x4b')](db[_0x63a8('0x75')][_0x63a8('0x30')]);_0x2c4191[_0x63a8('0x34')]=_[_0x63a8('0x4b')](_0x11a6a2['query']);_0x2c4191['filters']=_['intersection'](_0x2c4191[_0x63a8('0x33')],_0x2c4191['query']);_0x25bdc3[_0x63a8('0x36')]=_[_0x63a8('0x35')](_0x2c4191[_0x63a8('0x33')],qs[_0x63a8('0x37')](_0x11a6a2[_0x63a8('0x34')][_0x63a8('0x37')]));_0x25bdc3[_0x63a8('0x36')]=_0x25bdc3[_0x63a8('0x36')][_0x63a8('0x38')]?_0x25bdc3['attributes']:_0x2c4191[_0x63a8('0x33')];_0x25bdc3[_0x63a8('0x3c')]=qs[_0x63a8('0x3d')](_0x11a6a2[_0x63a8('0x34')][_0x63a8('0x3d')]);_0x25bdc3[_0x63a8('0x3e')]=qs[_0x63a8('0x3f')](_['pick'](_0x11a6a2['query'],_0x2c4191['filters']));if(_0x11a6a2[_0x63a8('0x34')][_0x63a8('0x41')]){_0x25bdc3[_0x63a8('0x3e')]=_[_0x63a8('0x42')](_0x25bdc3[_0x63a8('0x3e')],{'$or':_['map'](_0x25bdc3[_0x63a8('0x36')],function(_0x5666ef){var _0xada1f4={};_0xada1f4[_0x5666ef]={'$like':'%'+_0x11a6a2[_0x63a8('0x34')][_0x63a8('0x41')]+'%'};return _0xada1f4;})});}_0x25bdc3=_[_0x63a8('0x42')]({},_0x25bdc3,_0x11a6a2[_0x63a8('0x44')]);return _0x1efe91[_0x63a8('0x90')](_0x25bdc3);}})['then'](function(_0x3a0de8){if(_0x3a0de8){_0x111efc=_0x3a0de8[_0x63a8('0x38')];if(!_0x11a6a2[_0x63a8('0x34')][_0x63a8('0x39')]('nolimit')){_0x25bdc3[_0x63a8('0x3b')]=qs[_0x63a8('0x3b')](_0x11a6a2[_0x63a8('0x34')][_0x63a8('0x3b')]);_0x25bdc3['offset']=qs[_0x63a8('0x20')](_0x11a6a2[_0x63a8('0x34')]['offset']);}return _0x1efe91[_0x63a8('0x90')](_0x25bdc3);}})[_0x63a8('0x27')](function(_0x280087){if(_0x280087){return _0x280087?{'count':_0x111efc,'rows':_0x280087}:null;}})[_0x63a8('0x27')](respondWithResult(_0x2573fd,null))[_0x63a8('0x48')](handleError(_0x2573fd,null));};
\ No newline at end of file
index 830185e..370e619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4c6=['hook','exports','OpenchannelQueue','setMaxListeners','update','emit'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xe4c6,0x1dc));var _0x6e4c=function(_0x13e9d3,_0x8e54bd){_0x13e9d3=_0x13e9d3-0x0;var _0x5f88e5=_0xe4c6[_0x13e9d3];return _0x5f88e5;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require('../../mysqldb')['db'][_0x6e4c('0x0')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x6e4c('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6e4c('0x2'),'afterDestroy':'remove'};function emitEvent(_0x397e3a){return function(_0x29a26a,_0x461082,_0x535878){OpenchannelQueueEvents['emit'](_0x397e3a+':'+_0x29a26a['id'],_0x29a26a);OpenchannelQueueEvents[_0x6e4c('0x3')](_0x397e3a,_0x29a26a);_0x535878(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0x6e4c('0x4')](e,emitEvent(event));}}module[_0x6e4c('0x5')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x640e=['save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x28d151,_0x446e87){var _0x4340a8=function(_0x499a73){while(--_0x499a73){_0x28d151['push'](_0x28d151['shift']());}};_0x4340a8(++_0x446e87);}(_0x640e,0x177));var _0xe640=function(_0x2c1dcd,_0x350452){_0x2c1dcd=_0x2c1dcd-0x0;var _0x158ce5=_0x640e[_0x2c1dcd];return _0x158ce5;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xe640('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe640('0x1'),'afterUpdate':_0xe640('0x2'),'afterDestroy':_0xe640('0x3')};function emitEvent(_0x363299){return function(_0x5416e8,_0x4bdd0c,_0x27b0cf){OpenchannelQueueEvents['emit'](_0x363299+':'+_0x5416e8['id'],_0x5416e8);OpenchannelQueueEvents[_0xe640('0x4')](_0x363299,_0x5416e8);_0x27b0cf(null);};}for(var e in events){if(events[_0xe640('0x5')](e)){var event=events[e];OpenchannelQueue[_0xe640('0x6')](e,emitEvent(event));}}module[_0xe640('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index 0b7edee..101e4e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb053=['exports','define','OpenchannelQueue','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes'];(function(_0x47c492,_0x311a27){var _0x32105d=function(_0x5b0289){while(--_0x5b0289){_0x47c492['push'](_0x47c492['shift']());}};_0x32105d(++_0x311a27);}(_0xb053,0x121));var _0x3b05=function(_0x2f14af,_0x31c5cf){_0x2f14af=_0x2f14af-0x0;var _0x137879=_0xb053[_0x2f14af];return _0x137879;};'use strict';var _=require(_0x3b05('0x0'));var util=require(_0x3b05('0x1'));var logger=require('../../config/logger')(_0x3b05('0x2'));var moment=require(_0x3b05('0x3'));var BPromise=require(_0x3b05('0x4'));var rp=require(_0x3b05('0x5'));var fs=require('fs');var path=require(_0x3b05('0x6'));var rimraf=require(_0x3b05('0x7'));var config=require(_0x3b05('0x8'));var attributes=require(_0x3b05('0x9'));module[_0x3b05('0xa')]=function(_0x51eaf5,_0x4a380c){return _0x51eaf5[_0x3b05('0xb')](_0x3b05('0xc'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8214=['rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5613de,_0x479c93){var _0x5b40cb=function(_0x5479ae){while(--_0x5479ae){_0x5613de['push'](_0x5613de['shift']());}};_0x5b40cb(++_0x479c93);}(_0x8214,0xe3));var _0x4821=function(_0x3deb67,_0x366db6){_0x3deb67=_0x3deb67-0x0;var _0x3c346d=_0x8214[_0x3deb67];return _0x3c346d;};'use strict';var _=require(_0x4821('0x0'));var util=require(_0x4821('0x1'));var logger=require(_0x4821('0x2'))(_0x4821('0x3'));var moment=require(_0x4821('0x4'));var BPromise=require(_0x4821('0x5'));var rp=require(_0x4821('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4821('0x7'));var config=require(_0x4821('0x8'));var attributes=require(_0x4821('0x9'));module[_0x4821('0xa')]=function(_0x5a420e,_0x28b1d9){return _0x5a420e[_0x4821('0xb')]('OpenchannelQueue',attributes,{'tableName':_0x4821('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d923f8..0808045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b7f=['redis','localhost','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','attributes','limit','map','include','model','debug','catch','ShowOpenchannelQueue','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x230f8e,_0x55250b){var _0x41973c=function(_0x52e609){while(--_0x52e609){_0x230f8e['push'](_0x230f8e['shift']());}};_0x41973c(++_0x55250b);}(_0x1b7f,0x15d));var _0xf1b7=function(_0x261eb4,_0x25b838){_0x261eb4=_0x261eb4-0x0;var _0x467d40=_0x1b7f[_0x261eb4];return _0x467d40;};'use strict';var _=require(_0xf1b7('0x0'));var util=require('util');var moment=require(_0xf1b7('0x1'));var BPromise=require(_0xf1b7('0x2'));var rs=require(_0xf1b7('0x3'));var fs=require('fs');var Redis=require(_0xf1b7('0x4'));var db=require(_0xf1b7('0x5'))['db'];var utils=require(_0xf1b7('0x6'));var logger=require(_0xf1b7('0x7'))('rpc');var config=require(_0xf1b7('0x8'));var jayson=require(_0xf1b7('0x9'));var client=jayson[_0xf1b7('0xa')]['http']({'port':0x232a});config[_0xf1b7('0xb')]=_['defaults'](config[_0xf1b7('0xb')],{'host':_0xf1b7('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf1b7('0xd'))[_0xf1b7('0xe')](socket);function respondWithRpcPromise(_0x58c1e4,_0x4c49d2,_0x3c58e4){return new BPromise(function(_0x1e00e6,_0x57cb2f){return client[_0xf1b7('0xf')](_0x58c1e4,_0x3c58e4)[_0xf1b7('0x10')](function(_0x4db0b8){logger[_0xf1b7('0x11')](_0xf1b7('0x12'),_0x4c49d2,_0xf1b7('0x13'));logger['debug'](_0xf1b7('0x14'),_0x4c49d2,_0xf1b7('0x13'),JSON[_0xf1b7('0x15')](_0x4db0b8));if(_0x4db0b8[_0xf1b7('0x16')]){if(_0x4db0b8[_0xf1b7('0x16')][_0xf1b7('0x17')]===0x1f4){logger['error'](_0xf1b7('0x12'),_0x4c49d2,_0x4db0b8[_0xf1b7('0x16')]['message']);return _0x57cb2f(_0x4db0b8[_0xf1b7('0x16')]['message']);}logger[_0xf1b7('0x16')](_0xf1b7('0x12'),_0x4c49d2,_0x4db0b8[_0xf1b7('0x16')][_0xf1b7('0x18')]);return _0x1e00e6(_0x4db0b8[_0xf1b7('0x16')][_0xf1b7('0x18')]);}else{logger[_0xf1b7('0x11')](_0xf1b7('0x12'),_0x4c49d2,_0xf1b7('0x13'));_0x1e00e6(_0x4db0b8[_0xf1b7('0x19')][_0xf1b7('0x18')]);}})['catch'](function(_0x14c2f6){logger['error'](_0xf1b7('0x12'),_0x4c49d2,_0x14c2f6);_0x57cb2f(_0x14c2f6);});});}exports[_0xf1b7('0x1a')]=function(_0xc25b77){var _0x39dc6f=this;return new Promise(function(_0x5a1e5a,_0x13b987){return db[_0xf1b7('0x1b')][_0xf1b7('0x1c')]({'raw':_0xc25b77[_0xf1b7('0x1d')]?_0xc25b77[_0xf1b7('0x1d')][_0xf1b7('0x1e')]===undefined?!![]:![]:!![],'where':_0xc25b77['options']?_0xc25b77['options']['where']||null:null,'attributes':_0xc25b77[_0xf1b7('0x1d')]?_0xc25b77[_0xf1b7('0x1d')][_0xf1b7('0x1f')]||null:null,'limit':_0xc25b77[_0xf1b7('0x1d')]?_0xc25b77['options'][_0xf1b7('0x20')]||null:null,'include':_0xc25b77[_0xf1b7('0x1d')]?_0xc25b77[_0xf1b7('0x1d')]['include']?_[_0xf1b7('0x21')](_0xc25b77[_0xf1b7('0x1d')][_0xf1b7('0x22')],function(_0x57bb1e){return{'model':db[_0x57bb1e['model']],'as':_0x57bb1e['as'],'attributes':_0x57bb1e[_0xf1b7('0x1f')],'include':_0x57bb1e[_0xf1b7('0x22')]?_[_0xf1b7('0x21')](_0x57bb1e['include'],function(_0x1aadf1){return{'model':db[_0x1aadf1[_0xf1b7('0x23')]],'as':_0x1aadf1['as'],'attributes':_0x1aadf1[_0xf1b7('0x1f')],'include':_0x1aadf1[_0xf1b7('0x22')]?_[_0xf1b7('0x21')](_0x1aadf1[_0xf1b7('0x22')],function(_0x105212){return{'model':db[_0x105212[_0xf1b7('0x23')]],'as':_0x105212['as'],'attributes':_0x105212[_0xf1b7('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c2cbb){logger[_0xf1b7('0x11')](_0xf1b7('0x1a'),_0xc25b77);logger[_0xf1b7('0x24')](_0xf1b7('0x1a'),_0xc25b77,JSON['stringify'](_0x3c2cbb));_0x5a1e5a(_0x3c2cbb);})[_0xf1b7('0x25')](function(_0x3ffc0b){logger[_0xf1b7('0x16')](_0xf1b7('0x1a'),_0x3ffc0b[_0xf1b7('0x18')],_0xc25b77);_0x13b987(_0x39dc6f[_0xf1b7('0x16')](0x1f4,_0x3ffc0b[_0xf1b7('0x18')]));});});};exports[_0xf1b7('0x26')]=function(_0x502ad1){var _0x34af3a=this;return new Promise(function(_0x30604b,_0x644560){return db[_0xf1b7('0x1b')][_0xf1b7('0x27')]({'raw':_0x502ad1[_0xf1b7('0x1d')]?_0x502ad1[_0xf1b7('0x1d')][_0xf1b7('0x1e')]===undefined?!![]:![]:!![],'where':_0x502ad1[_0xf1b7('0x1d')]?_0x502ad1[_0xf1b7('0x1d')]['where']||null:null,'attributes':_0x502ad1[_0xf1b7('0x1d')]?_0x502ad1[_0xf1b7('0x1d')][_0xf1b7('0x1f')]||null:null,'include':_0x502ad1[_0xf1b7('0x1d')]?_0x502ad1['options'][_0xf1b7('0x22')]?_[_0xf1b7('0x21')](_0x502ad1[_0xf1b7('0x1d')]['include'],function(_0x8950b8){return{'model':db[_0x8950b8[_0xf1b7('0x23')]],'as':_0x8950b8['as'],'attributes':_0x8950b8[_0xf1b7('0x1f')],'include':_0x8950b8[_0xf1b7('0x22')]?_[_0xf1b7('0x21')](_0x8950b8[_0xf1b7('0x22')],function(_0x185d2b){return{'model':db[_0x185d2b['model']],'as':_0x185d2b['as'],'attributes':_0x185d2b[_0xf1b7('0x1f')],'include':_0x185d2b['include']?_['map'](_0x185d2b[_0xf1b7('0x22')],function(_0x8512a7){return{'model':db[_0x8512a7[_0xf1b7('0x23')]],'as':_0x8512a7['as'],'attributes':_0x8512a7['attributes']};}):[]};}):[]};}):[]:[]})[_0xf1b7('0x10')](function(_0x35775a){logger[_0xf1b7('0x11')](_0xf1b7('0x26'),_0x502ad1);logger['debug']('ShowOpenchannelQueue',_0x502ad1,JSON[_0xf1b7('0x15')](_0x35775a));_0x30604b(_0x35775a);})[_0xf1b7('0x25')](function(_0xf2edb3){logger[_0xf1b7('0x16')](_0xf1b7('0x26'),_0xf2edb3[_0xf1b7('0x18')],_0x502ad1);_0x644560(_0x34af3a[_0xf1b7('0x16')](0x1f4,_0xf2edb3[_0xf1b7('0x18')]));});});};
\ No newline at end of file
+var _0x519b=['http','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','then','info','request\x20sent','stringify','error','code','OpenchannelQueue,\x20%s,\x20%s','message','GetOpenchannelQueue','OpenchannelQueue','findAll','options','where','attributes','include','model','map','debug','ShowOpenchannelQueue','find','raw','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5e4b85,_0x6cf965){var _0x5cd3cb=function(_0x589c9e){while(--_0x589c9e){_0x5e4b85['push'](_0x5e4b85['shift']());}};_0x5cd3cb(++_0x6cf965);}(_0x519b,0xda));var _0xb519=function(_0x86ce09,_0x2c3244){_0x86ce09=_0x86ce09-0x0;var _0x5c00ef=_0x519b[_0x86ce09];return _0x5c00ef;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb519('0x0'));var BPromise=require(_0xb519('0x1'));var rs=require(_0xb519('0x2'));var fs=require('fs');var Redis=require(_0xb519('0x3'));var db=require(_0xb519('0x4'))['db'];var utils=require(_0xb519('0x5'));var logger=require(_0xb519('0x6'))(_0xb519('0x7'));var config=require(_0xb519('0x8'));var jayson=require(_0xb519('0x9'));var client=jayson['client'][_0xb519('0xa')]({'port':0x232a});config['redis']=_[_0xb519('0xb')](config[_0xb519('0xc')],{'host':_0xb519('0xd'),'port':0x18eb});var socket=require(_0xb519('0xe'))(new Redis(config[_0xb519('0xc')]));require(_0xb519('0xf'))[_0xb519('0x10')](socket);function respondWithRpcPromise(_0x3bc97a,_0x1ecc31,_0x1c2cf8){return new BPromise(function(_0x46640,_0xc073c3){return client['request'](_0x3bc97a,_0x1c2cf8)[_0xb519('0x11')](function(_0x433243){logger[_0xb519('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x1ecc31,_0xb519('0x13'));logger['debug']('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x1ecc31,'request\x20sent',JSON[_0xb519('0x14')](_0x433243));if(_0x433243[_0xb519('0x15')]){if(_0x433243['error'][_0xb519('0x16')]===0x1f4){logger['error'](_0xb519('0x17'),_0x1ecc31,_0x433243['error'][_0xb519('0x18')]);return _0xc073c3(_0x433243[_0xb519('0x15')][_0xb519('0x18')]);}logger[_0xb519('0x15')](_0xb519('0x17'),_0x1ecc31,_0x433243[_0xb519('0x15')]['message']);return _0x46640(_0x433243[_0xb519('0x15')][_0xb519('0x18')]);}else{logger[_0xb519('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x1ecc31,_0xb519('0x13'));_0x46640(_0x433243['result'][_0xb519('0x18')]);}})['catch'](function(_0x145c32){logger[_0xb519('0x15')]('OpenchannelQueue,\x20%s,\x20%s',_0x1ecc31,_0x145c32);_0xc073c3(_0x145c32);});});}exports[_0xb519('0x19')]=function(_0x2d1158){var _0x2c3bc8=this;return new Promise(function(_0x1f20a2,_0x3293ce){return db[_0xb519('0x1a')][_0xb519('0x1b')]({'raw':_0x2d1158[_0xb519('0x1c')]?_0x2d1158[_0xb519('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x2d1158['options']?_0x2d1158[_0xb519('0x1c')][_0xb519('0x1d')]||null:null,'attributes':_0x2d1158[_0xb519('0x1c')]?_0x2d1158[_0xb519('0x1c')][_0xb519('0x1e')]||null:null,'limit':_0x2d1158[_0xb519('0x1c')]?_0x2d1158['options']['limit']||null:null,'include':_0x2d1158[_0xb519('0x1c')]?_0x2d1158['options'][_0xb519('0x1f')]?_['map'](_0x2d1158[_0xb519('0x1c')]['include'],function(_0x5ab79c){return{'model':db[_0x5ab79c[_0xb519('0x20')]],'as':_0x5ab79c['as'],'attributes':_0x5ab79c[_0xb519('0x1e')],'include':_0x5ab79c['include']?_['map'](_0x5ab79c[_0xb519('0x1f')],function(_0x3f6f70){return{'model':db[_0x3f6f70[_0xb519('0x20')]],'as':_0x3f6f70['as'],'attributes':_0x3f6f70[_0xb519('0x1e')],'include':_0x3f6f70[_0xb519('0x1f')]?_[_0xb519('0x21')](_0x3f6f70['include'],function(_0x4b29ef){return{'model':db[_0x4b29ef[_0xb519('0x20')]],'as':_0x4b29ef['as'],'attributes':_0x4b29ef[_0xb519('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb519('0x11')](function(_0x2bdd4a){logger[_0xb519('0x12')]('GetOpenchannelQueue',_0x2d1158);logger[_0xb519('0x22')]('GetOpenchannelQueue',_0x2d1158,JSON[_0xb519('0x14')](_0x2bdd4a));_0x1f20a2(_0x2bdd4a);})['catch'](function(_0x17c54c){logger[_0xb519('0x15')](_0xb519('0x19'),_0x17c54c[_0xb519('0x18')],_0x2d1158);_0x3293ce(_0x2c3bc8[_0xb519('0x15')](0x1f4,_0x17c54c[_0xb519('0x18')]));});});};exports[_0xb519('0x23')]=function(_0x5638c4){var _0x2cb9aa=this;return new Promise(function(_0x4b6f60,_0xd97649){return db[_0xb519('0x1a')][_0xb519('0x24')]({'raw':_0x5638c4['options']?_0x5638c4[_0xb519('0x1c')][_0xb519('0x25')]===undefined?!![]:![]:!![],'where':_0x5638c4['options']?_0x5638c4[_0xb519('0x1c')][_0xb519('0x1d')]||null:null,'attributes':_0x5638c4[_0xb519('0x1c')]?_0x5638c4[_0xb519('0x1c')]['attributes']||null:null,'include':_0x5638c4[_0xb519('0x1c')]?_0x5638c4[_0xb519('0x1c')]['include']?_['map'](_0x5638c4['options'][_0xb519('0x1f')],function(_0x42cefd){return{'model':db[_0x42cefd[_0xb519('0x20')]],'as':_0x42cefd['as'],'attributes':_0x42cefd[_0xb519('0x1e')],'include':_0x42cefd[_0xb519('0x1f')]?_['map'](_0x42cefd[_0xb519('0x1f')],function(_0x60af27){return{'model':db[_0x60af27[_0xb519('0x20')]],'as':_0x60af27['as'],'attributes':_0x60af27['attributes'],'include':_0x60af27[_0xb519('0x1f')]?_[_0xb519('0x21')](_0x60af27['include'],function(_0x362ef2){return{'model':db[_0x362ef2[_0xb519('0x20')]],'as':_0x362ef2['as'],'attributes':_0x362ef2[_0xb519('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb519('0x11')](function(_0x43f229){logger['info'](_0xb519('0x23'),_0x5638c4);logger[_0xb519('0x22')](_0xb519('0x23'),_0x5638c4,JSON[_0xb519('0x14')](_0x43f229));_0x4b6f60(_0x43f229);})['catch'](function(_0x355230){logger[_0xb519('0x15')](_0xb519('0x23'),_0x355230['message'],_0x5638c4);_0xd97649(_0x2cb9aa[_0xb519('0x15')](0x1f4,_0x355230[_0xb519('0x18')]));});});};
\ No newline at end of file
index f8938c3..1e6e891 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a00=['openchannelQueue:','./openchannelQueue.events','save','update','emit','register','length'];(function(_0x2fde47,_0xa15989){var _0x5ef68e=function(_0x4dc6c8){while(--_0x4dc6c8){_0x2fde47['push'](_0x2fde47['shift']());}};_0x5ef68e(++_0xa15989);}(_0x3a00,0x182));var _0x03a0=function(_0x6dfbaa,_0x31eede){_0x6dfbaa=_0x6dfbaa-0x0;var _0xfbe02=_0x3a00[_0x6dfbaa];return _0xfbe02;};'use strict';var OpenchannelQueueEvents=require(_0x03a0('0x0'));var events=[_0x03a0('0x1'),'remove',_0x03a0('0x2')];function createListener(_0xc0573a,_0x9ef38f){return function(_0x99879f){_0x9ef38f[_0x03a0('0x3')](_0xc0573a,_0x99879f);};}function removeListener(_0x33c682,_0x231737){return function(){OpenchannelQueueEvents['removeListener'](_0x33c682,_0x231737);};}exports[_0x03a0('0x4')]=function(_0x363690){for(var _0x41fd4e=0x0,_0x243318=events[_0x03a0('0x5')];_0x41fd4e<_0x243318;_0x41fd4e++){var _0x557eb3=events[_0x41fd4e];var _0x50aba4=createListener(_0x03a0('0x6')+_0x557eb3,_0x363690);OpenchannelQueueEvents['on'](_0x557eb3,_0x50aba4);}};
\ No newline at end of file
+var _0x1186=['./openchannelQueue.events','save','remove','emit','register','length'];(function(_0x22a84f,_0xcdb24b){var _0x12a8c1=function(_0x3dabb6){while(--_0x3dabb6){_0x22a84f['push'](_0x22a84f['shift']());}};_0x12a8c1(++_0xcdb24b);}(_0x1186,0x1e6));var _0x6118=function(_0x1a63d1,_0x2b1d8c){_0x1a63d1=_0x1a63d1-0x0;var _0x3b0053=_0x1186[_0x1a63d1];return _0x3b0053;};'use strict';var OpenchannelQueueEvents=require(_0x6118('0x0'));var events=[_0x6118('0x1'),_0x6118('0x2'),'update'];function createListener(_0x14b06f,_0x169230){return function(_0x5cb4bb){_0x169230[_0x6118('0x3')](_0x14b06f,_0x5cb4bb);};}function removeListener(_0x122549,_0x4a5275){return function(){OpenchannelQueueEvents['removeListener'](_0x122549,_0x4a5275);};}exports[_0x6118('0x4')]=function(_0x4d7ca0){for(var _0x3067fb=0x0,_0x4bcb0d=events[_0x6118('0x5')];_0x3067fb<_0x4bcb0d;_0x3067fb++){var _0x59d7c4=events[_0x3067fb];var _0x1e27e4=createListener('openchannelQueue:'+_0x59d7c4,_0x4d7ca0);OpenchannelQueueEvents['on'](_0x59d7c4,_0x1e27e4);}};
\ No newline at end of file
index a1190db..b2b11ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb46=['index','/describe','describe','/:id','show','create','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated'];(function(_0x3aca46,_0x1d68c8){var _0xa94af=function(_0x298d67){while(--_0x298d67){_0x3aca46['push'](_0x3aca46['shift']());}};_0xa94af(++_0x1d68c8);}(_0xdb46,0xbe));var _0x6db4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xdb46[_0x21549c];return _0x426cbd;};'use strict';var multer=require(_0x6db4('0x0'));var util=require(_0x6db4('0x1'));var path=require(_0x6db4('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6db4('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6db4('0x4'));var interaction=require(_0x6db4('0x5'));var config=require(_0x6db4('0x6'));var controller=require(_0x6db4('0x7'));router[_0x6db4('0x8')]('/',auth[_0x6db4('0x9')](),controller[_0x6db4('0xa')]);router['get'](_0x6db4('0xb'),auth[_0x6db4('0x9')](),controller[_0x6db4('0xc')]);router[_0x6db4('0x8')](_0x6db4('0xd'),auth[_0x6db4('0x9')](),controller[_0x6db4('0xe')]);router['post']('/',auth[_0x6db4('0x9')](),controller[_0x6db4('0xf')]);router['put'](_0x6db4('0xd'),auth['isAuthenticated'](),controller[_0x6db4('0x10')]);router[_0x6db4('0x11')](_0x6db4('0xd'),auth[_0x6db4('0x9')](),controller[_0x6db4('0x12')]);module[_0x6db4('0x13')]=router;
\ No newline at end of file
+var _0x8704=['update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','show','post','put','/:id'];(function(_0x1a9a40,_0x467411){var _0x58c2aa=function(_0x20dfd0){while(--_0x20dfd0){_0x1a9a40['push'](_0x1a9a40['shift']());}};_0x58c2aa(++_0x467411);}(_0x8704,0x18f));var _0x4870=function(_0x59616b,_0x38e534){_0x59616b=_0x59616b-0x0;var _0x5c4523=_0x8704[_0x59616b];return _0x5c4523;};'use strict';var multer=require('multer');var util=require(_0x4870('0x0'));var path=require(_0x4870('0x1'));var timeout=require(_0x4870('0x2'));var express=require('express');var router=express[_0x4870('0x3')]();var fs_extra=require(_0x4870('0x4'));var auth=require(_0x4870('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4870('0x6'));router[_0x4870('0x7')]('/',auth[_0x4870('0x8')](),controller[_0x4870('0x9')]);router[_0x4870('0x7')](_0x4870('0xa'),auth[_0x4870('0x8')](),controller['describe']);router[_0x4870('0x7')]('/:id',auth[_0x4870('0x8')](),controller[_0x4870('0xb')]);router[_0x4870('0xc')]('/',auth[_0x4870('0x8')](),controller['create']);router[_0x4870('0xd')](_0x4870('0xe'),auth['isAuthenticated'](),controller[_0x4870('0xf')]);router[_0x4870('0x10')](_0x4870('0xe'),auth[_0x4870('0x8')](),controller['destroy']);module[_0x4870('0x11')]=router;
\ No newline at end of file
index 9e5eb39..b67aa9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55f6=['exports','STRING','DATE'];(function(_0x690346,_0x40dc57){var _0x5e4dab=function(_0x52ef75){while(--_0x52ef75){_0x690346['push'](_0x690346['shift']());}};_0x5e4dab(++_0x40dc57);}(_0x55f6,0x159));var _0x655f=function(_0x156a0d,_0x3946ce){_0x156a0d=_0x156a0d-0x0;var _0x98a9ba=_0x55f6[_0x156a0d];return _0x98a9ba;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x655f('0x0')]={'uniqueid':{'type':Sequelize[_0x655f('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x655f('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x655f('0x2')]},'exitAt':{'type':Sequelize[_0x655f('0x2')]},'reason':{'type':Sequelize[_0x655f('0x1')]}};
\ No newline at end of file
+var _0x0d04=['moment','sequelize','exports','STRING','DATE'];(function(_0x3ba924,_0x3b99f0){var _0x4cc1df=function(_0x15bf28){while(--_0x15bf28){_0x3ba924['push'](_0x3ba924['shift']());}};_0x4cc1df(++_0x3b99f0);}(_0x0d04,0x15e));var _0x40d0=function(_0x3a85ab,_0x1f3525){_0x3a85ab=_0x3a85ab-0x0;var _0x32d91a=_0x0d04[_0x3a85ab];return _0x32d91a;};'use strict';var moment=require(_0x40d0('0x0'));var Sequelize=require(_0x40d0('0x1'));module[_0x40d0('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x40d0('0x3')]},'joinAt':{'type':Sequelize[_0x40d0('0x4')]},'leaveAt':{'type':Sequelize[_0x40d0('0x4')]},'acceptAt':{'type':Sequelize[_0x40d0('0x4')]},'exitAt':{'type':Sequelize[_0x40d0('0x4')]},'reason':{'type':Sequelize[_0x40d0('0x3')]}};
\ No newline at end of file
index 760a700..7abe08d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd91e=['describe','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','OpenchannelQueueReport','includeAll','include','show','params','find','create','body','catch'];(function(_0x130907,_0x25b778){var _0x3219cb=function(_0x5112d8){while(--_0x5112d8){_0x130907['push'](_0x130907['shift']());}};_0x3219cb(++_0x25b778);}(_0xd91e,0x1c9));var _0xed91=function(_0x2bc894,_0x486766){_0x2bc894=_0x2bc894-0x0;var _0x49c135=_0xd91e[_0x2bc894];return _0x49c135;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xed91('0x0'));var zipdir=require(_0xed91('0x1'));var jsonpatch=require(_0xed91('0x2'));var rp=require(_0xed91('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xed91('0x4'));var util=require(_0xed91('0x5'));var path=require('path');var sox=require(_0xed91('0x6'));var csv=require(_0xed91('0x7'));var ejs=require(_0xed91('0x8'));var fs=require('fs');var fs_extra=require(_0xed91('0x9'));var _=require(_0xed91('0xa'));var squel=require('squel');var crypto=require(_0xed91('0xb'));var jsforce=require(_0xed91('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xed91('0xd'));var Papa=require(_0xed91('0xe'));var Redis=require(_0xed91('0xf'));var authService=require(_0xed91('0x10'));var qs=require(_0xed91('0x11'));var as=require(_0xed91('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xed91('0x13'))(_0xed91('0x14'));var utils=require(_0xed91('0x15'));var config=require(_0xed91('0x16'));var licenseUtil=require(_0xed91('0x17'));var db=require(_0xed91('0x18'))['db'];function respondWithStatusCode(_0xf68dd0,_0x5e2e57){_0x5e2e57=_0x5e2e57||0xcc;return function(_0x3f3ebe){if(_0x3f3ebe){return _0xf68dd0[_0xed91('0x19')](_0x5e2e57);}return _0xf68dd0[_0xed91('0x1a')](_0x5e2e57)[_0xed91('0x1b')]();};}function respondWithResult(_0x2e4627,_0x456993){_0x456993=_0x456993||0xc8;return function(_0x49884a){if(_0x49884a){return _0x2e4627[_0xed91('0x1a')](_0x456993)[_0xed91('0x1c')](_0x49884a);}};}function respondWithFilteredResult(_0x53fcbd,_0x2a9b03){return function(_0x27f493){if(_0x27f493){var _0xf0d33a=typeof _0x2a9b03[_0xed91('0x1d')]===_0xed91('0x1e')&&typeof _0x2a9b03[_0xed91('0x1f')]===_0xed91('0x1e');var _0x1ef6f3=_0x27f493[_0xed91('0x20')];var _0xb00636=_0xf0d33a?0x0:_0x2a9b03[_0xed91('0x1d')];var _0x145795=_0xf0d33a?_0x27f493[_0xed91('0x20')]:_0x2a9b03['offset']+_0x2a9b03[_0xed91('0x1f')];var _0x4ff73f;if(_0x145795>=_0x1ef6f3){_0x145795=_0x1ef6f3;_0x4ff73f=0xc8;}else{_0x4ff73f=0xce;}_0x53fcbd[_0xed91('0x1a')](_0x4ff73f);return _0x53fcbd[_0xed91('0x21')](_0xed91('0x22'),_0xb00636+'-'+_0x145795+'/'+_0x1ef6f3)[_0xed91('0x1c')](_0x27f493);}return null;};}function patchUpdates(_0xef7cf){return function(_0x433213){try{jsonpatch[_0xed91('0x23')](_0x433213,_0xef7cf,!![]);}catch(_0x2c61f9){return BPromise['reject'](_0x2c61f9);}return _0x433213[_0xed91('0x24')]();};}function saveUpdates(_0x19372b,_0x130799){return function(_0x48fb22){if(_0x48fb22){return _0x48fb22[_0xed91('0x25')](_0x19372b)[_0xed91('0x26')](function(_0x1a28fd){return _0x1a28fd;});}return null;};}function removeEntity(_0x116dd6,_0x444d17){return function(_0xba98e8){if(_0xba98e8){return _0xba98e8[_0xed91('0x27')]()[_0xed91('0x26')](function(){_0x116dd6[_0xed91('0x1a')](0xcc)[_0xed91('0x1b')]();});}};}function handleEntityNotFound(_0x2623f5,_0x134ef6){return function(_0x27e350){if(!_0x27e350){_0x2623f5[_0xed91('0x19')](0x194);}return _0x27e350;};}function handleError(_0x2cc335,_0x4fabce){_0x4fabce=_0x4fabce||0x1f4;return function(_0x124891){logger[_0xed91('0x28')](_0x124891[_0xed91('0x29')]);if(_0x124891[_0xed91('0x2a')]){delete _0x124891['name'];}_0x2cc335[_0xed91('0x1a')](_0x4fabce)['send'](_0x124891);};}exports[_0xed91('0x2b')]=function(_0x2cee07,_0xba0e80){var _0x3f57db={},_0x400a55={},_0x3e06c0={'count':0x0,'rows':[]};var _0x41391f=_['map'](db['OpenchannelQueueReport'][_0xed91('0x2c')],function(_0x4919c5){return{'name':_0x4919c5[_0xed91('0x2d')],'type':_0x4919c5[_0xed91('0x2e')][_0xed91('0x2f')]};});_0x400a55[_0xed91('0x30')]=_[_0xed91('0x31')](_0x41391f,_0xed91('0x2a'));_0x400a55[_0xed91('0x32')]=_[_0xed91('0x33')](_0x2cee07[_0xed91('0x32')]);_0x400a55[_0xed91('0x34')]=_['intersection'](_0x400a55[_0xed91('0x30')],_0x400a55[_0xed91('0x32')]);_0x3f57db['attributes']=_[_0xed91('0x35')](_0x400a55[_0xed91('0x30')],qs[_0xed91('0x36')](_0x2cee07[_0xed91('0x32')][_0xed91('0x36')]));_0x3f57db[_0xed91('0x37')]=_0x3f57db[_0xed91('0x37')][_0xed91('0x38')]?_0x3f57db[_0xed91('0x37')]:_0x400a55['model'];if(!_0x2cee07[_0xed91('0x32')]['hasOwnProperty'](_0xed91('0x39'))){_0x3f57db[_0xed91('0x1f')]=qs[_0xed91('0x1f')](_0x2cee07[_0xed91('0x32')][_0xed91('0x1f')]);_0x3f57db[_0xed91('0x1d')]=qs[_0xed91('0x1d')](_0x2cee07[_0xed91('0x32')][_0xed91('0x1d')]);}_0x3f57db[_0xed91('0x3a')]=qs['sort'](_0x2cee07['query'][_0xed91('0x3b')]);_0x3f57db[_0xed91('0x3c')]=qs[_0xed91('0x34')](_[_0xed91('0x3d')](_0x2cee07[_0xed91('0x32')],_0x400a55[_0xed91('0x34')]),_0x41391f);if(_0x2cee07['query'][_0xed91('0x3e')]){_0x3f57db[_0xed91('0x3c')]=_['merge'](_0x3f57db[_0xed91('0x3c')],{'$or':_[_0xed91('0x31')](_0x41391f,function(_0x30b398){if(_0x30b398[_0xed91('0x2e')]!==_0xed91('0x3f')){var _0x1a7402={};_0x1a7402[_0x30b398[_0xed91('0x2a')]]={'$like':'%'+_0x2cee07[_0xed91('0x32')][_0xed91('0x3e')]+'%'};return _0x1a7402;}})});}_0x3f57db=_[_0xed91('0x40')]({},_0x3f57db,_0x2cee07[_0xed91('0x41')]);var _0x1d4243={'where':_0x3f57db['where']};return db[_0xed91('0x42')][_0xed91('0x20')](_0x1d4243)[_0xed91('0x26')](function(_0x3c09a6){_0x3e06c0[_0xed91('0x20')]=_0x3c09a6;if(_0x2cee07['query'][_0xed91('0x43')]){_0x3f57db[_0xed91('0x44')]=[{'all':!![]}];}return db[_0xed91('0x42')]['findAll'](_0x3f57db);})[_0xed91('0x26')](function(_0x1f1e17){_0x3e06c0['rows']=_0x1f1e17;return _0x3e06c0;})[_0xed91('0x26')](respondWithFilteredResult(_0xba0e80,_0x3f57db))['catch'](handleError(_0xba0e80,null));};exports[_0xed91('0x45')]=function(_0x53ece1,_0x30c768){var _0x2bfb39={'raw':!![],'where':{'id':_0x53ece1[_0xed91('0x46')]['id']}},_0x3afb46={};_0x3afb46[_0xed91('0x30')]=_[_0xed91('0x33')](db['OpenchannelQueueReport'][_0xed91('0x2c')]);_0x3afb46[_0xed91('0x32')]=_[_0xed91('0x33')](_0x53ece1[_0xed91('0x32')]);_0x3afb46['filters']=_[_0xed91('0x35')](_0x3afb46['model'],_0x3afb46[_0xed91('0x32')]);_0x2bfb39[_0xed91('0x37')]=_[_0xed91('0x35')](_0x3afb46['model'],qs[_0xed91('0x36')](_0x53ece1[_0xed91('0x32')][_0xed91('0x36')]));_0x2bfb39[_0xed91('0x37')]=_0x2bfb39['attributes']['length']?_0x2bfb39[_0xed91('0x37')]:_0x3afb46[_0xed91('0x30')];if(_0x53ece1[_0xed91('0x32')][_0xed91('0x43')]){_0x2bfb39[_0xed91('0x44')]=[{'all':!![]}];}_0x2bfb39=_[_0xed91('0x40')]({},_0x2bfb39,_0x53ece1[_0xed91('0x41')]);return db[_0xed91('0x42')][_0xed91('0x47')](_0x2bfb39)[_0xed91('0x26')](handleEntityNotFound(_0x30c768,null))['then'](respondWithResult(_0x30c768,null))['catch'](handleError(_0x30c768,null));};exports[_0xed91('0x48')]=function(_0x3d4bff,_0x1c17ef){return db['OpenchannelQueueReport'][_0xed91('0x48')](_0x3d4bff[_0xed91('0x49')],{})[_0xed91('0x26')](respondWithResult(_0x1c17ef,0xc9))[_0xed91('0x4a')](handleError(_0x1c17ef,null));};exports['update']=function(_0x5c988d,_0x3e7d31){if(_0x5c988d[_0xed91('0x49')]['id']){delete _0x5c988d[_0xed91('0x49')]['id'];}return db[_0xed91('0x42')][_0xed91('0x47')]({'where':{'id':_0x5c988d[_0xed91('0x46')]['id']}})[_0xed91('0x26')](handleEntityNotFound(_0x3e7d31,null))[_0xed91('0x26')](saveUpdates(_0x5c988d['body'],null))['then'](respondWithResult(_0x3e7d31,null))['catch'](handleError(_0x3e7d31,null));};exports['destroy']=function(_0x2b3888,_0x20fff1){return db[_0xed91('0x42')][_0xed91('0x47')]({'where':{'id':_0x2b3888[_0xed91('0x46')]['id']}})[_0xed91('0x26')](handleEntityNotFound(_0x20fff1,null))['then'](removeEntity(_0x20fff1,null))[_0xed91('0x4a')](handleError(_0x20fff1,null));};exports[_0xed91('0x4b')]=function(_0x174ff8,_0x42c15d){return db['OpenchannelQueueReport'][_0xed91('0x4b')]()[_0xed91('0x26')](respondWithResult(_0x42c15d,null))['catch'](handleError(_0x42c15d,null));};
\ No newline at end of file
+var _0x6ce2=['sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','include','findAll','rows','catch','params','includeAll','options','find','create','body','describe','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6ce2,0xd4));var _0x26ce=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x6ce2[_0x18ab2a];return _0x16dcee;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x26ce('0x0'));var jsonpatch=require(_0x26ce('0x1'));var rp=require(_0x26ce('0x2'));var moment=require('moment');var BPromise=require(_0x26ce('0x3'));var Mustache=require(_0x26ce('0x4'));var util=require(_0x26ce('0x5'));var path=require(_0x26ce('0x6'));var sox=require(_0x26ce('0x7'));var csv=require(_0x26ce('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26ce('0x9'));var squel=require(_0x26ce('0xa'));var crypto=require(_0x26ce('0xb'));var jsforce=require(_0x26ce('0xc'));var deskjs=require(_0x26ce('0xd'));var toCsv=require('to-csv');var querystring=require(_0x26ce('0xe'));var Papa=require(_0x26ce('0xf'));var Redis=require(_0x26ce('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x26ce('0x11'));var hardwareService=require(_0x26ce('0x12'));var logger=require(_0x26ce('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x26ce('0x14'))['db'];function respondWithStatusCode(_0x253b6e,_0x45b59a){_0x45b59a=_0x45b59a||0xcc;return function(_0x2791b3){if(_0x2791b3){return _0x253b6e['sendStatus'](_0x45b59a);}return _0x253b6e['status'](_0x45b59a)['end']();};}function respondWithResult(_0x28892f,_0x289636){_0x289636=_0x289636||0xc8;return function(_0xe626b5){if(_0xe626b5){return _0x28892f[_0x26ce('0x15')](_0x289636)[_0x26ce('0x16')](_0xe626b5);}};}function respondWithFilteredResult(_0x3b7f78,_0x249c3c){return function(_0x1f1800){if(_0x1f1800){var _0x23a927=typeof _0x249c3c[_0x26ce('0x17')]===_0x26ce('0x18')&&typeof _0x249c3c[_0x26ce('0x19')]===_0x26ce('0x18');var _0x2d5358=_0x1f1800[_0x26ce('0x1a')];var _0x44a113=_0x23a927?0x0:_0x249c3c[_0x26ce('0x17')];var _0x530dc2=_0x23a927?_0x1f1800[_0x26ce('0x1a')]:_0x249c3c[_0x26ce('0x17')]+_0x249c3c['limit'];var _0x25d9f3;if(_0x530dc2>=_0x2d5358){_0x530dc2=_0x2d5358;_0x25d9f3=0xc8;}else{_0x25d9f3=0xce;}_0x3b7f78[_0x26ce('0x15')](_0x25d9f3);return _0x3b7f78[_0x26ce('0x1b')](_0x26ce('0x1c'),_0x44a113+'-'+_0x530dc2+'/'+_0x2d5358)['json'](_0x1f1800);}return null;};}function patchUpdates(_0x4444ae){return function(_0x1c60df){try{jsonpatch[_0x26ce('0x1d')](_0x1c60df,_0x4444ae,!![]);}catch(_0x4752ad){return BPromise[_0x26ce('0x1e')](_0x4752ad);}return _0x1c60df[_0x26ce('0x1f')]();};}function saveUpdates(_0x47d669,_0x284343){return function(_0x147a33){if(_0x147a33){return _0x147a33[_0x26ce('0x20')](_0x47d669)[_0x26ce('0x21')](function(_0x318f31){return _0x318f31;});}return null;};}function removeEntity(_0x2214fe,_0x2726bd){return function(_0xc0c669){if(_0xc0c669){return _0xc0c669[_0x26ce('0x22')]()[_0x26ce('0x21')](function(){_0x2214fe[_0x26ce('0x15')](0xcc)[_0x26ce('0x23')]();});}};}function handleEntityNotFound(_0x145eb4,_0x124aa8){return function(_0x43bc25){if(!_0x43bc25){_0x145eb4['sendStatus'](0x194);}return _0x43bc25;};}function handleError(_0x3a85fc,_0x2a2088){_0x2a2088=_0x2a2088||0x1f4;return function(_0x14719a){logger[_0x26ce('0x24')](_0x14719a['stack']);if(_0x14719a[_0x26ce('0x25')]){delete _0x14719a[_0x26ce('0x25')];}_0x3a85fc[_0x26ce('0x15')](_0x2a2088)[_0x26ce('0x26')](_0x14719a);};}exports[_0x26ce('0x27')]=function(_0x57ab97,_0x4b7f6a){var _0x2cfd97={},_0x169352={},_0x96c3a3={'count':0x0,'rows':[]};var _0x75fe87=_[_0x26ce('0x28')](db[_0x26ce('0x29')][_0x26ce('0x2a')],function(_0x44a7ef){return{'name':_0x44a7ef[_0x26ce('0x2b')],'type':_0x44a7ef[_0x26ce('0x2c')][_0x26ce('0x2d')]};});_0x169352[_0x26ce('0x2e')]=_[_0x26ce('0x28')](_0x75fe87,_0x26ce('0x25'));_0x169352['query']=_[_0x26ce('0x2f')](_0x57ab97['query']);_0x169352['filters']=_['intersection'](_0x169352[_0x26ce('0x2e')],_0x169352[_0x26ce('0x30')]);_0x2cfd97[_0x26ce('0x31')]=_[_0x26ce('0x32')](_0x169352[_0x26ce('0x2e')],qs[_0x26ce('0x33')](_0x57ab97[_0x26ce('0x30')][_0x26ce('0x33')]));_0x2cfd97[_0x26ce('0x31')]=_0x2cfd97[_0x26ce('0x31')][_0x26ce('0x34')]?_0x2cfd97[_0x26ce('0x31')]:_0x169352[_0x26ce('0x2e')];if(!_0x57ab97[_0x26ce('0x30')][_0x26ce('0x35')](_0x26ce('0x36'))){_0x2cfd97[_0x26ce('0x19')]=qs['limit'](_0x57ab97['query']['limit']);_0x2cfd97[_0x26ce('0x17')]=qs[_0x26ce('0x17')](_0x57ab97[_0x26ce('0x30')][_0x26ce('0x17')]);}_0x2cfd97[_0x26ce('0x37')]=qs[_0x26ce('0x38')](_0x57ab97[_0x26ce('0x30')][_0x26ce('0x38')]);_0x2cfd97[_0x26ce('0x39')]=qs[_0x26ce('0x3a')](_[_0x26ce('0x3b')](_0x57ab97[_0x26ce('0x30')],_0x169352['filters']),_0x75fe87);if(_0x57ab97[_0x26ce('0x30')][_0x26ce('0x3c')]){_0x2cfd97['where']=_['merge'](_0x2cfd97['where'],{'$or':_['map'](_0x75fe87,function(_0x38e43b){if(_0x38e43b['type']!==_0x26ce('0x3d')){var _0x29741c={};_0x29741c[_0x38e43b[_0x26ce('0x25')]]={'$like':'%'+_0x57ab97[_0x26ce('0x30')][_0x26ce('0x3c')]+'%'};return _0x29741c;}})});}_0x2cfd97=_['merge']({},_0x2cfd97,_0x57ab97['options']);var _0x1e5d29={'where':_0x2cfd97[_0x26ce('0x39')]};return db[_0x26ce('0x29')][_0x26ce('0x1a')](_0x1e5d29)[_0x26ce('0x21')](function(_0x40ec9d){_0x96c3a3[_0x26ce('0x1a')]=_0x40ec9d;if(_0x57ab97[_0x26ce('0x30')]['includeAll']){_0x2cfd97[_0x26ce('0x3e')]=[{'all':!![]}];}return db[_0x26ce('0x29')][_0x26ce('0x3f')](_0x2cfd97);})['then'](function(_0x2d3ff0){_0x96c3a3[_0x26ce('0x40')]=_0x2d3ff0;return _0x96c3a3;})[_0x26ce('0x21')](respondWithFilteredResult(_0x4b7f6a,_0x2cfd97))[_0x26ce('0x41')](handleError(_0x4b7f6a,null));};exports['show']=function(_0x1cca2b,_0x440073){var _0xc12201={'raw':!![],'where':{'id':_0x1cca2b[_0x26ce('0x42')]['id']}},_0x46c7ce={};_0x46c7ce[_0x26ce('0x2e')]=_['keys'](db['OpenchannelQueueReport'][_0x26ce('0x2a')]);_0x46c7ce[_0x26ce('0x30')]=_[_0x26ce('0x2f')](_0x1cca2b[_0x26ce('0x30')]);_0x46c7ce['filters']=_[_0x26ce('0x32')](_0x46c7ce[_0x26ce('0x2e')],_0x46c7ce['query']);_0xc12201['attributes']=_[_0x26ce('0x32')](_0x46c7ce[_0x26ce('0x2e')],qs[_0x26ce('0x33')](_0x1cca2b['query'][_0x26ce('0x33')]));_0xc12201[_0x26ce('0x31')]=_0xc12201[_0x26ce('0x31')]['length']?_0xc12201[_0x26ce('0x31')]:_0x46c7ce[_0x26ce('0x2e')];if(_0x1cca2b[_0x26ce('0x30')][_0x26ce('0x43')]){_0xc12201[_0x26ce('0x3e')]=[{'all':!![]}];}_0xc12201=_['merge']({},_0xc12201,_0x1cca2b[_0x26ce('0x44')]);return db[_0x26ce('0x29')][_0x26ce('0x45')](_0xc12201)[_0x26ce('0x21')](handleEntityNotFound(_0x440073,null))[_0x26ce('0x21')](respondWithResult(_0x440073,null))[_0x26ce('0x41')](handleError(_0x440073,null));};exports[_0x26ce('0x46')]=function(_0x19e69e,_0x155b17){return db['OpenchannelQueueReport'][_0x26ce('0x46')](_0x19e69e[_0x26ce('0x47')],{})[_0x26ce('0x21')](respondWithResult(_0x155b17,0xc9))[_0x26ce('0x41')](handleError(_0x155b17,null));};exports['update']=function(_0x3e9376,_0x159491){if(_0x3e9376[_0x26ce('0x47')]['id']){delete _0x3e9376['body']['id'];}return db[_0x26ce('0x29')][_0x26ce('0x45')]({'where':{'id':_0x3e9376['params']['id']}})[_0x26ce('0x21')](handleEntityNotFound(_0x159491,null))[_0x26ce('0x21')](saveUpdates(_0x3e9376[_0x26ce('0x47')],null))[_0x26ce('0x21')](respondWithResult(_0x159491,null))[_0x26ce('0x41')](handleError(_0x159491,null));};exports[_0x26ce('0x22')]=function(_0x48bc23,_0x491bb0){return db['OpenchannelQueueReport'][_0x26ce('0x45')]({'where':{'id':_0x48bc23[_0x26ce('0x42')]['id']}})[_0x26ce('0x21')](handleEntityNotFound(_0x491bb0,null))[_0x26ce('0x21')](removeEntity(_0x491bb0,null))[_0x26ce('0x41')](handleError(_0x491bb0,null));};exports['describe']=function(_0x3a6589,_0x2b3a8e){return db[_0x26ce('0x29')][_0x26ce('0x48')]()['then'](respondWithResult(_0x2b3a8e,null))['catch'](handleError(_0x2b3a8e,null));};
\ No newline at end of file
index 3157e74..611ed56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelQueueReport.attributes','exports'];(function(_0x2c27c6,_0xb57741){var _0x43e0a3=function(_0x1b861f){while(--_0x1b861f){_0x2c27c6['push'](_0x2c27c6['shift']());}};_0x43e0a3(++_0xb57741);}(_0x2ef3,0xba));var _0x32ef=function(_0x5643f8,_0x2ff700){_0x5643f8=_0x5643f8-0x0;var _0x228618=_0x2ef3[_0x5643f8];return _0x228618;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var logger=require(_0x32ef('0x2'))(_0x32ef('0x3'));var moment=require(_0x32ef('0x4'));var BPromise=require(_0x32ef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32ef('0x6'));var rimraf=require(_0x32ef('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ef('0x8'));module[_0x32ef('0x9')]=function(_0x4c8104,_0x5dfa09){return _0x4c8104[_0x32ef('0xa')](_0x32ef('0xb'),attributes,{'tableName':_0x32ef('0xc'),'paranoid':![],'indexes':[{'name':_0x32ef('0xd'),'fields':[_0x32ef('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0xad2147,_0x111228){var _0x200af7=function(_0x242f36){while(--_0x242f36){_0xad2147['push'](_0xad2147['shift']());}};_0x200af7(++_0x111228);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xc4aa[_0x21549c];return _0x426cbd;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 1dfbe1c..82926c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a5=['UpdateOpenchannelQueueReport','update','where','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','request\x20sent','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','raw','catch'];(function(_0x534440,_0xf33b0d){var _0x47bbd9=function(_0x13a4dd){while(--_0x13a4dd){_0x534440['push'](_0x534440['shift']());}};_0x47bbd9(++_0xf33b0d);}(_0x68a5,0xfc));var _0x568a=function(_0x50a3d9,_0x373bc1){_0x50a3d9=_0x50a3d9-0x0;var _0x102aaf=_0x68a5[_0x50a3d9];return _0x102aaf;};'use strict';var _=require(_0x568a('0x0'));var util=require('util');var moment=require(_0x568a('0x1'));var BPromise=require(_0x568a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x568a('0x3'));var db=require(_0x568a('0x4'))['db'];var utils=require(_0x568a('0x5'));var logger=require(_0x568a('0x6'))('rpc');var config=require(_0x568a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x568a('0x8')][_0x568a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2d36ec,_0x3a7a9c,_0x4cda9a){return new BPromise(function(_0x172efd,_0x56deb6){return client[_0x568a('0xa')](_0x2d36ec,_0x4cda9a)[_0x568a('0xb')](function(_0x335ecd){logger[_0x568a('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3a7a9c,'request\x20sent');logger[_0x568a('0xd')](_0x568a('0xe'),_0x3a7a9c,'request\x20sent',JSON[_0x568a('0xf')](_0x335ecd));if(_0x335ecd['error']){if(_0x335ecd[_0x568a('0x10')][_0x568a('0x11')]===0x1f4){logger[_0x568a('0x10')](_0x568a('0x12'),_0x3a7a9c,_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);return _0x56deb6(_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);}logger[_0x568a('0x10')](_0x568a('0x12'),_0x3a7a9c,_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);return _0x172efd(_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);}else{logger[_0x568a('0xc')](_0x568a('0x12'),_0x3a7a9c,_0x568a('0x14'));_0x172efd(_0x335ecd['result'][_0x568a('0x13')]);}})['catch'](function(_0xa77de8){logger[_0x568a('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3a7a9c,_0xa77de8);_0x56deb6(_0xa77de8);});});}exports[_0x568a('0x15')]=function(_0x561ae1){var _0x40d4a1=this;return new Promise(function(_0x1c8e3a,_0x9b4670){return db[_0x568a('0x16')]['create'](_0x561ae1[_0x568a('0x17')],{'raw':_0x561ae1['options']?_0x561ae1[_0x568a('0x18')][_0x568a('0x19')]===undefined?!![]:![]:!![]})[_0x568a('0xb')](function(_0x3b9968){logger[_0x568a('0xc')](_0x568a('0x15'),_0x561ae1);logger[_0x568a('0xd')](_0x568a('0x15'),_0x561ae1,JSON['stringify'](_0x3b9968));_0x1c8e3a(_0x3b9968);})[_0x568a('0x1a')](function(_0x1f12b5){logger['error'](_0x568a('0x15'),_0x1f12b5[_0x568a('0x13')],_0x561ae1);_0x9b4670(_0x40d4a1[_0x568a('0x10')](0x1f4,_0x1f12b5['message']));});});};exports[_0x568a('0x1b')]=function(_0x378f0e){var _0x1d5329=this;return new Promise(function(_0x1df7ab,_0xdb83a1){return db[_0x568a('0x16')][_0x568a('0x1c')](_0x378f0e[_0x568a('0x17')],{'raw':_0x378f0e[_0x568a('0x18')]?_0x378f0e['options'][_0x568a('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x378f0e[_0x568a('0x18')]?_0x378f0e[_0x568a('0x18')][_0x568a('0x1d')]||null:null,'attributes':_0x378f0e[_0x568a('0x18')]?_0x378f0e[_0x568a('0x18')]['attributes']||null:null,'limit':_0x378f0e[_0x568a('0x18')]?_0x378f0e[_0x568a('0x18')][_0x568a('0x1e')]||null:null})[_0x568a('0xb')](function(_0x20498b){logger['info'](_0x568a('0x1b'),_0x378f0e);logger[_0x568a('0xd')](_0x568a('0x1b'),_0x378f0e,JSON[_0x568a('0xf')](_0x20498b));_0x1df7ab(_0x20498b);})[_0x568a('0x1a')](function(_0x153e1a){logger[_0x568a('0x10')](_0x568a('0x1b'),_0x153e1a[_0x568a('0x13')],_0x378f0e);_0xdb83a1(_0x1d5329[_0x568a('0x10')](0x1f4,_0x153e1a['message']));});});};
\ No newline at end of file
+var _0xde9f=['client','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','OpenchannelQueueReport','options','raw','CreateOpenchannelQueueReport','catch','UpdateOpenchannelQueueReport','update','body','where','attributes','limit','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xde9f,0x118));var _0xfde9=function(_0x56fb33,_0x37be08){_0x56fb33=_0x56fb33-0x0;var _0x435ee4=_0xde9f[_0x56fb33];return _0x435ee4;};'use strict';var _=require(_0xfde9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfde9('0x1'));var rs=require(_0xfde9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfde9('0x3'))['db'];var utils=require(_0xfde9('0x4'));var logger=require('../../config/logger')(_0xfde9('0x5'));var config=require(_0xfde9('0x6'));var jayson=require(_0xfde9('0x7'));var client=jayson[_0xfde9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c3e01,_0x179ee0,_0x18a202){return new BPromise(function(_0x5569c2,_0x19a337){return client[_0xfde9('0x9')](_0x4c3e01,_0x18a202)[_0xfde9('0xa')](function(_0x3b775d){logger[_0xfde9('0xb')](_0xfde9('0xc'),_0x179ee0,_0xfde9('0xd'));logger[_0xfde9('0xe')](_0xfde9('0xf'),_0x179ee0,_0xfde9('0xd'),JSON[_0xfde9('0x10')](_0x3b775d));if(_0x3b775d[_0xfde9('0x11')]){if(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x12')]===0x1f4){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x179ee0,_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);return _0x19a337(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);}logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x179ee0,_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);return _0x5569c2(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);}else{logger[_0xfde9('0xb')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x179ee0,_0xfde9('0xd'));_0x5569c2(_0x3b775d[_0xfde9('0x14')][_0xfde9('0x13')]);}})['catch'](function(_0x31b1c7){logger[_0xfde9('0x11')](_0xfde9('0xc'),_0x179ee0,_0x31b1c7);_0x19a337(_0x31b1c7);});});}exports['CreateOpenchannelQueueReport']=function(_0x4c9f24){var _0x5eb89e=this;return new Promise(function(_0x544f19,_0x166f1c){return db[_0xfde9('0x15')]['create'](_0x4c9f24['body'],{'raw':_0x4c9f24[_0xfde9('0x16')]?_0x4c9f24[_0xfde9('0x16')][_0xfde9('0x17')]===undefined?!![]:![]:!![]})[_0xfde9('0xa')](function(_0x162b07){logger[_0xfde9('0xb')](_0xfde9('0x18'),_0x4c9f24);logger[_0xfde9('0xe')](_0xfde9('0x18'),_0x4c9f24,JSON[_0xfde9('0x10')](_0x162b07));_0x544f19(_0x162b07);})[_0xfde9('0x19')](function(_0x28d189){logger['error'](_0xfde9('0x18'),_0x28d189['message'],_0x4c9f24);_0x166f1c(_0x5eb89e[_0xfde9('0x11')](0x1f4,_0x28d189[_0xfde9('0x13')]));});});};exports[_0xfde9('0x1a')]=function(_0x5d0a74){var _0x12e3e7=this;return new Promise(function(_0x10e809,_0x53733b){return db[_0xfde9('0x15')][_0xfde9('0x1b')](_0x5d0a74[_0xfde9('0x1c')],{'raw':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x1d')]||null:null,'attributes':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x1e')]||null:null,'limit':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x1f')]||null:null})[_0xfde9('0xa')](function(_0x4b7956){logger['info'](_0xfde9('0x1a'),_0x5d0a74);logger[_0xfde9('0xe')]('UpdateOpenchannelQueueReport',_0x5d0a74,JSON[_0xfde9('0x10')](_0x4b7956));_0x10e809(_0x4b7956);})[_0xfde9('0x19')](function(_0x1651e0){logger[_0xfde9('0x11')](_0xfde9('0x1a'),_0x1651e0['message'],_0x5d0a74);_0x53733b(_0x12e3e7[_0xfde9('0x11')](0x1f4,_0x1651e0[_0xfde9('0x13')]));});});};
\ No newline at end of file
index f1ca02f..06f0cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb842=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x57d13b,_0x52d8cb){var _0x467696=function(_0x153000){while(--_0x153000){_0x57d13b['push'](_0x57d13b['shift']());}};_0x467696(++_0x52d8cb);}(_0xb842,0xbd));var _0x2b84=function(_0x40bc01,_0x22a9a9){_0x40bc01=_0x40bc01-0x0;var _0x42365b=_0xb842[_0x40bc01];return _0x42365b;};'use strict';var multer=require(_0x2b84('0x0'));var util=require(_0x2b84('0x1'));var path=require(_0x2b84('0x2'));var timeout=require(_0x2b84('0x3'));var express=require(_0x2b84('0x4'));var router=express[_0x2b84('0x5')]();var fs_extra=require(_0x2b84('0x6'));var auth=require(_0x2b84('0x7'));var interaction=require(_0x2b84('0x8'));var config=require(_0x2b84('0x9'));var controller=require(_0x2b84('0xa'));router[_0x2b84('0xb')]('/',auth[_0x2b84('0xc')](),controller[_0x2b84('0xd')]);router[_0x2b84('0xb')](_0x2b84('0xe'),auth[_0x2b84('0xc')](),controller[_0x2b84('0xf')]);router['get'](_0x2b84('0x10'),auth['isAuthenticated'](),controller[_0x2b84('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x2b84('0x12')](_0x2b84('0x10'),auth[_0x2b84('0xc')](),controller[_0x2b84('0x13')]);router[_0x2b84('0x14')](_0x2b84('0x10'),auth[_0x2b84('0xc')](),controller[_0x2b84('0x15')]);module[_0x2b84('0x16')]=router;
\ No newline at end of file
+var _0xb1f0=['show','post','create','put','update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x140cad,_0x4cf270){var _0x5cb741=function(_0x9bb428){while(--_0x9bb428){_0x140cad['push'](_0x140cad['shift']());}};_0x5cb741(++_0x4cf270);}(_0xb1f0,0x157));var _0x0b1f=function(_0x1b464a,_0x1517ee){_0x1b464a=_0x1b464a-0x0;var _0xde94f3=_0xb1f0[_0x1b464a];return _0xde94f3;};'use strict';var multer=require(_0x0b1f('0x0'));var util=require(_0x0b1f('0x1'));var path=require('path');var timeout=require(_0x0b1f('0x2'));var express=require('express');var router=express[_0x0b1f('0x3')]();var fs_extra=require(_0x0b1f('0x4'));var auth=require(_0x0b1f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0b1f('0x6'));var controller=require(_0x0b1f('0x7'));router[_0x0b1f('0x8')]('/',auth[_0x0b1f('0x9')](),controller[_0x0b1f('0xa')]);router[_0x0b1f('0x8')](_0x0b1f('0xb'),auth['isAuthenticated'](),controller[_0x0b1f('0xc')]);router['get'](_0x0b1f('0xd'),auth[_0x0b1f('0x9')](),controller[_0x0b1f('0xe')]);router[_0x0b1f('0xf')]('/',auth[_0x0b1f('0x9')](),controller[_0x0b1f('0x10')]);router[_0x0b1f('0x11')](_0x0b1f('0xd'),auth['isAuthenticated'](),controller[_0x0b1f('0x12')]);router[_0x0b1f('0x13')](_0x0b1f('0xd'),auth[_0x0b1f('0x9')](),controller[_0x0b1f('0x14')]);module['exports']=router;
\ No newline at end of file
index 52db415..b36ef5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x2581b1,_0x3ad971){var _0x41f148=function(_0x1716a7){while(--_0x1716a7){_0x2581b1['push'](_0x2581b1['shift']());}};_0x41f148(++_0x3ad971);}(_0xf3cd,0xfe));var _0xdf3c=function(_0xe2ebaa,_0x138483){_0xe2ebaa=_0xe2ebaa-0x0;var _0x563838=_0xf3cd[_0xe2ebaa];return _0x563838;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0xf8973d,_0x56a803){var _0x1c46bc=function(_0x455f2d){while(--_0x455f2d){_0xf8973d['push'](_0xf8973d['shift']());}};_0x1c46bc(++_0x56a803);}(_0x54ef,0x112));var _0xf54e=function(_0x2c8cae,_0x277b1d){_0x2c8cae=_0x2c8cae-0x0;var _0x193610=_0x54ef[_0x2c8cae];return _0x193610;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index 2524e99..7dffc20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e2=['../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x21cd37,_0x3292d2){var _0xdc3db=function(_0x44eee1){while(--_0x44eee1){_0x21cd37['push'](_0x21cd37['shift']());}};_0xdc3db(++_0x3292d2);}(_0x98e2,0x113));var _0x298e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x98e2[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x298e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x298e('0x1'));var jsonpatch=require(_0x298e('0x2'));var rp=require(_0x298e('0x3'));var moment=require(_0x298e('0x4'));var BPromise=require(_0x298e('0x5'));var Mustache=require(_0x298e('0x6'));var util=require(_0x298e('0x7'));var path=require('path');var sox=require(_0x298e('0x8'));var csv=require(_0x298e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x298e('0xa'));var _=require('lodash');var squel=require(_0x298e('0xb'));var crypto=require(_0x298e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x298e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x298e('0xe'));var Papa=require(_0x298e('0xf'));var Redis=require(_0x298e('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x298e('0x11'));var logger=require('../../config/logger')(_0x298e('0x12'));var utils=require('../../config/utils');var config=require(_0x298e('0x13'));var licenseUtil=require(_0x298e('0x14'));var db=require(_0x298e('0x15'))['db'];function respondWithStatusCode(_0x53e743,_0x1f6522){_0x1f6522=_0x1f6522||0xcc;return function(_0x456441){if(_0x456441){return _0x53e743[_0x298e('0x16')](_0x1f6522);}return _0x53e743[_0x298e('0x17')](_0x1f6522)[_0x298e('0x18')]();};}function respondWithResult(_0x59eec0,_0x5c7111){_0x5c7111=_0x5c7111||0xc8;return function(_0x3992d9){if(_0x3992d9){return _0x59eec0[_0x298e('0x17')](_0x5c7111)[_0x298e('0x19')](_0x3992d9);}};}function respondWithFilteredResult(_0x425372,_0x2ec3e3){return function(_0x1c04c2){if(_0x1c04c2){var _0x128499=typeof _0x2ec3e3[_0x298e('0x1a')]==='undefined'&&typeof _0x2ec3e3[_0x298e('0x1b')]==='undefined';var _0x5c642b=_0x1c04c2[_0x298e('0x1c')];var _0x504223=_0x128499?0x0:_0x2ec3e3['offset'];var _0x10d42e=_0x128499?_0x1c04c2['count']:_0x2ec3e3[_0x298e('0x1a')]+_0x2ec3e3['limit'];var _0x10d85a;if(_0x10d42e>=_0x5c642b){_0x10d42e=_0x5c642b;_0x10d85a=0xc8;}else{_0x10d85a=0xce;}_0x425372[_0x298e('0x17')](_0x10d85a);return _0x425372[_0x298e('0x1d')]('Content-Range',_0x504223+'-'+_0x10d42e+'/'+_0x5c642b)['json'](_0x1c04c2);}return null;};}function patchUpdates(_0x49e7f6){return function(_0x2be276){try{jsonpatch[_0x298e('0x1e')](_0x2be276,_0x49e7f6,!![]);}catch(_0x4bddde){return BPromise[_0x298e('0x1f')](_0x4bddde);}return _0x2be276[_0x298e('0x20')]();};}function saveUpdates(_0x12bcc1,_0xfcd86d){return function(_0x41fefa){if(_0x41fefa){return _0x41fefa[_0x298e('0x21')](_0x12bcc1)[_0x298e('0x22')](function(_0x41e55f){return _0x41e55f;});}return null;};}function removeEntity(_0x52014d,_0x75f388){return function(_0x1cbc7d){if(_0x1cbc7d){return _0x1cbc7d[_0x298e('0x23')]()[_0x298e('0x22')](function(){_0x52014d[_0x298e('0x17')](0xcc)[_0x298e('0x18')]();});}};}function handleEntityNotFound(_0x46a590,_0x3ab4c2){return function(_0x7b1d14){if(!_0x7b1d14){_0x46a590[_0x298e('0x16')](0x194);}return _0x7b1d14;};}function handleError(_0x2e9242,_0x5fc679){_0x5fc679=_0x5fc679||0x1f4;return function(_0x15ac3c){logger[_0x298e('0x24')](_0x15ac3c['stack']);if(_0x15ac3c['name']){delete _0x15ac3c[_0x298e('0x25')];}_0x2e9242['status'](_0x5fc679)[_0x298e('0x26')](_0x15ac3c);};}exports[_0x298e('0x27')]=function(_0x2bf744,_0x23252c){var _0x4f0e13={},_0x59e018={},_0x2e245e={'count':0x0,'rows':[]};var _0x385525=_[_0x298e('0x28')](db[_0x298e('0x29')][_0x298e('0x2a')],function(_0x118e1f){return{'name':_0x118e1f[_0x298e('0x2b')],'type':_0x118e1f[_0x298e('0x2c')][_0x298e('0x2d')]};});_0x59e018['model']=_[_0x298e('0x28')](_0x385525,_0x298e('0x25'));_0x59e018[_0x298e('0x2e')]=_[_0x298e('0x2f')](_0x2bf744[_0x298e('0x2e')]);_0x59e018[_0x298e('0x30')]=_[_0x298e('0x31')](_0x59e018['model'],_0x59e018[_0x298e('0x2e')]);_0x4f0e13[_0x298e('0x32')]=_[_0x298e('0x31')](_0x59e018[_0x298e('0x33')],qs[_0x298e('0x34')](_0x2bf744[_0x298e('0x2e')][_0x298e('0x34')]));_0x4f0e13[_0x298e('0x32')]=_0x4f0e13[_0x298e('0x32')][_0x298e('0x35')]?_0x4f0e13[_0x298e('0x32')]:_0x59e018[_0x298e('0x33')];if(!_0x2bf744[_0x298e('0x2e')][_0x298e('0x36')](_0x298e('0x37'))){_0x4f0e13[_0x298e('0x1b')]=qs[_0x298e('0x1b')](_0x2bf744[_0x298e('0x2e')][_0x298e('0x1b')]);_0x4f0e13[_0x298e('0x1a')]=qs['offset'](_0x2bf744[_0x298e('0x2e')][_0x298e('0x1a')]);}_0x4f0e13[_0x298e('0x38')]=qs[_0x298e('0x39')](_0x2bf744[_0x298e('0x2e')][_0x298e('0x39')]);_0x4f0e13[_0x298e('0x3a')]=qs['filters'](_[_0x298e('0x3b')](_0x2bf744[_0x298e('0x2e')],_0x59e018[_0x298e('0x30')]),_0x385525);if(_0x2bf744[_0x298e('0x2e')][_0x298e('0x3c')]){_0x4f0e13[_0x298e('0x3a')]=_[_0x298e('0x3d')](_0x4f0e13[_0x298e('0x3a')],{'$or':_['map'](_0x385525,function(_0x35af71){if(_0x35af71['type']!==_0x298e('0x3e')){var _0x579f83={};_0x579f83[_0x35af71[_0x298e('0x25')]]={'$like':'%'+_0x2bf744[_0x298e('0x2e')][_0x298e('0x3c')]+'%'};return _0x579f83;}})});}_0x4f0e13=_['merge']({},_0x4f0e13,_0x2bf744[_0x298e('0x3f')]);var _0x4c9f7a={'where':_0x4f0e13[_0x298e('0x3a')]};return db['OpenchannelTransferReport'][_0x298e('0x1c')](_0x4c9f7a)[_0x298e('0x22')](function(_0x13ea30){_0x2e245e[_0x298e('0x1c')]=_0x13ea30;if(_0x2bf744[_0x298e('0x2e')]['includeAll']){_0x4f0e13[_0x298e('0x40')]=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0x298e('0x41')](_0x4f0e13);})[_0x298e('0x22')](function(_0x3f5986){_0x2e245e['rows']=_0x3f5986;return _0x2e245e;})[_0x298e('0x22')](respondWithFilteredResult(_0x23252c,_0x4f0e13))[_0x298e('0x42')](handleError(_0x23252c,null));};exports[_0x298e('0x43')]=function(_0x440267,_0xfb48a7){var _0x2e0a4a={'raw':!![],'where':{'id':_0x440267[_0x298e('0x44')]['id']}},_0x478a25={};_0x478a25[_0x298e('0x33')]=_['keys'](db[_0x298e('0x29')][_0x298e('0x2a')]);_0x478a25[_0x298e('0x2e')]=_[_0x298e('0x2f')](_0x440267[_0x298e('0x2e')]);_0x478a25[_0x298e('0x30')]=_[_0x298e('0x31')](_0x478a25[_0x298e('0x33')],_0x478a25[_0x298e('0x2e')]);_0x2e0a4a[_0x298e('0x32')]=_[_0x298e('0x31')](_0x478a25[_0x298e('0x33')],qs[_0x298e('0x34')](_0x440267[_0x298e('0x2e')][_0x298e('0x34')]));_0x2e0a4a[_0x298e('0x32')]=_0x2e0a4a[_0x298e('0x32')][_0x298e('0x35')]?_0x2e0a4a[_0x298e('0x32')]:_0x478a25[_0x298e('0x33')];if(_0x440267['query']['includeAll']){_0x2e0a4a['include']=[{'all':!![]}];}_0x2e0a4a=_[_0x298e('0x3d')]({},_0x2e0a4a,_0x440267[_0x298e('0x3f')]);return db[_0x298e('0x29')][_0x298e('0x45')](_0x2e0a4a)[_0x298e('0x22')](handleEntityNotFound(_0xfb48a7,null))[_0x298e('0x22')](respondWithResult(_0xfb48a7,null))[_0x298e('0x42')](handleError(_0xfb48a7,null));};exports[_0x298e('0x46')]=function(_0x42bc0e,_0x511cb2){return db[_0x298e('0x29')]['create'](_0x42bc0e[_0x298e('0x47')],{})[_0x298e('0x22')](respondWithResult(_0x511cb2,0xc9))[_0x298e('0x42')](handleError(_0x511cb2,null));};exports[_0x298e('0x21')]=function(_0x9f3587,_0x150475){if(_0x9f3587[_0x298e('0x47')]['id']){delete _0x9f3587[_0x298e('0x47')]['id'];}return db[_0x298e('0x29')][_0x298e('0x45')]({'where':{'id':_0x9f3587['params']['id']}})['then'](handleEntityNotFound(_0x150475,null))[_0x298e('0x22')](saveUpdates(_0x9f3587['body'],null))['then'](respondWithResult(_0x150475,null))[_0x298e('0x42')](handleError(_0x150475,null));};exports[_0x298e('0x23')]=function(_0x439bb8,_0x40cc98){return db['OpenchannelTransferReport'][_0x298e('0x45')]({'where':{'id':_0x439bb8[_0x298e('0x44')]['id']}})[_0x298e('0x22')](handleEntityNotFound(_0x40cc98,null))[_0x298e('0x22')](removeEntity(_0x40cc98,null))[_0x298e('0x42')](handleError(_0x40cc98,null));};exports['describe']=function(_0x394b84,_0x580f0f){return db[_0x298e('0x29')][_0x298e('0x48')]()[_0x298e('0x22')](respondWithResult(_0x580f0f,null))[_0x298e('0x42')](handleError(_0x580f0f,null));};
\ No newline at end of file
+var _0xb29f=['offset','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','rawAttributes','key','model','map','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','type','merge','options','includeAll','include','OpenchannelTransferReport','findAll','rows','catch','show','params','keys','length','find','create','update','body','describe','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','count'];(function(_0x40e39a,_0x550275){var _0xa0ab43=function(_0x371f2a){while(--_0x371f2a){_0x40e39a['push'](_0x40e39a['shift']());}};_0xa0ab43(++_0x550275);}(_0xb29f,0x1ae));var _0xfb29=function(_0x9f3516,_0x4c8bef){_0x9f3516=_0x9f3516-0x0;var _0x3eaa34=_0xb29f[_0x9f3516];return _0x3eaa34;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfb29('0x0'));var rp=require('request-promise');var moment=require(_0xfb29('0x1'));var BPromise=require(_0xfb29('0x2'));var Mustache=require(_0xfb29('0x3'));var util=require(_0xfb29('0x4'));var path=require('path');var sox=require(_0xfb29('0x5'));var csv=require('to-csv');var ejs=require(_0xfb29('0x6'));var fs=require('fs');var fs_extra=require(_0xfb29('0x7'));var _=require('lodash');var squel=require(_0xfb29('0x8'));var crypto=require(_0xfb29('0x9'));var jsforce=require(_0xfb29('0xa'));var deskjs=require(_0xfb29('0xb'));var toCsv=require(_0xfb29('0xc'));var querystring=require(_0xfb29('0xd'));var Papa=require(_0xfb29('0xe'));var Redis=require(_0xfb29('0xf'));var authService=require(_0xfb29('0x10'));var qs=require(_0xfb29('0x11'));var as=require(_0xfb29('0x12'));var hardwareService=require(_0xfb29('0x13'));var logger=require(_0xfb29('0x14'))(_0xfb29('0x15'));var utils=require(_0xfb29('0x16'));var config=require(_0xfb29('0x17'));var licenseUtil=require(_0xfb29('0x18'));var db=require(_0xfb29('0x19'))['db'];function respondWithStatusCode(_0x4a2404,_0x19135e){_0x19135e=_0x19135e||0xcc;return function(_0xf8f913){if(_0xf8f913){return _0x4a2404[_0xfb29('0x1a')](_0x19135e);}return _0x4a2404[_0xfb29('0x1b')](_0x19135e)[_0xfb29('0x1c')]();};}function respondWithResult(_0x4a225a,_0x2e6dd1){_0x2e6dd1=_0x2e6dd1||0xc8;return function(_0x12f661){if(_0x12f661){return _0x4a225a[_0xfb29('0x1b')](_0x2e6dd1)[_0xfb29('0x1d')](_0x12f661);}};}function respondWithFilteredResult(_0x3717ec,_0x11034a){return function(_0x394ed5){if(_0x394ed5){var _0x4f4d4e=typeof _0x11034a['offset']==='undefined'&&typeof _0x11034a[_0xfb29('0x1e')]==='undefined';var _0x57d71e=_0x394ed5[_0xfb29('0x1f')];var _0x105367=_0x4f4d4e?0x0:_0x11034a[_0xfb29('0x20')];var _0x27601f=_0x4f4d4e?_0x394ed5[_0xfb29('0x1f')]:_0x11034a[_0xfb29('0x20')]+_0x11034a[_0xfb29('0x1e')];var _0x296893;if(_0x27601f>=_0x57d71e){_0x27601f=_0x57d71e;_0x296893=0xc8;}else{_0x296893=0xce;}_0x3717ec[_0xfb29('0x1b')](_0x296893);return _0x3717ec[_0xfb29('0x21')](_0xfb29('0x22'),_0x105367+'-'+_0x27601f+'/'+_0x57d71e)['json'](_0x394ed5);}return null;};}function patchUpdates(_0x591da1){return function(_0x301b0a){try{jsonpatch[_0xfb29('0x23')](_0x301b0a,_0x591da1,!![]);}catch(_0x4eb198){return BPromise[_0xfb29('0x24')](_0x4eb198);}return _0x301b0a['save']();};}function saveUpdates(_0x5372ef,_0x26bf5f){return function(_0x3377d4){if(_0x3377d4){return _0x3377d4['update'](_0x5372ef)[_0xfb29('0x25')](function(_0x1eb490){return _0x1eb490;});}return null;};}function removeEntity(_0x56bce1,_0x32207f){return function(_0x2ff49e){if(_0x2ff49e){return _0x2ff49e[_0xfb29('0x26')]()[_0xfb29('0x25')](function(){_0x56bce1['status'](0xcc)[_0xfb29('0x1c')]();});}};}function handleEntityNotFound(_0x1173e8,_0xada533){return function(_0x3a3613){if(!_0x3a3613){_0x1173e8[_0xfb29('0x1a')](0x194);}return _0x3a3613;};}function handleError(_0x3aeb6a,_0x2d2e7a){_0x2d2e7a=_0x2d2e7a||0x1f4;return function(_0x293cca){logger[_0xfb29('0x27')](_0x293cca[_0xfb29('0x28')]);if(_0x293cca[_0xfb29('0x29')]){delete _0x293cca[_0xfb29('0x29')];}_0x3aeb6a[_0xfb29('0x1b')](_0x2d2e7a)[_0xfb29('0x2a')](_0x293cca);};}exports[_0xfb29('0x2b')]=function(_0x168368,_0x2dc7d8){var _0x228f3f={},_0x4f3f49={},_0xdf308e={'count':0x0,'rows':[]};var _0x591ad9=_['map'](db['OpenchannelTransferReport'][_0xfb29('0x2c')],function(_0x2e5cba){return{'name':_0x2e5cba['fieldName'],'type':_0x2e5cba['type'][_0xfb29('0x2d')]};});_0x4f3f49[_0xfb29('0x2e')]=_[_0xfb29('0x2f')](_0x591ad9,_0xfb29('0x29'));_0x4f3f49['query']=_['keys'](_0x168368['query']);_0x4f3f49[_0xfb29('0x30')]=_['intersection'](_0x4f3f49[_0xfb29('0x2e')],_0x4f3f49[_0xfb29('0x31')]);_0x228f3f[_0xfb29('0x32')]=_[_0xfb29('0x33')](_0x4f3f49[_0xfb29('0x2e')],qs[_0xfb29('0x34')](_0x168368[_0xfb29('0x31')][_0xfb29('0x34')]));_0x228f3f['attributes']=_0x228f3f[_0xfb29('0x32')]['length']?_0x228f3f['attributes']:_0x4f3f49[_0xfb29('0x2e')];if(!_0x168368[_0xfb29('0x31')][_0xfb29('0x35')](_0xfb29('0x36'))){_0x228f3f['limit']=qs[_0xfb29('0x1e')](_0x168368[_0xfb29('0x31')][_0xfb29('0x1e')]);_0x228f3f[_0xfb29('0x20')]=qs[_0xfb29('0x20')](_0x168368['query']['offset']);}_0x228f3f['order']=qs[_0xfb29('0x37')](_0x168368['query'][_0xfb29('0x37')]);_0x228f3f[_0xfb29('0x38')]=qs['filters'](_[_0xfb29('0x39')](_0x168368[_0xfb29('0x31')],_0x4f3f49[_0xfb29('0x30')]),_0x591ad9);if(_0x168368[_0xfb29('0x31')][_0xfb29('0x3a')]){_0x228f3f[_0xfb29('0x38')]=_['merge'](_0x228f3f[_0xfb29('0x38')],{'$or':_[_0xfb29('0x2f')](_0x591ad9,function(_0x10293){if(_0x10293[_0xfb29('0x3b')]!=='VIRTUAL'){var _0x136efb={};_0x136efb[_0x10293[_0xfb29('0x29')]]={'$like':'%'+_0x168368['query'][_0xfb29('0x3a')]+'%'};return _0x136efb;}})});}_0x228f3f=_[_0xfb29('0x3c')]({},_0x228f3f,_0x168368[_0xfb29('0x3d')]);var _0x5d0bde={'where':_0x228f3f['where']};return db['OpenchannelTransferReport']['count'](_0x5d0bde)[_0xfb29('0x25')](function(_0x768ec9){_0xdf308e[_0xfb29('0x1f')]=_0x768ec9;if(_0x168368[_0xfb29('0x31')][_0xfb29('0x3e')]){_0x228f3f[_0xfb29('0x3f')]=[{'all':!![]}];}return db[_0xfb29('0x40')][_0xfb29('0x41')](_0x228f3f);})[_0xfb29('0x25')](function(_0x5eac3d){_0xdf308e[_0xfb29('0x42')]=_0x5eac3d;return _0xdf308e;})[_0xfb29('0x25')](respondWithFilteredResult(_0x2dc7d8,_0x228f3f))[_0xfb29('0x43')](handleError(_0x2dc7d8,null));};exports[_0xfb29('0x44')]=function(_0x47c245,_0x1bf581){var _0x303905={'raw':!![],'where':{'id':_0x47c245[_0xfb29('0x45')]['id']}},_0x54f231={};_0x54f231[_0xfb29('0x2e')]=_[_0xfb29('0x46')](db[_0xfb29('0x40')][_0xfb29('0x2c')]);_0x54f231[_0xfb29('0x31')]=_[_0xfb29('0x46')](_0x47c245['query']);_0x54f231[_0xfb29('0x30')]=_['intersection'](_0x54f231[_0xfb29('0x2e')],_0x54f231[_0xfb29('0x31')]);_0x303905[_0xfb29('0x32')]=_[_0xfb29('0x33')](_0x54f231[_0xfb29('0x2e')],qs[_0xfb29('0x34')](_0x47c245[_0xfb29('0x31')]['fields']));_0x303905[_0xfb29('0x32')]=_0x303905[_0xfb29('0x32')][_0xfb29('0x47')]?_0x303905['attributes']:_0x54f231[_0xfb29('0x2e')];if(_0x47c245[_0xfb29('0x31')][_0xfb29('0x3e')]){_0x303905[_0xfb29('0x3f')]=[{'all':!![]}];}_0x303905=_[_0xfb29('0x3c')]({},_0x303905,_0x47c245[_0xfb29('0x3d')]);return db[_0xfb29('0x40')][_0xfb29('0x48')](_0x303905)[_0xfb29('0x25')](handleEntityNotFound(_0x1bf581,null))[_0xfb29('0x25')](respondWithResult(_0x1bf581,null))[_0xfb29('0x43')](handleError(_0x1bf581,null));};exports['create']=function(_0x17a187,_0x29673e){return db['OpenchannelTransferReport'][_0xfb29('0x49')](_0x17a187['body'],{})['then'](respondWithResult(_0x29673e,0xc9))[_0xfb29('0x43')](handleError(_0x29673e,null));};exports[_0xfb29('0x4a')]=function(_0xbf2ab9,_0x2a5729){if(_0xbf2ab9[_0xfb29('0x4b')]['id']){delete _0xbf2ab9[_0xfb29('0x4b')]['id'];}return db[_0xfb29('0x40')][_0xfb29('0x48')]({'where':{'id':_0xbf2ab9[_0xfb29('0x45')]['id']}})['then'](handleEntityNotFound(_0x2a5729,null))[_0xfb29('0x25')](saveUpdates(_0xbf2ab9['body'],null))[_0xfb29('0x25')](respondWithResult(_0x2a5729,null))['catch'](handleError(_0x2a5729,null));};exports[_0xfb29('0x26')]=function(_0x12d3d8,_0x54a551){return db['OpenchannelTransferReport'][_0xfb29('0x48')]({'where':{'id':_0x12d3d8['params']['id']}})['then'](handleEntityNotFound(_0x54a551,null))[_0xfb29('0x25')](removeEntity(_0x54a551,null))[_0xfb29('0x43')](handleError(_0x54a551,null));};exports[_0xfb29('0x4c')]=function(_0x5c0d14,_0x267b76){return db['OpenchannelTransferReport'][_0xfb29('0x4c')]()['then'](respondWithResult(_0x267b76,null))[_0xfb29('0x43')](handleError(_0x267b76,null));};
\ No newline at end of file
index 27bfc97..3304e4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7187=['define','OpenchannelTransferReport','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes'];(function(_0x4cce65,_0x40021e){var _0x4d1b45=function(_0x54d290){while(--_0x54d290){_0x4cce65['push'](_0x4cce65['shift']());}};_0x4d1b45(++_0x40021e);}(_0x7187,0xe0));var _0x7718=function(_0x3dd794,_0x23ce18){_0x3dd794=_0x3dd794-0x0;var _0xadb311=_0x7187[_0x3dd794];return _0xadb311;};'use strict';var _=require(_0x7718('0x0'));var util=require(_0x7718('0x1'));var logger=require(_0x7718('0x2'))(_0x7718('0x3'));var moment=require('moment');var BPromise=require(_0x7718('0x4'));var rp=require(_0x7718('0x5'));var fs=require('fs');var path=require(_0x7718('0x6'));var rimraf=require(_0x7718('0x7'));var config=require(_0x7718('0x8'));var attributes=require(_0x7718('0x9'));module['exports']=function(_0x3d894a,_0x4b65c5){return _0x3d894a[_0x7718('0xa')](_0x7718('0xb'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x7718('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd3d9=['util','../../config/logger','moment','path','rimraf','exports','report_openchannel_transfer','uniqueid'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0xd3d9,0x128));var _0x9d3d=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd3d9[_0xfae23b];return _0x200640;};'use strict';var _=require('lodash');var util=require(_0x9d3d('0x0'));var logger=require(_0x9d3d('0x1'))('api');var moment=require(_0x9d3d('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d3d('0x3'));var rimraf=require(_0x9d3d('0x4'));var config=require('../../config/environment');var attributes=require('./openchannelTransferReport.attributes');module[_0x9d3d('0x5')]=function(_0x77c52e,_0x6a2ef2){return _0x77c52e['define']('OpenchannelTransferReport',attributes,{'tableName':_0x9d3d('0x6'),'paranoid':![],'indexes':[{'name':_0x9d3d('0x7'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 0eef4d1..3c210d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db9=['../../config/utils','../../config/logger','jayson/promise','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x2153ed,_0x1365d9){var _0x19eb20=function(_0xc63014){while(--_0xc63014){_0x2153ed['push'](_0x2153ed['shift']());}};_0x19eb20(++_0x1365d9);}(_0x1db9,0x176));var _0x91db=function(_0x4040e1,_0x20bf90){_0x4040e1=_0x4040e1-0x0;var _0x542af0=_0x1db9[_0x4040e1];return _0x542af0;};'use strict';var _=require(_0x91db('0x0'));var util=require(_0x91db('0x1'));var moment=require(_0x91db('0x2'));var BPromise=require(_0x91db('0x3'));var rs=require(_0x91db('0x4'));var fs=require('fs');var Redis=require(_0x91db('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x91db('0x6'));var logger=require(_0x91db('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x91db('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x433c75,_0x3b0c53,_0x45fea0){return new BPromise(function(_0x2330c2,_0x2d89a1){return client['request'](_0x433c75,_0x45fea0)[_0x91db('0x9')](function(_0x58cda2){logger[_0x91db('0xa')](_0x91db('0xb'),_0x3b0c53,_0x91db('0xc'));logger['debug'](_0x91db('0xd'),_0x3b0c53,'request\x20sent',JSON['stringify'](_0x58cda2));if(_0x58cda2['error']){if(_0x58cda2[_0x91db('0xe')][_0x91db('0xf')]===0x1f4){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x3b0c53,_0x58cda2[_0x91db('0xe')][_0x91db('0x10')]);return _0x2d89a1(_0x58cda2[_0x91db('0xe')][_0x91db('0x10')]);}logger[_0x91db('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x3b0c53,_0x58cda2[_0x91db('0xe')][_0x91db('0x10')]);return _0x2330c2(_0x58cda2[_0x91db('0xe')][_0x91db('0x10')]);}else{logger[_0x91db('0xa')](_0x91db('0xb'),_0x3b0c53,_0x91db('0xc'));_0x2330c2(_0x58cda2[_0x91db('0x11')][_0x91db('0x10')]);}})[_0x91db('0x12')](function(_0x1e9679){logger[_0x91db('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x3b0c53,_0x1e9679);_0x2d89a1(_0x1e9679);});});}
\ No newline at end of file
+var _0x6596=['stringify','error','code','message','request\x20sent','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','debug'];(function(_0x319b10,_0x5206fb){var _0x3cb98d=function(_0x316410){while(--_0x316410){_0x319b10['push'](_0x319b10['shift']());}};_0x3cb98d(++_0x5206fb);}(_0x6596,0x1d3));var _0x6659=function(_0xe98060,_0x4ae148){_0xe98060=_0xe98060-0x0;var _0x205330=_0x6596[_0xe98060];return _0x205330;};'use strict';var _=require(_0x6659('0x0'));var util=require(_0x6659('0x1'));var moment=require('moment');var BPromise=require(_0x6659('0x2'));var rs=require(_0x6659('0x3'));var fs=require('fs');var Redis=require(_0x6659('0x4'));var db=require(_0x6659('0x5'))['db'];var utils=require(_0x6659('0x6'));var logger=require(_0x6659('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6659('0x8'));var client=jayson[_0x6659('0x9')][_0x6659('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ed458,_0x29292b,_0x4a900d){return new BPromise(function(_0x485ea0,_0x24bfdf){return client[_0x6659('0xb')](_0x1ed458,_0x4a900d)[_0x6659('0xc')](function(_0x2aee6e){logger[_0x6659('0xd')](_0x6659('0xe'),_0x29292b,'request\x20sent');logger[_0x6659('0xf')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x29292b,'request\x20sent',JSON[_0x6659('0x10')](_0x2aee6e));if(_0x2aee6e['error']){if(_0x2aee6e[_0x6659('0x11')][_0x6659('0x12')]===0x1f4){logger[_0x6659('0x11')](_0x6659('0xe'),_0x29292b,_0x2aee6e['error'][_0x6659('0x13')]);return _0x24bfdf(_0x2aee6e[_0x6659('0x11')]['message']);}logger[_0x6659('0x11')](_0x6659('0xe'),_0x29292b,_0x2aee6e[_0x6659('0x11')][_0x6659('0x13')]);return _0x485ea0(_0x2aee6e[_0x6659('0x11')][_0x6659('0x13')]);}else{logger['info'](_0x6659('0xe'),_0x29292b,_0x6659('0x14'));_0x485ea0(_0x2aee6e[_0x6659('0x15')][_0x6659('0x13')]);}})[_0x6659('0x16')](function(_0x75836a){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x29292b,_0x75836a);_0x24bfdf(_0x75836a);});});}
\ No newline at end of file
index dcfe0aa..050f008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f0=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','show','post','create','put','/:id','delete','destroy','exports'];(function(_0x353313,_0x5c3686){var _0x4cb750=function(_0x17ac7e){while(--_0x17ac7e){_0x353313['push'](_0x353313['shift']());}};_0x4cb750(++_0x5c3686);}(_0xb3f0,0x1c8));var _0x0b3f=function(_0x49c057,_0xc808ed){_0x49c057=_0x49c057-0x0;var _0xd8f0e6=_0xb3f0[_0x49c057];return _0xd8f0e6;};'use strict';var multer=require(_0x0b3f('0x0'));var util=require('util');var path=require(_0x0b3f('0x1'));var timeout=require('connect-timeout');var express=require(_0x0b3f('0x2'));var router=express[_0x0b3f('0x3')]();var fs_extra=require(_0x0b3f('0x4'));var auth=require(_0x0b3f('0x5'));var interaction=require(_0x0b3f('0x6'));var config=require(_0x0b3f('0x7'));var controller=require(_0x0b3f('0x8'));router[_0x0b3f('0x9')]('/',auth[_0x0b3f('0xa')](),controller['index']);router[_0x0b3f('0x9')]('/:id',auth[_0x0b3f('0xa')](),controller[_0x0b3f('0xb')]);router[_0x0b3f('0xc')]('/',auth['isAuthenticated'](),controller[_0x0b3f('0xd')]);router[_0x0b3f('0xe')](_0x0b3f('0xf'),auth[_0x0b3f('0xa')](),controller['update']);router[_0x0b3f('0x10')](_0x0b3f('0xf'),auth[_0x0b3f('0xa')](),controller[_0x0b3f('0x11')]);module[_0x0b3f('0x12')]=router;
\ No newline at end of file
+var _0x5097=['../../config/environment','./pause.controller','get','/:id','isAuthenticated','create','put','delete','destroy','exports','connect-timeout','express','fs-extra','../../components/interaction/service'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x5097,0xf8));var _0x7509=function(_0x563870,_0x2a9674){_0x563870=_0x563870-0x0;var _0xb2b699=_0x5097[_0x563870];return _0xb2b699;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x7509('0x0'));var express=require(_0x7509('0x1'));var router=express['Router']();var fs_extra=require(_0x7509('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x7509('0x3'));var config=require(_0x7509('0x4'));var controller=require(_0x7509('0x5'));router[_0x7509('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x7509('0x7'),auth[_0x7509('0x8')](),controller['show']);router['post']('/',auth[_0x7509('0x8')](),controller[_0x7509('0x9')]);router[_0x7509('0xa')](_0x7509('0x7'),auth[_0x7509('0x8')](),controller['update']);router[_0x7509('0xb')](_0x7509('0x7'),auth['isAuthenticated'](),controller[_0x7509('0xc')]);module[_0x7509('0xd')]=router;
\ No newline at end of file
index bb19b9e..bd4bad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7c7=['STRING','name'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0xe7c7,0x1b6));var _0x7e7c=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0xe7c7[_0x5a776b];return _0xbbef59;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7e7c('0x0')],'unique':_0x7e7c('0x1'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9a85=['STRING','name'];(function(_0x3a13da,_0x115229){var _0x30f470=function(_0x488f4d){while(--_0x488f4d){_0x3a13da['push'](_0x3a13da['shift']());}};_0x30f470(++_0x115229);}(_0x9a85,0x1ba));var _0x59a8=function(_0x2786ea,_0x16c3c3){_0x2786ea=_0x2786ea-0x0;var _0x5c38e5=_0x9a85[_0x2786ea];return _0x5c38e5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x59a8('0x0')],'unique':_0x59a8('0x1'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1371451..1447045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda4b=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Pauses','UserProfileResource','end','error','name','map','Pause','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xda4b,0x9a));var _0xbda4=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xda4b[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xbda4('0x0'));var rimraf=require(_0xbda4('0x1'));var zipdir=require(_0xbda4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbda4('0x3'));var moment=require('moment');var BPromise=require(_0xbda4('0x4'));var Mustache=require(_0xbda4('0x5'));var util=require(_0xbda4('0x6'));var path=require(_0xbda4('0x7'));var sox=require(_0xbda4('0x8'));var csv=require(_0xbda4('0x9'));var ejs=require(_0xbda4('0xa'));var fs=require('fs');var fs_extra=require(_0xbda4('0xb'));var _=require(_0xbda4('0xc'));var squel=require(_0xbda4('0xd'));var crypto=require(_0xbda4('0xe'));var jsforce=require(_0xbda4('0xf'));var deskjs=require(_0xbda4('0x10'));var toCsv=require(_0xbda4('0x9'));var querystring=require(_0xbda4('0x11'));var Papa=require(_0xbda4('0x12'));var Redis=require('ioredis');var authService=require(_0xbda4('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbda4('0x14'))(_0xbda4('0x15'));var utils=require(_0xbda4('0x16'));var config=require(_0xbda4('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbda4('0x18'))['db'];function respondWithStatusCode(_0x3965d1,_0x3897b5){_0x3897b5=_0x3897b5||0xcc;return function(_0x20901e){if(_0x20901e){return _0x3965d1['sendStatus'](_0x3897b5);}return _0x3965d1[_0xbda4('0x19')](_0x3897b5)['end']();};}function respondWithResult(_0x434856,_0x573aaa){_0x573aaa=_0x573aaa||0xc8;return function(_0x1f7107){if(_0x1f7107){return _0x434856[_0xbda4('0x19')](_0x573aaa)['json'](_0x1f7107);}};}function respondWithFilteredResult(_0x28a508,_0x5d3380){return function(_0x34f908){if(_0x34f908){var _0x34e495=typeof _0x5d3380[_0xbda4('0x1a')]==='undefined'&&typeof _0x5d3380[_0xbda4('0x1b')]===_0xbda4('0x1c');var _0x14c9b8=_0x34f908['count'];var _0x2edeb4=_0x34e495?0x0:_0x5d3380[_0xbda4('0x1a')];var _0x51ff09=_0x34e495?_0x34f908[_0xbda4('0x1d')]:_0x5d3380['offset']+_0x5d3380['limit'];var _0x332f23;if(_0x51ff09>=_0x14c9b8){_0x51ff09=_0x14c9b8;_0x332f23=0xc8;}else{_0x332f23=0xce;}_0x28a508[_0xbda4('0x19')](_0x332f23);return _0x28a508[_0xbda4('0x1e')](_0xbda4('0x1f'),_0x2edeb4+'-'+_0x51ff09+'/'+_0x14c9b8)[_0xbda4('0x20')](_0x34f908);}return null;};}function patchUpdates(_0x16ed6d){return function(_0x29121c){try{jsonpatch[_0xbda4('0x21')](_0x29121c,_0x16ed6d,!![]);}catch(_0x588eaa){return BPromise[_0xbda4('0x22')](_0x588eaa);}return _0x29121c['save']();};}function saveUpdates(_0x169616,_0x598dfd){return function(_0x473373){if(_0x473373){return _0x473373[_0xbda4('0x23')](_0x169616)[_0xbda4('0x24')](function(_0x3cb006){return _0x3cb006;});}return null;};}function removeEntity(_0x3a26d8,_0x180de7){return function(_0x225b36){if(_0x225b36){return _0x225b36[_0xbda4('0x25')]()[_0xbda4('0x24')](function(){var _0x1df9e1=_0x225b36[_0xbda4('0x26')]({'plain':!![]});var _0x4002b9=_0xbda4('0x27');return db[_0xbda4('0x28')][_0xbda4('0x25')]({'where':{'type':_0x4002b9,'resourceId':_0x1df9e1['id']}})[_0xbda4('0x24')](function(){return _0x225b36;});})['then'](function(){_0x3a26d8['status'](0xcc)[_0xbda4('0x29')]();});}};}function handleEntityNotFound(_0x28b3f7,_0x316c76){return function(_0x267b30){if(!_0x267b30){_0x28b3f7['sendStatus'](0x194);}return _0x267b30;};}function handleError(_0xd34420,_0x6b93a8){_0x6b93a8=_0x6b93a8||0x1f4;return function(_0x18bf78){logger[_0xbda4('0x2a')](_0x18bf78['stack']);if(_0x18bf78[_0xbda4('0x2b')]){delete _0x18bf78[_0xbda4('0x2b')];}_0xd34420['status'](_0x6b93a8)['send'](_0x18bf78);};}exports['index']=function(_0x44d993,_0x362522){var _0x450e60={},_0x1f6483={},_0x524720={'count':0x0,'rows':[]};var _0xee92a3=_[_0xbda4('0x2c')](db[_0xbda4('0x2d')][_0xbda4('0x2e')],function(_0xa8f044){return{'name':_0xa8f044['fieldName'],'type':_0xa8f044[_0xbda4('0x2f')][_0xbda4('0x30')]};});_0x1f6483['model']=_[_0xbda4('0x2c')](_0xee92a3,_0xbda4('0x2b'));_0x1f6483[_0xbda4('0x31')]=_[_0xbda4('0x32')](_0x44d993[_0xbda4('0x31')]);_0x1f6483[_0xbda4('0x33')]=_[_0xbda4('0x34')](_0x1f6483[_0xbda4('0x35')],_0x1f6483['query']);_0x450e60[_0xbda4('0x36')]=_[_0xbda4('0x34')](_0x1f6483[_0xbda4('0x35')],qs[_0xbda4('0x37')](_0x44d993['query']['fields']));_0x450e60[_0xbda4('0x36')]=_0x450e60['attributes'][_0xbda4('0x38')]?_0x450e60[_0xbda4('0x36')]:_0x1f6483['model'];if(!_0x44d993[_0xbda4('0x31')][_0xbda4('0x39')](_0xbda4('0x3a'))){_0x450e60['limit']=qs[_0xbda4('0x1b')](_0x44d993[_0xbda4('0x31')][_0xbda4('0x1b')]);_0x450e60['offset']=qs[_0xbda4('0x1a')](_0x44d993[_0xbda4('0x31')][_0xbda4('0x1a')]);}_0x450e60[_0xbda4('0x3b')]=qs[_0xbda4('0x3c')](_0x44d993[_0xbda4('0x31')]['sort']);_0x450e60['where']=qs[_0xbda4('0x33')](_[_0xbda4('0x3d')](_0x44d993['query'],_0x1f6483['filters']),_0xee92a3);if(_0x44d993['query'][_0xbda4('0x3e')]){_0x450e60[_0xbda4('0x3f')]=_[_0xbda4('0x40')](_0x450e60[_0xbda4('0x3f')],{'$or':_[_0xbda4('0x2c')](_0xee92a3,function(_0x5267d7){if(_0x5267d7['type']!==_0xbda4('0x41')){var _0x4c7b23={};_0x4c7b23[_0x5267d7[_0xbda4('0x2b')]]={'$like':'%'+_0x44d993['query'][_0xbda4('0x3e')]+'%'};return _0x4c7b23;}})});}_0x450e60=_['merge']({},_0x450e60,_0x44d993[_0xbda4('0x42')]);var _0x2dd09a={'where':_0x450e60['where']};return db[_0xbda4('0x2d')][_0xbda4('0x1d')](_0x2dd09a)['then'](function(_0x4b8651){_0x524720['count']=_0x4b8651;if(_0x44d993['query']['includeAll']){_0x450e60[_0xbda4('0x43')]=[{'all':!![]}];}return db[_0xbda4('0x2d')][_0xbda4('0x44')](_0x450e60);})[_0xbda4('0x24')](function(_0xc73170){_0x524720[_0xbda4('0x45')]=_0xc73170;return _0x524720;})[_0xbda4('0x24')](respondWithFilteredResult(_0x362522,_0x450e60))[_0xbda4('0x46')](handleError(_0x362522,null));};exports['show']=function(_0x3d5fac,_0x436549){var _0x51c6d6={'raw':!![],'where':{'id':_0x3d5fac['params']['id']}},_0x2efe4c={};_0x2efe4c[_0xbda4('0x35')]=_[_0xbda4('0x32')](db[_0xbda4('0x2d')]['rawAttributes']);_0x2efe4c[_0xbda4('0x31')]=_[_0xbda4('0x32')](_0x3d5fac[_0xbda4('0x31')]);_0x2efe4c['filters']=_[_0xbda4('0x34')](_0x2efe4c['model'],_0x2efe4c[_0xbda4('0x31')]);_0x51c6d6[_0xbda4('0x36')]=_[_0xbda4('0x34')](_0x2efe4c[_0xbda4('0x35')],qs[_0xbda4('0x37')](_0x3d5fac['query']['fields']));_0x51c6d6['attributes']=_0x51c6d6[_0xbda4('0x36')]['length']?_0x51c6d6[_0xbda4('0x36')]:_0x2efe4c[_0xbda4('0x35')];if(_0x3d5fac[_0xbda4('0x31')][_0xbda4('0x47')]){_0x51c6d6['include']=[{'all':!![]}];}_0x51c6d6=_['merge']({},_0x51c6d6,_0x3d5fac['options']);return db[_0xbda4('0x2d')][_0xbda4('0x48')](_0x51c6d6)['then'](handleEntityNotFound(_0x436549,null))[_0xbda4('0x24')](respondWithResult(_0x436549,null))[_0xbda4('0x46')](handleError(_0x436549,null));};exports[_0xbda4('0x49')]=function(_0x39d3c8,_0x4f72bf){return db[_0xbda4('0x2d')][_0xbda4('0x49')](_0x39d3c8[_0xbda4('0x4a')],{})['then'](function(_0x29e666){var _0x2b420a=_0x39d3c8[_0xbda4('0x4b')][_0xbda4('0x26')]({'plain':!![]});if(!_0x2b420a)throw new Error(_0xbda4('0x4c'));if(_0x2b420a[_0xbda4('0x4d')]==='user'){var _0x531220=_0x29e666[_0xbda4('0x26')]({'plain':!![]});var _0x28507b=_0xbda4('0x27');return db[_0xbda4('0x4e')][_0xbda4('0x48')]({'where':{'name':_0x28507b,'userProfileId':_0x2b420a[_0xbda4('0x4f')]},'raw':!![]})[_0xbda4('0x24')](function(_0x53906f){if(_0x53906f&&_0x53906f[_0xbda4('0x50')]===0x0){return db[_0xbda4('0x28')][_0xbda4('0x49')]({'name':_0x531220[_0xbda4('0x2b')],'resourceId':_0x531220['id'],'type':_0x53906f[_0xbda4('0x2b')],'sectionId':_0x53906f['id']},{})[_0xbda4('0x24')](function(){return _0x29e666;});}else{return _0x29e666;}})[_0xbda4('0x46')](function(_0x164efa){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x164efa);throw _0x164efa;});}return _0x29e666;})[_0xbda4('0x24')](respondWithResult(_0x4f72bf,0xc9))[_0xbda4('0x46')](handleError(_0x4f72bf,null));};exports[_0xbda4('0x23')]=function(_0x41bc64,_0x5c2b37){if(_0x41bc64['body']['id']){delete _0x41bc64[_0xbda4('0x4a')]['id'];}return db[_0xbda4('0x2d')][_0xbda4('0x48')]({'where':{'id':_0x41bc64[_0xbda4('0x51')]['id']}})[_0xbda4('0x24')](handleEntityNotFound(_0x5c2b37,null))[_0xbda4('0x24')](saveUpdates(_0x41bc64[_0xbda4('0x4a')],null))['then'](respondWithResult(_0x5c2b37,null))[_0xbda4('0x46')](handleError(_0x5c2b37,null));};exports[_0xbda4('0x25')]=function(_0x4b0644,_0x4b3036){return db[_0xbda4('0x2d')][_0xbda4('0x48')]({'where':{'id':_0x4b0644[_0xbda4('0x51')]['id']}})['then'](handleEntityNotFound(_0x4b3036,null))[_0xbda4('0x24')](removeEntity(_0x4b3036,null))[_0xbda4('0x46')](handleError(_0x4b3036,null));};
\ No newline at end of file
+var _0x3531=['apply','reject','save','update','then','destroy','get','Pauses','error','stack','name','map','Pause','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','rawAttributes','intersection','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json'];(function(_0x77bfd4,_0x822e12){var _0xe3d1c8=function(_0x1129f4){while(--_0x1129f4){_0x77bfd4['push'](_0x77bfd4['shift']());}};_0xe3d1c8(++_0x822e12);}(_0x3531,0x176));var _0x1353=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x3531[_0x28d18d];return _0x470640;};'use strict';var emlformat=require(_0x1353('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1353('0x1'));var jsonpatch=require(_0x1353('0x2'));var rp=require(_0x1353('0x3'));var moment=require(_0x1353('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1353('0x5'));var util=require('util');var path=require(_0x1353('0x6'));var sox=require(_0x1353('0x7'));var csv=require(_0x1353('0x8'));var ejs=require(_0x1353('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1353('0xa'));var squel=require('squel');var crypto=require(_0x1353('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1353('0x8'));var querystring=require(_0x1353('0xc'));var Papa=require(_0x1353('0xd'));var Redis=require(_0x1353('0xe'));var authService=require(_0x1353('0xf'));var qs=require(_0x1353('0x10'));var as=require(_0x1353('0x11'));var hardwareService=require(_0x1353('0x12'));var logger=require('../../config/logger')(_0x1353('0x13'));var utils=require(_0x1353('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1353('0x15'))['db'];function respondWithStatusCode(_0x59fef7,_0x5c9d31){_0x5c9d31=_0x5c9d31||0xcc;return function(_0x36155e){if(_0x36155e){return _0x59fef7[_0x1353('0x16')](_0x5c9d31);}return _0x59fef7[_0x1353('0x17')](_0x5c9d31)[_0x1353('0x18')]();};}function respondWithResult(_0x453364,_0x4b5823){_0x4b5823=_0x4b5823||0xc8;return function(_0x1b50fa){if(_0x1b50fa){return _0x453364['status'](_0x4b5823)['json'](_0x1b50fa);}};}function respondWithFilteredResult(_0x1c0e9f,_0x30f134){return function(_0x3af522){if(_0x3af522){var _0x52c368=typeof _0x30f134[_0x1353('0x19')]===_0x1353('0x1a')&&typeof _0x30f134[_0x1353('0x1b')]===_0x1353('0x1a');var _0x42ae66=_0x3af522['count'];var _0x1d0739=_0x52c368?0x0:_0x30f134[_0x1353('0x19')];var _0x369957=_0x52c368?_0x3af522[_0x1353('0x1c')]:_0x30f134[_0x1353('0x19')]+_0x30f134['limit'];var _0x338959;if(_0x369957>=_0x42ae66){_0x369957=_0x42ae66;_0x338959=0xc8;}else{_0x338959=0xce;}_0x1c0e9f['status'](_0x338959);return _0x1c0e9f['set'](_0x1353('0x1d'),_0x1d0739+'-'+_0x369957+'/'+_0x42ae66)[_0x1353('0x1e')](_0x3af522);}return null;};}function patchUpdates(_0x39166f){return function(_0x4b8ecb){try{jsonpatch[_0x1353('0x1f')](_0x4b8ecb,_0x39166f,!![]);}catch(_0x36c399){return BPromise[_0x1353('0x20')](_0x36c399);}return _0x4b8ecb[_0x1353('0x21')]();};}function saveUpdates(_0x40cf54,_0x531cb9){return function(_0x441896){if(_0x441896){return _0x441896[_0x1353('0x22')](_0x40cf54)[_0x1353('0x23')](function(_0x5de033){return _0x5de033;});}return null;};}function removeEntity(_0x2a85db,_0x5035bd){return function(_0x460aea){if(_0x460aea){return _0x460aea[_0x1353('0x24')]()['then'](function(){var _0x3773fc=_0x460aea[_0x1353('0x25')]({'plain':!![]});var _0x52aa7f=_0x1353('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x52aa7f,'resourceId':_0x3773fc['id']}})[_0x1353('0x23')](function(){return _0x460aea;});})[_0x1353('0x23')](function(){_0x2a85db[_0x1353('0x17')](0xcc)[_0x1353('0x18')]();});}};}function handleEntityNotFound(_0x180e17,_0x24d809){return function(_0x5005b7){if(!_0x5005b7){_0x180e17[_0x1353('0x16')](0x194);}return _0x5005b7;};}function handleError(_0x2ebf98,_0x5e6585){_0x5e6585=_0x5e6585||0x1f4;return function(_0x1de57a){logger[_0x1353('0x27')](_0x1de57a[_0x1353('0x28')]);if(_0x1de57a['name']){delete _0x1de57a[_0x1353('0x29')];}_0x2ebf98[_0x1353('0x17')](_0x5e6585)['send'](_0x1de57a);};}exports['index']=function(_0x344fd8,_0x432122){var _0x14f07f={},_0x4a1344={},_0x470200={'count':0x0,'rows':[]};var _0x26c4a4=_[_0x1353('0x2a')](db[_0x1353('0x2b')]['rawAttributes'],function(_0x595faa){return{'name':_0x595faa[_0x1353('0x2c')],'type':_0x595faa[_0x1353('0x2d')][_0x1353('0x2e')]};});_0x4a1344[_0x1353('0x2f')]=_['map'](_0x26c4a4,_0x1353('0x29'));_0x4a1344[_0x1353('0x30')]=_[_0x1353('0x31')](_0x344fd8['query']);_0x4a1344[_0x1353('0x32')]=_['intersection'](_0x4a1344[_0x1353('0x2f')],_0x4a1344['query']);_0x14f07f[_0x1353('0x33')]=_['intersection'](_0x4a1344[_0x1353('0x2f')],qs[_0x1353('0x34')](_0x344fd8['query'][_0x1353('0x34')]));_0x14f07f[_0x1353('0x33')]=_0x14f07f[_0x1353('0x33')][_0x1353('0x35')]?_0x14f07f[_0x1353('0x33')]:_0x4a1344['model'];if(!_0x344fd8[_0x1353('0x30')][_0x1353('0x36')](_0x1353('0x37'))){_0x14f07f[_0x1353('0x1b')]=qs[_0x1353('0x1b')](_0x344fd8[_0x1353('0x30')]['limit']);_0x14f07f[_0x1353('0x19')]=qs['offset'](_0x344fd8['query'][_0x1353('0x19')]);}_0x14f07f[_0x1353('0x38')]=qs['sort'](_0x344fd8[_0x1353('0x30')][_0x1353('0x39')]);_0x14f07f[_0x1353('0x3a')]=qs['filters'](_[_0x1353('0x3b')](_0x344fd8[_0x1353('0x30')],_0x4a1344[_0x1353('0x32')]),_0x26c4a4);if(_0x344fd8[_0x1353('0x30')]['filter']){_0x14f07f['where']=_[_0x1353('0x3c')](_0x14f07f['where'],{'$or':_[_0x1353('0x2a')](_0x26c4a4,function(_0x250823){if(_0x250823[_0x1353('0x2d')]!==_0x1353('0x3d')){var _0x308570={};_0x308570[_0x250823[_0x1353('0x29')]]={'$like':'%'+_0x344fd8[_0x1353('0x30')]['filter']+'%'};return _0x308570;}})});}_0x14f07f=_[_0x1353('0x3c')]({},_0x14f07f,_0x344fd8[_0x1353('0x3e')]);var _0x40e945={'where':_0x14f07f[_0x1353('0x3a')]};return db[_0x1353('0x2b')][_0x1353('0x1c')](_0x40e945)[_0x1353('0x23')](function(_0x2bb201){_0x470200[_0x1353('0x1c')]=_0x2bb201;if(_0x344fd8[_0x1353('0x30')][_0x1353('0x3f')]){_0x14f07f[_0x1353('0x40')]=[{'all':!![]}];}return db['Pause'][_0x1353('0x41')](_0x14f07f);})['then'](function(_0x7d2b6f){_0x470200[_0x1353('0x42')]=_0x7d2b6f;return _0x470200;})[_0x1353('0x23')](respondWithFilteredResult(_0x432122,_0x14f07f))[_0x1353('0x43')](handleError(_0x432122,null));};exports['show']=function(_0x1c55e8,_0x53049b){var _0x2ca33a={'raw':!![],'where':{'id':_0x1c55e8[_0x1353('0x44')]['id']}},_0x413f04={};_0x413f04[_0x1353('0x2f')]=_[_0x1353('0x31')](db[_0x1353('0x2b')][_0x1353('0x45')]);_0x413f04[_0x1353('0x30')]=_[_0x1353('0x31')](_0x1c55e8[_0x1353('0x30')]);_0x413f04[_0x1353('0x32')]=_['intersection'](_0x413f04['model'],_0x413f04['query']);_0x2ca33a[_0x1353('0x33')]=_[_0x1353('0x46')](_0x413f04[_0x1353('0x2f')],qs['fields'](_0x1c55e8[_0x1353('0x30')][_0x1353('0x34')]));_0x2ca33a[_0x1353('0x33')]=_0x2ca33a[_0x1353('0x33')][_0x1353('0x35')]?_0x2ca33a['attributes']:_0x413f04[_0x1353('0x2f')];if(_0x1c55e8['query'][_0x1353('0x3f')]){_0x2ca33a[_0x1353('0x40')]=[{'all':!![]}];}_0x2ca33a=_[_0x1353('0x3c')]({},_0x2ca33a,_0x1c55e8['options']);return db[_0x1353('0x2b')]['find'](_0x2ca33a)['then'](handleEntityNotFound(_0x53049b,null))['then'](respondWithResult(_0x53049b,null))[_0x1353('0x43')](handleError(_0x53049b,null));};exports['create']=function(_0xbf9f0f,_0x292ff4){return db[_0x1353('0x2b')]['create'](_0xbf9f0f[_0x1353('0x47')],{})['then'](function(_0x4c2f5f){var _0x34b2d1=_0xbf9f0f[_0x1353('0x48')]['get']({'plain':!![]});if(!_0x34b2d1)throw new Error(_0x1353('0x49'));if(_0x34b2d1[_0x1353('0x4a')]===_0x1353('0x48')){var _0x13d604=_0x4c2f5f[_0x1353('0x25')]({'plain':!![]});var _0x1b31bb=_0x1353('0x26');return db[_0x1353('0x4b')][_0x1353('0x4c')]({'where':{'name':_0x1b31bb,'userProfileId':_0x34b2d1[_0x1353('0x4d')]},'raw':!![]})[_0x1353('0x23')](function(_0x32cdc1){if(_0x32cdc1&&_0x32cdc1[_0x1353('0x4e')]===0x0){return db['UserProfileResource'][_0x1353('0x4f')]({'name':_0x13d604[_0x1353('0x29')],'resourceId':_0x13d604['id'],'type':_0x32cdc1[_0x1353('0x29')],'sectionId':_0x32cdc1['id']},{})[_0x1353('0x23')](function(){return _0x4c2f5f;});}else{return _0x4c2f5f;}})[_0x1353('0x43')](function(_0x1b04c9){logger[_0x1353('0x27')](_0x1353('0x50'),_0x1b04c9);throw _0x1b04c9;});}return _0x4c2f5f;})[_0x1353('0x23')](respondWithResult(_0x292ff4,0xc9))[_0x1353('0x43')](handleError(_0x292ff4,null));};exports[_0x1353('0x22')]=function(_0x1aad52,_0x5a7151){if(_0x1aad52['body']['id']){delete _0x1aad52[_0x1353('0x47')]['id'];}return db[_0x1353('0x2b')][_0x1353('0x4c')]({'where':{'id':_0x1aad52[_0x1353('0x44')]['id']}})[_0x1353('0x23')](handleEntityNotFound(_0x5a7151,null))[_0x1353('0x23')](saveUpdates(_0x1aad52[_0x1353('0x47')],null))[_0x1353('0x23')](respondWithResult(_0x5a7151,null))[_0x1353('0x43')](handleError(_0x5a7151,null));};exports[_0x1353('0x24')]=function(_0x24f323,_0x1100c1){return db[_0x1353('0x2b')][_0x1353('0x4c')]({'where':{'id':_0x24f323[_0x1353('0x44')]['id']}})['then'](handleEntityNotFound(_0x1100c1,null))['then'](removeEntity(_0x1100c1,null))[_0x1353('0x43')](handleError(_0x1100c1,null));};
\ No newline at end of file
index bedf1fb..4d056d3 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(_0x4dba2b,_0x4f2f25){var _0x4a3f5c=function(_0x3f8d34){while(--_0x3f8d34){_0x4dba2b['push'](_0x4dba2b['shift']());}};_0x4a3f5c(++_0x4f2f25);}(_0x8ef6,0xf2));var _0x68ef=function(_0x50e522,_0x556560){_0x50e522=_0x50e522-0x0;var _0x1e2f42=_0x8ef6[_0x50e522];return _0x1e2f42;};'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 _0x8ef6=['exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./pause.attributes'];(function(_0x18cb0a,_0x172892){var _0x4c7286=function(_0xf07105){while(--_0xf07105){_0x18cb0a['push'](_0x18cb0a['shift']());}};_0x4c7286(++_0x172892);}(_0x8ef6,0xf2));var _0x68ef=function(_0x3526e7,_0x372adc){_0x3526e7=_0x3526e7-0x0;var _0x2c9067=_0x8ef6[_0x3526e7];return _0x2c9067;};'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
index b3e3395..2cfd4b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x281dba,_0x3be9b5){var _0x41f481=function(_0x42aaaf){while(--_0x42aaaf){_0x281dba['push'](_0x281dba['shift']());}};_0x41f481(++_0x3be9b5);}(_0xb10b,0x12a));var _0xbb10=function(_0x491ee6,_0x290b18){_0x491ee6=_0x491ee6-0x0;var _0x541e79=_0xb10b[_0x491ee6];return _0x541e79;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x151cbc,_0x207c8c){var _0xb1385=function(_0x1261d6){while(--_0x1261d6){_0x151cbc['push'](_0x151cbc['shift']());}};_0xb1385(++_0x207c8c);}(_0xb10b,0x12a));var _0xbb10=function(_0x47990b,_0xf722d6){_0x47990b=_0x47990b-0x0;var _0x57bb0a=_0xb10b[_0x47990b];return _0x57bb0a;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index a9f7739..fb26cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['isAuthenticated','get','/webhook','webhookGet','/:id','show','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','replace','format','%s-%s%s','extname','now','post','file','webhookPost','put','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5b2ec3,_0x444641){var _0x3ec698=function(_0x1223e1){while(--_0x1223e1){_0x5b2ec3['push'](_0x5b2ec3['shift']());}};_0x3ec698(++_0x444641);}(_0x6aa7,0x178));var _0x76aa=function(_0x36edea,_0x20fde6){_0x36edea=_0x36edea-0x0;var _0x310e9a=_0x6aa7[_0x36edea];return _0x310e9a;};'use strict';var multer=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var timeout=require(_0x76aa('0x2'));var express=require(_0x76aa('0x3'));var router=express[_0x76aa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x76aa('0x5'));var interaction=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var controller=require('./plugin.controller');router['get']('/',auth[_0x76aa('0x8')](),controller['index']);router[_0x76aa('0x9')](_0x76aa('0xa'),controller[_0x76aa('0xb')]);router['get'](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xd')]);router['get'](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xf')]);var upload=multer({'storage':multer[_0x76aa('0x10')]({'destination':function(_0x37f1ab,_0x128435,_0x2c5075){_0x2c5075(null,path[_0x76aa('0x11')](config[_0x76aa('0x12')],_0x76aa('0x13')));},'filename':function(_0x5e5f47,_0x112c39,_0x5df49c){_0x112c39[_0x76aa('0x14')]=_0x112c39[_0x76aa('0x14')][_0x76aa('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5df49c(null,util[_0x76aa('0x16')](_0x76aa('0x17'),path['basename'](_0x112c39['originalname'],path[_0x76aa('0x18')](_0x112c39['originalname'])),Date[_0x76aa('0x19')](),path[_0x76aa('0x18')](_0x112c39['originalname'])));}})});router[_0x76aa('0x1a')]('/',upload['single'](_0x76aa('0x1b')),controller['upload']);router[_0x76aa('0x1a')](_0x76aa('0xa'),controller[_0x76aa('0x1c')]);router[_0x76aa('0x1d')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller['update']);router['delete'](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1e')]);module[_0x76aa('0x1f')]=router;
\ No newline at end of file
+var _0x72b1=['./plugin.controller','get','isAuthenticated','index','/webhook','show','/:id/download','download','diskStorage','join','root','originalname','format','%s-%s%s','extname','now','post','single','file','upload','webhookPost','put','/:id','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5a1322,_0x20c1e6){var _0x458a5f=function(_0x368b91){while(--_0x368b91){_0x5a1322['push'](_0x5a1322['shift']());}};_0x458a5f(++_0x20c1e6);}(_0x72b1,0x16e));var _0x172b=function(_0x1d4335,_0x2f97ac){_0x1d4335=_0x1d4335-0x0;var _0x21db97=_0x72b1[_0x1d4335];return _0x21db97;};'use strict';var multer=require(_0x172b('0x0'));var util=require('util');var path=require(_0x172b('0x1'));var timeout=require(_0x172b('0x2'));var express=require(_0x172b('0x3'));var router=express[_0x172b('0x4')]();var fs_extra=require(_0x172b('0x5'));var auth=require(_0x172b('0x6'));var interaction=require(_0x172b('0x7'));var config=require('../../config/environment');var controller=require(_0x172b('0x8'));router[_0x172b('0x9')]('/',auth[_0x172b('0xa')](),controller[_0x172b('0xb')]);router['get'](_0x172b('0xc'),controller['webhookGet']);router[_0x172b('0x9')]('/:id',auth[_0x172b('0xa')](),controller[_0x172b('0xd')]);router[_0x172b('0x9')](_0x172b('0xe'),auth['isAuthenticated'](),controller[_0x172b('0xf')]);var upload=multer({'storage':multer[_0x172b('0x10')]({'destination':function(_0x28aaad,_0x161c7c,_0xa4ada9){_0xa4ada9(null,path[_0x172b('0x11')](config[_0x172b('0x12')],'server/files/plugins'));},'filename':function(_0x13d285,_0x82727f,_0xdf832e){_0x82727f['originalname']=_0x82727f[_0x172b('0x13')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xdf832e(null,util[_0x172b('0x14')](_0x172b('0x15'),path['basename'](_0x82727f[_0x172b('0x13')],path[_0x172b('0x16')](_0x82727f[_0x172b('0x13')])),Date[_0x172b('0x17')](),path['extname'](_0x82727f['originalname'])));}})});router[_0x172b('0x18')]('/',upload[_0x172b('0x19')](_0x172b('0x1a')),controller[_0x172b('0x1b')]);router['post']('/webhook',controller[_0x172b('0x1c')]);router[_0x172b('0x1d')](_0x172b('0x1e'),auth[_0x172b('0xa')](),controller[_0x172b('0x1f')]);router['delete'](_0x172b('0x1e'),auth[_0x172b('0xa')](),controller[_0x172b('0x20')]);module[_0x172b('0x21')]=router;
\ No newline at end of file
index 6265c23..1600e2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed80=['ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','adminOnly','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING'];(function(_0x35a736,_0x81f5e7){var _0x1acfc9=function(_0xb6aab2){while(--_0xb6aab2){_0x35a736['push'](_0x35a736['shift']());}};_0x1acfc9(++_0x81f5e7);}(_0xed80,0x19f));var _0x0ed8=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xed80[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x0ed8('0x0'));module[_0x0ed8('0x1')]={'name':{'type':Sequelize[_0x0ed8('0x2')]},'type':{'type':Sequelize[_0x0ed8('0x3')](_0x0ed8('0x4'),'script')},'description':{'type':Sequelize[_0x0ed8('0x5')]},'version':{'type':Sequelize[_0x0ed8('0x5')]},'path':{'type':Sequelize[_0x0ed8('0x2')],'comment':_0x0ed8('0x6')},'active':{'type':Sequelize[_0x0ed8('0x7')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0x0ed8('0x3')](_0x0ed8('0x8'),'agentOnly','always','never'),'defaultValue':_0x0ed8('0x9'),'comment':_0x0ed8('0xa')},'icon':{'type':Sequelize[_0x0ed8('0x2')]},'adminUrl':{'type':Sequelize[_0x0ed8('0x2')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0x0ed8('0x2')]},'scriptPath':{'type':Sequelize[_0x0ed8('0x2')]}};
\ No newline at end of file
+var _0xa8e8=['always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','ENUM','script','TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'];(function(_0x45a2bb,_0x368b2e){var _0x117c24=function(_0x498f1a){while(--_0x498f1a){_0x45a2bb['push'](_0x45a2bb['shift']());}};_0x117c24(++_0x368b2e);}(_0xa8e8,0xc9));var _0x8a8e=function(_0x56b083,_0x29476f){_0x56b083=_0x56b083-0x0;var _0x1b01e6=_0xa8e8[_0x56b083];return _0x1b01e6;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8a8e('0x0')]},'type':{'type':Sequelize[_0x8a8e('0x1')]('html',_0x8a8e('0x2'))},'description':{'type':Sequelize[_0x8a8e('0x3')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x8a8e('0x0')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x8a8e('0x4')],'defaultValue':0x0,'comment':_0x8a8e('0x5')},'sidebar':{'type':Sequelize['ENUM']('adminOnly','agentOnly',_0x8a8e('0x6'),_0x8a8e('0x7')),'defaultValue':'always','comment':_0x8a8e('0x8')},'icon':{'type':Sequelize[_0x8a8e('0x0')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0x8a8e('0x0')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0x8a8e('0x0')]}};
\ No newline at end of file
index 9bbe5a3..3157e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00e3=['port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','%s%s','headers','content-length','content-type','statusCode','resolve','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','extract-zip','archiver','../../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','./plugin.socket','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','error','name','send','index','map','Plugin','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','include','findAll','rows','show','find','download','params','join','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','node_modules/**/*','finalize','close','existsSync','Error','Plugin\x20not\x20found','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','catch','upload','extname','file','Plugin\x20upload\x20filepath:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','html','parameters','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','create','role','body','userProfileId','user','Plugins','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified'];(function(_0x35b87c,_0x166a8c){var _0x24795b=function(_0x2cb112){while(--_0x2cb112){_0x35b87c['push'](_0x35b87c['shift']());}};_0x24795b(++_0x166a8c);}(_0x00e3,0xb9));var _0x300e=function(_0x253b73,_0x55c2be){_0x253b73=_0x253b73-0x0;var _0x2483d5=_0x00e3[_0x253b73];return _0x2483d5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x300e('0x0'));var jsonpatch=require(_0x300e('0x1'));var rp=require('request-promise');var moment=require(_0x300e('0x2'));var BPromise=require(_0x300e('0x3'));var Mustache=require('mustache');var util=require(_0x300e('0x4'));var path=require(_0x300e('0x5'));var sox=require(_0x300e('0x6'));var csv=require(_0x300e('0x7'));var ejs=require(_0x300e('0x8'));var fs=require('fs');var fs_extra=require(_0x300e('0x9'));var _=require(_0x300e('0xa'));var squel=require(_0x300e('0xb'));var crypto=require('crypto');var jsforce=require(_0x300e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x300e('0x7'));var querystring=require(_0x300e('0xd'));var Papa=require(_0x300e('0xe'));var extract=require(_0x300e('0xf'));var rimraf=require('rimraf');var archiver=require(_0x300e('0x10'));var Redis=require('ioredis');var authService=require(_0x300e('0x11'));var qs=require(_0x300e('0x12'));var as=require(_0x300e('0x13'));var hardwareService=require(_0x300e('0x14'));var logger=require(_0x300e('0x15'))(_0x300e('0x16'));var utils=require(_0x300e('0x17'));var config=require(_0x300e('0x18'));var licenseUtil=require(_0x300e('0x19'));var db=require(_0x300e('0x1a'))['db'];config['redis']=_['defaults'](config[_0x300e('0x1b')],{'host':_0x300e('0x1c'),'port':0x18eb});var socket=require(_0x300e('0x1d'))(new Redis(config[_0x300e('0x1b')]));require(_0x300e('0x1e'))['register'](socket);function respondWithStatusCode(_0x478956,_0x5b1da6){_0x5b1da6=_0x5b1da6||0xcc;return function(_0x3ce134){if(_0x3ce134){return _0x478956[_0x300e('0x1f')](_0x5b1da6);}return _0x478956[_0x300e('0x20')](_0x5b1da6)[_0x300e('0x21')]();};}function respondWithResult(_0x13476d,_0x161959){_0x161959=_0x161959||0xc8;return function(_0xf64af9){if(_0xf64af9){return _0x13476d[_0x300e('0x20')](_0x161959)['json'](_0xf64af9);}};}function respondWithFilteredResult(_0x170069,_0x3f5cb6){return function(_0xa9b38c){if(_0xa9b38c){var _0x1859ac=typeof _0x3f5cb6[_0x300e('0x22')]===_0x300e('0x23')&&typeof _0x3f5cb6[_0x300e('0x24')]===_0x300e('0x23');var _0x18790f=_0xa9b38c[_0x300e('0x25')];var _0x4a612b=_0x1859ac?0x0:_0x3f5cb6[_0x300e('0x22')];var _0x31d2aa=_0x1859ac?_0xa9b38c['count']:_0x3f5cb6[_0x300e('0x22')]+_0x3f5cb6[_0x300e('0x24')];var _0x34fac6;if(_0x31d2aa>=_0x18790f){_0x31d2aa=_0x18790f;_0x34fac6=0xc8;}else{_0x34fac6=0xce;}_0x170069[_0x300e('0x20')](_0x34fac6);return _0x170069[_0x300e('0x26')](_0x300e('0x27'),_0x4a612b+'-'+_0x31d2aa+'/'+_0x18790f)[_0x300e('0x28')](_0xa9b38c);}return null;};}function patchUpdates(_0x679124){return function(_0x46a6ea){try{jsonpatch[_0x300e('0x29')](_0x46a6ea,_0x679124,!![]);}catch(_0x5a3b1e){return BPromise[_0x300e('0x2a')](_0x5a3b1e);}return _0x46a6ea[_0x300e('0x2b')]();};}function saveUpdates(_0x44757c,_0x36fad6){return function(_0x3ce237){if(_0x3ce237){return _0x3ce237[_0x300e('0x2c')](_0x44757c)[_0x300e('0x2d')](function(_0x286d27){return _0x286d27;});}return null;};}function removeEntity(_0x1c486b,_0xed61d9){return function(_0x3fd645){if(_0x3fd645){return _0x3fd645[_0x300e('0x2e')]()['then'](function(){var _0x4ac4fa=_0x3fd645[_0x300e('0x2f')]({'plain':!![]});var _0x37d4d1='Plugins';return db['UserProfileResource']['destroy']({'where':{'type':_0x37d4d1,'resourceId':_0x4ac4fa['id']}})[_0x300e('0x2d')](function(){return _0x3fd645;});})[_0x300e('0x2d')](function(){_0x1c486b[_0x300e('0x20')](0xcc)[_0x300e('0x21')]();});}};}function handleEntityNotFound(_0x5ccdfc,_0x517f24){return function(_0x3e6362){if(!_0x3e6362){_0x5ccdfc['sendStatus'](0x194);}return _0x3e6362;};}function handleError(_0x15f5b7,_0x489bb7){_0x489bb7=_0x489bb7||0x1f4;return function(_0x131fe5){logger[_0x300e('0x30')](_0x131fe5['stack']);if(_0x131fe5[_0x300e('0x31')]){delete _0x131fe5[_0x300e('0x31')];}_0x15f5b7[_0x300e('0x20')](_0x489bb7)[_0x300e('0x32')](_0x131fe5);};}exports[_0x300e('0x33')]=function(_0x1f1ae2,_0x533719){var _0x713626={},_0x11d0e2={},_0x29d777={'count':0x0,'rows':[]};var _0x4138cd=_[_0x300e('0x34')](db[_0x300e('0x35')][_0x300e('0x36')],function(_0x22649c){return{'name':_0x22649c[_0x300e('0x37')],'type':_0x22649c[_0x300e('0x38')][_0x300e('0x39')]};});_0x11d0e2[_0x300e('0x3a')]=_['map'](_0x4138cd,_0x300e('0x31'));_0x11d0e2['query']=_[_0x300e('0x3b')](_0x1f1ae2[_0x300e('0x3c')]);_0x11d0e2[_0x300e('0x3d')]=_[_0x300e('0x3e')](_0x11d0e2[_0x300e('0x3a')],_0x11d0e2[_0x300e('0x3c')]);_0x713626['attributes']=_[_0x300e('0x3e')](_0x11d0e2[_0x300e('0x3a')],qs[_0x300e('0x3f')](_0x1f1ae2['query']['fields']));_0x713626[_0x300e('0x40')]=_0x713626[_0x300e('0x40')][_0x300e('0x41')]?_0x713626[_0x300e('0x40')]:_0x11d0e2[_0x300e('0x3a')];if(!_0x1f1ae2[_0x300e('0x3c')][_0x300e('0x42')](_0x300e('0x43'))){_0x713626[_0x300e('0x24')]=qs[_0x300e('0x24')](_0x1f1ae2[_0x300e('0x3c')][_0x300e('0x24')]);_0x713626[_0x300e('0x22')]=qs[_0x300e('0x22')](_0x1f1ae2['query'][_0x300e('0x22')]);}_0x713626[_0x300e('0x44')]=qs[_0x300e('0x45')](_0x1f1ae2[_0x300e('0x3c')][_0x300e('0x45')]);_0x713626[_0x300e('0x46')]=qs[_0x300e('0x3d')](_[_0x300e('0x47')](_0x1f1ae2[_0x300e('0x3c')],_0x11d0e2[_0x300e('0x3d')]),_0x4138cd);if(_0x1f1ae2[_0x300e('0x3c')]['filter']){_0x713626[_0x300e('0x46')]=_['merge'](_0x713626[_0x300e('0x46')],{'$or':_['map'](_0x4138cd,function(_0x1a3815){if(_0x1a3815[_0x300e('0x38')]!==_0x300e('0x48')){var _0x14dfe4={};_0x14dfe4[_0x1a3815[_0x300e('0x31')]]={'$like':'%'+_0x1f1ae2[_0x300e('0x3c')][_0x300e('0x49')]+'%'};return _0x14dfe4;}})});}_0x713626=_[_0x300e('0x4a')]({},_0x713626,_0x1f1ae2[_0x300e('0x4b')]);var _0x1b0453={'where':_0x713626[_0x300e('0x46')]};return db[_0x300e('0x35')][_0x300e('0x25')](_0x1b0453)[_0x300e('0x2d')](function(_0x4df861){_0x29d777[_0x300e('0x25')]=_0x4df861;if(_0x1f1ae2['query']['includeAll']){_0x713626[_0x300e('0x4c')]=[{'all':!![]}];}return db[_0x300e('0x35')][_0x300e('0x4d')](_0x713626);})[_0x300e('0x2d')](function(_0x43877b){_0x29d777[_0x300e('0x4e')]=_0x43877b;return _0x29d777;})[_0x300e('0x2d')](respondWithFilteredResult(_0x533719,_0x713626))['catch'](handleError(_0x533719,null));};exports[_0x300e('0x4f')]=function(_0x39e64b,_0x5c1e10){var _0x192d14={'raw':!![],'where':{'id':_0x39e64b['params']['id']}},_0x54cc0d={};_0x54cc0d[_0x300e('0x3a')]=_[_0x300e('0x3b')](db['Plugin'][_0x300e('0x36')]);_0x54cc0d['query']=_['keys'](_0x39e64b['query']);_0x54cc0d['filters']=_[_0x300e('0x3e')](_0x54cc0d['model'],_0x54cc0d[_0x300e('0x3c')]);_0x192d14[_0x300e('0x40')]=_['intersection'](_0x54cc0d[_0x300e('0x3a')],qs[_0x300e('0x3f')](_0x39e64b[_0x300e('0x3c')]['fields']));_0x192d14['attributes']=_0x192d14[_0x300e('0x40')][_0x300e('0x41')]?_0x192d14[_0x300e('0x40')]:_0x54cc0d['model'];if(_0x39e64b[_0x300e('0x3c')]['includeAll']){_0x192d14[_0x300e('0x4c')]=[{'all':!![]}];}_0x192d14=_['merge']({},_0x192d14,_0x39e64b['options']);return db['Plugin'][_0x300e('0x50')](_0x192d14)[_0x300e('0x2d')](handleEntityNotFound(_0x5c1e10,null))[_0x300e('0x2d')](respondWithResult(_0x5c1e10,null))['catch'](handleError(_0x5c1e10,null));};exports[_0x300e('0x51')]=function(_0x29f541,_0x3b0f81,_0x2f0766){return db[_0x300e('0x35')][_0x300e('0x50')]({'where':{'id':_0x29f541[_0x300e('0x52')]['id']},'attributes':['name',_0x300e('0x5')],'raw':!![]})[_0x300e('0x2d')](handleEntityNotFound(_0x3b0f81,null))[_0x300e('0x2d')](function(_0x5f52d3){if(_0x5f52d3){var _0x299935=path[_0x300e('0x53')](config[_0x300e('0x54')],_0x300e('0x55'),util[_0x300e('0x56')](_0x300e('0x57'),path[_0x300e('0x58')](_0x5f52d3[_0x300e('0x5')])));var _0x4b2772=fs[_0x300e('0x59')](_0x299935);var _0xd14e4b=archiver(_0x300e('0x5a'),{'zlib':{'level':0x9}});_0xd14e4b['on'](_0x300e('0x5b'),function(_0x11afa7){if(_0x11afa7[_0x300e('0x5c')]===_0x300e('0x5d')){logger[_0x300e('0x30')](_0x11afa7);}else{throw new db[(_0x300e('0x5e'))]['Error'](_0x300e('0x5f'));}});_0xd14e4b['on']('error',function(_0x5eeae4){throw new db[(_0x300e('0x5e'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0xd14e4b[_0x300e('0x60')](_0x4b2772);_0xd14e4b[_0x300e('0x61')](_0x300e('0x62'),{'cwd':path['join'](config[_0x300e('0x54')],_0x300e('0x55'),path[_0x300e('0x63')](_0x5f52d3[_0x300e('0x5')])),'ignore':[path['join'](path[_0x300e('0x58')](_0x5f52d3['path']),_0x300e('0x64')),path[_0x300e('0x53')](path[_0x300e('0x58')](_0x5f52d3[_0x300e('0x5')]),'attachments/**/*')],'nodir':!![]})[_0x300e('0x65')]();_0x4b2772['on'](_0x300e('0x66'),function(){if(!fs[_0x300e('0x67')](_0x299935)){throw new db[(_0x300e('0x5e'))][(_0x300e('0x68'))](_0x300e('0x69'));}return _0x3b0f81['download'](_0x299935,util['format'](_0x300e('0x57'),path[_0x300e('0x58')](_0x5f52d3[_0x300e('0x5')])),function(_0x44efba){if(_0x44efba){throw new db[(_0x300e('0x5e'))][(_0x300e('0x68'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x300e('0x6a')](_0x299935);logger[_0x300e('0x6b')](_0x300e('0x6c'));logger['info'](_0x300e('0x6d'));});});}return null;})[_0x300e('0x6e')](handleError(_0x3b0f81,null));};exports[_0x300e('0x6f')]=function(_0x1b830d,_0x25902a,_0xec93bd){var _0x26bbab=path[_0x300e('0x58')](_0x1b830d['file']['filename'],path[_0x300e('0x70')](_0x1b830d[_0x300e('0x71')]['filename']));var _0x5534ab=path[_0x300e('0x53')](config[_0x300e('0x54')],'server/files/plugins',_0x1b830d[_0x300e('0x71')]['filename']);var _0x5a490b=path[_0x300e('0x53')](config[_0x300e('0x54')],_0x300e('0x55'),_0x26bbab);logger[_0x300e('0x6b')](_0x300e('0x72'),_0x5534ab);logger[_0x300e('0x6b')]('Plugin\x20upload\x20destination:\x20%s',_0x5a490b);try{fs['chmodSync'](_0x5534ab,parseInt(_0x300e('0x73'),0x8));extract(_0x5534ab,{'dir':_0x5a490b},function(_0x13aaf3){if(_0x13aaf3){logger[_0x300e('0x30')](_0x13aaf3);handleError(_0x13aaf3,!![]);};var _0xf23755=fs[_0x300e('0x74')](_0x5a490b);if(_0xf23755['length']>0x1){removeReferences(_0x5534ab,_0x5a490b);logger[_0x300e('0x30')]('Invalid\x20plugin\x20structure');return _0xec93bd(new Error(_0x300e('0x75')));}var _0x5437f0=fs['lstatSync'](path[_0x300e('0x53')](_0x5a490b,_0xf23755[0x0]));if(_0x5437f0[_0x300e('0x76')]()){removeReferences(_0x5534ab,_0x5a490b);logger[_0x300e('0x30')]('Invalid\x20plugin\x20structure');return _0xec93bd(new Error(_0x300e('0x75')));}if(_0x5437f0[_0x300e('0x77')]()){var _0x5c74a0=fs[_0x300e('0x74')](path[_0x300e('0x53')](_0x5a490b,_0xf23755[0x0]));if(_0x5c74a0[_0x300e('0x41')]===0x0){removeReferences(_0x5534ab,_0x5a490b);logger[_0x300e('0x30')](_0x300e('0x75'));return _0xec93bd(new Error('Invalid\x20plugin\x20structure'));}var _0x26ddfa=_0x5c74a0[_0x300e('0x78')](function(_0x316b22){return _0x316b22===_0x300e('0x79');});if(!_0x26ddfa){return _0xec93bd(new Error(_0x300e('0x7a')));}var _0x6cd3a=fs[_0x300e('0x7b')](path['join'](_0x5a490b,_0xf23755[0x0],'manifest.json'));var _0x16cdc5=JSON[_0x300e('0x7c')](_0x6cd3a);if(_0x300e('0x23')==typeof _0x16cdc5[_0x300e('0x31')]){return _0xec93bd(new Error(_0x300e('0x7d')));}if(_0x300e('0x23')==typeof _0x16cdc5['type']){return _0xec93bd(new Error(_0x300e('0x7e')));}if('undefined'==typeof _0x16cdc5[_0x300e('0x7f')]){return _0xec93bd(new Error(_0x300e('0x80')));}if(_0x300e('0x23')==typeof _0x16cdc5['parameters']){return _0xec93bd(new Error(_0x300e('0x81')));}if(_0x16cdc5[_0x300e('0x38')]===_0x300e('0x82')){if(_0x300e('0x23')==typeof _0x16cdc5[_0x300e('0x83')]['views']){return _0xec93bd(new Error('Invalid\x20manifest:\x20views\x20missing'));}if('undefined'==typeof _0x16cdc5[_0x300e('0x83')][_0x300e('0x84')]['admin']&&_0x300e('0x23')==typeof _0x16cdc5[_0x300e('0x83')][_0x300e('0x84')][_0x300e('0x85')]){return _0xec93bd(new Error(_0x300e('0x86')));}}else if(_0x16cdc5[_0x300e('0x38')]===_0x300e('0x87')){if(_0x300e('0x23')==typeof _0x16cdc5[_0x300e('0x83')]['scriptName']){return _0xec93bd(new Error(_0x300e('0x88')));}if(_0x300e('0x23')==typeof _0x16cdc5['parameters'][_0x300e('0x89')]){return _0xec93bd(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0xec93bd(new Error(_0x300e('0x8a')));}var _0x7d1573=_0x16cdc5[_0x300e('0x31')];var _0x569805=_0x16cdc5[_0x300e('0x8b')];var _0x2121da=_0x16cdc5[_0x300e('0x38')];var _0xbd9e11=_0x16cdc5[_0x300e('0x8c')]?_0x16cdc5[_0x300e('0x8c')]:_0x300e('0x8d');var _0x332264=_0x16cdc5[_0x300e('0x8e')]?_0x16cdc5['icon']:_0x300e('0x8f');var _0x1ea1c7='';var _0x115af9='';var _0x2c0221='';var _0x6cdfb8='';var _0xf27f6a=_0x16cdc5[_0x300e('0x7f')];if(_0x2121da===_0x300e('0x82')){if(_0x300e('0x23')!=typeof _0x16cdc5['parameters'][_0x300e('0x84')]['admin']){var _0x4ae08e=_0x16cdc5[_0x300e('0x83')][_0x300e('0x84')][_0x300e('0x90')];if(!/^(f|ht)tps?:\/\//i[_0x300e('0x91')](_0x4ae08e)){_0x1ea1c7=path[_0x300e('0x53')](_0x300e('0x92'),_0x26bbab,_0xf23755[0x0],_0x4ae08e);}else{_0x1ea1c7=_0x4ae08e;}}else{logger[_0x300e('0x6b')](_0x300e('0x93'));}if('undefined'!=typeof _0x16cdc5[_0x300e('0x83')]['views'][_0x300e('0x85')]){var _0x1b3fbe=_0x16cdc5[_0x300e('0x83')][_0x300e('0x84')][_0x300e('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x300e('0x91')](_0x1b3fbe)){_0x115af9=path[_0x300e('0x53')]('plugins',_0x26bbab,_0xf23755[0x0],_0x1b3fbe);}else{_0x115af9=_0x1b3fbe;}}else{logger[_0x300e('0x6b')](_0x300e('0x94'));}}else if(_0x2121da===_0x300e('0x87')){_0x2c0221=_0x16cdc5['parameters']['scriptName'];_0x6cdfb8=_0x16cdc5['parameters'][_0x300e('0x89')];if(_0x300e('0x23')!=typeof _0x16cdc5['parameters'][_0x300e('0x84')]){if(_0x300e('0x23')!=typeof _0x16cdc5[_0x300e('0x83')]['views']['admin']){var _0x4ae08e=_0x16cdc5[_0x300e('0x83')][_0x300e('0x84')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x300e('0x91')](_0x4ae08e)){_0x1ea1c7=path[_0x300e('0x53')](_0x300e('0x92'),_0x26bbab,_0xf23755[0x0],_0x4ae08e);}else{_0x1ea1c7=_0x4ae08e;}}if(_0x300e('0x23')!=typeof _0x16cdc5[_0x300e('0x83')][_0x300e('0x84')][_0x300e('0x85')]){var _0x1b3fbe=_0x16cdc5[_0x300e('0x83')][_0x300e('0x84')][_0x300e('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x300e('0x91')](_0x1b3fbe)){_0x115af9=path[_0x300e('0x53')](_0x300e('0x92'),_0x26bbab,_0xf23755[0x0],_0x1b3fbe);}else{_0x115af9=_0x1b3fbe;}}}}var _0x15d226={'name':_0x7d1573,'description':_0x569805,'path':path['join'](_0x26bbab,_0xf23755[0x0]),'type':_0x2121da,'sidebar':_0xbd9e11,'icon':_0x332264,'adminUrl':_0x1ea1c7,'agentUrl':_0x115af9,'scriptName':_0x2c0221,'scriptPath':_0x6cdfb8,'version':_0xf27f6a};removeReferences(_0x5534ab,null);return db[_0x300e('0x35')][_0x300e('0x95')](_0x15d226)[_0x300e('0x2d')](function(_0x3d4803){var _0x9891b2={'role':_0x1b830d['body'][_0x300e('0x96')],'userProfileId':_0x1b830d[_0x300e('0x97')][_0x300e('0x98')]};if(!_0x9891b2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x9891b2[_0x300e('0x96')]===_0x300e('0x99')){var _0x13a9bf=_0x3d4803[_0x300e('0x2f')]({'plain':!![]});return db['UserProfileSection'][_0x300e('0x50')]({'where':{'name':_0x300e('0x9a'),'userProfileId':_0x9891b2[_0x300e('0x98')]},'raw':!![]})['then'](function(_0x8b492){if(_0x8b492&&_0x8b492[_0x300e('0x9b')]===0x0){return db[_0x300e('0x9c')][_0x300e('0x95')]({'name':_0x13a9bf[_0x300e('0x31')],'resourceId':_0x13a9bf['id'],'type':_0x8b492['name'],'sectionId':_0x8b492['id']},{})[_0x300e('0x2d')](function(){return _0x3d4803;});}else{return _0x3d4803;}})['catch'](function(_0x19585d){logger[_0x300e('0x30')](_0x300e('0x9d'),_0x19585d);throw _0x19585d;});}return _0x3d4803;})[_0x300e('0x2d')](respondWithResult(_0x25902a,null))[_0x300e('0x6e')](handleError(_0x25902a,null));}});}catch(_0x1b9a3c){_0x25902a[_0x300e('0x20')](0x1f4)[_0x300e('0x32')](_0x1b9a3c);}};function removeReferences(_0x1eca2b,_0x10e32f){try{if(_0x1eca2b){fs[_0x300e('0x6a')](_0x1eca2b);logger['info'](_0x300e('0x9e'));}if(_0x10e32f){rimraf(_0x10e32f,function(){});logger[_0x300e('0x6b')](_0x300e('0x9f'));}}catch(_0x5990d9){logger[_0x300e('0x30')](_0x5990d9);}}exports['update']=function(_0x5cd689,_0x3526fe,_0x522a62){return db[_0x300e('0x35')][_0x300e('0x50')]({'where':{'id':_0x5cd689[_0x300e('0x52')]['id']}})[_0x300e('0x2d')](handleEntityNotFound(_0x3526fe,null))['then'](saveUpdates(_0x5cd689[_0x300e('0x97')],null))['then'](respondWithResult(_0x3526fe,null))[_0x300e('0x6e')](handleError(_0x3526fe,null));};exports[_0x300e('0xa0')]=function(_0x54299f,_0x8886d3,_0x55ee00){return db[_0x300e('0x35')]['find']({'where':{'id':_0x54299f[_0x300e('0x52')]['id']}})[_0x300e('0x2d')](function(_0x38ca6e){if(_0x38ca6e){return _0x38ca6e[_0x300e('0x2e')]();}})[_0x300e('0x2d')](function(_0x122a0b){rimraf(path[_0x300e('0x53')](config[_0x300e('0x54')],_0x300e('0x55'),path[_0x300e('0x63')](_0x122a0b[_0x300e('0x5')])),function(){});return _0x122a0b;})['then'](handleEntityNotFound(_0x8886d3,null))[_0x300e('0x2d')](respondWithStatusCode(_0x8886d3,null))[_0x300e('0x6e')](handleError(_0x8886d3,null));};exports[_0x300e('0xa1')]=function(_0x381012,_0x3e385b,_0x18de27){return BPromise['resolve']()['then'](function(){if(!_0x381012['query'][_0x300e('0x5')]){throw new Error(_0x300e('0xa2'));}if(!_0x381012['query'][_0x300e('0xa3')]){throw new Error(_0x300e('0xa4'));}var _0x3ba557=_0x381012[_0x300e('0x3c')]['hostname']?_0x381012[_0x300e('0x3c')][_0x300e('0xa5')]+':'+_0x381012[_0x300e('0x3c')][_0x300e('0xa3')]:_0x300e('0xa6')+_0x381012['query'][_0x300e('0xa3')];var _0x33c939=_0x381012['query']['json']?_0x381012[_0x300e('0x3c')][_0x300e('0x28')]:!![];var _0x2f2c71=_0x381012[_0x300e('0x3c')][_0x300e('0xa7')]?_0x381012[_0x300e('0x3c')]['encoding']:null;var _0xd4c8b8={'method':_0x381012['method'],'uri':util['format'](_0x300e('0xa8'),_0x3ba557,_0x381012[_0x300e('0x3c')][_0x300e('0x5')]),'json':_0x33c939,'resolveWithFullResponse':!![],'encoding':_0x2f2c71,'qs':_0x381012['query']};if(_0x381012['headers']){_0xd4c8b8[_0x300e('0xa9')]=_0x381012[_0x300e('0xa9')];if(_0xd4c8b8[_0x300e('0xa9')][_0x300e('0xaa')]){delete _0xd4c8b8['headers'][_0x300e('0xaa')];}}if(_0xd4c8b8[_0x300e('0xa9')][_0x300e('0xab')]){delete _0xd4c8b8[_0x300e('0xa9')][_0x300e('0xab')];}return rp(_0xd4c8b8);})[_0x300e('0x2d')](function(_0x4fe199){if(_0x4fe199){_0x3e385b[_0x300e('0x26')](_0x4fe199[_0x300e('0xa9')]);logger[_0x300e('0x6b')](_0x4fe199[_0x300e('0x97')]);if(_['endsWith'](_0x381012[_0x300e('0x3c')][_0x300e('0x5')],'download')&&_0x4fe199[_0x300e('0xac')]==0x1f4){return _0x3e385b[_0x300e('0x1f')](_0x4fe199['statusCode']);}else{return _0x3e385b[_0x300e('0x20')](_0x4fe199[_0x300e('0xac')])[_0x300e('0x32')](_0x4fe199[_0x300e('0x97')]);}}else{return _0x3e385b[_0x300e('0x1f')](0xc8);}})['catch'](handleError(_0x3e385b,null));};exports['webhookPost']=function(_0xfbeb34,_0xa70098,_0x227d2b){return BPromise[_0x300e('0xad')]()[_0x300e('0x2d')](function(){if(!_0xfbeb34[_0x300e('0x3c')][_0x300e('0x5')]){throw new Error(_0x300e('0xa2'));}if(!_0xfbeb34['query'][_0x300e('0xa3')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x40c867=_0xfbeb34[_0x300e('0x3c')]['hostname']?_0xfbeb34[_0x300e('0x3c')][_0x300e('0xa5')]+':'+_0xfbeb34['query']['port']:_0x300e('0xa6')+_0xfbeb34[_0x300e('0x3c')][_0x300e('0xa3')];var _0x2c038f=_0xfbeb34['query']['json']?_0xfbeb34[_0x300e('0x3c')][_0x300e('0x28')]:!![];var _0x188b07=_0xfbeb34[_0x300e('0x3c')][_0x300e('0xa7')]?_0xfbeb34['query'][_0x300e('0xa7')]:null;var _0x3e35a5={'method':_0xfbeb34['method'],'uri':util[_0x300e('0x56')](_0x300e('0xa8'),_0x40c867,_0xfbeb34['query'][_0x300e('0x5')]),'json':_0x2c038f,'resolveWithFullResponse':!![],'encoding':_0x188b07,'body':_0xfbeb34[_0x300e('0x97')]};if(_0xfbeb34[_0x300e('0xa9')]){_0x3e35a5[_0x300e('0xa9')]=_0xfbeb34['headers'];if(_0x3e35a5['headers'][_0x300e('0xaa')]){delete _0x3e35a5['headers'][_0x300e('0xaa')];}}if(_0x3e35a5[_0x300e('0xa9')][_0x300e('0xab')]){delete _0x3e35a5['headers'][_0x300e('0xab')];}return rp(_0x3e35a5);})[_0x300e('0x2d')](function(_0x143628){if(_0x143628){_0xa70098['set'](_0x143628[_0x300e('0xa9')]);logger['info'](_0x143628[_0x300e('0x97')]);return _0xa70098[_0x300e('0x20')](_0x143628['statusCode'])['send'](_0x143628[_0x300e('0x97')]);}else{return _0xa70098['sendStatus'](0xc8);}})[_0x300e('0x6e')](handleError(_0xa70098,null));};
\ No newline at end of file
+var _0xc764=['zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','**/*','join','dirname','node_modules/**/*','attachments/**/*','finalize','Plugin\x20not\x20found','download','format','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','lstatSync','isFile','Invalid\x20plugin\x20structure','isDirectory','Plugin\x20manifest\x20missing','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','html','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','parameters','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','icon','icon-apps','plugins','Warning:\x20admin\x20view\x20not\x20specified','test','admin','body','userProfileId','UserProfileSection','Plugins','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','method','%s%s','headers','content-length','endsWith','statusCode','webhookPost','\x27PORT\x27\x20parameter\x20not\x20specified','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','status','offset','undefined','limit','count','set','json','reject','update','then','destroy','get','end','sendStatus','error','stack','name','send','index','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Plugin','includeAll','findAll','params','include','find','catch','root','server/files/plugins','%s.zip','basename','createWriteStream'];(function(_0x22d5ce,_0x5a7cca){var _0x41c5a6=function(_0x2f791f){while(--_0x2f791f){_0x22d5ce['push'](_0x22d5ce['shift']());}};_0x41c5a6(++_0x5a7cca);}(_0xc764,0xfe));var _0x4c76=function(_0x43f55a,_0x5e21fd){_0x43f55a=_0x43f55a-0x0;var _0x337f69=_0xc764[_0x43f55a];return _0x337f69;};'use strict';var emlformat=require(_0x4c76('0x0'));var rimraf=require(_0x4c76('0x1'));var zipdir=require(_0x4c76('0x2'));var jsonpatch=require(_0x4c76('0x3'));var rp=require('request-promise');var moment=require(_0x4c76('0x4'));var BPromise=require(_0x4c76('0x5'));var Mustache=require('mustache');var util=require(_0x4c76('0x6'));var path=require(_0x4c76('0x7'));var sox=require(_0x4c76('0x8'));var csv=require('to-csv');var ejs=require(_0x4c76('0x9'));var fs=require('fs');var fs_extra=require(_0x4c76('0xa'));var _=require(_0x4c76('0xb'));var squel=require(_0x4c76('0xc'));var crypto=require(_0x4c76('0xd'));var jsforce=require(_0x4c76('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4c76('0xf'));var querystring=require(_0x4c76('0x10'));var Papa=require(_0x4c76('0x11'));var extract=require('extract-zip');var rimraf=require(_0x4c76('0x1'));var archiver=require(_0x4c76('0x12'));var Redis=require(_0x4c76('0x13'));var authService=require(_0x4c76('0x14'));var qs=require(_0x4c76('0x15'));var as=require(_0x4c76('0x16'));var hardwareService=require(_0x4c76('0x17'));var logger=require(_0x4c76('0x18'))(_0x4c76('0x19'));var utils=require(_0x4c76('0x1a'));var config=require(_0x4c76('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x4c76('0x1c'))['db'];config['redis']=_[_0x4c76('0x1d')](config[_0x4c76('0x1e')],{'host':_0x4c76('0x1f'),'port':0x18eb});var socket=require(_0x4c76('0x20'))(new Redis(config[_0x4c76('0x1e')]));require(_0x4c76('0x21'))[_0x4c76('0x22')](socket);function respondWithStatusCode(_0x4eb99a,_0x15cd8b){_0x15cd8b=_0x15cd8b||0xcc;return function(_0x5bc1e7){if(_0x5bc1e7){return _0x4eb99a['sendStatus'](_0x15cd8b);}return _0x4eb99a[_0x4c76('0x23')](_0x15cd8b)['end']();};}function respondWithResult(_0x4020c4,_0x187db3){_0x187db3=_0x187db3||0xc8;return function(_0x25738a){if(_0x25738a){return _0x4020c4[_0x4c76('0x23')](_0x187db3)['json'](_0x25738a);}};}function respondWithFilteredResult(_0x14e8ab,_0x3c10e6){return function(_0x549e90){if(_0x549e90){var _0x150319=typeof _0x3c10e6[_0x4c76('0x24')]===_0x4c76('0x25')&&typeof _0x3c10e6[_0x4c76('0x26')]===_0x4c76('0x25');var _0xc8641a=_0x549e90[_0x4c76('0x27')];var _0x41f754=_0x150319?0x0:_0x3c10e6[_0x4c76('0x24')];var _0x2bcfdc=_0x150319?_0x549e90[_0x4c76('0x27')]:_0x3c10e6['offset']+_0x3c10e6[_0x4c76('0x26')];var _0x5d6ef7;if(_0x2bcfdc>=_0xc8641a){_0x2bcfdc=_0xc8641a;_0x5d6ef7=0xc8;}else{_0x5d6ef7=0xce;}_0x14e8ab[_0x4c76('0x23')](_0x5d6ef7);return _0x14e8ab[_0x4c76('0x28')]('Content-Range',_0x41f754+'-'+_0x2bcfdc+'/'+_0xc8641a)[_0x4c76('0x29')](_0x549e90);}return null;};}function patchUpdates(_0x240633){return function(_0x418038){try{jsonpatch['apply'](_0x418038,_0x240633,!![]);}catch(_0x132d6f){return BPromise[_0x4c76('0x2a')](_0x132d6f);}return _0x418038['save']();};}function saveUpdates(_0x2e5767,_0x56c2a6){return function(_0x1a8724){if(_0x1a8724){return _0x1a8724[_0x4c76('0x2b')](_0x2e5767)[_0x4c76('0x2c')](function(_0xe31e67){return _0xe31e67;});}return null;};}function removeEntity(_0x254325,_0xb40a4d){return function(_0x16f48c){if(_0x16f48c){return _0x16f48c[_0x4c76('0x2d')]()[_0x4c76('0x2c')](function(){var _0x37db6b=_0x16f48c[_0x4c76('0x2e')]({'plain':!![]});var _0x2f759e='Plugins';return db['UserProfileResource']['destroy']({'where':{'type':_0x2f759e,'resourceId':_0x37db6b['id']}})[_0x4c76('0x2c')](function(){return _0x16f48c;});})['then'](function(){_0x254325[_0x4c76('0x23')](0xcc)[_0x4c76('0x2f')]();});}};}function handleEntityNotFound(_0x4b2676,_0x2f0c0b){return function(_0x51f7db){if(!_0x51f7db){_0x4b2676[_0x4c76('0x30')](0x194);}return _0x51f7db;};}function handleError(_0x59713a,_0x258f01){_0x258f01=_0x258f01||0x1f4;return function(_0xe53f68){logger[_0x4c76('0x31')](_0xe53f68[_0x4c76('0x32')]);if(_0xe53f68[_0x4c76('0x33')]){delete _0xe53f68['name'];}_0x59713a[_0x4c76('0x23')](_0x258f01)[_0x4c76('0x34')](_0xe53f68);};}exports[_0x4c76('0x35')]=function(_0x356963,_0x49444c){var _0x5579b1={},_0x5a137e={},_0x2a5f7d={'count':0x0,'rows':[]};var _0x5c67d3=_['map'](db['Plugin']['rawAttributes'],function(_0x181a28){return{'name':_0x181a28[_0x4c76('0x36')],'type':_0x181a28[_0x4c76('0x37')][_0x4c76('0x38')]};});_0x5a137e[_0x4c76('0x39')]=_[_0x4c76('0x3a')](_0x5c67d3,_0x4c76('0x33'));_0x5a137e[_0x4c76('0x3b')]=_[_0x4c76('0x3c')](_0x356963[_0x4c76('0x3b')]);_0x5a137e[_0x4c76('0x3d')]=_[_0x4c76('0x3e')](_0x5a137e[_0x4c76('0x39')],_0x5a137e[_0x4c76('0x3b')]);_0x5579b1[_0x4c76('0x3f')]=_[_0x4c76('0x3e')](_0x5a137e[_0x4c76('0x39')],qs['fields'](_0x356963[_0x4c76('0x3b')][_0x4c76('0x40')]));_0x5579b1['attributes']=_0x5579b1[_0x4c76('0x3f')][_0x4c76('0x41')]?_0x5579b1[_0x4c76('0x3f')]:_0x5a137e[_0x4c76('0x39')];if(!_0x356963[_0x4c76('0x3b')][_0x4c76('0x42')](_0x4c76('0x43'))){_0x5579b1[_0x4c76('0x26')]=qs['limit'](_0x356963[_0x4c76('0x3b')]['limit']);_0x5579b1[_0x4c76('0x24')]=qs[_0x4c76('0x24')](_0x356963[_0x4c76('0x3b')]['offset']);}_0x5579b1[_0x4c76('0x44')]=qs['sort'](_0x356963[_0x4c76('0x3b')][_0x4c76('0x45')]);_0x5579b1[_0x4c76('0x46')]=qs[_0x4c76('0x3d')](_[_0x4c76('0x47')](_0x356963[_0x4c76('0x3b')],_0x5a137e['filters']),_0x5c67d3);if(_0x356963[_0x4c76('0x3b')][_0x4c76('0x48')]){_0x5579b1[_0x4c76('0x46')]=_[_0x4c76('0x49')](_0x5579b1[_0x4c76('0x46')],{'$or':_[_0x4c76('0x3a')](_0x5c67d3,function(_0x5321bb){if(_0x5321bb[_0x4c76('0x37')]!==_0x4c76('0x4a')){var _0x39fae9={};_0x39fae9[_0x5321bb[_0x4c76('0x33')]]={'$like':'%'+_0x356963[_0x4c76('0x3b')][_0x4c76('0x48')]+'%'};return _0x39fae9;}})});}_0x5579b1=_[_0x4c76('0x49')]({},_0x5579b1,_0x356963[_0x4c76('0x4b')]);var _0x44fbd2={'where':_0x5579b1['where']};return db[_0x4c76('0x4c')][_0x4c76('0x27')](_0x44fbd2)[_0x4c76('0x2c')](function(_0xab502c){_0x2a5f7d[_0x4c76('0x27')]=_0xab502c;if(_0x356963[_0x4c76('0x3b')][_0x4c76('0x4d')]){_0x5579b1['include']=[{'all':!![]}];}return db[_0x4c76('0x4c')][_0x4c76('0x4e')](_0x5579b1);})[_0x4c76('0x2c')](function(_0x316524){_0x2a5f7d['rows']=_0x316524;return _0x2a5f7d;})[_0x4c76('0x2c')](respondWithFilteredResult(_0x49444c,_0x5579b1))['catch'](handleError(_0x49444c,null));};exports['show']=function(_0x3f4d09,_0x403ff0){var _0x21df92={'raw':!![],'where':{'id':_0x3f4d09[_0x4c76('0x4f')]['id']}},_0x1eb15d={};_0x1eb15d[_0x4c76('0x39')]=_[_0x4c76('0x3c')](db['Plugin']['rawAttributes']);_0x1eb15d[_0x4c76('0x3b')]=_[_0x4c76('0x3c')](_0x3f4d09[_0x4c76('0x3b')]);_0x1eb15d[_0x4c76('0x3d')]=_[_0x4c76('0x3e')](_0x1eb15d[_0x4c76('0x39')],_0x1eb15d[_0x4c76('0x3b')]);_0x21df92[_0x4c76('0x3f')]=_[_0x4c76('0x3e')](_0x1eb15d[_0x4c76('0x39')],qs[_0x4c76('0x40')](_0x3f4d09[_0x4c76('0x3b')][_0x4c76('0x40')]));_0x21df92[_0x4c76('0x3f')]=_0x21df92[_0x4c76('0x3f')][_0x4c76('0x41')]?_0x21df92[_0x4c76('0x3f')]:_0x1eb15d[_0x4c76('0x39')];if(_0x3f4d09[_0x4c76('0x3b')]['includeAll']){_0x21df92[_0x4c76('0x50')]=[{'all':!![]}];}_0x21df92=_['merge']({},_0x21df92,_0x3f4d09[_0x4c76('0x4b')]);return db[_0x4c76('0x4c')][_0x4c76('0x51')](_0x21df92)['then'](handleEntityNotFound(_0x403ff0,null))[_0x4c76('0x2c')](respondWithResult(_0x403ff0,null))[_0x4c76('0x52')](handleError(_0x403ff0,null));};exports['download']=function(_0x55ab60,_0x20232b,_0x287c57){return db[_0x4c76('0x4c')]['find']({'where':{'id':_0x55ab60[_0x4c76('0x4f')]['id']},'attributes':[_0x4c76('0x33'),_0x4c76('0x7')],'raw':!![]})[_0x4c76('0x2c')](handleEntityNotFound(_0x20232b,null))[_0x4c76('0x2c')](function(_0x1bbc65){if(_0x1bbc65){var _0x55cc60=path['join'](config[_0x4c76('0x53')],_0x4c76('0x54'),util['format'](_0x4c76('0x55'),path[_0x4c76('0x56')](_0x1bbc65[_0x4c76('0x7')])));var _0xab3643=fs[_0x4c76('0x57')](_0x55cc60);var _0x116e42=archiver(_0x4c76('0x58'),{'zlib':{'level':0x9}});_0x116e42['on'](_0x4c76('0x59'),function(_0x4187e9){if(_0x4187e9[_0x4c76('0x5a')]===_0x4c76('0x5b')){logger['error'](_0x4187e9);}else{throw new db[(_0x4c76('0x5c'))][(_0x4c76('0x5d'))](_0x4c76('0x5e'));}});_0x116e42['on'](_0x4c76('0x31'),function(_0x1b9703){throw new db[(_0x4c76('0x5c'))][(_0x4c76('0x5d'))](_0x4c76('0x5e'));});_0x116e42['pipe'](_0xab3643);_0x116e42[_0x4c76('0x5f')](_0x4c76('0x60'),{'cwd':path[_0x4c76('0x61')](config[_0x4c76('0x53')],_0x4c76('0x54'),path[_0x4c76('0x62')](_0x1bbc65['path'])),'ignore':[path['join'](path['basename'](_0x1bbc65[_0x4c76('0x7')]),_0x4c76('0x63')),path[_0x4c76('0x61')](path[_0x4c76('0x56')](_0x1bbc65[_0x4c76('0x7')]),_0x4c76('0x64'))],'nodir':!![]})[_0x4c76('0x65')]();_0xab3643['on']('close',function(){if(!fs['existsSync'](_0x55cc60)){throw new db['Sequelize'][(_0x4c76('0x5d'))](_0x4c76('0x66'));}return _0x20232b[_0x4c76('0x67')](_0x55cc60,util[_0x4c76('0x68')](_0x4c76('0x55'),path[_0x4c76('0x56')](_0x1bbc65[_0x4c76('0x7')])),function(_0xa73cc2){if(_0xa73cc2){throw new db[(_0x4c76('0x5c'))]['Error'](_0x4c76('0x69'));}fs['unlinkSync'](_0x55cc60);logger[_0x4c76('0x6a')](_0x4c76('0x6b'));logger[_0x4c76('0x6a')]('Temporary\x20file\x20removed');});});}return null;})[_0x4c76('0x52')](handleError(_0x20232b,null));};exports[_0x4c76('0x6c')]=function(_0x4a5964,_0x3f2a32,_0x441a1c){var _0x2977e4=path['basename'](_0x4a5964[_0x4c76('0x6d')][_0x4c76('0x6e')],path[_0x4c76('0x6f')](_0x4a5964[_0x4c76('0x6d')][_0x4c76('0x6e')]));var _0x4bdb62=path[_0x4c76('0x61')](config['root'],_0x4c76('0x54'),_0x4a5964[_0x4c76('0x6d')][_0x4c76('0x6e')]);var _0x502d91=path[_0x4c76('0x61')](config[_0x4c76('0x53')],'server/files/plugins',_0x2977e4);logger[_0x4c76('0x6a')](_0x4c76('0x70'),_0x4bdb62);logger[_0x4c76('0x6a')](_0x4c76('0x71'),_0x502d91);try{fs[_0x4c76('0x72')](_0x4bdb62,parseInt('0777',0x8));extract(_0x4bdb62,{'dir':_0x502d91},function(_0x52dba6){if(_0x52dba6){logger[_0x4c76('0x31')](_0x52dba6);handleError(_0x52dba6,!![]);};var _0x3a4682=fs[_0x4c76('0x73')](_0x502d91);if(_0x3a4682[_0x4c76('0x41')]>0x1){removeReferences(_0x4bdb62,_0x502d91);logger[_0x4c76('0x31')]('Invalid\x20plugin\x20structure');return _0x441a1c(new Error('Invalid\x20plugin\x20structure'));}var _0xe98161=fs[_0x4c76('0x74')](path[_0x4c76('0x61')](_0x502d91,_0x3a4682[0x0]));if(_0xe98161[_0x4c76('0x75')]()){removeReferences(_0x4bdb62,_0x502d91);logger[_0x4c76('0x31')](_0x4c76('0x76'));return _0x441a1c(new Error(_0x4c76('0x76')));}if(_0xe98161[_0x4c76('0x77')]()){var _0x38faf1=fs[_0x4c76('0x73')](path['join'](_0x502d91,_0x3a4682[0x0]));if(_0x38faf1['length']===0x0){removeReferences(_0x4bdb62,_0x502d91);logger[_0x4c76('0x31')](_0x4c76('0x76'));return _0x441a1c(new Error(_0x4c76('0x76')));}var _0x48ce26=_0x38faf1['some'](function(_0x1df742){return _0x1df742==='manifest.json';});if(!_0x48ce26){return _0x441a1c(new Error(_0x4c76('0x78')));}var _0x5527d0=fs[_0x4c76('0x79')](path['join'](_0x502d91,_0x3a4682[0x0],_0x4c76('0x7a')));var _0x15d8cf=JSON[_0x4c76('0x7b')](_0x5527d0);if(_0x4c76('0x25')==typeof _0x15d8cf[_0x4c76('0x33')]){return _0x441a1c(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x4c76('0x25')==typeof _0x15d8cf[_0x4c76('0x37')]){return _0x441a1c(new Error(_0x4c76('0x7c')));}if(_0x4c76('0x25')==typeof _0x15d8cf[_0x4c76('0x7d')]){return _0x441a1c(new Error(_0x4c76('0x7e')));}if(_0x4c76('0x25')==typeof _0x15d8cf['parameters']){return _0x441a1c(new Error(_0x4c76('0x7f')));}if(_0x15d8cf[_0x4c76('0x37')]===_0x4c76('0x80')){if('undefined'==typeof _0x15d8cf['parameters']['views']){return _0x441a1c(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x4c76('0x25')==typeof _0x15d8cf['parameters'][_0x4c76('0x81')]['admin']&&_0x4c76('0x25')==typeof _0x15d8cf['parameters'][_0x4c76('0x81')][_0x4c76('0x82')]){return _0x441a1c(new Error(_0x4c76('0x83')));}}else if(_0x15d8cf['type']===_0x4c76('0x84')){if(_0x4c76('0x25')==typeof _0x15d8cf[_0x4c76('0x85')][_0x4c76('0x86')]){return _0x441a1c(new Error(_0x4c76('0x87')));}if(_0x4c76('0x25')==typeof _0x15d8cf['parameters'][_0x4c76('0x88')]){return _0x441a1c(new Error(_0x4c76('0x89')));}}else{return _0x441a1c(new Error(_0x4c76('0x8a')));}var _0x592ff1=_0x15d8cf[_0x4c76('0x33')];var _0x225f0f=_0x15d8cf['description'];var _0x749076=_0x15d8cf[_0x4c76('0x37')];var _0x63bc89=_0x15d8cf[_0x4c76('0x8b')]?_0x15d8cf[_0x4c76('0x8b')]:'always';var _0x47f67c=_0x15d8cf[_0x4c76('0x8c')]?_0x15d8cf[_0x4c76('0x8c')]:_0x4c76('0x8d');var _0x16b00e='';var _0x4b85c3='';var _0x328ed2='';var _0x4d2f71='';var _0x17abaf=_0x15d8cf[_0x4c76('0x7d')];if(_0x749076===_0x4c76('0x80')){if(_0x4c76('0x25')!=typeof _0x15d8cf['parameters'][_0x4c76('0x81')]['admin']){var _0x1e8556=_0x15d8cf[_0x4c76('0x85')][_0x4c76('0x81')]['admin'];if(!/^(f|ht)tps?:\/\//i['test'](_0x1e8556)){_0x16b00e=path[_0x4c76('0x61')](_0x4c76('0x8e'),_0x2977e4,_0x3a4682[0x0],_0x1e8556);}else{_0x16b00e=_0x1e8556;}}else{logger[_0x4c76('0x6a')](_0x4c76('0x8f'));}if(_0x4c76('0x25')!=typeof _0x15d8cf[_0x4c76('0x85')]['views'][_0x4c76('0x82')]){var _0x11cddd=_0x15d8cf[_0x4c76('0x85')][_0x4c76('0x81')][_0x4c76('0x82')];if(!/^(f|ht)tps?:\/\//i[_0x4c76('0x90')](_0x11cddd)){_0x4b85c3=path[_0x4c76('0x61')](_0x4c76('0x8e'),_0x2977e4,_0x3a4682[0x0],_0x11cddd);}else{_0x4b85c3=_0x11cddd;}}else{logger[_0x4c76('0x6a')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x749076===_0x4c76('0x84')){_0x328ed2=_0x15d8cf[_0x4c76('0x85')]['scriptName'];_0x4d2f71=_0x15d8cf[_0x4c76('0x85')][_0x4c76('0x88')];if(_0x4c76('0x25')!=typeof _0x15d8cf[_0x4c76('0x85')]['views']){if(_0x4c76('0x25')!=typeof _0x15d8cf[_0x4c76('0x85')][_0x4c76('0x81')]['admin']){var _0x1e8556=_0x15d8cf['parameters'][_0x4c76('0x81')][_0x4c76('0x91')];if(!/^(f|ht)tps?:\/\//i[_0x4c76('0x90')](_0x1e8556)){_0x16b00e=path[_0x4c76('0x61')](_0x4c76('0x8e'),_0x2977e4,_0x3a4682[0x0],_0x1e8556);}else{_0x16b00e=_0x1e8556;}}if(_0x4c76('0x25')!=typeof _0x15d8cf[_0x4c76('0x85')][_0x4c76('0x81')][_0x4c76('0x82')]){var _0x11cddd=_0x15d8cf[_0x4c76('0x85')][_0x4c76('0x81')][_0x4c76('0x82')];if(!/^(f|ht)tps?:\/\//i[_0x4c76('0x90')](_0x11cddd)){_0x4b85c3=path[_0x4c76('0x61')]('plugins',_0x2977e4,_0x3a4682[0x0],_0x11cddd);}else{_0x4b85c3=_0x11cddd;}}}}var _0x3f7ae8={'name':_0x592ff1,'description':_0x225f0f,'path':path[_0x4c76('0x61')](_0x2977e4,_0x3a4682[0x0]),'type':_0x749076,'sidebar':_0x63bc89,'icon':_0x47f67c,'adminUrl':_0x16b00e,'agentUrl':_0x4b85c3,'scriptName':_0x328ed2,'scriptPath':_0x4d2f71,'version':_0x17abaf};removeReferences(_0x4bdb62,null);return db[_0x4c76('0x4c')]['create'](_0x3f7ae8)['then'](function(_0x56647e){var _0x2a78d5={'role':_0x4a5964['body']['role'],'userProfileId':_0x4a5964[_0x4c76('0x92')][_0x4c76('0x93')]};if(!_0x2a78d5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2a78d5['role']==='user'){var _0x36487c=_0x56647e[_0x4c76('0x2e')]({'plain':!![]});return db[_0x4c76('0x94')]['find']({'where':{'name':_0x4c76('0x95'),'userProfileId':_0x2a78d5[_0x4c76('0x93')]},'raw':!![]})[_0x4c76('0x2c')](function(_0x2d0063){if(_0x2d0063&&_0x2d0063[_0x4c76('0x96')]===0x0){return db[_0x4c76('0x97')][_0x4c76('0x98')]({'name':_0x36487c[_0x4c76('0x33')],'resourceId':_0x36487c['id'],'type':_0x2d0063[_0x4c76('0x33')],'sectionId':_0x2d0063['id']},{})[_0x4c76('0x2c')](function(){return _0x56647e;});}else{return _0x56647e;}})[_0x4c76('0x52')](function(_0xd99c30){logger[_0x4c76('0x31')](_0x4c76('0x99'),_0xd99c30);throw _0xd99c30;});}return _0x56647e;})[_0x4c76('0x2c')](respondWithResult(_0x3f2a32,null))[_0x4c76('0x52')](handleError(_0x3f2a32,null));}});}catch(_0x5c1d1b){_0x3f2a32[_0x4c76('0x23')](0x1f4)[_0x4c76('0x34')](_0x5c1d1b);}};function removeReferences(_0x4103e3,_0x48d487){try{if(_0x4103e3){fs['unlinkSync'](_0x4103e3);logger[_0x4c76('0x6a')](_0x4c76('0x9a'));}if(_0x48d487){rimraf(_0x48d487,function(){});logger[_0x4c76('0x6a')](_0x4c76('0x9b'));}}catch(_0x2bbaf2){logger[_0x4c76('0x31')](_0x2bbaf2);}}exports['update']=function(_0x4b6f9d,_0x2e78dc,_0x8d6c87){return db['Plugin'][_0x4c76('0x51')]({'where':{'id':_0x4b6f9d[_0x4c76('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2e78dc,null))[_0x4c76('0x2c')](saveUpdates(_0x4b6f9d[_0x4c76('0x92')],null))[_0x4c76('0x2c')](respondWithResult(_0x2e78dc,null))[_0x4c76('0x52')](handleError(_0x2e78dc,null));};exports['delete']=function(_0x542dc5,_0x439935,_0x20e856){return db[_0x4c76('0x4c')]['find']({'where':{'id':_0x542dc5[_0x4c76('0x4f')]['id']}})[_0x4c76('0x2c')](function(_0x459418){if(_0x459418){return _0x459418[_0x4c76('0x2d')]();}})[_0x4c76('0x2c')](function(_0x3d3ed0){rimraf(path[_0x4c76('0x61')](config[_0x4c76('0x53')],_0x4c76('0x54'),path['dirname'](_0x3d3ed0[_0x4c76('0x7')])),function(){});return _0x3d3ed0;})[_0x4c76('0x2c')](handleEntityNotFound(_0x439935,null))[_0x4c76('0x2c')](respondWithStatusCode(_0x439935,null))[_0x4c76('0x52')](handleError(_0x439935,null));};exports[_0x4c76('0x9c')]=function(_0x92eedb,_0x3ce25a,_0x29eefb){return BPromise[_0x4c76('0x9d')]()[_0x4c76('0x2c')](function(){if(!_0x92eedb[_0x4c76('0x3b')][_0x4c76('0x7')]){throw new Error(_0x4c76('0x9e'));}if(!_0x92eedb[_0x4c76('0x3b')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x282699=_0x92eedb[_0x4c76('0x3b')][_0x4c76('0x9f')]?_0x92eedb['query'][_0x4c76('0x9f')]+':'+_0x92eedb['query'][_0x4c76('0xa0')]:_0x4c76('0xa1')+_0x92eedb[_0x4c76('0x3b')][_0x4c76('0xa0')];var _0x569cdd=_0x92eedb[_0x4c76('0x3b')][_0x4c76('0x29')]?_0x92eedb[_0x4c76('0x3b')][_0x4c76('0x29')]:!![];var _0xcd4203=_0x92eedb[_0x4c76('0x3b')][_0x4c76('0xa2')]?_0x92eedb[_0x4c76('0x3b')][_0x4c76('0xa2')]:null;var _0x232f33={'method':_0x92eedb[_0x4c76('0xa3')],'uri':util[_0x4c76('0x68')](_0x4c76('0xa4'),_0x282699,_0x92eedb[_0x4c76('0x3b')][_0x4c76('0x7')]),'json':_0x569cdd,'resolveWithFullResponse':!![],'encoding':_0xcd4203,'qs':_0x92eedb[_0x4c76('0x3b')]};if(_0x92eedb[_0x4c76('0xa5')]){_0x232f33[_0x4c76('0xa5')]=_0x92eedb[_0x4c76('0xa5')];if(_0x232f33[_0x4c76('0xa5')]['content-length']){delete _0x232f33[_0x4c76('0xa5')][_0x4c76('0xa6')];}}if(_0x232f33['headers']['content-type']){delete _0x232f33[_0x4c76('0xa5')]['content-type'];}return rp(_0x232f33);})[_0x4c76('0x2c')](function(_0x2e3963){if(_0x2e3963){_0x3ce25a[_0x4c76('0x28')](_0x2e3963[_0x4c76('0xa5')]);logger['info'](_0x2e3963[_0x4c76('0x92')]);if(_[_0x4c76('0xa7')](_0x92eedb[_0x4c76('0x3b')][_0x4c76('0x7')],_0x4c76('0x67'))&&_0x2e3963[_0x4c76('0xa8')]==0x1f4){return _0x3ce25a[_0x4c76('0x30')](_0x2e3963['statusCode']);}else{return _0x3ce25a[_0x4c76('0x23')](_0x2e3963['statusCode'])['send'](_0x2e3963['body']);}}else{return _0x3ce25a[_0x4c76('0x30')](0xc8);}})[_0x4c76('0x52')](handleError(_0x3ce25a,null));};exports[_0x4c76('0xa9')]=function(_0x1c4e1b,_0x32bf3c,_0x2e039a){return BPromise[_0x4c76('0x9d')]()[_0x4c76('0x2c')](function(){if(!_0x1c4e1b[_0x4c76('0x3b')][_0x4c76('0x7')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x1c4e1b[_0x4c76('0x3b')]['port']){throw new Error(_0x4c76('0xaa'));}var _0x3071ba=_0x1c4e1b['query'][_0x4c76('0x9f')]?_0x1c4e1b['query']['hostname']+':'+_0x1c4e1b[_0x4c76('0x3b')][_0x4c76('0xa0')]:_0x4c76('0xa1')+_0x1c4e1b[_0x4c76('0x3b')][_0x4c76('0xa0')];var _0x2cc177=_0x1c4e1b[_0x4c76('0x3b')][_0x4c76('0x29')]?_0x1c4e1b[_0x4c76('0x3b')][_0x4c76('0x29')]:!![];var _0x338936=_0x1c4e1b['query'][_0x4c76('0xa2')]?_0x1c4e1b[_0x4c76('0x3b')][_0x4c76('0xa2')]:null;var _0x451f28={'method':_0x1c4e1b[_0x4c76('0xa3')],'uri':util[_0x4c76('0x68')](_0x4c76('0xa4'),_0x3071ba,_0x1c4e1b[_0x4c76('0x3b')][_0x4c76('0x7')]),'json':_0x2cc177,'resolveWithFullResponse':!![],'encoding':_0x338936,'body':_0x1c4e1b[_0x4c76('0x92')]};if(_0x1c4e1b['headers']){_0x451f28[_0x4c76('0xa5')]=_0x1c4e1b[_0x4c76('0xa5')];if(_0x451f28[_0x4c76('0xa5')][_0x4c76('0xa6')]){delete _0x451f28[_0x4c76('0xa5')][_0x4c76('0xa6')];}}if(_0x451f28[_0x4c76('0xa5')]['content-type']){delete _0x451f28[_0x4c76('0xa5')]['content-type'];}return rp(_0x451f28);})['then'](function(_0x50ea50){if(_0x50ea50){_0x32bf3c['set'](_0x50ea50[_0x4c76('0xa5')]);logger['info'](_0x50ea50[_0x4c76('0x92')]);return _0x32bf3c['status'](_0x50ea50[_0x4c76('0xa8')])[_0x4c76('0x34')](_0x50ea50[_0x4c76('0x92')]);}else{return _0x32bf3c[_0x4c76('0x30')](0xc8);}})[_0x4c76('0x52')](handleError(_0x32bf3c,null));};
\ No newline at end of file
index 475aee7..0338f8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2678=['hook','exports','../../mysqldb','Plugin','setMaxListeners','emit','hasOwnProperty'];(function(_0x9e575,_0x5894d4){var _0x522277=function(_0x1f5458){while(--_0x1f5458){_0x9e575['push'](_0x9e575['shift']());}};_0x522277(++_0x5894d4);}(_0x2678,0x1bb));var _0x8267=function(_0x598569,_0x225177){_0x598569=_0x598569-0x0;var _0x5edb1c=_0x2678[_0x598569];return _0x5edb1c;};'use strict';var EventEmitter=require('events');var Plugin=require(_0x8267('0x0'))['db'][_0x8267('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x8267('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x38400d){return function(_0x30fa94,_0x1f1d79,_0x4d3ad2){PluginEvents[_0x8267('0x3')](_0x38400d+':'+_0x30fa94['id'],_0x30fa94);PluginEvents[_0x8267('0x3')](_0x38400d,_0x30fa94);_0x4d3ad2(null);};}for(var e in events){if(events[_0x8267('0x4')](e)){var event=events[e];Plugin[_0x8267('0x5')](e,emitEvent(event));}}module[_0x8267('0x6')]=PluginEvents;
\ No newline at end of file
+var _0x9e8a=['remove','hasOwnProperty','hook','exports','events','../../mysqldb','Plugin','setMaxListeners','save','update'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x9e8a,0x112));var _0xa9e8=function(_0x301641,_0x15b1c0){_0x301641=_0x301641-0x0;var _0x5afbd2=_0x9e8a[_0x301641];return _0x5afbd2;};'use strict';var EventEmitter=require(_0xa9e8('0x0'));var Plugin=require(_0xa9e8('0x1'))['db'][_0xa9e8('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xa9e8('0x3')](0x0);var events={'afterCreate':_0xa9e8('0x4'),'afterUpdate':_0xa9e8('0x5'),'afterDestroy':_0xa9e8('0x6')};function emitEvent(_0x337024){return function(_0xe3b2c8,_0x57736c,_0x4f9ddb){PluginEvents['emit'](_0x337024+':'+_0xe3b2c8['id'],_0xe3b2c8);PluginEvents['emit'](_0x337024,_0xe3b2c8);_0x4f9ddb(null);};}for(var e in events){if(events[_0xa9e8('0x7')](e)){var event=events[e];Plugin[_0xa9e8('0x8')](e,emitEvent(event));}}module[_0xa9e8('0x9')]=PluginEvents;
\ No newline at end of file
index 33812fd..542ee5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c0=['exports','define','plugins','api','moment','bluebird','request-promise','path','./plugin.attributes'];(function(_0x1650f5,_0x36e108){var _0x2a2dd8=function(_0x3b74fd){while(--_0x3b74fd){_0x1650f5['push'](_0x1650f5['shift']());}};_0x2a2dd8(++_0x36e108);}(_0x12c0,0x1d7));var _0x012c=function(_0x490b9f,_0x3a2191){_0x490b9f=_0x490b9f-0x0;var _0x240b8e=_0x12c0[_0x490b9f];return _0x240b8e;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x012c('0x0'));var moment=require(_0x012c('0x1'));var BPromise=require(_0x012c('0x2'));var rp=require(_0x012c('0x3'));var fs=require('fs');var path=require(_0x012c('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x012c('0x5'));module[_0x012c('0x6')]=function(_0x144e52,_0x4768e9){return _0x144e52[_0x012c('0x7')]('Plugin',attributes,{'tableName':_0x012c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5229=['define','Plugin','plugins','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x516927,_0xb4aad0){var _0x30749b=function(_0x2ca6cc){while(--_0x2ca6cc){_0x516927['push'](_0x516927['shift']());}};_0x30749b(++_0xb4aad0);}(_0x5229,0x148));var _0x9522=function(_0x3bbd73,_0x4b9ab4){_0x3bbd73=_0x3bbd73-0x0;var _0x58f1bf=_0x5229[_0x3bbd73];return _0x58f1bf;};'use strict';var _=require(_0x9522('0x0'));var util=require(_0x9522('0x1'));var logger=require(_0x9522('0x2'))('api');var moment=require(_0x9522('0x3'));var BPromise=require(_0x9522('0x4'));var rp=require(_0x9522('0x5'));var fs=require('fs');var path=require(_0x9522('0x6'));var rimraf=require(_0x9522('0x7'));var config=require(_0x9522('0x8'));var attributes=require('./plugin.attributes');module[_0x9522('0x9')]=function(_0x3dcb16,_0x4cb09f){return _0x3dcb16[_0x9522('0xa')](_0x9522('0xb'),attributes,{'tableName':_0x9522('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 018491b..c87a6de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf237=['options','raw','then','CreatePlugin','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./plugin.socket','request','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','code','error','message','Plugin,\x20%s,\x20%s','result','Plugin','body'];(function(_0x38c40a,_0x28ab3e){var _0x1187bf=function(_0x2d32af){while(--_0x2d32af){_0x38c40a['push'](_0x38c40a['shift']());}};_0x1187bf(++_0x28ab3e);}(_0xf237,0x126));var _0x7f23=function(_0x2eb66c,_0x1b7863){_0x2eb66c=_0x2eb66c-0x0;var _0x117543=_0xf237[_0x2eb66c];return _0x117543;};'use strict';var _=require(_0x7f23('0x0'));var util=require('util');var moment=require(_0x7f23('0x1'));var BPromise=require(_0x7f23('0x2'));var rs=require(_0x7f23('0x3'));var fs=require('fs');var Redis=require(_0x7f23('0x4'));var db=require(_0x7f23('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7f23('0x6'))('rpc');var config=require(_0x7f23('0x7'));var jayson=require(_0x7f23('0x8'));var client=jayson['client'][_0x7f23('0x9')]({'port':0x232a});config[_0x7f23('0xa')]=_['defaults'](config['redis'],{'host':_0x7f23('0xb'),'port':0x18eb});var socket=require(_0x7f23('0xc'))(new Redis(config[_0x7f23('0xa')]));require(_0x7f23('0xd'))['register'](socket);function respondWithRpcPromise(_0x1d365d,_0x51178f,_0x510c40){return new BPromise(function(_0x9a048b,_0x5612b6){return client[_0x7f23('0xe')](_0x1d365d,_0x510c40)['then'](function(_0x5a9f4b){logger[_0x7f23('0xf')]('Plugin,\x20%s,\x20%s',_0x51178f,_0x7f23('0x10'));logger[_0x7f23('0x11')](_0x7f23('0x12'),_0x51178f,_0x7f23('0x10'),JSON['stringify'](_0x5a9f4b));if(_0x5a9f4b['error']){if(_0x5a9f4b['error'][_0x7f23('0x13')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x51178f,_0x5a9f4b[_0x7f23('0x14')][_0x7f23('0x15')]);return _0x5612b6(_0x5a9f4b['error']['message']);}logger[_0x7f23('0x14')](_0x7f23('0x16'),_0x51178f,_0x5a9f4b[_0x7f23('0x14')][_0x7f23('0x15')]);return _0x9a048b(_0x5a9f4b[_0x7f23('0x14')][_0x7f23('0x15')]);}else{logger[_0x7f23('0xf')](_0x7f23('0x16'),_0x51178f,_0x7f23('0x10'));_0x9a048b(_0x5a9f4b[_0x7f23('0x17')][_0x7f23('0x15')]);}})['catch'](function(_0x4bd8fb){logger[_0x7f23('0x14')](_0x7f23('0x16'),_0x51178f,_0x4bd8fb);_0x5612b6(_0x4bd8fb);});});}exports['CreatePlugin']=function(_0x3f0c38){var _0x581aa1=this;return new Promise(function(_0x34afb9,_0x4dcffc){return db[_0x7f23('0x18')]['create'](_0x3f0c38[_0x7f23('0x19')],{'raw':_0x3f0c38[_0x7f23('0x1a')]?_0x3f0c38[_0x7f23('0x1a')][_0x7f23('0x1b')]===undefined?!![]:![]:!![]})[_0x7f23('0x1c')](function(_0x449618){logger[_0x7f23('0xf')](_0x7f23('0x1d'),_0x3f0c38);logger[_0x7f23('0x11')]('CreatePlugin',_0x3f0c38,JSON[_0x7f23('0x1e')](_0x449618));_0x34afb9(_0x449618);})[_0x7f23('0x1f')](function(_0x163e06){logger[_0x7f23('0x14')](_0x7f23('0x1d'),_0x163e06['message'],_0x3f0c38);_0x4dcffc(_0x581aa1['error'](0x1f4,_0x163e06[_0x7f23('0x15')]));});});};
\ No newline at end of file
+var _0x30e7=['rpc','jayson/promise','client','http','redis','defaults','localhost','./plugin.socket','then','Plugin,\x20%s,\x20%s','debug','stringify','error','message','info','request\x20sent','CreatePlugin','Plugin','create','options','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4002e3,_0xbad4b3){var _0x1c2683=function(_0x3b21e1){while(--_0x3b21e1){_0x4002e3['push'](_0x4002e3['shift']());}};_0x1c2683(++_0xbad4b3);}(_0x30e7,0x81));var _0x730e=function(_0x530745,_0x2e214f){_0x530745=_0x530745-0x0;var _0x3e18d7=_0x30e7[_0x530745];return _0x3e18d7;};'use strict';var _=require(_0x730e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x730e('0x1'));var fs=require('fs');var Redis=require(_0x730e('0x2'));var db=require(_0x730e('0x3'))['db'];var utils=require(_0x730e('0x4'));var logger=require(_0x730e('0x5'))(_0x730e('0x6'));var config=require('../../config/environment');var jayson=require(_0x730e('0x7'));var client=jayson[_0x730e('0x8')][_0x730e('0x9')]({'port':0x232a});config[_0x730e('0xa')]=_[_0x730e('0xb')](config[_0x730e('0xa')],{'host':_0x730e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x730e('0xa')]));require(_0x730e('0xd'))['register'](socket);function respondWithRpcPromise(_0x25d955,_0x24d5df,_0x268e47){return new BPromise(function(_0x48c8dd,_0x281bb2){return client['request'](_0x25d955,_0x268e47)[_0x730e('0xe')](function(_0x3e3061){logger['info'](_0x730e('0xf'),_0x24d5df,'request\x20sent');logger[_0x730e('0x10')]('Plugin,\x20%s,\x20%s,\x20%s',_0x24d5df,'request\x20sent',JSON[_0x730e('0x11')](_0x3e3061));if(_0x3e3061[_0x730e('0x12')]){if(_0x3e3061['error']['code']===0x1f4){logger[_0x730e('0x12')](_0x730e('0xf'),_0x24d5df,_0x3e3061[_0x730e('0x12')][_0x730e('0x13')]);return _0x281bb2(_0x3e3061[_0x730e('0x12')][_0x730e('0x13')]);}logger['error'](_0x730e('0xf'),_0x24d5df,_0x3e3061[_0x730e('0x12')][_0x730e('0x13')]);return _0x48c8dd(_0x3e3061[_0x730e('0x12')][_0x730e('0x13')]);}else{logger[_0x730e('0x14')](_0x730e('0xf'),_0x24d5df,_0x730e('0x15'));_0x48c8dd(_0x3e3061['result'][_0x730e('0x13')]);}})['catch'](function(_0x1a1ac5){logger['error'](_0x730e('0xf'),_0x24d5df,_0x1a1ac5);_0x281bb2(_0x1a1ac5);});});}exports[_0x730e('0x16')]=function(_0x3ea35a){var _0x5cc598=this;return new Promise(function(_0x3d03c2,_0xbfc16a){return db[_0x730e('0x17')][_0x730e('0x18')](_0x3ea35a['body'],{'raw':_0x3ea35a[_0x730e('0x19')]?_0x3ea35a[_0x730e('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x730e('0xe')](function(_0x57548d){logger[_0x730e('0x14')](_0x730e('0x16'),_0x3ea35a);logger[_0x730e('0x10')](_0x730e('0x16'),_0x3ea35a,JSON['stringify'](_0x57548d));_0x3d03c2(_0x57548d);})[_0x730e('0x1a')](function(_0x338c26){logger[_0x730e('0x12')]('CreatePlugin',_0x338c26[_0x730e('0x13')],_0x3ea35a);_0xbfc16a(_0x5cc598[_0x730e('0x12')](0x1f4,_0x338c26[_0x730e('0x13')]));});});};
\ No newline at end of file
index 35dc8ee..0856c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa373=['register','./plugin.events','update','emit','removeListener'];(function(_0x4618da,_0x27c024){var _0xede04a=function(_0x2bdf4c){while(--_0x2bdf4c){_0x4618da['push'](_0x4618da['shift']());}};_0xede04a(++_0x27c024);}(_0xa373,0x105));var _0x3a37=function(_0x3ae402,_0x3541aa){_0x3ae402=_0x3ae402-0x0;var _0x4b97e9=_0xa373[_0x3ae402];return _0x4b97e9;};'use strict';var PluginEvents=require(_0x3a37('0x0'));var events=['save','remove',_0x3a37('0x1')];function createListener(_0x12ae5f,_0x594cb5){return function(_0x3efb99){_0x594cb5[_0x3a37('0x2')](_0x12ae5f,_0x3efb99);};}function removeListener(_0x1713e9,_0x5694e3){return function(){PluginEvents[_0x3a37('0x3')](_0x1713e9,_0x5694e3);};}exports[_0x3a37('0x4')]=function(_0x2d0f05){for(var _0x1fc15f=0x0,_0x17aace=events['length'];_0x1fc15f<_0x17aace;_0x1fc15f++){var _0x5614c0=events[_0x1fc15f];var _0x5ca201=createListener('plugin:'+_0x5614c0,_0x2d0f05);PluginEvents['on'](_0x5614c0,_0x5ca201);}};
\ No newline at end of file
+var _0x4093=['update','emit','removeListener','register','length','plugin:','save'];(function(_0x10cb75,_0x480729){var _0x586c0f=function(_0x4d55ce){while(--_0x4d55ce){_0x10cb75['push'](_0x10cb75['shift']());}};_0x586c0f(++_0x480729);}(_0x4093,0x16b));var _0x3409=function(_0x23fae0,_0x5a2ad4){_0x23fae0=_0x23fae0-0x0;var _0x5dadf8=_0x4093[_0x23fae0];return _0x5dadf8;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x3409('0x0'),'remove',_0x3409('0x1')];function createListener(_0x345168,_0x1f6456){return function(_0x856f49){_0x1f6456[_0x3409('0x2')](_0x345168,_0x856f49);};}function removeListener(_0x58c7ba,_0xe46fcf){return function(){PluginEvents[_0x3409('0x3')](_0x58c7ba,_0xe46fcf);};}exports[_0x3409('0x4')]=function(_0x2fe4b2){for(var _0xbb291c=0x0,_0x313c25=events[_0x3409('0x5')];_0xbb291c<_0x313c25;_0xbb291c++){var _0x34ebeb=events[_0xbb291c];var _0x77785e=createListener(_0x3409('0x6')+_0x34ebeb,_0x2fe4b2);PluginEvents['on'](_0x34ebeb,_0x77785e);}};
\ No newline at end of file
index e925594..07ee87f 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(_0x33420a,_0x6972ec){var _0x2fe724=function(_0x4c8bd2){while(--_0x4c8bd2){_0x33420a['push'](_0x33420a['shift']());}};_0x2fe724(++_0x6972ec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x3ae47d,_0x5de387){var _0xb3001b=function(_0x4c95ab){while(--_0x4c95ab){_0x3ae47d['push'](_0x3ae47d['shift']());}};_0xb3001b(++_0x5de387);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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 0457d8f..0240b32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['sendStatus','json','error','stack','name','send','list','express','motion2','length','then','show','describe','params','catch','body','join','../../files/plugins','script','chdir','dirname','start','status','Missing\x20name\x20and/or\x20path','update','restart','hasOwnProperty','Unknown\x20status','destroy','lodash','../../config/pm2','../../config/logger','api','child_process','exec','bluebird'];(function(_0x52475e,_0x2c4b33){var _0x59b60c=function(_0x3874d7){while(--_0x3874d7){_0x52475e['push'](_0x52475e['shift']());}};_0x59b60c(++_0x2c4b33);}(_0x524a,0xf5));var _0xa524=function(_0x3ffa55,_0x1e12cd){_0x3ffa55=_0x3ffa55-0x0;var _0x43d28d=_0x524a[_0x3ffa55];return _0x43d28d;};'use strict';var _=require(_0xa524('0x0'));var pm2=require(_0xa524('0x1'));var logger=require(_0xa524('0x2'))(_0xa524('0x3'));var path=require('path');var exec=require(_0xa524('0x4'))[_0xa524('0x5')];var BPromise=require(_0xa524('0x6'));function handleEntityNotFound(_0x56ab08,_0x50ec75){return function(_0x34a665){if(!_0x34a665){_0x56ab08[_0xa524('0x7')](0x194);;}return _0x34a665;};}function respondWithResult(_0x16227b,_0x5f472f){_0x5f472f=_0x5f472f||0xc8;return function(_0x460738){if(_0x460738){return _0x16227b['status'](_0x5f472f)[_0xa524('0x8')](_0x460738);}return null;};}function handleError(_0x11aa98,_0x56849e){_0x56849e=_0x56849e||0x1f4;return function(_0x1316b0){logger[_0xa524('0x9')](_0x1316b0[_0xa524('0xa')]);if(_0x1316b0[_0xa524('0xb')]){delete _0x1316b0[_0xa524('0xb')];}_0x11aa98['status'](_0x56849e)[_0xa524('0xc')](_0x1316b0);};}function execChildProcess(){return new BPromise(function(_0x2ebea2,_0x59660a){exec('npm\x20install',function(_0x2fc0f9,_0xdbba15,_0x116fb9){logger['info'](_0xdbba15);logger['info'](_0x116fb9);if(_0x2fc0f9){logger[_0xa524('0x9')](_0x2fc0f9);return _0x59660a(_0x2fc0f9);}return _0x2ebea2(_0xdbba15);});});}exports['index']=function(_0x3f4ffc,_0x494cff){return pm2[_0xa524('0xd')]()['then'](function(_0x75bfe8){if(_0x75bfe8){var _0x281137=_['reject'](_0x75bfe8,function(_0x2d8bdb){return _0x2d8bdb[_0xa524('0xb')]===_0xa524('0xe')||_0x2d8bdb[_0xa524('0xb')]===_0xa524('0xf');});return{'rows':_0x281137,'count':_0x281137[_0xa524('0x10')]};}return null;})[_0xa524('0x11')](respondWithResult(_0x494cff,null))['catch'](handleError(_0x494cff,null));};exports[_0xa524('0x12')]=function(_0x3d8494,_0x1fd8f5){return pm2[_0xa524('0x13')](_0x3d8494[_0xa524('0x14')]['id'])[_0xa524('0x11')](respondWithResult(_0x1fd8f5,null))[_0xa524('0x11')](handleEntityNotFound(_0x1fd8f5,null))[_0xa524('0x15')](handleError(_0x1fd8f5,null));};exports['create']=function(_0x304dea,_0x20f8e1){if(_0x304dea[_0xa524('0x16')][_0xa524('0xb')]&&_0x304dea['body']['script']){var _0x40f4bd=path[_0xa524('0x17')](__dirname,_0xa524('0x18'),_0x304dea[_0xa524('0x16')][_0xa524('0x19')]);var _0x3866e2=process['cwd']();process[_0xa524('0x1a')](path[_0xa524('0x1b')](_0x40f4bd));return execChildProcess()[_0xa524('0x11')](function(_0x40fb4b){process[_0xa524('0x1a')](_0x3866e2);return pm2[_0xa524('0x1c')]({'name':_0x304dea[_0xa524('0x16')]['name'],'script':_0x40f4bd});})[_0xa524('0x11')](function(_0x221bf){pm2['dump']();return _0x221bf[0x0];})['then'](respondWithResult(_0x20f8e1,0xc9))[_0xa524('0x15')](handleError(_0x20f8e1,null));}else{return _0x20f8e1[_0xa524('0x1d')](0x1f4)[_0xa524('0xc')]({'message':_0xa524('0x1e')});}};exports[_0xa524('0x1f')]=function(_0x546060,_0x4f484a){if(_0x546060[_0xa524('0x16')]['id']){delete _0x546060[_0xa524('0x16')]['id'];}var _0x1582fa={'online':_0xa524('0x20'),'stopped':'stop'};if(_0x1582fa[_0xa524('0x21')](_0x546060[_0xa524('0x16')]['status'])){return pm2[_0x1582fa[_0x546060[_0xa524('0x16')][_0xa524('0x1d')]]](_0x546060['params']['id'])[_0xa524('0x11')](respondWithResult(_0x4f484a,0xc8))['catch'](handleError(_0x4f484a,null));}else{return _0x4f484a[_0xa524('0x1d')](0x1f4)[_0xa524('0xc')]({'message':_0xa524('0x22')});}};exports[_0xa524('0x23')]=function(_0x136e83,_0x1c706b){if(_0x136e83[_0xa524('0x16')]['id']){delete _0x136e83[_0xa524('0x16')]['id'];}if(_0x136e83[_0xa524('0x14')]['id']){return pm2['delete'](_0x136e83['params']['id'])[_0xa524('0x11')](function(_0x52dd9f){pm2['dump']();return _0x52dd9f[0x0];})[_0xa524('0x11')](respondWithResult(_0x1c706b,null))[_0xa524('0x15')](handleError(_0x1c706b,null));}else{return _0x1c706b[_0xa524('0x1d')](0x1f4)[_0xa524('0xc')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0x16d2=['cwd','chdir','start','dump','update','stop','send','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','json','error','stack','name','npm\x20install','info','index','list','express','motion2','length','then','catch','show','params','create','body','script','join'];(function(_0x3c327d,_0x9ff1f1){var _0x4452f8=function(_0x500776){while(--_0x500776){_0x3c327d['push'](_0x3c327d['shift']());}};_0x4452f8(++_0x9ff1f1);}(_0x16d2,0x123));var _0x216d=function(_0x35f15b,_0x387db3){_0x35f15b=_0x35f15b-0x0;var _0x262619=_0x16d2[_0x35f15b];return _0x262619;};'use strict';var _=require(_0x216d('0x0'));var pm2=require(_0x216d('0x1'));var logger=require(_0x216d('0x2'))(_0x216d('0x3'));var path=require(_0x216d('0x4'));var exec=require(_0x216d('0x5'))[_0x216d('0x6')];var BPromise=require(_0x216d('0x7'));function handleEntityNotFound(_0xfd7306,_0x593bb0){return function(_0x2c662d){if(!_0x2c662d){_0xfd7306[_0x216d('0x8')](0x194);;}return _0x2c662d;};}function respondWithResult(_0xef687c,_0x205101){_0x205101=_0x205101||0xc8;return function(_0x1dd8e2){if(_0x1dd8e2){return _0xef687c[_0x216d('0x9')](_0x205101)[_0x216d('0xa')](_0x1dd8e2);}return null;};}function handleError(_0x28da14,_0x57accc){_0x57accc=_0x57accc||0x1f4;return function(_0x22c7b3){logger[_0x216d('0xb')](_0x22c7b3[_0x216d('0xc')]);if(_0x22c7b3[_0x216d('0xd')]){delete _0x22c7b3[_0x216d('0xd')];}_0x28da14[_0x216d('0x9')](_0x57accc)['send'](_0x22c7b3);};}function execChildProcess(){return new BPromise(function(_0x7ca9c9,_0x50db30){exec(_0x216d('0xe'),function(_0x2e02ce,_0x332e30,_0x398970){logger[_0x216d('0xf')](_0x332e30);logger[_0x216d('0xf')](_0x398970);if(_0x2e02ce){logger['error'](_0x2e02ce);return _0x50db30(_0x2e02ce);}return _0x7ca9c9(_0x332e30);});});}exports[_0x216d('0x10')]=function(_0x4c07d0,_0x271bb1){return pm2[_0x216d('0x11')]()['then'](function(_0x165c19){if(_0x165c19){var _0x322e4b=_['reject'](_0x165c19,function(_0x1b3215){return _0x1b3215['name']===_0x216d('0x12')||_0x1b3215[_0x216d('0xd')]===_0x216d('0x13');});return{'rows':_0x322e4b,'count':_0x322e4b[_0x216d('0x14')]};}return null;})[_0x216d('0x15')](respondWithResult(_0x271bb1,null))[_0x216d('0x16')](handleError(_0x271bb1,null));};exports[_0x216d('0x17')]=function(_0x1496fe,_0x19fdac){return pm2['describe'](_0x1496fe[_0x216d('0x18')]['id'])['then'](respondWithResult(_0x19fdac,null))['then'](handleEntityNotFound(_0x19fdac,null))[_0x216d('0x16')](handleError(_0x19fdac,null));};exports[_0x216d('0x19')]=function(_0x574758,_0x3f32e0){if(_0x574758[_0x216d('0x1a')]['name']&&_0x574758[_0x216d('0x1a')][_0x216d('0x1b')]){var _0x430e81=path[_0x216d('0x1c')](__dirname,'../../files/plugins',_0x574758[_0x216d('0x1a')][_0x216d('0x1b')]);var _0x10f299=process[_0x216d('0x1d')]();process[_0x216d('0x1e')](path['dirname'](_0x430e81));return execChildProcess()[_0x216d('0x15')](function(_0x1bd4db){process[_0x216d('0x1e')](_0x10f299);return pm2[_0x216d('0x1f')]({'name':_0x574758[_0x216d('0x1a')]['name'],'script':_0x430e81});})[_0x216d('0x15')](function(_0xab672){pm2[_0x216d('0x20')]();return _0xab672[0x0];})['then'](respondWithResult(_0x3f32e0,0xc9))['catch'](handleError(_0x3f32e0,null));}else{return _0x3f32e0['status'](0x1f4)['send']({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x216d('0x21')]=function(_0x470d8a,_0x189413){if(_0x470d8a[_0x216d('0x1a')]['id']){delete _0x470d8a[_0x216d('0x1a')]['id'];}var _0x47fa6d={'online':'restart','stopped':_0x216d('0x22')};if(_0x47fa6d['hasOwnProperty'](_0x470d8a[_0x216d('0x1a')][_0x216d('0x9')])){return pm2[_0x47fa6d[_0x470d8a[_0x216d('0x1a')][_0x216d('0x9')]]](_0x470d8a[_0x216d('0x18')]['id'])[_0x216d('0x15')](respondWithResult(_0x189413,0xc8))[_0x216d('0x16')](handleError(_0x189413,null));}else{return _0x189413[_0x216d('0x9')](0x1f4)[_0x216d('0x23')]({'message':_0x216d('0x24')});}};exports[_0x216d('0x25')]=function(_0x260134,_0x4537fd){if(_0x260134['body']['id']){delete _0x260134[_0x216d('0x1a')]['id'];}if(_0x260134[_0x216d('0x18')]['id']){return pm2[_0x216d('0x26')](_0x260134['params']['id'])[_0x216d('0x15')](function(_0x1743ee){pm2[_0x216d('0x20')]();return _0x1743ee[0x0];})[_0x216d('0x15')](respondWithResult(_0x4537fd,null))['catch'](handleError(_0x4537fd,null));}else{return _0x4537fd[_0x216d('0x9')](0x1f4)[_0x216d('0x23')]({'message':_0x216d('0x27')});}};
\ No newline at end of file
index 5ab7c24..21c5f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8938=['exports','Router','../../components/auth/service','./realtime.controller','get','/agents','getAgents','isAuthenticated'];(function(_0x2f2666,_0x2f770a){var _0x5f3b59=function(_0x3f29ec){while(--_0x3f29ec){_0x2f2666['push'](_0x2f2666['shift']());}};_0x5f3b59(++_0x2f770a);}(_0x8938,0x1d9));var _0x8893=function(_0x3d9557,_0x5d09d2){_0x3d9557=_0x3d9557-0x0;var _0x359ff8=_0x8938[_0x3d9557];return _0x359ff8;};'use strict';var express=require('express');var router=express[_0x8893('0x0')]();var auth=require(_0x8893('0x1'));var controller=require(_0x8893('0x2'));router[_0x8893('0x3')](_0x8893('0x4'),auth['isAuthenticated'](),controller[_0x8893('0x5')]);router[_0x8893('0x3')]('/queues',auth[_0x8893('0x6')](),controller['getQueues']);module[_0x8893('0x7')]=router;
\ No newline at end of file
+var _0x2232=['/queues','getQueues','exports','express','../../components/auth/service','./realtime.controller','get','/agents','isAuthenticated'];(function(_0x2ac4af,_0x288c53){var _0x3a36df=function(_0x271b11){while(--_0x271b11){_0x2ac4af['push'](_0x2ac4af['shift']());}};_0x3a36df(++_0x288c53);}(_0x2232,0x198));var _0x2223=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2232[_0x14add3];return _0x4a174f;};'use strict';var express=require(_0x2223('0x0'));var router=express['Router']();var auth=require(_0x2223('0x1'));var controller=require(_0x2223('0x2'));router[_0x2223('0x3')](_0x2223('0x4'),auth[_0x2223('0x5')](),controller['getAgents']);router[_0x2223('0x3')](_0x2223('0x6'),auth[_0x2223('0x5')](),controller[_0x2223('0x7')]);module[_0x2223('0x8')]=router;
\ No newline at end of file
index 922e8b8..bf7cd94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa37a=['UserProfile','getResources','findAndCountAll','filterAgentAttributes','getAgentStatus','Status','sortAgentsByStatus','getQueues','resolve','QueueCampaigns','filter','all','util','jayson/promise','../../components/parsers/qs','../../config/utils','api','../../mysqldb','client','http','offset','limit','undefined','count','status','set','error','stack','name','send','voice','request','startCase','Queues','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','catch','VoiceQueuesChannels','result','loggedIn','available','waiting','talking','paused','outbound','pTalking','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','agents','loggedInDb','busy','originated','find','merge','pick','queue','length','some','connectedlinenum','toString','getMembers','UserId','online','voiceStatus','User','findAll','QueueId','push','includes','toLowerCase','Invalid\x20channel','getAgents','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','*pause','channel','globalStatus','sort','validateSortParameter','getUpdatedSortOptions','fields','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','map','rawAttributes','fieldName','type','role','getOptions','raw','sequelize','literal','Pause','forEach','where','user','userProfileId','agent','extraQueryConditions','assign'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xa37a,0x108));var _0xaa37=function(_0x55f9fb,_0x65850){_0x55f9fb=_0x55f9fb-0x0;var _0xe57fdf=_0xa37a[_0x55f9fb];return _0xe57fdf;};'use strict';var util=require(_0xaa37('0x0'));var _=require('lodash');var jayson=require(_0xaa37('0x1'));var rta=require('../../components/realtime/agents');var qs=require(_0xaa37('0x2'));var utils=require(_0xaa37('0x3'));var logger=require('../../config/logger')(_0xaa37('0x4'));var db=require(_0xaa37('0x5'))['db'];var amiClient=jayson[_0xaa37('0x6')][_0xaa37('0x7')]({'port':0x232a});var routingClient=jayson[_0xaa37('0x6')][_0xaa37('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x246766,_0x2c8d8a){return function(_0x242adb){if(_0x242adb){var _0x3d7f3b=typeof _0x2c8d8a[_0xaa37('0x8')]==='undefined'&&typeof _0x2c8d8a[_0xaa37('0x9')]===_0xaa37('0xa');var _0x1f7314=_0x242adb[_0xaa37('0xb')];var _0x28d091=_0x3d7f3b?0x0:_0x2c8d8a[_0xaa37('0x8')];var _0x4960e0=_0x3d7f3b?_0x242adb[_0xaa37('0xb')]:_0x2c8d8a['offset']+_0x2c8d8a[_0xaa37('0x9')];var _0xd211fc;if(_0x4960e0>=_0x1f7314){_0x4960e0=_0x1f7314;_0xd211fc=0xc8;}else{_0xd211fc=0xce;}_0x246766[_0xaa37('0xc')](_0xd211fc);return _0x246766[_0xaa37('0xd')]('Content-Range',_0x28d091+'-'+_0x4960e0+'/'+_0x1f7314)['json'](_0x242adb);}return null;};}function handleError(_0xb5d5ab,_0x4b6997){_0x4b6997=_0x4b6997||0x1f4;return function(_0xd6b860){logger[_0xaa37('0xe')](_0xd6b860[_0xaa37('0xf')]);if(_0xd6b860[_0xaa37('0x10')]){delete _0xd6b860[_0xaa37('0x10')];}_0xb5d5ab[_0xaa37('0xc')](_0x4b6997)[_0xaa37('0x11')](_0xd6b860);};}function getRealtimeQueues(_0x398a80,_0x2e2d86){return new Promise(function(_0x1f8d8f,_0x344df7){var _0x5cee1d=_0x2e2d86===_0xaa37('0x12')?amiClient:routingClient;return _0x5cee1d[_0xaa37('0x13')](_[_0xaa37('0x14')](_0x2e2d86)+_0xaa37('0x15'),_0x398a80)[_0xaa37('0x16')](function(_0x456387){if(_0x456387['error'])throw new Error(util[_0xaa37('0x17')](_0xaa37('0x18'),_0x2e2d86));return _0x1f8d8f(_0x456387['result']);})[_0xaa37('0x19')](function(_0x3c7125){_0x344df7(_0x3c7125);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x53b4b1,_0x3c8318){return amiClient[_0xaa37('0x13')](_0xaa37('0x1a'),{})[_0xaa37('0x16')](function(_0x1ee6f3){if(_0x1ee6f3['error'])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x53b4b1(_0x1ee6f3[_0xaa37('0x1b')]);})[_0xaa37('0x19')](function(_0x52eac6){_0x3c8318(_0x52eac6);});});}function initializeQueues(_0x272bae,_0x14f325,_0x51ac6a,_0x5a7b4c){var _0x18da5a=[_0xaa37('0x1c'),_0xaa37('0x1d'),_0xaa37('0x1e'),_0xaa37('0x1f'),_0xaa37('0x20')];if(_0x51ac6a===_0xaa37('0x12')&&_0x5a7b4c===_0xaa37('0x21')){_0x18da5a['push'](_0xaa37('0x22'),'originated',_0xaa37('0x23'),_0xaa37('0x24'),_0xaa37('0x25'),_0xaa37('0x26'),_0xaa37('0x27'),_0xaa37('0x28'),_0xaa37('0x29'),_0xaa37('0x2a'),_0xaa37('0x2b'),_0xaa37('0x2c'),_0xaa37('0x2d'),_0xaa37('0x2e'),_0xaa37('0x2f'),'predictiveIntervalAvailable',_0xaa37('0x30'),_0xaa37('0x31'),_0xaa37('0x32'),_0xaa37('0x33'),_0xaa37('0x34'),_0xaa37('0x35'));}return _0x272bae['map'](function(_0x2d4e3f){var _0x28555c=_0x2d4e3f[_0xaa37('0x36')]({'plain':!![]});_0x28555c[_0xaa37('0x37')]=[];_0x28555c[_0xaa37('0x20')]=0x0;_0x28555c[_0xaa37('0x38')]=0x0;_0x28555c[_0xaa37('0x1c')]=0x0;_0x28555c[_0xaa37('0x1d')]=0x0;_0x28555c[_0xaa37('0x1e')]=0x0;if(_0x51ac6a===_0xaa37('0x12')){_0x28555c[_0xaa37('0x1f')]=0x0;_0x28555c[_0xaa37('0x39')]=0x0;if(_0x5a7b4c==='outbound'){_0x28555c['pTalking']=0x0;_0x28555c[_0xaa37('0x3a')]=0x0;}}var _0x3e12f0=_[_0xaa37('0x3b')](_0x14f325,['id',_0x28555c['id']]);if(_0x3e12f0)_[_0xaa37('0x3c')](_0x28555c,_[_0xaa37('0x3d')](_0x3e12f0,_0x18da5a));return _0x28555c;});}function updateAgentVoiceStatus(_0x29a458,_0x414fa2,_0x5eabab){var _0x413008=_['filter'](_0x5eabab,[_0xaa37('0x3e'),_0x414fa2[_0xaa37('0x10')]]);if(_0x413008[_0xaa37('0x3f')]===0x0)return _0x29a458[_0xaa37('0x39')]=!![];if(_[_0xaa37('0x40')](_0x413008,[_0xaa37('0x41'),_0x29a458['internal'][_0xaa37('0x42')]()]))return _0x29a458[_0xaa37('0x1f')]=!![];if(!_0x29a458[_0xaa37('0x1f')])return _0x29a458[_0xaa37('0x39')]=!![];}function getVoiceQueueAgents(_0x5e2620,_0x51feae,_0x58bd25,_0x4f74ea){var _0x369dd3=_[_0xaa37('0x3b')](_0x51feae,['id',_0x5e2620['id']]);if(!_0x369dd3)return _0x5e2620;return _0x369dd3[_0xaa37('0x43')]({'raw':!![]})[_0xaa37('0x16')](function(_0x888e4){for(var _0x278d86=0x0;_0x278d86<_0x888e4[_0xaa37('0x3f')];_0x278d86++){var _0x480018=_[_0xaa37('0x3b')](_0x58bd25,['id',_0x888e4[_0x278d86][_0xaa37('0x44')]]);if(!_0x480018){_0x480018={'id':_0x888e4[_0x278d86]['UserId'],'name':_0x888e4[_0x278d86][_0xaa37('0x44')],'accountcode':'','online':![]};}var _0x497ee4={'id':_0x480018['id'],'name':_0x480018[_0xaa37('0x10')],'internal':_0x480018['accountcode'],'online':Boolean(_0x480018[_0xaa37('0x45')]),'paused':Boolean(_0x888e4[_0x278d86][_0xaa37('0x20')])};if(_0x480018[_0xaa37('0x46')]===_0xaa37('0x1f'))updateAgentVoiceStatus(_0x497ee4,_0x5e2620,_0x4f74ea);if(_0x497ee4[_0xaa37('0x45')])_0x5e2620['loggedInDb']++;if(_0x497ee4[_0xaa37('0x39')])_0x5e2620[_0xaa37('0x39')]++;if(_0x497ee4[_0xaa37('0x20')]&&!_0x497ee4[_0xaa37('0x39')]&&!_0x497ee4['talking'])_0x5e2620[_0xaa37('0x20')]++;_0x5e2620[_0xaa37('0x37')]['push'](_0x497ee4);}return _0x5e2620;});}function getQueueAgents(_0x3bb541,_0x40f29d,_0x3c30ea){var _0x12c6a3=_0xaa37('0x47')+_[_0xaa37('0x14')](_0x3c30ea)+'Queue';var _0xc5254b=_0x3c30ea+'Pause';return db[_0x12c6a3][_0xaa37('0x48')]({'where':{[_[_0xaa37('0x14')](_0x3c30ea)+_0xaa37('0x49')]:_0x3bb541['id']},'raw':!![]})[_0xaa37('0x16')](function(_0x55de33){for(var _0x40a1ba=0x0;_0x40a1ba<_0x55de33[_0xaa37('0x3f')];_0x40a1ba++){var _0x3aed34=_[_0xaa37('0x3b')](_0x40f29d,['id',_0x55de33[_0x40a1ba][_0xaa37('0x44')]]);if(!_0x3aed34){_0x3aed34={'id':_0x55de33[_0x40a1ba][_0xaa37('0x44')],'name':_0x55de33[_0x40a1ba][_0xaa37('0x44')],'online':![],['pauseField']:![]};}var _0x1c7c4a={'id':_0x3aed34['id'],'name':_0x3aed34[_0xaa37('0x10')],'online':Boolean(_0x3aed34['online']),'paused':Boolean(_0x3aed34[_0xc5254b])};if(_0x1c7c4a[_0xaa37('0x45')])_0x3bb541[_0xaa37('0x38')]++;_0x3bb541[_0xaa37('0x37')][_0xaa37('0x4a')](_0x1c7c4a);}return _0x3bb541;});}function validateChannel(_0x2367ad){var _0x61a096=utils['getChannels']();if(!_[_0xaa37('0x4b')](_0x61a096,_0x2367ad[_0xaa37('0x4c')]()))throw new Error(_0xaa37('0x4d'));return _0x2367ad['toLowerCase']();}exports[_0xaa37('0x4e')]=function(_0x176bb8,_0x5a68bc){var _0x2be550={'count':0x0,'rows':[]};var _0x2b777a={};var _0x418296;var _0x42ad08;var _0x93be36;var _0x7e83c;var _0xffe325=utils['getChannels']();var _0x2b287f=_0x176bb8[_0xaa37('0x4f')][_0xaa37('0x50')];var _0x22db3d=_0x176bb8[_0xaa37('0x4f')][_0xaa37('0x51')];var _0x4253ab=_0x176bb8[_0xaa37('0x4f')][_0xaa37('0x52')];var _0x4d36a4=_0x22db3d===_0xaa37('0x53')||_0x22db3d===_0xaa37('0x54')?!![]:![];var _0x286e45=[];var _0x468e4e;Promise['resolve']()[_0xaa37('0x16')](function(){if(_0x176bb8[_0xaa37('0x4f')][_0xaa37('0x55')]){_0x418296=validateChannel(_0x176bb8[_0xaa37('0x4f')]['channel']);}if(!_0x176bb8[_0xaa37('0x4f')]['sort']||!_0x176bb8[_0xaa37('0x4f')]['sort'][_0xaa37('0x4b')](_0xaa37('0x56'))){_0x176bb8[_0xaa37('0x4f')][_0xaa37('0x57')]=rta[_0xaa37('0x58')](_0x176bb8[_0xaa37('0x4f')]['sort']);return;}var _0x3a9eec=rta[_0xaa37('0x59')](_0x176bb8[_0xaa37('0x4f')][_0xaa37('0x57')]);_0x176bb8[_0xaa37('0x4f')]['sort']=_0x3a9eec[_0xaa37('0x5a')]['join'](',');_0x42ad08=_0x3a9eec[_0xaa37('0x5b')];})['then'](function(){if(!_0x2b287f){return[];}return rta[_0xaa37('0x5c')](_0x2b287f,_0x418296);})[_0xaa37('0x16')](function(_0x347450){_0x286e45=_0x347450;return rta[_0xaa37('0x5d')]();})[_0xaa37('0x16')](function(_0x3d04c6){_0x7e83c=_0x3d04c6[_0xaa37('0x5e')];if((!_0x22db3d||_0x4d36a4)&&!_0x42ad08){return _0x286e45;}if(_0x42ad08&&!_0x22db3d){return rta[_0xaa37('0x5f')](_0x7e83c,_0x286e45,_0x42ad08);}else{return rta[_0xaa37('0x60')](_0x7e83c,_0x286e45,_0x22db3d);}})[_0xaa37('0x16')](function(_0x4fb13c){_0x286e45=_0x4fb13c;var _0x28a4e4=![];if(_0x286e45['length']===0x0){if(_0x2b287f||_0x22db3d){_0x28a4e4=!![];}if(_0x4d36a4){_0x28a4e4=![];}}if(_0x28a4e4){return _0x2be550;}var _0x4ff22b=_[_0xaa37('0x61')](db[_0xaa37('0x47')][_0xaa37('0x62')],function(_0x39b71d){return{'name':_0x39b71d[_0xaa37('0x63')],'type':_0x39b71d[_0xaa37('0x64')]['key']};});_0x176bb8['query'][_0xaa37('0x65')]='agent';_0x176bb8['query'][_0xaa37('0x45')]=!![];_0x2b777a=qs[_0xaa37('0x66')](_0x4ff22b,_0x176bb8);_0x2b777a[_0xaa37('0x67')]=!![];var _0x6f877a=[];if(_0x286e45[_0xaa37('0x3f')]>0x0){_0x6f877a['push']({'id':{'$in':_0x286e45}});if(_0x42ad08&&!_0x22db3d){_0x468e4e=[db[_0xaa37('0x68')][_0xaa37('0x69')]('FIELD(id,'+_0x286e45+')')];_0x2b777a[_0xaa37('0x5b')]=_0x468e4e;}}if(_0x4d36a4){_0xffe325['forEach'](function(_0x45d163){var _0x45b95c=!![];if(_0x22db3d===_0xaa37('0x54')&&_0x418296!==_0x45d163){_0x45b95c=![];}_0x6f877a[_0xaa37('0x4a')]({[_0x45d163+_0xaa37('0x6a')]:_0x45b95c});});if(_0x4253ab){_0x6f877a[_0xaa37('0x4a')]({'pauseType':_0x4253ab});}}else if(_0x22db3d){_0xffe325[_0xaa37('0x6b')](function(_0x715f89){_0x6f877a[_0xaa37('0x4a')]({[_0x715f89+_0xaa37('0x6a')]:![]});});}_0x2b777a['where']=_[_0xaa37('0x3c')](_0x2b777a[_0xaa37('0x6c')],{'$and':_0x6f877a});if(_0x176bb8[_0xaa37('0x6d')][_0xaa37('0x65')]===_0xaa37('0x6d')){var _0x11afea={'params':{'id':_0x176bb8['user'][_0xaa37('0x6e')]},'query':{'section':'Agents','role':_0xaa37('0x6f'),'online':!![],'raw':!![],'ids':_0x286e45,'customSorting':_0x468e4e}};if(_0x4d36a4){_0x11afea[_0xaa37('0x4f')][_0xaa37('0x70')]=_0x6f877a;}_0x11afea['query']=Object[_0xaa37('0x71')](_0x11afea[_0xaa37('0x4f')],_0x176bb8[_0xaa37('0x4f')]);delete _0x11afea[_0xaa37('0x4f')]['id'];return db[_0xaa37('0x72')][_0xaa37('0x73')](_0x11afea);}return db['User'][_0xaa37('0x74')](_0x2b777a);})[_0xaa37('0x16')](function(_0xd15baf){_0x2be550['count']=_0xd15baf[_0xaa37('0xb')];_0x93be36=_0xd15baf[_0xaa37('0x5e')];return _0x93be36['map'](function(_0x5a585c){var _0x29d48b=_[_0xaa37('0x3b')](_0x7e83c,['id',_0x5a585c['id']]);if(_0x29d48b){var _0x53ad44=rta[_0xaa37('0x75')](_0x29d48b);_[_0xaa37('0x3c')](_0x5a585c,_0x53ad44);}_0x5a585c[_0xaa37('0x56')]=rta[_0xaa37('0x76')](_0x5a585c);if(_0x5a585c[_0xaa37('0x56')][_0xaa37('0x4b')](_0xaa37('0x53'))){_0xffe325[_0xaa37('0x6b')](function(_0x16f363){if(_0x5a585c[_0x16f363+'Pause']){_0x5a585c[_0x16f363+_0xaa37('0x77')]='pause';}});}return _0x5a585c;});})[_0xaa37('0x16')](function(_0x5cf3ba){if(!_0x42ad08||_0x468e4e){return _0x5cf3ba;}return rta[_0xaa37('0x78')](_0x5cf3ba,_0x42ad08);})['then'](function(_0x83f77a){_0x2be550[_0xaa37('0x5e')]=_0x83f77a;return _0x2be550;})[_0xaa37('0x16')](respondWithFilteredResult(_0x5a68bc,_0x2b777a))[_0xaa37('0x19')](handleError(_0x5a68bc,null));};exports[_0xaa37('0x79')]=function(_0x229eda,_0x7d0394){var _0x4b8fb0={'count':0x0,'rows':[]},_0xff5b3e={},_0x4649ef,_0x3cb50d,_0x2c89ae,_0x29af31,_0x157c3d;Promise[_0xaa37('0x7a')]()[_0xaa37('0x16')](function(){if(_0x229eda[_0xaa37('0x4f')]['channel'])_0x4649ef=validateChannel(_0x229eda[_0xaa37('0x4f')]['channel']);var _0x26f9eb=_[_0xaa37('0x14')](_0x4649ef)+'Queue';var _0x79a961=_[_0xaa37('0x61')](db[_0x26f9eb]['rawAttributes'],function(_0x4fafa0){return{'name':_0x4fafa0['fieldName'],'type':_0x4fafa0['type']['key']};});_0xff5b3e=qs[_0xaa37('0x66')](_0x79a961,_0x229eda);if(_0x229eda[_0xaa37('0x6d')]['role']===_0xaa37('0x6d')){var _0x1caa58={'params':{'id':_0x229eda['user'][_0xaa37('0x6e')]},'query':{'section':_0x4649ef===_0xaa37('0x12')&&_0x229eda[_0xaa37('0x4f')][_0xaa37('0x64')]==='outbound'?_0xaa37('0x7b'):_[_0xaa37('0x14')](_0x4649ef)+_0xaa37('0x15'),'type':_0x229eda[_0xaa37('0x4f')][_0xaa37('0x64')],'nolimit':!![],'sort':'name','filter':_0x229eda[_0xaa37('0x4f')][_0xaa37('0x7c')]}};return db[_0xaa37('0x72')][_0xaa37('0x73')](_0x1caa58);}return db[_0x26f9eb][_0xaa37('0x74')](_0xff5b3e);})[_0xaa37('0x16')](function(_0x3bfce4){_0x4b8fb0['count']=_0x3bfce4[_0xaa37('0xb')];_0x3cb50d=_0x3bfce4[_0xaa37('0x5e')];return getRealtimeQueues(_0x229eda,_0x4649ef);})[_0xaa37('0x16')](function(_0x4b430c){_0x29af31=_0x4b430c['rows'];return rta[_0xaa37('0x5d')]();})[_0xaa37('0x16')](function(_0x38983d){_0x2c89ae=_0x38983d[_0xaa37('0x5e')];if(_0x4649ef!=_0xaa37('0x12'))return;return getRealtimeVoiceQueueChannels();})[_0xaa37('0x16')](function(_0x4680b8){_0x157c3d=_0x4680b8?_0x4680b8['rows']:[];return initializeQueues(_0x3cb50d,_0x29af31,_0x4649ef,_0x229eda[_0xaa37('0x4f')][_0xaa37('0x64')]);})[_0xaa37('0x16')](function(_0x38e122){var _0xd0d112=_0x38e122[_0xaa37('0x61')](function(_0x58d910){if(_0x4649ef==='voice')return getVoiceQueueAgents(_0x58d910,_0x3cb50d,_0x2c89ae,_0x157c3d);else return getQueueAgents(_0x58d910,_0x2c89ae,_0x4649ef);});return Promise[_0xaa37('0x7d')](_0xd0d112);})[_0xaa37('0x16')](function(_0x2237dc){_0x4b8fb0[_0xaa37('0x5e')]=_0x2237dc;return _0x4b8fb0;})[_0xaa37('0x16')](respondWithFilteredResult(_0x7d0394,_0xff5b3e))[_0xaa37('0x19')](handleError(_0x7d0394,null));};
\ No newline at end of file
+var _0xcff0=['outbound','dialMethod','voice','QueueCampaigns','Queues','filter','getRealtimeQueues','initializeQueues','../../components/realtime/agents','../../components/realtime/queues','../../config/utils','../../errors/api','APIBadRequestError','handleError','offset','undefined','count','limit','status','set','Content-Range','json','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','*pause','resolve','then','channel','Channel\x20parameter\x20%s\x20is\x20invalid','sort','includes','globalStatus','validateSortParameter','fields','join','order','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','length','map','User','rawAttributes','fieldName','type','role','agent','online','getOptions','forEach','push','Pause','where','user','userProfileId','Agents','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','filterAgentAttributes','merge','pause','Status','sortAgentsByStatus','catch','getQueues','isValidChannel','format','startCase','Queue','key','name'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xcff0,0x18e));var _0x0cff=function(_0x3e999f,_0x5aab74){_0x3e999f=_0x3e999f-0x0;var _0x1f0905=_0xcff0[_0x3e999f];return _0x1f0905;};'use strict';var _=require('lodash');var util=require('util');var rta=require(_0x0cff('0x0'));var rtq=require(_0x0cff('0x1'));var qs=require('../../components/parsers/qs');var utils=require(_0x0cff('0x2'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0x0cff('0x3'))[_0x0cff('0x4')];var APIHandleError=require(_0x0cff('0x3'))[_0x0cff('0x5')];function respondWithFilteredResult(_0x2e2ab2,_0x1a168f){return function(_0xd7df83){if(_0xd7df83){var _0x1b8d6f=typeof _0x1a168f[_0x0cff('0x6')]===_0x0cff('0x7')&&typeof _0x1a168f['limit']===_0x0cff('0x7');var _0x55fffd=_0xd7df83[_0x0cff('0x8')];var _0x4a68a1=_0x1b8d6f?0x0:_0x1a168f[_0x0cff('0x6')];var _0x296087=_0x1b8d6f?_0xd7df83[_0x0cff('0x8')]:_0x1a168f[_0x0cff('0x6')]+_0x1a168f[_0x0cff('0x9')];var _0x165601;if(_0x296087>=_0x55fffd){_0x296087=_0x55fffd;_0x165601=0xc8;}else{_0x165601=0xce;}_0x2e2ab2[_0x0cff('0xa')](_0x165601);return _0x2e2ab2[_0x0cff('0xb')](_0x0cff('0xc'),_0x4a68a1+'-'+_0x296087+'/'+_0x55fffd)[_0x0cff('0xd')](_0xd7df83);}return null;};}exports[_0x0cff('0xe')]=function(_0x13b81f,_0x413be4){var _0x2656a3={'count':0x0,'rows':[]};var _0x34206c={};var _0x20358a;var _0x2c63e2=utils[_0x0cff('0xf')]();var _0x4fb0a3;var _0x15ee66;var _0x17955d=_0x13b81f[_0x0cff('0x10')][_0x0cff('0x11')];var _0x14f8a3=_0x13b81f[_0x0cff('0x10')][_0x0cff('0x12')];var _0x30782e=_0x13b81f['query'][_0x0cff('0x13')];var _0x5c19ee=_0x14f8a3==='pause'||_0x14f8a3===_0x0cff('0x14')?!![]:![];var _0x436a73=[];var _0x63b183;var _0x256a4a;Promise[_0x0cff('0x15')]()[_0x0cff('0x16')](function(){if(_0x13b81f['query']['channel']){if(!utils['isValidChannel'](_0x13b81f[_0x0cff('0x10')][_0x0cff('0x17')])){throw new APIBadRequestError(util['format'](_0x0cff('0x18'),_0x13b81f['query'][_0x0cff('0x17')]));}_0x20358a=_0x13b81f[_0x0cff('0x10')][_0x0cff('0x17')]['toLowerCase']();}if(!_0x13b81f[_0x0cff('0x10')][_0x0cff('0x19')]||!_0x13b81f['query'][_0x0cff('0x19')][_0x0cff('0x1a')](_0x0cff('0x1b'))){_0x13b81f['query']['sort']=rta[_0x0cff('0x1c')](_0x13b81f['query'][_0x0cff('0x19')]);return;}var _0x4ef0b8=rta['getUpdatedSortOptions'](_0x13b81f[_0x0cff('0x10')][_0x0cff('0x19')]);_0x13b81f[_0x0cff('0x10')][_0x0cff('0x19')]=_0x4ef0b8[_0x0cff('0x1d')][_0x0cff('0x1e')](',');_0x63b183=_0x4ef0b8[_0x0cff('0x1f')];})[_0x0cff('0x16')](function(){if(!_0x17955d){return[];}return rta['getAgentIdsByQueues'](_0x17955d,_0x20358a);})[_0x0cff('0x16')](function(_0x448380){_0x436a73=_0x448380;return rta[_0x0cff('0x20')]();})[_0x0cff('0x16')](function(_0x1bc627){_0x15ee66=_0x1bc627[_0x0cff('0x21')];if((!_0x14f8a3||_0x5c19ee)&&!_0x63b183){return _0x436a73;}if(_0x63b183&&!_0x14f8a3){return rta[_0x0cff('0x22')](_0x15ee66,_0x436a73,_0x63b183);}else{return rta['getAgentIdsByStatus'](_0x15ee66,_0x436a73,_0x14f8a3);}})[_0x0cff('0x16')](function(_0x7e197f){_0x436a73=_0x7e197f;var _0x5a29d6=![];if(_0x436a73[_0x0cff('0x23')]===0x0){if(_0x17955d||_0x14f8a3){_0x5a29d6=!![];}if(_0x5c19ee){_0x5a29d6=![];}}if(_0x5a29d6){return _0x2656a3;}var _0x4abe5d=_[_0x0cff('0x24')](db[_0x0cff('0x25')][_0x0cff('0x26')],function(_0x5034b5){return{'name':_0x5034b5[_0x0cff('0x27')],'type':_0x5034b5[_0x0cff('0x28')]['key']};});_0x13b81f[_0x0cff('0x10')][_0x0cff('0x29')]=_0x0cff('0x2a');_0x13b81f['query'][_0x0cff('0x2b')]=!![];_0x34206c=qs[_0x0cff('0x2c')](_0x4abe5d,_0x13b81f);_0x34206c['raw']=!![];var _0x45fee5=[];if(_0x436a73[_0x0cff('0x23')]>0x0){_0x45fee5['push']({'id':{'$in':_0x436a73}});if(_0x63b183&&!_0x14f8a3){_0x256a4a=[db['sequelize']['literal']('FIELD(id,'+_0x436a73+')')];_0x34206c[_0x0cff('0x1f')]=_0x256a4a;}}if(_0x5c19ee){_0x2c63e2[_0x0cff('0x2d')](function(_0x3d7138){var _0x1b2242=!![];if(_0x14f8a3===_0x0cff('0x14')&&_0x20358a!==_0x3d7138){_0x1b2242=![];}_0x45fee5[_0x0cff('0x2e')]({[_0x3d7138+_0x0cff('0x2f')]:_0x1b2242});});if(_0x30782e){_0x45fee5[_0x0cff('0x2e')]({'pauseType':_0x30782e});}}else if(_0x14f8a3){_0x2c63e2[_0x0cff('0x2d')](function(_0x492216){_0x45fee5['push']({[_0x492216+_0x0cff('0x2f')]:![]});});}_0x34206c[_0x0cff('0x30')]=_['merge'](_0x34206c[_0x0cff('0x30')],{'$and':_0x45fee5});if(_0x13b81f['user'][_0x0cff('0x29')]==='user'){var _0xaead9e={'params':{'id':_0x13b81f[_0x0cff('0x31')][_0x0cff('0x32')]},'query':{'section':_0x0cff('0x33'),'role':_0x0cff('0x2a'),'online':!![],'raw':!![],'ids':_0x436a73,'customSorting':_0x256a4a}};if(_0x5c19ee){_0xaead9e[_0x0cff('0x10')][_0x0cff('0x34')]=_0x45fee5;}_0xaead9e[_0x0cff('0x10')]=Object[_0x0cff('0x35')](_0xaead9e['query'],_0x13b81f[_0x0cff('0x10')]);delete _0xaead9e[_0x0cff('0x10')]['id'];return db[_0x0cff('0x36')][_0x0cff('0x37')](_0xaead9e);}return db['User'][_0x0cff('0x38')](_0x34206c);})['then'](function(_0xb15f1b){_0x2656a3['count']=_0xb15f1b[_0x0cff('0x8')];_0x4fb0a3=_0xb15f1b[_0x0cff('0x21')];return _0x4fb0a3[_0x0cff('0x24')](function(_0x8f5bd7){var _0x5084e5=_['find'](_0x15ee66,['id',_0x8f5bd7['id']]);if(_0x5084e5){var _0x2ff852=rta[_0x0cff('0x39')](_0x5084e5);_[_0x0cff('0x3a')](_0x8f5bd7,_0x2ff852);}_0x8f5bd7[_0x0cff('0x1b')]=rta['getAgentStatus'](_0x8f5bd7);if(_0x8f5bd7[_0x0cff('0x1b')][_0x0cff('0x1a')](_0x0cff('0x3b'))){_0x2c63e2[_0x0cff('0x2d')](function(_0x16e506){if(_0x8f5bd7[_0x16e506+_0x0cff('0x2f')]){_0x8f5bd7[_0x16e506+_0x0cff('0x3c')]=_0x0cff('0x3b');}});}return _0x8f5bd7;});})[_0x0cff('0x16')](function(_0x5927b8){if(!_0x63b183||_0x256a4a){return _0x5927b8;}return rta[_0x0cff('0x3d')](_0x5927b8,_0x63b183);})[_0x0cff('0x16')](function(_0x477907){_0x2656a3[_0x0cff('0x21')]=_0x477907;return _0x2656a3;})[_0x0cff('0x16')](respondWithFilteredResult(_0x413be4,_0x34206c))[_0x0cff('0x3e')](APIHandleError(_0x413be4));};exports[_0x0cff('0x3f')]=function(_0x83b397,_0x4131cd){var _0x1d8992={'count':0x0,'rows':[]};var _0x26053f={};var _0x2bd71c;var _0x3d3263;var _0x241dd7;Promise['resolve']()['then'](function(){if(_0x83b397[_0x0cff('0x10')][_0x0cff('0x17')]){if(!utils[_0x0cff('0x40')](_0x83b397[_0x0cff('0x10')][_0x0cff('0x17')])){throw new APIBadRequestError(util[_0x0cff('0x41')](_0x0cff('0x18'),_0x83b397[_0x0cff('0x10')]['channel']));}_0x2bd71c=_0x83b397['query']['channel']['toLowerCase']();}var _0x304ae3=_[_0x0cff('0x42')](_0x2bd71c)+_0x0cff('0x43');var _0x291935=_[_0x0cff('0x24')](db[_0x304ae3][_0x0cff('0x26')],function(_0x33c36c){return{'name':_0x33c36c[_0x0cff('0x27')],'type':_0x33c36c['type'][_0x0cff('0x44')]};});if(!_0x83b397[_0x0cff('0x10')][_0x0cff('0x1d')]){var _0x34298a=['id',_0x0cff('0x45')];if(_0x2bd71c==='voice'){_0x34298a[_0x0cff('0x2e')](_0x0cff('0x28'));if(_0x83b397[_0x0cff('0x10')]['type']===_0x0cff('0x46')){_0x34298a[_0x0cff('0x2e')](['dialActive',_0x0cff('0x47')]);}}_0x83b397[_0x0cff('0x10')][_0x0cff('0x1d')]=_0x34298a[_0x0cff('0x1e')](',');}_0x26053f=qs[_0x0cff('0x2c')](_0x291935,_0x83b397);if(_0x83b397['user']['role']===_0x0cff('0x31')){var _0x47f028={'params':{'id':_0x83b397[_0x0cff('0x31')][_0x0cff('0x32')]},'query':{'section':_0x2bd71c===_0x0cff('0x48')&&_0x83b397[_0x0cff('0x10')]['type']==='outbound'?_0x0cff('0x49'):_[_0x0cff('0x42')](_0x2bd71c)+_0x0cff('0x4a'),'type':_0x83b397[_0x0cff('0x10')][_0x0cff('0x28')],'nolimit':!![],'sort':'name','filter':_0x83b397['query'][_0x0cff('0x4b')]}};return db['UserProfile'][_0x0cff('0x37')](_0x47f028);}return db[_0x304ae3][_0x0cff('0x38')](_0x26053f);})[_0x0cff('0x16')](function(_0x1e8fbe){_0x1d8992['count']=_0x1e8fbe['count'];_0x3d3263=_0x1e8fbe['rows'];return rtq[_0x0cff('0x4c')](_0x83b397,_0x2bd71c);})['then'](function(_0x413efc){_0x241dd7=_0x413efc[_0x0cff('0x21')];return rtq[_0x0cff('0x4d')](_0x3d3263,_0x241dd7,_0x2bd71c,_0x83b397[_0x0cff('0x10')][_0x0cff('0x28')]);})[_0x0cff('0x16')](function(_0x4ae147){_0x1d8992[_0x0cff('0x21')]=_0x4ae147;return _0x1d8992;})[_0x0cff('0x16')](respondWithFilteredResult(_0x4131cd,_0x26053f))['catch'](APIHandleError(_0x4131cd));};
\ No newline at end of file
index f363b66..ab802e8 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(_0x4001ad,_0x1e22dd){var _0x4c7ec2=function(_0x24cb8a){while(--_0x24cb8a){_0x4001ad['push'](_0x4001ad['shift']());}};_0x4c7ec2(++_0x1e22dd);}(_0x9c44,0x178));var _0x49c4=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x9c44[_0x279d37];return _0x530173;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2bc5e5,_0x436eb8){var _0x4a4dad=function(_0x4e82c0){while(--_0x4e82c0){_0x2bc5e5['push'](_0x2bc5e5['shift']());}};_0x4a4dad(++_0x436eb8);}(_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 50221d2..7f0a0fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b3=['exports','STRING','DATE','INTEGER','sequelize'];(function(_0x2a3a19,_0x3163ce){var _0xafa0ab=function(_0x388221){while(--_0x388221){_0x2a3a19['push'](_0x2a3a19['shift']());}};_0xafa0ab(++_0x3163ce);}(_0xc7b3,0x1c6));var _0x3c7b=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xc7b3[_0x1694f5];return _0x5b4321;};'use strict';var Sequelize=require(_0x3c7b('0x0'));module[_0x3c7b('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x3c7b('0x2')]},'scheduledat':{'type':Sequelize[_0x3c7b('0x3')]},'uniqueid':{'type':Sequelize[_0x3c7b('0x2')]},'starttime':{'type':Sequelize[_0x3c7b('0x3')]},'responsetime':{'type':Sequelize[_0x3c7b('0x3')]},'ringtime':{'type':Sequelize[_0x3c7b('0x4')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x3c7b('0x2')]},'membername':{'type':Sequelize[_0x3c7b('0x2')]}};
\ No newline at end of file
+var _0xc21c=['STRING','DATE','INTEGER','sequelize','exports'];(function(_0x19ba99,_0x4d3b15){var _0x53d50a=function(_0x46c09c){while(--_0x46c09c){_0x19ba99['push'](_0x19ba99['shift']());}};_0x53d50a(++_0x4d3b15);}(_0xc21c,0x166));var _0xcc21=function(_0x4a7b59,_0x5a879d){_0x4a7b59=_0x4a7b59-0x0;var _0x23b15c=_0xc21c[_0x4a7b59];return _0x23b15c;};'use strict';var Sequelize=require(_0xcc21('0x0'));module[_0xcc21('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xcc21('0x2')]},'scheduledat':{'type':Sequelize[_0xcc21('0x3')]},'uniqueid':{'type':Sequelize[_0xcc21('0x2')]},'starttime':{'type':Sequelize[_0xcc21('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xcc21('0x4')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xcc21('0x2')]},'campaigntype':{'type':Sequelize[_0xcc21('0x2')]},'membername':{'type':Sequelize[_0xcc21('0x2')]}};
\ No newline at end of file
index 30631fc..405d35d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4d5=['api','moment','bluebird','request-promise','../../config/environment','./reportAgentPreview.attributes','exports','define','report_agent_preview','lodash'];(function(_0x3b231a,_0x53a00d){var _0x18d67a=function(_0x5e14c6){while(--_0x5e14c6){_0x3b231a['push'](_0x3b231a['shift']());}};_0x18d67a(++_0x53a00d);}(_0xb4d5,0x1e9));var _0x5b4d=function(_0x3b5f66,_0x16fcee){_0x3b5f66=_0x3b5f66-0x0;var _0x18086d=_0xb4d5[_0x3b5f66];return _0x18086d;};'use strict';var _=require(_0x5b4d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5b4d('0x1'));var moment=require(_0x5b4d('0x2'));var BPromise=require(_0x5b4d('0x3'));var rp=require(_0x5b4d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5b4d('0x5'));var attributes=require(_0x5b4d('0x6'));module[_0x5b4d('0x7')]=function(_0x577f6f,_0x1a23bf){return _0x577f6f[_0x5b4d('0x8')]('ReportAgentPreview',attributes,{'tableName':_0x5b4d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x336f=['moment','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','report_agent_preview','util'];(function(_0x29ff5e,_0x220788){var _0xd8135a=function(_0x3a0136){while(--_0x3a0136){_0x29ff5e['push'](_0x29ff5e['shift']());}};_0xd8135a(++_0x220788);}(_0x336f,0x1ee));var _0xf336=function(_0x12634e,_0x5148a6){_0x12634e=_0x12634e-0x0;var _0x2abf00=_0x336f[_0x12634e];return _0x2abf00;};'use strict';var _=require('lodash');var util=require(_0xf336('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xf336('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf336('0x2'));var rimraf=require(_0xf336('0x3'));var config=require(_0xf336('0x4'));var attributes=require(_0xf336('0x5'));module[_0xf336('0x6')]=function(_0x2d4ebd,_0x3a8680){return _0x2d4ebd[_0xf336('0x7')]('ReportAgentPreview',attributes,{'tableName':_0xf336('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 72c13a6..21cddc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1093=['ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','body','options','raw','stringify','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then','info','ReportAgentPreview,\x20%s,\x20%s','debug'];(function(_0x5c6994,_0x19ad9a){var _0x1d5c84=function(_0x4a385a){while(--_0x4a385a){_0x5c6994['push'](_0x5c6994['shift']());}};_0x1d5c84(++_0x19ad9a);}(_0x1093,0x187));var _0x3109=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0x1093[_0x5037ab];return _0x512adb;};'use strict';var _=require(_0x3109('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3109('0x1'));var rs=require(_0x3109('0x2'));var fs=require('fs');var Redis=require(_0x3109('0x3'));var db=require(_0x3109('0x4'))['db'];var utils=require(_0x3109('0x5'));var logger=require('../../config/logger')(_0x3109('0x6'));var config=require(_0x3109('0x7'));var jayson=require(_0x3109('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x159c3a,_0x18ff59,_0xd1147f){return new BPromise(function(_0x455651,_0x8e8316){return client[_0x3109('0x9')](_0x159c3a,_0xd1147f)[_0x3109('0xa')](function(_0x141d1b){logger[_0x3109('0xb')](_0x3109('0xc'),_0x18ff59,'request\x20sent');logger[_0x3109('0xd')](_0x3109('0xe'),_0x18ff59,_0x3109('0xf'),JSON['stringify'](_0x141d1b));if(_0x141d1b[_0x3109('0x10')]){if(_0x141d1b[_0x3109('0x10')][_0x3109('0x11')]===0x1f4){logger[_0x3109('0x10')](_0x3109('0xc'),_0x18ff59,_0x141d1b[_0x3109('0x10')]['message']);return _0x8e8316(_0x141d1b[_0x3109('0x10')]['message']);}logger[_0x3109('0x10')](_0x3109('0xc'),_0x18ff59,_0x141d1b[_0x3109('0x10')]['message']);return _0x455651(_0x141d1b[_0x3109('0x10')][_0x3109('0x12')]);}else{logger[_0x3109('0xb')](_0x3109('0xc'),_0x18ff59,'request\x20sent');_0x455651(_0x141d1b[_0x3109('0x13')][_0x3109('0x12')]);}})[_0x3109('0x14')](function(_0x3aa145){logger[_0x3109('0x10')](_0x3109('0xc'),_0x18ff59,_0x3aa145);_0x8e8316(_0x3aa145);});});}exports[_0x3109('0x15')]=function(_0x42eef4){var _0x54b798=this;return new Promise(function(_0x51ef58,_0x2e67ac){return db[_0x3109('0x16')]['create'](_0x42eef4[_0x3109('0x17')],{'raw':_0x42eef4['options']?_0x42eef4[_0x3109('0x18')][_0x3109('0x19')]===undefined?!![]:![]:!![]})[_0x3109('0xa')](function(_0x53c909){logger[_0x3109('0xb')](_0x3109('0x15'),_0x42eef4);logger[_0x3109('0xd')](_0x3109('0x15'),_0x42eef4,JSON[_0x3109('0x1a')](_0x53c909));_0x51ef58(_0x53c909);})['catch'](function(_0x4b6870){logger[_0x3109('0x10')](_0x3109('0x15'),_0x4b6870[_0x3109('0x12')],_0x42eef4);_0x2e67ac(_0x54b798[_0x3109('0x10')](0x1f4,_0x4b6870[_0x3109('0x12')]));});});};
\ No newline at end of file
+var _0x617d=['error','code','message','ReportAgentPreview,\x20%s,\x20%s','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x617d,0x1e8));var _0xd617=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x617d[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0xd617('0x0'));var util=require(_0xd617('0x1'));var moment=require(_0xd617('0x2'));var BPromise=require(_0xd617('0x3'));var rs=require(_0xd617('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd617('0x5'));var logger=require(_0xd617('0x6'))(_0xd617('0x7'));var config=require(_0xd617('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd617('0x9')][_0xd617('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x48aacb,_0x4ac383,_0x2a2148){return new BPromise(function(_0x235b8e,_0x426558){return client[_0xd617('0xb')](_0x48aacb,_0x2a2148)[_0xd617('0xc')](function(_0x132b33){logger[_0xd617('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x4ac383,_0xd617('0xe'));logger[_0xd617('0xf')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x4ac383,'request\x20sent',JSON['stringify'](_0x132b33));if(_0x132b33[_0xd617('0x10')]){if(_0x132b33[_0xd617('0x10')][_0xd617('0x11')]===0x1f4){logger[_0xd617('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x4ac383,_0x132b33[_0xd617('0x10')]['message']);return _0x426558(_0x132b33['error']['message']);}logger[_0xd617('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x4ac383,_0x132b33[_0xd617('0x10')][_0xd617('0x12')]);return _0x235b8e(_0x132b33['error'][_0xd617('0x12')]);}else{logger[_0xd617('0xd')](_0xd617('0x13'),_0x4ac383,_0xd617('0xe'));_0x235b8e(_0x132b33[_0xd617('0x14')][_0xd617('0x12')]);}})[_0xd617('0x15')](function(_0x2bfdce){logger[_0xd617('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x4ac383,_0x2bfdce);_0x426558(_0x2bfdce);});});}exports[_0xd617('0x16')]=function(_0x3cbb73){var _0x785710=this;return new Promise(function(_0x57e070,_0x1805f2){return db[_0xd617('0x17')][_0xd617('0x18')](_0x3cbb73[_0xd617('0x19')],{'raw':_0x3cbb73[_0xd617('0x1a')]?_0x3cbb73[_0xd617('0x1a')][_0xd617('0x1b')]===undefined?!![]:![]:!![]})[_0xd617('0xc')](function(_0x44b9fb){logger[_0xd617('0xd')]('CreateReportAgentPreview',_0x3cbb73);logger['debug'](_0xd617('0x16'),_0x3cbb73,JSON['stringify'](_0x44b9fb));_0x57e070(_0x44b9fb);})[_0xd617('0x15')](function(_0x4b0eea){logger[_0xd617('0x10')](_0xd617('0x16'),_0x4b0eea[_0xd617('0x12')],_0x3cbb73);_0x1805f2(_0x785710[_0xd617('0x10')](0x1f4,_0x4b0eea['message']));});});};
\ No newline at end of file
index 8d55d96..afd8d56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd82f=['/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','voiceChannels','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','/voice/queues/channels','voiceQueuesChannels'];(function(_0x1ad901,_0x852d9e){var _0x3c0249=function(_0x319eda){while(--_0x319eda){_0x1ad901['push'](_0x1ad901['shift']());}};_0x3c0249(++_0x852d9e);}(_0xd82f,0x135));var _0xfd82=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xd82f[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xfd82('0x0'));var util=require(_0xfd82('0x1'));var path=require(_0xfd82('0x2'));var express=require(_0xfd82('0x3'));var router=express[_0xfd82('0x4')]();var auth=require(_0xfd82('0x5'));var controller=require(_0xfd82('0x6'));router[_0xfd82('0x7')](_0xfd82('0x8'),auth['isAuthenticated'](),controller[_0xfd82('0x9')]);router[_0xfd82('0x7')]('/voice/channels/:uniqueid/mixmonitor',auth[_0xfd82('0xa')](),controller[_0xfd82('0xb')]);router[_0xfd82('0x7')](_0xfd82('0xc'),auth[_0xfd82('0xa')](),controller[_0xfd82('0xd')]);router[_0xfd82('0x7')]('/voice/queues',auth[_0xfd82('0xa')](),controller[_0xfd82('0xe')]);router[_0xfd82('0x7')](_0xfd82('0xf'),auth['isAuthenticated'](),controller[_0xfd82('0x10')]);router[_0xfd82('0x7')](_0xfd82('0x11'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x12')]);router['get'](_0xfd82('0x13'),auth['isAuthenticated'](),controller[_0xfd82('0x14')]);router['get'](_0xfd82('0x15'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x16')]);router[_0xfd82('0x7')](_0xfd82('0x17'),auth['isAuthenticated'](),controller[_0xfd82('0x18')]);router[_0xfd82('0x7')](_0xfd82('0x19'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x1a')]);router['get'](_0xfd82('0x1b'),auth[_0xfd82('0xa')](),controller['faxQueues']);router[_0xfd82('0x7')](_0xfd82('0x1c'),auth[_0xfd82('0xa')](),controller['voiceQueuesPreview']);router[_0xfd82('0x7')](_0xfd82('0x1d'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x1e')]);router[_0xfd82('0x7')](_0xfd82('0x1f'),auth['isAuthenticated'](),controller[_0xfd82('0x20')]);router[_0xfd82('0x7')](_0xfd82('0x21'),auth['isAuthenticated'](),controller[_0xfd82('0x22')]);router[_0xfd82('0x7')](_0xfd82('0x23'),auth[_0xfd82('0xa')](),controller['voiceQueuesChannelRedirect']);router['get'](_0xfd82('0x24'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x25')]);router[_0xfd82('0x26')](_0xfd82('0x24'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x27')]);router[_0xfd82('0x7')]('/outbound',auth['isAuthenticated'](),controller[_0xfd82('0x28')]);router[_0xfd82('0x7')]('/outbound/channels',auth[_0xfd82('0xa')](),controller['outboundChannels']);router['get'](_0xfd82('0x29'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x2a')]);router[_0xfd82('0x26')](_0xfd82('0x2b'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x2c')]);router[_0xfd82('0x7')](_0xfd82('0x2d'),auth['isAuthenticated'](),controller[_0xfd82('0x2e')]);router[_0xfd82('0x7')](_0xfd82('0x2f'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x30')]);router[_0xfd82('0x7')](_0xfd82('0x31'),auth['isAuthenticated'](),controller['campaigns']);router[_0xfd82('0x7')](_0xfd82('0x32'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x33')]);router[_0xfd82('0x7')](_0xfd82('0x34'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x35')]);router[_0xfd82('0x7')](_0xfd82('0x36'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x37')]);router[_0xfd82('0x7')]('/openchannel/queues/waitinginteractions',auth[_0xfd82('0xa')](),controller[_0xfd82('0x38')]);router[_0xfd82('0x7')](_0xfd82('0x39'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x3a')]);router[_0xfd82('0x7')](_0xfd82('0x3b'),auth[_0xfd82('0xa')](),controller['smsQueuesWaitingInteractions']);router[_0xfd82('0x7')](_0xfd82('0x3c'),auth['isAuthenticated'](),controller[_0xfd82('0x3d')]);router[_0xfd82('0x7')](_0xfd82('0x3e'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x3f')]);router[_0xfd82('0x40')](_0xfd82('0x41'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x42')](_0xfd82('0x43')));router[_0xfd82('0x7')]('/mail/queues/:id',auth['isAuthenticated'](),controller['showMailQueues']);router[_0xfd82('0x40')]('/chat/queues/:id/notify',auth[_0xfd82('0xa')](),controller['queueNotify'](_0xfd82('0x44')));router['get'](_0xfd82('0x45'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x46')]);router[_0xfd82('0x40')](_0xfd82('0x47'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x42')]('fax'));router[_0xfd82('0x7')]('/fax/queues/:id',auth['isAuthenticated'](),controller['showFaxQueues']);router[_0xfd82('0x40')]('/openchannel/queues/:id/notify',auth[_0xfd82('0xa')](),controller[_0xfd82('0x42')](_0xfd82('0x48')));router['get'](_0xfd82('0x49'),auth['isAuthenticated'](),controller[_0xfd82('0x4a')]);router[_0xfd82('0x40')](_0xfd82('0x4b'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x42')](_0xfd82('0x4c')));router[_0xfd82('0x40')](_0xfd82('0x4d'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x42')](_0xfd82('0x4e')));router['get'](_0xfd82('0x4f'),auth[_0xfd82('0xa')](),controller['showSmsQueues']);router[_0xfd82('0x7')](_0xfd82('0x50'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x51')]);router[_0xfd82('0x40')](_0xfd82('0x52'),auth[_0xfd82('0xa')](),controller[_0xfd82('0x53')]);module[_0xfd82('0x54')]=router;
\ No newline at end of file
+var _0xd3a8=['/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','put','/outbound','outbound','/outbound/channels','/agents','agents','/agents/:id/capacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','mail','/mail/queues/:id','showMailQueues','queueNotify','chat','/chat/queues/:id','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','/agents/:id/notify','multer','path','express','Router','../../components/auth/service','get','/voice/channels','/voice/channels/:uniqueid/mixmonitor','/voice/channels/:uniqueid/stopmixmonitor','isAuthenticated','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues'];(function(_0x3d5c06,_0x302d47){var _0x6d5d66=function(_0x197527){while(--_0x197527){_0x3d5c06['push'](_0x3d5c06['shift']());}};_0x6d5d66(++_0x302d47);}(_0xd3a8,0x135));var _0x8d3a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xd3a8[_0x42cae2];return _0x5f256f;};'use strict';var multer=require(_0x8d3a('0x0'));var util=require('util');var path=require(_0x8d3a('0x1'));var express=require(_0x8d3a('0x2'));var router=express[_0x8d3a('0x3')]();var auth=require(_0x8d3a('0x4'));var controller=require('./rpc.controller');router[_0x8d3a('0x5')](_0x8d3a('0x6'),auth['isAuthenticated'](),controller['voiceChannels']);router['get'](_0x8d3a('0x7'),auth['isAuthenticated'](),controller['voiceChannelMixMonitor']);router[_0x8d3a('0x5')](_0x8d3a('0x8'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0xa')]);router[_0x8d3a('0x5')](_0x8d3a('0xb'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0xc')]);router[_0x8d3a('0x5')](_0x8d3a('0xd'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0xe')]);router[_0x8d3a('0x5')]('/mail/queues',auth['isAuthenticated'](),controller['mailQueues']);router[_0x8d3a('0x5')](_0x8d3a('0xf'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x10')]);router[_0x8d3a('0x5')](_0x8d3a('0x11'),auth['isAuthenticated'](),controller[_0x8d3a('0x12')]);router[_0x8d3a('0x5')]('/sms/queues',auth['isAuthenticated'](),controller[_0x8d3a('0x13')]);router['get'](_0x8d3a('0x14'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x15')]);router['get'](_0x8d3a('0x16'),auth['isAuthenticated'](),controller[_0x8d3a('0x17')]);router['get'](_0x8d3a('0x18'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x19')]);router['get']('/voice/queues/channels',auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x1a')]);router[_0x8d3a('0x5')](_0x8d3a('0x1b'),auth[_0x8d3a('0x9')](),controller['voiceQueuesChannel']);router[_0x8d3a('0x5')](_0x8d3a('0x1c'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x1d')]);router[_0x8d3a('0x5')](_0x8d3a('0x1e'),auth['isAuthenticated'](),controller[_0x8d3a('0x1f')]);router[_0x8d3a('0x5')](_0x8d3a('0x20'),auth[_0x8d3a('0x9')](),controller['showVoiceQueues']);router[_0x8d3a('0x21')](_0x8d3a('0x20'),auth[_0x8d3a('0x9')](),controller['updateVoiceQueue']);router[_0x8d3a('0x5')](_0x8d3a('0x22'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x23')]);router[_0x8d3a('0x5')](_0x8d3a('0x24'),auth[_0x8d3a('0x9')](),controller['outboundChannels']);router[_0x8d3a('0x5')](_0x8d3a('0x25'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x26')]);router[_0x8d3a('0x21')](_0x8d3a('0x27'),auth['isAuthenticated'](),controller['agentCapacity']);router[_0x8d3a('0x5')](_0x8d3a('0x28'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x29')]);router[_0x8d3a('0x5')](_0x8d3a('0x2a'),auth['isAuthenticated'](),controller[_0x8d3a('0x2b')]);router[_0x8d3a('0x5')](_0x8d3a('0x2c'),auth['isAuthenticated'](),controller[_0x8d3a('0x2d')]);router[_0x8d3a('0x5')](_0x8d3a('0x2e'),auth['isAuthenticated'](),controller[_0x8d3a('0x2f')]);router['get'](_0x8d3a('0x30'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x31')]);router['get'](_0x8d3a('0x32'),auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router[_0x8d3a('0x5')](_0x8d3a('0x33'),auth['isAuthenticated'](),controller[_0x8d3a('0x34')]);router['get']('/openchannel/queues/:id/waitinginteractions',auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x35')]);router['get'](_0x8d3a('0x36'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x37')]);router[_0x8d3a('0x5')](_0x8d3a('0x38'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x39')]);router[_0x8d3a('0x5')](_0x8d3a('0x3a'),auth[_0x8d3a('0x9')](),controller['faxQueuesWaitingInteractions']);router[_0x8d3a('0x3b')](_0x8d3a('0x3c'),auth['isAuthenticated'](),controller['queueNotify'](_0x8d3a('0x3d')));router[_0x8d3a('0x5')](_0x8d3a('0x3e'),auth['isAuthenticated'](),controller[_0x8d3a('0x3f')]);router[_0x8d3a('0x3b')]('/chat/queues/:id/notify',auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x40')](_0x8d3a('0x41')));router[_0x8d3a('0x5')](_0x8d3a('0x42'),auth[_0x8d3a('0x9')](),controller['showChatQueues']);router[_0x8d3a('0x3b')](_0x8d3a('0x43'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x40')](_0x8d3a('0x44')));router[_0x8d3a('0x5')](_0x8d3a('0x45'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x46')]);router[_0x8d3a('0x3b')]('/openchannel/queues/:id/notify',auth['isAuthenticated'](),controller[_0x8d3a('0x40')](_0x8d3a('0x47')));router[_0x8d3a('0x5')](_0x8d3a('0x48'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x49')]);router['post'](_0x8d3a('0x4a'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x40')](_0x8d3a('0x4b')));router[_0x8d3a('0x3b')](_0x8d3a('0x4c'),auth[_0x8d3a('0x9')](),controller[_0x8d3a('0x40')](_0x8d3a('0x4d')));router[_0x8d3a('0x5')](_0x8d3a('0x4e'),auth[_0x8d3a('0x9')](),controller['showSmsQueues']);router[_0x8d3a('0x5')](_0x8d3a('0x4f'),auth[_0x8d3a('0x9')](),controller['showWhatsappQueues']);router[_0x8d3a('0x3b')](_0x8d3a('0x50'),auth[_0x8d3a('0x9')](),controller['agentNotify']);module['exports']=router;
\ No newline at end of file
index 63d7c2b..b994064 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','merge','params','catch','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','VoiceQueuesPreview','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','Agents','agentCapacity','interaction','hasOwnProperty','MemberReport','findAll','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','user','INTERACTION','interface','SIP/%s','agent','AgentCapacity','capacity','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','showMailQueues','MailQueues','mailAccounts','OpenchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Queue','findOne','\x20Queue\x20not\x20found','Interaction','update','MessageId','From','Account','QueueId','TransferReport','create','Start','queue','queueTransferTimeout','agentNotify','Channel\x20field\x20is\x20mandatory','channel','User','Agent\x20not\x20found','Message','messageId','\x20Message\x20not\x20found','agentTransferTimeout','*,*,*,*','bluebird','moment','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','then','error','code','message','result','status','json','sendStatus','stack'];(function(_0x41c372,_0x216e7e){var _0x1ea5c3=function(_0x3a1428){while(--_0x3a1428){_0x41c372['push'](_0x41c372['shift']());}};_0x1ea5c3(++_0x216e7e);}(_0xa41a,0x6b));var _0xaa41=function(_0x194b5c,_0x3e4893){_0x194b5c=_0x194b5c-0x0;var _0x2badf6=_0xa41a[_0x194b5c];return _0x2badf6;};'use strict';var BPromise=require(_0xaa41('0x0'));var moment=require(_0xaa41('0x1'));var _=require('lodash');var util=require(_0xaa41('0x2'));var db=require(_0xaa41('0x3'))['db'];var logger=require(_0xaa41('0x4'))(_0xaa41('0x5'));var jayson=require(_0xaa41('0x6'));var amiClient=jayson[_0xaa41('0x7')][_0xaa41('0x8')]({'port':0x232a});var mailClient=jayson[_0xaa41('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0xaa41('0x7')][_0xaa41('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){var _0x31df43=_0x179545?_0x179545:amiClient;return _0x31df43[_0xaa41('0x9')](_0x54bc5a,_0x5b1fff)[_0xaa41('0xa')](function(_0x1cc344){if(_0x1cc344[_0xaa41('0xb')]){if(_0x1cc344[_0xaa41('0xb')][_0xaa41('0xc')]===0x1f4){return _0x588ab4(_0x1cc344[_0xaa41('0xb')][_0xaa41('0xd')]);}return _0x202cce(_0x1cc344['error'][_0xaa41('0xd')]);}else{_0x202cce(_0x1cc344[_0xaa41('0xe')]);}})['catch'](function(_0x54827c){_0x588ab4(_0x54827c);});});}function respondWithResult(_0x1d0a54,_0x518b5b){_0x518b5b=_0x518b5b||0xc8;return function(_0x19bd69){if(_0x19bd69){return _0x1d0a54[_0xaa41('0xf')](_0x518b5b)[_0xaa41('0x10')](_0x19bd69);}return _0x1d0a54[_0xaa41('0x11')](0x194);};}function handleError(_0x6f9ade,_0x4eaf81){_0x4eaf81=_0x4eaf81||0x1f4;return function(_0x1e9d7f){logger[_0xaa41('0xb')](_0x1e9d7f[_0xaa41('0x12')]);if(_0x1e9d7f[_0xaa41('0x13')]){delete _0x1e9d7f[_0xaa41('0x13')];}_0x6f9ade[_0xaa41('0xf')](_0x4eaf81)[_0xaa41('0x14')](_0x1e9d7f);};}function findById(_0x550ad5){return function(_0x2d868a){if(!_[_0xaa41('0x15')](_0x550ad5)&&!_[_0xaa41('0x15')](_0x2d868a)&&!_[_0xaa41('0x15')](_0x2d868a[_0xaa41('0x16')])){return _[_0xaa41('0x17')](_0x2d868a[_0xaa41('0x16')],function(_0x46e6d3){return _0x46e6d3['id']==_0x550ad5;});}return null;};}exports[_0xaa41('0x18')]=function(_0x4fe1a4,_0x5cd936){return respondWithRpcPromise(_0xaa41('0x19'),_0x4fe1a4[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x5cd936,null))['catch'](handleError(_0x5cd936,null));};exports[_0xaa41('0x1b')]=function(_0x1f692b,_0x4e768e){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0xaa41('0x1c')](_0x1f692b['query'],_0x1f692b[_0xaa41('0x1d')]))[_0xaa41('0xa')](respondWithResult(_0x4e768e,null))[_0xaa41('0x1e')](handleError(_0x4e768e,null));};exports[_0xaa41('0x1f')]=function(_0x1d623c,_0x4eb01f){return respondWithRpcPromise(_0xaa41('0x20'),_[_0xaa41('0x1c')](_0x1d623c[_0xaa41('0x1a')],_0x1d623c[_0xaa41('0x1d')]))[_0xaa41('0xa')](respondWithResult(_0x4eb01f,null))[_0xaa41('0x1e')](handleError(_0x4eb01f,null));};exports['voiceQueues']=function(_0x5795f4,_0x16aec5){return respondWithRpcPromise('VoiceQueues',_0x5795f4['query'])[_0xaa41('0xa')](respondWithResult(_0x16aec5,null))['catch'](handleError(_0x16aec5,null));};exports['showVoiceQueues']=function(_0x2d0ac0,_0x9c8c21){return respondWithRpcPromise(_0xaa41('0x21'),_0x2d0ac0[_0xaa41('0x1a')])[_0xaa41('0xa')](findById(_0x2d0ac0[_0xaa41('0x1d')]['id']))['then'](respondWithResult(_0x9c8c21,null))[_0xaa41('0x1e')](handleError(_0x9c8c21,null));};exports[_0xaa41('0x22')]=function(_0x63c18c,_0x9a16e3){return respondWithRpcPromise(_0xaa41('0x23'),_[_0xaa41('0x1c')](_0x63c18c[_0xaa41('0x24')],_0x63c18c[_0xaa41('0x1d')]))['then'](respondWithResult(_0x9a16e3,null))[_0xaa41('0x1e')](handleError(_0x9a16e3,null));};exports['voiceQueuesPreview']=function(_0x5dad80,_0x714537){return respondWithRpcPromise(_0xaa41('0x25'),_['merge'](_0x5dad80[_0xaa41('0x1a')],_0x5dad80[_0xaa41('0x1d')]))['then'](respondWithResult(_0x714537,null))['catch'](handleError(_0x714537,null));};exports['voiceQueuesChannels']=function(_0x1cf3da,_0x2f5cc0){return respondWithRpcPromise(_0xaa41('0x26'),_0x1cf3da[_0xaa41('0x1a')])['then'](respondWithResult(_0x2f5cc0,null))[_0xaa41('0x1e')](handleError(_0x2f5cc0,null));};exports[_0xaa41('0x27')]=function(_0x3e0204,_0x4de770){return respondWithRpcPromise(_0xaa41('0x28'),_[_0xaa41('0x1c')](_0x3e0204[_0xaa41('0x1a')],_0x3e0204['params']))[_0xaa41('0xa')](respondWithResult(_0x4de770,null))[_0xaa41('0x1e')](handleError(_0x4de770,null));};exports['voiceQueuesChannelHangup']=function(_0x23eb50,_0x13b6d4){return respondWithRpcPromise(_0xaa41('0x29'),_['merge'](_0x23eb50[_0xaa41('0x1a')],_0x23eb50['params']))[_0xaa41('0xa')](respondWithResult(_0x13b6d4,null))[_0xaa41('0x1e')](handleError(_0x13b6d4,null));};exports[_0xaa41('0x2a')]=function(_0x49b77a,_0x526377){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xaa41('0x1c')](_0x49b77a[_0xaa41('0x1a')],_0x49b77a[_0xaa41('0x1d')]))[_0xaa41('0xa')](respondWithResult(_0x526377,null))['catch'](handleError(_0x526377,null));};exports['outbound']=function(_0x267999,_0x5673c){return respondWithRpcPromise(_0xaa41('0x2b'),_0x267999[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x5673c,null))[_0xaa41('0x1e')](handleError(_0x5673c,null));};exports[_0xaa41('0x2c')]=function(_0x5e9879,_0x3adc28){return respondWithRpcPromise(_0xaa41('0x2d'),_0x5e9879[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x3adc28,null))['catch'](handleError(_0x3adc28,null));};exports['agents']=function(_0x42b759,_0x275fa3){var _0x5eae08;return respondWithRpcPromise(_0xaa41('0x2e'),_0x42b759['query'])[_0xaa41('0xa')](function(_0x25f2df){_0x5eae08=_0x25f2df;return respondWithRpcPromise(_0xaa41('0x2e'),_0x42b759[_0xaa41('0x1a')],routingClient);})[_0xaa41('0xa')](function(_0x12ba1a){return _[_0xaa41('0x1c')]({},_0x12ba1a,_0x5eae08);})[_0xaa41('0xa')](respondWithResult(_0x275fa3,null))['catch'](handleError(_0x275fa3,null));};exports[_0xaa41('0x2f')]=function(_0x2abf39,_0x35c685){if(_0x2abf39[_0xaa41('0x24')]&&_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')]&&_0x2abf39['user']&&_0x2abf39['user'][_0xaa41('0x13')]){for(var _0x4f9086 in _0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')]){if(_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0xaa41('0x31')](_0x4f9086)){db[_0xaa41('0x32')][_0xaa41('0x33')]({'where':{'channel':_0x4f9086,'membername':_0x2abf39['user'][_0xaa41('0x13')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x2abf39['body'][_0xaa41('0x30')][_0x4f9086]&&_0x2abf39['body']['interaction'][_0x4f9086]['length']?{'$notIn':_0x2abf39[_0xaa41('0x24')]['interaction'][_0x4f9086]}:{'$ne':null}}})[_0xaa41('0xa')](function(_0x198716){var _0x4a6882=moment()['format'](_0xaa41('0x34'));for(var _0x1b7b97=0x0,_0x1bb973=_0x198716[_0xaa41('0x35')];_0x1b7b97<_0x1bb973;_0x1b7b97+=0x1){_0x198716[_0x1b7b97][_0xaa41('0x36')]({'exitAt':_0x4a6882});}});for(var _0x337993=0x0;_0x337993<_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0x4f9086][_0xaa41('0x35')];_0x337993+=0x1){db['MemberReport'][_0xaa41('0x37')]({'where':{'channel':_0x4f9086,'membername':_0x2abf39[_0xaa41('0x38')][_0xaa41('0x13')],'type':_0xaa41('0x39'),'uniqueid':_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0x4f9086][_0x337993],'exitAt':null},'defaults':{'channel':_0x4f9086,'membername':_0x2abf39['user'][_0xaa41('0x13')],'interface':_[_0xaa41('0x15')](_0x2abf39[_0xaa41('0x38')][_0xaa41('0x3a')])?util['format'](_0xaa41('0x3b'),_0x2abf39['user']['name']):_0x2abf39[_0xaa41('0x38')][_0xaa41('0x3a')],'type':_0xaa41('0x39'),'enterAt':moment()['format'](_0xaa41('0x34')),'role':_0xaa41('0x3c'),'internal':_0x2abf39[_0xaa41('0x38')]['internal'],'uniqueid':_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0x4f9086][_0x337993]}});}}}}return respondWithRpcPromise(_0xaa41('0x3d'),{'id':_0x2abf39[_0xaa41('0x1d')]['id'],'capacity':_0x2abf39[_0xaa41('0x24')][_0xaa41('0x3e')]},routingClient)[_0xaa41('0xa')](respondWithResult(_0x35c685,null))[_0xaa41('0x1e')](handleError(_0x35c685,null));};exports['telephones']=function(_0x9f0a81,_0x5bef5f){return respondWithRpcPromise('Telephones',_0x9f0a81[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x5bef5f,null))[_0xaa41('0x1e')](handleError(_0x5bef5f,null));};exports[_0xaa41('0x3f')]=function(_0x14aab0,_0x288db3){return respondWithRpcPromise(_0xaa41('0x40'),_0x14aab0[_0xaa41('0x1a')])['then'](respondWithResult(_0x288db3,null))[_0xaa41('0x1e')](handleError(_0x288db3,null));};exports[_0xaa41('0x41')]=function(_0x1d518f,_0x4f9e92){return respondWithRpcPromise(_0xaa41('0x42'),_0x1d518f[_0xaa41('0x1a')])['then'](respondWithResult(_0x4f9e92,null))[_0xaa41('0x1e')](handleError(_0x4f9e92,null));};exports[_0xaa41('0x43')]=function(_0x283b3b,_0x4e5a2e){return respondWithRpcPromise(_0xaa41('0x44'),_0x283b3b[_0xaa41('0x1a')],routingClient)['then'](respondWithResult(_0x4e5a2e,null))['catch'](handleError(_0x4e5a2e,null));};exports[_0xaa41('0x45')]=function(_0x3cd14f,_0x3a29d2){return respondWithRpcPromise('ChatQueues',_0x3cd14f[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](findById(_0x3cd14f[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x3a29d2,null))[_0xaa41('0x1e')](handleError(_0x3a29d2,null));};exports['mailQueues']=function(_0x2ae70c,_0x57cb70){return respondWithRpcPromise('MailQueues',_0x2ae70c[_0xaa41('0x1a')],routingClient)['then'](respondWithResult(_0x57cb70,null))[_0xaa41('0x1e')](handleError(_0x57cb70,null));};exports[_0xaa41('0x46')]=function(_0x169ddf,_0x5e83e1){return respondWithRpcPromise(_0xaa41('0x47'),_0x169ddf[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](findById(_0x169ddf[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x5e83e1,null))[_0xaa41('0x1e')](handleError(_0x5e83e1,null));};exports[_0xaa41('0x48')]=function(_0x337059,_0x3f91f3){return respondWithRpcPromise('MailAccounts',_0x337059[_0xaa41('0x1a')],mailClient)[_0xaa41('0xa')](respondWithResult(_0x3f91f3,null))[_0xaa41('0x1e')](handleError(_0x3f91f3,null));};exports['openchannelQueues']=function(_0x3fe47a,_0x2caf5c){return respondWithRpcPromise(_0xaa41('0x49'),_0x3fe47a[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x2caf5c,null))[_0xaa41('0x1e')](handleError(_0x2caf5c,null));};exports[_0xaa41('0x4a')]=function(_0x5ea056,_0x55a85c){return respondWithRpcPromise('OpenchannelQueues',_0x5ea056['query'],routingClient)['then'](findById(_0x5ea056['params']['id']))[_0xaa41('0xa')](respondWithResult(_0x55a85c,null))['catch'](handleError(_0x55a85c,null));};exports['smsQueues']=function(_0x24c6f3,_0x40a524){return respondWithRpcPromise(_0xaa41('0x4b'),_0x24c6f3[_0xaa41('0x1a')],routingClient)['then'](respondWithResult(_0x40a524,null))[_0xaa41('0x1e')](handleError(_0x40a524,null));};exports[_0xaa41('0x4c')]=function(_0x1ddb6c,_0x46822f){return respondWithRpcPromise(_0xaa41('0x4b'),_0x1ddb6c[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](findById(_0x1ddb6c[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x46822f,null))['catch'](handleError(_0x46822f,null));};exports[_0xaa41('0x4d')]=function(_0x2d2af8,_0x50170f){return respondWithRpcPromise('WhatsappQueues',_0x2d2af8['query'],routingClient)[_0xaa41('0xa')](respondWithResult(_0x50170f,null))['catch'](handleError(_0x50170f,null));};exports[_0xaa41('0x4e')]=function(_0x5c8028,_0x5423b6){return respondWithRpcPromise(_0xaa41('0x4f'),_0x5c8028['query'],routingClient)[_0xaa41('0xa')](findById(_0x5c8028[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x5423b6,null))[_0xaa41('0x1e')](handleError(_0x5423b6,null));};exports['faxQueues']=function(_0x5be61b,_0x339db3){return respondWithRpcPromise(_0xaa41('0x50'),_0x5be61b['query'],routingClient)['then'](respondWithResult(_0x339db3,null))[_0xaa41('0x1e')](handleError(_0x339db3,null));};exports[_0xaa41('0x51')]=function(_0x304694,_0xbeafb5){return respondWithRpcPromise(_0xaa41('0x50'),_0x304694['query'],routingClient)[_0xaa41('0xa')](findById(_0x304694['params']['id']))['then'](respondWithResult(_0xbeafb5,null))['catch'](handleError(_0xbeafb5,null));};exports[_0xaa41('0x52')]=function(_0x19ec63,_0x436362){return respondWithRpcPromise('FaxAccounts',_0x19ec63[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x436362,null))[_0xaa41('0x1e')](handleError(_0x436362,null));};exports[_0xaa41('0x53')]=function(_0x457515,_0x3ffbf8){return respondWithRpcPromise(_0xaa41('0x54'),_0x457515['query'],routingClient)[_0xaa41('0xa')](respondWithResult(_0x3ffbf8,null))[_0xaa41('0x1e')](handleError(_0x3ffbf8,null));};exports[_0xaa41('0x55')]=function(_0x175ca9,_0x51ff61){return respondWithRpcPromise(_0xaa41('0x56'),_0x175ca9['query'],routingClient)[_0xaa41('0xa')](respondWithResult(_0x51ff61,null))[_0xaa41('0x1e')](handleError(_0x51ff61,null));};exports[_0xaa41('0x57')]=function(_0x143ef0,_0x491cad){return respondWithRpcPromise(_0xaa41('0x58'),_0x143ef0[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x491cad,null))[_0xaa41('0x1e')](handleError(_0x491cad,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x140d78,_0x50197b){return respondWithRpcPromise(_0xaa41('0x58'),_0x140d78[_0xaa41('0x1a')],routingClient)['then'](function(_0x1ac05e){if(_0x140d78[_0xaa41('0x1a')][_0xaa41('0x59')]!==undefined){var _0x582d79=_(_0x1ac05e[_0xaa41('0x16')])[_0xaa41('0x5a')]([_0x140d78[_0xaa41('0x1a')][_0xaa41('0x59')],_0x140d78[_0xaa41('0x1d')]['id']])[_0xaa41('0x5b')](_0xaa41('0x5c'))['uniq']()[_0xaa41('0x5d')]();return _0x1ac05e[_0xaa41('0x16')][_0xaa41('0x5a')](function(_0x530982){return _0x582d79['indexOf'](_0x530982[_0xaa41('0x5c')])>-0x1;});}else{return _0x1ac05e[_0xaa41('0x16')]['filter'](function(_0x1ce957){return _0x1ce957[_0xaa41('0x5c')]===parseInt(_0x140d78['params']['id']);});}})[_0xaa41('0xa')](respondWithResult(_0x50197b,null))[_0xaa41('0x1e')](handleError(_0x50197b,null));};exports[_0xaa41('0x5e')]=function(_0xe8731,_0x46feb2){return respondWithRpcPromise(_0xaa41('0x5f'),_0xe8731[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x46feb2,null))['catch'](handleError(_0x46feb2,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x397526,_0x481db9){return respondWithRpcPromise(_0xaa41('0x60'),_0x397526[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x481db9,null))['catch'](handleError(_0x481db9,null));};exports[_0xaa41('0x61')]=function(_0x404c38,_0x2d7493){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x404c38[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x2d7493,null))['catch'](handleError(_0x2d7493,null));};exports[_0xaa41('0x62')]=function(_0x4de25c){return function(_0x53faf4,_0x3f6a2b){var _0x34d0e4,_0x5eded3;var _0x5a8cb0=_[_0xaa41('0x63')](_0x4de25c);var _0x1726ec=_0x4de25c===_0xaa41('0x64')?_0xaa41('0x65'):'Account';return db[_0x5a8cb0+_0xaa41('0x66')][_0xaa41('0x67')]({'raw':!![],'where':{'id':_0x53faf4[_0xaa41('0x1d')]['id']}})['then'](function(_0x1ad3aa){if(_[_0xaa41('0x15')](_0x1ad3aa)){throw new Error(_0x5a8cb0+_0xaa41('0x68'));}_0x34d0e4=_0x1ad3aa;return db[_0x5a8cb0+'Message'][_0xaa41('0x67')]({'where':{'id':_0x53faf4['body']['messageId']},'include':[{'model':db[_0x5a8cb0+_0xaa41('0x69')],'as':_0xaa41('0x69')},{'model':db[_0x5a8cb0+_0x1726ec],'as':'Account'}]});})[_0xaa41('0xa')](function(_0x9e8ebb){if(_[_0xaa41('0x15')](_0x9e8ebb)){throw new Error(_0x5a8cb0+'\x20Message\x20not\x20found');}_0x5eded3=_0x9e8ebb;return _0x9e8ebb[_0xaa41('0x6a')]({'read':0x0,'readAt':null,'UserId':null});})[_0xaa41('0xa')](function(){var _0x1a2deb={'uniqueid':_0x4de25c+'.'+_0x5eded3['id']+'.'+_0x5eded3[_0xaa41('0x69')]['id'],'FromUserId':_0x53faf4[_0xaa41('0x38')]['id'],'type':'queue'};_0x1a2deb[_0x5a8cb0+_0xaa41('0x6b')]=_0x5eded3['id'];_0x1a2deb[_0x5a8cb0+'InteractionId']=_0x5eded3[_0xaa41('0x69')]['id'];_0x1a2deb[_0xaa41('0x6c')+_0x5a8cb0+_0x1726ec+'Id']=_0x5eded3[_0xaa41('0x6d')]['id'];_0x1a2deb['To'+_0x5a8cb0+_0xaa41('0x6e')]=_0x34d0e4['id'];return db[_0x5a8cb0+_0xaa41('0x6f')][_0xaa41('0x70')](_0x1a2deb);})[_0xaa41('0xa')](function(){return respondWithRpcPromise(_0xaa41('0x71'),{'channel':_0x4de25c,'interaction':_0x5eded3[_0xaa41('0x69')],'message':_0x5eded3,'account':_0x5eded3[_0xaa41('0x6d')],'applications':[{'id':0x0,'priority':0x1,'app':_0xaa41('0x72'),'appdata':_0x34d0e4['name']+','+(_0x5eded3[_0xaa41('0x6d')][_0xaa41('0x73')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xaa41('0xa')](respondWithResult(_0x3f6a2b,null))['catch'](handleError(_0x3f6a2b,null));};};exports[_0xaa41('0x74')]=function(_0xb44b1f,_0x472eb3){var _0x38d759,_0x2dc55e;if(_[_0xaa41('0x15')](_0xb44b1f[_0xaa41('0x24')]['channel'])){throw new Error(_0xaa41('0x75'));}var _0x1d50db=_0xb44b1f[_0xaa41('0x24')][_0xaa41('0x76')];var _0x585ce7=_[_0xaa41('0x63')](_0x1d50db);var _0x5c9beb=_0x1d50db===_0xaa41('0x64')?_0xaa41('0x65'):_0xaa41('0x6d');return db[_0xaa41('0x77')][_0xaa41('0x67')]({'raw':!![],'where':{'id':_0xb44b1f['params']['id'],'role':_0xaa41('0x3c')}})[_0xaa41('0xa')](function(_0x5819ac){if(_[_0xaa41('0x15')](_0x5819ac)){throw new Error(_0xaa41('0x78'));}_0x38d759=_0x5819ac;return db[_0x585ce7+_0xaa41('0x79')][_0xaa41('0x67')]({'where':{'id':_0xb44b1f[_0xaa41('0x24')][_0xaa41('0x7a')]},'include':[{'model':db[_0x585ce7+_0xaa41('0x69')],'as':_0xaa41('0x69')},{'model':db[_0x585ce7+_0x5c9beb],'as':'Account'}]});})[_0xaa41('0xa')](function(_0x39d3cc){if(_[_0xaa41('0x15')](_0x39d3cc)){throw new Error(_0x585ce7+_0xaa41('0x7b'));}_0x2dc55e=_0x39d3cc;return _0x39d3cc[_0xaa41('0x6a')]({'read':0x0,'readAt':null,'UserId':null});})[_0xaa41('0xa')](function(){var _0x5489be={'uniqueid':_0x1d50db+'.'+_0x2dc55e['id']+'.'+_0x2dc55e['Interaction']['id'],'FromUserId':_0xb44b1f['user']['id'],'type':_0xaa41('0x72'),'ToUserId':_0x38d759['id']};_0x5489be[_0x585ce7+_0xaa41('0x6b')]=_0x2dc55e['id'];_0x5489be[_0x585ce7+'InteractionId']=_0x2dc55e[_0xaa41('0x69')]['id'];_0x5489be[_0xaa41('0x6c')+_0x585ce7+_0x5c9beb+'Id']=_0x2dc55e['Account']['id'];return db[_0x585ce7+_0xaa41('0x6f')][_0xaa41('0x70')](_0x5489be);})[_0xaa41('0xa')](function(){return respondWithRpcPromise(_0xaa41('0x71'),{'channel':_0x1d50db,'interaction':_0x2dc55e['Interaction'],'message':_0x2dc55e,'account':_0x2dc55e[_0xaa41('0x6d')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x38d759[_0xaa41('0x13')]+','+(_0x2dc55e[_0xaa41('0x6d')][_0xaa41('0x7c')]||0x12c),'interval':_0xaa41('0x7d')}]},routingClient);})[_0xaa41('0xa')](respondWithResult(_0x472eb3,null))[_0xaa41('0x1e')](handleError(_0x472eb3,null));};
\ No newline at end of file
+var _0x5fd1=['findOrCreate','SIP/%s','interface','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','MailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','faxQueues','showFaxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','InteractionId','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','MessageId','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','jayson/promise','client','http','then','error','message','result','catch','status','stack','name','send','isNil','find','rows','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','params','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','Outbound','OutboundChannels','agents','Agents','agentCapacity','interaction','user','MemberReport','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes'];(function(_0x5a0f53,_0x3cf8a4){var _0x262793=function(_0x7d6caa){while(--_0x7d6caa){_0x5a0f53['push'](_0x5a0f53['shift']());}};_0x262793(++_0x3cf8a4);}(_0x5fd1,0x155));var _0x15fd=function(_0x17d686,_0x3c0822){_0x17d686=_0x17d686-0x0;var _0x33c87c=_0x5fd1[_0x17d686];return _0x33c87c;};'use strict';var BPromise=require(_0x15fd('0x0'));var moment=require('moment');var _=require(_0x15fd('0x1'));var util=require(_0x15fd('0x2'));var db=require(_0x15fd('0x3'))['db'];var logger=require('../../config/logger')('api');var jayson=require(_0x15fd('0x4'));var amiClient=jayson[_0x15fd('0x5')][_0x15fd('0x6')]({'port':0x232a});var mailClient=jayson['client'][_0x15fd('0x6')]({'port':0x232b});var routingClient=jayson[_0x15fd('0x5')][_0x15fd('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x2e88bf,_0x225728,_0x534e63){return new BPromise(function(_0x210e90,_0x1ee117){var _0x19806f=_0x534e63?_0x534e63:amiClient;return _0x19806f['request'](_0x2e88bf,_0x225728)[_0x15fd('0x7')](function(_0x5c9c63){if(_0x5c9c63[_0x15fd('0x8')]){if(_0x5c9c63[_0x15fd('0x8')]['code']===0x1f4){return _0x1ee117(_0x5c9c63['error']['message']);}return _0x210e90(_0x5c9c63[_0x15fd('0x8')][_0x15fd('0x9')]);}else{_0x210e90(_0x5c9c63[_0x15fd('0xa')]);}})[_0x15fd('0xb')](function(_0x311138){_0x1ee117(_0x311138);});});}function respondWithResult(_0x2e18ec,_0x346ab1){_0x346ab1=_0x346ab1||0xc8;return function(_0x2660db){if(_0x2660db){return _0x2e18ec[_0x15fd('0xc')](_0x346ab1)['json'](_0x2660db);}return _0x2e18ec['sendStatus'](0x194);};}function handleError(_0x5784a3,_0x3fda60){_0x3fda60=_0x3fda60||0x1f4;return function(_0x135a15){logger[_0x15fd('0x8')](_0x135a15[_0x15fd('0xd')]);if(_0x135a15[_0x15fd('0xe')]){delete _0x135a15[_0x15fd('0xe')];}_0x5784a3[_0x15fd('0xc')](_0x3fda60)[_0x15fd('0xf')](_0x135a15);};}function findById(_0x5aae13){return function(_0x4c7080){if(!_[_0x15fd('0x10')](_0x5aae13)&&!_['isNil'](_0x4c7080)&&!_[_0x15fd('0x10')](_0x4c7080['rows'])){return _[_0x15fd('0x11')](_0x4c7080[_0x15fd('0x12')],function(_0x855bae){return _0x855bae['id']==_0x5aae13;});}return null;};}exports['voiceChannels']=function(_0x367c36,_0x2ad0de){return respondWithRpcPromise(_0x15fd('0x13'),_0x367c36[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x2ad0de,null))[_0x15fd('0xb')](handleError(_0x2ad0de,null));};exports[_0x15fd('0x15')]=function(_0x2f46f1,_0x1b8b9f){return respondWithRpcPromise(_0x15fd('0x16'),_[_0x15fd('0x17')](_0x2f46f1['query'],_0x2f46f1['params']))[_0x15fd('0x7')](respondWithResult(_0x1b8b9f,null))[_0x15fd('0xb')](handleError(_0x1b8b9f,null));};exports[_0x15fd('0x18')]=function(_0x118a2b,_0x24bdaf){return respondWithRpcPromise(_0x15fd('0x19'),_[_0x15fd('0x17')](_0x118a2b['query'],_0x118a2b[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x24bdaf,null))[_0x15fd('0xb')](handleError(_0x24bdaf,null));};exports['voiceQueues']=function(_0x27528f,_0x49062f){return respondWithRpcPromise(_0x15fd('0x1b'),_0x27528f[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x49062f,null))['catch'](handleError(_0x49062f,null));};exports[_0x15fd('0x1c')]=function(_0x1cbf2c,_0x24c541){return respondWithRpcPromise('VoiceQueues',_0x1cbf2c[_0x15fd('0x14')])['then'](findById(_0x1cbf2c[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x24c541,null))[_0x15fd('0xb')](handleError(_0x24c541,null));};exports[_0x15fd('0x1d')]=function(_0x233ed3,_0x6c213b){return respondWithRpcPromise(_0x15fd('0x1e'),_[_0x15fd('0x17')](_0x233ed3[_0x15fd('0x1f')],_0x233ed3[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x6c213b,null))['catch'](handleError(_0x6c213b,null));};exports[_0x15fd('0x20')]=function(_0x2fe61e,_0x50381a){return respondWithRpcPromise(_0x15fd('0x21'),_[_0x15fd('0x17')](_0x2fe61e['query'],_0x2fe61e[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x50381a,null))['catch'](handleError(_0x50381a,null));};exports[_0x15fd('0x22')]=function(_0x199647,_0x582af2){return respondWithRpcPromise(_0x15fd('0x23'),_0x199647[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x582af2,null))['catch'](handleError(_0x582af2,null));};exports[_0x15fd('0x24')]=function(_0x7ac52b,_0x4228ea){return respondWithRpcPromise(_0x15fd('0x25'),_['merge'](_0x7ac52b[_0x15fd('0x14')],_0x7ac52b[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x4228ea,null))[_0x15fd('0xb')](handleError(_0x4228ea,null));};exports[_0x15fd('0x26')]=function(_0x296a0c,_0x4d9ff5){return respondWithRpcPromise(_0x15fd('0x27'),_[_0x15fd('0x17')](_0x296a0c['query'],_0x296a0c[_0x15fd('0x1a')]))[_0x15fd('0x7')](respondWithResult(_0x4d9ff5,null))[_0x15fd('0xb')](handleError(_0x4d9ff5,null));};exports['voiceQueuesChannelRedirect']=function(_0x25d34e,_0x309851){return respondWithRpcPromise(_0x15fd('0x28'),_[_0x15fd('0x17')](_0x25d34e[_0x15fd('0x14')],_0x25d34e[_0x15fd('0x1a')]))['then'](respondWithResult(_0x309851,null))['catch'](handleError(_0x309851,null));};exports['outbound']=function(_0x340d17,_0x289710){return respondWithRpcPromise(_0x15fd('0x29'),_0x340d17['query'])['then'](respondWithResult(_0x289710,null))[_0x15fd('0xb')](handleError(_0x289710,null));};exports['outboundChannels']=function(_0x4f1c84,_0x4c1aa8){return respondWithRpcPromise(_0x15fd('0x2a'),_0x4f1c84[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x4c1aa8,null))['catch'](handleError(_0x4c1aa8,null));};exports[_0x15fd('0x2b')]=function(_0x3a10e2,_0xd85d3e){var _0x5beb6e;return respondWithRpcPromise(_0x15fd('0x2c'),_0x3a10e2[_0x15fd('0x14')])[_0x15fd('0x7')](function(_0xe18038){_0x5beb6e=_0xe18038;return respondWithRpcPromise(_0x15fd('0x2c'),_0x3a10e2[_0x15fd('0x14')],routingClient);})[_0x15fd('0x7')](function(_0x12a894){return _[_0x15fd('0x17')]({},_0x12a894,_0x5beb6e);})['then'](respondWithResult(_0xd85d3e,null))[_0x15fd('0xb')](handleError(_0xd85d3e,null));};exports[_0x15fd('0x2d')]=function(_0x180433,_0x304736){if(_0x180433[_0x15fd('0x1f')]&&_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')]&&_0x180433[_0x15fd('0x2f')]&&_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')]){for(var _0x2eb6b6 in _0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')]){if(_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')]['hasOwnProperty'](_0x2eb6b6)){db[_0x15fd('0x30')][_0x15fd('0x31')]({'where':{'channel':_0x2eb6b6,'membername':_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')],'type':_0x15fd('0x32'),'exitAt':null,'uniqueid':_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')][_0x2eb6b6]&&_0x180433[_0x15fd('0x1f')]['interaction'][_0x2eb6b6]['length']?{'$notIn':_0x180433[_0x15fd('0x1f')]['interaction'][_0x2eb6b6]}:{'$ne':null}}})[_0x15fd('0x7')](function(_0x2741d4){var _0x5e4b62=moment()[_0x15fd('0x33')](_0x15fd('0x34'));for(var _0x131eb4=0x0,_0x2611ba=_0x2741d4[_0x15fd('0x35')];_0x131eb4<_0x2611ba;_0x131eb4+=0x1){_0x2741d4[_0x131eb4][_0x15fd('0x36')]({'exitAt':_0x5e4b62});}});for(var _0x494f83=0x0;_0x494f83<_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')][_0x2eb6b6][_0x15fd('0x35')];_0x494f83+=0x1){db[_0x15fd('0x30')][_0x15fd('0x37')]({'where':{'channel':_0x2eb6b6,'membername':_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')],'type':_0x15fd('0x32'),'uniqueid':_0x180433[_0x15fd('0x1f')][_0x15fd('0x2e')][_0x2eb6b6][_0x494f83],'exitAt':null},'defaults':{'channel':_0x2eb6b6,'membername':_0x180433[_0x15fd('0x2f')][_0x15fd('0xe')],'interface':_['isNil'](_0x180433[_0x15fd('0x2f')]['interface'])?util[_0x15fd('0x33')](_0x15fd('0x38'),_0x180433[_0x15fd('0x2f')]['name']):_0x180433[_0x15fd('0x2f')][_0x15fd('0x39')],'type':_0x15fd('0x32'),'enterAt':moment()[_0x15fd('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x15fd('0x3a'),'internal':_0x180433[_0x15fd('0x2f')][_0x15fd('0x3b')],'uniqueid':_0x180433[_0x15fd('0x1f')]['interaction'][_0x2eb6b6][_0x494f83]}});}}}}return respondWithRpcPromise(_0x15fd('0x3c'),{'id':_0x180433[_0x15fd('0x1a')]['id'],'capacity':_0x180433['body']['capacity']},routingClient)['then'](respondWithResult(_0x304736,null))[_0x15fd('0xb')](handleError(_0x304736,null));};exports[_0x15fd('0x3d')]=function(_0x366c49,_0x10cf04){return respondWithRpcPromise(_0x15fd('0x3e'),_0x366c49[_0x15fd('0x14')])['then'](respondWithResult(_0x10cf04,null))[_0x15fd('0xb')](handleError(_0x10cf04,null));};exports[_0x15fd('0x3f')]=function(_0xbb16ef,_0x516b25){return respondWithRpcPromise(_0x15fd('0x40'),_0xbb16ef['query'])[_0x15fd('0x7')](respondWithResult(_0x516b25,null))[_0x15fd('0xb')](handleError(_0x516b25,null));};exports[_0x15fd('0x41')]=function(_0x42d4de,_0x332df7){return respondWithRpcPromise(_0x15fd('0x42'),_0x42d4de[_0x15fd('0x14')])[_0x15fd('0x7')](respondWithResult(_0x332df7,null))[_0x15fd('0xb')](handleError(_0x332df7,null));};exports[_0x15fd('0x43')]=function(_0x1491a3,_0x36eaf7){return respondWithRpcPromise(_0x15fd('0x44'),_0x1491a3['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x36eaf7,null))['catch'](handleError(_0x36eaf7,null));};exports[_0x15fd('0x45')]=function(_0x509aef,_0x25bdea){return respondWithRpcPromise(_0x15fd('0x44'),_0x509aef[_0x15fd('0x14')],routingClient)['then'](findById(_0x509aef['params']['id']))[_0x15fd('0x7')](respondWithResult(_0x25bdea,null))[_0x15fd('0xb')](handleError(_0x25bdea,null));};exports[_0x15fd('0x46')]=function(_0x30ab06,_0x5d94b3){return respondWithRpcPromise(_0x15fd('0x47'),_0x30ab06[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x5d94b3,null))[_0x15fd('0xb')](handleError(_0x5d94b3,null));};exports[_0x15fd('0x48')]=function(_0x321fe7,_0x59b3b4){return respondWithRpcPromise(_0x15fd('0x47'),_0x321fe7[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x321fe7[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x59b3b4,null))[_0x15fd('0xb')](handleError(_0x59b3b4,null));};exports['mailAccounts']=function(_0x4f2a17,_0x149b20){return respondWithRpcPromise(_0x15fd('0x49'),_0x4f2a17['query'],mailClient)[_0x15fd('0x7')](respondWithResult(_0x149b20,null))[_0x15fd('0xb')](handleError(_0x149b20,null));};exports['openchannelQueues']=function(_0x285fd5,_0x4626ac){return respondWithRpcPromise(_0x15fd('0x4a'),_0x285fd5['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x4626ac,null))[_0x15fd('0xb')](handleError(_0x4626ac,null));};exports[_0x15fd('0x4b')]=function(_0x2db860,_0xa206b){return respondWithRpcPromise(_0x15fd('0x4a'),_0x2db860[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x2db860[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0xa206b,null))['catch'](handleError(_0xa206b,null));};exports[_0x15fd('0x4c')]=function(_0x3a26c8,_0x5b720b){return respondWithRpcPromise('SmsQueues',_0x3a26c8[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x5b720b,null))[_0x15fd('0xb')](handleError(_0x5b720b,null));};exports[_0x15fd('0x4d')]=function(_0x12fd6c,_0x1b6f59){return respondWithRpcPromise('SmsQueues',_0x12fd6c[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x12fd6c[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x1b6f59,null))[_0x15fd('0xb')](handleError(_0x1b6f59,null));};exports[_0x15fd('0x4e')]=function(_0xf27ab4,_0x1fe6cb){return respondWithRpcPromise(_0x15fd('0x4f'),_0xf27ab4[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x1fe6cb,null))['catch'](handleError(_0x1fe6cb,null));};exports['showWhatsappQueues']=function(_0x8a8198,_0x24ea9b){return respondWithRpcPromise(_0x15fd('0x4f'),_0x8a8198[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x8a8198[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x24ea9b,null))['catch'](handleError(_0x24ea9b,null));};exports[_0x15fd('0x50')]=function(_0x5de222,_0xc8931e){return respondWithRpcPromise('FaxQueues',_0x5de222[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0xc8931e,null))[_0x15fd('0xb')](handleError(_0xc8931e,null));};exports[_0x15fd('0x51')]=function(_0x4390bc,_0x3d40f3){return respondWithRpcPromise(_0x15fd('0x52'),_0x4390bc[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](findById(_0x4390bc[_0x15fd('0x1a')]['id']))[_0x15fd('0x7')](respondWithResult(_0x3d40f3,null))['catch'](handleError(_0x3d40f3,null));};exports['faxAccounts']=function(_0x1ca245,_0x239a06){return respondWithRpcPromise(_0x15fd('0x53'),_0x1ca245['query'])[_0x15fd('0x7')](respondWithResult(_0x239a06,null))[_0x15fd('0xb')](handleError(_0x239a06,null));};exports[_0x15fd('0x54')]=function(_0x56cf8c,_0x3bf85b){return respondWithRpcPromise(_0x15fd('0x55'),_0x56cf8c['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x3bf85b,null))['catch'](handleError(_0x3bf85b,null));};exports[_0x15fd('0x56')]=function(_0x40a8e9,_0x74f311){return respondWithRpcPromise(_0x15fd('0x57'),_0x40a8e9[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0x74f311,null))[_0x15fd('0xb')](handleError(_0x74f311,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x3c4ffa,_0x4a165f){return respondWithRpcPromise(_0x15fd('0x58'),_0x3c4ffa[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0x4a165f,null))[_0x15fd('0xb')](handleError(_0x4a165f,null));};exports[_0x15fd('0x59')]=function(_0x47f39a,_0x484cd1){return respondWithRpcPromise(_0x15fd('0x58'),_0x47f39a['query'],routingClient)[_0x15fd('0x7')](function(_0x2feba1){if(_0x47f39a[_0x15fd('0x14')][_0x15fd('0x5a')]!==undefined){var _0x2d1c93=_(_0x2feba1['rows'])[_0x15fd('0x5b')]([_0x47f39a[_0x15fd('0x14')]['type'],_0x47f39a[_0x15fd('0x1a')]['id']])[_0x15fd('0x5c')](_0x15fd('0x5d'))[_0x15fd('0x5e')]()[_0x15fd('0x5f')]();return _0x2feba1[_0x15fd('0x12')][_0x15fd('0x5b')](function(_0x39b777){return _0x2d1c93[_0x15fd('0x60')](_0x39b777[_0x15fd('0x5d')])>-0x1;});}else{return _0x2feba1[_0x15fd('0x12')][_0x15fd('0x5b')](function(_0x273311){return _0x273311[_0x15fd('0x5d')]===parseInt(_0x47f39a['params']['id']);});}})[_0x15fd('0x7')](respondWithResult(_0x484cd1,null))['catch'](handleError(_0x484cd1,null));};exports[_0x15fd('0x61')]=function(_0x43d0b0,_0x3bfa0b){return respondWithRpcPromise(_0x15fd('0x62'),_0x43d0b0['query'],routingClient)[_0x15fd('0x7')](respondWithResult(_0x3bfa0b,null))[_0x15fd('0xb')](handleError(_0x3bfa0b,null));};exports[_0x15fd('0x63')]=function(_0x873778,_0x4accfd){return respondWithRpcPromise(_0x15fd('0x64'),_0x873778[_0x15fd('0x14')],routingClient)['then'](respondWithResult(_0x4accfd,null))[_0x15fd('0xb')](handleError(_0x4accfd,null));};exports[_0x15fd('0x65')]=function(_0x128ee3,_0x57089a){return respondWithRpcPromise(_0x15fd('0x66'),_0x128ee3[_0x15fd('0x14')],routingClient)[_0x15fd('0x7')](respondWithResult(_0x57089a,null))[_0x15fd('0xb')](handleError(_0x57089a,null));};exports[_0x15fd('0x67')]=function(_0x2d24a2){return function(_0x4e36c0,_0x2b7737){var _0x15a645,_0x32a2a0;var _0x3bd3fb=_[_0x15fd('0x68')](_0x2d24a2);var _0x55e9dd=_0x2d24a2===_0x15fd('0x69')?_0x15fd('0x6a'):_0x15fd('0x6b');return db[_0x3bd3fb+_0x15fd('0x6c')][_0x15fd('0x6d')]({'raw':!![],'where':{'id':_0x4e36c0['params']['id']}})['then'](function(_0x3017c6){if(_[_0x15fd('0x10')](_0x3017c6)){throw new Error(_0x3bd3fb+_0x15fd('0x6e'));}_0x15a645=_0x3017c6;return db[_0x3bd3fb+_0x15fd('0x6f')][_0x15fd('0x6d')]({'where':{'id':_0x4e36c0[_0x15fd('0x1f')][_0x15fd('0x70')]},'include':[{'model':db[_0x3bd3fb+_0x15fd('0x71')],'as':_0x15fd('0x71')},{'model':db[_0x3bd3fb+_0x55e9dd],'as':'Account'}]});})[_0x15fd('0x7')](function(_0x23d547){if(_['isNil'](_0x23d547)){throw new Error(_0x3bd3fb+_0x15fd('0x72'));}_0x32a2a0=_0x23d547;return _0x23d547[_0x15fd('0x73')]({'read':0x0,'readAt':null,'UserId':null});})[_0x15fd('0x7')](function(){var _0x35ad47={'uniqueid':_0x2d24a2+'.'+_0x32a2a0['id']+'.'+_0x32a2a0['Interaction']['id'],'FromUserId':_0x4e36c0[_0x15fd('0x2f')]['id'],'type':_0x15fd('0x74')};_0x35ad47[_0x3bd3fb+'MessageId']=_0x32a2a0['id'];_0x35ad47[_0x3bd3fb+_0x15fd('0x75')]=_0x32a2a0[_0x15fd('0x71')]['id'];_0x35ad47[_0x15fd('0x76')+_0x3bd3fb+_0x55e9dd+'Id']=_0x32a2a0['Account']['id'];_0x35ad47['To'+_0x3bd3fb+_0x15fd('0x77')]=_0x15a645['id'];return db[_0x3bd3fb+_0x15fd('0x78')][_0x15fd('0x79')](_0x35ad47);})[_0x15fd('0x7')](function(){return respondWithRpcPromise(_0x15fd('0x7a'),{'channel':_0x2d24a2,'interaction':_0x32a2a0[_0x15fd('0x71')],'message':_0x32a2a0,'account':_0x32a2a0[_0x15fd('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':_0x15fd('0x74'),'appdata':_0x15a645['name']+','+(_0x32a2a0[_0x15fd('0x6b')][_0x15fd('0x7b')]||0x12c),'interval':_0x15fd('0x7c')}]},routingClient);})[_0x15fd('0x7')](respondWithResult(_0x2b7737,null))[_0x15fd('0xb')](handleError(_0x2b7737,null));};};exports[_0x15fd('0x7d')]=function(_0x3ebb13,_0x939bfd){var _0x3a4731,_0x264a98;if(_[_0x15fd('0x10')](_0x3ebb13[_0x15fd('0x1f')][_0x15fd('0x7e')])){throw new Error(_0x15fd('0x7f'));}var _0x4221df=_0x3ebb13[_0x15fd('0x1f')][_0x15fd('0x7e')];var _0x255dd5=_[_0x15fd('0x68')](_0x4221df);var _0x178dac=_0x4221df===_0x15fd('0x69')?_0x15fd('0x6a'):_0x15fd('0x6b');return db[_0x15fd('0x80')][_0x15fd('0x6d')]({'raw':!![],'where':{'id':_0x3ebb13[_0x15fd('0x1a')]['id'],'role':'agent'}})[_0x15fd('0x7')](function(_0x39e232){if(_['isNil'](_0x39e232)){throw new Error(_0x15fd('0x81'));}_0x3a4731=_0x39e232;return db[_0x255dd5+_0x15fd('0x6f')][_0x15fd('0x6d')]({'where':{'id':_0x3ebb13[_0x15fd('0x1f')]['messageId']},'include':[{'model':db[_0x255dd5+'Interaction'],'as':_0x15fd('0x71')},{'model':db[_0x255dd5+_0x178dac],'as':'Account'}]});})[_0x15fd('0x7')](function(_0x3e47fe){if(_[_0x15fd('0x10')](_0x3e47fe)){throw new Error(_0x255dd5+_0x15fd('0x72'));}_0x264a98=_0x3e47fe;return _0x3e47fe[_0x15fd('0x73')]({'read':0x0,'readAt':null,'UserId':null});})[_0x15fd('0x7')](function(){var _0x1bd38c={'uniqueid':_0x4221df+'.'+_0x264a98['id']+'.'+_0x264a98['Interaction']['id'],'FromUserId':_0x3ebb13['user']['id'],'type':_0x15fd('0x74'),'ToUserId':_0x3a4731['id']};_0x1bd38c[_0x255dd5+_0x15fd('0x82')]=_0x264a98['id'];_0x1bd38c[_0x255dd5+_0x15fd('0x75')]=_0x264a98[_0x15fd('0x71')]['id'];_0x1bd38c[_0x15fd('0x76')+_0x255dd5+_0x178dac+'Id']=_0x264a98[_0x15fd('0x6b')]['id'];return db[_0x255dd5+'TransferReport']['create'](_0x1bd38c);})[_0x15fd('0x7')](function(){return respondWithRpcPromise(_0x15fd('0x7a'),{'channel':_0x4221df,'interaction':_0x264a98[_0x15fd('0x71')],'message':_0x264a98,'account':_0x264a98[_0x15fd('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':_0x15fd('0x3a'),'appdata':_0x3a4731[_0x15fd('0xe')]+','+(_0x264a98['Account'][_0x15fd('0x83')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x15fd('0x7')](respondWithResult(_0x939bfd,null))[_0x15fd('0xb')](handleError(_0x939bfd,null));};
\ No newline at end of file
index 73f80e3..890825f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9010=['../../components/interaction/service','get','isAuthenticated','index','/:id','/:id/run','run','post','put','update','destroy','multer','path','connect-timeout','express'];(function(_0x398419,_0x38ae0d){var _0x147979=function(_0x5e7929){while(--_0x5e7929){_0x398419['push'](_0x398419['shift']());}};_0x147979(++_0x38ae0d);}(_0x9010,0xdd));var _0x0901=function(_0x262853,_0x32fbc0){_0x262853=_0x262853-0x0;var _0x43fbba=_0x9010[_0x262853];return _0x43fbba;};'use strict';var multer=require(_0x0901('0x0'));var util=require('util');var path=require(_0x0901('0x1'));var timeout=require(_0x0901('0x2'));var express=require(_0x0901('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0901('0x4'));var config=require('../../config/environment');var controller=require('./schedule.controller');router[_0x0901('0x5')]('/',auth[_0x0901('0x6')](),controller[_0x0901('0x7')]);router[_0x0901('0x5')](_0x0901('0x8'),auth[_0x0901('0x6')](),controller['show']);router[_0x0901('0x5')](_0x0901('0x9'),auth[_0x0901('0x6')](),controller[_0x0901('0xa')]);router[_0x0901('0xb')]('/',auth[_0x0901('0x6')](),controller['create']);router[_0x0901('0xc')](_0x0901('0x8'),auth[_0x0901('0x6')](),controller[_0x0901('0xd')]);router['delete'](_0x0901('0x8'),auth[_0x0901('0x6')](),controller[_0x0901('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x6e77=['put','/:id','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id/run','run','post','create'];(function(_0x857c02,_0x3cc0b3){var _0x5bbbab=function(_0x4c7733){while(--_0x4c7733){_0x857c02['push'](_0x857c02['shift']());}};_0x5bbbab(++_0x3cc0b3);}(_0x6e77,0xf8));var _0x76e7=function(_0x316e2b,_0x40efd7){_0x316e2b=_0x316e2b-0x0;var _0x2e4809=_0x6e77[_0x316e2b];return _0x2e4809;};'use strict';var multer=require(_0x76e7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x76e7('0x1'));var express=require(_0x76e7('0x2'));var router=express[_0x76e7('0x3')]();var fs_extra=require(_0x76e7('0x4'));var auth=require(_0x76e7('0x5'));var interaction=require(_0x76e7('0x6'));var config=require(_0x76e7('0x7'));var controller=require(_0x76e7('0x8'));router[_0x76e7('0x9')]('/',auth[_0x76e7('0xa')](),controller[_0x76e7('0xb')]);router[_0x76e7('0x9')]('/:id',auth[_0x76e7('0xa')](),controller['show']);router['get'](_0x76e7('0xc'),auth[_0x76e7('0xa')](),controller[_0x76e7('0xd')]);router[_0x76e7('0xe')]('/',auth[_0x76e7('0xa')](),controller[_0x76e7('0xf')]);router[_0x76e7('0x10')](_0x76e7('0x11'),auth[_0x76e7('0xa')](),controller[_0x76e7('0x12')]);router[_0x76e7('0x13')](_0x76e7('0x11'),auth['isAuthenticated'](),controller[_0x76e7('0x14')]);module[_0x76e7('0x15')]=router;
\ No newline at end of file
index fff9b04..ac0a16c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96bb=['quarters','months','weeks','days','minutes','pdf','xlsx','csv','custom','default','TEXT','sequelize','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','ENUM','years'];(function(_0x518090,_0x1c5099){var _0x3a1083=function(_0x2e33bf){while(--_0x2e33bf){_0x518090['push'](_0x518090['shift']());}};_0x3a1083(++_0x1c5099);}(_0x96bb,0x107));var _0xb96b=function(_0x52b62b,_0x1100cd){_0x52b62b=_0x52b62b-0x0;var _0x3d14d0=_0x96bb[_0x52b62b];return _0x3d14d0;};'use strict';var Sequelize=require(_0xb96b('0x0'));module['exports']={'name':{'type':Sequelize[_0xb96b('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xb96b('0x1')]},'active':{'type':Sequelize[_0xb96b('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xb96b('0x1')],'allowNull':![],'defaultValue':_0xb96b('0x3')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0xb96b('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xb96b('0x5')](_0xb96b('0x6'),_0xb96b('0x7'),_0xb96b('0x8'),_0xb96b('0x9'),_0xb96b('0xa'),'hours',_0xb96b('0xb')),'allowNull':![],'defaultValue':_0xb96b('0xa')},'output':{'type':Sequelize['ENUM']('csv',_0xb96b('0xc'),_0xb96b('0xd')),'allowNull':![],'defaultValue':_0xb96b('0xe')},'type':{'type':Sequelize['ENUM'](_0xb96b('0xf'),_0xb96b('0x10')),'allowNull':![],'defaultValue':_0xb96b('0xf')},'sendMail':{'type':Sequelize[_0xb96b('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xb96b('0x11')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0xb96b('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1623=['INTEGER','years','quarters','months','weeks','days','hours','minutes','ENUM','pdf','xlsx','csv','default','STRING','TEXT','BOOLEAN','sequelize','exports','0\x200\x20*\x20*\x20*','DATE'];(function(_0x12c27a,_0x22de6a){var _0x4f0608=function(_0x5be139){while(--_0x5be139){_0x12c27a['push'](_0x12c27a['shift']());}};_0x4f0608(++_0x22de6a);}(_0x1623,0x1a0));var _0x3162=function(_0x18c81b,_0x86e365){_0x18c81b=_0x18c81b-0x0;var _0x15ce74=_0x1623[_0x18c81b];return _0x15ce74;};'use strict';var Sequelize=require(_0x3162('0x0'));module[_0x3162('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3162('0x2')},'startAt':{'type':Sequelize[_0x3162('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0x3162('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x3162('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x3162('0x5'),_0x3162('0x6'),_0x3162('0x7'),_0x3162('0x8'),_0x3162('0x9'),_0x3162('0xa'),_0x3162('0xb')),'allowNull':![],'defaultValue':_0x3162('0x9')},'output':{'type':Sequelize[_0x3162('0xc')]('csv',_0x3162('0xd'),_0x3162('0xe')),'allowNull':![],'defaultValue':_0x3162('0xf')},'type':{'type':Sequelize[_0x3162('0xc')]('custom',_0x3162('0x10')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x3162('0x11')]},'cc':{'type':Sequelize[_0x3162('0x12')]},'bcc':{'type':Sequelize[_0x3162('0x12')]},'sendIfEmpty':{'type':Sequelize[_0x3162('0x13')],'defaultValue':!![]}};
\ No newline at end of file
index f9a9f75..54a67c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95cf=['offset','count','set','Content-Range','apply','reject','save','update','then','Scheduler','UserProfileResource','destroy','end','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','Schedule','includeAll','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','../../config/schedule','run','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','undefined','limit'];(function(_0xd305c2,_0x8b9215){var _0x597dc5=function(_0x1ba91d){while(--_0x1ba91d){_0xd305c2['push'](_0xd305c2['shift']());}};_0x597dc5(++_0x8b9215);}(_0x95cf,0x1dd));var _0xf95c=function(_0x5ba371,_0x2d13e1){_0x5ba371=_0x5ba371-0x0;var _0x4157d1=_0x95cf[_0x5ba371];return _0x4157d1;};'use strict';var emlformat=require(_0xf95c('0x0'));var rimraf=require(_0xf95c('0x1'));var zipdir=require(_0xf95c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf95c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xf95c('0x4'));var util=require(_0xf95c('0x5'));var path=require(_0xf95c('0x6'));var sox=require(_0xf95c('0x7'));var csv=require(_0xf95c('0x8'));var ejs=require(_0xf95c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf95c('0xa'));var squel=require(_0xf95c('0xb'));var crypto=require(_0xf95c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf95c('0x8'));var querystring=require(_0xf95c('0xd'));var Papa=require('papaparse');var Redis=require(_0xf95c('0xe'));var authService=require(_0xf95c('0xf'));var qs=require(_0xf95c('0x10'));var as=require(_0xf95c('0x11'));var hardwareService=require(_0xf95c('0x12'));var logger=require('../../config/logger')(_0xf95c('0x13'));var utils=require(_0xf95c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf95c('0x15'));var db=require(_0xf95c('0x16'))['db'];function respondWithStatusCode(_0x5b8531,_0x21318f){_0x21318f=_0x21318f||0xcc;return function(_0x27c841){if(_0x27c841){return _0x5b8531['sendStatus'](_0x21318f);}return _0x5b8531[_0xf95c('0x17')](_0x21318f)['end']();};}function respondWithResult(_0x5754e2,_0x287f23){_0x287f23=_0x287f23||0xc8;return function(_0x26d8f5){if(_0x26d8f5){return _0x5754e2['status'](_0x287f23)[_0xf95c('0x18')](_0x26d8f5);}};}function respondWithFilteredResult(_0x1e3fec,_0x42b83c){return function(_0x182bd4){if(_0x182bd4){var _0x15dd33=typeof _0x42b83c['offset']===_0xf95c('0x19')&&typeof _0x42b83c[_0xf95c('0x1a')]===_0xf95c('0x19');var _0x45b570=_0x182bd4['count'];var _0x54c441=_0x15dd33?0x0:_0x42b83c[_0xf95c('0x1b')];var _0x77c2bd=_0x15dd33?_0x182bd4[_0xf95c('0x1c')]:_0x42b83c[_0xf95c('0x1b')]+_0x42b83c[_0xf95c('0x1a')];var _0x4d2345;if(_0x77c2bd>=_0x45b570){_0x77c2bd=_0x45b570;_0x4d2345=0xc8;}else{_0x4d2345=0xce;}_0x1e3fec[_0xf95c('0x17')](_0x4d2345);return _0x1e3fec[_0xf95c('0x1d')](_0xf95c('0x1e'),_0x54c441+'-'+_0x77c2bd+'/'+_0x45b570)[_0xf95c('0x18')](_0x182bd4);}return null;};}function patchUpdates(_0x408dd5){return function(_0x4dd137){try{jsonpatch[_0xf95c('0x1f')](_0x4dd137,_0x408dd5,!![]);}catch(_0x259628){return BPromise[_0xf95c('0x20')](_0x259628);}return _0x4dd137[_0xf95c('0x21')]();};}function saveUpdates(_0x2dad63,_0x1cf3c0){return function(_0x318076){if(_0x318076){return _0x318076[_0xf95c('0x22')](_0x2dad63)[_0xf95c('0x23')](function(_0x538484){return _0x538484;});}return null;};}function removeEntity(_0x225781,_0x49e182){return function(_0x13119b){if(_0x13119b){return _0x13119b['destroy']()['then'](function(){var _0x3c5051=_0x13119b['get']({'plain':!![]});var _0x472760=_0xf95c('0x24');return db[_0xf95c('0x25')][_0xf95c('0x26')]({'where':{'type':_0x472760,'resourceId':_0x3c5051['id']}})[_0xf95c('0x23')](function(){return _0x13119b;});})[_0xf95c('0x23')](function(){_0x225781[_0xf95c('0x17')](0xcc)[_0xf95c('0x27')]();});}};}function handleEntityNotFound(_0x103bbf,_0x4e7eed){return function(_0x217dcc){if(!_0x217dcc){_0x103bbf[_0xf95c('0x28')](0x194);}return _0x217dcc;};}function handleError(_0xcc88ef,_0x41cb0d){_0x41cb0d=_0x41cb0d||0x1f4;return function(_0x210625){logger[_0xf95c('0x29')](_0x210625[_0xf95c('0x2a')]);if(_0x210625[_0xf95c('0x2b')]){delete _0x210625[_0xf95c('0x2b')];}_0xcc88ef[_0xf95c('0x17')](_0x41cb0d)['send'](_0x210625);};}exports[_0xf95c('0x2c')]=function(_0x433d08,_0x5e24cd){var _0x533cf0={},_0x305516={},_0x47fbd7={'count':0x0,'rows':[]};var _0x4bfb3e=_[_0xf95c('0x2d')](db['Schedule'][_0xf95c('0x2e')],function(_0x19c11e){return{'name':_0x19c11e[_0xf95c('0x2f')],'type':_0x19c11e[_0xf95c('0x30')][_0xf95c('0x31')]};});_0x305516[_0xf95c('0x32')]=_['map'](_0x4bfb3e,_0xf95c('0x2b'));_0x305516['query']=_[_0xf95c('0x33')](_0x433d08[_0xf95c('0x34')]);_0x305516['filters']=_[_0xf95c('0x35')](_0x305516[_0xf95c('0x32')],_0x305516[_0xf95c('0x34')]);_0x533cf0[_0xf95c('0x36')]=_['intersection'](_0x305516[_0xf95c('0x32')],qs[_0xf95c('0x37')](_0x433d08[_0xf95c('0x34')][_0xf95c('0x37')]));_0x533cf0['attributes']=_0x533cf0[_0xf95c('0x36')][_0xf95c('0x38')]?_0x533cf0['attributes']:_0x305516[_0xf95c('0x32')];if(!_0x433d08[_0xf95c('0x34')][_0xf95c('0x39')](_0xf95c('0x3a'))){_0x533cf0[_0xf95c('0x1a')]=qs[_0xf95c('0x1a')](_0x433d08['query'][_0xf95c('0x1a')]);_0x533cf0[_0xf95c('0x1b')]=qs['offset'](_0x433d08[_0xf95c('0x34')][_0xf95c('0x1b')]);}_0x533cf0[_0xf95c('0x3b')]=qs[_0xf95c('0x3c')](_0x433d08[_0xf95c('0x34')]['sort']);_0x533cf0[_0xf95c('0x3d')]=qs[_0xf95c('0x3e')](_[_0xf95c('0x3f')](_0x433d08[_0xf95c('0x34')],_0x305516[_0xf95c('0x3e')]),_0x4bfb3e);if(_0x433d08[_0xf95c('0x34')][_0xf95c('0x40')]){_0x533cf0[_0xf95c('0x3d')]=_['merge'](_0x533cf0['where'],{'$or':_['map'](_0x4bfb3e,function(_0xc0a895){if(_0xc0a895[_0xf95c('0x30')]!==_0xf95c('0x41')){var _0x3e4c39={};_0x3e4c39[_0xc0a895[_0xf95c('0x2b')]]={'$like':'%'+_0x433d08[_0xf95c('0x34')][_0xf95c('0x40')]+'%'};return _0x3e4c39;}})});}_0x533cf0=_['merge']({},_0x533cf0,_0x433d08['options']);var _0x4c94cb={'where':_0x533cf0[_0xf95c('0x3d')]};return db[_0xf95c('0x42')][_0xf95c('0x1c')](_0x4c94cb)[_0xf95c('0x23')](function(_0x461b3a){_0x47fbd7[_0xf95c('0x1c')]=_0x461b3a;if(_0x433d08[_0xf95c('0x34')][_0xf95c('0x43')]){_0x533cf0['include']=[{'all':!![]}];}return db[_0xf95c('0x42')]['findAll'](_0x533cf0);})[_0xf95c('0x23')](function(_0x2a2c3b){_0x47fbd7[_0xf95c('0x44')]=_0x2a2c3b;return _0x47fbd7;})[_0xf95c('0x23')](respondWithFilteredResult(_0x5e24cd,_0x533cf0))[_0xf95c('0x45')](handleError(_0x5e24cd,null));};exports[_0xf95c('0x46')]=function(_0x4b4e3e,_0x5badeb){var _0x501996={'raw':![],'where':{'id':_0x4b4e3e[_0xf95c('0x47')]['id']}},_0x4dcb94={};_0x4dcb94[_0xf95c('0x32')]=_[_0xf95c('0x33')](db[_0xf95c('0x42')][_0xf95c('0x2e')]);_0x4dcb94[_0xf95c('0x34')]=_[_0xf95c('0x33')](_0x4b4e3e[_0xf95c('0x34')]);_0x4dcb94[_0xf95c('0x3e')]=_[_0xf95c('0x35')](_0x4dcb94[_0xf95c('0x32')],_0x4dcb94[_0xf95c('0x34')]);_0x501996[_0xf95c('0x36')]=_['intersection'](_0x4dcb94[_0xf95c('0x32')],qs[_0xf95c('0x37')](_0x4b4e3e[_0xf95c('0x34')][_0xf95c('0x37')]));_0x501996['attributes']=_0x501996['attributes'][_0xf95c('0x38')]?_0x501996[_0xf95c('0x36')]:_0x4dcb94['model'];if(_0x4b4e3e[_0xf95c('0x34')][_0xf95c('0x43')]){_0x501996['include']=[{'all':!![]}];}_0x501996=_['merge']({},_0x501996,_0x4b4e3e['options']);return db[_0xf95c('0x42')][_0xf95c('0x48')](_0x501996)['then'](handleEntityNotFound(_0x5badeb,null))[_0xf95c('0x23')](respondWithResult(_0x5badeb,null))[_0xf95c('0x45')](handleError(_0x5badeb,null));};exports[_0xf95c('0x49')]=function(_0x4b2b96,_0x4f6d55){return db[_0xf95c('0x42')][_0xf95c('0x49')](_0x4b2b96[_0xf95c('0x4a')],{})[_0xf95c('0x23')](function(_0x53bb18){var _0x2c20e6=_0x4b2b96[_0xf95c('0x4b')][_0xf95c('0x4c')]({'plain':!![]});if(!_0x2c20e6)throw new Error(_0xf95c('0x4d'));if(_0x2c20e6[_0xf95c('0x4e')]===_0xf95c('0x4b')){var _0x1aa0ad=_0x53bb18[_0xf95c('0x4c')]({'plain':!![]});var _0x42e1ed='Scheduler';return db[_0xf95c('0x4f')]['find']({'where':{'name':_0x42e1ed,'userProfileId':_0x2c20e6[_0xf95c('0x50')]},'raw':!![]})[_0xf95c('0x23')](function(_0x439891){if(_0x439891&&_0x439891['autoAssociation']===0x0){return db[_0xf95c('0x25')][_0xf95c('0x49')]({'name':_0x1aa0ad[_0xf95c('0x2b')],'resourceId':_0x1aa0ad['id'],'type':_0x439891[_0xf95c('0x2b')],'sectionId':_0x439891['id']},{})[_0xf95c('0x23')](function(){return _0x53bb18;});}else{return _0x53bb18;}})[_0xf95c('0x45')](function(_0x4b77a0){logger[_0xf95c('0x29')](_0xf95c('0x51'),_0x4b77a0);throw _0x4b77a0;});}return _0x53bb18;})['then'](respondWithResult(_0x4f6d55,0xc9))[_0xf95c('0x45')](handleError(_0x4f6d55,null));};exports[_0xf95c('0x22')]=function(_0x578d6d,_0x42267a){if(_0x578d6d['body']['id']){delete _0x578d6d[_0xf95c('0x4a')]['id'];}return db[_0xf95c('0x42')][_0xf95c('0x48')]({'where':{'id':_0x578d6d['params']['id']}})[_0xf95c('0x23')](handleEntityNotFound(_0x42267a,null))[_0xf95c('0x23')](saveUpdates(_0x578d6d[_0xf95c('0x4a')],null))['then'](respondWithResult(_0x42267a,null))[_0xf95c('0x45')](handleError(_0x42267a,null));};exports[_0xf95c('0x26')]=function(_0x574710,_0x13801a){return db['Schedule'][_0xf95c('0x48')]({'where':{'id':_0x574710[_0xf95c('0x47')]['id']}})['then'](handleEntityNotFound(_0x13801a,null))[_0xf95c('0x23')](removeEntity(_0x13801a,null))[_0xf95c('0x45')](handleError(_0x13801a,null));};exports['run']=function(_0x930434,_0x3e18d4,_0x145fa8){var _0x507b88=require(_0xf95c('0x52'));return db['Schedule'][_0xf95c('0x48')]({'where':{'id':_0x930434['params']['id']},'raw':!![]})[_0xf95c('0x23')](handleEntityNotFound(_0x3e18d4,null))[_0xf95c('0x23')](function(){_0x507b88[_0xf95c('0x53')](_0x930434[_0xf95c('0x47')]['id']);})['then'](respondWithStatusCode(_0x3e18d4,null))[_0xf95c('0x45')](handleError(_0x3e18d4,null));};
\ No newline at end of file
+var _0x450e=['undefined','limit','count','set','Content-Range','apply','reject','destroy','then','get','Scheduler','UserProfileResource','error','stack','name','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','options','include','findAll','catch','show','keys','find','create','body','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','run','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x10be2c,_0x1133bd){var _0x21efd5=function(_0xab084c){while(--_0xab084c){_0x10be2c['push'](_0x10be2c['shift']());}};_0x21efd5(++_0x1133bd);}(_0x450e,0xd6));var _0xe450=function(_0x4861fc,_0x146b5a){_0x4861fc=_0x4861fc-0x0;var _0x30a240=_0x450e[_0x4861fc];return _0x30a240;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe450('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe450('0x1'));var rp=require('request-promise');var moment=require(_0xe450('0x2'));var BPromise=require(_0xe450('0x3'));var Mustache=require(_0xe450('0x4'));var util=require(_0xe450('0x5'));var path=require('path');var sox=require(_0xe450('0x6'));var csv=require(_0xe450('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe450('0x8'));var _=require(_0xe450('0x9'));var squel=require(_0xe450('0xa'));var crypto=require('crypto');var jsforce=require(_0xe450('0xb'));var deskjs=require(_0xe450('0xc'));var toCsv=require(_0xe450('0x7'));var querystring=require('querystring');var Papa=require(_0xe450('0xd'));var Redis=require(_0xe450('0xe'));var authService=require(_0xe450('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xe450('0x10'));var hardwareService=require(_0xe450('0x11'));var logger=require(_0xe450('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xe450('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xe450('0x14'))['db'];function respondWithStatusCode(_0x379f14,_0x22e8b7){_0x22e8b7=_0x22e8b7||0xcc;return function(_0x4fd349){if(_0x4fd349){return _0x379f14[_0xe450('0x15')](_0x22e8b7);}return _0x379f14[_0xe450('0x16')](_0x22e8b7)[_0xe450('0x17')]();};}function respondWithResult(_0x271abb,_0x5e7ec1){_0x5e7ec1=_0x5e7ec1||0xc8;return function(_0x4abb2a){if(_0x4abb2a){return _0x271abb[_0xe450('0x16')](_0x5e7ec1)[_0xe450('0x18')](_0x4abb2a);}};}function respondWithFilteredResult(_0x45ee60,_0x480cee){return function(_0x4da569){if(_0x4da569){var _0x82fd70=typeof _0x480cee[_0xe450('0x19')]===_0xe450('0x1a')&&typeof _0x480cee[_0xe450('0x1b')]===_0xe450('0x1a');var _0x2c24e8=_0x4da569[_0xe450('0x1c')];var _0x28ad87=_0x82fd70?0x0:_0x480cee['offset'];var _0x30f424=_0x82fd70?_0x4da569[_0xe450('0x1c')]:_0x480cee[_0xe450('0x19')]+_0x480cee[_0xe450('0x1b')];var _0x58a737;if(_0x30f424>=_0x2c24e8){_0x30f424=_0x2c24e8;_0x58a737=0xc8;}else{_0x58a737=0xce;}_0x45ee60['status'](_0x58a737);return _0x45ee60[_0xe450('0x1d')](_0xe450('0x1e'),_0x28ad87+'-'+_0x30f424+'/'+_0x2c24e8)[_0xe450('0x18')](_0x4da569);}return null;};}function patchUpdates(_0x56ff91){return function(_0x4ffaf6){try{jsonpatch[_0xe450('0x1f')](_0x4ffaf6,_0x56ff91,!![]);}catch(_0x565fee){return BPromise[_0xe450('0x20')](_0x565fee);}return _0x4ffaf6['save']();};}function saveUpdates(_0x19e401,_0x1e6c2f){return function(_0x222144){if(_0x222144){return _0x222144['update'](_0x19e401)['then'](function(_0x41e997){return _0x41e997;});}return null;};}function removeEntity(_0x21af01,_0x3e1245){return function(_0x504d66){if(_0x504d66){return _0x504d66[_0xe450('0x21')]()[_0xe450('0x22')](function(){var _0x2d451d=_0x504d66[_0xe450('0x23')]({'plain':!![]});var _0x730f7a=_0xe450('0x24');return db[_0xe450('0x25')][_0xe450('0x21')]({'where':{'type':_0x730f7a,'resourceId':_0x2d451d['id']}})['then'](function(){return _0x504d66;});})[_0xe450('0x22')](function(){_0x21af01[_0xe450('0x16')](0xcc)[_0xe450('0x17')]();});}};}function handleEntityNotFound(_0x53a374,_0x130dfd){return function(_0x3ea7e6){if(!_0x3ea7e6){_0x53a374[_0xe450('0x15')](0x194);}return _0x3ea7e6;};}function handleError(_0x22da5e,_0x94125a){_0x94125a=_0x94125a||0x1f4;return function(_0x4ca451){logger[_0xe450('0x26')](_0x4ca451[_0xe450('0x27')]);if(_0x4ca451[_0xe450('0x28')]){delete _0x4ca451[_0xe450('0x28')];}_0x22da5e[_0xe450('0x16')](_0x94125a)[_0xe450('0x29')](_0x4ca451);};}exports[_0xe450('0x2a')]=function(_0x1b0a9b,_0x292e67){var _0x3ed153={},_0x1859f8={},_0x3cef42={'count':0x0,'rows':[]};var _0x1b996b=_[_0xe450('0x2b')](db[_0xe450('0x2c')][_0xe450('0x2d')],function(_0x626bed){return{'name':_0x626bed[_0xe450('0x2e')],'type':_0x626bed[_0xe450('0x2f')][_0xe450('0x30')]};});_0x1859f8[_0xe450('0x31')]=_[_0xe450('0x2b')](_0x1b996b,_0xe450('0x28'));_0x1859f8['query']=_['keys'](_0x1b0a9b['query']);_0x1859f8[_0xe450('0x32')]=_[_0xe450('0x33')](_0x1859f8[_0xe450('0x31')],_0x1859f8[_0xe450('0x34')]);_0x3ed153[_0xe450('0x35')]=_[_0xe450('0x33')](_0x1859f8[_0xe450('0x31')],qs[_0xe450('0x36')](_0x1b0a9b['query'][_0xe450('0x36')]));_0x3ed153[_0xe450('0x35')]=_0x3ed153['attributes'][_0xe450('0x37')]?_0x3ed153[_0xe450('0x35')]:_0x1859f8[_0xe450('0x31')];if(!_0x1b0a9b[_0xe450('0x34')]['hasOwnProperty'](_0xe450('0x38'))){_0x3ed153[_0xe450('0x1b')]=qs[_0xe450('0x1b')](_0x1b0a9b[_0xe450('0x34')][_0xe450('0x1b')]);_0x3ed153[_0xe450('0x19')]=qs[_0xe450('0x19')](_0x1b0a9b[_0xe450('0x34')][_0xe450('0x19')]);}_0x3ed153[_0xe450('0x39')]=qs[_0xe450('0x3a')](_0x1b0a9b[_0xe450('0x34')][_0xe450('0x3a')]);_0x3ed153['where']=qs['filters'](_[_0xe450('0x3b')](_0x1b0a9b['query'],_0x1859f8[_0xe450('0x32')]),_0x1b996b);if(_0x1b0a9b['query'][_0xe450('0x3c')]){_0x3ed153[_0xe450('0x3d')]=_['merge'](_0x3ed153['where'],{'$or':_['map'](_0x1b996b,function(_0x546f71){if(_0x546f71['type']!=='VIRTUAL'){var _0x215e4={};_0x215e4[_0x546f71['name']]={'$like':'%'+_0x1b0a9b[_0xe450('0x34')]['filter']+'%'};return _0x215e4;}})});}_0x3ed153=_[_0xe450('0x3e')]({},_0x3ed153,_0x1b0a9b[_0xe450('0x3f')]);var _0x5c3aa0={'where':_0x3ed153[_0xe450('0x3d')]};return db['Schedule'][_0xe450('0x1c')](_0x5c3aa0)[_0xe450('0x22')](function(_0x1e535d){_0x3cef42[_0xe450('0x1c')]=_0x1e535d;if(_0x1b0a9b[_0xe450('0x34')]['includeAll']){_0x3ed153[_0xe450('0x40')]=[{'all':!![]}];}return db[_0xe450('0x2c')][_0xe450('0x41')](_0x3ed153);})[_0xe450('0x22')](function(_0x57c2d4){_0x3cef42['rows']=_0x57c2d4;return _0x3cef42;})[_0xe450('0x22')](respondWithFilteredResult(_0x292e67,_0x3ed153))[_0xe450('0x42')](handleError(_0x292e67,null));};exports[_0xe450('0x43')]=function(_0x59ec33,_0x4143fa){var _0x14a444={'raw':![],'where':{'id':_0x59ec33['params']['id']}},_0x2cace9={};_0x2cace9['model']=_[_0xe450('0x44')](db[_0xe450('0x2c')][_0xe450('0x2d')]);_0x2cace9[_0xe450('0x34')]=_['keys'](_0x59ec33['query']);_0x2cace9['filters']=_['intersection'](_0x2cace9['model'],_0x2cace9[_0xe450('0x34')]);_0x14a444[_0xe450('0x35')]=_['intersection'](_0x2cace9['model'],qs['fields'](_0x59ec33[_0xe450('0x34')][_0xe450('0x36')]));_0x14a444[_0xe450('0x35')]=_0x14a444['attributes']['length']?_0x14a444[_0xe450('0x35')]:_0x2cace9[_0xe450('0x31')];if(_0x59ec33['query']['includeAll']){_0x14a444['include']=[{'all':!![]}];}_0x14a444=_[_0xe450('0x3e')]({},_0x14a444,_0x59ec33['options']);return db[_0xe450('0x2c')][_0xe450('0x45')](_0x14a444)[_0xe450('0x22')](handleEntityNotFound(_0x4143fa,null))['then'](respondWithResult(_0x4143fa,null))['catch'](handleError(_0x4143fa,null));};exports[_0xe450('0x46')]=function(_0x18536a,_0x21923f){return db['Schedule']['create'](_0x18536a[_0xe450('0x47')],{})[_0xe450('0x22')](function(_0x3f8416){var _0x375369=_0x18536a['user'][_0xe450('0x23')]({'plain':!![]});if(!_0x375369)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x375369[_0xe450('0x48')]===_0xe450('0x49')){var _0xcdc803=_0x3f8416[_0xe450('0x23')]({'plain':!![]});var _0x2a222e=_0xe450('0x24');return db['UserProfileSection'][_0xe450('0x45')]({'where':{'name':_0x2a222e,'userProfileId':_0x375369[_0xe450('0x4a')]},'raw':!![]})['then'](function(_0x277e62){if(_0x277e62&&_0x277e62[_0xe450('0x4b')]===0x0){return db['UserProfileResource'][_0xe450('0x46')]({'name':_0xcdc803['name'],'resourceId':_0xcdc803['id'],'type':_0x277e62['name'],'sectionId':_0x277e62['id']},{})[_0xe450('0x22')](function(){return _0x3f8416;});}else{return _0x3f8416;}})['catch'](function(_0x3a4850){logger[_0xe450('0x26')](_0xe450('0x4c'),_0x3a4850);throw _0x3a4850;});}return _0x3f8416;})[_0xe450('0x22')](respondWithResult(_0x21923f,0xc9))[_0xe450('0x42')](handleError(_0x21923f,null));};exports[_0xe450('0x4d')]=function(_0xf2ccba,_0x4701d4){if(_0xf2ccba[_0xe450('0x47')]['id']){delete _0xf2ccba[_0xe450('0x47')]['id'];}return db[_0xe450('0x2c')]['find']({'where':{'id':_0xf2ccba[_0xe450('0x4e')]['id']}})[_0xe450('0x22')](handleEntityNotFound(_0x4701d4,null))['then'](saveUpdates(_0xf2ccba[_0xe450('0x47')],null))[_0xe450('0x22')](respondWithResult(_0x4701d4,null))[_0xe450('0x42')](handleError(_0x4701d4,null));};exports['destroy']=function(_0x3c6d9e,_0x3051b3){return db[_0xe450('0x2c')][_0xe450('0x45')]({'where':{'id':_0x3c6d9e['params']['id']}})['then'](handleEntityNotFound(_0x3051b3,null))[_0xe450('0x22')](removeEntity(_0x3051b3,null))[_0xe450('0x42')](handleError(_0x3051b3,null));};exports['run']=function(_0x100ad4,_0x38dfb8,_0x4560c4){var _0x341818=require('../../config/schedule');return db[_0xe450('0x2c')][_0xe450('0x45')]({'where':{'id':_0x100ad4[_0xe450('0x4e')]['id']},'raw':!![]})[_0xe450('0x22')](handleEntityNotFound(_0x38dfb8,null))['then'](function(){_0x341818[_0xe450('0x4f')](_0x100ad4[_0xe450('0x4e')]['id']);})['then'](respondWithStatusCode(_0x38dfb8,null))[_0xe450('0x42')](handleError(_0x38dfb8,null));};
\ No newline at end of file
index be7b069..592948a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75d8=['request-promise','../../config/environment','./schedule.attributes','exports','define','Schedule','tools_schedules','lodash','util','api','moment','bluebird'];(function(_0x7488c6,_0x1b2889){var _0x50fafa=function(_0x5dbf64){while(--_0x5dbf64){_0x7488c6['push'](_0x7488c6['shift']());}};_0x50fafa(++_0x1b2889);}(_0x75d8,0x14b));var _0x875d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x75d8[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x875d('0x0'));var util=require(_0x875d('0x1'));var logger=require('../../config/logger')(_0x875d('0x2'));var moment=require(_0x875d('0x3'));var BPromise=require(_0x875d('0x4'));var rp=require(_0x875d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x875d('0x6'));var attributes=require(_0x875d('0x7'));module[_0x875d('0x8')]=function(_0x19db5c,_0x2d0d56){return _0x19db5c[_0x875d('0x9')](_0x875d('0xa'),attributes,{'tableName':_0x875d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc943=['tools_schedules','util','../../config/logger','api','request-promise','path','../../config/environment','./schedule.attributes','exports','define','Schedule'];(function(_0x19118e,_0x148a16){var _0x5a0c20=function(_0x57f03a){while(--_0x57f03a){_0x19118e['push'](_0x19118e['shift']());}};_0x5a0c20(++_0x148a16);}(_0xc943,0x156));var _0x3c94=function(_0x1a21ff,_0x4a7550){_0x1a21ff=_0x1a21ff-0x0;var _0x25afc1=_0xc943[_0x1a21ff];return _0x25afc1;};'use strict';var _=require('lodash');var util=require(_0x3c94('0x0'));var logger=require(_0x3c94('0x1'))(_0x3c94('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3c94('0x3'));var fs=require('fs');var path=require(_0x3c94('0x4'));var rimraf=require('rimraf');var config=require(_0x3c94('0x5'));var attributes=require(_0x3c94('0x6'));module[_0x3c94('0x7')]=function(_0xe92eef,_0x2de7f2){return _0xe92eef[_0x3c94('0x8')](_0x3c94('0x9'),attributes,{'tableName':_0x3c94('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9119d65..de14cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0860=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','Schedule,\x20%s,\x20%s','debug','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x0860,0x102));var _0x0086=function(_0x534683,_0x35d2d1){_0x534683=_0x534683-0x0;var _0x42ce78=_0x0860[_0x534683];return _0x42ce78;};'use strict';var _=require(_0x0086('0x0'));var util=require(_0x0086('0x1'));var moment=require(_0x0086('0x2'));var BPromise=require(_0x0086('0x3'));var rs=require(_0x0086('0x4'));var fs=require('fs');var Redis=require(_0x0086('0x5'));var db=require(_0x0086('0x6'))['db'];var utils=require(_0x0086('0x7'));var logger=require('../../config/logger')(_0x0086('0x8'));var config=require(_0x0086('0x9'));var jayson=require(_0x0086('0xa'));var client=jayson['client'][_0x0086('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ddca6,_0x43ebec,_0x1e9303){return new BPromise(function(_0x97c8bc,_0x5b1efc){return client[_0x0086('0xc')](_0x5ddca6,_0x1e9303)[_0x0086('0xd')](function(_0x16fb5e){logger[_0x0086('0xe')](_0x0086('0xf'),_0x43ebec,'request\x20sent');logger[_0x0086('0x10')](_0x0086('0x11'),_0x43ebec,_0x0086('0x12'),JSON[_0x0086('0x13')](_0x16fb5e));if(_0x16fb5e[_0x0086('0x14')]){if(_0x16fb5e[_0x0086('0x14')][_0x0086('0x15')]===0x1f4){logger['error']('Schedule,\x20%s,\x20%s',_0x43ebec,_0x16fb5e['error'][_0x0086('0x16')]);return _0x5b1efc(_0x16fb5e['error'][_0x0086('0x16')]);}logger['error'](_0x0086('0xf'),_0x43ebec,_0x16fb5e[_0x0086('0x14')][_0x0086('0x16')]);return _0x97c8bc(_0x16fb5e[_0x0086('0x14')]['message']);}else{logger[_0x0086('0xe')](_0x0086('0xf'),_0x43ebec,_0x0086('0x12'));_0x97c8bc(_0x16fb5e[_0x0086('0x17')]['message']);}})['catch'](function(_0xdedc79){logger[_0x0086('0x14')](_0x0086('0xf'),_0x43ebec,_0xdedc79);_0x5b1efc(_0xdedc79);});});}
\ No newline at end of file
+var _0x8f03=['debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment','ioredis','../../mysqldb','../../config/logger','http','then','Schedule,\x20%s,\x20%s','request\x20sent'];(function(_0x2b6029,_0x334fcc){var _0x422bc8=function(_0x3ec7f5){while(--_0x3ec7f5){_0x2b6029['push'](_0x2b6029['shift']());}};_0x422bc8(++_0x334fcc);}(_0x8f03,0x17e));var _0x38f0=function(_0x4f7576,_0x138a8f){_0x4f7576=_0x4f7576-0x0;var _0x45d522=_0x8f03[_0x4f7576];return _0x45d522;};'use strict';var _=require('lodash');var util=require(_0x38f0('0x0'));var moment=require(_0x38f0('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38f0('0x2'));var db=require(_0x38f0('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x38f0('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x38f0('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x7d0937,_0x968b3a,_0x197e48){return new BPromise(function(_0x4e5227,_0x419403){return client['request'](_0x7d0937,_0x197e48)[_0x38f0('0x6')](function(_0x3537c9){logger['info'](_0x38f0('0x7'),_0x968b3a,_0x38f0('0x8'));logger[_0x38f0('0x9')](_0x38f0('0xa'),_0x968b3a,'request\x20sent',JSON[_0x38f0('0xb')](_0x3537c9));if(_0x3537c9[_0x38f0('0xc')]){if(_0x3537c9[_0x38f0('0xc')]['code']===0x1f4){logger[_0x38f0('0xc')](_0x38f0('0x7'),_0x968b3a,_0x3537c9['error'][_0x38f0('0xd')]);return _0x419403(_0x3537c9[_0x38f0('0xc')][_0x38f0('0xd')]);}logger['error'](_0x38f0('0x7'),_0x968b3a,_0x3537c9[_0x38f0('0xc')][_0x38f0('0xd')]);return _0x4e5227(_0x3537c9[_0x38f0('0xc')]['message']);}else{logger[_0x38f0('0xe')](_0x38f0('0x7'),_0x968b3a,_0x38f0('0x8'));_0x4e5227(_0x3537c9[_0x38f0('0xf')]['message']);}})[_0x38f0('0x10')](function(_0x319a00){logger['error'](_0x38f0('0x7'),_0x968b3a,_0x319a00);_0x419403(_0x319a00);});});}
\ No newline at end of file
index 5c2ba90..2a1e3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cac=['get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','create','put','update','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x2cac,0x1c0));var _0xc2ca=function(_0x34cea1,_0x16d860){_0x34cea1=_0x34cea1-0x0;var _0x2d796a=_0x2cac[_0x34cea1];return _0x2d796a;};'use strict';var multer=require(_0xc2ca('0x0'));var util=require(_0xc2ca('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc2ca('0x2'));var router=express['Router']();var fs_extra=require(_0xc2ca('0x3'));var auth=require(_0xc2ca('0x4'));var interaction=require(_0xc2ca('0x5'));var config=require(_0xc2ca('0x6'));var controller=require(_0xc2ca('0x7'));router[_0xc2ca('0x8')]('/',auth[_0xc2ca('0x9')](),controller[_0xc2ca('0xa')]);router[_0xc2ca('0x8')](_0xc2ca('0xb'),auth[_0xc2ca('0x9')](),controller[_0xc2ca('0xc')]);router[_0xc2ca('0x8')](_0xc2ca('0xd'),auth[_0xc2ca('0x9')](),controller[_0xc2ca('0xe')]);router[_0xc2ca('0x8')](_0xc2ca('0xf'),auth[_0xc2ca('0x9')](),controller[_0xc2ca('0x10')]);router[_0xc2ca('0x11')]('/',auth[_0xc2ca('0x9')](),controller[_0xc2ca('0x12')]);router[_0xc2ca('0x13')](_0xc2ca('0xd'),auth['isAuthenticated'](),controller[_0xc2ca('0x14')]);router[_0xc2ca('0x15')](_0xc2ca('0xd'),auth[_0xc2ca('0x9')](),controller[_0xc2ca('0x16')]);module[_0xc2ca('0x17')]=router;
\ No newline at end of file
+var _0x2d58=['../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','download','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service'];(function(_0x28669c,_0x1f62c4){var _0x4a3af6=function(_0x3e25d5){while(--_0x3e25d5){_0x28669c['push'](_0x28669c['shift']());}};_0x4a3af6(++_0x1f62c4);}(_0x2d58,0x134));var _0x82d5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2d58[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x82d5('0x0'));var util=require(_0x82d5('0x1'));var path=require(_0x82d5('0x2'));var timeout=require(_0x82d5('0x3'));var express=require('express');var router=express[_0x82d5('0x4')]();var fs_extra=require(_0x82d5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x82d5('0x6'));var config=require(_0x82d5('0x7'));var controller=require('./screenRecording.controller');router['get']('/',auth[_0x82d5('0x8')](),controller[_0x82d5('0x9')]);router[_0x82d5('0xa')](_0x82d5('0xb'),auth['isAuthenticated'](),controller[_0x82d5('0xc')]);router[_0x82d5('0xa')](_0x82d5('0xd'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0x82d5('0xe')]);router[_0x82d5('0xf')]('/',auth[_0x82d5('0x8')](),controller[_0x82d5('0x10')]);router[_0x82d5('0x11')](_0x82d5('0xd'),auth[_0x82d5('0x8')](),controller[_0x82d5('0x12')]);router[_0x82d5('0x13')](_0x82d5('0xd'),auth[_0x82d5('0x8')](),controller[_0x82d5('0x14')]);module['exports']=router;
\ No newline at end of file
index dd059a0..602ddb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc04a=['createdAt','updatedAt','sequelize','path','exports','VIRTUAL','getDataValue','extname','value','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','toString'];(function(_0x51904e,_0x1a22a9){var _0x38ce8f=function(_0x8d6497){while(--_0x8d6497){_0x51904e['push'](_0x51904e['shift']());}};_0x38ce8f(++_0x1a22a9);}(_0xc04a,0x12e));var _0xac04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc04a[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xac04('0x0'));var moment=require('moment');var path=require(_0xac04('0x1'));var config=require('../../config/environment');module[_0xac04('0x2')]={'format':{'type':Sequelize[_0xac04('0x3')],'get':function(){return this[_0xac04('0x4')]('value')?path[_0xac04('0x5')](this[_0xac04('0x4')](_0xac04('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0xac04('0x7')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x4f51d2){var _0x4dab26=_0x4f51d2[_0xac04('0x8')](/\\/g,'/');this[_0xac04('0x9')](_0xac04('0x6'),_0x4dab26);}},'rating':{'type':Sequelize[_0xac04('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xac04('0xa')],'set':function(_0x196ad0){this[_0xac04('0x9')](_0xac04('0xb'),moment()[_0xac04('0xc')](_0x196ad0,'ms'));this['setDataValue'](_0xac04('0xd'),moment());this['setDataValue'](_0xac04('0xe'),_0x196ad0);}},'startedAt':{'type':Sequelize[_0xac04('0xf')],'get':function(){return moment(this[_0xac04('0x4')]('startedAt'))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'closedAt':{'type':Sequelize[_0xac04('0xf')],'get':function(){return moment(this[_0xac04('0x4')](_0xac04('0xd')))['format'](_0xac04('0x10'))[_0xac04('0x11')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xac04('0x4')](_0xac04('0x12')))['format'](_0xac04('0x10'))[_0xac04('0x11')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0xac04('0x13')))['format'](_0xac04('0x10'))['toString']();}}};
\ No newline at end of file
+var _0x4b11=['MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','../../config/environment','VIRTUAL','getDataValue','value','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','format'];(function(_0x40b642,_0x3e8910){var _0x1401d9=function(_0x14bca5){while(--_0x14bca5){_0x40b642['push'](_0x40b642['shift']());}};_0x1401d9(++_0x3e8910);}(_0x4b11,0xf4));var _0x14b1=function(_0x32c4a3,_0x548acf){_0x32c4a3=_0x32c4a3-0x0;var _0x7d4ef6=_0x4b11[_0x32c4a3];return _0x7d4ef6;};'use strict';var Sequelize=require(_0x14b1('0x0'));var moment=require(_0x14b1('0x1'));var path=require(_0x14b1('0x2'));var config=require(_0x14b1('0x3'));module['exports']={'format':{'type':Sequelize[_0x14b1('0x4')],'get':function(){return this[_0x14b1('0x5')](_0x14b1('0x6'))?path['extname'](this[_0x14b1('0x5')](_0x14b1('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x14b1('0x7')]},'channel':{'type':Sequelize[_0x14b1('0x7')]},'value':{'type':Sequelize[_0x14b1('0x7')],'set':function(_0x4376d6){var _0x36b3df=_0x4376d6[_0x14b1('0x8')](/\\/g,'/');this[_0x14b1('0x9')](_0x14b1('0x6'),_0x36b3df);}},'rating':{'type':Sequelize[_0x14b1('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x14b1('0xa')],'set':function(_0xc93256){this[_0x14b1('0x9')](_0x14b1('0xb'),moment()['subtract'](_0xc93256,'ms'));this[_0x14b1('0x9')](_0x14b1('0xc'),moment());this['setDataValue'](_0x14b1('0xd'),_0xc93256);}},'startedAt':{'type':Sequelize[_0x14b1('0xe')],'get':function(){return moment(this[_0x14b1('0x5')](_0x14b1('0xb')))[_0x14b1('0xf')](_0x14b1('0x10'))['toString']();}},'closedAt':{'type':Sequelize[_0x14b1('0xe')],'get':function(){return moment(this['getDataValue']('closedAt'))[_0x14b1('0xf')](_0x14b1('0x10'))[_0x14b1('0x11')]();}},'createdAt':{'type':Sequelize[_0x14b1('0xe')],'get':function(){return moment(this[_0x14b1('0x5')](_0x14b1('0x12')))['format'](_0x14b1('0x10'))[_0x14b1('0x11')]();}},'updatedAt':{'type':Sequelize[_0x14b1('0xe')],'get':function(){return moment(this[_0x14b1('0x5')](_0x14b1('0x13')))[_0x14b1('0xf')](_0x14b1('0x10'))[_0x14b1('0x11')]();}}};
\ No newline at end of file
index 79ebc5b..1f2307b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['differenceBy','format','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','filter','options','ScreenRecording','includeAll','rows','catch','show','params','include','create','body','createdAt','closedAt','find','describe','download','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model'];(function(_0x51033a,_0x2ef408){var _0x4e92d2=function(_0x64234){while(--_0x64234){_0x51033a['push'](_0x51033a['shift']());}};_0x4e92d2(++_0x2ef408);}(_0xb458,0x103));var _0x8b45=function(_0x13c6bf,_0x4bf8b3){_0x13c6bf=_0x13c6bf-0x0;var _0x474009=_0xb458[_0x13c6bf];return _0x474009;};'use strict';var emlformat=require(_0x8b45('0x0'));var rimraf=require(_0x8b45('0x1'));var zipdir=require(_0x8b45('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8b45('0x3'));var BPromise=require(_0x8b45('0x4'));var Mustache=require(_0x8b45('0x5'));var util=require(_0x8b45('0x6'));var path=require('path');var sox=require(_0x8b45('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b45('0x8'));var _=require(_0x8b45('0x9'));var squel=require(_0x8b45('0xa'));var crypto=require(_0x8b45('0xb'));var jsforce=require(_0x8b45('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8b45('0xd'));var querystring=require(_0x8b45('0xe'));var Papa=require(_0x8b45('0xf'));var Redis=require(_0x8b45('0x10'));var authService=require(_0x8b45('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8b45('0x12'));var hardwareService=require(_0x8b45('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8b45('0x14'));var db=require(_0x8b45('0x15'))['db'];function respondWithStatusCode(_0x37c220,_0x52c4db){_0x52c4db=_0x52c4db||0xcc;return function(_0x30d38c){if(_0x30d38c){return _0x37c220[_0x8b45('0x16')](_0x52c4db);}return _0x37c220[_0x8b45('0x17')](_0x52c4db)[_0x8b45('0x18')]();};}function respondWithResult(_0x32babc,_0x2ad2ae){_0x2ad2ae=_0x2ad2ae||0xc8;return function(_0x5f0b20){if(_0x5f0b20){return _0x32babc['status'](_0x2ad2ae)[_0x8b45('0x19')](_0x5f0b20);}};}function respondWithFilteredResult(_0x23f1dd,_0x445170){return function(_0x39c1d1){if(_0x39c1d1){var _0x4781d7=typeof _0x445170[_0x8b45('0x1a')]===_0x8b45('0x1b')&&typeof _0x445170[_0x8b45('0x1c')]===_0x8b45('0x1b');var _0x391d1e=_0x39c1d1[_0x8b45('0x1d')];var _0x21d5b2=_0x4781d7?0x0:_0x445170[_0x8b45('0x1a')];var _0x43ffb7=_0x4781d7?_0x39c1d1[_0x8b45('0x1d')]:_0x445170[_0x8b45('0x1a')]+_0x445170[_0x8b45('0x1c')];var _0x309e23;if(_0x43ffb7>=_0x391d1e){_0x43ffb7=_0x391d1e;_0x309e23=0xc8;}else{_0x309e23=0xce;}_0x23f1dd['status'](_0x309e23);return _0x23f1dd[_0x8b45('0x1e')](_0x8b45('0x1f'),_0x21d5b2+'-'+_0x43ffb7+'/'+_0x391d1e)[_0x8b45('0x19')](_0x39c1d1);}return null;};}function patchUpdates(_0x46e21a){return function(_0x3e1438){try{jsonpatch[_0x8b45('0x20')](_0x3e1438,_0x46e21a,!![]);}catch(_0x2f4f1c){return BPromise[_0x8b45('0x21')](_0x2f4f1c);}return _0x3e1438['save']();};}function saveUpdates(_0x52f93f,_0x41154a){return function(_0x580e17){if(_0x580e17){return _0x580e17[_0x8b45('0x22')](_0x52f93f)[_0x8b45('0x23')](function(_0x30f405){return _0x30f405;});}return null;};}function removeEntity(_0x45e2db,_0x165570){return function(_0x2b8526){if(_0x2b8526){return _0x2b8526[_0x8b45('0x24')]()['then'](function(){_0x45e2db['status'](0xcc)[_0x8b45('0x18')]();});}};}function handleEntityNotFound(_0x2c2c06,_0x500044){return function(_0x5723a2){if(!_0x5723a2){_0x2c2c06[_0x8b45('0x16')](0x194);}return _0x5723a2;};}function handleError(_0x32f6f0,_0x2ca2d9){_0x2ca2d9=_0x2ca2d9||0x1f4;return function(_0x2f37bc){logger['error'](_0x2f37bc[_0x8b45('0x25')]);if(_0x2f37bc[_0x8b45('0x26')]){delete _0x2f37bc[_0x8b45('0x26')];}_0x32f6f0[_0x8b45('0x17')](_0x2ca2d9)[_0x8b45('0x27')](_0x2f37bc);};}exports[_0x8b45('0x28')]=function(_0x461017,_0x234f62){var _0x1733a7={},_0xf21bd1={},_0x339c73={'count':0x0,'rows':[]};var _0x1ba2d4=_[_0x8b45('0x29')](db['ScreenRecording'][_0x8b45('0x2a')],function(_0x36db96){return{'name':_0x36db96[_0x8b45('0x2b')],'type':_0x36db96[_0x8b45('0x2c')][_0x8b45('0x2d')]};});_0xf21bd1[_0x8b45('0x2e')]=_[_0x8b45('0x2f')](_[_0x8b45('0x29')](_0x1ba2d4,'name'),[_0x8b45('0x30')]);_0xf21bd1[_0x8b45('0x31')]=_[_0x8b45('0x32')](_0x461017[_0x8b45('0x31')]);_0xf21bd1[_0x8b45('0x33')]=_['intersection'](_0xf21bd1[_0x8b45('0x2e')],_0xf21bd1['query']);_0x1733a7['attributes']=_[_0x8b45('0x34')](_0xf21bd1[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x461017[_0x8b45('0x31')][_0x8b45('0x35')]));_0x1733a7[_0x8b45('0x36')]=_0x1733a7['attributes'][_0x8b45('0x37')]?_0x1733a7[_0x8b45('0x36')]:_0xf21bd1[_0x8b45('0x2e')];if(!_0x461017[_0x8b45('0x31')]['hasOwnProperty'](_0x8b45('0x38'))){_0x1733a7[_0x8b45('0x1c')]=qs[_0x8b45('0x1c')](_0x461017['query'][_0x8b45('0x1c')]);_0x1733a7[_0x8b45('0x1a')]=qs[_0x8b45('0x1a')](_0x461017['query'][_0x8b45('0x1a')]);}_0x1733a7[_0x8b45('0x39')]=qs[_0x8b45('0x3a')](_0x461017[_0x8b45('0x31')]['sort']);_0x1733a7[_0x8b45('0x3b')]=qs[_0x8b45('0x33')](_[_0x8b45('0x3c')](_0x461017[_0x8b45('0x31')],_0xf21bd1[_0x8b45('0x33')]),_0x1ba2d4);if(_0x461017[_0x8b45('0x31')]['filter']){_0x1733a7['where']=_[_0x8b45('0x3d')](_0x1733a7[_0x8b45('0x3b')],{'$or':_[_0x8b45('0x29')](_0x1ba2d4,function(_0x12d4b2){if(_0x12d4b2[_0x8b45('0x2c')]!=='VIRTUAL'){var _0x120068={};_0x120068[_0x12d4b2['name']]={'$like':'%'+_0x461017[_0x8b45('0x31')][_0x8b45('0x3e')]+'%'};return _0x120068;}})});}_0x1733a7=_[_0x8b45('0x3d')]({},_0x1733a7,_0x461017[_0x8b45('0x3f')]);var _0x254f17={'where':_0x1733a7[_0x8b45('0x3b')]};return db[_0x8b45('0x40')][_0x8b45('0x1d')](_0x254f17)[_0x8b45('0x23')](function(_0x2ca00e){_0x339c73[_0x8b45('0x1d')]=_0x2ca00e;if(_0x461017['query'][_0x8b45('0x41')]){_0x1733a7['include']=[{'all':!![]}];}return db[_0x8b45('0x40')]['findAll'](_0x1733a7);})[_0x8b45('0x23')](function(_0x224c45){_0x339c73[_0x8b45('0x42')]=_0x224c45;return _0x339c73;})[_0x8b45('0x23')](respondWithFilteredResult(_0x234f62,_0x1733a7))[_0x8b45('0x43')](handleError(_0x234f62,null));};exports[_0x8b45('0x44')]=function(_0x58e663,_0x6fbca4){var _0x5916c7={'raw':![],'where':{'id':_0x58e663[_0x8b45('0x45')]['id']}},_0x4c56c8={};_0x4c56c8[_0x8b45('0x2e')]=_[_0x8b45('0x32')](db['ScreenRecording'][_0x8b45('0x2a')]);_0x4c56c8['query']=_[_0x8b45('0x32')](_0x58e663[_0x8b45('0x31')]);_0x4c56c8[_0x8b45('0x33')]=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],_0x4c56c8[_0x8b45('0x31')]);_0x5916c7['attributes']=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x58e663[_0x8b45('0x31')][_0x8b45('0x35')]));_0x5916c7[_0x8b45('0x36')]=_0x5916c7[_0x8b45('0x36')][_0x8b45('0x37')]?_0x5916c7[_0x8b45('0x36')]:_0x4c56c8[_0x8b45('0x2e')];if(_0x58e663[_0x8b45('0x31')][_0x8b45('0x41')]){_0x5916c7[_0x8b45('0x46')]=[{'all':!![]}];}_0x5916c7=_[_0x8b45('0x3d')]({},_0x5916c7,_0x58e663[_0x8b45('0x3f')]);return db[_0x8b45('0x40')]['find'](_0x5916c7)['then'](handleEntityNotFound(_0x6fbca4,null))['then'](respondWithResult(_0x6fbca4,null))[_0x8b45('0x43')](handleError(_0x6fbca4,null));};exports[_0x8b45('0x47')]=function(_0x3a1621,_0x473530){return db[_0x8b45('0x40')][_0x8b45('0x47')](_0x3a1621[_0x8b45('0x48')],{})[_0x8b45('0x23')](respondWithResult(_0x473530,0xc9))['catch'](handleError(_0x473530,null));};exports[_0x8b45('0x22')]=function(_0x5d5be2,_0x23b5c6){if(_0x5d5be2[_0x8b45('0x48')]['id']){delete _0x5d5be2[_0x8b45('0x48')]['id'];}delete _0x5d5be2[_0x8b45('0x48')]['duration'];delete _0x5d5be2[_0x8b45('0x48')][_0x8b45('0x49')];delete _0x5d5be2['body'][_0x8b45('0x4a')];delete _0x5d5be2[_0x8b45('0x48')]['value'];return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':{'id':_0x5d5be2[_0x8b45('0x45')]['id']}})[_0x8b45('0x23')](handleEntityNotFound(_0x23b5c6,null))[_0x8b45('0x23')](saveUpdates(_0x5d5be2[_0x8b45('0x48')],null))['then'](respondWithResult(_0x23b5c6,null))['catch'](handleError(_0x23b5c6,null));};exports[_0x8b45('0x4c')]=function(_0x2a2e59,_0x2d5b31){return db['ScreenRecording'][_0x8b45('0x4c')]()[_0x8b45('0x23')](respondWithResult(_0x2d5b31,null))[_0x8b45('0x43')](handleError(_0x2d5b31,null));};exports[_0x8b45('0x4d')]=function(_0x2d6b66,_0x597402,_0x34c05d){var _0xa92a05=require('../../components/encryptor');var _0x422da0=![];var _0x4c3f38={};if(_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]&&_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]==='uniqueid'){_0x4c3f38[_0x8b45('0x4e')]=_0x2d6b66[_0x8b45('0x45')]['id'];}else{_0x4c3f38['id']=_0x2d6b66[_0x8b45('0x45')]['id'];}return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':_0x4c3f38,'attributes':['id',_0x8b45('0x4f')],'raw':!![]})[_0x8b45('0x23')](handleEntityNotFound(_0x597402,null))[_0x8b45('0x23')](function(_0x446fe5){if(_0x446fe5){var _0x5ba878=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x446fe5[_0x8b45('0x4f')]);var _0x1851c2=util['format'](_0x8b45('0x53'),_0x5ba878);if(fs[_0x8b45('0x54')](_0x1851c2)){_0x422da0=!![];return _0xa92a05[_0x8b45('0x55')](_0x1851c2,_0x5ba878,config['secrets'][_0x8b45('0x56')])[_0x8b45('0x23')](function(){return _0x446fe5;});}return _0x446fe5;}})[_0x8b45('0x23')](function(_0x9eacc1){if(_0x9eacc1){var _0x5795ca=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x9eacc1[_0x8b45('0x4f')]);if(!fs['existsSync'](_0x5795ca)){throw new db[(_0x8b45('0x57'))][(_0x8b45('0x58'))](_0x8b45('0x59'));}if(_0x9eacc1[_0x8b45('0x5a')]){return _0x597402[_0x8b45('0x4d')](_0x5795ca,_0x9eacc1['filename']+path[_0x8b45('0x5b')](_0x5795ca),function(){if(_0x422da0){fs['unlink'](_0x5795ca);}});}else{return _0x597402[_0x8b45('0x4d')](_0x5795ca,function(_0x2f7ab0){if(_0x422da0){fs[_0x8b45('0x5c')](_0x5795ca);}});}}})[_0x8b45('0x43')](function(_0x6a77bd){if(_0x6a77bd[_0x8b45('0x5d')]==='ScreenRecording\x20not\x20found'){_0x597402['status'](0x194)[_0x8b45('0x27')](_0x8b45('0x5e'));}else{return handleError(_0x597402,null);}});};exports['destroy']=function(_0x461c83,_0x239330){return db[_0x8b45('0x40')]['find']({'where':{'id':_0x461c83['params']['id']}})[_0x8b45('0x23')](function(_0x8e5a41){if(_['isNil'](_0x8e5a41)){throw new ReferenceError(_0x8b45('0x5f'));}return _0x8e5a41;})['then'](function(_0xf1ab37){var _0x560c51=path['join'](config[_0x8b45('0x51')],_0x8b45('0x52'),_0xf1ab37['value']);logger[_0x8b45('0x60')](_0x8b45('0x61'),_0x560c51);if(!_[_0x8b45('0x62')](_0xf1ab37[_0x8b45('0x4f')])&&fs[_0x8b45('0x54')](_0x560c51)){logger['info'](_0x8b45('0x63')+_0x560c51+_0x8b45('0x64'));fs[_0x8b45('0x65')](_0x560c51);}_0x560c51=_0x560c51+'.cypher';if(!_['isNil'](_0xf1ab37[_0x8b45('0x4f')])&&fs['existsSync'](_0x560c51)){logger[_0x8b45('0x60')]('File:\x20\x22'+_0x560c51+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x560c51);}return _0xf1ab37;})[_0x8b45('0x23')](function(_0x4df581){if(!_0x4df581)throw new InternalError();return _0x4df581[_0x8b45('0x24')]();})[_0x8b45('0x23')](function(){_0x239330['status'](0xcc)[_0x8b45('0x18')]();})[_0x8b45('0x43')](handleError(_0x239330,null));};
\ No newline at end of file
+var _0x5fd1=['body','duration','createdAt','closedAt','describe','../../components/encryptor','uniqueid','join','value','format','%s.cypher','decryptFile','secrets','recording','root','server/files/screen_recordings','existsSync','Sequelize','filename','download','extname','unlink','message','ScreenRecording\x20not\x20found','Not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','offset','set','Content-Range','apply','update','then','destroy','end','error','name','send','index','map','ScreenRecording','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','filter','options','count','include','findAll','rows','catch','show','params','rawAttributes','merge','find','create'];(function(_0x4bf853,_0x1fc141){var _0x38994f=function(_0x2f84e0){while(--_0x2f84e0){_0x4bf853['push'](_0x4bf853['shift']());}};_0x38994f(++_0x1fc141);}(_0x5fd1,0x155));var _0x15fd=function(_0x27acb7,_0x261ad9){_0x27acb7=_0x27acb7-0x0;var _0x2edb13=_0x5fd1[_0x27acb7];return _0x2edb13;};'use strict';var emlformat=require(_0x15fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x15fd('0x1'));var jsonpatch=require(_0x15fd('0x2'));var rp=require(_0x15fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x15fd('0x4'));var util=require(_0x15fd('0x5'));var path=require(_0x15fd('0x6'));var sox=require('sox');var csv=require(_0x15fd('0x7'));var ejs=require(_0x15fd('0x8'));var fs=require('fs');var fs_extra=require(_0x15fd('0x9'));var _=require(_0x15fd('0xa'));var squel=require(_0x15fd('0xb'));var crypto=require('crypto');var jsforce=require(_0x15fd('0xc'));var deskjs=require(_0x15fd('0xd'));var toCsv=require(_0x15fd('0x7'));var querystring=require('querystring');var Papa=require(_0x15fd('0xe'));var Redis=require('ioredis');var authService=require(_0x15fd('0xf'));var qs=require(_0x15fd('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x15fd('0x11'));var utils=require(_0x15fd('0x12'));var config=require(_0x15fd('0x13'));var licenseUtil=require(_0x15fd('0x14'));var db=require(_0x15fd('0x15'))['db'];function respondWithStatusCode(_0x2e18ec,_0x346ab1){_0x346ab1=_0x346ab1||0xcc;return function(_0x2660db){if(_0x2660db){return _0x2e18ec[_0x15fd('0x16')](_0x346ab1);}return _0x2e18ec['status'](_0x346ab1)['end']();};}function respondWithResult(_0x5784a3,_0x3fda60){_0x3fda60=_0x3fda60||0xc8;return function(_0x135a15){if(_0x135a15){return _0x5784a3[_0x15fd('0x17')](_0x3fda60)[_0x15fd('0x18')](_0x135a15);}};}function respondWithFilteredResult(_0x44eae6,_0x2ffa03){return function(_0x2c5375){if(_0x2c5375){var _0x44a63a=typeof _0x2ffa03['offset']==='undefined'&&typeof _0x2ffa03[_0x15fd('0x19')]==='undefined';var _0x7afe9c=_0x2c5375['count'];var _0x917fe4=_0x44a63a?0x0:_0x2ffa03[_0x15fd('0x1a')];var _0x855bae=_0x44a63a?_0x2c5375['count']:_0x2ffa03[_0x15fd('0x1a')]+_0x2ffa03[_0x15fd('0x19')];var _0x8b7b9e;if(_0x855bae>=_0x7afe9c){_0x855bae=_0x7afe9c;_0x8b7b9e=0xc8;}else{_0x8b7b9e=0xce;}_0x44eae6[_0x15fd('0x17')](_0x8b7b9e);return _0x44eae6[_0x15fd('0x1b')](_0x15fd('0x1c'),_0x917fe4+'-'+_0x855bae+'/'+_0x7afe9c)[_0x15fd('0x18')](_0x2c5375);}return null;};}function patchUpdates(_0x2f46f1){return function(_0x1b8b9f){try{jsonpatch[_0x15fd('0x1d')](_0x1b8b9f,_0x2f46f1,!![]);}catch(_0x3ff307){return BPromise['reject'](_0x3ff307);}return _0x1b8b9f['save']();};}function saveUpdates(_0x293d7b,_0x36b21e){return function(_0x252a1c){if(_0x252a1c){return _0x252a1c[_0x15fd('0x1e')](_0x293d7b)[_0x15fd('0x1f')](function(_0x11496a){return _0x11496a;});}return null;};}function removeEntity(_0x2073da,_0x50d493){return function(_0x40d43){if(_0x40d43){return _0x40d43[_0x15fd('0x20')]()[_0x15fd('0x1f')](function(){_0x2073da['status'](0xcc)[_0x15fd('0x21')]();});}};}function handleEntityNotFound(_0x49062f,_0x3d1835){return function(_0x1fc24f){if(!_0x1fc24f){_0x49062f[_0x15fd('0x16')](0x194);}return _0x1fc24f;};}function handleError(_0x4c9708,_0x16b87c){_0x16b87c=_0x16b87c||0x1f4;return function(_0x1cbf2c){logger[_0x15fd('0x22')](_0x1cbf2c['stack']);if(_0x1cbf2c[_0x15fd('0x23')]){delete _0x1cbf2c['name'];}_0x4c9708[_0x15fd('0x17')](_0x16b87c)[_0x15fd('0x24')](_0x1cbf2c);};}exports[_0x15fd('0x25')]=function(_0x27d2c4,_0x233ed3){var _0x6c213b={},_0x218034={},_0xe650a3={'count':0x0,'rows':[]};var _0x4590a1=_[_0x15fd('0x26')](db[_0x15fd('0x27')]['rawAttributes'],function(_0x47c22c){return{'name':_0x47c22c[_0x15fd('0x28')],'type':_0x47c22c['type'][_0x15fd('0x29')]};});_0x218034[_0x15fd('0x2a')]=_['differenceBy'](_[_0x15fd('0x26')](_0x4590a1,_0x15fd('0x23')),['format']);_0x218034[_0x15fd('0x2b')]=_[_0x15fd('0x2c')](_0x27d2c4[_0x15fd('0x2b')]);_0x218034[_0x15fd('0x2d')]=_[_0x15fd('0x2e')](_0x218034[_0x15fd('0x2a')],_0x218034['query']);_0x6c213b[_0x15fd('0x2f')]=_[_0x15fd('0x2e')](_0x218034[_0x15fd('0x2a')],qs[_0x15fd('0x30')](_0x27d2c4['query'][_0x15fd('0x30')]));_0x6c213b[_0x15fd('0x2f')]=_0x6c213b[_0x15fd('0x2f')][_0x15fd('0x31')]?_0x6c213b[_0x15fd('0x2f')]:_0x218034[_0x15fd('0x2a')];if(!_0x27d2c4['query'][_0x15fd('0x32')](_0x15fd('0x33'))){_0x6c213b['limit']=qs[_0x15fd('0x19')](_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x19')]);_0x6c213b['offset']=qs[_0x15fd('0x1a')](_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x1a')]);}_0x6c213b[_0x15fd('0x34')]=qs[_0x15fd('0x35')](_0x27d2c4[_0x15fd('0x2b')]['sort']);_0x6c213b['where']=qs['filters'](_[_0x15fd('0x36')](_0x27d2c4[_0x15fd('0x2b')],_0x218034[_0x15fd('0x2d')]),_0x4590a1);if(_0x27d2c4['query']['filter']){_0x6c213b[_0x15fd('0x37')]=_['merge'](_0x6c213b['where'],{'$or':_['map'](_0x4590a1,function(_0x2edb0d){if(_0x2edb0d[_0x15fd('0x38')]!==_0x15fd('0x39')){var _0x59d0d7={};_0x59d0d7[_0x2edb0d[_0x15fd('0x23')]]={'$like':'%'+_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x3a')]+'%'};return _0x59d0d7;}})});}_0x6c213b=_['merge']({},_0x6c213b,_0x27d2c4[_0x15fd('0x3b')]);var _0x1c4d40={'where':_0x6c213b[_0x15fd('0x37')]};return db[_0x15fd('0x27')][_0x15fd('0x3c')](_0x1c4d40)[_0x15fd('0x1f')](function(_0x19a29f){_0xe650a3[_0x15fd('0x3c')]=_0x19a29f;if(_0x27d2c4[_0x15fd('0x2b')]['includeAll']){_0x6c213b[_0x15fd('0x3d')]=[{'all':!![]}];}return db[_0x15fd('0x27')][_0x15fd('0x3e')](_0x6c213b);})[_0x15fd('0x1f')](function(_0x2d2b6f){_0xe650a3[_0x15fd('0x3f')]=_0x2d2b6f;return _0xe650a3;})[_0x15fd('0x1f')](respondWithFilteredResult(_0x233ed3,_0x6c213b))[_0x15fd('0x40')](handleError(_0x233ed3,null));};exports[_0x15fd('0x41')]=function(_0x104eef,_0x2eb6b6){var _0x145eab={'raw':![],'where':{'id':_0x104eef[_0x15fd('0x42')]['id']}},_0x269aae={};_0x269aae[_0x15fd('0x2a')]=_['keys'](db[_0x15fd('0x27')][_0x15fd('0x43')]);_0x269aae[_0x15fd('0x2b')]=_[_0x15fd('0x2c')](_0x104eef[_0x15fd('0x2b')]);_0x269aae[_0x15fd('0x2d')]=_[_0x15fd('0x2e')](_0x269aae[_0x15fd('0x2a')],_0x269aae['query']);_0x145eab['attributes']=_[_0x15fd('0x2e')](_0x269aae['model'],qs[_0x15fd('0x30')](_0x104eef[_0x15fd('0x2b')]['fields']));_0x145eab[_0x15fd('0x2f')]=_0x145eab[_0x15fd('0x2f')][_0x15fd('0x31')]?_0x145eab[_0x15fd('0x2f')]:_0x269aae[_0x15fd('0x2a')];if(_0x104eef[_0x15fd('0x2b')]['includeAll']){_0x145eab[_0x15fd('0x3d')]=[{'all':!![]}];}_0x145eab=_[_0x15fd('0x44')]({},_0x145eab,_0x104eef[_0x15fd('0x3b')]);return db[_0x15fd('0x27')][_0x15fd('0x45')](_0x145eab)[_0x15fd('0x1f')](handleEntityNotFound(_0x2eb6b6,null))[_0x15fd('0x1f')](respondWithResult(_0x2eb6b6,null))[_0x15fd('0x40')](handleError(_0x2eb6b6,null));};exports[_0x15fd('0x46')]=function(_0x1d3beb,_0x16b4f5){return db[_0x15fd('0x27')]['create'](_0x1d3beb[_0x15fd('0x47')],{})['then'](respondWithResult(_0x16b4f5,0xc9))[_0x15fd('0x40')](handleError(_0x16b4f5,null));};exports[_0x15fd('0x1e')]=function(_0xeb1e06,_0x5a1f32){if(_0xeb1e06[_0x15fd('0x47')]['id']){delete _0xeb1e06[_0x15fd('0x47')]['id'];}delete _0xeb1e06[_0x15fd('0x47')][_0x15fd('0x48')];delete _0xeb1e06['body'][_0x15fd('0x49')];delete _0xeb1e06[_0x15fd('0x47')][_0x15fd('0x4a')];delete _0xeb1e06[_0x15fd('0x47')]['value'];return db[_0x15fd('0x27')][_0x15fd('0x45')]({'where':{'id':_0xeb1e06['params']['id']}})['then'](handleEntityNotFound(_0x5a1f32,null))['then'](saveUpdates(_0xeb1e06[_0x15fd('0x47')],null))[_0x15fd('0x1f')](respondWithResult(_0x5a1f32,null))[_0x15fd('0x40')](handleError(_0x5a1f32,null));};exports[_0x15fd('0x4b')]=function(_0x292174,_0x33a128){return db['ScreenRecording'][_0x15fd('0x4b')]()[_0x15fd('0x1f')](respondWithResult(_0x33a128,null))[_0x15fd('0x40')](handleError(_0x33a128,null));};exports['download']=function(_0x30c4e3,_0x4dd1d5,_0x3a48e7){var _0x2886e3=require(_0x15fd('0x4c'));var _0x42d4de=![];var _0x332df7={};if(_0x30c4e3[_0x15fd('0x2b')][_0x15fd('0x38')]&&_0x30c4e3[_0x15fd('0x2b')][_0x15fd('0x38')]===_0x15fd('0x4d')){_0x332df7[_0x15fd('0x4d')]=_0x30c4e3[_0x15fd('0x42')]['id'];}else{_0x332df7['id']=_0x30c4e3[_0x15fd('0x42')]['id'];}return db['ScreenRecording'][_0x15fd('0x45')]({'where':_0x332df7,'attributes':['id','value'],'raw':!![]})[_0x15fd('0x1f')](handleEntityNotFound(_0x4dd1d5,null))['then'](function(_0x25bdea){if(_0x25bdea){var _0x1fac7f=path[_0x15fd('0x4e')](config['root'],'server/files/screen_recordings',_0x25bdea[_0x15fd('0x4f')]);var _0xc9c5ef=util[_0x15fd('0x50')](_0x15fd('0x51'),_0x1fac7f);if(fs['existsSync'](_0xc9c5ef)){_0x42d4de=!![];return _0x2886e3[_0x15fd('0x52')](_0xc9c5ef,_0x1fac7f,config[_0x15fd('0x53')][_0x15fd('0x54')])[_0x15fd('0x1f')](function(){return _0x25bdea;});}return _0x25bdea;}})[_0x15fd('0x1f')](function(_0x321fe7){if(_0x321fe7){var _0x59b3b4=path[_0x15fd('0x4e')](config[_0x15fd('0x55')],_0x15fd('0x56'),_0x321fe7[_0x15fd('0x4f')]);if(!fs[_0x15fd('0x57')](_0x59b3b4)){throw new db[(_0x15fd('0x58'))]['ValidationError']('ScreenRecording\x20not\x20found');}if(_0x321fe7[_0x15fd('0x59')]){return _0x4dd1d5[_0x15fd('0x5a')](_0x59b3b4,_0x321fe7['filename']+path[_0x15fd('0x5b')](_0x59b3b4),function(){if(_0x42d4de){fs[_0x15fd('0x5c')](_0x59b3b4);}});}else{return _0x4dd1d5['download'](_0x59b3b4,function(_0x285fd5){if(_0x42d4de){fs[_0x15fd('0x5c')](_0x59b3b4);}});}}})[_0x15fd('0x40')](function(_0x53bfd7){if(_0x53bfd7[_0x15fd('0x5d')]===_0x15fd('0x5e')){_0x4dd1d5[_0x15fd('0x17')](0x194)[_0x15fd('0x24')](_0x15fd('0x5f'));}else{return handleError(_0x4dd1d5,null);}});};exports[_0x15fd('0x20')]=function(_0xa1bb5c,_0x290497){return db[_0x15fd('0x27')][_0x15fd('0x45')]({'where':{'id':_0xa1bb5c['params']['id']}})[_0x15fd('0x1f')](function(_0x3a26c8){if(_['isNil'](_0x3a26c8)){throw new ReferenceError('Entity\x20not\x20found');}return _0x3a26c8;})[_0x15fd('0x1f')](function(_0x39e6ee){var _0x2bd6ef=path[_0x15fd('0x4e')](config[_0x15fd('0x55')],_0x15fd('0x56'),_0x39e6ee['value']);logger[_0x15fd('0x60')](_0x15fd('0x61'),_0x2bd6ef);if(!_[_0x15fd('0x62')](_0x39e6ee[_0x15fd('0x4f')])&&fs[_0x15fd('0x57')](_0x2bd6ef)){logger[_0x15fd('0x60')](_0x15fd('0x63')+_0x2bd6ef+_0x15fd('0x64'));fs[_0x15fd('0x65')](_0x2bd6ef);}_0x2bd6ef=_0x2bd6ef+_0x15fd('0x66');if(!_[_0x15fd('0x62')](_0x39e6ee['value'])&&fs['existsSync'](_0x2bd6ef)){logger[_0x15fd('0x60')](_0x15fd('0x63')+_0x2bd6ef+_0x15fd('0x64'));fs[_0x15fd('0x65')](_0x2bd6ef);}return _0x39e6ee;})[_0x15fd('0x1f')](function(_0xfa3aa1){if(!_0xfa3aa1)throw new InternalError();return _0xfa3aa1[_0x15fd('0x20')]();})['then'](function(){_0x290497[_0x15fd('0x17')](0xcc)['end']();})[_0x15fd('0x40')](handleError(_0x290497,null));};
\ No newline at end of file
index a96cf06..1935b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26fc=['exports','screen_recordings','interactionid','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x57c9a0,_0x4d0a06){var _0x48443f=function(_0xd1b176){while(--_0xd1b176){_0x57c9a0['push'](_0x57c9a0['shift']());}};_0x48443f(++_0x4d0a06);}(_0x26fc,0xcf));var _0xc26f=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x26fc[_0xae7c2f];return _0x5d7001;};'use strict';var _=require('lodash');var util=require(_0xc26f('0x0'));var logger=require(_0xc26f('0x1'))(_0xc26f('0x2'));var moment=require(_0xc26f('0x3'));var BPromise=require(_0xc26f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc26f('0x5'));var rimraf=require(_0xc26f('0x6'));var config=require(_0xc26f('0x7'));var attributes=require(_0xc26f('0x8'));module[_0xc26f('0x9')]=function(_0x4a7072,_0x255107){return _0x4a7072['define']('ScreenRecording',attributes,{'tableName':_0xc26f('0xa'),'paranoid':![],'indexes':[{'name':_0xc26f('0xb'),'fields':[_0xc26f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5bd6=['define','ScreenRecording','interactionid','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','exports'];(function(_0x526a46,_0x119cc9){var _0x299cab=function(_0x49722b){while(--_0x49722b){_0x526a46['push'](_0x526a46['shift']());}};_0x299cab(++_0x119cc9);}(_0x5bd6,0x17d));var _0x65bd=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x5bd6[_0x2df507];return _0x1f7167;};'use strict';var _=require(_0x65bd('0x0'));var util=require(_0x65bd('0x1'));var logger=require(_0x65bd('0x2'))(_0x65bd('0x3'));var moment=require(_0x65bd('0x4'));var BPromise=require('bluebird');var rp=require(_0x65bd('0x5'));var fs=require('fs');var path=require(_0x65bd('0x6'));var rimraf=require(_0x65bd('0x7'));var config=require(_0x65bd('0x8'));var attributes=require(_0x65bd('0x9'));module[_0x65bd('0xa')]=function(_0x51e0bf,_0x53ce5c){return _0x51e0bf[_0x65bd('0xb')](_0x65bd('0xc'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0x65bd('0xd'),'fields':[_0x65bd('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 678a249..1f580d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d2=['moment','bluebird','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash'];(function(_0x2b4575,_0x398753){var _0x30ad1c=function(_0x28b9ef){while(--_0x28b9ef){_0x2b4575['push'](_0x2b4575['shift']());}};_0x30ad1c(++_0x398753);}(_0xd6d2,0x7d));var _0x2d6d=function(_0x33f369,_0x352976){_0x33f369=_0x33f369-0x0;var _0x77821d=_0xd6d2[_0x33f369];return _0x77821d;};'use strict';var _=require(_0x2d6d('0x0'));var util=require('util');var moment=require(_0x2d6d('0x1'));var BPromise=require(_0x2d6d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2d6d('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2d6d('0x4'))(_0x2d6d('0x5'));var config=require('../../config/environment');var jayson=require(_0x2d6d('0x6'));var client=jayson[_0x2d6d('0x7')][_0x2d6d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1bda02,_0x61dace,_0x2dc6a0){return new BPromise(function(_0x1b49a0,_0x5546a5){return client[_0x2d6d('0x9')](_0x1bda02,_0x2dc6a0)['then'](function(_0x25cb17){logger['info'](_0x2d6d('0xa'),_0x61dace,_0x2d6d('0xb'));logger[_0x2d6d('0xc')](_0x2d6d('0xd'),_0x61dace,_0x2d6d('0xb'),JSON[_0x2d6d('0xe')](_0x25cb17));if(_0x25cb17[_0x2d6d('0xf')]){if(_0x25cb17['error'][_0x2d6d('0x10')]===0x1f4){logger[_0x2d6d('0xf')](_0x2d6d('0xa'),_0x61dace,_0x25cb17[_0x2d6d('0xf')][_0x2d6d('0x11')]);return _0x5546a5(_0x25cb17[_0x2d6d('0xf')][_0x2d6d('0x11')]);}logger['error'](_0x2d6d('0xa'),_0x61dace,_0x25cb17[_0x2d6d('0xf')]['message']);return _0x1b49a0(_0x25cb17['error']['message']);}else{logger[_0x2d6d('0x12')](_0x2d6d('0xa'),_0x61dace,'request\x20sent');_0x1b49a0(_0x25cb17[_0x2d6d('0x13')][_0x2d6d('0x11')]);}})[_0x2d6d('0x14')](function(_0x1d4f95){logger[_0x2d6d('0xf')](_0x2d6d('0xa'),_0x61dace,_0x1d4f95);_0x5546a5(_0x1d4f95);});});}
\ No newline at end of file
+var _0x249a=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring'];(function(_0x44d9ab,_0x76bc69){var _0x31485e=function(_0x1e44ce){while(--_0x1e44ce){_0x44d9ab['push'](_0x44d9ab['shift']());}};_0x31485e(++_0x76bc69);}(_0x249a,0xad));var _0xa249=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x249a[_0x263a74];return _0x2aa86c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa249('0x0'));var BPromise=require(_0xa249('0x1'));var rs=require(_0xa249('0x2'));var fs=require('fs');var Redis=require(_0xa249('0x3'));var db=require(_0xa249('0x4'))['db'];var utils=require(_0xa249('0x5'));var logger=require('../../config/logger')(_0xa249('0x6'));var config=require(_0xa249('0x7'));var jayson=require(_0xa249('0x8'));var client=jayson['client'][_0xa249('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3fc1be,_0x2facb1,_0x2dc9c7){return new BPromise(function(_0x2708e2,_0xc44ba){return client[_0xa249('0xa')](_0x3fc1be,_0x2dc9c7)['then'](function(_0x33f187){logger[_0xa249('0xb')]('ScreenRecording,\x20%s,\x20%s',_0x2facb1,'request\x20sent');logger[_0xa249('0xc')](_0xa249('0xd'),_0x2facb1,_0xa249('0xe'),JSON[_0xa249('0xf')](_0x33f187));if(_0x33f187['error']){if(_0x33f187[_0xa249('0x10')][_0xa249('0x11')]===0x1f4){logger['error'](_0xa249('0x12'),_0x2facb1,_0x33f187[_0xa249('0x10')]['message']);return _0xc44ba(_0x33f187[_0xa249('0x10')][_0xa249('0x13')]);}logger[_0xa249('0x10')](_0xa249('0x12'),_0x2facb1,_0x33f187[_0xa249('0x10')][_0xa249('0x13')]);return _0x2708e2(_0x33f187['error'][_0xa249('0x13')]);}else{logger[_0xa249('0xb')](_0xa249('0x12'),_0x2facb1,_0xa249('0xe'));_0x2708e2(_0x33f187[_0xa249('0x14')][_0xa249('0x13')]);}})[_0xa249('0x15')](function(_0x4aaa72){logger[_0xa249('0x10')](_0xa249('0x12'),_0x2facb1,_0x4aaa72);_0xc44ba(_0x4aaa72);});});}
\ No newline at end of file
index a9c1eba..3f8abe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd139=['getPreferred','/:id/favicon','diskStorage','root','server/files/images/logos/','format','%s%s','originalname','post','single','file','addLogo','logologin','addLogoLogin','join','extname','addPreferred','favicon','addFavicon','update','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','isAuthenticated','index','get','/:id','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0xd139,0x190));var _0x9d13=function(_0x401a8b,_0x88935b){_0x401a8b=_0x401a8b-0x0;var _0x18397c=_0xd139[_0x401a8b];return _0x18397c;};'use strict';var multer=require(_0x9d13('0x0'));var util=require(_0x9d13('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9d13('0x2'));var router=express['Router']();var fs_extra=require(_0x9d13('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9d13('0x4'));var config=require(_0x9d13('0x5'));var controller=require(_0x9d13('0x6'));router['get']('/',auth[_0x9d13('0x7')](),controller[_0x9d13('0x8')]);router['get']('/now',controller['getDate']);router[_0x9d13('0x9')](_0x9d13('0xa'),controller['show']);router[_0x9d13('0x9')](_0x9d13('0xb'),controller[_0x9d13('0xc')]);router[_0x9d13('0x9')](_0x9d13('0xd'),controller[_0x9d13('0xe')]);router[_0x9d13('0x9')](_0x9d13('0xf'),controller[_0x9d13('0x10')]);router[_0x9d13('0x9')](_0x9d13('0x11'),controller[_0x9d13('0x12')]);router[_0x9d13('0x9')](_0x9d13('0x13'),controller['getFavicon']);var upload=multer({'storage':multer[_0x9d13('0x14')]({'destination':function(_0xed2967,_0x3fed22,_0x37ba9d){_0x37ba9d(null,path['join'](config[_0x9d13('0x15')],_0x9d13('0x16')));},'filename':function(_0x51a370,_0xdf2e5b,_0x3bc84c){_0x3bc84c(null,util[_0x9d13('0x17')](_0x9d13('0x18'),'logo',path['extname'](_0xdf2e5b[_0x9d13('0x19')])));}})});router[_0x9d13('0x1a')](_0x9d13('0xb'),upload[_0x9d13('0x1b')](_0x9d13('0x1c')),controller[_0x9d13('0x1d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xae88ce,_0x49f54e,_0x34fdd4){_0x34fdd4(null,path['join'](config[_0x9d13('0x15')],_0x9d13('0x16')));},'filename':function(_0x30ce78,_0x29a92d,_0x593e3a){_0x593e3a(null,util[_0x9d13('0x17')](_0x9d13('0x18'),_0x9d13('0x1e'),path['extname'](_0x29a92d['originalname'])));}})});router[_0x9d13('0x1a')]('/:id/logo_login',upload[_0x9d13('0x1b')](_0x9d13('0x1c')),controller[_0x9d13('0x1f')]);var upload=multer({'storage':multer[_0x9d13('0x14')]({'destination':function(_0x29033d,_0x345a8c,_0x38f3a5){_0x38f3a5(null,path[_0x9d13('0x20')](config[_0x9d13('0x15')],_0x9d13('0x16')));},'filename':function(_0x109e96,_0x412950,_0x23a43b){_0x23a43b(null,util[_0x9d13('0x17')](_0x9d13('0x18'),'preferred',path[_0x9d13('0x21')](_0x412950[_0x9d13('0x19')])));}})});router['post'](_0x9d13('0x11'),upload['single'](_0x9d13('0x1c')),controller[_0x9d13('0x22')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5a7646,_0x39eec2,_0x322c2c){_0x322c2c(null,path[_0x9d13('0x20')](config[_0x9d13('0x15')],_0x9d13('0x16')));},'filename':function(_0x5d1f7b,_0x24592d,_0x57425f){_0x57425f(null,util[_0x9d13('0x17')]('%s%s',_0x9d13('0x23'),path[_0x9d13('0x21')](_0x24592d[_0x9d13('0x19')])));}})});router['post'](_0x9d13('0x13'),upload[_0x9d13('0x1b')](_0x9d13('0x1c')),controller[_0x9d13('0x24')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9d13('0x25')]);module['exports']=router;
\ No newline at end of file
+var _0x55b9=['put','exports','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','/:id','show','getLogoLogin','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','logo','extname','originalname','post','/:id/logo','file','%s%s','logologin','/:id/logo_login','single','addLogoLogin','preferred','addPreferred','favicon','addFavicon'];(function(_0x43119a,_0x3a1294){var _0x1cca88=function(_0x37a8e5){while(--_0x37a8e5){_0x43119a['push'](_0x43119a['shift']());}};_0x1cca88(++_0x3a1294);}(_0x55b9,0x80));var _0x955b=function(_0x4fa1b3,_0x3481cd){_0x4fa1b3=_0x4fa1b3-0x0;var _0x4c01f9=_0x55b9[_0x4fa1b3];return _0x4c01f9;};'use strict';var multer=require('multer');var util=require(_0x955b('0x0'));var path=require(_0x955b('0x1'));var timeout=require(_0x955b('0x2'));var express=require(_0x955b('0x3'));var router=express[_0x955b('0x4')]();var fs_extra=require(_0x955b('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x955b('0x6'));var controller=require(_0x955b('0x7'));router[_0x955b('0x8')]('/',auth[_0x955b('0x9')](),controller[_0x955b('0xa')]);router[_0x955b('0x8')](_0x955b('0xb'),controller['getDate']);router[_0x955b('0x8')](_0x955b('0xc'),controller[_0x955b('0xd')]);router[_0x955b('0x8')]('/:id/logo',controller['getLogo']);router[_0x955b('0x8')]('/:id/logo_login',controller[_0x955b('0xe')]);router[_0x955b('0x8')]('/:id/gdpr',controller[_0x955b('0xf')]);router[_0x955b('0x8')](_0x955b('0x10'),controller[_0x955b('0x11')]);router[_0x955b('0x8')](_0x955b('0x12'),controller[_0x955b('0x13')]);var upload=multer({'storage':multer[_0x955b('0x14')]({'destination':function(_0xa3e78,_0x595a80,_0x43aaae){_0x43aaae(null,path[_0x955b('0x15')](config[_0x955b('0x16')],_0x955b('0x17')));},'filename':function(_0x46ab88,_0x3d97e0,_0x33ef67){_0x33ef67(null,util[_0x955b('0x18')]('%s%s',_0x955b('0x19'),path[_0x955b('0x1a')](_0x3d97e0[_0x955b('0x1b')])));}})});router[_0x955b('0x1c')](_0x955b('0x1d'),upload['single'](_0x955b('0x1e')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x613739,_0x204b51,_0x5539de){_0x5539de(null,path[_0x955b('0x15')](config[_0x955b('0x16')],_0x955b('0x17')));},'filename':function(_0x1b7f00,_0x4571cb,_0x2dd897){_0x2dd897(null,util[_0x955b('0x18')](_0x955b('0x1f'),_0x955b('0x20'),path[_0x955b('0x1a')](_0x4571cb[_0x955b('0x1b')])));}})});router[_0x955b('0x1c')](_0x955b('0x21'),upload[_0x955b('0x22')](_0x955b('0x1e')),controller[_0x955b('0x23')]);var upload=multer({'storage':multer[_0x955b('0x14')]({'destination':function(_0x38af10,_0x5c1765,_0x5cd369){_0x5cd369(null,path['join'](config[_0x955b('0x16')],_0x955b('0x17')));},'filename':function(_0x399e9c,_0x9778a8,_0x284470){_0x284470(null,util[_0x955b('0x18')](_0x955b('0x1f'),_0x955b('0x24'),path[_0x955b('0x1a')](_0x9778a8[_0x955b('0x1b')])));}})});router[_0x955b('0x1c')](_0x955b('0x10'),upload[_0x955b('0x22')](_0x955b('0x1e')),controller[_0x955b('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xa7f9a4,_0x2a29a4,_0xce13a4){_0xce13a4(null,path[_0x955b('0x15')](config['root'],_0x955b('0x17')));},'filename':function(_0x12c226,_0x4270b4,_0x5d0cd1){_0x5d0cd1(null,util[_0x955b('0x18')](_0x955b('0x1f'),_0x955b('0x26'),path[_0x955b('0x1a')](_0x4270b4['originalname'])));}})});router[_0x955b('0x1c')]('/:id/favicon',upload[_0x955b('0x22')](_0x955b('0x1e')),controller[_0x955b('0x27')]);router[_0x955b('0x28')]('/:id',auth['isAuthenticated'](),controller['update']);module[_0x955b('0x29')]=router;
\ No newline at end of file
index 14c0b44..e6cee3c 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(_0x463c67,_0x1dcfbe){var _0x4fd2ca=function(_0x86b23b){while(--_0x86b23b){_0x463c67['push'](_0x463c67['shift']());}};_0x4fd2ca(++_0x1dcfbe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
+var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x1b6827,_0x27ef7d){var _0x46ada0=function(_0x383f55){while(--_0x383f55){_0x1b6827['push'](_0x1b6827['shift']());}};_0x46ada0(++_0x27ef7d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
index 8a1aa80..bd60745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c89=['utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','stack','name','send','map','Setting','fieldName','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','addLogo','file','body','logo','filename','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','existsSync','root','toLower','default_logo.svg','default','upperFirst','custom','join','Sequelize','ValidationError','download','defaultFavicon','default_loginLogo.svg','\x20not\x20found','gdpr','securePassword','addPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate'];(function(_0x19b5f4,_0x159355){var _0x3b71c9=function(_0xa35bd0){while(--_0xa35bd0){_0x19b5f4['push'](_0x19b5f4['shift']());}};_0x3b71c9(++_0x159355);}(_0x9c89,0x7c));var _0x99c8=function(_0x40d3b9,_0x1eeb76){_0x40d3b9=_0x40d3b9-0x0;var _0x5a3de3=_0x9c89[_0x40d3b9];return _0x5a3de3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x99c8('0x0'));var jsonpatch=require(_0x99c8('0x1'));var rp=require('request-promise');var moment=require(_0x99c8('0x2'));var BPromise=require(_0x99c8('0x3'));var Mustache=require('mustache');var util=require(_0x99c8('0x4'));var path=require('path');var sox=require(_0x99c8('0x5'));var csv=require(_0x99c8('0x6'));var ejs=require(_0x99c8('0x7'));var fs=require('fs');var fs_extra=require(_0x99c8('0x8'));var _=require(_0x99c8('0x9'));var squel=require(_0x99c8('0xa'));var crypto=require(_0x99c8('0xb'));var jsforce=require(_0x99c8('0xc'));var deskjs=require(_0x99c8('0xd'));var toCsv=require(_0x99c8('0x6'));var querystring=require(_0x99c8('0xe'));var Papa=require('papaparse');var Redis=require(_0x99c8('0xf'));var authService=require(_0x99c8('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x99c8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x99c8('0x12'))('api');var utils=require(_0x99c8('0x13'));var config=require(_0x99c8('0x14'));var licenseUtil=require(_0x99c8('0x15'));var db=require(_0x99c8('0x16'))['db'];var jayson=require(_0x99c8('0x17'));var client=jayson['client'][_0x99c8('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x2ac09f,_0x54d30a,_0x23e4bc,_0x43996f){return new BPromise(function(_0x5e3bc1,_0x20dd2c){var _0x21a86d=_0x43996f||client;return _0x21a86d[_0x99c8('0x19')](_0x2ac09f,_0x23e4bc)[_0x99c8('0x1a')](function(_0x299130){logger[_0x99c8('0x1b')](_0x99c8('0x1c'),_0x54d30a,'request\x20sent');logger[_0x99c8('0x1d')](_0x99c8('0x1e'),_0x54d30a,_0x99c8('0x1f'),JSON[_0x99c8('0x20')](_0x299130));if(_0x299130[_0x99c8('0x21')]){if(_0x299130[_0x99c8('0x21')]['code']===0x1f4){logger[_0x99c8('0x21')]('Setting,\x20%s,\x20%s',_0x54d30a,_0x299130[_0x99c8('0x21')]['message']);return _0x20dd2c(_0x299130[_0x99c8('0x21')]['message']);}logger[_0x99c8('0x21')](_0x99c8('0x1c'),_0x54d30a,_0x299130[_0x99c8('0x21')][_0x99c8('0x22')]);return _0x5e3bc1(_0x299130[_0x99c8('0x21')][_0x99c8('0x22')]);}else{logger[_0x99c8('0x1b')]('Setting,\x20%s,\x20%s',_0x54d30a,'request\x20sent');_0x5e3bc1(_0x299130[_0x99c8('0x23')]['message']);}})[_0x99c8('0x24')](function(_0xb75b7c){logger[_0x99c8('0x21')](_0x99c8('0x1c'),_0x54d30a,_0xb75b7c);_0x20dd2c(_0xb75b7c);});});}function respondWithStatusCode(_0x2f886d,_0x45ce31){_0x45ce31=_0x45ce31||0xcc;return function(_0x26480f){if(_0x26480f){return _0x2f886d[_0x99c8('0x25')](_0x45ce31);}return _0x2f886d[_0x99c8('0x26')](_0x45ce31)[_0x99c8('0x27')]();};}function respondWithResult(_0x2d042e,_0xcd2d83){_0xcd2d83=_0xcd2d83||0xc8;return function(_0x3c3c51){if(_0x3c3c51){return _0x2d042e['status'](_0xcd2d83)[_0x99c8('0x28')](_0x3c3c51);}};}function respondWithFilteredResult(_0x2aed8d,_0x58f42b){return function(_0x4ba613){if(_0x4ba613){var _0x124058=typeof _0x58f42b[_0x99c8('0x29')]===_0x99c8('0x2a')&&typeof _0x58f42b[_0x99c8('0x2b')]===_0x99c8('0x2a');var _0x311c62=_0x4ba613[_0x99c8('0x2c')];var _0x240838=_0x124058?0x0:_0x58f42b[_0x99c8('0x29')];var _0x3ea205=_0x124058?_0x4ba613['count']:_0x58f42b['offset']+_0x58f42b[_0x99c8('0x2b')];var _0x57ad05;if(_0x3ea205>=_0x311c62){_0x3ea205=_0x311c62;_0x57ad05=0xc8;}else{_0x57ad05=0xce;}_0x2aed8d[_0x99c8('0x26')](_0x57ad05);return _0x2aed8d[_0x99c8('0x2d')](_0x99c8('0x2e'),_0x240838+'-'+_0x3ea205+'/'+_0x311c62)[_0x99c8('0x28')](_0x4ba613);}return null;};}function patchUpdates(_0x7e8161){return function(_0x204380){try{jsonpatch['apply'](_0x204380,_0x7e8161,!![]);}catch(_0x1a1f4c){return BPromise[_0x99c8('0x2f')](_0x1a1f4c);}return _0x204380[_0x99c8('0x30')]();};}function saveUpdates(_0xff564e,_0x5eaadd){return function(_0xb649a7){if(_0xb649a7){return _0xb649a7[_0x99c8('0x31')](_0xff564e)[_0x99c8('0x1a')](function(_0x22dad2){return _0x22dad2;});}return null;};}function removeEntity(_0x5b9ba8,_0x27bfba){return function(_0x220dfd){if(_0x220dfd){return _0x220dfd['destroy']()['then'](function(){_0x5b9ba8[_0x99c8('0x26')](0xcc)[_0x99c8('0x27')]();});}};}function handleEntityNotFound(_0x37ff50,_0x2881a){return function(_0x309fc8){if(!_0x309fc8){_0x37ff50[_0x99c8('0x25')](0x194);}return _0x309fc8;};}function handleError(_0x5c56cc,_0x1d82f3){_0x1d82f3=_0x1d82f3||0x1f4;return function(_0x398d9e){logger[_0x99c8('0x21')](_0x398d9e[_0x99c8('0x32')]);if(_0x398d9e[_0x99c8('0x33')]){delete _0x398d9e[_0x99c8('0x33')];}_0x5c56cc[_0x99c8('0x26')](_0x1d82f3)[_0x99c8('0x34')](_0x398d9e);};}exports['index']=function(_0x5f20f8,_0x19fcee){var _0x19a3f8={},_0x2bdee3={},_0x1480c7={'count':0x0,'rows':[]};var _0x33b929=_[_0x99c8('0x35')](db[_0x99c8('0x36')]['rawAttributes'],function(_0x5dd296){return{'name':_0x5dd296[_0x99c8('0x37')],'type':_0x5dd296['type']['key']};});_0x2bdee3[_0x99c8('0x38')]=_['map'](_0x33b929,_0x99c8('0x33'));_0x2bdee3[_0x99c8('0x39')]=_[_0x99c8('0x3a')](_0x5f20f8[_0x99c8('0x39')]);_0x2bdee3['filters']=_['intersection'](_0x2bdee3[_0x99c8('0x38')],_0x2bdee3[_0x99c8('0x39')]);_0x19a3f8[_0x99c8('0x3b')]=_[_0x99c8('0x3c')](_0x2bdee3[_0x99c8('0x38')],qs['fields'](_0x5f20f8[_0x99c8('0x39')][_0x99c8('0x3d')]));_0x19a3f8['attributes']=_0x19a3f8['attributes'][_0x99c8('0x3e')]?_0x19a3f8[_0x99c8('0x3b')]:_0x2bdee3['model'];if(!_0x5f20f8[_0x99c8('0x39')]['hasOwnProperty'](_0x99c8('0x3f'))){_0x19a3f8[_0x99c8('0x2b')]=qs[_0x99c8('0x2b')](_0x5f20f8['query']['limit']);_0x19a3f8[_0x99c8('0x29')]=qs[_0x99c8('0x29')](_0x5f20f8[_0x99c8('0x39')][_0x99c8('0x29')]);}_0x19a3f8[_0x99c8('0x40')]=qs[_0x99c8('0x41')](_0x5f20f8[_0x99c8('0x39')]['sort']);_0x19a3f8[_0x99c8('0x42')]=qs[_0x99c8('0x43')](_[_0x99c8('0x44')](_0x5f20f8[_0x99c8('0x39')],_0x2bdee3[_0x99c8('0x43')]),_0x33b929);if(_0x5f20f8[_0x99c8('0x39')]['filter']){_0x19a3f8['where']=_[_0x99c8('0x45')](_0x19a3f8[_0x99c8('0x42')],{'$or':_[_0x99c8('0x35')](_0x33b929,function(_0x11ac31){if(_0x11ac31[_0x99c8('0x46')]!==_0x99c8('0x47')){var _0x17a9c8={};_0x17a9c8[_0x11ac31[_0x99c8('0x33')]]={'$like':'%'+_0x5f20f8[_0x99c8('0x39')][_0x99c8('0x48')]+'%'};return _0x17a9c8;}})});}_0x19a3f8=_[_0x99c8('0x45')]({},_0x19a3f8,_0x5f20f8[_0x99c8('0x49')]);var _0x37c689={'where':_0x19a3f8[_0x99c8('0x42')]};return db[_0x99c8('0x36')][_0x99c8('0x2c')](_0x37c689)['then'](function(_0xed5c6e){_0x1480c7[_0x99c8('0x2c')]=_0xed5c6e;if(_0x5f20f8[_0x99c8('0x39')][_0x99c8('0x4a')]){_0x19a3f8[_0x99c8('0x4b')]=[{'all':!![]}];}return db[_0x99c8('0x36')][_0x99c8('0x4c')](_0x19a3f8);})[_0x99c8('0x1a')](function(_0x2ac887){_0x1480c7[_0x99c8('0x4d')]=_0x2ac887;return _0x1480c7;})['then'](respondWithFilteredResult(_0x19fcee,_0x19a3f8))['catch'](handleError(_0x19fcee,null));};exports[_0x99c8('0x4e')]=function(_0x238029,_0x3a212a){var _0xb89ab0={'raw':![],'where':{'id':_0x238029[_0x99c8('0x4f')]['id']}},_0x50c523={};_0x50c523[_0x99c8('0x38')]=_['keys'](db[_0x99c8('0x36')][_0x99c8('0x50')]);_0x50c523['query']=_[_0x99c8('0x3a')](_0x238029[_0x99c8('0x39')]);_0x50c523['filters']=_[_0x99c8('0x3c')](_0x50c523[_0x99c8('0x38')],_0x50c523['query']);_0xb89ab0[_0x99c8('0x3b')]=_[_0x99c8('0x3c')](_0x50c523[_0x99c8('0x38')],qs[_0x99c8('0x3d')](_0x238029[_0x99c8('0x39')][_0x99c8('0x3d')]));_0xb89ab0[_0x99c8('0x3b')]=_0xb89ab0[_0x99c8('0x3b')][_0x99c8('0x3e')]?_0xb89ab0[_0x99c8('0x3b')]:_0x50c523[_0x99c8('0x38')];if(_0x238029[_0x99c8('0x39')][_0x99c8('0x4a')]){_0xb89ab0[_0x99c8('0x4b')]=[{'all':!![]}];}_0xb89ab0=_[_0x99c8('0x45')]({},_0xb89ab0,_0x238029['options']);return db[_0x99c8('0x36')][_0x99c8('0x51')](_0xb89ab0)[_0x99c8('0x1a')](handleEntityNotFound(_0x3a212a,null))[_0x99c8('0x1a')](respondWithResult(_0x3a212a,null))['catch'](handleError(_0x3a212a,null));};exports[_0x99c8('0x31')]=function(_0x1f9440,_0x44b3ee){if(_0x1f9440['body']['id']){delete _0x1f9440['body']['id'];}return db[_0x99c8('0x36')][_0x99c8('0x51')]({'where':{'id':_0x1f9440[_0x99c8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x44b3ee,null))[_0x99c8('0x1a')](saveUpdates(_0x1f9440['body'],null))[_0x99c8('0x1a')](respondWithResult(_0x44b3ee,null))['catch'](handleError(_0x44b3ee,null));};exports[_0x99c8('0x52')]=function(_0x33dd33,_0x2458f2,_0x2ba62d){if(_0x33dd33['file']&&_0x33dd33[_0x99c8('0x53')]['filename']){_0x33dd33[_0x99c8('0x54')][_0x99c8('0x55')]=_0x33dd33[_0x99c8('0x53')][_0x99c8('0x56')];}return db['Setting']['find']({'where':{'id':_0x33dd33['params']['id']}})[_0x99c8('0x1a')](handleEntityNotFound(_0x2458f2,null))['then'](saveUpdates(_0x33dd33[_0x99c8('0x54')],null))[_0x99c8('0x1a')](respondWithResult(_0x2458f2,null))[_0x99c8('0x24')](handleError(_0x2458f2,null));};exports['addLogoLogin']=function(_0xc46023,_0x59533d,_0x391da6){if(_0xc46023[_0x99c8('0x53')]&&_0xc46023[_0x99c8('0x53')]['filename']){_0xc46023[_0x99c8('0x54')][_0x99c8('0x57')]=_0xc46023[_0x99c8('0x53')]['filename'];}return db[_0x99c8('0x36')][_0x99c8('0x51')]({'where':{'id':_0xc46023[_0x99c8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x59533d,null))[_0x99c8('0x1a')](saveUpdates(_0xc46023[_0x99c8('0x54')],null))[_0x99c8('0x1a')](respondWithResult(_0x59533d,null))[_0x99c8('0x24')](handleError(_0x59533d,null));};var utilLicense=require('../../config/license/util');exports[_0x99c8('0x58')]=function(_0x10c240,_0x403c86,_0x5379c2){var _0x1b52e1=_0x99c8('0x59');var _0x2fc9a4={'custom':![]};return utilLicense[_0x99c8('0x5a')]()[_0x99c8('0x1a')](function(_0x23b300){if(_0x23b300){_0x2fc9a4=_0x23b300;}return db[_0x99c8('0x36')]['find']({'where':{'id':_0x10c240[_0x99c8('0x4f')]['id']},'attributes':[_0x99c8('0x55'),_0x99c8('0x57'),_0x99c8('0x5b'),_0x99c8('0x5c'),_0x99c8('0x5d'),_0x99c8('0x5e'),_0x99c8('0x5f'),'defaultFavicon'],'raw':!![]});})[_0x99c8('0x1a')](handleEntityNotFound(_0x403c86,null))[_0x99c8('0x1a')](function(_0xd049){if(_0xd049){var _0x1ba201=_0xd049[_0x99c8('0x55')]&&fs[_0x99c8('0x60')](path['join'](config[_0x99c8('0x61')],_0x1b52e1,_['toLower'](_0xd049['logo'])))?path['join'](config['root'],_0x1b52e1,_[_0x99c8('0x62')](_0xd049[_0x99c8('0x55')])):path['join'](config[_0x99c8('0x61')],_0x1b52e1,_[_0x99c8('0x62')](_0x99c8('0x63')));var _0x50e0f3=_0x99c8('0x64')+_[_0x99c8('0x65')](_0x99c8('0x55'));if(_0xd049[_0x50e0f3]||!_0x2fc9a4[_0x99c8('0x66')]){_0x1ba201=path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x1b52e1,_[_0x99c8('0x62')](_0x99c8('0x63')));}if(!fs[_0x99c8('0x60')](_0x1ba201)){throw new db[(_0x99c8('0x68'))][(_0x99c8('0x69'))](_['upperFirst']('logo')+'\x20not\x20found');}return _0x403c86[_0x99c8('0x6a')](_0x1ba201);}})['catch'](handleError(_0x403c86,null));};var utilLicense=require(_0x99c8('0x15'));exports['getLogoLogin']=function(_0x194c79,_0x21cbce,_0x5c761a){var _0x42954a=_0x99c8('0x59');var _0x24b71a={'custom':![]};return utilLicense[_0x99c8('0x5a')]()['then'](function(_0x42118a){if(_0x42118a){_0x24b71a=_0x42118a;}return db[_0x99c8('0x36')][_0x99c8('0x51')]({'where':{'id':_0x194c79[_0x99c8('0x4f')]['id']},'attributes':['logo',_0x99c8('0x57'),_0x99c8('0x5b'),_0x99c8('0x5c'),_0x99c8('0x5d'),_0x99c8('0x5e'),'defaultPreferred',_0x99c8('0x6b')],'raw':!![]});})[_0x99c8('0x1a')](handleEntityNotFound(_0x21cbce,null))[_0x99c8('0x1a')](function(_0x5c5621){if(_0x5c5621){var _0x4f0e3e=_0x5c5621[_0x99c8('0x57')]&&fs[_0x99c8('0x60')](path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x42954a,_[_0x99c8('0x62')](_0x5c5621[_0x99c8('0x57')])))?path['join'](config[_0x99c8('0x61')],_0x42954a,_[_0x99c8('0x62')](_0x5c5621[_0x99c8('0x57')])):path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x42954a,_[_0x99c8('0x62')](_0x99c8('0x6c')));var _0x3ff5ed=_0x99c8('0x64')+_[_0x99c8('0x65')]('loginLogo');if(_0x5c5621[_0x3ff5ed]||!_0x24b71a[_0x99c8('0x66')]){_0x4f0e3e=path['join'](config[_0x99c8('0x61')],_0x42954a,_['toLower'](_0x99c8('0x6c')));}if(!fs['existsSync'](_0x4f0e3e)){throw new db[(_0x99c8('0x68'))][(_0x99c8('0x69'))](_[_0x99c8('0x65')]('loginLogo')+_0x99c8('0x6d'));}return _0x21cbce['download'](_0x4f0e3e);}})[_0x99c8('0x24')](handleError(_0x21cbce,null));};exports[_0x99c8('0x6e')]=function(_0x4996a7,_0x35daf4){return db[_0x99c8('0x36')][_0x99c8('0x51')]({'where':{'id':_0x4996a7[_0x99c8('0x4f')]['id']},'attributes':[_0x99c8('0x6f')]})['then'](respondWithResult(_0x35daf4,null))[_0x99c8('0x24')](handleError(_0x35daf4,null));};exports[_0x99c8('0x70')]=function(_0x324ff2,_0x4e3be2,_0x178f59){if(_0x324ff2[_0x99c8('0x53')]&&_0x324ff2[_0x99c8('0x53')][_0x99c8('0x56')]){_0x324ff2['body']['preferred']=_0x324ff2[_0x99c8('0x53')][_0x99c8('0x56')];}return db[_0x99c8('0x36')][_0x99c8('0x51')]({'where':{'id':_0x324ff2[_0x99c8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4e3be2,null))['then'](saveUpdates(_0x324ff2[_0x99c8('0x54')],null))[_0x99c8('0x1a')](respondWithResult(_0x4e3be2,null))['catch'](handleError(_0x4e3be2,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x5678df,_0x2dc403,_0xea9ef9){var _0x402d17=_0x99c8('0x59');var _0x1cc0bc={'custom':![]};return utilLicense[_0x99c8('0x5a')]()[_0x99c8('0x1a')](function(_0x209ff6){if(_0x209ff6){_0x1cc0bc=_0x209ff6;}return db['Setting']['find']({'where':{'id':_0x5678df[_0x99c8('0x4f')]['id']},'attributes':['logo',_0x99c8('0x57'),_0x99c8('0x5b'),'favicon',_0x99c8('0x5d'),_0x99c8('0x5e'),_0x99c8('0x5f'),_0x99c8('0x6b')],'raw':!![]});})[_0x99c8('0x1a')](handleEntityNotFound(_0x2dc403,null))[_0x99c8('0x1a')](function(_0x5478dc){if(_0x5478dc){var _0x5d534c=_0x5478dc[_0x99c8('0x5b')]&&fs['existsSync'](path['join'](config[_0x99c8('0x61')],_0x402d17,_['toLower'](_0x5478dc[_0x99c8('0x5b')])))?path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x402d17,_['toLower'](_0x5478dc['preferred'])):path['join'](config[_0x99c8('0x61')],_0x402d17,_[_0x99c8('0x62')](_0x99c8('0x71')));var _0x615005=_0x99c8('0x64')+_['upperFirst'](_0x99c8('0x5b'));if(_0x5478dc[_0x615005]||!_0x1cc0bc['custom']||!_0x1cc0bc['preferred']){_0x5d534c=path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x402d17,_[_0x99c8('0x62')]('default_preferred.png'));}if(!fs['existsSync'](_0x5d534c)){throw new db[(_0x99c8('0x68'))]['ValidationError'](_[_0x99c8('0x65')](_0x99c8('0x5b'))+'\x20not\x20found');}return _0x2dc403[_0x99c8('0x6a')](_0x5d534c);}})[_0x99c8('0x24')](handleError(_0x2dc403,null));};exports[_0x99c8('0x72')]=function(_0x3a41ff,_0x43e5b7,_0x3ce1fb){if(_0x3a41ff[_0x99c8('0x53')]&&_0x3a41ff[_0x99c8('0x53')][_0x99c8('0x56')]){_0x3a41ff[_0x99c8('0x54')][_0x99c8('0x5c')]=_0x3a41ff[_0x99c8('0x53')][_0x99c8('0x56')];}return db['Setting'][_0x99c8('0x51')]({'where':{'id':_0x3a41ff['params']['id']}})[_0x99c8('0x1a')](handleEntityNotFound(_0x43e5b7,null))[_0x99c8('0x1a')](saveUpdates(_0x3a41ff['body'],null))[_0x99c8('0x1a')](respondWithResult(_0x43e5b7,null))[_0x99c8('0x24')](handleError(_0x43e5b7,null));};var utilLicense=require(_0x99c8('0x15'));exports[_0x99c8('0x73')]=function(_0x110de4,_0x769a17,_0x3704f7){var _0x226dda=_0x99c8('0x59');var _0x3ad08a={'custom':![]};return utilLicense[_0x99c8('0x5a')]()[_0x99c8('0x1a')](function(_0x3829ab){if(_0x3829ab){_0x3ad08a=_0x3829ab;}return db['Setting'][_0x99c8('0x51')]({'where':{'id':_0x110de4[_0x99c8('0x4f')]['id']},'attributes':[_0x99c8('0x55'),_0x99c8('0x57'),_0x99c8('0x5b'),_0x99c8('0x5c'),_0x99c8('0x5d'),_0x99c8('0x5e'),_0x99c8('0x5f'),_0x99c8('0x6b')],'raw':!![]});})[_0x99c8('0x1a')](handleEntityNotFound(_0x769a17,null))['then'](function(_0x5658ca){if(_0x5658ca){var _0x30f3b3=_0x5658ca[_0x99c8('0x5c')]&&fs[_0x99c8('0x60')](path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x226dda,_[_0x99c8('0x62')](_0x5658ca[_0x99c8('0x5c')])))?path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x226dda,_[_0x99c8('0x62')](_0x5658ca[_0x99c8('0x5c')])):path['join'](config['root'],_0x226dda,_[_0x99c8('0x62')](_0x99c8('0x74')));var _0x140625=_0x99c8('0x64')+_['upperFirst'](_0x99c8('0x5c'));if(_0x5658ca[_0x140625]||!_0x3ad08a[_0x99c8('0x66')]){_0x30f3b3=path[_0x99c8('0x67')](config[_0x99c8('0x61')],_0x226dda,_[_0x99c8('0x62')](_0x99c8('0x74')));}if(!fs[_0x99c8('0x60')](_0x30f3b3)){throw new db[(_0x99c8('0x68'))][(_0x99c8('0x69'))](_[_0x99c8('0x65')](_0x99c8('0x5c'))+'\x20not\x20found');}return _0x769a17['download'](_0x30f3b3);}})[_0x99c8('0x24')](handleError(_0x769a17,null));};exports[_0x99c8('0x75')]=function(_0x3c4606,_0x432b6e){var _0x5e25e5={'offset':moment()[_0x99c8('0x76')]()};_0x5e25e5['now']=moment()[_0x99c8('0x76')](_0x5e25e5[_0x99c8('0x29')])[_0x99c8('0x77')](_0x99c8('0x78'));return _0x432b6e[_0x99c8('0x26')](0xc8)[_0x99c8('0x34')](_0x5e25e5);};
\ No newline at end of file
+var _0xf0db=['rawAttributes','fieldName','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','type','options','includeAll','rows','show','params','keys','include','body','find','file','filename','logo','addLogoLogin','loginLogo','getLogo','getLicense','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','join','root','toLower','default_logo.svg','existsSync','Sequelize','upperFirst','\x20not\x20found','download','server/files/images/logos','preferred','default','custom','ValidationError','gdpr','securePassword','getPreferred','default_preferred.png','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','update','destroy','stack','name','index','Setting'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf0db,0x12b));var _0xbf0d=function(_0x2efc19,_0xff8642){_0x2efc19=_0x2efc19-0x0;var _0x50c1f3=_0xf0db[_0x2efc19];return _0x50c1f3;};'use strict';var emlformat=require(_0xbf0d('0x0'));var rimraf=require(_0xbf0d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbf0d('0x2'));var rp=require(_0xbf0d('0x3'));var moment=require(_0xbf0d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbf0d('0x5'));var util=require(_0xbf0d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xbf0d('0x7'));var ejs=require(_0xbf0d('0x8'));var fs=require('fs');var fs_extra=require(_0xbf0d('0x9'));var _=require(_0xbf0d('0xa'));var squel=require('squel');var crypto=require(_0xbf0d('0xb'));var jsforce=require(_0xbf0d('0xc'));var deskjs=require(_0xbf0d('0xd'));var toCsv=require(_0xbf0d('0x7'));var querystring=require(_0xbf0d('0xe'));var Papa=require(_0xbf0d('0xf'));var Redis=require(_0xbf0d('0x10'));var authService=require(_0xbf0d('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbf0d('0x12'));var logger=require(_0xbf0d('0x13'))(_0xbf0d('0x14'));var utils=require(_0xbf0d('0x15'));var config=require(_0xbf0d('0x16'));var licenseUtil=require(_0xbf0d('0x17'));var db=require(_0xbf0d('0x18'))['db'];var jayson=require(_0xbf0d('0x19'));var client=jayson['client'][_0xbf0d('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x944006,_0x524565,_0xa968b9,_0x1ffb38){return new BPromise(function(_0x4e9399,_0x1b6bac){var _0x2e85b=_0x1ffb38||client;return _0x2e85b[_0xbf0d('0x1b')](_0x944006,_0xa968b9)[_0xbf0d('0x1c')](function(_0x35972e){logger[_0xbf0d('0x1d')](_0xbf0d('0x1e'),_0x524565,_0xbf0d('0x1f'));logger[_0xbf0d('0x20')](_0xbf0d('0x21'),_0x524565,_0xbf0d('0x1f'),JSON['stringify'](_0x35972e));if(_0x35972e[_0xbf0d('0x22')]){if(_0x35972e[_0xbf0d('0x22')][_0xbf0d('0x23')]===0x1f4){logger[_0xbf0d('0x22')](_0xbf0d('0x1e'),_0x524565,_0x35972e[_0xbf0d('0x22')][_0xbf0d('0x24')]);return _0x1b6bac(_0x35972e['error'][_0xbf0d('0x24')]);}logger['error'](_0xbf0d('0x1e'),_0x524565,_0x35972e[_0xbf0d('0x22')][_0xbf0d('0x24')]);return _0x4e9399(_0x35972e[_0xbf0d('0x22')]['message']);}else{logger[_0xbf0d('0x1d')](_0xbf0d('0x1e'),_0x524565,_0xbf0d('0x1f'));_0x4e9399(_0x35972e['result']['message']);}})[_0xbf0d('0x25')](function(_0x49c24b){logger[_0xbf0d('0x22')](_0xbf0d('0x1e'),_0x524565,_0x49c24b);_0x1b6bac(_0x49c24b);});});}function respondWithStatusCode(_0x43ca63,_0x213e66){_0x213e66=_0x213e66||0xcc;return function(_0x1d9724){if(_0x1d9724){return _0x43ca63[_0xbf0d('0x26')](_0x213e66);}return _0x43ca63[_0xbf0d('0x27')](_0x213e66)[_0xbf0d('0x28')]();};}function respondWithResult(_0x22aef0,_0x22f8c6){_0x22f8c6=_0x22f8c6||0xc8;return function(_0x31621d){if(_0x31621d){return _0x22aef0[_0xbf0d('0x27')](_0x22f8c6)[_0xbf0d('0x29')](_0x31621d);}};}function respondWithFilteredResult(_0x434687,_0x527dfe){return function(_0x10cf57){if(_0x10cf57){var _0x39837e=typeof _0x527dfe[_0xbf0d('0x2a')]===_0xbf0d('0x2b')&&typeof _0x527dfe['limit']===_0xbf0d('0x2b');var _0x4f6776=_0x10cf57[_0xbf0d('0x2c')];var _0x280098=_0x39837e?0x0:_0x527dfe[_0xbf0d('0x2a')];var _0x2adbc9=_0x39837e?_0x10cf57[_0xbf0d('0x2c')]:_0x527dfe[_0xbf0d('0x2a')]+_0x527dfe[_0xbf0d('0x2d')];var _0x37d362;if(_0x2adbc9>=_0x4f6776){_0x2adbc9=_0x4f6776;_0x37d362=0xc8;}else{_0x37d362=0xce;}_0x434687['status'](_0x37d362);return _0x434687['set'](_0xbf0d('0x2e'),_0x280098+'-'+_0x2adbc9+'/'+_0x4f6776)[_0xbf0d('0x29')](_0x10cf57);}return null;};}function patchUpdates(_0x4b29e1){return function(_0x290989){try{jsonpatch['apply'](_0x290989,_0x4b29e1,!![]);}catch(_0x535ef5){return BPromise[_0xbf0d('0x2f')](_0x535ef5);}return _0x290989[_0xbf0d('0x30')]();};}function saveUpdates(_0xcb0cb3,_0x4a2587){return function(_0x2dda96){if(_0x2dda96){return _0x2dda96[_0xbf0d('0x31')](_0xcb0cb3)[_0xbf0d('0x1c')](function(_0x106e91){return _0x106e91;});}return null;};}function removeEntity(_0x57f851,_0x37b30b){return function(_0x3c2e06){if(_0x3c2e06){return _0x3c2e06[_0xbf0d('0x32')]()['then'](function(){_0x57f851['status'](0xcc)[_0xbf0d('0x28')]();});}};}function handleEntityNotFound(_0x4fc7df,_0x3949ee){return function(_0x1b40a8){if(!_0x1b40a8){_0x4fc7df[_0xbf0d('0x26')](0x194);}return _0x1b40a8;};}function handleError(_0x1ac94d,_0x1c3fee){_0x1c3fee=_0x1c3fee||0x1f4;return function(_0x330b37){logger['error'](_0x330b37[_0xbf0d('0x33')]);if(_0x330b37[_0xbf0d('0x34')]){delete _0x330b37[_0xbf0d('0x34')];}_0x1ac94d[_0xbf0d('0x27')](_0x1c3fee)['send'](_0x330b37);};}exports[_0xbf0d('0x35')]=function(_0x4b0ee9,_0x3faf27){var _0x15b25a={},_0x1ed208={},_0x20cd8c={'count':0x0,'rows':[]};var _0x8b33db=_['map'](db[_0xbf0d('0x36')][_0xbf0d('0x37')],function(_0x4969d3){return{'name':_0x4969d3[_0xbf0d('0x38')],'type':_0x4969d3['type']['key']};});_0x1ed208[_0xbf0d('0x39')]=_[_0xbf0d('0x3a')](_0x8b33db,'name');_0x1ed208[_0xbf0d('0x3b')]=_['keys'](_0x4b0ee9[_0xbf0d('0x3b')]);_0x1ed208['filters']=_[_0xbf0d('0x3c')](_0x1ed208[_0xbf0d('0x39')],_0x1ed208[_0xbf0d('0x3b')]);_0x15b25a[_0xbf0d('0x3d')]=_['intersection'](_0x1ed208[_0xbf0d('0x39')],qs[_0xbf0d('0x3e')](_0x4b0ee9['query'][_0xbf0d('0x3e')]));_0x15b25a[_0xbf0d('0x3d')]=_0x15b25a[_0xbf0d('0x3d')][_0xbf0d('0x3f')]?_0x15b25a['attributes']:_0x1ed208[_0xbf0d('0x39')];if(!_0x4b0ee9[_0xbf0d('0x3b')][_0xbf0d('0x40')](_0xbf0d('0x41'))){_0x15b25a[_0xbf0d('0x2d')]=qs[_0xbf0d('0x2d')](_0x4b0ee9[_0xbf0d('0x3b')][_0xbf0d('0x2d')]);_0x15b25a['offset']=qs[_0xbf0d('0x2a')](_0x4b0ee9[_0xbf0d('0x3b')][_0xbf0d('0x2a')]);}_0x15b25a[_0xbf0d('0x42')]=qs['sort'](_0x4b0ee9[_0xbf0d('0x3b')]['sort']);_0x15b25a[_0xbf0d('0x43')]=qs[_0xbf0d('0x44')](_[_0xbf0d('0x45')](_0x4b0ee9[_0xbf0d('0x3b')],_0x1ed208[_0xbf0d('0x44')]),_0x8b33db);if(_0x4b0ee9['query'][_0xbf0d('0x46')]){_0x15b25a['where']=_[_0xbf0d('0x47')](_0x15b25a[_0xbf0d('0x43')],{'$or':_[_0xbf0d('0x3a')](_0x8b33db,function(_0x18fcda){if(_0x18fcda[_0xbf0d('0x48')]!=='VIRTUAL'){var _0x31b8d0={};_0x31b8d0[_0x18fcda[_0xbf0d('0x34')]]={'$like':'%'+_0x4b0ee9['query'][_0xbf0d('0x46')]+'%'};return _0x31b8d0;}})});}_0x15b25a=_['merge']({},_0x15b25a,_0x4b0ee9[_0xbf0d('0x49')]);var _0x573556={'where':_0x15b25a[_0xbf0d('0x43')]};return db[_0xbf0d('0x36')]['count'](_0x573556)[_0xbf0d('0x1c')](function(_0x157eab){_0x20cd8c[_0xbf0d('0x2c')]=_0x157eab;if(_0x4b0ee9[_0xbf0d('0x3b')][_0xbf0d('0x4a')]){_0x15b25a['include']=[{'all':!![]}];}return db[_0xbf0d('0x36')]['findAll'](_0x15b25a);})['then'](function(_0x5adf29){_0x20cd8c[_0xbf0d('0x4b')]=_0x5adf29;return _0x20cd8c;})['then'](respondWithFilteredResult(_0x3faf27,_0x15b25a))[_0xbf0d('0x25')](handleError(_0x3faf27,null));};exports[_0xbf0d('0x4c')]=function(_0x125690,_0x346168){var _0x26567c={'raw':![],'where':{'id':_0x125690[_0xbf0d('0x4d')]['id']}},_0x223ad2={};_0x223ad2[_0xbf0d('0x39')]=_[_0xbf0d('0x4e')](db[_0xbf0d('0x36')][_0xbf0d('0x37')]);_0x223ad2[_0xbf0d('0x3b')]=_[_0xbf0d('0x4e')](_0x125690[_0xbf0d('0x3b')]);_0x223ad2['filters']=_[_0xbf0d('0x3c')](_0x223ad2[_0xbf0d('0x39')],_0x223ad2[_0xbf0d('0x3b')]);_0x26567c[_0xbf0d('0x3d')]=_['intersection'](_0x223ad2[_0xbf0d('0x39')],qs[_0xbf0d('0x3e')](_0x125690['query'][_0xbf0d('0x3e')]));_0x26567c['attributes']=_0x26567c[_0xbf0d('0x3d')]['length']?_0x26567c['attributes']:_0x223ad2[_0xbf0d('0x39')];if(_0x125690[_0xbf0d('0x3b')]['includeAll']){_0x26567c[_0xbf0d('0x4f')]=[{'all':!![]}];}_0x26567c=_['merge']({},_0x26567c,_0x125690[_0xbf0d('0x49')]);return db[_0xbf0d('0x36')]['find'](_0x26567c)[_0xbf0d('0x1c')](handleEntityNotFound(_0x346168,null))[_0xbf0d('0x1c')](respondWithResult(_0x346168,null))[_0xbf0d('0x25')](handleError(_0x346168,null));};exports['update']=function(_0x5256bb,_0x775001){if(_0x5256bb[_0xbf0d('0x50')]['id']){delete _0x5256bb[_0xbf0d('0x50')]['id'];}return db['Setting'][_0xbf0d('0x51')]({'where':{'id':_0x5256bb[_0xbf0d('0x4d')]['id']}})['then'](handleEntityNotFound(_0x775001,null))[_0xbf0d('0x1c')](saveUpdates(_0x5256bb[_0xbf0d('0x50')],null))[_0xbf0d('0x1c')](respondWithResult(_0x775001,null))[_0xbf0d('0x25')](handleError(_0x775001,null));};exports['addLogo']=function(_0x5bda6f,_0x99d532,_0x3f95b9){if(_0x5bda6f[_0xbf0d('0x52')]&&_0x5bda6f[_0xbf0d('0x52')][_0xbf0d('0x53')]){_0x5bda6f['body'][_0xbf0d('0x54')]=_0x5bda6f[_0xbf0d('0x52')]['filename'];}return db['Setting']['find']({'where':{'id':_0x5bda6f[_0xbf0d('0x4d')]['id']}})[_0xbf0d('0x1c')](handleEntityNotFound(_0x99d532,null))[_0xbf0d('0x1c')](saveUpdates(_0x5bda6f[_0xbf0d('0x50')],null))['then'](respondWithResult(_0x99d532,null))[_0xbf0d('0x25')](handleError(_0x99d532,null));};exports[_0xbf0d('0x55')]=function(_0x154455,_0x81c6f,_0x2fa5a7){if(_0x154455[_0xbf0d('0x52')]&&_0x154455['file']['filename']){_0x154455['body'][_0xbf0d('0x56')]=_0x154455[_0xbf0d('0x52')][_0xbf0d('0x53')];}return db[_0xbf0d('0x36')]['find']({'where':{'id':_0x154455[_0xbf0d('0x4d')]['id']}})[_0xbf0d('0x1c')](handleEntityNotFound(_0x81c6f,null))[_0xbf0d('0x1c')](saveUpdates(_0x154455[_0xbf0d('0x50')],null))['then'](respondWithResult(_0x81c6f,null))[_0xbf0d('0x25')](handleError(_0x81c6f,null));};var utilLicense=require('../../config/license/util');exports[_0xbf0d('0x57')]=function(_0x534398,_0x1ee0a4,_0x472d1b){var _0x2e2308='server/files/images/logos';var _0x415b90={'custom':![]};return utilLicense[_0xbf0d('0x58')]()[_0xbf0d('0x1c')](function(_0x2ce1bd){if(_0x2ce1bd){_0x415b90=_0x2ce1bd;}return db['Setting'][_0xbf0d('0x51')]({'where':{'id':_0x534398[_0xbf0d('0x4d')]['id']},'attributes':[_0xbf0d('0x54'),_0xbf0d('0x56'),'preferred',_0xbf0d('0x59'),_0xbf0d('0x5a'),_0xbf0d('0x5b'),_0xbf0d('0x5c'),_0xbf0d('0x5d')],'raw':!![]});})[_0xbf0d('0x1c')](handleEntityNotFound(_0x1ee0a4,null))[_0xbf0d('0x1c')](function(_0xbd0fd8){if(_0xbd0fd8){var _0x204570=_0xbd0fd8[_0xbf0d('0x54')]&&fs['existsSync'](path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x2e2308,_['toLower'](_0xbd0fd8[_0xbf0d('0x54')])))?path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x2e2308,_[_0xbf0d('0x60')](_0xbd0fd8['logo'])):path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x2e2308,_['toLower'](_0xbf0d('0x61')));var _0x142cde='default'+_['upperFirst'](_0xbf0d('0x54'));if(_0xbd0fd8[_0x142cde]||!_0x415b90['custom']){_0x204570=path['join'](config[_0xbf0d('0x5f')],_0x2e2308,_[_0xbf0d('0x60')](_0xbf0d('0x61')));}if(!fs[_0xbf0d('0x62')](_0x204570)){throw new db[(_0xbf0d('0x63'))]['ValidationError'](_[_0xbf0d('0x64')]('logo')+_0xbf0d('0x65'));}return _0x1ee0a4[_0xbf0d('0x66')](_0x204570);}})[_0xbf0d('0x25')](handleError(_0x1ee0a4,null));};var utilLicense=require(_0xbf0d('0x17'));exports['getLogoLogin']=function(_0x4abac9,_0x39242f,_0x523202){var _0x1b2cc9=_0xbf0d('0x67');var _0x5bb89a={'custom':![]};return utilLicense[_0xbf0d('0x58')]()['then'](function(_0x3c6177){if(_0x3c6177){_0x5bb89a=_0x3c6177;}return db[_0xbf0d('0x36')][_0xbf0d('0x51')]({'where':{'id':_0x4abac9['params']['id']},'attributes':[_0xbf0d('0x54'),_0xbf0d('0x56'),_0xbf0d('0x68'),_0xbf0d('0x59'),_0xbf0d('0x5a'),_0xbf0d('0x5b'),_0xbf0d('0x5c'),_0xbf0d('0x5d')],'raw':!![]});})['then'](handleEntityNotFound(_0x39242f,null))[_0xbf0d('0x1c')](function(_0x5787e6){if(_0x5787e6){var _0x564e10=_0x5787e6[_0xbf0d('0x56')]&&fs[_0xbf0d('0x62')](path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x1b2cc9,_['toLower'](_0x5787e6[_0xbf0d('0x56')])))?path['join'](config['root'],_0x1b2cc9,_[_0xbf0d('0x60')](_0x5787e6[_0xbf0d('0x56')])):path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x1b2cc9,_[_0xbf0d('0x60')]('default_loginLogo.svg'));var _0x5128b8=_0xbf0d('0x69')+_[_0xbf0d('0x64')]('loginLogo');if(_0x5787e6[_0x5128b8]||!_0x5bb89a[_0xbf0d('0x6a')]){_0x564e10=path['join'](config['root'],_0x1b2cc9,_[_0xbf0d('0x60')]('default_loginLogo.svg'));}if(!fs[_0xbf0d('0x62')](_0x564e10)){throw new db[(_0xbf0d('0x63'))][(_0xbf0d('0x6b'))](_[_0xbf0d('0x64')](_0xbf0d('0x56'))+_0xbf0d('0x65'));}return _0x39242f[_0xbf0d('0x66')](_0x564e10);}})[_0xbf0d('0x25')](handleError(_0x39242f,null));};exports[_0xbf0d('0x6c')]=function(_0x1e57f7,_0x2b3193){return db[_0xbf0d('0x36')][_0xbf0d('0x51')]({'where':{'id':_0x1e57f7[_0xbf0d('0x4d')]['id']},'attributes':[_0xbf0d('0x6d')]})[_0xbf0d('0x1c')](respondWithResult(_0x2b3193,null))[_0xbf0d('0x25')](handleError(_0x2b3193,null));};exports['addPreferred']=function(_0x179f54,_0x135785,_0x312e13){if(_0x179f54[_0xbf0d('0x52')]&&_0x179f54[_0xbf0d('0x52')]['filename']){_0x179f54[_0xbf0d('0x50')][_0xbf0d('0x68')]=_0x179f54[_0xbf0d('0x52')][_0xbf0d('0x53')];}return db[_0xbf0d('0x36')][_0xbf0d('0x51')]({'where':{'id':_0x179f54['params']['id']}})[_0xbf0d('0x1c')](handleEntityNotFound(_0x135785,null))[_0xbf0d('0x1c')](saveUpdates(_0x179f54[_0xbf0d('0x50')],null))[_0xbf0d('0x1c')](respondWithResult(_0x135785,null))[_0xbf0d('0x25')](handleError(_0x135785,null));};var utilLicense=require('../../config/license/util');exports[_0xbf0d('0x6e')]=function(_0x4fc5e3,_0x392e4c,_0x5607c7){var _0x1c5039=_0xbf0d('0x67');var _0x3e9de8={'custom':![]};return utilLicense[_0xbf0d('0x58')]()[_0xbf0d('0x1c')](function(_0x5be235){if(_0x5be235){_0x3e9de8=_0x5be235;}return db['Setting']['find']({'where':{'id':_0x4fc5e3[_0xbf0d('0x4d')]['id']},'attributes':[_0xbf0d('0x54'),_0xbf0d('0x56'),_0xbf0d('0x68'),_0xbf0d('0x59'),_0xbf0d('0x5a'),_0xbf0d('0x5b'),_0xbf0d('0x5c'),_0xbf0d('0x5d')],'raw':!![]});})[_0xbf0d('0x1c')](handleEntityNotFound(_0x392e4c,null))[_0xbf0d('0x1c')](function(_0x2074dd){if(_0x2074dd){var _0x4e2d11=_0x2074dd['preferred']&&fs[_0xbf0d('0x62')](path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x1c5039,_[_0xbf0d('0x60')](_0x2074dd[_0xbf0d('0x68')])))?path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x1c5039,_[_0xbf0d('0x60')](_0x2074dd['preferred'])):path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x1c5039,_[_0xbf0d('0x60')]('default_preferred.png'));var _0x39bd34=_0xbf0d('0x69')+_['upperFirst'](_0xbf0d('0x68'));if(_0x2074dd[_0x39bd34]||!_0x3e9de8[_0xbf0d('0x6a')]||!_0x3e9de8[_0xbf0d('0x68')]){_0x4e2d11=path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x1c5039,_[_0xbf0d('0x60')](_0xbf0d('0x6f')));}if(!fs[_0xbf0d('0x62')](_0x4e2d11)){throw new db[(_0xbf0d('0x63'))][(_0xbf0d('0x6b'))](_[_0xbf0d('0x64')]('preferred')+_0xbf0d('0x65'));}return _0x392e4c[_0xbf0d('0x66')](_0x4e2d11);}})['catch'](handleError(_0x392e4c,null));};exports['addFavicon']=function(_0x17562d,_0x210957,_0x165f77){if(_0x17562d['file']&&_0x17562d[_0xbf0d('0x52')]['filename']){_0x17562d['body'][_0xbf0d('0x59')]=_0x17562d[_0xbf0d('0x52')][_0xbf0d('0x53')];}return db[_0xbf0d('0x36')][_0xbf0d('0x51')]({'where':{'id':_0x17562d[_0xbf0d('0x4d')]['id']}})[_0xbf0d('0x1c')](handleEntityNotFound(_0x210957,null))[_0xbf0d('0x1c')](saveUpdates(_0x17562d[_0xbf0d('0x50')],null))[_0xbf0d('0x1c')](respondWithResult(_0x210957,null))[_0xbf0d('0x25')](handleError(_0x210957,null));};var utilLicense=require(_0xbf0d('0x17'));exports[_0xbf0d('0x70')]=function(_0x4a7afe,_0x3502ca,_0x88612f){var _0x3a7bc5='server/files/images/logos';var _0x177145={'custom':![]};return utilLicense['getLicense']()[_0xbf0d('0x1c')](function(_0x28dfbb){if(_0x28dfbb){_0x177145=_0x28dfbb;}return db[_0xbf0d('0x36')][_0xbf0d('0x51')]({'where':{'id':_0x4a7afe[_0xbf0d('0x4d')]['id']},'attributes':[_0xbf0d('0x54'),_0xbf0d('0x56'),_0xbf0d('0x68'),'favicon',_0xbf0d('0x5a'),_0xbf0d('0x5b'),_0xbf0d('0x5c'),_0xbf0d('0x5d')],'raw':!![]});})[_0xbf0d('0x1c')](handleEntityNotFound(_0x3502ca,null))[_0xbf0d('0x1c')](function(_0x4a33d4){if(_0x4a33d4){var _0x1d77ff=_0x4a33d4['favicon']&&fs[_0xbf0d('0x62')](path['join'](config[_0xbf0d('0x5f')],_0x3a7bc5,_[_0xbf0d('0x60')](_0x4a33d4[_0xbf0d('0x59')])))?path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x3a7bc5,_[_0xbf0d('0x60')](_0x4a33d4[_0xbf0d('0x59')])):path[_0xbf0d('0x5e')](config[_0xbf0d('0x5f')],_0x3a7bc5,_[_0xbf0d('0x60')](_0xbf0d('0x71')));var _0x9f0107=_0xbf0d('0x69')+_['upperFirst'](_0xbf0d('0x59'));if(_0x4a33d4[_0x9f0107]||!_0x177145['custom']){_0x1d77ff=path[_0xbf0d('0x5e')](config['root'],_0x3a7bc5,_['toLower']('default_favicon.ico'));}if(!fs[_0xbf0d('0x62')](_0x1d77ff)){throw new db['Sequelize']['ValidationError'](_['upperFirst'](_0xbf0d('0x59'))+_0xbf0d('0x65'));}return _0x3502ca[_0xbf0d('0x66')](_0x1d77ff);}})['catch'](handleError(_0x3502ca,null));};exports[_0xbf0d('0x72')]=function(_0x1a96ee,_0x1d0303){var _0x4cb2b2={'offset':moment()[_0xbf0d('0x73')]()};_0x4cb2b2[_0xbf0d('0x74')]=moment()[_0xbf0d('0x73')](_0x4cb2b2[_0xbf0d('0x2a')])[_0xbf0d('0x75')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x1d0303[_0xbf0d('0x27')](0xc8)['send'](_0x4cb2b2);};
\ No newline at end of file
index aeb23f1..be1ef5b 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(_0x868b7c,_0xfa438b){var _0x21683c=function(_0x21bc66){while(--_0x21bc66){_0x868b7c['push'](_0x868b7c['shift']());}};_0x21683c(++_0xfa438b);}(_0x55ca,0x126));var _0xa55c=function(_0x4b7e4d,_0x82d2ab){_0x4b7e4d=_0x4b7e4d-0x0;var _0x38d6af=_0x55ca[_0x4b7e4d];return _0x38d6af;};'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 _0x55ca=['./setting.attributes','exports','define','settings','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x175a55,_0x4082fd){var _0x167adf=function(_0x18ef07){while(--_0x18ef07){_0x175a55['push'](_0x175a55['shift']());}};_0x167adf(++_0x4082fd);}(_0x55ca,0x126));var _0xa55c=function(_0x21e034,_0x59fc14){_0x21e034=_0x21e034-0x0;var _0x1faab3=_0x55ca[_0x21e034];return _0x1faab3;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Setting',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8add0c1..7068a31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16da=['error','code','message','result','catch','ShowSetting','Setting','find','options','raw','where','attributes','include','map','model','debug','stringify','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x16da,0x74));var _0xa16d=function(_0x4f652b,_0x813fb3){_0x4f652b=_0x4f652b-0x0;var _0x3f02ec=_0x16da[_0x4f652b];return _0x3f02ec;};'use strict';var _=require(_0xa16d('0x0'));var util=require(_0xa16d('0x1'));var moment=require('moment');var BPromise=require(_0xa16d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa16d('0x3'));var db=require(_0xa16d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa16d('0x5'))(_0xa16d('0x6'));var config=require('../../config/environment');var jayson=require(_0xa16d('0x7'));var client=jayson[_0xa16d('0x8')][_0xa16d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3663e1,_0x15d85a,_0x3e593c){return new BPromise(function(_0x2c8988,_0x4e874c){return client[_0xa16d('0xa')](_0x3663e1,_0x3e593c)[_0xa16d('0xb')](function(_0x1733e0){logger[_0xa16d('0xc')](_0xa16d('0xd'),_0x15d85a,_0xa16d('0xe'));logger['debug'](_0xa16d('0xf'),_0x15d85a,_0xa16d('0xe'),JSON['stringify'](_0x1733e0));if(_0x1733e0['error']){if(_0x1733e0[_0xa16d('0x10')][_0xa16d('0x11')]===0x1f4){logger[_0xa16d('0x10')](_0xa16d('0xd'),_0x15d85a,_0x1733e0[_0xa16d('0x10')][_0xa16d('0x12')]);return _0x4e874c(_0x1733e0['error']['message']);}logger[_0xa16d('0x10')](_0xa16d('0xd'),_0x15d85a,_0x1733e0[_0xa16d('0x10')]['message']);return _0x2c8988(_0x1733e0[_0xa16d('0x10')][_0xa16d('0x12')]);}else{logger[_0xa16d('0xc')](_0xa16d('0xd'),_0x15d85a,'request\x20sent');_0x2c8988(_0x1733e0[_0xa16d('0x13')][_0xa16d('0x12')]);}})[_0xa16d('0x14')](function(_0x498386){logger['error']('Setting,\x20%s,\x20%s',_0x15d85a,_0x498386);_0x4e874c(_0x498386);});});}exports[_0xa16d('0x15')]=function(_0x503735){var _0xa669e3=this;return new Promise(function(_0x5f9ecd,_0x5d96b0){return db[_0xa16d('0x16')][_0xa16d('0x17')]({'raw':_0x503735[_0xa16d('0x18')]?_0x503735[_0xa16d('0x18')][_0xa16d('0x19')]===undefined?!![]:![]:!![],'where':_0x503735[_0xa16d('0x18')]?_0x503735[_0xa16d('0x18')][_0xa16d('0x1a')]||null:null,'attributes':_0x503735[_0xa16d('0x18')]?_0x503735[_0xa16d('0x18')][_0xa16d('0x1b')]||null:null,'include':_0x503735[_0xa16d('0x18')]?_0x503735[_0xa16d('0x18')][_0xa16d('0x1c')]?_[_0xa16d('0x1d')](_0x503735[_0xa16d('0x18')][_0xa16d('0x1c')],function(_0xb98b23){return{'model':db[_0xb98b23['model']],'as':_0xb98b23['as'],'attributes':_0xb98b23[_0xa16d('0x1b')],'include':_0xb98b23['include']?_[_0xa16d('0x1d')](_0xb98b23[_0xa16d('0x1c')],function(_0x3b4637){return{'model':db[_0x3b4637['model']],'as':_0x3b4637['as'],'attributes':_0x3b4637[_0xa16d('0x1b')],'include':_0x3b4637[_0xa16d('0x1c')]?_[_0xa16d('0x1d')](_0x3b4637[_0xa16d('0x1c')],function(_0x1a20f3){return{'model':db[_0x1a20f3[_0xa16d('0x1e')]],'as':_0x1a20f3['as'],'attributes':_0x1a20f3[_0xa16d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3db411){logger[_0xa16d('0xc')](_0xa16d('0x15'),_0x503735);logger[_0xa16d('0x1f')](_0xa16d('0x15'),_0x503735,JSON[_0xa16d('0x20')](_0x3db411));_0x5f9ecd(_0x3db411);})[_0xa16d('0x14')](function(_0x93963a){logger[_0xa16d('0x10')]('ShowSetting',_0x93963a[_0xa16d('0x12')],_0x503735);_0x5d96b0(_0xa669e3[_0xa16d('0x10')](0x1f4,_0x93963a[_0xa16d('0x12')]));});});};
\ No newline at end of file
+var _0xbe5b=['../../config/logger','rpc','../../config/environment','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ShowSetting','find','options','where','attributes','include','model','map','then','lodash','util','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x477caa,_0x3aeb99){var _0x2e560c=function(_0x4e22b7){while(--_0x4e22b7){_0x477caa['push'](_0x477caa['shift']());}};_0x2e560c(++_0x3aeb99);}(_0xbe5b,0x95));var _0xbbe5=function(_0x289c4d,_0xa9afdd){_0x289c4d=_0x289c4d-0x0;var _0x2a9b19=_0xbe5b[_0x289c4d];return _0x2a9b19;};'use strict';var _=require(_0xbbe5('0x0'));var util=require(_0xbbe5('0x1'));var moment=require('moment');var BPromise=require(_0xbbe5('0x2'));var rs=require(_0xbbe5('0x3'));var fs=require('fs');var Redis=require(_0xbbe5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbbe5('0x5'));var logger=require(_0xbbe5('0x6'))(_0xbbe5('0x7'));var config=require(_0xbbe5('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbbe5('0x9')][_0xbbe5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x53c8df,_0x427c87,_0x46fc3c){return new BPromise(function(_0x281732,_0x148dd0){return client[_0xbbe5('0xb')](_0x53c8df,_0x46fc3c)['then'](function(_0x58c59b){logger[_0xbbe5('0xc')](_0xbbe5('0xd'),_0x427c87,_0xbbe5('0xe'));logger[_0xbbe5('0xf')](_0xbbe5('0x10'),_0x427c87,'request\x20sent',JSON[_0xbbe5('0x11')](_0x58c59b));if(_0x58c59b[_0xbbe5('0x12')]){if(_0x58c59b['error'][_0xbbe5('0x13')]===0x1f4){logger[_0xbbe5('0x12')](_0xbbe5('0xd'),_0x427c87,_0x58c59b[_0xbbe5('0x12')][_0xbbe5('0x14')]);return _0x148dd0(_0x58c59b[_0xbbe5('0x12')][_0xbbe5('0x14')]);}logger[_0xbbe5('0x12')](_0xbbe5('0xd'),_0x427c87,_0x58c59b[_0xbbe5('0x12')]['message']);return _0x281732(_0x58c59b[_0xbbe5('0x12')][_0xbbe5('0x14')]);}else{logger[_0xbbe5('0xc')](_0xbbe5('0xd'),_0x427c87,_0xbbe5('0xe'));_0x281732(_0x58c59b['result'][_0xbbe5('0x14')]);}})[_0xbbe5('0x15')](function(_0x248dee){logger[_0xbbe5('0x12')](_0xbbe5('0xd'),_0x427c87,_0x248dee);_0x148dd0(_0x248dee);});});}exports[_0xbbe5('0x16')]=function(_0x32d117){var _0x470e94=this;return new Promise(function(_0x53ba73,_0xa6e0f4){return db['Setting'][_0xbbe5('0x17')]({'raw':_0x32d117['options']?_0x32d117[_0xbbe5('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x32d117[_0xbbe5('0x18')]?_0x32d117[_0xbbe5('0x18')][_0xbbe5('0x19')]||null:null,'attributes':_0x32d117[_0xbbe5('0x18')]?_0x32d117['options'][_0xbbe5('0x1a')]||null:null,'include':_0x32d117[_0xbbe5('0x18')]?_0x32d117['options'][_0xbbe5('0x1b')]?_['map'](_0x32d117[_0xbbe5('0x18')]['include'],function(_0x2dfb83){return{'model':db[_0x2dfb83[_0xbbe5('0x1c')]],'as':_0x2dfb83['as'],'attributes':_0x2dfb83[_0xbbe5('0x1a')],'include':_0x2dfb83[_0xbbe5('0x1b')]?_[_0xbbe5('0x1d')](_0x2dfb83[_0xbbe5('0x1b')],function(_0x171238){return{'model':db[_0x171238[_0xbbe5('0x1c')]],'as':_0x171238['as'],'attributes':_0x171238[_0xbbe5('0x1a')],'include':_0x171238[_0xbbe5('0x1b')]?_[_0xbbe5('0x1d')](_0x171238[_0xbbe5('0x1b')],function(_0x307e75){return{'model':db[_0x307e75[_0xbbe5('0x1c')]],'as':_0x307e75['as'],'attributes':_0x307e75['attributes']};}):[]};}):[]};}):[]:[]})[_0xbbe5('0x1e')](function(_0x3eb25b){logger[_0xbbe5('0xc')](_0xbbe5('0x16'),_0x32d117);logger[_0xbbe5('0xf')](_0xbbe5('0x16'),_0x32d117,JSON[_0xbbe5('0x11')](_0x3eb25b));_0x53ba73(_0x3eb25b);})[_0xbbe5('0x15')](function(_0x1e33c9){logger[_0xbbe5('0x12')](_0xbbe5('0x16'),_0x1e33c9[_0xbbe5('0x14')],_0x32d117);_0xa6e0f4(_0x470e94[_0xbbe5('0x12')](0x1f4,_0x1e33c9[_0xbbe5('0x14')]));});});};
\ No newline at end of file
index a7a3e32..360273d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x4f4434,_0x53f60d){var _0x4874f9=function(_0x193784){while(--_0x193784){_0x4f4434['push'](_0x4f4434['shift']());}};_0x4874f9(++_0x53f60d);}(_0x53ec,0x192));var _0xc53e=function(_0x475835,_0x3dd122){_0x475835=_0x475835-0x0;var _0x496aed=_0x53ec[_0x475835];return _0x496aed;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
+var _0xf494=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','getAgents','post','/:id/applications','addApplications','/:id/send','send','/:id/users','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf494,0x1c6));var _0x4f49=function(_0x46d855,_0x32e80b){_0x46d855=_0x46d855-0x0;var _0x59e29a=_0xf494[_0x46d855];return _0x59e29a;};'use strict';var multer=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var path=require(_0x4f49('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f49('0x3'));var router=express[_0x4f49('0x4')]();var fs_extra=require(_0x4f49('0x5'));var auth=require(_0x4f49('0x6'));var interaction=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var controller=require(_0x4f49('0x9'));router[_0x4f49('0xa')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0xc')]);router[_0x4f49('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x4f49('0xd')]);router[_0x4f49('0xa')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0xf')]);router[_0x4f49('0xa')](_0x4f49('0x10'),auth[_0x4f49('0xb')](),controller['getDispositions']);router[_0x4f49('0xa')](_0x4f49('0x11'),auth['isAuthenticated'](),controller[_0x4f49('0x12')]);router['get']('/:id/applications',auth[_0x4f49('0xb')](),controller[_0x4f49('0x13')]);router['get'](_0x4f49('0x14'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x15')]);router[_0x4f49('0xa')](_0x4f49('0x16'),controller[_0x4f49('0x17')]);router[_0x4f49('0xa')]('/:id/users',auth[_0x4f49('0xb')](),controller[_0x4f49('0x18')]);router[_0x4f49('0x19')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4f49('0x19')](_0x4f49('0x10'),auth[_0x4f49('0xb')](),controller['addDisposition']);router[_0x4f49('0x19')](_0x4f49('0x11'),auth[_0x4f49('0xb')](),controller['addAnswer']);router['post']('/:id/notify',controller['notify']);router[_0x4f49('0x19')](_0x4f49('0x1a'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x1b')]);router['post'](_0x4f49('0x1c'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x1d')]);router[_0x4f49('0x19')](_0x4f49('0x16'),controller['status']);router[_0x4f49('0x19')](_0x4f49('0x1e'),auth[_0x4f49('0xb')](),controller['addAgents']);router[_0x4f49('0x1f')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x20')]);router[_0x4f49('0x21')](_0x4f49('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0x4f49('0x21')](_0x4f49('0x10'),auth['isAuthenticated'](),controller[_0x4f49('0x22')]);router[_0x4f49('0x21')](_0x4f49('0x11'),auth['isAuthenticated'](),controller[_0x4f49('0x23')]);router[_0x4f49('0x21')](_0x4f49('0x1e'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x24')]);module[_0x4f49('0x25')]=router;
\ No newline at end of file
index 9e7d36d..91be9d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1399=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','name','STRING','generate','twilio','skebby','connectel','plivo','clickatell','bandwidth','infobip','intelepeer','BOOLEAN'];(function(_0x26d45b,_0xac100c){var _0x13330a=function(_0x91f607){while(--_0x91f607){_0x26d45b['push'](_0x26d45b['shift']());}};_0x13330a(++_0xac100c);}(_0x1399,0xc3));var _0x9139=function(_0x223f51,_0x2b59b8){_0x223f51=_0x223f51-0x0;var _0x43a51b=_0x1399[_0x223f51];return _0x43a51b;};'use strict';var Sequelize=require(_0x9139('0x0'));var rs=require('randomstring');module[_0x9139('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x9139('0x2'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x9139('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x9139('0x3')],'defaultValue':function(){return rs[_0x9139('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x9139('0x5'),_0x9139('0x6'),_0x9139('0x7'),'clicksend',_0x9139('0x8'),_0x9139('0x9'),_0x9139('0xa'),'csc',_0x9139('0xb'),_0x9139('0xc'))},'accountSid':{'type':Sequelize[_0x9139('0x3')]},'authId':{'type':Sequelize[_0x9139('0x3')]},'authToken':{'type':Sequelize[_0x9139('0x3')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x9139('0x3')]},'password':{'type':Sequelize[_0x9139('0x3')]},'apiKey':{'type':Sequelize[_0x9139('0x3')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x9139('0x3')]},'senderString':{'type':Sequelize[_0x9139('0x3')]},'deliveryReport':{'type':Sequelize[_0x9139('0xd')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x9139('0xe')],'defaultValue':function(){return _0x9139('0xf');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9139('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9139('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9139('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9139('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x9139('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9139('0x10')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x9139('0xd')],'defaultValue':![],'comment':_0x9139('0x11'),'set':function(_0x28c2df){if(!_0x28c2df)this['setDataValue'](_0x9139('0x12'),null);this['setDataValue']('mandatoryDisposition',_0x28c2df);}}};
\ No newline at end of file
+var _0x43e8=['twilio','skebby','connectel','clicksend','plivo','clickatell','bandwidth','intelepeer','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','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','exports','STRING','name','generate','ENUM'];(function(_0x4e5da0,_0x2765e8){var _0x2c7718=function(_0xa12ab0){while(--_0xa12ab0){_0x4e5da0['push'](_0x4e5da0['shift']());}};_0x2c7718(++_0x2765e8);}(_0x43e8,0x79));var _0x843e=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x43e8[_0x13d07a];return _0x5ee0ee;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x843e('0x0')]={'name':{'type':Sequelize[_0x843e('0x1')],'unique':_0x843e('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x843e('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0x843e('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0x843e('0x1')],'defaultValue':function(){return rs[_0x843e('0x3')]();}},'phone':{'type':Sequelize[_0x843e('0x1')]},'type':{'type':Sequelize[_0x843e('0x4')](_0x843e('0x5'),_0x843e('0x6'),_0x843e('0x7'),_0x843e('0x8'),_0x843e('0x9'),_0x843e('0xa'),_0x843e('0xb'),'csc','infobip',_0x843e('0xc'))},'accountSid':{'type':Sequelize[_0x843e('0x1')]},'authId':{'type':Sequelize[_0x843e('0x1')]},'authToken':{'type':Sequelize[_0x843e('0x1')]},'smsMethod':{'type':Sequelize[_0x843e('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x843e('0x1')]},'password':{'type':Sequelize[_0x843e('0x1')]},'apiKey':{'type':Sequelize[_0x843e('0x1')]},'applicationId':{'type':Sequelize[_0x843e('0x1')]},'accountId':{'type':Sequelize[_0x843e('0x1')]},'senderString':{'type':Sequelize[_0x843e('0x1')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x843e('0x1')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x843e('0xd');}},'notificationSound':{'type':Sequelize[_0x843e('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x843e('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x843e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x843e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x843e('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x843e('0xf')],'comment':_0x843e('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x843e('0xe')],'defaultValue':![],'comment':_0x843e('0x11'),'set':function(_0x15caeb){if(!_0x15caeb)this['setDataValue'](_0x843e('0x12'),null);this[_0x843e('0x13')](_0x843e('0x14'),_0x15caeb);}}};
\ No newline at end of file
index e8456ec..e71cf48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da2=['fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','findAll','rows','params','intersection','includeAll','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','Disposition','getDispositions','findOne','SmsAccountId','removeDispositions','addAnswer','getAnswers','rawAttributes','CannedAnswer','removeAnswers','sms','SmsApplication','Applications','account','applications','orderBy','priority','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','twilio','from','From','Body','MessageSid','skebby','sender','text','clicksend','messageId','message_id','Text','MessageUUID','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','bandwidth','intelepeer','refid','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','created','autoclose','unmanaged','*,*,*,*','SmsMessage','ContactId','UserId','User','unshift','agent','waitForTheAssignedAgent','startRouting','Start','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','Transaction','ISOLATION_LEVELS','bulkCreate','stack','finally','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','isNil','to\x20is\x20mandatory','List','dataValues','Messages','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','infobip','groupName','DELIVERED','redif','connectel','RECEIVED_BY_RECIPIENT','message-delivered','ACCEPTD','statusGet','message-id','state','addAgents','ids','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','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','limit','count','set','Content-Range','apply','reject','save','update','then','get','SmsAccounts','UserProfileResource','destroy','end','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','fieldName','type','query','keys','model','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7da2,0x9d));var _0x27da=function(_0x2ff980,_0xf5e589){_0x2ff980=_0x2ff980-0x0;var _0x3e4a63=_0x7da2[_0x2ff980];return _0x3e4a63;};'use strict';var emlformat=require(_0x27da('0x0'));var rimraf=require(_0x27da('0x1'));var zipdir=require(_0x27da('0x2'));var jsonpatch=require(_0x27da('0x3'));var rp=require(_0x27da('0x4'));var moment=require(_0x27da('0x5'));var BPromise=require(_0x27da('0x6'));var Mustache=require(_0x27da('0x7'));var util=require(_0x27da('0x8'));var path=require('path');var sox=require(_0x27da('0x9'));var csv=require('to-csv');var ejs=require(_0x27da('0xa'));var fs=require('fs');var fs_extra=require(_0x27da('0xb'));var _=require(_0x27da('0xc'));var squel=require(_0x27da('0xd'));var crypto=require(_0x27da('0xe'));var jsforce=require(_0x27da('0xf'));var deskjs=require(_0x27da('0x10'));var toCsv=require(_0x27da('0x11'));var querystring=require('querystring');var Papa=require(_0x27da('0x12'));var Redis=require(_0x27da('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x27da('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x27da('0x15'));var logger=require(_0x27da('0x16'))(_0x27da('0x17'));var utils=require(_0x27da('0x18'));var config=require(_0x27da('0x19'));var licenseUtil=require(_0x27da('0x1a'));var db=require('../../mysqldb')['db'];config[_0x27da('0x1b')]=_[_0x27da('0x1c')](config['redis'],{'host':_0x27da('0x1d'),'port':0x18eb});var socket=require(_0x27da('0x1e'))(new Redis(config[_0x27da('0x1b')]));require(_0x27da('0x1f'))[_0x27da('0x20')](socket);var jayson=require(_0x27da('0x21'));var client=jayson[_0x27da('0x22')][_0x27da('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x1172ce,_0x3f401c,_0x1ccd83,_0x4df228){return new BPromise(function(_0x416dab,_0x49e21a){var _0x47d30f=_0x4df228||client;return _0x47d30f[_0x27da('0x24')](_0x1172ce,_0x1ccd83)['then'](function(_0x53d832){logger[_0x27da('0x25')](_0x27da('0x26'),_0x3f401c,_0x27da('0x27'));logger[_0x27da('0x28')](_0x27da('0x29'),_0x3f401c,_0x27da('0x27'),JSON[_0x27da('0x2a')](_0x53d832));if(_0x53d832[_0x27da('0x2b')]){if(_0x53d832[_0x27da('0x2b')][_0x27da('0x2c')]===0x1f4){logger[_0x27da('0x2b')](_0x27da('0x26'),_0x3f401c,_0x53d832[_0x27da('0x2b')][_0x27da('0x2d')]);return _0x49e21a(_0x53d832[_0x27da('0x2b')]['message']);}logger[_0x27da('0x2b')](_0x27da('0x26'),_0x3f401c,_0x53d832[_0x27da('0x2b')][_0x27da('0x2d')]);return _0x416dab(_0x53d832[_0x27da('0x2b')]['message']);}else{logger[_0x27da('0x25')](_0x27da('0x26'),_0x3f401c,_0x27da('0x27'));_0x416dab(_0x53d832[_0x27da('0x2e')][_0x27da('0x2d')]);}})[_0x27da('0x2f')](function(_0x31bf23){logger['error'](_0x27da('0x26'),_0x3f401c,_0x31bf23);_0x49e21a(_0x31bf23);});});}function respondWithStatusCode(_0x469399,_0x319338){_0x319338=_0x319338||0xcc;return function(_0xff6a98){if(_0xff6a98){return _0x469399[_0x27da('0x30')](_0x319338);}return _0x469399[_0x27da('0x31')](_0x319338)['end']();};}function respondWithResult(_0x151752,_0x112525){_0x112525=_0x112525||0xc8;return function(_0x218f31){if(_0x218f31){return _0x151752[_0x27da('0x31')](_0x112525)[_0x27da('0x32')](_0x218f31);}};}function respondWithFilteredResult(_0x2d917d,_0x3babff){return function(_0xf08af9){if(_0xf08af9){var _0x330e5f=typeof _0x3babff[_0x27da('0x33')]===_0x27da('0x34')&&typeof _0x3babff[_0x27da('0x35')]===_0x27da('0x34');var _0xb579af=_0xf08af9[_0x27da('0x36')];var _0x442530=_0x330e5f?0x0:_0x3babff[_0x27da('0x33')];var _0x165e65=_0x330e5f?_0xf08af9[_0x27da('0x36')]:_0x3babff[_0x27da('0x33')]+_0x3babff['limit'];var _0xe3e8a8;if(_0x165e65>=_0xb579af){_0x165e65=_0xb579af;_0xe3e8a8=0xc8;}else{_0xe3e8a8=0xce;}_0x2d917d[_0x27da('0x31')](_0xe3e8a8);return _0x2d917d[_0x27da('0x37')](_0x27da('0x38'),_0x442530+'-'+_0x165e65+'/'+_0xb579af)['json'](_0xf08af9);}return null;};}function patchUpdates(_0x56cd86){return function(_0x402c49){try{jsonpatch[_0x27da('0x39')](_0x402c49,_0x56cd86,!![]);}catch(_0x39fa85){return BPromise[_0x27da('0x3a')](_0x39fa85);}return _0x402c49[_0x27da('0x3b')]();};}function saveUpdates(_0x5b9f0e,_0x248d9b){return function(_0x15b58f){if(_0x15b58f){return _0x15b58f[_0x27da('0x3c')](_0x5b9f0e)[_0x27da('0x3d')](function(_0x287d8b){return _0x287d8b;});}return null;};}function removeEntity(_0x53e8c0,_0x13fac5){return function(_0x4a0de3){if(_0x4a0de3){return _0x4a0de3['destroy']()['then'](function(){var _0x1ac4ec=_0x4a0de3[_0x27da('0x3e')]({'plain':!![]});var _0x5b38f6=_0x27da('0x3f');return db[_0x27da('0x40')][_0x27da('0x41')]({'where':{'type':_0x5b38f6,'resourceId':_0x1ac4ec['id']}})[_0x27da('0x3d')](function(){return _0x4a0de3;});})[_0x27da('0x3d')](function(){_0x53e8c0[_0x27da('0x31')](0xcc)[_0x27da('0x42')]();});}};}function handleEntityNotFound(_0x344d5e,_0x22d4c5){return function(_0x177c19){if(!_0x177c19){_0x344d5e['sendStatus'](0x194);}return _0x177c19;};}function handleError(_0xcd1e93,_0x225122){_0x225122=_0x225122||0x1f4;return function(_0x43a497){logger[_0x27da('0x2b')](_0x43a497['stack']);if(_0x43a497[_0x27da('0x43')]){delete _0x43a497[_0x27da('0x43')];}_0xcd1e93['status'](_0x225122)[_0x27da('0x44')](_0x43a497);};}exports[_0x27da('0x45')]=function(_0x1acfa2,_0x39845e){var _0xb21394={'include':[{'model':db[_0x27da('0x46')],'as':_0x27da('0x47')}]},_0x589a0b={},_0x620412={'count':0x0,'rows':[]};var _0x328c4d=_[_0x27da('0x48')](db[_0x27da('0x49')]['rawAttributes'],function(_0x704f33){return{'name':_0x704f33[_0x27da('0x4a')],'type':_0x704f33[_0x27da('0x4b')]['key']};});_0x589a0b['model']=_[_0x27da('0x48')](_0x328c4d,_0x27da('0x43'));_0x589a0b[_0x27da('0x4c')]=_[_0x27da('0x4d')](_0x1acfa2[_0x27da('0x4c')]);_0x589a0b['filters']=_['intersection'](_0x589a0b[_0x27da('0x4e')],_0x589a0b[_0x27da('0x4c')]);_0xb21394[_0x27da('0x4f')]=_['intersection'](_0x589a0b[_0x27da('0x4e')],qs[_0x27da('0x50')](_0x1acfa2[_0x27da('0x4c')][_0x27da('0x50')]));_0xb21394[_0x27da('0x4f')]=_0xb21394[_0x27da('0x4f')][_0x27da('0x51')]?_0xb21394[_0x27da('0x4f')]:_0x589a0b[_0x27da('0x4e')];if(!_0x1acfa2[_0x27da('0x4c')][_0x27da('0x52')](_0x27da('0x53'))){_0xb21394[_0x27da('0x35')]=qs[_0x27da('0x35')](_0x1acfa2[_0x27da('0x4c')]['limit']);_0xb21394['offset']=qs[_0x27da('0x33')](_0x1acfa2[_0x27da('0x4c')][_0x27da('0x33')]);}_0xb21394[_0x27da('0x54')]=qs[_0x27da('0x55')](_0x1acfa2[_0x27da('0x4c')][_0x27da('0x55')]);_0xb21394[_0x27da('0x56')]=qs[_0x27da('0x57')](_[_0x27da('0x58')](_0x1acfa2[_0x27da('0x4c')],_0x589a0b[_0x27da('0x57')]),_0x328c4d);if(_0x1acfa2[_0x27da('0x4c')][_0x27da('0x59')]){_0xb21394[_0x27da('0x56')]=_[_0x27da('0x5a')](_0xb21394[_0x27da('0x56')],{'$or':_['map'](_0x328c4d,function(_0x14d4c0){if(_0x14d4c0['type']!==_0x27da('0x5b')){var _0x2341d5={};_0x2341d5[_0x14d4c0[_0x27da('0x43')]]={'$like':'%'+_0x1acfa2['query'][_0x27da('0x59')]+'%'};return _0x2341d5;}})});}_0xb21394=_[_0x27da('0x5a')]({},_0xb21394,_0x1acfa2['options']);var _0x32b92c={'where':_0xb21394['where']};return db[_0x27da('0x49')][_0x27da('0x36')](_0x32b92c)['then'](function(_0x434e2c){_0x620412[_0x27da('0x36')]=_0x434e2c;if(_0x1acfa2[_0x27da('0x4c')]['includeAll']){_0xb21394['include']=[{'all':!![]}];}return db[_0x27da('0x49')][_0x27da('0x5c')](_0xb21394);})[_0x27da('0x3d')](function(_0x48af01){_0x620412[_0x27da('0x5d')]=_0x48af01;return _0x620412;})[_0x27da('0x3d')](respondWithFilteredResult(_0x39845e,_0xb21394))['catch'](handleError(_0x39845e,null));};exports['show']=function(_0x5925a7,_0x11b37e){var _0x58e584={'raw':![],'where':{'id':_0x5925a7[_0x27da('0x5e')]['id']},'include':[{'model':db['Pause'],'as':_0x27da('0x47')}]},_0x3575b9={};_0x3575b9[_0x27da('0x4e')]=_[_0x27da('0x4d')](db[_0x27da('0x49')]['rawAttributes']);_0x3575b9['query']=_[_0x27da('0x4d')](_0x5925a7[_0x27da('0x4c')]);_0x3575b9[_0x27da('0x57')]=_['intersection'](_0x3575b9[_0x27da('0x4e')],_0x3575b9[_0x27da('0x4c')]);_0x58e584[_0x27da('0x4f')]=_[_0x27da('0x5f')](_0x3575b9[_0x27da('0x4e')],qs[_0x27da('0x50')](_0x5925a7[_0x27da('0x4c')][_0x27da('0x50')]));_0x58e584[_0x27da('0x4f')]=_0x58e584[_0x27da('0x4f')][_0x27da('0x51')]?_0x58e584['attributes']:_0x3575b9[_0x27da('0x4e')];if(_0x5925a7[_0x27da('0x4c')][_0x27da('0x60')]){_0x58e584[_0x27da('0x61')]=[{'all':!![]}];}_0x58e584=_[_0x27da('0x5a')]({},_0x58e584,_0x5925a7[_0x27da('0x62')]);return db[_0x27da('0x49')][_0x27da('0x63')](_0x58e584)[_0x27da('0x3d')](handleEntityNotFound(_0x11b37e,null))[_0x27da('0x3d')](respondWithResult(_0x11b37e,null))[_0x27da('0x2f')](handleError(_0x11b37e,null));};exports[_0x27da('0x64')]=function(_0x5267c9,_0x10c3a8){return db[_0x27da('0x49')]['create'](_0x5267c9[_0x27da('0x65')],{})[_0x27da('0x3d')](function(_0x5e955f){var _0x5a90ce=_0x5267c9[_0x27da('0x66')][_0x27da('0x3e')]({'plain':!![]});if(!_0x5a90ce)throw new Error(_0x27da('0x67'));if(_0x5a90ce[_0x27da('0x68')]==='user'){var _0x26f351=_0x5e955f[_0x27da('0x3e')]({'plain':!![]});var _0x266664=_0x27da('0x3f');return db[_0x27da('0x69')][_0x27da('0x63')]({'where':{'name':_0x266664,'userProfileId':_0x5a90ce[_0x27da('0x6a')]},'raw':!![]})[_0x27da('0x3d')](function(_0x463ef2){if(_0x463ef2&&_0x463ef2[_0x27da('0x6b')]===0x0){return db['UserProfileResource'][_0x27da('0x64')]({'name':_0x26f351['name'],'resourceId':_0x26f351['id'],'type':_0x463ef2[_0x27da('0x43')],'sectionId':_0x463ef2['id']},{})['then'](function(){return _0x5e955f;});}else{return _0x5e955f;}})[_0x27da('0x2f')](function(_0x148c9e){logger[_0x27da('0x2b')](_0x27da('0x6c'),_0x148c9e);throw _0x148c9e;});}return _0x5e955f;})[_0x27da('0x3d')](respondWithResult(_0x10c3a8,0xc9))[_0x27da('0x2f')](handleError(_0x10c3a8,null));};exports[_0x27da('0x3c')]=function(_0x329a3d,_0x26222d){if(_0x329a3d[_0x27da('0x65')]['id']){delete _0x329a3d['body']['id'];}return db[_0x27da('0x49')][_0x27da('0x63')]({'where':{'id':_0x329a3d['params']['id']},'include':[{'model':db[_0x27da('0x46')],'as':'mandatoryDispositionPause'}]})[_0x27da('0x3d')](handleEntityNotFound(_0x26222d,null))[_0x27da('0x3d')](saveUpdates(_0x329a3d[_0x27da('0x65')],null))['then'](respondWithResult(_0x26222d,null))[_0x27da('0x2f')](handleError(_0x26222d,null));};exports[_0x27da('0x41')]=function(_0x50a53d,_0x44b882){return db[_0x27da('0x49')][_0x27da('0x63')]({'where':{'id':_0x50a53d[_0x27da('0x5e')]['id']}})['then'](handleEntityNotFound(_0x44b882,null))[_0x27da('0x3d')](removeEntity(_0x44b882,null))[_0x27da('0x2f')](handleError(_0x44b882,null));};exports[_0x27da('0x6d')]=function(_0x9784a,_0x5edbdf){return db['SmsAccount'][_0x27da('0x6d')]()[_0x27da('0x3d')](respondWithResult(_0x5edbdf,null))[_0x27da('0x2f')](handleError(_0x5edbdf,null));};exports['addDisposition']=function(_0x410cc6,_0x4ed242,_0x56c5c2){if(_0x410cc6[_0x27da('0x65')]['id']){delete _0x410cc6['body']['id'];}return db['SmsAccount'][_0x27da('0x63')]({'where':{'id':_0x410cc6[_0x27da('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4ed242,null))['then'](function(_0x28e3f0){if(_0x28e3f0){_0x410cc6[_0x27da('0x65')]['SmsAccountId']=_0x28e3f0['id'];return db[_0x27da('0x6e')][_0x27da('0x64')](_0x410cc6['body']);}})[_0x27da('0x3d')](respondWithResult(_0x4ed242,null))[_0x27da('0x2f')](handleError(_0x4ed242,null));};exports[_0x27da('0x6f')]=function(_0xe4ef14,_0x35c1ec,_0xb3877d){var _0x641ef0={'raw':![],'where':{}};var _0x555b70={};var _0x2dbfc3={'count':0x0,'rows':[]};return db[_0x27da('0x49')][_0x27da('0x70')]({'where':{'id':_0xe4ef14[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x35c1ec,null))[_0x27da('0x3d')](function(_0x205318){if(_0x205318){_0x555b70[_0x27da('0x4e')]=_[_0x27da('0x4d')](db[_0x27da('0x6e')]['rawAttributes']);_0x555b70[_0x27da('0x4c')]=_[_0x27da('0x4d')](_0xe4ef14['query']);_0x555b70[_0x27da('0x57')]=_['intersection'](_0x555b70[_0x27da('0x4e')],_0x555b70[_0x27da('0x4c')]);_0x641ef0[_0x27da('0x4f')]=_[_0x27da('0x5f')](_0x555b70[_0x27da('0x4e')],qs[_0x27da('0x50')](_0xe4ef14[_0x27da('0x4c')][_0x27da('0x50')]));_0x641ef0[_0x27da('0x4f')]=_0x641ef0[_0x27da('0x4f')][_0x27da('0x51')]?_0x641ef0[_0x27da('0x4f')]:_0x555b70['model'];if(!_0xe4ef14[_0x27da('0x4c')]['hasOwnProperty'](_0x27da('0x53'))){_0x641ef0[_0x27da('0x35')]=qs['limit'](_0xe4ef14[_0x27da('0x4c')][_0x27da('0x35')]);_0x641ef0['offset']=qs[_0x27da('0x33')](_0xe4ef14['query'][_0x27da('0x33')]);}_0x641ef0[_0x27da('0x54')]=qs[_0x27da('0x55')](_0xe4ef14[_0x27da('0x4c')][_0x27da('0x55')]);_0x641ef0[_0x27da('0x56')]=qs[_0x27da('0x57')](_[_0x27da('0x58')](_0xe4ef14['query'],_0x555b70[_0x27da('0x57')]));_0x641ef0[_0x27da('0x56')][_0x27da('0x71')]=_0x205318['id'];if(_0xe4ef14[_0x27da('0x4c')]['filter']){_0x641ef0['where']=_[_0x27da('0x5a')](_0x641ef0[_0x27da('0x56')],{'$or':_[_0x27da('0x48')](_0x641ef0[_0x27da('0x4f')],function(_0x277a80){var _0x3f83c7={};_0x3f83c7[_0x277a80]={'$like':'%'+_0xe4ef14[_0x27da('0x4c')][_0x27da('0x59')]+'%'};return _0x3f83c7;})});}_0x641ef0=_['merge']({},_0x641ef0,_0xe4ef14[_0x27da('0x62')]);return db[_0x27da('0x6e')][_0x27da('0x36')]({'where':_0x641ef0[_0x27da('0x56')]})['then'](function(_0x4ef727){_0x2dbfc3[_0x27da('0x36')]=_0x4ef727;if(_0xe4ef14[_0x27da('0x4c')]['includeAll']){_0x641ef0[_0x27da('0x61')]=[{'all':!![]}];}return db['Disposition'][_0x27da('0x5c')](_0x641ef0);})['then'](function(_0x2dd6ff){_0x2dbfc3[_0x27da('0x5d')]=_0x2dd6ff;return _0x2dbfc3;});}})[_0x27da('0x3d')](respondWithFilteredResult(_0x35c1ec,_0x641ef0))[_0x27da('0x2f')](handleError(_0x35c1ec,null));};exports[_0x27da('0x72')]=function(_0x942bf,_0x21f362,_0x1cf5dc){return db[_0x27da('0x49')]['find']({'where':{'id':_0x942bf[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x21f362,null))[_0x27da('0x3d')](function(_0x252564){if(_0x252564){return _0x252564['removeDispositions'](_0x942bf[_0x27da('0x4c')]['ids']);}})[_0x27da('0x3d')](respondWithStatusCode(_0x21f362,null))['catch'](handleError(_0x21f362,null));};exports[_0x27da('0x73')]=function(_0x4d8b29,_0x3cec4c,_0x2284f2){if(_0x4d8b29[_0x27da('0x65')]['id']){delete _0x4d8b29[_0x27da('0x65')]['id'];}return db['SmsAccount'][_0x27da('0x63')]({'where':{'id':_0x4d8b29[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x3cec4c,null))['then'](function(_0x228cd1){if(_0x228cd1){_0x4d8b29[_0x27da('0x65')][_0x27da('0x71')]=_0x228cd1['id'];return db['CannedAnswer'][_0x27da('0x64')](_0x4d8b29['body']);}})['then'](respondWithResult(_0x3cec4c,null))[_0x27da('0x2f')](handleError(_0x3cec4c,null));};exports[_0x27da('0x74')]=function(_0x1c94e0,_0x28da37,_0x14f35d){var _0x86b564={'raw':![],'where':{}};var _0x2d3c3c={};var _0x29cef9={'count':0x0,'rows':[]};return db['SmsAccount'][_0x27da('0x70')]({'where':{'id':_0x1c94e0[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x28da37,null))['then'](function(_0x3bdea5){if(_0x3bdea5){_0x2d3c3c[_0x27da('0x4e')]=_['keys'](db['CannedAnswer'][_0x27da('0x75')]);_0x2d3c3c[_0x27da('0x4c')]=_['keys'](_0x1c94e0[_0x27da('0x4c')]);_0x2d3c3c[_0x27da('0x57')]=_[_0x27da('0x5f')](_0x2d3c3c[_0x27da('0x4e')],_0x2d3c3c[_0x27da('0x4c')]);_0x86b564[_0x27da('0x4f')]=_[_0x27da('0x5f')](_0x2d3c3c[_0x27da('0x4e')],qs[_0x27da('0x50')](_0x1c94e0[_0x27da('0x4c')][_0x27da('0x50')]));_0x86b564[_0x27da('0x4f')]=_0x86b564['attributes']['length']?_0x86b564['attributes']:_0x2d3c3c['model'];if(!_0x1c94e0[_0x27da('0x4c')][_0x27da('0x52')](_0x27da('0x53'))){_0x86b564[_0x27da('0x35')]=qs['limit'](_0x1c94e0[_0x27da('0x4c')]['limit']);_0x86b564[_0x27da('0x33')]=qs[_0x27da('0x33')](_0x1c94e0[_0x27da('0x4c')][_0x27da('0x33')]);}_0x86b564[_0x27da('0x54')]=qs[_0x27da('0x55')](_0x1c94e0[_0x27da('0x4c')][_0x27da('0x55')]);_0x86b564[_0x27da('0x56')]=qs[_0x27da('0x57')](_[_0x27da('0x58')](_0x1c94e0['query'],_0x2d3c3c[_0x27da('0x57')]));_0x86b564[_0x27da('0x56')][_0x27da('0x71')]=_0x3bdea5['id'];if(_0x1c94e0[_0x27da('0x4c')][_0x27da('0x59')]){_0x86b564[_0x27da('0x56')]=_['merge'](_0x86b564[_0x27da('0x56')],{'$or':_[_0x27da('0x48')](_0x86b564['attributes'],function(_0x1b13b7){var _0xd9704a={};_0xd9704a[_0x1b13b7]={'$like':'%'+_0x1c94e0[_0x27da('0x4c')][_0x27da('0x59')]+'%'};return _0xd9704a;})});}_0x86b564=_[_0x27da('0x5a')]({},_0x86b564,_0x1c94e0[_0x27da('0x62')]);return db[_0x27da('0x76')][_0x27da('0x36')]({'where':_0x86b564[_0x27da('0x56')]})[_0x27da('0x3d')](function(_0x64ac17){_0x29cef9['count']=_0x64ac17;if(_0x1c94e0[_0x27da('0x4c')][_0x27da('0x60')]){_0x86b564['include']=[{'all':!![]}];}return db[_0x27da('0x76')][_0x27da('0x5c')](_0x86b564);})[_0x27da('0x3d')](function(_0x258e88){_0x29cef9[_0x27da('0x5d')]=_0x258e88;return _0x29cef9;});}})['then'](respondWithFilteredResult(_0x28da37,_0x86b564))[_0x27da('0x2f')](handleError(_0x28da37,null));};exports[_0x27da('0x77')]=function(_0x11c333,_0xc86aa2,_0xf503ab){return db['SmsAccount'][_0x27da('0x63')]({'where':{'id':_0x11c333[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0xc86aa2,null))[_0x27da('0x3d')](function(_0x2587a1){if(_0x2587a1){return _0x2587a1[_0x27da('0x77')](_0x11c333[_0x27da('0x4c')]['ids']);}})[_0x27da('0x3d')](respondWithStatusCode(_0xc86aa2,null))[_0x27da('0x2f')](handleError(_0xc86aa2,null));};exports['notify']=function(_0x3e9157,_0x1952a7,_0x2d56b6){var _0x599f8c={'channel':_0x27da('0x78')};var _0x5660c4=[];var _0x2c5886=[];var _0x3392a8={};return db['SmsAccount'][_0x27da('0x63')]({'where':{'id':_0x3e9157[_0x27da('0x5e')]['id']},'include':[{'model':db[_0x27da('0x79')],'as':_0x27da('0x7a')}]})['then'](handleEntityNotFound(_0x1952a7,null))['then'](function(_0x33d012){_0x599f8c[_0x27da('0x7b')]=_0x33d012;_0x599f8c[_0x27da('0x7c')]=_[_0x27da('0x7d')](_0x33d012[_0x27da('0x7a')],[_0x27da('0x7e')],['asc']);if(_0x599f8c['account'][_0x27da('0x7a')]){delete _0x599f8c[_0x27da('0x7b')][_0x27da('0x7a')];}return db[_0x27da('0x7f')][_0x27da('0x6d')]();})[_0x27da('0x3d')](function(_0x37a090){if(!_0x37a090){throw new db['Sequelize'][(_0x27da('0x80'))](_0x27da('0x81'));}_0x5660c4=_['difference'](_[_0x27da('0x4d')](_0x37a090),[_0x27da('0x82'),_0x27da('0x83')]);_0x2c5886=_[_0x27da('0x84')](_[_0x27da('0x4d')](_0x37a090),['createdAt',_0x27da('0x83'),_0x27da('0x85'),_0x27da('0x86')]);_0x599f8c[_0x27da('0x65')]={'mapKey':'mobile'};if(_0x599f8c['account'][_0x27da('0x4b')]){switch(_0x599f8c['account']['type']){case _0x27da('0x87'):_0x599f8c[_0x27da('0x65')][_0x27da('0x88')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x89')];_0x599f8c[_0x27da('0x65')]['body']=_0x3e9157[_0x27da('0x65')][_0x27da('0x8a')];_0x599f8c[_0x27da('0x65')]['messageId']=_0x3e9157[_0x27da('0x65')][_0x27da('0x8b')];break;case _0x27da('0x8c'):_0x599f8c[_0x27da('0x65')][_0x27da('0x88')]='+'+_0x3e9157[_0x27da('0x65')][_0x27da('0x8d')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x8e')];break;case'connectel':_0x599f8c['body'][_0x27da('0x88')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x88')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x2d')];break;case _0x27da('0x8f'):_0x599f8c['body'][_0x27da('0x88')]=_0x3e9157['body'][_0x27da('0x88')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x65')];_0x599f8c[_0x27da('0x65')][_0x27da('0x90')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x91')];break;case'plivo':_0x599f8c[_0x27da('0x65')][_0x27da('0x88')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x89')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x92')];_0x599f8c['body']['messageId']=_0x3e9157[_0x27da('0x65')][_0x27da('0x93')];break;case'infobip':_0x599f8c[_0x27da('0x65')][_0x27da('0x88')]='+'+_0x3e9157[_0x27da('0x65')]['results'][0x0]['from'];_0x599f8c['body'][_0x27da('0x65')]=_0x3e9157[_0x27da('0x65')]['results'][0x0][_0x27da('0x8e')];_0x599f8c[_0x27da('0x65')][_0x27da('0x90')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x94')][0x0]['messageId'];break;case _0x27da('0x95'):_0x599f8c[_0x27da('0x65')][_0x27da('0x88')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x96')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157['body'][_0x27da('0x97')][_0x27da('0x2d')];break;case _0x27da('0x98'):_0x599f8c[_0x27da('0x65')][_0x27da('0x88')]=_0x3e9157['body'][_0x27da('0x99')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x8e')];_0x599f8c[_0x27da('0x65')]['messageId']=_0x3e9157[_0x27da('0x65')]['replyMessageId'];break;case _0x27da('0x9a'):_0x599f8c['body'][_0x27da('0x90')]=_0x3e9157[_0x27da('0x65')][0x0]['message']['id'];_0x599f8c[_0x27da('0x65')]['from']=_0x3e9157[_0x27da('0x65')][0x0][_0x27da('0x2d')][_0x27da('0x88')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157['body'][0x0][_0x27da('0x2d')]['text'];break;case _0x27da('0x9b'):_0x599f8c[_0x27da('0x65')][_0x27da('0x88')]=_0x3e9157['body'][_0x27da('0x88')];_0x599f8c[_0x27da('0x65')][_0x27da('0x65')]=_0x3e9157['body'][_0x27da('0x2d')];_0x599f8c[_0x27da('0x65')][_0x27da('0x90')]=_0x3e9157[_0x27da('0x65')][_0x27da('0x9c')];break;}}if(_0x599f8c[_0x27da('0x65')]['id']){delete _0x599f8c[_0x27da('0x65')]['id'];}if(_['isNil'](_0x599f8c[_0x27da('0x65')][_0x27da('0x88')])){throw new db[(_0x27da('0x9d'))][(_0x27da('0x80'))](_0x27da('0x9e'));}if(_['isNil'](_0x599f8c['body']['body'])||_0x599f8c[_0x27da('0x65')]['body']===''){throw new db[(_0x27da('0x9d'))][(_0x27da('0x80'))](_0x27da('0x9f'));}if(_['isNil'](_0x599f8c['body'][_0x27da('0xa0')])){throw new db[(_0x27da('0x9d'))][(_0x27da('0x80'))](_0x27da('0xa1')+_0x2c5886);}if(!_[_0x27da('0xa2')](_0x2c5886,_0x599f8c['body']['mapKey'])){throw new db['Sequelize'][(_0x27da('0x80'))](_0x27da('0xa3')+_0x2c5886);}_0x3392a8[_0x599f8c[_0x27da('0x65')]['mapKey']]=_0x599f8c['body']['from'];return db[_0x27da('0xa4')][_0x27da('0x63')]({'where':{'id':_0x599f8c[_0x27da('0x7b')][_0x27da('0x86')]},'include':[{'model':db[_0x27da('0x7f')],'as':_0x27da('0xa5'),'where':_0x3392a8,'limit':0x1,'order':[['updatedAt',_0x27da('0xa6')]]}]});})['then'](handleEntityNotFound(_0x1952a7,null))[_0x27da('0x3d')](function(_0x166fd5){if(_0x166fd5){_0x599f8c[_0x27da('0xa7')]=_[_0x27da('0xa8')](_0x166fd5,[_0x27da('0xa5')]);if(_0x166fd5[_0x27da('0xa5')][_0x27da('0x51')]){return _0x166fd5[_0x27da('0xa5')][0x0];}var _0x4c8c25=_[_0x27da('0x1c')](_0x599f8c[_0x27da('0x65')],{'firstName':_0x599f8c['body'][_0x27da('0x88')],'ListId':_0x166fd5['id']});_0x4c8c25[_0x599f8c['body'][_0x27da('0xa0')]]=_0x599f8c[_0x27da('0x65')]['from'];return db[_0x27da('0x7f')][_0x27da('0x64')](_0x4c8c25,{'fields':_0x5660c4,'raw':!![]});}})[_0x27da('0x3d')](handleEntityNotFound(_0x1952a7,null))['then'](function(_0x2a845a){if(_0x2a845a){_0x599f8c[_0x27da('0xa9')]=_0x2a845a;var _0x2ebc87={'ContactId':_0x2a845a['id'],'phone':_0x599f8c['body'][_0x27da('0x88')],'SmsAccountId':_0x3e9157[_0x27da('0x5e')]['id']};var _0x5385e4={'ContactId':_0x2a845a['id'],'SmsAccountId':_0x3e9157[_0x27da('0x5e')]['id'],'closed':![]};return db[_0x27da('0xaa')][_0x27da('0x63')]({'where':_0x5385e4})[_0x27da('0x3d')](function(_0x5a2018){if(_0x5a2018){return[_0x5a2018,![]];}return db[_0x27da('0xaa')][_0x27da('0x64')](_0x2ebc87)[_0x27da('0x3d')](function(_0x55ebf6){return[_0x55ebf6,!![]];});});}})[_0x27da('0xab')](function(_0x5bf424,_0x90d554){_0x599f8c[_0x27da('0xac')]=_0x5bf424[_0x27da('0x3e')]({'plain':!![]});_0x599f8c[_0x27da('0xac')][_0x27da('0xad')]=![];if(_0x90d554){if(_0x599f8c[_0x27da('0x7b')][_0x27da('0xae')]){_0x599f8c[_0x27da('0x7c')]['push']({'id':0x0,'priority':_0x599f8c[_0x27da('0x7c')][_0x27da('0x51')]+0x1,'app':'close','appdata':_0x27da('0xaf'),'interval':_0x27da('0xb0')});}_0x599f8c['interaction'][_0x27da('0xad')]=!![];}return db[_0x27da('0xb1')]['create']({'phone':_0x599f8c[_0x27da('0x65')][_0x27da('0x88')],'messageId':_0x599f8c[_0x27da('0x65')][_0x27da('0x90')],'body':_0x599f8c[_0x27da('0x65')][_0x27da('0x65')],'SmsAccountId':_0x3e9157['params']['id'],'SmsInteractionId':_0x5bf424['id'],'direction':'in','ContactId':_0x5bf424[_0x27da('0xb2')],'AttachmentId':_0x599f8c[_0x27da('0x65')]['AttachmentId']});})['then'](function(_0x55b38e){_0x599f8c[_0x27da('0x2d')]=_0x55b38e;if(_0x599f8c[_0x27da('0xac')][_0x27da('0xb3')]){return db[_0x27da('0xb4')]['find']({'attributes':['id',_0x27da('0x43')],'where':{'id':_0x599f8c['interaction']['UserId']}})[_0x27da('0x3d')](function(_0x50f3f1){if(_0x50f3f1){_0x599f8c[_0x27da('0x7c')][_0x27da('0xb5')]({'id':0x0,'priority':0x0,'app':_0x27da('0xb6'),'appdata':_0x50f3f1[_0x27da('0x43')]+','+(_0x599f8c['account'][_0x27da('0xb7')]||0xa),'interval':_0x27da('0xb0')});}return respondWithRpcPromise('Start',_0x27da('0xb8'),_0x599f8c);});}return respondWithRpcPromise(_0x27da('0xb9'),_0x27da('0xb8'),_0x599f8c);})[_0x27da('0x3d')](function(_0x5b17ec){if(_0x5b17ec){var _0x12f7b9=0xc8;var _0x4a2020='receiveMessage';logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x4a2020,_0x12f7b9,_0x27da('0xba'));logger[_0x27da('0x28')](_0x27da('0xbb'),_0x4a2020,_0x12f7b9,_0x27da('0xba'),JSON[_0x27da('0x2a')](_0x5b17ec));if(_0x599f8c[_0x27da('0x7b')][_0x27da('0x4b')]==='twilio'){return _0x1952a7[_0x27da('0x31')](_0x12f7b9)[_0x27da('0x37')]('Content-Type',_0x27da('0xbc'))[_0x27da('0x44')](_0x27da('0xbd'));}else{return _0x1952a7[_0x27da('0x31')](_0x12f7b9)['json'](_0x5b17ec);}}})[_0x27da('0x2f')](handleError(_0x1952a7,null));};exports[_0x27da('0xbe')]=function(_0x3aad85,_0x33472f){var _0x8d8a97=_0x3aad85[_0x27da('0x5e')]['id'];var _0x595555=_0x3aad85[_0x27da('0x65')];var _0x47f5de=0xc8;var _0x44d9af=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x27da('0xbf')][_0x27da('0xc0')][_0x27da('0xc1')]['READ_COMMITTED']},function(_0x13cd75){return db['SmsAccount']['findOne']({'where':{'id':_0x8d8a97},'transaction':_0x13cd75})[_0x27da('0x3d')](function(_0x55468b){if(_0x55468b){return db['SmsApplication'][_0x27da('0x41')]({'where':{'SmsAccountId':_0x8d8a97},'transaction':_0x13cd75})[_0x27da('0x3d')](function(){var _0x2e733a=_[_0x27da('0x48')](_0x595555,function(_0x4bb03f){_0x4bb03f['SmsAccountId']=_0x8d8a97;return _0x4bb03f;});return db['SmsApplication'][_0x27da('0xc2')](_0x2e733a,{'transaction':_0x13cd75});});}else{_0x47f5de=0x194;_0x44d9af=[];}});})['then'](function(){if(_0x47f5de!==0x194){return db[_0x27da('0x79')]['findAndCountAll']({'where':{'SmsAccountId':_0x8d8a97},'order':'priority'})[_0x27da('0x3d')](function(_0x1bc2db){_0x44d9af=_0x1bc2db;});}})['catch'](function(_0x513312){_0x47f5de=0x1f4;logger[_0x27da('0x2b')](_0x513312[_0x27da('0xc3')]);if(_0x513312['name']){delete _0x513312['name'];}_0x44d9af=_0x513312;})[_0x27da('0xc4')](function(){if(_0x44d9af===null){_0x33472f['sendStatus'](_0x47f5de);}else{if(_0x47f5de===0x1f4){_0x33472f[_0x27da('0x31')](_0x47f5de)[_0x27da('0x44')](_0x44d9af);}else{_0x33472f[_0x27da('0x31')](_0x47f5de)['json'](_0x44d9af);}}});};exports[_0x27da('0xc5')]=function(_0x123b57,_0x1869f9,_0x3d6da0){var _0x3f472d={};var _0x353f24={};var _0x521601;var _0x52a904;return db[_0x27da('0x49')][_0x27da('0x70')]({'where':{'id':_0x123b57[_0x27da('0x5e')]['id']}})['then'](handleEntityNotFound(_0x1869f9,null))[_0x27da('0x3d')](function(_0x24374b){if(_0x24374b){_0x521601=_0x24374b;_0x353f24['model']=_['keys'](db[_0x27da('0x79')][_0x27da('0x75')]);_0x353f24['query']=_[_0x27da('0x4d')](_0x123b57[_0x27da('0x4c')]);_0x353f24[_0x27da('0x57')]=_[_0x27da('0x5f')](_0x353f24[_0x27da('0x4e')],_0x353f24[_0x27da('0x4c')]);_0x3f472d[_0x27da('0x4f')]=_[_0x27da('0x5f')](_0x353f24['model'],qs[_0x27da('0x50')](_0x123b57[_0x27da('0x4c')][_0x27da('0x50')]));_0x3f472d[_0x27da('0x4f')]=_0x3f472d[_0x27da('0x4f')][_0x27da('0x51')]?_0x3f472d[_0x27da('0x4f')]:_0x353f24[_0x27da('0x4e')];_0x3f472d['order']=qs[_0x27da('0x55')](_0x123b57[_0x27da('0x4c')][_0x27da('0x55')]);_0x3f472d[_0x27da('0x56')]=qs[_0x27da('0x57')](_[_0x27da('0x58')](_0x123b57['query'],_0x353f24[_0x27da('0x57')]));if(_0x123b57[_0x27da('0x4c')]['filter']){_0x3f472d[_0x27da('0x56')]=_[_0x27da('0x5a')](_0x3f472d[_0x27da('0x56')],{'$or':_['map'](_0x3f472d['attributes'],function(_0x371749){var _0xbd6823={};_0xbd6823[_0x371749]={'$like':'%'+_0x123b57[_0x27da('0x4c')]['filter']+'%'};return _0xbd6823;})});}_0x3f472d=_['merge']({},_0x3f472d,_0x123b57['options']);return _0x521601['getApplications'](_0x3f472d);}})[_0x27da('0x3d')](function(_0x22e9de){if(_0x22e9de){_0x52a904=_0x22e9de[_0x27da('0x51')];if(!_0x123b57[_0x27da('0x4c')]['hasOwnProperty']('nolimit')){_0x3f472d[_0x27da('0x35')]=qs[_0x27da('0x35')](_0x123b57[_0x27da('0x4c')][_0x27da('0x35')]);_0x3f472d[_0x27da('0x33')]=qs['offset'](_0x123b57[_0x27da('0x4c')][_0x27da('0x33')]);}return _0x521601['getApplications'](_0x3f472d);}})[_0x27da('0x3d')](function(_0x53c899){if(_0x53c899){return _0x53c899?{'count':_0x52a904,'rows':_0x53c899}:null;}})['then'](respondWithResult(_0x1869f9,null))[_0x27da('0x2f')](handleError(_0x1869f9,null));};exports[_0x27da('0xc6')]=function(_0x11de14,_0x51579b,_0x32916f){var _0x639da4={'raw':![],'where':{}};var _0x36fd92={};var _0x722caf={'count':0x0,'rows':[]};return db[_0x27da('0x49')][_0x27da('0x70')]({'where':{'id':_0x11de14[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x51579b,null))[_0x27da('0x3d')](function(_0x40cca7){if(_0x40cca7){_0x36fd92[_0x27da('0x4e')]=_[_0x27da('0x4d')](db[_0x27da('0xaa')][_0x27da('0x75')]);_0x36fd92[_0x27da('0x4c')]=_[_0x27da('0x4d')](_0x11de14['query']);_0x36fd92['filters']=_['intersection'](_0x36fd92[_0x27da('0x4e')],_0x36fd92[_0x27da('0x4c')]);_0x639da4[_0x27da('0x4f')]=_[_0x27da('0x5f')](_0x36fd92[_0x27da('0x4e')],qs[_0x27da('0x50')](_0x11de14[_0x27da('0x4c')][_0x27da('0x50')]));_0x639da4[_0x27da('0x4f')]=_0x639da4['attributes']['length']?_0x639da4[_0x27da('0x4f')]:_0x36fd92[_0x27da('0x4e')];if(!_0x11de14[_0x27da('0x4c')][_0x27da('0x52')]('nolimit')){_0x639da4[_0x27da('0x35')]=qs['limit'](_0x11de14[_0x27da('0x4c')]['limit']);_0x639da4[_0x27da('0x33')]=qs[_0x27da('0x33')](_0x11de14[_0x27da('0x4c')][_0x27da('0x33')]);}_0x639da4[_0x27da('0x54')]=qs[_0x27da('0x55')](_0x11de14[_0x27da('0x4c')][_0x27da('0x55')]);_0x639da4[_0x27da('0x56')]=qs[_0x27da('0x57')](_[_0x27da('0x58')](_0x11de14['query'],_0x36fd92[_0x27da('0x57')]));_0x639da4[_0x27da('0x56')][_0x27da('0x71')]=_0x40cca7['id'];if(_0x11de14['query'][_0x27da('0x59')]){_0x639da4[_0x27da('0x56')]=_['merge'](_0x639da4[_0x27da('0x56')],{'$or':_['map'](_0x639da4[_0x27da('0x4f')],function(_0x2d25f8){var _0x13dcc2={};_0x13dcc2[_0x2d25f8]={'$like':'%'+_0x11de14[_0x27da('0x4c')][_0x27da('0x59')]+'%'};return _0x13dcc2;})});}_0x639da4=_[_0x27da('0x5a')]({},_0x639da4,_0x11de14[_0x27da('0x62')]);return db[_0x27da('0xaa')][_0x27da('0x36')]({'where':_0x639da4[_0x27da('0x56')]})[_0x27da('0x3d')](function(_0x2c5771){_0x722caf[_0x27da('0x36')]=_0x2c5771;if(_0x11de14['query'][_0x27da('0x60')]){_0x639da4[_0x27da('0x61')]=[{'model':db['CmContact'],'as':_0x27da('0xc7'),'required':![]},{'model':db[_0x27da('0xb4')],'as':'Owner','attributes':['name',_0x27da('0xc8'),_0x27da('0xc9')],'required':![]},{'model':db[_0x27da('0xca')],'as':_0x27da('0xcb'),'attributes':['id','name',_0x27da('0xcc')],'where':_0x11de14[_0x27da('0x4c')][_0x27da('0xcd')]?{'id':_0x11de14[_0x27da('0x4c')]['tag']}:undefined,'required':_0x11de14['query'][_0x27da('0xcd')]?!![]:![]}];}return db['SmsInteraction'][_0x27da('0x5c')](_0x639da4);})['then'](function(_0x306b35){_0x722caf[_0x27da('0x5d')]=_0x306b35;return _0x722caf;});}})[_0x27da('0x3d')](respondWithFilteredResult(_0x51579b,_0x639da4))['catch'](handleError(_0x51579b,null));};exports[_0x27da('0x44')]=function(_0x330852,_0x5d1bd7,_0x197611){var _0x953368,_0x485c64,_0x4b5e39;if(_[_0x27da('0xce')](_0x330852[_0x27da('0x65')][_0x27da('0x65')])||_0x330852[_0x27da('0x65')][_0x27da('0x65')]===''){throw new db[(_0x27da('0x9d'))]['ValidationError'](_0x27da('0x9f'));}if(_[_0x27da('0xce')](_0x330852[_0x27da('0x65')]['to'])){throw new db[(_0x27da('0x9d'))]['ValidationError'](_0x27da('0xcf'));}_0x953368=_0x330852[_0x27da('0x65')]['to'];return db[_0x27da('0x49')][_0x27da('0x63')]({'where':{'id':_0x330852['params']['id']},'include':[{'model':db[_0x27da('0xa4')],'as':_0x27da('0xd0'),'include':[{'model':db['CmContact'],'as':_0x27da('0xa5'),'where':{'mobile':_0x953368},'limit':0x1,'order':[[_0x27da('0x83'),_0x27da('0xa6')]]}]}]})[_0x27da('0x3d')](handleEntityNotFound(_0x5d1bd7,null))[_0x27da('0x3d')](function(_0xf3e83b){if(_0xf3e83b&&_0xf3e83b[_0x27da('0xd0')]){_0x485c64=_0xf3e83b[_0x27da('0x3e')]({'plain':!![]});if(_0x485c64[_0x27da('0xd0')]&&_0x485c64[_0x27da('0xd0')][_0x27da('0xa5')][_0x27da('0x51')]){return _0x485c64['List']['Contacts'][0x0];}return db[_0x27da('0x7f')][_0x27da('0x64')](_[_0x27da('0x1c')](_0x330852['body'],{'firstName':_0x953368,'mobile':_0x953368,'phone':_0x953368,'ListId':_0x485c64[_0x27da('0x86')]}));}})[_0x27da('0x3d')](handleEntityNotFound(_0x5d1bd7,null))[_0x27da('0x3d')](function(_0x3b7843){if(_0x3b7843){_0x4b5e39=_0x3b7843;return db[_0x27da('0xaa')]['find']({'where':{'ContactId':_0x4b5e39['id'],'closed':![],'SmsAccountId':_0x485c64['id']}})[_0x27da('0x3d')](function(_0x58fbf3){if(_0x58fbf3){return[_0x58fbf3,![]];}return db[_0x27da('0xaa')][_0x27da('0x64')]({'UserId':_0x330852['user']['id'],'ContactId':_0x4b5e39['id'],'SmsAccountId':_0x485c64['id'],'phone':_0x953368,'firstMsgDirection':'out','Messages':[_[_0x27da('0x5a')](_0x330852[_0x27da('0x65')],{'read':![],'body':_0x330852[_0x27da('0x65')][_0x27da('0x65')],'phone':_0x953368,'SmsAccountId':_0x485c64['id'],'UserId':_0x330852['user']['id'],'ContactId':_0x4b5e39['id']})]},{'include':[{'model':db[_0x27da('0xb1')],'as':'Messages'}]})['then'](function(_0x1e1f99){return[_0x1e1f99,!![]];});});}})[_0x27da('0xab')](function(_0x4b1cf1,_0x39b42a){if(_0x39b42a){return _0x4b1cf1;}return db[_0x27da('0xb1')][_0x27da('0x64')](_[_0x27da('0x5a')](_0x330852[_0x27da('0x65')],{'read':![],'body':_0x330852[_0x27da('0x65')][_0x27da('0x65')],'phone':_0x953368,'SmsAccountId':_0x485c64['id'],'SmsInteractionId':_0x4b1cf1['id'],'UserId':_0x330852[_0x27da('0x66')]['id'],'ContactId':_0x4b5e39['id']}))[_0x27da('0x3d')](function(_0x1f0a00){_0x4b1cf1[_0x27da('0xd1')][_0x27da('0xd2')]=[];_0x4b1cf1[_0x27da('0xd1')][_0x27da('0xd2')][_0x27da('0xd3')](_0x1f0a00[_0x27da('0xd1')]);return _0x4b1cf1;});})[_0x27da('0x3d')](respondWithResult(_0x5d1bd7,null))[_0x27da('0x2f')](handleError(_0x5d1bd7,null));};exports[_0x27da('0x31')]=function(_0x5f39bf,_0x3515a9,_0x4ce63f){if(_0x5f39bf['body']['id']){delete _0x5f39bf[_0x27da('0x65')]['id'];}var _0x4e6986,_0x45ea1e,_0x4d081c;return db[_0x27da('0x49')][_0x27da('0x63')]({'where':{'id':_0x5f39bf[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x3515a9,null))[_0x27da('0x3d')](function(_0x11aeb1){if(_0x11aeb1){_0x4d081c=_0x11aeb1;logger[_0x27da('0x28')](_0x27da('0x29'),'status',_0x27da('0xd4'),_0x11aeb1['type'],util[_0x27da('0xd5')](_0x5f39bf[_0x27da('0x65')],{'showHidden':![],'depth':null}));switch(_0x11aeb1[_0x27da('0x4b')]){case _0x27da('0x8c'):if(_0x5f39bf[_0x27da('0x65')][_0x27da('0xd6')]&&_0x5f39bf[_0x27da('0x65')][_0x27da('0x31')]){_0x45ea1e=_0x5f39bf[_0x27da('0x65')][_0x27da('0x31')];return db[_0x27da('0xb1')][_0x27da('0x63')]({'where':{'messageId':_0x5f39bf[_0x27da('0x65')]['skebby_dispatch_id']}});}break;case'connectel':if(_0x5f39bf[_0x27da('0x65')][_0x27da('0xd7')]&&_0x5f39bf[_0x27da('0x65')][_0x27da('0xd8')]){_0x45ea1e=_0x5f39bf['body'][_0x27da('0xd8')];return db[_0x27da('0xb1')]['find']({'where':{'messageId':_0x5f39bf[_0x27da('0x65')][_0x27da('0xd7')]}});}break;case _0x27da('0x8f'):if(_0x5f39bf[_0x27da('0x65')][_0x27da('0x91')]&&_0x5f39bf[_0x27da('0x65')][_0x27da('0xd9')]){_0x45ea1e=_0x5f39bf[_0x27da('0x65')][_0x27da('0xd9')];return db[_0x27da('0xb1')]['find']({'where':{'messageId':_0x5f39bf[_0x27da('0x65')]['message_id']}});}break;case _0x27da('0xda'):var _0x173496=_0x5f39bf['body'][_0x27da('0x94')][0x0];if(_0x173496[_0x27da('0x90')]&&_0x173496['status'][_0x27da('0xdb')]===_0x27da('0xdc')){_0x45ea1e=_0x173496[_0x27da('0x31')][_0x27da('0xdb')];return db[_0x27da('0xb1')]['find']({'where':{'messageId':_0x173496[_0x27da('0x90')]}});}break;case _0x27da('0x98'):if(_0x5f39bf[_0x27da('0x65')]['messageId']&&_0x5f39bf['body']['status']){_0x45ea1e=_0x5f39bf['body'][_0x27da('0x31')];return db[_0x27da('0xb1')][_0x27da('0x63')]({'where':{'messageId':_0x5f39bf[_0x27da('0x65')][_0x27da('0x90')]}});}break;case _0x27da('0x9a'):if(_0x5f39bf[_0x27da('0x65')][0x0][_0x27da('0x2d')]['id']){_0x45ea1e=_0x5f39bf[_0x27da('0x65')][0x0][_0x27da('0x4b')];return db[_0x27da('0xb1')][_0x27da('0x63')]({'where':{'messageId':_0x5f39bf[_0x27da('0x65')][0x0][_0x27da('0x2d')]['id']}});}break;case'intelepeer':if(_0x5f39bf['body'][_0x27da('0xdd')]&&_0x5f39bf[_0x27da('0x65')][_0x27da('0x31')]){_0x45ea1e=_0x5f39bf[_0x27da('0x65')]['status'];return db['SmsMessage'][_0x27da('0x63')]({'where':{'messageId':_0x5f39bf[_0x27da('0x65')][_0x27da('0xdd')]}});}break;}}})[_0x27da('0x3d')](handleEntityNotFound(_0x3515a9,null))[_0x27da('0x3d')](function(_0x2856b6){if(_0x2856b6){_0x4e6986=_0x2856b6;switch(_0x4d081c['type']){case _0x27da('0x8c'):if(_0x45ea1e===_0x27da('0xdc')){return _0x4e6986[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')](_0x27da('0x29'),_0x27da('0x31'),'skebby',util['inspect'](_0x5f39bf[_0x27da('0x65')],{'showHidden':![],'depth':null}));}break;case _0x27da('0xde'):if(_0x45ea1e==='1'){return _0x4e6986[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')](_0x27da('0x29'),_0x27da('0x31'),'skebby',util[_0x27da('0xd5')](_0x5f39bf[_0x27da('0x65')],{'showHidden':![],'depth':null}));}break;case _0x27da('0x8f'):if(!_0x5f39bf['body']['error_code']&&_0x45ea1e>=0xc8&&_0x45ea1e<=0xce){return _0x4e6986[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')](_0x27da('0x29'),_0x27da('0x31'),_0x27da('0x8f'),util[_0x27da('0xd5')](_0x5f39bf[_0x27da('0x65')],{'showHidden':![],'depth':null}));}break;case _0x27da('0xda'):var _0x51261d=_0x5f39bf[_0x27da('0x65')][_0x27da('0x94')][0x0];if(_0x51261d[_0x27da('0x31')]['groupName']===_0x27da('0xdc')){return _0x4e6986[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')](_0x27da('0x29'),'status',_0x27da('0xda'),util['inspect'](_0x5f39bf[_0x27da('0x65')],{'showHidden':![],'depth':null}));}break;case _0x27da('0x98'):if(_0x45ea1e=='DELIVERED_TO_GATEWAY'||_0x45ea1e==_0x27da('0xdf')){return _0x4e6986[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x27da('0x98'),util[_0x27da('0xd5')](_0x5f39bf['body'],{'showHidden':![],'depth':null}));}break;case _0x27da('0x9a'):if(_0x45ea1e==_0x27da('0xe0')){return _0x4e6986[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x27da('0x31'),_0x27da('0x9a'),util['inspect'](_0x5f39bf[_0x27da('0x65')],{'showHidden':![],'depth':null}));}break;case _0x27da('0x9b'):if(_0x45ea1e==='DELIVRD'||_0x45ea1e===_0x27da('0xe1')){return _0x4e6986[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')](_0x27da('0x29'),_0x27da('0x31'),_0x27da('0x9b'),util[_0x27da('0xd5')](_0x5f39bf[_0x27da('0x65')],{'showHidden':![],'depth':null}));}break;}return _0x4e6986;}})[_0x27da('0x3d')](respondWithResult(_0x3515a9,null))['catch'](handleError(_0x3515a9,null));};exports[_0x27da('0xe2')]=function(_0x597f8a,_0x255f15,_0x31dc53){var _0x36574a,_0x4cc3e2,_0x49f0cc;return db[_0x27da('0x49')][_0x27da('0x63')]({'where':{'id':_0x597f8a['params']['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x255f15,null))[_0x27da('0x3d')](function(_0x2039e1){if(_0x2039e1){_0x49f0cc=_0x2039e1;logger['debug'](_0x27da('0x29'),'status',_0x27da('0xd4'),_0x2039e1['type'],util['inspect'](_0x597f8a[_0x27da('0x4c')],{'showHidden':![],'depth':null}));switch(_0x2039e1[_0x27da('0x4b')]){case _0x27da('0x95'):if(_0x597f8a[_0x27da('0x4c')][_0x27da('0xe3')]&&_0x597f8a[_0x27da('0x4c')][_0x27da('0xe4')]){_0x4cc3e2=_0x597f8a[_0x27da('0x4c')]['state'];return db[_0x27da('0xb1')][_0x27da('0x63')]({'where':{'messageId':_0x597f8a[_0x27da('0x4c')]['message-id']}});}break;}}})[_0x27da('0x3d')](handleEntityNotFound(_0x255f15,null))[_0x27da('0x3d')](function(_0x7b4485){if(_0x7b4485){_0x36574a=_0x7b4485;switch(_0x49f0cc[_0x27da('0x4b')]){case _0x27da('0x95'):if(_0x4cc3e2==='2'||_0x4cc3e2==='6'){return _0x36574a[_0x27da('0x3c')]({'read':!![]});}else{logger[_0x27da('0x2b')](_0x27da('0x29'),_0x27da('0x31'),_0x27da('0x95'),util[_0x27da('0xd5')](_0x597f8a[_0x27da('0x4c')],{'showHidden':![],'depth':null}));};break;}return _0x36574a;}})['then'](respondWithResult(_0x255f15,null))['catch'](handleError(_0x255f15,null));};exports[_0x27da('0xe5')]=function(_0x37c165,_0x1f88f0,_0x493bf9){return db[_0x27da('0x49')][_0x27da('0x63')]({'where':{'id':_0x37c165[_0x27da('0x5e')]['id']}})[_0x27da('0x3d')](handleEntityNotFound(_0x1f88f0,null))['then'](function(_0x464af6){if(_0x464af6){return _0x464af6[_0x27da('0xe5')](_0x37c165[_0x27da('0x65')][_0x27da('0xe6')],_[_0x27da('0xa8')](_0x37c165['body'],[_0x27da('0xe6'),'id'])||{})['spread'](function(_0x49c0e6){for(var _0x4b8bf9=0x0;_0x4b8bf9<_0x37c165[_0x27da('0x65')][_0x27da('0xe6')][_0x27da('0x51')];_0x4b8bf9+=0x1){socket[_0x27da('0xe7')](_0x27da('0xe8'),{'UserId':Number(_0x37c165[_0x27da('0x65')]['ids'][_0x4b8bf9]),'SmsAccountId':Number(_0x37c165[_0x27da('0x5e')]['id'])});}return _0x49c0e6;});}})[_0x27da('0x3d')](respondWithResult(_0x1f88f0,null))[_0x27da('0x2f')](handleError(_0x1f88f0,null));};exports[_0x27da('0xe9')]=function(_0x2d51ed,_0x43cc7e,_0x3b6f48){return db[_0x27da('0x49')][_0x27da('0x63')]({'where':{'id':_0x2d51ed[_0x27da('0x5e')]['id']}})['then'](handleEntityNotFound(_0x43cc7e,null))[_0x27da('0x3d')](function(_0x9dc9a0){if(_0x9dc9a0){return _0x9dc9a0[_0x27da('0xe9')](_0x2d51ed[_0x27da('0x4c')][_0x27da('0xe6')])[_0x27da('0x3d')](function(){if(_[_0x27da('0xea')](_0x2d51ed[_0x27da('0x4c')][_0x27da('0xe6')])){for(var _0x2a0a03=0x0;_0x2a0a03<_0x2d51ed[_0x27da('0x4c')][_0x27da('0xe6')][_0x27da('0x51')];_0x2a0a03+=0x1){socket[_0x27da('0xe7')](_0x27da('0xeb'),{'UserId':Number(_0x2d51ed['query']['ids'][_0x2a0a03]),'SmsAccountId':Number(_0x2d51ed[_0x27da('0x5e')]['id'])});}}else{socket[_0x27da('0xe7')](_0x27da('0xeb'),{'UserId':Number(_0x2d51ed[_0x27da('0x4c')][_0x27da('0xe6')]),'SmsAccountId':Number(_0x2d51ed[_0x27da('0x5e')]['id'])});}});}})[_0x27da('0x3d')](respondWithStatusCode(_0x43cc7e,null))[_0x27da('0x2f')](handleError(_0x43cc7e,null));};exports[_0x27da('0xec')]=function(_0x2bb118,_0x4727b6,_0x36f266){var _0x2b1ab5={};var _0x5d7fd8={};var _0x2c6d50;var _0x431d6e;return db[_0x27da('0x49')][_0x27da('0x70')]({'where':{'id':_0x2bb118[_0x27da('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4727b6,null))[_0x27da('0x3d')](function(_0x50574a){if(_0x50574a){_0x2c6d50=_0x50574a;_0x5d7fd8['model']=_[_0x27da('0x4d')](db[_0x27da('0xb4')][_0x27da('0x75')]);_0x5d7fd8['query']=_[_0x27da('0x4d')](_0x2bb118[_0x27da('0x4c')]);_0x5d7fd8[_0x27da('0x57')]=_['intersection'](_0x5d7fd8[_0x27da('0x4e')],_0x5d7fd8[_0x27da('0x4c')]);_0x2b1ab5[_0x27da('0x4f')]=_['intersection'](_0x5d7fd8[_0x27da('0x4e')],qs['fields'](_0x2bb118[_0x27da('0x4c')]['fields']));_0x2b1ab5[_0x27da('0x4f')]=_0x2b1ab5[_0x27da('0x4f')][_0x27da('0x51')]?_0x2b1ab5[_0x27da('0x4f')]:_0x5d7fd8[_0x27da('0x4e')];_0x2b1ab5[_0x27da('0x54')]=qs['sort'](_0x2bb118[_0x27da('0x4c')][_0x27da('0x55')]);_0x2b1ab5['where']=qs[_0x27da('0x57')](_[_0x27da('0x58')](_0x2bb118[_0x27da('0x4c')],_0x5d7fd8['filters']));if(_0x2bb118[_0x27da('0x4c')]['filter']){_0x2b1ab5[_0x27da('0x56')]=_[_0x27da('0x5a')](_0x2b1ab5[_0x27da('0x56')],{'$or':_[_0x27da('0x48')](_0x2b1ab5[_0x27da('0x4f')],function(_0x384a86){var _0x119159={};_0x119159[_0x384a86]={'$like':'%'+_0x2bb118[_0x27da('0x4c')][_0x27da('0x59')]+'%'};return _0x119159;})});}_0x2b1ab5=_[_0x27da('0x5a')]({},_0x2b1ab5,_0x2bb118[_0x27da('0x62')]);return _0x2c6d50[_0x27da('0xec')](_0x2b1ab5);}})[_0x27da('0x3d')](function(_0x440fdf){if(_0x440fdf){_0x431d6e=_0x440fdf['length'];if(!_0x2bb118['query'][_0x27da('0x52')](_0x27da('0x53'))){_0x2b1ab5[_0x27da('0x35')]=qs[_0x27da('0x35')](_0x2bb118[_0x27da('0x4c')][_0x27da('0x35')]);_0x2b1ab5[_0x27da('0x33')]=qs[_0x27da('0x33')](_0x2bb118[_0x27da('0x4c')]['offset']);}return _0x2c6d50['getAgents'](_0x2b1ab5);}})[_0x27da('0x3d')](function(_0x281ff0){if(_0x281ff0){return _0x281ff0?{'count':_0x431d6e,'rows':_0x281ff0}:null;}})[_0x27da('0x3d')](respondWithResult(_0x4727b6,null))['catch'](handleError(_0x4727b6,null));};
\ No newline at end of file
+var _0x7b89=['set','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','priority','finally','getApplications','getInteractions','Contact','User','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','dataValues','Messages','skebby_dispatch_id','requestid','statusInt','status_code','DELIVERED','intelepeer','redif','inspect','error_code','groupName','RECEIVED_BY_RECIPIENT','message-delivered','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsAccount.socket','jayson/promise','client','http','request','then','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','catch','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','update','get','SmsAccounts','destroy','stack','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','filters','merge','where','VIRTUAL','filter','options','includeAll','include','findAll','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','Disposition','findOne','hasOwnProperty','pick','SmsAccountId','removeDispositions','addAnswer','CannedAnswer','rows','removeAnswers','ids','notify','sms','SmsApplication','Applications','applications','orderBy','asc','account','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','twilio','From','MessageSid','skebby','from','sender','text','connectel','clicksend','messageId','message_id','plivo','Text','MessageUUID','infobip','results','csc','segmentedMessage','clickatell','replyMessageId','bandwidth','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','list','omit','Contacts','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','unshift','waitForTheAssignedAgent','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x7b89,0x11c));var _0x97b8=function(_0x437a3c,_0x7ff03a){_0x437a3c=_0x437a3c-0x0;var _0x351213=_0x7b89[_0x437a3c];return _0x351213;};'use strict';var emlformat=require(_0x97b8('0x0'));var rimraf=require(_0x97b8('0x1'));var zipdir=require(_0x97b8('0x2'));var jsonpatch=require(_0x97b8('0x3'));var rp=require(_0x97b8('0x4'));var moment=require(_0x97b8('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x97b8('0x6'));var path=require(_0x97b8('0x7'));var sox=require(_0x97b8('0x8'));var csv=require(_0x97b8('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97b8('0xa'));var _=require(_0x97b8('0xb'));var squel=require(_0x97b8('0xc'));var crypto=require(_0x97b8('0xd'));var jsforce=require(_0x97b8('0xe'));var deskjs=require(_0x97b8('0xf'));var toCsv=require(_0x97b8('0x9'));var querystring=require(_0x97b8('0x10'));var Papa=require(_0x97b8('0x11'));var Redis=require(_0x97b8('0x12'));var authService=require(_0x97b8('0x13'));var qs=require(_0x97b8('0x14'));var as=require(_0x97b8('0x15'));var hardwareService=require(_0x97b8('0x16'));var logger=require(_0x97b8('0x17'))(_0x97b8('0x18'));var utils=require(_0x97b8('0x19'));var config=require(_0x97b8('0x1a'));var licenseUtil=require(_0x97b8('0x1b'));var db=require(_0x97b8('0x1c'))['db'];config[_0x97b8('0x1d')]=_[_0x97b8('0x1e')](config[_0x97b8('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0x97b8('0x1f'))(new Redis(config[_0x97b8('0x1d')]));require(_0x97b8('0x20'))['register'](socket);var jayson=require(_0x97b8('0x21'));var client=jayson[_0x97b8('0x22')][_0x97b8('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x3e68d5,_0x8c300,_0x6bb493,_0xa34a83){return new BPromise(function(_0x207a10,_0x18008a){var _0x16ea7c=_0xa34a83||client;return _0x16ea7c[_0x97b8('0x24')](_0x3e68d5,_0x6bb493)[_0x97b8('0x25')](function(_0x48ac97){logger[_0x97b8('0x26')]('SmsAccount,\x20%s,\x20%s',_0x8c300,_0x97b8('0x27'));logger[_0x97b8('0x28')](_0x97b8('0x29'),_0x8c300,_0x97b8('0x27'),JSON[_0x97b8('0x2a')](_0x48ac97));if(_0x48ac97[_0x97b8('0x2b')]){if(_0x48ac97['error'][_0x97b8('0x2c')]===0x1f4){logger[_0x97b8('0x2b')](_0x97b8('0x2d'),_0x8c300,_0x48ac97[_0x97b8('0x2b')][_0x97b8('0x2e')]);return _0x18008a(_0x48ac97['error']['message']);}logger[_0x97b8('0x2b')](_0x97b8('0x2d'),_0x8c300,_0x48ac97[_0x97b8('0x2b')][_0x97b8('0x2e')]);return _0x207a10(_0x48ac97[_0x97b8('0x2b')][_0x97b8('0x2e')]);}else{logger[_0x97b8('0x26')](_0x97b8('0x2d'),_0x8c300,_0x97b8('0x27'));_0x207a10(_0x48ac97['result'][_0x97b8('0x2e')]);}})[_0x97b8('0x2f')](function(_0x590822){logger[_0x97b8('0x2b')](_0x97b8('0x2d'),_0x8c300,_0x590822);_0x18008a(_0x590822);});});}function respondWithStatusCode(_0x585c5f,_0x1ac6f4){_0x1ac6f4=_0x1ac6f4||0xcc;return function(_0x385e78){if(_0x385e78){return _0x585c5f[_0x97b8('0x30')](_0x1ac6f4);}return _0x585c5f['status'](_0x1ac6f4)[_0x97b8('0x31')]();};}function respondWithResult(_0x11182c,_0x411cdd){_0x411cdd=_0x411cdd||0xc8;return function(_0x512261){if(_0x512261){return _0x11182c[_0x97b8('0x32')](_0x411cdd)[_0x97b8('0x33')](_0x512261);}};}function respondWithFilteredResult(_0x1bfd8e,_0x1added){return function(_0x2263d7){if(_0x2263d7){var _0x15b7b9=typeof _0x1added['offset']===_0x97b8('0x34')&&typeof _0x1added[_0x97b8('0x35')]===_0x97b8('0x34');var _0x5c4f9b=_0x2263d7[_0x97b8('0x36')];var _0xce3a07=_0x15b7b9?0x0:_0x1added[_0x97b8('0x37')];var _0xc1b403=_0x15b7b9?_0x2263d7[_0x97b8('0x36')]:_0x1added[_0x97b8('0x37')]+_0x1added['limit'];var _0x3b5360;if(_0xc1b403>=_0x5c4f9b){_0xc1b403=_0x5c4f9b;_0x3b5360=0xc8;}else{_0x3b5360=0xce;}_0x1bfd8e[_0x97b8('0x32')](_0x3b5360);return _0x1bfd8e['set'](_0x97b8('0x38'),_0xce3a07+'-'+_0xc1b403+'/'+_0x5c4f9b)['json'](_0x2263d7);}return null;};}function patchUpdates(_0x3e2e3a){return function(_0xc41e9e){try{jsonpatch[_0x97b8('0x39')](_0xc41e9e,_0x3e2e3a,!![]);}catch(_0x18c3ca){return BPromise[_0x97b8('0x3a')](_0x18c3ca);}return _0xc41e9e['save']();};}function saveUpdates(_0x1dfebd,_0x2b53be){return function(_0x35a52e){if(_0x35a52e){return _0x35a52e[_0x97b8('0x3b')](_0x1dfebd)[_0x97b8('0x25')](function(_0x4773e3){return _0x4773e3;});}return null;};}function removeEntity(_0x1f23c6,_0x1792e0){return function(_0x45a52e){if(_0x45a52e){return _0x45a52e['destroy']()[_0x97b8('0x25')](function(){var _0x35354a=_0x45a52e[_0x97b8('0x3c')]({'plain':!![]});var _0x355035=_0x97b8('0x3d');return db['UserProfileResource'][_0x97b8('0x3e')]({'where':{'type':_0x355035,'resourceId':_0x35354a['id']}})[_0x97b8('0x25')](function(){return _0x45a52e;});})[_0x97b8('0x25')](function(){_0x1f23c6[_0x97b8('0x32')](0xcc)[_0x97b8('0x31')]();});}};}function handleEntityNotFound(_0x216038,_0x5b341c){return function(_0x599f0d){if(!_0x599f0d){_0x216038['sendStatus'](0x194);}return _0x599f0d;};}function handleError(_0x46746e,_0x6131e7){_0x6131e7=_0x6131e7||0x1f4;return function(_0x392e58){logger[_0x97b8('0x2b')](_0x392e58[_0x97b8('0x3f')]);if(_0x392e58[_0x97b8('0x40')]){delete _0x392e58[_0x97b8('0x40')];}_0x46746e['status'](_0x6131e7)[_0x97b8('0x41')](_0x392e58);};}exports[_0x97b8('0x42')]=function(_0x15e37a,_0x2f3f4f){var _0x5e3f99={'include':[{'model':db[_0x97b8('0x43')],'as':_0x97b8('0x44')}]},_0x37e159={},_0x3307f8={'count':0x0,'rows':[]};var _0x7214eb=_[_0x97b8('0x45')](db[_0x97b8('0x46')][_0x97b8('0x47')],function(_0x4e10b4){return{'name':_0x4e10b4[_0x97b8('0x48')],'type':_0x4e10b4[_0x97b8('0x49')][_0x97b8('0x4a')]};});_0x37e159[_0x97b8('0x4b')]=_[_0x97b8('0x45')](_0x7214eb,_0x97b8('0x40'));_0x37e159[_0x97b8('0x4c')]=_[_0x97b8('0x4d')](_0x15e37a[_0x97b8('0x4c')]);_0x37e159['filters']=_[_0x97b8('0x4e')](_0x37e159[_0x97b8('0x4b')],_0x37e159[_0x97b8('0x4c')]);_0x5e3f99['attributes']=_[_0x97b8('0x4e')](_0x37e159['model'],qs['fields'](_0x15e37a['query'][_0x97b8('0x4f')]));_0x5e3f99[_0x97b8('0x50')]=_0x5e3f99['attributes'][_0x97b8('0x51')]?_0x5e3f99['attributes']:_0x37e159[_0x97b8('0x4b')];if(!_0x15e37a[_0x97b8('0x4c')]['hasOwnProperty'](_0x97b8('0x52'))){_0x5e3f99[_0x97b8('0x35')]=qs['limit'](_0x15e37a[_0x97b8('0x4c')][_0x97b8('0x35')]);_0x5e3f99[_0x97b8('0x37')]=qs[_0x97b8('0x37')](_0x15e37a[_0x97b8('0x4c')][_0x97b8('0x37')]);}_0x5e3f99[_0x97b8('0x53')]=qs[_0x97b8('0x54')](_0x15e37a[_0x97b8('0x4c')][_0x97b8('0x54')]);_0x5e3f99['where']=qs[_0x97b8('0x55')](_['pick'](_0x15e37a[_0x97b8('0x4c')],_0x37e159[_0x97b8('0x55')]),_0x7214eb);if(_0x15e37a[_0x97b8('0x4c')]['filter']){_0x5e3f99['where']=_[_0x97b8('0x56')](_0x5e3f99[_0x97b8('0x57')],{'$or':_[_0x97b8('0x45')](_0x7214eb,function(_0x3adb24){if(_0x3adb24[_0x97b8('0x49')]!==_0x97b8('0x58')){var _0x3e1463={};_0x3e1463[_0x3adb24[_0x97b8('0x40')]]={'$like':'%'+_0x15e37a[_0x97b8('0x4c')][_0x97b8('0x59')]+'%'};return _0x3e1463;}})});}_0x5e3f99=_[_0x97b8('0x56')]({},_0x5e3f99,_0x15e37a[_0x97b8('0x5a')]);var _0x2bbd68={'where':_0x5e3f99[_0x97b8('0x57')]};return db[_0x97b8('0x46')][_0x97b8('0x36')](_0x2bbd68)['then'](function(_0x50e7d7){_0x3307f8[_0x97b8('0x36')]=_0x50e7d7;if(_0x15e37a['query'][_0x97b8('0x5b')]){_0x5e3f99[_0x97b8('0x5c')]=[{'all':!![]}];}return db['SmsAccount'][_0x97b8('0x5d')](_0x5e3f99);})['then'](function(_0x10aa7d){_0x3307f8['rows']=_0x10aa7d;return _0x3307f8;})[_0x97b8('0x25')](respondWithFilteredResult(_0x2f3f4f,_0x5e3f99))[_0x97b8('0x2f')](handleError(_0x2f3f4f,null));};exports[_0x97b8('0x5e')]=function(_0x5139a1,_0x51ceac){var _0x26a10c={'raw':![],'where':{'id':_0x5139a1[_0x97b8('0x5f')]['id']},'include':[{'model':db[_0x97b8('0x43')],'as':_0x97b8('0x44')}]},_0xec4dcd={};_0xec4dcd[_0x97b8('0x4b')]=_[_0x97b8('0x4d')](db['SmsAccount'][_0x97b8('0x47')]);_0xec4dcd[_0x97b8('0x4c')]=_['keys'](_0x5139a1[_0x97b8('0x4c')]);_0xec4dcd[_0x97b8('0x55')]=_['intersection'](_0xec4dcd['model'],_0xec4dcd['query']);_0x26a10c['attributes']=_[_0x97b8('0x4e')](_0xec4dcd[_0x97b8('0x4b')],qs['fields'](_0x5139a1[_0x97b8('0x4c')][_0x97b8('0x4f')]));_0x26a10c[_0x97b8('0x50')]=_0x26a10c['attributes']['length']?_0x26a10c[_0x97b8('0x50')]:_0xec4dcd[_0x97b8('0x4b')];if(_0x5139a1[_0x97b8('0x4c')][_0x97b8('0x5b')]){_0x26a10c[_0x97b8('0x5c')]=[{'all':!![]}];}_0x26a10c=_[_0x97b8('0x56')]({},_0x26a10c,_0x5139a1[_0x97b8('0x5a')]);return db[_0x97b8('0x46')][_0x97b8('0x60')](_0x26a10c)['then'](handleEntityNotFound(_0x51ceac,null))[_0x97b8('0x25')](respondWithResult(_0x51ceac,null))['catch'](handleError(_0x51ceac,null));};exports['create']=function(_0x264105,_0x5a21a4){return db['SmsAccount'][_0x97b8('0x61')](_0x264105[_0x97b8('0x62')],{})['then'](function(_0x38c2bf){var _0x489686=_0x264105['user']['get']({'plain':!![]});if(!_0x489686)throw new Error(_0x97b8('0x63'));if(_0x489686['role']===_0x97b8('0x64')){var _0x364ac2=_0x38c2bf[_0x97b8('0x3c')]({'plain':!![]});var _0x354113='SmsAccounts';return db['UserProfileSection'][_0x97b8('0x60')]({'where':{'name':_0x354113,'userProfileId':_0x489686[_0x97b8('0x65')]},'raw':!![]})[_0x97b8('0x25')](function(_0x294a12){if(_0x294a12&&_0x294a12[_0x97b8('0x66')]===0x0){return db[_0x97b8('0x67')]['create']({'name':_0x364ac2[_0x97b8('0x40')],'resourceId':_0x364ac2['id'],'type':_0x294a12[_0x97b8('0x40')],'sectionId':_0x294a12['id']},{})['then'](function(){return _0x38c2bf;});}else{return _0x38c2bf;}})[_0x97b8('0x2f')](function(_0x4bf754){logger[_0x97b8('0x2b')](_0x97b8('0x68'),_0x4bf754);throw _0x4bf754;});}return _0x38c2bf;})[_0x97b8('0x25')](respondWithResult(_0x5a21a4,0xc9))[_0x97b8('0x2f')](handleError(_0x5a21a4,null));};exports[_0x97b8('0x3b')]=function(_0x2c102e,_0x4ac880){if(_0x2c102e[_0x97b8('0x62')]['id']){delete _0x2c102e['body']['id'];}return db[_0x97b8('0x46')][_0x97b8('0x60')]({'where':{'id':_0x2c102e[_0x97b8('0x5f')]['id']},'include':[{'model':db[_0x97b8('0x43')],'as':_0x97b8('0x44')}]})[_0x97b8('0x25')](handleEntityNotFound(_0x4ac880,null))['then'](saveUpdates(_0x2c102e[_0x97b8('0x62')],null))[_0x97b8('0x25')](respondWithResult(_0x4ac880,null))['catch'](handleError(_0x4ac880,null));};exports[_0x97b8('0x3e')]=function(_0x48ac51,_0x35ec11){return db[_0x97b8('0x46')][_0x97b8('0x60')]({'where':{'id':_0x48ac51[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x35ec11,null))[_0x97b8('0x25')](removeEntity(_0x35ec11,null))[_0x97b8('0x2f')](handleError(_0x35ec11,null));};exports['describe']=function(_0x3b456,_0x508239){return db['SmsAccount'][_0x97b8('0x69')]()[_0x97b8('0x25')](respondWithResult(_0x508239,null))['catch'](handleError(_0x508239,null));};exports['addDisposition']=function(_0x43e9a9,_0x53ad5b,_0x3b1faa){if(_0x43e9a9[_0x97b8('0x62')]['id']){delete _0x43e9a9[_0x97b8('0x62')]['id'];}return db[_0x97b8('0x46')]['find']({'where':{'id':_0x43e9a9[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x53ad5b,null))['then'](function(_0x35fa15){if(_0x35fa15){_0x43e9a9[_0x97b8('0x62')]['SmsAccountId']=_0x35fa15['id'];return db[_0x97b8('0x6a')][_0x97b8('0x61')](_0x43e9a9[_0x97b8('0x62')]);}})[_0x97b8('0x25')](respondWithResult(_0x53ad5b,null))['catch'](handleError(_0x53ad5b,null));};exports['getDispositions']=function(_0x17d097,_0x4088fa,_0x4d5f9b){var _0x3bf81c={'raw':![],'where':{}};var _0x3b4ff8={};var _0x199fd0={'count':0x0,'rows':[]};return db[_0x97b8('0x46')][_0x97b8('0x6b')]({'where':{'id':_0x17d097[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x4088fa,null))[_0x97b8('0x25')](function(_0x45627e){if(_0x45627e){_0x3b4ff8['model']=_[_0x97b8('0x4d')](db['Disposition'][_0x97b8('0x47')]);_0x3b4ff8['query']=_[_0x97b8('0x4d')](_0x17d097[_0x97b8('0x4c')]);_0x3b4ff8[_0x97b8('0x55')]=_[_0x97b8('0x4e')](_0x3b4ff8['model'],_0x3b4ff8[_0x97b8('0x4c')]);_0x3bf81c[_0x97b8('0x50')]=_[_0x97b8('0x4e')](_0x3b4ff8[_0x97b8('0x4b')],qs['fields'](_0x17d097[_0x97b8('0x4c')][_0x97b8('0x4f')]));_0x3bf81c[_0x97b8('0x50')]=_0x3bf81c[_0x97b8('0x50')][_0x97b8('0x51')]?_0x3bf81c[_0x97b8('0x50')]:_0x3b4ff8[_0x97b8('0x4b')];if(!_0x17d097[_0x97b8('0x4c')][_0x97b8('0x6c')](_0x97b8('0x52'))){_0x3bf81c[_0x97b8('0x35')]=qs['limit'](_0x17d097[_0x97b8('0x4c')][_0x97b8('0x35')]);_0x3bf81c[_0x97b8('0x37')]=qs[_0x97b8('0x37')](_0x17d097[_0x97b8('0x4c')]['offset']);}_0x3bf81c[_0x97b8('0x53')]=qs[_0x97b8('0x54')](_0x17d097['query'][_0x97b8('0x54')]);_0x3bf81c['where']=qs[_0x97b8('0x55')](_[_0x97b8('0x6d')](_0x17d097['query'],_0x3b4ff8['filters']));_0x3bf81c['where'][_0x97b8('0x6e')]=_0x45627e['id'];if(_0x17d097[_0x97b8('0x4c')][_0x97b8('0x59')]){_0x3bf81c[_0x97b8('0x57')]=_[_0x97b8('0x56')](_0x3bf81c[_0x97b8('0x57')],{'$or':_[_0x97b8('0x45')](_0x3bf81c[_0x97b8('0x50')],function(_0x5d57bd){var _0x4eb22a={};_0x4eb22a[_0x5d57bd]={'$like':'%'+_0x17d097[_0x97b8('0x4c')][_0x97b8('0x59')]+'%'};return _0x4eb22a;})});}_0x3bf81c=_[_0x97b8('0x56')]({},_0x3bf81c,_0x17d097[_0x97b8('0x5a')]);return db['Disposition'][_0x97b8('0x36')]({'where':_0x3bf81c[_0x97b8('0x57')]})[_0x97b8('0x25')](function(_0x2f3888){_0x199fd0[_0x97b8('0x36')]=_0x2f3888;if(_0x17d097[_0x97b8('0x4c')][_0x97b8('0x5b')]){_0x3bf81c[_0x97b8('0x5c')]=[{'all':!![]}];}return db[_0x97b8('0x6a')][_0x97b8('0x5d')](_0x3bf81c);})[_0x97b8('0x25')](function(_0x1858bf){_0x199fd0['rows']=_0x1858bf;return _0x199fd0;});}})[_0x97b8('0x25')](respondWithFilteredResult(_0x4088fa,_0x3bf81c))['catch'](handleError(_0x4088fa,null));};exports['removeDispositions']=function(_0x549ca8,_0x3bfb52,_0x50595d){return db[_0x97b8('0x46')]['find']({'where':{'id':_0x549ca8[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x3bfb52,null))['then'](function(_0x39b102){if(_0x39b102){return _0x39b102[_0x97b8('0x6f')](_0x549ca8[_0x97b8('0x4c')]['ids']);}})[_0x97b8('0x25')](respondWithStatusCode(_0x3bfb52,null))[_0x97b8('0x2f')](handleError(_0x3bfb52,null));};exports[_0x97b8('0x70')]=function(_0x120fc0,_0x5b5926,_0x4301db){if(_0x120fc0[_0x97b8('0x62')]['id']){delete _0x120fc0[_0x97b8('0x62')]['id'];}return db[_0x97b8('0x46')][_0x97b8('0x60')]({'where':{'id':_0x120fc0['params']['id']}})['then'](handleEntityNotFound(_0x5b5926,null))[_0x97b8('0x25')](function(_0x5001c2){if(_0x5001c2){_0x120fc0[_0x97b8('0x62')]['SmsAccountId']=_0x5001c2['id'];return db['CannedAnswer'][_0x97b8('0x61')](_0x120fc0[_0x97b8('0x62')]);}})['then'](respondWithResult(_0x5b5926,null))[_0x97b8('0x2f')](handleError(_0x5b5926,null));};exports['getAnswers']=function(_0x424729,_0x42ffd6,_0x4dde58){var _0x56c629={'raw':![],'where':{}};var _0x161667={};var _0x21f940={'count':0x0,'rows':[]};return db[_0x97b8('0x46')][_0x97b8('0x6b')]({'where':{'id':_0x424729[_0x97b8('0x5f')]['id']}})['then'](handleEntityNotFound(_0x42ffd6,null))[_0x97b8('0x25')](function(_0x41dfaf){if(_0x41dfaf){_0x161667[_0x97b8('0x4b')]=_[_0x97b8('0x4d')](db[_0x97b8('0x71')][_0x97b8('0x47')]);_0x161667[_0x97b8('0x4c')]=_[_0x97b8('0x4d')](_0x424729[_0x97b8('0x4c')]);_0x161667['filters']=_[_0x97b8('0x4e')](_0x161667['model'],_0x161667[_0x97b8('0x4c')]);_0x56c629[_0x97b8('0x50')]=_['intersection'](_0x161667[_0x97b8('0x4b')],qs[_0x97b8('0x4f')](_0x424729[_0x97b8('0x4c')][_0x97b8('0x4f')]));_0x56c629[_0x97b8('0x50')]=_0x56c629['attributes'][_0x97b8('0x51')]?_0x56c629[_0x97b8('0x50')]:_0x161667[_0x97b8('0x4b')];if(!_0x424729[_0x97b8('0x4c')][_0x97b8('0x6c')](_0x97b8('0x52'))){_0x56c629[_0x97b8('0x35')]=qs[_0x97b8('0x35')](_0x424729[_0x97b8('0x4c')][_0x97b8('0x35')]);_0x56c629[_0x97b8('0x37')]=qs[_0x97b8('0x37')](_0x424729[_0x97b8('0x4c')][_0x97b8('0x37')]);}_0x56c629['order']=qs[_0x97b8('0x54')](_0x424729[_0x97b8('0x4c')][_0x97b8('0x54')]);_0x56c629[_0x97b8('0x57')]=qs[_0x97b8('0x55')](_['pick'](_0x424729['query'],_0x161667[_0x97b8('0x55')]));_0x56c629[_0x97b8('0x57')][_0x97b8('0x6e')]=_0x41dfaf['id'];if(_0x424729[_0x97b8('0x4c')][_0x97b8('0x59')]){_0x56c629['where']=_[_0x97b8('0x56')](_0x56c629[_0x97b8('0x57')],{'$or':_[_0x97b8('0x45')](_0x56c629['attributes'],function(_0x4012fd){var _0x36eeef={};_0x36eeef[_0x4012fd]={'$like':'%'+_0x424729['query'][_0x97b8('0x59')]+'%'};return _0x36eeef;})});}_0x56c629=_[_0x97b8('0x56')]({},_0x56c629,_0x424729[_0x97b8('0x5a')]);return db[_0x97b8('0x71')]['count']({'where':_0x56c629['where']})[_0x97b8('0x25')](function(_0x44b6b6){_0x21f940[_0x97b8('0x36')]=_0x44b6b6;if(_0x424729['query']['includeAll']){_0x56c629[_0x97b8('0x5c')]=[{'all':!![]}];}return db[_0x97b8('0x71')][_0x97b8('0x5d')](_0x56c629);})[_0x97b8('0x25')](function(_0x52bafd){_0x21f940[_0x97b8('0x72')]=_0x52bafd;return _0x21f940;});}})[_0x97b8('0x25')](respondWithFilteredResult(_0x42ffd6,_0x56c629))[_0x97b8('0x2f')](handleError(_0x42ffd6,null));};exports[_0x97b8('0x73')]=function(_0x2316d6,_0x5e9798,_0x199340){return db[_0x97b8('0x46')]['find']({'where':{'id':_0x2316d6[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x5e9798,null))[_0x97b8('0x25')](function(_0x1e20a6){if(_0x1e20a6){return _0x1e20a6[_0x97b8('0x73')](_0x2316d6[_0x97b8('0x4c')][_0x97b8('0x74')]);}})[_0x97b8('0x25')](respondWithStatusCode(_0x5e9798,null))[_0x97b8('0x2f')](handleError(_0x5e9798,null));};exports[_0x97b8('0x75')]=function(_0x36f549,_0x476de0,_0x50e9aa){var _0x4acb53={'channel':_0x97b8('0x76')};var _0x37d3bb=[];var _0x2b6cf0=[];var _0x105c8e={};return db[_0x97b8('0x46')][_0x97b8('0x60')]({'where':{'id':_0x36f549[_0x97b8('0x5f')]['id']},'include':[{'model':db[_0x97b8('0x77')],'as':_0x97b8('0x78')}]})[_0x97b8('0x25')](handleEntityNotFound(_0x476de0,null))['then'](function(_0x1f3c07){_0x4acb53['account']=_0x1f3c07;_0x4acb53[_0x97b8('0x79')]=_[_0x97b8('0x7a')](_0x1f3c07[_0x97b8('0x78')],['priority'],[_0x97b8('0x7b')]);if(_0x4acb53[_0x97b8('0x7c')][_0x97b8('0x78')]){delete _0x4acb53[_0x97b8('0x7c')][_0x97b8('0x78')];}return db[_0x97b8('0x7d')][_0x97b8('0x69')]();})['then'](function(_0x3b9b84){if(!_0x3b9b84){throw new db[(_0x97b8('0x7e'))][(_0x97b8('0x7f'))]('no\x20available\x20attributes');}_0x37d3bb=_[_0x97b8('0x80')](_[_0x97b8('0x4d')](_0x3b9b84),[_0x97b8('0x81'),_0x97b8('0x82')]);_0x2b6cf0=_[_0x97b8('0x80')](_[_0x97b8('0x4d')](_0x3b9b84),[_0x97b8('0x81'),'updatedAt',_0x97b8('0x83'),_0x97b8('0x84')]);_0x4acb53['body']={'mapKey':'mobile'};if(_0x4acb53[_0x97b8('0x7c')]['type']){switch(_0x4acb53['account'][_0x97b8('0x49')]){case _0x97b8('0x85'):_0x4acb53[_0x97b8('0x62')]['from']=_0x36f549[_0x97b8('0x62')][_0x97b8('0x86')];_0x4acb53[_0x97b8('0x62')]['body']=_0x36f549[_0x97b8('0x62')]['Body'];_0x4acb53[_0x97b8('0x62')]['messageId']=_0x36f549[_0x97b8('0x62')][_0x97b8('0x87')];break;case _0x97b8('0x88'):_0x4acb53[_0x97b8('0x62')][_0x97b8('0x89')]='+'+_0x36f549['body'][_0x97b8('0x8a')];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549['body'][_0x97b8('0x8b')];break;case _0x97b8('0x8c'):_0x4acb53['body']['from']=_0x36f549[_0x97b8('0x62')][_0x97b8('0x89')];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549['body'][_0x97b8('0x2e')];break;case _0x97b8('0x8d'):_0x4acb53[_0x97b8('0x62')]['from']=_0x36f549[_0x97b8('0x62')][_0x97b8('0x89')];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549['body'][_0x97b8('0x62')];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x8e')]=_0x36f549[_0x97b8('0x62')][_0x97b8('0x8f')];break;case _0x97b8('0x90'):_0x4acb53[_0x97b8('0x62')][_0x97b8('0x89')]=_0x36f549['body']['From'];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549[_0x97b8('0x62')][_0x97b8('0x91')];_0x4acb53['body'][_0x97b8('0x8e')]=_0x36f549[_0x97b8('0x62')][_0x97b8('0x92')];break;case _0x97b8('0x93'):_0x4acb53[_0x97b8('0x62')]['from']='+'+_0x36f549['body']['results'][0x0][_0x97b8('0x89')];_0x4acb53['body']['body']=_0x36f549[_0x97b8('0x62')][_0x97b8('0x94')][0x0][_0x97b8('0x8b')];_0x4acb53[_0x97b8('0x62')]['messageId']=_0x36f549[_0x97b8('0x62')][_0x97b8('0x94')][0x0][_0x97b8('0x8e')];break;case _0x97b8('0x95'):_0x4acb53[_0x97b8('0x62')][_0x97b8('0x89')]=_0x36f549[_0x97b8('0x62')]['originatingAddress'];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549[_0x97b8('0x62')][_0x97b8('0x96')][_0x97b8('0x2e')];break;case _0x97b8('0x97'):_0x4acb53['body'][_0x97b8('0x89')]=_0x36f549[_0x97b8('0x62')]['fromNumber'];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549[_0x97b8('0x62')]['text'];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x8e')]=_0x36f549[_0x97b8('0x62')][_0x97b8('0x98')];break;case _0x97b8('0x99'):_0x4acb53['body'][_0x97b8('0x8e')]=_0x36f549['body'][0x0][_0x97b8('0x2e')]['id'];_0x4acb53[_0x97b8('0x62')]['from']=_0x36f549[_0x97b8('0x62')][0x0][_0x97b8('0x2e')][_0x97b8('0x89')];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549[_0x97b8('0x62')][0x0]['message'][_0x97b8('0x8b')];break;case'intelepeer':_0x4acb53['body'][_0x97b8('0x89')]=_0x36f549['body'][_0x97b8('0x89')];_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]=_0x36f549[_0x97b8('0x62')]['message'];_0x4acb53['body']['messageId']=_0x36f549[_0x97b8('0x62')][_0x97b8('0x9a')];break;}}if(_0x4acb53[_0x97b8('0x62')]['id']){delete _0x4acb53[_0x97b8('0x62')]['id'];}if(_[_0x97b8('0x9b')](_0x4acb53[_0x97b8('0x62')][_0x97b8('0x89')])){throw new db[(_0x97b8('0x7e'))][(_0x97b8('0x7f'))](_0x97b8('0x9c'));}if(_['isNil'](_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')])||_0x4acb53[_0x97b8('0x62')][_0x97b8('0x62')]===''){throw new db[(_0x97b8('0x7e'))][(_0x97b8('0x7f'))](_0x97b8('0x9d'));}if(_['isNil'](_0x4acb53[_0x97b8('0x62')][_0x97b8('0x9e')])){throw new db[(_0x97b8('0x7e'))][(_0x97b8('0x7f'))](_0x97b8('0x9f')+_0x2b6cf0);}if(!_['includes'](_0x2b6cf0,_0x4acb53['body'][_0x97b8('0x9e')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2b6cf0);}_0x105c8e[_0x4acb53[_0x97b8('0x62')][_0x97b8('0x9e')]]=_0x4acb53[_0x97b8('0x62')]['from'];return db[_0x97b8('0xa0')][_0x97b8('0x60')]({'where':{'id':_0x4acb53['account'][_0x97b8('0x84')]},'include':[{'model':db[_0x97b8('0x7d')],'as':'Contacts','where':_0x105c8e,'limit':0x1,'order':[['updatedAt',_0x97b8('0xa1')]]}]});})[_0x97b8('0x25')](handleEntityNotFound(_0x476de0,null))['then'](function(_0x42d630){if(_0x42d630){_0x4acb53[_0x97b8('0xa2')]=_[_0x97b8('0xa3')](_0x42d630,[_0x97b8('0xa4')]);if(_0x42d630[_0x97b8('0xa4')][_0x97b8('0x51')]){return _0x42d630[_0x97b8('0xa4')][0x0];}var _0x393b87=_['defaults'](_0x4acb53['body'],{'firstName':_0x4acb53[_0x97b8('0x62')][_0x97b8('0x89')],'ListId':_0x42d630['id']});_0x393b87[_0x4acb53['body'][_0x97b8('0x9e')]]=_0x4acb53[_0x97b8('0x62')]['from'];return db[_0x97b8('0x7d')][_0x97b8('0x61')](_0x393b87,{'fields':_0x37d3bb,'raw':!![]});}})[_0x97b8('0x25')](handleEntityNotFound(_0x476de0,null))[_0x97b8('0x25')](function(_0x5b9e1e){if(_0x5b9e1e){_0x4acb53[_0x97b8('0xa5')]=_0x5b9e1e;var _0x2d19c7={'ContactId':_0x5b9e1e['id'],'phone':_0x4acb53[_0x97b8('0x62')][_0x97b8('0x89')],'SmsAccountId':_0x36f549[_0x97b8('0x5f')]['id']};var _0xcbb7c6={'ContactId':_0x5b9e1e['id'],'SmsAccountId':_0x36f549[_0x97b8('0x5f')]['id'],'closed':![]};return db[_0x97b8('0xa6')][_0x97b8('0x60')]({'where':_0xcbb7c6})['then'](function(_0x12264a){if(_0x12264a){return[_0x12264a,![]];}return db[_0x97b8('0xa6')]['create'](_0x2d19c7)[_0x97b8('0x25')](function(_0x266531){return[_0x266531,!![]];});});}})[_0x97b8('0xa7')](function(_0x4625ae,_0x2a59dd){_0x4acb53[_0x97b8('0xa8')]=_0x4625ae[_0x97b8('0x3c')]({'plain':!![]});_0x4acb53[_0x97b8('0xa8')][_0x97b8('0xa9')]=![];if(_0x2a59dd){if(_0x4acb53['account'][_0x97b8('0xaa')]){_0x4acb53[_0x97b8('0x79')][_0x97b8('0xab')]({'id':0x0,'priority':_0x4acb53[_0x97b8('0x79')][_0x97b8('0x51')]+0x1,'app':_0x97b8('0xac'),'appdata':'unmanaged','interval':_0x97b8('0xad')});}_0x4acb53[_0x97b8('0xa8')]['created']=!![];}return db[_0x97b8('0xae')][_0x97b8('0x61')]({'phone':_0x4acb53['body'][_0x97b8('0x89')],'messageId':_0x4acb53['body'][_0x97b8('0x8e')],'body':_0x4acb53[_0x97b8('0x62')]['body'],'SmsAccountId':_0x36f549['params']['id'],'SmsInteractionId':_0x4625ae['id'],'direction':'in','ContactId':_0x4625ae[_0x97b8('0xaf')],'AttachmentId':_0x4acb53[_0x97b8('0x62')][_0x97b8('0xb0')]});})['then'](function(_0x14071c){_0x4acb53[_0x97b8('0x2e')]=_0x14071c;if(_0x4acb53[_0x97b8('0xa8')]['UserId']){return db['User'][_0x97b8('0x60')]({'attributes':['id',_0x97b8('0x40')],'where':{'id':_0x4acb53[_0x97b8('0xa8')][_0x97b8('0xb1')]}})['then'](function(_0x336a7d){if(_0x336a7d){_0x4acb53[_0x97b8('0x79')][_0x97b8('0xb2')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x336a7d[_0x97b8('0x40')]+','+(_0x4acb53[_0x97b8('0x7c')][_0x97b8('0xb3')]||0xa),'interval':_0x97b8('0xad')});}return respondWithRpcPromise('Start','startRouting',_0x4acb53);});}return respondWithRpcPromise('Start',_0x97b8('0xb4'),_0x4acb53);})['then'](function(_0x587a81){if(_0x587a81){var _0x5e8766=0xc8;var _0x16b1ac=_0x97b8('0xb5');logger['info'](_0x97b8('0x29'),_0x16b1ac,_0x5e8766,_0x97b8('0xb6'));logger['debug'](_0x97b8('0xb7'),_0x16b1ac,_0x5e8766,'entity\x20found',JSON[_0x97b8('0x2a')](_0x587a81));if(_0x4acb53[_0x97b8('0x7c')]['type']==='twilio'){return _0x476de0[_0x97b8('0x32')](_0x5e8766)[_0x97b8('0xb8')](_0x97b8('0xb9'),_0x97b8('0xba'))[_0x97b8('0x41')](_0x97b8('0xbb'));}else{return _0x476de0[_0x97b8('0x32')](_0x5e8766)['json'](_0x587a81);}}})[_0x97b8('0x2f')](handleError(_0x476de0,null));};exports['addApplications']=function(_0x4e3d99,_0x5038f1){var _0x3202bf=_0x4e3d99['params']['id'];var _0x2c4a97=_0x4e3d99[_0x97b8('0x62')];var _0x37ae87=0xc8;var _0x1129da=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x97b8('0xbc')][_0x97b8('0xbd')][_0x97b8('0xbe')][_0x97b8('0xbf')]},function(_0x69560d){return db[_0x97b8('0x46')][_0x97b8('0x6b')]({'where':{'id':_0x3202bf},'transaction':_0x69560d})[_0x97b8('0x25')](function(_0x5ad921){if(_0x5ad921){return db['SmsApplication']['destroy']({'where':{'SmsAccountId':_0x3202bf},'transaction':_0x69560d})[_0x97b8('0x25')](function(){var _0x1ab111=_[_0x97b8('0x45')](_0x2c4a97,function(_0x5b78aa){_0x5b78aa[_0x97b8('0x6e')]=_0x3202bf;return _0x5b78aa;});return db['SmsApplication'][_0x97b8('0xc0')](_0x1ab111,{'transaction':_0x69560d});});}else{_0x37ae87=0x194;_0x1129da=[];}});})['then'](function(){if(_0x37ae87!==0x194){return db[_0x97b8('0x77')][_0x97b8('0xc1')]({'where':{'SmsAccountId':_0x3202bf},'order':_0x97b8('0xc2')})[_0x97b8('0x25')](function(_0x5adcc3){_0x1129da=_0x5adcc3;});}})['catch'](function(_0x40c739){_0x37ae87=0x1f4;logger[_0x97b8('0x2b')](_0x40c739['stack']);if(_0x40c739[_0x97b8('0x40')]){delete _0x40c739[_0x97b8('0x40')];}_0x1129da=_0x40c739;})[_0x97b8('0xc3')](function(){if(_0x1129da===null){_0x5038f1[_0x97b8('0x30')](_0x37ae87);}else{if(_0x37ae87===0x1f4){_0x5038f1['status'](_0x37ae87)['send'](_0x1129da);}else{_0x5038f1[_0x97b8('0x32')](_0x37ae87)[_0x97b8('0x33')](_0x1129da);}}});};exports[_0x97b8('0xc4')]=function(_0x20c922,_0xaf87bf,_0xf45c3){var _0x1334a0={};var _0x52a065={};var _0x390792;var _0x92bf31;return db[_0x97b8('0x46')][_0x97b8('0x6b')]({'where':{'id':_0x20c922['params']['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0xaf87bf,null))[_0x97b8('0x25')](function(_0x2ccb18){if(_0x2ccb18){_0x390792=_0x2ccb18;_0x52a065['model']=_[_0x97b8('0x4d')](db[_0x97b8('0x77')]['rawAttributes']);_0x52a065[_0x97b8('0x4c')]=_[_0x97b8('0x4d')](_0x20c922[_0x97b8('0x4c')]);_0x52a065[_0x97b8('0x55')]=_[_0x97b8('0x4e')](_0x52a065['model'],_0x52a065[_0x97b8('0x4c')]);_0x1334a0[_0x97b8('0x50')]=_[_0x97b8('0x4e')](_0x52a065[_0x97b8('0x4b')],qs[_0x97b8('0x4f')](_0x20c922[_0x97b8('0x4c')]['fields']));_0x1334a0[_0x97b8('0x50')]=_0x1334a0[_0x97b8('0x50')][_0x97b8('0x51')]?_0x1334a0[_0x97b8('0x50')]:_0x52a065[_0x97b8('0x4b')];_0x1334a0[_0x97b8('0x53')]=qs[_0x97b8('0x54')](_0x20c922['query'][_0x97b8('0x54')]);_0x1334a0[_0x97b8('0x57')]=qs['filters'](_[_0x97b8('0x6d')](_0x20c922['query'],_0x52a065[_0x97b8('0x55')]));if(_0x20c922[_0x97b8('0x4c')][_0x97b8('0x59')]){_0x1334a0[_0x97b8('0x57')]=_[_0x97b8('0x56')](_0x1334a0['where'],{'$or':_[_0x97b8('0x45')](_0x1334a0[_0x97b8('0x50')],function(_0x316568){var _0x34fcfa={};_0x34fcfa[_0x316568]={'$like':'%'+_0x20c922[_0x97b8('0x4c')][_0x97b8('0x59')]+'%'};return _0x34fcfa;})});}_0x1334a0=_[_0x97b8('0x56')]({},_0x1334a0,_0x20c922[_0x97b8('0x5a')]);return _0x390792[_0x97b8('0xc4')](_0x1334a0);}})['then'](function(_0x3c799c){if(_0x3c799c){_0x92bf31=_0x3c799c[_0x97b8('0x51')];if(!_0x20c922[_0x97b8('0x4c')][_0x97b8('0x6c')](_0x97b8('0x52'))){_0x1334a0[_0x97b8('0x35')]=qs['limit'](_0x20c922[_0x97b8('0x4c')][_0x97b8('0x35')]);_0x1334a0[_0x97b8('0x37')]=qs[_0x97b8('0x37')](_0x20c922[_0x97b8('0x4c')][_0x97b8('0x37')]);}return _0x390792[_0x97b8('0xc4')](_0x1334a0);}})[_0x97b8('0x25')](function(_0x20f5bb){if(_0x20f5bb){return _0x20f5bb?{'count':_0x92bf31,'rows':_0x20f5bb}:null;}})['then'](respondWithResult(_0xaf87bf,null))[_0x97b8('0x2f')](handleError(_0xaf87bf,null));};exports[_0x97b8('0xc5')]=function(_0x51c064,_0x3b42fe,_0xe2fc66){var _0x3b7caa={'raw':![],'where':{}};var _0x18e6f7={};var _0x1e95b9={'count':0x0,'rows':[]};return db[_0x97b8('0x46')]['findOne']({'where':{'id':_0x51c064[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x3b42fe,null))[_0x97b8('0x25')](function(_0x3747f6){if(_0x3747f6){_0x18e6f7[_0x97b8('0x4b')]=_[_0x97b8('0x4d')](db['SmsInteraction']['rawAttributes']);_0x18e6f7[_0x97b8('0x4c')]=_[_0x97b8('0x4d')](_0x51c064[_0x97b8('0x4c')]);_0x18e6f7[_0x97b8('0x55')]=_['intersection'](_0x18e6f7[_0x97b8('0x4b')],_0x18e6f7[_0x97b8('0x4c')]);_0x3b7caa['attributes']=_[_0x97b8('0x4e')](_0x18e6f7[_0x97b8('0x4b')],qs[_0x97b8('0x4f')](_0x51c064[_0x97b8('0x4c')][_0x97b8('0x4f')]));_0x3b7caa[_0x97b8('0x50')]=_0x3b7caa['attributes'][_0x97b8('0x51')]?_0x3b7caa[_0x97b8('0x50')]:_0x18e6f7['model'];if(!_0x51c064[_0x97b8('0x4c')][_0x97b8('0x6c')](_0x97b8('0x52'))){_0x3b7caa['limit']=qs['limit'](_0x51c064[_0x97b8('0x4c')][_0x97b8('0x35')]);_0x3b7caa['offset']=qs[_0x97b8('0x37')](_0x51c064[_0x97b8('0x4c')][_0x97b8('0x37')]);}_0x3b7caa[_0x97b8('0x53')]=qs[_0x97b8('0x54')](_0x51c064[_0x97b8('0x4c')][_0x97b8('0x54')]);_0x3b7caa['where']=qs['filters'](_[_0x97b8('0x6d')](_0x51c064[_0x97b8('0x4c')],_0x18e6f7[_0x97b8('0x55')]));_0x3b7caa['where'][_0x97b8('0x6e')]=_0x3747f6['id'];if(_0x51c064[_0x97b8('0x4c')][_0x97b8('0x59')]){_0x3b7caa[_0x97b8('0x57')]=_[_0x97b8('0x56')](_0x3b7caa[_0x97b8('0x57')],{'$or':_[_0x97b8('0x45')](_0x3b7caa[_0x97b8('0x50')],function(_0x43ad16){var _0x212616={};_0x212616[_0x43ad16]={'$like':'%'+_0x51c064[_0x97b8('0x4c')][_0x97b8('0x59')]+'%'};return _0x212616;})});}_0x3b7caa=_[_0x97b8('0x56')]({},_0x3b7caa,_0x51c064[_0x97b8('0x5a')]);return db[_0x97b8('0xa6')]['count']({'where':_0x3b7caa[_0x97b8('0x57')]})[_0x97b8('0x25')](function(_0x2d6eef){_0x1e95b9['count']=_0x2d6eef;if(_0x51c064['query']['includeAll']){_0x3b7caa['include']=[{'model':db[_0x97b8('0x7d')],'as':_0x97b8('0xc6'),'required':![]},{'model':db[_0x97b8('0xc7')],'as':'Owner','attributes':['name',_0x97b8('0xc8'),_0x97b8('0xc9')],'required':![]},{'model':db[_0x97b8('0xca')],'as':_0x97b8('0xcb'),'attributes':['id','name',_0x97b8('0xcc')],'where':_0x51c064[_0x97b8('0x4c')]['tag']?{'id':_0x51c064[_0x97b8('0x4c')][_0x97b8('0xcd')]}:undefined,'required':_0x51c064['query'][_0x97b8('0xcd')]?!![]:![]}];}return db[_0x97b8('0xa6')][_0x97b8('0x5d')](_0x3b7caa);})[_0x97b8('0x25')](function(_0x3b2ff2){_0x1e95b9[_0x97b8('0x72')]=_0x3b2ff2;return _0x1e95b9;});}})[_0x97b8('0x25')](respondWithFilteredResult(_0x3b42fe,_0x3b7caa))[_0x97b8('0x2f')](handleError(_0x3b42fe,null));};exports[_0x97b8('0x41')]=function(_0x260d99,_0x77070a,_0x3fafc4){var _0x13122f,_0x3e0faf,_0x1f7eb3;if(_[_0x97b8('0x9b')](_0x260d99['body']['body'])||_0x260d99[_0x97b8('0x62')][_0x97b8('0x62')]===''){throw new db[(_0x97b8('0x7e'))][(_0x97b8('0x7f'))](_0x97b8('0x9d'));}if(_[_0x97b8('0x9b')](_0x260d99[_0x97b8('0x62')]['to'])){throw new db[(_0x97b8('0x7e'))]['ValidationError'](_0x97b8('0xce'));}_0x13122f=_0x260d99[_0x97b8('0x62')]['to'];return db[_0x97b8('0x46')][_0x97b8('0x60')]({'where':{'id':_0x260d99[_0x97b8('0x5f')]['id']},'include':[{'model':db[_0x97b8('0xa0')],'as':_0x97b8('0xcf'),'include':[{'model':db[_0x97b8('0x7d')],'as':_0x97b8('0xa4'),'where':{'mobile':_0x13122f},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})['then'](handleEntityNotFound(_0x77070a,null))[_0x97b8('0x25')](function(_0x4c48ac){if(_0x4c48ac&&_0x4c48ac[_0x97b8('0xcf')]){_0x3e0faf=_0x4c48ac[_0x97b8('0x3c')]({'plain':!![]});if(_0x3e0faf[_0x97b8('0xcf')]&&_0x3e0faf[_0x97b8('0xcf')][_0x97b8('0xa4')][_0x97b8('0x51')]){return _0x3e0faf[_0x97b8('0xcf')][_0x97b8('0xa4')][0x0];}return db['CmContact'][_0x97b8('0x61')](_[_0x97b8('0x1e')](_0x260d99['body'],{'firstName':_0x13122f,'mobile':_0x13122f,'phone':_0x13122f,'ListId':_0x3e0faf[_0x97b8('0x84')]}));}})[_0x97b8('0x25')](handleEntityNotFound(_0x77070a,null))['then'](function(_0x404b06){if(_0x404b06){_0x1f7eb3=_0x404b06;return db[_0x97b8('0xa6')]['find']({'where':{'ContactId':_0x1f7eb3['id'],'closed':![],'SmsAccountId':_0x3e0faf['id']}})[_0x97b8('0x25')](function(_0x2ac6e7){if(_0x2ac6e7){return[_0x2ac6e7,![]];}return db[_0x97b8('0xa6')][_0x97b8('0x61')]({'UserId':_0x260d99['user']['id'],'ContactId':_0x1f7eb3['id'],'SmsAccountId':_0x3e0faf['id'],'phone':_0x13122f,'firstMsgDirection':'out','Messages':[_[_0x97b8('0x56')](_0x260d99[_0x97b8('0x62')],{'read':![],'body':_0x260d99[_0x97b8('0x62')]['body'],'phone':_0x13122f,'SmsAccountId':_0x3e0faf['id'],'UserId':_0x260d99['user']['id'],'ContactId':_0x1f7eb3['id']})]},{'include':[{'model':db['SmsMessage'],'as':'Messages'}]})['then'](function(_0x2263ca){return[_0x2263ca,!![]];});});}})[_0x97b8('0xa7')](function(_0x2dc5ce,_0x13b766){if(_0x13b766){return _0x2dc5ce;}return db['SmsMessage'][_0x97b8('0x61')](_[_0x97b8('0x56')](_0x260d99[_0x97b8('0x62')],{'read':![],'body':_0x260d99['body'][_0x97b8('0x62')],'phone':_0x13122f,'SmsAccountId':_0x3e0faf['id'],'SmsInteractionId':_0x2dc5ce['id'],'UserId':_0x260d99[_0x97b8('0x64')]['id'],'ContactId':_0x1f7eb3['id']}))[_0x97b8('0x25')](function(_0x26c422){_0x2dc5ce[_0x97b8('0xd0')]['Messages']=[];_0x2dc5ce['dataValues'][_0x97b8('0xd1')][_0x97b8('0xab')](_0x26c422[_0x97b8('0xd0')]);return _0x2dc5ce;});})[_0x97b8('0x25')](respondWithResult(_0x77070a,null))['catch'](handleError(_0x77070a,null));};exports[_0x97b8('0x32')]=function(_0x4f81a8,_0x2403b5,_0x67dc1f){if(_0x4f81a8[_0x97b8('0x62')]['id']){delete _0x4f81a8[_0x97b8('0x62')]['id'];}var _0x5c24bf,_0x3644d4,_0xd8f26f;return db[_0x97b8('0x46')][_0x97b8('0x60')]({'where':{'id':_0x4f81a8[_0x97b8('0x5f')]['id']}})['then'](handleEntityNotFound(_0x2403b5,null))[_0x97b8('0x25')](function(_0x568278){if(_0x568278){_0xd8f26f=_0x568278;logger[_0x97b8('0x28')](_0x97b8('0x29'),_0x97b8('0x32'),'received\x20delivery\x20report\x20from',_0x568278['type'],util['inspect'](_0x4f81a8[_0x97b8('0x62')],{'showHidden':![],'depth':null}));switch(_0x568278[_0x97b8('0x49')]){case _0x97b8('0x88'):if(_0x4f81a8[_0x97b8('0x62')][_0x97b8('0xd2')]&&_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x32')]){_0x3644d4=_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x32')];return db[_0x97b8('0xae')][_0x97b8('0x60')]({'where':{'messageId':_0x4f81a8[_0x97b8('0x62')][_0x97b8('0xd2')]}});}break;case'connectel':if(_0x4f81a8['body'][_0x97b8('0xd3')]&&_0x4f81a8[_0x97b8('0x62')]['statusInt']){_0x3644d4=_0x4f81a8['body'][_0x97b8('0xd4')];return db['SmsMessage'][_0x97b8('0x60')]({'where':{'messageId':_0x4f81a8[_0x97b8('0x62')][_0x97b8('0xd3')]}});}break;case _0x97b8('0x8d'):if(_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x8f')]&&_0x4f81a8['body']['status_code']){_0x3644d4=_0x4f81a8[_0x97b8('0x62')][_0x97b8('0xd5')];return db[_0x97b8('0xae')][_0x97b8('0x60')]({'where':{'messageId':_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x8f')]}});}break;case _0x97b8('0x93'):var _0xa4fa41=_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x94')][0x0];if(_0xa4fa41[_0x97b8('0x8e')]&&_0xa4fa41[_0x97b8('0x32')]['groupName']===_0x97b8('0xd6')){_0x3644d4=_0xa4fa41['status']['groupName'];return db['SmsMessage'][_0x97b8('0x60')]({'where':{'messageId':_0xa4fa41[_0x97b8('0x8e')]}});}break;case _0x97b8('0x97'):if(_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x8e')]&&_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x32')]){_0x3644d4=_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x32')];return db[_0x97b8('0xae')]['find']({'where':{'messageId':_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x8e')]}});}break;case _0x97b8('0x99'):if(_0x4f81a8[_0x97b8('0x62')][0x0][_0x97b8('0x2e')]['id']){_0x3644d4=_0x4f81a8[_0x97b8('0x62')][0x0][_0x97b8('0x49')];return db['SmsMessage'][_0x97b8('0x60')]({'where':{'messageId':_0x4f81a8['body'][0x0][_0x97b8('0x2e')]['id']}});}break;case _0x97b8('0xd7'):if(_0x4f81a8[_0x97b8('0x62')][_0x97b8('0xd8')]&&_0x4f81a8[_0x97b8('0x62')]['status']){_0x3644d4=_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x32')];return db['SmsMessage']['find']({'where':{'messageId':_0x4f81a8[_0x97b8('0x62')][_0x97b8('0xd8')]}});}break;}}})[_0x97b8('0x25')](handleEntityNotFound(_0x2403b5,null))['then'](function(_0x7e1a37){if(_0x7e1a37){_0x5c24bf=_0x7e1a37;switch(_0xd8f26f[_0x97b8('0x49')]){case'skebby':if(_0x3644d4==='DELIVERED'){return _0x5c24bf[_0x97b8('0x3b')]({'read':!![]});}else{logger[_0x97b8('0x2b')](_0x97b8('0x29'),_0x97b8('0x32'),'skebby',util[_0x97b8('0xd9')](_0x4f81a8[_0x97b8('0x62')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x3644d4==='1'){return _0x5c24bf['update']({'read':!![]});}else{logger[_0x97b8('0x2b')](_0x97b8('0x29'),_0x97b8('0x32'),_0x97b8('0x88'),util[_0x97b8('0xd9')](_0x4f81a8['body'],{'showHidden':![],'depth':null}));}break;case _0x97b8('0x8d'):if(!_0x4f81a8[_0x97b8('0x62')][_0x97b8('0xda')]&&_0x3644d4>=0xc8&&_0x3644d4<=0xce){return _0x5c24bf[_0x97b8('0x3b')]({'read':!![]});}else{logger[_0x97b8('0x2b')](_0x97b8('0x29'),_0x97b8('0x32'),_0x97b8('0x8d'),util[_0x97b8('0xd9')](_0x4f81a8[_0x97b8('0x62')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x4861db=_0x4f81a8[_0x97b8('0x62')][_0x97b8('0x94')][0x0];if(_0x4861db['status'][_0x97b8('0xdb')]==='DELIVERED'){return _0x5c24bf['update']({'read':!![]});}else{logger[_0x97b8('0x2b')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x97b8('0x32'),'infobip',util['inspect'](_0x4f81a8['body'],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x3644d4=='DELIVERED_TO_GATEWAY'||_0x3644d4==_0x97b8('0xdc')){return _0x5c24bf[_0x97b8('0x3b')]({'read':!![]});}else{logger[_0x97b8('0x2b')](_0x97b8('0x29'),_0x97b8('0x32'),'clickatell',util[_0x97b8('0xd9')](_0x4f81a8[_0x97b8('0x62')],{'showHidden':![],'depth':null}));}break;case _0x97b8('0x99'):if(_0x3644d4==_0x97b8('0xdd')){return _0x5c24bf[_0x97b8('0x3b')]({'read':!![]});}else{logger[_0x97b8('0x2b')](_0x97b8('0x29'),'status',_0x97b8('0x99'),util['inspect'](_0x4f81a8[_0x97b8('0x62')],{'showHidden':![],'depth':null}));}break;case _0x97b8('0xd7'):if(_0x3644d4==='DELIVRD'||_0x3644d4===_0x97b8('0xde')){return _0x5c24bf[_0x97b8('0x3b')]({'read':!![]});}else{logger[_0x97b8('0x2b')](_0x97b8('0x29'),_0x97b8('0x32'),'intelepeer',util[_0x97b8('0xd9')](_0x4f81a8['body'],{'showHidden':![],'depth':null}));}break;}return _0x5c24bf;}})['then'](respondWithResult(_0x2403b5,null))['catch'](handleError(_0x2403b5,null));};exports[_0x97b8('0xdf')]=function(_0x574351,_0x4791e6,_0x37d5a7){var _0x4c79bf,_0x552472,_0x2f56b3;return db[_0x97b8('0x46')][_0x97b8('0x60')]({'where':{'id':_0x574351[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x4791e6,null))[_0x97b8('0x25')](function(_0x5a7eaa){if(_0x5a7eaa){_0x2f56b3=_0x5a7eaa;logger['debug'](_0x97b8('0x29'),_0x97b8('0x32'),_0x97b8('0xe0'),_0x5a7eaa[_0x97b8('0x49')],util[_0x97b8('0xd9')](_0x574351['query'],{'showHidden':![],'depth':null}));switch(_0x5a7eaa[_0x97b8('0x49')]){case _0x97b8('0x95'):if(_0x574351['query'][_0x97b8('0xe1')]&&_0x574351[_0x97b8('0x4c')][_0x97b8('0xe2')]){_0x552472=_0x574351['query'][_0x97b8('0xe2')];return db[_0x97b8('0xae')][_0x97b8('0x60')]({'where':{'messageId':_0x574351[_0x97b8('0x4c')]['message-id']}});}break;}}})[_0x97b8('0x25')](handleEntityNotFound(_0x4791e6,null))[_0x97b8('0x25')](function(_0x1f4e69){if(_0x1f4e69){_0x4c79bf=_0x1f4e69;switch(_0x2f56b3[_0x97b8('0x49')]){case _0x97b8('0x95'):if(_0x552472==='2'||_0x552472==='6'){return _0x4c79bf[_0x97b8('0x3b')]({'read':!![]});}else{logger[_0x97b8('0x2b')](_0x97b8('0x29'),_0x97b8('0x32'),_0x97b8('0x95'),util[_0x97b8('0xd9')](_0x574351['query'],{'showHidden':![],'depth':null}));};break;}return _0x4c79bf;}})[_0x97b8('0x25')](respondWithResult(_0x4791e6,null))[_0x97b8('0x2f')](handleError(_0x4791e6,null));};exports[_0x97b8('0xe3')]=function(_0x2ae812,_0x25c823,_0x3ade28){return db[_0x97b8('0x46')]['find']({'where':{'id':_0x2ae812['params']['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x25c823,null))['then'](function(_0x5902f0){if(_0x5902f0){return _0x5902f0['addAgents'](_0x2ae812[_0x97b8('0x62')]['ids'],_['omit'](_0x2ae812[_0x97b8('0x62')],[_0x97b8('0x74'),'id'])||{})[_0x97b8('0xa7')](function(_0x8adab8){for(var _0x484d86=0x0;_0x484d86<_0x2ae812['body']['ids'][_0x97b8('0x51')];_0x484d86+=0x1){socket[_0x97b8('0xe4')](_0x97b8('0xe5'),{'UserId':Number(_0x2ae812['body'][_0x97b8('0x74')][_0x484d86]),'SmsAccountId':Number(_0x2ae812[_0x97b8('0x5f')]['id'])});}return _0x8adab8;});}})['then'](respondWithResult(_0x25c823,null))['catch'](handleError(_0x25c823,null));};exports['removeAgents']=function(_0x1606c4,_0x8f97ed,_0x39efef){return db['SmsAccount'][_0x97b8('0x60')]({'where':{'id':_0x1606c4['params']['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x8f97ed,null))['then'](function(_0x36562e){if(_0x36562e){return _0x36562e[_0x97b8('0xe6')](_0x1606c4['query'][_0x97b8('0x74')])[_0x97b8('0x25')](function(){if(_[_0x97b8('0xe7')](_0x1606c4[_0x97b8('0x4c')]['ids'])){for(var _0x4fbacf=0x0;_0x4fbacf<_0x1606c4['query'][_0x97b8('0x74')][_0x97b8('0x51')];_0x4fbacf+=0x1){socket[_0x97b8('0xe4')](_0x97b8('0xe8'),{'UserId':Number(_0x1606c4[_0x97b8('0x4c')][_0x97b8('0x74')][_0x4fbacf]),'SmsAccountId':Number(_0x1606c4[_0x97b8('0x5f')]['id'])});}}else{socket[_0x97b8('0xe4')](_0x97b8('0xe8'),{'UserId':Number(_0x1606c4['query'][_0x97b8('0x74')]),'SmsAccountId':Number(_0x1606c4[_0x97b8('0x5f')]['id'])});}});}})[_0x97b8('0x25')](respondWithStatusCode(_0x8f97ed,null))[_0x97b8('0x2f')](handleError(_0x8f97ed,null));};exports['getAgents']=function(_0xaaab1d,_0x391466,_0x31afc6){var _0x3aaad6={};var _0x95c712={};var _0x3b6a51;var _0xb7670d;return db[_0x97b8('0x46')][_0x97b8('0x6b')]({'where':{'id':_0xaaab1d[_0x97b8('0x5f')]['id']}})[_0x97b8('0x25')](handleEntityNotFound(_0x391466,null))['then'](function(_0x129983){if(_0x129983){_0x3b6a51=_0x129983;_0x95c712[_0x97b8('0x4b')]=_[_0x97b8('0x4d')](db[_0x97b8('0xc7')]['rawAttributes']);_0x95c712['query']=_[_0x97b8('0x4d')](_0xaaab1d[_0x97b8('0x4c')]);_0x95c712[_0x97b8('0x55')]=_[_0x97b8('0x4e')](_0x95c712['model'],_0x95c712[_0x97b8('0x4c')]);_0x3aaad6[_0x97b8('0x50')]=_['intersection'](_0x95c712[_0x97b8('0x4b')],qs[_0x97b8('0x4f')](_0xaaab1d[_0x97b8('0x4c')][_0x97b8('0x4f')]));_0x3aaad6[_0x97b8('0x50')]=_0x3aaad6['attributes'][_0x97b8('0x51')]?_0x3aaad6['attributes']:_0x95c712[_0x97b8('0x4b')];_0x3aaad6[_0x97b8('0x53')]=qs['sort'](_0xaaab1d['query']['sort']);_0x3aaad6[_0x97b8('0x57')]=qs['filters'](_[_0x97b8('0x6d')](_0xaaab1d[_0x97b8('0x4c')],_0x95c712[_0x97b8('0x55')]));if(_0xaaab1d[_0x97b8('0x4c')][_0x97b8('0x59')]){_0x3aaad6[_0x97b8('0x57')]=_[_0x97b8('0x56')](_0x3aaad6[_0x97b8('0x57')],{'$or':_[_0x97b8('0x45')](_0x3aaad6[_0x97b8('0x50')],function(_0x54e096){var _0x163821={};_0x163821[_0x54e096]={'$like':'%'+_0xaaab1d[_0x97b8('0x4c')][_0x97b8('0x59')]+'%'};return _0x163821;})});}_0x3aaad6=_[_0x97b8('0x56')]({},_0x3aaad6,_0xaaab1d[_0x97b8('0x5a')]);return _0x3b6a51[_0x97b8('0xe9')](_0x3aaad6);}})['then'](function(_0x1fec2d){if(_0x1fec2d){_0xb7670d=_0x1fec2d['length'];if(!_0xaaab1d['query'][_0x97b8('0x6c')](_0x97b8('0x52'))){_0x3aaad6[_0x97b8('0x35')]=qs['limit'](_0xaaab1d[_0x97b8('0x4c')]['limit']);_0x3aaad6['offset']=qs[_0x97b8('0x37')](_0xaaab1d[_0x97b8('0x4c')][_0x97b8('0x37')]);}return _0x3b6a51[_0x97b8('0xe9')](_0x3aaad6);}})[_0x97b8('0x25')](function(_0x482ea5){if(_0x482ea5){return _0x482ea5?{'count':_0xb7670d,'rows':_0x482ea5}:null;}})['then'](respondWithResult(_0x391466,null))['catch'](handleError(_0x391466,null));};
\ No newline at end of file
index 5a8b64f..eb9f2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cdc=['emit','hasOwnProperty','hook','../../mysqldb','setMaxListeners','update','remove'];(function(_0x5e025b,_0x397eb0){var _0x5733d4=function(_0x9df726){while(--_0x9df726){_0x5e025b['push'](_0x5e025b['shift']());}};_0x5733d4(++_0x397eb0);}(_0x3cdc,0x1d1));var _0xc3cd=function(_0xc4376d,_0x2e6841){_0xc4376d=_0xc4376d-0x0;var _0x291524=_0x3cdc[_0xc4376d];return _0x291524;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xc3cd('0x0'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xc3cd('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc3cd('0x2'),'afterDestroy':_0xc3cd('0x3')};function emitEvent(_0x49e965){return function(_0x508add,_0x3c48ce,_0x3e5b37){SmsAccountEvents['emit'](_0x49e965+':'+_0x508add['id'],_0x508add);SmsAccountEvents[_0xc3cd('0x4')](_0x49e965,_0x508add);_0x3e5b37(null);};}for(var e in events){if(events[_0xc3cd('0x5')](e)){var event=events[e];SmsAccount[_0xc3cd('0x6')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0x2cc9=['update','remove','emit','hasOwnProperty','exports','events','SmsAccount','save'];(function(_0x2c0c6c,_0x4bf4c0){var _0x3da5e4=function(_0x14a0b6){while(--_0x14a0b6){_0x2c0c6c['push'](_0x2c0c6c['shift']());}};_0x3da5e4(++_0x4bf4c0);}(_0x2cc9,0x75));var _0x92cc=function(_0x11e202,_0x20fd36){_0x11e202=_0x11e202-0x0;var _0x4095e6=_0x2cc9[_0x11e202];return _0x4095e6;};'use strict';var EventEmitter=require(_0x92cc('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x92cc('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x92cc('0x2'),'afterUpdate':_0x92cc('0x3'),'afterDestroy':_0x92cc('0x4')};function emitEvent(_0x27c5bc){return function(_0x1476cc,_0x4b7bc8,_0x7ec2c8){SmsAccountEvents[_0x92cc('0x5')](_0x27c5bc+':'+_0x1476cc['id'],_0x1476cc);SmsAccountEvents[_0x92cc('0x5')](_0x27c5bc,_0x1476cc);_0x7ec2c8(null);};}for(var e in events){if(events[_0x92cc('0x6')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x92cc('0x7')]=SmsAccountEvents;
\ No newline at end of file
index d33fccd..a42cbca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dc7=['exports','define','SmsAccount','sms_accounts','lodash','api','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes'];(function(_0x54d962,_0x1a66cf){var _0x345416=function(_0xe4501e){while(--_0xe4501e){_0x54d962['push'](_0x54d962['shift']());}};_0x345416(++_0x1a66cf);}(_0x9dc7,0x1b1));var _0x79dc=function(_0x24e332,_0x2fbce8){_0x24e332=_0x24e332-0x0;var _0x5f3dcd=_0x9dc7[_0x24e332];return _0x5f3dcd;};'use strict';var _=require(_0x79dc('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x79dc('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x79dc('0x2'));var fs=require('fs');var path=require(_0x79dc('0x3'));var rimraf=require(_0x79dc('0x4'));var config=require(_0x79dc('0x5'));var attributes=require(_0x79dc('0x6'));module[_0x79dc('0x7')]=function(_0x288845,_0x3317df){return _0x288845[_0x79dc('0x8')](_0x79dc('0x9'),attributes,{'tableName':_0x79dc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x805b=['bluebird','request-promise','path','rimraf','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','../../config/logger','api','moment'];(function(_0xf0c115,_0x497821){var _0x199019=function(_0x2735c4){while(--_0x2735c4){_0xf0c115['push'](_0xf0c115['shift']());}};_0x199019(++_0x497821);}(_0x805b,0x159));var _0xb805=function(_0x49fdd3,_0x8a3de0){_0x49fdd3=_0x49fdd3-0x0;var _0x57dd49=_0x805b[_0x49fdd3];return _0x57dd49;};'use strict';var _=require(_0xb805('0x0'));var util=require(_0xb805('0x1'));var logger=require(_0xb805('0x2'))(_0xb805('0x3'));var moment=require(_0xb805('0x4'));var BPromise=require(_0xb805('0x5'));var rp=require(_0xb805('0x6'));var fs=require('fs');var path=require(_0xb805('0x7'));var rimraf=require(_0xb805('0x8'));var config=require('../../config/environment');var attributes=require(_0xb805('0x9'));module[_0xb805('0xa')]=function(_0x519ac9,_0x38475a){return _0x519ac9[_0xb805('0xb')](_0xb805('0xc'),attributes,{'tableName':_0xb805('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3236c2b..46cd174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa235=['info','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','map','include','model','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x54d1a1,_0x46ea8a){var _0x38ced7=function(_0x3b2b3c){while(--_0x3b2b3c){_0x54d1a1['push'](_0x54d1a1['shift']());}};_0x38ced7(++_0x46ea8a);}(_0xa235,0xd0));var _0x5a23=function(_0x434b6c,_0x3601ac){_0x434b6c=_0x434b6c-0x0;var _0x27e362=_0xa235[_0x434b6c];return _0x27e362;};'use strict';var _=require(_0x5a23('0x0'));var util=require(_0x5a23('0x1'));var moment=require(_0x5a23('0x2'));var BPromise=require(_0x5a23('0x3'));var rs=require(_0x5a23('0x4'));var fs=require('fs');var Redis=require(_0x5a23('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5a23('0x6'));var logger=require('../../config/logger')(_0x5a23('0x7'));var config=require(_0x5a23('0x8'));var jayson=require(_0x5a23('0x9'));var client=jayson[_0x5a23('0xa')][_0x5a23('0xb')]({'port':0x232a});config[_0x5a23('0xc')]=_[_0x5a23('0xd')](config[_0x5a23('0xc')],{'host':_0x5a23('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5a23('0xc')]));require('./smsAccount.socket')[_0x5a23('0xf')](socket);function respondWithRpcPromise(_0x3b043d,_0x2cc5a4,_0x5ec805){return new BPromise(function(_0x54ae61,_0x4fd093){return client[_0x5a23('0x10')](_0x3b043d,_0x5ec805)[_0x5a23('0x11')](function(_0x1e4231){logger['info'](_0x5a23('0x12'),_0x2cc5a4,_0x5a23('0x13'));logger[_0x5a23('0x14')](_0x5a23('0x15'),_0x2cc5a4,_0x5a23('0x13'),JSON[_0x5a23('0x16')](_0x1e4231));if(_0x1e4231['error']){if(_0x1e4231[_0x5a23('0x17')][_0x5a23('0x18')]===0x1f4){logger[_0x5a23('0x17')]('SmsAccount,\x20%s,\x20%s',_0x2cc5a4,_0x1e4231[_0x5a23('0x17')][_0x5a23('0x19')]);return _0x4fd093(_0x1e4231[_0x5a23('0x17')][_0x5a23('0x19')]);}logger[_0x5a23('0x17')]('SmsAccount,\x20%s,\x20%s',_0x2cc5a4,_0x1e4231['error'][_0x5a23('0x19')]);return _0x54ae61(_0x1e4231[_0x5a23('0x17')][_0x5a23('0x19')]);}else{logger[_0x5a23('0x1a')](_0x5a23('0x12'),_0x2cc5a4,_0x5a23('0x13'));_0x54ae61(_0x1e4231[_0x5a23('0x1b')][_0x5a23('0x19')]);}})[_0x5a23('0x1c')](function(_0x176ec2){logger[_0x5a23('0x17')](_0x5a23('0x12'),_0x2cc5a4,_0x176ec2);_0x4fd093(_0x176ec2);});});}exports[_0x5a23('0x1d')]=function(_0x14c2a8){var _0x36e8b8=this;return new Promise(function(_0x101aa7,_0x3120bb){return db[_0x5a23('0x1e')][_0x5a23('0x1f')]({'raw':_0x14c2a8[_0x5a23('0x20')]?_0x14c2a8[_0x5a23('0x20')][_0x5a23('0x21')]===undefined?!![]:![]:!![],'where':_0x14c2a8[_0x5a23('0x20')]?_0x14c2a8[_0x5a23('0x20')][_0x5a23('0x22')]||null:null,'attributes':_0x14c2a8[_0x5a23('0x20')]?_0x14c2a8[_0x5a23('0x20')][_0x5a23('0x23')]||null:null,'include':_0x14c2a8[_0x5a23('0x20')]?_0x14c2a8['options']['include']?_[_0x5a23('0x24')](_0x14c2a8[_0x5a23('0x20')][_0x5a23('0x25')],function(_0x51adbd){return{'model':db[_0x51adbd[_0x5a23('0x26')]],'as':_0x51adbd['as'],'attributes':_0x51adbd[_0x5a23('0x23')],'include':_0x51adbd[_0x5a23('0x25')]?_[_0x5a23('0x24')](_0x51adbd['include'],function(_0x5eba9f){return{'model':db[_0x5eba9f[_0x5a23('0x26')]],'as':_0x5eba9f['as'],'attributes':_0x5eba9f[_0x5a23('0x23')],'include':_0x5eba9f[_0x5a23('0x25')]?_[_0x5a23('0x24')](_0x5eba9f['include'],function(_0x16c271){return{'model':db[_0x16c271[_0x5a23('0x26')]],'as':_0x16c271['as'],'attributes':_0x16c271[_0x5a23('0x23')]};}):[]};}):[]};}):[]:[]})[_0x5a23('0x11')](function(_0x27af5e){logger[_0x5a23('0x1a')](_0x5a23('0x1d'),_0x14c2a8);logger['debug'](_0x5a23('0x1d'),_0x14c2a8,JSON[_0x5a23('0x16')](_0x27af5e));_0x101aa7(_0x27af5e);})[_0x5a23('0x1c')](function(_0x2775eb){logger[_0x5a23('0x17')](_0x5a23('0x1d'),_0x2775eb['message'],_0x14c2a8);_0x3120bb(_0x36e8b8[_0x5a23('0x17')](0x1f4,_0x2775eb[_0x5a23('0x19')]));});});};
\ No newline at end of file
+var _0xedfd=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','model','map','moment','randomstring'];(function(_0xf05091,_0x375793){var _0x465ca3=function(_0x31f4c4){while(--_0x31f4c4){_0xf05091['push'](_0xf05091['shift']());}};_0x465ca3(++_0x375793);}(_0xedfd,0x1df));var _0xdedf=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0xedfd[_0x4bb66f];return _0xf2772f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xdedf('0x0'));var BPromise=require('bluebird');var rs=require(_0xdedf('0x1'));var fs=require('fs');var Redis=require(_0xdedf('0x2'));var db=require(_0xdedf('0x3'))['db'];var utils=require(_0xdedf('0x4'));var logger=require(_0xdedf('0x5'))(_0xdedf('0x6'));var config=require(_0xdedf('0x7'));var jayson=require(_0xdedf('0x8'));var client=jayson[_0xdedf('0x9')]['http']({'port':0x232a});config[_0xdedf('0xa')]=_[_0xdedf('0xb')](config[_0xdedf('0xa')],{'host':_0xdedf('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdedf('0xa')]));require(_0xdedf('0xd'))[_0xdedf('0xe')](socket);function respondWithRpcPromise(_0x4aa2b3,_0xdf4b4f,_0x21cd68){return new BPromise(function(_0x188667,_0x174aed){return client[_0xdedf('0xf')](_0x4aa2b3,_0x21cd68)[_0xdedf('0x10')](function(_0x30972d){logger[_0xdedf('0x11')](_0xdedf('0x12'),_0xdf4b4f,_0xdedf('0x13'));logger[_0xdedf('0x14')](_0xdedf('0x15'),_0xdf4b4f,_0xdedf('0x13'),JSON[_0xdedf('0x16')](_0x30972d));if(_0x30972d[_0xdedf('0x17')]){if(_0x30972d[_0xdedf('0x17')]['code']===0x1f4){logger[_0xdedf('0x17')](_0xdedf('0x12'),_0xdf4b4f,_0x30972d['error'][_0xdedf('0x18')]);return _0x174aed(_0x30972d['error'][_0xdedf('0x18')]);}logger['error'](_0xdedf('0x12'),_0xdf4b4f,_0x30972d[_0xdedf('0x17')][_0xdedf('0x18')]);return _0x188667(_0x30972d[_0xdedf('0x17')][_0xdedf('0x18')]);}else{logger[_0xdedf('0x11')]('SmsAccount,\x20%s,\x20%s',_0xdf4b4f,_0xdedf('0x13'));_0x188667(_0x30972d[_0xdedf('0x19')][_0xdedf('0x18')]);}})[_0xdedf('0x1a')](function(_0x43d91f){logger[_0xdedf('0x17')](_0xdedf('0x12'),_0xdf4b4f,_0x43d91f);_0x174aed(_0x43d91f);});});}exports[_0xdedf('0x1b')]=function(_0x145385){var _0x1f8ad1=this;return new Promise(function(_0x24442e,_0x5e0cb0){return db[_0xdedf('0x1c')][_0xdedf('0x1d')]({'raw':_0x145385[_0xdedf('0x1e')]?_0x145385[_0xdedf('0x1e')][_0xdedf('0x1f')]===undefined?!![]:![]:!![],'where':_0x145385[_0xdedf('0x1e')]?_0x145385[_0xdedf('0x1e')][_0xdedf('0x20')]||null:null,'attributes':_0x145385[_0xdedf('0x1e')]?_0x145385[_0xdedf('0x1e')][_0xdedf('0x21')]||null:null,'include':_0x145385[_0xdedf('0x1e')]?_0x145385[_0xdedf('0x1e')][_0xdedf('0x22')]?_['map'](_0x145385[_0xdedf('0x1e')][_0xdedf('0x22')],function(_0x213581){return{'model':db[_0x213581[_0xdedf('0x23')]],'as':_0x213581['as'],'attributes':_0x213581['attributes'],'include':_0x213581[_0xdedf('0x22')]?_[_0xdedf('0x24')](_0x213581[_0xdedf('0x22')],function(_0x5e0d33){return{'model':db[_0x5e0d33[_0xdedf('0x23')]],'as':_0x5e0d33['as'],'attributes':_0x5e0d33[_0xdedf('0x21')],'include':_0x5e0d33[_0xdedf('0x22')]?_[_0xdedf('0x24')](_0x5e0d33[_0xdedf('0x22')],function(_0x15c465){return{'model':db[_0x15c465[_0xdedf('0x23')]],'as':_0x15c465['as'],'attributes':_0x15c465[_0xdedf('0x21')]};}):[]};}):[]};}):[]:[]})[_0xdedf('0x10')](function(_0x3dde90){logger[_0xdedf('0x11')](_0xdedf('0x1b'),_0x145385);logger[_0xdedf('0x14')]('ShowSmsAccount',_0x145385,JSON[_0xdedf('0x16')](_0x3dde90));_0x24442e(_0x3dde90);})[_0xdedf('0x1a')](function(_0x374157){logger[_0xdedf('0x17')](_0xdedf('0x1b'),_0x374157[_0xdedf('0x18')],_0x145385);_0x5e0cb0(_0x1f8ad1[_0xdedf('0x17')](0x1f4,_0x374157[_0xdedf('0x18')]));});});};
\ No newline at end of file
index c5f5842..07ca426 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 a701f5d..928453a 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(_0x393d80,_0x3cb358){var _0x12569f=function(_0x507e69){while(--_0x507e69){_0x393d80['push'](_0x393d80['shift']());}};_0x12569f(++_0x3cb358);}(_0x3e74,0x175));var _0x43e7=function(_0x2bbc2e,_0x38c3d4){_0x2bbc2e=_0x2bbc2e-0x0;var _0x545ac0=_0x3e74[_0x2bbc2e];return _0x545ac0;};'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 _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x39afd1,_0x5bbdb0){var _0x2d1bab=function(_0x28cde1){while(--_0x28cde1){_0x39afd1['push'](_0x39afd1['shift']());}};_0x2d1bab(++_0x5bbdb0);}(_0x3e74,0x175));var _0x43e7=function(_0x4277ee,_0x261e5c){_0x4277ee=_0x4277ee-0x0;var _0x25533e=_0x3e74[_0x4277ee];return _0x25533e;};'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
index 7eeb83a..1f6e7a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61e2=['sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x2dbca1,_0x5f2b51){var _0x1085d3=function(_0xd09f05){while(--_0xd09f05){_0x2dbca1['push'](_0x2dbca1['shift']());}};_0x1085d3(++_0x5f2b51);}(_0x61e2,0x162));var _0x261e=function(_0x2f3fd1,_0x2a73e8){_0x2f3fd1=_0x2f3fd1-0x0;var _0x266044=_0x61e2[_0x2f3fd1];return _0x266044;};'use strict';var Sequelize=require(_0x261e('0x0'));module[_0x261e('0x1')]={'priority':{'type':Sequelize[_0x261e('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x261e('0x3')],'allowNull':![],'defaultValue':_0x261e('0x4')},'appdata':{'type':Sequelize[_0x261e('0x5')]()},'description':{'type':Sequelize[_0x261e('0x3')]},'interval':{'type':Sequelize[_0x261e('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xad8e=['STRING','TEXT'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0xad8e,0x1d7));var _0xead8=function(_0x120bfe,_0x196b6e){_0x120bfe=_0x120bfe-0x0;var _0x1bc657=_0xad8e[_0x120bfe];return _0x1bc657;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xead8('0x0')]()},'description':{'type':Sequelize[_0xead8('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index f6d50b6..8b799cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cfa=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','destroy','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','SmsApplication','include','rows','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse'];(function(_0x1db53f,_0xc93fe4){var _0x50db6=function(_0x3621b4){while(--_0x3621b4){_0x1db53f['push'](_0x1db53f['shift']());}};_0x50db6(++_0xc93fe4);}(_0x4cfa,0x148));var _0xa4cf=function(_0x55b22f,_0x22bd34){_0x55b22f=_0x55b22f-0x0;var _0x594fb5=_0x4cfa[_0x55b22f];return _0x594fb5;};'use strict';var emlformat=require(_0xa4cf('0x0'));var rimraf=require(_0xa4cf('0x1'));var zipdir=require(_0xa4cf('0x2'));var jsonpatch=require(_0xa4cf('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(_0xa4cf('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa4cf('0x5'));var _=require(_0xa4cf('0x6'));var squel=require(_0xa4cf('0x7'));var crypto=require(_0xa4cf('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xa4cf('0x9'));var toCsv=require(_0xa4cf('0xa'));var querystring=require('querystring');var Papa=require(_0xa4cf('0xb'));var Redis=require(_0xa4cf('0xc'));var authService=require(_0xa4cf('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xa4cf('0xe'));var hardwareService=require(_0xa4cf('0xf'));var logger=require(_0xa4cf('0x10'))('api');var utils=require(_0xa4cf('0x11'));var config=require(_0xa4cf('0x12'));var licenseUtil=require(_0xa4cf('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a98c7,_0x2f6803){_0x2f6803=_0x2f6803||0xcc;return function(_0x5740bd){if(_0x5740bd){return _0x3a98c7[_0xa4cf('0x14')](_0x2f6803);}return _0x3a98c7[_0xa4cf('0x15')](_0x2f6803)[_0xa4cf('0x16')]();};}function respondWithResult(_0x65dccf,_0x567a8a){_0x567a8a=_0x567a8a||0xc8;return function(_0x19985b){if(_0x19985b){return _0x65dccf[_0xa4cf('0x15')](_0x567a8a)[_0xa4cf('0x17')](_0x19985b);}};}function respondWithFilteredResult(_0x1f75e2,_0x5595cf){return function(_0x42c7a9){if(_0x42c7a9){var _0x2a1d71=typeof _0x5595cf['offset']===_0xa4cf('0x18')&&typeof _0x5595cf[_0xa4cf('0x19')]==='undefined';var _0x2943b1=_0x42c7a9[_0xa4cf('0x1a')];var _0x5a0138=_0x2a1d71?0x0:_0x5595cf[_0xa4cf('0x1b')];var _0x4d3990=_0x2a1d71?_0x42c7a9[_0xa4cf('0x1a')]:_0x5595cf[_0xa4cf('0x1b')]+_0x5595cf[_0xa4cf('0x19')];var _0x46900b;if(_0x4d3990>=_0x2943b1){_0x4d3990=_0x2943b1;_0x46900b=0xc8;}else{_0x46900b=0xce;}_0x1f75e2[_0xa4cf('0x15')](_0x46900b);return _0x1f75e2[_0xa4cf('0x1c')](_0xa4cf('0x1d'),_0x5a0138+'-'+_0x4d3990+'/'+_0x2943b1)[_0xa4cf('0x17')](_0x42c7a9);}return null;};}function patchUpdates(_0x3db4c4){return function(_0x5acd3a){try{jsonpatch[_0xa4cf('0x1e')](_0x5acd3a,_0x3db4c4,!![]);}catch(_0x4f528a){return BPromise['reject'](_0x4f528a);}return _0x5acd3a['save']();};}function saveUpdates(_0x4b7782,_0x5149ab){return function(_0x327216){if(_0x327216){return _0x327216[_0xa4cf('0x1f')](_0x4b7782)['then'](function(_0x5af11f){return _0x5af11f;});}return null;};}function removeEntity(_0x4e3e26,_0x478689){return function(_0xf8b06d){if(_0xf8b06d){return _0xf8b06d[_0xa4cf('0x20')]()[_0xa4cf('0x21')](function(){_0x4e3e26[_0xa4cf('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4be319,_0x322cfa){return function(_0x10069d){if(!_0x10069d){_0x4be319[_0xa4cf('0x14')](0x194);}return _0x10069d;};}function handleError(_0x1b0784,_0x451e46){_0x451e46=_0x451e46||0x1f4;return function(_0x4b92a8){logger['error'](_0x4b92a8[_0xa4cf('0x22')]);if(_0x4b92a8[_0xa4cf('0x23')]){delete _0x4b92a8['name'];}_0x1b0784[_0xa4cf('0x15')](_0x451e46)[_0xa4cf('0x24')](_0x4b92a8);};}exports[_0xa4cf('0x25')]=function(_0xc41cd6,_0x266abb){var _0x1da921={},_0x39c46d={},_0x5a1779={'count':0x0,'rows':[]};var _0x12ee65=_[_0xa4cf('0x26')](db['SmsApplication'][_0xa4cf('0x27')],function(_0x1ec5f1){return{'name':_0x1ec5f1[_0xa4cf('0x28')],'type':_0x1ec5f1[_0xa4cf('0x29')][_0xa4cf('0x2a')]};});_0x39c46d[_0xa4cf('0x2b')]=_['map'](_0x12ee65,'name');_0x39c46d[_0xa4cf('0x2c')]=_[_0xa4cf('0x2d')](_0xc41cd6[_0xa4cf('0x2c')]);_0x39c46d[_0xa4cf('0x2e')]=_[_0xa4cf('0x2f')](_0x39c46d[_0xa4cf('0x2b')],_0x39c46d[_0xa4cf('0x2c')]);_0x1da921[_0xa4cf('0x30')]=_['intersection'](_0x39c46d[_0xa4cf('0x2b')],qs[_0xa4cf('0x31')](_0xc41cd6['query'][_0xa4cf('0x31')]));_0x1da921[_0xa4cf('0x30')]=_0x1da921[_0xa4cf('0x30')]['length']?_0x1da921[_0xa4cf('0x30')]:_0x39c46d[_0xa4cf('0x2b')];if(!_0xc41cd6[_0xa4cf('0x2c')][_0xa4cf('0x32')](_0xa4cf('0x33'))){_0x1da921[_0xa4cf('0x19')]=qs['limit'](_0xc41cd6[_0xa4cf('0x2c')][_0xa4cf('0x19')]);_0x1da921[_0xa4cf('0x1b')]=qs['offset'](_0xc41cd6[_0xa4cf('0x2c')]['offset']);}_0x1da921[_0xa4cf('0x34')]=qs['sort'](_0xc41cd6[_0xa4cf('0x2c')]['sort']);_0x1da921[_0xa4cf('0x35')]=qs['filters'](_[_0xa4cf('0x36')](_0xc41cd6[_0xa4cf('0x2c')],_0x39c46d['filters']),_0x12ee65);if(_0xc41cd6[_0xa4cf('0x2c')][_0xa4cf('0x37')]){_0x1da921[_0xa4cf('0x35')]=_[_0xa4cf('0x38')](_0x1da921['where'],{'$or':_[_0xa4cf('0x26')](_0x12ee65,function(_0x31f39b){if(_0x31f39b[_0xa4cf('0x29')]!=='VIRTUAL'){var _0x4f9621={};_0x4f9621[_0x31f39b[_0xa4cf('0x23')]]={'$like':'%'+_0xc41cd6[_0xa4cf('0x2c')][_0xa4cf('0x37')]+'%'};return _0x4f9621;}})});}_0x1da921=_[_0xa4cf('0x38')]({},_0x1da921,_0xc41cd6[_0xa4cf('0x39')]);var _0x1adece={'where':_0x1da921[_0xa4cf('0x35')]};return db[_0xa4cf('0x3a')][_0xa4cf('0x1a')](_0x1adece)[_0xa4cf('0x21')](function(_0x1f67d3){_0x5a1779[_0xa4cf('0x1a')]=_0x1f67d3;if(_0xc41cd6[_0xa4cf('0x2c')]['includeAll']){_0x1da921[_0xa4cf('0x3b')]=[{'all':!![]}];}return db[_0xa4cf('0x3a')]['findAll'](_0x1da921);})[_0xa4cf('0x21')](function(_0x4e61b3){_0x5a1779[_0xa4cf('0x3c')]=_0x4e61b3;return _0x5a1779;})[_0xa4cf('0x21')](respondWithFilteredResult(_0x266abb,_0x1da921))[_0xa4cf('0x3d')](handleError(_0x266abb,null));};exports[_0xa4cf('0x3e')]=function(_0xc0be8d,_0x58d43e){var _0x2d4c66={'raw':!![],'where':{'id':_0xc0be8d[_0xa4cf('0x3f')]['id']}},_0x476c14={};_0x476c14[_0xa4cf('0x2b')]=_[_0xa4cf('0x2d')](db[_0xa4cf('0x3a')]['rawAttributes']);_0x476c14[_0xa4cf('0x2c')]=_['keys'](_0xc0be8d[_0xa4cf('0x2c')]);_0x476c14[_0xa4cf('0x2e')]=_['intersection'](_0x476c14['model'],_0x476c14[_0xa4cf('0x2c')]);_0x2d4c66['attributes']=_[_0xa4cf('0x2f')](_0x476c14['model'],qs[_0xa4cf('0x31')](_0xc0be8d[_0xa4cf('0x2c')][_0xa4cf('0x31')]));_0x2d4c66['attributes']=_0x2d4c66[_0xa4cf('0x30')][_0xa4cf('0x40')]?_0x2d4c66['attributes']:_0x476c14[_0xa4cf('0x2b')];if(_0xc0be8d['query']['includeAll']){_0x2d4c66[_0xa4cf('0x3b')]=[{'all':!![]}];}_0x2d4c66=_[_0xa4cf('0x38')]({},_0x2d4c66,_0xc0be8d[_0xa4cf('0x39')]);return db[_0xa4cf('0x3a')][_0xa4cf('0x41')](_0x2d4c66)[_0xa4cf('0x21')](handleEntityNotFound(_0x58d43e,null))['then'](respondWithResult(_0x58d43e,null))[_0xa4cf('0x3d')](handleError(_0x58d43e,null));};exports[_0xa4cf('0x42')]=function(_0x472b12,_0x50beab){return db[_0xa4cf('0x3a')][_0xa4cf('0x42')](_0x472b12['body'],{})[_0xa4cf('0x21')](respondWithResult(_0x50beab,0xc9))['catch'](handleError(_0x50beab,null));};exports['update']=function(_0x2bf41f,_0x4c0753){if(_0x2bf41f['body']['id']){delete _0x2bf41f[_0xa4cf('0x43')]['id'];}return db[_0xa4cf('0x3a')][_0xa4cf('0x41')]({'where':{'id':_0x2bf41f[_0xa4cf('0x3f')]['id']}})[_0xa4cf('0x21')](handleEntityNotFound(_0x4c0753,null))[_0xa4cf('0x21')](saveUpdates(_0x2bf41f[_0xa4cf('0x43')],null))[_0xa4cf('0x21')](respondWithResult(_0x4c0753,null))[_0xa4cf('0x3d')](handleError(_0x4c0753,null));};exports[_0xa4cf('0x20')]=function(_0x50ce25,_0x1a4f07){return db[_0xa4cf('0x3a')][_0xa4cf('0x41')]({'where':{'id':_0x50ce25[_0xa4cf('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1a4f07,null))[_0xa4cf('0x21')](removeEntity(_0x1a4f07,null))['catch'](handleError(_0x1a4f07,null));};
\ No newline at end of file
+var _0x9c4c=['stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SmsApplication','includeAll','include','rows','catch','show','params','length','find','create','body','update','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','Content-Range','json','save','then','destroy','error'];(function(_0x38e31e,_0x35d536){var _0x5a020f=function(_0x3dde71){while(--_0x3dde71){_0x38e31e['push'](_0x38e31e['shift']());}};_0x5a020f(++_0x35d536);}(_0x9c4c,0xc1));var _0xc9c4=function(_0x40817c,_0x487674){_0x40817c=_0x40817c-0x0;var _0x147c45=_0x9c4c[_0x40817c];return _0x147c45;};'use strict';var emlformat=require(_0xc9c4('0x0'));var rimraf=require(_0xc9c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc9c4('0x2'));var rp=require(_0xc9c4('0x3'));var moment=require(_0xc9c4('0x4'));var BPromise=require(_0xc9c4('0x5'));var Mustache=require(_0xc9c4('0x6'));var util=require(_0xc9c4('0x7'));var path=require(_0xc9c4('0x8'));var sox=require(_0xc9c4('0x9'));var csv=require(_0xc9c4('0xa'));var ejs=require(_0xc9c4('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc9c4('0xc'));var squel=require(_0xc9c4('0xd'));var crypto=require('crypto');var jsforce=require(_0xc9c4('0xe'));var deskjs=require(_0xc9c4('0xf'));var toCsv=require('to-csv');var querystring=require(_0xc9c4('0x10'));var Papa=require(_0xc9c4('0x11'));var Redis=require(_0xc9c4('0x12'));var authService=require(_0xc9c4('0x13'));var qs=require(_0xc9c4('0x14'));var as=require(_0xc9c4('0x15'));var hardwareService=require(_0xc9c4('0x16'));var logger=require(_0xc9c4('0x17'))(_0xc9c4('0x18'));var utils=require('../../config/utils');var config=require(_0xc9c4('0x19'));var licenseUtil=require(_0xc9c4('0x1a'));var db=require(_0xc9c4('0x1b'))['db'];function respondWithStatusCode(_0x1db128,_0x218f78){_0x218f78=_0x218f78||0xcc;return function(_0x5095b6){if(_0x5095b6){return _0x1db128[_0xc9c4('0x1c')](_0x218f78);}return _0x1db128['status'](_0x218f78)[_0xc9c4('0x1d')]();};}function respondWithResult(_0x4e976f,_0x14ddf2){_0x14ddf2=_0x14ddf2||0xc8;return function(_0x3a2a41){if(_0x3a2a41){return _0x4e976f[_0xc9c4('0x1e')](_0x14ddf2)['json'](_0x3a2a41);}};}function respondWithFilteredResult(_0x445393,_0x55df54){return function(_0x4cf2a5){if(_0x4cf2a5){var _0x4cc07e=typeof _0x55df54[_0xc9c4('0x1f')]==='undefined'&&typeof _0x55df54[_0xc9c4('0x20')]===_0xc9c4('0x21');var _0x5d43e9=_0x4cf2a5[_0xc9c4('0x22')];var _0x518d69=_0x4cc07e?0x0:_0x55df54['offset'];var _0x4cea1a=_0x4cc07e?_0x4cf2a5[_0xc9c4('0x22')]:_0x55df54[_0xc9c4('0x1f')]+_0x55df54[_0xc9c4('0x20')];var _0x11c2ec;if(_0x4cea1a>=_0x5d43e9){_0x4cea1a=_0x5d43e9;_0x11c2ec=0xc8;}else{_0x11c2ec=0xce;}_0x445393[_0xc9c4('0x1e')](_0x11c2ec);return _0x445393['set'](_0xc9c4('0x23'),_0x518d69+'-'+_0x4cea1a+'/'+_0x5d43e9)[_0xc9c4('0x24')](_0x4cf2a5);}return null;};}function patchUpdates(_0x217543){return function(_0x5a1482){try{jsonpatch['apply'](_0x5a1482,_0x217543,!![]);}catch(_0x2f89b2){return BPromise['reject'](_0x2f89b2);}return _0x5a1482[_0xc9c4('0x25')]();};}function saveUpdates(_0xb6cbc0,_0x44243c){return function(_0x55e14b){if(_0x55e14b){return _0x55e14b['update'](_0xb6cbc0)[_0xc9c4('0x26')](function(_0x5863d2){return _0x5863d2;});}return null;};}function removeEntity(_0x32cf7e,_0x461190){return function(_0x434b9b){if(_0x434b9b){return _0x434b9b[_0xc9c4('0x27')]()['then'](function(){_0x32cf7e[_0xc9c4('0x1e')](0xcc)[_0xc9c4('0x1d')]();});}};}function handleEntityNotFound(_0xef550,_0x509a23){return function(_0x5b0193){if(!_0x5b0193){_0xef550[_0xc9c4('0x1c')](0x194);}return _0x5b0193;};}function handleError(_0x4003b6,_0x5f2c22){_0x5f2c22=_0x5f2c22||0x1f4;return function(_0x791f97){logger[_0xc9c4('0x28')](_0x791f97[_0xc9c4('0x29')]);if(_0x791f97[_0xc9c4('0x2a')]){delete _0x791f97[_0xc9c4('0x2a')];}_0x4003b6[_0xc9c4('0x1e')](_0x5f2c22)['send'](_0x791f97);};}exports[_0xc9c4('0x2b')]=function(_0x3ff04b,_0x5e50ba){var _0xa790d1={},_0x1426a5={},_0x993560={'count':0x0,'rows':[]};var _0xca802e=_[_0xc9c4('0x2c')](db['SmsApplication'][_0xc9c4('0x2d')],function(_0x1793eb){return{'name':_0x1793eb[_0xc9c4('0x2e')],'type':_0x1793eb[_0xc9c4('0x2f')][_0xc9c4('0x30')]};});_0x1426a5[_0xc9c4('0x31')]=_[_0xc9c4('0x2c')](_0xca802e,_0xc9c4('0x2a'));_0x1426a5['query']=_[_0xc9c4('0x32')](_0x3ff04b[_0xc9c4('0x33')]);_0x1426a5[_0xc9c4('0x34')]=_[_0xc9c4('0x35')](_0x1426a5[_0xc9c4('0x31')],_0x1426a5[_0xc9c4('0x33')]);_0xa790d1[_0xc9c4('0x36')]=_['intersection'](_0x1426a5[_0xc9c4('0x31')],qs[_0xc9c4('0x37')](_0x3ff04b[_0xc9c4('0x33')]['fields']));_0xa790d1['attributes']=_0xa790d1[_0xc9c4('0x36')]['length']?_0xa790d1[_0xc9c4('0x36')]:_0x1426a5[_0xc9c4('0x31')];if(!_0x3ff04b[_0xc9c4('0x33')][_0xc9c4('0x38')](_0xc9c4('0x39'))){_0xa790d1[_0xc9c4('0x20')]=qs[_0xc9c4('0x20')](_0x3ff04b['query'][_0xc9c4('0x20')]);_0xa790d1[_0xc9c4('0x1f')]=qs[_0xc9c4('0x1f')](_0x3ff04b[_0xc9c4('0x33')][_0xc9c4('0x1f')]);}_0xa790d1[_0xc9c4('0x3a')]=qs['sort'](_0x3ff04b[_0xc9c4('0x33')][_0xc9c4('0x3b')]);_0xa790d1[_0xc9c4('0x3c')]=qs[_0xc9c4('0x34')](_[_0xc9c4('0x3d')](_0x3ff04b[_0xc9c4('0x33')],_0x1426a5[_0xc9c4('0x34')]),_0xca802e);if(_0x3ff04b[_0xc9c4('0x33')][_0xc9c4('0x3e')]){_0xa790d1[_0xc9c4('0x3c')]=_[_0xc9c4('0x3f')](_0xa790d1[_0xc9c4('0x3c')],{'$or':_[_0xc9c4('0x2c')](_0xca802e,function(_0xc38f25){if(_0xc38f25[_0xc9c4('0x2f')]!==_0xc9c4('0x40')){var _0xba7d5c={};_0xba7d5c[_0xc38f25[_0xc9c4('0x2a')]]={'$like':'%'+_0x3ff04b[_0xc9c4('0x33')][_0xc9c4('0x3e')]+'%'};return _0xba7d5c;}})});}_0xa790d1=_[_0xc9c4('0x3f')]({},_0xa790d1,_0x3ff04b[_0xc9c4('0x41')]);var _0x20fcd4={'where':_0xa790d1['where']};return db[_0xc9c4('0x42')][_0xc9c4('0x22')](_0x20fcd4)[_0xc9c4('0x26')](function(_0x286520){_0x993560[_0xc9c4('0x22')]=_0x286520;if(_0x3ff04b['query'][_0xc9c4('0x43')]){_0xa790d1[_0xc9c4('0x44')]=[{'all':!![]}];}return db['SmsApplication']['findAll'](_0xa790d1);})[_0xc9c4('0x26')](function(_0x433ab6){_0x993560[_0xc9c4('0x45')]=_0x433ab6;return _0x993560;})['then'](respondWithFilteredResult(_0x5e50ba,_0xa790d1))[_0xc9c4('0x46')](handleError(_0x5e50ba,null));};exports[_0xc9c4('0x47')]=function(_0x4ba77d,_0x4ac28f){var _0x47c6e5={'raw':!![],'where':{'id':_0x4ba77d[_0xc9c4('0x48')]['id']}},_0x28d330={};_0x28d330[_0xc9c4('0x31')]=_[_0xc9c4('0x32')](db['SmsApplication'][_0xc9c4('0x2d')]);_0x28d330['query']=_['keys'](_0x4ba77d['query']);_0x28d330[_0xc9c4('0x34')]=_['intersection'](_0x28d330[_0xc9c4('0x31')],_0x28d330[_0xc9c4('0x33')]);_0x47c6e5[_0xc9c4('0x36')]=_[_0xc9c4('0x35')](_0x28d330[_0xc9c4('0x31')],qs[_0xc9c4('0x37')](_0x4ba77d[_0xc9c4('0x33')][_0xc9c4('0x37')]));_0x47c6e5[_0xc9c4('0x36')]=_0x47c6e5[_0xc9c4('0x36')][_0xc9c4('0x49')]?_0x47c6e5[_0xc9c4('0x36')]:_0x28d330[_0xc9c4('0x31')];if(_0x4ba77d[_0xc9c4('0x33')][_0xc9c4('0x43')]){_0x47c6e5[_0xc9c4('0x44')]=[{'all':!![]}];}_0x47c6e5=_[_0xc9c4('0x3f')]({},_0x47c6e5,_0x4ba77d[_0xc9c4('0x41')]);return db[_0xc9c4('0x42')][_0xc9c4('0x4a')](_0x47c6e5)[_0xc9c4('0x26')](handleEntityNotFound(_0x4ac28f,null))[_0xc9c4('0x26')](respondWithResult(_0x4ac28f,null))[_0xc9c4('0x46')](handleError(_0x4ac28f,null));};exports[_0xc9c4('0x4b')]=function(_0x433e92,_0xf02187){return db['SmsApplication'][_0xc9c4('0x4b')](_0x433e92[_0xc9c4('0x4c')],{})[_0xc9c4('0x26')](respondWithResult(_0xf02187,0xc9))[_0xc9c4('0x46')](handleError(_0xf02187,null));};exports[_0xc9c4('0x4d')]=function(_0x149119,_0x4c3d98){if(_0x149119[_0xc9c4('0x4c')]['id']){delete _0x149119[_0xc9c4('0x4c')]['id'];}return db['SmsApplication'][_0xc9c4('0x4a')]({'where':{'id':_0x149119[_0xc9c4('0x48')]['id']}})[_0xc9c4('0x26')](handleEntityNotFound(_0x4c3d98,null))[_0xc9c4('0x26')](saveUpdates(_0x149119[_0xc9c4('0x4c')],null))[_0xc9c4('0x26')](respondWithResult(_0x4c3d98,null))['catch'](handleError(_0x4c3d98,null));};exports[_0xc9c4('0x27')]=function(_0x1e3621,_0x1b5646){return db[_0xc9c4('0x42')][_0xc9c4('0x4a')]({'where':{'id':_0x1e3621[_0xc9c4('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b5646,null))[_0xc9c4('0x26')](removeEntity(_0x1b5646,null))[_0xc9c4('0x46')](handleError(_0x1b5646,null));};
\ No newline at end of file
index d27bd99..a7525bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb328=['path','rimraf','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment'];(function(_0x2f44c9,_0x28b766){var _0x3cbe25=function(_0x53047b){while(--_0x53047b){_0x2f44c9['push'](_0x2f44c9['shift']());}};_0x3cbe25(++_0x28b766);}(_0xb328,0xcc));var _0x8b32=function(_0x48d0b5,_0x309df8){_0x48d0b5=_0x48d0b5-0x0;var _0x147bbe=_0xb328[_0x48d0b5];return _0x147bbe;};'use strict';var _=require(_0x8b32('0x0'));var util=require(_0x8b32('0x1'));var logger=require(_0x8b32('0x2'))('api');var moment=require(_0x8b32('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8b32('0x4'));var rimraf=require(_0x8b32('0x5'));var config=require('../../config/environment');var attributes=require(_0x8b32('0x6'));module[_0x8b32('0x7')]=function(_0x12f29a,_0x1e6233){return _0x12f29a[_0x8b32('0x8')](_0x8b32('0x9'),attributes,{'tableName':_0x8b32('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8b32('0xb'),'collate':_0x8b32('0xc')});};
\ No newline at end of file
+var _0x7a84=['../../config/environment','./smsApplication.attributes','exports','SmsApplication','sms_applications','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x42eda0,_0x389a6e){var _0x18682c=function(_0x2bd947){while(--_0x2bd947){_0x42eda0['push'](_0x42eda0['shift']());}};_0x18682c(++_0x389a6e);}(_0x7a84,0x186));var _0x47a8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7a84[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x47a8('0x0'));var logger=require(_0x47a8('0x1'))(_0x47a8('0x2'));var moment=require('moment');var BPromise=require(_0x47a8('0x3'));var rp=require(_0x47a8('0x4'));var fs=require('fs');var path=require(_0x47a8('0x5'));var rimraf=require('rimraf');var config=require(_0x47a8('0x6'));var attributes=require(_0x47a8('0x7'));module[_0x47a8('0x8')]=function(_0x555573,_0x4b6f82){return _0x555573['define'](_0x47a8('0x9'),attributes,{'tableName':_0x47a8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x47a8('0xb')});};
\ No newline at end of file
index b7e0341..1f49052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4a=['message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4c4a,0x1d0));var _0xa4c4=function(_0x86e076,_0x305e43){_0x86e076=_0x86e076-0x0;var _0x259c88=_0x4c4a[_0x86e076];return _0x259c88;};'use strict';var _=require(_0xa4c4('0x0'));var util=require(_0xa4c4('0x1'));var moment=require(_0xa4c4('0x2'));var BPromise=require('bluebird');var rs=require(_0xa4c4('0x3'));var fs=require('fs');var Redis=require(_0xa4c4('0x4'));var db=require(_0xa4c4('0x5'))['db'];var utils=require(_0xa4c4('0x6'));var logger=require('../../config/logger')(_0xa4c4('0x7'));var config=require('../../config/environment');var jayson=require(_0xa4c4('0x8'));var client=jayson[_0xa4c4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x557596,_0x11b498,_0x553525){return new BPromise(function(_0x27b877,_0x118d89){return client[_0xa4c4('0xa')](_0x557596,_0x553525)['then'](function(_0x5ec64c){logger[_0xa4c4('0xb')](_0xa4c4('0xc'),_0x11b498,_0xa4c4('0xd'));logger[_0xa4c4('0xe')](_0xa4c4('0xf'),_0x11b498,'request\x20sent',JSON[_0xa4c4('0x10')](_0x5ec64c));if(_0x5ec64c['error']){if(_0x5ec64c[_0xa4c4('0x11')][_0xa4c4('0x12')]===0x1f4){logger[_0xa4c4('0x11')](_0xa4c4('0xc'),_0x11b498,_0x5ec64c[_0xa4c4('0x11')][_0xa4c4('0x13')]);return _0x118d89(_0x5ec64c[_0xa4c4('0x11')][_0xa4c4('0x13')]);}logger[_0xa4c4('0x11')]('SmsApplication,\x20%s,\x20%s',_0x11b498,_0x5ec64c[_0xa4c4('0x11')][_0xa4c4('0x13')]);return _0x27b877(_0x5ec64c[_0xa4c4('0x11')][_0xa4c4('0x13')]);}else{logger[_0xa4c4('0xb')](_0xa4c4('0xc'),_0x11b498,_0xa4c4('0xd'));_0x27b877(_0x5ec64c['result'][_0xa4c4('0x13')]);}})[_0xa4c4('0x14')](function(_0x4b2f2d){logger[_0xa4c4('0x11')](_0xa4c4('0xc'),_0x11b498,_0x4b2f2d);_0x118d89(_0x4b2f2d);});});}
\ No newline at end of file
+var _0x7382=['message','result','catch','util','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SmsApplication,\x20%s,\x20%s','debug','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x25f797,_0x449916){var _0x157fdd=function(_0x329fe1){while(--_0x329fe1){_0x25f797['push'](_0x25f797['shift']());}};_0x157fdd(++_0x449916);}(_0x7382,0x111));var _0x2738=function(_0x463d1f,_0x213568){_0x463d1f=_0x463d1f-0x0;var _0x5df1ee=_0x7382[_0x463d1f];return _0x5df1ee;};'use strict';var _=require('lodash');var util=require(_0x2738('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2738('0x1'));var logger=require(_0x2738('0x2'))(_0x2738('0x3'));var config=require(_0x2738('0x4'));var jayson=require(_0x2738('0x5'));var client=jayson['client'][_0x2738('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2bc38a,_0xd74b07,_0x523aef){return new BPromise(function(_0x4235e7,_0x487d14){return client[_0x2738('0x7')](_0x2bc38a,_0x523aef)['then'](function(_0x476864){logger[_0x2738('0x8')](_0x2738('0x9'),_0xd74b07,'request\x20sent');logger[_0x2738('0xa')](_0x2738('0xb'),_0xd74b07,_0x2738('0xc'),JSON['stringify'](_0x476864));if(_0x476864['error']){if(_0x476864[_0x2738('0xd')][_0x2738('0xe')]===0x1f4){logger[_0x2738('0xd')](_0x2738('0x9'),_0xd74b07,_0x476864[_0x2738('0xd')][_0x2738('0xf')]);return _0x487d14(_0x476864[_0x2738('0xd')][_0x2738('0xf')]);}logger[_0x2738('0xd')](_0x2738('0x9'),_0xd74b07,_0x476864[_0x2738('0xd')]['message']);return _0x4235e7(_0x476864[_0x2738('0xd')][_0x2738('0xf')]);}else{logger['info'](_0x2738('0x9'),_0xd74b07,'request\x20sent');_0x4235e7(_0x476864[_0x2738('0x10')]['message']);}})[_0x2738('0x11')](function(_0x568065){logger[_0x2738('0xd')](_0x2738('0x9'),_0xd74b07,_0x568065);_0x487d14(_0x568065);});});}
\ No newline at end of file
index b756be4..a1dee09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['/:id/tags','exports','util','path','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','download','post','create','addMessage','sms','smsinteraction:addtags','tracked','smsinteraction:update','update','delete','destroy'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xda3f,0xec));var _0xfda3=function(_0x5c782f,_0x2f4648){_0x5c782f=_0x5c782f-0x0;var _0x995032=_0xda3f[_0x5c782f];return _0x995032;};'use strict';var multer=require('multer');var util=require(_0xfda3('0x0'));var path=require(_0xfda3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xfda3('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xfda3('0x3'));var config=require(_0xfda3('0x4'));var controller=require('./smsInteraction.controller');router[_0xfda3('0x5')]('/',auth[_0xfda3('0x6')](),controller['index']);router['get'](_0xfda3('0x7'),auth[_0xfda3('0x6')](),controller[_0xfda3('0x8')]);router[_0xfda3('0x5')](_0xfda3('0x9'),auth[_0xfda3('0x6')](),controller[_0xfda3('0xa')]);router[_0xfda3('0x5')](_0xfda3('0xb'),auth[_0xfda3('0x6')](),controller[_0xfda3('0xc')]);router[_0xfda3('0x5')]('/:id/download',auth[_0xfda3('0x6')](),controller[_0xfda3('0xd')]);router[_0xfda3('0xe')]('/',auth[_0xfda3('0x6')](),controller[_0xfda3('0xf')]);router['post'](_0xfda3('0xb'),auth['isAuthenticated'](),controller[_0xfda3('0x10')]);router[_0xfda3('0xe')]('/:id/tags',auth['isAuthenticated'](),interaction['tracked'](_0xfda3('0x11'),_0xfda3('0x12')),controller['addTags']);router['put']('/:id',auth[_0xfda3('0x6')](),interaction[_0xfda3('0x13')](_0xfda3('0x11'),_0xfda3('0x14')),controller[_0xfda3('0x15')]);router[_0xfda3('0x16')](_0xfda3('0x9'),auth[_0xfda3('0x6')](),interaction[_0xfda3('0x13')](_0xfda3('0x11'),'smsinteraction:destroy'),controller[_0xfda3('0x17')]);router[_0xfda3('0x16')](_0xfda3('0x18'),auth[_0xfda3('0x6')](),controller['removeTags']);module[_0xfda3('0x19')]=router;
\ No newline at end of file
+var _0x13f6=['isAuthenticated','index','get','/:id','show','/:id/messages','getMessages','/:id/download','download','create','addMessage','post','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','update','delete','smsinteraction:destroy','destroy','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller'];(function(_0x51e2b4,_0xfa7903){var _0x1e6389=function(_0x4b0ef1){while(--_0x4b0ef1){_0x51e2b4['push'](_0x51e2b4['shift']());}};_0x1e6389(++_0xfa7903);}(_0x13f6,0x124));var _0x613f=function(_0x31ecd9,_0x2b5f65){_0x31ecd9=_0x31ecd9-0x0;var _0x1ed3ee=_0x13f6[_0x31ecd9];return _0x1ed3ee;};'use strict';var multer=require(_0x613f('0x0'));var util=require(_0x613f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x613f('0x2'));var router=express[_0x613f('0x3')]();var fs_extra=require(_0x613f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x613f('0x5'));var config=require(_0x613f('0x6'));var controller=require(_0x613f('0x7'));router['get']('/',auth[_0x613f('0x8')](),controller[_0x613f('0x9')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x613f('0xa')](_0x613f('0xb'),auth[_0x613f('0x8')](),controller[_0x613f('0xc')]);router['get'](_0x613f('0xd'),auth[_0x613f('0x8')](),controller[_0x613f('0xe')]);router['get'](_0x613f('0xf'),auth[_0x613f('0x8')](),controller[_0x613f('0x10')]);router['post']('/',auth[_0x613f('0x8')](),controller[_0x613f('0x11')]);router['post']('/:id/messages',auth['isAuthenticated'](),controller[_0x613f('0x12')]);router[_0x613f('0x13')](_0x613f('0x14'),auth[_0x613f('0x8')](),interaction[_0x613f('0x15')](_0x613f('0x16'),_0x613f('0x17')),controller[_0x613f('0x18')]);router[_0x613f('0x19')](_0x613f('0xb'),auth['isAuthenticated'](),interaction[_0x613f('0x15')]('sms','smsinteraction:update'),controller[_0x613f('0x1a')]);router[_0x613f('0x1b')]('/:id',auth[_0x613f('0x8')](),interaction['tracked'](_0x613f('0x16'),_0x613f('0x1c')),controller[_0x613f('0x1d')]);router[_0x613f('0x1b')](_0x613f('0x14'),auth[_0x613f('0x8')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index a51b03d..6a0569f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc76=['exports','BOOLEAN','DATE','STRING','out','ENUM','moment'];(function(_0x4f9d5a,_0x5f0ac1){var _0x499e65=function(_0x55b998){while(--_0x55b998){_0x4f9d5a['push'](_0x4f9d5a['shift']());}};_0x499e65(++_0x5f0ac1);}(_0xfc76,0xb5));var _0x6fc7=function(_0x54bcd4,_0x8aff0f){_0x54bcd4=_0x54bcd4-0x0;var _0x50e96e=_0xfc76[_0x54bcd4];return _0x50e96e;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x6fc7('0x0'));module[_0x6fc7('0x1')]={'closed':{'type':Sequelize[_0x6fc7('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x6fc7('0x3')]},'disposition':{'type':Sequelize[_0x6fc7('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x6fc7('0x4')]},'note':{'type':Sequelize[_0x6fc7('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x6fc7('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x6fc7('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x6fc7('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x6fc7('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x6fc7('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x34f2=['STRING','ENUM','out','sequelize','moment','BOOLEAN','DATE'];(function(_0x372e96,_0xaf5c4f){var _0x4e9dc1=function(_0x410e56){while(--_0x410e56){_0x372e96['push'](_0x372e96['shift']());}};_0x4e9dc1(++_0xaf5c4f);}(_0x34f2,0x15a));var _0x234f=function(_0x152313,_0x1e3dc8){_0x152313=_0x152313-0x0;var _0xc86a02=_0x34f2[_0x152313];return _0xc86a02;};'use strict';var Sequelize=require(_0x234f('0x0'));var moment=require(_0x234f('0x1'));module['exports']={'closed':{'type':Sequelize[_0x234f('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x234f('0x3')]},'disposition':{'type':Sequelize[_0x234f('0x4')]},'secondDisposition':{'type':Sequelize[_0x234f('0x4')]},'thirdDisposition':{'type':Sequelize[_0x234f('0x4')]},'note':{'type':Sequelize[_0x234f('0x4')]},'phone':{'type':Sequelize[_0x234f('0x4')]},'read1stAt':{'type':Sequelize[_0x234f('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x234f('0x5')]('in',_0x234f('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x234f('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x234f('0x5')]('in',_0x234f('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x234f('0x2')],'defaultValue':![]}};
\ No newline at end of file
index beee51f..5ddf895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c23=['join','transcript-%d-%s.zip','User','fullname','CmContact','Contact','lastName','Messages','createdAt','direction','read','push','SmsAccount','Account','mkdirSync','Sms','Owner','N.A.','toString','closed','closedAt','disposition','out','firstName','secret','value','renderFile','server','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','util','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','update','then','error','stack','name','index','map','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','user','catch','show','params','model','keys','query','attributes','intersection','fields','length','options','create','body','find','destroy','addMessage','SmsMessage','ids','filters','hasOwnProperty','nolimit','order','sort','where','SmsInteractionId','merge','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','rows','addTags','setTags','omit','Tag','color','emit','smsInteractionTags:save','removeTags','unix','root','files','tmp'];(function(_0x4d58d0,_0x27b23c){var _0x964f17=function(_0x51ad24){while(--_0x51ad24){_0x4d58d0['push'](_0x4d58d0['shift']());}};_0x964f17(++_0x27b23c);}(_0x6c23,0x112));var _0x36c2=function(_0x5ce069,_0x126368){_0x5ce069=_0x5ce069-0x0;var _0x24d350=_0x6c23[_0x5ce069];return _0x24d350;};'use strict';var rimraf=require(_0x36c2('0x0'));var zipdir=require(_0x36c2('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x36c2('0x2'));var path=require(_0x36c2('0x3'));var ejs=require(_0x36c2('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x36c2('0x5'));var qs=require(_0x36c2('0x6'));var pdf=require(_0x36c2('0x7'));var logger=require('../../config/logger')(_0x36c2('0x8'));var config=require(_0x36c2('0x9'));var db=require(_0x36c2('0xa'))['db'];config['redis']=_['defaults'](config[_0x36c2('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x36c2('0xc'))(new Redis(config[_0x36c2('0xb')]));require(_0x36c2('0xd'))[_0x36c2('0xe')](socket);function respondWithStatusCode(_0x5e5d94,_0x55bdc2){_0x55bdc2=_0x55bdc2||0xcc;return function(_0x140038){if(_0x140038){return _0x5e5d94[_0x36c2('0xf')](_0x55bdc2);}return _0x5e5d94[_0x36c2('0x10')](_0x55bdc2)[_0x36c2('0x11')]();};}function respondWithResult(_0x234263,_0x1ebbfc){_0x1ebbfc=_0x1ebbfc||0xc8;return function(_0x263a70){if(_0x263a70){return _0x234263['status'](_0x1ebbfc)[_0x36c2('0x12')](_0x263a70);}};}function respondWithFilteredResult(_0x2c548e,_0x37afea){return function(_0x3cb8a2){if(_0x3cb8a2){var _0x360503=typeof _0x37afea[_0x36c2('0x13')]===_0x36c2('0x14')&&typeof _0x37afea[_0x36c2('0x15')]===_0x36c2('0x14');var _0x478581=_0x3cb8a2[_0x36c2('0x16')];var _0xb6bdc3=_0x360503?0x0:_0x37afea['offset'];var _0x16814f=_0x360503?_0x3cb8a2[_0x36c2('0x16')]:_0x37afea['offset']+_0x37afea[_0x36c2('0x15')];var _0x4c01b7;if(_0x16814f>=_0x478581){_0x16814f=_0x478581;_0x4c01b7=0xc8;}else{_0x4c01b7=0xce;}_0x2c548e[_0x36c2('0x10')](_0x4c01b7);return _0x2c548e['set']('Content-Range',_0xb6bdc3+'-'+_0x16814f+'/'+_0x478581)['json'](_0x3cb8a2);}return null;};}function saveUpdates(_0x15347d){return function(_0x426484){if(_0x426484){return _0x426484[_0x36c2('0x17')](_0x15347d)[_0x36c2('0x18')](function(_0x27c227){return _0x27c227;});}return null;};}function removeEntity(_0x42104c){return function(_0x153e2e){if(_0x153e2e){return _0x153e2e['destroy']()['then'](function(){_0x42104c[_0x36c2('0x10')](0xcc)[_0x36c2('0x11')]();});}};}function handleEntityNotFound(_0x237ade){return function(_0xd80b5d){if(!_0xd80b5d){_0x237ade['sendStatus'](0x194);}return _0xd80b5d;};}function handleError(_0x3e2937,_0x5d677b){_0x5d677b=_0x5d677b||0x1f4;return function(_0x3fd0cb){logger[_0x36c2('0x19')](_0x3fd0cb[_0x36c2('0x1a')]);if(_0x3fd0cb[_0x36c2('0x1b')]){delete _0x3fd0cb[_0x36c2('0x1b')];}_0x3e2937[_0x36c2('0x10')](_0x5d677b)['send'](_0x3fd0cb);};}exports[_0x36c2('0x1c')]=function(_0x27468a,_0x35848c){var _0x1b996a={};var _0x262baa=_[_0x36c2('0x1d')](db[_0x36c2('0x1e')][_0x36c2('0x1f')],function(_0x2b5b7f){return{'name':_0x2b5b7f[_0x36c2('0x20')],'type':_0x2b5b7f[_0x36c2('0x21')][_0x36c2('0x22')]};});_0x1b996a=qs[_0x36c2('0x23')](_0x262baa,_0x27468a);return interaction['findAll']('sms',_0x27468a['query'],_0x27468a[_0x36c2('0x24')],_0x1b996a,_0x262baa)[_0x36c2('0x18')](respondWithFilteredResult(_0x35848c,_0x1b996a))[_0x36c2('0x25')](handleError(_0x35848c,null));};exports[_0x36c2('0x26')]=function(_0x5a69d3,_0x3e57b4){var _0x56ed95={'raw':![],'where':{'id':_0x5a69d3[_0x36c2('0x27')]['id']}},_0x3ddf2f={};_0x3ddf2f[_0x36c2('0x28')]=_[_0x36c2('0x29')](db[_0x36c2('0x1e')][_0x36c2('0x1f')]);_0x3ddf2f['query']=_[_0x36c2('0x29')](_0x5a69d3['query']);_0x3ddf2f['filters']=_['intersection'](_0x3ddf2f['model'],_0x3ddf2f[_0x36c2('0x2a')]);_0x56ed95[_0x36c2('0x2b')]=_[_0x36c2('0x2c')](_0x3ddf2f[_0x36c2('0x28')],qs[_0x36c2('0x2d')](_0x5a69d3[_0x36c2('0x2a')]['fields']));_0x56ed95[_0x36c2('0x2b')]=_0x56ed95['attributes'][_0x36c2('0x2e')]?_0x56ed95['attributes']:_0x3ddf2f[_0x36c2('0x28')];if(_0x5a69d3[_0x36c2('0x2a')]['includeAll']){_0x56ed95['include']=[{'all':!![]}];}_0x56ed95=_['merge']({},_0x56ed95,_0x5a69d3[_0x36c2('0x2f')]);return db[_0x36c2('0x1e')]['find'](_0x56ed95)[_0x36c2('0x18')](handleEntityNotFound(_0x3e57b4,null))[_0x36c2('0x18')](respondWithResult(_0x3e57b4,null))[_0x36c2('0x25')](handleError(_0x3e57b4,null));};exports[_0x36c2('0x30')]=function(_0x427df6,_0x54b03e){return db[_0x36c2('0x1e')][_0x36c2('0x30')](_0x427df6[_0x36c2('0x31')],{})[_0x36c2('0x18')](respondWithResult(_0x54b03e,0xc9))[_0x36c2('0x25')](handleError(_0x54b03e,null));};exports[_0x36c2('0x17')]=function(_0x1cf00f,_0x17ae6b){if(_0x1cf00f[_0x36c2('0x31')]['id']){delete _0x1cf00f['body']['id'];}return db['SmsInteraction'][_0x36c2('0x32')]({'where':{'id':_0x1cf00f['params']['id']}})[_0x36c2('0x18')](handleEntityNotFound(_0x17ae6b,null))[_0x36c2('0x18')](saveUpdates(_0x1cf00f[_0x36c2('0x31')],null))[_0x36c2('0x18')](respondWithResult(_0x17ae6b,null))[_0x36c2('0x25')](handleError(_0x17ae6b,null));};exports[_0x36c2('0x33')]=function(_0x3bfea0,_0x49baf5){return db['SmsInteraction'][_0x36c2('0x32')]({'where':{'id':_0x3bfea0[_0x36c2('0x27')]['id']}})['then'](handleEntityNotFound(_0x49baf5,null))[_0x36c2('0x18')](removeEntity(_0x49baf5,null))[_0x36c2('0x25')](handleError(_0x49baf5,null));};exports['describe']=function(_0x19eac9,_0x413cbf){return db[_0x36c2('0x1e')]['describe']()[_0x36c2('0x18')](respondWithResult(_0x413cbf,null))[_0x36c2('0x25')](handleError(_0x413cbf,null));};exports[_0x36c2('0x34')]=function(_0x213bd5,_0x1965cf){return db[_0x36c2('0x35')][_0x36c2('0x32')]({'where':{'id':_0x213bd5[_0x36c2('0x27')]['id']}})[_0x36c2('0x18')](handleEntityNotFound(_0x1965cf,null))['then'](function(_0x41b9a0){if(_0x41b9a0){return _0x41b9a0[_0x36c2('0x34')](_0x213bd5[_0x36c2('0x31')][_0x36c2('0x36')],_['omit'](_0x213bd5[_0x36c2('0x31')],[_0x36c2('0x36'),'id'])||{});}})[_0x36c2('0x18')](respondWithResult(_0x1965cf,null))[_0x36c2('0x25')](handleError(_0x1965cf,null));};exports['getMessages']=function(_0x4aa3ae,_0x48cb22){var _0x14ad37={'raw':![],'where':{}};var _0x5b1ac1={};var _0x1cefab={'count':0x0,'rows':[]};return db[_0x36c2('0x1e')]['findOne']({'where':{'id':_0x4aa3ae['params']['id']}})[_0x36c2('0x18')](handleEntityNotFound(_0x48cb22,null))[_0x36c2('0x18')](function(_0x47d23a){if(_0x47d23a){_0x5b1ac1[_0x36c2('0x28')]=_[_0x36c2('0x29')](db[_0x36c2('0x35')]['rawAttributes']);_0x5b1ac1[_0x36c2('0x2a')]=_['keys'](_0x4aa3ae[_0x36c2('0x2a')]);_0x5b1ac1[_0x36c2('0x37')]=_[_0x36c2('0x2c')](_0x5b1ac1[_0x36c2('0x28')],_0x5b1ac1[_0x36c2('0x2a')]);_0x14ad37[_0x36c2('0x2b')]=_['intersection'](_0x5b1ac1['model'],qs[_0x36c2('0x2d')](_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x2d')]));_0x14ad37['attributes']=_0x14ad37['attributes']['length']?_0x14ad37['attributes']:_0x5b1ac1['model'];if(!_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x38')](_0x36c2('0x39'))){_0x14ad37[_0x36c2('0x15')]=qs['limit'](_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x15')]);_0x14ad37[_0x36c2('0x13')]=qs[_0x36c2('0x13')](_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x13')]);}_0x14ad37[_0x36c2('0x3a')]=qs[_0x36c2('0x3b')](_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x3b')]);_0x14ad37[_0x36c2('0x3c')]=qs[_0x36c2('0x37')](_['pick'](_0x4aa3ae[_0x36c2('0x2a')],_0x5b1ac1['filters']));_0x14ad37[_0x36c2('0x3c')][_0x36c2('0x3d')]=_0x47d23a['id'];if(_0x4aa3ae['query']['filter']){_0x14ad37[_0x36c2('0x3c')]=_[_0x36c2('0x3e')](_0x14ad37['where'],{'$or':_[_0x36c2('0x1d')](_0x14ad37[_0x36c2('0x2b')],function(_0xf9cf3e){var _0x2cf335={};_0x2cf335[_0xf9cf3e]={'$like':'%'+_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x3f')]+'%'};return _0x2cf335;})});}if(_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x40')]){var _0x554c1e=_0x4aa3ae[_0x36c2('0x2a')][_0x36c2('0x40')][_0x36c2('0x41')](',');var _0x3a4720={};_0x3a4720[_0x554c1e[0x0]]={'$gte':moment(_0x554c1e[0x1])[_0x36c2('0x42')](_0x36c2('0x43'))};_0x14ad37['where']=_[_0x36c2('0x3e')](_0x14ad37[_0x36c2('0x3c')],_0x3a4720);}_0x14ad37=_[_0x36c2('0x3e')]({},_0x14ad37,_0x4aa3ae[_0x36c2('0x2f')]);return db[_0x36c2('0x35')][_0x36c2('0x16')]({'where':_0x14ad37[_0x36c2('0x3c')]})[_0x36c2('0x18')](function(_0x143d97){_0x1cefab['count']=_0x143d97;if(_0x4aa3ae[_0x36c2('0x2a')]['includeAll']){_0x14ad37[_0x36c2('0x44')]=[{'all':!![]}];}return db['SmsMessage'][_0x36c2('0x45')](_0x14ad37);})[_0x36c2('0x18')](function(_0x30e39e){_0x1cefab[_0x36c2('0x46')]=_0x30e39e;return _0x1cefab;});}})['then'](respondWithFilteredResult(_0x48cb22,_0x14ad37))[_0x36c2('0x25')](handleError(_0x48cb22,null));};exports[_0x36c2('0x47')]=function(_0x591ffe,_0x59e16c){return db[_0x36c2('0x1e')]['find']({'where':{'id':_0x591ffe['params']['id']}})['then'](handleEntityNotFound(_0x59e16c,null))['then'](function(_0x33ab1e){if(_0x33ab1e){return _0x33ab1e[_0x36c2('0x48')](_0x591ffe[_0x36c2('0x31')]['ids'],_[_0x36c2('0x49')](_0x591ffe[_0x36c2('0x31')],[_0x36c2('0x36'),'id'])||{})['spread'](function(){return db[_0x36c2('0x4a')][_0x36c2('0x45')]({'attributes':['id',_0x36c2('0x1b'),_0x36c2('0x4b')],'where':{'id':_0x591ffe[_0x36c2('0x31')]['ids']}});})[_0x36c2('0x18')](function(_0x4b5887){socket[_0x36c2('0x4c')](_0x36c2('0x4d'),{'id':Number(_0x591ffe[_0x36c2('0x27')]['id']),'tags':_0x4b5887||[]});return{'id':Number(_0x591ffe['params']['id']),'tags':_0x4b5887||[]};});}})[_0x36c2('0x18')](respondWithResult(_0x59e16c,null))[_0x36c2('0x25')](handleError(_0x59e16c,null));};exports[_0x36c2('0x4e')]=function(_0x2c47eb,_0x55de11){return db['SmsInteraction'][_0x36c2('0x32')]({'where':{'id':_0x2c47eb[_0x36c2('0x27')]['id']}})[_0x36c2('0x18')](handleEntityNotFound(_0x55de11,null))[_0x36c2('0x18')](function(_0x2f25c){if(_0x2f25c){return _0x2f25c[_0x36c2('0x4e')](_0x2c47eb[_0x36c2('0x2a')][_0x36c2('0x36')]);}})[_0x36c2('0x18')](respondWithStatusCode(_0x55de11,null))[_0x36c2('0x25')](handleError(_0x55de11,null));};exports['download']=function(_0x4ab6c9,_0x229f98){var _0x108084=moment()[_0x36c2('0x4f')]()['toString']();var _0x1fe547=path['join'](config[_0x36c2('0x50')],'server',_0x36c2('0x51'),_0x36c2('0x52'));var _0x5d4e50=path[_0x36c2('0x53')](_0x1fe547,_0x108084);var _0x4dfc33=util['format'](_0x36c2('0x54'),_0x4ab6c9[_0x36c2('0x27')]['id'],_0x108084);var _0x5617f1=path['join'](_0x1fe547,_0x4dfc33);var _0x10d281=[];_0x10d281['push']({'model':db[_0x36c2('0x55')],'as':_0x36c2('0x55'),'attributes':['id',_0x36c2('0x56')],'raw':!![]});_0x10d281['push']({'model':db[_0x36c2('0x57')],'as':_0x36c2('0x58'),'attributes':['id','firstName',_0x36c2('0x59')],'raw':!![]});var _0x5a2317=[{'model':db[_0x36c2('0x35')],'as':_0x36c2('0x5a'),'attributes':['id',_0x36c2('0x31'),_0x36c2('0x5b'),_0x36c2('0x5c'),'secret',_0x36c2('0x5d')],'include':_0x10d281}];_0x5a2317[_0x36c2('0x5e')]({'model':db[_0x36c2('0x5f')],'as':_0x36c2('0x60'),'attributes':['id',_0x36c2('0x1b')]});_0x5a2317[_0x36c2('0x5e')]({'model':db['User'],'as':'Owner','attributes':['id',_0x36c2('0x56')]});return db[_0x36c2('0x1e')][_0x36c2('0x32')]({'where':{'id':_0x4ab6c9['params']['id']},'include':_0x5a2317})[_0x36c2('0x18')](handleEntityNotFound(_0x229f98,null))[_0x36c2('0x18')](function(_0x3c1201){if(_0x3c1201){var _0x2f33f7=_0x3c1201['get']({'plain':!![]});fs[_0x36c2('0x61')](_0x5d4e50);var _0x1e5893={'channel':_0x36c2('0x62'),'account':_0x2f33f7['Account'][_0x36c2('0x1b')],'agent':_0x2f33f7[_0x36c2('0x63')]?_0x2f33f7['Owner']['fullname']:_0x36c2('0x64'),'createdAt':moment(_0x2f33f7[_0x36c2('0x5b')])[_0x36c2('0x42')](_0x36c2('0x43'))[_0x36c2('0x65')](),'closedAt':_0x2f33f7[_0x36c2('0x66')]?moment(_0x2f33f7[_0x36c2('0x67')])[_0x36c2('0x42')](_0x36c2('0x43'))[_0x36c2('0x65')]():'','disposition':_0x2f33f7[_0x36c2('0x68')],'messages':_(_0x2f33f7[_0x36c2('0x5a')])[_0x36c2('0x3f')]({'secret':![]})['map'](function(_0x157446){return{'date':moment(_0x157446['createdAt'])['format'](_0x36c2('0x43'))[_0x36c2('0x65')](),'sender':_0x157446[_0x36c2('0x5c')]===_0x36c2('0x69')?_0x157446['User']?_0x157446[_0x36c2('0x55')][_0x36c2('0x56')]:'System':_0x157446['Contact'][_0x36c2('0x6a')]+(_0x157446['Contact']['lastName']?'\x20'+_0x157446[_0x36c2('0x58')][_0x36c2('0x59')]:''),'body':_0x157446[_0x36c2('0x31')],'direction':_0x157446[_0x36c2('0x5c')]===_0x36c2('0x69')?'A':'C','secret':_0x157446[_0x36c2('0x6b')],'read':_0x157446[_0x36c2('0x5d')]};})[_0x36c2('0x6c')]()};return ejs[_0x36c2('0x6d')](path[_0x36c2('0x53')](config['root'],_0x36c2('0x6e'),_0x36c2('0x6f'),_0x36c2('0x70')),{'interaction':_0x1e5893})[_0x36c2('0x18')](function(_0x2d3783){var _0x47817b=path[_0x36c2('0x53')](_0x5d4e50,_0x36c2('0x71')+_0x2f33f7['id']+'-'+_0x108084+_0x36c2('0x72'));var _0xa5cf70={'path':_0x47817b,'channel':_0x36c2('0x62'),'interactionId':_0x2f33f7['id']};return pdf[_0x36c2('0x73')](_0x2d3783,_0xa5cf70);})['then'](function(){return new BPromise(function(_0x571b2d,_0x862a0d){zipdir(_0x5d4e50,{'saveTo':_0x5617f1},function(_0x51d24f,_0x2a8b65){if(_0x51d24f)return _0x862a0d(_0x51d24f);return _0x571b2d(_0x2a8b65);});})[_0x36c2('0x18')](function(){return new BPromise(function(_0x22019f,_0x2bc0e7){rimraf(_0x5d4e50,function(_0x2108e6){if(_0x2108e6)_0x2bc0e7(_0x2108e6);return _0x22019f();});});})[_0x36c2('0x18')](function(){return _0x229f98['download'](_0x5617f1,_0x4dfc33,function(_0x5229a5){if(_0x5229a5){console[_0x36c2('0x74')](_0x36c2('0x75'),_0x5229a5);}else{fs[_0x36c2('0x76')](_0x5617f1);}});});});}else{return _0x229f98[_0x36c2('0xf')](0xc8);}})['catch'](handleError(_0x229f98,null));};
\ No newline at end of file
+var _0x6e47=['err','unlinkSync','rimraf','moment','bluebird','util','ejs','lodash','ioredis','../../components/export/pdf','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./smsInteraction.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','then','destroy','error','stack','index','map','SmsInteraction','rawAttributes','fieldName','key','getOptions','findAll','sms','query','catch','params','keys','filters','intersection','model','attributes','fields','length','includeAll','include','options','create','body','find','describe','addMessage','SmsMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','SmsInteractionId','filter','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','spread','name','color','smsInteractionTags:save','removeTags','download','toString','root','server','files','tmp','join','transcript-%d-%s.zip','push','User','fullname','Contact','firstName','lastName','createdAt','direction','secret','read','SmsAccount','Account','Owner','get','Sms','N.A.','disposition','Messages','out','value','renderFile','downloadInteraction.ejs','.pdf','createPdfFromHTML','log'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0x6e47,0xe4));var _0x76e4=function(_0x37c35a,_0x16b017){_0x37c35a=_0x37c35a-0x0;var _0x4505ba=_0x6e47[_0x37c35a];return _0x4505ba;};'use strict';var rimraf=require(_0x76e4('0x0'));var zipdir=require('zip-dir');var moment=require(_0x76e4('0x1'));var BPromise=require(_0x76e4('0x2'));var util=require(_0x76e4('0x3'));var path=require('path');var ejs=require(_0x76e4('0x4'));var fs=require('fs');var _=require(_0x76e4('0x5'));var Redis=require(_0x76e4('0x6'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0x76e4('0x7'));var logger=require(_0x76e4('0x8'))(_0x76e4('0x9'));var config=require(_0x76e4('0xa'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x76e4('0xb')],{'host':_0x76e4('0xc'),'port':0x18eb});var socket=require(_0x76e4('0xd'))(new Redis(config[_0x76e4('0xb')]));require(_0x76e4('0xe'))['register'](socket);function respondWithStatusCode(_0x197ff8,_0x58542b){_0x58542b=_0x58542b||0xcc;return function(_0x56a7e6){if(_0x56a7e6){return _0x197ff8[_0x76e4('0xf')](_0x58542b);}return _0x197ff8[_0x76e4('0x10')](_0x58542b)[_0x76e4('0x11')]();};}function respondWithResult(_0x2db9a8,_0x1a5f85){_0x1a5f85=_0x1a5f85||0xc8;return function(_0x1c06e7){if(_0x1c06e7){return _0x2db9a8['status'](_0x1a5f85)[_0x76e4('0x12')](_0x1c06e7);}};}function respondWithFilteredResult(_0xaa28ef,_0x3930b2){return function(_0x22df15){if(_0x22df15){var _0x2c8a65=typeof _0x3930b2['offset']===_0x76e4('0x13')&&typeof _0x3930b2[_0x76e4('0x14')]===_0x76e4('0x13');var _0x3f15a3=_0x22df15[_0x76e4('0x15')];var _0x24fa60=_0x2c8a65?0x0:_0x3930b2[_0x76e4('0x16')];var _0x3a64f9=_0x2c8a65?_0x22df15[_0x76e4('0x15')]:_0x3930b2['offset']+_0x3930b2['limit'];var _0x1c433d;if(_0x3a64f9>=_0x3f15a3){_0x3a64f9=_0x3f15a3;_0x1c433d=0xc8;}else{_0x1c433d=0xce;}_0xaa28ef[_0x76e4('0x10')](_0x1c433d);return _0xaa28ef[_0x76e4('0x17')](_0x76e4('0x18'),_0x24fa60+'-'+_0x3a64f9+'/'+_0x3f15a3)[_0x76e4('0x12')](_0x22df15);}return null;};}function saveUpdates(_0x5b7fc7){return function(_0x14a979){if(_0x14a979){return _0x14a979['update'](_0x5b7fc7)[_0x76e4('0x19')](function(_0x230efa){return _0x230efa;});}return null;};}function removeEntity(_0x112fa4){return function(_0x46296d){if(_0x46296d){return _0x46296d[_0x76e4('0x1a')]()[_0x76e4('0x19')](function(){_0x112fa4[_0x76e4('0x10')](0xcc)[_0x76e4('0x11')]();});}};}function handleEntityNotFound(_0x351929){return function(_0x183ea3){if(!_0x183ea3){_0x351929[_0x76e4('0xf')](0x194);}return _0x183ea3;};}function handleError(_0x2efb58,_0x3b51df){_0x3b51df=_0x3b51df||0x1f4;return function(_0x5baa36){logger[_0x76e4('0x1b')](_0x5baa36[_0x76e4('0x1c')]);if(_0x5baa36['name']){delete _0x5baa36['name'];}_0x2efb58[_0x76e4('0x10')](_0x3b51df)['send'](_0x5baa36);};}exports[_0x76e4('0x1d')]=function(_0x234288,_0xa8a41c){var _0x12f650={};var _0x2c393b=_[_0x76e4('0x1e')](db[_0x76e4('0x1f')][_0x76e4('0x20')],function(_0x2ada34){return{'name':_0x2ada34[_0x76e4('0x21')],'type':_0x2ada34['type'][_0x76e4('0x22')]};});_0x12f650=qs[_0x76e4('0x23')](_0x2c393b,_0x234288);return interaction[_0x76e4('0x24')](_0x76e4('0x25'),_0x234288[_0x76e4('0x26')],_0x234288['user'],_0x12f650,_0x2c393b)[_0x76e4('0x19')](respondWithFilteredResult(_0xa8a41c,_0x12f650))[_0x76e4('0x27')](handleError(_0xa8a41c,null));};exports['show']=function(_0x5be7be,_0x1935e4){var _0x52f8e7={'raw':![],'where':{'id':_0x5be7be[_0x76e4('0x28')]['id']}},_0x275b6a={};_0x275b6a['model']=_[_0x76e4('0x29')](db[_0x76e4('0x1f')][_0x76e4('0x20')]);_0x275b6a[_0x76e4('0x26')]=_[_0x76e4('0x29')](_0x5be7be['query']);_0x275b6a[_0x76e4('0x2a')]=_[_0x76e4('0x2b')](_0x275b6a[_0x76e4('0x2c')],_0x275b6a[_0x76e4('0x26')]);_0x52f8e7[_0x76e4('0x2d')]=_[_0x76e4('0x2b')](_0x275b6a[_0x76e4('0x2c')],qs[_0x76e4('0x2e')](_0x5be7be['query'][_0x76e4('0x2e')]));_0x52f8e7[_0x76e4('0x2d')]=_0x52f8e7['attributes'][_0x76e4('0x2f')]?_0x52f8e7[_0x76e4('0x2d')]:_0x275b6a[_0x76e4('0x2c')];if(_0x5be7be[_0x76e4('0x26')][_0x76e4('0x30')]){_0x52f8e7[_0x76e4('0x31')]=[{'all':!![]}];}_0x52f8e7=_['merge']({},_0x52f8e7,_0x5be7be[_0x76e4('0x32')]);return db[_0x76e4('0x1f')]['find'](_0x52f8e7)['then'](handleEntityNotFound(_0x1935e4,null))['then'](respondWithResult(_0x1935e4,null))[_0x76e4('0x27')](handleError(_0x1935e4,null));};exports[_0x76e4('0x33')]=function(_0x59860f,_0x147955){return db[_0x76e4('0x1f')][_0x76e4('0x33')](_0x59860f[_0x76e4('0x34')],{})[_0x76e4('0x19')](respondWithResult(_0x147955,0xc9))[_0x76e4('0x27')](handleError(_0x147955,null));};exports['update']=function(_0x3bb72a,_0x307a68){if(_0x3bb72a[_0x76e4('0x34')]['id']){delete _0x3bb72a[_0x76e4('0x34')]['id'];}return db[_0x76e4('0x1f')][_0x76e4('0x35')]({'where':{'id':_0x3bb72a[_0x76e4('0x28')]['id']}})['then'](handleEntityNotFound(_0x307a68,null))['then'](saveUpdates(_0x3bb72a[_0x76e4('0x34')],null))[_0x76e4('0x19')](respondWithResult(_0x307a68,null))['catch'](handleError(_0x307a68,null));};exports[_0x76e4('0x1a')]=function(_0x513b0c,_0x8bfa4c){return db[_0x76e4('0x1f')][_0x76e4('0x35')]({'where':{'id':_0x513b0c[_0x76e4('0x28')]['id']}})[_0x76e4('0x19')](handleEntityNotFound(_0x8bfa4c,null))[_0x76e4('0x19')](removeEntity(_0x8bfa4c,null))[_0x76e4('0x27')](handleError(_0x8bfa4c,null));};exports[_0x76e4('0x36')]=function(_0x5cade3,_0x7a388f){return db[_0x76e4('0x1f')][_0x76e4('0x36')]()[_0x76e4('0x19')](respondWithResult(_0x7a388f,null))[_0x76e4('0x27')](handleError(_0x7a388f,null));};exports[_0x76e4('0x37')]=function(_0x2738c7,_0x3ca1d9){return db[_0x76e4('0x38')][_0x76e4('0x35')]({'where':{'id':_0x2738c7['params']['id']}})[_0x76e4('0x19')](handleEntityNotFound(_0x3ca1d9,null))[_0x76e4('0x19')](function(_0x1fe569){if(_0x1fe569){return _0x1fe569['addMessage'](_0x2738c7[_0x76e4('0x34')][_0x76e4('0x39')],_[_0x76e4('0x3a')](_0x2738c7['body'],[_0x76e4('0x39'),'id'])||{});}})[_0x76e4('0x19')](respondWithResult(_0x3ca1d9,null))['catch'](handleError(_0x3ca1d9,null));};exports[_0x76e4('0x3b')]=function(_0x3075ba,_0x17de7b){var _0xc4d54c={'raw':![],'where':{}};var _0x5311d2={};var _0x1871c5={'count':0x0,'rows':[]};return db[_0x76e4('0x1f')]['findOne']({'where':{'id':_0x3075ba[_0x76e4('0x28')]['id']}})[_0x76e4('0x19')](handleEntityNotFound(_0x17de7b,null))[_0x76e4('0x19')](function(_0x45bd76){if(_0x45bd76){_0x5311d2[_0x76e4('0x2c')]=_[_0x76e4('0x29')](db[_0x76e4('0x38')][_0x76e4('0x20')]);_0x5311d2['query']=_[_0x76e4('0x29')](_0x3075ba[_0x76e4('0x26')]);_0x5311d2[_0x76e4('0x2a')]=_[_0x76e4('0x2b')](_0x5311d2['model'],_0x5311d2[_0x76e4('0x26')]);_0xc4d54c['attributes']=_[_0x76e4('0x2b')](_0x5311d2[_0x76e4('0x2c')],qs[_0x76e4('0x2e')](_0x3075ba[_0x76e4('0x26')][_0x76e4('0x2e')]));_0xc4d54c[_0x76e4('0x2d')]=_0xc4d54c[_0x76e4('0x2d')][_0x76e4('0x2f')]?_0xc4d54c[_0x76e4('0x2d')]:_0x5311d2[_0x76e4('0x2c')];if(!_0x3075ba[_0x76e4('0x26')][_0x76e4('0x3c')](_0x76e4('0x3d'))){_0xc4d54c[_0x76e4('0x14')]=qs[_0x76e4('0x14')](_0x3075ba[_0x76e4('0x26')]['limit']);_0xc4d54c[_0x76e4('0x16')]=qs['offset'](_0x3075ba[_0x76e4('0x26')][_0x76e4('0x16')]);}_0xc4d54c[_0x76e4('0x3e')]=qs[_0x76e4('0x3f')](_0x3075ba['query'][_0x76e4('0x3f')]);_0xc4d54c[_0x76e4('0x40')]=qs['filters'](_[_0x76e4('0x41')](_0x3075ba['query'],_0x5311d2[_0x76e4('0x2a')]));_0xc4d54c[_0x76e4('0x40')][_0x76e4('0x42')]=_0x45bd76['id'];if(_0x3075ba[_0x76e4('0x26')][_0x76e4('0x43')]){_0xc4d54c[_0x76e4('0x40')]=_['merge'](_0xc4d54c[_0x76e4('0x40')],{'$or':_[_0x76e4('0x1e')](_0xc4d54c[_0x76e4('0x2d')],function(_0x2a3205){var _0x56ef25={};_0x56ef25[_0x2a3205]={'$like':'%'+_0x3075ba[_0x76e4('0x26')][_0x76e4('0x43')]+'%'};return _0x56ef25;})});}if(_0x3075ba[_0x76e4('0x26')]['$gte']){var _0x42a609=_0x3075ba['query']['$gte'][_0x76e4('0x44')](',');var _0x102230={};_0x102230[_0x42a609[0x0]]={'$gte':moment(_0x42a609[0x1])[_0x76e4('0x45')](_0x76e4('0x46'))};_0xc4d54c[_0x76e4('0x40')]=_['merge'](_0xc4d54c['where'],_0x102230);}_0xc4d54c=_['merge']({},_0xc4d54c,_0x3075ba[_0x76e4('0x32')]);return db[_0x76e4('0x38')][_0x76e4('0x15')]({'where':_0xc4d54c[_0x76e4('0x40')]})['then'](function(_0x2f4845){_0x1871c5[_0x76e4('0x15')]=_0x2f4845;if(_0x3075ba['query'][_0x76e4('0x30')]){_0xc4d54c[_0x76e4('0x31')]=[{'all':!![]}];}return db[_0x76e4('0x38')][_0x76e4('0x24')](_0xc4d54c);})[_0x76e4('0x19')](function(_0x3955c0){_0x1871c5[_0x76e4('0x47')]=_0x3955c0;return _0x1871c5;});}})[_0x76e4('0x19')](respondWithFilteredResult(_0x17de7b,_0xc4d54c))['catch'](handleError(_0x17de7b,null));};exports[_0x76e4('0x48')]=function(_0x5f3e06,_0x3cc308){return db['SmsInteraction']['find']({'where':{'id':_0x5f3e06['params']['id']}})[_0x76e4('0x19')](handleEntityNotFound(_0x3cc308,null))['then'](function(_0x29a4e4){if(_0x29a4e4){return _0x29a4e4['setTags'](_0x5f3e06[_0x76e4('0x34')][_0x76e4('0x39')],_['omit'](_0x5f3e06[_0x76e4('0x34')],[_0x76e4('0x39'),'id'])||{})[_0x76e4('0x49')](function(){return db['Tag'][_0x76e4('0x24')]({'attributes':['id',_0x76e4('0x4a'),_0x76e4('0x4b')],'where':{'id':_0x5f3e06[_0x76e4('0x34')][_0x76e4('0x39')]}});})[_0x76e4('0x19')](function(_0x42ed7d){socket['emit'](_0x76e4('0x4c'),{'id':Number(_0x5f3e06[_0x76e4('0x28')]['id']),'tags':_0x42ed7d||[]});return{'id':Number(_0x5f3e06[_0x76e4('0x28')]['id']),'tags':_0x42ed7d||[]};});}})[_0x76e4('0x19')](respondWithResult(_0x3cc308,null))[_0x76e4('0x27')](handleError(_0x3cc308,null));};exports[_0x76e4('0x4d')]=function(_0x316af5,_0x2ba3cc){return db[_0x76e4('0x1f')][_0x76e4('0x35')]({'where':{'id':_0x316af5['params']['id']}})[_0x76e4('0x19')](handleEntityNotFound(_0x2ba3cc,null))[_0x76e4('0x19')](function(_0x2d4ae3){if(_0x2d4ae3){return _0x2d4ae3[_0x76e4('0x4d')](_0x316af5['query'][_0x76e4('0x39')]);}})[_0x76e4('0x19')](respondWithStatusCode(_0x2ba3cc,null))[_0x76e4('0x27')](handleError(_0x2ba3cc,null));};exports[_0x76e4('0x4e')]=function(_0x56fc69,_0x3a926d){var _0x54fecf=moment()['unix']()[_0x76e4('0x4f')]();var _0x52676c=path['join'](config[_0x76e4('0x50')],_0x76e4('0x51'),_0x76e4('0x52'),_0x76e4('0x53'));var _0x43cd45=path[_0x76e4('0x54')](_0x52676c,_0x54fecf);var _0x250f3d=util[_0x76e4('0x45')](_0x76e4('0x55'),_0x56fc69[_0x76e4('0x28')]['id'],_0x54fecf);var _0x48e078=path[_0x76e4('0x54')](_0x52676c,_0x250f3d);var _0x8b2ca0=[];_0x8b2ca0[_0x76e4('0x56')]({'model':db[_0x76e4('0x57')],'as':_0x76e4('0x57'),'attributes':['id',_0x76e4('0x58')],'raw':!![]});_0x8b2ca0[_0x76e4('0x56')]({'model':db['CmContact'],'as':_0x76e4('0x59'),'attributes':['id',_0x76e4('0x5a'),_0x76e4('0x5b')],'raw':!![]});var _0x57db82=[{'model':db[_0x76e4('0x38')],'as':'Messages','attributes':['id','body',_0x76e4('0x5c'),_0x76e4('0x5d'),_0x76e4('0x5e'),_0x76e4('0x5f')],'include':_0x8b2ca0}];_0x57db82[_0x76e4('0x56')]({'model':db[_0x76e4('0x60')],'as':_0x76e4('0x61'),'attributes':['id','name']});_0x57db82[_0x76e4('0x56')]({'model':db[_0x76e4('0x57')],'as':_0x76e4('0x62'),'attributes':['id',_0x76e4('0x58')]});return db['SmsInteraction'][_0x76e4('0x35')]({'where':{'id':_0x56fc69[_0x76e4('0x28')]['id']},'include':_0x57db82})[_0x76e4('0x19')](handleEntityNotFound(_0x3a926d,null))[_0x76e4('0x19')](function(_0x5896c6){if(_0x5896c6){var _0x39d705=_0x5896c6[_0x76e4('0x63')]({'plain':!![]});fs['mkdirSync'](_0x43cd45);var _0x3d6dc5={'channel':_0x76e4('0x64'),'account':_0x39d705[_0x76e4('0x61')][_0x76e4('0x4a')],'agent':_0x39d705[_0x76e4('0x62')]?_0x39d705[_0x76e4('0x62')][_0x76e4('0x58')]:_0x76e4('0x65'),'createdAt':moment(_0x39d705[_0x76e4('0x5c')])[_0x76e4('0x45')](_0x76e4('0x46'))['toString'](),'closedAt':_0x39d705['closed']?moment(_0x39d705['closedAt'])[_0x76e4('0x45')](_0x76e4('0x46'))['toString']():'','disposition':_0x39d705[_0x76e4('0x66')],'messages':_(_0x39d705[_0x76e4('0x67')])[_0x76e4('0x43')]({'secret':![]})[_0x76e4('0x1e')](function(_0x327208){return{'date':moment(_0x327208['createdAt'])[_0x76e4('0x45')](_0x76e4('0x46'))[_0x76e4('0x4f')](),'sender':_0x327208[_0x76e4('0x5d')]===_0x76e4('0x68')?_0x327208[_0x76e4('0x57')]?_0x327208[_0x76e4('0x57')][_0x76e4('0x58')]:'System':_0x327208[_0x76e4('0x59')]['firstName']+(_0x327208[_0x76e4('0x59')][_0x76e4('0x5b')]?'\x20'+_0x327208['Contact'][_0x76e4('0x5b')]:''),'body':_0x327208[_0x76e4('0x34')],'direction':_0x327208[_0x76e4('0x5d')]===_0x76e4('0x68')?'A':'C','secret':_0x327208[_0x76e4('0x5e')],'read':_0x327208[_0x76e4('0x5f')]};})[_0x76e4('0x69')]()};return ejs[_0x76e4('0x6a')](path[_0x76e4('0x54')](config[_0x76e4('0x50')],_0x76e4('0x51'),'views',_0x76e4('0x6b')),{'interaction':_0x3d6dc5})[_0x76e4('0x19')](function(_0x114e26){var _0x289293=path['join'](_0x43cd45,'transcript-'+_0x39d705['id']+'-'+_0x54fecf+_0x76e4('0x6c'));var _0x877f98={'path':_0x289293,'channel':'Sms','interactionId':_0x39d705['id']};return pdf[_0x76e4('0x6d')](_0x114e26,_0x877f98);})['then'](function(){return new BPromise(function(_0x370443,_0x161c09){zipdir(_0x43cd45,{'saveTo':_0x48e078},function(_0x4c1007,_0x2a214f){if(_0x4c1007)return _0x161c09(_0x4c1007);return _0x370443(_0x2a214f);});})[_0x76e4('0x19')](function(){return new BPromise(function(_0x49f618,_0x21cd42){rimraf(_0x43cd45,function(_0xb58fe2){if(_0xb58fe2)_0x21cd42(_0xb58fe2);return _0x49f618();});});})['then'](function(){return _0x3a926d[_0x76e4('0x4e')](_0x48e078,_0x250f3d,function(_0x2b2eeb){if(_0x2b2eeb){console[_0x76e4('0x6e')](_0x76e4('0x6f'),_0x2b2eeb);}else{fs[_0x76e4('0x70')](_0x48e078);}});});});}else{return _0x3a926d[_0x76e4('0xf')](0xc8);}})[_0x76e4('0x27')](handleError(_0x3a926d,null));};
\ No newline at end of file
index 0ba6cc7..a602493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['SmsInteraction','../../mysqldb','SmsMessage','save','update','remove','getUsers','then','Users','findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x3cd451,_0x26e81a){var _0x571ce6=function(_0x27af9e){while(--_0x27af9e){_0x3cd451['push'](_0x3cd451['shift']());}};_0x571ce6(++_0x26e81a);}(_0xef0f,0x168));var _0xfef0=function(_0x524d1b,_0x3de741){_0x524d1b=_0x524d1b-0x0;var _0x405636=_0xef0f[_0x524d1b];return _0x405636;};'use strict';var EventEmitter=require(_0xfef0('0x0'));var SmsInteraction=require('../../mysqldb')['db'][_0xfef0('0x1')];var SmsMessage=require(_0xfef0('0x2'))['db'][_0xfef0('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfef0('0x4'),'afterUpdate':_0xfef0('0x5'),'afterDestroy':_0xfef0('0x6')};function emitEvent(_0x4e1af6){return function(_0x2a6fcf,_0x9b8b9e,_0x2697df){_0x2a6fcf[_0xfef0('0x7')]({'attributes':['id'],'raw':!![]})[_0xfef0('0x8')](function(_0x11dfd7){_0x2a6fcf['setDataValue'](_0xfef0('0x9'),_0x11dfd7['map'](function(_0x82e37a){return{'id':_0x82e37a['id']};}));return SmsMessage[_0xfef0('0xa')]({'where':{'SmsInteractionId':_0x2a6fcf['id'],'direction':'in','read':![]},'raw':!![]});})[_0xfef0('0x8')](function(_0x2d42dc){_0x2a6fcf[_0xfef0('0xb')](_0xfef0('0xc'),_0x2d42dc[_0xfef0('0xd')]);SmsInteractionEvents[_0xfef0('0xe')](_0x4e1af6+':'+_0x2a6fcf['id'],_0x2a6fcf);SmsInteractionEvents[_0xfef0('0xe')](_0x4e1af6,_0x2a6fcf);_0x2697df(null);})[_0xfef0('0xf')](_0x2697df(null));};}for(var e in events){if(events[_0xfef0('0x10')](e)){var event=events[e];SmsInteraction[_0xfef0('0x11')](e,emitEvent(event));}}module[_0xfef0('0x12')]=SmsInteractionEvents;
\ No newline at end of file
+var _0xe2cf=['update','remove','then','map','findAll','setDataValue','unreadMessages','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x49e584,_0x2886f8){_0x49e584=_0x49e584-0x0;var _0x58b1be=_0xe2cf[_0x49e584];return _0x58b1be;};'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
index bcb5a90..b060d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d12=['path','rimraf','./smsInteraction.attributes','exports','sms_interactions','changed','closed','closedAt','lodash','util','moment','bluebird','request-promise'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x3d12,0x8a));var _0x23d1=function(_0x383383,_0x2d3d0e){_0x383383=_0x383383-0x0;var _0x362054=_0x3d12[_0x383383];return _0x362054;};'use strict';var _=require(_0x23d1('0x0'));var util=require(_0x23d1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x23d1('0x2'));var BPromise=require(_0x23d1('0x3'));var rp=require(_0x23d1('0x4'));var fs=require('fs');var path=require(_0x23d1('0x5'));var rimraf=require(_0x23d1('0x6'));var config=require('../../config/environment');var attributes=require(_0x23d1('0x7'));module[_0x23d1('0x8')]=function(_0x30b8d5,_0x91b5ba){return _0x30b8d5['define']('SmsInteraction',attributes,{'tableName':_0x23d1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2ddd03,_0x53bb6c,_0x2c5f44){if(_0x2ddd03[_0x23d1('0xa')](_0x23d1('0xb'))){_0x2ddd03[_0x23d1('0xc')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x2c5f44(null,_0x2ddd03);}}});};
\ No newline at end of file
+var _0x9a6c=['../../config/logger','api','moment','request-promise','rimraf','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x140e59,_0x590ed3){var _0x127259=function(_0x33199f){while(--_0x33199f){_0x140e59['push'](_0x140e59['shift']());}};_0x127259(++_0x590ed3);}(_0x9a6c,0x1eb));var _0xc9a6=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x9a6c[_0x31cb5f];return _0x586042;};'use strict';var _=require(_0xc9a6('0x0'));var util=require(_0xc9a6('0x1'));var logger=require(_0xc9a6('0x2'))(_0xc9a6('0x3'));var moment=require(_0xc9a6('0x4'));var BPromise=require('bluebird');var rp=require(_0xc9a6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc9a6('0x6'));var config=require('../../config/environment');var attributes=require(_0xc9a6('0x7'));module[_0xc9a6('0x8')]=function(_0x364f45,_0x559cc3){return _0x364f45[_0xc9a6('0x9')](_0xc9a6('0xa'),attributes,{'tableName':_0xc9a6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x30f5a6,_0x5f42fe,_0x449bc8){if(_0x30f5a6[_0xc9a6('0xc')](_0xc9a6('0xd'))){_0x30f5a6[_0xc9a6('0xe')]=moment()[_0xc9a6('0xf')](_0xc9a6('0x10'));}_0x449bc8(null,_0x30f5a6);}}});};
\ No newline at end of file
index 9afdbdd..fd4c958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1456=['attributes','limit','then','AddTagsToSmsInteraction','find','addTags','ids','omit','AddTags','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','request','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where'];(function(_0x58cf07,_0x2e3858){var _0x42afe0=function(_0x3c71ff){while(--_0x3c71ff){_0x58cf07['push'](_0x58cf07['shift']());}};_0x42afe0(++_0x2e3858);}(_0x1456,0xf9));var _0x6145=function(_0x311fd4,_0x2fc056){_0x311fd4=_0x311fd4-0x0;var _0x2a7835=_0x1456[_0x311fd4];return _0x2a7835;};'use strict';var _=require(_0x6145('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6145('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6145('0x2'))['db'];var utils=require(_0x6145('0x3'));var logger=require(_0x6145('0x4'))('rpc');var config=require(_0x6145('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6145('0x6')]({'port':0x232a});config['redis']=_[_0x6145('0x7')](config[_0x6145('0x8')],{'host':_0x6145('0x9'),'port':0x18eb});var socket=require(_0x6145('0xa'))(new Redis(config[_0x6145('0x8')]));require(_0x6145('0xb'))[_0x6145('0xc')](socket);function respondWithRpcPromise(_0x2cae89,_0x2d5779,_0xf6ac76){return new BPromise(function(_0x27015e,_0x3672ac){return client[_0x6145('0xd')](_0x2cae89,_0xf6ac76)['then'](function(_0x1bf7af){logger[_0x6145('0xe')](_0x6145('0xf'),_0x2d5779,_0x6145('0x10'));logger[_0x6145('0x11')](_0x6145('0x12'),_0x2d5779,_0x6145('0x10'),JSON[_0x6145('0x13')](_0x1bf7af));if(_0x1bf7af[_0x6145('0x14')]){if(_0x1bf7af[_0x6145('0x14')][_0x6145('0x15')]===0x1f4){logger[_0x6145('0x14')](_0x6145('0xf'),_0x2d5779,_0x1bf7af['error'][_0x6145('0x16')]);return _0x3672ac(_0x1bf7af[_0x6145('0x14')][_0x6145('0x16')]);}logger[_0x6145('0x14')](_0x6145('0xf'),_0x2d5779,_0x1bf7af[_0x6145('0x14')]['message']);return _0x27015e(_0x1bf7af[_0x6145('0x14')]['message']);}else{logger['info'](_0x6145('0xf'),_0x2d5779,'request\x20sent');_0x27015e(_0x1bf7af['result'][_0x6145('0x16')]);}})[_0x6145('0x17')](function(_0x4b3075){logger[_0x6145('0x14')](_0x6145('0xf'),_0x2d5779,_0x4b3075);_0x3672ac(_0x4b3075);});});}exports[_0x6145('0x18')]=function(_0x5d4665){var _0x485aab=this;return new Promise(function(_0x272438,_0x326b3a){return db[_0x6145('0x19')][_0x6145('0x1a')](_0x5d4665[_0x6145('0x1b')],{'raw':_0x5d4665['options']?_0x5d4665[_0x6145('0x1c')][_0x6145('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d4665[_0x6145('0x1c')]?_0x5d4665[_0x6145('0x1c')][_0x6145('0x1e')]||null:null,'attributes':_0x5d4665[_0x6145('0x1c')]?_0x5d4665['options'][_0x6145('0x1f')]||null:null,'limit':_0x5d4665[_0x6145('0x1c')]?_0x5d4665[_0x6145('0x1c')][_0x6145('0x20')]||null:null})[_0x6145('0x21')](function(_0x503057){logger[_0x6145('0xe')](_0x6145('0x18'),_0x5d4665);logger[_0x6145('0x11')](_0x6145('0x18'),_0x5d4665,JSON[_0x6145('0x13')](_0x503057));_0x272438(_0x503057);})[_0x6145('0x17')](function(_0x4bd154){logger[_0x6145('0x14')](_0x6145('0x18'),_0x4bd154[_0x6145('0x16')],_0x5d4665);_0x326b3a(_0x485aab['error'](0x1f4,_0x4bd154[_0x6145('0x16')]));});});};exports[_0x6145('0x22')]=function(_0x6b2f83){return new Promise(function(_0x97b7ed,_0xec5beb){return db[_0x6145('0x19')][_0x6145('0x23')]({'where':_0x6b2f83[_0x6145('0x1c')]?_0x6b2f83['options'][_0x6145('0x1e')]||null:null})[_0x6145('0x21')](function(_0x27b9d8){if(_0x27b9d8){return _0x27b9d8[_0x6145('0x24')](_0x6b2f83['body'][_0x6145('0x25')],_[_0x6145('0x26')](_0x6b2f83['body'],['ids','id'])||{});}})['spread'](function(_0x2a8fb1){logger[_0x6145('0xe')](_0x6145('0x27'),_0x6b2f83);logger[_0x6145('0x11')](_0x6145('0x27'),_0x6b2f83,JSON[_0x6145('0x13')](_0x2a8fb1));_0x97b7ed(_0x2a8fb1);})['catch'](function(_0x9b435d){logger[_0x6145('0x14')](_0x6145('0x27'),_0x9b435d['message'],_0x6b2f83);_0xec5beb(_this[_0x6145('0x14')](0x1f4,_0x9b435d[_0x6145('0x16')]));});});};
\ No newline at end of file
+var _0x14b5=['client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','request','then','info','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','SmsInteraction,\x20%s,\x20%s','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','AddTagsToSmsInteraction','find','omit','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4baa75,_0x4e4bd4){var _0x21ae9c=function(_0x41dc9f){while(--_0x41dc9f){_0x4baa75['push'](_0x4baa75['shift']());}};_0x21ae9c(++_0x4e4bd4);}(_0x14b5,0xd6));var _0x514b=function(_0x127ad2,_0x38a157){_0x127ad2=_0x127ad2-0x0;var _0x4daaa9=_0x14b5[_0x127ad2];return _0x4daaa9;};'use strict';var _=require(_0x514b('0x0'));var util=require(_0x514b('0x1'));var moment=require('moment');var BPromise=require(_0x514b('0x2'));var rs=require(_0x514b('0x3'));var fs=require('fs');var Redis=require(_0x514b('0x4'));var db=require(_0x514b('0x5'))['db'];var utils=require(_0x514b('0x6'));var logger=require(_0x514b('0x7'))(_0x514b('0x8'));var config=require(_0x514b('0x9'));var jayson=require(_0x514b('0xa'));var client=jayson[_0x514b('0xb')][_0x514b('0xc')]({'port':0x232a});config[_0x514b('0xd')]=_[_0x514b('0xe')](config[_0x514b('0xd')],{'host':_0x514b('0xf'),'port':0x18eb});var socket=require(_0x514b('0x10'))(new Redis(config[_0x514b('0xd')]));require(_0x514b('0x11'))['register'](socket);function respondWithRpcPromise(_0x56911e,_0x1ecb56,_0x23ca2f){return new BPromise(function(_0x263617,_0x28cf41){return client[_0x514b('0x12')](_0x56911e,_0x23ca2f)[_0x514b('0x13')](function(_0x37668c){logger[_0x514b('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x1ecb56,'request\x20sent');logger[_0x514b('0x15')](_0x514b('0x16'),_0x1ecb56,_0x514b('0x17'),JSON[_0x514b('0x18')](_0x37668c));if(_0x37668c['error']){if(_0x37668c[_0x514b('0x19')][_0x514b('0x1a')]===0x1f4){logger[_0x514b('0x19')]('SmsInteraction,\x20%s,\x20%s',_0x1ecb56,_0x37668c[_0x514b('0x19')]['message']);return _0x28cf41(_0x37668c[_0x514b('0x19')]['message']);}logger[_0x514b('0x19')]('SmsInteraction,\x20%s,\x20%s',_0x1ecb56,_0x37668c['error'][_0x514b('0x1b')]);return _0x263617(_0x37668c[_0x514b('0x19')]['message']);}else{logger[_0x514b('0x14')](_0x514b('0x1c'),_0x1ecb56,_0x514b('0x17'));_0x263617(_0x37668c['result'][_0x514b('0x1b')]);}})[_0x514b('0x1d')](function(_0x1400e1){logger['error'](_0x514b('0x1c'),_0x1ecb56,_0x1400e1);_0x28cf41(_0x1400e1);});});}exports[_0x514b('0x1e')]=function(_0x4d4827){var _0xb59ff5=this;return new Promise(function(_0x6375e0,_0xf48f8b){return db[_0x514b('0x1f')][_0x514b('0x20')](_0x4d4827[_0x514b('0x21')],{'raw':_0x4d4827[_0x514b('0x22')]?_0x4d4827['options'][_0x514b('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d4827[_0x514b('0x22')]?_0x4d4827[_0x514b('0x22')][_0x514b('0x24')]||null:null,'attributes':_0x4d4827[_0x514b('0x22')]?_0x4d4827[_0x514b('0x22')][_0x514b('0x25')]||null:null,'limit':_0x4d4827[_0x514b('0x22')]?_0x4d4827['options'][_0x514b('0x26')]||null:null})[_0x514b('0x13')](function(_0x58df93){logger[_0x514b('0x14')](_0x514b('0x1e'),_0x4d4827);logger[_0x514b('0x15')](_0x514b('0x1e'),_0x4d4827,JSON[_0x514b('0x18')](_0x58df93));_0x6375e0(_0x58df93);})[_0x514b('0x1d')](function(_0x189bb6){logger[_0x514b('0x19')](_0x514b('0x1e'),_0x189bb6[_0x514b('0x1b')],_0x4d4827);_0xf48f8b(_0xb59ff5['error'](0x1f4,_0x189bb6[_0x514b('0x1b')]));});});};exports[_0x514b('0x27')]=function(_0x56444c){return new Promise(function(_0xa0813b,_0x1db56e){return db[_0x514b('0x1f')][_0x514b('0x28')]({'where':_0x56444c[_0x514b('0x22')]?_0x56444c[_0x514b('0x22')]['where']||null:null})['then'](function(_0x21e57e){if(_0x21e57e){return _0x21e57e['addTags'](_0x56444c[_0x514b('0x21')]['ids'],_[_0x514b('0x29')](_0x56444c['body'],[_0x514b('0x2a'),'id'])||{});}})[_0x514b('0x2b')](function(_0x1f670b){logger[_0x514b('0x14')](_0x514b('0x2c'),_0x56444c);logger['debug'](_0x514b('0x2c'),_0x56444c,JSON[_0x514b('0x18')](_0x1f670b));_0xa0813b(_0x1f670b);})[_0x514b('0x1d')](function(_0x316285){logger[_0x514b('0x19')](_0x514b('0x2c'),_0x316285[_0x514b('0x1b')],_0x56444c);_0x1db56e(_this[_0x514b('0x19')](0x1f4,_0x316285['message']));});});};
\ No newline at end of file
index 8c466c2..4e240fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e6=['update','emit','register','smsInteraction:','./smsInteraction.events','save','remove'];(function(_0x1e4500,_0x276da6){var _0xd6d61d=function(_0x1182de){while(--_0x1182de){_0x1e4500['push'](_0x1e4500['shift']());}};_0xd6d61d(++_0x276da6);}(_0x52e6,0x14d));var _0x652e=function(_0x57d055,_0x41df13){_0x57d055=_0x57d055-0x0;var _0x41e73c=_0x52e6[_0x57d055];return _0x41e73c;};'use strict';var SmsInteractionEvents=require(_0x652e('0x0'));var events=[_0x652e('0x1'),_0x652e('0x2'),_0x652e('0x3')];function createListener(_0x4884f9,_0x57d546){return function(_0x297b5d){_0x57d546[_0x652e('0x4')](_0x4884f9,_0x297b5d);};}function removeListener(_0x2b48b1,_0x3c7646){return function(){SmsInteractionEvents['removeListener'](_0x2b48b1,_0x3c7646);};}exports[_0x652e('0x5')]=function(_0x5b48f9){for(var _0x4ca9b4=0x0,_0x59ad50=events['length'];_0x4ca9b4<_0x59ad50;_0x4ca9b4++){var _0x18a09a=events[_0x4ca9b4];var _0x476e38=createListener(_0x652e('0x6')+_0x18a09a,_0x5b48f9);SmsInteractionEvents['on'](_0x18a09a,_0x476e38);}};
\ No newline at end of file
+var _0x4e72=['./smsInteraction.events','save','remove','update','emit','removeListener','register','length','smsInteraction:'];(function(_0x8b1659,_0x4ad5b4){var _0x56bddd=function(_0x46ff47){while(--_0x46ff47){_0x8b1659['push'](_0x8b1659['shift']());}};_0x56bddd(++_0x4ad5b4);}(_0x4e72,0x1cb));var _0x24e7=function(_0x5a6ff0,_0x4d8db1){_0x5a6ff0=_0x5a6ff0-0x0;var _0x56484f=_0x4e72[_0x5a6ff0];return _0x56484f;};'use strict';var SmsInteractionEvents=require(_0x24e7('0x0'));var events=[_0x24e7('0x1'),_0x24e7('0x2'),_0x24e7('0x3')];function createListener(_0xf9fe33,_0x477e07){return function(_0x51df52){_0x477e07[_0x24e7('0x4')](_0xf9fe33,_0x51df52);};}function removeListener(_0x33d75e,_0x34961f){return function(){SmsInteractionEvents[_0x24e7('0x5')](_0x33d75e,_0x34961f);};}exports[_0x24e7('0x6')]=function(_0x4b28b1){for(var _0x550008=0x0,_0x53f713=events[_0x24e7('0x7')];_0x550008<_0x53f713;_0x550008++){var _0x5ca39b=events[_0x550008];var _0x3525d2=createListener(_0x24e7('0x8')+_0x5ca39b,_0x4b28b1);SmsInteractionEvents['on'](_0x5ca39b,_0x3525d2);}};
\ No newline at end of file
index f8e5990..7f0ef2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab4=['reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','describe','/:id','show','post','smsmessage:create','create','/:id/status','status','put','/:id/accept','accept'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x4ab4,0x1f2));var _0x44ab=function(_0x556f75,_0x5544ce){_0x556f75=_0x556f75-0x0;var _0x2c8de8=_0x4ab4[_0x556f75];return _0x2c8de8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x44ab('0x0'));var timeout=require(_0x44ab('0x1'));var express=require(_0x44ab('0x2'));var router=express[_0x44ab('0x3')]();var fs_extra=require(_0x44ab('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x44ab('0x5'));var config=require(_0x44ab('0x6'));var controller=require(_0x44ab('0x7'));router[_0x44ab('0x8')]('/',auth[_0x44ab('0x9')](),controller[_0x44ab('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x44ab('0xb')]);router[_0x44ab('0x8')](_0x44ab('0xc'),auth['isAuthenticated'](),controller[_0x44ab('0xd')]);router[_0x44ab('0xe')]('/',auth['isAuthenticated'](),interaction['tracked']('sms',_0x44ab('0xf')),controller[_0x44ab('0x10')]);router[_0x44ab('0xe')](_0x44ab('0x11'),controller[_0x44ab('0x12')]);router[_0x44ab('0x13')]('/:id',auth[_0x44ab('0x9')](),controller['update']);router[_0x44ab('0x13')](_0x44ab('0x14'),auth[_0x44ab('0x9')](),controller[_0x44ab('0x15')]);router[_0x44ab('0x13')]('/:id/reject',auth['isAuthenticated'](),controller[_0x44ab('0x16')]);router[_0x44ab('0x17')](_0x44ab('0xc'),auth[_0x44ab('0x9')](),controller[_0x44ab('0x18')]);module[_0x44ab('0x19')]=router;
\ No newline at end of file
+var _0x9f37=['get','isAuthenticated','/describe','describe','/:id','show','post','tracked','sms','smsmessage:create','create','status','update','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','path','express','fs-extra','../../components/interaction/service','./smsMessage.controller'];(function(_0x331dfe,_0x13f0fc){var _0x104132=function(_0x41de65){while(--_0x41de65){_0x331dfe['push'](_0x331dfe['shift']());}};_0x104132(++_0x13f0fc);}(_0x9f37,0xb6));var _0x79f3=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x9f37[_0xbd08b4];return _0x314f1e;};'use strict';var multer=require(_0x79f3('0x0'));var util=require(_0x79f3('0x1'));var path=require(_0x79f3('0x2'));var timeout=require('connect-timeout');var express=require(_0x79f3('0x3'));var router=express['Router']();var fs_extra=require(_0x79f3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x79f3('0x5'));var config=require('../../config/environment');var controller=require(_0x79f3('0x6'));router[_0x79f3('0x7')]('/',auth[_0x79f3('0x8')](),controller['index']);router[_0x79f3('0x7')](_0x79f3('0x9'),auth[_0x79f3('0x8')](),controller[_0x79f3('0xa')]);router['get'](_0x79f3('0xb'),auth[_0x79f3('0x8')](),controller[_0x79f3('0xc')]);router[_0x79f3('0xd')]('/',auth[_0x79f3('0x8')](),interaction[_0x79f3('0xe')](_0x79f3('0xf'),_0x79f3('0x10')),controller[_0x79f3('0x11')]);router['post']('/:id/status',controller[_0x79f3('0x12')]);router['put'](_0x79f3('0xb'),auth[_0x79f3('0x8')](),controller[_0x79f3('0x13')]);router[_0x79f3('0x14')](_0x79f3('0x15'),auth[_0x79f3('0x8')](),controller[_0x79f3('0x16')]);router[_0x79f3('0x14')](_0x79f3('0x17'),auth[_0x79f3('0x8')](),controller[_0x79f3('0x18')]);router[_0x79f3('0x19')](_0x79f3('0xb'),auth[_0x79f3('0x8')](),controller[_0x79f3('0x1a')]);module['exports']=router;
\ No newline at end of file
index 5ed1f53..f4c8f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb2=['DATE','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x0bb2,0x179));var _0x20bb=function(_0x5b1b96,_0x2d3a23){_0x5b1b96=_0x5b1b96-0x0;var _0x2343e5=_0x0bb2[_0x5b1b96];return _0x2343e5;};'use strict';var Sequelize=require('sequelize');module[_0x20bb('0x0')]={'body':{'type':Sequelize[_0x20bb('0x1')](_0x20bb('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x20bb('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x20bb('0x4')]('in','out'),'defaultValue':_0x20bb('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x20bb('0x6')](0xbe)},'phone':{'type':Sequelize[_0x20bb('0x6')]},'readAt':{'type':Sequelize[_0x20bb('0x7')]},'secret':{'type':Sequelize[_0x20bb('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x20bb('0x1')]}};
\ No newline at end of file
+var _0xe35e=['exports','TEXT','medium','out','STRING','DATE','BOOLEAN'];(function(_0x4a19ff,_0x39f511){var _0xbc91c2=function(_0x2f888e){while(--_0x2f888e){_0x4a19ff['push'](_0x4a19ff['shift']());}};_0xbc91c2(++_0x39f511);}(_0xe35e,0xfc));var _0xee35=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0xe35e[_0x5e36d1];return _0x950b9e;};'use strict';var Sequelize=require('sequelize');module[_0xee35('0x0')]={'body':{'type':Sequelize[_0xee35('0x1')](_0xee35('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xee35('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xee35('0x4')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xee35('0x5')]},'secret':{'type':Sequelize[_0xee35('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xee35('0x1')]}};
\ No newline at end of file
index 29b76a9..a3a2de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe820=['where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','body','describe','sms-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','SmsInteraction','SmsInteractionId','isNil','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','contact','User','email','internal','manual','SIP/%s','channel','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','QueryTypes','agent','fullname','interface','motionChannel','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','plivo','MessageUUID','messageId','indexOf','sent','Status','plivio','results','groupName','DELIVERED','eml-format','zip-dir','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','jayson/promise','http','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','end','stack','name','index','map','SmsMessage','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','pick','filters','filter'];(function(_0x1e175d,_0x41ff45){var _0x3a3ce5=function(_0x186001){while(--_0x186001){_0x1e175d['push'](_0x1e175d['shift']());}};_0x3a3ce5(++_0x41ff45);}(_0xe820,0xd2));var _0x0e82=function(_0x2f8d02,_0x30da90){_0x2f8d02=_0x2f8d02-0x0;var _0x4da739=_0xe820[_0x2f8d02];return _0x4da739;};'use strict';var emlformat=require(_0x0e82('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0e82('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0e82('0x2'));var BPromise=require(_0x0e82('0x3'));var Mustache=require(_0x0e82('0x4'));var util=require('util');var path=require(_0x0e82('0x5'));var sox=require('sox');var csv=require(_0x0e82('0x6'));var ejs=require(_0x0e82('0x7'));var fs=require('fs');var fs_extra=require(_0x0e82('0x8'));var _=require(_0x0e82('0x9'));var squel=require(_0x0e82('0xa'));var crypto=require('crypto');var jsforce=require(_0x0e82('0xb'));var deskjs=require(_0x0e82('0xc'));var toCsv=require(_0x0e82('0x6'));var querystring=require(_0x0e82('0xd'));var Papa=require(_0x0e82('0xe'));var Redis=require('ioredis');var authService=require(_0x0e82('0xf'));var qs=require(_0x0e82('0x10'));var as=require(_0x0e82('0x11'));var hardwareService=require(_0x0e82('0x12'));var logger=require(_0x0e82('0x13'))(_0x0e82('0x14'));var utils=require(_0x0e82('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x0e82('0x16'));var db=require(_0x0e82('0x17'))['db'];config[_0x0e82('0x18')]=_[_0x0e82('0x19')](config[_0x0e82('0x18')],{'host':_0x0e82('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0e82('0x18')]));require('./smsMessage.socket')['register'](socket);var jayson=require(_0x0e82('0x1b'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client'][_0x0e82('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x4d1aa0,_0x585b9b,_0x1149b1,_0x582f45){return new BPromise(function(_0x319303,_0x39cf23){var _0x233c6d=_0x582f45||client;return _0x233c6d[_0x0e82('0x1d')](_0x4d1aa0,_0x1149b1)['then'](function(_0x25ac21){logger[_0x0e82('0x1e')](_0x0e82('0x1f'),_0x585b9b,_0x0e82('0x20'));logger[_0x0e82('0x21')](_0x0e82('0x22'),_0x585b9b,_0x0e82('0x20'),JSON[_0x0e82('0x23')](_0x25ac21));if(_0x25ac21[_0x0e82('0x24')]){if(_0x25ac21[_0x0e82('0x24')][_0x0e82('0x25')]===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x585b9b,_0x25ac21[_0x0e82('0x24')][_0x0e82('0x26')]);return _0x39cf23(_0x25ac21[_0x0e82('0x24')][_0x0e82('0x26')]);}logger[_0x0e82('0x24')](_0x0e82('0x1f'),_0x585b9b,_0x25ac21[_0x0e82('0x24')][_0x0e82('0x26')]);return _0x319303(_0x25ac21['error'][_0x0e82('0x26')]);}else{logger[_0x0e82('0x1e')](_0x0e82('0x1f'),_0x585b9b,_0x0e82('0x20'));_0x319303(_0x25ac21['result'][_0x0e82('0x26')]);}})[_0x0e82('0x27')](function(_0x7a9399){logger[_0x0e82('0x24')]('SmsMessage,\x20%s,\x20%s',_0x585b9b,_0x7a9399);_0x39cf23(_0x7a9399);});});}function respondWithStatusCode(_0x1ef751,_0x51dbcd){_0x51dbcd=_0x51dbcd||0xcc;return function(_0x595319){if(_0x595319){return _0x1ef751[_0x0e82('0x28')](_0x51dbcd);}return _0x1ef751[_0x0e82('0x29')](_0x51dbcd)['end']();};}function respondWithResult(_0x19b96d,_0xe3c530){_0xe3c530=_0xe3c530||0xc8;return function(_0x149e7e){if(_0x149e7e){return _0x19b96d['status'](_0xe3c530)[_0x0e82('0x2a')](_0x149e7e);}};}function respondWithFilteredResult(_0x25fa4e,_0x4ee65a){return function(_0xabc536){if(_0xabc536){var _0x59a5b6=typeof _0x4ee65a[_0x0e82('0x2b')]===_0x0e82('0x2c')&&typeof _0x4ee65a['limit']===_0x0e82('0x2c');var _0x268af5=_0xabc536[_0x0e82('0x2d')];var _0x4d74d0=_0x59a5b6?0x0:_0x4ee65a['offset'];var _0x2dc021=_0x59a5b6?_0xabc536['count']:_0x4ee65a[_0x0e82('0x2b')]+_0x4ee65a['limit'];var _0x1a3b2e;if(_0x2dc021>=_0x268af5){_0x2dc021=_0x268af5;_0x1a3b2e=0xc8;}else{_0x1a3b2e=0xce;}_0x25fa4e[_0x0e82('0x29')](_0x1a3b2e);return _0x25fa4e[_0x0e82('0x2e')]('Content-Range',_0x4d74d0+'-'+_0x2dc021+'/'+_0x268af5)[_0x0e82('0x2a')](_0xabc536);}return null;};}function patchUpdates(_0x59d2f8){return function(_0x3bf19c){try{jsonpatch[_0x0e82('0x2f')](_0x3bf19c,_0x59d2f8,!![]);}catch(_0x2d350b){return BPromise[_0x0e82('0x30')](_0x2d350b);}return _0x3bf19c[_0x0e82('0x31')]();};}function saveUpdates(_0x53ce82,_0x524276){return function(_0x433fc4){if(_0x433fc4){return _0x433fc4[_0x0e82('0x32')](_0x53ce82)[_0x0e82('0x33')](function(_0x10d5ac){return _0x10d5ac;});}return null;};}function removeEntity(_0x3d222f,_0x2a80e2){return function(_0x399f16){if(_0x399f16){return _0x399f16[_0x0e82('0x34')]()[_0x0e82('0x33')](function(){_0x3d222f[_0x0e82('0x29')](0xcc)[_0x0e82('0x35')]();});}};}function handleEntityNotFound(_0x1a77a3,_0x244f3d){return function(_0x1d3136){if(!_0x1d3136){_0x1a77a3[_0x0e82('0x28')](0x194);}return _0x1d3136;};}function handleError(_0x5b95c8,_0x18643f){_0x18643f=_0x18643f||0x1f4;return function(_0x379b27){logger[_0x0e82('0x24')](_0x379b27[_0x0e82('0x36')]);if(_0x379b27['name']){delete _0x379b27[_0x0e82('0x37')];}_0x5b95c8[_0x0e82('0x29')](_0x18643f)['send'](_0x379b27);};}exports[_0x0e82('0x38')]=function(_0x57e505,_0x4a855f){var _0x166707={},_0x1a77c3={},_0xcf82d5={'count':0x0,'rows':[]};var _0x2e1b02=_[_0x0e82('0x39')](db[_0x0e82('0x3a')][_0x0e82('0x3b')],function(_0x50fed8){return{'name':_0x50fed8['fieldName'],'type':_0x50fed8[_0x0e82('0x3c')][_0x0e82('0x3d')]};});_0x1a77c3[_0x0e82('0x3e')]=_[_0x0e82('0x39')](_0x2e1b02,_0x0e82('0x37'));_0x1a77c3[_0x0e82('0x3f')]=_[_0x0e82('0x40')](_0x57e505[_0x0e82('0x3f')]);_0x1a77c3['filters']=_[_0x0e82('0x41')](_0x1a77c3[_0x0e82('0x3e')],_0x1a77c3[_0x0e82('0x3f')]);_0x166707[_0x0e82('0x42')]=_[_0x0e82('0x41')](_0x1a77c3[_0x0e82('0x3e')],qs[_0x0e82('0x43')](_0x57e505['query'][_0x0e82('0x43')]));_0x166707[_0x0e82('0x42')]=_0x166707[_0x0e82('0x42')][_0x0e82('0x44')]?_0x166707[_0x0e82('0x42')]:_0x1a77c3[_0x0e82('0x3e')];if(!_0x57e505[_0x0e82('0x3f')]['hasOwnProperty']('nolimit')){_0x166707['limit']=qs['limit'](_0x57e505['query']['limit']);_0x166707[_0x0e82('0x2b')]=qs[_0x0e82('0x2b')](_0x57e505[_0x0e82('0x3f')][_0x0e82('0x2b')]);}_0x166707[_0x0e82('0x45')]=qs[_0x0e82('0x46')](_0x57e505[_0x0e82('0x3f')][_0x0e82('0x46')]);_0x166707['where']=qs['filters'](_[_0x0e82('0x47')](_0x57e505[_0x0e82('0x3f')],_0x1a77c3[_0x0e82('0x48')]),_0x2e1b02);if(_0x57e505[_0x0e82('0x3f')][_0x0e82('0x49')]){_0x166707[_0x0e82('0x4a')]=_[_0x0e82('0x4b')](_0x166707[_0x0e82('0x4a')],{'$or':_['map'](_0x2e1b02,function(_0x1841a7){if(_0x1841a7['type']!==_0x0e82('0x4c')){var _0x47f955={};_0x47f955[_0x1841a7[_0x0e82('0x37')]]={'$like':'%'+_0x57e505['query'][_0x0e82('0x49')]+'%'};return _0x47f955;}})});}_0x166707=_[_0x0e82('0x4b')]({},_0x166707,_0x57e505[_0x0e82('0x4d')]);var _0x55c233={'where':_0x166707['where']};return db[_0x0e82('0x3a')][_0x0e82('0x2d')](_0x55c233)[_0x0e82('0x33')](function(_0x4e38d2){_0xcf82d5[_0x0e82('0x2d')]=_0x4e38d2;if(_0x57e505['query'][_0x0e82('0x4e')]){_0x166707[_0x0e82('0x4f')]=[{'all':!![]}];}return db[_0x0e82('0x3a')][_0x0e82('0x50')](_0x166707);})[_0x0e82('0x33')](function(_0x2f22b7){_0xcf82d5[_0x0e82('0x51')]=_0x2f22b7;return _0xcf82d5;})[_0x0e82('0x33')](respondWithFilteredResult(_0x4a855f,_0x166707))[_0x0e82('0x27')](handleError(_0x4a855f,null));};exports[_0x0e82('0x52')]=function(_0x41e27e,_0x22c249){var _0x4e9030={'raw':!![],'where':{'id':_0x41e27e[_0x0e82('0x53')]['id']}},_0xf29232={};_0xf29232['model']=_[_0x0e82('0x40')](db['SmsMessage']['rawAttributes']);_0xf29232[_0x0e82('0x3f')]=_['keys'](_0x41e27e[_0x0e82('0x3f')]);_0xf29232[_0x0e82('0x48')]=_[_0x0e82('0x41')](_0xf29232[_0x0e82('0x3e')],_0xf29232[_0x0e82('0x3f')]);_0x4e9030['attributes']=_[_0x0e82('0x41')](_0xf29232['model'],qs[_0x0e82('0x43')](_0x41e27e[_0x0e82('0x3f')][_0x0e82('0x43')]));_0x4e9030[_0x0e82('0x42')]=_0x4e9030[_0x0e82('0x42')]['length']?_0x4e9030[_0x0e82('0x42')]:_0xf29232[_0x0e82('0x3e')];if(_0x41e27e[_0x0e82('0x3f')][_0x0e82('0x4e')]){_0x4e9030[_0x0e82('0x4f')]=[{'all':!![]}];}_0x4e9030=_['merge']({},_0x4e9030,_0x41e27e[_0x0e82('0x4d')]);return db[_0x0e82('0x3a')][_0x0e82('0x54')](_0x4e9030)[_0x0e82('0x33')](handleEntityNotFound(_0x22c249,null))[_0x0e82('0x33')](respondWithResult(_0x22c249,null))[_0x0e82('0x27')](handleError(_0x22c249,null));};exports[_0x0e82('0x55')]=function(_0xa07565,_0x28cbc5){return db[_0x0e82('0x3a')]['create'](_0xa07565['body'],{})['then'](respondWithResult(_0x28cbc5,0xc9))[_0x0e82('0x27')](handleError(_0x28cbc5,null));};exports['update']=function(_0x23741c,_0x3b80aa){if(_0x23741c['body']['id']){delete _0x23741c['body']['id'];}return db[_0x0e82('0x3a')][_0x0e82('0x54')]({'where':{'id':_0x23741c[_0x0e82('0x53')]['id']}})[_0x0e82('0x33')](handleEntityNotFound(_0x3b80aa,null))[_0x0e82('0x33')](saveUpdates(_0x23741c[_0x0e82('0x56')],null))[_0x0e82('0x33')](respondWithResult(_0x3b80aa,null))[_0x0e82('0x27')](handleError(_0x3b80aa,null));};exports[_0x0e82('0x34')]=function(_0x3b35e0,_0x4ce423){return db[_0x0e82('0x3a')][_0x0e82('0x54')]({'where':{'id':_0x3b35e0[_0x0e82('0x53')]['id']}})[_0x0e82('0x33')](handleEntityNotFound(_0x4ce423,null))[_0x0e82('0x33')](removeEntity(_0x4ce423,null))[_0x0e82('0x27')](handleError(_0x4ce423,null));};exports[_0x0e82('0x57')]=function(_0x1a3110,_0x5aab5a){return db[_0x0e82('0x3a')][_0x0e82('0x57')]()[_0x0e82('0x33')](respondWithResult(_0x5aab5a,null))[_0x0e82('0x27')](handleError(_0x5aab5a,null));};var interaction_log=require(_0x0e82('0x13'))(_0x0e82('0x58'));exports[_0x0e82('0x59')]=function(_0x11ef9e,_0x20bf0c,_0x4df351){var _0x3cc8f9={'agent':{},'channel':'sms'};if(_0x11ef9e[_0x0e82('0x56')]['id']){delete _0x11ef9e['body']['id'];}_0x11ef9e[_0x0e82('0x56')][_0x0e82('0x5a')]=!![];_0x11ef9e['body'][_0x0e82('0x5b')]=moment()[_0x0e82('0x5c')](_0x0e82('0x5d'));_0x11ef9e[_0x0e82('0x56')][_0x0e82('0x5e')]=_0x11ef9e['body'][_0x0e82('0x5e')]||_0x11ef9e['user']['id'];_0x3cc8f9['agent']['id']=_0x11ef9e[_0x0e82('0x56')][_0x0e82('0x5e')];return db[_0x0e82('0x3a')][_0x0e82('0x54')]({'where':{'id':_0x11ef9e[_0x0e82('0x53')]['id'],'UserId':null}})[_0x0e82('0x33')](handleEntityNotFound(_0x20bf0c,null))[_0x0e82('0x33')](saveUpdates(_0x11ef9e[_0x0e82('0x56')],null))[_0x0e82('0x33')](function(_0x2b89a2){if(_0x2b89a2){_0x3cc8f9['message']=_0x2b89a2['get']({'plain':!![]});return db[_0x0e82('0x5f')]['find']({'where':{'id':_0x2b89a2[_0x0e82('0x60')]}});}return null;})[_0x0e82('0x33')](handleEntityNotFound(_0x20bf0c,null))['then'](function(_0x2cba0c){if(_0x2cba0c){return _0x2cba0c[_0x0e82('0x32')]({'UserId':_0x11ef9e['body'][_0x0e82('0x5e')],'read1stAt':_[_0x0e82('0x61')](_0x2cba0c['read1stAt'])?moment()[_0x0e82('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0e82('0x33')](function(_0x2390a3){if(_0x2390a3){_0x3cc8f9[_0x0e82('0x62')]=_0x2390a3[_0x0e82('0x63')]({'plain':!![]});interaction_log[_0x0e82('0x1e')](_0x0e82('0x64'),_0x11ef9e[_0x0e82('0x65')]['id'],_0x11ef9e[_0x0e82('0x65')][_0x0e82('0x37')],_0x11ef9e[_0x0e82('0x65')]['role'],_0x3cc8f9[_0x0e82('0x62')]['id'],_0x11ef9e['body']?JSON[_0x0e82('0x23')](_0x11ef9e[_0x0e82('0x56')]):_0x0e82('0x66'));return respondWithRpcPromise('AcceptMessage',_0x0e82('0x67'),_0x3cc8f9);}return null;})[_0x0e82('0x33')](function(_0x184a75){var _0x2ffe5f=_0x0e82('0x68')+_0x184a75['message'][_0x0e82('0x69')];return db['sequelize'][_0x0e82('0x3f')](_0x2ffe5f,{'type':db[_0x0e82('0x6a')]['QueryTypes']['SELECT'],'raw':!![]})[_0x0e82('0x33')](function(_0x2b154e){return _0x2b154e;});})[_0x0e82('0x33')](function(_0x22791b){if(_0x22791b){_0x3cc8f9[_0x0e82('0x26')][_0x0e82('0x6b')]=_0x22791b[0x0];if(!_0x11ef9e[_0x0e82('0x56')][_0x0e82('0x5e')])return;return db[_0x0e82('0x6c')]['find']({'where':{'id':_0x11ef9e[_0x0e82('0x56')][_0x0e82('0x5e')],'role':'agent'},'attributes':['id','name','fullname',_0x0e82('0x6d'),_0x0e82('0x6e')],'raw':!![]});}return null;})[_0x0e82('0x33')](function(_0x542b28){if(!_0x542b28)return null;_0x3cc8f9[_0x0e82('0x26')]['agent']=_0x542b28;return _0x3cc8f9;})[_0x0e82('0x33')](function(_0x354ef9){if(_0x354ef9){if(_0x11ef9e[_0x0e82('0x56')][_0x0e82('0x6f')]){_0x3cc8f9[_0x0e82('0x26')]['interface']=util[_0x0e82('0x5c')](_0x0e82('0x70'),_0x11ef9e['user'][_0x0e82('0x37')]);_0x3cc8f9[_0x0e82('0x26')][_0x0e82('0x71')]=_0x3cc8f9['channel'];_0x3cc8f9[_0x0e82('0x26')]['motionChannel']=_0x3cc8f9[_0x0e82('0x71')];_0x3cc8f9[_0x0e82('0x26')][_0x0e82('0x72')]=_0x0e82('0x59');return respondWithRpcPromise(_0x0e82('0x73'),_0x0e82('0x73'),{'event':_0x0e82('0x74'),'message':_0x3cc8f9[_0x0e82('0x26')]},client9002)['then'](function(){return _0x3cc8f9;});}return _0x3cc8f9;}return null;})[_0x0e82('0x33')](respondWithResult(_0x20bf0c,null))[_0x0e82('0x27')](handleError(_0x20bf0c,null));};var interaction_log=require(_0x0e82('0x13'))(_0x0e82('0x58'));exports[_0x0e82('0x30')]=function(_0x5ab8ff,_0x1afd3e,_0x4fadaa){var _0x27e6fd={'agent':{},'channel':'sms'};if(_0x5ab8ff[_0x0e82('0x56')]['id']){delete _0x5ab8ff[_0x0e82('0x56')]['id'];}_0x5ab8ff['body'][_0x0e82('0x5e')]=_0x5ab8ff[_0x0e82('0x56')][_0x0e82('0x5e')]||_0x5ab8ff['user']['id'];_0x27e6fd['agent']['id']=_0x5ab8ff['body'][_0x0e82('0x5e')];return db[_0x0e82('0x3a')][_0x0e82('0x54')]({'where':{'id':_0x5ab8ff['params']['id'],'UserId':null}})[_0x0e82('0x33')](handleEntityNotFound(_0x1afd3e,null))[_0x0e82('0x33')](function(_0x16a73f){if(_0x16a73f){_0x27e6fd[_0x0e82('0x26')]=_0x16a73f[_0x0e82('0x63')]({'plain':!![]});return db[_0x0e82('0x5f')][_0x0e82('0x54')]({'where':{'id':_0x16a73f[_0x0e82('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x1afd3e,null))[_0x0e82('0x33')](function(_0x384428){if(_0x384428){_0x27e6fd[_0x0e82('0x62')]=_0x384428[_0x0e82('0x63')]({'plain':!![]});interaction_log[_0x0e82('0x1e')](_0x0e82('0x75'),_0x5ab8ff[_0x0e82('0x65')]['id'],_0x5ab8ff[_0x0e82('0x65')]['name'],_0x5ab8ff[_0x0e82('0x65')]['role'],_0x27e6fd['interaction']['id'],_0x5ab8ff['body']?JSON[_0x0e82('0x23')](_0x5ab8ff[_0x0e82('0x56')]):_0x0e82('0x66'));return respondWithRpcPromise(_0x0e82('0x76'),'rejectMessage',_0x27e6fd);}return null;})[_0x0e82('0x33')](function(_0x5a82df){var _0x360564=_0x0e82('0x68')+_0x5a82df['message'][_0x0e82('0x69')];return db['sequelize']['query'](_0x360564,{'type':db[_0x0e82('0x6a')][_0x0e82('0x77')]['SELECT'],'raw':!![]})['then'](function(_0xaadfbe){return _0xaadfbe;});})[_0x0e82('0x33')](function(_0x154a14){if(_0x154a14){_0x27e6fd[_0x0e82('0x26')][_0x0e82('0x6b')]=_0x154a14[0x0];if(!_0x5ab8ff[_0x0e82('0x56')][_0x0e82('0x5e')])return;return db[_0x0e82('0x6c')]['find']({'where':{'id':_0x5ab8ff['body'][_0x0e82('0x5e')],'role':_0x0e82('0x78')},'attributes':['id',_0x0e82('0x37'),_0x0e82('0x79'),_0x0e82('0x6d'),_0x0e82('0x6e')],'raw':!![]});}return null;})[_0x0e82('0x33')](function(_0x56804d){if(!_0x56804d)return null;_0x27e6fd[_0x0e82('0x26')]['agent']=_0x56804d;return _0x27e6fd;})['then'](function(_0x3bb2b3){if(_0x3bb2b3){_0x3bb2b3['message'][_0x0e82('0x7a')]=util[_0x0e82('0x5c')]('SIP/%s',_0x5ab8ff[_0x0e82('0x65')][_0x0e82('0x37')]);_0x3bb2b3[_0x0e82('0x26')][_0x0e82('0x71')]=_0x27e6fd[_0x0e82('0x71')];_0x3bb2b3[_0x0e82('0x26')][_0x0e82('0x7b')]=_0x27e6fd['channel'];_0x3bb2b3[_0x0e82('0x26')]['event']='reject';respondWithRpcPromise('EventManager',_0x0e82('0x73'),{'event':_0x0e82('0x7c'),'message':_0x3bb2b3[_0x0e82('0x26')]},client9002);return _0x27e6fd;}return null;})[_0x0e82('0x33')](respondWithResult(_0x1afd3e,null))[_0x0e82('0x27')](handleError(_0x1afd3e,null));};exports[_0x0e82('0x29')]=function(_0x57d238,_0x890f08,_0x4a5773){if(_0x57d238['body']['id']){delete _0x57d238['body']['id'];}var _0x1fad5a;return db['SmsMessage']['find']({'where':{'id':_0x57d238[_0x0e82('0x53')]['id']}})[_0x0e82('0x33')](handleEntityNotFound(_0x890f08,null))['then'](function(_0x5800a5){if(_0x5800a5){_0x1fad5a=_0x5800a5;return db[_0x0e82('0x7d')]['find']({'where':{'id':_0x5800a5[_0x0e82('0x7e')]}});}})[_0x0e82('0x33')](handleEntityNotFound(_0x890f08,null))[_0x0e82('0x33')](function(_0x5710df){if(_0x5710df){logger[_0x0e82('0x21')](_0x0e82('0x22'),'status',_0x0e82('0x7f'),_0x5710df[_0x0e82('0x3c')],util['inspect'](_0x57d238[_0x0e82('0x56')],{'showHidden':![],'depth':null}));switch(_0x5710df[_0x0e82('0x3c')]){case'twilio':if(_0x57d238[_0x0e82('0x56')][_0x0e82('0x80')]&&_0x57d238[_0x0e82('0x56')][_0x0e82('0x80')]===_0x1fad5a['messageId']){return _0x1fad5a['update']({'read':!![]});}else{logger[_0x0e82('0x24')](_0x0e82('0x81'),_0x0e82('0x29'),_0x0e82('0x82'),util[_0x0e82('0x83')](_0x57d238[_0x0e82('0x56')],{'showHidden':![],'depth':null}));}break;case _0x0e82('0x84'):if(_0x57d238[_0x0e82('0x56')][_0x0e82('0x85')]&&_0x57d238['body'][_0x0e82('0x85')]===_0x1fad5a[_0x0e82('0x86')]&&_[_0x0e82('0x87')]([_0x0e82('0x88'),'delivered'],_0x57d238[_0x0e82('0x56')][_0x0e82('0x89')])>=0x0){return _0x1fad5a['update']({'read':!![]});}else{logger[_0x0e82('0x24')](_0x0e82('0x81'),_0x0e82('0x29'),_0x0e82('0x8a'),util[_0x0e82('0x83')](_0x57d238[_0x0e82('0x56')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x17a56d=_0x57d238['body'][_0x0e82('0x8b')][0x0];if(_0x17a56d[_0x0e82('0x29')][_0x0e82('0x8c')]===_0x0e82('0x8d')){return _0x1fad5a[_0x0e82('0x32')]({'read':!![]});}else{logger[_0x0e82('0x24')](_0x0e82('0x81'),_0x0e82('0x29'),'infobip',util[_0x0e82('0x83')](_0x57d238[_0x0e82('0x56')],{'showHidden':![],'depth':null}));}break;}return _0x1fad5a;}})[_0x0e82('0x33')](respondWithResult(_0x890f08,null))['catch'](handleError(_0x890f08,null));};
\ No newline at end of file
+var _0xb458=['groupName','DELIVERED','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsMessage.socket','jayson/promise','client','http','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','where','merge','VIRTUAL','filter','options','include','SmsMessage','rows','catch','params','intersection','find','create','body','destroy','describe','sms-interactions','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','isNil','interaction','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname','email','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','../../config/logger','reject','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','internal','SIP/%s','rejectmessage','SmsAccount','SmsAccountId','debug','received\x20delivery\x20report\x20from','inspect','MessageSid','twilio','plivo','MessageUUID','messageId','sent','delivered','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','infobip'];(function(_0x5f083a,_0x15f9a2){var _0x41399d=function(_0x2ba621){while(--_0x2ba621){_0x5f083a['push'](_0x5f083a['shift']());}};_0x41399d(++_0x15f9a2);}(_0xb458,0x94));var _0x8b45=function(_0x16f475,_0x22b4b4){_0x16f475=_0x16f475-0x0;var _0x53372e=_0xb458[_0x16f475];return _0x53372e;};'use strict';var emlformat=require(_0x8b45('0x0'));var rimraf=require(_0x8b45('0x1'));var zipdir=require(_0x8b45('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8b45('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8b45('0x4'));var util=require(_0x8b45('0x5'));var path=require(_0x8b45('0x6'));var sox=require(_0x8b45('0x7'));var csv=require('to-csv');var ejs=require(_0x8b45('0x8'));var fs=require('fs');var fs_extra=require(_0x8b45('0x9'));var _=require(_0x8b45('0xa'));var squel=require(_0x8b45('0xb'));var crypto=require(_0x8b45('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8b45('0xd'));var querystring=require(_0x8b45('0xe'));var Papa=require(_0x8b45('0xf'));var Redis=require(_0x8b45('0x10'));var authService=require(_0x8b45('0x11'));var qs=require(_0x8b45('0x12'));var as=require(_0x8b45('0x13'));var hardwareService=require(_0x8b45('0x14'));var logger=require('../../config/logger')(_0x8b45('0x15'));var utils=require(_0x8b45('0x16'));var config=require(_0x8b45('0x17'));var licenseUtil=require(_0x8b45('0x18'));var db=require(_0x8b45('0x19'))['db'];config[_0x8b45('0x1a')]=_['defaults'](config[_0x8b45('0x1a')],{'host':_0x8b45('0x1b'),'port':0x18eb});var socket=require(_0x8b45('0x1c'))(new Redis(config[_0x8b45('0x1a')]));require(_0x8b45('0x1d'))['register'](socket);var jayson=require(_0x8b45('0x1e'));var client=jayson[_0x8b45('0x1f')][_0x8b45('0x20')]({'port':0x232c});var client9002=jayson[_0x8b45('0x1f')][_0x8b45('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x429d1e,_0xd15da0,_0x4d0371,_0x523ea1){return new BPromise(function(_0x1de2a3,_0x43b9c7){var _0xde338=_0x523ea1||client;return _0xde338['request'](_0x429d1e,_0x4d0371)['then'](function(_0x521bc2){logger[_0x8b45('0x21')](_0x8b45('0x22'),_0xd15da0,_0x8b45('0x23'));logger['debug'](_0x8b45('0x24'),_0xd15da0,_0x8b45('0x23'),JSON[_0x8b45('0x25')](_0x521bc2));if(_0x521bc2[_0x8b45('0x26')]){if(_0x521bc2[_0x8b45('0x26')][_0x8b45('0x27')]===0x1f4){logger[_0x8b45('0x26')](_0x8b45('0x22'),_0xd15da0,_0x521bc2[_0x8b45('0x26')][_0x8b45('0x28')]);return _0x43b9c7(_0x521bc2['error'][_0x8b45('0x28')]);}logger['error']('SmsMessage,\x20%s,\x20%s',_0xd15da0,_0x521bc2['error'][_0x8b45('0x28')]);return _0x1de2a3(_0x521bc2[_0x8b45('0x26')][_0x8b45('0x28')]);}else{logger[_0x8b45('0x21')](_0x8b45('0x22'),_0xd15da0,'request\x20sent');_0x1de2a3(_0x521bc2[_0x8b45('0x29')][_0x8b45('0x28')]);}})['catch'](function(_0x4b02d8){logger[_0x8b45('0x26')](_0x8b45('0x22'),_0xd15da0,_0x4b02d8);_0x43b9c7(_0x4b02d8);});});}function respondWithStatusCode(_0x5ebc87,_0x12a9cc){_0x12a9cc=_0x12a9cc||0xcc;return function(_0x52e6e4){if(_0x52e6e4){return _0x5ebc87[_0x8b45('0x2a')](_0x12a9cc);}return _0x5ebc87[_0x8b45('0x2b')](_0x12a9cc)[_0x8b45('0x2c')]();};}function respondWithResult(_0x2d2c24,_0x4ceb2e){_0x4ceb2e=_0x4ceb2e||0xc8;return function(_0x95793f){if(_0x95793f){return _0x2d2c24['status'](_0x4ceb2e)[_0x8b45('0x2d')](_0x95793f);}};}function respondWithFilteredResult(_0x105d26,_0x48ad30){return function(_0x1c8436){if(_0x1c8436){var _0x4ad473=typeof _0x48ad30[_0x8b45('0x2e')]===_0x8b45('0x2f')&&typeof _0x48ad30['limit']==='undefined';var _0x1854b1=_0x1c8436['count'];var _0x5beca3=_0x4ad473?0x0:_0x48ad30[_0x8b45('0x2e')];var _0x27b7c7=_0x4ad473?_0x1c8436[_0x8b45('0x30')]:_0x48ad30['offset']+_0x48ad30[_0x8b45('0x31')];var _0x2ad7c3;if(_0x27b7c7>=_0x1854b1){_0x27b7c7=_0x1854b1;_0x2ad7c3=0xc8;}else{_0x2ad7c3=0xce;}_0x105d26[_0x8b45('0x2b')](_0x2ad7c3);return _0x105d26[_0x8b45('0x32')](_0x8b45('0x33'),_0x5beca3+'-'+_0x27b7c7+'/'+_0x1854b1)[_0x8b45('0x2d')](_0x1c8436);}return null;};}function patchUpdates(_0x51c61d){return function(_0x395eec){try{jsonpatch[_0x8b45('0x34')](_0x395eec,_0x51c61d,!![]);}catch(_0x16196a){return BPromise['reject'](_0x16196a);}return _0x395eec[_0x8b45('0x35')]();};}function saveUpdates(_0x91180c,_0x250dba){return function(_0x4e999d){if(_0x4e999d){return _0x4e999d[_0x8b45('0x36')](_0x91180c)[_0x8b45('0x37')](function(_0x57aa42){return _0x57aa42;});}return null;};}function removeEntity(_0x355e4b,_0x1914db){return function(_0x209b9a){if(_0x209b9a){return _0x209b9a['destroy']()[_0x8b45('0x37')](function(){_0x355e4b[_0x8b45('0x2b')](0xcc)[_0x8b45('0x2c')]();});}};}function handleEntityNotFound(_0x58e707,_0x316349){return function(_0x3e7664){if(!_0x3e7664){_0x58e707[_0x8b45('0x2a')](0x194);}return _0x3e7664;};}function handleError(_0x4ec4e8,_0x47b80e){_0x47b80e=_0x47b80e||0x1f4;return function(_0x4d1dca){logger[_0x8b45('0x26')](_0x4d1dca[_0x8b45('0x38')]);if(_0x4d1dca['name']){delete _0x4d1dca[_0x8b45('0x39')];}_0x4ec4e8[_0x8b45('0x2b')](_0x47b80e)['send'](_0x4d1dca);};}exports[_0x8b45('0x3a')]=function(_0x4e3648,_0x44aef8){var _0x20c1db={},_0x206273={},_0x1d5e7f={'count':0x0,'rows':[]};var _0x1b8e00=_[_0x8b45('0x3b')](db['SmsMessage'][_0x8b45('0x3c')],function(_0x2cabf9){return{'name':_0x2cabf9[_0x8b45('0x3d')],'type':_0x2cabf9[_0x8b45('0x3e')][_0x8b45('0x3f')]};});_0x206273[_0x8b45('0x40')]=_[_0x8b45('0x3b')](_0x1b8e00,_0x8b45('0x39'));_0x206273[_0x8b45('0x41')]=_[_0x8b45('0x42')](_0x4e3648[_0x8b45('0x41')]);_0x206273[_0x8b45('0x43')]=_['intersection'](_0x206273['model'],_0x206273['query']);_0x20c1db[_0x8b45('0x44')]=_['intersection'](_0x206273[_0x8b45('0x40')],qs[_0x8b45('0x45')](_0x4e3648[_0x8b45('0x41')]['fields']));_0x20c1db[_0x8b45('0x44')]=_0x20c1db[_0x8b45('0x44')][_0x8b45('0x46')]?_0x20c1db[_0x8b45('0x44')]:_0x206273[_0x8b45('0x40')];if(!_0x4e3648['query'][_0x8b45('0x47')](_0x8b45('0x48'))){_0x20c1db['limit']=qs['limit'](_0x4e3648['query']['limit']);_0x20c1db[_0x8b45('0x2e')]=qs[_0x8b45('0x2e')](_0x4e3648[_0x8b45('0x41')][_0x8b45('0x2e')]);}_0x20c1db[_0x8b45('0x49')]=qs['sort'](_0x4e3648[_0x8b45('0x41')]['sort']);_0x20c1db[_0x8b45('0x4a')]=qs[_0x8b45('0x43')](_['pick'](_0x4e3648[_0x8b45('0x41')],_0x206273[_0x8b45('0x43')]),_0x1b8e00);if(_0x4e3648[_0x8b45('0x41')]['filter']){_0x20c1db[_0x8b45('0x4a')]=_[_0x8b45('0x4b')](_0x20c1db[_0x8b45('0x4a')],{'$or':_[_0x8b45('0x3b')](_0x1b8e00,function(_0x207105){if(_0x207105[_0x8b45('0x3e')]!==_0x8b45('0x4c')){var _0x52c583={};_0x52c583[_0x207105['name']]={'$like':'%'+_0x4e3648[_0x8b45('0x41')][_0x8b45('0x4d')]+'%'};return _0x52c583;}})});}_0x20c1db=_['merge']({},_0x20c1db,_0x4e3648[_0x8b45('0x4e')]);var _0x16603b={'where':_0x20c1db[_0x8b45('0x4a')]};return db['SmsMessage']['count'](_0x16603b)[_0x8b45('0x37')](function(_0x46df33){_0x1d5e7f[_0x8b45('0x30')]=_0x46df33;if(_0x4e3648['query']['includeAll']){_0x20c1db[_0x8b45('0x4f')]=[{'all':!![]}];}return db[_0x8b45('0x50')]['findAll'](_0x20c1db);})['then'](function(_0x3067b8){_0x1d5e7f[_0x8b45('0x51')]=_0x3067b8;return _0x1d5e7f;})[_0x8b45('0x37')](respondWithFilteredResult(_0x44aef8,_0x20c1db))[_0x8b45('0x52')](handleError(_0x44aef8,null));};exports['show']=function(_0x56b4d0,_0x2c1e80){var _0x1cefd1={'raw':!![],'where':{'id':_0x56b4d0[_0x8b45('0x53')]['id']}},_0x23b136={};_0x23b136[_0x8b45('0x40')]=_[_0x8b45('0x42')](db[_0x8b45('0x50')][_0x8b45('0x3c')]);_0x23b136[_0x8b45('0x41')]=_[_0x8b45('0x42')](_0x56b4d0[_0x8b45('0x41')]);_0x23b136[_0x8b45('0x43')]=_[_0x8b45('0x54')](_0x23b136['model'],_0x23b136[_0x8b45('0x41')]);_0x1cefd1[_0x8b45('0x44')]=_[_0x8b45('0x54')](_0x23b136[_0x8b45('0x40')],qs[_0x8b45('0x45')](_0x56b4d0['query'][_0x8b45('0x45')]));_0x1cefd1[_0x8b45('0x44')]=_0x1cefd1[_0x8b45('0x44')][_0x8b45('0x46')]?_0x1cefd1[_0x8b45('0x44')]:_0x23b136[_0x8b45('0x40')];if(_0x56b4d0['query']['includeAll']){_0x1cefd1[_0x8b45('0x4f')]=[{'all':!![]}];}_0x1cefd1=_['merge']({},_0x1cefd1,_0x56b4d0[_0x8b45('0x4e')]);return db[_0x8b45('0x50')][_0x8b45('0x55')](_0x1cefd1)['then'](handleEntityNotFound(_0x2c1e80,null))[_0x8b45('0x37')](respondWithResult(_0x2c1e80,null))['catch'](handleError(_0x2c1e80,null));};exports[_0x8b45('0x56')]=function(_0xc98122,_0x4c14a4){return db[_0x8b45('0x50')][_0x8b45('0x56')](_0xc98122[_0x8b45('0x57')],{})[_0x8b45('0x37')](respondWithResult(_0x4c14a4,0xc9))[_0x8b45('0x52')](handleError(_0x4c14a4,null));};exports[_0x8b45('0x36')]=function(_0x53f9a8,_0x35cc43){if(_0x53f9a8[_0x8b45('0x57')]['id']){delete _0x53f9a8[_0x8b45('0x57')]['id'];}return db[_0x8b45('0x50')]['find']({'where':{'id':_0x53f9a8[_0x8b45('0x53')]['id']}})[_0x8b45('0x37')](handleEntityNotFound(_0x35cc43,null))[_0x8b45('0x37')](saveUpdates(_0x53f9a8[_0x8b45('0x57')],null))['then'](respondWithResult(_0x35cc43,null))[_0x8b45('0x52')](handleError(_0x35cc43,null));};exports[_0x8b45('0x58')]=function(_0x25bc0e,_0x35e1b8){return db[_0x8b45('0x50')][_0x8b45('0x55')]({'where':{'id':_0x25bc0e[_0x8b45('0x53')]['id']}})['then'](handleEntityNotFound(_0x35e1b8,null))['then'](removeEntity(_0x35e1b8,null))[_0x8b45('0x52')](handleError(_0x35e1b8,null));};exports[_0x8b45('0x59')]=function(_0x200518,_0x321ef7){return db[_0x8b45('0x50')][_0x8b45('0x59')]()[_0x8b45('0x37')](respondWithResult(_0x321ef7,null))['catch'](handleError(_0x321ef7,null));};var interaction_log=require('../../config/logger')(_0x8b45('0x5a'));exports['accept']=function(_0x1a51b6,_0x1b8dfe,_0x107de8){var _0x3b1ead={'agent':{},'channel':'sms'};if(_0x1a51b6['body']['id']){delete _0x1a51b6[_0x8b45('0x57')]['id'];}_0x1a51b6[_0x8b45('0x57')][_0x8b45('0x5b')]=!![];_0x1a51b6['body'][_0x8b45('0x5c')]=moment()[_0x8b45('0x5d')](_0x8b45('0x5e'));_0x1a51b6[_0x8b45('0x57')]['UserId']=_0x1a51b6[_0x8b45('0x57')][_0x8b45('0x5f')]||_0x1a51b6['user']['id'];_0x3b1ead[_0x8b45('0x60')]['id']=_0x1a51b6[_0x8b45('0x57')][_0x8b45('0x5f')];return db['SmsMessage'][_0x8b45('0x55')]({'where':{'id':_0x1a51b6[_0x8b45('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1b8dfe,null))[_0x8b45('0x37')](saveUpdates(_0x1a51b6['body'],null))[_0x8b45('0x37')](function(_0x413986){if(_0x413986){_0x3b1ead[_0x8b45('0x28')]=_0x413986[_0x8b45('0x61')]({'plain':!![]});return db[_0x8b45('0x62')][_0x8b45('0x55')]({'where':{'id':_0x413986[_0x8b45('0x63')]}});}return null;})[_0x8b45('0x37')](handleEntityNotFound(_0x1b8dfe,null))['then'](function(_0x3e8a62){if(_0x3e8a62){return _0x3e8a62[_0x8b45('0x36')]({'UserId':_0x1a51b6[_0x8b45('0x57')][_0x8b45('0x5f')],'read1stAt':_[_0x8b45('0x64')](_0x3e8a62['read1stAt'])?moment()[_0x8b45('0x5d')](_0x8b45('0x5e')):undefined});}return null;})['then'](function(_0x107431){if(_0x107431){_0x3b1ead[_0x8b45('0x65')]=_0x107431[_0x8b45('0x61')]({'plain':!![]});interaction_log[_0x8b45('0x21')]('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1a51b6[_0x8b45('0x66')]['id'],_0x1a51b6[_0x8b45('0x66')][_0x8b45('0x39')],_0x1a51b6[_0x8b45('0x66')]['role'],_0x3b1ead[_0x8b45('0x65')]['id'],_0x1a51b6[_0x8b45('0x57')]?JSON['stringify'](_0x1a51b6[_0x8b45('0x57')]):_0x8b45('0x67'));return respondWithRpcPromise(_0x8b45('0x68'),_0x8b45('0x69'),_0x3b1ead);}return null;})['then'](function(_0x5351d9){var _0x350939=_0x8b45('0x6a')+_0x5351d9[_0x8b45('0x28')][_0x8b45('0x6b')];return db[_0x8b45('0x6c')][_0x8b45('0x41')](_0x350939,{'type':db[_0x8b45('0x6d')]['QueryTypes'][_0x8b45('0x6e')],'raw':!![]})[_0x8b45('0x37')](function(_0x14a58b){return _0x14a58b;});})[_0x8b45('0x37')](function(_0x931e3a){if(_0x931e3a){_0x3b1ead[_0x8b45('0x28')][_0x8b45('0x6f')]=_0x931e3a[0x0];if(!_0x1a51b6[_0x8b45('0x57')][_0x8b45('0x5f')])return;return db[_0x8b45('0x70')][_0x8b45('0x55')]({'where':{'id':_0x1a51b6['body'][_0x8b45('0x5f')],'role':'agent'},'attributes':['id',_0x8b45('0x39'),_0x8b45('0x71'),_0x8b45('0x72'),'internal'],'raw':!![]});}return null;})[_0x8b45('0x37')](function(_0x1a7ac3){if(!_0x1a7ac3)return null;_0x3b1ead[_0x8b45('0x28')]['agent']=_0x1a7ac3;return _0x3b1ead;})[_0x8b45('0x37')](function(_0x19f38b){if(_0x19f38b){if(_0x1a51b6['body'][_0x8b45('0x73')]){_0x3b1ead['message'][_0x8b45('0x74')]=util[_0x8b45('0x5d')]('SIP/%s',_0x1a51b6[_0x8b45('0x66')][_0x8b45('0x39')]);_0x3b1ead[_0x8b45('0x28')][_0x8b45('0x75')]=_0x3b1ead[_0x8b45('0x75')];_0x3b1ead['message'][_0x8b45('0x76')]=_0x3b1ead[_0x8b45('0x75')];_0x3b1ead[_0x8b45('0x28')][_0x8b45('0x77')]='accept';return respondWithRpcPromise(_0x8b45('0x78'),_0x8b45('0x78'),{'event':_0x8b45('0x79'),'message':_0x3b1ead[_0x8b45('0x28')]},client9002)[_0x8b45('0x37')](function(){return _0x3b1ead;});}return _0x3b1ead;}return null;})['then'](respondWithResult(_0x1b8dfe,null))[_0x8b45('0x52')](handleError(_0x1b8dfe,null));};var interaction_log=require(_0x8b45('0x7a'))('sms-interactions');exports[_0x8b45('0x7b')]=function(_0x8e0df9,_0x1f7dd0,_0x959c20){var _0x1ddccc={'agent':{},'channel':'sms'};if(_0x8e0df9['body']['id']){delete _0x8e0df9[_0x8b45('0x57')]['id'];}_0x8e0df9['body'][_0x8b45('0x5f')]=_0x8e0df9[_0x8b45('0x57')][_0x8b45('0x5f')]||_0x8e0df9['user']['id'];_0x1ddccc[_0x8b45('0x60')]['id']=_0x8e0df9[_0x8b45('0x57')][_0x8b45('0x5f')];return db[_0x8b45('0x50')]['find']({'where':{'id':_0x8e0df9[_0x8b45('0x53')]['id'],'UserId':null}})[_0x8b45('0x37')](handleEntityNotFound(_0x1f7dd0,null))[_0x8b45('0x37')](function(_0x1f68b3){if(_0x1f68b3){_0x1ddccc[_0x8b45('0x28')]=_0x1f68b3['get']({'plain':!![]});return db[_0x8b45('0x62')]['find']({'where':{'id':_0x1f68b3[_0x8b45('0x63')]}});}return null;})[_0x8b45('0x37')](handleEntityNotFound(_0x1f7dd0,null))[_0x8b45('0x37')](function(_0x4a0d94){if(_0x4a0d94){_0x1ddccc[_0x8b45('0x65')]=_0x4a0d94['get']({'plain':!![]});interaction_log['info'](_0x8b45('0x7c'),_0x8e0df9[_0x8b45('0x66')]['id'],_0x8e0df9[_0x8b45('0x66')][_0x8b45('0x39')],_0x8e0df9[_0x8b45('0x66')]['role'],_0x1ddccc['interaction']['id'],_0x8e0df9[_0x8b45('0x57')]?JSON[_0x8b45('0x25')](_0x8e0df9['body']):'null');return respondWithRpcPromise('RejectMessage',_0x8b45('0x7d'),_0x1ddccc);}return null;})[_0x8b45('0x37')](function(_0x51388b){var _0x44f9a4=_0x8b45('0x6a')+_0x51388b['message'][_0x8b45('0x6b')];return db[_0x8b45('0x6c')][_0x8b45('0x41')](_0x44f9a4,{'type':db['Sequelize']['QueryTypes'][_0x8b45('0x6e')],'raw':!![]})[_0x8b45('0x37')](function(_0x3143cb){return _0x3143cb;});})['then'](function(_0x2fbbb7){if(_0x2fbbb7){_0x1ddccc[_0x8b45('0x28')]['contact']=_0x2fbbb7[0x0];if(!_0x8e0df9[_0x8b45('0x57')]['UserId'])return;return db[_0x8b45('0x70')][_0x8b45('0x55')]({'where':{'id':_0x8e0df9[_0x8b45('0x57')][_0x8b45('0x5f')],'role':'agent'},'attributes':['id',_0x8b45('0x39'),_0x8b45('0x71'),_0x8b45('0x72'),_0x8b45('0x7e')],'raw':!![]});}return null;})[_0x8b45('0x37')](function(_0x368e22){if(!_0x368e22)return null;_0x1ddccc['message'][_0x8b45('0x60')]=_0x368e22;return _0x1ddccc;})[_0x8b45('0x37')](function(_0x4b25e5){if(_0x4b25e5){_0x4b25e5[_0x8b45('0x28')][_0x8b45('0x74')]=util[_0x8b45('0x5d')](_0x8b45('0x7f'),_0x8e0df9[_0x8b45('0x66')][_0x8b45('0x39')]);_0x4b25e5[_0x8b45('0x28')][_0x8b45('0x75')]=_0x1ddccc[_0x8b45('0x75')];_0x4b25e5[_0x8b45('0x28')][_0x8b45('0x76')]=_0x1ddccc[_0x8b45('0x75')];_0x4b25e5['message'][_0x8b45('0x77')]=_0x8b45('0x7b');respondWithRpcPromise(_0x8b45('0x78'),_0x8b45('0x78'),{'event':_0x8b45('0x80'),'message':_0x4b25e5['message']},client9002);return _0x1ddccc;}return null;})[_0x8b45('0x37')](respondWithResult(_0x1f7dd0,null))['catch'](handleError(_0x1f7dd0,null));};exports[_0x8b45('0x2b')]=function(_0x13225d,_0x14d3e9,_0x26a3e2){if(_0x13225d[_0x8b45('0x57')]['id']){delete _0x13225d[_0x8b45('0x57')]['id'];}var _0x58b26c;return db['SmsMessage'][_0x8b45('0x55')]({'where':{'id':_0x13225d['params']['id']}})['then'](handleEntityNotFound(_0x14d3e9,null))['then'](function(_0xc1fbc8){if(_0xc1fbc8){_0x58b26c=_0xc1fbc8;return db[_0x8b45('0x81')][_0x8b45('0x55')]({'where':{'id':_0xc1fbc8[_0x8b45('0x82')]}});}})[_0x8b45('0x37')](handleEntityNotFound(_0x14d3e9,null))[_0x8b45('0x37')](function(_0x33963e){if(_0x33963e){logger[_0x8b45('0x83')](_0x8b45('0x24'),_0x8b45('0x2b'),_0x8b45('0x84'),_0x33963e['type'],util[_0x8b45('0x85')](_0x13225d['body'],{'showHidden':![],'depth':null}));switch(_0x33963e[_0x8b45('0x3e')]){case'twilio':if(_0x13225d[_0x8b45('0x57')][_0x8b45('0x86')]&&_0x13225d['body'][_0x8b45('0x86')]===_0x58b26c['messageId']){return _0x58b26c[_0x8b45('0x36')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8b45('0x2b'),_0x8b45('0x87'),util[_0x8b45('0x85')](_0x13225d[_0x8b45('0x57')],{'showHidden':![],'depth':null}));}break;case _0x8b45('0x88'):if(_0x13225d[_0x8b45('0x57')][_0x8b45('0x89')]&&_0x13225d[_0x8b45('0x57')][_0x8b45('0x89')]===_0x58b26c[_0x8b45('0x8a')]&&_['indexOf']([_0x8b45('0x8b'),_0x8b45('0x8c')],_0x13225d[_0x8b45('0x57')]['Status'])>=0x0){return _0x58b26c['update']({'read':!![]});}else{logger[_0x8b45('0x26')](_0x8b45('0x8d'),_0x8b45('0x2b'),_0x8b45('0x8e'),util['inspect'](_0x13225d[_0x8b45('0x57')],{'showHidden':![],'depth':null}));}break;case _0x8b45('0x8f'):var _0x278019=_0x13225d['body']['results'][0x0];if(_0x278019[_0x8b45('0x2b')][_0x8b45('0x90')]===_0x8b45('0x91')){return _0x58b26c[_0x8b45('0x36')]({'read':!![]});}else{logger[_0x8b45('0x26')](_0x8b45('0x8d'),_0x8b45('0x2b'),'infobip',util['inspect'](_0x13225d[_0x8b45('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x58b26c;}})[_0x8b45('0x37')](respondWithResult(_0x14d3e9,null))[_0x8b45('0x52')](handleError(_0x14d3e9,null));};
\ No newline at end of file
index 14a3ef9..d774c96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52dd=['exports','events','../../mysqldb','SmsMessage','remove','emit','hook'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x52dd,0x1ba));var _0xd52d=function(_0x5cb4fc,_0x222fbb){_0x5cb4fc=_0x5cb4fc-0x0;var _0xe29f03=_0x52dd[_0x5cb4fc];return _0xe29f03;};'use strict';var EventEmitter=require(_0xd52d('0x0'));var SmsMessage=require(_0xd52d('0x1'))['db'][_0xd52d('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xd52d('0x3')};function emitEvent(_0x473e03){return function(_0x4c0b48,_0x1a0d67,_0x157657){SmsMessageEvents[_0xd52d('0x4')](_0x473e03+':'+_0x4c0b48['id'],_0x4c0b48);SmsMessageEvents[_0xd52d('0x4')](_0x473e03,_0x4c0b48);_0x157657(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0xd52d('0x5')](e,emitEvent(event));}}module[_0xd52d('0x6')]=SmsMessageEvents;
\ No newline at end of file
+var _0xe8a2=['hasOwnProperty','exports','SmsMessage','setMaxListeners','save','update','remove','emit'];(function(_0x5e701b,_0x365976){var _0x12f861=function(_0x24cd2c){while(--_0x24cd2c){_0x5e701b['push'](_0x5e701b['shift']());}};_0x12f861(++_0x365976);}(_0xe8a2,0x72));var _0x2e8a=function(_0x372751,_0x1af977){_0x372751=_0x372751-0x0;var _0x47c79f=_0xe8a2[_0x372751];return _0x47c79f;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db'][_0x2e8a('0x0')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x2e8a('0x1')](0x0);var events={'afterCreate':_0x2e8a('0x2'),'afterUpdate':_0x2e8a('0x3'),'afterDestroy':_0x2e8a('0x4')};function emitEvent(_0x800eaa){return function(_0x39da50,_0x4ff559,_0x43bb48){SmsMessageEvents[_0x2e8a('0x5')](_0x800eaa+':'+_0x39da50['id'],_0x39da50);SmsMessageEvents['emit'](_0x800eaa,_0x39da50);_0x43bb48(null);};}for(var e in events){if(events[_0x2e8a('0x6')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0x2e8a('0x7')]=SmsMessageEvents;
\ No newline at end of file
index 5eca9c5..079b4f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94bf=['apiKey','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','https://api.intelepeer.com/_rest/v4/app/sms/send','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','toLowerCase','direction','out','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','error','type','twilio','accountSid','authToken','phone','messages','create','remote','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','&password=','split','POST','session_key','total_sent','internal_order_id','deliveryReport','read','catch','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','queued_count','head','data','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','login','text','keys','length','createHash','signature=','GET','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell'];(function(_0x1eb54e,_0x491d90){var _0x2fce6f=function(_0x27a515){while(--_0x27a515){_0x1eb54e['push'](_0x1eb54e['shift']());}};_0x2fce6f(++_0x491d90);}(_0x94bf,0x187));var _0xf94b=function(_0x26d396,_0x23db7a){_0x26d396=_0x26d396-0x0;var _0x51fd61=_0x94bf[_0x26d396];return _0x51fd61;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf94b('0x0'))(_0xf94b('0x1'));var moment=require(_0xf94b('0x2'));var BPromise=require(_0xf94b('0x3'));var rp=require(_0xf94b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf94b('0x5'));var config=require(_0xf94b('0x6'));var attributes=require(_0xf94b('0x7'));module[_0xf94b('0x8')]=function(_0x34997c,_0x2bb3e0){return _0x34997c[_0xf94b('0x9')](_0xf94b('0xa'),attributes,{'tableName':_0xf94b('0xb'),'paranoid':![],'indexes':[{'name':_0xf94b('0xc'),'fields':['messageId']},{'name':_0xf94b('0xd'),'fields':[_0xf94b('0xe')],'type':_0xf94b('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x313a73,_0x450fa8,_0x5da4d3){var _0x44ca78=_0x34997c[_0xf94b('0x10')];var _0x4899cb=_0x313a73[_0xf94b('0x11')]({'plain':!![]});if(_0x4899cb['direction'][_0xf94b('0x12')]()==='in'||_0x4899cb[_0xf94b('0x13')][_0xf94b('0x12')]()===_0xf94b('0x14')&&!_0x4899cb['secret']&&!_[_0xf94b('0x15')](_0x4899cb[_0xf94b('0x16')])&&!_[_0xf94b('0x15')](_0x4899cb[_0xf94b('0x17')])){_0x44ca78[_0xf94b('0x18')][_0xf94b('0x19')]({'where':{'id':_0x4899cb[_0xf94b('0x17')]}})[_0xf94b('0x1a')](function(_0x23d64f){if(_0x23d64f){_0x23d64f[_0xf94b('0x1b')]({'lastMsgAt':_0x4899cb[_0xf94b('0x1c')],'lastMsgDirection':_0x4899cb[_0xf94b('0x13')]['toLowerCase']()});}})['catch'](function(_0xab27e7){console[_0xf94b('0x1d')](_0xab27e7);});}if(_0x4899cb[_0xf94b('0x13')]===_0xf94b('0x14')&&!_0x4899cb['secret']){var _0x26933c;_0x44ca78['SmsAccount']['find']({'where':{'id':_0x4899cb['SmsAccountId']},'raw':!![]})[_0xf94b('0x1a')](function(_0x3e167e){_0x26933c=_0x3e167e;if(_0x26933c&&_0x26933c[_0xf94b('0x1e')]){switch(_0x26933c[_0xf94b('0x1e')]){case _0xf94b('0x1f'):var _0x3b5ac1=require(_0xf94b('0x1f'));if(_0x26933c[_0xf94b('0x20')]&&_0x26933c[_0xf94b('0x21')]&&_0x26933c[_0xf94b('0x22')]){var _0xff2abb=new _0x3b5ac1(_0x26933c[_0xf94b('0x20')],_0x26933c[_0xf94b('0x21')]);_0xff2abb[_0xf94b('0x23')][_0xf94b('0x24')]({'body':_0x4899cb[_0xf94b('0xe')],'to':_0x4899cb[_0xf94b('0x22')],'from':_0x26933c[_0xf94b('0x22')],'statusCallback':_0x26933c[_0xf94b('0x25')]+'/api/sms/messages/'+_0x4899cb['id']+_0xf94b('0x26')+_0x26933c[_0xf94b('0x27')]})[_0xf94b('0x1a')](function(_0x4696ee){if(_0x4696ee[_0xf94b('0x28')]){return _0x313a73[_0xf94b('0x1b')]({'messageId':_0x4696ee['sid']});}})['catch'](function(_0x53224a){logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x1f'),util[_0xf94b('0x2b')](_0x53224a,{'showHidden':![],'depth':null}));});}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xf94b('0x2c'):var _0x52d035=_0xf94b('0x2d');if(_0x26933c[_0xf94b('0x2e')]&&_0x26933c[_0xf94b('0x2f')]){var _0x4913f6={'recipient':[_0x4899cb[_0xf94b('0x22')]],'message':_0x4899cb['body'],'message_type':_0x26933c[_0xf94b('0x30')]};if(_0x26933c[_0xf94b('0x30')]&&_0x26933c['smsMethod']!=='SI'){_0x4913f6[_0xf94b('0x31')]=_0x26933c['phone'];}var _0x2a5df4={'url':_0x52d035+'login?username='+_0x26933c[_0xf94b('0x2e')]+_0xf94b('0x32')+_0x26933c['password'],'method':'GET'};rp(_0x2a5df4)[_0xf94b('0x1a')](function(_0x330a8f){var _0x3778a8=_0x330a8f[_0xf94b('0x33')](';');var _0x102b67={'user_key':_0x3778a8[0x0],'session_key':_0x3778a8[0x1]};_0x2a5df4={'url':_0x52d035+'sms','method':_0xf94b('0x34'),'headers':{'user_key':_0x102b67['user_key'],'Session_key':_0x102b67[_0xf94b('0x35')]},'json':!![],'body':_0x4913f6};return rp(_0x2a5df4);})['then'](function(_0x2bf0d1){if(_0x2bf0d1[_0xf94b('0x36')]>=0x1){var _0x24e4d9={'messageId':_0x2bf0d1[_0xf94b('0x37')]};if(_0x26933c['smsMethod']!=='GP'||!_0x26933c[_0xf94b('0x38')]){_0x24e4d9[_0xf94b('0x39')]=!![];}return _0x313a73[_0xf94b('0x1b')](_0x24e4d9);}else{return logger['error'](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x2c'),util['inspect'](_0x2bf0d1,{'showHidden':![],'depth':null}));}})[_0xf94b('0x3a')](function(_0x1d90ca){return logger[_0xf94b('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),_0xf94b('0x2c'),util[_0xf94b('0x2b')](_0x1d90ca,{'showHidden':![],'depth':null}));});}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x2c'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xf94b('0x3b'):if(_0x26933c[_0xf94b('0x21')]){var _0x2706d2={'recipient':_0x4899cb['phone'],'message':_0x4899cb[_0xf94b('0xe')],'sender':_0x26933c[_0xf94b('0x3c')]||_0x26933c[_0xf94b('0x22')],'authorization':_0x26933c[_0xf94b('0x21')]};var _0x450fa8={'method':_0xf94b('0x34'),'uri':_0xf94b('0x3d'),'body':_0x2706d2,'json':!![]};rp(_0x450fa8)[_0xf94b('0x1a')](function(_0x18ff98){var _0x27eea9={'messageId':_0x18ff98[_0xf94b('0x3e')]};if(!_0x26933c[_0xf94b('0x38')]){_0x27eea9[_0xf94b('0x39')]=!![];}return _0x313a73['update'](_0x27eea9);})[_0xf94b('0x3a')](function(_0x544d5a){logger[_0xf94b('0x1d')](_0xf94b('0x29'),'afterCreate',_0xf94b('0x3b'),util[_0xf94b('0x2b')](_0x544d5a,{'showHidden':![],'depth':null}));});}else{logger[_0xf94b('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),_0xf94b('0x3b'),_0xf94b('0x3f'));}break;case _0xf94b('0x40'):if(_0x26933c[_0xf94b('0x2e')]&&_0x26933c[_0xf94b('0x2f')]){var _0x2706d2={'messages':[{'source':_0xf94b('0x41'),'to':_0x4899cb['phone'],'body':_0x4899cb['body'],'from':_0x26933c[_0xf94b('0x3c')]||_0x26933c[_0xf94b('0x22')]}]};var _0x296619=util[_0xf94b('0x42')](_0xf94b('0x43'),_0x26933c[_0xf94b('0x2e')],_0x26933c[_0xf94b('0x2f')]);var _0x450fa8={'method':'POST','uri':_0xf94b('0x44'),'body':_0x2706d2,'headers':{'Authorization':util[_0xf94b('0x42')](_0xf94b('0x45'),new Buffer(_0x296619)[_0xf94b('0x46')](_0xf94b('0x47')))},'json':!![]};rp(_0x450fa8)[_0xf94b('0x1a')](function(_0xedc730){if(_0xedc730[_0xf94b('0x48')]>=0xc8&&_0xedc730[_0xf94b('0x48')]<=0xce){if(_0xedc730['data']&&_0xedc730['data'][_0xf94b('0x49')]>0x0){var _0x1bae38=_[_0xf94b('0x4a')](_0xedc730[_0xf94b('0x4b')][_0xf94b('0x23')]);var _0x464ccb={'messageId':_0x1bae38[_0xf94b('0x4c')]};if(!_0x26933c[_0xf94b('0x38')]){_0x464ccb[_0xf94b('0x39')]=!![];}return _0x313a73['update'](_0x464ccb);}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x4d'),util[_0xf94b('0x2b')](_0xedc730,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xf94b('0x29'),'afterCreate',_0xf94b('0x4d'),util[_0xf94b('0x2b')](_0xedc730,{'showHidden':![],'depth':null}));}})[_0xf94b('0x3a')](function(_0x24297d){logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x4d'),util[_0xf94b('0x2b')](_0x24297d,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),_0xf94b('0x4d'),_0xf94b('0x4e'));}break;case _0xf94b('0x4f'):if(_0x26933c[_0xf94b('0x50')]&&_0x26933c[_0xf94b('0x21')]){var _0x2706d2={'dst':_0x4899cb['phone'],'text':_0x4899cb[_0xf94b('0xe')],'src':_0x26933c[_0xf94b('0x3c')]||_0x26933c[_0xf94b('0x22')],'url':_0x26933c[_0xf94b('0x25')]+_0xf94b('0x51')+_0x4899cb['id']+_0xf94b('0x26')+_0x26933c[_0xf94b('0x27')]};var _0x296619=util[_0xf94b('0x42')](_0xf94b('0x43'),_0x26933c[_0xf94b('0x50')],_0x26933c[_0xf94b('0x21')]);var _0x450fa8={'method':'POST','uri':util['format'](_0xf94b('0x52'),_0x26933c[_0xf94b('0x50')]),'body':_0x2706d2,'headers':{'Authorization':util[_0xf94b('0x42')]('Basic\x20%s',new Buffer(_0x296619)[_0xf94b('0x46')](_0xf94b('0x47')))},'json':!![]};rp(_0x450fa8)[_0xf94b('0x1a')](function(_0x1ea3ba){var _0x23b2c1={'messageId':_0x1ea3ba[_0xf94b('0x53')][0x0]};return _0x313a73[_0xf94b('0x1b')](_0x23b2c1);})[_0xf94b('0x3a')](function(_0x44dbf2){logger['error'](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x4f'),util[_0xf94b('0x2b')](_0x44dbf2,{'showHidden':![],'depth':null}));});}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x4f'),_0xf94b('0x54'));}break;case _0xf94b('0x55'):if(_0x26933c[_0xf94b('0x2e')]&&_0x26933c['password']){if(_0x26933c[_0xf94b('0x56')]){var _0x278ebc={'method':_0xf94b('0x34'),'uri':_0x26933c['baseUrl']+_0xf94b('0x57'),'body':{'username':_0x26933c[_0xf94b('0x2e')],'password':_0x26933c[_0xf94b('0x2f')]},'json':!![]};return rp(_0x278ebc)[_0xf94b('0x1a')](function(_0xa63a4b){var _0xb266a={'method':'POST','uri':_0x26933c[_0xf94b('0x56')]+_0xf94b('0x58'),'body':{'messages':[{'from':_0x26933c[_0xf94b('0x22')],'destinations':[{'to':_0x4899cb[_0xf94b('0x22')]}],'text':_0x4899cb[_0xf94b('0xe')],'notifyUrl':_0x26933c[_0xf94b('0x25')]+_0xf94b('0x51')+_0x4899cb['id']+'/status?token='+_0x26933c[_0xf94b('0x27')],'notifyContentType':_0xf94b('0x59'),'callbackData':_0x26933c[_0xf94b('0x22')]+';'+_0x4899cb['body']}]},'headers':{'Authorization':_0xf94b('0x5a')+_0xa63a4b[_0xf94b('0x27')]},'json':!![]};return rp(_0xb266a)[_0xf94b('0x1a')](function(_0x39859f){if(_0x39859f[_0xf94b('0x23')]){var _0x41078f={'messageId':_0x39859f[_0xf94b('0x23')][0x0][_0xf94b('0xc')]};if(!_0x26933c['deliveryReport']){_0x41078f[_0xf94b('0x39')]=!![];}return _0x313a73['update'](_0x41078f);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),_0xf94b('0x55'),util[_0xf94b('0x2b')](_0x39859f,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x1431bc){return logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x55'),util[_0xf94b('0x2b')](_0x1431bc,{'showHidden':![],'depth':null}));});}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x55'),_0xf94b('0x5b'));}}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x55'),_0xf94b('0x4e'));}break;case _0xf94b('0x5c'):var _0x4cf705=require(_0xf94b('0x5d'));if(_0x26933c['apiKey']){var _0xba002e={};_0xba002e[_0xf94b('0x5e')]=_0x26933c['username'];_0xba002e[_0xf94b('0x22')]=_0x4899cb[_0xf94b('0x22')];_0xba002e['sender']=_0x26933c['phone'];_0xba002e[_0xf94b('0x5f')]=_0x4899cb['body'];_0xba002e['timestamp']=+new Date();var _0x2fdf83='';var _0x55dd6f='';var _0x12f6ed=Object[_0xf94b('0x60')](_0xba002e);_0x12f6ed['sort']();for(var _0x480ffc=0x0;_0x480ffc<_0x12f6ed[_0xf94b('0x61')];_0x480ffc++){if(_0x2fdf83!=''){_0x2fdf83+='&';}_0x2fdf83+=_0x12f6ed[_0x480ffc]+'='+encodeURIComponent(_0xba002e[_0x12f6ed[_0x480ffc]]);_0x55dd6f+=_0xba002e[_0x12f6ed[_0x480ffc]];}_0x55dd6f+=_0x26933c['apiKey'];_0x55dd6f=_0x4cf705[_0xf94b('0x62')]('md5')['update'](_0x55dd6f)['digest']('hex');if(_0x2fdf83!==''){_0x2fdf83+='&';}_0x2fdf83+=_0xf94b('0x63')+_0x55dd6f;var _0x2a5df4={'method':_0xf94b('0x64'),'uri':_0x26933c[_0xf94b('0x56')]+_0xf94b('0x65')+_0x2fdf83,'json':!![]};return rp(_0x2a5df4)[_0xf94b('0x1a')](function(_0x103aa7){var _0x26195b=Object[_0xf94b('0x60')](_0x103aa7);if(_0x103aa7[_0x26195b[0x0]][_0xf94b('0x1d')]&&parseInt(_0x103aa7[_0x26195b[0x0]][_0xf94b('0x1d')])===0x0){var _0x35e80a={'messageId':_0x103aa7[_0x26195b[0x0]][_0xf94b('0x66')]};if(!_0x26933c[_0xf94b('0x38')]){_0x35e80a[_0xf94b('0x39')]=!![];}return _0x313a73[_0xf94b('0x1b')](_0x35e80a);}else{return logger[_0xf94b('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),_0xf94b('0x5c'),util[_0xf94b('0x2b')](_0x103aa7[_0xf94b('0x1d')],{'showHidden':![],'depth':null}));}})[_0xf94b('0x3a')](function(_0x21dc91){return logger[_0xf94b('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),_0xf94b('0x5c'),util[_0xf94b('0x2b')](_0x21dc91,{'showHidden':![],'depth':null}));});}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),'afterCreate',_0xf94b('0x5c'),_0xf94b('0x67'));}break;case _0xf94b('0x68'):if(_0x26933c[_0xf94b('0x69')]){var _0x499e8b={'method':_0xf94b('0x34'),'uri':_0xf94b('0x6a'),'headers':{'Authorization':_0x26933c['apiKey']},'body':{'content':_0x4899cb[_0xf94b('0xe')],'to':[_0x4899cb['phone']],'from':_0x26933c[_0xf94b('0x22')],'binary':![],'clientMessageId':_0xf94b('0x6b'),'charset':_0xf94b('0x6c')},'json':!![]};rp(_0x499e8b)[_0xf94b('0x1a')](function(_0x56b808){if(!_0x56b808[_0xf94b('0x1d')]){var _0x43fe7a={'messageId':_0x56b808['messages'][0x0][_0xf94b('0x6d')]};if(!_0x26933c['deliveryReport']){_0x43fe7a[_0xf94b('0x39')]=!![];}return _0x313a73[_0xf94b('0x1b')](_0x43fe7a);}else{return logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),_0xf94b('0x68'),util[_0xf94b('0x2b')](_0x56b808[_0xf94b('0x1d')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x5a53b3){return logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),'clickatell',util['inspect'](_0x5a53b3,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),'clickatell',_0xf94b('0x67'));}break;case _0xf94b('0x6e'):if(_0x26933c['username']&&_0x26933c[_0xf94b('0x2f')]){var _0x296619=util[_0xf94b('0x42')](_0xf94b('0x43'),_0x26933c[_0xf94b('0x2e')],_0x26933c[_0xf94b('0x2f')]);var _0x450fa8={'method':_0xf94b('0x34'),'uri':_0xf94b('0x6f')+_0x26933c[_0xf94b('0x70')]+_0xf94b('0x71'),'body':{'to':[_0x4899cb[_0xf94b('0x22')]],'text':_0x4899cb[_0xf94b('0xe')],'from':_0x26933c['phone'],'applicationId':_0x26933c[_0xf94b('0x72')]},'headers':{'Authorization':util[_0xf94b('0x42')](_0xf94b('0x45'),new Buffer(_0x296619)['toString'](_0xf94b('0x47')))},'json':!![]};rp(_0x450fa8)[_0xf94b('0x1a')](function(_0x36f45c){if(_0x36f45c['id']){var _0x3207f1={'messageId':_0x36f45c['id']};return _0x313a73['update'](_0x3207f1);}else{logger['error'](_0xf94b('0x29'),'afterCreate','bandwidth',util[_0xf94b('0x2b')](_0x36f45c,{'showHidden':![],'depth':null}));}})[_0xf94b('0x3a')](function(_0x48d5c4){logger[_0xf94b('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf94b('0x2a'),_0xf94b('0x6e'),util['inspect'](_0x48d5c4,{'showHidden':![],'depth':null}));});}else{logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),'bandwidth',_0xf94b('0x4e'));}break;case'intelepeer':if(_0x26933c[_0xf94b('0x69')]){var _0x513c06={};var _0x2a5df4={'method':_0xf94b('0x34'),'uri':_0xf94b('0x73'),'headers':{'Authorization':'Bearer\x20'+_0x26933c[_0xf94b('0x69')],'Content-Type':'application/json'},'body':{'from':_0x26933c['phone'],'to':_0x4899cb['phone'],'text':_0x4899cb[_0xf94b('0xe')]},'json':!![]};return rp(_0x2a5df4)[_0xf94b('0x1a')](function(_0x220909){if(_0x220909['code']==0xca){_0x513c06[_0xf94b('0x74')]=_0x220909;var _0xb1ad7a={'method':_0xf94b('0x34'),'uri':_0xf94b('0x75'),'headers':{'Authorization':_0xf94b('0x76')+_0x26933c['apiKey'],'Content-Type':_0xf94b('0x59')},'body':{'refid':_0x513c06[_0xf94b('0x74')]['refid']},'json':!![]};return rp(_0xb1ad7a)['then'](function(_0x274283){_0x513c06['status']=_0x274283;var _0x4a659b={'messageId':_0x513c06[_0xf94b('0x74')]['refid'],'read':!![]};return _0x313a73[_0xf94b('0x1b')](_0x4a659b);});}else{return logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),'intelepeer',util['inspect'](_0x220909,{'showHidden':![],'depth':null}));}})['catch'](function(_0x2caf67){return logger[_0xf94b('0x1d')](_0xf94b('0x29'),_0xf94b('0x2a'),'intelepeer',util['inspect'](_0x2caf67,{'showHidden':![],'depth':null}));});}else{return logger[_0xf94b('0x1d')](_0xf94b('0x29'),'afterCreate',_0xf94b('0x77'),_0xf94b('0x78'));}break;}}})[_0xf94b('0x79')](function(){_0x5da4d3();});}else{_0x5da4d3();}}},'charset':_0xf94b('0x7a'),'collate':_0xf94b('0x7b')});};
\ No newline at end of file
+var _0x2aee=['queued_count','head','message_id','clickSend','plivo','/status?token=','authId','https://api.plivo.com/v1/Account/%s/Message/','toString','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','text','timestamp','keys','sort','length','apiKey','createHash','md5','signature=','/external/get/send.php?','id_sms','csc','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','accountId','/messages','applicationId','bandwidth','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','refid','status','message','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','define','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','direction','toLowerCase','secret','UserId','isNil','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','catch','error','out','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','messages','create','phone','remote','/api/sms/messages/','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','total_sent','internal_order_id','read','Missing\x20parameters:\x20username,\x20password','connectel','requestid','deliveryReport','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','base64','http_code','data'];(function(_0x4f5dd9,_0x30b8c5){var _0x3c8624=function(_0x3d7f06){while(--_0x3d7f06){_0x4f5dd9['push'](_0x4f5dd9['shift']());}};_0x3c8624(++_0x30b8c5);}(_0x2aee,0x19c));var _0xe2ae=function(_0x29771f,_0x1189ae){_0x29771f=_0x29771f-0x0;var _0x279baf=_0x2aee[_0x29771f];return _0x279baf;};'use strict';var _=require(_0xe2ae('0x0'));var util=require(_0xe2ae('0x1'));var logger=require(_0xe2ae('0x2'))(_0xe2ae('0x3'));var moment=require(_0xe2ae('0x4'));var BPromise=require(_0xe2ae('0x5'));var rp=require(_0xe2ae('0x6'));var fs=require('fs');var path=require(_0xe2ae('0x7'));var rimraf=require(_0xe2ae('0x8'));var config=require('../../config/environment');var attributes=require(_0xe2ae('0x9'));module['exports']=function(_0x150201,_0x31df4f){return _0x150201[_0xe2ae('0xa')]('SmsMessage',attributes,{'tableName':_0xe2ae('0xb'),'paranoid':![],'indexes':[{'name':_0xe2ae('0xc'),'fields':['messageId']},{'name':_0xe2ae('0xd'),'fields':[_0xe2ae('0xe')],'type':_0xe2ae('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1116f3,_0xef294f,_0x5c5479){var _0x26cd00=_0x150201['models'];var _0xaba106=_0x1116f3['get']({'plain':!![]});if(_0xaba106[_0xe2ae('0x10')][_0xe2ae('0x11')]()==='in'||_0xaba106[_0xe2ae('0x10')]['toLowerCase']()==='out'&&!_0xaba106[_0xe2ae('0x12')]&&!_['isNil'](_0xaba106[_0xe2ae('0x13')])&&!_[_0xe2ae('0x14')](_0xaba106[_0xe2ae('0x15')])){_0x26cd00[_0xe2ae('0x16')][_0xe2ae('0x17')]({'where':{'id':_0xaba106[_0xe2ae('0x15')]}})[_0xe2ae('0x18')](function(_0x24f16){if(_0x24f16){_0x24f16[_0xe2ae('0x19')]({'lastMsgAt':_0xaba106[_0xe2ae('0x1a')],'lastMsgDirection':_0xaba106[_0xe2ae('0x10')][_0xe2ae('0x11')]()});}})[_0xe2ae('0x1b')](function(_0x2b0f7d){console[_0xe2ae('0x1c')](_0x2b0f7d);});}if(_0xaba106[_0xe2ae('0x10')]===_0xe2ae('0x1d')&&!_0xaba106[_0xe2ae('0x12')]){var _0x2e6845;_0x26cd00[_0xe2ae('0x1e')][_0xe2ae('0x1f')]({'where':{'id':_0xaba106[_0xe2ae('0x20')]},'raw':!![]})['then'](function(_0x5cd317){_0x2e6845=_0x5cd317;if(_0x2e6845&&_0x2e6845[_0xe2ae('0x21')]){switch(_0x2e6845[_0xe2ae('0x21')]){case _0xe2ae('0x22'):var _0x3a6d10=require(_0xe2ae('0x22'));if(_0x2e6845[_0xe2ae('0x23')]&&_0x2e6845[_0xe2ae('0x24')]&&_0x2e6845['phone']){var _0x4e33f1=new _0x3a6d10(_0x2e6845[_0xe2ae('0x23')],_0x2e6845[_0xe2ae('0x24')]);_0x4e33f1[_0xe2ae('0x25')][_0xe2ae('0x26')]({'body':_0xaba106[_0xe2ae('0xe')],'to':_0xaba106[_0xe2ae('0x27')],'from':_0x2e6845[_0xe2ae('0x27')],'statusCallback':_0x2e6845[_0xe2ae('0x28')]+_0xe2ae('0x29')+_0xaba106['id']+'/status?token='+_0x2e6845[_0xe2ae('0x2a')]})[_0xe2ae('0x18')](function(_0x309ee2){if(_0x309ee2[_0xe2ae('0x2b')]){return _0x1116f3[_0xe2ae('0x19')]({'messageId':_0x309ee2['sid']});}})['catch'](function(_0x3a3b37){logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),'afterCreate','twilio',util[_0xe2ae('0x2d')](_0x3a3b37,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),'twilio',_0xe2ae('0x2f'));}break;case _0xe2ae('0x30'):var _0x2c4ce4='https://api.skebby.it/API/v1.0/REST/';if(_0x2e6845[_0xe2ae('0x31')]&&_0x2e6845[_0xe2ae('0x32')]){var _0x3664f2={'recipient':[_0xaba106['phone']],'message':_0xaba106[_0xe2ae('0xe')],'message_type':_0x2e6845[_0xe2ae('0x33')]};if(_0x2e6845['smsMethod']&&_0x2e6845[_0xe2ae('0x33')]!=='SI'){_0x3664f2[_0xe2ae('0x34')]=_0x2e6845[_0xe2ae('0x27')];}var _0x4d49ed={'url':_0x2c4ce4+_0xe2ae('0x35')+_0x2e6845[_0xe2ae('0x31')]+_0xe2ae('0x36')+_0x2e6845['password'],'method':_0xe2ae('0x37')};rp(_0x4d49ed)['then'](function(_0xde63f7){var _0x2b9ba7=_0xde63f7[_0xe2ae('0x38')](';');var _0xdf1479={'user_key':_0x2b9ba7[0x0],'session_key':_0x2b9ba7[0x1]};_0x4d49ed={'url':_0x2c4ce4+_0xe2ae('0x39'),'method':_0xe2ae('0x3a'),'headers':{'user_key':_0xdf1479['user_key'],'Session_key':_0xdf1479['session_key']},'json':!![],'body':_0x3664f2};return rp(_0x4d49ed);})[_0xe2ae('0x18')](function(_0x519169){if(_0x519169[_0xe2ae('0x3b')]>=0x1){var _0x13aca3={'messageId':_0x519169[_0xe2ae('0x3c')]};if(_0x2e6845[_0xe2ae('0x33')]!=='GP'||!_0x2e6845['deliveryReport']){_0x13aca3[_0xe2ae('0x3d')]=!![];}return _0x1116f3[_0xe2ae('0x19')](_0x13aca3);}else{return logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),'skebby',util[_0xe2ae('0x2d')](_0x519169,{'showHidden':![],'depth':null}));}})[_0xe2ae('0x1b')](function(_0x4ef9e8){return logger[_0xe2ae('0x1c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xe2ae('0x2e'),_0xe2ae('0x30'),util[_0xe2ae('0x2d')](_0x4ef9e8,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xe2ae('0x2e'),_0xe2ae('0x30'),_0xe2ae('0x3e'));}break;case _0xe2ae('0x3f'):if(_0x2e6845[_0xe2ae('0x24')]){var _0x2b10f5={'recipient':_0xaba106[_0xe2ae('0x27')],'message':_0xaba106[_0xe2ae('0xe')],'sender':_0x2e6845['senderString']||_0x2e6845[_0xe2ae('0x27')],'authorization':_0x2e6845[_0xe2ae('0x24')]};var _0xef294f={'method':_0xe2ae('0x3a'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x2b10f5,'json':!![]};rp(_0xef294f)[_0xe2ae('0x18')](function(_0x4aa0d3){var _0x341fac={'messageId':_0x4aa0d3[_0xe2ae('0x40')]};if(!_0x2e6845[_0xe2ae('0x41')]){_0x341fac[_0xe2ae('0x3d')]=!![];}return _0x1116f3[_0xe2ae('0x19')](_0x341fac);})[_0xe2ae('0x1b')](function(_0x53798e){logger[_0xe2ae('0x1c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xe2ae('0x2e'),_0xe2ae('0x3f'),util[_0xe2ae('0x2d')](_0x53798e,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xe2ae('0x2c'),'afterCreate',_0xe2ae('0x3f'),_0xe2ae('0x42'));}break;case'clicksend':if(_0x2e6845[_0xe2ae('0x31')]&&_0x2e6845[_0xe2ae('0x32')]){var _0x2b10f5={'messages':[{'source':_0xe2ae('0x43'),'to':_0xaba106['phone'],'body':_0xaba106[_0xe2ae('0xe')],'from':_0x2e6845[_0xe2ae('0x44')]||_0x2e6845['phone']}]};var _0x389dca=util[_0xe2ae('0x45')](_0xe2ae('0x46'),_0x2e6845['username'],_0x2e6845[_0xe2ae('0x32')]);var _0xef294f={'method':'POST','uri':_0xe2ae('0x47'),'body':_0x2b10f5,'headers':{'Authorization':util['format'](_0xe2ae('0x48'),new Buffer(_0x389dca)['toString'](_0xe2ae('0x49')))},'json':!![]};rp(_0xef294f)[_0xe2ae('0x18')](function(_0x358759){if(_0x358759[_0xe2ae('0x4a')]>=0xc8&&_0x358759['http_code']<=0xce){if(_0x358759[_0xe2ae('0x4b')]&&_0x358759[_0xe2ae('0x4b')][_0xe2ae('0x4c')]>0x0){var _0x39a6a0=_[_0xe2ae('0x4d')](_0x358759['data'][_0xe2ae('0x25')]);var _0x1b8fc8={'messageId':_0x39a6a0[_0xe2ae('0x4e')]};if(!_0x2e6845[_0xe2ae('0x41')]){_0x1b8fc8[_0xe2ae('0x3d')]=!![];}return _0x1116f3['update'](_0x1b8fc8);}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x4f'),util[_0xe2ae('0x2d')](_0x358759,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xe2ae('0x2c'),_0xe2ae('0x2e'),'clickSend',util[_0xe2ae('0x2d')](_0x358759,{'showHidden':![],'depth':null}));}})[_0xe2ae('0x1b')](function(_0x360202){logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x4f'),util[_0xe2ae('0x2d')](_0x360202,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xe2ae('0x2e'),'clickSend',_0xe2ae('0x3e'));}break;case _0xe2ae('0x50'):if(_0x2e6845['authId']&&_0x2e6845[_0xe2ae('0x24')]){var _0x2b10f5={'dst':_0xaba106[_0xe2ae('0x27')],'text':_0xaba106[_0xe2ae('0xe')],'src':_0x2e6845['senderString']||_0x2e6845[_0xe2ae('0x27')],'url':_0x2e6845[_0xe2ae('0x28')]+_0xe2ae('0x29')+_0xaba106['id']+_0xe2ae('0x51')+_0x2e6845[_0xe2ae('0x2a')]};var _0x389dca=util[_0xe2ae('0x45')]('%s:%s',_0x2e6845[_0xe2ae('0x52')],_0x2e6845[_0xe2ae('0x24')]);var _0xef294f={'method':_0xe2ae('0x3a'),'uri':util[_0xe2ae('0x45')](_0xe2ae('0x53'),_0x2e6845['authId']),'body':_0x2b10f5,'headers':{'Authorization':util[_0xe2ae('0x45')](_0xe2ae('0x48'),new Buffer(_0x389dca)[_0xe2ae('0x54')](_0xe2ae('0x49')))},'json':!![]};rp(_0xef294f)[_0xe2ae('0x18')](function(_0x638427){var _0xe8533c={'messageId':_0x638427['message_uuid'][0x0]};return _0x1116f3['update'](_0xe8533c);})[_0xe2ae('0x1b')](function(_0x551976){logger['error'](_0xe2ae('0x2c'),_0xe2ae('0x2e'),'plivo',util['inspect'](_0x551976,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x50'),_0xe2ae('0x55'));}break;case _0xe2ae('0x56'):if(_0x2e6845[_0xe2ae('0x31')]&&_0x2e6845['password']){if(_0x2e6845[_0xe2ae('0x57')]){var _0x44d794={'method':_0xe2ae('0x3a'),'uri':_0x2e6845[_0xe2ae('0x57')]+_0xe2ae('0x58'),'body':{'username':_0x2e6845[_0xe2ae('0x31')],'password':_0x2e6845[_0xe2ae('0x32')]},'json':!![]};return rp(_0x44d794)['then'](function(_0x2c95b3){var _0x164a93={'method':_0xe2ae('0x3a'),'uri':_0x2e6845['baseUrl']+_0xe2ae('0x59'),'body':{'messages':[{'from':_0x2e6845[_0xe2ae('0x27')],'destinations':[{'to':_0xaba106[_0xe2ae('0x27')]}],'text':_0xaba106[_0xe2ae('0xe')],'notifyUrl':_0x2e6845[_0xe2ae('0x28')]+_0xe2ae('0x29')+_0xaba106['id']+_0xe2ae('0x51')+_0x2e6845[_0xe2ae('0x2a')],'notifyContentType':_0xe2ae('0x5a'),'callbackData':_0x2e6845[_0xe2ae('0x27')]+';'+_0xaba106['body']}]},'headers':{'Authorization':_0xe2ae('0x5b')+_0x2c95b3['token']},'json':!![]};return rp(_0x164a93)['then'](function(_0x33642c){if(_0x33642c[_0xe2ae('0x25')]){var _0x124500={'messageId':_0x33642c[_0xe2ae('0x25')][0x0][_0xe2ae('0xc')]};if(!_0x2e6845[_0xe2ae('0x41')]){_0x124500['read']=!![];}return _0x1116f3[_0xe2ae('0x19')](_0x124500);}else{return logger[_0xe2ae('0x1c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xe2ae('0x2e'),'infobip',util[_0xe2ae('0x2d')](_0x33642c,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x2759c7){return logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),'afterCreate',_0xe2ae('0x56'),util['inspect'](_0x2759c7,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x56'),_0xe2ae('0x5c'));}}else{logger['error'](_0xe2ae('0x2c'),'afterCreate','infobip',_0xe2ae('0x3e'));}break;case'csc':var _0x4861d4=require('crypto');if(_0x2e6845['apiKey']){var _0x5cbacb={};_0x5cbacb['login']=_0x2e6845[_0xe2ae('0x31')];_0x5cbacb[_0xe2ae('0x27')]=_0xaba106[_0xe2ae('0x27')];_0x5cbacb['sender']=_0x2e6845['phone'];_0x5cbacb[_0xe2ae('0x5d')]=_0xaba106['body'];_0x5cbacb[_0xe2ae('0x5e')]=+new Date();var _0x1c47a0='';var _0x4e0b81='';var _0x42795d=Object[_0xe2ae('0x5f')](_0x5cbacb);_0x42795d[_0xe2ae('0x60')]();for(var _0x561a34=0x0;_0x561a34<_0x42795d[_0xe2ae('0x61')];_0x561a34++){if(_0x1c47a0!=''){_0x1c47a0+='&';}_0x1c47a0+=_0x42795d[_0x561a34]+'='+encodeURIComponent(_0x5cbacb[_0x42795d[_0x561a34]]);_0x4e0b81+=_0x5cbacb[_0x42795d[_0x561a34]];}_0x4e0b81+=_0x2e6845[_0xe2ae('0x62')];_0x4e0b81=_0x4861d4[_0xe2ae('0x63')](_0xe2ae('0x64'))[_0xe2ae('0x19')](_0x4e0b81)['digest']('hex');if(_0x1c47a0!==''){_0x1c47a0+='&';}_0x1c47a0+=_0xe2ae('0x65')+_0x4e0b81;var _0x4d49ed={'method':_0xe2ae('0x37'),'uri':_0x2e6845[_0xe2ae('0x57')]+_0xe2ae('0x66')+_0x1c47a0,'json':!![]};return rp(_0x4d49ed)['then'](function(_0x3d3a58){var _0x5ebf70=Object[_0xe2ae('0x5f')](_0x3d3a58);if(_0x3d3a58[_0x5ebf70[0x0]][_0xe2ae('0x1c')]&&parseInt(_0x3d3a58[_0x5ebf70[0x0]][_0xe2ae('0x1c')])===0x0){var _0x28355a={'messageId':_0x3d3a58[_0x5ebf70[0x0]][_0xe2ae('0x67')]};if(!_0x2e6845[_0xe2ae('0x41')]){_0x28355a[_0xe2ae('0x3d')]=!![];}return _0x1116f3[_0xe2ae('0x19')](_0x28355a);}else{return logger[_0xe2ae('0x1c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xe2ae('0x2e'),_0xe2ae('0x68'),util[_0xe2ae('0x2d')](_0x3d3a58[_0xe2ae('0x1c')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x40bd48){return logger['error'](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x68'),util['inspect'](_0x40bd48,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),'afterCreate',_0xe2ae('0x68'),'Missing\x20parameters:\x20apiKey');}break;case _0xe2ae('0x69'):if(_0x2e6845[_0xe2ae('0x62')]){var _0x44bba8={'method':_0xe2ae('0x3a'),'uri':_0xe2ae('0x6a'),'headers':{'Authorization':_0x2e6845[_0xe2ae('0x62')]},'body':{'content':_0xaba106[_0xe2ae('0xe')],'to':[_0xaba106['phone']],'from':_0x2e6845[_0xe2ae('0x27')],'binary':![],'clientMessageId':_0xe2ae('0x6b'),'charset':_0xe2ae('0x6c')},'json':!![]};rp(_0x44bba8)[_0xe2ae('0x18')](function(_0x3d4cf9){if(!_0x3d4cf9[_0xe2ae('0x1c')]){var _0x2fbeb8={'messageId':_0x3d4cf9[_0xe2ae('0x25')][0x0][_0xe2ae('0x6d')]};if(!_0x2e6845['deliveryReport']){_0x2fbeb8['read']=!![];}return _0x1116f3[_0xe2ae('0x19')](_0x2fbeb8);}else{return logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),'afterCreate',_0xe2ae('0x69'),util['inspect'](_0x3d4cf9[_0xe2ae('0x1c')],{'showHidden':![],'depth':null}));}})[_0xe2ae('0x1b')](function(_0x5c0191){return logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x69'),util[_0xe2ae('0x2d')](_0x5c0191,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x69'),'Missing\x20parameters:\x20apiKey');}break;case'bandwidth':if(_0x2e6845[_0xe2ae('0x31')]&&_0x2e6845[_0xe2ae('0x32')]){var _0x389dca=util[_0xe2ae('0x45')](_0xe2ae('0x46'),_0x2e6845[_0xe2ae('0x31')],_0x2e6845[_0xe2ae('0x32')]);var _0xef294f={'method':_0xe2ae('0x3a'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x2e6845[_0xe2ae('0x6e')]+_0xe2ae('0x6f'),'body':{'to':[_0xaba106['phone']],'text':_0xaba106[_0xe2ae('0xe')],'from':_0x2e6845[_0xe2ae('0x27')],'applicationId':_0x2e6845[_0xe2ae('0x70')]},'headers':{'Authorization':util[_0xe2ae('0x45')](_0xe2ae('0x48'),new Buffer(_0x389dca)[_0xe2ae('0x54')]('base64'))},'json':!![]};rp(_0xef294f)[_0xe2ae('0x18')](function(_0x318fe8){if(_0x318fe8['id']){var _0x58ae87={'messageId':_0x318fe8['id']};return _0x1116f3[_0xe2ae('0x19')](_0x58ae87);}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x71'),util[_0xe2ae('0x2d')](_0x318fe8,{'showHidden':![],'depth':null}));}})[_0xe2ae('0x1b')](function(_0x1d86e9){logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),'afterCreate',_0xe2ae('0x71'),util[_0xe2ae('0x2d')](_0x1d86e9,{'showHidden':![],'depth':null}));});}else{logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),'bandwidth','Missing\x20parameters:\x20username,\x20password');}break;case _0xe2ae('0x72'):if(_0x2e6845[_0xe2ae('0x62')]){var _0x4e6ab9={};var _0x4d49ed={'method':_0xe2ae('0x3a'),'uri':_0xe2ae('0x73'),'headers':{'Authorization':_0xe2ae('0x74')+_0x2e6845[_0xe2ae('0x62')],'Content-Type':'application/json'},'body':{'from':_0x2e6845[_0xe2ae('0x27')],'to':_0xaba106[_0xe2ae('0x27')],'text':_0xaba106['body']},'json':!![]};return rp(_0x4d49ed)[_0xe2ae('0x18')](function(_0xaf6570){if(_0xaf6570[_0xe2ae('0x75')]==0xca){_0x4e6ab9['message']=_0xaf6570;var _0x3f01a9={'method':_0xe2ae('0x3a'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0xe2ae('0x74')+_0x2e6845['apiKey'],'Content-Type':_0xe2ae('0x5a')},'body':{'refid':_0x4e6ab9['message'][_0xe2ae('0x76')]},'json':!![]};return rp(_0x3f01a9)[_0xe2ae('0x18')](function(_0x358844){_0x4e6ab9[_0xe2ae('0x77')]=_0x358844;var _0x519948={'messageId':_0x4e6ab9[_0xe2ae('0x78')]['refid'],'read':!![]};return _0x1116f3[_0xe2ae('0x19')](_0x519948);});}else{return logger[_0xe2ae('0x1c')](_0xe2ae('0x2c'),_0xe2ae('0x2e'),'intelepeer',util[_0xe2ae('0x2d')](_0xaf6570,{'showHidden':![],'depth':null}));}})[_0xe2ae('0x1b')](function(_0x4fb86c){return logger['error'](_0xe2ae('0x2c'),_0xe2ae('0x2e'),_0xe2ae('0x72'),util[_0xe2ae('0x2d')](_0x4fb86c,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xe2ae('0x2c'),_0xe2ae('0x2e'),'intelepeer','Token\x20not\x20received');}break;}}})['finally'](function(){_0x5c5479();});}else{_0x5c5479();}}},'charset':'utf8mb4','collate':_0xe2ae('0x79')});};
\ No newline at end of file
index 1910eb3..f6fc5fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c85=['options','raw','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','CreateSmsMessage','SmsMessage','create','body'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5c85,0x1ed));var _0x55c8=function(_0x56b295,_0x20274c){_0x56b295=_0x56b295-0x0;var _0x53f514=_0x5c85[_0x56b295];return _0x53f514;};'use strict';var _=require(_0x55c8('0x0'));var util=require(_0x55c8('0x1'));var moment=require(_0x55c8('0x2'));var BPromise=require(_0x55c8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x55c8('0x4'));var db=require(_0x55c8('0x5'))['db'];var utils=require(_0x55c8('0x6'));var logger=require(_0x55c8('0x7'))('rpc');var config=require(_0x55c8('0x8'));var jayson=require(_0x55c8('0x9'));var client=jayson['client'][_0x55c8('0xa')]({'port':0x232a});config[_0x55c8('0xb')]=_[_0x55c8('0xc')](config[_0x55c8('0xb')],{'host':_0x55c8('0xd'),'port':0x18eb});var socket=require(_0x55c8('0xe'))(new Redis(config[_0x55c8('0xb')]));require(_0x55c8('0xf'))[_0x55c8('0x10')](socket);function respondWithRpcPromise(_0x1b9115,_0x101fd0,_0x380aa5){return new BPromise(function(_0xeb268f,_0x176082){return client[_0x55c8('0x11')](_0x1b9115,_0x380aa5)[_0x55c8('0x12')](function(_0xaf8e28){logger['info'](_0x55c8('0x13'),_0x101fd0,'request\x20sent');logger[_0x55c8('0x14')](_0x55c8('0x15'),_0x101fd0,_0x55c8('0x16'),JSON[_0x55c8('0x17')](_0xaf8e28));if(_0xaf8e28[_0x55c8('0x18')]){if(_0xaf8e28[_0x55c8('0x18')]['code']===0x1f4){logger['error'](_0x55c8('0x13'),_0x101fd0,_0xaf8e28[_0x55c8('0x18')][_0x55c8('0x19')]);return _0x176082(_0xaf8e28['error'][_0x55c8('0x19')]);}logger[_0x55c8('0x18')](_0x55c8('0x13'),_0x101fd0,_0xaf8e28[_0x55c8('0x18')][_0x55c8('0x19')]);return _0xeb268f(_0xaf8e28[_0x55c8('0x18')]['message']);}else{logger[_0x55c8('0x1a')](_0x55c8('0x13'),_0x101fd0,_0x55c8('0x16'));_0xeb268f(_0xaf8e28[_0x55c8('0x1b')][_0x55c8('0x19')]);}})['catch'](function(_0x34d66a){logger[_0x55c8('0x18')](_0x55c8('0x13'),_0x101fd0,_0x34d66a);_0x176082(_0x34d66a);});});}exports[_0x55c8('0x1c')]=function(_0x1ae907){var _0x105e24=this;return new Promise(function(_0x3b4930,_0x3dfbab){return db[_0x55c8('0x1d')][_0x55c8('0x1e')](_0x1ae907[_0x55c8('0x1f')],{'raw':_0x1ae907[_0x55c8('0x20')]?_0x1ae907[_0x55c8('0x20')][_0x55c8('0x21')]===undefined?!![]:![]:!![]})[_0x55c8('0x12')](function(_0x4cfc5b){logger[_0x55c8('0x1a')](_0x55c8('0x1c'),_0x1ae907);logger[_0x55c8('0x14')]('CreateSmsMessage',_0x1ae907,JSON['stringify'](_0x4cfc5b));_0x3b4930(_0x4cfc5b);})[_0x55c8('0x22')](function(_0x1d6782){logger[_0x55c8('0x18')]('CreateSmsMessage',_0x1d6782['message'],_0x1ae907);_0x3dfbab(_0x105e24[_0x55c8('0x18')](0x1f4,_0x1d6782['message']));});});};
\ No newline at end of file
+var _0xc8f1=['register','then','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateSmsMessage','SmsMessage','body','options','raw','stringify','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket'];(function(_0x25dcf9,_0x1e6f9e){var _0x14ec9e=function(_0x556895){while(--_0x556895){_0x25dcf9['push'](_0x25dcf9['shift']());}};_0x14ec9e(++_0x1e6f9e);}(_0xc8f1,0x89));var _0x1c8f=function(_0x161146,_0x3d73bc){_0x161146=_0x161146-0x0;var _0x3407ea=_0xc8f1[_0x161146];return _0x3407ea;};'use strict';var _=require(_0x1c8f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1c8f('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1c8f('0x2'))['db'];var utils=require(_0x1c8f('0x3'));var logger=require(_0x1c8f('0x4'))(_0x1c8f('0x5'));var config=require('../../config/environment');var jayson=require(_0x1c8f('0x6'));var client=jayson[_0x1c8f('0x7')]['http']({'port':0x232a});config[_0x1c8f('0x8')]=_[_0x1c8f('0x9')](config[_0x1c8f('0x8')],{'host':_0x1c8f('0xa'),'port':0x18eb});var socket=require(_0x1c8f('0xb'))(new Redis(config['redis']));require(_0x1c8f('0xc'))[_0x1c8f('0xd')](socket);function respondWithRpcPromise(_0x32e439,_0x5375d3,_0x273e74){return new BPromise(function(_0x13ab9d,_0x44c33a){return client['request'](_0x32e439,_0x273e74)[_0x1c8f('0xe')](function(_0x32b8b2){logger[_0x1c8f('0xf')](_0x1c8f('0x10'),_0x5375d3,'request\x20sent');logger[_0x1c8f('0x11')](_0x1c8f('0x12'),_0x5375d3,_0x1c8f('0x13'),JSON['stringify'](_0x32b8b2));if(_0x32b8b2[_0x1c8f('0x14')]){if(_0x32b8b2['error']['code']===0x1f4){logger[_0x1c8f('0x14')]('SmsMessage,\x20%s,\x20%s',_0x5375d3,_0x32b8b2[_0x1c8f('0x14')][_0x1c8f('0x15')]);return _0x44c33a(_0x32b8b2[_0x1c8f('0x14')][_0x1c8f('0x15')]);}logger[_0x1c8f('0x14')]('SmsMessage,\x20%s,\x20%s',_0x5375d3,_0x32b8b2['error'][_0x1c8f('0x15')]);return _0x13ab9d(_0x32b8b2['error']['message']);}else{logger[_0x1c8f('0xf')](_0x1c8f('0x10'),_0x5375d3,_0x1c8f('0x13'));_0x13ab9d(_0x32b8b2[_0x1c8f('0x16')]['message']);}})[_0x1c8f('0x17')](function(_0x41195f){logger[_0x1c8f('0x14')]('SmsMessage,\x20%s,\x20%s',_0x5375d3,_0x41195f);_0x44c33a(_0x41195f);});});}exports[_0x1c8f('0x18')]=function(_0x48697e){var _0x48fc0b=this;return new Promise(function(_0xa63e0e,_0x408d92){return db[_0x1c8f('0x19')]['create'](_0x48697e[_0x1c8f('0x1a')],{'raw':_0x48697e[_0x1c8f('0x1b')]?_0x48697e[_0x1c8f('0x1b')][_0x1c8f('0x1c')]===undefined?!![]:![]:!![]})[_0x1c8f('0xe')](function(_0x3f458d){logger['info'](_0x1c8f('0x18'),_0x48697e);logger[_0x1c8f('0x11')](_0x1c8f('0x18'),_0x48697e,JSON[_0x1c8f('0x1d')](_0x3f458d));_0xa63e0e(_0x3f458d);})[_0x1c8f('0x17')](function(_0x2c3ea1){logger[_0x1c8f('0x14')]('CreateSmsMessage',_0x2c3ea1[_0x1c8f('0x15')],_0x48697e);_0x408d92(_0x48fc0b['error'](0x1f4,_0x2c3ea1[_0x1c8f('0x15')]));});});};
\ No newline at end of file
index bb02ae0..f84e505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7eb=['removeListener','register','smsMessage:','emit'];(function(_0xaa6c53,_0x57e3ec){var _0xa14007=function(_0x1e42f3){while(--_0x1e42f3){_0xaa6c53['push'](_0xaa6c53['shift']());}};_0xa14007(++_0x57e3ec);}(_0xd7eb,0x18f));var _0xbd7e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd7eb[_0x20a584];return _0x4b41a8;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=['save','remove','update'];function createListener(_0x559a25,_0x3782e7){return function(_0x1e63a1){_0x3782e7[_0xbd7e('0x0')](_0x559a25,_0x1e63a1);};}function removeListener(_0x56d68b,_0x4333b8){return function(){SmsMessageEvents[_0xbd7e('0x1')](_0x56d68b,_0x4333b8);};}exports[_0xbd7e('0x2')]=function(_0x4f74c8){for(var _0x204371=0x0,_0x21e364=events['length'];_0x204371<_0x21e364;_0x204371++){var _0x12a672=events[_0x204371];var _0x5204bb=createListener(_0xbd7e('0x3')+_0x12a672,_0x4f74c8);SmsMessageEvents['on'](_0x12a672,_0x5204bb);}};
\ No newline at end of file
+var _0x8fa6=['smsMessage:','./smsMessage.events','save','remove','update','removeListener','length'];(function(_0x5bd1a9,_0x313714){var _0x2ba345=function(_0x21b4af){while(--_0x21b4af){_0x5bd1a9['push'](_0x5bd1a9['shift']());}};_0x2ba345(++_0x313714);}(_0x8fa6,0xef));var _0x68fa=function(_0x486d51,_0x433a67){_0x486d51=_0x486d51-0x0;var _0x407b10=_0x8fa6[_0x486d51];return _0x407b10;};'use strict';var SmsMessageEvents=require(_0x68fa('0x0'));var events=[_0x68fa('0x1'),_0x68fa('0x2'),_0x68fa('0x3')];function createListener(_0x11da63,_0x55e561){return function(_0x17b0f1){_0x55e561['emit'](_0x11da63,_0x17b0f1);};}function removeListener(_0x44247b,_0x506dca){return function(){SmsMessageEvents[_0x68fa('0x4')](_0x44247b,_0x506dca);};}exports['register']=function(_0x37e4b2){for(var _0x4edf52=0x0,_0x5f3ea4=events[_0x68fa('0x5')];_0x4edf52<_0x5f3ea4;_0x4edf52++){var _0x9c9e5=events[_0x4edf52];var _0xf94f1c=createListener(_0x68fa('0x6')+_0x9c9e5,_0x37e4b2);SmsMessageEvents['on'](_0x9c9e5,_0xf94f1c);}};
\ No newline at end of file
index e5e3eb6..cab5a02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfce2=['create','post','/:id/users','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','multer','../../components/auth/service','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','getAgents'];(function(_0x4bdf1f,_0x436bbf){var _0x47e2d9=function(_0x535438){while(--_0x535438){_0x4bdf1f['push'](_0x4bdf1f['shift']());}};_0x47e2d9(++_0x436bbf);}(_0xfce2,0x180));var _0x2fce=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfce2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2fce('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2fce('0x1'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./smsQueue.controller');router[_0x2fce('0x2')]('/',auth[_0x2fce('0x3')](),controller[_0x2fce('0x4')]);router[_0x2fce('0x2')]('/describe',auth['isAuthenticated'](),controller[_0x2fce('0x5')]);router[_0x2fce('0x2')](_0x2fce('0x6'),auth['isAuthenticated'](),controller['show']);router[_0x2fce('0x2')](_0x2fce('0x7'),auth[_0x2fce('0x3')](),controller[_0x2fce('0x8')]);router[_0x2fce('0x2')](_0x2fce('0x9'),auth[_0x2fce('0x3')](),controller[_0x2fce('0xa')]);router['get']('/:id/users',auth[_0x2fce('0x3')](),controller[_0x2fce('0xb')]);router['post']('/',auth[_0x2fce('0x3')](),controller[_0x2fce('0xc')]);router[_0x2fce('0xd')](_0x2fce('0x9'),auth[_0x2fce('0x3')](),controller['addTeams']);router[_0x2fce('0xd')](_0x2fce('0xe'),auth[_0x2fce('0x3')](),controller[_0x2fce('0xf')]);router[_0x2fce('0x10')]('/:id',auth[_0x2fce('0x3')](),controller['update']);router[_0x2fce('0x11')](_0x2fce('0x6'),auth[_0x2fce('0x3')](),controller[_0x2fce('0x12')]);router[_0x2fce('0x11')](_0x2fce('0x9'),auth[_0x2fce('0x3')](),controller[_0x2fce('0x13')]);router[_0x2fce('0x11')](_0x2fce('0xe'),auth[_0x2fce('0x3')](),controller[_0x2fce('0x14')]);module[_0x2fce('0x15')]=router;
\ No newline at end of file
+var _0xb7f8=['path','express','Router','fs-extra','../../components/auth/service','./smsQueue.controller','get','isAuthenticated','index','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','util'];(function(_0x4c2cd2,_0x280f2a){var _0x28fc7a=function(_0x4f96c1){while(--_0x4f96c1){_0x4c2cd2['push'](_0x4c2cd2['shift']());}};_0x28fc7a(++_0x280f2a);}(_0xb7f8,0x16b));var _0x8b7f=function(_0x4806e8,_0x2b3232){_0x4806e8=_0x4806e8-0x0;var _0x17d0f2=_0xb7f8[_0x4806e8];return _0x17d0f2;};'use strict';var multer=require('multer');var util=require(_0x8b7f('0x0'));var path=require(_0x8b7f('0x1'));var timeout=require('connect-timeout');var express=require(_0x8b7f('0x2'));var router=express[_0x8b7f('0x3')]();var fs_extra=require(_0x8b7f('0x4'));var auth=require(_0x8b7f('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8b7f('0x6'));router[_0x8b7f('0x7')]('/',auth[_0x8b7f('0x8')](),controller[_0x8b7f('0x9')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x8b7f('0x7')](_0x8b7f('0xa'),auth['isAuthenticated'](),controller[_0x8b7f('0xb')]);router['get'](_0x8b7f('0xc'),auth[_0x8b7f('0x8')](),controller['getMembers']);router[_0x8b7f('0x7')](_0x8b7f('0xd'),auth[_0x8b7f('0x8')](),controller[_0x8b7f('0xe')]);router[_0x8b7f('0x7')](_0x8b7f('0xf'),auth[_0x8b7f('0x8')](),controller[_0x8b7f('0x10')]);router[_0x8b7f('0x11')]('/',auth[_0x8b7f('0x8')](),controller[_0x8b7f('0x12')]);router[_0x8b7f('0x11')](_0x8b7f('0xd'),auth[_0x8b7f('0x8')](),controller[_0x8b7f('0x13')]);router[_0x8b7f('0x11')](_0x8b7f('0xf'),auth[_0x8b7f('0x8')](),controller[_0x8b7f('0x14')]);router[_0x8b7f('0x15')](_0x8b7f('0xa'),auth['isAuthenticated'](),controller[_0x8b7f('0x16')]);router[_0x8b7f('0x17')](_0x8b7f('0xa'),auth['isAuthenticated'](),controller[_0x8b7f('0x18')]);router[_0x8b7f('0x17')]('/:id/teams',auth[_0x8b7f('0x8')](),controller[_0x8b7f('0x19')]);router[_0x8b7f('0x17')](_0x8b7f('0xf'),auth[_0x8b7f('0x8')](),controller[_0x8b7f('0x1a')]);module[_0x8b7f('0x1b')]=router;
\ No newline at end of file
index 4a54a45..39aa784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a15=['STRING','name','rrmemory','beepall','roundrobin','exports'];(function(_0x590a38,_0x2bc65c){var _0xf36626=function(_0x551cd1){while(--_0x551cd1){_0x590a38['push'](_0x590a38['shift']());}};_0xf36626(++_0x2bc65c);}(_0x3a15,0x1a9));var _0x53a1=function(_0x370db8,_0x18155e){_0x370db8=_0x370db8-0x0;var _0x40fa3e=_0x3a15[_0x370db8];return _0x40fa3e;};'use strict';var Sequelize=require('sequelize');module[_0x53a1('0x0')]={'name':{'type':Sequelize[_0x53a1('0x1')],'unique':_0x53a1('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x53a1('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x53a1('0x3'),_0x53a1('0x4'),_0x53a1('0x5'))}};
\ No newline at end of file
+var _0xd2af=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x3f94f9,_0x42774b){var _0x46f84f=function(_0xa080d8){while(--_0xa080d8){_0x3f94f9['push'](_0x3f94f9['shift']());}};_0x46f84f(++_0x42774b);}(_0xd2af,0x6a));var _0xfd2a=function(_0x2891d1,_0x2ddd3e){_0x2891d1=_0x2891d1-0x0;var _0x486948=_0xd2af[_0x2891d1];return _0x486948;};'use strict';var Sequelize=require(_0xfd2a('0x0'));module[_0xfd2a('0x1')]={'name':{'type':Sequelize[_0xfd2a('0x2')],'unique':_0xfd2a('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfd2a('0x2')]},'timeout':{'type':Sequelize[_0xfd2a('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xfd2a('0x5')]('rrmemory','beepall',_0xfd2a('0x6'))}};
\ No newline at end of file
index 7c2ca29..964f84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x434b=['order','sort','where','pick','filter','merge','options','findAll','catch','params','fields','length','includeAll','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','SmsQueueId','UserSmsQueue','agent','smsPause','updatedAt','createdAt','rows','format','getTeams','Team','hasOwnProperty','addTeams','User','Agents','online','voicePause','interface','flatMap','sequelize','each','forEach','emit','userSmsQueue:save','removeTeams','select','field','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','push','QueryTypes','SELECT','every','TeamId','all','union','value','transaction','ids','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','findOne','getAgents','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','end','sendStatus','error','stack','name','send','map','SmsQueue','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','nolimit'];(function(_0x403306,_0x301d9e){var _0x205330=function(_0x574a6a){while(--_0x574a6a){_0x403306['push'](_0x403306['shift']());}};_0x205330(++_0x301d9e);}(_0x434b,0xd4));var _0xb434=function(_0x50a004,_0x193d84){_0x50a004=_0x50a004-0x0;var _0x5e9992=_0x434b[_0x50a004];return _0x5e9992;};'use strict';var emlformat=require(_0xb434('0x0'));var rimraf=require(_0xb434('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb434('0x2'));var rp=require(_0xb434('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb434('0x4'));var util=require(_0xb434('0x5'));var path=require(_0xb434('0x6'));var sox=require(_0xb434('0x7'));var csv=require(_0xb434('0x8'));var ejs=require(_0xb434('0x9'));var fs=require('fs');var fs_extra=require(_0xb434('0xa'));var _=require('lodash');var squel=require(_0xb434('0xb'));var crypto=require('crypto');var jsforce=require(_0xb434('0xc'));var deskjs=require(_0xb434('0xd'));var toCsv=require(_0xb434('0x8'));var querystring=require(_0xb434('0xe'));var Papa=require(_0xb434('0xf'));var Redis=require(_0xb434('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb434('0x11'));var as=require(_0xb434('0x12'));var hardwareService=require(_0xb434('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xb434('0x14'));var config=require(_0xb434('0x15'));var licenseUtil=require(_0xb434('0x16'));var db=require(_0xb434('0x17'))['db'];config[_0xb434('0x18')]=_[_0xb434('0x19')](config['redis'],{'host':_0xb434('0x1a'),'port':0x18eb});var socket=require(_0xb434('0x1b'))(new Redis(config[_0xb434('0x18')]));require('./smsQueue.socket')[_0xb434('0x1c')](socket);function respondWithStatusCode(_0x3062bd,_0x328ea0){_0x328ea0=_0x328ea0||0xcc;return function(_0x595b8e){if(_0x595b8e){return _0x3062bd['sendStatus'](_0x328ea0);}return _0x3062bd[_0xb434('0x1d')](_0x328ea0)['end']();};}function respondWithResult(_0x54574c,_0x532dc0){_0x532dc0=_0x532dc0||0xc8;return function(_0x51f569){if(_0x51f569){return _0x54574c[_0xb434('0x1d')](_0x532dc0)[_0xb434('0x1e')](_0x51f569);}};}function respondWithFilteredResult(_0x14759f,_0x38f03c){return function(_0x2fc4c1){if(_0x2fc4c1){var _0x192d38=typeof _0x38f03c[_0xb434('0x1f')]==='undefined'&&typeof _0x38f03c[_0xb434('0x20')]===_0xb434('0x21');var _0x49856f=_0x2fc4c1[_0xb434('0x22')];var _0xdfa6a9=_0x192d38?0x0:_0x38f03c['offset'];var _0x918465=_0x192d38?_0x2fc4c1['count']:_0x38f03c['offset']+_0x38f03c[_0xb434('0x20')];var _0x15ec7a;if(_0x918465>=_0x49856f){_0x918465=_0x49856f;_0x15ec7a=0xc8;}else{_0x15ec7a=0xce;}_0x14759f[_0xb434('0x1d')](_0x15ec7a);return _0x14759f['set'](_0xb434('0x23'),_0xdfa6a9+'-'+_0x918465+'/'+_0x49856f)[_0xb434('0x1e')](_0x2fc4c1);}return null;};}function patchUpdates(_0x2727bb){return function(_0x3a3863){try{jsonpatch['apply'](_0x3a3863,_0x2727bb,!![]);}catch(_0x4c39bd){return BPromise[_0xb434('0x24')](_0x4c39bd);}return _0x3a3863[_0xb434('0x25')]();};}function saveUpdates(_0x4ad933,_0x2cbea6){return function(_0x3faa4f){if(_0x3faa4f){return _0x3faa4f[_0xb434('0x26')](_0x4ad933)[_0xb434('0x27')](function(_0x53fb75){return _0x53fb75;});}return null;};}function removeEntity(_0x388173,_0x2d1a51){return function(_0x3d35b2){if(_0x3d35b2){return _0x3d35b2[_0xb434('0x28')]()[_0xb434('0x27')](function(){var _0x5d1ba4=_0x3d35b2[_0xb434('0x29')]({'plain':!![]});var _0x5dedee=_0xb434('0x2a');return db[_0xb434('0x2b')]['destroy']({'where':{'type':_0x5dedee,'resourceId':_0x5d1ba4['id']}})[_0xb434('0x27')](function(){return _0x3d35b2;});})[_0xb434('0x27')](function(){_0x388173[_0xb434('0x1d')](0xcc)[_0xb434('0x2c')]();});}};}function handleEntityNotFound(_0x453038,_0x55d87f){return function(_0x5046e8){if(!_0x5046e8){_0x453038[_0xb434('0x2d')](0x194);}return _0x5046e8;};}function handleError(_0x87f930,_0x4fde4b){_0x4fde4b=_0x4fde4b||0x1f4;return function(_0x3ae68a){logger[_0xb434('0x2e')](_0x3ae68a[_0xb434('0x2f')]);if(_0x3ae68a[_0xb434('0x30')]){delete _0x3ae68a[_0xb434('0x30')];}_0x87f930['status'](_0x4fde4b)[_0xb434('0x31')](_0x3ae68a);};}exports['index']=function(_0x274caf,_0x475510){var _0x1ae8f7={},_0x3c06ea={},_0x44edab={'count':0x0,'rows':[]};var _0x408a99=_[_0xb434('0x32')](db[_0xb434('0x33')][_0xb434('0x34')],function(_0x3371a5){return{'name':_0x3371a5['fieldName'],'type':_0x3371a5[_0xb434('0x35')][_0xb434('0x36')]};});_0x3c06ea['model']=_['map'](_0x408a99,'name');_0x3c06ea[_0xb434('0x37')]=_[_0xb434('0x38')](_0x274caf[_0xb434('0x37')]);_0x3c06ea[_0xb434('0x39')]=_[_0xb434('0x3a')](_0x3c06ea[_0xb434('0x3b')],_0x3c06ea['query']);_0x1ae8f7[_0xb434('0x3c')]=_[_0xb434('0x3a')](_0x3c06ea[_0xb434('0x3b')],qs['fields'](_0x274caf[_0xb434('0x37')]['fields']));_0x1ae8f7['attributes']=_0x1ae8f7[_0xb434('0x3c')]['length']?_0x1ae8f7[_0xb434('0x3c')]:_0x3c06ea[_0xb434('0x3b')];if(!_0x274caf[_0xb434('0x37')]['hasOwnProperty'](_0xb434('0x3d'))){_0x1ae8f7[_0xb434('0x20')]=qs[_0xb434('0x20')](_0x274caf[_0xb434('0x37')][_0xb434('0x20')]);_0x1ae8f7[_0xb434('0x1f')]=qs[_0xb434('0x1f')](_0x274caf[_0xb434('0x37')][_0xb434('0x1f')]);}_0x1ae8f7[_0xb434('0x3e')]=qs[_0xb434('0x3f')](_0x274caf[_0xb434('0x37')][_0xb434('0x3f')]);_0x1ae8f7[_0xb434('0x40')]=qs[_0xb434('0x39')](_[_0xb434('0x41')](_0x274caf[_0xb434('0x37')],_0x3c06ea[_0xb434('0x39')]),_0x408a99);if(_0x274caf[_0xb434('0x37')][_0xb434('0x42')]){_0x1ae8f7[_0xb434('0x40')]=_[_0xb434('0x43')](_0x1ae8f7[_0xb434('0x40')],{'$or':_['map'](_0x408a99,function(_0x177fd4){if(_0x177fd4['type']!=='VIRTUAL'){var _0x10a7ea={};_0x10a7ea[_0x177fd4[_0xb434('0x30')]]={'$like':'%'+_0x274caf[_0xb434('0x37')][_0xb434('0x42')]+'%'};return _0x10a7ea;}})});}_0x1ae8f7=_['merge']({},_0x1ae8f7,_0x274caf[_0xb434('0x44')]);var _0x467545={'where':_0x1ae8f7['where']};return db[_0xb434('0x33')][_0xb434('0x22')](_0x467545)[_0xb434('0x27')](function(_0x34262e){_0x44edab[_0xb434('0x22')]=_0x34262e;if(_0x274caf[_0xb434('0x37')]['includeAll']){_0x1ae8f7['include']=[{'all':!![]}];}return db['SmsQueue'][_0xb434('0x45')](_0x1ae8f7);})[_0xb434('0x27')](function(_0x92f820){_0x44edab['rows']=_0x92f820;return _0x44edab;})[_0xb434('0x27')](respondWithFilteredResult(_0x475510,_0x1ae8f7))[_0xb434('0x46')](handleError(_0x475510,null));};exports['show']=function(_0x1d17af,_0x19f724){var _0xd2a5d4={'raw':!![],'where':{'id':_0x1d17af[_0xb434('0x47')]['id']}},_0x30ec02={};_0x30ec02[_0xb434('0x3b')]=_['keys'](db[_0xb434('0x33')][_0xb434('0x34')]);_0x30ec02[_0xb434('0x37')]=_[_0xb434('0x38')](_0x1d17af['query']);_0x30ec02[_0xb434('0x39')]=_[_0xb434('0x3a')](_0x30ec02[_0xb434('0x3b')],_0x30ec02[_0xb434('0x37')]);_0xd2a5d4[_0xb434('0x3c')]=_[_0xb434('0x3a')](_0x30ec02['model'],qs[_0xb434('0x48')](_0x1d17af[_0xb434('0x37')][_0xb434('0x48')]));_0xd2a5d4[_0xb434('0x3c')]=_0xd2a5d4[_0xb434('0x3c')][_0xb434('0x49')]?_0xd2a5d4['attributes']:_0x30ec02['model'];if(_0x1d17af['query'][_0xb434('0x4a')]){_0xd2a5d4[_0xb434('0x4b')]=[{'all':!![]}];}_0xd2a5d4=_['merge']({},_0xd2a5d4,_0x1d17af[_0xb434('0x44')]);return db[_0xb434('0x33')][_0xb434('0x4c')](_0xd2a5d4)[_0xb434('0x27')](handleEntityNotFound(_0x19f724,null))[_0xb434('0x27')](respondWithResult(_0x19f724,null))[_0xb434('0x46')](handleError(_0x19f724,null));};exports[_0xb434('0x4d')]=function(_0xb0129c,_0x599956){return db[_0xb434('0x33')][_0xb434('0x4d')](_0xb0129c[_0xb434('0x4e')],{})[_0xb434('0x27')](function(_0x2461d6){var _0x37af8b=_0xb0129c['user'][_0xb434('0x29')]({'plain':!![]});if(!_0x37af8b)throw new Error(_0xb434('0x4f'));if(_0x37af8b[_0xb434('0x50')]===_0xb434('0x51')){var _0x1f6ded=_0x2461d6['get']({'plain':!![]});var _0x8967df=_0xb434('0x2a');return db[_0xb434('0x52')][_0xb434('0x4c')]({'where':{'name':_0x8967df,'userProfileId':_0x37af8b[_0xb434('0x53')]},'raw':!![]})['then'](function(_0x1c2252){if(_0x1c2252&&_0x1c2252[_0xb434('0x54')]===0x0){return db[_0xb434('0x2b')][_0xb434('0x4d')]({'name':_0x1f6ded[_0xb434('0x30')],'resourceId':_0x1f6ded['id'],'type':_0x1c2252['name'],'sectionId':_0x1c2252['id']},{})[_0xb434('0x27')](function(){return _0x2461d6;});}else{return _0x2461d6;}})[_0xb434('0x46')](function(_0x4ca4ad){logger['error'](_0xb434('0x55'),_0x4ca4ad);throw _0x4ca4ad;});}return _0x2461d6;})[_0xb434('0x27')](respondWithResult(_0x599956,0xc9))[_0xb434('0x46')](handleError(_0x599956,null));};exports['update']=function(_0x2920b5,_0x4555a8){if(_0x2920b5['body']['id']){delete _0x2920b5['body']['id'];}return db[_0xb434('0x33')][_0xb434('0x4c')]({'where':{'id':_0x2920b5[_0xb434('0x47')]['id']}})[_0xb434('0x27')](handleEntityNotFound(_0x4555a8,null))['then'](saveUpdates(_0x2920b5['body'],null))['then'](respondWithResult(_0x4555a8,null))[_0xb434('0x46')](handleError(_0x4555a8,null));};exports['destroy']=function(_0x373ae2,_0x51ed9c){return db['SmsQueue'][_0xb434('0x4c')]({'where':{'id':_0x373ae2[_0xb434('0x47')]['id']}})['then'](handleEntityNotFound(_0x51ed9c,null))['then'](removeEntity(_0x51ed9c,null))['catch'](handleError(_0x51ed9c,null));};exports[_0xb434('0x56')]=function(_0x5671cf,_0x149332){return db[_0xb434('0x33')][_0xb434('0x56')]()[_0xb434('0x27')](respondWithResult(_0x149332,null))[_0xb434('0x46')](handleError(_0x149332,null));};exports[_0xb434('0x57')]=function(_0x4e6d64,_0x2fcf1b,_0x468feb){var _0x33b8ff={'raw':!![],'where':{}},_0x4c9c3f={},_0x1c47e2;return db['SmsQueue']['findOne']({'where':{'id':_0x4e6d64[_0xb434('0x47')]['id']}})['then'](handleEntityNotFound(_0x2fcf1b,null))[_0xb434('0x27')](function(_0x11f323){if(_0x11f323){_0x1c47e2=_0x11f323[_0xb434('0x29')]({'plain':!![]});_0x4c9c3f['model']=_[_0xb434('0x38')](db['UserSmsQueue'][_0xb434('0x34')]);_0x4c9c3f['query']=_['keys'](_0x4e6d64[_0xb434('0x37')]);_0x4c9c3f[_0xb434('0x39')]=_['intersection'](_0x4c9c3f[_0xb434('0x3b')],_0x4c9c3f[_0xb434('0x37')]);_0x33b8ff[_0xb434('0x3c')]=_[_0xb434('0x3a')](_0x4c9c3f['model'],qs['fields'](_0x4e6d64[_0xb434('0x37')]['fields']));_0x33b8ff[_0xb434('0x3c')]=_0x33b8ff['attributes'][_0xb434('0x49')]?_0x33b8ff['attributes']:_0x4c9c3f[_0xb434('0x3b')];if(!_0x4e6d64[_0xb434('0x37')]['hasOwnProperty'](_0xb434('0x3d'))){_0x33b8ff[_0xb434('0x20')]=qs[_0xb434('0x20')](_0x4e6d64[_0xb434('0x37')][_0xb434('0x20')]);_0x33b8ff[_0xb434('0x1f')]=qs[_0xb434('0x1f')](_0x4e6d64[_0xb434('0x37')][_0xb434('0x1f')]);}_0x33b8ff['order']=qs['sort'](_0x4e6d64[_0xb434('0x37')][_0xb434('0x3f')]);_0x33b8ff[_0xb434('0x40')]=qs[_0xb434('0x39')](_['pick'](_0x4e6d64[_0xb434('0x37')],_0x4c9c3f['filters']));_0x33b8ff[_0xb434('0x40')][_0xb434('0x58')]=_0x11f323['id'];if(_0x4e6d64[_0xb434('0x37')][_0xb434('0x42')]){_0x33b8ff[_0xb434('0x40')]=_[_0xb434('0x43')](_0x33b8ff['where'],{'$or':_[_0xb434('0x32')](_0x33b8ff[_0xb434('0x3c')],function(_0x5a4921){var _0x405655={};_0x405655[_0x5a4921]={'$like':'%'+_0x4e6d64[_0xb434('0x37')][_0xb434('0x42')]+'%'};return _0x405655;})});}_0x33b8ff=_[_0xb434('0x43')]({},_0x33b8ff,_0x4e6d64[_0xb434('0x44')]);return db[_0xb434('0x59')][_0xb434('0x45')](_0x33b8ff);}})[_0xb434('0x27')](function(_0x2ec240){if(_0x2ec240){return db['User']['findAndCountAll']({'where':{'id':_[_0xb434('0x32')](_0x2ec240,'UserId'),'role':_0xb434('0x5a')},'attributes':['id','name',_0xb434('0x5b'),_0xb434('0x5c'),_0xb434('0x5d')]});}})['then'](function(_0x51c23d){if(_0x51c23d){return{'count':_0x51c23d['count'],'rows':_[_0xb434('0x32')](_0x51c23d[_0xb434('0x5e')],function(_0xb21633){return{'membername':_0xb21633['name'],'UserId':_0xb21633['id'],'queue_name':_0x1c47e2['name'],'SmsQueueId':_0x1c47e2['id'],'interface':util[_0xb434('0x5f')]('%s/%s','SIP',_0xb21633['name']),'penalty':0x0,'paused':_0xb21633['smsPause'],'createdAt':_0xb21633[_0xb434('0x5d')],'updatedAt':_0xb21633[_0xb434('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb434('0x27')](respondWithFilteredResult(_0x2fcf1b,_0x33b8ff))[_0xb434('0x46')](handleError(_0x2fcf1b,null));};exports[_0xb434('0x60')]=function(_0x37a334,_0x144f46,_0x34afc1){var _0xf41477={};var _0x4818cd={};var _0x449072;var _0x37d444;return db[_0xb434('0x33')]['findOne']({'where':{'id':_0x37a334[_0xb434('0x47')]['id']}})['then'](handleEntityNotFound(_0x144f46,null))[_0xb434('0x27')](function(_0x4eddb5){if(_0x4eddb5){_0x449072=_0x4eddb5;_0x4818cd[_0xb434('0x3b')]=_['keys'](db[_0xb434('0x61')]['rawAttributes']);_0x4818cd['query']=_[_0xb434('0x38')](_0x37a334[_0xb434('0x37')]);_0x4818cd[_0xb434('0x39')]=_[_0xb434('0x3a')](_0x4818cd[_0xb434('0x3b')],_0x4818cd[_0xb434('0x37')]);_0xf41477[_0xb434('0x3c')]=_[_0xb434('0x3a')](_0x4818cd[_0xb434('0x3b')],qs[_0xb434('0x48')](_0x37a334[_0xb434('0x37')][_0xb434('0x48')]));_0xf41477[_0xb434('0x3c')]=_0xf41477[_0xb434('0x3c')]['length']?_0xf41477[_0xb434('0x3c')]:_0x4818cd[_0xb434('0x3b')];_0xf41477[_0xb434('0x3e')]=qs['sort'](_0x37a334['query'][_0xb434('0x3f')]);_0xf41477[_0xb434('0x40')]=qs['filters'](_[_0xb434('0x41')](_0x37a334['query'],_0x4818cd[_0xb434('0x39')]));if(_0x37a334[_0xb434('0x37')][_0xb434('0x42')]){_0xf41477[_0xb434('0x40')]=_[_0xb434('0x43')](_0xf41477['where'],{'$or':_['map'](_0xf41477[_0xb434('0x3c')],function(_0x2c9249){var _0x323c98={};_0x323c98[_0x2c9249]={'$like':'%'+_0x37a334['query'][_0xb434('0x42')]+'%'};return _0x323c98;})});}_0xf41477=_[_0xb434('0x43')]({},_0xf41477,_0x37a334[_0xb434('0x44')]);return _0x449072[_0xb434('0x60')](_0xf41477);}})[_0xb434('0x27')](function(_0x2b1435){if(_0x2b1435){_0x37d444=_0x2b1435[_0xb434('0x49')];if(!_0x37a334['query'][_0xb434('0x62')](_0xb434('0x3d'))){_0xf41477[_0xb434('0x20')]=qs['limit'](_0x37a334[_0xb434('0x37')][_0xb434('0x20')]);_0xf41477[_0xb434('0x1f')]=qs[_0xb434('0x1f')](_0x37a334[_0xb434('0x37')]['offset']);}return _0x449072[_0xb434('0x60')](_0xf41477);}})['then'](function(_0xd5c293){if(_0xd5c293){return _0xd5c293?{'count':_0x37d444,'rows':_0xd5c293}:null;}})['then'](respondWithResult(_0x144f46,null))[_0xb434('0x46')](handleError(_0x144f46,null));};exports[_0xb434('0x63')]=function(_0x59803d,_0xc08fe4,_0x565109){var _0xd7e31e=_0x59803d[_0xb434('0x4e')]['ids'];return db[_0xb434('0x61')][_0xb434('0x45')]({'where':{'id':_0xd7e31e},'attributes':['id'],'include':[{'model':db[_0xb434('0x64')],'as':_0xb434('0x65'),'attributes':['id',_0xb434('0x30'),_0xb434('0x66'),_0xb434('0x67'),_0xb434('0x68')],'raw':!![]}]})['then'](function(_0x17e4b8){if(_0x17e4b8){var _0x51dcca=_[_0xb434('0x69')](_0x17e4b8,function(_0x28a88b){var _0x135626=_0x28a88b['get']({'plain':!![]});return _0x135626[_0xb434('0x65')];});return db[_0xb434('0x33')][_0xb434('0x4c')]({'where':{'id':_0x59803d['params']['id']}})['then'](function(_0x12eb83){return db[_0xb434('0x6a')]['transaction'](function(_0x30c85c){return _0x12eb83[_0xb434('0x63')](_0xd7e31e,{'transaction':_0x30c85c})[_0xb434('0x27')](function(){return BPromise[_0xb434('0x6b')](_0x51dcca,function(_0x3a3d7b){return db[_0xb434('0x59')]['findOrCreate']({'where':{'UserId':_0x3a3d7b['id'],'SmsQueueId':_0x59803d[_0xb434('0x47')]['id']},'transaction':_0x30c85c});});})[_0xb434('0x27')](function(){_0x51dcca[_0xb434('0x6c')](function(_0x8988a0){socket[_0xb434('0x6d')](_0xb434('0x6e'),{'UserId':_0x8988a0['id'],'SmsQueueId':_0x12eb83['id']});});});});});}})[_0xb434('0x27')](respondWithStatusCode(_0xc08fe4,null))[_0xb434('0x46')](handleError(_0xc08fe4,null));};exports[_0xb434('0x6f')]=function(_0x146f90,_0x4d5379,_0x2ad0ba){return db[_0xb434('0x61')]['findAll']({'where':{'id':_0x146f90[_0xb434('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0xb434('0x64')],'as':_0xb434('0x65'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4d5379,null))[_0xb434('0x27')](function(_0x31a02e){var _0x18e330=_[_0xb434('0x32')](_0x31a02e,'id');var _0x590e0f=[];var _0x29998d=[];var _0x1d5bfa=squel[_0xb434('0x70')]();_0x1d5bfa[_0xb434('0x71')]('tq.TeamId')['from'](_0xb434('0x72'),'tq')[_0xb434('0x73')]('user_has_teams','ut',_0xb434('0x74'))[_0xb434('0x40')](_0xb434('0x75'),_0x146f90['params']['id']);for(var _0x4cc608=0x0;_0x4cc608<_0x31a02e[_0xb434('0x49')];_0x4cc608+=0x1){let _0x52e158=_0x31a02e[_0x4cc608];for(var _0x4d1f4b=0x0;_0x4d1f4b<_0x52e158[_0xb434('0x65')][_0xb434('0x49')];_0x4d1f4b+=0x1){let _0x2e78be=_0x52e158[_0xb434('0x65')][_0x4d1f4b];var _0x479984=_0x1d5bfa[_0xb434('0x76')]();_0x479984[_0xb434('0x40')]('ut.UserId\x20=\x20?',_0x2e78be['id']);_0x29998d[_0xb434('0x77')](db['sequelize'][_0xb434('0x37')](_0x479984['toString'](),{'type':db[_0xb434('0x6a')][_0xb434('0x78')][_0xb434('0x79')]})[_0xb434('0x27')](function(_0x5652d1){if(_0x5652d1['length']===0x1){return _0x2e78be['id'];}else{var _0x45ef00=_[_0xb434('0x7a')](_['map'](_0x5652d1,_0xb434('0x7b')),function(_0x479e2a){return _['includes'](_0x18e330,_0x479e2a);});if(_0x45ef00){return _0x2e78be['id'];}}}));}}return BPromise[_0xb434('0x7c')](_0x29998d)['then'](function(_0x12d956){_0x590e0f=_(_0x590e0f)[_0xb434('0x7d')](_0x12d956)['compact']()[_0xb434('0x7e')]();return db['SmsQueue'][_0xb434('0x4c')]({'where':{'id':_0x146f90[_0xb434('0x47')]['id']}})[_0xb434('0x27')](function(_0x1613b3){return db['sequelize'][_0xb434('0x7f')](function(_0x1542e0){return _0x1613b3[_0xb434('0x6f')](_0x146f90[_0xb434('0x37')][_0xb434('0x80')],{'transaction':_0x1542e0})[_0xb434('0x27')](function(){if(!_[_0xb434('0x81')](_0x590e0f)){return _0x1613b3[_0xb434('0x82')](_0x590e0f,{'transaction':_0x1542e0});}})[_0xb434('0x27')](function(){_0x590e0f[_0xb434('0x6c')](function(_0x1b0283){socket[_0xb434('0x6d')](_0xb434('0x83'),{'UserId':_0x1b0283,'SmsQueueId':_0x1613b3['id']});});});});});});})[_0xb434('0x27')](respondWithStatusCode(_0x4d5379,null))[_0xb434('0x46')](handleError(_0x4d5379,null));};exports['addAgents']=function(_0x4ecae0,_0x435c98,_0x2dd450){return db[_0xb434('0x33')]['find']({'where':{'id':_0x4ecae0[_0xb434('0x47')]['id']}})['then'](handleEntityNotFound(_0x435c98,null))[_0xb434('0x27')](function(_0x1970c1){if(_0x1970c1){return _0x1970c1[_0xb434('0x84')](_0x4ecae0[_0xb434('0x4e')][_0xb434('0x80')],_[_0xb434('0x85')](_0x4ecae0[_0xb434('0x4e')],[_0xb434('0x80'),'id'])||{})[_0xb434('0x86')](function(_0x5ddd0c){for(var _0x81fd65=0x0;_0x81fd65<_0x4ecae0['body'][_0xb434('0x80')]['length'];_0x81fd65+=0x1){socket[_0xb434('0x6d')](_0xb434('0x6e'),{'UserId':Number(_0x4ecae0[_0xb434('0x4e')][_0xb434('0x80')][_0x81fd65]),'SmsQueueId':Number(_0x4ecae0['params']['id'])});}return _0x5ddd0c;});}})[_0xb434('0x27')](respondWithResult(_0x435c98,null))[_0xb434('0x46')](handleError(_0x435c98,null));};exports[_0xb434('0x82')]=function(_0x18bcd8,_0x1a9f59,_0x1e7d92){return db['SmsQueue'][_0xb434('0x4c')]({'where':{'id':_0x18bcd8[_0xb434('0x47')]['id']}})[_0xb434('0x27')](handleEntityNotFound(_0x1a9f59,null))[_0xb434('0x27')](function(_0xc65345){if(_0xc65345){return _0xc65345[_0xb434('0x82')](_0x18bcd8[_0xb434('0x37')][_0xb434('0x80')])[_0xb434('0x27')](function(){if(_['isArray'](_0x18bcd8['query'][_0xb434('0x80')])){for(var _0x1d8bfe=0x0;_0x1d8bfe<_0x18bcd8[_0xb434('0x37')]['ids']['length'];_0x1d8bfe+=0x1){socket['emit'](_0xb434('0x83'),{'UserId':Number(_0x18bcd8['query'][_0xb434('0x80')][_0x1d8bfe]),'SmsQueueId':Number(_0x18bcd8[_0xb434('0x47')]['id'])});}}else{socket[_0xb434('0x6d')]('userSmsQueue:remove',{'UserId':Number(_0x18bcd8[_0xb434('0x37')]['ids']),'SmsQueueId':Number(_0x18bcd8[_0xb434('0x47')]['id'])});}});}})[_0xb434('0x27')](respondWithStatusCode(_0x1a9f59,null))[_0xb434('0x46')](handleError(_0x1a9f59,null));};exports['getAgents']=function(_0x285698,_0x1b7bee,_0x5e6bb5){var _0x2ae674={};var _0x5714c5={};var _0x4b3143;var _0x16e664;return db[_0xb434('0x33')][_0xb434('0x87')]({'where':{'id':_0x285698['params']['id']}})['then'](handleEntityNotFound(_0x1b7bee,null))[_0xb434('0x27')](function(_0x336c45){if(_0x336c45){_0x4b3143=_0x336c45;_0x5714c5[_0xb434('0x3b')]=_['keys'](db['User']['rawAttributes']);_0x5714c5['query']=_[_0xb434('0x38')](_0x285698[_0xb434('0x37')]);_0x5714c5[_0xb434('0x39')]=_[_0xb434('0x3a')](_0x5714c5[_0xb434('0x3b')],_0x5714c5[_0xb434('0x37')]);_0x2ae674['attributes']=_[_0xb434('0x3a')](_0x5714c5[_0xb434('0x3b')],qs[_0xb434('0x48')](_0x285698[_0xb434('0x37')][_0xb434('0x48')]));_0x2ae674[_0xb434('0x3c')]=_0x2ae674[_0xb434('0x3c')][_0xb434('0x49')]?_0x2ae674['attributes']:_0x5714c5[_0xb434('0x3b')];_0x2ae674[_0xb434('0x3e')]=qs[_0xb434('0x3f')](_0x285698[_0xb434('0x37')][_0xb434('0x3f')]);_0x2ae674[_0xb434('0x40')]=qs[_0xb434('0x39')](_[_0xb434('0x41')](_0x285698[_0xb434('0x37')],_0x5714c5[_0xb434('0x39')]));if(_0x285698[_0xb434('0x37')][_0xb434('0x42')]){_0x2ae674[_0xb434('0x40')]=_[_0xb434('0x43')](_0x2ae674[_0xb434('0x40')],{'$or':_[_0xb434('0x32')](_0x2ae674[_0xb434('0x3c')],function(_0xc1ec30){var _0x58e91e={};_0x58e91e[_0xc1ec30]={'$like':'%'+_0x285698['query'][_0xb434('0x42')]+'%'};return _0x58e91e;})});}_0x2ae674=_[_0xb434('0x43')]({},_0x2ae674,_0x285698[_0xb434('0x44')]);return _0x4b3143['getAgents'](_0x2ae674);}})[_0xb434('0x27')](function(_0x3b3c00){if(_0x3b3c00){_0x16e664=_0x3b3c00[_0xb434('0x49')];if(!_0x285698[_0xb434('0x37')][_0xb434('0x62')]('nolimit')){_0x2ae674['limit']=qs[_0xb434('0x20')](_0x285698[_0xb434('0x37')]['limit']);_0x2ae674[_0xb434('0x1f')]=qs[_0xb434('0x1f')](_0x285698[_0xb434('0x37')][_0xb434('0x1f')]);}return _0x4b3143[_0xb434('0x88')](_0x2ae674);}})[_0xb434('0x27')](function(_0x1dc445){if(_0x1dc445){return _0x1dc445?{'count':_0x16e664,'rows':_0x1dc445}:null;}})[_0xb434('0x27')](respondWithResult(_0x1b7bee,null))[_0xb434('0x46')](handleError(_0x1b7bee,null));};
\ No newline at end of file
+var _0x4219=['findAll','rows','catch','show','keys','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','error','params','describe','getMembers','findOne','hasOwnProperty','nolimit','order','SmsQueueId','User','findAndCountAll','UserId','smsPause','updatedAt','createdAt','format','SIP','getTeams','Team','addTeams','voicePause','interface','flatMap','Agents','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','every','TeamId','includes','union','compact','value','transaction','ids','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x3d093c,_0x191518){var _0x12e14e=function(_0x58f0ac){while(--_0x58f0ac){_0x3d093c['push'](_0x3d093c['shift']());}};_0x12e14e(++_0x191518);}(_0x4219,0xdc));var _0x9421=function(_0x3798e0,_0x35573f){_0x3798e0=_0x3798e0-0x0;var _0x21dbd2=_0x4219[_0x3798e0];return _0x21dbd2;};'use strict';var emlformat=require(_0x9421('0x0'));var rimraf=require(_0x9421('0x1'));var zipdir=require(_0x9421('0x2'));var jsonpatch=require(_0x9421('0x3'));var rp=require(_0x9421('0x4'));var moment=require(_0x9421('0x5'));var BPromise=require(_0x9421('0x6'));var Mustache=require(_0x9421('0x7'));var util=require(_0x9421('0x8'));var path=require(_0x9421('0x9'));var sox=require(_0x9421('0xa'));var csv=require(_0x9421('0xb'));var ejs=require(_0x9421('0xc'));var fs=require('fs');var fs_extra=require(_0x9421('0xd'));var _=require(_0x9421('0xe'));var squel=require(_0x9421('0xf'));var crypto=require(_0x9421('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x9421('0x11'));var toCsv=require(_0x9421('0xb'));var querystring=require(_0x9421('0x12'));var Papa=require(_0x9421('0x13'));var Redis=require(_0x9421('0x14'));var authService=require(_0x9421('0x15'));var qs=require(_0x9421('0x16'));var as=require(_0x9421('0x17'));var hardwareService=require(_0x9421('0x18'));var logger=require(_0x9421('0x19'))('api');var utils=require(_0x9421('0x1a'));var config=require(_0x9421('0x1b'));var licenseUtil=require(_0x9421('0x1c'));var db=require(_0x9421('0x1d'))['db'];config['redis']=_[_0x9421('0x1e')](config[_0x9421('0x1f')],{'host':'localhost','port':0x18eb});var socket=require(_0x9421('0x20'))(new Redis(config[_0x9421('0x1f')]));require(_0x9421('0x21'))[_0x9421('0x22')](socket);function respondWithStatusCode(_0xac7e3,_0x40c3fd){_0x40c3fd=_0x40c3fd||0xcc;return function(_0x351224){if(_0x351224){return _0xac7e3[_0x9421('0x23')](_0x40c3fd);}return _0xac7e3[_0x9421('0x24')](_0x40c3fd)[_0x9421('0x25')]();};}function respondWithResult(_0x2bf6dd,_0xce05c7){_0xce05c7=_0xce05c7||0xc8;return function(_0x53c9cf){if(_0x53c9cf){return _0x2bf6dd[_0x9421('0x24')](_0xce05c7)[_0x9421('0x26')](_0x53c9cf);}};}function respondWithFilteredResult(_0x5b7e98,_0x3452ce){return function(_0x4fd677){if(_0x4fd677){var _0x2144fc=typeof _0x3452ce[_0x9421('0x27')]===_0x9421('0x28')&&typeof _0x3452ce[_0x9421('0x29')]==='undefined';var _0x5987c2=_0x4fd677[_0x9421('0x2a')];var _0x2c0d76=_0x2144fc?0x0:_0x3452ce[_0x9421('0x27')];var _0xb9126f=_0x2144fc?_0x4fd677[_0x9421('0x2a')]:_0x3452ce[_0x9421('0x27')]+_0x3452ce[_0x9421('0x29')];var _0x6f5f05;if(_0xb9126f>=_0x5987c2){_0xb9126f=_0x5987c2;_0x6f5f05=0xc8;}else{_0x6f5f05=0xce;}_0x5b7e98['status'](_0x6f5f05);return _0x5b7e98['set'](_0x9421('0x2b'),_0x2c0d76+'-'+_0xb9126f+'/'+_0x5987c2)[_0x9421('0x26')](_0x4fd677);}return null;};}function patchUpdates(_0x43a264){return function(_0x3c505d){try{jsonpatch['apply'](_0x3c505d,_0x43a264,!![]);}catch(_0x2abc74){return BPromise[_0x9421('0x2c')](_0x2abc74);}return _0x3c505d[_0x9421('0x2d')]();};}function saveUpdates(_0x5d7335,_0x5bcf8b){return function(_0x5755c6){if(_0x5755c6){return _0x5755c6[_0x9421('0x2e')](_0x5d7335)[_0x9421('0x2f')](function(_0x3a1c47){return _0x3a1c47;});}return null;};}function removeEntity(_0x1f2414,_0x464a94){return function(_0x2ce99e){if(_0x2ce99e){return _0x2ce99e[_0x9421('0x30')]()[_0x9421('0x2f')](function(){var _0x4bcfe7=_0x2ce99e[_0x9421('0x31')]({'plain':!![]});var _0x5ce6cf=_0x9421('0x32');return db[_0x9421('0x33')][_0x9421('0x30')]({'where':{'type':_0x5ce6cf,'resourceId':_0x4bcfe7['id']}})[_0x9421('0x2f')](function(){return _0x2ce99e;});})['then'](function(){_0x1f2414[_0x9421('0x24')](0xcc)[_0x9421('0x25')]();});}};}function handleEntityNotFound(_0x457c51,_0xcb80ae){return function(_0x50ecb9){if(!_0x50ecb9){_0x457c51[_0x9421('0x23')](0x194);}return _0x50ecb9;};}function handleError(_0xd498a7,_0x216c24){_0x216c24=_0x216c24||0x1f4;return function(_0x667678){logger['error'](_0x667678['stack']);if(_0x667678[_0x9421('0x34')]){delete _0x667678['name'];}_0xd498a7[_0x9421('0x24')](_0x216c24)[_0x9421('0x35')](_0x667678);};}exports[_0x9421('0x36')]=function(_0x2fa6d0,_0x3247af){var _0x5665e3={},_0x588098={},_0x532368={'count':0x0,'rows':[]};var _0x152271=_[_0x9421('0x37')](db[_0x9421('0x38')][_0x9421('0x39')],function(_0xfe63b1){return{'name':_0xfe63b1[_0x9421('0x3a')],'type':_0xfe63b1[_0x9421('0x3b')]['key']};});_0x588098['model']=_[_0x9421('0x37')](_0x152271,_0x9421('0x34'));_0x588098[_0x9421('0x3c')]=_['keys'](_0x2fa6d0['query']);_0x588098[_0x9421('0x3d')]=_[_0x9421('0x3e')](_0x588098[_0x9421('0x3f')],_0x588098[_0x9421('0x3c')]);_0x5665e3[_0x9421('0x40')]=_[_0x9421('0x3e')](_0x588098['model'],qs['fields'](_0x2fa6d0[_0x9421('0x3c')][_0x9421('0x41')]));_0x5665e3[_0x9421('0x40')]=_0x5665e3['attributes'][_0x9421('0x42')]?_0x5665e3[_0x9421('0x40')]:_0x588098[_0x9421('0x3f')];if(!_0x2fa6d0[_0x9421('0x3c')]['hasOwnProperty']('nolimit')){_0x5665e3['limit']=qs[_0x9421('0x29')](_0x2fa6d0[_0x9421('0x3c')][_0x9421('0x29')]);_0x5665e3[_0x9421('0x27')]=qs[_0x9421('0x27')](_0x2fa6d0[_0x9421('0x3c')][_0x9421('0x27')]);}_0x5665e3['order']=qs[_0x9421('0x43')](_0x2fa6d0[_0x9421('0x3c')][_0x9421('0x43')]);_0x5665e3[_0x9421('0x44')]=qs[_0x9421('0x3d')](_[_0x9421('0x45')](_0x2fa6d0[_0x9421('0x3c')],_0x588098['filters']),_0x152271);if(_0x2fa6d0['query'][_0x9421('0x46')]){_0x5665e3[_0x9421('0x44')]=_[_0x9421('0x47')](_0x5665e3[_0x9421('0x44')],{'$or':_[_0x9421('0x37')](_0x152271,function(_0x1d5d5a){if(_0x1d5d5a[_0x9421('0x3b')]!==_0x9421('0x48')){var _0x17849e={};_0x17849e[_0x1d5d5a['name']]={'$like':'%'+_0x2fa6d0[_0x9421('0x3c')][_0x9421('0x46')]+'%'};return _0x17849e;}})});}_0x5665e3=_[_0x9421('0x47')]({},_0x5665e3,_0x2fa6d0[_0x9421('0x49')]);var _0x5254c3={'where':_0x5665e3['where']};return db['SmsQueue'][_0x9421('0x2a')](_0x5254c3)[_0x9421('0x2f')](function(_0x2d3108){_0x532368[_0x9421('0x2a')]=_0x2d3108;if(_0x2fa6d0[_0x9421('0x3c')]['includeAll']){_0x5665e3['include']=[{'all':!![]}];}return db[_0x9421('0x38')][_0x9421('0x4a')](_0x5665e3);})[_0x9421('0x2f')](function(_0x45d8bc){_0x532368[_0x9421('0x4b')]=_0x45d8bc;return _0x532368;})[_0x9421('0x2f')](respondWithFilteredResult(_0x3247af,_0x5665e3))[_0x9421('0x4c')](handleError(_0x3247af,null));};exports[_0x9421('0x4d')]=function(_0x20b6d3,_0x1f790b){var _0x36c303={'raw':!![],'where':{'id':_0x20b6d3['params']['id']}},_0x57eaa3={};_0x57eaa3[_0x9421('0x3f')]=_['keys'](db[_0x9421('0x38')][_0x9421('0x39')]);_0x57eaa3[_0x9421('0x3c')]=_[_0x9421('0x4e')](_0x20b6d3[_0x9421('0x3c')]);_0x57eaa3['filters']=_[_0x9421('0x3e')](_0x57eaa3[_0x9421('0x3f')],_0x57eaa3[_0x9421('0x3c')]);_0x36c303[_0x9421('0x40')]=_[_0x9421('0x3e')](_0x57eaa3[_0x9421('0x3f')],qs['fields'](_0x20b6d3[_0x9421('0x3c')][_0x9421('0x41')]));_0x36c303['attributes']=_0x36c303['attributes'][_0x9421('0x42')]?_0x36c303[_0x9421('0x40')]:_0x57eaa3['model'];if(_0x20b6d3[_0x9421('0x3c')][_0x9421('0x4f')]){_0x36c303['include']=[{'all':!![]}];}_0x36c303=_[_0x9421('0x47')]({},_0x36c303,_0x20b6d3[_0x9421('0x49')]);return db[_0x9421('0x38')]['find'](_0x36c303)[_0x9421('0x2f')](handleEntityNotFound(_0x1f790b,null))['then'](respondWithResult(_0x1f790b,null))[_0x9421('0x4c')](handleError(_0x1f790b,null));};exports[_0x9421('0x50')]=function(_0x2da340,_0xaa617f){return db[_0x9421('0x38')]['create'](_0x2da340[_0x9421('0x51')],{})['then'](function(_0x2c74b4){var _0x3c22f8=_0x2da340[_0x9421('0x52')][_0x9421('0x31')]({'plain':!![]});if(!_0x3c22f8)throw new Error(_0x9421('0x53'));if(_0x3c22f8['role']===_0x9421('0x52')){var _0x4056e9=_0x2c74b4[_0x9421('0x31')]({'plain':!![]});var _0x5b6fa7=_0x9421('0x32');return db[_0x9421('0x54')][_0x9421('0x55')]({'where':{'name':_0x5b6fa7,'userProfileId':_0x3c22f8[_0x9421('0x56')]},'raw':!![]})[_0x9421('0x2f')](function(_0xf4fb53){if(_0xf4fb53&&_0xf4fb53[_0x9421('0x57')]===0x0){return db[_0x9421('0x33')][_0x9421('0x50')]({'name':_0x4056e9[_0x9421('0x34')],'resourceId':_0x4056e9['id'],'type':_0xf4fb53[_0x9421('0x34')],'sectionId':_0xf4fb53['id']},{})[_0x9421('0x2f')](function(){return _0x2c74b4;});}else{return _0x2c74b4;}})['catch'](function(_0x31a1e7){logger[_0x9421('0x58')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31a1e7);throw _0x31a1e7;});}return _0x2c74b4;})[_0x9421('0x2f')](respondWithResult(_0xaa617f,0xc9))[_0x9421('0x4c')](handleError(_0xaa617f,null));};exports['update']=function(_0x53c57f,_0xc16d62){if(_0x53c57f['body']['id']){delete _0x53c57f[_0x9421('0x51')]['id'];}return db[_0x9421('0x38')][_0x9421('0x55')]({'where':{'id':_0x53c57f['params']['id']}})['then'](handleEntityNotFound(_0xc16d62,null))[_0x9421('0x2f')](saveUpdates(_0x53c57f['body'],null))[_0x9421('0x2f')](respondWithResult(_0xc16d62,null))[_0x9421('0x4c')](handleError(_0xc16d62,null));};exports[_0x9421('0x30')]=function(_0x4381de,_0x51a79f){return db[_0x9421('0x38')]['find']({'where':{'id':_0x4381de[_0x9421('0x59')]['id']}})['then'](handleEntityNotFound(_0x51a79f,null))['then'](removeEntity(_0x51a79f,null))[_0x9421('0x4c')](handleError(_0x51a79f,null));};exports[_0x9421('0x5a')]=function(_0x55e490,_0x2cbd2d){return db[_0x9421('0x38')][_0x9421('0x5a')]()[_0x9421('0x2f')](respondWithResult(_0x2cbd2d,null))[_0x9421('0x4c')](handleError(_0x2cbd2d,null));};exports[_0x9421('0x5b')]=function(_0x3927e4,_0x1c93ad,_0xefb4c7){var _0x77ca5d={'raw':!![],'where':{}},_0x521dfb={},_0x2c0a88;return db[_0x9421('0x38')][_0x9421('0x5c')]({'where':{'id':_0x3927e4[_0x9421('0x59')]['id']}})['then'](handleEntityNotFound(_0x1c93ad,null))['then'](function(_0x5b8e8f){if(_0x5b8e8f){_0x2c0a88=_0x5b8e8f[_0x9421('0x31')]({'plain':!![]});_0x521dfb['model']=_[_0x9421('0x4e')](db['UserSmsQueue']['rawAttributes']);_0x521dfb[_0x9421('0x3c')]=_[_0x9421('0x4e')](_0x3927e4[_0x9421('0x3c')]);_0x521dfb[_0x9421('0x3d')]=_[_0x9421('0x3e')](_0x521dfb['model'],_0x521dfb[_0x9421('0x3c')]);_0x77ca5d[_0x9421('0x40')]=_[_0x9421('0x3e')](_0x521dfb[_0x9421('0x3f')],qs[_0x9421('0x41')](_0x3927e4['query'][_0x9421('0x41')]));_0x77ca5d[_0x9421('0x40')]=_0x77ca5d['attributes'][_0x9421('0x42')]?_0x77ca5d[_0x9421('0x40')]:_0x521dfb[_0x9421('0x3f')];if(!_0x3927e4[_0x9421('0x3c')][_0x9421('0x5d')](_0x9421('0x5e'))){_0x77ca5d[_0x9421('0x29')]=qs[_0x9421('0x29')](_0x3927e4[_0x9421('0x3c')][_0x9421('0x29')]);_0x77ca5d[_0x9421('0x27')]=qs['offset'](_0x3927e4['query'][_0x9421('0x27')]);}_0x77ca5d[_0x9421('0x5f')]=qs[_0x9421('0x43')](_0x3927e4[_0x9421('0x3c')][_0x9421('0x43')]);_0x77ca5d[_0x9421('0x44')]=qs[_0x9421('0x3d')](_[_0x9421('0x45')](_0x3927e4[_0x9421('0x3c')],_0x521dfb[_0x9421('0x3d')]));_0x77ca5d[_0x9421('0x44')][_0x9421('0x60')]=_0x5b8e8f['id'];if(_0x3927e4[_0x9421('0x3c')][_0x9421('0x46')]){_0x77ca5d[_0x9421('0x44')]=_[_0x9421('0x47')](_0x77ca5d[_0x9421('0x44')],{'$or':_[_0x9421('0x37')](_0x77ca5d['attributes'],function(_0x4d7521){var _0x628ceb={};_0x628ceb[_0x4d7521]={'$like':'%'+_0x3927e4[_0x9421('0x3c')][_0x9421('0x46')]+'%'};return _0x628ceb;})});}_0x77ca5d=_[_0x9421('0x47')]({},_0x77ca5d,_0x3927e4[_0x9421('0x49')]);return db['UserSmsQueue'][_0x9421('0x4a')](_0x77ca5d);}})[_0x9421('0x2f')](function(_0x58de3b){if(_0x58de3b){return db[_0x9421('0x61')][_0x9421('0x62')]({'where':{'id':_[_0x9421('0x37')](_0x58de3b,_0x9421('0x63')),'role':'agent'},'attributes':['id',_0x9421('0x34'),_0x9421('0x64'),_0x9421('0x65'),_0x9421('0x66')]});}})[_0x9421('0x2f')](function(_0x19c441){if(_0x19c441){return{'count':_0x19c441[_0x9421('0x2a')],'rows':_[_0x9421('0x37')](_0x19c441['rows'],function(_0x385fea){return{'membername':_0x385fea['name'],'UserId':_0x385fea['id'],'queue_name':_0x2c0a88[_0x9421('0x34')],'SmsQueueId':_0x2c0a88['id'],'interface':util[_0x9421('0x67')]('%s/%s',_0x9421('0x68'),_0x385fea[_0x9421('0x34')]),'penalty':0x0,'paused':_0x385fea[_0x9421('0x64')],'createdAt':_0x385fea[_0x9421('0x66')],'updatedAt':_0x385fea['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x9421('0x2f')](respondWithFilteredResult(_0x1c93ad,_0x77ca5d))['catch'](handleError(_0x1c93ad,null));};exports[_0x9421('0x69')]=function(_0x2f4a34,_0x4c73b1,_0x328614){var _0x2fe14d={};var _0x2d2515={};var _0x4783a1;var _0x546ecb;return db[_0x9421('0x38')][_0x9421('0x5c')]({'where':{'id':_0x2f4a34[_0x9421('0x59')]['id']}})[_0x9421('0x2f')](handleEntityNotFound(_0x4c73b1,null))['then'](function(_0x425040){if(_0x425040){_0x4783a1=_0x425040;_0x2d2515[_0x9421('0x3f')]=_[_0x9421('0x4e')](db[_0x9421('0x6a')]['rawAttributes']);_0x2d2515[_0x9421('0x3c')]=_[_0x9421('0x4e')](_0x2f4a34[_0x9421('0x3c')]);_0x2d2515[_0x9421('0x3d')]=_[_0x9421('0x3e')](_0x2d2515[_0x9421('0x3f')],_0x2d2515['query']);_0x2fe14d[_0x9421('0x40')]=_[_0x9421('0x3e')](_0x2d2515[_0x9421('0x3f')],qs[_0x9421('0x41')](_0x2f4a34[_0x9421('0x3c')][_0x9421('0x41')]));_0x2fe14d[_0x9421('0x40')]=_0x2fe14d[_0x9421('0x40')][_0x9421('0x42')]?_0x2fe14d[_0x9421('0x40')]:_0x2d2515[_0x9421('0x3f')];_0x2fe14d[_0x9421('0x5f')]=qs[_0x9421('0x43')](_0x2f4a34[_0x9421('0x3c')][_0x9421('0x43')]);_0x2fe14d[_0x9421('0x44')]=qs[_0x9421('0x3d')](_['pick'](_0x2f4a34[_0x9421('0x3c')],_0x2d2515[_0x9421('0x3d')]));if(_0x2f4a34[_0x9421('0x3c')][_0x9421('0x46')]){_0x2fe14d[_0x9421('0x44')]=_[_0x9421('0x47')](_0x2fe14d[_0x9421('0x44')],{'$or':_[_0x9421('0x37')](_0x2fe14d[_0x9421('0x40')],function(_0x5dc86c){var _0x404f24={};_0x404f24[_0x5dc86c]={'$like':'%'+_0x2f4a34['query'][_0x9421('0x46')]+'%'};return _0x404f24;})});}_0x2fe14d=_[_0x9421('0x47')]({},_0x2fe14d,_0x2f4a34[_0x9421('0x49')]);return _0x4783a1[_0x9421('0x69')](_0x2fe14d);}})[_0x9421('0x2f')](function(_0x42f177){if(_0x42f177){_0x546ecb=_0x42f177[_0x9421('0x42')];if(!_0x2f4a34['query']['hasOwnProperty'](_0x9421('0x5e'))){_0x2fe14d['limit']=qs[_0x9421('0x29')](_0x2f4a34[_0x9421('0x3c')][_0x9421('0x29')]);_0x2fe14d[_0x9421('0x27')]=qs[_0x9421('0x27')](_0x2f4a34[_0x9421('0x3c')][_0x9421('0x27')]);}return _0x4783a1['getTeams'](_0x2fe14d);}})[_0x9421('0x2f')](function(_0x5c2e6a){if(_0x5c2e6a){return _0x5c2e6a?{'count':_0x546ecb,'rows':_0x5c2e6a}:null;}})[_0x9421('0x2f')](respondWithResult(_0x4c73b1,null))['catch'](handleError(_0x4c73b1,null));};exports[_0x9421('0x6b')]=function(_0x336d52,_0x2c0684,_0x3056ea){var _0x336735=_0x336d52[_0x9421('0x51')]['ids'];return db[_0x9421('0x6a')]['findAll']({'where':{'id':_0x336735},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x9421('0x34'),'online',_0x9421('0x6c'),_0x9421('0x6d')],'raw':!![]}]})[_0x9421('0x2f')](function(_0x3fbc05){if(_0x3fbc05){var _0x3dfc3b=_[_0x9421('0x6e')](_0x3fbc05,function(_0x3bc8c2){var _0xb89c99=_0x3bc8c2[_0x9421('0x31')]({'plain':!![]});return _0xb89c99[_0x9421('0x6f')];});return db[_0x9421('0x38')][_0x9421('0x55')]({'where':{'id':_0x336d52[_0x9421('0x59')]['id']}})['then'](function(_0x1e8509){return db['sequelize']['transaction'](function(_0x25b186){return _0x1e8509[_0x9421('0x6b')](_0x336735,{'transaction':_0x25b186})[_0x9421('0x2f')](function(){return BPromise[_0x9421('0x70')](_0x3dfc3b,function(_0x3dd35f){return db['UserSmsQueue'][_0x9421('0x71')]({'where':{'UserId':_0x3dd35f['id'],'SmsQueueId':_0x336d52['params']['id']},'transaction':_0x25b186});});})[_0x9421('0x2f')](function(){_0x3dfc3b[_0x9421('0x72')](function(_0x1a5cf7){socket[_0x9421('0x73')](_0x9421('0x74'),{'UserId':_0x1a5cf7['id'],'SmsQueueId':_0x1e8509['id']});});});});});}})[_0x9421('0x2f')](respondWithStatusCode(_0x2c0684,null))['catch'](handleError(_0x2c0684,null));};exports[_0x9421('0x75')]=function(_0x1a17bb,_0x515fbe,_0x5c47e9){return db['Team']['findAll']({'where':{'id':_0x1a17bb[_0x9421('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9421('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x9421('0x2f')](handleEntityNotFound(_0x515fbe,null))[_0x9421('0x2f')](function(_0x21d334){var _0x55ab73=_[_0x9421('0x37')](_0x21d334,'id');var _0x38e967=[];var _0x87c941=[];var _0x5dfa3a=squel['select']();_0x5dfa3a[_0x9421('0x76')](_0x9421('0x77'))[_0x9421('0x78')](_0x9421('0x79'),'tq')[_0x9421('0x7a')](_0x9421('0x7b'),'ut',_0x9421('0x7c'))[_0x9421('0x44')](_0x9421('0x7d'),_0x1a17bb[_0x9421('0x59')]['id']);for(var _0x282ce2=0x0;_0x282ce2<_0x21d334['length'];_0x282ce2+=0x1){let _0x468de7=_0x21d334[_0x282ce2];for(var _0x5b57b8=0x0;_0x5b57b8<_0x468de7[_0x9421('0x6f')]['length'];_0x5b57b8+=0x1){let _0x21d1e5=_0x468de7[_0x9421('0x6f')][_0x5b57b8];var _0xb8750=_0x5dfa3a[_0x9421('0x7e')]();_0xb8750[_0x9421('0x44')](_0x9421('0x7f'),_0x21d1e5['id']);_0x87c941[_0x9421('0x80')](db[_0x9421('0x81')]['query'](_0xb8750[_0x9421('0x82')](),{'type':db[_0x9421('0x81')]['QueryTypes']['SELECT']})['then'](function(_0x1b7072){if(_0x1b7072[_0x9421('0x42')]===0x1){return _0x21d1e5['id'];}else{var _0x441197=_[_0x9421('0x83')](_[_0x9421('0x37')](_0x1b7072,_0x9421('0x84')),function(_0xeb26ee){return _[_0x9421('0x85')](_0x55ab73,_0xeb26ee);});if(_0x441197){return _0x21d1e5['id'];}}}));}}return BPromise['all'](_0x87c941)['then'](function(_0x4cb015){_0x38e967=_(_0x38e967)[_0x9421('0x86')](_0x4cb015)[_0x9421('0x87')]()[_0x9421('0x88')]();return db[_0x9421('0x38')]['find']({'where':{'id':_0x1a17bb[_0x9421('0x59')]['id']}})[_0x9421('0x2f')](function(_0x275bf1){return db['sequelize'][_0x9421('0x89')](function(_0x34e988){return _0x275bf1['removeTeams'](_0x1a17bb[_0x9421('0x3c')][_0x9421('0x8a')],{'transaction':_0x34e988})[_0x9421('0x2f')](function(){if(!_[_0x9421('0x8b')](_0x38e967)){return _0x275bf1[_0x9421('0x8c')](_0x38e967,{'transaction':_0x34e988});}})[_0x9421('0x2f')](function(){_0x38e967[_0x9421('0x72')](function(_0xf07e7a){socket['emit'](_0x9421('0x8d'),{'UserId':_0xf07e7a,'SmsQueueId':_0x275bf1['id']});});});});});});})['then'](respondWithStatusCode(_0x515fbe,null))[_0x9421('0x4c')](handleError(_0x515fbe,null));};exports[_0x9421('0x8e')]=function(_0x427987,_0x5bbca2,_0x22266e){return db[_0x9421('0x38')][_0x9421('0x55')]({'where':{'id':_0x427987['params']['id']}})['then'](handleEntityNotFound(_0x5bbca2,null))['then'](function(_0x41a8dd){if(_0x41a8dd){return _0x41a8dd[_0x9421('0x8e')](_0x427987['body'][_0x9421('0x8a')],_[_0x9421('0x8f')](_0x427987[_0x9421('0x51')],[_0x9421('0x8a'),'id'])||{})[_0x9421('0x90')](function(_0x397d21){for(var _0x1814e3=0x0;_0x1814e3<_0x427987[_0x9421('0x51')][_0x9421('0x8a')]['length'];_0x1814e3+=0x1){socket[_0x9421('0x73')](_0x9421('0x74'),{'UserId':Number(_0x427987[_0x9421('0x51')][_0x9421('0x8a')][_0x1814e3]),'SmsQueueId':Number(_0x427987[_0x9421('0x59')]['id'])});}return _0x397d21;});}})['then'](respondWithResult(_0x5bbca2,null))[_0x9421('0x4c')](handleError(_0x5bbca2,null));};exports[_0x9421('0x8c')]=function(_0x4407ec,_0x3fa722,_0x3e4dfd){return db[_0x9421('0x38')][_0x9421('0x55')]({'where':{'id':_0x4407ec[_0x9421('0x59')]['id']}})[_0x9421('0x2f')](handleEntityNotFound(_0x3fa722,null))[_0x9421('0x2f')](function(_0x1c24b1){if(_0x1c24b1){return _0x1c24b1[_0x9421('0x8c')](_0x4407ec[_0x9421('0x3c')][_0x9421('0x8a')])[_0x9421('0x2f')](function(){if(_[_0x9421('0x91')](_0x4407ec['query'][_0x9421('0x8a')])){for(var _0x29f273=0x0;_0x29f273<_0x4407ec[_0x9421('0x3c')][_0x9421('0x8a')][_0x9421('0x42')];_0x29f273+=0x1){socket['emit'](_0x9421('0x8d'),{'UserId':Number(_0x4407ec['query']['ids'][_0x29f273]),'SmsQueueId':Number(_0x4407ec[_0x9421('0x59')]['id'])});}}else{socket[_0x9421('0x73')]('userSmsQueue:remove',{'UserId':Number(_0x4407ec[_0x9421('0x3c')][_0x9421('0x8a')]),'SmsQueueId':Number(_0x4407ec[_0x9421('0x59')]['id'])});}});}})[_0x9421('0x2f')](respondWithStatusCode(_0x3fa722,null))['catch'](handleError(_0x3fa722,null));};exports[_0x9421('0x92')]=function(_0x153b53,_0x1fb8f1,_0x851b5d){var _0x4c157c={};var _0x58f54b={};var _0x3d65a0;var _0x37dfc1;return db['SmsQueue'][_0x9421('0x5c')]({'where':{'id':_0x153b53['params']['id']}})['then'](handleEntityNotFound(_0x1fb8f1,null))[_0x9421('0x2f')](function(_0x28c22f){if(_0x28c22f){_0x3d65a0=_0x28c22f;_0x58f54b[_0x9421('0x3f')]=_[_0x9421('0x4e')](db[_0x9421('0x61')][_0x9421('0x39')]);_0x58f54b[_0x9421('0x3c')]=_[_0x9421('0x4e')](_0x153b53[_0x9421('0x3c')]);_0x58f54b[_0x9421('0x3d')]=_[_0x9421('0x3e')](_0x58f54b[_0x9421('0x3f')],_0x58f54b[_0x9421('0x3c')]);_0x4c157c[_0x9421('0x40')]=_[_0x9421('0x3e')](_0x58f54b[_0x9421('0x3f')],qs[_0x9421('0x41')](_0x153b53[_0x9421('0x3c')][_0x9421('0x41')]));_0x4c157c[_0x9421('0x40')]=_0x4c157c['attributes'][_0x9421('0x42')]?_0x4c157c[_0x9421('0x40')]:_0x58f54b[_0x9421('0x3f')];_0x4c157c[_0x9421('0x5f')]=qs[_0x9421('0x43')](_0x153b53[_0x9421('0x3c')][_0x9421('0x43')]);_0x4c157c[_0x9421('0x44')]=qs[_0x9421('0x3d')](_[_0x9421('0x45')](_0x153b53[_0x9421('0x3c')],_0x58f54b[_0x9421('0x3d')]));if(_0x153b53[_0x9421('0x3c')][_0x9421('0x46')]){_0x4c157c[_0x9421('0x44')]=_[_0x9421('0x47')](_0x4c157c['where'],{'$or':_['map'](_0x4c157c[_0x9421('0x40')],function(_0x137954){var _0x1f03af={};_0x1f03af[_0x137954]={'$like':'%'+_0x153b53['query'][_0x9421('0x46')]+'%'};return _0x1f03af;})});}_0x4c157c=_[_0x9421('0x47')]({},_0x4c157c,_0x153b53[_0x9421('0x49')]);return _0x3d65a0[_0x9421('0x92')](_0x4c157c);}})[_0x9421('0x2f')](function(_0x72b888){if(_0x72b888){_0x37dfc1=_0x72b888[_0x9421('0x42')];if(!_0x153b53['query'][_0x9421('0x5d')]('nolimit')){_0x4c157c['limit']=qs[_0x9421('0x29')](_0x153b53[_0x9421('0x3c')][_0x9421('0x29')]);_0x4c157c[_0x9421('0x27')]=qs[_0x9421('0x27')](_0x153b53[_0x9421('0x3c')][_0x9421('0x27')]);}return _0x3d65a0[_0x9421('0x92')](_0x4c157c);}})[_0x9421('0x2f')](function(_0x1977aa){if(_0x1977aa){return _0x1977aa?{'count':_0x37dfc1,'rows':_0x1977aa}:null;}})[_0x9421('0x2f')](respondWithResult(_0x1fb8f1,null))[_0x9421('0x4c')](handleError(_0x1fb8f1,null));};
\ No newline at end of file
index 21c69f4..02a227f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66ab=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x432582,_0x41bef5){var _0x51ac0a=function(_0xbbd4d4){while(--_0xbbd4d4){_0x432582['push'](_0x432582['shift']());}};_0x51ac0a(++_0x41bef5);}(_0x66ab,0x15b));var _0xb66a=function(_0x58653e,_0x5f0211){_0x58653e=_0x58653e-0x0;var _0x4b5e4b=_0x66ab[_0x58653e];return _0x4b5e4b;};'use strict';var EventEmitter=require(_0xb66a('0x0'));var SmsQueue=require(_0xb66a('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xb66a('0x2')](0x0);var events={'afterCreate':_0xb66a('0x3'),'afterUpdate':_0xb66a('0x4'),'afterDestroy':_0xb66a('0x5')};function emitEvent(_0x46e8ff){return function(_0x2e02e3,_0x9ae74d,_0x2c736e){SmsQueueEvents[_0xb66a('0x6')](_0x46e8ff+':'+_0x2e02e3['id'],_0x2e02e3);SmsQueueEvents[_0xb66a('0x6')](_0x46e8ff,_0x2e02e3);_0x2c736e(null);};}for(var e in events){if(events[_0xb66a('0x7')](e)){var event=events[e];SmsQueue[_0xb66a('0x8')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x8504=['exports','events','../../mysqldb','SmsQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x1404c9,_0x41f8b0){var _0x24f6b2=function(_0x4dadac){while(--_0x4dadac){_0x1404c9['push'](_0x1404c9['shift']());}};_0x24f6b2(++_0x41f8b0);}(_0x8504,0x156));var _0x4850=function(_0x5cbbeb,_0x142ebc){_0x5cbbeb=_0x5cbbeb-0x0;var _0x4cf278=_0x8504[_0x5cbbeb];return _0x4cf278;};'use strict';var EventEmitter=require(_0x4850('0x0'));var SmsQueue=require(_0x4850('0x1'))['db'][_0x4850('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x4850('0x3')](0x0);var events={'afterCreate':_0x4850('0x4'),'afterUpdate':_0x4850('0x5'),'afterDestroy':_0x4850('0x6')};function emitEvent(_0x357d3b){return function(_0x20a8cd,_0x402a28,_0x516835){SmsQueueEvents[_0x4850('0x7')](_0x357d3b+':'+_0x20a8cd['id'],_0x20a8cd);SmsQueueEvents[_0x4850('0x7')](_0x357d3b,_0x20a8cd);_0x516835(null);};}for(var e in events){if(events[_0x4850('0x8')](e)){var event=events[e];SmsQueue[_0x4850('0x9')](e,emitEvent(event));}}module[_0x4850('0xa')]=SmsQueueEvents;
\ No newline at end of file
index 3699420..5f8f4fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc10e=['define','SmsQueue','sms_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xc10e,0x16b));var _0xec10=function(_0x4ec90d,_0x5f80cb){_0x4ec90d=_0x4ec90d-0x0;var _0x371da6=_0xc10e[_0x4ec90d];return _0x371da6;};'use strict';var _=require(_0xec10('0x0'));var util=require(_0xec10('0x1'));var logger=require(_0xec10('0x2'))('api');var moment=require(_0xec10('0x3'));var BPromise=require(_0xec10('0x4'));var rp=require(_0xec10('0x5'));var fs=require('fs');var path=require(_0xec10('0x6'));var rimraf=require('rimraf');var config=require(_0xec10('0x7'));var attributes=require('./smsQueue.attributes');module[_0xec10('0x8')]=function(_0x4a9241,_0x2caaf4){return _0x4a9241[_0xec10('0x9')](_0xec10('0xa'),attributes,{'tableName':_0xec10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3899=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','define','SmsQueue','sms_queues','lodash','util'];(function(_0x3ed1f3,_0x3b98a0){var _0x2d97ad=function(_0x19c5df){while(--_0x19c5df){_0x3ed1f3['push'](_0x3ed1f3['shift']());}};_0x2d97ad(++_0x3b98a0);}(_0x3899,0x16a));var _0x9389=function(_0x152ff3,_0x262a31){_0x152ff3=_0x152ff3-0x0;var _0x3798a1=_0x3899[_0x152ff3];return _0x3798a1;};'use strict';var _=require(_0x9389('0x0'));var util=require(_0x9389('0x1'));var logger=require(_0x9389('0x2'))(_0x9389('0x3'));var moment=require(_0x9389('0x4'));var BPromise=require(_0x9389('0x5'));var rp=require(_0x9389('0x6'));var fs=require('fs');var path=require(_0x9389('0x7'));var rimraf=require(_0x9389('0x8'));var config=require(_0x9389('0x9'));var attributes=require(_0x9389('0xa'));module['exports']=function(_0x3ad06a,_0x322ad4){return _0x3ad06a[_0x9389('0xb')](_0x9389('0xc'),attributes,{'tableName':_0x9389('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 53bb8f8..cc4e4cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9a2=['util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','socket.io-emitter','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetSmsQueue','findAll','options','raw','where','attributes','limit','include','model','map','stringify','ShowSmsQueue','SmsQueue'];(function(_0x1daa6f,_0x5afaa7){var _0x6fe20a=function(_0x38715e){while(--_0x38715e){_0x1daa6f['push'](_0x1daa6f['shift']());}};_0x6fe20a(++_0x5afaa7);}(_0xf9a2,0x197));var _0x2f9a=function(_0x38fea6,_0x3eb746){_0x38fea6=_0x38fea6-0x0;var _0x16171f=_0xf9a2[_0x38fea6];return _0x16171f;};'use strict';var _=require('lodash');var util=require(_0x2f9a('0x0'));var moment=require('moment');var BPromise=require(_0x2f9a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2f9a('0x2'));var db=require(_0x2f9a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2f9a('0x4'))(_0x2f9a('0x5'));var config=require(_0x2f9a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2f9a('0x7')][_0x2f9a('0x8')]({'port':0x232a});config[_0x2f9a('0x9')]=_['defaults'](config[_0x2f9a('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x2f9a('0xa'))(new Redis(config[_0x2f9a('0x9')]));require(_0x2f9a('0xb'))[_0x2f9a('0xc')](socket);function respondWithRpcPromise(_0x5ef007,_0x10a76a,_0x41e258){return new BPromise(function(_0x55b393,_0x26ba7d){return client[_0x2f9a('0xd')](_0x5ef007,_0x41e258)[_0x2f9a('0xe')](function(_0x5b3d49){logger[_0x2f9a('0xf')](_0x2f9a('0x10'),_0x10a76a,_0x2f9a('0x11'));logger[_0x2f9a('0x12')](_0x2f9a('0x13'),_0x10a76a,'request\x20sent',JSON['stringify'](_0x5b3d49));if(_0x5b3d49[_0x2f9a('0x14')]){if(_0x5b3d49['error'][_0x2f9a('0x15')]===0x1f4){logger[_0x2f9a('0x14')](_0x2f9a('0x10'),_0x10a76a,_0x5b3d49['error'][_0x2f9a('0x16')]);return _0x26ba7d(_0x5b3d49[_0x2f9a('0x14')][_0x2f9a('0x16')]);}logger[_0x2f9a('0x14')](_0x2f9a('0x10'),_0x10a76a,_0x5b3d49[_0x2f9a('0x14')][_0x2f9a('0x16')]);return _0x55b393(_0x5b3d49[_0x2f9a('0x14')][_0x2f9a('0x16')]);}else{logger[_0x2f9a('0xf')]('SmsQueue,\x20%s,\x20%s',_0x10a76a,_0x2f9a('0x11'));_0x55b393(_0x5b3d49['result'][_0x2f9a('0x16')]);}})[_0x2f9a('0x17')](function(_0x146fa8){logger[_0x2f9a('0x14')]('SmsQueue,\x20%s,\x20%s',_0x10a76a,_0x146fa8);_0x26ba7d(_0x146fa8);});});}exports[_0x2f9a('0x18')]=function(_0x91fd24){var _0x4e613f=this;return new Promise(function(_0x197cd8,_0x4347f0){return db['SmsQueue'][_0x2f9a('0x19')]({'raw':_0x91fd24[_0x2f9a('0x1a')]?_0x91fd24['options'][_0x2f9a('0x1b')]===undefined?!![]:![]:!![],'where':_0x91fd24['options']?_0x91fd24['options'][_0x2f9a('0x1c')]||null:null,'attributes':_0x91fd24[_0x2f9a('0x1a')]?_0x91fd24['options'][_0x2f9a('0x1d')]||null:null,'limit':_0x91fd24[_0x2f9a('0x1a')]?_0x91fd24['options'][_0x2f9a('0x1e')]||null:null,'include':_0x91fd24[_0x2f9a('0x1a')]?_0x91fd24[_0x2f9a('0x1a')][_0x2f9a('0x1f')]?_['map'](_0x91fd24[_0x2f9a('0x1a')][_0x2f9a('0x1f')],function(_0x3fb4a4){return{'model':db[_0x3fb4a4[_0x2f9a('0x20')]],'as':_0x3fb4a4['as'],'attributes':_0x3fb4a4[_0x2f9a('0x1d')],'include':_0x3fb4a4['include']?_[_0x2f9a('0x21')](_0x3fb4a4[_0x2f9a('0x1f')],function(_0x25d367){return{'model':db[_0x25d367[_0x2f9a('0x20')]],'as':_0x25d367['as'],'attributes':_0x25d367[_0x2f9a('0x1d')],'include':_0x25d367[_0x2f9a('0x1f')]?_[_0x2f9a('0x21')](_0x25d367[_0x2f9a('0x1f')],function(_0x4f960f){return{'model':db[_0x4f960f[_0x2f9a('0x20')]],'as':_0x4f960f['as'],'attributes':_0x4f960f[_0x2f9a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x2f9a('0xe')](function(_0x421058){logger[_0x2f9a('0xf')](_0x2f9a('0x18'),_0x91fd24);logger['debug'](_0x2f9a('0x18'),_0x91fd24,JSON[_0x2f9a('0x22')](_0x421058));_0x197cd8(_0x421058);})[_0x2f9a('0x17')](function(_0x5a35bf){logger[_0x2f9a('0x14')](_0x2f9a('0x18'),_0x5a35bf[_0x2f9a('0x16')],_0x91fd24);_0x4347f0(_0x4e613f[_0x2f9a('0x14')](0x1f4,_0x5a35bf['message']));});});};exports[_0x2f9a('0x23')]=function(_0x2431e6){var _0x1fc1b9=this;return new Promise(function(_0xaae512,_0x466bd4){return db[_0x2f9a('0x24')]['find']({'raw':_0x2431e6[_0x2f9a('0x1a')]?_0x2431e6[_0x2f9a('0x1a')][_0x2f9a('0x1b')]===undefined?!![]:![]:!![],'where':_0x2431e6[_0x2f9a('0x1a')]?_0x2431e6['options']['where']||null:null,'attributes':_0x2431e6['options']?_0x2431e6[_0x2f9a('0x1a')]['attributes']||null:null,'include':_0x2431e6[_0x2f9a('0x1a')]?_0x2431e6[_0x2f9a('0x1a')]['include']?_['map'](_0x2431e6[_0x2f9a('0x1a')][_0x2f9a('0x1f')],function(_0x3fa8df){return{'model':db[_0x3fa8df['model']],'as':_0x3fa8df['as'],'attributes':_0x3fa8df[_0x2f9a('0x1d')],'include':_0x3fa8df[_0x2f9a('0x1f')]?_[_0x2f9a('0x21')](_0x3fa8df[_0x2f9a('0x1f')],function(_0x11a93d){return{'model':db[_0x11a93d[_0x2f9a('0x20')]],'as':_0x11a93d['as'],'attributes':_0x11a93d[_0x2f9a('0x1d')],'include':_0x11a93d['include']?_[_0x2f9a('0x21')](_0x11a93d['include'],function(_0x3bfd14){return{'model':db[_0x3bfd14[_0x2f9a('0x20')]],'as':_0x3bfd14['as'],'attributes':_0x3bfd14[_0x2f9a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x39d58d){logger[_0x2f9a('0xf')](_0x2f9a('0x23'),_0x2431e6);logger[_0x2f9a('0x12')](_0x2f9a('0x23'),_0x2431e6,JSON[_0x2f9a('0x22')](_0x39d58d));_0xaae512(_0x39d58d);})[_0x2f9a('0x17')](function(_0x3d7097){logger[_0x2f9a('0x14')]('ShowSmsQueue',_0x3d7097[_0x2f9a('0x16')],_0x2431e6);_0x466bd4(_0x1fc1b9[_0x2f9a('0x14')](0x1f4,_0x3d7097['message']));});});};
\ No newline at end of file
+var _0xe404=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','error','message','result','GetSmsQueue','SmsQueue','findAll','options','raw','include','map','model','attributes','stringify','ShowSmsQueue'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xe404,0x1d4));var _0x4e40=function(_0x6df6c6,_0x1d1751){_0x6df6c6=_0x6df6c6-0x0;var _0x3439ee=_0xe404[_0x6df6c6];return _0x3439ee;};'use strict';var _=require(_0x4e40('0x0'));var util=require(_0x4e40('0x1'));var moment=require(_0x4e40('0x2'));var BPromise=require(_0x4e40('0x3'));var rs=require(_0x4e40('0x4'));var fs=require('fs');var Redis=require(_0x4e40('0x5'));var db=require(_0x4e40('0x6'))['db'];var utils=require(_0x4e40('0x7'));var logger=require(_0x4e40('0x8'))(_0x4e40('0x9'));var config=require(_0x4e40('0xa'));var jayson=require(_0x4e40('0xb'));var client=jayson[_0x4e40('0xc')][_0x4e40('0xd')]({'port':0x232a});config[_0x4e40('0xe')]=_[_0x4e40('0xf')](config[_0x4e40('0xe')],{'host':_0x4e40('0x10'),'port':0x18eb});var socket=require(_0x4e40('0x11'))(new Redis(config[_0x4e40('0xe')]));require(_0x4e40('0x12'))[_0x4e40('0x13')](socket);function respondWithRpcPromise(_0x30c8d5,_0x1a901e,_0x2e713e){return new BPromise(function(_0x23ff59,_0x55b38d){return client['request'](_0x30c8d5,_0x2e713e)[_0x4e40('0x14')](function(_0x35a584){logger[_0x4e40('0x15')](_0x4e40('0x16'),_0x1a901e,_0x4e40('0x17'));logger[_0x4e40('0x18')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x1a901e,_0x4e40('0x17'),JSON['stringify'](_0x35a584));if(_0x35a584[_0x4e40('0x19')]){if(_0x35a584[_0x4e40('0x19')]['code']===0x1f4){logger[_0x4e40('0x19')]('SmsQueue,\x20%s,\x20%s',_0x1a901e,_0x35a584[_0x4e40('0x19')][_0x4e40('0x1a')]);return _0x55b38d(_0x35a584[_0x4e40('0x19')][_0x4e40('0x1a')]);}logger['error'](_0x4e40('0x16'),_0x1a901e,_0x35a584[_0x4e40('0x19')][_0x4e40('0x1a')]);return _0x23ff59(_0x35a584[_0x4e40('0x19')][_0x4e40('0x1a')]);}else{logger[_0x4e40('0x15')](_0x4e40('0x16'),_0x1a901e,_0x4e40('0x17'));_0x23ff59(_0x35a584[_0x4e40('0x1b')][_0x4e40('0x1a')]);}})['catch'](function(_0x24c0d7){logger[_0x4e40('0x19')](_0x4e40('0x16'),_0x1a901e,_0x24c0d7);_0x55b38d(_0x24c0d7);});});}exports[_0x4e40('0x1c')]=function(_0x1ff641){var _0xee8dd9=this;return new Promise(function(_0x5dec98,_0x28cbd9){return db[_0x4e40('0x1d')][_0x4e40('0x1e')]({'raw':_0x1ff641[_0x4e40('0x1f')]?_0x1ff641[_0x4e40('0x1f')][_0x4e40('0x20')]===undefined?!![]:![]:!![],'where':_0x1ff641[_0x4e40('0x1f')]?_0x1ff641[_0x4e40('0x1f')]['where']||null:null,'attributes':_0x1ff641[_0x4e40('0x1f')]?_0x1ff641['options']['attributes']||null:null,'limit':_0x1ff641[_0x4e40('0x1f')]?_0x1ff641[_0x4e40('0x1f')]['limit']||null:null,'include':_0x1ff641[_0x4e40('0x1f')]?_0x1ff641[_0x4e40('0x1f')][_0x4e40('0x21')]?_[_0x4e40('0x22')](_0x1ff641[_0x4e40('0x1f')][_0x4e40('0x21')],function(_0x37af6b){return{'model':db[_0x37af6b[_0x4e40('0x23')]],'as':_0x37af6b['as'],'attributes':_0x37af6b['attributes'],'include':_0x37af6b['include']?_[_0x4e40('0x22')](_0x37af6b[_0x4e40('0x21')],function(_0x3891d2){return{'model':db[_0x3891d2[_0x4e40('0x23')]],'as':_0x3891d2['as'],'attributes':_0x3891d2[_0x4e40('0x24')],'include':_0x3891d2[_0x4e40('0x21')]?_[_0x4e40('0x22')](_0x3891d2[_0x4e40('0x21')],function(_0xf7f819){return{'model':db[_0xf7f819[_0x4e40('0x23')]],'as':_0xf7f819['as'],'attributes':_0xf7f819[_0x4e40('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x197551){logger['info'](_0x4e40('0x1c'),_0x1ff641);logger['debug'](_0x4e40('0x1c'),_0x1ff641,JSON[_0x4e40('0x25')](_0x197551));_0x5dec98(_0x197551);})['catch'](function(_0x293fbe){logger[_0x4e40('0x19')](_0x4e40('0x1c'),_0x293fbe[_0x4e40('0x1a')],_0x1ff641);_0x28cbd9(_0xee8dd9['error'](0x1f4,_0x293fbe[_0x4e40('0x1a')]));});});};exports[_0x4e40('0x26')]=function(_0x36a7a6){var _0x19824b=this;return new Promise(function(_0x5e41a6,_0x47d2b0){return db[_0x4e40('0x1d')]['find']({'raw':_0x36a7a6['options']?_0x36a7a6[_0x4e40('0x1f')][_0x4e40('0x20')]===undefined?!![]:![]:!![],'where':_0x36a7a6[_0x4e40('0x1f')]?_0x36a7a6['options']['where']||null:null,'attributes':_0x36a7a6[_0x4e40('0x1f')]?_0x36a7a6['options']['attributes']||null:null,'include':_0x36a7a6[_0x4e40('0x1f')]?_0x36a7a6[_0x4e40('0x1f')]['include']?_['map'](_0x36a7a6[_0x4e40('0x1f')][_0x4e40('0x21')],function(_0x3fb69d){return{'model':db[_0x3fb69d[_0x4e40('0x23')]],'as':_0x3fb69d['as'],'attributes':_0x3fb69d[_0x4e40('0x24')],'include':_0x3fb69d[_0x4e40('0x21')]?_[_0x4e40('0x22')](_0x3fb69d['include'],function(_0x452fa9){return{'model':db[_0x452fa9[_0x4e40('0x23')]],'as':_0x452fa9['as'],'attributes':_0x452fa9['attributes'],'include':_0x452fa9['include']?_['map'](_0x452fa9[_0x4e40('0x21')],function(_0x53baaa){return{'model':db[_0x53baaa['model']],'as':_0x53baaa['as'],'attributes':_0x53baaa[_0x4e40('0x24')]};}):[]};}):[]};}):[]:[]})[_0x4e40('0x14')](function(_0xd7a765){logger['info']('ShowSmsQueue',_0x36a7a6);logger[_0x4e40('0x18')](_0x4e40('0x26'),_0x36a7a6,JSON[_0x4e40('0x25')](_0xd7a765));_0x5e41a6(_0xd7a765);})['catch'](function(_0x55add1){logger['error'](_0x4e40('0x26'),_0x55add1[_0x4e40('0x1a')],_0x36a7a6);_0x47d2b0(_0x19824b[_0x4e40('0x19')](0x1f4,_0x55add1['message']));});});};
\ No newline at end of file
index 360e30d..14592e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2787=['save','remove','update','emit','removeListener','register','smsQueue:'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x2787,0x1e3));var _0x7278=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x2787[_0x2f5ac5];return _0x37c9a8;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x7278('0x0'),_0x7278('0x1'),_0x7278('0x2')];function createListener(_0x1bcbae,_0x1ede41){return function(_0x5b69b0){_0x1ede41[_0x7278('0x3')](_0x1bcbae,_0x5b69b0);};}function removeListener(_0x208775,_0x2a81d0){return function(){SmsQueueEvents[_0x7278('0x4')](_0x208775,_0x2a81d0);};}exports[_0x7278('0x5')]=function(_0x31048a){for(var _0x5cf62a=0x0,_0x5cd2f4=events['length'];_0x5cf62a<_0x5cd2f4;_0x5cf62a++){var _0x3d7ce6=events[_0x5cf62a];var _0x10f9e7=createListener(_0x7278('0x6')+_0x3d7ce6,_0x31048a);SmsQueueEvents['on'](_0x3d7ce6,_0x10f9e7);}};
\ No newline at end of file
+var _0xd353=['register','./smsQueue.events','save','remove','update','emit','removeListener'];(function(_0x26eb3b,_0x39ed05){var _0x4a930a=function(_0x1cc1f2){while(--_0x1cc1f2){_0x26eb3b['push'](_0x26eb3b['shift']());}};_0x4a930a(++_0x39ed05);}(_0xd353,0xda));var _0x3d35=function(_0x5162aa,_0x3a61fc){_0x5162aa=_0x5162aa-0x0;var _0x139001=_0xd353[_0x5162aa];return _0x139001;};'use strict';var SmsQueueEvents=require(_0x3d35('0x0'));var events=[_0x3d35('0x1'),_0x3d35('0x2'),_0x3d35('0x3')];function createListener(_0x12a7a4,_0x2908a1){return function(_0x1d35a3){_0x2908a1[_0x3d35('0x4')](_0x12a7a4,_0x1d35a3);};}function removeListener(_0x27e073,_0x264c94){return function(){SmsQueueEvents[_0x3d35('0x5')](_0x27e073,_0x264c94);};}exports[_0x3d35('0x6')]=function(_0x4cd067){for(var _0x3189d2=0x0,_0x326ebc=events['length'];_0x3189d2<_0x326ebc;_0x3189d2++){var _0x98e0b0=events[_0x3189d2];var _0x40c0db=createListener('smsQueue:'+_0x98e0b0,_0x4cd067);SmsQueueEvents['on'](_0x98e0b0,_0x40c0db);}};
\ No newline at end of file
index 6abd8be..d76b457 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15f8=['./smsQueueReport.controller','get','isAuthenticated','describe','/:id','create','put','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x562153,_0x2d52a1){var _0x4830b9=function(_0x3cd66c){while(--_0x3cd66c){_0x562153['push'](_0x562153['shift']());}};_0x4830b9(++_0x2d52a1);}(_0x15f8,0x149));var _0x815f=function(_0x504c52,_0x106310){_0x504c52=_0x504c52-0x0;var _0x10b4fa=_0x15f8[_0x504c52];return _0x10b4fa;};'use strict';var multer=require(_0x815f('0x0'));var util=require('util');var path=require(_0x815f('0x1'));var timeout=require('connect-timeout');var express=require(_0x815f('0x2'));var router=express['Router']();var fs_extra=require(_0x815f('0x3'));var auth=require(_0x815f('0x4'));var interaction=require(_0x815f('0x5'));var config=require(_0x815f('0x6'));var controller=require(_0x815f('0x7'));router[_0x815f('0x8')]('/',auth[_0x815f('0x9')](),controller['index']);router[_0x815f('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x815f('0xa')]);router[_0x815f('0x8')](_0x815f('0xb'),auth[_0x815f('0x9')](),controller['show']);router['post']('/',auth[_0x815f('0x9')](),controller[_0x815f('0xc')]);router[_0x815f('0xd')](_0x815f('0xb'),auth[_0x815f('0x9')](),controller['update']);router['delete'](_0x815f('0xb'),auth[_0x815f('0x9')](),controller[_0x815f('0xe')]);module[_0x815f('0xf')]=router;
\ No newline at end of file
+var _0xfcbe=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','index','isAuthenticated','get','/:id','post','update','delete'];(function(_0x572877,_0x35bc1d){var _0x10f761=function(_0x2932ee){while(--_0x2932ee){_0x572877['push'](_0x572877['shift']());}};_0x10f761(++_0x35bc1d);}(_0xfcbe,0x1b1));var _0xefcb=function(_0x474050,_0x588b5e){_0x474050=_0x474050-0x0;var _0x1702ae=_0xfcbe[_0x474050];return _0x1702ae;};'use strict';var multer=require('multer');var util=require(_0xefcb('0x0'));var path=require(_0xefcb('0x1'));var timeout=require(_0xefcb('0x2'));var express=require(_0xefcb('0x3'));var router=express[_0xefcb('0x4')]();var fs_extra=require(_0xefcb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xefcb('0x6'));var config=require(_0xefcb('0x7'));var controller=require('./smsQueueReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xefcb('0x8')]);router['get']('/describe',auth[_0xefcb('0x9')](),controller['describe']);router[_0xefcb('0xa')](_0xefcb('0xb'),auth[_0xefcb('0x9')](),controller['show']);router[_0xefcb('0xc')]('/',auth[_0xefcb('0x9')](),controller['create']);router['put'](_0xefcb('0xb'),auth[_0xefcb('0x9')](),controller[_0xefcb('0xd')]);router[_0xefcb('0xe')](_0xefcb('0xb'),auth[_0xefcb('0x9')](),controller['destroy']);module[_0xefcb('0xf')]=router;
\ No newline at end of file
index 24df850..874f9ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28d0=['DATE','moment','STRING'];(function(_0x2b6516,_0x2459a9){var _0x5478ea=function(_0x4abca7){while(--_0x4abca7){_0x2b6516['push'](_0x2b6516['shift']());}};_0x5478ea(++_0x2459a9);}(_0x28d0,0x163));var _0x028d=function(_0x24a1a1,_0x944dc){_0x24a1a1=_0x24a1a1-0x0;var _0x2f84d9=_0x28d0[_0x24a1a1];return _0x2f84d9;};'use strict';var moment=require(_0x028d('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x028d('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x028d('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x028d('0x2')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x028d('0x2')]},'reason':{'type':Sequelize[_0x028d('0x1')]}};
\ No newline at end of file
+var _0xe811=['moment','sequelize','STRING','DATE'];(function(_0x56a482,_0x13b215){var _0x4159b1=function(_0x5cde4e){while(--_0x5cde4e){_0x56a482['push'](_0x56a482['shift']());}};_0x4159b1(++_0x13b215);}(_0xe811,0x1a8));var _0x1e81=function(_0x4f78f0,_0x1caa40){_0x4f78f0=_0x4f78f0-0x0;var _0x48b988=_0xe811[_0x4f78f0];return _0x48b988;};'use strict';var moment=require(_0x1e81('0x0'));var Sequelize=require(_0x1e81('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x1e81('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x1e81('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x1e81('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x1e81('0x3')]},'reason':{'type':Sequelize[_0x1e81('0x2')]}};
\ No newline at end of file
index cb94586..72a4a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a88=['fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','json','apply','reject','then','end','error','stack','name','send','index','SmsQueueReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','merge','find','create','body','update','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x7b484,_0x195ad4){var _0x2ae1cf=function(_0x2e6247){while(--_0x2e6247){_0x7b484['push'](_0x7b484['shift']());}};_0x2ae1cf(++_0x195ad4);}(_0x7a88,0x8e));var _0x87a8=function(_0x21125f,_0x8079f8){_0x21125f=_0x21125f-0x0;var _0x2f421d=_0x7a88[_0x21125f];return _0x2f421d;};'use strict';var emlformat=require(_0x87a8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x87a8('0x1'));var jsonpatch=require(_0x87a8('0x2'));var rp=require(_0x87a8('0x3'));var moment=require(_0x87a8('0x4'));var BPromise=require(_0x87a8('0x5'));var Mustache=require(_0x87a8('0x6'));var util=require(_0x87a8('0x7'));var path=require('path');var sox=require(_0x87a8('0x8'));var csv=require(_0x87a8('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x87a8('0xa'));var _=require(_0x87a8('0xb'));var squel=require(_0x87a8('0xc'));var crypto=require(_0x87a8('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x87a8('0xe'));var toCsv=require(_0x87a8('0x9'));var querystring=require(_0x87a8('0xf'));var Papa=require(_0x87a8('0x10'));var Redis=require(_0x87a8('0x11'));var authService=require(_0x87a8('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x87a8('0x13'));var hardwareService=require(_0x87a8('0x14'));var logger=require(_0x87a8('0x15'))('api');var utils=require(_0x87a8('0x16'));var config=require(_0x87a8('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54905d,_0x50763b){_0x50763b=_0x50763b||0xcc;return function(_0x35218e){if(_0x35218e){return _0x54905d[_0x87a8('0x18')](_0x50763b);}return _0x54905d[_0x87a8('0x19')](_0x50763b)['end']();};}function respondWithResult(_0x1b4862,_0x3756ca){_0x3756ca=_0x3756ca||0xc8;return function(_0x214b1c){if(_0x214b1c){return _0x1b4862['status'](_0x3756ca)['json'](_0x214b1c);}};}function respondWithFilteredResult(_0x209d09,_0x1d2b3c){return function(_0x28389e){if(_0x28389e){var _0x470c03=typeof _0x1d2b3c[_0x87a8('0x1a')]===_0x87a8('0x1b')&&typeof _0x1d2b3c[_0x87a8('0x1c')]===_0x87a8('0x1b');var _0x5742f3=_0x28389e[_0x87a8('0x1d')];var _0x57e1cc=_0x470c03?0x0:_0x1d2b3c[_0x87a8('0x1a')];var _0x48efe6=_0x470c03?_0x28389e[_0x87a8('0x1d')]:_0x1d2b3c[_0x87a8('0x1a')]+_0x1d2b3c[_0x87a8('0x1c')];var _0x284d19;if(_0x48efe6>=_0x5742f3){_0x48efe6=_0x5742f3;_0x284d19=0xc8;}else{_0x284d19=0xce;}_0x209d09['status'](_0x284d19);return _0x209d09[_0x87a8('0x1e')]('Content-Range',_0x57e1cc+'-'+_0x48efe6+'/'+_0x5742f3)[_0x87a8('0x1f')](_0x28389e);}return null;};}function patchUpdates(_0x2a1682){return function(_0x3b3c71){try{jsonpatch[_0x87a8('0x20')](_0x3b3c71,_0x2a1682,!![]);}catch(_0xf1ff99){return BPromise[_0x87a8('0x21')](_0xf1ff99);}return _0x3b3c71['save']();};}function saveUpdates(_0x54f71f,_0x236068){return function(_0x12e0a7){if(_0x12e0a7){return _0x12e0a7['update'](_0x54f71f)[_0x87a8('0x22')](function(_0x2679d3){return _0x2679d3;});}return null;};}function removeEntity(_0x520199,_0x3a07fe){return function(_0x223b41){if(_0x223b41){return _0x223b41['destroy']()[_0x87a8('0x22')](function(){_0x520199['status'](0xcc)[_0x87a8('0x23')]();});}};}function handleEntityNotFound(_0x2cfdb5,_0x437210){return function(_0x23e6f9){if(!_0x23e6f9){_0x2cfdb5[_0x87a8('0x18')](0x194);}return _0x23e6f9;};}function handleError(_0x531035,_0x241732){_0x241732=_0x241732||0x1f4;return function(_0x475f3d){logger[_0x87a8('0x24')](_0x475f3d[_0x87a8('0x25')]);if(_0x475f3d[_0x87a8('0x26')]){delete _0x475f3d[_0x87a8('0x26')];}_0x531035[_0x87a8('0x19')](_0x241732)[_0x87a8('0x27')](_0x475f3d);};}exports[_0x87a8('0x28')]=function(_0x2dc0fb,_0xa1a34f){var _0x4dcfb1={},_0x4f9fe2={},_0x1302c0={'count':0x0,'rows':[]};var _0x463fb9=_['map'](db[_0x87a8('0x29')][_0x87a8('0x2a')],function(_0x26437e){return{'name':_0x26437e[_0x87a8('0x2b')],'type':_0x26437e['type'][_0x87a8('0x2c')]};});_0x4f9fe2[_0x87a8('0x2d')]=_[_0x87a8('0x2e')](_0x463fb9,_0x87a8('0x26'));_0x4f9fe2[_0x87a8('0x2f')]=_[_0x87a8('0x30')](_0x2dc0fb[_0x87a8('0x2f')]);_0x4f9fe2[_0x87a8('0x31')]=_['intersection'](_0x4f9fe2[_0x87a8('0x2d')],_0x4f9fe2[_0x87a8('0x2f')]);_0x4dcfb1['attributes']=_[_0x87a8('0x32')](_0x4f9fe2[_0x87a8('0x2d')],qs[_0x87a8('0x33')](_0x2dc0fb['query'][_0x87a8('0x33')]));_0x4dcfb1['attributes']=_0x4dcfb1[_0x87a8('0x34')][_0x87a8('0x35')]?_0x4dcfb1[_0x87a8('0x34')]:_0x4f9fe2['model'];if(!_0x2dc0fb[_0x87a8('0x2f')]['hasOwnProperty'](_0x87a8('0x36'))){_0x4dcfb1[_0x87a8('0x1c')]=qs[_0x87a8('0x1c')](_0x2dc0fb['query'][_0x87a8('0x1c')]);_0x4dcfb1[_0x87a8('0x1a')]=qs[_0x87a8('0x1a')](_0x2dc0fb[_0x87a8('0x2f')][_0x87a8('0x1a')]);}_0x4dcfb1[_0x87a8('0x37')]=qs['sort'](_0x2dc0fb[_0x87a8('0x2f')][_0x87a8('0x38')]);_0x4dcfb1[_0x87a8('0x39')]=qs[_0x87a8('0x31')](_[_0x87a8('0x3a')](_0x2dc0fb[_0x87a8('0x2f')],_0x4f9fe2[_0x87a8('0x31')]),_0x463fb9);if(_0x2dc0fb['query']['filter']){_0x4dcfb1[_0x87a8('0x39')]=_['merge'](_0x4dcfb1['where'],{'$or':_[_0x87a8('0x2e')](_0x463fb9,function(_0x9a4f9b){if(_0x9a4f9b[_0x87a8('0x3b')]!==_0x87a8('0x3c')){var _0x2b0ff4={};_0x2b0ff4[_0x9a4f9b[_0x87a8('0x26')]]={'$like':'%'+_0x2dc0fb[_0x87a8('0x2f')][_0x87a8('0x3d')]+'%'};return _0x2b0ff4;}})});}_0x4dcfb1=_['merge']({},_0x4dcfb1,_0x2dc0fb[_0x87a8('0x3e')]);var _0x6edf91={'where':_0x4dcfb1[_0x87a8('0x39')]};return db[_0x87a8('0x29')][_0x87a8('0x1d')](_0x6edf91)[_0x87a8('0x22')](function(_0x54bd08){_0x1302c0[_0x87a8('0x1d')]=_0x54bd08;if(_0x2dc0fb[_0x87a8('0x2f')][_0x87a8('0x3f')]){_0x4dcfb1[_0x87a8('0x40')]=[{'all':!![]}];}return db[_0x87a8('0x29')][_0x87a8('0x41')](_0x4dcfb1);})[_0x87a8('0x22')](function(_0x28d374){_0x1302c0[_0x87a8('0x42')]=_0x28d374;return _0x1302c0;})[_0x87a8('0x22')](respondWithFilteredResult(_0xa1a34f,_0x4dcfb1))[_0x87a8('0x43')](handleError(_0xa1a34f,null));};exports['show']=function(_0x3e72b3,_0x294eb4){var _0x4b80e3={'raw':!![],'where':{'id':_0x3e72b3[_0x87a8('0x44')]['id']}},_0xb55670={};_0xb55670['model']=_[_0x87a8('0x30')](db[_0x87a8('0x29')][_0x87a8('0x2a')]);_0xb55670['query']=_[_0x87a8('0x30')](_0x3e72b3[_0x87a8('0x2f')]);_0xb55670[_0x87a8('0x31')]=_[_0x87a8('0x32')](_0xb55670[_0x87a8('0x2d')],_0xb55670[_0x87a8('0x2f')]);_0x4b80e3[_0x87a8('0x34')]=_[_0x87a8('0x32')](_0xb55670[_0x87a8('0x2d')],qs[_0x87a8('0x33')](_0x3e72b3[_0x87a8('0x2f')][_0x87a8('0x33')]));_0x4b80e3[_0x87a8('0x34')]=_0x4b80e3['attributes'][_0x87a8('0x35')]?_0x4b80e3[_0x87a8('0x34')]:_0xb55670[_0x87a8('0x2d')];if(_0x3e72b3['query'][_0x87a8('0x3f')]){_0x4b80e3[_0x87a8('0x40')]=[{'all':!![]}];}_0x4b80e3=_[_0x87a8('0x45')]({},_0x4b80e3,_0x3e72b3[_0x87a8('0x3e')]);return db['SmsQueueReport'][_0x87a8('0x46')](_0x4b80e3)[_0x87a8('0x22')](handleEntityNotFound(_0x294eb4,null))[_0x87a8('0x22')](respondWithResult(_0x294eb4,null))['catch'](handleError(_0x294eb4,null));};exports[_0x87a8('0x47')]=function(_0x278639,_0x4655bb){return db[_0x87a8('0x29')][_0x87a8('0x47')](_0x278639[_0x87a8('0x48')],{})[_0x87a8('0x22')](respondWithResult(_0x4655bb,0xc9))[_0x87a8('0x43')](handleError(_0x4655bb,null));};exports[_0x87a8('0x49')]=function(_0x386fbf,_0x4c85d7){if(_0x386fbf['body']['id']){delete _0x386fbf[_0x87a8('0x48')]['id'];}return db['SmsQueueReport']['find']({'where':{'id':_0x386fbf['params']['id']}})[_0x87a8('0x22')](handleEntityNotFound(_0x4c85d7,null))['then'](saveUpdates(_0x386fbf[_0x87a8('0x48')],null))[_0x87a8('0x22')](respondWithResult(_0x4c85d7,null))[_0x87a8('0x43')](handleError(_0x4c85d7,null));};exports[_0x87a8('0x4a')]=function(_0x302b34,_0x244a20){return db['SmsQueueReport'][_0x87a8('0x46')]({'where':{'id':_0x302b34[_0x87a8('0x44')]['id']}})['then'](handleEntityNotFound(_0x244a20,null))[_0x87a8('0x22')](removeEntity(_0x244a20,null))[_0x87a8('0x43')](handleError(_0x244a20,null));};exports[_0x87a8('0x4b')]=function(_0xd64317,_0x21a6b1){return db[_0x87a8('0x29')][_0x87a8('0x4b')]()[_0x87a8('0x22')](respondWithResult(_0x21a6b1,null))[_0x87a8('0x43')](handleError(_0x21a6b1,null));};
\ No newline at end of file
+var _0x442a=['fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','merge','where','VIRTUAL','filter','options','count','include','SmsQueueReport','findAll','rows','show','params','includeAll','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection'];(function(_0x15088c,_0x1e8c57){var _0x42ce5c=function(_0xfcf988){while(--_0xfcf988){_0x15088c['push'](_0x15088c['shift']());}};_0x42ce5c(++_0x1e8c57);}(_0x442a,0x6a));var _0xa442=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x442a[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require(_0xa442('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa442('0x1'));var jsonpatch=require(_0xa442('0x2'));var rp=require(_0xa442('0x3'));var moment=require(_0xa442('0x4'));var BPromise=require(_0xa442('0x5'));var Mustache=require(_0xa442('0x6'));var util=require(_0xa442('0x7'));var path=require('path');var sox=require(_0xa442('0x8'));var csv=require('to-csv');var ejs=require(_0xa442('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa442('0xa'));var squel=require(_0xa442('0xb'));var crypto=require(_0xa442('0xc'));var jsforce=require(_0xa442('0xd'));var deskjs=require(_0xa442('0xe'));var toCsv=require(_0xa442('0xf'));var querystring=require(_0xa442('0x10'));var Papa=require('papaparse');var Redis=require(_0xa442('0x11'));var authService=require(_0xa442('0x12'));var qs=require(_0xa442('0x13'));var as=require(_0xa442('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa442('0x15'))(_0xa442('0x16'));var utils=require(_0xa442('0x17'));var config=require(_0xa442('0x18'));var licenseUtil=require(_0xa442('0x19'));var db=require(_0xa442('0x1a'))['db'];function respondWithStatusCode(_0x4d3feb,_0x32c08b){_0x32c08b=_0x32c08b||0xcc;return function(_0x385df8){if(_0x385df8){return _0x4d3feb[_0xa442('0x1b')](_0x32c08b);}return _0x4d3feb['status'](_0x32c08b)[_0xa442('0x1c')]();};}function respondWithResult(_0x515484,_0x23734c){_0x23734c=_0x23734c||0xc8;return function(_0x2ce614){if(_0x2ce614){return _0x515484[_0xa442('0x1d')](_0x23734c)[_0xa442('0x1e')](_0x2ce614);}};}function respondWithFilteredResult(_0x3e95a6,_0xd77ede){return function(_0x435ee6){if(_0x435ee6){var _0x306c3c=typeof _0xd77ede[_0xa442('0x1f')]===_0xa442('0x20')&&typeof _0xd77ede[_0xa442('0x21')]===_0xa442('0x20');var _0x22bb05=_0x435ee6['count'];var _0x5d6485=_0x306c3c?0x0:_0xd77ede['offset'];var _0x1e0fe4=_0x306c3c?_0x435ee6['count']:_0xd77ede[_0xa442('0x1f')]+_0xd77ede['limit'];var _0x1e01a3;if(_0x1e0fe4>=_0x22bb05){_0x1e0fe4=_0x22bb05;_0x1e01a3=0xc8;}else{_0x1e01a3=0xce;}_0x3e95a6[_0xa442('0x1d')](_0x1e01a3);return _0x3e95a6[_0xa442('0x22')](_0xa442('0x23'),_0x5d6485+'-'+_0x1e0fe4+'/'+_0x22bb05)[_0xa442('0x1e')](_0x435ee6);}return null;};}function patchUpdates(_0x161d67){return function(_0x29b66d){try{jsonpatch[_0xa442('0x24')](_0x29b66d,_0x161d67,!![]);}catch(_0x4eadda){return BPromise['reject'](_0x4eadda);}return _0x29b66d[_0xa442('0x25')]();};}function saveUpdates(_0x54076c,_0x5d4dfa){return function(_0xf7753a){if(_0xf7753a){return _0xf7753a[_0xa442('0x26')](_0x54076c)[_0xa442('0x27')](function(_0x4d4156){return _0x4d4156;});}return null;};}function removeEntity(_0x189028,_0x2e8b84){return function(_0x462077){if(_0x462077){return _0x462077[_0xa442('0x28')]()[_0xa442('0x27')](function(){_0x189028[_0xa442('0x1d')](0xcc)[_0xa442('0x1c')]();});}};}function handleEntityNotFound(_0x47bc8f,_0x234dc2){return function(_0xbac08e){if(!_0xbac08e){_0x47bc8f['sendStatus'](0x194);}return _0xbac08e;};}function handleError(_0x5e95af,_0x483463){_0x483463=_0x483463||0x1f4;return function(_0x3431b5){logger[_0xa442('0x29')](_0x3431b5[_0xa442('0x2a')]);if(_0x3431b5[_0xa442('0x2b')]){delete _0x3431b5[_0xa442('0x2b')];}_0x5e95af[_0xa442('0x1d')](_0x483463)[_0xa442('0x2c')](_0x3431b5);};}exports[_0xa442('0x2d')]=function(_0x2a480,_0x4fb0fa){var _0x13c040={},_0x4fafcf={},_0x2d14fe={'count':0x0,'rows':[]};var _0x53bcea=_[_0xa442('0x2e')](db['SmsQueueReport'][_0xa442('0x2f')],function(_0x280de6){return{'name':_0x280de6[_0xa442('0x30')],'type':_0x280de6[_0xa442('0x31')][_0xa442('0x32')]};});_0x4fafcf['model']=_[_0xa442('0x2e')](_0x53bcea,_0xa442('0x2b'));_0x4fafcf[_0xa442('0x33')]=_[_0xa442('0x34')](_0x2a480[_0xa442('0x33')]);_0x4fafcf['filters']=_['intersection'](_0x4fafcf[_0xa442('0x35')],_0x4fafcf['query']);_0x13c040[_0xa442('0x36')]=_[_0xa442('0x37')](_0x4fafcf['model'],qs[_0xa442('0x38')](_0x2a480[_0xa442('0x33')][_0xa442('0x38')]));_0x13c040[_0xa442('0x36')]=_0x13c040[_0xa442('0x36')][_0xa442('0x39')]?_0x13c040[_0xa442('0x36')]:_0x4fafcf[_0xa442('0x35')];if(!_0x2a480[_0xa442('0x33')][_0xa442('0x3a')](_0xa442('0x3b'))){_0x13c040[_0xa442('0x21')]=qs[_0xa442('0x21')](_0x2a480[_0xa442('0x33')][_0xa442('0x21')]);_0x13c040['offset']=qs['offset'](_0x2a480[_0xa442('0x33')][_0xa442('0x1f')]);}_0x13c040[_0xa442('0x3c')]=qs[_0xa442('0x3d')](_0x2a480[_0xa442('0x33')][_0xa442('0x3d')]);_0x13c040['where']=qs[_0xa442('0x3e')](_[_0xa442('0x3f')](_0x2a480[_0xa442('0x33')],_0x4fafcf[_0xa442('0x3e')]),_0x53bcea);if(_0x2a480[_0xa442('0x33')]['filter']){_0x13c040['where']=_[_0xa442('0x40')](_0x13c040[_0xa442('0x41')],{'$or':_[_0xa442('0x2e')](_0x53bcea,function(_0x340fe1){if(_0x340fe1[_0xa442('0x31')]!==_0xa442('0x42')){var _0x1047ad={};_0x1047ad[_0x340fe1['name']]={'$like':'%'+_0x2a480['query'][_0xa442('0x43')]+'%'};return _0x1047ad;}})});}_0x13c040=_['merge']({},_0x13c040,_0x2a480[_0xa442('0x44')]);var _0x12b409={'where':_0x13c040['where']};return db['SmsQueueReport'][_0xa442('0x45')](_0x12b409)['then'](function(_0x4cb0af){_0x2d14fe[_0xa442('0x45')]=_0x4cb0af;if(_0x2a480[_0xa442('0x33')]['includeAll']){_0x13c040[_0xa442('0x46')]=[{'all':!![]}];}return db[_0xa442('0x47')][_0xa442('0x48')](_0x13c040);})[_0xa442('0x27')](function(_0x127704){_0x2d14fe[_0xa442('0x49')]=_0x127704;return _0x2d14fe;})[_0xa442('0x27')](respondWithFilteredResult(_0x4fb0fa,_0x13c040))['catch'](handleError(_0x4fb0fa,null));};exports[_0xa442('0x4a')]=function(_0x14f443,_0x3658b5){var _0x10bb44={'raw':!![],'where':{'id':_0x14f443[_0xa442('0x4b')]['id']}},_0x46fafe={};_0x46fafe['model']=_[_0xa442('0x34')](db[_0xa442('0x47')][_0xa442('0x2f')]);_0x46fafe['query']=_[_0xa442('0x34')](_0x14f443['query']);_0x46fafe[_0xa442('0x3e')]=_[_0xa442('0x37')](_0x46fafe[_0xa442('0x35')],_0x46fafe[_0xa442('0x33')]);_0x10bb44[_0xa442('0x36')]=_['intersection'](_0x46fafe[_0xa442('0x35')],qs[_0xa442('0x38')](_0x14f443[_0xa442('0x33')][_0xa442('0x38')]));_0x10bb44['attributes']=_0x10bb44[_0xa442('0x36')][_0xa442('0x39')]?_0x10bb44[_0xa442('0x36')]:_0x46fafe[_0xa442('0x35')];if(_0x14f443[_0xa442('0x33')][_0xa442('0x4c')]){_0x10bb44[_0xa442('0x46')]=[{'all':!![]}];}_0x10bb44=_[_0xa442('0x40')]({},_0x10bb44,_0x14f443[_0xa442('0x44')]);return db[_0xa442('0x47')]['find'](_0x10bb44)['then'](handleEntityNotFound(_0x3658b5,null))[_0xa442('0x27')](respondWithResult(_0x3658b5,null))[_0xa442('0x4d')](handleError(_0x3658b5,null));};exports['create']=function(_0x53e330,_0x313d49){return db[_0xa442('0x47')][_0xa442('0x4e')](_0x53e330[_0xa442('0x4f')],{})[_0xa442('0x27')](respondWithResult(_0x313d49,0xc9))['catch'](handleError(_0x313d49,null));};exports[_0xa442('0x26')]=function(_0x151513,_0x653922){if(_0x151513['body']['id']){delete _0x151513[_0xa442('0x4f')]['id'];}return db[_0xa442('0x47')]['find']({'where':{'id':_0x151513[_0xa442('0x4b')]['id']}})[_0xa442('0x27')](handleEntityNotFound(_0x653922,null))['then'](saveUpdates(_0x151513[_0xa442('0x4f')],null))[_0xa442('0x27')](respondWithResult(_0x653922,null))['catch'](handleError(_0x653922,null));};exports['destroy']=function(_0x409318,_0x37b38a){return db[_0xa442('0x47')]['find']({'where':{'id':_0x409318[_0xa442('0x4b')]['id']}})[_0xa442('0x27')](handleEntityNotFound(_0x37b38a,null))['then'](removeEntity(_0x37b38a,null))[_0xa442('0x4d')](handleError(_0x37b38a,null));};exports[_0xa442('0x50')]=function(_0x42b784,_0x494dc7){return db[_0xa442('0x47')][_0xa442('0x50')]()['then'](respondWithResult(_0x494dc7,null))[_0xa442('0x4d')](handleError(_0x494dc7,null));};
\ No newline at end of file
index 1409c19..b497dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x1559a6,_0x58300f){var _0x100a91=function(_0x1ae43a){while(--_0x1ae43a){_0x1559a6['push'](_0x1559a6['shift']());}};_0x100a91(++_0x58300f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x375325,_0x57a850){_0x375325=_0x375325-0x0;var _0x228f57=_0xcb91[_0x375325];return _0x228f57;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x70e0=['util','../../config/logger','bluebird','request-promise','path','rimraf','./smsQueueReport.attributes','report_sms_queue','uniqueid','lodash'];(function(_0x4085ec,_0x206cac){var _0x88825f=function(_0x53fad1){while(--_0x53fad1){_0x4085ec['push'](_0x4085ec['shift']());}};_0x88825f(++_0x206cac);}(_0x70e0,0x17b));var _0x070e=function(_0x31fe49,_0x5e4445){_0x31fe49=_0x31fe49-0x0;var _0x23e078=_0x70e0[_0x31fe49];return _0x23e078;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('SmsQueueReport',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[{'name':_0x070e('0x9'),'fields':[_0x070e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 48e4391..6d7c9e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2435=['request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateSmsQueueReport','SmsQueueReport','create','raw','info','stringify','catch','update','body','options','where','attributes','limit','UpdateSmsQueueReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2435,0xe4));var _0x5243=function(_0x119d5a,_0x19b457){_0x119d5a=_0x119d5a-0x0;var _0x15bff4=_0x2435[_0x119d5a];return _0x15bff4;};'use strict';var _=require(_0x5243('0x0'));var util=require('util');var moment=require(_0x5243('0x1'));var BPromise=require(_0x5243('0x2'));var rs=require(_0x5243('0x3'));var fs=require('fs');var Redis=require(_0x5243('0x4'));var db=require(_0x5243('0x5'))['db'];var utils=require(_0x5243('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x5243('0x7'));var jayson=require(_0x5243('0x8'));var client=jayson[_0x5243('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xecaac1,_0xbb46bc,_0x42327e){return new BPromise(function(_0x31333f,_0x54c52d){return client[_0x5243('0xa')](_0xecaac1,_0x42327e)[_0x5243('0xb')](function(_0x37bab2){logger['info'](_0x5243('0xc'),_0xbb46bc,_0x5243('0xd'));logger[_0x5243('0xe')](_0x5243('0xf'),_0xbb46bc,_0x5243('0xd'),JSON['stringify'](_0x37bab2));if(_0x37bab2['error']){if(_0x37bab2[_0x5243('0x10')][_0x5243('0x11')]===0x1f4){logger[_0x5243('0x10')](_0x5243('0xc'),_0xbb46bc,_0x37bab2['error'][_0x5243('0x12')]);return _0x54c52d(_0x37bab2[_0x5243('0x10')][_0x5243('0x12')]);}logger[_0x5243('0x10')](_0x5243('0xc'),_0xbb46bc,_0x37bab2[_0x5243('0x10')][_0x5243('0x12')]);return _0x31333f(_0x37bab2[_0x5243('0x10')][_0x5243('0x12')]);}else{logger['info'](_0x5243('0xc'),_0xbb46bc,'request\x20sent');_0x31333f(_0x37bab2[_0x5243('0x13')][_0x5243('0x12')]);}})['catch'](function(_0x335410){logger['error'](_0x5243('0xc'),_0xbb46bc,_0x335410);_0x54c52d(_0x335410);});});}exports[_0x5243('0x14')]=function(_0x20e65a){var _0xfd5db9=this;return new Promise(function(_0x2d6373,_0x910e81){return db[_0x5243('0x15')][_0x5243('0x16')](_0x20e65a['body'],{'raw':_0x20e65a['options']?_0x20e65a['options'][_0x5243('0x17')]===undefined?!![]:![]:!![]})[_0x5243('0xb')](function(_0x14e9bd){logger[_0x5243('0x18')](_0x5243('0x14'),_0x20e65a);logger['debug'](_0x5243('0x14'),_0x20e65a,JSON[_0x5243('0x19')](_0x14e9bd));_0x2d6373(_0x14e9bd);})[_0x5243('0x1a')](function(_0x738b93){logger['error'](_0x5243('0x14'),_0x738b93[_0x5243('0x12')],_0x20e65a);_0x910e81(_0xfd5db9['error'](0x1f4,_0x738b93[_0x5243('0x12')]));});});};exports['UpdateSmsQueueReport']=function(_0x11ae1e){var _0xf62ad3=this;return new Promise(function(_0xdd64f6,_0x5cd041){return db[_0x5243('0x15')][_0x5243('0x1b')](_0x11ae1e[_0x5243('0x1c')],{'raw':_0x11ae1e[_0x5243('0x1d')]?_0x11ae1e[_0x5243('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11ae1e['options']?_0x11ae1e[_0x5243('0x1d')][_0x5243('0x1e')]||null:null,'attributes':_0x11ae1e[_0x5243('0x1d')]?_0x11ae1e[_0x5243('0x1d')][_0x5243('0x1f')]||null:null,'limit':_0x11ae1e['options']?_0x11ae1e['options'][_0x5243('0x20')]||null:null})[_0x5243('0xb')](function(_0x26b5ab){logger['info'](_0x5243('0x21'),_0x11ae1e);logger[_0x5243('0xe')](_0x5243('0x21'),_0x11ae1e,JSON[_0x5243('0x19')](_0x26b5ab));_0xdd64f6(_0x26b5ab);})[_0x5243('0x1a')](function(_0xb5ed6c){logger['error'](_0x5243('0x21'),_0xb5ed6c[_0x5243('0x12')],_0x11ae1e);_0x5cd041(_0xf62ad3[_0x5243('0x10')](0x1f4,_0xb5ed6c[_0x5243('0x12')]));});});};
\ No newline at end of file
+var _0x5918=['info','result','catch','create','options','raw','CreateSmsQueueReport','stringify','UpdateSmsQueueReport','SmsQueueReport','update','body','where','limit','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x1ca504,_0x252ab3){var _0x14e8ee=function(_0x5b6766){while(--_0x5b6766){_0x1ca504['push'](_0x1ca504['shift']());}};_0x14e8ee(++_0x252ab3);}(_0x5918,0x1ee));var _0x8591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5918[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x8591('0x0'));var moment=require(_0x8591('0x1'));var BPromise=require(_0x8591('0x2'));var rs=require(_0x8591('0x3'));var fs=require('fs');var Redis=require(_0x8591('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8591('0x5'));var logger=require(_0x8591('0x6'))(_0x8591('0x7'));var config=require('../../config/environment');var jayson=require(_0x8591('0x8'));var client=jayson[_0x8591('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17d72d,_0x5db6e0,_0x57ff29){return new BPromise(function(_0x19fe1b,_0xeeb0a6){return client[_0x8591('0xa')](_0x17d72d,_0x57ff29)[_0x8591('0xb')](function(_0x5946b3){logger['info'](_0x8591('0xc'),_0x5db6e0,'request\x20sent');logger[_0x8591('0xd')](_0x8591('0xe'),_0x5db6e0,'request\x20sent',JSON['stringify'](_0x5946b3));if(_0x5946b3['error']){if(_0x5946b3[_0x8591('0xf')][_0x8591('0x10')]===0x1f4){logger['error'](_0x8591('0xc'),_0x5db6e0,_0x5946b3[_0x8591('0xf')]['message']);return _0xeeb0a6(_0x5946b3[_0x8591('0xf')][_0x8591('0x11')]);}logger[_0x8591('0xf')](_0x8591('0xc'),_0x5db6e0,_0x5946b3[_0x8591('0xf')][_0x8591('0x11')]);return _0x19fe1b(_0x5946b3[_0x8591('0xf')][_0x8591('0x11')]);}else{logger[_0x8591('0x12')](_0x8591('0xc'),_0x5db6e0,'request\x20sent');_0x19fe1b(_0x5946b3[_0x8591('0x13')][_0x8591('0x11')]);}})[_0x8591('0x14')](function(_0x31c37d){logger[_0x8591('0xf')](_0x8591('0xc'),_0x5db6e0,_0x31c37d);_0xeeb0a6(_0x31c37d);});});}exports['CreateSmsQueueReport']=function(_0x41acfb){var _0x2be853=this;return new Promise(function(_0x2902a3,_0x17dfe8){return db['SmsQueueReport'][_0x8591('0x15')](_0x41acfb['body'],{'raw':_0x41acfb[_0x8591('0x16')]?_0x41acfb[_0x8591('0x16')][_0x8591('0x17')]===undefined?!![]:![]:!![]})[_0x8591('0xb')](function(_0x3c0aa9){logger[_0x8591('0x12')](_0x8591('0x18'),_0x41acfb);logger[_0x8591('0xd')](_0x8591('0x18'),_0x41acfb,JSON[_0x8591('0x19')](_0x3c0aa9));_0x2902a3(_0x3c0aa9);})[_0x8591('0x14')](function(_0x48922c){logger[_0x8591('0xf')](_0x8591('0x18'),_0x48922c['message'],_0x41acfb);_0x17dfe8(_0x2be853[_0x8591('0xf')](0x1f4,_0x48922c[_0x8591('0x11')]));});});};exports[_0x8591('0x1a')]=function(_0x17617e){var _0x105b55=this;return new Promise(function(_0x55a603,_0x13663c){return db[_0x8591('0x1b')][_0x8591('0x1c')](_0x17617e[_0x8591('0x1d')],{'raw':_0x17617e[_0x8591('0x16')]?_0x17617e[_0x8591('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17617e['options']?_0x17617e[_0x8591('0x16')][_0x8591('0x1e')]||null:null,'attributes':_0x17617e['options']?_0x17617e[_0x8591('0x16')]['attributes']||null:null,'limit':_0x17617e['options']?_0x17617e[_0x8591('0x16')][_0x8591('0x1f')]||null:null})[_0x8591('0xb')](function(_0x646b3f){logger[_0x8591('0x12')]('UpdateSmsQueueReport',_0x17617e);logger[_0x8591('0xd')](_0x8591('0x1a'),_0x17617e,JSON['stringify'](_0x646b3f));_0x55a603(_0x646b3f);})[_0x8591('0x14')](function(_0x237727){logger[_0x8591('0xf')](_0x8591('0x1a'),_0x237727[_0x8591('0x11')],_0x17617e);_0x13663c(_0x105b55[_0x8591('0xf')](0x1f4,_0x237727['message']));});});};
\ No newline at end of file
index 3a576bc..e9df789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['show','post','put','update','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','index','/describe'];(function(_0x1a7550,_0x1edace){var _0x426e22=function(_0x1c10a1){while(--_0x1c10a1){_0x1a7550['push'](_0x1a7550['shift']());}};_0x426e22(++_0x1edace);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x3739ed,_0x4a4844){_0x3739ed=_0x3739ed-0x0;var _0x49b121=_0xdbf5[_0x3739ed];return _0x49b121;};'use strict';var multer=require('multer');var util=require(_0x5dbf('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5dbf('0x1'));var router=express[_0x5dbf('0x2')]();var fs_extra=require(_0x5dbf('0x3'));var auth=require(_0x5dbf('0x4'));var interaction=require(_0x5dbf('0x5'));var config=require(_0x5dbf('0x6'));var controller=require(_0x5dbf('0x7'));router[_0x5dbf('0x8')]('/',auth[_0x5dbf('0x9')](),controller[_0x5dbf('0xa')]);router[_0x5dbf('0x8')](_0x5dbf('0xb'),auth[_0x5dbf('0x9')](),controller['describe']);router[_0x5dbf('0x8')]('/:id',auth[_0x5dbf('0x9')](),controller[_0x5dbf('0xc')]);router[_0x5dbf('0xd')]('/',auth[_0x5dbf('0x9')](),controller['create']);router[_0x5dbf('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x5dbf('0xf')]);router['delete']('/:id',auth[_0x5dbf('0x9')](),controller['destroy']);module[_0x5dbf('0x10')]=router;
\ No newline at end of file
+var _0x1b20=['show','post','create','put','/:id','delete','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','index','/describe'];(function(_0x1e2c04,_0x1ddf0a){var _0xb8d40d=function(_0x28e365){while(--_0x28e365){_0x1e2c04['push'](_0x1e2c04['shift']());}};_0xb8d40d(++_0x1ddf0a);}(_0x1b20,0x66));var _0x01b2=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x1b20[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require('multer');var util=require(_0x01b2('0x0'));var path=require(_0x01b2('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x01b2('0x2')]();var fs_extra=require(_0x01b2('0x3'));var auth=require(_0x01b2('0x4'));var interaction=require(_0x01b2('0x5'));var config=require(_0x01b2('0x6'));var controller=require(_0x01b2('0x7'));router[_0x01b2('0x8')]('/',auth[_0x01b2('0x9')](),controller[_0x01b2('0xa')]);router[_0x01b2('0x8')](_0x01b2('0xb'),auth[_0x01b2('0x9')](),controller['describe']);router[_0x01b2('0x8')]('/:id',auth[_0x01b2('0x9')](),controller[_0x01b2('0xc')]);router[_0x01b2('0xd')]('/',auth[_0x01b2('0x9')](),controller[_0x01b2('0xe')]);router[_0x01b2('0xf')](_0x01b2('0x10'),auth[_0x01b2('0x9')](),controller['update']);router[_0x01b2('0x11')]('/:id',auth[_0x01b2('0x9')](),controller['destroy']);module[_0x01b2('0x12')]=router;
\ No newline at end of file
index ebc932c..7a4345e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x23f4bb,_0x54e2fe){var _0x45817d=function(_0x4fd825){while(--_0x4fd825){_0x23f4bb['push'](_0x23f4bb['shift']());}};_0x45817d(++_0x54e2fe);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4ddc7e,_0xcb9b8){_0x4ddc7e=_0x4ddc7e-0x0;var _0xfbf0ec=_0xf3cd[_0x4ddc7e];return _0xfbf0ec;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x420f2a,_0x2cc58d){var _0x28f802=function(_0x3329cc){while(--_0x3329cc){_0x420f2a['push'](_0x420f2a['shift']());}};_0x28f802(++_0x2cc58d);}(_0xb43b,0x1b2));var _0xbb43=function(_0x34aab4,_0x1074b4){_0x34aab4=_0x34aab4-0x0;var _0x330c38=_0xb43b[_0x34aab4];return _0x330c38;};'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 15addea..ec0a82c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace4=['body','params','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','options','SmsTransferReport','includeAll','include','findAll','rows','show','catch','create'];(function(_0x733840,_0x61713e){var _0x592129=function(_0x487e80){while(--_0x487e80){_0x733840['push'](_0x733840['shift']());}};_0x592129(++_0x61713e);}(_0xace4,0x17a));var _0x4ace=function(_0x3902c1,_0x1c9eb2){_0x3902c1=_0x3902c1-0x0;var _0x1266cc=_0xace4[_0x3902c1];return _0x1266cc;};'use strict';var emlformat=require(_0x4ace('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4ace('0x1'));var jsonpatch=require(_0x4ace('0x2'));var rp=require('request-promise');var moment=require(_0x4ace('0x3'));var BPromise=require(_0x4ace('0x4'));var Mustache=require(_0x4ace('0x5'));var util=require(_0x4ace('0x6'));var path=require(_0x4ace('0x7'));var sox=require(_0x4ace('0x8'));var csv=require(_0x4ace('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4ace('0xa'));var _=require(_0x4ace('0xb'));var squel=require(_0x4ace('0xc'));var crypto=require(_0x4ace('0xd'));var jsforce=require(_0x4ace('0xe'));var deskjs=require(_0x4ace('0xf'));var toCsv=require(_0x4ace('0x9'));var querystring=require('querystring');var Papa=require(_0x4ace('0x10'));var Redis=require('ioredis');var authService=require(_0x4ace('0x11'));var qs=require(_0x4ace('0x12'));var as=require(_0x4ace('0x13'));var hardwareService=require(_0x4ace('0x14'));var logger=require('../../config/logger')(_0x4ace('0x15'));var utils=require(_0x4ace('0x16'));var config=require(_0x4ace('0x17'));var licenseUtil=require(_0x4ace('0x18'));var db=require(_0x4ace('0x19'))['db'];function respondWithStatusCode(_0x30cff0,_0x5ee15b){_0x5ee15b=_0x5ee15b||0xcc;return function(_0x157874){if(_0x157874){return _0x30cff0[_0x4ace('0x1a')](_0x5ee15b);}return _0x30cff0[_0x4ace('0x1b')](_0x5ee15b)[_0x4ace('0x1c')]();};}function respondWithResult(_0x1f9838,_0x3e9c4f){_0x3e9c4f=_0x3e9c4f||0xc8;return function(_0xf14a84){if(_0xf14a84){return _0x1f9838[_0x4ace('0x1b')](_0x3e9c4f)[_0x4ace('0x1d')](_0xf14a84);}};}function respondWithFilteredResult(_0x1eb8be,_0x1858d0){return function(_0x4ee1d8){if(_0x4ee1d8){var _0x3a4232=typeof _0x1858d0[_0x4ace('0x1e')]===_0x4ace('0x1f')&&typeof _0x1858d0[_0x4ace('0x20')]===_0x4ace('0x1f');var _0x269bc3=_0x4ee1d8[_0x4ace('0x21')];var _0x424ea8=_0x3a4232?0x0:_0x1858d0[_0x4ace('0x1e')];var _0x5cb6fd=_0x3a4232?_0x4ee1d8[_0x4ace('0x21')]:_0x1858d0[_0x4ace('0x1e')]+_0x1858d0['limit'];var _0x2b06f8;if(_0x5cb6fd>=_0x269bc3){_0x5cb6fd=_0x269bc3;_0x2b06f8=0xc8;}else{_0x2b06f8=0xce;}_0x1eb8be[_0x4ace('0x1b')](_0x2b06f8);return _0x1eb8be[_0x4ace('0x22')]('Content-Range',_0x424ea8+'-'+_0x5cb6fd+'/'+_0x269bc3)[_0x4ace('0x1d')](_0x4ee1d8);}return null;};}function patchUpdates(_0x4694fa){return function(_0x21eb5d){try{jsonpatch[_0x4ace('0x23')](_0x21eb5d,_0x4694fa,!![]);}catch(_0x2987c9){return BPromise[_0x4ace('0x24')](_0x2987c9);}return _0x21eb5d[_0x4ace('0x25')]();};}function saveUpdates(_0x351369,_0x1d06fd){return function(_0x23ff91){if(_0x23ff91){return _0x23ff91[_0x4ace('0x26')](_0x351369)[_0x4ace('0x27')](function(_0xb9b9d5){return _0xb9b9d5;});}return null;};}function removeEntity(_0x387b71,_0x5d4499){return function(_0x35b2ed){if(_0x35b2ed){return _0x35b2ed[_0x4ace('0x28')]()[_0x4ace('0x27')](function(){_0x387b71[_0x4ace('0x1b')](0xcc)[_0x4ace('0x1c')]();});}};}function handleEntityNotFound(_0x419ba4,_0x1133da){return function(_0x1ba644){if(!_0x1ba644){_0x419ba4[_0x4ace('0x1a')](0x194);}return _0x1ba644;};}function handleError(_0xea724f,_0x35b082){_0x35b082=_0x35b082||0x1f4;return function(_0x3e05ca){logger[_0x4ace('0x29')](_0x3e05ca['stack']);if(_0x3e05ca[_0x4ace('0x2a')]){delete _0x3e05ca[_0x4ace('0x2a')];}_0xea724f[_0x4ace('0x1b')](_0x35b082)[_0x4ace('0x2b')](_0x3e05ca);};}exports[_0x4ace('0x2c')]=function(_0x41538d,_0x2de606){var _0x302770={},_0x201715={},_0x5e7b8e={'count':0x0,'rows':[]};var _0xafec2c=_[_0x4ace('0x2d')](db['SmsTransferReport'][_0x4ace('0x2e')],function(_0x29dbc9){return{'name':_0x29dbc9[_0x4ace('0x2f')],'type':_0x29dbc9[_0x4ace('0x30')][_0x4ace('0x31')]};});_0x201715[_0x4ace('0x32')]=_[_0x4ace('0x2d')](_0xafec2c,_0x4ace('0x2a'));_0x201715[_0x4ace('0x33')]=_[_0x4ace('0x34')](_0x41538d[_0x4ace('0x33')]);_0x201715[_0x4ace('0x35')]=_[_0x4ace('0x36')](_0x201715[_0x4ace('0x32')],_0x201715[_0x4ace('0x33')]);_0x302770[_0x4ace('0x37')]=_[_0x4ace('0x36')](_0x201715[_0x4ace('0x32')],qs['fields'](_0x41538d[_0x4ace('0x33')][_0x4ace('0x38')]));_0x302770[_0x4ace('0x37')]=_0x302770[_0x4ace('0x37')][_0x4ace('0x39')]?_0x302770[_0x4ace('0x37')]:_0x201715[_0x4ace('0x32')];if(!_0x41538d[_0x4ace('0x33')]['hasOwnProperty']('nolimit')){_0x302770[_0x4ace('0x20')]=qs[_0x4ace('0x20')](_0x41538d[_0x4ace('0x33')][_0x4ace('0x20')]);_0x302770[_0x4ace('0x1e')]=qs['offset'](_0x41538d[_0x4ace('0x33')][_0x4ace('0x1e')]);}_0x302770[_0x4ace('0x3a')]=qs[_0x4ace('0x3b')](_0x41538d[_0x4ace('0x33')][_0x4ace('0x3b')]);_0x302770[_0x4ace('0x3c')]=qs[_0x4ace('0x35')](_['pick'](_0x41538d[_0x4ace('0x33')],_0x201715[_0x4ace('0x35')]),_0xafec2c);if(_0x41538d['query'][_0x4ace('0x3d')]){_0x302770[_0x4ace('0x3c')]=_['merge'](_0x302770[_0x4ace('0x3c')],{'$or':_[_0x4ace('0x2d')](_0xafec2c,function(_0x34b535){if(_0x34b535[_0x4ace('0x30')]!=='VIRTUAL'){var _0x3429e1={};_0x3429e1[_0x34b535[_0x4ace('0x2a')]]={'$like':'%'+_0x41538d[_0x4ace('0x33')][_0x4ace('0x3d')]+'%'};return _0x3429e1;}})});}_0x302770=_[_0x4ace('0x3e')]({},_0x302770,_0x41538d[_0x4ace('0x3f')]);var _0x2c0647={'where':_0x302770['where']};return db[_0x4ace('0x40')]['count'](_0x2c0647)[_0x4ace('0x27')](function(_0x12ebe0){_0x5e7b8e[_0x4ace('0x21')]=_0x12ebe0;if(_0x41538d[_0x4ace('0x33')][_0x4ace('0x41')]){_0x302770[_0x4ace('0x42')]=[{'all':!![]}];}return db[_0x4ace('0x40')][_0x4ace('0x43')](_0x302770);})[_0x4ace('0x27')](function(_0x28aba0){_0x5e7b8e[_0x4ace('0x44')]=_0x28aba0;return _0x5e7b8e;})['then'](respondWithFilteredResult(_0x2de606,_0x302770))['catch'](handleError(_0x2de606,null));};exports[_0x4ace('0x45')]=function(_0x34a10a,_0x169f5c){var _0x4354ca={'raw':!![],'where':{'id':_0x34a10a['params']['id']}},_0x5a62c4={};_0x5a62c4['model']=_[_0x4ace('0x34')](db['SmsTransferReport'][_0x4ace('0x2e')]);_0x5a62c4[_0x4ace('0x33')]=_[_0x4ace('0x34')](_0x34a10a[_0x4ace('0x33')]);_0x5a62c4[_0x4ace('0x35')]=_[_0x4ace('0x36')](_0x5a62c4[_0x4ace('0x32')],_0x5a62c4['query']);_0x4354ca['attributes']=_[_0x4ace('0x36')](_0x5a62c4['model'],qs[_0x4ace('0x38')](_0x34a10a[_0x4ace('0x33')][_0x4ace('0x38')]));_0x4354ca[_0x4ace('0x37')]=_0x4354ca[_0x4ace('0x37')][_0x4ace('0x39')]?_0x4354ca[_0x4ace('0x37')]:_0x5a62c4['model'];if(_0x34a10a['query']['includeAll']){_0x4354ca['include']=[{'all':!![]}];}_0x4354ca=_['merge']({},_0x4354ca,_0x34a10a[_0x4ace('0x3f')]);return db[_0x4ace('0x40')]['find'](_0x4354ca)[_0x4ace('0x27')](handleEntityNotFound(_0x169f5c,null))[_0x4ace('0x27')](respondWithResult(_0x169f5c,null))[_0x4ace('0x46')](handleError(_0x169f5c,null));};exports[_0x4ace('0x47')]=function(_0x1174a4,_0x4976d5){return db[_0x4ace('0x40')][_0x4ace('0x47')](_0x1174a4[_0x4ace('0x48')],{})[_0x4ace('0x27')](respondWithResult(_0x4976d5,0xc9))[_0x4ace('0x46')](handleError(_0x4976d5,null));};exports[_0x4ace('0x26')]=function(_0x34f8c4,_0x399100){if(_0x34f8c4['body']['id']){delete _0x34f8c4[_0x4ace('0x48')]['id'];}return db['SmsTransferReport']['find']({'where':{'id':_0x34f8c4[_0x4ace('0x49')]['id']}})[_0x4ace('0x27')](handleEntityNotFound(_0x399100,null))[_0x4ace('0x27')](saveUpdates(_0x34f8c4['body'],null))[_0x4ace('0x27')](respondWithResult(_0x399100,null))[_0x4ace('0x46')](handleError(_0x399100,null));};exports[_0x4ace('0x28')]=function(_0x18dc49,_0x1fd620){return db[_0x4ace('0x40')]['find']({'where':{'id':_0x18dc49[_0x4ace('0x49')]['id']}})[_0x4ace('0x27')](handleEntityNotFound(_0x1fd620,null))['then'](removeEntity(_0x1fd620,null))['catch'](handleError(_0x1fd620,null));};exports[_0x4ace('0x4a')]=function(_0x47331a,_0x2e152d){return db['SmsTransferReport']['describe']()['then'](respondWithResult(_0x2e152d,null))[_0x4ace('0x46')](handleError(_0x2e152d,null));};
\ No newline at end of file
+var _0x8691=['then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','SmsTransferReport','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','rimraf','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','apply','reject','update'];(function(_0x4442fa,_0x350d40){var _0x288850=function(_0x23d311){while(--_0x23d311){_0x4442fa['push'](_0x4442fa['shift']());}};_0x288850(++_0x350d40);}(_0x8691,0x155));var _0x1869=function(_0x371d11,_0x3b7d7d){_0x371d11=_0x371d11-0x0;var _0x1d5b7e=_0x8691[_0x371d11];return _0x1d5b7e;};'use strict';var emlformat=require(_0x1869('0x0'));var rimraf=require(_0x1869('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1869('0x2'));var rp=require('request-promise');var moment=require(_0x1869('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1869('0x4'));var util=require('util');var path=require(_0x1869('0x5'));var sox=require(_0x1869('0x6'));var csv=require(_0x1869('0x7'));var ejs=require(_0x1869('0x8'));var fs=require('fs');var fs_extra=require(_0x1869('0x9'));var _=require(_0x1869('0xa'));var squel=require(_0x1869('0xb'));var crypto=require(_0x1869('0xc'));var jsforce=require(_0x1869('0xd'));var deskjs=require(_0x1869('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1869('0xf'));var Papa=require('papaparse');var Redis=require(_0x1869('0x10'));var authService=require(_0x1869('0x11'));var qs=require(_0x1869('0x12'));var as=require(_0x1869('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1869('0x14'))('api');var utils=require(_0x1869('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1869('0x16'));var db=require(_0x1869('0x17'))['db'];function respondWithStatusCode(_0x374937,_0x153982){_0x153982=_0x153982||0xcc;return function(_0x31ee5a){if(_0x31ee5a){return _0x374937['sendStatus'](_0x153982);}return _0x374937[_0x1869('0x18')](_0x153982)[_0x1869('0x19')]();};}function respondWithResult(_0x48c01f,_0x4f6092){_0x4f6092=_0x4f6092||0xc8;return function(_0x560689){if(_0x560689){return _0x48c01f[_0x1869('0x18')](_0x4f6092)[_0x1869('0x1a')](_0x560689);}};}function respondWithFilteredResult(_0x2ff354,_0x57cf02){return function(_0x1db42c){if(_0x1db42c){var _0x1997d9=typeof _0x57cf02['offset']===_0x1869('0x1b')&&typeof _0x57cf02['limit']===_0x1869('0x1b');var _0xd06a53=_0x1db42c[_0x1869('0x1c')];var _0x336b4d=_0x1997d9?0x0:_0x57cf02[_0x1869('0x1d')];var _0x50190f=_0x1997d9?_0x1db42c[_0x1869('0x1c')]:_0x57cf02[_0x1869('0x1d')]+_0x57cf02[_0x1869('0x1e')];var _0xc013bf;if(_0x50190f>=_0xd06a53){_0x50190f=_0xd06a53;_0xc013bf=0xc8;}else{_0xc013bf=0xce;}_0x2ff354[_0x1869('0x18')](_0xc013bf);return _0x2ff354['set']('Content-Range',_0x336b4d+'-'+_0x50190f+'/'+_0xd06a53)[_0x1869('0x1a')](_0x1db42c);}return null;};}function patchUpdates(_0x3fd041){return function(_0x2847df){try{jsonpatch[_0x1869('0x1f')](_0x2847df,_0x3fd041,!![]);}catch(_0x3a39c7){return BPromise[_0x1869('0x20')](_0x3a39c7);}return _0x2847df['save']();};}function saveUpdates(_0x26dc86,_0xc2c65){return function(_0x38266f){if(_0x38266f){return _0x38266f[_0x1869('0x21')](_0x26dc86)[_0x1869('0x22')](function(_0x5ed8d5){return _0x5ed8d5;});}return null;};}function removeEntity(_0x34b323,_0x56b6d1){return function(_0x338591){if(_0x338591){return _0x338591[_0x1869('0x23')]()[_0x1869('0x22')](function(){_0x34b323[_0x1869('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e796e,_0x496ad0){return function(_0x3707a7){if(!_0x3707a7){_0x2e796e['sendStatus'](0x194);}return _0x3707a7;};}function handleError(_0x27d106,_0x2c4c38){_0x2c4c38=_0x2c4c38||0x1f4;return function(_0x19c2e3){logger[_0x1869('0x24')](_0x19c2e3[_0x1869('0x25')]);if(_0x19c2e3[_0x1869('0x26')]){delete _0x19c2e3[_0x1869('0x26')];}_0x27d106['status'](_0x2c4c38)[_0x1869('0x27')](_0x19c2e3);};}exports[_0x1869('0x28')]=function(_0xf13b27,_0x448cf9){var _0x3c3fc2={},_0x32a0cb={},_0x145ef0={'count':0x0,'rows':[]};var _0x56c496=_[_0x1869('0x29')](db['SmsTransferReport'][_0x1869('0x2a')],function(_0x3a8f93){return{'name':_0x3a8f93[_0x1869('0x2b')],'type':_0x3a8f93[_0x1869('0x2c')][_0x1869('0x2d')]};});_0x32a0cb[_0x1869('0x2e')]=_['map'](_0x56c496,_0x1869('0x26'));_0x32a0cb[_0x1869('0x2f')]=_[_0x1869('0x30')](_0xf13b27[_0x1869('0x2f')]);_0x32a0cb[_0x1869('0x31')]=_['intersection'](_0x32a0cb[_0x1869('0x2e')],_0x32a0cb[_0x1869('0x2f')]);_0x3c3fc2[_0x1869('0x32')]=_[_0x1869('0x33')](_0x32a0cb[_0x1869('0x2e')],qs[_0x1869('0x34')](_0xf13b27[_0x1869('0x2f')]['fields']));_0x3c3fc2[_0x1869('0x32')]=_0x3c3fc2['attributes']['length']?_0x3c3fc2[_0x1869('0x32')]:_0x32a0cb['model'];if(!_0xf13b27['query'][_0x1869('0x35')](_0x1869('0x36'))){_0x3c3fc2['limit']=qs[_0x1869('0x1e')](_0xf13b27['query'][_0x1869('0x1e')]);_0x3c3fc2[_0x1869('0x1d')]=qs['offset'](_0xf13b27[_0x1869('0x2f')][_0x1869('0x1d')]);}_0x3c3fc2[_0x1869('0x37')]=qs['sort'](_0xf13b27['query'][_0x1869('0x38')]);_0x3c3fc2[_0x1869('0x39')]=qs[_0x1869('0x31')](_[_0x1869('0x3a')](_0xf13b27[_0x1869('0x2f')],_0x32a0cb[_0x1869('0x31')]),_0x56c496);if(_0xf13b27[_0x1869('0x2f')][_0x1869('0x3b')]){_0x3c3fc2['where']=_[_0x1869('0x3c')](_0x3c3fc2[_0x1869('0x39')],{'$or':_[_0x1869('0x29')](_0x56c496,function(_0x28d43b){if(_0x28d43b[_0x1869('0x2c')]!==_0x1869('0x3d')){var _0x2aad67={};_0x2aad67[_0x28d43b[_0x1869('0x26')]]={'$like':'%'+_0xf13b27[_0x1869('0x2f')]['filter']+'%'};return _0x2aad67;}})});}_0x3c3fc2=_[_0x1869('0x3c')]({},_0x3c3fc2,_0xf13b27['options']);var _0x14dd4f={'where':_0x3c3fc2['where']};return db['SmsTransferReport']['count'](_0x14dd4f)[_0x1869('0x22')](function(_0x429e50){_0x145ef0['count']=_0x429e50;if(_0xf13b27[_0x1869('0x2f')][_0x1869('0x3e')]){_0x3c3fc2[_0x1869('0x3f')]=[{'all':!![]}];}return db[_0x1869('0x40')][_0x1869('0x41')](_0x3c3fc2);})['then'](function(_0x2cbb93){_0x145ef0[_0x1869('0x42')]=_0x2cbb93;return _0x145ef0;})['then'](respondWithFilteredResult(_0x448cf9,_0x3c3fc2))[_0x1869('0x43')](handleError(_0x448cf9,null));};exports[_0x1869('0x44')]=function(_0x43624d,_0x34d8f5){var _0x3d3e2e={'raw':!![],'where':{'id':_0x43624d[_0x1869('0x45')]['id']}},_0x3cd931={};_0x3cd931[_0x1869('0x2e')]=_[_0x1869('0x30')](db[_0x1869('0x40')][_0x1869('0x2a')]);_0x3cd931[_0x1869('0x2f')]=_[_0x1869('0x30')](_0x43624d['query']);_0x3cd931[_0x1869('0x31')]=_[_0x1869('0x33')](_0x3cd931['model'],_0x3cd931[_0x1869('0x2f')]);_0x3d3e2e[_0x1869('0x32')]=_[_0x1869('0x33')](_0x3cd931[_0x1869('0x2e')],qs[_0x1869('0x34')](_0x43624d[_0x1869('0x2f')][_0x1869('0x34')]));_0x3d3e2e[_0x1869('0x32')]=_0x3d3e2e[_0x1869('0x32')][_0x1869('0x46')]?_0x3d3e2e[_0x1869('0x32')]:_0x3cd931[_0x1869('0x2e')];if(_0x43624d[_0x1869('0x2f')][_0x1869('0x3e')]){_0x3d3e2e[_0x1869('0x3f')]=[{'all':!![]}];}_0x3d3e2e=_[_0x1869('0x3c')]({},_0x3d3e2e,_0x43624d['options']);return db['SmsTransferReport'][_0x1869('0x47')](_0x3d3e2e)[_0x1869('0x22')](handleEntityNotFound(_0x34d8f5,null))['then'](respondWithResult(_0x34d8f5,null))[_0x1869('0x43')](handleError(_0x34d8f5,null));};exports[_0x1869('0x48')]=function(_0x20e8d1,_0x3175c8){return db[_0x1869('0x40')][_0x1869('0x48')](_0x20e8d1[_0x1869('0x49')],{})[_0x1869('0x22')](respondWithResult(_0x3175c8,0xc9))[_0x1869('0x43')](handleError(_0x3175c8,null));};exports[_0x1869('0x21')]=function(_0x58f5da,_0x3d511c){if(_0x58f5da[_0x1869('0x49')]['id']){delete _0x58f5da[_0x1869('0x49')]['id'];}return db[_0x1869('0x40')]['find']({'where':{'id':_0x58f5da[_0x1869('0x45')]['id']}})[_0x1869('0x22')](handleEntityNotFound(_0x3d511c,null))[_0x1869('0x22')](saveUpdates(_0x58f5da[_0x1869('0x49')],null))[_0x1869('0x22')](respondWithResult(_0x3d511c,null))[_0x1869('0x43')](handleError(_0x3d511c,null));};exports[_0x1869('0x23')]=function(_0x6d96c9,_0x3644c1){return db[_0x1869('0x40')][_0x1869('0x47')]({'where':{'id':_0x6d96c9[_0x1869('0x45')]['id']}})[_0x1869('0x22')](handleEntityNotFound(_0x3644c1,null))[_0x1869('0x22')](removeEntity(_0x3644c1,null))[_0x1869('0x43')](handleError(_0x3644c1,null));};exports[_0x1869('0x4a')]=function(_0x48d68c,_0xb3f4c5){return db[_0x1869('0x40')][_0x1869('0x4a')]()[_0x1869('0x22')](respondWithResult(_0xb3f4c5,null))[_0x1869('0x43')](handleError(_0xb3f4c5,null));};
\ No newline at end of file
index f3ccd6c..b3991e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3040=['uniqueid','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SmsTransferReport'];(function(_0x313f71,_0x402146){var _0x49de12=function(_0x31ea53){while(--_0x31ea53){_0x313f71['push'](_0x313f71['shift']());}};_0x49de12(++_0x402146);}(_0x3040,0x6f));var _0x0304=function(_0x5b9a47,_0x23096d){_0x5b9a47=_0x5b9a47-0x0;var _0x46c812=_0x3040[_0x5b9a47];return _0x46c812;};'use strict';var _=require('lodash');var util=require(_0x0304('0x0'));var logger=require(_0x0304('0x1'))('api');var moment=require(_0x0304('0x2'));var BPromise=require(_0x0304('0x3'));var rp=require(_0x0304('0x4'));var fs=require('fs');var path=require(_0x0304('0x5'));var rimraf=require(_0x0304('0x6'));var config=require(_0x0304('0x7'));var attributes=require('./smsTransferReport.attributes');module[_0x0304('0x8')]=function(_0x5385ed,_0x437454){return _0x5385ed['define'](_0x0304('0x9'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x0304('0xa'),'fields':[_0x0304('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x71c8=['util','../../config/logger','bluebird','path','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','uniqueid','lodash'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x71c8,0x149));var _0x871c=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x71c8[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x871c('0x0'));var util=require(_0x871c('0x1'));var logger=require(_0x871c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x871c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x871c('0x4'));var rimraf=require('rimraf');var config=require(_0x871c('0x5'));var attributes=require(_0x871c('0x6'));module[_0x871c('0x7')]=function(_0x225544,_0x412b3b){return _0x225544['define'](_0x871c('0x8'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x871c('0x9'),'fields':[_0x871c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index fb4672a..666b5ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5da=['error','code','SmsTransferReport,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify'];(function(_0x26d107,_0x288f0c){var _0x4afc48=function(_0x228f17){while(--_0x228f17){_0x26d107['push'](_0x26d107['shift']());}};_0x4afc48(++_0x288f0c);}(_0xd5da,0x9f));var _0xad5d=function(_0x38ae5b,_0x545185){_0x38ae5b=_0x38ae5b-0x0;var _0xc0b5c3=_0xd5da[_0x38ae5b];return _0xc0b5c3;};'use strict';var _=require(_0xad5d('0x0'));var util=require(_0xad5d('0x1'));var moment=require('moment');var BPromise=require(_0xad5d('0x2'));var rs=require(_0xad5d('0x3'));var fs=require('fs');var Redis=require(_0xad5d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xad5d('0x5'));var logger=require('../../config/logger')(_0xad5d('0x6'));var config=require(_0xad5d('0x7'));var jayson=require(_0xad5d('0x8'));var client=jayson[_0xad5d('0x9')][_0xad5d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb29da0,_0x31e684,_0xc6d93a){return new BPromise(function(_0xdda3bb,_0x5df98e){return client[_0xad5d('0xb')](_0xb29da0,_0xc6d93a)[_0xad5d('0xc')](function(_0x58da26){logger[_0xad5d('0xd')]('SmsTransferReport,\x20%s,\x20%s',_0x31e684,_0xad5d('0xe'));logger[_0xad5d('0xf')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x31e684,_0xad5d('0xe'),JSON[_0xad5d('0x10')](_0x58da26));if(_0x58da26['error']){if(_0x58da26[_0xad5d('0x11')][_0xad5d('0x12')]===0x1f4){logger['error'](_0xad5d('0x13'),_0x31e684,_0x58da26['error'][_0xad5d('0x14')]);return _0x5df98e(_0x58da26['error'][_0xad5d('0x14')]);}logger['error'](_0xad5d('0x13'),_0x31e684,_0x58da26['error'][_0xad5d('0x14')]);return _0xdda3bb(_0x58da26[_0xad5d('0x11')]['message']);}else{logger['info'](_0xad5d('0x13'),_0x31e684,'request\x20sent');_0xdda3bb(_0x58da26['result']['message']);}})[_0xad5d('0x15')](function(_0xd747c3){logger[_0xad5d('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x31e684,_0xd747c3);_0x5df98e(_0xd747c3);});});}
\ No newline at end of file
+var _0x3fc6=['request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s'];(function(_0x5b07be,_0x197f2a){var _0x203af7=function(_0x4e9536){while(--_0x4e9536){_0x5b07be['push'](_0x5b07be['shift']());}};_0x203af7(++_0x197f2a);}(_0x3fc6,0x159));var _0x63fc=function(_0x3b30a2,_0x5e3954){_0x3b30a2=_0x3b30a2-0x0;var _0x4251c4=_0x3fc6[_0x3b30a2];return _0x4251c4;};'use strict';var _=require(_0x63fc('0x0'));var util=require(_0x63fc('0x1'));var moment=require(_0x63fc('0x2'));var BPromise=require('bluebird');var rs=require(_0x63fc('0x3'));var fs=require('fs');var Redis=require(_0x63fc('0x4'));var db=require(_0x63fc('0x5'))['db'];var utils=require(_0x63fc('0x6'));var logger=require(_0x63fc('0x7'))(_0x63fc('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x63fc('0x9')][_0x63fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xa0d23e,_0x48cc45,_0x7d7e64){return new BPromise(function(_0x3e182f,_0x5da412){return client[_0x63fc('0xb')](_0xa0d23e,_0x7d7e64)[_0x63fc('0xc')](function(_0x231e48){logger[_0x63fc('0xd')](_0x63fc('0xe'),_0x48cc45,_0x63fc('0xf'));logger[_0x63fc('0x10')](_0x63fc('0x11'),_0x48cc45,_0x63fc('0xf'),JSON[_0x63fc('0x12')](_0x231e48));if(_0x231e48['error']){if(_0x231e48[_0x63fc('0x13')][_0x63fc('0x14')]===0x1f4){logger[_0x63fc('0x13')]('SmsTransferReport,\x20%s,\x20%s',_0x48cc45,_0x231e48['error'][_0x63fc('0x15')]);return _0x5da412(_0x231e48[_0x63fc('0x13')][_0x63fc('0x15')]);}logger[_0x63fc('0x13')](_0x63fc('0xe'),_0x48cc45,_0x231e48[_0x63fc('0x13')]['message']);return _0x3e182f(_0x231e48[_0x63fc('0x13')][_0x63fc('0x15')]);}else{logger[_0x63fc('0xd')](_0x63fc('0xe'),_0x48cc45,'request\x20sent');_0x3e182f(_0x231e48[_0x63fc('0x16')]['message']);}})[_0x63fc('0x17')](function(_0x35631f){logger[_0x63fc('0x13')](_0x63fc('0xe'),_0x48cc45,_0x35631f);_0x5da412(_0x35631f);});});}
\ No newline at end of file
index a6a2bb4..47f42bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c0d=['put','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','index','get','/:id','isAuthenticated','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','single','create'];(function(_0xc32883,_0x1aa16a){var _0x5c006b=function(_0x58d71b){while(--_0x58d71b){_0xc32883['push'](_0xc32883['shift']());}};_0x5c006b(++_0x1aa16a);}(_0x0c0d,0x77));var _0xd0c0=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0c0d[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0xd0c0('0x0'));var path=require(_0xd0c0('0x1'));var timeout=require(_0xd0c0('0x2'));var express=require('express');var router=express[_0xd0c0('0x3')]();var fs_extra=require(_0xd0c0('0x4'));var auth=require(_0xd0c0('0x5'));var interaction=require(_0xd0c0('0x6'));var config=require(_0xd0c0('0x7'));var controller=require(_0xd0c0('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xd0c0('0x9')]);router[_0xd0c0('0xa')](_0xd0c0('0xb'),auth[_0xd0c0('0xc')](),controller['show']);router[_0xd0c0('0xa')](_0xd0c0('0xd'),auth[_0xd0c0('0xc')](),controller[_0xd0c0('0xe')]);var upload=multer({'storage':multer[_0xd0c0('0xf')]({'destination':function(_0x36b8c5,_0x1ce7f7,_0x48235e){_0x48235e(null,path[_0xd0c0('0x10')](config['root'],_0xd0c0('0x11')));},'filename':function(_0x531482,_0x3c88c8,_0x538869){_0x3c88c8[_0xd0c0('0x12')]=_0x3c88c8[_0xd0c0('0x12')][_0xd0c0('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x538869(null,util[_0xd0c0('0x14')](_0xd0c0('0x15'),path[_0xd0c0('0x16')](_0x3c88c8['originalname'],path['extname'](_0x3c88c8[_0xd0c0('0x12')])),Date['now'](),path[_0xd0c0('0x17')](_0x3c88c8[_0xd0c0('0x12')])));}})});router['post']('/',upload[_0xd0c0('0x18')]('file'),controller[_0xd0c0('0x19')]);router[_0xd0c0('0x1a')](_0xd0c0('0xb'),auth[_0xd0c0('0xc')](),controller['update']);router[_0xd0c0('0x1b')](_0xd0c0('0xb'),auth[_0xd0c0('0xc')](),controller[_0xd0c0('0x1b')]);module[_0xd0c0('0x1c')]=router;
\ No newline at end of file
+var _0x63f2=['./sound.controller','get','index','/:id','show','/:id/download','isAuthenticated','download','diskStorage','root','server/files/sounds/original/','originalname','replace','format','basename','extname','post','single','create','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2af30d,_0x4e99e4){var _0x3197ea=function(_0x10eab0){while(--_0x10eab0){_0x2af30d['push'](_0x2af30d['shift']());}};_0x3197ea(++_0x4e99e4);}(_0x63f2,0x19b));var _0x263f=function(_0x4280b9,_0x6b9719){_0x4280b9=_0x4280b9-0x0;var _0x5959a7=_0x63f2[_0x4280b9];return _0x5959a7;};'use strict';var multer=require(_0x263f('0x0'));var util=require(_0x263f('0x1'));var path=require(_0x263f('0x2'));var timeout=require(_0x263f('0x3'));var express=require(_0x263f('0x4'));var router=express[_0x263f('0x5')]();var fs_extra=require(_0x263f('0x6'));var auth=require(_0x263f('0x7'));var interaction=require(_0x263f('0x8'));var config=require('../../config/environment');var controller=require(_0x263f('0x9'));router[_0x263f('0xa')]('/',auth['isAuthenticated'](),controller[_0x263f('0xb')]);router[_0x263f('0xa')](_0x263f('0xc'),auth['isAuthenticated'](),controller[_0x263f('0xd')]);router[_0x263f('0xa')](_0x263f('0xe'),auth[_0x263f('0xf')](),controller[_0x263f('0x10')]);var upload=multer({'storage':multer[_0x263f('0x11')]({'destination':function(_0x58a102,_0x359664,_0x1cf081){_0x1cf081(null,path['join'](config[_0x263f('0x12')],_0x263f('0x13')));},'filename':function(_0x3a2814,_0xf7b58e,_0x2ca797){_0xf7b58e[_0x263f('0x14')]=_0xf7b58e[_0x263f('0x14')][_0x263f('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2ca797(null,util[_0x263f('0x16')]('%s-%s%s',path[_0x263f('0x17')](_0xf7b58e[_0x263f('0x14')],path[_0x263f('0x18')](_0xf7b58e[_0x263f('0x14')])),Date['now'](),path['extname'](_0xf7b58e['originalname'])));}})});router[_0x263f('0x19')]('/',upload[_0x263f('0x1a')]('file'),controller[_0x263f('0x1b')]);router[_0x263f('0x1c')](_0x263f('0xc'),auth[_0x263f('0xf')](),controller['update']);router[_0x263f('0x1d')](_0x263f('0xc'),auth[_0x263f('0xf')](),controller[_0x263f('0x1d')]);module['exports']=router;
\ No newline at end of file
index 05afb1d..dd5b716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda41=['sequelize','exports','name','STRING','FLOAT','INTEGER','BIGINT'];(function(_0x549ffa,_0x4011d9){var _0x378324=function(_0x52bf80){while(--_0x52bf80){_0x549ffa['push'](_0x549ffa['shift']());}};_0x378324(++_0x4011d9);}(_0xda41,0x1e3));var _0x1da4=function(_0x1ac53b,_0x31c1f1){_0x1ac53b=_0x1ac53b-0x0;var _0x6dcc75=_0xda41[_0x1ac53b];return _0x6dcc75;};'use strict';var Sequelize=require(_0x1da4('0x0'));module[_0x1da4('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x1da4('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x1da4('0x3')]},'display_name':{'type':Sequelize[_0x1da4('0x3')],'defaultValue':''},'description':{'type':Sequelize[_0x1da4('0x3')]},'original_format':{'type':Sequelize[_0x1da4('0x3')]},'original_duration':{'type':Sequelize[_0x1da4('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x1da4('0x5')]},'original_bitRate':{'type':Sequelize[_0x1da4('0x6')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x1da4('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x1da4('0x5')]},'converted_bitRate':{'type':Sequelize[_0x1da4('0x6')]},'converted_sampleRate':{'type':Sequelize[_0x1da4('0x5')]}};
\ No newline at end of file
+var _0x8440=['INTEGER','sequelize','exports','STRING','FLOAT','BIGINT'];(function(_0x7fd79e,_0x7abf8c){var _0x14ef62=function(_0x19e4e5){while(--_0x19e4e5){_0x7fd79e['push'](_0x7fd79e['shift']());}};_0x14ef62(++_0x7abf8c);}(_0x8440,0x187));var _0x0844=function(_0x32689c,_0x1e5ad2){_0x32689c=_0x32689c-0x0;var _0xce38dd=_0x8440[_0x32689c];return _0xce38dd;};'use strict';var Sequelize=require(_0x0844('0x0'));module[_0x0844('0x1')]={'name':{'type':Sequelize[_0x0844('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0x0844('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x0844('0x2')]},'original_format':{'type':Sequelize[_0x0844('0x2')]},'original_duration':{'type':Sequelize[_0x0844('0x3')]},'original_sampleCount':{'type':Sequelize[_0x0844('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0x0844('0x4')]},'original_sampleRate':{'type':Sequelize[_0x0844('0x5')]},'converted_format':{'type':Sequelize[_0x0844('0x2')]},'converted_duration':{'type':Sequelize[_0x0844('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x0844('0x4')]},'converted_channelCount':{'type':Sequelize[_0x0844('0x5')]},'converted_bitRate':{'type':Sequelize[_0x0844('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x0844('0x5')]}};
\ No newline at end of file
index f0249cd..91b7a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c83=['then','get','Sounds','destroy','error','name','send','index','map','Sound','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','save_name','existsSync','join','root','server/files/sounds/converted','converted_format','Sound\x20not\x20found','download','%s.%s','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','0777','transcode','unlinkSync','src','original_duration','duration','sampleCount','channelCount','bitRate','original_sampleRate','sampleRate','converted_sampleCount','converted_channelCount','converted_bitRate','chmodSync','create','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','start','description','delete','original_format','format','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c83,0x142));var _0x34c8=function(_0x3b4473,_0x1a6bc5){_0x3b4473=_0x3b4473-0x0;var _0x53603d=_0x4c83[_0x3b4473];return _0x53603d;};'use strict';var emlformat=require(_0x34c8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x34c8('0x1'));var jsonpatch=require(_0x34c8('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x34c8('0x3'));var Mustache=require(_0x34c8('0x4'));var util=require(_0x34c8('0x5'));var path=require(_0x34c8('0x6'));var sox=require(_0x34c8('0x7'));var csv=require('to-csv');var ejs=require(_0x34c8('0x8'));var fs=require('fs');var fs_extra=require(_0x34c8('0x9'));var _=require(_0x34c8('0xa'));var squel=require(_0x34c8('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x34c8('0xc'));var querystring=require('querystring');var Papa=require(_0x34c8('0xd'));var Redis=require(_0x34c8('0xe'));var authService=require(_0x34c8('0xf'));var qs=require(_0x34c8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x34c8('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x34c8('0x12'));var db=require(_0x34c8('0x13'))['db'];function respondWithStatusCode(_0x1ba7df,_0xf8c87a){_0xf8c87a=_0xf8c87a||0xcc;return function(_0x310c66){if(_0x310c66){return _0x1ba7df[_0x34c8('0x14')](_0xf8c87a);}return _0x1ba7df[_0x34c8('0x15')](_0xf8c87a)[_0x34c8('0x16')]();};}function respondWithResult(_0xe77fc1,_0x67fe94){_0x67fe94=_0x67fe94||0xc8;return function(_0x19d396){if(_0x19d396){return _0xe77fc1[_0x34c8('0x15')](_0x67fe94)['json'](_0x19d396);}};}function respondWithFilteredResult(_0x44940c,_0x38b736){return function(_0xaaf22){if(_0xaaf22){var _0x3fb7f4=typeof _0x38b736[_0x34c8('0x17')]===_0x34c8('0x18')&&typeof _0x38b736['limit']===_0x34c8('0x18');var _0x1c59df=_0xaaf22[_0x34c8('0x19')];var _0x245eb7=_0x3fb7f4?0x0:_0x38b736[_0x34c8('0x17')];var _0x360eb3=_0x3fb7f4?_0xaaf22['count']:_0x38b736['offset']+_0x38b736['limit'];var _0x4b8841;if(_0x360eb3>=_0x1c59df){_0x360eb3=_0x1c59df;_0x4b8841=0xc8;}else{_0x4b8841=0xce;}_0x44940c[_0x34c8('0x15')](_0x4b8841);return _0x44940c['set'](_0x34c8('0x1a'),_0x245eb7+'-'+_0x360eb3+'/'+_0x1c59df)[_0x34c8('0x1b')](_0xaaf22);}return null;};}function patchUpdates(_0x475103){return function(_0x4282fd){try{jsonpatch[_0x34c8('0x1c')](_0x4282fd,_0x475103,!![]);}catch(_0x3669e2){return BPromise[_0x34c8('0x1d')](_0x3669e2);}return _0x4282fd[_0x34c8('0x1e')]();};}function saveUpdates(_0x2e0ea8,_0x485b3f){return function(_0xeb5b3d){if(_0xeb5b3d){return _0xeb5b3d[_0x34c8('0x1f')](_0x2e0ea8)[_0x34c8('0x20')](function(_0x161961){return _0x161961;});}return null;};}function removeEntity(_0xed6197,_0x3d4e88){return function(_0x22f49d){if(_0x22f49d){return _0x22f49d['destroy']()[_0x34c8('0x20')](function(){var _0x388d07=_0x22f49d[_0x34c8('0x21')]({'plain':!![]});var _0x21bff4=_0x34c8('0x22');return db['UserProfileResource'][_0x34c8('0x23')]({'where':{'type':_0x21bff4,'resourceId':_0x388d07['id']}})[_0x34c8('0x20')](function(){return _0x22f49d;});})[_0x34c8('0x20')](function(){_0xed6197[_0x34c8('0x15')](0xcc)[_0x34c8('0x16')]();});}};}function handleEntityNotFound(_0x1adcc2,_0x2e2d26){return function(_0x296df1){if(!_0x296df1){_0x1adcc2['sendStatus'](0x194);}return _0x296df1;};}function handleError(_0x381f49,_0x4b2534){_0x4b2534=_0x4b2534||0x1f4;return function(_0x5da1da){logger[_0x34c8('0x24')](_0x5da1da['stack']);if(_0x5da1da[_0x34c8('0x25')]){delete _0x5da1da[_0x34c8('0x25')];}_0x381f49[_0x34c8('0x15')](_0x4b2534)[_0x34c8('0x26')](_0x5da1da);};}exports[_0x34c8('0x27')]=function(_0xd65e77,_0xfebce4){var _0x39054b={},_0x39855b={},_0x136357={'count':0x0,'rows':[]};var _0x199b9c=_[_0x34c8('0x28')](db[_0x34c8('0x29')][_0x34c8('0x2a')],function(_0x1b8bc7){return{'name':_0x1b8bc7[_0x34c8('0x2b')],'type':_0x1b8bc7[_0x34c8('0x2c')][_0x34c8('0x2d')]};});_0x39855b[_0x34c8('0x2e')]=_[_0x34c8('0x28')](_0x199b9c,_0x34c8('0x25'));_0x39855b[_0x34c8('0x2f')]=_['keys'](_0xd65e77[_0x34c8('0x2f')]);_0x39855b[_0x34c8('0x30')]=_[_0x34c8('0x31')](_0x39855b[_0x34c8('0x2e')],_0x39855b[_0x34c8('0x2f')]);_0x39054b['attributes']=_[_0x34c8('0x31')](_0x39855b[_0x34c8('0x2e')],qs[_0x34c8('0x32')](_0xd65e77[_0x34c8('0x2f')][_0x34c8('0x32')]));_0x39054b[_0x34c8('0x33')]=_0x39054b[_0x34c8('0x33')][_0x34c8('0x34')]?_0x39054b['attributes']:_0x39855b['model'];if(!_0xd65e77[_0x34c8('0x2f')][_0x34c8('0x35')](_0x34c8('0x36'))){_0x39054b[_0x34c8('0x37')]=qs[_0x34c8('0x37')](_0xd65e77['query'][_0x34c8('0x37')]);_0x39054b[_0x34c8('0x17')]=qs[_0x34c8('0x17')](_0xd65e77[_0x34c8('0x2f')]['offset']);}_0x39054b[_0x34c8('0x38')]=qs[_0x34c8('0x39')](_0xd65e77['query'][_0x34c8('0x39')]);_0x39054b[_0x34c8('0x3a')]=qs[_0x34c8('0x30')](_['pick'](_0xd65e77[_0x34c8('0x2f')],_0x39855b['filters']),_0x199b9c);if(_0xd65e77['query'][_0x34c8('0x3b')]){_0x39054b[_0x34c8('0x3a')]=_[_0x34c8('0x3c')](_0x39054b['where'],{'$or':_['map'](_0x199b9c,function(_0x13a74d){if(_0x13a74d[_0x34c8('0x2c')]!==_0x34c8('0x3d')){var _0x22c352={};_0x22c352[_0x13a74d['name']]={'$like':'%'+_0xd65e77['query'][_0x34c8('0x3b')]+'%'};return _0x22c352;}})});}_0x39054b=_[_0x34c8('0x3c')]({},_0x39054b,_0xd65e77[_0x34c8('0x3e')]);var _0x456162={'where':_0x39054b[_0x34c8('0x3a')]};return db[_0x34c8('0x29')][_0x34c8('0x19')](_0x456162)[_0x34c8('0x20')](function(_0x34c0cf){_0x136357[_0x34c8('0x19')]=_0x34c0cf;if(_0xd65e77[_0x34c8('0x2f')][_0x34c8('0x3f')]){_0x39054b[_0x34c8('0x40')]=[{'all':!![]}];}return db['Sound'][_0x34c8('0x41')](_0x39054b);})[_0x34c8('0x20')](function(_0x5cf8e6){_0x136357[_0x34c8('0x42')]=_0x5cf8e6;return _0x136357;})['then'](respondWithFilteredResult(_0xfebce4,_0x39054b))[_0x34c8('0x43')](handleError(_0xfebce4,null));};exports[_0x34c8('0x44')]=function(_0x348124,_0x4fd00c){var _0x10c17f={'raw':!![],'where':{'id':_0x348124[_0x34c8('0x45')]['id']}},_0xc08476={};_0xc08476[_0x34c8('0x2e')]=_[_0x34c8('0x46')](db['Sound'][_0x34c8('0x2a')]);_0xc08476[_0x34c8('0x2f')]=_[_0x34c8('0x46')](_0x348124[_0x34c8('0x2f')]);_0xc08476[_0x34c8('0x30')]=_[_0x34c8('0x31')](_0xc08476[_0x34c8('0x2e')],_0xc08476[_0x34c8('0x2f')]);_0x10c17f[_0x34c8('0x33')]=_['intersection'](_0xc08476['model'],qs[_0x34c8('0x32')](_0x348124['query'][_0x34c8('0x32')]));_0x10c17f['attributes']=_0x10c17f['attributes']['length']?_0x10c17f[_0x34c8('0x33')]:_0xc08476[_0x34c8('0x2e')];if(_0x348124[_0x34c8('0x2f')][_0x34c8('0x3f')]){_0x10c17f[_0x34c8('0x40')]=[{'all':!![]}];}_0x10c17f=_[_0x34c8('0x3c')]({},_0x10c17f,_0x348124[_0x34c8('0x3e')]);return db[_0x34c8('0x29')][_0x34c8('0x47')](_0x10c17f)[_0x34c8('0x20')](handleEntityNotFound(_0x4fd00c,null))[_0x34c8('0x20')](respondWithResult(_0x4fd00c,null))[_0x34c8('0x43')](handleError(_0x4fd00c,null));};exports['download']=function(_0x543f3e,_0x4e2446,_0x1a8bcc){return db[_0x34c8('0x29')][_0x34c8('0x47')]({'where':{'id':_0x543f3e[_0x34c8('0x45')]['id']},'attributes':[_0x34c8('0x25'),_0x34c8('0x48'),'converted_format'],'raw':!![]})[_0x34c8('0x20')](handleEntityNotFound(_0x4e2446,null))[_0x34c8('0x20')](function(_0x452189){if(_0x452189){if(!fs[_0x34c8('0x49')](path[_0x34c8('0x4a')](config[_0x34c8('0x4b')],_0x34c8('0x4c'),_0x452189[_0x34c8('0x48')]+'.'+_0x452189[_0x34c8('0x4d')]))){throw new db['Sequelize']['ValidationError'](_0x34c8('0x4e'));}return _0x4e2446[_0x34c8('0x4f')](path[_0x34c8('0x4a')](config[_0x34c8('0x4b')],_0x34c8('0x4c'),util['format'](_0x34c8('0x50'),_0x452189[_0x34c8('0x48')],_0x452189['converted_format'])),util['format'](_0x34c8('0x50'),_0x452189[_0x34c8('0x25')],_0x452189[_0x34c8('0x4d')]));}return null;})[_0x34c8('0x43')](handleError(_0x4e2446,null));};exports['create']=function(_0x1a77f3,_0xf66636,_0x218108){var _0x190060={'name':path[_0x34c8('0x51')](_0x1a77f3[_0x34c8('0x52')][_0x34c8('0x53')],path[_0x34c8('0x54')](_0x1a77f3[_0x34c8('0x52')][_0x34c8('0x53')])),'save_name':path[_0x34c8('0x51')](_0x1a77f3[_0x34c8('0x52')][_0x34c8('0x55')],path[_0x34c8('0x54')](_0x1a77f3[_0x34c8('0x52')][_0x34c8('0x55')])),'original_format':path['extname'](_0x1a77f3[_0x34c8('0x52')][_0x34c8('0x53')])[_0x34c8('0x56')](0x1),'converted_format':_0x34c8('0x57')};var _0x2b1c36=path['join'](config['root'],_0x34c8('0x58'),_0x1a77f3[_0x34c8('0x52')][_0x34c8('0x55')]);var _0x75b781=path[_0x34c8('0x4a')](config[_0x34c8('0x4b')],'server/files/sounds/converted',util['format'](_0x34c8('0x50'),path['basename'](_0x1a77f3['file'][_0x34c8('0x55')],path[_0x34c8('0x54')](_0x1a77f3[_0x34c8('0x52')]['filename'])),_0x190060['converted_format']));logger[_0x34c8('0x59')](_0x34c8('0x5a'),_0x2b1c36);logger[_0x34c8('0x59')]('Sound\x20upload\x20destination:\x20%s',_0x75b781);try{fs['chmodSync'](_0x2b1c36,parseInt(_0x34c8('0x5b'),0x8));var _0x1a42df=sox[_0x34c8('0x5c')](_0x2b1c36,_0x75b781,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1a42df['on']('error',function(_0x55c0e4){fs[_0x34c8('0x5d')](_0x2b1c36);_0xf66636[_0x34c8('0x15')](0x1f4)['send'](_0x55c0e4);});_0x1a42df['on'](_0x34c8('0x5e'),function(_0x4f1c14){_0x190060[_0x34c8('0x5f')]=isNaN(_0x4f1c14[_0x34c8('0x60')])?null:_0x4f1c14[_0x34c8('0x60')]*0x3e8;_0x190060['original_sampleCount']=isNaN(_0x4f1c14[_0x34c8('0x61')])?null:_0x4f1c14[_0x34c8('0x61')];_0x190060['original_channelCount']=isNaN(_0x4f1c14['channelCount'])?null:_0x4f1c14[_0x34c8('0x62')];_0x190060['original_bitRate']=isNaN(_0x4f1c14['bitRate'])?null:_0x4f1c14[_0x34c8('0x63')];_0x190060[_0x34c8('0x64')]=isNaN(_0x4f1c14[_0x34c8('0x65')])?null:_0x4f1c14[_0x34c8('0x65')];});_0x1a42df['on']('dest',function(_0x48082d){_0x190060['converted_duration']=isNaN(_0x48082d['duration'])?null:_0x48082d[_0x34c8('0x60')]*0x3e8;_0x190060[_0x34c8('0x66')]=isNaN(_0x48082d['sampleCount'])?null:_0x48082d[_0x34c8('0x61')];_0x190060[_0x34c8('0x67')]=isNaN(_0x48082d[_0x34c8('0x62')])?null:_0x48082d[_0x34c8('0x62')];_0x190060[_0x34c8('0x68')]=isNaN(_0x48082d[_0x34c8('0x63')])?null:_0x48082d[_0x34c8('0x63')];_0x190060['converted_sampleRate']=isNaN(_0x48082d['sampleRate'])?null:_0x48082d[_0x34c8('0x65')];});_0x1a42df['on'](_0x34c8('0x16'),function(){fs[_0x34c8('0x69')](_0x75b781,parseInt(_0x34c8('0x5b'),0x8));return db[_0x34c8('0x29')][_0x34c8('0x6a')](_0x190060)[_0x34c8('0x20')](function(_0x12e5a7){var _0x6a5961={'role':_0x1a77f3['body'][_0x34c8('0x6b')],'userProfileId':_0x1a77f3['body'][_0x34c8('0x6c')]};if(!_0x6a5961)throw new Error(_0x34c8('0x6d'));if(_0x6a5961[_0x34c8('0x6b')]===_0x34c8('0x6e')){var _0x42ddef=_0x12e5a7['get']({'plain':!![]});return db[_0x34c8('0x6f')]['find']({'where':{'name':'Sounds','userProfileId':_0x6a5961[_0x34c8('0x6c')]},'raw':!![]})[_0x34c8('0x20')](function(_0x14deee){if(_0x14deee&&_0x14deee[_0x34c8('0x70')]===0x0){return db['UserProfileResource'][_0x34c8('0x6a')]({'name':_0x42ddef[_0x34c8('0x25')],'resourceId':_0x42ddef['id'],'type':_0x14deee[_0x34c8('0x25')],'sectionId':_0x14deee['id']},{})['then'](function(){return _0x12e5a7;});}else{return _0x12e5a7;}})[_0x34c8('0x43')](function(_0x28ae4c){logger[_0x34c8('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x28ae4c);throw _0x28ae4c;});}return _0x12e5a7;})[_0x34c8('0x20')](respondWithResult(_0xf66636,null))[_0x34c8('0x43')](handleError(_0xf66636,null));});_0x1a42df[_0x34c8('0x71')]();}catch(_0x25753d){_0xf66636[_0x34c8('0x15')](0x1f4)[_0x34c8('0x26')](_0x25753d);}};exports[_0x34c8('0x1f')]=function(_0x33e631,_0x555a9d,_0x4e9589){return db['Sound'][_0x34c8('0x47')]({'where':{'id':_0x33e631[_0x34c8('0x45')]['id']}})[_0x34c8('0x20')](handleEntityNotFound(_0x555a9d,null))[_0x34c8('0x20')](saveUpdates(_['pick'](_0x33e631['body'],[_0x34c8('0x25'),_0x34c8('0x72')]),null))[_0x34c8('0x20')](respondWithResult(_0x555a9d,null))[_0x34c8('0x43')](handleError(_0x555a9d,null));};exports[_0x34c8('0x73')]=function(_0x1d5aa2,_0xbd99d0,_0x35e901){return db['Sound']['find']({'where':{'id':_0x1d5aa2[_0x34c8('0x45')]['id']}})[_0x34c8('0x20')](function(_0x4db282){if(_0x4db282){return _0x4db282['destroy']();}})['then'](function(_0x5b2d18){var _0x37f986=path['join'](config[_0x34c8('0x4b')],_0x34c8('0x58'),util['format'](_0x34c8('0x50'),_0x5b2d18['save_name'],_0x5b2d18[_0x34c8('0x74')]));var _0x6b610e=path[_0x34c8('0x4a')](config[_0x34c8('0x4b')],_0x34c8('0x4c'),util[_0x34c8('0x75')](_0x34c8('0x50'),_0x5b2d18['save_name'],_0x5b2d18[_0x34c8('0x4d')]));fs[_0x34c8('0x5d')](_0x37f986);fs['unlinkSync'](_0x6b610e);return _0x5b2d18;})['then'](function(_0x45e53b){if(_0x45e53b){return _0xbd99d0['status'](0xcc)[_0x34c8('0x16')]();}})['then'](handleEntityNotFound(_0xbd99d0,null))[_0x34c8('0x43')](handleError(_0xbd99d0,null));};
\ No newline at end of file
+var _0x6050=['get','Sounds','UserProfileResource','stack','send','index','map','Sound','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','VIRTUAL','options','catch','show','includeAll','include','find','download','save_name','converted_format','existsSync','join','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','root','format','%s.%s','create','basename','file','originalname','filename','extname','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','transcode','error','unlinkSync','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','chmodSync','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','params','description','original_format','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','Content-Range','apply','save','update','then','destroy'];(function(_0xd973df,_0x4d4289){var _0x440273=function(_0x479158){while(--_0x479158){_0xd973df['push'](_0xd973df['shift']());}};_0x440273(++_0x4d4289);}(_0x6050,0x154));var _0x0605=function(_0x4c0368,_0x2d9b3f){_0x4c0368=_0x4c0368-0x0;var _0x11cc37=_0x6050[_0x4c0368];return _0x11cc37;};'use strict';var emlformat=require(_0x0605('0x0'));var rimraf=require(_0x0605('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0605('0x2'));var rp=require('request-promise');var moment=require(_0x0605('0x3'));var BPromise=require(_0x0605('0x4'));var Mustache=require(_0x0605('0x5'));var util=require(_0x0605('0x6'));var path=require('path');var sox=require(_0x0605('0x7'));var csv=require('to-csv');var ejs=require(_0x0605('0x8'));var fs=require('fs');var fs_extra=require(_0x0605('0x9'));var _=require('lodash');var squel=require(_0x0605('0xa'));var crypto=require(_0x0605('0xb'));var jsforce=require(_0x0605('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x0605('0xd'));var querystring=require(_0x0605('0xe'));var Papa=require(_0x0605('0xf'));var Redis=require(_0x0605('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0605('0x11'));var as=require(_0x0605('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0605('0x13'))(_0x0605('0x14'));var utils=require(_0x0605('0x15'));var config=require(_0x0605('0x16'));var licenseUtil=require(_0x0605('0x17'));var db=require(_0x0605('0x18'))['db'];function respondWithStatusCode(_0x3d4caa,_0x5bc4dd){_0x5bc4dd=_0x5bc4dd||0xcc;return function(_0x555f6d){if(_0x555f6d){return _0x3d4caa[_0x0605('0x19')](_0x5bc4dd);}return _0x3d4caa[_0x0605('0x1a')](_0x5bc4dd)[_0x0605('0x1b')]();};}function respondWithResult(_0x5b4b94,_0x587523){_0x587523=_0x587523||0xc8;return function(_0x339b43){if(_0x339b43){return _0x5b4b94[_0x0605('0x1a')](_0x587523)[_0x0605('0x1c')](_0x339b43);}};}function respondWithFilteredResult(_0x3b5a8d,_0x322ef9){return function(_0x478088){if(_0x478088){var _0x450ba9=typeof _0x322ef9[_0x0605('0x1d')]==='undefined'&&typeof _0x322ef9['limit']==='undefined';var _0x17da05=_0x478088[_0x0605('0x1e')];var _0x5e781d=_0x450ba9?0x0:_0x322ef9[_0x0605('0x1d')];var _0xc58f24=_0x450ba9?_0x478088['count']:_0x322ef9[_0x0605('0x1d')]+_0x322ef9[_0x0605('0x1f')];var _0x1a69ae;if(_0xc58f24>=_0x17da05){_0xc58f24=_0x17da05;_0x1a69ae=0xc8;}else{_0x1a69ae=0xce;}_0x3b5a8d['status'](_0x1a69ae);return _0x3b5a8d['set'](_0x0605('0x20'),_0x5e781d+'-'+_0xc58f24+'/'+_0x17da05)[_0x0605('0x1c')](_0x478088);}return null;};}function patchUpdates(_0x3c638a){return function(_0x5e7623){try{jsonpatch[_0x0605('0x21')](_0x5e7623,_0x3c638a,!![]);}catch(_0x5e3afe){return BPromise['reject'](_0x5e3afe);}return _0x5e7623[_0x0605('0x22')]();};}function saveUpdates(_0x5eeb10,_0x3d4d3f){return function(_0x37e399){if(_0x37e399){return _0x37e399[_0x0605('0x23')](_0x5eeb10)[_0x0605('0x24')](function(_0x39161f){return _0x39161f;});}return null;};}function removeEntity(_0x421dcd,_0x3752b5){return function(_0x5ebffd){if(_0x5ebffd){return _0x5ebffd[_0x0605('0x25')]()[_0x0605('0x24')](function(){var _0x1bd1ed=_0x5ebffd[_0x0605('0x26')]({'plain':!![]});var _0x2cc42c=_0x0605('0x27');return db[_0x0605('0x28')][_0x0605('0x25')]({'where':{'type':_0x2cc42c,'resourceId':_0x1bd1ed['id']}})[_0x0605('0x24')](function(){return _0x5ebffd;});})[_0x0605('0x24')](function(){_0x421dcd[_0x0605('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b3645,_0x188fc4){return function(_0x2b4780){if(!_0x2b4780){_0x5b3645[_0x0605('0x19')](0x194);}return _0x2b4780;};}function handleError(_0x5e1eb8,_0x4fc1a1){_0x4fc1a1=_0x4fc1a1||0x1f4;return function(_0x1153ae){logger['error'](_0x1153ae[_0x0605('0x29')]);if(_0x1153ae['name']){delete _0x1153ae['name'];}_0x5e1eb8[_0x0605('0x1a')](_0x4fc1a1)[_0x0605('0x2a')](_0x1153ae);};}exports[_0x0605('0x2b')]=function(_0x1536cc,_0x323cea){var _0x58c1ea={},_0x222c14={},_0x202ba5={'count':0x0,'rows':[]};var _0x507636=_[_0x0605('0x2c')](db[_0x0605('0x2d')][_0x0605('0x2e')],function(_0x12cec5){return{'name':_0x12cec5[_0x0605('0x2f')],'type':_0x12cec5[_0x0605('0x30')][_0x0605('0x31')]};});_0x222c14[_0x0605('0x32')]=_[_0x0605('0x2c')](_0x507636,_0x0605('0x33'));_0x222c14[_0x0605('0x34')]=_[_0x0605('0x35')](_0x1536cc[_0x0605('0x34')]);_0x222c14[_0x0605('0x36')]=_[_0x0605('0x37')](_0x222c14[_0x0605('0x32')],_0x222c14[_0x0605('0x34')]);_0x58c1ea[_0x0605('0x38')]=_[_0x0605('0x37')](_0x222c14[_0x0605('0x32')],qs['fields'](_0x1536cc[_0x0605('0x34')][_0x0605('0x39')]));_0x58c1ea[_0x0605('0x38')]=_0x58c1ea[_0x0605('0x38')][_0x0605('0x3a')]?_0x58c1ea['attributes']:_0x222c14[_0x0605('0x32')];if(!_0x1536cc['query'][_0x0605('0x3b')](_0x0605('0x3c'))){_0x58c1ea[_0x0605('0x1f')]=qs[_0x0605('0x1f')](_0x1536cc[_0x0605('0x34')][_0x0605('0x1f')]);_0x58c1ea[_0x0605('0x1d')]=qs['offset'](_0x1536cc['query'][_0x0605('0x1d')]);}_0x58c1ea['order']=qs[_0x0605('0x3d')](_0x1536cc[_0x0605('0x34')][_0x0605('0x3d')]);_0x58c1ea['where']=qs[_0x0605('0x36')](_[_0x0605('0x3e')](_0x1536cc[_0x0605('0x34')],_0x222c14['filters']),_0x507636);if(_0x1536cc[_0x0605('0x34')][_0x0605('0x3f')]){_0x58c1ea['where']=_[_0x0605('0x40')](_0x58c1ea['where'],{'$or':_[_0x0605('0x2c')](_0x507636,function(_0x5377f2){if(_0x5377f2['type']!==_0x0605('0x41')){var _0x4a496e={};_0x4a496e[_0x5377f2[_0x0605('0x33')]]={'$like':'%'+_0x1536cc[_0x0605('0x34')][_0x0605('0x3f')]+'%'};return _0x4a496e;}})});}_0x58c1ea=_[_0x0605('0x40')]({},_0x58c1ea,_0x1536cc[_0x0605('0x42')]);var _0x28672b={'where':_0x58c1ea['where']};return db[_0x0605('0x2d')][_0x0605('0x1e')](_0x28672b)[_0x0605('0x24')](function(_0x45c32a){_0x202ba5[_0x0605('0x1e')]=_0x45c32a;if(_0x1536cc[_0x0605('0x34')]['includeAll']){_0x58c1ea['include']=[{'all':!![]}];}return db['Sound']['findAll'](_0x58c1ea);})[_0x0605('0x24')](function(_0x3d0776){_0x202ba5['rows']=_0x3d0776;return _0x202ba5;})[_0x0605('0x24')](respondWithFilteredResult(_0x323cea,_0x58c1ea))[_0x0605('0x43')](handleError(_0x323cea,null));};exports[_0x0605('0x44')]=function(_0x1c2a77,_0x1997db){var _0x2a622b={'raw':!![],'where':{'id':_0x1c2a77['params']['id']}},_0x9a0927={};_0x9a0927['model']=_[_0x0605('0x35')](db[_0x0605('0x2d')][_0x0605('0x2e')]);_0x9a0927['query']=_[_0x0605('0x35')](_0x1c2a77['query']);_0x9a0927[_0x0605('0x36')]=_[_0x0605('0x37')](_0x9a0927[_0x0605('0x32')],_0x9a0927[_0x0605('0x34')]);_0x2a622b[_0x0605('0x38')]=_[_0x0605('0x37')](_0x9a0927[_0x0605('0x32')],qs[_0x0605('0x39')](_0x1c2a77[_0x0605('0x34')]['fields']));_0x2a622b[_0x0605('0x38')]=_0x2a622b[_0x0605('0x38')]['length']?_0x2a622b[_0x0605('0x38')]:_0x9a0927[_0x0605('0x32')];if(_0x1c2a77[_0x0605('0x34')][_0x0605('0x45')]){_0x2a622b[_0x0605('0x46')]=[{'all':!![]}];}_0x2a622b=_[_0x0605('0x40')]({},_0x2a622b,_0x1c2a77[_0x0605('0x42')]);return db[_0x0605('0x2d')][_0x0605('0x47')](_0x2a622b)[_0x0605('0x24')](handleEntityNotFound(_0x1997db,null))[_0x0605('0x24')](respondWithResult(_0x1997db,null))[_0x0605('0x43')](handleError(_0x1997db,null));};exports[_0x0605('0x48')]=function(_0x38b767,_0x5c7303,_0x5d846d){return db[_0x0605('0x2d')]['find']({'where':{'id':_0x38b767['params']['id']},'attributes':[_0x0605('0x33'),_0x0605('0x49'),_0x0605('0x4a')],'raw':!![]})[_0x0605('0x24')](handleEntityNotFound(_0x5c7303,null))['then'](function(_0x20564d){if(_0x20564d){if(!fs[_0x0605('0x4b')](path[_0x0605('0x4c')](config['root'],_0x0605('0x4d'),_0x20564d[_0x0605('0x49')]+'.'+_0x20564d[_0x0605('0x4a')]))){throw new db['Sequelize'][(_0x0605('0x4e'))](_0x0605('0x4f'));}return _0x5c7303[_0x0605('0x48')](path['join'](config[_0x0605('0x50')],'server/files/sounds/converted',util[_0x0605('0x51')]('%s.%s',_0x20564d[_0x0605('0x49')],_0x20564d['converted_format'])),util[_0x0605('0x51')](_0x0605('0x52'),_0x20564d[_0x0605('0x33')],_0x20564d['converted_format']));}return null;})[_0x0605('0x43')](handleError(_0x5c7303,null));};exports[_0x0605('0x53')]=function(_0x169d71,_0xa8e457,_0xac8178){var _0x5bba55={'name':path[_0x0605('0x54')](_0x169d71[_0x0605('0x55')][_0x0605('0x56')],path['extname'](_0x169d71['file'][_0x0605('0x56')])),'save_name':path[_0x0605('0x54')](_0x169d71[_0x0605('0x55')][_0x0605('0x57')],path['extname'](_0x169d71[_0x0605('0x55')][_0x0605('0x57')])),'original_format':path[_0x0605('0x58')](_0x169d71[_0x0605('0x55')][_0x0605('0x56')])[_0x0605('0x59')](0x1),'converted_format':_0x0605('0x5a')};var _0x214abd=path['join'](config['root'],_0x0605('0x5b'),_0x169d71[_0x0605('0x55')][_0x0605('0x57')]);var _0x23c2d0=path[_0x0605('0x4c')](config['root'],_0x0605('0x4d'),util[_0x0605('0x51')]('%s.%s',path[_0x0605('0x54')](_0x169d71[_0x0605('0x55')][_0x0605('0x57')],path['extname'](_0x169d71[_0x0605('0x55')][_0x0605('0x57')])),_0x5bba55[_0x0605('0x4a')]));logger[_0x0605('0x5c')](_0x0605('0x5d'),_0x214abd);logger[_0x0605('0x5c')](_0x0605('0x5e'),_0x23c2d0);try{fs['chmodSync'](_0x214abd,parseInt(_0x0605('0x5f'),0x8));var _0x4a1350=sox[_0x0605('0x60')](_0x214abd,_0x23c2d0,{'sampleRate':0x1f40,'format':_0x0605('0x5a'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4a1350['on'](_0x0605('0x61'),function(_0x264690){fs[_0x0605('0x62')](_0x214abd);_0xa8e457[_0x0605('0x1a')](0x1f4)[_0x0605('0x2a')](_0x264690);});_0x4a1350['on']('src',function(_0x501a36){_0x5bba55['original_duration']=isNaN(_0x501a36[_0x0605('0x63')])?null:_0x501a36[_0x0605('0x63')]*0x3e8;_0x5bba55[_0x0605('0x64')]=isNaN(_0x501a36[_0x0605('0x65')])?null:_0x501a36[_0x0605('0x65')];_0x5bba55[_0x0605('0x66')]=isNaN(_0x501a36[_0x0605('0x67')])?null:_0x501a36[_0x0605('0x67')];_0x5bba55[_0x0605('0x68')]=isNaN(_0x501a36[_0x0605('0x69')])?null:_0x501a36[_0x0605('0x69')];_0x5bba55[_0x0605('0x6a')]=isNaN(_0x501a36[_0x0605('0x6b')])?null:_0x501a36[_0x0605('0x6b')];});_0x4a1350['on'](_0x0605('0x6c'),function(_0x248809){_0x5bba55[_0x0605('0x6d')]=isNaN(_0x248809[_0x0605('0x63')])?null:_0x248809[_0x0605('0x63')]*0x3e8;_0x5bba55[_0x0605('0x6e')]=isNaN(_0x248809['sampleCount'])?null:_0x248809['sampleCount'];_0x5bba55[_0x0605('0x6f')]=isNaN(_0x248809[_0x0605('0x67')])?null:_0x248809['channelCount'];_0x5bba55[_0x0605('0x70')]=isNaN(_0x248809[_0x0605('0x69')])?null:_0x248809[_0x0605('0x69')];_0x5bba55[_0x0605('0x71')]=isNaN(_0x248809[_0x0605('0x6b')])?null:_0x248809[_0x0605('0x6b')];});_0x4a1350['on'](_0x0605('0x1b'),function(){fs[_0x0605('0x72')](_0x23c2d0,parseInt(_0x0605('0x5f'),0x8));return db[_0x0605('0x2d')][_0x0605('0x53')](_0x5bba55)[_0x0605('0x24')](function(_0x2b0872){var _0x1ffe51={'role':_0x169d71[_0x0605('0x73')][_0x0605('0x74')],'userProfileId':_0x169d71[_0x0605('0x73')][_0x0605('0x75')]};if(!_0x1ffe51)throw new Error(_0x0605('0x76'));if(_0x1ffe51[_0x0605('0x74')]===_0x0605('0x77')){var _0x5f49e5=_0x2b0872[_0x0605('0x26')]({'plain':!![]});return db['UserProfileSection'][_0x0605('0x47')]({'where':{'name':_0x0605('0x27'),'userProfileId':_0x1ffe51['userProfileId']},'raw':!![]})[_0x0605('0x24')](function(_0xd84d5e){if(_0xd84d5e&&_0xd84d5e[_0x0605('0x78')]===0x0){return db[_0x0605('0x28')]['create']({'name':_0x5f49e5['name'],'resourceId':_0x5f49e5['id'],'type':_0xd84d5e[_0x0605('0x33')],'sectionId':_0xd84d5e['id']},{})[_0x0605('0x24')](function(){return _0x2b0872;});}else{return _0x2b0872;}})[_0x0605('0x43')](function(_0x848eb8){logger[_0x0605('0x61')](_0x0605('0x79'),_0x848eb8);throw _0x848eb8;});}return _0x2b0872;})['then'](respondWithResult(_0xa8e457,null))[_0x0605('0x43')](handleError(_0xa8e457,null));});_0x4a1350[_0x0605('0x7a')]();}catch(_0x140e32){_0xa8e457[_0x0605('0x1a')](0x1f4)[_0x0605('0x2a')](_0x140e32);}};exports['update']=function(_0x2fc653,_0x4a313b,_0x555975){return db['Sound']['find']({'where':{'id':_0x2fc653[_0x0605('0x7b')]['id']}})[_0x0605('0x24')](handleEntityNotFound(_0x4a313b,null))[_0x0605('0x24')](saveUpdates(_['pick'](_0x2fc653[_0x0605('0x73')],['name',_0x0605('0x7c')]),null))['then'](respondWithResult(_0x4a313b,null))[_0x0605('0x43')](handleError(_0x4a313b,null));};exports['delete']=function(_0x1f80c4,_0x402d4d,_0x8e6a35){return db[_0x0605('0x2d')]['find']({'where':{'id':_0x1f80c4[_0x0605('0x7b')]['id']}})['then'](function(_0x147243){if(_0x147243){return _0x147243[_0x0605('0x25')]();}})[_0x0605('0x24')](function(_0x34fd42){var _0x5edfee=path[_0x0605('0x4c')](config[_0x0605('0x50')],_0x0605('0x5b'),util['format'](_0x0605('0x52'),_0x34fd42[_0x0605('0x49')],_0x34fd42[_0x0605('0x7d')]));var _0x2b3db4=path['join'](config[_0x0605('0x50')],_0x0605('0x4d'),util[_0x0605('0x51')](_0x0605('0x52'),_0x34fd42['save_name'],_0x34fd42[_0x0605('0x4a')]));fs[_0x0605('0x62')](_0x5edfee);fs[_0x0605('0x62')](_0x2b3db4);return _0x34fd42;})[_0x0605('0x24')](function(_0x1d6f63){if(_0x1d6f63){return _0x402d4d[_0x0605('0x1a')](0xcc)[_0x0605('0x1b')]();}})[_0x0605('0x24')](handleEntityNotFound(_0x402d4d,null))[_0x0605('0x43')](handleError(_0x402d4d,null));};
\ No newline at end of file
index 4812c50..b794f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2916=['request-promise','rimraf','./sound.attributes','exports','define','tools_sounds','lodash','util','../../config/logger','bluebird'];(function(_0x1268a7,_0x20524c){var _0x1830ba=function(_0x187c5c){while(--_0x187c5c){_0x1268a7['push'](_0x1268a7['shift']());}};_0x1830ba(++_0x20524c);}(_0x2916,0x1d2));var _0x6291=function(_0x13256a,_0x44d0a2){_0x13256a=_0x13256a-0x0;var _0x59ad3b=_0x2916[_0x13256a];return _0x59ad3b;};'use strict';var _=require(_0x6291('0x0'));var util=require(_0x6291('0x1'));var logger=require(_0x6291('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6291('0x3'));var rp=require(_0x6291('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6291('0x5'));var config=require('../../config/environment');var attributes=require(_0x6291('0x6'));module[_0x6291('0x7')]=function(_0x359a07,_0x310515){return _0x359a07[_0x6291('0x8')]('Sound',attributes,{'tableName':_0x6291('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb94e=['util','../../config/logger','api','request-promise','../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash'];(function(_0x1363e7,_0x1e578b){var _0x1498c6=function(_0x481f13){while(--_0x481f13){_0x1363e7['push'](_0x1363e7['shift']());}};_0x1498c6(++_0x1e578b);}(_0xb94e,0x83));var _0xeb94=function(_0x9d58e0,_0x5ee515){_0x9d58e0=_0x9d58e0-0x0;var _0x5eab07=_0xb94e[_0x9d58e0];return _0x5eab07;};'use strict';var _=require(_0xeb94('0x0'));var util=require(_0xeb94('0x1'));var logger=require(_0xeb94('0x2'))(_0xeb94('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xeb94('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xeb94('0x5'));var attributes=require(_0xeb94('0x6'));module[_0xeb94('0x7')]=function(_0x55472e,_0xfb2f6e){return _0x55472e[_0xeb94('0x8')](_0xeb94('0x9'),attributes,{'tableName':_0xeb94('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d5f4e3f..57612b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd10=['stringify','error','code','message','result','Sound','find','options','raw','attributes','include','model','map','ShowSound','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1d7a8e,_0x2881e6){var _0x57d724=function(_0x58d8bc){while(--_0x58d8bc){_0x1d7a8e['push'](_0x1d7a8e['shift']());}};_0x57d724(++_0x2881e6);}(_0xdd10,0xe8));var _0x0dd1=function(_0x4aa3aa,_0x533b07){_0x4aa3aa=_0x4aa3aa-0x0;var _0x3232a7=_0xdd10[_0x4aa3aa];return _0x3232a7;};'use strict';var _=require(_0x0dd1('0x0'));var util=require(_0x0dd1('0x1'));var moment=require(_0x0dd1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0dd1('0x3'));var db=require(_0x0dd1('0x4'))['db'];var utils=require(_0x0dd1('0x5'));var logger=require(_0x0dd1('0x6'))(_0x0dd1('0x7'));var config=require(_0x0dd1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0dd1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b5513,_0x4a8616,_0x12df0a){return new BPromise(function(_0x11578f,_0x4a14d8){return client[_0x0dd1('0xa')](_0x4b5513,_0x12df0a)[_0x0dd1('0xb')](function(_0x43b01d){logger[_0x0dd1('0xc')](_0x0dd1('0xd'),_0x4a8616,_0x0dd1('0xe'));logger[_0x0dd1('0xf')]('Sound,\x20%s,\x20%s,\x20%s',_0x4a8616,_0x0dd1('0xe'),JSON[_0x0dd1('0x10')](_0x43b01d));if(_0x43b01d['error']){if(_0x43b01d[_0x0dd1('0x11')][_0x0dd1('0x12')]===0x1f4){logger[_0x0dd1('0x11')](_0x0dd1('0xd'),_0x4a8616,_0x43b01d[_0x0dd1('0x11')][_0x0dd1('0x13')]);return _0x4a14d8(_0x43b01d[_0x0dd1('0x11')][_0x0dd1('0x13')]);}logger[_0x0dd1('0x11')](_0x0dd1('0xd'),_0x4a8616,_0x43b01d[_0x0dd1('0x11')]['message']);return _0x11578f(_0x43b01d[_0x0dd1('0x11')][_0x0dd1('0x13')]);}else{logger['info'](_0x0dd1('0xd'),_0x4a8616,_0x0dd1('0xe'));_0x11578f(_0x43b01d[_0x0dd1('0x14')][_0x0dd1('0x13')]);}})['catch'](function(_0x337ccb){logger[_0x0dd1('0x11')](_0x0dd1('0xd'),_0x4a8616,_0x337ccb);_0x4a14d8(_0x337ccb);});});}exports['ShowSound']=function(_0x51c715){var _0x4a802f=this;return new Promise(function(_0x14dad9,_0x454c25){return db[_0x0dd1('0x15')][_0x0dd1('0x16')]({'raw':_0x51c715[_0x0dd1('0x17')]?_0x51c715[_0x0dd1('0x17')][_0x0dd1('0x18')]===undefined?!![]:![]:!![],'where':_0x51c715[_0x0dd1('0x17')]?_0x51c715[_0x0dd1('0x17')]['where']||null:null,'attributes':_0x51c715['options']?_0x51c715[_0x0dd1('0x17')][_0x0dd1('0x19')]||null:null,'include':_0x51c715[_0x0dd1('0x17')]?_0x51c715['options'][_0x0dd1('0x1a')]?_['map'](_0x51c715[_0x0dd1('0x17')][_0x0dd1('0x1a')],function(_0x5e0c3b){return{'model':db[_0x5e0c3b[_0x0dd1('0x1b')]],'as':_0x5e0c3b['as'],'attributes':_0x5e0c3b['attributes'],'include':_0x5e0c3b[_0x0dd1('0x1a')]?_[_0x0dd1('0x1c')](_0x5e0c3b[_0x0dd1('0x1a')],function(_0x8e7f6d){return{'model':db[_0x8e7f6d[_0x0dd1('0x1b')]],'as':_0x8e7f6d['as'],'attributes':_0x8e7f6d[_0x0dd1('0x19')],'include':_0x8e7f6d['include']?_[_0x0dd1('0x1c')](_0x8e7f6d[_0x0dd1('0x1a')],function(_0x90eb93){return{'model':db[_0x90eb93[_0x0dd1('0x1b')]],'as':_0x90eb93['as'],'attributes':_0x90eb93[_0x0dd1('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0dd1('0xb')](function(_0x1dbd7c){logger[_0x0dd1('0xc')](_0x0dd1('0x1d'),_0x51c715);logger[_0x0dd1('0xf')](_0x0dd1('0x1d'),_0x51c715,JSON[_0x0dd1('0x10')](_0x1dbd7c));_0x14dad9(_0x1dbd7c);})[_0x0dd1('0x1e')](function(_0xb04a1c){logger[_0x0dd1('0x11')](_0x0dd1('0x1d'),_0xb04a1c[_0x0dd1('0x13')],_0x51c715);_0x454c25(_0x4a802f[_0x0dd1('0x11')](0x1f4,_0xb04a1c[_0x0dd1('0x13')]));});});};
\ No newline at end of file
+var _0x38de=['client','http','request','then','Sound,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','ShowSound','find','options','raw','attributes','include','map','model','info','stringify','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0xd39959,_0x302d09){var _0x1ff69c=function(_0x17c97f){while(--_0x17c97f){_0xd39959['push'](_0xd39959['shift']());}};_0x1ff69c(++_0x302d09);}(_0x38de,0x111));var _0xe38d=function(_0x573a71,_0x35ce37){_0x573a71=_0x573a71-0x0;var _0x766877=_0x38de[_0x573a71];return _0x766877;};'use strict';var _=require('lodash');var util=require(_0xe38d('0x0'));var moment=require('moment');var BPromise=require(_0xe38d('0x1'));var rs=require(_0xe38d('0x2'));var fs=require('fs');var Redis=require(_0xe38d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe38d('0x4'));var logger=require(_0xe38d('0x5'))('rpc');var config=require(_0xe38d('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe38d('0x7')][_0xe38d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x43fa90,_0x599696,_0x331ef0){return new BPromise(function(_0x262c91,_0x4ec0c2){return client[_0xe38d('0x9')](_0x43fa90,_0x331ef0)[_0xe38d('0xa')](function(_0x515221){logger['info'](_0xe38d('0xb'),_0x599696,_0xe38d('0xc'));logger[_0xe38d('0xd')]('Sound,\x20%s,\x20%s,\x20%s',_0x599696,_0xe38d('0xc'),JSON['stringify'](_0x515221));if(_0x515221[_0xe38d('0xe')]){if(_0x515221['error'][_0xe38d('0xf')]===0x1f4){logger[_0xe38d('0xe')](_0xe38d('0xb'),_0x599696,_0x515221[_0xe38d('0xe')][_0xe38d('0x10')]);return _0x4ec0c2(_0x515221[_0xe38d('0xe')]['message']);}logger[_0xe38d('0xe')](_0xe38d('0xb'),_0x599696,_0x515221[_0xe38d('0xe')][_0xe38d('0x10')]);return _0x262c91(_0x515221['error'][_0xe38d('0x10')]);}else{logger['info'](_0xe38d('0xb'),_0x599696,_0xe38d('0xc'));_0x262c91(_0x515221[_0xe38d('0x11')][_0xe38d('0x10')]);}})['catch'](function(_0x1a0df4){logger[_0xe38d('0xe')](_0xe38d('0xb'),_0x599696,_0x1a0df4);_0x4ec0c2(_0x1a0df4);});});}exports[_0xe38d('0x12')]=function(_0x30c759){var _0xcacdc6=this;return new Promise(function(_0x40bf9f,_0x483dd3){return db['Sound'][_0xe38d('0x13')]({'raw':_0x30c759[_0xe38d('0x14')]?_0x30c759['options'][_0xe38d('0x15')]===undefined?!![]:![]:!![],'where':_0x30c759['options']?_0x30c759[_0xe38d('0x14')]['where']||null:null,'attributes':_0x30c759['options']?_0x30c759[_0xe38d('0x14')][_0xe38d('0x16')]||null:null,'include':_0x30c759['options']?_0x30c759[_0xe38d('0x14')][_0xe38d('0x17')]?_['map'](_0x30c759['options']['include'],function(_0x57d48a){return{'model':db[_0x57d48a['model']],'as':_0x57d48a['as'],'attributes':_0x57d48a[_0xe38d('0x16')],'include':_0x57d48a[_0xe38d('0x17')]?_[_0xe38d('0x18')](_0x57d48a[_0xe38d('0x17')],function(_0x10db31){return{'model':db[_0x10db31[_0xe38d('0x19')]],'as':_0x10db31['as'],'attributes':_0x10db31[_0xe38d('0x16')],'include':_0x10db31['include']?_[_0xe38d('0x18')](_0x10db31[_0xe38d('0x17')],function(_0x18f7c3){return{'model':db[_0x18f7c3[_0xe38d('0x19')]],'as':_0x18f7c3['as'],'attributes':_0x18f7c3[_0xe38d('0x16')]};}):[]};}):[]};}):[]:[]})[_0xe38d('0xa')](function(_0x1af707){logger[_0xe38d('0x1a')](_0xe38d('0x12'),_0x30c759);logger[_0xe38d('0xd')](_0xe38d('0x12'),_0x30c759,JSON[_0xe38d('0x1b')](_0x1af707));_0x40bf9f(_0x1af707);})['catch'](function(_0x409b38){logger['error']('ShowSound',_0x409b38[_0xe38d('0x10')],_0x30c759);_0x483dd3(_0xcacdc6[_0xe38d('0xe')](0x1f4,_0x409b38[_0xe38d('0x10')]));});});};
\ No newline at end of file
index 448b526..24dd21b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x2231a8,_0x5f51b5){var _0x363641=function(_0x155c54){while(--_0x155c54){_0x2231a8['push'](_0x2231a8['shift']());}};_0x363641(++_0x5f51b5);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['show']);router[_0x0baf('0xd')]('/',auth['isAuthenticated'](),controller[_0x0baf('0xe')]);router[_0x0baf('0xf')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x10')]);router[_0x0baf('0x11')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);module[_0x0baf('0x13')]=router;
\ No newline at end of file
+var _0xb10b=['./squareMessage.controller','get','index','isAuthenticated','show','post','create','put','/:id','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1351c0,_0x384100){var _0x4d7e14=function(_0x9e754f){while(--_0x9e754f){_0x1351c0['push'](_0x1351c0['shift']());}};_0x4d7e14(++_0x384100);}(_0xb10b,0x12a));var _0xbb10=function(_0x19ef2b,_0x354f66){_0x19ef2b=_0x19ef2b-0x0;var _0x4df537=_0xb10b[_0x19ef2b];return _0x4df537;};'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('0xd')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['update']);router['delete'](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);module['exports']=router;
\ No newline at end of file
index fd05fb0..5348a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee65=['out','STRING','TEXT','medium','ENUM'];(function(_0x3f18ba,_0x38da0e){var _0x1d3b77=function(_0x1b8889){while(--_0x1b8889){_0x3f18ba['push'](_0x3f18ba['shift']());}};_0x1d3b77(++_0x38da0e);}(_0xee65,0x89));var _0x5ee6=function(_0x52ffc9,_0x21c914){_0x52ffc9=_0x52ffc9-0x0;var _0x538f26=_0xee65[_0x52ffc9];return _0x538f26;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x5ee6('0x0')](_0x5ee6('0x1')),'allowNull':![]},'direction':{'type':Sequelize[_0x5ee6('0x2')]('in',_0x5ee6('0x3')),'defaultValue':_0x5ee6('0x3'),'allowNull':![]},'providerName':{'type':Sequelize[_0x5ee6('0x4')]},'providerResponse':{'type':Sequelize[_0x5ee6('0x0')]}};
\ No newline at end of file
+var _0x6251=['out','STRING','sequelize','exports','TEXT','medium'];(function(_0x415ac8,_0x4d3a83){var _0x419e93=function(_0x321c0f){while(--_0x321c0f){_0x415ac8['push'](_0x415ac8['shift']());}};_0x419e93(++_0x4d3a83);}(_0x6251,0x98));var _0x1625=function(_0x218972,_0x1f9794){_0x218972=_0x218972-0x0;var _0x1bb1a8=_0x6251[_0x218972];return _0x1bb1a8;};'use strict';var Sequelize=require(_0x1625('0x0'));module[_0x1625('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x1625('0x2')](_0x1625('0x3')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0x1625('0x4')),'defaultValue':_0x1625('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0x1625('0x5')]},'providerResponse':{'type':Sequelize[_0x1625('0x2')]}};
\ No newline at end of file
index 759b11d..4d0cae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687a=['filter','merge','options','includeAll','findAll','rows','catch','intersection','include','create','body','find','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','then','destroy','error','stack','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','query','keys','filters','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick'];(function(_0x4b05af,_0x1c3e92){var _0xb459ae=function(_0x1b1bdc){while(--_0x1b1bdc){_0x4b05af['push'](_0x4b05af['shift']());}};_0xb459ae(++_0x1c3e92);}(_0x687a,0xe8));var _0xa687=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x687a[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0xa687('0x0'));var rimraf=require(_0xa687('0x1'));var zipdir=require(_0xa687('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa687('0x3'));var moment=require(_0xa687('0x4'));var BPromise=require(_0xa687('0x5'));var Mustache=require(_0xa687('0x6'));var util=require(_0xa687('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xa687('0x8'));var ejs=require(_0xa687('0x9'));var fs=require('fs');var fs_extra=require(_0xa687('0xa'));var _=require(_0xa687('0xb'));var squel=require(_0xa687('0xc'));var crypto=require(_0xa687('0xd'));var jsforce=require(_0xa687('0xe'));var deskjs=require(_0xa687('0xf'));var toCsv=require(_0xa687('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa687('0x10'));var authService=require(_0xa687('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa687('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa687('0x13'))(_0xa687('0x14'));var utils=require(_0xa687('0x15'));var config=require(_0xa687('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa687('0x17'))['db'];function respondWithStatusCode(_0xecefb,_0x544270){_0x544270=_0x544270||0xcc;return function(_0x4b0ce6){if(_0x4b0ce6){return _0xecefb[_0xa687('0x18')](_0x544270);}return _0xecefb[_0xa687('0x19')](_0x544270)[_0xa687('0x1a')]();};}function respondWithResult(_0x5b5dae,_0x21ec32){_0x21ec32=_0x21ec32||0xc8;return function(_0x19ba13){if(_0x19ba13){return _0x5b5dae[_0xa687('0x19')](_0x21ec32)[_0xa687('0x1b')](_0x19ba13);}};}function respondWithFilteredResult(_0x49f780,_0x56f0e3){return function(_0x293c3c){if(_0x293c3c){var _0x11f1cc=typeof _0x56f0e3[_0xa687('0x1c')]===_0xa687('0x1d')&&typeof _0x56f0e3['limit']===_0xa687('0x1d');var _0x53ad4f=_0x293c3c['count'];var _0x13686e=_0x11f1cc?0x0:_0x56f0e3[_0xa687('0x1c')];var _0xb14575=_0x11f1cc?_0x293c3c[_0xa687('0x1e')]:_0x56f0e3[_0xa687('0x1c')]+_0x56f0e3['limit'];var _0x52bfa8;if(_0xb14575>=_0x53ad4f){_0xb14575=_0x53ad4f;_0x52bfa8=0xc8;}else{_0x52bfa8=0xce;}_0x49f780[_0xa687('0x19')](_0x52bfa8);return _0x49f780[_0xa687('0x1f')](_0xa687('0x20'),_0x13686e+'-'+_0xb14575+'/'+_0x53ad4f)[_0xa687('0x1b')](_0x293c3c);}return null;};}function patchUpdates(_0x33c01a){return function(_0x4e5d1d){try{jsonpatch[_0xa687('0x21')](_0x4e5d1d,_0x33c01a,!![]);}catch(_0x15714e){return BPromise['reject'](_0x15714e);}return _0x4e5d1d['save']();};}function saveUpdates(_0x4197f0,_0x17ac11){return function(_0x3369a3){if(_0x3369a3){return _0x3369a3['update'](_0x4197f0)[_0xa687('0x22')](function(_0x25f9e5){return _0x25f9e5;});}return null;};}function removeEntity(_0x131e3e,_0x54d603){return function(_0x4f9442){if(_0x4f9442){return _0x4f9442[_0xa687('0x23')]()[_0xa687('0x22')](function(){_0x131e3e[_0xa687('0x19')](0xcc)[_0xa687('0x1a')]();});}};}function handleEntityNotFound(_0x2ad00a,_0x48e5ef){return function(_0x424289){if(!_0x424289){_0x2ad00a[_0xa687('0x18')](0x194);}return _0x424289;};}function handleError(_0x96edb1,_0x34203c){_0x34203c=_0x34203c||0x1f4;return function(_0x2d2bd4){logger[_0xa687('0x24')](_0x2d2bd4[_0xa687('0x25')]);if(_0x2d2bd4[_0xa687('0x26')]){delete _0x2d2bd4[_0xa687('0x26')];}_0x96edb1['status'](_0x34203c)[_0xa687('0x27')](_0x2d2bd4);};}exports[_0xa687('0x28')]=function(_0x274850,_0x21d0f6){var _0x449fdb={},_0x49d26f={},_0x29c409={'count':0x0,'rows':[]};var _0x3cbf56=_[_0xa687('0x29')](db[_0xa687('0x2a')][_0xa687('0x2b')],function(_0x2c375f){return{'name':_0x2c375f[_0xa687('0x2c')],'type':_0x2c375f[_0xa687('0x2d')]['key']};});_0x49d26f['model']=_[_0xa687('0x29')](_0x3cbf56,_0xa687('0x26'));_0x49d26f[_0xa687('0x2e')]=_[_0xa687('0x2f')](_0x274850[_0xa687('0x2e')]);_0x49d26f[_0xa687('0x30')]=_['intersection'](_0x49d26f[_0xa687('0x31')],_0x49d26f[_0xa687('0x2e')]);_0x449fdb['attributes']=_['intersection'](_0x49d26f[_0xa687('0x31')],qs[_0xa687('0x32')](_0x274850[_0xa687('0x2e')][_0xa687('0x32')]));_0x449fdb[_0xa687('0x33')]=_0x449fdb[_0xa687('0x33')][_0xa687('0x34')]?_0x449fdb[_0xa687('0x33')]:_0x49d26f[_0xa687('0x31')];if(!_0x274850[_0xa687('0x2e')][_0xa687('0x35')](_0xa687('0x36'))){_0x449fdb[_0xa687('0x37')]=qs[_0xa687('0x37')](_0x274850[_0xa687('0x2e')][_0xa687('0x37')]);_0x449fdb[_0xa687('0x1c')]=qs[_0xa687('0x1c')](_0x274850['query'][_0xa687('0x1c')]);}_0x449fdb[_0xa687('0x38')]=qs['sort'](_0x274850['query'][_0xa687('0x39')]);_0x449fdb[_0xa687('0x3a')]=qs[_0xa687('0x30')](_[_0xa687('0x3b')](_0x274850[_0xa687('0x2e')],_0x49d26f['filters']),_0x3cbf56);if(_0x274850['query'][_0xa687('0x3c')]){_0x449fdb[_0xa687('0x3a')]=_[_0xa687('0x3d')](_0x449fdb[_0xa687('0x3a')],{'$or':_[_0xa687('0x29')](_0x3cbf56,function(_0x4adfdf){if(_0x4adfdf[_0xa687('0x2d')]!=='VIRTUAL'){var _0x3477cb={};_0x3477cb[_0x4adfdf['name']]={'$like':'%'+_0x274850[_0xa687('0x2e')][_0xa687('0x3c')]+'%'};return _0x3477cb;}})});}_0x449fdb=_['merge']({},_0x449fdb,_0x274850[_0xa687('0x3e')]);var _0xc331c5={'where':_0x449fdb['where']};return db[_0xa687('0x2a')]['count'](_0xc331c5)[_0xa687('0x22')](function(_0x14719c){_0x29c409['count']=_0x14719c;if(_0x274850['query'][_0xa687('0x3f')]){_0x449fdb['include']=[{'all':!![]}];}return db[_0xa687('0x2a')][_0xa687('0x40')](_0x449fdb);})[_0xa687('0x22')](function(_0x5ef923){_0x29c409[_0xa687('0x41')]=_0x5ef923;return _0x29c409;})['then'](respondWithFilteredResult(_0x21d0f6,_0x449fdb))[_0xa687('0x42')](handleError(_0x21d0f6,null));};exports['show']=function(_0x41d748,_0x50527d){var _0x4d0aef={'raw':!![],'where':{'id':_0x41d748['params']['id']}},_0x1afb56={};_0x1afb56[_0xa687('0x31')]=_[_0xa687('0x2f')](db['SquareMessage']['rawAttributes']);_0x1afb56['query']=_[_0xa687('0x2f')](_0x41d748[_0xa687('0x2e')]);_0x1afb56['filters']=_[_0xa687('0x43')](_0x1afb56['model'],_0x1afb56[_0xa687('0x2e')]);_0x4d0aef[_0xa687('0x33')]=_[_0xa687('0x43')](_0x1afb56[_0xa687('0x31')],qs[_0xa687('0x32')](_0x41d748[_0xa687('0x2e')][_0xa687('0x32')]));_0x4d0aef[_0xa687('0x33')]=_0x4d0aef['attributes'][_0xa687('0x34')]?_0x4d0aef[_0xa687('0x33')]:_0x1afb56[_0xa687('0x31')];if(_0x41d748[_0xa687('0x2e')][_0xa687('0x3f')]){_0x4d0aef[_0xa687('0x44')]=[{'all':!![]}];}_0x4d0aef=_[_0xa687('0x3d')]({},_0x4d0aef,_0x41d748[_0xa687('0x3e')]);return db[_0xa687('0x2a')]['find'](_0x4d0aef)['then'](handleEntityNotFound(_0x50527d,null))[_0xa687('0x22')](respondWithResult(_0x50527d,null))[_0xa687('0x42')](handleError(_0x50527d,null));};exports[_0xa687('0x45')]=function(_0x41c526,_0xa9e0f7){return db[_0xa687('0x2a')][_0xa687('0x45')](_0x41c526[_0xa687('0x46')],{})[_0xa687('0x22')](respondWithResult(_0xa9e0f7,0xc9))[_0xa687('0x42')](handleError(_0xa9e0f7,null));};exports['update']=function(_0x57f35d,_0x41074c){if(_0x57f35d[_0xa687('0x46')]['id']){delete _0x57f35d[_0xa687('0x46')]['id'];}return db[_0xa687('0x2a')][_0xa687('0x47')]({'where':{'id':_0x57f35d[_0xa687('0x48')]['id']}})[_0xa687('0x22')](handleEntityNotFound(_0x41074c,null))[_0xa687('0x22')](saveUpdates(_0x57f35d[_0xa687('0x46')],null))[_0xa687('0x22')](respondWithResult(_0x41074c,null))['catch'](handleError(_0x41074c,null));};exports[_0xa687('0x23')]=function(_0x3c3e55,_0x411650){return db[_0xa687('0x2a')][_0xa687('0x47')]({'where':{'id':_0x3c3e55[_0xa687('0x48')]['id']}})[_0xa687('0x22')](handleEntityNotFound(_0x411650,null))[_0xa687('0x22')](removeEntity(_0x411650,null))[_0xa687('0x42')](handleError(_0x411650,null));};
\ No newline at end of file
+var _0x94e7=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','error','stack','name','send','map','SquareMessage','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','find','create','body','update','destroy','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x4cfe90,_0x416cef){var _0x1471c7=function(_0x137e43){while(--_0x137e43){_0x4cfe90['push'](_0x4cfe90['shift']());}};_0x1471c7(++_0x416cef);}(_0x94e7,0x7c));var _0x794e=function(_0x4c4486,_0x321cfc){_0x4c4486=_0x4c4486-0x0;var _0x10f1d7=_0x94e7[_0x4c4486];return _0x10f1d7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x794e('0x0'));var zipdir=require(_0x794e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x794e('0x2'));var BPromise=require(_0x794e('0x3'));var Mustache=require(_0x794e('0x4'));var util=require('util');var path=require(_0x794e('0x5'));var sox=require(_0x794e('0x6'));var csv=require(_0x794e('0x7'));var ejs=require(_0x794e('0x8'));var fs=require('fs');var fs_extra=require(_0x794e('0x9'));var _=require(_0x794e('0xa'));var squel=require('squel');var crypto=require(_0x794e('0xb'));var jsforce=require(_0x794e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x794e('0x7'));var querystring=require('querystring');var Papa=require(_0x794e('0xd'));var Redis=require('ioredis');var authService=require(_0x794e('0xe'));var qs=require(_0x794e('0xf'));var as=require(_0x794e('0x10'));var hardwareService=require(_0x794e('0x11'));var logger=require(_0x794e('0x12'))(_0x794e('0x13'));var utils=require(_0x794e('0x14'));var config=require(_0x794e('0x15'));var licenseUtil=require(_0x794e('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ffc45,_0x546471){_0x546471=_0x546471||0xcc;return function(_0x1e2f12){if(_0x1e2f12){return _0x3ffc45[_0x794e('0x17')](_0x546471);}return _0x3ffc45[_0x794e('0x18')](_0x546471)[_0x794e('0x19')]();};}function respondWithResult(_0x1448d8,_0x28b21b){_0x28b21b=_0x28b21b||0xc8;return function(_0x369a8f){if(_0x369a8f){return _0x1448d8['status'](_0x28b21b)[_0x794e('0x1a')](_0x369a8f);}};}function respondWithFilteredResult(_0x27f5d7,_0x3ebce4){return function(_0x1e3d23){if(_0x1e3d23){var _0x3c2b97=typeof _0x3ebce4[_0x794e('0x1b')]===_0x794e('0x1c')&&typeof _0x3ebce4[_0x794e('0x1d')]==='undefined';var _0xf2450b=_0x1e3d23[_0x794e('0x1e')];var _0x553358=_0x3c2b97?0x0:_0x3ebce4[_0x794e('0x1b')];var _0x575d66=_0x3c2b97?_0x1e3d23[_0x794e('0x1e')]:_0x3ebce4[_0x794e('0x1b')]+_0x3ebce4[_0x794e('0x1d')];var _0x39d612;if(_0x575d66>=_0xf2450b){_0x575d66=_0xf2450b;_0x39d612=0xc8;}else{_0x39d612=0xce;}_0x27f5d7[_0x794e('0x18')](_0x39d612);return _0x27f5d7[_0x794e('0x1f')](_0x794e('0x20'),_0x553358+'-'+_0x575d66+'/'+_0xf2450b)[_0x794e('0x1a')](_0x1e3d23);}return null;};}function patchUpdates(_0x5c9cb1){return function(_0x3c8d11){try{jsonpatch[_0x794e('0x21')](_0x3c8d11,_0x5c9cb1,!![]);}catch(_0x1d2634){return BPromise[_0x794e('0x22')](_0x1d2634);}return _0x3c8d11['save']();};}function saveUpdates(_0x3035eb,_0x1e6b76){return function(_0x49cbd0){if(_0x49cbd0){return _0x49cbd0['update'](_0x3035eb)[_0x794e('0x23')](function(_0x30394f){return _0x30394f;});}return null;};}function removeEntity(_0x28a633,_0x85bc21){return function(_0xf1ecf9){if(_0xf1ecf9){return _0xf1ecf9['destroy']()[_0x794e('0x23')](function(){_0x28a633['status'](0xcc)[_0x794e('0x19')]();});}};}function handleEntityNotFound(_0xa270ee,_0x435af0){return function(_0x5a15bd){if(!_0x5a15bd){_0xa270ee[_0x794e('0x17')](0x194);}return _0x5a15bd;};}function handleError(_0x559ed7,_0x55f0de){_0x55f0de=_0x55f0de||0x1f4;return function(_0x2dcfdc){logger[_0x794e('0x24')](_0x2dcfdc[_0x794e('0x25')]);if(_0x2dcfdc['name']){delete _0x2dcfdc[_0x794e('0x26')];}_0x559ed7[_0x794e('0x18')](_0x55f0de)[_0x794e('0x27')](_0x2dcfdc);};}exports['index']=function(_0x5e3614,_0x49e5cd){var _0x43c538={},_0x50e98a={},_0xdee2b9={'count':0x0,'rows':[]};var _0x5ebea5=_[_0x794e('0x28')](db[_0x794e('0x29')][_0x794e('0x2a')],function(_0x39318d){return{'name':_0x39318d['fieldName'],'type':_0x39318d[_0x794e('0x2b')]['key']};});_0x50e98a[_0x794e('0x2c')]=_['map'](_0x5ebea5,_0x794e('0x26'));_0x50e98a[_0x794e('0x2d')]=_[_0x794e('0x2e')](_0x5e3614[_0x794e('0x2d')]);_0x50e98a[_0x794e('0x2f')]=_[_0x794e('0x30')](_0x50e98a[_0x794e('0x2c')],_0x50e98a[_0x794e('0x2d')]);_0x43c538[_0x794e('0x31')]=_[_0x794e('0x30')](_0x50e98a['model'],qs[_0x794e('0x32')](_0x5e3614[_0x794e('0x2d')][_0x794e('0x32')]));_0x43c538[_0x794e('0x31')]=_0x43c538['attributes'][_0x794e('0x33')]?_0x43c538[_0x794e('0x31')]:_0x50e98a[_0x794e('0x2c')];if(!_0x5e3614[_0x794e('0x2d')]['hasOwnProperty'](_0x794e('0x34'))){_0x43c538[_0x794e('0x1d')]=qs[_0x794e('0x1d')](_0x5e3614['query']['limit']);_0x43c538[_0x794e('0x1b')]=qs[_0x794e('0x1b')](_0x5e3614['query'][_0x794e('0x1b')]);}_0x43c538[_0x794e('0x35')]=qs[_0x794e('0x36')](_0x5e3614[_0x794e('0x2d')]['sort']);_0x43c538[_0x794e('0x37')]=qs[_0x794e('0x2f')](_['pick'](_0x5e3614[_0x794e('0x2d')],_0x50e98a[_0x794e('0x2f')]),_0x5ebea5);if(_0x5e3614['query'][_0x794e('0x38')]){_0x43c538[_0x794e('0x37')]=_['merge'](_0x43c538['where'],{'$or':_[_0x794e('0x28')](_0x5ebea5,function(_0x2f8655){if(_0x2f8655[_0x794e('0x2b')]!==_0x794e('0x39')){var _0x1820b7={};_0x1820b7[_0x2f8655[_0x794e('0x26')]]={'$like':'%'+_0x5e3614[_0x794e('0x2d')]['filter']+'%'};return _0x1820b7;}})});}_0x43c538=_[_0x794e('0x3a')]({},_0x43c538,_0x5e3614[_0x794e('0x3b')]);var _0x2249f8={'where':_0x43c538['where']};return db[_0x794e('0x29')][_0x794e('0x1e')](_0x2249f8)[_0x794e('0x23')](function(_0x52c6c4){_0xdee2b9[_0x794e('0x1e')]=_0x52c6c4;if(_0x5e3614[_0x794e('0x2d')][_0x794e('0x3c')]){_0x43c538[_0x794e('0x3d')]=[{'all':!![]}];}return db[_0x794e('0x29')]['findAll'](_0x43c538);})[_0x794e('0x23')](function(_0x1445f2){_0xdee2b9[_0x794e('0x3e')]=_0x1445f2;return _0xdee2b9;})[_0x794e('0x23')](respondWithFilteredResult(_0x49e5cd,_0x43c538))[_0x794e('0x3f')](handleError(_0x49e5cd,null));};exports[_0x794e('0x40')]=function(_0x310fee,_0x5df390){var _0x583ff0={'raw':!![],'where':{'id':_0x310fee[_0x794e('0x41')]['id']}},_0x4535dd={};_0x4535dd['model']=_[_0x794e('0x2e')](db[_0x794e('0x29')][_0x794e('0x2a')]);_0x4535dd['query']=_['keys'](_0x310fee['query']);_0x4535dd[_0x794e('0x2f')]=_['intersection'](_0x4535dd[_0x794e('0x2c')],_0x4535dd['query']);_0x583ff0[_0x794e('0x31')]=_[_0x794e('0x30')](_0x4535dd[_0x794e('0x2c')],qs[_0x794e('0x32')](_0x310fee[_0x794e('0x2d')][_0x794e('0x32')]));_0x583ff0[_0x794e('0x31')]=_0x583ff0[_0x794e('0x31')][_0x794e('0x33')]?_0x583ff0[_0x794e('0x31')]:_0x4535dd[_0x794e('0x2c')];if(_0x310fee[_0x794e('0x2d')]['includeAll']){_0x583ff0[_0x794e('0x3d')]=[{'all':!![]}];}_0x583ff0=_['merge']({},_0x583ff0,_0x310fee[_0x794e('0x3b')]);return db[_0x794e('0x29')][_0x794e('0x42')](_0x583ff0)['then'](handleEntityNotFound(_0x5df390,null))[_0x794e('0x23')](respondWithResult(_0x5df390,null))['catch'](handleError(_0x5df390,null));};exports[_0x794e('0x43')]=function(_0x3f1b15,_0x5c41d0){return db[_0x794e('0x29')][_0x794e('0x43')](_0x3f1b15[_0x794e('0x44')],{})[_0x794e('0x23')](respondWithResult(_0x5c41d0,0xc9))[_0x794e('0x3f')](handleError(_0x5c41d0,null));};exports[_0x794e('0x45')]=function(_0x35525e,_0x528cc2){if(_0x35525e[_0x794e('0x44')]['id']){delete _0x35525e[_0x794e('0x44')]['id'];}return db[_0x794e('0x29')]['find']({'where':{'id':_0x35525e[_0x794e('0x41')]['id']}})[_0x794e('0x23')](handleEntityNotFound(_0x528cc2,null))[_0x794e('0x23')](saveUpdates(_0x35525e[_0x794e('0x44')],null))['then'](respondWithResult(_0x528cc2,null))[_0x794e('0x3f')](handleError(_0x528cc2,null));};exports[_0x794e('0x46')]=function(_0x252ce3,_0x2f2d8f){return db[_0x794e('0x29')]['find']({'where':{'id':_0x252ce3[_0x794e('0x41')]['id']}})['then'](handleEntityNotFound(_0x2f2d8f,null))[_0x794e('0x23')](removeEntity(_0x2f2d8f,null))[_0x794e('0x3f')](handleError(_0x2f2d8f,null));};
\ No newline at end of file
index 0d97221..13fadcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3cd=['./squareMessage.attributes','exports','SquareMessage','lodash','util','api','moment','request-promise','path'];(function(_0x189903,_0x533e41){var _0x1d95a2=function(_0x351189){while(--_0x351189){_0x189903['push'](_0x189903['shift']());}};_0x1d95a2(++_0x533e41);}(_0xa3cd,0x13e));var _0xda3c=function(_0x2e8cb4,_0x1d3912){_0x2e8cb4=_0x2e8cb4-0x0;var _0x2e58f0=_0xa3cd[_0x2e8cb4];return _0x2e58f0;};'use strict';var _=require(_0xda3c('0x0'));var util=require(_0xda3c('0x1'));var logger=require('../../config/logger')(_0xda3c('0x2'));var moment=require(_0xda3c('0x3'));var BPromise=require('bluebird');var rp=require(_0xda3c('0x4'));var fs=require('fs');var path=require(_0xda3c('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xda3c('0x6'));module[_0xda3c('0x7')]=function(_0x2f6179,_0x47633c){return _0x2f6179['define'](_0xda3c('0x8'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb8c=['util','../../config/logger','bluebird','request-promise','path','./squareMessage.attributes','define','SquareMessage','lodash'];(function(_0x2c3a8f,_0x374e56){var _0x189412=function(_0x560055){while(--_0x560055){_0x2c3a8f['push'](_0x2c3a8f['shift']());}};_0x189412(++_0x374e56);}(_0xeb8c,0x170));var _0xceb8=function(_0x378220,_0x1b7a77){_0x378220=_0x378220-0x0;var _0x23e11e=_0xeb8c[_0x378220];return _0x23e11e;};'use strict';var _=require(_0xceb8('0x0'));var util=require(_0xceb8('0x1'));var logger=require(_0xceb8('0x2'))('api');var moment=require('moment');var BPromise=require(_0xceb8('0x3'));var rp=require(_0xceb8('0x4'));var fs=require('fs');var path=require(_0xceb8('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xceb8('0x6'));module['exports']=function(_0x233ede,_0x7a0155){return _0x233ede[_0xceb8('0x7')](_0xceb8('0x8'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d3fa812..c122cf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa97c=['catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','info','result','CreateSquareMessage','SquareMessage','body','options','raw'];(function(_0x208311,_0x244a75){var _0x1c2478=function(_0x496a76){while(--_0x496a76){_0x208311['push'](_0x208311['shift']());}};_0x1c2478(++_0x244a75);}(_0xa97c,0x160));var _0xca97=function(_0x26bbdb,_0x41ada9){_0x26bbdb=_0x26bbdb-0x0;var _0x590a52=_0xa97c[_0x26bbdb];return _0x590a52;};'use strict';var _=require(_0xca97('0x0'));var util=require(_0xca97('0x1'));var moment=require(_0xca97('0x2'));var BPromise=require('bluebird');var rs=require(_0xca97('0x3'));var fs=require('fs');var Redis=require(_0xca97('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xca97('0x5'));var logger=require('../../config/logger')(_0xca97('0x6'));var config=require(_0xca97('0x7'));var jayson=require(_0xca97('0x8'));var client=jayson[_0xca97('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x336595,_0x1d2f11,_0x54baab){return new BPromise(function(_0x2f175e,_0x387a0f){return client[_0xca97('0xa')](_0x336595,_0x54baab)['then'](function(_0x2811eb){logger['info']('SquareMessage,\x20%s,\x20%s',_0x1d2f11,'request\x20sent');logger[_0xca97('0xb')](_0xca97('0xc'),_0x1d2f11,_0xca97('0xd'),JSON[_0xca97('0xe')](_0x2811eb));if(_0x2811eb[_0xca97('0xf')]){if(_0x2811eb[_0xca97('0xf')][_0xca97('0x10')]===0x1f4){logger['error'](_0xca97('0x11'),_0x1d2f11,_0x2811eb['error'][_0xca97('0x12')]);return _0x387a0f(_0x2811eb[_0xca97('0xf')][_0xca97('0x12')]);}logger['error'](_0xca97('0x11'),_0x1d2f11,_0x2811eb[_0xca97('0xf')][_0xca97('0x12')]);return _0x2f175e(_0x2811eb['error'][_0xca97('0x12')]);}else{logger[_0xca97('0x13')]('SquareMessage,\x20%s,\x20%s',_0x1d2f11,_0xca97('0xd'));_0x2f175e(_0x2811eb[_0xca97('0x14')][_0xca97('0x12')]);}})['catch'](function(_0x5a16c4){logger[_0xca97('0xf')]('SquareMessage,\x20%s,\x20%s',_0x1d2f11,_0x5a16c4);_0x387a0f(_0x5a16c4);});});}exports[_0xca97('0x15')]=function(_0x5459fd){var _0x5889e6=this;return new Promise(function(_0x3ef4d1,_0x5e312d){return db[_0xca97('0x16')]['create'](_0x5459fd[_0xca97('0x17')],{'raw':_0x5459fd[_0xca97('0x18')]?_0x5459fd[_0xca97('0x18')][_0xca97('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x394cdb){logger[_0xca97('0x13')]('CreateSquareMessage',_0x5459fd);logger[_0xca97('0xb')](_0xca97('0x15'),_0x5459fd,JSON[_0xca97('0xe')](_0x394cdb));_0x3ef4d1(_0x394cdb);})[_0xca97('0x1a')](function(_0xb75489){logger[_0xca97('0xf')](_0xca97('0x15'),_0xb75489[_0xca97('0x12')],_0x5459fd);_0x5e312d(_0x5889e6[_0xca97('0xf')](0x1f4,_0xb75489[_0xca97('0x12')]));});});};
\ No newline at end of file
+var _0x66f7=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','CreateSquareMessage','SquareMessage','create','body','options','raw','debug','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x50ee3b,_0x53d24a){var _0x5612cd=function(_0x3398a7){while(--_0x3398a7){_0x50ee3b['push'](_0x50ee3b['shift']());}};_0x5612cd(++_0x53d24a);}(_0x66f7,0x15b));var _0x766f=function(_0x794207,_0x54a989){_0x794207=_0x794207-0x0;var _0x4ee1c9=_0x66f7[_0x794207];return _0x4ee1c9;};'use strict';var _=require(_0x766f('0x0'));var util=require(_0x766f('0x1'));var moment=require(_0x766f('0x2'));var BPromise=require(_0x766f('0x3'));var rs=require(_0x766f('0x4'));var fs=require('fs');var Redis=require(_0x766f('0x5'));var db=require(_0x766f('0x6'))['db'];var utils=require(_0x766f('0x7'));var logger=require(_0x766f('0x8'))(_0x766f('0x9'));var config=require(_0x766f('0xa'));var jayson=require(_0x766f('0xb'));var client=jayson[_0x766f('0xc')][_0x766f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x488d6f,_0x367164,_0x1064d8){return new BPromise(function(_0x400aff,_0x186e1d){return client[_0x766f('0xe')](_0x488d6f,_0x1064d8)[_0x766f('0xf')](function(_0x18460a){logger[_0x766f('0x10')]('SquareMessage,\x20%s,\x20%s',_0x367164,_0x766f('0x11'));logger['debug'](_0x766f('0x12'),_0x367164,_0x766f('0x11'),JSON[_0x766f('0x13')](_0x18460a));if(_0x18460a[_0x766f('0x14')]){if(_0x18460a[_0x766f('0x14')][_0x766f('0x15')]===0x1f4){logger['error'](_0x766f('0x16'),_0x367164,_0x18460a[_0x766f('0x14')][_0x766f('0x17')]);return _0x186e1d(_0x18460a[_0x766f('0x14')][_0x766f('0x17')]);}logger['error']('SquareMessage,\x20%s,\x20%s',_0x367164,_0x18460a[_0x766f('0x14')][_0x766f('0x17')]);return _0x400aff(_0x18460a[_0x766f('0x14')][_0x766f('0x17')]);}else{logger['info']('SquareMessage,\x20%s,\x20%s',_0x367164,_0x766f('0x11'));_0x400aff(_0x18460a['result'][_0x766f('0x17')]);}})['catch'](function(_0x185b0e){logger[_0x766f('0x14')]('SquareMessage,\x20%s,\x20%s',_0x367164,_0x185b0e);_0x186e1d(_0x185b0e);});});}exports[_0x766f('0x18')]=function(_0x1d1e22){var _0x475e22=this;return new Promise(function(_0x1d024b,_0x189de4){return db[_0x766f('0x19')][_0x766f('0x1a')](_0x1d1e22[_0x766f('0x1b')],{'raw':_0x1d1e22['options']?_0x1d1e22[_0x766f('0x1c')][_0x766f('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x173fa2){logger[_0x766f('0x10')](_0x766f('0x18'),_0x1d1e22);logger[_0x766f('0x1e')]('CreateSquareMessage',_0x1d1e22,JSON[_0x766f('0x13')](_0x173fa2));_0x1d024b(_0x173fa2);})[_0x766f('0x1f')](function(_0x3a621d){logger[_0x766f('0x14')]('CreateSquareMessage',_0x3a621d['message'],_0x1d1e22);_0x189de4(_0x475e22[_0x766f('0x14')](0x1f4,_0x3a621d[_0x766f('0x17')]));});});};
\ No newline at end of file
index db09fe6..f6d1ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7349=['index','/:id','/:id/test','15s','test','post','create','update','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated'];(function(_0x593bc7,_0x233c3f){var _0x2d3f6e=function(_0x61d924){while(--_0x61d924){_0x593bc7['push'](_0x593bc7['shift']());}};_0x2d3f6e(++_0x233c3f);}(_0x7349,0x19a));var _0x9734=function(_0x34637f,_0x51f89e){_0x34637f=_0x34637f-0x0;var _0x27e91c=_0x7349[_0x34637f];return _0x27e91c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x9734('0x0'));var express=require(_0x9734('0x1'));var router=express[_0x9734('0x2')]();var fs_extra=require(_0x9734('0x3'));var auth=require(_0x9734('0x4'));var interaction=require(_0x9734('0x5'));var config=require(_0x9734('0x6'));var controller=require(_0x9734('0x7'));router[_0x9734('0x8')]('/',auth[_0x9734('0x9')](),controller[_0x9734('0xa')]);router[_0x9734('0x8')](_0x9734('0xb'),auth[_0x9734('0x9')](),controller['show']);router['get'](_0x9734('0xc'),auth['isAuthenticated'](),timeout(_0x9734('0xd')),controller[_0x9734('0xe')]);router[_0x9734('0xf')]('/',auth[_0x9734('0x9')](),controller[_0x9734('0x10')]);router['put'](_0x9734('0xb'),auth[_0x9734('0x9')](),controller[_0x9734('0x11')]);router[_0x9734('0x12')](_0x9734('0xb'),auth[_0x9734('0x9')](),controller[_0x9734('0x13')]);module[_0x9734('0x14')]=router;
\ No newline at end of file
+var _0x3aef=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','index','/:id','show','/:id/test','isAuthenticated','15s','test','post','create','delete','destroy'];(function(_0x397bfb,_0x589665){var _0x16c9b9=function(_0x13ce8a){while(--_0x13ce8a){_0x397bfb['push'](_0x397bfb['shift']());}};_0x16c9b9(++_0x589665);}(_0x3aef,0xf2));var _0xf3ae=function(_0x45d20f,_0x134b3d){_0x45d20f=_0x45d20f-0x0;var _0xcbbc4a=_0x3aef[_0x45d20f];return _0xcbbc4a;};'use strict';var multer=require(_0xf3ae('0x0'));var util=require(_0xf3ae('0x1'));var path=require(_0xf3ae('0x2'));var timeout=require(_0xf3ae('0x3'));var express=require(_0xf3ae('0x4'));var router=express[_0xf3ae('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf3ae('0x6'));var interaction=require(_0xf3ae('0x7'));var config=require(_0xf3ae('0x8'));var controller=require(_0xf3ae('0x9'));router[_0xf3ae('0xa')]('/',auth['isAuthenticated'](),controller[_0xf3ae('0xb')]);router['get'](_0xf3ae('0xc'),auth['isAuthenticated'](),controller[_0xf3ae('0xd')]);router[_0xf3ae('0xa')](_0xf3ae('0xe'),auth[_0xf3ae('0xf')](),timeout(_0xf3ae('0x10')),controller[_0xf3ae('0x11')]);router[_0xf3ae('0x12')]('/',auth[_0xf3ae('0xf')](),controller[_0xf3ae('0x13')]);router['put'](_0xf3ae('0xc'),auth[_0xf3ae('0xf')](),controller['update']);router[_0xf3ae('0x14')](_0xf3ae('0xc'),auth[_0xf3ae('0xf')](),controller[_0xf3ae('0x15')]);module['exports']=router;
\ No newline at end of file
index d0ffcdc..cf66489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a5a=['sequelize','exports','name','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7a5a,0x13c));var _0xa7a5=function(_0x15ccd2,_0x19a906){_0x15ccd2=_0x15ccd2-0x0;var _0xe3c6c8=_0x7a5a[_0x15ccd2];return _0xe3c6c8;};'use strict';var Sequelize=require(_0xa7a5('0x0'));module[_0xa7a5('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xa7a5('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0xa7a5('0x3')]},'description':{'type':Sequelize[_0xa7a5('0x3')]}};
\ No newline at end of file
+var _0x34d2=['STRING','sequelize','exports','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x34d2,0x16d));var _0x234d=function(_0x39ac89,_0x469817){_0x39ac89=_0x39ac89-0x0;var _0x286fe4=_0x34d2[_0x39ac89];return _0x286fe4;};'use strict';var Sequelize=require(_0x234d('0x0'));module[_0x234d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x234d('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x234d('0x3')]},'description':{'type':Sequelize[_0x234d('0x3')]}};
\ No newline at end of file
index 1b3317e..d53ccfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2e=['map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','rows','catch','show','params','keys','include','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','closeSync','eml-format','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','update','then','destroy','ODBC','UserProfileResource','error','stack','name','send','index','SquareOdbc','rawAttributes','fieldName','type','key','model'];(function(_0x58f0e5,_0x320aed){var _0x3d8705=function(_0x204845){while(--_0x204845){_0x58f0e5['push'](_0x58f0e5['shift']());}};_0x3d8705(++_0x320aed);}(_0xde2e,0xcd));var _0xede2=function(_0x1cbcf1,_0x3f9fd9){_0x1cbcf1=_0x1cbcf1-0x0;var _0x3a06f0=_0xde2e[_0x1cbcf1];return _0x3a06f0;};'use strict';var emlformat=require(_0xede2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xede2('0x1'));var moment=require(_0xede2('0x2'));var BPromise=require(_0xede2('0x3'));var Mustache=require(_0xede2('0x4'));var util=require('util');var path=require('path');var sox=require(_0xede2('0x5'));var csv=require(_0xede2('0x6'));var ejs=require(_0xede2('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xede2('0x8'));var squel=require(_0xede2('0x9'));var crypto=require('crypto');var jsforce=require(_0xede2('0xa'));var deskjs=require(_0xede2('0xb'));var toCsv=require(_0xede2('0x6'));var querystring=require(_0xede2('0xc'));var Papa=require(_0xede2('0xd'));var Redis=require(_0xede2('0xe'));var authService=require(_0xede2('0xf'));var qs=require(_0xede2('0x10'));var as=require(_0xede2('0x11'));var hardwareService=require(_0xede2('0x12'));var logger=require('../../config/logger')(_0xede2('0x13'));var utils=require(_0xede2('0x14'));var config=require(_0xede2('0x15'));var licenseUtil=require(_0xede2('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x275ced,_0x10f0bb){_0x10f0bb=_0x10f0bb||0xcc;return function(_0x3a41fd){if(_0x3a41fd){return _0x275ced[_0xede2('0x17')](_0x10f0bb);}return _0x275ced['status'](_0x10f0bb)[_0xede2('0x18')]();};}function respondWithResult(_0x52f0df,_0x371eda){_0x371eda=_0x371eda||0xc8;return function(_0x2d8c28){if(_0x2d8c28){return _0x52f0df[_0xede2('0x19')](_0x371eda)[_0xede2('0x1a')](_0x2d8c28);}};}function respondWithFilteredResult(_0x2d3ad2,_0x12be9b){return function(_0x2e1681){if(_0x2e1681){var _0xb88b07=typeof _0x12be9b['offset']==='undefined'&&typeof _0x12be9b[_0xede2('0x1b')]===_0xede2('0x1c');var _0x3034d4=_0x2e1681[_0xede2('0x1d')];var _0x2f7910=_0xb88b07?0x0:_0x12be9b['offset'];var _0x55acf4=_0xb88b07?_0x2e1681[_0xede2('0x1d')]:_0x12be9b[_0xede2('0x1e')]+_0x12be9b[_0xede2('0x1b')];var _0x3a9f85;if(_0x55acf4>=_0x3034d4){_0x55acf4=_0x3034d4;_0x3a9f85=0xc8;}else{_0x3a9f85=0xce;}_0x2d3ad2[_0xede2('0x19')](_0x3a9f85);return _0x2d3ad2[_0xede2('0x1f')](_0xede2('0x20'),_0x2f7910+'-'+_0x55acf4+'/'+_0x3034d4)[_0xede2('0x1a')](_0x2e1681);}return null;};}function patchUpdates(_0x53e0a3){return function(_0x3acfe5){try{jsonpatch[_0xede2('0x21')](_0x3acfe5,_0x53e0a3,!![]);}catch(_0x5ed8f){return BPromise['reject'](_0x5ed8f);}return _0x3acfe5['save']();};}function saveUpdates(_0x326ba1,_0x46ba3b){return function(_0x519fa8){if(_0x519fa8){return _0x519fa8[_0xede2('0x22')](_0x326ba1)[_0xede2('0x23')](function(_0x4f18e0){return _0x4f18e0;});}return null;};}function removeEntity(_0x385ae4,_0x45b0a9){return function(_0x49cba7){if(_0x49cba7){return _0x49cba7[_0xede2('0x24')]()[_0xede2('0x23')](function(){var _0x48a444=_0x49cba7['get']({'plain':!![]});var _0x54a8b1=_0xede2('0x25');return db[_0xede2('0x26')][_0xede2('0x24')]({'where':{'type':_0x54a8b1,'resourceId':_0x48a444['id']}})['then'](function(){return _0x49cba7;});})['then'](function(){_0x385ae4[_0xede2('0x19')](0xcc)[_0xede2('0x18')]();});}};}function handleEntityNotFound(_0x5dd13e,_0x73f359){return function(_0xf09763){if(!_0xf09763){_0x5dd13e[_0xede2('0x17')](0x194);}return _0xf09763;};}function handleError(_0x430de4,_0x571615){_0x571615=_0x571615||0x1f4;return function(_0x4dd625){logger[_0xede2('0x27')](_0x4dd625[_0xede2('0x28')]);if(_0x4dd625['name']){delete _0x4dd625[_0xede2('0x29')];}_0x430de4[_0xede2('0x19')](_0x571615)[_0xede2('0x2a')](_0x4dd625);};}exports[_0xede2('0x2b')]=function(_0x2fa16d,_0xc767ff){var _0x566032={},_0x4aede3={},_0x1fad97={'count':0x0,'rows':[]};var _0x59a51a=_['map'](db[_0xede2('0x2c')][_0xede2('0x2d')],function(_0x4d87d0){return{'name':_0x4d87d0[_0xede2('0x2e')],'type':_0x4d87d0[_0xede2('0x2f')][_0xede2('0x30')]};});_0x4aede3[_0xede2('0x31')]=_[_0xede2('0x32')](_0x59a51a,_0xede2('0x29'));_0x4aede3['query']=_['keys'](_0x2fa16d[_0xede2('0x33')]);_0x4aede3[_0xede2('0x34')]=_[_0xede2('0x35')](_0x4aede3[_0xede2('0x31')],_0x4aede3[_0xede2('0x33')]);_0x566032[_0xede2('0x36')]=_[_0xede2('0x35')](_0x4aede3[_0xede2('0x31')],qs[_0xede2('0x37')](_0x2fa16d[_0xede2('0x33')][_0xede2('0x37')]));_0x566032[_0xede2('0x36')]=_0x566032[_0xede2('0x36')][_0xede2('0x38')]?_0x566032['attributes']:_0x4aede3[_0xede2('0x31')];if(!_0x2fa16d['query'][_0xede2('0x39')](_0xede2('0x3a'))){_0x566032[_0xede2('0x1b')]=qs['limit'](_0x2fa16d['query'][_0xede2('0x1b')]);_0x566032[_0xede2('0x1e')]=qs[_0xede2('0x1e')](_0x2fa16d['query']['offset']);}_0x566032[_0xede2('0x3b')]=qs[_0xede2('0x3c')](_0x2fa16d['query'][_0xede2('0x3c')]);_0x566032[_0xede2('0x3d')]=qs['filters'](_[_0xede2('0x3e')](_0x2fa16d[_0xede2('0x33')],_0x4aede3[_0xede2('0x34')]),_0x59a51a);if(_0x2fa16d['query'][_0xede2('0x3f')]){_0x566032[_0xede2('0x3d')]=_[_0xede2('0x40')](_0x566032[_0xede2('0x3d')],{'$or':_['map'](_0x59a51a,function(_0x50afb6){if(_0x50afb6[_0xede2('0x2f')]!=='VIRTUAL'){var _0x1e3199={};_0x1e3199[_0x50afb6[_0xede2('0x29')]]={'$like':'%'+_0x2fa16d[_0xede2('0x33')]['filter']+'%'};return _0x1e3199;}})});}_0x566032=_['merge']({},_0x566032,_0x2fa16d['options']);var _0x2ebb6={'where':_0x566032[_0xede2('0x3d')]};return db[_0xede2('0x2c')]['count'](_0x2ebb6)[_0xede2('0x23')](function(_0x3a005d){_0x1fad97[_0xede2('0x1d')]=_0x3a005d;if(_0x2fa16d[_0xede2('0x33')][_0xede2('0x41')]){_0x566032['include']=[{'all':!![]}];}return db[_0xede2('0x2c')]['findAll'](_0x566032);})[_0xede2('0x23')](function(_0x424ee0){_0x1fad97[_0xede2('0x42')]=_0x424ee0;return _0x1fad97;})[_0xede2('0x23')](respondWithFilteredResult(_0xc767ff,_0x566032))[_0xede2('0x43')](handleError(_0xc767ff,null));};exports[_0xede2('0x44')]=function(_0x1ec64b,_0x36ff9e){var _0x25728b={'raw':!![],'where':{'id':_0x1ec64b[_0xede2('0x45')]['id']}},_0x56c1d2={};_0x56c1d2[_0xede2('0x31')]=_[_0xede2('0x46')](db[_0xede2('0x2c')][_0xede2('0x2d')]);_0x56c1d2[_0xede2('0x33')]=_[_0xede2('0x46')](_0x1ec64b[_0xede2('0x33')]);_0x56c1d2['filters']=_['intersection'](_0x56c1d2[_0xede2('0x31')],_0x56c1d2[_0xede2('0x33')]);_0x25728b[_0xede2('0x36')]=_['intersection'](_0x56c1d2[_0xede2('0x31')],qs[_0xede2('0x37')](_0x1ec64b['query']['fields']));_0x25728b[_0xede2('0x36')]=_0x25728b[_0xede2('0x36')][_0xede2('0x38')]?_0x25728b[_0xede2('0x36')]:_0x56c1d2['model'];if(_0x1ec64b[_0xede2('0x33')][_0xede2('0x41')]){_0x25728b[_0xede2('0x47')]=[{'all':!![]}];}_0x25728b=_[_0xede2('0x40')]({},_0x25728b,_0x1ec64b[_0xede2('0x48')]);return db['SquareOdbc']['find'](_0x25728b)['then'](handleEntityNotFound(_0x36ff9e,null))[_0xede2('0x23')](respondWithResult(_0x36ff9e,null))[_0xede2('0x43')](handleError(_0x36ff9e,null));};exports[_0xede2('0x49')]=function(_0x4e46b0,_0xb747bd){return db[_0xede2('0x2c')][_0xede2('0x49')](_0x4e46b0[_0xede2('0x4a')],{})[_0xede2('0x23')](function(_0x30a0c8){var _0x4c9934=_0x4e46b0[_0xede2('0x4b')][_0xede2('0x4c')]({'plain':!![]});if(!_0x4c9934)throw new Error(_0xede2('0x4d'));if(_0x4c9934[_0xede2('0x4e')]===_0xede2('0x4b')){var _0x1c9f03=_0x30a0c8['get']({'plain':!![]});var _0x47d2ee='ODBC';return db['UserProfileSection'][_0xede2('0x4f')]({'where':{'name':_0x47d2ee,'userProfileId':_0x4c9934[_0xede2('0x50')]},'raw':!![]})[_0xede2('0x23')](function(_0x3ba82c){if(_0x3ba82c&&_0x3ba82c['autoAssociation']===0x0){return db[_0xede2('0x26')][_0xede2('0x49')]({'name':_0x1c9f03[_0xede2('0x29')],'resourceId':_0x1c9f03['id'],'type':_0x3ba82c['name'],'sectionId':_0x3ba82c['id']},{})[_0xede2('0x23')](function(){return _0x30a0c8;});}else{return _0x30a0c8;}})[_0xede2('0x43')](function(_0x5183dc){logger['error'](_0xede2('0x51'),_0x5183dc);throw _0x5183dc;});}return _0x30a0c8;})[_0xede2('0x23')](respondWithResult(_0xb747bd,0xc9))[_0xede2('0x43')](handleError(_0xb747bd,null));};exports[_0xede2('0x22')]=function(_0x3382f2,_0x1f72fb){if(_0x3382f2[_0xede2('0x4a')]['id']){delete _0x3382f2['body']['id'];}return db[_0xede2('0x2c')]['find']({'where':{'id':_0x3382f2[_0xede2('0x45')]['id']}})[_0xede2('0x23')](handleEntityNotFound(_0x1f72fb,null))[_0xede2('0x23')](saveUpdates(_0x3382f2[_0xede2('0x4a')],null))['then'](respondWithResult(_0x1f72fb,null))['catch'](handleError(_0x1f72fb,null));};exports[_0xede2('0x24')]=function(_0x59040c,_0xfda6a0){return db[_0xede2('0x2c')][_0xede2('0x4f')]({'where':{'id':_0x59040c[_0xede2('0x45')]['id']}})[_0xede2('0x23')](handleEntityNotFound(_0xfda6a0,null))[_0xede2('0x23')](removeEntity(_0xfda6a0,null))[_0xede2('0x43')](handleError(_0xfda6a0,null));};exports[_0xede2('0x52')]=function(_0x12c979,_0x59a974,_0x2b4541){var _0x5b95b1;return db['SquareOdbc'][_0xede2('0x4f')]({'where':{'id':_0x12c979['params']['id']},'attributes':['id',_0xede2('0x53')]})[_0xede2('0x23')](handleEntityNotFound(_0x59a974,null))[_0xede2('0x23')](function(_0x1e06db){if(_0x1e06db){var _0x164889=require('odbc')();_0x164889['openSync'](_0x1e06db[_0xede2('0x53')]);_0x164889[_0xede2('0x54')]();return _0x1e06db;}})[_0xede2('0x23')](respondWithResult(_0x59a974,null))[_0xede2('0x43')](handleError(_0x59a974,null));};
\ No newline at end of file
+var _0xf7e4=['dsn','openSync','closeSync','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','sendStatus','status','end','json','undefined','limit','offset','count','set','reject','get','ODBC','UserProfileResource','destroy','then','name','send','index','SquareOdbc','rawAttributes','type','key','model','map','query','keys','attributes','intersection','fields','length','nolimit','sort','filters','pick','where','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','include','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','find','test'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf7e4,0xa5));var _0x4f7e=function(_0x4c99d5,_0x2be683){_0x4c99d5=_0x4c99d5-0x0;var _0x2447bc=_0xf7e4[_0x4c99d5];return _0x2447bc;};'use strict';var emlformat=require(_0x4f7e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4f7e('0x1'));var rp=require(_0x4f7e('0x2'));var moment=require(_0x4f7e('0x3'));var BPromise=require(_0x4f7e('0x4'));var Mustache=require(_0x4f7e('0x5'));var util=require(_0x4f7e('0x6'));var path=require('path');var sox=require(_0x4f7e('0x7'));var csv=require(_0x4f7e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4f7e('0x9'));var crypto=require(_0x4f7e('0xa'));var jsforce=require(_0x4f7e('0xb'));var deskjs=require(_0x4f7e('0xc'));var toCsv=require('to-csv');var querystring=require(_0x4f7e('0xd'));var Papa=require(_0x4f7e('0xe'));var Redis=require(_0x4f7e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4f7e('0x10'));var as=require(_0x4f7e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4f7e('0x12'));var utils=require(_0x4f7e('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ccfe2,_0x5bdeca){_0x5bdeca=_0x5bdeca||0xcc;return function(_0x3d2598){if(_0x3d2598){return _0x1ccfe2[_0x4f7e('0x14')](_0x5bdeca);}return _0x1ccfe2[_0x4f7e('0x15')](_0x5bdeca)[_0x4f7e('0x16')]();};}function respondWithResult(_0x26bc9e,_0x4db6ff){_0x4db6ff=_0x4db6ff||0xc8;return function(_0x3590bd){if(_0x3590bd){return _0x26bc9e[_0x4f7e('0x15')](_0x4db6ff)[_0x4f7e('0x17')](_0x3590bd);}};}function respondWithFilteredResult(_0x1a1dcb,_0x597fc9){return function(_0x53b531){if(_0x53b531){var _0x8a00d4=typeof _0x597fc9['offset']===_0x4f7e('0x18')&&typeof _0x597fc9[_0x4f7e('0x19')]==='undefined';var _0x223024=_0x53b531['count'];var _0x4c08c1=_0x8a00d4?0x0:_0x597fc9[_0x4f7e('0x1a')];var _0x38c6c3=_0x8a00d4?_0x53b531[_0x4f7e('0x1b')]:_0x597fc9['offset']+_0x597fc9['limit'];var _0x589de9;if(_0x38c6c3>=_0x223024){_0x38c6c3=_0x223024;_0x589de9=0xc8;}else{_0x589de9=0xce;}_0x1a1dcb['status'](_0x589de9);return _0x1a1dcb[_0x4f7e('0x1c')]('Content-Range',_0x4c08c1+'-'+_0x38c6c3+'/'+_0x223024)[_0x4f7e('0x17')](_0x53b531);}return null;};}function patchUpdates(_0x326478){return function(_0xb79afe){try{jsonpatch['apply'](_0xb79afe,_0x326478,!![]);}catch(_0x2e599b){return BPromise[_0x4f7e('0x1d')](_0x2e599b);}return _0xb79afe['save']();};}function saveUpdates(_0xea6a5,_0xf4bf22){return function(_0x418870){if(_0x418870){return _0x418870['update'](_0xea6a5)['then'](function(_0x27653c){return _0x27653c;});}return null;};}function removeEntity(_0x516d99,_0x3d90c2){return function(_0x176bad){if(_0x176bad){return _0x176bad['destroy']()['then'](function(){var _0x290538=_0x176bad[_0x4f7e('0x1e')]({'plain':!![]});var _0x58569f=_0x4f7e('0x1f');return db[_0x4f7e('0x20')][_0x4f7e('0x21')]({'where':{'type':_0x58569f,'resourceId':_0x290538['id']}})[_0x4f7e('0x22')](function(){return _0x176bad;});})[_0x4f7e('0x22')](function(){_0x516d99[_0x4f7e('0x15')](0xcc)[_0x4f7e('0x16')]();});}};}function handleEntityNotFound(_0x57d293,_0x10536e){return function(_0x5315cf){if(!_0x5315cf){_0x57d293[_0x4f7e('0x14')](0x194);}return _0x5315cf;};}function handleError(_0x472040,_0x5d2454){_0x5d2454=_0x5d2454||0x1f4;return function(_0x236ab7){logger['error'](_0x236ab7['stack']);if(_0x236ab7[_0x4f7e('0x23')]){delete _0x236ab7['name'];}_0x472040[_0x4f7e('0x15')](_0x5d2454)[_0x4f7e('0x24')](_0x236ab7);};}exports[_0x4f7e('0x25')]=function(_0x4f17e7,_0x11bd09){var _0x3c6f96={},_0x27c588={},_0x1450d5={'count':0x0,'rows':[]};var _0x37c054=_['map'](db[_0x4f7e('0x26')][_0x4f7e('0x27')],function(_0x107d69){return{'name':_0x107d69['fieldName'],'type':_0x107d69[_0x4f7e('0x28')][_0x4f7e('0x29')]};});_0x27c588[_0x4f7e('0x2a')]=_[_0x4f7e('0x2b')](_0x37c054,_0x4f7e('0x23'));_0x27c588[_0x4f7e('0x2c')]=_[_0x4f7e('0x2d')](_0x4f17e7['query']);_0x27c588['filters']=_['intersection'](_0x27c588[_0x4f7e('0x2a')],_0x27c588[_0x4f7e('0x2c')]);_0x3c6f96[_0x4f7e('0x2e')]=_[_0x4f7e('0x2f')](_0x27c588[_0x4f7e('0x2a')],qs[_0x4f7e('0x30')](_0x4f17e7[_0x4f7e('0x2c')][_0x4f7e('0x30')]));_0x3c6f96['attributes']=_0x3c6f96[_0x4f7e('0x2e')][_0x4f7e('0x31')]?_0x3c6f96['attributes']:_0x27c588[_0x4f7e('0x2a')];if(!_0x4f17e7[_0x4f7e('0x2c')]['hasOwnProperty'](_0x4f7e('0x32'))){_0x3c6f96[_0x4f7e('0x19')]=qs[_0x4f7e('0x19')](_0x4f17e7[_0x4f7e('0x2c')][_0x4f7e('0x19')]);_0x3c6f96['offset']=qs['offset'](_0x4f17e7[_0x4f7e('0x2c')][_0x4f7e('0x1a')]);}_0x3c6f96['order']=qs[_0x4f7e('0x33')](_0x4f17e7[_0x4f7e('0x2c')][_0x4f7e('0x33')]);_0x3c6f96['where']=qs[_0x4f7e('0x34')](_[_0x4f7e('0x35')](_0x4f17e7['query'],_0x27c588[_0x4f7e('0x34')]),_0x37c054);if(_0x4f17e7[_0x4f7e('0x2c')]['filter']){_0x3c6f96[_0x4f7e('0x36')]=_[_0x4f7e('0x37')](_0x3c6f96[_0x4f7e('0x36')],{'$or':_[_0x4f7e('0x2b')](_0x37c054,function(_0x2296d3){if(_0x2296d3[_0x4f7e('0x28')]!==_0x4f7e('0x38')){var _0x542dc5={};_0x542dc5[_0x2296d3['name']]={'$like':'%'+_0x4f17e7['query'][_0x4f7e('0x39')]+'%'};return _0x542dc5;}})});}_0x3c6f96=_[_0x4f7e('0x37')]({},_0x3c6f96,_0x4f17e7['options']);var _0x2e0b80={'where':_0x3c6f96['where']};return db[_0x4f7e('0x26')][_0x4f7e('0x1b')](_0x2e0b80)[_0x4f7e('0x22')](function(_0x19d3eb){_0x1450d5[_0x4f7e('0x1b')]=_0x19d3eb;if(_0x4f17e7[_0x4f7e('0x2c')][_0x4f7e('0x3a')]){_0x3c6f96['include']=[{'all':!![]}];}return db['SquareOdbc'][_0x4f7e('0x3b')](_0x3c6f96);})[_0x4f7e('0x22')](function(_0x3868c8){_0x1450d5[_0x4f7e('0x3c')]=_0x3868c8;return _0x1450d5;})['then'](respondWithFilteredResult(_0x11bd09,_0x3c6f96))[_0x4f7e('0x3d')](handleError(_0x11bd09,null));};exports[_0x4f7e('0x3e')]=function(_0x13a0d9,_0x24e384){var _0x49fcb9={'raw':!![],'where':{'id':_0x13a0d9[_0x4f7e('0x3f')]['id']}},_0x29d86f={};_0x29d86f['model']=_[_0x4f7e('0x2d')](db['SquareOdbc'][_0x4f7e('0x27')]);_0x29d86f['query']=_[_0x4f7e('0x2d')](_0x13a0d9[_0x4f7e('0x2c')]);_0x29d86f['filters']=_[_0x4f7e('0x2f')](_0x29d86f[_0x4f7e('0x2a')],_0x29d86f[_0x4f7e('0x2c')]);_0x49fcb9[_0x4f7e('0x2e')]=_['intersection'](_0x29d86f['model'],qs[_0x4f7e('0x30')](_0x13a0d9['query']['fields']));_0x49fcb9[_0x4f7e('0x2e')]=_0x49fcb9['attributes'][_0x4f7e('0x31')]?_0x49fcb9[_0x4f7e('0x2e')]:_0x29d86f[_0x4f7e('0x2a')];if(_0x13a0d9[_0x4f7e('0x2c')]['includeAll']){_0x49fcb9[_0x4f7e('0x40')]=[{'all':!![]}];}_0x49fcb9=_[_0x4f7e('0x37')]({},_0x49fcb9,_0x13a0d9[_0x4f7e('0x41')]);return db[_0x4f7e('0x26')]['find'](_0x49fcb9)['then'](handleEntityNotFound(_0x24e384,null))[_0x4f7e('0x22')](respondWithResult(_0x24e384,null))['catch'](handleError(_0x24e384,null));};exports[_0x4f7e('0x42')]=function(_0x5d6f34,_0x21186f){return db['SquareOdbc'][_0x4f7e('0x42')](_0x5d6f34['body'],{})[_0x4f7e('0x22')](function(_0xcc1524){var _0x1dcb5f=_0x5d6f34[_0x4f7e('0x43')][_0x4f7e('0x1e')]({'plain':!![]});if(!_0x1dcb5f)throw new Error(_0x4f7e('0x44'));if(_0x1dcb5f[_0x4f7e('0x45')]===_0x4f7e('0x43')){var _0x1761df=_0xcc1524['get']({'plain':!![]});var _0x57bec2='ODBC';return db[_0x4f7e('0x46')]['find']({'where':{'name':_0x57bec2,'userProfileId':_0x1dcb5f[_0x4f7e('0x47')]},'raw':!![]})[_0x4f7e('0x22')](function(_0x26bc90){if(_0x26bc90&&_0x26bc90[_0x4f7e('0x48')]===0x0){return db[_0x4f7e('0x20')][_0x4f7e('0x42')]({'name':_0x1761df[_0x4f7e('0x23')],'resourceId':_0x1761df['id'],'type':_0x26bc90['name'],'sectionId':_0x26bc90['id']},{})[_0x4f7e('0x22')](function(){return _0xcc1524;});}else{return _0xcc1524;}})[_0x4f7e('0x3d')](function(_0x1fdc2c){logger['error'](_0x4f7e('0x49'),_0x1fdc2c);throw _0x1fdc2c;});}return _0xcc1524;})[_0x4f7e('0x22')](respondWithResult(_0x21186f,0xc9))['catch'](handleError(_0x21186f,null));};exports[_0x4f7e('0x4a')]=function(_0x1a8073,_0x10162f){if(_0x1a8073[_0x4f7e('0x4b')]['id']){delete _0x1a8073[_0x4f7e('0x4b')]['id'];}return db[_0x4f7e('0x26')][_0x4f7e('0x4c')]({'where':{'id':_0x1a8073[_0x4f7e('0x3f')]['id']}})['then'](handleEntityNotFound(_0x10162f,null))[_0x4f7e('0x22')](saveUpdates(_0x1a8073['body'],null))[_0x4f7e('0x22')](respondWithResult(_0x10162f,null))['catch'](handleError(_0x10162f,null));};exports['destroy']=function(_0x33da77,_0x213525){return db[_0x4f7e('0x26')][_0x4f7e('0x4c')]({'where':{'id':_0x33da77[_0x4f7e('0x3f')]['id']}})[_0x4f7e('0x22')](handleEntityNotFound(_0x213525,null))[_0x4f7e('0x22')](removeEntity(_0x213525,null))[_0x4f7e('0x3d')](handleError(_0x213525,null));};exports[_0x4f7e('0x4d')]=function(_0x47a5fe,_0x3608a8,_0x2d50c5){var _0x52197a;return db['SquareOdbc']['find']({'where':{'id':_0x47a5fe['params']['id']},'attributes':['id',_0x4f7e('0x4e')]})[_0x4f7e('0x22')](handleEntityNotFound(_0x3608a8,null))['then'](function(_0xa2cd6a){if(_0xa2cd6a){var _0x3f4743=require('odbc')();_0x3f4743[_0x4f7e('0x4f')](_0xa2cd6a[_0x4f7e('0x4e')]);_0x3f4743[_0x4f7e('0x50')]();return _0xa2cd6a;}})['then'](respondWithResult(_0x3608a8,null))[_0x4f7e('0x3d')](handleError(_0x3608a8,null));};
\ No newline at end of file
index 29022ac..ed5fde8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ec=['define','SquareOdbc','square_odbc','lodash','util','api','moment','request-promise','path','./squareOdbc.attributes','exports'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xa2ec,0x100));var _0xca2e=function(_0x4e1a49,_0x4da738){_0x4e1a49=_0x4e1a49-0x0;var _0x136aae=_0xa2ec[_0x4e1a49];return _0x136aae;};'use strict';var _=require(_0xca2e('0x0'));var util=require(_0xca2e('0x1'));var logger=require('../../config/logger')(_0xca2e('0x2'));var moment=require(_0xca2e('0x3'));var BPromise=require('bluebird');var rp=require(_0xca2e('0x4'));var fs=require('fs');var path=require(_0xca2e('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xca2e('0x6'));module[_0xca2e('0x7')]=function(_0x124a74,_0x6f0518){return _0x124a74[_0xca2e('0x8')](_0xca2e('0x9'),attributes,{'tableName':_0xca2e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x12f2=['api','moment','bluebird','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','SquareOdbc','square_odbc','lodash','util','../../config/logger'];(function(_0x44216d,_0x4938a7){var _0xeca523=function(_0x11faf1){while(--_0x11faf1){_0x44216d['push'](_0x44216d['shift']());}};_0xeca523(++_0x4938a7);}(_0x12f2,0x128));var _0x212f=function(_0x4f0177,_0xd0b62){_0x4f0177=_0x4f0177-0x0;var _0x4cfb4b=_0x12f2[_0x4f0177];return _0x4cfb4b;};'use strict';var _=require(_0x212f('0x0'));var util=require(_0x212f('0x1'));var logger=require(_0x212f('0x2'))(_0x212f('0x3'));var moment=require(_0x212f('0x4'));var BPromise=require(_0x212f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x212f('0x6'));var rimraf=require(_0x212f('0x7'));var config=require(_0x212f('0x8'));var attributes=require(_0x212f('0x9'));module[_0x212f('0xa')]=function(_0x4213aa,_0xc701e0){return _0x4213aa['define'](_0x212f('0xb'),attributes,{'tableName':_0x212f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ae009f9..dfd579e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbe4=['moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','SquareOdbc,\x20%s,\x20%s','message','ShowSquareOdbc','SquareOdbc','find','raw','options','where','attributes','include','map','model','stringify','lodash','util'];(function(_0x45c05f,_0x2132b0){var _0x901479=function(_0x1d4d38){while(--_0x1d4d38){_0x45c05f['push'](_0x45c05f['shift']());}};_0x901479(++_0x2132b0);}(_0xfbe4,0x17e));var _0x4fbe=function(_0x315ac6,_0x1c0f09){_0x315ac6=_0x315ac6-0x0;var _0x48c90d=_0xfbe4[_0x315ac6];return _0x48c90d;};'use strict';var _=require(_0x4fbe('0x0'));var util=require(_0x4fbe('0x1'));var moment=require(_0x4fbe('0x2'));var BPromise=require('bluebird');var rs=require(_0x4fbe('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4fbe('0x4'))['db'];var utils=require(_0x4fbe('0x5'));var logger=require(_0x4fbe('0x6'))(_0x4fbe('0x7'));var config=require(_0x4fbe('0x8'));var jayson=require(_0x4fbe('0x9'));var client=jayson[_0x4fbe('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d196b,_0x526955,_0x599fa0){return new BPromise(function(_0x8893b8,_0x445a3e){return client[_0x4fbe('0xb')](_0x4d196b,_0x599fa0)[_0x4fbe('0xc')](function(_0x6c8dea){logger[_0x4fbe('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x526955,'request\x20sent');logger[_0x4fbe('0xe')](_0x4fbe('0xf'),_0x526955,_0x4fbe('0x10'),JSON['stringify'](_0x6c8dea));if(_0x6c8dea[_0x4fbe('0x11')]){if(_0x6c8dea[_0x4fbe('0x11')][_0x4fbe('0x12')]===0x1f4){logger[_0x4fbe('0x11')](_0x4fbe('0x13'),_0x526955,_0x6c8dea[_0x4fbe('0x11')][_0x4fbe('0x14')]);return _0x445a3e(_0x6c8dea[_0x4fbe('0x11')]['message']);}logger[_0x4fbe('0x11')](_0x4fbe('0x13'),_0x526955,_0x6c8dea[_0x4fbe('0x11')][_0x4fbe('0x14')]);return _0x8893b8(_0x6c8dea['error'][_0x4fbe('0x14')]);}else{logger[_0x4fbe('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x526955,_0x4fbe('0x10'));_0x8893b8(_0x6c8dea['result'][_0x4fbe('0x14')]);}})['catch'](function(_0x3b41af){logger[_0x4fbe('0x11')](_0x4fbe('0x13'),_0x526955,_0x3b41af);_0x445a3e(_0x3b41af);});});}exports[_0x4fbe('0x15')]=function(_0x184a6b){var _0x1ba841=this;return new Promise(function(_0x274517,_0x3702a5){return db[_0x4fbe('0x16')][_0x4fbe('0x17')]({'raw':_0x184a6b['options']?_0x184a6b['options'][_0x4fbe('0x18')]===undefined?!![]:![]:!![],'where':_0x184a6b['options']?_0x184a6b[_0x4fbe('0x19')][_0x4fbe('0x1a')]||null:null,'attributes':_0x184a6b[_0x4fbe('0x19')]?_0x184a6b[_0x4fbe('0x19')][_0x4fbe('0x1b')]||null:null,'include':_0x184a6b[_0x4fbe('0x19')]?_0x184a6b[_0x4fbe('0x19')][_0x4fbe('0x1c')]?_[_0x4fbe('0x1d')](_0x184a6b[_0x4fbe('0x19')][_0x4fbe('0x1c')],function(_0x2b3364){return{'model':db[_0x2b3364[_0x4fbe('0x1e')]],'as':_0x2b3364['as'],'attributes':_0x2b3364[_0x4fbe('0x1b')],'include':_0x2b3364[_0x4fbe('0x1c')]?_[_0x4fbe('0x1d')](_0x2b3364[_0x4fbe('0x1c')],function(_0x29e4e2){return{'model':db[_0x29e4e2['model']],'as':_0x29e4e2['as'],'attributes':_0x29e4e2[_0x4fbe('0x1b')],'include':_0x29e4e2[_0x4fbe('0x1c')]?_[_0x4fbe('0x1d')](_0x29e4e2[_0x4fbe('0x1c')],function(_0x4413e7){return{'model':db[_0x4413e7[_0x4fbe('0x1e')]],'as':_0x4413e7['as'],'attributes':_0x4413e7['attributes']};}):[]};}):[]};}):[]:[]})[_0x4fbe('0xc')](function(_0xa5dff8){logger[_0x4fbe('0xd')](_0x4fbe('0x15'),_0x184a6b);logger[_0x4fbe('0xe')]('ShowSquareOdbc',_0x184a6b,JSON[_0x4fbe('0x1f')](_0xa5dff8));_0x274517(_0xa5dff8);})['catch'](function(_0x56668c){logger['error']('ShowSquareOdbc',_0x56668c['message'],_0x184a6b);_0x3702a5(_0x1ba841[_0x4fbe('0x11')](0x1f4,_0x56668c[_0x4fbe('0x14')]));});});};
\ No newline at end of file
+var _0xf188=['bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','find','options','attributes','map','include','model','ShowSquareOdbc','lodash','util'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0xf188,0x136));var _0x8f18=function(_0x5e9701,_0x2656fa){_0x5e9701=_0x5e9701-0x0;var _0x3e5d44=_0xf188[_0x5e9701];return _0x3e5d44;};'use strict';var _=require(_0x8f18('0x0'));var util=require(_0x8f18('0x1'));var moment=require('moment');var BPromise=require(_0x8f18('0x2'));var rs=require(_0x8f18('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8f18('0x4'));var logger=require(_0x8f18('0x5'))(_0x8f18('0x6'));var config=require('../../config/environment');var jayson=require(_0x8f18('0x7'));var client=jayson['client'][_0x8f18('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5400a3,_0x1b58bd,_0x4f6882){return new BPromise(function(_0x2ef458,_0x44629f){return client['request'](_0x5400a3,_0x4f6882)['then'](function(_0x1a794d){logger['info'](_0x8f18('0x9'),_0x1b58bd,_0x8f18('0xa'));logger[_0x8f18('0xb')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x1b58bd,'request\x20sent',JSON[_0x8f18('0xc')](_0x1a794d));if(_0x1a794d['error']){if(_0x1a794d[_0x8f18('0xd')][_0x8f18('0xe')]===0x1f4){logger[_0x8f18('0xd')](_0x8f18('0x9'),_0x1b58bd,_0x1a794d['error'][_0x8f18('0xf')]);return _0x44629f(_0x1a794d['error']['message']);}logger[_0x8f18('0xd')](_0x8f18('0x9'),_0x1b58bd,_0x1a794d[_0x8f18('0xd')][_0x8f18('0xf')]);return _0x2ef458(_0x1a794d[_0x8f18('0xd')][_0x8f18('0xf')]);}else{logger[_0x8f18('0x10')](_0x8f18('0x9'),_0x1b58bd,'request\x20sent');_0x2ef458(_0x1a794d[_0x8f18('0x11')][_0x8f18('0xf')]);}})[_0x8f18('0x12')](function(_0x3f7a60){logger['error'](_0x8f18('0x9'),_0x1b58bd,_0x3f7a60);_0x44629f(_0x3f7a60);});});}exports['ShowSquareOdbc']=function(_0x3bc610){var _0x4948e4=this;return new Promise(function(_0x2d3f22,_0x253038){return db['SquareOdbc'][_0x8f18('0x13')]({'raw':_0x3bc610[_0x8f18('0x14')]?_0x3bc610[_0x8f18('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x3bc610[_0x8f18('0x14')]?_0x3bc610[_0x8f18('0x14')]['where']||null:null,'attributes':_0x3bc610['options']?_0x3bc610['options'][_0x8f18('0x15')]||null:null,'include':_0x3bc610[_0x8f18('0x14')]?_0x3bc610[_0x8f18('0x14')]['include']?_[_0x8f18('0x16')](_0x3bc610['options'][_0x8f18('0x17')],function(_0x570f42){return{'model':db[_0x570f42[_0x8f18('0x18')]],'as':_0x570f42['as'],'attributes':_0x570f42[_0x8f18('0x15')],'include':_0x570f42[_0x8f18('0x17')]?_[_0x8f18('0x16')](_0x570f42['include'],function(_0x110c03){return{'model':db[_0x110c03[_0x8f18('0x18')]],'as':_0x110c03['as'],'attributes':_0x110c03['attributes'],'include':_0x110c03[_0x8f18('0x17')]?_[_0x8f18('0x16')](_0x110c03[_0x8f18('0x17')],function(_0x20d0b2){return{'model':db[_0x20d0b2[_0x8f18('0x18')]],'as':_0x20d0b2['as'],'attributes':_0x20d0b2[_0x8f18('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5a8095){logger[_0x8f18('0x10')](_0x8f18('0x19'),_0x3bc610);logger[_0x8f18('0xb')](_0x8f18('0x19'),_0x3bc610,JSON[_0x8f18('0xc')](_0x5a8095));_0x2d3f22(_0x5a8095);})[_0x8f18('0x12')](function(_0x3d9580){logger[_0x8f18('0xd')](_0x8f18('0x19'),_0x3d9580[_0x8f18('0xf')],_0x3bc610);_0x253038(_0x4948e4[_0x8f18('0xd')](0x1f4,_0x3d9580[_0x8f18('0xf')]));});});};
\ No newline at end of file
index dfeb2ae..542c6bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa969=['post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0xa51b9e,_0x2603c7){var _0x1c55a3=function(_0x3919a9){while(--_0x3919a9){_0xa51b9e['push'](_0xa51b9e['shift']());}};_0x1c55a3(++_0x2603c7);}(_0xa969,0x1bf));var _0x9a96=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa969[_0x38a7ac];return _0x53061a;};'use strict';var multer=require(_0x9a96('0x0'));var util=require(_0x9a96('0x1'));var path=require(_0x9a96('0x2'));var timeout=require(_0x9a96('0x3'));var express=require(_0x9a96('0x4'));var router=express['Router']();var fs_extra=require(_0x9a96('0x5'));var auth=require(_0x9a96('0x6'));var interaction=require(_0x9a96('0x7'));var config=require('../../config/environment');var controller=require('./squareProject.controller');router[_0x9a96('0x8')]('/',auth[_0x9a96('0x9')](),controller[_0x9a96('0xa')]);router[_0x9a96('0x8')](_0x9a96('0xb'),auth[_0x9a96('0x9')](),controller[_0x9a96('0xc')]);router[_0x9a96('0xd')]('/',auth[_0x9a96('0x9')](),controller[_0x9a96('0xe')]);router[_0x9a96('0xf')]('/:id',auth[_0x9a96('0x9')](),controller[_0x9a96('0x10')]);router[_0x9a96('0x11')](_0x9a96('0xb'),auth['isAuthenticated'](),controller[_0x9a96('0x12')]);module[_0x9a96('0x13')]=router;
\ No newline at end of file
+var _0x2039=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','post','create'];(function(_0x533d16,_0x2d7743){var _0x2d710d=function(_0x151b79){while(--_0x151b79){_0x533d16['push'](_0x533d16['shift']());}};_0x2d710d(++_0x2d7743);}(_0x2039,0x1e8));var _0x9203=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x2039[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require(_0x9203('0x0'));var util=require(_0x9203('0x1'));var path=require(_0x9203('0x2'));var timeout=require(_0x9203('0x3'));var express=require(_0x9203('0x4'));var router=express['Router']();var fs_extra=require(_0x9203('0x5'));var auth=require(_0x9203('0x6'));var interaction=require(_0x9203('0x7'));var config=require(_0x9203('0x8'));var controller=require(_0x9203('0x9'));router[_0x9203('0xa')]('/',auth[_0x9203('0xb')](),controller[_0x9203('0xc')]);router['get'](_0x9203('0xd'),auth[_0x9203('0xb')](),controller['show']);router[_0x9203('0xe')]('/',auth[_0x9203('0xb')](),controller[_0x9203('0xf')]);router[_0x9203('0x10')](_0x9203('0xd'),auth[_0x9203('0xb')](),controller[_0x9203('0x11')]);router[_0x9203('0x12')](_0x9203('0xd'),auth['isAuthenticated'](),controller[_0x9203('0x13')]);module[_0x9203('0x14')]=router;
\ No newline at end of file
index 3f08705..68ae5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8277=['TEXT','long','getDataValue','preproduction','toString','BLOB','production','utf8','DATE','exports','STRING'];(function(_0x4c0af0,_0x1bdfa8){var _0x98249e=function(_0xfc85){while(--_0xfc85){_0x4c0af0['push'](_0x4c0af0['shift']());}};_0x98249e(++_0x1bdfa8);}(_0x8277,0xcf));var _0x7827=function(_0x2d486b,_0x5f213c){_0x2d486b=_0x2d486b-0x0;var _0x4291d1=_0x8277[_0x2d486b];return _0x4291d1;};'use strict';var Sequelize=require('sequelize');module[_0x7827('0x0')]={'name':{'type':Sequelize[_0x7827('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x7827('0x1')]},'notes':{'type':Sequelize[_0x7827('0x2')]},'preproduction':{'type':Sequelize['BLOB'](_0x7827('0x3')),'get':function(){if(this[_0x7827('0x4')]('preproduction')){return this[_0x7827('0x4')](_0x7827('0x5'))[_0x7827('0x6')]('utf8');}}},'production':{'type':Sequelize[_0x7827('0x7')](_0x7827('0x3')),'get':function(){if(this[_0x7827('0x4')](_0x7827('0x8'))){return this[_0x7827('0x4')](_0x7827('0x8'))[_0x7827('0x6')](_0x7827('0x9'));}}},'savedAt':{'type':Sequelize[_0x7827('0xa')]},'publishedAt':{'type':Sequelize[_0x7827('0xa')]}};
\ No newline at end of file
+var _0x95b5=['DATE','sequelize','STRING','preproduction','getDataValue','toString','production'];(function(_0x36dc20,_0x6e6f2e){var _0x1a5b8b=function(_0x55b62b){while(--_0x55b62b){_0x36dc20['push'](_0x36dc20['shift']());}};_0x1a5b8b(++_0x6e6f2e);}(_0x95b5,0x143));var _0x595b=function(_0x503679,_0x1d99bf){_0x503679=_0x503679-0x0;var _0x2c6c2b=_0x95b5[_0x503679];return _0x2c6c2b;};'use strict';var Sequelize=require(_0x595b('0x0'));module['exports']={'name':{'type':Sequelize[_0x595b('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize['BLOB']('long'),'get':function(){if(this['getDataValue'](_0x595b('0x2'))){return this[_0x595b('0x3')](_0x595b('0x2'))[_0x595b('0x4')]('utf8');}}},'production':{'type':Sequelize['BLOB']('long'),'get':function(){if(this[_0x595b('0x3')](_0x595b('0x5'))){return this[_0x595b('0x3')](_0x595b('0x5'))[_0x595b('0x4')]('utf8');}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x595b('0x6')]}};
\ No newline at end of file
index abf97c2..ffe2487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4153=['findAll','rows','catch','show','params','keys','find','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','pick','production','destroy','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','register','json','undefined','limit','count','offset','set','Content-Range','update','then','get','SquareProjects','UserProfileResource','publish','agi','stringify','status','sendStatus','stack','name','map','SquareProject','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include'];(function(_0x110911,_0x15107b){var _0x49a8ad=function(_0x4ca8a4){while(--_0x4ca8a4){_0x110911['push'](_0x110911['shift']());}};_0x49a8ad(++_0x15107b);}(_0x4153,0x12d));var _0x3415=function(_0x1457b9,_0x53c793){_0x1457b9=_0x1457b9-0x0;var _0x321130=_0x4153[_0x1457b9];return _0x321130;};'use strict';var _=require(_0x3415('0x0'));var Redis=require(_0x3415('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x3415('0x2'))(_0x3415('0x3'));var config=require(_0x3415('0x4'));var db=require(_0x3415('0x5'))['db'];config['redis']=_[_0x3415('0x6')](config[_0x3415('0x7')],{'host':_0x3415('0x8'),'port':0x18eb});var socket=require(_0x3415('0x9'))(new Redis(config['redis']));require(_0x3415('0xa'))[_0x3415('0xb')](socket);function respondWithResult(_0x5d154c,_0x3a4dec){_0x3a4dec=_0x3a4dec||0xc8;return function(_0x122f1c){if(_0x122f1c){return _0x5d154c['status'](_0x3a4dec)[_0x3415('0xc')](_0x122f1c);}};}function respondWithFilteredResult(_0x3a4426,_0x35b4c1){return function(_0x228840){if(_0x228840){var _0x52d117=typeof _0x35b4c1['offset']===_0x3415('0xd')&&typeof _0x35b4c1[_0x3415('0xe')]===_0x3415('0xd');var _0x5c3af1=_0x228840[_0x3415('0xf')];var _0x536007=_0x52d117?0x0:_0x35b4c1[_0x3415('0x10')];var _0x5aa472=_0x52d117?_0x228840[_0x3415('0xf')]:_0x35b4c1[_0x3415('0x10')]+_0x35b4c1[_0x3415('0xe')];var _0x239c01;if(_0x5aa472>=_0x5c3af1){_0x5aa472=_0x5c3af1;_0x239c01=0xc8;}else{_0x239c01=0xce;}_0x3a4426['status'](_0x239c01);return _0x3a4426[_0x3415('0x11')](_0x3415('0x12'),_0x536007+'-'+_0x5aa472+'/'+_0x5c3af1)[_0x3415('0xc')](_0x228840);}return null;};}function saveUpdates(_0x434201){return function(_0x1c2a93){if(_0x1c2a93){return _0x1c2a93[_0x3415('0x13')](_0x434201)['then'](function(_0x138812){return _0x138812;});}return null;};}function removeEntity(_0x3d9df1){return function(_0x4252e1){if(_0x4252e1){return _0x4252e1['destroy']()[_0x3415('0x14')](function(){var _0x367328=_0x4252e1[_0x3415('0x15')]({'plain':!![]});var _0x433323=_0x3415('0x16');return db[_0x3415('0x17')]['destroy']({'where':{'type':_0x433323,'resourceId':_0x367328['id']}})[_0x3415('0x14')](function(){return _0x4252e1;});})['then'](function(){var _0x2f24d2=new Redis(config['redis']);_0x2f24d2[_0x3415('0x18')](_0x3415('0x19'),JSON[_0x3415('0x1a')]({'id':_0x4252e1['id'],'deleted':!![]}));})[_0x3415('0x14')](function(){_0x3d9df1[_0x3415('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xde07f1){return function(_0x480084){if(!_0x480084){_0xde07f1[_0x3415('0x1c')](0x194);}return _0x480084;};}function handleError(_0x26fd82,_0x4f2aea){_0x4f2aea=_0x4f2aea||0x1f4;return function(_0x4a5d1b){logger['error'](_0x4a5d1b[_0x3415('0x1d')]);if(_0x4a5d1b[_0x3415('0x1e')]){delete _0x4a5d1b[_0x3415('0x1e')];}_0x26fd82[_0x3415('0x1b')](_0x4f2aea)['send'](_0x4a5d1b);};}exports['index']=function(_0xa4ae10,_0x1dbb67){var _0x753b1f={},_0xd217df={},_0x6f3f1b={'count':0x0,'rows':[]};var _0x5d6732=_[_0x3415('0x1f')](db[_0x3415('0x20')][_0x3415('0x21')],function(_0x22b693){return{'name':_0x22b693['fieldName'],'type':_0x22b693[_0x3415('0x22')][_0x3415('0x23')]};});_0xd217df[_0x3415('0x24')]=_[_0x3415('0x1f')](_0x5d6732,_0x3415('0x1e'));_0xd217df[_0x3415('0x25')]=_['keys'](_0xa4ae10[_0x3415('0x25')]);_0xd217df[_0x3415('0x26')]=_[_0x3415('0x27')](_0xd217df[_0x3415('0x24')],_0xd217df['query']);_0x753b1f[_0x3415('0x28')]=_[_0x3415('0x27')](_0xd217df[_0x3415('0x24')],qs['fields'](_0xa4ae10['query'][_0x3415('0x29')]));_0x753b1f[_0x3415('0x28')]=_0x753b1f[_0x3415('0x28')][_0x3415('0x2a')]?_0x753b1f['attributes']:_0xd217df[_0x3415('0x24')];if(!_0xa4ae10['query'][_0x3415('0x2b')](_0x3415('0x2c'))){_0x753b1f[_0x3415('0xe')]=qs[_0x3415('0xe')](_0xa4ae10[_0x3415('0x25')]['limit']);_0x753b1f[_0x3415('0x10')]=qs[_0x3415('0x10')](_0xa4ae10['query'][_0x3415('0x10')]);}_0x753b1f[_0x3415('0x2d')]=qs['sort'](_0xa4ae10[_0x3415('0x25')][_0x3415('0x2e')]);_0x753b1f['where']=qs[_0x3415('0x26')](_['pick'](_0xa4ae10[_0x3415('0x25')],_0xd217df['filters']),_0x5d6732);if(_0xa4ae10[_0x3415('0x25')]['filter']){_0x753b1f[_0x3415('0x2f')]=_[_0x3415('0x30')](_0x753b1f['where'],{'$or':_[_0x3415('0x1f')](_0x5d6732,function(_0x58304e){if(_0x58304e['type']!==_0x3415('0x31')){var _0x1c5dc9={};_0x1c5dc9[_0x58304e['name']]={'$like':'%'+_0xa4ae10['query'][_0x3415('0x32')]+'%'};return _0x1c5dc9;}})});}_0x753b1f=_[_0x3415('0x30')]({},_0x753b1f,_0xa4ae10[_0x3415('0x33')]);var _0x5ce8d9={'where':_0x753b1f['where']};return db['SquareProject'][_0x3415('0xf')](_0x5ce8d9)[_0x3415('0x14')](function(_0x3a8f0c){_0x6f3f1b['count']=_0x3a8f0c;if(_0xa4ae10[_0x3415('0x25')][_0x3415('0x34')]){_0x753b1f[_0x3415('0x35')]=[{'all':!![]}];}return db[_0x3415('0x20')][_0x3415('0x36')](_0x753b1f);})['then'](function(_0x45f31a){_0x6f3f1b[_0x3415('0x37')]=_0x45f31a;return _0x6f3f1b;})[_0x3415('0x14')](respondWithFilteredResult(_0x1dbb67,_0x753b1f))[_0x3415('0x38')](handleError(_0x1dbb67,null));};exports[_0x3415('0x39')]=function(_0xe1d015,_0x276eec){var _0x394b71={'raw':![],'where':{'id':_0xe1d015[_0x3415('0x3a')]['id']}},_0x546985={};_0x546985[_0x3415('0x24')]=_[_0x3415('0x3b')](db[_0x3415('0x20')][_0x3415('0x21')]);_0x546985[_0x3415('0x25')]=_[_0x3415('0x3b')](_0xe1d015['query']);_0x546985[_0x3415('0x26')]=_[_0x3415('0x27')](_0x546985['model'],_0x546985[_0x3415('0x25')]);_0x394b71['attributes']=_[_0x3415('0x27')](_0x546985[_0x3415('0x24')],qs[_0x3415('0x29')](_0xe1d015[_0x3415('0x25')][_0x3415('0x29')]));_0x394b71['attributes']=_0x394b71[_0x3415('0x28')][_0x3415('0x2a')]?_0x394b71[_0x3415('0x28')]:_0x546985[_0x3415('0x24')];if(_0xe1d015[_0x3415('0x25')]['includeAll']){_0x394b71['include']=[{'all':!![]}];}_0x394b71=_['merge']({},_0x394b71,_0xe1d015[_0x3415('0x33')]);return db[_0x3415('0x20')][_0x3415('0x3c')](_0x394b71)[_0x3415('0x14')](handleEntityNotFound(_0x276eec,null))[_0x3415('0x14')](respondWithResult(_0x276eec,null))[_0x3415('0x38')](handleError(_0x276eec,null));};exports['create']=function(_0x4acef0,_0x277408){return db[_0x3415('0x20')]['create'](_0x4acef0[_0x3415('0x3d')],{})[_0x3415('0x14')](function(_0x43459c){var _0x51c400=_0x4acef0[_0x3415('0x3e')][_0x3415('0x15')]({'plain':!![]});if(!_0x51c400)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x51c400[_0x3415('0x3f')]==='user'){var _0x83805a=_0x43459c[_0x3415('0x15')]({'plain':!![]});var _0x14bee0=_0x3415('0x16');return db[_0x3415('0x40')][_0x3415('0x3c')]({'where':{'name':_0x14bee0,'userProfileId':_0x51c400[_0x3415('0x41')]},'raw':!![]})[_0x3415('0x14')](function(_0xc1d248){if(_0xc1d248&&_0xc1d248[_0x3415('0x42')]===0x0){return db[_0x3415('0x17')]['create']({'name':_0x83805a[_0x3415('0x1e')],'resourceId':_0x83805a['id'],'type':_0xc1d248[_0x3415('0x1e')],'sectionId':_0xc1d248['id']},{})[_0x3415('0x14')](function(){return _0x43459c;});}else{return _0x43459c;}})[_0x3415('0x38')](function(_0x11f1f7){logger['error'](_0x3415('0x43'),_0x11f1f7);throw _0x11f1f7;});}return _0x43459c;})[_0x3415('0x14')](respondWithResult(_0x277408,0xc9))[_0x3415('0x38')](handleError(_0x277408,null));};exports[_0x3415('0x13')]=function(_0x5c23a4,_0x1acd17){if(_0x5c23a4[_0x3415('0x3d')]['id']){delete _0x5c23a4[_0x3415('0x3d')]['id'];}return db[_0x3415('0x20')][_0x3415('0x3c')]({'where':{'id':_0x5c23a4[_0x3415('0x3a')]['id']}})['then'](handleEntityNotFound(_0x1acd17,null))[_0x3415('0x14')](saveUpdates(_0x5c23a4[_0x3415('0x3d')],null))[_0x3415('0x14')](function(_0x55cd15){if(!_0x55cd15)return;var _0x153b57=_0x55cd15[_0x3415('0x15')]({'plain':!![]});return _0x153b57;})[_0x3415('0x14')](function(_0x105889){var _0x39697f=new Redis(config[_0x3415('0x7')]);_0x39697f[_0x3415('0x18')]('agi',JSON[_0x3415('0x1a')](_[_0x3415('0x44')](_0x105889,['id',_0x3415('0x1e'),_0x3415('0x45')])));return _0x105889;})[_0x3415('0x14')](respondWithResult(_0x1acd17,null))[_0x3415('0x38')](handleError(_0x1acd17,null));};exports[_0x3415('0x46')]=function(_0x23b6a3,_0x5f1f15){return db[_0x3415('0x20')]['find']({'where':{'id':_0x23b6a3[_0x3415('0x3a')]['id']}})[_0x3415('0x14')](handleEntityNotFound(_0x5f1f15,null))[_0x3415('0x14')](removeEntity(_0x5f1f15,null))[_0x3415('0x38')](handleError(_0x5f1f15,null));};
\ No newline at end of file
+var _0x44ea=['type','key','model','map','query','filters','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','catch','params','keys','attributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','production','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','json','offset','limit','undefined','count','status','update','then','destroy','get','SquareProjects','publish','agi','stringify','end','sendStatus','error','stack','name','send','index','SquareProject','rawAttributes','fieldName'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x44ea,0x149));var _0xa44e=function(_0x636e2b,_0x54a5bf){_0x636e2b=_0x636e2b-0x0;var _0x29a702=_0x44ea[_0x636e2b];return _0x29a702;};'use strict';var _=require(_0xa44e('0x0'));var Redis=require(_0xa44e('0x1'));var qs=require(_0xa44e('0x2'));var logger=require(_0xa44e('0x3'))(_0xa44e('0x4'));var config=require('../../config/environment');var db=require(_0xa44e('0x5'))['db'];config[_0xa44e('0x6')]=_[_0xa44e('0x7')](config[_0xa44e('0x6')],{'host':_0xa44e('0x8'),'port':0x18eb});var socket=require(_0xa44e('0x9'))(new Redis(config[_0xa44e('0x6')]));require(_0xa44e('0xa'))[_0xa44e('0xb')](socket);function respondWithResult(_0x5d89de,_0x273da7){_0x273da7=_0x273da7||0xc8;return function(_0x2fff4c){if(_0x2fff4c){return _0x5d89de['status'](_0x273da7)[_0xa44e('0xc')](_0x2fff4c);}};}function respondWithFilteredResult(_0x4b2928,_0x139e78){return function(_0xc2c94d){if(_0xc2c94d){var _0x5b25da=typeof _0x139e78[_0xa44e('0xd')]==='undefined'&&typeof _0x139e78[_0xa44e('0xe')]===_0xa44e('0xf');var _0xc9f095=_0xc2c94d['count'];var _0x522342=_0x5b25da?0x0:_0x139e78['offset'];var _0x8725cb=_0x5b25da?_0xc2c94d[_0xa44e('0x10')]:_0x139e78[_0xa44e('0xd')]+_0x139e78[_0xa44e('0xe')];var _0x104a55;if(_0x8725cb>=_0xc9f095){_0x8725cb=_0xc9f095;_0x104a55=0xc8;}else{_0x104a55=0xce;}_0x4b2928[_0xa44e('0x11')](_0x104a55);return _0x4b2928['set']('Content-Range',_0x522342+'-'+_0x8725cb+'/'+_0xc9f095)['json'](_0xc2c94d);}return null;};}function saveUpdates(_0x4a7d19){return function(_0x2ed58c){if(_0x2ed58c){return _0x2ed58c[_0xa44e('0x12')](_0x4a7d19)[_0xa44e('0x13')](function(_0x5e80b8){return _0x5e80b8;});}return null;};}function removeEntity(_0x3790e8){return function(_0x1fa549){if(_0x1fa549){return _0x1fa549[_0xa44e('0x14')]()['then'](function(){var _0x56bab9=_0x1fa549[_0xa44e('0x15')]({'plain':!![]});var _0x4659fd=_0xa44e('0x16');return db['UserProfileResource'][_0xa44e('0x14')]({'where':{'type':_0x4659fd,'resourceId':_0x56bab9['id']}})[_0xa44e('0x13')](function(){return _0x1fa549;});})[_0xa44e('0x13')](function(){var _0x4997a9=new Redis(config['redis']);_0x4997a9[_0xa44e('0x17')](_0xa44e('0x18'),JSON[_0xa44e('0x19')]({'id':_0x1fa549['id'],'deleted':!![]}));})['then'](function(){_0x3790e8['status'](0xcc)[_0xa44e('0x1a')]();});}};}function handleEntityNotFound(_0x145854){return function(_0x5c9a58){if(!_0x5c9a58){_0x145854[_0xa44e('0x1b')](0x194);}return _0x5c9a58;};}function handleError(_0x462816,_0x4b437f){_0x4b437f=_0x4b437f||0x1f4;return function(_0x1b5e43){logger[_0xa44e('0x1c')](_0x1b5e43[_0xa44e('0x1d')]);if(_0x1b5e43[_0xa44e('0x1e')]){delete _0x1b5e43[_0xa44e('0x1e')];}_0x462816[_0xa44e('0x11')](_0x4b437f)[_0xa44e('0x1f')](_0x1b5e43);};}exports[_0xa44e('0x20')]=function(_0x5deb19,_0x5efc1b){var _0x306500={},_0x5afe01={},_0x2cae2c={'count':0x0,'rows':[]};var _0x318c39=_['map'](db[_0xa44e('0x21')][_0xa44e('0x22')],function(_0x55fb3f){return{'name':_0x55fb3f[_0xa44e('0x23')],'type':_0x55fb3f[_0xa44e('0x24')][_0xa44e('0x25')]};});_0x5afe01[_0xa44e('0x26')]=_[_0xa44e('0x27')](_0x318c39,'name');_0x5afe01[_0xa44e('0x28')]=_['keys'](_0x5deb19[_0xa44e('0x28')]);_0x5afe01[_0xa44e('0x29')]=_[_0xa44e('0x2a')](_0x5afe01['model'],_0x5afe01['query']);_0x306500['attributes']=_[_0xa44e('0x2a')](_0x5afe01[_0xa44e('0x26')],qs[_0xa44e('0x2b')](_0x5deb19[_0xa44e('0x28')][_0xa44e('0x2b')]));_0x306500['attributes']=_0x306500['attributes'][_0xa44e('0x2c')]?_0x306500['attributes']:_0x5afe01[_0xa44e('0x26')];if(!_0x5deb19['query'][_0xa44e('0x2d')]('nolimit')){_0x306500['limit']=qs[_0xa44e('0xe')](_0x5deb19[_0xa44e('0x28')][_0xa44e('0xe')]);_0x306500[_0xa44e('0xd')]=qs[_0xa44e('0xd')](_0x5deb19[_0xa44e('0x28')][_0xa44e('0xd')]);}_0x306500[_0xa44e('0x2e')]=qs[_0xa44e('0x2f')](_0x5deb19[_0xa44e('0x28')][_0xa44e('0x2f')]);_0x306500['where']=qs['filters'](_[_0xa44e('0x30')](_0x5deb19['query'],_0x5afe01[_0xa44e('0x29')]),_0x318c39);if(_0x5deb19['query'][_0xa44e('0x31')]){_0x306500[_0xa44e('0x32')]=_[_0xa44e('0x33')](_0x306500[_0xa44e('0x32')],{'$or':_[_0xa44e('0x27')](_0x318c39,function(_0x13ec93){if(_0x13ec93[_0xa44e('0x24')]!==_0xa44e('0x34')){var _0x2bdd8c={};_0x2bdd8c[_0x13ec93['name']]={'$like':'%'+_0x5deb19[_0xa44e('0x28')]['filter']+'%'};return _0x2bdd8c;}})});}_0x306500=_[_0xa44e('0x33')]({},_0x306500,_0x5deb19[_0xa44e('0x35')]);var _0x176fb9={'where':_0x306500['where']};return db[_0xa44e('0x21')]['count'](_0x176fb9)['then'](function(_0x358561){_0x2cae2c[_0xa44e('0x10')]=_0x358561;if(_0x5deb19[_0xa44e('0x28')][_0xa44e('0x36')]){_0x306500['include']=[{'all':!![]}];}return db[_0xa44e('0x21')]['findAll'](_0x306500);})[_0xa44e('0x13')](function(_0x6594e3){_0x2cae2c[_0xa44e('0x37')]=_0x6594e3;return _0x2cae2c;})[_0xa44e('0x13')](respondWithFilteredResult(_0x5efc1b,_0x306500))[_0xa44e('0x38')](handleError(_0x5efc1b,null));};exports['show']=function(_0x46cfa8,_0xcdeac2){var _0x2b58ac={'raw':![],'where':{'id':_0x46cfa8[_0xa44e('0x39')]['id']}},_0x81134e={};_0x81134e[_0xa44e('0x26')]=_[_0xa44e('0x3a')](db[_0xa44e('0x21')][_0xa44e('0x22')]);_0x81134e[_0xa44e('0x28')]=_[_0xa44e('0x3a')](_0x46cfa8[_0xa44e('0x28')]);_0x81134e[_0xa44e('0x29')]=_[_0xa44e('0x2a')](_0x81134e[_0xa44e('0x26')],_0x81134e[_0xa44e('0x28')]);_0x2b58ac[_0xa44e('0x3b')]=_['intersection'](_0x81134e[_0xa44e('0x26')],qs['fields'](_0x46cfa8['query'][_0xa44e('0x2b')]));_0x2b58ac['attributes']=_0x2b58ac[_0xa44e('0x3b')][_0xa44e('0x2c')]?_0x2b58ac['attributes']:_0x81134e[_0xa44e('0x26')];if(_0x46cfa8[_0xa44e('0x28')][_0xa44e('0x36')]){_0x2b58ac[_0xa44e('0x3c')]=[{'all':!![]}];}_0x2b58ac=_['merge']({},_0x2b58ac,_0x46cfa8[_0xa44e('0x35')]);return db['SquareProject'][_0xa44e('0x3d')](_0x2b58ac)[_0xa44e('0x13')](handleEntityNotFound(_0xcdeac2,null))[_0xa44e('0x13')](respondWithResult(_0xcdeac2,null))[_0xa44e('0x38')](handleError(_0xcdeac2,null));};exports[_0xa44e('0x3e')]=function(_0x4e8022,_0x218e9c){return db['SquareProject']['create'](_0x4e8022[_0xa44e('0x3f')],{})[_0xa44e('0x13')](function(_0x625ee9){var _0x586081=_0x4e8022[_0xa44e('0x40')][_0xa44e('0x15')]({'plain':!![]});if(!_0x586081)throw new Error(_0xa44e('0x41'));if(_0x586081[_0xa44e('0x42')]===_0xa44e('0x40')){var _0x33b390=_0x625ee9[_0xa44e('0x15')]({'plain':!![]});var _0x2998fd=_0xa44e('0x16');return db[_0xa44e('0x43')][_0xa44e('0x3d')]({'where':{'name':_0x2998fd,'userProfileId':_0x586081[_0xa44e('0x44')]},'raw':!![]})['then'](function(_0x3cdf1e){if(_0x3cdf1e&&_0x3cdf1e[_0xa44e('0x45')]===0x0){return db[_0xa44e('0x46')][_0xa44e('0x3e')]({'name':_0x33b390[_0xa44e('0x1e')],'resourceId':_0x33b390['id'],'type':_0x3cdf1e['name'],'sectionId':_0x3cdf1e['id']},{})[_0xa44e('0x13')](function(){return _0x625ee9;});}else{return _0x625ee9;}})[_0xa44e('0x38')](function(_0x4b4e79){logger[_0xa44e('0x1c')](_0xa44e('0x47'),_0x4b4e79);throw _0x4b4e79;});}return _0x625ee9;})[_0xa44e('0x13')](respondWithResult(_0x218e9c,0xc9))['catch'](handleError(_0x218e9c,null));};exports[_0xa44e('0x12')]=function(_0x61a051,_0x4bc0fb){if(_0x61a051[_0xa44e('0x3f')]['id']){delete _0x61a051[_0xa44e('0x3f')]['id'];}return db[_0xa44e('0x21')]['find']({'where':{'id':_0x61a051[_0xa44e('0x39')]['id']}})[_0xa44e('0x13')](handleEntityNotFound(_0x4bc0fb,null))[_0xa44e('0x13')](saveUpdates(_0x61a051[_0xa44e('0x3f')],null))[_0xa44e('0x13')](function(_0x492a37){if(!_0x492a37)return;var _0xad16f9=_0x492a37['get']({'plain':!![]});return _0xad16f9;})[_0xa44e('0x13')](function(_0x639298){var _0x424c22=new Redis(config[_0xa44e('0x6')]);_0x424c22[_0xa44e('0x17')](_0xa44e('0x18'),JSON[_0xa44e('0x19')](_[_0xa44e('0x30')](_0x639298,['id',_0xa44e('0x1e'),_0xa44e('0x48')])));return _0x639298;})[_0xa44e('0x13')](respondWithResult(_0x4bc0fb,null))[_0xa44e('0x38')](handleError(_0x4bc0fb,null));};exports['destroy']=function(_0x1f31cb,_0x181dda){return db['SquareProject'][_0xa44e('0x3d')]({'where':{'id':_0x1f31cb[_0xa44e('0x39')]['id']}})['then'](handleEntityNotFound(_0x181dda,null))[_0xa44e('0x13')](removeEntity(_0x181dda,null))[_0xa44e('0x38')](handleError(_0x181dda,null));};
\ No newline at end of file
index c399738..861feb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9651=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','SquareProject','setMaxListeners'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9651,0x15a));var _0x1965=function(_0x18fc3f,_0x272714){_0x18fc3f=_0x18fc3f-0x0;var _0x2332a3=_0x9651[_0x18fc3f];return _0x2332a3;};'use strict';var EventEmitter=require(_0x1965('0x0'));var SquareProject=require(_0x1965('0x1'))['db'][_0x1965('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x1965('0x3')](0x0);var events={'afterCreate':_0x1965('0x4'),'afterUpdate':_0x1965('0x5'),'afterDestroy':_0x1965('0x6')};function emitEvent(_0x39847e){return function(_0x4a611d,_0x140d42,_0x5a1c57){SquareProjectEvents[_0x1965('0x7')](_0x39847e+':'+_0x4a611d['id'],_0x4a611d);SquareProjectEvents[_0x1965('0x7')](_0x39847e,_0x4a611d);_0x5a1c57(null);};}for(var e in events){if(events[_0x1965('0x8')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x1965('0x9')]=SquareProjectEvents;
\ No newline at end of file
+var _0x8d24=['save','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x8d24,0x194));var _0x48d2=function(_0x569b7a,_0x377a61){_0x569b7a=_0x569b7a-0x0;var _0x39d00a=_0x8d24[_0x569b7a];return _0x39d00a;};'use strict';var EventEmitter=require(_0x48d2('0x0'));var SquareProject=require(_0x48d2('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x48d2('0x2'),'afterUpdate':'update','afterDestroy':_0x48d2('0x3')};function emitEvent(_0x59ddc1){return function(_0x486672,_0x92ccca,_0x8ef290){SquareProjectEvents[_0x48d2('0x4')](_0x59ddc1+':'+_0x486672['id'],_0x486672);SquareProjectEvents[_0x48d2('0x4')](_0x59ddc1,_0x486672);_0x8ef290(null);};}for(var e in events){if(events[_0x48d2('0x5')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x48d2('0x6')]=SquareProjectEvents;
\ No newline at end of file
index 46f78b2..833557d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffc7=['request-promise','rimraf','../../config/environment','./squareProject.attributes','define','square_projects','changed','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','../../config/logger','api','moment'];(function(_0x166870,_0x30ab39){var _0x12d24c=function(_0x141c87){while(--_0x141c87){_0x166870['push'](_0x166870['shift']());}};_0x12d24c(++_0x30ab39);}(_0xffc7,0x13c));var _0x7ffc=function(_0x189a6b,_0x201e51){_0x189a6b=_0x189a6b-0x0;var _0x5933f4=_0xffc7[_0x189a6b];return _0x5933f4;};'use strict';var _=require(_0x7ffc('0x0'));var util=require('util');var logger=require(_0x7ffc('0x1'))(_0x7ffc('0x2'));var moment=require(_0x7ffc('0x3'));var BPromise=require('bluebird');var rp=require(_0x7ffc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7ffc('0x5'));var config=require(_0x7ffc('0x6'));var attributes=require(_0x7ffc('0x7'));module['exports']=function(_0x2e91d7,_0x8e41dc){return _0x2e91d7[_0x7ffc('0x8')]('SquareProject',attributes,{'tableName':_0x7ffc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x361fbc,_0x5a2f08,_0x23cd0c){if(_0x361fbc[_0x7ffc('0xa')]('preproduction')){_0x361fbc[_0x7ffc('0xb')]=moment()[_0x7ffc('0xc')](_0x7ffc('0xd'));}if(_0x361fbc['changed'](_0x7ffc('0xe'))){_0x361fbc[_0x7ffc('0xf')]=moment()[_0x7ffc('0xc')](_0x7ffc('0xd'));}_0x23cd0c(null,_0x361fbc);}}});};
\ No newline at end of file
+var _0x9736=['format','lodash','../../config/logger','bluebird','path','../../config/environment','./squareProject.attributes','exports','define','square_projects','changed','savedAt','YYYY-MM-DD\x20HH:mm:ss','publishedAt'];(function(_0x4da63a,_0x69550e){var _0x5696d2=function(_0x2626ae){while(--_0x2626ae){_0x4da63a['push'](_0x4da63a['shift']());}};_0x5696d2(++_0x69550e);}(_0x9736,0x143));var _0x6973=function(_0x25142f,_0x4ef8cb){_0x25142f=_0x25142f-0x0;var _0x59ecdb=_0x9736[_0x25142f];return _0x59ecdb;};'use strict';var _=require(_0x6973('0x0'));var util=require('util');var logger=require(_0x6973('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6973('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6973('0x3'));var rimraf=require('rimraf');var config=require(_0x6973('0x4'));var attributes=require(_0x6973('0x5'));module[_0x6973('0x6')]=function(_0x36aa5c,_0x1a80ca){return _0x36aa5c[_0x6973('0x7')]('SquareProject',attributes,{'tableName':_0x6973('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4e154d,_0x2e8e30,_0x275e50){if(_0x4e154d[_0x6973('0x9')]('preproduction')){_0x4e154d[_0x6973('0xa')]=moment()['format'](_0x6973('0xb'));}if(_0x4e154d[_0x6973('0x9')]('production')){_0x4e154d[_0x6973('0xc')]=moment()[_0x6973('0xd')](_0x6973('0xb'));}_0x275e50(null,_0x4e154d);}}});};
\ No newline at end of file
index 161182b..1e4fdc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc622=['info','catch','lodash','ioredis','../../config/logger','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','SquareProject','findAll','options','raw','where','map','include','model','attributes','then','GetSquareProjects','debug','stringify','error','message','ShowSquareProject'];(function(_0x3d8636,_0x7e8e8){var _0x416ffc=function(_0x12360f){while(--_0x12360f){_0x3d8636['push'](_0x3d8636['shift']());}};_0x416ffc(++_0x7e8e8);}(_0xc622,0xaa));var _0x2c62=function(_0x5bccd3,_0x4e2b7b){_0x5bccd3=_0x5bccd3-0x0;var _0x322dbc=_0xc622[_0x5bccd3];return _0x322dbc;};'use strict';var _=require(_0x2c62('0x0'));var Redis=require(_0x2c62('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x2c62('0x2'))('rpc');var config=require(_0x2c62('0x3'));config[_0x2c62('0x4')]=_[_0x2c62('0x5')](config['redis'],{'host':_0x2c62('0x6'),'port':0x18eb});var socket=require(_0x2c62('0x7'))(new Redis(config[_0x2c62('0x4')]));require(_0x2c62('0x8'))[_0x2c62('0x9')](socket);exports['GetSquareProjects']=function(_0x517beb){var _0x5dd665=this;return new Promise(function(_0x423fc1,_0x427dd4){return db[_0x2c62('0xa')][_0x2c62('0xb')]({'raw':_0x517beb[_0x2c62('0xc')]?_0x517beb[_0x2c62('0xc')][_0x2c62('0xd')]===undefined?!![]:![]:!![],'where':_0x517beb[_0x2c62('0xc')]?_0x517beb['options'][_0x2c62('0xe')]||null:null,'attributes':_0x517beb[_0x2c62('0xc')]?_0x517beb[_0x2c62('0xc')]['attributes']||null:null,'limit':_0x517beb[_0x2c62('0xc')]?_0x517beb[_0x2c62('0xc')]['limit']||null:null,'include':_0x517beb[_0x2c62('0xc')]?_0x517beb['options']['include']?_[_0x2c62('0xf')](_0x517beb[_0x2c62('0xc')][_0x2c62('0x10')],function(_0x41dfbe){return{'model':db[_0x41dfbe[_0x2c62('0x11')]],'as':_0x41dfbe['as'],'attributes':_0x41dfbe[_0x2c62('0x12')],'include':_0x41dfbe[_0x2c62('0x10')]?_[_0x2c62('0xf')](_0x41dfbe[_0x2c62('0x10')],function(_0x52f660){return{'model':db[_0x52f660[_0x2c62('0x11')]],'as':_0x52f660['as'],'attributes':_0x52f660['attributes'],'include':_0x52f660[_0x2c62('0x10')]?_[_0x2c62('0xf')](_0x52f660['include'],function(_0x56cd5a){return{'model':db[_0x56cd5a[_0x2c62('0x11')]],'as':_0x56cd5a['as'],'attributes':_0x56cd5a[_0x2c62('0x12')]};}):[]};}):[]};}):[]:[]})[_0x2c62('0x13')](function(_0x37b298){logger['info'](_0x2c62('0x14'),_0x517beb);logger[_0x2c62('0x15')](_0x2c62('0x14'),_0x517beb,JSON[_0x2c62('0x16')](_0x37b298));_0x423fc1(_0x37b298);})['catch'](function(_0x5a02f3){logger[_0x2c62('0x17')](_0x2c62('0x14'),_0x5a02f3[_0x2c62('0x18')],_0x517beb);_0x427dd4(_0x5dd665[_0x2c62('0x17')](0x1f4,_0x5a02f3[_0x2c62('0x18')]));});});};exports[_0x2c62('0x19')]=function(_0x21516f){var _0x220b20=this;return new Promise(function(_0x12ec1c,_0x3f248a){return db[_0x2c62('0xa')]['find']({'raw':_0x21516f[_0x2c62('0xc')]?_0x21516f[_0x2c62('0xc')][_0x2c62('0xd')]===undefined?!![]:![]:!![],'where':_0x21516f['options']?_0x21516f[_0x2c62('0xc')][_0x2c62('0xe')]||null:null,'attributes':_0x21516f[_0x2c62('0xc')]?_0x21516f[_0x2c62('0xc')]['attributes']||null:null,'include':_0x21516f['options']?_0x21516f[_0x2c62('0xc')][_0x2c62('0x10')]?_[_0x2c62('0xf')](_0x21516f[_0x2c62('0xc')][_0x2c62('0x10')],function(_0x4a6f0e){return{'model':db[_0x4a6f0e[_0x2c62('0x11')]],'as':_0x4a6f0e['as'],'attributes':_0x4a6f0e['attributes'],'include':_0x4a6f0e[_0x2c62('0x10')]?_['map'](_0x4a6f0e[_0x2c62('0x10')],function(_0x42402a){return{'model':db[_0x42402a[_0x2c62('0x11')]],'as':_0x42402a['as'],'attributes':_0x42402a[_0x2c62('0x12')],'include':_0x42402a[_0x2c62('0x10')]?_['map'](_0x42402a[_0x2c62('0x10')],function(_0x2ef118){return{'model':db[_0x2ef118[_0x2c62('0x11')]],'as':_0x2ef118['as'],'attributes':_0x2ef118['attributes']};}):[]};}):[]};}):[]:[]})[_0x2c62('0x13')](function(_0x35738a){logger[_0x2c62('0x1a')](_0x2c62('0x19'),_0x21516f);logger['debug'](_0x2c62('0x19'),_0x21516f,JSON['stringify'](_0x35738a));_0x12ec1c(_0x35738a);})[_0x2c62('0x1b')](function(_0x31dddd){logger[_0x2c62('0x17')](_0x2c62('0x19'),_0x31dddd[_0x2c62('0x18')],_0x21516f);_0x3f248a(_0x220b20[_0x2c62('0x17')](0x1f4,_0x31dddd[_0x2c62('0x18')]));});});};
\ No newline at end of file
+var _0x6fb8=['raw','attributes','limit','include','map','model','then','debug','catch','error','message','ShowSquareProject','find','where','info','stringify','lodash','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','localhost','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','findAll','options'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x6fb8,0x1d2));var _0x86fb=function(_0xd0a847,_0x72562b){_0xd0a847=_0xd0a847-0x0;var _0x2536ec=_0x6fb8[_0xd0a847];return _0x2536ec;};'use strict';var _=require(_0x86fb('0x0'));var Redis=require('ioredis');var db=require(_0x86fb('0x1'))['db'];var logger=require(_0x86fb('0x2'))(_0x86fb('0x3'));var config=require(_0x86fb('0x4'));config[_0x86fb('0x5')]=_['defaults'](config[_0x86fb('0x5')],{'host':_0x86fb('0x6'),'port':0x18eb});var socket=require(_0x86fb('0x7'))(new Redis(config[_0x86fb('0x5')]));require(_0x86fb('0x8'))[_0x86fb('0x9')](socket);exports[_0x86fb('0xa')]=function(_0x15ae0f){var _0x5d3f15=this;return new Promise(function(_0x1d1f8b,_0x38b30a){return db[_0x86fb('0xb')][_0x86fb('0xc')]({'raw':_0x15ae0f[_0x86fb('0xd')]?_0x15ae0f['options'][_0x86fb('0xe')]===undefined?!![]:![]:!![],'where':_0x15ae0f[_0x86fb('0xd')]?_0x15ae0f[_0x86fb('0xd')]['where']||null:null,'attributes':_0x15ae0f[_0x86fb('0xd')]?_0x15ae0f[_0x86fb('0xd')][_0x86fb('0xf')]||null:null,'limit':_0x15ae0f[_0x86fb('0xd')]?_0x15ae0f[_0x86fb('0xd')][_0x86fb('0x10')]||null:null,'include':_0x15ae0f[_0x86fb('0xd')]?_0x15ae0f['options'][_0x86fb('0x11')]?_[_0x86fb('0x12')](_0x15ae0f['options'][_0x86fb('0x11')],function(_0x1863b1){return{'model':db[_0x1863b1['model']],'as':_0x1863b1['as'],'attributes':_0x1863b1[_0x86fb('0xf')],'include':_0x1863b1[_0x86fb('0x11')]?_[_0x86fb('0x12')](_0x1863b1['include'],function(_0x11ff0d){return{'model':db[_0x11ff0d[_0x86fb('0x13')]],'as':_0x11ff0d['as'],'attributes':_0x11ff0d[_0x86fb('0xf')],'include':_0x11ff0d[_0x86fb('0x11')]?_[_0x86fb('0x12')](_0x11ff0d[_0x86fb('0x11')],function(_0x4001d8){return{'model':db[_0x4001d8['model']],'as':_0x4001d8['as'],'attributes':_0x4001d8['attributes']};}):[]};}):[]};}):[]:[]})[_0x86fb('0x14')](function(_0x18c60b){logger['info'](_0x86fb('0xa'),_0x15ae0f);logger[_0x86fb('0x15')](_0x86fb('0xa'),_0x15ae0f,JSON['stringify'](_0x18c60b));_0x1d1f8b(_0x18c60b);})[_0x86fb('0x16')](function(_0x329e1f){logger[_0x86fb('0x17')](_0x86fb('0xa'),_0x329e1f[_0x86fb('0x18')],_0x15ae0f);_0x38b30a(_0x5d3f15[_0x86fb('0x17')](0x1f4,_0x329e1f[_0x86fb('0x18')]));});});};exports[_0x86fb('0x19')]=function(_0x42c3cc){var _0x27b6d3=this;return new Promise(function(_0xc721f8,_0x386eca){return db[_0x86fb('0xb')][_0x86fb('0x1a')]({'raw':_0x42c3cc[_0x86fb('0xd')]?_0x42c3cc[_0x86fb('0xd')]['raw']===undefined?!![]:![]:!![],'where':_0x42c3cc[_0x86fb('0xd')]?_0x42c3cc[_0x86fb('0xd')][_0x86fb('0x1b')]||null:null,'attributes':_0x42c3cc[_0x86fb('0xd')]?_0x42c3cc['options'][_0x86fb('0xf')]||null:null,'include':_0x42c3cc[_0x86fb('0xd')]?_0x42c3cc[_0x86fb('0xd')]['include']?_['map'](_0x42c3cc[_0x86fb('0xd')]['include'],function(_0x3e99bf){return{'model':db[_0x3e99bf[_0x86fb('0x13')]],'as':_0x3e99bf['as'],'attributes':_0x3e99bf[_0x86fb('0xf')],'include':_0x3e99bf[_0x86fb('0x11')]?_[_0x86fb('0x12')](_0x3e99bf[_0x86fb('0x11')],function(_0x3575c6){return{'model':db[_0x3575c6[_0x86fb('0x13')]],'as':_0x3575c6['as'],'attributes':_0x3575c6['attributes'],'include':_0x3575c6[_0x86fb('0x11')]?_[_0x86fb('0x12')](_0x3575c6[_0x86fb('0x11')],function(_0x5b4dfd){return{'model':db[_0x5b4dfd['model']],'as':_0x5b4dfd['as'],'attributes':_0x5b4dfd[_0x86fb('0xf')]};}):[]};}):[]};}):[]:[]})[_0x86fb('0x14')](function(_0x11fc27){logger[_0x86fb('0x1c')]('ShowSquareProject',_0x42c3cc);logger[_0x86fb('0x15')](_0x86fb('0x19'),_0x42c3cc,JSON[_0x86fb('0x1d')](_0x11fc27));_0xc721f8(_0x11fc27);})['catch'](function(_0x53d81b){logger['error'](_0x86fb('0x19'),_0x53d81b[_0x86fb('0x18')],_0x42c3cc);_0x386eca(_0x27b6d3[_0x86fb('0x17')](0x1f4,_0x53d81b['message']));});});};
\ No newline at end of file
index 86a0040..61690f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62f=['update','emit','removeListener','squareProject:','./squareProject.events','save','remove'];(function(_0x455953,_0x2ee57d){var _0x2d7d6b=function(_0x1453b7){while(--_0x1453b7){_0x455953['push'](_0x455953['shift']());}};_0x2d7d6b(++_0x2ee57d);}(_0xb62f,0xc1));var _0xfb62=function(_0x53ae77,_0x48db66){_0x53ae77=_0x53ae77-0x0;var _0x396dad=_0xb62f[_0x53ae77];return _0x396dad;};'use strict';var SquareProjectEvents=require(_0xfb62('0x0'));var events=[_0xfb62('0x1'),_0xfb62('0x2'),_0xfb62('0x3')];function createListener(_0x38789d,_0x2b89a9){return function(_0x3102e0){_0x2b89a9[_0xfb62('0x4')](_0x38789d,_0x3102e0);};}function removeListener(_0x4bb2f0,_0x3ec964){return function(){SquareProjectEvents[_0xfb62('0x5')](_0x4bb2f0,_0x3ec964);};}exports['register']=function(_0x3b4c62){for(var _0x37e8b5=0x0,_0x8e0b2c=events['length'];_0x37e8b5<_0x8e0b2c;_0x37e8b5++){var _0x2195bc=events[_0x37e8b5];var _0x512efa=createListener(_0xfb62('0x6')+_0x2195bc,_0x3b4c62);SquareProjectEvents['on'](_0x2195bc,_0x512efa);}};
\ No newline at end of file
+var _0xa774=['./squareProject.events','remove','update','emit','register'];(function(_0x3ce3c,_0x319337){var _0x55a2c9=function(_0x1568d0){while(--_0x1568d0){_0x3ce3c['push'](_0x3ce3c['shift']());}};_0x55a2c9(++_0x319337);}(_0xa774,0xa0));var _0x4a77=function(_0x280f4a,_0x2ed8d6){_0x280f4a=_0x280f4a-0x0;var _0x1bb157=_0xa774[_0x280f4a];return _0x1bb157;};'use strict';var SquareProjectEvents=require(_0x4a77('0x0'));var events=['save',_0x4a77('0x1'),_0x4a77('0x2')];function createListener(_0x2d15ca,_0x2f6bf6){return function(_0x12b11d){_0x2f6bf6[_0x4a77('0x3')](_0x2d15ca,_0x12b11d);};}function removeListener(_0x120dd0,_0x459c4e){return function(){SquareProjectEvents['removeListener'](_0x120dd0,_0x459c4e);};}exports[_0x4a77('0x4')]=function(_0x2167cb){for(var _0x2762d5=0x0,_0x338bfc=events['length'];_0x2762d5<_0x338bfc;_0x2762d5++){var _0x384616=events[_0x2762d5];var _0x31653d=createListener('squareProject:'+_0x384616,_0x2167cb);SquareProjectEvents['on'](_0x384616,_0x31653d);}};
\ No newline at end of file
index 8d20c8a..775be6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x0295,0x1f0));var _0x5029=function(_0x22c5df,_0x445b1a){_0x22c5df=_0x22c5df-0x0;var _0x193166=_0x0295[_0x22c5df];return _0x193166;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5029('0x7')]('/:id/download',auth[_0x5029('0x8')](),controller['download']);router[_0x5029('0xa')]('/',auth['isAuthenticated'](),controller[_0x5029('0xb')]);router[_0x5029('0xc')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0xe')]);router[_0x5029('0xf')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0x10')]);module[_0x5029('0x11')]=router;
\ No newline at end of file
+var _0x0295=['isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x0295,0x1f0));var _0x5029=function(_0x5706fb,_0xacfe3c){_0x5706fb=_0x5706fb-0x0;var _0x21799d=_0x0295[_0x5706fb];return _0x21799d;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5029('0x7')]('/:id/download',auth[_0x5029('0x8')](),controller['download']);router[_0x5029('0xa')]('/',auth['isAuthenticated'](),controller[_0x5029('0xb')]);router[_0x5029('0xc')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0xe')]);router[_0x5029('0xf')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0x10')]);module[_0x5029('0x11')]=router;
\ No newline at end of file
index d1fd72a..2dd9b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['getDataValue','savePath','lastIndexOf','sequelize','STRING','VIRTUAL'];(function(_0x28f2e6,_0x1d1fb7){var _0x2e16f6=function(_0x230ea4){while(--_0x230ea4){_0x28f2e6['push'](_0x28f2e6['shift']());}};_0x2e16f6(++_0x1d1fb7);}(_0x2675,0x75));var _0x5267=function(_0x248045,_0x123d98){_0x248045=_0x248045-0x0;var _0x4d5cb9=_0x2675[_0x248045];return _0x4d5cb9;};'use strict';var Sequelize=require(_0x5267('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x5267('0x1')]},'context':{'type':Sequelize[_0x5267('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x5267('0x1')]},'accountcode':{'type':Sequelize[_0x5267('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x5267('0x1')]},'saveName':{'type':Sequelize[_0x5267('0x1')]},'filename':{'type':Sequelize[_0x5267('0x1')]},'savePath':{'type':Sequelize[_0x5267('0x1')]},'format':{'type':Sequelize[_0x5267('0x2')],'get':function(){var _0xc56cd5='';var _0x527c16=this[_0x5267('0x3')](_0x5267('0x4'));if(_0x527c16){_0xc56cd5=_0x527c16['substring'](_0x527c16[_0x5267('0x5')]('.'));}return _0xc56cd5;}}};
\ No newline at end of file
+var _0xac9d=['VIRTUAL','savePath','lastIndexOf','sequelize','exports','STRING'];(function(_0x501642,_0x2fddcf){var _0x4217c1=function(_0x4c41e6){while(--_0x4c41e6){_0x501642['push'](_0x501642['shift']());}};_0x4217c1(++_0x2fddcf);}(_0xac9d,0x14d));var _0xdac9=function(_0x4e1bd3,_0xda464d){_0x4e1bd3=_0x4e1bd3-0x0;var _0x234e83=_0xac9d[_0x4e1bd3];return _0x234e83;};'use strict';var Sequelize=require(_0xdac9('0x0'));module[_0xdac9('0x1')]={'uniqueid':{'type':Sequelize[_0xdac9('0x2')]},'callerid':{'type':Sequelize[_0xdac9('0x2')]},'calleridname':{'type':Sequelize[_0xdac9('0x2')]},'context':{'type':Sequelize[_0xdac9('0x2')]},'extension':{'type':Sequelize[_0xdac9('0x2')]},'priority':{'type':Sequelize[_0xdac9('0x2')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0xdac9('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0xdac9('0x2')]},'filename':{'type':Sequelize[_0xdac9('0x2')]},'savePath':{'type':Sequelize[_0xdac9('0x2')]},'format':{'type':Sequelize[_0xdac9('0x3')],'get':function(){var _0x1c78c5='';var _0x39f560=this['getDataValue'](_0xdac9('0x4'));if(_0x39f560){_0x1c78c5=_0x39f560['substring'](_0x39f560[_0xdac9('0x5')]('.'));}return _0x1c78c5;}}};
\ No newline at end of file
index edb7661..d742867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f0=['to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','stack','name','map','SquareRecording','rawAttributes','type','key','model','filters','intersection','query','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','keys','includeAll','include','create','body','find','params','download','../../components/encryptor','uniqueid','savePath','format','%s.cypher','decryptFile','secrets','recording','Sequelize','ValidationError','filename','unlink','SquareRecording\x20not\x20found','send','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','unlinkSync','.cypher','rimraf','zip-dir','fast-json-patch','moment','mustache','path'];(function(_0x559d27,_0x342015){var _0x215210=function(_0x536223){while(--_0x536223){_0x559d27['push'](_0x559d27['shift']());}};_0x215210(++_0x342015);}(_0x88f0,0x16e));var _0x088f=function(_0x235e66,_0x4bef96){_0x235e66=_0x235e66-0x0;var _0x36019b=_0x88f0[_0x235e66];return _0x36019b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x088f('0x0'));var zipdir=require(_0x088f('0x1'));var jsonpatch=require(_0x088f('0x2'));var rp=require('request-promise');var moment=require(_0x088f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x088f('0x4'));var util=require('util');var path=require(_0x088f('0x5'));var sox=require('sox');var csv=require(_0x088f('0x6'));var ejs=require(_0x088f('0x7'));var fs=require('fs');var fs_extra=require(_0x088f('0x8'));var _=require(_0x088f('0x9'));var squel=require(_0x088f('0xa'));var crypto=require(_0x088f('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x088f('0xc'));var toCsv=require(_0x088f('0x6'));var querystring=require('querystring');var Papa=require(_0x088f('0xd'));var Redis=require(_0x088f('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x088f('0xf'));var logger=require(_0x088f('0x10'))(_0x088f('0x11'));var utils=require(_0x088f('0x12'));var config=require(_0x088f('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x088f('0x14'))['db'];function respondWithStatusCode(_0x4c8ca2,_0x5a4128){_0x5a4128=_0x5a4128||0xcc;return function(_0x3f9897){if(_0x3f9897){return _0x4c8ca2[_0x088f('0x15')](_0x5a4128);}return _0x4c8ca2['status'](_0x5a4128)[_0x088f('0x16')]();};}function respondWithResult(_0x40360b,_0x4b946f){_0x4b946f=_0x4b946f||0xc8;return function(_0x192787){if(_0x192787){return _0x40360b[_0x088f('0x17')](_0x4b946f)[_0x088f('0x18')](_0x192787);}};}function respondWithFilteredResult(_0x382297,_0x52c371){return function(_0x108723){if(_0x108723){var _0x54f03c=typeof _0x52c371[_0x088f('0x19')]===_0x088f('0x1a')&&typeof _0x52c371[_0x088f('0x1b')]==='undefined';var _0x1e6791=_0x108723['count'];var _0x2aef51=_0x54f03c?0x0:_0x52c371[_0x088f('0x19')];var _0x462dd8=_0x54f03c?_0x108723[_0x088f('0x1c')]:_0x52c371[_0x088f('0x19')]+_0x52c371['limit'];var _0x61699a;if(_0x462dd8>=_0x1e6791){_0x462dd8=_0x1e6791;_0x61699a=0xc8;}else{_0x61699a=0xce;}_0x382297[_0x088f('0x17')](_0x61699a);return _0x382297[_0x088f('0x1d')](_0x088f('0x1e'),_0x2aef51+'-'+_0x462dd8+'/'+_0x1e6791)[_0x088f('0x18')](_0x108723);}return null;};}function patchUpdates(_0x2502bf){return function(_0x402497){try{jsonpatch['apply'](_0x402497,_0x2502bf,!![]);}catch(_0xb750c0){return BPromise['reject'](_0xb750c0);}return _0x402497[_0x088f('0x1f')]();};}function saveUpdates(_0x46b32a,_0x111182){return function(_0x24e282){if(_0x24e282){return _0x24e282[_0x088f('0x20')](_0x46b32a)[_0x088f('0x21')](function(_0x187fad){return _0x187fad;});}return null;};}function removeEntity(_0x1f9dbd,_0x59119b){return function(_0x3ec99e){if(_0x3ec99e){return _0x3ec99e[_0x088f('0x22')]()[_0x088f('0x21')](function(){_0x1f9dbd[_0x088f('0x17')](0xcc)[_0x088f('0x16')]();});}};}function handleEntityNotFound(_0x526c5e,_0x495ce9){return function(_0x508e9f){if(!_0x508e9f){_0x526c5e[_0x088f('0x15')](0x194);}return _0x508e9f;};}function handleError(_0x398a8f,_0x1490a7){_0x1490a7=_0x1490a7||0x1f4;return function(_0xba6d99){logger[_0x088f('0x23')](_0xba6d99[_0x088f('0x24')]);if(_0xba6d99[_0x088f('0x25')]){delete _0xba6d99[_0x088f('0x25')];}_0x398a8f['status'](_0x1490a7)['send'](_0xba6d99);};}exports['index']=function(_0x36a0a8,_0x486119){var _0x4b5046={},_0x2c9123={},_0x583212={'count':0x0,'rows':[]};var _0x59b9dd=_[_0x088f('0x26')](db[_0x088f('0x27')][_0x088f('0x28')],function(_0xffd5e6){return{'name':_0xffd5e6['fieldName'],'type':_0xffd5e6[_0x088f('0x29')][_0x088f('0x2a')]};});_0x2c9123[_0x088f('0x2b')]=_[_0x088f('0x26')](_0x59b9dd,_0x088f('0x25'));_0x2c9123['query']=_['keys'](_0x36a0a8['query']);_0x2c9123[_0x088f('0x2c')]=_[_0x088f('0x2d')](_0x2c9123[_0x088f('0x2b')],_0x2c9123[_0x088f('0x2e')]);_0x4b5046[_0x088f('0x2f')]=_[_0x088f('0x2d')](_0x2c9123[_0x088f('0x2b')],qs[_0x088f('0x30')](_0x36a0a8[_0x088f('0x2e')][_0x088f('0x30')]));_0x4b5046['attributes']=_0x4b5046[_0x088f('0x2f')][_0x088f('0x31')]?_0x4b5046[_0x088f('0x2f')]:_0x2c9123['model'];if(!_0x36a0a8['query']['hasOwnProperty'](_0x088f('0x32'))){_0x4b5046['limit']=qs[_0x088f('0x1b')](_0x36a0a8[_0x088f('0x2e')]['limit']);_0x4b5046[_0x088f('0x19')]=qs[_0x088f('0x19')](_0x36a0a8[_0x088f('0x2e')][_0x088f('0x19')]);}_0x4b5046['order']=qs['sort'](_0x36a0a8['query'][_0x088f('0x33')]);_0x4b5046[_0x088f('0x34')]=qs[_0x088f('0x2c')](_[_0x088f('0x35')](_0x36a0a8[_0x088f('0x2e')],_0x2c9123[_0x088f('0x2c')]),_0x59b9dd);if(_0x36a0a8[_0x088f('0x2e')][_0x088f('0x36')]){_0x4b5046[_0x088f('0x34')]=_[_0x088f('0x37')](_0x4b5046['where'],{'$or':_[_0x088f('0x26')](_0x59b9dd,function(_0x5dc58b){if(_0x5dc58b[_0x088f('0x29')]!==_0x088f('0x38')){var _0x13abca={};_0x13abca[_0x5dc58b[_0x088f('0x25')]]={'$like':'%'+_0x36a0a8[_0x088f('0x2e')][_0x088f('0x36')]+'%'};return _0x13abca;}})});}_0x4b5046=_[_0x088f('0x37')]({},_0x4b5046,_0x36a0a8[_0x088f('0x39')]);var _0x1f32b8={'where':_0x4b5046[_0x088f('0x34')]};return db[_0x088f('0x27')][_0x088f('0x1c')](_0x1f32b8)[_0x088f('0x21')](function(_0x2ba766){_0x583212['count']=_0x2ba766;if(_0x36a0a8[_0x088f('0x2e')]['includeAll']){_0x4b5046['include']=[{'all':!![]}];}return db[_0x088f('0x27')][_0x088f('0x3a')](_0x4b5046);})[_0x088f('0x21')](function(_0x3d3984){_0x583212[_0x088f('0x3b')]=_0x3d3984;return _0x583212;})[_0x088f('0x21')](respondWithFilteredResult(_0x486119,_0x4b5046))[_0x088f('0x3c')](handleError(_0x486119,null));};exports[_0x088f('0x3d')]=function(_0x5ed10a,_0x1d7937){var _0x5d7a50={'raw':!![],'where':{'id':_0x5ed10a['params']['id']}},_0x42cef0={};_0x42cef0['model']=_[_0x088f('0x3e')](db[_0x088f('0x27')][_0x088f('0x28')]);_0x42cef0[_0x088f('0x2e')]=_[_0x088f('0x3e')](_0x5ed10a[_0x088f('0x2e')]);_0x42cef0[_0x088f('0x2c')]=_[_0x088f('0x2d')](_0x42cef0[_0x088f('0x2b')],_0x42cef0[_0x088f('0x2e')]);_0x5d7a50['attributes']=_[_0x088f('0x2d')](_0x42cef0['model'],qs['fields'](_0x5ed10a[_0x088f('0x2e')]['fields']));_0x5d7a50[_0x088f('0x2f')]=_0x5d7a50[_0x088f('0x2f')][_0x088f('0x31')]?_0x5d7a50[_0x088f('0x2f')]:_0x42cef0[_0x088f('0x2b')];if(_0x5ed10a[_0x088f('0x2e')][_0x088f('0x3f')]){_0x5d7a50[_0x088f('0x40')]=[{'all':!![]}];}_0x5d7a50=_[_0x088f('0x37')]({},_0x5d7a50,_0x5ed10a[_0x088f('0x39')]);return db[_0x088f('0x27')]['find'](_0x5d7a50)[_0x088f('0x21')](handleEntityNotFound(_0x1d7937,null))[_0x088f('0x21')](respondWithResult(_0x1d7937,null))[_0x088f('0x3c')](handleError(_0x1d7937,null));};exports[_0x088f('0x41')]=function(_0x15f76c,_0x1d4cb3){return db[_0x088f('0x27')][_0x088f('0x41')](_0x15f76c[_0x088f('0x42')],{})[_0x088f('0x21')](respondWithResult(_0x1d4cb3,0xc9))[_0x088f('0x3c')](handleError(_0x1d4cb3,null));};exports['update']=function(_0x49d88a,_0x3d1a26){if(_0x49d88a[_0x088f('0x42')]['id']){delete _0x49d88a['body']['id'];}return db[_0x088f('0x27')][_0x088f('0x43')]({'where':{'id':_0x49d88a[_0x088f('0x44')]['id']}})[_0x088f('0x21')](handleEntityNotFound(_0x3d1a26,null))[_0x088f('0x21')](saveUpdates(_0x49d88a[_0x088f('0x42')],null))['then'](respondWithResult(_0x3d1a26,null))['catch'](handleError(_0x3d1a26,null));};exports[_0x088f('0x45')]=function(_0x2cbb6d,_0x5d7fad,_0x22f6bb){var _0x36cce6=require(_0x088f('0x46'));var _0x5eac32=![];var _0x19d436={};if(_0x2cbb6d['query'][_0x088f('0x29')]&&_0x2cbb6d[_0x088f('0x2e')]['type']===_0x088f('0x47')){_0x19d436[_0x088f('0x47')]=_0x2cbb6d[_0x088f('0x44')]['id'];}else{_0x19d436['id']=_0x2cbb6d[_0x088f('0x44')]['id'];}return db[_0x088f('0x27')][_0x088f('0x43')]({'where':_0x19d436,'attributes':['id',_0x088f('0x48'),'filename'],'raw':!![]})[_0x088f('0x21')](handleEntityNotFound(_0x5d7fad,null))[_0x088f('0x21')](function(_0x414c56){if(_0x414c56){var _0x48a179=_0x414c56[_0x088f('0x48')];var _0x3c13f9=util[_0x088f('0x49')](_0x088f('0x4a'),_0x48a179);if(fs['existsSync'](_0x3c13f9)){_0x5eac32=!![];return _0x36cce6[_0x088f('0x4b')](_0x3c13f9,_0x48a179,config[_0x088f('0x4c')][_0x088f('0x4d')])[_0x088f('0x21')](function(){return _0x414c56;});}return _0x414c56;}})['then'](function(_0x23f62a){if(_0x23f62a){var _0x25d24e=_0x23f62a[_0x088f('0x48')];if(!fs['existsSync'](_0x25d24e)){throw new db[(_0x088f('0x4e'))][(_0x088f('0x4f'))]('SquareRecording\x20not\x20found');}if(_0x23f62a[_0x088f('0x50')]){return _0x5d7fad[_0x088f('0x45')](_0x25d24e,_0x23f62a[_0x088f('0x50')]+path['extname'](_0x25d24e),function(){if(_0x5eac32){fs[_0x088f('0x51')](_0x25d24e);}});}else{return _0x5d7fad[_0x088f('0x45')](_0x25d24e,function(_0x4f4c5c){if(_0x5eac32){fs['unlink'](_0x25d24e);}});}}})[_0x088f('0x3c')](function(_0x114e4d){if(_0x114e4d['message']===_0x088f('0x52')){_0x5d7fad[_0x088f('0x17')](0x194)[_0x088f('0x53')](_0x088f('0x54'));}else{return handleError(_0x5d7fad,null);}});};exports['destroy']=function(_0x4bac82,_0x5c670a){return db[_0x088f('0x27')]['find']({'where':{'id':_0x4bac82[_0x088f('0x44')]['id']}})[_0x088f('0x21')](function(_0x102d4a){if(_[_0x088f('0x55')](_0x102d4a)){throw new ReferenceError(_0x088f('0x56'));}return _0x102d4a;})[_0x088f('0x21')](function(_0x2830a5){var _0x284a12=_0x2830a5['savePath'];logger[_0x088f('0x57')](_0x088f('0x58'),_0x284a12);if(!_[_0x088f('0x55')](_0x2830a5[_0x088f('0x48')])&&fs[_0x088f('0x59')](_0x284a12)){logger[_0x088f('0x57')](_0x088f('0x5a')+_0x284a12+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x088f('0x5b')](_0x284a12);}_0x284a12=_0x284a12+_0x088f('0x5c');if(!_[_0x088f('0x55')](_0x2830a5[_0x088f('0x48')])&&fs[_0x088f('0x59')](_0x284a12)){logger[_0x088f('0x57')](_0x088f('0x5a')+_0x284a12+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x088f('0x5b')](_0x284a12);}return _0x2830a5;})[_0x088f('0x21')](function(_0x2b209a){if(!_0x2b209a)throw new InternalError();return _0x2b209a[_0x088f('0x22')]();})[_0x088f('0x21')](function(){_0x5c670a[_0x088f('0x17')](0xcc)[_0x088f('0x16')]();})[_0x088f('0x3c')](handleError(_0x5c670a,null));};
\ No newline at end of file
+var _0x7897=['limit','reject','save','then','destroy','end','error','stack','name','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','filter','merge','VIRTUAL','options','SquareRecording','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','update','params','download','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','existsSync','secrets','SquareRecording\x20not\x20found','extname','unlink','message','send','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset'];(function(_0x33d3a7,_0x327a30){var _0x619b9=function(_0x20601e){while(--_0x20601e){_0x33d3a7['push'](_0x33d3a7['shift']());}};_0x619b9(++_0x327a30);}(_0x7897,0x9d));var _0x7789=function(_0x197cf7,_0x37308d){_0x197cf7=_0x197cf7-0x0;var _0x436f84=_0x7897[_0x197cf7];return _0x436f84;};'use strict';var emlformat=require(_0x7789('0x0'));var rimraf=require(_0x7789('0x1'));var zipdir=require(_0x7789('0x2'));var jsonpatch=require(_0x7789('0x3'));var rp=require(_0x7789('0x4'));var moment=require(_0x7789('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7789('0x6'));var util=require(_0x7789('0x7'));var path=require(_0x7789('0x8'));var sox=require('sox');var csv=require(_0x7789('0x9'));var ejs=require(_0x7789('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7789('0xb'));var squel=require(_0x7789('0xc'));var crypto=require(_0x7789('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7789('0xe'));var toCsv=require(_0x7789('0x9'));var querystring=require(_0x7789('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7789('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7789('0x11'))(_0x7789('0x12'));var utils=require(_0x7789('0x13'));var config=require(_0x7789('0x14'));var licenseUtil=require(_0x7789('0x15'));var db=require(_0x7789('0x16'))['db'];function respondWithStatusCode(_0xa096ce,_0x666c68){_0x666c68=_0x666c68||0xcc;return function(_0x366e2c){if(_0x366e2c){return _0xa096ce[_0x7789('0x17')](_0x666c68);}return _0xa096ce[_0x7789('0x18')](_0x666c68)['end']();};}function respondWithResult(_0x273dd3,_0x5797cf){_0x5797cf=_0x5797cf||0xc8;return function(_0x2d85b1){if(_0x2d85b1){return _0x273dd3[_0x7789('0x18')](_0x5797cf)[_0x7789('0x19')](_0x2d85b1);}};}function respondWithFilteredResult(_0x3dbfe6,_0x36e0c5){return function(_0x1b582b){if(_0x1b582b){var _0x4f0d02=typeof _0x36e0c5['offset']==='undefined'&&typeof _0x36e0c5['limit']===_0x7789('0x1a');var _0x5c8a26=_0x1b582b[_0x7789('0x1b')];var _0x3c20de=_0x4f0d02?0x0:_0x36e0c5[_0x7789('0x1c')];var _0x5f3163=_0x4f0d02?_0x1b582b['count']:_0x36e0c5[_0x7789('0x1c')]+_0x36e0c5[_0x7789('0x1d')];var _0x4e3786;if(_0x5f3163>=_0x5c8a26){_0x5f3163=_0x5c8a26;_0x4e3786=0xc8;}else{_0x4e3786=0xce;}_0x3dbfe6[_0x7789('0x18')](_0x4e3786);return _0x3dbfe6['set']('Content-Range',_0x3c20de+'-'+_0x5f3163+'/'+_0x5c8a26)[_0x7789('0x19')](_0x1b582b);}return null;};}function patchUpdates(_0x25ba72){return function(_0x3dc303){try{jsonpatch['apply'](_0x3dc303,_0x25ba72,!![]);}catch(_0x492ce2){return BPromise[_0x7789('0x1e')](_0x492ce2);}return _0x3dc303[_0x7789('0x1f')]();};}function saveUpdates(_0x1e933c,_0x1eb8b6){return function(_0x44db76){if(_0x44db76){return _0x44db76['update'](_0x1e933c)[_0x7789('0x20')](function(_0x459d35){return _0x459d35;});}return null;};}function removeEntity(_0xf17f3a,_0x477042){return function(_0x17e7b6){if(_0x17e7b6){return _0x17e7b6[_0x7789('0x21')]()[_0x7789('0x20')](function(){_0xf17f3a[_0x7789('0x18')](0xcc)[_0x7789('0x22')]();});}};}function handleEntityNotFound(_0xad6d19,_0xd4af4b){return function(_0x3abe07){if(!_0x3abe07){_0xad6d19[_0x7789('0x17')](0x194);}return _0x3abe07;};}function handleError(_0x271678,_0x12ef6b){_0x12ef6b=_0x12ef6b||0x1f4;return function(_0x3642cb){logger[_0x7789('0x23')](_0x3642cb[_0x7789('0x24')]);if(_0x3642cb[_0x7789('0x25')]){delete _0x3642cb[_0x7789('0x25')];}_0x271678[_0x7789('0x18')](_0x12ef6b)['send'](_0x3642cb);};}exports[_0x7789('0x26')]=function(_0x3e0bc5,_0xd8b1af){var _0x5964c8={},_0x551270={},_0x23b587={'count':0x0,'rows':[]};var _0xf431ea=_[_0x7789('0x27')](db['SquareRecording']['rawAttributes'],function(_0x34c884){return{'name':_0x34c884[_0x7789('0x28')],'type':_0x34c884[_0x7789('0x29')][_0x7789('0x2a')]};});_0x551270[_0x7789('0x2b')]=_[_0x7789('0x27')](_0xf431ea,_0x7789('0x25'));_0x551270[_0x7789('0x2c')]=_[_0x7789('0x2d')](_0x3e0bc5[_0x7789('0x2c')]);_0x551270['filters']=_[_0x7789('0x2e')](_0x551270['model'],_0x551270[_0x7789('0x2c')]);_0x5964c8[_0x7789('0x2f')]=_[_0x7789('0x2e')](_0x551270[_0x7789('0x2b')],qs[_0x7789('0x30')](_0x3e0bc5[_0x7789('0x2c')][_0x7789('0x30')]));_0x5964c8['attributes']=_0x5964c8[_0x7789('0x2f')][_0x7789('0x31')]?_0x5964c8[_0x7789('0x2f')]:_0x551270[_0x7789('0x2b')];if(!_0x3e0bc5['query']['hasOwnProperty']('nolimit')){_0x5964c8[_0x7789('0x1d')]=qs[_0x7789('0x1d')](_0x3e0bc5['query'][_0x7789('0x1d')]);_0x5964c8[_0x7789('0x1c')]=qs[_0x7789('0x1c')](_0x3e0bc5[_0x7789('0x2c')][_0x7789('0x1c')]);}_0x5964c8[_0x7789('0x32')]=qs[_0x7789('0x33')](_0x3e0bc5[_0x7789('0x2c')][_0x7789('0x33')]);_0x5964c8[_0x7789('0x34')]=qs[_0x7789('0x35')](_['pick'](_0x3e0bc5['query'],_0x551270[_0x7789('0x35')]),_0xf431ea);if(_0x3e0bc5[_0x7789('0x2c')][_0x7789('0x36')]){_0x5964c8['where']=_[_0x7789('0x37')](_0x5964c8[_0x7789('0x34')],{'$or':_[_0x7789('0x27')](_0xf431ea,function(_0x4f2cb2){if(_0x4f2cb2['type']!==_0x7789('0x38')){var _0x476c2f={};_0x476c2f[_0x4f2cb2[_0x7789('0x25')]]={'$like':'%'+_0x3e0bc5[_0x7789('0x2c')][_0x7789('0x36')]+'%'};return _0x476c2f;}})});}_0x5964c8=_['merge']({},_0x5964c8,_0x3e0bc5[_0x7789('0x39')]);var _0x2fc5a9={'where':_0x5964c8[_0x7789('0x34')]};return db[_0x7789('0x3a')]['count'](_0x2fc5a9)[_0x7789('0x20')](function(_0x2164f0){_0x23b587[_0x7789('0x1b')]=_0x2164f0;if(_0x3e0bc5['query'][_0x7789('0x3b')]){_0x5964c8[_0x7789('0x3c')]=[{'all':!![]}];}return db['SquareRecording'][_0x7789('0x3d')](_0x5964c8);})['then'](function(_0x9662cd){_0x23b587['rows']=_0x9662cd;return _0x23b587;})[_0x7789('0x20')](respondWithFilteredResult(_0xd8b1af,_0x5964c8))[_0x7789('0x3e')](handleError(_0xd8b1af,null));};exports[_0x7789('0x3f')]=function(_0x11e98b,_0x1ff46d){var _0x582a38={'raw':!![],'where':{'id':_0x11e98b['params']['id']}},_0x2cad5a={};_0x2cad5a[_0x7789('0x2b')]=_[_0x7789('0x2d')](db['SquareRecording'][_0x7789('0x40')]);_0x2cad5a[_0x7789('0x2c')]=_[_0x7789('0x2d')](_0x11e98b[_0x7789('0x2c')]);_0x2cad5a[_0x7789('0x35')]=_[_0x7789('0x2e')](_0x2cad5a[_0x7789('0x2b')],_0x2cad5a[_0x7789('0x2c')]);_0x582a38[_0x7789('0x2f')]=_[_0x7789('0x2e')](_0x2cad5a[_0x7789('0x2b')],qs[_0x7789('0x30')](_0x11e98b[_0x7789('0x2c')]['fields']));_0x582a38['attributes']=_0x582a38[_0x7789('0x2f')][_0x7789('0x31')]?_0x582a38[_0x7789('0x2f')]:_0x2cad5a[_0x7789('0x2b')];if(_0x11e98b[_0x7789('0x2c')][_0x7789('0x3b')]){_0x582a38[_0x7789('0x3c')]=[{'all':!![]}];}_0x582a38=_[_0x7789('0x37')]({},_0x582a38,_0x11e98b[_0x7789('0x39')]);return db['SquareRecording'][_0x7789('0x41')](_0x582a38)['then'](handleEntityNotFound(_0x1ff46d,null))[_0x7789('0x20')](respondWithResult(_0x1ff46d,null))[_0x7789('0x3e')](handleError(_0x1ff46d,null));};exports['create']=function(_0x55fbfd,_0x39b380){return db['SquareRecording'][_0x7789('0x42')](_0x55fbfd[_0x7789('0x43')],{})['then'](respondWithResult(_0x39b380,0xc9))[_0x7789('0x3e')](handleError(_0x39b380,null));};exports[_0x7789('0x44')]=function(_0x2bd657,_0x3d6950){if(_0x2bd657[_0x7789('0x43')]['id']){delete _0x2bd657[_0x7789('0x43')]['id'];}return db[_0x7789('0x3a')][_0x7789('0x41')]({'where':{'id':_0x2bd657[_0x7789('0x45')]['id']}})[_0x7789('0x20')](handleEntityNotFound(_0x3d6950,null))['then'](saveUpdates(_0x2bd657[_0x7789('0x43')],null))[_0x7789('0x20')](respondWithResult(_0x3d6950,null))[_0x7789('0x3e')](handleError(_0x3d6950,null));};exports[_0x7789('0x46')]=function(_0x434d1a,_0x36aa45,_0x2042b2){var _0x4adbd1=require(_0x7789('0x47'));var _0x318277=![];var _0x40d340={};if(_0x434d1a['query'][_0x7789('0x29')]&&_0x434d1a[_0x7789('0x2c')]['type']==='uniqueid'){_0x40d340[_0x7789('0x48')]=_0x434d1a[_0x7789('0x45')]['id'];}else{_0x40d340['id']=_0x434d1a[_0x7789('0x45')]['id'];}return db[_0x7789('0x3a')]['find']({'where':_0x40d340,'attributes':['id',_0x7789('0x49'),_0x7789('0x4a')],'raw':!![]})[_0x7789('0x20')](handleEntityNotFound(_0x36aa45,null))[_0x7789('0x20')](function(_0x143476){if(_0x143476){var _0x36d9fe=_0x143476[_0x7789('0x49')];var _0x1a7315=util[_0x7789('0x4b')](_0x7789('0x4c'),_0x36d9fe);if(fs[_0x7789('0x4d')](_0x1a7315)){_0x318277=!![];return _0x4adbd1['decryptFile'](_0x1a7315,_0x36d9fe,config[_0x7789('0x4e')]['recording'])['then'](function(){return _0x143476;});}return _0x143476;}})[_0x7789('0x20')](function(_0x43c79d){if(_0x43c79d){var _0x14d44b=_0x43c79d[_0x7789('0x49')];if(!fs[_0x7789('0x4d')](_0x14d44b)){throw new db['Sequelize']['ValidationError'](_0x7789('0x4f'));}if(_0x43c79d[_0x7789('0x4a')]){return _0x36aa45[_0x7789('0x46')](_0x14d44b,_0x43c79d['filename']+path[_0x7789('0x50')](_0x14d44b),function(){if(_0x318277){fs[_0x7789('0x51')](_0x14d44b);}});}else{return _0x36aa45[_0x7789('0x46')](_0x14d44b,function(_0x3bae9f){if(_0x318277){fs[_0x7789('0x51')](_0x14d44b);}});}}})[_0x7789('0x3e')](function(_0x2255bb){if(_0x2255bb[_0x7789('0x52')]===_0x7789('0x4f')){_0x36aa45['status'](0x194)[_0x7789('0x53')](_0x7789('0x54'));}else{return handleError(_0x36aa45,null);}});};exports[_0x7789('0x21')]=function(_0x30c5c4,_0x1296a1){return db[_0x7789('0x3a')]['find']({'where':{'id':_0x30c5c4[_0x7789('0x45')]['id']}})[_0x7789('0x20')](function(_0x57bdd0){if(_[_0x7789('0x55')](_0x57bdd0)){throw new ReferenceError(_0x7789('0x56'));}return _0x57bdd0;})[_0x7789('0x20')](function(_0x181331){var _0x3b8644=_0x181331['savePath'];logger[_0x7789('0x57')](_0x7789('0x58'),_0x3b8644);if(!_[_0x7789('0x55')](_0x181331[_0x7789('0x49')])&&fs['existsSync'](_0x3b8644)){logger[_0x7789('0x57')](_0x7789('0x59')+_0x3b8644+_0x7789('0x5a'));fs[_0x7789('0x5b')](_0x3b8644);}_0x3b8644=_0x3b8644+_0x7789('0x5c');if(!_['isNil'](_0x181331['savePath'])&&fs[_0x7789('0x4d')](_0x3b8644)){logger[_0x7789('0x57')]('File:\x20\x22'+_0x3b8644+_0x7789('0x5a'));fs[_0x7789('0x5b')](_0x3b8644);}return _0x181331;})['then'](function(_0x1c4ab8){if(!_0x1c4ab8)throw new InternalError();return _0x1c4ab8[_0x7789('0x21')]();})['then'](function(){_0x1296a1[_0x7789('0x18')](0xcc)[_0x7789('0x22')]();})[_0x7789('0x3e')](handleError(_0x1296a1,null));};
\ No newline at end of file
index 2d32af8..3bd6045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe61c=['api','moment','path','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','lodash','../../config/logger'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0xe61c,0xee));var _0xce61=function(_0x5e8c32,_0x1b1f3f){_0x5e8c32=_0x5e8c32-0x0;var _0x595f7b=_0xe61c[_0x5e8c32];return _0x595f7b;};'use strict';var _=require(_0xce61('0x0'));var util=require('util');var logger=require(_0xce61('0x1'))(_0xce61('0x2'));var moment=require(_0xce61('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xce61('0x4'));var rimraf=require('rimraf');var config=require(_0xce61('0x5'));var attributes=require(_0xce61('0x6'));module[_0xce61('0x7')]=function(_0x200b9a,_0x239319){return _0x200b9a[_0xce61('0x8')](_0xce61('0x9'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb22=['./squareRecording.attributes','define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xabbd65,_0x546d99){var _0x1d005a=function(_0x11694e){while(--_0x11694e){_0xabbd65['push'](_0xabbd65['shift']());}};_0x1d005a(++_0x546d99);}(_0xcb22,0xc8));var _0x2cb2=function(_0x3dbcbc,_0xaa89df){_0x3dbcbc=_0x3dbcbc-0x0;var _0x3282d6=_0xcb22[_0x3dbcbc];return _0x3282d6;};'use strict';var _=require(_0x2cb2('0x0'));var util=require(_0x2cb2('0x1'));var logger=require(_0x2cb2('0x2'))(_0x2cb2('0x3'));var moment=require(_0x2cb2('0x4'));var BPromise=require(_0x2cb2('0x5'));var rp=require(_0x2cb2('0x6'));var fs=require('fs');var path=require(_0x2cb2('0x7'));var rimraf=require(_0x2cb2('0x8'));var config=require(_0x2cb2('0x9'));var attributes=require(_0x2cb2('0xa'));module['exports']=function(_0x77ae56,_0x3582d7){return _0x77ae56[_0x2cb2('0xb')](_0x2cb2('0xc'),attributes,{'tableName':_0x2cb2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 26fd86a..9d39b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ddf=['debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareRecording','body','options','raw'];(function(_0x33c609,_0x77caa7){var _0x5ee902=function(_0x41cf2c){while(--_0x41cf2c){_0x33c609['push'](_0x33c609['shift']());}};_0x5ee902(++_0x77caa7);}(_0x3ddf,0x140));var _0xf3dd=function(_0x47777d,_0x3e8cd2){_0x47777d=_0x47777d-0x0;var _0x109482=_0x3ddf[_0x47777d];return _0x109482;};'use strict';var _=require(_0xf3dd('0x0'));var util=require(_0xf3dd('0x1'));var moment=require(_0xf3dd('0x2'));var BPromise=require(_0xf3dd('0x3'));var rs=require(_0xf3dd('0x4'));var fs=require('fs');var Redis=require(_0xf3dd('0x5'));var db=require(_0xf3dd('0x6'))['db'];var utils=require(_0xf3dd('0x7'));var logger=require(_0xf3dd('0x8'))(_0xf3dd('0x9'));var config=require('../../config/environment');var jayson=require(_0xf3dd('0xa'));var client=jayson[_0xf3dd('0xb')][_0xf3dd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x39e9a8,_0x1cdb4b,_0x314143){return new BPromise(function(_0x109ddc,_0x3f5e2f){return client[_0xf3dd('0xd')](_0x39e9a8,_0x314143)[_0xf3dd('0xe')](function(_0x1ffe73){logger[_0xf3dd('0xf')](_0xf3dd('0x10'),_0x1cdb4b,_0xf3dd('0x11'));logger['debug'](_0xf3dd('0x12'),_0x1cdb4b,_0xf3dd('0x11'),JSON[_0xf3dd('0x13')](_0x1ffe73));if(_0x1ffe73[_0xf3dd('0x14')]){if(_0x1ffe73[_0xf3dd('0x14')][_0xf3dd('0x15')]===0x1f4){logger[_0xf3dd('0x14')]('SquareRecording,\x20%s,\x20%s',_0x1cdb4b,_0x1ffe73[_0xf3dd('0x14')][_0xf3dd('0x16')]);return _0x3f5e2f(_0x1ffe73['error'][_0xf3dd('0x16')]);}logger[_0xf3dd('0x14')](_0xf3dd('0x10'),_0x1cdb4b,_0x1ffe73['error'][_0xf3dd('0x16')]);return _0x109ddc(_0x1ffe73['error'][_0xf3dd('0x16')]);}else{logger[_0xf3dd('0xf')](_0xf3dd('0x10'),_0x1cdb4b,'request\x20sent');_0x109ddc(_0x1ffe73['result'][_0xf3dd('0x16')]);}})[_0xf3dd('0x17')](function(_0x1bfaaf){logger['error'](_0xf3dd('0x10'),_0x1cdb4b,_0x1bfaaf);_0x3f5e2f(_0x1bfaaf);});});}exports[_0xf3dd('0x18')]=function(_0x4dc011){var _0x4a9c8f=this;return new Promise(function(_0x4158cf,_0x2df95f){return db['SquareRecording']['create'](_0x4dc011[_0xf3dd('0x19')],{'raw':_0x4dc011[_0xf3dd('0x1a')]?_0x4dc011[_0xf3dd('0x1a')][_0xf3dd('0x1b')]===undefined?!![]:![]:!![]})[_0xf3dd('0xe')](function(_0x147857){logger['info'](_0xf3dd('0x18'),_0x4dc011);logger[_0xf3dd('0x1c')](_0xf3dd('0x18'),_0x4dc011,JSON[_0xf3dd('0x13')](_0x147857));_0x4158cf(_0x147857);})[_0xf3dd('0x17')](function(_0x44b1e4){logger['error'](_0xf3dd('0x18'),_0x44b1e4[_0xf3dd('0x16')],_0x4dc011);_0x2df95f(_0x4a9c8f[_0xf3dd('0x14')](0x1f4,_0x44b1e4[_0xf3dd('0x16')]));});});};
\ No newline at end of file
+var _0x3166=['SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateSquareRecording','SquareRecording','create','body','options','raw','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x49655b,_0x40c634){var _0x1878c9=function(_0x3b3b7b){while(--_0x3b3b7b){_0x49655b['push'](_0x49655b['shift']());}};_0x1878c9(++_0x40c634);}(_0x3166,0xbb));var _0x6316=function(_0x3fcaa7,_0x30061b){_0x3fcaa7=_0x3fcaa7-0x0;var _0x3ce07c=_0x3166[_0x3fcaa7];return _0x3ce07c;};'use strict';var _=require('lodash');var util=require(_0x6316('0x0'));var moment=require(_0x6316('0x1'));var BPromise=require(_0x6316('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6316('0x3'));var db=require(_0x6316('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6316('0x5'))(_0x6316('0x6'));var config=require('../../config/environment');var jayson=require(_0x6316('0x7'));var client=jayson[_0x6316('0x8')][_0x6316('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24d39c,_0x58058a,_0x2d7d22){return new BPromise(function(_0x31ca1a,_0x56abe5){return client[_0x6316('0xa')](_0x24d39c,_0x2d7d22)[_0x6316('0xb')](function(_0xed311e){logger[_0x6316('0xc')](_0x6316('0xd'),_0x58058a,_0x6316('0xe'));logger[_0x6316('0xf')](_0x6316('0x10'),_0x58058a,_0x6316('0xe'),JSON[_0x6316('0x11')](_0xed311e));if(_0xed311e[_0x6316('0x12')]){if(_0xed311e['error'][_0x6316('0x13')]===0x1f4){logger[_0x6316('0x12')](_0x6316('0xd'),_0x58058a,_0xed311e[_0x6316('0x12')][_0x6316('0x14')]);return _0x56abe5(_0xed311e[_0x6316('0x12')]['message']);}logger[_0x6316('0x12')](_0x6316('0xd'),_0x58058a,_0xed311e[_0x6316('0x12')][_0x6316('0x14')]);return _0x31ca1a(_0xed311e['error'][_0x6316('0x14')]);}else{logger[_0x6316('0xc')](_0x6316('0xd'),_0x58058a,'request\x20sent');_0x31ca1a(_0xed311e[_0x6316('0x15')][_0x6316('0x14')]);}})['catch'](function(_0x31b704){logger[_0x6316('0x12')](_0x6316('0xd'),_0x58058a,_0x31b704);_0x56abe5(_0x31b704);});});}exports[_0x6316('0x16')]=function(_0x569db2){var _0x485ee8=this;return new Promise(function(_0x2eecb9,_0x2a2888){return db[_0x6316('0x17')][_0x6316('0x18')](_0x569db2[_0x6316('0x19')],{'raw':_0x569db2[_0x6316('0x1a')]?_0x569db2[_0x6316('0x1a')][_0x6316('0x1b')]===undefined?!![]:![]:!![]})[_0x6316('0xb')](function(_0x3e4543){logger[_0x6316('0xc')]('CreateSquareRecording',_0x569db2);logger[_0x6316('0xf')](_0x6316('0x16'),_0x569db2,JSON[_0x6316('0x11')](_0x3e4543));_0x2eecb9(_0x3e4543);})[_0x6316('0x1c')](function(_0x3cfc43){logger[_0x6316('0x12')](_0x6316('0x16'),_0x3cfc43[_0x6316('0x14')],_0x569db2);_0x2a2888(_0x485ee8['error'](0x1f4,_0x3cfc43[_0x6316('0x14')]));});});};
\ No newline at end of file
index ea096b5..4964015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x22e9fe,_0x3d019f){var _0x47cd19=function(_0x8fd5fc){while(--_0x8fd5fc){_0x22e9fe['push'](_0x22e9fe['shift']());}};_0x47cd19(++_0x3d019f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0xef66ed,_0x1a5239){var _0xa14f66=function(_0x458541){while(--_0x458541){_0xef66ed['push'](_0xef66ed['shift']());}};_0xa14f66(++_0x1a5239);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 1e55c5c..954db8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf139=['BOOLEAN','sequelize','exports','STRING'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xf139,0x14d));var _0x9f13=function(_0x5e8a43,_0xc369ab){_0x5e8a43=_0x5e8a43-0x0;var _0x511411=_0xf139[_0x5e8a43];return _0x511411;};'use strict';var Sequelize=require(_0x9f13('0x0'));module[_0x9f13('0x1')]={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x9f13('0x2')]},'request':{'type':Sequelize[_0x9f13('0x2')]},'channel':{'type':Sequelize[_0x9f13('0x2')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x9f13('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x9f13('0x2')]},'callingpres':{'type':Sequelize[_0x9f13('0x2')]},'callingani2':{'type':Sequelize[_0x9f13('0x2')]},'callington':{'type':Sequelize[_0x9f13('0x2')]},'callingtns':{'type':Sequelize[_0x9f13('0x2')]},'dnid':{'type':Sequelize[_0x9f13('0x2')]},'rdnis':{'type':Sequelize[_0x9f13('0x2')]},'context':{'type':Sequelize[_0x9f13('0x2')]},'extension':{'type':Sequelize[_0x9f13('0x2')]},'priority':{'type':Sequelize[_0x9f13('0x2')]},'enhanced':{'type':Sequelize[_0x9f13('0x2')]},'accountcode':{'type':Sequelize[_0x9f13('0x2')]},'threadid':{'type':Sequelize[_0x9f13('0x2')]},'project_name':{'type':Sequelize[_0x9f13('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x9f13('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0758=['STRING','DATE','exports'];(function(_0x5d33df,_0x1c60eb){var _0x1a554d=function(_0x309ea4){while(--_0x309ea4){_0x5d33df['push'](_0x5d33df['shift']());}};_0x1a554d(++_0x1c60eb);}(_0x0758,0x18b));var _0x8075=function(_0x5d80a2,_0x5c3c01){_0x5d80a2=_0x5d80a2-0x0;var _0x4e4e81=_0x0758[_0x5d80a2];return _0x4e4e81;};'use strict';var Sequelize=require('sequelize');module[_0x8075('0x0')]={'network':{'type':Sequelize[_0x8075('0x1')]},'network_script':{'type':Sequelize[_0x8075('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x8075('0x1')]},'language':{'type':Sequelize[_0x8075('0x1')]},'type':{'type':Sequelize[_0x8075('0x1')]},'uniqueid':{'type':Sequelize[_0x8075('0x1')]},'version':{'type':Sequelize[_0x8075('0x1')]},'callerid':{'type':Sequelize[_0x8075('0x1')]},'calleridname':{'type':Sequelize[_0x8075('0x1')]},'callingpres':{'type':Sequelize[_0x8075('0x1')]},'callingani2':{'type':Sequelize[_0x8075('0x1')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x8075('0x1')]},'rdnis':{'type':Sequelize[_0x8075('0x1')]},'context':{'type':Sequelize[_0x8075('0x1')]},'extension':{'type':Sequelize[_0x8075('0x1')]},'priority':{'type':Sequelize[_0x8075('0x1')]},'enhanced':{'type':Sequelize[_0x8075('0x1')]},'accountcode':{'type':Sequelize[_0x8075('0x1')]},'threadid':{'type':Sequelize[_0x8075('0x1')]},'project_name':{'type':Sequelize[_0x8075('0x1')]},'joinAt':{'type':Sequelize[_0x8075('0x2')]},'leaveAt':{'type':Sequelize[_0x8075('0x2')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 92c7243..fe0ece1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7a5=['lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','sendStatus','error','name','index','map','SquareReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','then','catch','show','params','intersection','find','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra'];(function(_0x18aa6e,_0x58fd23){var _0x21d81a=function(_0x3d7c51){while(--_0x3d7c51){_0x18aa6e['push'](_0x18aa6e['shift']());}};_0x21d81a(++_0x58fd23);}(_0xe7a5,0x1b2));var _0x5e7a=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xe7a5[_0x521929];return _0x632436;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5e7a('0x0'));var zipdir=require(_0x5e7a('0x1'));var jsonpatch=require(_0x5e7a('0x2'));var rp=require('request-promise');var moment=require(_0x5e7a('0x3'));var BPromise=require(_0x5e7a('0x4'));var Mustache=require(_0x5e7a('0x5'));var util=require('util');var path=require(_0x5e7a('0x6'));var sox=require(_0x5e7a('0x7'));var csv=require(_0x5e7a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5e7a('0x9'));var _=require(_0x5e7a('0xa'));var squel=require('squel');var crypto=require(_0x5e7a('0xb'));var jsforce=require(_0x5e7a('0xc'));var deskjs=require(_0x5e7a('0xd'));var toCsv=require(_0x5e7a('0x8'));var querystring=require(_0x5e7a('0xe'));var Papa=require(_0x5e7a('0xf'));var Redis=require(_0x5e7a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5e7a('0x11'));var as=require(_0x5e7a('0x12'));var hardwareService=require(_0x5e7a('0x13'));var logger=require('../../config/logger')(_0x5e7a('0x14'));var utils=require('../../config/utils');var config=require(_0x5e7a('0x15'));var licenseUtil=require(_0x5e7a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x556b6c,_0x152859){_0x152859=_0x152859||0xcc;return function(_0x5c4afe){if(_0x5c4afe){return _0x556b6c['sendStatus'](_0x152859);}return _0x556b6c[_0x5e7a('0x17')](_0x152859)[_0x5e7a('0x18')]();};}function respondWithResult(_0x187b54,_0x1e03c3){_0x1e03c3=_0x1e03c3||0xc8;return function(_0x5edd4d){if(_0x5edd4d){return _0x187b54[_0x5e7a('0x17')](_0x1e03c3)['json'](_0x5edd4d);}};}function respondWithFilteredResult(_0x3ee7a6,_0x3ecb9c){return function(_0x1521b1){if(_0x1521b1){var _0x19d9c7=typeof _0x3ecb9c[_0x5e7a('0x19')]===_0x5e7a('0x1a')&&typeof _0x3ecb9c[_0x5e7a('0x1b')]===_0x5e7a('0x1a');var _0x51675f=_0x1521b1[_0x5e7a('0x1c')];var _0x2a1e1d=_0x19d9c7?0x0:_0x3ecb9c['offset'];var _0x2d4ac7=_0x19d9c7?_0x1521b1[_0x5e7a('0x1c')]:_0x3ecb9c[_0x5e7a('0x19')]+_0x3ecb9c[_0x5e7a('0x1b')];var _0x1b3be2;if(_0x2d4ac7>=_0x51675f){_0x2d4ac7=_0x51675f;_0x1b3be2=0xc8;}else{_0x1b3be2=0xce;}_0x3ee7a6[_0x5e7a('0x17')](_0x1b3be2);return _0x3ee7a6[_0x5e7a('0x1d')](_0x5e7a('0x1e'),_0x2a1e1d+'-'+_0x2d4ac7+'/'+_0x51675f)[_0x5e7a('0x1f')](_0x1521b1);}return null;};}function patchUpdates(_0x18c250){return function(_0xe0449f){try{jsonpatch['apply'](_0xe0449f,_0x18c250,!![]);}catch(_0x570349){return BPromise[_0x5e7a('0x20')](_0x570349);}return _0xe0449f[_0x5e7a('0x21')]();};}function saveUpdates(_0x3f22a5,_0x10dce1){return function(_0x117490){if(_0x117490){return _0x117490[_0x5e7a('0x22')](_0x3f22a5)['then'](function(_0xd89d9c){return _0xd89d9c;});}return null;};}function removeEntity(_0x47855f,_0x2d8518){return function(_0x3368ea){if(_0x3368ea){return _0x3368ea['destroy']()['then'](function(){_0x47855f['status'](0xcc)[_0x5e7a('0x18')]();});}};}function handleEntityNotFound(_0x22761b,_0x5ef4b3){return function(_0x9b7964){if(!_0x9b7964){_0x22761b[_0x5e7a('0x23')](0x194);}return _0x9b7964;};}function handleError(_0x4b67dc,_0x5e56ec){_0x5e56ec=_0x5e56ec||0x1f4;return function(_0x25359d){logger[_0x5e7a('0x24')](_0x25359d['stack']);if(_0x25359d[_0x5e7a('0x25')]){delete _0x25359d['name'];}_0x4b67dc[_0x5e7a('0x17')](_0x5e56ec)['send'](_0x25359d);};}exports[_0x5e7a('0x26')]=function(_0x4aa78a,_0x50d3de){var _0x3e9e2f={},_0x4cc82e={},_0x252f84={'count':0x0,'rows':[]};var _0x53f979=_[_0x5e7a('0x27')](db[_0x5e7a('0x28')][_0x5e7a('0x29')],function(_0x36112b){return{'name':_0x36112b[_0x5e7a('0x2a')],'type':_0x36112b[_0x5e7a('0x2b')][_0x5e7a('0x2c')]};});_0x4cc82e[_0x5e7a('0x2d')]=_[_0x5e7a('0x27')](_0x53f979,_0x5e7a('0x25'));_0x4cc82e[_0x5e7a('0x2e')]=_[_0x5e7a('0x2f')](_0x4aa78a[_0x5e7a('0x2e')]);_0x4cc82e[_0x5e7a('0x30')]=_['intersection'](_0x4cc82e[_0x5e7a('0x2d')],_0x4cc82e[_0x5e7a('0x2e')]);_0x3e9e2f[_0x5e7a('0x31')]=_['intersection'](_0x4cc82e[_0x5e7a('0x2d')],qs[_0x5e7a('0x32')](_0x4aa78a[_0x5e7a('0x2e')][_0x5e7a('0x32')]));_0x3e9e2f[_0x5e7a('0x31')]=_0x3e9e2f[_0x5e7a('0x31')][_0x5e7a('0x33')]?_0x3e9e2f['attributes']:_0x4cc82e[_0x5e7a('0x2d')];if(!_0x4aa78a[_0x5e7a('0x2e')][_0x5e7a('0x34')](_0x5e7a('0x35'))){_0x3e9e2f[_0x5e7a('0x1b')]=qs['limit'](_0x4aa78a[_0x5e7a('0x2e')][_0x5e7a('0x1b')]);_0x3e9e2f['offset']=qs[_0x5e7a('0x19')](_0x4aa78a[_0x5e7a('0x2e')][_0x5e7a('0x19')]);}_0x3e9e2f[_0x5e7a('0x36')]=qs[_0x5e7a('0x37')](_0x4aa78a[_0x5e7a('0x2e')][_0x5e7a('0x37')]);_0x3e9e2f[_0x5e7a('0x38')]=qs[_0x5e7a('0x30')](_[_0x5e7a('0x39')](_0x4aa78a[_0x5e7a('0x2e')],_0x4cc82e[_0x5e7a('0x30')]),_0x53f979);if(_0x4aa78a['query'][_0x5e7a('0x3a')]){_0x3e9e2f['where']=_[_0x5e7a('0x3b')](_0x3e9e2f[_0x5e7a('0x38')],{'$or':_['map'](_0x53f979,function(_0x413db5){if(_0x413db5[_0x5e7a('0x2b')]!==_0x5e7a('0x3c')){var _0x12b0b5={};_0x12b0b5[_0x413db5['name']]={'$like':'%'+_0x4aa78a[_0x5e7a('0x2e')][_0x5e7a('0x3a')]+'%'};return _0x12b0b5;}})});}_0x3e9e2f=_[_0x5e7a('0x3b')]({},_0x3e9e2f,_0x4aa78a[_0x5e7a('0x3d')]);var _0x1323cb={'where':_0x3e9e2f[_0x5e7a('0x38')]};return db[_0x5e7a('0x28')][_0x5e7a('0x1c')](_0x1323cb)['then'](function(_0x1073b){_0x252f84[_0x5e7a('0x1c')]=_0x1073b;if(_0x4aa78a[_0x5e7a('0x2e')][_0x5e7a('0x3e')]){_0x3e9e2f[_0x5e7a('0x3f')]=[{'all':!![]}];}return db[_0x5e7a('0x28')]['findAll'](_0x3e9e2f);})[_0x5e7a('0x40')](function(_0x4f744c){_0x252f84['rows']=_0x4f744c;return _0x252f84;})[_0x5e7a('0x40')](respondWithFilteredResult(_0x50d3de,_0x3e9e2f))[_0x5e7a('0x41')](handleError(_0x50d3de,null));};exports[_0x5e7a('0x42')]=function(_0xbe3e63,_0x5bae4e){var _0x54430d={'raw':!![],'where':{'id':_0xbe3e63[_0x5e7a('0x43')]['id']}},_0x11f338={};_0x11f338[_0x5e7a('0x2d')]=_[_0x5e7a('0x2f')](db[_0x5e7a('0x28')][_0x5e7a('0x29')]);_0x11f338[_0x5e7a('0x2e')]=_[_0x5e7a('0x2f')](_0xbe3e63['query']);_0x11f338[_0x5e7a('0x30')]=_[_0x5e7a('0x44')](_0x11f338['model'],_0x11f338[_0x5e7a('0x2e')]);_0x54430d[_0x5e7a('0x31')]=_[_0x5e7a('0x44')](_0x11f338[_0x5e7a('0x2d')],qs[_0x5e7a('0x32')](_0xbe3e63['query'][_0x5e7a('0x32')]));_0x54430d[_0x5e7a('0x31')]=_0x54430d[_0x5e7a('0x31')][_0x5e7a('0x33')]?_0x54430d[_0x5e7a('0x31')]:_0x11f338['model'];if(_0xbe3e63['query'][_0x5e7a('0x3e')]){_0x54430d[_0x5e7a('0x3f')]=[{'all':!![]}];}_0x54430d=_[_0x5e7a('0x3b')]({},_0x54430d,_0xbe3e63[_0x5e7a('0x3d')]);return db['SquareReport'][_0x5e7a('0x45')](_0x54430d)[_0x5e7a('0x40')](handleEntityNotFound(_0x5bae4e,null))[_0x5e7a('0x40')](respondWithResult(_0x5bae4e,null))[_0x5e7a('0x41')](handleError(_0x5bae4e,null));};exports[_0x5e7a('0x46')]=function(_0xe8a0c5,_0x934968){return db[_0x5e7a('0x28')]['create'](_0xe8a0c5[_0x5e7a('0x47')],{})[_0x5e7a('0x40')](respondWithResult(_0x934968,0xc9))[_0x5e7a('0x41')](handleError(_0x934968,null));};exports['update']=function(_0x503260,_0x47ac6b){if(_0x503260['body']['id']){delete _0x503260[_0x5e7a('0x47')]['id'];}return db[_0x5e7a('0x28')][_0x5e7a('0x45')]({'where':{'id':_0x503260['params']['id']}})[_0x5e7a('0x40')](handleEntityNotFound(_0x47ac6b,null))['then'](saveUpdates(_0x503260[_0x5e7a('0x47')],null))['then'](respondWithResult(_0x47ac6b,null))[_0x5e7a('0x41')](handleError(_0x47ac6b,null));};exports[_0x5e7a('0x48')]=function(_0x24afb9,_0x59299a){return db[_0x5e7a('0x28')][_0x5e7a('0x45')]({'where':{'id':_0x24afb9[_0x5e7a('0x43')]['id']}})[_0x5e7a('0x40')](handleEntityNotFound(_0x59299a,null))[_0x5e7a('0x40')](removeEntity(_0x59299a,null))[_0x5e7a('0x41')](handleError(_0x59299a,null));};exports[_0x5e7a('0x49')]=function(_0x15370f,_0x5a27b5){return db['SquareReport'][_0x5e7a('0x49')]()['then'](respondWithResult(_0x5a27b5,null))[_0x5e7a('0x41')](handleError(_0x5a27b5,null));};
\ No newline at end of file
+var _0xd341=['path','to-csv','ejs','lodash','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','limit','undefined','offset','count','set','apply','reject','update','destroy','then','error','name','send','index','map','SquareReport','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache'];(function(_0x5a8cda,_0x3fe4b9){var _0x57fc51=function(_0x4eb644){while(--_0x4eb644){_0x5a8cda['push'](_0x5a8cda['shift']());}};_0x57fc51(++_0x3fe4b9);}(_0xd341,0x1b0));var _0x1d34=function(_0x11e394,_0xdb75aa){_0x11e394=_0x11e394-0x0;var _0x398f39=_0xd341[_0x11e394];return _0x398f39;};'use strict';var emlformat=require(_0x1d34('0x0'));var rimraf=require(_0x1d34('0x1'));var zipdir=require(_0x1d34('0x2'));var jsonpatch=require(_0x1d34('0x3'));var rp=require('request-promise');var moment=require(_0x1d34('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1d34('0x5'));var util=require('util');var path=require(_0x1d34('0x6'));var sox=require('sox');var csv=require(_0x1d34('0x7'));var ejs=require(_0x1d34('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1d34('0x9'));var squel=require('squel');var crypto=require(_0x1d34('0xa'));var jsforce=require(_0x1d34('0xb'));var deskjs=require(_0x1d34('0xc'));var toCsv=require(_0x1d34('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1d34('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x1d34('0xe'));var as=require(_0x1d34('0xf'));var hardwareService=require(_0x1d34('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x1d34('0x11'));var config=require(_0x1d34('0x12'));var licenseUtil=require(_0x1d34('0x13'));var db=require(_0x1d34('0x14'))['db'];function respondWithStatusCode(_0x4ce75a,_0x330a0b){_0x330a0b=_0x330a0b||0xcc;return function(_0x3cc97b){if(_0x3cc97b){return _0x4ce75a[_0x1d34('0x15')](_0x330a0b);}return _0x4ce75a['status'](_0x330a0b)[_0x1d34('0x16')]();};}function respondWithResult(_0x30e0b7,_0x4be64d){_0x4be64d=_0x4be64d||0xc8;return function(_0x2514b3){if(_0x2514b3){return _0x30e0b7[_0x1d34('0x17')](_0x4be64d)[_0x1d34('0x18')](_0x2514b3);}};}function respondWithFilteredResult(_0x869bae,_0x3ecdce){return function(_0x1c5572){if(_0x1c5572){var _0xcee7d2=typeof _0x3ecdce['offset']==='undefined'&&typeof _0x3ecdce[_0x1d34('0x19')]===_0x1d34('0x1a');var _0x41ef5f=_0x1c5572['count'];var _0x30a9eb=_0xcee7d2?0x0:_0x3ecdce[_0x1d34('0x1b')];var _0x4d6d8e=_0xcee7d2?_0x1c5572[_0x1d34('0x1c')]:_0x3ecdce['offset']+_0x3ecdce[_0x1d34('0x19')];var _0x42919a;if(_0x4d6d8e>=_0x41ef5f){_0x4d6d8e=_0x41ef5f;_0x42919a=0xc8;}else{_0x42919a=0xce;}_0x869bae[_0x1d34('0x17')](_0x42919a);return _0x869bae[_0x1d34('0x1d')]('Content-Range',_0x30a9eb+'-'+_0x4d6d8e+'/'+_0x41ef5f)[_0x1d34('0x18')](_0x1c5572);}return null;};}function patchUpdates(_0x3f21c0){return function(_0x2009a5){try{jsonpatch[_0x1d34('0x1e')](_0x2009a5,_0x3f21c0,!![]);}catch(_0x155593){return BPromise[_0x1d34('0x1f')](_0x155593);}return _0x2009a5['save']();};}function saveUpdates(_0x345996,_0x3afe18){return function(_0x291778){if(_0x291778){return _0x291778[_0x1d34('0x20')](_0x345996)['then'](function(_0x5b270a){return _0x5b270a;});}return null;};}function removeEntity(_0x52aa0a,_0x12aab2){return function(_0x25733b){if(_0x25733b){return _0x25733b[_0x1d34('0x21')]()[_0x1d34('0x22')](function(){_0x52aa0a['status'](0xcc)[_0x1d34('0x16')]();});}};}function handleEntityNotFound(_0x5d4fab,_0x2c3408){return function(_0x59cde5){if(!_0x59cde5){_0x5d4fab[_0x1d34('0x15')](0x194);}return _0x59cde5;};}function handleError(_0x34682c,_0x256049){_0x256049=_0x256049||0x1f4;return function(_0x536a67){logger[_0x1d34('0x23')](_0x536a67['stack']);if(_0x536a67[_0x1d34('0x24')]){delete _0x536a67['name'];}_0x34682c['status'](_0x256049)[_0x1d34('0x25')](_0x536a67);};}exports[_0x1d34('0x26')]=function(_0x2f7735,_0x444ab1){var _0x4ce384={},_0xc01e73={},_0x5a47bc={'count':0x0,'rows':[]};var _0x20f7e1=_[_0x1d34('0x27')](db[_0x1d34('0x28')][_0x1d34('0x29')],function(_0x22f11f){return{'name':_0x22f11f[_0x1d34('0x2a')],'type':_0x22f11f[_0x1d34('0x2b')]['key']};});_0xc01e73[_0x1d34('0x2c')]=_['map'](_0x20f7e1,_0x1d34('0x24'));_0xc01e73[_0x1d34('0x2d')]=_['keys'](_0x2f7735[_0x1d34('0x2d')]);_0xc01e73[_0x1d34('0x2e')]=_[_0x1d34('0x2f')](_0xc01e73[_0x1d34('0x2c')],_0xc01e73[_0x1d34('0x2d')]);_0x4ce384[_0x1d34('0x30')]=_[_0x1d34('0x2f')](_0xc01e73['model'],qs['fields'](_0x2f7735['query'][_0x1d34('0x31')]));_0x4ce384[_0x1d34('0x30')]=_0x4ce384['attributes'][_0x1d34('0x32')]?_0x4ce384[_0x1d34('0x30')]:_0xc01e73[_0x1d34('0x2c')];if(!_0x2f7735['query'][_0x1d34('0x33')](_0x1d34('0x34'))){_0x4ce384[_0x1d34('0x19')]=qs['limit'](_0x2f7735[_0x1d34('0x2d')]['limit']);_0x4ce384['offset']=qs[_0x1d34('0x1b')](_0x2f7735['query'][_0x1d34('0x1b')]);}_0x4ce384[_0x1d34('0x35')]=qs[_0x1d34('0x36')](_0x2f7735[_0x1d34('0x2d')]['sort']);_0x4ce384[_0x1d34('0x37')]=qs[_0x1d34('0x2e')](_[_0x1d34('0x38')](_0x2f7735[_0x1d34('0x2d')],_0xc01e73[_0x1d34('0x2e')]),_0x20f7e1);if(_0x2f7735['query']['filter']){_0x4ce384['where']=_[_0x1d34('0x39')](_0x4ce384['where'],{'$or':_[_0x1d34('0x27')](_0x20f7e1,function(_0x50dccc){if(_0x50dccc[_0x1d34('0x2b')]!==_0x1d34('0x3a')){var _0xc74d34={};_0xc74d34[_0x50dccc[_0x1d34('0x24')]]={'$like':'%'+_0x2f7735['query'][_0x1d34('0x3b')]+'%'};return _0xc74d34;}})});}_0x4ce384=_[_0x1d34('0x39')]({},_0x4ce384,_0x2f7735[_0x1d34('0x3c')]);var _0x30dcdc={'where':_0x4ce384['where']};return db[_0x1d34('0x28')][_0x1d34('0x1c')](_0x30dcdc)[_0x1d34('0x22')](function(_0x216e9a){_0x5a47bc['count']=_0x216e9a;if(_0x2f7735['query'][_0x1d34('0x3d')]){_0x4ce384[_0x1d34('0x3e')]=[{'all':!![]}];}return db[_0x1d34('0x28')][_0x1d34('0x3f')](_0x4ce384);})[_0x1d34('0x22')](function(_0x504ce5){_0x5a47bc[_0x1d34('0x40')]=_0x504ce5;return _0x5a47bc;})[_0x1d34('0x22')](respondWithFilteredResult(_0x444ab1,_0x4ce384))['catch'](handleError(_0x444ab1,null));};exports[_0x1d34('0x41')]=function(_0x47256f,_0xe5573b){var _0x3463f9={'raw':!![],'where':{'id':_0x47256f[_0x1d34('0x42')]['id']}},_0x108127={};_0x108127[_0x1d34('0x2c')]=_['keys'](db['SquareReport']['rawAttributes']);_0x108127[_0x1d34('0x2d')]=_[_0x1d34('0x43')](_0x47256f['query']);_0x108127[_0x1d34('0x2e')]=_[_0x1d34('0x2f')](_0x108127[_0x1d34('0x2c')],_0x108127[_0x1d34('0x2d')]);_0x3463f9[_0x1d34('0x30')]=_[_0x1d34('0x2f')](_0x108127[_0x1d34('0x2c')],qs[_0x1d34('0x31')](_0x47256f['query']['fields']));_0x3463f9[_0x1d34('0x30')]=_0x3463f9['attributes'][_0x1d34('0x32')]?_0x3463f9[_0x1d34('0x30')]:_0x108127[_0x1d34('0x2c')];if(_0x47256f[_0x1d34('0x2d')][_0x1d34('0x3d')]){_0x3463f9[_0x1d34('0x3e')]=[{'all':!![]}];}_0x3463f9=_[_0x1d34('0x39')]({},_0x3463f9,_0x47256f[_0x1d34('0x3c')]);return db[_0x1d34('0x28')][_0x1d34('0x44')](_0x3463f9)[_0x1d34('0x22')](handleEntityNotFound(_0xe5573b,null))[_0x1d34('0x22')](respondWithResult(_0xe5573b,null))[_0x1d34('0x45')](handleError(_0xe5573b,null));};exports[_0x1d34('0x46')]=function(_0x5d180c,_0x5d83b9){return db[_0x1d34('0x28')]['create'](_0x5d180c[_0x1d34('0x47')],{})[_0x1d34('0x22')](respondWithResult(_0x5d83b9,0xc9))[_0x1d34('0x45')](handleError(_0x5d83b9,null));};exports[_0x1d34('0x20')]=function(_0x3b7fd6,_0x2264cb){if(_0x3b7fd6['body']['id']){delete _0x3b7fd6[_0x1d34('0x47')]['id'];}return db[_0x1d34('0x28')][_0x1d34('0x44')]({'where':{'id':_0x3b7fd6[_0x1d34('0x42')]['id']}})[_0x1d34('0x22')](handleEntityNotFound(_0x2264cb,null))['then'](saveUpdates(_0x3b7fd6['body'],null))[_0x1d34('0x22')](respondWithResult(_0x2264cb,null))[_0x1d34('0x45')](handleError(_0x2264cb,null));};exports[_0x1d34('0x21')]=function(_0x3e549f,_0x54bc88){return db['SquareReport'][_0x1d34('0x44')]({'where':{'id':_0x3e549f[_0x1d34('0x42')]['id']}})[_0x1d34('0x22')](handleEntityNotFound(_0x54bc88,null))['then'](removeEntity(_0x54bc88,null))[_0x1d34('0x45')](handleError(_0x54bc88,null));};exports[_0x1d34('0x48')]=function(_0x3b948c,_0x21eee8){return db[_0x1d34('0x28')]['describe']()[_0x1d34('0x22')](respondWithResult(_0x21eee8,null))[_0x1d34('0x45')](handleError(_0x21eee8,null));};
\ No newline at end of file
index 0cc52ec..2bdb40e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61e0=['define','report_square','uid_pname','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x61e0,0x94));var _0x061e=function(_0x3fbcf,_0x4b06f1){_0x3fbcf=_0x3fbcf-0x0;var _0x12db8d=_0x61e0[_0x3fbcf];return _0x12db8d;};'use strict';var _=require(_0x061e('0x0'));var util=require('util');var logger=require(_0x061e('0x1'))(_0x061e('0x2'));var moment=require(_0x061e('0x3'));var BPromise=require(_0x061e('0x4'));var rp=require(_0x061e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x061e('0x6'));var attributes=require('./squareReport.attributes');module[_0x061e('0x7')]=function(_0x3f4b6a,_0x5879d){return _0x3f4b6a[_0x061e('0x8')]('SquareReport',attributes,{'tableName':_0x061e('0x9'),'paranoid':![],'indexes':[{'name':_0x061e('0xa'),'fields':[_0x061e('0xb'),'project_name']},{'name':'leaveAt','fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x227d=['project_name','leaveAt','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','SquareReport','report_square','uid_pname','uniqueid'];(function(_0x27d6b0,_0x5282ce){var _0x106e02=function(_0x3168a8){while(--_0x3168a8){_0x27d6b0['push'](_0x27d6b0['shift']());}};_0x106e02(++_0x5282ce);}(_0x227d,0x197));var _0xd227=function(_0x2706da,_0x3856f5){_0x2706da=_0x2706da-0x0;var _0x3ba87e=_0x227d[_0x2706da];return _0x3ba87e;};'use strict';var _=require('lodash');var util=require(_0xd227('0x0'));var logger=require(_0xd227('0x1'))(_0xd227('0x2'));var moment=require(_0xd227('0x3'));var BPromise=require(_0xd227('0x4'));var rp=require(_0xd227('0x5'));var fs=require('fs');var path=require(_0xd227('0x6'));var rimraf=require('rimraf');var config=require(_0xd227('0x7'));var attributes=require('./squareReport.attributes');module[_0xd227('0x8')]=function(_0x28fa5b,_0x1fdc45){return _0x28fa5b['define'](_0xd227('0x9'),attributes,{'tableName':_0xd227('0xa'),'paranoid':![],'indexes':[{'name':_0xd227('0xb'),'fields':[_0xd227('0xc'),_0xd227('0xd')]},{'name':_0xd227('0xe'),'fields':[_0xd227('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b5753df..a4332eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf231=['result','catch','CreateSquareReport','create','options','raw','UpdateSquareReport','SquareReport','body','where','attributes','then','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf231,0xac));var _0x1f23=function(_0x499e34,_0x5e76f5){_0x499e34=_0x499e34-0x0;var _0x2015eb=_0xf231[_0x499e34];return _0x2015eb;};'use strict';var _=require(_0x1f23('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1f23('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1f23('0x2'));var db=require(_0x1f23('0x3'))['db'];var utils=require(_0x1f23('0x4'));var logger=require(_0x1f23('0x5'))(_0x1f23('0x6'));var config=require(_0x1f23('0x7'));var jayson=require(_0x1f23('0x8'));var client=jayson[_0x1f23('0x9')][_0x1f23('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4eb501,_0x40507a,_0x2f09b4){return new BPromise(function(_0x390722,_0x56e252){return client[_0x1f23('0xb')](_0x4eb501,_0x2f09b4)['then'](function(_0x358068){logger['info'](_0x1f23('0xc'),_0x40507a,_0x1f23('0xd'));logger[_0x1f23('0xe')](_0x1f23('0xf'),_0x40507a,'request\x20sent',JSON[_0x1f23('0x10')](_0x358068));if(_0x358068[_0x1f23('0x11')]){if(_0x358068[_0x1f23('0x11')]['code']===0x1f4){logger[_0x1f23('0x11')]('SquareReport,\x20%s,\x20%s',_0x40507a,_0x358068[_0x1f23('0x11')][_0x1f23('0x12')]);return _0x56e252(_0x358068[_0x1f23('0x11')]['message']);}logger['error'](_0x1f23('0xc'),_0x40507a,_0x358068['error']['message']);return _0x390722(_0x358068[_0x1f23('0x11')][_0x1f23('0x12')]);}else{logger[_0x1f23('0x13')](_0x1f23('0xc'),_0x40507a,'request\x20sent');_0x390722(_0x358068[_0x1f23('0x14')][_0x1f23('0x12')]);}})[_0x1f23('0x15')](function(_0x279cc5){logger['error']('SquareReport,\x20%s,\x20%s',_0x40507a,_0x279cc5);_0x56e252(_0x279cc5);});});}exports[_0x1f23('0x16')]=function(_0x51eee9){var _0x416e44=this;return new Promise(function(_0x4ad700,_0x43787e){return db['SquareReport'][_0x1f23('0x17')](_0x51eee9['body'],{'raw':_0x51eee9[_0x1f23('0x18')]?_0x51eee9[_0x1f23('0x18')][_0x1f23('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x10f8c1){logger[_0x1f23('0x13')](_0x1f23('0x16'),_0x51eee9);logger['debug'](_0x1f23('0x16'),_0x51eee9,JSON['stringify'](_0x10f8c1));_0x4ad700(_0x10f8c1);})[_0x1f23('0x15')](function(_0x31aead){logger['error'](_0x1f23('0x16'),_0x31aead['message'],_0x51eee9);_0x43787e(_0x416e44['error'](0x1f4,_0x31aead[_0x1f23('0x12')]));});});};exports[_0x1f23('0x1a')]=function(_0x47caa6){var _0x22fdea=this;return new Promise(function(_0x4e6920,_0x3034fe){return db[_0x1f23('0x1b')]['update'](_0x47caa6[_0x1f23('0x1c')],{'raw':_0x47caa6[_0x1f23('0x18')]?_0x47caa6['options'][_0x1f23('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x47caa6['options']?_0x47caa6[_0x1f23('0x18')][_0x1f23('0x1d')]||null:null,'attributes':_0x47caa6[_0x1f23('0x18')]?_0x47caa6[_0x1f23('0x18')][_0x1f23('0x1e')]||null:null,'limit':_0x47caa6[_0x1f23('0x18')]?_0x47caa6['options']['limit']||null:null})[_0x1f23('0x1f')](function(_0x41b76e){logger[_0x1f23('0x13')](_0x1f23('0x1a'),_0x47caa6);logger[_0x1f23('0xe')](_0x1f23('0x1a'),_0x47caa6,JSON['stringify'](_0x41b76e));_0x4e6920(_0x41b76e);})[_0x1f23('0x15')](function(_0xff0418){logger[_0x1f23('0x11')]('UpdateSquareReport',_0xff0418[_0x1f23('0x12')],_0x47caa6);_0x3034fe(_0x22fdea[_0x1f23('0x11')](0x1f4,_0xff0418['message']));});});};
\ No newline at end of file
+var _0xf5b6=['attributes','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','then','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateSquareReport','create','body','options','raw','catch','UpdateSquareReport','update','where'];(function(_0xbd5098,_0x2089a1){var _0x5b3022=function(_0x2f0dcc){while(--_0x2f0dcc){_0xbd5098['push'](_0xbd5098['shift']());}};_0x5b3022(++_0x2089a1);}(_0xf5b6,0xe9));var _0x6f5b=function(_0x2b8abd,_0xa1d67a){_0x2b8abd=_0x2b8abd-0x0;var _0x3b7614=_0xf5b6[_0x2b8abd];return _0x3b7614;};'use strict';var _=require('lodash');var util=require(_0x6f5b('0x0'));var moment=require(_0x6f5b('0x1'));var BPromise=require(_0x6f5b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6f5b('0x3'));var db=require(_0x6f5b('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6f5b('0x5'));var config=require(_0x6f5b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6f5b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x484d40,_0x326065,_0x1105c9){return new BPromise(function(_0x56af17,_0x3f6d81){return client['request'](_0x484d40,_0x1105c9)[_0x6f5b('0x8')](function(_0x577358){logger[_0x6f5b('0x9')](_0x6f5b('0xa'),_0x326065,'request\x20sent');logger[_0x6f5b('0xb')](_0x6f5b('0xc'),_0x326065,_0x6f5b('0xd'),JSON[_0x6f5b('0xe')](_0x577358));if(_0x577358[_0x6f5b('0xf')]){if(_0x577358[_0x6f5b('0xf')][_0x6f5b('0x10')]===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x326065,_0x577358[_0x6f5b('0xf')][_0x6f5b('0x11')]);return _0x3f6d81(_0x577358[_0x6f5b('0xf')][_0x6f5b('0x11')]);}logger['error'](_0x6f5b('0xa'),_0x326065,_0x577358[_0x6f5b('0xf')][_0x6f5b('0x11')]);return _0x56af17(_0x577358[_0x6f5b('0xf')][_0x6f5b('0x11')]);}else{logger[_0x6f5b('0x9')](_0x6f5b('0xa'),_0x326065,_0x6f5b('0xd'));_0x56af17(_0x577358[_0x6f5b('0x12')]['message']);}})['catch'](function(_0x5c9937){logger['error']('SquareReport,\x20%s,\x20%s',_0x326065,_0x5c9937);_0x3f6d81(_0x5c9937);});});}exports[_0x6f5b('0x13')]=function(_0x11528f){var _0x4e5932=this;return new Promise(function(_0x3e7857,_0x528911){return db['SquareReport'][_0x6f5b('0x14')](_0x11528f[_0x6f5b('0x15')],{'raw':_0x11528f[_0x6f5b('0x16')]?_0x11528f[_0x6f5b('0x16')][_0x6f5b('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4151b4){logger['info'](_0x6f5b('0x13'),_0x11528f);logger[_0x6f5b('0xb')](_0x6f5b('0x13'),_0x11528f,JSON[_0x6f5b('0xe')](_0x4151b4));_0x3e7857(_0x4151b4);})[_0x6f5b('0x18')](function(_0x4a908f){logger[_0x6f5b('0xf')](_0x6f5b('0x13'),_0x4a908f[_0x6f5b('0x11')],_0x11528f);_0x528911(_0x4e5932[_0x6f5b('0xf')](0x1f4,_0x4a908f[_0x6f5b('0x11')]));});});};exports[_0x6f5b('0x19')]=function(_0x304378){var _0x208c56=this;return new Promise(function(_0x55e29f,_0xff146b){return db['SquareReport'][_0x6f5b('0x1a')](_0x304378[_0x6f5b('0x15')],{'raw':_0x304378[_0x6f5b('0x16')]?_0x304378['options'][_0x6f5b('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x304378[_0x6f5b('0x16')]?_0x304378['options'][_0x6f5b('0x1b')]||null:null,'attributes':_0x304378['options']?_0x304378[_0x6f5b('0x16')][_0x6f5b('0x1c')]||null:null,'limit':_0x304378['options']?_0x304378[_0x6f5b('0x16')]['limit']||null:null})[_0x6f5b('0x8')](function(_0x5364a5){logger[_0x6f5b('0x9')](_0x6f5b('0x19'),_0x304378);logger[_0x6f5b('0xb')](_0x6f5b('0x19'),_0x304378,JSON[_0x6f5b('0xe')](_0x5364a5));_0x55e29f(_0x5364a5);})[_0x6f5b('0x18')](function(_0x2cef7b){logger[_0x6f5b('0xf')](_0x6f5b('0x19'),_0x2cef7b[_0x6f5b('0x11')],_0x304378);_0xff146b(_0x208c56['error'](0x1f4,_0x2cef7b[_0x6f5b('0x11')]));});});};
\ No newline at end of file
index eb03a83..9b4e3f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5905=['/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0xb6a6bf,_0x184dfd){var _0x4a36b5=function(_0xa10bf3){while(--_0xa10bf3){_0xb6a6bf['push'](_0xb6a6bf['shift']());}};_0x4a36b5(++_0x184dfd);}(_0x5905,0xdb));var _0x5590=function(_0x347076,_0x234012){_0x347076=_0x347076-0x0;var _0xa47162=_0x5905[_0x347076];return _0xa47162;};'use strict';var multer=require(_0x5590('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5590('0x1'));var express=require(_0x5590('0x2'));var router=express[_0x5590('0x3')]();var fs_extra=require(_0x5590('0x4'));var auth=require(_0x5590('0x5'));var interaction=require(_0x5590('0x6'));var config=require('../../config/environment');var controller=require('./squareReportDetail.controller');router[_0x5590('0x7')]('/',auth[_0x5590('0x8')](),controller['index']);router[_0x5590('0x7')](_0x5590('0x9'),auth['isAuthenticated'](),controller[_0x5590('0xa')]);router[_0x5590('0x7')](_0x5590('0xb'),auth['isAuthenticated'](),controller[_0x5590('0xc')]);router[_0x5590('0xd')]('/',auth[_0x5590('0x8')](),controller[_0x5590('0xe')]);router[_0x5590('0xf')](_0x5590('0xb'),auth[_0x5590('0x8')](),controller[_0x5590('0x10')]);router[_0x5590('0x11')](_0x5590('0xb'),auth[_0x5590('0x8')](),controller['destroy']);module[_0x5590('0x12')]=router;
\ No newline at end of file
+var _0x522c=['destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./squareReportDetail.controller','get','isAuthenticated','index','/describe','/:id','show','create','put','update','delete'];(function(_0x2ce6ef,_0x285ae9){var _0x3cdc3e=function(_0x33ed0c){while(--_0x33ed0c){_0x2ce6ef['push'](_0x2ce6ef['shift']());}};_0x3cdc3e(++_0x285ae9);}(_0x522c,0xf2));var _0xc522=function(_0x485070,_0x590440){_0x485070=_0x485070-0x0;var _0x1d8090=_0x522c[_0x485070];return _0x1d8090;};'use strict';var multer=require(_0xc522('0x0'));var util=require('util');var path=require(_0xc522('0x1'));var timeout=require(_0xc522('0x2'));var express=require(_0xc522('0x3'));var router=express['Router']();var fs_extra=require(_0xc522('0x4'));var auth=require(_0xc522('0x5'));var interaction=require(_0xc522('0x6'));var config=require('../../config/environment');var controller=require(_0xc522('0x7'));router[_0xc522('0x8')]('/',auth[_0xc522('0x9')](),controller[_0xc522('0xa')]);router[_0xc522('0x8')](_0xc522('0xb'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xc522('0xc'),auth[_0xc522('0x9')](),controller[_0xc522('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc522('0xe')]);router[_0xc522('0xf')]('/:id',auth[_0xc522('0x9')](),controller[_0xc522('0x10')]);router[_0xc522('0x11')](_0xc522('0xc'),auth['isAuthenticated'](),controller[_0xc522('0x12')]);module[_0xc522('0x13')]=router;
\ No newline at end of file
index a5d5ae9..c290fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe861=['exports','STRING','TEXT','sequelize'];(function(_0x2d00fe,_0x3c95cb){var _0x17cf4a=function(_0x3f3563){while(--_0x3f3563){_0x2d00fe['push'](_0x2d00fe['shift']());}};_0x17cf4a(++_0x3c95cb);}(_0xe861,0x12b));var _0x1e86=function(_0x12af37,_0x2a6c49){_0x12af37=_0x12af37-0x0;var _0x28a3e1=_0xe861[_0x12af37];return _0x28a3e1;};'use strict';var Sequelize=require(_0x1e86('0x0'));module[_0x1e86('0x1')]={'uniqueid':{'type':Sequelize[_0x1e86('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x1e86('0x2')]},'data':{'type':Sequelize[_0x1e86('0x3')]},'project_name':{'type':Sequelize[_0x1e86('0x2')]},'callerid':{'type':Sequelize[_0x1e86('0x2')]}};
\ No newline at end of file
+var _0x9270=['sequelize','exports','STRING','TEXT'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x9270,0xdc));var _0x0927=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x9270[_0x5608a3];return _0x1ed50a;};'use strict';var Sequelize=require(_0x0927('0x0'));module[_0x0927('0x1')]={'uniqueid':{'type':Sequelize[_0x0927('0x2')]},'node':{'type':Sequelize[_0x0927('0x2')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x0927('0x3')]},'project_name':{'type':Sequelize[_0x0927('0x2')]},'callerid':{'type':Sequelize[_0x0927('0x2')]}};
\ No newline at end of file
index 3817529..bc6f869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a29=['sendStatus','end','undefined','limit','count','offset','status','set','Content-Range','json','save','then','destroy','error','stack','name','send','index','map','SquareDetailsReport','type','query','keys','filters','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','findAll','rows','catch','show','params','rawAttributes','intersection','includeAll','options','find','create','body','update','describe','eml-format','rimraf','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x41ce7a,_0x32ad95){var _0x514b43=function(_0x5a8045){while(--_0x5a8045){_0x41ce7a['push'](_0x41ce7a['shift']());}};_0x514b43(++_0x32ad95);}(_0x2a29,0x1b3));var _0x92a2=function(_0x5a42bb,_0x1b7a64){_0x5a42bb=_0x5a42bb-0x0;var _0x3cff75=_0x2a29[_0x5a42bb];return _0x3cff75;};'use strict';var emlformat=require(_0x92a2('0x0'));var rimraf=require(_0x92a2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x92a2('0x2'));var moment=require(_0x92a2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x92a2('0x4'));var util=require(_0x92a2('0x5'));var path=require('path');var sox=require(_0x92a2('0x6'));var csv=require('to-csv');var ejs=require(_0x92a2('0x7'));var fs=require('fs');var fs_extra=require(_0x92a2('0x8'));var _=require(_0x92a2('0x9'));var squel=require(_0x92a2('0xa'));var crypto=require(_0x92a2('0xb'));var jsforce=require(_0x92a2('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x92a2('0xd'));var querystring=require(_0x92a2('0xe'));var Papa=require(_0x92a2('0xf'));var Redis=require(_0x92a2('0x10'));var authService=require(_0x92a2('0x11'));var qs=require(_0x92a2('0x12'));var as=require(_0x92a2('0x13'));var hardwareService=require(_0x92a2('0x14'));var logger=require(_0x92a2('0x15'))(_0x92a2('0x16'));var utils=require(_0x92a2('0x17'));var config=require(_0x92a2('0x18'));var licenseUtil=require(_0x92a2('0x19'));var db=require(_0x92a2('0x1a'))['db'];function respondWithStatusCode(_0x2a3ea0,_0x30ee62){_0x30ee62=_0x30ee62||0xcc;return function(_0x3f0855){if(_0x3f0855){return _0x2a3ea0[_0x92a2('0x1b')](_0x30ee62);}return _0x2a3ea0['status'](_0x30ee62)[_0x92a2('0x1c')]();};}function respondWithResult(_0x3770f2,_0x252f4d){_0x252f4d=_0x252f4d||0xc8;return function(_0x3f1501){if(_0x3f1501){return _0x3770f2['status'](_0x252f4d)['json'](_0x3f1501);}};}function respondWithFilteredResult(_0x2098e4,_0x51fcd0){return function(_0x5b6e4c){if(_0x5b6e4c){var _0x2cb677=typeof _0x51fcd0['offset']===_0x92a2('0x1d')&&typeof _0x51fcd0[_0x92a2('0x1e')]===_0x92a2('0x1d');var _0x3c9645=_0x5b6e4c[_0x92a2('0x1f')];var _0x2f10b1=_0x2cb677?0x0:_0x51fcd0[_0x92a2('0x20')];var _0x27eea7=_0x2cb677?_0x5b6e4c['count']:_0x51fcd0[_0x92a2('0x20')]+_0x51fcd0[_0x92a2('0x1e')];var _0x20660a;if(_0x27eea7>=_0x3c9645){_0x27eea7=_0x3c9645;_0x20660a=0xc8;}else{_0x20660a=0xce;}_0x2098e4[_0x92a2('0x21')](_0x20660a);return _0x2098e4[_0x92a2('0x22')](_0x92a2('0x23'),_0x2f10b1+'-'+_0x27eea7+'/'+_0x3c9645)[_0x92a2('0x24')](_0x5b6e4c);}return null;};}function patchUpdates(_0x25da74){return function(_0x4ed3c8){try{jsonpatch['apply'](_0x4ed3c8,_0x25da74,!![]);}catch(_0x55e8bc){return BPromise['reject'](_0x55e8bc);}return _0x4ed3c8[_0x92a2('0x25')]();};}function saveUpdates(_0x36e4d2,_0x4ba38e){return function(_0x497d7e){if(_0x497d7e){return _0x497d7e['update'](_0x36e4d2)[_0x92a2('0x26')](function(_0x35dc94){return _0x35dc94;});}return null;};}function removeEntity(_0x393906,_0x40838e){return function(_0x5c812a){if(_0x5c812a){return _0x5c812a[_0x92a2('0x27')]()[_0x92a2('0x26')](function(){_0x393906[_0x92a2('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x146552,_0x324269){return function(_0x474702){if(!_0x474702){_0x146552['sendStatus'](0x194);}return _0x474702;};}function handleError(_0x1c3be8,_0x153d23){_0x153d23=_0x153d23||0x1f4;return function(_0x4b483e){logger[_0x92a2('0x28')](_0x4b483e[_0x92a2('0x29')]);if(_0x4b483e[_0x92a2('0x2a')]){delete _0x4b483e['name'];}_0x1c3be8['status'](_0x153d23)[_0x92a2('0x2b')](_0x4b483e);};}exports[_0x92a2('0x2c')]=function(_0x218ca3,_0xe6e23){var _0x1bfd5a={},_0x535e32={},_0x37f1ac={'count':0x0,'rows':[]};var _0x15a045=_[_0x92a2('0x2d')](db[_0x92a2('0x2e')]['rawAttributes'],function(_0x15af59){return{'name':_0x15af59['fieldName'],'type':_0x15af59[_0x92a2('0x2f')]['key']};});_0x535e32['model']=_['map'](_0x15a045,_0x92a2('0x2a'));_0x535e32[_0x92a2('0x30')]=_[_0x92a2('0x31')](_0x218ca3[_0x92a2('0x30')]);_0x535e32[_0x92a2('0x32')]=_['intersection'](_0x535e32[_0x92a2('0x33')],_0x535e32[_0x92a2('0x30')]);_0x1bfd5a[_0x92a2('0x34')]=_['intersection'](_0x535e32[_0x92a2('0x33')],qs['fields'](_0x218ca3['query'][_0x92a2('0x35')]));_0x1bfd5a[_0x92a2('0x34')]=_0x1bfd5a[_0x92a2('0x34')][_0x92a2('0x36')]?_0x1bfd5a['attributes']:_0x535e32[_0x92a2('0x33')];if(!_0x218ca3[_0x92a2('0x30')][_0x92a2('0x37')]('nolimit')){_0x1bfd5a['limit']=qs[_0x92a2('0x1e')](_0x218ca3['query'][_0x92a2('0x1e')]);_0x1bfd5a['offset']=qs[_0x92a2('0x20')](_0x218ca3[_0x92a2('0x30')][_0x92a2('0x20')]);}_0x1bfd5a[_0x92a2('0x38')]=qs[_0x92a2('0x39')](_0x218ca3[_0x92a2('0x30')][_0x92a2('0x39')]);_0x1bfd5a[_0x92a2('0x3a')]=qs['filters'](_[_0x92a2('0x3b')](_0x218ca3[_0x92a2('0x30')],_0x535e32['filters']),_0x15a045);if(_0x218ca3['query']['filter']){_0x1bfd5a[_0x92a2('0x3a')]=_['merge'](_0x1bfd5a['where'],{'$or':_[_0x92a2('0x2d')](_0x15a045,function(_0x19cd8c){if(_0x19cd8c[_0x92a2('0x2f')]!==_0x92a2('0x3c')){var _0x2789d7={};_0x2789d7[_0x19cd8c[_0x92a2('0x2a')]]={'$like':'%'+_0x218ca3[_0x92a2('0x30')][_0x92a2('0x3d')]+'%'};return _0x2789d7;}})});}_0x1bfd5a=_[_0x92a2('0x3e')]({},_0x1bfd5a,_0x218ca3['options']);var _0x32ca6e={'where':_0x1bfd5a['where']};return db[_0x92a2('0x2e')]['count'](_0x32ca6e)[_0x92a2('0x26')](function(_0x363df5){_0x37f1ac[_0x92a2('0x1f')]=_0x363df5;if(_0x218ca3[_0x92a2('0x30')]['includeAll']){_0x1bfd5a['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0x92a2('0x3f')](_0x1bfd5a);})[_0x92a2('0x26')](function(_0x52b4a6){_0x37f1ac[_0x92a2('0x40')]=_0x52b4a6;return _0x37f1ac;})[_0x92a2('0x26')](respondWithFilteredResult(_0xe6e23,_0x1bfd5a))[_0x92a2('0x41')](handleError(_0xe6e23,null));};exports[_0x92a2('0x42')]=function(_0x29da55,_0x5a1687){var _0x1269b8={'raw':!![],'where':{'id':_0x29da55[_0x92a2('0x43')]['id']}},_0x5bce3a={};_0x5bce3a['model']=_['keys'](db[_0x92a2('0x2e')][_0x92a2('0x44')]);_0x5bce3a['query']=_['keys'](_0x29da55[_0x92a2('0x30')]);_0x5bce3a[_0x92a2('0x32')]=_[_0x92a2('0x45')](_0x5bce3a[_0x92a2('0x33')],_0x5bce3a[_0x92a2('0x30')]);_0x1269b8[_0x92a2('0x34')]=_[_0x92a2('0x45')](_0x5bce3a['model'],qs[_0x92a2('0x35')](_0x29da55[_0x92a2('0x30')][_0x92a2('0x35')]));_0x1269b8[_0x92a2('0x34')]=_0x1269b8[_0x92a2('0x34')][_0x92a2('0x36')]?_0x1269b8[_0x92a2('0x34')]:_0x5bce3a[_0x92a2('0x33')];if(_0x29da55[_0x92a2('0x30')][_0x92a2('0x46')]){_0x1269b8['include']=[{'all':!![]}];}_0x1269b8=_[_0x92a2('0x3e')]({},_0x1269b8,_0x29da55[_0x92a2('0x47')]);return db[_0x92a2('0x2e')][_0x92a2('0x48')](_0x1269b8)[_0x92a2('0x26')](handleEntityNotFound(_0x5a1687,null))['then'](respondWithResult(_0x5a1687,null))[_0x92a2('0x41')](handleError(_0x5a1687,null));};exports[_0x92a2('0x49')]=function(_0x24b7db,_0xd74be){return db[_0x92a2('0x2e')][_0x92a2('0x49')](_0x24b7db[_0x92a2('0x4a')],{})[_0x92a2('0x26')](respondWithResult(_0xd74be,0xc9))['catch'](handleError(_0xd74be,null));};exports[_0x92a2('0x4b')]=function(_0x1f632a,_0x50f6ee){if(_0x1f632a[_0x92a2('0x4a')]['id']){delete _0x1f632a[_0x92a2('0x4a')]['id'];}return db[_0x92a2('0x2e')][_0x92a2('0x48')]({'where':{'id':_0x1f632a['params']['id']}})[_0x92a2('0x26')](handleEntityNotFound(_0x50f6ee,null))[_0x92a2('0x26')](saveUpdates(_0x1f632a[_0x92a2('0x4a')],null))['then'](respondWithResult(_0x50f6ee,null))['catch'](handleError(_0x50f6ee,null));};exports[_0x92a2('0x27')]=function(_0x3afa24,_0x4db609){return db[_0x92a2('0x2e')][_0x92a2('0x48')]({'where':{'id':_0x3afa24[_0x92a2('0x43')]['id']}})['then'](handleEntityNotFound(_0x4db609,null))[_0x92a2('0x26')](removeEntity(_0x4db609,null))[_0x92a2('0x41')](handleError(_0x4db609,null));};exports[_0x92a2('0x4c')]=function(_0x4528db,_0x2317d3){return db['SquareDetailsReport']['describe']()['then'](respondWithResult(_0x2317d3,null))['catch'](handleError(_0x2317d3,null));};
\ No newline at end of file
+var _0xdc8c=['sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','stack','name','index','map','SquareDetailsReport','key','query','keys','filters','intersection','model','attributes','length','order','sort','where','filter','VIRTUAL','merge','options','rows','catch','show','params','rawAttributes','fields','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path'];(function(_0x1d5f83,_0x3c8996){var _0x4a0d77=function(_0x2b3363){while(--_0x2b3363){_0x1d5f83['push'](_0x1d5f83['shift']());}};_0x4a0d77(++_0x3c8996);}(_0xdc8c,0x114));var _0xcdc8=function(_0x2cdfc4,_0x4b90b0){_0x2cdfc4=_0x2cdfc4-0x0;var _0xaa3ef0=_0xdc8c[_0x2cdfc4];return _0xaa3ef0;};'use strict';var emlformat=require(_0xcdc8('0x0'));var rimraf=require(_0xcdc8('0x1'));var zipdir=require(_0xcdc8('0x2'));var jsonpatch=require(_0xcdc8('0x3'));var rp=require('request-promise');var moment=require(_0xcdc8('0x4'));var BPromise=require(_0xcdc8('0x5'));var Mustache=require('mustache');var util=require(_0xcdc8('0x6'));var path=require(_0xcdc8('0x7'));var sox=require(_0xcdc8('0x8'));var csv=require(_0xcdc8('0x9'));var ejs=require(_0xcdc8('0xa'));var fs=require('fs');var fs_extra=require(_0xcdc8('0xb'));var _=require(_0xcdc8('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xcdc8('0xd'));var deskjs=require(_0xcdc8('0xe'));var toCsv=require(_0xcdc8('0x9'));var querystring=require(_0xcdc8('0xf'));var Papa=require(_0xcdc8('0x10'));var Redis=require(_0xcdc8('0x11'));var authService=require(_0xcdc8('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xcdc8('0x13'));var hardwareService=require(_0xcdc8('0x14'));var logger=require(_0xcdc8('0x15'))(_0xcdc8('0x16'));var utils=require(_0xcdc8('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xcdc8('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x32770c,_0x7a1a51){_0x7a1a51=_0x7a1a51||0xcc;return function(_0x2eb88a){if(_0x2eb88a){return _0x32770c[_0xcdc8('0x19')](_0x7a1a51);}return _0x32770c[_0xcdc8('0x1a')](_0x7a1a51)['end']();};}function respondWithResult(_0x372d94,_0x2c6c56){_0x2c6c56=_0x2c6c56||0xc8;return function(_0x6a77bf){if(_0x6a77bf){return _0x372d94[_0xcdc8('0x1a')](_0x2c6c56)[_0xcdc8('0x1b')](_0x6a77bf);}};}function respondWithFilteredResult(_0x500c1d,_0x4442f4){return function(_0x54d8c5){if(_0x54d8c5){var _0x4e0eb0=typeof _0x4442f4[_0xcdc8('0x1c')]===_0xcdc8('0x1d')&&typeof _0x4442f4[_0xcdc8('0x1e')]==='undefined';var _0x16dfba=_0x54d8c5[_0xcdc8('0x1f')];var _0x38283a=_0x4e0eb0?0x0:_0x4442f4['offset'];var _0xf26784=_0x4e0eb0?_0x54d8c5['count']:_0x4442f4[_0xcdc8('0x1c')]+_0x4442f4['limit'];var _0x2569f5;if(_0xf26784>=_0x16dfba){_0xf26784=_0x16dfba;_0x2569f5=0xc8;}else{_0x2569f5=0xce;}_0x500c1d[_0xcdc8('0x1a')](_0x2569f5);return _0x500c1d['set'](_0xcdc8('0x20'),_0x38283a+'-'+_0xf26784+'/'+_0x16dfba)[_0xcdc8('0x1b')](_0x54d8c5);}return null;};}function patchUpdates(_0x2510e3){return function(_0x5f5a51){try{jsonpatch[_0xcdc8('0x21')](_0x5f5a51,_0x2510e3,!![]);}catch(_0x744fd9){return BPromise[_0xcdc8('0x22')](_0x744fd9);}return _0x5f5a51[_0xcdc8('0x23')]();};}function saveUpdates(_0x5a9393,_0x5197c7){return function(_0x16129e){if(_0x16129e){return _0x16129e[_0xcdc8('0x24')](_0x5a9393)['then'](function(_0x3fc6e2){return _0x3fc6e2;});}return null;};}function removeEntity(_0x57915f,_0x1cb936){return function(_0x1d6285){if(_0x1d6285){return _0x1d6285[_0xcdc8('0x25')]()[_0xcdc8('0x26')](function(){_0x57915f['status'](0xcc)[_0xcdc8('0x27')]();});}};}function handleEntityNotFound(_0x189f72,_0x4a33b2){return function(_0x14f3ca){if(!_0x14f3ca){_0x189f72[_0xcdc8('0x19')](0x194);}return _0x14f3ca;};}function handleError(_0x1facc9,_0x43e8d4){_0x43e8d4=_0x43e8d4||0x1f4;return function(_0x32f522){logger['error'](_0x32f522[_0xcdc8('0x28')]);if(_0x32f522['name']){delete _0x32f522[_0xcdc8('0x29')];}_0x1facc9[_0xcdc8('0x1a')](_0x43e8d4)['send'](_0x32f522);};}exports[_0xcdc8('0x2a')]=function(_0x23635c,_0x3b2fcd){var _0x2e6ab5={},_0xf0c1b9={},_0x2bed18={'count':0x0,'rows':[]};var _0x3c5781=_[_0xcdc8('0x2b')](db[_0xcdc8('0x2c')]['rawAttributes'],function(_0x85b003){return{'name':_0x85b003['fieldName'],'type':_0x85b003['type'][_0xcdc8('0x2d')]};});_0xf0c1b9['model']=_[_0xcdc8('0x2b')](_0x3c5781,_0xcdc8('0x29'));_0xf0c1b9[_0xcdc8('0x2e')]=_[_0xcdc8('0x2f')](_0x23635c['query']);_0xf0c1b9[_0xcdc8('0x30')]=_[_0xcdc8('0x31')](_0xf0c1b9[_0xcdc8('0x32')],_0xf0c1b9['query']);_0x2e6ab5[_0xcdc8('0x33')]=_[_0xcdc8('0x31')](_0xf0c1b9[_0xcdc8('0x32')],qs['fields'](_0x23635c[_0xcdc8('0x2e')]['fields']));_0x2e6ab5['attributes']=_0x2e6ab5[_0xcdc8('0x33')][_0xcdc8('0x34')]?_0x2e6ab5[_0xcdc8('0x33')]:_0xf0c1b9[_0xcdc8('0x32')];if(!_0x23635c['query']['hasOwnProperty']('nolimit')){_0x2e6ab5[_0xcdc8('0x1e')]=qs[_0xcdc8('0x1e')](_0x23635c[_0xcdc8('0x2e')][_0xcdc8('0x1e')]);_0x2e6ab5[_0xcdc8('0x1c')]=qs[_0xcdc8('0x1c')](_0x23635c[_0xcdc8('0x2e')][_0xcdc8('0x1c')]);}_0x2e6ab5[_0xcdc8('0x35')]=qs[_0xcdc8('0x36')](_0x23635c['query']['sort']);_0x2e6ab5[_0xcdc8('0x37')]=qs[_0xcdc8('0x30')](_['pick'](_0x23635c[_0xcdc8('0x2e')],_0xf0c1b9[_0xcdc8('0x30')]),_0x3c5781);if(_0x23635c['query'][_0xcdc8('0x38')]){_0x2e6ab5[_0xcdc8('0x37')]=_['merge'](_0x2e6ab5[_0xcdc8('0x37')],{'$or':_[_0xcdc8('0x2b')](_0x3c5781,function(_0x45b3c8){if(_0x45b3c8['type']!==_0xcdc8('0x39')){var _0x176805={};_0x176805[_0x45b3c8[_0xcdc8('0x29')]]={'$like':'%'+_0x23635c[_0xcdc8('0x2e')]['filter']+'%'};return _0x176805;}})});}_0x2e6ab5=_[_0xcdc8('0x3a')]({},_0x2e6ab5,_0x23635c[_0xcdc8('0x3b')]);var _0x47d463={'where':_0x2e6ab5[_0xcdc8('0x37')]};return db[_0xcdc8('0x2c')][_0xcdc8('0x1f')](_0x47d463)['then'](function(_0x1e41b6){_0x2bed18[_0xcdc8('0x1f')]=_0x1e41b6;if(_0x23635c[_0xcdc8('0x2e')]['includeAll']){_0x2e6ab5['include']=[{'all':!![]}];}return db[_0xcdc8('0x2c')]['findAll'](_0x2e6ab5);})[_0xcdc8('0x26')](function(_0x59e59b){_0x2bed18[_0xcdc8('0x3c')]=_0x59e59b;return _0x2bed18;})[_0xcdc8('0x26')](respondWithFilteredResult(_0x3b2fcd,_0x2e6ab5))[_0xcdc8('0x3d')](handleError(_0x3b2fcd,null));};exports[_0xcdc8('0x3e')]=function(_0x4ec54e,_0x32b957){var _0x3d8be3={'raw':!![],'where':{'id':_0x4ec54e[_0xcdc8('0x3f')]['id']}},_0x55bd03={};_0x55bd03['model']=_['keys'](db['SquareDetailsReport'][_0xcdc8('0x40')]);_0x55bd03[_0xcdc8('0x2e')]=_['keys'](_0x4ec54e['query']);_0x55bd03['filters']=_[_0xcdc8('0x31')](_0x55bd03[_0xcdc8('0x32')],_0x55bd03['query']);_0x3d8be3[_0xcdc8('0x33')]=_[_0xcdc8('0x31')](_0x55bd03['model'],qs[_0xcdc8('0x41')](_0x4ec54e[_0xcdc8('0x2e')][_0xcdc8('0x41')]));_0x3d8be3['attributes']=_0x3d8be3[_0xcdc8('0x33')][_0xcdc8('0x34')]?_0x3d8be3[_0xcdc8('0x33')]:_0x55bd03[_0xcdc8('0x32')];if(_0x4ec54e[_0xcdc8('0x2e')]['includeAll']){_0x3d8be3[_0xcdc8('0x42')]=[{'all':!![]}];}_0x3d8be3=_[_0xcdc8('0x3a')]({},_0x3d8be3,_0x4ec54e['options']);return db['SquareDetailsReport'][_0xcdc8('0x43')](_0x3d8be3)['then'](handleEntityNotFound(_0x32b957,null))['then'](respondWithResult(_0x32b957,null))[_0xcdc8('0x3d')](handleError(_0x32b957,null));};exports[_0xcdc8('0x44')]=function(_0x362401,_0x57fdd8){return db[_0xcdc8('0x2c')][_0xcdc8('0x44')](_0x362401['body'],{})[_0xcdc8('0x26')](respondWithResult(_0x57fdd8,0xc9))[_0xcdc8('0x3d')](handleError(_0x57fdd8,null));};exports['update']=function(_0x1a879f,_0x56165b){if(_0x1a879f['body']['id']){delete _0x1a879f[_0xcdc8('0x45')]['id'];}return db[_0xcdc8('0x2c')][_0xcdc8('0x43')]({'where':{'id':_0x1a879f[_0xcdc8('0x3f')]['id']}})[_0xcdc8('0x26')](handleEntityNotFound(_0x56165b,null))[_0xcdc8('0x26')](saveUpdates(_0x1a879f[_0xcdc8('0x45')],null))[_0xcdc8('0x26')](respondWithResult(_0x56165b,null))[_0xcdc8('0x3d')](handleError(_0x56165b,null));};exports[_0xcdc8('0x25')]=function(_0x56d4d1,_0x17ee51){return db[_0xcdc8('0x2c')][_0xcdc8('0x43')]({'where':{'id':_0x56d4d1[_0xcdc8('0x3f')]['id']}})[_0xcdc8('0x26')](handleEntityNotFound(_0x17ee51,null))[_0xcdc8('0x26')](removeEntity(_0x17ee51,null))[_0xcdc8('0x3d')](handleError(_0x17ee51,null));};exports[_0xcdc8('0x46')]=function(_0x1a4574,_0x27f40c){return db[_0xcdc8('0x2c')]['describe']()[_0xcdc8('0x26')](respondWithResult(_0x27f40c,null))[_0xcdc8('0x3d')](handleError(_0x27f40c,null));};
\ No newline at end of file
index 4eca45e..e3743d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7146=['exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./squareReportDetail.attributes'];(function(_0x1f5887,_0x2fa1f1){var _0x21774b=function(_0x48a7e5){while(--_0x48a7e5){_0x1f5887['push'](_0x1f5887['shift']());}};_0x21774b(++_0x2fa1f1);}(_0x7146,0xba));var _0x6714=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0x7146[_0x1477ef];return _0x164acd;};'use strict';var _=require(_0x6714('0x0'));var util=require(_0x6714('0x1'));var logger=require(_0x6714('0x2'))(_0x6714('0x3'));var moment=require(_0x6714('0x4'));var BPromise=require(_0x6714('0x5'));var rp=require(_0x6714('0x6'));var fs=require('fs');var path=require(_0x6714('0x7'));var rimraf=require('rimraf');var config=require(_0x6714('0x8'));var attributes=require(_0x6714('0x9'));module[_0x6714('0xa')]=function(_0x3766ce,_0xd08bde){return _0x3766ce[_0x6714('0xb')](_0x6714('0xc'),attributes,{'tableName':_0x6714('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe60f=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details'];(function(_0x5dfe6d,_0x232bc5){var _0x526ed6=function(_0x2d3379){while(--_0x2d3379){_0x5dfe6d['push'](_0x5dfe6d['shift']());}};_0x526ed6(++_0x232bc5);}(_0xe60f,0xe0));var _0xfe60=function(_0x596a76,_0xc6ecb8){_0x596a76=_0x596a76-0x0;var _0x1b2c47=_0xe60f[_0x596a76];return _0x1b2c47;};'use strict';var _=require('lodash');var util=require(_0xfe60('0x0'));var logger=require(_0xfe60('0x1'))(_0xfe60('0x2'));var moment=require(_0xfe60('0x3'));var BPromise=require(_0xfe60('0x4'));var rp=require(_0xfe60('0x5'));var fs=require('fs');var path=require(_0xfe60('0x6'));var rimraf=require(_0xfe60('0x7'));var config=require(_0xfe60('0x8'));var attributes=require(_0xfe60('0x9'));module[_0xfe60('0xa')]=function(_0x1cd587,_0x3cc641){return _0x1cd587[_0xfe60('0xb')](_0xfe60('0xc'),attributes,{'tableName':_0xfe60('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9bbc4f1..3c2e6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937d=['CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','debug','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SquareDetailsReport,\x20%s,\x20%s','result','catch'];(function(_0x1ed543,_0x347b0f){var _0x5dcdd0=function(_0x5a5499){while(--_0x5a5499){_0x1ed543['push'](_0x1ed543['shift']());}};_0x5dcdd0(++_0x347b0f);}(_0x937d,0x1f4));var _0xd937=function(_0x4d0d8a,_0x4b2dc0){_0x4d0d8a=_0x4d0d8a-0x0;var _0x490a34=_0x937d[_0x4d0d8a];return _0x490a34;};'use strict';var _=require(_0xd937('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd937('0x1'));var fs=require('fs');var Redis=require(_0xd937('0x2'));var db=require(_0xd937('0x3'))['db'];var utils=require(_0xd937('0x4'));var logger=require(_0xd937('0x5'))(_0xd937('0x6'));var config=require('../../config/environment');var jayson=require(_0xd937('0x7'));var client=jayson[_0xd937('0x8')][_0xd937('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f6cd9,_0x2454f9,_0x4dc790){return new BPromise(function(_0x490b1d,_0x372dff){return client[_0xd937('0xa')](_0x4f6cd9,_0x4dc790)[_0xd937('0xb')](function(_0xa97338){logger[_0xd937('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x2454f9,_0xd937('0xd'));logger['debug'](_0xd937('0xe'),_0x2454f9,'request\x20sent',JSON[_0xd937('0xf')](_0xa97338));if(_0xa97338[_0xd937('0x10')]){if(_0xa97338[_0xd937('0x10')][_0xd937('0x11')]===0x1f4){logger[_0xd937('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x2454f9,_0xa97338[_0xd937('0x10')][_0xd937('0x12')]);return _0x372dff(_0xa97338[_0xd937('0x10')][_0xd937('0x12')]);}logger[_0xd937('0x10')](_0xd937('0x13'),_0x2454f9,_0xa97338[_0xd937('0x10')][_0xd937('0x12')]);return _0x490b1d(_0xa97338[_0xd937('0x10')][_0xd937('0x12')]);}else{logger['info'](_0xd937('0x13'),_0x2454f9,_0xd937('0xd'));_0x490b1d(_0xa97338[_0xd937('0x14')]['message']);}})[_0xd937('0x15')](function(_0x16d2ba){logger[_0xd937('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x2454f9,_0x16d2ba);_0x372dff(_0x16d2ba);});});}exports[_0xd937('0x16')]=function(_0x3d6b1c){var _0x1d1b8b=this;return new Promise(function(_0x1bd7ee,_0x26d5ca){return db[_0xd937('0x17')][_0xd937('0x18')](_0x3d6b1c[_0xd937('0x19')],{'raw':_0x3d6b1c[_0xd937('0x1a')]?_0x3d6b1c[_0xd937('0x1a')][_0xd937('0x1b')]===undefined?!![]:![]:!![]})[_0xd937('0xb')](function(_0x2c18ea){logger[_0xd937('0xc')](_0xd937('0x16'),_0x3d6b1c);logger[_0xd937('0x1c')](_0xd937('0x16'),_0x3d6b1c,JSON['stringify'](_0x2c18ea));_0x1bd7ee(_0x2c18ea);})[_0xd937('0x15')](function(_0x168f3e){logger[_0xd937('0x10')](_0xd937('0x16'),_0x168f3e[_0xd937('0x12')],_0x3d6b1c);_0x26d5ca(_0x1d1b8b[_0xd937('0x10')](0x1f4,_0x168f3e[_0xd937('0x12')]));});});};
\ No newline at end of file
+var _0x263f=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','body','options','lodash','util','moment','bluebird'];(function(_0x1c4928,_0x52c743){var _0x3620e0=function(_0x42f9e7){while(--_0x42f9e7){_0x1c4928['push'](_0x1c4928['shift']());}};_0x3620e0(++_0x52c743);}(_0x263f,0x182));var _0xf263=function(_0x6949ed,_0x111f21){_0x6949ed=_0x6949ed-0x0;var _0x18065c=_0x263f[_0x6949ed];return _0x18065c;};'use strict';var _=require(_0xf263('0x0'));var util=require(_0xf263('0x1'));var moment=require(_0xf263('0x2'));var BPromise=require(_0xf263('0x3'));var rs=require(_0xf263('0x4'));var fs=require('fs');var Redis=require(_0xf263('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf263('0x6'));var logger=require(_0xf263('0x7'))(_0xf263('0x8'));var config=require('../../config/environment');var jayson=require(_0xf263('0x9'));var client=jayson[_0xf263('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fded6,_0xa2b1b0,_0x9644ab){return new BPromise(function(_0xa2e77e,_0x16ff53){return client['request'](_0x4fded6,_0x9644ab)[_0xf263('0xb')](function(_0x26504c){logger[_0xf263('0xc')](_0xf263('0xd'),_0xa2b1b0,_0xf263('0xe'));logger[_0xf263('0xf')](_0xf263('0x10'),_0xa2b1b0,'request\x20sent',JSON[_0xf263('0x11')](_0x26504c));if(_0x26504c['error']){if(_0x26504c[_0xf263('0x12')]['code']===0x1f4){logger['error'](_0xf263('0xd'),_0xa2b1b0,_0x26504c[_0xf263('0x12')][_0xf263('0x13')]);return _0x16ff53(_0x26504c[_0xf263('0x12')][_0xf263('0x13')]);}logger[_0xf263('0x12')](_0xf263('0xd'),_0xa2b1b0,_0x26504c['error'][_0xf263('0x13')]);return _0xa2e77e(_0x26504c['error'][_0xf263('0x13')]);}else{logger[_0xf263('0xc')](_0xf263('0xd'),_0xa2b1b0,_0xf263('0xe'));_0xa2e77e(_0x26504c[_0xf263('0x14')][_0xf263('0x13')]);}})[_0xf263('0x15')](function(_0x57c655){logger['error'](_0xf263('0xd'),_0xa2b1b0,_0x57c655);_0x16ff53(_0x57c655);});});}exports[_0xf263('0x16')]=function(_0x325a84){var _0x2e660e=this;return new Promise(function(_0x1ea46b,_0x56bd2d){return db[_0xf263('0x17')]['create'](_0x325a84[_0xf263('0x18')],{'raw':_0x325a84[_0xf263('0x19')]?_0x325a84[_0xf263('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xf263('0xb')](function(_0x169328){logger[_0xf263('0xc')]('CreateSquareDetailsReport',_0x325a84);logger[_0xf263('0xf')](_0xf263('0x16'),_0x325a84,JSON[_0xf263('0x11')](_0x169328));_0x1ea46b(_0x169328);})[_0xf263('0x15')](function(_0xa0695){logger[_0xf263('0x12')](_0xf263('0x16'),_0xa0695[_0xf263('0x13')],_0x325a84);_0x56bd2d(_0x2e660e[_0xf263('0x12')](0x1f4,_0xa0695[_0xf263('0x13')]));});});};
\ No newline at end of file
index dfeafca..218a59a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1f2=['isAuthenticated','/process/:pid/kill','killProcess','express','Router','../../components/auth/service','./system.controller','get'];(function(_0x2cc5a8,_0x1b47d9){var _0x5685b9=function(_0x12ef7e){while(--_0x12ef7e){_0x2cc5a8['push'](_0x2cc5a8['shift']());}};_0x5685b9(++_0x1b47d9);}(_0xe1f2,0xf3));var _0x2e1f=function(_0x2211ed,_0x1bca0b){_0x2211ed=_0x2211ed-0x0;var _0x4d78cc=_0xe1f2[_0x2211ed];return _0x4d78cc;};'use strict';var express=require(_0x2e1f('0x0'));var router=express[_0x2e1f('0x1')]();var auth=require(_0x2e1f('0x2'));var controller=require(_0x2e1f('0x3'));router[_0x2e1f('0x4')]('/',auth[_0x2e1f('0x5')](),controller['index']);router[_0x2e1f('0x4')](_0x2e1f('0x6'),auth['isAuthenticated'](),controller[_0x2e1f('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x869c=['killProcess','Router','./system.controller','index','get','/process/:pid/kill','isAuthenticated'];(function(_0x4d7a70,_0x2d3bfa){var _0x3aafbb=function(_0x43fbf2){while(--_0x43fbf2){_0x4d7a70['push'](_0x4d7a70['shift']());}};_0x3aafbb(++_0x2d3bfa);}(_0x869c,0x6a));var _0xc869=function(_0x11b664,_0x5ed6d7){_0x11b664=_0x11b664-0x0;var _0x419ea6=_0x869c[_0x11b664];return _0x419ea6;};'use strict';var express=require('express');var router=express[_0xc869('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xc869('0x1'));router['get']('/',auth['isAuthenticated'](),controller[_0xc869('0x2')]);router[_0xc869('0x3')](_0xc869('0x4'),auth[_0xc869('0x5')](),controller[_0xc869('0x6')]);module['exports']=router;
\ No newline at end of file
index f7e98e3..99cac39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c5=['format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','systeminformation','child_process','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index','getAllData','then','json','catch'];(function(_0x411674,_0x32eea5){var _0x1b9da8=function(_0x1c63b5){while(--_0x1c63b5){_0x411674['push'](_0x411674['shift']());}};_0x1b9da8(++_0x32eea5);}(_0xd6c5,0x1bf));var _0x5d6c=function(_0x499340,_0xe3d174){_0x499340=_0x499340-0x0;var _0x5ccbe8=_0xd6c5[_0x499340];return _0x5ccbe8;};'use strict';var info=require(_0x5d6c('0x0'));var exec=require(_0x5d6c('0x1'))['exec'];var logger=require('../../config/logger')(_0x5d6c('0x2'));var util=require(_0x5d6c('0x3'));var BPromise=require(_0x5d6c('0x4'));var _=require(_0x5d6c('0x5'));function handleError(_0x20b689,_0x3d7948,_0x4052e2){_0x3d7948=_0x3d7948||0x1f4;return function(_0x30dfc1){logger[_0x5d6c('0x6')](_0x5d6c('0x7'),_0x4052e2,_0x3d7948,util[_0x5d6c('0x8')](_0x30dfc1,{'showHidden':![],'depth':null}));delete _0x30dfc1[_0x5d6c('0x9')];_0x20b689[_0x5d6c('0xa')](_0x3d7948)[_0x5d6c('0xb')](_0x30dfc1);};}exports[_0x5d6c('0xc')]=function(_0x216991,_0x3fa3a2){return info[_0x5d6c('0xd')]()[_0x5d6c('0xe')](function(_0xdbe39){return _0x3fa3a2[_0x5d6c('0xa')](0xc8)[_0x5d6c('0xf')](_0xdbe39);})[_0x5d6c('0x10')](function(_0x4dd189){return _0x3fa3a2['status'](0x1f4)[_0x5d6c('0xf')](_0x4dd189);});};exports['killProcess']=function(_0x4a4f71,_0x12c248){var _0x184e37=['components/import/cm'];return new BPromise(function(_0xc95833,_0x1f528c){return exec(util[_0x5d6c('0x11')](_0x5d6c('0x12'),_0x4a4f71['params'][_0x5d6c('0x13')]),function(_0x4df759,_0x1169e7,_0x457c4d){if(_0x4df759){return _0x1f528c(_0x4df759);}return _0xc95833(_0x1169e7);});})[_0x5d6c('0xe')](function(_0x391f8d){var _0x398ad3=![];var _0x1a2b4c=_0x391f8d[_0x5d6c('0x14')](/\n/);for(var _0x2eff5b=0x0,_0x21f209=_0x184e37[_0x5d6c('0x15')];_0x2eff5b<_0x21f209,_0x398ad3===![];_0x2eff5b+=0x1){if(_0x391f8d[_0x5d6c('0x16')](_0x184e37[_0x2eff5b])>=0x0){_0x398ad3=!![];}}if(!_0x398ad3){throw new Error(util['format'](_0x5d6c('0x17'),_0x4a4f71[_0x5d6c('0x18')][_0x5d6c('0x13')]));}process[_0x5d6c('0x19')](_0x4a4f71['params'][_0x5d6c('0x13')],_0x5d6c('0x1a'));return _0x12c248[_0x5d6c('0xa')](0xc8)[_0x5d6c('0xf')]({'message':util['format'](_0x5d6c('0x1b'),_0x4a4f71[_0x5d6c('0x18')]['pid'])});})[_0x5d6c('0x10')](handleError(_0x12c248,null,_0x5d6c('0x1c')));};
\ No newline at end of file
+var _0x6ab4=['getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','SIGINT','exec','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index'];(function(_0x575c28,_0xb79fa9){var _0x46fc61=function(_0x2df376){while(--_0x2df376){_0x575c28['push'](_0x575c28['shift']());}};_0x46fc61(++_0xb79fa9);}(_0x6ab4,0x137));var _0x46ab=function(_0x1e7742,_0x258f1e){_0x1e7742=_0x1e7742-0x0;var _0x384f3e=_0x6ab4[_0x1e7742];return _0x384f3e;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0x46ab('0x0')];var logger=require(_0x46ab('0x1'))(_0x46ab('0x2'));var util=require(_0x46ab('0x3'));var BPromise=require(_0x46ab('0x4'));var _=require(_0x46ab('0x5'));function handleError(_0x4eaaa1,_0x212bb7,_0x5695d0){_0x212bb7=_0x212bb7||0x1f4;return function(_0x57ccef){logger[_0x46ab('0x6')](_0x46ab('0x7'),_0x5695d0,_0x212bb7,util[_0x46ab('0x8')](_0x57ccef,{'showHidden':![],'depth':null}));delete _0x57ccef[_0x46ab('0x9')];_0x4eaaa1[_0x46ab('0xa')](_0x212bb7)[_0x46ab('0xb')](_0x57ccef);};}exports[_0x46ab('0xc')]=function(_0x4968ea,_0x39a5ce){return info[_0x46ab('0xd')]()[_0x46ab('0xe')](function(_0x1465e3){return _0x39a5ce[_0x46ab('0xa')](0xc8)[_0x46ab('0xf')](_0x1465e3);})[_0x46ab('0x10')](function(_0x339ec9){return _0x39a5ce[_0x46ab('0xa')](0x1f4)[_0x46ab('0xf')](_0x339ec9);});};exports[_0x46ab('0x11')]=function(_0x19b64b,_0x370347){var _0x287ea7=[_0x46ab('0x12')];return new BPromise(function(_0x2cd735,_0x495c55){return exec(util[_0x46ab('0x13')](_0x46ab('0x14'),_0x19b64b[_0x46ab('0x15')]['pid']),function(_0x1c06ea,_0x335106,_0x121100){if(_0x1c06ea){return _0x495c55(_0x1c06ea);}return _0x2cd735(_0x335106);});})[_0x46ab('0xe')](function(_0x56f0a4){var _0x1f5bb4=![];var _0x2ce280=_0x56f0a4['split'](/\n/);for(var _0x35d718=0x0,_0x42c626=_0x287ea7[_0x46ab('0x16')];_0x35d718<_0x42c626,_0x1f5bb4===![];_0x35d718+=0x1){if(_0x56f0a4[_0x46ab('0x17')](_0x287ea7[_0x35d718])>=0x0){_0x1f5bb4=!![];}}if(!_0x1f5bb4){throw new Error(util[_0x46ab('0x13')](_0x46ab('0x18'),_0x19b64b['params'][_0x46ab('0x19')]));}process['kill'](_0x19b64b[_0x46ab('0x15')]['pid'],_0x46ab('0x1a'));return _0x370347['status'](0xc8)[_0x46ab('0xf')]({'message':util[_0x46ab('0x13')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x19b64b[_0x46ab('0x15')][_0x46ab('0x19')])});})[_0x46ab('0x10')](handleError(_0x370347,null,_0x46ab('0x11')));};
\ No newline at end of file
index 074ae33..06d3e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3458=['get','index','isAuthenticated','show','create','put','/:id','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./tag.controller'];(function(_0x3fd707,_0x123095){var _0x415c4c=function(_0x2db8b2){while(--_0x2db8b2){_0x3fd707['push'](_0x3fd707['shift']());}};_0x415c4c(++_0x123095);}(_0x3458,0x92));var _0x8345=function(_0xd4e824,_0x4ef75b){_0xd4e824=_0xd4e824-0x0;var _0x27e916=_0x3458[_0xd4e824];return _0x27e916;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8345('0x0'));var timeout=require(_0x8345('0x1'));var express=require(_0x8345('0x2'));var router=express['Router']();var fs_extra=require(_0x8345('0x3'));var auth=require(_0x8345('0x4'));var interaction=require(_0x8345('0x5'));var config=require('../../config/environment');var controller=require(_0x8345('0x6'));router[_0x8345('0x7')]('/',auth['isAuthenticated'](),controller[_0x8345('0x8')]);router[_0x8345('0x7')]('/:id',auth[_0x8345('0x9')](),controller[_0x8345('0xa')]);router['post']('/',auth[_0x8345('0x9')](),controller[_0x8345('0xb')]);router[_0x8345('0xc')](_0x8345('0xd'),auth[_0x8345('0x9')](),controller[_0x8345('0xe')]);router['delete'](_0x8345('0xd'),auth['isAuthenticated'](),controller[_0x8345('0xf')]);module[_0x8345('0x10')]=router;
\ No newline at end of file
+var _0x8cb1=['../../config/environment','./tag.controller','get','/:id','show','post','isAuthenticated','delete','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xf1fbe,_0x5bbcee){var _0x2b6c20=function(_0x556cec){while(--_0x556cec){_0xf1fbe['push'](_0xf1fbe['shift']());}};_0x2b6c20(++_0x5bbcee);}(_0x8cb1,0xe8));var _0x18cb=function(_0x57fcc0,_0x585004){_0x57fcc0=_0x57fcc0-0x0;var _0x5270df=_0x8cb1[_0x57fcc0];return _0x5270df;};'use strict';var multer=require(_0x18cb('0x0'));var util=require('util');var path=require(_0x18cb('0x1'));var timeout=require('connect-timeout');var express=require(_0x18cb('0x2'));var router=express[_0x18cb('0x3')]();var fs_extra=require(_0x18cb('0x4'));var auth=require(_0x18cb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x18cb('0x6'));var controller=require(_0x18cb('0x7'));router[_0x18cb('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x18cb('0x8')](_0x18cb('0x9'),auth['isAuthenticated'](),controller[_0x18cb('0xa')]);router[_0x18cb('0xb')]('/',auth[_0x18cb('0xc')](),controller['create']);router['put'](_0x18cb('0x9'),auth[_0x18cb('0xc')](),controller['update']);router[_0x18cb('0xd')]('/:id',auth[_0x18cb('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c2e9a1a..ebbe9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a2d=['#0091EA','STRING'];(function(_0x4e19aa,_0xabe3ad){var _0x5732b7=function(_0x54e05a){while(--_0x54e05a){_0x4e19aa['push'](_0x4e19aa['shift']());}};_0x5732b7(++_0xabe3ad);}(_0x9a2d,0x123));var _0xd9a2=function(_0x50d07e,_0x46292f){_0x50d07e=_0x50d07e-0x0;var _0x231796=_0x9a2d[_0x50d07e];return _0x231796;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd9a2('0x0')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd9a2('0x0')],'defaultValue':_0xd9a2('0x1')},'description':{'type':Sequelize[_0xd9a2('0x0')]}};
\ No newline at end of file
+var _0xefe2=['STRING','sequelize','exports','name'];(function(_0x390b6b,_0x2ead41){var _0x246b9a=function(_0x5a76a6){while(--_0x5a76a6){_0x390b6b['push'](_0x390b6b['shift']());}};_0x246b9a(++_0x2ead41);}(_0xefe2,0xd9));var _0x2efe=function(_0x240e6f,_0x46f5eb){_0x240e6f=_0x240e6f-0x0;var _0x50ca82=_0xefe2[_0x240e6f];return _0x50ca82;};'use strict';var Sequelize=require(_0x2efe('0x0'));module[_0x2efe('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x2efe('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x2efe('0x3')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x2efe('0x3')]}};
\ No newline at end of file
index e5492f5..23ae625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb248=['keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','Tag','findAll','rows','catch','params','rawAttributes','includeAll','options','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Tags','UserProfileResource','sendStatus','error','name','send','index','fieldName','type','key','model','map','query'];(function(_0x207ae6,_0x589a18){var _0x427066=function(_0x12b21c){while(--_0x12b21c){_0x207ae6['push'](_0x207ae6['shift']());}};_0x427066(++_0x589a18);}(_0xb248,0xc6));var _0x8b24=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xb248[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x8b24('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8b24('0x1'));var jsonpatch=require(_0x8b24('0x2'));var rp=require(_0x8b24('0x3'));var moment=require(_0x8b24('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8b24('0x5'));var util=require(_0x8b24('0x6'));var path=require('path');var sox=require(_0x8b24('0x7'));var csv=require(_0x8b24('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b24('0x9'));var _=require(_0x8b24('0xa'));var squel=require('squel');var crypto=require(_0x8b24('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x8b24('0xc'));var toCsv=require(_0x8b24('0x8'));var querystring=require(_0x8b24('0xd'));var Papa=require('papaparse');var Redis=require(_0x8b24('0xe'));var authService=require(_0x8b24('0xf'));var qs=require(_0x8b24('0x10'));var as=require(_0x8b24('0x11'));var hardwareService=require(_0x8b24('0x12'));var logger=require(_0x8b24('0x13'))(_0x8b24('0x14'));var utils=require(_0x8b24('0x15'));var config=require(_0x8b24('0x16'));var licenseUtil=require(_0x8b24('0x17'));var db=require(_0x8b24('0x18'))['db'];function respondWithStatusCode(_0x3d3450,_0x40c1e6){_0x40c1e6=_0x40c1e6||0xcc;return function(_0x40ea49){if(_0x40ea49){return _0x3d3450['sendStatus'](_0x40c1e6);}return _0x3d3450['status'](_0x40c1e6)[_0x8b24('0x19')]();};}function respondWithResult(_0x4433c0,_0xf92148){_0xf92148=_0xf92148||0xc8;return function(_0x32a451){if(_0x32a451){return _0x4433c0[_0x8b24('0x1a')](_0xf92148)[_0x8b24('0x1b')](_0x32a451);}};}function respondWithFilteredResult(_0x11d2ee,_0x3cd934){return function(_0x4e66ae){if(_0x4e66ae){var _0x5a5745=typeof _0x3cd934['offset']===_0x8b24('0x1c')&&typeof _0x3cd934['limit']==='undefined';var _0xafc423=_0x4e66ae[_0x8b24('0x1d')];var _0x527af7=_0x5a5745?0x0:_0x3cd934[_0x8b24('0x1e')];var _0x5e3c52=_0x5a5745?_0x4e66ae[_0x8b24('0x1d')]:_0x3cd934['offset']+_0x3cd934[_0x8b24('0x1f')];var _0x521f5c;if(_0x5e3c52>=_0xafc423){_0x5e3c52=_0xafc423;_0x521f5c=0xc8;}else{_0x521f5c=0xce;}_0x11d2ee[_0x8b24('0x1a')](_0x521f5c);return _0x11d2ee[_0x8b24('0x20')](_0x8b24('0x21'),_0x527af7+'-'+_0x5e3c52+'/'+_0xafc423)[_0x8b24('0x1b')](_0x4e66ae);}return null;};}function patchUpdates(_0x2a4f2d){return function(_0x44aae9){try{jsonpatch[_0x8b24('0x22')](_0x44aae9,_0x2a4f2d,!![]);}catch(_0x5c9c38){return BPromise[_0x8b24('0x23')](_0x5c9c38);}return _0x44aae9[_0x8b24('0x24')]();};}function saveUpdates(_0x4fff3c,_0xd9b96){return function(_0x13dd68){if(_0x13dd68){return _0x13dd68[_0x8b24('0x25')](_0x4fff3c)[_0x8b24('0x26')](function(_0x12a9f4){return _0x12a9f4;});}return null;};}function removeEntity(_0x10b721,_0x347591){return function(_0x3fddf8){if(_0x3fddf8){return _0x3fddf8[_0x8b24('0x27')]()[_0x8b24('0x26')](function(){var _0x2dd44b=_0x3fddf8[_0x8b24('0x28')]({'plain':!![]});var _0x2cfb27=_0x8b24('0x29');return db[_0x8b24('0x2a')][_0x8b24('0x27')]({'where':{'type':_0x2cfb27,'resourceId':_0x2dd44b['id']}})[_0x8b24('0x26')](function(){return _0x3fddf8;});})[_0x8b24('0x26')](function(){_0x10b721[_0x8b24('0x1a')](0xcc)[_0x8b24('0x19')]();});}};}function handleEntityNotFound(_0x1adcb4,_0xa6f06b){return function(_0x2be377){if(!_0x2be377){_0x1adcb4[_0x8b24('0x2b')](0x194);}return _0x2be377;};}function handleError(_0x1934d2,_0x364f3a){_0x364f3a=_0x364f3a||0x1f4;return function(_0x267f1e){logger[_0x8b24('0x2c')](_0x267f1e['stack']);if(_0x267f1e[_0x8b24('0x2d')]){delete _0x267f1e[_0x8b24('0x2d')];}_0x1934d2[_0x8b24('0x1a')](_0x364f3a)[_0x8b24('0x2e')](_0x267f1e);};}exports[_0x8b24('0x2f')]=function(_0x25b664,_0x1ab949){var _0x4de1cf={},_0xa37fe3={},_0x28d351={'count':0x0,'rows':[]};var _0x2ff6d7=_['map'](db['Tag']['rawAttributes'],function(_0x27cc28){return{'name':_0x27cc28[_0x8b24('0x30')],'type':_0x27cc28[_0x8b24('0x31')][_0x8b24('0x32')]};});_0xa37fe3[_0x8b24('0x33')]=_[_0x8b24('0x34')](_0x2ff6d7,_0x8b24('0x2d'));_0xa37fe3[_0x8b24('0x35')]=_[_0x8b24('0x36')](_0x25b664['query']);_0xa37fe3[_0x8b24('0x37')]=_[_0x8b24('0x38')](_0xa37fe3[_0x8b24('0x33')],_0xa37fe3['query']);_0x4de1cf[_0x8b24('0x39')]=_[_0x8b24('0x38')](_0xa37fe3[_0x8b24('0x33')],qs[_0x8b24('0x3a')](_0x25b664[_0x8b24('0x35')][_0x8b24('0x3a')]));_0x4de1cf[_0x8b24('0x39')]=_0x4de1cf[_0x8b24('0x39')][_0x8b24('0x3b')]?_0x4de1cf['attributes']:_0xa37fe3[_0x8b24('0x33')];if(!_0x25b664[_0x8b24('0x35')]['hasOwnProperty'](_0x8b24('0x3c'))){_0x4de1cf[_0x8b24('0x1f')]=qs['limit'](_0x25b664[_0x8b24('0x35')][_0x8b24('0x1f')]);_0x4de1cf[_0x8b24('0x1e')]=qs[_0x8b24('0x1e')](_0x25b664['query'][_0x8b24('0x1e')]);}_0x4de1cf[_0x8b24('0x3d')]=qs[_0x8b24('0x3e')](_0x25b664[_0x8b24('0x35')][_0x8b24('0x3e')]);_0x4de1cf[_0x8b24('0x3f')]=qs['filters'](_[_0x8b24('0x40')](_0x25b664[_0x8b24('0x35')],_0xa37fe3[_0x8b24('0x37')]),_0x2ff6d7);if(_0x25b664[_0x8b24('0x35')][_0x8b24('0x41')]){_0x4de1cf[_0x8b24('0x3f')]=_[_0x8b24('0x42')](_0x4de1cf[_0x8b24('0x3f')],{'$or':_[_0x8b24('0x34')](_0x2ff6d7,function(_0x261e0f){if(_0x261e0f[_0x8b24('0x31')]!=='VIRTUAL'){var _0x1d319e={};_0x1d319e[_0x261e0f['name']]={'$like':'%'+_0x25b664[_0x8b24('0x35')][_0x8b24('0x41')]+'%'};return _0x1d319e;}})});}_0x4de1cf=_[_0x8b24('0x42')]({},_0x4de1cf,_0x25b664['options']);var _0x8a41d0={'where':_0x4de1cf[_0x8b24('0x3f')]};return db[_0x8b24('0x43')]['count'](_0x8a41d0)[_0x8b24('0x26')](function(_0x4f8da5){_0x28d351['count']=_0x4f8da5;if(_0x25b664[_0x8b24('0x35')]['includeAll']){_0x4de1cf['include']=[{'all':!![]}];}return db[_0x8b24('0x43')][_0x8b24('0x44')](_0x4de1cf);})[_0x8b24('0x26')](function(_0x3c6dc2){_0x28d351[_0x8b24('0x45')]=_0x3c6dc2;return _0x28d351;})[_0x8b24('0x26')](respondWithFilteredResult(_0x1ab949,_0x4de1cf))[_0x8b24('0x46')](handleError(_0x1ab949,null));};exports['show']=function(_0x58cd75,_0x39a9e8){var _0x38f78a={'raw':!![],'where':{'id':_0x58cd75[_0x8b24('0x47')]['id']}},_0x1752b0={};_0x1752b0['model']=_[_0x8b24('0x36')](db[_0x8b24('0x43')][_0x8b24('0x48')]);_0x1752b0['query']=_[_0x8b24('0x36')](_0x58cd75['query']);_0x1752b0[_0x8b24('0x37')]=_[_0x8b24('0x38')](_0x1752b0['model'],_0x1752b0[_0x8b24('0x35')]);_0x38f78a[_0x8b24('0x39')]=_[_0x8b24('0x38')](_0x1752b0[_0x8b24('0x33')],qs[_0x8b24('0x3a')](_0x58cd75[_0x8b24('0x35')][_0x8b24('0x3a')]));_0x38f78a[_0x8b24('0x39')]=_0x38f78a[_0x8b24('0x39')][_0x8b24('0x3b')]?_0x38f78a[_0x8b24('0x39')]:_0x1752b0[_0x8b24('0x33')];if(_0x58cd75['query'][_0x8b24('0x49')]){_0x38f78a['include']=[{'all':!![]}];}_0x38f78a=_[_0x8b24('0x42')]({},_0x38f78a,_0x58cd75[_0x8b24('0x4a')]);return db['Tag']['find'](_0x38f78a)[_0x8b24('0x26')](handleEntityNotFound(_0x39a9e8,null))[_0x8b24('0x26')](respondWithResult(_0x39a9e8,null))[_0x8b24('0x46')](handleError(_0x39a9e8,null));};exports[_0x8b24('0x4b')]=function(_0x407b2f,_0x22619e){return db[_0x8b24('0x43')][_0x8b24('0x4b')](_0x407b2f['body'],{})['then'](function(_0x4b274c){var _0x3cacf8=_0x407b2f['user'][_0x8b24('0x28')]({'plain':!![]});if(!_0x3cacf8)throw new Error(_0x8b24('0x4c'));if(_0x3cacf8[_0x8b24('0x4d')]===_0x8b24('0x4e')){var _0x58a26d=_0x4b274c[_0x8b24('0x28')]({'plain':!![]});var _0x3df397=_0x8b24('0x29');return db[_0x8b24('0x4f')][_0x8b24('0x50')]({'where':{'name':_0x3df397,'userProfileId':_0x3cacf8[_0x8b24('0x51')]},'raw':!![]})[_0x8b24('0x26')](function(_0x1c208f){if(_0x1c208f&&_0x1c208f[_0x8b24('0x52')]===0x0){return db[_0x8b24('0x2a')][_0x8b24('0x4b')]({'name':_0x58a26d[_0x8b24('0x2d')],'resourceId':_0x58a26d['id'],'type':_0x1c208f[_0x8b24('0x2d')],'sectionId':_0x1c208f['id']},{})[_0x8b24('0x26')](function(){return _0x4b274c;});}else{return _0x4b274c;}})[_0x8b24('0x46')](function(_0x19bf6f){logger[_0x8b24('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x19bf6f);throw _0x19bf6f;});}return _0x4b274c;})[_0x8b24('0x26')](respondWithResult(_0x22619e,0xc9))[_0x8b24('0x46')](handleError(_0x22619e,null));};exports[_0x8b24('0x25')]=function(_0x3dcec6,_0x4bac9f){if(_0x3dcec6[_0x8b24('0x53')]['id']){delete _0x3dcec6[_0x8b24('0x53')]['id'];}return db[_0x8b24('0x43')][_0x8b24('0x50')]({'where':{'id':_0x3dcec6[_0x8b24('0x47')]['id']}})[_0x8b24('0x26')](handleEntityNotFound(_0x4bac9f,null))[_0x8b24('0x26')](saveUpdates(_0x3dcec6[_0x8b24('0x53')],null))[_0x8b24('0x26')](respondWithResult(_0x4bac9f,null))[_0x8b24('0x46')](handleError(_0x4bac9f,null));};exports[_0x8b24('0x27')]=function(_0x324222,_0x3ee4e2){return db[_0x8b24('0x43')][_0x8b24('0x50')]({'where':{'id':_0x324222[_0x8b24('0x47')]['id']}})['then'](handleEntityNotFound(_0x3ee4e2,null))['then'](removeEntity(_0x3ee4e2,null))['catch'](handleError(_0x3ee4e2,null));};
\ No newline at end of file
+var _0x008c=['path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then','destroy','get','stack','name','index','map','Tag','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x3f3825,_0xc1fa97){var _0x59d8be=function(_0x2ee1d1){while(--_0x2ee1d1){_0x3f3825['push'](_0x3f3825['shift']());}};_0x59d8be(++_0xc1fa97);}(_0x008c,0x188));var _0xc008=function(_0x33bc64,_0x4d1e92){_0x33bc64=_0x33bc64-0x0;var _0x3fdd34=_0x008c[_0x33bc64];return _0x3fdd34;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){var _0x2e3cfb=_0x58a6ea[_0xc008('0x23')]({'plain':!![]});var _0x5410f5='Tags';return db['UserProfileResource'][_0xc008('0x22')]({'where':{'type':_0x5410f5,'resourceId':_0x2e3cfb['id']}})[_0xc008('0x21')](function(){return _0x58a6ea;});})[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e2aca,_0x4fce9c){return function(_0x4adbab){if(!_0x4adbab){_0x5e2aca['sendStatus'](0x194);}return _0x4adbab;};}function handleError(_0x3865c0,_0x29ba43){_0x29ba43=_0x29ba43||0x1f4;return function(_0x25eae4){logger['error'](_0x25eae4[_0xc008('0x24')]);if(_0x25eae4[_0xc008('0x25')]){delete _0x25eae4[_0xc008('0x25')];}_0x3865c0[_0xc008('0x19')](_0x29ba43)['send'](_0x25eae4);};}exports[_0xc008('0x26')]=function(_0x2e0b4e,_0x53ed35){var _0x58db82={},_0x539766={},_0x1032b2={'count':0x0,'rows':[]};var _0x267abd=_[_0xc008('0x27')](db[_0xc008('0x28')][_0xc008('0x29')],function(_0xceebc3){return{'name':_0xceebc3[_0xc008('0x2a')],'type':_0xceebc3[_0xc008('0x2b')][_0xc008('0x2c')]};});_0x539766[_0xc008('0x2d')]=_[_0xc008('0x27')](_0x267abd,_0xc008('0x25'));_0x539766['query']=_[_0xc008('0x2e')](_0x2e0b4e[_0xc008('0x2f')]);_0x539766['filters']=_[_0xc008('0x30')](_0x539766[_0xc008('0x2d')],_0x539766[_0xc008('0x2f')]);_0x58db82[_0xc008('0x31')]=_[_0xc008('0x30')](_0x539766[_0xc008('0x2d')],qs[_0xc008('0x32')](_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x32')]));_0x58db82['attributes']=_0x58db82[_0xc008('0x31')][_0xc008('0x33')]?_0x58db82[_0xc008('0x31')]:_0x539766[_0xc008('0x2d')];if(!_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x34')](_0xc008('0x35'))){_0x58db82['limit']=qs[_0xc008('0x1d')](_0x2e0b4e[_0xc008('0x2f')]['limit']);_0x58db82[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x2e0b4e['query'][_0xc008('0x1b')]);}_0x58db82[_0xc008('0x36')]=qs[_0xc008('0x37')](_0x2e0b4e['query']['sort']);_0x58db82['where']=qs[_0xc008('0x38')](_['pick'](_0x2e0b4e[_0xc008('0x2f')],_0x539766[_0xc008('0x38')]),_0x267abd);if(_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x39')]){_0x58db82[_0xc008('0x3a')]=_[_0xc008('0x3b')](_0x58db82[_0xc008('0x3a')],{'$or':_[_0xc008('0x27')](_0x267abd,function(_0xffd2b3){if(_0xffd2b3[_0xc008('0x2b')]!==_0xc008('0x3c')){var _0xdfca2e={};_0xdfca2e[_0xffd2b3[_0xc008('0x25')]]={'$like':'%'+_0x2e0b4e[_0xc008('0x2f')]['filter']+'%'};return _0xdfca2e;}})});}_0x58db82=_[_0xc008('0x3b')]({},_0x58db82,_0x2e0b4e[_0xc008('0x3d')]);var _0x30b7df={'where':_0x58db82[_0xc008('0x3a')]};return db['Tag'][_0xc008('0x1e')](_0x30b7df)[_0xc008('0x21')](function(_0xc8cb91){_0x1032b2[_0xc008('0x1e')]=_0xc8cb91;if(_0x2e0b4e[_0xc008('0x2f')]['includeAll']){_0x58db82[_0xc008('0x3e')]=[{'all':!![]}];}return db[_0xc008('0x28')][_0xc008('0x3f')](_0x58db82);})[_0xc008('0x21')](function(_0x7279e8){_0x1032b2['rows']=_0x7279e8;return _0x1032b2;})[_0xc008('0x21')](respondWithFilteredResult(_0x53ed35,_0x58db82))[_0xc008('0x40')](handleError(_0x53ed35,null));};exports[_0xc008('0x41')]=function(_0x408192,_0x4b80f3){var _0x26cd05={'raw':!![],'where':{'id':_0x408192[_0xc008('0x42')]['id']}},_0xe37446={};_0xe37446['model']=_[_0xc008('0x2e')](db['Tag'][_0xc008('0x29')]);_0xe37446['query']=_[_0xc008('0x2e')](_0x408192[_0xc008('0x2f')]);_0xe37446['filters']=_[_0xc008('0x30')](_0xe37446[_0xc008('0x2d')],_0xe37446[_0xc008('0x2f')]);_0x26cd05['attributes']=_[_0xc008('0x30')](_0xe37446[_0xc008('0x2d')],qs[_0xc008('0x32')](_0x408192[_0xc008('0x2f')][_0xc008('0x32')]));_0x26cd05[_0xc008('0x31')]=_0x26cd05['attributes']['length']?_0x26cd05['attributes']:_0xe37446[_0xc008('0x2d')];if(_0x408192[_0xc008('0x2f')][_0xc008('0x43')]){_0x26cd05[_0xc008('0x3e')]=[{'all':!![]}];}_0x26cd05=_[_0xc008('0x3b')]({},_0x26cd05,_0x408192[_0xc008('0x3d')]);return db[_0xc008('0x28')][_0xc008('0x44')](_0x26cd05)['then'](handleEntityNotFound(_0x4b80f3,null))['then'](respondWithResult(_0x4b80f3,null))['catch'](handleError(_0x4b80f3,null));};exports[_0xc008('0x45')]=function(_0x2651cf,_0x158eae){return db['Tag'][_0xc008('0x45')](_0x2651cf[_0xc008('0x46')],{})[_0xc008('0x21')](function(_0x1c2c50){var _0x4981b4=_0x2651cf[_0xc008('0x47')][_0xc008('0x23')]({'plain':!![]});if(!_0x4981b4)throw new Error(_0xc008('0x48'));if(_0x4981b4[_0xc008('0x49')]===_0xc008('0x47')){var _0x52c444=_0x1c2c50['get']({'plain':!![]});var _0x223056='Tags';return db[_0xc008('0x4a')][_0xc008('0x44')]({'where':{'name':_0x223056,'userProfileId':_0x4981b4[_0xc008('0x4b')]},'raw':!![]})['then'](function(_0x144ab2){if(_0x144ab2&&_0x144ab2[_0xc008('0x4c')]===0x0){return db[_0xc008('0x4d')][_0xc008('0x45')]({'name':_0x52c444[_0xc008('0x25')],'resourceId':_0x52c444['id'],'type':_0x144ab2['name'],'sectionId':_0x144ab2['id']},{})[_0xc008('0x21')](function(){return _0x1c2c50;});}else{return _0x1c2c50;}})[_0xc008('0x40')](function(_0x4b4c6d){logger[_0xc008('0x4e')](_0xc008('0x4f'),_0x4b4c6d);throw _0x4b4c6d;});}return _0x1c2c50;})['then'](respondWithResult(_0x158eae,0xc9))['catch'](handleError(_0x158eae,null));};exports[_0xc008('0x20')]=function(_0xd47b74,_0x20947b){if(_0xd47b74[_0xc008('0x46')]['id']){delete _0xd47b74[_0xc008('0x46')]['id'];}return db['Tag']['find']({'where':{'id':_0xd47b74[_0xc008('0x42')]['id']}})['then'](handleEntityNotFound(_0x20947b,null))[_0xc008('0x21')](saveUpdates(_0xd47b74[_0xc008('0x46')],null))[_0xc008('0x21')](respondWithResult(_0x20947b,null))[_0xc008('0x40')](handleError(_0x20947b,null));};exports[_0xc008('0x22')]=function(_0x27a167,_0x49d8b0){return db[_0xc008('0x28')][_0xc008('0x44')]({'where':{'id':_0x27a167[_0xc008('0x42')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x49d8b0,null))[_0xc008('0x21')](removeEntity(_0x49d8b0,null))['catch'](handleError(_0x49d8b0,null));};
\ No newline at end of file
index c614c7d..d9e7bc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2b5=['tools_tags','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./tag.attributes','exports','Tag'];(function(_0x10ff4c,_0x35c7e2){var _0x28bac8=function(_0x5129ba){while(--_0x5129ba){_0x10ff4c['push'](_0x10ff4c['shift']());}};_0x28bac8(++_0x35c7e2);}(_0xf2b5,0xa1));var _0x5f2b=function(_0x4e4f0e,_0x1c3892){_0x4e4f0e=_0x4e4f0e-0x0;var _0x1a7219=_0xf2b5[_0x4e4f0e];return _0x1a7219;};'use strict';var _=require('lodash');var util=require(_0x5f2b('0x0'));var logger=require(_0x5f2b('0x1'))('api');var moment=require('moment');var BPromise=require(_0x5f2b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5f2b('0x3'));var rimraf=require(_0x5f2b('0x4'));var config=require(_0x5f2b('0x5'));var attributes=require(_0x5f2b('0x6'));module[_0x5f2b('0x7')]=function(_0x3a07e0,_0x513d4a){return _0x3a07e0['define'](_0x5f2b('0x8'),attributes,{'tableName':_0x5f2b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x594a=['util','../../config/logger','api','moment','request-promise','../../config/environment','./tag.attributes','Tag','tools_tags','lodash'];(function(_0x3f657d,_0x497ec2){var _0x28c6a5=function(_0x263232){while(--_0x263232){_0x3f657d['push'](_0x3f657d['shift']());}};_0x28c6a5(++_0x497ec2);}(_0x594a,0x77));var _0xa594=function(_0xc80606,_0x40cc15){_0xc80606=_0xc80606-0x0;var _0x4187f5=_0x594a[_0xc80606];return _0x4187f5;};'use strict';var _=require(_0xa594('0x0'));var util=require(_0xa594('0x1'));var logger=require(_0xa594('0x2'))(_0xa594('0x3'));var moment=require(_0xa594('0x4'));var BPromise=require('bluebird');var rp=require(_0xa594('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa594('0x6'));var attributes=require(_0xa594('0x7'));module['exports']=function(_0x350cca,_0x3c5939){return _0x350cca['define'](_0xa594('0x8'),attributes,{'tableName':_0xa594('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0949ae..bbc312f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['request','then','info','Tag,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3ea1af,_0x5df186){var _0x22cab5=function(_0x362995){while(--_0x362995){_0x3ea1af['push'](_0x3ea1af['shift']());}};_0x22cab5(++_0x5df186);}(_0xed1f,0x6a));var _0xfed1=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0xed1f[_0x307d86];return _0x361745;};'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});function respondWithRpcPromise(_0x380e18,_0x612b38,_0x2a6082){return new BPromise(function(_0x2967ef,_0x568d48){return client[_0xfed1('0xe')](_0x380e18,_0x2a6082)[_0xfed1('0xf')](function(_0x48862d){logger[_0xfed1('0x10')](_0xfed1('0x11'),_0x612b38,'request\x20sent');logger[_0xfed1('0x12')]('Tag,\x20%s,\x20%s,\x20%s',_0x612b38,_0xfed1('0x13'),JSON[_0xfed1('0x14')](_0x48862d));if(_0x48862d['error']){if(_0x48862d['error'][_0xfed1('0x15')]===0x1f4){logger[_0xfed1('0x16')]('Tag,\x20%s,\x20%s',_0x612b38,_0x48862d[_0xfed1('0x16')]['message']);return _0x568d48(_0x48862d['error'][_0xfed1('0x17')]);}logger[_0xfed1('0x16')]('Tag,\x20%s,\x20%s',_0x612b38,_0x48862d[_0xfed1('0x16')]['message']);return _0x2967ef(_0x48862d['error'][_0xfed1('0x17')]);}else{logger[_0xfed1('0x10')](_0xfed1('0x11'),_0x612b38,_0xfed1('0x13'));_0x2967ef(_0x48862d['result'][_0xfed1('0x17')]);}})['catch'](function(_0x36ff34){logger[_0xfed1('0x16')]('Tag,\x20%s,\x20%s',_0x612b38,_0x36ff34);_0x568d48(_0x36ff34);});});}
\ No newline at end of file
+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(_0xc14a81,_0xe83ea4){var _0x4ac095=function(_0x530656){while(--_0x530656){_0xc14a81['push'](_0xc14a81['shift']());}};_0x4ac095(++_0xe83ea4);}(_0x4f17,0x9e));var _0x74f1=function(_0x31295c,_0x2f2b82){_0x31295c=_0x31295c-0x0;var _0x2c150e=_0x4f17[_0x31295c];return _0x2c150e;};'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
index 0afa1a7..018770e 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('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(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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 7f8fa3b..3e80973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x58b899,_0x3c2744){var _0x1fd4d8=function(_0x94bfb6){while(--_0x94bfb6){_0x58b899['push'](_0x58b899['shift']());}};_0x1fd4d8(++_0x3c2744);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x3b573e,_0x20d602){var _0x1f4158=function(_0x324d97){while(--_0x324d97){_0x3b573e['push'](_0x3b573e['shift']());}};_0x1f4158(++_0x20d602);}(_0xb10b,0x12a));var _0xbb10=function(_0x8014d8,_0x134a36){_0x8014d8=_0x8014d8-0x0;var _0x581b7b=_0xb10b[_0x8014d8];return _0x581b7b;};'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 f7db8b6..4876b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f34=['ids','Chat','Mail','Openchannel','Whatsapp','transaction','Voice','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','interface','UserVoiceQueueRt','isNil','format','SIP/%s','voicePause','all','upsert','addAgents','spread','removeAgents','isArray','Fax','Queue:remove','getAgents','filter','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','stack','name','send','index','map','Team','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','VIRTUAL','options','where','includeAll','include','findAll','rows','show','keys','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','destroy','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','sequelize','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','VoicePrefixId','getQueues','channel','isValidChannel','Unknown\x20channel','toLowerCase','Queue','capitalize','Queues','addQueues','findOne','ValidationError','add'];(function(_0x172231,_0x551cf0){var _0x14cd30=function(_0x45a35f){while(--_0x45a35f){_0x172231['push'](_0x172231['shift']());}};_0x14cd30(++_0x551cf0);}(_0x0f34,0xb7));var _0x40f3=function(_0xd8768,_0x3fedcb){_0xd8768=_0xd8768-0x0;var _0x46228f=_0x0f34[_0xd8768];return _0x46228f;};'use strict';var emlformat=require(_0x40f3('0x0'));var rimraf=require(_0x40f3('0x1'));var zipdir=require(_0x40f3('0x2'));var jsonpatch=require(_0x40f3('0x3'));var rp=require(_0x40f3('0x4'));var moment=require(_0x40f3('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x40f3('0x6'));var util=require(_0x40f3('0x7'));var path=require('path');var sox=require(_0x40f3('0x8'));var csv=require(_0x40f3('0x9'));var ejs=require(_0x40f3('0xa'));var fs=require('fs');var fs_extra=require(_0x40f3('0xb'));var _=require(_0x40f3('0xc'));var squel=require('squel');var crypto=require(_0x40f3('0xd'));var jsforce=require(_0x40f3('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x40f3('0xf'));var Redis=require(_0x40f3('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x40f3('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x40f3('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x40f3('0x13'));var licenseUtil=require(_0x40f3('0x14'));var db=require(_0x40f3('0x15'))['db'];config['redis']=_[_0x40f3('0x16')](config[_0x40f3('0x17')],{'host':_0x40f3('0x18'),'port':0x18eb});var socket=require(_0x40f3('0x19'))(new Redis(config['redis']));require(_0x40f3('0x1a'))[_0x40f3('0x1b')](socket);function respondWithStatusCode(_0x461c07,_0x37c7a5){_0x37c7a5=_0x37c7a5||0xcc;return function(_0x2a845e){if(_0x2a845e){return _0x461c07[_0x40f3('0x1c')](_0x37c7a5);}return _0x461c07[_0x40f3('0x1d')](_0x37c7a5)[_0x40f3('0x1e')]();};}function respondWithResult(_0x514602,_0x18c4c3){_0x18c4c3=_0x18c4c3||0xc8;return function(_0x29afb0){if(_0x29afb0){return _0x514602['status'](_0x18c4c3)[_0x40f3('0x1f')](_0x29afb0);}};}function respondWithFilteredResult(_0xbd54a8,_0xa4fc23){return function(_0x180cda){if(_0x180cda){var _0x7916f=typeof _0xa4fc23['offset']==='undefined'&&typeof _0xa4fc23[_0x40f3('0x20')]===_0x40f3('0x21');var _0x17910f=_0x180cda[_0x40f3('0x22')];var _0x18d7b9=_0x7916f?0x0:_0xa4fc23[_0x40f3('0x23')];var _0x133654=_0x7916f?_0x180cda[_0x40f3('0x22')]:_0xa4fc23['offset']+_0xa4fc23[_0x40f3('0x20')];var _0x5ea5d4;if(_0x133654>=_0x17910f){_0x133654=_0x17910f;_0x5ea5d4=0xc8;}else{_0x5ea5d4=0xce;}_0xbd54a8[_0x40f3('0x1d')](_0x5ea5d4);return _0xbd54a8[_0x40f3('0x24')]('Content-Range',_0x18d7b9+'-'+_0x133654+'/'+_0x17910f)[_0x40f3('0x1f')](_0x180cda);}return null;};}function patchUpdates(_0x9e9191){return function(_0x2d718c){try{jsonpatch[_0x40f3('0x25')](_0x2d718c,_0x9e9191,!![]);}catch(_0x17bceb){return BPromise[_0x40f3('0x26')](_0x17bceb);}return _0x2d718c[_0x40f3('0x27')]();};}function saveUpdates(_0x542789,_0xeff0b8){return function(_0x3b3ec6){if(_0x3b3ec6){return _0x3b3ec6[_0x40f3('0x28')](_0x542789)[_0x40f3('0x29')](function(_0x141726){return _0x141726;});}return null;};}function handleEntityNotFound(_0x1119e8,_0x51c79f){return function(_0x32e6d9){if(!_0x32e6d9){_0x1119e8['sendStatus'](0x194);}return _0x32e6d9;};}function handleError(_0x354b0e,_0x5a72c9){_0x5a72c9=_0x5a72c9||0x1f4;return function(_0x1a334f){logger['error'](_0x1a334f[_0x40f3('0x2a')]);if(_0x1a334f[_0x40f3('0x2b')]){delete _0x1a334f['name'];}_0x354b0e[_0x40f3('0x1d')](_0x5a72c9)[_0x40f3('0x2c')](_0x1a334f);};}exports[_0x40f3('0x2d')]=function(_0x108755,_0x2fc43c){var _0x5e2316={},_0x1e5e71={},_0x4871f4={'count':0x0,'rows':[]};var _0x5a2fc9=_[_0x40f3('0x2e')](db[_0x40f3('0x2f')][_0x40f3('0x30')],function(_0x107e95){return{'name':_0x107e95['fieldName'],'type':_0x107e95[_0x40f3('0x31')][_0x40f3('0x32')]};});_0x1e5e71[_0x40f3('0x33')]=_[_0x40f3('0x2e')](_0x5a2fc9,'name');_0x1e5e71[_0x40f3('0x34')]=_['keys'](_0x108755[_0x40f3('0x34')]);_0x1e5e71[_0x40f3('0x35')]=_['intersection'](_0x1e5e71[_0x40f3('0x33')],_0x1e5e71[_0x40f3('0x34')]);_0x5e2316[_0x40f3('0x36')]=_[_0x40f3('0x37')](_0x1e5e71[_0x40f3('0x33')],qs['fields'](_0x108755[_0x40f3('0x34')][_0x40f3('0x38')]));_0x5e2316['attributes']=_0x5e2316[_0x40f3('0x36')][_0x40f3('0x39')]?_0x5e2316['attributes']:_0x1e5e71['model'];if(!_0x108755[_0x40f3('0x34')][_0x40f3('0x3a')](_0x40f3('0x3b'))){_0x5e2316['limit']=qs[_0x40f3('0x20')](_0x108755[_0x40f3('0x34')]['limit']);_0x5e2316[_0x40f3('0x23')]=qs['offset'](_0x108755[_0x40f3('0x34')][_0x40f3('0x23')]);}_0x5e2316[_0x40f3('0x3c')]=qs['sort'](_0x108755[_0x40f3('0x34')][_0x40f3('0x3d')]);_0x5e2316['where']=qs[_0x40f3('0x35')](_[_0x40f3('0x3e')](_0x108755[_0x40f3('0x34')],_0x1e5e71[_0x40f3('0x35')]),_0x5a2fc9);if(_0x108755['query']['filter']){_0x5e2316['where']=_[_0x40f3('0x3f')](_0x5e2316['where'],{'$or':_[_0x40f3('0x2e')](_0x5a2fc9,function(_0x686b6d){if(_0x686b6d['type']!==_0x40f3('0x40')){var _0x3ce5db={};_0x3ce5db[_0x686b6d[_0x40f3('0x2b')]]={'$like':'%'+_0x108755[_0x40f3('0x34')]['filter']+'%'};return _0x3ce5db;}})});}_0x5e2316=_['merge']({},_0x5e2316,_0x108755[_0x40f3('0x41')]);var _0x1c00c1={'where':_0x5e2316[_0x40f3('0x42')]};return db[_0x40f3('0x2f')][_0x40f3('0x22')](_0x1c00c1)['then'](function(_0x3b3b1b){_0x4871f4['count']=_0x3b3b1b;if(_0x108755[_0x40f3('0x34')][_0x40f3('0x43')]){_0x5e2316[_0x40f3('0x44')]=[{'all':!![]}];}return db[_0x40f3('0x2f')][_0x40f3('0x45')](_0x5e2316);})[_0x40f3('0x29')](function(_0x5b478c){_0x4871f4[_0x40f3('0x46')]=_0x5b478c;return _0x4871f4;})[_0x40f3('0x29')](respondWithFilteredResult(_0x2fc43c,_0x5e2316))['catch'](handleError(_0x2fc43c,null));};exports[_0x40f3('0x47')]=function(_0x544aa9,_0x52c11c){var _0x47c90f={'raw':![],'where':{'id':_0x544aa9['params']['id']}},_0x29753e={};_0x29753e[_0x40f3('0x33')]=_[_0x40f3('0x48')](db[_0x40f3('0x2f')][_0x40f3('0x30')]);_0x29753e['query']=_[_0x40f3('0x48')](_0x544aa9['query']);_0x29753e[_0x40f3('0x35')]=_[_0x40f3('0x37')](_0x29753e[_0x40f3('0x33')],_0x29753e[_0x40f3('0x34')]);_0x47c90f['attributes']=_[_0x40f3('0x37')](_0x29753e['model'],qs[_0x40f3('0x38')](_0x544aa9['query'][_0x40f3('0x38')]));_0x47c90f['attributes']=_0x47c90f[_0x40f3('0x36')]['length']?_0x47c90f[_0x40f3('0x36')]:_0x29753e[_0x40f3('0x33')];if(_0x544aa9[_0x40f3('0x34')]['includeAll']){_0x47c90f['include']=[{'all':!![]}];}_0x47c90f=_[_0x40f3('0x3f')]({},_0x47c90f,_0x544aa9['options']);return db[_0x40f3('0x2f')][_0x40f3('0x49')](_0x47c90f)[_0x40f3('0x29')](handleEntityNotFound(_0x52c11c,null))[_0x40f3('0x29')](respondWithResult(_0x52c11c,null))[_0x40f3('0x4a')](handleError(_0x52c11c,null));};exports[_0x40f3('0x4b')]=function(_0x42cb9b,_0x6095dd){return db[_0x40f3('0x2f')][_0x40f3('0x4b')](_0x42cb9b['body'],{})[_0x40f3('0x29')](function(_0x2384d0){var _0x570b1e=_0x42cb9b[_0x40f3('0x4c')][_0x40f3('0x4d')]({'plain':!![]});if(!_0x570b1e)throw new Error(_0x40f3('0x4e'));if(_0x570b1e[_0x40f3('0x4f')]==='user'){var _0x10beaf=_0x2384d0[_0x40f3('0x4d')]({'plain':!![]});var _0x19d888=_0x40f3('0x50');return db['UserProfileSection'][_0x40f3('0x49')]({'where':{'name':_0x19d888,'userProfileId':_0x570b1e['userProfileId']},'raw':!![]})[_0x40f3('0x29')](function(_0x5da927){if(_0x5da927&&_0x5da927[_0x40f3('0x51')]===0x0){return db[_0x40f3('0x52')][_0x40f3('0x4b')]({'name':_0x10beaf['name'],'resourceId':_0x10beaf['id'],'type':_0x5da927[_0x40f3('0x2b')],'sectionId':_0x5da927['id']},{})[_0x40f3('0x29')](function(){return _0x2384d0;});}else{return _0x2384d0;}})[_0x40f3('0x4a')](function(_0x9f5a3){logger['error'](_0x40f3('0x53'),_0x9f5a3);throw _0x9f5a3;});}return _0x2384d0;})[_0x40f3('0x29')](respondWithResult(_0x6095dd,0xc9))['catch'](handleError(_0x6095dd,null));};exports[_0x40f3('0x28')]=function(_0x13bed0,_0x4eced0){if(_0x13bed0[_0x40f3('0x54')]['id']){delete _0x13bed0[_0x40f3('0x54')]['id'];}return db[_0x40f3('0x2f')]['find']({'where':{'id':_0x13bed0[_0x40f3('0x55')]['id']}})[_0x40f3('0x29')](handleEntityNotFound(_0x4eced0,null))[_0x40f3('0x29')](saveUpdates(_0x13bed0[_0x40f3('0x54')],null))[_0x40f3('0x29')](respondWithResult(_0x4eced0,null))[_0x40f3('0x4a')](handleError(_0x4eced0,null));};exports[_0x40f3('0x56')]=function(_0x32686f,_0x2dcdcc){var _0x49258e=_0x32686f[_0x40f3('0x55')]['id'];var _0x279ba8=[];return db['sequelize']['transaction'](function(_0x13b59b){var _0x59172c=_0x40f3('0x57')+_0x49258e;return db['sequelize'][_0x40f3('0x34')](_0x59172c,{'type':db[_0x40f3('0x58')][_0x40f3('0x59')][_0x40f3('0x5a')],'raw':!![],'transaction':_0x13b59b})['then'](function(_0x4c9156){_0x279ba8=_[_0x40f3('0x2e')](_0x4c9156,function(_0x857ccc){return Number(_0x857ccc['UserId']);});})[_0x40f3('0x29')](function(){var _0x545f09='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x49258e;return db[_0x40f3('0x5b')]['query'](_0x545f09,{'type':db[_0x40f3('0x58')][_0x40f3('0x59')][_0x40f3('0x5a')],'raw':!![],'transaction':_0x13b59b});})[_0x40f3('0x29')](function(_0x1c7994){var _0x208190=_[_0x40f3('0x2e')](_0x1c7994,function(_0x4fe4bc){return Number(_0x4fe4bc[_0x40f3('0x5c')]);});return db['UserVoiceQueue'][_0x40f3('0x56')]({'where':{'UserId':{'$in':_0x279ba8},'VoiceQueueId':{'$in':_0x208190}},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){var _0x3f6467=_0x40f3('0x5d')+_0x49258e;return db[_0x40f3('0x5b')][_0x40f3('0x34')](_0x3f6467,{'type':db[_0x40f3('0x58')][_0x40f3('0x59')][_0x40f3('0x5a')],'raw':!![],'transaction':_0x13b59b});})[_0x40f3('0x29')](function(_0x5eb93b){var _0x168d75=_['map'](_0x5eb93b,function(_0x28b540){return Number(_0x28b540['MailQueueId']);});return db['UserMailQueue']['destroy']({'where':{'UserId':{'$in':_0x279ba8},'MailQueueId':{'$in':_0x168d75}},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){var _0x223107=_0x40f3('0x5e')+_0x49258e;return db[_0x40f3('0x5b')][_0x40f3('0x34')](_0x223107,{'type':db[_0x40f3('0x58')][_0x40f3('0x59')][_0x40f3('0x5a')],'raw':!![],'transaction':_0x13b59b});})[_0x40f3('0x29')](function(_0x5665dd){var _0x384a70=_['map'](_0x5665dd,function(_0x1abd5d){return Number(_0x1abd5d[_0x40f3('0x5f')]);});return db[_0x40f3('0x60')]['destroy']({'where':{'UserId':{'$in':_0x279ba8},'SmsQueueId':{'$in':_0x384a70}},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){var _0x19ed5f='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x49258e;return db[_0x40f3('0x5b')][_0x40f3('0x34')](_0x19ed5f,{'type':db[_0x40f3('0x58')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x13b59b});})['then'](function(_0x413788){var _0x485d4b=_['map'](_0x413788,function(_0x15f3c1){return Number(_0x15f3c1[_0x40f3('0x61')]);});return db[_0x40f3('0x62')]['destroy']({'where':{'UserId':{'$in':_0x279ba8},'ChatQueueId':{'$in':_0x485d4b}},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){var _0x5b42b2=_0x40f3('0x63')+_0x49258e;return db[_0x40f3('0x5b')][_0x40f3('0x34')](_0x5b42b2,{'type':db[_0x40f3('0x58')][_0x40f3('0x59')][_0x40f3('0x5a')],'raw':!![],'transaction':_0x13b59b});})[_0x40f3('0x29')](function(_0x1a8264){var _0x53a2e8=_['map'](_0x1a8264,function(_0x56594b){return Number(_0x56594b[_0x40f3('0x64')]);});return db[_0x40f3('0x65')][_0x40f3('0x56')]({'where':{'UserId':{'$in':_0x279ba8},'FaxQueueId':{'$in':_0x53a2e8}},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){var _0xcbfd95='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x49258e;return db[_0x40f3('0x5b')]['query'](_0xcbfd95,{'type':db[_0x40f3('0x58')][_0x40f3('0x59')][_0x40f3('0x5a')],'raw':!![],'transaction':_0x13b59b});})['then'](function(_0x2e92a7){var _0x492acd=_[_0x40f3('0x2e')](_0x2e92a7,function(_0x4fab31){return Number(_0x4fab31[_0x40f3('0x66')]);});return db[_0x40f3('0x67')][_0x40f3('0x56')]({'where':{'UserId':{'$in':_0x279ba8},'OpenchannelQueueId':{'$in':_0x492acd}},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){var _0x1f081c=_0x40f3('0x68')+_0x49258e;return db['sequelize']['query'](_0x1f081c,{'type':db[_0x40f3('0x58')][_0x40f3('0x59')][_0x40f3('0x5a')],'raw':!![],'transaction':_0x13b59b});})[_0x40f3('0x29')](function(_0x3e96da){var _0x58c1c9=_[_0x40f3('0x2e')](_0x3e96da,function(_0x4bdfc2){return Number(_0x4bdfc2[_0x40f3('0x69')]);});return db[_0x40f3('0x6a')][_0x40f3('0x56')]({'where':{'UserId':{'$in':_0x279ba8},'WhatsappQueueId':{'$in':_0x58c1c9}},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){return db[_0x40f3('0x6b')][_0x40f3('0x49')]({'where':{'TeamId':_0x49258e}});})['then'](function(_0x47c991){if(_0x47c991===null){return;}return db['UserVoicePrefix'][_0x40f3('0x56')]({'where':{'UserId':{'$in':_0x279ba8},'VoicePrefixId':_0x47c991[_0x40f3('0x6c')]},'transaction':_0x13b59b});})[_0x40f3('0x29')](function(){return db[_0x40f3('0x2f')][_0x40f3('0x56')]({'where':{'id':_0x49258e},'cascade':!![],'transaction':_0x13b59b});})[_0x40f3('0x29')](function(_0xc1904a){if(_0xc1904a===0x0){_0x2dcdcc[_0x40f3('0x1c')](0x194);}else{return db['UserProfileResource']['destroy']({'where':{'type':_0x40f3('0x50'),'resourceId':_0x49258e},'cascade':!![],'transaction':_0x13b59b})[_0x40f3('0x29')](function(){_0x2dcdcc[_0x40f3('0x1d')](0xcc)['end']();});}})[_0x40f3('0x4a')](function(_0x38ef0f){_0x2dcdcc[_0x40f3('0x1d')](0x1f4)['send'](_0x38ef0f);});});};exports[_0x40f3('0x6d')]=function(_0x51143f,_0x4ae46f,_0x25fdbc){return db[_0x40f3('0x2f')]['findOne']({'where':{'id':_0x51143f[_0x40f3('0x55')]['id']}})[_0x40f3('0x29')](handleEntityNotFound(_0x4ae46f,null))[_0x40f3('0x29')](function(_0x3af370){if(!_0x51143f[_0x40f3('0x34')][_0x40f3('0x6e')]||!utils[_0x40f3('0x6f')](_0x51143f[_0x40f3('0x34')]['channel'])){throw new db[(_0x40f3('0x58'))]['ValidationError'](_0x40f3('0x70'));}var _0x3a75c3={};var _0xa06615={};_0xa06615[_0x40f3('0x33')]=_['keys'](db[_['capitalize'](_0x51143f[_0x40f3('0x34')][_0x40f3('0x6e')][_0x40f3('0x71')]())+_0x40f3('0x72')][_0x40f3('0x30')]);_0xa06615[_0x40f3('0x34')]=_[_0x40f3('0x48')](_0x51143f[_0x40f3('0x34')]);_0xa06615[_0x40f3('0x35')]=_[_0x40f3('0x37')](_0xa06615[_0x40f3('0x33')],_0xa06615[_0x40f3('0x34')]);_0x3a75c3[_0x40f3('0x36')]=_[_0x40f3('0x37')](_0xa06615['model'],qs[_0x40f3('0x38')](_0x51143f[_0x40f3('0x34')][_0x40f3('0x38')]));_0x3a75c3['attributes']=_0x3a75c3['attributes']['length']?_0x3a75c3[_0x40f3('0x36')]:_0xa06615[_0x40f3('0x33')];_0x3a75c3[_0x40f3('0x20')]=qs[_0x40f3('0x20')](_0x51143f[_0x40f3('0x34')][_0x40f3('0x20')]);_0x3a75c3['offset']=qs[_0x40f3('0x23')](_0x51143f['query'][_0x40f3('0x23')]);_0x3a75c3[_0x40f3('0x3c')]=qs[_0x40f3('0x3d')](_0x51143f[_0x40f3('0x34')]['sort']);_0x3a75c3['where']=qs['filters'](_[_0x40f3('0x3e')](_0x51143f[_0x40f3('0x34')],_0xa06615[_0x40f3('0x35')]));_0x3a75c3=_[_0x40f3('0x3f')]({},_0x3a75c3,_0x51143f[_0x40f3('0x41')]);return _0x3af370[_0x40f3('0x4d')+_[_0x40f3('0x73')](_0x51143f['query'][_0x40f3('0x6e')]['toLowerCase']())+_0x40f3('0x74')](_0x3a75c3);})[_0x40f3('0x29')](respondWithResult(_0x4ae46f,null))[_0x40f3('0x4a')](handleError(_0x4ae46f,null));};exports[_0x40f3('0x75')]=function(_0x207a0f,_0x2b174a,_0xd7a26){return db[_0x40f3('0x2f')][_0x40f3('0x76')]({'where':{'id':_0x207a0f[_0x40f3('0x55')]['id']}})[_0x40f3('0x29')](function(_0x33962d){if(_0x33962d){if(!_0x207a0f['body'][_0x40f3('0x6e')]||!utils[_0x40f3('0x6f')](_0x207a0f[_0x40f3('0x54')][_0x40f3('0x6e')])){throw new db[(_0x40f3('0x58'))][(_0x40f3('0x77'))](_0x40f3('0x70'));}return _0x33962d[_0x40f3('0x78')+_[_0x40f3('0x73')](_0x207a0f[_0x40f3('0x54')][_0x40f3('0x6e')][_0x40f3('0x71')]())+'Queues'](_0x207a0f[_0x40f3('0x54')]['ids']);}return null;})['then'](handleEntityNotFound(_0x2b174a,null))['then'](respondWithStatusCode(_0x2b174a,null))[_0x40f3('0x4a')](handleError(_0x2b174a,null));};exports['removeQueues']=function(_0x397ec8,_0x520949,_0x30bce6){return db['Team']['findOne']({'where':{'id':_0x397ec8[_0x40f3('0x55')]['id']}})[_0x40f3('0x29')](function(_0x2fa1e2){if(_0x2fa1e2){if(!_0x397ec8['query'][_0x40f3('0x6e')]||!utils[_0x40f3('0x6f')](_0x397ec8[_0x40f3('0x34')][_0x40f3('0x6e')])){throw new db[(_0x40f3('0x58'))][(_0x40f3('0x77'))](_0x40f3('0x70'));}return _0x2fa1e2['remove'+_[_0x40f3('0x73')](_0x397ec8[_0x40f3('0x34')][_0x40f3('0x6e')][_0x40f3('0x71')]())+'Queues'](_0x397ec8[_0x40f3('0x34')][_0x40f3('0x79')]);}return null;})[_0x40f3('0x29')](handleEntityNotFound(_0x520949,null))['then'](respondWithStatusCode(_0x520949,null))[_0x40f3('0x4a')](handleError(_0x520949,null));};exports['addAgents']=function(_0x3652e3,_0x386ed7){var _0xd1fcc8=_['isArray'](_0x3652e3['body']['ids'])?_0x3652e3[_0x40f3('0x54')][_0x40f3('0x79')]:[_0x3652e3[_0x40f3('0x54')][_0x40f3('0x79')]];var _0x80ab78=_0x3652e3[_0x40f3('0x55')]['id'];return db['Team'][_0x40f3('0x49')]({'where':{'id':_0x80ab78}})['then'](handleEntityNotFound(_0x386ed7,null))[_0x40f3('0x29')](function(_0x6fbfe9){if(_0x6fbfe9){var _0xa860e6=['Voice',_0x40f3('0x7a'),_0x40f3('0x7b'),'Sms','Fax',_0x40f3('0x7c'),_0x40f3('0x7d')];return db[_0x40f3('0x5b')][_0x40f3('0x7e')](function(_0x525176){var _0x563a94=_['map'](_0xa860e6,function(_0x2c9987){var _0x38933={'attributes':['id',_0x40f3('0x2b')]};if(_0x2c9987===_0x40f3('0x7f')){_0x38933[_0x40f3('0x80')]={'attributes':[_0x40f3('0x81')]};}return _0x6fbfe9['get'+_0x2c9987+_0x40f3('0x74')](_0x38933)[_0x40f3('0x29')](function(_0x501671){var _0x5bc357=_[_0x40f3('0x2e')](_0x501671,function(_0x92b2df){var _0x5ee5b5=_['map'](_0xd1fcc8,function(_0x131792){var _0x14c9c2={'where':{'UserId':_0x131792,[_0x2c9987+_0x40f3('0x82')]:_0x92b2df['id']},'transaction':_0x525176};if(_0x2c9987===_0x40f3('0x7f')){_0x14c9c2['defaults']={'penalty':_0x92b2df[_0x40f3('0x83')][_0x40f3('0x81')]};}return db[_0x40f3('0x84')+_0x2c9987+_0x40f3('0x72')][_0x40f3('0x85')](_0x14c9c2)[_0x40f3('0x29')](function(){socket[_0x40f3('0x86')](_0x40f3('0x4c')+_0x2c9987+_0x40f3('0x87'),{'UserId':_0x131792,[_0x2c9987+_0x40f3('0x82')]:_0x92b2df['id']});if(_0x2c9987!==_0x40f3('0x7f')){return;}return db[_0x40f3('0x84')][_0x40f3('0x45')]({'where':{'id':_0xd1fcc8,'online':0x1},'attributes':['id',_0x40f3('0x2b'),'online','voicePause',_0x40f3('0x88')],'raw':!![]})[_0x40f3('0x29')](function(_0x5c73f6){var _0x3fda19=_[_0x40f3('0x2e')](_0x5c73f6,function(_0x18130f){return db[_0x40f3('0x89')]['upsert']({'membername':_0x18130f[_0x40f3('0x2b')],'UserId':_0x18130f['id'],'queue_name':_0x92b2df['name'],'VoiceQueueId':_0x92b2df['id'],'interface':_[_0x40f3('0x8a')](_0x18130f['interface'])?util[_0x40f3('0x8b')](_0x40f3('0x8c'),_0x18130f[_0x40f3('0x2b')]):_0x18130f[_0x40f3('0x88')],'paused':_0x18130f[_0x40f3('0x8d')]||![],'penalty':_0x92b2df[_0x40f3('0x83')][_0x40f3('0x81')]},{'transaction':_0x525176});});return Promise[_0x40f3('0x8e')](_0x3fda19);});});});return Promise[_0x40f3('0x8e')](_0x5ee5b5);});return Promise[_0x40f3('0x8e')](_0x5bc357);})[_0x40f3('0x29')](function(){return db[_0x40f3('0x6b')][_0x40f3('0x76')]({'where':{'teamId':_0x80ab78}})[_0x40f3('0x29')](function(_0x17545f){if(_0x17545f){var _0x8edeeb=_['map'](_0xd1fcc8,function(_0x117724){db['UserVoicePrefix'][_0x40f3('0x8f')]({'UserId':_0x117724,'VoicePrefixId':_0x17545f['VoicePrefixId']});});return Promise[_0x40f3('0x8e')](_0x8edeeb);}});});});return Promise[_0x40f3('0x8e')](_0x563a94)[_0x40f3('0x29')](function(){return _0x6fbfe9[_0x40f3('0x90')](_0xd1fcc8,{'transaction':_0x525176})[_0x40f3('0x91')](function(_0x33e4d8){return _0x33e4d8;});});});}})[_0x40f3('0x29')](respondWithResult(_0x386ed7,null))[_0x40f3('0x4a')](handleError(_0x386ed7,null));};exports[_0x40f3('0x92')]=function(_0x23c313,_0x21d8b1){var _0x17ea78=_[_0x40f3('0x93')](_0x23c313[_0x40f3('0x34')]['ids'])?_0x23c313[_0x40f3('0x34')]['ids']:[_0x23c313[_0x40f3('0x34')][_0x40f3('0x79')]];var _0x5904ce=_0x23c313[_0x40f3('0x55')]['id'];return db['Team']['find']({'where':{'id':_0x5904ce}})[_0x40f3('0x29')](handleEntityNotFound(_0x21d8b1,null))[_0x40f3('0x29')](function(_0x48aff6){if(_0x48aff6){var _0x472d7d=['Voice',_0x40f3('0x7a'),'Mail','Sms',_0x40f3('0x94'),_0x40f3('0x7c'),'Whatsapp'];return db['sequelize'][_0x40f3('0x7e')](function(_0x5f97c){var _0x54e7a5=_[_0x40f3('0x2e')](_0x472d7d,function(_0x332ed6){var _0x9a6bd2={'attributes':['id','name']};return _0x48aff6[_0x40f3('0x4d')+_0x332ed6+'Queues'](_0x9a6bd2)['then'](function(_0x4e8b4f){var _0x509d3d=_[_0x40f3('0x2e')](_0x4e8b4f,function(_0xe35187){return _0xe35187[_0x40f3('0x92')](_0x17ea78,{'transaction':_0x5f97c})[_0x40f3('0x29')](function(){var _0x1e9f7e=_[_0x40f3('0x2e')](_0x17ea78,function(_0x42d8be){socket[_0x40f3('0x86')](_0x40f3('0x4c')+_0x332ed6+_0x40f3('0x95'),{'UserId':Number(_0x42d8be),[_0x332ed6+_0x40f3('0x82')]:_0xe35187['id']});if(_0x332ed6!==_0x40f3('0x7f')){return;}return db['UserVoiceQueueRt'][_0x40f3('0x56')]({'where':{'VoiceQueueId':_0xe35187['id'],'UserId':_0x42d8be},'transaction':_0x5f97c});});return Promise[_0x40f3('0x8e')](_0x1e9f7e);});});return Promise[_0x40f3('0x8e')](_0x509d3d);});});return Promise[_0x40f3('0x8e')](_0x54e7a5)[_0x40f3('0x29')](function(){return _0x48aff6[_0x40f3('0x92')](_0x17ea78,{'transaction':_0x5f97c});})[_0x40f3('0x29')](function(){return db[_0x40f3('0x6b')]['findOne']({'where':{'teamId':_0x5904ce}})['then'](function(_0x185841){if(_0x185841){var _0x1e4cef=_[_0x40f3('0x2e')](_0x17ea78,function(_0x4962ed){db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x4962ed,'VoicePrefixId':_0x185841[_0x40f3('0x6c')]}});});return Promise[_0x40f3('0x8e')](_0x1e4cef);}});});});}})['then'](respondWithStatusCode(_0x21d8b1,null))[_0x40f3('0x4a')](handleError(_0x21d8b1,null));};exports[_0x40f3('0x96')]=function(_0x3695a8,_0x440535,_0x423ac1){var _0x37e837={};var _0x5260b1={};var _0x1c872b;var _0xc460b8;return db['Team'][_0x40f3('0x76')]({'where':{'id':_0x3695a8['params']['id']}})[_0x40f3('0x29')](handleEntityNotFound(_0x440535,null))[_0x40f3('0x29')](function(_0x5719fb){if(_0x5719fb){_0x1c872b=_0x5719fb;_0x5260b1[_0x40f3('0x33')]=_[_0x40f3('0x48')](db[_0x40f3('0x84')][_0x40f3('0x30')]);_0x5260b1['query']=_['keys'](_0x3695a8[_0x40f3('0x34')]);_0x5260b1[_0x40f3('0x35')]=_[_0x40f3('0x37')](_0x5260b1[_0x40f3('0x33')],_0x5260b1[_0x40f3('0x34')]);_0x37e837[_0x40f3('0x36')]=_[_0x40f3('0x37')](_0x5260b1[_0x40f3('0x33')],qs[_0x40f3('0x38')](_0x3695a8[_0x40f3('0x34')][_0x40f3('0x38')]));_0x37e837[_0x40f3('0x36')]=_0x37e837['attributes'][_0x40f3('0x39')]?_0x37e837[_0x40f3('0x36')]:_0x5260b1[_0x40f3('0x33')];_0x37e837[_0x40f3('0x3c')]=qs[_0x40f3('0x3d')](_0x3695a8['query'][_0x40f3('0x3d')]);_0x37e837[_0x40f3('0x42')]=qs[_0x40f3('0x35')](_['pick'](_0x3695a8[_0x40f3('0x34')],_0x5260b1[_0x40f3('0x35')]));if(_0x3695a8[_0x40f3('0x34')]['filter']){_0x37e837[_0x40f3('0x42')]=_[_0x40f3('0x3f')](_0x37e837[_0x40f3('0x42')],{'$or':_['map'](_0x37e837[_0x40f3('0x36')],function(_0xe5658d){var _0xa3743e={};_0xa3743e[_0xe5658d]={'$like':'%'+_0x3695a8['query'][_0x40f3('0x97')]+'%'};return _0xa3743e;})});}_0x37e837=_[_0x40f3('0x3f')]({},_0x37e837,_0x3695a8['options']);return _0x1c872b[_0x40f3('0x96')](_0x37e837);}})[_0x40f3('0x29')](function(_0x3bae7e){if(_0x3bae7e){_0xc460b8=_0x3bae7e[_0x40f3('0x39')];if(!_0x3695a8['query']['hasOwnProperty'](_0x40f3('0x3b'))){_0x37e837[_0x40f3('0x20')]=qs[_0x40f3('0x20')](_0x3695a8[_0x40f3('0x34')][_0x40f3('0x20')]);_0x37e837['offset']=qs['offset'](_0x3695a8[_0x40f3('0x34')][_0x40f3('0x23')]);}return _0x1c872b[_0x40f3('0x96')](_0x37e837);}})[_0x40f3('0x29')](function(_0x40ebfd){if(_0x40ebfd){return _0x40ebfd?{'count':_0xc460b8,'rows':_0x40ebfd}:null;}})[_0x40f3('0x29')](respondWithResult(_0x440535,null))[_0x40f3('0x4a')](handleError(_0x440535,null));};
\ No newline at end of file
+var _0x1fe6=['removeAgents','Queue:remove','getAgents','where','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','pick','filter','merge','VIRTUAL','options','then','includeAll','include','catch','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','QueryTypes','SELECT','UserVoiceQueue','destroy','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','Sequelize','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','UserWhatsappQueue','UserVoicePrefix','VoicePrefixId','UserProfileResource','getQueues','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','order','addQueues','findOne','remove','Queues','ids','addAgents','isArray','Voice','Chat','Mail','Sms','Whatsapp','transaction','through','penalty','QueueId','TeamVoiceQueue','findOrCreate','Queue:save','User','findAll','voicePause','interface','UserVoiceQueueRt','SIP/%s','all','TeamVoicePrefix','upsert'];(function(_0xbb214f,_0x21c90d){var _0x2921eb=function(_0x563899){while(--_0x563899){_0xbb214f['push'](_0xbb214f['shift']());}};_0x2921eb(++_0x21c90d);}(_0x1fe6,0x1cf));var _0x61fe=function(_0x454d8c,_0x4bf7d2){_0x454d8c=_0x454d8c-0x0;var _0x1d8b3e=_0x1fe6[_0x454d8c];return _0x1d8b3e;};'use strict';var emlformat=require(_0x61fe('0x0'));var rimraf=require(_0x61fe('0x1'));var zipdir=require(_0x61fe('0x2'));var jsonpatch=require(_0x61fe('0x3'));var rp=require(_0x61fe('0x4'));var moment=require(_0x61fe('0x5'));var BPromise=require(_0x61fe('0x6'));var Mustache=require(_0x61fe('0x7'));var util=require(_0x61fe('0x8'));var path=require(_0x61fe('0x9'));var sox=require(_0x61fe('0xa'));var csv=require(_0x61fe('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x61fe('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x61fe('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x61fe('0xe'));var toCsv=require(_0x61fe('0xb'));var querystring=require(_0x61fe('0xf'));var Papa=require(_0x61fe('0x10'));var Redis=require(_0x61fe('0x11'));var authService=require(_0x61fe('0x12'));var qs=require(_0x61fe('0x13'));var as=require(_0x61fe('0x14'));var hardwareService=require(_0x61fe('0x15'));var logger=require(_0x61fe('0x16'))(_0x61fe('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x61fe('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x61fe('0x19')](config[_0x61fe('0x1a')],{'host':_0x61fe('0x1b'),'port':0x18eb});var socket=require(_0x61fe('0x1c'))(new Redis(config[_0x61fe('0x1a')]));require(_0x61fe('0x1d'))[_0x61fe('0x1e')](socket);function respondWithStatusCode(_0x5b9d76,_0x364dea){_0x364dea=_0x364dea||0xcc;return function(_0x2616da){if(_0x2616da){return _0x5b9d76[_0x61fe('0x1f')](_0x364dea);}return _0x5b9d76[_0x61fe('0x20')](_0x364dea)[_0x61fe('0x21')]();};}function respondWithResult(_0x50e416,_0x2f7ed7){_0x2f7ed7=_0x2f7ed7||0xc8;return function(_0x46db4e){if(_0x46db4e){return _0x50e416[_0x61fe('0x20')](_0x2f7ed7)[_0x61fe('0x22')](_0x46db4e);}};}function respondWithFilteredResult(_0x153ea4,_0x4f30d6){return function(_0x2bd668){if(_0x2bd668){var _0x75c921=typeof _0x4f30d6[_0x61fe('0x23')]===_0x61fe('0x24')&&typeof _0x4f30d6['limit']===_0x61fe('0x24');var _0x48f461=_0x2bd668[_0x61fe('0x25')];var _0x445331=_0x75c921?0x0:_0x4f30d6[_0x61fe('0x23')];var _0x589374=_0x75c921?_0x2bd668['count']:_0x4f30d6[_0x61fe('0x23')]+_0x4f30d6['limit'];var _0x92ddbd;if(_0x589374>=_0x48f461){_0x589374=_0x48f461;_0x92ddbd=0xc8;}else{_0x92ddbd=0xce;}_0x153ea4[_0x61fe('0x20')](_0x92ddbd);return _0x153ea4[_0x61fe('0x26')](_0x61fe('0x27'),_0x445331+'-'+_0x589374+'/'+_0x48f461)[_0x61fe('0x22')](_0x2bd668);}return null;};}function patchUpdates(_0xb8252c){return function(_0x182b0c){try{jsonpatch[_0x61fe('0x28')](_0x182b0c,_0xb8252c,!![]);}catch(_0x5c1a24){return BPromise[_0x61fe('0x29')](_0x5c1a24);}return _0x182b0c[_0x61fe('0x2a')]();};}function saveUpdates(_0x3efe52,_0x1fe8e5){return function(_0x308f6f){if(_0x308f6f){return _0x308f6f[_0x61fe('0x2b')](_0x3efe52)['then'](function(_0x467ee5){return _0x467ee5;});}return null;};}function handleEntityNotFound(_0x184e86,_0x26eeed){return function(_0x3c34d8){if(!_0x3c34d8){_0x184e86[_0x61fe('0x1f')](0x194);}return _0x3c34d8;};}function handleError(_0x2887a1,_0x20c08a){_0x20c08a=_0x20c08a||0x1f4;return function(_0x4a360f){logger[_0x61fe('0x2c')](_0x4a360f[_0x61fe('0x2d')]);if(_0x4a360f[_0x61fe('0x2e')]){delete _0x4a360f['name'];}_0x2887a1[_0x61fe('0x20')](_0x20c08a)[_0x61fe('0x2f')](_0x4a360f);};}exports[_0x61fe('0x30')]=function(_0x9f84d6,_0x505555){var _0x58ef30={},_0x7e2290={},_0x55f780={'count':0x0,'rows':[]};var _0xc3a85e=_[_0x61fe('0x31')](db[_0x61fe('0x32')][_0x61fe('0x33')],function(_0x404df5){return{'name':_0x404df5[_0x61fe('0x34')],'type':_0x404df5[_0x61fe('0x35')]['key']};});_0x7e2290['model']=_['map'](_0xc3a85e,_0x61fe('0x2e'));_0x7e2290[_0x61fe('0x36')]=_[_0x61fe('0x37')](_0x9f84d6[_0x61fe('0x36')]);_0x7e2290[_0x61fe('0x38')]=_[_0x61fe('0x39')](_0x7e2290[_0x61fe('0x3a')],_0x7e2290['query']);_0x58ef30['attributes']=_['intersection'](_0x7e2290['model'],qs[_0x61fe('0x3b')](_0x9f84d6[_0x61fe('0x36')][_0x61fe('0x3b')]));_0x58ef30[_0x61fe('0x3c')]=_0x58ef30['attributes'][_0x61fe('0x3d')]?_0x58ef30['attributes']:_0x7e2290[_0x61fe('0x3a')];if(!_0x9f84d6[_0x61fe('0x36')][_0x61fe('0x3e')](_0x61fe('0x3f'))){_0x58ef30[_0x61fe('0x40')]=qs['limit'](_0x9f84d6[_0x61fe('0x36')][_0x61fe('0x40')]);_0x58ef30[_0x61fe('0x23')]=qs[_0x61fe('0x23')](_0x9f84d6[_0x61fe('0x36')][_0x61fe('0x23')]);}_0x58ef30['order']=qs[_0x61fe('0x41')](_0x9f84d6['query'][_0x61fe('0x41')]);_0x58ef30['where']=qs['filters'](_[_0x61fe('0x42')](_0x9f84d6['query'],_0x7e2290[_0x61fe('0x38')]),_0xc3a85e);if(_0x9f84d6[_0x61fe('0x36')][_0x61fe('0x43')]){_0x58ef30['where']=_[_0x61fe('0x44')](_0x58ef30['where'],{'$or':_[_0x61fe('0x31')](_0xc3a85e,function(_0xe83198){if(_0xe83198[_0x61fe('0x35')]!==_0x61fe('0x45')){var _0x566930={};_0x566930[_0xe83198[_0x61fe('0x2e')]]={'$like':'%'+_0x9f84d6[_0x61fe('0x36')][_0x61fe('0x43')]+'%'};return _0x566930;}})});}_0x58ef30=_[_0x61fe('0x44')]({},_0x58ef30,_0x9f84d6[_0x61fe('0x46')]);var _0x589b29={'where':_0x58ef30['where']};return db[_0x61fe('0x32')][_0x61fe('0x25')](_0x589b29)[_0x61fe('0x47')](function(_0x492768){_0x55f780[_0x61fe('0x25')]=_0x492768;if(_0x9f84d6[_0x61fe('0x36')][_0x61fe('0x48')]){_0x58ef30[_0x61fe('0x49')]=[{'all':!![]}];}return db[_0x61fe('0x32')]['findAll'](_0x58ef30);})[_0x61fe('0x47')](function(_0x1b25f4){_0x55f780['rows']=_0x1b25f4;return _0x55f780;})[_0x61fe('0x47')](respondWithFilteredResult(_0x505555,_0x58ef30))[_0x61fe('0x4a')](handleError(_0x505555,null));};exports[_0x61fe('0x4b')]=function(_0x5a12bb,_0x2490b7){var _0x7c6d={'raw':![],'where':{'id':_0x5a12bb[_0x61fe('0x4c')]['id']}},_0xe9c176={};_0xe9c176[_0x61fe('0x3a')]=_['keys'](db[_0x61fe('0x32')][_0x61fe('0x33')]);_0xe9c176[_0x61fe('0x36')]=_[_0x61fe('0x37')](_0x5a12bb[_0x61fe('0x36')]);_0xe9c176[_0x61fe('0x38')]=_[_0x61fe('0x39')](_0xe9c176[_0x61fe('0x3a')],_0xe9c176[_0x61fe('0x36')]);_0x7c6d[_0x61fe('0x3c')]=_[_0x61fe('0x39')](_0xe9c176[_0x61fe('0x3a')],qs[_0x61fe('0x3b')](_0x5a12bb[_0x61fe('0x36')]['fields']));_0x7c6d['attributes']=_0x7c6d[_0x61fe('0x3c')]['length']?_0x7c6d[_0x61fe('0x3c')]:_0xe9c176[_0x61fe('0x3a')];if(_0x5a12bb[_0x61fe('0x36')][_0x61fe('0x48')]){_0x7c6d['include']=[{'all':!![]}];}_0x7c6d=_[_0x61fe('0x44')]({},_0x7c6d,_0x5a12bb['options']);return db[_0x61fe('0x32')]['find'](_0x7c6d)['then'](handleEntityNotFound(_0x2490b7,null))[_0x61fe('0x47')](respondWithResult(_0x2490b7,null))[_0x61fe('0x4a')](handleError(_0x2490b7,null));};exports[_0x61fe('0x4d')]=function(_0xd3bcb7,_0x30ea57){return db[_0x61fe('0x32')][_0x61fe('0x4d')](_0xd3bcb7[_0x61fe('0x4e')],{})[_0x61fe('0x47')](function(_0x1e53a7){var _0x51169d=_0xd3bcb7[_0x61fe('0x4f')][_0x61fe('0x50')]({'plain':!![]});if(!_0x51169d)throw new Error(_0x61fe('0x51'));if(_0x51169d[_0x61fe('0x52')]===_0x61fe('0x4f')){var _0x2cdc9c=_0x1e53a7[_0x61fe('0x50')]({'plain':!![]});var _0x4f37b2=_0x61fe('0x53');return db[_0x61fe('0x54')][_0x61fe('0x55')]({'where':{'name':_0x4f37b2,'userProfileId':_0x51169d[_0x61fe('0x56')]},'raw':!![]})[_0x61fe('0x47')](function(_0x5e095c){if(_0x5e095c&&_0x5e095c['autoAssociation']===0x0){return db['UserProfileResource'][_0x61fe('0x4d')]({'name':_0x2cdc9c['name'],'resourceId':_0x2cdc9c['id'],'type':_0x5e095c[_0x61fe('0x2e')],'sectionId':_0x5e095c['id']},{})[_0x61fe('0x47')](function(){return _0x1e53a7;});}else{return _0x1e53a7;}})['catch'](function(_0x48e347){logger[_0x61fe('0x2c')](_0x61fe('0x57'),_0x48e347);throw _0x48e347;});}return _0x1e53a7;})[_0x61fe('0x47')](respondWithResult(_0x30ea57,0xc9))[_0x61fe('0x4a')](handleError(_0x30ea57,null));};exports['update']=function(_0x527dc4,_0x2e34c0){if(_0x527dc4[_0x61fe('0x4e')]['id']){delete _0x527dc4[_0x61fe('0x4e')]['id'];}return db[_0x61fe('0x32')][_0x61fe('0x55')]({'where':{'id':_0x527dc4[_0x61fe('0x4c')]['id']}})[_0x61fe('0x47')](handleEntityNotFound(_0x2e34c0,null))[_0x61fe('0x47')](saveUpdates(_0x527dc4[_0x61fe('0x4e')],null))[_0x61fe('0x47')](respondWithResult(_0x2e34c0,null))['catch'](handleError(_0x2e34c0,null));};exports['destroy']=function(_0x81beb3,_0xe0b07){var _0x2d20a5=_0x81beb3[_0x61fe('0x4c')]['id'];var _0x5768a2=[];return db[_0x61fe('0x58')]['transaction'](function(_0x53f7f4){var _0x1e9d39=_0x61fe('0x59')+_0x2d20a5;return db[_0x61fe('0x58')][_0x61fe('0x36')](_0x1e9d39,{'type':db['Sequelize'][_0x61fe('0x5a')][_0x61fe('0x5b')],'raw':!![],'transaction':_0x53f7f4})[_0x61fe('0x47')](function(_0x34773f){_0x5768a2=_['map'](_0x34773f,function(_0x49ca6c){return Number(_0x49ca6c['UserId']);});})[_0x61fe('0x47')](function(){var _0x2c2d70='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x2d20a5;return db[_0x61fe('0x58')]['query'](_0x2c2d70,{'type':db['Sequelize']['QueryTypes'][_0x61fe('0x5b')],'raw':!![],'transaction':_0x53f7f4});})['then'](function(_0x483740){var _0x10ad73=_[_0x61fe('0x31')](_0x483740,function(_0x532db3){return Number(_0x532db3['VoiceQueueId']);});return db[_0x61fe('0x5c')][_0x61fe('0x5d')]({'where':{'UserId':{'$in':_0x5768a2},'VoiceQueueId':{'$in':_0x10ad73}},'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(){var _0x580236=_0x61fe('0x5e')+_0x2d20a5;return db['sequelize'][_0x61fe('0x36')](_0x580236,{'type':db['Sequelize'][_0x61fe('0x5a')][_0x61fe('0x5b')],'raw':!![],'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(_0x1fa9d8){var _0x40a353=_[_0x61fe('0x31')](_0x1fa9d8,function(_0x4ed495){return Number(_0x4ed495[_0x61fe('0x5f')]);});return db[_0x61fe('0x60')][_0x61fe('0x5d')]({'where':{'UserId':{'$in':_0x5768a2},'MailQueueId':{'$in':_0x40a353}},'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(){var _0x5aa268='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x2d20a5;return db[_0x61fe('0x58')][_0x61fe('0x36')](_0x5aa268,{'type':db[_0x61fe('0x61')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(_0x176420){var _0x3ac0d6=_[_0x61fe('0x31')](_0x176420,function(_0x7ffe1a){return Number(_0x7ffe1a[_0x61fe('0x62')]);});return db[_0x61fe('0x63')]['destroy']({'where':{'UserId':{'$in':_0x5768a2},'SmsQueueId':{'$in':_0x3ac0d6}},'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(){var _0x590a57=_0x61fe('0x64')+_0x2d20a5;return db[_0x61fe('0x58')][_0x61fe('0x36')](_0x590a57,{'type':db['Sequelize'][_0x61fe('0x5a')][_0x61fe('0x5b')],'raw':!![],'transaction':_0x53f7f4});})['then'](function(_0x1b92b5){var _0x52553e=_[_0x61fe('0x31')](_0x1b92b5,function(_0x4fa887){return Number(_0x4fa887[_0x61fe('0x65')]);});return db[_0x61fe('0x66')][_0x61fe('0x5d')]({'where':{'UserId':{'$in':_0x5768a2},'ChatQueueId':{'$in':_0x52553e}},'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(){var _0x4f056b=_0x61fe('0x67')+_0x2d20a5;return db[_0x61fe('0x58')][_0x61fe('0x36')](_0x4f056b,{'type':db[_0x61fe('0x61')][_0x61fe('0x5a')][_0x61fe('0x5b')],'raw':!![],'transaction':_0x53f7f4});})['then'](function(_0x1b84cd){var _0x3a3ea2=_[_0x61fe('0x31')](_0x1b84cd,function(_0x5691c3){return Number(_0x5691c3[_0x61fe('0x68')]);});return db[_0x61fe('0x69')][_0x61fe('0x5d')]({'where':{'UserId':{'$in':_0x5768a2},'FaxQueueId':{'$in':_0x3a3ea2}},'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(){var _0x47f362='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x2d20a5;return db[_0x61fe('0x58')]['query'](_0x47f362,{'type':db[_0x61fe('0x61')][_0x61fe('0x5a')][_0x61fe('0x5b')],'raw':!![],'transaction':_0x53f7f4});})['then'](function(_0x1ed1bf){var _0x150b23=_[_0x61fe('0x31')](_0x1ed1bf,function(_0x1b1c30){return Number(_0x1b1c30['OpenchannelQueueId']);});return db[_0x61fe('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x5768a2},'OpenchannelQueueId':{'$in':_0x150b23}},'transaction':_0x53f7f4});})['then'](function(){var _0x506604=_0x61fe('0x6b')+_0x2d20a5;return db['sequelize'][_0x61fe('0x36')](_0x506604,{'type':db[_0x61fe('0x61')]['QueryTypes'][_0x61fe('0x5b')],'raw':!![],'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(_0x314f57){var _0x234763=_['map'](_0x314f57,function(_0x520780){return Number(_0x520780['WhatsappQueueId']);});return db[_0x61fe('0x6c')][_0x61fe('0x5d')]({'where':{'UserId':{'$in':_0x5768a2},'WhatsappQueueId':{'$in':_0x234763}},'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(){return db['TeamVoicePrefix']['find']({'where':{'TeamId':_0x2d20a5}});})[_0x61fe('0x47')](function(_0x373f10){if(_0x373f10===null){return;}return db[_0x61fe('0x6d')][_0x61fe('0x5d')]({'where':{'UserId':{'$in':_0x5768a2},'VoicePrefixId':_0x373f10[_0x61fe('0x6e')]},'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(){return db['Team'][_0x61fe('0x5d')]({'where':{'id':_0x2d20a5},'cascade':!![],'transaction':_0x53f7f4});})[_0x61fe('0x47')](function(_0x13ec6f){if(_0x13ec6f===0x0){_0xe0b07[_0x61fe('0x1f')](0x194);}else{return db[_0x61fe('0x6f')][_0x61fe('0x5d')]({'where':{'type':_0x61fe('0x53'),'resourceId':_0x2d20a5},'cascade':!![],'transaction':_0x53f7f4})['then'](function(){_0xe0b07[_0x61fe('0x20')](0xcc)[_0x61fe('0x21')]();});}})['catch'](function(_0x40536c){_0xe0b07[_0x61fe('0x20')](0x1f4)['send'](_0x40536c);});});};exports[_0x61fe('0x70')]=function(_0x39f109,_0xd5d5f3,_0x1c7c25){return db[_0x61fe('0x32')]['findOne']({'where':{'id':_0x39f109[_0x61fe('0x4c')]['id']}})[_0x61fe('0x47')](handleEntityNotFound(_0xd5d5f3,null))[_0x61fe('0x47')](function(_0x31cc8b){if(!_0x39f109[_0x61fe('0x36')][_0x61fe('0x71')]||!utils[_0x61fe('0x72')](_0x39f109[_0x61fe('0x36')][_0x61fe('0x71')])){throw new db[(_0x61fe('0x61'))][(_0x61fe('0x73'))](_0x61fe('0x74'));}var _0x5a3c5d={};var _0x883bbf={};_0x883bbf['model']=_[_0x61fe('0x37')](db[_[_0x61fe('0x75')](_0x39f109[_0x61fe('0x36')][_0x61fe('0x71')][_0x61fe('0x76')]())+_0x61fe('0x77')][_0x61fe('0x33')]);_0x883bbf['query']=_['keys'](_0x39f109[_0x61fe('0x36')]);_0x883bbf[_0x61fe('0x38')]=_[_0x61fe('0x39')](_0x883bbf[_0x61fe('0x3a')],_0x883bbf[_0x61fe('0x36')]);_0x5a3c5d[_0x61fe('0x3c')]=_[_0x61fe('0x39')](_0x883bbf['model'],qs[_0x61fe('0x3b')](_0x39f109['query'][_0x61fe('0x3b')]));_0x5a3c5d[_0x61fe('0x3c')]=_0x5a3c5d['attributes'][_0x61fe('0x3d')]?_0x5a3c5d[_0x61fe('0x3c')]:_0x883bbf['model'];_0x5a3c5d[_0x61fe('0x40')]=qs[_0x61fe('0x40')](_0x39f109[_0x61fe('0x36')][_0x61fe('0x40')]);_0x5a3c5d[_0x61fe('0x23')]=qs[_0x61fe('0x23')](_0x39f109[_0x61fe('0x36')][_0x61fe('0x23')]);_0x5a3c5d[_0x61fe('0x78')]=qs[_0x61fe('0x41')](_0x39f109['query'][_0x61fe('0x41')]);_0x5a3c5d['where']=qs['filters'](_[_0x61fe('0x42')](_0x39f109[_0x61fe('0x36')],_0x883bbf[_0x61fe('0x38')]));_0x5a3c5d=_[_0x61fe('0x44')]({},_0x5a3c5d,_0x39f109[_0x61fe('0x46')]);return _0x31cc8b[_0x61fe('0x50')+_['capitalize'](_0x39f109[_0x61fe('0x36')]['channel'][_0x61fe('0x76')]())+'Queues'](_0x5a3c5d);})[_0x61fe('0x47')](respondWithResult(_0xd5d5f3,null))[_0x61fe('0x4a')](handleError(_0xd5d5f3,null));};exports[_0x61fe('0x79')]=function(_0xbf0968,_0x7ecb5b,_0x20c27f){return db[_0x61fe('0x32')][_0x61fe('0x7a')]({'where':{'id':_0xbf0968[_0x61fe('0x4c')]['id']}})[_0x61fe('0x47')](function(_0x4fe126){if(_0x4fe126){if(!_0xbf0968[_0x61fe('0x4e')][_0x61fe('0x71')]||!utils['isValidChannel'](_0xbf0968['body'][_0x61fe('0x71')])){throw new db['Sequelize']['ValidationError'](_0x61fe('0x74'));}return _0x4fe126['add'+_[_0x61fe('0x75')](_0xbf0968[_0x61fe('0x4e')][_0x61fe('0x71')][_0x61fe('0x76')]())+'Queues'](_0xbf0968[_0x61fe('0x4e')]['ids']);}return null;})[_0x61fe('0x47')](handleEntityNotFound(_0x7ecb5b,null))[_0x61fe('0x47')](respondWithStatusCode(_0x7ecb5b,null))['catch'](handleError(_0x7ecb5b,null));};exports['removeQueues']=function(_0x1ae72a,_0xf13dfc,_0x2a69fc){return db[_0x61fe('0x32')]['findOne']({'where':{'id':_0x1ae72a[_0x61fe('0x4c')]['id']}})['then'](function(_0xacd7c4){if(_0xacd7c4){if(!_0x1ae72a[_0x61fe('0x36')]['channel']||!utils['isValidChannel'](_0x1ae72a['query']['channel'])){throw new db[(_0x61fe('0x61'))][(_0x61fe('0x73'))](_0x61fe('0x74'));}return _0xacd7c4[_0x61fe('0x7b')+_['capitalize'](_0x1ae72a[_0x61fe('0x36')]['channel'][_0x61fe('0x76')]())+_0x61fe('0x7c')](_0x1ae72a[_0x61fe('0x36')][_0x61fe('0x7d')]);}return null;})[_0x61fe('0x47')](handleEntityNotFound(_0xf13dfc,null))[_0x61fe('0x47')](respondWithStatusCode(_0xf13dfc,null))[_0x61fe('0x4a')](handleError(_0xf13dfc,null));};exports[_0x61fe('0x7e')]=function(_0x5f159d,_0x327648){var _0x29bdc9=_[_0x61fe('0x7f')](_0x5f159d[_0x61fe('0x4e')][_0x61fe('0x7d')])?_0x5f159d[_0x61fe('0x4e')]['ids']:[_0x5f159d[_0x61fe('0x4e')][_0x61fe('0x7d')]];var _0x2e5e20=_0x5f159d[_0x61fe('0x4c')]['id'];return db[_0x61fe('0x32')][_0x61fe('0x55')]({'where':{'id':_0x2e5e20}})[_0x61fe('0x47')](handleEntityNotFound(_0x327648,null))[_0x61fe('0x47')](function(_0x3beca5){if(_0x3beca5){var _0x43f562=[_0x61fe('0x80'),_0x61fe('0x81'),_0x61fe('0x82'),_0x61fe('0x83'),'Fax','Openchannel',_0x61fe('0x84')];return db[_0x61fe('0x58')][_0x61fe('0x85')](function(_0x1ff30a){var _0x254d01=_['map'](_0x43f562,function(_0x3e7cb1){var _0x4aab55={'attributes':['id',_0x61fe('0x2e')]};if(_0x3e7cb1===_0x61fe('0x80')){_0x4aab55[_0x61fe('0x86')]={'attributes':[_0x61fe('0x87')]};}return _0x3beca5['get'+_0x3e7cb1+_0x61fe('0x7c')](_0x4aab55)[_0x61fe('0x47')](function(_0x55e5b7){var _0x2f493c=_['map'](_0x55e5b7,function(_0xe18fc8){var _0x35238c=_['map'](_0x29bdc9,function(_0x555713){var _0x187a93={'where':{'UserId':_0x555713,[_0x3e7cb1+_0x61fe('0x88')]:_0xe18fc8['id']},'transaction':_0x1ff30a};if(_0x3e7cb1===_0x61fe('0x80')){_0x187a93[_0x61fe('0x19')]={'penalty':_0xe18fc8[_0x61fe('0x89')][_0x61fe('0x87')]};}return db['User'+_0x3e7cb1+_0x61fe('0x77')][_0x61fe('0x8a')](_0x187a93)['then'](function(){socket['emit'](_0x61fe('0x4f')+_0x3e7cb1+_0x61fe('0x8b'),{'UserId':_0x555713,[_0x3e7cb1+_0x61fe('0x88')]:_0xe18fc8['id']});if(_0x3e7cb1!==_0x61fe('0x80')){return;}return db[_0x61fe('0x8c')][_0x61fe('0x8d')]({'where':{'id':_0x29bdc9,'online':0x1},'attributes':['id',_0x61fe('0x2e'),'online',_0x61fe('0x8e'),_0x61fe('0x8f')],'raw':!![]})[_0x61fe('0x47')](function(_0x50a926){var _0x23dab4=_[_0x61fe('0x31')](_0x50a926,function(_0x39687e){return db[_0x61fe('0x90')]['upsert']({'membername':_0x39687e[_0x61fe('0x2e')],'UserId':_0x39687e['id'],'queue_name':_0xe18fc8['name'],'VoiceQueueId':_0xe18fc8['id'],'interface':_['isNil'](_0x39687e[_0x61fe('0x8f')])?util['format'](_0x61fe('0x91'),_0x39687e[_0x61fe('0x2e')]):_0x39687e[_0x61fe('0x8f')],'paused':_0x39687e[_0x61fe('0x8e')]||![],'penalty':_0xe18fc8[_0x61fe('0x89')][_0x61fe('0x87')]},{'transaction':_0x1ff30a});});return Promise[_0x61fe('0x92')](_0x23dab4);});});});return Promise[_0x61fe('0x92')](_0x35238c);});return Promise[_0x61fe('0x92')](_0x2f493c);})[_0x61fe('0x47')](function(){return db[_0x61fe('0x93')][_0x61fe('0x7a')]({'where':{'teamId':_0x2e5e20}})[_0x61fe('0x47')](function(_0x297955){if(_0x297955){var _0x5ec071=_[_0x61fe('0x31')](_0x29bdc9,function(_0x3f6bf2){db[_0x61fe('0x6d')][_0x61fe('0x94')]({'UserId':_0x3f6bf2,'VoicePrefixId':_0x297955[_0x61fe('0x6e')]});});return Promise['all'](_0x5ec071);}});});});return Promise[_0x61fe('0x92')](_0x254d01)[_0x61fe('0x47')](function(){return _0x3beca5[_0x61fe('0x7e')](_0x29bdc9,{'transaction':_0x1ff30a})['spread'](function(_0x378c3c){return _0x378c3c;});});});}})[_0x61fe('0x47')](respondWithResult(_0x327648,null))['catch'](handleError(_0x327648,null));};exports[_0x61fe('0x95')]=function(_0x26b2e8,_0x270e42){var _0x3c2f62=_['isArray'](_0x26b2e8[_0x61fe('0x36')][_0x61fe('0x7d')])?_0x26b2e8[_0x61fe('0x36')][_0x61fe('0x7d')]:[_0x26b2e8[_0x61fe('0x36')][_0x61fe('0x7d')]];var _0x18ebfd=_0x26b2e8[_0x61fe('0x4c')]['id'];return db[_0x61fe('0x32')]['find']({'where':{'id':_0x18ebfd}})[_0x61fe('0x47')](handleEntityNotFound(_0x270e42,null))[_0x61fe('0x47')](function(_0x42c42b){if(_0x42c42b){var _0x29a615=[_0x61fe('0x80'),'Chat','Mail',_0x61fe('0x83'),'Fax','Openchannel','Whatsapp'];return db[_0x61fe('0x58')][_0x61fe('0x85')](function(_0x105c2d){var _0x11ae80=_['map'](_0x29a615,function(_0x1b11c9){var _0xe367ec={'attributes':['id','name']};return _0x42c42b['get'+_0x1b11c9+'Queues'](_0xe367ec)[_0x61fe('0x47')](function(_0x44ffe4){var _0x433e26=_[_0x61fe('0x31')](_0x44ffe4,function(_0x48183f){return _0x48183f[_0x61fe('0x95')](_0x3c2f62,{'transaction':_0x105c2d})[_0x61fe('0x47')](function(){var _0xdc2e1b=_[_0x61fe('0x31')](_0x3c2f62,function(_0xdc821){socket['emit'](_0x61fe('0x4f')+_0x1b11c9+_0x61fe('0x96'),{'UserId':Number(_0xdc821),[_0x1b11c9+_0x61fe('0x88')]:_0x48183f['id']});if(_0x1b11c9!==_0x61fe('0x80')){return;}return db[_0x61fe('0x90')][_0x61fe('0x5d')]({'where':{'VoiceQueueId':_0x48183f['id'],'UserId':_0xdc821},'transaction':_0x105c2d});});return Promise[_0x61fe('0x92')](_0xdc2e1b);});});return Promise[_0x61fe('0x92')](_0x433e26);});});return Promise[_0x61fe('0x92')](_0x11ae80)[_0x61fe('0x47')](function(){return _0x42c42b[_0x61fe('0x95')](_0x3c2f62,{'transaction':_0x105c2d});})['then'](function(){return db['TeamVoicePrefix'][_0x61fe('0x7a')]({'where':{'teamId':_0x18ebfd}})[_0x61fe('0x47')](function(_0x5854a3){if(_0x5854a3){var _0x1e74d0=_[_0x61fe('0x31')](_0x3c2f62,function(_0x3ce678){db[_0x61fe('0x6d')][_0x61fe('0x5d')]({'where':{'UserId':_0x3ce678,'VoicePrefixId':_0x5854a3[_0x61fe('0x6e')]}});});return Promise[_0x61fe('0x92')](_0x1e74d0);}});});});}})[_0x61fe('0x47')](respondWithStatusCode(_0x270e42,null))[_0x61fe('0x4a')](handleError(_0x270e42,null));};exports[_0x61fe('0x97')]=function(_0x378a20,_0x46815a,_0x5d131b){var _0x111326={};var _0x5e453e={};var _0x42df12;var _0x407a73;return db[_0x61fe('0x32')][_0x61fe('0x7a')]({'where':{'id':_0x378a20[_0x61fe('0x4c')]['id']}})[_0x61fe('0x47')](handleEntityNotFound(_0x46815a,null))[_0x61fe('0x47')](function(_0x30a8b5){if(_0x30a8b5){_0x42df12=_0x30a8b5;_0x5e453e[_0x61fe('0x3a')]=_[_0x61fe('0x37')](db[_0x61fe('0x8c')][_0x61fe('0x33')]);_0x5e453e[_0x61fe('0x36')]=_[_0x61fe('0x37')](_0x378a20[_0x61fe('0x36')]);_0x5e453e[_0x61fe('0x38')]=_[_0x61fe('0x39')](_0x5e453e[_0x61fe('0x3a')],_0x5e453e['query']);_0x111326['attributes']=_['intersection'](_0x5e453e['model'],qs[_0x61fe('0x3b')](_0x378a20['query'][_0x61fe('0x3b')]));_0x111326['attributes']=_0x111326['attributes'][_0x61fe('0x3d')]?_0x111326['attributes']:_0x5e453e[_0x61fe('0x3a')];_0x111326[_0x61fe('0x78')]=qs['sort'](_0x378a20[_0x61fe('0x36')][_0x61fe('0x41')]);_0x111326[_0x61fe('0x98')]=qs[_0x61fe('0x38')](_[_0x61fe('0x42')](_0x378a20[_0x61fe('0x36')],_0x5e453e[_0x61fe('0x38')]));if(_0x378a20[_0x61fe('0x36')][_0x61fe('0x43')]){_0x111326[_0x61fe('0x98')]=_[_0x61fe('0x44')](_0x111326[_0x61fe('0x98')],{'$or':_[_0x61fe('0x31')](_0x111326['attributes'],function(_0x53a397){var _0x387ced={};_0x387ced[_0x53a397]={'$like':'%'+_0x378a20[_0x61fe('0x36')][_0x61fe('0x43')]+'%'};return _0x387ced;})});}_0x111326=_[_0x61fe('0x44')]({},_0x111326,_0x378a20[_0x61fe('0x46')]);return _0x42df12['getAgents'](_0x111326);}})[_0x61fe('0x47')](function(_0x105e28){if(_0x105e28){_0x407a73=_0x105e28[_0x61fe('0x3d')];if(!_0x378a20[_0x61fe('0x36')][_0x61fe('0x3e')](_0x61fe('0x3f'))){_0x111326[_0x61fe('0x40')]=qs[_0x61fe('0x40')](_0x378a20[_0x61fe('0x36')][_0x61fe('0x40')]);_0x111326[_0x61fe('0x23')]=qs[_0x61fe('0x23')](_0x378a20[_0x61fe('0x36')]['offset']);}return _0x42df12[_0x61fe('0x97')](_0x111326);}})[_0x61fe('0x47')](function(_0x7bbfa){if(_0x7bbfa){return _0x7bbfa?{'count':_0x407a73,'rows':_0x7bbfa}:null;}})[_0x61fe('0x47')](respondWithResult(_0x46815a,null))[_0x61fe('0x4a')](handleError(_0x46815a,null));};
\ No newline at end of file
index 83ee3e4..01384cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe887=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4a37b8,_0x36246e){var _0x3c2a48=function(_0xd78c4c){while(--_0xd78c4c){_0x4a37b8['push'](_0x4a37b8['shift']());}};_0x3c2a48(++_0x36246e);}(_0xe887,0x90));var _0x7e88=function(_0x374401,_0x8d0054){_0x374401=_0x374401-0x0;var _0x19815d=_0xe887[_0x374401];return _0x19815d;};'use strict';var EventEmitter=require(_0x7e88('0x0'));var Team=require(_0x7e88('0x1'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents[_0x7e88('0x2')](0x0);var events={'afterCreate':_0x7e88('0x3'),'afterUpdate':_0x7e88('0x4'),'afterDestroy':_0x7e88('0x5')};function emitEvent(_0x4a7fb0){return function(_0x98459f,_0x2128ae,_0xbbb1b6){TeamEvents[_0x7e88('0x6')](_0x4a7fb0+':'+_0x98459f['id'],_0x98459f);TeamEvents[_0x7e88('0x6')](_0x4a7fb0,_0x98459f);_0xbbb1b6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x7e88('0x7')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0xee06=['../../mysqldb','Team','setMaxListeners','update','remove','hook','exports','events'];(function(_0x147822,_0xd6bdcd){var _0x555c9e=function(_0x4ec42d){while(--_0x4ec42d){_0x147822['push'](_0x147822['shift']());}};_0x555c9e(++_0xd6bdcd);}(_0xee06,0x19f));var _0x6ee0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee06[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x6ee0('0x0'));var Team=require(_0x6ee0('0x1'))['db'][_0x6ee0('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x6ee0('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6ee0('0x4'),'afterDestroy':_0x6ee0('0x5')};function emitEvent(_0x11dcd3){return function(_0x3f660c,_0x36ed40,_0x435564){TeamEvents['emit'](_0x11dcd3+':'+_0x3f660c['id'],_0x3f660c);TeamEvents['emit'](_0x11dcd3,_0x3f660c);_0x435564(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x6ee0('0x6')](e,emitEvent(event));}}module[_0x6ee0('0x7')]=TeamEvents;
\ No newline at end of file
index bbe74df..8e4efa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x278b=['exports','Team','Chat','Fax','Openchannel','Sms','Whatsapp','resolve','all','lodash','./team.attributes','get','Queues','map','channel','catch'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x278b,0x189));var _0xb278=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x278b[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0xb278('0x0'));var attributes=require(_0xb278('0x1'));function getQueuesByChannel(_0x3dbc9b,_0x55c1c6){var _0x51a523=_0xb278('0x2')+_0x55c1c6+_0xb278('0x3');return _0x3dbc9b[_0x51a523]()['then'](function(_0x138978){return _[_0xb278('0x4')](_0x138978,function(_0x2f9ddc){_0x2f9ddc['setDataValue'](_0xb278('0x5'),_0x55c1c6);return _0x2f9ddc;});})[_0xb278('0x6')](function(_0xf109f4){throw _0xf109f4;});}module[_0xb278('0x7')]=function(_0x2bbc6e){return _0x2bbc6e['define'](_0xb278('0x8'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x4d6c2e=this;var _0x1cd465=[_0xb278('0x9'),_0xb278('0xa'),'Mail',_0xb278('0xb'),_0xb278('0xc'),'Voice',_0xb278('0xd')];return Promise[_0xb278('0xe')]()['then'](function(){var _0x1608a2=_[_0xb278('0x4')](_0x1cd465,function(_0x16804b){return getQueuesByChannel(_0x4d6c2e,_0x16804b);});return Promise[_0xb278('0xf')](_0x1608a2);})[_0xb278('0x6')](function(_0x1cb985){throw _0x1cb985;});}}});};
\ No newline at end of file
+var _0xd1fa=['Voice','Whatsapp','resolve','get','then','map','setDataValue','channel','catch','exports','define','Team','teams','Chat','Mail','Openchannel','Sms'];(function(_0x4bdf64,_0x3022b2){var _0x9a1a19=function(_0x4e551b){while(--_0x4e551b){_0x4bdf64['push'](_0x4bdf64['shift']());}};_0x9a1a19(++_0x3022b2);}(_0xd1fa,0x1ce));var _0xad1f=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xd1fa[_0x334841];return _0x5beb4b;};'use strict';var _=require('lodash');var attributes=require('./team.attributes');function getQueuesByChannel(_0x3c95e6,_0x11794c){var _0x296caf=_0xad1f('0x0')+_0x11794c+'Queues';return _0x3c95e6[_0x296caf]()[_0xad1f('0x1')](function(_0x839a23){return _[_0xad1f('0x2')](_0x839a23,function(_0x437d93){_0x437d93[_0xad1f('0x3')](_0xad1f('0x4'),_0x11794c);return _0x437d93;});})[_0xad1f('0x5')](function(_0x415c35){throw _0x415c35;});}module[_0xad1f('0x6')]=function(_0x2d6907){return _0x2d6907[_0xad1f('0x7')](_0xad1f('0x8'),attributes,{'tableName':_0xad1f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x1bff79=this;var _0x19e520=[_0xad1f('0xa'),'Fax',_0xad1f('0xb'),_0xad1f('0xc'),_0xad1f('0xd'),_0xad1f('0xe'),_0xad1f('0xf')];return Promise[_0xad1f('0x10')]()[_0xad1f('0x1')](function(){var _0x26ce04=_[_0xad1f('0x2')](_0x19e520,function(_0x3ebdb0){return getQueuesByChannel(_0x1bff79,_0x3ebdb0);});return Promise['all'](_0x26ce04);})[_0xad1f('0x5')](function(_0x549781){throw _0x549781;});}}});};
\ No newline at end of file
index 7aab85d..5a9cf61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e0=['defaults','localhost','./team.socket','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','redis'];(function(_0x4fb7fa,_0x358246){var _0x4859ff=function(_0x420054){while(--_0x420054){_0x4fb7fa['push'](_0x4fb7fa['shift']());}};_0x4859ff(++_0x358246);}(_0x52e0,0x15f));var _0x052e=function(_0xa48f9a,_0x36662c){_0xa48f9a=_0xa48f9a-0x0;var _0x225b90=_0x52e0[_0xa48f9a];return _0x225b90;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x052e('0x0'));var BPromise=require(_0x052e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x052e('0x2'));var db=require(_0x052e('0x3'))['db'];var utils=require(_0x052e('0x4'));var logger=require(_0x052e('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x052e('0x6'));var client=jayson[_0x052e('0x7')]['http']({'port':0x232a});config[_0x052e('0x8')]=_[_0x052e('0x9')](config['redis'],{'host':_0x052e('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x052e('0x8')]));require(_0x052e('0xb'))['register'](socket);function respondWithRpcPromise(_0x42106c,_0x21e6f7,_0x14d201){return new BPromise(function(_0x476997,_0x1dd47e){return client[_0x052e('0xc')](_0x42106c,_0x14d201)[_0x052e('0xd')](function(_0x1d8d75){logger[_0x052e('0xe')](_0x052e('0xf'),_0x21e6f7,_0x052e('0x10'));logger[_0x052e('0x11')](_0x052e('0x12'),_0x21e6f7,_0x052e('0x10'),JSON['stringify'](_0x1d8d75));if(_0x1d8d75[_0x052e('0x13')]){if(_0x1d8d75['error'][_0x052e('0x14')]===0x1f4){logger[_0x052e('0x13')](_0x052e('0xf'),_0x21e6f7,_0x1d8d75['error'][_0x052e('0x15')]);return _0x1dd47e(_0x1d8d75[_0x052e('0x13')][_0x052e('0x15')]);}logger[_0x052e('0x13')](_0x052e('0xf'),_0x21e6f7,_0x1d8d75['error'][_0x052e('0x15')]);return _0x476997(_0x1d8d75['error']['message']);}else{logger['info'](_0x052e('0xf'),_0x21e6f7,_0x052e('0x10'));_0x476997(_0x1d8d75[_0x052e('0x16')]['message']);}})[_0x052e('0x17')](function(_0xb9c4d8){logger[_0x052e('0x13')](_0x052e('0xf'),_0x21e6f7,_0xb9c4d8);_0x1dd47e(_0xb9c4d8);});});}
\ No newline at end of file
+var _0x4d77=['then','info','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./team.socket','register','request'];(function(_0x2b36bb,_0x5211cb){var _0x2c7295=function(_0x34f374){while(--_0x34f374){_0x2b36bb['push'](_0x2b36bb['shift']());}};_0x2c7295(++_0x5211cb);}(_0x4d77,0x19f));var _0x74d7=function(_0x5488ab,_0x330205){_0x5488ab=_0x5488ab-0x0;var _0x4720de=_0x4d77[_0x5488ab];return _0x4720de;};'use strict';var _=require(_0x74d7('0x0'));var util=require(_0x74d7('0x1'));var moment=require(_0x74d7('0x2'));var BPromise=require(_0x74d7('0x3'));var rs=require(_0x74d7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x74d7('0x5'))['db'];var utils=require(_0x74d7('0x6'));var logger=require(_0x74d7('0x7'))('rpc');var config=require(_0x74d7('0x8'));var jayson=require(_0x74d7('0x9'));var client=jayson[_0x74d7('0xa')][_0x74d7('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0x74d7('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x74d7('0xd'))(new Redis(config[_0x74d7('0xc')]));require(_0x74d7('0xe'))[_0x74d7('0xf')](socket);function respondWithRpcPromise(_0x5c1020,_0x47008c,_0x43f8ca){return new BPromise(function(_0x4c5d2f,_0x5a6752){return client[_0x74d7('0x10')](_0x5c1020,_0x43f8ca)[_0x74d7('0x11')](function(_0x12ae1b){logger[_0x74d7('0x12')](_0x74d7('0x13'),_0x47008c,_0x74d7('0x14'));logger['debug'](_0x74d7('0x15'),_0x47008c,_0x74d7('0x14'),JSON['stringify'](_0x12ae1b));if(_0x12ae1b[_0x74d7('0x16')]){if(_0x12ae1b[_0x74d7('0x16')][_0x74d7('0x17')]===0x1f4){logger[_0x74d7('0x16')]('Team,\x20%s,\x20%s',_0x47008c,_0x12ae1b[_0x74d7('0x16')]['message']);return _0x5a6752(_0x12ae1b[_0x74d7('0x16')][_0x74d7('0x18')]);}logger[_0x74d7('0x16')](_0x74d7('0x13'),_0x47008c,_0x12ae1b[_0x74d7('0x16')][_0x74d7('0x18')]);return _0x4c5d2f(_0x12ae1b[_0x74d7('0x16')][_0x74d7('0x18')]);}else{logger[_0x74d7('0x12')](_0x74d7('0x13'),_0x47008c,_0x74d7('0x14'));_0x4c5d2f(_0x12ae1b[_0x74d7('0x19')]['message']);}})[_0x74d7('0x1a')](function(_0xeded95){logger[_0x74d7('0x16')](_0x74d7('0x13'),_0x47008c,_0xeded95);_0x5a6752(_0xeded95);});});}
\ No newline at end of file
index 33b377f..26d8230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x142b=['./team.events','save','remove','update','emit'];(function(_0x55d911,_0x2b768c){var _0x3104c2=function(_0x1b4386){while(--_0x1b4386){_0x55d911['push'](_0x55d911['shift']());}};_0x3104c2(++_0x2b768c);}(_0x142b,0x10e));var _0xb142=function(_0x1f89cb,_0x472953){_0x1f89cb=_0x1f89cb-0x0;var _0x46bac2=_0x142b[_0x1f89cb];return _0x46bac2;};'use strict';var TeamEvents=require(_0xb142('0x0'));var events=[_0xb142('0x1'),_0xb142('0x2'),_0xb142('0x3')];function createListener(_0x7c9137,_0x5c2dc8){return function(_0x2d4294){_0x5c2dc8[_0xb142('0x4')](_0x7c9137,_0x2d4294);};}function removeListener(_0x2b1cae,_0xb3dd9c){return function(){TeamEvents['removeListener'](_0x2b1cae,_0xb3dd9c);};}exports['register']=function(_0x5954ac){for(var _0x54493e=0x0,_0x4e0101=events['length'];_0x54493e<_0x4e0101;_0x54493e++){var _0x341c57=events[_0x54493e];var _0x2f6992=createListener('team:'+_0x341c57,_0x5954ac);TeamEvents['on'](_0x341c57,_0x2f6992);}};
\ No newline at end of file
+var _0x8e6d=['emit','register','./team.events','save','remove','update'];(function(_0x58e99d,_0x117950){var _0x171b36=function(_0xf94980){while(--_0xf94980){_0x58e99d['push'](_0x58e99d['shift']());}};_0x171b36(++_0x117950);}(_0x8e6d,0x92));var _0xd8e6=function(_0x55123c,_0x3e6a3e){_0x55123c=_0x55123c-0x0;var _0xd665ff=_0x8e6d[_0x55123c];return _0xd665ff;};'use strict';var TeamEvents=require(_0xd8e6('0x0'));var events=[_0xd8e6('0x1'),_0xd8e6('0x2'),_0xd8e6('0x3')];function createListener(_0x1819f0,_0x19f031){return function(_0x39a44d){_0x19f031[_0xd8e6('0x4')](_0x1819f0,_0x39a44d);};}function removeListener(_0x3521ca,_0x504881){return function(){TeamEvents['removeListener'](_0x3521ca,_0x504881);};}exports[_0xd8e6('0x5')]=function(_0x55e2d1){for(var _0x3f6bbe=0x0,_0x22be37=events['length'];_0x3f6bbe<_0x22be37;_0x3f6bbe++){var _0x16dbd4=events[_0x3f6bbe];var _0x33fdb2=createListener('team:'+_0x16dbd4,_0x55e2d1);TeamEvents['on'](_0x16dbd4,_0x33fdb2);}};
\ No newline at end of file
index 2fd482a..7e03a44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057a=['exports','INTEGER','sequelize'];(function(_0x196ff8,_0x75314d){var _0x5e2a11=function(_0x2fbe9c){while(--_0x2fbe9c){_0x196ff8['push'](_0x196ff8['shift']());}};_0x5e2a11(++_0x75314d);}(_0x057a,0x1a6));var _0xa057=function(_0x1622f2,_0x559621){_0x1622f2=_0x1622f2-0x0;var _0x4458cc=_0x057a[_0x1622f2];return _0x4458cc;};'use strict';var Sequelize=require(_0xa057('0x0'));module[_0xa057('0x1')]={'TeamId':{'type':Sequelize[_0xa057('0x2')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x191a=['INTEGER','sequelize'];(function(_0x10d743,_0x24df73){var _0x4ac666=function(_0x118112){while(--_0x118112){_0x10d743['push'](_0x10d743['shift']());}};_0x4ac666(++_0x24df73);}(_0x191a,0xef));var _0xa191=function(_0x37adb8,_0x662808){_0x37adb8=_0x37adb8-0x0;var _0x2ec241=_0x191a[_0x37adb8];return _0x2ec241;};'use strict';var Sequelize=require(_0xa191('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xa191('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xa191('0x1')]}};
\ No newline at end of file
index 3aab782..64cf90f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c6b=['rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x984fb,_0x507772){var _0x3bc270=function(_0x2f2ddc){while(--_0x2f2ddc){_0x984fb['push'](_0x984fb['shift']());}};_0x3bc270(++_0x507772);}(_0x0c6b,0x1bc));var _0xb0c6=function(_0x3d5b93,_0x3980c9){_0x3d5b93=_0x3d5b93-0x0;var _0x4d3bb7=_0x0c6b[_0x3d5b93];return _0x4d3bb7;};'use strict';var _=require(_0xb0c6('0x0'));var util=require('util');var logger=require(_0xb0c6('0x1'))(_0xb0c6('0x2'));var moment=require(_0xb0c6('0x3'));var BPromise=require(_0xb0c6('0x4'));var rp=require(_0xb0c6('0x5'));var fs=require('fs');var path=require(_0xb0c6('0x6'));var rimraf=require(_0xb0c6('0x7'));var config=require(_0xb0c6('0x8'));var attributes=require(_0xb0c6('0x9'));module[_0xb0c6('0xa')]=function(_0xc26f64,_0x56c7c9){return _0xc26f64['define']('TeamVoicePrefix',attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x33d2=['path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','team_has_voice_prefixes','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4a3739,_0x475da5){var _0x2e5d3c=function(_0x198564){while(--_0x198564){_0x4a3739['push'](_0x4a3739['shift']());}};_0x2e5d3c(++_0x475da5);}(_0x33d2,0x7f));var _0x233d=function(_0xa25342,_0x24522b){_0xa25342=_0xa25342-0x0;var _0x52be43=_0x33d2[_0xa25342];return _0x52be43;};'use strict';var _=require(_0x233d('0x0'));var util=require(_0x233d('0x1'));var logger=require(_0x233d('0x2'))('api');var moment=require(_0x233d('0x3'));var BPromise=require(_0x233d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x233d('0x5'));var rimraf=require(_0x233d('0x6'));var config=require(_0x233d('0x7'));var attributes=require(_0x233d('0x8'));module[_0x233d('0x9')]=function(_0x3f311b,_0x15ba43){return _0x3f311b[_0x233d('0xa')]('TeamVoicePrefix',attributes,{'tableName':_0x233d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f0f7fa8..d56f985 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(_0x5461cc,_0x5d9fb0){var _0xb9e667=function(_0x265237){while(--_0x265237){_0x5461cc['push'](_0x5461cc['shift']());}};_0xb9e667(++_0x5d9fb0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0xcb91[_0x13ce0c];return _0x4388fb;};'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(_0x2d9f26,_0x10e8dd){var _0x5c7562=function(_0xc15ae9){while(--_0xc15ae9){_0x2d9f26['push'](_0x2d9f26['shift']());}};_0x5c7562(++_0x10e8dd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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 40ec2df..c6e6f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13db=['exports'];(function(_0x32ede6,_0x6c10a1){var _0x183187=function(_0x54f8d1){while(--_0x54f8d1){_0x32ede6['push'](_0x32ede6['shift']());}};_0x183187(++_0x6c10a1);}(_0x13db,0xa7));var _0xb13d=function(_0x397a79,_0x334ef7){_0x397a79=_0x397a79-0x0;var _0x277649=_0x13db[_0x397a79];return _0x277649;};'use strict';var Sequelize=require('sequelize');module[_0xb13d('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd89f=['exports','INTEGER','sequelize'];(function(_0x105fa5,_0x4753ec){var _0x5a6e8c=function(_0x29f85d){while(--_0x29f85d){_0x105fa5['push'](_0x105fa5['shift']());}};_0x5a6e8c(++_0x4753ec);}(_0xd89f,0x191));var _0xfd89=function(_0x1349d0,_0x30e8e5){_0x1349d0=_0x1349d0-0x0;var _0x524d5f=_0xd89f[_0x1349d0];return _0x524d5f;};'use strict';var Sequelize=require(_0xfd89('0x0'));module[_0xfd89('0x1')]={'penalty':{'type':Sequelize[_0xfd89('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index a9b0ec9..316fb03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ae3=['team_has_voice_queues','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue'];(function(_0x164af1,_0x3cf772){var _0x5d81a2=function(_0xa57547){while(--_0xa57547){_0x164af1['push'](_0x164af1['shift']());}};_0x5d81a2(++_0x3cf772);}(_0x1ae3,0x139));var _0x31ae=function(_0x5296b7,_0x1e0dd7){_0x5296b7=_0x5296b7-0x0;var _0x5053b6=_0x1ae3[_0x5296b7];return _0x5053b6;};'use strict';var _=require(_0x31ae('0x0'));var util=require(_0x31ae('0x1'));var logger=require('../../config/logger')(_0x31ae('0x2'));var moment=require(_0x31ae('0x3'));var BPromise=require(_0x31ae('0x4'));var rp=require(_0x31ae('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31ae('0x6'));var config=require(_0x31ae('0x7'));var attributes=require(_0x31ae('0x8'));module[_0x31ae('0x9')]=function(_0xe1202b,_0x3f2e91){return _0xe1202b[_0x31ae('0xa')](_0x31ae('0xb'),attributes,{'tableName':_0x31ae('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd04b=['lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xd04b,0x145));var _0xbd04=function(_0x23de6f,_0xb26d78){_0x23de6f=_0x23de6f-0x0;var _0x433be2=_0xd04b[_0x23de6f];return _0x433be2;};'use strict';var _=require(_0xbd04('0x0'));var util=require(_0xbd04('0x1'));var logger=require(_0xbd04('0x2'))('api');var moment=require(_0xbd04('0x3'));var BPromise=require('bluebird');var rp=require(_0xbd04('0x4'));var fs=require('fs');var path=require(_0xbd04('0x5'));var rimraf=require(_0xbd04('0x6'));var config=require(_0xbd04('0x7'));var attributes=require(_0xbd04('0x8'));module[_0xbd04('0x9')]=function(_0x11d6ce,_0x2d8811){return _0x11d6ce[_0xbd04('0xa')](_0xbd04('0xb'),attributes,{'tableName':_0xbd04('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 971f3d3..4855739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cbb=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x1cbb,0x18f));var _0xb1cb=function(_0x157684,_0x524a67){_0x157684=_0x157684-0x0;var _0x13c189=_0x1cbb[_0x157684];return _0x13c189;};'use strict';var _=require(_0xb1cb('0x0'));var util=require(_0xb1cb('0x1'));var moment=require('moment');var BPromise=require(_0xb1cb('0x2'));var rs=require(_0xb1cb('0x3'));var fs=require('fs');var Redis=require(_0xb1cb('0x4'));var db=require(_0xb1cb('0x5'))['db'];var utils=require(_0xb1cb('0x6'));var logger=require('../../config/logger')(_0xb1cb('0x7'));var config=require(_0xb1cb('0x8'));var jayson=require(_0xb1cb('0x9'));var client=jayson[_0xb1cb('0xa')][_0xb1cb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45f616,_0x405e0e,_0x186d1e){return new BPromise(function(_0x5cab24,_0x530feb){return client[_0xb1cb('0xc')](_0x45f616,_0x186d1e)[_0xb1cb('0xd')](function(_0x3e9606){logger[_0xb1cb('0xe')](_0xb1cb('0xf'),_0x405e0e,_0xb1cb('0x10'));logger[_0xb1cb('0x11')](_0xb1cb('0x12'),_0x405e0e,_0xb1cb('0x10'),JSON[_0xb1cb('0x13')](_0x3e9606));if(_0x3e9606[_0xb1cb('0x14')]){if(_0x3e9606['error'][_0xb1cb('0x15')]===0x1f4){logger[_0xb1cb('0x14')](_0xb1cb('0xf'),_0x405e0e,_0x3e9606['error']['message']);return _0x530feb(_0x3e9606[_0xb1cb('0x14')][_0xb1cb('0x16')]);}logger[_0xb1cb('0x14')](_0xb1cb('0xf'),_0x405e0e,_0x3e9606[_0xb1cb('0x14')][_0xb1cb('0x16')]);return _0x5cab24(_0x3e9606[_0xb1cb('0x14')]['message']);}else{logger[_0xb1cb('0xe')]('TeamVoiceQueue,\x20%s,\x20%s',_0x405e0e,_0xb1cb('0x10'));_0x5cab24(_0x3e9606[_0xb1cb('0x17')][_0xb1cb('0x16')]);}})[_0xb1cb('0x18')](function(_0x255ef6){logger[_0xb1cb('0x14')](_0xb1cb('0xf'),_0x405e0e,_0x255ef6);_0x530feb(_0x255ef6);});});}
\ No newline at end of file
+var _0xd50d=['../../config/environment','jayson/promise','http','then','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','TeamVoiceQueue,\x20%s,\x20%s','info','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x180ffb,_0x26e6a7){var _0x46bc3b=function(_0x3810a9){while(--_0x3810a9){_0x180ffb['push'](_0x180ffb['shift']());}};_0x46bc3b(++_0x26e6a7);}(_0xd50d,0xc9));var _0xdd50=function(_0x317424,_0x1e9fe2){_0x317424=_0x317424-0x0;var _0x4189b2=_0xd50d[_0x317424];return _0x4189b2;};'use strict';var _=require(_0xdd50('0x0'));var util=require(_0xdd50('0x1'));var moment=require(_0xdd50('0x2'));var BPromise=require(_0xdd50('0x3'));var rs=require(_0xdd50('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdd50('0x5'))['db'];var utils=require(_0xdd50('0x6'));var logger=require(_0xdd50('0x7'))(_0xdd50('0x8'));var config=require(_0xdd50('0x9'));var jayson=require(_0xdd50('0xa'));var client=jayson['client'][_0xdd50('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x57e03f,_0x423867,_0x564536){return new BPromise(function(_0x27f4cd,_0x3c1512){return client['request'](_0x57e03f,_0x564536)[_0xdd50('0xc')](function(_0x56803b){logger['info']('TeamVoiceQueue,\x20%s,\x20%s',_0x423867,_0xdd50('0xd'));logger[_0xdd50('0xe')](_0xdd50('0xf'),_0x423867,'request\x20sent',JSON['stringify'](_0x56803b));if(_0x56803b['error']){if(_0x56803b[_0xdd50('0x10')][_0xdd50('0x11')]===0x1f4){logger[_0xdd50('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x423867,_0x56803b['error'][_0xdd50('0x12')]);return _0x3c1512(_0x56803b[_0xdd50('0x10')][_0xdd50('0x12')]);}logger[_0xdd50('0x10')](_0xdd50('0x13'),_0x423867,_0x56803b['error'][_0xdd50('0x12')]);return _0x27f4cd(_0x56803b[_0xdd50('0x10')]['message']);}else{logger[_0xdd50('0x14')](_0xdd50('0x13'),_0x423867,_0xdd50('0xd'));_0x27f4cd(_0x56803b['result'][_0xdd50('0x12')]);}})['catch'](function(_0x29a772){logger['error'](_0xdd50('0x13'),_0x423867,_0x29a772);_0x3c1512(_0x29a772);});});}
\ No newline at end of file
index 7bd7cd2..8df48c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f59=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x7f59,0x12e));var _0x97f5=function(_0x118789,_0x393e1d){_0x118789=_0x118789-0x0;var _0x207ed2=_0x7f59[_0x118789];return _0x207ed2;};'use strict';var multer=require(_0x97f5('0x0'));var util=require(_0x97f5('0x1'));var path=require('path');var timeout=require(_0x97f5('0x2'));var express=require(_0x97f5('0x3'));var router=express[_0x97f5('0x4')]();var fs_extra=require(_0x97f5('0x5'));var auth=require(_0x97f5('0x6'));var interaction=require(_0x97f5('0x7'));var config=require(_0x97f5('0x8'));var controller=require('./template.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x97f5('0x9')](_0x97f5('0xa'),auth[_0x97f5('0xb')](),controller[_0x97f5('0xc')]);router[_0x97f5('0xd')]('/',auth[_0x97f5('0xb')](),controller['create']);router['put']('/:id',auth[_0x97f5('0xb')](),controller['update']);router[_0x97f5('0xe')](_0x97f5('0xa'),auth['isAuthenticated'](),controller[_0x97f5('0xf')]);module[_0x97f5('0x10')]=router;
\ No newline at end of file
+var _0x1d63=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','/:id','show','post','update'];(function(_0x4ac208,_0x4401e6){var _0xf03ba7=function(_0x2f4296){while(--_0x2f4296){_0x4ac208['push'](_0x4ac208['shift']());}};_0xf03ba7(++_0x4401e6);}(_0x1d63,0xa4));var _0x31d6=function(_0x534c02,_0x485615){_0x534c02=_0x534c02-0x0;var _0x570373=_0x1d63[_0x534c02];return _0x570373;};'use strict';var multer=require(_0x31d6('0x0'));var util=require(_0x31d6('0x1'));var path=require(_0x31d6('0x2'));var timeout=require(_0x31d6('0x3'));var express=require(_0x31d6('0x4'));var router=express['Router']();var fs_extra=require(_0x31d6('0x5'));var auth=require(_0x31d6('0x6'));var interaction=require(_0x31d6('0x7'));var config=require(_0x31d6('0x8'));var controller=require(_0x31d6('0x9'));router[_0x31d6('0xa')]('/',auth[_0x31d6('0xb')](),controller['index']);router[_0x31d6('0xa')](_0x31d6('0xc'),auth['isAuthenticated'](),controller[_0x31d6('0xd')]);router[_0x31d6('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x31d6('0xc'),auth[_0x31d6('0xb')](),controller[_0x31d6('0xf')]);router['delete'](_0x31d6('0xc'),auth[_0x31d6('0xb')](),controller[_0x31d6('0x10')]);module[_0x31d6('0x11')]=router;
\ No newline at end of file
index bcc439d..052c4f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9495=['exports','STRING','TEXT','sequelize'];(function(_0xe551ca,_0x196d3c){var _0x11268d=function(_0xe7520d){while(--_0xe7520d){_0xe551ca['push'](_0xe551ca['shift']());}};_0x11268d(++_0x196d3c);}(_0x9495,0xcf));var _0x5949=function(_0xb60643,_0x5a28f0){_0xb60643=_0xb60643-0x0;var _0x2375d3=_0x9495[_0xb60643];return _0x2375d3;};'use strict';var Sequelize=require(_0x5949('0x0'));module[_0x5949('0x1')]={'name':{'type':Sequelize[_0x5949('0x2')]},'description':{'type':Sequelize[_0x5949('0x2')]},'html':{'type':Sequelize[_0x5949('0x3')]}};
\ No newline at end of file
+var _0xa5cc=['sequelize'];(function(_0x2776ef,_0x20481c){var _0xef49ed=function(_0xfb14a6){while(--_0xfb14a6){_0x2776ef['push'](_0x2776ef['shift']());}};_0xef49ed(++_0x20481c);}(_0xa5cc,0x1e9));var _0xca5c=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0xa5cc[_0x220f3f];return _0x1f170e;};'use strict';var Sequelize=require(_0xca5c('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index f3aaa17..444dcd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd17b=['../../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','save','update','get','Templates','destroy','then','name','index','map','Template','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','findAll','catch','show','params','include','find','create','body','user','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','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x352d28,_0x444033){var _0x387d7e=function(_0x40be0e){while(--_0x40be0e){_0x352d28['push'](_0x352d28['shift']());}};_0x387d7e(++_0x444033);}(_0xd17b,0x1e5));var _0xbd17=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xd17b[_0x174ef5];return _0x1cc379;};'use strict';var emlformat=require(_0xbd17('0x0'));var rimraf=require(_0xbd17('0x1'));var zipdir=require(_0xbd17('0x2'));var jsonpatch=require(_0xbd17('0x3'));var rp=require(_0xbd17('0x4'));var moment=require(_0xbd17('0x5'));var BPromise=require(_0xbd17('0x6'));var Mustache=require(_0xbd17('0x7'));var util=require(_0xbd17('0x8'));var path=require(_0xbd17('0x9'));var sox=require(_0xbd17('0xa'));var csv=require(_0xbd17('0xb'));var ejs=require(_0xbd17('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbd17('0xd'));var crypto=require('crypto');var jsforce=require(_0xbd17('0xe'));var deskjs=require(_0xbd17('0xf'));var toCsv=require(_0xbd17('0xb'));var querystring=require(_0xbd17('0x10'));var Papa=require(_0xbd17('0x11'));var Redis=require(_0xbd17('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbd17('0x13'));var hardwareService=require(_0xbd17('0x14'));var logger=require(_0xbd17('0x15'))(_0xbd17('0x16'));var utils=require(_0xbd17('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xbd17('0x18'));var db=require(_0xbd17('0x19'))['db'];function respondWithStatusCode(_0x1702fb,_0x10f351){_0x10f351=_0x10f351||0xcc;return function(_0x9be6d5){if(_0x9be6d5){return _0x1702fb[_0xbd17('0x1a')](_0x10f351);}return _0x1702fb[_0xbd17('0x1b')](_0x10f351)[_0xbd17('0x1c')]();};}function respondWithResult(_0x38bac8,_0x25de49){_0x25de49=_0x25de49||0xc8;return function(_0x122c6c){if(_0x122c6c){return _0x38bac8[_0xbd17('0x1b')](_0x25de49)[_0xbd17('0x1d')](_0x122c6c);}};}function respondWithFilteredResult(_0x521741,_0x418502){return function(_0x14583f){if(_0x14583f){var _0x5ac8ff=typeof _0x418502[_0xbd17('0x1e')]==='undefined'&&typeof _0x418502[_0xbd17('0x1f')]===_0xbd17('0x20');var _0x5e3b17=_0x14583f[_0xbd17('0x21')];var _0x5b1bbf=_0x5ac8ff?0x0:_0x418502[_0xbd17('0x1e')];var _0x342050=_0x5ac8ff?_0x14583f[_0xbd17('0x21')]:_0x418502[_0xbd17('0x1e')]+_0x418502['limit'];var _0x5eb5e2;if(_0x342050>=_0x5e3b17){_0x342050=_0x5e3b17;_0x5eb5e2=0xc8;}else{_0x5eb5e2=0xce;}_0x521741['status'](_0x5eb5e2);return _0x521741[_0xbd17('0x22')](_0xbd17('0x23'),_0x5b1bbf+'-'+_0x342050+'/'+_0x5e3b17)[_0xbd17('0x1d')](_0x14583f);}return null;};}function patchUpdates(_0xf33ac5){return function(_0x55a820){try{jsonpatch[_0xbd17('0x24')](_0x55a820,_0xf33ac5,!![]);}catch(_0x47c577){return BPromise[_0xbd17('0x25')](_0x47c577);}return _0x55a820[_0xbd17('0x26')]();};}function saveUpdates(_0x110f73,_0x17485d){return function(_0x43578d){if(_0x43578d){return _0x43578d[_0xbd17('0x27')](_0x110f73)['then'](function(_0xe41d4d){return _0xe41d4d;});}return null;};}function removeEntity(_0x192d06,_0x11380c){return function(_0x9247c9){if(_0x9247c9){return _0x9247c9['destroy']()['then'](function(){var _0x264e1d=_0x9247c9[_0xbd17('0x28')]({'plain':!![]});var _0x218736=_0xbd17('0x29');return db['UserProfileResource'][_0xbd17('0x2a')]({'where':{'type':_0x218736,'resourceId':_0x264e1d['id']}})[_0xbd17('0x2b')](function(){return _0x9247c9;});})[_0xbd17('0x2b')](function(){_0x192d06[_0xbd17('0x1b')](0xcc)[_0xbd17('0x1c')]();});}};}function handleEntityNotFound(_0x39be67,_0x5dc059){return function(_0x4f09b3){if(!_0x4f09b3){_0x39be67['sendStatus'](0x194);}return _0x4f09b3;};}function handleError(_0x4df256,_0x8481c8){_0x8481c8=_0x8481c8||0x1f4;return function(_0x1e801c){logger['error'](_0x1e801c['stack']);if(_0x1e801c[_0xbd17('0x2c')]){delete _0x1e801c['name'];}_0x4df256[_0xbd17('0x1b')](_0x8481c8)['send'](_0x1e801c);};}exports[_0xbd17('0x2d')]=function(_0x5a4a48,_0x5d32eb){var _0x16d06a={},_0x16f5ad={},_0x319656={'count':0x0,'rows':[]};var _0x9c6f8b=_[_0xbd17('0x2e')](db[_0xbd17('0x2f')][_0xbd17('0x30')],function(_0x1b5467){return{'name':_0x1b5467[_0xbd17('0x31')],'type':_0x1b5467[_0xbd17('0x32')][_0xbd17('0x33')]};});_0x16f5ad[_0xbd17('0x34')]=_['map'](_0x9c6f8b,'name');_0x16f5ad[_0xbd17('0x35')]=_['keys'](_0x5a4a48[_0xbd17('0x35')]);_0x16f5ad['filters']=_[_0xbd17('0x36')](_0x16f5ad[_0xbd17('0x34')],_0x16f5ad[_0xbd17('0x35')]);_0x16d06a[_0xbd17('0x37')]=_['intersection'](_0x16f5ad[_0xbd17('0x34')],qs[_0xbd17('0x38')](_0x5a4a48[_0xbd17('0x35')][_0xbd17('0x38')]));_0x16d06a['attributes']=_0x16d06a['attributes'][_0xbd17('0x39')]?_0x16d06a[_0xbd17('0x37')]:_0x16f5ad[_0xbd17('0x34')];if(!_0x5a4a48[_0xbd17('0x35')]['hasOwnProperty'](_0xbd17('0x3a'))){_0x16d06a[_0xbd17('0x1f')]=qs[_0xbd17('0x1f')](_0x5a4a48['query']['limit']);_0x16d06a[_0xbd17('0x1e')]=qs[_0xbd17('0x1e')](_0x5a4a48['query'][_0xbd17('0x1e')]);}_0x16d06a[_0xbd17('0x3b')]=qs[_0xbd17('0x3c')](_0x5a4a48[_0xbd17('0x35')]['sort']);_0x16d06a[_0xbd17('0x3d')]=qs[_0xbd17('0x3e')](_[_0xbd17('0x3f')](_0x5a4a48[_0xbd17('0x35')],_0x16f5ad[_0xbd17('0x3e')]),_0x9c6f8b);if(_0x5a4a48[_0xbd17('0x35')][_0xbd17('0x40')]){_0x16d06a[_0xbd17('0x3d')]=_['merge'](_0x16d06a['where'],{'$or':_[_0xbd17('0x2e')](_0x9c6f8b,function(_0x2081bf){if(_0x2081bf['type']!==_0xbd17('0x41')){var _0x2a13d9={};_0x2a13d9[_0x2081bf[_0xbd17('0x2c')]]={'$like':'%'+_0x5a4a48[_0xbd17('0x35')][_0xbd17('0x40')]+'%'};return _0x2a13d9;}})});}_0x16d06a=_[_0xbd17('0x42')]({},_0x16d06a,_0x5a4a48[_0xbd17('0x43')]);var _0x4cb3e4={'where':_0x16d06a[_0xbd17('0x3d')]};return db[_0xbd17('0x2f')]['count'](_0x4cb3e4)['then'](function(_0x5329d2){_0x319656['count']=_0x5329d2;if(_0x5a4a48['query'][_0xbd17('0x44')]){_0x16d06a['include']=[{'all':!![]}];}return db[_0xbd17('0x2f')][_0xbd17('0x45')](_0x16d06a);})[_0xbd17('0x2b')](function(_0x1a1c3a){_0x319656['rows']=_0x1a1c3a;return _0x319656;})[_0xbd17('0x2b')](respondWithFilteredResult(_0x5d32eb,_0x16d06a))[_0xbd17('0x46')](handleError(_0x5d32eb,null));};exports[_0xbd17('0x47')]=function(_0x19093c,_0x29b54b){var _0x37df6a={'raw':!![],'where':{'id':_0x19093c[_0xbd17('0x48')]['id']}},_0x3600db={};_0x3600db[_0xbd17('0x34')]=_['keys'](db[_0xbd17('0x2f')][_0xbd17('0x30')]);_0x3600db[_0xbd17('0x35')]=_['keys'](_0x19093c['query']);_0x3600db['filters']=_[_0xbd17('0x36')](_0x3600db[_0xbd17('0x34')],_0x3600db[_0xbd17('0x35')]);_0x37df6a['attributes']=_['intersection'](_0x3600db[_0xbd17('0x34')],qs[_0xbd17('0x38')](_0x19093c[_0xbd17('0x35')][_0xbd17('0x38')]));_0x37df6a[_0xbd17('0x37')]=_0x37df6a[_0xbd17('0x37')]['length']?_0x37df6a[_0xbd17('0x37')]:_0x3600db['model'];if(_0x19093c[_0xbd17('0x35')][_0xbd17('0x44')]){_0x37df6a[_0xbd17('0x49')]=[{'all':!![]}];}_0x37df6a=_['merge']({},_0x37df6a,_0x19093c[_0xbd17('0x43')]);return db[_0xbd17('0x2f')][_0xbd17('0x4a')](_0x37df6a)[_0xbd17('0x2b')](handleEntityNotFound(_0x29b54b,null))['then'](respondWithResult(_0x29b54b,null))['catch'](handleError(_0x29b54b,null));};exports['create']=function(_0x573d48,_0x2261a6){return db[_0xbd17('0x2f')][_0xbd17('0x4b')](_0x573d48[_0xbd17('0x4c')],{})[_0xbd17('0x2b')](function(_0x3e10b5){var _0x38b92d=_0x573d48[_0xbd17('0x4d')][_0xbd17('0x28')]({'plain':!![]});if(!_0x38b92d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38b92d[_0xbd17('0x4e')]===_0xbd17('0x4d')){var _0x4fcc2c=_0x3e10b5[_0xbd17('0x28')]({'plain':!![]});var _0x1a48a2=_0xbd17('0x29');return db[_0xbd17('0x4f')][_0xbd17('0x4a')]({'where':{'name':_0x1a48a2,'userProfileId':_0x38b92d[_0xbd17('0x50')]},'raw':!![]})[_0xbd17('0x2b')](function(_0x10af86){if(_0x10af86&&_0x10af86[_0xbd17('0x51')]===0x0){return db[_0xbd17('0x52')][_0xbd17('0x4b')]({'name':_0x4fcc2c[_0xbd17('0x2c')],'resourceId':_0x4fcc2c['id'],'type':_0x10af86['name'],'sectionId':_0x10af86['id']},{})[_0xbd17('0x2b')](function(){return _0x3e10b5;});}else{return _0x3e10b5;}})[_0xbd17('0x46')](function(_0x45526b){logger['error'](_0xbd17('0x53'),_0x45526b);throw _0x45526b;});}return _0x3e10b5;})['then'](respondWithResult(_0x2261a6,0xc9))[_0xbd17('0x46')](handleError(_0x2261a6,null));};exports[_0xbd17('0x27')]=function(_0x1a079e,_0x68c6d7){if(_0x1a079e[_0xbd17('0x4c')]['id']){delete _0x1a079e[_0xbd17('0x4c')]['id'];}return db['Template'][_0xbd17('0x4a')]({'where':{'id':_0x1a079e[_0xbd17('0x48')]['id']}})[_0xbd17('0x2b')](handleEntityNotFound(_0x68c6d7,null))[_0xbd17('0x2b')](saveUpdates(_0x1a079e[_0xbd17('0x4c')],null))[_0xbd17('0x2b')](respondWithResult(_0x68c6d7,null))['catch'](handleError(_0x68c6d7,null));};exports['destroy']=function(_0x4ce59e,_0x4cc2fb){return db['Template']['find']({'where':{'id':_0x4ce59e[_0xbd17('0x48')]['id']}})[_0xbd17('0x2b')](handleEntityNotFound(_0x4cc2fb,null))[_0xbd17('0x2b')](removeEntity(_0x4cc2fb,null))[_0xbd17('0x46')](handleError(_0x4cc2fb,null));};
\ No newline at end of file
+var _0xd688=['catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','destroy','then','get','Templates','UserProfileResource','name','send','map','Template','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd688,0xb2));var _0x8d68=function(_0x126cc0,_0x2eed69){_0x126cc0=_0x126cc0-0x0;var _0x295a00=_0xd688[_0x126cc0];return _0x295a00;};'use strict';var emlformat=require(_0x8d68('0x0'));var rimraf=require(_0x8d68('0x1'));var zipdir=require(_0x8d68('0x2'));var jsonpatch=require(_0x8d68('0x3'));var rp=require(_0x8d68('0x4'));var moment=require(_0x8d68('0x5'));var BPromise=require(_0x8d68('0x6'));var Mustache=require(_0x8d68('0x7'));var util=require(_0x8d68('0x8'));var path=require(_0x8d68('0x9'));var sox=require(_0x8d68('0xa'));var csv=require(_0x8d68('0xb'));var ejs=require(_0x8d68('0xc'));var fs=require('fs');var fs_extra=require(_0x8d68('0xd'));var _=require(_0x8d68('0xe'));var squel=require(_0x8d68('0xf'));var crypto=require(_0x8d68('0x10'));var jsforce=require(_0x8d68('0x11'));var deskjs=require(_0x8d68('0x12'));var toCsv=require(_0x8d68('0xb'));var querystring=require(_0x8d68('0x13'));var Papa=require('papaparse');var Redis=require(_0x8d68('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8d68('0x15'));var hardwareService=require(_0x8d68('0x16'));var logger=require(_0x8d68('0x17'))('api');var utils=require(_0x8d68('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x8d68('0x19'));var db=require(_0x8d68('0x1a'))['db'];function respondWithStatusCode(_0x13dbf6,_0x4922b7){_0x4922b7=_0x4922b7||0xcc;return function(_0x2217a5){if(_0x2217a5){return _0x13dbf6[_0x8d68('0x1b')](_0x4922b7);}return _0x13dbf6[_0x8d68('0x1c')](_0x4922b7)[_0x8d68('0x1d')]();};}function respondWithResult(_0x526ea5,_0x273637){_0x273637=_0x273637||0xc8;return function(_0x17f97e){if(_0x17f97e){return _0x526ea5[_0x8d68('0x1c')](_0x273637)[_0x8d68('0x1e')](_0x17f97e);}};}function respondWithFilteredResult(_0x43a259,_0xba2b2f){return function(_0x389fe4){if(_0x389fe4){var _0xfb45c2=typeof _0xba2b2f[_0x8d68('0x1f')]===_0x8d68('0x20')&&typeof _0xba2b2f[_0x8d68('0x21')]===_0x8d68('0x20');var _0x5aa103=_0x389fe4[_0x8d68('0x22')];var _0x3ce6c0=_0xfb45c2?0x0:_0xba2b2f[_0x8d68('0x1f')];var _0x15ca98=_0xfb45c2?_0x389fe4[_0x8d68('0x22')]:_0xba2b2f[_0x8d68('0x1f')]+_0xba2b2f['limit'];var _0x344f70;if(_0x15ca98>=_0x5aa103){_0x15ca98=_0x5aa103;_0x344f70=0xc8;}else{_0x344f70=0xce;}_0x43a259['status'](_0x344f70);return _0x43a259['set'](_0x8d68('0x23'),_0x3ce6c0+'-'+_0x15ca98+'/'+_0x5aa103)[_0x8d68('0x1e')](_0x389fe4);}return null;};}function patchUpdates(_0xf54c4f){return function(_0x2b279b){try{jsonpatch[_0x8d68('0x24')](_0x2b279b,_0xf54c4f,!![]);}catch(_0x12be25){return BPromise['reject'](_0x12be25);}return _0x2b279b[_0x8d68('0x25')]();};}function saveUpdates(_0x21fa02,_0x2aaf62){return function(_0x341da0){if(_0x341da0){return _0x341da0['update'](_0x21fa02)['then'](function(_0x51a35c){return _0x51a35c;});}return null;};}function removeEntity(_0x29d483,_0x222561){return function(_0x50d85e){if(_0x50d85e){return _0x50d85e[_0x8d68('0x26')]()[_0x8d68('0x27')](function(){var _0x4ca5de=_0x50d85e[_0x8d68('0x28')]({'plain':!![]});var _0x151902=_0x8d68('0x29');return db[_0x8d68('0x2a')][_0x8d68('0x26')]({'where':{'type':_0x151902,'resourceId':_0x4ca5de['id']}})[_0x8d68('0x27')](function(){return _0x50d85e;});})[_0x8d68('0x27')](function(){_0x29d483['status'](0xcc)[_0x8d68('0x1d')]();});}};}function handleEntityNotFound(_0x312668,_0x25a469){return function(_0x58a36){if(!_0x58a36){_0x312668[_0x8d68('0x1b')](0x194);}return _0x58a36;};}function handleError(_0x3e42e3,_0x551ca7){_0x551ca7=_0x551ca7||0x1f4;return function(_0x4c8a11){logger['error'](_0x4c8a11['stack']);if(_0x4c8a11['name']){delete _0x4c8a11[_0x8d68('0x2b')];}_0x3e42e3['status'](_0x551ca7)[_0x8d68('0x2c')](_0x4c8a11);};}exports['index']=function(_0x2763ff,_0xf646aa){var _0x5cbd72={},_0x1b2298={},_0x404e76={'count':0x0,'rows':[]};var _0x3a7e2c=_[_0x8d68('0x2d')](db[_0x8d68('0x2e')][_0x8d68('0x2f')],function(_0x3a112c){return{'name':_0x3a112c[_0x8d68('0x30')],'type':_0x3a112c[_0x8d68('0x31')][_0x8d68('0x32')]};});_0x1b2298[_0x8d68('0x33')]=_['map'](_0x3a7e2c,_0x8d68('0x2b'));_0x1b2298[_0x8d68('0x34')]=_[_0x8d68('0x35')](_0x2763ff[_0x8d68('0x34')]);_0x1b2298[_0x8d68('0x36')]=_[_0x8d68('0x37')](_0x1b2298[_0x8d68('0x33')],_0x1b2298['query']);_0x5cbd72[_0x8d68('0x38')]=_[_0x8d68('0x37')](_0x1b2298['model'],qs[_0x8d68('0x39')](_0x2763ff[_0x8d68('0x34')][_0x8d68('0x39')]));_0x5cbd72[_0x8d68('0x38')]=_0x5cbd72[_0x8d68('0x38')][_0x8d68('0x3a')]?_0x5cbd72[_0x8d68('0x38')]:_0x1b2298['model'];if(!_0x2763ff[_0x8d68('0x34')]['hasOwnProperty'](_0x8d68('0x3b'))){_0x5cbd72[_0x8d68('0x21')]=qs[_0x8d68('0x21')](_0x2763ff[_0x8d68('0x34')]['limit']);_0x5cbd72[_0x8d68('0x1f')]=qs[_0x8d68('0x1f')](_0x2763ff[_0x8d68('0x34')][_0x8d68('0x1f')]);}_0x5cbd72[_0x8d68('0x3c')]=qs[_0x8d68('0x3d')](_0x2763ff['query'][_0x8d68('0x3d')]);_0x5cbd72[_0x8d68('0x3e')]=qs['filters'](_[_0x8d68('0x3f')](_0x2763ff[_0x8d68('0x34')],_0x1b2298['filters']),_0x3a7e2c);if(_0x2763ff['query'][_0x8d68('0x40')]){_0x5cbd72[_0x8d68('0x3e')]=_[_0x8d68('0x41')](_0x5cbd72[_0x8d68('0x3e')],{'$or':_[_0x8d68('0x2d')](_0x3a7e2c,function(_0x4a2f51){if(_0x4a2f51[_0x8d68('0x31')]!==_0x8d68('0x42')){var _0x4a652f={};_0x4a652f[_0x4a2f51[_0x8d68('0x2b')]]={'$like':'%'+_0x2763ff['query']['filter']+'%'};return _0x4a652f;}})});}_0x5cbd72=_['merge']({},_0x5cbd72,_0x2763ff['options']);var _0x476370={'where':_0x5cbd72[_0x8d68('0x3e')]};return db[_0x8d68('0x2e')][_0x8d68('0x22')](_0x476370)['then'](function(_0x33375f){_0x404e76[_0x8d68('0x22')]=_0x33375f;if(_0x2763ff[_0x8d68('0x34')][_0x8d68('0x43')]){_0x5cbd72[_0x8d68('0x44')]=[{'all':!![]}];}return db[_0x8d68('0x2e')][_0x8d68('0x45')](_0x5cbd72);})['then'](function(_0x272b25){_0x404e76[_0x8d68('0x46')]=_0x272b25;return _0x404e76;})[_0x8d68('0x27')](respondWithFilteredResult(_0xf646aa,_0x5cbd72))[_0x8d68('0x47')](handleError(_0xf646aa,null));};exports[_0x8d68('0x48')]=function(_0x336578,_0x14861e){var _0x32820a={'raw':!![],'where':{'id':_0x336578[_0x8d68('0x49')]['id']}},_0x51b165={};_0x51b165[_0x8d68('0x33')]=_[_0x8d68('0x35')](db[_0x8d68('0x2e')][_0x8d68('0x2f')]);_0x51b165[_0x8d68('0x34')]=_[_0x8d68('0x35')](_0x336578[_0x8d68('0x34')]);_0x51b165[_0x8d68('0x36')]=_[_0x8d68('0x37')](_0x51b165[_0x8d68('0x33')],_0x51b165[_0x8d68('0x34')]);_0x32820a['attributes']=_[_0x8d68('0x37')](_0x51b165[_0x8d68('0x33')],qs['fields'](_0x336578['query'][_0x8d68('0x39')]));_0x32820a[_0x8d68('0x38')]=_0x32820a[_0x8d68('0x38')]['length']?_0x32820a[_0x8d68('0x38')]:_0x51b165['model'];if(_0x336578[_0x8d68('0x34')][_0x8d68('0x43')]){_0x32820a[_0x8d68('0x44')]=[{'all':!![]}];}_0x32820a=_['merge']({},_0x32820a,_0x336578['options']);return db[_0x8d68('0x2e')][_0x8d68('0x4a')](_0x32820a)['then'](handleEntityNotFound(_0x14861e,null))[_0x8d68('0x27')](respondWithResult(_0x14861e,null))[_0x8d68('0x47')](handleError(_0x14861e,null));};exports[_0x8d68('0x4b')]=function(_0x4cad7a,_0x3038f2){return db[_0x8d68('0x2e')]['create'](_0x4cad7a[_0x8d68('0x4c')],{})[_0x8d68('0x27')](function(_0x2a7c26){var _0x2c1beb=_0x4cad7a['user'][_0x8d68('0x28')]({'plain':!![]});if(!_0x2c1beb)throw new Error(_0x8d68('0x4d'));if(_0x2c1beb['role']===_0x8d68('0x4e')){var _0x4a111e=_0x2a7c26[_0x8d68('0x28')]({'plain':!![]});var _0x32e670=_0x8d68('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x32e670,'userProfileId':_0x2c1beb['userProfileId']},'raw':!![]})[_0x8d68('0x27')](function(_0x504254){if(_0x504254&&_0x504254[_0x8d68('0x4f')]===0x0){return db[_0x8d68('0x2a')]['create']({'name':_0x4a111e[_0x8d68('0x2b')],'resourceId':_0x4a111e['id'],'type':_0x504254['name'],'sectionId':_0x504254['id']},{})[_0x8d68('0x27')](function(){return _0x2a7c26;});}else{return _0x2a7c26;}})['catch'](function(_0x44b165){logger[_0x8d68('0x50')](_0x8d68('0x51'),_0x44b165);throw _0x44b165;});}return _0x2a7c26;})[_0x8d68('0x27')](respondWithResult(_0x3038f2,0xc9))['catch'](handleError(_0x3038f2,null));};exports[_0x8d68('0x52')]=function(_0x51d049,_0x1280e2){if(_0x51d049[_0x8d68('0x4c')]['id']){delete _0x51d049[_0x8d68('0x4c')]['id'];}return db[_0x8d68('0x2e')][_0x8d68('0x4a')]({'where':{'id':_0x51d049[_0x8d68('0x49')]['id']}})[_0x8d68('0x27')](handleEntityNotFound(_0x1280e2,null))['then'](saveUpdates(_0x51d049[_0x8d68('0x4c')],null))[_0x8d68('0x27')](respondWithResult(_0x1280e2,null))[_0x8d68('0x47')](handleError(_0x1280e2,null));};exports[_0x8d68('0x26')]=function(_0x3161fb,_0x551f7f){return db[_0x8d68('0x2e')][_0x8d68('0x4a')]({'where':{'id':_0x3161fb[_0x8d68('0x49')]['id']}})[_0x8d68('0x27')](handleEntityNotFound(_0x551f7f,null))[_0x8d68('0x27')](removeEntity(_0x551f7f,null))['catch'](handleError(_0x551f7f,null));};
\ No newline at end of file
index 17541a0..eb9f197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc303=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Template','tools_templates','lodash','util','../../config/logger','api'];(function(_0x2cd1fb,_0x291f55){var _0x48fd2b=function(_0x18e23e){while(--_0x18e23e){_0x2cd1fb['push'](_0x2cd1fb['shift']());}};_0x48fd2b(++_0x291f55);}(_0xc303,0x19c));var _0x3c30=function(_0x27e811,_0x20137c){_0x27e811=_0x27e811-0x0;var _0x1627fa=_0xc303[_0x27e811];return _0x1627fa;};'use strict';var _=require(_0x3c30('0x0'));var util=require(_0x3c30('0x1'));var logger=require(_0x3c30('0x2'))(_0x3c30('0x3'));var moment=require('moment');var BPromise=require(_0x3c30('0x4'));var rp=require(_0x3c30('0x5'));var fs=require('fs');var path=require(_0x3c30('0x6'));var rimraf=require(_0x3c30('0x7'));var config=require(_0x3c30('0x8'));var attributes=require('./template.attributes');module[_0x3c30('0x9')]=function(_0x350d76,_0x2897dd){return _0x350d76[_0x3c30('0xa')](_0x3c30('0xb'),attributes,{'tableName':_0x3c30('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8aa0=['util','../../config/logger','api','moment','request-promise','path','rimraf','./template.attributes','exports','define'];(function(_0xf7800f,_0x240f1d){var _0x8cd67c=function(_0x314b09){while(--_0x314b09){_0xf7800f['push'](_0xf7800f['shift']());}};_0x8cd67c(++_0x240f1d);}(_0x8aa0,0x1c2));var _0x08aa=function(_0x26866b,_0x2bb2ea){_0x26866b=_0x26866b-0x0;var _0x2a7e49=_0x8aa0[_0x26866b];return _0x2a7e49;};'use strict';var _=require('lodash');var util=require(_0x08aa('0x0'));var logger=require(_0x08aa('0x1'))(_0x08aa('0x2'));var moment=require(_0x08aa('0x3'));var BPromise=require('bluebird');var rp=require(_0x08aa('0x4'));var fs=require('fs');var path=require(_0x08aa('0x5'));var rimraf=require(_0x08aa('0x6'));var config=require('../../config/environment');var attributes=require(_0x08aa('0x7'));module[_0x08aa('0x8')]=function(_0x563f29,_0x470f6f){return _0x563f29[_0x08aa('0x9')]('Template',attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3a6822f..f74a80d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a4=['../../config/environment','jayson/promise','http','then','info','Template,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','GetTemplate','Template','findAll','where','options','limit','include','model','attributes','map','debug','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x2f6233,_0x90172){var _0x1c9c36=function(_0x3ac680){while(--_0x3ac680){_0x2f6233['push'](_0x2f6233['shift']());}};_0x1c9c36(++_0x90172);}(_0x02a4,0x19d));var _0x402a=function(_0x4ed301,_0xa7fd81){_0x4ed301=_0x4ed301-0x0;var _0xddb5a8=_0x02a4[_0x4ed301];return _0xddb5a8;};'use strict';var _=require(_0x402a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x402a('0x1'));var rs=require(_0x402a('0x2'));var fs=require('fs');var Redis=require(_0x402a('0x3'));var db=require(_0x402a('0x4'))['db'];var utils=require(_0x402a('0x5'));var logger=require('../../config/logger')(_0x402a('0x6'));var config=require(_0x402a('0x7'));var jayson=require(_0x402a('0x8'));var client=jayson['client'][_0x402a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x26bae3,_0x1ca2fc,_0x4e24e8){return new BPromise(function(_0x184631,_0x199c0d){return client['request'](_0x26bae3,_0x4e24e8)[_0x402a('0xa')](function(_0x1ba5af){logger[_0x402a('0xb')](_0x402a('0xc'),_0x1ca2fc,'request\x20sent');logger['debug']('Template,\x20%s,\x20%s,\x20%s',_0x1ca2fc,_0x402a('0xd'),JSON[_0x402a('0xe')](_0x1ba5af));if(_0x1ba5af['error']){if(_0x1ba5af['error'][_0x402a('0xf')]===0x1f4){logger[_0x402a('0x10')]('Template,\x20%s,\x20%s',_0x1ca2fc,_0x1ba5af[_0x402a('0x10')][_0x402a('0x11')]);return _0x199c0d(_0x1ba5af[_0x402a('0x10')]['message']);}logger['error'](_0x402a('0xc'),_0x1ca2fc,_0x1ba5af[_0x402a('0x10')][_0x402a('0x11')]);return _0x184631(_0x1ba5af[_0x402a('0x10')][_0x402a('0x11')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x1ca2fc,_0x402a('0xd'));_0x184631(_0x1ba5af['result'][_0x402a('0x11')]);}})[_0x402a('0x12')](function(_0x387ab8){logger[_0x402a('0x10')]('Template,\x20%s,\x20%s',_0x1ca2fc,_0x387ab8);_0x199c0d(_0x387ab8);});});}exports[_0x402a('0x13')]=function(_0x4d4941){var _0xb8ba20=this;return new Promise(function(_0x3df24a,_0x2ddca3){return db[_0x402a('0x14')][_0x402a('0x15')]({'raw':_0x4d4941['options']?_0x4d4941['options']['raw']===undefined?!![]:![]:!![],'where':_0x4d4941['options']?_0x4d4941['options'][_0x402a('0x16')]||null:null,'attributes':_0x4d4941[_0x402a('0x17')]?_0x4d4941[_0x402a('0x17')]['attributes']||null:null,'limit':_0x4d4941[_0x402a('0x17')]?_0x4d4941[_0x402a('0x17')][_0x402a('0x18')]||null:null,'include':_0x4d4941[_0x402a('0x17')]?_0x4d4941['options'][_0x402a('0x19')]?_['map'](_0x4d4941[_0x402a('0x17')][_0x402a('0x19')],function(_0x1022b2){return{'model':db[_0x1022b2[_0x402a('0x1a')]],'as':_0x1022b2['as'],'attributes':_0x1022b2[_0x402a('0x1b')],'include':_0x1022b2['include']?_[_0x402a('0x1c')](_0x1022b2[_0x402a('0x19')],function(_0x521a7e){return{'model':db[_0x521a7e[_0x402a('0x1a')]],'as':_0x521a7e['as'],'attributes':_0x521a7e['attributes'],'include':_0x521a7e[_0x402a('0x19')]?_[_0x402a('0x1c')](_0x521a7e['include'],function(_0x5edbdc){return{'model':db[_0x5edbdc[_0x402a('0x1a')]],'as':_0x5edbdc['as'],'attributes':_0x5edbdc['attributes']};}):[]};}):[]};}):[]:[]})[_0x402a('0xa')](function(_0x568956){logger[_0x402a('0xb')]('GetTemplate',_0x4d4941);logger[_0x402a('0x1d')]('GetTemplate',_0x4d4941,JSON['stringify'](_0x568956));_0x3df24a(_0x568956);})[_0x402a('0x12')](function(_0x479e18){logger[_0x402a('0x10')](_0x402a('0x13'),_0x479e18['message'],_0x4d4941);_0x2ddca3(_0xb8ba20[_0x402a('0x10')](0x1f4,_0x479e18[_0x402a('0x11')]));});});};
\ No newline at end of file
+var _0x188d=['stringify','code','error','message','result','catch','GetTemplate','Template','findAll','options','raw','where','attributes','map','include','model','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Template,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xd820de,_0x464700){var _0x47b0ae=function(_0x574cce){while(--_0x574cce){_0xd820de['push'](_0xd820de['shift']());}};_0x47b0ae(++_0x464700);}(_0x188d,0xdc));var _0xd188=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0x188d[_0x13ce0c];return _0x4388fb;};'use strict';var _=require(_0xd188('0x0'));var util=require('util');var moment=require(_0xd188('0x1'));var BPromise=require(_0xd188('0x2'));var rs=require(_0xd188('0x3'));var fs=require('fs');var Redis=require(_0xd188('0x4'));var db=require(_0xd188('0x5'))['db'];var utils=require(_0xd188('0x6'));var logger=require(_0xd188('0x7'))(_0xd188('0x8'));var config=require(_0xd188('0x9'));var jayson=require(_0xd188('0xa'));var client=jayson[_0xd188('0xb')][_0xd188('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42b62c,_0x3b4ca2,_0x2aaa97){return new BPromise(function(_0x3d5694,_0x2640a3){return client['request'](_0x42b62c,_0x2aaa97)[_0xd188('0xd')](function(_0x3f5c9c){logger[_0xd188('0xe')](_0xd188('0xf'),_0x3b4ca2,_0xd188('0x10'));logger[_0xd188('0x11')]('Template,\x20%s,\x20%s,\x20%s',_0x3b4ca2,'request\x20sent',JSON[_0xd188('0x12')](_0x3f5c9c));if(_0x3f5c9c['error']){if(_0x3f5c9c['error'][_0xd188('0x13')]===0x1f4){logger[_0xd188('0x14')](_0xd188('0xf'),_0x3b4ca2,_0x3f5c9c[_0xd188('0x14')][_0xd188('0x15')]);return _0x2640a3(_0x3f5c9c[_0xd188('0x14')][_0xd188('0x15')]);}logger[_0xd188('0x14')](_0xd188('0xf'),_0x3b4ca2,_0x3f5c9c[_0xd188('0x14')][_0xd188('0x15')]);return _0x3d5694(_0x3f5c9c[_0xd188('0x14')][_0xd188('0x15')]);}else{logger[_0xd188('0xe')](_0xd188('0xf'),_0x3b4ca2,_0xd188('0x10'));_0x3d5694(_0x3f5c9c[_0xd188('0x16')][_0xd188('0x15')]);}})[_0xd188('0x17')](function(_0x48150b){logger[_0xd188('0x14')]('Template,\x20%s,\x20%s',_0x3b4ca2,_0x48150b);_0x2640a3(_0x48150b);});});}exports[_0xd188('0x18')]=function(_0x8e98f7){var _0x1bd6cb=this;return new Promise(function(_0x3eab48,_0x1ce7be){return db[_0xd188('0x19')][_0xd188('0x1a')]({'raw':_0x8e98f7[_0xd188('0x1b')]?_0x8e98f7[_0xd188('0x1b')][_0xd188('0x1c')]===undefined?!![]:![]:!![],'where':_0x8e98f7['options']?_0x8e98f7[_0xd188('0x1b')][_0xd188('0x1d')]||null:null,'attributes':_0x8e98f7[_0xd188('0x1b')]?_0x8e98f7[_0xd188('0x1b')][_0xd188('0x1e')]||null:null,'limit':_0x8e98f7[_0xd188('0x1b')]?_0x8e98f7['options']['limit']||null:null,'include':_0x8e98f7['options']?_0x8e98f7[_0xd188('0x1b')]['include']?_[_0xd188('0x1f')](_0x8e98f7['options'][_0xd188('0x20')],function(_0x179a57){return{'model':db[_0x179a57['model']],'as':_0x179a57['as'],'attributes':_0x179a57[_0xd188('0x1e')],'include':_0x179a57[_0xd188('0x20')]?_[_0xd188('0x1f')](_0x179a57[_0xd188('0x20')],function(_0x10c43d){return{'model':db[_0x10c43d[_0xd188('0x21')]],'as':_0x10c43d['as'],'attributes':_0x10c43d[_0xd188('0x1e')],'include':_0x10c43d[_0xd188('0x20')]?_[_0xd188('0x1f')](_0x10c43d[_0xd188('0x20')],function(_0x3b43cc){return{'model':db[_0x3b43cc['model']],'as':_0x3b43cc['as'],'attributes':_0x3b43cc['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x340f17){logger[_0xd188('0xe')]('GetTemplate',_0x8e98f7);logger[_0xd188('0x11')](_0xd188('0x18'),_0x8e98f7,JSON[_0xd188('0x12')](_0x340f17));_0x3eab48(_0x340f17);})['catch'](function(_0x3002b2){logger[_0xd188('0x14')](_0xd188('0x18'),_0x3002b2[_0xd188('0x15')],_0x8e98f7);_0x1ce7be(_0x1bd6cb[_0xd188('0x14')](0x1f4,_0x3002b2[_0xd188('0x15')]));});});};
\ No newline at end of file
index ac80ee4..9444199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe354=['index','show','getAllConditions','getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','put','/:id','update','delete','destroy','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated'];(function(_0x45a7f2,_0xf1c75c){var _0x30f9ce=function(_0x5312d7){while(--_0x5312d7){_0x45a7f2['push'](_0x45a7f2['shift']());}};_0x30f9ce(++_0xf1c75c);}(_0xe354,0x187));var _0x4e35=function(_0x4218d3,_0x534b6e){_0x4218d3=_0x4218d3-0x0;var _0xad94ee=_0xe354[_0x4218d3];return _0xad94ee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4e35('0x0'));var timeout=require(_0x4e35('0x1'));var express=require('express');var router=express[_0x4e35('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x4e35('0x3'));var interaction=require(_0x4e35('0x4'));var config=require(_0x4e35('0x5'));var controller=require(_0x4e35('0x6'));router[_0x4e35('0x7')]('/',auth[_0x4e35('0x8')](),controller[_0x4e35('0x9')]);router[_0x4e35('0x7')]('/:id',auth[_0x4e35('0x8')](),controller[_0x4e35('0xa')]);router[_0x4e35('0x7')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0x4e35('0xb')]);router['get']('/:id/any_conditions',auth[_0x4e35('0x8')](),controller[_0x4e35('0xc')]);router[_0x4e35('0x7')](_0x4e35('0xd'),auth[_0x4e35('0x8')](),controller[_0x4e35('0xe')]);router[_0x4e35('0xf')]('/',auth[_0x4e35('0x8')](),controller[_0x4e35('0x10')]);router[_0x4e35('0xf')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0x4e35('0x11')]);router[_0x4e35('0xf')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0x4e35('0x12')]);router[_0x4e35('0xf')](_0x4e35('0xd'),auth[_0x4e35('0x8')](),controller[_0x4e35('0x13')]);router[_0x4e35('0x14')](_0x4e35('0x15'),auth['isAuthenticated'](),controller[_0x4e35('0x16')]);router[_0x4e35('0x17')]('/:id',auth[_0x4e35('0x8')](),controller[_0x4e35('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xe813=['post','addAllCondition','addAnyCondition','addAction','put','/:id','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/all_conditions','/:id/any_conditions','/:id/actions','getActions'];(function(_0x540311,_0x53ca8b){var _0x56beef=function(_0x2cb4e8){while(--_0x2cb4e8){_0x540311['push'](_0x540311['shift']());}};_0x56beef(++_0x53ca8b);}(_0xe813,0x1b2));var _0x3e81=function(_0x43139e,_0x762629){_0x43139e=_0x43139e-0x0;var _0x2bc838=_0xe813[_0x43139e];return _0x2bc838;};'use strict';var multer=require('multer');var util=require(_0x3e81('0x0'));var path=require(_0x3e81('0x1'));var timeout=require(_0x3e81('0x2'));var express=require('express');var router=express[_0x3e81('0x3')]();var fs_extra=require(_0x3e81('0x4'));var auth=require(_0x3e81('0x5'));var interaction=require(_0x3e81('0x6'));var config=require(_0x3e81('0x7'));var controller=require('./trigger.controller');router[_0x3e81('0x8')]('/',auth[_0x3e81('0x9')](),controller[_0x3e81('0xa')]);router[_0x3e81('0x8')]('/:id',auth[_0x3e81('0x9')](),controller[_0x3e81('0xb')]);router[_0x3e81('0x8')](_0x3e81('0xc'),auth['isAuthenticated'](),controller['getAllConditions']);router[_0x3e81('0x8')](_0x3e81('0xd'),auth[_0x3e81('0x9')](),controller['getAnyConditions']);router['get'](_0x3e81('0xe'),auth[_0x3e81('0x9')](),controller[_0x3e81('0xf')]);router['post']('/',auth[_0x3e81('0x9')](),controller['create']);router[_0x3e81('0x10')]('/:id/all_conditions',auth[_0x3e81('0x9')](),controller[_0x3e81('0x11')]);router[_0x3e81('0x10')](_0x3e81('0xd'),auth[_0x3e81('0x9')](),controller[_0x3e81('0x12')]);router[_0x3e81('0x10')]('/:id/actions',auth[_0x3e81('0x9')](),controller[_0x3e81('0x13')]);router[_0x3e81('0x14')](_0x3e81('0x15'),auth[_0x3e81('0x9')](),controller[_0x3e81('0x16')]);router['delete'](_0x3e81('0x15'),auth[_0x3e81('0x9')](),controller[_0x3e81('0x17')]);module[_0x3e81('0x18')]=router;
\ No newline at end of file
index c54bc46..e864e41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36be=['sequelize','exports','STRING','BOOLEAN'];(function(_0x3f3572,_0x3598b1){var _0x2dd753=function(_0x3704c8){while(--_0x3704c8){_0x3f3572['push'](_0x3f3572['shift']());}};_0x2dd753(++_0x3598b1);}(_0x36be,0x198));var _0xe36b=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x36be[_0x46698a];return _0x356db0;};'use strict';var Sequelize=require(_0xe36b('0x0'));module[_0xe36b('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe36b('0x2')]},'description':{'type':Sequelize[_0xe36b('0x2')]},'status':{'type':Sequelize[_0xe36b('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf20a=['exports','STRING','BOOLEAN'];(function(_0x55f462,_0xfee74c){var _0x2935fb=function(_0x84349e){while(--_0x84349e){_0x55f462['push'](_0x55f462['shift']());}};_0x2935fb(++_0xfee74c);}(_0xf20a,0x15c));var _0xaf20=function(_0x5d8021,_0x2ca412){_0x5d8021=_0x5d8021-0x0;var _0x43799d=_0xf20a[_0x5d8021];return _0x43799d;};'use strict';var Sequelize=require('sequelize');module[_0xaf20('0x0')]={'name':{'type':Sequelize[_0xaf20('0x1')]},'channel':{'type':Sequelize[_0xaf20('0x1')]},'description':{'type':Sequelize[_0xaf20('0x1')]},'status':{'type':Sequelize[_0xaf20('0x2')],'defaultValue':![]}};
\ No newline at end of file
index fac1b6b..9cc6a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb149=['Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','update','destroy','then','get','Triggers','UserProfileResource','stack','name','send','map','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','includeAll','include','Trigger','findAll','catch','show','params','keys','rawAttributes','merge','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','findOne','Condition','order','options','getAllConditions','getAnyConditions','addAction','TriggerId'];(function(_0x95618,_0x5f33b0){var _0x34ab11=function(_0x353d07){while(--_0x353d07){_0x95618['push'](_0x95618['shift']());}};_0x34ab11(++_0x5f33b0);}(_0xb149,0x66));var _0x9b14=function(_0x1ef48d,_0x203c73){_0x1ef48d=_0x1ef48d-0x0;var _0x450096=_0xb149[_0x1ef48d];return _0x450096;};'use strict';var emlformat=require(_0x9b14('0x0'));var rimraf=require(_0x9b14('0x1'));var zipdir=require(_0x9b14('0x2'));var jsonpatch=require(_0x9b14('0x3'));var rp=require(_0x9b14('0x4'));var moment=require(_0x9b14('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9b14('0x6'));var util=require(_0x9b14('0x7'));var path=require(_0x9b14('0x8'));var sox=require(_0x9b14('0x9'));var csv=require(_0x9b14('0xa'));var ejs=require(_0x9b14('0xb'));var fs=require('fs');var fs_extra=require(_0x9b14('0xc'));var _=require('lodash');var squel=require(_0x9b14('0xd'));var crypto=require(_0x9b14('0xe'));var jsforce=require(_0x9b14('0xf'));var deskjs=require(_0x9b14('0x10'));var toCsv=require(_0x9b14('0xa'));var querystring=require(_0x9b14('0x11'));var Papa=require(_0x9b14('0x12'));var Redis=require(_0x9b14('0x13'));var authService=require(_0x9b14('0x14'));var qs=require(_0x9b14('0x15'));var as=require(_0x9b14('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9b14('0x17'))(_0x9b14('0x18'));var utils=require(_0x9b14('0x19'));var config=require(_0x9b14('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b14('0x1b'))['db'];function respondWithStatusCode(_0xed7312,_0x45d41d){_0x45d41d=_0x45d41d||0xcc;return function(_0x5c0506){if(_0x5c0506){return _0xed7312[_0x9b14('0x1c')](_0x45d41d);}return _0xed7312['status'](_0x45d41d)[_0x9b14('0x1d')]();};}function respondWithResult(_0x320df4,_0xe1a0ab){_0xe1a0ab=_0xe1a0ab||0xc8;return function(_0x4ac8e1){if(_0x4ac8e1){return _0x320df4[_0x9b14('0x1e')](_0xe1a0ab)[_0x9b14('0x1f')](_0x4ac8e1);}};}function respondWithFilteredResult(_0x43ed8b,_0x39a1c5){return function(_0x873e69){if(_0x873e69){var _0x5205ee=typeof _0x39a1c5['offset']==='undefined'&&typeof _0x39a1c5[_0x9b14('0x20')]===_0x9b14('0x21');var _0x5e948d=_0x873e69[_0x9b14('0x22')];var _0x4aeb15=_0x5205ee?0x0:_0x39a1c5[_0x9b14('0x23')];var _0x523135=_0x5205ee?_0x873e69[_0x9b14('0x22')]:_0x39a1c5[_0x9b14('0x23')]+_0x39a1c5['limit'];var _0x20793b;if(_0x523135>=_0x5e948d){_0x523135=_0x5e948d;_0x20793b=0xc8;}else{_0x20793b=0xce;}_0x43ed8b[_0x9b14('0x1e')](_0x20793b);return _0x43ed8b[_0x9b14('0x24')](_0x9b14('0x25'),_0x4aeb15+'-'+_0x523135+'/'+_0x5e948d)['json'](_0x873e69);}return null;};}function patchUpdates(_0x1e7ecf){return function(_0x3f8c29){try{jsonpatch[_0x9b14('0x26')](_0x3f8c29,_0x1e7ecf,!![]);}catch(_0x336c7e){return BPromise[_0x9b14('0x27')](_0x336c7e);}return _0x3f8c29['save']();};}function saveUpdates(_0x437f0,_0x2bb247){return function(_0x1ca2c8){if(_0x1ca2c8){return _0x1ca2c8[_0x9b14('0x28')](_0x437f0)['then'](function(_0x54ba6){return _0x54ba6;});}return null;};}function removeEntity(_0x4f1e06,_0x330014){return function(_0x566386){if(_0x566386){return _0x566386[_0x9b14('0x29')]()[_0x9b14('0x2a')](function(){var _0xdd5fbc=_0x566386[_0x9b14('0x2b')]({'plain':!![]});var _0x1e219b=_0x9b14('0x2c');return db[_0x9b14('0x2d')][_0x9b14('0x29')]({'where':{'type':_0x1e219b,'resourceId':_0xdd5fbc['id']}})[_0x9b14('0x2a')](function(){return _0x566386;});})[_0x9b14('0x2a')](function(){_0x4f1e06[_0x9b14('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37d79d,_0x379d33){return function(_0x23469e){if(!_0x23469e){_0x37d79d['sendStatus'](0x194);}return _0x23469e;};}function handleError(_0x272fc6,_0x3e84a2){_0x3e84a2=_0x3e84a2||0x1f4;return function(_0x33fc48){logger['error'](_0x33fc48[_0x9b14('0x2e')]);if(_0x33fc48[_0x9b14('0x2f')]){delete _0x33fc48['name'];}_0x272fc6['status'](_0x3e84a2)[_0x9b14('0x30')](_0x33fc48);};}exports['index']=function(_0x43e347,_0x5e1d12){var _0x1f7b64={},_0x74b9e2={},_0x88b3df={'count':0x0,'rows':[]};var _0x1a0c0a=_[_0x9b14('0x31')](db['Trigger']['rawAttributes'],function(_0xdd61b9){return{'name':_0xdd61b9['fieldName'],'type':_0xdd61b9['type']['key']};});_0x74b9e2['model']=_[_0x9b14('0x31')](_0x1a0c0a,_0x9b14('0x2f'));_0x74b9e2['query']=_['keys'](_0x43e347[_0x9b14('0x32')]);_0x74b9e2[_0x9b14('0x33')]=_[_0x9b14('0x34')](_0x74b9e2['model'],_0x74b9e2[_0x9b14('0x32')]);_0x1f7b64[_0x9b14('0x35')]=_[_0x9b14('0x34')](_0x74b9e2[_0x9b14('0x36')],qs[_0x9b14('0x37')](_0x43e347[_0x9b14('0x32')][_0x9b14('0x37')]));_0x1f7b64['attributes']=_0x1f7b64[_0x9b14('0x35')][_0x9b14('0x38')]?_0x1f7b64[_0x9b14('0x35')]:_0x74b9e2[_0x9b14('0x36')];if(!_0x43e347[_0x9b14('0x32')][_0x9b14('0x39')](_0x9b14('0x3a'))){_0x1f7b64[_0x9b14('0x20')]=qs[_0x9b14('0x20')](_0x43e347[_0x9b14('0x32')][_0x9b14('0x20')]);_0x1f7b64[_0x9b14('0x23')]=qs[_0x9b14('0x23')](_0x43e347['query'][_0x9b14('0x23')]);}_0x1f7b64['order']=qs[_0x9b14('0x3b')](_0x43e347[_0x9b14('0x32')]['sort']);_0x1f7b64[_0x9b14('0x3c')]=qs[_0x9b14('0x33')](_[_0x9b14('0x3d')](_0x43e347[_0x9b14('0x32')],_0x74b9e2[_0x9b14('0x33')]),_0x1a0c0a);if(_0x43e347['query'][_0x9b14('0x3e')]){_0x1f7b64[_0x9b14('0x3c')]=_['merge'](_0x1f7b64[_0x9b14('0x3c')],{'$or':_[_0x9b14('0x31')](_0x1a0c0a,function(_0x4069d6){if(_0x4069d6[_0x9b14('0x3f')]!==_0x9b14('0x40')){var _0x5cea72={};_0x5cea72[_0x4069d6[_0x9b14('0x2f')]]={'$like':'%'+_0x43e347[_0x9b14('0x32')][_0x9b14('0x3e')]+'%'};return _0x5cea72;}})});}_0x1f7b64=_['merge']({},_0x1f7b64,_0x43e347['options']);var _0x528cef={'where':_0x1f7b64['where']};return db['Trigger'][_0x9b14('0x22')](_0x528cef)[_0x9b14('0x2a')](function(_0x4dc9f5){_0x88b3df['count']=_0x4dc9f5;if(_0x43e347[_0x9b14('0x32')][_0x9b14('0x41')]){_0x1f7b64[_0x9b14('0x42')]=[{'all':!![]}];}return db[_0x9b14('0x43')][_0x9b14('0x44')](_0x1f7b64);})['then'](function(_0x55eb90){_0x88b3df['rows']=_0x55eb90;return _0x88b3df;})[_0x9b14('0x2a')](respondWithFilteredResult(_0x5e1d12,_0x1f7b64))[_0x9b14('0x45')](handleError(_0x5e1d12,null));};exports[_0x9b14('0x46')]=function(_0x1508ce,_0x1e1b11){var _0x4c02e6={'raw':![],'where':{'id':_0x1508ce[_0x9b14('0x47')]['id']}},_0x28cc39={};_0x28cc39[_0x9b14('0x36')]=_[_0x9b14('0x48')](db[_0x9b14('0x43')][_0x9b14('0x49')]);_0x28cc39[_0x9b14('0x32')]=_[_0x9b14('0x48')](_0x1508ce[_0x9b14('0x32')]);_0x28cc39[_0x9b14('0x33')]=_[_0x9b14('0x34')](_0x28cc39[_0x9b14('0x36')],_0x28cc39['query']);_0x4c02e6[_0x9b14('0x35')]=_[_0x9b14('0x34')](_0x28cc39[_0x9b14('0x36')],qs[_0x9b14('0x37')](_0x1508ce[_0x9b14('0x32')]['fields']));_0x4c02e6[_0x9b14('0x35')]=_0x4c02e6[_0x9b14('0x35')][_0x9b14('0x38')]?_0x4c02e6[_0x9b14('0x35')]:_0x28cc39[_0x9b14('0x36')];if(_0x1508ce['query'][_0x9b14('0x41')]){_0x4c02e6[_0x9b14('0x42')]=[{'all':!![]}];}_0x4c02e6=_[_0x9b14('0x4a')]({},_0x4c02e6,_0x1508ce['options']);return db[_0x9b14('0x43')][_0x9b14('0x4b')](_0x4c02e6)[_0x9b14('0x2a')](handleEntityNotFound(_0x1e1b11,null))[_0x9b14('0x2a')](respondWithResult(_0x1e1b11,null))['catch'](handleError(_0x1e1b11,null));};exports[_0x9b14('0x4c')]=function(_0x350b14,_0xd1dc41){return db[_0x9b14('0x43')]['create'](_0x350b14['body'],{})[_0x9b14('0x2a')](function(_0x364642){var _0x1c705d=_0x350b14[_0x9b14('0x4d')][_0x9b14('0x2b')]({'plain':!![]});if(!_0x1c705d)throw new Error(_0x9b14('0x4e'));if(_0x1c705d[_0x9b14('0x4f')]===_0x9b14('0x4d')){var _0x368ec3=_0x364642[_0x9b14('0x2b')]({'plain':!![]});var _0x3ccec3=_0x9b14('0x2c');return db[_0x9b14('0x50')][_0x9b14('0x4b')]({'where':{'name':_0x3ccec3,'userProfileId':_0x1c705d[_0x9b14('0x51')]},'raw':!![]})[_0x9b14('0x2a')](function(_0x275999){if(_0x275999&&_0x275999[_0x9b14('0x52')]===0x0){return db[_0x9b14('0x2d')]['create']({'name':_0x368ec3[_0x9b14('0x2f')],'resourceId':_0x368ec3['id'],'type':_0x275999[_0x9b14('0x2f')],'sectionId':_0x275999['id']},{})['then'](function(){return _0x364642;});}else{return _0x364642;}})[_0x9b14('0x45')](function(_0xcbbda6){logger[_0x9b14('0x53')](_0x9b14('0x54'),_0xcbbda6);throw _0xcbbda6;});}return _0x364642;})[_0x9b14('0x2a')](respondWithResult(_0xd1dc41,0xc9))[_0x9b14('0x45')](handleError(_0xd1dc41,null));};exports[_0x9b14('0x28')]=function(_0x4dee66,_0x1b2324){if(_0x4dee66[_0x9b14('0x55')]['id']){delete _0x4dee66['body']['id'];}return db[_0x9b14('0x43')][_0x9b14('0x4b')]({'where':{'id':_0x4dee66[_0x9b14('0x47')]['id']}})[_0x9b14('0x2a')](handleEntityNotFound(_0x1b2324,null))[_0x9b14('0x2a')](saveUpdates(_0x4dee66[_0x9b14('0x55')],null))[_0x9b14('0x2a')](respondWithResult(_0x1b2324,null))[_0x9b14('0x45')](handleError(_0x1b2324,null));};exports['destroy']=function(_0x399ca9,_0x13ad01){return db['Trigger']['find']({'where':{'id':_0x399ca9[_0x9b14('0x47')]['id']}})[_0x9b14('0x2a')](handleEntityNotFound(_0x13ad01,null))[_0x9b14('0x2a')](removeEntity(_0x13ad01,null))[_0x9b14('0x45')](handleError(_0x13ad01,null));};exports[_0x9b14('0x56')]=function(_0x25b0ef,_0xc2bd7c,_0x123209){if(_0x25b0ef[_0x9b14('0x55')]['id']){delete _0x25b0ef[_0x9b14('0x55')]['id'];}return db[_0x9b14('0x43')][_0x9b14('0x4b')]({'where':{'id':_0x25b0ef[_0x9b14('0x47')]['id']}})[_0x9b14('0x2a')](handleEntityNotFound(_0xc2bd7c,null))[_0x9b14('0x2a')](function(_0x1fdcfa){if(_0x1fdcfa){_0x25b0ef[_0x9b14('0x55')][_0x9b14('0x57')]=_0x1fdcfa['id'];return db['Condition'][_0x9b14('0x4c')](_0x25b0ef[_0x9b14('0x55')]);}})[_0x9b14('0x2a')](respondWithResult(_0xc2bd7c,null))['catch'](handleError(_0xc2bd7c,null));};exports[_0x9b14('0x58')]=function(_0x462b4d,_0x210778,_0x1365e9){if(_0x462b4d[_0x9b14('0x55')]['id']){delete _0x462b4d[_0x9b14('0x55')]['id'];}return db[_0x9b14('0x43')]['find']({'where':{'id':_0x462b4d[_0x9b14('0x47')]['id']}})['then'](handleEntityNotFound(_0x210778,null))[_0x9b14('0x2a')](function(_0x308852){if(_0x308852){_0x462b4d[_0x9b14('0x55')][_0x9b14('0x59')]=_0x308852['id'];return db['Condition'][_0x9b14('0x4c')](_0x462b4d[_0x9b14('0x55')]);}})['then'](respondWithResult(_0x210778,null))[_0x9b14('0x45')](handleError(_0x210778,null));};exports['getAllConditions']=function(_0x4a659a,_0x2dc9fc,_0x356d1e){var _0x4b0e64={};var _0x3999d8={};var _0x23e62c;var _0x389903;return db['Trigger'][_0x9b14('0x5a')]({'where':{'id':_0x4a659a['params']['id']}})['then'](handleEntityNotFound(_0x2dc9fc,null))[_0x9b14('0x2a')](function(_0x192684){if(_0x192684){_0x23e62c=_0x192684;_0x3999d8[_0x9b14('0x36')]=_[_0x9b14('0x48')](db[_0x9b14('0x5b')]['rawAttributes']);_0x3999d8[_0x9b14('0x32')]=_[_0x9b14('0x48')](_0x4a659a['query']);_0x3999d8['filters']=_[_0x9b14('0x34')](_0x3999d8[_0x9b14('0x36')],_0x3999d8['query']);_0x4b0e64[_0x9b14('0x35')]=_[_0x9b14('0x34')](_0x3999d8[_0x9b14('0x36')],qs[_0x9b14('0x37')](_0x4a659a['query'][_0x9b14('0x37')]));_0x4b0e64[_0x9b14('0x35')]=_0x4b0e64[_0x9b14('0x35')][_0x9b14('0x38')]?_0x4b0e64['attributes']:_0x3999d8[_0x9b14('0x36')];_0x4b0e64[_0x9b14('0x5c')]=qs['sort'](_0x4a659a[_0x9b14('0x32')]['sort']);_0x4b0e64[_0x9b14('0x3c')]=qs[_0x9b14('0x33')](_[_0x9b14('0x3d')](_0x4a659a[_0x9b14('0x32')],_0x3999d8['filters']));if(_0x4a659a[_0x9b14('0x32')][_0x9b14('0x3e')]){_0x4b0e64['where']=_[_0x9b14('0x4a')](_0x4b0e64['where'],{'$or':_[_0x9b14('0x31')](_0x4b0e64[_0x9b14('0x35')],function(_0x3ca5af){var _0xbf05c8={};_0xbf05c8[_0x3ca5af]={'$like':'%'+_0x4a659a['query'][_0x9b14('0x3e')]+'%'};return _0xbf05c8;})});}_0x4b0e64=_['merge']({},_0x4b0e64,_0x4a659a[_0x9b14('0x5d')]);return _0x23e62c[_0x9b14('0x5e')](_0x4b0e64);}})[_0x9b14('0x2a')](function(_0xf0c4d6){if(_0xf0c4d6){_0x389903=_0xf0c4d6[_0x9b14('0x38')];if(!_0x4a659a[_0x9b14('0x32')][_0x9b14('0x39')](_0x9b14('0x3a'))){_0x4b0e64[_0x9b14('0x20')]=qs[_0x9b14('0x20')](_0x4a659a['query'][_0x9b14('0x20')]);_0x4b0e64[_0x9b14('0x23')]=qs[_0x9b14('0x23')](_0x4a659a[_0x9b14('0x32')][_0x9b14('0x23')]);}return _0x23e62c[_0x9b14('0x5e')](_0x4b0e64);}})['then'](function(_0xada83d){if(_0xada83d){return _0xada83d?{'count':_0x389903,'rows':_0xada83d}:null;}})['then'](respondWithResult(_0x2dc9fc,null))[_0x9b14('0x45')](handleError(_0x2dc9fc,null));};exports[_0x9b14('0x5f')]=function(_0x38bbdb,_0x2f05a,_0x23c1c9){var _0x4c2196={};var _0x2c4c4c={};var _0x2e5e51;var _0x4cb348;return db[_0x9b14('0x43')][_0x9b14('0x5a')]({'where':{'id':_0x38bbdb[_0x9b14('0x47')]['id']}})[_0x9b14('0x2a')](handleEntityNotFound(_0x2f05a,null))[_0x9b14('0x2a')](function(_0x3f9976){if(_0x3f9976){_0x2e5e51=_0x3f9976;_0x2c4c4c[_0x9b14('0x36')]=_['keys'](db[_0x9b14('0x5b')][_0x9b14('0x49')]);_0x2c4c4c['query']=_[_0x9b14('0x48')](_0x38bbdb[_0x9b14('0x32')]);_0x2c4c4c[_0x9b14('0x33')]=_['intersection'](_0x2c4c4c[_0x9b14('0x36')],_0x2c4c4c[_0x9b14('0x32')]);_0x4c2196['attributes']=_[_0x9b14('0x34')](_0x2c4c4c[_0x9b14('0x36')],qs[_0x9b14('0x37')](_0x38bbdb['query'][_0x9b14('0x37')]));_0x4c2196[_0x9b14('0x35')]=_0x4c2196[_0x9b14('0x35')][_0x9b14('0x38')]?_0x4c2196[_0x9b14('0x35')]:_0x2c4c4c['model'];_0x4c2196[_0x9b14('0x5c')]=qs[_0x9b14('0x3b')](_0x38bbdb[_0x9b14('0x32')][_0x9b14('0x3b')]);_0x4c2196[_0x9b14('0x3c')]=qs[_0x9b14('0x33')](_[_0x9b14('0x3d')](_0x38bbdb[_0x9b14('0x32')],_0x2c4c4c[_0x9b14('0x33')]));if(_0x38bbdb[_0x9b14('0x32')][_0x9b14('0x3e')]){_0x4c2196['where']=_['merge'](_0x4c2196['where'],{'$or':_[_0x9b14('0x31')](_0x4c2196[_0x9b14('0x35')],function(_0x50009f){var _0x579213={};_0x579213[_0x50009f]={'$like':'%'+_0x38bbdb[_0x9b14('0x32')][_0x9b14('0x3e')]+'%'};return _0x579213;})});}_0x4c2196=_['merge']({},_0x4c2196,_0x38bbdb[_0x9b14('0x5d')]);return _0x2e5e51[_0x9b14('0x5f')](_0x4c2196);}})['then'](function(_0x39cd4a){if(_0x39cd4a){_0x4cb348=_0x39cd4a[_0x9b14('0x38')];if(!_0x38bbdb[_0x9b14('0x32')][_0x9b14('0x39')](_0x9b14('0x3a'))){_0x4c2196[_0x9b14('0x20')]=qs[_0x9b14('0x20')](_0x38bbdb[_0x9b14('0x32')]['limit']);_0x4c2196[_0x9b14('0x23')]=qs[_0x9b14('0x23')](_0x38bbdb['query'][_0x9b14('0x23')]);}return _0x2e5e51[_0x9b14('0x5f')](_0x4c2196);}})[_0x9b14('0x2a')](function(_0x2a8d08){if(_0x2a8d08){return _0x2a8d08?{'count':_0x4cb348,'rows':_0x2a8d08}:null;}})[_0x9b14('0x2a')](respondWithResult(_0x2f05a,null))['catch'](handleError(_0x2f05a,null));};exports[_0x9b14('0x60')]=function(_0x2b650d,_0x453f50,_0x19dbb6){if(_0x2b650d[_0x9b14('0x55')]['id']){delete _0x2b650d[_0x9b14('0x55')]['id'];}return db['Trigger']['find']({'where':{'id':_0x2b650d[_0x9b14('0x47')]['id']}})[_0x9b14('0x2a')](handleEntityNotFound(_0x453f50,null))[_0x9b14('0x2a')](function(_0x59ebc1){if(_0x59ebc1){_0x2b650d[_0x9b14('0x55')][_0x9b14('0x61')]=_0x59ebc1['id'];return db[_0x9b14('0x62')]['create'](_0x2b650d[_0x9b14('0x55')]);}})[_0x9b14('0x2a')](respondWithResult(_0x453f50,null))[_0x9b14('0x45')](handleError(_0x453f50,null));};exports[_0x9b14('0x63')]=function(_0x59e485,_0x512644,_0xd7eec1){var _0x3a3dac={};var _0x1ebc3e={};var _0x5ec0b9;var _0x1ba190;return db[_0x9b14('0x43')][_0x9b14('0x5a')]({'where':{'id':_0x59e485[_0x9b14('0x47')]['id']}})['then'](handleEntityNotFound(_0x512644,null))[_0x9b14('0x2a')](function(_0x523c96){if(_0x523c96){_0x5ec0b9=_0x523c96;_0x1ebc3e['model']=_['keys'](db[_0x9b14('0x62')]['rawAttributes']);_0x1ebc3e[_0x9b14('0x32')]=_[_0x9b14('0x48')](_0x59e485[_0x9b14('0x32')]);_0x1ebc3e[_0x9b14('0x33')]=_[_0x9b14('0x34')](_0x1ebc3e[_0x9b14('0x36')],_0x1ebc3e['query']);_0x3a3dac[_0x9b14('0x35')]=_[_0x9b14('0x34')](_0x1ebc3e['model'],qs[_0x9b14('0x37')](_0x59e485[_0x9b14('0x32')][_0x9b14('0x37')]));_0x3a3dac['attributes']=_0x3a3dac[_0x9b14('0x35')][_0x9b14('0x38')]?_0x3a3dac[_0x9b14('0x35')]:_0x1ebc3e[_0x9b14('0x36')];_0x3a3dac[_0x9b14('0x5c')]=qs[_0x9b14('0x3b')](_0x59e485[_0x9b14('0x32')][_0x9b14('0x3b')]);_0x3a3dac[_0x9b14('0x3c')]=qs[_0x9b14('0x33')](_[_0x9b14('0x3d')](_0x59e485['query'],_0x1ebc3e[_0x9b14('0x33')]));if(_0x59e485['query']['filter']){_0x3a3dac[_0x9b14('0x3c')]=_[_0x9b14('0x4a')](_0x3a3dac[_0x9b14('0x3c')],{'$or':_['map'](_0x3a3dac[_0x9b14('0x35')],function(_0x576117){var _0x156614={};_0x156614[_0x576117]={'$like':'%'+_0x59e485[_0x9b14('0x32')][_0x9b14('0x3e')]+'%'};return _0x156614;})});}_0x3a3dac=_[_0x9b14('0x4a')]({},_0x3a3dac,_0x59e485[_0x9b14('0x5d')]);return _0x5ec0b9[_0x9b14('0x63')](_0x3a3dac);}})[_0x9b14('0x2a')](function(_0x2837dd){if(_0x2837dd){_0x1ba190=_0x2837dd[_0x9b14('0x38')];if(!_0x59e485[_0x9b14('0x32')]['hasOwnProperty'](_0x9b14('0x3a'))){_0x3a3dac['limit']=qs[_0x9b14('0x20')](_0x59e485['query'][_0x9b14('0x20')]);_0x3a3dac[_0x9b14('0x23')]=qs[_0x9b14('0x23')](_0x59e485[_0x9b14('0x32')][_0x9b14('0x23')]);}return _0x5ec0b9[_0x9b14('0x63')](_0x3a3dac);}})[_0x9b14('0x2a')](function(_0x419767){if(_0x419767){return _0x419767?{'count':_0x1ba190,'rows':_0x419767}:null;}})[_0x9b14('0x2a')](respondWithResult(_0x512644,null))['catch'](handleError(_0x512644,null));};
\ No newline at end of file
+var _0x873f=['Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Triggers','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','options','include','findAll','rows','catch','show','params','Trigger','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','TriggerAllId','addAnyCondition','TriggerAnyId','Condition','getAllConditions','findOne','order','pick','nolimit','getAnyConditions'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x873f,0x122));var _0xf873=function(_0x428ae4,_0x598084){_0x428ae4=_0x428ae4-0x0;var _0x1911a1=_0x873f[_0x428ae4];return _0x1911a1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf873('0x0'));var zipdir=require(_0xf873('0x1'));var jsonpatch=require(_0xf873('0x2'));var rp=require(_0xf873('0x3'));var moment=require('moment');var BPromise=require(_0xf873('0x4'));var Mustache=require(_0xf873('0x5'));var util=require(_0xf873('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xf873('0x7'));var ejs=require(_0xf873('0x8'));var fs=require('fs');var fs_extra=require(_0xf873('0x9'));var _=require(_0xf873('0xa'));var squel=require(_0xf873('0xb'));var crypto=require(_0xf873('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf873('0xd'));var Papa=require(_0xf873('0xe'));var Redis=require(_0xf873('0xf'));var authService=require(_0xf873('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xf873('0x11'));var hardwareService=require(_0xf873('0x12'));var logger=require(_0xf873('0x13'))(_0xf873('0x14'));var utils=require(_0xf873('0x15'));var config=require(_0xf873('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c024a,_0xfce7b){_0xfce7b=_0xfce7b||0xcc;return function(_0x306d0e){if(_0x306d0e){return _0x3c024a[_0xf873('0x17')](_0xfce7b);}return _0x3c024a[_0xf873('0x18')](_0xfce7b)[_0xf873('0x19')]();};}function respondWithResult(_0xdacaca,_0x1dce78){_0x1dce78=_0x1dce78||0xc8;return function(_0x4ba378){if(_0x4ba378){return _0xdacaca[_0xf873('0x18')](_0x1dce78)[_0xf873('0x1a')](_0x4ba378);}};}function respondWithFilteredResult(_0xfdab53,_0x227ddd){return function(_0x244fce){if(_0x244fce){var _0x32109a=typeof _0x227ddd[_0xf873('0x1b')]===_0xf873('0x1c')&&typeof _0x227ddd[_0xf873('0x1d')]===_0xf873('0x1c');var _0x167e78=_0x244fce[_0xf873('0x1e')];var _0x171ad5=_0x32109a?0x0:_0x227ddd[_0xf873('0x1b')];var _0x31ea39=_0x32109a?_0x244fce[_0xf873('0x1e')]:_0x227ddd['offset']+_0x227ddd[_0xf873('0x1d')];var _0x1690a1;if(_0x31ea39>=_0x167e78){_0x31ea39=_0x167e78;_0x1690a1=0xc8;}else{_0x1690a1=0xce;}_0xfdab53['status'](_0x1690a1);return _0xfdab53[_0xf873('0x1f')](_0xf873('0x20'),_0x171ad5+'-'+_0x31ea39+'/'+_0x167e78)[_0xf873('0x1a')](_0x244fce);}return null;};}function patchUpdates(_0x3a8844){return function(_0x25484c){try{jsonpatch[_0xf873('0x21')](_0x25484c,_0x3a8844,!![]);}catch(_0x475104){return BPromise[_0xf873('0x22')](_0x475104);}return _0x25484c[_0xf873('0x23')]();};}function saveUpdates(_0x33ffbe,_0x3720aa){return function(_0x367234){if(_0x367234){return _0x367234['update'](_0x33ffbe)[_0xf873('0x24')](function(_0x4a76c8){return _0x4a76c8;});}return null;};}function removeEntity(_0x305899,_0x9d4acd){return function(_0x1e2e42){if(_0x1e2e42){return _0x1e2e42[_0xf873('0x25')]()['then'](function(){var _0x5066bf=_0x1e2e42[_0xf873('0x26')]({'plain':!![]});var _0x191ea8=_0xf873('0x27');return db[_0xf873('0x28')][_0xf873('0x25')]({'where':{'type':_0x191ea8,'resourceId':_0x5066bf['id']}})[_0xf873('0x24')](function(){return _0x1e2e42;});})[_0xf873('0x24')](function(){_0x305899['status'](0xcc)[_0xf873('0x19')]();});}};}function handleEntityNotFound(_0x172821,_0x58f825){return function(_0xec5428){if(!_0xec5428){_0x172821['sendStatus'](0x194);}return _0xec5428;};}function handleError(_0xfe39f1,_0x4f4c72){_0x4f4c72=_0x4f4c72||0x1f4;return function(_0xd93bb8){logger[_0xf873('0x29')](_0xd93bb8[_0xf873('0x2a')]);if(_0xd93bb8[_0xf873('0x2b')]){delete _0xd93bb8[_0xf873('0x2b')];}_0xfe39f1[_0xf873('0x18')](_0x4f4c72)[_0xf873('0x2c')](_0xd93bb8);};}exports[_0xf873('0x2d')]=function(_0x34a564,_0x48c02a){var _0x28e7c4={},_0x1df36e={},_0x1b6afc={'count':0x0,'rows':[]};var _0x5065ee=_[_0xf873('0x2e')](db['Trigger'][_0xf873('0x2f')],function(_0x278d7a){return{'name':_0x278d7a[_0xf873('0x30')],'type':_0x278d7a[_0xf873('0x31')][_0xf873('0x32')]};});_0x1df36e[_0xf873('0x33')]=_[_0xf873('0x2e')](_0x5065ee,_0xf873('0x2b'));_0x1df36e[_0xf873('0x34')]=_[_0xf873('0x35')](_0x34a564[_0xf873('0x34')]);_0x1df36e[_0xf873('0x36')]=_[_0xf873('0x37')](_0x1df36e[_0xf873('0x33')],_0x1df36e[_0xf873('0x34')]);_0x28e7c4[_0xf873('0x38')]=_[_0xf873('0x37')](_0x1df36e[_0xf873('0x33')],qs['fields'](_0x34a564[_0xf873('0x34')][_0xf873('0x39')]));_0x28e7c4['attributes']=_0x28e7c4[_0xf873('0x38')][_0xf873('0x3a')]?_0x28e7c4['attributes']:_0x1df36e[_0xf873('0x33')];if(!_0x34a564['query'][_0xf873('0x3b')]('nolimit')){_0x28e7c4[_0xf873('0x1d')]=qs[_0xf873('0x1d')](_0x34a564[_0xf873('0x34')][_0xf873('0x1d')]);_0x28e7c4[_0xf873('0x1b')]=qs[_0xf873('0x1b')](_0x34a564[_0xf873('0x34')][_0xf873('0x1b')]);}_0x28e7c4['order']=qs['sort'](_0x34a564['query'][_0xf873('0x3c')]);_0x28e7c4[_0xf873('0x3d')]=qs['filters'](_['pick'](_0x34a564[_0xf873('0x34')],_0x1df36e[_0xf873('0x36')]),_0x5065ee);if(_0x34a564['query'][_0xf873('0x3e')]){_0x28e7c4[_0xf873('0x3d')]=_[_0xf873('0x3f')](_0x28e7c4[_0xf873('0x3d')],{'$or':_[_0xf873('0x2e')](_0x5065ee,function(_0x1c5df7){if(_0x1c5df7['type']!=='VIRTUAL'){var _0xfed554={};_0xfed554[_0x1c5df7[_0xf873('0x2b')]]={'$like':'%'+_0x34a564[_0xf873('0x34')]['filter']+'%'};return _0xfed554;}})});}_0x28e7c4=_['merge']({},_0x28e7c4,_0x34a564[_0xf873('0x40')]);var _0x3cb2ca={'where':_0x28e7c4[_0xf873('0x3d')]};return db['Trigger'][_0xf873('0x1e')](_0x3cb2ca)[_0xf873('0x24')](function(_0x2ab07e){_0x1b6afc[_0xf873('0x1e')]=_0x2ab07e;if(_0x34a564[_0xf873('0x34')]['includeAll']){_0x28e7c4[_0xf873('0x41')]=[{'all':!![]}];}return db['Trigger'][_0xf873('0x42')](_0x28e7c4);})['then'](function(_0xba1344){_0x1b6afc[_0xf873('0x43')]=_0xba1344;return _0x1b6afc;})['then'](respondWithFilteredResult(_0x48c02a,_0x28e7c4))[_0xf873('0x44')](handleError(_0x48c02a,null));};exports[_0xf873('0x45')]=function(_0x534e9a,_0x2fb908){var _0x23af2d={'raw':![],'where':{'id':_0x534e9a[_0xf873('0x46')]['id']}},_0x28f519={};_0x28f519['model']=_[_0xf873('0x35')](db[_0xf873('0x47')][_0xf873('0x2f')]);_0x28f519[_0xf873('0x34')]=_['keys'](_0x534e9a[_0xf873('0x34')]);_0x28f519[_0xf873('0x36')]=_[_0xf873('0x37')](_0x28f519[_0xf873('0x33')],_0x28f519[_0xf873('0x34')]);_0x23af2d[_0xf873('0x38')]=_[_0xf873('0x37')](_0x28f519[_0xf873('0x33')],qs[_0xf873('0x39')](_0x534e9a[_0xf873('0x34')][_0xf873('0x39')]));_0x23af2d[_0xf873('0x38')]=_0x23af2d[_0xf873('0x38')][_0xf873('0x3a')]?_0x23af2d[_0xf873('0x38')]:_0x28f519[_0xf873('0x33')];if(_0x534e9a[_0xf873('0x34')][_0xf873('0x48')]){_0x23af2d['include']=[{'all':!![]}];}_0x23af2d=_[_0xf873('0x3f')]({},_0x23af2d,_0x534e9a[_0xf873('0x40')]);return db[_0xf873('0x47')][_0xf873('0x49')](_0x23af2d)[_0xf873('0x24')](handleEntityNotFound(_0x2fb908,null))[_0xf873('0x24')](respondWithResult(_0x2fb908,null))[_0xf873('0x44')](handleError(_0x2fb908,null));};exports[_0xf873('0x4a')]=function(_0x41232a,_0x381e45){return db[_0xf873('0x47')]['create'](_0x41232a['body'],{})[_0xf873('0x24')](function(_0x22939c){var _0x3ecc6a=_0x41232a[_0xf873('0x4b')][_0xf873('0x26')]({'plain':!![]});if(!_0x3ecc6a)throw new Error(_0xf873('0x4c'));if(_0x3ecc6a[_0xf873('0x4d')]===_0xf873('0x4b')){var _0x4707b2=_0x22939c[_0xf873('0x26')]({'plain':!![]});var _0x5dfa8a=_0xf873('0x27');return db[_0xf873('0x4e')][_0xf873('0x49')]({'where':{'name':_0x5dfa8a,'userProfileId':_0x3ecc6a[_0xf873('0x4f')]},'raw':!![]})[_0xf873('0x24')](function(_0x4573e5){if(_0x4573e5&&_0x4573e5[_0xf873('0x50')]===0x0){return db['UserProfileResource'][_0xf873('0x4a')]({'name':_0x4707b2[_0xf873('0x2b')],'resourceId':_0x4707b2['id'],'type':_0x4573e5['name'],'sectionId':_0x4573e5['id']},{})['then'](function(){return _0x22939c;});}else{return _0x22939c;}})[_0xf873('0x44')](function(_0x314d7b){logger['error'](_0xf873('0x51'),_0x314d7b);throw _0x314d7b;});}return _0x22939c;})[_0xf873('0x24')](respondWithResult(_0x381e45,0xc9))[_0xf873('0x44')](handleError(_0x381e45,null));};exports[_0xf873('0x52')]=function(_0x503043,_0x2278bc){if(_0x503043[_0xf873('0x53')]['id']){delete _0x503043[_0xf873('0x53')]['id'];}return db[_0xf873('0x47')][_0xf873('0x49')]({'where':{'id':_0x503043['params']['id']}})[_0xf873('0x24')](handleEntityNotFound(_0x2278bc,null))['then'](saveUpdates(_0x503043['body'],null))[_0xf873('0x24')](respondWithResult(_0x2278bc,null))['catch'](handleError(_0x2278bc,null));};exports[_0xf873('0x25')]=function(_0x589f9d,_0x12c725){return db[_0xf873('0x47')][_0xf873('0x49')]({'where':{'id':_0x589f9d['params']['id']}})[_0xf873('0x24')](handleEntityNotFound(_0x12c725,null))[_0xf873('0x24')](removeEntity(_0x12c725,null))['catch'](handleError(_0x12c725,null));};exports['addAllCondition']=function(_0x286ce8,_0x394875,_0x415fca){if(_0x286ce8[_0xf873('0x53')]['id']){delete _0x286ce8['body']['id'];}return db[_0xf873('0x47')][_0xf873('0x49')]({'where':{'id':_0x286ce8[_0xf873('0x46')]['id']}})['then'](handleEntityNotFound(_0x394875,null))[_0xf873('0x24')](function(_0x38a80f){if(_0x38a80f){_0x286ce8['body'][_0xf873('0x54')]=_0x38a80f['id'];return db['Condition'][_0xf873('0x4a')](_0x286ce8[_0xf873('0x53')]);}})[_0xf873('0x24')](respondWithResult(_0x394875,null))[_0xf873('0x44')](handleError(_0x394875,null));};exports[_0xf873('0x55')]=function(_0x2f91bd,_0x3c7ac0,_0x3baaaf){if(_0x2f91bd[_0xf873('0x53')]['id']){delete _0x2f91bd[_0xf873('0x53')]['id'];}return db[_0xf873('0x47')][_0xf873('0x49')]({'where':{'id':_0x2f91bd['params']['id']}})[_0xf873('0x24')](handleEntityNotFound(_0x3c7ac0,null))['then'](function(_0x1bf644){if(_0x1bf644){_0x2f91bd[_0xf873('0x53')][_0xf873('0x56')]=_0x1bf644['id'];return db[_0xf873('0x57')]['create'](_0x2f91bd[_0xf873('0x53')]);}})[_0xf873('0x24')](respondWithResult(_0x3c7ac0,null))['catch'](handleError(_0x3c7ac0,null));};exports[_0xf873('0x58')]=function(_0x17bb68,_0x4de6e2,_0x33b9b2){var _0x557872={};var _0x4763de={};var _0x511518;var _0x3cc41a;return db[_0xf873('0x47')][_0xf873('0x59')]({'where':{'id':_0x17bb68[_0xf873('0x46')]['id']}})[_0xf873('0x24')](handleEntityNotFound(_0x4de6e2,null))[_0xf873('0x24')](function(_0x1bcf0c){if(_0x1bcf0c){_0x511518=_0x1bcf0c;_0x4763de['model']=_[_0xf873('0x35')](db[_0xf873('0x57')]['rawAttributes']);_0x4763de['query']=_[_0xf873('0x35')](_0x17bb68[_0xf873('0x34')]);_0x4763de[_0xf873('0x36')]=_['intersection'](_0x4763de['model'],_0x4763de[_0xf873('0x34')]);_0x557872[_0xf873('0x38')]=_[_0xf873('0x37')](_0x4763de['model'],qs[_0xf873('0x39')](_0x17bb68[_0xf873('0x34')][_0xf873('0x39')]));_0x557872['attributes']=_0x557872['attributes']['length']?_0x557872[_0xf873('0x38')]:_0x4763de['model'];_0x557872[_0xf873('0x5a')]=qs[_0xf873('0x3c')](_0x17bb68[_0xf873('0x34')][_0xf873('0x3c')]);_0x557872['where']=qs[_0xf873('0x36')](_[_0xf873('0x5b')](_0x17bb68[_0xf873('0x34')],_0x4763de['filters']));if(_0x17bb68['query'][_0xf873('0x3e')]){_0x557872[_0xf873('0x3d')]=_[_0xf873('0x3f')](_0x557872[_0xf873('0x3d')],{'$or':_[_0xf873('0x2e')](_0x557872[_0xf873('0x38')],function(_0x1e13ca){var _0x473b77={};_0x473b77[_0x1e13ca]={'$like':'%'+_0x17bb68[_0xf873('0x34')]['filter']+'%'};return _0x473b77;})});}_0x557872=_[_0xf873('0x3f')]({},_0x557872,_0x17bb68[_0xf873('0x40')]);return _0x511518['getAllConditions'](_0x557872);}})[_0xf873('0x24')](function(_0x362c84){if(_0x362c84){_0x3cc41a=_0x362c84[_0xf873('0x3a')];if(!_0x17bb68['query'][_0xf873('0x3b')]('nolimit')){_0x557872[_0xf873('0x1d')]=qs['limit'](_0x17bb68['query'][_0xf873('0x1d')]);_0x557872[_0xf873('0x1b')]=qs['offset'](_0x17bb68[_0xf873('0x34')][_0xf873('0x1b')]);}return _0x511518['getAllConditions'](_0x557872);}})[_0xf873('0x24')](function(_0x5dce4e){if(_0x5dce4e){return _0x5dce4e?{'count':_0x3cc41a,'rows':_0x5dce4e}:null;}})[_0xf873('0x24')](respondWithResult(_0x4de6e2,null))['catch'](handleError(_0x4de6e2,null));};exports['getAnyConditions']=function(_0x34ef46,_0x59d462,_0x35f0bc){var _0x5b98cc={};var _0x3308dd={};var _0x15e12f;var _0x499260;return db[_0xf873('0x47')]['findOne']({'where':{'id':_0x34ef46[_0xf873('0x46')]['id']}})[_0xf873('0x24')](handleEntityNotFound(_0x59d462,null))['then'](function(_0x47643f){if(_0x47643f){_0x15e12f=_0x47643f;_0x3308dd['model']=_[_0xf873('0x35')](db[_0xf873('0x57')]['rawAttributes']);_0x3308dd['query']=_['keys'](_0x34ef46[_0xf873('0x34')]);_0x3308dd['filters']=_[_0xf873('0x37')](_0x3308dd['model'],_0x3308dd[_0xf873('0x34')]);_0x5b98cc[_0xf873('0x38')]=_['intersection'](_0x3308dd[_0xf873('0x33')],qs[_0xf873('0x39')](_0x34ef46[_0xf873('0x34')][_0xf873('0x39')]));_0x5b98cc[_0xf873('0x38')]=_0x5b98cc[_0xf873('0x38')][_0xf873('0x3a')]?_0x5b98cc[_0xf873('0x38')]:_0x3308dd[_0xf873('0x33')];_0x5b98cc[_0xf873('0x5a')]=qs['sort'](_0x34ef46[_0xf873('0x34')][_0xf873('0x3c')]);_0x5b98cc[_0xf873('0x3d')]=qs[_0xf873('0x36')](_[_0xf873('0x5b')](_0x34ef46['query'],_0x3308dd[_0xf873('0x36')]));if(_0x34ef46[_0xf873('0x34')]['filter']){_0x5b98cc[_0xf873('0x3d')]=_[_0xf873('0x3f')](_0x5b98cc[_0xf873('0x3d')],{'$or':_[_0xf873('0x2e')](_0x5b98cc[_0xf873('0x38')],function(_0x4111fa){var _0x7ca57e={};_0x7ca57e[_0x4111fa]={'$like':'%'+_0x34ef46['query']['filter']+'%'};return _0x7ca57e;})});}_0x5b98cc=_['merge']({},_0x5b98cc,_0x34ef46['options']);return _0x15e12f['getAnyConditions'](_0x5b98cc);}})[_0xf873('0x24')](function(_0x1952c9){if(_0x1952c9){_0x499260=_0x1952c9[_0xf873('0x3a')];if(!_0x34ef46[_0xf873('0x34')][_0xf873('0x3b')](_0xf873('0x5c'))){_0x5b98cc[_0xf873('0x1d')]=qs[_0xf873('0x1d')](_0x34ef46[_0xf873('0x34')][_0xf873('0x1d')]);_0x5b98cc[_0xf873('0x1b')]=qs['offset'](_0x34ef46[_0xf873('0x34')]['offset']);}return _0x15e12f[_0xf873('0x5d')](_0x5b98cc);}})[_0xf873('0x24')](function(_0x5cd341){if(_0x5cd341){return _0x5cd341?{'count':_0x499260,'rows':_0x5cd341}:null;}})[_0xf873('0x24')](respondWithResult(_0x59d462,null))[_0xf873('0x44')](handleError(_0x59d462,null));};exports['addAction']=function(_0x6d3629,_0x212a15,_0x8978bc){if(_0x6d3629['body']['id']){delete _0x6d3629[_0xf873('0x53')]['id'];}return db[_0xf873('0x47')]['find']({'where':{'id':_0x6d3629[_0xf873('0x46')]['id']}})['then'](handleEntityNotFound(_0x212a15,null))['then'](function(_0x150db1){if(_0x150db1){_0x6d3629[_0xf873('0x53')]['TriggerId']=_0x150db1['id'];return db[_0xf873('0x5e')][_0xf873('0x4a')](_0x6d3629['body']);}})[_0xf873('0x24')](respondWithResult(_0x212a15,null))['catch'](handleError(_0x212a15,null));};exports[_0xf873('0x5f')]=function(_0x1aae78,_0x181afb,_0x899dda){var _0x533b32={};var _0x349247={};var _0x336c72;var _0x58a073;return db[_0xf873('0x47')][_0xf873('0x59')]({'where':{'id':_0x1aae78[_0xf873('0x46')]['id']}})[_0xf873('0x24')](handleEntityNotFound(_0x181afb,null))[_0xf873('0x24')](function(_0x374f0c){if(_0x374f0c){_0x336c72=_0x374f0c;_0x349247['model']=_[_0xf873('0x35')](db[_0xf873('0x5e')][_0xf873('0x2f')]);_0x349247[_0xf873('0x34')]=_[_0xf873('0x35')](_0x1aae78[_0xf873('0x34')]);_0x349247[_0xf873('0x36')]=_[_0xf873('0x37')](_0x349247['model'],_0x349247[_0xf873('0x34')]);_0x533b32[_0xf873('0x38')]=_[_0xf873('0x37')](_0x349247['model'],qs[_0xf873('0x39')](_0x1aae78[_0xf873('0x34')][_0xf873('0x39')]));_0x533b32['attributes']=_0x533b32[_0xf873('0x38')][_0xf873('0x3a')]?_0x533b32[_0xf873('0x38')]:_0x349247[_0xf873('0x33')];_0x533b32[_0xf873('0x5a')]=qs[_0xf873('0x3c')](_0x1aae78[_0xf873('0x34')][_0xf873('0x3c')]);_0x533b32[_0xf873('0x3d')]=qs[_0xf873('0x36')](_[_0xf873('0x5b')](_0x1aae78[_0xf873('0x34')],_0x349247[_0xf873('0x36')]));if(_0x1aae78[_0xf873('0x34')][_0xf873('0x3e')]){_0x533b32['where']=_[_0xf873('0x3f')](_0x533b32[_0xf873('0x3d')],{'$or':_[_0xf873('0x2e')](_0x533b32[_0xf873('0x38')],function(_0x5b2659){var _0x485a7a={};_0x485a7a[_0x5b2659]={'$like':'%'+_0x1aae78['query']['filter']+'%'};return _0x485a7a;})});}_0x533b32=_[_0xf873('0x3f')]({},_0x533b32,_0x1aae78['options']);return _0x336c72[_0xf873('0x5f')](_0x533b32);}})[_0xf873('0x24')](function(_0x22cce6){if(_0x22cce6){_0x58a073=_0x22cce6[_0xf873('0x3a')];if(!_0x1aae78[_0xf873('0x34')]['hasOwnProperty'](_0xf873('0x5c'))){_0x533b32[_0xf873('0x1d')]=qs[_0xf873('0x1d')](_0x1aae78['query']['limit']);_0x533b32['offset']=qs[_0xf873('0x1b')](_0x1aae78[_0xf873('0x34')][_0xf873('0x1b')]);}return _0x336c72[_0xf873('0x5f')](_0x533b32);}})['then'](function(_0x561df5){if(_0x561df5){return _0x561df5?{'count':_0x58a073,'rows':_0x561df5}:null;}})['then'](respondWithResult(_0x181afb,null))['catch'](handleError(_0x181afb,null));};
\ No newline at end of file
index ea77740..b349a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b1=['./trigger.attributes','exports','Trigger','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3b525b,_0x2701d3){var _0x215bc8=function(_0x6b8719){while(--_0x6b8719){_0x3b525b['push'](_0x3b525b['shift']());}};_0x215bc8(++_0x2701d3);}(_0x72b1,0x16e));var _0x172b=function(_0x2e56fc,_0x6636b0){_0x2e56fc=_0x2e56fc-0x0;var _0x4858c7=_0x72b1[_0x2e56fc];return _0x4858c7;};'use strict';var _=require(_0x172b('0x0'));var util=require('util');var logger=require(_0x172b('0x1'))(_0x172b('0x2'));var moment=require(_0x172b('0x3'));var BPromise=require(_0x172b('0x4'));var rp=require(_0x172b('0x5'));var fs=require('fs');var path=require(_0x172b('0x6'));var rimraf=require(_0x172b('0x7'));var config=require('../../config/environment');var attributes=require(_0x172b('0x8'));module[_0x172b('0x9')]=function(_0x475fd6,_0x222624){return _0x475fd6['define'](_0x172b('0xa'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x394e=['../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x7c66c8,_0x541753){var _0x5f17c0=function(_0x4400f3){while(--_0x4400f3){_0x7c66c8['push'](_0x7c66c8['shift']());}};_0x5f17c0(++_0x541753);}(_0x394e,0x88));var _0xe394=function(_0x327615,_0x128547){_0x327615=_0x327615-0x0;var _0xd86a49=_0x394e[_0x327615];return _0xd86a49;};'use strict';var _=require(_0xe394('0x0'));var util=require(_0xe394('0x1'));var logger=require('../../config/logger')(_0xe394('0x2'));var moment=require(_0xe394('0x3'));var BPromise=require(_0xe394('0x4'));var rp=require(_0xe394('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe394('0x6'));var config=require(_0xe394('0x7'));var attributes=require(_0xe394('0x8'));module[_0xe394('0x9')]=function(_0x2a4db6,_0x272c30){return _0x2a4db6[_0xe394('0xa')](_0xe394('0xb'),attributes,{'tableName':_0xe394('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e85cd7d..76123b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa479=['Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','GetTrigger','Trigger','options','raw','where','attributes','limit','include','model','map','stringify','ShowTrigger','find','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa479,0x13e));var _0x9a47=function(_0x53cfea,_0x5951c6){_0x53cfea=_0x53cfea-0x0;var _0x2131cb=_0xa479[_0x53cfea];return _0x2131cb;};'use strict';var _=require(_0x9a47('0x0'));var util=require(_0x9a47('0x1'));var moment=require(_0x9a47('0x2'));var BPromise=require('bluebird');var rs=require(_0x9a47('0x3'));var fs=require('fs');var Redis=require(_0x9a47('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9a47('0x5'));var logger=require(_0x9a47('0x6'))('rpc');var config=require(_0x9a47('0x7'));var jayson=require(_0x9a47('0x8'));var client=jayson['client'][_0x9a47('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e0f15,_0x396865,_0x1b135b){return new BPromise(function(_0xda3cf9,_0x36048f){return client[_0x9a47('0xa')](_0x1e0f15,_0x1b135b)[_0x9a47('0xb')](function(_0x3e4d57){logger['info'](_0x9a47('0xc'),_0x396865,_0x9a47('0xd'));logger['debug'](_0x9a47('0xe'),_0x396865,_0x9a47('0xd'),JSON['stringify'](_0x3e4d57));if(_0x3e4d57[_0x9a47('0xf')]){if(_0x3e4d57[_0x9a47('0xf')][_0x9a47('0x10')]===0x1f4){logger[_0x9a47('0xf')]('Trigger,\x20%s,\x20%s',_0x396865,_0x3e4d57[_0x9a47('0xf')][_0x9a47('0x11')]);return _0x36048f(_0x3e4d57[_0x9a47('0xf')][_0x9a47('0x11')]);}logger[_0x9a47('0xf')](_0x9a47('0xc'),_0x396865,_0x3e4d57[_0x9a47('0xf')][_0x9a47('0x11')]);return _0xda3cf9(_0x3e4d57[_0x9a47('0xf')][_0x9a47('0x11')]);}else{logger[_0x9a47('0x12')]('Trigger,\x20%s,\x20%s',_0x396865,'request\x20sent');_0xda3cf9(_0x3e4d57['result']['message']);}})[_0x9a47('0x13')](function(_0x4fd966){logger[_0x9a47('0xf')](_0x9a47('0xc'),_0x396865,_0x4fd966);_0x36048f(_0x4fd966);});});}exports[_0x9a47('0x14')]=function(_0x51e88b){var _0x2f466c=this;return new Promise(function(_0x32207e,_0x339fb8){return db[_0x9a47('0x15')]['findAll']({'raw':_0x51e88b[_0x9a47('0x16')]?_0x51e88b[_0x9a47('0x16')][_0x9a47('0x17')]===undefined?!![]:![]:!![],'where':_0x51e88b['options']?_0x51e88b[_0x9a47('0x16')][_0x9a47('0x18')]||null:null,'attributes':_0x51e88b[_0x9a47('0x16')]?_0x51e88b[_0x9a47('0x16')][_0x9a47('0x19')]||null:null,'limit':_0x51e88b[_0x9a47('0x16')]?_0x51e88b[_0x9a47('0x16')][_0x9a47('0x1a')]||null:null,'include':_0x51e88b[_0x9a47('0x16')]?_0x51e88b[_0x9a47('0x16')][_0x9a47('0x1b')]?_['map'](_0x51e88b[_0x9a47('0x16')][_0x9a47('0x1b')],function(_0x4cd5b0){return{'model':db[_0x4cd5b0[_0x9a47('0x1c')]],'as':_0x4cd5b0['as'],'attributes':_0x4cd5b0[_0x9a47('0x19')],'include':_0x4cd5b0[_0x9a47('0x1b')]?_[_0x9a47('0x1d')](_0x4cd5b0['include'],function(_0x277401){return{'model':db[_0x277401['model']],'as':_0x277401['as'],'attributes':_0x277401[_0x9a47('0x19')],'include':_0x277401[_0x9a47('0x1b')]?_[_0x9a47('0x1d')](_0x277401[_0x9a47('0x1b')],function(_0x47bf78){return{'model':db[_0x47bf78['model']],'as':_0x47bf78['as'],'attributes':_0x47bf78['attributes']};}):[]};}):[]};}):[]:[]})[_0x9a47('0xb')](function(_0x10fd14){logger[_0x9a47('0x12')]('GetTrigger',_0x51e88b);logger['debug'](_0x9a47('0x14'),_0x51e88b,JSON[_0x9a47('0x1e')](_0x10fd14));_0x32207e(_0x10fd14);})[_0x9a47('0x13')](function(_0x2ac126){logger[_0x9a47('0xf')]('GetTrigger',_0x2ac126['message'],_0x51e88b);_0x339fb8(_0x2f466c[_0x9a47('0xf')](0x1f4,_0x2ac126[_0x9a47('0x11')]));});});};exports[_0x9a47('0x1f')]=function(_0x51fa04){var _0x5ce789=this;return new Promise(function(_0x3af178,_0x28f783){return db[_0x9a47('0x15')][_0x9a47('0x20')]({'raw':_0x51fa04['options']?_0x51fa04['options']['raw']===undefined?!![]:![]:!![],'where':_0x51fa04[_0x9a47('0x16')]?_0x51fa04[_0x9a47('0x16')][_0x9a47('0x18')]||null:null,'attributes':_0x51fa04[_0x9a47('0x16')]?_0x51fa04['options'][_0x9a47('0x19')]||null:null,'include':_0x51fa04[_0x9a47('0x16')]?_0x51fa04['options'][_0x9a47('0x1b')]?_['map'](_0x51fa04[_0x9a47('0x16')][_0x9a47('0x1b')],function(_0x446302){return{'model':db[_0x446302['model']],'as':_0x446302['as'],'attributes':_0x446302['attributes'],'include':_0x446302[_0x9a47('0x1b')]?_[_0x9a47('0x1d')](_0x446302['include'],function(_0x4816fe){return{'model':db[_0x4816fe[_0x9a47('0x1c')]],'as':_0x4816fe['as'],'attributes':_0x4816fe['attributes'],'include':_0x4816fe[_0x9a47('0x1b')]?_[_0x9a47('0x1d')](_0x4816fe[_0x9a47('0x1b')],function(_0x5ee651){return{'model':db[_0x5ee651['model']],'as':_0x5ee651['as'],'attributes':_0x5ee651['attributes']};}):[]};}):[]};}):[]:[]})[_0x9a47('0xb')](function(_0x3bf8b9){logger[_0x9a47('0x12')](_0x9a47('0x1f'),_0x51fa04);logger['debug'](_0x9a47('0x1f'),_0x51fa04,JSON[_0x9a47('0x1e')](_0x3bf8b9));_0x3af178(_0x3bf8b9);})['catch'](function(_0x1abfff){logger[_0x9a47('0xf')](_0x9a47('0x1f'),_0x1abfff[_0x9a47('0x11')],_0x51fa04);_0x28f783(_0x5ce789['error'](0x1f4,_0x1abfff['message']));});});};
\ No newline at end of file
+var _0x2825=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','Trigger','findAll','raw','options','where','attributes','limit','map','include','model','GetTrigger','stringify','find','ShowTrigger','randomstring','ioredis','../../mysqldb'];(function(_0x2fa652,_0x18defe){var _0x451750=function(_0x124c9f){while(--_0x124c9f){_0x2fa652['push'](_0x2fa652['shift']());}};_0x451750(++_0x18defe);}(_0x2825,0x195));var _0x5282=function(_0x99c628,_0x400b8e){_0x99c628=_0x99c628-0x0;var _0x121aaa=_0x2825[_0x99c628];return _0x121aaa;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5282('0x0'));var fs=require('fs');var Redis=require(_0x5282('0x1'));var db=require(_0x5282('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x5282('0x3'))(_0x5282('0x4'));var config=require(_0x5282('0x5'));var jayson=require(_0x5282('0x6'));var client=jayson['client'][_0x5282('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x59ec4a,_0x10b913,_0x3e0998){return new BPromise(function(_0x35b84e,_0x53ca23){return client[_0x5282('0x8')](_0x59ec4a,_0x3e0998)[_0x5282('0x9')](function(_0x240b72){logger['info'](_0x5282('0xa'),_0x10b913,_0x5282('0xb'));logger[_0x5282('0xc')](_0x5282('0xd'),_0x10b913,_0x5282('0xb'),JSON['stringify'](_0x240b72));if(_0x240b72['error']){if(_0x240b72[_0x5282('0xe')][_0x5282('0xf')]===0x1f4){logger[_0x5282('0xe')]('Trigger,\x20%s,\x20%s',_0x10b913,_0x240b72[_0x5282('0xe')]['message']);return _0x53ca23(_0x240b72[_0x5282('0xe')][_0x5282('0x10')]);}logger[_0x5282('0xe')]('Trigger,\x20%s,\x20%s',_0x10b913,_0x240b72['error'][_0x5282('0x10')]);return _0x35b84e(_0x240b72[_0x5282('0xe')][_0x5282('0x10')]);}else{logger[_0x5282('0x11')]('Trigger,\x20%s,\x20%s',_0x10b913,_0x5282('0xb'));_0x35b84e(_0x240b72[_0x5282('0x12')][_0x5282('0x10')]);}})[_0x5282('0x13')](function(_0x3dd786){logger[_0x5282('0xe')](_0x5282('0xa'),_0x10b913,_0x3dd786);_0x53ca23(_0x3dd786);});});}exports['GetTrigger']=function(_0x52909a){var _0x234849=this;return new Promise(function(_0x15efff,_0x630afc){return db[_0x5282('0x14')][_0x5282('0x15')]({'raw':_0x52909a['options']?_0x52909a['options'][_0x5282('0x16')]===undefined?!![]:![]:!![],'where':_0x52909a[_0x5282('0x17')]?_0x52909a['options'][_0x5282('0x18')]||null:null,'attributes':_0x52909a[_0x5282('0x17')]?_0x52909a[_0x5282('0x17')][_0x5282('0x19')]||null:null,'limit':_0x52909a['options']?_0x52909a[_0x5282('0x17')][_0x5282('0x1a')]||null:null,'include':_0x52909a[_0x5282('0x17')]?_0x52909a[_0x5282('0x17')]['include']?_[_0x5282('0x1b')](_0x52909a[_0x5282('0x17')][_0x5282('0x1c')],function(_0x1ef536){return{'model':db[_0x1ef536[_0x5282('0x1d')]],'as':_0x1ef536['as'],'attributes':_0x1ef536[_0x5282('0x19')],'include':_0x1ef536[_0x5282('0x1c')]?_[_0x5282('0x1b')](_0x1ef536[_0x5282('0x1c')],function(_0x21877e){return{'model':db[_0x21877e[_0x5282('0x1d')]],'as':_0x21877e['as'],'attributes':_0x21877e[_0x5282('0x19')],'include':_0x21877e['include']?_['map'](_0x21877e[_0x5282('0x1c')],function(_0x459a97){return{'model':db[_0x459a97[_0x5282('0x1d')]],'as':_0x459a97['as'],'attributes':_0x459a97[_0x5282('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5282('0x9')](function(_0x257bdf){logger[_0x5282('0x11')](_0x5282('0x1e'),_0x52909a);logger[_0x5282('0xc')](_0x5282('0x1e'),_0x52909a,JSON[_0x5282('0x1f')](_0x257bdf));_0x15efff(_0x257bdf);})['catch'](function(_0x11047a){logger[_0x5282('0xe')](_0x5282('0x1e'),_0x11047a[_0x5282('0x10')],_0x52909a);_0x630afc(_0x234849[_0x5282('0xe')](0x1f4,_0x11047a[_0x5282('0x10')]));});});};exports['ShowTrigger']=function(_0x5b6dd7){var _0x290f86=this;return new Promise(function(_0x33ecc7,_0x168d15){return db[_0x5282('0x14')][_0x5282('0x20')]({'raw':_0x5b6dd7['options']?_0x5b6dd7[_0x5282('0x17')][_0x5282('0x16')]===undefined?!![]:![]:!![],'where':_0x5b6dd7[_0x5282('0x17')]?_0x5b6dd7[_0x5282('0x17')][_0x5282('0x18')]||null:null,'attributes':_0x5b6dd7[_0x5282('0x17')]?_0x5b6dd7['options'][_0x5282('0x19')]||null:null,'include':_0x5b6dd7[_0x5282('0x17')]?_0x5b6dd7[_0x5282('0x17')][_0x5282('0x1c')]?_[_0x5282('0x1b')](_0x5b6dd7[_0x5282('0x17')]['include'],function(_0x4fabf8){return{'model':db[_0x4fabf8[_0x5282('0x1d')]],'as':_0x4fabf8['as'],'attributes':_0x4fabf8['attributes'],'include':_0x4fabf8['include']?_[_0x5282('0x1b')](_0x4fabf8[_0x5282('0x1c')],function(_0x35bde3){return{'model':db[_0x35bde3['model']],'as':_0x35bde3['as'],'attributes':_0x35bde3[_0x5282('0x19')],'include':_0x35bde3[_0x5282('0x1c')]?_[_0x5282('0x1b')](_0x35bde3[_0x5282('0x1c')],function(_0x3a87f0){return{'model':db[_0x3a87f0[_0x5282('0x1d')]],'as':_0x3a87f0['as'],'attributes':_0x3a87f0[_0x5282('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5282('0x9')](function(_0x2036e6){logger[_0x5282('0x11')]('ShowTrigger',_0x5b6dd7);logger[_0x5282('0xc')](_0x5282('0x21'),_0x5b6dd7,JSON[_0x5282('0x1f')](_0x2036e6));_0x33ecc7(_0x2036e6);})['catch'](function(_0x47cd5a){logger['error'](_0x5282('0x21'),_0x47cd5a[_0x5282('0x10')],_0x5b6dd7);_0x168d15(_0x290f86[_0x5282('0xe')](0x1f4,_0x47cd5a[_0x5282('0x10')]));});});};
\ No newline at end of file
index 13c352b..efa204f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x537d=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','isAuthenticated','index','get','/:id','post','/:id/clone','clone','create'];(function(_0x18420d,_0x3c7861){var _0x59c28a=function(_0x1d5853){while(--_0x1d5853){_0x18420d['push'](_0x18420d['shift']());}};_0x59c28a(++_0x3c7861);}(_0x537d,0x175));var _0xd537=function(_0x2c2993,_0x118d9c){_0x2c2993=_0x2c2993-0x0;var _0x366ce8=_0x537d[_0x2c2993];return _0x366ce8;};'use strict';var multer=require(_0xd537('0x0'));var util=require(_0xd537('0x1'));var path=require(_0xd537('0x2'));var timeout=require(_0xd537('0x3'));var express=require(_0xd537('0x4'));var router=express['Router']();var fs_extra=require(_0xd537('0x5'));var auth=require(_0xd537('0x6'));var interaction=require(_0xd537('0x7'));var config=require(_0xd537('0x8'));var controller=require(_0xd537('0x9'));router['get']('/',auth[_0xd537('0xa')](),controller[_0xd537('0xb')]);router[_0xd537('0xc')](_0xd537('0xd'),auth[_0xd537('0xa')](),controller['show']);router[_0xd537('0xe')](_0xd537('0xf'),auth[_0xd537('0xa')](),controller[_0xd537('0x10')]);router[_0xd537('0xe')]('/',auth[_0xd537('0xa')](),controller[_0xd537('0x11')]);router[_0xd537('0x12')](_0xd537('0xd'),auth['isAuthenticated'](),controller[_0xd537('0x13')]);router[_0xd537('0x14')]('/:id',auth[_0xd537('0xa')](),controller[_0xd537('0x15')]);module[_0xd537('0x16')]=router;
\ No newline at end of file
+var _0x5c76=['./trunk.controller','get','isAuthenticated','/:id','show','post','/:id/clone','clone','create','put','delete','destroy','util','path','connect-timeout','fs-extra','../../components/interaction/service'];(function(_0x4af2de,_0x1b8349){var _0x5e45ca=function(_0x32bcea){while(--_0x32bcea){_0x4af2de['push'](_0x4af2de['shift']());}};_0x5e45ca(++_0x1b8349);}(_0x5c76,0xc7));var _0x65c7=function(_0x29d623,_0x1a5c9c){_0x29d623=_0x29d623-0x0;var _0x242e59=_0x5c76[_0x29d623];return _0x242e59;};'use strict';var multer=require('multer');var util=require(_0x65c7('0x0'));var path=require(_0x65c7('0x1'));var timeout=require(_0x65c7('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x65c7('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x65c7('0x4'));var config=require('../../config/environment');var controller=require(_0x65c7('0x5'));router[_0x65c7('0x6')]('/',auth[_0x65c7('0x7')](),controller['index']);router['get'](_0x65c7('0x8'),auth[_0x65c7('0x7')](),controller[_0x65c7('0x9')]);router[_0x65c7('0xa')](_0x65c7('0xb'),auth[_0x65c7('0x7')](),controller[_0x65c7('0xc')]);router[_0x65c7('0xa')]('/',auth[_0x65c7('0x7')](),controller[_0x65c7('0xd')]);router[_0x65c7('0xe')](_0x65c7('0x8'),auth[_0x65c7('0x7')](),controller['update']);router[_0x65c7('0xf')](_0x65c7('0x8'),auth[_0x65c7('0x7')](),controller[_0x65c7('0x10')]);module['exports']=router;
\ No newline at end of file
index 80ece77..10cd140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40ba=['rfc2833','yes','outgoing','force_rport,comedia','setDataValue','join','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo'];(function(_0x1d610a,_0xeeeb1a){var _0x23fe28=function(_0x3ae090){while(--_0x3ae090){_0x1d610a['push'](_0x1d610a['shift']());}};_0x23fe28(++_0xeeeb1a);}(_0x40ba,0x87));var _0xa40b=function(_0x522c6d,_0x4d250d){_0x522c6d=_0x522c6d-0x0;var _0x26300d=_0x40ba[_0x522c6d];return _0x26300d;};'use strict';var Sequelize=require(_0xa40b('0x0'));module[_0xa40b('0x1')]={'name':{'type':Sequelize[_0xa40b('0x2')],'allowNull':![],'unique':_0xa40b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x5'),'user',_0xa40b('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xa40b('0x2')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x7'),_0xa40b('0x8'),_0xa40b('0x9'),_0xa40b('0xa'),_0xa40b('0xb'),_0xa40b('0xc'),_0xa40b('0xd'),'PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0xa40b('0x2')]},'transport':{'type':Sequelize[_0xa40b('0x2')],'defaultValue':_0xa40b('0xe'),'set':function(_0x13dcd0){this['setDataValue'](_0xa40b('0xf'),_0x13dcd0?_0x13dcd0['join'](','):null);},'get':function(){return this[_0xa40b('0x10')](_0xa40b('0xf'))?this['getDataValue']('transport')[_0xa40b('0x11')](','):null;},'comment':_0xa40b('0x12')},'dtmfmode':{'type':Sequelize[_0xa40b('0x4')]('rfc2833',_0xa40b('0x13'),_0xa40b('0x14'),'inband','auto'),'defaultValue':_0xa40b('0x15')},'directmedia':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no','nonat','update',_0xa40b('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xa40b('0x2')]},'directmediadeny':{'type':Sequelize[_0xa40b('0x2')]},'nat':{'type':Sequelize[_0xa40b('0x2')],'defaultValue':_0xa40b('0x18'),'set':function(_0x537005){this[_0xa40b('0x19')]('nat',_0x537005?_0x537005[_0xa40b('0x1a')](','):null);},'get':function(){return this[_0xa40b('0x10')]('nat')?this['getDataValue'](_0xa40b('0x1b'))['split'](','):null;},'comment':_0xa40b('0x1c')},'callgroup':{'type':Sequelize[_0xa40b('0x2')]},'namedcallgroup':{'type':Sequelize[_0xa40b('0x2')]},'pickupgroup':{'type':Sequelize[_0xa40b('0x2')]},'namedpickupgroup':{'type':Sequelize[_0xa40b('0x2')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xa40b('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xa40b('0x2')],'defaultValue':_0xa40b('0x1d')},'allow':{'type':Sequelize[_0xa40b('0x2')],'allowNull':![],'defaultValue':_0xa40b('0x1e'),'set':function(_0x35ef7a){this['setDataValue'](_0xa40b('0x1f'),_0x35ef7a?_0x35ef7a['join'](';'):_0xa40b('0x1e'));},'get':function(){return this[_0xa40b('0x10')](_0xa40b('0x1f'))?this[_0xa40b('0x10')](_0xa40b('0x1f'))[_0xa40b('0x11')](';'):null;},'comment':_0xa40b('0x20')},'autoframing':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no')},'insecure':{'type':Sequelize[_0xa40b('0x2')],'defaultValue':_0xa40b('0x21'),'set':function(_0x307f0a){this['setDataValue'](_0xa40b('0x22'),_0x307f0a?_0x307f0a[_0xa40b('0x1a')](','):null);},'get':function(){return this[_0xa40b('0x10')](_0xa40b('0x22'))?this[_0xa40b('0x10')](_0xa40b('0x22'))[_0xa40b('0x11')](','):null;},'comment':_0xa40b('0x23')},'trustrpid':{'type':Sequelize['ENUM'](_0xa40b('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no',_0xa40b('0x24'))},'promiscredir':{'type':Sequelize['ENUM']('yes','no')},'useclientcode':{'type':Sequelize['ENUM']('yes','no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xa40b('0x2')]},'callerid':{'type':Sequelize[_0xa40b('0x2')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no'),'defaultValue':_0xa40b('0x16')},'busylevel':{'type':Sequelize[_0xa40b('0x25')](0xb)},'allowoverlap':{'type':Sequelize[_0xa40b('0x4')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0xa40b('0x4')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0xa40b('0x4')]('yes','no')},'subscribecontext':{'type':Sequelize[_0xa40b('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0xa40b('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xa40b('0x25')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no')},'mailbox':{'type':Sequelize[_0xa40b('0x2')]},'session_timers':{'type':Sequelize['ENUM']('accept',_0xa40b('0x27'),_0xa40b('0x28'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0xa40b('0x25')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xa40b('0x29'),_0xa40b('0x2a')),'defaultValue':_0xa40b('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0xa40b('0x2')]},'regexten':{'type':Sequelize[_0xa40b('0x2')]},'fromdomain':{'type':Sequelize[_0xa40b('0x2')]},'fromuser':{'type':Sequelize[_0xa40b('0x2')]},'port':{'type':Sequelize[_0xa40b('0x25')](0x5)},'qualify':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no'),'defaultValue':_0xa40b('0x16')},'keepalive':{'type':Sequelize[_0xa40b('0x25')](0xb)},'defaultip':{'type':Sequelize[_0xa40b('0x2')]},'defaultuser':{'type':Sequelize[_0xa40b('0x2')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xa40b('0x25')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xa40b('0x25')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0xa40b('0x16'),'no',_0xa40b('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xa40b('0x2')]},'timert1':{'type':Sequelize[_0xa40b('0x25')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0xa40b('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0xa40b('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xa40b('0x2')]},'use_q850_reason':{'type':Sequelize[_0xa40b('0x2')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xa40b('0x4')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no')},'icesupport':{'type':Sequelize[_0xa40b('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no')},'dtlsverify':{'type':Sequelize[_0xa40b('0x4')]('yes','no',_0xa40b('0x2c'),_0xa40b('0x2d'))},'dtlsrekey':{'type':Sequelize[_0xa40b('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0xa40b('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0xa40b('0x2')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xa40b('0x2')]},'dtlscapath':{'type':Sequelize[_0xa40b('0x2')]},'dtlssetup':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x2e'),_0xa40b('0x2f'),_0xa40b('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xa40b('0x2')]},'call_limit':{'type':Sequelize[_0xa40b('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0xa40b('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0xa40b('0x4')]('yes','no')},'vmexten':{'type':Sequelize[_0xa40b('0x2')]},'mohinterpret':{'type':Sequelize[_0xa40b('0x2')]},'mohsuggest':{'type':Sequelize[_0xa40b('0x2')]},'parkinglot':{'type':Sequelize[_0xa40b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xa40b('0x2')],'defaultValue':_0xa40b('0x31')},'canreinvite':{'type':Sequelize[_0xa40b('0x4')](_0xa40b('0x16'),'no','nonat','update',_0xa40b('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xa40b('0x2')]},'active':{'type':Sequelize[_0xa40b('0x33')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xa40b('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xb2e4=['ENUM','yes','join','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\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','INTEGER','always','accept','refuse','originate','uac','uas','pai','certificate','passive','actpass','update,nonat','BOOLEAN','sequelize','exports','STRING','name','friend','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','nonat','update','outgoing'];(function(_0x2526e3,_0x5f22f8){var _0xcf6f48=function(_0x284491){while(--_0x284491){_0x2526e3['push'](_0x2526e3['shift']());}};_0xcf6f48(++_0x5f22f8);}(_0xb2e4,0x1c8));var _0x4b2e=function(_0x221ba2,_0x79208){_0x221ba2=_0x221ba2-0x0;var _0x47d08e=_0xb2e4[_0x221ba2];return _0x47d08e;};'use strict';var Sequelize=require(_0x4b2e('0x0'));module[_0x4b2e('0x1')]={'name':{'type':Sequelize[_0x4b2e('0x2')],'allowNull':![],'unique':_0x4b2e('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x4b2e('0x4'),'user','peer'),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4b2e('0x5')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x4b2e('0x6'),_0x4b2e('0x7'),'ALLOWED',_0x4b2e('0x8'),'PROHIB_PASSED_SCREEN',_0x4b2e('0x9'),_0x4b2e('0xa'))},'deny':{'type':Sequelize[_0x4b2e('0x2')]},'permit':{'type':Sequelize[_0x4b2e('0x2')]},'secret':{'type':Sequelize[_0x4b2e('0x2')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x4b2e('0x2')]},'transport':{'type':Sequelize[_0x4b2e('0x2')],'defaultValue':_0x4b2e('0xb'),'set':function(_0xabf240){this[_0x4b2e('0xc')](_0x4b2e('0xd'),_0xabf240?_0xabf240['join'](','):null);},'get':function(){return this['getDataValue'](_0x4b2e('0xd'))?this[_0x4b2e('0xe')](_0x4b2e('0xd'))[_0x4b2e('0xf')](','):null;},'comment':_0x4b2e('0x10')},'dtmfmode':{'type':Sequelize['ENUM'](_0x4b2e('0x11'),_0x4b2e('0x12'),_0x4b2e('0x13'),_0x4b2e('0x14'),'auto'),'defaultValue':_0x4b2e('0x11')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x4b2e('0x15'),_0x4b2e('0x16'),_0x4b2e('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x4b2e('0x2')]},'directmediadeny':{'type':Sequelize[_0x4b2e('0x2')]},'nat':{'type':Sequelize[_0x4b2e('0x2')],'defaultValue':'force_rport,comedia','set':function(_0x5a7533){this[_0x4b2e('0xc')]('nat',_0x5a7533?_0x5a7533[_0x4b2e('0x1a')](','):null);},'get':function(){return this[_0x4b2e('0xe')]('nat')?this[_0x4b2e('0xe')](_0x4b2e('0x1b'))['split'](','):null;},'comment':_0x4b2e('0x1c')},'callgroup':{'type':Sequelize[_0x4b2e('0x2')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x4b2e('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x4b2e('0x2')]},'language':{'type':Sequelize[_0x4b2e('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x4b2e('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x4b2e('0x2')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x4b2e('0x2')],'allowNull':![],'defaultValue':_0x4b2e('0x1d'),'set':function(_0x323615){this[_0x4b2e('0xc')](_0x4b2e('0x1e'),_0x323615?_0x323615[_0x4b2e('0x1a')](';'):_0x4b2e('0x1d'));},'get':function(){return this[_0x4b2e('0xe')](_0x4b2e('0x1e'))?this[_0x4b2e('0xe')](_0x4b2e('0x1e'))[_0x4b2e('0xf')](';'):null;},'comment':_0x4b2e('0x1f')},'autoframing':{'type':Sequelize[_0x4b2e('0x18')]('yes','no')},'insecure':{'type':Sequelize[_0x4b2e('0x2')],'defaultValue':_0x4b2e('0x20'),'set':function(_0x589c44){this[_0x4b2e('0xc')]('insecure',_0x589c44?_0x589c44['join'](','):null);},'get':function(){return this['getDataValue'](_0x4b2e('0x21'))?this[_0x4b2e('0xe')](_0x4b2e('0x21'))[_0x4b2e('0xf')](','):null;},'comment':_0x4b2e('0x22')},'trustrpid':{'type':Sequelize['ENUM'](_0x4b2e('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x4b2e('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no','never')},'promiscredir':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'useclientcode':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'accountcode':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x4b2e('0x2')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x4b2e('0x2')]},'callcounter':{'type':Sequelize[_0x4b2e('0x18')]('yes','no'),'defaultValue':_0x4b2e('0x19')},'busylevel':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'allowoverlap':{'type':Sequelize[_0x4b2e('0x18')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'ignoresdpversion':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0x4b2e('0x2')]},'template':{'type':Sequelize[_0x4b2e('0x2')]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0x4b2e('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'mailbox':{'type':Sequelize[_0x4b2e('0x2')]},'session_timers':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x25'),_0x4b2e('0x26'),_0x4b2e('0x27'))},'session_expires':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0x4b2e('0x28'),_0x4b2e('0x29')),'defaultValue':_0x4b2e('0x29')},'t38pt_usertpsource':{'type':Sequelize[_0x4b2e('0x2')]},'regexten':{'type':Sequelize[_0x4b2e('0x2')]},'fromdomain':{'type':Sequelize[_0x4b2e('0x2')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0x4b2e('0x18')]('yes','no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'defaultip':{'type':Sequelize[_0x4b2e('0x2')]},'defaultuser':{'type':Sequelize[_0x4b2e('0x2')]},'rtptimeout':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'sendrpid':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no',_0x4b2e('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x4b2e('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'timerb':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'qualifyfreq':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'contactpermit':{'type':Sequelize[_0x4b2e('0x2')]},'contactdeny':{'type':Sequelize[_0x4b2e('0x2')]},'contactacl':{'type':Sequelize[_0x4b2e('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x4b2e('0x2')]},'use_q850_reason':{'type':Sequelize[_0x4b2e('0x2')]},'maxforwards':{'type':Sequelize[_0x4b2e('0x23')](0xb)},'encryption':{'type':Sequelize[_0x4b2e('0x18')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x4b2e('0x18')]('yes','no')},'force_avp':{'type':Sequelize['ENUM'](_0x4b2e('0x19'),'no')},'icesupport':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'dtlsenable':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x4b2e('0x19'),'no','fingerprint',_0x4b2e('0x2b'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x4b2e('0x2')]},'dtlscafile':{'type':Sequelize[_0x4b2e('0x2')]},'dtlscapath':{'type':Sequelize[_0x4b2e('0x2')]},'dtlssetup':{'type':Sequelize[_0x4b2e('0x18')]('active',_0x4b2e('0x2c'),_0x4b2e('0x2d')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x4b2e('0x2')]},'usereqphone':{'type':Sequelize['ENUM'](_0x4b2e('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x4b2e('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0x4b2e('0x23')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x4b2e('0x2')]},'mohsuggest':{'type':Sequelize[_0x4b2e('0x2')]},'parkinglot':{'type':Sequelize[_0x4b2e('0x2')]},'description':{'type':Sequelize[_0x4b2e('0x2')]},'host':{'type':Sequelize['STRING'],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0x4b2e('0x18')](_0x4b2e('0x19'),'no',_0x4b2e('0x15'),_0x4b2e('0x16'),_0x4b2e('0x2e')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x4b2e('0x2')]},'otherFields':{'type':Sequelize[_0x4b2e('0x2')]},'active':{'type':Sequelize[_0x4b2e('0x2f')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x4b2e('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 2e048e0..6abbbbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['../../mysqldb','client','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','destroy','stack','name','index','map','rawAttributes','fieldName','type','query','keys','intersection','fields','attributes','length','model','order','sort','where','filters','pick','merge','filter','options','Trunk','count','includeAll','rows','params','include','find','createdAt','updatedAt','body','omit','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findAll','readFileSync','utf8','join','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','userProfileId','autoAssociation','root','chan_sip.so','server/files/templates/trunk.ejs','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'];(function(_0x5cd675,_0x352cca){var _0x2379b0=function(_0x2e510b){while(--_0x2e510b){_0x5cd675['push'](_0x5cd675['shift']());}};_0x2379b0(++_0x352cca);}(_0x84ab,0x12f));var _0xb84a=function(_0x4cbf20,_0x1bfa66){_0x4cbf20=_0x4cbf20-0x0;var _0x582ae4=_0x84ab[_0x4cbf20];return _0x582ae4;};'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'];var jayson=require('jayson/promise');var client=jayson[_0xb84a('0x16')][_0xb84a('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x39a0df,_0x3c161c,_0x44b26b,_0x11dfe9){return new BPromise(function(_0x12ccab,_0x475b){var _0x3113a2=_0x11dfe9||client;return _0x3113a2[_0xb84a('0x18')](_0x39a0df,_0x44b26b)[_0xb84a('0x19')](function(_0x1251ec){logger['info'](_0xb84a('0x1a'),_0x3c161c,_0xb84a('0x1b'));logger[_0xb84a('0x1c')](_0xb84a('0x1d'),_0x3c161c,_0xb84a('0x1b'),JSON[_0xb84a('0x1e')](_0x1251ec));if(_0x1251ec[_0xb84a('0x1f')]){if(_0x1251ec[_0xb84a('0x1f')][_0xb84a('0x20')]===0x1f4){logger[_0xb84a('0x1f')](_0xb84a('0x1a'),_0x3c161c,_0x1251ec[_0xb84a('0x1f')][_0xb84a('0x21')]);return _0x475b(_0x1251ec[_0xb84a('0x1f')]['message']);}logger[_0xb84a('0x1f')](_0xb84a('0x1a'),_0x3c161c,_0x1251ec['error'][_0xb84a('0x21')]);return _0x12ccab(_0x1251ec[_0xb84a('0x1f')][_0xb84a('0x21')]);}else{logger[_0xb84a('0x22')]('Trunk,\x20%s,\x20%s',_0x3c161c,'request\x20sent');_0x12ccab(_0x1251ec[_0xb84a('0x23')][_0xb84a('0x21')]);}})[_0xb84a('0x24')](function(_0x259f74){logger[_0xb84a('0x1f')](_0xb84a('0x1a'),_0x3c161c,_0x259f74);_0x475b(_0x259f74);});});}function respondWithStatusCode(_0x8b28cd,_0x21d0d3){_0x21d0d3=_0x21d0d3||0xcc;return function(_0x3aa06f){if(_0x3aa06f){return _0x8b28cd[_0xb84a('0x25')](_0x21d0d3);}return _0x8b28cd[_0xb84a('0x26')](_0x21d0d3)[_0xb84a('0x27')]();};}function respondWithResult(_0x218aef,_0x409df0){_0x409df0=_0x409df0||0xc8;return function(_0x19bdfa){if(_0x19bdfa){return _0x218aef[_0xb84a('0x26')](_0x409df0)[_0xb84a('0x28')](_0x19bdfa);}};}function respondWithFilteredResult(_0x3ff0bc,_0x3b6805){return function(_0xd468c3){if(_0xd468c3){var _0x33bf1d=typeof _0x3b6805[_0xb84a('0x29')]===_0xb84a('0x2a')&&typeof _0x3b6805[_0xb84a('0x2b')]===_0xb84a('0x2a');var _0x97d71b=_0xd468c3['count'];var _0x582954=_0x33bf1d?0x0:_0x3b6805[_0xb84a('0x29')];var _0x2c30b0=_0x33bf1d?_0xd468c3['count']:_0x3b6805[_0xb84a('0x29')]+_0x3b6805[_0xb84a('0x2b')];var _0x52c23c;if(_0x2c30b0>=_0x97d71b){_0x2c30b0=_0x97d71b;_0x52c23c=0xc8;}else{_0x52c23c=0xce;}_0x3ff0bc['status'](_0x52c23c);return _0x3ff0bc[_0xb84a('0x2c')](_0xb84a('0x2d'),_0x582954+'-'+_0x2c30b0+'/'+_0x97d71b)['json'](_0xd468c3);}return null;};}function patchUpdates(_0x251778){return function(_0xba1147){try{jsonpatch[_0xb84a('0x2e')](_0xba1147,_0x251778,!![]);}catch(_0x44a405){return BPromise[_0xb84a('0x2f')](_0x44a405);}return _0xba1147[_0xb84a('0x30')]();};}function saveUpdates(_0x34b212,_0xac214f){return function(_0x54ec50){if(_0x54ec50){return _0x54ec50[_0xb84a('0x31')](_0x34b212)['then'](function(_0x4bca85){return _0x4bca85;});}return null;};}function removeEntity(_0x2eea7e,_0x3b4515){return function(_0x47a5b6){if(_0x47a5b6){return _0x47a5b6['destroy']()[_0xb84a('0x19')](function(){var _0x13c167=_0x47a5b6[_0xb84a('0x32')]({'plain':!![]});var _0x308240=_0xb84a('0x33');return db[_0xb84a('0x34')][_0xb84a('0x35')]({'where':{'type':_0x308240,'resourceId':_0x13c167['id']}})[_0xb84a('0x19')](function(){return _0x47a5b6;});})['then'](function(){_0x2eea7e[_0xb84a('0x26')](0xcc)[_0xb84a('0x27')]();});}};}function handleEntityNotFound(_0x10b944,_0xf894a6){return function(_0x36aa07){if(!_0x36aa07){_0x10b944[_0xb84a('0x25')](0x194);}return _0x36aa07;};}function handleError(_0x2a5130,_0x5aa2ae){_0x5aa2ae=_0x5aa2ae||0x1f4;return function(_0x30d22d){logger['error'](_0x30d22d[_0xb84a('0x36')]);if(_0x30d22d[_0xb84a('0x37')]){delete _0x30d22d[_0xb84a('0x37')];}_0x2a5130['status'](_0x5aa2ae)['send'](_0x30d22d);};}exports[_0xb84a('0x38')]=function(_0x75e6e6,_0x4a3737){var _0x2d3e08={},_0xab76ce={},_0x4cb5d4={'count':0x0,'rows':[]};var _0x19aa4c=_[_0xb84a('0x39')](db['Trunk'][_0xb84a('0x3a')],function(_0xe6f19e){return{'name':_0xe6f19e[_0xb84a('0x3b')],'type':_0xe6f19e[_0xb84a('0x3c')]['key']};});_0xab76ce['model']=_['map'](_0x19aa4c,_0xb84a('0x37'));_0xab76ce[_0xb84a('0x3d')]=_[_0xb84a('0x3e')](_0x75e6e6[_0xb84a('0x3d')]);_0xab76ce['filters']=_[_0xb84a('0x3f')](_0xab76ce['model'],_0xab76ce[_0xb84a('0x3d')]);_0x2d3e08['attributes']=_['intersection'](_0xab76ce['model'],qs[_0xb84a('0x40')](_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x40')]));_0x2d3e08[_0xb84a('0x41')]=_0x2d3e08['attributes'][_0xb84a('0x42')]?_0x2d3e08[_0xb84a('0x41')]:_0xab76ce[_0xb84a('0x43')];if(!_0x75e6e6[_0xb84a('0x3d')]['hasOwnProperty']('nolimit')){_0x2d3e08[_0xb84a('0x2b')]=qs[_0xb84a('0x2b')](_0x75e6e6['query'][_0xb84a('0x2b')]);_0x2d3e08[_0xb84a('0x29')]=qs[_0xb84a('0x29')](_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x29')]);}_0x2d3e08[_0xb84a('0x44')]=qs[_0xb84a('0x45')](_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x45')]);_0x2d3e08[_0xb84a('0x46')]=qs[_0xb84a('0x47')](_[_0xb84a('0x48')](_0x75e6e6[_0xb84a('0x3d')],_0xab76ce[_0xb84a('0x47')]),_0x19aa4c);if(_0x75e6e6[_0xb84a('0x3d')]['filter']){_0x2d3e08[_0xb84a('0x46')]=_[_0xb84a('0x49')](_0x2d3e08[_0xb84a('0x46')],{'$or':_[_0xb84a('0x39')](_0x19aa4c,function(_0x37f4fe){if(_0x37f4fe[_0xb84a('0x3c')]!=='VIRTUAL'){var _0xfd2927={};_0xfd2927[_0x37f4fe['name']]={'$like':'%'+_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x4a')]+'%'};return _0xfd2927;}})});}_0x2d3e08=_[_0xb84a('0x49')]({},_0x2d3e08,_0x75e6e6[_0xb84a('0x4b')]);var _0x5e7327={'where':_0x2d3e08[_0xb84a('0x46')]};return db[_0xb84a('0x4c')][_0xb84a('0x4d')](_0x5e7327)['then'](function(_0x55f39f){_0x4cb5d4[_0xb84a('0x4d')]=_0x55f39f;if(_0x75e6e6[_0xb84a('0x3d')][_0xb84a('0x4e')]){_0x2d3e08['include']=[{'all':!![]}];}return db['Trunk']['findAll'](_0x2d3e08);})[_0xb84a('0x19')](function(_0x384a0d){_0x4cb5d4[_0xb84a('0x4f')]=_0x384a0d;return _0x4cb5d4;})[_0xb84a('0x19')](respondWithFilteredResult(_0x4a3737,_0x2d3e08))[_0xb84a('0x24')](handleError(_0x4a3737,null));};exports['show']=function(_0x4b40fe,_0x5b853a){var _0x53d4d6={'raw':![],'where':{'id':_0x4b40fe[_0xb84a('0x50')]['id']}},_0x421ba0={};_0x421ba0['model']=_[_0xb84a('0x3e')](db[_0xb84a('0x4c')][_0xb84a('0x3a')]);_0x421ba0[_0xb84a('0x3d')]=_[_0xb84a('0x3e')](_0x4b40fe[_0xb84a('0x3d')]);_0x421ba0['filters']=_['intersection'](_0x421ba0[_0xb84a('0x43')],_0x421ba0['query']);_0x53d4d6[_0xb84a('0x41')]=_['intersection'](_0x421ba0['model'],qs['fields'](_0x4b40fe[_0xb84a('0x3d')][_0xb84a('0x40')]));_0x53d4d6[_0xb84a('0x41')]=_0x53d4d6[_0xb84a('0x41')][_0xb84a('0x42')]?_0x53d4d6[_0xb84a('0x41')]:_0x421ba0[_0xb84a('0x43')];if(_0x4b40fe[_0xb84a('0x3d')]['includeAll']){_0x53d4d6['include']=[{'all':!![]}];}_0x53d4d6=_['merge']({},_0x53d4d6,_0x4b40fe[_0xb84a('0x4b')]);return db[_0xb84a('0x4c')]['find'](_0x53d4d6)[_0xb84a('0x19')](handleEntityNotFound(_0x5b853a,null))['then'](respondWithResult(_0x5b853a,null))['catch'](handleError(_0x5b853a,null));};exports['clone']=function(_0x419e27,_0x172076){var _0x49a0e2={'where':{'id':_0x419e27[_0xb84a('0x50')]['id']}},_0x51c415={};_0x51c415[_0xb84a('0x43')]=_[_0xb84a('0x3e')](db['Trunk'][_0xb84a('0x3a')]);_0x49a0e2['attributes']=_['intersection'](_0x51c415[_0xb84a('0x43')],qs['fields'](_0x419e27[_0xb84a('0x3d')]['fields']));_0x49a0e2[_0xb84a('0x41')]=_0x49a0e2[_0xb84a('0x41')][_0xb84a('0x42')]?_0x49a0e2[_0xb84a('0x41')]:_0x51c415['model'];if(_0x419e27['query']['includeAll']){_0x49a0e2[_0xb84a('0x51')]=[{'all':!![]}];}_0x49a0e2=_[_0xb84a('0x49')]({},_0x49a0e2,_0x419e27['options']);return db['Trunk'][_0xb84a('0x52')](_0x49a0e2)[_0xb84a('0x19')](handleEntityNotFound(_0x172076,null))[_0xb84a('0x19')](function(_0x5f415d){if(_0x5f415d){var _0x29f67f=_0x5f415d[_0xb84a('0x32')]({'plain':!![]});_0x29f67f=qs['omit'](_0x29f67f,['id',_0xb84a('0x53'),_0xb84a('0x54')]);_0x419e27[_0xb84a('0x55')]=_[_0xb84a('0x56')](_0x419e27[_0xb84a('0x55')],['id',_0xb84a('0x53'),_0xb84a('0x54')]);return db['Trunk'][_0xb84a('0x57')](_[_0xb84a('0x49')](_0x29f67f,_0x419e27['body']),{'include':_0x419e27[_0xb84a('0x3d')][_0xb84a('0x4e')]?[{'all':!![]}]:undefined})[_0xb84a('0x19')](function(_0x3e16d8){var _0x347998=_0x419e27[_0xb84a('0x58')][_0xb84a('0x32')]({'plain':!![]});if(!_0x347998)throw new Error(_0xb84a('0x59'));if(_0x347998[_0xb84a('0x5a')]==='user'){var _0x291008=_0x3e16d8['get']({'plain':!![]});var _0x5a2d44=_0xb84a('0x33');return db['UserProfileSection'][_0xb84a('0x52')]({'where':{'name':_0x5a2d44,'userProfileId':_0x347998['userProfileId']},'raw':!![]})[_0xb84a('0x19')](function(_0x44e508){if(_0x44e508&&_0x44e508['autoAssociation']===0x0){return db[_0xb84a('0x34')][_0xb84a('0x57')]({'name':_0x291008[_0xb84a('0x37')],'resourceId':_0x291008['id'],'type':_0x44e508[_0xb84a('0x37')],'sectionId':_0x44e508['id']},{})[_0xb84a('0x19')](function(){return _0x3e16d8;});}else{return _0x3e16d8;}})[_0xb84a('0x24')](function(_0x4514f0){logger['error'](_0xb84a('0x5b'),_0x4514f0);throw _0x4514f0;});}return _0x3e16d8;});}})['then'](respondWithResult(_0x172076,0xc9))['catch'](handleError(_0x172076,null));};exports[_0xb84a('0x57')]=function(_0x2a2dc0,_0x2ee241,_0x32a455){var _0x5612f3;return db['Trunk'][_0xb84a('0x57')](_0x2a2dc0[_0xb84a('0x55')],{'raw':!![]})[_0xb84a('0x19')](function(_0x1a2e1a){_0x5612f3=_0x1a2e1a;return db['Trunk'][_0xb84a('0x5c')]({'raw':!![]});})['then'](function(_0x1eec1f){var _0x57b784=fs[_0xb84a('0x5d')](path['join'](config['root'],'server/files/templates/trunk.ejs'),_0xb84a('0x5e'));var _0xf936f1=fs[_0xb84a('0x5d')](path[_0xb84a('0x5f')](config['root'],_0xb84a('0x60')),_0xb84a('0x5e'));var _0x33d416=ejs[_0xb84a('0x61')](_0x57b784,{'trunks':_0x1eec1f||[]});fs[_0xb84a('0x62')](_0xb84a('0x63'),_0x33d416);if(_0x5612f3[_0xb84a('0x64')]){var _0x542d70=ejs[_0xb84a('0x61')](_0xf936f1,{'trunks':_0x1eec1f||[]});fs[_0xb84a('0x62')](_0xb84a('0x65'),_0x542d70);}})[_0xb84a('0x19')](function(){return respondWithRpcPromise(_0xb84a('0x66'),_0xb84a('0x57'),{'module':'chan_sip.so'});})[_0xb84a('0x19')](function(){var _0x6f8f=_0x2a2dc0[_0xb84a('0x58')][_0xb84a('0x32')]({'plain':!![]});if(!_0x6f8f)throw new Error(_0xb84a('0x59'));if(_0x6f8f['role']===_0xb84a('0x58')){var _0x4b0b18=_0x5612f3[_0xb84a('0x32')]({'plain':!![]});return db['UserProfileSection'][_0xb84a('0x52')]({'where':{'name':_0xb84a('0x33'),'userProfileId':_0x6f8f[_0xb84a('0x67')]},'raw':!![]})['then'](function(_0x121fda){if(_0x121fda&&_0x121fda[_0xb84a('0x68')]===0x0){return db[_0xb84a('0x34')][_0xb84a('0x57')]({'name':_0x4b0b18[_0xb84a('0x37')],'resourceId':_0x4b0b18['id'],'type':_0x121fda['name'],'sectionId':_0x121fda['id']},{})[_0xb84a('0x19')](function(){return _0x5612f3;});}else{return _0x5612f3;}})[_0xb84a('0x24')](function(_0x287d25){logger['error'](_0xb84a('0x5b'),_0x287d25);throw _0x287d25;});}return _0x5612f3;})['then'](respondWithResult(_0x2ee241,0xc9))['catch'](handleError(_0x2ee241,null));};exports[_0xb84a('0x31')]=function(_0x35cb8b,_0x13c7b7,_0x3b2a2d){var _0x2047f5;return db[_0xb84a('0x4c')][_0xb84a('0x52')]({'where':{'id':_0x35cb8b[_0xb84a('0x50')]['id']}})[_0xb84a('0x19')](handleEntityNotFound(_0x13c7b7,null))[_0xb84a('0x19')](saveUpdates(_0x35cb8b[_0xb84a('0x55')],null))[_0xb84a('0x19')](function(_0x3ec1fb){if(_0x3ec1fb){_0x2047f5=_0x3ec1fb;return db[_0xb84a('0x4c')][_0xb84a('0x5c')]({'raw':!![]});}})[_0xb84a('0x19')](function(_0xb18756){if(_0xb18756){var _0x1169d1=fs['readFileSync'](path[_0xb84a('0x5f')](config[_0xb84a('0x69')],'server/files/templates/trunk.ejs'),_0xb84a('0x5e'));var _0x576df5=fs[_0xb84a('0x5d')](path['join'](config[_0xb84a('0x69')],'server/files/templates/registry.ejs'),'utf8');var _0xf3f253=ejs[_0xb84a('0x61')](_0x1169d1,{'trunks':_0xb18756||[]});fs['writeFileSync'](_0xb84a('0x63'),_0xf3f253);var _0xcf9bc2=ejs[_0xb84a('0x61')](_0x576df5,{'trunks':_0xb18756||[]});fs[_0xb84a('0x62')](_0xb84a('0x65'),_0xcf9bc2);return respondWithRpcPromise('Reload',_0xb84a('0x31'),{'module':_0xb84a('0x6a')});}return null;})[_0xb84a('0x19')](function(_0x30f7cd){if(_0x30f7cd){return _0x2047f5;}})['then'](respondWithResult(_0x13c7b7,null))[_0xb84a('0x24')](handleError(_0x13c7b7,null));};exports['destroy']=function(_0x14118c,_0x12d796,_0x54ae3e){var _0xf6765a;return db[_0xb84a('0x4c')][_0xb84a('0x52')]({'where':{'id':_0x14118c['params']['id']}})['then'](handleEntityNotFound(_0x12d796,null))[_0xb84a('0x19')](removeEntity(_0x12d796,null))[_0xb84a('0x19')](function(){return db['Trunk'][_0xb84a('0x5c')]({'raw':!![]});})['then'](function(_0x166d75){var _0x54161c=fs['readFileSync'](path[_0xb84a('0x5f')](config[_0xb84a('0x69')],_0xb84a('0x6b')),_0xb84a('0x5e'));var _0x403a3e=fs['readFileSync'](path['join'](config[_0xb84a('0x69')],_0xb84a('0x60')),'utf8');var _0x305b67=ejs[_0xb84a('0x61')](_0x54161c,{'trunks':_0x166d75});var _0x385a05=ejs[_0xb84a('0x61')](_0x403a3e,{'trunks':_0x166d75});fs['writeFileSync'](_0xb84a('0x63'),_0x305b67);fs['writeFileSync'](_0xb84a('0x65'),_0x385a05);return respondWithRpcPromise(_0xb84a('0x66'),_0xb84a('0x35'),{'module':_0xb84a('0x6a')});})[_0xb84a('0x24')](handleError(_0x12d796,null));};
\ No newline at end of file
+var _0x55ca=['catch','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','get','UserProfileResource','end','stack','name','send','Trunk','rawAttributes','type','model','map','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','keys','length','options','find','clone','omit','updatedAt','body','createdAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','render','Reload','chan_sip.so','readFileSync','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x4a4303,_0x40891a){var _0x7dbf6b=function(_0x4e8ae5){while(--_0x4e8ae5){_0x4a4303['push'](_0x4a4303['shift']());}};_0x7dbf6b(++_0x40891a);}(_0x55ca,0x126));var _0xa55c=function(_0x114c1c,_0x5bfd6d){_0x114c1c=_0x114c1c-0x0;var _0x50a0a6=_0x55ca[_0x114c1c];return _0x50a0a6;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xa55c('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x576044,_0x5a3672,_0x59ea8d,_0x18ee85){return new BPromise(function(_0x3930e4,_0x462cd6){var _0x938bd6=_0x18ee85||client;return _0x938bd6[_0xa55c('0x19')](_0x576044,_0x59ea8d)[_0xa55c('0x1a')](function(_0x4e0b2f){logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,_0xa55c('0x1d'));logger[_0xa55c('0x1e')](_0xa55c('0x1f'),_0x5a3672,_0xa55c('0x1d'),JSON[_0xa55c('0x20')](_0x4e0b2f));if(_0x4e0b2f[_0xa55c('0x21')]){if(_0x4e0b2f[_0xa55c('0x21')]['code']===0x1f4){logger[_0xa55c('0x21')](_0xa55c('0x1c'),_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x462cd6(_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x3930e4(_0x4e0b2f[_0xa55c('0x21')]['message']);}else{logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,'request\x20sent');_0x3930e4(_0x4e0b2f[_0xa55c('0x23')][_0xa55c('0x22')]);}})[_0xa55c('0x24')](function(_0x1965f1){logger[_0xa55c('0x21')]('Trunk,\x20%s,\x20%s',_0x5a3672,_0x1965f1);_0x462cd6(_0x1965f1);});});}function respondWithStatusCode(_0x1fc828,_0x504c24){_0x504c24=_0x504c24||0xcc;return function(_0x5ba836){if(_0x5ba836){return _0x1fc828['sendStatus'](_0x504c24);}return _0x1fc828[_0xa55c('0x25')](_0x504c24)['end']();};}function respondWithResult(_0x3ecbe7,_0x190757){_0x190757=_0x190757||0xc8;return function(_0x3f64de){if(_0x3f64de){return _0x3ecbe7[_0xa55c('0x25')](_0x190757)[_0xa55c('0x26')](_0x3f64de);}};}function respondWithFilteredResult(_0x170ba4,_0x1da633){return function(_0x11e7f7){if(_0x11e7f7){var _0x192df2=typeof _0x1da633[_0xa55c('0x27')]===_0xa55c('0x28')&&typeof _0x1da633['limit']===_0xa55c('0x28');var _0x28814f=_0x11e7f7[_0xa55c('0x29')];var _0x906caa=_0x192df2?0x0:_0x1da633['offset'];var _0x1377b0=_0x192df2?_0x11e7f7[_0xa55c('0x29')]:_0x1da633[_0xa55c('0x27')]+_0x1da633[_0xa55c('0x2a')];var _0x45ee8d;if(_0x1377b0>=_0x28814f){_0x1377b0=_0x28814f;_0x45ee8d=0xc8;}else{_0x45ee8d=0xce;}_0x170ba4[_0xa55c('0x25')](_0x45ee8d);return _0x170ba4['set'](_0xa55c('0x2b'),_0x906caa+'-'+_0x1377b0+'/'+_0x28814f)['json'](_0x11e7f7);}return null;};}function patchUpdates(_0x35c9c2){return function(_0x1d730b){try{jsonpatch[_0xa55c('0x2c')](_0x1d730b,_0x35c9c2,!![]);}catch(_0x223813){return BPromise['reject'](_0x223813);}return _0x1d730b[_0xa55c('0x2d')]();};}function saveUpdates(_0x2096ae,_0x331e58){return function(_0x20da31){if(_0x20da31){return _0x20da31[_0xa55c('0x2e')](_0x2096ae)[_0xa55c('0x1a')](function(_0x29748a){return _0x29748a;});}return null;};}function removeEntity(_0x24d44d,_0x2808e9){return function(_0xcbaf2e){if(_0xcbaf2e){return _0xcbaf2e[_0xa55c('0x2f')]()['then'](function(){var _0x54ca97=_0xcbaf2e[_0xa55c('0x30')]({'plain':!![]});var _0x19733e='Trunks';return db[_0xa55c('0x31')][_0xa55c('0x2f')]({'where':{'type':_0x19733e,'resourceId':_0x54ca97['id']}})[_0xa55c('0x1a')](function(){return _0xcbaf2e;});})[_0xa55c('0x1a')](function(){_0x24d44d[_0xa55c('0x25')](0xcc)[_0xa55c('0x32')]();});}};}function handleEntityNotFound(_0x3ce1b3,_0x222d4b){return function(_0x3959e3){if(!_0x3959e3){_0x3ce1b3['sendStatus'](0x194);}return _0x3959e3;};}function handleError(_0x5f3e99,_0x4b23d3){_0x4b23d3=_0x4b23d3||0x1f4;return function(_0x3fd75f){logger[_0xa55c('0x21')](_0x3fd75f[_0xa55c('0x33')]);if(_0x3fd75f['name']){delete _0x3fd75f[_0xa55c('0x34')];}_0x5f3e99['status'](_0x4b23d3)[_0xa55c('0x35')](_0x3fd75f);};}exports['index']=function(_0x18c6f1,_0x39267c){var _0x3c0ec1={},_0x4d3eb5={},_0x7c4a47={'count':0x0,'rows':[]};var _0x30f23b=_['map'](db[_0xa55c('0x36')][_0xa55c('0x37')],function(_0x4d9083){return{'name':_0x4d9083['fieldName'],'type':_0x4d9083[_0xa55c('0x38')]['key']};});_0x4d3eb5[_0xa55c('0x39')]=_[_0xa55c('0x3a')](_0x30f23b,'name');_0x4d3eb5['query']=_['keys'](_0x18c6f1['query']);_0x4d3eb5[_0xa55c('0x3b')]=_[_0xa55c('0x3c')](_0x4d3eb5[_0xa55c('0x39')],_0x4d3eb5[_0xa55c('0x3d')]);_0x3c0ec1[_0xa55c('0x3e')]=_['intersection'](_0x4d3eb5[_0xa55c('0x39')],qs[_0xa55c('0x3f')](_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x3f')]));_0x3c0ec1[_0xa55c('0x3e')]=_0x3c0ec1[_0xa55c('0x3e')]['length']?_0x3c0ec1[_0xa55c('0x3e')]:_0x4d3eb5['model'];if(!_0x18c6f1['query'][_0xa55c('0x40')](_0xa55c('0x41'))){_0x3c0ec1['limit']=qs[_0xa55c('0x2a')](_0x18c6f1['query']['limit']);_0x3c0ec1[_0xa55c('0x27')]=qs[_0xa55c('0x27')](_0x18c6f1[_0xa55c('0x3d')]['offset']);}_0x3c0ec1[_0xa55c('0x42')]=qs[_0xa55c('0x43')](_0x18c6f1['query'][_0xa55c('0x43')]);_0x3c0ec1['where']=qs[_0xa55c('0x3b')](_[_0xa55c('0x44')](_0x18c6f1['query'],_0x4d3eb5[_0xa55c('0x3b')]),_0x30f23b);if(_0x18c6f1[_0xa55c('0x3d')]['filter']){_0x3c0ec1[_0xa55c('0x45')]=_[_0xa55c('0x46')](_0x3c0ec1[_0xa55c('0x45')],{'$or':_['map'](_0x30f23b,function(_0x334f52){if(_0x334f52['type']!==_0xa55c('0x47')){var _0x3a8af4={};_0x3a8af4[_0x334f52[_0xa55c('0x34')]]={'$like':'%'+_0x18c6f1['query'][_0xa55c('0x48')]+'%'};return _0x3a8af4;}})});}_0x3c0ec1=_[_0xa55c('0x46')]({},_0x3c0ec1,_0x18c6f1['options']);var _0x3d19f5={'where':_0x3c0ec1[_0xa55c('0x45')]};return db['Trunk'][_0xa55c('0x29')](_0x3d19f5)[_0xa55c('0x1a')](function(_0x52f9a7){_0x7c4a47[_0xa55c('0x29')]=_0x52f9a7;if(_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x49')]){_0x3c0ec1[_0xa55c('0x4a')]=[{'all':!![]}];}return db['Trunk'][_0xa55c('0x4b')](_0x3c0ec1);})['then'](function(_0x2157d6){_0x7c4a47[_0xa55c('0x4c')]=_0x2157d6;return _0x7c4a47;})[_0xa55c('0x1a')](respondWithFilteredResult(_0x39267c,_0x3c0ec1))['catch'](handleError(_0x39267c,null));};exports[_0xa55c('0x4d')]=function(_0x250b00,_0x574fe9){var _0x5be06={'raw':![],'where':{'id':_0x250b00[_0xa55c('0x4e')]['id']}},_0x34de95={};_0x34de95[_0xa55c('0x39')]=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x34de95[_0xa55c('0x3d')]=_[_0xa55c('0x4f')](_0x250b00[_0xa55c('0x3d')]);_0x34de95['filters']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],_0x34de95[_0xa55c('0x3d')]);_0x5be06['attributes']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],qs['fields'](_0x250b00[_0xa55c('0x3d')]['fields']));_0x5be06[_0xa55c('0x3e')]=_0x5be06[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x5be06[_0xa55c('0x3e')]:_0x34de95[_0xa55c('0x39')];if(_0x250b00['query'][_0xa55c('0x49')]){_0x5be06[_0xa55c('0x4a')]=[{'all':!![]}];}_0x5be06=_['merge']({},_0x5be06,_0x250b00[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x5be06)[_0xa55c('0x1a')](handleEntityNotFound(_0x574fe9,null))['then'](respondWithResult(_0x574fe9,null))['catch'](handleError(_0x574fe9,null));};exports[_0xa55c('0x53')]=function(_0x250dea,_0x3ca5b8){var _0x44ac57={'where':{'id':_0x250dea[_0xa55c('0x4e')]['id']}},_0x54cbde={};_0x54cbde['model']=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x44ac57[_0xa55c('0x3e')]=_[_0xa55c('0x3c')](_0x54cbde['model'],qs[_0xa55c('0x3f')](_0x250dea['query'][_0xa55c('0x3f')]));_0x44ac57[_0xa55c('0x3e')]=_0x44ac57[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x44ac57[_0xa55c('0x3e')]:_0x54cbde[_0xa55c('0x39')];if(_0x250dea[_0xa55c('0x3d')]['includeAll']){_0x44ac57[_0xa55c('0x4a')]=[{'all':!![]}];}_0x44ac57=_[_0xa55c('0x46')]({},_0x44ac57,_0x250dea[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x44ac57)['then'](handleEntityNotFound(_0x3ca5b8,null))[_0xa55c('0x1a')](function(_0x3cd40d){if(_0x3cd40d){var _0x28bac4=_0x3cd40d[_0xa55c('0x30')]({'plain':!![]});_0x28bac4=qs[_0xa55c('0x54')](_0x28bac4,['id','createdAt',_0xa55c('0x55')]);_0x250dea[_0xa55c('0x56')]=_[_0xa55c('0x54')](_0x250dea[_0xa55c('0x56')],['id',_0xa55c('0x57'),'updatedAt']);return db[_0xa55c('0x36')]['create'](_[_0xa55c('0x46')](_0x28bac4,_0x250dea['body']),{'include':_0x250dea[_0xa55c('0x3d')]['includeAll']?[{'all':!![]}]:undefined})[_0xa55c('0x1a')](function(_0x1333da){var _0x21d6b4=_0x250dea[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x21d6b4)throw new Error(_0xa55c('0x59'));if(_0x21d6b4[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0x14b515=_0x1333da[_0xa55c('0x30')]({'plain':!![]});var _0x51c736=_0xa55c('0x5b');return db[_0xa55c('0x5c')]['find']({'where':{'name':_0x51c736,'userProfileId':_0x21d6b4[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x3e3b4b){if(_0x3e3b4b&&_0x3e3b4b[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')][_0xa55c('0x5f')]({'name':_0x14b515[_0xa55c('0x34')],'resourceId':_0x14b515['id'],'type':_0x3e3b4b[_0xa55c('0x34')],'sectionId':_0x3e3b4b['id']},{})['then'](function(){return _0x1333da;});}else{return _0x1333da;}})[_0xa55c('0x24')](function(_0x475131){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x475131);throw _0x475131;});}return _0x1333da;});}})[_0xa55c('0x1a')](respondWithResult(_0x3ca5b8,0xc9))[_0xa55c('0x24')](handleError(_0x3ca5b8,null));};exports[_0xa55c('0x5f')]=function(_0x4249c1,_0x25d5a1,_0x4a08ca){var _0x347562;return db[_0xa55c('0x36')][_0xa55c('0x5f')](_0x4249c1[_0xa55c('0x56')],{'raw':!![]})[_0xa55c('0x1a')](function(_0x10e711){_0x347562=_0x10e711;return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x3178a6){var _0x3bbc4b=fs['readFileSync'](path[_0xa55c('0x61')](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0x129bb4=fs['readFileSync'](path['join'](config[_0xa55c('0x64')],_0xa55c('0x65')),_0xa55c('0x63'));var _0x42529f=ejs['render'](_0x3bbc4b,{'trunks':_0x3178a6||[]});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x42529f);if(_0x347562[_0xa55c('0x68')]){var _0x3a9910=ejs[_0xa55c('0x69')](_0x129bb4,{'trunks':_0x3178a6||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x3a9910);}})[_0xa55c('0x1a')](function(){return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x5f'),{'module':_0xa55c('0x6b')});})[_0xa55c('0x1a')](function(){var _0x4b2032=_0x4249c1[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x4b2032)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b2032[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0xa340fb=_0x347562['get']({'plain':!![]});return db[_0xa55c('0x5c')][_0xa55c('0x52')]({'where':{'name':_0xa55c('0x5b'),'userProfileId':_0x4b2032[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x506f74){if(_0x506f74&&_0x506f74[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')]['create']({'name':_0xa340fb['name'],'resourceId':_0xa340fb['id'],'type':_0x506f74[_0xa55c('0x34')],'sectionId':_0x506f74['id']},{})['then'](function(){return _0x347562;});}else{return _0x347562;}})[_0xa55c('0x24')](function(_0x5ca0bc){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x5ca0bc);throw _0x5ca0bc;});}return _0x347562;})[_0xa55c('0x1a')](respondWithResult(_0x25d5a1,0xc9))[_0xa55c('0x24')](handleError(_0x25d5a1,null));};exports[_0xa55c('0x2e')]=function(_0xff7b1c,_0x16dfc6,_0x5d8551){var _0x463195;return db[_0xa55c('0x36')][_0xa55c('0x52')]({'where':{'id':_0xff7b1c[_0xa55c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x16dfc6,null))[_0xa55c('0x1a')](saveUpdates(_0xff7b1c[_0xa55c('0x56')],null))[_0xa55c('0x1a')](function(_0x2298ac){if(_0x2298ac){_0x463195=_0x2298ac;return db['Trunk']['findAll']({'raw':!![]});}})[_0xa55c('0x1a')](function(_0x428872){if(_0x428872){var _0x12e3a8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0xd33c9c=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x65')),'utf8');var _0x19497b=ejs['render'](_0x12e3a8,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x19497b);var _0x36ded7=ejs[_0xa55c('0x69')](_0xd33c9c,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x36ded7);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2e'),{'module':_0xa55c('0x6b')});}return null;})[_0xa55c('0x1a')](function(_0x576a1b){if(_0x576a1b){return _0x463195;}})['then'](respondWithResult(_0x16dfc6,null))[_0xa55c('0x24')](handleError(_0x16dfc6,null));};exports[_0xa55c('0x2f')]=function(_0xc2ad5c,_0x256db0,_0x1622cb){var _0x137728;return db['Trunk'][_0xa55c('0x52')]({'where':{'id':_0xc2ad5c[_0xa55c('0x4e')]['id']}})[_0xa55c('0x1a')](handleEntityNotFound(_0x256db0,null))[_0xa55c('0x1a')](removeEntity(_0x256db0,null))[_0xa55c('0x1a')](function(){return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x58b670){var _0x25d09d=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x62')),'utf8');var _0x2685d8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x65')),_0xa55c('0x63'));var _0x5c2229=ejs['render'](_0x25d09d,{'trunks':_0x58b670});var _0x579726=ejs['render'](_0x2685d8,{'trunks':_0x58b670});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x5c2229);fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x579726);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2f'),{'module':'chan_sip.so'});})[_0xa55c('0x24')](handleError(_0x256db0,null));};
\ No newline at end of file
index e395627..99f36a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a81=['bluebird','path','rimraf','../../config/environment','exports','define','tools_trunks','../../config/logger','api','moment'];(function(_0x5b36bd,_0x4dfb36){var _0x1614fe=function(_0x559b7c){while(--_0x559b7c){_0x5b36bd['push'](_0x5b36bd['shift']());}};_0x1614fe(++_0x4dfb36);}(_0x2a81,0x89));var _0x12a8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a81[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x12a8('0x0'))(_0x12a8('0x1'));var moment=require(_0x12a8('0x2'));var BPromise=require(_0x12a8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x12a8('0x4'));var rimraf=require(_0x12a8('0x5'));var config=require(_0x12a8('0x6'));var attributes=require('./trunk.attributes');module[_0x12a8('0x7')]=function(_0x28281e,_0x34d506){return _0x28281e[_0x12a8('0x8')]('Trunk',attributes,{'tableName':_0x12a8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x01ee=['tools_trunks','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','Trunk'];(function(_0x4c2bc5,_0x4984e2){var _0x487209=function(_0x3cabbf){while(--_0x3cabbf){_0x4c2bc5['push'](_0x4c2bc5['shift']());}};_0x487209(++_0x4984e2);}(_0x01ee,0x139));var _0xe01e=function(_0x2b0e6d,_0x305389){_0x2b0e6d=_0x2b0e6d-0x0;var _0x38e162=_0x01ee[_0x2b0e6d];return _0x38e162;};'use strict';var _=require(_0xe01e('0x0'));var util=require(_0xe01e('0x1'));var logger=require(_0xe01e('0x2'))(_0xe01e('0x3'));var moment=require(_0xe01e('0x4'));var BPromise=require('bluebird');var rp=require(_0xe01e('0x5'));var fs=require('fs');var path=require(_0xe01e('0x6'));var rimraf=require(_0xe01e('0x7'));var config=require(_0xe01e('0x8'));var attributes=require('./trunk.attributes');module[_0xe01e('0x9')]=function(_0x5d82cb,_0x47f9da){return _0x5d82cb[_0xe01e('0xa')](_0xe01e('0xb'),attributes,{'tableName':_0xe01e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5f5773e..c9aa506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e5a=['find','raw','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetTrunk','options','where','include','map','model','attributes','ShowTrunk','Trunk'];(function(_0x11137d,_0x1d0e5a){var _0x1aa6e8=function(_0x3a633b){while(--_0x3a633b){_0x11137d['push'](_0x11137d['shift']());}};_0x1aa6e8(++_0x1d0e5a);}(_0x5e5a,0xa8));var _0xa5e5=function(_0x4b73a2,_0x40b5fe){_0x4b73a2=_0x4b73a2-0x0;var _0x383c66=_0x5e5a[_0x4b73a2];return _0x383c66;};'use strict';var _=require(_0xa5e5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa5e5('0x1'));var rs=require(_0xa5e5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa5e5('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa5e5('0x4'))(_0xa5e5('0x5'));var config=require(_0xa5e5('0x6'));var jayson=require(_0xa5e5('0x7'));var client=jayson[_0xa5e5('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3157f4,_0x49342f,_0x1657cf){return new BPromise(function(_0x4bf62c,_0x5d5bee){return client[_0xa5e5('0x9')](_0x3157f4,_0x1657cf)[_0xa5e5('0xa')](function(_0x2e7e90){logger['info'](_0xa5e5('0xb'),_0x49342f,_0xa5e5('0xc'));logger[_0xa5e5('0xd')](_0xa5e5('0xe'),_0x49342f,_0xa5e5('0xc'),JSON[_0xa5e5('0xf')](_0x2e7e90));if(_0x2e7e90[_0xa5e5('0x10')]){if(_0x2e7e90[_0xa5e5('0x10')][_0xa5e5('0x11')]===0x1f4){logger[_0xa5e5('0x10')](_0xa5e5('0xb'),_0x49342f,_0x2e7e90[_0xa5e5('0x10')]['message']);return _0x5d5bee(_0x2e7e90[_0xa5e5('0x10')][_0xa5e5('0x12')]);}logger[_0xa5e5('0x10')](_0xa5e5('0xb'),_0x49342f,_0x2e7e90[_0xa5e5('0x10')][_0xa5e5('0x12')]);return _0x4bf62c(_0x2e7e90[_0xa5e5('0x10')]['message']);}else{logger[_0xa5e5('0x13')](_0xa5e5('0xb'),_0x49342f,_0xa5e5('0xc'));_0x4bf62c(_0x2e7e90[_0xa5e5('0x14')][_0xa5e5('0x12')]);}})['catch'](function(_0x4d97a8){logger[_0xa5e5('0x10')]('Trunk,\x20%s,\x20%s',_0x49342f,_0x4d97a8);_0x5d5bee(_0x4d97a8);});});}exports[_0xa5e5('0x15')]=function(_0x96415e){var _0x5cdb36=this;return new Promise(function(_0xda9167,_0x5aa4a){return db['Trunk']['findAll']({'raw':_0x96415e[_0xa5e5('0x16')]?_0x96415e[_0xa5e5('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x96415e[_0xa5e5('0x16')]?_0x96415e[_0xa5e5('0x16')][_0xa5e5('0x17')]||null:null,'attributes':_0x96415e[_0xa5e5('0x16')]?_0x96415e[_0xa5e5('0x16')]['attributes']||null:null,'limit':_0x96415e[_0xa5e5('0x16')]?_0x96415e['options']['limit']||null:null,'include':_0x96415e[_0xa5e5('0x16')]?_0x96415e['options'][_0xa5e5('0x18')]?_[_0xa5e5('0x19')](_0x96415e['options']['include'],function(_0xd55dfb){return{'model':db[_0xd55dfb[_0xa5e5('0x1a')]],'as':_0xd55dfb['as'],'attributes':_0xd55dfb[_0xa5e5('0x1b')],'include':_0xd55dfb[_0xa5e5('0x18')]?_['map'](_0xd55dfb[_0xa5e5('0x18')],function(_0x3e4475){return{'model':db[_0x3e4475['model']],'as':_0x3e4475['as'],'attributes':_0x3e4475['attributes'],'include':_0x3e4475[_0xa5e5('0x18')]?_[_0xa5e5('0x19')](_0x3e4475[_0xa5e5('0x18')],function(_0x10eb01){return{'model':db[_0x10eb01[_0xa5e5('0x1a')]],'as':_0x10eb01['as'],'attributes':_0x10eb01[_0xa5e5('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xa5e5('0xa')](function(_0xc0db48){logger[_0xa5e5('0x13')](_0xa5e5('0x15'),_0x96415e);logger[_0xa5e5('0xd')](_0xa5e5('0x15'),_0x96415e,JSON[_0xa5e5('0xf')](_0xc0db48));_0xda9167(_0xc0db48);})['catch'](function(_0x378bbf){logger['error']('GetTrunk',_0x378bbf[_0xa5e5('0x12')],_0x96415e);_0x5aa4a(_0x5cdb36[_0xa5e5('0x10')](0x1f4,_0x378bbf['message']));});});};exports[_0xa5e5('0x1c')]=function(_0x4ce388){var _0x4b14ea=this;return new Promise(function(_0x1d5194,_0x4e5709){return db[_0xa5e5('0x1d')][_0xa5e5('0x1e')]({'raw':_0x4ce388[_0xa5e5('0x16')]?_0x4ce388['options'][_0xa5e5('0x1f')]===undefined?!![]:![]:!![],'where':_0x4ce388[_0xa5e5('0x16')]?_0x4ce388[_0xa5e5('0x16')][_0xa5e5('0x17')]||null:null,'attributes':_0x4ce388[_0xa5e5('0x16')]?_0x4ce388['options'][_0xa5e5('0x1b')]||null:null,'include':_0x4ce388[_0xa5e5('0x16')]?_0x4ce388[_0xa5e5('0x16')][_0xa5e5('0x18')]?_['map'](_0x4ce388[_0xa5e5('0x16')][_0xa5e5('0x18')],function(_0x31bc02){return{'model':db[_0x31bc02['model']],'as':_0x31bc02['as'],'attributes':_0x31bc02[_0xa5e5('0x1b')],'include':_0x31bc02['include']?_[_0xa5e5('0x19')](_0x31bc02[_0xa5e5('0x18')],function(_0x455ff4){return{'model':db[_0x455ff4['model']],'as':_0x455ff4['as'],'attributes':_0x455ff4[_0xa5e5('0x1b')],'include':_0x455ff4[_0xa5e5('0x18')]?_[_0xa5e5('0x19')](_0x455ff4[_0xa5e5('0x18')],function(_0x57ade4){return{'model':db[_0x57ade4[_0xa5e5('0x1a')]],'as':_0x57ade4['as'],'attributes':_0x57ade4[_0xa5e5('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x56f53d){logger[_0xa5e5('0x13')](_0xa5e5('0x1c'),_0x4ce388);logger[_0xa5e5('0xd')](_0xa5e5('0x1c'),_0x4ce388,JSON['stringify'](_0x56f53d));_0x1d5194(_0x56f53d);})[_0xa5e5('0x20')](function(_0x5a269f){logger[_0xa5e5('0x10')](_0xa5e5('0x1c'),_0x5a269f['message'],_0x4ce388);_0x4e5709(_0x4b14ea[_0xa5e5('0x10')](0x1f4,_0x5a269f['message']));});});};
\ No newline at end of file
+var _0xb493=['../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','catch','Trunk','findAll','options','raw','where','attributes','limit','include','map','model','find','ShowTrunk','lodash','util','bluebird','ioredis','../../mysqldb'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb493,0x145));var _0x3b49=function(_0x39e92c,_0x47d76f){_0x39e92c=_0x39e92c-0x0;var _0x269281=_0xb493[_0x39e92c];return _0x269281;};'use strict';var _=require(_0x3b49('0x0'));var util=require(_0x3b49('0x1'));var moment=require('moment');var BPromise=require(_0x3b49('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3b49('0x3'));var db=require(_0x3b49('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3b49('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3b49('0x6'));var client=jayson['client'][_0x3b49('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4a3e57,_0x264b1a,_0x19b965){return new BPromise(function(_0x9f4612,_0x17b9b1){return client[_0x3b49('0x8')](_0x4a3e57,_0x19b965)[_0x3b49('0x9')](function(_0x127cea){logger[_0x3b49('0xa')]('Trunk,\x20%s,\x20%s',_0x264b1a,_0x3b49('0xb'));logger[_0x3b49('0xc')](_0x3b49('0xd'),_0x264b1a,'request\x20sent',JSON[_0x3b49('0xe')](_0x127cea));if(_0x127cea[_0x3b49('0xf')]){if(_0x127cea['error'][_0x3b49('0x10')]===0x1f4){logger['error'](_0x3b49('0x11'),_0x264b1a,_0x127cea['error']['message']);return _0x17b9b1(_0x127cea[_0x3b49('0xf')][_0x3b49('0x12')]);}logger[_0x3b49('0xf')](_0x3b49('0x11'),_0x264b1a,_0x127cea['error'][_0x3b49('0x12')]);return _0x9f4612(_0x127cea[_0x3b49('0xf')]['message']);}else{logger[_0x3b49('0xa')](_0x3b49('0x11'),_0x264b1a,_0x3b49('0xb'));_0x9f4612(_0x127cea[_0x3b49('0x13')][_0x3b49('0x12')]);}})[_0x3b49('0x14')](function(_0x2473dc){logger[_0x3b49('0xf')]('Trunk,\x20%s,\x20%s',_0x264b1a,_0x2473dc);_0x17b9b1(_0x2473dc);});});}exports['GetTrunk']=function(_0x230c0b){var _0x2e0a27=this;return new Promise(function(_0x1fd6a7,_0x1d874d){return db[_0x3b49('0x15')][_0x3b49('0x16')]({'raw':_0x230c0b['options']?_0x230c0b[_0x3b49('0x17')][_0x3b49('0x18')]===undefined?!![]:![]:!![],'where':_0x230c0b[_0x3b49('0x17')]?_0x230c0b[_0x3b49('0x17')][_0x3b49('0x19')]||null:null,'attributes':_0x230c0b['options']?_0x230c0b[_0x3b49('0x17')][_0x3b49('0x1a')]||null:null,'limit':_0x230c0b[_0x3b49('0x17')]?_0x230c0b[_0x3b49('0x17')][_0x3b49('0x1b')]||null:null,'include':_0x230c0b['options']?_0x230c0b[_0x3b49('0x17')][_0x3b49('0x1c')]?_[_0x3b49('0x1d')](_0x230c0b[_0x3b49('0x17')]['include'],function(_0x28662e){return{'model':db[_0x28662e[_0x3b49('0x1e')]],'as':_0x28662e['as'],'attributes':_0x28662e['attributes'],'include':_0x28662e[_0x3b49('0x1c')]?_[_0x3b49('0x1d')](_0x28662e[_0x3b49('0x1c')],function(_0x339315){return{'model':db[_0x339315['model']],'as':_0x339315['as'],'attributes':_0x339315[_0x3b49('0x1a')],'include':_0x339315[_0x3b49('0x1c')]?_[_0x3b49('0x1d')](_0x339315[_0x3b49('0x1c')],function(_0x34828c){return{'model':db[_0x34828c[_0x3b49('0x1e')]],'as':_0x34828c['as'],'attributes':_0x34828c[_0x3b49('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3b49('0x9')](function(_0x245b8f){logger[_0x3b49('0xa')]('GetTrunk',_0x230c0b);logger[_0x3b49('0xc')]('GetTrunk',_0x230c0b,JSON['stringify'](_0x245b8f));_0x1fd6a7(_0x245b8f);})[_0x3b49('0x14')](function(_0x49191f){logger['error']('GetTrunk',_0x49191f[_0x3b49('0x12')],_0x230c0b);_0x1d874d(_0x2e0a27['error'](0x1f4,_0x49191f[_0x3b49('0x12')]));});});};exports['ShowTrunk']=function(_0x5a01ca){var _0x31bd04=this;return new Promise(function(_0x268166,_0x10346b){return db[_0x3b49('0x15')][_0x3b49('0x1f')]({'raw':_0x5a01ca[_0x3b49('0x17')]?_0x5a01ca['options'][_0x3b49('0x18')]===undefined?!![]:![]:!![],'where':_0x5a01ca[_0x3b49('0x17')]?_0x5a01ca[_0x3b49('0x17')][_0x3b49('0x19')]||null:null,'attributes':_0x5a01ca[_0x3b49('0x17')]?_0x5a01ca['options']['attributes']||null:null,'include':_0x5a01ca[_0x3b49('0x17')]?_0x5a01ca['options'][_0x3b49('0x1c')]?_[_0x3b49('0x1d')](_0x5a01ca[_0x3b49('0x17')][_0x3b49('0x1c')],function(_0x2a8e6e){return{'model':db[_0x2a8e6e['model']],'as':_0x2a8e6e['as'],'attributes':_0x2a8e6e[_0x3b49('0x1a')],'include':_0x2a8e6e[_0x3b49('0x1c')]?_[_0x3b49('0x1d')](_0x2a8e6e[_0x3b49('0x1c')],function(_0x367715){return{'model':db[_0x367715['model']],'as':_0x367715['as'],'attributes':_0x367715[_0x3b49('0x1a')],'include':_0x367715[_0x3b49('0x1c')]?_[_0x3b49('0x1d')](_0x367715['include'],function(_0x3e6af7){return{'model':db[_0x3e6af7['model']],'as':_0x3e6af7['as'],'attributes':_0x3e6af7[_0x3b49('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3b49('0x9')](function(_0x3f1e84){logger[_0x3b49('0xa')](_0x3b49('0x20'),_0x5a01ca);logger['debug']('ShowTrunk',_0x5a01ca,JSON['stringify'](_0x3f1e84));_0x268166(_0x3f1e84);})[_0x3b49('0x14')](function(_0x5a18a9){logger[_0x3b49('0xf')](_0x3b49('0x20'),_0x5a18a9[_0x3b49('0x12')],_0x5a01ca);_0x10346b(_0x31bd04['error'](0x1f4,_0x5a18a9[_0x3b49('0x12')]));});});};
\ No newline at end of file
index d55f116..46d32fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7704=['update','Router','./user-setting.controller'];(function(_0x513047,_0x2199c5){var _0x15b779=function(_0x412fd5){while(--_0x412fd5){_0x513047['push'](_0x513047['shift']());}};_0x15b779(++_0x2199c5);}(_0x7704,0x19c));var _0x4770=function(_0x38ba9b,_0x498473){_0x38ba9b=_0x38ba9b-0x0;var _0x142466=_0x7704[_0x38ba9b];return _0x142466;};'use strict';var express=require('express');var router=express[_0x4770('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x4770('0x1'));router['put']('/:id',auth['isAuthenticated'](),controller[_0x4770('0x2')]);module['exports']=router;
\ No newline at end of file
+var _0xfb53=['express','./user-setting.controller','put','/:id','update','exports'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0xfb53,0x1aa));var _0x3fb5=function(_0x10afad,_0x30da9d){_0x10afad=_0x10afad-0x0;var _0x588d7e=_0xfb53[_0x10afad];return _0x588d7e;};'use strict';var express=require(_0x3fb5('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x3fb5('0x1'));router[_0x3fb5('0x2')](_0x3fb5('0x3'),auth['isAuthenticated'](),controller[_0x3fb5('0x4')]);module[_0x3fb5('0x5')]=router;
\ No newline at end of file
index 34963c3..3e006a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5bf=['error','ENUM','BOOLEAN','TEXT','UserId'];(function(_0x4c5680,_0x13fa49){var _0x549ede=function(_0x2b83f5){while(--_0x2b83f5){_0x4c5680['push'](_0x4c5680['shift']());}};_0x549ede(++_0x13fa49);}(_0xd5bf,0x1b3));var _0xfd5b=function(_0x40740e,_0x5630a7){_0x40740e=_0x40740e-0x0;var _0x5153a2=_0xd5bf[_0x40740e];return _0x5153a2;};'use strict';var Sequelize=require('sequelize');const CLIENT_SIDE_LOG_LEVELS=[_0xfd5b('0x0'),'warning','info','debug'];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0xfd5b('0x1')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0xfd5b('0x0'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0xfd5b('0x2')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0xfd5b('0x3')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':_0xfd5b('0x4')}};
\ No newline at end of file
+var _0xbb34=['UserId','sequelize','warning','info','debug','exports','ENUM','error','BOOLEAN','TEXT','INTEGER'];(function(_0x3f4649,_0x5cd115){var _0x742f1b=function(_0x5e0b28){while(--_0x5e0b28){_0x3f4649['push'](_0x3f4649['shift']());}};_0x742f1b(++_0x5cd115);}(_0xbb34,0x156));var _0x4bb3=function(_0x16f77c,_0x5256b1){_0x16f77c=_0x16f77c-0x0;var _0x78986e=_0xbb34[_0x16f77c];return _0x78986e;};'use strict';var Sequelize=require(_0x4bb3('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error',_0x4bb3('0x1'),_0x4bb3('0x2'),_0x4bb3('0x3')];module[_0x4bb3('0x4')]={'clientSideLoggingLevel':{'type':Sequelize[_0x4bb3('0x5')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x4bb3('0x6'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x4bb3('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x4bb3('0x8')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x4bb3('0x9')],'unique':_0x4bb3('0xa')}};
\ No newline at end of file
index de99068..f6cbb23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a55=['status','update','then','sendStatus','error','stack','name','send','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','body','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost'];(function(_0x4c9049,_0x42f3a1){var _0x4987ee=function(_0x39498d){while(--_0x39498d){_0x4c9049['push'](_0x4c9049['shift']());}};_0x4987ee(++_0x42f3a1);}(_0x8a55,0x185));var _0x58a5=function(_0x8cc1e4,_0x1b0036){_0x8cc1e4=_0x8cc1e4-0x0;var _0x84e8cf=_0x8a55[_0x8cc1e4];return _0x84e8cf;};'use strict';var _=require(_0x58a5('0x0'));var Redis=require(_0x58a5('0x1'));var logger=require(_0x58a5('0x2'))(_0x58a5('0x3'));var config=require(_0x58a5('0x4'));var db=require(_0x58a5('0x5'))['db'];var socket=require(_0x58a5('0x6'))(new Redis(config[_0x58a5('0x7')]));require('./user-setting.socket')[_0x58a5('0x8')](socket);config[_0x58a5('0x7')]=_[_0x58a5('0x9')](config[_0x58a5('0x7')],{'host':_0x58a5('0xa'),'port':0x18eb});function respondWithResult(_0x1690bc,_0x1f135e){_0x1f135e=_0x1f135e||0xc8;return function(_0xd63fc7){if(_0xd63fc7){return _0x1690bc[_0x58a5('0xb')](_0x1f135e)['json'](_0xd63fc7);}};}function saveUpdates(_0x4204f8){return function(_0xd53faf){if(_0xd53faf){return _0xd53faf[_0x58a5('0xc')](_0x4204f8)[_0x58a5('0xd')](function(_0x3b13fe){return _0x3b13fe;});}return null;};}function handleEntityNotFound(_0x22e655){return function(_0x224d74){if(!_0x224d74){_0x22e655[_0x58a5('0xe')](0x194);}return _0x224d74;};}function handleError(_0x7e8ff5,_0x2f6bd9){_0x2f6bd9=_0x2f6bd9||0x1f4;return function(_0x2b1785){logger[_0x58a5('0xf')](_0x2b1785[_0x58a5('0x10')]);if(_0x2b1785[_0x58a5('0x11')]){delete _0x2b1785['name'];}_0x7e8ff5[_0x58a5('0xb')](_0x2f6bd9)[_0x58a5('0x12')](_0x2b1785);};}exports[_0x58a5('0xc')]=function(_0x3b6242,_0x19804e){if(_0x3b6242['user']['role']!==_0x58a5('0x13'))throw new Error(_0x58a5('0x14'));if(isNaN(Number(_0x3b6242[_0x58a5('0x15')]['id'])))throw new Error(_0x58a5('0x16'));return db[_0x58a5('0x17')]['find']({'where':{'id':_0x3b6242[_0x58a5('0x15')]['id']}})[_0x58a5('0xd')](handleEntityNotFound(_0x19804e,null))['then'](saveUpdates(_0x3b6242[_0x58a5('0x18')],null))[_0x58a5('0xd')](respondWithResult(_0x19804e,null))['catch'](handleError(_0x19804e,null));};
\ No newline at end of file
+var _0xdd0c=['Unauthorized','params','Invalid\x20user\x20setting\x20id','body','catch','ioredis','../../config/logger','api','../../mysqldb','redis','./user-setting.socket','register','defaults','localhost','status','then','sendStatus','error','stack','send','role','admin'];(function(_0x576a10,_0x3fed57){var _0x282321=function(_0x3d6ad9){while(--_0x3d6ad9){_0x576a10['push'](_0x576a10['shift']());}};_0x282321(++_0x3fed57);}(_0xdd0c,0x165));var _0xcdd0=function(_0x649305,_0x33a411){_0x649305=_0x649305-0x0;var _0x1aea8b=_0xdd0c[_0x649305];return _0x1aea8b;};'use strict';var _=require('lodash');var Redis=require(_0xcdd0('0x0'));var logger=require(_0xcdd0('0x1'))(_0xcdd0('0x2'));var config=require('../../config/environment');var db=require(_0xcdd0('0x3'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xcdd0('0x4')]));require(_0xcdd0('0x5'))[_0xcdd0('0x6')](socket);config[_0xcdd0('0x4')]=_[_0xcdd0('0x7')](config['redis'],{'host':_0xcdd0('0x8'),'port':0x18eb});function respondWithResult(_0x1b6f5d,_0x1fd3f6){_0x1fd3f6=_0x1fd3f6||0xc8;return function(_0x15c402){if(_0x15c402){return _0x1b6f5d[_0xcdd0('0x9')](_0x1fd3f6)['json'](_0x15c402);}};}function saveUpdates(_0x17e83e){return function(_0x48db66){if(_0x48db66){return _0x48db66['update'](_0x17e83e)[_0xcdd0('0xa')](function(_0x31cf23){return _0x31cf23;});}return null;};}function handleEntityNotFound(_0x3c753e){return function(_0x173745){if(!_0x173745){_0x3c753e[_0xcdd0('0xb')](0x194);}return _0x173745;};}function handleError(_0x460fce,_0x2ab642){_0x2ab642=_0x2ab642||0x1f4;return function(_0x83845b){logger[_0xcdd0('0xc')](_0x83845b[_0xcdd0('0xd')]);if(_0x83845b['name']){delete _0x83845b['name'];}_0x460fce[_0xcdd0('0x9')](_0x2ab642)[_0xcdd0('0xe')](_0x83845b);};}exports['update']=function(_0xe8e8c0,_0x1b28e0){if(_0xe8e8c0['user'][_0xcdd0('0xf')]!==_0xcdd0('0x10'))throw new Error(_0xcdd0('0x11'));if(isNaN(Number(_0xe8e8c0[_0xcdd0('0x12')]['id'])))throw new Error(_0xcdd0('0x13'));return db['UserSetting']['find']({'where':{'id':_0xe8e8c0[_0xcdd0('0x12')]['id']}})[_0xcdd0('0xa')](handleEntityNotFound(_0x1b28e0,null))[_0xcdd0('0xa')](saveUpdates(_0xe8e8c0[_0xcdd0('0x14')],null))[_0xcdd0('0xa')](respondWithResult(_0x1b28e0,null))[_0xcdd0('0x15')](handleError(_0x1b28e0,null));};
\ No newline at end of file
index d2dbc69..be00d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfc6=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserSetting','setMaxListeners'];(function(_0x5393a6,_0x3c972d){var _0x477463=function(_0x5d6f37){while(--_0x5d6f37){_0x5393a6['push'](_0x5393a6['shift']());}};_0x477463(++_0x3c972d);}(_0xbfc6,0x104));var _0x6bfc=function(_0x9bc703,_0x136c55){_0x9bc703=_0x9bc703-0x0;var _0x60d1b=_0xbfc6[_0x9bc703];return _0x60d1b;};'use strict';var EventEmitter=require(_0x6bfc('0x0'));var UserSetting=require(_0x6bfc('0x1'))['db'][_0x6bfc('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x6bfc('0x3')](0x0);var events={'afterCreate':_0x6bfc('0x4'),'afterUpdate':_0x6bfc('0x5'),'afterDestroy':_0x6bfc('0x6')};function emitEvent(_0x5127cd){return function(_0xff0d0a,_0x147ddc,_0x449445){UserSettingEvents[_0x6bfc('0x7')](_0x5127cd+':'+_0xff0d0a['id'],_0xff0d0a);UserSettingEvents[_0x6bfc('0x7')](_0x5127cd,_0xff0d0a);_0x449445(null);};}for(var e in events){if(events[_0x6bfc('0x8')](e)){var event=events[e];UserSetting[_0x6bfc('0x9')](e,emitEvent(event));}}module[_0x6bfc('0xa')]=UserSettingEvents;
\ No newline at end of file
+var _0x9afc=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x2cc491,_0x5f4a79){var _0x57db95=function(_0x761ca1){while(--_0x761ca1){_0x2cc491['push'](_0x2cc491['shift']());}};_0x57db95(++_0x5f4a79);}(_0x9afc,0xc2));var _0xc9af=function(_0x2ac87c,_0x1b07b4){_0x2ac87c=_0x2ac87c-0x0;var _0x41a0b5=_0x9afc[_0x2ac87c];return _0x41a0b5;};'use strict';var EventEmitter=require(_0xc9af('0x0'));var UserSetting=require(_0xc9af('0x1'))['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xc9af('0x2')](0x0);var events={'afterCreate':_0xc9af('0x3'),'afterUpdate':_0xc9af('0x4'),'afterDestroy':_0xc9af('0x5')};function emitEvent(_0x30e202){return function(_0x1b3119,_0x151cda,_0x37aee8){UserSettingEvents[_0xc9af('0x6')](_0x30e202+':'+_0x1b3119['id'],_0x1b3119);UserSettingEvents['emit'](_0x30e202,_0x1b3119);_0x37aee8(null);};}for(var e in events){if(events[_0xc9af('0x7')](e)){var event=events[e];UserSetting[_0xc9af('0x8')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
index 1b7de2e..71ef14b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe3=['./user-setting.attributes','UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince'];(function(_0x48a3f5,_0x6cb622){var _0x115df1=function(_0x193b41){while(--_0x193b41){_0x48a3f5['push'](_0x48a3f5['shift']());}};_0x115df1(++_0x6cb622);}(_0xefe3,0xf5));var _0x3efe=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xefe3[_0x122ef9];return _0x42fba0;};'use strict';var attributes=require(_0x3efe('0x0'));module['exports']=function(_0x5b1924){return _0x5b1924['define'](_0x3efe('0x1'),attributes,{'tableName':_0x3efe('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x28c2d6){if(!_0x28c2d6[_0x3efe('0x3')])_0x28c2d6['clientSideLoggingEnabledSince']=null;else if(_0x28c2d6[_0x3efe('0x4')]===null)_0x28c2d6['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
+var _0x263f=['clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','UserSetting','user_settings','clientSideLoggingEnabled'];(function(_0x389ec0,_0x38bfcb){var _0x22fef3=function(_0x2c73c0){while(--_0x2c73c0){_0x389ec0['push'](_0x389ec0['shift']());}};_0x22fef3(++_0x38bfcb);}(_0x263f,0x182));var _0xf263=function(_0x38fdb6,_0xf3861){_0x38fdb6=_0x38fdb6-0x0;var _0x307c22=_0x263f[_0x38fdb6];return _0x307c22;};'use strict';var attributes=require(_0xf263('0x0'));module[_0xf263('0x1')]=function(_0x1c3e9e){return _0x1c3e9e[_0xf263('0x2')](_0xf263('0x3'),attributes,{'tableName':_0xf263('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x59c41f){if(!_0x59c41f[_0xf263('0x5')])_0x59c41f[_0xf263('0x6')]=null;else if(_0x59c41f[_0xf263('0x6')]===null)_0x59c41f['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
index 7275d50..d365dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf8c=['length','save','remove','update','emit','user-setting:update','user-setting:update:user-','register'];(function(_0x13f8e1,_0x4953fd){var _0x38ff3c=function(_0x3d98b2){while(--_0x3d98b2){_0x13f8e1['push'](_0x13f8e1['shift']());}};_0x38ff3c(++_0x4953fd);}(_0xaf8c,0x89));var _0xcaf8=function(_0x587408,_0x539a88){_0x587408=_0x587408-0x0;var _0x2c9717=_0xaf8c[_0x587408];return _0x2c9717;};'use strict';var UserSettingEvents=require('./user-setting.events');var events=[_0xcaf8('0x0'),_0xcaf8('0x1'),_0xcaf8('0x2')];function createListener(_0x5c50c9,_0x5612bd){return function(_0x5bd5cb){_0x5612bd[_0xcaf8('0x3')](_0x5c50c9,_0x5bd5cb);if(_0x5c50c9===_0xcaf8('0x4')){_0x5612bd['emit'](_0xcaf8('0x5')+_0x5bd5cb['UserId'],_0x5bd5cb);}};}exports[_0xcaf8('0x6')]=function(_0x5cfa99){for(var _0x8dd384=0x0,_0x24d403=events[_0xcaf8('0x7')];_0x8dd384<_0x24d403;_0x8dd384++){var _0x413767=events[_0x8dd384];var _0x1fa7e6=createListener('user-setting:'+_0x413767,_0x5cfa99);UserSettingEvents['on'](_0x413767,_0x1fa7e6);}};
\ No newline at end of file
+var _0xfe99=['save','remove','update','user-setting:update','emit','UserId','register','user-setting:','./user-setting.events'];(function(_0x5332b1,_0x192941){var _0x129b49=function(_0x469fd0){while(--_0x469fd0){_0x5332b1['push'](_0x5332b1['shift']());}};_0x129b49(++_0x192941);}(_0xfe99,0xbc));var _0x9fe9=function(_0x2f27af,_0x3f686f){_0x2f27af=_0x2f27af-0x0;var _0x29e318=_0xfe99[_0x2f27af];return _0x29e318;};'use strict';var UserSettingEvents=require(_0x9fe9('0x0'));var events=[_0x9fe9('0x1'),_0x9fe9('0x2'),_0x9fe9('0x3')];function createListener(_0x10869f,_0x568e6b){return function(_0x428752){_0x568e6b['emit'](_0x10869f,_0x428752);if(_0x10869f===_0x9fe9('0x4')){_0x568e6b[_0x9fe9('0x5')]('user-setting:update:user-'+_0x428752[_0x9fe9('0x6')],_0x428752);}};}exports[_0x9fe9('0x7')]=function(_0x5c3d4c){for(var _0x2b602f=0x0,_0x492f9a=events['length'];_0x2b602f<_0x492f9a;_0x2b602f++){var _0x2344e0=events[_0x2b602f];var _0x7bc61b=createListener(_0x9fe9('0x8')+_0x2344e0,_0x5c3d4c);UserSettingEvents['on'](_0x2344e0,_0x7bc61b);}};
\ No newline at end of file
index bfbe552..bab7bd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45eb=['getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','getWhatsappInteractions','getTeams','/:id/lists','getLists','/:id/agents','getAgents','getVoicePrefixes','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','addContacts','create','bulkCreate','addQueues','root','server/files/images/','format','%s-%s','now','originalname','single','addAvatar','/:id/logout','logout','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','/:id/fax_accounts','addFaxAccounts','addMailAccounts','addSmsAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeSmsInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','getAvatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions'];(function(_0x4b2251,_0x393f10){var _0x5d22fb=function(_0x10992c){while(--_0x10992c){_0x4b2251['push'](_0x4b2251['shift']());}};_0x5d22fb(++_0x393f10);}(_0x45eb,0xc4));var _0xb45e=function(_0x64954c,_0x3ebec3){_0x64954c=_0x64954c-0x0;var _0x47c88b=_0x45eb[_0x64954c];return _0x47c88b;};'use strict';var multer=require(_0xb45e('0x0'));var util=require(_0xb45e('0x1'));var path=require(_0xb45e('0x2'));var timeout=require(_0xb45e('0x3'));var express=require(_0xb45e('0x4'));var router=express['Router']();var fs_extra=require(_0xb45e('0x5'));var auth=require(_0xb45e('0x6'));var interaction=require(_0xb45e('0x7'));var config=require(_0xb45e('0x8'));var controller=require(_0xb45e('0x9'));router[_0xb45e('0xa')]('/',auth[_0xb45e('0xb')](),controller[_0xb45e('0xc')]);router[_0xb45e('0xa')](_0xb45e('0xd'),auth[_0xb45e('0xb')](),controller[_0xb45e('0xe')]);router[_0xb45e('0xa')](_0xb45e('0xf'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x10')]);router[_0xb45e('0xa')](_0xb45e('0x11'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x12')]);router[_0xb45e('0xa')](_0xb45e('0x13'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x14')]);router[_0xb45e('0xa')]('/:id/avatar',controller[_0xb45e('0x15')]);router[_0xb45e('0xa')](_0xb45e('0x16'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x17')]);router['get']('/:id/contacts',auth[_0xb45e('0xb')](),controller[_0xb45e('0x18')]);router[_0xb45e('0xa')](_0xb45e('0x19'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x1a')]);router[_0xb45e('0xa')](_0xb45e('0x1b'),auth['isAuthenticated'](),controller[_0xb45e('0x1c')]);router[_0xb45e('0xa')](_0xb45e('0x1d'),auth[_0xb45e('0xb')](),controller['getGroups']);router[_0xb45e('0xa')](_0xb45e('0x1e'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x1f')]);router[_0xb45e('0xa')](_0xb45e('0x20'),auth['isAuthenticated'](),controller['getScreenRecordings']);router[_0xb45e('0xa')](_0xb45e('0x21'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x22')]);router[_0xb45e('0xa')](_0xb45e('0x23'),auth[_0xb45e('0xb')](),controller['getOpenchannelInteractions']);router['get'](_0xb45e('0x24'),auth['isAuthenticated'](),controller[_0xb45e('0x25')]);router[_0xb45e('0xa')](_0xb45e('0x26'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x27')]);router[_0xb45e('0xa')]('/:id/fax/interactions',auth[_0xb45e('0xb')](),controller['getFaxInteractions']);router[_0xb45e('0xa')]('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller[_0xb45e('0x28')]);router[_0xb45e('0xa')]('/:id/teams',auth[_0xb45e('0xb')](),controller[_0xb45e('0x29')]);router[_0xb45e('0xa')](_0xb45e('0x2a'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x2b')]);router[_0xb45e('0xa')](_0xb45e('0x2c'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x2d')]);router[_0xb45e('0xa')]('/:id/prefixes',auth['isAuthenticated'](),controller[_0xb45e('0x2e')]);router['get']('/:id/fax_accounts',auth[_0xb45e('0xb')](),controller[_0xb45e('0x2f')]);router['get'](_0xb45e('0x30'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x31')]);router[_0xb45e('0xa')](_0xb45e('0x32'),auth[_0xb45e('0xb')](),controller['getOpenchannelAccounts']);router[_0xb45e('0xa')](_0xb45e('0x33'),auth[_0xb45e('0xb')](),controller['getSmsAccounts']);router[_0xb45e('0xa')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0xb45e('0x34')]);router[_0xb45e('0xa')](_0xb45e('0x35'),auth['isAuthenticated'](),controller[_0xb45e('0x36')]);router[_0xb45e('0xa')](_0xb45e('0x37'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x38')]);router[_0xb45e('0xa')](_0xb45e('0x39'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x3a')]);router[_0xb45e('0x3b')](_0xb45e('0x3c'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x3d')]);router[_0xb45e('0x3b')]('/',auth[_0xb45e('0xb')](),controller[_0xb45e('0x3e')]);router[_0xb45e('0x3b')]('/create_many',auth[_0xb45e('0xb')](),controller[_0xb45e('0x3f')]);router['post'](_0xb45e('0x19'),auth['isAuthenticated'](),controller[_0xb45e('0x40')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2aa03a,_0x307f2b,_0x5cb0d1){_0x5cb0d1(null,path['join'](config[_0xb45e('0x41')],_0xb45e('0x42')));},'filename':function(_0x1ad21a,_0x110973,_0x5d25d2){_0x5d25d2(null,util[_0xb45e('0x43')](_0xb45e('0x44'),Date[_0xb45e('0x45')](),_0x110973[_0xb45e('0x46')]));}})});router[_0xb45e('0x3b')]('/:id/avatar',upload[_0xb45e('0x47')]('file'),controller[_0xb45e('0x48')]);router[_0xb45e('0x3b')]('/:id/login',auth[_0xb45e('0xb')](),controller['login']);router[_0xb45e('0x3b')](_0xb45e('0x49'),auth['isAuthenticated'](),controller[_0xb45e('0x4a')]);router['post']('/:id/pause',auth['isAuthenticated'](),controller[_0xb45e('0x4b')]);router[_0xb45e('0x3b')](_0xb45e('0x4c'),auth['isAuthenticated'](),controller[_0xb45e('0x4d')]);router[_0xb45e('0x3b')]('/:id/teams',auth['isAuthenticated'](),controller[_0xb45e('0x4e')]);router[_0xb45e('0x3b')](_0xb45e('0x4f'),auth['isAuthenticated'](),controller[_0xb45e('0x50')]);router[_0xb45e('0x3b')](_0xb45e('0x51'),auth['isAuthenticated'](),controller[_0xb45e('0x52')]);router['post'](_0xb45e('0x53'),auth[_0xb45e('0xb')](),controller['addFaxInteractions']);router[_0xb45e('0x3b')](_0xb45e('0x54'),auth['isAuthenticated'](),controller['addSmsInteractions']);router[_0xb45e('0x3b')](_0xb45e('0x55'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x56')]);router[_0xb45e('0x3b')]('/:id/whatsapp_interactions',auth[_0xb45e('0xb')](),controller[_0xb45e('0x57')]);router[_0xb45e('0x3b')](_0xb45e('0x58'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x59')]);router['post'](_0xb45e('0x30'),auth['isAuthenticated'](),controller[_0xb45e('0x5a')]);router[_0xb45e('0x3b')](_0xb45e('0x32'),auth[_0xb45e('0xb')](),controller['addOpenchannelAccounts']);router['post'](_0xb45e('0x33'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x5b')]);router[_0xb45e('0x3b')](_0xb45e('0x5c'),auth['isAuthenticated'](),controller[_0xb45e('0x5d')]);router['post'](_0xb45e('0x35'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x5e')]);router[_0xb45e('0x3b')](_0xb45e('0x39'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x5f')]);router[_0xb45e('0x60')](_0xb45e('0x13'),auth['isAuthenticated'](),controller[_0xb45e('0x61')]);router['put'](_0xb45e('0x62'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x63')]);router[_0xb45e('0x64')](_0xb45e('0x19'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x65')]);router[_0xb45e('0x64')]('/:id/teams',auth[_0xb45e('0xb')](),controller[_0xb45e('0x66')]);router[_0xb45e('0x64')](_0xb45e('0x13'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x67')]);router[_0xb45e('0x64')]('/:id/chat_interactions',auth[_0xb45e('0xb')](),controller[_0xb45e('0x68')]);router[_0xb45e('0x64')](_0xb45e('0x51'),auth['isAuthenticated'](),controller[_0xb45e('0x69')]);router[_0xb45e('0x64')](_0xb45e('0x53'),auth[_0xb45e('0xb')](),controller['removeFaxInteractions']);router[_0xb45e('0x64')](_0xb45e('0x54'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x6a')]);router[_0xb45e('0x64')](_0xb45e('0x55'),auth[_0xb45e('0xb')](),controller['removeOpenchannelInteractions']);router[_0xb45e('0x64')](_0xb45e('0x6b'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x6c')]);router[_0xb45e('0x64')](_0xb45e('0x58'),auth['isAuthenticated'](),controller[_0xb45e('0x6d')]);router[_0xb45e('0x64')](_0xb45e('0x30'),auth['isAuthenticated'](),controller[_0xb45e('0x6e')]);router['delete'](_0xb45e('0x32'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x6f')]);router[_0xb45e('0x64')](_0xb45e('0x33'),auth['isAuthenticated'](),controller['removeSmsAccounts']);router[_0xb45e('0x64')](_0xb45e('0x5c'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x70')]);router['delete'](_0xb45e('0x35'),auth[_0xb45e('0xb')](),controller[_0xb45e('0x71')]);router[_0xb45e('0x64')](_0xb45e('0x39'),auth[_0xb45e('0xb')](),controller['removeApiKey']);module[_0xb45e('0x72')]=router;
\ No newline at end of file
+var _0x6215=['/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','getWhatsappAccounts','/:id/scheduled_calls','/:id/api_key','getApiKey','post','addContacts','create','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','file','addAvatar','login','/:id/logout','logout','/:id/pause','pause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','createApiKey','update','put','/:id/password','changePassword','removeQueues','removeTeams','delete','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','/:id/prefixes'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x6215,0x198));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5621('0x0'));var util=require(_0x5621('0x1'));var path=require(_0x5621('0x2'));var timeout=require('connect-timeout');var express=require(_0x5621('0x3'));var router=express[_0x5621('0x4')]();var fs_extra=require(_0x5621('0x5'));var auth=require(_0x5621('0x6'));var interaction=require(_0x5621('0x7'));var config=require(_0x5621('0x8'));var controller=require('./user.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5621('0x9')](_0x5621('0xa'),auth[_0x5621('0xb')](),controller[_0x5621('0xc')]);router[_0x5621('0x9')]('/whoami',auth[_0x5621('0xb')](),controller[_0x5621('0xd')]);router[_0x5621('0x9')](_0x5621('0xe'),auth['isAuthenticated'](),controller[_0x5621('0xf')]);router[_0x5621('0x9')](_0x5621('0x10'),auth['isAuthenticated'](),controller[_0x5621('0x11')]);router[_0x5621('0x9')](_0x5621('0x12'),controller[_0x5621('0x13')]);router[_0x5621('0x9')](_0x5621('0x14'),auth[_0x5621('0xb')](),controller[_0x5621('0x15')]);router[_0x5621('0x9')](_0x5621('0x16'),auth['isAuthenticated'](),controller[_0x5621('0x17')]);router[_0x5621('0x9')](_0x5621('0x18'),auth['isAuthenticated'](),controller[_0x5621('0x19')]);router[_0x5621('0x9')]('/:id/queues_rt',auth[_0x5621('0xb')](),controller[_0x5621('0x1a')]);router[_0x5621('0x9')](_0x5621('0x1b'),auth[_0x5621('0xb')](),controller[_0x5621('0x1c')]);router[_0x5621('0x9')](_0x5621('0x1d'),auth[_0x5621('0xb')](),controller[_0x5621('0x1e')]);router['get'](_0x5621('0x1f'),auth[_0x5621('0xb')](),controller['getScreenRecordings']);router[_0x5621('0x9')]('/:id/chat/interactions',auth[_0x5621('0xb')](),controller[_0x5621('0x20')]);router[_0x5621('0x9')](_0x5621('0x21'),auth[_0x5621('0xb')](),controller['getOpenchannelInteractions']);router[_0x5621('0x9')](_0x5621('0x22'),auth[_0x5621('0xb')](),controller[_0x5621('0x23')]);router['get'](_0x5621('0x24'),auth[_0x5621('0xb')](),controller[_0x5621('0x25')]);router[_0x5621('0x9')](_0x5621('0x26'),auth[_0x5621('0xb')](),controller[_0x5621('0x27')]);router['get'](_0x5621('0x28'),auth['isAuthenticated'](),controller[_0x5621('0x29')]);router[_0x5621('0x9')](_0x5621('0x2a'),auth[_0x5621('0xb')](),controller[_0x5621('0x2b')]);router[_0x5621('0x9')](_0x5621('0x2c'),auth['isAuthenticated'](),controller[_0x5621('0x2d')]);router[_0x5621('0x9')](_0x5621('0x2e'),auth[_0x5621('0xb')](),controller['getAgents']);router[_0x5621('0x9')](_0x5621('0x2f'),auth['isAuthenticated'](),controller['getVoicePrefixes']);router[_0x5621('0x9')](_0x5621('0x30'),auth[_0x5621('0xb')](),controller[_0x5621('0x31')]);router[_0x5621('0x9')](_0x5621('0x32'),auth[_0x5621('0xb')](),controller['getMailAccounts']);router[_0x5621('0x9')](_0x5621('0x33'),auth[_0x5621('0xb')](),controller[_0x5621('0x34')]);router[_0x5621('0x9')]('/:id/sms_accounts',auth[_0x5621('0xb')](),controller[_0x5621('0x35')]);router[_0x5621('0x9')](_0x5621('0x36'),auth[_0x5621('0xb')](),controller['getChatWebsites']);router[_0x5621('0x9')]('/:id/whatsapp_accounts',auth[_0x5621('0xb')](),controller[_0x5621('0x37')]);router[_0x5621('0x9')](_0x5621('0x38'),auth[_0x5621('0xb')](),controller['getScheduledCalls']);router[_0x5621('0x9')](_0x5621('0x39'),auth[_0x5621('0xb')](),controller[_0x5621('0x3a')]);router[_0x5621('0x3b')]('/:id/contacts',auth[_0x5621('0xb')](),controller[_0x5621('0x3c')]);router[_0x5621('0x3b')]('/',auth['isAuthenticated'](),controller[_0x5621('0x3d')]);router[_0x5621('0x3b')]('/create_many',auth[_0x5621('0xb')](),controller[_0x5621('0x3e')]);router[_0x5621('0x3b')](_0x5621('0x18'),auth[_0x5621('0xb')](),controller[_0x5621('0x3f')]);var upload=multer({'storage':multer[_0x5621('0x40')]({'destination':function(_0x53c9ff,_0x1e1f65,_0x3c849d){_0x3c849d(null,path[_0x5621('0x41')](config[_0x5621('0x42')],_0x5621('0x43')));},'filename':function(_0x8120e,_0x49cff4,_0x19738f){_0x19738f(null,util[_0x5621('0x44')](_0x5621('0x45'),Date['now'](),_0x49cff4['originalname']));}})});router[_0x5621('0x3b')]('/:id/avatar',upload['single'](_0x5621('0x46')),controller[_0x5621('0x47')]);router[_0x5621('0x3b')]('/:id/login',auth[_0x5621('0xb')](),controller[_0x5621('0x48')]);router['post'](_0x5621('0x49'),auth[_0x5621('0xb')](),controller[_0x5621('0x4a')]);router[_0x5621('0x3b')](_0x5621('0x4b'),auth[_0x5621('0xb')](),controller[_0x5621('0x4c')]);router[_0x5621('0x3b')]('/:id/unpause',auth[_0x5621('0xb')](),controller['unpause']);router[_0x5621('0x3b')](_0x5621('0x2a'),auth[_0x5621('0xb')](),controller['addTeams']);router[_0x5621('0x3b')](_0x5621('0x4d'),auth[_0x5621('0xb')](),controller[_0x5621('0x4e')]);router[_0x5621('0x3b')](_0x5621('0x4f'),auth[_0x5621('0xb')](),controller['addMailInteractions']);router[_0x5621('0x3b')](_0x5621('0x50'),auth[_0x5621('0xb')](),controller[_0x5621('0x51')]);router[_0x5621('0x3b')](_0x5621('0x52'),auth['isAuthenticated'](),controller[_0x5621('0x53')]);router['post'](_0x5621('0x54'),auth['isAuthenticated'](),controller[_0x5621('0x55')]);router[_0x5621('0x3b')](_0x5621('0x56'),auth[_0x5621('0xb')](),controller[_0x5621('0x57')]);router[_0x5621('0x3b')](_0x5621('0x30'),auth['isAuthenticated'](),controller[_0x5621('0x58')]);router[_0x5621('0x3b')](_0x5621('0x32'),auth['isAuthenticated'](),controller[_0x5621('0x59')]);router[_0x5621('0x3b')](_0x5621('0x33'),auth[_0x5621('0xb')](),controller[_0x5621('0x5a')]);router[_0x5621('0x3b')](_0x5621('0x5b'),auth[_0x5621('0xb')](),controller[_0x5621('0x5c')]);router[_0x5621('0x3b')](_0x5621('0x36'),auth['isAuthenticated'](),controller[_0x5621('0x5d')]);router[_0x5621('0x3b')]('/:id/whatsapp_accounts',auth[_0x5621('0xb')](),controller[_0x5621('0x5e')]);router['post']('/:id/api_key',auth[_0x5621('0xb')](),controller[_0x5621('0x5f')]);router['put']('/:id',auth[_0x5621('0xb')](),controller[_0x5621('0x60')]);router[_0x5621('0x61')](_0x5621('0x62'),auth[_0x5621('0xb')](),controller[_0x5621('0x63')]);router['delete'](_0x5621('0x18'),auth['isAuthenticated'](),controller[_0x5621('0x64')]);router['delete']('/:id/teams',auth[_0x5621('0xb')](),controller[_0x5621('0x65')]);router[_0x5621('0x66')]('/:id',auth[_0x5621('0xb')](),controller['destroy']);router[_0x5621('0x66')](_0x5621('0x4d'),auth[_0x5621('0xb')](),controller[_0x5621('0x67')]);router[_0x5621('0x66')](_0x5621('0x4f'),auth['isAuthenticated'](),controller[_0x5621('0x68')]);router[_0x5621('0x66')](_0x5621('0x50'),auth[_0x5621('0xb')](),controller[_0x5621('0x69')]);router[_0x5621('0x66')](_0x5621('0x52'),auth[_0x5621('0xb')](),controller[_0x5621('0x6a')]);router['delete'](_0x5621('0x54'),auth[_0x5621('0xb')](),controller[_0x5621('0x6b')]);router[_0x5621('0x66')](_0x5621('0x56'),auth['isAuthenticated'](),controller['removeWhatsappInteractions']);router[_0x5621('0x66')](_0x5621('0x30'),auth['isAuthenticated'](),controller[_0x5621('0x6c')]);router[_0x5621('0x66')](_0x5621('0x32'),auth['isAuthenticated'](),controller[_0x5621('0x6d')]);router[_0x5621('0x66')](_0x5621('0x33'),auth[_0x5621('0xb')](),controller[_0x5621('0x6e')]);router['delete'](_0x5621('0x5b'),auth[_0x5621('0xb')](),controller[_0x5621('0x6f')]);router['delete'](_0x5621('0x36'),auth[_0x5621('0xb')](),controller[_0x5621('0x70')]);router[_0x5621('0x66')]('/:id/whatsapp_accounts',auth[_0x5621('0xb')](),controller[_0x5621('0x71')]);router[_0x5621('0x66')](_0x5621('0x39'),auth[_0x5621('0xb')](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
index d0a2374..8b5b01a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['all','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','refuse','originate','uac','uas','fingerprint','certificate','active','actpass','update,nonat','TEXT','get','isArray','encryption','avpf','force_avp','icesupport','dtlsenable','dtlssetup','dtlsprivatekey','wss','dtlsverify','dtlscertfile','/etc/pki/tls/private/motion.key','rtcp_mux','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','UNSIGNED','sequelize','moment','util','lodash','exports','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','STRING','fullname','callerid','getDataValue','internal','toLowerCase','ENUM','admin','user','agent','telephone','INTEGER','accountcode','\x22%s\x22\x20<%s>','BOOLEAN','DATE','dynamic','friend','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_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','yes','nonat','update','outgoing','join','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'];(function(_0x35ff0c,_0x23bd34){var _0xd994fa=function(_0x55c8b5){while(--_0x55c8b5){_0x35ff0c['push'](_0x35ff0c['shift']());}};_0xd994fa(++_0x23bd34);}(_0x008c,0x188));var _0xc008=function(_0x5303b9,_0x5c548){_0x5303b9=_0x5303b9-0x0;var _0x455125=_0x008c[_0x5303b9];return _0x455125;};'use strict';var Sequelize=require(_0xc008('0x0'));var moment=require(_0xc008('0x1'));var util=require(_0xc008('0x2'));var _=require(_0xc008('0x3'));module[_0xc008('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc008('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x47063f){this[_0xc008('0x6')](_0xc008('0x5'),_0x47063f);this[_0xc008('0x6')](_0xc008('0x7'),_0x47063f);},'comment':_0xc008('0x8')},'fullname':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'set':function(_0x9c8cb2){this['setDataValue'](_0xc008('0xa'),_0x9c8cb2);this['setDataValue'](_0xc008('0xb'),util['format']('\x22%s\x22\x20<%s>',_0x9c8cb2,this[_0xc008('0xc')](_0xc008('0xd'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x1eacfa){if(_0x1eacfa){this[_0xc008('0x6')]('email',_0x1eacfa[_0xc008('0xe')]());}}},'role':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x10'),_0xc008('0x11'),_0xc008('0x12'),_0xc008('0x13')),'allowNull':![]},'password':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':![],'unique':'internal','set':function(_0x25e13f){this[_0xc008('0x6')](_0xc008('0xd'),_0x25e13f);this[_0xc008('0x6')](_0xc008('0x15'),_0x25e13f);this['setDataValue']('callerid',util['format'](_0xc008('0x16'),this[_0xc008('0xc')](_0xc008('0xa')),_0x25e13f));}},'salt':{'type':Sequelize[_0xc008('0x9')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0xc008('0x9')]},'city':{'type':Sequelize[_0xc008('0x9')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0xc008('0x18')]},'chatCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xc008('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':_0xc008('0x19')},'ipaddr':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'port':{'type':Sequelize[_0xc008('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x1a'),_0xc008('0x11'),'peer'),'allowNull':!![],'defaultValue':_0xc008('0x1a')},'context':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':_0xc008('0x1b')},'callingpres':{'type':Sequelize[_0xc008('0xf')]('ALLOWED_NOT_SCREENED',_0xc008('0x1c'),_0xc008('0x1d'),'ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0xc008('0x1e'),_0xc008('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'permit':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'secret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'transport':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':_0xc008('0x20'),'set':function(_0x2b862d){this[_0xc008('0x6')](_0xc008('0x21'),_0x2b862d?_0x2b862d['join'](','):null);},'get':function(){return this[_0xc008('0xc')](_0xc008('0x21'))?this['getDataValue'](_0xc008('0x21'))[_0xc008('0x22')](','):null;},'comment':_0xc008('0x23')},'dtmfmode':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x24'),_0xc008('0x25'),_0xc008('0x26'),_0xc008('0x27'),_0xc008('0x28')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x2a'),_0xc008('0x2b'),_0xc008('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'nat':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x399b64){this[_0xc008('0x6')]('nat',_0x399b64?_0x399b64[_0xc008('0x2d')](','):null);},'get':function(){return this[_0xc008('0xc')](_0xc008('0x2e'))?this['getDataValue']('nat')['split'](','):null;},'comment':_0xc008('0x2f')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xc008('0x9')]},'pickupgroup':{'type':Sequelize[_0xc008('0x9')]},'namedpickupgroup':{'type':Sequelize[_0xc008('0x9')]},'language':{'type':Sequelize[_0xc008('0x9')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xc008('0x9')]},'disallow':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'defaultValue':_0xc008('0x30')},'allow':{'type':Sequelize[_0xc008('0x9')],'allowNull':![],'defaultValue':_0xc008('0x31'),'set':function(_0x387dfd){this[_0xc008('0x6')](_0xc008('0x32'),_0x387dfd?_0x387dfd[_0xc008('0x2d')](';'):_0xc008('0x31'));},'get':function(){return this['getDataValue'](_0xc008('0x32'))?this[_0xc008('0xc')](_0xc008('0x32'))[_0xc008('0x22')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'set':function(_0x36e7ae){this[_0xc008('0x6')]('insecure',_0x36e7ae?_0x36e7ae[_0xc008('0x2d')](','):null);},'get':function(){return this[_0xc008('0xc')](_0xc008('0x33'))?this[_0xc008('0xc')](_0xc008('0x33'))['split'](','):null;},'comment':_0xc008('0x34')},'trustrpid':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'template':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM']('accept',_0xc008('0x37'),_0xc008('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x39'),_0xc008('0x3a')),'allowNull':!![],'defaultValue':_0xc008('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no',_0xc008('0x3b'),_0xc008('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x3d'),'passive',_0xc008('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xc008('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0xc008('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xc008('0xf')](_0xc008('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xc008('0xf')]('yes','no',_0xc008('0x2a'),'update',_0xc008('0x3f')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xc008('0x9')]},'resetPasswordExpires':{'type':Sequelize[_0xc008('0x18')]},'passwordResetAt':{'type':Sequelize[_0xc008('0x18')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xc008('0x40')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x375e71){this['setDataValue']('showWebBar',_0x375e71);var _0x37ce5e=this[_0xc008('0x41')]({'plain':!![]});switch(_0x375e71){case 0x0:case 0x1:var _0x56e755=_0x37ce5e[_0xc008('0x21')]?_[_0xc008('0x42')](_0x37ce5e[_0xc008('0x21')])?_0x37ce5e[_0xc008('0x21')][_0xc008('0x2d')]():_0x37ce5e[_0xc008('0x21')]:_0xc008('0x20');if(_0x56e755==='wss'){_0x56e755=_0xc008('0x20');}this[_0xc008('0x6')](_0xc008('0x21'),_0x56e755);this[_0xc008('0x6')](_0xc008('0x43'),'no');this[_0xc008('0x6')](_0xc008('0x44'),null);this[_0xc008('0x6')](_0xc008('0x45'),null);this[_0xc008('0x6')](_0xc008('0x46'),null);this[_0xc008('0x6')](_0xc008('0x47'),null);this[_0xc008('0x6')]('dtlsverify',null);this[_0xc008('0x6')](_0xc008('0x48'),null);this[_0xc008('0x6')]('dtlscertfile',null);this[_0xc008('0x6')](_0xc008('0x49'),null);this['setDataValue']('rtcp_mux','no');break;case 0x2:this[_0xc008('0x6')](_0xc008('0x21'),_0xc008('0x4a'));this[_0xc008('0x6')](_0xc008('0x43'),_0xc008('0x29'));this[_0xc008('0x6')](_0xc008('0x44'),_0xc008('0x29'));this[_0xc008('0x6')](_0xc008('0x45'),'yes');this[_0xc008('0x6')](_0xc008('0x46'),_0xc008('0x29'));this[_0xc008('0x6')]('dtlsenable',_0xc008('0x29'));this['setDataValue'](_0xc008('0x4b'),'no');this[_0xc008('0x6')](_0xc008('0x48'),'actpass');this[_0xc008('0x6')](_0xc008('0x4c'),_0x37ce5e[_0xc008('0x4c')]||'/etc/pki/tls/certs/motion.crt');this[_0xc008('0x6')]('dtlsprivatekey',_0x37ce5e[_0xc008('0x49')]||_0xc008('0x4d'));this[_0xc008('0x6')](_0xc008('0x4e'),_0xc008('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x3c30db){this[_0xc008('0x6')]('permissions',_0x3c30db?_0x3c30db[_0xc008('0x2d')](','):[]);},'get':function(){return this['getDataValue'](_0xc008('0x4f'))?_['map'](this[_0xc008('0xc')]('permissions')[_0xc008('0x22')](','),function(_0x103d75){return parseInt(_0x103d75,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xc008('0x9')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xc008('0x9')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xc008('0x9')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xc008('0xf')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xc008('0x50')],'get':function(){return this[_0xc008('0xc')](_0xc008('0x51'))?this[_0xc008('0xc')](_0xc008('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0xc008('0x9')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xc008('0x9')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![],'set':function(_0x3b2669){if(typeof _0x3b2669===_0xc008('0x52')){var _0x2edb8e=_0x3b2669==='1'?!![]:_0x3b2669==='0'?![]:_0x3b2669===_0xc008('0x53')?!![]:_0x3b2669===_0xc008('0x54')?![]:![];this[_0xc008('0x6')](_0xc008('0x55'),_0x2edb8e);}else{this['setDataValue']('screenrecording',_0x3b2669);}}},'blocked':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![],'set':function(_0x3104cd){this[_0xc008('0x6')]('blocked',_0x3104cd);if(_0x3104cd===!![]){this[_0xc008('0x6')](_0xc008('0x56'),moment());this['setDataValue']('loginAttempts',0x0);}else{this['setDataValue'](_0xc008('0x56'),null);}}},'blockedAt':{'type':Sequelize[_0xc008('0x18')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xc008('0x14')](0x5)[_0xc008('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xc008('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0xc008('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0xc008('0x14')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x70e0=['refuse','originate','uac','uas','fingerprint','update,nonat','TEXT','showWebBar','get','isArray','wss','udp','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlsprivatekey','rtcp_mux','actpass','dtlscertfile','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','INTEGER','BOOLEAN','DATE','dynamic','friend','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','join','transport','split','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','ulaw;alaw;gsm','allow','insecure','\x22\x22\x20<>','always','accept'];(function(_0x414c93,_0x44ffbe){var _0x4b593c=function(_0x1d37cf){while(--_0x1d37cf){_0x414c93['push'](_0x414c93['shift']());}};_0x4b593c(++_0x44ffbe);}(_0x70e0,0x17b));var _0x070e=function(_0x13ce13,_0x46e81b){_0x13ce13=_0x13ce13-0x0;var _0x104301=_0x70e0[_0x13ce13];return _0x104301;};'use strict';var Sequelize=require(_0x070e('0x0'));var moment=require(_0x070e('0x1'));var util=require(_0x070e('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'unique':_0x070e('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x277d32){this[_0x070e('0x5')]('name',_0x277d32);this[_0x070e('0x5')]('defaultuser',_0x277d32);},'comment':_0x070e('0x6')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x56e420){this['setDataValue'](_0x070e('0x7'),_0x56e420);this[_0x070e('0x5')](_0x070e('0x8'),util[_0x070e('0x9')](_0x070e('0xa'),_0x56e420,this[_0x070e('0xb')](_0x070e('0xc'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x070e('0xd'),'validate':{'isEmail':!![]},'set':function(_0x2e3e5e){if(_0x2e3e5e){this[_0x070e('0x5')](_0x070e('0xd'),_0x2e3e5e[_0x070e('0xe')]());}}},'role':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x10'),_0x070e('0x11'),_0x070e('0x12'),_0x070e('0x13')),'allowNull':![]},'password':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':![],'unique':'internal','set':function(_0x4a33d2){this['setDataValue'](_0x070e('0xc'),_0x4a33d2);this[_0x070e('0x5')]('accountcode',_0x4a33d2);this['setDataValue'](_0x070e('0x8'),util[_0x070e('0x9')](_0x070e('0xa'),this[_0x070e('0xb')]('fullname'),_0x4a33d2));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x070e('0x3')]},'mobile':{'type':Sequelize[_0x070e('0x3')]},'address':{'type':Sequelize[_0x070e('0x3')]},'zipcode':{'type':Sequelize[_0x070e('0x3')]},'userpic':{'type':Sequelize[_0x070e('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x070e('0x3')]},'online':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x070e('0x16')]},'voicePause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x070e('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x070e('0x16')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x070e('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x17')},'ipaddr':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x070e('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x18'),_0x070e('0x11'),_0x070e('0x19')),'allowNull':!![],'defaultValue':_0x070e('0x18')},'context':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x1a'),_0x070e('0x1b'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x070e('0x1c'),_0x070e('0x1d'),_0x070e('0x1e'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'udp','set':function(_0x59c5b4){this[_0x070e('0x5')]('transport',_0x59c5b4?_0x59c5b4[_0x070e('0x1f')](','):null);},'get':function(){return this[_0x070e('0xb')]('transport')?this['getDataValue'](_0x070e('0x20'))[_0x070e('0x21')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM'](_0x070e('0x22'),_0x070e('0x23'),_0x070e('0x24'),_0x070e('0x25'),_0x070e('0x26')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no',_0x070e('0x28'),_0x070e('0x29'),_0x070e('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x2b'),'set':function(_0x34746e){this['setDataValue']('nat',_0x34746e?_0x34746e['join'](','):null);},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2c'))?this[_0x070e('0xb')](_0x070e('0x2c'))[_0x070e('0x21')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x070e('0x3')]},'namedcallgroup':{'type':Sequelize[_0x070e('0x3')]},'pickupgroup':{'type':Sequelize[_0x070e('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x070e('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x070e('0x3')]},'disallow':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'defaultValue':_0x070e('0x2d'),'set':function(_0x4800a9){this[_0x070e('0x5')]('allow',_0x4800a9?_0x4800a9[_0x070e('0x1f')](';'):_0x070e('0x2d'));},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2e'))?this[_0x070e('0xb')]('allow')[_0x070e('0x21')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![],'set':function(_0x38879f){this['setDataValue'](_0x070e('0x2f'),_0x38879f?_0x38879f[_0x070e('0x1f')](','):null);},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2f'))?this['getDataValue'](_0x070e('0x2f'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x30')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':_0x070e('0x27')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no',_0x070e('0x31')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x32'),_0x070e('0x33'),_0x070e('0x34')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x35'),'uas'),'allowNull':!![],'defaultValue':_0x070e('0x36')},'t38pt_usertpsource':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':_0x070e('0x27')},'keepalive':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no',_0x070e('0x37'),'certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x070e('0xf')]('active','passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no',_0x070e('0x28'),'update',_0x070e('0x38')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x070e('0x16')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x070e('0x39')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x4cb86f){this['setDataValue'](_0x070e('0x3a'),_0x4cb86f);var _0x1ae5cb=this[_0x070e('0x3b')]({'plain':!![]});switch(_0x4cb86f){case 0x0:case 0x1:var _0x122198=_0x1ae5cb[_0x070e('0x20')]?_[_0x070e('0x3c')](_0x1ae5cb['transport'])?_0x1ae5cb[_0x070e('0x20')]['join']():_0x1ae5cb[_0x070e('0x20')]:'udp';if(_0x122198===_0x070e('0x3d')){_0x122198=_0x070e('0x3e');}this['setDataValue'](_0x070e('0x20'),_0x122198);this['setDataValue'](_0x070e('0x3f'),'no');this[_0x070e('0x5')](_0x070e('0x40'),null);this[_0x070e('0x5')](_0x070e('0x41'),null);this[_0x070e('0x5')](_0x070e('0x42'),null);this[_0x070e('0x5')](_0x070e('0x43'),null);this[_0x070e('0x5')](_0x070e('0x44'),null);this[_0x070e('0x5')](_0x070e('0x45'),null);this[_0x070e('0x5')]('dtlscertfile',null);this[_0x070e('0x5')](_0x070e('0x46'),null);this[_0x070e('0x5')](_0x070e('0x47'),'no');break;case 0x2:this['setDataValue'](_0x070e('0x20'),_0x070e('0x3d'));this[_0x070e('0x5')](_0x070e('0x3f'),_0x070e('0x27'));this[_0x070e('0x5')]('avpf',_0x070e('0x27'));this[_0x070e('0x5')](_0x070e('0x41'),_0x070e('0x27'));this['setDataValue'](_0x070e('0x42'),'yes');this[_0x070e('0x5')](_0x070e('0x43'),_0x070e('0x27'));this[_0x070e('0x5')](_0x070e('0x44'),'no');this['setDataValue'](_0x070e('0x45'),_0x070e('0x48'));this[_0x070e('0x5')](_0x070e('0x49'),_0x1ae5cb['dtlscertfile']||_0x070e('0x4a'));this['setDataValue'](_0x070e('0x46'),_0x1ae5cb[_0x070e('0x46')]||_0x070e('0x4b'));this['setDataValue'](_0x070e('0x47'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x070e('0x39')],'set':function(_0x5ce157){this[_0x070e('0x5')](_0x070e('0x4c'),_0x5ce157?_0x5ce157['join'](','):[]);},'get':function(){return this[_0x070e('0xb')]('permissions')?_[_0x070e('0x4d')](this[_0x070e('0xb')]('permissions')['split'](','),function(_0x29ee66){return parseInt(_0x29ee66,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x070e('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x070e('0x4e')],'get':function(){return this[_0x070e('0xb')](_0x070e('0x4f'))?this[_0x070e('0xb')](_0x070e('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x070e('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x4f720f){if(typeof _0x4f720f==='string'){var _0x1624cd=_0x4f720f==='1'?!![]:_0x4f720f==='0'?![]:_0x4f720f===_0x070e('0x50')?!![]:_0x4f720f===_0x070e('0x51')?![]:![];this[_0x070e('0x5')]('screenrecording',_0x1624cd);}else{this[_0x070e('0x5')](_0x070e('0x52'),_0x4f720f);}}},'blocked':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![],'set':function(_0xd74f9c){this[_0x070e('0x5')](_0x070e('0x53'),_0xd74f9c);if(_0xd74f9c===!![]){this['setDataValue'](_0x070e('0x54'),moment());this['setDataValue'](_0x070e('0x55'),0x0);}else{this[_0x070e('0x5')](_0x070e('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x070e('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x070e('0x14')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0}};
\ No newline at end of file
index f415d25..79594cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e28=['$like','$overlap','$contains','$contained','$any','firstName','lastName','CmContact','Contact','dialActive','retrieveApiKey','token','generateApiKey','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','flatten','col','desc','asc','substring','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','ringing','voiceStatus','busy','slice','charAt','toUpperCase','ui.','field','ui.createdAt','user_has_','toString','OpenTabs','moment','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../errors/api','APIBadRequestError','APINotFoundError','socket.io-emitter','redis','defaults','localhost','http','then','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','User,\x20%s,\x20%s','message','info','catch','sendStatus','status','end','json','undefined','offset','count','Content-Range','update','emit','destroy','role','admin','Users','user','agent','Telephones','ignore','map','value','includes','find','name','UserProfileResource','send','User','rawAttributes','type','key','salt','where','query','userSetting','true','include','UserSetting','attributes','push','rows','length','chat','dataValues','sms','fax','mail','openchannel','whatsapp','show','params','model','keys','password','intersection','fields','includeAll','merge','options','openTabs','all','body','describe','omit','ids','internal','securePassword','max','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','SELECT','from','mailbox','VoiceMail','fullname','email','permissions','101','113','110','104','106','107','108','109','100','111','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','telephone','Agents','isEmpty','compact','newPassword','Sequelize','ValidationError','authenticate','oldPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','toLowerCase','Queues','penalty','spread','capitalize','QueueId','Queue:save','voice','VoiceQueue','get','SIP/%s','UserVoiceQueueRt','removeQueues','Unknown\x20channel','remove','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','createdAt','FaxOpenTabs','FAX','OPENCHANNEL','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','concat','getContacts','filters','order','sort','pick','filter','hasOwnProperty','CmList','List','Tag','color','tag','nolimit','limit','Queue','findAll','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','ChatInteraction','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','SmsInteraction','getSmsInteractions','FaxInteraction','getFaxInteractions','getWhatsappInteractions','login','phone','format','intrf','user:%s','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','YYYY-MM-DD\x20HH:mm:ss','forEach','LOGIN','PAUSE','LOGININPAUSE','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Team','Body\x20parameter\x20\x27ids\x27\x20is\x20required','flattenDeep','addAgent','TeamVoicePrefix','UserVoicePrefix','getDataValue','isArray','Query\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','removeTeams','getAssociatedQueues','removeAgent','Voice','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$or','$gt','$gte','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$notLike','$iLike','$notILike'];(function(_0x5ee51d,_0x4d80b0){var _0x13edf2=function(_0xb50abc){while(--_0xb50abc){_0x5ee51d['push'](_0x5ee51d['shift']());}};_0x13edf2(++_0x4d80b0);}(_0x7e28,0x1c0));var _0x87e2=function(_0x58d15a,_0x35c39a){_0x58d15a=_0x58d15a-0x0;var _0x3a8289=_0x7e28[_0x58d15a];return _0x3a8289;};'use strict';var moment=require(_0x87e2('0x0'));var util=require('util');var path=require(_0x87e2('0x1'));var fs=require('fs');var _=require(_0x87e2('0x2'));var squel=require(_0x87e2('0x3'));var jayson=require(_0x87e2('0x4'));var Redis=require(_0x87e2('0x5'));var authService=require(_0x87e2('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x87e2('0x7'))(_0x87e2('0x8'));var utils=require(_0x87e2('0x9'));var config=require(_0x87e2('0xa'));var licenseUtil=require('../../config/license/util');var APIBadRequestError=require(_0x87e2('0xb'))[_0x87e2('0xc')];var APINotFoundError=require(_0x87e2('0xb'))[_0x87e2('0xd')];var APIHandleError=require(_0x87e2('0xb'))['handleError'];var db=require('../../mysqldb')['db'];var socket=require(_0x87e2('0xe'))(new Redis(config[_0x87e2('0xf')]));require('./user.socket')['register'](socket);config[_0x87e2('0xf')]=_[_0x87e2('0x10')](config['redis'],{'host':_0x87e2('0x11'),'port':0x18eb});var amiClient=jayson['client'][_0x87e2('0x12')]({'port':0x232a});var values;function respondWithRpcPromise(_0x41a0d1,_0x193bfa,_0x4264b0,_0xcc8c0b){return new Promise(function(_0x323a33,_0x41123d){var _0x4fa193=_0xcc8c0b||amiClient;return _0x4fa193['request'](_0x41a0d1,_0x4264b0)[_0x87e2('0x13')](function(_0x2819b1){logger['info']('User,\x20%s,\x20%s',_0x193bfa,'request\x20sent');logger['debug'](_0x87e2('0x14'),_0x193bfa,_0x87e2('0x15'),JSON[_0x87e2('0x16')](_0x2819b1));if(_0x2819b1[_0x87e2('0x17')]){if(_0x2819b1['error'][_0x87e2('0x18')]===0x1f4){logger[_0x87e2('0x17')](_0x87e2('0x19'),_0x193bfa,_0x2819b1['error'][_0x87e2('0x1a')]);return _0x41123d(_0x2819b1[_0x87e2('0x17')][_0x87e2('0x1a')]);}logger[_0x87e2('0x17')]('User,\x20%s,\x20%s',_0x193bfa,_0x2819b1[_0x87e2('0x17')][_0x87e2('0x1a')]);return _0x323a33(_0x2819b1[_0x87e2('0x17')]['message']);}else{logger[_0x87e2('0x1b')](_0x87e2('0x19'),_0x193bfa,_0x87e2('0x15'));_0x323a33(_0x2819b1['result'][_0x87e2('0x1a')]);}})[_0x87e2('0x1c')](function(_0x3132d8){logger[_0x87e2('0x17')]('User,\x20%s,\x20%s',_0x193bfa,_0x3132d8);_0x41123d(_0x3132d8);});});}function respondWithStatusCode(_0x1a9e58,_0x2d468f){_0x2d468f=_0x2d468f||0xcc;return function(_0x25a598){if(_0x25a598){return _0x1a9e58[_0x87e2('0x1d')](_0x2d468f);}return _0x1a9e58[_0x87e2('0x1e')](_0x2d468f)[_0x87e2('0x1f')]();};}function respondWithResult(_0x4d55d6,_0x1e65a8){_0x1e65a8=_0x1e65a8||0xc8;return function(_0x531cec){if(_0x531cec){return _0x4d55d6[_0x87e2('0x1e')](_0x1e65a8)[_0x87e2('0x20')](_0x531cec);}};}function respondWithFilteredResult(_0x2b3a23,_0x35eb0e){return function(_0x473016){if(_0x473016){var _0x401c24=typeof _0x35eb0e['offset']===_0x87e2('0x21')&&typeof _0x35eb0e['limit']===_0x87e2('0x21');var _0x557e38=_0x473016['count'];var _0x4e2e4b=_0x401c24?0x0:_0x35eb0e[_0x87e2('0x22')];var _0x54ba4a=_0x401c24?_0x473016[_0x87e2('0x23')]:_0x35eb0e['offset']+_0x35eb0e['limit'];var _0x328bf7;if(_0x54ba4a>=_0x557e38){_0x54ba4a=_0x557e38;_0x328bf7=0xc8;}else{_0x328bf7=0xce;}_0x2b3a23['status'](_0x328bf7);return _0x2b3a23['set'](_0x87e2('0x24'),_0x4e2e4b+'-'+_0x54ba4a+'/'+_0x557e38)['json'](_0x473016);}return null;};}function saveUpdates(_0x3d96d6){return function(_0x3466d0){if(_0x3466d0){return _0x3466d0[_0x87e2('0x25')](_0x3d96d6)['then'](function(_0x44dd34){socket[_0x87e2('0x26')]('userNotification:recalc:'+_0x44dd34['id'],{});return _0x44dd34;});}return null;};}function removeEntity(_0x480c42){return function(_0x3da705){if(_0x3da705){return _0x3da705[_0x87e2('0x27')]()[_0x87e2('0x13')](function(){var _0x60d94e=_0x3da705['get']({'plain':!![]});if(_0x60d94e[_0x87e2('0x28')]===_0x87e2('0x29'))return;var _0x36c34a=[{'name':_0x87e2('0x2a'),'value':_0x87e2('0x2b'),'ignore':!![]},{'name':'Agents','value':_0x87e2('0x2c'),'ignore':![]},{'name':_0x87e2('0x2d'),'value':'telephone','ignore':![]}];var _0x52cd7d=_(_0x36c34a)['filter'](_0x87e2('0x2e'))[_0x87e2('0x2f')](_0x87e2('0x30'))[_0x87e2('0x30')]();if(_[_0x87e2('0x31')](_0x52cd7d,_0x60d94e[_0x87e2('0x28')])){return;}var _0x58d67d=_[_0x87e2('0x32')](_0x36c34a,['value',_0x60d94e[_0x87e2('0x28')]])[_0x87e2('0x33')];return db[_0x87e2('0x34')][_0x87e2('0x27')]({'where':{'type':_0x58d67d,'resourceId':_0x60d94e['id']}})['then'](function(){return _0x3da705;});})[_0x87e2('0x13')](function(){_0x480c42['status'](0xcc)[_0x87e2('0x1f')]();});}};}function handleEntityNotFound(_0x1e6f89){return function(_0xbeac75){if(!_0xbeac75){_0x1e6f89[_0x87e2('0x1d')](0x194);}return _0xbeac75;};}function handleError(_0xed8811,_0x1efc5e){_0x1efc5e=_0x1efc5e||0x1f4;return function(_0x137d6b){logger[_0x87e2('0x17')](_0x137d6b['stack']);if(_0x137d6b[_0x87e2('0x33')]){delete _0x137d6b[_0x87e2('0x33')];}_0xed8811['status'](_0x1efc5e)[_0x87e2('0x35')](_0x137d6b);};}exports['index']=function(_0x5be761,_0x455216){var _0xb2cb30={},_0x290b47={'count':0x0,'rows':[]};var _0x357260=_(db[_0x87e2('0x36')][_0x87e2('0x37')])[_0x87e2('0x2f')](function(_0x5e115b){return{'name':_0x5e115b['fieldName'],'type':_0x5e115b[_0x87e2('0x38')][_0x87e2('0x39')]};})['filter'](function(_0x29f50a){return!_[_0x87e2('0x31')](['password',_0x87e2('0x3a')],_0x29f50a[_0x87e2('0x33')]);})[_0x87e2('0x30')]();_0xb2cb30=qs['getOptions'](_0x357260,_0x5be761);var _0x150656={'where':_0xb2cb30[_0x87e2('0x3b')]};return db['User'][_0x87e2('0x23')](_0x150656)['then'](function(_0x1998ba){_0x290b47['count']=_0x1998ba;if(_0x5be761[_0x87e2('0x3c')]['includeAll']){_0xb2cb30['include']=[{'all':!![]}];}if(_0x5be761[_0x87e2('0x3c')][_0x87e2('0x3d')]===_0x87e2('0x3e')){_0xb2cb30[_0x87e2('0x3f')]=[{'model':db[_0x87e2('0x40')],'as':_0x87e2('0x3d')}];}if(!_[_0x87e2('0x31')](_0xb2cb30[_0x87e2('0x41')],'id')){_0xb2cb30[_0x87e2('0x41')][_0x87e2('0x42')]('id');}return db['User']['findAll'](_0xb2cb30);})[_0x87e2('0x13')](function(_0x6cb565){_0x290b47['rows']=_0x6cb565;if(_0x5be761[_0x87e2('0x3c')]['openTabs']===_0x87e2('0x3e')){var _0x5bf3c1=[];for(var _0x2c0a0f=0x0;_0x2c0a0f<_0x290b47[_0x87e2('0x43')][_0x87e2('0x44')];_0x2c0a0f++){_0x5bf3c1[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x45'),_0x290b47[_0x87e2('0x43')][_0x2c0a0f][_0x87e2('0x46')]));_0x5bf3c1[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x47'),_0x290b47['rows'][_0x2c0a0f][_0x87e2('0x46')]));_0x5bf3c1['push'](get_open_tabs(_0x87e2('0x48'),_0x290b47[_0x87e2('0x43')][_0x2c0a0f][_0x87e2('0x46')]));_0x5bf3c1['push'](get_open_tabs(_0x87e2('0x49'),_0x290b47[_0x87e2('0x43')][_0x2c0a0f]['dataValues']));_0x5bf3c1[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x4a'),_0x290b47[_0x87e2('0x43')][_0x2c0a0f][_0x87e2('0x46')]));_0x5bf3c1[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x4b'),_0x290b47['rows'][_0x2c0a0f]['dataValues']));}return Promise['all'](_0x5bf3c1)[_0x87e2('0x13')](function(){return _0x290b47;});}else{return _0x290b47;}})[_0x87e2('0x13')](respondWithFilteredResult(_0x455216,_0xb2cb30))[_0x87e2('0x1c')](handleError(_0x455216,null));};exports[_0x87e2('0x4c')]=function(_0x465055,_0x49b0c9){var _0x36edba={'raw':![],'where':{'id':_0x465055[_0x87e2('0x4d')]['id']}},_0x1791a1={};_0x1791a1[_0x87e2('0x4e')]=_['differenceBy'](_[_0x87e2('0x4f')](db[_0x87e2('0x36')][_0x87e2('0x37')]),[_0x87e2('0x50'),_0x87e2('0x3a')]);_0x1791a1['query']=_[_0x87e2('0x4f')](_0x465055[_0x87e2('0x3c')]);_0x1791a1['filters']=_[_0x87e2('0x51')](_0x1791a1[_0x87e2('0x4e')],_0x1791a1[_0x87e2('0x3c')]);_0x36edba[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x1791a1[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x465055['query'][_0x87e2('0x52')]));_0x36edba[_0x87e2('0x41')]=_0x36edba[_0x87e2('0x41')][_0x87e2('0x44')]?_0x36edba[_0x87e2('0x41')]:_0x1791a1[_0x87e2('0x4e')];if(_0x465055[_0x87e2('0x3c')][_0x87e2('0x53')]){_0x36edba[_0x87e2('0x3f')]=[{'all':!![]}];}if(_0x465055[_0x87e2('0x3c')][_0x87e2('0x3d')]===_0x87e2('0x3e')){_0x36edba[_0x87e2('0x3f')]=[{'model':db[_0x87e2('0x40')],'as':_0x87e2('0x3d')}];}_0x36edba=_[_0x87e2('0x54')]({},_0x36edba,_0x465055[_0x87e2('0x55')]);if(!_['includes'](_0x36edba[_0x87e2('0x41')],'id')){_0x36edba[_0x87e2('0x41')]['push']('id');}return db['User'][_0x87e2('0x32')](_0x36edba)[_0x87e2('0x13')](handleEntityNotFound(_0x49b0c9,null))[_0x87e2('0x13')](function(_0x23936c){var _0x3f43fc=[];values=_0x23936c;if(_0x465055[_0x87e2('0x3c')][_0x87e2('0x56')]===_0x87e2('0x3e')){_0x3f43fc[_0x87e2('0x42')](get_open_tabs('chat',_0x23936c[_0x87e2('0x46')]));_0x3f43fc[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x47'),_0x23936c[_0x87e2('0x46')]));_0x3f43fc[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x4a'),_0x23936c['dataValues']));_0x3f43fc[_0x87e2('0x42')](get_open_tabs('whatsapp',_0x23936c['dataValues']));_0x3f43fc[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x48'),_0x23936c[_0x87e2('0x46')]));_0x3f43fc[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x49'),_0x23936c[_0x87e2('0x46')]));return Promise[_0x87e2('0x57')](_0x3f43fc);}else{return values;}})[_0x87e2('0x13')](function(){return values;})[_0x87e2('0x13')](respondWithResult(_0x49b0c9,null))[_0x87e2('0x1c')](handleError(_0x49b0c9,null));};exports[_0x87e2('0x25')]=function(_0x40dd3b,_0x151fa1){if(_0x40dd3b[_0x87e2('0x58')]['id']){delete _0x40dd3b['body']['id'];}delete _0x40dd3b[_0x87e2('0x58')][_0x87e2('0x28')];return db['User'][_0x87e2('0x32')]({'where':{'id':_0x40dd3b[_0x87e2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x151fa1,null))['then'](saveUpdates(_0x40dd3b[_0x87e2('0x58')],null))[_0x87e2('0x13')](respondWithResult(_0x151fa1,null))['catch'](handleError(_0x151fa1,null));};exports[_0x87e2('0x59')]=function(_0xa84af1,_0x393478){return db[_0x87e2('0x36')][_0x87e2('0x59')]()['then'](respondWithResult(_0x393478,null))[_0x87e2('0x1c')](handleError(_0x393478,null));};exports['addContacts']=function(_0x5c5390,_0x52d758){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x5c5390[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x52d758,null))[_0x87e2('0x13')](function(_0x107dad){if(_0x107dad){return _0x107dad['addContacts'](_0x5c5390[_0x87e2('0x58')]['ids'],_[_0x87e2('0x5a')](_0x5c5390[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{});}})[_0x87e2('0x13')](respondWithResult(_0x52d758,null))[_0x87e2('0x1c')](handleError(_0x52d758,null));};function validateUser(_0x42cbb2){return new Promise(function(_0x19ed8d,_0x40e39c){if(_0x42cbb2[_0x87e2('0x5c')])return _0x19ed8d(_0x42cbb2);return db['Setting']['findById'](0x1)['then'](function(_0x26ed44){if(_0x26ed44[_0x87e2('0x5d')])authService['validatePasswordPattern'](_0x42cbb2[_0x87e2('0x50')]);db[_0x87e2('0x36')][_0x87e2('0x5e')](_0x87e2('0x5c'))[_0x87e2('0x13')](function(_0xc35946){if(_[_0x87e2('0x5f')](_0xc35946)){_0x42cbb2[_0x87e2('0x5c')]=_0x26ed44[_0x87e2('0x60')]||0x1;return;}if(_[_0x87e2('0x5f')](_0x26ed44[_0x87e2('0x60')])||_0x26ed44['min_internal']===_0xc35946){_0x42cbb2[_0x87e2('0x5c')]=_0xc35946+0x1;return;}if(_0x26ed44[_0x87e2('0x60')]>_0xc35946){_0x42cbb2[_0x87e2('0x5c')]=_0x26ed44[_0x87e2('0x60')];return;}return db['sequelize'][_0x87e2('0x3c')](_0x87e2('0x61'),{'type':db[_0x87e2('0x62')][_0x87e2('0x63')][_0x87e2('0x64')]})[_0x87e2('0x13')](function(_0xe926c){if(_0xe926c&&_0xe926c[_0x87e2('0x44')]){for(var _0x25e52=0x0,_0x3e454b=_0xe926c['length'];_0x25e52<_0x3e454b&&_[_0x87e2('0x5f')](_0x42cbb2['internal']);_0x25e52++){if(_0x26ed44[_0x87e2('0x60')]<=_0xe926c[_0x25e52][_0x87e2('0x65')]){_0x42cbb2['internal']=_0xe926c[_0x25e52][_0x87e2('0x65')];}else if(_0x26ed44['min_internal']>_0xe926c[_0x25e52][_0x87e2('0x65')]&&_0x26ed44[_0x87e2('0x60')]<=_0xe926c[_0x25e52]['to']){_0x42cbb2['internal']=_0x26ed44[_0x87e2('0x60')];}}}if(_[_0x87e2('0x5f')](_0x42cbb2[_0x87e2('0x5c')])){_0x42cbb2['internal']=_0xc35946+0x1;}return _0x19ed8d(_0x42cbb2);});});})[_0x87e2('0x1c')](function(_0x3f8a21){_0x40e39c(_0x3f8a21);});});}function updateUser(_0x197bf1){return new Promise(function(_0x2d2f01,_0x214799){try{if(_0x197bf1['voicemail']){_0x197bf1[_0x87e2('0x66')]=_0x197bf1[_0x87e2('0x5c')];_0x197bf1[_0x87e2('0x67')]={'mailbox':_0x197bf1[_0x87e2('0x5c')],'password':_0x197bf1[_0x87e2('0x50')],'fullname':_0x197bf1[_0x87e2('0x68')],'email':_0x197bf1[_0x87e2('0x69')]};}if(_0x197bf1[_0x87e2('0x28')]===_0x87e2('0x2c')){if(!_0x197bf1[_0x87e2('0x6a')])_0x197bf1[_0x87e2('0x6a')]=[_0x87e2('0x6b'),'102','103',_0x87e2('0x6c'),_0x87e2('0x6d'),_0x87e2('0x6e'),'105',_0x87e2('0x6f'),_0x87e2('0x70'),_0x87e2('0x71'),_0x87e2('0x72'),_0x87e2('0x73'),_0x87e2('0x74'),_0x87e2('0x75'),_0x87e2('0x76')];}_0x2d2f01(_0x197bf1);}catch(_0x8c82d9){_0x214799(_0x8c82d9);}});}exports[_0x87e2('0x77')]=function(_0x28c256,_0x37aa6a){if(_0x28c256[_0x87e2('0x2b')]['role']===_0x87e2('0x2c'))throw new Error(_0x87e2('0x78'));if(_0x28c256[_0x87e2('0x58')][_0x87e2('0x28')]===_0x87e2('0x2b')&&_0x28c256[_0x87e2('0x2b')]['role']!==_0x87e2('0x29')){throw new Error(_0x87e2('0x79'));}if(_0x28c256[_0x87e2('0x58')][_0x87e2('0x28')]===_0x87e2('0x29')&&_0x28c256['user'][_0x87e2('0x28')]!=='admin'){throw new Error(_0x87e2('0x7a'));}return licenseUtil['checkUserLimits']([_0x28c256[_0x87e2('0x58')]])[_0x87e2('0x13')](function(){return validateUser(_0x28c256[_0x87e2('0x58')]);})[_0x87e2('0x13')](function(_0x4cc1c3){return updateUser(_0x4cc1c3)[_0x87e2('0x13')](function(_0xd58362){if(_0xd58362[_0x87e2('0x28')]===_0x87e2('0x29')){_0xd58362['settingsEnabled']=_0x28c256[_0x87e2('0x2b')]['settingsEnabled'];delete _0xd58362['userProfileId'];}return _0xd58362;});})[_0x87e2('0x13')](function(_0x483561){return db['User'][_0x87e2('0x77')](_0x483561,{'include':[{'model':db[_0x87e2('0x67')],'as':_0x87e2('0x67')}]});})[_0x87e2('0x13')](function(_0x433005){if(_0x28c256[_0x87e2('0x58')][_0x87e2('0x28')]===_0x87e2('0x2b'))return _0x433005;if(_0x28c256[_0x87e2('0x2b')][_0x87e2('0x28')]!==_0x87e2('0x2b'))return _0x433005;return db[_0x87e2('0x7b')][_0x87e2('0x32')]({'where':{'name':_0x433005['role']==='agent'?'Agents':_0x87e2('0x2d'),'userProfileId':_0x28c256[_0x87e2('0x2b')][_0x87e2('0x7c')]},'raw':!![]})[_0x87e2('0x13')](function(_0x94e0bf){if(!_0x94e0bf||_0x94e0bf[_0x87e2('0x7d')]!=0x0)return _0x433005;return db['UserProfileResource'][_0x87e2('0x77')]({'name':_0x433005[_0x87e2('0x33')],'resourceId':_0x433005['id'],'type':_0x94e0bf[_0x87e2('0x33')],'sectionId':_0x94e0bf['id']},{})['then'](function(){return _0x433005;});})['catch'](function(_0x2c6aef){logger['error'](_0x87e2('0x7e'),_0x2c6aef);throw _0x2c6aef;});})[_0x87e2('0x13')](respondWithResult(_0x37aa6a,0xc9))[_0x87e2('0x1c')](handleError(_0x37aa6a,null));};exports[_0x87e2('0x7f')]=function(_0x5e20e9,_0x1a8f0){var _0x11fbb8=_0x5e20e9['body'];var _0x3172fe=[];if(_0x5e20e9[_0x87e2('0x2b')][_0x87e2('0x28')]===_0x87e2('0x2c'))throw new Error(_0x87e2('0x78'));if(_[_0x87e2('0x80')](_0x11fbb8,[_0x87e2('0x28'),_0x87e2('0x2b')])&&_0x5e20e9[_0x87e2('0x2b')][_0x87e2('0x28')]!=='admin'){throw new Error(_0x87e2('0x79'));}if(_[_0x87e2('0x80')](_0x11fbb8,['role','admin'])&&_0x5e20e9[_0x87e2('0x2b')][_0x87e2('0x28')]!==_0x87e2('0x29')){throw new Error(_0x87e2('0x81'));}return licenseUtil['checkUserLimits'](_0x11fbb8)[_0x87e2('0x13')](function(){return validateUser(_0x11fbb8[0x0]);})['then'](function(){for(var _0x18be3f=0x1;_0x18be3f<_0x11fbb8['length'];_0x18be3f++){var _0x414f00=_0x11fbb8[_0x18be3f-0x1][_0x87e2('0x5c')];if(!_0x11fbb8[_0x18be3f][_0x87e2('0x5c')])_0x11fbb8[_0x18be3f]['internal']=_0x414f00+0x1;_0x3172fe[_0x87e2('0x42')](validateUser(_0x11fbb8[_0x18be3f]));}return Promise[_0x87e2('0x57')](_0x3172fe);})[_0x87e2('0x13')](function(){_0x3172fe=[];for(var _0x1d4a8a=0x0;_0x1d4a8a<_0x11fbb8[_0x87e2('0x44')];_0x1d4a8a++){_0x3172fe[_0x87e2('0x42')](updateUser(_0x11fbb8[_0x1d4a8a]));}return Promise[_0x87e2('0x57')](_0x3172fe);})[_0x87e2('0x13')](function(){_0x3172fe=_0x11fbb8[_0x87e2('0x2f')](function(_0x25afb0){return db[_0x87e2('0x36')]['create'](_0x25afb0,{'include':[{'model':db[_0x87e2('0x67')],'as':_0x87e2('0x67')}]})['then'](function(_0x45f0b3){_0x25afb0['id']=_0x45f0b3['id'];return _0x25afb0;});});return Promise[_0x87e2('0x57')](_0x3172fe);})[_0x87e2('0x13')](function(_0x4138c9){if(_0x5e20e9[_0x87e2('0x58')][_0x87e2('0x28')]===_0x87e2('0x2b'))return _0x4138c9;if(_0x5e20e9[_0x87e2('0x2b')]['role']!=='user')return _0x4138c9;var _0x5d5fd0=_[_0x87e2('0x80')](_0x4138c9,function(_0x3ba5c0){return _0x3ba5c0['role']===_0x87e2('0x2c')||_0x3ba5c0[_0x87e2('0x28')]===_0x87e2('0x82');});if(!_0x5d5fd0)return _0x4138c9;return db[_0x87e2('0x7b')]['findAll']({'where':{'name':{'$or':[_0x87e2('0x83'),_0x87e2('0x2d')]},'userProfileId':_0x5e20e9['user']['userProfileId']},'raw':!![]})[_0x87e2('0x13')](function(_0x218cd3){if(_[_0x87e2('0x84')](_0x218cd3)||!_[_0x87e2('0x80')](_0x218cd3,[_0x87e2('0x7d'),0x0]))return _0x4138c9;_0x3172fe=[];var _0x556843=_(_0x218cd3)[_0x87e2('0x2f')](function(_0x397acd){if(_0x397acd[_0x87e2('0x7d')]===0x1)return;return _0x397acd['name']===_0x87e2('0x83')?_0x87e2('0x2c'):_0x87e2('0x82');})[_0x87e2('0x85')]()['value']();for(var _0x4da0cc=0x0;_0x4da0cc<_0x4138c9[_0x87e2('0x44')];_0x4da0cc++){if(!_[_0x87e2('0x31')](_0x556843,_0x4138c9[_0x4da0cc][_0x87e2('0x28')]))return;var _0x4b6018=_0x4138c9[_0x4da0cc][_0x87e2('0x28')]==='agent'?_0x87e2('0x83'):_0x87e2('0x2d');_0x3172fe['push'](db[_0x87e2('0x34')][_0x87e2('0x77')]({'name':_0x4138c9[_0x4da0cc][_0x87e2('0x33')],'resourceId':_0x4138c9[_0x4da0cc]['id'],'type':_0x4b6018,'sectionId':_[_0x87e2('0x32')](_0x218cd3,['name',_0x4b6018])['id']},{}));}return Promise[_0x87e2('0x57')](_0x3172fe);});})[_0x87e2('0x13')](respondWithResult(_0x1a8f0,0xc9))[_0x87e2('0x1c')](handleError(_0x1a8f0,null));};exports['changePassword']=function(_0x50cdfe,_0x5cde89){if(_0x50cdfe[_0x87e2('0x58')]['id']){delete _0x50cdfe[_0x87e2('0x58')]['id'];}return db['User']['find']({'where':{'id':_0x50cdfe[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](function(_0x304638){if(!_0x304638)return null;if(_0x304638['id']===_0x50cdfe[_0x87e2('0x2b')]['id']){if(!_0x50cdfe['body']['oldPassword']||!_0x50cdfe[_0x87e2('0x58')][_0x87e2('0x86')]){throw new db[(_0x87e2('0x87'))][(_0x87e2('0x88'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x304638[_0x87e2('0x89')](_0x50cdfe[_0x87e2('0x58')][_0x87e2('0x8a')])){throw new db[(_0x87e2('0x87'))][(_0x87e2('0x88'))]('Wrong\x20credentials');}if(_0x50cdfe[_0x87e2('0x58')][_0x87e2('0x8a')]===_0x50cdfe[_0x87e2('0x58')][_0x87e2('0x86')]){throw new db[(_0x87e2('0x87'))]['ValidationError'](_0x87e2('0x8b'));}}else if(_0x50cdfe[_0x87e2('0x2b')][_0x87e2('0x28')]===_0x87e2('0x29')){if(!_0x50cdfe['body'][_0x87e2('0x86')]){throw new db['Sequelize'][(_0x87e2('0x88'))](_0x87e2('0x8c'));}}else if(_0x50cdfe['user'][_0x87e2('0x28')]===_0x87e2('0x2b')){if(!_0x50cdfe[_0x87e2('0x58')]['newPassword']){throw new db[(_0x87e2('0x87'))]['ValidationError'](_0x87e2('0x8c'));}if(_0x304638[_0x87e2('0x28')]!=='agent'){throw new db[(_0x87e2('0x87'))][(_0x87e2('0x88'))](_0x87e2('0x78'));}}else{throw new db[(_0x87e2('0x87'))][(_0x87e2('0x88'))](_0x87e2('0x78'));}return _0x304638;})[_0x87e2('0x13')](handleEntityNotFound(_0x5cde89,null))[_0x87e2('0x13')](function(_0x34ff59){return db[_0x87e2('0x8d')][_0x87e2('0x8e')]({'attributes':['id','securePassword',_0x87e2('0x8f'),_0x87e2('0x90')]})[_0x87e2('0x13')](function(_0x29afdc){if(_0x29afdc[_0x87e2('0x5d')])authService[_0x87e2('0x91')](_0x50cdfe[_0x87e2('0x58')][_0x87e2('0x86')]);if(!_0x29afdc[_0x87e2('0x8f')]||!_0x34ff59[_0x87e2('0x92')])return _0x34ff59;authService[_0x87e2('0x93')](_0x50cdfe['body']['newPassword'],_0x34ff59[_0x87e2('0x92')],_0x29afdc[_0x87e2('0x90')]);return _0x34ff59;})[_0x87e2('0x13')](saveUpdates({'password':_0x50cdfe[_0x87e2('0x58')][_0x87e2('0x86')],'passwordResetAt':_0x50cdfe[_0x87e2('0x2b')]['id']==_0x50cdfe[_0x87e2('0x4d')]['id']?moment():null,'previousPasswords':authService[_0x87e2('0x94')](_0x50cdfe[_0x87e2('0x58')][_0x87e2('0x86')],_0x34ff59[_0x87e2('0x92')])},null));})[_0x87e2('0x13')](respondWithResult(_0x5cde89,null))[_0x87e2('0x1c')](handleError(_0x5cde89,null));};exports[_0x87e2('0x95')]=function(_0x56799a,_0x4c0730){var _0x2333c5=_0x56799a[_0x87e2('0x58')][_0x87e2('0x96')];return db[_0x87e2('0x36')]['find']({'where':{'id':_0x56799a['params']['id']},'attributes':['id',_0x87e2('0x33'),_0x87e2('0x28'),_0x87e2('0x97'),_0x87e2('0x98'),_0x87e2('0x99'),_0x87e2('0x9a')]})[_0x87e2('0x13')](handleEntityNotFound(_0x4c0730,null))[_0x87e2('0x13')](function(_0x4a575d){if(_0x4a575d){if(!utils[_0x87e2('0x9b')](_0x2333c5)){throw new db['Sequelize'][(_0x87e2('0x88'))]('Unknown\x20channel');}return _0x4a575d['add'+_['capitalize'](_0x2333c5[_0x87e2('0x9c')]())+_0x87e2('0x9d')](_0x56799a[_0x87e2('0x58')]['ids'],{'penalty':_0x56799a[_0x87e2('0x58')][_0x87e2('0x9e')]||0x0})[_0x87e2('0x9f')](function(_0x499bea){for(var _0x5958b4=0x0;_0x5958b4<_0x56799a[_0x87e2('0x58')]['ids'][_0x87e2('0x44')];_0x5958b4+=0x1){var _0x4ecd12={'UserId':Number(_0x56799a[_0x87e2('0x4d')]['id'])};_0x4ecd12[_[_0x87e2('0xa0')](_0x2333c5[_0x87e2('0x9c')]())+_0x87e2('0xa1')]=Number(_0x56799a[_0x87e2('0x58')][_0x87e2('0x5b')][_0x5958b4]);socket['emit']('user'+_['capitalize'](_0x2333c5[_0x87e2('0x9c')]())+_0x87e2('0xa2'),_0x4ecd12);}return _0x499bea;})['then'](function(){if(_0x2333c5===_0x87e2('0xa3')){return db[_0x87e2('0xa4')]['findAll']({'where':{'id':_0x56799a[_0x87e2('0x58')][_0x87e2('0x5b')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x87e2('0x13')](function(_0x1b926f){var _0x13fbb0=_0x4a575d[_0x87e2('0xa5')]({'plain':!![]});var _0x4f249a=[];if(_0x2333c5===_0x87e2('0xa3')&&_0x13fbb0['role']===_0x87e2('0x2c')&&_0x13fbb0[_0x87e2('0x97')]){for(let _0x20d7f3=0x0;_0x20d7f3<_0x1b926f[_0x87e2('0x44')];_0x20d7f3+=0x1){_0x4f249a[_0x87e2('0x42')]({'membername':_0x13fbb0[_0x87e2('0x33')],'UserId':_0x13fbb0['id'],'queue_name':_0x1b926f[_0x20d7f3]['name'],'VoiceQueueId':_0x1b926f[_0x20d7f3]['id'],'interface':_[_0x87e2('0x5f')](_0x13fbb0[_0x87e2('0x9a')])?util['format'](_0x87e2('0xa6'),_0x13fbb0[_0x87e2('0x33')]):_0x13fbb0[_0x87e2('0x9a')],'paused':_0x13fbb0[_0x87e2('0x99')]||![],'penalty':_0x56799a[_0x87e2('0x58')][_0x87e2('0x9e')]||0x0});}return Promise[_0x87e2('0x57')](_0x4f249a[_0x87e2('0x2f')](function(_0x405c30){return db[_0x87e2('0xa7')]['upsert'](_0x405c30);}));}return _0x4a575d;});}})['then'](respondWithStatusCode(_0x4c0730,null))[_0x87e2('0x1c')](handleError(_0x4c0730,null));};exports[_0x87e2('0xa8')]=function(_0x74b792,_0x440457){var _0x1b8b13,_0x5deedc;return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x74b792[_0x87e2('0x4d')]['id']},'attributes':['id',_0x87e2('0x33'),_0x87e2('0x28')]})['then'](handleEntityNotFound(_0x440457,null))[_0x87e2('0x13')](function(_0x5e16b5){if(_0x5e16b5){_0x1b8b13=_0x5e16b5;if(!_0x74b792[_0x87e2('0x3c')][_0x87e2('0x96')]||!utils[_0x87e2('0x9b')](_0x74b792['query'][_0x87e2('0x96')])){throw new db[(_0x87e2('0x87'))][(_0x87e2('0x88'))](_0x87e2('0xa9'));}return _0x5e16b5[_0x87e2('0xaa')+_[_0x87e2('0xa0')](_0x74b792[_0x87e2('0x3c')][_0x87e2('0x96')][_0x87e2('0x9c')]())+_0x87e2('0x9d')](_0x74b792['query']['ids']);}})['then'](function(_0x1e5d07){if(_['isArray'](_0x74b792[_0x87e2('0x3c')][_0x87e2('0x5b')])){for(var _0x1bc1b1=0x0;_0x1bc1b1<_0x74b792[_0x87e2('0x3c')][_0x87e2('0x5b')][_0x87e2('0x44')];_0x1bc1b1+=0x1){_0x5deedc={'UserId':Number(_0x74b792[_0x87e2('0x4d')]['id'])};_0x5deedc[_[_0x87e2('0xa0')](_0x74b792[_0x87e2('0x3c')][_0x87e2('0x96')]['toLowerCase']())+'QueueId']=Number(_0x74b792[_0x87e2('0x3c')]['ids'][_0x1bc1b1]);socket[_0x87e2('0x26')]('user'+_[_0x87e2('0xa0')](_0x74b792[_0x87e2('0x3c')][_0x87e2('0x96')]['toLowerCase']())+'Queue:remove',_0x5deedc);}}else{_0x5deedc={'UserId':Number(_0x74b792[_0x87e2('0x4d')]['id'])};_0x5deedc[_[_0x87e2('0xa0')](_0x74b792['query'][_0x87e2('0x96')][_0x87e2('0x9c')]())+_0x87e2('0xa1')]=Number(_0x74b792[_0x87e2('0x3c')][_0x87e2('0x5b')]);socket[_0x87e2('0x26')](_0x87e2('0x2b')+_[_0x87e2('0xa0')](_0x74b792[_0x87e2('0x3c')][_0x87e2('0x96')][_0x87e2('0x9c')]())+_0x87e2('0xab'),_0x5deedc);}return _0x1e5d07;})[_0x87e2('0x13')](function(){if(_0x74b792['query'][_0x87e2('0x96')]===_0x87e2('0xa3')){return db['UserVoiceQueueRt'][_0x87e2('0x27')]({'where':{'UserId':_0x74b792[_0x87e2('0x4d')]['id'],'VoiceQueueId':_0x74b792[_0x87e2('0x3c')][_0x87e2('0x5b')]},'individualHooks':!![]})[_0x87e2('0x13')](function(){return _0x1b8b13;});}return _0x1b8b13;})[_0x87e2('0x13')](respondWithStatusCode(_0x440457,null))[_0x87e2('0x1c')](handleError(_0x440457,null));};exports[_0x87e2('0xac')]=function(_0x29d121,_0xa2a4a1){_0x29d121[_0x87e2('0x58')][_0x87e2('0xad')]=_0x29d121[_0x87e2('0xae')][_0x87e2('0xaf')];return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x29d121[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0xa2a4a1,null))[_0x87e2('0x13')](saveUpdates(_0x29d121[_0x87e2('0x58')],null))['then'](respondWithResult(_0xa2a4a1,null))[_0x87e2('0x1c')](handleError(_0xa2a4a1,null));};exports[_0x87e2('0xb0')]=function(_0x489ab1,_0x32bbcd){var _0x5a3792=path[_0x87e2('0xb1')](config['root'],_0x87e2('0xb2'));return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x489ab1[_0x87e2('0x4d')]['id']},'attributes':['id',_0x87e2('0xad')],'raw':!![]})[_0x87e2('0x13')](handleEntityNotFound(_0x32bbcd,null))['then'](function(_0x41e5ba){if(_0x41e5ba){if(_['isNil'](_0x41e5ba[_0x87e2('0xad')])){return _0x32bbcd[_0x87e2('0xb3')](_0x5a3792);}else{if(!fs[_0x87e2('0xb4')](path[_0x87e2('0xb1')](config['root'],_0x87e2('0xb5'),_0x41e5ba['userpic']))){return _0x32bbcd[_0x87e2('0xb3')](_0x5a3792);}return _0x32bbcd[_0x87e2('0xb3')](path[_0x87e2('0xb1')](config['root'],_0x87e2('0xb5'),_0x41e5ba[_0x87e2('0xad')]));}}})[_0x87e2('0x1c')](handleError(_0x32bbcd,null));};exports['getOpenTabs']=function(_0x1ad181,_0x5b07c5){return db[_0x87e2('0x36')]['find']({'where':{'id':_0x1ad181[_0x87e2('0x4d')]['id']},'attributes':['id']})[_0x87e2('0x13')](handleEntityNotFound(_0x5b07c5,null))['then'](function(_0x5b3f5a){var _0x4519db=[];values=_0x5b3f5a[_0x87e2('0x46')];_0x4519db[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x45'),_0x5b3f5a[_0x87e2('0x46')]));_0x4519db[_0x87e2('0x42')](get_open_tabs('sms',_0x5b3f5a['dataValues']));_0x4519db[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x4a'),_0x5b3f5a['dataValues']));_0x4519db[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x4b'),_0x5b3f5a['dataValues']));_0x4519db[_0x87e2('0x42')](get_open_tabs(_0x87e2('0x48'),_0x5b3f5a[_0x87e2('0x46')]));_0x4519db['push'](get_open_tabs(_0x87e2('0x49'),_0x5b3f5a[_0x87e2('0x46')]));return Promise[_0x87e2('0x57')](_0x4519db);})[_0x87e2('0x13')](function(_0x8f241e){if(_0x8f241e){var _0x3f980a=_[_0x87e2('0x2f')](values['ChatOpenTabs'],function(_0x529d80){return{'channel':'CHAT','id':_0x529d80['id'],'createdAt':_0x529d80[_0x87e2('0xb6')]};});var _0x264953=_['map'](values[_0x87e2('0xb7')],function(_0x5b52b7){return{'channel':_0x87e2('0xb8'),'id':_0x5b52b7['id'],'createdAt':_0x5b52b7[_0x87e2('0xb6')]};});var _0x419104=_[_0x87e2('0x2f')](values['OpenchannelOpenTabs'],function(_0x253bea){return{'channel':_0x87e2('0xb9'),'id':_0x253bea['id'],'createdAt':_0x253bea[_0x87e2('0xb6')]};});var _0x2c6354=_[_0x87e2('0x2f')](values['MailOpenTabs'],function(_0x259836){return{'channel':_0x87e2('0xba'),'id':_0x259836['id'],'createdAt':_0x259836[_0x87e2('0xb6')]};});var _0x598b33=_[_0x87e2('0x2f')](values[_0x87e2('0xbb')],function(_0x555c66){return{'channel':'SMS','id':_0x555c66['id'],'createdAt':_0x555c66['createdAt']};});var _0x15a179=_[_0x87e2('0x2f')](values[_0x87e2('0xbc')],function(_0x3248ca){return{'channel':_0x87e2('0xbd'),'id':_0x3248ca['id'],'createdAt':_0x3248ca[_0x87e2('0xb6')]};});var _0x277975=_[_0x87e2('0xbe')](_0x3f980a,_0x264953,_0x419104,_0x2c6354,_0x598b33,_0x15a179);var _0x5270d6={'count':_0x277975['length'],'rows':_0x277975};return _0x5270d6;}else return null;})[_0x87e2('0x13')](respondWithResult(_0x5b07c5,null))['catch'](handleError(_0x5b07c5,null));};exports[_0x87e2('0xbf')]=function(_0x15e049,_0x689e9a){var _0x529c2e={};var _0x4dafb5={};var _0x2782c5;var _0x104f93;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x15e049[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x689e9a,null))[_0x87e2('0x13')](function(_0x3a44ff){if(_0x3a44ff){_0x2782c5=_0x3a44ff;_0x4dafb5['model']=_[_0x87e2('0x4f')](db['CmContact'][_0x87e2('0x37')]);_0x4dafb5['query']=_['keys'](_0x15e049[_0x87e2('0x3c')]);_0x4dafb5[_0x87e2('0xc0')]=_['intersection'](_0x4dafb5['model'],_0x4dafb5['query']);_0x529c2e[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x4dafb5[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x15e049[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x529c2e[_0x87e2('0x41')]=_0x529c2e['attributes'][_0x87e2('0x44')]?_0x529c2e[_0x87e2('0x41')]:_0x4dafb5[_0x87e2('0x4e')];_0x529c2e[_0x87e2('0xc1')]=qs['sort'](_0x15e049[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x529c2e[_0x87e2('0x3b')]=qs['filters'](_[_0x87e2('0xc3')](_0x15e049[_0x87e2('0x3c')],_0x4dafb5[_0x87e2('0xc0')]));if(_0x15e049[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x529c2e[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x529c2e[_0x87e2('0x3b')],{'$or':_['map'](_0x529c2e['attributes'],function(_0x385979){var _0x49a2a1={};_0x49a2a1[_0x385979]={'$like':'%'+_0x15e049[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x49a2a1;})});}_0x529c2e=_[_0x87e2('0x54')]({},_0x529c2e,_0x15e049[_0x87e2('0x55')]);return _0x2782c5['getContacts'](_0x529c2e);}})['then'](function(_0xd36333){if(_0xd36333){_0x104f93=_0xd36333[_0x87e2('0x44')];if(_0x15e049[_0x87e2('0x3c')][_0x87e2('0xc5')](_0x87e2('0x53'))){_0x529c2e[_0x87e2('0x3f')]=[{'model':db[_0x87e2('0xc6')],'as':_0x87e2('0xc7'),'required':![]},{'model':db[_0x87e2('0xc8')],'as':'Tags','attributes':['id',_0x87e2('0x33'),_0x87e2('0xc9')],'where':_0x15e049['query'][_0x87e2('0xca')]?{'id':_0x15e049[_0x87e2('0x3c')][_0x87e2('0xca')]}:undefined,'required':_0x15e049[_0x87e2('0x3c')]['tag']?!![]:![]}];}if(!_0x15e049[_0x87e2('0x3c')]['hasOwnProperty'](_0x87e2('0xcb'))){_0x529c2e['limit']=qs[_0x87e2('0xcc')](_0x15e049['query']['limit']);_0x529c2e[_0x87e2('0x22')]=qs['offset'](_0x15e049['query'][_0x87e2('0x22')]);}return _0x2782c5[_0x87e2('0xbf')](_0x529c2e);}})[_0x87e2('0x13')](function(_0x13dcd6){if(_0x13dcd6){return _0x13dcd6?{'count':_0x104f93,'rows':_0x13dcd6}:null;}})[_0x87e2('0x13')](respondWithResult(_0x689e9a,null))['catch'](handleError(_0x689e9a,null));};exports['getQueues']=function(_0x42f60c,_0x80ea21){var _0x5109c6;var _0x593a28={};var _0x5cedc6;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x42f60c[_0x87e2('0x4d')]['id']},'attributes':['id',_0x87e2('0x33'),'role']})[_0x87e2('0x13')](handleEntityNotFound(_0x80ea21,null))[_0x87e2('0x13')](function(_0x14c133){if(!utils[_0x87e2('0x9b')](_0x42f60c[_0x87e2('0x3c')][_0x87e2('0x96')])){throw new db[(_0x87e2('0x87'))]['ValidationError'](_0x87e2('0xa9'));}_0x5109c6=_0x14c133;var _0x1a9b65={};_0x1a9b65[_0x87e2('0x4e')]=_['keys'](db[_['capitalize'](_0x42f60c['query']['channel'])+_0x87e2('0xcd')][_0x87e2('0x37')]);_0x1a9b65['query']=_[_0x87e2('0x4f')](_0x42f60c[_0x87e2('0x3c')]);_0x1a9b65[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x1a9b65[_0x87e2('0x4e')],_0x1a9b65[_0x87e2('0x3c')]);_0x593a28[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x1a9b65[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x42f60c[_0x87e2('0x3c')]['fields']));_0x593a28['attributes']=_0x593a28[_0x87e2('0x41')]['length']?_0x593a28['attributes']:_0x1a9b65['model'];_0x593a28[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x42f60c[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x593a28['where']=qs[_0x87e2('0xc0')](_['pick'](_0x42f60c['query'],_0x1a9b65['filters']));if(_0x42f60c[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x593a28[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x593a28[_0x87e2('0x3b')],{'$or':_[_0x87e2('0x2f')](_0x593a28[_0x87e2('0x41')],function(_0x16c658){var _0x3c5105={};_0x3c5105[_0x16c658]={'$like':'%'+_0x42f60c[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x3c5105;})});}_0x593a28=_[_0x87e2('0x54')]({},_0x593a28,_0x42f60c['options']);switch(_0x5109c6[_0x87e2('0x28')]){case _0x87e2('0x29'):return db[_[_0x87e2('0xa0')](_0x42f60c[_0x87e2('0x3c')][_0x87e2('0x96')])+_0x87e2('0xcd')][_0x87e2('0xce')](_0x593a28);case _0x87e2('0x2b'):case _0x87e2('0x2c'):return _0x5109c6[_0x87e2('0xa5')+_['capitalize'](_0x42f60c['query'][_0x87e2('0x96')])+_0x87e2('0x9d')](_0x593a28);default:throw new db['Sequelize'][(_0x87e2('0x88'))](_0x87e2('0xcf'));}})['then'](function(_0x3bf688){_0x5cedc6=_0x3bf688['length'];if(!_0x42f60c[_0x87e2('0x3c')][_0x87e2('0xc5')]('nolimit')){_0x593a28['limit']=qs[_0x87e2('0xcc')](_0x42f60c['query'][_0x87e2('0xcc')]);_0x593a28[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x42f60c[_0x87e2('0x3c')]['offset']);}switch(_0x5109c6[_0x87e2('0x28')]){case _0x87e2('0x29'):return db[_[_0x87e2('0xa0')](_0x42f60c[_0x87e2('0x3c')][_0x87e2('0x96')])+'Queue'][_0x87e2('0xce')](_0x593a28);case _0x87e2('0x2b'):case _0x87e2('0x2c'):return _0x5109c6['get'+_[_0x87e2('0xa0')](_0x42f60c[_0x87e2('0x3c')][_0x87e2('0x96')])+_0x87e2('0x9d')](_0x593a28);}})[_0x87e2('0x13')](function(_0x14bcf9){return{'count':_0x5cedc6,'rows':_0x14bcf9};})['then'](respondWithResult(_0x80ea21,null))['catch'](handleError(_0x80ea21,null));};exports[_0x87e2('0xd0')]=function(_0x22b6e4,_0x3ffd93){var _0x5ec34c={};var _0x2a398c={};var _0x54dff5;var _0x111d0a;return db['User'][_0x87e2('0x8e')]({'where':{'id':_0x22b6e4[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x3ffd93,null))['then'](function(_0x5e8e85){if(_0x5e8e85){_0x54dff5=_0x5e8e85;_0x2a398c[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db[_0x87e2('0xa7')]['rawAttributes']);_0x2a398c[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x22b6e4[_0x87e2('0x3c')]);_0x2a398c[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x2a398c[_0x87e2('0x4e')],_0x2a398c[_0x87e2('0x3c')]);_0x5ec34c[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x2a398c[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x22b6e4[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x5ec34c[_0x87e2('0x41')]=_0x5ec34c[_0x87e2('0x41')]['length']?_0x5ec34c[_0x87e2('0x41')]:_0x2a398c[_0x87e2('0x4e')];_0x5ec34c[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x22b6e4[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x5ec34c[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x22b6e4['query'],_0x2a398c[_0x87e2('0xc0')]));if(_0x22b6e4['query'][_0x87e2('0xc4')]){_0x5ec34c[_0x87e2('0x3b')]=_['merge'](_0x5ec34c['where'],{'$or':_['map'](_0x5ec34c[_0x87e2('0x41')],function(_0x43b3fa){var _0x4a8618={};_0x4a8618[_0x43b3fa]={'$like':'%'+_0x22b6e4['query'][_0x87e2('0xc4')]+'%'};return _0x4a8618;})});}_0x5ec34c=_[_0x87e2('0x54')]({},_0x5ec34c,_0x22b6e4['options']);return _0x54dff5[_0x87e2('0xd0')](_0x5ec34c);}})[_0x87e2('0x13')](function(_0x18aba1){if(_0x18aba1){_0x111d0a=_0x18aba1['length'];if(!_0x22b6e4['query'][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x5ec34c['limit']=qs[_0x87e2('0xcc')](_0x22b6e4[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x5ec34c['offset']=qs[_0x87e2('0x22')](_0x22b6e4[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x54dff5[_0x87e2('0xd0')](_0x5ec34c);}})[_0x87e2('0x13')](function(_0x13cb08){if(_0x13cb08){return _0x13cb08?{'count':_0x111d0a,'rows':_0x13cb08}:null;}})['then'](respondWithResult(_0x3ffd93,null))['catch'](handleError(_0x3ffd93,null));};exports[_0x87e2('0xd1')]=function(_0x3e3863,_0x4dd82d){var _0x4d74f8={};var _0x3611f4={};var _0x1d5815;var _0xab30;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x3e3863[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x4dd82d,null))['then'](function(_0x1d9638){if(_0x1d9638){_0x1d5815=_0x1d9638;_0x3611f4[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db[_0x87e2('0xd2')][_0x87e2('0x37')]);_0x3611f4[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x3e3863[_0x87e2('0x3c')]);_0x3611f4[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x3611f4[_0x87e2('0x4e')],_0x3611f4[_0x87e2('0x3c')]);_0x4d74f8[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x3611f4[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x3e3863['query'][_0x87e2('0x52')]));_0x4d74f8[_0x87e2('0x41')]=_0x4d74f8[_0x87e2('0x41')][_0x87e2('0x44')]?_0x4d74f8['attributes']:_0x3611f4[_0x87e2('0x4e')];_0x4d74f8[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x3e3863['query'][_0x87e2('0xc2')]);_0x4d74f8[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x3e3863[_0x87e2('0x3c')],_0x3611f4['filters']));if(_0x3e3863['query'][_0x87e2('0xc4')]){_0x4d74f8[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x4d74f8[_0x87e2('0x3b')],{'$or':_['map'](_0x4d74f8[_0x87e2('0x41')],function(_0x409c7c){var _0x1f226b={};_0x1f226b[_0x409c7c]={'$like':'%'+_0x3e3863[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x1f226b;})});}_0x4d74f8=_['merge']({},_0x4d74f8,_0x3e3863[_0x87e2('0x55')]);return _0x1d5815['getGroups'](_0x4d74f8);}})[_0x87e2('0x13')](function(_0x386224){if(_0x386224){_0xab30=_0x386224[_0x87e2('0x44')];if(!_0x3e3863[_0x87e2('0x3c')][_0x87e2('0xc5')]('nolimit')){_0x4d74f8[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x3e3863[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x4d74f8[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x3e3863[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x1d5815[_0x87e2('0xd1')](_0x4d74f8);}})['then'](function(_0x1deeb2){if(_0x1deeb2){return _0x1deeb2?{'count':_0xab30,'rows':_0x1deeb2}:null;}})[_0x87e2('0x13')](respondWithResult(_0x4dd82d,null))['catch'](handleError(_0x4dd82d,null));};exports[_0x87e2('0xd3')]=function(_0x3fb4b8,_0x36826b){var _0x4c44c8={'raw':!![],'where':{}};var _0x391113={};var _0xc2c50e={'count':0x0,'rows':[]};return db['User'][_0x87e2('0x8e')]({'where':{'id':_0x3fb4b8[_0x87e2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x36826b,null))[_0x87e2('0x13')](function(_0xfbe56){if(_0xfbe56){_0x391113[_0x87e2('0x4e')]=_['keys'](db[_0x87e2('0xd4')][_0x87e2('0x37')]);_0x391113['query']=_[_0x87e2('0x4f')](_0x3fb4b8[_0x87e2('0x3c')]);_0x391113['filters']=_[_0x87e2('0x51')](_0x391113[_0x87e2('0x4e')],_0x391113[_0x87e2('0x3c')]);_0x4c44c8[_0x87e2('0x41')]=_['intersection'](_0x391113[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x3fb4b8['query'][_0x87e2('0x52')]));_0x4c44c8[_0x87e2('0x41')]=_0x4c44c8['attributes'][_0x87e2('0x44')]?_0x4c44c8[_0x87e2('0x41')]:_0x391113[_0x87e2('0x4e')];if(!_0x3fb4b8['query'][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x4c44c8['limit']=qs[_0x87e2('0xcc')](_0x3fb4b8[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x4c44c8['offset']=qs[_0x87e2('0x22')](_0x3fb4b8['query'][_0x87e2('0x22')]);}_0x4c44c8[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x3fb4b8['query']['sort']);_0x4c44c8[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x3fb4b8[_0x87e2('0x3c')],_0x391113[_0x87e2('0xc0')]));_0x4c44c8['where'][_0x87e2('0xd5')]=_0xfbe56['id'];if(_0x3fb4b8[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x4c44c8[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x4c44c8['where'],{'$or':_[_0x87e2('0x2f')](_0x4c44c8[_0x87e2('0x41')],function(_0x4ab037){var _0x274ec9={};_0x274ec9[_0x4ab037]={'$like':'%'+_0x3fb4b8['query'][_0x87e2('0xc4')]+'%'};return _0x274ec9;})});}_0x4c44c8=_[_0x87e2('0x54')]({},_0x4c44c8,_0x3fb4b8[_0x87e2('0x55')]);return db[_0x87e2('0xd4')][_0x87e2('0x23')]({'where':_0x4c44c8[_0x87e2('0x3b')]})[_0x87e2('0x13')](function(_0x2952a0){_0xc2c50e['count']=_0x2952a0;if(_0x3fb4b8[_0x87e2('0x3c')][_0x87e2('0x53')]){_0x4c44c8[_0x87e2('0x3f')]=[{'all':!![]}];}return db[_0x87e2('0xd4')][_0x87e2('0xce')](_0x4c44c8);})[_0x87e2('0x13')](function(_0x185bc6){_0xc2c50e[_0x87e2('0x43')]=_0x185bc6;return _0xc2c50e;});}})[_0x87e2('0x13')](respondWithFilteredResult(_0x36826b,_0x4c44c8))[_0x87e2('0x1c')](handleError(_0x36826b,null));};exports[_0x87e2('0xd6')]=function(_0x2e9b36,_0x17ea97){var _0x1b579f={'raw':!![],'where':{}};var _0x2267c4={};var _0x507b7f={'count':0x0,'rows':[]};return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x2e9b36[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x17ea97,null))[_0x87e2('0x13')](function(_0x7077e3){if(_0x7077e3){_0x2267c4[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db['ScreenRecording'][_0x87e2('0x37')]);_0x2267c4[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x2e9b36[_0x87e2('0x3c')]);_0x2267c4[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x2267c4['model'],_0x2267c4[_0x87e2('0x3c')]);_0x1b579f[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x2267c4[_0x87e2('0x4e')],qs['fields'](_0x2e9b36[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x1b579f[_0x87e2('0x41')]=_0x1b579f['attributes']['length']?_0x1b579f[_0x87e2('0x41')]:_0x2267c4[_0x87e2('0x4e')];if(!_0x2e9b36[_0x87e2('0x3c')][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x1b579f[_0x87e2('0xcc')]=qs['limit'](_0x2e9b36['query'][_0x87e2('0xcc')]);_0x1b579f[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x2e9b36[_0x87e2('0x3c')][_0x87e2('0x22')]);}_0x1b579f['order']=qs['sort'](_0x2e9b36[_0x87e2('0x3c')]['sort']);_0x1b579f[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x2e9b36[_0x87e2('0x3c')],_0x2267c4[_0x87e2('0xc0')]));_0x1b579f[_0x87e2('0x3b')][_0x87e2('0xd5')]=_0x7077e3['id'];if(_0x2e9b36[_0x87e2('0x3c')]['filter']){_0x1b579f[_0x87e2('0x3b')]=_['merge'](_0x1b579f[_0x87e2('0x3b')],{'$or':_[_0x87e2('0x2f')](_0x1b579f[_0x87e2('0x41')],function(_0x38694e){var _0x480cd7={};_0x480cd7[_0x38694e]={'$like':'%'+_0x2e9b36[_0x87e2('0x3c')]['filter']+'%'};return _0x480cd7;})});}_0x1b579f=_[_0x87e2('0x54')]({},_0x1b579f,_0x2e9b36['options']);return db[_0x87e2('0xd7')][_0x87e2('0x23')]({'where':_0x1b579f['where']})['then'](function(_0x2720c3){_0x507b7f[_0x87e2('0x23')]=_0x2720c3;if(_0x2e9b36['query'][_0x87e2('0x53')]){_0x1b579f[_0x87e2('0x3f')]=[{'all':!![]}];}return db[_0x87e2('0xd7')][_0x87e2('0xce')](_0x1b579f);})['then'](function(_0x3f0eb0){_0x507b7f[_0x87e2('0x43')]=_0x3f0eb0;return _0x507b7f;});}})['then'](respondWithFilteredResult(_0x17ea97,_0x1b579f))[_0x87e2('0x1c')](handleError(_0x17ea97,null));};exports['getChatInteractions']=function(_0x56ba66,_0x16a197){var _0x523bbf={};var _0x3ad60d={};var _0x412c9e;var _0x2cbf39;return db['User'][_0x87e2('0x8e')]({'where':{'id':_0x56ba66[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x16a197,null))[_0x87e2('0x13')](function(_0x24ffd0){if(_0x24ffd0){_0x412c9e=_0x24ffd0;_0x3ad60d[_0x87e2('0x4e')]=_['keys'](db[_0x87e2('0xd8')]['rawAttributes']);_0x3ad60d[_0x87e2('0x3c')]=_['keys'](_0x56ba66[_0x87e2('0x3c')]);_0x3ad60d[_0x87e2('0xc0')]=_['intersection'](_0x3ad60d['model'],_0x3ad60d[_0x87e2('0x3c')]);_0x523bbf['attributes']=_[_0x87e2('0x51')](_0x3ad60d[_0x87e2('0x4e')],qs['fields'](_0x56ba66[_0x87e2('0x3c')]['fields']));_0x523bbf['attributes']=_0x523bbf['attributes'][_0x87e2('0x44')]?_0x523bbf[_0x87e2('0x41')]:_0x3ad60d['model'];_0x523bbf[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x56ba66[_0x87e2('0x3c')]['sort']);_0x523bbf[_0x87e2('0x3b')]=qs['filters'](_[_0x87e2('0xc3')](_0x56ba66[_0x87e2('0x3c')],_0x3ad60d[_0x87e2('0xc0')]));if(_0x56ba66[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x523bbf['where']=_['merge'](_0x523bbf[_0x87e2('0x3b')],{'$or':_['map'](_0x523bbf['attributes'],function(_0x324e45){var _0x5e2604={};_0x5e2604[_0x324e45]={'$like':'%'+_0x56ba66[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x5e2604;})});}_0x523bbf=_['merge']({},_0x523bbf,_0x56ba66[_0x87e2('0x55')]);return _0x412c9e['getChatInteractions'](_0x523bbf);}})[_0x87e2('0x13')](function(_0x560f37){if(_0x560f37){_0x2cbf39=_0x560f37[_0x87e2('0x44')];if(!_0x56ba66['query'][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x523bbf[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x56ba66[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x523bbf[_0x87e2('0x22')]=qs['offset'](_0x56ba66[_0x87e2('0x3c')]['offset']);}return _0x412c9e[_0x87e2('0xd9')](_0x523bbf);}})['then'](function(_0x508c12){if(_0x508c12){return _0x508c12?{'count':_0x2cbf39,'rows':_0x508c12}:null;}})[_0x87e2('0x13')](respondWithResult(_0x16a197,null))['catch'](handleError(_0x16a197,null));};exports[_0x87e2('0xda')]=function(_0x43b8cf,_0x4150a5){var _0xc3d2be={};var _0x57009a={};var _0x53ae58;var _0x4a4f0c;return db['User'][_0x87e2('0x8e')]({'where':{'id':_0x43b8cf[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x4150a5,null))[_0x87e2('0x13')](function(_0x197e04){if(_0x197e04){_0x53ae58=_0x197e04;_0x57009a[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db[_0x87e2('0xdb')][_0x87e2('0x37')]);_0x57009a[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x43b8cf[_0x87e2('0x3c')]);_0x57009a['filters']=_['intersection'](_0x57009a[_0x87e2('0x4e')],_0x57009a['query']);_0xc3d2be['attributes']=_[_0x87e2('0x51')](_0x57009a[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x43b8cf['query'][_0x87e2('0x52')]));_0xc3d2be[_0x87e2('0x41')]=_0xc3d2be[_0x87e2('0x41')][_0x87e2('0x44')]?_0xc3d2be['attributes']:_0x57009a['model'];_0xc3d2be['order']=qs[_0x87e2('0xc2')](_0x43b8cf[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0xc3d2be[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x43b8cf['query'],_0x57009a['filters']));if(_0x43b8cf[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0xc3d2be[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0xc3d2be['where'],{'$or':_[_0x87e2('0x2f')](_0xc3d2be[_0x87e2('0x41')],function(_0x51e572){var _0x43a0ce={};_0x43a0ce[_0x51e572]={'$like':'%'+_0x43b8cf['query']['filter']+'%'};return _0x43a0ce;})});}_0xc3d2be=_[_0x87e2('0x54')]({},_0xc3d2be,_0x43b8cf[_0x87e2('0x55')]);return _0x53ae58[_0x87e2('0xda')](_0xc3d2be);}})['then'](function(_0x3c906b){if(_0x3c906b){_0x4a4f0c=_0x3c906b[_0x87e2('0x44')];if(!_0x43b8cf['query']['hasOwnProperty']('nolimit')){_0xc3d2be[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x43b8cf['query']['limit']);_0xc3d2be['offset']=qs['offset'](_0x43b8cf[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x53ae58[_0x87e2('0xda')](_0xc3d2be);}})[_0x87e2('0x13')](function(_0x33fbc4){if(_0x33fbc4){return _0x33fbc4?{'count':_0x4a4f0c,'rows':_0x33fbc4}:null;}})[_0x87e2('0x13')](respondWithResult(_0x4150a5,null))[_0x87e2('0x1c')](handleError(_0x4150a5,null));};exports[_0x87e2('0xdc')]=function(_0x4d48b8,_0x52b495){var _0x49a28c={'raw':!![],'where':{}};var _0x7f8742={};var _0x19e29c={'count':0x0,'rows':[]};return db[_0x87e2('0x36')]['findOne']({'where':{'id':_0x4d48b8[_0x87e2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x52b495,null))[_0x87e2('0x13')](function(_0x1dffe7){if(_0x1dffe7){_0x7f8742[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db[_0x87e2('0xdd')][_0x87e2('0x37')]);_0x7f8742[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x4d48b8[_0x87e2('0x3c')]);_0x7f8742[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x7f8742[_0x87e2('0x4e')],_0x7f8742[_0x87e2('0x3c')]);_0x49a28c['attributes']=_[_0x87e2('0x51')](_0x7f8742[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x4d48b8[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x49a28c[_0x87e2('0x41')]=_0x49a28c[_0x87e2('0x41')]['length']?_0x49a28c[_0x87e2('0x41')]:_0x7f8742['model'];if(!_0x4d48b8[_0x87e2('0x3c')]['hasOwnProperty'](_0x87e2('0xcb'))){_0x49a28c[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x4d48b8[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x49a28c[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x4d48b8[_0x87e2('0x3c')]['offset']);}_0x49a28c['order']=qs[_0x87e2('0xc2')](_0x4d48b8[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x49a28c['where']=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x4d48b8['query'],_0x7f8742['filters']));_0x49a28c[_0x87e2('0x3b')][_0x87e2('0xd5')]=_0x1dffe7['id'];if(_0x4d48b8[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x49a28c[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x49a28c[_0x87e2('0x3b')],{'$or':_[_0x87e2('0x2f')](_0x49a28c[_0x87e2('0x41')],function(_0x5e8edf){var _0x10bbe1={};_0x10bbe1[_0x5e8edf]={'$like':'%'+_0x4d48b8[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x10bbe1;})});}_0x49a28c=_[_0x87e2('0x54')]({},_0x49a28c,_0x4d48b8['options']);return db[_0x87e2('0xdd')]['count']({'where':_0x49a28c[_0x87e2('0x3b')]})[_0x87e2('0x13')](function(_0xfe8076){_0x19e29c[_0x87e2('0x23')]=_0xfe8076;if(_0x4d48b8[_0x87e2('0x3c')]['includeAll']){_0x49a28c[_0x87e2('0x3f')]=[{'all':!![]}];}return db[_0x87e2('0xdd')][_0x87e2('0xce')](_0x49a28c);})[_0x87e2('0x13')](function(_0x29e700){_0x19e29c[_0x87e2('0x43')]=_0x29e700;return _0x19e29c;});}})[_0x87e2('0x13')](respondWithFilteredResult(_0x52b495,_0x49a28c))[_0x87e2('0x1c')](handleError(_0x52b495,null));};exports['getSmsInteractions']=function(_0x4c452f,_0x501250){var _0x3daf10={};var _0x38e690={};var _0x3fc6b7;var _0x58ad1c;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x4c452f['params']['id']}})['then'](handleEntityNotFound(_0x501250,null))[_0x87e2('0x13')](function(_0x389d16){if(_0x389d16){_0x3fc6b7=_0x389d16;_0x38e690[_0x87e2('0x4e')]=_['keys'](db[_0x87e2('0xde')][_0x87e2('0x37')]);_0x38e690[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x4c452f[_0x87e2('0x3c')]);_0x38e690['filters']=_[_0x87e2('0x51')](_0x38e690[_0x87e2('0x4e')],_0x38e690[_0x87e2('0x3c')]);_0x3daf10['attributes']=_[_0x87e2('0x51')](_0x38e690[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x4c452f[_0x87e2('0x3c')]['fields']));_0x3daf10[_0x87e2('0x41')]=_0x3daf10[_0x87e2('0x41')][_0x87e2('0x44')]?_0x3daf10['attributes']:_0x38e690[_0x87e2('0x4e')];_0x3daf10[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x4c452f['query'][_0x87e2('0xc2')]);_0x3daf10[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x4c452f[_0x87e2('0x3c')],_0x38e690[_0x87e2('0xc0')]));if(_0x4c452f['query'][_0x87e2('0xc4')]){_0x3daf10[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x3daf10['where'],{'$or':_[_0x87e2('0x2f')](_0x3daf10['attributes'],function(_0x5f086a){var _0x44f508={};_0x44f508[_0x5f086a]={'$like':'%'+_0x4c452f[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x44f508;})});}_0x3daf10=_[_0x87e2('0x54')]({},_0x3daf10,_0x4c452f[_0x87e2('0x55')]);return _0x3fc6b7['getSmsInteractions'](_0x3daf10);}})['then'](function(_0x589a7d){if(_0x589a7d){_0x58ad1c=_0x589a7d[_0x87e2('0x44')];if(!_0x4c452f[_0x87e2('0x3c')][_0x87e2('0xc5')]('nolimit')){_0x3daf10[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x4c452f[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x3daf10['offset']=qs[_0x87e2('0x22')](_0x4c452f[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x3fc6b7[_0x87e2('0xdf')](_0x3daf10);}})['then'](function(_0x4696d8){if(_0x4696d8){return _0x4696d8?{'count':_0x58ad1c,'rows':_0x4696d8}:null;}})['then'](respondWithResult(_0x501250,null))[_0x87e2('0x1c')](handleError(_0x501250,null));};exports['getFaxInteractions']=function(_0x16ce0b,_0x265a3f){var _0x248d28={};var _0x1c591a={};var _0x4d6c72;var _0x26be24;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x16ce0b[_0x87e2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x265a3f,null))[_0x87e2('0x13')](function(_0x35c12e){if(_0x35c12e){_0x4d6c72=_0x35c12e;_0x1c591a[_0x87e2('0x4e')]=_['keys'](db[_0x87e2('0xe0')]['rawAttributes']);_0x1c591a[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x16ce0b[_0x87e2('0x3c')]);_0x1c591a['filters']=_['intersection'](_0x1c591a[_0x87e2('0x4e')],_0x1c591a['query']);_0x248d28['attributes']=_[_0x87e2('0x51')](_0x1c591a[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x16ce0b[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x248d28['attributes']=_0x248d28['attributes']['length']?_0x248d28[_0x87e2('0x41')]:_0x1c591a[_0x87e2('0x4e')];_0x248d28[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x16ce0b['query']['sort']);_0x248d28[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x16ce0b[_0x87e2('0x3c')],_0x1c591a['filters']));if(_0x16ce0b[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x248d28['where']=_['merge'](_0x248d28[_0x87e2('0x3b')],{'$or':_['map'](_0x248d28[_0x87e2('0x41')],function(_0x5c3def){var _0x3e8253={};_0x3e8253[_0x5c3def]={'$like':'%'+_0x16ce0b[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x3e8253;})});}_0x248d28=_[_0x87e2('0x54')]({},_0x248d28,_0x16ce0b[_0x87e2('0x55')]);return _0x4d6c72[_0x87e2('0xe1')](_0x248d28);}})['then'](function(_0x5da1a6){if(_0x5da1a6){_0x26be24=_0x5da1a6[_0x87e2('0x44')];if(!_0x16ce0b[_0x87e2('0x3c')]['hasOwnProperty'](_0x87e2('0xcb'))){_0x248d28[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x16ce0b[_0x87e2('0x3c')]['limit']);_0x248d28[_0x87e2('0x22')]=qs['offset'](_0x16ce0b['query'][_0x87e2('0x22')]);}return _0x4d6c72['getFaxInteractions'](_0x248d28);}})['then'](function(_0x41188a){if(_0x41188a){return _0x41188a?{'count':_0x26be24,'rows':_0x41188a}:null;}})['then'](respondWithResult(_0x265a3f,null))[_0x87e2('0x1c')](handleError(_0x265a3f,null));};exports[_0x87e2('0xe2')]=function(_0x571bc6,_0x5ba16d){var _0x22cf6d={};var _0x5be848={};var _0x251523;var _0x4f3516;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x571bc6[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x5ba16d,null))[_0x87e2('0x13')](function(_0x2f6dd0){if(_0x2f6dd0){_0x251523=_0x2f6dd0;_0x5be848[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db['WhatsappInteraction'][_0x87e2('0x37')]);_0x5be848[_0x87e2('0x3c')]=_['keys'](_0x571bc6['query']);_0x5be848[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x5be848[_0x87e2('0x4e')],_0x5be848[_0x87e2('0x3c')]);_0x22cf6d[_0x87e2('0x41')]=_['intersection'](_0x5be848[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x571bc6['query'][_0x87e2('0x52')]));_0x22cf6d['attributes']=_0x22cf6d['attributes'][_0x87e2('0x44')]?_0x22cf6d[_0x87e2('0x41')]:_0x5be848[_0x87e2('0x4e')];_0x22cf6d[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x571bc6[_0x87e2('0x3c')]['sort']);_0x22cf6d['where']=qs['filters'](_[_0x87e2('0xc3')](_0x571bc6[_0x87e2('0x3c')],_0x5be848[_0x87e2('0xc0')]));if(_0x571bc6[_0x87e2('0x3c')]['filter']){_0x22cf6d['where']=_[_0x87e2('0x54')](_0x22cf6d[_0x87e2('0x3b')],{'$or':_['map'](_0x22cf6d[_0x87e2('0x41')],function(_0x180028){var _0xb63347={};_0xb63347[_0x180028]={'$like':'%'+_0x571bc6[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0xb63347;})});}_0x22cf6d=_[_0x87e2('0x54')]({},_0x22cf6d,_0x571bc6[_0x87e2('0x55')]);return _0x251523['getWhatsappInteractions'](_0x22cf6d);}})[_0x87e2('0x13')](function(_0x4222d2){if(_0x4222d2){_0x4f3516=_0x4222d2[_0x87e2('0x44')];if(!_0x571bc6[_0x87e2('0x3c')]['hasOwnProperty']('nolimit')){_0x22cf6d[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x571bc6[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x22cf6d[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x571bc6[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x251523[_0x87e2('0xe2')](_0x22cf6d);}})[_0x87e2('0x13')](function(_0x28b91d){if(_0x28b91d){return _0x28b91d?{'count':_0x4f3516,'rows':_0x28b91d}:null;}})['then'](respondWithResult(_0x5ba16d,null))[_0x87e2('0x1c')](handleError(_0x5ba16d,null));};exports[_0x87e2('0xe3')]=function(_0x5241eb,_0xd761ce,_0x256471){var _0xdd44b4;var _0x3a9478;var _0x54d3e6;var _0x4945b3=!_[_0x87e2('0x5f')](_0x5241eb[_0x87e2('0x4d')]['id'])?_0x5241eb[_0x87e2('0x4d')]['id']:!_[_0x87e2('0x5f')](_0x5241eb['user']['id'])?_0x5241eb[_0x87e2('0x2b')]['id']:null;return db['User'][_0x87e2('0x32')]({'where':{'id':_0x4945b3,'role':{'$or':[_0x87e2('0x29'),_0x87e2('0x2b'),'agent']}},'attributes':['id',_0x87e2('0x33'),_0x87e2('0xe4'),'mobile','role',_0x87e2('0x5c'),'loginInPause']})[_0x87e2('0x13')](function(_0xab07ab){if(_0xab07ab){if(_0xab07ab[_0x87e2('0x28')]===_0x87e2('0x2c')){_0xdd44b4=_0xab07ab;if(_0x5241eb[_0x87e2('0x58')][_0x87e2('0x9a')]){_0x54d3e6=util[_0x87e2('0xe5')]('LOCAL/%s@from-sip/n',_0xdd44b4[_0x5241eb['body'][_0x87e2('0x9a')]]);}else if(_0x5241eb[_0x87e2('0x58')][_0x87e2('0xe6')]){_0x54d3e6=util[_0x87e2('0xe5')]('SIP/%s',_0x5241eb['body'][_0x87e2('0xe6')]);}else{_0x54d3e6=util['format'](_0x87e2('0xa6'),_0xdd44b4[_0x87e2('0x33')]);}socket['to'](util[_0x87e2('0xe5')](_0x87e2('0xe7'),_0xdd44b4[_0x87e2('0x33')]))['emit']('user:forcelogout',{'user':{'id':_0xdd44b4['id'],'name':_0xdd44b4[_0x87e2('0x33')]},'ip':_0x5241eb[_0x87e2('0xe8')][_0x87e2('0xe9')]||_0x5241eb[_0x87e2('0xea')][_0x87e2('0xeb')]||_0x5241eb[_0x87e2('0xec')][_0x87e2('0xeb')]||_0x5241eb['connection']['socket']['remoteAddress']});return db[_0x87e2('0xa7')][_0x87e2('0x27')]({'where':{'membername':_0xdd44b4[_0x87e2('0x33')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x87e2('0x88'))](_0x87e2('0xed'));}})['then'](function(){if(_0xdd44b4){return _0xdd44b4[_0x87e2('0xee')]({'raw':!![]});}})[_0x87e2('0x13')](function(_0x34bbf9){if(_0xdd44b4){if(_0x34bbf9){_0x3a9478=_0x34bbf9;if(_0x3a9478['length']){var _0x6de1b0=_0x3a9478[_0x87e2('0x2f')](function(_0x352fce){var _0x5f4381={'membername':_0xdd44b4[_0x87e2('0x33')],'UserId':_0xdd44b4['id'],'queue_name':_0x352fce['name'],'VoiceQueueId':_0x352fce['id'],'interface':_0x54d3e6,'paused':_0xdd44b4[_0x87e2('0x98')]||![],'penalty':_0x352fce[_0x87e2('0xef')]||0x0};return db[_0x87e2('0xa7')][_0x87e2('0xf0')](_0x5f4381);});return Promise['all'](_0x6de1b0);}}}})[_0x87e2('0x13')](function(){if(_0xdd44b4){return db[_0x87e2('0xf1')][_0x87e2('0xce')]({'where':{'membername':_0xdd44b4[_0x87e2('0x33')],'exitAt':null}});}})[_0x87e2('0x13')](function(_0x173333){if(_0xdd44b4){var _0x3b636d=[];_0x173333['forEach'](function(_0x55dae8){_0x3b636d[_0x87e2('0x42')](_0x55dae8[_0x87e2('0x25')]({'exitAt':moment()[_0x87e2('0xe5')](_0x87e2('0xf2'))}));});return Promise[_0x87e2('0x57')](_0x3b636d);}})[_0x87e2('0x13')](function(){if(_0xdd44b4){var _0x52ecca=[];var _0x4b485f=[];var _0x2e3ae4=utils['getChannels']();var _0x55ff70={'membername':_0xdd44b4[_0x87e2('0x33')],'interface':_0x54d3e6,'enterAt':moment()['format'](_0x87e2('0xf2')),'role':_0xdd44b4[_0x87e2('0x28')],'internal':_0xdd44b4[_0x87e2('0x5c')]};_0x2e3ae4[_0x87e2('0xf3')](function(_0x392acd){_0x52ecca[_0x87e2('0x42')](_[_0x87e2('0x54')]({'channel':_0x392acd,'type':_0x87e2('0xf4'),'data1':_0x5241eb[_0x87e2('0x58')]['device'],'data2':_0x54d3e6},_0x55ff70));if(_0xdd44b4[_0x87e2('0x98')]){_0x4b485f[_0x87e2('0x42')](_['merge']({'channel':_0x392acd,'type':_0x87e2('0xf5'),'data1':_0x87e2('0xf6')},_0x55ff70));}});return db[_0x87e2('0xf1')][_0x87e2('0x7f')](_0x52ecca['concat'](_0x4b485f),{'individualHooks':!![]});}})[_0x87e2('0x13')](function(){if(_0xdd44b4){return _0xdd44b4['update']({'online':!![],'lastLoginAt':moment()['format'](_0x87e2('0xf2')),'voicePause':_0xdd44b4[_0x87e2('0x98')]||![],'mailPause':_0xdd44b4[_0x87e2('0x98')]||![],'chatPause':_0xdd44b4['loginInPause']||![],'faxPause':_0xdd44b4[_0x87e2('0x98')]||![],'smsPause':_0xdd44b4[_0x87e2('0x98')]||![],'openchannelPause':_0xdd44b4['loginInPause']||![],'whatsappPause':_0xdd44b4['loginInPause']||![],'pauseType':_0xdd44b4[_0x87e2('0x98')]?'LOGININPAUSE':null,'interface':_0x54d3e6,'lastPauseAt':moment()[_0x87e2('0xe5')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x87e2('0x13')](function(_0x587a27){if(_0x5241eb[_0x87e2('0xf7')]){return _0x256471();}else{return Promise[_0x87e2('0xf8')](_0x587a27)[_0x87e2('0x13')](respondWithResult(_0xd761ce,null));}})[_0x87e2('0x1c')](handleError(_0xd761ce,null));};exports[_0x87e2('0xf9')]=function(_0x1e66e8,_0x22293f){var _0x28e600;return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x1e66e8['params']['id'],'role':'agent'},'attributes':['id','name',_0x87e2('0x28')]})['then'](handleEntityNotFound(_0x22293f,null))[_0x87e2('0x13')](function(_0x1a1449){if(_0x1a1449){_0x28e600=_0x1a1449;return db[_0x87e2('0xa7')]['destroy']({'where':{'membername':_0x28e600[_0x87e2('0x33')]},'individualHooks':!![]});}})[_0x87e2('0x13')](function(){return db[_0x87e2('0xf1')][_0x87e2('0xce')]({'where':{'membername':_0x28e600[_0x87e2('0x33')],'exitAt':null}});})[_0x87e2('0x13')](function(_0x4c9755){var _0x5eb13d=[];_0x4c9755[_0x87e2('0xf3')](function(_0x82ccd6){_0x5eb13d[_0x87e2('0x42')](_0x82ccd6['update']({'exitAt':moment()['format'](_0x87e2('0xf2'))}));});return Promise['all'](_0x5eb13d);})[_0x87e2('0x13')](function(){return _0x28e600['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x87e2('0x13')](respondWithResult(_0x22293f,null))[_0x87e2('0x1c')](handleError(_0x22293f,null));};exports[_0x87e2('0xfa')]=function(_0x1936b1,_0x13d480){var _0x1cc18b;return db['UserVoiceQueueRt'][_0x87e2('0x25')]({'paused':0x1},{'where':{'UserId':_0x1936b1[_0x87e2('0x4d')]['id']},'individualHooks':!![]})[_0x87e2('0x13')](function(){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x1936b1[_0x87e2('0x4d')]['id'],'role':_0x87e2('0x2c')},'attributes':['id',_0x87e2('0x33'),_0x87e2('0x28'),_0x87e2('0x5c'),_0x87e2('0x9a'),_0x87e2('0x97')]});})['then'](handleEntityNotFound(_0x13d480,null))[_0x87e2('0x13')](function(_0x514061){if(_0x514061){_0x1cc18b=_0x514061;return respondWithRpcPromise(_0x87e2('0xfb'),_0x87e2('0xfa'),{'id':_0x1cc18b['id'],'name':_0x1cc18b[_0x87e2('0x33')],'pause':!![]});}})['then'](function(){if(_0x1cc18b){return db[_0x87e2('0xf1')]['findAll']({'where':{'membername':_0x1cc18b[_0x87e2('0x33')],'type':_0x87e2('0xf5'),'exitAt':null}});}})[_0x87e2('0x13')](function(_0x2d5a7b){if(_0x2d5a7b['length']){var _0x32c944=moment()[_0x87e2('0xe5')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x6afd2b=0x0,_0x408b91=_0x2d5a7b[_0x87e2('0x44')];_0x6afd2b<_0x408b91;_0x6afd2b++){_0x2d5a7b[_0x6afd2b][_0x87e2('0xfc')]({'exitAt':_0x32c944});}}})['then'](function(){var _0x213cb7=[];var _0xd0cc1b=utils[_0x87e2('0xfd')]();_0xd0cc1b[_0x87e2('0xf3')](function(_0x8a2c88){_0x213cb7[_0x87e2('0x42')]({'channel':_0x8a2c88,'membername':_0x1cc18b[_0x87e2('0x33')],'interface':_['isNil'](_0x1cc18b['interface'])?util[_0x87e2('0xe5')](_0x87e2('0xa6'),_0x1cc18b['name']):_0x1cc18b[_0x87e2('0x9a')],'type':_0x87e2('0xf5'),'enterAt':moment()[_0x87e2('0xe5')](_0x87e2('0xf2')),'data1':_0x1936b1['body'][_0x87e2('0x38')]||'DEFAULT\x20PAUSE','role':_0x1cc18b[_0x87e2('0x28')],'internal':_0x1cc18b[_0x87e2('0x5c')]});});return db[_0x87e2('0xf1')][_0x87e2('0x7f')](_0x213cb7,{'individualHooks':!![]});})[_0x87e2('0x13')](function(){return _0x1cc18b[_0x87e2('0x25')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x1936b1[_0x87e2('0x58')][_0x87e2('0x38')]||_0x87e2('0xfe'),'lastPauseAt':moment()[_0x87e2('0xe5')](_0x87e2('0xf2'))});})[_0x87e2('0x13')](respondWithResult(_0x13d480,null))[_0x87e2('0x1c')](handleError(_0x13d480,null));};exports[_0x87e2('0xff')]=function(_0x4552f9,_0x2f89b8){if(_0x4552f9['body'][_0x87e2('0x96')]&&!utils[_0x87e2('0x9b')](_0x4552f9[_0x87e2('0x58')][_0x87e2('0x96')])){throw new APIBadRequestError(util[_0x87e2('0xe5')](_0x87e2('0x100'),_0x4552f9[_0x87e2('0x58')][_0x87e2('0x96')]));}return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x4552f9[_0x87e2('0x4d')]['id']},'attributes':['id',_0x87e2('0x33'),'role',_0x87e2('0x5c'),_0x87e2('0x9a'),_0x87e2('0x97'),_0x87e2('0x99'),'mailPause','chatPause',_0x87e2('0x101'),_0x87e2('0x102'),_0x87e2('0x103'),_0x87e2('0x104'),_0x87e2('0x105'),_0x87e2('0x106')]})[_0x87e2('0x13')](function(_0x55eb4f){if(!_0x55eb4f){throw new APINotFoundError(util[_0x87e2('0xe5')](_0x87e2('0x107'),_0x4552f9[_0x87e2('0x4d')]['id']));}return _0x55eb4f[_0x87e2('0xff')](_0x4552f9[_0x87e2('0x58')][_0x87e2('0x96')]);})[_0x87e2('0x13')](respondWithResult(_0x2f89b8,null))[_0x87e2('0x1c')](APIHandleError(_0x2f89b8));};exports[_0x87e2('0x108')]=function(_0x4be5db,_0x585760){var _0xbd907c={};var _0x5ab525={};var _0x11917d;var _0x46f1fb;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x4be5db['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x585760,null))[_0x87e2('0x13')](function(_0x49d549){if(_0x49d549){_0x11917d=_0x49d549;_0x5ab525['model']=_['keys'](db[_0x87e2('0x109')][_0x87e2('0x37')]);_0x5ab525[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x4be5db[_0x87e2('0x3c')]);_0x5ab525[_0x87e2('0xc0')]=_['intersection'](_0x5ab525['model'],_0x5ab525[_0x87e2('0x3c')]);_0xbd907c['attributes']=_[_0x87e2('0x51')](_0x5ab525[_0x87e2('0x4e')],qs['fields'](_0x4be5db[_0x87e2('0x3c')][_0x87e2('0x52')]));_0xbd907c[_0x87e2('0x41')]=_0xbd907c[_0x87e2('0x41')][_0x87e2('0x44')]?_0xbd907c['attributes']:_0x5ab525[_0x87e2('0x4e')];_0xbd907c[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x4be5db[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0xbd907c[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_['pick'](_0x4be5db['query'],_0x5ab525[_0x87e2('0xc0')]));if(_0x4be5db['query'][_0x87e2('0xc4')]){_0xbd907c[_0x87e2('0x3b')]=_['merge'](_0xbd907c[_0x87e2('0x3b')],{'$or':_['map'](_0xbd907c['attributes'],function(_0x2400e4){var _0x5ae8d6={};_0x5ae8d6[_0x2400e4]={'$like':'%'+_0x4be5db['query']['filter']+'%'};return _0x5ae8d6;})});}_0xbd907c=_[_0x87e2('0x54')]({},_0xbd907c,_0x4be5db[_0x87e2('0x55')]);return _0x11917d[_0x87e2('0x108')](_0xbd907c);}})['then'](function(_0x478151){if(_0x478151){_0x46f1fb=_0x478151[_0x87e2('0x44')];if(!_0x4be5db['query'][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0xbd907c[_0x87e2('0xcc')]=qs['limit'](_0x4be5db['query'][_0x87e2('0xcc')]);_0xbd907c[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x4be5db['query'][_0x87e2('0x22')]);}return _0x11917d[_0x87e2('0x108')](_0xbd907c);}})[_0x87e2('0x13')](function(_0x22442){if(_0x22442){return _0x22442?{'count':_0x46f1fb,'rows':_0x22442}:null;}})['then'](respondWithResult(_0x585760,null))[_0x87e2('0x1c')](handleError(_0x585760,null));};exports['addTeams']=function(_0x30a3d8,_0x41a4ed){var _0x267752=_0x30a3d8[_0x87e2('0x4d')]['id'];var _0x2bfd66=_0x30a3d8[_0x87e2('0x58')]?_0x30a3d8[_0x87e2('0x58')]['ids']:null;var _0xec2db6=[];return Promise['resolve']()['then'](function(){if(!_0x2bfd66)throw new APIBadRequestError(_0x87e2('0x10a'));})[_0x87e2('0x13')](function(){return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x267752}});})[_0x87e2('0x13')](function(_0x2daf8d){if(!_0x2daf8d)throw new APINotFoundError(util[_0x87e2('0xe5')](_0x87e2('0x107'),_0x30a3d8[_0x87e2('0x4d')]['id']));return db['sequelize']['transaction'](function(_0x1dc996){return _0x2daf8d['addTeams'](_0x2bfd66,{'transaction':_0x1dc996})[_0x87e2('0x13')](function(){return db[_0x87e2('0x109')][_0x87e2('0xce')]({'where':{'id':{'$in':_0x2bfd66}}});})['then'](function(_0x532955){var _0x204118=_[_0x87e2('0x2f')](_0x532955,function(_0x5d4006){return _0x5d4006['getAssociatedQueues']();});return Promise[_0x87e2('0x57')](_0x204118);})[_0x87e2('0x13')](function(_0x7e50ad){_0xec2db6=_[_0x87e2('0x10b')](_0x7e50ad);var _0x44a028=_[_0x87e2('0x2f')](_0xec2db6,function(_0x5da72c){return _0x5da72c[_0x87e2('0x10c')](_0x2daf8d['id'],{'transaction':_0x1dc996});});return Promise['all'](_0x44a028);})[_0x87e2('0x13')](function(){if(!_0x2daf8d[_0x87e2('0x97')])return;var _0x3299f8=_[_0x87e2('0xc4')](_0xec2db6,function(_0x419b40){return _0x419b40['getDataValue'](_0x87e2('0x96'))==='Voice';});var _0x5ba56a=_[_0x87e2('0x2f')](_0x3299f8,function(_0x21333f){return db[_0x87e2('0xa7')][_0x87e2('0xf0')]({'membername':_0x2daf8d[_0x87e2('0x33')],'UserId':_0x2daf8d['id'],'queue_name':_0x21333f[_0x87e2('0x33')],'VoiceQueueId':_0x21333f['id'],'interface':_[_0x87e2('0x5f')](_0x2daf8d[_0x87e2('0x9a')])?util[_0x87e2('0xe5')](_0x87e2('0xa6'),_0x2daf8d[_0x87e2('0x33')]):_0x2daf8d[_0x87e2('0x9a')],'paused':_0x2daf8d[_0x87e2('0x99')]||![],'penalty':_0x2daf8d[_0x87e2('0x9e')]},{'transaction':_0x1dc996});});return Promise[_0x87e2('0x57')](_0x5ba56a);})['then'](function(){return db[_0x87e2('0x10d')][_0x87e2('0xce')]({'where':{'teamId':{'$in':_0x2bfd66}}});})[_0x87e2('0x13')](function(_0x8fe4fa){var _0x52633f=_['map'](_0x8fe4fa,function(_0x5d7043){return db[_0x87e2('0x10e')][_0x87e2('0x77')]({'UserId':_0x2daf8d['id'],'VoicePrefixId':_0x5d7043['VoicePrefixId']},{'transaction':_0x1dc996});});return Promise[_0x87e2('0x57')](_0x52633f);});});})[_0x87e2('0x13')](function(){for(var _0x15a353=0x0;_0x15a353<_0xec2db6['length'];_0x15a353++){var _0x129eb9=_0xec2db6[_0x15a353][_0x87e2('0x10f')](_0x87e2('0x96'));var _0x346e18=_0x129eb9+_0x87e2('0xa1');socket[_0x87e2('0x26')](_0x87e2('0x2b')+_0x129eb9+_0x87e2('0xa2'),{'UserId':_0x267752,['queueField']:_0xec2db6[_0x15a353]['id']});}})['then'](respondWithStatusCode(_0x41a4ed,null))['catch'](APIHandleError(_0x41a4ed));};exports['removeTeams']=function(_0x2ff845,_0x870903){var _0x7d60f2=_0x2ff845[_0x87e2('0x4d')]['id'];var _0x45e3c4=null;if(_0x2ff845['query']['ids']){_0x45e3c4=_[_0x87e2('0x110')](_0x2ff845[_0x87e2('0x3c')][_0x87e2('0x5b')])?_0x2ff845[_0x87e2('0x3c')]['ids']:[_0x2ff845[_0x87e2('0x3c')]['ids']];}var _0x373997=[];return Promise[_0x87e2('0xf8')]()[_0x87e2('0x13')](function(){if(!_0x45e3c4)throw new APIBadRequestError(_0x87e2('0x111'));})[_0x87e2('0x13')](function(){return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x7d60f2}});})[_0x87e2('0x13')](function(_0x4822af){if(!_0x4822af)throw new APINotFoundError(util[_0x87e2('0xe5')](_0x87e2('0x107'),_0x2ff845['params']['id']));return db[_0x87e2('0x62')][_0x87e2('0x112')](function(_0x4670b6){return _0x4822af[_0x87e2('0x113')](_0x45e3c4,{'transaction':_0x4670b6})[_0x87e2('0x13')](function(){return db[_0x87e2('0x109')][_0x87e2('0xce')]({'where':{'id':{'$in':_0x45e3c4}}});})[_0x87e2('0x13')](function(_0x3fb8be){var _0x9a080a=_[_0x87e2('0x2f')](_0x3fb8be,function(_0x33421d){return _0x33421d[_0x87e2('0x114')]();});return Promise[_0x87e2('0x57')](_0x9a080a);})[_0x87e2('0x13')](function(_0x8d29fe){_0x373997=_[_0x87e2('0x10b')](_0x8d29fe);var _0x3048a5=_[_0x87e2('0x2f')](_0x373997,function(_0x45b5ed){return _0x45b5ed[_0x87e2('0x115')](_0x4822af['id'],{'transaction':_0x4670b6});});return Promise[_0x87e2('0x57')](_0x3048a5);})[_0x87e2('0x13')](function(){if(!_0x4822af[_0x87e2('0x97')])return;var _0x99521=_[_0x87e2('0xc4')](_0x373997,function(_0x515c1e){return _0x515c1e[_0x87e2('0x10f')](_0x87e2('0x96'))===_0x87e2('0x116');});var _0x3abafa=_[_0x87e2('0x2f')](_0x99521,function(_0x411509){return db['UserVoiceQueueRt'][_0x87e2('0x27')]({'where':{'VoiceQueueId':_0x411509['id'],'UserId':_0x4822af['id']},'transaction':_0x4670b6});});return Promise[_0x87e2('0x57')](_0x3abafa);})[_0x87e2('0x13')](function(){return db[_0x87e2('0x10d')][_0x87e2('0xce')]({'where':{'teamId':{'$in':_0x45e3c4}}});})[_0x87e2('0x13')](function(_0xaf9004){var _0x36bde0=_[_0x87e2('0x2f')](_0xaf9004,function(_0x5da700){return db['UserVoicePrefix'][_0x87e2('0x27')]({'where':{'UserId':_0x4822af['id'],'VoicePrefixId':_0x5da700['VoicePrefixId']}},{'transaction':_0x4670b6});});return Promise[_0x87e2('0x57')](_0x36bde0);});});})['then'](function(){for(var _0x40948c=0x0;_0x40948c<_0x373997[_0x87e2('0x44')];_0x40948c++){var _0xc10605=_0x373997[_0x40948c][_0x87e2('0x10f')]('channel');var _0x233e15=_0xc10605+_0x87e2('0xa1');socket[_0x87e2('0x26')]('user'+_0xc10605+_0x87e2('0xab'),{'UserId':_0x7d60f2,['queueField']:_0x373997[_0x40948c]['id']});}})[_0x87e2('0x13')](respondWithStatusCode(_0x870903,null))[_0x87e2('0x1c')](APIHandleError(_0x870903));};exports[_0x87e2('0x117')]=function(_0x2f1737,_0x1f4703){var _0x4a4152={};var _0x3c538d={};var _0x53560d;var _0x530b02;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x2f1737[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x1f4703,null))['then'](function(_0x498411){if(_0x498411){_0x53560d=_0x498411;_0x3c538d['model']=_['keys'](db['CmList'][_0x87e2('0x37')]);_0x3c538d['query']=_[_0x87e2('0x4f')](_0x2f1737[_0x87e2('0x3c')]);_0x3c538d[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x3c538d[_0x87e2('0x4e')],_0x3c538d[_0x87e2('0x3c')]);_0x4a4152[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x3c538d[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x2f1737[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x4a4152[_0x87e2('0x41')]=_0x4a4152[_0x87e2('0x41')][_0x87e2('0x44')]?_0x4a4152[_0x87e2('0x41')]:_0x3c538d[_0x87e2('0x4e')];_0x4a4152[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x2f1737[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x4a4152['where']=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x2f1737[_0x87e2('0x3c')],_0x3c538d['filters']));if(_0x2f1737[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x4a4152['where']=_[_0x87e2('0x54')](_0x4a4152[_0x87e2('0x3b')],{'$or':_['map'](_0x4a4152[_0x87e2('0x41')],function(_0xe674e3){var _0x55844a={};_0x55844a[_0xe674e3]={'$like':'%'+_0x2f1737[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x55844a;})});}_0x4a4152=_[_0x87e2('0x54')]({},_0x4a4152,_0x2f1737[_0x87e2('0x55')]);return _0x53560d[_0x87e2('0x117')](_0x4a4152);}})[_0x87e2('0x13')](function(_0x27a0f3){if(_0x27a0f3){_0x530b02=_0x27a0f3[_0x87e2('0x44')];if(!_0x2f1737[_0x87e2('0x3c')]['hasOwnProperty']('nolimit')){_0x4a4152['limit']=qs['limit'](_0x2f1737[_0x87e2('0x3c')]['limit']);_0x4a4152[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x2f1737[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x53560d['getLists'](_0x4a4152);}})['then'](function(_0x2a797b){if(_0x2a797b){return _0x2a797b?{'count':_0x530b02,'rows':_0x2a797b}:null;}})[_0x87e2('0x13')](respondWithResult(_0x1f4703,null))[_0x87e2('0x1c')](handleError(_0x1f4703,null));};exports[_0x87e2('0x118')]=function(_0x4e8167,_0x44b4cd){var _0x13ef8b={};var _0x40d274={};var _0x1405a9;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x4e8167['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x44b4cd,null))[_0x87e2('0x13')](function(_0x11dccf){if(_0x11dccf){_0x1405a9=_0x11dccf;_0x40d274[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db['User'][_0x87e2('0x37')]);_0x40d274['query']=_[_0x87e2('0x4f')](_0x4e8167[_0x87e2('0x3c')]);_0x40d274[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x40d274[_0x87e2('0x4e')],_0x40d274[_0x87e2('0x3c')]);_0x13ef8b['attributes']=_[_0x87e2('0x51')](_0x40d274[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x4e8167['query']['fields']));_0x13ef8b[_0x87e2('0x41')]=_0x13ef8b[_0x87e2('0x41')]['length']?_0x13ef8b[_0x87e2('0x41')]:_0x40d274[_0x87e2('0x4e')];_0x13ef8b[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x4e8167[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x13ef8b[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x4e8167[_0x87e2('0x3c')],_0x40d274[_0x87e2('0xc0')]));if(_0x4e8167[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x13ef8b[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x13ef8b[_0x87e2('0x3b')],{'$or':_['map'](_0x13ef8b[_0x87e2('0x41')],function(_0x28a94f){var _0xffb1ad={};_0xffb1ad[_0x28a94f]={'$like':'%'+_0x4e8167[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0xffb1ad;})});}_0x13ef8b[_0x87e2('0x4e')]=db[_0x87e2('0x36')];_0x13ef8b['as']=_0x87e2('0x83');_0x13ef8b=_[_0x87e2('0x54')]({},_0x13ef8b,_0x4e8167['options']);return _0x1405a9['getVoiceQueues']({'include':[_0x13ef8b]});}})[_0x87e2('0x13')](function(_0x8fc1bb){if(_0x8fc1bb){var _0x37b03e={},_0x1ecbb6=[];for(var _0x465b72=0x0;_0x465b72<_0x8fc1bb[_0x87e2('0x44')];_0x465b72+=0x1){for(var _0x11fa89=0x0,_0x415076;_0x11fa89<_0x8fc1bb[_0x465b72]['Agents']['length'];_0x11fa89+=0x1){_0x415076=_0x8fc1bb[_0x465b72][_0x87e2('0x83')][_0x11fa89][_0x87e2('0xa5')]({'plain':!![]});_0x37b03e[_0x415076['id']]=_0x415076;}}_0x37b03e=_[_0x87e2('0x119')](_0x37b03e);for(var _0x301e50=qs[_0x87e2('0x22')](_0x4e8167[_0x87e2('0x3c')][_0x87e2('0x22')]);_0x301e50<_0x37b03e[_0x87e2('0x44')]&&_0x1ecbb6[_0x87e2('0x44')]<qs[_0x87e2('0xcc')](_0x4e8167[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x301e50+=0x1){if(_0x37b03e[_0x301e50]){_0x1ecbb6[_0x87e2('0x42')](_0x37b03e[_0x301e50]);}}return{'count':_0x37b03e[_0x87e2('0x44')],'rows':_0x1ecbb6};}})[_0x87e2('0x13')](respondWithResult(_0x44b4cd,null))[_0x87e2('0x1c')](handleError(_0x44b4cd,null));};exports[_0x87e2('0x27')]=function(_0xa26da2,_0x279c55){if(_0xa26da2[_0x87e2('0x2b')]['id']==_0xa26da2['params']['id']){return _0x279c55[_0x87e2('0x1e')](0x1f4)['send']({'message':_0x87e2('0x11a')});}return db['User']['find']({'where':{'id':_0xa26da2['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x279c55,null))[_0x87e2('0x13')](removeEntity(_0x279c55,null))['catch'](handleError(_0x279c55,null));};exports['addChatInteractions']=function(_0x52a63b,_0x41f4b9){return db['User']['find']({'where':{'id':_0x52a63b[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x41f4b9,null))[_0x87e2('0x13')](function(_0x3052e1){if(_0x3052e1){return _0x3052e1[_0x87e2('0x11b')](_0x52a63b[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0x52a63b[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{})[_0x87e2('0x9f')](function(){for(var _0x405d75=0x0;_0x405d75<_0x52a63b[_0x87e2('0x58')][_0x87e2('0x5b')]['length'];_0x405d75+=0x1){socket[_0x87e2('0x26')](_0x87e2('0x11c'),{'ChatInteractionId':Number(_0x52a63b[_0x87e2('0x58')]['ids'][_0x405d75]),'UserId':Number(_0x52a63b[_0x87e2('0x4d')]['id'])});}return _0x52a63b['body'][_0x87e2('0x5b')];});}})[_0x87e2('0x13')](respondWithResult(_0x41f4b9,null))[_0x87e2('0x1c')](handleError(_0x41f4b9,null));};exports['removeChatInteractions']=function(_0x8cdc0b,_0x51e0d6){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x8cdc0b['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x51e0d6,null))[_0x87e2('0x13')](function(_0x1584fe){if(_0x1584fe){return _0x1584fe[_0x87e2('0x11d')](_0x8cdc0b[_0x87e2('0x3c')][_0x87e2('0x5b')])[_0x87e2('0x13')](function(){if(_[_0x87e2('0x110')](_0x8cdc0b[_0x87e2('0x3c')][_0x87e2('0x5b')])){for(var _0x3bd8a1=0x0;_0x3bd8a1<_0x8cdc0b[_0x87e2('0x3c')]['ids'][_0x87e2('0x44')];_0x3bd8a1+=0x1){socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x8cdc0b[_0x87e2('0x3c')][_0x87e2('0x5b')][_0x3bd8a1]),'UserId':Number(_0x8cdc0b[_0x87e2('0x4d')]['id'])});}}else{socket[_0x87e2('0x26')](_0x87e2('0x11e'),{'ChatInteractionId':Number(_0x8cdc0b[_0x87e2('0x3c')][_0x87e2('0x5b')]),'UserId':Number(_0x8cdc0b[_0x87e2('0x4d')]['id'])});}});}})[_0x87e2('0x13')](respondWithStatusCode(_0x51e0d6,null))['catch'](handleError(_0x51e0d6,null));};exports[_0x87e2('0x11f')]=function(_0x14d5b0,_0x43de02){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x14d5b0[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x43de02,null))[_0x87e2('0x13')](function(_0x172bdb){if(_0x172bdb){return _0x172bdb[_0x87e2('0x11f')](_0x14d5b0[_0x87e2('0x58')][_0x87e2('0x5b')],_['omit'](_0x14d5b0[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{})[_0x87e2('0x9f')](function(){for(var _0x2ca0fc=0x0;_0x2ca0fc<_0x14d5b0[_0x87e2('0x58')][_0x87e2('0x5b')][_0x87e2('0x44')];_0x2ca0fc+=0x1){socket[_0x87e2('0x26')](_0x87e2('0x120'),{'MailInteractionId':Number(_0x14d5b0[_0x87e2('0x58')][_0x87e2('0x5b')][_0x2ca0fc]),'UserId':Number(_0x14d5b0[_0x87e2('0x4d')]['id'])});}return _0x14d5b0['body'][_0x87e2('0x5b')];});}})[_0x87e2('0x13')](respondWithResult(_0x43de02,null))['catch'](handleError(_0x43de02,null));};exports[_0x87e2('0x121')]=function(_0x2ef1a2,_0x4e66c5){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x2ef1a2[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x4e66c5,null))[_0x87e2('0x13')](function(_0x540259){if(_0x540259){return _0x540259['removeMailInteractions'](_0x2ef1a2['query']['ids'])[_0x87e2('0x13')](function(){if(_[_0x87e2('0x110')](_0x2ef1a2['query']['ids'])){for(var _0x2bcbe6=0x0;_0x2bcbe6<_0x2ef1a2[_0x87e2('0x3c')][_0x87e2('0x5b')]['length'];_0x2bcbe6+=0x1){socket['emit'](_0x87e2('0x122'),{'MailInteractionId':Number(_0x2ef1a2[_0x87e2('0x3c')][_0x87e2('0x5b')][_0x2bcbe6]),'UserId':Number(_0x2ef1a2['params']['id'])});}}else{socket['emit'](_0x87e2('0x122'),{'MailInteractionId':Number(_0x2ef1a2[_0x87e2('0x3c')]['ids']),'UserId':Number(_0x2ef1a2[_0x87e2('0x4d')]['id'])});}});}})[_0x87e2('0x13')](respondWithStatusCode(_0x4e66c5,null))[_0x87e2('0x1c')](handleError(_0x4e66c5,null));};exports[_0x87e2('0x123')]=function(_0x449d27,_0x59e6ec){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x449d27[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x59e6ec,null))[_0x87e2('0x13')](function(_0x177f30){if(_0x177f30){return _0x177f30[_0x87e2('0x123')](_0x449d27[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0x449d27[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{})[_0x87e2('0x9f')](function(){for(var _0x1dcb58=0x0;_0x1dcb58<_0x449d27[_0x87e2('0x58')]['ids']['length'];_0x1dcb58+=0x1){socket[_0x87e2('0x26')](_0x87e2('0x124'),{'FaxInteractionId':Number(_0x449d27[_0x87e2('0x58')][_0x87e2('0x5b')][_0x1dcb58]),'UserId':Number(_0x449d27[_0x87e2('0x4d')]['id'])});}return _0x449d27['body'][_0x87e2('0x5b')];});}})[_0x87e2('0x13')](respondWithResult(_0x59e6ec,null))[_0x87e2('0x1c')](handleError(_0x59e6ec,null));};exports[_0x87e2('0x125')]=function(_0x347abc,_0xd683c5){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x347abc[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0xd683c5,null))[_0x87e2('0x13')](function(_0x29c25d){if(_0x29c25d){return _0x29c25d[_0x87e2('0x125')](_0x347abc[_0x87e2('0x3c')][_0x87e2('0x5b')])[_0x87e2('0x13')](function(){if(_[_0x87e2('0x110')](_0x347abc[_0x87e2('0x3c')]['ids'])){for(var _0x2dd04a=0x0;_0x2dd04a<_0x347abc['query']['ids'][_0x87e2('0x44')];_0x2dd04a+=0x1){socket[_0x87e2('0x26')](_0x87e2('0x126'),{'FaxInteractionId':Number(_0x347abc[_0x87e2('0x3c')][_0x87e2('0x5b')][_0x2dd04a]),'UserId':Number(_0x347abc[_0x87e2('0x4d')]['id'])});}}else{socket[_0x87e2('0x26')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x347abc[_0x87e2('0x3c')][_0x87e2('0x5b')]),'UserId':Number(_0x347abc['params']['id'])});}});}})[_0x87e2('0x13')](respondWithStatusCode(_0xd683c5,null))[_0x87e2('0x1c')](handleError(_0xd683c5,null));};exports[_0x87e2('0x127')]=function(_0x4c8cb4,_0x480bf4){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x4c8cb4[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x480bf4,null))['then'](function(_0x515530){if(_0x515530){return _0x515530[_0x87e2('0x127')](_0x4c8cb4[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0x4c8cb4[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{})['spread'](function(){for(var _0x44d010=0x0;_0x44d010<_0x4c8cb4[_0x87e2('0x58')][_0x87e2('0x5b')][_0x87e2('0x44')];_0x44d010+=0x1){socket[_0x87e2('0x26')](_0x87e2('0x128'),{'SmsInteractionId':Number(_0x4c8cb4['body'][_0x87e2('0x5b')][_0x44d010]),'UserId':Number(_0x4c8cb4[_0x87e2('0x4d')]['id'])});}return _0x4c8cb4[_0x87e2('0x58')][_0x87e2('0x5b')];});}})[_0x87e2('0x13')](respondWithResult(_0x480bf4,null))[_0x87e2('0x1c')](handleError(_0x480bf4,null));};exports[_0x87e2('0x129')]=function(_0xf9356,_0x2bad76){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0xf9356['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x2bad76,null))[_0x87e2('0x13')](function(_0x3e9553){if(_0x3e9553){return _0x3e9553[_0x87e2('0x129')](_0xf9356[_0x87e2('0x3c')][_0x87e2('0x5b')])['then'](function(){if(_[_0x87e2('0x110')](_0xf9356[_0x87e2('0x3c')]['ids'])){for(var _0x20c118=0x0;_0x20c118<_0xf9356[_0x87e2('0x3c')][_0x87e2('0x5b')][_0x87e2('0x44')];_0x20c118+=0x1){socket['emit'](_0x87e2('0x12a'),{'SmsInteractionId':Number(_0xf9356[_0x87e2('0x3c')][_0x87e2('0x5b')][_0x20c118]),'UserId':Number(_0xf9356[_0x87e2('0x4d')]['id'])});}}else{socket[_0x87e2('0x26')](_0x87e2('0x12a'),{'SmsInteractionId':Number(_0xf9356[_0x87e2('0x3c')]['ids']),'UserId':Number(_0xf9356[_0x87e2('0x4d')]['id'])});}});}})[_0x87e2('0x13')](respondWithStatusCode(_0x2bad76,null))['catch'](handleError(_0x2bad76,null));};exports[_0x87e2('0x12b')]=function(_0xa67229,_0x2972c7){return db['User']['find']({'where':{'id':_0xa67229[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x2972c7,null))[_0x87e2('0x13')](function(_0x599bc3){if(_0x599bc3){return _0x599bc3[_0x87e2('0x12b')](_0xa67229['body'][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0xa67229[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{})[_0x87e2('0x9f')](function(){for(var _0x21dbe7=0x0;_0x21dbe7<_0xa67229[_0x87e2('0x58')]['ids'][_0x87e2('0x44')];_0x21dbe7+=0x1){socket[_0x87e2('0x26')](_0x87e2('0x12c'),{'OpenchannelInteractionId':Number(_0xa67229[_0x87e2('0x58')]['ids'][_0x21dbe7]),'UserId':Number(_0xa67229[_0x87e2('0x4d')]['id'])});}return _0xa67229['body'][_0x87e2('0x5b')];});}})['then'](respondWithResult(_0x2972c7,null))['catch'](handleError(_0x2972c7,null));};exports['removeOpenchannelInteractions']=function(_0x5b41b5,_0x234fc8){return db[_0x87e2('0x36')]['find']({'where':{'id':_0x5b41b5['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x234fc8,null))[_0x87e2('0x13')](function(_0x4f2045){if(_0x4f2045){return _0x4f2045[_0x87e2('0x12d')](_0x5b41b5[_0x87e2('0x3c')][_0x87e2('0x5b')])['then'](function(){if(_['isArray'](_0x5b41b5[_0x87e2('0x3c')]['ids'])){for(var _0x31107c=0x0;_0x31107c<_0x5b41b5['query'][_0x87e2('0x5b')][_0x87e2('0x44')];_0x31107c+=0x1){socket['emit'](_0x87e2('0x12e'),{'OpenchannelInteractionId':Number(_0x5b41b5['query'][_0x87e2('0x5b')][_0x31107c]),'UserId':Number(_0x5b41b5[_0x87e2('0x4d')]['id'])});}}else{socket[_0x87e2('0x26')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5b41b5[_0x87e2('0x3c')][_0x87e2('0x5b')]),'UserId':Number(_0x5b41b5[_0x87e2('0x4d')]['id'])});}});}})[_0x87e2('0x13')](respondWithStatusCode(_0x234fc8,null))['catch'](handleError(_0x234fc8,null));};exports[_0x87e2('0x12f')]=function(_0xbafb61,_0x50210d){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0xbafb61[_0x87e2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x50210d,null))[_0x87e2('0x13')](function(_0x31ea9b){if(_0x31ea9b){return _0x31ea9b[_0x87e2('0x12f')](_0xbafb61[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0xbafb61[_0x87e2('0x58')],['ids','id'])||{})[_0x87e2('0x9f')](function(){for(var _0x40b648=0x0;_0x40b648<_0xbafb61[_0x87e2('0x58')]['ids'][_0x87e2('0x44')];_0x40b648+=0x1){socket['emit'](_0x87e2('0x130'),{'WhatsappInteractionId':Number(_0xbafb61['body'][_0x87e2('0x5b')][_0x40b648]),'UserId':Number(_0xbafb61['params']['id'])});}return _0xbafb61[_0x87e2('0x58')][_0x87e2('0x5b')];});}})[_0x87e2('0x13')](respondWithResult(_0x50210d,null))[_0x87e2('0x1c')](handleError(_0x50210d,null));};exports['removeWhatsappInteractions']=function(_0x461da0,_0x55cb43){return db['User']['find']({'where':{'id':_0x461da0['params']['id']}})['then'](handleEntityNotFound(_0x55cb43,null))[_0x87e2('0x13')](function(_0x2e19b2){if(_0x2e19b2){return _0x2e19b2[_0x87e2('0x131')](_0x461da0['query'][_0x87e2('0x5b')]);}})[_0x87e2('0x13')](respondWithStatusCode(_0x55cb43,null))[_0x87e2('0x1c')](handleError(_0x55cb43,null));};exports[_0x87e2('0x132')]=function(_0x4a1ec6,_0x1d9d6c){var _0x15a216={};var _0x2a25ca={};var _0x3c799b;var _0x4df294;return db[_0x87e2('0x36')]['findOne']({'where':{'id':_0x4a1ec6[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x1d9d6c,null))['then'](function(_0x3b5291){if(_0x3b5291){_0x3c799b=_0x3b5291;_0x2a25ca['model']=_[_0x87e2('0x4f')](db[_0x87e2('0x133')][_0x87e2('0x37')]);_0x2a25ca[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x4a1ec6['query']);_0x2a25ca['filters']=_[_0x87e2('0x51')](_0x2a25ca[_0x87e2('0x4e')],_0x2a25ca['query']);_0x15a216['attributes']=_[_0x87e2('0x51')](_0x2a25ca[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x4a1ec6['query'][_0x87e2('0x52')]));_0x15a216[_0x87e2('0x41')]=_0x15a216['attributes']['length']?_0x15a216[_0x87e2('0x41')]:_0x2a25ca[_0x87e2('0x4e')];_0x15a216[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x4a1ec6[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x15a216[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x4a1ec6[_0x87e2('0x3c')],_0x2a25ca[_0x87e2('0xc0')]));if(_0x4a1ec6['query'][_0x87e2('0xc4')]){_0x15a216[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x15a216[_0x87e2('0x3b')],{'$or':_['map'](_0x15a216[_0x87e2('0x41')],function(_0x3c6b27){var _0x2ae6db={};_0x2ae6db[_0x3c6b27]={'$like':'%'+_0x4a1ec6[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x2ae6db;})});}_0x15a216=_[_0x87e2('0x54')]({},_0x15a216,_0x4a1ec6[_0x87e2('0x55')]);return _0x3c799b['getVoicePrefixes'](_0x15a216);}})[_0x87e2('0x13')](function(_0x1f668c){if(_0x1f668c){_0x4df294=_0x1f668c[_0x87e2('0x44')];if(!_0x4a1ec6[_0x87e2('0x3c')][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x15a216['limit']=qs['limit'](_0x4a1ec6[_0x87e2('0x3c')]['limit']);_0x15a216[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x4a1ec6[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x3c799b['getVoicePrefixes'](_0x15a216);}})[_0x87e2('0x13')](function(_0x19bb2f){if(_0x19bb2f){return _0x19bb2f?{'count':_0x4df294,'rows':_0x19bb2f}:null;}})[_0x87e2('0x13')](respondWithResult(_0x1d9d6c,null))[_0x87e2('0x1c')](handleError(_0x1d9d6c,null));};exports[_0x87e2('0x134')]=function(_0x25cbd9,_0xfd5c76){var _0x4881e3={};var _0x2e4fce={};var _0x18b09e;var _0x6dc4e1;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x25cbd9[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0xfd5c76,null))[_0x87e2('0x13')](function(_0x44b3ae){if(_0x44b3ae){_0x18b09e=_0x44b3ae;_0x2e4fce[_0x87e2('0x4e')]=_['keys'](db[_0x87e2('0x135')][_0x87e2('0x37')]);_0x2e4fce[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x25cbd9[_0x87e2('0x3c')]);_0x2e4fce[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x2e4fce[_0x87e2('0x4e')],_0x2e4fce[_0x87e2('0x3c')]);_0x4881e3['attributes']=_[_0x87e2('0x51')](_0x2e4fce['model'],qs[_0x87e2('0x52')](_0x25cbd9[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x4881e3['attributes']=_0x4881e3[_0x87e2('0x41')][_0x87e2('0x44')]?_0x4881e3[_0x87e2('0x41')]:_0x2e4fce['model'];_0x4881e3[_0x87e2('0xc1')]=qs['sort'](_0x25cbd9[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x4881e3[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x25cbd9[_0x87e2('0x3c')],_0x2e4fce['filters']));if(_0x25cbd9[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x4881e3[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x4881e3['where'],{'$or':_['map'](_0x4881e3['attributes'],function(_0x474e99){var _0x40b835={};_0x40b835[_0x474e99]={'$like':'%'+_0x25cbd9[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x40b835;})});}_0x4881e3=_[_0x87e2('0x54')]({},_0x4881e3,_0x25cbd9[_0x87e2('0x55')]);return _0x18b09e[_0x87e2('0x134')](_0x4881e3);}})[_0x87e2('0x13')](function(_0x44eb8d){if(_0x44eb8d){_0x6dc4e1=_0x44eb8d[_0x87e2('0x44')];if(!_0x25cbd9[_0x87e2('0x3c')][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x4881e3['limit']=qs[_0x87e2('0xcc')](_0x25cbd9['query'][_0x87e2('0xcc')]);_0x4881e3[_0x87e2('0x22')]=qs['offset'](_0x25cbd9[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x18b09e[_0x87e2('0x134')](_0x4881e3);}})[_0x87e2('0x13')](function(_0x46587c){if(_0x46587c){return _0x46587c?{'count':_0x6dc4e1,'rows':_0x46587c}:null;}})[_0x87e2('0x13')](respondWithResult(_0xfd5c76,null))['catch'](handleError(_0xfd5c76,null));};exports[_0x87e2('0x136')]=function(_0x36e307,_0x515674){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x36e307['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x515674,null))['then'](function(_0x34a7c3){if(_0x34a7c3){return _0x34a7c3[_0x87e2('0x136')](_0x36e307[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0x36e307[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{});}})[_0x87e2('0x13')](respondWithResult(_0x515674,null))[_0x87e2('0x1c')](handleError(_0x515674,null));};exports[_0x87e2('0x137')]=function(_0x295f3e,_0x502f04){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x295f3e[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x502f04,null))[_0x87e2('0x13')](function(_0x15ad31){if(_0x15ad31){return _0x15ad31[_0x87e2('0x137')](_0x295f3e[_0x87e2('0x3c')][_0x87e2('0x5b')]);}})[_0x87e2('0x13')](respondWithStatusCode(_0x502f04,null))[_0x87e2('0x1c')](handleError(_0x502f04,null));};exports[_0x87e2('0x138')]=function(_0x434471,_0x52f1db){var _0x36b7db={};var _0x593b5f={};var _0x4ad077;var _0x347b8f;return db['User']['findOne']({'where':{'id':_0x434471[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x52f1db,null))[_0x87e2('0x13')](function(_0x48e44d){if(_0x48e44d){_0x4ad077=_0x48e44d;_0x593b5f['model']=_['keys'](db['MailAccount'][_0x87e2('0x37')]);_0x593b5f[_0x87e2('0x3c')]=_['keys'](_0x434471['query']);_0x593b5f['filters']=_[_0x87e2('0x51')](_0x593b5f[_0x87e2('0x4e')],_0x593b5f['query']);_0x36b7db[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x593b5f[_0x87e2('0x4e')],qs['fields'](_0x434471[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x36b7db['attributes']=_0x36b7db[_0x87e2('0x41')][_0x87e2('0x44')]?_0x36b7db[_0x87e2('0x41')]:_0x593b5f[_0x87e2('0x4e')];_0x36b7db[_0x87e2('0xc1')]=qs['sort'](_0x434471['query'][_0x87e2('0xc2')]);_0x36b7db[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_['pick'](_0x434471[_0x87e2('0x3c')],_0x593b5f[_0x87e2('0xc0')]));if(_0x434471[_0x87e2('0x3c')]['filter']){_0x36b7db[_0x87e2('0x3b')]=_['merge'](_0x36b7db['where'],{'$or':_[_0x87e2('0x2f')](_0x36b7db[_0x87e2('0x41')],function(_0xc10806){var _0x4b7525={};_0x4b7525[_0xc10806]={'$like':'%'+_0x434471['query'][_0x87e2('0xc4')]+'%'};return _0x4b7525;})});}_0x36b7db=_[_0x87e2('0x54')]({},_0x36b7db,_0x434471[_0x87e2('0x55')]);return _0x4ad077[_0x87e2('0x138')](_0x36b7db);}})[_0x87e2('0x13')](function(_0x644111){if(_0x644111){_0x347b8f=_0x644111[_0x87e2('0x44')];if(!_0x434471[_0x87e2('0x3c')][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x36b7db[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x434471[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x36b7db[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x434471[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x4ad077[_0x87e2('0x138')](_0x36b7db);}})[_0x87e2('0x13')](function(_0x114e40){if(_0x114e40){return _0x114e40?{'count':_0x347b8f,'rows':_0x114e40}:null;}})[_0x87e2('0x13')](respondWithResult(_0x52f1db,null))[_0x87e2('0x1c')](handleError(_0x52f1db,null));};exports[_0x87e2('0x139')]=function(_0x1adcd3,_0x46e7e8){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x1adcd3['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x46e7e8,null))[_0x87e2('0x13')](function(_0x19c811){if(_0x19c811){return _0x19c811[_0x87e2('0x139')](_0x1adcd3[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0x1adcd3['body'],[_0x87e2('0x5b'),'id'])||{});}})[_0x87e2('0x13')](respondWithResult(_0x46e7e8,null))['catch'](handleError(_0x46e7e8,null));};exports['removeMailAccounts']=function(_0x135ea7,_0x12e4e8){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x135ea7['params']['id']}})['then'](handleEntityNotFound(_0x12e4e8,null))['then'](function(_0x2be562){if(_0x2be562){return _0x2be562[_0x87e2('0x13a')](_0x135ea7[_0x87e2('0x3c')][_0x87e2('0x5b')]);}})[_0x87e2('0x13')](respondWithStatusCode(_0x12e4e8,null))[_0x87e2('0x1c')](handleError(_0x12e4e8,null));};exports[_0x87e2('0x13b')]=function(_0x41a21b,_0x2d6e41){var _0x35bf88={};var _0x4bc658={};var _0x2e721b;var _0x40a7fa;return db['User'][_0x87e2('0x8e')]({'where':{'id':_0x41a21b['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x2d6e41,null))[_0x87e2('0x13')](function(_0x34b487){if(_0x34b487){_0x2e721b=_0x34b487;_0x4bc658[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db[_0x87e2('0x13c')]['rawAttributes']);_0x4bc658[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x41a21b[_0x87e2('0x3c')]);_0x4bc658['filters']=_[_0x87e2('0x51')](_0x4bc658[_0x87e2('0x4e')],_0x4bc658[_0x87e2('0x3c')]);_0x35bf88['attributes']=_[_0x87e2('0x51')](_0x4bc658['model'],qs[_0x87e2('0x52')](_0x41a21b[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x35bf88[_0x87e2('0x41')]=_0x35bf88[_0x87e2('0x41')][_0x87e2('0x44')]?_0x35bf88[_0x87e2('0x41')]:_0x4bc658['model'];_0x35bf88['order']=qs[_0x87e2('0xc2')](_0x41a21b['query'][_0x87e2('0xc2')]);_0x35bf88['where']=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x41a21b[_0x87e2('0x3c')],_0x4bc658[_0x87e2('0xc0')]));if(_0x41a21b[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x35bf88[_0x87e2('0x3b')]=_['merge'](_0x35bf88[_0x87e2('0x3b')],{'$or':_[_0x87e2('0x2f')](_0x35bf88[_0x87e2('0x41')],function(_0x81e80b){var _0x56a35c={};_0x56a35c[_0x81e80b]={'$like':'%'+_0x41a21b[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x56a35c;})});}_0x35bf88=_[_0x87e2('0x54')]({},_0x35bf88,_0x41a21b['options']);return _0x2e721b[_0x87e2('0x13b')](_0x35bf88);}})[_0x87e2('0x13')](function(_0x275797){if(_0x275797){_0x40a7fa=_0x275797[_0x87e2('0x44')];if(!_0x41a21b[_0x87e2('0x3c')]['hasOwnProperty'](_0x87e2('0xcb'))){_0x35bf88[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x41a21b[_0x87e2('0x3c')]['limit']);_0x35bf88[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x41a21b[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x2e721b[_0x87e2('0x13b')](_0x35bf88);}})['then'](function(_0x1f4926){if(_0x1f4926){return _0x1f4926?{'count':_0x40a7fa,'rows':_0x1f4926}:null;}})[_0x87e2('0x13')](respondWithResult(_0x2d6e41,null))['catch'](handleError(_0x2d6e41,null));};exports[_0x87e2('0x13d')]=function(_0x4a175d,_0x5cc9c4){return db[_0x87e2('0x36')]['find']({'where':{'id':_0x4a175d['params']['id']}})['then'](handleEntityNotFound(_0x5cc9c4,null))['then'](function(_0xf9f8d8){if(_0xf9f8d8){return _0xf9f8d8[_0x87e2('0x13d')](_0x4a175d[_0x87e2('0x58')]['ids'],_[_0x87e2('0x5a')](_0x4a175d[_0x87e2('0x58')],['ids','id'])||{});}})['then'](respondWithResult(_0x5cc9c4,null))['catch'](handleError(_0x5cc9c4,null));};exports[_0x87e2('0x13e')]=function(_0x2aaa43,_0x512cb2){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x2aaa43[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x512cb2,null))[_0x87e2('0x13')](function(_0x2c9f3f){if(_0x2c9f3f){return _0x2c9f3f[_0x87e2('0x13e')](_0x2aaa43[_0x87e2('0x3c')][_0x87e2('0x5b')]);}})[_0x87e2('0x13')](respondWithStatusCode(_0x512cb2,null))[_0x87e2('0x1c')](handleError(_0x512cb2,null));};exports[_0x87e2('0x13f')]=function(_0x34fa76,_0x15f783){var _0x98b603={};var _0x22d048={};var _0x1ded9e;var _0x5b10d7;return db[_0x87e2('0x36')]['findOne']({'where':{'id':_0x34fa76[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x15f783,null))[_0x87e2('0x13')](function(_0x1028a3){if(_0x1028a3){_0x1ded9e=_0x1028a3;_0x22d048[_0x87e2('0x4e')]=_['keys'](db[_0x87e2('0x140')][_0x87e2('0x37')]);_0x22d048[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x34fa76['query']);_0x22d048[_0x87e2('0xc0')]=_[_0x87e2('0x51')](_0x22d048[_0x87e2('0x4e')],_0x22d048[_0x87e2('0x3c')]);_0x98b603[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x22d048['model'],qs[_0x87e2('0x52')](_0x34fa76[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x98b603[_0x87e2('0x41')]=_0x98b603[_0x87e2('0x41')][_0x87e2('0x44')]?_0x98b603[_0x87e2('0x41')]:_0x22d048[_0x87e2('0x4e')];_0x98b603[_0x87e2('0xc1')]=qs['sort'](_0x34fa76[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x98b603[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_['pick'](_0x34fa76[_0x87e2('0x3c')],_0x22d048[_0x87e2('0xc0')]));if(_0x34fa76[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x98b603[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x98b603[_0x87e2('0x3b')],{'$or':_[_0x87e2('0x2f')](_0x98b603[_0x87e2('0x41')],function(_0xeed7d1){var _0x2b88a6={};_0x2b88a6[_0xeed7d1]={'$like':'%'+_0x34fa76[_0x87e2('0x3c')]['filter']+'%'};return _0x2b88a6;})});}_0x98b603=_[_0x87e2('0x54')]({},_0x98b603,_0x34fa76[_0x87e2('0x55')]);return _0x1ded9e['getSmsAccounts'](_0x98b603);}})[_0x87e2('0x13')](function(_0x1e3874){if(_0x1e3874){_0x5b10d7=_0x1e3874[_0x87e2('0x44')];if(!_0x34fa76[_0x87e2('0x3c')]['hasOwnProperty'](_0x87e2('0xcb'))){_0x98b603[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x34fa76[_0x87e2('0x3c')][_0x87e2('0xcc')]);_0x98b603[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x34fa76[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x1ded9e[_0x87e2('0x13f')](_0x98b603);}})[_0x87e2('0x13')](function(_0x2ae5b9){if(_0x2ae5b9){return _0x2ae5b9?{'count':_0x5b10d7,'rows':_0x2ae5b9}:null;}})['then'](respondWithResult(_0x15f783,null))[_0x87e2('0x1c')](handleError(_0x15f783,null));};exports['addSmsAccounts']=function(_0x4a385f,_0x3f156d){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x4a385f[_0x87e2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3f156d,null))[_0x87e2('0x13')](function(_0x552b60){if(_0x552b60){return _0x552b60[_0x87e2('0x141')](_0x4a385f['body']['ids'],_[_0x87e2('0x5a')](_0x4a385f[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{});}})[_0x87e2('0x13')](respondWithResult(_0x3f156d,null))[_0x87e2('0x1c')](handleError(_0x3f156d,null));};exports[_0x87e2('0x142')]=function(_0x3e9b3f,_0x377a24){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x3e9b3f[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x377a24,null))[_0x87e2('0x13')](function(_0x12d995){if(_0x12d995){return _0x12d995[_0x87e2('0x142')](_0x3e9b3f[_0x87e2('0x3c')][_0x87e2('0x5b')]);}})[_0x87e2('0x13')](respondWithStatusCode(_0x377a24,null))['catch'](handleError(_0x377a24,null));};exports[_0x87e2('0x143')]=function(_0x547db2,_0x567c9a){var _0x56da25={};var _0x440e79={};var _0x1c14b1;var _0x41e5b8;return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x547db2['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x567c9a,null))[_0x87e2('0x13')](function(_0x3e996d){if(_0x3e996d){_0x1c14b1=_0x3e996d;_0x440e79[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](db[_0x87e2('0x144')][_0x87e2('0x37')]);_0x440e79[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x547db2[_0x87e2('0x3c')]);_0x440e79[_0x87e2('0xc0')]=_['intersection'](_0x440e79['model'],_0x440e79['query']);_0x56da25[_0x87e2('0x41')]=_['intersection'](_0x440e79[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x547db2['query']['fields']));_0x56da25[_0x87e2('0x41')]=_0x56da25[_0x87e2('0x41')][_0x87e2('0x44')]?_0x56da25['attributes']:_0x440e79[_0x87e2('0x4e')];_0x56da25['order']=qs['sort'](_0x547db2['query'][_0x87e2('0xc2')]);_0x56da25[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x547db2[_0x87e2('0x3c')],_0x440e79[_0x87e2('0xc0')]));if(_0x547db2['query'][_0x87e2('0xc4')]){_0x56da25['where']=_[_0x87e2('0x54')](_0x56da25['where'],{'$or':_[_0x87e2('0x2f')](_0x56da25['attributes'],function(_0x42fcf3){var _0x3004fb={};_0x3004fb[_0x42fcf3]={'$like':'%'+_0x547db2[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x3004fb;})});}_0x56da25=_['merge']({},_0x56da25,_0x547db2['options']);return _0x1c14b1[_0x87e2('0x143')](_0x56da25);}})[_0x87e2('0x13')](function(_0x30bc9c){if(_0x30bc9c){_0x41e5b8=_0x30bc9c[_0x87e2('0x44')];if(!_0x547db2[_0x87e2('0x3c')][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x56da25[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x547db2[_0x87e2('0x3c')]['limit']);_0x56da25['offset']=qs[_0x87e2('0x22')](_0x547db2[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x1c14b1[_0x87e2('0x143')](_0x56da25);}})[_0x87e2('0x13')](function(_0xbb55a3){if(_0xbb55a3){return _0xbb55a3?{'count':_0x41e5b8,'rows':_0xbb55a3}:null;}})[_0x87e2('0x13')](respondWithResult(_0x567c9a,null))[_0x87e2('0x1c')](handleError(_0x567c9a,null));};exports[_0x87e2('0x145')]=function(_0x183ada,_0x212ffa){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x183ada['params']['id']}})['then'](handleEntityNotFound(_0x212ffa,null))['then'](function(_0x213088){if(_0x213088){return _0x213088['addChatWebsites'](_0x183ada[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0x183ada[_0x87e2('0x58')],[_0x87e2('0x5b'),'id'])||{});}})[_0x87e2('0x13')](respondWithResult(_0x212ffa,null))[_0x87e2('0x1c')](handleError(_0x212ffa,null));};exports[_0x87e2('0x146')]=function(_0x2abd7e,_0x3f457f){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x2abd7e['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x3f457f,null))[_0x87e2('0x13')](function(_0x35636e){if(_0x35636e){return _0x35636e[_0x87e2('0x146')](_0x2abd7e[_0x87e2('0x3c')][_0x87e2('0x5b')]);}})['then'](respondWithStatusCode(_0x3f457f,null))['catch'](handleError(_0x3f457f,null));};exports[_0x87e2('0x147')]=function(_0x5377d7,_0x4acd53){var _0x2a20a0={};var _0x2c1c2a={};var _0x56035a;var _0x2e930b;return db['User'][_0x87e2('0x8e')]({'where':{'id':_0x5377d7[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x4acd53,null))[_0x87e2('0x13')](function(_0x560164){if(_0x560164){_0x56035a=_0x560164;_0x2c1c2a['model']=_[_0x87e2('0x4f')](db[_0x87e2('0x148')][_0x87e2('0x37')]);_0x2c1c2a[_0x87e2('0x3c')]=_['keys'](_0x5377d7[_0x87e2('0x3c')]);_0x2c1c2a[_0x87e2('0xc0')]=_['intersection'](_0x2c1c2a[_0x87e2('0x4e')],_0x2c1c2a['query']);_0x2a20a0[_0x87e2('0x41')]=_[_0x87e2('0x51')](_0x2c1c2a[_0x87e2('0x4e')],qs[_0x87e2('0x52')](_0x5377d7[_0x87e2('0x3c')][_0x87e2('0x52')]));_0x2a20a0['attributes']=_0x2a20a0[_0x87e2('0x41')][_0x87e2('0x44')]?_0x2a20a0[_0x87e2('0x41')]:_0x2c1c2a[_0x87e2('0x4e')];_0x2a20a0[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x5377d7[_0x87e2('0x3c')][_0x87e2('0xc2')]);_0x2a20a0[_0x87e2('0x3b')]=qs[_0x87e2('0xc0')](_[_0x87e2('0xc3')](_0x5377d7['query'],_0x2c1c2a[_0x87e2('0xc0')]));if(_0x5377d7[_0x87e2('0x3c')]['filter']){_0x2a20a0[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x2a20a0[_0x87e2('0x3b')],{'$or':_[_0x87e2('0x2f')](_0x2a20a0['attributes'],function(_0x16b70b){var _0x2a599e={};_0x2a599e[_0x16b70b]={'$like':'%'+_0x5377d7[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x2a599e;})});}_0x2a20a0=_[_0x87e2('0x54')]({},_0x2a20a0,_0x5377d7['options']);return _0x56035a['getWhatsappAccounts'](_0x2a20a0);}})[_0x87e2('0x13')](function(_0xad66e3){if(_0xad66e3){_0x2e930b=_0xad66e3['length'];if(!_0x5377d7[_0x87e2('0x3c')][_0x87e2('0xc5')]('nolimit')){_0x2a20a0[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x5377d7['query'][_0x87e2('0xcc')]);_0x2a20a0['offset']=qs[_0x87e2('0x22')](_0x5377d7[_0x87e2('0x3c')][_0x87e2('0x22')]);}return _0x56035a[_0x87e2('0x147')](_0x2a20a0);}})[_0x87e2('0x13')](function(_0x11406d){if(_0x11406d){return _0x11406d?{'count':_0x2e930b,'rows':_0x11406d}:null;}})[_0x87e2('0x13')](respondWithResult(_0x4acd53,null))[_0x87e2('0x1c')](handleError(_0x4acd53,null));};exports[_0x87e2('0x149')]=function(_0x269e57,_0xf740cb){return db[_0x87e2('0x36')][_0x87e2('0x32')]({'where':{'id':_0x269e57[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0xf740cb,null))['then'](function(_0x5e4e95){if(_0x5e4e95){return _0x5e4e95[_0x87e2('0x149')](_0x269e57[_0x87e2('0x58')][_0x87e2('0x5b')],_[_0x87e2('0x5a')](_0x269e57[_0x87e2('0x58')],['ids','id'])||{});}})[_0x87e2('0x13')](respondWithResult(_0xf740cb,null))[_0x87e2('0x1c')](handleError(_0xf740cb,null));};exports['removeWhatsappAccounts']=function(_0x60e205,_0x33b7da){return db['User']['find']({'where':{'id':_0x60e205['params']['id']}})[_0x87e2('0x13')](handleEntityNotFound(_0x33b7da,null))[_0x87e2('0x13')](function(_0xbdc65d){if(_0xbdc65d){return _0xbdc65d[_0x87e2('0x14a')](_0x60e205[_0x87e2('0x3c')][_0x87e2('0x5b')]);}})['then'](respondWithStatusCode(_0x33b7da,null))[_0x87e2('0x1c')](handleError(_0x33b7da,null));};exports[_0x87e2('0x14b')]=function(_0x583f03,_0x31a3f3){var _0x143a9={},_0x18f302={},_0x1e1a9c={'count':0x0,'rows':[]};var _0x30650e=db[_0x87e2('0x14c')][_0x87e2('0x37')];_0x18f302[_0x87e2('0x4e')]=_[_0x87e2('0x4f')](_0x30650e);_0x18f302[_0x87e2('0x3c')]=_[_0x87e2('0x4f')](_0x583f03['query']);_0x18f302['filters']=_[_0x87e2('0x51')](_0x18f302[_0x87e2('0x4e')],_0x18f302['query']);_0x18f302['filters']=_[_0x87e2('0xbe')](_0x18f302['filters'],['$and',_0x87e2('0x14d'),_0x87e2('0x14e'),_0x87e2('0x14f'),'$lt',_0x87e2('0x150'),_0x87e2('0x151'),_0x87e2('0x152'),_0x87e2('0x153'),'$between',_0x87e2('0x154'),_0x87e2('0x155'),_0x87e2('0x156'),'$like',_0x87e2('0x157'),_0x87e2('0x158'),_0x87e2('0x159'),_0x87e2('0x15a'),_0x87e2('0x15b'),_0x87e2('0x15c'),_0x87e2('0x15d'),_0x87e2('0x15e')]);_0x143a9['attributes']=_[_0x87e2('0x51')](_0x18f302['model'],qs[_0x87e2('0x52')](_0x583f03[_0x87e2('0x3c')]['fields']));_0x143a9[_0x87e2('0x41')]=_0x143a9[_0x87e2('0x41')][_0x87e2('0x44')]?_0x143a9[_0x87e2('0x41')]:_0x18f302[_0x87e2('0x4e')];if(!_0x583f03[_0x87e2('0x3c')]['hasOwnProperty']('nolimit')){_0x143a9[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0x583f03[_0x87e2('0x3c')]['limit']);_0x143a9[_0x87e2('0x22')]=qs[_0x87e2('0x22')](_0x583f03[_0x87e2('0x3c')][_0x87e2('0x22')]);}_0x143a9[_0x87e2('0xc1')]=qs[_0x87e2('0xc2')](_0x583f03['query'][_0x87e2('0xc2')]);_0x143a9[_0x87e2('0x3b')]=qs['filters'](_[_0x87e2('0xc3')](_0x583f03[_0x87e2('0x3c')],_0x18f302[_0x87e2('0xc0')]));if(_0x583f03[_0x87e2('0x3c')][_0x87e2('0xc4')]){_0x143a9[_0x87e2('0x3b')]=_[_0x87e2('0x54')](_0x143a9['where'],{'$or':_[_0x87e2('0x2f')](_0x143a9[_0x87e2('0x41')],function(_0x354db8){var _0x409a6e={};_0x409a6e[_0x354db8]={'$like':'%'+_0x583f03[_0x87e2('0x3c')][_0x87e2('0xc4')]+'%'};return _0x409a6e;})});}_0x143a9[_0x87e2('0x3b')]={'$and':[_0x143a9[_0x87e2('0x3b')],{'$or':[{'UserId':_0x583f03[_0x87e2('0x4d')]['id']},{'OwnerId':_0x583f03[_0x87e2('0x4d')]['id']}]}]};_0x143a9=_[_0x87e2('0x54')]({},_0x143a9,_0x583f03[_0x87e2('0x55')]);var _0x458a3f={'where':_0x143a9[_0x87e2('0x3b')]};return db['CmHopper'][_0x87e2('0x23')](_0x458a3f)[_0x87e2('0x13')](function(_0x1e36f7){_0x1e1a9c[_0x87e2('0x23')]=_0x1e36f7;if(_0x583f03['query'][_0x87e2('0x53')]){_0x143a9['include']=[{'attributes':['id',_0x87e2('0x15f'),_0x87e2('0x160'),'phone'],'model':db[_0x87e2('0x161')],'as':_0x87e2('0x162')},{'attributes':['id',_0x87e2('0x33'),_0x87e2('0x163')],'model':db['VoiceQueue'],'as':'Queue'}];}return db[_0x87e2('0x14c')][_0x87e2('0xce')](_0x143a9);})[_0x87e2('0x13')](function(_0xed564c){_0x1e1a9c[_0x87e2('0x43')]=_0xed564c;return _0x1e1a9c;})[_0x87e2('0x13')](respondWithFilteredResult(_0x31a3f3,_0x143a9))[_0x87e2('0x1c')](handleError(_0x31a3f3,null));};exports['getApiKey']=function(_0x1c0f50,_0x41bd6c){if(!_[_0x87e2('0x5f')](_0x1c0f50[_0x87e2('0x2b')]['id'])&&(_0x1c0f50[_0x87e2('0x2b')][_0x87e2('0x28')]==_0x87e2('0x29')||_0x1c0f50[_0x87e2('0x2b')][_0x87e2('0x28')]==_0x87e2('0x2b'))){return db[_0x87e2('0x36')][_0x87e2('0x8e')]({'where':{'id':_0x1c0f50[_0x87e2('0x4d')]['id']},'raw':!![]})[_0x87e2('0x13')](function(_0x43e4b9){return authService[_0x87e2('0x164')](_0x43e4b9);})[_0x87e2('0x13')](function(_0x3d53dc){if(_0x3d53dc){return _0x41bd6c[_0x87e2('0x1e')](0xc8)[_0x87e2('0x20')]({'api_key':_0x3d53dc[_0x87e2('0x165')]});}else{return _0x41bd6c[_0x87e2('0x1e')](0xcc)[_0x87e2('0x20')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x87e2('0x1c')](handleError(_0x41bd6c,0x193));}else{return _0x41bd6c[_0x87e2('0x1e')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['createApiKey']=function(_0x22e2b2,_0xa0f063){if(!_[_0x87e2('0x5f')](_0x22e2b2[_0x87e2('0x2b')]['id'])&&(_0x22e2b2[_0x87e2('0x2b')][_0x87e2('0x28')]==_0x87e2('0x29')||_0x22e2b2[_0x87e2('0x2b')]['role']==_0x87e2('0x2b'))){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x22e2b2[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](function(_0x41efcf){return authService[_0x87e2('0x166')](_0x41efcf);})['then'](function(_0x3f0c18){return db[_0x87e2('0x36')][_0x87e2('0x25')]({'apiKeyIat':_0x3f0c18[_0x87e2('0x167')],'apiKeyNonce':_0x3f0c18[_0x87e2('0x168')]},{'where':{'id':_0x22e2b2[_0x87e2('0x4d')]['id']}})[_0x87e2('0x13')](function(){return _0xa0f063[_0x87e2('0x1e')](0xc8)['json']({'api_key':_0x3f0c18[_0x87e2('0x165')]});});})['catch'](handleError(_0xa0f063,0x193));}else{return _0xa0f063[_0x87e2('0x1e')](0x191)[_0x87e2('0x20')]({'message':_0x87e2('0x169')});}};exports[_0x87e2('0x16a')]=function(_0x117f13,_0x57f06e){if(!_[_0x87e2('0x5f')](_0x117f13['user']['id'])&&(_0x117f13[_0x87e2('0x2b')][_0x87e2('0x28')]==_0x87e2('0x29')||_0x117f13['user'][_0x87e2('0x28')]==_0x87e2('0x2b'))){return db['User'][_0x87e2('0x32')]({'where':{'id':_0x117f13[_0x87e2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x57f06e,null))[_0x87e2('0x13')](function(_0x44e72f){if(_0x44e72f&&_0x44e72f[_0x87e2('0x16b')]&&_0x44e72f['apiKeyIat'])return _0x44e72f;else throw{'message':_0x87e2('0x16c')};})['then'](function(){return db['User'][_0x87e2('0x25')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x117f13[_0x87e2('0x4d')]['id']}});})[_0x87e2('0x13')](respondWithStatusCode(_0x57f06e,0xc8))['catch'](handleError(_0x57f06e,0x193));}else{return _0x57f06e[_0x87e2('0x1e')](0x191)[_0x87e2('0x20')]({'message':_0x87e2('0x169')});}};exports[_0x87e2('0x16d')]=function(_0xd9ca96,_0x3277f8){var _0x5d7db1=_0xd9ca96[_0x87e2('0x2b')][_0x87e2('0xa5')]({'plain':!![]});if(!_0x5d7db1){return _0x3277f8[_0x87e2('0x1e')](0x191)['send'](_0x87e2('0x16e'));}else{Promise['resolve']()[_0x87e2('0x13')](function(){if(_0xd9ca96[_0x87e2('0x3c')][_0x87e2('0x3d')]!==_0x87e2('0x3e'))return;return _0xd9ca96[_0x87e2('0x2b')]['getUserSetting']();})[_0x87e2('0x13')](function(_0x448fea){if(!_0x448fea)return;return _0x448fea[_0x87e2('0xa5')]({'plain':!![]});})['then'](function(_0x16e1d2){_0x5d7db1[_0x87e2('0x3d')]=_0x16e1d2;return _0x3277f8[_0x87e2('0x1e')](0xc8)['json'](_0x5d7db1);});}};exports[_0x87e2('0x16f')]=function(_0xab461b,_0x5bf143){var _0x52bc94={'offset':0x0},_0xd601b3={'count':0x0,'rows':[]};Promise[_0x87e2('0xf8')]()[_0x87e2('0x13')](function(){if(!_0xab461b['query'][_0x87e2('0xc4')]&&!_0xab461b['query'][_0x87e2('0x170')]&&!_0xab461b[_0x87e2('0x3c')][_0x87e2('0x171')])return[];return Promise[_0x87e2('0xf8')]()[_0x87e2('0x13')](function(){var _0x8d2d1c=[];if(!_['isEmpty'](_0xab461b[_0x87e2('0x3c')][_0x87e2('0x170')])){_0x8d2d1c[_0x87e2('0x42')](db[_0x87e2('0x109')]['findAll']({'attributes':['id','name'],'where':{'id':_0xab461b['query'][_0x87e2('0x170')]}}));}if(!_[_0x87e2('0x84')](_0xab461b[_0x87e2('0x3c')][_0x87e2('0x171')])){_0x8d2d1c[_0x87e2('0x42')](db[_0x87e2('0xa4')][_0x87e2('0xce')]({'attributes':['id','name'],'type':_0x87e2('0x172'),'where':{'id':_0xab461b[_0x87e2('0x3c')]['queues']}}));}return Promise[_0x87e2('0x57')](_0x8d2d1c);})[_0x87e2('0x13')](function(_0x58d87a){var _0x3d66f3=_['flatten'](_0x58d87a)['map'](function(_0x71af47){return _0x71af47[_0x87e2('0x118')]({'attributes':['id','name','internal',_0x87e2('0x97')],'raw':!![]});});return Promise[_0x87e2('0x57')](_0x3d66f3);})[_0x87e2('0x13')](function(_0x5ca0bb){var _0x12f484=_[_0x87e2('0x173')](_0x5ca0bb);if(!_0xab461b[_0x87e2('0x3c')][_0x87e2('0xc4')])return _0x12f484;if(_['isEmpty'](_0x12f484)){return db[_0x87e2('0x36')][_0x87e2('0xce')]({'attributes':['id','name','internal',_0x87e2('0x97')],'where':{'role':_0x87e2('0x2c'),'$or':[db[_0x87e2('0x62')][_0x87e2('0x3b')](db['sequelize']['fn']('lower',db[_0x87e2('0x62')][_0x87e2('0x174')]('name')),{'$like':'%'+_0xab461b[_0x87e2('0x3c')]['filter'][_0x87e2('0x9c')]()+'%'}),{'internal':{'$like':'%'+_0xab461b['query'][_0x87e2('0xc4')]+'%'}}]},'raw':!![]});}else{return _(_0x12f484)['flatten']()[_0x87e2('0xc4')](function(_0xff160b){return _0xff160b['name'][_0x87e2('0x9c')]()[_0x87e2('0x31')](_0xab461b['query']['filter'][_0x87e2('0x9c')]())||_0xff160b[_0x87e2('0x5c')]['toString']()[_0x87e2('0x31')](_0xab461b[_0x87e2('0x3c')][_0x87e2('0xc4')]);})[_0x87e2('0x30')]();}})['then'](function(_0x1db82a){var _0x15f2f6='name';var _0x3264b7='asc';if(_0xab461b['query']['sort']){_0x3264b7=_0xab461b['query'][_0x87e2('0xc2')][0x0]==='-'?_0x87e2('0x175'):'asc';_0x15f2f6=_0x3264b7===_0x87e2('0x176')?_0xab461b[_0x87e2('0x3c')][_0x87e2('0xc2')]:_0xab461b[_0x87e2('0x3c')][_0x87e2('0xc2')][_0x87e2('0x177')](0x1);}return _(_0x1db82a)[_0x87e2('0x178')]('id')[_0x87e2('0x179')]([function(_0x5a4704){return _0x15f2f6===_0x87e2('0x33')?_0x5a4704[_0x15f2f6][_0x87e2('0x9c')]():_0x5a4704[_0x15f2f6];}],[_0x3264b7])[_0x87e2('0x2f')](function(_0x583a80){return _[_0x87e2('0xc3')](_0x583a80,['id',_0x87e2('0x33'),'internal',_0x87e2('0x97')]);})['value']();})[_0x87e2('0x13')](function(_0x328252){return amiClient[_0x87e2('0x17a')](_0x87e2('0x83'),_0xab461b)[_0x87e2('0x13')](function(_0x25bc01){if(_0x25bc01[_0x87e2('0x17')])throw new Error(_0x87e2('0x17b'));var _0xfd0f32=_0x25bc01[_0x87e2('0x17c')];var _0x19828f=jayson['client'][_0x87e2('0x12')]({'port':0x232c});return _0x19828f[_0x87e2('0x17a')](_0x87e2('0x83'),_0xab461b)[_0x87e2('0x13')](function(_0x58485d){if(_0x58485d[_0x87e2('0x17')])throw new Error(_0x87e2('0x17d'));var _0x1d0fb4=_0x58485d[_0x87e2('0x17c')];return _[_0x87e2('0x54')]({},_0x1d0fb4,_0xfd0f32);});})['then'](function(_0x44fad3){return _[_0x87e2('0x2f')](_0x328252,function(_0x267c9c){var _0x30cbe5=_[_0x87e2('0x32')](_0x44fad3[_0x87e2('0x43')],['id',_0x267c9c['id']]);if(!_0x30cbe5||!_0x267c9c[_0x87e2('0x97')]){_0x267c9c[_0x87e2('0x1e')]=_0x87e2('0x17e');}else if(_0x30cbe5[_0x87e2('0x99')]){_0x267c9c[_0x87e2('0x1e')]='pause';}else{_0x267c9c[_0x87e2('0x1e')]=_[_0x87e2('0x31')]([_0x87e2('0x17f'),_0x87e2('0x180'),'unavailable',_0x87e2('0x181'),null,undefined],_0x30cbe5[_0x87e2('0x182')])?'online':_0x87e2('0x183');}return _0x267c9c;});});});})[_0x87e2('0x13')](function(_0x3291f7){if(!_0xab461b[_0x87e2('0x3c')][_0x87e2('0xc5')](_0x87e2('0xcb'))){_0x52bc94[_0x87e2('0xcc')]=qs[_0x87e2('0xcc')](_0xab461b[_0x87e2('0x3c')][_0x87e2('0xcc')]||0xa);_0x52bc94['offset']=qs[_0x87e2('0x22')](_0xab461b['query']['offset']);}_0xd601b3[_0x87e2('0x23')]=_0x3291f7['length'];_0xd601b3['rows']=_0x52bc94[_0x87e2('0xcc')]?_0x3291f7[_0x87e2('0x184')](_0x52bc94['offset'],_0x52bc94['offset']+_0x52bc94['limit']):_0x3291f7;return _0xd601b3;})[_0x87e2('0x13')](respondWithFilteredResult(_0x5bf143,_0x52bc94))[_0x87e2('0x1c')](handleError(_0x5bf143,null));};function get_open_tabs(_0x3224cf,_0x2383e0){var _0x157e46=_0x3224cf[_0x87e2('0x185')](0x0)[_0x87e2('0x186')]()+_0x3224cf['slice'](0x1);var _0x31bc78={'type':db[_0x87e2('0x87')][_0x87e2('0x63')][_0x87e2('0x64')],'raw':!![]};return new Promise(function(_0x142776,_0x595a71){var _0x12bbcd=squel['select']()['field'](_0x87e2('0x187')+_0x157e46+'InteractionId','id')[_0x87e2('0x188')](_0x87e2('0x189'))[_0x87e2('0x65')](_0x87e2('0x18a')+_0x3224cf+'_interactions','ui')['where']('ui.UserId\x20=\x20?',_0x2383e0['id']);return db[_0x87e2('0x62')]['query'](_0x12bbcd[_0x87e2('0x18b')](),_0x31bc78)[_0x87e2('0x13')](function(_0x4547da){_0x2383e0[_0x157e46+_0x87e2('0x18c')]=_0x4547da;_0x142776(_0x4547da);})['catch'](function(_0x45b380){_0x595a71(_0x45b380);});});}
\ No newline at end of file
+var _0xcaa0=['SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','format','LOCAL/%s@from-sip/n','intrf','SIP/%s','user:forcelogout','headers','x-forwarded-for','remoteAddress','connection','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','PAUSE','LOGININPAUSE','isMiddleware','resolve','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','flattenDeep','addAgent','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','QueueId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','getAssociatedQueues','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','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','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','CmHopper','$and','$gt','$gte','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$notLike','$notILike','$overlap','$contains','$contained','lastName','Contact','dialActive','getApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','flatten','col','asc','desc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','unknown','unavailable','ringing','voiceStatus','busy','toUpperCase','slice','select','InteractionId','field','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','moment','path','squel','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','handleError','../../mysqldb','./user.socket','register','redis','defaults','localhost','client','http','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','update','emit','destroy','get','role','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','includes','find','value','stack','name','send','index','User','rawAttributes','fieldName','type','password','salt','getOptions','where','query','includeAll','include','userSetting','true','UserSetting','attributes','push','findAll','rows','openTabs','length','chat','dataValues','sms','mail','whatsapp','all','show','model','differenceBy','filters','intersection','fields','merge','options','openchannel','fax','body','params','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','isNil','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','103','113','110','104','105','106','107','108','109','100','111','114','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','UserProfileResource','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','telephone','isEmpty','compact','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','oldPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','add','toLowerCase','Queues','spread','capitalize','Queue:save','voice','VoiceQueue','penalty','UserVoiceQueueRt','upsert','Unknown\x20channel','remove','isArray','Queue:remove','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','concat','getContacts','keys','CmContact','order','sort','pick','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','getQueues','Queue','getVoiceQueuesRt','ChatGroup','getGroups','getRecordings','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','UserId','MailInteraction','getSmsInteractions'];(function(_0x3ab3ee,_0x5e28cb){var _0x345b27=function(_0x5df12a){while(--_0x5df12a){_0x3ab3ee['push'](_0x3ab3ee['shift']());}};_0x345b27(++_0x5e28cb);}(_0xcaa0,0xa8));var _0x0caa=function(_0x24853d,_0x16931f){_0x24853d=_0x24853d-0x0;var _0x4c5cff=_0xcaa0[_0x24853d];return _0x4c5cff;};'use strict';var moment=require(_0x0caa('0x0'));var util=require('util');var path=require(_0x0caa('0x1'));var fs=require('fs');var _=require('lodash');var squel=require(_0x0caa('0x2'));var jayson=require('jayson/promise');var Redis=require(_0x0caa('0x3'));var authService=require(_0x0caa('0x4'));var qs=require(_0x0caa('0x5'));var logger=require('../../config/logger')(_0x0caa('0x6'));var utils=require('../../config/utils');var config=require(_0x0caa('0x7'));var licenseUtil=require(_0x0caa('0x8'));var APIBadRequestError=require(_0x0caa('0x9'))[_0x0caa('0xa')];var APINotFoundError=require(_0x0caa('0x9'))['APINotFoundError'];var APIHandleError=require(_0x0caa('0x9'))[_0x0caa('0xb')];var db=require(_0x0caa('0xc'))['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0caa('0xd'))[_0x0caa('0xe')](socket);config[_0x0caa('0xf')]=_[_0x0caa('0x10')](config[_0x0caa('0xf')],{'host':_0x0caa('0x11'),'port':0x18eb});var amiClient=jayson[_0x0caa('0x12')][_0x0caa('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x29ce4f,_0x185b5e,_0x3ef3a3,_0x31034){return new Promise(function(_0x3a2b05,_0x3efc2f){var _0xa0b17d=_0x31034||amiClient;return _0xa0b17d[_0x0caa('0x14')](_0x29ce4f,_0x3ef3a3)[_0x0caa('0x15')](function(_0x16a2ac){logger[_0x0caa('0x16')](_0x0caa('0x17'),_0x185b5e,_0x0caa('0x18'));logger[_0x0caa('0x19')](_0x0caa('0x1a'),_0x185b5e,_0x0caa('0x18'),JSON[_0x0caa('0x1b')](_0x16a2ac));if(_0x16a2ac[_0x0caa('0x1c')]){if(_0x16a2ac[_0x0caa('0x1c')]['code']===0x1f4){logger[_0x0caa('0x1c')](_0x0caa('0x17'),_0x185b5e,_0x16a2ac[_0x0caa('0x1c')][_0x0caa('0x1d')]);return _0x3efc2f(_0x16a2ac[_0x0caa('0x1c')][_0x0caa('0x1d')]);}logger[_0x0caa('0x1c')]('User,\x20%s,\x20%s',_0x185b5e,_0x16a2ac[_0x0caa('0x1c')]['message']);return _0x3a2b05(_0x16a2ac[_0x0caa('0x1c')][_0x0caa('0x1d')]);}else{logger[_0x0caa('0x16')](_0x0caa('0x17'),_0x185b5e,_0x0caa('0x18'));_0x3a2b05(_0x16a2ac[_0x0caa('0x1e')]['message']);}})[_0x0caa('0x1f')](function(_0x395b87){logger[_0x0caa('0x1c')](_0x0caa('0x17'),_0x185b5e,_0x395b87);_0x3efc2f(_0x395b87);});});}function respondWithStatusCode(_0x4d587b,_0x572fe3){_0x572fe3=_0x572fe3||0xcc;return function(_0x4d18a0){if(_0x4d18a0){return _0x4d587b[_0x0caa('0x20')](_0x572fe3);}return _0x4d587b[_0x0caa('0x21')](_0x572fe3)['end']();};}function respondWithResult(_0x4836d9,_0x1fc4eb){_0x1fc4eb=_0x1fc4eb||0xc8;return function(_0x3e84c4){if(_0x3e84c4){return _0x4836d9[_0x0caa('0x21')](_0x1fc4eb)[_0x0caa('0x22')](_0x3e84c4);}};}function respondWithFilteredResult(_0x302f8e,_0x13ca97){return function(_0x7fe67a){if(_0x7fe67a){var _0x4b58f4=typeof _0x13ca97[_0x0caa('0x23')]===_0x0caa('0x24')&&typeof _0x13ca97[_0x0caa('0x25')]===_0x0caa('0x24');var _0x13c45a=_0x7fe67a[_0x0caa('0x26')];var _0x3f2001=_0x4b58f4?0x0:_0x13ca97[_0x0caa('0x23')];var _0x184e09=_0x4b58f4?_0x7fe67a[_0x0caa('0x26')]:_0x13ca97[_0x0caa('0x23')]+_0x13ca97[_0x0caa('0x25')];var _0x1c6a3f;if(_0x184e09>=_0x13c45a){_0x184e09=_0x13c45a;_0x1c6a3f=0xc8;}else{_0x1c6a3f=0xce;}_0x302f8e['status'](_0x1c6a3f);return _0x302f8e['set'](_0x0caa('0x27'),_0x3f2001+'-'+_0x184e09+'/'+_0x13c45a)[_0x0caa('0x22')](_0x7fe67a);}return null;};}function saveUpdates(_0x5b6ac1){return function(_0x2d992c){if(_0x2d992c){return _0x2d992c[_0x0caa('0x28')](_0x5b6ac1)['then'](function(_0x37edcc){socket[_0x0caa('0x29')]('userNotification:recalc:'+_0x37edcc['id'],{});return _0x37edcc;});}return null;};}function removeEntity(_0x2083bb){return function(_0x501f58){if(_0x501f58){return _0x501f58[_0x0caa('0x2a')]()['then'](function(){var _0x4cff85=_0x501f58[_0x0caa('0x2b')]({'plain':!![]});if(_0x4cff85[_0x0caa('0x2c')]===_0x0caa('0x2d'))return;var _0x352e17=[{'name':_0x0caa('0x2e'),'value':_0x0caa('0x2f'),'ignore':!![]},{'name':_0x0caa('0x30'),'value':_0x0caa('0x31'),'ignore':![]},{'name':_0x0caa('0x32'),'value':'telephone','ignore':![]}];var _0x519905=_(_0x352e17)[_0x0caa('0x33')](_0x0caa('0x34'))[_0x0caa('0x35')]('value')['value']();if(_[_0x0caa('0x36')](_0x519905,_0x4cff85[_0x0caa('0x2c')])){return;}var _0x2cfb18=_[_0x0caa('0x37')](_0x352e17,[_0x0caa('0x38'),_0x4cff85['role']])['name'];return db['UserProfileResource'][_0x0caa('0x2a')]({'where':{'type':_0x2cfb18,'resourceId':_0x4cff85['id']}})[_0x0caa('0x15')](function(){return _0x501f58;});})[_0x0caa('0x15')](function(){_0x2083bb[_0x0caa('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3414aa){return function(_0x2c93c0){if(!_0x2c93c0){_0x3414aa[_0x0caa('0x20')](0x194);}return _0x2c93c0;};}function handleError(_0x565702,_0x33dc10){_0x33dc10=_0x33dc10||0x1f4;return function(_0x1f7ffe){logger['error'](_0x1f7ffe[_0x0caa('0x39')]);if(_0x1f7ffe['name']){delete _0x1f7ffe[_0x0caa('0x3a')];}_0x565702[_0x0caa('0x21')](_0x33dc10)[_0x0caa('0x3b')](_0x1f7ffe);};}exports[_0x0caa('0x3c')]=function(_0x409f26,_0x2ce509){var _0x5efe1c={},_0x4e5d77={'count':0x0,'rows':[]};var _0x43faee=_(db[_0x0caa('0x3d')][_0x0caa('0x3e')])[_0x0caa('0x35')](function(_0x2d0711){return{'name':_0x2d0711[_0x0caa('0x3f')],'type':_0x2d0711[_0x0caa('0x40')]['key']};})[_0x0caa('0x33')](function(_0xcfb3a7){return!_[_0x0caa('0x36')]([_0x0caa('0x41'),_0x0caa('0x42')],_0xcfb3a7[_0x0caa('0x3a')]);})['value']();_0x5efe1c=qs[_0x0caa('0x43')](_0x43faee,_0x409f26);var _0x35596f={'where':_0x5efe1c[_0x0caa('0x44')]};return db[_0x0caa('0x3d')]['count'](_0x35596f)['then'](function(_0x2d7e48){_0x4e5d77['count']=_0x2d7e48;if(_0x409f26[_0x0caa('0x45')][_0x0caa('0x46')]){_0x5efe1c[_0x0caa('0x47')]=[{'all':!![]}];}if(_0x409f26[_0x0caa('0x45')][_0x0caa('0x48')]===_0x0caa('0x49')){_0x5efe1c[_0x0caa('0x47')]=[{'model':db[_0x0caa('0x4a')],'as':_0x0caa('0x48')}];}if(!_[_0x0caa('0x36')](_0x5efe1c[_0x0caa('0x4b')],'id')){_0x5efe1c[_0x0caa('0x4b')][_0x0caa('0x4c')]('id');}return db[_0x0caa('0x3d')][_0x0caa('0x4d')](_0x5efe1c);})[_0x0caa('0x15')](function(_0x54cc3e){_0x4e5d77[_0x0caa('0x4e')]=_0x54cc3e;if(_0x409f26[_0x0caa('0x45')][_0x0caa('0x4f')]===_0x0caa('0x49')){var _0x4d2813=[];for(var _0x33bbbb=0x0;_0x33bbbb<_0x4e5d77[_0x0caa('0x4e')][_0x0caa('0x50')];_0x33bbbb++){_0x4d2813['push'](get_open_tabs(_0x0caa('0x51'),_0x4e5d77[_0x0caa('0x4e')][_0x33bbbb][_0x0caa('0x52')]));_0x4d2813[_0x0caa('0x4c')](get_open_tabs(_0x0caa('0x53'),_0x4e5d77[_0x0caa('0x4e')][_0x33bbbb][_0x0caa('0x52')]));_0x4d2813[_0x0caa('0x4c')](get_open_tabs('fax',_0x4e5d77[_0x0caa('0x4e')][_0x33bbbb][_0x0caa('0x52')]));_0x4d2813['push'](get_open_tabs(_0x0caa('0x54'),_0x4e5d77[_0x0caa('0x4e')][_0x33bbbb][_0x0caa('0x52')]));_0x4d2813['push'](get_open_tabs('openchannel',_0x4e5d77[_0x0caa('0x4e')][_0x33bbbb][_0x0caa('0x52')]));_0x4d2813['push'](get_open_tabs(_0x0caa('0x55'),_0x4e5d77['rows'][_0x33bbbb][_0x0caa('0x52')]));}return Promise[_0x0caa('0x56')](_0x4d2813)[_0x0caa('0x15')](function(){return _0x4e5d77;});}else{return _0x4e5d77;}})[_0x0caa('0x15')](respondWithFilteredResult(_0x2ce509,_0x5efe1c))[_0x0caa('0x1f')](handleError(_0x2ce509,null));};exports[_0x0caa('0x57')]=function(_0x19d534,_0x3b829f){var _0x4091a0={'raw':![],'where':{'id':_0x19d534['params']['id']}},_0xcbfaf9={};_0xcbfaf9[_0x0caa('0x58')]=_[_0x0caa('0x59')](_['keys'](db[_0x0caa('0x3d')]['rawAttributes']),[_0x0caa('0x41'),_0x0caa('0x42')]);_0xcbfaf9[_0x0caa('0x45')]=_['keys'](_0x19d534['query']);_0xcbfaf9[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0xcbfaf9[_0x0caa('0x58')],_0xcbfaf9[_0x0caa('0x45')]);_0x4091a0[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0xcbfaf9[_0x0caa('0x58')],qs['fields'](_0x19d534[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x4091a0[_0x0caa('0x4b')]=_0x4091a0[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x4091a0[_0x0caa('0x4b')]:_0xcbfaf9[_0x0caa('0x58')];if(_0x19d534[_0x0caa('0x45')][_0x0caa('0x46')]){_0x4091a0[_0x0caa('0x47')]=[{'all':!![]}];}if(_0x19d534['query'][_0x0caa('0x48')]===_0x0caa('0x49')){_0x4091a0[_0x0caa('0x47')]=[{'model':db[_0x0caa('0x4a')],'as':_0x0caa('0x48')}];}_0x4091a0=_[_0x0caa('0x5d')]({},_0x4091a0,_0x19d534[_0x0caa('0x5e')]);if(!_[_0x0caa('0x36')](_0x4091a0[_0x0caa('0x4b')],'id')){_0x4091a0[_0x0caa('0x4b')][_0x0caa('0x4c')]('id');}return db[_0x0caa('0x3d')][_0x0caa('0x37')](_0x4091a0)[_0x0caa('0x15')](handleEntityNotFound(_0x3b829f,null))[_0x0caa('0x15')](function(_0x277429){var _0x1dbb6d=[];values=_0x277429;if(_0x19d534[_0x0caa('0x45')][_0x0caa('0x4f')]===_0x0caa('0x49')){_0x1dbb6d['push'](get_open_tabs(_0x0caa('0x51'),_0x277429[_0x0caa('0x52')]));_0x1dbb6d[_0x0caa('0x4c')](get_open_tabs('sms',_0x277429['dataValues']));_0x1dbb6d['push'](get_open_tabs(_0x0caa('0x5f'),_0x277429[_0x0caa('0x52')]));_0x1dbb6d[_0x0caa('0x4c')](get_open_tabs('whatsapp',_0x277429['dataValues']));_0x1dbb6d[_0x0caa('0x4c')](get_open_tabs(_0x0caa('0x60'),_0x277429[_0x0caa('0x52')]));_0x1dbb6d[_0x0caa('0x4c')](get_open_tabs(_0x0caa('0x54'),_0x277429[_0x0caa('0x52')]));return Promise['all'](_0x1dbb6d);}else{return values;}})[_0x0caa('0x15')](function(){return values;})[_0x0caa('0x15')](respondWithResult(_0x3b829f,null))[_0x0caa('0x1f')](handleError(_0x3b829f,null));};exports[_0x0caa('0x28')]=function(_0x570cd6,_0x7df4d1){if(_0x570cd6[_0x0caa('0x61')]['id']){delete _0x570cd6[_0x0caa('0x61')]['id'];}delete _0x570cd6['body']['role'];return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x570cd6[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x7df4d1,null))[_0x0caa('0x15')](saveUpdates(_0x570cd6[_0x0caa('0x61')],null))[_0x0caa('0x15')](respondWithResult(_0x7df4d1,null))[_0x0caa('0x1f')](handleError(_0x7df4d1,null));};exports[_0x0caa('0x63')]=function(_0x19981f,_0x3505ed){return db[_0x0caa('0x3d')][_0x0caa('0x63')]()[_0x0caa('0x15')](respondWithResult(_0x3505ed,null))[_0x0caa('0x1f')](handleError(_0x3505ed,null));};exports['addContacts']=function(_0x4be3c8,_0x33715a){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x4be3c8['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x33715a,null))[_0x0caa('0x15')](function(_0x1cef5a){if(_0x1cef5a){return _0x1cef5a[_0x0caa('0x64')](_0x4be3c8['body'][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x4be3c8[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{});}})['then'](respondWithResult(_0x33715a,null))[_0x0caa('0x1f')](handleError(_0x33715a,null));};function validateUser(_0x127c89){return new Promise(function(_0x25a4c7,_0x55ffe5){if(_0x127c89[_0x0caa('0x67')])return _0x25a4c7(_0x127c89);return db['Setting'][_0x0caa('0x68')](0x1)['then'](function(_0x17fe99){if(_0x17fe99[_0x0caa('0x69')])authService[_0x0caa('0x6a')](_0x127c89[_0x0caa('0x41')]);db['User'][_0x0caa('0x6b')](_0x0caa('0x67'))[_0x0caa('0x15')](function(_0x5d8d4c){if(_['isNil'](_0x5d8d4c)){_0x127c89[_0x0caa('0x67')]=_0x17fe99[_0x0caa('0x6c')]||0x1;return;}if(_['isNil'](_0x17fe99[_0x0caa('0x6c')])||_0x17fe99[_0x0caa('0x6c')]===_0x5d8d4c){_0x127c89[_0x0caa('0x67')]=_0x5d8d4c+0x1;return;}if(_0x17fe99[_0x0caa('0x6c')]>_0x5d8d4c){_0x127c89['internal']=_0x17fe99['min_internal'];return;}return db[_0x0caa('0x6d')]['query'](_0x0caa('0x6e'),{'type':db[_0x0caa('0x6d')][_0x0caa('0x6f')][_0x0caa('0x70')]})[_0x0caa('0x15')](function(_0x2b1f81){if(_0x2b1f81&&_0x2b1f81[_0x0caa('0x50')]){for(var _0x330901=0x0,_0x4116e2=_0x2b1f81[_0x0caa('0x50')];_0x330901<_0x4116e2&&_[_0x0caa('0x71')](_0x127c89['internal']);_0x330901++){if(_0x17fe99['min_internal']<=_0x2b1f81[_0x330901]['from']){_0x127c89[_0x0caa('0x67')]=_0x2b1f81[_0x330901][_0x0caa('0x72')];}else if(_0x17fe99[_0x0caa('0x6c')]>_0x2b1f81[_0x330901][_0x0caa('0x72')]&&_0x17fe99[_0x0caa('0x6c')]<=_0x2b1f81[_0x330901]['to']){_0x127c89[_0x0caa('0x67')]=_0x17fe99[_0x0caa('0x6c')];}}}if(_[_0x0caa('0x71')](_0x127c89[_0x0caa('0x67')])){_0x127c89[_0x0caa('0x67')]=_0x5d8d4c+0x1;}return _0x25a4c7(_0x127c89);});});})[_0x0caa('0x1f')](function(_0x267263){_0x55ffe5(_0x267263);});});}function updateUser(_0x3f1e63){return new Promise(function(_0x1c44b7,_0x3dfcd8){try{if(_0x3f1e63[_0x0caa('0x73')]){_0x3f1e63[_0x0caa('0x74')]=_0x3f1e63[_0x0caa('0x67')];_0x3f1e63[_0x0caa('0x75')]={'mailbox':_0x3f1e63[_0x0caa('0x67')],'password':_0x3f1e63[_0x0caa('0x41')],'fullname':_0x3f1e63[_0x0caa('0x76')],'email':_0x3f1e63[_0x0caa('0x77')]};}if(_0x3f1e63[_0x0caa('0x2c')]===_0x0caa('0x31')){if(!_0x3f1e63[_0x0caa('0x78')])_0x3f1e63[_0x0caa('0x78')]=[_0x0caa('0x79'),'102',_0x0caa('0x7a'),_0x0caa('0x7b'),_0x0caa('0x7c'),_0x0caa('0x7d'),_0x0caa('0x7e'),_0x0caa('0x7f'),_0x0caa('0x80'),_0x0caa('0x81'),_0x0caa('0x82'),_0x0caa('0x83'),_0x0caa('0x84'),_0x0caa('0x85'),'115'];}_0x1c44b7(_0x3f1e63);}catch(_0x2ffdc0){_0x3dfcd8(_0x2ffdc0);}});}exports[_0x0caa('0x86')]=function(_0x2e0a70,_0x4b430e){if(_0x2e0a70[_0x0caa('0x2f')]['role']==='agent')throw new Error(_0x0caa('0x87'));if(_0x2e0a70[_0x0caa('0x61')]['role']==='user'&&_0x2e0a70[_0x0caa('0x2f')]['role']!==_0x0caa('0x2d')){throw new Error(_0x0caa('0x88'));}if(_0x2e0a70[_0x0caa('0x61')][_0x0caa('0x2c')]===_0x0caa('0x2d')&&_0x2e0a70['user']['role']!==_0x0caa('0x2d')){throw new Error(_0x0caa('0x89'));}return licenseUtil[_0x0caa('0x8a')]([_0x2e0a70[_0x0caa('0x61')]])[_0x0caa('0x15')](function(){return validateUser(_0x2e0a70['body']);})[_0x0caa('0x15')](function(_0x39287b){return updateUser(_0x39287b)['then'](function(_0x258639){if(_0x258639[_0x0caa('0x2c')]===_0x0caa('0x2d')){_0x258639[_0x0caa('0x8b')]=_0x2e0a70[_0x0caa('0x2f')][_0x0caa('0x8b')];delete _0x258639[_0x0caa('0x8c')];}return _0x258639;});})[_0x0caa('0x15')](function(_0x20ba73){return db[_0x0caa('0x3d')][_0x0caa('0x86')](_0x20ba73,{'include':[{'model':db[_0x0caa('0x75')],'as':_0x0caa('0x75')}]});})[_0x0caa('0x15')](function(_0x19ea50){if(_0x2e0a70['body'][_0x0caa('0x2c')]===_0x0caa('0x2f'))return _0x19ea50;if(_0x2e0a70['user'][_0x0caa('0x2c')]!==_0x0caa('0x2f'))return _0x19ea50;return db[_0x0caa('0x8d')][_0x0caa('0x37')]({'where':{'name':_0x19ea50['role']===_0x0caa('0x31')?_0x0caa('0x30'):_0x0caa('0x32'),'userProfileId':_0x2e0a70[_0x0caa('0x2f')][_0x0caa('0x8c')]},'raw':!![]})[_0x0caa('0x15')](function(_0x349884){if(!_0x349884||_0x349884[_0x0caa('0x8e')]!=0x0)return _0x19ea50;return db[_0x0caa('0x8f')][_0x0caa('0x86')]({'name':_0x19ea50[_0x0caa('0x3a')],'resourceId':_0x19ea50['id'],'type':_0x349884[_0x0caa('0x3a')],'sectionId':_0x349884['id']},{})[_0x0caa('0x15')](function(){return _0x19ea50;});})[_0x0caa('0x1f')](function(_0x2c6ca1){logger[_0x0caa('0x1c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c6ca1);throw _0x2c6ca1;});})[_0x0caa('0x15')](respondWithResult(_0x4b430e,0xc9))[_0x0caa('0x1f')](handleError(_0x4b430e,null));};exports[_0x0caa('0x90')]=function(_0x571467,_0x533142){var _0x4b5577=_0x571467[_0x0caa('0x61')];var _0x208ecd=[];if(_0x571467['user'][_0x0caa('0x2c')]===_0x0caa('0x31'))throw new Error(_0x0caa('0x87'));if(_[_0x0caa('0x91')](_0x4b5577,[_0x0caa('0x2c'),_0x0caa('0x2f')])&&_0x571467[_0x0caa('0x2f')]['role']!==_0x0caa('0x2d')){throw new Error(_0x0caa('0x88'));}if(_['some'](_0x4b5577,[_0x0caa('0x2c'),'admin'])&&_0x571467['user'][_0x0caa('0x2c')]!==_0x0caa('0x2d')){throw new Error(_0x0caa('0x92'));}return licenseUtil[_0x0caa('0x8a')](_0x4b5577)[_0x0caa('0x15')](function(){return validateUser(_0x4b5577[0x0]);})[_0x0caa('0x15')](function(){for(var _0x201b94=0x1;_0x201b94<_0x4b5577[_0x0caa('0x50')];_0x201b94++){var _0x42bdbc=_0x4b5577[_0x201b94-0x1]['internal'];if(!_0x4b5577[_0x201b94]['internal'])_0x4b5577[_0x201b94]['internal']=_0x42bdbc+0x1;_0x208ecd[_0x0caa('0x4c')](validateUser(_0x4b5577[_0x201b94]));}return Promise[_0x0caa('0x56')](_0x208ecd);})[_0x0caa('0x15')](function(){_0x208ecd=[];for(var _0x4f3ff1=0x0;_0x4f3ff1<_0x4b5577[_0x0caa('0x50')];_0x4f3ff1++){_0x208ecd[_0x0caa('0x4c')](updateUser(_0x4b5577[_0x4f3ff1]));}return Promise[_0x0caa('0x56')](_0x208ecd);})[_0x0caa('0x15')](function(){_0x208ecd=_0x4b5577[_0x0caa('0x35')](function(_0x5b88a3){return db['User'][_0x0caa('0x86')](_0x5b88a3,{'include':[{'model':db[_0x0caa('0x75')],'as':'VoiceMail'}]})[_0x0caa('0x15')](function(_0x4e5d51){_0x5b88a3['id']=_0x4e5d51['id'];return _0x5b88a3;});});return Promise[_0x0caa('0x56')](_0x208ecd);})[_0x0caa('0x15')](function(_0x15dad2){if(_0x571467[_0x0caa('0x61')][_0x0caa('0x2c')]==='user')return _0x15dad2;if(_0x571467[_0x0caa('0x2f')][_0x0caa('0x2c')]!==_0x0caa('0x2f'))return _0x15dad2;var _0x51f607=_[_0x0caa('0x91')](_0x15dad2,function(_0x528fd4){return _0x528fd4[_0x0caa('0x2c')]==='agent'||_0x528fd4['role']===_0x0caa('0x93');});if(!_0x51f607)return _0x15dad2;return db[_0x0caa('0x8d')]['findAll']({'where':{'name':{'$or':[_0x0caa('0x30'),_0x0caa('0x32')]},'userProfileId':_0x571467['user'][_0x0caa('0x8c')]},'raw':!![]})['then'](function(_0x3bf9ec){if(_[_0x0caa('0x94')](_0x3bf9ec)||!_[_0x0caa('0x91')](_0x3bf9ec,[_0x0caa('0x8e'),0x0]))return _0x15dad2;_0x208ecd=[];var _0x468496=_(_0x3bf9ec)['map'](function(_0xa9f686){if(_0xa9f686[_0x0caa('0x8e')]===0x1)return;return _0xa9f686['name']==='Agents'?'agent':_0x0caa('0x93');})[_0x0caa('0x95')]()[_0x0caa('0x38')]();for(var _0x52b712=0x0;_0x52b712<_0x15dad2['length'];_0x52b712++){if(!_[_0x0caa('0x36')](_0x468496,_0x15dad2[_0x52b712][_0x0caa('0x2c')]))return;var _0x141eec=_0x15dad2[_0x52b712][_0x0caa('0x2c')]==='agent'?_0x0caa('0x30'):'Telephones';_0x208ecd[_0x0caa('0x4c')](db[_0x0caa('0x8f')]['create']({'name':_0x15dad2[_0x52b712][_0x0caa('0x3a')],'resourceId':_0x15dad2[_0x52b712]['id'],'type':_0x141eec,'sectionId':_['find'](_0x3bf9ec,[_0x0caa('0x3a'),_0x141eec])['id']},{}));}return Promise[_0x0caa('0x56')](_0x208ecd);});})[_0x0caa('0x15')](respondWithResult(_0x533142,0xc9))[_0x0caa('0x1f')](handleError(_0x533142,null));};exports['changePassword']=function(_0x1c220d,_0x3a1b74){if(_0x1c220d[_0x0caa('0x61')]['id']){delete _0x1c220d[_0x0caa('0x61')]['id'];}return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x1c220d[_0x0caa('0x62')]['id']}})['then'](function(_0x8f0a35){if(!_0x8f0a35)return null;if(_0x8f0a35['id']===_0x1c220d[_0x0caa('0x2f')]['id']){if(!_0x1c220d['body']['oldPassword']||!_0x1c220d[_0x0caa('0x61')][_0x0caa('0x96')]){throw new db[(_0x0caa('0x97'))][(_0x0caa('0x98'))](_0x0caa('0x99'));}if(!_0x8f0a35[_0x0caa('0x9a')](_0x1c220d[_0x0caa('0x61')][_0x0caa('0x9b')])){throw new db[(_0x0caa('0x97'))][(_0x0caa('0x98'))](_0x0caa('0x9c'));}if(_0x1c220d[_0x0caa('0x61')][_0x0caa('0x9b')]===_0x1c220d[_0x0caa('0x61')]['newPassword']){throw new db[(_0x0caa('0x97'))]['ValidationError'](_0x0caa('0x9d'));}}else if(_0x1c220d['user'][_0x0caa('0x2c')]==='admin'){if(!_0x1c220d['body'][_0x0caa('0x96')]){throw new db[(_0x0caa('0x97'))]['ValidationError'](_0x0caa('0x9e'));}}else if(_0x1c220d[_0x0caa('0x2f')][_0x0caa('0x2c')]===_0x0caa('0x2f')){if(!_0x1c220d[_0x0caa('0x61')][_0x0caa('0x96')]){throw new db[(_0x0caa('0x97'))][(_0x0caa('0x98'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x8f0a35['role']!==_0x0caa('0x31')){throw new db[(_0x0caa('0x97'))][(_0x0caa('0x98'))](_0x0caa('0x87'));}}else{throw new db[(_0x0caa('0x97'))]['ValidationError']('Unauthorized');}return _0x8f0a35;})['then'](handleEntityNotFound(_0x3a1b74,null))['then'](function(_0x61362){return db['Setting'][_0x0caa('0x9f')]({'attributes':['id','securePassword',_0x0caa('0xa0'),_0x0caa('0xa1')]})[_0x0caa('0x15')](function(_0xea1c08){if(_0xea1c08[_0x0caa('0x69')])authService[_0x0caa('0x6a')](_0x1c220d['body'][_0x0caa('0x96')]);if(!_0xea1c08['enforcePasswordHistory']||!_0x61362[_0x0caa('0xa2')])return _0x61362;authService[_0x0caa('0xa3')](_0x1c220d[_0x0caa('0x61')][_0x0caa('0x96')],_0x61362['previousPasswords'],_0xea1c08[_0x0caa('0xa1')]);return _0x61362;})[_0x0caa('0x15')](saveUpdates({'password':_0x1c220d[_0x0caa('0x61')][_0x0caa('0x96')],'passwordResetAt':_0x1c220d['user']['id']==_0x1c220d[_0x0caa('0x62')]['id']?moment():null,'previousPasswords':authService[_0x0caa('0xa4')](_0x1c220d[_0x0caa('0x61')][_0x0caa('0x96')],_0x61362['previousPasswords'])},null));})[_0x0caa('0x15')](respondWithResult(_0x3a1b74,null))[_0x0caa('0x1f')](handleError(_0x3a1b74,null));};exports['addQueues']=function(_0x184f17,_0x4aa168){var _0x3211e0=_0x184f17[_0x0caa('0x61')][_0x0caa('0xa5')];return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x184f17[_0x0caa('0x62')]['id']},'attributes':['id',_0x0caa('0x3a'),_0x0caa('0x2c'),_0x0caa('0xa6'),_0x0caa('0xa7'),_0x0caa('0xa8'),_0x0caa('0xa9')]})[_0x0caa('0x15')](handleEntityNotFound(_0x4aa168,null))[_0x0caa('0x15')](function(_0x5e138f){if(_0x5e138f){if(!utils[_0x0caa('0xaa')](_0x3211e0)){throw new db[(_0x0caa('0x97'))][(_0x0caa('0x98'))]('Unknown\x20channel');}return _0x5e138f[_0x0caa('0xab')+_['capitalize'](_0x3211e0[_0x0caa('0xac')]())+_0x0caa('0xad')](_0x184f17[_0x0caa('0x61')]['ids'],{'penalty':_0x184f17[_0x0caa('0x61')]['penalty']||0x0})[_0x0caa('0xae')](function(_0x217288){for(var _0x334728=0x0;_0x334728<_0x184f17[_0x0caa('0x61')]['ids'][_0x0caa('0x50')];_0x334728+=0x1){var _0xa18cf={'UserId':Number(_0x184f17[_0x0caa('0x62')]['id'])};_0xa18cf[_[_0x0caa('0xaf')](_0x3211e0[_0x0caa('0xac')]())+'QueueId']=Number(_0x184f17['body'][_0x0caa('0x65')][_0x334728]);socket[_0x0caa('0x29')](_0x0caa('0x2f')+_[_0x0caa('0xaf')](_0x3211e0[_0x0caa('0xac')]())+_0x0caa('0xb0'),_0xa18cf);}return _0x217288;})[_0x0caa('0x15')](function(){if(_0x3211e0===_0x0caa('0xb1')){return db[_0x0caa('0xb2')][_0x0caa('0x4d')]({'where':{'id':_0x184f17[_0x0caa('0x61')][_0x0caa('0x65')]||[]},'raw':!![],'attributes':['id','name']});}})['then'](function(_0x505143){var _0x1eae93=_0x5e138f[_0x0caa('0x2b')]({'plain':!![]});var _0x4f00fc=[];if(_0x3211e0==='voice'&&_0x1eae93['role']===_0x0caa('0x31')&&_0x1eae93['online']){for(let _0x362b9e=0x0;_0x362b9e<_0x505143[_0x0caa('0x50')];_0x362b9e+=0x1){_0x4f00fc[_0x0caa('0x4c')]({'membername':_0x1eae93[_0x0caa('0x3a')],'UserId':_0x1eae93['id'],'queue_name':_0x505143[_0x362b9e][_0x0caa('0x3a')],'VoiceQueueId':_0x505143[_0x362b9e]['id'],'interface':_[_0x0caa('0x71')](_0x1eae93[_0x0caa('0xa9')])?util['format']('SIP/%s',_0x1eae93[_0x0caa('0x3a')]):_0x1eae93[_0x0caa('0xa9')],'paused':_0x1eae93[_0x0caa('0xa8')]||![],'penalty':_0x184f17[_0x0caa('0x61')][_0x0caa('0xb3')]||0x0});}return Promise[_0x0caa('0x56')](_0x4f00fc[_0x0caa('0x35')](function(_0x3b2a0e){return db[_0x0caa('0xb4')][_0x0caa('0xb5')](_0x3b2a0e);}));}return _0x5e138f;});}})[_0x0caa('0x15')](respondWithStatusCode(_0x4aa168,null))[_0x0caa('0x1f')](handleError(_0x4aa168,null));};exports['removeQueues']=function(_0x4c90ea,_0x54006b){var _0x58fde6,_0x3115f3;return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x4c90ea['params']['id']},'attributes':['id',_0x0caa('0x3a'),'role']})['then'](handleEntityNotFound(_0x54006b,null))[_0x0caa('0x15')](function(_0x473b64){if(_0x473b64){_0x58fde6=_0x473b64;if(!_0x4c90ea[_0x0caa('0x45')][_0x0caa('0xa5')]||!utils[_0x0caa('0xaa')](_0x4c90ea['query'][_0x0caa('0xa5')])){throw new db[(_0x0caa('0x97'))][(_0x0caa('0x98'))](_0x0caa('0xb6'));}return _0x473b64[_0x0caa('0xb7')+_[_0x0caa('0xaf')](_0x4c90ea[_0x0caa('0x45')][_0x0caa('0xa5')][_0x0caa('0xac')]())+_0x0caa('0xad')](_0x4c90ea[_0x0caa('0x45')][_0x0caa('0x65')]);}})[_0x0caa('0x15')](function(_0x3fba24){if(_[_0x0caa('0xb8')](_0x4c90ea[_0x0caa('0x45')][_0x0caa('0x65')])){for(var _0x21fd81=0x0;_0x21fd81<_0x4c90ea['query'][_0x0caa('0x65')][_0x0caa('0x50')];_0x21fd81+=0x1){_0x3115f3={'UserId':Number(_0x4c90ea[_0x0caa('0x62')]['id'])};_0x3115f3[_['capitalize'](_0x4c90ea[_0x0caa('0x45')][_0x0caa('0xa5')][_0x0caa('0xac')]())+'QueueId']=Number(_0x4c90ea['query'][_0x0caa('0x65')][_0x21fd81]);socket[_0x0caa('0x29')](_0x0caa('0x2f')+_[_0x0caa('0xaf')](_0x4c90ea[_0x0caa('0x45')][_0x0caa('0xa5')][_0x0caa('0xac')]())+'Queue:remove',_0x3115f3);}}else{_0x3115f3={'UserId':Number(_0x4c90ea[_0x0caa('0x62')]['id'])};_0x3115f3[_[_0x0caa('0xaf')](_0x4c90ea[_0x0caa('0x45')]['channel'][_0x0caa('0xac')]())+'QueueId']=Number(_0x4c90ea[_0x0caa('0x45')][_0x0caa('0x65')]);socket['emit'](_0x0caa('0x2f')+_[_0x0caa('0xaf')](_0x4c90ea[_0x0caa('0x45')][_0x0caa('0xa5')][_0x0caa('0xac')]())+_0x0caa('0xb9'),_0x3115f3);}return _0x3fba24;})[_0x0caa('0x15')](function(){if(_0x4c90ea[_0x0caa('0x45')][_0x0caa('0xa5')]===_0x0caa('0xb1')){return db['UserVoiceQueueRt'][_0x0caa('0x2a')]({'where':{'UserId':_0x4c90ea['params']['id'],'VoiceQueueId':_0x4c90ea[_0x0caa('0x45')][_0x0caa('0x65')]},'individualHooks':!![]})['then'](function(){return _0x58fde6;});}return _0x58fde6;})[_0x0caa('0x15')](respondWithStatusCode(_0x54006b,null))[_0x0caa('0x1f')](handleError(_0x54006b,null));};exports['addAvatar']=function(_0x3f3028,_0x4b856c){_0x3f3028[_0x0caa('0x61')][_0x0caa('0xba')]=_0x3f3028[_0x0caa('0xbb')][_0x0caa('0xbc')];return db['User'][_0x0caa('0x37')]({'where':{'id':_0x3f3028[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x4b856c,null))['then'](saveUpdates(_0x3f3028[_0x0caa('0x61')],null))['then'](respondWithResult(_0x4b856c,null))[_0x0caa('0x1f')](handleError(_0x4b856c,null));};exports[_0x0caa('0xbd')]=function(_0xc0a9d1,_0x3b33ad){var _0x21299f=path[_0x0caa('0xbe')](config[_0x0caa('0xbf')],_0x0caa('0xc0'));return db['User']['find']({'where':{'id':_0xc0a9d1[_0x0caa('0x62')]['id']},'attributes':['id',_0x0caa('0xba')],'raw':!![]})['then'](handleEntityNotFound(_0x3b33ad,null))[_0x0caa('0x15')](function(_0x4f9735){if(_0x4f9735){if(_[_0x0caa('0x71')](_0x4f9735[_0x0caa('0xba')])){return _0x3b33ad[_0x0caa('0xc1')](_0x21299f);}else{if(!fs[_0x0caa('0xc2')](path['join'](config[_0x0caa('0xbf')],_0x0caa('0xc3'),_0x4f9735[_0x0caa('0xba')]))){return _0x3b33ad['download'](_0x21299f);}return _0x3b33ad[_0x0caa('0xc1')](path[_0x0caa('0xbe')](config[_0x0caa('0xbf')],_0x0caa('0xc3'),_0x4f9735[_0x0caa('0xba')]));}}})[_0x0caa('0x1f')](handleError(_0x3b33ad,null));};exports[_0x0caa('0xc4')]=function(_0x2bba75,_0x5ed9f0){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x2bba75['params']['id']},'attributes':['id']})[_0x0caa('0x15')](handleEntityNotFound(_0x5ed9f0,null))[_0x0caa('0x15')](function(_0x53f3fa){var _0x2789b0=[];values=_0x53f3fa[_0x0caa('0x52')];_0x2789b0[_0x0caa('0x4c')](get_open_tabs(_0x0caa('0x51'),_0x53f3fa[_0x0caa('0x52')]));_0x2789b0[_0x0caa('0x4c')](get_open_tabs(_0x0caa('0x53'),_0x53f3fa[_0x0caa('0x52')]));_0x2789b0[_0x0caa('0x4c')](get_open_tabs(_0x0caa('0x5f'),_0x53f3fa[_0x0caa('0x52')]));_0x2789b0['push'](get_open_tabs(_0x0caa('0x55'),_0x53f3fa[_0x0caa('0x52')]));_0x2789b0['push'](get_open_tabs(_0x0caa('0x60'),_0x53f3fa[_0x0caa('0x52')]));_0x2789b0[_0x0caa('0x4c')](get_open_tabs('mail',_0x53f3fa['dataValues']));return Promise[_0x0caa('0x56')](_0x2789b0);})[_0x0caa('0x15')](function(_0x52f069){if(_0x52f069){var _0x343ff9=_[_0x0caa('0x35')](values[_0x0caa('0xc5')],function(_0xbbb58f){return{'channel':_0x0caa('0xc6'),'id':_0xbbb58f['id'],'createdAt':_0xbbb58f[_0x0caa('0xc7')]};});var _0x5da9a5=_[_0x0caa('0x35')](values[_0x0caa('0xc8')],function(_0x288f2e){return{'channel':_0x0caa('0xc9'),'id':_0x288f2e['id'],'createdAt':_0x288f2e['createdAt']};});var _0x3eeb52=_[_0x0caa('0x35')](values[_0x0caa('0xca')],function(_0x29fdfd){return{'channel':_0x0caa('0xcb'),'id':_0x29fdfd['id'],'createdAt':_0x29fdfd[_0x0caa('0xc7')]};});var _0x41b8c1=_['map'](values[_0x0caa('0xcc')],function(_0x3ff0bb){return{'channel':_0x0caa('0xcd'),'id':_0x3ff0bb['id'],'createdAt':_0x3ff0bb[_0x0caa('0xc7')]};});var _0x3c7b94=_[_0x0caa('0x35')](values[_0x0caa('0xce')],function(_0x18fa88){return{'channel':_0x0caa('0xcf'),'id':_0x18fa88['id'],'createdAt':_0x18fa88[_0x0caa('0xc7')]};});var _0x3f5dcf=_['map'](values[_0x0caa('0xd0')],function(_0x45e537){return{'channel':'WHATSAPP','id':_0x45e537['id'],'createdAt':_0x45e537['createdAt']};});var _0x38afb5=_[_0x0caa('0xd1')](_0x343ff9,_0x5da9a5,_0x3eeb52,_0x41b8c1,_0x3c7b94,_0x3f5dcf);var _0x2802d2={'count':_0x38afb5['length'],'rows':_0x38afb5};return _0x2802d2;}else return null;})[_0x0caa('0x15')](respondWithResult(_0x5ed9f0,null))[_0x0caa('0x1f')](handleError(_0x5ed9f0,null));};exports[_0x0caa('0xd2')]=function(_0x48b76d,_0x82edf5){var _0x4c8748={};var _0x72c561={};var _0x2ed460;var _0x4e9296;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x48b76d['params']['id']}})['then'](handleEntityNotFound(_0x82edf5,null))[_0x0caa('0x15')](function(_0x262bea){if(_0x262bea){_0x2ed460=_0x262bea;_0x72c561['model']=_[_0x0caa('0xd3')](db[_0x0caa('0xd4')]['rawAttributes']);_0x72c561[_0x0caa('0x45')]=_['keys'](_0x48b76d[_0x0caa('0x45')]);_0x72c561[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x72c561[_0x0caa('0x58')],_0x72c561[_0x0caa('0x45')]);_0x4c8748[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x72c561[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x48b76d[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x4c8748[_0x0caa('0x4b')]=_0x4c8748[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x4c8748[_0x0caa('0x4b')]:_0x72c561[_0x0caa('0x58')];_0x4c8748[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x48b76d[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x4c8748[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x48b76d[_0x0caa('0x45')],_0x72c561[_0x0caa('0x5a')]));if(_0x48b76d['query'][_0x0caa('0x33')]){_0x4c8748[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x4c8748['where'],{'$or':_[_0x0caa('0x35')](_0x4c8748[_0x0caa('0x4b')],function(_0x376bb6){var _0x32dab2={};_0x32dab2[_0x376bb6]={'$like':'%'+_0x48b76d['query'][_0x0caa('0x33')]+'%'};return _0x32dab2;})});}_0x4c8748=_[_0x0caa('0x5d')]({},_0x4c8748,_0x48b76d[_0x0caa('0x5e')]);return _0x2ed460[_0x0caa('0xd2')](_0x4c8748);}})['then'](function(_0x20210a){if(_0x20210a){_0x4e9296=_0x20210a[_0x0caa('0x50')];if(_0x48b76d[_0x0caa('0x45')]['hasOwnProperty'](_0x0caa('0x46'))){_0x4c8748['include']=[{'model':db[_0x0caa('0xd8')],'as':_0x0caa('0xd9'),'required':![]},{'model':db[_0x0caa('0xda')],'as':_0x0caa('0xdb'),'attributes':['id',_0x0caa('0x3a'),_0x0caa('0xdc')],'where':_0x48b76d['query'][_0x0caa('0xdd')]?{'id':_0x48b76d[_0x0caa('0x45')][_0x0caa('0xdd')]}:undefined,'required':_0x48b76d[_0x0caa('0x45')][_0x0caa('0xdd')]?!![]:![]}];}if(!_0x48b76d[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x4c8748[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x48b76d[_0x0caa('0x45')][_0x0caa('0x25')]);_0x4c8748['offset']=qs[_0x0caa('0x23')](_0x48b76d[_0x0caa('0x45')]['offset']);}return _0x2ed460[_0x0caa('0xd2')](_0x4c8748);}})[_0x0caa('0x15')](function(_0x42f44f){if(_0x42f44f){return _0x42f44f?{'count':_0x4e9296,'rows':_0x42f44f}:null;}})['then'](respondWithResult(_0x82edf5,null))[_0x0caa('0x1f')](handleError(_0x82edf5,null));};exports[_0x0caa('0xe0')]=function(_0x364d65,_0x5ed56b){var _0x149320;var _0x43fee2={};var _0x590dfe;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x364d65['params']['id']},'attributes':['id',_0x0caa('0x3a'),_0x0caa('0x2c')]})[_0x0caa('0x15')](handleEntityNotFound(_0x5ed56b,null))[_0x0caa('0x15')](function(_0x51f14a){if(!utils[_0x0caa('0xaa')](_0x364d65[_0x0caa('0x45')]['channel'])){throw new db[(_0x0caa('0x97'))]['ValidationError'](_0x0caa('0xb6'));}_0x149320=_0x51f14a;var _0x213a06={};_0x213a06['model']=_[_0x0caa('0xd3')](db[_[_0x0caa('0xaf')](_0x364d65[_0x0caa('0x45')]['channel'])+_0x0caa('0xe1')]['rawAttributes']);_0x213a06['query']=_[_0x0caa('0xd3')](_0x364d65[_0x0caa('0x45')]);_0x213a06['filters']=_[_0x0caa('0x5b')](_0x213a06[_0x0caa('0x58')],_0x213a06[_0x0caa('0x45')]);_0x43fee2['attributes']=_[_0x0caa('0x5b')](_0x213a06[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x364d65['query'][_0x0caa('0x5c')]));_0x43fee2['attributes']=_0x43fee2[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x43fee2[_0x0caa('0x4b')]:_0x213a06[_0x0caa('0x58')];_0x43fee2[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x364d65[_0x0caa('0x45')]['sort']);_0x43fee2[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x364d65[_0x0caa('0x45')],_0x213a06[_0x0caa('0x5a')]));if(_0x364d65[_0x0caa('0x45')][_0x0caa('0x33')]){_0x43fee2['where']=_['merge'](_0x43fee2[_0x0caa('0x44')],{'$or':_['map'](_0x43fee2[_0x0caa('0x4b')],function(_0x19125e){var _0x4da43d={};_0x4da43d[_0x19125e]={'$like':'%'+_0x364d65[_0x0caa('0x45')]['filter']+'%'};return _0x4da43d;})});}_0x43fee2=_[_0x0caa('0x5d')]({},_0x43fee2,_0x364d65['options']);switch(_0x149320[_0x0caa('0x2c')]){case _0x0caa('0x2d'):return db[_[_0x0caa('0xaf')](_0x364d65[_0x0caa('0x45')]['channel'])+_0x0caa('0xe1')][_0x0caa('0x4d')](_0x43fee2);case _0x0caa('0x2f'):case _0x0caa('0x31'):return _0x149320[_0x0caa('0x2b')+_[_0x0caa('0xaf')](_0x364d65[_0x0caa('0x45')][_0x0caa('0xa5')])+_0x0caa('0xad')](_0x43fee2);default:throw new db[(_0x0caa('0x97'))][(_0x0caa('0x98'))]('Unknown\x20role');}})[_0x0caa('0x15')](function(_0x2f1feb){_0x590dfe=_0x2f1feb['length'];if(!_0x364d65[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x43fee2[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x364d65[_0x0caa('0x45')]['limit']);_0x43fee2['offset']=qs['offset'](_0x364d65['query'][_0x0caa('0x23')]);}switch(_0x149320[_0x0caa('0x2c')]){case _0x0caa('0x2d'):return db[_['capitalize'](_0x364d65[_0x0caa('0x45')][_0x0caa('0xa5')])+_0x0caa('0xe1')][_0x0caa('0x4d')](_0x43fee2);case'user':case _0x0caa('0x31'):return _0x149320[_0x0caa('0x2b')+_['capitalize'](_0x364d65[_0x0caa('0x45')][_0x0caa('0xa5')])+_0x0caa('0xad')](_0x43fee2);}})[_0x0caa('0x15')](function(_0x507187){return{'count':_0x590dfe,'rows':_0x507187};})[_0x0caa('0x15')](respondWithResult(_0x5ed56b,null))[_0x0caa('0x1f')](handleError(_0x5ed56b,null));};exports[_0x0caa('0xe2')]=function(_0x513a3,_0x288233){var _0x307c32={};var _0x539f45={};var _0x2b5d85;var _0x14568b;return db[_0x0caa('0x3d')]['findOne']({'where':{'id':_0x513a3[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x288233,null))[_0x0caa('0x15')](function(_0x2aebc4){if(_0x2aebc4){_0x2b5d85=_0x2aebc4;_0x539f45[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db['UserVoiceQueueRt'][_0x0caa('0x3e')]);_0x539f45['query']=_[_0x0caa('0xd3')](_0x513a3[_0x0caa('0x45')]);_0x539f45[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x539f45[_0x0caa('0x58')],_0x539f45[_0x0caa('0x45')]);_0x307c32[_0x0caa('0x4b')]=_['intersection'](_0x539f45['model'],qs['fields'](_0x513a3[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x307c32[_0x0caa('0x4b')]=_0x307c32[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x307c32['attributes']:_0x539f45[_0x0caa('0x58')];_0x307c32[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x513a3['query']['sort']);_0x307c32[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x513a3[_0x0caa('0x45')],_0x539f45[_0x0caa('0x5a')]));if(_0x513a3['query'][_0x0caa('0x33')]){_0x307c32[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x307c32['where'],{'$or':_[_0x0caa('0x35')](_0x307c32['attributes'],function(_0x32463f){var _0x8f797e={};_0x8f797e[_0x32463f]={'$like':'%'+_0x513a3[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x8f797e;})});}_0x307c32=_[_0x0caa('0x5d')]({},_0x307c32,_0x513a3[_0x0caa('0x5e')]);return _0x2b5d85['getVoiceQueuesRt'](_0x307c32);}})[_0x0caa('0x15')](function(_0x15cc34){if(_0x15cc34){_0x14568b=_0x15cc34[_0x0caa('0x50')];if(!_0x513a3[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x307c32['limit']=qs[_0x0caa('0x25')](_0x513a3['query'][_0x0caa('0x25')]);_0x307c32[_0x0caa('0x23')]=qs['offset'](_0x513a3[_0x0caa('0x45')][_0x0caa('0x23')]);}return _0x2b5d85['getVoiceQueuesRt'](_0x307c32);}})[_0x0caa('0x15')](function(_0x48ccc6){if(_0x48ccc6){return _0x48ccc6?{'count':_0x14568b,'rows':_0x48ccc6}:null;}})[_0x0caa('0x15')](respondWithResult(_0x288233,null))[_0x0caa('0x1f')](handleError(_0x288233,null));};exports['getGroups']=function(_0x3e2316,_0x5ab4d2){var _0x11a7aa={};var _0x484abc={};var _0xd1dd70;var _0x334468;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x3e2316[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x5ab4d2,null))['then'](function(_0x449106){if(_0x449106){_0xd1dd70=_0x449106;_0x484abc[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0xe3')][_0x0caa('0x3e')]);_0x484abc[_0x0caa('0x45')]=_['keys'](_0x3e2316[_0x0caa('0x45')]);_0x484abc[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x484abc['model'],_0x484abc[_0x0caa('0x45')]);_0x11a7aa[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x484abc[_0x0caa('0x58')],qs['fields'](_0x3e2316[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x11a7aa[_0x0caa('0x4b')]=_0x11a7aa[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x11a7aa[_0x0caa('0x4b')]:_0x484abc[_0x0caa('0x58')];_0x11a7aa[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x3e2316['query'][_0x0caa('0xd6')]);_0x11a7aa[_0x0caa('0x44')]=qs['filters'](_['pick'](_0x3e2316[_0x0caa('0x45')],_0x484abc[_0x0caa('0x5a')]));if(_0x3e2316[_0x0caa('0x45')][_0x0caa('0x33')]){_0x11a7aa[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x11a7aa[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x11a7aa['attributes'],function(_0x5e1be1){var _0x2465d4={};_0x2465d4[_0x5e1be1]={'$like':'%'+_0x3e2316[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x2465d4;})});}_0x11a7aa=_[_0x0caa('0x5d')]({},_0x11a7aa,_0x3e2316['options']);return _0xd1dd70[_0x0caa('0xe4')](_0x11a7aa);}})[_0x0caa('0x15')](function(_0x38c7f4){if(_0x38c7f4){_0x334468=_0x38c7f4[_0x0caa('0x50')];if(!_0x3e2316[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x11a7aa[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x3e2316['query'][_0x0caa('0x25')]);_0x11a7aa[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x3e2316[_0x0caa('0x45')][_0x0caa('0x23')]);}return _0xd1dd70[_0x0caa('0xe4')](_0x11a7aa);}})[_0x0caa('0x15')](function(_0x3d82de){if(_0x3d82de){return _0x3d82de?{'count':_0x334468,'rows':_0x3d82de}:null;}})[_0x0caa('0x15')](respondWithResult(_0x5ab4d2,null))[_0x0caa('0x1f')](handleError(_0x5ab4d2,null));};exports[_0x0caa('0xe5')]=function(_0x137004,_0x464ed3){var _0x4c3ee0={'raw':!![],'where':{}};var _0xa0603a={};var _0x4a4765={'count':0x0,'rows':[]};return db['User'][_0x0caa('0x9f')]({'where':{'id':_0x137004[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x464ed3,null))['then'](function(_0x199732){if(_0x199732){_0xa0603a[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0xe6')][_0x0caa('0x3e')]);_0xa0603a[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x137004[_0x0caa('0x45')]);_0xa0603a[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0xa0603a['model'],_0xa0603a[_0x0caa('0x45')]);_0x4c3ee0['attributes']=_[_0x0caa('0x5b')](_0xa0603a[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x137004[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x4c3ee0[_0x0caa('0x4b')]=_0x4c3ee0[_0x0caa('0x4b')]['length']?_0x4c3ee0[_0x0caa('0x4b')]:_0xa0603a[_0x0caa('0x58')];if(!_0x137004[_0x0caa('0x45')][_0x0caa('0xde')]('nolimit')){_0x4c3ee0[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x137004['query'][_0x0caa('0x25')]);_0x4c3ee0['offset']=qs[_0x0caa('0x23')](_0x137004['query']['offset']);}_0x4c3ee0[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x137004[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x4c3ee0[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x137004[_0x0caa('0x45')],_0xa0603a[_0x0caa('0x5a')]));_0x4c3ee0[_0x0caa('0x44')]['UserId']=_0x199732['id'];if(_0x137004[_0x0caa('0x45')][_0x0caa('0x33')]){_0x4c3ee0[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x4c3ee0[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x4c3ee0['attributes'],function(_0x3d7af3){var _0xc048a5={};_0xc048a5[_0x3d7af3]={'$like':'%'+_0x137004[_0x0caa('0x45')]['filter']+'%'};return _0xc048a5;})});}_0x4c3ee0=_[_0x0caa('0x5d')]({},_0x4c3ee0,_0x137004['options']);return db['VoiceRecording']['count']({'where':_0x4c3ee0['where']})[_0x0caa('0x15')](function(_0x2b0f25){_0x4a4765[_0x0caa('0x26')]=_0x2b0f25;if(_0x137004[_0x0caa('0x45')][_0x0caa('0x46')]){_0x4c3ee0[_0x0caa('0x47')]=[{'all':!![]}];}return db[_0x0caa('0xe6')][_0x0caa('0x4d')](_0x4c3ee0);})[_0x0caa('0x15')](function(_0x4b84ec){_0x4a4765[_0x0caa('0x4e')]=_0x4b84ec;return _0x4a4765;});}})[_0x0caa('0x15')](respondWithFilteredResult(_0x464ed3,_0x4c3ee0))[_0x0caa('0x1f')](handleError(_0x464ed3,null));};exports[_0x0caa('0xe7')]=function(_0x27c16f,_0x2d138b){var _0x55a4f3={'raw':!![],'where':{}};var _0x33bab2={};var _0x1566fd={'count':0x0,'rows':[]};return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x27c16f[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x2d138b,null))[_0x0caa('0x15')](function(_0x17a8c5){if(_0x17a8c5){_0x33bab2[_0x0caa('0x58')]=_['keys'](db[_0x0caa('0xe8')]['rawAttributes']);_0x33bab2[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x27c16f['query']);_0x33bab2[_0x0caa('0x5a')]=_['intersection'](_0x33bab2[_0x0caa('0x58')],_0x33bab2[_0x0caa('0x45')]);_0x55a4f3['attributes']=_['intersection'](_0x33bab2[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x27c16f['query'][_0x0caa('0x5c')]));_0x55a4f3['attributes']=_0x55a4f3[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x55a4f3['attributes']:_0x33bab2[_0x0caa('0x58')];if(!_0x27c16f[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x55a4f3[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x27c16f[_0x0caa('0x45')]['limit']);_0x55a4f3[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x27c16f[_0x0caa('0x45')][_0x0caa('0x23')]);}_0x55a4f3[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x27c16f[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x55a4f3[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_['pick'](_0x27c16f[_0x0caa('0x45')],_0x33bab2[_0x0caa('0x5a')]));_0x55a4f3[_0x0caa('0x44')]['UserId']=_0x17a8c5['id'];if(_0x27c16f[_0x0caa('0x45')]['filter']){_0x55a4f3[_0x0caa('0x44')]=_['merge'](_0x55a4f3[_0x0caa('0x44')],{'$or':_['map'](_0x55a4f3[_0x0caa('0x4b')],function(_0x4ac46a){var _0x100598={};_0x100598[_0x4ac46a]={'$like':'%'+_0x27c16f[_0x0caa('0x45')]['filter']+'%'};return _0x100598;})});}_0x55a4f3=_[_0x0caa('0x5d')]({},_0x55a4f3,_0x27c16f['options']);return db[_0x0caa('0xe8')]['count']({'where':_0x55a4f3[_0x0caa('0x44')]})[_0x0caa('0x15')](function(_0x5e2c42){_0x1566fd[_0x0caa('0x26')]=_0x5e2c42;if(_0x27c16f[_0x0caa('0x45')][_0x0caa('0x46')]){_0x55a4f3['include']=[{'all':!![]}];}return db[_0x0caa('0xe8')][_0x0caa('0x4d')](_0x55a4f3);})[_0x0caa('0x15')](function(_0x4ed990){_0x1566fd[_0x0caa('0x4e')]=_0x4ed990;return _0x1566fd;});}})[_0x0caa('0x15')](respondWithFilteredResult(_0x2d138b,_0x55a4f3))[_0x0caa('0x1f')](handleError(_0x2d138b,null));};exports[_0x0caa('0xe9')]=function(_0x49f7ad,_0x5eece9){var _0x75c5fa={};var _0x5f3ec6={};var _0x490844;var _0x5ce06a;return db[_0x0caa('0x3d')]['findOne']({'where':{'id':_0x49f7ad[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x5eece9,null))['then'](function(_0x425f15){if(_0x425f15){_0x490844=_0x425f15;_0x5f3ec6[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0xea')]['rawAttributes']);_0x5f3ec6['query']=_[_0x0caa('0xd3')](_0x49f7ad[_0x0caa('0x45')]);_0x5f3ec6[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x5f3ec6[_0x0caa('0x58')],_0x5f3ec6[_0x0caa('0x45')]);_0x75c5fa[_0x0caa('0x4b')]=_['intersection'](_0x5f3ec6[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x49f7ad[_0x0caa('0x45')]['fields']));_0x75c5fa['attributes']=_0x75c5fa[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x75c5fa[_0x0caa('0x4b')]:_0x5f3ec6[_0x0caa('0x58')];_0x75c5fa['order']=qs[_0x0caa('0xd6')](_0x49f7ad['query'][_0x0caa('0xd6')]);_0x75c5fa['where']=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x49f7ad['query'],_0x5f3ec6['filters']));if(_0x49f7ad[_0x0caa('0x45')][_0x0caa('0x33')]){_0x75c5fa[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x75c5fa[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x75c5fa[_0x0caa('0x4b')],function(_0x1ce17e){var _0x17cbd7={};_0x17cbd7[_0x1ce17e]={'$like':'%'+_0x49f7ad[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x17cbd7;})});}_0x75c5fa=_['merge']({},_0x75c5fa,_0x49f7ad[_0x0caa('0x5e')]);return _0x490844[_0x0caa('0xe9')](_0x75c5fa);}})[_0x0caa('0x15')](function(_0x3b60db){if(_0x3b60db){_0x5ce06a=_0x3b60db[_0x0caa('0x50')];if(!_0x49f7ad[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x75c5fa[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x49f7ad[_0x0caa('0x45')][_0x0caa('0x25')]);_0x75c5fa[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x49f7ad[_0x0caa('0x45')]['offset']);}return _0x490844[_0x0caa('0xe9')](_0x75c5fa);}})[_0x0caa('0x15')](function(_0x26e113){if(_0x26e113){return _0x26e113?{'count':_0x5ce06a,'rows':_0x26e113}:null;}})[_0x0caa('0x15')](respondWithResult(_0x5eece9,null))['catch'](handleError(_0x5eece9,null));};exports[_0x0caa('0xeb')]=function(_0x37ae4a,_0x1bfcb8){var _0x356f2b={};var _0x134b95={};var _0x16625d;var _0x5c7ebf;return db[_0x0caa('0x3d')]['findOne']({'where':{'id':_0x37ae4a[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x1bfcb8,null))[_0x0caa('0x15')](function(_0xfaaa26){if(_0xfaaa26){_0x16625d=_0xfaaa26;_0x134b95[_0x0caa('0x58')]=_['keys'](db[_0x0caa('0xec')]['rawAttributes']);_0x134b95[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x37ae4a[_0x0caa('0x45')]);_0x134b95['filters']=_[_0x0caa('0x5b')](_0x134b95[_0x0caa('0x58')],_0x134b95['query']);_0x356f2b[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x134b95[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x37ae4a[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x356f2b['attributes']=_0x356f2b[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x356f2b['attributes']:_0x134b95[_0x0caa('0x58')];_0x356f2b[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x37ae4a['query']['sort']);_0x356f2b[_0x0caa('0x44')]=qs['filters'](_[_0x0caa('0xd7')](_0x37ae4a['query'],_0x134b95[_0x0caa('0x5a')]));if(_0x37ae4a['query']['filter']){_0x356f2b[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x356f2b[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x356f2b['attributes'],function(_0x153ae5){var _0x5725df={};_0x5725df[_0x153ae5]={'$like':'%'+_0x37ae4a[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x5725df;})});}_0x356f2b=_['merge']({},_0x356f2b,_0x37ae4a[_0x0caa('0x5e')]);return _0x16625d['getOpenchannelInteractions'](_0x356f2b);}})[_0x0caa('0x15')](function(_0x16419b){if(_0x16419b){_0x5c7ebf=_0x16419b[_0x0caa('0x50')];if(!_0x37ae4a[_0x0caa('0x45')]['hasOwnProperty'](_0x0caa('0xdf'))){_0x356f2b[_0x0caa('0x25')]=qs['limit'](_0x37ae4a[_0x0caa('0x45')][_0x0caa('0x25')]);_0x356f2b[_0x0caa('0x23')]=qs['offset'](_0x37ae4a[_0x0caa('0x45')]['offset']);}return _0x16625d[_0x0caa('0xeb')](_0x356f2b);}})['then'](function(_0x5441cd){if(_0x5441cd){return _0x5441cd?{'count':_0x5c7ebf,'rows':_0x5441cd}:null;}})[_0x0caa('0x15')](respondWithResult(_0x1bfcb8,null))[_0x0caa('0x1f')](handleError(_0x1bfcb8,null));};exports['getMailInteractions']=function(_0x133fc4,_0x55eac6){var _0x373307={'raw':!![],'where':{}};var _0x17397f={};var _0xe1b1c8={'count':0x0,'rows':[]};return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x133fc4[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x55eac6,null))[_0x0caa('0x15')](function(_0x261b31){if(_0x261b31){_0x17397f[_0x0caa('0x58')]=_['keys'](db['MailInteraction']['rawAttributes']);_0x17397f[_0x0caa('0x45')]=_['keys'](_0x133fc4[_0x0caa('0x45')]);_0x17397f[_0x0caa('0x5a')]=_['intersection'](_0x17397f[_0x0caa('0x58')],_0x17397f[_0x0caa('0x45')]);_0x373307[_0x0caa('0x4b')]=_['intersection'](_0x17397f[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x133fc4['query'][_0x0caa('0x5c')]));_0x373307[_0x0caa('0x4b')]=_0x373307[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x373307[_0x0caa('0x4b')]:_0x17397f[_0x0caa('0x58')];if(!_0x133fc4['query'][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x373307[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x133fc4['query'][_0x0caa('0x25')]);_0x373307['offset']=qs['offset'](_0x133fc4[_0x0caa('0x45')][_0x0caa('0x23')]);}_0x373307['order']=qs[_0x0caa('0xd6')](_0x133fc4[_0x0caa('0x45')]['sort']);_0x373307[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x133fc4[_0x0caa('0x45')],_0x17397f['filters']));_0x373307['where'][_0x0caa('0xed')]=_0x261b31['id'];if(_0x133fc4[_0x0caa('0x45')]['filter']){_0x373307[_0x0caa('0x44')]=_['merge'](_0x373307[_0x0caa('0x44')],{'$or':_['map'](_0x373307[_0x0caa('0x4b')],function(_0x461492){var _0xb11dc8={};_0xb11dc8[_0x461492]={'$like':'%'+_0x133fc4['query'][_0x0caa('0x33')]+'%'};return _0xb11dc8;})});}_0x373307=_['merge']({},_0x373307,_0x133fc4[_0x0caa('0x5e')]);return db[_0x0caa('0xee')][_0x0caa('0x26')]({'where':_0x373307[_0x0caa('0x44')]})['then'](function(_0x2a6a2e){_0xe1b1c8[_0x0caa('0x26')]=_0x2a6a2e;if(_0x133fc4['query'][_0x0caa('0x46')]){_0x373307[_0x0caa('0x47')]=[{'all':!![]}];}return db['MailInteraction'][_0x0caa('0x4d')](_0x373307);})[_0x0caa('0x15')](function(_0x12b959){_0xe1b1c8[_0x0caa('0x4e')]=_0x12b959;return _0xe1b1c8;});}})[_0x0caa('0x15')](respondWithFilteredResult(_0x55eac6,_0x373307))[_0x0caa('0x1f')](handleError(_0x55eac6,null));};exports[_0x0caa('0xef')]=function(_0xf0d25f,_0x4b57a1){var _0x10d819={};var _0x274b9c={};var _0x4a2aad;var _0x4dc4b1;return db['User'][_0x0caa('0x9f')]({'where':{'id':_0xf0d25f[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x4b57a1,null))[_0x0caa('0x15')](function(_0x309982){if(_0x309982){_0x4a2aad=_0x309982;_0x274b9c[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0xf0')]['rawAttributes']);_0x274b9c[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0xf0d25f['query']);_0x274b9c[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x274b9c[_0x0caa('0x58')],_0x274b9c[_0x0caa('0x45')]);_0x10d819[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x274b9c[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0xf0d25f[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x10d819[_0x0caa('0x4b')]=_0x10d819[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x10d819[_0x0caa('0x4b')]:_0x274b9c['model'];_0x10d819['order']=qs['sort'](_0xf0d25f[_0x0caa('0x45')]['sort']);_0x10d819['where']=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0xf0d25f[_0x0caa('0x45')],_0x274b9c['filters']));if(_0xf0d25f[_0x0caa('0x45')][_0x0caa('0x33')]){_0x10d819[_0x0caa('0x44')]=_['merge'](_0x10d819[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x10d819['attributes'],function(_0x3ccdb3){var _0x2d0602={};_0x2d0602[_0x3ccdb3]={'$like':'%'+_0xf0d25f[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x2d0602;})});}_0x10d819=_[_0x0caa('0x5d')]({},_0x10d819,_0xf0d25f[_0x0caa('0x5e')]);return _0x4a2aad[_0x0caa('0xef')](_0x10d819);}})[_0x0caa('0x15')](function(_0xc6c62e){if(_0xc6c62e){_0x4dc4b1=_0xc6c62e[_0x0caa('0x50')];if(!_0xf0d25f[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x10d819[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0xf0d25f[_0x0caa('0x45')][_0x0caa('0x25')]);_0x10d819[_0x0caa('0x23')]=qs['offset'](_0xf0d25f[_0x0caa('0x45')][_0x0caa('0x23')]);}return _0x4a2aad[_0x0caa('0xef')](_0x10d819);}})[_0x0caa('0x15')](function(_0x47f38f){if(_0x47f38f){return _0x47f38f?{'count':_0x4dc4b1,'rows':_0x47f38f}:null;}})[_0x0caa('0x15')](respondWithResult(_0x4b57a1,null))[_0x0caa('0x1f')](handleError(_0x4b57a1,null));};exports[_0x0caa('0xf1')]=function(_0x5dc1dc,_0x4e6d05){var _0x54ba24={};var _0x136ee7={};var _0x11606f;var _0x42cecc;return db['User'][_0x0caa('0x9f')]({'where':{'id':_0x5dc1dc[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x4e6d05,null))[_0x0caa('0x15')](function(_0xcf2bf4){if(_0xcf2bf4){_0x11606f=_0xcf2bf4;_0x136ee7[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0xf2')][_0x0caa('0x3e')]);_0x136ee7[_0x0caa('0x45')]=_['keys'](_0x5dc1dc['query']);_0x136ee7[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x136ee7['model'],_0x136ee7['query']);_0x54ba24[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x136ee7[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x5dc1dc[_0x0caa('0x45')]['fields']));_0x54ba24[_0x0caa('0x4b')]=_0x54ba24[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x54ba24[_0x0caa('0x4b')]:_0x136ee7[_0x0caa('0x58')];_0x54ba24[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x5dc1dc['query'][_0x0caa('0xd6')]);_0x54ba24[_0x0caa('0x44')]=qs['filters'](_[_0x0caa('0xd7')](_0x5dc1dc[_0x0caa('0x45')],_0x136ee7[_0x0caa('0x5a')]));if(_0x5dc1dc[_0x0caa('0x45')][_0x0caa('0x33')]){_0x54ba24[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x54ba24['where'],{'$or':_[_0x0caa('0x35')](_0x54ba24['attributes'],function(_0x1e5f9d){var _0x150c4e={};_0x150c4e[_0x1e5f9d]={'$like':'%'+_0x5dc1dc[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x150c4e;})});}_0x54ba24=_[_0x0caa('0x5d')]({},_0x54ba24,_0x5dc1dc['options']);return _0x11606f[_0x0caa('0xf1')](_0x54ba24);}})[_0x0caa('0x15')](function(_0x5c91b4){if(_0x5c91b4){_0x42cecc=_0x5c91b4['length'];if(!_0x5dc1dc[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x54ba24[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x5dc1dc['query'][_0x0caa('0x25')]);_0x54ba24[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x5dc1dc[_0x0caa('0x45')][_0x0caa('0x23')]);}return _0x11606f['getFaxInteractions'](_0x54ba24);}})[_0x0caa('0x15')](function(_0x1c4fd8){if(_0x1c4fd8){return _0x1c4fd8?{'count':_0x42cecc,'rows':_0x1c4fd8}:null;}})[_0x0caa('0x15')](respondWithResult(_0x4e6d05,null))[_0x0caa('0x1f')](handleError(_0x4e6d05,null));};exports[_0x0caa('0xf3')]=function(_0x452e09,_0x43a261){var _0xbcc7e8={};var _0x3c4358={};var _0x10361a;var _0x57f9bb;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x452e09[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x43a261,null))['then'](function(_0x327f5d){if(_0x327f5d){_0x10361a=_0x327f5d;_0x3c4358['model']=_['keys'](db[_0x0caa('0xf4')][_0x0caa('0x3e')]);_0x3c4358[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x452e09[_0x0caa('0x45')]);_0x3c4358[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x3c4358['model'],_0x3c4358[_0x0caa('0x45')]);_0xbcc7e8[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x3c4358[_0x0caa('0x58')],qs['fields'](_0x452e09[_0x0caa('0x45')][_0x0caa('0x5c')]));_0xbcc7e8[_0x0caa('0x4b')]=_0xbcc7e8[_0x0caa('0x4b')][_0x0caa('0x50')]?_0xbcc7e8[_0x0caa('0x4b')]:_0x3c4358[_0x0caa('0x58')];_0xbcc7e8[_0x0caa('0xd5')]=qs['sort'](_0x452e09[_0x0caa('0x45')][_0x0caa('0xd6')]);_0xbcc7e8[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x452e09[_0x0caa('0x45')],_0x3c4358[_0x0caa('0x5a')]));if(_0x452e09[_0x0caa('0x45')][_0x0caa('0x33')]){_0xbcc7e8[_0x0caa('0x44')]=_['merge'](_0xbcc7e8['where'],{'$or':_[_0x0caa('0x35')](_0xbcc7e8[_0x0caa('0x4b')],function(_0x120a45){var _0x34cef7={};_0x34cef7[_0x120a45]={'$like':'%'+_0x452e09[_0x0caa('0x45')]['filter']+'%'};return _0x34cef7;})});}_0xbcc7e8=_[_0x0caa('0x5d')]({},_0xbcc7e8,_0x452e09[_0x0caa('0x5e')]);return _0x10361a[_0x0caa('0xf3')](_0xbcc7e8);}})['then'](function(_0x2fb5a8){if(_0x2fb5a8){_0x57f9bb=_0x2fb5a8[_0x0caa('0x50')];if(!_0x452e09['query'][_0x0caa('0xde')](_0x0caa('0xdf'))){_0xbcc7e8[_0x0caa('0x25')]=qs['limit'](_0x452e09[_0x0caa('0x45')][_0x0caa('0x25')]);_0xbcc7e8[_0x0caa('0x23')]=qs['offset'](_0x452e09[_0x0caa('0x45')][_0x0caa('0x23')]);}return _0x10361a[_0x0caa('0xf3')](_0xbcc7e8);}})[_0x0caa('0x15')](function(_0x2ead7b){if(_0x2ead7b){return _0x2ead7b?{'count':_0x57f9bb,'rows':_0x2ead7b}:null;}})[_0x0caa('0x15')](respondWithResult(_0x43a261,null))[_0x0caa('0x1f')](handleError(_0x43a261,null));};exports[_0x0caa('0xf5')]=function(_0x5a736c,_0x20db6d,_0x4e8d0a){var _0x51777b;var _0x3f6974;var _0x2e423e;var _0xcbfd38=!_[_0x0caa('0x71')](_0x5a736c[_0x0caa('0x62')]['id'])?_0x5a736c[_0x0caa('0x62')]['id']:!_[_0x0caa('0x71')](_0x5a736c[_0x0caa('0x2f')]['id'])?_0x5a736c[_0x0caa('0x2f')]['id']:null;return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0xcbfd38,'role':{'$or':[_0x0caa('0x2d'),_0x0caa('0x2f'),_0x0caa('0x31')]}},'attributes':['id',_0x0caa('0x3a'),_0x0caa('0xf6'),_0x0caa('0xf7'),_0x0caa('0x2c'),_0x0caa('0x67'),'loginInPause']})[_0x0caa('0x15')](function(_0x30c8df){if(_0x30c8df){if(_0x30c8df['role']===_0x0caa('0x31')){_0x51777b=_0x30c8df;if(_0x5a736c['body'][_0x0caa('0xa9')]){_0x2e423e=util[_0x0caa('0xf8')](_0x0caa('0xf9'),_0x51777b[_0x5a736c[_0x0caa('0x61')][_0x0caa('0xa9')]]);}else if(_0x5a736c['body'][_0x0caa('0xfa')]){_0x2e423e=util[_0x0caa('0xf8')]('SIP/%s',_0x5a736c['body'][_0x0caa('0xfa')]);}else{_0x2e423e=util[_0x0caa('0xf8')](_0x0caa('0xfb'),_0x51777b[_0x0caa('0x3a')]);}socket['to'](util[_0x0caa('0xf8')]('user:%s',_0x51777b['name']))[_0x0caa('0x29')](_0x0caa('0xfc'),{'user':{'id':_0x51777b['id'],'name':_0x51777b[_0x0caa('0x3a')]},'ip':_0x5a736c[_0x0caa('0xfd')][_0x0caa('0xfe')]||_0x5a736c['connection'][_0x0caa('0xff')]||_0x5a736c['socket'][_0x0caa('0xff')]||_0x5a736c[_0x0caa('0x100')][_0x0caa('0x101')][_0x0caa('0xff')]});return db[_0x0caa('0xb4')][_0x0caa('0x2a')]({'where':{'membername':_0x51777b[_0x0caa('0x3a')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x0caa('0x98'))](_0x0caa('0x102'));}})['then'](function(){if(_0x51777b){return _0x51777b[_0x0caa('0x103')]({'raw':!![]});}})[_0x0caa('0x15')](function(_0x5749f2){if(_0x51777b){if(_0x5749f2){_0x3f6974=_0x5749f2;if(_0x3f6974['length']){var _0x24fb94=_0x3f6974['map'](function(_0x4cacca){var _0x116d05={'membername':_0x51777b[_0x0caa('0x3a')],'UserId':_0x51777b['id'],'queue_name':_0x4cacca['name'],'VoiceQueueId':_0x4cacca['id'],'interface':_0x2e423e,'paused':_0x51777b[_0x0caa('0xa7')]||![],'penalty':_0x4cacca[_0x0caa('0x104')]||0x0};return db[_0x0caa('0xb4')][_0x0caa('0xb5')](_0x116d05);});return Promise[_0x0caa('0x56')](_0x24fb94);}}}})[_0x0caa('0x15')](function(){if(_0x51777b){return db[_0x0caa('0x105')][_0x0caa('0x4d')]({'where':{'membername':_0x51777b[_0x0caa('0x3a')],'exitAt':null}});}})[_0x0caa('0x15')](function(_0x56c442){if(_0x51777b){var _0xe7dffe=[];_0x56c442[_0x0caa('0x106')](function(_0x42c25c){_0xe7dffe[_0x0caa('0x4c')](_0x42c25c['update']({'exitAt':moment()[_0x0caa('0xf8')](_0x0caa('0x107'))}));});return Promise[_0x0caa('0x56')](_0xe7dffe);}})[_0x0caa('0x15')](function(){if(_0x51777b){var _0x487edf=[];var _0x486845=[];var _0x11d360=utils[_0x0caa('0x108')]();var _0x3090da={'membername':_0x51777b['name'],'interface':_0x2e423e,'enterAt':moment()[_0x0caa('0xf8')](_0x0caa('0x107')),'role':_0x51777b[_0x0caa('0x2c')],'internal':_0x51777b[_0x0caa('0x67')]};_0x11d360[_0x0caa('0x106')](function(_0x26cc89){_0x487edf[_0x0caa('0x4c')](_['merge']({'channel':_0x26cc89,'type':_0x0caa('0x109'),'data1':_0x5a736c[_0x0caa('0x61')]['device'],'data2':_0x2e423e},_0x3090da));if(_0x51777b[_0x0caa('0xa7')]){_0x486845['push'](_['merge']({'channel':_0x26cc89,'type':_0x0caa('0x10a'),'data1':_0x0caa('0x10b')},_0x3090da));}});return db[_0x0caa('0x105')][_0x0caa('0x90')](_0x487edf[_0x0caa('0xd1')](_0x486845),{'individualHooks':!![]});}})[_0x0caa('0x15')](function(){if(_0x51777b){return _0x51777b[_0x0caa('0x28')]({'online':!![],'lastLoginAt':moment()[_0x0caa('0xf8')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x51777b[_0x0caa('0xa7')]||![],'mailPause':_0x51777b[_0x0caa('0xa7')]||![],'chatPause':_0x51777b[_0x0caa('0xa7')]||![],'faxPause':_0x51777b['loginInPause']||![],'smsPause':_0x51777b[_0x0caa('0xa7')]||![],'openchannelPause':_0x51777b['loginInPause']||![],'whatsappPause':_0x51777b[_0x0caa('0xa7')]||![],'pauseType':_0x51777b[_0x0caa('0xa7')]?_0x0caa('0x10b'):null,'interface':_0x2e423e,'lastPauseAt':moment()[_0x0caa('0xf8')](_0x0caa('0x107'))});}})[_0x0caa('0x15')](function(_0x20e4e5){if(_0x5a736c[_0x0caa('0x10c')]){return _0x4e8d0a();}else{return Promise[_0x0caa('0x10d')](_0x20e4e5)['then'](respondWithResult(_0x20db6d,null));}})[_0x0caa('0x1f')](handleError(_0x20db6d,null));};exports['logout']=function(_0x20eed3,_0x17965a){var _0x3bac45;return db['User'][_0x0caa('0x37')]({'where':{'id':_0x20eed3['params']['id'],'role':_0x0caa('0x31')},'attributes':['id','name','role']})[_0x0caa('0x15')](handleEntityNotFound(_0x17965a,null))[_0x0caa('0x15')](function(_0xef1f62){if(_0xef1f62){_0x3bac45=_0xef1f62;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x3bac45['name']},'individualHooks':!![]});}})['then'](function(){return db[_0x0caa('0x105')][_0x0caa('0x4d')]({'where':{'membername':_0x3bac45[_0x0caa('0x3a')],'exitAt':null}});})[_0x0caa('0x15')](function(_0x2b2fa0){var _0x69b148=[];_0x2b2fa0['forEach'](function(_0x561ee6){_0x69b148['push'](_0x561ee6[_0x0caa('0x28')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0x0caa('0x56')](_0x69b148);})[_0x0caa('0x15')](function(){return _0x3bac45[_0x0caa('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x0caa('0x15')](respondWithResult(_0x17965a,null))[_0x0caa('0x1f')](handleError(_0x17965a,null));};exports[_0x0caa('0x10e')]=function(_0x90b8f,_0x1015b3){var _0x2e06b5;return db[_0x0caa('0xb4')][_0x0caa('0x28')]({'paused':0x1},{'where':{'UserId':_0x90b8f[_0x0caa('0x62')]['id']},'individualHooks':!![]})[_0x0caa('0x15')](function(){return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x90b8f['params']['id'],'role':'agent'},'attributes':['id',_0x0caa('0x3a'),'role',_0x0caa('0x67'),_0x0caa('0xa9'),_0x0caa('0xa6')]});})[_0x0caa('0x15')](handleEntityNotFound(_0x1015b3,null))['then'](function(_0x3dfd36){if(_0x3dfd36){_0x2e06b5=_0x3dfd36;return respondWithRpcPromise(_0x0caa('0x10f'),_0x0caa('0x10e'),{'id':_0x2e06b5['id'],'name':_0x2e06b5[_0x0caa('0x3a')],'pause':!![]});}})[_0x0caa('0x15')](function(){if(_0x2e06b5){return db[_0x0caa('0x105')][_0x0caa('0x4d')]({'where':{'membername':_0x2e06b5[_0x0caa('0x3a')],'type':'PAUSE','exitAt':null}});}})[_0x0caa('0x15')](function(_0xd4873d){if(_0xd4873d['length']){var _0x12486a=moment()['format'](_0x0caa('0x107'));for(var _0x1b2447=0x0,_0x24311f=_0xd4873d[_0x0caa('0x50')];_0x1b2447<_0x24311f;_0x1b2447++){_0xd4873d[_0x1b2447][_0x0caa('0x110')]({'exitAt':_0x12486a});}}})[_0x0caa('0x15')](function(){var _0x37b3fa=[];var _0x5320d4=utils[_0x0caa('0x108')]();_0x5320d4[_0x0caa('0x106')](function(_0x672038){_0x37b3fa[_0x0caa('0x4c')]({'channel':_0x672038,'membername':_0x2e06b5['name'],'interface':_['isNil'](_0x2e06b5[_0x0caa('0xa9')])?util['format'](_0x0caa('0xfb'),_0x2e06b5['name']):_0x2e06b5[_0x0caa('0xa9')],'type':_0x0caa('0x10a'),'enterAt':moment()[_0x0caa('0xf8')](_0x0caa('0x107')),'data1':_0x90b8f[_0x0caa('0x61')][_0x0caa('0x40')]||_0x0caa('0x111'),'role':_0x2e06b5[_0x0caa('0x2c')],'internal':_0x2e06b5[_0x0caa('0x67')]});});return db[_0x0caa('0x105')][_0x0caa('0x90')](_0x37b3fa,{'individualHooks':!![]});})[_0x0caa('0x15')](function(){return _0x2e06b5[_0x0caa('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x90b8f['body'][_0x0caa('0x40')]||_0x0caa('0x111'),'lastPauseAt':moment()[_0x0caa('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x0caa('0x15')](respondWithResult(_0x1015b3,null))[_0x0caa('0x1f')](handleError(_0x1015b3,null));};exports[_0x0caa('0x112')]=function(_0xf70d64,_0x58ca15){if(_0xf70d64['body']['channel']&&!utils[_0x0caa('0xaa')](_0xf70d64['body']['channel'])){throw new APIBadRequestError(util[_0x0caa('0xf8')](_0x0caa('0x113'),_0xf70d64[_0x0caa('0x61')]['channel']));}return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0xf70d64['params']['id']},'attributes':['id',_0x0caa('0x3a'),_0x0caa('0x2c'),_0x0caa('0x67'),_0x0caa('0xa9'),'online',_0x0caa('0xa8'),_0x0caa('0x114'),'chatPause',_0x0caa('0x115'),_0x0caa('0x116'),_0x0caa('0x117'),_0x0caa('0x118'),_0x0caa('0x119'),_0x0caa('0x11a')]})[_0x0caa('0x15')](function(_0x2dc1e4){if(!_0x2dc1e4){throw new APINotFoundError(util[_0x0caa('0xf8')](_0x0caa('0x11b'),_0xf70d64[_0x0caa('0x62')]['id']));}return _0x2dc1e4[_0x0caa('0x112')](_0xf70d64[_0x0caa('0x61')]['channel']);})[_0x0caa('0x15')](respondWithResult(_0x58ca15,null))[_0x0caa('0x1f')](APIHandleError(_0x58ca15));};exports[_0x0caa('0x11c')]=function(_0x468e62,_0x5a1e46){var _0x2d44b1={};var _0x25786a={};var _0x18a3b4;var _0x17f9f2;return db['User'][_0x0caa('0x9f')]({'where':{'id':_0x468e62[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x5a1e46,null))[_0x0caa('0x15')](function(_0x3d3147){if(_0x3d3147){_0x18a3b4=_0x3d3147;_0x25786a['model']=_[_0x0caa('0xd3')](db[_0x0caa('0x11d')][_0x0caa('0x3e')]);_0x25786a[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x468e62[_0x0caa('0x45')]);_0x25786a[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x25786a['model'],_0x25786a[_0x0caa('0x45')]);_0x2d44b1[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x25786a['model'],qs[_0x0caa('0x5c')](_0x468e62[_0x0caa('0x45')]['fields']));_0x2d44b1['attributes']=_0x2d44b1['attributes'][_0x0caa('0x50')]?_0x2d44b1[_0x0caa('0x4b')]:_0x25786a['model'];_0x2d44b1[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x468e62['query'][_0x0caa('0xd6')]);_0x2d44b1[_0x0caa('0x44')]=qs['filters'](_[_0x0caa('0xd7')](_0x468e62[_0x0caa('0x45')],_0x25786a['filters']));if(_0x468e62[_0x0caa('0x45')]['filter']){_0x2d44b1[_0x0caa('0x44')]=_['merge'](_0x2d44b1[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x2d44b1['attributes'],function(_0x11eea0){var _0x53980d={};_0x53980d[_0x11eea0]={'$like':'%'+_0x468e62[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x53980d;})});}_0x2d44b1=_[_0x0caa('0x5d')]({},_0x2d44b1,_0x468e62['options']);return _0x18a3b4[_0x0caa('0x11c')](_0x2d44b1);}})[_0x0caa('0x15')](function(_0x231f0d){if(_0x231f0d){_0x17f9f2=_0x231f0d[_0x0caa('0x50')];if(!_0x468e62['query']['hasOwnProperty'](_0x0caa('0xdf'))){_0x2d44b1[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x468e62[_0x0caa('0x45')]['limit']);_0x2d44b1['offset']=qs['offset'](_0x468e62[_0x0caa('0x45')][_0x0caa('0x23')]);}return _0x18a3b4['getTeams'](_0x2d44b1);}})[_0x0caa('0x15')](function(_0x34eb8b){if(_0x34eb8b){return _0x34eb8b?{'count':_0x17f9f2,'rows':_0x34eb8b}:null;}})['then'](respondWithResult(_0x5a1e46,null))[_0x0caa('0x1f')](handleError(_0x5a1e46,null));};exports[_0x0caa('0x11e')]=function(_0x2aa00c,_0x86df9c){var _0x3ca545=_0x2aa00c[_0x0caa('0x62')]['id'];var _0x3a11c4=_0x2aa00c[_0x0caa('0x61')]?_0x2aa00c[_0x0caa('0x61')]['ids']:null;var _0x42b678=[];return Promise[_0x0caa('0x10d')]()[_0x0caa('0x15')](function(){if(!_0x3a11c4)throw new APIBadRequestError(_0x0caa('0x11f'));})['then'](function(){return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x3ca545}});})[_0x0caa('0x15')](function(_0x50b2bd){if(!_0x50b2bd)throw new APINotFoundError(util[_0x0caa('0xf8')](_0x0caa('0x11b'),_0x2aa00c[_0x0caa('0x62')]['id']));return db[_0x0caa('0x6d')][_0x0caa('0x120')](function(_0x205f58){return _0x50b2bd['addTeams'](_0x3a11c4,{'transaction':_0x205f58})[_0x0caa('0x15')](function(){return db['Team'][_0x0caa('0x4d')]({'where':{'id':{'$in':_0x3a11c4}}});})['then'](function(_0x245746){var _0x21cd33=_[_0x0caa('0x35')](_0x245746,function(_0x1f17c9){return _0x1f17c9['getAssociatedQueues']();});return Promise[_0x0caa('0x56')](_0x21cd33);})[_0x0caa('0x15')](function(_0x67d354){_0x42b678=_[_0x0caa('0x121')](_0x67d354);var _0x91425f=_[_0x0caa('0x35')](_0x42b678,function(_0x12b819){return _0x12b819[_0x0caa('0x122')](_0x50b2bd['id'],{'transaction':_0x205f58});});return Promise[_0x0caa('0x56')](_0x91425f);})['then'](function(){if(!_0x50b2bd[_0x0caa('0xa6')])return;var _0x5ec1db=_[_0x0caa('0x33')](_0x42b678,function(_0x1ae68f){return _0x1ae68f[_0x0caa('0x123')](_0x0caa('0xa5'))===_0x0caa('0x124');});var _0x5671aa=_[_0x0caa('0x35')](_0x5ec1db,function(_0x1216ab){return db[_0x0caa('0xb4')]['upsert']({'membername':_0x50b2bd['name'],'UserId':_0x50b2bd['id'],'queue_name':_0x1216ab[_0x0caa('0x3a')],'VoiceQueueId':_0x1216ab['id'],'interface':_['isNil'](_0x50b2bd[_0x0caa('0xa9')])?util[_0x0caa('0xf8')]('SIP/%s',_0x50b2bd['name']):_0x50b2bd[_0x0caa('0xa9')],'paused':_0x50b2bd[_0x0caa('0xa8')]||![],'penalty':_0x50b2bd[_0x0caa('0xb3')]},{'transaction':_0x205f58});});return Promise['all'](_0x5671aa);})['then'](function(){return db[_0x0caa('0x125')][_0x0caa('0x4d')]({'where':{'teamId':{'$in':_0x3a11c4}}});})[_0x0caa('0x15')](function(_0x48c892){var _0x5354a3=_[_0x0caa('0x35')](_0x48c892,function(_0x3595eb){return db[_0x0caa('0x126')][_0x0caa('0x86')]({'UserId':_0x50b2bd['id'],'VoicePrefixId':_0x3595eb[_0x0caa('0x127')]},{'transaction':_0x205f58});});return Promise[_0x0caa('0x56')](_0x5354a3);});});})['then'](function(){for(var _0x58ba19=0x0;_0x58ba19<_0x42b678[_0x0caa('0x50')];_0x58ba19++){var _0x49f0aa=_0x42b678[_0x58ba19][_0x0caa('0x123')](_0x0caa('0xa5'));var _0x3c0121=_0x49f0aa+_0x0caa('0x128');socket['emit'](_0x0caa('0x2f')+_0x49f0aa+_0x0caa('0xb0'),{'UserId':_0x3ca545,['queueField']:_0x42b678[_0x58ba19]['id']});}})[_0x0caa('0x15')](respondWithStatusCode(_0x86df9c,null))[_0x0caa('0x1f')](APIHandleError(_0x86df9c));};exports[_0x0caa('0x129')]=function(_0xa60908,_0x445f55){var _0x228172=_0xa60908[_0x0caa('0x62')]['id'];var _0x5ca4fa=null;if(_0xa60908[_0x0caa('0x45')]['ids']){_0x5ca4fa=_[_0x0caa('0xb8')](_0xa60908[_0x0caa('0x45')][_0x0caa('0x65')])?_0xa60908['query'][_0x0caa('0x65')]:[_0xa60908['query'][_0x0caa('0x65')]];}var _0x1c6a6b=[];return Promise[_0x0caa('0x10d')]()[_0x0caa('0x15')](function(){if(!_0x5ca4fa)throw new APIBadRequestError(_0x0caa('0x12a'));})[_0x0caa('0x15')](function(){return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x228172}});})[_0x0caa('0x15')](function(_0x55f249){if(!_0x55f249)throw new APINotFoundError(util['format'](_0x0caa('0x11b'),_0xa60908['params']['id']));return db[_0x0caa('0x6d')][_0x0caa('0x120')](function(_0x1cbf25){return _0x55f249[_0x0caa('0x129')](_0x5ca4fa,{'transaction':_0x1cbf25})[_0x0caa('0x15')](function(){return db[_0x0caa('0x11d')][_0x0caa('0x4d')]({'where':{'id':{'$in':_0x5ca4fa}}});})[_0x0caa('0x15')](function(_0x181f46){var _0x322d2f=_['map'](_0x181f46,function(_0x5a0b3b){return _0x5a0b3b[_0x0caa('0x12b')]();});return Promise[_0x0caa('0x56')](_0x322d2f);})[_0x0caa('0x15')](function(_0x14d855){_0x1c6a6b=_[_0x0caa('0x121')](_0x14d855);var _0x269f8e=_['map'](_0x1c6a6b,function(_0x2eaecb){return _0x2eaecb[_0x0caa('0x12c')](_0x55f249['id'],{'transaction':_0x1cbf25});});return Promise[_0x0caa('0x56')](_0x269f8e);})['then'](function(){if(!_0x55f249[_0x0caa('0xa6')])return;var _0x2fffeb=_[_0x0caa('0x33')](_0x1c6a6b,function(_0x217616){return _0x217616[_0x0caa('0x123')](_0x0caa('0xa5'))===_0x0caa('0x124');});var _0x1a6180=_[_0x0caa('0x35')](_0x2fffeb,function(_0x3547c2){return db[_0x0caa('0xb4')][_0x0caa('0x2a')]({'where':{'VoiceQueueId':_0x3547c2['id'],'UserId':_0x55f249['id']},'transaction':_0x1cbf25});});return Promise[_0x0caa('0x56')](_0x1a6180);})[_0x0caa('0x15')](function(){return db['TeamVoicePrefix'][_0x0caa('0x4d')]({'where':{'teamId':{'$in':_0x5ca4fa}}});})['then'](function(_0x7ba50d){var _0x162b91=_[_0x0caa('0x35')](_0x7ba50d,function(_0x37a7d5){return db[_0x0caa('0x126')][_0x0caa('0x2a')]({'where':{'UserId':_0x55f249['id'],'VoicePrefixId':_0x37a7d5[_0x0caa('0x127')]}},{'transaction':_0x1cbf25});});return Promise[_0x0caa('0x56')](_0x162b91);});});})[_0x0caa('0x15')](function(){for(var _0x50d472=0x0;_0x50d472<_0x1c6a6b[_0x0caa('0x50')];_0x50d472++){var _0x456630=_0x1c6a6b[_0x50d472]['getDataValue']('channel');var _0x1472be=_0x456630+_0x0caa('0x128');socket['emit'](_0x0caa('0x2f')+_0x456630+_0x0caa('0xb9'),{'UserId':_0x228172,['queueField']:_0x1c6a6b[_0x50d472]['id']});}})[_0x0caa('0x15')](respondWithStatusCode(_0x445f55,null))[_0x0caa('0x1f')](APIHandleError(_0x445f55));};exports[_0x0caa('0x12d')]=function(_0x5c114d,_0x325c8f){var _0x4b113b={};var _0x4e1d55={};var _0xb4ac53;var _0x8c67b5;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x5c114d[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x325c8f,null))[_0x0caa('0x15')](function(_0x5b3b05){if(_0x5b3b05){_0xb4ac53=_0x5b3b05;_0x4e1d55[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db['CmList'][_0x0caa('0x3e')]);_0x4e1d55[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x5c114d['query']);_0x4e1d55[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x4e1d55[_0x0caa('0x58')],_0x4e1d55[_0x0caa('0x45')]);_0x4b113b[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x4e1d55[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x5c114d[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x4b113b['attributes']=_0x4b113b[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x4b113b['attributes']:_0x4e1d55[_0x0caa('0x58')];_0x4b113b[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x5c114d['query']['sort']);_0x4b113b[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x5c114d['query'],_0x4e1d55[_0x0caa('0x5a')]));if(_0x5c114d['query']['filter']){_0x4b113b[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x4b113b[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x4b113b['attributes'],function(_0x4bab4d){var _0xa08f28={};_0xa08f28[_0x4bab4d]={'$like':'%'+_0x5c114d['query'][_0x0caa('0x33')]+'%'};return _0xa08f28;})});}_0x4b113b=_[_0x0caa('0x5d')]({},_0x4b113b,_0x5c114d[_0x0caa('0x5e')]);return _0xb4ac53[_0x0caa('0x12d')](_0x4b113b);}})[_0x0caa('0x15')](function(_0x3d5539){if(_0x3d5539){_0x8c67b5=_0x3d5539['length'];if(!_0x5c114d[_0x0caa('0x45')]['hasOwnProperty']('nolimit')){_0x4b113b[_0x0caa('0x25')]=qs['limit'](_0x5c114d[_0x0caa('0x45')][_0x0caa('0x25')]);_0x4b113b['offset']=qs['offset'](_0x5c114d[_0x0caa('0x45')]['offset']);}return _0xb4ac53[_0x0caa('0x12d')](_0x4b113b);}})[_0x0caa('0x15')](function(_0x7b5812){if(_0x7b5812){return _0x7b5812?{'count':_0x8c67b5,'rows':_0x7b5812}:null;}})['then'](respondWithResult(_0x325c8f,null))['catch'](handleError(_0x325c8f,null));};exports[_0x0caa('0x12e')]=function(_0x374f9f,_0x191f0b){var _0x58f634={};var _0x2c04f0={};var _0x2fc907;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x374f9f[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x191f0b,null))[_0x0caa('0x15')](function(_0x40dbd0){if(_0x40dbd0){_0x2fc907=_0x40dbd0;_0x2c04f0[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db['User'][_0x0caa('0x3e')]);_0x2c04f0[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x374f9f[_0x0caa('0x45')]);_0x2c04f0['filters']=_[_0x0caa('0x5b')](_0x2c04f0[_0x0caa('0x58')],_0x2c04f0[_0x0caa('0x45')]);_0x58f634[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x2c04f0[_0x0caa('0x58')],qs['fields'](_0x374f9f[_0x0caa('0x45')]['fields']));_0x58f634[_0x0caa('0x4b')]=_0x58f634['attributes']['length']?_0x58f634[_0x0caa('0x4b')]:_0x2c04f0['model'];_0x58f634[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x374f9f['query'][_0x0caa('0xd6')]);_0x58f634[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x374f9f[_0x0caa('0x45')],_0x2c04f0[_0x0caa('0x5a')]));if(_0x374f9f['query'][_0x0caa('0x33')]){_0x58f634[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x58f634[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x58f634['attributes'],function(_0x516467){var _0x49f221={};_0x49f221[_0x516467]={'$like':'%'+_0x374f9f[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x49f221;})});}_0x58f634[_0x0caa('0x58')]=db[_0x0caa('0x3d')];_0x58f634['as']='Agents';_0x58f634=_['merge']({},_0x58f634,_0x374f9f[_0x0caa('0x5e')]);return _0x2fc907['getVoiceQueues']({'include':[_0x58f634]});}})[_0x0caa('0x15')](function(_0x151578){if(_0x151578){var _0x225851={},_0x57c2bb=[];for(var _0x4d1a00=0x0;_0x4d1a00<_0x151578[_0x0caa('0x50')];_0x4d1a00+=0x1){for(var _0x41606e=0x0,_0x5d0d12;_0x41606e<_0x151578[_0x4d1a00][_0x0caa('0x30')]['length'];_0x41606e+=0x1){_0x5d0d12=_0x151578[_0x4d1a00][_0x0caa('0x30')][_0x41606e][_0x0caa('0x2b')]({'plain':!![]});_0x225851[_0x5d0d12['id']]=_0x5d0d12;}}_0x225851=_[_0x0caa('0x12f')](_0x225851);for(var _0xa93dde=qs[_0x0caa('0x23')](_0x374f9f[_0x0caa('0x45')][_0x0caa('0x23')]);_0xa93dde<_0x225851[_0x0caa('0x50')]&&_0x57c2bb['length']<qs['limit'](_0x374f9f['query'][_0x0caa('0x25')]);_0xa93dde+=0x1){if(_0x225851[_0xa93dde]){_0x57c2bb[_0x0caa('0x4c')](_0x225851[_0xa93dde]);}}return{'count':_0x225851[_0x0caa('0x50')],'rows':_0x57c2bb};}})[_0x0caa('0x15')](respondWithResult(_0x191f0b,null))[_0x0caa('0x1f')](handleError(_0x191f0b,null));};exports[_0x0caa('0x2a')]=function(_0x4b2a0d,_0x584e27){if(_0x4b2a0d[_0x0caa('0x2f')]['id']==_0x4b2a0d[_0x0caa('0x62')]['id']){return _0x584e27[_0x0caa('0x21')](0x1f4)[_0x0caa('0x3b')]({'message':_0x0caa('0x130')});}return db['User']['find']({'where':{'id':_0x4b2a0d[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x584e27,null))['then'](removeEntity(_0x584e27,null))[_0x0caa('0x1f')](handleError(_0x584e27,null));};exports[_0x0caa('0x131')]=function(_0x3721fe,_0x1a01ad){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x3721fe[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x1a01ad,null))[_0x0caa('0x15')](function(_0x1a1a5c){if(_0x1a1a5c){return _0x1a1a5c[_0x0caa('0x131')](_0x3721fe[_0x0caa('0x61')][_0x0caa('0x65')],_['omit'](_0x3721fe['body'],[_0x0caa('0x65'),'id'])||{})[_0x0caa('0xae')](function(){for(var _0x336607=0x0;_0x336607<_0x3721fe[_0x0caa('0x61')][_0x0caa('0x65')][_0x0caa('0x50')];_0x336607+=0x1){socket[_0x0caa('0x29')](_0x0caa('0x132'),{'ChatInteractionId':Number(_0x3721fe['body'][_0x0caa('0x65')][_0x336607]),'UserId':Number(_0x3721fe[_0x0caa('0x62')]['id'])});}return _0x3721fe[_0x0caa('0x61')]['ids'];});}})[_0x0caa('0x15')](respondWithResult(_0x1a01ad,null))[_0x0caa('0x1f')](handleError(_0x1a01ad,null));};exports['removeChatInteractions']=function(_0x436a0c,_0x3bf794){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x436a0c['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x3bf794,null))[_0x0caa('0x15')](function(_0x5e7de3){if(_0x5e7de3){return _0x5e7de3[_0x0caa('0x133')](_0x436a0c[_0x0caa('0x45')][_0x0caa('0x65')])[_0x0caa('0x15')](function(){if(_[_0x0caa('0xb8')](_0x436a0c[_0x0caa('0x45')][_0x0caa('0x65')])){for(var _0x1b628d=0x0;_0x1b628d<_0x436a0c['query'][_0x0caa('0x65')][_0x0caa('0x50')];_0x1b628d+=0x1){socket['emit'](_0x0caa('0x134'),{'ChatInteractionId':Number(_0x436a0c['query']['ids'][_0x1b628d]),'UserId':Number(_0x436a0c[_0x0caa('0x62')]['id'])});}}else{socket['emit'](_0x0caa('0x134'),{'ChatInteractionId':Number(_0x436a0c[_0x0caa('0x45')]['ids']),'UserId':Number(_0x436a0c[_0x0caa('0x62')]['id'])});}});}})[_0x0caa('0x15')](respondWithStatusCode(_0x3bf794,null))[_0x0caa('0x1f')](handleError(_0x3bf794,null));};exports[_0x0caa('0x135')]=function(_0x670cbd,_0x504a2f){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x670cbd[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x504a2f,null))[_0x0caa('0x15')](function(_0x34577e){if(_0x34577e){return _0x34577e[_0x0caa('0x135')](_0x670cbd[_0x0caa('0x61')][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x670cbd[_0x0caa('0x61')],['ids','id'])||{})['spread'](function(){for(var _0x25c52a=0x0;_0x25c52a<_0x670cbd[_0x0caa('0x61')]['ids']['length'];_0x25c52a+=0x1){socket[_0x0caa('0x29')](_0x0caa('0x136'),{'MailInteractionId':Number(_0x670cbd['body'][_0x0caa('0x65')][_0x25c52a]),'UserId':Number(_0x670cbd[_0x0caa('0x62')]['id'])});}return _0x670cbd['body'][_0x0caa('0x65')];});}})['then'](respondWithResult(_0x504a2f,null))[_0x0caa('0x1f')](handleError(_0x504a2f,null));};exports['removeMailInteractions']=function(_0x102ae7,_0x355409){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x102ae7[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x355409,null))['then'](function(_0x4f69d7){if(_0x4f69d7){return _0x4f69d7[_0x0caa('0x137')](_0x102ae7['query']['ids'])[_0x0caa('0x15')](function(){if(_[_0x0caa('0xb8')](_0x102ae7[_0x0caa('0x45')][_0x0caa('0x65')])){for(var _0x25eec1=0x0;_0x25eec1<_0x102ae7[_0x0caa('0x45')][_0x0caa('0x65')][_0x0caa('0x50')];_0x25eec1+=0x1){socket['emit'](_0x0caa('0x138'),{'MailInteractionId':Number(_0x102ae7[_0x0caa('0x45')]['ids'][_0x25eec1]),'UserId':Number(_0x102ae7[_0x0caa('0x62')]['id'])});}}else{socket[_0x0caa('0x29')](_0x0caa('0x138'),{'MailInteractionId':Number(_0x102ae7[_0x0caa('0x45')][_0x0caa('0x65')]),'UserId':Number(_0x102ae7[_0x0caa('0x62')]['id'])});}});}})['then'](respondWithStatusCode(_0x355409,null))['catch'](handleError(_0x355409,null));};exports['addFaxInteractions']=function(_0x1eb341,_0x476314){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x1eb341[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x476314,null))['then'](function(_0x5b4631){if(_0x5b4631){return _0x5b4631[_0x0caa('0x139')](_0x1eb341[_0x0caa('0x61')][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x1eb341[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{})[_0x0caa('0xae')](function(){for(var _0x5c6392=0x0;_0x5c6392<_0x1eb341['body'][_0x0caa('0x65')]['length'];_0x5c6392+=0x1){socket[_0x0caa('0x29')](_0x0caa('0x13a'),{'FaxInteractionId':Number(_0x1eb341[_0x0caa('0x61')][_0x0caa('0x65')][_0x5c6392]),'UserId':Number(_0x1eb341[_0x0caa('0x62')]['id'])});}return _0x1eb341[_0x0caa('0x61')][_0x0caa('0x65')];});}})[_0x0caa('0x15')](respondWithResult(_0x476314,null))[_0x0caa('0x1f')](handleError(_0x476314,null));};exports[_0x0caa('0x13b')]=function(_0x302327,_0x38d9a7){return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x302327['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x38d9a7,null))[_0x0caa('0x15')](function(_0x474c42){if(_0x474c42){return _0x474c42[_0x0caa('0x13b')](_0x302327[_0x0caa('0x45')][_0x0caa('0x65')])[_0x0caa('0x15')](function(){if(_[_0x0caa('0xb8')](_0x302327[_0x0caa('0x45')][_0x0caa('0x65')])){for(var _0x4d36b4=0x0;_0x4d36b4<_0x302327[_0x0caa('0x45')][_0x0caa('0x65')][_0x0caa('0x50')];_0x4d36b4+=0x1){socket[_0x0caa('0x29')](_0x0caa('0x13c'),{'FaxInteractionId':Number(_0x302327[_0x0caa('0x45')][_0x0caa('0x65')][_0x4d36b4]),'UserId':Number(_0x302327['params']['id'])});}}else{socket['emit'](_0x0caa('0x13c'),{'FaxInteractionId':Number(_0x302327[_0x0caa('0x45')][_0x0caa('0x65')]),'UserId':Number(_0x302327[_0x0caa('0x62')]['id'])});}});}})['then'](respondWithStatusCode(_0x38d9a7,null))[_0x0caa('0x1f')](handleError(_0x38d9a7,null));};exports['addSmsInteractions']=function(_0xa51106,_0x4045f7){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0xa51106['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x4045f7,null))[_0x0caa('0x15')](function(_0x7beab9){if(_0x7beab9){return _0x7beab9[_0x0caa('0x13d')](_0xa51106['body'][_0x0caa('0x65')],_['omit'](_0xa51106[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{})[_0x0caa('0xae')](function(){for(var _0x422805=0x0;_0x422805<_0xa51106[_0x0caa('0x61')]['ids'][_0x0caa('0x50')];_0x422805+=0x1){socket[_0x0caa('0x29')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0xa51106[_0x0caa('0x61')][_0x0caa('0x65')][_0x422805]),'UserId':Number(_0xa51106[_0x0caa('0x62')]['id'])});}return _0xa51106[_0x0caa('0x61')][_0x0caa('0x65')];});}})['then'](respondWithResult(_0x4045f7,null))[_0x0caa('0x1f')](handleError(_0x4045f7,null));};exports[_0x0caa('0x13e')]=function(_0x5e05f5,_0x5c6f36){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x5e05f5[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x5c6f36,null))[_0x0caa('0x15')](function(_0x5da5e7){if(_0x5da5e7){return _0x5da5e7[_0x0caa('0x13e')](_0x5e05f5[_0x0caa('0x45')]['ids'])[_0x0caa('0x15')](function(){if(_[_0x0caa('0xb8')](_0x5e05f5[_0x0caa('0x45')]['ids'])){for(var _0x587723=0x0;_0x587723<_0x5e05f5[_0x0caa('0x45')][_0x0caa('0x65')][_0x0caa('0x50')];_0x587723+=0x1){socket[_0x0caa('0x29')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x5e05f5[_0x0caa('0x45')][_0x0caa('0x65')][_0x587723]),'UserId':Number(_0x5e05f5[_0x0caa('0x62')]['id'])});}}else{socket['emit'](_0x0caa('0x13f'),{'SmsInteractionId':Number(_0x5e05f5['query'][_0x0caa('0x65')]),'UserId':Number(_0x5e05f5[_0x0caa('0x62')]['id'])});}});}})[_0x0caa('0x15')](respondWithStatusCode(_0x5c6f36,null))[_0x0caa('0x1f')](handleError(_0x5c6f36,null));};exports[_0x0caa('0x140')]=function(_0x9143aa,_0x5b8cc4){return db['User']['find']({'where':{'id':_0x9143aa[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x5b8cc4,null))[_0x0caa('0x15')](function(_0x1e4b4a){if(_0x1e4b4a){return _0x1e4b4a[_0x0caa('0x140')](_0x9143aa[_0x0caa('0x61')][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x9143aa['body'],[_0x0caa('0x65'),'id'])||{})[_0x0caa('0xae')](function(){for(var _0x1b542b=0x0;_0x1b542b<_0x9143aa['body']['ids'][_0x0caa('0x50')];_0x1b542b+=0x1){socket[_0x0caa('0x29')](_0x0caa('0x141'),{'OpenchannelInteractionId':Number(_0x9143aa[_0x0caa('0x61')][_0x0caa('0x65')][_0x1b542b]),'UserId':Number(_0x9143aa[_0x0caa('0x62')]['id'])});}return _0x9143aa[_0x0caa('0x61')]['ids'];});}})['then'](respondWithResult(_0x5b8cc4,null))['catch'](handleError(_0x5b8cc4,null));};exports['removeOpenchannelInteractions']=function(_0x13c066,_0x3c05e9){return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x13c066['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x3c05e9,null))[_0x0caa('0x15')](function(_0x5d9570){if(_0x5d9570){return _0x5d9570[_0x0caa('0x142')](_0x13c066[_0x0caa('0x45')]['ids'])[_0x0caa('0x15')](function(){if(_['isArray'](_0x13c066[_0x0caa('0x45')][_0x0caa('0x65')])){for(var _0x23ebfd=0x0;_0x23ebfd<_0x13c066[_0x0caa('0x45')]['ids'][_0x0caa('0x50')];_0x23ebfd+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x13c066[_0x0caa('0x45')][_0x0caa('0x65')][_0x23ebfd]),'UserId':Number(_0x13c066[_0x0caa('0x62')]['id'])});}}else{socket[_0x0caa('0x29')](_0x0caa('0x143'),{'OpenchannelInteractionId':Number(_0x13c066['query'][_0x0caa('0x65')]),'UserId':Number(_0x13c066[_0x0caa('0x62')]['id'])});}});}})[_0x0caa('0x15')](respondWithStatusCode(_0x3c05e9,null))[_0x0caa('0x1f')](handleError(_0x3c05e9,null));};exports[_0x0caa('0x144')]=function(_0x1237a0,_0xcbcee8){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x1237a0[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0xcbcee8,null))['then'](function(_0x523d69){if(_0x523d69){return _0x523d69[_0x0caa('0x144')](_0x1237a0[_0x0caa('0x61')]['ids'],_['omit'](_0x1237a0[_0x0caa('0x61')],['ids','id'])||{})[_0x0caa('0xae')](function(){for(var _0x4e034b=0x0;_0x4e034b<_0x1237a0[_0x0caa('0x61')][_0x0caa('0x65')][_0x0caa('0x50')];_0x4e034b+=0x1){socket['emit'](_0x0caa('0x145'),{'WhatsappInteractionId':Number(_0x1237a0[_0x0caa('0x61')]['ids'][_0x4e034b]),'UserId':Number(_0x1237a0[_0x0caa('0x62')]['id'])});}return _0x1237a0[_0x0caa('0x61')][_0x0caa('0x65')];});}})['then'](respondWithResult(_0xcbcee8,null))[_0x0caa('0x1f')](handleError(_0xcbcee8,null));};exports['removeWhatsappInteractions']=function(_0x39bd6c,_0xd3dad7){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x39bd6c[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0xd3dad7,null))[_0x0caa('0x15')](function(_0x4c11c3){if(_0x4c11c3){return _0x4c11c3[_0x0caa('0x146')](_0x39bd6c[_0x0caa('0x45')][_0x0caa('0x65')]);}})['then'](respondWithStatusCode(_0xd3dad7,null))[_0x0caa('0x1f')](handleError(_0xd3dad7,null));};exports[_0x0caa('0x147')]=function(_0x31acfd,_0x300cbd){var _0x3c1ff8={};var _0x5c80d7={};var _0x36bbeb;var _0x3c3d37;return db[_0x0caa('0x3d')]['findOne']({'where':{'id':_0x31acfd[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x300cbd,null))[_0x0caa('0x15')](function(_0x15521e){if(_0x15521e){_0x36bbeb=_0x15521e;_0x5c80d7['model']=_['keys'](db[_0x0caa('0x148')][_0x0caa('0x3e')]);_0x5c80d7[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x31acfd[_0x0caa('0x45')]);_0x5c80d7['filters']=_[_0x0caa('0x5b')](_0x5c80d7['model'],_0x5c80d7[_0x0caa('0x45')]);_0x3c1ff8[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x5c80d7['model'],qs['fields'](_0x31acfd[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x3c1ff8[_0x0caa('0x4b')]=_0x3c1ff8[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x3c1ff8['attributes']:_0x5c80d7[_0x0caa('0x58')];_0x3c1ff8[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x31acfd[_0x0caa('0x45')]['sort']);_0x3c1ff8[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_['pick'](_0x31acfd[_0x0caa('0x45')],_0x5c80d7['filters']));if(_0x31acfd[_0x0caa('0x45')][_0x0caa('0x33')]){_0x3c1ff8['where']=_['merge'](_0x3c1ff8[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x3c1ff8['attributes'],function(_0x58b351){var _0x16e518={};_0x16e518[_0x58b351]={'$like':'%'+_0x31acfd[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x16e518;})});}_0x3c1ff8=_['merge']({},_0x3c1ff8,_0x31acfd[_0x0caa('0x5e')]);return _0x36bbeb[_0x0caa('0x147')](_0x3c1ff8);}})['then'](function(_0x34eb5e){if(_0x34eb5e){_0x3c3d37=_0x34eb5e[_0x0caa('0x50')];if(!_0x31acfd['query']['hasOwnProperty']('nolimit')){_0x3c1ff8[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x31acfd['query']['limit']);_0x3c1ff8['offset']=qs[_0x0caa('0x23')](_0x31acfd[_0x0caa('0x45')]['offset']);}return _0x36bbeb['getVoicePrefixes'](_0x3c1ff8);}})[_0x0caa('0x15')](function(_0x29f6b7){if(_0x29f6b7){return _0x29f6b7?{'count':_0x3c3d37,'rows':_0x29f6b7}:null;}})[_0x0caa('0x15')](respondWithResult(_0x300cbd,null))[_0x0caa('0x1f')](handleError(_0x300cbd,null));};exports['getFaxAccounts']=function(_0x4ff1c9,_0x2bbd70){var _0x37de4c={};var _0x5c661d={};var _0x3c4aca;var _0xd1ce88;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x4ff1c9[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x2bbd70,null))[_0x0caa('0x15')](function(_0x44317a){if(_0x44317a){_0x3c4aca=_0x44317a;_0x5c661d[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0x149')][_0x0caa('0x3e')]);_0x5c661d[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x4ff1c9[_0x0caa('0x45')]);_0x5c661d[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x5c661d[_0x0caa('0x58')],_0x5c661d[_0x0caa('0x45')]);_0x37de4c[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x5c661d[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x4ff1c9[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x37de4c['attributes']=_0x37de4c[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x37de4c[_0x0caa('0x4b')]:_0x5c661d['model'];_0x37de4c[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x4ff1c9[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x37de4c[_0x0caa('0x44')]=qs['filters'](_['pick'](_0x4ff1c9['query'],_0x5c661d[_0x0caa('0x5a')]));if(_0x4ff1c9[_0x0caa('0x45')][_0x0caa('0x33')]){_0x37de4c[_0x0caa('0x44')]=_['merge'](_0x37de4c[_0x0caa('0x44')],{'$or':_['map'](_0x37de4c[_0x0caa('0x4b')],function(_0x14f39c){var _0x4264c0={};_0x4264c0[_0x14f39c]={'$like':'%'+_0x4ff1c9[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x4264c0;})});}_0x37de4c=_[_0x0caa('0x5d')]({},_0x37de4c,_0x4ff1c9[_0x0caa('0x5e')]);return _0x3c4aca[_0x0caa('0x14a')](_0x37de4c);}})[_0x0caa('0x15')](function(_0x2641e1){if(_0x2641e1){_0xd1ce88=_0x2641e1[_0x0caa('0x50')];if(!_0x4ff1c9[_0x0caa('0x45')]['hasOwnProperty']('nolimit')){_0x37de4c[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x4ff1c9['query']['limit']);_0x37de4c[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x4ff1c9[_0x0caa('0x45')][_0x0caa('0x23')]);}return _0x3c4aca[_0x0caa('0x14a')](_0x37de4c);}})[_0x0caa('0x15')](function(_0xdbe680){if(_0xdbe680){return _0xdbe680?{'count':_0xd1ce88,'rows':_0xdbe680}:null;}})[_0x0caa('0x15')](respondWithResult(_0x2bbd70,null))[_0x0caa('0x1f')](handleError(_0x2bbd70,null));};exports['addFaxAccounts']=function(_0x2b6626,_0x4ab7d9){return db['User']['find']({'where':{'id':_0x2b6626[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x4ab7d9,null))['then'](function(_0x1ec9d9){if(_0x1ec9d9){return _0x1ec9d9[_0x0caa('0x14b')](_0x2b6626[_0x0caa('0x61')][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x2b6626[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{});}})[_0x0caa('0x15')](respondWithResult(_0x4ab7d9,null))['catch'](handleError(_0x4ab7d9,null));};exports[_0x0caa('0x14c')]=function(_0x4db848,_0x53b298){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x4db848['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x53b298,null))['then'](function(_0x264446){if(_0x264446){return _0x264446[_0x0caa('0x14c')](_0x4db848['query'][_0x0caa('0x65')]);}})[_0x0caa('0x15')](respondWithStatusCode(_0x53b298,null))['catch'](handleError(_0x53b298,null));};exports[_0x0caa('0x14d')]=function(_0x5756f9,_0x53df38){var _0x288753={};var _0x26c2e5={};var _0x312903;var _0x432f24;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x5756f9[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x53df38,null))['then'](function(_0x114e4f){if(_0x114e4f){_0x312903=_0x114e4f;_0x26c2e5['model']=_['keys'](db[_0x0caa('0x14e')]['rawAttributes']);_0x26c2e5[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x5756f9[_0x0caa('0x45')]);_0x26c2e5['filters']=_[_0x0caa('0x5b')](_0x26c2e5[_0x0caa('0x58')],_0x26c2e5[_0x0caa('0x45')]);_0x288753[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x26c2e5[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x5756f9[_0x0caa('0x45')]['fields']));_0x288753[_0x0caa('0x4b')]=_0x288753[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x288753[_0x0caa('0x4b')]:_0x26c2e5['model'];_0x288753['order']=qs['sort'](_0x5756f9[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x288753[_0x0caa('0x44')]=qs['filters'](_[_0x0caa('0xd7')](_0x5756f9[_0x0caa('0x45')],_0x26c2e5['filters']));if(_0x5756f9[_0x0caa('0x45')][_0x0caa('0x33')]){_0x288753[_0x0caa('0x44')]=_['merge'](_0x288753[_0x0caa('0x44')],{'$or':_['map'](_0x288753[_0x0caa('0x4b')],function(_0x238b0c){var _0x272d3f={};_0x272d3f[_0x238b0c]={'$like':'%'+_0x5756f9[_0x0caa('0x45')]['filter']+'%'};return _0x272d3f;})});}_0x288753=_[_0x0caa('0x5d')]({},_0x288753,_0x5756f9[_0x0caa('0x5e')]);return _0x312903['getMailAccounts'](_0x288753);}})['then'](function(_0x1b489a){if(_0x1b489a){_0x432f24=_0x1b489a[_0x0caa('0x50')];if(!_0x5756f9[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x288753[_0x0caa('0x25')]=qs['limit'](_0x5756f9[_0x0caa('0x45')][_0x0caa('0x25')]);_0x288753[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x5756f9[_0x0caa('0x45')]['offset']);}return _0x312903['getMailAccounts'](_0x288753);}})[_0x0caa('0x15')](function(_0x129dd9){if(_0x129dd9){return _0x129dd9?{'count':_0x432f24,'rows':_0x129dd9}:null;}})[_0x0caa('0x15')](respondWithResult(_0x53df38,null))[_0x0caa('0x1f')](handleError(_0x53df38,null));};exports[_0x0caa('0x14f')]=function(_0x84c013,_0x477e89){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x84c013[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x477e89,null))[_0x0caa('0x15')](function(_0x48c6bd){if(_0x48c6bd){return _0x48c6bd[_0x0caa('0x14f')](_0x84c013[_0x0caa('0x61')][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x84c013[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{});}})[_0x0caa('0x15')](respondWithResult(_0x477e89,null))['catch'](handleError(_0x477e89,null));};exports[_0x0caa('0x150')]=function(_0x42e40c,_0x45edbf){return db['User']['find']({'where':{'id':_0x42e40c[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x45edbf,null))['then'](function(_0x31343b){if(_0x31343b){return _0x31343b[_0x0caa('0x150')](_0x42e40c[_0x0caa('0x45')][_0x0caa('0x65')]);}})[_0x0caa('0x15')](respondWithStatusCode(_0x45edbf,null))[_0x0caa('0x1f')](handleError(_0x45edbf,null));};exports[_0x0caa('0x151')]=function(_0x805f09,_0xd3ba36){var _0x5d3657={};var _0x3b3a71={};var _0x5459a0;var _0x3fdd51;return db[_0x0caa('0x3d')]['findOne']({'where':{'id':_0x805f09[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0xd3ba36,null))[_0x0caa('0x15')](function(_0x29a871){if(_0x29a871){_0x5459a0=_0x29a871;_0x3b3a71[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0x152')][_0x0caa('0x3e')]);_0x3b3a71[_0x0caa('0x45')]=_['keys'](_0x805f09[_0x0caa('0x45')]);_0x3b3a71[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x3b3a71['model'],_0x3b3a71[_0x0caa('0x45')]);_0x5d3657[_0x0caa('0x4b')]=_['intersection'](_0x3b3a71[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x805f09[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x5d3657[_0x0caa('0x4b')]=_0x5d3657[_0x0caa('0x4b')]['length']?_0x5d3657[_0x0caa('0x4b')]:_0x3b3a71[_0x0caa('0x58')];_0x5d3657[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x805f09[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x5d3657[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x805f09[_0x0caa('0x45')],_0x3b3a71[_0x0caa('0x5a')]));if(_0x805f09[_0x0caa('0x45')][_0x0caa('0x33')]){_0x5d3657[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x5d3657[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x5d3657[_0x0caa('0x4b')],function(_0x296da1){var _0x11f5c7={};_0x11f5c7[_0x296da1]={'$like':'%'+_0x805f09[_0x0caa('0x45')]['filter']+'%'};return _0x11f5c7;})});}_0x5d3657=_['merge']({},_0x5d3657,_0x805f09[_0x0caa('0x5e')]);return _0x5459a0['getOpenchannelAccounts'](_0x5d3657);}})['then'](function(_0x45677b){if(_0x45677b){_0x3fdd51=_0x45677b[_0x0caa('0x50')];if(!_0x805f09['query'][_0x0caa('0xde')]('nolimit')){_0x5d3657[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x805f09[_0x0caa('0x45')]['limit']);_0x5d3657[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x805f09['query'][_0x0caa('0x23')]);}return _0x5459a0[_0x0caa('0x151')](_0x5d3657);}})[_0x0caa('0x15')](function(_0x2455fe){if(_0x2455fe){return _0x2455fe?{'count':_0x3fdd51,'rows':_0x2455fe}:null;}})[_0x0caa('0x15')](respondWithResult(_0xd3ba36,null))['catch'](handleError(_0xd3ba36,null));};exports['addOpenchannelAccounts']=function(_0x1216ae,_0x513c07){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x1216ae['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x513c07,null))[_0x0caa('0x15')](function(_0x2fcfd5){if(_0x2fcfd5){return _0x2fcfd5[_0x0caa('0x153')](_0x1216ae[_0x0caa('0x61')][_0x0caa('0x65')],_['omit'](_0x1216ae[_0x0caa('0x61')],['ids','id'])||{});}})[_0x0caa('0x15')](respondWithResult(_0x513c07,null))[_0x0caa('0x1f')](handleError(_0x513c07,null));};exports['removeOpenchannelAccounts']=function(_0x236b5e,_0x5ad32f){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x236b5e['params']['id']}})['then'](handleEntityNotFound(_0x5ad32f,null))[_0x0caa('0x15')](function(_0x31cf5a){if(_0x31cf5a){return _0x31cf5a[_0x0caa('0x154')](_0x236b5e[_0x0caa('0x45')]['ids']);}})[_0x0caa('0x15')](respondWithStatusCode(_0x5ad32f,null))[_0x0caa('0x1f')](handleError(_0x5ad32f,null));};exports['getSmsAccounts']=function(_0x24fff8,_0x1441a9){var _0x3f793a={};var _0x390485={};var _0x2ef777;var _0x29e8f6;return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x24fff8['params']['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x1441a9,null))['then'](function(_0x1d834a){if(_0x1d834a){_0x2ef777=_0x1d834a;_0x390485['model']=_['keys'](db[_0x0caa('0x155')][_0x0caa('0x3e')]);_0x390485[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x24fff8[_0x0caa('0x45')]);_0x390485[_0x0caa('0x5a')]=_[_0x0caa('0x5b')](_0x390485[_0x0caa('0x58')],_0x390485['query']);_0x3f793a[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x390485['model'],qs['fields'](_0x24fff8['query']['fields']));_0x3f793a['attributes']=_0x3f793a['attributes'][_0x0caa('0x50')]?_0x3f793a['attributes']:_0x390485['model'];_0x3f793a[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x24fff8[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x3f793a[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0x24fff8[_0x0caa('0x45')],_0x390485[_0x0caa('0x5a')]));if(_0x24fff8[_0x0caa('0x45')][_0x0caa('0x33')]){_0x3f793a[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x3f793a[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x3f793a[_0x0caa('0x4b')],function(_0x276bc8){var _0x480b2c={};_0x480b2c[_0x276bc8]={'$like':'%'+_0x24fff8[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x480b2c;})});}_0x3f793a=_['merge']({},_0x3f793a,_0x24fff8[_0x0caa('0x5e')]);return _0x2ef777[_0x0caa('0x156')](_0x3f793a);}})['then'](function(_0x16d367){if(_0x16d367){_0x29e8f6=_0x16d367[_0x0caa('0x50')];if(!_0x24fff8[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x3f793a[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x24fff8['query'][_0x0caa('0x25')]);_0x3f793a[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x24fff8['query']['offset']);}return _0x2ef777[_0x0caa('0x156')](_0x3f793a);}})[_0x0caa('0x15')](function(_0xd0d0fb){if(_0xd0d0fb){return _0xd0d0fb?{'count':_0x29e8f6,'rows':_0xd0d0fb}:null;}})[_0x0caa('0x15')](respondWithResult(_0x1441a9,null))[_0x0caa('0x1f')](handleError(_0x1441a9,null));};exports['addSmsAccounts']=function(_0x330dd3,_0x4b3469){return db['User']['find']({'where':{'id':_0x330dd3[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x4b3469,null))['then'](function(_0x55fa53){if(_0x55fa53){return _0x55fa53[_0x0caa('0x157')](_0x330dd3[_0x0caa('0x61')][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x330dd3[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{});}})['then'](respondWithResult(_0x4b3469,null))[_0x0caa('0x1f')](handleError(_0x4b3469,null));};exports['removeSmsAccounts']=function(_0x38f44a,_0x435fe8){return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x38f44a[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x435fe8,null))['then'](function(_0x5119ac){if(_0x5119ac){return _0x5119ac[_0x0caa('0x158')](_0x38f44a[_0x0caa('0x45')][_0x0caa('0x65')]);}})[_0x0caa('0x15')](respondWithStatusCode(_0x435fe8,null))['catch'](handleError(_0x435fe8,null));};exports['getChatWebsites']=function(_0xd565bd,_0x26c9e8){var _0x107354={};var _0x277725={};var _0x1b462d;var _0x1a67e0;return db['User'][_0x0caa('0x9f')]({'where':{'id':_0xd565bd[_0x0caa('0x62')]['id']}})['then'](handleEntityNotFound(_0x26c9e8,null))[_0x0caa('0x15')](function(_0x59c743){if(_0x59c743){_0x1b462d=_0x59c743;_0x277725[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db[_0x0caa('0x159')]['rawAttributes']);_0x277725[_0x0caa('0x45')]=_['keys'](_0xd565bd[_0x0caa('0x45')]);_0x277725[_0x0caa('0x5a')]=_['intersection'](_0x277725[_0x0caa('0x58')],_0x277725['query']);_0x107354['attributes']=_[_0x0caa('0x5b')](_0x277725[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0xd565bd[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x107354['attributes']=_0x107354['attributes']['length']?_0x107354[_0x0caa('0x4b')]:_0x277725[_0x0caa('0x58')];_0x107354[_0x0caa('0xd5')]=qs['sort'](_0xd565bd[_0x0caa('0x45')]['sort']);_0x107354[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_[_0x0caa('0xd7')](_0xd565bd[_0x0caa('0x45')],_0x277725['filters']));if(_0xd565bd[_0x0caa('0x45')][_0x0caa('0x33')]){_0x107354[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x107354[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0x107354[_0x0caa('0x4b')],function(_0x2e62f6){var _0x191b48={};_0x191b48[_0x2e62f6]={'$like':'%'+_0xd565bd[_0x0caa('0x45')][_0x0caa('0x33')]+'%'};return _0x191b48;})});}_0x107354=_[_0x0caa('0x5d')]({},_0x107354,_0xd565bd[_0x0caa('0x5e')]);return _0x1b462d[_0x0caa('0x15a')](_0x107354);}})['then'](function(_0xae94ee){if(_0xae94ee){_0x1a67e0=_0xae94ee['length'];if(!_0xd565bd[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x107354[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0xd565bd[_0x0caa('0x45')][_0x0caa('0x25')]);_0x107354['offset']=qs[_0x0caa('0x23')](_0xd565bd['query'][_0x0caa('0x23')]);}return _0x1b462d[_0x0caa('0x15a')](_0x107354);}})['then'](function(_0x2768fe){if(_0x2768fe){return _0x2768fe?{'count':_0x1a67e0,'rows':_0x2768fe}:null;}})[_0x0caa('0x15')](respondWithResult(_0x26c9e8,null))[_0x0caa('0x1f')](handleError(_0x26c9e8,null));};exports[_0x0caa('0x15b')]=function(_0x3bc3b0,_0x2017db){return db['User'][_0x0caa('0x37')]({'where':{'id':_0x3bc3b0[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x2017db,null))['then'](function(_0x4d10d8){if(_0x4d10d8){return _0x4d10d8[_0x0caa('0x15b')](_0x3bc3b0[_0x0caa('0x61')][_0x0caa('0x65')],_['omit'](_0x3bc3b0[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{});}})[_0x0caa('0x15')](respondWithResult(_0x2017db,null))['catch'](handleError(_0x2017db,null));};exports[_0x0caa('0x15c')]=function(_0x1c5571,_0x3e3d9d){return db[_0x0caa('0x3d')]['find']({'where':{'id':_0x1c5571[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x3e3d9d,null))['then'](function(_0x438b88){if(_0x438b88){return _0x438b88['removeChatWebsites'](_0x1c5571[_0x0caa('0x45')][_0x0caa('0x65')]);}})[_0x0caa('0x15')](respondWithStatusCode(_0x3e3d9d,null))[_0x0caa('0x1f')](handleError(_0x3e3d9d,null));};exports[_0x0caa('0x15d')]=function(_0x1acde9,_0x41642e){var _0x451dda={};var _0x2f752e={};var _0x328f30;var _0x8b30f1;return db['User'][_0x0caa('0x9f')]({'where':{'id':_0x1acde9[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x41642e,null))[_0x0caa('0x15')](function(_0x141c52){if(_0x141c52){_0x328f30=_0x141c52;_0x2f752e[_0x0caa('0x58')]=_[_0x0caa('0xd3')](db['WhatsappAccount'][_0x0caa('0x3e')]);_0x2f752e[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x1acde9[_0x0caa('0x45')]);_0x2f752e[_0x0caa('0x5a')]=_['intersection'](_0x2f752e['model'],_0x2f752e[_0x0caa('0x45')]);_0x451dda[_0x0caa('0x4b')]=_[_0x0caa('0x5b')](_0x2f752e[_0x0caa('0x58')],qs['fields'](_0x1acde9[_0x0caa('0x45')][_0x0caa('0x5c')]));_0x451dda[_0x0caa('0x4b')]=_0x451dda[_0x0caa('0x4b')][_0x0caa('0x50')]?_0x451dda['attributes']:_0x2f752e[_0x0caa('0x58')];_0x451dda[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x1acde9[_0x0caa('0x45')][_0x0caa('0xd6')]);_0x451dda[_0x0caa('0x44')]=qs[_0x0caa('0x5a')](_['pick'](_0x1acde9[_0x0caa('0x45')],_0x2f752e['filters']));if(_0x1acde9[_0x0caa('0x45')][_0x0caa('0x33')]){_0x451dda[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0x451dda[_0x0caa('0x44')],{'$or':_['map'](_0x451dda['attributes'],function(_0x184a7e){var _0x45e5ec={};_0x45e5ec[_0x184a7e]={'$like':'%'+_0x1acde9['query'][_0x0caa('0x33')]+'%'};return _0x45e5ec;})});}_0x451dda=_[_0x0caa('0x5d')]({},_0x451dda,_0x1acde9[_0x0caa('0x5e')]);return _0x328f30[_0x0caa('0x15d')](_0x451dda);}})[_0x0caa('0x15')](function(_0x56663d){if(_0x56663d){_0x8b30f1=_0x56663d[_0x0caa('0x50')];if(!_0x1acde9[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x451dda[_0x0caa('0x25')]=qs['limit'](_0x1acde9[_0x0caa('0x45')]['limit']);_0x451dda['offset']=qs['offset'](_0x1acde9['query'][_0x0caa('0x23')]);}return _0x328f30[_0x0caa('0x15d')](_0x451dda);}})['then'](function(_0x49d6ec){if(_0x49d6ec){return _0x49d6ec?{'count':_0x8b30f1,'rows':_0x49d6ec}:null;}})['then'](respondWithResult(_0x41642e,null))[_0x0caa('0x1f')](handleError(_0x41642e,null));};exports[_0x0caa('0x15e')]=function(_0x242703,_0x148445){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x242703[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x148445,null))['then'](function(_0x944b3e){if(_0x944b3e){return _0x944b3e[_0x0caa('0x15e')](_0x242703[_0x0caa('0x61')][_0x0caa('0x65')],_[_0x0caa('0x66')](_0x242703[_0x0caa('0x61')],[_0x0caa('0x65'),'id'])||{});}})[_0x0caa('0x15')](respondWithResult(_0x148445,null))['catch'](handleError(_0x148445,null));};exports[_0x0caa('0x15f')]=function(_0xfc2c55,_0x5b6347){return db['User'][_0x0caa('0x37')]({'where':{'id':_0xfc2c55[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x5b6347,null))['then'](function(_0x563bfe){if(_0x563bfe){return _0x563bfe[_0x0caa('0x15f')](_0xfc2c55[_0x0caa('0x45')][_0x0caa('0x65')]);}})[_0x0caa('0x15')](respondWithStatusCode(_0x5b6347,null))['catch'](handleError(_0x5b6347,null));};exports['getScheduledCalls']=function(_0x495b19,_0x5d2ad0){var _0xbb05e4={},_0x20baaa={},_0x1d1c16={'count':0x0,'rows':[]};var _0x21454a=db[_0x0caa('0x160')][_0x0caa('0x3e')];_0x20baaa[_0x0caa('0x58')]=_['keys'](_0x21454a);_0x20baaa[_0x0caa('0x45')]=_[_0x0caa('0xd3')](_0x495b19[_0x0caa('0x45')]);_0x20baaa['filters']=_['intersection'](_0x20baaa[_0x0caa('0x58')],_0x20baaa[_0x0caa('0x45')]);_0x20baaa[_0x0caa('0x5a')]=_[_0x0caa('0xd1')](_0x20baaa[_0x0caa('0x5a')],[_0x0caa('0x161'),'$or',_0x0caa('0x162'),_0x0caa('0x163'),_0x0caa('0x164'),_0x0caa('0x165'),_0x0caa('0x166'),'$eq',_0x0caa('0x167'),_0x0caa('0x168'),_0x0caa('0x169'),_0x0caa('0x16a'),_0x0caa('0x16b'),'$like',_0x0caa('0x16c'),'$iLike',_0x0caa('0x16d'),'$like',_0x0caa('0x16e'),_0x0caa('0x16f'),_0x0caa('0x170'),'$any']);_0xbb05e4['attributes']=_[_0x0caa('0x5b')](_0x20baaa[_0x0caa('0x58')],qs[_0x0caa('0x5c')](_0x495b19['query'][_0x0caa('0x5c')]));_0xbb05e4['attributes']=_0xbb05e4[_0x0caa('0x4b')][_0x0caa('0x50')]?_0xbb05e4[_0x0caa('0x4b')]:_0x20baaa[_0x0caa('0x58')];if(!_0x495b19[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0xbb05e4[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x495b19[_0x0caa('0x45')][_0x0caa('0x25')]);_0xbb05e4['offset']=qs[_0x0caa('0x23')](_0x495b19[_0x0caa('0x45')][_0x0caa('0x23')]);}_0xbb05e4[_0x0caa('0xd5')]=qs[_0x0caa('0xd6')](_0x495b19[_0x0caa('0x45')]['sort']);_0xbb05e4['where']=qs[_0x0caa('0x5a')](_['pick'](_0x495b19[_0x0caa('0x45')],_0x20baaa[_0x0caa('0x5a')]));if(_0x495b19[_0x0caa('0x45')][_0x0caa('0x33')]){_0xbb05e4[_0x0caa('0x44')]=_[_0x0caa('0x5d')](_0xbb05e4[_0x0caa('0x44')],{'$or':_[_0x0caa('0x35')](_0xbb05e4[_0x0caa('0x4b')],function(_0x2d4835){var _0x51e649={};_0x51e649[_0x2d4835]={'$like':'%'+_0x495b19['query'][_0x0caa('0x33')]+'%'};return _0x51e649;})});}_0xbb05e4[_0x0caa('0x44')]={'$and':[_0xbb05e4[_0x0caa('0x44')],{'$or':[{'UserId':_0x495b19['params']['id']},{'OwnerId':_0x495b19[_0x0caa('0x62')]['id']}]}]};_0xbb05e4=_[_0x0caa('0x5d')]({},_0xbb05e4,_0x495b19[_0x0caa('0x5e')]);var _0x4e217d={'where':_0xbb05e4[_0x0caa('0x44')]};return db[_0x0caa('0x160')][_0x0caa('0x26')](_0x4e217d)[_0x0caa('0x15')](function(_0x4556f1){_0x1d1c16[_0x0caa('0x26')]=_0x4556f1;if(_0x495b19[_0x0caa('0x45')]['includeAll']){_0xbb05e4['include']=[{'attributes':['id','firstName',_0x0caa('0x171'),_0x0caa('0xf6')],'model':db['CmContact'],'as':_0x0caa('0x172')},{'attributes':['id','name',_0x0caa('0x173')],'model':db[_0x0caa('0xb2')],'as':_0x0caa('0xe1')}];}return db[_0x0caa('0x160')][_0x0caa('0x4d')](_0xbb05e4);})[_0x0caa('0x15')](function(_0x13f0c2){_0x1d1c16[_0x0caa('0x4e')]=_0x13f0c2;return _0x1d1c16;})[_0x0caa('0x15')](respondWithFilteredResult(_0x5d2ad0,_0xbb05e4))[_0x0caa('0x1f')](handleError(_0x5d2ad0,null));};exports[_0x0caa('0x174')]=function(_0x1a2997,_0x1b210e){if(!_['isNil'](_0x1a2997['user']['id'])&&(_0x1a2997['user'][_0x0caa('0x2c')]==_0x0caa('0x2d')||_0x1a2997[_0x0caa('0x2f')]['role']==_0x0caa('0x2f'))){return db[_0x0caa('0x3d')][_0x0caa('0x9f')]({'where':{'id':_0x1a2997[_0x0caa('0x62')]['id']},'raw':!![]})[_0x0caa('0x15')](function(_0xbecf99){return authService['retrieveApiKey'](_0xbecf99);})['then'](function(_0x5db5e1){if(_0x5db5e1){return _0x1b210e[_0x0caa('0x21')](0xc8)['json']({'api_key':_0x5db5e1[_0x0caa('0x175')]});}else{return _0x1b210e[_0x0caa('0x21')](0xcc)[_0x0caa('0x22')]({'message':_0x0caa('0x176')});}})['catch'](handleError(_0x1b210e,0x193));}else{return _0x1b210e[_0x0caa('0x21')](0x191)[_0x0caa('0x22')]({'message':_0x0caa('0x177')});}};exports[_0x0caa('0x178')]=function(_0xff6c7e,_0x418062){if(!_[_0x0caa('0x71')](_0xff6c7e[_0x0caa('0x2f')]['id'])&&(_0xff6c7e[_0x0caa('0x2f')][_0x0caa('0x2c')]==_0x0caa('0x2d')||_0xff6c7e[_0x0caa('0x2f')][_0x0caa('0x2c')]=='user')){return db[_0x0caa('0x3d')]['find']({'where':{'id':_0xff6c7e['params']['id']}})[_0x0caa('0x15')](function(_0xb8d0b4){return authService['generateApiKey'](_0xb8d0b4);})['then'](function(_0x548ba5){return db['User'][_0x0caa('0x28')]({'apiKeyIat':_0x548ba5[_0x0caa('0x179')],'apiKeyNonce':_0x548ba5[_0x0caa('0x17a')]},{'where':{'id':_0xff6c7e[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](function(){return _0x418062[_0x0caa('0x21')](0xc8)[_0x0caa('0x22')]({'api_key':_0x548ba5[_0x0caa('0x175')]});});})[_0x0caa('0x1f')](handleError(_0x418062,0x193));}else{return _0x418062[_0x0caa('0x21')](0x191)[_0x0caa('0x22')]({'message':_0x0caa('0x177')});}};exports['removeApiKey']=function(_0x225e67,_0x3dec59){if(!_[_0x0caa('0x71')](_0x225e67['user']['id'])&&(_0x225e67['user'][_0x0caa('0x2c')]=='admin'||_0x225e67[_0x0caa('0x2f')][_0x0caa('0x2c')]=='user')){return db[_0x0caa('0x3d')][_0x0caa('0x37')]({'where':{'id':_0x225e67[_0x0caa('0x62')]['id']}})[_0x0caa('0x15')](handleEntityNotFound(_0x3dec59,null))[_0x0caa('0x15')](function(_0x19015b){if(_0x19015b&&_0x19015b['apiKeyNonce']&&_0x19015b[_0x0caa('0x17b')])return _0x19015b;else throw{'message':_0x0caa('0x17c')};})[_0x0caa('0x15')](function(){return db[_0x0caa('0x3d')][_0x0caa('0x28')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x225e67[_0x0caa('0x62')]['id']}});})[_0x0caa('0x15')](respondWithStatusCode(_0x3dec59,0xc8))[_0x0caa('0x1f')](handleError(_0x3dec59,0x193));}else{return _0x3dec59[_0x0caa('0x21')](0x191)[_0x0caa('0x22')]({'message':_0x0caa('0x177')});}};exports[_0x0caa('0x17d')]=function(_0x418854,_0x2f940d){var _0xcf7d81=_0x418854[_0x0caa('0x2f')]['get']({'plain':!![]});if(!_0xcf7d81){return _0x2f940d[_0x0caa('0x21')](0x191)[_0x0caa('0x3b')](_0x0caa('0x17e'));}else{Promise[_0x0caa('0x10d')]()[_0x0caa('0x15')](function(){if(_0x418854[_0x0caa('0x45')][_0x0caa('0x48')]!=='true')return;return _0x418854[_0x0caa('0x2f')]['getUserSetting']();})['then'](function(_0xf50fc4){if(!_0xf50fc4)return;return _0xf50fc4[_0x0caa('0x2b')]({'plain':!![]});})[_0x0caa('0x15')](function(_0x2d6b82){_0xcf7d81[_0x0caa('0x48')]=_0x2d6b82;return _0x2f940d[_0x0caa('0x21')](0xc8)[_0x0caa('0x22')](_0xcf7d81);});}};exports[_0x0caa('0x17f')]=function(_0x13457e,_0x4d46d1){var _0x38fd33={'offset':0x0},_0x41e5df={'count':0x0,'rows':[]};Promise[_0x0caa('0x10d')]()[_0x0caa('0x15')](function(){if(!_0x13457e[_0x0caa('0x45')][_0x0caa('0x33')]&&!_0x13457e[_0x0caa('0x45')][_0x0caa('0x180')]&&!_0x13457e[_0x0caa('0x45')][_0x0caa('0x181')])return[];return Promise[_0x0caa('0x10d')]()[_0x0caa('0x15')](function(){var _0x3e6b54=[];if(!_[_0x0caa('0x94')](_0x13457e[_0x0caa('0x45')]['teams'])){_0x3e6b54[_0x0caa('0x4c')](db[_0x0caa('0x11d')]['findAll']({'attributes':['id','name'],'where':{'id':_0x13457e[_0x0caa('0x45')][_0x0caa('0x180')]}}));}if(!_[_0x0caa('0x94')](_0x13457e[_0x0caa('0x45')]['queues'])){_0x3e6b54[_0x0caa('0x4c')](db[_0x0caa('0xb2')][_0x0caa('0x4d')]({'attributes':['id',_0x0caa('0x3a')],'type':'inbound','where':{'id':_0x13457e[_0x0caa('0x45')][_0x0caa('0x181')]}}));}return Promise[_0x0caa('0x56')](_0x3e6b54);})[_0x0caa('0x15')](function(_0x59aad6){var _0x504bbe=_[_0x0caa('0x182')](_0x59aad6)[_0x0caa('0x35')](function(_0x4e4b87){return _0x4e4b87['getAgents']({'attributes':['id',_0x0caa('0x3a'),_0x0caa('0x67'),_0x0caa('0xa6')],'raw':!![]});});return Promise['all'](_0x504bbe);})[_0x0caa('0x15')](function(_0xb27607){var _0x2db0ba=_[_0x0caa('0x182')](_0xb27607);if(!_0x13457e[_0x0caa('0x45')][_0x0caa('0x33')])return _0x2db0ba;if(_['isEmpty'](_0x2db0ba)){return db[_0x0caa('0x3d')]['findAll']({'attributes':['id',_0x0caa('0x3a'),_0x0caa('0x67'),_0x0caa('0xa6')],'where':{'role':_0x0caa('0x31'),'$or':[db[_0x0caa('0x6d')]['where'](db[_0x0caa('0x6d')]['fn']('lower',db[_0x0caa('0x6d')][_0x0caa('0x183')](_0x0caa('0x3a'))),{'$like':'%'+_0x13457e[_0x0caa('0x45')][_0x0caa('0x33')][_0x0caa('0xac')]()+'%'}),{'internal':{'$like':'%'+_0x13457e[_0x0caa('0x45')][_0x0caa('0x33')]+'%'}}]},'raw':!![]});}else{return _(_0x2db0ba)['flatten']()[_0x0caa('0x33')](function(_0x166940){return _0x166940['name'][_0x0caa('0xac')]()[_0x0caa('0x36')](_0x13457e[_0x0caa('0x45')][_0x0caa('0x33')][_0x0caa('0xac')]())||_0x166940[_0x0caa('0x67')]['toString']()[_0x0caa('0x36')](_0x13457e[_0x0caa('0x45')][_0x0caa('0x33')]);})['value']();}})[_0x0caa('0x15')](function(_0x6453fa){var _0x1cfbd9=_0x0caa('0x3a');var _0x515823=_0x0caa('0x184');if(_0x13457e['query'][_0x0caa('0xd6')]){_0x515823=_0x13457e['query'][_0x0caa('0xd6')][0x0]==='-'?_0x0caa('0x185'):_0x0caa('0x184');_0x1cfbd9=_0x515823===_0x0caa('0x184')?_0x13457e['query'][_0x0caa('0xd6')]:_0x13457e['query'][_0x0caa('0xd6')]['substring'](0x1);}return _(_0x6453fa)[_0x0caa('0x186')]('id')[_0x0caa('0x187')]([function(_0x2a5657){return _0x1cfbd9===_0x0caa('0x3a')?_0x2a5657[_0x1cfbd9]['toLowerCase']():_0x2a5657[_0x1cfbd9];}],[_0x515823])[_0x0caa('0x35')](function(_0x201718){return _[_0x0caa('0xd7')](_0x201718,['id','name',_0x0caa('0x67'),_0x0caa('0xa6')]);})[_0x0caa('0x38')]();})[_0x0caa('0x15')](function(_0x39bb2e){return amiClient[_0x0caa('0x14')](_0x0caa('0x30'),_0x13457e)[_0x0caa('0x15')](function(_0x25941d){if(_0x25941d[_0x0caa('0x1c')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x3c0795=_0x25941d[_0x0caa('0x1e')];var _0x50f617=jayson[_0x0caa('0x12')][_0x0caa('0x13')]({'port':0x232c});return _0x50f617[_0x0caa('0x14')]('Agents',_0x13457e)['then'](function(_0x285d83){if(_0x285d83['error'])throw new Error(_0x0caa('0x188'));var _0xaaedf7=_0x285d83[_0x0caa('0x1e')];return _[_0x0caa('0x5d')]({},_0xaaedf7,_0x3c0795);});})['then'](function(_0x8da41a){return _[_0x0caa('0x35')](_0x39bb2e,function(_0x120a57){var _0x1c8a24=_[_0x0caa('0x37')](_0x8da41a[_0x0caa('0x4e')],['id',_0x120a57['id']]);if(!_0x1c8a24||!_0x120a57[_0x0caa('0xa6')]){_0x120a57[_0x0caa('0x21')]=_0x0caa('0x189');}else if(_0x1c8a24[_0x0caa('0xa8')]){_0x120a57[_0x0caa('0x21')]=_0x0caa('0x10e');}else{_0x120a57[_0x0caa('0x21')]=_[_0x0caa('0x36')](['idle',_0x0caa('0x18a'),_0x0caa('0x18b'),_0x0caa('0x18c'),null,undefined],_0x1c8a24[_0x0caa('0x18d')])?'online':_0x0caa('0x18e');}return _0x120a57;});});});})[_0x0caa('0x15')](function(_0x45f1a4){if(!_0x13457e[_0x0caa('0x45')][_0x0caa('0xde')](_0x0caa('0xdf'))){_0x38fd33[_0x0caa('0x25')]=qs[_0x0caa('0x25')](_0x13457e[_0x0caa('0x45')]['limit']||0xa);_0x38fd33[_0x0caa('0x23')]=qs[_0x0caa('0x23')](_0x13457e[_0x0caa('0x45')][_0x0caa('0x23')]);}_0x41e5df['count']=_0x45f1a4['length'];_0x41e5df['rows']=_0x38fd33['limit']?_0x45f1a4['slice'](_0x38fd33[_0x0caa('0x23')],_0x38fd33['offset']+_0x38fd33[_0x0caa('0x25')]):_0x45f1a4;return _0x41e5df;})['then'](respondWithFilteredResult(_0x4d46d1,_0x38fd33))['catch'](handleError(_0x4d46d1,null));};function get_open_tabs(_0x2701a1,_0x18bcc6){var _0x18322e=_0x2701a1['charAt'](0x0)[_0x0caa('0x18f')]()+_0x2701a1[_0x0caa('0x190')](0x1);var _0x4a58f2={'type':db[_0x0caa('0x97')]['QueryTypes'][_0x0caa('0x70')],'raw':!![]};return new Promise(function(_0x29d813,_0x5ad75b){var _0x301cdc=squel[_0x0caa('0x191')]()['field']('ui.'+_0x18322e+_0x0caa('0x192'),'id')[_0x0caa('0x193')](_0x0caa('0x194'))['from'](_0x0caa('0x195')+_0x2701a1+_0x0caa('0x196'),'ui')['where'](_0x0caa('0x197'),_0x18bcc6['id']);return db[_0x0caa('0x6d')][_0x0caa('0x45')](_0x301cdc['toString'](),_0x4a58f2)[_0x0caa('0x15')](function(_0x12e6a9){_0x18bcc6[_0x18322e+'OpenTabs']=_0x12e6a9;_0x29d813(_0x12e6a9);})[_0x0caa('0x1f')](function(_0x4dc5e3){_0x5ad75b(_0x4dc5e3);});});}
\ No newline at end of file
index 99dded9..a8a0601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6357=['hook','exports','events','../../mysqldb','User','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x319604,_0x37a666){var _0x27a95c=function(_0x565f9b){while(--_0x565f9b){_0x319604['push'](_0x319604['shift']());}};_0x27a95c(++_0x37a666);}(_0x6357,0x84));var _0x7635=function(_0x1e8c4e,_0x4b6ba5){_0x1e8c4e=_0x1e8c4e-0x0;var _0x19088a=_0x6357[_0x1e8c4e];return _0x19088a;};'use strict';var EventEmitter=require(_0x7635('0x0'));var User=require(_0x7635('0x1'))['db'][_0x7635('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x7635('0x3')](0x0);var events={'afterCreate':_0x7635('0x4'),'afterUpdate':'update','afterDestroy':_0x7635('0x5')};function emitEvent(_0x58a7b4){return function(_0x356e66,_0x4db3af,_0x595c51){UserEvents[_0x7635('0x6')](_0x58a7b4+':'+_0x356e66['id'],_0x356e66);UserEvents[_0x7635('0x6')](_0x58a7b4,_0x356e66);_0x595c51(null);};}for(var e in events){if(events[_0x7635('0x7')](e)){var event=events[e];User[_0x7635('0x8')](e,emitEvent(event));}}module[_0x7635('0x9')]=UserEvents;
\ No newline at end of file
+var _0xa496=['User','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x39c0a3,_0x4b6041){var _0x1c94af=function(_0x2f5b91){while(--_0x2f5b91){_0x39c0a3['push'](_0x39c0a3['shift']());}};_0x1c94af(++_0x4b6041);}(_0xa496,0xa8));var _0x6a49=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa496[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var User=require('../../mysqldb')['db'][_0x6a49('0x0')];var UserEvents=new EventEmitter();UserEvents[_0x6a49('0x1')](0x0);var events={'afterCreate':_0x6a49('0x2'),'afterUpdate':'update','afterDestroy':_0x6a49('0x3')};function emitEvent(_0x389287){return function(_0xc47191,_0x5c14eb,_0x310e5d){UserEvents[_0x6a49('0x4')](_0x389287+':'+_0xc47191['id'],_0xc47191);UserEvents[_0x6a49('0x4')](_0x389287,_0xc47191);_0x310e5d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x6a49('0x5')](e,emitEvent(event));}}module[_0x6a49('0x6')]=UserEvents;
\ No newline at end of file
index 6e83bc2..33ab378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7edb=['userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','provider','makeSalt',':asterisk:','md5secret','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','manual','voice','message','update','MemberReport','isArray','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','chatPause','faxPause','whatsappPause','Pause','getRealtimeData','../../config/utils','getChannels','Status','setDataValue','crypto','util','md5','moment','lodash','./user.attributes','length','context','from-sip','system','format','%s%s','prefix','push','merge','CDR(type)=%s','chanspy','record','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','WAV','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','then','internal','concat','models','define','User','users','utf8','userProfileId','undefined','resolve','UserProfile','privacyEnabled','updateMd5Password','updatePassword','catch','find','changed'];(function(_0x297269,_0x568256){var _0x4ba584=function(_0x5869df){while(--_0x5869df){_0x297269['push'](_0x297269['shift']());}};_0x4ba584(++_0x568256);}(_0x7edb,0x158));var _0xb7ed=function(_0x5218b2,_0x1d610c){_0x5218b2=_0x5218b2-0x0;var _0x31ab18=_0x7edb[_0x5218b2];return _0x31ab18;};'use strict';var BPromise=require('bluebird');var crypto=require(_0xb7ed('0x0'));var util=require(_0xb7ed('0x1'));var md5=require(_0xb7ed('0x2'));var moment=require(_0xb7ed('0x3'));var _=require(_0xb7ed('0x4'));var jayson=require('jayson/promise');var attributes=require(_0xb7ed('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x4c8316){return _0x4c8316&&_0x4c8316[_0xb7ed('0x6')];};var getChanSpyApplications=function(_0x3ba4b9,_0x2aa67d,_0x246cfa){var _0x85fdf0={'context':_0x3ba4b9[_0xb7ed('0x7')]||_0xb7ed('0x8'),'type':_0xb7ed('0x9'),'isApp':![],'UserId':_0x3ba4b9['id']};var _0x3aee5b=[];for(var _0x25e52c=0x0,_0x56c397=0x1;_0x25e52c<_0x246cfa[_0xb7ed('0x6')];_0x25e52c++,_0x56c397=0x1){var _0x261e4e={'exten':util[_0xb7ed('0xa')](_0xb7ed('0xb'),_0x246cfa[_0x25e52c][_0xb7ed('0xc')],_0x2aa67d),'ChanSpyId':_0x246cfa[_0x25e52c]['id']};_0x3aee5b[_0xb7ed('0xd')](_[_0xb7ed('0xe')]({'app':'Set','appdata':util[_0xb7ed('0xa')](_0xb7ed('0xf'),_0xb7ed('0x10')),'priority':_0x56c397++},_0x85fdf0,_0x261e4e));if(_0x246cfa[_0x25e52c][_0xb7ed('0x11')]){_0x3aee5b[_0xb7ed('0xd')](_['merge']({'app':'MixMonitor','appdata':util[_0xb7ed('0xa')]('${UNIQUEID}.%s,a',_0x246cfa[_0x25e52c][_0xb7ed('0x12')]),'priority':_0x56c397++},_0x85fdf0,_0x261e4e));}if(_0x246cfa[_0x25e52c][_0xb7ed('0x13')]){_0x3aee5b[_0xb7ed('0xd')](_[_0xb7ed('0xe')]({'app':_0xb7ed('0x14'),'appdata':_0x246cfa[_0x25e52c][_0xb7ed('0x15')],'priority':_0x56c397++},_0x85fdf0,_0x261e4e));}_0x3aee5b[_0xb7ed('0xd')](_[_0xb7ed('0xe')]({'app':_0xb7ed('0x16'),'appdata':util[_0xb7ed('0xa')](_0xb7ed('0x17'),_0x3ba4b9[_0xb7ed('0x18')],_0x246cfa[_0x25e52c]['options']?_0x246cfa[_0x25e52c][_0xb7ed('0x19')]['join'](''):''),'priority':_0x56c397++},_0x85fdf0,_0x261e4e));if(_0x246cfa[_0x25e52c][_0xb7ed('0x11')]){_0x3aee5b[_0xb7ed('0xd')](_['merge']({'app':'StopMixMonitor','priority':_0x56c397++},_0x85fdf0,_0x261e4e));}}return _0x3aee5b;};var getUserApplications=function(_0x11e27f,_0x12ff48){var _0x6b0bf5=['wav',_0xb7ed('0x1a'),_0xb7ed('0x1b')];var _0xa5c636={'context':_0x11e27f[_0xb7ed('0x7')]||'from-sip','exten':_0x12ff48,'type':_0xb7ed('0x9'),'isApp':![],'UserId':_0x11e27f['id']};var _0x2a36e4=[{'app':_0xb7ed('0x1c'),'appdata':_0xb7ed('0x1d')}];if(_0x11e27f[_0xb7ed('0x1e')]&&_[_0xb7ed('0x1f')](_0x6b0bf5,_0x11e27f[_0xb7ed('0x1e')])){_0x2a36e4[_0xb7ed('0xd')]({'app':'Set','appdata':_0xb7ed('0x20')});_0x2a36e4[_0xb7ed('0xd')]({'app':'Set','appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x11e27f[_0xb7ed('0x1e')])});_0x2a36e4['push']({'app':'Dial','appdata':util[_0xb7ed('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x11e27f[_0xb7ed('0x18')])});}else{_0x2a36e4['push']({'app':_0xb7ed('0x21'),'appdata':util[_0xb7ed('0xa')](_0xb7ed('0x22'),_0x11e27f[_0xb7ed('0x18')])});}_0x2a36e4[_0xb7ed('0xd')]({'app':'Hangup'});for(var _0x578ac0=0x0;_0x578ac0<_0x2a36e4[_0xb7ed('0x6')];_0x578ac0++){_0x2a36e4[_0x578ac0][_0xb7ed('0x23')]=_0x578ac0+0x1;_0x2a36e4[_0x578ac0]=_[_0xb7ed('0x24')](_0x2a36e4[_0x578ac0],_0xa5c636);}return _0x2a36e4;};var getChanSpyPromise=function(_0x34a12d,_0x2f726c){return new BPromise(function(_0x59b080,_0x2ef587){return _0x34a12d[_0xb7ed('0x25')]['findAll']()[_0xb7ed('0x26')](function(_0x880890){if(_0x880890){var _0x415aa3=getChanSpyApplications(_0x2f726c,_0x2f726c['internal'],_0x880890);if(_0x2f726c[_0xb7ed('0x27')]!=_0x2f726c[_0xb7ed('0x18')]){_0x415aa3=_0x415aa3[_0xb7ed('0x28')](getChanSpyApplications(_0x2f726c,_0x2f726c[_0xb7ed('0x18')],_0x880890));}return _0x59b080(_0x415aa3);}return _0x59b080([]);})['catch'](function(_0x2308d2){_0x2ef587(_0x2308d2);});});};module['exports']=function(_0x108b9a){var _0x18e213=_0x108b9a[_0xb7ed('0x29')];return _0x108b9a[_0xb7ed('0x2a')](_0xb7ed('0x2b'),attributes,{'tableName':_0xb7ed('0x2c'),'charset':_0xb7ed('0x2d'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x2ff290,_0x4baedc,_0x461f6b){var _0x51267e=typeof _0x2ff290[_0xb7ed('0x2e')]===_0xb7ed('0x2f')?BPromise[_0xb7ed('0x30')](null):_0x18e213[_0xb7ed('0x31')]['find']({'where':{'id':_0x2ff290[_0xb7ed('0x2e')]}});_0x51267e[_0xb7ed('0x26')](function(_0x19215b){if(_0x19215b){_0x2ff290[_0xb7ed('0x32')]=_0x19215b[_0xb7ed('0x32')];}})['then'](function(){_0x2ff290[_0xb7ed('0x33')]();_0x2ff290[_0xb7ed('0x34')](_0x461f6b);})[_0xb7ed('0x35')](function(_0xd02f82){_0x461f6b(_0xd02f82);});},'beforeUpdate':function(_0x76571d,_0x366056,_0x43196e){Promise[_0xb7ed('0x30')]()[_0xb7ed('0x26')](function(){if(_0x76571d['changed'](_0xb7ed('0x2e'))===![])return;return _0x18e213['UserProfile'][_0xb7ed('0x36')]({'where':{'id':_0x76571d[_0xb7ed('0x2e')]}})[_0xb7ed('0x26')](function(_0x5566b3){if(_0x5566b3)_0x76571d[_0xb7ed('0x32')]=_0x5566b3[_0xb7ed('0x32')];return;});})[_0xb7ed('0x26')](function(){if(_0x76571d[_0xb7ed('0x37')](_0xb7ed('0x15'))){_0x76571d[_0xb7ed('0x33')]();return _0x76571d['updatePassword'](_0x43196e);}_0x43196e();})['catch'](function(_0x25e5b0){_0x43196e(_0x25e5b0);});},'afterCreate':function(_0x591691,_0x1b141d,_0x16cb00){var _0x5c68c8=getUserApplications(_0x591691,_0x591691['internal']);if(_0x591691[_0xb7ed('0x27')]!=_0x591691[_0xb7ed('0x18')]){_0x5c68c8=_0x5c68c8['concat'](getUserApplications(_0x591691,_0x591691[_0xb7ed('0x18')]));}return Promise['resolve']()[_0xb7ed('0x26')](function(){if(!_0x591691[_0xb7ed('0x38')]){return _0x591691[_0xb7ed('0x39')]({'clientSideLoggingLevel':_0xb7ed('0x3a'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x18e213[_0xb7ed('0x3b')][_0xb7ed('0x3c')](_0x5c68c8);})['then'](function(){if(_0x591691[_0xb7ed('0x10')]){return getChanSpyPromise(_0x18e213,_0x591691);}})[_0xb7ed('0x26')](function(_0x308c8e){if(_0x308c8e&&_0x308c8e[_0xb7ed('0x6')]){return _0x18e213['VoiceExtension'][_0xb7ed('0x3c')](_0x308c8e);}})[_0xb7ed('0x26')](function(){_0x16cb00();})[_0xb7ed('0x35')](function(_0x17ec05){_0x16cb00(_0x17ec05);});},'afterUpdate':function(_0x3a640e,_0x26ef75,_0x437e9b){return BPromise['resolve']()[_0xb7ed('0x26')](function(){if(_0x3a640e[_0xb7ed('0x37')]('chanspy')||_0x3a640e[_0xb7ed('0x37')]('context')){return _0x18e213['VoiceExtension']['destroy']({'where':{'UserId':_0x3a640e['id'],'type':_0xb7ed('0x9'),'ChanSpyId':{'$ne':null}}})[_0xb7ed('0x26')](function(){if(_0x3a640e[_0xb7ed('0x10')]){return getChanSpyPromise(_0x18e213,_0x3a640e)[_0xb7ed('0x26')](function(_0x5587c2){if(_0x5587c2&&_0x5587c2[_0xb7ed('0x6')]){return _0x18e213[_0xb7ed('0x3b')][_0xb7ed('0x3c')](_0x5587c2);}});}});}})[_0xb7ed('0x26')](function(){if(_0x3a640e['changed'](_0xb7ed('0x1e'))||_0x3a640e[_0xb7ed('0x37')](_0xb7ed('0x7'))){return _0x18e213[_0xb7ed('0x3b')][_0xb7ed('0x3d')]({'where':{'UserId':_0x3a640e['id'],'type':'system','ChanSpyId':null}})[_0xb7ed('0x26')](function(){var _0x36ac87=getUserApplications(_0x3a640e,_0x3a640e[_0xb7ed('0x27')]);if(_0x3a640e[_0xb7ed('0x27')]!=_0x3a640e[_0xb7ed('0x18')]){_0x36ac87=_0x36ac87[_0xb7ed('0x28')](getUserApplications(_0x3a640e,_0x3a640e[_0xb7ed('0x18')]));}return _0x18e213['VoiceExtension'][_0xb7ed('0x3c')](_0x36ac87);});}})['then'](function(){_0x437e9b();})[_0xb7ed('0x35')](function(_0x499daf){_0x437e9b(_0x499daf);});},'afterDestroy':function(_0x5ecf36){return _0x18e213[_0xb7ed('0x3b')][_0xb7ed('0x3d')]({'where':{'UserId':_0x5ecf36['id'],'type':_0xb7ed('0x9')}});}},'instanceMethods':{'authenticate':function(_0x43b19d,_0x4b8625){if(!_0x4b8625){return this[_0xb7ed('0x15')]===this['encryptPassword'](_0x43b19d);}var _0x4d6fed=this;this[_0xb7ed('0x3e')](_0x43b19d,function(_0x186284,_0x8c5408){if(_0x186284){_0x4b8625(_0x186284);}if(_0x4d6fed[_0xb7ed('0x15')]===_0x8c5408){_0x4b8625(null,!![]);}else{_0x4b8625(null,![]);}});},'makeSalt':function(_0x30626a,_0x314b29){var _0x356c15=0x10;if(typeof arguments[0x0]===_0xb7ed('0x3f')){_0x314b29=arguments[0x0];_0x30626a=_0x356c15;}else if(typeof arguments[0x1]==='function'){_0x314b29=arguments[0x1];}else{throw new Error(_0xb7ed('0x40'));}if(!_0x30626a){_0x30626a=_0x356c15;}return crypto[_0xb7ed('0x41')](_0x30626a,function(_0x4b9136,_0x7420e4){if(_0x4b9136){_0x314b29(_0x4b9136);}return _0x314b29(null,_0x7420e4[_0xb7ed('0x42')](_0xb7ed('0x43')));});},'encryptPassword':function(_0x491428,_0x35e06a){if(!_0x491428||!this['salt']){return _0x35e06a?_0x35e06a(null):null;}var _0x4624b3=0x2710;var _0x5b69c3=0x40;var _0x30c70f=Buffer['from'](this[_0xb7ed('0x44')],'base64');if(!_0x35e06a){return crypto[_0xb7ed('0x45')](_0x491428,_0x30c70f,_0x4624b3,_0x5b69c3,_0xb7ed('0x46'))[_0xb7ed('0x42')](_0xb7ed('0x43'));}return crypto[_0xb7ed('0x47')](_0x491428,_0x30c70f,_0x4624b3,_0x5b69c3,_0xb7ed('0x46'),function(_0x20582e,_0x2a142a){if(_0x20582e){_0x35e06a(_0x20582e);}return _0x35e06a(null,_0x2a142a[_0xb7ed('0x42')](_0xb7ed('0x43')));});},'updatePassword':function(_0x51925c){if(!this[_0xb7ed('0x15')]){return _0x51925c(null);}if(!validatePresenceOf(this[_0xb7ed('0x15')])&&authTypes['indexOf'](this[_0xb7ed('0x48')])===-0x1){_0x51925c(new Error('Invalid\x20password'));}var _0x24ec5c=this;this[_0xb7ed('0x49')](function(_0x461c26,_0x3944ba){if(_0x461c26){return _0x51925c(_0x461c26);}_0x24ec5c[_0xb7ed('0x44')]=_0x3944ba;_0x24ec5c[_0xb7ed('0x3e')](_0x24ec5c[_0xb7ed('0x15')],function(_0x3788f3,_0x11f036){if(_0x3788f3){_0x51925c(_0x3788f3);}_0x24ec5c['password']=_0x11f036;_0x51925c(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xb7ed('0x18')]+_0xb7ed('0x4a')+this[_0xb7ed('0x15')]);return this[_0xb7ed('0x4b')];},'getRealtimeData':function(){var _0x496018={'id':this['id']};var _0x5ce7fa=jayson[_0xb7ed('0x4c')]['http']({'port':0x232a});var _0xabd50b=jayson['client'][_0xb7ed('0x4d')]({'port':0x232c});var _0x1eb2ba={};var _0x54d9db={};return _0x5ce7fa[_0xb7ed('0x4e')](_0xb7ed('0x4f'),_0x496018)[_0xb7ed('0x26')](function(_0x232945){if(_0x232945[_0xb7ed('0x3a')]){throw new Error(_0xb7ed('0x50'));}_0x1eb2ba=_0x232945[_0xb7ed('0x51')];return _0xabd50b['request'](_0xb7ed('0x4f'),_0x496018);})[_0xb7ed('0x26')](function(_0x521d73){if(_0x521d73[_0xb7ed('0x3a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x54d9db=_0x521d73[_0xb7ed('0x51')];var _0x55c0af=_[_0xb7ed('0xe')]({},_0x1eb2ba,_0x54d9db);return _0x55c0af;})[_0xb7ed('0x35')](function(_0x82cd8b){throw _0x82cd8b;});},'unpause':function(_0x465ee5,_0x58e4c3=_0xb7ed('0x52')){var _0x30fbb7=this;var _0xecf1a9={};return Promise[_0xb7ed('0x30')]()[_0xb7ed('0x26')](function(){if(!_0x465ee5||_0x465ee5===_0xb7ed('0x53')&&_0x58e4c3===_0xb7ed('0x52')){var _0x14ff64=jayson[_0xb7ed('0x4c')][_0xb7ed('0x4d')]({'port':0x232a});return _0x14ff64['request']('QueuePause',{'id':_0x30fbb7['id'],'name':_0x30fbb7['name'],'pause':![]})[_0xb7ed('0x26')](function(_0x236b16){if(_0x236b16[_0xb7ed('0x3a')]){throw new Error(util[_0xb7ed('0xa')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x30fbb7['id'],_0x30fbb7[_0xb7ed('0x18')]));}return _0x236b16[_0xb7ed('0x51')][_0xb7ed('0x54')];});}})[_0xb7ed('0x26')](function(){if(!_0x465ee5||_0x465ee5===_0xb7ed('0x53')){return _0x18e213['UserVoiceQueueRt'][_0xb7ed('0x55')]({'paused':0x0},{'where':{'UserId':_0x30fbb7['id']},'individualHooks':!![]});}})[_0xb7ed('0x26')](function(){var _0xbd7986=!_0x465ee5?'findAll':'findOne';var _0x4da684={'membername':_0x30fbb7[_0xb7ed('0x18')],'type':'PAUSE','exitAt':null};if(_0x465ee5){_0x4da684['channel']=_0x465ee5;}return _0x18e213[_0xb7ed('0x56')][_0xbd7986]({'where':_0x4da684});})[_0xb7ed('0x26')](function(_0x11fa4e){if(_0x11fa4e){var _0x38d819=Array[_0xb7ed('0x57')](_0x11fa4e)?_0x11fa4e:[_0x11fa4e];var _0x5aeaa4=_0x38d819['map'](function(_0x5db626){return _0x5db626[_0xb7ed('0x55')]({'exitAt':moment()['format'](_0xb7ed('0x58')),'data2':_0x58e4c3});});return Promise[_0xb7ed('0x59')](_0x5aeaa4);}})[_0xb7ed('0x26')](function(){if(!_0x465ee5){_0xecf1a9[_0xb7ed('0x5a')]=![];_0xecf1a9['mailPause']=![];_0xecf1a9[_0xb7ed('0x5b')]=![];_0xecf1a9[_0xb7ed('0x5c')]=![];_0xecf1a9['smsPause']=![];_0xecf1a9[_0xb7ed('0x5d')]=![];_0xecf1a9['openchannelPause']=![];}else{_0xecf1a9[_0x465ee5+_0xb7ed('0x5e')]=![];}return _0x30fbb7[_0xb7ed('0x5f')]();})[_0xb7ed('0x26')](function(_0x23afb6){var _0x47a39e=require(_0xb7ed('0x60'));var _0x561c85=_0x47a39e[_0xb7ed('0x61')]();_0x561c85['forEach'](function(_0x4f8b48){var _0x4ad4ca=_0x4f8b48+_0xb7ed('0x62');_0x30fbb7[_0xb7ed('0x63')]([_0x4ad4ca],_0x23afb6[_0x4ad4ca]);});return _0x30fbb7['update'](_0xecf1a9);})[_0xb7ed('0x35')](function(_0x1af537){throw _0x1af537;});}}});};
\ No newline at end of file
+var _0xa37e=['function','Missing\x20Callback','randomBytes','toString','salt','from','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','Unable\x20to\x20unpause\x20agent\x20%s:$s','UserVoiceQueueRt','findOne','PAUSE','channel','MemberReport','map','update','YYYY-MM-DD\x20HH:mm:ss','voicePause','mailPause','chatPause','faxPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','setDataValue','util','md5','moment','lodash','./user.attributes','length','system','format','%s%s','merge','Set','chanspy','record','push','MixMonitor','recordingFormat','Authenticate','password','options','join','StopMixMonitor','wav','WAV','gsm','context','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','name','Dial','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','then','internal','concat','exports','models','define','User','utf8','utf8_bin','undefined','UserProfile','find','userProfileId','privacyEnabled','updatePassword','catch','changed','updateMd5Password','resolve','userSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword'];(function(_0x2f2d3e,_0x2c13cb){var _0x4d297f=function(_0x4a8d33){while(--_0x4a8d33){_0x2f2d3e['push'](_0x2f2d3e['shift']());}};_0x4d297f(++_0x2c13cb);}(_0xa37e,0x97));var _0xea37=function(_0x593a46,_0x7b5566){_0x593a46=_0x593a46-0x0;var _0x1ccdb3=_0xa37e[_0x593a46];return _0x1ccdb3;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require(_0xea37('0x0'));var md5=require(_0xea37('0x1'));var moment=require(_0xea37('0x2'));var _=require(_0xea37('0x3'));var jayson=require('jayson/promise');var attributes=require(_0xea37('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0x360ed5){return _0x360ed5&&_0x360ed5[_0xea37('0x5')];};var getChanSpyApplications=function(_0x162ed6,_0x4d380b,_0x57135b){var _0x36c489={'context':_0x162ed6['context']||'from-sip','type':_0xea37('0x6'),'isApp':![],'UserId':_0x162ed6['id']};var _0x1401e1=[];for(var _0x7a16c6=0x0,_0xf5a9e1=0x1;_0x7a16c6<_0x57135b['length'];_0x7a16c6++,_0xf5a9e1=0x1){var _0x315e5f={'exten':util[_0xea37('0x7')](_0xea37('0x8'),_0x57135b[_0x7a16c6]['prefix'],_0x4d380b),'ChanSpyId':_0x57135b[_0x7a16c6]['id']};_0x1401e1['push'](_[_0xea37('0x9')]({'app':_0xea37('0xa'),'appdata':util[_0xea37('0x7')]('CDR(type)=%s',_0xea37('0xb')),'priority':_0xf5a9e1++},_0x36c489,_0x315e5f));if(_0x57135b[_0x7a16c6][_0xea37('0xc')]){_0x1401e1[_0xea37('0xd')](_['merge']({'app':_0xea37('0xe'),'appdata':util[_0xea37('0x7')]('${UNIQUEID}.%s,a',_0x57135b[_0x7a16c6][_0xea37('0xf')]),'priority':_0xf5a9e1++},_0x36c489,_0x315e5f));}if(_0x57135b[_0x7a16c6]['auth']){_0x1401e1[_0xea37('0xd')](_['merge']({'app':_0xea37('0x10'),'appdata':_0x57135b[_0x7a16c6][_0xea37('0x11')],'priority':_0xf5a9e1++},_0x36c489,_0x315e5f));}_0x1401e1[_0xea37('0xd')](_[_0xea37('0x9')]({'app':'ChanSpy','appdata':util[_0xea37('0x7')]('SIP/%s,%s',_0x162ed6['name'],_0x57135b[_0x7a16c6][_0xea37('0x12')]?_0x57135b[_0x7a16c6]['options'][_0xea37('0x13')](''):''),'priority':_0xf5a9e1++},_0x36c489,_0x315e5f));if(_0x57135b[_0x7a16c6][_0xea37('0xc')]){_0x1401e1['push'](_[_0xea37('0x9')]({'app':_0xea37('0x14'),'priority':_0xf5a9e1++},_0x36c489,_0x315e5f));}}return _0x1401e1;};var getUserApplications=function(_0x5427e7,_0x786ee5){var _0x3f5ebc=[_0xea37('0x15'),_0xea37('0x16'),_0xea37('0x17')];var _0x447fcb={'context':_0x5427e7[_0xea37('0x18')]||_0xea37('0x19'),'exten':_0x786ee5,'type':_0xea37('0x6'),'isApp':![],'UserId':_0x5427e7['id']};var _0x3e00cb=[{'app':'Set','appdata':_0xea37('0x1a')}];if(_0x5427e7[_0xea37('0x1b')]&&_[_0xea37('0x1c')](_0x3f5ebc,_0x5427e7['extensionMonitor'])){_0x3e00cb['push']({'app':_0xea37('0xa'),'appdata':_0xea37('0x1d')});_0x3e00cb[_0xea37('0xd')]({'app':_0xea37('0xa'),'appdata':util['format'](_0xea37('0x1e'),_0x5427e7['extensionMonitor'])});_0x3e00cb['push']({'app':'Dial','appdata':util[_0xea37('0x7')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x5427e7[_0xea37('0x1f')])});}else{_0x3e00cb[_0xea37('0xd')]({'app':_0xea37('0x20'),'appdata':util[_0xea37('0x7')](_0xea37('0x21'),_0x5427e7[_0xea37('0x1f')])});}_0x3e00cb['push']({'app':_0xea37('0x22')});for(var _0x55880c=0x0;_0x55880c<_0x3e00cb[_0xea37('0x5')];_0x55880c++){_0x3e00cb[_0x55880c][_0xea37('0x23')]=_0x55880c+0x1;_0x3e00cb[_0x55880c]=_['defaults'](_0x3e00cb[_0x55880c],_0x447fcb);}return _0x3e00cb;};var getChanSpyPromise=function(_0x1ff12d,_0x10d556){return new BPromise(function(_0xd564a7,_0x4e2a65){return _0x1ff12d[_0xea37('0x24')][_0xea37('0x25')]()[_0xea37('0x26')](function(_0x2e745c){if(_0x2e745c){var _0x51a1fe=getChanSpyApplications(_0x10d556,_0x10d556[_0xea37('0x27')],_0x2e745c);if(_0x10d556['internal']!=_0x10d556['name']){_0x51a1fe=_0x51a1fe[_0xea37('0x28')](getChanSpyApplications(_0x10d556,_0x10d556['name'],_0x2e745c));}return _0xd564a7(_0x51a1fe);}return _0xd564a7([]);})['catch'](function(_0x51b402){_0x4e2a65(_0x51b402);});});};module[_0xea37('0x29')]=function(_0x1e4bc0){var _0x3ec6af=_0x1e4bc0[_0xea37('0x2a')];return _0x1e4bc0[_0xea37('0x2b')](_0xea37('0x2c'),attributes,{'tableName':'users','charset':_0xea37('0x2d'),'collate':_0xea37('0x2e'),'hooks':{'beforeCreate':function(_0x43f051,_0x44d1b7,_0x839c1a){var _0x33717c=typeof _0x43f051['userProfileId']===_0xea37('0x2f')?BPromise['resolve'](null):_0x3ec6af[_0xea37('0x30')][_0xea37('0x31')]({'where':{'id':_0x43f051[_0xea37('0x32')]}});_0x33717c[_0xea37('0x26')](function(_0x477dec){if(_0x477dec){_0x43f051[_0xea37('0x33')]=_0x477dec[_0xea37('0x33')];}})[_0xea37('0x26')](function(){_0x43f051['updateMd5Password']();_0x43f051[_0xea37('0x34')](_0x839c1a);})[_0xea37('0x35')](function(_0x12957c){_0x839c1a(_0x12957c);});},'beforeUpdate':function(_0x37173a,_0x2537f8,_0x393550){Promise['resolve']()['then'](function(){if(_0x37173a['changed'](_0xea37('0x32'))===![])return;return _0x3ec6af['UserProfile'][_0xea37('0x31')]({'where':{'id':_0x37173a['userProfileId']}})['then'](function(_0x5652a4){if(_0x5652a4)_0x37173a['privacyEnabled']=_0x5652a4[_0xea37('0x33')];return;});})[_0xea37('0x26')](function(){if(_0x37173a[_0xea37('0x36')](_0xea37('0x11'))){_0x37173a[_0xea37('0x37')]();return _0x37173a[_0xea37('0x34')](_0x393550);}_0x393550();})[_0xea37('0x35')](function(_0x1f446a){_0x393550(_0x1f446a);});},'afterCreate':function(_0x267456,_0x5b5439,_0x40679c){var _0x565c66=getUserApplications(_0x267456,_0x267456[_0xea37('0x27')]);if(_0x267456[_0xea37('0x27')]!=_0x267456[_0xea37('0x1f')]){_0x565c66=_0x565c66['concat'](getUserApplications(_0x267456,_0x267456[_0xea37('0x1f')]));}return Promise[_0xea37('0x38')]()[_0xea37('0x26')](function(){if(!_0x267456[_0xea37('0x39')]){return _0x267456['createUserSetting']({'clientSideLoggingLevel':_0xea37('0x3a'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x3ec6af[_0xea37('0x3b')][_0xea37('0x3c')](_0x565c66);})[_0xea37('0x26')](function(){if(_0x267456[_0xea37('0xb')]){return getChanSpyPromise(_0x3ec6af,_0x267456);}})[_0xea37('0x26')](function(_0x435300){if(_0x435300&&_0x435300['length']){return _0x3ec6af[_0xea37('0x3b')][_0xea37('0x3c')](_0x435300);}})['then'](function(){_0x40679c();})[_0xea37('0x35')](function(_0x4e9a82){_0x40679c(_0x4e9a82);});},'afterUpdate':function(_0x12894f,_0x31cef9,_0x19d282){return BPromise[_0xea37('0x38')]()[_0xea37('0x26')](function(){if(_0x12894f[_0xea37('0x36')](_0xea37('0xb'))||_0x12894f[_0xea37('0x36')](_0xea37('0x18'))){return _0x3ec6af[_0xea37('0x3b')][_0xea37('0x3d')]({'where':{'UserId':_0x12894f['id'],'type':_0xea37('0x6'),'ChanSpyId':{'$ne':null}}})[_0xea37('0x26')](function(){if(_0x12894f[_0xea37('0xb')]){return getChanSpyPromise(_0x3ec6af,_0x12894f)[_0xea37('0x26')](function(_0x4d83f1){if(_0x4d83f1&&_0x4d83f1[_0xea37('0x5')]){return _0x3ec6af[_0xea37('0x3b')][_0xea37('0x3c')](_0x4d83f1);}});}});}})[_0xea37('0x26')](function(){if(_0x12894f[_0xea37('0x36')]('extensionMonitor')||_0x12894f[_0xea37('0x36')](_0xea37('0x18'))){return _0x3ec6af[_0xea37('0x3b')][_0xea37('0x3d')]({'where':{'UserId':_0x12894f['id'],'type':_0xea37('0x6'),'ChanSpyId':null}})[_0xea37('0x26')](function(){var _0x4f3222=getUserApplications(_0x12894f,_0x12894f[_0xea37('0x27')]);if(_0x12894f[_0xea37('0x27')]!=_0x12894f[_0xea37('0x1f')]){_0x4f3222=_0x4f3222[_0xea37('0x28')](getUserApplications(_0x12894f,_0x12894f[_0xea37('0x1f')]));}return _0x3ec6af[_0xea37('0x3b')][_0xea37('0x3c')](_0x4f3222);});}})[_0xea37('0x26')](function(){_0x19d282();})['catch'](function(_0x34f2f9){_0x19d282(_0x34f2f9);});},'afterDestroy':function(_0x103c9b){return _0x3ec6af['VoiceExtension'][_0xea37('0x3d')]({'where':{'UserId':_0x103c9b['id'],'type':_0xea37('0x6')}});}},'instanceMethods':{'authenticate':function(_0x172f22,_0x2f1c0d){if(!_0x2f1c0d){return this[_0xea37('0x11')]===this[_0xea37('0x3e')](_0x172f22);}var _0x3be42d=this;this[_0xea37('0x3e')](_0x172f22,function(_0x483d1a,_0x46d6e3){if(_0x483d1a){_0x2f1c0d(_0x483d1a);}if(_0x3be42d['password']===_0x46d6e3){_0x2f1c0d(null,!![]);}else{_0x2f1c0d(null,![]);}});},'makeSalt':function(_0x3b451a,_0x54fc4e){var _0x3b4c60=0x10;if(typeof arguments[0x0]===_0xea37('0x3f')){_0x54fc4e=arguments[0x0];_0x3b451a=_0x3b4c60;}else if(typeof arguments[0x1]===_0xea37('0x3f')){_0x54fc4e=arguments[0x1];}else{throw new Error(_0xea37('0x40'));}if(!_0x3b451a){_0x3b451a=_0x3b4c60;}return crypto[_0xea37('0x41')](_0x3b451a,function(_0x1f55c2,_0x3628cd){if(_0x1f55c2){_0x54fc4e(_0x1f55c2);}return _0x54fc4e(null,_0x3628cd[_0xea37('0x42')]('base64'));});},'encryptPassword':function(_0x4c55b9,_0xd3f0b4){if(!_0x4c55b9||!this[_0xea37('0x43')]){return _0xd3f0b4?_0xd3f0b4(null):null;}var _0x19223c=0x2710;var _0x5e9bdc=0x40;var _0xa85ffb=Buffer[_0xea37('0x44')](this['salt'],_0xea37('0x45'));if(!_0xd3f0b4){return crypto[_0xea37('0x46')](_0x4c55b9,_0xa85ffb,_0x19223c,_0x5e9bdc,_0xea37('0x47'))[_0xea37('0x42')](_0xea37('0x45'));}return crypto[_0xea37('0x48')](_0x4c55b9,_0xa85ffb,_0x19223c,_0x5e9bdc,_0xea37('0x47'),function(_0x224f2c,_0x18a7b1){if(_0x224f2c){_0xd3f0b4(_0x224f2c);}return _0xd3f0b4(null,_0x18a7b1[_0xea37('0x42')](_0xea37('0x45')));});},'updatePassword':function(_0x2fdc66){if(!this[_0xea37('0x11')]){return _0x2fdc66(null);}if(!validatePresenceOf(this[_0xea37('0x11')])&&authTypes[_0xea37('0x49')](this['provider'])===-0x1){_0x2fdc66(new Error(_0xea37('0x4a')));}var _0x3aded1=this;this[_0xea37('0x4b')](function(_0x2acb0f,_0x40d747){if(_0x2acb0f){return _0x2fdc66(_0x2acb0f);}_0x3aded1[_0xea37('0x43')]=_0x40d747;_0x3aded1['encryptPassword'](_0x3aded1[_0xea37('0x11')],function(_0x17f482,_0x3f0e5c){if(_0x17f482){_0x2fdc66(_0x17f482);}_0x3aded1[_0xea37('0x11')]=_0x3f0e5c;_0x2fdc66(null);});});},'updateMd5Password':function(){this[_0xea37('0x4c')]=md5(this['name']+_0xea37('0x4d')+this[_0xea37('0x11')]);return this['md5secret'];},'getRealtimeData':function(){var _0x48cc1c={'id':this['id']};var _0x5a070a=jayson[_0xea37('0x4e')][_0xea37('0x4f')]({'port':0x232a});var _0x356e6c=jayson[_0xea37('0x4e')][_0xea37('0x4f')]({'port':0x232c});var _0x578aa9={};var _0x2dc886={};return _0x5a070a[_0xea37('0x50')](_0xea37('0x51'),_0x48cc1c)[_0xea37('0x26')](function(_0x3c0eb7){if(_0x3c0eb7[_0xea37('0x3a')]){throw new Error(_0xea37('0x52'));}_0x578aa9=_0x3c0eb7[_0xea37('0x53')];return _0x356e6c[_0xea37('0x50')](_0xea37('0x51'),_0x48cc1c);})[_0xea37('0x26')](function(_0x1c7290){if(_0x1c7290[_0xea37('0x3a')]){throw new Error(_0xea37('0x54'));}_0x2dc886=_0x1c7290[_0xea37('0x53')];var _0x1e3451=_[_0xea37('0x9')]({},_0x578aa9,_0x2dc886);return _0x1e3451;})['catch'](function(_0x37c2c4){throw _0x37c2c4;});},'unpause':function(_0x480b03,_0x24f80e=_0xea37('0x55')){var _0x409fba=this;var _0x316f33={};return Promise[_0xea37('0x38')]()[_0xea37('0x26')](function(){if(!_0x480b03||_0x480b03===_0xea37('0x56')&&_0x24f80e==='manual'){var _0x4d3ba5=jayson['client'][_0xea37('0x4f')]({'port':0x232a});return _0x4d3ba5['request']('QueuePause',{'id':_0x409fba['id'],'name':_0x409fba[_0xea37('0x1f')],'pause':![]})[_0xea37('0x26')](function(_0x1a037f){if(_0x1a037f['error']){throw new Error(util[_0xea37('0x7')](_0xea37('0x57'),_0x409fba['id'],_0x409fba[_0xea37('0x1f')]));}return _0x1a037f['result']['message'];});}})[_0xea37('0x26')](function(){if(!_0x480b03||_0x480b03===_0xea37('0x56')){return _0x3ec6af[_0xea37('0x58')]['update']({'paused':0x0},{'where':{'UserId':_0x409fba['id']},'individualHooks':!![]});}})[_0xea37('0x26')](function(){var _0x198f7f=!_0x480b03?_0xea37('0x25'):_0xea37('0x59');var _0x40715c={'membername':_0x409fba['name'],'type':_0xea37('0x5a'),'exitAt':null};if(_0x480b03){_0x40715c[_0xea37('0x5b')]=_0x480b03;}return _0x3ec6af[_0xea37('0x5c')][_0x198f7f]({'where':_0x40715c});})[_0xea37('0x26')](function(_0x54eeff){if(_0x54eeff){var _0x1d3055=Array['isArray'](_0x54eeff)?_0x54eeff:[_0x54eeff];var _0x28695d=_0x1d3055[_0xea37('0x5d')](function(_0xa02463){return _0xa02463[_0xea37('0x5e')]({'exitAt':moment()['format'](_0xea37('0x5f')),'data2':_0x24f80e});});return Promise['all'](_0x28695d);}})['then'](function(){if(!_0x480b03){_0x316f33[_0xea37('0x60')]=![];_0x316f33[_0xea37('0x61')]=![];_0x316f33[_0xea37('0x62')]=![];_0x316f33[_0xea37('0x63')]=![];_0x316f33['smsPause']=![];_0x316f33['whatsappPause']=![];_0x316f33['openchannelPause']=![];}else{_0x316f33[_0x480b03+_0xea37('0x64')]=![];}return _0x409fba[_0xea37('0x65')]();})['then'](function(_0x25e377){var _0x3bf713=require(_0xea37('0x66'));var _0x463c9a=_0x3bf713[_0xea37('0x67')]();_0x463c9a[_0xea37('0x68')](function(_0x362ca0){var _0x4be82f=_0x362ca0+_0xea37('0x69');_0x409fba[_0xea37('0x6a')]([_0x4be82f],_0x25e377[_0x4be82f]);});return _0x409fba[_0xea37('0x5e')](_0x316f33);})['catch'](function(_0x4c6f27){throw _0x4c6f27;});}}});};
\ No newline at end of file
index 0d9eb85..51922c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04f8=['YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','format','SIP/%s','PAUSE','body','DEFAULT\x20PAUSE','internal','uniqueid','bulkCreate','type','UnpauseUser','channel','findOne','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','unpause','LogoutUser','LoginUser','phone','count','agent','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','all','callysquare','LOGININPAUSE','concat','loginInPause','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','register','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','stringify','error','message','ShowUser','find','info','catch','PauseUser','name','role','interface','UserVoiceQueueRt','update','MemberReport','length'];(function(_0x1b9752,_0x45c9c5){var _0x163768=function(_0x3537f4){while(--_0x3537f4){_0x1b9752['push'](_0x1b9752['shift']());}};_0x163768(++_0x45c9c5);}(_0x04f8,0xd6));var _0x804f=function(_0x24dec4,_0x3993b0){_0x24dec4=_0x24dec4-0x0;var _0x5b8558=_0x04f8[_0x24dec4];return _0x5b8558;};'use strict';var _=require(_0x804f('0x0'));var util=require(_0x804f('0x1'));var moment=require(_0x804f('0x2'));var BPromise=require(_0x804f('0x3'));var Redis=require(_0x804f('0x4'));var db=require(_0x804f('0x5'))['db'];var utils=require(_0x804f('0x6'));var logger=require(_0x804f('0x7'))(_0x804f('0x8'));var config=require(_0x804f('0x9'));config[_0x804f('0xa')]=_[_0x804f('0xb')](config[_0x804f('0xa')],{'host':_0x804f('0xc'),'port':0x18eb});var socket=require(_0x804f('0xd'))(new Redis(config[_0x804f('0xa')]));require(_0x804f('0xe'))[_0x804f('0xf')](socket);exports[_0x804f('0x10')]=function(_0x97a80c){var _0x52ed8e=this;return new Promise(function(_0x388ff3,_0x2a21b7){return db[_0x804f('0x11')][_0x804f('0x12')]({'raw':_0x97a80c[_0x804f('0x13')]?_0x97a80c[_0x804f('0x13')][_0x804f('0x14')]===undefined?!![]:![]:!![],'where':_0x97a80c['options']?_0x97a80c['options'][_0x804f('0x15')]||null:null,'attributes':_0x97a80c[_0x804f('0x13')]?_0x97a80c['options'][_0x804f('0x16')]||null:null,'limit':_0x97a80c[_0x804f('0x13')]?_0x97a80c[_0x804f('0x13')][_0x804f('0x17')]||null:null,'include':_0x97a80c[_0x804f('0x13')]?_0x97a80c['options'][_0x804f('0x18')]?_[_0x804f('0x19')](_0x97a80c[_0x804f('0x13')][_0x804f('0x18')],function(_0x641fd2){return{'model':db[_0x641fd2[_0x804f('0x1a')]],'as':_0x641fd2['as'],'attributes':_0x641fd2['attributes'],'include':_0x641fd2[_0x804f('0x18')]?_[_0x804f('0x19')](_0x641fd2[_0x804f('0x18')],function(_0x57879e){return{'model':db[_0x57879e[_0x804f('0x1a')]],'as':_0x57879e['as'],'attributes':_0x57879e[_0x804f('0x16')],'include':_0x57879e['include']?_[_0x804f('0x19')](_0x57879e[_0x804f('0x18')],function(_0x5eb408){return{'model':db[_0x5eb408[_0x804f('0x1a')]],'as':_0x5eb408['as'],'attributes':_0x5eb408[_0x804f('0x16')]};}):[]};}):[]};}):[]:[]})[_0x804f('0x1b')](function(_0x2b9f7b){logger['info'](_0x804f('0x10'),_0x97a80c);logger[_0x804f('0x1c')](_0x804f('0x10'),_0x97a80c,JSON[_0x804f('0x1d')](_0x2b9f7b));_0x388ff3(_0x2b9f7b);})['catch'](function(_0x147a8d){logger[_0x804f('0x1e')](_0x804f('0x10'),_0x147a8d[_0x804f('0x1f')],_0x97a80c);_0x2a21b7(_0x52ed8e['error'](0x1f4,_0x147a8d[_0x804f('0x1f')]));});});};exports[_0x804f('0x20')]=function(_0x17413d){var _0x8db7ce=this;return new Promise(function(_0x29fad7,_0x2e7705){return db[_0x804f('0x11')][_0x804f('0x21')]({'raw':_0x17413d[_0x804f('0x13')]?_0x17413d[_0x804f('0x13')][_0x804f('0x14')]===undefined?!![]:![]:!![],'where':_0x17413d[_0x804f('0x13')]?_0x17413d[_0x804f('0x13')]['where']||null:null,'attributes':_0x17413d[_0x804f('0x13')]?_0x17413d[_0x804f('0x13')]['attributes']||null:null,'include':_0x17413d['options']?_0x17413d[_0x804f('0x13')][_0x804f('0x18')]?_[_0x804f('0x19')](_0x17413d[_0x804f('0x13')][_0x804f('0x18')],function(_0x412d03){return{'model':db[_0x412d03['model']],'as':_0x412d03['as'],'attributes':_0x412d03[_0x804f('0x16')],'include':_0x412d03[_0x804f('0x18')]?_[_0x804f('0x19')](_0x412d03[_0x804f('0x18')],function(_0x5df635){return{'model':db[_0x5df635[_0x804f('0x1a')]],'as':_0x5df635['as'],'attributes':_0x5df635[_0x804f('0x16')],'include':_0x5df635[_0x804f('0x18')]?_[_0x804f('0x19')](_0x5df635[_0x804f('0x18')],function(_0x34dd59){return{'model':db[_0x34dd59['model']],'as':_0x34dd59['as'],'attributes':_0x34dd59[_0x804f('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4dfe86){logger[_0x804f('0x22')](_0x804f('0x20'),_0x17413d);logger[_0x804f('0x1c')](_0x804f('0x20'),_0x17413d,JSON[_0x804f('0x1d')](_0x4dfe86));_0x29fad7(_0x4dfe86);})[_0x804f('0x23')](function(_0x52a318){logger[_0x804f('0x1e')]('ShowUser',_0x52a318[_0x804f('0x1f')],_0x17413d);_0x2e7705(_0x8db7ce[_0x804f('0x1e')](0x1f4,_0x52a318[_0x804f('0x1f')]));});});};exports[_0x804f('0x24')]=function(_0x4bf895){var _0x4b3df5=this;return new Promise(function(_0x5ce8d7,_0xb4bdd1){var _0x44ce42;return db[_0x804f('0x11')][_0x804f('0x21')]({'where':_0x4bf895['options'][_0x804f('0x15')]||{},'attributes':['id',_0x804f('0x25'),_0x804f('0x26'),'internal',_0x804f('0x27')]})[_0x804f('0x1b')](function(_0x20c2ce){if(_0x20c2ce){_0x44ce42=_0x20c2ce;return db[_0x804f('0x28')][_0x804f('0x29')]({'paused':0x1},{'where':{'UserId':_0x44ce42['id']},'individualHooks':!![]});}})[_0x804f('0x1b')](function(){if(_0x44ce42){return db[_0x804f('0x2a')]['findAll']({'where':{'membername':_0x44ce42[_0x804f('0x25')],'type':'PAUSE','exitAt':null}});}})[_0x804f('0x1b')](function(_0x1437b6){if(_0x44ce42){if(_0x1437b6&&_0x1437b6[_0x804f('0x2b')]){var _0x5f534a=moment()['format'](_0x804f('0x2c'));for(var _0x26984e=0x0,_0x3e2028=_0x1437b6[_0x804f('0x2b')];_0x26984e<_0x3e2028;_0x26984e++){_0x1437b6[_0x26984e][_0x804f('0x2d')]({'exitAt':_0x5f534a});}}}})[_0x804f('0x1b')](function(){if(_0x44ce42){var _0xf2570b=[];var _0x43ef60=utils[_0x804f('0x2e')]();_0x43ef60[_0x804f('0x2f')](function(_0x4e7372){_0xf2570b[_0x804f('0x30')]({'channel':_0x4e7372,'membername':_0x44ce42[_0x804f('0x25')],'interface':_[_0x804f('0x31')](_0x44ce42[_0x804f('0x27')])?util[_0x804f('0x32')](_0x804f('0x33'),_0x44ce42[_0x804f('0x25')]):_0x44ce42[_0x804f('0x27')],'type':_0x804f('0x34'),'enterAt':moment()[_0x804f('0x32')](_0x804f('0x2c')),'data1':_0x4bf895[_0x804f('0x35')]['type']||_0x804f('0x36'),'role':_0x44ce42[_0x804f('0x26')],'internal':_0x44ce42[_0x804f('0x37')],'uniqueid':_0x4bf895['body'][_0x804f('0x38')]||null});});return db['MemberReport'][_0x804f('0x39')](_0xf2570b,{'individualHooks':!![]});}})['then'](function(){if(_0x44ce42){return _0x44ce42[_0x804f('0x29')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4bf895[_0x804f('0x35')][_0x804f('0x3a')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x804f('0x32')](_0x804f('0x2c'))});}})[_0x804f('0x1b')](function(_0x21c0bf){_0x5ce8d7(_0x21c0bf);})[_0x804f('0x23')](function(_0x43a9f0){_0xb4bdd1(_0x4b3df5['error'](0x1f4,_0x43a9f0[_0x804f('0x1f')]));});});};exports[_0x804f('0x3b')]=function(_0x25c730){var _0x322906=this;return new Promise(function(_0xa35e,_0x244a4d){if(_0x25c730[_0x804f('0x35')][_0x804f('0x3c')]&&!utils['isValidChannel'](_0x25c730[_0x804f('0x35')][_0x804f('0x3c')])){throw new Error(util[_0x804f('0x32')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x25c730[_0x804f('0x35')][_0x804f('0x3c')]));}return db[_0x804f('0x11')][_0x804f('0x3d')]({'where':_0x25c730['options'][_0x804f('0x15')]||{},'attributes':['id',_0x804f('0x25'),'role',_0x804f('0x37'),_0x804f('0x27'),'online',_0x804f('0x3e'),_0x804f('0x3f'),_0x804f('0x40'),_0x804f('0x41'),_0x804f('0x42'),_0x804f('0x43'),_0x804f('0x44'),_0x804f('0x45'),'lastPauseAt']})['then'](function(_0x16a64f){if(!_0x16a64f){throw new Error(util[_0x804f('0x32')]('User\x20with\x20id\x20%s\x20not\x20found',_0x25c730['params']['id']));}return _0x16a64f[_0x804f('0x46')](_0x25c730[_0x804f('0x35')][_0x804f('0x3c')],'system');})[_0x804f('0x1b')](function(_0x10ffd0){_0xa35e(_0x10ffd0);})[_0x804f('0x23')](function(_0x1d3227){_0x244a4d(_0x322906['error'](0x1f4,_0x1d3227[_0x804f('0x1f')]));});});};exports[_0x804f('0x47')]=function(_0x1efaec){var _0x21f205=this;return new Promise(function(_0x3995e0,_0x373c5c){var _0x197710;return db[_0x804f('0x11')]['findOne']({'where':_0x1efaec['options']['where']||{},'attributes':['id',_0x804f('0x25')]})[_0x804f('0x1b')](function(_0x382fd8){if(_0x382fd8){_0x197710=_0x382fd8;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x197710[_0x804f('0x25')]},'individualHooks':!![]});}})[_0x804f('0x1b')](function(){if(_0x197710){return db[_0x804f('0x2a')][_0x804f('0x12')]({'where':{'membername':_0x197710['name'],'exitAt':null}});}})[_0x804f('0x1b')](function(_0xb626a8){if(_0x197710){if(_0xb626a8&&_0xb626a8['length']){var _0x22734f=[];_0xb626a8[_0x804f('0x2f')](function(_0x36ae3e){_0x22734f[_0x804f('0x30')](_0x36ae3e['update']({'exitAt':moment()[_0x804f('0x32')](_0x804f('0x2c'))}));});return BPromise['all'](_0x22734f);}}})[_0x804f('0x1b')](function(){if(_0x197710){return _0x197710[_0x804f('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x227caf){_0x3995e0(_0x227caf);})[_0x804f('0x23')](function(_0x4fd13c){_0x373c5c(_0x21f205[_0x804f('0x1e')](0x1f4,_0x4fd13c[_0x804f('0x1f')]));});});};exports[_0x804f('0x48')]=function(_0x234e54){var _0x30bbdc=this;return new Promise(function(_0x25aef9,_0x22412d){var _0x2017f0;var _0x2235f5;var _0x54cc9d;var _0x5858ef;return db[_0x804f('0x11')]['findOne']({'where':_0x234e54[_0x804f('0x13')][_0x804f('0x15')]||{},'attributes':['id',_0x804f('0x25'),'role','mobile',_0x804f('0x49'),_0x804f('0x37'),'loginInPause',_0x804f('0x27')]})['then'](function(_0x532d85){if(_0x532d85){_0x2017f0=_0x532d85;_0x5858ef=_0x234e54['body']['interface']?_0x234e54['body'][_0x804f('0x27')]:util[_0x804f('0x32')](_0x804f('0x33'),_0x2017f0[_0x804f('0x25')]);return db['User'][_0x804f('0x4a')]({'where':{'role':_0x804f('0x4b'),'online':!![],'id':{'$ne':_0x2017f0['id']}}});}})['then'](function(_0x4ec987){if(_0x4ec987){_0x54cc9d=_0x4ec987;return require('../../config/license/util')['getLicense']();}})['then'](function(_0x25010e){if(_0x25010e&&_0x25010e[_0x804f('0x4c')]&&_0x54cc9d>=_0x25010e[_0x804f('0x4c')]){throw new Error(_0x804f('0x4d'));}})[_0x804f('0x1b')](function(){if(_0x2017f0){return db[_0x804f('0x28')]['destroy']({'where':{'membername':_0x2017f0['name']},'individualHooks':!![]});}})[_0x804f('0x1b')](function(){if(_0x2017f0){return _0x2017f0[_0x804f('0x4e')]({'raw':!![]});}})['then'](function(_0x2c9cfe){if(_0x2017f0){if(_0x2c9cfe){var _0x47edcd=[];_0x2235f5=_0x2c9cfe;if(_0x2235f5['length']){for(var _0x470841=0x0;_0x470841<_0x2235f5[_0x804f('0x2b')];_0x470841++){_0x47edcd[_0x804f('0x30')](db[_0x804f('0x28')][_0x804f('0x4f')]({'membername':_0x2017f0['name'],'UserId':_0x2017f0['id'],'queue_name':_0x2235f5[_0x470841][_0x804f('0x25')],'VoiceQueueId':_0x2235f5[_0x470841]['id'],'interface':_0x5858ef,'paused':_0x2017f0['loginInPause']||![],'penalty':_0x2235f5[_0x470841][_0x804f('0x50')]||0x0}));}return BPromise[_0x804f('0x51')](_0x47edcd);}}}})['then'](function(){if(_0x2017f0){return db[_0x804f('0x2a')]['findAll']({'where':{'membername':_0x2017f0[_0x804f('0x25')],'exitAt':null}});}})['then'](function(_0x3c9adb){if(_0x2017f0){if(_0x3c9adb&&_0x3c9adb['length']){var _0x36dd31=[];_0x3c9adb[_0x804f('0x2f')](function(_0x32e4a9){_0x36dd31[_0x804f('0x30')](_0x32e4a9[_0x804f('0x29')]({'exitAt':moment()['format'](_0x804f('0x2c'))}));});return BPromise[_0x804f('0x51')](_0x36dd31);}}})[_0x804f('0x1b')](function(){if(_0x2017f0){var _0x5cd1b5=[];var _0x83624a=[];var _0x5d3efe=utils[_0x804f('0x2e')]();var _0x38db54={'membername':_0x2017f0[_0x804f('0x25')],'interface':_0x5858ef,'enterAt':moment()[_0x804f('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x2017f0[_0x804f('0x26')],'internal':_0x2017f0[_0x804f('0x37')]};_0x5d3efe[_0x804f('0x2f')](function(_0x1e1cc8){_0x5cd1b5[_0x804f('0x30')](_['merge']({'channel':_0x1e1cc8,'type':'LOGIN','data1':_0x804f('0x52'),'data2':_0x5858ef},_0x38db54));if(_0x2017f0['loginInPause']){_0x83624a['push'](_['merge']({'channel':_0x1e1cc8,'type':_0x804f('0x34'),'data1':_0x804f('0x53')},_0x38db54));}});return db[_0x804f('0x2a')][_0x804f('0x39')](_0x5cd1b5[_0x804f('0x54')](_0x83624a),{'individualHooks':!![]});}})[_0x804f('0x1b')](function(){if(_0x2017f0){return _0x2017f0[_0x804f('0x29')]({'online':!![],'lastLoginAt':moment()[_0x804f('0x32')](_0x804f('0x2c')),'voicePause':_0x2017f0[_0x804f('0x55')]||![],'mailPause':_0x2017f0[_0x804f('0x55')]||![],'chatPause':_0x2017f0['loginInPause']||![],'faxPause':_0x2017f0[_0x804f('0x55')]||![],'smsPause':_0x2017f0[_0x804f('0x55')]||![],'openchannelPause':_0x2017f0[_0x804f('0x55')]||![],'pauseType':_0x2017f0[_0x804f('0x55')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x804f('0x32')](_0x804f('0x2c')),'interface':_0x5858ef});}})[_0x804f('0x1b')](function(_0x4f0cf7){_0x25aef9(_0x4f0cf7);})['catch'](function(_0x2910c6){_0x22412d(_0x30bbdc[_0x804f('0x1e')](0x1f4,_0x2910c6[_0x804f('0x1f')]));});});};
\ No newline at end of file
+var _0xf461=['length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','push','isNil','interface','SIP/%s','body','type','DEFAULT\x20PAUSE','role','uniqueid','bulkCreate','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','voicePause','chatPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','system','forEach','LoginUser','findOne','mobile','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','destroy','getVoiceQueues','all','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','./user.socket','register','User','options','limit','include','map','model','attributes','then','info','GetUser','debug','stringify','error','message','ShowUser','where','catch','PauseUser','find','name','internal','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xf461,0x85));var _0x1f46=function(_0x24afed,_0x5a1e8a){_0x24afed=_0x24afed-0x0;var _0xae800f=_0xf461[_0x24afed];return _0xae800f;};'use strict';var _=require(_0x1f46('0x0'));var util=require(_0x1f46('0x1'));var moment=require(_0x1f46('0x2'));var BPromise=require(_0x1f46('0x3'));var Redis=require(_0x1f46('0x4'));var db=require(_0x1f46('0x5'))['db'];var utils=require(_0x1f46('0x6'));var logger=require(_0x1f46('0x7'))('rpc');var config=require(_0x1f46('0x8'));config['redis']=_[_0x1f46('0x9')](config[_0x1f46('0xa')],{'host':_0x1f46('0xb'),'port':0x18eb});var socket=require(_0x1f46('0xc'))(new Redis(config['redis']));require(_0x1f46('0xd'))[_0x1f46('0xe')](socket);exports['GetUser']=function(_0x5e1206){var _0x4f80ea=this;return new Promise(function(_0x5e73ba,_0x4073db){return db[_0x1f46('0xf')]['findAll']({'raw':_0x5e1206[_0x1f46('0x10')]?_0x5e1206[_0x1f46('0x10')]['raw']===undefined?!![]:![]:!![],'where':_0x5e1206[_0x1f46('0x10')]?_0x5e1206[_0x1f46('0x10')]['where']||null:null,'attributes':_0x5e1206[_0x1f46('0x10')]?_0x5e1206[_0x1f46('0x10')]['attributes']||null:null,'limit':_0x5e1206['options']?_0x5e1206[_0x1f46('0x10')][_0x1f46('0x11')]||null:null,'include':_0x5e1206[_0x1f46('0x10')]?_0x5e1206['options'][_0x1f46('0x12')]?_[_0x1f46('0x13')](_0x5e1206['options']['include'],function(_0x3aa856){return{'model':db[_0x3aa856[_0x1f46('0x14')]],'as':_0x3aa856['as'],'attributes':_0x3aa856[_0x1f46('0x15')],'include':_0x3aa856[_0x1f46('0x12')]?_[_0x1f46('0x13')](_0x3aa856[_0x1f46('0x12')],function(_0x10f8d8){return{'model':db[_0x10f8d8['model']],'as':_0x10f8d8['as'],'attributes':_0x10f8d8['attributes'],'include':_0x10f8d8['include']?_[_0x1f46('0x13')](_0x10f8d8['include'],function(_0x137982){return{'model':db[_0x137982[_0x1f46('0x14')]],'as':_0x137982['as'],'attributes':_0x137982[_0x1f46('0x15')]};}):[]};}):[]};}):[]:[]})[_0x1f46('0x16')](function(_0x357073){logger[_0x1f46('0x17')](_0x1f46('0x18'),_0x5e1206);logger[_0x1f46('0x19')]('GetUser',_0x5e1206,JSON[_0x1f46('0x1a')](_0x357073));_0x5e73ba(_0x357073);})['catch'](function(_0x58e04b){logger[_0x1f46('0x1b')]('GetUser',_0x58e04b[_0x1f46('0x1c')],_0x5e1206);_0x4073db(_0x4f80ea[_0x1f46('0x1b')](0x1f4,_0x58e04b['message']));});});};exports[_0x1f46('0x1d')]=function(_0x2982ee){var _0x3fb14b=this;return new Promise(function(_0x470765,_0x4b1f67){return db[_0x1f46('0xf')]['find']({'raw':_0x2982ee[_0x1f46('0x10')]?_0x2982ee[_0x1f46('0x10')]['raw']===undefined?!![]:![]:!![],'where':_0x2982ee[_0x1f46('0x10')]?_0x2982ee[_0x1f46('0x10')][_0x1f46('0x1e')]||null:null,'attributes':_0x2982ee['options']?_0x2982ee[_0x1f46('0x10')]['attributes']||null:null,'include':_0x2982ee[_0x1f46('0x10')]?_0x2982ee[_0x1f46('0x10')][_0x1f46('0x12')]?_['map'](_0x2982ee[_0x1f46('0x10')]['include'],function(_0x56feb6){return{'model':db[_0x56feb6[_0x1f46('0x14')]],'as':_0x56feb6['as'],'attributes':_0x56feb6['attributes'],'include':_0x56feb6[_0x1f46('0x12')]?_[_0x1f46('0x13')](_0x56feb6[_0x1f46('0x12')],function(_0x25cdb3){return{'model':db[_0x25cdb3['model']],'as':_0x25cdb3['as'],'attributes':_0x25cdb3[_0x1f46('0x15')],'include':_0x25cdb3[_0x1f46('0x12')]?_[_0x1f46('0x13')](_0x25cdb3['include'],function(_0x4b8433){return{'model':db[_0x4b8433[_0x1f46('0x14')]],'as':_0x4b8433['as'],'attributes':_0x4b8433['attributes']};}):[]};}):[]};}):[]:[]})[_0x1f46('0x16')](function(_0x332066){logger[_0x1f46('0x17')](_0x1f46('0x1d'),_0x2982ee);logger[_0x1f46('0x19')](_0x1f46('0x1d'),_0x2982ee,JSON[_0x1f46('0x1a')](_0x332066));_0x470765(_0x332066);})[_0x1f46('0x1f')](function(_0x505caf){logger['error'](_0x1f46('0x1d'),_0x505caf[_0x1f46('0x1c')],_0x2982ee);_0x4b1f67(_0x3fb14b[_0x1f46('0x1b')](0x1f4,_0x505caf[_0x1f46('0x1c')]));});});};exports[_0x1f46('0x20')]=function(_0x3e69f6){var _0x122746=this;return new Promise(function(_0x125009,_0x229dc5){var _0xb7cf12;return db[_0x1f46('0xf')][_0x1f46('0x21')]({'where':_0x3e69f6[_0x1f46('0x10')][_0x1f46('0x1e')]||{},'attributes':['id',_0x1f46('0x22'),'role',_0x1f46('0x23'),'interface']})[_0x1f46('0x16')](function(_0x250484){if(_0x250484){_0xb7cf12=_0x250484;return db[_0x1f46('0x24')][_0x1f46('0x25')]({'paused':0x1},{'where':{'UserId':_0xb7cf12['id']},'individualHooks':!![]});}})['then'](function(){if(_0xb7cf12){return db[_0x1f46('0x26')][_0x1f46('0x27')]({'where':{'membername':_0xb7cf12['name'],'type':_0x1f46('0x28'),'exitAt':null}});}})[_0x1f46('0x16')](function(_0x3ae776){if(_0xb7cf12){if(_0x3ae776&&_0x3ae776[_0x1f46('0x29')]){var _0x2cf7aa=moment()[_0x1f46('0x2a')](_0x1f46('0x2b'));for(var _0x7d6bfc=0x0,_0xf8c6c7=_0x3ae776[_0x1f46('0x29')];_0x7d6bfc<_0xf8c6c7;_0x7d6bfc++){_0x3ae776[_0x7d6bfc][_0x1f46('0x2c')]({'exitAt':_0x2cf7aa});}}}})[_0x1f46('0x16')](function(){if(_0xb7cf12){var _0x2c6d7d=[];var _0x10fe98=utils[_0x1f46('0x2d')]();_0x10fe98['forEach'](function(_0x2bdabc){_0x2c6d7d[_0x1f46('0x2e')]({'channel':_0x2bdabc,'membername':_0xb7cf12[_0x1f46('0x22')],'interface':_[_0x1f46('0x2f')](_0xb7cf12[_0x1f46('0x30')])?util[_0x1f46('0x2a')](_0x1f46('0x31'),_0xb7cf12[_0x1f46('0x22')]):_0xb7cf12[_0x1f46('0x30')],'type':_0x1f46('0x28'),'enterAt':moment()[_0x1f46('0x2a')](_0x1f46('0x2b')),'data1':_0x3e69f6[_0x1f46('0x32')][_0x1f46('0x33')]||_0x1f46('0x34'),'role':_0xb7cf12[_0x1f46('0x35')],'internal':_0xb7cf12[_0x1f46('0x23')],'uniqueid':_0x3e69f6['body'][_0x1f46('0x36')]||null});});return db['MemberReport'][_0x1f46('0x37')](_0x2c6d7d,{'individualHooks':!![]});}})[_0x1f46('0x16')](function(){if(_0xb7cf12){return _0xb7cf12['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3e69f6[_0x1f46('0x32')]['type']||_0x1f46('0x34'),'lastPauseAt':moment()[_0x1f46('0x2a')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x1f46('0x16')](function(_0x36119a){_0x125009(_0x36119a);})[_0x1f46('0x1f')](function(_0x1eca91){_0x229dc5(_0x122746[_0x1f46('0x1b')](0x1f4,_0x1eca91[_0x1f46('0x1c')]));});});};exports['UnpauseUser']=function(_0x29edc5){var _0x511932=this;return new Promise(function(_0x366377,_0x142ec9){if(_0x29edc5[_0x1f46('0x32')][_0x1f46('0x38')]&&!utils[_0x1f46('0x39')](_0x29edc5[_0x1f46('0x32')]['channel'])){throw new Error(util['format'](_0x1f46('0x3a'),_0x29edc5[_0x1f46('0x32')]['channel']));}return db['User']['findOne']({'where':_0x29edc5['options'][_0x1f46('0x1e')]||{},'attributes':['id',_0x1f46('0x22'),_0x1f46('0x35'),'internal',_0x1f46('0x30'),'online',_0x1f46('0x3b'),'mailPause',_0x1f46('0x3c'),'faxPause','openchannelPause',_0x1f46('0x3d'),_0x1f46('0x3e'),_0x1f46('0x3f'),_0x1f46('0x40')]})['then'](function(_0x11766a){if(!_0x11766a){throw new Error(util[_0x1f46('0x2a')](_0x1f46('0x41'),_0x29edc5[_0x1f46('0x42')]['id']));}return _0x11766a['unpause'](_0x29edc5[_0x1f46('0x32')]['channel'],_0x1f46('0x43'));})[_0x1f46('0x16')](function(_0x583467){_0x366377(_0x583467);})['catch'](function(_0x276a29){_0x142ec9(_0x511932['error'](0x1f4,_0x276a29[_0x1f46('0x1c')]));});});};exports['LogoutUser']=function(_0x2a45bb){var _0x306b44=this;return new Promise(function(_0x3cb2cb,_0x1bbc22){var _0x5e23fe;return db['User']['findOne']({'where':_0x2a45bb['options']['where']||{},'attributes':['id',_0x1f46('0x22')]})['then'](function(_0x3e1ac2){if(_0x3e1ac2){_0x5e23fe=_0x3e1ac2;return db[_0x1f46('0x24')]['destroy']({'where':{'membername':_0x5e23fe[_0x1f46('0x22')]},'individualHooks':!![]});}})[_0x1f46('0x16')](function(){if(_0x5e23fe){return db[_0x1f46('0x26')][_0x1f46('0x27')]({'where':{'membername':_0x5e23fe['name'],'exitAt':null}});}})[_0x1f46('0x16')](function(_0xbcf3e){if(_0x5e23fe){if(_0xbcf3e&&_0xbcf3e[_0x1f46('0x29')]){var _0x1c8601=[];_0xbcf3e[_0x1f46('0x44')](function(_0x2901cc){_0x1c8601[_0x1f46('0x2e')](_0x2901cc[_0x1f46('0x25')]({'exitAt':moment()[_0x1f46('0x2a')](_0x1f46('0x2b'))}));});return BPromise['all'](_0x1c8601);}}})[_0x1f46('0x16')](function(){if(_0x5e23fe){return _0x5e23fe[_0x1f46('0x25')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x1f46('0x16')](function(_0x30de90){_0x3cb2cb(_0x30de90);})[_0x1f46('0x1f')](function(_0x1fbd10){_0x1bbc22(_0x306b44[_0x1f46('0x1b')](0x1f4,_0x1fbd10[_0x1f46('0x1c')]));});});};exports[_0x1f46('0x45')]=function(_0x1961ae){var _0x392b13=this;return new Promise(function(_0x3b3fca,_0x3f0b84){var _0x4143c2;var _0x267466;var _0x330180;var _0x2f7139;return db[_0x1f46('0xf')][_0x1f46('0x46')]({'where':_0x1961ae['options'][_0x1f46('0x1e')]||{},'attributes':['id','name','role',_0x1f46('0x47'),_0x1f46('0x48'),_0x1f46('0x23'),_0x1f46('0x49'),_0x1f46('0x30')]})[_0x1f46('0x16')](function(_0x498f6e){if(_0x498f6e){_0x4143c2=_0x498f6e;_0x2f7139=_0x1961ae['body'][_0x1f46('0x30')]?_0x1961ae[_0x1f46('0x32')][_0x1f46('0x30')]:util['format']('SIP/%s',_0x4143c2[_0x1f46('0x22')]);return db[_0x1f46('0xf')][_0x1f46('0x4a')]({'where':{'role':_0x1f46('0x4b'),'online':!![],'id':{'$ne':_0x4143c2['id']}}});}})[_0x1f46('0x16')](function(_0x339a85){if(_0x339a85){_0x330180=_0x339a85;return require(_0x1f46('0x4c'))[_0x1f46('0x4d')]();}})[_0x1f46('0x16')](function(_0x23a4ef){if(_0x23a4ef&&_0x23a4ef[_0x1f46('0x4e')]&&_0x330180>=_0x23a4ef[_0x1f46('0x4e')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x1f46('0x16')](function(){if(_0x4143c2){return db[_0x1f46('0x24')][_0x1f46('0x4f')]({'where':{'membername':_0x4143c2[_0x1f46('0x22')]},'individualHooks':!![]});}})['then'](function(){if(_0x4143c2){return _0x4143c2[_0x1f46('0x50')]({'raw':!![]});}})['then'](function(_0x35e3c4){if(_0x4143c2){if(_0x35e3c4){var _0x4123d3=[];_0x267466=_0x35e3c4;if(_0x267466[_0x1f46('0x29')]){for(var _0x2a35cb=0x0;_0x2a35cb<_0x267466[_0x1f46('0x29')];_0x2a35cb++){_0x4123d3[_0x1f46('0x2e')](db[_0x1f46('0x24')]['upsert']({'membername':_0x4143c2[_0x1f46('0x22')],'UserId':_0x4143c2['id'],'queue_name':_0x267466[_0x2a35cb][_0x1f46('0x22')],'VoiceQueueId':_0x267466[_0x2a35cb]['id'],'interface':_0x2f7139,'paused':_0x4143c2[_0x1f46('0x49')]||![],'penalty':_0x267466[_0x2a35cb]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x1f46('0x51')](_0x4123d3);}}}})[_0x1f46('0x16')](function(){if(_0x4143c2){return db[_0x1f46('0x26')][_0x1f46('0x27')]({'where':{'membername':_0x4143c2[_0x1f46('0x22')],'exitAt':null}});}})['then'](function(_0x2d7fca){if(_0x4143c2){if(_0x2d7fca&&_0x2d7fca[_0x1f46('0x29')]){var _0x34bb47=[];_0x2d7fca[_0x1f46('0x44')](function(_0x210baa){_0x34bb47[_0x1f46('0x2e')](_0x210baa[_0x1f46('0x25')]({'exitAt':moment()[_0x1f46('0x2a')](_0x1f46('0x2b'))}));});return BPromise[_0x1f46('0x51')](_0x34bb47);}}})[_0x1f46('0x16')](function(){if(_0x4143c2){var _0x5a4f9f=[];var _0x321a6c=[];var _0x5c4000=utils[_0x1f46('0x2d')]();var _0x4ba095={'membername':_0x4143c2[_0x1f46('0x22')],'interface':_0x2f7139,'enterAt':moment()[_0x1f46('0x2a')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x4143c2[_0x1f46('0x35')],'internal':_0x4143c2['internal']};_0x5c4000[_0x1f46('0x44')](function(_0x357ecb){_0x5a4f9f[_0x1f46('0x2e')](_[_0x1f46('0x52')]({'channel':_0x357ecb,'type':_0x1f46('0x53'),'data1':_0x1f46('0x54'),'data2':_0x2f7139},_0x4ba095));if(_0x4143c2[_0x1f46('0x49')]){_0x321a6c[_0x1f46('0x2e')](_[_0x1f46('0x52')]({'channel':_0x357ecb,'type':_0x1f46('0x28'),'data1':_0x1f46('0x55')},_0x4ba095));}});return db['MemberReport'][_0x1f46('0x37')](_0x5a4f9f[_0x1f46('0x56')](_0x321a6c),{'individualHooks':!![]});}})[_0x1f46('0x16')](function(){if(_0x4143c2){return _0x4143c2[_0x1f46('0x25')]({'online':!![],'lastLoginAt':moment()[_0x1f46('0x2a')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x4143c2['loginInPause']||![],'mailPause':_0x4143c2[_0x1f46('0x49')]||![],'chatPause':_0x4143c2[_0x1f46('0x49')]||![],'faxPause':_0x4143c2[_0x1f46('0x49')]||![],'smsPause':_0x4143c2[_0x1f46('0x49')]||![],'openchannelPause':_0x4143c2[_0x1f46('0x49')]||![],'pauseType':_0x4143c2[_0x1f46('0x49')]?_0x1f46('0x55'):null,'lastPauseAt':moment()['format'](_0x1f46('0x2b')),'interface':_0x2f7139});}})['then'](function(_0x51f8f1){_0x3b3fca(_0x51f8f1);})[_0x1f46('0x1f')](function(_0x2e553f){_0x3f0b84(_0x392b13[_0x1f46('0x1b')](0x1f4,_0x2e553f[_0x1f46('0x1c')]));});});};
\ No newline at end of file
index 9b8da29..1770746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567e=['save','remove','emit','removeListener','register','./user.events'];(function(_0x24bfc6,_0x24399d){var _0x33bdb0=function(_0xf88709){while(--_0xf88709){_0x24bfc6['push'](_0x24bfc6['shift']());}};_0x33bdb0(++_0x24399d);}(_0x567e,0x83));var _0xe567=function(_0x3e47ba,_0x479afd){_0x3e47ba=_0x3e47ba-0x0;var _0x60dff4=_0x567e[_0x3e47ba];return _0x60dff4;};'use strict';var UserEvents=require(_0xe567('0x0'));var events=[_0xe567('0x1'),_0xe567('0x2'),'update'];function createListener(_0x5796c1,_0x4a6279){return function(_0x3a5d37){_0x4a6279[_0xe567('0x3')](_0x5796c1,_0x3a5d37);};}function removeListener(_0x525bbd,_0x1a56e6){return function(){UserEvents[_0xe567('0x4')](_0x525bbd,_0x1a56e6);};}exports[_0xe567('0x5')]=function(_0x4d50ac){for(var _0x594e1d=0x0,_0x37e460=events['length'];_0x594e1d<_0x37e460;_0x594e1d++){var _0x2d6124=events[_0x594e1d];var _0x4a9a80=createListener('user:'+_0x2d6124,_0x4d50ac);UserEvents['on'](_0x2d6124,_0x4a9a80);}};
\ No newline at end of file
+var _0x0c81=['./user.events','save','remove','update','removeListener','register','length','user:'];(function(_0x2bdfb2,_0x53e154){var _0x5939ae=function(_0x43b014){while(--_0x43b014){_0x2bdfb2['push'](_0x2bdfb2['shift']());}};_0x5939ae(++_0x53e154);}(_0x0c81,0x1b0));var _0x10c8=function(_0x1fcc1e,_0x39efee){_0x1fcc1e=_0x1fcc1e-0x0;var _0x13497a=_0x0c81[_0x1fcc1e];return _0x13497a;};'use strict';var UserEvents=require(_0x10c8('0x0'));var events=[_0x10c8('0x1'),_0x10c8('0x2'),_0x10c8('0x3')];function createListener(_0x5b6d64,_0x37a485){return function(_0x2b1acc){_0x37a485['emit'](_0x5b6d64,_0x2b1acc);};}function removeListener(_0x127e9f,_0x335c80){return function(){UserEvents[_0x10c8('0x4')](_0x127e9f,_0x335c80);};}exports[_0x10c8('0x5')]=function(_0x185ffb){for(var _0x22bd6e=0x0,_0x2bdc8b=events[_0x10c8('0x6')];_0x22bd6e<_0x2bdc8b;_0x22bd6e++){var _0x3c9813=events[_0x22bd6e];var _0x224202=createListener(_0x10c8('0x7')+_0x3c9813,_0x185ffb);UserEvents['on'](_0x3c9813,_0x224202);}};
\ No newline at end of file
index 9bb6d75..d30c43f 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(_0x2d1d51,_0x1d201d){var _0x462ffd=function(_0x1ef37b){while(--_0x1ef37b){_0x2d1d51['push'](_0x2d1d51['shift']());}};_0x462ffd(++_0x1d201d);}(_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(_0x137d5e,_0x367c7b){var _0x52466d=function(_0x3392fd){while(--_0x3392fd){_0x137d5e['push'](_0x137d5e['shift']());}};_0x52466d(++_0x367c7b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xb301d4,_0x27ed18){_0xb301d4=_0xb301d4-0x0;var _0x3b5bde=_0xcb91[_0xb301d4];return _0x3b5bde;};'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 117b2e3..89ce4d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0094=['sequelize','exports'];(function(_0x507056,_0xe16b72){var _0x4eaecc=function(_0x440b91){while(--_0x440b91){_0x507056['push'](_0x507056['shift']());}};_0x4eaecc(++_0xe16b72);}(_0x0094,0x184));var _0x4009=function(_0x6bb343,_0x5e0db6){_0x6bb343=_0x6bb343-0x0;var _0x1c5168=_0x0094[_0x6bb343];return _0x1c5168;};'use strict';var Sequelize=require(_0x4009('0x0'));module[_0x4009('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9b34=['exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9b34,0xd4));var _0x49b3=function(_0x12054f,_0x3b6baf){_0x12054f=_0x12054f-0x0;var _0x262cd8=_0x9b34[_0x12054f];return _0x262cd8;};'use strict';var Sequelize=require('sequelize');module[_0x49b3('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index be68d9a..e4e6db7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x311f=['rimraf','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x541a88,_0x595dfd){var _0x116c3f=function(_0xe2b1fd){while(--_0xe2b1fd){_0x541a88['push'](_0x541a88['shift']());}};_0x116c3f(++_0x595dfd);}(_0x311f,0x73));var _0xf311=function(_0x2629db,_0x317a0d){_0x2629db=_0x2629db-0x0;var _0x23c846=_0x311f[_0x2629db];return _0x23c846;};'use strict';var _=require(_0xf311('0x0'));var util=require('util');var logger=require(_0xf311('0x1'))(_0xf311('0x2'));var moment=require(_0xf311('0x3'));var BPromise=require(_0xf311('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf311('0x5'));var rimraf=require(_0xf311('0x6'));var config=require('../../config/environment');var attributes=require(_0xf311('0x7'));module[_0xf311('0x8')]=function(_0x4a9f61,_0x1d1b17){return _0x4a9f61['define'](_0xf311('0x9'),attributes,{'tableName':_0xf311('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0ac4=['request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','bluebird'];(function(_0x3c23f9,_0x5e27a5){var _0x59aa21=function(_0x52e7b7){while(--_0x52e7b7){_0x3c23f9['push'](_0x3c23f9['shift']());}};_0x59aa21(++_0x5e27a5);}(_0x0ac4,0x181));var _0x40ac=function(_0x8b8564,_0x162976){_0x8b8564=_0x8b8564-0x0;var _0x360c61=_0x0ac4[_0x8b8564];return _0x360c61;};'use strict';var _=require(_0x40ac('0x0'));var util=require(_0x40ac('0x1'));var logger=require(_0x40ac('0x2'))(_0x40ac('0x3'));var moment=require('moment');var BPromise=require(_0x40ac('0x4'));var rp=require(_0x40ac('0x5'));var fs=require('fs');var path=require(_0x40ac('0x6'));var rimraf=require(_0x40ac('0x7'));var config=require(_0x40ac('0x8'));var attributes=require(_0x40ac('0x9'));module['exports']=function(_0x3351d5,_0x36d3de){return _0x3351d5[_0x40ac('0xa')](_0x40ac('0xb'),attributes,{'tableName':_0x40ac('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 40a61aa..e4aa0f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda99=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','error','code','UserChatQueue,\x20%s,\x20%s','message'];(function(_0x531e48,_0x4bb96b){var _0x202971=function(_0x403bf5){while(--_0x403bf5){_0x531e48['push'](_0x531e48['shift']());}};_0x202971(++_0x4bb96b);}(_0xda99,0x172));var _0x9da9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xda99[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9da9('0x0'));var util=require(_0x9da9('0x1'));var moment=require(_0x9da9('0x2'));var BPromise=require(_0x9da9('0x3'));var rs=require(_0x9da9('0x4'));var fs=require('fs');var Redis=require(_0x9da9('0x5'));var db=require(_0x9da9('0x6'))['db'];var utils=require(_0x9da9('0x7'));var logger=require(_0x9da9('0x8'))('rpc');var config=require(_0x9da9('0x9'));var jayson=require(_0x9da9('0xa'));var client=jayson[_0x9da9('0xb')][_0x9da9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x58cde1,_0x3711c9,_0x4cf47f){return new BPromise(function(_0x19b2c0,_0x132474){return client['request'](_0x58cde1,_0x4cf47f)[_0x9da9('0xd')](function(_0x1b9a9d){logger['info']('UserChatQueue,\x20%s,\x20%s',_0x3711c9,_0x9da9('0xe'));logger[_0x9da9('0xf')](_0x9da9('0x10'),_0x3711c9,'request\x20sent',JSON['stringify'](_0x1b9a9d));if(_0x1b9a9d['error']){if(_0x1b9a9d[_0x9da9('0x11')][_0x9da9('0x12')]===0x1f4){logger[_0x9da9('0x11')](_0x9da9('0x13'),_0x3711c9,_0x1b9a9d[_0x9da9('0x11')]['message']);return _0x132474(_0x1b9a9d[_0x9da9('0x11')]['message']);}logger[_0x9da9('0x11')]('UserChatQueue,\x20%s,\x20%s',_0x3711c9,_0x1b9a9d[_0x9da9('0x11')][_0x9da9('0x14')]);return _0x19b2c0(_0x1b9a9d[_0x9da9('0x11')][_0x9da9('0x14')]);}else{logger['info'](_0x9da9('0x13'),_0x3711c9,_0x9da9('0xe'));_0x19b2c0(_0x1b9a9d[_0x9da9('0x15')]['message']);}})[_0x9da9('0x16')](function(_0x5e4566){logger[_0x9da9('0x11')](_0x9da9('0x13'),_0x3711c9,_0x5e4566);_0x132474(_0x5e4566);});});}
\ No newline at end of file
+var _0x47db=['request','UserChatQueue,\x20%s,\x20%s','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x47db,0x1b0));var _0xb47d=function(_0x344fbd,_0x1b832a){_0x344fbd=_0x344fbd-0x0;var _0x3f7d7b=_0x47db[_0x344fbd];return _0x3f7d7b;};'use strict';var _=require(_0xb47d('0x0'));var util=require(_0xb47d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb47d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb47d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xb47d('0x4'))(_0xb47d('0x5'));var config=require(_0xb47d('0x6'));var jayson=require(_0xb47d('0x7'));var client=jayson['client'][_0xb47d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x351d55,_0x35c87e,_0x1ba14f){return new BPromise(function(_0x50790b,_0x6e032d){return client[_0xb47d('0x9')](_0x351d55,_0x1ba14f)['then'](function(_0xbdb875){logger['info'](_0xb47d('0xa'),_0x35c87e,'request\x20sent');logger[_0xb47d('0xb')](_0xb47d('0xc'),_0x35c87e,'request\x20sent',JSON[_0xb47d('0xd')](_0xbdb875));if(_0xbdb875[_0xb47d('0xe')]){if(_0xbdb875['error'][_0xb47d('0xf')]===0x1f4){logger[_0xb47d('0xe')]('UserChatQueue,\x20%s,\x20%s',_0x35c87e,_0xbdb875[_0xb47d('0xe')]['message']);return _0x6e032d(_0xbdb875[_0xb47d('0xe')][_0xb47d('0x10')]);}logger[_0xb47d('0xe')](_0xb47d('0xa'),_0x35c87e,_0xbdb875[_0xb47d('0xe')][_0xb47d('0x10')]);return _0x50790b(_0xbdb875[_0xb47d('0xe')][_0xb47d('0x10')]);}else{logger[_0xb47d('0x11')](_0xb47d('0xa'),_0x35c87e,_0xb47d('0x12'));_0x50790b(_0xbdb875[_0xb47d('0x13')][_0xb47d('0x10')]);}})[_0xb47d('0x14')](function(_0x1f1e31){logger[_0xb47d('0xe')](_0xb47d('0xa'),_0x35c87e,_0x1f1e31);_0x6e032d(_0x1f1e31);});});}
\ No newline at end of file
index ccae190..dc5acd6 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(_0x5b8025,_0x34f2fa){var _0x3f47a0=function(_0x391fdd){while(--_0x391fdd){_0x5b8025['push'](_0x5b8025['shift']());}};_0x3f47a0(++_0x34f2fa);}(_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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x2812c2,_0x2b382d){var _0x218ac9=function(_0x2fe4c4){while(--_0x2fe4c4){_0x2812c2['push'](_0x2812c2['shift']());}};_0x218ac9(++_0x2b382d);}(_0x9c44,0x178));var _0x49c4=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9c44[_0x2641f9];return _0x585741;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 8a884c2..1a7f5ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ba=['sequelize','INTEGER'];(function(_0x4d6930,_0x31603a){var _0x52b84a=function(_0x20c951){while(--_0x20c951){_0x4d6930['push'](_0x4d6930['shift']());}};_0x52b84a(++_0x31603a);}(_0x71ba,0x1e8));var _0xa71b=function(_0x439d75,_0x79c7ff){_0x439d75=_0x439d75-0x0;var _0x483654=_0x71ba[_0x439d75];return _0x483654;};'use strict';var Sequelize=require(_0xa71b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xa71b('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xa71b('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5cfb=['STRING','sequelize','INTEGER'];(function(_0x509c83,_0x511882){var _0x534626=function(_0x9d21cf){while(--_0x9d21cf){_0x509c83['push'](_0x509c83['shift']());}};_0x534626(++_0x511882);}(_0x5cfb,0x7f));var _0xb5cf=function(_0x522959,_0x37c0df){_0x522959=_0x522959-0x0;var _0x58b6e6=_0x5cfb[_0x522959];return _0x58b6e6;};'use strict';var Sequelize=require(_0xb5cf('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xb5cf('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xb5cf('0x2')]}};
\ No newline at end of file
index 877466a..0419f7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cd9=['user_has_fax_queues','lodash','api','moment','bluebird','request-promise','path','exports','define','UserFaxQueue'];(function(_0x408528,_0x577d54){var _0x1aa0a4=function(_0x3480d5){while(--_0x3480d5){_0x408528['push'](_0x408528['shift']());}};_0x1aa0a4(++_0x577d54);}(_0x4cd9,0x1d7));var _0x94cd=function(_0x2bc8e0,_0x38204a){_0x2bc8e0=_0x2bc8e0-0x0;var _0xca8f97=_0x4cd9[_0x2bc8e0];return _0xca8f97;};'use strict';var _=require(_0x94cd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x94cd('0x1'));var moment=require(_0x94cd('0x2'));var BPromise=require(_0x94cd('0x3'));var rp=require(_0x94cd('0x4'));var fs=require('fs');var path=require(_0x94cd('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userFaxQueue.attributes');module[_0x94cd('0x6')]=function(_0x46e66e,_0x3c5714){return _0x46e66e[_0x94cd('0x7')](_0x94cd('0x8'),attributes,{'tableName':_0x94cd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0de1=['define','UserFaxQueue','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./userFaxQueue.attributes','exports'];(function(_0x111316,_0x3178a2){var _0x5981ed=function(_0x27989f){while(--_0x27989f){_0x111316['push'](_0x111316['shift']());}};_0x5981ed(++_0x3178a2);}(_0x0de1,0x1d6));var _0x10de=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0de1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x10de('0x0'));var util=require(_0x10de('0x1'));var logger=require(_0x10de('0x2'))('api');var moment=require(_0x10de('0x3'));var BPromise=require(_0x10de('0x4'));var rp=require(_0x10de('0x5'));var fs=require('fs');var path=require(_0x10de('0x6'));var rimraf=require(_0x10de('0x7'));var config=require('../../config/environment');var attributes=require(_0x10de('0x8'));module[_0x10de('0x9')]=function(_0x3a6b70,_0x56a93c){return _0x3a6b70[_0x10de('0xa')](_0x10de('0xb'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4359c04..47cb791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c8b=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','UserFaxQueue,\x20%s,\x20%s','message','lodash'];(function(_0x1c9a2c,_0x55f4ab){var _0x2f54f9=function(_0x160975){while(--_0x160975){_0x1c9a2c['push'](_0x1c9a2c['shift']());}};_0x2f54f9(++_0x55f4ab);}(_0x6c8b,0xbc));var _0xb6c8=function(_0x368999,_0x43f561){_0x368999=_0x368999-0x0;var _0x3c1780=_0x6c8b[_0x368999];return _0x3c1780;};'use strict';var _=require(_0xb6c8('0x0'));var util=require(_0xb6c8('0x1'));var moment=require(_0xb6c8('0x2'));var BPromise=require(_0xb6c8('0x3'));var rs=require(_0xb6c8('0x4'));var fs=require('fs');var Redis=require(_0xb6c8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb6c8('0x6'));var logger=require(_0xb6c8('0x7'))(_0xb6c8('0x8'));var config=require(_0xb6c8('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb6c8('0xa')][_0xb6c8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x507fa2,_0x2fe1dc,_0x4cf483){return new BPromise(function(_0x54d3c1,_0x620a9f){return client[_0xb6c8('0xc')](_0x507fa2,_0x4cf483)['then'](function(_0x50fd98){logger[_0xb6c8('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x2fe1dc,'request\x20sent');logger[_0xb6c8('0xe')](_0xb6c8('0xf'),_0x2fe1dc,_0xb6c8('0x10'),JSON[_0xb6c8('0x11')](_0x50fd98));if(_0x50fd98['error']){if(_0x50fd98[_0xb6c8('0x12')]['code']===0x1f4){logger['error'](_0xb6c8('0x13'),_0x2fe1dc,_0x50fd98['error'][_0xb6c8('0x14')]);return _0x620a9f(_0x50fd98[_0xb6c8('0x12')][_0xb6c8('0x14')]);}logger[_0xb6c8('0x12')](_0xb6c8('0x13'),_0x2fe1dc,_0x50fd98[_0xb6c8('0x12')][_0xb6c8('0x14')]);return _0x54d3c1(_0x50fd98[_0xb6c8('0x12')]['message']);}else{logger[_0xb6c8('0xd')](_0xb6c8('0x13'),_0x2fe1dc,_0xb6c8('0x10'));_0x54d3c1(_0x50fd98['result'][_0xb6c8('0x14')]);}})['catch'](function(_0x5b569d){logger[_0xb6c8('0x12')](_0xb6c8('0x13'),_0x2fe1dc,_0x5b569d);_0x620a9f(_0x5b569d);});});}
\ No newline at end of file
+var _0xfc58=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s'];(function(_0x412572,_0x37e9e2){var _0x20881f=function(_0x58e4d2){while(--_0x58e4d2){_0x412572['push'](_0x412572['shift']());}};_0x20881f(++_0x37e9e2);}(_0xfc58,0x16e));var _0x8fc5=function(_0x3c3439,_0x51a4fd){_0x3c3439=_0x3c3439-0x0;var _0x1a2fbc=_0xfc58[_0x3c3439];return _0x1a2fbc;};'use strict';var _=require(_0x8fc5('0x0'));var util=require('util');var moment=require(_0x8fc5('0x1'));var BPromise=require(_0x8fc5('0x2'));var rs=require(_0x8fc5('0x3'));var fs=require('fs');var Redis=require(_0x8fc5('0x4'));var db=require(_0x8fc5('0x5'))['db'];var utils=require(_0x8fc5('0x6'));var logger=require(_0x8fc5('0x7'))(_0x8fc5('0x8'));var config=require(_0x8fc5('0x9'));var jayson=require(_0x8fc5('0xa'));var client=jayson[_0x8fc5('0xb')][_0x8fc5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3341f9,_0x803646,_0x1ae734){return new BPromise(function(_0x294cb8,_0x1f8650){return client[_0x8fc5('0xd')](_0x3341f9,_0x1ae734)['then'](function(_0x5ea5ae){logger[_0x8fc5('0xe')](_0x8fc5('0xf'),_0x803646,_0x8fc5('0x10'));logger['debug'](_0x8fc5('0x11'),_0x803646,'request\x20sent',JSON[_0x8fc5('0x12')](_0x5ea5ae));if(_0x5ea5ae[_0x8fc5('0x13')]){if(_0x5ea5ae[_0x8fc5('0x13')][_0x8fc5('0x14')]===0x1f4){logger['error'](_0x8fc5('0xf'),_0x803646,_0x5ea5ae[_0x8fc5('0x13')]['message']);return _0x1f8650(_0x5ea5ae[_0x8fc5('0x13')][_0x8fc5('0x15')]);}logger[_0x8fc5('0x13')]('UserFaxQueue,\x20%s,\x20%s',_0x803646,_0x5ea5ae[_0x8fc5('0x13')][_0x8fc5('0x15')]);return _0x294cb8(_0x5ea5ae[_0x8fc5('0x13')][_0x8fc5('0x15')]);}else{logger[_0x8fc5('0xe')](_0x8fc5('0xf'),_0x803646,'request\x20sent');_0x294cb8(_0x5ea5ae[_0x8fc5('0x16')]['message']);}})[_0x8fc5('0x17')](function(_0x438cd8){logger[_0x8fc5('0x13')](_0x8fc5('0xf'),_0x803646,_0x438cd8);_0x1f8650(_0x438cd8);});});}
\ No newline at end of file
index 5cc725a..915cee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x47310b,_0x3571f8){var _0x4d60db=function(_0x2ee476){while(--_0x2ee476){_0x47310b['push'](_0x47310b['shift']());}};_0x4d60db(++_0x3571f8);}(_0xe706,0xa3));var _0x6e70=function(_0x14bf66,_0x3e1066){_0x14bf66=_0x14bf66-0x0;var _0xaf4bf7=_0xe706[_0x14bf66];return _0xaf4bf7;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x5d4cb5,_0x22025e){var _0x25561e=function(_0x4d792a){while(--_0x4d792a){_0x5d4cb5['push'](_0x5d4cb5['shift']());}};_0x25561e(++_0x22025e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'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 4f28bfb..5a46045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc9c=['INTEGER','sequelize','exports'];(function(_0x195f46,_0x417c95){var _0x5a8c62=function(_0x404457){while(--_0x404457){_0x195f46['push'](_0x195f46['shift']());}};_0x5a8c62(++_0x417c95);}(_0xdc9c,0x13f));var _0xcdc9=function(_0x58fffc,_0x2dda71){_0x58fffc=_0x58fffc-0x0;var _0x583484=_0xdc9c[_0x58fffc];return _0x583484;};'use strict';var Sequelize=require(_0xcdc9('0x0'));module[_0xcdc9('0x1')]={'penalty':{'type':Sequelize[_0xcdc9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4958=['INTEGER','sequelize','exports'];(function(_0x28e5b2,_0x2d66f5){var _0x1b988c=function(_0x3c1485){while(--_0x3c1485){_0x28e5b2['push'](_0x28e5b2['shift']());}};_0x1b988c(++_0x2d66f5);}(_0x4958,0xca));var _0x8495=function(_0x359491,_0x2a20d9){_0x359491=_0x359491-0x0;var _0x33b9dc=_0x4958[_0x359491];return _0x33b9dc;};'use strict';var Sequelize=require(_0x8495('0x0'));module[_0x8495('0x1')]={'penalty':{'type':Sequelize[_0x8495('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e20ad6d..621b5eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf68e=['request-promise','path','rimraf','../../config/environment','exports','define','user_has_mail_queues','lodash','util','../../config/logger','bluebird'];(function(_0x7b59b,_0x38371a){var _0x4bf2bb=function(_0x54db30){while(--_0x54db30){_0x7b59b['push'](_0x7b59b['shift']());}};_0x4bf2bb(++_0x38371a);}(_0xf68e,0x15c));var _0xef68=function(_0x4a371e,_0x188332){_0x4a371e=_0x4a371e-0x0;var _0x288844=_0xf68e[_0x4a371e];return _0x288844;};'use strict';var _=require(_0xef68('0x0'));var util=require(_0xef68('0x1'));var logger=require(_0xef68('0x2'))('api');var moment=require('moment');var BPromise=require(_0xef68('0x3'));var rp=require(_0xef68('0x4'));var fs=require('fs');var path=require(_0xef68('0x5'));var rimraf=require(_0xef68('0x6'));var config=require(_0xef68('0x7'));var attributes=require('./userMailQueue.attributes');module[_0xef68('0x8')]=function(_0x2bbd03,_0x12975b){return _0x2bbd03[_0xef68('0x9')]('UserMailQueue',attributes,{'tableName':_0xef68('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbccc=['UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./userMailQueue.attributes','exports','define'];(function(_0x113ce5,_0x2abec0){var _0x50b1da=function(_0x259537){while(--_0x259537){_0x113ce5['push'](_0x113ce5['shift']());}};_0x50b1da(++_0x2abec0);}(_0xbccc,0x1b4));var _0xcbcc=function(_0x590d2e,_0x5e61e5){_0x590d2e=_0x590d2e-0x0;var _0x2334d8=_0xbccc[_0x590d2e];return _0x2334d8;};'use strict';var _=require(_0xcbcc('0x0'));var util=require(_0xcbcc('0x1'));var logger=require(_0xcbcc('0x2'))(_0xcbcc('0x3'));var moment=require(_0xcbcc('0x4'));var BPromise=require(_0xcbcc('0x5'));var rp=require(_0xcbcc('0x6'));var fs=require('fs');var path=require(_0xcbcc('0x7'));var rimraf=require(_0xcbcc('0x8'));var config=require('../../config/environment');var attributes=require(_0xcbcc('0x9'));module[_0xcbcc('0xa')]=function(_0x4c1067,_0x4d3972){return _0x4c1067[_0xcbcc('0xb')](_0xcbcc('0xc'),attributes,{'tableName':_0xcbcc('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8e2b7b3..2b86299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['rpc','../../config/environment','client','http','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3a853f,_0x2ee8b3){var _0xa9595=function(_0x534b35){while(--_0x534b35){_0x3a853f['push'](_0x3a853f['shift']());}};_0xa9595(++_0x2ee8b3);}(_0xa41a,0x6b));var _0xaa41=function(_0x130481,_0x14da9c){_0x130481=_0x130481-0x0;var _0x30a3ab=_0xa41a[_0x130481];return _0x30a3ab;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}
\ No newline at end of file
+var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x4707f0,_0x357df5){var _0x275155=function(_0x50494b){while(--_0x50494b){_0x4707f0['push'](_0x4707f0['shift']());}};_0x275155(++_0x357df5);}(_0xe14b,0x93));var _0xbe14=function(_0x28ca9a,_0x1d0c80){_0x28ca9a=_0x28ca9a-0x0;var _0x1a194c=_0xe14b[_0x28ca9a];return _0x1a194c;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
index 5428b7e..496335d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d36=['exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userNotification.controller','isAuthenticated','sendUserNotification'];(function(_0x50ac3e,_0x43e932){var _0xd83fce=function(_0x280ac4){while(--_0x280ac4){_0x50ac3e['push'](_0x50ac3e['shift']());}};_0xd83fce(++_0x43e932);}(_0x9d36,0xb1));var _0x69d3=function(_0x299951,_0x534ada){_0x299951=_0x299951-0x0;var _0x35220a=_0x9d36[_0x299951];return _0x35220a;};'use strict';var multer=require(_0x69d3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x69d3('0x1'));var express=require(_0x69d3('0x2'));var router=express[_0x69d3('0x3')]();var fs_extra=require(_0x69d3('0x4'));var auth=require(_0x69d3('0x5'));var interaction=require(_0x69d3('0x6'));var config=require('../../config/environment');var controller=require(_0x69d3('0x7'));router['post']('/',auth[_0x69d3('0x8')](),controller[_0x69d3('0x9')]);module[_0x69d3('0xa')]=router;
\ No newline at end of file
+var _0x0948=['../../components/interaction/service','../../config/environment','isAuthenticated','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x571f02,_0x2f2132){var _0x26906d=function(_0x317c97){while(--_0x317c97){_0x571f02['push'](_0x571f02['shift']());}};_0x26906d(++_0x2f2132);}(_0x0948,0x1c7));var _0x8094=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0x0948[_0x101e7b];return _0x4995c0;};'use strict';var multer=require(_0x8094('0x0'));var util=require(_0x8094('0x1'));var path=require(_0x8094('0x2'));var timeout=require(_0x8094('0x3'));var express=require('express');var router=express[_0x8094('0x4')]();var fs_extra=require(_0x8094('0x5'));var auth=require(_0x8094('0x6'));var interaction=require(_0x8094('0x7'));var config=require(_0x8094('0x8'));var controller=require('./userNotification.controller');router['post']('/',auth[_0x8094('0x9')](),controller['sendUserNotification']);module[_0x8094('0xa')]=router;
\ No newline at end of file
index 2c8e042..0985bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf30=['sequelize','TEXT','STRING','BOOLEAN'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xaf30,0x114));var _0x0af3=function(_0x1e05c1,_0x3cffa3){_0x1e05c1=_0x1e05c1-0x0;var _0x15f1ca=_0xaf30[_0x1e05c1];return _0x15f1ca;};'use strict';var Sequelize=require(_0x0af3('0x0'));module['exports']={'body':{'type':Sequelize[_0x0af3('0x1')]},'senderName':{'type':Sequelize[_0x0af3('0x2')]},'recipientsId':{'type':Sequelize[_0x0af3('0x1')]},'recipientsDescription':{'type':Sequelize[_0x0af3('0x2')]},'beep':{'type':Sequelize[_0x0af3('0x3')]}};
\ No newline at end of file
+var _0x34be=['STRING','sequelize','TEXT'];(function(_0x4920b4,_0x4cc913){var _0x54c574=function(_0x310d11){while(--_0x310d11){_0x4920b4['push'](_0x4920b4['shift']());}};_0x54c574(++_0x4cc913);}(_0x34be,0x17e));var _0xe34b=function(_0x4e11d5,_0x1ce514){_0x4e11d5=_0x4e11d5-0x0;var _0x5e4e4c=_0x34be[_0x4e11d5];return _0x5e4e4c;};'use strict';var Sequelize=require(_0xe34b('0x0'));module['exports']={'body':{'type':Sequelize[_0xe34b('0x1')]},'senderName':{'type':Sequelize[_0xe34b('0x2')]},'recipientsId':{'type':Sequelize[_0xe34b('0x1')]},'recipientsDescription':{'type':Sequelize[_0xe34b('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index d1bcb25..3ec5050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf323=['../../config/license/util','redis','defaults','localhost','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','then','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','error','faxqueue','mailqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','sortBy','join','transaction','UserNotification','forEach','emit','catch','Template','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','html','startCase','User','union','queue','replace','Queue','ids','push','all','flatten','getAgents','map','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x51556a,_0x529d3f){var _0x41e2fa=function(_0x486808){while(--_0x486808){_0x51556a['push'](_0x51556a['shift']());}};_0x41e2fa(++_0x529d3f);}(_0xf323,0x158));var _0x3f32=function(_0x534d44,_0x390f9c){_0x534d44=_0x534d44-0x0;var _0x13756e=_0xf323[_0x534d44];return _0x13756e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3f32('0x0'));var rp=require('request-promise');var moment=require(_0x3f32('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x3f32('0x2'));var util=require(_0x3f32('0x3'));var path=require(_0x3f32('0x4'));var sox=require(_0x3f32('0x5'));var csv=require(_0x3f32('0x6'));var ejs=require(_0x3f32('0x7'));var fs=require('fs');var fs_extra=require(_0x3f32('0x8'));var _=require(_0x3f32('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3f32('0xa'));var deskjs=require(_0x3f32('0xb'));var toCsv=require(_0x3f32('0x6'));var querystring=require(_0x3f32('0xc'));var Papa=require(_0x3f32('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3f32('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f32('0xf'));var logger=require(_0x3f32('0x10'))(_0x3f32('0x11'));var utils=require(_0x3f32('0x12'));var config=require(_0x3f32('0x13'));var licenseUtil=require(_0x3f32('0x14'));var db=require('../../mysqldb')['db'];config[_0x3f32('0x15')]=_[_0x3f32('0x16')](config[_0x3f32('0x15')],{'host':_0x3f32('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./userNotification.socket')[_0x3f32('0x18')](socket);function respondWithStatusCode(_0x2d16f6,_0x13962a){_0x13962a=_0x13962a||0xcc;return function(_0x13d68d){if(_0x13d68d){return _0x2d16f6[_0x3f32('0x19')](_0x13962a);}return _0x2d16f6['status'](_0x13962a)[_0x3f32('0x1a')]();};}function respondWithResult(_0x230c3d,_0x4a0be3){_0x4a0be3=_0x4a0be3||0xc8;return function(_0xedfae8){if(_0xedfae8){return _0x230c3d[_0x3f32('0x1b')](_0x4a0be3)[_0x3f32('0x1c')](_0xedfae8);}};}function respondWithFilteredResult(_0x24da75,_0x4047a7){return function(_0x47be9e){if(_0x47be9e){var _0x55d0ba=typeof _0x4047a7[_0x3f32('0x1d')]===_0x3f32('0x1e')&&typeof _0x4047a7[_0x3f32('0x1f')]==='undefined';var _0x289b0a=_0x47be9e['count'];var _0x5b3071=_0x55d0ba?0x0:_0x4047a7[_0x3f32('0x1d')];var _0x20adbd=_0x55d0ba?_0x47be9e[_0x3f32('0x20')]:_0x4047a7[_0x3f32('0x1d')]+_0x4047a7[_0x3f32('0x1f')];var _0x6f849;if(_0x20adbd>=_0x289b0a){_0x20adbd=_0x289b0a;_0x6f849=0xc8;}else{_0x6f849=0xce;}_0x24da75[_0x3f32('0x1b')](_0x6f849);return _0x24da75[_0x3f32('0x21')](_0x3f32('0x22'),_0x5b3071+'-'+_0x20adbd+'/'+_0x289b0a)[_0x3f32('0x1c')](_0x47be9e);}return null;};}function patchUpdates(_0x2a1119){return function(_0x6156b7){try{jsonpatch['apply'](_0x6156b7,_0x2a1119,!![]);}catch(_0x5a5759){return BPromise['reject'](_0x5a5759);}return _0x6156b7['save']();};}function saveUpdates(_0x1edda8,_0x2d6df3){return function(_0x2fe3ed){if(_0x2fe3ed){return _0x2fe3ed['update'](_0x1edda8)[_0x3f32('0x23')](function(_0x33fb1d){return _0x33fb1d;});}return null;};}function removeEntity(_0x1cba91,_0x5a31ba){return function(_0x51dadb){if(_0x51dadb){return _0x51dadb['destroy']()['then'](function(){_0x1cba91[_0x3f32('0x1b')](0xcc)[_0x3f32('0x1a')]();});}};}function handleEntityNotFound(_0x418535,_0x25e342){return function(_0x4c7b27){if(!_0x4c7b27){_0x418535['sendStatus'](0x194);}return _0x4c7b27;};}function handleError(_0x54016f,_0x322b02){_0x322b02=_0x322b02||0x1f4;return function(_0x21a0ac){logger['error'](_0x21a0ac['stack']);if(_0x21a0ac[_0x3f32('0x24')]){delete _0x21a0ac['name'];}_0x54016f[_0x3f32('0x1b')](_0x322b02)[_0x3f32('0x25')](_0x21a0ac);};}exports[_0x3f32('0x26')]=function(_0x3a8e34,_0x57cd10,_0x4f2c72){if(!_0x3a8e34[_0x3f32('0x27')][_0x3f32('0x28')](_0x3f32('0x29'))&&!_0x3a8e34['body']['hasOwnProperty']('TemplateId')){throw new db[(_0x3f32('0x2a'))][(_0x3f32('0x2b'))](_0x3f32('0x2c'));}else{if(_0x3a8e34[_0x3f32('0x27')]['hasOwnProperty'](_0x3f32('0x2d'))&&!_0x3a8e34[_0x3f32('0x27')][_0x3f32('0x28')](_0x3f32('0x2e'))){throw new db[(_0x3f32('0x2a'))][(_0x3f32('0x2b'))](_0x3f32('0x2f'));}if(!_0x3a8e34[_0x3f32('0x27')][_0x3f32('0x28')]('recipients')){throw new db[(_0x3f32('0x2a'))]['ValidationError'](_0x3f32('0x30'));}else{try{var _0x48212f=JSON[_0x3f32('0x31')](_0x3a8e34[_0x3f32('0x27')]['recipients']);}catch(_0x4d010f){logger[_0x3f32('0x32')](_0x4d010f);throw new db[(_0x3f32('0x2a'))][(_0x3f32('0x2b'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x3471b8=['chatqueue',_0x3f32('0x33'),_0x3f32('0x34'),'openchannelqueue',_0x3f32('0x35'),_0x3f32('0x36'),_0x3f32('0x37'),_0x3f32('0x38'),_0x3f32('0x39')];if(_[_0x3f32('0x3a')](_0x48212f,function(_0x37e821){return!_[_0x3f32('0x3b')](_0x3471b8,_0x37e821[_0x3f32('0x3c')][_0x3f32('0x3d')]());})){throw new db[(_0x3f32('0x2a'))][(_0x3f32('0x2b'))](_0x3f32('0x3e'));}}}var _0x372d6e={};_0x372d6e[_0x3f32('0x3f')]=_0x3a8e34['body']['hasOwnProperty'](_0x3f32('0x3f'))?_0x3a8e34[_0x3f32('0x27')]['senderName']:_0x3a8e34['user'][_0x3f32('0x40')];_0x372d6e['recipientsDescription']=_[_0x3f32('0x41')](_0x3a8e34['body']['recipientsDescription'])?null:_0x3a8e34[_0x3f32('0x27')][_0x3f32('0x42')];_0x372d6e[_0x3f32('0x43')]=_0x3a8e34[_0x3f32('0x27')][_0x3f32('0x43')]||![];_0x372d6e['SenderId']=_0x3a8e34[_0x3f32('0x39')]['id'];return getContent(_0x3a8e34['body'])[_0x3f32('0x23')](function(_0x42bdc5){_0x372d6e[_0x3f32('0x27')]=_0x42bdc5;return getRecipients(_0x48212f);})[_0x3f32('0x23')](function(_0x53437c){_0x372d6e['recipientsId']=_[_0x3f32('0x44')](_0x53437c)[_0x3f32('0x45')](',');return db['sequelize'][_0x3f32('0x46')](function(_0x37e2c5){return db[_0x3f32('0x47')]['create'](_0x372d6e,{'raw':!![],'transaction':_0x37e2c5})['then'](function(_0x550df4){var _0x5d670f={'sender':_0x372d6e[_0x3f32('0x3f')],'description':_0x372d6e[_0x3f32('0x42')],'content':_0x372d6e[_0x3f32('0x27')],'beep':_0x372d6e[_0x3f32('0x43')]};_0x53437c[_0x3f32('0x48')](function(_0x4585b6){_0x5d670f['recipient']=_0x4585b6;socket[_0x3f32('0x49')]('userNotification:send',_0x5d670f);});return _0x550df4;});});})[_0x3f32('0x23')](respondWithResult(_0x57cd10,0xc9))[_0x3f32('0x4a')](handleError(_0x57cd10,null));};function getContent(_0x5d29ac){return new BPromise(function(_0x4ca5db,_0x1a78b7){if(_0x5d29ac[_0x3f32('0x29')]){_0x4ca5db(_0x5d29ac[_0x3f32('0x29')]);return;}return db[_0x3f32('0x4b')][_0x3f32('0x4c')]({'attributes':['html'],'where':{'id':_0x5d29ac[_0x3f32('0x2d')]},'raw':!![]})['then'](function(_0xe647d6){if(!_0xe647d6)throw new db[(_0x3f32('0x2a'))]['ValidationError'](_0x3f32('0x4d'));var _0x38ba9d=Mustache['render'](_0xe647d6[_0x3f32('0x4e')],_0x5d29ac[_0x3f32('0x2e')]);_0x4ca5db(_0x38ba9d);})[_0x3f32('0x4a')](function(_0x36b4c4){_0x1a78b7(_0x36b4c4);});});}function getRecipients(_0x5a2c8f){return new BPromise(function(_0x2ee60f,_0x1335b4){var _0x551e8b=[];var _0x5b51cd=[];_0x5a2c8f[_0x3f32('0x48')](function(_0x480b67){var _0x3bac9e=_[_0x3f32('0x4f')](_0x480b67[_0x3f32('0x3c')]['toLowerCase']());if(_0x3bac9e===_0x3f32('0x50')){_0x551e8b=_[_0x3f32('0x51')](_0x551e8b,_0x480b67['ids']);}else{if(_[_0x3f32('0x3b')](_0x3bac9e,_0x3f32('0x52')))_0x3bac9e=_0x3bac9e[_0x3f32('0x53')](_0x3f32('0x52'),_0x3f32('0x54'));_0x480b67[_0x3f32('0x55')][_0x3f32('0x48')](function(_0xc65a70){_0x5b51cd[_0x3f32('0x56')](getAgents(_0x3bac9e,_0xc65a70));});}});return BPromise[_0x3f32('0x57')](_0x5b51cd)[_0x3f32('0x23')](function(_0x286759){_0x551e8b=_['union'](_0x551e8b,_[_0x3f32('0x58')](_0x286759));_0x2ee60f(_0x551e8b);})[_0x3f32('0x4a')](function(_0x458375){_0x1335b4(_0x458375);});});}function getAgents(_0x4186cc,_0x312a0e){return new BPromise(function(_0x5037fd,_0x45cef4){return db[_0x4186cc][_0x3f32('0x4c')]({'where':{'id':_0x312a0e}})[_0x3f32('0x23')](function(_0x3dfe42){return _0x3dfe42[_0x3f32('0x59')]({'attributes':['id'],'raw':!![]})[_0x3f32('0x23')](function(_0xcf85a0){var _0x340f94=_[_0x3f32('0x5a')](_0xcf85a0,'id');_0x5037fd(_0x340f94);});})[_0x3f32('0x4a')](function(_0x1a0379){_0x45cef4(_0x1a0379);});});}
\ No newline at end of file
+var _0xab7d=['moment','bluebird','mustache','path','sox','to-csv','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','../../mysqldb','redis','localhost','register','sendStatus','status','end','offset','undefined','limit','count','apply','save','update','then','destroy','stack','name','send','sendUserNotification','body','text','TemplateId','Sequelize','ValidationError','hasOwnProperty','view','Missing\x20\x27recipients\x27\x20parameter','parse','recipients','error','chatqueue','mailqueue','voicequeue','whatsappqueue','team','user','some','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','forEach','recipient','emit','userNotification:send','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','catch','startCase','model','User','union','ids','includes','replace','queue','Queue','push','all','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x1f87a3,_0x3799c5){var _0x17ebae=function(_0x55b076){while(--_0x55b076){_0x1f87a3['push'](_0x1f87a3['shift']());}};_0x17ebae(++_0x3799c5);}(_0xab7d,0xbf));var _0xdab7=function(_0x65f9b1,_0x129faf){_0x65f9b1=_0x65f9b1-0x0;var _0x5ac5bf=_0xab7d[_0x65f9b1];return _0x5ac5bf;};'use strict';var emlformat=require(_0xdab7('0x0'));var rimraf=require(_0xdab7('0x1'));var zipdir=require(_0xdab7('0x2'));var jsonpatch=require(_0xdab7('0x3'));var rp=require(_0xdab7('0x4'));var moment=require(_0xdab7('0x5'));var BPromise=require(_0xdab7('0x6'));var Mustache=require(_0xdab7('0x7'));var util=require('util');var path=require(_0xdab7('0x8'));var sox=require(_0xdab7('0x9'));var csv=require(_0xdab7('0xa'));var ejs=require(_0xdab7('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdab7('0xc'));var squel=require(_0xdab7('0xd'));var crypto=require(_0xdab7('0xe'));var jsforce=require(_0xdab7('0xf'));var deskjs=require(_0xdab7('0x10'));var toCsv=require(_0xdab7('0xa'));var querystring=require(_0xdab7('0x11'));var Papa=require(_0xdab7('0x12'));var Redis=require(_0xdab7('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xdab7('0x14'));var as=require(_0xdab7('0x15'));var hardwareService=require(_0xdab7('0x16'));var logger=require(_0xdab7('0x17'))('api');var utils=require(_0xdab7('0x18'));var config=require(_0xdab7('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xdab7('0x1a'))['db'];config[_0xdab7('0x1b')]=_['defaults'](config[_0xdab7('0x1b')],{'host':_0xdab7('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdab7('0x1b')]));require('./userNotification.socket')[_0xdab7('0x1d')](socket);function respondWithStatusCode(_0x31c1f0,_0x23d8d1){_0x23d8d1=_0x23d8d1||0xcc;return function(_0x41b343){if(_0x41b343){return _0x31c1f0[_0xdab7('0x1e')](_0x23d8d1);}return _0x31c1f0[_0xdab7('0x1f')](_0x23d8d1)[_0xdab7('0x20')]();};}function respondWithResult(_0x3f5e1f,_0x330833){_0x330833=_0x330833||0xc8;return function(_0x1edb95){if(_0x1edb95){return _0x3f5e1f['status'](_0x330833)['json'](_0x1edb95);}};}function respondWithFilteredResult(_0x5f549b,_0x2cbc7c){return function(_0x1168bc){if(_0x1168bc){var _0x559e70=typeof _0x2cbc7c[_0xdab7('0x21')]===_0xdab7('0x22')&&typeof _0x2cbc7c[_0xdab7('0x23')]===_0xdab7('0x22');var _0x19011d=_0x1168bc['count'];var _0x5b4d68=_0x559e70?0x0:_0x2cbc7c[_0xdab7('0x21')];var _0x1b8bf2=_0x559e70?_0x1168bc[_0xdab7('0x24')]:_0x2cbc7c[_0xdab7('0x21')]+_0x2cbc7c[_0xdab7('0x23')];var _0x261bfc;if(_0x1b8bf2>=_0x19011d){_0x1b8bf2=_0x19011d;_0x261bfc=0xc8;}else{_0x261bfc=0xce;}_0x5f549b['status'](_0x261bfc);return _0x5f549b['set']('Content-Range',_0x5b4d68+'-'+_0x1b8bf2+'/'+_0x19011d)['json'](_0x1168bc);}return null;};}function patchUpdates(_0x47234c){return function(_0x869037){try{jsonpatch[_0xdab7('0x25')](_0x869037,_0x47234c,!![]);}catch(_0x11e464){return BPromise['reject'](_0x11e464);}return _0x869037[_0xdab7('0x26')]();};}function saveUpdates(_0x188e35,_0x9f7de9){return function(_0x31d733){if(_0x31d733){return _0x31d733[_0xdab7('0x27')](_0x188e35)[_0xdab7('0x28')](function(_0x3e3148){return _0x3e3148;});}return null;};}function removeEntity(_0x5be733,_0x57beb1){return function(_0x1a519a){if(_0x1a519a){return _0x1a519a[_0xdab7('0x29')]()['then'](function(){_0x5be733[_0xdab7('0x1f')](0xcc)[_0xdab7('0x20')]();});}};}function handleEntityNotFound(_0x3002f0,_0x452b0d){return function(_0xa144dc){if(!_0xa144dc){_0x3002f0[_0xdab7('0x1e')](0x194);}return _0xa144dc;};}function handleError(_0x1cfeaf,_0x29d7c0){_0x29d7c0=_0x29d7c0||0x1f4;return function(_0x6a2bfc){logger['error'](_0x6a2bfc[_0xdab7('0x2a')]);if(_0x6a2bfc[_0xdab7('0x2b')]){delete _0x6a2bfc[_0xdab7('0x2b')];}_0x1cfeaf['status'](_0x29d7c0)[_0xdab7('0x2c')](_0x6a2bfc);};}exports[_0xdab7('0x2d')]=function(_0x23cb54,_0x2f02ad,_0x16228e){if(!_0x23cb54[_0xdab7('0x2e')]['hasOwnProperty'](_0xdab7('0x2f'))&&!_0x23cb54[_0xdab7('0x2e')]['hasOwnProperty'](_0xdab7('0x30'))){throw new db[(_0xdab7('0x31'))][(_0xdab7('0x32'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x23cb54[_0xdab7('0x2e')][_0xdab7('0x33')](_0xdab7('0x30'))&&!_0x23cb54['body'][_0xdab7('0x33')](_0xdab7('0x34'))){throw new db['Sequelize']['ValidationError']('Missing\x20\x27view\x27\x20parameter');}if(!_0x23cb54[_0xdab7('0x2e')][_0xdab7('0x33')]('recipients')){throw new db[(_0xdab7('0x31'))]['ValidationError'](_0xdab7('0x35'));}else{try{var _0x7e0496=JSON[_0xdab7('0x36')](_0x23cb54[_0xdab7('0x2e')][_0xdab7('0x37')]);}catch(_0x131f15){logger[_0xdab7('0x38')](_0x131f15);throw new db['Sequelize'][(_0xdab7('0x32'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x5ce18c=[_0xdab7('0x39'),'faxqueue',_0xdab7('0x3a'),'openchannelqueue','smsqueue',_0xdab7('0x3b'),_0xdab7('0x3c'),_0xdab7('0x3d'),_0xdab7('0x3e')];if(_[_0xdab7('0x3f')](_0x7e0496,function(_0x43cadc){return!_['includes'](_0x5ce18c,_0x43cadc['model']['toLowerCase']());})){throw new db[(_0xdab7('0x31'))][(_0xdab7('0x32'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x2b98b1={};_0x2b98b1['senderName']=_0x23cb54[_0xdab7('0x2e')]['hasOwnProperty'](_0xdab7('0x40'))?_0x23cb54[_0xdab7('0x2e')][_0xdab7('0x40')]:_0x23cb54['user'][_0xdab7('0x41')];_0x2b98b1[_0xdab7('0x42')]=_[_0xdab7('0x43')](_0x23cb54['body']['recipientsDescription'])?null:_0x23cb54[_0xdab7('0x2e')]['recipientsDescription'];_0x2b98b1['beep']=_0x23cb54[_0xdab7('0x2e')][_0xdab7('0x44')]||![];_0x2b98b1[_0xdab7('0x45')]=_0x23cb54[_0xdab7('0x3e')]['id'];return getContent(_0x23cb54[_0xdab7('0x2e')])[_0xdab7('0x28')](function(_0x29874a){_0x2b98b1[_0xdab7('0x2e')]=_0x29874a;return getRecipients(_0x7e0496);})[_0xdab7('0x28')](function(_0x9ce096){_0x2b98b1[_0xdab7('0x46')]=_[_0xdab7('0x47')](_0x9ce096)[_0xdab7('0x48')](',');return db[_0xdab7('0x49')][_0xdab7('0x4a')](function(_0x395b89){return db[_0xdab7('0x4b')]['create'](_0x2b98b1,{'raw':!![],'transaction':_0x395b89})[_0xdab7('0x28')](function(_0x227082){var _0x2a24a1={'sender':_0x2b98b1['senderName'],'description':_0x2b98b1[_0xdab7('0x42')],'content':_0x2b98b1['body'],'beep':_0x2b98b1[_0xdab7('0x44')]};_0x9ce096[_0xdab7('0x4c')](function(_0x5234db){_0x2a24a1[_0xdab7('0x4d')]=_0x5234db;socket[_0xdab7('0x4e')](_0xdab7('0x4f'),_0x2a24a1);});return _0x227082;});});})['then'](respondWithResult(_0x2f02ad,0xc9))['catch'](handleError(_0x2f02ad,null));};function getContent(_0x3eb02b){return new BPromise(function(_0x426579,_0x5c24bc){if(_0x3eb02b[_0xdab7('0x2f')]){_0x426579(_0x3eb02b['text']);return;}return db[_0xdab7('0x50')][_0xdab7('0x51')]({'attributes':[_0xdab7('0x52')],'where':{'id':_0x3eb02b['TemplateId']},'raw':!![]})[_0xdab7('0x28')](function(_0x311a58){if(!_0x311a58)throw new db['Sequelize']['ValidationError'](_0xdab7('0x53'));var _0x2029ec=Mustache['render'](_0x311a58['html'],_0x3eb02b[_0xdab7('0x34')]);_0x426579(_0x2029ec);})[_0xdab7('0x54')](function(_0x142244){_0x5c24bc(_0x142244);});});}function getRecipients(_0x176a57){return new BPromise(function(_0x3d228c,_0xa56ef8){var _0x283876=[];var _0x4db261=[];_0x176a57['forEach'](function(_0x300b77){var _0x312646=_[_0xdab7('0x55')](_0x300b77[_0xdab7('0x56')]['toLowerCase']());if(_0x312646===_0xdab7('0x57')){_0x283876=_[_0xdab7('0x58')](_0x283876,_0x300b77[_0xdab7('0x59')]);}else{if(_[_0xdab7('0x5a')](_0x312646,'queue'))_0x312646=_0x312646[_0xdab7('0x5b')](_0xdab7('0x5c'),_0xdab7('0x5d'));_0x300b77[_0xdab7('0x59')]['forEach'](function(_0x2c2efe){_0x4db261[_0xdab7('0x5e')](getAgents(_0x312646,_0x2c2efe));});}});return BPromise[_0xdab7('0x5f')](_0x4db261)[_0xdab7('0x28')](function(_0x3404e6){_0x283876=_[_0xdab7('0x58')](_0x283876,_['flatten'](_0x3404e6));_0x3d228c(_0x283876);})[_0xdab7('0x54')](function(_0x37eb59){_0xa56ef8(_0x37eb59);});});}function getAgents(_0x14df98,_0xe81d2f){return new BPromise(function(_0x54435e,_0x4c40ac){return db[_0x14df98][_0xdab7('0x51')]({'where':{'id':_0xe81d2f}})[_0xdab7('0x28')](function(_0x4c693a){return _0x4c693a[_0xdab7('0x60')]({'attributes':['id'],'raw':!![]})[_0xdab7('0x28')](function(_0x2aaa10){var _0x40a73b=_[_0xdab7('0x61')](_0x2aaa10,'id');_0x54435e(_0x40a73b);});})[_0xdab7('0x54')](function(_0x4708d6){_0x4c40ac(_0x4708d6);});});}
\ No newline at end of file
index e732359..73535fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce12=['hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','hasOwnProperty'];(function(_0x21b20b,_0x1d387d){var _0x403d22=function(_0x527d9b){while(--_0x527d9b){_0x21b20b['push'](_0x21b20b['shift']());}};_0x403d22(++_0x1d387d);}(_0xce12,0x134));var _0x2ce1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce12[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x2ce1('0x0'));var UserNotification=require(_0x2ce1('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x2ce1('0x2')](0x0);var events={'afterCreate':_0x2ce1('0x3'),'afterUpdate':_0x2ce1('0x4'),'afterDestroy':_0x2ce1('0x5')};function emitEvent(_0x3ac68e){return function(_0x29d050,_0x1e9f97,_0x58fe9e){UserNotificationEvents['emit'](_0x3ac68e+':'+_0x29d050['id'],_0x29d050);UserNotificationEvents['emit'](_0x3ac68e,_0x29d050);_0x58fe9e(null);};}for(var e in events){if(events[_0x2ce1('0x6')](e)){var event=events[e];UserNotification[_0x2ce1('0x7')](e,emitEvent(event));}}module[_0x2ce1('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0xaf05=['setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb','UserNotification'];(function(_0x4d21ff,_0x19d202){var _0x22b554=function(_0x4473c5){while(--_0x4473c5){_0x4d21ff['push'](_0x4d21ff['shift']());}};_0x22b554(++_0x19d202);}(_0xaf05,0xc3));var _0x5af0=function(_0x6006b2,_0xb54dab){_0x6006b2=_0x6006b2-0x0;var _0x4f159e=_0xaf05[_0x6006b2];return _0x4f159e;};'use strict';var EventEmitter=require(_0x5af0('0x0'));var UserNotification=require(_0x5af0('0x1'))['db'][_0x5af0('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x5af0('0x3')](0x0);var events={'afterCreate':_0x5af0('0x4'),'afterUpdate':_0x5af0('0x5'),'afterDestroy':_0x5af0('0x6')};function emitEvent(_0x4ca66a){return function(_0x187b5c,_0x1b8605,_0x4ca7cf){UserNotificationEvents[_0x5af0('0x7')](_0x4ca66a+':'+_0x187b5c['id'],_0x187b5c);UserNotificationEvents[_0x5af0('0x7')](_0x4ca66a,_0x187b5c);_0x4ca7cf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x5af0('0x8')]=UserNotificationEvents;
\ No newline at end of file
index c84ab75..17255c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc02d=['userNotifications','utf8mb4_unicode_ci','lodash','util','api','request-promise','rimraf','exports','define'];(function(_0x450ebb,_0x37746f){var _0x19a464=function(_0x6a7ce9){while(--_0x6a7ce9){_0x450ebb['push'](_0x450ebb['shift']());}};_0x19a464(++_0x37746f);}(_0xc02d,0xc8));var _0xdc02=function(_0x5f217b,_0x46594f){_0x5f217b=_0x5f217b-0x0;var _0x508a7e=_0xc02d[_0x5f217b];return _0x508a7e;};'use strict';var _=require(_0xdc02('0x0'));var util=require(_0xdc02('0x1'));var logger=require('../../config/logger')(_0xdc02('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xdc02('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdc02('0x4'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0xdc02('0x5')]=function(_0xb3dfb0,_0x54da61){return _0xb3dfb0[_0xdc02('0x6')]('UserNotification',attributes,{'tableName':_0xdc02('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xdc02('0x8')});};
\ No newline at end of file
+var _0x6e90=['./userNotification.attributes','exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment'];(function(_0x2b2ac8,_0x22f79a){var _0x5cd081=function(_0x31155d){while(--_0x31155d){_0x2b2ac8['push'](_0x2b2ac8['shift']());}};_0x5cd081(++_0x22f79a);}(_0x6e90,0xf5));var _0x06e9=function(_0x1a37fa,_0x94a584){_0x1a37fa=_0x1a37fa-0x0;var _0x317191=_0x6e90[_0x1a37fa];return _0x317191;};'use strict';var _=require(_0x06e9('0x0'));var util=require(_0x06e9('0x1'));var logger=require(_0x06e9('0x2'))('api');var moment=require(_0x06e9('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x06e9('0x4'));var rimraf=require(_0x06e9('0x5'));var config=require(_0x06e9('0x6'));var attributes=require(_0x06e9('0x7'));module[_0x06e9('0x8')]=function(_0x39e3c5,_0x5e0dad){return _0x39e3c5[_0x06e9('0x9')](_0x06e9('0xa'),attributes,{'tableName':_0x06e9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x06e9('0xc'),'collate':_0x06e9('0xd')});};
\ No newline at end of file
index 6a53f5b..1bcaf89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd52f=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash','util'];(function(_0x3f7a3d,_0x42dbfa){var _0x272beb=function(_0x151dcb){while(--_0x151dcb){_0x3f7a3d['push'](_0x3f7a3d['shift']());}};_0x272beb(++_0x42dbfa);}(_0xd52f,0xbb));var _0xfd52=function(_0x2a4b60,_0x5d2aa9){_0x2a4b60=_0x2a4b60-0x0;var _0x281d36=_0xd52f[_0x2a4b60];return _0x281d36;};'use strict';var _=require(_0xfd52('0x0'));var util=require(_0xfd52('0x1'));var moment=require(_0xfd52('0x2'));var BPromise=require(_0xfd52('0x3'));var rs=require(_0xfd52('0x4'));var fs=require('fs');var Redis=require(_0xfd52('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd52('0x6'));var logger=require(_0xfd52('0x7'))(_0xfd52('0x8'));var config=require(_0xfd52('0x9'));var jayson=require(_0xfd52('0xa'));var client=jayson[_0xfd52('0xb')][_0xfd52('0xc')]({'port':0x232a});config[_0xfd52('0xd')]=_[_0xfd52('0xe')](config[_0xfd52('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xfd52('0xf'))(new Redis(config[_0xfd52('0xd')]));require(_0xfd52('0x10'))[_0xfd52('0x11')](socket);function respondWithRpcPromise(_0x4a7407,_0x5c85b6,_0x5d2645){return new BPromise(function(_0x44bb2c,_0x48c109){return client[_0xfd52('0x12')](_0x4a7407,_0x5d2645)[_0xfd52('0x13')](function(_0x16770e){logger[_0xfd52('0x14')](_0xfd52('0x15'),_0x5c85b6,_0xfd52('0x16'));logger['debug'](_0xfd52('0x17'),_0x5c85b6,_0xfd52('0x16'),JSON[_0xfd52('0x18')](_0x16770e));if(_0x16770e[_0xfd52('0x19')]){if(_0x16770e[_0xfd52('0x19')]['code']===0x1f4){logger[_0xfd52('0x19')](_0xfd52('0x15'),_0x5c85b6,_0x16770e[_0xfd52('0x19')][_0xfd52('0x1a')]);return _0x48c109(_0x16770e[_0xfd52('0x19')][_0xfd52('0x1a')]);}logger[_0xfd52('0x19')](_0xfd52('0x15'),_0x5c85b6,_0x16770e['error'][_0xfd52('0x1a')]);return _0x44bb2c(_0x16770e[_0xfd52('0x19')]['message']);}else{logger[_0xfd52('0x14')](_0xfd52('0x15'),_0x5c85b6,'request\x20sent');_0x44bb2c(_0x16770e['result'][_0xfd52('0x1a')]);}})['catch'](function(_0x21f3d1){logger['error'](_0xfd52('0x15'),_0x5c85b6,_0x21f3d1);_0x48c109(_0x21f3d1);});});}
\ No newline at end of file
+var _0x3eca=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','request','then','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x41e2a9,_0x3d8978){var _0x24fea7=function(_0x4b8bd5){while(--_0x4b8bd5){_0x41e2a9['push'](_0x41e2a9['shift']());}};_0x24fea7(++_0x3d8978);}(_0x3eca,0x104));var _0xa3ec=function(_0xdad237,_0x361a1d){_0xdad237=_0xdad237-0x0;var _0x15c575=_0x3eca[_0xdad237];return _0x15c575;};'use strict';var _=require('lodash');var util=require(_0xa3ec('0x0'));var moment=require(_0xa3ec('0x1'));var BPromise=require(_0xa3ec('0x2'));var rs=require(_0xa3ec('0x3'));var fs=require('fs');var Redis=require(_0xa3ec('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa3ec('0x5'));var logger=require(_0xa3ec('0x6'))(_0xa3ec('0x7'));var config=require(_0xa3ec('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa3ec('0x9')][_0xa3ec('0xa')]({'port':0x232a});config[_0xa3ec('0xb')]=_[_0xa3ec('0xc')](config[_0xa3ec('0xb')],{'host':_0xa3ec('0xd'),'port':0x18eb});var socket=require(_0xa3ec('0xe'))(new Redis(config[_0xa3ec('0xb')]));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x3dca72,_0x2e153f,_0x3f3cbe){return new BPromise(function(_0x582039,_0xa0034){return client[_0xa3ec('0xf')](_0x3dca72,_0x3f3cbe)[_0xa3ec('0x10')](function(_0x1236af){logger['info'](_0xa3ec('0x11'),_0x2e153f,_0xa3ec('0x12'));logger[_0xa3ec('0x13')](_0xa3ec('0x14'),_0x2e153f,'request\x20sent',JSON[_0xa3ec('0x15')](_0x1236af));if(_0x1236af['error']){if(_0x1236af[_0xa3ec('0x16')][_0xa3ec('0x17')]===0x1f4){logger['error'](_0xa3ec('0x11'),_0x2e153f,_0x1236af[_0xa3ec('0x16')]['message']);return _0xa0034(_0x1236af[_0xa3ec('0x16')][_0xa3ec('0x18')]);}logger[_0xa3ec('0x16')](_0xa3ec('0x11'),_0x2e153f,_0x1236af['error'][_0xa3ec('0x18')]);return _0x582039(_0x1236af[_0xa3ec('0x16')]['message']);}else{logger['info'](_0xa3ec('0x11'),_0x2e153f,_0xa3ec('0x12'));_0x582039(_0x1236af[_0xa3ec('0x19')][_0xa3ec('0x18')]);}})['catch'](function(_0x32def7){logger[_0xa3ec('0x16')](_0xa3ec('0x11'),_0x2e153f,_0x32def7);_0xa0034(_0x32def7);});});}
\ No newline at end of file
index 16b89de..af94196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51e=['update','emit','removeListener','register','length','userNotification:','./userNotification.events','save'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xd51e,0x11e));var _0xed51=function(_0x2bf888,_0x374f0b){_0x2bf888=_0x2bf888-0x0;var _0x3038d6=_0xd51e[_0x2bf888];return _0x3038d6;};'use strict';var UserNotificationEvents=require(_0xed51('0x0'));var events=[_0xed51('0x1'),'remove',_0xed51('0x2')];function createListener(_0x3c89a2,_0x207e47){return function(_0x30a512){_0x207e47[_0xed51('0x3')](_0x3c89a2,_0x30a512);};}function removeListener(_0x41005d,_0xe44aaa){return function(){UserNotificationEvents[_0xed51('0x4')](_0x41005d,_0xe44aaa);};}exports[_0xed51('0x5')]=function(_0x2029f7){for(var _0x1e7e8a=0x0,_0x41116c=events[_0xed51('0x6')];_0x1e7e8a<_0x41116c;_0x1e7e8a++){var _0x583cf1=events[_0x1e7e8a];var _0x357759=createListener(_0xed51('0x7')+_0x583cf1,_0x2029f7);UserNotificationEvents['on'](_0x583cf1,_0x357759);}};
\ No newline at end of file
+var _0xaec6=['userNotification:','./userNotification.events','remove','removeListener','register','length'];(function(_0x35d8f4,_0x45eee8){var _0x4e8db8=function(_0x4e2652){while(--_0x4e2652){_0x35d8f4['push'](_0x35d8f4['shift']());}};_0x4e8db8(++_0x45eee8);}(_0xaec6,0x145));var _0x6aec=function(_0x4bf37c,_0x5a1e4c){_0x4bf37c=_0x4bf37c-0x0;var _0x58215f=_0xaec6[_0x4bf37c];return _0x58215f;};'use strict';var UserNotificationEvents=require(_0x6aec('0x0'));var events=['save',_0x6aec('0x1'),'update'];function createListener(_0x30933d,_0x587ec1){return function(_0x504a83){_0x587ec1['emit'](_0x30933d,_0x504a83);};}function removeListener(_0x33212a,_0x43025e){return function(){UserNotificationEvents[_0x6aec('0x2')](_0x33212a,_0x43025e);};}exports[_0x6aec('0x3')]=function(_0x252b43){for(var _0x4b0d9b=0x0,_0x41011b=events[_0x6aec('0x4')];_0x4b0d9b<_0x41011b;_0x4b0d9b++){var _0xe0b110=events[_0x4b0d9b];var _0x5a1540=createListener(_0x6aec('0x5')+_0xe0b110,_0x252b43);UserNotificationEvents['on'](_0xe0b110,_0x5a1540);}};
\ No newline at end of file
index f7f3877..961350d 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(_0x1e172a,_0x52102b){var _0x96338b=function(_0x307313){while(--_0x307313){_0x1e172a['push'](_0x1e172a['shift']());}};_0x96338b(++_0x52102b);}(_0x9c44,0x178));var _0x49c4=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x9c44[_0x32f7d7];return _0x133d09;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x10dc6e,_0x2f9e4f){var _0x5b7cc7=function(_0x15dafc){while(--_0x15dafc){_0x10dc6e['push'](_0x10dc6e['shift']());}};_0x5b7cc7(++_0x2f9e4f);}(_0xe706,0xa3));var _0x6e70=function(_0x5659c0,_0x5f2532){_0x5659c0=_0x5659c0-0x0;var _0x36e3c0=_0xe706[_0x5659c0];return _0x36e3c0;};'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 f0fffb5..fa4b786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa73=['exports','INTEGER','sequelize'];(function(_0x3fa37f,_0x397f16){var _0x5a01d5=function(_0xa23c65){while(--_0xa23c65){_0x3fa37f['push'](_0x3fa37f['shift']());}};_0x5a01d5(++_0x397f16);}(_0xaa73,0xda));var _0x3aa7=function(_0xa503a,_0x57e374){_0xa503a=_0xa503a-0x0;var _0x1257c2=_0xaa73[_0xa503a];return _0x1257c2;};'use strict';var Sequelize=require(_0x3aa7('0x0'));module[_0x3aa7('0x1')]={'penalty':{'type':Sequelize[_0x3aa7('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf2c0=['sequelize','exports','INTEGER'];(function(_0x4ec69a,_0x2826de){var _0x280921=function(_0x57a021){while(--_0x57a021){_0x4ec69a['push'](_0x4ec69a['shift']());}};_0x280921(++_0x2826de);}(_0xf2c0,0xc0));var _0x0f2c=function(_0x5f2874,_0x240395){_0x5f2874=_0x5f2874-0x0;var _0x1ae96e=_0xf2c0[_0x5f2874];return _0x1ae96e;};'use strict';var Sequelize=require(_0x0f2c('0x0'));module[_0x0f2c('0x1')]={'penalty':{'type':Sequelize[_0x0f2c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 166df4e..a8607f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x177c=['../../config/environment','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','moment','request-promise','path','rimraf'];(function(_0x2dff21,_0x1c33cb){var _0x53d544=function(_0x42a695){while(--_0x42a695){_0x2dff21['push'](_0x2dff21['shift']());}};_0x53d544(++_0x1c33cb);}(_0x177c,0x15a));var _0xc177=function(_0x8a3add,_0x13c3ca){_0x8a3add=_0x8a3add-0x0;var _0x4cfbd3=_0x177c[_0x8a3add];return _0x4cfbd3;};'use strict';var _=require(_0xc177('0x0'));var util=require(_0xc177('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc177('0x2'));var BPromise=require('bluebird');var rp=require(_0xc177('0x3'));var fs=require('fs');var path=require(_0xc177('0x4'));var rimraf=require(_0xc177('0x5'));var config=require(_0xc177('0x6'));var attributes=require('./userOpenchannelQueue.attributes');module[_0xc177('0x7')]=function(_0x2f45ca,_0x3a7e7f){return _0x2f45ca[_0xc177('0x8')](_0xc177('0x9'),attributes,{'tableName':_0xc177('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc2a4=['define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes'];(function(_0x2bd855,_0x9e4720){var _0x2d1a9f=function(_0x34406f){while(--_0x34406f){_0x2bd855['push'](_0x2bd855['shift']());}};_0x2d1a9f(++_0x9e4720);}(_0xc2a4,0x16f));var _0x4c2a=function(_0x281c78,_0x96561f){_0x281c78=_0x281c78-0x0;var _0x2c1a59=_0xc2a4[_0x281c78];return _0x2c1a59;};'use strict';var _=require(_0x4c2a('0x0'));var util=require(_0x4c2a('0x1'));var logger=require(_0x4c2a('0x2'))(_0x4c2a('0x3'));var moment=require(_0x4c2a('0x4'));var BPromise=require(_0x4c2a('0x5'));var rp=require(_0x4c2a('0x6'));var fs=require('fs');var path=require(_0x4c2a('0x7'));var rimraf=require(_0x4c2a('0x8'));var config=require(_0x4c2a('0x9'));var attributes=require(_0x4c2a('0xa'));module['exports']=function(_0x1cd816,_0x5aa960){return _0x1cd816[_0x4c2a('0xb')](_0x4c2a('0xc'),attributes,{'tableName':_0x4c2a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cbd9db4..10506a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3a2=['stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s'];(function(_0x511ebd,_0x311597){var _0x2eff09=function(_0x21ab5a){while(--_0x21ab5a){_0x511ebd['push'](_0x511ebd['shift']());}};_0x2eff09(++_0x311597);}(_0xd3a2,0xdf));var _0x2d3a=function(_0x37195b,_0x55cc30){_0x37195b=_0x37195b-0x0;var _0x49ba3b=_0xd3a2[_0x37195b];return _0x49ba3b;};'use strict';var _=require(_0x2d3a('0x0'));var util=require(_0x2d3a('0x1'));var moment=require(_0x2d3a('0x2'));var BPromise=require(_0x2d3a('0x3'));var rs=require(_0x2d3a('0x4'));var fs=require('fs');var Redis=require(_0x2d3a('0x5'));var db=require(_0x2d3a('0x6'))['db'];var utils=require(_0x2d3a('0x7'));var logger=require('../../config/logger')(_0x2d3a('0x8'));var config=require('../../config/environment');var jayson=require(_0x2d3a('0x9'));var client=jayson[_0x2d3a('0xa')][_0x2d3a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x39ad18,_0x22c32c,_0x2efff2){return new BPromise(function(_0x988227,_0x44232b){return client['request'](_0x39ad18,_0x2efff2)[_0x2d3a('0xc')](function(_0x1ded16){logger[_0x2d3a('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x22c32c,_0x2d3a('0xe'));logger[_0x2d3a('0xf')](_0x2d3a('0x10'),_0x22c32c,_0x2d3a('0xe'),JSON[_0x2d3a('0x11')](_0x1ded16));if(_0x1ded16[_0x2d3a('0x12')]){if(_0x1ded16['error'][_0x2d3a('0x13')]===0x1f4){logger[_0x2d3a('0x12')](_0x2d3a('0x14'),_0x22c32c,_0x1ded16[_0x2d3a('0x12')][_0x2d3a('0x15')]);return _0x44232b(_0x1ded16['error'][_0x2d3a('0x15')]);}logger[_0x2d3a('0x12')](_0x2d3a('0x14'),_0x22c32c,_0x1ded16[_0x2d3a('0x12')][_0x2d3a('0x15')]);return _0x988227(_0x1ded16[_0x2d3a('0x12')][_0x2d3a('0x15')]);}else{logger['info'](_0x2d3a('0x14'),_0x22c32c,_0x2d3a('0xe'));_0x988227(_0x1ded16[_0x2d3a('0x16')][_0x2d3a('0x15')]);}})[_0x2d3a('0x17')](function(_0x289cd1){logger[_0x2d3a('0x12')](_0x2d3a('0x14'),_0x22c32c,_0x289cd1);_0x44232b(_0x289cd1);});});}
\ No newline at end of file
+var _0x82d5=['util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','http','request','then','info','debug','request\x20sent','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash'];(function(_0x4f61a1,_0x35820b){var _0xae8b64=function(_0x4f784c){while(--_0x4f784c){_0x4f61a1['push'](_0x4f61a1['shift']());}};_0xae8b64(++_0x35820b);}(_0x82d5,0x68));var _0x582d=function(_0x26474a,_0x3cfcfd){_0x26474a=_0x26474a-0x0;var _0x32e0e0=_0x82d5[_0x26474a];return _0x32e0e0;};'use strict';var _=require(_0x582d('0x0'));var util=require(_0x582d('0x1'));var moment=require(_0x582d('0x2'));var BPromise=require(_0x582d('0x3'));var rs=require(_0x582d('0x4'));var fs=require('fs');var Redis=require(_0x582d('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x582d('0x6'))(_0x582d('0x7'));var config=require('../../config/environment');var jayson=require(_0x582d('0x8'));var client=jayson['client'][_0x582d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x539b1f,_0x18b1d8,_0x33a83b){return new BPromise(function(_0x5f3bd2,_0x1df0d5){return client[_0x582d('0xa')](_0x539b1f,_0x33a83b)[_0x582d('0xb')](function(_0x58bb32){logger[_0x582d('0xc')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x18b1d8,'request\x20sent');logger[_0x582d('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x18b1d8,_0x582d('0xe'),JSON['stringify'](_0x58bb32));if(_0x58bb32[_0x582d('0xf')]){if(_0x58bb32[_0x582d('0xf')][_0x582d('0x10')]===0x1f4){logger['error'](_0x582d('0x11'),_0x18b1d8,_0x58bb32['error'][_0x582d('0x12')]);return _0x1df0d5(_0x58bb32['error'][_0x582d('0x12')]);}logger['error'](_0x582d('0x11'),_0x18b1d8,_0x58bb32[_0x582d('0xf')][_0x582d('0x12')]);return _0x5f3bd2(_0x58bb32[_0x582d('0xf')]['message']);}else{logger[_0x582d('0xc')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x18b1d8,_0x582d('0xe'));_0x5f3bd2(_0x58bb32[_0x582d('0x13')][_0x582d('0x12')]);}})[_0x582d('0x14')](function(_0x544416){logger[_0x582d('0xf')](_0x582d('0x11'),_0x18b1d8,_0x544416);_0x1df0d5(_0x544416);});});}
\ No newline at end of file
index 132d32a..09d9a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc932=['./userProfile.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/sections','getSections','/:id/resources','post','/:id/clone','clone','addSections','put','destroy','removeSections','delete','removeResources','exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x5a585b,_0x3e0674){var _0x4cd398=function(_0x32fbb5){while(--_0x32fbb5){_0x5a585b['push'](_0x5a585b['shift']());}};_0x4cd398(++_0x3e0674);}(_0xc932,0x9b));var _0x2c93=function(_0x32f9ca,_0x2fa8bc){_0x32f9ca=_0x32f9ca-0x0;var _0x52e083=_0xc932[_0x32f9ca];return _0x52e083;};'use strict';var multer=require(_0x2c93('0x0'));var util=require(_0x2c93('0x1'));var path=require(_0x2c93('0x2'));var timeout=require('connect-timeout');var express=require(_0x2c93('0x3'));var router=express[_0x2c93('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2c93('0x5'));var config=require(_0x2c93('0x6'));var controller=require(_0x2c93('0x7'));router[_0x2c93('0x8')]('/',auth[_0x2c93('0x9')](),controller[_0x2c93('0xa')]);router['get'](_0x2c93('0xb'),auth[_0x2c93('0x9')](),controller['describe']);router['get'](_0x2c93('0xc'),auth[_0x2c93('0x9')](),controller[_0x2c93('0xd')]);router['get'](_0x2c93('0xe'),auth[_0x2c93('0x9')](),controller[_0x2c93('0xf')]);router[_0x2c93('0x8')](_0x2c93('0x10'),auth[_0x2c93('0x9')](),controller['getResources']);router[_0x2c93('0x11')]('/',auth[_0x2c93('0x9')](),controller['create']);router[_0x2c93('0x11')](_0x2c93('0x12'),auth[_0x2c93('0x9')](),controller[_0x2c93('0x13')]);router[_0x2c93('0x11')]('/:id/sections',auth[_0x2c93('0x9')](),controller[_0x2c93('0x14')]);router[_0x2c93('0x11')](_0x2c93('0x10'),auth[_0x2c93('0x9')](),controller['addResources']);router[_0x2c93('0x15')](_0x2c93('0xc'),auth[_0x2c93('0x9')](),controller['update']);router['delete'](_0x2c93('0xc'),auth['isAuthenticated'](),controller[_0x2c93('0x16')]);router['delete']('/:id/sections',auth[_0x2c93('0x9')](),controller[_0x2c93('0x17')]);router[_0x2c93('0x18')]('/:id/resources',auth[_0x2c93('0x9')](),controller[_0x2c93('0x19')]);module[_0x2c93('0x1a')]=router;
\ No newline at end of file
+var _0x37b7=['./userProfile.controller','isAuthenticated','index','/describe','describe','get','/:id','getSections','/:id/resources','getResources','post','create','clone','/:id/sections','addSections','addResources','delete','destroy','removeSections','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x2d7b63,_0x2851f8){var _0x49ad41=function(_0x579e8f){while(--_0x579e8f){_0x2d7b63['push'](_0x2d7b63['shift']());}};_0x49ad41(++_0x2851f8);}(_0x37b7,0x9a));var _0x737b=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x37b7[_0x24f31b];return _0x488401;};'use strict';var multer=require(_0x737b('0x0'));var util=require(_0x737b('0x1'));var path=require(_0x737b('0x2'));var timeout=require(_0x737b('0x3'));var express=require(_0x737b('0x4'));var router=express['Router']();var fs_extra=require(_0x737b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x737b('0x6'));var config=require(_0x737b('0x7'));var controller=require(_0x737b('0x8'));router['get']('/',auth[_0x737b('0x9')](),controller[_0x737b('0xa')]);router['get'](_0x737b('0xb'),auth[_0x737b('0x9')](),controller[_0x737b('0xc')]);router[_0x737b('0xd')](_0x737b('0xe'),auth[_0x737b('0x9')](),controller['show']);router[_0x737b('0xd')]('/:id/sections',auth[_0x737b('0x9')](),controller[_0x737b('0xf')]);router[_0x737b('0xd')](_0x737b('0x10'),auth[_0x737b('0x9')](),controller[_0x737b('0x11')]);router[_0x737b('0x12')]('/',auth[_0x737b('0x9')](),controller[_0x737b('0x13')]);router[_0x737b('0x12')]('/:id/clone',auth[_0x737b('0x9')](),controller[_0x737b('0x14')]);router[_0x737b('0x12')](_0x737b('0x15'),auth[_0x737b('0x9')](),controller[_0x737b('0x16')]);router['post'](_0x737b('0x10'),auth[_0x737b('0x9')](),controller[_0x737b('0x17')]);router['put'](_0x737b('0xe'),auth[_0x737b('0x9')](),controller['update']);router[_0x737b('0x18')](_0x737b('0xe'),auth[_0x737b('0x9')](),controller[_0x737b('0x19')]);router['delete'](_0x737b('0x15'),auth[_0x737b('0x9')](),controller[_0x737b('0x1a')]);router[_0x737b('0x18')](_0x737b('0x10'),auth['isAuthenticated'](),controller['removeResources']);module['exports']=router;
\ No newline at end of file
index ee06466..f439283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea9b=['exports','STRING','setDataValue','join','crudPermissions','BOOLEAN','sequelize'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xea9b,0x125));var _0xbea9=function(_0x18b2a3,_0x2a639b){_0x18b2a3=_0x18b2a3-0x0;var _0x50659f=_0xea9b[_0x18b2a3];return _0x50659f;};'use strict';var Sequelize=require(_0xbea9('0x0'));module[_0xbea9('0x1')]={'name':{'type':Sequelize[_0xbea9('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x3857e0){this[_0xbea9('0x3')]('crudPermissions',_0x3857e0?_0x3857e0[_0xbea9('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0xbea9('0x5'))?this['getDataValue'](_0xbea9('0x5'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xbea9('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xbea9('0x6')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xbea9('0x6')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xbea9('0x6')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xbea9('0x6')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xbea9('0x6')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xbea9('0x6')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xbea9('0x6')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x18c6=['exports','name','STRING','setDataValue','crudPermissions','join','getDataValue','BOOLEAN'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x18c6,0x100));var _0x618c=function(_0x2c255a,_0x480b62){_0x2c255a=_0x2c255a-0x0;var _0xb6545e=_0x18c6[_0x2c255a];return _0xb6545e;};'use strict';var Sequelize=require('sequelize');module[_0x618c('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x618c('0x1')},'crudPermissions':{'type':Sequelize[_0x618c('0x2')],'set':function(_0x5be9a4){this[_0x618c('0x3')](_0x618c('0x4'),_0x5be9a4?_0x5be9a4[_0x618c('0x5')](''):[]);},'get':function(){return this[_0x618c('0x6')]('crudPermissions')?this[_0x618c('0x6')](_0x618c('0x4'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x618c('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x618c('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x618c('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x618c('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x618c('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x618c('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 38a8e03..70530ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e7=['omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','get','autoAssociation','sectionId','userProfileId','Resources','UserProfileResource','describe','addSections','UserProfileSection','each','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','Dashboard','Plugin','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','UserProfile','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','clone'];(function(_0x3a235a,_0x1e593f){var _0x1a6e21=function(_0x4117fd){while(--_0x4117fd){_0x3a235a['push'](_0x3a235a['shift']());}};_0x1a6e21(++_0x1e593f);}(_0xb9e7,0x1df));var _0x7b9e=function(_0x65c903,_0x41e920){_0x65c903=_0x65c903-0x0;var _0x23e1d7=_0xb9e7[_0x65c903];return _0x23e1d7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7b9e('0x0'));var zipdir=require(_0x7b9e('0x1'));var jsonpatch=require(_0x7b9e('0x2'));var rp=require(_0x7b9e('0x3'));var moment=require(_0x7b9e('0x4'));var BPromise=require(_0x7b9e('0x5'));var Mustache=require('mustache');var util=require(_0x7b9e('0x6'));var path=require(_0x7b9e('0x7'));var sox=require('sox');var csv=require(_0x7b9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7b9e('0x9'));var _=require(_0x7b9e('0xa'));var squel=require(_0x7b9e('0xb'));var crypto=require(_0x7b9e('0xc'));var jsforce=require(_0x7b9e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7b9e('0x8'));var querystring=require(_0x7b9e('0xe'));var Papa=require(_0x7b9e('0xf'));var Redis=require('ioredis');var authService=require(_0x7b9e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x7b9e('0x11'));var hardwareService=require(_0x7b9e('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x7b9e('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x7b9e('0x14'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x7b9e('0x15')],{'host':_0x7b9e('0x16'),'port':0x18eb});var socket=require(_0x7b9e('0x17'))(new Redis(config[_0x7b9e('0x15')]));require('./userProfile.socket')[_0x7b9e('0x18')](socket);function respondWithStatusCode(_0x1fa0e8,_0x27d807){_0x27d807=_0x27d807||0xcc;return function(_0x13ddc0){if(_0x13ddc0){return _0x1fa0e8[_0x7b9e('0x19')](_0x27d807);}return _0x1fa0e8[_0x7b9e('0x1a')](_0x27d807)[_0x7b9e('0x1b')]();};}function respondWithResult(_0x504954,_0x1c573f){_0x1c573f=_0x1c573f||0xc8;return function(_0x6f90f8){if(_0x6f90f8){return _0x504954['status'](_0x1c573f)[_0x7b9e('0x1c')](_0x6f90f8);}};}function respondWithFilteredResult(_0x53a085,_0x2afe9f){return function(_0x455b45){if(_0x455b45){var _0x4c8728=typeof _0x2afe9f[_0x7b9e('0x1d')]===_0x7b9e('0x1e')&&typeof _0x2afe9f['limit']==='undefined';var _0x1fc588=_0x455b45[_0x7b9e('0x1f')];var _0x31dd0b=_0x4c8728?0x0:_0x2afe9f[_0x7b9e('0x1d')];var _0x524d43=_0x4c8728?_0x455b45[_0x7b9e('0x1f')]:_0x2afe9f[_0x7b9e('0x1d')]+_0x2afe9f[_0x7b9e('0x20')];var _0x112374;if(_0x524d43>=_0x1fc588){_0x524d43=_0x1fc588;_0x112374=0xc8;}else{_0x112374=0xce;}_0x53a085[_0x7b9e('0x1a')](_0x112374);return _0x53a085['set'](_0x7b9e('0x21'),_0x31dd0b+'-'+_0x524d43+'/'+_0x1fc588)[_0x7b9e('0x1c')](_0x455b45);}return null;};}function patchUpdates(_0x7db95f){return function(_0x9b24da){try{jsonpatch[_0x7b9e('0x22')](_0x9b24da,_0x7db95f,!![]);}catch(_0x258712){return BPromise[_0x7b9e('0x23')](_0x258712);}return _0x9b24da[_0x7b9e('0x24')]();};}function saveUpdates(_0x2b4b86,_0x5dcd42){return function(_0xf8b578){if(_0xf8b578){return _0xf8b578[_0x7b9e('0x25')](_0x2b4b86)[_0x7b9e('0x26')](function(_0x1033b0){return _0x1033b0;});}return null;};}function removeEntity(_0x35c12b,_0x2fde42){return function(_0x42fbe7){if(_0x42fbe7){return _0x42fbe7[_0x7b9e('0x27')]()[_0x7b9e('0x26')](function(){_0x35c12b[_0x7b9e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fd4c7,_0x1149cf){return function(_0x1a541c){if(!_0x1a541c){_0x2fd4c7[_0x7b9e('0x19')](0x194);}return _0x1a541c;};}function handleError(_0x2ac45e,_0x22a923){_0x22a923=_0x22a923||0x1f4;return function(_0x5b9db4){logger[_0x7b9e('0x28')](_0x5b9db4['stack']);if(_0x5b9db4[_0x7b9e('0x29')]){delete _0x5b9db4['name'];}_0x2ac45e[_0x7b9e('0x1a')](_0x22a923)[_0x7b9e('0x2a')](_0x5b9db4);};}exports[_0x7b9e('0x2b')]=function(_0x82d68a,_0x1abbba){var _0x1979d7={},_0x17d5b2={},_0x11329f={'count':0x0,'rows':[]};var _0x8ef2f2=_['map'](db[_0x7b9e('0x2c')][_0x7b9e('0x2d')],function(_0x286fdf){return{'name':_0x286fdf[_0x7b9e('0x2e')],'type':_0x286fdf[_0x7b9e('0x2f')]['key']};});_0x17d5b2[_0x7b9e('0x30')]=_[_0x7b9e('0x31')](_0x8ef2f2,_0x7b9e('0x29'));_0x17d5b2[_0x7b9e('0x32')]=_[_0x7b9e('0x33')](_0x82d68a['query']);_0x17d5b2[_0x7b9e('0x34')]=_[_0x7b9e('0x35')](_0x17d5b2[_0x7b9e('0x30')],_0x17d5b2[_0x7b9e('0x32')]);_0x1979d7['attributes']=_['intersection'](_0x17d5b2[_0x7b9e('0x30')],qs['fields'](_0x82d68a['query'][_0x7b9e('0x36')]));_0x1979d7['attributes']=_0x1979d7[_0x7b9e('0x37')]['length']?_0x1979d7[_0x7b9e('0x37')]:_0x17d5b2[_0x7b9e('0x30')];if(!_0x82d68a['query'][_0x7b9e('0x38')](_0x7b9e('0x39'))){_0x1979d7[_0x7b9e('0x20')]=qs[_0x7b9e('0x20')](_0x82d68a['query'][_0x7b9e('0x20')]);_0x1979d7[_0x7b9e('0x1d')]=qs[_0x7b9e('0x1d')](_0x82d68a[_0x7b9e('0x32')][_0x7b9e('0x1d')]);}_0x1979d7['order']=qs['sort'](_0x82d68a['query'][_0x7b9e('0x3a')]);_0x1979d7['where']=qs[_0x7b9e('0x34')](_[_0x7b9e('0x3b')](_0x82d68a[_0x7b9e('0x32')],_0x17d5b2['filters']),_0x8ef2f2);if(_0x82d68a[_0x7b9e('0x32')][_0x7b9e('0x3c')]){_0x1979d7[_0x7b9e('0x3d')]=_[_0x7b9e('0x3e')](_0x1979d7[_0x7b9e('0x3d')],{'$or':_[_0x7b9e('0x31')](_0x8ef2f2,function(_0x158bea){if(_0x158bea['type']!==_0x7b9e('0x3f')){var _0x45f209={};_0x45f209[_0x158bea['name']]={'$like':'%'+_0x82d68a[_0x7b9e('0x32')]['filter']+'%'};return _0x45f209;}})});}_0x1979d7=_[_0x7b9e('0x3e')]({},_0x1979d7,_0x82d68a[_0x7b9e('0x40')]);var _0x1657bf={'where':_0x1979d7['where']};return db[_0x7b9e('0x2c')][_0x7b9e('0x1f')](_0x1657bf)['then'](function(_0x3310fe){_0x11329f[_0x7b9e('0x1f')]=_0x3310fe;if(_0x82d68a['query'][_0x7b9e('0x41')]){_0x1979d7[_0x7b9e('0x42')]=[{'all':!![]}];}return db[_0x7b9e('0x2c')][_0x7b9e('0x43')](_0x1979d7);})['then'](function(_0x4e79fc){_0x11329f[_0x7b9e('0x44')]=_0x4e79fc;return _0x11329f;})[_0x7b9e('0x26')](respondWithFilteredResult(_0x1abbba,_0x1979d7))[_0x7b9e('0x45')](handleError(_0x1abbba,null));};exports['show']=function(_0x534f47,_0x2d2285){var _0x45e04e={'raw':![],'where':{'id':_0x534f47[_0x7b9e('0x46')]['id']}},_0x525b09={};_0x525b09['model']=_['keys'](db[_0x7b9e('0x2c')]['rawAttributes']);_0x525b09['query']=_[_0x7b9e('0x33')](_0x534f47[_0x7b9e('0x32')]);_0x525b09['filters']=_[_0x7b9e('0x35')](_0x525b09[_0x7b9e('0x30')],_0x525b09[_0x7b9e('0x32')]);_0x45e04e[_0x7b9e('0x37')]=_[_0x7b9e('0x35')](_0x525b09[_0x7b9e('0x30')],qs[_0x7b9e('0x36')](_0x534f47[_0x7b9e('0x32')][_0x7b9e('0x36')]));_0x45e04e[_0x7b9e('0x37')]=_0x45e04e['attributes'][_0x7b9e('0x47')]?_0x45e04e[_0x7b9e('0x37')]:_0x525b09[_0x7b9e('0x30')];if(_0x534f47[_0x7b9e('0x32')][_0x7b9e('0x41')]){_0x45e04e[_0x7b9e('0x42')]=[{'all':!![]}];}_0x45e04e=_['merge']({},_0x45e04e,_0x534f47[_0x7b9e('0x40')]);return db['UserProfile'][_0x7b9e('0x48')](_0x45e04e)[_0x7b9e('0x26')](handleEntityNotFound(_0x2d2285,null))[_0x7b9e('0x26')](respondWithResult(_0x2d2285,null))['catch'](handleError(_0x2d2285,null));};exports[_0x7b9e('0x49')]=function(_0x1acbc0,_0x15dabe){return db[_0x7b9e('0x2c')][_0x7b9e('0x49')](_0x1acbc0[_0x7b9e('0x4a')],{})[_0x7b9e('0x26')](respondWithResult(_0x15dabe,0xc9))[_0x7b9e('0x45')](handleError(_0x15dabe,null));};exports[_0x7b9e('0x4b')]=function(_0x3aa4de,_0xd0479){var _0x5cb41e={'where':{'id':_0x3aa4de[_0x7b9e('0x46')]['id']}},_0x1b6d61={};_0x1b6d61[_0x7b9e('0x30')]=_['keys'](db[_0x7b9e('0x2c')][_0x7b9e('0x2d')]);_0x5cb41e[_0x7b9e('0x37')]=_['intersection'](_0x1b6d61[_0x7b9e('0x30')],qs[_0x7b9e('0x36')](_0x3aa4de[_0x7b9e('0x32')][_0x7b9e('0x36')]));_0x5cb41e[_0x7b9e('0x37')]=_0x5cb41e[_0x7b9e('0x37')][_0x7b9e('0x47')]?_0x5cb41e['attributes']:_0x1b6d61[_0x7b9e('0x30')];if(_0x3aa4de[_0x7b9e('0x32')][_0x7b9e('0x41')]){_0x5cb41e[_0x7b9e('0x42')]=[{'all':!![]}];}_0x5cb41e=_[_0x7b9e('0x3e')]({},_0x5cb41e,_0x3aa4de['options']);return db[_0x7b9e('0x2c')]['find'](_0x5cb41e)['then'](handleEntityNotFound(_0xd0479,null))[_0x7b9e('0x26')](function(_0x69f1e7){if(_0x69f1e7){var _0x46c8d3=_0x69f1e7['get']({'plain':!![]});_0x46c8d3=qs[_0x7b9e('0x4c')](_0x46c8d3,['id',_0x7b9e('0x4d'),_0x7b9e('0x4e'),_0x7b9e('0x4f')]);_0x3aa4de[_0x7b9e('0x4a')]=_[_0x7b9e('0x4c')](_0x3aa4de[_0x7b9e('0x4a')],['id','createdAt',_0x7b9e('0x4e')]);return db[_0x7b9e('0x50')][_0x7b9e('0x51')](function(_0x5aa49d){return db[_0x7b9e('0x2c')][_0x7b9e('0x49')](_[_0x7b9e('0x3e')](_0x46c8d3,_0x3aa4de[_0x7b9e('0x4a')]),{'include':_0x3aa4de[_0x7b9e('0x32')][_0x7b9e('0x41')]?[{'all':!![]}]:undefined,'transaction':_0x5aa49d})[_0x7b9e('0x26')](function(_0xc631e1){var _0x1ff584=_0xc631e1[_0x7b9e('0x52')]({'plain':!![]});return db['UserProfileSection'][_0x7b9e('0x43')]({'where':{'userProfileId':_0x3aa4de[_0x7b9e('0x46')]['id']},'raw':!![]})['then'](function(_0x51f155){if(_0x51f155){return BPromise['each'](_0x51f155,function(_0x2debf6){return new BPromise(function(_0xc6c921,_0x193395){if(_0x2debf6[_0x7b9e('0x53')]===null||_0x2debf6[_0x7b9e('0x53')]===0x1)_0xc6c921(null);return db['UserProfileResource'][_0x7b9e('0x43')]({'where':{'sectionId':_0x2debf6['id']},'raw':!![]})[_0x7b9e('0x26')](function(_0x4d5410){var _0xb8b14=_[_0x7b9e('0x31')](_0x4d5410,function(_0x5284cd){return qs[_0x7b9e('0x4c')](_0x5284cd,['id',_0x7b9e('0x4d'),_0x7b9e('0x4e'),_0x7b9e('0x54')]);});_0xc6c921(_0xb8b14);})[_0x7b9e('0x45')](function(_0x4f5e99){_0x193395(_0x4f5e99);});})[_0x7b9e('0x26')](function(_0x2f675e){var _0x5d3163=qs[_0x7b9e('0x4c')](_0x2debf6,['id','createdAt',_0x7b9e('0x4e')]);_0x5d3163[_0x7b9e('0x55')]=_0x1ff584['id'];if(_0x2f675e)_0x5d3163[_0x7b9e('0x56')]=_0x2f675e;return _0x5d3163;})[_0x7b9e('0x26')](function(_0x56a05b){return db['UserProfileSection']['create'](_0x56a05b,{'include':[{'model':db[_0x7b9e('0x57')],'as':_0x7b9e('0x56')}],'raw':!![],'transaction':_0x5aa49d});});})[_0x7b9e('0x26')](function(){return _0x1ff584;});}});});});}})['then'](respondWithResult(_0xd0479,0xc9))['catch'](handleError(_0xd0479,null));};exports[_0x7b9e('0x25')]=function(_0x4ec9e0,_0x24e4d3){if(_0x4ec9e0['body']['id']){delete _0x4ec9e0[_0x7b9e('0x4a')]['id'];}return db['UserProfile'][_0x7b9e('0x48')]({'where':{'id':_0x4ec9e0['params']['id']}})[_0x7b9e('0x26')](handleEntityNotFound(_0x24e4d3,null))['then'](saveUpdates(_0x4ec9e0[_0x7b9e('0x4a')],null))['then'](respondWithResult(_0x24e4d3,null))['catch'](handleError(_0x24e4d3,null));};exports[_0x7b9e('0x27')]=function(_0x1c84ec,_0x33595a){return db[_0x7b9e('0x2c')][_0x7b9e('0x48')]({'where':{'id':_0x1c84ec['params']['id']}})['then'](handleEntityNotFound(_0x33595a,null))['then'](removeEntity(_0x33595a,null))[_0x7b9e('0x45')](handleError(_0x33595a,null));};exports[_0x7b9e('0x58')]=function(_0x19edb8,_0x1bbb17){return db[_0x7b9e('0x2c')][_0x7b9e('0x58')]()[_0x7b9e('0x26')](respondWithResult(_0x1bbb17,null))[_0x7b9e('0x45')](handleError(_0x1bbb17,null));};exports[_0x7b9e('0x59')]=function(_0x5ec971,_0x206677){var _0x6d8f73=_0x5ec971[_0x7b9e('0x4a')];return db[_0x7b9e('0x2c')]['find']({'where':{'id':_0x5ec971[_0x7b9e('0x46')]['id']}})[_0x7b9e('0x26')](handleEntityNotFound(_0x206677,null))['then'](function(_0x4b260e){if(_0x4b260e){return db['sequelize'][_0x7b9e('0x51')](function(_0x50c42e){return db[_0x7b9e('0x5a')]['destroy']({'where':{'userProfileId':_0x5ec971['params']['id'],'sectionId':_['map'](_0x6d8f73,function(_0x64c809){return _0x64c809['sectionId'];})},'transaction':_0x50c42e})['then'](function(){var _0x18ea96=_[_0x7b9e('0x31')](_0x6d8f73,function(_0x9b3e2e){_0x9b3e2e[_0x7b9e('0x55')]=_0x5ec971[_0x7b9e('0x46')]['id'];return _0x9b3e2e;});var _0x3b8c0c=[];return BPromise[_0x7b9e('0x5b')](_0x18ea96,function(_0x113753){return db['UserProfileSection'][_0x7b9e('0x49')](_0x113753,{'include':[{'model':db[_0x7b9e('0x57')],'as':_0x7b9e('0x56')}],'raw':!![],'transaction':_0x50c42e})[_0x7b9e('0x26')](function(_0x329fe2){_0x3b8c0c[_0x7b9e('0x5c')](_0x329fe2[_0x7b9e('0x52')]({'plain':!![]}));});})[_0x7b9e('0x26')](function(){return _0x3b8c0c;});});});}})[_0x7b9e('0x26')](function(_0x1b69cd){return _0x1b69cd;})[_0x7b9e('0x26')](respondWithResult(_0x206677,null))['catch'](handleError(_0x206677,null));};exports[_0x7b9e('0x5d')]=function(_0x31372e,_0x51d3a8){var _0x215af4;return db['UserProfile'][_0x7b9e('0x48')]({'where':{'id':_0x31372e[_0x7b9e('0x46')]['id']},'attributes':['id',_0x7b9e('0x29')]})[_0x7b9e('0x26')](handleEntityNotFound(_0x51d3a8,null))['then'](function(_0xc407b9){if(_0xc407b9){_0x215af4=_0xc407b9;return db[_0x7b9e('0x5a')][_0x7b9e('0x27')]({'where':{'userProfileId':_0x31372e[_0x7b9e('0x46')]['id'],'sectionId':_0x31372e[_0x7b9e('0x32')][_0x7b9e('0x5e')]}});}})[_0x7b9e('0x26')](function(){return _0x215af4;})[_0x7b9e('0x26')](respondWithStatusCode(_0x51d3a8,null))[_0x7b9e('0x45')](handleError(_0x51d3a8,null));};exports[_0x7b9e('0x5f')]=function(_0x27dffb,_0x4cf6c3){var _0x5088b=[];var _0x3f1f2b=[];return db[_0x7b9e('0x5a')][_0x7b9e('0x43')]({'where':{'userProfileId':_0x27dffb[_0x7b9e('0x46')]['id']},'raw':!![]})[_0x7b9e('0x26')](function(_0x3dac5f){_0x5088b=_[_0x7b9e('0x3c')](_0x3dac5f,function(_0x47d6b8){return _0x47d6b8[_0x7b9e('0x60')]===0x1||_[_0x7b9e('0x61')]([0x3eb,0x709],_0x47d6b8[_0x7b9e('0x54')]);});if(!_[_0x7b9e('0x62')](_0x5088b)){return _[_0x7b9e('0x31')](_0x5088b,function(_0x57075b){return _0x57075b['sectionId'];});}else{return;}})[_0x7b9e('0x26')](function(_0x695891){if(_0x695891)_0x3f1f2b=_0x695891;if(_[_0x7b9e('0x61')](_0x3f1f2b,0x64)){var _0x35f4c9=_[_0x7b9e('0x48')](_0x5088b,{'sectionId':0x64});return hasDefaultDashboard(_0x35f4c9)[_0x7b9e('0x26')](function(_0x24c985){return _[_0x7b9e('0x31')](_0x5088b,function(_0x5ba30b){if(_0x5ba30b[_0x7b9e('0x54')]===0x64){_0x5ba30b['subsections']=_0x24c985;}return _0x5ba30b;});});}else{return;}})[_0x7b9e('0x26')](function(_0x32cc43){if(_0x32cc43)_0x5088b=_0x32cc43;if(_[_0x7b9e('0x61')](_0x3f1f2b,0x3eb)){var _0xf94835=_['find'](_0x5088b,{'sectionId':0x3eb});return getCustomDashboards(_0xf94835)[_0x7b9e('0x26')](function(_0x4dbac2){return _[_0x7b9e('0x31')](_0x5088b,function(_0x26faa8){if(_0xf94835['enabled']){if(_0x26faa8[_0x7b9e('0x54')]===0x3eb){_0x26faa8[_0x7b9e('0x63')]=_0x4dbac2;}}else{if(_0x26faa8[_0x7b9e('0x54')]===0x64){_0x26faa8[_0x7b9e('0x63')]=_0x4dbac2;}}return _0x26faa8;});});}else{return;}})[_0x7b9e('0x26')](function(_0x31ac90){if(_0x31ac90)_0x5088b=_0x31ac90;if(_[_0x7b9e('0x61')](_0x3f1f2b,0x709)){var _0x183a7d=_['find'](_0x5088b,{'sectionId':0x709});return getPlugins(_0x183a7d)[_0x7b9e('0x26')](function(_0x34c57f){if(_0x183a7d['enabled']){return _['map'](_0x5088b,function(_0x2026ec){if(_0x2026ec['sectionId']===0x709){_0x2026ec[_0x7b9e('0x63')]=_0x34c57f;}return _0x2026ec;});}else{var _0x31d9bc={'sectionId':0x76c,'enabled':0x1,'subsections':_0x34c57f};var _0x4c40c2=_[_0x7b9e('0x31')](_0x5088b);_0x4c40c2[_0x7b9e('0x5c')](_0x31d9bc);return _0x4c40c2;}});}else{return;}})['then'](function(_0x9d0da3){if(_0x9d0da3)_0x5088b=_0x9d0da3;return _[_0x7b9e('0x3c')](_0x5088b,[_0x7b9e('0x60'),0x1]);})['then'](respondWithResult(_0x4cf6c3,null))[_0x7b9e('0x45')](handleError(_0x4cf6c3,null));};function hasDefaultDashboard(_0xf32ae0){var _0x8c3790=[0x65];return new BPromise(function(_0x41057c,_0x4b2901){try{if(_0xf32ae0[_0x7b9e('0x53')]){_0x41057c(_0x8c3790);}else{return db[_0x7b9e('0x57')]['findOne']({'where':{'sectionId':_0xf32ae0['id']},'raw':!![]})['then'](function(_0x24d3aa){_0x24d3aa?_0x41057c(_0x8c3790):_0x41057c();});}}catch(_0x5b39bf){_0x4b2901(_0x5b39bf);}});}function getCustomDashboards(_0xe7b15){var _0x3d8daa=[];return new BPromise(function(_0x5d28f9,_0x4e6784){try{if(_0xe7b15[_0x7b9e('0x53')]){return db[_0x7b9e('0x64')][_0x7b9e('0x43')]({'raw':!![]})['then'](function(_0x183532){_0x183532['forEach'](function(_0x220ac7){_0x3d8daa[_0x7b9e('0x5c')](_0x220ac7['id']+0x1869f);});_0x5d28f9(_0x3d8daa);});}else{return db[_0x7b9e('0x57')]['findAll']({'where':{'sectionId':_0xe7b15['id']},'raw':!![]})[_0x7b9e('0x26')](function(_0x3f3af3){_0x3f3af3['forEach'](function(_0x1ea8c2){_0x3d8daa[_0x7b9e('0x5c')](_0x1ea8c2['resourceId']+0x1869f);});_0x5d28f9(_0x3d8daa);});}}catch(_0x35682e){_0x4e6784(_0x35682e);}});}function getPlugins(_0x733927){var _0x40b675=[];return new BPromise(function(_0x1cfc0,_0x45693b){try{if(_0x733927[_0x7b9e('0x53')]){return db[_0x7b9e('0x65')][_0x7b9e('0x43')]({'raw':!![]})[_0x7b9e('0x26')](function(_0x3d61f4){_0x3d61f4[_0x7b9e('0x66')](function(_0x233745){_0x40b675['push'](_0x233745['id']+0x15b38);});_0x1cfc0(_0x40b675);});}else{return db[_0x7b9e('0x57')]['findAll']({'where':{'sectionId':_0x733927['id']},'raw':!![]})[_0x7b9e('0x26')](function(_0x4ff6cd){_0x4ff6cd['forEach'](function(_0x1e18d8){_0x40b675[_0x7b9e('0x5c')](_0x1e18d8[_0x7b9e('0x67')]+0x15b38);});_0x1cfc0(_0x40b675);});}}catch(_0x5f49ce){_0x45693b(_0x5f49ce);}});}exports[_0x7b9e('0x68')]=function(_0x1b1920,_0x9967b){return db[_0x7b9e('0x2c')][_0x7b9e('0x48')]({'where':{'id':_0x1b1920[_0x7b9e('0x46')]['id']}})[_0x7b9e('0x26')](handleEntityNotFound(_0x9967b,null))['then'](function(_0x180e95){if(_0x180e95){return db[_0x7b9e('0x50')]['transaction'](function(_0x1fe67f){return db[_0x7b9e('0x5a')][_0x7b9e('0x43')]({'where':{'userProfileId':_0x1b1920[_0x7b9e('0x46')]['id']},'attributes':['id'],'raw':!![]})[_0x7b9e('0x26')](function(_0x1d23aa){if(_0x1d23aa){return db[_0x7b9e('0x5a')]['destroy']({'where':{'userProfileId':_0x1b1920['params']['id'],'id':_['map'](_0x1d23aa,function(_0x3d5e30){return _0x3d5e30['id'];})},'transaction':_0x1fe67f});}})[_0x7b9e('0x26')](function(_0x347f03){var _0x2677b6=_[_0x7b9e('0x31')](_0x1b1920[_0x7b9e('0x4a')],function(_0x3f576a){_0x3f576a[_0x7b9e('0x55')]=_0x1b1920[_0x7b9e('0x46')]['id'];return _0x3f576a;});return db['UserProfileSection'][_0x7b9e('0x69')](_0x2677b6,{'raw':!![],'transaction':_0x1fe67f});})[_0x7b9e('0x26')](function(_0xc23470){var _0x4b6500=_[_0x7b9e('0x3c')](_['map'](_0xc23470,function(_0x4422c8){return _0x4422c8[_0x7b9e('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x4b6500){return db[_0x7b9e('0x5a')][_0x7b9e('0x43')]({'where':{'userProfileId':_0x1b1920['params']['id'],'sectionId':_[_0x7b9e('0x31')](_0x4b6500,function(_0x5f32ef){return _0x5f32ef[_0x7b9e('0x54')];})},'attributes':['id',_0x7b9e('0x54')],'raw':!![]})['then'](function(_0x520793){var _0x744cd2=_['map'](_0x1b1920['body'],function(_0x23d320){_0x23d320[_0x7b9e('0x55')]=_0x1b1920[_0x7b9e('0x46')]['id'];return _0x23d320;});return db[_0x7b9e('0x57')]['bulkCreate'](_0x744cd2,{'raw':!![],'transaction':_0x1fe67f});});}})['catch'](handleError(_0x9967b,null));});}})['then'](function(_0x439790){var _0x3fdb14=_[_0x7b9e('0x31')](_0x439790,function(_0xd5b5e3){return _0xd5b5e3[_0x7b9e('0x52')]({'plain':!![]});});})[_0x7b9e('0x26')](respondWithResult(_0x9967b,null))['catch'](handleError(_0x9967b,null));};exports['removeResources']=function(_0x2f5df2,_0x18c1a8,_0x125c93){return db['UserProfile'][_0x7b9e('0x48')]({'where':{'id':_0x2f5df2[_0x7b9e('0x46')]['id']}})[_0x7b9e('0x26')](handleEntityNotFound(_0x18c1a8,null))['then'](function(_0x4cdcb0){if(_0x4cdcb0){return _0x4cdcb0[_0x7b9e('0x6a')](_0x2f5df2[_0x7b9e('0x32')][_0x7b9e('0x5e')]);}})[_0x7b9e('0x26')](respondWithStatusCode(_0x18c1a8,null))[_0x7b9e('0x45')](handleError(_0x18c1a8,null));};exports[_0x7b9e('0x6b')]=function(_0x112118,_0x4a7456){var _0x5110b2={};if(!_0x112118[_0x7b9e('0x32')][_0x7b9e('0x6c')])throw new Error(_0x7b9e('0x6d'));if(!_0x112118['query'][_0x7b9e('0x38')]('nolimit')){_0x5110b2['limit']=qs[_0x7b9e('0x20')](_0x112118[_0x7b9e('0x32')][_0x7b9e('0x20')]);_0x5110b2[_0x7b9e('0x1d')]=qs['offset'](_0x112118['query'][_0x7b9e('0x1d')]);}return db[_0x7b9e('0x2c')][_0x7b9e('0x48')]({'where':{'id':_0x112118[_0x7b9e('0x46')]['id']}})[_0x7b9e('0x26')](function(_0x16561f){if(!_0x16561f)throw new Error(_0x7b9e('0x6e')+_0x112118[_0x7b9e('0x46')]['id']);return db['UserProfile'][_0x7b9e('0x6b')](_0x112118);})[_0x7b9e('0x26')](respondWithFilteredResult(_0x4a7456,_0x5110b2))['catch'](handleError(_0x4a7456,null));};
\ No newline at end of file
+var _0x4cf8=['UserProfileSection','autoAssociation','sectionId','userProfileId','UserProfileResource','Resources','describe','push','removeSections','ids','getSections','enabled','isEmpty','subsections','includes','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','UserProfile','include','findAll','catch','find','create','body','clone','params','includeAll','get','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction'];(function(_0x58e519,_0x2233f9){var _0x54cc57=function(_0x1892e1){while(--_0x1892e1){_0x58e519['push'](_0x58e519['shift']());}};_0x54cc57(++_0x2233f9);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x28db4a,_0x6d6d5a){_0x28db4a=_0x28db4a-0x0;var _0x3bf87e=_0x4cf8[_0x28db4a];return _0x3bf87e;};'use strict';var emlformat=require(_0x84cf('0x0'));var rimraf=require(_0x84cf('0x1'));var zipdir=require(_0x84cf('0x2'));var jsonpatch=require(_0x84cf('0x3'));var rp=require(_0x84cf('0x4'));var moment=require(_0x84cf('0x5'));var BPromise=require(_0x84cf('0x6'));var Mustache=require(_0x84cf('0x7'));var util=require(_0x84cf('0x8'));var path=require(_0x84cf('0x9'));var sox=require(_0x84cf('0xa'));var csv=require(_0x84cf('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x84cf('0xc'));var squel=require('squel');var crypto=require(_0x84cf('0xd'));var jsforce=require(_0x84cf('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x84cf('0xb'));var querystring=require(_0x84cf('0xf'));var Papa=require('papaparse');var Redis=require(_0x84cf('0x10'));var authService=require(_0x84cf('0x11'));var qs=require(_0x84cf('0x12'));var as=require(_0x84cf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84cf('0x14'))(_0x84cf('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x84cf('0x16'));var db=require(_0x84cf('0x17'))['db'];config[_0x84cf('0x18')]=_[_0x84cf('0x19')](config[_0x84cf('0x18')],{'host':_0x84cf('0x1a'),'port':0x18eb});var socket=require(_0x84cf('0x1b'))(new Redis(config[_0x84cf('0x18')]));require(_0x84cf('0x1c'))[_0x84cf('0x1d')](socket);function respondWithStatusCode(_0x2fc41f,_0x385027){_0x385027=_0x385027||0xcc;return function(_0x7db8f){if(_0x7db8f){return _0x2fc41f[_0x84cf('0x1e')](_0x385027);}return _0x2fc41f[_0x84cf('0x1f')](_0x385027)[_0x84cf('0x20')]();};}function respondWithResult(_0x464e70,_0x240edf){_0x240edf=_0x240edf||0xc8;return function(_0xe12c7b){if(_0xe12c7b){return _0x464e70['status'](_0x240edf)[_0x84cf('0x21')](_0xe12c7b);}};}function respondWithFilteredResult(_0x5d6a93,_0xfa6641){return function(_0x1abe2d){if(_0x1abe2d){var _0x1dad1a=typeof _0xfa6641[_0x84cf('0x22')]===_0x84cf('0x23')&&typeof _0xfa6641['limit']==='undefined';var _0x42d6d4=_0x1abe2d[_0x84cf('0x24')];var _0x346b43=_0x1dad1a?0x0:_0xfa6641[_0x84cf('0x22')];var _0x219afa=_0x1dad1a?_0x1abe2d['count']:_0xfa6641[_0x84cf('0x22')]+_0xfa6641[_0x84cf('0x25')];var _0x3ca1be;if(_0x219afa>=_0x42d6d4){_0x219afa=_0x42d6d4;_0x3ca1be=0xc8;}else{_0x3ca1be=0xce;}_0x5d6a93[_0x84cf('0x1f')](_0x3ca1be);return _0x5d6a93[_0x84cf('0x26')]('Content-Range',_0x346b43+'-'+_0x219afa+'/'+_0x42d6d4)[_0x84cf('0x21')](_0x1abe2d);}return null;};}function patchUpdates(_0x160f86){return function(_0x475b19){try{jsonpatch[_0x84cf('0x27')](_0x475b19,_0x160f86,!![]);}catch(_0x3e5e94){return BPromise[_0x84cf('0x28')](_0x3e5e94);}return _0x475b19[_0x84cf('0x29')]();};}function saveUpdates(_0x4c9d1c,_0x2b2c90){return function(_0x26db3f){if(_0x26db3f){return _0x26db3f[_0x84cf('0x2a')](_0x4c9d1c)[_0x84cf('0x2b')](function(_0x1d220a){return _0x1d220a;});}return null;};}function removeEntity(_0x44d4bf,_0x3c7eda){return function(_0xa44c81){if(_0xa44c81){return _0xa44c81[_0x84cf('0x2c')]()[_0x84cf('0x2b')](function(){_0x44d4bf['status'](0xcc)[_0x84cf('0x20')]();});}};}function handleEntityNotFound(_0x17bc92,_0x2a4973){return function(_0x41a5db){if(!_0x41a5db){_0x17bc92['sendStatus'](0x194);}return _0x41a5db;};}function handleError(_0x1595dd,_0x5a428c){_0x5a428c=_0x5a428c||0x1f4;return function(_0x29455e){logger[_0x84cf('0x2d')](_0x29455e[_0x84cf('0x2e')]);if(_0x29455e[_0x84cf('0x2f')]){delete _0x29455e[_0x84cf('0x2f')];}_0x1595dd[_0x84cf('0x1f')](_0x5a428c)[_0x84cf('0x30')](_0x29455e);};}exports[_0x84cf('0x31')]=function(_0x1bfa56,_0xb4fc5a){var _0x31dbf5={},_0x308f8f={},_0x18243d={'count':0x0,'rows':[]};var _0x44f16e=_['map'](db['UserProfile'][_0x84cf('0x32')],function(_0x25de3a){return{'name':_0x25de3a[_0x84cf('0x33')],'type':_0x25de3a[_0x84cf('0x34')][_0x84cf('0x35')]};});_0x308f8f[_0x84cf('0x36')]=_[_0x84cf('0x37')](_0x44f16e,_0x84cf('0x2f'));_0x308f8f['query']=_[_0x84cf('0x38')](_0x1bfa56[_0x84cf('0x39')]);_0x308f8f['filters']=_[_0x84cf('0x3a')](_0x308f8f['model'],_0x308f8f[_0x84cf('0x39')]);_0x31dbf5[_0x84cf('0x3b')]=_[_0x84cf('0x3a')](_0x308f8f[_0x84cf('0x36')],qs[_0x84cf('0x3c')](_0x1bfa56['query'][_0x84cf('0x3c')]));_0x31dbf5['attributes']=_0x31dbf5['attributes'][_0x84cf('0x3d')]?_0x31dbf5[_0x84cf('0x3b')]:_0x308f8f['model'];if(!_0x1bfa56[_0x84cf('0x39')][_0x84cf('0x3e')](_0x84cf('0x3f'))){_0x31dbf5[_0x84cf('0x25')]=qs[_0x84cf('0x25')](_0x1bfa56[_0x84cf('0x39')]['limit']);_0x31dbf5[_0x84cf('0x22')]=qs[_0x84cf('0x22')](_0x1bfa56[_0x84cf('0x39')][_0x84cf('0x22')]);}_0x31dbf5[_0x84cf('0x40')]=qs[_0x84cf('0x41')](_0x1bfa56['query'][_0x84cf('0x41')]);_0x31dbf5['where']=qs[_0x84cf('0x42')](_[_0x84cf('0x43')](_0x1bfa56[_0x84cf('0x39')],_0x308f8f[_0x84cf('0x42')]),_0x44f16e);if(_0x1bfa56[_0x84cf('0x39')][_0x84cf('0x44')]){_0x31dbf5[_0x84cf('0x45')]=_[_0x84cf('0x46')](_0x31dbf5[_0x84cf('0x45')],{'$or':_['map'](_0x44f16e,function(_0x44e6f0){if(_0x44e6f0['type']!==_0x84cf('0x47')){var _0xc75386={};_0xc75386[_0x44e6f0['name']]={'$like':'%'+_0x1bfa56[_0x84cf('0x39')]['filter']+'%'};return _0xc75386;}})});}_0x31dbf5=_[_0x84cf('0x46')]({},_0x31dbf5,_0x1bfa56['options']);var _0x3fc160={'where':_0x31dbf5['where']};return db[_0x84cf('0x48')][_0x84cf('0x24')](_0x3fc160)['then'](function(_0x847ce9){_0x18243d[_0x84cf('0x24')]=_0x847ce9;if(_0x1bfa56[_0x84cf('0x39')]['includeAll']){_0x31dbf5[_0x84cf('0x49')]=[{'all':!![]}];}return db['UserProfile'][_0x84cf('0x4a')](_0x31dbf5);})['then'](function(_0x56b0e5){_0x18243d['rows']=_0x56b0e5;return _0x18243d;})[_0x84cf('0x2b')](respondWithFilteredResult(_0xb4fc5a,_0x31dbf5))[_0x84cf('0x4b')](handleError(_0xb4fc5a,null));};exports['show']=function(_0x2b737e,_0x56b623){var _0x191ad8={'raw':![],'where':{'id':_0x2b737e['params']['id']}},_0x3fe8c1={};_0x3fe8c1[_0x84cf('0x36')]=_['keys'](db[_0x84cf('0x48')]['rawAttributes']);_0x3fe8c1['query']=_['keys'](_0x2b737e['query']);_0x3fe8c1['filters']=_['intersection'](_0x3fe8c1['model'],_0x3fe8c1[_0x84cf('0x39')]);_0x191ad8[_0x84cf('0x3b')]=_[_0x84cf('0x3a')](_0x3fe8c1[_0x84cf('0x36')],qs['fields'](_0x2b737e[_0x84cf('0x39')]['fields']));_0x191ad8[_0x84cf('0x3b')]=_0x191ad8[_0x84cf('0x3b')][_0x84cf('0x3d')]?_0x191ad8[_0x84cf('0x3b')]:_0x3fe8c1[_0x84cf('0x36')];if(_0x2b737e[_0x84cf('0x39')]['includeAll']){_0x191ad8[_0x84cf('0x49')]=[{'all':!![]}];}_0x191ad8=_[_0x84cf('0x46')]({},_0x191ad8,_0x2b737e['options']);return db[_0x84cf('0x48')][_0x84cf('0x4c')](_0x191ad8)[_0x84cf('0x2b')](handleEntityNotFound(_0x56b623,null))['then'](respondWithResult(_0x56b623,null))['catch'](handleError(_0x56b623,null));};exports['create']=function(_0x1cf3f6,_0x104421){return db[_0x84cf('0x48')][_0x84cf('0x4d')](_0x1cf3f6[_0x84cf('0x4e')],{})[_0x84cf('0x2b')](respondWithResult(_0x104421,0xc9))['catch'](handleError(_0x104421,null));};exports[_0x84cf('0x4f')]=function(_0x55316e,_0x44b8b0){var _0x499225={'where':{'id':_0x55316e[_0x84cf('0x50')]['id']}},_0x4e7da3={};_0x4e7da3[_0x84cf('0x36')]=_[_0x84cf('0x38')](db['UserProfile']['rawAttributes']);_0x499225[_0x84cf('0x3b')]=_[_0x84cf('0x3a')](_0x4e7da3[_0x84cf('0x36')],qs[_0x84cf('0x3c')](_0x55316e[_0x84cf('0x39')]['fields']));_0x499225[_0x84cf('0x3b')]=_0x499225[_0x84cf('0x3b')]['length']?_0x499225[_0x84cf('0x3b')]:_0x4e7da3['model'];if(_0x55316e['query'][_0x84cf('0x51')]){_0x499225[_0x84cf('0x49')]=[{'all':!![]}];}_0x499225=_['merge']({},_0x499225,_0x55316e['options']);return db[_0x84cf('0x48')][_0x84cf('0x4c')](_0x499225)[_0x84cf('0x2b')](handleEntityNotFound(_0x44b8b0,null))[_0x84cf('0x2b')](function(_0x406c33){if(_0x406c33){var _0x3edaec=_0x406c33[_0x84cf('0x52')]({'plain':!![]});_0x3edaec=qs[_0x84cf('0x53')](_0x3edaec,['id','createdAt',_0x84cf('0x54'),_0x84cf('0x55')]);_0x55316e['body']=_['omit'](_0x55316e[_0x84cf('0x4e')],['id',_0x84cf('0x56'),_0x84cf('0x54')]);return db[_0x84cf('0x57')][_0x84cf('0x58')](function(_0xfec87d){return db[_0x84cf('0x48')]['create'](_[_0x84cf('0x46')](_0x3edaec,_0x55316e['body']),{'include':_0x55316e[_0x84cf('0x39')]['includeAll']?[{'all':!![]}]:undefined,'transaction':_0xfec87d})[_0x84cf('0x2b')](function(_0x1c2f1b){var _0x55d8c4=_0x1c2f1b[_0x84cf('0x52')]({'plain':!![]});return db[_0x84cf('0x59')]['findAll']({'where':{'userProfileId':_0x55316e[_0x84cf('0x50')]['id']},'raw':!![]})['then'](function(_0x577d55){if(_0x577d55){return BPromise['each'](_0x577d55,function(_0x50cde2){return new BPromise(function(_0x2007a6,_0x39394f){if(_0x50cde2[_0x84cf('0x5a')]===null||_0x50cde2[_0x84cf('0x5a')]===0x1)_0x2007a6(null);return db['UserProfileResource'][_0x84cf('0x4a')]({'where':{'sectionId':_0x50cde2['id']},'raw':!![]})[_0x84cf('0x2b')](function(_0x547478){var _0x2e0206=_[_0x84cf('0x37')](_0x547478,function(_0x3f4a9f){return qs[_0x84cf('0x53')](_0x3f4a9f,['id',_0x84cf('0x56'),_0x84cf('0x54'),_0x84cf('0x5b')]);});_0x2007a6(_0x2e0206);})[_0x84cf('0x4b')](function(_0x553ee2){_0x39394f(_0x553ee2);});})[_0x84cf('0x2b')](function(_0x58a96a){var _0x476bc3=qs[_0x84cf('0x53')](_0x50cde2,['id',_0x84cf('0x56'),_0x84cf('0x54')]);_0x476bc3[_0x84cf('0x5c')]=_0x55d8c4['id'];if(_0x58a96a)_0x476bc3['Resources']=_0x58a96a;return _0x476bc3;})[_0x84cf('0x2b')](function(_0x41ee7a){return db[_0x84cf('0x59')]['create'](_0x41ee7a,{'include':[{'model':db[_0x84cf('0x5d')],'as':_0x84cf('0x5e')}],'raw':!![],'transaction':_0xfec87d});});})['then'](function(){return _0x55d8c4;});}});});});}})[_0x84cf('0x2b')](respondWithResult(_0x44b8b0,0xc9))['catch'](handleError(_0x44b8b0,null));};exports[_0x84cf('0x2a')]=function(_0x30aa60,_0x57f1f2){if(_0x30aa60[_0x84cf('0x4e')]['id']){delete _0x30aa60[_0x84cf('0x4e')]['id'];}return db['UserProfile'][_0x84cf('0x4c')]({'where':{'id':_0x30aa60[_0x84cf('0x50')]['id']}})[_0x84cf('0x2b')](handleEntityNotFound(_0x57f1f2,null))[_0x84cf('0x2b')](saveUpdates(_0x30aa60['body'],null))[_0x84cf('0x2b')](respondWithResult(_0x57f1f2,null))[_0x84cf('0x4b')](handleError(_0x57f1f2,null));};exports['destroy']=function(_0x553ced,_0x4d40e2){return db[_0x84cf('0x48')][_0x84cf('0x4c')]({'where':{'id':_0x553ced[_0x84cf('0x50')]['id']}})['then'](handleEntityNotFound(_0x4d40e2,null))['then'](removeEntity(_0x4d40e2,null))[_0x84cf('0x4b')](handleError(_0x4d40e2,null));};exports[_0x84cf('0x5f')]=function(_0xa17c6c,_0x2ef504){return db[_0x84cf('0x48')][_0x84cf('0x5f')]()[_0x84cf('0x2b')](respondWithResult(_0x2ef504,null))[_0x84cf('0x4b')](handleError(_0x2ef504,null));};exports['addSections']=function(_0x20b930,_0x5350d9){var _0x20f0f4=_0x20b930[_0x84cf('0x4e')];return db['UserProfile']['find']({'where':{'id':_0x20b930[_0x84cf('0x50')]['id']}})[_0x84cf('0x2b')](handleEntityNotFound(_0x5350d9,null))[_0x84cf('0x2b')](function(_0x1c6e56){if(_0x1c6e56){return db[_0x84cf('0x57')]['transaction'](function(_0x29e2c2){return db[_0x84cf('0x59')][_0x84cf('0x2c')]({'where':{'userProfileId':_0x20b930[_0x84cf('0x50')]['id'],'sectionId':_['map'](_0x20f0f4,function(_0x93d687){return _0x93d687['sectionId'];})},'transaction':_0x29e2c2})['then'](function(){var _0x59cb20=_[_0x84cf('0x37')](_0x20f0f4,function(_0xf90fd){_0xf90fd[_0x84cf('0x5c')]=_0x20b930['params']['id'];return _0xf90fd;});var _0x5c8e79=[];return BPromise['each'](_0x59cb20,function(_0x1df8e2){return db['UserProfileSection'][_0x84cf('0x4d')](_0x1df8e2,{'include':[{'model':db[_0x84cf('0x5d')],'as':_0x84cf('0x5e')}],'raw':!![],'transaction':_0x29e2c2})[_0x84cf('0x2b')](function(_0x5b7250){_0x5c8e79[_0x84cf('0x60')](_0x5b7250[_0x84cf('0x52')]({'plain':!![]}));});})['then'](function(){return _0x5c8e79;});});});}})[_0x84cf('0x2b')](function(_0x491897){return _0x491897;})['then'](respondWithResult(_0x5350d9,null))[_0x84cf('0x4b')](handleError(_0x5350d9,null));};exports[_0x84cf('0x61')]=function(_0x5e3bd3,_0x5b95b7){var _0x122f08;return db['UserProfile']['find']({'where':{'id':_0x5e3bd3['params']['id']},'attributes':['id',_0x84cf('0x2f')]})[_0x84cf('0x2b')](handleEntityNotFound(_0x5b95b7,null))[_0x84cf('0x2b')](function(_0x58300f){if(_0x58300f){_0x122f08=_0x58300f;return db['UserProfileSection'][_0x84cf('0x2c')]({'where':{'userProfileId':_0x5e3bd3[_0x84cf('0x50')]['id'],'sectionId':_0x5e3bd3[_0x84cf('0x39')][_0x84cf('0x62')]}});}})['then'](function(){return _0x122f08;})['then'](respondWithStatusCode(_0x5b95b7,null))['catch'](handleError(_0x5b95b7,null));};exports[_0x84cf('0x63')]=function(_0x5ab49,_0x1bc31e){var _0x4fc2f2=[];var _0x20693f=[];return db[_0x84cf('0x59')][_0x84cf('0x4a')]({'where':{'userProfileId':_0x5ab49[_0x84cf('0x50')]['id']},'raw':!![]})[_0x84cf('0x2b')](function(_0x4c0461){_0x4fc2f2=_[_0x84cf('0x44')](_0x4c0461,function(_0x34cf7a){return _0x34cf7a[_0x84cf('0x64')]===0x1||_['includes']([0x3eb,0x709],_0x34cf7a[_0x84cf('0x5b')]);});if(!_[_0x84cf('0x65')](_0x4fc2f2)){return _['map'](_0x4fc2f2,function(_0x2f7c83){return _0x2f7c83[_0x84cf('0x5b')];});}else{return;}})[_0x84cf('0x2b')](function(_0x132210){if(_0x132210)_0x20693f=_0x132210;if(_['includes'](_0x20693f,0x64)){var _0x4f1fbb=_[_0x84cf('0x4c')](_0x4fc2f2,{'sectionId':0x64});return hasDefaultDashboard(_0x4f1fbb)[_0x84cf('0x2b')](function(_0x4f4326){return _['map'](_0x4fc2f2,function(_0xaed94a){if(_0xaed94a[_0x84cf('0x5b')]===0x64){_0xaed94a[_0x84cf('0x66')]=_0x4f4326;}return _0xaed94a;});});}else{return;}})[_0x84cf('0x2b')](function(_0xf40f73){if(_0xf40f73)_0x4fc2f2=_0xf40f73;if(_[_0x84cf('0x67')](_0x20693f,0x3eb)){var _0xf861b3=_[_0x84cf('0x4c')](_0x4fc2f2,{'sectionId':0x3eb});return getCustomDashboards(_0xf861b3)['then'](function(_0x377cbe){return _[_0x84cf('0x37')](_0x4fc2f2,function(_0x1f7ecd){if(_0xf861b3[_0x84cf('0x64')]){if(_0x1f7ecd[_0x84cf('0x5b')]===0x3eb){_0x1f7ecd[_0x84cf('0x66')]=_0x377cbe;}}else{if(_0x1f7ecd['sectionId']===0x64){_0x1f7ecd[_0x84cf('0x66')]=_0x377cbe;}}return _0x1f7ecd;});});}else{return;}})['then'](function(_0x105875){if(_0x105875)_0x4fc2f2=_0x105875;if(_[_0x84cf('0x67')](_0x20693f,0x709)){var _0x22c846=_[_0x84cf('0x4c')](_0x4fc2f2,{'sectionId':0x709});return getPlugins(_0x22c846)[_0x84cf('0x2b')](function(_0x5ae765){if(_0x22c846[_0x84cf('0x64')]){return _[_0x84cf('0x37')](_0x4fc2f2,function(_0x7646c6){if(_0x7646c6[_0x84cf('0x5b')]===0x709){_0x7646c6[_0x84cf('0x66')]=_0x5ae765;}return _0x7646c6;});}else{var _0x42e63b={'sectionId':0x76c,'enabled':0x1,'subsections':_0x5ae765};var _0x213043=_[_0x84cf('0x37')](_0x4fc2f2);_0x213043[_0x84cf('0x60')](_0x42e63b);return _0x213043;}});}else{return;}})[_0x84cf('0x2b')](function(_0x423fba){if(_0x423fba)_0x4fc2f2=_0x423fba;return _[_0x84cf('0x44')](_0x4fc2f2,[_0x84cf('0x64'),0x1]);})[_0x84cf('0x2b')](respondWithResult(_0x1bc31e,null))[_0x84cf('0x4b')](handleError(_0x1bc31e,null));};function hasDefaultDashboard(_0x4dab7b){var _0x3996a6=[0x65];return new BPromise(function(_0x23ea59,_0x5a99c5){try{if(_0x4dab7b['autoAssociation']){_0x23ea59(_0x3996a6);}else{return db[_0x84cf('0x5d')]['findOne']({'where':{'sectionId':_0x4dab7b['id']},'raw':!![]})[_0x84cf('0x2b')](function(_0x140d99){_0x140d99?_0x23ea59(_0x3996a6):_0x23ea59();});}}catch(_0x5c86ab){_0x5a99c5(_0x5c86ab);}});}function getCustomDashboards(_0x39f78a){var _0x413a6f=[];return new BPromise(function(_0x3b8c8d,_0x5db0c4){try{if(_0x39f78a[_0x84cf('0x5a')]){return db['Dashboard'][_0x84cf('0x4a')]({'raw':!![]})['then'](function(_0x33ab96){_0x33ab96[_0x84cf('0x68')](function(_0x5cac87){_0x413a6f[_0x84cf('0x60')](_0x5cac87['id']+0x1869f);});_0x3b8c8d(_0x413a6f);});}else{return db[_0x84cf('0x5d')][_0x84cf('0x4a')]({'where':{'sectionId':_0x39f78a['id']},'raw':!![]})['then'](function(_0x35274a){_0x35274a['forEach'](function(_0x738f05){_0x413a6f[_0x84cf('0x60')](_0x738f05[_0x84cf('0x69')]+0x1869f);});_0x3b8c8d(_0x413a6f);});}}catch(_0xff46d2){_0x5db0c4(_0xff46d2);}});}function getPlugins(_0x3150aa){var _0x44615b=[];return new BPromise(function(_0x480815,_0x42429b){try{if(_0x3150aa[_0x84cf('0x5a')]){return db[_0x84cf('0x6a')][_0x84cf('0x4a')]({'raw':!![]})[_0x84cf('0x2b')](function(_0x3efd3a){_0x3efd3a[_0x84cf('0x68')](function(_0x259270){_0x44615b[_0x84cf('0x60')](_0x259270['id']+0x15b38);});_0x480815(_0x44615b);});}else{return db['UserProfileResource'][_0x84cf('0x4a')]({'where':{'sectionId':_0x3150aa['id']},'raw':!![]})['then'](function(_0x5b516a){_0x5b516a[_0x84cf('0x68')](function(_0x303983){_0x44615b['push'](_0x303983[_0x84cf('0x69')]+0x15b38);});_0x480815(_0x44615b);});}}catch(_0x1def45){_0x42429b(_0x1def45);}});}exports[_0x84cf('0x6b')]=function(_0x4dad47,_0x3152c2){return db['UserProfile'][_0x84cf('0x4c')]({'where':{'id':_0x4dad47[_0x84cf('0x50')]['id']}})[_0x84cf('0x2b')](handleEntityNotFound(_0x3152c2,null))[_0x84cf('0x2b')](function(_0x184206){if(_0x184206){return db[_0x84cf('0x57')]['transaction'](function(_0x326492){return db[_0x84cf('0x59')][_0x84cf('0x4a')]({'where':{'userProfileId':_0x4dad47[_0x84cf('0x50')]['id']},'attributes':['id'],'raw':!![]})[_0x84cf('0x2b')](function(_0x153680){if(_0x153680){return db[_0x84cf('0x59')][_0x84cf('0x2c')]({'where':{'userProfileId':_0x4dad47[_0x84cf('0x50')]['id'],'id':_[_0x84cf('0x37')](_0x153680,function(_0x53330c){return _0x53330c['id'];})},'transaction':_0x326492});}})['then'](function(_0x411109){var _0x5e9fac=_[_0x84cf('0x37')](_0x4dad47[_0x84cf('0x4e')],function(_0xfbc67a){_0xfbc67a['userProfileId']=_0x4dad47[_0x84cf('0x50')]['id'];return _0xfbc67a;});return db[_0x84cf('0x59')][_0x84cf('0x6c')](_0x5e9fac,{'raw':!![],'transaction':_0x326492});})[_0x84cf('0x2b')](function(_0x550b7b){var _0x55f5f5=_[_0x84cf('0x44')](_[_0x84cf('0x37')](_0x550b7b,function(_0x3ae065){return _0x3ae065[_0x84cf('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x55f5f5){return db[_0x84cf('0x59')][_0x84cf('0x4a')]({'where':{'userProfileId':_0x4dad47[_0x84cf('0x50')]['id'],'sectionId':_[_0x84cf('0x37')](_0x55f5f5,function(_0x127085){return _0x127085[_0x84cf('0x5b')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x84cf('0x2b')](function(_0x272b45){var _0x543607=_['map'](_0x4dad47[_0x84cf('0x4e')],function(_0x957b94){_0x957b94[_0x84cf('0x5c')]=_0x4dad47[_0x84cf('0x50')]['id'];return _0x957b94;});return db[_0x84cf('0x5d')]['bulkCreate'](_0x543607,{'raw':!![],'transaction':_0x326492});});}})[_0x84cf('0x4b')](handleError(_0x3152c2,null));});}})[_0x84cf('0x2b')](function(_0x3a2628){var _0x108600=_[_0x84cf('0x37')](_0x3a2628,function(_0xc296a3){return _0xc296a3['get']({'plain':!![]});});})[_0x84cf('0x2b')](respondWithResult(_0x3152c2,null))[_0x84cf('0x4b')](handleError(_0x3152c2,null));};exports['removeResources']=function(_0x4a2992,_0x20851f,_0x55eac2){return db[_0x84cf('0x48')]['find']({'where':{'id':_0x4a2992[_0x84cf('0x50')]['id']}})[_0x84cf('0x2b')](handleEntityNotFound(_0x20851f,null))[_0x84cf('0x2b')](function(_0x4a4eb5){if(_0x4a4eb5){return _0x4a4eb5[_0x84cf('0x6d')](_0x4a2992[_0x84cf('0x39')][_0x84cf('0x62')]);}})['then'](respondWithStatusCode(_0x20851f,null))[_0x84cf('0x4b')](handleError(_0x20851f,null));};exports[_0x84cf('0x6e')]=function(_0x27492c,_0x1c2750){var _0x312bb5={};if(!_0x27492c['query'][_0x84cf('0x6f')])throw new Error(_0x84cf('0x70'));if(!_0x27492c['query'][_0x84cf('0x3e')](_0x84cf('0x3f'))){_0x312bb5[_0x84cf('0x25')]=qs[_0x84cf('0x25')](_0x27492c[_0x84cf('0x39')][_0x84cf('0x25')]);_0x312bb5['offset']=qs[_0x84cf('0x22')](_0x27492c[_0x84cf('0x39')][_0x84cf('0x22')]);}return db[_0x84cf('0x48')][_0x84cf('0x4c')]({'where':{'id':_0x27492c[_0x84cf('0x50')]['id']}})[_0x84cf('0x2b')](function(_0x1a083d){if(!_0x1a083d)throw new Error(_0x84cf('0x71')+_0x27492c[_0x84cf('0x50')]['id']);return db['UserProfile'][_0x84cf('0x6e')](_0x27492c);})[_0x84cf('0x2b')](respondWithFilteredResult(_0x1c2750,_0x312bb5))[_0x84cf('0x4b')](handleError(_0x1c2750,null));};
\ No newline at end of file
index c5a8518..ad213d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x761c=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','UserProfile'];(function(_0x358d2c,_0x4c11ce){var _0x186572=function(_0x500048){while(--_0x500048){_0x358d2c['push'](_0x358d2c['shift']());}};_0x186572(++_0x4c11ce);}(_0x761c,0x18a));var _0xc761=function(_0x1dd213,_0x21d91b){_0x1dd213=_0x1dd213-0x0;var _0xd2fc76=_0x761c[_0x1dd213];return _0xd2fc76;};'use strict';var EventEmitter=require(_0xc761('0x0'));var UserProfile=require('../../mysqldb')['db'][_0xc761('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xc761('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc761('0x3'),'afterDestroy':_0xc761('0x4')};function emitEvent(_0x15d8dc){return function(_0x4b63a5,_0x1bb07e,_0x4ec1c2){UserProfileEvents[_0xc761('0x5')](_0x15d8dc+':'+_0x4b63a5['id'],_0x4b63a5);UserProfileEvents[_0xc761('0x5')](_0x15d8dc,_0x4b63a5);_0x4ec1c2(null);};}for(var e in events){if(events[_0xc761('0x6')](e)){var event=events[e];UserProfile[_0xc761('0x7')](e,emitEvent(event));}}module[_0xc761('0x8')]=UserProfileEvents;
\ No newline at end of file
+var _0x96fd=['setMaxListeners','save','remove','emit','hook','exports','../../mysqldb'];(function(_0x1fcaf2,_0x78e165){var _0x39c6bb=function(_0x2b9610){while(--_0x2b9610){_0x1fcaf2['push'](_0x1fcaf2['shift']());}};_0x39c6bb(++_0x78e165);}(_0x96fd,0x1e9));var _0xd96f=function(_0xe13e13,_0x402131){_0xe13e13=_0xe13e13-0x0;var _0x3b3d61=_0x96fd[_0xe13e13];return _0x3b3d61;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xd96f('0x0'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xd96f('0x1')](0x0);var events={'afterCreate':_0xd96f('0x2'),'afterUpdate':'update','afterDestroy':_0xd96f('0x3')};function emitEvent(_0x110958){return function(_0x44f63c,_0x22b39b,_0x5d8681){UserProfileEvents[_0xd96f('0x4')](_0x110958+':'+_0x44f63c['id'],_0x44f63c);UserProfileEvents[_0xd96f('0x4')](_0x110958,_0x44f63c);_0x5d8681(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0xd96f('0x5')](e,emitEvent(event));}}module[_0xd96f('0x6')]=UserProfileEvents;
\ No newline at end of file
index 72bb5e6..c4190f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36a0=['Telephones','membername','telephone','VoiceQueues','queue','inbound','QueueCampaigns','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','OpenchannelAccount','SmsQueue','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','voicequeues','VoiceQueue','users','Users','admin','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','pauses','Pause','scheduler','sounds','Sound','tags','Tag','Template','triggers','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','reportId','metrics','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','toString','OpenTabs','user_profiles','query','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','ignore','union','autoAssociation','all','rawAttributes','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','default','DefaultReports','custom','rows','ids','customSorting','extraQueryConditions','count','Tags','color','tag','ThroughTags','true','dataValues','fax','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','then','associatedResources','map','model','findAll','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareProjects','name','projectName','JscriptyProject','contacts','CmContact','parentSections','Lists','ListId','lists','CmList','companies','CmCustomField','ChatQueue','chatwebsites','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','User','role','agent'];(function(_0x1acbb9,_0xfb6e8){var _0x24cdb6=function(_0x13b7c3){while(--_0x13b7c3){_0x1acbb9['push'](_0x1acbb9['shift']());}};_0x24cdb6(++_0xfb6e8);}(_0x36a0,0x89));var _0x036a=function(_0xadbc52,_0x65f803){_0xadbc52=_0xadbc52-0x0;var _0x185175=_0x36a0[_0xadbc52];return _0x185175;};'use strict';var _=require(_0x036a('0x0'));var attributes=require(_0x036a('0x1'));var qs=require(_0x036a('0x2'));var squel=require(_0x036a('0x3'));module[_0x036a('0x4')]=function(_0x16aecf){var _0x280746=_0x16aecf[_0x036a('0x5')];function _0x3f7805(_0x4b9e16,_0x3d067f){return new Promise(function(_0x38c063,_0x8f63fe){if(!_0x3d067f)return _0x38c063(null);var _0x3804a=_0x3d067f['filter']?{[_0x3d067f[_0x036a('0x6')][_0x036a('0x7')]]:_0x3d067f[_0x036a('0x6')][_0x036a('0x8')]}:undefined;return _0x280746[_0x4b9e16]['findAll']({'where':_0x3804a,'raw':!![]})[_0x036a('0x9')](function(_0x19715b){_0x3d067f[_0x036a('0xa')]=_[_0x036a('0xb')](_0x19715b,'id');_0x38c063(_0x3d067f);})['catch'](function(_0x403ea2){_0x8f63fe(_0x403ea2);});});}function _0xc96b0a(_0x1c6b26,_0x558a0c){return new Promise(function(_0x3f70e4,_0x11665c){var _0x2cc110=_0x1c6b26[_0x036a('0x6')]?{[_0x1c6b26[_0x036a('0x6')][_0x036a('0x7')]]:_0x1c6b26[_0x036a('0x6')][_0x036a('0x8')]}:undefined;return _0x280746[_0x1c6b26[_0x036a('0xc')]][_0x036a('0xd')]({'where':_0x2cc110,'raw':!![]})[_0x036a('0x9')](function(_0x2df450){_0x558a0c['associatedResources']=_[_0x036a('0xb')](_0x2df450,function(_0x389897){return _0x389897['name'];});_0x3f70e4(_0x558a0c);})[_0x036a('0xe')](function(_0x44ba11){_0x11665c(_0x44ba11);});});}function _0x24a754(_0x12d041,_0x1c9e7d,_0x435092){if(!_0x1c9e7d)return Promise[_0x036a('0xf')](null);return new Promise(function(_0x46eb9e,_0x4e96a3){return _0x280746[_0x036a('0x10')][_0x036a('0xd')]({'where':{'sectionId':_0x1c9e7d['id']},'raw':!![]})['then'](function(_0x43c36a){if(_0x12d041[_0x036a('0x7')]&&_0x12d041['field']!=='id'){_0x1c9e7d[_0x036a('0xa')]=_[_0x036a('0xb')](_0x43c36a,function(_0x544d68){return _0x544d68[_0x12d041[_0x036a('0x7')]];});}else{if(_0x435092===_0x036a('0x11')){_0x1c9e7d[_0x036a('0xa')]=_['map'](_0x43c36a,function(_0x1c1227){return{'id':_0x1c1227[_0x036a('0x12')],'type':_0x1c1227[_0x036a('0x13')]};});}else{_0x1c9e7d[_0x036a('0xa')]=_[_0x036a('0xb')](_0x43c36a,function(_0x1abe31){return _0x1abe31[_0x036a('0x12')];});}}_0x46eb9e(_0x1c9e7d);})[_0x036a('0xe')](function(_0x401e7d){_0x4e96a3(_0x401e7d);});});}function _0x4e3dad(_0x57c6b1,_0x57103f){var _0x5e6baa={'parentSections':[]};switch(_0x57c6b1['toLowerCase']()){case _0x036a('0x14'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x16');break;case _0x036a('0x17'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x18');break;case'squarerecordings':_0x5e6baa['childModel']='SquareRecording';_0x5e6baa['parentSections']=[{'name':_0x036a('0x19'),'field':_0x036a('0x1a'),'foreignKey':_0x036a('0x1b')}];break;case'projects':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x1c');break;case _0x036a('0x1d'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x1e');_0x5e6baa[_0x036a('0x1f')]=[{'name':_0x036a('0x20'),'field':'id','foreignKey':_0x036a('0x21')}];break;case _0x036a('0x22'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x23');break;case _0x036a('0x24'):_0x5e6baa[_0x036a('0x15')]='CmCompany';break;case'globalcustomfields':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x25');break;case'chatqueues':_0x5e6baa['childModel']=_0x036a('0x26');break;case _0x036a('0x27'):_0x5e6baa[_0x036a('0x15')]='ChatWebsite';break;case _0x036a('0x28'):_0x5e6baa['childModel']=_0x036a('0x29');break;case _0x036a('0x2a'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x2b');break;case _0x036a('0x2c'):case _0x036a('0x2d'):case _0x036a('0x2e'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x2f');break;case _0x036a('0x30'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x31');break;case _0x036a('0x32'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x33');break;case _0x036a('0x34'):_0x5e6baa['childModel']=_0x036a('0x35');_0x5e6baa[_0x036a('0x1f')]=[{'name':_0x036a('0x36'),'field':_0x036a('0x1a'),'foreignKey':'membername','model':_0x036a('0x37'),'filter':{'field':_0x036a('0x38'),'value':[_0x036a('0x39')]}},{'name':_0x036a('0x3a'),'field':_0x036a('0x1a'),'foreignKey':_0x036a('0x3b'),'model':_0x036a('0x37'),'filter':{'field':'role','value':[_0x036a('0x3c')]}},{'name':_0x036a('0x3d'),'field':_0x036a('0x1a'),'foreignKey':_0x036a('0x3e'),'model':'VoiceQueue','filter':{'field':_0x036a('0x13'),'value':[_0x036a('0x3f')]}},{'name':_0x036a('0x40'),'field':_0x036a('0x1a'),'foreignKey':'queue','model':'VoiceQueue','filter':{'field':_0x036a('0x13'),'value':['outbound']}}];break;case _0x036a('0x41'):_0x5e6baa['childModel']=_0x036a('0x42');break;case _0x036a('0x43'):_0x5e6baa['childModel']=_0x036a('0x44');break;case'voiceprefixes':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x45');break;case _0x036a('0x46'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x47');break;case _0x036a('0x48'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x49');break;case'mailaccounts':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x4a');break;case _0x036a('0x4b'):_0x5e6baa['childModel']=_0x036a('0x4c');break;case _0x036a('0x4d'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x4e');break;case'openchannelaccounts':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x4f');break;case'smsqueues':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x50');break;case'smsaccounts':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x51');break;case _0x036a('0x52'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x53');break;case _0x036a('0x54'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x55');break;case'teams':_0x5e6baa[_0x036a('0x15')]=_0x036a('0x56');break;case _0x036a('0x57'):case'queuecampaigns':_0x5e6baa['childModel']=_0x036a('0x58');if(_0x57103f){_0x5e6baa[_0x036a('0x1f')]=[{'name':_0x036a('0x3d')},{'name':_0x036a('0x40')}];}break;case _0x036a('0x59'):case'agents':case'telephones':_0x5e6baa['childModel']=_0x036a('0x37');if(_0x57103f){_0x5e6baa['parentSections']=[{'name':_0x036a('0x5a'),'filter':{'field':'role','value':[_0x036a('0x5b'),_0x036a('0x5c')]},'ignore':!![]},{'name':_0x036a('0x36')},{'name':'Telephones'}];}break;case _0x036a('0x5d'):_0x5e6baa[_0x036a('0x15')]='ZendeskAccount';break;case _0x036a('0x5e'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x5f');break;case _0x036a('0x60'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x61');break;case _0x036a('0x62'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x63');break;case _0x036a('0x64'):_0x5e6baa[_0x036a('0x15')]='DeskAccount';break;case _0x036a('0x65'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x66');break;case _0x036a('0x67'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x37');break;case _0x036a('0x68'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x69');break;case _0x036a('0x6a'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x6b');break;case'customdashboards':_0x5e6baa['childModel']=_0x036a('0x6c');break;case'intervals':_0x5e6baa[_0x036a('0x15')]='Interval';break;case _0x036a('0x6d'):_0x5e6baa['childModel']=_0x036a('0x6e');break;case _0x036a('0x6f'):_0x5e6baa[_0x036a('0x15')]='Schedule';break;case _0x036a('0x70'):_0x5e6baa['childModel']=_0x036a('0x71');break;case _0x036a('0x72'):_0x5e6baa['childModel']=_0x036a('0x73');break;case'templates':_0x5e6baa['childModel']=_0x036a('0x74');break;case _0x036a('0x75'):_0x5e6baa[_0x036a('0x15')]='Trigger';break;case _0x036a('0x76'):_0x5e6baa['childModel']=_0x036a('0x77');break;case _0x036a('0x78'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x79');break;case _0x036a('0x7a'):_0x5e6baa['childModel']=_0x036a('0x7b');break;case _0x036a('0x7c'):_0x5e6baa[_0x036a('0x15')]=_0x036a('0x11');_0x5e6baa[_0x036a('0x1f')]=[{'name':'Reports','field':'id','foreignKey':_0x036a('0x7d')}];break;case _0x036a('0x7e'):_0x5e6baa['childModel']='AnalyticMetric';break;}return _0x5e6baa;}function _0x5d19e3(_0x2acfe7,_0x1d4466){var _0x34d042=_0x2acfe7[_0x036a('0x7f')](0x0)[_0x036a('0x80')]()+_0x2acfe7[_0x036a('0x81')](0x1);var _0x1ae36f={'type':_0x280746[_0x036a('0x82')][_0x036a('0x83')][_0x036a('0x84')],'raw':!![]};return new Promise(function(_0x174127,_0x2fc51c){var _0x548423=squel[_0x036a('0x85')]()[_0x036a('0x7')](_0x036a('0x86')+_0x34d042+_0x036a('0x87'),'id')['field']('ui.createdAt')[_0x036a('0x88')](_0x036a('0x89')+_0x2acfe7+_0x036a('0x8a'),'ui')[_0x036a('0x8b')](_0x036a('0x8c'),_0x1d4466['id']);return _0x280746[_0x036a('0x8d')]['query'](_0x548423[_0x036a('0x8e')](),_0x1ae36f)['then'](function(_0x36ce55){_0x1d4466[_0x34d042+_0x036a('0x8f')]=_0x36ce55;_0x174127(_0x36ce55);})['catch'](function(_0x32c64c){_0x2fc51c(_0x32c64c);});});}return _0x16aecf['define']('UserProfile',attributes,{'tableName':_0x036a('0x90'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x44ac70){var _0x1ec752={'raw':_0x44ac70[_0x036a('0x91')][_0x036a('0x92')],'where':{}};var _0x50638b={};var _0x480079={'count':0x0,'rows':[]};var _0x141b05=_0x44ac70[_0x036a('0x91')][_0x036a('0x93')];var _0x24dd05=_0x44ac70['query'][_0x036a('0x94')]||![];var _0x126d3a=_0x4e3dad(_0x141b05,_0x24dd05);if(!_0x126d3a[_0x036a('0x15')])throw new Error(_0x036a('0x95')+_0x141b05+'\x27');var _0x132416=[{'name':_0x141b05}];if(!_[_0x036a('0x96')](_0x126d3a[_0x036a('0x1f')]))_0x132416=_0x126d3a[_0x036a('0x1f')];var _0x329ad9=[];for(var _0x2c323c=0x0;_0x2c323c<_0x132416[_0x036a('0x97')];_0x2c323c++){_0x329ad9[_0x036a('0x98')](_0x280746[_0x036a('0x99')][_0x036a('0x9a')]({'where':{'userProfileId':_0x44ac70['params']['id'],'name':_0x132416[_0x2c323c]['name']},'raw':!![]}));}return Promise['all'](_0x329ad9)[_0x036a('0x9')](function(_0x5266d7){var _0x414c02=_[_0x036a('0x6')](_0x5266d7,function(_0x533126){return _0x533126?_0x533126:undefined;});var _0x5d215c=_[_0x036a('0x6')](_0x132416,[_0x036a('0x9b'),!![]]);var _0x3a3816=_['isEmpty'](_0x414c02)&&_[_0x036a('0x96')](_0x5d215c)?null:_[_0x036a('0x9c')](_0x5d215c,_0x414c02);if(!_0x3a3816)return null;var _0xcece67=[];for(var _0x4b89e2=0x0;_0x4b89e2<_0x3a3816[_0x036a('0x97')];_0x4b89e2++){var _0x2c882d=_[_0x036a('0x9a')](_0x132416,function(_0x9c2652){return _0x3a3816[_0x4b89e2]?_0x9c2652[_0x036a('0x1a')]===_0x3a3816[_0x4b89e2][_0x036a('0x1a')]:null;});if(_0x2c882d){if(_0x3a3816[_0x4b89e2]['ignore']){_0xcece67[_0x036a('0x98')](_0x3f7805(_0x126d3a['childModel'],_0x3a3816[_0x4b89e2]));}else{if(!_0x3a3816[_0x4b89e2][_0x036a('0x9d')]){_0xcece67[_0x036a('0x98')](_0x24a754(_0x2c882d,_0x3a3816[_0x4b89e2],_0x126d3a[_0x036a('0x15')]));}else{if(_0x2c882d['model']){_0xcece67[_0x036a('0x98')](_0xc96b0a(_0x2c882d,_0x3a3816[_0x4b89e2]));}}}}}return Promise[_0x036a('0x9e')](_0xcece67);})[_0x036a('0x9')](function(_0x232f6e){var _0x12c6de=_0x232f6e;var _0x347436=null;if(_0x12c6de){_0x347436=_0x12c6de[_0x036a('0x97')]===0x1?_0x12c6de[0x0]:null;}if(!_0x347436&&!_0x12c6de)return _0x480079;var _0x5df29a=_0x280746[_0x126d3a[_0x036a('0x15')]][_0x036a('0x9f')];_0x50638b['model']=_['keys'](_0x5df29a);_0x50638b[_0x036a('0x91')]=_[_0x036a('0xa0')](_0x44ac70[_0x036a('0x91')]);_0x50638b[_0x036a('0xa1')]=_['intersection'](_0x50638b['model'],_0x50638b[_0x036a('0x91')]);_0x1ec752[_0x036a('0xa2')]=_[_0x036a('0xa3')](_0x50638b[_0x036a('0xc')],qs[_0x036a('0xa4')](_0x44ac70['query']['fields']));_0x1ec752[_0x036a('0xa2')]=_0x1ec752[_0x036a('0xa2')][_0x036a('0x97')]?_0x1ec752[_0x036a('0xa2')]:_0x50638b['model'];if(!_0x44ac70[_0x036a('0x91')][_0x036a('0xa5')](_0x036a('0xa6'))){_0x1ec752['limit']=qs['limit'](_0x44ac70[_0x036a('0x91')]['limit']);_0x1ec752[_0x036a('0xa7')]=qs[_0x036a('0xa7')](_0x44ac70[_0x036a('0x91')][_0x036a('0xa7')]);}_0x1ec752[_0x036a('0xa8')]=qs['sort'](_0x44ac70[_0x036a('0x91')][_0x036a('0xa9')]);_0x1ec752[_0x036a('0x8b')]=qs[_0x036a('0xa1')](_[_0x036a('0xaa')](_0x44ac70[_0x036a('0x91')],_0x50638b[_0x036a('0xa1')]));if(_0x44ac70[_0x036a('0x91')]['filter']){_0x1ec752[_0x036a('0x8b')]=_[_0x036a('0xab')](_0x1ec752[_0x036a('0x8b')],{'$or':_['map'](_0x5df29a,function(_0x3138fd){if(_0x3138fd[_0x036a('0x13')][_0x036a('0xac')]!==_0x036a('0xad')){var _0xae203={};_0xae203[_0x3138fd[_0x036a('0x7')]]={'$like':'%'+_0x44ac70[_0x036a('0x91')][_0x036a('0x6')]+'%'};return _0xae203;}})});}var _0x5ba399=[];var _0x2b4b9b=null;var _0xf0a285={};if(_0x347436){_0x2b4b9b=_[_0x036a('0x9a')](_0x132416,[_0x036a('0x1a'),_0x347436['name']]);if(_0x2b4b9b[_0x036a('0x7')]){_0xf0a285={};if(_0x126d3a[_0x036a('0x15')]==='AnalyticExtractedReport'){_0xf0a285[_0x2b4b9b[_0x036a('0xae')]]=_[_0x036a('0xb')](_0x347436['associatedResources'],'id');}else{_0xf0a285[_0x2b4b9b['foreignKey']]=_0x347436[_0x036a('0xa')];}_0x5ba399[_0x036a('0x98')](_0xf0a285);}else{_0x1ec752[_0x036a('0x8b')]['id']=_0x347436[_0x036a('0xa')];}}else{for(var _0x91f627=0x0;_0x91f627<_0x12c6de[_0x036a('0x97')];_0x91f627++){_0x2b4b9b=_[_0x036a('0x9a')](_0x132416,['name',_0x12c6de[_0x91f627][_0x036a('0x1a')]]);if(_0x2b4b9b[_0x036a('0x7')]){_0xf0a285={};_0xf0a285[_0x2b4b9b[_0x036a('0xae')]]=_0x12c6de[_0x91f627]['associatedResources'];_0x5ba399[_0x036a('0x98')](_0xf0a285);}else{if(!_0x1ec752[_0x036a('0x8b')]['id'])_0x1ec752[_0x036a('0x8b')]['id']=[];_0x12c6de[_0x91f627][_0x036a('0xa')][_0x036a('0xaf')](function(_0x40eff7){_0x1ec752[_0x036a('0x8b')]['id'][_0x036a('0x98')](_0x40eff7);});}}}if(!_[_0x036a('0x96')](_0x5ba399)){_0x1ec752['where']=_[_0x036a('0xab')](_0x1ec752[_0x036a('0x8b')],{'$and':{'$or':_0x5ba399}});}_0x1ec752=_[_0x036a('0xab')]({},_0x1ec752,_0x44ac70[_0x036a('0xb0')]);if(_0x347436&&!_0x347436[_0x036a('0x9d')]&&_0x126d3a[_0x036a('0x15')]===_0x036a('0x11')){if(_0x44ac70[_0x036a('0x91')][_0x036a('0xb1')]){_0x1ec752[_0x036a('0xb2')]=[{'all':!![]}];}return _0x280746[_0x126d3a[_0x036a('0x15')]][_0x036a('0xd')](_0x1ec752)['then'](function(_0x155d15){var _0x52c77c=[];_0x155d15[_0x036a('0xaf')](function(_0x53d45b){var _0x3894f1;switch(_0x53d45b['reportType']){case _0x036a('0xb3'):_0x3894f1=_[_0x036a('0x9a')](_0x347436[_0x036a('0xa')],function(_0x3c129a){return _0x3c129a['id']===_0x53d45b[_0x036a('0x7d')]&&_0x3c129a[_0x036a('0x13')]===_0x036a('0xb4');});break;case _0x036a('0xb5'):_0x3894f1=_['find'](_0x347436[_0x036a('0xa')],function(_0x175013){return _0x175013['id']===_0x53d45b[_0x036a('0x7d')]&&_0x175013[_0x036a('0x13')]==='CustomReports';});break;}if(_0x3894f1)_0x52c77c[_0x036a('0x98')](_0x53d45b);});_0x480079['count']=_0x52c77c[_0x036a('0x97')];_0x480079[_0x036a('0xb6')]=_0x52c77c;return _0x480079;});}else{if(!_['isEmpty'](_0x44ac70[_0x036a('0x91')]['ids'])){_0x1ec752[_0x036a('0x8b')]['id']=_0x1ec752[_0x036a('0x8b')]['id']?_[_0x036a('0xa3')](_0x1ec752[_0x036a('0x8b')]['id'],_0x44ac70[_0x036a('0x91')]['ids']):_0x44ac70[_0x036a('0x91')][_0x036a('0xb7')];if(_0x44ac70[_0x036a('0x91')]['customSorting']){_0x1ec752['order']=_0x44ac70[_0x036a('0x91')][_0x036a('0xb8')];}}if(_0x44ac70[_0x036a('0x91')][_0x036a('0xb9')]){_0x1ec752['where']=_[_0x036a('0xab')](_0x1ec752['where'],{'$and':_0x44ac70[_0x036a('0x91')][_0x036a('0xb9')]});}return _0x280746[_0x126d3a[_0x036a('0x15')]][_0x036a('0xba')]({'where':_0x1ec752['where']})[_0x036a('0x9')](function(_0x4d7cdd){_0x480079[_0x036a('0xba')]=_0x4d7cdd;if(_0x44ac70['query']['includeAll']){if(_0x126d3a[_0x036a('0x15')]===_0x036a('0x1e')){_0x1ec752[_0x036a('0xb2')]=[{'model':_0x280746[_0x036a('0x73')],'as':_0x036a('0xbb'),'attributes':['id',_0x036a('0x1a'),_0x036a('0xbc')],'required':_0x44ac70[_0x036a('0x91')][_0x036a('0xbd')]?!![]:![]},{'model':_0x280746[_0x036a('0x73')],'as':_0x036a('0xbe'),'attributes':['id',_0x036a('0x1a'),'color'],'through':_0x44ac70[_0x036a('0x91')][_0x036a('0xbd')]?{'attributes':[],'where':{'TagId':_0x44ac70[_0x036a('0x91')][_0x036a('0xbd')]||undefined}}:{},'required':_0x44ac70['query'][_0x036a('0xbd')]?!![]:![]}];}else{_0x1ec752['include']=[{'all':!![]}];}}return _0x280746[_0x126d3a[_0x036a('0x15')]][_0x036a('0xd')](_0x1ec752);})[_0x036a('0x9')](function(_0x2ddddd){_0x480079['rows']=_0x2ddddd;if(_0x141b05===_0x036a('0x36')&&_0x44ac70[_0x036a('0x91')]['openTabs']===_0x036a('0xbf')){var _0x3c1d11=[];for(var _0x186f00=0x0;_0x186f00<_0x480079[_0x036a('0xb6')][_0x036a('0x97')];_0x186f00++){_0x3c1d11[_0x036a('0x98')](_0x5d19e3('chat',_0x480079[_0x036a('0xb6')][_0x186f00][_0x036a('0xc0')]));_0x3c1d11[_0x036a('0x98')](_0x5d19e3('sms',_0x480079[_0x036a('0xb6')][_0x186f00][_0x036a('0xc0')]));_0x3c1d11['push'](_0x5d19e3(_0x036a('0xc1'),_0x480079['rows'][_0x186f00][_0x036a('0xc0')]));_0x3c1d11[_0x036a('0x98')](_0x5d19e3('mail',_0x480079['rows'][_0x186f00][_0x036a('0xc0')]));_0x3c1d11[_0x036a('0x98')](_0x5d19e3(_0x036a('0xc2'),_0x480079[_0x036a('0xb6')][_0x186f00][_0x036a('0xc0')]));_0x3c1d11['push'](_0x5d19e3('whatsapp',_0x480079[_0x036a('0xb6')][_0x186f00][_0x036a('0xc0')]));}return Promise[_0x036a('0x9e')](_0x3c1d11)[_0x036a('0x9')](function(){return _0x480079;});}return _0x480079;});}});}}});};
\ No newline at end of file
+var _0x63cb=['agents','Users','admin','user','Telephones','zendeskaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Dashboard','intervals','Interval','pauses','Pause','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','AnalyticExtractedReport','Reports','reportId','metrics','charAt','slice','Sequelize','QueryTypes','select','ui.','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','Invalid\x20section\x20\x27','length','UserProfileSection','params','all','ignore','isEmpty','union','find','autoAssociation','push','rawAttributes','model','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','offset','order','sort','pick','where','merge','VIRTUAL','foreignKey','forEach','options','includeAll','default','DefaultReports','custom','count','rows','customSorting','extraQueryConditions','include','Tags','color','tag','ThroughTags','openTabs','chat','sms','dataValues','mail','whatsapp','lodash','./userProfile.attributes','exports','models','filter','findAll','map','field','value','then','associatedResources','name','resolve','UserProfileResource','resourceId','type','catch','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareRecording','parentSections','SquareProjects','projects','JscriptyProject','CmContact','Lists','ListId','CmList','companies','CmCompany','CmCustomField','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','outboundroutes','contexts','VoiceContext','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','voiceprefixes','ivrcampaigns','Campaign','mailqueues','MailQueue','mailsubstatuses','MailSubstatus','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','whatsappaccounts','teams','Team','voicequeues','queuecampaigns','users'];(function(_0x3f2fbb,_0xa096c2){var _0x3a080e=function(_0x11c418){while(--_0x11c418){_0x3f2fbb['push'](_0x3f2fbb['shift']());}};_0x3a080e(++_0xa096c2);}(_0x63cb,0x1e2));var _0xb63c=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x63cb[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require(_0xb63c('0x0'));var attributes=require(_0xb63c('0x1'));var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0xb63c('0x2')]=function(_0x4c9995){var _0x5317e9=_0x4c9995[_0xb63c('0x3')];function _0x23ead2(_0xb8bd8f,_0x2b9856){return new Promise(function(_0x2985de,_0x312c6d){if(!_0x2b9856)return _0x2985de(null);var _0x14374e=_0x2b9856[_0xb63c('0x4')]?{[_0x2b9856[_0xb63c('0x4')]['field']]:_0x2b9856[_0xb63c('0x4')]['value']}:undefined;return _0x5317e9[_0xb8bd8f][_0xb63c('0x5')]({'where':_0x14374e,'raw':!![]})['then'](function(_0x5ab257){_0x2b9856['associatedResources']=_[_0xb63c('0x6')](_0x5ab257,'id');_0x2985de(_0x2b9856);})['catch'](function(_0x4bde7b){_0x312c6d(_0x4bde7b);});});}function _0x4788df(_0x2486bc,_0x4967f3){return new Promise(function(_0x3f43ae,_0x30e222){var _0x4d2fcc=_0x2486bc[_0xb63c('0x4')]?{[_0x2486bc[_0xb63c('0x4')][_0xb63c('0x7')]]:_0x2486bc[_0xb63c('0x4')][_0xb63c('0x8')]}:undefined;return _0x5317e9[_0x2486bc['model']]['findAll']({'where':_0x4d2fcc,'raw':!![]})[_0xb63c('0x9')](function(_0x1c37b9){_0x4967f3[_0xb63c('0xa')]=_[_0xb63c('0x6')](_0x1c37b9,function(_0x1e4a86){return _0x1e4a86[_0xb63c('0xb')];});_0x3f43ae(_0x4967f3);})['catch'](function(_0x37e8ed){_0x30e222(_0x37e8ed);});});}function _0x23d24a(_0x357ca0,_0x4e1c0f,_0x128238){if(!_0x4e1c0f)return Promise[_0xb63c('0xc')](null);return new Promise(function(_0x652c53,_0x2e060c){return _0x5317e9[_0xb63c('0xd')][_0xb63c('0x5')]({'where':{'sectionId':_0x4e1c0f['id']},'raw':!![]})[_0xb63c('0x9')](function(_0x1dc50f){if(_0x357ca0[_0xb63c('0x7')]&&_0x357ca0[_0xb63c('0x7')]!=='id'){_0x4e1c0f['associatedResources']=_[_0xb63c('0x6')](_0x1dc50f,function(_0x49da3d){return _0x49da3d[_0x357ca0[_0xb63c('0x7')]];});}else{if(_0x128238==='AnalyticExtractedReport'){_0x4e1c0f['associatedResources']=_[_0xb63c('0x6')](_0x1dc50f,function(_0x2bb717){return{'id':_0x2bb717[_0xb63c('0xe')],'type':_0x2bb717[_0xb63c('0xf')]};});}else{_0x4e1c0f[_0xb63c('0xa')]=_['map'](_0x1dc50f,function(_0x201e1a){return _0x201e1a[_0xb63c('0xe')];});}}_0x652c53(_0x4e1c0f);})[_0xb63c('0x10')](function(_0x569647){_0x2e060c(_0x569647);});});}function _0x221dc9(_0x4aa54d,_0x4bbdad){var _0x149194={'parentSections':[]};switch(_0x4aa54d[_0xb63c('0x11')]()){case _0xb63c('0x12'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x14');break;case _0xb63c('0x15'):_0x149194[_0xb63c('0x13')]='SquareOdbc';break;case'squarerecordings':_0x149194[_0xb63c('0x13')]=_0xb63c('0x16');_0x149194[_0xb63c('0x17')]=[{'name':_0xb63c('0x18'),'field':_0xb63c('0xb'),'foreignKey':'projectName'}];break;case _0xb63c('0x19'):_0x149194['childModel']=_0xb63c('0x1a');break;case'contacts':_0x149194[_0xb63c('0x13')]=_0xb63c('0x1b');_0x149194['parentSections']=[{'name':_0xb63c('0x1c'),'field':'id','foreignKey':_0xb63c('0x1d')}];break;case'lists':_0x149194['childModel']=_0xb63c('0x1e');break;case _0xb63c('0x1f'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x20');break;case'globalcustomfields':_0x149194[_0xb63c('0x13')]=_0xb63c('0x21');break;case'chatqueues':_0x149194[_0xb63c('0x13')]='ChatQueue';break;case _0xb63c('0x22'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x23');break;case _0xb63c('0x24'):_0x149194['childModel']=_0xb63c('0x25');break;case _0xb63c('0x26'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x27');break;case _0xb63c('0x28'):case'internalroutes':case _0xb63c('0x29'):_0x149194[_0xb63c('0x13')]='VoiceExtension';break;case _0xb63c('0x2a'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x2b');break;case'voicemails':_0x149194[_0xb63c('0x13')]='VoiceMail';break;case _0xb63c('0x2c'):_0x149194['childModel']=_0xb63c('0x2d');_0x149194['parentSections']=[{'name':_0xb63c('0x2e'),'field':_0xb63c('0xb'),'foreignKey':_0xb63c('0x2f'),'model':_0xb63c('0x30'),'filter':{'field':_0xb63c('0x31'),'value':[_0xb63c('0x32')]}},{'name':'Telephones','field':_0xb63c('0xb'),'foreignKey':_0xb63c('0x2f'),'model':_0xb63c('0x30'),'filter':{'field':_0xb63c('0x31'),'value':[_0xb63c('0x33')]}},{'name':_0xb63c('0x34'),'field':'name','foreignKey':_0xb63c('0x35'),'model':_0xb63c('0x36'),'filter':{'field':_0xb63c('0xf'),'value':[_0xb63c('0x37')]}},{'name':_0xb63c('0x38'),'field':_0xb63c('0xb'),'foreignKey':_0xb63c('0x35'),'model':'VoiceQueue','filter':{'field':_0xb63c('0xf'),'value':[_0xb63c('0x39')]}}];break;case _0xb63c('0x3a'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x3b');break;case'chanspies':_0x149194['childModel']='VoiceChanSpy';break;case _0xb63c('0x3c'):_0x149194['childModel']='VoicePrefix';break;case _0xb63c('0x3d'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x3e');break;case _0xb63c('0x3f'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x40');break;case'mailaccounts':_0x149194[_0xb63c('0x13')]='MailAccount';break;case _0xb63c('0x41'):_0x149194['childModel']=_0xb63c('0x42');break;case'openchannelqueues':_0x149194[_0xb63c('0x13')]=_0xb63c('0x43');break;case _0xb63c('0x44'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x45');break;case _0xb63c('0x46'):_0x149194['childModel']=_0xb63c('0x47');break;case _0xb63c('0x48'):_0x149194[_0xb63c('0x13')]='SmsAccount';break;case'whatsappqueues':_0x149194['childModel']='WhatsappQueue';break;case _0xb63c('0x49'):_0x149194['childModel']='WhatsappAccount';break;case _0xb63c('0x4a'):_0x149194['childModel']=_0xb63c('0x4b');break;case _0xb63c('0x4c'):case _0xb63c('0x4d'):_0x149194[_0xb63c('0x13')]='VoiceQueue';if(_0x4bbdad){_0x149194[_0xb63c('0x17')]=[{'name':'VoiceQueues'},{'name':_0xb63c('0x38')}];}break;case _0xb63c('0x4e'):case _0xb63c('0x4f'):case'telephones':_0x149194[_0xb63c('0x13')]='User';if(_0x4bbdad){_0x149194['parentSections']=[{'name':_0xb63c('0x50'),'filter':{'field':'role','value':[_0xb63c('0x51'),_0xb63c('0x52')]},'ignore':!![]},{'name':'Agents'},{'name':_0xb63c('0x53')}];}break;case _0xb63c('0x54'):_0x149194['childModel']='ZendeskAccount';break;case'salesforceaccounts':_0x149194[_0xb63c('0x13')]=_0xb63c('0x55');break;case _0xb63c('0x56'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x57');break;case _0xb63c('0x58'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x59');break;case _0xb63c('0x5a'):_0x149194['childModel']=_0xb63c('0x5b');break;case'zohoaccounts':_0x149194['childModel']=_0xb63c('0x5c');break;case _0xb63c('0x5d'):_0x149194[_0xb63c('0x13')]='User';break;case _0xb63c('0x5e'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x5f');break;case _0xb63c('0x60'):_0x149194[_0xb63c('0x13')]='Disposition';break;case'customdashboards':_0x149194[_0xb63c('0x13')]=_0xb63c('0x61');break;case _0xb63c('0x62'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x63');break;case _0xb63c('0x64'):_0x149194['childModel']=_0xb63c('0x65');break;case'scheduler':_0x149194[_0xb63c('0x13')]='Schedule';break;case'sounds':_0x149194['childModel']='Sound';break;case _0xb63c('0x66'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x67');break;case _0xb63c('0x68'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x69');break;case _0xb63c('0x6a'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x6b');break;case _0xb63c('0x6c'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x6d');break;case _0xb63c('0x6e'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x6f');break;case _0xb63c('0x70'):_0x149194[_0xb63c('0x13')]=_0xb63c('0x71');break;case _0xb63c('0x72'):_0x149194['childModel']=_0xb63c('0x73');_0x149194[_0xb63c('0x17')]=[{'name':_0xb63c('0x74'),'field':'id','foreignKey':_0xb63c('0x75')}];break;case _0xb63c('0x76'):_0x149194[_0xb63c('0x13')]='AnalyticMetric';break;}return _0x149194;}function _0x43158f(_0x5d5359,_0x56c2c1){var _0x463e78=_0x5d5359[_0xb63c('0x77')](0x0)['toUpperCase']()+_0x5d5359[_0xb63c('0x78')](0x1);var _0x36a464={'type':_0x5317e9[_0xb63c('0x79')][_0xb63c('0x7a')]['SELECT'],'raw':!![]};return new Promise(function(_0xee2425,_0x358419){var _0x51b707=squel[_0xb63c('0x7b')]()['field'](_0xb63c('0x7c')+_0x463e78+'InteractionId','id')['field'](_0xb63c('0x7d'))[_0xb63c('0x7e')](_0xb63c('0x7f')+_0x5d5359+_0xb63c('0x80'),'ui')['where'](_0xb63c('0x81'),_0x56c2c1['id']);return _0x5317e9[_0xb63c('0x82')][_0xb63c('0x83')](_0x51b707[_0xb63c('0x84')](),_0x36a464)[_0xb63c('0x9')](function(_0x5c7268){_0x56c2c1[_0x463e78+_0xb63c('0x85')]=_0x5c7268;_0xee2425(_0x5c7268);})[_0xb63c('0x10')](function(_0xe7de4){_0x358419(_0xe7de4);});});}return _0x4c9995[_0xb63c('0x86')](_0xb63c('0x87'),attributes,{'tableName':_0xb63c('0x88'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x180956){var _0x21ed9a={'raw':_0x180956[_0xb63c('0x83')]['raw'],'where':{}};var _0x20820a={};var _0x5d2f50={'count':0x0,'rows':[]};var _0x3b52fb=_0x180956[_0xb63c('0x83')]['section'];var _0xb10cd5=_0x180956[_0xb63c('0x83')]['mergeResources']||![];var _0x487de6=_0x221dc9(_0x3b52fb,_0xb10cd5);if(!_0x487de6[_0xb63c('0x13')])throw new Error(_0xb63c('0x89')+_0x3b52fb+'\x27');var _0x4cf850=[{'name':_0x3b52fb}];if(!_['isEmpty'](_0x487de6[_0xb63c('0x17')]))_0x4cf850=_0x487de6[_0xb63c('0x17')];var _0x5e189e=[];for(var _0x523f00=0x0;_0x523f00<_0x4cf850[_0xb63c('0x8a')];_0x523f00++){_0x5e189e['push'](_0x5317e9[_0xb63c('0x8b')]['find']({'where':{'userProfileId':_0x180956[_0xb63c('0x8c')]['id'],'name':_0x4cf850[_0x523f00][_0xb63c('0xb')]},'raw':!![]}));}return Promise[_0xb63c('0x8d')](_0x5e189e)[_0xb63c('0x9')](function(_0x28eb27){var _0x34c39e=_['filter'](_0x28eb27,function(_0x340d78){return _0x340d78?_0x340d78:undefined;});var _0x1137ff=_[_0xb63c('0x4')](_0x4cf850,[_0xb63c('0x8e'),!![]]);var _0xb19f23=_['isEmpty'](_0x34c39e)&&_[_0xb63c('0x8f')](_0x1137ff)?null:_[_0xb63c('0x90')](_0x1137ff,_0x34c39e);if(!_0xb19f23)return null;var _0xf416c=[];for(var _0x48de7f=0x0;_0x48de7f<_0xb19f23[_0xb63c('0x8a')];_0x48de7f++){var _0x3e8c95=_[_0xb63c('0x91')](_0x4cf850,function(_0x51453b){return _0xb19f23[_0x48de7f]?_0x51453b[_0xb63c('0xb')]===_0xb19f23[_0x48de7f][_0xb63c('0xb')]:null;});if(_0x3e8c95){if(_0xb19f23[_0x48de7f][_0xb63c('0x8e')]){_0xf416c['push'](_0x23ead2(_0x487de6[_0xb63c('0x13')],_0xb19f23[_0x48de7f]));}else{if(!_0xb19f23[_0x48de7f][_0xb63c('0x92')]){_0xf416c[_0xb63c('0x93')](_0x23d24a(_0x3e8c95,_0xb19f23[_0x48de7f],_0x487de6[_0xb63c('0x13')]));}else{if(_0x3e8c95['model']){_0xf416c['push'](_0x4788df(_0x3e8c95,_0xb19f23[_0x48de7f]));}}}}}return Promise[_0xb63c('0x8d')](_0xf416c);})['then'](function(_0x4fe0ae){var _0x1d3493=_0x4fe0ae;var _0x504544=null;if(_0x1d3493){_0x504544=_0x1d3493[_0xb63c('0x8a')]===0x1?_0x1d3493[0x0]:null;}if(!_0x504544&&!_0x1d3493)return _0x5d2f50;var _0x37afa8=_0x5317e9[_0x487de6[_0xb63c('0x13')]][_0xb63c('0x94')];_0x20820a[_0xb63c('0x95')]=_[_0xb63c('0x96')](_0x37afa8);_0x20820a['query']=_[_0xb63c('0x96')](_0x180956[_0xb63c('0x83')]);_0x20820a[_0xb63c('0x97')]=_['intersection'](_0x20820a[_0xb63c('0x95')],_0x20820a[_0xb63c('0x83')]);_0x21ed9a[_0xb63c('0x98')]=_[_0xb63c('0x99')](_0x20820a[_0xb63c('0x95')],qs[_0xb63c('0x9a')](_0x180956['query']['fields']));_0x21ed9a[_0xb63c('0x98')]=_0x21ed9a[_0xb63c('0x98')][_0xb63c('0x8a')]?_0x21ed9a[_0xb63c('0x98')]:_0x20820a[_0xb63c('0x95')];if(!_0x180956[_0xb63c('0x83')][_0xb63c('0x9b')](_0xb63c('0x9c'))){_0x21ed9a['limit']=qs['limit'](_0x180956[_0xb63c('0x83')][_0xb63c('0x9d')]);_0x21ed9a[_0xb63c('0x9e')]=qs['offset'](_0x180956[_0xb63c('0x83')][_0xb63c('0x9e')]);}_0x21ed9a[_0xb63c('0x9f')]=qs[_0xb63c('0xa0')](_0x180956['query']['sort']);_0x21ed9a['where']=qs[_0xb63c('0x97')](_[_0xb63c('0xa1')](_0x180956[_0xb63c('0x83')],_0x20820a[_0xb63c('0x97')]));if(_0x180956['query'][_0xb63c('0x4')]){_0x21ed9a[_0xb63c('0xa2')]=_[_0xb63c('0xa3')](_0x21ed9a[_0xb63c('0xa2')],{'$or':_['map'](_0x37afa8,function(_0x359482){if(_0x359482['type']['key']!==_0xb63c('0xa4')){var _0x5dc52a={};_0x5dc52a[_0x359482[_0xb63c('0x7')]]={'$like':'%'+_0x180956[_0xb63c('0x83')][_0xb63c('0x4')]+'%'};return _0x5dc52a;}})});}var _0x10da91=[];var _0x59e134=null;var _0x163f69={};if(_0x504544){_0x59e134=_[_0xb63c('0x91')](_0x4cf850,['name',_0x504544[_0xb63c('0xb')]]);if(_0x59e134[_0xb63c('0x7')]){_0x163f69={};if(_0x487de6['childModel']===_0xb63c('0x73')){_0x163f69[_0x59e134[_0xb63c('0xa5')]]=_[_0xb63c('0x6')](_0x504544[_0xb63c('0xa')],'id');}else{_0x163f69[_0x59e134[_0xb63c('0xa5')]]=_0x504544[_0xb63c('0xa')];}_0x10da91[_0xb63c('0x93')](_0x163f69);}else{_0x21ed9a[_0xb63c('0xa2')]['id']=_0x504544[_0xb63c('0xa')];}}else{for(var _0x39c12b=0x0;_0x39c12b<_0x1d3493['length'];_0x39c12b++){_0x59e134=_['find'](_0x4cf850,[_0xb63c('0xb'),_0x1d3493[_0x39c12b]['name']]);if(_0x59e134['field']){_0x163f69={};_0x163f69[_0x59e134[_0xb63c('0xa5')]]=_0x1d3493[_0x39c12b][_0xb63c('0xa')];_0x10da91[_0xb63c('0x93')](_0x163f69);}else{if(!_0x21ed9a['where']['id'])_0x21ed9a[_0xb63c('0xa2')]['id']=[];_0x1d3493[_0x39c12b][_0xb63c('0xa')][_0xb63c('0xa6')](function(_0x42d8f7){_0x21ed9a[_0xb63c('0xa2')]['id']['push'](_0x42d8f7);});}}}if(!_['isEmpty'](_0x10da91)){_0x21ed9a['where']=_['merge'](_0x21ed9a[_0xb63c('0xa2')],{'$and':{'$or':_0x10da91}});}_0x21ed9a=_[_0xb63c('0xa3')]({},_0x21ed9a,_0x180956[_0xb63c('0xa7')]);if(_0x504544&&!_0x504544[_0xb63c('0x92')]&&_0x487de6[_0xb63c('0x13')]===_0xb63c('0x73')){if(_0x180956[_0xb63c('0x83')][_0xb63c('0xa8')]){_0x21ed9a['include']=[{'all':!![]}];}return _0x5317e9[_0x487de6[_0xb63c('0x13')]][_0xb63c('0x5')](_0x21ed9a)[_0xb63c('0x9')](function(_0x4f90dd){var _0x58a62b=[];_0x4f90dd[_0xb63c('0xa6')](function(_0x472195){var _0xc9dc95;switch(_0x472195['reportType']){case _0xb63c('0xa9'):_0xc9dc95=_[_0xb63c('0x91')](_0x504544['associatedResources'],function(_0x2e3e24){return _0x2e3e24['id']===_0x472195[_0xb63c('0x75')]&&_0x2e3e24['type']===_0xb63c('0xaa');});break;case _0xb63c('0xab'):_0xc9dc95=_['find'](_0x504544[_0xb63c('0xa')],function(_0xb396f3){return _0xb396f3['id']===_0x472195[_0xb63c('0x75')]&&_0xb396f3['type']==='CustomReports';});break;}if(_0xc9dc95)_0x58a62b[_0xb63c('0x93')](_0x472195);});_0x5d2f50[_0xb63c('0xac')]=_0x58a62b[_0xb63c('0x8a')];_0x5d2f50[_0xb63c('0xad')]=_0x58a62b;return _0x5d2f50;});}else{if(!_[_0xb63c('0x8f')](_0x180956[_0xb63c('0x83')]['ids'])){_0x21ed9a[_0xb63c('0xa2')]['id']=_0x21ed9a[_0xb63c('0xa2')]['id']?_[_0xb63c('0x99')](_0x21ed9a[_0xb63c('0xa2')]['id'],_0x180956[_0xb63c('0x83')]['ids']):_0x180956[_0xb63c('0x83')]['ids'];if(_0x180956[_0xb63c('0x83')][_0xb63c('0xae')]){_0x21ed9a[_0xb63c('0x9f')]=_0x180956[_0xb63c('0x83')][_0xb63c('0xae')];}}if(_0x180956[_0xb63c('0x83')][_0xb63c('0xaf')]){_0x21ed9a['where']=_[_0xb63c('0xa3')](_0x21ed9a[_0xb63c('0xa2')],{'$and':_0x180956[_0xb63c('0x83')]['extraQueryConditions']});}return _0x5317e9[_0x487de6[_0xb63c('0x13')]][_0xb63c('0xac')]({'where':_0x21ed9a[_0xb63c('0xa2')]})[_0xb63c('0x9')](function(_0x3a4cde){_0x5d2f50[_0xb63c('0xac')]=_0x3a4cde;if(_0x180956[_0xb63c('0x83')][_0xb63c('0xa8')]){if(_0x487de6[_0xb63c('0x13')]===_0xb63c('0x1b')){_0x21ed9a[_0xb63c('0xb0')]=[{'model':_0x5317e9['Tag'],'as':_0xb63c('0xb1'),'attributes':['id','name',_0xb63c('0xb2')],'required':_0x180956[_0xb63c('0x83')][_0xb63c('0xb3')]?!![]:![]},{'model':_0x5317e9['Tag'],'as':_0xb63c('0xb4'),'attributes':['id',_0xb63c('0xb'),_0xb63c('0xb2')],'through':_0x180956[_0xb63c('0x83')]['tag']?{'attributes':[],'where':{'TagId':_0x180956[_0xb63c('0x83')][_0xb63c('0xb3')]||undefined}}:{},'required':_0x180956[_0xb63c('0x83')][_0xb63c('0xb3')]?!![]:![]}];}else{_0x21ed9a[_0xb63c('0xb0')]=[{'all':!![]}];}}return _0x5317e9[_0x487de6[_0xb63c('0x13')]]['findAll'](_0x21ed9a);})[_0xb63c('0x9')](function(_0x4f6fa7){_0x5d2f50[_0xb63c('0xad')]=_0x4f6fa7;if(_0x3b52fb===_0xb63c('0x2e')&&_0x180956[_0xb63c('0x83')][_0xb63c('0xb5')]==='true'){var _0x380fc1=[];for(var _0x1c5558=0x0;_0x1c5558<_0x5d2f50['rows'][_0xb63c('0x8a')];_0x1c5558++){_0x380fc1[_0xb63c('0x93')](_0x43158f(_0xb63c('0xb6'),_0x5d2f50[_0xb63c('0xad')][_0x1c5558]['dataValues']));_0x380fc1[_0xb63c('0x93')](_0x43158f(_0xb63c('0xb7'),_0x5d2f50[_0xb63c('0xad')][_0x1c5558][_0xb63c('0xb8')]));_0x380fc1['push'](_0x43158f('fax',_0x5d2f50[_0xb63c('0xad')][_0x1c5558][_0xb63c('0xb8')]));_0x380fc1[_0xb63c('0x93')](_0x43158f(_0xb63c('0xb9'),_0x5d2f50[_0xb63c('0xad')][_0x1c5558][_0xb63c('0xb8')]));_0x380fc1[_0xb63c('0x93')](_0x43158f('openchannel',_0x5d2f50['rows'][_0x1c5558][_0xb63c('0xb8')]));_0x380fc1['push'](_0x43158f(_0xb63c('0xba'),_0x5d2f50[_0xb63c('0xad')][_0x1c5558]['dataValues']));}return Promise[_0xb63c('0x8d')](_0x380fc1)[_0xb63c('0x9')](function(){return _0x5d2f50;});}return _0x5d2f50;});}});}}});};
\ No newline at end of file
index 6a7e6f0..e5b48b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d11=['../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','socket.io-emitter','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x6010f,_0x102984){var _0x496b8a=function(_0x325b92){while(--_0x325b92){_0x6010f['push'](_0x6010f['shift']());}};_0x496b8a(++_0x102984);}(_0x1d11,0xb6));var _0x11d1=function(_0x385d3e,_0x12b9ae){_0x385d3e=_0x385d3e-0x0;var _0x3ab84f=_0x1d11[_0x385d3e];return _0x3ab84f;};'use strict';var _=require(_0x11d1('0x0'));var util=require(_0x11d1('0x1'));var moment=require(_0x11d1('0x2'));var BPromise=require(_0x11d1('0x3'));var rs=require(_0x11d1('0x4'));var fs=require('fs');var Redis=require(_0x11d1('0x5'));var db=require(_0x11d1('0x6'))['db'];var utils=require(_0x11d1('0x7'));var logger=require(_0x11d1('0x8'))(_0x11d1('0x9'));var config=require(_0x11d1('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x11d1('0xb')]['http']({'port':0x232a});config[_0x11d1('0xc')]=_[_0x11d1('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x11d1('0xe'))(new Redis(config[_0x11d1('0xc')]));require('./userProfile.socket')['register'](socket);function respondWithRpcPromise(_0x2a3075,_0x50b57c,_0x247518){return new BPromise(function(_0x4f640b,_0x5b0ff5){return client[_0x11d1('0xf')](_0x2a3075,_0x247518)[_0x11d1('0x10')](function(_0x5bd354){logger['info'](_0x11d1('0x11'),_0x50b57c,_0x11d1('0x12'));logger[_0x11d1('0x13')](_0x11d1('0x14'),_0x50b57c,'request\x20sent',JSON[_0x11d1('0x15')](_0x5bd354));if(_0x5bd354[_0x11d1('0x16')]){if(_0x5bd354[_0x11d1('0x16')]['code']===0x1f4){logger[_0x11d1('0x16')](_0x11d1('0x11'),_0x50b57c,_0x5bd354[_0x11d1('0x16')][_0x11d1('0x17')]);return _0x5b0ff5(_0x5bd354[_0x11d1('0x16')]['message']);}logger[_0x11d1('0x16')]('UserProfile,\x20%s,\x20%s',_0x50b57c,_0x5bd354[_0x11d1('0x16')][_0x11d1('0x17')]);return _0x4f640b(_0x5bd354[_0x11d1('0x16')][_0x11d1('0x17')]);}else{logger[_0x11d1('0x18')](_0x11d1('0x11'),_0x50b57c,'request\x20sent');_0x4f640b(_0x5bd354[_0x11d1('0x19')][_0x11d1('0x17')]);}})[_0x11d1('0x1a')](function(_0x3f4136){logger[_0x11d1('0x16')](_0x11d1('0x11'),_0x50b57c,_0x3f4136);_0x5b0ff5(_0x3f4136);});});}
\ No newline at end of file
+var _0x8c8b=['client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x8c8b,0x106));var _0xb8c8=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8c8b[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xb8c8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb8c8('0x1'));var rs=require(_0xb8c8('0x2'));var fs=require('fs');var Redis=require(_0xb8c8('0x3'));var db=require(_0xb8c8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb8c8('0x5'));var config=require(_0xb8c8('0x6'));var jayson=require(_0xb8c8('0x7'));var client=jayson[_0xb8c8('0x8')][_0xb8c8('0x9')]({'port':0x232a});config[_0xb8c8('0xa')]=_[_0xb8c8('0xb')](config[_0xb8c8('0xa')],{'host':_0xb8c8('0xc'),'port':0x18eb});var socket=require(_0xb8c8('0xd'))(new Redis(config[_0xb8c8('0xa')]));require('./userProfile.socket')[_0xb8c8('0xe')](socket);function respondWithRpcPromise(_0x3e6f56,_0x406e1e,_0x1db0e7){return new BPromise(function(_0x3c74d5,_0x3414ec){return client[_0xb8c8('0xf')](_0x3e6f56,_0x1db0e7)[_0xb8c8('0x10')](function(_0x8814ad){logger[_0xb8c8('0x11')](_0xb8c8('0x12'),_0x406e1e,_0xb8c8('0x13'));logger['debug'](_0xb8c8('0x14'),_0x406e1e,'request\x20sent',JSON[_0xb8c8('0x15')](_0x8814ad));if(_0x8814ad[_0xb8c8('0x16')]){if(_0x8814ad['error'][_0xb8c8('0x17')]===0x1f4){logger[_0xb8c8('0x16')](_0xb8c8('0x12'),_0x406e1e,_0x8814ad['error'][_0xb8c8('0x18')]);return _0x3414ec(_0x8814ad[_0xb8c8('0x16')][_0xb8c8('0x18')]);}logger[_0xb8c8('0x16')]('UserProfile,\x20%s,\x20%s',_0x406e1e,_0x8814ad[_0xb8c8('0x16')][_0xb8c8('0x18')]);return _0x3c74d5(_0x8814ad[_0xb8c8('0x16')][_0xb8c8('0x18')]);}else{logger['info'](_0xb8c8('0x12'),_0x406e1e,_0xb8c8('0x13'));_0x3c74d5(_0x8814ad[_0xb8c8('0x19')][_0xb8c8('0x18')]);}})[_0xb8c8('0x1a')](function(_0x1cbded){logger[_0xb8c8('0x16')](_0xb8c8('0x12'),_0x406e1e,_0x1cbded);_0x3414ec(_0x1cbded);});});}
\ No newline at end of file
index 5157002..981a2c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x536a=['userProfile:','remove','update','removeListener','register','length'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x536a,0x6d));var _0xa536=function(_0x15a29e,_0x1a51d4){_0x15a29e=_0x15a29e-0x0;var _0x2847f2=_0x536a[_0x15a29e];return _0x2847f2;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save',_0xa536('0x0'),_0xa536('0x1')];function createListener(_0x575506,_0x30b5c3){return function(_0xba01ac){_0x30b5c3['emit'](_0x575506,_0xba01ac);};}function removeListener(_0x3fdb5e,_0x42d7f7){return function(){UserProfileEvents[_0xa536('0x2')](_0x3fdb5e,_0x42d7f7);};}exports[_0xa536('0x3')]=function(_0x1d380e){for(var _0xfea50a=0x0,_0x1b7e09=events[_0xa536('0x4')];_0xfea50a<_0x1b7e09;_0xfea50a++){var _0x9c659=events[_0xfea50a];var _0x2140d0=createListener(_0xa536('0x5')+_0x9c659,_0x1d380e);UserProfileEvents['on'](_0x9c659,_0x2140d0);}};
\ No newline at end of file
+var _0xf55f=['remove','update','removeListener','register','userProfile:','save'];(function(_0x2b8b71,_0x31f4b8){var _0x403dec=function(_0x4c9ad5){while(--_0x4c9ad5){_0x2b8b71['push'](_0x2b8b71['shift']());}};_0x403dec(++_0x31f4b8);}(_0xf55f,0x1d3));var _0xff55=function(_0x44b585,_0x120e48){_0x44b585=_0x44b585-0x0;var _0x38dd43=_0xf55f[_0x44b585];return _0x38dd43;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0xff55('0x0'),_0xff55('0x1'),_0xff55('0x2')];function createListener(_0x121716,_0x51ec4c){return function(_0x201194){_0x51ec4c['emit'](_0x121716,_0x201194);};}function removeListener(_0x550a6b,_0x19c1db){return function(){UserProfileEvents[_0xff55('0x3')](_0x550a6b,_0x19c1db);};}exports[_0xff55('0x4')]=function(_0x110535){for(var _0x1f38e7=0x0,_0xe83a1e=events['length'];_0x1f38e7<_0xe83a1e;_0x1f38e7++){var _0x582e41=events[_0x1f38e7];var _0x2c647d=createListener(_0xff55('0x5')+_0x582e41,_0x110535);UserProfileEvents['on'](_0x582e41,_0x2c647d);}};
\ No newline at end of file
index dfb5c5a..c7d0eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x266f=['get','isAuthenticated','index','/describe','show','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller'];(function(_0x13e300,_0x1bcb41){var _0x5a3eea=function(_0x2dfd2a){while(--_0x2dfd2a){_0x13e300['push'](_0x13e300['shift']());}};_0x5a3eea(++_0x1bcb41);}(_0x266f,0x1c3));var _0xf266=function(_0x4d21ff,_0x19d202){_0x4d21ff=_0x4d21ff-0x0;var _0x22b554=_0x266f[_0x4d21ff];return _0x22b554;};'use strict';var multer=require(_0xf266('0x0'));var util=require(_0xf266('0x1'));var path=require(_0xf266('0x2'));var timeout=require(_0xf266('0x3'));var express=require(_0xf266('0x4'));var router=express[_0xf266('0x5')]();var fs_extra=require(_0xf266('0x6'));var auth=require(_0xf266('0x7'));var interaction=require(_0xf266('0x8'));var config=require(_0xf266('0x9'));var controller=require(_0xf266('0xa'));router[_0xf266('0xb')]('/',auth[_0xf266('0xc')](),controller[_0xf266('0xd')]);router['get'](_0xf266('0xe'),auth[_0xf266('0xc')](),controller['describe']);router[_0xf266('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xf266('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf266('0x10')]);router[_0xf266('0x11')](_0xf266('0x12'),auth[_0xf266('0xc')](),controller[_0xf266('0x13')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf266('0x14')]);module[_0xf266('0x15')]=router;
\ No newline at end of file
+var _0x82bf=['exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','index','/describe','describe','isAuthenticated','show','post','create','put','/:id','update','delete'];(function(_0x43eadd,_0x36ca50){var _0x125bde=function(_0x5d74cf){while(--_0x5d74cf){_0x43eadd['push'](_0x43eadd['shift']());}};_0x125bde(++_0x36ca50);}(_0x82bf,0xd3));var _0xf82b=function(_0x5f191f,_0x5c5033){_0x5f191f=_0x5f191f-0x0;var _0x41e2c3=_0x82bf[_0x5f191f];return _0x41e2c3;};'use strict';var multer=require('multer');var util=require(_0xf82b('0x0'));var path=require(_0xf82b('0x1'));var timeout=require(_0xf82b('0x2'));var express=require(_0xf82b('0x3'));var router=express['Router']();var fs_extra=require(_0xf82b('0x4'));var auth=require(_0xf82b('0x5'));var interaction=require(_0xf82b('0x6'));var config=require('../../config/environment');var controller=require(_0xf82b('0x7'));router[_0xf82b('0x8')]('/',auth['isAuthenticated'](),controller[_0xf82b('0x9')]);router['get'](_0xf82b('0xa'),auth['isAuthenticated'](),controller[_0xf82b('0xb')]);router[_0xf82b('0x8')]('/:id',auth[_0xf82b('0xc')](),controller[_0xf82b('0xd')]);router[_0xf82b('0xe')]('/',auth[_0xf82b('0xc')](),controller[_0xf82b('0xf')]);router[_0xf82b('0x10')](_0xf82b('0x11'),auth[_0xf82b('0xc')](),controller[_0xf82b('0x12')]);router[_0xf82b('0x13')](_0xf82b('0x11'),auth[_0xf82b('0xc')](),controller['destroy']);module[_0xf82b('0x14')]=router;
\ No newline at end of file
index 72b375e..9349917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42ed=['STRING','INTEGER','exports'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0x42ed,0xe6));var _0xd42e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x42ed[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xd42e('0x0')]={'name':{'type':Sequelize[_0xd42e('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xd42e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xd42e('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xa1b8=['STRING','INTEGER','sequelize'];(function(_0x5281b9,_0xa35e81){var _0x38fe76=function(_0x34d1b4){while(--_0x34d1b4){_0x5281b9['push'](_0x5281b9['shift']());}};_0x38fe76(++_0xa35e81);}(_0xa1b8,0x74));var _0x8a1b=function(_0x19cb5e,_0x8403d4){_0x19cb5e=_0x19cb5e-0x0;var _0x1b4fa2=_0xa1b8[_0x19cb5e];return _0x1b4fa2;};'use strict';var Sequelize=require(_0x8a1b('0x0'));module['exports']={'name':{'type':Sequelize[_0x8a1b('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x8a1b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x8a1b('0x1')],'allowNull':![]}};
\ No newline at end of file
index 76b3860..6e95252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','UserProfileResource','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x515283,_0x813dea){var _0x38f836=function(_0x40c8f4){while(--_0x40c8f4){_0x515283['push'](_0x515283['shift']());}};_0x38f836(++_0x813dea);}(_0xba34,0x119));var _0x4ba3=function(_0x26a412,_0xdb7f39){_0x26a412=_0x26a412-0x0;var _0x7821e2=_0xba34[_0x26a412];return _0x7821e2;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1073d4,_0x52f55c){_0x52f55c=_0x52f55c||0xcc;return function(_0x256f02){if(_0x256f02){return _0x1073d4[_0x4ba3('0x19')](_0x52f55c);}return _0x1073d4[_0x4ba3('0x1a')](_0x52f55c)[_0x4ba3('0x1b')]();};}function respondWithResult(_0x2bc796,_0x3d2ace){_0x3d2ace=_0x3d2ace||0xc8;return function(_0x3a74f7){if(_0x3a74f7){return _0x2bc796[_0x4ba3('0x1a')](_0x3d2ace)[_0x4ba3('0x1c')](_0x3a74f7);}};}function respondWithFilteredResult(_0x401366,_0x36638b){return function(_0x301359){if(_0x301359){var _0x29a9d1=typeof _0x36638b[_0x4ba3('0x1d')]===_0x4ba3('0x1e')&&typeof _0x36638b[_0x4ba3('0x1f')]==='undefined';var _0x382fd0=_0x301359[_0x4ba3('0x20')];var _0x5ff7ce=_0x29a9d1?0x0:_0x36638b[_0x4ba3('0x1d')];var _0x556290=_0x29a9d1?_0x301359[_0x4ba3('0x20')]:_0x36638b[_0x4ba3('0x1d')]+_0x36638b[_0x4ba3('0x1f')];var _0x1e2ce5;if(_0x556290>=_0x382fd0){_0x556290=_0x382fd0;_0x1e2ce5=0xc8;}else{_0x1e2ce5=0xce;}_0x401366[_0x4ba3('0x1a')](_0x1e2ce5);return _0x401366[_0x4ba3('0x21')]('Content-Range',_0x5ff7ce+'-'+_0x556290+'/'+_0x382fd0)['json'](_0x301359);}return null;};}function patchUpdates(_0x2278b0){return function(_0x579d9f){try{jsonpatch[_0x4ba3('0x22')](_0x579d9f,_0x2278b0,!![]);}catch(_0x163967){return BPromise[_0x4ba3('0x23')](_0x163967);}return _0x579d9f[_0x4ba3('0x24')]();};}function saveUpdates(_0x46f1f5,_0x278a23){return function(_0x4a0823){if(_0x4a0823){return _0x4a0823[_0x4ba3('0x25')](_0x46f1f5)[_0x4ba3('0x26')](function(_0x5c28f9){return _0x5c28f9;});}return null;};}function removeEntity(_0x28bb3d,_0x4ffe39){return function(_0x1ae4de){if(_0x1ae4de){return _0x1ae4de[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){_0x28bb3d[_0x4ba3('0x1a')](0xcc)[_0x4ba3('0x1b')]();});}};}function handleEntityNotFound(_0xe29a49,_0x159596){return function(_0xe1f7d2){if(!_0xe1f7d2){_0xe29a49[_0x4ba3('0x19')](0x194);}return _0xe1f7d2;};}function handleError(_0x2e67a0,_0x50c729){_0x50c729=_0x50c729||0x1f4;return function(_0x252f37){logger[_0x4ba3('0x28')](_0x252f37[_0x4ba3('0x29')]);if(_0x252f37['name']){delete _0x252f37[_0x4ba3('0x2a')];}_0x2e67a0[_0x4ba3('0x1a')](_0x50c729)[_0x4ba3('0x2b')](_0x252f37);};}exports['index']=function(_0x10cae6,_0x843276){var _0x34ecb4={},_0x22394d={},_0x4a339e={'count':0x0,'rows':[]};var _0x590108=_[_0x4ba3('0x2c')](db[_0x4ba3('0x2d')][_0x4ba3('0x2e')],function(_0x19f039){return{'name':_0x19f039[_0x4ba3('0x2f')],'type':_0x19f039[_0x4ba3('0x30')]['key']};});_0x22394d[_0x4ba3('0x31')]=_[_0x4ba3('0x2c')](_0x590108,_0x4ba3('0x2a'));_0x22394d[_0x4ba3('0x32')]=_[_0x4ba3('0x33')](_0x10cae6[_0x4ba3('0x32')]);_0x22394d[_0x4ba3('0x34')]=_[_0x4ba3('0x35')](_0x22394d[_0x4ba3('0x31')],_0x22394d[_0x4ba3('0x32')]);_0x34ecb4['attributes']=_['intersection'](_0x22394d['model'],qs[_0x4ba3('0x36')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x36')]));_0x34ecb4[_0x4ba3('0x37')]=_0x34ecb4[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x34ecb4[_0x4ba3('0x37')]:_0x22394d[_0x4ba3('0x31')];if(!_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x39')](_0x4ba3('0x3a'))){_0x34ecb4[_0x4ba3('0x1f')]=qs['limit'](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x1f')]);_0x34ecb4[_0x4ba3('0x1d')]=qs['offset'](_0x10cae6[_0x4ba3('0x32')]['offset']);}_0x34ecb4[_0x4ba3('0x3b')]=qs[_0x4ba3('0x3c')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x3c')]);_0x34ecb4[_0x4ba3('0x3d')]=qs[_0x4ba3('0x34')](_['pick'](_0x10cae6[_0x4ba3('0x32')],_0x22394d[_0x4ba3('0x34')]),_0x590108);if(_0x10cae6[_0x4ba3('0x32')]['filter']){_0x34ecb4[_0x4ba3('0x3d')]=_[_0x4ba3('0x3e')](_0x34ecb4['where'],{'$or':_[_0x4ba3('0x2c')](_0x590108,function(_0x503777){if(_0x503777['type']!==_0x4ba3('0x3f')){var _0x1acc74={};_0x1acc74[_0x503777[_0x4ba3('0x2a')]]={'$like':'%'+_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x40')]+'%'};return _0x1acc74;}})});}_0x34ecb4=_['merge']({},_0x34ecb4,_0x10cae6[_0x4ba3('0x41')]);var _0x10e4b5={'where':_0x34ecb4[_0x4ba3('0x3d')]};return db[_0x4ba3('0x2d')][_0x4ba3('0x20')](_0x10e4b5)[_0x4ba3('0x26')](function(_0x349af4){_0x4a339e[_0x4ba3('0x20')]=_0x349af4;if(_0x10cae6['query'][_0x4ba3('0x42')]){_0x34ecb4[_0x4ba3('0x43')]=[{'all':!![]}];}return db[_0x4ba3('0x2d')][_0x4ba3('0x44')](_0x34ecb4);})[_0x4ba3('0x26')](function(_0x25b2c9){_0x4a339e[_0x4ba3('0x45')]=_0x25b2c9;return _0x4a339e;})[_0x4ba3('0x26')](respondWithFilteredResult(_0x843276,_0x34ecb4))[_0x4ba3('0x46')](handleError(_0x843276,null));};exports[_0x4ba3('0x47')]=function(_0x3b9a0a,_0x1c58d2){var _0x1d031b={'raw':![],'where':{'id':_0x3b9a0a['params']['id']}},_0x28b649={};_0x28b649['model']=_['keys'](db['UserProfileResource']['rawAttributes']);_0x28b649[_0x4ba3('0x32')]=_['keys'](_0x3b9a0a[_0x4ba3('0x32')]);_0x28b649['filters']=_[_0x4ba3('0x35')](_0x28b649[_0x4ba3('0x31')],_0x28b649[_0x4ba3('0x32')]);_0x1d031b[_0x4ba3('0x37')]=_[_0x4ba3('0x35')](_0x28b649['model'],qs[_0x4ba3('0x36')](_0x3b9a0a['query'][_0x4ba3('0x36')]));_0x1d031b['attributes']=_0x1d031b[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x1d031b[_0x4ba3('0x37')]:_0x28b649[_0x4ba3('0x31')];if(_0x3b9a0a[_0x4ba3('0x32')][_0x4ba3('0x42')]){_0x1d031b[_0x4ba3('0x43')]=[{'all':!![]}];}_0x1d031b=_['merge']({},_0x1d031b,_0x3b9a0a[_0x4ba3('0x41')]);return db[_0x4ba3('0x2d')][_0x4ba3('0x48')](_0x1d031b)[_0x4ba3('0x26')](handleEntityNotFound(_0x1c58d2,null))[_0x4ba3('0x26')](respondWithResult(_0x1c58d2,null))['catch'](handleError(_0x1c58d2,null));};exports['create']=function(_0xa4bbb2,_0x1fe115){return db[_0x4ba3('0x2d')]['create'](_0xa4bbb2[_0x4ba3('0x49')],{})[_0x4ba3('0x26')](respondWithResult(_0x1fe115,0xc9))[_0x4ba3('0x46')](handleError(_0x1fe115,null));};exports['update']=function(_0x47f588,_0x34dc04){if(_0x47f588['body']['id']){delete _0x47f588[_0x4ba3('0x49')]['id'];}return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x47f588[_0x4ba3('0x4a')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x34dc04,null))[_0x4ba3('0x26')](saveUpdates(_0x47f588['body'],null))[_0x4ba3('0x26')](respondWithResult(_0x34dc04,null))[_0x4ba3('0x46')](handleError(_0x34dc04,null));};exports['destroy']=function(_0x325475,_0x12ae6f){return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x325475[_0x4ba3('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12ae6f,null))[_0x4ba3('0x26')](removeEntity(_0x12ae6f,null))[_0x4ba3('0x46')](handleError(_0x12ae6f,null));};exports['describe']=function(_0x43f820,_0x19d70f){return db[_0x4ba3('0x2d')][_0x4ba3('0x4b')]()[_0x4ba3('0x26')](respondWithResult(_0x19d70f,null))[_0x4ba3('0x46')](handleError(_0x19d70f,null));};
\ No newline at end of file
+var _0x1a85=['describe','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','pick','map','VIRTUAL','merge','options','include','findAll','rows','catch','show','fields','includeAll','find','create','body','params','destroy'];(function(_0x111c69,_0x5445d8){var _0x5635bc=function(_0x1cfc18){while(--_0x1cfc18){_0x111c69['push'](_0x111c69['shift']());}};_0x5635bc(++_0x5445d8);}(_0x1a85,0x178));var _0x51a8=function(_0xee12a3,_0x4d2c79){_0xee12a3=_0xee12a3-0x0;var _0x41a6a2=_0x1a85[_0xee12a3];return _0x41a6a2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x51a8('0x0'));var jsonpatch=require(_0x51a8('0x1'));var rp=require(_0x51a8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x51a8('0x3'));var util=require(_0x51a8('0x4'));var path=require(_0x51a8('0x5'));var sox=require('sox');var csv=require(_0x51a8('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x51a8('0x7'));var _=require('lodash');var squel=require(_0x51a8('0x8'));var crypto=require(_0x51a8('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x51a8('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x51a8('0xb'));var Redis=require(_0x51a8('0xc'));var authService=require(_0x51a8('0xd'));var qs=require(_0x51a8('0xe'));var as=require(_0x51a8('0xf'));var hardwareService=require(_0x51a8('0x10'));var logger=require(_0x51a8('0x11'))(_0x51a8('0x12'));var utils=require(_0x51a8('0x13'));var config=require(_0x51a8('0x14'));var licenseUtil=require(_0x51a8('0x15'));var db=require(_0x51a8('0x16'))['db'];function respondWithStatusCode(_0x38a1d2,_0x1827e6){_0x1827e6=_0x1827e6||0xcc;return function(_0x43c042){if(_0x43c042){return _0x38a1d2[_0x51a8('0x17')](_0x1827e6);}return _0x38a1d2[_0x51a8('0x18')](_0x1827e6)['end']();};}function respondWithResult(_0x461f5c,_0x7a4c36){_0x7a4c36=_0x7a4c36||0xc8;return function(_0xaec066){if(_0xaec066){return _0x461f5c['status'](_0x7a4c36)[_0x51a8('0x19')](_0xaec066);}};}function respondWithFilteredResult(_0x547d40,_0x10584b){return function(_0x2b8d37){if(_0x2b8d37){var _0x39cd45=typeof _0x10584b[_0x51a8('0x1a')]===_0x51a8('0x1b')&&typeof _0x10584b[_0x51a8('0x1c')]===_0x51a8('0x1b');var _0x516abc=_0x2b8d37[_0x51a8('0x1d')];var _0x45a433=_0x39cd45?0x0:_0x10584b[_0x51a8('0x1a')];var _0x23539e=_0x39cd45?_0x2b8d37[_0x51a8('0x1d')]:_0x10584b[_0x51a8('0x1a')]+_0x10584b['limit'];var _0x1df8c2;if(_0x23539e>=_0x516abc){_0x23539e=_0x516abc;_0x1df8c2=0xc8;}else{_0x1df8c2=0xce;}_0x547d40[_0x51a8('0x18')](_0x1df8c2);return _0x547d40[_0x51a8('0x1e')](_0x51a8('0x1f'),_0x45a433+'-'+_0x23539e+'/'+_0x516abc)[_0x51a8('0x19')](_0x2b8d37);}return null;};}function patchUpdates(_0x3bc044){return function(_0x28aea0){try{jsonpatch[_0x51a8('0x20')](_0x28aea0,_0x3bc044,!![]);}catch(_0x5ac1c0){return BPromise[_0x51a8('0x21')](_0x5ac1c0);}return _0x28aea0['save']();};}function saveUpdates(_0xfe0ddb,_0x12c029){return function(_0x8bda40){if(_0x8bda40){return _0x8bda40[_0x51a8('0x22')](_0xfe0ddb)['then'](function(_0xae3588){return _0xae3588;});}return null;};}function removeEntity(_0x4b9cdd,_0x47f063){return function(_0x23d26a){if(_0x23d26a){return _0x23d26a['destroy']()[_0x51a8('0x23')](function(){_0x4b9cdd[_0x51a8('0x18')](0xcc)[_0x51a8('0x24')]();});}};}function handleEntityNotFound(_0x18e2f3,_0x157554){return function(_0x2f2f05){if(!_0x2f2f05){_0x18e2f3[_0x51a8('0x17')](0x194);}return _0x2f2f05;};}function handleError(_0x1326a2,_0x5b3f49){_0x5b3f49=_0x5b3f49||0x1f4;return function(_0x273ce2){logger[_0x51a8('0x25')](_0x273ce2[_0x51a8('0x26')]);if(_0x273ce2[_0x51a8('0x27')]){delete _0x273ce2[_0x51a8('0x27')];}_0x1326a2[_0x51a8('0x18')](_0x5b3f49)[_0x51a8('0x28')](_0x273ce2);};}exports[_0x51a8('0x29')]=function(_0xec08ae,_0x4b5cda){var _0x20c6b5={},_0x347a02={},_0x4a1548={'count':0x0,'rows':[]};var _0x2f9d53=_['map'](db[_0x51a8('0x2a')][_0x51a8('0x2b')],function(_0x143f46){return{'name':_0x143f46[_0x51a8('0x2c')],'type':_0x143f46[_0x51a8('0x2d')]['key']};});_0x347a02[_0x51a8('0x2e')]=_['map'](_0x2f9d53,_0x51a8('0x27'));_0x347a02[_0x51a8('0x2f')]=_[_0x51a8('0x30')](_0xec08ae['query']);_0x347a02[_0x51a8('0x31')]=_['intersection'](_0x347a02[_0x51a8('0x2e')],_0x347a02[_0x51a8('0x2f')]);_0x20c6b5[_0x51a8('0x32')]=_[_0x51a8('0x33')](_0x347a02[_0x51a8('0x2e')],qs['fields'](_0xec08ae[_0x51a8('0x2f')]['fields']));_0x20c6b5[_0x51a8('0x32')]=_0x20c6b5[_0x51a8('0x32')][_0x51a8('0x34')]?_0x20c6b5['attributes']:_0x347a02[_0x51a8('0x2e')];if(!_0xec08ae[_0x51a8('0x2f')][_0x51a8('0x35')](_0x51a8('0x36'))){_0x20c6b5[_0x51a8('0x1c')]=qs['limit'](_0xec08ae['query']['limit']);_0x20c6b5[_0x51a8('0x1a')]=qs[_0x51a8('0x1a')](_0xec08ae['query'][_0x51a8('0x1a')]);}_0x20c6b5['order']=qs[_0x51a8('0x37')](_0xec08ae[_0x51a8('0x2f')][_0x51a8('0x37')]);_0x20c6b5[_0x51a8('0x38')]=qs[_0x51a8('0x31')](_[_0x51a8('0x39')](_0xec08ae['query'],_0x347a02['filters']),_0x2f9d53);if(_0xec08ae[_0x51a8('0x2f')]['filter']){_0x20c6b5['where']=_['merge'](_0x20c6b5[_0x51a8('0x38')],{'$or':_[_0x51a8('0x3a')](_0x2f9d53,function(_0x3cbf97){if(_0x3cbf97['type']!==_0x51a8('0x3b')){var _0x25d772={};_0x25d772[_0x3cbf97[_0x51a8('0x27')]]={'$like':'%'+_0xec08ae[_0x51a8('0x2f')]['filter']+'%'};return _0x25d772;}})});}_0x20c6b5=_[_0x51a8('0x3c')]({},_0x20c6b5,_0xec08ae[_0x51a8('0x3d')]);var _0x1b0333={'where':_0x20c6b5['where']};return db[_0x51a8('0x2a')]['count'](_0x1b0333)[_0x51a8('0x23')](function(_0x1e637a){_0x4a1548[_0x51a8('0x1d')]=_0x1e637a;if(_0xec08ae[_0x51a8('0x2f')]['includeAll']){_0x20c6b5[_0x51a8('0x3e')]=[{'all':!![]}];}return db[_0x51a8('0x2a')][_0x51a8('0x3f')](_0x20c6b5);})[_0x51a8('0x23')](function(_0xa33fc){_0x4a1548[_0x51a8('0x40')]=_0xa33fc;return _0x4a1548;})[_0x51a8('0x23')](respondWithFilteredResult(_0x4b5cda,_0x20c6b5))[_0x51a8('0x41')](handleError(_0x4b5cda,null));};exports[_0x51a8('0x42')]=function(_0x4b8467,_0x22e6e6){var _0x2afb74={'raw':![],'where':{'id':_0x4b8467['params']['id']}},_0x4c7c67={};_0x4c7c67[_0x51a8('0x2e')]=_[_0x51a8('0x30')](db[_0x51a8('0x2a')][_0x51a8('0x2b')]);_0x4c7c67[_0x51a8('0x2f')]=_[_0x51a8('0x30')](_0x4b8467[_0x51a8('0x2f')]);_0x4c7c67[_0x51a8('0x31')]=_[_0x51a8('0x33')](_0x4c7c67[_0x51a8('0x2e')],_0x4c7c67['query']);_0x2afb74[_0x51a8('0x32')]=_[_0x51a8('0x33')](_0x4c7c67[_0x51a8('0x2e')],qs[_0x51a8('0x43')](_0x4b8467[_0x51a8('0x2f')][_0x51a8('0x43')]));_0x2afb74['attributes']=_0x2afb74[_0x51a8('0x32')]['length']?_0x2afb74[_0x51a8('0x32')]:_0x4c7c67[_0x51a8('0x2e')];if(_0x4b8467[_0x51a8('0x2f')][_0x51a8('0x44')]){_0x2afb74[_0x51a8('0x3e')]=[{'all':!![]}];}_0x2afb74=_['merge']({},_0x2afb74,_0x4b8467['options']);return db[_0x51a8('0x2a')][_0x51a8('0x45')](_0x2afb74)[_0x51a8('0x23')](handleEntityNotFound(_0x22e6e6,null))[_0x51a8('0x23')](respondWithResult(_0x22e6e6,null))[_0x51a8('0x41')](handleError(_0x22e6e6,null));};exports['create']=function(_0x504a43,_0xcbd998){return db[_0x51a8('0x2a')][_0x51a8('0x46')](_0x504a43[_0x51a8('0x47')],{})[_0x51a8('0x23')](respondWithResult(_0xcbd998,0xc9))[_0x51a8('0x41')](handleError(_0xcbd998,null));};exports[_0x51a8('0x22')]=function(_0x1103a3,_0x301578){if(_0x1103a3['body']['id']){delete _0x1103a3['body']['id'];}return db['UserProfileResource'][_0x51a8('0x45')]({'where':{'id':_0x1103a3[_0x51a8('0x48')]['id']}})[_0x51a8('0x23')](handleEntityNotFound(_0x301578,null))['then'](saveUpdates(_0x1103a3[_0x51a8('0x47')],null))[_0x51a8('0x23')](respondWithResult(_0x301578,null))['catch'](handleError(_0x301578,null));};exports[_0x51a8('0x49')]=function(_0x4fb93c,_0x50a2f8){return db[_0x51a8('0x2a')][_0x51a8('0x45')]({'where':{'id':_0x4fb93c[_0x51a8('0x48')]['id']}})['then'](handleEntityNotFound(_0x50a2f8,null))['then'](removeEntity(_0x50a2f8,null))[_0x51a8('0x41')](handleError(_0x50a2f8,null));};exports['describe']=function(_0x21c4da,_0xc89617){return db[_0x51a8('0x2a')][_0x51a8('0x4a')]()[_0x51a8('0x23')](respondWithResult(_0xc89617,null))[_0x51a8('0x41')](handleError(_0xc89617,null));};
\ No newline at end of file
index 464b9f4..222359b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x150d=['user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./userProfileResource.attributes','exports'];(function(_0x5f3d6e,_0x598cd1){var _0x4fd78a=function(_0x58d090){while(--_0x58d090){_0x5f3d6e['push'](_0x5f3d6e['shift']());}};_0x4fd78a(++_0x598cd1);}(_0x150d,0x92));var _0xd150=function(_0x1b25c1,_0x2c6ce6){_0x1b25c1=_0x1b25c1-0x0;var _0x1e4447=_0x150d[_0x1b25c1];return _0x1e4447;};'use strict';var _=require(_0xd150('0x0'));var util=require(_0xd150('0x1'));var logger=require(_0xd150('0x2'))(_0xd150('0x3'));var moment=require(_0xd150('0x4'));var BPromise=require('bluebird');var rp=require(_0xd150('0x5'));var fs=require('fs');var path=require(_0xd150('0x6'));var rimraf=require(_0xd150('0x7'));var config=require('../../config/environment');var attributes=require(_0xd150('0x8'));module[_0xd150('0x9')]=function(_0x49612d,_0x57b009){return _0x49612d['define']('UserProfileResource',attributes,{'tableName':_0xd150('0xa'),'paranoid':![],'indexes':[{'name':_0xd150('0xb'),'fields':['resourceId',_0xd150('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xce32=['user_profile_has_resources','compositeIndex','resourceId','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','define','UserProfileResource'];(function(_0x41ac4f,_0xdbec59){var _0x3e8c2c=function(_0x4d1f5b){while(--_0x4d1f5b){_0x41ac4f['push'](_0x41ac4f['shift']());}};_0x3e8c2c(++_0xdbec59);}(_0xce32,0xab));var _0x2ce3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce32[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2ce3('0x0'))(_0x2ce3('0x1'));var moment=require(_0x2ce3('0x2'));var BPromise=require(_0x2ce3('0x3'));var rp=require(_0x2ce3('0x4'));var fs=require('fs');var path=require(_0x2ce3('0x5'));var rimraf=require(_0x2ce3('0x6'));var config=require(_0x2ce3('0x7'));var attributes=require(_0x2ce3('0x8'));module['exports']=function(_0x115b7d,_0x3a3519){return _0x115b7d[_0x2ce3('0x9')](_0x2ce3('0xa'),attributes,{'tableName':_0x2ce3('0xb'),'paranoid':![],'indexes':[{'name':_0x2ce3('0xc'),'fields':[_0x2ce3('0xd'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index 23edfca..20637f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x097e=['http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x56696a,_0xe4a216){var _0x4b550e=function(_0x51feb2){while(--_0x51feb2){_0x56696a['push'](_0x56696a['shift']());}};_0x4b550e(++_0xe4a216);}(_0x097e,0x9d));var _0xe097=function(_0x2abd2c,_0x22a537){_0x2abd2c=_0x2abd2c-0x0;var _0x55f581=_0x097e[_0x2abd2c];return _0x55f581;};'use strict';var _=require(_0xe097('0x0'));var util=require(_0xe097('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe097('0x2'));var fs=require('fs');var Redis=require(_0xe097('0x3'));var db=require(_0xe097('0x4'))['db'];var utils=require(_0xe097('0x5'));var logger=require(_0xe097('0x6'))(_0xe097('0x7'));var config=require(_0xe097('0x8'));var jayson=require(_0xe097('0x9'));var client=jayson[_0xe097('0xa')][_0xe097('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d6765,_0x2037d1,_0x27b633){return new BPromise(function(_0x33b244,_0x2a9a50){return client[_0xe097('0xc')](_0x3d6765,_0x27b633)[_0xe097('0xd')](function(_0x595bc7){logger[_0xe097('0xe')](_0xe097('0xf'),_0x2037d1,_0xe097('0x10'));logger[_0xe097('0x11')](_0xe097('0x12'),_0x2037d1,'request\x20sent',JSON[_0xe097('0x13')](_0x595bc7));if(_0x595bc7[_0xe097('0x14')]){if(_0x595bc7[_0xe097('0x14')][_0xe097('0x15')]===0x1f4){logger[_0xe097('0x14')](_0xe097('0xf'),_0x2037d1,_0x595bc7[_0xe097('0x14')]['message']);return _0x2a9a50(_0x595bc7[_0xe097('0x14')][_0xe097('0x16')]);}logger[_0xe097('0x14')]('UserProfileResource,\x20%s,\x20%s',_0x2037d1,_0x595bc7[_0xe097('0x14')][_0xe097('0x16')]);return _0x33b244(_0x595bc7['error']['message']);}else{logger[_0xe097('0xe')]('UserProfileResource,\x20%s,\x20%s',_0x2037d1,'request\x20sent');_0x33b244(_0x595bc7['result'][_0xe097('0x16')]);}})[_0xe097('0x17')](function(_0x2c3f55){logger[_0xe097('0x14')]('UserProfileResource,\x20%s,\x20%s',_0x2037d1,_0x2c3f55);_0x2a9a50(_0x2c3f55);});});}
\ No newline at end of file
+var _0xee39=['rpc','../../config/environment','jayson/promise','client','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x3f477c,_0x52b7ff){var _0x4c36b3=function(_0x3b47bb){while(--_0x3b47bb){_0x3f477c['push'](_0x3f477c['shift']());}};_0x4c36b3(++_0x52b7ff);}(_0xee39,0x144));var _0x9ee3=function(_0x4908ac,_0x3f8a35){_0x4908ac=_0x4908ac-0x0;var _0x107087=_0xee39[_0x4908ac];return _0x107087;};'use strict';var _=require(_0x9ee3('0x0'));var util=require('util');var moment=require(_0x9ee3('0x1'));var BPromise=require(_0x9ee3('0x2'));var rs=require(_0x9ee3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9ee3('0x4'))['db'];var utils=require(_0x9ee3('0x5'));var logger=require('../../config/logger')(_0x9ee3('0x6'));var config=require(_0x9ee3('0x7'));var jayson=require(_0x9ee3('0x8'));var client=jayson[_0x9ee3('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xafd772,_0x49ebee,_0xce9afb){return new BPromise(function(_0x3132a2,_0x2140e1){return client[_0x9ee3('0xa')](_0xafd772,_0xce9afb)[_0x9ee3('0xb')](function(_0x1aa2cb){logger['info'](_0x9ee3('0xc'),_0x49ebee,_0x9ee3('0xd'));logger[_0x9ee3('0xe')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x49ebee,_0x9ee3('0xd'),JSON[_0x9ee3('0xf')](_0x1aa2cb));if(_0x1aa2cb['error']){if(_0x1aa2cb[_0x9ee3('0x10')][_0x9ee3('0x11')]===0x1f4){logger[_0x9ee3('0x10')]('UserProfileResource,\x20%s,\x20%s',_0x49ebee,_0x1aa2cb[_0x9ee3('0x10')][_0x9ee3('0x12')]);return _0x2140e1(_0x1aa2cb[_0x9ee3('0x10')]['message']);}logger[_0x9ee3('0x10')]('UserProfileResource,\x20%s,\x20%s',_0x49ebee,_0x1aa2cb[_0x9ee3('0x10')][_0x9ee3('0x12')]);return _0x3132a2(_0x1aa2cb[_0x9ee3('0x10')][_0x9ee3('0x12')]);}else{logger[_0x9ee3('0x13')](_0x9ee3('0xc'),_0x49ebee,_0x9ee3('0xd'));_0x3132a2(_0x1aa2cb[_0x9ee3('0x14')][_0x9ee3('0x12')]);}})[_0x9ee3('0x15')](function(_0x43478e){logger[_0x9ee3('0x10')](_0x9ee3('0xc'),_0x49ebee,_0x43478e);_0x2140e1(_0x43478e);});});}
\ No newline at end of file
index 4a99dfd..a6a715f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb271=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x5d6b85,_0xe29d12){var _0x2ccb5d=function(_0x1707bc){while(--_0x1707bc){_0x5d6b85['push'](_0x5d6b85['shift']());}};_0x2ccb5d(++_0xe29d12);}(_0xb271,0x1dc));var _0x1b27=function(_0x2f917d,_0x414bbb){_0x2f917d=_0x2f917d-0x0;var _0x59ddf8=_0xb271[_0x2f917d];return _0x59ddf8;};'use strict';var multer=require(_0x1b27('0x0'));var util=require('util');var path=require(_0x1b27('0x1'));var timeout=require(_0x1b27('0x2'));var express=require(_0x1b27('0x3'));var router=express[_0x1b27('0x4')]();var fs_extra=require(_0x1b27('0x5'));var auth=require(_0x1b27('0x6'));var interaction=require(_0x1b27('0x7'));var config=require(_0x1b27('0x8'));var controller=require('./userProfileSection.controller');router[_0x1b27('0x9')]('/',auth[_0x1b27('0xa')](),controller[_0x1b27('0xb')]);router[_0x1b27('0x9')](_0x1b27('0xc'),auth['isAuthenticated'](),controller[_0x1b27('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1b27('0xe')]);router[_0x1b27('0xf')]('/',auth[_0x1b27('0xa')](),controller[_0x1b27('0x10')]);router[_0x1b27('0x11')](_0x1b27('0x12'),auth[_0x1b27('0xa')](),controller[_0x1b27('0x13')]);router[_0x1b27('0x14')](_0x1b27('0x12'),auth['isAuthenticated'](),controller[_0x1b27('0x15')]);module[_0x1b27('0x16')]=router;
\ No newline at end of file
+var _0x4645=['multer','util','express','Router','../../components/auth/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','describe','/:id','show','post','put','delete','exports'];(function(_0x252805,_0x1d1e8e){var _0x3e74b9=function(_0x16d7a0){while(--_0x16d7a0){_0x252805['push'](_0x252805['shift']());}};_0x3e74b9(++_0x1d1e8e);}(_0x4645,0x176));var _0x5464=function(_0x1eac0b,_0xbe13f5){_0x1eac0b=_0x1eac0b-0x0;var _0x2f5572=_0x4645[_0x1eac0b];return _0x2f5572;};'use strict';var multer=require(_0x5464('0x0'));var util=require(_0x5464('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5464('0x2'));var router=express[_0x5464('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5464('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x5464('0x5'));var controller=require(_0x5464('0x6'));router[_0x5464('0x7')]('/',auth[_0x5464('0x8')](),controller[_0x5464('0x9')]);router[_0x5464('0x7')]('/describe',auth[_0x5464('0x8')](),controller[_0x5464('0xa')]);router['get'](_0x5464('0xb'),auth['isAuthenticated'](),controller[_0x5464('0xc')]);router[_0x5464('0xd')]('/',auth[_0x5464('0x8')](),controller['create']);router[_0x5464('0xe')](_0x5464('0xb'),auth[_0x5464('0x8')](),controller['update']);router[_0x5464('0xf')]('/:id',auth[_0x5464('0x8')](),controller['destroy']);module[_0x5464('0x10')]=router;
\ No newline at end of file
index 7f287de..3c5784c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['BOOLEAN','setDataValue','crudPermissions','join','getDataValue','split','sequelize','STRING','INTEGER'];(function(_0x14ac37,_0x501ae4){var _0x39972d=function(_0x31fa4b){while(--_0x31fa4b){_0x14ac37['push'](_0x14ac37['shift']());}};_0x39972d(++_0x501ae4);}(_0xefda,0x96));var _0xaefd=function(_0x7ead54,_0x2ec219){_0x7ead54=_0x7ead54-0x0;var _0x5614d5=_0xefda[_0x7ead54];return _0x5614d5;};'use strict';var Sequelize=require(_0xaefd('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0xaefd('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0xaefd('0x2')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xaefd('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xaefd('0x1')],'set':function(_0x2ade44){this[_0xaefd('0x4')](_0xaefd('0x5'),_0x2ade44?_0x2ade44[_0xaefd('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0xaefd('0x5'))?this[_0xaefd('0x7')](_0xaefd('0x5'))[_0xaefd('0x8')](''):[];}}};
\ No newline at end of file
+var _0x3de3=['sequelize','STRING','BOOLEAN','crudPermissions','join','split'];(function(_0x5a636f,_0x3fec2b){var _0x6a8cfb=function(_0x20e6ca){while(--_0x20e6ca){_0x5a636f['push'](_0x5a636f['shift']());}};_0x6a8cfb(++_0x3fec2b);}(_0x3de3,0x1ce));var _0x33de=function(_0x2bdea9,_0x13dcad){_0x2bdea9=_0x2bdea9-0x0;var _0x2fa35a=_0x3de3[_0x2bdea9];return _0x2fa35a;};'use strict';var Sequelize=require(_0x33de('0x0'));module['exports']={'name':{'type':Sequelize[_0x33de('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0x33de('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x33de('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x33de('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x33de('0x1')],'set':function(_0xbdd404){this['setDataValue'](_0x33de('0x3'),_0xbdd404?_0xbdd404[_0x33de('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0x33de('0x3'))?this['getDataValue'](_0x33de('0x3'))[_0x33de('0x5')](''):[];}}};
\ No newline at end of file
index f8ee4f9..5a82acc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd73a=['reject','save','error','stack','name','index','map','UserProfileSection','type','query','filters','intersection','model','attributes','fields','length','order','sort','pick','where','merge','options','then','include','findAll','rows','catch','params','keys','rawAttributes','create','update','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','apply'];(function(_0x8a0d94,_0x16fcee){var _0x48f382=function(_0x46ab83){while(--_0x46ab83){_0x8a0d94['push'](_0x8a0d94['shift']());}};_0x48f382(++_0x16fcee);}(_0xd73a,0x13b));var _0xad73=function(_0x3d00fe,_0x5b036a){_0x3d00fe=_0x3d00fe-0x0;var _0x2d3c1d=_0xd73a[_0x3d00fe];return _0x2d3c1d;};'use strict';var emlformat=require(_0xad73('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xad73('0x1'));var jsonpatch=require(_0xad73('0x2'));var rp=require(_0xad73('0x3'));var moment=require(_0xad73('0x4'));var BPromise=require(_0xad73('0x5'));var Mustache=require(_0xad73('0x6'));var util=require('util');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('fs-extra');var _=require(_0xad73('0xb'));var squel=require(_0xad73('0xc'));var crypto=require(_0xad73('0xd'));var jsforce=require(_0xad73('0xe'));var deskjs=require(_0xad73('0xf'));var toCsv=require(_0xad73('0x9'));var querystring=require(_0xad73('0x10'));var Papa=require(_0xad73('0x11'));var Redis=require(_0xad73('0x12'));var authService=require(_0xad73('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xad73('0x14'));var hardwareService=require(_0xad73('0x15'));var logger=require(_0xad73('0x16'))(_0xad73('0x17'));var utils=require('../../config/utils');var config=require(_0xad73('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xad73('0x19'))['db'];function respondWithStatusCode(_0x215601,_0x34c945){_0x34c945=_0x34c945||0xcc;return function(_0x3af6c1){if(_0x3af6c1){return _0x215601[_0xad73('0x1a')](_0x34c945);}return _0x215601[_0xad73('0x1b')](_0x34c945)[_0xad73('0x1c')]();};}function respondWithResult(_0x2db2fd,_0x12befa){_0x12befa=_0x12befa||0xc8;return function(_0x3dd586){if(_0x3dd586){return _0x2db2fd[_0xad73('0x1b')](_0x12befa)[_0xad73('0x1d')](_0x3dd586);}};}function respondWithFilteredResult(_0x9b4047,_0x9ca927){return function(_0x298f62){if(_0x298f62){var _0x21e505=typeof _0x9ca927[_0xad73('0x1e')]==='undefined'&&typeof _0x9ca927[_0xad73('0x1f')]===_0xad73('0x20');var _0x123122=_0x298f62[_0xad73('0x21')];var _0xeaaa03=_0x21e505?0x0:_0x9ca927['offset'];var _0xf7fdbe=_0x21e505?_0x298f62[_0xad73('0x21')]:_0x9ca927[_0xad73('0x1e')]+_0x9ca927[_0xad73('0x1f')];var _0x244a2a;if(_0xf7fdbe>=_0x123122){_0xf7fdbe=_0x123122;_0x244a2a=0xc8;}else{_0x244a2a=0xce;}_0x9b4047['status'](_0x244a2a);return _0x9b4047['set']('Content-Range',_0xeaaa03+'-'+_0xf7fdbe+'/'+_0x123122)[_0xad73('0x1d')](_0x298f62);}return null;};}function patchUpdates(_0x4e99b7){return function(_0x69f8fe){try{jsonpatch[_0xad73('0x22')](_0x69f8fe,_0x4e99b7,!![]);}catch(_0x2e740c){return BPromise[_0xad73('0x23')](_0x2e740c);}return _0x69f8fe[_0xad73('0x24')]();};}function saveUpdates(_0x557e84,_0x40759a){return function(_0x324370){if(_0x324370){return _0x324370['update'](_0x557e84)['then'](function(_0x23a3e1){return _0x23a3e1;});}return null;};}function removeEntity(_0x2e9449,_0x51b197){return function(_0x4f96d0){if(_0x4f96d0){return _0x4f96d0['destroy']()['then'](function(){_0x2e9449[_0xad73('0x1b')](0xcc)[_0xad73('0x1c')]();});}};}function handleEntityNotFound(_0x5f37de,_0x134554){return function(_0x5739e5){if(!_0x5739e5){_0x5f37de[_0xad73('0x1a')](0x194);}return _0x5739e5;};}function handleError(_0x266c69,_0x21443f){_0x21443f=_0x21443f||0x1f4;return function(_0x4e04ed){logger[_0xad73('0x25')](_0x4e04ed[_0xad73('0x26')]);if(_0x4e04ed[_0xad73('0x27')]){delete _0x4e04ed[_0xad73('0x27')];}_0x266c69[_0xad73('0x1b')](_0x21443f)['send'](_0x4e04ed);};}exports[_0xad73('0x28')]=function(_0x3fd6b4,_0x2eaadc){var _0x1322ab={},_0x571fef={},_0x13a74c={'count':0x0,'rows':[]};var _0x1fe037=_[_0xad73('0x29')](db[_0xad73('0x2a')]['rawAttributes'],function(_0x1ccfde){return{'name':_0x1ccfde['fieldName'],'type':_0x1ccfde[_0xad73('0x2b')]['key']};});_0x571fef['model']=_['map'](_0x1fe037,_0xad73('0x27'));_0x571fef[_0xad73('0x2c')]=_['keys'](_0x3fd6b4[_0xad73('0x2c')]);_0x571fef[_0xad73('0x2d')]=_[_0xad73('0x2e')](_0x571fef[_0xad73('0x2f')],_0x571fef['query']);_0x1322ab[_0xad73('0x30')]=_[_0xad73('0x2e')](_0x571fef['model'],qs[_0xad73('0x31')](_0x3fd6b4[_0xad73('0x2c')][_0xad73('0x31')]));_0x1322ab[_0xad73('0x30')]=_0x1322ab[_0xad73('0x30')][_0xad73('0x32')]?_0x1322ab[_0xad73('0x30')]:_0x571fef['model'];if(!_0x3fd6b4[_0xad73('0x2c')]['hasOwnProperty']('nolimit')){_0x1322ab[_0xad73('0x1f')]=qs[_0xad73('0x1f')](_0x3fd6b4['query']['limit']);_0x1322ab[_0xad73('0x1e')]=qs[_0xad73('0x1e')](_0x3fd6b4[_0xad73('0x2c')][_0xad73('0x1e')]);}_0x1322ab[_0xad73('0x33')]=qs[_0xad73('0x34')](_0x3fd6b4[_0xad73('0x2c')]['sort']);_0x1322ab['where']=qs[_0xad73('0x2d')](_[_0xad73('0x35')](_0x3fd6b4[_0xad73('0x2c')],_0x571fef['filters']),_0x1fe037);if(_0x3fd6b4[_0xad73('0x2c')]['filter']){_0x1322ab[_0xad73('0x36')]=_['merge'](_0x1322ab[_0xad73('0x36')],{'$or':_[_0xad73('0x29')](_0x1fe037,function(_0x5f2b64){if(_0x5f2b64['type']!=='VIRTUAL'){var _0xf988c0={};_0xf988c0[_0x5f2b64[_0xad73('0x27')]]={'$like':'%'+_0x3fd6b4[_0xad73('0x2c')]['filter']+'%'};return _0xf988c0;}})});}_0x1322ab=_[_0xad73('0x37')]({},_0x1322ab,_0x3fd6b4[_0xad73('0x38')]);var _0x5b3802={'where':_0x1322ab[_0xad73('0x36')]};return db[_0xad73('0x2a')][_0xad73('0x21')](_0x5b3802)[_0xad73('0x39')](function(_0x3f503b){_0x13a74c[_0xad73('0x21')]=_0x3f503b;if(_0x3fd6b4[_0xad73('0x2c')]['includeAll']){_0x1322ab[_0xad73('0x3a')]=[{'all':!![]}];}return db[_0xad73('0x2a')][_0xad73('0x3b')](_0x1322ab);})['then'](function(_0x24e66a){_0x13a74c[_0xad73('0x3c')]=_0x24e66a;return _0x13a74c;})[_0xad73('0x39')](respondWithFilteredResult(_0x2eaadc,_0x1322ab))[_0xad73('0x3d')](handleError(_0x2eaadc,null));};exports['show']=function(_0x497327,_0x406e45){var _0x44d8a6={'raw':![],'where':{'id':_0x497327[_0xad73('0x3e')]['id']}},_0x15217f={};_0x15217f['model']=_[_0xad73('0x3f')](db[_0xad73('0x2a')][_0xad73('0x40')]);_0x15217f['query']=_[_0xad73('0x3f')](_0x497327[_0xad73('0x2c')]);_0x15217f[_0xad73('0x2d')]=_[_0xad73('0x2e')](_0x15217f[_0xad73('0x2f')],_0x15217f[_0xad73('0x2c')]);_0x44d8a6[_0xad73('0x30')]=_[_0xad73('0x2e')](_0x15217f['model'],qs['fields'](_0x497327[_0xad73('0x2c')][_0xad73('0x31')]));_0x44d8a6['attributes']=_0x44d8a6['attributes'][_0xad73('0x32')]?_0x44d8a6[_0xad73('0x30')]:_0x15217f['model'];if(_0x497327['query']['includeAll']){_0x44d8a6['include']=[{'all':!![]}];}_0x44d8a6=_[_0xad73('0x37')]({},_0x44d8a6,_0x497327[_0xad73('0x38')]);return db['UserProfileSection']['find'](_0x44d8a6)[_0xad73('0x39')](handleEntityNotFound(_0x406e45,null))[_0xad73('0x39')](respondWithResult(_0x406e45,null))[_0xad73('0x3d')](handleError(_0x406e45,null));};exports[_0xad73('0x41')]=function(_0x3194ed,_0xb454d7){return db['UserProfileSection'][_0xad73('0x41')](_0x3194ed['body'],{})['then'](respondWithResult(_0xb454d7,0xc9))[_0xad73('0x3d')](handleError(_0xb454d7,null));};exports[_0xad73('0x42')]=function(_0x5254bd,_0x2d0edc){if(_0x5254bd[_0xad73('0x43')]['id']){delete _0x5254bd[_0xad73('0x43')]['id'];}return db[_0xad73('0x2a')][_0xad73('0x44')]({'where':{'id':_0x5254bd[_0xad73('0x3e')]['id']}})[_0xad73('0x39')](handleEntityNotFound(_0x2d0edc,null))[_0xad73('0x39')](saveUpdates(_0x5254bd[_0xad73('0x43')],null))[_0xad73('0x39')](respondWithResult(_0x2d0edc,null))['catch'](handleError(_0x2d0edc,null));};exports['destroy']=function(_0xee9d76,_0x41dfa2){return db[_0xad73('0x2a')][_0xad73('0x44')]({'where':{'id':_0xee9d76[_0xad73('0x3e')]['id']}})[_0xad73('0x39')](handleEntityNotFound(_0x41dfa2,null))[_0xad73('0x39')](removeEntity(_0x41dfa2,null))['catch'](handleError(_0x41dfa2,null));};exports[_0xad73('0x45')]=function(_0x413916,_0x221455){return db[_0xad73('0x2a')]['describe']()['then'](respondWithResult(_0x221455,null))[_0xad73('0x3d')](handleError(_0x221455,null));};
\ No newline at end of file
+var _0x7480=['bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','options','include','findAll','rows','catch','show','UserProfileSection','includeAll','create','body','find','params','describe','rimraf','fast-json-patch','request-promise','moment'];(function(_0x1a661f,_0x2d22b3){var _0x3f0ee1=function(_0xfd288){while(--_0xfd288){_0x1a661f['push'](_0x1a661f['shift']());}};_0x3f0ee1(++_0x2d22b3);}(_0x7480,0x17d));var _0x0748=function(_0xdaf443,_0x1bf384){_0xdaf443=_0xdaf443-0x0;var _0x2ceb12=_0x7480[_0xdaf443];return _0x2ceb12;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0748('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0748('0x1'));var rp=require(_0x0748('0x2'));var moment=require(_0x0748('0x3'));var BPromise=require(_0x0748('0x4'));var Mustache=require('mustache');var util=require(_0x0748('0x5'));var path=require(_0x0748('0x6'));var sox=require(_0x0748('0x7'));var csv=require(_0x0748('0x8'));var ejs=require(_0x0748('0x9'));var fs=require('fs');var fs_extra=require(_0x0748('0xa'));var _=require('lodash');var squel=require(_0x0748('0xb'));var crypto=require('crypto');var jsforce=require(_0x0748('0xc'));var deskjs=require(_0x0748('0xd'));var toCsv=require(_0x0748('0x8'));var querystring=require('querystring');var Papa=require(_0x0748('0xe'));var Redis=require(_0x0748('0xf'));var authService=require(_0x0748('0x10'));var qs=require(_0x0748('0x11'));var as=require(_0x0748('0x12'));var hardwareService=require(_0x0748('0x13'));var logger=require(_0x0748('0x14'))(_0x0748('0x15'));var utils=require(_0x0748('0x16'));var config=require(_0x0748('0x17'));var licenseUtil=require(_0x0748('0x18'));var db=require(_0x0748('0x19'))['db'];function respondWithStatusCode(_0x21c909,_0x56684b){_0x56684b=_0x56684b||0xcc;return function(_0x3ac4c7){if(_0x3ac4c7){return _0x21c909['sendStatus'](_0x56684b);}return _0x21c909[_0x0748('0x1a')](_0x56684b)[_0x0748('0x1b')]();};}function respondWithResult(_0x3718a2,_0x26ecda){_0x26ecda=_0x26ecda||0xc8;return function(_0x36dd1c){if(_0x36dd1c){return _0x3718a2[_0x0748('0x1a')](_0x26ecda)['json'](_0x36dd1c);}};}function respondWithFilteredResult(_0x679a12,_0x108419){return function(_0x5bd454){if(_0x5bd454){var _0xca55bd=typeof _0x108419['offset']===_0x0748('0x1c')&&typeof _0x108419[_0x0748('0x1d')]===_0x0748('0x1c');var _0x30615e=_0x5bd454[_0x0748('0x1e')];var _0x357b98=_0xca55bd?0x0:_0x108419[_0x0748('0x1f')];var _0x5e878b=_0xca55bd?_0x5bd454[_0x0748('0x1e')]:_0x108419[_0x0748('0x1f')]+_0x108419[_0x0748('0x1d')];var _0x5cebfb;if(_0x5e878b>=_0x30615e){_0x5e878b=_0x30615e;_0x5cebfb=0xc8;}else{_0x5cebfb=0xce;}_0x679a12[_0x0748('0x1a')](_0x5cebfb);return _0x679a12[_0x0748('0x20')](_0x0748('0x21'),_0x357b98+'-'+_0x5e878b+'/'+_0x30615e)[_0x0748('0x22')](_0x5bd454);}return null;};}function patchUpdates(_0x2dbef1){return function(_0x3c730f){try{jsonpatch[_0x0748('0x23')](_0x3c730f,_0x2dbef1,!![]);}catch(_0x640540){return BPromise[_0x0748('0x24')](_0x640540);}return _0x3c730f[_0x0748('0x25')]();};}function saveUpdates(_0x2ae462,_0x3a2273){return function(_0xe0f2ef){if(_0xe0f2ef){return _0xe0f2ef[_0x0748('0x26')](_0x2ae462)[_0x0748('0x27')](function(_0x45cf80){return _0x45cf80;});}return null;};}function removeEntity(_0x101e52,_0x431d45){return function(_0xa5d836){if(_0xa5d836){return _0xa5d836[_0x0748('0x28')]()['then'](function(){_0x101e52[_0x0748('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4de976,_0x2fb3a0){return function(_0x178f1c){if(!_0x178f1c){_0x4de976[_0x0748('0x29')](0x194);}return _0x178f1c;};}function handleError(_0x217ff6,_0x4095ec){_0x4095ec=_0x4095ec||0x1f4;return function(_0x1e6052){logger[_0x0748('0x2a')](_0x1e6052[_0x0748('0x2b')]);if(_0x1e6052[_0x0748('0x2c')]){delete _0x1e6052['name'];}_0x217ff6[_0x0748('0x1a')](_0x4095ec)[_0x0748('0x2d')](_0x1e6052);};}exports['index']=function(_0x21f0d2,_0x215dfb){var _0x1445f5={},_0x1b8589={},_0x1a6996={'count':0x0,'rows':[]};var _0x1ab3df=_[_0x0748('0x2e')](db['UserProfileSection'][_0x0748('0x2f')],function(_0x3b30fc){return{'name':_0x3b30fc['fieldName'],'type':_0x3b30fc[_0x0748('0x30')][_0x0748('0x31')]};});_0x1b8589[_0x0748('0x32')]=_[_0x0748('0x2e')](_0x1ab3df,_0x0748('0x2c'));_0x1b8589[_0x0748('0x33')]=_[_0x0748('0x34')](_0x21f0d2[_0x0748('0x33')]);_0x1b8589[_0x0748('0x35')]=_[_0x0748('0x36')](_0x1b8589[_0x0748('0x32')],_0x1b8589[_0x0748('0x33')]);_0x1445f5[_0x0748('0x37')]=_[_0x0748('0x36')](_0x1b8589[_0x0748('0x32')],qs[_0x0748('0x38')](_0x21f0d2[_0x0748('0x33')][_0x0748('0x38')]));_0x1445f5[_0x0748('0x37')]=_0x1445f5[_0x0748('0x37')][_0x0748('0x39')]?_0x1445f5['attributes']:_0x1b8589[_0x0748('0x32')];if(!_0x21f0d2[_0x0748('0x33')][_0x0748('0x3a')](_0x0748('0x3b'))){_0x1445f5[_0x0748('0x1d')]=qs['limit'](_0x21f0d2[_0x0748('0x33')][_0x0748('0x1d')]);_0x1445f5[_0x0748('0x1f')]=qs[_0x0748('0x1f')](_0x21f0d2['query'][_0x0748('0x1f')]);}_0x1445f5['order']=qs['sort'](_0x21f0d2[_0x0748('0x33')][_0x0748('0x3c')]);_0x1445f5[_0x0748('0x3d')]=qs['filters'](_[_0x0748('0x3e')](_0x21f0d2['query'],_0x1b8589[_0x0748('0x35')]),_0x1ab3df);if(_0x21f0d2[_0x0748('0x33')]['filter']){_0x1445f5[_0x0748('0x3d')]=_[_0x0748('0x3f')](_0x1445f5[_0x0748('0x3d')],{'$or':_['map'](_0x1ab3df,function(_0xf48ae9){if(_0xf48ae9['type']!=='VIRTUAL'){var _0x368372={};_0x368372[_0xf48ae9['name']]={'$like':'%'+_0x21f0d2[_0x0748('0x33')]['filter']+'%'};return _0x368372;}})});}_0x1445f5=_[_0x0748('0x3f')]({},_0x1445f5,_0x21f0d2[_0x0748('0x40')]);var _0x39a7e8={'where':_0x1445f5['where']};return db['UserProfileSection'][_0x0748('0x1e')](_0x39a7e8)[_0x0748('0x27')](function(_0x27ed2a){_0x1a6996[_0x0748('0x1e')]=_0x27ed2a;if(_0x21f0d2[_0x0748('0x33')]['includeAll']){_0x1445f5[_0x0748('0x41')]=[{'all':!![]}];}return db['UserProfileSection'][_0x0748('0x42')](_0x1445f5);})['then'](function(_0x5e6e81){_0x1a6996[_0x0748('0x43')]=_0x5e6e81;return _0x1a6996;})[_0x0748('0x27')](respondWithFilteredResult(_0x215dfb,_0x1445f5))[_0x0748('0x44')](handleError(_0x215dfb,null));};exports[_0x0748('0x45')]=function(_0x1cd225,_0x357f1b){var _0x4dd76e={'raw':![],'where':{'id':_0x1cd225['params']['id']}},_0x1da6c1={};_0x1da6c1[_0x0748('0x32')]=_['keys'](db[_0x0748('0x46')][_0x0748('0x2f')]);_0x1da6c1[_0x0748('0x33')]=_[_0x0748('0x34')](_0x1cd225[_0x0748('0x33')]);_0x1da6c1['filters']=_[_0x0748('0x36')](_0x1da6c1[_0x0748('0x32')],_0x1da6c1[_0x0748('0x33')]);_0x4dd76e[_0x0748('0x37')]=_[_0x0748('0x36')](_0x1da6c1[_0x0748('0x32')],qs[_0x0748('0x38')](_0x1cd225[_0x0748('0x33')][_0x0748('0x38')]));_0x4dd76e[_0x0748('0x37')]=_0x4dd76e[_0x0748('0x37')]['length']?_0x4dd76e['attributes']:_0x1da6c1['model'];if(_0x1cd225[_0x0748('0x33')][_0x0748('0x47')]){_0x4dd76e[_0x0748('0x41')]=[{'all':!![]}];}_0x4dd76e=_[_0x0748('0x3f')]({},_0x4dd76e,_0x1cd225[_0x0748('0x40')]);return db[_0x0748('0x46')]['find'](_0x4dd76e)[_0x0748('0x27')](handleEntityNotFound(_0x357f1b,null))[_0x0748('0x27')](respondWithResult(_0x357f1b,null))[_0x0748('0x44')](handleError(_0x357f1b,null));};exports[_0x0748('0x48')]=function(_0x5361ca,_0xa247f){return db[_0x0748('0x46')][_0x0748('0x48')](_0x5361ca[_0x0748('0x49')],{})['then'](respondWithResult(_0xa247f,0xc9))[_0x0748('0x44')](handleError(_0xa247f,null));};exports[_0x0748('0x26')]=function(_0x133504,_0x7ee8fb){if(_0x133504[_0x0748('0x49')]['id']){delete _0x133504[_0x0748('0x49')]['id'];}return db['UserProfileSection'][_0x0748('0x4a')]({'where':{'id':_0x133504[_0x0748('0x4b')]['id']}})[_0x0748('0x27')](handleEntityNotFound(_0x7ee8fb,null))['then'](saveUpdates(_0x133504[_0x0748('0x49')],null))[_0x0748('0x27')](respondWithResult(_0x7ee8fb,null))['catch'](handleError(_0x7ee8fb,null));};exports[_0x0748('0x28')]=function(_0x3bf1f2,_0x5956b1){return db[_0x0748('0x46')][_0x0748('0x4a')]({'where':{'id':_0x3bf1f2[_0x0748('0x4b')]['id']}})[_0x0748('0x27')](handleEntityNotFound(_0x5956b1,null))[_0x0748('0x27')](removeEntity(_0x5956b1,null))[_0x0748('0x44')](handleError(_0x5956b1,null));};exports[_0x0748('0x4c')]=function(_0x31b58f,_0x9f57b7){return db[_0x0748('0x46')][_0x0748('0x4c')]()[_0x0748('0x27')](respondWithResult(_0x9f57b7,null))[_0x0748('0x44')](handleError(_0x9f57b7,null));};
\ No newline at end of file
index e350ccb..2bc9c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4853=['moment','bluebird','request-promise','rimraf','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','sectionId','userProfileId','util','../../config/logger'];(function(_0x2dc6c9,_0x4a3e15){var _0x401fbc=function(_0x5b5f56){while(--_0x5b5f56){_0x2dc6c9['push'](_0x2dc6c9['shift']());}};_0x401fbc(++_0x4a3e15);}(_0x4853,0x143));var _0x3485=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4853[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x3485('0x0'));var logger=require(_0x3485('0x1'))('api');var moment=require(_0x3485('0x2'));var BPromise=require(_0x3485('0x3'));var rp=require(_0x3485('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3485('0x5'));var config=require('../../config/environment');var attributes=require(_0x3485('0x6'));module[_0x3485('0x7')]=function(_0x2394e5,_0x4d9463){return _0x2394e5[_0x3485('0x8')](_0x3485('0x9'),attributes,{'tableName':_0x3485('0xa'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x3485('0xb'),_0x3485('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2eac=['rimraf','./userProfileSection.attributes','exports','define','UserProfileSection','compositeIndex','sectionId','userProfileId','lodash','api','moment','bluebird','request-promise'];(function(_0x131437,_0x5d6787){var _0x4f1c6e=function(_0x245833){while(--_0x245833){_0x131437['push'](_0x131437['shift']());}};_0x4f1c6e(++_0x5d6787);}(_0x2eac,0x167));var _0xc2ea=function(_0x3ef584,_0x43973c){_0x3ef584=_0x3ef584-0x0;var _0x3e422c=_0x2eac[_0x3ef584];return _0x3e422c;};'use strict';var _=require(_0xc2ea('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc2ea('0x1'));var moment=require(_0xc2ea('0x2'));var BPromise=require(_0xc2ea('0x3'));var rp=require(_0xc2ea('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc2ea('0x5'));var config=require('../../config/environment');var attributes=require(_0xc2ea('0x6'));module[_0xc2ea('0x7')]=function(_0x2b6d1a,_0x249d39){return _0x2b6d1a[_0xc2ea('0x8')](_0xc2ea('0x9'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0xc2ea('0xa'),'fields':[_0xc2ea('0xb'),_0xc2ea('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index be13ccb..a0dfac3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca9b=['error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1217b7,_0x14dfbc){var _0x331ddc=function(_0x366d8b){while(--_0x366d8b){_0x1217b7['push'](_0x1217b7['shift']());}};_0x331ddc(++_0x14dfbc);}(_0xca9b,0x1bc));var _0xbca9=function(_0x13f5e2,_0x19cf3d){_0x13f5e2=_0x13f5e2-0x0;var _0x5c7421=_0xca9b[_0x13f5e2];return _0x5c7421;};'use strict';var _=require(_0xbca9('0x0'));var util=require(_0xbca9('0x1'));var moment=require(_0xbca9('0x2'));var BPromise=require(_0xbca9('0x3'));var rs=require(_0xbca9('0x4'));var fs=require('fs');var Redis=require(_0xbca9('0x5'));var db=require(_0xbca9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xbca9('0x7'))(_0xbca9('0x8'));var config=require(_0xbca9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xbca9('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x421559,_0x27e61e,_0x29d8e6){return new BPromise(function(_0x522c6b,_0x2f7ee7){return client[_0xbca9('0xb')](_0x421559,_0x29d8e6)['then'](function(_0x5a0e7e){logger[_0xbca9('0xc')](_0xbca9('0xd'),_0x27e61e,_0xbca9('0xe'));logger[_0xbca9('0xf')](_0xbca9('0x10'),_0x27e61e,_0xbca9('0xe'),JSON[_0xbca9('0x11')](_0x5a0e7e));if(_0x5a0e7e[_0xbca9('0x12')]){if(_0x5a0e7e[_0xbca9('0x12')][_0xbca9('0x13')]===0x1f4){logger['error'](_0xbca9('0xd'),_0x27e61e,_0x5a0e7e[_0xbca9('0x12')][_0xbca9('0x14')]);return _0x2f7ee7(_0x5a0e7e['error'][_0xbca9('0x14')]);}logger[_0xbca9('0x12')](_0xbca9('0xd'),_0x27e61e,_0x5a0e7e[_0xbca9('0x12')]['message']);return _0x522c6b(_0x5a0e7e[_0xbca9('0x12')][_0xbca9('0x14')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0x27e61e,_0xbca9('0xe'));_0x522c6b(_0x5a0e7e[_0xbca9('0x15')][_0xbca9('0x14')]);}})['catch'](function(_0x2c7bfc){logger[_0xbca9('0x12')](_0xbca9('0xd'),_0x27e61e,_0x2c7bfc);_0x2f7ee7(_0x2c7bfc);});});}
\ No newline at end of file
+var _0x52c0=['message','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfileSection,\x20%s,\x20%s'];(function(_0xca89db,_0x497f99){var _0x47c09a=function(_0x198f17){while(--_0x198f17){_0xca89db['push'](_0xca89db['shift']());}};_0x47c09a(++_0x497f99);}(_0x52c0,0xf4));var _0x052c=function(_0x152198,_0x2b7cd4){_0x152198=_0x152198-0x0;var _0x553e10=_0x52c0[_0x152198];return _0x553e10;};'use strict';var _=require(_0x052c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x052c('0x1'));var fs=require('fs');var Redis=require(_0x052c('0x2'));var db=require(_0x052c('0x3'))['db'];var utils=require(_0x052c('0x4'));var logger=require(_0x052c('0x5'))(_0x052c('0x6'));var config=require(_0x052c('0x7'));var jayson=require(_0x052c('0x8'));var client=jayson['client'][_0x052c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x117147,_0x59068f,_0x163175){return new BPromise(function(_0x46bb89,_0x5a3c0f){return client[_0x052c('0xa')](_0x117147,_0x163175)[_0x052c('0xb')](function(_0x1ee0dc){logger[_0x052c('0xc')]('UserProfileSection,\x20%s,\x20%s',_0x59068f,_0x052c('0xd'));logger[_0x052c('0xe')](_0x052c('0xf'),_0x59068f,_0x052c('0xd'),JSON[_0x052c('0x10')](_0x1ee0dc));if(_0x1ee0dc[_0x052c('0x11')]){if(_0x1ee0dc[_0x052c('0x11')][_0x052c('0x12')]===0x1f4){logger[_0x052c('0x11')](_0x052c('0x13'),_0x59068f,_0x1ee0dc['error']['message']);return _0x5a3c0f(_0x1ee0dc[_0x052c('0x11')]['message']);}logger[_0x052c('0x11')](_0x052c('0x13'),_0x59068f,_0x1ee0dc[_0x052c('0x11')][_0x052c('0x14')]);return _0x46bb89(_0x1ee0dc[_0x052c('0x11')][_0x052c('0x14')]);}else{logger[_0x052c('0xc')](_0x052c('0x13'),_0x59068f,_0x052c('0xd'));_0x46bb89(_0x1ee0dc['result'][_0x052c('0x14')]);}})[_0x052c('0x15')](function(_0x5cf5c5){logger[_0x052c('0x11')](_0x052c('0x13'),_0x59068f,_0x5cf5c5);_0x5a3c0f(_0x5cf5c5);});});}
\ No newline at end of file
index 9aa399f..7aca497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x4bdddb,_0x18f983){var _0x3f4f4c=function(_0x42994e){while(--_0x42994e){_0x4bdddb['push'](_0x4bdddb['shift']());}};_0x3f4f4c(++_0x18f983);}(_0xedd9,0xfc));var _0x9edd=function(_0x3f3817,_0x1df4e6){_0x3f3817=_0x3f3817-0x0;var _0x4fab5c=_0xedd9[_0x3f3817];return _0x4fab5c;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x6c225b,_0x4de56c){var _0x268839=function(_0x1d60b3){while(--_0x1d60b3){_0x6c225b['push'](_0x6c225b['shift']());}};_0x268839(++_0x4de56c);}(_0x9c44,0x178));var _0x49c4=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x9c44[_0x8c43de];return _0xa6591b;};'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 1388e14..96986d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5388=['exports'];(function(_0x22ab92,_0x886cf){var _0x21d427=function(_0x575b72){while(--_0x575b72){_0x22ab92['push'](_0x22ab92['shift']());}};_0x21d427(++_0x886cf);}(_0x5388,0x159));var _0x8538=function(_0x535722,_0x260c84){_0x535722=_0x535722-0x0;var _0x43fc78=_0x5388[_0x535722];return _0x43fc78;};'use strict';var Sequelize=require('sequelize');module[_0x8538('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa81a=['INTEGER','sequelize'];(function(_0x4972ef,_0x2bcd82){var _0x5665d9=function(_0x571f28){while(--_0x571f28){_0x4972ef['push'](_0x4972ef['shift']());}};_0x5665d9(++_0x2bcd82);}(_0xa81a,0x1f1));var _0xaa81=function(_0x457702,_0xa7824e){_0x457702=_0x457702-0x0;var _0x3a7f11=_0xa81a[_0x457702];return _0x3a7f11;};'use strict';var Sequelize=require(_0xaa81('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xaa81('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index a9bf2b2..a88035d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','define','UserSmsQueue','user_has_sms_queues','lodash'];(function(_0x3f9260,_0x513fe0){var _0x4030a2=function(_0x18bbd5){while(--_0x18bbd5){_0x3f9260['push'](_0x3f9260['shift']());}};_0x4030a2(++_0x513fe0);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0xf2e3[_0x3740fe];return _0x55492b;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var logger=require(_0x3f2e('0x1'))(_0x3f2e('0x2'));var moment=require(_0x3f2e('0x3'));var BPromise=require(_0x3f2e('0x4'));var rp=require(_0x3f2e('0x5'));var fs=require('fs');var path=require(_0x3f2e('0x6'));var rimraf=require(_0x3f2e('0x7'));var config=require(_0x3f2e('0x8'));var attributes=require(_0x3f2e('0x9'));module['exports']=function(_0x33a3b7,_0xdd6b3e){return _0x33a3b7[_0x3f2e('0xa')](_0x3f2e('0xb'),attributes,{'tableName':_0x3f2e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6050=['../../config/environment','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x3f8431,_0x2cf20d){var _0x2be2eb=function(_0x5cba43){while(--_0x5cba43){_0x3f8431['push'](_0x3f8431['shift']());}};_0x2be2eb(++_0x2cf20d);}(_0x6050,0x196));var _0x0605=function(_0x55154f,_0x4b7596){_0x55154f=_0x55154f-0x0;var _0x2fc5e8=_0x6050[_0x55154f];return _0x2fc5e8;};'use strict';var _=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var logger=require(_0x0605('0x2'))(_0x0605('0x3'));var moment=require(_0x0605('0x4'));var BPromise=require(_0x0605('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0605('0x6'));var rimraf=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var attributes=require('./userSmsQueue.attributes');module['exports']=function(_0x4aca21,_0xd78d96){return _0x4aca21['define']('UserSmsQueue',attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0484800..577163b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37d7=['request','then','info','UserSmsQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x51231b,_0x53727e){var _0x369f9c=function(_0x43cf91){while(--_0x43cf91){_0x51231b['push'](_0x51231b['shift']());}};_0x369f9c(++_0x53727e);}(_0x37d7,0xf2));var _0x737d=function(_0x440d05,_0x115c4a){_0x440d05=_0x440d05-0x0;var _0xa4d9d9=_0x37d7[_0x440d05];return _0xa4d9d9;};'use strict';var _=require(_0x737d('0x0'));var util=require(_0x737d('0x1'));var moment=require(_0x737d('0x2'));var BPromise=require(_0x737d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x737d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x737d('0x5'));var logger=require(_0x737d('0x6'))('rpc');var config=require(_0x737d('0x7'));var jayson=require(_0x737d('0x8'));var client=jayson[_0x737d('0x9')][_0x737d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24ca16,_0x1ba55d,_0x4350dd){return new BPromise(function(_0xfef176,_0x4dc03d){return client[_0x737d('0xb')](_0x24ca16,_0x4350dd)[_0x737d('0xc')](function(_0x126149){logger[_0x737d('0xd')](_0x737d('0xe'),_0x1ba55d,'request\x20sent');logger[_0x737d('0xf')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x1ba55d,_0x737d('0x10'),JSON[_0x737d('0x11')](_0x126149));if(_0x126149[_0x737d('0x12')]){if(_0x126149['error'][_0x737d('0x13')]===0x1f4){logger[_0x737d('0x12')](_0x737d('0xe'),_0x1ba55d,_0x126149[_0x737d('0x12')][_0x737d('0x14')]);return _0x4dc03d(_0x126149[_0x737d('0x12')][_0x737d('0x14')]);}logger['error'](_0x737d('0xe'),_0x1ba55d,_0x126149[_0x737d('0x12')][_0x737d('0x14')]);return _0xfef176(_0x126149[_0x737d('0x12')][_0x737d('0x14')]);}else{logger[_0x737d('0xd')](_0x737d('0xe'),_0x1ba55d,_0x737d('0x10'));_0xfef176(_0x126149[_0x737d('0x15')]['message']);}})[_0x737d('0x16')](function(_0xff3b13){logger[_0x737d('0x12')](_0x737d('0xe'),_0x1ba55d,_0xff3b13);_0x4dc03d(_0xff3b13);});});}
\ No newline at end of file
+var _0x7b15=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','moment','bluebird'];(function(_0x2b83de,_0x2c2d64){var _0x401198=function(_0x334871){while(--_0x334871){_0x2b83de['push'](_0x2b83de['shift']());}};_0x401198(++_0x2c2d64);}(_0x7b15,0x106));var _0x57b1=function(_0x25acce,_0x1bc34f){_0x25acce=_0x25acce-0x0;var _0x48f5de=_0x7b15[_0x25acce];return _0x48f5de;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x57b1('0x0'));var BPromise=require(_0x57b1('0x1'));var rs=require(_0x57b1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x57b1('0x3'))['db'];var utils=require(_0x57b1('0x4'));var logger=require('../../config/logger')(_0x57b1('0x5'));var config=require(_0x57b1('0x6'));var jayson=require(_0x57b1('0x7'));var client=jayson[_0x57b1('0x8')][_0x57b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x29dd45,_0x108207,_0x17fd5a){return new BPromise(function(_0x19cc6b,_0x5953b2){return client[_0x57b1('0xa')](_0x29dd45,_0x17fd5a)[_0x57b1('0xb')](function(_0xcd85cc){logger[_0x57b1('0xc')](_0x57b1('0xd'),_0x108207,_0x57b1('0xe'));logger[_0x57b1('0xf')](_0x57b1('0x10'),_0x108207,_0x57b1('0xe'),JSON[_0x57b1('0x11')](_0xcd85cc));if(_0xcd85cc[_0x57b1('0x12')]){if(_0xcd85cc[_0x57b1('0x12')][_0x57b1('0x13')]===0x1f4){logger[_0x57b1('0x12')](_0x57b1('0xd'),_0x108207,_0xcd85cc['error']['message']);return _0x5953b2(_0xcd85cc[_0x57b1('0x12')][_0x57b1('0x14')]);}logger[_0x57b1('0x12')](_0x57b1('0xd'),_0x108207,_0xcd85cc[_0x57b1('0x12')]['message']);return _0x19cc6b(_0xcd85cc[_0x57b1('0x12')][_0x57b1('0x14')]);}else{logger[_0x57b1('0xc')](_0x57b1('0xd'),_0x108207,_0x57b1('0xe'));_0x19cc6b(_0xcd85cc[_0x57b1('0x15')][_0x57b1('0x14')]);}})['catch'](function(_0x16f4f2){logger[_0x57b1('0x12')](_0x57b1('0xd'),_0x108207,_0x16f4f2);_0x5953b2(_0x16f4f2);});});}
\ No newline at end of file
index 2aac000..5350893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2267=['exports','INTEGER','sequelize'];(function(_0x3e6426,_0x864775){var _0x27d854=function(_0x122a0a){while(--_0x122a0a){_0x3e6426['push'](_0x3e6426['shift']());}};_0x27d854(++_0x864775);}(_0x2267,0x98));var _0x7226=function(_0x4d38c7,_0x13be0e){_0x4d38c7=_0x4d38c7-0x0;var _0x27d79d=_0x2267[_0x4d38c7];return _0x27d79d;};'use strict';var Sequelize=require(_0x7226('0x0'));module[_0x7226('0x1')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x7226('0x2')]}};
\ No newline at end of file
+var _0x721b=['INTEGER','sequelize'];(function(_0x35e4ad,_0x28783c){var _0x59b2e0=function(_0x38add9){while(--_0x38add9){_0x35e4ad['push'](_0x35e4ad['shift']());}};_0x59b2e0(++_0x28783c);}(_0x721b,0x6d));var _0xb721=function(_0x5a6911,_0x5c3209){_0x5a6911=_0x5a6911-0x0;var _0xeaa3a0=_0x721b[_0x5a6911];return _0xeaa3a0;};'use strict';var Sequelize=require(_0xb721('0x0'));module['exports']={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0xb721('0x1')]}};
\ No newline at end of file
index d3709cf..83b6eef 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(_0x11a81f,_0x122650){var _0x4b2d0a=function(_0x4d964b){while(--_0x4d964b){_0x11a81f['push'](_0x11a81f['shift']());}};_0x4b2d0a(++_0x122650);}(_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':'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(_0x523711,_0x523c78){var _0x20f966=function(_0x393861){while(--_0x393861){_0x523711['push'](_0x523711['shift']());}};_0x20f966(++_0x523c78);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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 643e4d6..c612a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x36862a,_0x507c02){var _0x15934b=function(_0x1fac5f){while(--_0x1fac5f){_0x36862a['push'](_0x36862a['shift']());}};_0x15934b(++_0x507c02);}(_0x70e0,0x17b));var _0x070e=function(_0x52b4fe,_0xb350d0){_0x52b4fe=_0x52b4fe-0x0;var _0x25182b=_0x70e0[_0x52b4fe];return _0x25182b;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x3f6a5a,_0x41108a){var _0x54d9e3=function(_0x3ce4c8){while(--_0x3ce4c8){_0x3f6a5a['push'](_0x3f6a5a['shift']());}};_0x54d9e3(++_0x41108a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa9e0[_0x501510];return _0x1e6ee5;};'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 cc46618..d83f07b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9333=['INTEGER'];(function(_0x1a72b8,_0x1e4f4b){var _0x39f72d=function(_0x35aef1){while(--_0x35aef1){_0x1a72b8['push'](_0x1a72b8['shift']());}};_0x39f72d(++_0x1e4f4b);}(_0x9333,0x1c3));var _0x3933=function(_0x25518d,_0x3f289f){_0x25518d=_0x25518d-0x0;var _0x47e662=_0x9333[_0x25518d];return _0x47e662;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x3933('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x00b7=['INTEGER','sequelize','exports'];(function(_0x1cfcd5,_0x47764b){var _0x365b81=function(_0x1eaf89){while(--_0x1eaf89){_0x1cfcd5['push'](_0x1cfcd5['shift']());}};_0x365b81(++_0x47764b);}(_0x00b7,0x160));var _0x700b=function(_0x3504e6,_0x44bfb4){_0x3504e6=_0x3504e6-0x0;var _0x58c0e9=_0x00b7[_0x3504e6];return _0x58c0e9;};'use strict';var Sequelize=require(_0x700b('0x0'));module[_0x700b('0x1')]={'penalty':{'type':Sequelize[_0x700b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 84f57cb..d2981e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207d=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','UserVoiceQueue','user_has_voice_queues','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x207d,0xa6));var _0xd207=function(_0x268d16,_0x3e3a2a){_0x268d16=_0x268d16-0x0;var _0xb14d4a=_0x207d[_0x268d16];return _0xb14d4a;};'use strict';var _=require(_0xd207('0x0'));var util=require(_0xd207('0x1'));var logger=require(_0xd207('0x2'))(_0xd207('0x3'));var moment=require(_0xd207('0x4'));var BPromise=require(_0xd207('0x5'));var rp=require(_0xd207('0x6'));var fs=require('fs');var path=require(_0xd207('0x7'));var rimraf=require(_0xd207('0x8'));var config=require(_0xd207('0x9'));var attributes=require(_0xd207('0xa'));module[_0xd207('0xb')]=function(_0x58afd0,_0x160d8f){return _0x58afd0['define'](_0xd207('0xc'),attributes,{'tableName':_0xd207('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac54=['bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','api'];(function(_0x102ad3,_0x2a359b){var _0x52c7ab=function(_0x5e0f62){while(--_0x5e0f62){_0x102ad3['push'](_0x102ad3['shift']());}};_0x52c7ab(++_0x2a359b);}(_0xac54,0xdc));var _0x4ac5=function(_0x1f101d,_0x179ad6){_0x1f101d=_0x1f101d-0x0;var _0x57f567=_0xac54[_0x1f101d];return _0x57f567;};'use strict';var _=require(_0x4ac5('0x0'));var util=require(_0x4ac5('0x1'));var logger=require(_0x4ac5('0x2'))(_0x4ac5('0x3'));var moment=require('moment');var BPromise=require(_0x4ac5('0x4'));var rp=require(_0x4ac5('0x5'));var fs=require('fs');var path=require(_0x4ac5('0x6'));var rimraf=require(_0x4ac5('0x7'));var config=require(_0x4ac5('0x8'));var attributes=require(_0x4ac5('0x9'));module[_0x4ac5('0xa')]=function(_0x24c52e,_0x321bec){return _0x24c52e[_0x4ac5('0xb')](_0x4ac5('0xc'),attributes,{'tableName':_0x4ac5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d414b72..2db1dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74d=['message','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserVoiceQueue,\x20%s,\x20%s'];(function(_0x5bd801,_0x3182fb){var _0x57e61c=function(_0x51591f){while(--_0x51591f){_0x5bd801['push'](_0x5bd801['shift']());}};_0x57e61c(++_0x3182fb);}(_0xe74d,0x1bb));var _0xde74=function(_0xb46ba,_0x2e2cc1){_0xb46ba=_0xb46ba-0x0;var _0x3b76a8=_0xe74d[_0xb46ba];return _0x3b76a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xde74('0x0'));var BPromise=require('bluebird');var rs=require(_0xde74('0x1'));var fs=require('fs');var Redis=require(_0xde74('0x2'));var db=require(_0xde74('0x3'))['db'];var utils=require(_0xde74('0x4'));var logger=require(_0xde74('0x5'))(_0xde74('0x6'));var config=require(_0xde74('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xde74('0x8')][_0xde74('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1dc9ac,_0x5eec04,_0x26f58a){return new BPromise(function(_0x33c01f,_0x3ed278){return client[_0xde74('0xa')](_0x1dc9ac,_0x26f58a)[_0xde74('0xb')](function(_0x2248bc){logger[_0xde74('0xc')]('UserVoiceQueue,\x20%s,\x20%s',_0x5eec04,_0xde74('0xd'));logger[_0xde74('0xe')](_0xde74('0xf'),_0x5eec04,_0xde74('0xd'),JSON[_0xde74('0x10')](_0x2248bc));if(_0x2248bc[_0xde74('0x11')]){if(_0x2248bc[_0xde74('0x11')]['code']===0x1f4){logger['error'](_0xde74('0x12'),_0x5eec04,_0x2248bc[_0xde74('0x11')][_0xde74('0x13')]);return _0x3ed278(_0x2248bc['error'][_0xde74('0x13')]);}logger[_0xde74('0x11')](_0xde74('0x12'),_0x5eec04,_0x2248bc[_0xde74('0x11')][_0xde74('0x13')]);return _0x33c01f(_0x2248bc[_0xde74('0x11')][_0xde74('0x13')]);}else{logger[_0xde74('0xc')](_0xde74('0x12'),_0x5eec04,_0xde74('0xd'));_0x33c01f(_0x2248bc['result'][_0xde74('0x13')]);}})[_0xde74('0x14')](function(_0x21a440){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x5eec04,_0x21a440);_0x3ed278(_0x21a440);});});}
\ No newline at end of file
+var _0x120c=['info','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','UserVoiceQueue,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x28a87b,_0x27201){var _0x454b2d=function(_0x2b2b8d){while(--_0x2b2b8d){_0x28a87b['push'](_0x28a87b['shift']());}};_0x454b2d(++_0x27201);}(_0x120c,0xfb));var _0xc120=function(_0x32d1a8,_0x40f461){_0x32d1a8=_0x32d1a8-0x0;var _0x517706=_0x120c[_0x32d1a8];return _0x517706;};'use strict';var _=require(_0xc120('0x0'));var util=require(_0xc120('0x1'));var moment=require('moment');var BPromise=require(_0xc120('0x2'));var rs=require(_0xc120('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc120('0x4'))['db'];var utils=require(_0xc120('0x5'));var logger=require(_0xc120('0x6'))(_0xc120('0x7'));var config=require(_0xc120('0x8'));var jayson=require(_0xc120('0x9'));var client=jayson[_0xc120('0xa')][_0xc120('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x17f5de,_0x40c42c,_0x4badb2){return new BPromise(function(_0x3b6e0a,_0x40b76f){return client[_0xc120('0xc')](_0x17f5de,_0x4badb2)['then'](function(_0x1e72c8){logger[_0xc120('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x40c42c,_0xc120('0xe'));logger[_0xc120('0xf')](_0xc120('0x10'),_0x40c42c,_0xc120('0xe'),JSON[_0xc120('0x11')](_0x1e72c8));if(_0x1e72c8['error']){if(_0x1e72c8['error'][_0xc120('0x12')]===0x1f4){logger[_0xc120('0x13')](_0xc120('0x14'),_0x40c42c,_0x1e72c8[_0xc120('0x13')][_0xc120('0x15')]);return _0x40b76f(_0x1e72c8[_0xc120('0x13')]['message']);}logger[_0xc120('0x13')](_0xc120('0x14'),_0x40c42c,_0x1e72c8['error'][_0xc120('0x15')]);return _0x3b6e0a(_0x1e72c8[_0xc120('0x13')]['message']);}else{logger[_0xc120('0xd')](_0xc120('0x14'),_0x40c42c,'request\x20sent');_0x3b6e0a(_0x1e72c8[_0xc120('0x16')]['message']);}})[_0xc120('0x17')](function(_0x461d21){logger[_0xc120('0x13')](_0xc120('0x14'),_0x40c42c,_0x461d21);_0x40b76f(_0x461d21);});});}
\ No newline at end of file
index 8e6ace3..2481e56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x28cc55,_0x3b3191){var _0x559c=function(_0x13fbd7){while(--_0x13fbd7){_0x28cc55['push'](_0x28cc55['shift']());}};_0x559c(++_0x3b3191);}(_0x70e0,0x17b));var _0x070e=function(_0x31a465,_0x5c4676){_0x31a465=_0x31a465-0x0;var _0x3519dc=_0x70e0[_0x31a465];return _0x3519dc;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x51c937,_0xaae677){var _0xb10c83=function(_0x5141da){while(--_0x5141da){_0x51c937['push'](_0x51c937['shift']());}};_0xb10c83(++_0xaae677);}(_0x70e0,0x17b));var _0x070e=function(_0x287bed,_0x4d439a){_0x287bed=_0x287bed-0x0;var _0x234f85=_0x70e0[_0x287bed];return _0x234f85;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index cd904d4..e56de98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f4a=['sequelize','exports','Required\x20by\x20Asterisk','queue_interface','INTEGER','STRING'];(function(_0x346b8c,_0x20bc85){var _0x2dd72a=function(_0x2bcd47){while(--_0x2bcd47){_0x346b8c['push'](_0x346b8c['shift']());}};_0x2dd72a(++_0x20bc85);}(_0x5f4a,0x1bc));var _0xa5f4=function(_0x2e164e,_0x39a835){_0x2e164e=_0x2e164e-0x0;var _0x28b46c=_0x5f4a[_0x2e164e];return _0x28b46c;};'use strict';var Sequelize=require(_0xa5f4('0x0'));module[_0xa5f4('0x1')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0xa5f4('0x2')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa5f4('0x3'),'comment':_0xa5f4('0x2')},'VoiceQueueId':{'type':Sequelize[_0xa5f4('0x4')],'allowNull':![]},'interface':{'type':Sequelize[_0xa5f4('0x5')],'allowNull':![],'unique':_0xa5f4('0x3'),'comment':_0xa5f4('0x2')},'penalty':{'type':Sequelize[_0xa5f4('0x4')](0xb),'defaultValue':0x0,'comment':_0xa5f4('0x2')},'paused':{'type':Sequelize[_0xa5f4('0x4')](0xb),'defaultValue':0x0,'comment':_0xa5f4('0x2')}};
\ No newline at end of file
+var _0xdf68=['queue_interface','INTEGER','exports','Required\x20by\x20Asterisk','STRING'];(function(_0x14475a,_0x3991a0){var _0xca466e=function(_0x520f6b){while(--_0x520f6b){_0x14475a['push'](_0x14475a['shift']());}};_0xca466e(++_0x3991a0);}(_0xdf68,0x7f));var _0x8df6=function(_0x1ebc6c,_0x58a00b){_0x1ebc6c=_0x1ebc6c-0x0;var _0x3a826d=_0xdf68[_0x1ebc6c];return _0x3a826d;};'use strict';var Sequelize=require('sequelize');module[_0x8df6('0x0')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x8df6('0x1')},'membername':{'type':Sequelize[_0x8df6('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x8df6('0x2')],'allowNull':![],'unique':_0x8df6('0x3'),'comment':_0x8df6('0x1')},'VoiceQueueId':{'type':Sequelize[_0x8df6('0x4')],'allowNull':![]},'interface':{'type':Sequelize[_0x8df6('0x2')],'allowNull':![],'unique':_0x8df6('0x3'),'comment':_0x8df6('0x1')},'penalty':{'type':Sequelize[_0x8df6('0x4')](0xb),'defaultValue':0x0,'comment':_0x8df6('0x1')},'paused':{'type':Sequelize[_0x8df6('0x4')](0xb),'defaultValue':0x0,'comment':_0x8df6('0x1')}};
\ No newline at end of file
index 538f5a6..f41a666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c41=['hook','events','../../mysqldb','UserVoiceQueueRt','save','update','remove','emit','hasOwnProperty'];(function(_0x5bfa27,_0x2af47f){var _0x305e1b=function(_0x1c59ec){while(--_0x1c59ec){_0x5bfa27['push'](_0x5bfa27['shift']());}};_0x305e1b(++_0x2af47f);}(_0x5c41,0xc7));var _0x15c4=function(_0x3ed720,_0xdc3cd6){_0x3ed720=_0x3ed720-0x0;var _0x337192=_0x5c41[_0x3ed720];return _0x337192;};'use strict';var EventEmitter=require(_0x15c4('0x0'));var UserVoiceQueueRt=require(_0x15c4('0x1'))['db'][_0x15c4('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x15c4('0x3'),'afterUpdate':_0x15c4('0x4'),'afterDestroy':_0x15c4('0x5')};function emitEvent(_0x3496fa){return function(_0x58dd92,_0x4b067b,_0x2764e7){UserVoiceQueueRtEvents['emit'](_0x3496fa+':'+_0x58dd92['id'],_0x58dd92);UserVoiceQueueRtEvents[_0x15c4('0x6')](_0x3496fa,_0x58dd92);_0x2764e7(null);};}for(var e in events){if(events[_0x15c4('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x15c4('0x8')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xace0=['remove','emit','exports','../../mysqldb','setMaxListeners','update'];(function(_0x543797,_0xfe14b){var _0x28270d=function(_0x15a2dc){while(--_0x15a2dc){_0x543797['push'](_0x543797['shift']());}};_0x28270d(++_0xfe14b);}(_0xace0,0x195));var _0x0ace=function(_0x21af3a,_0x386e1d){_0x21af3a=_0x21af3a-0x0;var _0x268a49=_0xace0[_0x21af3a];return _0x268a49;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x0ace('0x0'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x0ace('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0ace('0x2'),'afterDestroy':_0x0ace('0x3')};function emitEvent(_0x5bda2f){return function(_0xd0caa6,_0x1726f7,_0x325bb3){UserVoiceQueueRtEvents[_0x0ace('0x4')](_0x5bda2f+':'+_0xd0caa6['id'],_0xd0caa6);UserVoiceQueueRtEvents['emit'](_0x5bda2f,_0xd0caa6);_0x325bb3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x0ace('0x5')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index b7ee50f..6aff3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba3=['UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define'];(function(_0x2bd1ec,_0x3fe65f){var _0x2f7577=function(_0x5234fb){while(--_0x5234fb){_0x2bd1ec['push'](_0x2bd1ec['shift']());}};_0x2f7577(++_0x3fe65f);}(_0xcba3,0x136));var _0x3cba=function(_0x1f4eac,_0xb8d9fd){_0x1f4eac=_0x1f4eac-0x0;var _0xd8e97d=_0xcba3[_0x1f4eac];return _0xd8e97d;};'use strict';var _=require(_0x3cba('0x0'));var util=require(_0x3cba('0x1'));var logger=require(_0x3cba('0x2'))(_0x3cba('0x3'));var moment=require(_0x3cba('0x4'));var BPromise=require('bluebird');var rp=require(_0x3cba('0x5'));var fs=require('fs');var path=require(_0x3cba('0x6'));var rimraf=require(_0x3cba('0x7'));var config=require(_0x3cba('0x8'));var attributes=require(_0x3cba('0x9'));module[_0x3cba('0xa')]=function(_0x5768ab,_0x1abc31){return _0x5768ab[_0x3cba('0xb')](_0x3cba('0xc'),attributes,{'tableName':_0x3cba('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa4e0=['lodash','../../config/logger','api','moment','request-promise','path','../../config/environment','exports','UserVoiceQueueRt','user_has_voice_queues_rt'];(function(_0x16bf05,_0x4f70da){var _0xbcf546=function(_0x70b01d){while(--_0x70b01d){_0x16bf05['push'](_0x16bf05['shift']());}};_0xbcf546(++_0x4f70da);}(_0xa4e0,0x64));var _0x0a4e=function(_0x43316d,_0x5ebd8f){_0x43316d=_0x43316d-0x0;var _0x52d343=_0xa4e0[_0x43316d];return _0x52d343;};'use strict';var _=require(_0x0a4e('0x0'));var util=require('util');var logger=require(_0x0a4e('0x1'))(_0x0a4e('0x2'));var moment=require(_0x0a4e('0x3'));var BPromise=require('bluebird');var rp=require(_0x0a4e('0x4'));var fs=require('fs');var path=require(_0x0a4e('0x5'));var rimraf=require('rimraf');var config=require(_0x0a4e('0x6'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x0a4e('0x7')]=function(_0x3593b6,_0x30b35b){return _0x3593b6['define'](_0x0a4e('0x8'),attributes,{'tableName':_0x0a4e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3fb3242..2184bdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7554=['rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','outboundQueuePauses','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7554,0x90));var _0x4755=function(_0x57cf4b,_0x2a8872){_0x57cf4b=_0x57cf4b-0x0;var _0x3a0df7=_0x7554[_0x57cf4b];return _0x3a0df7;};'use strict';var _=require(_0x4755('0x0'));var util=require(_0x4755('0x1'));var moment=require(_0x4755('0x2'));var BPromise=require(_0x4755('0x3'));var rs=require(_0x4755('0x4'));var fs=require('fs');var Redis=require(_0x4755('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4755('0x6'));var logger=require(_0x4755('0x7'))(_0x4755('0x8'));var config=require(_0x4755('0x9'));var jayson=require(_0x4755('0xa'));var client=jayson['client'][_0x4755('0xb')]({'port':0x232a});config['redis']=_[_0x4755('0xc')](config[_0x4755('0xd')],{'host':_0x4755('0xe'),'port':0x18eb});var socket=require(_0x4755('0xf'))(new Redis(config[_0x4755('0xd')]));require('./userVoiceQueueRt.socket')[_0x4755('0x10')](socket);function respondWithRpcPromise(_0x398eed,_0x241a0c,_0x2e6117){return new BPromise(function(_0x22aed7,_0x381301){return client[_0x4755('0x11')](_0x398eed,_0x2e6117)[_0x4755('0x12')](function(_0x31b656){logger[_0x4755('0x13')](_0x4755('0x14'),_0x241a0c,_0x4755('0x15'));logger['debug'](_0x4755('0x16'),_0x241a0c,'request\x20sent',JSON[_0x4755('0x17')](_0x31b656));if(_0x31b656[_0x4755('0x18')]){if(_0x31b656[_0x4755('0x18')][_0x4755('0x19')]===0x1f4){logger[_0x4755('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x241a0c,_0x31b656[_0x4755('0x18')][_0x4755('0x1a')]);return _0x381301(_0x31b656[_0x4755('0x18')][_0x4755('0x1a')]);}logger[_0x4755('0x18')](_0x4755('0x14'),_0x241a0c,_0x31b656[_0x4755('0x18')][_0x4755('0x1a')]);return _0x22aed7(_0x31b656['error'][_0x4755('0x1a')]);}else{logger[_0x4755('0x13')](_0x4755('0x14'),_0x241a0c,_0x4755('0x15'));_0x22aed7(_0x31b656[_0x4755('0x1b')][_0x4755('0x1a')]);}})['catch'](function(_0x180541){logger[_0x4755('0x18')](_0x4755('0x14'),_0x241a0c,_0x180541);_0x381301(_0x180541);});});}exports[_0x4755('0x1c')]=function(_0x5eb7e2){var _0x37f8a9=this;return new Promise(function(_0x2e925b,_0x312562){return db[_0x4755('0x1d')][_0x4755('0x1e')]({'raw':_0x5eb7e2[_0x4755('0x1f')]?_0x5eb7e2[_0x4755('0x1f')][_0x4755('0x20')]===undefined?!![]:![]:!![],'where':_0x5eb7e2[_0x4755('0x1f')]?_0x5eb7e2['options'][_0x4755('0x21')]||null:null,'attributes':[[db[_0x4755('0x22')]['fn']('COUNT',db[_0x4755('0x22')]['fn']('IF',db[_0x4755('0x22')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0x4755('0x23')]]})[_0x4755('0x12')](function(_0x5cd334){logger[_0x4755('0x13')](_0x4755('0x1c'),_0x5eb7e2);logger[_0x4755('0x24')](_0x4755('0x1c'),_0x5eb7e2,JSON[_0x4755('0x17')](_0x5cd334));_0x2e925b(_0x5cd334);})[_0x4755('0x25')](function(_0x242ea0){logger[_0x4755('0x18')](_0x4755('0x1c'),_0x242ea0[_0x4755('0x1a')],_0x5eb7e2);_0x312562(_0x37f8a9[_0x4755('0x18')](0x1f4,_0x242ea0[_0x4755('0x1a')]));});});};
\ No newline at end of file
+var _0xffe9=['options','raw','sequelize','COUNT','outboundQueuePauses','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userVoiceQueueRt.socket','then','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'];(function(_0x5cdee3,_0x4add48){var _0x296ad6=function(_0x4c0ab1){while(--_0x4c0ab1){_0x5cdee3['push'](_0x5cdee3['shift']());}};_0x296ad6(++_0x4add48);}(_0xffe9,0xfa));var _0x9ffe=function(_0x5067db,_0xf8d2f2){_0x5067db=_0x5067db-0x0;var _0x2771e4=_0xffe9[_0x5067db];return _0x2771e4;};'use strict';var _=require('lodash');var util=require(_0x9ffe('0x0'));var moment=require(_0x9ffe('0x1'));var BPromise=require(_0x9ffe('0x2'));var rs=require(_0x9ffe('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9ffe('0x4'));var logger=require(_0x9ffe('0x5'))(_0x9ffe('0x6'));var config=require(_0x9ffe('0x7'));var jayson=require(_0x9ffe('0x8'));var client=jayson[_0x9ffe('0x9')][_0x9ffe('0xa')]({'port':0x232a});config[_0x9ffe('0xb')]=_[_0x9ffe('0xc')](config[_0x9ffe('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9ffe('0xd'))(new Redis(config[_0x9ffe('0xb')]));require(_0x9ffe('0xe'))['register'](socket);function respondWithRpcPromise(_0x48d24f,_0x4f4d0d,_0xcd1fe1){return new BPromise(function(_0x2a8ad2,_0x191959){return client['request'](_0x48d24f,_0xcd1fe1)[_0x9ffe('0xf')](function(_0x598e6c){logger[_0x9ffe('0x10')](_0x9ffe('0x11'),_0x4f4d0d,'request\x20sent');logger[_0x9ffe('0x12')](_0x9ffe('0x13'),_0x4f4d0d,_0x9ffe('0x14'),JSON[_0x9ffe('0x15')](_0x598e6c));if(_0x598e6c['error']){if(_0x598e6c[_0x9ffe('0x16')][_0x9ffe('0x17')]===0x1f4){logger['error'](_0x9ffe('0x11'),_0x4f4d0d,_0x598e6c[_0x9ffe('0x16')][_0x9ffe('0x18')]);return _0x191959(_0x598e6c[_0x9ffe('0x16')][_0x9ffe('0x18')]);}logger[_0x9ffe('0x16')](_0x9ffe('0x11'),_0x4f4d0d,_0x598e6c[_0x9ffe('0x16')][_0x9ffe('0x18')]);return _0x2a8ad2(_0x598e6c[_0x9ffe('0x16')]['message']);}else{logger[_0x9ffe('0x10')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x4f4d0d,_0x9ffe('0x14'));_0x2a8ad2(_0x598e6c[_0x9ffe('0x19')][_0x9ffe('0x18')]);}})[_0x9ffe('0x1a')](function(_0x2f2dcd){logger[_0x9ffe('0x16')](_0x9ffe('0x11'),_0x4f4d0d,_0x2f2dcd);_0x191959(_0x2f2dcd);});});}exports[_0x9ffe('0x1b')]=function(_0x36a3d0){var _0x3061fd=this;return new Promise(function(_0x16cbb5,_0x1eb195){return db[_0x9ffe('0x1c')][_0x9ffe('0x1d')]({'raw':_0x36a3d0[_0x9ffe('0x1e')]?_0x36a3d0[_0x9ffe('0x1e')][_0x9ffe('0x1f')]===undefined?!![]:![]:!![],'where':_0x36a3d0[_0x9ffe('0x1e')]?_0x36a3d0[_0x9ffe('0x1e')]['where']||null:null,'attributes':[[db[_0x9ffe('0x20')]['fn'](_0x9ffe('0x21'),db[_0x9ffe('0x20')]['fn']('IF',db[_0x9ffe('0x20')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0x9ffe('0x22')]]})[_0x9ffe('0xf')](function(_0x13d1ba){logger[_0x9ffe('0x10')](_0x9ffe('0x1b'),_0x36a3d0);logger[_0x9ffe('0x12')](_0x9ffe('0x1b'),_0x36a3d0,JSON[_0x9ffe('0x15')](_0x13d1ba));_0x16cbb5(_0x13d1ba);})[_0x9ffe('0x1a')](function(_0x22debc){logger[_0x9ffe('0x16')](_0x9ffe('0x1b'),_0x22debc['message'],_0x36a3d0);_0x1eb195(_0x3061fd[_0x9ffe('0x16')](0x1f4,_0x22debc[_0x9ffe('0x18')]));});});};
\ No newline at end of file
index 977aa6c..a0cad89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf961=['removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','emit'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf961,0x1cf));var _0x1f96=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xf961[_0x1da04e];return _0xdd8c41;};'use strict';var UserVoiceQueueRtEvents=require(_0x1f96('0x0'));var events=[_0x1f96('0x1'),_0x1f96('0x2'),_0x1f96('0x3')];function createListener(_0x5f426a,_0x1174c8){return function(_0x1dc85a){_0x1174c8[_0x1f96('0x4')](_0x5f426a,_0x1dc85a);};}function removeListener(_0x4abe82,_0x3d032b){return function(){UserVoiceQueueRtEvents[_0x1f96('0x5')](_0x4abe82,_0x3d032b);};}exports[_0x1f96('0x6')]=function(_0x518062){for(var _0x40caad=0x0,_0x53e4d1=events[_0x1f96('0x7')];_0x40caad<_0x53e4d1;_0x40caad++){var _0x3244f8=events[_0x40caad];var _0x896b25=createListener(_0x1f96('0x8')+_0x3244f8,_0x518062);UserVoiceQueueRtEvents['on'](_0x3244f8,_0x896b25);}};
\ No newline at end of file
+var _0x199c=['emit','register','length','userVoiceQueueRt:','remove','update'];(function(_0x2a0824,_0x21d97a){var _0x1a78f7=function(_0x517c4a){while(--_0x517c4a){_0x2a0824['push'](_0x2a0824['shift']());}};_0x1a78f7(++_0x21d97a);}(_0x199c,0x1d8));var _0xc199=function(_0x1a6905,_0x56adc4){_0x1a6905=_0x1a6905-0x0;var _0x4ef252=_0x199c[_0x1a6905];return _0x4ef252;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save',_0xc199('0x0'),_0xc199('0x1')];function createListener(_0xf15666,_0x3e0b15){return function(_0x124132){_0x3e0b15[_0xc199('0x2')](_0xf15666,_0x124132);};}function removeListener(_0x3f06cc,_0x1eecc2){return function(){UserVoiceQueueRtEvents['removeListener'](_0x3f06cc,_0x1eecc2);};}exports[_0xc199('0x3')]=function(_0x2ff172){for(var _0x499721=0x0,_0x4cd9cb=events[_0xc199('0x4')];_0x499721<_0x4cd9cb;_0x499721++){var _0x126236=events[_0x499721];var _0x12d6df=createListener(_0xc199('0x5')+_0x126236,_0x2ff172);UserVoiceQueueRtEvents['on'](_0x126236,_0x12d6df);}};
\ No newline at end of file
index 6427d22..9f0c616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x54b17c,_0x234350){var _0x16f529=function(_0x324d35){while(--_0x324d35){_0x54b17c['push'](_0x54b17c['shift']());}};_0x16f529(++_0x234350);}(_0x70e0,0x17b));var _0x070e=function(_0x766a52,_0x50ffb2){_0x766a52=_0x766a52-0x0;var _0x5b6e24=_0x70e0[_0x766a52];return _0x5b6e24;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0xf9f831,_0x53f4e2){var _0xd0cac7=function(_0x5d1686){while(--_0x5d1686){_0xf9f831['push'](_0xf9f831['shift']());}};_0xd0cac7(++_0x53f4e2);}(_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 4a6f91a..9d86b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ea=['exports','INTEGER','sequelize'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xa1ea,0xb3));var _0xaa1e=function(_0x4f1ef6,_0x204b99){_0x4f1ef6=_0x4f1ef6-0x0;var _0x24f3d8=_0xa1ea[_0x4f1ef6];return _0x24f3d8;};'use strict';var Sequelize=require(_0xaa1e('0x0'));module[_0xaa1e('0x1')]={'penalty':{'type':Sequelize[_0xaa1e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4ee2=['INTEGER','sequelize','exports'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x4ee2,0x1e4));var _0x24ee=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x4ee2[_0x138adb];return _0x1b27f2;};'use strict';var Sequelize=require(_0x24ee('0x0'));module[_0x24ee('0x1')]={'penalty':{'type':Sequelize[_0x24ee('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 9bf49fd..75a4817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3278=['../../config/environment','exports','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x4e074e,_0x35a42e){var _0x1fb96a=function(_0x432263){while(--_0x432263){_0x4e074e['push'](_0x4e074e['shift']());}};_0x1fb96a(++_0x35a42e);}(_0x3278,0x1cc));var _0x8327=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3278[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x8327('0x0'));var util=require(_0x8327('0x1'));var logger=require(_0x8327('0x2'))(_0x8327('0x3'));var moment=require(_0x8327('0x4'));var BPromise=require('bluebird');var rp=require(_0x8327('0x5'));var fs=require('fs');var path=require(_0x8327('0x6'));var rimraf=require(_0x8327('0x7'));var config=require(_0x8327('0x8'));var attributes=require('./userWhatsappQueue.attributes');module[_0x8327('0x9')]=function(_0x51f891,_0x1de8a3){return _0x51f891['define'](_0x8327('0xa'),attributes,{'tableName':_0x8327('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b60=['path','rimraf','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','../../config/logger','request-promise'];(function(_0x29cd14,_0x245c40){var _0x4229d1=function(_0x1ef992){while(--_0x1ef992){_0x29cd14['push'](_0x29cd14['shift']());}};_0x4229d1(++_0x245c40);}(_0x3b60,0xa8));var _0x03b6=function(_0x68a8da,_0x2d341b){_0x68a8da=_0x68a8da-0x0;var _0x2ae37f=_0x3b60[_0x68a8da];return _0x2ae37f;};'use strict';var _=require(_0x03b6('0x0'));var util=require('util');var logger=require(_0x03b6('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x03b6('0x2'));var fs=require('fs');var path=require(_0x03b6('0x3'));var rimraf=require(_0x03b6('0x4'));var config=require('../../config/environment');var attributes=require('./userWhatsappQueue.attributes');module[_0x03b6('0x5')]=function(_0x13559e,_0x111e4b){return _0x13559e[_0x03b6('0x6')](_0x03b6('0x7'),attributes,{'tableName':_0x03b6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 748b025..651a12e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa12c=['../../config/environment','jayson/promise','client','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x4ca26c,_0x44d6f1){var _0x25b914=function(_0x2a9e54){while(--_0x2a9e54){_0x4ca26c['push'](_0x4ca26c['shift']());}};_0x25b914(++_0x44d6f1);}(_0xa12c,0x168));var _0xca12=function(_0x2c0246,_0x2e4693){_0x2c0246=_0x2c0246-0x0;var _0x270418=_0xa12c[_0x2c0246];return _0x270418;};'use strict';var _=require(_0xca12('0x0'));var util=require('util');var moment=require(_0xca12('0x1'));var BPromise=require(_0xca12('0x2'));var rs=require(_0xca12('0x3'));var fs=require('fs');var Redis=require(_0xca12('0x4'));var db=require(_0xca12('0x5'))['db'];var utils=require(_0xca12('0x6'));var logger=require('../../config/logger')(_0xca12('0x7'));var config=require(_0xca12('0x8'));var jayson=require(_0xca12('0x9'));var client=jayson[_0xca12('0xa')][_0xca12('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2ef3ae,_0x500695,_0x1fbbe8){return new BPromise(function(_0x360358,_0x224898){return client[_0xca12('0xc')](_0x2ef3ae,_0x1fbbe8)['then'](function(_0x104e6d){logger[_0xca12('0xd')](_0xca12('0xe'),_0x500695,_0xca12('0xf'));logger[_0xca12('0x10')](_0xca12('0x11'),_0x500695,'request\x20sent',JSON[_0xca12('0x12')](_0x104e6d));if(_0x104e6d[_0xca12('0x13')]){if(_0x104e6d[_0xca12('0x13')][_0xca12('0x14')]===0x1f4){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x500695,_0x104e6d[_0xca12('0x13')][_0xca12('0x15')]);return _0x224898(_0x104e6d[_0xca12('0x13')][_0xca12('0x15')]);}logger[_0xca12('0x13')](_0xca12('0xe'),_0x500695,_0x104e6d['error'][_0xca12('0x15')]);return _0x360358(_0x104e6d[_0xca12('0x13')][_0xca12('0x15')]);}else{logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x500695,_0xca12('0xf'));_0x360358(_0x104e6d['result'][_0xca12('0x15')]);}})[_0xca12('0x16')](function(_0xfc545e){logger['error'](_0xca12('0xe'),_0x500695,_0xfc545e);_0x224898(_0xfc545e);});});}
\ No newline at end of file
+var _0xad24=['info','catch','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x216226,_0x145eab){var _0x462499=function(_0x13c3c4){while(--_0x13c3c4){_0x216226['push'](_0x216226['shift']());}};_0x462499(++_0x145eab);}(_0xad24,0xac));var _0x4ad2=function(_0x1bb438,_0x1f09d8){_0x1bb438=_0x1bb438-0x0;var _0x2505a4=_0xad24[_0x1bb438];return _0x2505a4;};'use strict';var _=require('lodash');var util=require(_0x4ad2('0x0'));var moment=require(_0x4ad2('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ad2('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x4ad2('0x3'));var logger=require(_0x4ad2('0x4'))('rpc');var config=require(_0x4ad2('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x4ad2('0x6')][_0x4ad2('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x55ecd2,_0x4435eb,_0x362174){return new BPromise(function(_0x9a5d63,_0x265b79){return client[_0x4ad2('0x8')](_0x55ecd2,_0x362174)['then'](function(_0x2304ea){logger['info'](_0x4ad2('0x9'),_0x4435eb,_0x4ad2('0xa'));logger[_0x4ad2('0xb')](_0x4ad2('0xc'),_0x4435eb,_0x4ad2('0xa'),JSON['stringify'](_0x2304ea));if(_0x2304ea['error']){if(_0x2304ea['error']['code']===0x1f4){logger[_0x4ad2('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4435eb,_0x2304ea[_0x4ad2('0xd')][_0x4ad2('0xe')]);return _0x265b79(_0x2304ea[_0x4ad2('0xd')][_0x4ad2('0xe')]);}logger[_0x4ad2('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4435eb,_0x2304ea[_0x4ad2('0xd')][_0x4ad2('0xe')]);return _0x9a5d63(_0x2304ea[_0x4ad2('0xd')][_0x4ad2('0xe')]);}else{logger[_0x4ad2('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4435eb,_0x4ad2('0xa'));_0x9a5d63(_0x2304ea['result'][_0x4ad2('0xe')]);}})[_0x4ad2('0x10')](function(_0x2e6bd1){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x4435eb,_0x2e6bd1);_0x265b79(_0x2e6bd1);});});}
\ No newline at end of file
index f9c9910..563cca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdab2=['update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x175d1e,_0x48ad7e){var _0x10aefc=function(_0x508d26){while(--_0x508d26){_0x175d1e['push'](_0x175d1e['shift']());}};_0x10aefc(++_0x48ad7e);}(_0xdab2,0x130));var _0x2dab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdab2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2dab('0x0'));var util=require(_0x2dab('0x1'));var path=require('path');var timeout=require(_0x2dab('0x2'));var express=require(_0x2dab('0x3'));var router=express[_0x2dab('0x4')]();var fs_extra=require(_0x2dab('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2dab('0x6'));var config=require(_0x2dab('0x7'));var controller=require(_0x2dab('0x8'));router[_0x2dab('0x9')]('/',auth[_0x2dab('0xa')](),controller[_0x2dab('0xb')]);router[_0x2dab('0x9')](_0x2dab('0xc'),auth[_0x2dab('0xa')](),controller[_0x2dab('0xd')]);router[_0x2dab('0xe')]('/',auth[_0x2dab('0xa')](),controller[_0x2dab('0xf')]);router['put']('/:id',auth[_0x2dab('0xa')](),controller[_0x2dab('0x10')]);router[_0x2dab('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x2dab('0x12')]);module[_0x2dab('0x13')]=router;
\ No newline at end of file
+var _0xa4fb=['../../components/interaction/service','./variable.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0xfb0796,_0x4f6168){var _0x5c0b18=function(_0x53eb92){while(--_0x53eb92){_0xfb0796['push'](_0xfb0796['shift']());}};_0x5c0b18(++_0x4f6168);}(_0xa4fb,0x150));var _0xba4f=function(_0x4206f5,_0x21f338){_0x4206f5=_0x4206f5-0x0;var _0xa29cf3=_0xa4fb[_0x4206f5];return _0xa29cf3;};'use strict';var multer=require(_0xba4f('0x0'));var util=require(_0xba4f('0x1'));var path=require(_0xba4f('0x2'));var timeout=require(_0xba4f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xba4f('0x4'));var auth=require(_0xba4f('0x5'));var interaction=require(_0xba4f('0x6'));var config=require('../../config/environment');var controller=require(_0xba4f('0x7'));router[_0xba4f('0x8')]('/',auth[_0xba4f('0x9')](),controller[_0xba4f('0xa')]);router[_0xba4f('0x8')](_0xba4f('0xb'),auth[_0xba4f('0x9')](),controller[_0xba4f('0xc')]);router[_0xba4f('0xd')]('/',auth[_0xba4f('0x9')](),controller['create']);router[_0xba4f('0xe')]('/:id',auth[_0xba4f('0x9')](),controller[_0xba4f('0xf')]);router[_0xba4f('0x10')](_0xba4f('0xb'),auth[_0xba4f('0x9')](),controller[_0xba4f('0x11')]);module['exports']=router;
\ No newline at end of file
index 4b0ee9c..285d607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e0f=['exports','STRING','name','sequelize'];(function(_0x482611,_0x33356d){var _0x4aeb3a=function(_0x44feae){while(--_0x44feae){_0x482611['push'](_0x482611['shift']());}};_0x4aeb3a(++_0x33356d);}(_0x8e0f,0x12f));var _0xf8e0=function(_0xe6d2d0,_0x23d2a0){_0xe6d2d0=_0xe6d2d0-0x0;var _0x12283e=_0x8e0f[_0xe6d2d0];return _0x12283e;};'use strict';var Sequelize=require(_0xf8e0('0x0'));module[_0xf8e0('0x1')]={'name':{'type':Sequelize[_0xf8e0('0x2')],'unique':_0xf8e0('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf8e0('0x2')]}};
\ No newline at end of file
+var _0x4951=['STRING','name'];(function(_0x5ee3d3,_0x537c30){var _0x4b272f=function(_0x3dc277){while(--_0x3dc277){_0x5ee3d3['push'](_0x5ee3d3['shift']());}};_0x4b272f(++_0x537c30);}(_0x4951,0x11f));var _0x1495=function(_0x1f63e9,_0x2aa7a2){_0x1f63e9=_0x1f63e9-0x0;var _0x48ba36=_0x4951[_0x1f63e9];return _0x48ba36;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x1495('0x0'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1495('0x1')]}};
\ No newline at end of file
index 469432d..d7ae1e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4ff=['api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','update','then','Variables','UserProfileResource','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','query','intersection','model','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','Variable','includeAll','include','rows','show','params','keys','fields','length','options','find','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xf4ff,0x8a));var _0xff4f=function(_0x37721b,_0x4aae6d){_0x37721b=_0x37721b-0x0;var _0x6c553a=_0xf4ff[_0x37721b];return _0x6c553a;};'use strict';var emlformat=require(_0xff4f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff4f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xff4f('0x2'));var moment=require('moment');var BPromise=require(_0xff4f('0x3'));var Mustache=require(_0xff4f('0x4'));var util=require(_0xff4f('0x5'));var path=require('path');var sox=require(_0xff4f('0x6'));var csv=require(_0xff4f('0x7'));var ejs=require(_0xff4f('0x8'));var fs=require('fs');var fs_extra=require(_0xff4f('0x9'));var _=require(_0xff4f('0xa'));var squel=require(_0xff4f('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xff4f('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xff4f('0xd'));var Redis=require(_0xff4f('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xff4f('0xf'));var as=require(_0xff4f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff4f('0x11'))(_0xff4f('0x12'));var utils=require('../../config/utils');var config=require(_0xff4f('0x13'));var licenseUtil=require(_0xff4f('0x14'));var db=require(_0xff4f('0x15'))['db'];function respondWithStatusCode(_0x2e23be,_0x154ebd){_0x154ebd=_0x154ebd||0xcc;return function(_0x4e6111){if(_0x4e6111){return _0x2e23be[_0xff4f('0x16')](_0x154ebd);}return _0x2e23be[_0xff4f('0x17')](_0x154ebd)[_0xff4f('0x18')]();};}function respondWithResult(_0x3a78a5,_0x1909ce){_0x1909ce=_0x1909ce||0xc8;return function(_0x5c8f64){if(_0x5c8f64){return _0x3a78a5['status'](_0x1909ce)['json'](_0x5c8f64);}};}function respondWithFilteredResult(_0x3cbc34,_0x190806){return function(_0x595831){if(_0x595831){var _0x34c385=typeof _0x190806[_0xff4f('0x19')]===_0xff4f('0x1a')&&typeof _0x190806[_0xff4f('0x1b')]===_0xff4f('0x1a');var _0x2e4acb=_0x595831[_0xff4f('0x1c')];var _0x165ca7=_0x34c385?0x0:_0x190806['offset'];var _0x5a8bde=_0x34c385?_0x595831[_0xff4f('0x1c')]:_0x190806[_0xff4f('0x19')]+_0x190806[_0xff4f('0x1b')];var _0x2d8204;if(_0x5a8bde>=_0x2e4acb){_0x5a8bde=_0x2e4acb;_0x2d8204=0xc8;}else{_0x2d8204=0xce;}_0x3cbc34['status'](_0x2d8204);return _0x3cbc34['set'](_0xff4f('0x1d'),_0x165ca7+'-'+_0x5a8bde+'/'+_0x2e4acb)[_0xff4f('0x1e')](_0x595831);}return null;};}function patchUpdates(_0x46cb86){return function(_0x491ba2){try{jsonpatch['apply'](_0x491ba2,_0x46cb86,!![]);}catch(_0x2d7541){return BPromise[_0xff4f('0x1f')](_0x2d7541);}return _0x491ba2['save']();};}function saveUpdates(_0xcf643,_0x224334){return function(_0x11bf5a){if(_0x11bf5a){return _0x11bf5a[_0xff4f('0x20')](_0xcf643)[_0xff4f('0x21')](function(_0x3aa1a){return _0x3aa1a;});}return null;};}function removeEntity(_0x14b5a7,_0x13b86e){return function(_0x43e9e5){if(_0x43e9e5){return _0x43e9e5['destroy']()['then'](function(){var _0x3c7f29=_0x43e9e5['get']({'plain':!![]});var _0x55af21=_0xff4f('0x22');return db[_0xff4f('0x23')][_0xff4f('0x24')]({'where':{'type':_0x55af21,'resourceId':_0x3c7f29['id']}})[_0xff4f('0x21')](function(){return _0x43e9e5;});})['then'](function(){_0x14b5a7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2de52f,_0x3b585a){return function(_0x4c9fad){if(!_0x4c9fad){_0x2de52f['sendStatus'](0x194);}return _0x4c9fad;};}function handleError(_0x3c793a,_0x1edb21){_0x1edb21=_0x1edb21||0x1f4;return function(_0x74549c){logger['error'](_0x74549c[_0xff4f('0x25')]);if(_0x74549c[_0xff4f('0x26')]){delete _0x74549c[_0xff4f('0x26')];}_0x3c793a['status'](_0x1edb21)[_0xff4f('0x27')](_0x74549c);};}exports['index']=function(_0x5c5935,_0x2047b6){var _0x56b218={},_0x28e11d={},_0x11407e={'count':0x0,'rows':[]};var _0x4dd402=_[_0xff4f('0x28')](db['Variable'][_0xff4f('0x29')],function(_0x1c11f){return{'name':_0x1c11f[_0xff4f('0x2a')],'type':_0x1c11f[_0xff4f('0x2b')][_0xff4f('0x2c')]};});_0x28e11d['model']=_[_0xff4f('0x28')](_0x4dd402,_0xff4f('0x26'));_0x28e11d[_0xff4f('0x2d')]=_['keys'](_0x5c5935[_0xff4f('0x2d')]);_0x28e11d['filters']=_[_0xff4f('0x2e')](_0x28e11d[_0xff4f('0x2f')],_0x28e11d[_0xff4f('0x2d')]);_0x56b218['attributes']=_['intersection'](_0x28e11d[_0xff4f('0x2f')],qs['fields'](_0x5c5935[_0xff4f('0x2d')]['fields']));_0x56b218['attributes']=_0x56b218[_0xff4f('0x30')]['length']?_0x56b218[_0xff4f('0x30')]:_0x28e11d[_0xff4f('0x2f')];if(!_0x5c5935[_0xff4f('0x2d')][_0xff4f('0x31')](_0xff4f('0x32'))){_0x56b218[_0xff4f('0x1b')]=qs['limit'](_0x5c5935[_0xff4f('0x2d')]['limit']);_0x56b218[_0xff4f('0x19')]=qs[_0xff4f('0x19')](_0x5c5935[_0xff4f('0x2d')][_0xff4f('0x19')]);}_0x56b218['order']=qs[_0xff4f('0x33')](_0x5c5935['query'][_0xff4f('0x33')]);_0x56b218[_0xff4f('0x34')]=qs[_0xff4f('0x35')](_[_0xff4f('0x36')](_0x5c5935[_0xff4f('0x2d')],_0x28e11d[_0xff4f('0x35')]),_0x4dd402);if(_0x5c5935['query'][_0xff4f('0x37')]){_0x56b218[_0xff4f('0x34')]=_[_0xff4f('0x38')](_0x56b218[_0xff4f('0x34')],{'$or':_[_0xff4f('0x28')](_0x4dd402,function(_0x554a12){if(_0x554a12[_0xff4f('0x2b')]!==_0xff4f('0x39')){var _0x404086={};_0x404086[_0x554a12['name']]={'$like':'%'+_0x5c5935['query']['filter']+'%'};return _0x404086;}})});}_0x56b218=_[_0xff4f('0x38')]({},_0x56b218,_0x5c5935['options']);var _0x292ad7={'where':_0x56b218[_0xff4f('0x34')]};return db[_0xff4f('0x3a')][_0xff4f('0x1c')](_0x292ad7)['then'](function(_0x349fa9){_0x11407e['count']=_0x349fa9;if(_0x5c5935[_0xff4f('0x2d')][_0xff4f('0x3b')]){_0x56b218[_0xff4f('0x3c')]=[{'all':!![]}];}return db[_0xff4f('0x3a')]['findAll'](_0x56b218);})[_0xff4f('0x21')](function(_0x5d0f24){_0x11407e[_0xff4f('0x3d')]=_0x5d0f24;return _0x11407e;})['then'](respondWithFilteredResult(_0x2047b6,_0x56b218))['catch'](handleError(_0x2047b6,null));};exports[_0xff4f('0x3e')]=function(_0x216d11,_0x1c903f){var _0xda3b12={'raw':!![],'where':{'id':_0x216d11[_0xff4f('0x3f')]['id']}},_0x5da70b={};_0x5da70b[_0xff4f('0x2f')]=_[_0xff4f('0x40')](db[_0xff4f('0x3a')]['rawAttributes']);_0x5da70b['query']=_[_0xff4f('0x40')](_0x216d11[_0xff4f('0x2d')]);_0x5da70b[_0xff4f('0x35')]=_[_0xff4f('0x2e')](_0x5da70b['model'],_0x5da70b[_0xff4f('0x2d')]);_0xda3b12[_0xff4f('0x30')]=_[_0xff4f('0x2e')](_0x5da70b[_0xff4f('0x2f')],qs[_0xff4f('0x41')](_0x216d11[_0xff4f('0x2d')]['fields']));_0xda3b12[_0xff4f('0x30')]=_0xda3b12[_0xff4f('0x30')][_0xff4f('0x42')]?_0xda3b12[_0xff4f('0x30')]:_0x5da70b[_0xff4f('0x2f')];if(_0x216d11[_0xff4f('0x2d')][_0xff4f('0x3b')]){_0xda3b12[_0xff4f('0x3c')]=[{'all':!![]}];}_0xda3b12=_[_0xff4f('0x38')]({},_0xda3b12,_0x216d11[_0xff4f('0x43')]);return db[_0xff4f('0x3a')][_0xff4f('0x44')](_0xda3b12)[_0xff4f('0x21')](handleEntityNotFound(_0x1c903f,null))[_0xff4f('0x21')](respondWithResult(_0x1c903f,null))[_0xff4f('0x45')](handleError(_0x1c903f,null));};exports[_0xff4f('0x46')]=function(_0xa96c89,_0x76b567){return db[_0xff4f('0x3a')][_0xff4f('0x46')](_0xa96c89[_0xff4f('0x47')],{})[_0xff4f('0x21')](function(_0x257294){var _0x9778bf=_0xa96c89['user'][_0xff4f('0x48')]({'plain':!![]});if(!_0x9778bf)throw new Error(_0xff4f('0x49'));if(_0x9778bf[_0xff4f('0x4a')]==='user'){var _0x219690=_0x257294[_0xff4f('0x48')]({'plain':!![]});var _0x157194=_0xff4f('0x22');return db[_0xff4f('0x4b')][_0xff4f('0x44')]({'where':{'name':_0x157194,'userProfileId':_0x9778bf['userProfileId']},'raw':!![]})['then'](function(_0x4d1001){if(_0x4d1001&&_0x4d1001[_0xff4f('0x4c')]===0x0){return db[_0xff4f('0x23')][_0xff4f('0x46')]({'name':_0x219690[_0xff4f('0x26')],'resourceId':_0x219690['id'],'type':_0x4d1001[_0xff4f('0x26')],'sectionId':_0x4d1001['id']},{})[_0xff4f('0x21')](function(){return _0x257294;});}else{return _0x257294;}})['catch'](function(_0x108d82){logger['error'](_0xff4f('0x4d'),_0x108d82);throw _0x108d82;});}return _0x257294;})[_0xff4f('0x21')](respondWithResult(_0x76b567,0xc9))[_0xff4f('0x45')](handleError(_0x76b567,null));};exports[_0xff4f('0x20')]=function(_0x40aa18,_0x4db425){if(_0x40aa18['body']['id']){delete _0x40aa18[_0xff4f('0x47')]['id'];}return db[_0xff4f('0x3a')][_0xff4f('0x44')]({'where':{'id':_0x40aa18[_0xff4f('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4db425,null))[_0xff4f('0x21')](saveUpdates(_0x40aa18['body'],null))[_0xff4f('0x21')](respondWithResult(_0x4db425,null))[_0xff4f('0x45')](handleError(_0x4db425,null));};exports[_0xff4f('0x24')]=function(_0x1bd2a7,_0x422012){return db[_0xff4f('0x3a')][_0xff4f('0x44')]({'where':{'id':_0x1bd2a7[_0xff4f('0x3f')]['id']}})[_0xff4f('0x21')](handleEntityNotFound(_0x422012,null))[_0xff4f('0x21')](removeEntity(_0x422012,null))['catch'](handleError(_0x422012,null));};
\ No newline at end of file
+var _0xc481=['get','Variables','UserProfileResource','name','send','map','Variable','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','update','then','destroy'];(function(_0x4e73d2,_0x5bd74c){var _0x454711=function(_0x376d3a){while(--_0x376d3a){_0x4e73d2['push'](_0x4e73d2['shift']());}};_0x454711(++_0x5bd74c);}(_0xc481,0x7b));var _0x1c48=function(_0xadd417,_0x207028){_0xadd417=_0xadd417-0x0;var _0x5c79e7=_0xc481[_0xadd417];return _0x5c79e7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1c48('0x0'));var jsonpatch=require(_0x1c48('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1c48('0x2'));var util=require(_0x1c48('0x3'));var path=require(_0x1c48('0x4'));var sox=require(_0x1c48('0x5'));var csv=require(_0x1c48('0x6'));var ejs=require(_0x1c48('0x7'));var fs=require('fs');var fs_extra=require(_0x1c48('0x8'));var _=require(_0x1c48('0x9'));var squel=require('squel');var crypto=require(_0x1c48('0xa'));var jsforce=require(_0x1c48('0xb'));var deskjs=require(_0x1c48('0xc'));var toCsv=require(_0x1c48('0x6'));var querystring=require(_0x1c48('0xd'));var Papa=require(_0x1c48('0xe'));var Redis=require(_0x1c48('0xf'));var authService=require(_0x1c48('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1c48('0x11'));var hardwareService=require(_0x1c48('0x12'));var logger=require(_0x1c48('0x13'))(_0x1c48('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1c48('0x15'));var db=require(_0x1c48('0x16'))['db'];function respondWithStatusCode(_0x443d2b,_0x40cf8f){_0x40cf8f=_0x40cf8f||0xcc;return function(_0x4bc7ad){if(_0x4bc7ad){return _0x443d2b[_0x1c48('0x17')](_0x40cf8f);}return _0x443d2b[_0x1c48('0x18')](_0x40cf8f)[_0x1c48('0x19')]();};}function respondWithResult(_0x449fd6,_0xc58b51){_0xc58b51=_0xc58b51||0xc8;return function(_0x38e003){if(_0x38e003){return _0x449fd6['status'](_0xc58b51)[_0x1c48('0x1a')](_0x38e003);}};}function respondWithFilteredResult(_0xa5a38a,_0x386681){return function(_0x30d6b4){if(_0x30d6b4){var _0x3ddb24=typeof _0x386681['offset']==='undefined'&&typeof _0x386681['limit']===_0x1c48('0x1b');var _0x5720cd=_0x30d6b4[_0x1c48('0x1c')];var _0x23d7fa=_0x3ddb24?0x0:_0x386681[_0x1c48('0x1d')];var _0x1c0661=_0x3ddb24?_0x30d6b4[_0x1c48('0x1c')]:_0x386681[_0x1c48('0x1d')]+_0x386681[_0x1c48('0x1e')];var _0x547974;if(_0x1c0661>=_0x5720cd){_0x1c0661=_0x5720cd;_0x547974=0xc8;}else{_0x547974=0xce;}_0xa5a38a[_0x1c48('0x18')](_0x547974);return _0xa5a38a[_0x1c48('0x1f')](_0x1c48('0x20'),_0x23d7fa+'-'+_0x1c0661+'/'+_0x5720cd)['json'](_0x30d6b4);}return null;};}function patchUpdates(_0x3b624){return function(_0x5567eb){try{jsonpatch[_0x1c48('0x21')](_0x5567eb,_0x3b624,!![]);}catch(_0x2c22e2){return BPromise['reject'](_0x2c22e2);}return _0x5567eb['save']();};}function saveUpdates(_0x523348,_0x56270d){return function(_0x4061a0){if(_0x4061a0){return _0x4061a0[_0x1c48('0x22')](_0x523348)[_0x1c48('0x23')](function(_0x52dbbd){return _0x52dbbd;});}return null;};}function removeEntity(_0x254d64,_0x3191a5){return function(_0x933236){if(_0x933236){return _0x933236[_0x1c48('0x24')]()[_0x1c48('0x23')](function(){var _0x5e27a8=_0x933236[_0x1c48('0x25')]({'plain':!![]});var _0xfd23d=_0x1c48('0x26');return db[_0x1c48('0x27')][_0x1c48('0x24')]({'where':{'type':_0xfd23d,'resourceId':_0x5e27a8['id']}})[_0x1c48('0x23')](function(){return _0x933236;});})['then'](function(){_0x254d64[_0x1c48('0x18')](0xcc)[_0x1c48('0x19')]();});}};}function handleEntityNotFound(_0x57ab49,_0x4e5b08){return function(_0x222913){if(!_0x222913){_0x57ab49[_0x1c48('0x17')](0x194);}return _0x222913;};}function handleError(_0x48fbf4,_0x19830c){_0x19830c=_0x19830c||0x1f4;return function(_0x4ac1ec){logger['error'](_0x4ac1ec['stack']);if(_0x4ac1ec[_0x1c48('0x28')]){delete _0x4ac1ec['name'];}_0x48fbf4[_0x1c48('0x18')](_0x19830c)[_0x1c48('0x29')](_0x4ac1ec);};}exports['index']=function(_0x56aa4e,_0xec69d3){var _0x50d3b9={},_0x22fa8e={},_0x122e9f={'count':0x0,'rows':[]};var _0x2f6cb7=_[_0x1c48('0x2a')](db[_0x1c48('0x2b')][_0x1c48('0x2c')],function(_0x3513ce){return{'name':_0x3513ce[_0x1c48('0x2d')],'type':_0x3513ce['type']['key']};});_0x22fa8e[_0x1c48('0x2e')]=_[_0x1c48('0x2a')](_0x2f6cb7,'name');_0x22fa8e['query']=_[_0x1c48('0x2f')](_0x56aa4e[_0x1c48('0x30')]);_0x22fa8e[_0x1c48('0x31')]=_[_0x1c48('0x32')](_0x22fa8e['model'],_0x22fa8e[_0x1c48('0x30')]);_0x50d3b9['attributes']=_['intersection'](_0x22fa8e[_0x1c48('0x2e')],qs[_0x1c48('0x33')](_0x56aa4e[_0x1c48('0x30')][_0x1c48('0x33')]));_0x50d3b9['attributes']=_0x50d3b9[_0x1c48('0x34')][_0x1c48('0x35')]?_0x50d3b9['attributes']:_0x22fa8e['model'];if(!_0x56aa4e['query'][_0x1c48('0x36')]('nolimit')){_0x50d3b9[_0x1c48('0x1e')]=qs[_0x1c48('0x1e')](_0x56aa4e['query']['limit']);_0x50d3b9[_0x1c48('0x1d')]=qs['offset'](_0x56aa4e[_0x1c48('0x30')][_0x1c48('0x1d')]);}_0x50d3b9['order']=qs[_0x1c48('0x37')](_0x56aa4e[_0x1c48('0x30')][_0x1c48('0x37')]);_0x50d3b9[_0x1c48('0x38')]=qs[_0x1c48('0x31')](_['pick'](_0x56aa4e['query'],_0x22fa8e[_0x1c48('0x31')]),_0x2f6cb7);if(_0x56aa4e[_0x1c48('0x30')][_0x1c48('0x39')]){_0x50d3b9[_0x1c48('0x38')]=_['merge'](_0x50d3b9[_0x1c48('0x38')],{'$or':_[_0x1c48('0x2a')](_0x2f6cb7,function(_0x31902b){if(_0x31902b[_0x1c48('0x3a')]!==_0x1c48('0x3b')){var _0x386b57={};_0x386b57[_0x31902b[_0x1c48('0x28')]]={'$like':'%'+_0x56aa4e[_0x1c48('0x30')][_0x1c48('0x39')]+'%'};return _0x386b57;}})});}_0x50d3b9=_[_0x1c48('0x3c')]({},_0x50d3b9,_0x56aa4e[_0x1c48('0x3d')]);var _0xaadab1={'where':_0x50d3b9[_0x1c48('0x38')]};return db[_0x1c48('0x2b')][_0x1c48('0x1c')](_0xaadab1)[_0x1c48('0x23')](function(_0x241acf){_0x122e9f['count']=_0x241acf;if(_0x56aa4e[_0x1c48('0x30')][_0x1c48('0x3e')]){_0x50d3b9['include']=[{'all':!![]}];}return db[_0x1c48('0x2b')][_0x1c48('0x3f')](_0x50d3b9);})['then'](function(_0x5f4c5b){_0x122e9f[_0x1c48('0x40')]=_0x5f4c5b;return _0x122e9f;})[_0x1c48('0x23')](respondWithFilteredResult(_0xec69d3,_0x50d3b9))[_0x1c48('0x41')](handleError(_0xec69d3,null));};exports[_0x1c48('0x42')]=function(_0x2db25c,_0x12609c){var _0x4a41c6={'raw':!![],'where':{'id':_0x2db25c[_0x1c48('0x43')]['id']}},_0x10abcd={};_0x10abcd[_0x1c48('0x2e')]=_[_0x1c48('0x2f')](db['Variable'][_0x1c48('0x2c')]);_0x10abcd[_0x1c48('0x30')]=_['keys'](_0x2db25c['query']);_0x10abcd[_0x1c48('0x31')]=_[_0x1c48('0x32')](_0x10abcd[_0x1c48('0x2e')],_0x10abcd['query']);_0x4a41c6[_0x1c48('0x34')]=_['intersection'](_0x10abcd[_0x1c48('0x2e')],qs[_0x1c48('0x33')](_0x2db25c[_0x1c48('0x30')][_0x1c48('0x33')]));_0x4a41c6[_0x1c48('0x34')]=_0x4a41c6[_0x1c48('0x34')][_0x1c48('0x35')]?_0x4a41c6['attributes']:_0x10abcd['model'];if(_0x2db25c[_0x1c48('0x30')][_0x1c48('0x3e')]){_0x4a41c6[_0x1c48('0x44')]=[{'all':!![]}];}_0x4a41c6=_[_0x1c48('0x3c')]({},_0x4a41c6,_0x2db25c['options']);return db['Variable']['find'](_0x4a41c6)['then'](handleEntityNotFound(_0x12609c,null))[_0x1c48('0x23')](respondWithResult(_0x12609c,null))['catch'](handleError(_0x12609c,null));};exports['create']=function(_0x4f7834,_0x17d5bf){return db[_0x1c48('0x2b')]['create'](_0x4f7834[_0x1c48('0x45')],{})[_0x1c48('0x23')](function(_0x48af60){var _0x22d3f2=_0x4f7834[_0x1c48('0x46')][_0x1c48('0x25')]({'plain':!![]});if(!_0x22d3f2)throw new Error(_0x1c48('0x47'));if(_0x22d3f2[_0x1c48('0x48')]===_0x1c48('0x46')){var _0x4756f6=_0x48af60['get']({'plain':!![]});var _0x84853c=_0x1c48('0x26');return db[_0x1c48('0x49')][_0x1c48('0x4a')]({'where':{'name':_0x84853c,'userProfileId':_0x22d3f2[_0x1c48('0x4b')]},'raw':!![]})[_0x1c48('0x23')](function(_0x24f7e2){if(_0x24f7e2&&_0x24f7e2[_0x1c48('0x4c')]===0x0){return db[_0x1c48('0x27')][_0x1c48('0x4d')]({'name':_0x4756f6[_0x1c48('0x28')],'resourceId':_0x4756f6['id'],'type':_0x24f7e2['name'],'sectionId':_0x24f7e2['id']},{})[_0x1c48('0x23')](function(){return _0x48af60;});}else{return _0x48af60;}})[_0x1c48('0x41')](function(_0x3877b0){logger[_0x1c48('0x4e')](_0x1c48('0x4f'),_0x3877b0);throw _0x3877b0;});}return _0x48af60;})['then'](respondWithResult(_0x17d5bf,0xc9))['catch'](handleError(_0x17d5bf,null));};exports[_0x1c48('0x22')]=function(_0x5cb9b0,_0x5dd91e){if(_0x5cb9b0[_0x1c48('0x45')]['id']){delete _0x5cb9b0[_0x1c48('0x45')]['id'];}return db[_0x1c48('0x2b')][_0x1c48('0x4a')]({'where':{'id':_0x5cb9b0[_0x1c48('0x43')]['id']}})[_0x1c48('0x23')](handleEntityNotFound(_0x5dd91e,null))[_0x1c48('0x23')](saveUpdates(_0x5cb9b0[_0x1c48('0x45')],null))['then'](respondWithResult(_0x5dd91e,null))[_0x1c48('0x41')](handleError(_0x5dd91e,null));};exports[_0x1c48('0x24')]=function(_0x3cc230,_0x3a9987){return db[_0x1c48('0x2b')]['find']({'where':{'id':_0x3cc230[_0x1c48('0x43')]['id']}})['then'](handleEntityNotFound(_0x3a9987,null))[_0x1c48('0x23')](removeEntity(_0x3a9987,null))['catch'](handleError(_0x3a9987,null));};
\ No newline at end of file
index c679554..83ab33f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6471=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Variable','tools_variables'];(function(_0x3d2453,_0x5c7e42){var _0xeb32aa=function(_0x5ade60){while(--_0x5ade60){_0x3d2453['push'](_0x3d2453['shift']());}};_0xeb32aa(++_0x5c7e42);}(_0x6471,0x82));var _0x1647=function(_0x44353d,_0x267761){_0x44353d=_0x44353d-0x0;var _0x93dd90=_0x6471[_0x44353d];return _0x93dd90;};'use strict';var _=require(_0x1647('0x0'));var util=require(_0x1647('0x1'));var logger=require(_0x1647('0x2'))('api');var moment=require(_0x1647('0x3'));var BPromise=require(_0x1647('0x4'));var rp=require(_0x1647('0x5'));var fs=require('fs');var path=require(_0x1647('0x6'));var rimraf=require(_0x1647('0x7'));var config=require(_0x1647('0x8'));var attributes=require('./variable.attributes');module[_0x1647('0x9')]=function(_0x33142a,_0x574d1c){return _0x33142a[_0x1647('0xa')](_0x1647('0xb'),attributes,{'tableName':_0x1647('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f77=['bluebird','path','rimraf','../../config/environment','./variable.attributes','exports','define','tools_variables','lodash','api','moment'];(function(_0x52cc00,_0x38520b){var _0x23cbad=function(_0x34affd){while(--_0x34affd){_0x52cc00['push'](_0x52cc00['shift']());}};_0x23cbad(++_0x38520b);}(_0x8f77,0x131));var _0x78f7=function(_0x417cdb,_0xfcc7a9){_0x417cdb=_0x417cdb-0x0;var _0x545d67=_0x8f77[_0x417cdb];return _0x545d67;};'use strict';var _=require(_0x78f7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x78f7('0x1'));var moment=require(_0x78f7('0x2'));var BPromise=require(_0x78f7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x78f7('0x4'));var rimraf=require(_0x78f7('0x5'));var config=require(_0x78f7('0x6'));var attributes=require(_0x78f7('0x7'));module[_0x78f7('0x8')]=function(_0x883647,_0x2f2b6f){return _0x883647[_0x78f7('0x9')]('Variable',attributes,{'tableName':_0x78f7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5dc6123..211f43d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['stringify','error','code','message','result','catch','Variable','find','options','where','attributes','include','map','model','info','ShowVariable','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x4c6470,_0x2ca7e3){var _0x33a1a6=function(_0x10f494){while(--_0x10f494){_0x4c6470['push'](_0x4c6470['shift']());}};_0x33a1a6(++_0x2ca7e3);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0xc18ce1,_0x329f9b){_0xc18ce1=_0xc18ce1-0x0;var _0x12ea8b=_0x7fbe[_0xc18ce1];return _0x12ea8b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}exports['ShowVariable']=function(_0x293a47){var _0x546463=this;return new Promise(function(_0x1e77fd,_0x4708f7){return db[_0xe7fb('0x18')][_0xe7fb('0x19')]({'raw':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x293a47[_0xe7fb('0x1a')]?_0x293a47['options'][_0xe7fb('0x1b')]||null:null,'attributes':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1c')]||null:null,'include':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1d')]?_[_0xe7fb('0x1e')](_0x293a47['options'][_0xe7fb('0x1d')],function(_0x469ead){return{'model':db[_0x469ead['model']],'as':_0x469ead['as'],'attributes':_0x469ead['attributes'],'include':_0x469ead['include']?_[_0xe7fb('0x1e')](_0x469ead['include'],function(_0x49b219){return{'model':db[_0x49b219[_0xe7fb('0x1f')]],'as':_0x49b219['as'],'attributes':_0x49b219[_0xe7fb('0x1c')],'include':_0x49b219[_0xe7fb('0x1d')]?_['map'](_0x49b219[_0xe7fb('0x1d')],function(_0x2b69c4){return{'model':db[_0x2b69c4[_0xe7fb('0x1f')]],'as':_0x2b69c4['as'],'attributes':_0x2b69c4[_0xe7fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7fb('0xd')](function(_0x16237a){logger[_0xe7fb('0x20')]('ShowVariable',_0x293a47);logger['debug'](_0xe7fb('0x21'),_0x293a47,JSON[_0xe7fb('0x12')](_0x16237a));_0x1e77fd(_0x16237a);})[_0xe7fb('0x17')](function(_0x4fd290){logger[_0xe7fb('0x13')](_0xe7fb('0x21'),_0x4fd290[_0xe7fb('0x15')],_0x293a47);_0x4708f7(_0x546463[_0xe7fb('0x13')](0x1f4,_0x4fd290[_0xe7fb('0x15')]));});});};
\ No newline at end of file
+var _0x1cb9=['include','map','model','then','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowVariable','Variable','options','attributes'];(function(_0x16954c,_0x2f3051){var _0x93e220=function(_0x539dd1){while(--_0x539dd1){_0x16954c['push'](_0x16954c['shift']());}};_0x93e220(++_0x2f3051);}(_0x1cb9,0x14e));var _0x91cb=function(_0x794bb9,_0x9974cc){_0x794bb9=_0x794bb9-0x0;var _0x27dee3=_0x1cb9[_0x794bb9];return _0x27dee3;};'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')]('Variable,\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);});});}exports[_0x91cb('0x16')]=function(_0x1cd34b){var _0xcd1a78=this;return new Promise(function(_0x5cc1c3,_0x3fba4f){return db[_0x91cb('0x17')]['find']({'raw':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b['options']['raw']===undefined?!![]:![]:!![],'where':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')]['where']||null:null,'attributes':_0x1cd34b['options']?_0x1cd34b['options'][_0x91cb('0x19')]||null:null,'include':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')]?_['map'](_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')],function(_0x1fa837){return{'model':db[_0x1fa837['model']],'as':_0x1fa837['as'],'attributes':_0x1fa837[_0x91cb('0x19')],'include':_0x1fa837[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x1fa837[_0x91cb('0x1a')],function(_0x3ca500){return{'model':db[_0x3ca500[_0x91cb('0x1c')]],'as':_0x3ca500['as'],'attributes':_0x3ca500[_0x91cb('0x19')],'include':_0x3ca500[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x3ca500['include'],function(_0x59bf3a){return{'model':db[_0x59bf3a[_0x91cb('0x1c')]],'as':_0x59bf3a['as'],'attributes':_0x59bf3a['attributes']};}):[]};}):[]};}):[]:[]})[_0x91cb('0x1d')](function(_0x34d372){logger[_0x91cb('0xc')]('ShowVariable',_0x1cd34b);logger[_0x91cb('0xf')]('ShowVariable',_0x1cd34b,JSON[_0x91cb('0x11')](_0x34d372));_0x5cc1c3(_0x34d372);})[_0x91cb('0x15')](function(_0x3b3ee6){logger[_0x91cb('0x12')](_0x91cb('0x16'),_0x3b3ee6['message'],_0x1cd34b);_0x3fba4f(_0xcd1a78[_0x91cb('0x12')](0x1f4,_0x3b3ee6['message']));});});};
\ No newline at end of file
index 7b9de61..db22f1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaff9=['./version.controller','get','index','/fetch','isAuthenticated','canUpdate','/reset','reset','/pull','/restart','express','Router','../../components/auth/service'];(function(_0x5d6e31,_0x54ec42){var _0x5e31eb=function(_0x480b85){while(--_0x480b85){_0x5d6e31['push'](_0x5d6e31['shift']());}};_0x5e31eb(++_0x54ec42);}(_0xaff9,0xc0));var _0x9aff=function(_0x418f6d,_0x3b57a8){_0x418f6d=_0x418f6d-0x0;var _0x3a63e7=_0xaff9[_0x418f6d];return _0x3a63e7;};'use strict';var express=require(_0x9aff('0x0'));var router=express[_0x9aff('0x1')]();var auth=require(_0x9aff('0x2'));var controller=require(_0x9aff('0x3'));router[_0x9aff('0x4')]('/',controller[_0x9aff('0x5')]);router[_0x9aff('0x4')](_0x9aff('0x6'),auth[_0x9aff('0x7')](),auth[_0x9aff('0x8')](),controller['fetch']);router[_0x9aff('0x4')](_0x9aff('0x9'),auth[_0x9aff('0x7')](),auth[_0x9aff('0x8')](),controller[_0x9aff('0xa')]);router[_0x9aff('0x4')](_0x9aff('0xb'),auth[_0x9aff('0x7')](),auth[_0x9aff('0x8')](),controller['pull']);router[_0x9aff('0x4')](_0x9aff('0xc'),auth[_0x9aff('0x7')](),controller['restart']);router[_0x9aff('0x4')]('/migrations',controller['migrations']);module['exports']=router;
\ No newline at end of file
+var _0xa031=['./version.controller','get','/fetch','isAuthenticated','canUpdate','fetch','pull','/restart','migrations','exports','express','Router','../../components/auth/service'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xa031,0x72));var _0x1a03=function(_0x5151be,_0x49f676){_0x5151be=_0x5151be-0x0;var _0x219a6b=_0xa031[_0x5151be];return _0x219a6b;};'use strict';var express=require(_0x1a03('0x0'));var router=express[_0x1a03('0x1')]();var auth=require(_0x1a03('0x2'));var controller=require(_0x1a03('0x3'));router[_0x1a03('0x4')]('/',controller['index']);router[_0x1a03('0x4')](_0x1a03('0x5'),auth[_0x1a03('0x6')](),auth[_0x1a03('0x7')](),controller[_0x1a03('0x8')]);router[_0x1a03('0x4')]('/reset',auth[_0x1a03('0x6')](),auth[_0x1a03('0x7')](),controller['reset']);router[_0x1a03('0x4')]('/pull',auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x1a03('0x9')]);router[_0x1a03('0x4')](_0x1a03('0xa'),auth[_0x1a03('0x6')](),controller['restart']);router[_0x1a03('0x4')]('/migrations',controller[_0x1a03('0xb')]);module[_0x1a03('0xc')]=router;
\ No newline at end of file
index 9ab3ea8..5cd8624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab4=['server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','constructor','Database\x20migrated\x20successfully\x20from\x20version\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','pkginfo','child_process','../../mysqldb','../../config/pm2','update','exports','version','query','latest','2.0.0','status','json','fetch','origin','master','error','info','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','npm\x20install\x20--production','restart','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','root'];(function(_0x8c331d,_0x18bf0f){var _0x39877b=function(_0x135006){while(--_0x135006){_0x8c331d['push'](_0x8c331d['shift']());}};_0x39877b(++_0x18bf0f);}(_0x9ab4,0x1b5));var _0x49ab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ab4[_0x3dd15e];return _0x231fd0;};'use strict';var Umzug=require(_0x49ab('0x0'));var path=require('path');var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x49ab('0x1'))(module,'version');var compareVersions=require('compare-versions');var exec=require(_0x49ab('0x2'))['exec'];var db=require(_0x49ab('0x3'))['db'];var config=require('../../config/environment');var pm2=require(_0x49ab('0x4'));var logger=require('../../config/logger')(_0x49ab('0x5'));var git=require('simple-git')(config['root']);exports['index']=function(_0x406c87,_0x4c1493){var _0x48b3a6={'current':module[_0x49ab('0x6')][_0x49ab('0x7')],'phonebar':0x2};if(_0x406c87[_0x49ab('0x8')]&&_0x406c87[_0x49ab('0x8')][_0x49ab('0x9')]){return git['fetch']()['tags'](function(_0x259b31,_0x1f1de4){_0x48b3a6[_0x49ab('0x9')]=(_0x259b31?module[_0x49ab('0x6')]['version']:_0x1f1de4[_0x49ab('0x9')])||_0x49ab('0xa');return _0x4c1493[_0x49ab('0xb')](0xc8)['json'](_0x48b3a6);});}else{return _0x4c1493[_0x49ab('0xb')](0xc8)[_0x49ab('0xc')](_0x48b3a6);}};exports[_0x49ab('0xd')]=function(_0x13cd37,_0x4b46e8){return git[_0x49ab('0xd')]([_0x49ab('0xe'),_0x49ab('0xf')],function(_0x2e2883){if(_0x2e2883){logger[_0x49ab('0x10')](_0x2e2883);return _0x4b46e8[_0x49ab('0xb')](0x1f4)[_0x49ab('0xc')](_0x2e2883);}logger[_0x49ab('0x11')]('git\x20fetch');return _0x4b46e8[_0x49ab('0xb')](0xc8)[_0x49ab('0xc')]({'output':_0x49ab('0x12')});});};exports['reset']=function(_0xa63ef1,_0x45548e){return git[_0x49ab('0x13')]([_0x49ab('0x14'),_0x49ab('0x15')],function(_0x1199fe){if(_0x1199fe){logger[_0x49ab('0x10')](_0x1199fe);return _0x45548e[_0x49ab('0xb')](0x1f4)[_0x49ab('0xc')](_0x1199fe);}logger[_0x49ab('0x11')](_0x49ab('0x16'));return _0x45548e[_0x49ab('0xb')](0xc8)[_0x49ab('0xc')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x27d1a0,_0x208e59){exec(_0x49ab('0x17'),function(_0xfd3a99,_0x3247c7,_0x3e3b91){logger[_0x49ab('0x11')](_0x3247c7);logger['info'](_0x3e3b91);if(_0xfd3a99){logger[_0x49ab('0x10')](_0xfd3a99);return _0x208e59['status'](0x1f4)[_0x49ab('0xc')](_0xfd3a99);}return _0x208e59['status'](0xc8)[_0x49ab('0xc')]({'output':_0x3247c7});});};exports[_0x49ab('0x18')]=function(_0x398bc5,_0x5e5285){return pm2[_0x49ab('0x18')]('motion2')[_0x49ab('0x19')](function(_0x3d9ab0){logger[_0x49ab('0x11')](_0x49ab('0x1a'),_0x3d9ab0);return _0x5e5285['status'](0xc8)['json']({'output':_0x49ab('0x1b')});})[_0x49ab('0x1c')](function(_0x1010b0){logger[_0x49ab('0x10')](_0x1010b0);return _0x5e5285['status'](0x1f4)['json'](_0x1010b0);});};exports[_0x49ab('0x1d')]=function(_0x270d97,_0x5ea27f){var _0x24de4a=fs[_0x49ab('0x1e')](path[_0x49ab('0x1f')](config[_0x49ab('0x20')],_0x49ab('0x21'),_0x49ab('0x1d')));var _0x4a810e=[];for(var _0xec3e24=0x0;_0xec3e24<_0x24de4a[_0x49ab('0x22')];_0xec3e24++){var _0x64f4d4=_0x24de4a[_0xec3e24][_0x49ab('0x23')](_0x49ab('0x24'),'');if(compareVersions(module[_0x49ab('0x6')][_0x49ab('0x7')],_0x64f4d4)===-0x1){_0x4a810e[_0x49ab('0x25')](_0x64f4d4);}}if(_0x4a810e[_0x49ab('0x22')]){var _0x3db1ee=_0x4a810e[_0x49ab('0x26')](compareVersions);var _0x43d6f2=new Umzug({'storage':_0x49ab('0x27'),'storageOptions':{'model':db[_0x49ab('0x28')],'modelName':_0x49ab('0x28'),'columnName':_0x49ab('0x7')},'migrations':{'params':[db[_0x49ab('0x27')][_0x49ab('0x29')](),db[_0x49ab('0x27')][_0x49ab('0x2a')],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[_0x49ab('0x1f')](config[_0x49ab('0x20')],'server',_0x49ab('0x1d')),'pattern':/\.js$/}});_0x43d6f2['up']({'migrations':_['map'](_0x3db1ee,function(_0x24a2c5){return _0x24a2c5+'.js';})})[_0x49ab('0x19')](function(){return _0x5ea27f[_0x49ab('0xb')](0xc8)[_0x49ab('0xc')]({'output':_0x49ab('0x2b')+module['exports'][_0x49ab('0x7')]+'\x20to\x20'+_[_0x49ab('0x2c')](_0x3db1ee),'migrations':_[_0x49ab('0x1f')](_0x3db1ee)});})[_0x49ab('0x1c')](function(_0x4bff25){if(_0x4bff25 instanceof db['sequelize'][_0x49ab('0x2d')]){return _0x5ea27f[_0x49ab('0xb')](0xc8)[_0x49ab('0xc')]({'output':_0x49ab('0x2e')});}else{return _0x5ea27f[_0x49ab('0xb')](0x1f4)['json'](_0x4bff25);}});}else{return _0x5ea27f[_0x49ab('0xb')](0xc8)[_0x49ab('0xc')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0x0b57=['then','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','.js','push','length','sequelize','Migration','constructor','join','map','Database\x20migrated\x20successfully\x20from\x20version\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/pm2','simple-git','root','index','exports','query','fetch','tags','latest','2.0.0','status','json','origin','master','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','error','info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2'];(function(_0x602ca8,_0x568e82){var _0x26e8ab=function(_0x3fb700){while(--_0x3fb700){_0x602ca8['push'](_0x602ca8['shift']());}};_0x26e8ab(++_0x568e82);}(_0x0b57,0x10f));var _0x70b5=function(_0x221230,_0x5ed5cc){_0x221230=_0x221230-0x0;var _0xbdf131=_0x0b57[_0x221230];return _0xbdf131;};'use strict';var Umzug=require(_0x70b5('0x0'));var path=require(_0x70b5('0x1'));var fs=require('fs');var _=require(_0x70b5('0x2'));var pkginfo=require(_0x70b5('0x3'))(module,_0x70b5('0x4'));var compareVersions=require(_0x70b5('0x5'));var exec=require(_0x70b5('0x6'))[_0x70b5('0x7')];var db=require(_0x70b5('0x8'))['db'];var config=require('../../config/environment');var pm2=require(_0x70b5('0x9'));var logger=require('../../config/logger')('update');var git=require(_0x70b5('0xa'))(config[_0x70b5('0xb')]);exports[_0x70b5('0xc')]=function(_0x11f3c1,_0x1367d5){var _0x26376f={'current':module[_0x70b5('0xd')][_0x70b5('0x4')],'phonebar':0x2};if(_0x11f3c1[_0x70b5('0xe')]&&_0x11f3c1[_0x70b5('0xe')]['latest']){return git[_0x70b5('0xf')]()[_0x70b5('0x10')](function(_0x583109,_0x21ee04){_0x26376f[_0x70b5('0x11')]=(_0x583109?module['exports'][_0x70b5('0x4')]:_0x21ee04[_0x70b5('0x11')])||_0x70b5('0x12');return _0x1367d5[_0x70b5('0x13')](0xc8)[_0x70b5('0x14')](_0x26376f);});}else{return _0x1367d5[_0x70b5('0x13')](0xc8)['json'](_0x26376f);}};exports[_0x70b5('0xf')]=function(_0x3628ac,_0x3bf7f0){return git[_0x70b5('0xf')]([_0x70b5('0x15'),_0x70b5('0x16')],function(_0x52c3a4){if(_0x52c3a4){logger['error'](_0x52c3a4);return _0x3bf7f0['status'](0x1f4)[_0x70b5('0x14')](_0x52c3a4);}logger['info']('git\x20fetch');return _0x3bf7f0[_0x70b5('0x13')](0xc8)[_0x70b5('0x14')]({'output':_0x70b5('0x17')});});};exports[_0x70b5('0x18')]=function(_0x3771bd,_0x2ad781){return git[_0x70b5('0x18')]([_0x70b5('0x19'),_0x70b5('0x1a')],function(_0x38b245){if(_0x38b245){logger[_0x70b5('0x1b')](_0x38b245);return _0x2ad781['status'](0x1f4)[_0x70b5('0x14')](_0x38b245);}logger[_0x70b5('0x1c')](_0x70b5('0x1d'));return _0x2ad781[_0x70b5('0x13')](0xc8)[_0x70b5('0x14')]({'output':_0x70b5('0x1e')});});};exports[_0x70b5('0x1f')]=function(_0x3beea0,_0x5a351f){exec(_0x70b5('0x20'),function(_0x46a77b,_0x3185f2,_0x45a346){logger[_0x70b5('0x1c')](_0x3185f2);logger[_0x70b5('0x1c')](_0x45a346);if(_0x46a77b){logger[_0x70b5('0x1b')](_0x46a77b);return _0x5a351f['status'](0x1f4)[_0x70b5('0x14')](_0x46a77b);}return _0x5a351f[_0x70b5('0x13')](0xc8)[_0x70b5('0x14')]({'output':_0x3185f2});});};exports[_0x70b5('0x21')]=function(_0x13c137,_0xd29507){return pm2[_0x70b5('0x21')](_0x70b5('0x22'))[_0x70b5('0x23')](function(_0x4df4b2){logger[_0x70b5('0x1c')]('pm2\x20restart\x20motion\x20%s',_0x4df4b2);return _0xd29507['status'](0xc8)[_0x70b5('0x14')]({'output':_0x70b5('0x24')});})[_0x70b5('0x25')](function(_0xb0dc2){logger['error'](_0xb0dc2);return _0xd29507[_0x70b5('0x13')](0x1f4)[_0x70b5('0x14')](_0xb0dc2);});};exports[_0x70b5('0x26')]=function(_0x4a6482,_0x7685b5){var _0x1a55ce=fs['readdirSync'](path['join'](config['root'],'server','migrations'));var _0x8bf09=[];for(var _0x4155f6=0x0;_0x4155f6<_0x1a55ce['length'];_0x4155f6++){var _0x42b05e=_0x1a55ce[_0x4155f6]['replace'](_0x70b5('0x27'),'');if(compareVersions(module[_0x70b5('0xd')][_0x70b5('0x4')],_0x42b05e)===-0x1){_0x8bf09[_0x70b5('0x28')](_0x42b05e);}}if(_0x8bf09[_0x70b5('0x29')]){var _0x370ce1=_0x8bf09['sort'](compareVersions);var _0x5d92d9=new Umzug({'storage':_0x70b5('0x2a'),'storageOptions':{'model':db[_0x70b5('0x2b')],'modelName':_0x70b5('0x2b'),'columnName':_0x70b5('0x4')},'migrations':{'params':[db['sequelize']['getQueryInterface'](),db['sequelize'][_0x70b5('0x2c')],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[_0x70b5('0x2d')](config[_0x70b5('0xb')],'server',_0x70b5('0x26')),'pattern':/\.js$/}});_0x5d92d9['up']({'migrations':_[_0x70b5('0x2e')](_0x370ce1,function(_0x43ab7e){return _0x43ab7e+_0x70b5('0x27');})})[_0x70b5('0x23')](function(){return _0x7685b5[_0x70b5('0x13')](0xc8)[_0x70b5('0x14')]({'output':_0x70b5('0x2f')+module[_0x70b5('0xd')]['version']+'\x20to\x20'+_[_0x70b5('0x30')](_0x370ce1),'migrations':_['join'](_0x370ce1)});})['catch'](function(_0x47b62b){if(_0x47b62b instanceof db[_0x70b5('0x2a')][_0x70b5('0x31')]){return _0x7685b5[_0x70b5('0x13')](0xc8)['json']({'output':'Database\x20already\x20up-to-date'});}else{return _0x7685b5[_0x70b5('0x13')](0x1f4)[_0x70b5('0x14')](_0x47b62b);}});}else{return _0x7685b5[_0x70b5('0x13')](0xc8)['json']({'output':_0x70b5('0x32')});}};
\ No newline at end of file
index 710a3d0..44f5250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9f0=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','index','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','multer','util','path','express','Router'];(function(_0x92a26e,_0x464aed){var _0x3b1456=function(_0x736783){while(--_0x736783){_0x92a26e['push'](_0x92a26e['shift']());}};_0x3b1456(++_0x464aed);}(_0xe9f0,0xed));var _0x0e9f=function(_0xc73e68,_0x1da459){_0xc73e68=_0xc73e68-0x0;var _0x5cd0ef=_0xe9f0[_0xc73e68];return _0x5cd0ef;};'use strict';var multer=require(_0x0e9f('0x0'));var util=require(_0x0e9f('0x1'));var path=require(_0x0e9f('0x2'));var timeout=require('connect-timeout');var express=require(_0x0e9f('0x3'));var router=express[_0x0e9f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0e9f('0x5'));var interaction=require(_0x0e9f('0x6'));var config=require(_0x0e9f('0x7'));var controller=require(_0x0e9f('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x0e9f('0x9')]);router[_0x0e9f('0xa')](_0x0e9f('0xb'),auth[_0x0e9f('0xc')](),controller[_0x0e9f('0xd')]);router[_0x0e9f('0xa')]('/:id',auth[_0x0e9f('0xc')](),controller[_0x0e9f('0xe')]);router[_0x0e9f('0xf')]('/',auth[_0x0e9f('0xc')](),controller[_0x0e9f('0x10')]);router[_0x0e9f('0x11')](_0x0e9f('0x12'),auth[_0x0e9f('0xc')](),controller[_0x0e9f('0x13')]);router[_0x0e9f('0x14')](_0x0e9f('0x12'),auth['isAuthenticated'](),controller[_0x0e9f('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x775d=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','index','/describe','isAuthenticated','/:id','show','create','put','update','delete','exports','util'];(function(_0x2460f5,_0x5f0a9c){var _0x25a599=function(_0x4543e0){while(--_0x4543e0){_0x2460f5['push'](_0x2460f5['shift']());}};_0x25a599(++_0x5f0a9c);}(_0x775d,0x18e));var _0xd775=function(_0x18aa78,_0x2ec095){_0x18aa78=_0x18aa78-0x0;var _0xb33748=_0x775d[_0x18aa78];return _0xb33748;};'use strict';var multer=require('multer');var util=require(_0xd775('0x0'));var path=require('path');var timeout=require(_0xd775('0x1'));var express=require(_0xd775('0x2'));var router=express[_0xd775('0x3')]();var fs_extra=require(_0xd775('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd775('0x5'));var config=require(_0xd775('0x6'));var controller=require(_0xd775('0x7'));router[_0xd775('0x8')]('/',auth['isAuthenticated'](),controller[_0xd775('0x9')]);router[_0xd775('0x8')](_0xd775('0xa'),auth[_0xd775('0xb')](),controller['describe']);router[_0xd775('0x8')](_0xd775('0xc'),auth[_0xd775('0xb')](),controller[_0xd775('0xd')]);router['post']('/',auth[_0xd775('0xb')](),controller[_0xd775('0xe')]);router[_0xd775('0xf')](_0xd775('0xc'),auth[_0xd775('0xb')](),controller[_0xd775('0x10')]);router[_0xd775('0x11')](_0xd775('0xc'),auth[_0xd775('0xb')](),controller['destroy']);module[_0xd775('0x12')]=router;
\ No newline at end of file
index b21854c..40b548e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['sequelize','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0xef0f,0x168));var _0xfef0=function(_0x27f6eb,_0x51c235){_0x27f6eb=_0x27f6eb-0x0;var _0x1482f6=_0xef0f[_0x27f6eb];return _0x1482f6;};'use strict';var Sequelize=require(_0xfef0('0x0'));module['exports']={'type':{'type':Sequelize[_0xfef0('0x1')]},'uniqueid':{'type':Sequelize[_0xfef0('0x1')]},'calleridnum':{'type':Sequelize[_0xfef0('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xfef0('0x1')]},'interface':{'type':Sequelize[_0xfef0('0x1')]},'membername':{'type':Sequelize[_0xfef0('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xfef0('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xfef0('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xfef0('0x2')]},'agentdumpAt':{'type':Sequelize[_0xfef0('0x2')]},'holdtime':{'type':Sequelize[_0xfef0('0x3')]},'agentcomplete':{'type':Sequelize[_0xfef0('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xfef0('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xfef0('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xfef0('0x3')]},'reason':{'type':Sequelize[_0xfef0('0x1')]},'lastevent':{'type':Sequelize[_0xfef0('0x1')]},'channel':{'type':Sequelize[_0xfef0('0x1')]},'channelstate':{'type':Sequelize[_0xfef0('0x3')]},'channelstatedesc':{'type':Sequelize[_0xfef0('0x1')]},'connectedlinenum':{'type':Sequelize[_0xfef0('0x1')]},'connectedlinename':{'type':Sequelize[_0xfef0('0x1')]},'language':{'type':Sequelize[_0xfef0('0x1')]},'accountcode':{'type':Sequelize[_0xfef0('0x1')]},'context':{'type':Sequelize[_0xfef0('0x1')]},'exten':{'type':Sequelize[_0xfef0('0x1')]},'priority':{'type':Sequelize[_0xfef0('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xfef0('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xfef0('0x1')]},'destcalleridnum':{'type':Sequelize[_0xfef0('0x1')]},'destcalleridname':{'type':Sequelize[_0xfef0('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xfef0('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xfef0('0x1')]},'destlanguage':{'type':Sequelize[_0xfef0('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xfef0('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfef0('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xfef0('0x1')]},'transfer':{'type':Sequelize[_0xfef0('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xfef0('0x1')],'comment':_0xfef0('0x5')},'transferexten':{'type':Sequelize[_0xfef0('0x1')]},'transferuniqueid':{'type':Sequelize[_0xfef0('0x1')]},'agententerreason':{'type':Sequelize[_0xfef0('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb4f8=['STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','exports'];(function(_0x15f60d,_0x48f472){var _0x1e5a46=function(_0x1d63f7){while(--_0x1d63f7){_0x15f60d['push'](_0x15f60d['shift']());}};_0x1e5a46(++_0x48f472);}(_0xb4f8,0x83));var _0x8b4f=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xb4f8[_0x13d07a];return _0x5ee0ee;};'use strict';var Sequelize=require('sequelize');module[_0x8b4f('0x0')]={'type':{'type':Sequelize[_0x8b4f('0x1')]},'uniqueid':{'type':Sequelize[_0x8b4f('0x1')]},'calleridnum':{'type':Sequelize[_0x8b4f('0x1')]},'calleridname':{'type':Sequelize[_0x8b4f('0x1')]},'queue':{'type':Sequelize[_0x8b4f('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x8b4f('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x8b4f('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x8b4f('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x8b4f('0x2')]},'agentdumpAt':{'type':Sequelize[_0x8b4f('0x2')]},'holdtime':{'type':Sequelize[_0x8b4f('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x8b4f('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x8b4f('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x8b4f('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x8b4f('0x3')]},'reason':{'type':Sequelize[_0x8b4f('0x1')]},'lastevent':{'type':Sequelize[_0x8b4f('0x1')]},'channel':{'type':Sequelize[_0x8b4f('0x1')]},'channelstate':{'type':Sequelize[_0x8b4f('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x8b4f('0x1')]},'connectedlinename':{'type':Sequelize[_0x8b4f('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8b4f('0x1')]},'context':{'type':Sequelize[_0x8b4f('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x8b4f('0x1')]},'destchannel':{'type':Sequelize[_0x8b4f('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x8b4f('0x1')]},'destcalleridnum':{'type':Sequelize[_0x8b4f('0x1')]},'destcalleridname':{'type':Sequelize[_0x8b4f('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x8b4f('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x8b4f('0x1')]},'destaccountcode':{'type':Sequelize[_0x8b4f('0x1')]},'destcontext':{'type':Sequelize[_0x8b4f('0x1')]},'destexten':{'type':Sequelize[_0x8b4f('0x1')]},'destpriority':{'type':Sequelize[_0x8b4f('0x1')]},'destuniqueid':{'type':Sequelize[_0x8b4f('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x8b4f('0x1')]},'transfer':{'type':Sequelize[_0x8b4f('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x8b4f('0x1')],'comment':_0x8b4f('0x5')},'transferexten':{'type':Sequelize[_0x8b4f('0x1')]},'transferuniqueid':{'type':Sequelize[_0x8b4f('0x1')]},'agententerreason':{'type':Sequelize[_0x8b4f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 345a794..0362982 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(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'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(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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 4e8cf5b..823b816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c09=['./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x12ae73,_0x49975f){var _0x5ea6ea=function(_0x4a156d){while(--_0x4a156d){_0x12ae73['push'](_0x12ae73['shift']());}};_0x5ea6ea(++_0x49975f);}(_0x7c09,0x102));var _0x97c0=function(_0xc381d8,_0x9ca56c){_0xc381d8=_0xc381d8-0x0;var _0x15f896=_0x7c09[_0xc381d8];return _0x15f896;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var logger=require(_0x97c0('0x1'))('api');var moment=require(_0x97c0('0x2'));var BPromise=require(_0x97c0('0x3'));var rp=require(_0x97c0('0x4'));var fs=require('fs');var path=require(_0x97c0('0x5'));var rimraf=require(_0x97c0('0x6'));var config=require(_0x97c0('0x7'));var attributes=require(_0x97c0('0x8'));module['exports']=function(_0x4b2f81,_0x590368){return _0x4b2f81[_0x97c0('0x9')](_0x97c0('0xa'),attributes,{'tableName':_0x97c0('0xb'),'paranoid':![],'indexes':[{'fields':[_0x97c0('0xc'),_0x97c0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6dac=['rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x35e5ac,_0x4efdb6){var _0x2e57d0=function(_0x4cd514){while(--_0x4cd514){_0x35e5ac['push'](_0x35e5ac['shift']());}};_0x2e57d0(++_0x4efdb6);}(_0x6dac,0x16e));var _0xc6da=function(_0x142dda,_0x965f5){_0x142dda=_0x142dda-0x0;var _0x5e1c76=_0x6dac[_0x142dda];return _0x5e1c76;};'use strict';var _=require(_0xc6da('0x0'));var util=require(_0xc6da('0x1'));var logger=require(_0xc6da('0x2'))(_0xc6da('0x3'));var moment=require(_0xc6da('0x4'));var BPromise=require(_0xc6da('0x5'));var rp=require(_0xc6da('0x6'));var fs=require('fs');var path=require(_0xc6da('0x7'));var rimraf=require(_0xc6da('0x8'));var config=require(_0xc6da('0x9'));var attributes=require(_0xc6da('0xa'));module[_0xc6da('0xb')]=function(_0x325f49,_0x5caf49){return _0x325f49[_0xc6da('0xc')](_0xc6da('0xd'),attributes,{'tableName':_0xc6da('0xe'),'paranoid':![],'indexes':[{'fields':[_0xc6da('0xf'),_0xc6da('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 58daff8..076eb34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78e1=['lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','UpdateVoiceAgentReport','update','where','attributes','limit','catch'];(function(_0x44e4e1,_0x5637b2){var _0x300cd2=function(_0x189eeb){while(--_0x189eeb){_0x44e4e1['push'](_0x44e4e1['shift']());}};_0x300cd2(++_0x5637b2);}(_0x78e1,0x198));var _0x178e=function(_0x4af160,_0x36cd59){_0x4af160=_0x4af160-0x0;var _0x1f08ee=_0x78e1[_0x4af160];return _0x1f08ee;};'use strict';var _=require(_0x178e('0x0'));var util=require(_0x178e('0x1'));var moment=require(_0x178e('0x2'));var BPromise=require(_0x178e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x178e('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x178e('0x5'))(_0x178e('0x6'));var config=require(_0x178e('0x7'));var jayson=require(_0x178e('0x8'));var client=jayson[_0x178e('0x9')][_0x178e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4f0029,_0xb86173,_0x29b153){return new BPromise(function(_0xd87e50,_0xc0f57c){return client[_0x178e('0xb')](_0x4f0029,_0x29b153)[_0x178e('0xc')](function(_0x1e1d62){logger['info'](_0x178e('0xd'),_0xb86173,_0x178e('0xe'));logger[_0x178e('0xf')](_0x178e('0x10'),_0xb86173,_0x178e('0xe'),JSON[_0x178e('0x11')](_0x1e1d62));if(_0x1e1d62[_0x178e('0x12')]){if(_0x1e1d62[_0x178e('0x12')][_0x178e('0x13')]===0x1f4){logger[_0x178e('0x12')](_0x178e('0xd'),_0xb86173,_0x1e1d62[_0x178e('0x12')]['message']);return _0xc0f57c(_0x1e1d62['error']['message']);}logger[_0x178e('0x12')](_0x178e('0xd'),_0xb86173,_0x1e1d62[_0x178e('0x12')][_0x178e('0x14')]);return _0xd87e50(_0x1e1d62[_0x178e('0x12')]['message']);}else{logger[_0x178e('0x15')](_0x178e('0xd'),_0xb86173,'request\x20sent');_0xd87e50(_0x1e1d62['result']['message']);}})['catch'](function(_0x33e198){logger[_0x178e('0x12')](_0x178e('0xd'),_0xb86173,_0x33e198);_0xc0f57c(_0x33e198);});});}exports[_0x178e('0x16')]=function(_0x519ee8){var _0x5c8ecc=this;return new Promise(function(_0x573279,_0x289a04){return db[_0x178e('0x17')][_0x178e('0x18')](_0x519ee8[_0x178e('0x19')],{'raw':_0x519ee8[_0x178e('0x1a')]?_0x519ee8['options'][_0x178e('0x1b')]===undefined?!![]:![]:!![]})[_0x178e('0xc')](function(_0x3ab0fa){logger[_0x178e('0x15')](_0x178e('0x16'),_0x519ee8);logger[_0x178e('0xf')](_0x178e('0x16'),_0x519ee8,JSON[_0x178e('0x11')](_0x3ab0fa));_0x573279(_0x3ab0fa);})['catch'](function(_0x5ef085){logger[_0x178e('0x12')](_0x178e('0x16'),_0x5ef085['message'],_0x519ee8);_0x289a04(_0x5c8ecc[_0x178e('0x12')](0x1f4,_0x5ef085[_0x178e('0x14')]));});});};exports[_0x178e('0x1c')]=function(_0x535540){var _0x3d7bf1=this;return new Promise(function(_0xe0abe6,_0xbb7332){return db[_0x178e('0x17')][_0x178e('0x1d')](_0x535540[_0x178e('0x19')],{'raw':_0x535540['options']?_0x535540[_0x178e('0x1a')][_0x178e('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x535540[_0x178e('0x1a')]?_0x535540[_0x178e('0x1a')][_0x178e('0x1e')]||null:null,'attributes':_0x535540[_0x178e('0x1a')]?_0x535540[_0x178e('0x1a')][_0x178e('0x1f')]||null:null,'limit':_0x535540[_0x178e('0x1a')]?_0x535540[_0x178e('0x1a')][_0x178e('0x20')]||null:null})[_0x178e('0xc')](function(_0x110e70){logger[_0x178e('0x15')](_0x178e('0x1c'),_0x535540);logger[_0x178e('0xf')](_0x178e('0x1c'),_0x535540,JSON[_0x178e('0x11')](_0x110e70));_0xe0abe6(_0x110e70);})[_0x178e('0x21')](function(_0x1cc504){logger[_0x178e('0x12')](_0x178e('0x1c'),_0x1cc504[_0x178e('0x14')],_0x535540);_0xbb7332(_0x3d7bf1['error'](0x1f4,_0x1cc504[_0x178e('0x14')]));});});};
\ No newline at end of file
+var _0xd0e7=['message','request\x20sent','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','stringify','UpdateVoiceAgentReport','update','where','attributes','limit','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug','error','code'];(function(_0x451f88,_0x5c061a){var _0x2cc2b7=function(_0x5bb6ce){while(--_0x5bb6ce){_0x451f88['push'](_0x451f88['shift']());}};_0x2cc2b7(++_0x5c061a);}(_0xd0e7,0x1d0));var _0x7d0e=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xd0e7[_0x1928c9];return _0x51b5fb;};'use strict';var _=require('lodash');var util=require(_0x7d0e('0x0'));var moment=require(_0x7d0e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d0e('0x2'));var db=require(_0x7d0e('0x3'))['db'];var utils=require(_0x7d0e('0x4'));var logger=require(_0x7d0e('0x5'))('rpc');var config=require(_0x7d0e('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7d0e('0x7')][_0x7d0e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dea5d,_0x3265ad,_0x1677d3){return new BPromise(function(_0x35bb91,_0x1590dd){return client[_0x7d0e('0x9')](_0x3dea5d,_0x1677d3)[_0x7d0e('0xa')](function(_0x27b4c5){logger[_0x7d0e('0xb')](_0x7d0e('0xc'),_0x3265ad,'request\x20sent');logger[_0x7d0e('0xd')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x3265ad,'request\x20sent',JSON['stringify'](_0x27b4c5));if(_0x27b4c5[_0x7d0e('0xe')]){if(_0x27b4c5[_0x7d0e('0xe')][_0x7d0e('0xf')]===0x1f4){logger[_0x7d0e('0xe')](_0x7d0e('0xc'),_0x3265ad,_0x27b4c5[_0x7d0e('0xe')][_0x7d0e('0x10')]);return _0x1590dd(_0x27b4c5['error'][_0x7d0e('0x10')]);}logger[_0x7d0e('0xe')](_0x7d0e('0xc'),_0x3265ad,_0x27b4c5[_0x7d0e('0xe')][_0x7d0e('0x10')]);return _0x35bb91(_0x27b4c5[_0x7d0e('0xe')][_0x7d0e('0x10')]);}else{logger['info']('VoiceAgentReport,\x20%s,\x20%s',_0x3265ad,_0x7d0e('0x11'));_0x35bb91(_0x27b4c5[_0x7d0e('0x12')][_0x7d0e('0x10')]);}})[_0x7d0e('0x13')](function(_0x527fb7){logger['error'](_0x7d0e('0xc'),_0x3265ad,_0x527fb7);_0x1590dd(_0x527fb7);});});}exports[_0x7d0e('0x14')]=function(_0x544952){var _0x9a2da0=this;return new Promise(function(_0x5360a7,_0x550999){return db[_0x7d0e('0x15')][_0x7d0e('0x16')](_0x544952[_0x7d0e('0x17')],{'raw':_0x544952[_0x7d0e('0x18')]?_0x544952[_0x7d0e('0x18')][_0x7d0e('0x19')]===undefined?!![]:![]:!![]})[_0x7d0e('0xa')](function(_0x28b591){logger['info'](_0x7d0e('0x14'),_0x544952);logger[_0x7d0e('0xd')](_0x7d0e('0x14'),_0x544952,JSON[_0x7d0e('0x1a')](_0x28b591));_0x5360a7(_0x28b591);})['catch'](function(_0x257a91){logger[_0x7d0e('0xe')](_0x7d0e('0x14'),_0x257a91[_0x7d0e('0x10')],_0x544952);_0x550999(_0x9a2da0[_0x7d0e('0xe')](0x1f4,_0x257a91['message']));});});};exports[_0x7d0e('0x1b')]=function(_0x3939bb){var _0x4e3306=this;return new Promise(function(_0x53f1d6,_0x5cf179){return db[_0x7d0e('0x15')][_0x7d0e('0x1c')](_0x3939bb[_0x7d0e('0x17')],{'raw':_0x3939bb[_0x7d0e('0x18')]?_0x3939bb[_0x7d0e('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3939bb[_0x7d0e('0x18')]?_0x3939bb[_0x7d0e('0x18')][_0x7d0e('0x1d')]||null:null,'attributes':_0x3939bb['options']?_0x3939bb['options'][_0x7d0e('0x1e')]||null:null,'limit':_0x3939bb[_0x7d0e('0x18')]?_0x3939bb['options'][_0x7d0e('0x1f')]||null:null})[_0x7d0e('0xa')](function(_0x1ffc2a){logger[_0x7d0e('0xb')](_0x7d0e('0x1b'),_0x3939bb);logger[_0x7d0e('0xd')](_0x7d0e('0x1b'),_0x3939bb,JSON['stringify'](_0x1ffc2a));_0x53f1d6(_0x1ffc2a);})['catch'](function(_0xefee74){logger[_0x7d0e('0xe')](_0x7d0e('0x1b'),_0xefee74[_0x7d0e('0x10')],_0x3939bb);_0x5cf179(_0x4e3306[_0x7d0e('0xe')](0x1f4,_0xefee74[_0x7d0e('0x10')]));});});};
\ No newline at end of file
index 73473f5..5c29c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['../../config/environment','./voiceCallReport.controller','isAuthenticated','index','get','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3db7ac,_0x4b9b9c){var _0x390337=function(_0x1df948){while(--_0x1df948){_0x3db7ac['push'](_0x3db7ac['shift']());}};_0x390337(++_0x4b9b9c);}(_0x81bd,0x7c));var _0xd81b=function(_0x1af1e1,_0x37bc24){_0x1af1e1=_0x1af1e1-0x0;var _0x5f3450=_0x81bd[_0x1af1e1];return _0x5f3450;};'use strict';var multer=require(_0xd81b('0x0'));var util=require(_0xd81b('0x1'));var path=require(_0xd81b('0x2'));var timeout=require(_0xd81b('0x3'));var express=require(_0xd81b('0x4'));var router=express[_0xd81b('0x5')]();var fs_extra=require(_0xd81b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd81b('0x7'));var config=require(_0xd81b('0x8'));var controller=require(_0xd81b('0x9'));router['get']('/',auth[_0xd81b('0xa')](),controller[_0xd81b('0xb')]);router[_0xd81b('0xc')]('/describe',auth['isAuthenticated'](),controller[_0xd81b('0xd')]);router['get'](_0xd81b('0xe'),auth[_0xd81b('0xa')](),controller[_0xd81b('0xf')]);router[_0xd81b('0x10')]('/',auth[_0xd81b('0xa')](),controller[_0xd81b('0x11')]);router[_0xd81b('0x12')](_0xd81b('0xe'),auth[_0xd81b('0xa')](),controller[_0xd81b('0x13')]);router[_0xd81b('0x14')](_0xd81b('0xe'),auth[_0xd81b('0xa')](),controller['destroy']);module[_0xd81b('0x15')]=router;
\ No newline at end of file
+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','./voiceCallReport.controller','/describe','isAuthenticated'];(function(_0x4fb9a8,_0x29181f){var _0x4aeeb5=function(_0xd8c5f5){while(--_0xd8c5f5){_0x4fb9a8['push'](_0x4fb9a8['shift']());}};_0x4aeeb5(++_0x29181f);}(_0x04de,0x107));var _0xe04d=function(_0x19556e,_0x43d5e4){_0x19556e=_0x19556e-0x0;var _0x2e60ac=_0x04de[_0x19556e];return _0x2e60ac;};'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
index 09f4f1f..51b4b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a3f=['inbound-fax','outbound-fax','dialer','DATE','INTEGER','sequelize','STRING','ENUM','inbound','internal','outbound'];(function(_0x876454,_0x41af34){var _0x404454=function(_0x29bbf5){while(--_0x29bbf5){_0x876454['push'](_0x876454['shift']());}};_0x404454(++_0x41af34);}(_0x1a3f,0x68));var _0xf1a3=function(_0x330cf7,_0x47bd15){_0x330cf7=_0x330cf7-0x0;var _0x9721c4=_0x1a3f[_0x330cf7];return _0x9721c4;};'use strict';var Sequelize=require(_0xf1a3('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xf1a3('0x1')]},'type':{'type':Sequelize[_0xf1a3('0x2')](_0xf1a3('0x3'),_0xf1a3('0x4'),_0xf1a3('0x5'),_0xf1a3('0x6'),_0xf1a3('0x7'),_0xf1a3('0x8'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xf1a3('0x1')]},'source':{'type':Sequelize[_0xf1a3('0x1')]},'destination':{'type':Sequelize[_0xf1a3('0x1')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xf1a3('0x1')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0xf1a3('0x1')]},'lastapplication':{'type':Sequelize[_0xf1a3('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0xf1a3('0x9')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xf1a3('0x9')]},'duration':{'type':Sequelize[_0xf1a3('0xa')]},'billableseconds':{'type':Sequelize[_0xf1a3('0xa')]},'mohtime':{'type':Sequelize[_0xf1a3('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xf1a3('0x1')]},'amaflags':{'type':Sequelize[_0xf1a3('0x1')]},'userfield':{'type':Sequelize[_0xf1a3('0x1')]},'userDisposition':{'type':Sequelize[_0xf1a3('0x1')]},'userSecondDisposition':{'type':Sequelize[_0xf1a3('0x1')]},'userThirdDisposition':{'type':Sequelize[_0xf1a3('0x1')]},'note':{'type':Sequelize[_0xf1a3('0x1')]},'prefix':{'type':Sequelize[_0xf1a3('0x1')]},'routeid':{'type':Sequelize[_0xf1a3('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2906=['STRING','TEXT','DATE','INTEGER','sequelize','exports','ENUM','internal','outbound','inbound-fax','outbound-fax'];(function(_0x28ad32,_0x1d376b){var _0x685b46=function(_0x4c9850){while(--_0x4c9850){_0x28ad32['push'](_0x28ad32['shift']());}};_0x685b46(++_0x1d376b);}(_0x2906,0xe0));var _0x6290=function(_0x59a549,_0x2fe2bb){_0x59a549=_0x59a549-0x0;var _0x12adbe=_0x2906[_0x59a549];return _0x12adbe;};'use strict';var Sequelize=require(_0x6290('0x0'));module[_0x6290('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x6290('0x2')]('inbound',_0x6290('0x3'),_0x6290('0x4'),_0x6290('0x5'),_0x6290('0x6'),'dialer')},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0x6290('0x7')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x6290('0x7')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x6290('0x7')]},'destinationchannel':{'type':Sequelize[_0x6290('0x7')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x6290('0x8')]},'starttime':{'type':Sequelize[_0x6290('0x9')]},'systemanswertime':{'type':Sequelize[_0x6290('0x9')]},'answertime':{'type':Sequelize[_0x6290('0x9')]},'endtime':{'type':Sequelize[_0x6290('0x9')]},'duration':{'type':Sequelize[_0x6290('0xa')]},'billableseconds':{'type':Sequelize[_0x6290('0xa')]},'mohtime':{'type':Sequelize[_0x6290('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x6290('0x7')]},'amaflags':{'type':Sequelize[_0x6290('0x7')]},'userfield':{'type':Sequelize[_0x6290('0x7')]},'userDisposition':{'type':Sequelize[_0x6290('0x7')]},'userSecondDisposition':{'type':Sequelize[_0x6290('0x7')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x6290('0x7')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x6290('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 98f96d2..34febf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['pick','filter','merge','options','VoiceCallReport','then','includeAll','include','fullname','alias','User','findAll','rows','catch','show','params','keys','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where'];(function(_0x38b14f,_0xd08fa8){var _0x22a324=function(_0x4bbb05){while(--_0x4bbb05){_0x38b14f['push'](_0x38b14f['shift']());}};_0x22a324(++_0xd08fa8);}(_0x2ef3,0xba));var _0x32ef=function(_0x2a450c,_0x5ccd8a){_0x2a450c=_0x2a450c-0x0;var _0x51a92a=_0x2ef3[_0x2a450c];return _0x51a92a;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['VoiceCallReport'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'attributes':['id',_0x32ef('0x27'),_0x32ef('0x41'),_0x32ef('0x42')],'model':db[_0x32ef('0x43')],'as':'User'}];}return db['VoiceCallReport'][_0x32ef('0x44')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x2a33dd){_0x3c569d[_0x32ef('0x45')]=_0x2a33dd;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x46')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x47')]=function(_0x5d2f06,_0x4744ba){var _0x4bc5bc={'raw':!![],'where':{'id':_0x5d2f06[_0x32ef('0x48')]['id']}},_0xcb3c08={};_0xcb3c08[_0x32ef('0x2e')]=_[_0x32ef('0x49')](db[_0x32ef('0x3d')][_0x32ef('0x2a')]);_0xcb3c08[_0x32ef('0x2f')]=_[_0x32ef('0x49')](_0x5d2f06[_0x32ef('0x2f')]);_0xcb3c08[_0x32ef('0x30')]=_['intersection'](_0xcb3c08[_0x32ef('0x2e')],_0xcb3c08['query']);_0x4bc5bc[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0xcb3c08[_0x32ef('0x2e')],qs['fields'](_0x5d2f06[_0x32ef('0x2f')][_0x32ef('0x33')]));_0x4bc5bc[_0x32ef('0x31')]=_0x4bc5bc[_0x32ef('0x31')][_0x32ef('0x34')]?_0x4bc5bc[_0x32ef('0x31')]:_0xcb3c08[_0x32ef('0x2e')];if(_0x5d2f06['query']['includeAll']){_0x4bc5bc[_0x32ef('0x40')]=[{'all':!![]}];}_0x4bc5bc=_[_0x32ef('0x3b')]({},_0x4bc5bc,_0x5d2f06[_0x32ef('0x3c')]);return db[_0x32ef('0x3d')][_0x32ef('0x4a')](_0x4bc5bc)[_0x32ef('0x3e')](handleEntityNotFound(_0x4744ba,null))[_0x32ef('0x3e')](respondWithResult(_0x4744ba,null))[_0x32ef('0x46')](handleError(_0x4744ba,null));};exports[_0x32ef('0x4b')]=function(_0x1ebedf,_0x35a294){return db[_0x32ef('0x3d')][_0x32ef('0x4b')](_0x1ebedf['body'],{})[_0x32ef('0x3e')](respondWithResult(_0x35a294,0xc9))[_0x32ef('0x46')](handleError(_0x35a294,null));};exports[_0x32ef('0x4c')]=function(_0xd42609,_0x1cc9f3){return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'id':_0xd42609[_0x32ef('0x48')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x1cc9f3,null))[_0x32ef('0x3e')](removeEntity(_0x1cc9f3,null))[_0x32ef('0x46')](handleError(_0x1cc9f3,null));};exports[_0x32ef('0x4d')]=function(_0x272377,_0x326445){return db[_0x32ef('0x3d')][_0x32ef('0x4d')]()[_0x32ef('0x3e')](respondWithResult(_0x326445,null))[_0x32ef('0x46')](handleError(_0x326445,null));};exports['update']=function(_0x515ac9,_0x179c2f){if(_0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')]){delete _0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')];}return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'uniqueid':_0x515ac9[_0x32ef('0x48')]['id'],'UserId':{'$or':[null,_0x515ac9[_0x32ef('0x50')]['id']]}}})[_0x32ef('0x3e')](handleEntityNotFound(_0x179c2f,null))[_0x32ef('0x3e')](saveUpdates(_0x515ac9['body'],null))[_0x32ef('0x3e')](respondWithResult(_0x179c2f,null))[_0x32ef('0x46')](handleError(_0x179c2f,null));};
\ No newline at end of file
+var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x53c548,_0x4ca7ac){_0x53c548=_0x53c548-0x0;var _0x467309=_0x2032[_0x53c548];return _0x467309;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
index 76e33b5..14bf862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdafb=['bluebird','request-promise','path','../../config/environment','report_call','util','../../config/logger','api','moment'];(function(_0x2fcc5c,_0x8cbf34){var _0x3ca488=function(_0xa7bb8d){while(--_0xa7bb8d){_0x2fcc5c['push'](_0x2fcc5c['shift']());}};_0x3ca488(++_0x8cbf34);}(_0xdafb,0x10a));var _0xbdaf=function(_0x2d63ec,_0x6e9fd1){_0x2d63ec=_0x2d63ec-0x0;var _0x5c3af6=_0xdafb[_0x2d63ec];return _0x5c3af6;};'use strict';var _=require('lodash');var util=require(_0xbdaf('0x0'));var logger=require(_0xbdaf('0x1'))(_0xbdaf('0x2'));var moment=require(_0xbdaf('0x3'));var BPromise=require(_0xbdaf('0x4'));var rp=require(_0xbdaf('0x5'));var fs=require('fs');var path=require(_0xbdaf('0x6'));var rimraf=require('rimraf');var config=require(_0xbdaf('0x7'));var attributes=require('./voiceCallReport.attributes');module['exports']=function(_0x14d83a,_0x42d433){return _0x14d83a['define']('VoiceCallReport',attributes,{'tableName':_0xbdaf('0x8'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6828=['exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes'];(function(_0x559443,_0x4eb8b6){var _0x246c41=function(_0x2e5eb2){while(--_0x2e5eb2){_0x559443['push'](_0x559443['shift']());}};_0x246c41(++_0x4eb8b6);}(_0x6828,0xe6));var _0x8682=function(_0x46e2e9,_0x2540cf){_0x46e2e9=_0x46e2e9-0x0;var _0x53e9ed=_0x6828[_0x46e2e9];return _0x53e9ed;};'use strict';var _=require(_0x8682('0x0'));var util=require(_0x8682('0x1'));var logger=require(_0x8682('0x2'))(_0x8682('0x3'));var moment=require('moment');var BPromise=require(_0x8682('0x4'));var rp=require(_0x8682('0x5'));var fs=require('fs');var path=require(_0x8682('0x6'));var rimraf=require(_0x8682('0x7'));var config=require(_0x8682('0x8'));var attributes=require(_0x8682('0x9'));module[_0x8682('0xa')]=function(_0x13c75a,_0x1c0055){return _0x13c75a[_0x8682('0xb')](_0x8682('0xc'),attributes,{'tableName':_0x8682('0xd'),'paranoid':![],'indexes':[{'fields':[_0x8682('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 27ccea2..bfcb1bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f1=['VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','options','where','limit','include','map','model','attributes','debug','CreateVoiceCallReport','create','body','raw','UpdateVoiceCallReport','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x34f1,0x17d));var _0x134f=function(_0xd18828,_0x5b63fc){_0xd18828=_0xd18828-0x0;var _0x5ee444=_0x34f1[_0xd18828];return _0x5ee444;};'use strict';var _=require(_0x134f('0x0'));var util=require(_0x134f('0x1'));var moment=require('moment');var BPromise=require(_0x134f('0x2'));var rs=require(_0x134f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x134f('0x4'))['db'];var utils=require(_0x134f('0x5'));var logger=require(_0x134f('0x6'))(_0x134f('0x7'));var config=require('../../config/environment');var jayson=require(_0x134f('0x8'));var client=jayson[_0x134f('0x9')][_0x134f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24e4c9,_0x488e9b,_0x5c7ba3){return new BPromise(function(_0x53914f,_0x47a8fb){return client['request'](_0x24e4c9,_0x5c7ba3)[_0x134f('0xb')](function(_0x5ae4a3){logger[_0x134f('0xc')](_0x134f('0xd'),_0x488e9b,_0x134f('0xe'));logger['debug'](_0x134f('0xf'),_0x488e9b,_0x134f('0xe'),JSON[_0x134f('0x10')](_0x5ae4a3));if(_0x5ae4a3[_0x134f('0x11')]){if(_0x5ae4a3['error']['code']===0x1f4){logger[_0x134f('0x11')](_0x134f('0xd'),_0x488e9b,_0x5ae4a3[_0x134f('0x11')]['message']);return _0x47a8fb(_0x5ae4a3[_0x134f('0x11')][_0x134f('0x12')]);}logger[_0x134f('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x488e9b,_0x5ae4a3['error'][_0x134f('0x12')]);return _0x53914f(_0x5ae4a3[_0x134f('0x11')][_0x134f('0x12')]);}else{logger[_0x134f('0xc')](_0x134f('0xd'),_0x488e9b,_0x134f('0xe'));_0x53914f(_0x5ae4a3[_0x134f('0x13')]['message']);}})[_0x134f('0x14')](function(_0x435c8c){logger[_0x134f('0x11')](_0x134f('0xd'),_0x488e9b,_0x435c8c);_0x47a8fb(_0x435c8c);});});}exports[_0x134f('0x15')]=function(_0x4ec8bb){var _0x50f321=this;return new Promise(function(_0x1011cd,_0x312769){return db[_0x134f('0x16')]['findAll']({'raw':_0x4ec8bb[_0x134f('0x17')]?_0x4ec8bb[_0x134f('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4ec8bb[_0x134f('0x17')]?_0x4ec8bb[_0x134f('0x17')][_0x134f('0x18')]||null:null,'attributes':_0x4ec8bb[_0x134f('0x17')]?_0x4ec8bb[_0x134f('0x17')]['attributes']||null:null,'limit':_0x4ec8bb[_0x134f('0x17')]?_0x4ec8bb[_0x134f('0x17')][_0x134f('0x19')]||null:null,'include':_0x4ec8bb[_0x134f('0x17')]?_0x4ec8bb[_0x134f('0x17')][_0x134f('0x1a')]?_[_0x134f('0x1b')](_0x4ec8bb[_0x134f('0x17')]['include'],function(_0x4e91a0){return{'model':db[_0x4e91a0[_0x134f('0x1c')]],'as':_0x4e91a0['as'],'attributes':_0x4e91a0[_0x134f('0x1d')],'include':_0x4e91a0[_0x134f('0x1a')]?_[_0x134f('0x1b')](_0x4e91a0[_0x134f('0x1a')],function(_0x5b1acf){return{'model':db[_0x5b1acf[_0x134f('0x1c')]],'as':_0x5b1acf['as'],'attributes':_0x5b1acf[_0x134f('0x1d')],'include':_0x5b1acf[_0x134f('0x1a')]?_['map'](_0x5b1acf['include'],function(_0x34a39a){return{'model':db[_0x34a39a[_0x134f('0x1c')]],'as':_0x34a39a['as'],'attributes':_0x34a39a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3550fe){logger[_0x134f('0xc')]('GetVoiceCallReport',_0x4ec8bb);logger[_0x134f('0x1e')]('GetVoiceCallReport',_0x4ec8bb,JSON[_0x134f('0x10')](_0x3550fe));_0x1011cd(_0x3550fe);})[_0x134f('0x14')](function(_0x22b341){logger[_0x134f('0x11')](_0x134f('0x15'),_0x22b341[_0x134f('0x12')],_0x4ec8bb);_0x312769(_0x50f321[_0x134f('0x11')](0x1f4,_0x22b341[_0x134f('0x12')]));});});};exports[_0x134f('0x1f')]=function(_0x5c0338){var _0x3b042e=this;return new Promise(function(_0x516d46,_0x1a1742){return db[_0x134f('0x16')][_0x134f('0x20')](_0x5c0338[_0x134f('0x21')],{'raw':_0x5c0338[_0x134f('0x17')]?_0x5c0338[_0x134f('0x17')][_0x134f('0x22')]===undefined?!![]:![]:!![]})[_0x134f('0xb')](function(_0x1fc81a){logger[_0x134f('0xc')]('CreateVoiceCallReport',_0x5c0338);logger[_0x134f('0x1e')](_0x134f('0x1f'),_0x5c0338,JSON[_0x134f('0x10')](_0x1fc81a));_0x516d46(_0x1fc81a);})[_0x134f('0x14')](function(_0x4da429){logger['error']('CreateVoiceCallReport',_0x4da429['message'],_0x5c0338);_0x1a1742(_0x3b042e['error'](0x1f4,_0x4da429[_0x134f('0x12')]));});});};exports[_0x134f('0x23')]=function(_0x59d78c){var _0x48e77c=this;return new Promise(function(_0x1c5240,_0x1d915d){return db[_0x134f('0x16')]['update'](_0x59d78c['body'],{'raw':_0x59d78c[_0x134f('0x17')]?_0x59d78c[_0x134f('0x17')][_0x134f('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59d78c['options']?_0x59d78c[_0x134f('0x17')][_0x134f('0x18')]||null:null,'attributes':_0x59d78c[_0x134f('0x17')]?_0x59d78c[_0x134f('0x17')][_0x134f('0x1d')]||null:null,'limit':_0x59d78c[_0x134f('0x17')]?_0x59d78c[_0x134f('0x17')][_0x134f('0x19')]||null:null})[_0x134f('0xb')](function(_0x34707c){logger['info'](_0x134f('0x23'),_0x59d78c);logger['debug'](_0x134f('0x23'),_0x59d78c,JSON[_0x134f('0x10')](_0x34707c));_0x1c5240(_0x34707c);})[_0x134f('0x14')](function(_0x368582){logger[_0x134f('0x11')](_0x134f('0x23'),_0x368582[_0x134f('0x12')],_0x59d78c);_0x1d915d(_0x48e77c[_0x134f('0x11')](0x1f4,_0x368582[_0x134f('0x12')]));});});};
\ No newline at end of file
+var _0x945e=['where','attributes','limit','include','map','model','stringify','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw'];(function(_0x4a7590,_0x2e2223){var _0x174b6c=function(_0x44a68c){while(--_0x44a68c){_0x4a7590['push'](_0x4a7590['shift']());}};_0x174b6c(++_0x2e2223);}(_0x945e,0x1b9));var _0xe945=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0x945e[_0x10004e];return _0x5af990;};'use strict';var _=require(_0xe945('0x0'));var util=require(_0xe945('0x1'));var moment=require(_0xe945('0x2'));var BPromise=require('bluebird');var rs=require(_0xe945('0x3'));var fs=require('fs');var Redis=require(_0xe945('0x4'));var db=require(_0xe945('0x5'))['db'];var utils=require(_0xe945('0x6'));var logger=require(_0xe945('0x7'))(_0xe945('0x8'));var config=require(_0xe945('0x9'));var jayson=require(_0xe945('0xa'));var client=jayson[_0xe945('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ca53d,_0x47e04b,_0x33dd02){return new BPromise(function(_0x330141,_0x8325ee){return client['request'](_0x4ca53d,_0x33dd02)[_0xe945('0xc')](function(_0x5e562c){logger[_0xe945('0xd')](_0xe945('0xe'),_0x47e04b,_0xe945('0xf'));logger[_0xe945('0x10')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x47e04b,_0xe945('0xf'),JSON['stringify'](_0x5e562c));if(_0x5e562c[_0xe945('0x11')]){if(_0x5e562c[_0xe945('0x11')][_0xe945('0x12')]===0x1f4){logger[_0xe945('0x11')](_0xe945('0xe'),_0x47e04b,_0x5e562c[_0xe945('0x11')][_0xe945('0x13')]);return _0x8325ee(_0x5e562c['error'][_0xe945('0x13')]);}logger['error'](_0xe945('0xe'),_0x47e04b,_0x5e562c['error'][_0xe945('0x13')]);return _0x330141(_0x5e562c[_0xe945('0x11')][_0xe945('0x13')]);}else{logger[_0xe945('0xd')](_0xe945('0xe'),_0x47e04b,_0xe945('0xf'));_0x330141(_0x5e562c[_0xe945('0x14')][_0xe945('0x13')]);}})[_0xe945('0x15')](function(_0x49ca0e){logger[_0xe945('0x11')](_0xe945('0xe'),_0x47e04b,_0x49ca0e);_0x8325ee(_0x49ca0e);});});}exports[_0xe945('0x16')]=function(_0x4c62fe){var _0x53b092=this;return new Promise(function(_0x835bc6,_0xa1ec40){return db[_0xe945('0x17')][_0xe945('0x18')]({'raw':_0x4c62fe['options']?_0x4c62fe[_0xe945('0x19')][_0xe945('0x1a')]===undefined?!![]:![]:!![],'where':_0x4c62fe[_0xe945('0x19')]?_0x4c62fe[_0xe945('0x19')][_0xe945('0x1b')]||null:null,'attributes':_0x4c62fe[_0xe945('0x19')]?_0x4c62fe[_0xe945('0x19')][_0xe945('0x1c')]||null:null,'limit':_0x4c62fe['options']?_0x4c62fe['options'][_0xe945('0x1d')]||null:null,'include':_0x4c62fe[_0xe945('0x19')]?_0x4c62fe[_0xe945('0x19')][_0xe945('0x1e')]?_[_0xe945('0x1f')](_0x4c62fe[_0xe945('0x19')][_0xe945('0x1e')],function(_0x38f53b){return{'model':db[_0x38f53b[_0xe945('0x20')]],'as':_0x38f53b['as'],'attributes':_0x38f53b['attributes'],'include':_0x38f53b['include']?_['map'](_0x38f53b[_0xe945('0x1e')],function(_0x62f765){return{'model':db[_0x62f765[_0xe945('0x20')]],'as':_0x62f765['as'],'attributes':_0x62f765[_0xe945('0x1c')],'include':_0x62f765[_0xe945('0x1e')]?_['map'](_0x62f765[_0xe945('0x1e')],function(_0x243008){return{'model':db[_0x243008[_0xe945('0x20')]],'as':_0x243008['as'],'attributes':_0x243008[_0xe945('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe945('0xc')](function(_0x5b36c9){logger[_0xe945('0xd')](_0xe945('0x16'),_0x4c62fe);logger[_0xe945('0x10')]('GetVoiceCallReport',_0x4c62fe,JSON[_0xe945('0x21')](_0x5b36c9));_0x835bc6(_0x5b36c9);})[_0xe945('0x15')](function(_0x56b356){logger['error'](_0xe945('0x16'),_0x56b356[_0xe945('0x13')],_0x4c62fe);_0xa1ec40(_0x53b092[_0xe945('0x11')](0x1f4,_0x56b356[_0xe945('0x13')]));});});};exports[_0xe945('0x22')]=function(_0x3cae6f){var _0x261296=this;return new Promise(function(_0x2ea564,_0x361fe7){return db[_0xe945('0x17')][_0xe945('0x23')](_0x3cae6f[_0xe945('0x24')],{'raw':_0x3cae6f[_0xe945('0x19')]?_0x3cae6f['options'][_0xe945('0x1a')]===undefined?!![]:![]:!![]})[_0xe945('0xc')](function(_0x1d3ca6){logger[_0xe945('0xd')]('CreateVoiceCallReport',_0x3cae6f);logger[_0xe945('0x10')](_0xe945('0x22'),_0x3cae6f,JSON[_0xe945('0x21')](_0x1d3ca6));_0x2ea564(_0x1d3ca6);})['catch'](function(_0x590b67){logger['error'](_0xe945('0x22'),_0x590b67[_0xe945('0x13')],_0x3cae6f);_0x361fe7(_0x261296[_0xe945('0x11')](0x1f4,_0x590b67[_0xe945('0x13')]));});});};exports[_0xe945('0x25')]=function(_0x494a6c){var _0x5bbb92=this;return new Promise(function(_0x271a41,_0x1c08c4){return db['VoiceCallReport'][_0xe945('0x26')](_0x494a6c[_0xe945('0x24')],{'raw':_0x494a6c[_0xe945('0x19')]?_0x494a6c[_0xe945('0x19')][_0xe945('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x494a6c[_0xe945('0x19')]?_0x494a6c[_0xe945('0x19')][_0xe945('0x1b')]||null:null,'attributes':_0x494a6c[_0xe945('0x19')]?_0x494a6c[_0xe945('0x19')][_0xe945('0x1c')]||null:null,'limit':_0x494a6c[_0xe945('0x19')]?_0x494a6c[_0xe945('0x19')][_0xe945('0x1d')]||null:null})[_0xe945('0xc')](function(_0x55d053){logger[_0xe945('0xd')](_0xe945('0x25'),_0x494a6c);logger[_0xe945('0x10')](_0xe945('0x25'),_0x494a6c,JSON[_0xe945('0x21')](_0x55d053));_0x271a41(_0x55d053);})[_0xe945('0x15')](function(_0x4b644b){logger[_0xe945('0x11')]('UpdateVoiceCallReport',_0x4b644b[_0xe945('0x13')],_0x494a6c);_0x1c08c4(_0x5bbb92[_0xe945('0x11')](0x1f4,_0x4b644b[_0xe945('0x13')]));});});};
\ No newline at end of file
index 3cc7413..963e817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c1c=['destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete'];(function(_0x228944,_0x1e073e){var _0x2b2c09=function(_0x4559fc){while(--_0x4559fc){_0x228944['push'](_0x228944['shift']());}};_0x2b2c09(++_0x1e073e);}(_0x0c1c,0x8e));var _0xc0c1=function(_0x35a274,_0x98b399){_0x35a274=_0x35a274-0x0;var _0x40d905=_0x0c1c[_0x35a274];return _0x40d905;};'use strict';var multer=require(_0xc0c1('0x0'));var util=require('util');var path=require(_0xc0c1('0x1'));var timeout=require('connect-timeout');var express=require(_0xc0c1('0x2'));var router=express[_0xc0c1('0x3')]();var fs_extra=require(_0xc0c1('0x4'));var auth=require(_0xc0c1('0x5'));var interaction=require(_0xc0c1('0x6'));var config=require(_0xc0c1('0x7'));var controller=require(_0xc0c1('0x8'));router[_0xc0c1('0x9')]('/',auth[_0xc0c1('0xa')](),controller[_0xc0c1('0xb')]);router[_0xc0c1('0x9')](_0xc0c1('0xc'),auth[_0xc0c1('0xa')](),controller[_0xc0c1('0xd')]);router['post']('/',auth[_0xc0c1('0xa')](),controller[_0xc0c1('0xe')]);router[_0xc0c1('0xf')]('/:id',auth[_0xc0c1('0xa')](),controller[_0xc0c1('0x10')]);router[_0xc0c1('0x11')]('/:id',auth[_0xc0c1('0xa')](),controller[_0xc0c1('0x12')]);module[_0xc0c1('0x13')]=router;
\ No newline at end of file
+var _0xb541=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x5c027f,_0xa40135){var _0x5392f3=function(_0x581c3b){while(--_0x581c3b){_0x5c027f['push'](_0x5c027f['shift']());}};_0x5392f3(++_0xa40135);}(_0xb541,0x177));var _0x1b54=function(_0x259449,_0x32f882){_0x259449=_0x259449-0x0;var _0x321ae4=_0xb541[_0x259449];return _0x321ae4;};'use strict';var multer=require('multer');var util=require(_0x1b54('0x0'));var path=require(_0x1b54('0x1'));var timeout=require(_0x1b54('0x2'));var express=require(_0x1b54('0x3'));var router=express[_0x1b54('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1b54('0x5'));var interaction=require(_0x1b54('0x6'));var config=require(_0x1b54('0x7'));var controller=require(_0x1b54('0x8'));router[_0x1b54('0x9')]('/',auth[_0x1b54('0xa')](),controller[_0x1b54('0xb')]);router[_0x1b54('0x9')](_0x1b54('0xc'),auth['isAuthenticated'](),controller[_0x1b54('0xd')]);router[_0x1b54('0xe')]('/',auth[_0x1b54('0xa')](),controller[_0x1b54('0xf')]);router['put'](_0x1b54('0xc'),auth[_0x1b54('0xa')](),controller[_0x1b54('0x10')]);router[_0x1b54('0x11')](_0x1b54('0xc'),auth['isAuthenticated'](),controller[_0x1b54('0x12')]);module[_0x1b54('0x13')]=router;
\ No newline at end of file
index 90ee4ab..2b64809 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f7a=['split','sequelize','STRING','name','join','getDataValue','options'];(function(_0x33b6f7,_0xd4fb1f){var _0x51b10d=function(_0x55b7dc){while(--_0x55b7dc){_0x33b6f7['push'](_0x33b6f7['shift']());}};_0x51b10d(++_0xd4fb1f);}(_0x7f7a,0x189));var _0xa7f7=function(_0x399d8b,_0x5919a6){_0x399d8b=_0x399d8b-0x0;var _0x3d2a35=_0x7f7a[_0x399d8b];return _0x3d2a35;};'use strict';var Sequelize=require(_0xa7f7('0x0'));module['exports']={'name':{'type':Sequelize[_0xa7f7('0x1')]},'prefix':{'type':Sequelize[_0xa7f7('0x1')],'unique':_0xa7f7('0x2'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x43437b){this['setDataValue']('options',_0x43437b?_0x43437b[_0xa7f7('0x3')](''):[]);},'get':function(){return this[_0xa7f7('0x4')](_0xa7f7('0x5'))?this[_0xa7f7('0x4')](_0xa7f7('0x5'))[_0xa7f7('0x6')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xa7f7('0x1')]},'description':{'type':Sequelize[_0xa7f7('0x1')]}};
\ No newline at end of file
+var _0xf107=['options','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','join','getDataValue'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xf107,0xdf));var _0x7f10=function(_0x2bc8b6,_0x5337ef){_0x2bc8b6=_0x2bc8b6-0x0;var _0x4eec85=_0xf107[_0x2bc8b6];return _0x4eec85;};'use strict';var Sequelize=require(_0x7f10('0x0'));module[_0x7f10('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x7f10('0x2')],'unique':_0x7f10('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x7f10('0x2')],'set':function(_0x232d93){this[_0x7f10('0x4')]('options',_0x232d93?_0x232d93[_0x7f10('0x5')](''):[]);},'get':function(){return this[_0x7f10('0x6')](_0x7f10('0x7'))?this[_0x7f10('0x6')](_0x7f10('0x7'))[_0x7f10('0x8')](''):[];}},'auth':{'type':Sequelize[_0x7f10('0x9')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x7f10('0x2')]},'description':{'type':Sequelize[_0x7f10('0x2')]}};
\ No newline at end of file
index 1a78340..13e0295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5e=['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','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChanSpies','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js'];(function(_0x373b38,_0x34b0d4){var _0x5473c9=function(_0x593e84){while(--_0x593e84){_0x373b38['push'](_0x373b38['shift']());}};_0x5473c9(++_0x34b0d4);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x27e133,_0x3c035e){_0x27e133=_0x27e133-0x0;var _0x5b6985=_0x9c5e[_0x27e133];return _0x5b6985;};'use strict';var emlformat=require(_0xe9c5('0x0'));var rimraf=require(_0xe9c5('0x1'));var zipdir=require(_0xe9c5('0x2'));var jsonpatch=require(_0xe9c5('0x3'));var rp=require(_0xe9c5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe9c5('0x5'));var path=require(_0xe9c5('0x6'));var sox=require('sox');var csv=require(_0xe9c5('0x7'));var ejs=require(_0xe9c5('0x8'));var fs=require('fs');var fs_extra=require(_0xe9c5('0x9'));var _=require(_0xe9c5('0xa'));var squel=require('squel');var crypto=require(_0xe9c5('0xb'));var jsforce=require(_0xe9c5('0xc'));var deskjs=require(_0xe9c5('0xd'));var toCsv=require(_0xe9c5('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe9c5('0xe'));var authService=require(_0xe9c5('0xf'));var qs=require(_0xe9c5('0x10'));var as=require(_0xe9c5('0x11'));var hardwareService=require(_0xe9c5('0x12'));var logger=require(_0xe9c5('0x13'))(_0xe9c5('0x14'));var utils=require(_0xe9c5('0x15'));var config=require(_0xe9c5('0x16'));var licenseUtil=require(_0xe9c5('0x17'));var db=require(_0xe9c5('0x18'))['db'];function respondWithStatusCode(_0x27f3e1,_0x471401){_0x471401=_0x471401||0xcc;return function(_0x25ff11){if(_0x25ff11){return _0x27f3e1[_0xe9c5('0x19')](_0x471401);}return _0x27f3e1[_0xe9c5('0x1a')](_0x471401)['end']();};}function respondWithResult(_0x3cce36,_0xe98b11){_0xe98b11=_0xe98b11||0xc8;return function(_0x5eb474){if(_0x5eb474){return _0x3cce36[_0xe9c5('0x1a')](_0xe98b11)[_0xe9c5('0x1b')](_0x5eb474);}};}function respondWithFilteredResult(_0x232584,_0x5d8236){return function(_0x163253){if(_0x163253){var _0x14eb41=typeof _0x5d8236['offset']===_0xe9c5('0x1c')&&typeof _0x5d8236[_0xe9c5('0x1d')]===_0xe9c5('0x1c');var _0x154390=_0x163253[_0xe9c5('0x1e')];var _0x4d9c7d=_0x14eb41?0x0:_0x5d8236[_0xe9c5('0x1f')];var _0x1cecae=_0x14eb41?_0x163253[_0xe9c5('0x1e')]:_0x5d8236[_0xe9c5('0x1f')]+_0x5d8236['limit'];var _0x26492a;if(_0x1cecae>=_0x154390){_0x1cecae=_0x154390;_0x26492a=0xc8;}else{_0x26492a=0xce;}_0x232584[_0xe9c5('0x1a')](_0x26492a);return _0x232584[_0xe9c5('0x20')](_0xe9c5('0x21'),_0x4d9c7d+'-'+_0x1cecae+'/'+_0x154390)[_0xe9c5('0x1b')](_0x163253);}return null;};}function patchUpdates(_0x58fbad){return function(_0x51e860){try{jsonpatch[_0xe9c5('0x22')](_0x51e860,_0x58fbad,!![]);}catch(_0x57818d){return BPromise[_0xe9c5('0x23')](_0x57818d);}return _0x51e860[_0xe9c5('0x24')]();};}function saveUpdates(_0x21b02a,_0x4d16bc){return function(_0x5750ff){if(_0x5750ff){return _0x5750ff[_0xe9c5('0x25')](_0x21b02a)[_0xe9c5('0x26')](function(_0x37fb90){return _0x37fb90;});}return null;};}function removeEntity(_0x189a13,_0x34a7c8){return function(_0x245161){if(_0x245161){return _0x245161[_0xe9c5('0x27')]()[_0xe9c5('0x26')](function(){var _0x1cd9c4=_0x245161[_0xe9c5('0x28')]({'plain':!![]});var _0x5a3caa='ChanSpies';return db[_0xe9c5('0x29')][_0xe9c5('0x27')]({'where':{'type':_0x5a3caa,'resourceId':_0x1cd9c4['id']}})[_0xe9c5('0x26')](function(){return _0x245161;});})[_0xe9c5('0x26')](function(){_0x189a13[_0xe9c5('0x1a')](0xcc)[_0xe9c5('0x2a')]();});}};}function handleEntityNotFound(_0x493108,_0x2c3fcb){return function(_0x480187){if(!_0x480187){_0x493108[_0xe9c5('0x19')](0x194);}return _0x480187;};}function handleError(_0x50256b,_0x4fa0c2){_0x4fa0c2=_0x4fa0c2||0x1f4;return function(_0x2112a6){logger['error'](_0x2112a6[_0xe9c5('0x2b')]);if(_0x2112a6[_0xe9c5('0x2c')]){delete _0x2112a6[_0xe9c5('0x2c')];}_0x50256b[_0xe9c5('0x1a')](_0x4fa0c2)[_0xe9c5('0x2d')](_0x2112a6);};}exports['index']=function(_0xe3464c,_0x4fcabd){var _0x46d3e6={},_0x5088a6={},_0x348fee={'count':0x0,'rows':[]};var _0x32e267=_[_0xe9c5('0x2e')](db[_0xe9c5('0x2f')][_0xe9c5('0x30')],function(_0x4e6043){return{'name':_0x4e6043[_0xe9c5('0x31')],'type':_0x4e6043[_0xe9c5('0x32')][_0xe9c5('0x33')]};});_0x5088a6[_0xe9c5('0x34')]=_[_0xe9c5('0x2e')](_0x32e267,'name');_0x5088a6['query']=_[_0xe9c5('0x35')](_0xe3464c[_0xe9c5('0x36')]);_0x5088a6[_0xe9c5('0x37')]=_[_0xe9c5('0x38')](_0x5088a6[_0xe9c5('0x34')],_0x5088a6[_0xe9c5('0x36')]);_0x46d3e6[_0xe9c5('0x39')]=_[_0xe9c5('0x38')](_0x5088a6['model'],qs[_0xe9c5('0x3a')](_0xe3464c[_0xe9c5('0x36')]['fields']));_0x46d3e6[_0xe9c5('0x39')]=_0x46d3e6['attributes'][_0xe9c5('0x3b')]?_0x46d3e6[_0xe9c5('0x39')]:_0x5088a6[_0xe9c5('0x34')];if(!_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x3c')](_0xe9c5('0x3d'))){_0x46d3e6[_0xe9c5('0x1d')]=qs[_0xe9c5('0x1d')](_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x1d')]);_0x46d3e6[_0xe9c5('0x1f')]=qs[_0xe9c5('0x1f')](_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x1f')]);}_0x46d3e6[_0xe9c5('0x3e')]=qs[_0xe9c5('0x3f')](_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x3f')]);_0x46d3e6[_0xe9c5('0x40')]=qs['filters'](_[_0xe9c5('0x41')](_0xe3464c[_0xe9c5('0x36')],_0x5088a6[_0xe9c5('0x37')]),_0x32e267);if(_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x42')]){_0x46d3e6[_0xe9c5('0x40')]=_['merge'](_0x46d3e6[_0xe9c5('0x40')],{'$or':_[_0xe9c5('0x2e')](_0x32e267,function(_0x3a8be8){if(_0x3a8be8['type']!==_0xe9c5('0x43')){var _0x1bf7c5={};_0x1bf7c5[_0x3a8be8[_0xe9c5('0x2c')]]={'$like':'%'+_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x42')]+'%'};return _0x1bf7c5;}})});}_0x46d3e6=_[_0xe9c5('0x44')]({},_0x46d3e6,_0xe3464c[_0xe9c5('0x45')]);var _0x1fdf92={'where':_0x46d3e6[_0xe9c5('0x40')]};return db[_0xe9c5('0x2f')][_0xe9c5('0x1e')](_0x1fdf92)['then'](function(_0x51dd18){_0x348fee[_0xe9c5('0x1e')]=_0x51dd18;if(_0xe3464c[_0xe9c5('0x36')][_0xe9c5('0x46')]){_0x46d3e6[_0xe9c5('0x47')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x46d3e6);})[_0xe9c5('0x26')](function(_0x144e85){_0x348fee['rows']=_0x144e85;return _0x348fee;})[_0xe9c5('0x26')](respondWithFilteredResult(_0x4fcabd,_0x46d3e6))['catch'](handleError(_0x4fcabd,null));};exports['show']=function(_0x5c395d,_0x3c7e42){var _0x232ab0={'raw':![],'where':{'id':_0x5c395d[_0xe9c5('0x48')]['id']}},_0x1d081a={};_0x1d081a['model']=_[_0xe9c5('0x35')](db[_0xe9c5('0x2f')][_0xe9c5('0x30')]);_0x1d081a[_0xe9c5('0x36')]=_[_0xe9c5('0x35')](_0x5c395d[_0xe9c5('0x36')]);_0x1d081a[_0xe9c5('0x37')]=_[_0xe9c5('0x38')](_0x1d081a['model'],_0x1d081a[_0xe9c5('0x36')]);_0x232ab0[_0xe9c5('0x39')]=_[_0xe9c5('0x38')](_0x1d081a[_0xe9c5('0x34')],qs[_0xe9c5('0x3a')](_0x5c395d[_0xe9c5('0x36')]['fields']));_0x232ab0['attributes']=_0x232ab0['attributes']['length']?_0x232ab0[_0xe9c5('0x39')]:_0x1d081a[_0xe9c5('0x34')];if(_0x5c395d[_0xe9c5('0x36')]['includeAll']){_0x232ab0[_0xe9c5('0x47')]=[{'all':!![]}];}_0x232ab0=_[_0xe9c5('0x44')]({},_0x232ab0,_0x5c395d[_0xe9c5('0x45')]);return db[_0xe9c5('0x2f')][_0xe9c5('0x49')](_0x232ab0)[_0xe9c5('0x26')](handleEntityNotFound(_0x3c7e42,null))['then'](respondWithResult(_0x3c7e42,null))[_0xe9c5('0x4a')](handleError(_0x3c7e42,null));};exports[_0xe9c5('0x4b')]=function(_0x1da6a3,_0x249940){return db['VoiceChanSpy'][_0xe9c5('0x4b')](_0x1da6a3[_0xe9c5('0x4c')],{})[_0xe9c5('0x26')](function(_0x2d68be){var _0x38396f=_0x1da6a3[_0xe9c5('0x4d')]['get']({'plain':!![]});if(!_0x38396f)throw new Error(_0xe9c5('0x4e'));if(_0x38396f[_0xe9c5('0x4f')]===_0xe9c5('0x4d')){var _0x9d0154=_0x2d68be['get']({'plain':!![]});var _0x375f60=_0xe9c5('0x50');return db[_0xe9c5('0x51')][_0xe9c5('0x49')]({'where':{'name':_0x375f60,'userProfileId':_0x38396f[_0xe9c5('0x52')]},'raw':!![]})[_0xe9c5('0x26')](function(_0x581f8f){if(_0x581f8f&&_0x581f8f['autoAssociation']===0x0){return db[_0xe9c5('0x29')][_0xe9c5('0x4b')]({'name':_0x9d0154[_0xe9c5('0x2c')],'resourceId':_0x9d0154['id'],'type':_0x581f8f[_0xe9c5('0x2c')],'sectionId':_0x581f8f['id']},{})[_0xe9c5('0x26')](function(){return _0x2d68be;});}else{return _0x2d68be;}})[_0xe9c5('0x4a')](function(_0x2a9260){logger[_0xe9c5('0x53')](_0xe9c5('0x54'),_0x2a9260);throw _0x2a9260;});}return _0x2d68be;})[_0xe9c5('0x26')](respondWithResult(_0x249940,0xc9))[_0xe9c5('0x4a')](handleError(_0x249940,null));};exports[_0xe9c5('0x25')]=function(_0x2086fd,_0x3cd72b){if(_0x2086fd[_0xe9c5('0x4c')]['id']){delete _0x2086fd[_0xe9c5('0x4c')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0x2086fd['params']['id']}})[_0xe9c5('0x26')](handleEntityNotFound(_0x3cd72b,null))[_0xe9c5('0x26')](saveUpdates(_0x2086fd[_0xe9c5('0x4c')],null))['then'](respondWithResult(_0x3cd72b,null))[_0xe9c5('0x4a')](handleError(_0x3cd72b,null));};exports['destroy']=function(_0x227370,_0xbac8ef){return db[_0xe9c5('0x2f')][_0xe9c5('0x49')]({'where':{'id':_0x227370[_0xe9c5('0x48')]['id']}})['then'](handleEntityNotFound(_0xbac8ef,null))[_0xe9c5('0x26')](removeEntity(_0xbac8ef,null))[_0xe9c5('0x4a')](handleError(_0xbac8ef,null));};
\ No newline at end of file
+var _0x4b07=['error','stack','name','send','index','VoiceChanSpy','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','length','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','ChanSpies','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','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','offset','limit','undefined','count','Content-Range','json','reject','save','update','then','destroy','get','UserProfileResource','end'];(function(_0x228de9,_0x391f44){var _0x4b9c15=function(_0x5d330c){while(--_0x5d330c){_0x228de9['push'](_0x228de9['shift']());}};_0x4b9c15(++_0x391f44);}(_0x4b07,0x1d6));var _0x74b0=function(_0x15e055,_0x4d13d7){_0x15e055=_0x15e055-0x0;var _0x4959e4=_0x4b07[_0x15e055];return _0x4959e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x74b0('0x0'));var zipdir=require(_0x74b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x74b0('0x2'));var moment=require(_0x74b0('0x3'));var BPromise=require(_0x74b0('0x4'));var Mustache=require(_0x74b0('0x5'));var util=require('util');var path=require(_0x74b0('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x74b0('0x7'));var _=require(_0x74b0('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x74b0('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x74b0('0xa'));var querystring=require(_0x74b0('0xb'));var Papa=require(_0x74b0('0xc'));var Redis=require(_0x74b0('0xd'));var authService=require(_0x74b0('0xe'));var qs=require(_0x74b0('0xf'));var as=require(_0x74b0('0x10'));var hardwareService=require(_0x74b0('0x11'));var logger=require(_0x74b0('0x12'))(_0x74b0('0x13'));var utils=require(_0x74b0('0x14'));var config=require(_0x74b0('0x15'));var licenseUtil=require(_0x74b0('0x16'));var db=require(_0x74b0('0x17'))['db'];function respondWithStatusCode(_0xf1ec58,_0x200f36){_0x200f36=_0x200f36||0xcc;return function(_0x4e9f47){if(_0x4e9f47){return _0xf1ec58[_0x74b0('0x18')](_0x200f36);}return _0xf1ec58[_0x74b0('0x19')](_0x200f36)['end']();};}function respondWithResult(_0xefd5f7,_0x49f519){_0x49f519=_0x49f519||0xc8;return function(_0x72f633){if(_0x72f633){return _0xefd5f7[_0x74b0('0x19')](_0x49f519)['json'](_0x72f633);}};}function respondWithFilteredResult(_0x4004d7,_0x50aa7d){return function(_0x3b002a){if(_0x3b002a){var _0x539172=typeof _0x50aa7d[_0x74b0('0x1a')]==='undefined'&&typeof _0x50aa7d[_0x74b0('0x1b')]===_0x74b0('0x1c');var _0x397ee4=_0x3b002a[_0x74b0('0x1d')];var _0x26deb1=_0x539172?0x0:_0x50aa7d[_0x74b0('0x1a')];var _0x8425cc=_0x539172?_0x3b002a[_0x74b0('0x1d')]:_0x50aa7d['offset']+_0x50aa7d['limit'];var _0x55ccc1;if(_0x8425cc>=_0x397ee4){_0x8425cc=_0x397ee4;_0x55ccc1=0xc8;}else{_0x55ccc1=0xce;}_0x4004d7[_0x74b0('0x19')](_0x55ccc1);return _0x4004d7['set'](_0x74b0('0x1e'),_0x26deb1+'-'+_0x8425cc+'/'+_0x397ee4)[_0x74b0('0x1f')](_0x3b002a);}return null;};}function patchUpdates(_0xc17e43){return function(_0x28a89e){try{jsonpatch['apply'](_0x28a89e,_0xc17e43,!![]);}catch(_0x18004b){return BPromise[_0x74b0('0x20')](_0x18004b);}return _0x28a89e[_0x74b0('0x21')]();};}function saveUpdates(_0xc6c020,_0x550ff7){return function(_0x44f568){if(_0x44f568){return _0x44f568[_0x74b0('0x22')](_0xc6c020)[_0x74b0('0x23')](function(_0x167dd7){return _0x167dd7;});}return null;};}function removeEntity(_0x3e70d5,_0x1396f3){return function(_0x7259f4){if(_0x7259f4){return _0x7259f4[_0x74b0('0x24')]()[_0x74b0('0x23')](function(){var _0x54e2fd=_0x7259f4[_0x74b0('0x25')]({'plain':!![]});var _0x5b6b58='ChanSpies';return db[_0x74b0('0x26')][_0x74b0('0x24')]({'where':{'type':_0x5b6b58,'resourceId':_0x54e2fd['id']}})[_0x74b0('0x23')](function(){return _0x7259f4;});})['then'](function(){_0x3e70d5[_0x74b0('0x19')](0xcc)[_0x74b0('0x27')]();});}};}function handleEntityNotFound(_0x1f8b2a,_0x531fee){return function(_0x57c283){if(!_0x57c283){_0x1f8b2a[_0x74b0('0x18')](0x194);}return _0x57c283;};}function handleError(_0x3b84f0,_0x2d061b){_0x2d061b=_0x2d061b||0x1f4;return function(_0x2163f4){logger[_0x74b0('0x28')](_0x2163f4[_0x74b0('0x29')]);if(_0x2163f4['name']){delete _0x2163f4[_0x74b0('0x2a')];}_0x3b84f0['status'](_0x2d061b)[_0x74b0('0x2b')](_0x2163f4);};}exports[_0x74b0('0x2c')]=function(_0x4dfbdb,_0x2b93ae){var _0x25db17={},_0x143093={},_0x5e0560={'count':0x0,'rows':[]};var _0x529abb=_['map'](db[_0x74b0('0x2d')][_0x74b0('0x2e')],function(_0x57f04e){return{'name':_0x57f04e[_0x74b0('0x2f')],'type':_0x57f04e[_0x74b0('0x30')][_0x74b0('0x31')]};});_0x143093[_0x74b0('0x32')]=_[_0x74b0('0x33')](_0x529abb,_0x74b0('0x2a'));_0x143093['query']=_[_0x74b0('0x34')](_0x4dfbdb[_0x74b0('0x35')]);_0x143093[_0x74b0('0x36')]=_['intersection'](_0x143093[_0x74b0('0x32')],_0x143093[_0x74b0('0x35')]);_0x25db17['attributes']=_[_0x74b0('0x37')](_0x143093[_0x74b0('0x32')],qs[_0x74b0('0x38')](_0x4dfbdb['query'][_0x74b0('0x38')]));_0x25db17[_0x74b0('0x39')]=_0x25db17[_0x74b0('0x39')]['length']?_0x25db17['attributes']:_0x143093[_0x74b0('0x32')];if(!_0x4dfbdb['query'][_0x74b0('0x3a')](_0x74b0('0x3b'))){_0x25db17[_0x74b0('0x1b')]=qs[_0x74b0('0x1b')](_0x4dfbdb[_0x74b0('0x35')][_0x74b0('0x1b')]);_0x25db17[_0x74b0('0x1a')]=qs[_0x74b0('0x1a')](_0x4dfbdb[_0x74b0('0x35')][_0x74b0('0x1a')]);}_0x25db17[_0x74b0('0x3c')]=qs[_0x74b0('0x3d')](_0x4dfbdb[_0x74b0('0x35')][_0x74b0('0x3d')]);_0x25db17[_0x74b0('0x3e')]=qs[_0x74b0('0x36')](_[_0x74b0('0x3f')](_0x4dfbdb[_0x74b0('0x35')],_0x143093[_0x74b0('0x36')]),_0x529abb);if(_0x4dfbdb[_0x74b0('0x35')][_0x74b0('0x40')]){_0x25db17[_0x74b0('0x3e')]=_[_0x74b0('0x41')](_0x25db17[_0x74b0('0x3e')],{'$or':_['map'](_0x529abb,function(_0x83be1d){if(_0x83be1d['type']!=='VIRTUAL'){var _0x4fe7da={};_0x4fe7da[_0x83be1d[_0x74b0('0x2a')]]={'$like':'%'+_0x4dfbdb[_0x74b0('0x35')][_0x74b0('0x40')]+'%'};return _0x4fe7da;}})});}_0x25db17=_[_0x74b0('0x41')]({},_0x25db17,_0x4dfbdb[_0x74b0('0x42')]);var _0x145f01={'where':_0x25db17['where']};return db['VoiceChanSpy'][_0x74b0('0x1d')](_0x145f01)[_0x74b0('0x23')](function(_0x409c65){_0x5e0560[_0x74b0('0x1d')]=_0x409c65;if(_0x4dfbdb[_0x74b0('0x35')]['includeAll']){_0x25db17['include']=[{'all':!![]}];}return db['VoiceChanSpy'][_0x74b0('0x43')](_0x25db17);})[_0x74b0('0x23')](function(_0xffc84){_0x5e0560[_0x74b0('0x44')]=_0xffc84;return _0x5e0560;})['then'](respondWithFilteredResult(_0x2b93ae,_0x25db17))[_0x74b0('0x45')](handleError(_0x2b93ae,null));};exports[_0x74b0('0x46')]=function(_0x5ce200,_0x24dcbd){var _0x3c6973={'raw':![],'where':{'id':_0x5ce200[_0x74b0('0x47')]['id']}},_0x5bee95={};_0x5bee95['model']=_[_0x74b0('0x34')](db[_0x74b0('0x2d')][_0x74b0('0x2e')]);_0x5bee95['query']=_['keys'](_0x5ce200[_0x74b0('0x35')]);_0x5bee95['filters']=_[_0x74b0('0x37')](_0x5bee95['model'],_0x5bee95[_0x74b0('0x35')]);_0x3c6973[_0x74b0('0x39')]=_[_0x74b0('0x37')](_0x5bee95[_0x74b0('0x32')],qs[_0x74b0('0x38')](_0x5ce200[_0x74b0('0x35')][_0x74b0('0x38')]));_0x3c6973[_0x74b0('0x39')]=_0x3c6973[_0x74b0('0x39')][_0x74b0('0x48')]?_0x3c6973[_0x74b0('0x39')]:_0x5bee95[_0x74b0('0x32')];if(_0x5ce200['query'][_0x74b0('0x49')]){_0x3c6973['include']=[{'all':!![]}];}_0x3c6973=_[_0x74b0('0x41')]({},_0x3c6973,_0x5ce200[_0x74b0('0x42')]);return db[_0x74b0('0x2d')][_0x74b0('0x4a')](_0x3c6973)[_0x74b0('0x23')](handleEntityNotFound(_0x24dcbd,null))[_0x74b0('0x23')](respondWithResult(_0x24dcbd,null))['catch'](handleError(_0x24dcbd,null));};exports['create']=function(_0x4edafa,_0x53551f){return db[_0x74b0('0x2d')][_0x74b0('0x4b')](_0x4edafa['body'],{})[_0x74b0('0x23')](function(_0x14cc33){var _0x163af6=_0x4edafa['user'][_0x74b0('0x25')]({'plain':!![]});if(!_0x163af6)throw new Error(_0x74b0('0x4c'));if(_0x163af6[_0x74b0('0x4d')]===_0x74b0('0x4e')){var _0x53bfb8=_0x14cc33[_0x74b0('0x25')]({'plain':!![]});var _0x2e3192=_0x74b0('0x4f');return db[_0x74b0('0x50')]['find']({'where':{'name':_0x2e3192,'userProfileId':_0x163af6[_0x74b0('0x51')]},'raw':!![]})[_0x74b0('0x23')](function(_0x24de7a){if(_0x24de7a&&_0x24de7a[_0x74b0('0x52')]===0x0){return db[_0x74b0('0x26')][_0x74b0('0x4b')]({'name':_0x53bfb8['name'],'resourceId':_0x53bfb8['id'],'type':_0x24de7a['name'],'sectionId':_0x24de7a['id']},{})['then'](function(){return _0x14cc33;});}else{return _0x14cc33;}})[_0x74b0('0x45')](function(_0x1a11ca){logger[_0x74b0('0x28')](_0x74b0('0x53'),_0x1a11ca);throw _0x1a11ca;});}return _0x14cc33;})[_0x74b0('0x23')](respondWithResult(_0x53551f,0xc9))[_0x74b0('0x45')](handleError(_0x53551f,null));};exports['update']=function(_0x5235d4,_0x239a1){if(_0x5235d4['body']['id']){delete _0x5235d4[_0x74b0('0x54')]['id'];}return db[_0x74b0('0x2d')][_0x74b0('0x4a')]({'where':{'id':_0x5235d4[_0x74b0('0x47')]['id']}})['then'](handleEntityNotFound(_0x239a1,null))['then'](saveUpdates(_0x5235d4[_0x74b0('0x54')],null))[_0x74b0('0x23')](respondWithResult(_0x239a1,null))[_0x74b0('0x45')](handleError(_0x239a1,null));};exports['destroy']=function(_0x706f2c,_0x510307){return db[_0x74b0('0x2d')][_0x74b0('0x4a')]({'where':{'id':_0x706f2c['params']['id']}})['then'](handleEntityNotFound(_0x510307,null))[_0x74b0('0x23')](removeEntity(_0x510307,null))[_0x74b0('0x45')](handleError(_0x510307,null));};
\ No newline at end of file
index d498ea1..4c9f719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bcc=['bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','%s%s','prefix','system','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','join','length','internal','User','findAll','agent','then','catch','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4bcc,0x1f0));var _0xc4bc=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x4bcc[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0xc4bc('0x0'));var util=require(_0xc4bc('0x1'));var BPromise=require(_0xc4bc('0x2'));var attributes=require(_0xc4bc('0x3'));var getUserApplications=function(_0xeae6fc,_0x248743,_0xc2df9d){var _0x3e53b1=0x1;var _0x1b5955=[];var _0x52f1d4={'context':_0x248743[_0xc4bc('0x4')]||_0xc4bc('0x5'),'exten':util['format'](_0xc4bc('0x6'),_0xeae6fc[_0xc4bc('0x7')],_0xc2df9d),'type':_0xc4bc('0x8'),'isApp':![],'ChanSpyId':_0xeae6fc['id'],'UserId':_0x248743['id']};_0x1b5955[_0xc4bc('0x9')](_[_0xc4bc('0xa')]({'app':'Set','appdata':util['format'](_0xc4bc('0xb'),_0xc4bc('0xc')),'priority':_0x3e53b1++},_0x52f1d4));if(_0xeae6fc[_0xc4bc('0xd')]){_0x1b5955[_0xc4bc('0x9')](_[_0xc4bc('0xa')]({'app':_0xc4bc('0xe'),'appdata':util['format'](_0xc4bc('0xf'),_0xeae6fc[_0xc4bc('0x10')]),'priority':_0x3e53b1++},_0x52f1d4));}if(_0xeae6fc[_0xc4bc('0x11')]){_0x1b5955[_0xc4bc('0x9')](_[_0xc4bc('0xa')]({'app':_0xc4bc('0x12'),'appdata':_0xeae6fc[_0xc4bc('0x13')],'priority':_0x3e53b1++},_0x52f1d4));}_0x1b5955['push'](_[_0xc4bc('0xa')]({'app':'ChanSpy','appdata':util['format'](_0xc4bc('0x14'),_0x248743[_0xc4bc('0x15')],_0xeae6fc[_0xc4bc('0x16')]?_0xeae6fc['options'][_0xc4bc('0x17')](''):''),'priority':_0x3e53b1++},_0x52f1d4));if(_0xeae6fc[_0xc4bc('0xd')]){_0x1b5955[_0xc4bc('0x9')](_[_0xc4bc('0xa')]({'app':'StopMixMonitor','priority':_0x3e53b1++},_0x52f1d4));}return _0x1b5955;};var getChanSpyApplications=function(_0x3b75cb,_0x80195b){var _0x216f1e=[];for(var _0x21533d=0x0,_0x99fc39=0x1;_0x21533d<_0x80195b[_0xc4bc('0x18')];_0x21533d++,_0x99fc39=0x1){_0x216f1e=_0x216f1e['concat'](getUserApplications(_0x3b75cb,_0x80195b[_0x21533d],_0x80195b[_0x21533d][_0xc4bc('0x19')]));if(_0x80195b[_0x21533d][_0xc4bc('0x19')]!=_0x80195b[_0x21533d]['name']){_0x216f1e=_0x216f1e['concat'](getUserApplications(_0x3b75cb,_0x80195b[_0x21533d],_0x80195b[_0x21533d][_0xc4bc('0x15')]));}}return _0x216f1e;};var getChanSpyPromise=function(_0x16d2b7,_0x725ebd){return new BPromise(function(_0x16fa6a,_0x3217cd){return _0x16d2b7[_0xc4bc('0x1a')][_0xc4bc('0x1b')]({'attributes':['id',_0xc4bc('0x15'),'internal'],'where':{'role':_0xc4bc('0x1c'),'chanspy':!![]},'raw':!![]})[_0xc4bc('0x1d')](function(_0x5697db){if(_0x5697db){return _0x16fa6a(getChanSpyApplications(_0x725ebd,_0x5697db));}return _0x16fa6a([]);})[_0xc4bc('0x1e')](function(_0x197758){_0x3217cd(_0x197758);});});};module['exports']=function(_0x5b54e3,_0x57c78a){var _0x351c24=_0x5b54e3[_0xc4bc('0x1f')];return _0x5b54e3[_0xc4bc('0x20')](_0xc4bc('0x21'),attributes,{'tableName':_0xc4bc('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5671ae,_0x3587df,_0x3a63d1){return getChanSpyPromise(_0x351c24,_0x5671ae)[_0xc4bc('0x1d')](function(_0x52d01f){if(_0x52d01f&&_0x52d01f['length']){return _0x351c24[_0xc4bc('0x23')][_0xc4bc('0x24')](_0x52d01f);}})[_0xc4bc('0x1d')](function(){_0x3a63d1();})[_0xc4bc('0x1e')](function(_0x10b189){_0x3a63d1(_0x10b189);});},'afterUpdate':function(_0x156196,_0x47455d,_0x171724){return _0x351c24[_0xc4bc('0x23')][_0xc4bc('0x25')]({'where':{'ChanSpyId':_0x156196['id']}})['then'](function(){return getChanSpyPromise(_0x351c24,_0x156196);})[_0xc4bc('0x1d')](function(_0x522f4b){if(_0x522f4b&&_0x522f4b[_0xc4bc('0x18')]){return _0x351c24[_0xc4bc('0x23')]['bulkCreate'](_0x522f4b);}})[_0xc4bc('0x1d')](function(){_0x171724();})[_0xc4bc('0x1e')](function(_0x401298){_0x171724(_0x401298);});},'afterDestroy':function(_0xdb0bf4,_0x2080d1,_0x2b84f6){return _0x351c24['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0xdb0bf4['id']}})[_0xc4bc('0x1d')](function(){_0x2b84f6();})[_0xc4bc('0x1e')](function(_0x1b3437){_0x2b84f6(_0x1b3437);});}}});};
\ No newline at end of file
+var _0x68b6=['system','push','merge','Set','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password','SIP/%s,%s','name','options','join','StopMixMonitor','length','concat','internal','User','agent','then','catch','exports','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x68b6,0x1b4));var _0x668b=function(_0x2cf875,_0x111c9e){_0x2cf875=_0x2cf875-0x0;var _0x90e73d=_0x68b6[_0x2cf875];return _0x90e73d;};'use strict';var _=require(_0x668b('0x0'));var util=require(_0x668b('0x1'));var BPromise=require(_0x668b('0x2'));var attributes=require(_0x668b('0x3'));var getUserApplications=function(_0x4d14dd,_0x21a635,_0x1af829){var _0x258471=0x1;var _0x90ede3=[];var _0x23c5d4={'context':_0x21a635[_0x668b('0x4')]||_0x668b('0x5'),'exten':util[_0x668b('0x6')](_0x668b('0x7'),_0x4d14dd['prefix'],_0x1af829),'type':_0x668b('0x8'),'isApp':![],'ChanSpyId':_0x4d14dd['id'],'UserId':_0x21a635['id']};_0x90ede3[_0x668b('0x9')](_[_0x668b('0xa')]({'app':_0x668b('0xb'),'appdata':util[_0x668b('0x6')]('CDR(type)=%s','chanspy'),'priority':_0x258471++},_0x23c5d4));if(_0x4d14dd[_0x668b('0xc')]){_0x90ede3[_0x668b('0x9')](_[_0x668b('0xa')]({'app':_0x668b('0xd'),'appdata':util['format'](_0x668b('0xe'),_0x4d14dd[_0x668b('0xf')]),'priority':_0x258471++},_0x23c5d4));}if(_0x4d14dd[_0x668b('0x10')]){_0x90ede3[_0x668b('0x9')](_['merge']({'app':'Authenticate','appdata':_0x4d14dd[_0x668b('0x11')],'priority':_0x258471++},_0x23c5d4));}_0x90ede3[_0x668b('0x9')](_[_0x668b('0xa')]({'app':'ChanSpy','appdata':util[_0x668b('0x6')](_0x668b('0x12'),_0x21a635[_0x668b('0x13')],_0x4d14dd[_0x668b('0x14')]?_0x4d14dd['options'][_0x668b('0x15')](''):''),'priority':_0x258471++},_0x23c5d4));if(_0x4d14dd[_0x668b('0xc')]){_0x90ede3[_0x668b('0x9')](_[_0x668b('0xa')]({'app':_0x668b('0x16'),'priority':_0x258471++},_0x23c5d4));}return _0x90ede3;};var getChanSpyApplications=function(_0x49cebc,_0x402dc7){var _0x5afeac=[];for(var _0x16dd6c=0x0,_0x1f537a=0x1;_0x16dd6c<_0x402dc7[_0x668b('0x17')];_0x16dd6c++,_0x1f537a=0x1){_0x5afeac=_0x5afeac[_0x668b('0x18')](getUserApplications(_0x49cebc,_0x402dc7[_0x16dd6c],_0x402dc7[_0x16dd6c]['internal']));if(_0x402dc7[_0x16dd6c][_0x668b('0x19')]!=_0x402dc7[_0x16dd6c]['name']){_0x5afeac=_0x5afeac['concat'](getUserApplications(_0x49cebc,_0x402dc7[_0x16dd6c],_0x402dc7[_0x16dd6c][_0x668b('0x13')]));}}return _0x5afeac;};var getChanSpyPromise=function(_0x512d92,_0x348fae){return new BPromise(function(_0x3bf764,_0x1cd5f0){return _0x512d92[_0x668b('0x1a')]['findAll']({'attributes':['id',_0x668b('0x13'),_0x668b('0x19')],'where':{'role':_0x668b('0x1b'),'chanspy':!![]},'raw':!![]})[_0x668b('0x1c')](function(_0x266495){if(_0x266495){return _0x3bf764(getChanSpyApplications(_0x348fae,_0x266495));}return _0x3bf764([]);})[_0x668b('0x1d')](function(_0x283e81){_0x1cd5f0(_0x283e81);});});};module[_0x668b('0x1e')]=function(_0x2295e8,_0x25be73){var _0x3266da=_0x2295e8['models'];return _0x2295e8[_0x668b('0x1f')](_0x668b('0x20'),attributes,{'tableName':_0x668b('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x20cdee,_0x5b1a64,_0x4a4e07){return getChanSpyPromise(_0x3266da,_0x20cdee)[_0x668b('0x1c')](function(_0x6e09c7){if(_0x6e09c7&&_0x6e09c7[_0x668b('0x17')]){return _0x3266da[_0x668b('0x22')][_0x668b('0x23')](_0x6e09c7);}})[_0x668b('0x1c')](function(){_0x4a4e07();})[_0x668b('0x1d')](function(_0x4cb846){_0x4a4e07(_0x4cb846);});},'afterUpdate':function(_0x195eea,_0x25f34c,_0xafe95f){return _0x3266da[_0x668b('0x22')][_0x668b('0x24')]({'where':{'ChanSpyId':_0x195eea['id']}})['then'](function(){return getChanSpyPromise(_0x3266da,_0x195eea);})[_0x668b('0x1c')](function(_0x4f4c65){if(_0x4f4c65&&_0x4f4c65[_0x668b('0x17')]){return _0x3266da['VoiceExtension'][_0x668b('0x23')](_0x4f4c65);}})[_0x668b('0x1c')](function(){_0xafe95f();})[_0x668b('0x1d')](function(_0x57f110){_0xafe95f(_0x57f110);});},'afterDestroy':function(_0x5f0411,_0x40f806,_0x51aa92){return _0x3266da[_0x668b('0x22')][_0x668b('0x24')]({'where':{'ChanSpyId':_0x5f0411['id']}})[_0x668b('0x1c')](function(){_0x51aa92();})[_0x668b('0x1d')](function(_0x405097){_0x51aa92(_0x405097);});}}});};
\ No newline at end of file
index 47c4003..729e292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['client','http','then','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise'];(function(_0x2756a7,_0x10a5de){var _0x5dcdfb=function(_0x35f713){while(--_0x35f713){_0x2756a7['push'](_0x2756a7['shift']());}};_0x5dcdfb(++_0x10a5de);}(_0x6324,0x142));var _0x4632=function(_0x6e5ca9,_0x581255){_0x6e5ca9=_0x6e5ca9-0x0;var _0x39ecf8=_0x6324[_0x6e5ca9];return _0x39ecf8;};'use strict';var _=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var moment=require(_0x4632('0x2'));var BPromise=require(_0x4632('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4632('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4632('0x5'));var logger=require('../../config/logger')(_0x4632('0x6'));var config=require('../../config/environment');var jayson=require(_0x4632('0x7'));var client=jayson[_0x4632('0x8')][_0x4632('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x126e9a,_0x4a15b2,_0x17e860){return new BPromise(function(_0x44dd6d,_0x390a46){return client['request'](_0x126e9a,_0x17e860)[_0x4632('0xa')](function(_0x47824c){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,_0x4632('0xb'));logger[_0x4632('0xc')](_0x4632('0xd'),_0x4a15b2,_0x4632('0xb'),JSON[_0x4632('0xe')](_0x47824c));if(_0x47824c[_0x4632('0xf')]){if(_0x47824c[_0x4632('0xf')][_0x4632('0x10')]===0x1f4){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x47824c['error'][_0x4632('0x12')]);return _0x390a46(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}logger[_0x4632('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);return _0x44dd6d(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}else{logger[_0x4632('0x13')]('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,'request\x20sent');_0x44dd6d(_0x47824c[_0x4632('0x14')][_0x4632('0x12')]);}})[_0x4632('0x15')](function(_0x125eb9){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x125eb9);_0x390a46(_0x125eb9);});});}
\ No newline at end of file
+var _0xa74f=['result','catch','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent'];(function(_0x444e8b,_0x3524cc){var _0x35eb37=function(_0x17e1a3){while(--_0x17e1a3){_0x444e8b['push'](_0x444e8b['shift']());}};_0x35eb37(++_0x3524cc);}(_0xa74f,0x9a));var _0xfa74=function(_0x4c4037,_0x15054b){_0x4c4037=_0x4c4037-0x0;var _0x357862=_0xa74f[_0x4c4037];return _0x357862;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfa74('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfa74('0x1'));var db=require(_0xfa74('0x2'))['db'];var utils=require(_0xfa74('0x3'));var logger=require(_0xfa74('0x4'))('rpc');var config=require(_0xfa74('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfa74('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x9ddbd2,_0x3ac32e,_0x2d9fa9){return new BPromise(function(_0x287921,_0x344e04){return client['request'](_0x9ddbd2,_0x2d9fa9)[_0xfa74('0x7')](function(_0x37d4d8){logger[_0xfa74('0x8')](_0xfa74('0x9'),_0x3ac32e,'request\x20sent');logger[_0xfa74('0xa')](_0xfa74('0xb'),_0x3ac32e,'request\x20sent',JSON[_0xfa74('0xc')](_0x37d4d8));if(_0x37d4d8[_0xfa74('0xd')]){if(_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xe')]===0x1f4){logger['error'](_0xfa74('0x9'),_0x3ac32e,_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xf')]);return _0x344e04(_0x37d4d8[_0xfa74('0xd')]['message']);}logger[_0xfa74('0xd')](_0xfa74('0x9'),_0x3ac32e,_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xf')]);return _0x287921(_0x37d4d8[_0xfa74('0xd')]['message']);}else{logger[_0xfa74('0x8')](_0xfa74('0x9'),_0x3ac32e,_0xfa74('0x10'));_0x287921(_0x37d4d8[_0xfa74('0x11')][_0xfa74('0xf')]);}})[_0xfa74('0x12')](function(_0x3b9e32){logger['error'](_0xfa74('0x9'),_0x3ac32e,_0x3b9e32);_0x344e04(_0x3b9e32);});});}
\ No newline at end of file
index 6c41cbf..87c73af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de6=['./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x3cdbf5,_0x268066){var _0x35c282=function(_0x444bc7){while(--_0x444bc7){_0x3cdbf5['push'](_0x3cdbf5['shift']());}};_0x35c282(++_0x268066);}(_0x1de6,0x77));var _0x61de=function(_0x4ea955,_0x1eda76){_0x4ea955=_0x4ea955-0x0;var _0x558561=_0x1de6[_0x4ea955];return _0x558561;};'use strict';var multer=require(_0x61de('0x0'));var util=require(_0x61de('0x1'));var path=require(_0x61de('0x2'));var timeout=require(_0x61de('0x3'));var express=require(_0x61de('0x4'));var router=express['Router']();var fs_extra=require(_0x61de('0x5'));var auth=require(_0x61de('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x61de('0x7'));router[_0x61de('0x8')]('/',auth[_0x61de('0x9')](),controller[_0x61de('0xa')]);router[_0x61de('0x8')](_0x61de('0xb'),auth[_0x61de('0x9')](),controller[_0x61de('0xc')]);router[_0x61de('0xd')]('/',auth[_0x61de('0x9')](),controller['create']);router['put'](_0x61de('0xb'),auth[_0x61de('0x9')](),controller[_0x61de('0xe')]);router[_0x61de('0xf')](_0x61de('0xb'),auth[_0x61de('0x9')](),controller[_0x61de('0x10')]);module[_0x61de('0x11')]=router;
\ No newline at end of file
+var _0xcba0=['util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','index','/:id','isAuthenticated','show','put','delete','destroy','multer'];(function(_0x2edfbe,_0x537cea){var _0x22e135=function(_0x25e74f){while(--_0x25e74f){_0x2edfbe['push'](_0x2edfbe['shift']());}};_0x22e135(++_0x537cea);}(_0xcba0,0x153));var _0x0cba=function(_0x34a047,_0x200cb9){_0x34a047=_0x34a047-0x0;var _0x26cf89=_0xcba0[_0x34a047];return _0x26cf89;};'use strict';var multer=require(_0x0cba('0x0'));var util=require(_0x0cba('0x1'));var path=require('path');var timeout=require(_0x0cba('0x2'));var express=require(_0x0cba('0x3'));var router=express[_0x0cba('0x4')]();var fs_extra=require(_0x0cba('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0cba('0x6'));var config=require(_0x0cba('0x7'));var controller=require(_0x0cba('0x8'));router[_0x0cba('0x9')]('/',auth['isAuthenticated'](),controller[_0x0cba('0xa')]);router[_0x0cba('0x9')](_0x0cba('0xb'),auth[_0x0cba('0xc')](),controller[_0x0cba('0xd')]);router['post']('/',auth[_0x0cba('0xc')](),controller['create']);router[_0x0cba('0xe')](_0x0cba('0xb'),auth[_0x0cba('0xc')](),controller['update']);router[_0x0cba('0xf')](_0x0cba('0xb'),auth[_0x0cba('0xc')](),controller[_0x0cba('0x10')]);module['exports']=router;
\ No newline at end of file
index 37aed11..0cc2f1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9506=['sequelize','STRING','name','BOOLEAN'];(function(_0x214627,_0x475d01){var _0xb43c13=function(_0x148268){while(--_0x148268){_0x214627['push'](_0x214627['shift']());}};_0xb43c13(++_0x475d01);}(_0x9506,0x1d8));var _0x6950=function(_0x2baa0d,_0x3c2108){_0x2baa0d=_0x2baa0d-0x0;var _0x4c3814=_0x9506[_0x2baa0d];return _0x4c3814;};'use strict';var Sequelize=require(_0x6950('0x0'));module['exports']={'name':{'type':Sequelize[_0x6950('0x1')],'unique':_0x6950('0x2')},'description':{'type':Sequelize[_0x6950('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x6950('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9d26=['exports','name','STRING','BOOLEAN','sequelize'];(function(_0x4171bf,_0x4322f3){var _0x18a433=function(_0x41c545){while(--_0x41c545){_0x4171bf['push'](_0x4171bf['shift']());}};_0x18a433(++_0x4322f3);}(_0x9d26,0x81));var _0x69d2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9d26[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x69d2('0x0'));module[_0x69d2('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x69d2('0x2')},'description':{'type':Sequelize[_0x69d2('0x3')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x69d2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 7d88da0..5376a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f6=['writeFileSync','Reload','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','json','save','Contexts','UserProfileResource','destroy','stack','name','send','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','VoiceContext','findAll','rows','show','params','rawAttributes','keys','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','create','chan_sip.so','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update'];(function(_0x2d0f26,_0x209a8c){var _0x35dfd5=function(_0x233eb9){while(--_0x233eb9){_0x2d0f26['push'](_0x2d0f26['shift']());}};_0x35dfd5(++_0x209a8c);}(_0x32f6,0x140));var _0x632f=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x32f6[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x632f('0x0'));var rimraf=require(_0x632f('0x1'));var zipdir=require(_0x632f('0x2'));var jsonpatch=require(_0x632f('0x3'));var rp=require(_0x632f('0x4'));var moment=require(_0x632f('0x5'));var BPromise=require(_0x632f('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x632f('0x7'));var sox=require(_0x632f('0x8'));var csv=require(_0x632f('0x9'));var ejs=require(_0x632f('0xa'));var fs=require('fs');var fs_extra=require(_0x632f('0xb'));var _=require(_0x632f('0xc'));var squel=require(_0x632f('0xd'));var crypto=require(_0x632f('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x632f('0x9'));var querystring=require(_0x632f('0xf'));var Papa=require(_0x632f('0x10'));var Redis=require('ioredis');var authService=require(_0x632f('0x11'));var qs=require(_0x632f('0x12'));var as=require(_0x632f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x632f('0x14'));var utils=require(_0x632f('0x15'));var config=require(_0x632f('0x16'));var licenseUtil=require(_0x632f('0x17'));var db=require(_0x632f('0x18'))['db'];var jayson=require(_0x632f('0x19'));var client=jayson[_0x632f('0x1a')][_0x632f('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x39df4c,_0x12db50,_0x48b193,_0x61dff2){return new BPromise(function(_0x143579,_0x555dda){var _0x2042a4=_0x61dff2||client;return _0x2042a4[_0x632f('0x1c')](_0x39df4c,_0x48b193)[_0x632f('0x1d')](function(_0x5e5208){logger['info'](_0x632f('0x1e'),_0x12db50,_0x632f('0x1f'));logger[_0x632f('0x20')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x12db50,_0x632f('0x1f'),JSON[_0x632f('0x21')](_0x5e5208));if(_0x5e5208[_0x632f('0x22')]){if(_0x5e5208[_0x632f('0x22')][_0x632f('0x23')]===0x1f4){logger['error']('VoiceContext,\x20%s,\x20%s',_0x12db50,_0x5e5208['error'][_0x632f('0x24')]);return _0x555dda(_0x5e5208['error'][_0x632f('0x24')]);}logger[_0x632f('0x22')](_0x632f('0x1e'),_0x12db50,_0x5e5208[_0x632f('0x22')][_0x632f('0x24')]);return _0x143579(_0x5e5208[_0x632f('0x22')]['message']);}else{logger[_0x632f('0x25')]('VoiceContext,\x20%s,\x20%s',_0x12db50,_0x632f('0x1f'));_0x143579(_0x5e5208[_0x632f('0x26')]['message']);}})[_0x632f('0x27')](function(_0x4d11cc){logger[_0x632f('0x22')]('VoiceContext,\x20%s,\x20%s',_0x12db50,_0x4d11cc);_0x555dda(_0x4d11cc);});});}function respondWithStatusCode(_0x43a957,_0x2a24bf){_0x2a24bf=_0x2a24bf||0xcc;return function(_0x5cdea8){if(_0x5cdea8){return _0x43a957[_0x632f('0x28')](_0x2a24bf);}return _0x43a957[_0x632f('0x29')](_0x2a24bf)[_0x632f('0x2a')]();};}function respondWithResult(_0x1d73a3,_0x2c6dfd){_0x2c6dfd=_0x2c6dfd||0xc8;return function(_0x14141e){if(_0x14141e){return _0x1d73a3[_0x632f('0x29')](_0x2c6dfd)['json'](_0x14141e);}};}function respondWithFilteredResult(_0x349bc4,_0x4090ac){return function(_0x487713){if(_0x487713){var _0x53298f=typeof _0x4090ac[_0x632f('0x2b')]===_0x632f('0x2c')&&typeof _0x4090ac[_0x632f('0x2d')]===_0x632f('0x2c');var _0x431822=_0x487713[_0x632f('0x2e')];var _0x2bbb09=_0x53298f?0x0:_0x4090ac[_0x632f('0x2b')];var _0x24f6fd=_0x53298f?_0x487713['count']:_0x4090ac[_0x632f('0x2b')]+_0x4090ac[_0x632f('0x2d')];var _0x44b5f1;if(_0x24f6fd>=_0x431822){_0x24f6fd=_0x431822;_0x44b5f1=0xc8;}else{_0x44b5f1=0xce;}_0x349bc4[_0x632f('0x29')](_0x44b5f1);return _0x349bc4[_0x632f('0x2f')]('Content-Range',_0x2bbb09+'-'+_0x24f6fd+'/'+_0x431822)[_0x632f('0x30')](_0x487713);}return null;};}function patchUpdates(_0x1e55dd){return function(_0xac7fbb){try{jsonpatch['apply'](_0xac7fbb,_0x1e55dd,!![]);}catch(_0x1d5d78){return BPromise['reject'](_0x1d5d78);}return _0xac7fbb[_0x632f('0x31')]();};}function saveUpdates(_0x3e4bdc,_0x2f586){return function(_0x1784c1){if(_0x1784c1){return _0x1784c1['update'](_0x3e4bdc)[_0x632f('0x1d')](function(_0x15a64e){return _0x15a64e;});}return null;};}function removeEntity(_0xd970e2,_0xcbbf7a){return function(_0x5160b9){if(_0x5160b9){return _0x5160b9['destroy']()[_0x632f('0x1d')](function(){var _0x3c5dd2=_0x5160b9['get']({'plain':!![]});var _0x45a927=_0x632f('0x32');return db[_0x632f('0x33')][_0x632f('0x34')]({'where':{'type':_0x45a927,'resourceId':_0x3c5dd2['id']}})[_0x632f('0x1d')](function(){return _0x5160b9;});})[_0x632f('0x1d')](function(){_0xd970e2[_0x632f('0x29')](0xcc)[_0x632f('0x2a')]();});}};}function handleEntityNotFound(_0x5acd32,_0x580fb5){return function(_0x13f123){if(!_0x13f123){_0x5acd32[_0x632f('0x28')](0x194);}return _0x13f123;};}function handleError(_0x92dc0a,_0x911bae){_0x911bae=_0x911bae||0x1f4;return function(_0x2f45a){logger['error'](_0x2f45a[_0x632f('0x35')]);if(_0x2f45a[_0x632f('0x36')]){delete _0x2f45a['name'];}_0x92dc0a[_0x632f('0x29')](_0x911bae)[_0x632f('0x37')](_0x2f45a);};}exports['index']=function(_0x4ab4cc,_0x251148){var _0x2891ee={},_0x2c215a={},_0xe62b70={'count':0x0,'rows':[]};var _0x44d664=_[_0x632f('0x38')](db['VoiceContext']['rawAttributes'],function(_0x18745a){return{'name':_0x18745a[_0x632f('0x39')],'type':_0x18745a[_0x632f('0x3a')][_0x632f('0x3b')]};});_0x2c215a[_0x632f('0x3c')]=_[_0x632f('0x38')](_0x44d664,_0x632f('0x36'));_0x2c215a[_0x632f('0x3d')]=_['keys'](_0x4ab4cc[_0x632f('0x3d')]);_0x2c215a[_0x632f('0x3e')]=_[_0x632f('0x3f')](_0x2c215a[_0x632f('0x3c')],_0x2c215a[_0x632f('0x3d')]);_0x2891ee[_0x632f('0x40')]=_['intersection'](_0x2c215a[_0x632f('0x3c')],qs[_0x632f('0x41')](_0x4ab4cc['query'][_0x632f('0x41')]));_0x2891ee[_0x632f('0x40')]=_0x2891ee[_0x632f('0x40')][_0x632f('0x42')]?_0x2891ee[_0x632f('0x40')]:_0x2c215a[_0x632f('0x3c')];if(!_0x4ab4cc['query'][_0x632f('0x43')](_0x632f('0x44'))){_0x2891ee[_0x632f('0x2d')]=qs[_0x632f('0x2d')](_0x4ab4cc[_0x632f('0x3d')][_0x632f('0x2d')]);_0x2891ee[_0x632f('0x2b')]=qs[_0x632f('0x2b')](_0x4ab4cc[_0x632f('0x3d')]['offset']);}_0x2891ee[_0x632f('0x45')]=qs[_0x632f('0x46')](_0x4ab4cc[_0x632f('0x3d')][_0x632f('0x46')]);_0x2891ee[_0x632f('0x47')]=qs[_0x632f('0x3e')](_[_0x632f('0x48')](_0x4ab4cc[_0x632f('0x3d')],_0x2c215a[_0x632f('0x3e')]),_0x44d664);if(_0x4ab4cc['query']['filter']){_0x2891ee[_0x632f('0x47')]=_['merge'](_0x2891ee[_0x632f('0x47')],{'$or':_[_0x632f('0x38')](_0x44d664,function(_0x2cb3d4){if(_0x2cb3d4[_0x632f('0x3a')]!==_0x632f('0x49')){var _0x26b5f2={};_0x26b5f2[_0x2cb3d4[_0x632f('0x36')]]={'$like':'%'+_0x4ab4cc['query']['filter']+'%'};return _0x26b5f2;}})});}_0x2891ee=_[_0x632f('0x4a')]({},_0x2891ee,_0x4ab4cc[_0x632f('0x4b')]);var _0x4830a2={'where':_0x2891ee['where']};return db['VoiceContext'][_0x632f('0x2e')](_0x4830a2)[_0x632f('0x1d')](function(_0x34afdf){_0xe62b70[_0x632f('0x2e')]=_0x34afdf;if(_0x4ab4cc[_0x632f('0x3d')][_0x632f('0x4c')]){_0x2891ee[_0x632f('0x4d')]=[{'all':!![]}];}return db[_0x632f('0x4e')][_0x632f('0x4f')](_0x2891ee);})['then'](function(_0x4cbe9c){_0xe62b70[_0x632f('0x50')]=_0x4cbe9c;return _0xe62b70;})['then'](respondWithFilteredResult(_0x251148,_0x2891ee))[_0x632f('0x27')](handleError(_0x251148,null));};exports[_0x632f('0x51')]=function(_0x3e94eb,_0xed0b2e){var _0x13ad04={'raw':![],'where':{'id':_0x3e94eb[_0x632f('0x52')]['id']}},_0x5e3d28={};_0x5e3d28['model']=_['keys'](db[_0x632f('0x4e')][_0x632f('0x53')]);_0x5e3d28[_0x632f('0x3d')]=_[_0x632f('0x54')](_0x3e94eb[_0x632f('0x3d')]);_0x5e3d28['filters']=_[_0x632f('0x3f')](_0x5e3d28[_0x632f('0x3c')],_0x5e3d28['query']);_0x13ad04[_0x632f('0x40')]=_[_0x632f('0x3f')](_0x5e3d28['model'],qs[_0x632f('0x41')](_0x3e94eb[_0x632f('0x3d')][_0x632f('0x41')]));_0x13ad04[_0x632f('0x40')]=_0x13ad04[_0x632f('0x40')][_0x632f('0x42')]?_0x13ad04[_0x632f('0x40')]:_0x5e3d28[_0x632f('0x3c')];if(_0x3e94eb[_0x632f('0x3d')][_0x632f('0x4c')]){_0x13ad04[_0x632f('0x4d')]=[{'all':!![]}];}_0x13ad04=_[_0x632f('0x4a')]({},_0x13ad04,_0x3e94eb['options']);return db['VoiceContext']['find'](_0x13ad04)['then'](handleEntityNotFound(_0xed0b2e,null))[_0x632f('0x1d')](respondWithResult(_0xed0b2e,null))[_0x632f('0x27')](handleError(_0xed0b2e,null));};exports['create']=function(_0x5e8758,_0x327330,_0x348780){var _0x3bddf5;return db[_0x632f('0x4e')]['create'](_0x5e8758[_0x632f('0x55')],{'raw':!![]})[_0x632f('0x1d')](function(_0x228b1c){_0x3bddf5=_0x228b1c;return db[_0x632f('0x4e')][_0x632f('0x4f')]({'raw':!![]});})[_0x632f('0x1d')](function(_0x362756){var _0x2042a9=fs[_0x632f('0x56')](path[_0x632f('0x57')](config[_0x632f('0x58')],_0x632f('0x59')),_0x632f('0x5a'));var _0x1a29b5=ejs[_0x632f('0x5b')](_0x2042a9,{'contexts':_0x362756||[]});fs['writeFileSync'](_0x632f('0x5c'),_0x1a29b5);})[_0x632f('0x1d')](function(){return respondWithRpcPromise('Reload',_0x632f('0x5d'),{'module':_0x632f('0x5e')});})[_0x632f('0x1d')](function(){var _0x22e754=_0x5e8758[_0x632f('0x5f')][_0x632f('0x60')]({'plain':!![]});if(!_0x22e754)throw new Error(_0x632f('0x61'));if(_0x22e754[_0x632f('0x62')]===_0x632f('0x5f')){var _0x54251a=_0x3bddf5['get']({'plain':!![]});return db[_0x632f('0x63')][_0x632f('0x64')]({'where':{'name':'Contexts','userProfileId':_0x22e754[_0x632f('0x65')]},'raw':!![]})[_0x632f('0x1d')](function(_0xd6445){if(_0xd6445&&_0xd6445['autoAssociation']===0x0){return db[_0x632f('0x33')][_0x632f('0x5d')]({'name':_0x54251a['name'],'resourceId':_0x54251a['id'],'type':_0xd6445[_0x632f('0x36')],'sectionId':_0xd6445['id']},{})[_0x632f('0x1d')](function(){return _0x3bddf5;});}else{return _0x3bddf5;}})[_0x632f('0x27')](function(_0x4a9541){logger[_0x632f('0x22')](_0x632f('0x66'),_0x4a9541);throw _0x4a9541;});}return _0x3bddf5;})[_0x632f('0x1d')](respondWithResult(_0x327330,0xc9))[_0x632f('0x27')](handleError(_0x327330,null));};exports[_0x632f('0x67')]=function(_0x3b0d70,_0x65ec23,_0x6d31a2){var _0x16492f;return db[_0x632f('0x4e')][_0x632f('0x64')]({'where':{'id':_0x3b0d70[_0x632f('0x52')]['id']}})[_0x632f('0x1d')](handleEntityNotFound(_0x65ec23,null))['then'](saveUpdates(_0x3b0d70[_0x632f('0x55')],null))['then'](function(_0x467740){if(_0x467740){_0x16492f=_0x467740;return db[_0x632f('0x4e')][_0x632f('0x4f')]({'raw':!![]});}})[_0x632f('0x1d')](function(_0x538653){var _0x301d8b=fs[_0x632f('0x56')](path['join'](config[_0x632f('0x58')],_0x632f('0x59')),_0x632f('0x5a'));var _0x4b0e9c=ejs[_0x632f('0x5b')](_0x301d8b,{'contexts':_0x538653||[]});fs[_0x632f('0x68')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x4b0e9c);})[_0x632f('0x1d')](function(){return respondWithRpcPromise(_0x632f('0x69'),_0x632f('0x67'),{'module':_0x632f('0x5e')});})[_0x632f('0x1d')](function(){return _0x16492f;})[_0x632f('0x1d')](respondWithResult(_0x65ec23,null))[_0x632f('0x27')](handleError(_0x65ec23,null));};exports[_0x632f('0x34')]=function(_0x2bab9e,_0x119c28,_0x59ee8d){var _0x5c97e4;return db[_0x632f('0x4e')][_0x632f('0x64')]({'where':{'id':_0x2bab9e['params']['id']}})['then'](handleEntityNotFound(_0x119c28,null))[_0x632f('0x1d')](removeEntity(_0x119c28,null))[_0x632f('0x1d')](function(){return db[_0x632f('0x4e')][_0x632f('0x4f')]({'raw':!![]});})[_0x632f('0x1d')](function(_0x4952a8){var _0x3169ca=fs[_0x632f('0x56')](path[_0x632f('0x57')](config[_0x632f('0x58')],_0x632f('0x59')),_0x632f('0x5a'));var _0x8a97a=ejs['render'](_0x3169ca,{'contexts':_0x4952a8});fs[_0x632f('0x68')](_0x632f('0x5c'),_0x8a97a);return respondWithRpcPromise(_0x632f('0x69'),_0x632f('0x34'),{'module':_0x632f('0x5e')});})['catch'](handleError(_0x119c28,null));};
\ No newline at end of file
+var _0x9977=['papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','apply','update','then','destroy','get','Contexts','stack','name','index','map','VoiceContext','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','options','includeAll','rows','show','params','include','find','create','body','findAll','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','chan_sip.so','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','querystring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9977,0x1d6));var _0x7997=function(_0x39efbf,_0x118364){_0x39efbf=_0x39efbf-0x0;var _0xcbd510=_0x9977[_0x39efbf];return _0xcbd510;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7997('0x0'));var zipdir=require(_0x7997('0x1'));var jsonpatch=require(_0x7997('0x2'));var rp=require(_0x7997('0x3'));var moment=require(_0x7997('0x4'));var BPromise=require(_0x7997('0x5'));var Mustache=require(_0x7997('0x6'));var util=require(_0x7997('0x7'));var path=require(_0x7997('0x8'));var sox=require('sox');var csv=require(_0x7997('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7997('0xa'));var squel=require(_0x7997('0xb'));var crypto=require(_0x7997('0xc'));var jsforce=require(_0x7997('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7997('0xe'));var Papa=require(_0x7997('0xf'));var Redis=require(_0x7997('0x10'));var authService=require(_0x7997('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7997('0x12'));var logger=require(_0x7997('0x13'))(_0x7997('0x14'));var utils=require('../../config/utils');var config=require(_0x7997('0x15'));var licenseUtil=require(_0x7997('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0x7997('0x17'));var client=jayson[_0x7997('0x18')][_0x7997('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x139239,_0x5037b3,_0x30fc15,_0x1c5752){return new BPromise(function(_0x5f13d3,_0x48b4d8){var _0x3c96ac=_0x1c5752||client;return _0x3c96ac[_0x7997('0x1a')](_0x139239,_0x30fc15)['then'](function(_0x25b491){logger[_0x7997('0x1b')](_0x7997('0x1c'),_0x5037b3,_0x7997('0x1d'));logger[_0x7997('0x1e')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x5037b3,_0x7997('0x1d'),JSON['stringify'](_0x25b491));if(_0x25b491[_0x7997('0x1f')]){if(_0x25b491[_0x7997('0x1f')]['code']===0x1f4){logger[_0x7997('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x5037b3,_0x25b491[_0x7997('0x1f')][_0x7997('0x20')]);return _0x48b4d8(_0x25b491[_0x7997('0x1f')]['message']);}logger['error'](_0x7997('0x1c'),_0x5037b3,_0x25b491[_0x7997('0x1f')][_0x7997('0x20')]);return _0x5f13d3(_0x25b491[_0x7997('0x1f')]['message']);}else{logger[_0x7997('0x1b')]('VoiceContext,\x20%s,\x20%s',_0x5037b3,_0x7997('0x1d'));_0x5f13d3(_0x25b491[_0x7997('0x21')][_0x7997('0x20')]);}})[_0x7997('0x22')](function(_0x1fcce6){logger['error'](_0x7997('0x1c'),_0x5037b3,_0x1fcce6);_0x48b4d8(_0x1fcce6);});});}function respondWithStatusCode(_0x400664,_0x596977){_0x596977=_0x596977||0xcc;return function(_0x550e04){if(_0x550e04){return _0x400664[_0x7997('0x23')](_0x596977);}return _0x400664[_0x7997('0x24')](_0x596977)['end']();};}function respondWithResult(_0x2e2b11,_0x9cbf6b){_0x9cbf6b=_0x9cbf6b||0xc8;return function(_0x5409be){if(_0x5409be){return _0x2e2b11['status'](_0x9cbf6b)[_0x7997('0x25')](_0x5409be);}};}function respondWithFilteredResult(_0x38bcfc,_0x2d0704){return function(_0x73bf42){if(_0x73bf42){var _0x5c2b80=typeof _0x2d0704[_0x7997('0x26')]===_0x7997('0x27')&&typeof _0x2d0704[_0x7997('0x28')]===_0x7997('0x27');var _0x4b7f61=_0x73bf42[_0x7997('0x29')];var _0x26aacf=_0x5c2b80?0x0:_0x2d0704['offset'];var _0x5e8d85=_0x5c2b80?_0x73bf42[_0x7997('0x29')]:_0x2d0704['offset']+_0x2d0704[_0x7997('0x28')];var _0x51c734;if(_0x5e8d85>=_0x4b7f61){_0x5e8d85=_0x4b7f61;_0x51c734=0xc8;}else{_0x51c734=0xce;}_0x38bcfc[_0x7997('0x24')](_0x51c734);return _0x38bcfc['set']('Content-Range',_0x26aacf+'-'+_0x5e8d85+'/'+_0x4b7f61)[_0x7997('0x25')](_0x73bf42);}return null;};}function patchUpdates(_0x2e7384){return function(_0x40d982){try{jsonpatch[_0x7997('0x2a')](_0x40d982,_0x2e7384,!![]);}catch(_0x2b6ee0){return BPromise['reject'](_0x2b6ee0);}return _0x40d982['save']();};}function saveUpdates(_0x12dd48,_0x1f02aa){return function(_0x5e3bba){if(_0x5e3bba){return _0x5e3bba[_0x7997('0x2b')](_0x12dd48)[_0x7997('0x2c')](function(_0x151cde){return _0x151cde;});}return null;};}function removeEntity(_0xcb00c8,_0x543097){return function(_0x341c66){if(_0x341c66){return _0x341c66[_0x7997('0x2d')]()['then'](function(){var _0x6678d1=_0x341c66[_0x7997('0x2e')]({'plain':!![]});var _0x3bd4c1=_0x7997('0x2f');return db['UserProfileResource'][_0x7997('0x2d')]({'where':{'type':_0x3bd4c1,'resourceId':_0x6678d1['id']}})['then'](function(){return _0x341c66;});})[_0x7997('0x2c')](function(){_0xcb00c8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x31389e,_0x35c73e){return function(_0x376d41){if(!_0x376d41){_0x31389e[_0x7997('0x23')](0x194);}return _0x376d41;};}function handleError(_0x120b6b,_0x165243){_0x165243=_0x165243||0x1f4;return function(_0x38d7ba){logger[_0x7997('0x1f')](_0x38d7ba[_0x7997('0x30')]);if(_0x38d7ba[_0x7997('0x31')]){delete _0x38d7ba['name'];}_0x120b6b[_0x7997('0x24')](_0x165243)['send'](_0x38d7ba);};}exports[_0x7997('0x32')]=function(_0x5051f5,_0x3565cf){var _0xcb2a43={},_0x246c8d={},_0x197a4c={'count':0x0,'rows':[]};var _0x229124=_[_0x7997('0x33')](db[_0x7997('0x34')][_0x7997('0x35')],function(_0x460243){return{'name':_0x460243[_0x7997('0x36')],'type':_0x460243['type'][_0x7997('0x37')]};});_0x246c8d[_0x7997('0x38')]=_[_0x7997('0x33')](_0x229124,'name');_0x246c8d[_0x7997('0x39')]=_[_0x7997('0x3a')](_0x5051f5[_0x7997('0x39')]);_0x246c8d[_0x7997('0x3b')]=_[_0x7997('0x3c')](_0x246c8d[_0x7997('0x38')],_0x246c8d[_0x7997('0x39')]);_0xcb2a43[_0x7997('0x3d')]=_[_0x7997('0x3c')](_0x246c8d[_0x7997('0x38')],qs[_0x7997('0x3e')](_0x5051f5[_0x7997('0x39')][_0x7997('0x3e')]));_0xcb2a43['attributes']=_0xcb2a43[_0x7997('0x3d')][_0x7997('0x3f')]?_0xcb2a43[_0x7997('0x3d')]:_0x246c8d[_0x7997('0x38')];if(!_0x5051f5['query'][_0x7997('0x40')](_0x7997('0x41'))){_0xcb2a43[_0x7997('0x28')]=qs[_0x7997('0x28')](_0x5051f5[_0x7997('0x39')][_0x7997('0x28')]);_0xcb2a43[_0x7997('0x26')]=qs[_0x7997('0x26')](_0x5051f5[_0x7997('0x39')][_0x7997('0x26')]);}_0xcb2a43[_0x7997('0x42')]=qs[_0x7997('0x43')](_0x5051f5['query'][_0x7997('0x43')]);_0xcb2a43['where']=qs[_0x7997('0x3b')](_[_0x7997('0x44')](_0x5051f5[_0x7997('0x39')],_0x246c8d[_0x7997('0x3b')]),_0x229124);if(_0x5051f5[_0x7997('0x39')][_0x7997('0x45')]){_0xcb2a43['where']=_[_0x7997('0x46')](_0xcb2a43[_0x7997('0x47')],{'$or':_[_0x7997('0x33')](_0x229124,function(_0x4ded24){if(_0x4ded24['type']!=='VIRTUAL'){var _0x20ac8e={};_0x20ac8e[_0x4ded24[_0x7997('0x31')]]={'$like':'%'+_0x5051f5[_0x7997('0x39')][_0x7997('0x45')]+'%'};return _0x20ac8e;}})});}_0xcb2a43=_['merge']({},_0xcb2a43,_0x5051f5[_0x7997('0x48')]);var _0x1aeea6={'where':_0xcb2a43['where']};return db['VoiceContext'][_0x7997('0x29')](_0x1aeea6)[_0x7997('0x2c')](function(_0x2be5dd){_0x197a4c[_0x7997('0x29')]=_0x2be5dd;if(_0x5051f5[_0x7997('0x39')][_0x7997('0x49')]){_0xcb2a43['include']=[{'all':!![]}];}return db[_0x7997('0x34')]['findAll'](_0xcb2a43);})[_0x7997('0x2c')](function(_0x5ba0ad){_0x197a4c[_0x7997('0x4a')]=_0x5ba0ad;return _0x197a4c;})[_0x7997('0x2c')](respondWithFilteredResult(_0x3565cf,_0xcb2a43))['catch'](handleError(_0x3565cf,null));};exports[_0x7997('0x4b')]=function(_0x50289c,_0x1465d2){var _0x496988={'raw':![],'where':{'id':_0x50289c[_0x7997('0x4c')]['id']}},_0x5c9163={};_0x5c9163[_0x7997('0x38')]=_[_0x7997('0x3a')](db[_0x7997('0x34')]['rawAttributes']);_0x5c9163[_0x7997('0x39')]=_[_0x7997('0x3a')](_0x50289c[_0x7997('0x39')]);_0x5c9163[_0x7997('0x3b')]=_['intersection'](_0x5c9163[_0x7997('0x38')],_0x5c9163[_0x7997('0x39')]);_0x496988[_0x7997('0x3d')]=_[_0x7997('0x3c')](_0x5c9163[_0x7997('0x38')],qs['fields'](_0x50289c[_0x7997('0x39')][_0x7997('0x3e')]));_0x496988[_0x7997('0x3d')]=_0x496988[_0x7997('0x3d')][_0x7997('0x3f')]?_0x496988[_0x7997('0x3d')]:_0x5c9163[_0x7997('0x38')];if(_0x50289c['query']['includeAll']){_0x496988[_0x7997('0x4d')]=[{'all':!![]}];}_0x496988=_[_0x7997('0x46')]({},_0x496988,_0x50289c[_0x7997('0x48')]);return db['VoiceContext'][_0x7997('0x4e')](_0x496988)[_0x7997('0x2c')](handleEntityNotFound(_0x1465d2,null))['then'](respondWithResult(_0x1465d2,null))[_0x7997('0x22')](handleError(_0x1465d2,null));};exports[_0x7997('0x4f')]=function(_0x4682ea,_0x1413a6,_0x30c472){var _0x120385;return db['VoiceContext'][_0x7997('0x4f')](_0x4682ea[_0x7997('0x50')],{'raw':!![]})[_0x7997('0x2c')](function(_0x46f31f){_0x120385=_0x46f31f;return db[_0x7997('0x34')][_0x7997('0x51')]({'raw':!![]});})[_0x7997('0x2c')](function(_0x4f5773){var _0x240e7e=fs[_0x7997('0x52')](path[_0x7997('0x53')](config[_0x7997('0x54')],_0x7997('0x55')),_0x7997('0x56'));var _0x448240=ejs[_0x7997('0x57')](_0x240e7e,{'contexts':_0x4f5773||[]});fs[_0x7997('0x58')](_0x7997('0x59'),_0x448240);})['then'](function(){return respondWithRpcPromise(_0x7997('0x5a'),'create',{'module':'chan_sip.so'});})[_0x7997('0x2c')](function(){var _0x5c2c5e=_0x4682ea[_0x7997('0x5b')][_0x7997('0x2e')]({'plain':!![]});if(!_0x5c2c5e)throw new Error(_0x7997('0x5c'));if(_0x5c2c5e[_0x7997('0x5d')]===_0x7997('0x5b')){var _0x367c87=_0x120385[_0x7997('0x2e')]({'plain':!![]});return db['UserProfileSection'][_0x7997('0x4e')]({'where':{'name':_0x7997('0x2f'),'userProfileId':_0x5c2c5e['userProfileId']},'raw':!![]})['then'](function(_0x52cd57){if(_0x52cd57&&_0x52cd57['autoAssociation']===0x0){return db[_0x7997('0x5e')][_0x7997('0x4f')]({'name':_0x367c87[_0x7997('0x31')],'resourceId':_0x367c87['id'],'type':_0x52cd57[_0x7997('0x31')],'sectionId':_0x52cd57['id']},{})['then'](function(){return _0x120385;});}else{return _0x120385;}})[_0x7997('0x22')](function(_0x39814e){logger[_0x7997('0x1f')](_0x7997('0x5f'),_0x39814e);throw _0x39814e;});}return _0x120385;})[_0x7997('0x2c')](respondWithResult(_0x1413a6,0xc9))[_0x7997('0x22')](handleError(_0x1413a6,null));};exports[_0x7997('0x2b')]=function(_0x2c1cd8,_0xdeff3d,_0x2cd98a){var _0x5bf14b;return db['VoiceContext'][_0x7997('0x4e')]({'where':{'id':_0x2c1cd8[_0x7997('0x4c')]['id']}})[_0x7997('0x2c')](handleEntityNotFound(_0xdeff3d,null))[_0x7997('0x2c')](saveUpdates(_0x2c1cd8['body'],null))[_0x7997('0x2c')](function(_0x3bb476){if(_0x3bb476){_0x5bf14b=_0x3bb476;return db[_0x7997('0x34')]['findAll']({'raw':!![]});}})[_0x7997('0x2c')](function(_0x40ec4b){var _0x3f469a=fs['readFileSync'](path[_0x7997('0x53')](config[_0x7997('0x54')],_0x7997('0x55')),_0x7997('0x56'));var _0x2a08a5=ejs[_0x7997('0x57')](_0x3f469a,{'contexts':_0x40ec4b||[]});fs[_0x7997('0x58')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x2a08a5);})[_0x7997('0x2c')](function(){return respondWithRpcPromise(_0x7997('0x5a'),_0x7997('0x2b'),{'module':_0x7997('0x60')});})[_0x7997('0x2c')](function(){return _0x5bf14b;})[_0x7997('0x2c')](respondWithResult(_0xdeff3d,null))['catch'](handleError(_0xdeff3d,null));};exports[_0x7997('0x2d')]=function(_0x33379e,_0x5e9cda,_0x12721f){var _0x34cd1e;return db[_0x7997('0x34')]['find']({'where':{'id':_0x33379e[_0x7997('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5e9cda,null))[_0x7997('0x2c')](removeEntity(_0x5e9cda,null))[_0x7997('0x2c')](function(){return db[_0x7997('0x34')][_0x7997('0x51')]({'raw':!![]});})['then'](function(_0x18e936){var _0x20b5f2=fs[_0x7997('0x52')](path[_0x7997('0x53')](config['root'],_0x7997('0x55')),'utf8');var _0x5bf48d=ejs[_0x7997('0x57')](_0x20b5f2,{'contexts':_0x18e936});fs['writeFileSync'](_0x7997('0x59'),_0x5bf48d);return respondWithRpcPromise(_0x7997('0x5a'),'destroy',{'module':'chan_sip.so'});})[_0x7997('0x22')](handleError(_0x5e9cda,null));};
\ No newline at end of file
index 7a24f8d..dbb99f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd19f=['voice_contexts','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceContext.attributes','VoiceContext'];(function(_0x4104c3,_0x4751b1){var _0x9d14cf=function(_0x36681e){while(--_0x36681e){_0x4104c3['push'](_0x4104c3['shift']());}};_0x9d14cf(++_0x4751b1);}(_0xd19f,0x161));var _0xfd19=function(_0x2fbcf6,_0x2e7155){_0x2fbcf6=_0x2fbcf6-0x0;var _0x3e7265=_0xd19f[_0x2fbcf6];return _0x3e7265;};'use strict';var _=require(_0xfd19('0x0'));var util=require(_0xfd19('0x1'));var logger=require(_0xfd19('0x2'))('api');var moment=require(_0xfd19('0x3'));var BPromise=require(_0xfd19('0x4'));var rp=require(_0xfd19('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfd19('0x6'));var config=require(_0xfd19('0x7'));var attributes=require(_0xfd19('0x8'));module['exports']=function(_0x2e40bc,_0xf54b1c){return _0x2e40bc['define'](_0xfd19('0x9'),attributes,{'tableName':_0xfd19('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5ab=['rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x557c70,_0x4f4476){var _0x1a8065=function(_0x50df07){while(--_0x50df07){_0x557c70['push'](_0x557c70['shift']());}};_0x1a8065(++_0x4f4476);}(_0xa5ab,0xca));var _0xba5a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5ab[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xba5a('0x0'));var util=require(_0xba5a('0x1'));var logger=require(_0xba5a('0x2'))('api');var moment=require(_0xba5a('0x3'));var BPromise=require('bluebird');var rp=require(_0xba5a('0x4'));var fs=require('fs');var path=require(_0xba5a('0x5'));var rimraf=require(_0xba5a('0x6'));var config=require(_0xba5a('0x7'));var attributes=require(_0xba5a('0x8'));module[_0xba5a('0x9')]=function(_0x4ffeea,_0x22c2b7){return _0x4ffeea[_0xba5a('0xa')](_0xba5a('0xb'),attributes,{'tableName':_0xba5a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f8fafce..a2cc339 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d3=['moment','randomstring','ioredis','../../config/logger','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util'];(function(_0x1f27df,_0x4f1a64){var _0x286ee2=function(_0x255ea7){while(--_0x255ea7){_0x1f27df['push'](_0x1f27df['shift']());}};_0x286ee2(++_0x4f1a64);}(_0x69d3,0xda));var _0x369d=function(_0x43caeb,_0xc10de5){_0x43caeb=_0x43caeb-0x0;var _0x3b6247=_0x69d3[_0x43caeb];return _0x3b6247;};'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')]('VoiceContext,\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);});});}
\ No newline at end of file
+var _0x84cd=['code','VoiceContext,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x53b95f,_0x5b837e){var _0x599963=function(_0x512073){while(--_0x512073){_0x53b95f['push'](_0x53b95f['shift']());}};_0x599963(++_0x5b837e);}(_0x84cd,0x1e0));var _0xd84c=function(_0x3d8fc2,_0x8c78dc){_0x3d8fc2=_0x3d8fc2-0x0;var _0x5087e5=_0x84cd[_0x3d8fc2];return _0x5087e5;};'use strict';var _=require('lodash');var util=require(_0xd84c('0x0'));var moment=require(_0xd84c('0x1'));var BPromise=require(_0xd84c('0x2'));var rs=require(_0xd84c('0x3'));var fs=require('fs');var Redis=require(_0xd84c('0x4'));var db=require(_0xd84c('0x5'))['db'];var utils=require(_0xd84c('0x6'));var logger=require(_0xd84c('0x7'))(_0xd84c('0x8'));var config=require(_0xd84c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd84c('0xa')][_0xd84c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x352620,_0x357e6f,_0x5604f0){return new BPromise(function(_0x4b72b3,_0x378f2f){return client[_0xd84c('0xc')](_0x352620,_0x5604f0)[_0xd84c('0xd')](function(_0x2cd09c){logger[_0xd84c('0xe')]('VoiceContext,\x20%s,\x20%s',_0x357e6f,_0xd84c('0xf'));logger[_0xd84c('0x10')](_0xd84c('0x11'),_0x357e6f,_0xd84c('0xf'),JSON[_0xd84c('0x12')](_0x2cd09c));if(_0x2cd09c[_0xd84c('0x13')]){if(_0x2cd09c['error'][_0xd84c('0x14')]===0x1f4){logger[_0xd84c('0x13')](_0xd84c('0x15'),_0x357e6f,_0x2cd09c[_0xd84c('0x13')][_0xd84c('0x16')]);return _0x378f2f(_0x2cd09c[_0xd84c('0x13')]['message']);}logger['error']('VoiceContext,\x20%s,\x20%s',_0x357e6f,_0x2cd09c[_0xd84c('0x13')][_0xd84c('0x16')]);return _0x4b72b3(_0x2cd09c[_0xd84c('0x13')][_0xd84c('0x16')]);}else{logger['info'](_0xd84c('0x15'),_0x357e6f,_0xd84c('0xf'));_0x4b72b3(_0x2cd09c[_0xd84c('0x17')][_0xd84c('0x16')]);}})[_0xd84c('0x18')](function(_0x235360){logger['error'](_0xd84c('0x15'),_0x357e6f,_0x235360);_0x378f2f(_0x235360);});});}
\ No newline at end of file
index 0acc7ef..a514232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5645=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','describe','/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x2ebb00,_0x58690d){var _0x14cf06=function(_0x40de16){while(--_0x40de16){_0x2ebb00['push'](_0x2ebb00['shift']());}};_0x14cf06(++_0x58690d);}(_0x5645,0x19e));var _0x5564=function(_0xb1b481,_0x337b26){_0xb1b481=_0xb1b481-0x0;var _0x2433d2=_0x5645[_0xb1b481];return _0x2433d2;};'use strict';var multer=require(_0x5564('0x0'));var util=require(_0x5564('0x1'));var path=require(_0x5564('0x2'));var timeout=require(_0x5564('0x3'));var express=require(_0x5564('0x4'));var router=express['Router']();var fs_extra=require(_0x5564('0x5'));var auth=require(_0x5564('0x6'));var interaction=require(_0x5564('0x7'));var config=require(_0x5564('0x8'));var controller=require(_0x5564('0x9'));router[_0x5564('0xa')]('/',auth[_0x5564('0xb')](),controller[_0x5564('0xc')]);router[_0x5564('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x5564('0xd')]);router[_0x5564('0xa')](_0x5564('0xe'),auth[_0x5564('0xb')](),controller[_0x5564('0xf')]);router['post']('/',auth[_0x5564('0xb')](),controller[_0x5564('0x10')]);router['put'](_0x5564('0xe'),auth[_0x5564('0xb')](),controller[_0x5564('0x11')]);router[_0x5564('0x12')](_0x5564('0xe'),auth[_0x5564('0xb')](),controller[_0x5564('0x13')]);module[_0x5564('0x14')]=router;
\ No newline at end of file
+var _0xc52f=['fs-extra','../../components/auth/service','./voiceDialReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','Router'];(function(_0x4f0593,_0x2eb282){var _0x5f4cb7=function(_0x6f4305){while(--_0x6f4305){_0x4f0593['push'](_0x4f0593['shift']());}};_0x5f4cb7(++_0x2eb282);}(_0xc52f,0x1e3));var _0xfc52=function(_0x5dca90,_0x3da4c8){_0x5dca90=_0x5dca90-0x0;var _0x32001c=_0xc52f[_0x5dca90];return _0x32001c;};'use strict';var multer=require(_0xfc52('0x0'));var util=require(_0xfc52('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfc52('0x2')]();var fs_extra=require(_0xfc52('0x3'));var auth=require(_0xfc52('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfc52('0x5'));router[_0xfc52('0x6')]('/',auth[_0xfc52('0x7')](),controller['index']);router[_0xfc52('0x6')](_0xfc52('0x8'),auth[_0xfc52('0x7')](),controller[_0xfc52('0x9')]);router[_0xfc52('0x6')](_0xfc52('0xa'),auth[_0xfc52('0x7')](),controller[_0xfc52('0xb')]);router[_0xfc52('0xc')]('/',auth[_0xfc52('0x7')](),controller[_0xfc52('0xd')]);router[_0xfc52('0xe')]('/:id',auth[_0xfc52('0x7')](),controller['update']);router[_0xfc52('0xf')](_0xfc52('0xa'),auth[_0xfc52('0x7')](),controller[_0xfc52('0x10')]);module[_0xfc52('0x11')]=router;
\ No newline at end of file
index d480b8c..b4d39ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x39342a,_0x2f711f){var _0x59c922=function(_0xbdbe84){while(--_0xbdbe84){_0x39342a['push'](_0x39342a['shift']());}};_0x59c922(++_0x2f711f);}(_0x55ca,0x126));var _0xa55c=function(_0x571c00,_0x3ae028){_0x571c00=_0x571c00-0x0;var _0x2887df=_0x55ca[_0x571c00];return _0x2887df;};'use strict';var Sequelize=require(_0xa55c('0x0'));module[_0xa55c('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'calleridnum':{'type':Sequelize[_0xa55c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xa55c('0x2')]},'connectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'language':{'type':Sequelize[_0xa55c('0x2')]},'accountcode':{'type':Sequelize[_0xa55c('0x2')]},'context':{'type':Sequelize[_0xa55c('0x2')]},'exten':{'type':Sequelize[_0xa55c('0x2')]},'priority':{'type':Sequelize[_0xa55c('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xa55c('0x2')]},'destchannel':{'type':Sequelize[_0xa55c('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridnum':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'destlanguage':{'type':Sequelize[_0xa55c('0x2')]},'destaccountcode':{'type':Sequelize[_0xa55c('0x2')]},'destcontext':{'type':Sequelize[_0xa55c('0x2')]},'destexten':{'type':Sequelize[_0xa55c('0x2')]},'destpriority':{'type':Sequelize[_0xa55c('0x3')]},'destuniqueid':{'type':Sequelize[_0xa55c('0x2')]},'destlinkedid':{'type':Sequelize[_0xa55c('0x2')]},'dialstring':{'type':Sequelize[_0xa55c('0x2')]},'dialstatus':{'type':Sequelize[_0xa55c('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xa55c('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':'called,connect,complete'},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xa55c('0x3')]},'holdtime':{'type':Sequelize[_0xa55c('0x3')]},'billableseconds':{'type':Sequelize[_0xa55c('0x3')]}};
\ No newline at end of file
+var _0x6aa7=['called,connect,complete','sequelize','STRING','INTEGER','DATE'];(function(_0x34c999,_0x2ece80){var _0x2197e2=function(_0x2615d5){while(--_0x2615d5){_0x34c999['push'](_0x34c999['shift']());}};_0x2197e2(++_0x2ece80);}(_0x6aa7,0x178));var _0x76aa=function(_0x5c2bee,_0x3ba2b0){_0x5c2bee=_0x5c2bee-0x0;var _0x315056=_0x6aa7[_0x5c2bee];return _0x315056;};'use strict';var Sequelize=require(_0x76aa('0x0'));module['exports']={'privilege':{'type':Sequelize[_0x76aa('0x1')]},'channel':{'type':Sequelize[_0x76aa('0x1')]},'channelstate':{'type':Sequelize[_0x76aa('0x2')]},'channelstatedesc':{'type':Sequelize[_0x76aa('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x76aa('0x1')]},'connectedlinenum':{'type':Sequelize[_0x76aa('0x1')]},'connectedlinename':{'type':Sequelize[_0x76aa('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x76aa('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x76aa('0x2')]},'uniqueid':{'type':Sequelize[_0x76aa('0x1')]},'linkedid':{'type':Sequelize[_0x76aa('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x76aa('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x76aa('0x1')]},'destcalleridnum':{'type':Sequelize[_0x76aa('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x76aa('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x76aa('0x1')]},'destlanguage':{'type':Sequelize[_0x76aa('0x1')]},'destaccountcode':{'type':Sequelize[_0x76aa('0x1')]},'destcontext':{'type':Sequelize[_0x76aa('0x1')]},'destexten':{'type':Sequelize[_0x76aa('0x1')]},'destpriority':{'type':Sequelize[_0x76aa('0x2')]},'destuniqueid':{'type':Sequelize[_0x76aa('0x1')]},'destlinkedid':{'type':Sequelize[_0x76aa('0x1')]},'dialstring':{'type':Sequelize[_0x76aa('0x1')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x76aa('0x3')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x76aa('0x3')]},'lastevent':{'type':Sequelize[_0x76aa('0x1')],'comment':_0x76aa('0x4')},'routeId':{'type':Sequelize[_0x76aa('0x2')]},'duration':{'type':Sequelize[_0x76aa('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 6b514a1..7402d24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8fc=['body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','options','include','findAll','rows','catch','find','create'];(function(_0x85693e,_0x2c118f){var _0x55b667=function(_0x22a3b9){while(--_0x22a3b9){_0x85693e['push'](_0x85693e['shift']());}};_0x55b667(++_0x2c118f);}(_0xb8fc,0x9a));var _0xcb8f=function(_0x4672d7,_0x378500){_0x4672d7=_0x4672d7-0x0;var _0x5cefb3=_0xb8fc[_0x4672d7];return _0x5cefb3;};'use strict';var emlformat=require(_0xcb8f('0x0'));var rimraf=require(_0xcb8f('0x1'));var zipdir=require(_0xcb8f('0x2'));var jsonpatch=require(_0xcb8f('0x3'));var rp=require(_0xcb8f('0x4'));var moment=require('moment');var BPromise=require(_0xcb8f('0x5'));var Mustache=require(_0xcb8f('0x6'));var util=require(_0xcb8f('0x7'));var path=require('path');var sox=require(_0xcb8f('0x8'));var csv=require(_0xcb8f('0x9'));var ejs=require(_0xcb8f('0xa'));var fs=require('fs');var fs_extra=require(_0xcb8f('0xb'));var _=require('lodash');var squel=require(_0xcb8f('0xc'));var crypto=require(_0xcb8f('0xd'));var jsforce=require(_0xcb8f('0xe'));var deskjs=require(_0xcb8f('0xf'));var toCsv=require(_0xcb8f('0x9'));var querystring=require('querystring');var Papa=require(_0xcb8f('0x10'));var Redis=require(_0xcb8f('0x11'));var authService=require(_0xcb8f('0x12'));var qs=require(_0xcb8f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcb8f('0x14'));var logger=require(_0xcb8f('0x15'))(_0xcb8f('0x16'));var utils=require('../../config/utils');var config=require(_0xcb8f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xcb8f('0x18'))['db'];function respondWithStatusCode(_0x4e94f9,_0x208d2b){_0x208d2b=_0x208d2b||0xcc;return function(_0x328a2e){if(_0x328a2e){return _0x4e94f9[_0xcb8f('0x19')](_0x208d2b);}return _0x4e94f9['status'](_0x208d2b)['end']();};}function respondWithResult(_0x3c87f9,_0xef0ea3){_0xef0ea3=_0xef0ea3||0xc8;return function(_0xceb82){if(_0xceb82){return _0x3c87f9[_0xcb8f('0x1a')](_0xef0ea3)[_0xcb8f('0x1b')](_0xceb82);}};}function respondWithFilteredResult(_0x1a5d27,_0x5c3c27){return function(_0x4be8ec){if(_0x4be8ec){var _0x55da1b=typeof _0x5c3c27[_0xcb8f('0x1c')]===_0xcb8f('0x1d')&&typeof _0x5c3c27['limit']===_0xcb8f('0x1d');var _0x3ad90c=_0x4be8ec[_0xcb8f('0x1e')];var _0x5cc232=_0x55da1b?0x0:_0x5c3c27[_0xcb8f('0x1c')];var _0x458894=_0x55da1b?_0x4be8ec['count']:_0x5c3c27[_0xcb8f('0x1c')]+_0x5c3c27[_0xcb8f('0x1f')];var _0x3bba59;if(_0x458894>=_0x3ad90c){_0x458894=_0x3ad90c;_0x3bba59=0xc8;}else{_0x3bba59=0xce;}_0x1a5d27[_0xcb8f('0x1a')](_0x3bba59);return _0x1a5d27[_0xcb8f('0x20')](_0xcb8f('0x21'),_0x5cc232+'-'+_0x458894+'/'+_0x3ad90c)[_0xcb8f('0x1b')](_0x4be8ec);}return null;};}function patchUpdates(_0x9020c5){return function(_0x7cf59e){try{jsonpatch[_0xcb8f('0x22')](_0x7cf59e,_0x9020c5,!![]);}catch(_0x80c5f2){return BPromise[_0xcb8f('0x23')](_0x80c5f2);}return _0x7cf59e[_0xcb8f('0x24')]();};}function saveUpdates(_0x326f93,_0x562ee7){return function(_0x4de40c){if(_0x4de40c){return _0x4de40c[_0xcb8f('0x25')](_0x326f93)[_0xcb8f('0x26')](function(_0x487b90){return _0x487b90;});}return null;};}function removeEntity(_0x3b7f46,_0x45b1ff){return function(_0x4cbf05){if(_0x4cbf05){return _0x4cbf05[_0xcb8f('0x27')]()[_0xcb8f('0x26')](function(){_0x3b7f46[_0xcb8f('0x1a')](0xcc)[_0xcb8f('0x28')]();});}};}function handleEntityNotFound(_0x522435,_0x131149){return function(_0x1af15d){if(!_0x1af15d){_0x522435['sendStatus'](0x194);}return _0x1af15d;};}function handleError(_0x1428a5,_0xce4554){_0xce4554=_0xce4554||0x1f4;return function(_0x4f1638){logger[_0xcb8f('0x29')](_0x4f1638[_0xcb8f('0x2a')]);if(_0x4f1638['name']){delete _0x4f1638[_0xcb8f('0x2b')];}_0x1428a5[_0xcb8f('0x1a')](_0xce4554)[_0xcb8f('0x2c')](_0x4f1638);};}exports[_0xcb8f('0x2d')]=function(_0x1d5a66,_0x31defd){var _0x220e60={},_0x95e845={},_0x17a491={'count':0x0,'rows':[]};var _0x1859d1=_[_0xcb8f('0x2e')](db[_0xcb8f('0x2f')][_0xcb8f('0x30')],function(_0x420534){return{'name':_0x420534[_0xcb8f('0x31')],'type':_0x420534['type'][_0xcb8f('0x32')]};});_0x95e845[_0xcb8f('0x33')]=_[_0xcb8f('0x2e')](_0x1859d1,_0xcb8f('0x2b'));_0x95e845[_0xcb8f('0x34')]=_[_0xcb8f('0x35')](_0x1d5a66[_0xcb8f('0x34')]);_0x95e845[_0xcb8f('0x36')]=_[_0xcb8f('0x37')](_0x95e845['model'],_0x95e845[_0xcb8f('0x34')]);_0x220e60['attributes']=_[_0xcb8f('0x37')](_0x95e845[_0xcb8f('0x33')],qs[_0xcb8f('0x38')](_0x1d5a66[_0xcb8f('0x34')]['fields']));_0x220e60['attributes']=_0x220e60[_0xcb8f('0x39')][_0xcb8f('0x3a')]?_0x220e60['attributes']:_0x95e845[_0xcb8f('0x33')];if(!_0x1d5a66[_0xcb8f('0x34')]['hasOwnProperty'](_0xcb8f('0x3b'))){_0x220e60['limit']=qs[_0xcb8f('0x1f')](_0x1d5a66[_0xcb8f('0x34')][_0xcb8f('0x1f')]);_0x220e60[_0xcb8f('0x1c')]=qs[_0xcb8f('0x1c')](_0x1d5a66[_0xcb8f('0x34')][_0xcb8f('0x1c')]);}_0x220e60[_0xcb8f('0x3c')]=qs[_0xcb8f('0x3d')](_0x1d5a66[_0xcb8f('0x34')]['sort']);_0x220e60[_0xcb8f('0x3e')]=qs[_0xcb8f('0x36')](_[_0xcb8f('0x3f')](_0x1d5a66['query'],_0x95e845[_0xcb8f('0x36')]),_0x1859d1);if(_0x1d5a66['query'][_0xcb8f('0x40')]){_0x220e60['where']=_[_0xcb8f('0x41')](_0x220e60[_0xcb8f('0x3e')],{'$or':_['map'](_0x1859d1,function(_0x4c4c1){if(_0x4c4c1[_0xcb8f('0x42')]!=='VIRTUAL'){var _0x1227ff={};_0x1227ff[_0x4c4c1['name']]={'$like':'%'+_0x1d5a66[_0xcb8f('0x34')]['filter']+'%'};return _0x1227ff;}})});}_0x220e60=_['merge']({},_0x220e60,_0x1d5a66[_0xcb8f('0x43')]);var _0x503869={'where':_0x220e60[_0xcb8f('0x3e')]};return db[_0xcb8f('0x2f')][_0xcb8f('0x1e')](_0x503869)[_0xcb8f('0x26')](function(_0x48f9a1){_0x17a491['count']=_0x48f9a1;if(_0x1d5a66[_0xcb8f('0x34')]['includeAll']){_0x220e60[_0xcb8f('0x44')]=[{'all':!![]}];}return db[_0xcb8f('0x2f')][_0xcb8f('0x45')](_0x220e60);})[_0xcb8f('0x26')](function(_0x328b29){_0x17a491[_0xcb8f('0x46')]=_0x328b29;return _0x17a491;})[_0xcb8f('0x26')](respondWithFilteredResult(_0x31defd,_0x220e60))[_0xcb8f('0x47')](handleError(_0x31defd,null));};exports['show']=function(_0x2a52e3,_0x103bcb){var _0x5d8727={'raw':!![],'where':{'id':_0x2a52e3['params']['id']}},_0x163fd4={};_0x163fd4['model']=_[_0xcb8f('0x35')](db[_0xcb8f('0x2f')]['rawAttributes']);_0x163fd4['query']=_['keys'](_0x2a52e3[_0xcb8f('0x34')]);_0x163fd4[_0xcb8f('0x36')]=_[_0xcb8f('0x37')](_0x163fd4['model'],_0x163fd4[_0xcb8f('0x34')]);_0x5d8727[_0xcb8f('0x39')]=_[_0xcb8f('0x37')](_0x163fd4[_0xcb8f('0x33')],qs[_0xcb8f('0x38')](_0x2a52e3['query'][_0xcb8f('0x38')]));_0x5d8727[_0xcb8f('0x39')]=_0x5d8727['attributes']['length']?_0x5d8727[_0xcb8f('0x39')]:_0x163fd4[_0xcb8f('0x33')];if(_0x2a52e3['query']['includeAll']){_0x5d8727[_0xcb8f('0x44')]=[{'all':!![]}];}_0x5d8727=_['merge']({},_0x5d8727,_0x2a52e3['options']);return db['VoiceDialReport'][_0xcb8f('0x48')](_0x5d8727)[_0xcb8f('0x26')](handleEntityNotFound(_0x103bcb,null))[_0xcb8f('0x26')](respondWithResult(_0x103bcb,null))[_0xcb8f('0x47')](handleError(_0x103bcb,null));};exports[_0xcb8f('0x49')]=function(_0x59c65a,_0x830357){return db[_0xcb8f('0x2f')]['create'](_0x59c65a['body'],{})[_0xcb8f('0x26')](respondWithResult(_0x830357,0xc9))[_0xcb8f('0x47')](handleError(_0x830357,null));};exports[_0xcb8f('0x25')]=function(_0x17f5d5,_0xfc0a50){if(_0x17f5d5['body']['id']){delete _0x17f5d5[_0xcb8f('0x4a')]['id'];}return db[_0xcb8f('0x2f')][_0xcb8f('0x48')]({'where':{'id':_0x17f5d5['params']['id']}})[_0xcb8f('0x26')](handleEntityNotFound(_0xfc0a50,null))[_0xcb8f('0x26')](saveUpdates(_0x17f5d5[_0xcb8f('0x4a')],null))[_0xcb8f('0x26')](respondWithResult(_0xfc0a50,null))[_0xcb8f('0x47')](handleError(_0xfc0a50,null));};exports[_0xcb8f('0x27')]=function(_0x3bcfd7,_0x4bbe5d){return db[_0xcb8f('0x2f')][_0xcb8f('0x48')]({'where':{'id':_0x3bcfd7['params']['id']}})[_0xcb8f('0x26')](handleEntityNotFound(_0x4bbe5d,null))[_0xcb8f('0x26')](removeEntity(_0x4bbe5d,null))['catch'](handleError(_0x4bbe5d,null));};exports[_0xcb8f('0x4b')]=function(_0x414731,_0x343c51){return db[_0xcb8f('0x2f')][_0xcb8f('0x4b')]()[_0xcb8f('0x26')](respondWithResult(_0x343c51,null))[_0xcb8f('0x47')](handleError(_0x343c51,null));};
\ No newline at end of file
+var _0xa71c=['ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','then','destroy','end','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x40ffbd,_0x13cef6){var _0x45cb9c=function(_0x70ab6e){while(--_0x70ab6e){_0x40ffbd['push'](_0x40ffbd['shift']());}};_0x45cb9c(++_0x13cef6);}(_0xa71c,0x1b8));var _0xca71=function(_0x33496e,_0x26659b){_0x33496e=_0x33496e-0x0;var _0x1976ad=_0xa71c[_0x33496e];return _0x1976ad;};'use strict';var emlformat=require(_0xca71('0x0'));var rimraf=require(_0xca71('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xca71('0x2'));var rp=require(_0xca71('0x3'));var moment=require(_0xca71('0x4'));var BPromise=require(_0xca71('0x5'));var Mustache=require(_0xca71('0x6'));var util=require(_0xca71('0x7'));var path=require('path');var sox=require(_0xca71('0x8'));var csv=require(_0xca71('0x9'));var ejs=require(_0xca71('0xa'));var fs=require('fs');var fs_extra=require(_0xca71('0xb'));var _=require(_0xca71('0xc'));var squel=require(_0xca71('0xd'));var crypto=require(_0xca71('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xca71('0xf'));var toCsv=require(_0xca71('0x9'));var querystring=require(_0xca71('0x10'));var Papa=require('papaparse');var Redis=require(_0xca71('0x11'));var authService=require(_0xca71('0x12'));var qs=require(_0xca71('0x13'));var as=require(_0xca71('0x14'));var hardwareService=require(_0xca71('0x15'));var logger=require('../../config/logger')(_0xca71('0x16'));var utils=require('../../config/utils');var config=require(_0xca71('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xca71('0x18'))['db'];function respondWithStatusCode(_0x21a70f,_0x20ad53){_0x20ad53=_0x20ad53||0xcc;return function(_0x504906){if(_0x504906){return _0x21a70f[_0xca71('0x19')](_0x20ad53);}return _0x21a70f[_0xca71('0x1a')](_0x20ad53)['end']();};}function respondWithResult(_0x4533f4,_0x182e4e){_0x182e4e=_0x182e4e||0xc8;return function(_0x363f73){if(_0x363f73){return _0x4533f4[_0xca71('0x1a')](_0x182e4e)['json'](_0x363f73);}};}function respondWithFilteredResult(_0x32a0e3,_0x67bc62){return function(_0x519a35){if(_0x519a35){var _0x332b56=typeof _0x67bc62[_0xca71('0x1b')]===_0xca71('0x1c')&&typeof _0x67bc62[_0xca71('0x1d')]===_0xca71('0x1c');var _0x12aace=_0x519a35[_0xca71('0x1e')];var _0x266d77=_0x332b56?0x0:_0x67bc62[_0xca71('0x1b')];var _0x5525e4=_0x332b56?_0x519a35[_0xca71('0x1e')]:_0x67bc62[_0xca71('0x1b')]+_0x67bc62[_0xca71('0x1d')];var _0x1007f9;if(_0x5525e4>=_0x12aace){_0x5525e4=_0x12aace;_0x1007f9=0xc8;}else{_0x1007f9=0xce;}_0x32a0e3[_0xca71('0x1a')](_0x1007f9);return _0x32a0e3[_0xca71('0x1f')](_0xca71('0x20'),_0x266d77+'-'+_0x5525e4+'/'+_0x12aace)[_0xca71('0x21')](_0x519a35);}return null;};}function patchUpdates(_0x2dc213){return function(_0x3571c7){try{jsonpatch['apply'](_0x3571c7,_0x2dc213,!![]);}catch(_0x41f8df){return BPromise[_0xca71('0x22')](_0x41f8df);}return _0x3571c7[_0xca71('0x23')]();};}function saveUpdates(_0x55ed91,_0x5487a1){return function(_0x1efa58){if(_0x1efa58){return _0x1efa58['update'](_0x55ed91)[_0xca71('0x24')](function(_0x20b319){return _0x20b319;});}return null;};}function removeEntity(_0x5da968,_0x3225d7){return function(_0x45626f){if(_0x45626f){return _0x45626f[_0xca71('0x25')]()[_0xca71('0x24')](function(){_0x5da968[_0xca71('0x1a')](0xcc)[_0xca71('0x26')]();});}};}function handleEntityNotFound(_0x3d345f,_0x112b19){return function(_0xbe2f30){if(!_0xbe2f30){_0x3d345f[_0xca71('0x19')](0x194);}return _0xbe2f30;};}function handleError(_0x21ef58,_0x45e6b){_0x45e6b=_0x45e6b||0x1f4;return function(_0x4b9f44){logger[_0xca71('0x27')](_0x4b9f44[_0xca71('0x28')]);if(_0x4b9f44[_0xca71('0x29')]){delete _0x4b9f44[_0xca71('0x29')];}_0x21ef58[_0xca71('0x1a')](_0x45e6b)[_0xca71('0x2a')](_0x4b9f44);};}exports[_0xca71('0x2b')]=function(_0x3c2096,_0x453ea8){var _0x2f1a83={},_0x3465e8={},_0x3d6060={'count':0x0,'rows':[]};var _0x1d0aea=_[_0xca71('0x2c')](db[_0xca71('0x2d')][_0xca71('0x2e')],function(_0x4cf40e){return{'name':_0x4cf40e[_0xca71('0x2f')],'type':_0x4cf40e['type'][_0xca71('0x30')]};});_0x3465e8[_0xca71('0x31')]=_['map'](_0x1d0aea,_0xca71('0x29'));_0x3465e8[_0xca71('0x32')]=_[_0xca71('0x33')](_0x3c2096['query']);_0x3465e8[_0xca71('0x34')]=_[_0xca71('0x35')](_0x3465e8[_0xca71('0x31')],_0x3465e8[_0xca71('0x32')]);_0x2f1a83[_0xca71('0x36')]=_[_0xca71('0x35')](_0x3465e8['model'],qs[_0xca71('0x37')](_0x3c2096[_0xca71('0x32')]['fields']));_0x2f1a83[_0xca71('0x36')]=_0x2f1a83[_0xca71('0x36')][_0xca71('0x38')]?_0x2f1a83[_0xca71('0x36')]:_0x3465e8[_0xca71('0x31')];if(!_0x3c2096[_0xca71('0x32')]['hasOwnProperty'](_0xca71('0x39'))){_0x2f1a83[_0xca71('0x1d')]=qs[_0xca71('0x1d')](_0x3c2096[_0xca71('0x32')][_0xca71('0x1d')]);_0x2f1a83['offset']=qs[_0xca71('0x1b')](_0x3c2096[_0xca71('0x32')][_0xca71('0x1b')]);}_0x2f1a83['order']=qs[_0xca71('0x3a')](_0x3c2096[_0xca71('0x32')]['sort']);_0x2f1a83['where']=qs['filters'](_['pick'](_0x3c2096[_0xca71('0x32')],_0x3465e8[_0xca71('0x34')]),_0x1d0aea);if(_0x3c2096[_0xca71('0x32')][_0xca71('0x3b')]){_0x2f1a83[_0xca71('0x3c')]=_[_0xca71('0x3d')](_0x2f1a83[_0xca71('0x3c')],{'$or':_['map'](_0x1d0aea,function(_0x53012d){if(_0x53012d[_0xca71('0x3e')]!==_0xca71('0x3f')){var _0x3b8d5b={};_0x3b8d5b[_0x53012d[_0xca71('0x29')]]={'$like':'%'+_0x3c2096[_0xca71('0x32')][_0xca71('0x3b')]+'%'};return _0x3b8d5b;}})});}_0x2f1a83=_['merge']({},_0x2f1a83,_0x3c2096['options']);var _0x3a9686={'where':_0x2f1a83[_0xca71('0x3c')]};return db[_0xca71('0x2d')][_0xca71('0x1e')](_0x3a9686)[_0xca71('0x24')](function(_0x46a03f){_0x3d6060[_0xca71('0x1e')]=_0x46a03f;if(_0x3c2096[_0xca71('0x32')][_0xca71('0x40')]){_0x2f1a83[_0xca71('0x41')]=[{'all':!![]}];}return db['VoiceDialReport'][_0xca71('0x42')](_0x2f1a83);})[_0xca71('0x24')](function(_0x1fa686){_0x3d6060[_0xca71('0x43')]=_0x1fa686;return _0x3d6060;})['then'](respondWithFilteredResult(_0x453ea8,_0x2f1a83))[_0xca71('0x44')](handleError(_0x453ea8,null));};exports[_0xca71('0x45')]=function(_0x107f39,_0x2cdf0e){var _0x54e1ba={'raw':!![],'where':{'id':_0x107f39[_0xca71('0x46')]['id']}},_0x2758ea={};_0x2758ea['model']=_[_0xca71('0x33')](db[_0xca71('0x2d')][_0xca71('0x2e')]);_0x2758ea[_0xca71('0x32')]=_['keys'](_0x107f39[_0xca71('0x32')]);_0x2758ea[_0xca71('0x34')]=_['intersection'](_0x2758ea[_0xca71('0x31')],_0x2758ea[_0xca71('0x32')]);_0x54e1ba[_0xca71('0x36')]=_[_0xca71('0x35')](_0x2758ea[_0xca71('0x31')],qs[_0xca71('0x37')](_0x107f39[_0xca71('0x32')]['fields']));_0x54e1ba[_0xca71('0x36')]=_0x54e1ba[_0xca71('0x36')][_0xca71('0x38')]?_0x54e1ba[_0xca71('0x36')]:_0x2758ea[_0xca71('0x31')];if(_0x107f39[_0xca71('0x32')]['includeAll']){_0x54e1ba[_0xca71('0x41')]=[{'all':!![]}];}_0x54e1ba=_[_0xca71('0x3d')]({},_0x54e1ba,_0x107f39['options']);return db['VoiceDialReport'][_0xca71('0x47')](_0x54e1ba)[_0xca71('0x24')](handleEntityNotFound(_0x2cdf0e,null))[_0xca71('0x24')](respondWithResult(_0x2cdf0e,null))[_0xca71('0x44')](handleError(_0x2cdf0e,null));};exports[_0xca71('0x48')]=function(_0x1c8a31,_0x38b927){return db[_0xca71('0x2d')]['create'](_0x1c8a31[_0xca71('0x49')],{})[_0xca71('0x24')](respondWithResult(_0x38b927,0xc9))[_0xca71('0x44')](handleError(_0x38b927,null));};exports['update']=function(_0x44b991,_0x446051){if(_0x44b991[_0xca71('0x49')]['id']){delete _0x44b991[_0xca71('0x49')]['id'];}return db[_0xca71('0x2d')]['find']({'where':{'id':_0x44b991[_0xca71('0x46')]['id']}})['then'](handleEntityNotFound(_0x446051,null))[_0xca71('0x24')](saveUpdates(_0x44b991['body'],null))[_0xca71('0x24')](respondWithResult(_0x446051,null))[_0xca71('0x44')](handleError(_0x446051,null));};exports[_0xca71('0x25')]=function(_0xe436f3,_0x899405){return db[_0xca71('0x2d')][_0xca71('0x47')]({'where':{'id':_0xe436f3['params']['id']}})[_0xca71('0x24')](handleEntityNotFound(_0x899405,null))['then'](removeEntity(_0x899405,null))[_0xca71('0x44')](handleError(_0x899405,null));};exports['describe']=function(_0xac2cb4,_0x31d2d4){return db[_0xca71('0x2d')][_0xca71('0x4a')]()[_0xca71('0x24')](respondWithResult(_0x31d2d4,null))['catch'](handleError(_0x31d2d4,null));};
\ No newline at end of file
index 6d4f10c..9d40a57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa13d=['lodash','../../config/logger','api','bluebird','path','rimraf','exports','define','VoiceDialReport','report_dial'];(function(_0x2fa30e,_0x49d40a){var _0x2c6efa=function(_0x4f161e){while(--_0x4f161e){_0x2fa30e['push'](_0x2fa30e['shift']());}};_0x2c6efa(++_0x49d40a);}(_0xa13d,0x154));var _0xda13=function(_0x51750d,_0x1e0123){_0x51750d=_0x51750d-0x0;var _0x1dc21d=_0xa13d[_0x51750d];return _0x1dc21d;};'use strict';var _=require(_0xda13('0x0'));var util=require('util');var logger=require(_0xda13('0x1'))(_0xda13('0x2'));var moment=require('moment');var BPromise=require(_0xda13('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xda13('0x4'));var rimraf=require(_0xda13('0x5'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0xda13('0x6')]=function(_0x3d5a0e,_0x4df317){return _0x3d5a0e[_0xda13('0x7')](_0xda13('0x8'),attributes,{'tableName':_0xda13('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd3ab=['./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api','bluebird','path','../../config/environment'];(function(_0x946518,_0x22816f){var _0x909b69=function(_0x2fa5a4){while(--_0x2fa5a4){_0x946518['push'](_0x946518['shift']());}};_0x909b69(++_0x22816f);}(_0xd3ab,0x10a));var _0xbd3a=function(_0x38bc7e,_0x1667a8){_0x38bc7e=_0x38bc7e-0x0;var _0x332340=_0xd3ab[_0x38bc7e];return _0x332340;};'use strict';var _=require(_0xbd3a('0x0'));var util=require(_0xbd3a('0x1'));var logger=require(_0xbd3a('0x2'))(_0xbd3a('0x3'));var moment=require('moment');var BPromise=require(_0xbd3a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd3a('0x5'));var rimraf=require('rimraf');var config=require(_0xbd3a('0x6'));var attributes=require(_0xbd3a('0x7'));module[_0xbd3a('0x8')]=function(_0x357fa6,_0x70f037){return _0x357fa6[_0xbd3a('0x9')](_0xbd3a('0xa'),attributes,{'tableName':_0xbd3a('0xb'),'paranoid':![],'indexes':[{'fields':[_0xbd3a('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 05aba6b..483bc01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b66=['stringify','error','code','VoiceDialReport,\x20%s,\x20%s','message','info','catch','CreateVoiceDialReport','create','body','options','raw','debug','UpdateVoiceDialReport','VoiceDialReport','update','where','attributes','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','VoiceDialReport,\x20%s,\x20%s,\x20%s'];(function(_0xd93cbe,_0x11202e){var _0xe0bb40=function(_0x50f4cc){while(--_0x50f4cc){_0xd93cbe['push'](_0xd93cbe['shift']());}};_0xe0bb40(++_0x11202e);}(_0x0b66,0x1da));var _0x60b6=function(_0x2e4027,_0x312ad3){_0x2e4027=_0x2e4027-0x0;var _0x20fe3b=_0x0b66[_0x2e4027];return _0x20fe3b;};'use strict';var _=require(_0x60b6('0x0'));var util=require('util');var moment=require(_0x60b6('0x1'));var BPromise=require(_0x60b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x60b6('0x3'));var db=require(_0x60b6('0x4'))['db'];var utils=require(_0x60b6('0x5'));var logger=require(_0x60b6('0x6'))(_0x60b6('0x7'));var config=require(_0x60b6('0x8'));var jayson=require(_0x60b6('0x9'));var client=jayson[_0x60b6('0xa')][_0x60b6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x34ad73,_0x463257,_0x2dbc6b){return new BPromise(function(_0x1ace67,_0x174da8){return client[_0x60b6('0xc')](_0x34ad73,_0x2dbc6b)[_0x60b6('0xd')](function(_0x2a0ab0){logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x463257,_0x60b6('0xe'));logger['debug'](_0x60b6('0xf'),_0x463257,_0x60b6('0xe'),JSON[_0x60b6('0x10')](_0x2a0ab0));if(_0x2a0ab0[_0x60b6('0x11')]){if(_0x2a0ab0[_0x60b6('0x11')][_0x60b6('0x12')]===0x1f4){logger[_0x60b6('0x11')](_0x60b6('0x13'),_0x463257,_0x2a0ab0[_0x60b6('0x11')][_0x60b6('0x14')]);return _0x174da8(_0x2a0ab0['error'][_0x60b6('0x14')]);}logger[_0x60b6('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x463257,_0x2a0ab0[_0x60b6('0x11')][_0x60b6('0x14')]);return _0x1ace67(_0x2a0ab0[_0x60b6('0x11')]['message']);}else{logger[_0x60b6('0x15')](_0x60b6('0x13'),_0x463257,_0x60b6('0xe'));_0x1ace67(_0x2a0ab0['result']['message']);}})[_0x60b6('0x16')](function(_0x461010){logger['error'](_0x60b6('0x13'),_0x463257,_0x461010);_0x174da8(_0x461010);});});}exports[_0x60b6('0x17')]=function(_0x585391){var _0x3a24f0=this;return new Promise(function(_0x1ba58a,_0x4c04b4){return db['VoiceDialReport'][_0x60b6('0x18')](_0x585391[_0x60b6('0x19')],{'raw':_0x585391[_0x60b6('0x1a')]?_0x585391[_0x60b6('0x1a')][_0x60b6('0x1b')]===undefined?!![]:![]:!![]})[_0x60b6('0xd')](function(_0x5f440a){logger[_0x60b6('0x15')]('CreateVoiceDialReport',_0x585391);logger[_0x60b6('0x1c')](_0x60b6('0x17'),_0x585391,JSON[_0x60b6('0x10')](_0x5f440a));_0x1ba58a(_0x5f440a);})[_0x60b6('0x16')](function(_0x16f64c){logger['error']('CreateVoiceDialReport',_0x16f64c[_0x60b6('0x14')],_0x585391);_0x4c04b4(_0x3a24f0[_0x60b6('0x11')](0x1f4,_0x16f64c[_0x60b6('0x14')]));});});};exports[_0x60b6('0x1d')]=function(_0x3bf02e){var _0x1dc484=this;return new Promise(function(_0x27bd06,_0x1b0414){return db[_0x60b6('0x1e')][_0x60b6('0x1f')](_0x3bf02e[_0x60b6('0x19')],{'raw':_0x3bf02e[_0x60b6('0x1a')]?_0x3bf02e[_0x60b6('0x1a')][_0x60b6('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3bf02e['options']?_0x3bf02e[_0x60b6('0x1a')][_0x60b6('0x20')]||null:null,'attributes':_0x3bf02e[_0x60b6('0x1a')]?_0x3bf02e[_0x60b6('0x1a')][_0x60b6('0x21')]||null:null,'limit':_0x3bf02e[_0x60b6('0x1a')]?_0x3bf02e[_0x60b6('0x1a')][_0x60b6('0x22')]||null:null})['then'](function(_0x4e8827){logger[_0x60b6('0x15')]('UpdateVoiceDialReport',_0x3bf02e);logger[_0x60b6('0x1c')](_0x60b6('0x1d'),_0x3bf02e,JSON[_0x60b6('0x10')](_0x4e8827));_0x27bd06(_0x4e8827);})[_0x60b6('0x16')](function(_0x3f745b){logger['error'](_0x60b6('0x1d'),_0x3f745b['message'],_0x3bf02e);_0x1b0414(_0x1dc484[_0x60b6('0x11')](0x1f4,_0x3f745b['message']));});});};
\ No newline at end of file
+var _0x9fce=['rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','options','raw','UpdateVoiceDialReport','update','where','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x1e591e,_0x59f3b1){var _0x3229d2=function(_0x522501){while(--_0x522501){_0x1e591e['push'](_0x1e591e['shift']());}};_0x3229d2(++_0x59f3b1);}(_0x9fce,0xf2));var _0xe9fc=function(_0x7b173,_0x539d7f){_0x7b173=_0x7b173-0x0;var _0x1c598c=_0x9fce[_0x7b173];return _0x1c598c;};'use strict';var _=require(_0xe9fc('0x0'));var util=require(_0xe9fc('0x1'));var moment=require(_0xe9fc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe9fc('0x3'))['db'];var utils=require(_0xe9fc('0x4'));var logger=require(_0xe9fc('0x5'))(_0xe9fc('0x6'));var config=require(_0xe9fc('0x7'));var jayson=require(_0xe9fc('0x8'));var client=jayson[_0xe9fc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c1cd8,_0x32cf06,_0x3e01d4){return new BPromise(function(_0x25d698,_0x36d55d){return client[_0xe9fc('0xa')](_0x1c1cd8,_0x3e01d4)[_0xe9fc('0xb')](function(_0x23ee7b){logger[_0xe9fc('0xc')](_0xe9fc('0xd'),_0x32cf06,_0xe9fc('0xe'));logger[_0xe9fc('0xf')](_0xe9fc('0x10'),_0x32cf06,_0xe9fc('0xe'),JSON[_0xe9fc('0x11')](_0x23ee7b));if(_0x23ee7b[_0xe9fc('0x12')]){if(_0x23ee7b[_0xe9fc('0x12')][_0xe9fc('0x13')]===0x1f4){logger[_0xe9fc('0x12')](_0xe9fc('0xd'),_0x32cf06,_0x23ee7b['error'][_0xe9fc('0x14')]);return _0x36d55d(_0x23ee7b['error'][_0xe9fc('0x14')]);}logger[_0xe9fc('0x12')](_0xe9fc('0xd'),_0x32cf06,_0x23ee7b[_0xe9fc('0x12')][_0xe9fc('0x14')]);return _0x25d698(_0x23ee7b[_0xe9fc('0x12')][_0xe9fc('0x14')]);}else{logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x32cf06,_0xe9fc('0xe'));_0x25d698(_0x23ee7b[_0xe9fc('0x15')][_0xe9fc('0x14')]);}})[_0xe9fc('0x16')](function(_0x3934d6){logger['error'](_0xe9fc('0xd'),_0x32cf06,_0x3934d6);_0x36d55d(_0x3934d6);});});}exports[_0xe9fc('0x17')]=function(_0x21f508){var _0x3503e2=this;return new Promise(function(_0x4fa05d,_0x41d044){return db[_0xe9fc('0x18')][_0xe9fc('0x19')](_0x21f508['body'],{'raw':_0x21f508[_0xe9fc('0x1a')]?_0x21f508[_0xe9fc('0x1a')][_0xe9fc('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x46ecb5){logger[_0xe9fc('0xc')](_0xe9fc('0x17'),_0x21f508);logger[_0xe9fc('0xf')](_0xe9fc('0x17'),_0x21f508,JSON[_0xe9fc('0x11')](_0x46ecb5));_0x4fa05d(_0x46ecb5);})[_0xe9fc('0x16')](function(_0x3b6ca2){logger[_0xe9fc('0x12')](_0xe9fc('0x17'),_0x3b6ca2[_0xe9fc('0x14')],_0x21f508);_0x41d044(_0x3503e2[_0xe9fc('0x12')](0x1f4,_0x3b6ca2['message']));});});};exports[_0xe9fc('0x1c')]=function(_0x5ec8e9){var _0x381f98=this;return new Promise(function(_0x4aa922,_0xe1f03d){return db[_0xe9fc('0x18')][_0xe9fc('0x1d')](_0x5ec8e9['body'],{'raw':_0x5ec8e9[_0xe9fc('0x1a')]?_0x5ec8e9[_0xe9fc('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ec8e9['options']?_0x5ec8e9[_0xe9fc('0x1a')][_0xe9fc('0x1e')]||null:null,'attributes':_0x5ec8e9[_0xe9fc('0x1a')]?_0x5ec8e9['options']['attributes']||null:null,'limit':_0x5ec8e9[_0xe9fc('0x1a')]?_0x5ec8e9[_0xe9fc('0x1a')]['limit']||null:null})[_0xe9fc('0xb')](function(_0x1b6cd0){logger['info']('UpdateVoiceDialReport',_0x5ec8e9);logger[_0xe9fc('0xf')](_0xe9fc('0x1c'),_0x5ec8e9,JSON[_0xe9fc('0x11')](_0x1b6cd0));_0x4aa922(_0x1b6cd0);})['catch'](function(_0x4686d3){logger[_0xe9fc('0x12')](_0xe9fc('0x1c'),_0x4686d3['message'],_0x5ec8e9);_0xe1f03d(_0x381f98[_0xe9fc('0x12')](0x1f4,_0x4686d3[_0xe9fc('0x14')]));});});};
\ No newline at end of file
index ac86ac3..92d06f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2110=['post','/:id/applications','addApplications','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','create'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2110,0x156));var _0x0211=function(_0x1c095f,_0x486892){_0x1c095f=_0x1c095f-0x0;var _0x532099=_0x2110[_0x1c095f];return _0x532099;};'use strict';var multer=require(_0x0211('0x0'));var util=require(_0x0211('0x1'));var path=require(_0x0211('0x2'));var timeout=require(_0x0211('0x3'));var express=require(_0x0211('0x4'));var router=express[_0x0211('0x5')]();var fs_extra=require(_0x0211('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x0211('0x7'));var config=require(_0x0211('0x8'));var controller=require(_0x0211('0x9'));router[_0x0211('0xa')]('/',auth[_0x0211('0xb')](),controller[_0x0211('0xc')]);router[_0x0211('0xa')](_0x0211('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x0211('0xb')](),controller[_0x0211('0xe')]);router[_0x0211('0xf')](_0x0211('0x10'),auth[_0x0211('0xb')](),controller[_0x0211('0x11')]);router[_0x0211('0x12')]('/:id',auth[_0x0211('0xb')](),controller[_0x0211('0x13')]);router[_0x0211('0x14')](_0x0211('0xd'),auth[_0x0211('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa1e1=['isAuthenticated','index','show','/:id/applications','addApplications','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceExtension.controller'];(function(_0x27227e,_0x38898c){var _0x54f517=function(_0x2bec56){while(--_0x2bec56){_0x27227e['push'](_0x27227e['shift']());}};_0x54f517(++_0x38898c);}(_0xa1e1,0x1f0));var _0x1a1e=function(_0x5733ea,_0x1cd489){_0x5733ea=_0x5733ea-0x0;var _0x1a923e=_0xa1e1[_0x5733ea];return _0x1a923e;};'use strict';var multer=require(_0x1a1e('0x0'));var util=require('util');var path=require(_0x1a1e('0x1'));var timeout=require(_0x1a1e('0x2'));var express=require(_0x1a1e('0x3'));var router=express[_0x1a1e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1a1e('0x5'));var config=require(_0x1a1e('0x6'));var controller=require(_0x1a1e('0x7'));router['get']('/',auth[_0x1a1e('0x8')](),controller[_0x1a1e('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1a1e('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x1a1e('0xb'),auth[_0x1a1e('0x8')](),controller[_0x1a1e('0xc')]);router['put'](_0x1a1e('0xd'),auth['isAuthenticated'](),controller[_0x1a1e('0xe')]);router[_0x1a1e('0xf')]('/:id',auth[_0x1a1e('0x8')](),controller[_0x1a1e('0x10')]);module[_0x1a1e('0x11')]=router;
\ No newline at end of file
index b85c4ae..1b75305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4407=['sequelize','exports','compositeIndex','STRING','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten'];(function(_0x47a385,_0x5d8781){var _0x31abb9=function(_0x210f7a){while(--_0x210f7a){_0x47a385['push'](_0x47a385['shift']());}};_0x31abb9(++_0x5d8781);}(_0x4407,0xe4));var _0x7440=function(_0x5b6b2b,_0x5db6a9){_0x5b6b2b=_0x5b6b2b-0x0;var _0x1ed5e4=_0x4407[_0x5b6b2b];return _0x1ed5e4;};'use strict';var Sequelize=require(_0x7440('0x0'));module[_0x7440('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x7440('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x7440('0x3')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x7440('0x3')],'allowNull':![],'defaultValue':'1','unique':_0x7440('0x2')},'tag':{'type':Sequelize[_0x7440('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x7440('0x3')],'allowNull':![],'defaultValue':_0x7440('0x4')},'appdata':{'type':Sequelize[_0x7440('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x7440('0x5')](_0x7440('0x6'),_0x7440('0x7'),_0x7440('0x8'),_0x7440('0x9'),_0x7440('0xa'),_0x7440('0xb'),_0x7440('0xc')),'allowNull':![]},'description':{'type':Sequelize[_0x7440('0x3')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7440('0xd')},'IntervalId':{'type':Sequelize[_0x7440('0xe')]},'isApp':{'type':Sequelize[_0x7440('0xf')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0x7440('0x3')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x7440('0xe')]},'recordingFormat':{'type':Sequelize[_0x7440('0x3')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x7440('0xf')],'defaultValue':!![]},'name':{'type':Sequelize[_0x7440('0x10')],'get':function(_0x40974c){return this[_0x7440('0x11')](_0x7440('0x12'));}},'alias':{'type':Sequelize[_0x7440('0x3')],'allowNull':!![]}};
\ No newline at end of file
+var _0x5893=['any','*,*,*,*','INTEGER','BOOLEAN','wav','getDataValue','exten','sequelize','exports','compositeIndex','STRING','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax'];(function(_0x4179ee,_0x1d91e3){var _0x36cce1=function(_0x41dc8b){while(--_0x41dc8b){_0x4179ee['push'](_0x4179ee['shift']());}};_0x36cce1(++_0x1d91e3);}(_0x5893,0x14b));var _0x3589=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x5893[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0x3589('0x0'));module[_0x3589('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x3589('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x3589('0x3')],'allowNull':![],'unique':_0x3589('0x2')},'priority':{'type':Sequelize[_0x3589('0x3')],'allowNull':![],'defaultValue':'1','unique':_0x3589('0x2')},'tag':{'type':Sequelize[_0x3589('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3589('0x4')},'appdata':{'type':Sequelize[_0x3589('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x3589('0x5')](_0x3589('0x6'),_0x3589('0x7'),_0x3589('0x8'),_0x3589('0x9'),_0x3589('0xa'),'system',_0x3589('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0x3589('0x3')]},'interval':{'type':Sequelize[_0x3589('0x3')],'allowNull':![],'defaultValue':_0x3589('0xc')},'IntervalId':{'type':Sequelize[_0x3589('0xd')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x3589('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0x3589('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0x3589('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x3589('0xd')]},'recordingFormat':{'type':Sequelize[_0x3589('0x3')],'defaultValue':_0x3589('0xf')},'answer':{'type':Sequelize[_0x3589('0xe')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x22135e){return this[_0x3589('0x10')](_0x3589('0x11'));}},'alias':{'type':Sequelize[_0x3589('0x3')],'allowNull':!![]}};
\ No newline at end of file
index a8ce73a..f771e71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd689=['sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','stack','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','internal','filter','ignore','map','value','type','name','UserProfileResource','send','index','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','options','includeAll','include','VoiceExtension','findAll','catch','show','merge','find','params','create','startsWith','body','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','InternalRoutes','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','alias','addApplications','transaction'];(function(_0x40a188,_0x5eddc1){var _0x3df2e8=function(_0x1a3937){while(--_0x1a3937){_0x40a188['push'](_0x40a188['shift']());}};_0x3df2e8(++_0x5eddc1);}(_0xd689,0xc2));var _0x9d68=function(_0x2d98f1,_0x254499){_0x2d98f1=_0x2d98f1-0x0;var _0x5cbe38=_0xd689[_0x2d98f1];return _0x5cbe38;};'use strict';var _=require(_0x9d68('0x0'));var Redis=require(_0x9d68('0x1'));var qs=require(_0x9d68('0x2'));var logger=require(_0x9d68('0x3'))(_0x9d68('0x4'));var config=require(_0x9d68('0x5'));var db=require(_0x9d68('0x6'))['db'];config[_0x9d68('0x7')]=_['defaults'](config[_0x9d68('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x9d68('0x8'))(new Redis(config[_0x9d68('0x7')]));require(_0x9d68('0x9'))[_0x9d68('0xa')](socket);function respondWithStatusCode(_0x3cc8af,_0x3f2a22){_0x3f2a22=_0x3f2a22||0xcc;return function(_0x547ffb){if(_0x547ffb){return _0x3cc8af[_0x9d68('0xb')](_0x3f2a22);}return _0x3cc8af[_0x9d68('0xc')](_0x3f2a22)[_0x9d68('0xd')]();};}function respondWithResult(_0x2c97a2,_0x387b1c){_0x387b1c=_0x387b1c||0xc8;return function(_0x28ceab){if(_0x28ceab){return _0x2c97a2[_0x9d68('0xc')](_0x387b1c)[_0x9d68('0xe')](_0x28ceab);}};}function respondWithFilteredResult(_0x19d9a3,_0x194a74){return function(_0x46da8b){if(_0x46da8b){var _0x29a84e=typeof _0x194a74[_0x9d68('0xf')]===_0x9d68('0x10')&&typeof _0x194a74['limit']===_0x9d68('0x10');var _0x3f4794=_0x46da8b[_0x9d68('0x11')];var _0x25140b=_0x29a84e?0x0:_0x194a74['offset'];var _0x13e64c=_0x29a84e?_0x46da8b['count']:_0x194a74['offset']+_0x194a74['limit'];var _0x116541;if(_0x13e64c>=_0x3f4794){_0x13e64c=_0x3f4794;_0x116541=0xc8;}else{_0x116541=0xce;}_0x19d9a3[_0x9d68('0xc')](_0x116541);return _0x19d9a3[_0x9d68('0x12')](_0x9d68('0x13'),_0x25140b+'-'+_0x13e64c+'/'+_0x3f4794)['json'](_0x46da8b);}return null;};}function removeEntity(_0x4ee6e6){return function(_0xfd6257){if(_0xfd6257){return _0xfd6257[_0x9d68('0x14')]()[_0x9d68('0x15')](function(){var _0x16e97a=_0xfd6257[_0x9d68('0x16')]({'plain':!![]});var _0x549c73=[{'name':_0x9d68('0x17'),'value':_0x9d68('0x18'),'ignore':![]},{'name':_0x9d68('0x19'),'value':_0x9d68('0x1a'),'ignore':![]},{'name':'InternalRoutes','value':_0x9d68('0x1b'),'ignore':![]}];var _0x1cb068=_(_0x549c73)[_0x9d68('0x1c')](_0x9d68('0x1d'))[_0x9d68('0x1e')](_0x9d68('0x1f'))['value']();if(_['includes'](_0x1cb068,_0x16e97a[_0x9d68('0x20')])){return;}var _0xd7c7ea=_['find'](_0x549c73,[_0x9d68('0x1f'),_0x16e97a['type']])[_0x9d68('0x21')];return db[_0x9d68('0x22')][_0x9d68('0x14')]({'where':{'type':_0xd7c7ea,'resourceId':_0x16e97a['id']}})[_0x9d68('0x15')](function(){return _0xfd6257;});})['then'](function(){_0x4ee6e6[_0x9d68('0xc')](0xcc)[_0x9d68('0xd')]();});}};}function handleEntityNotFound(_0x4ff399){return function(_0x497de7){if(!_0x497de7){_0x4ff399['sendStatus'](0x194);}return _0x497de7;};}function handleError(_0x1490eb,_0x150149){_0x150149=_0x150149||0x1f4;return function(_0x2c84b8){logger['error'](_0x2c84b8['stack']);if(_0x2c84b8[_0x9d68('0x21')]){delete _0x2c84b8['name'];}_0x1490eb[_0x9d68('0xc')](_0x150149)[_0x9d68('0x23')](_0x2c84b8);};}exports[_0x9d68('0x24')]=function(_0x2e8d38,_0x260f51){var _0x22b974={},_0x177e44={},_0x343e43={'count':0x0,'rows':[]};var _0x1b43d4=_[_0x9d68('0x1e')](db['VoiceExtension'][_0x9d68('0x25')],function(_0x47b518){return{'name':_0x47b518[_0x9d68('0x26')],'type':_0x47b518[_0x9d68('0x20')][_0x9d68('0x27')]};});_0x177e44[_0x9d68('0x28')]=_['map'](_0x1b43d4,_0x9d68('0x21'));_0x177e44['query']=_[_0x9d68('0x29')](_0x2e8d38[_0x9d68('0x2a')]);_0x177e44[_0x9d68('0x2b')]=_[_0x9d68('0x2c')](_0x177e44[_0x9d68('0x28')],_0x177e44[_0x9d68('0x2a')]);_0x22b974[_0x9d68('0x2d')]=_[_0x9d68('0x2c')](_0x177e44['model'],qs[_0x9d68('0x2e')](_0x2e8d38[_0x9d68('0x2a')][_0x9d68('0x2e')]));_0x22b974[_0x9d68('0x2d')]=_0x22b974[_0x9d68('0x2d')][_0x9d68('0x2f')]?_0x22b974[_0x9d68('0x2d')]:_0x177e44[_0x9d68('0x28')];if(!_0x2e8d38['query']['hasOwnProperty'](_0x9d68('0x30'))){_0x22b974[_0x9d68('0x31')]=qs[_0x9d68('0x31')](_0x2e8d38[_0x9d68('0x2a')]['limit']);_0x22b974[_0x9d68('0xf')]=qs[_0x9d68('0xf')](_0x2e8d38[_0x9d68('0x2a')][_0x9d68('0xf')]);}_0x22b974[_0x9d68('0x32')]=qs['sort'](_0x2e8d38[_0x9d68('0x2a')][_0x9d68('0x33')]);_0x22b974[_0x9d68('0x34')]=qs['filters'](_[_0x9d68('0x35')](_0x2e8d38[_0x9d68('0x2a')],_0x177e44['filters']),_0x1b43d4);if(_0x2e8d38[_0x9d68('0x2a')][_0x9d68('0x1c')]){_0x22b974[_0x9d68('0x34')]=_['merge'](_0x22b974['where'],{'$or':_[_0x9d68('0x1e')](_0x1b43d4,function(_0x52d622){if(_0x52d622[_0x9d68('0x20')]!=='VIRTUAL'){var _0xd1d06f={};_0xd1d06f[_0x52d622[_0x9d68('0x21')]]={'$like':'%'+_0x2e8d38[_0x9d68('0x2a')][_0x9d68('0x1c')]+'%'};return _0xd1d06f;}})});}_0x22b974=_['merge']({},_0x22b974,_0x2e8d38[_0x9d68('0x36')]);var _0x215c1e={'where':_0x22b974['where']};return db['VoiceExtension'][_0x9d68('0x11')](_0x215c1e)[_0x9d68('0x15')](function(_0x4c2adc){_0x343e43[_0x9d68('0x11')]=_0x4c2adc;if(_0x2e8d38['query'][_0x9d68('0x37')]){_0x22b974[_0x9d68('0x38')]=[{'all':!![]}];}return db[_0x9d68('0x39')][_0x9d68('0x3a')](_0x22b974);})['then'](function(_0xd69e7e){_0x343e43['rows']=_0xd69e7e;return _0x343e43;})[_0x9d68('0x15')](respondWithFilteredResult(_0x260f51,_0x22b974))[_0x9d68('0x3b')](handleError(_0x260f51,null));};exports[_0x9d68('0x3c')]=function(_0x270219,_0x5b2aac){var _0x489f72={'raw':![],'where':{'id':_0x270219['params']['id']}},_0x4fdaee={};_0x4fdaee['model']=_[_0x9d68('0x29')](db[_0x9d68('0x39')][_0x9d68('0x25')]);_0x4fdaee['query']=_[_0x9d68('0x29')](_0x270219[_0x9d68('0x2a')]);_0x4fdaee[_0x9d68('0x2b')]=_['intersection'](_0x4fdaee[_0x9d68('0x28')],_0x4fdaee[_0x9d68('0x2a')]);_0x489f72[_0x9d68('0x2d')]=_['intersection'](_0x4fdaee[_0x9d68('0x28')],qs[_0x9d68('0x2e')](_0x270219[_0x9d68('0x2a')][_0x9d68('0x2e')]));_0x489f72[_0x9d68('0x2d')]=_0x489f72[_0x9d68('0x2d')][_0x9d68('0x2f')]?_0x489f72[_0x9d68('0x2d')]:_0x4fdaee['model'];if(_0x270219['query'][_0x9d68('0x37')]){_0x489f72[_0x9d68('0x38')]=[{'all':!![]}];}_0x489f72=_[_0x9d68('0x3d')]({},_0x489f72,_0x270219[_0x9d68('0x36')]);return db[_0x9d68('0x39')]['find'](_0x489f72)[_0x9d68('0x15')](handleEntityNotFound(_0x5b2aac,null))[_0x9d68('0x15')](respondWithResult(_0x5b2aac,null))[_0x9d68('0x3b')](handleError(_0x5b2aac,null));};exports[_0x9d68('0x14')]=function(_0x272782,_0x142d3a){return db['VoiceExtension'][_0x9d68('0x3e')]({'where':{'id':_0x272782[_0x9d68('0x3f')]['id']}})['then'](handleEntityNotFound(_0x142d3a,null))[_0x9d68('0x15')](removeEntity(_0x142d3a,null))[_0x9d68('0x3b')](handleError(_0x142d3a,null));};exports[_0x9d68('0x40')]=function(_0x39ebfc,_0x2f2369){if(_0x39ebfc['body'][_0x9d68('0x20')]==='outbound'&&!_[_0x9d68('0x41')](_0x39ebfc[_0x9d68('0x42')][_0x9d68('0x43')],'_')){_0x39ebfc['body'][_0x9d68('0x43')]='_'[_0x9d68('0x44')](_0x39ebfc[_0x9d68('0x42')]['exten']);}return db['VoiceExtension'][_0x9d68('0x40')](_0x39ebfc[_0x9d68('0x42')],{'raw':![]})[_0x9d68('0x15')](function(_0x3b2dd4){var _0x3356dc=_0x39ebfc['user'][_0x9d68('0x16')]({'plain':!![]});if(!_0x3356dc)throw new Error(_0x9d68('0x45'));if(_0x3356dc['role']==='user'){var _0x4648bc=_0x3b2dd4[_0x9d68('0x16')]({'plain':!![]});var _0x10da59=[{'name':_0x9d68('0x17'),'value':_0x9d68('0x18')},{'name':_0x9d68('0x19'),'value':_0x9d68('0x1a')},{'name':_0x9d68('0x46'),'value':'internal'}];var _0x521905=_[_0x9d68('0x3e')](_0x10da59,[_0x9d68('0x1f'),_0x4648bc[_0x9d68('0x20')]])[_0x9d68('0x21')];return db[_0x9d68('0x47')][_0x9d68('0x3e')]({'where':{'name':_0x521905,'userProfileId':_0x3356dc[_0x9d68('0x48')]},'raw':!![]})[_0x9d68('0x15')](function(_0x1ee838){if(_0x1ee838&&_0x1ee838[_0x9d68('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0x4648bc[_0x9d68('0x21')],'resourceId':_0x4648bc['id'],'type':_0x1ee838[_0x9d68('0x21')],'sectionId':_0x1ee838['id']},{})['then'](function(){return _0x3b2dd4;});}else{return _0x3b2dd4;}})['catch'](function(_0x395cf2){logger[_0x9d68('0x4a')](_0x9d68('0x4b'),_0x395cf2);throw _0x395cf2;});}return _0x3b2dd4;})['then'](respondWithResult(_0x2f2369,0xc9))[_0x9d68('0x3b')](handleError(_0x2f2369,null));};exports[_0x9d68('0x4c')]=function(_0x7f2b90,_0x531ea7){if(_0x7f2b90[_0x9d68('0x42')]['id']){delete _0x7f2b90[_0x9d68('0x42')]['id'];}return db[_0x9d68('0x39')][_0x9d68('0x3e')]({'where':{'id':_0x7f2b90['params']['id']}})[_0x9d68('0x15')](handleEntityNotFound(_0x531ea7,null))[_0x9d68('0x15')](function(_0x24bf1b){if(_0x24bf1b){return db[_0x9d68('0x39')][_0x9d68('0x4c')](_[_0x9d68('0x35')](_0x7f2b90[_0x9d68('0x42')],[_0x9d68('0x43'),_0x9d68('0x4d'),_0x9d68('0x4e'),'recordingFormat','cutdigits','mandatoryDisposition',_0x9d68('0x4f')]),{'where':{'context':_0x24bf1b[_0x9d68('0x4d')],'exten':_0x24bf1b[_0x9d68('0x43')]},'individualHooks':!![]})[_0x9d68('0x15')](function(_0x35db38){return _0x35db38;});}return null;})[_0x9d68('0x15')](respondWithStatusCode(_0x531ea7,null))[_0x9d68('0x3b')](handleError(_0x531ea7,null));};exports[_0x9d68('0x50')]=function(_0x57e82a,_0x35ae0a){var _0x295ce0=_0x57e82a['params']['id'];var _0x5696f1=_0x57e82a[_0x9d68('0x42')];var _0x1b1603=0xc8;var _0x2c0ecf=null;return db['sequelize'][_0x9d68('0x51')]({'isolationLevel':db[_0x9d68('0x52')][_0x9d68('0x53')][_0x9d68('0x54')][_0x9d68('0x55')]},function(_0x48f7c9){return db['VoiceExtension'][_0x9d68('0x56')]({'where':{'id':_0x295ce0},'transaction':_0x48f7c9})[_0x9d68('0x15')](function(_0x332857){if(_0x332857){return db['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':_0x295ce0},'transaction':_0x48f7c9})[_0x9d68('0x15')](function(){var _0x314ebf=_['map'](_0x5696f1,function(_0x75aa6){_0x75aa6['VoiceExtensionId']=_0x295ce0;_0x75aa6[_0x9d68('0x57')]=!![];return _0x75aa6;});return _0x332857['createRouting'](_0x314ebf);})[_0x9d68('0x15')](function(_0x1c355e){return db[_0x9d68('0x39')][_0x9d68('0x58')](_0x1c355e,{'transaction':_0x48f7c9});});}else{_0x1b1603=0x194;_0x2c0ecf=[];}});})[_0x9d68('0x15')](function(){if(_0x1b1603!==0x194){return db[_0x9d68('0x39')][_0x9d68('0x59')]({'where':{'isApp':!![],'VoiceExtensionId':_0x295ce0},'order':_0x9d68('0x5a')})[_0x9d68('0x15')](function(_0x190fa5){_0x2c0ecf=_0x190fa5;});}})[_0x9d68('0x3b')](function(_0x368d3c){_0x1b1603=0x1f4;logger[_0x9d68('0x4a')](_0x368d3c[_0x9d68('0x5b')]);if(_0x368d3c[_0x9d68('0x21')]){delete _0x368d3c[_0x9d68('0x21')];}_0x2c0ecf=_0x368d3c;})['finally'](function(){if(_0x2c0ecf===null){_0x35ae0a['sendStatus'](_0x1b1603);}else{if(_0x1b1603===0x1f4){_0x35ae0a['status'](_0x1b1603)[_0x9d68('0x23')](_0x2c0ecf);}else{_0x35ae0a[_0x9d68('0xc')](_0x1b1603)[_0x9d68('0xe')](_0x2c0ecf);}}});};
\ No newline at end of file
+var _0x028d=['VoiceExtensionId','isApp','createRouting','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','register','sendStatus','status','end','json','offset','count','limit','Content-Range','get','InboundRoutes','inbound','outbound','InternalRoutes','internal','filter','includes','type','find','value','name','UserProfileResource','destroy','then','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','create','body','startsWith','exten','user','role','OutboundRoutes','UserProfileSection','userProfileId','autoAssociation','update','description','mandatoryDisposition','alias','context','addApplications','sequelize','transaction','Transaction','READ_COMMITTED'];(function(_0x4c4e45,_0x4ba716){var _0x3e520e=function(_0x158d6b){while(--_0x158d6b){_0x4c4e45['push'](_0x4c4e45['shift']());}};_0x3e520e(++_0x4ba716);}(_0x028d,0x1b6));var _0xd028=function(_0xf589d9,_0x2bbcb7){_0xf589d9=_0xf589d9-0x0;var _0x5c52f7=_0x028d[_0xf589d9];return _0x5c52f7;};'use strict';var _=require('lodash');var Redis=require(_0xd028('0x0'));var qs=require(_0xd028('0x1'));var logger=require(_0xd028('0x2'))(_0xd028('0x3'));var config=require(_0xd028('0x4'));var db=require(_0xd028('0x5'))['db'];config[_0xd028('0x6')]=_['defaults'](config[_0xd028('0x6')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd028('0x6')]));require('./voiceExtension.socket')[_0xd028('0x7')](socket);function respondWithStatusCode(_0x520e6e,_0x1e2934){_0x1e2934=_0x1e2934||0xcc;return function(_0x3d52ce){if(_0x3d52ce){return _0x520e6e[_0xd028('0x8')](_0x1e2934);}return _0x520e6e[_0xd028('0x9')](_0x1e2934)[_0xd028('0xa')]();};}function respondWithResult(_0x27d0cd,_0x5f2974){_0x5f2974=_0x5f2974||0xc8;return function(_0x5c314b){if(_0x5c314b){return _0x27d0cd[_0xd028('0x9')](_0x5f2974)[_0xd028('0xb')](_0x5c314b);}};}function respondWithFilteredResult(_0x19a381,_0xb5109d){return function(_0x2cd795){if(_0x2cd795){var _0x1f1610=typeof _0xb5109d[_0xd028('0xc')]==='undefined'&&typeof _0xb5109d['limit']==='undefined';var _0x1c4f42=_0x2cd795[_0xd028('0xd')];var _0x30e724=_0x1f1610?0x0:_0xb5109d[_0xd028('0xc')];var _0xa53a2d=_0x1f1610?_0x2cd795[_0xd028('0xd')]:_0xb5109d[_0xd028('0xc')]+_0xb5109d[_0xd028('0xe')];var _0x51ef59;if(_0xa53a2d>=_0x1c4f42){_0xa53a2d=_0x1c4f42;_0x51ef59=0xc8;}else{_0x51ef59=0xce;}_0x19a381[_0xd028('0x9')](_0x51ef59);return _0x19a381['set'](_0xd028('0xf'),_0x30e724+'-'+_0xa53a2d+'/'+_0x1c4f42)[_0xd028('0xb')](_0x2cd795);}return null;};}function removeEntity(_0x34c4b8){return function(_0x3fd50e){if(_0x3fd50e){return _0x3fd50e['destroy']()['then'](function(){var _0x1375eb=_0x3fd50e[_0xd028('0x10')]({'plain':!![]});var _0x4cd9d6=[{'name':_0xd028('0x11'),'value':_0xd028('0x12'),'ignore':![]},{'name':'OutboundRoutes','value':_0xd028('0x13'),'ignore':![]},{'name':_0xd028('0x14'),'value':_0xd028('0x15'),'ignore':![]}];var _0x3a22da=_(_0x4cd9d6)[_0xd028('0x16')]('ignore')['map']('value')['value']();if(_[_0xd028('0x17')](_0x3a22da,_0x1375eb[_0xd028('0x18')])){return;}var _0x11e8b6=_[_0xd028('0x19')](_0x4cd9d6,[_0xd028('0x1a'),_0x1375eb[_0xd028('0x18')]])[_0xd028('0x1b')];return db[_0xd028('0x1c')][_0xd028('0x1d')]({'where':{'type':_0x11e8b6,'resourceId':_0x1375eb['id']}})['then'](function(){return _0x3fd50e;});})[_0xd028('0x1e')](function(){_0x34c4b8[_0xd028('0x9')](0xcc)[_0xd028('0xa')]();});}};}function handleEntityNotFound(_0x2ec9ee){return function(_0x5de596){if(!_0x5de596){_0x2ec9ee[_0xd028('0x8')](0x194);}return _0x5de596;};}function handleError(_0x2c9e4c,_0x1845c3){_0x1845c3=_0x1845c3||0x1f4;return function(_0x56ef89){logger[_0xd028('0x1f')](_0x56ef89[_0xd028('0x20')]);if(_0x56ef89['name']){delete _0x56ef89[_0xd028('0x1b')];}_0x2c9e4c[_0xd028('0x9')](_0x1845c3)[_0xd028('0x21')](_0x56ef89);};}exports[_0xd028('0x22')]=function(_0xd92541,_0xa6ddd0){var _0x210454={},_0x24b44f={},_0x5f1c99={'count':0x0,'rows':[]};var _0x3aa511=_['map'](db[_0xd028('0x23')][_0xd028('0x24')],function(_0x71489f){return{'name':_0x71489f[_0xd028('0x25')],'type':_0x71489f['type'][_0xd028('0x26')]};});_0x24b44f['model']=_['map'](_0x3aa511,_0xd028('0x1b'));_0x24b44f[_0xd028('0x27')]=_[_0xd028('0x28')](_0xd92541['query']);_0x24b44f[_0xd028('0x29')]=_[_0xd028('0x2a')](_0x24b44f[_0xd028('0x2b')],_0x24b44f['query']);_0x210454[_0xd028('0x2c')]=_[_0xd028('0x2a')](_0x24b44f['model'],qs[_0xd028('0x2d')](_0xd92541[_0xd028('0x27')][_0xd028('0x2d')]));_0x210454[_0xd028('0x2c')]=_0x210454[_0xd028('0x2c')][_0xd028('0x2e')]?_0x210454[_0xd028('0x2c')]:_0x24b44f[_0xd028('0x2b')];if(!_0xd92541['query'][_0xd028('0x2f')](_0xd028('0x30'))){_0x210454[_0xd028('0xe')]=qs[_0xd028('0xe')](_0xd92541[_0xd028('0x27')][_0xd028('0xe')]);_0x210454[_0xd028('0xc')]=qs[_0xd028('0xc')](_0xd92541[_0xd028('0x27')][_0xd028('0xc')]);}_0x210454[_0xd028('0x31')]=qs['sort'](_0xd92541[_0xd028('0x27')][_0xd028('0x32')]);_0x210454[_0xd028('0x33')]=qs[_0xd028('0x29')](_[_0xd028('0x34')](_0xd92541['query'],_0x24b44f[_0xd028('0x29')]),_0x3aa511);if(_0xd92541[_0xd028('0x27')][_0xd028('0x16')]){_0x210454[_0xd028('0x33')]=_[_0xd028('0x35')](_0x210454[_0xd028('0x33')],{'$or':_[_0xd028('0x36')](_0x3aa511,function(_0x3ebd9a){if(_0x3ebd9a[_0xd028('0x18')]!==_0xd028('0x37')){var _0x5a747e={};_0x5a747e[_0x3ebd9a[_0xd028('0x1b')]]={'$like':'%'+_0xd92541['query'][_0xd028('0x16')]+'%'};return _0x5a747e;}})});}_0x210454=_[_0xd028('0x35')]({},_0x210454,_0xd92541['options']);var _0x5585e9={'where':_0x210454[_0xd028('0x33')]};return db[_0xd028('0x23')][_0xd028('0xd')](_0x5585e9)[_0xd028('0x1e')](function(_0x44e220){_0x5f1c99[_0xd028('0xd')]=_0x44e220;if(_0xd92541[_0xd028('0x27')][_0xd028('0x38')]){_0x210454[_0xd028('0x39')]=[{'all':!![]}];}return db['VoiceExtension'][_0xd028('0x3a')](_0x210454);})['then'](function(_0x151a73){_0x5f1c99[_0xd028('0x3b')]=_0x151a73;return _0x5f1c99;})[_0xd028('0x1e')](respondWithFilteredResult(_0xa6ddd0,_0x210454))[_0xd028('0x3c')](handleError(_0xa6ddd0,null));};exports[_0xd028('0x3d')]=function(_0x38daf3,_0x522217){var _0x5d7e0a={'raw':![],'where':{'id':_0x38daf3[_0xd028('0x3e')]['id']}},_0x354079={};_0x354079[_0xd028('0x2b')]=_[_0xd028('0x28')](db[_0xd028('0x23')]['rawAttributes']);_0x354079[_0xd028('0x27')]=_[_0xd028('0x28')](_0x38daf3[_0xd028('0x27')]);_0x354079[_0xd028('0x29')]=_[_0xd028('0x2a')](_0x354079[_0xd028('0x2b')],_0x354079[_0xd028('0x27')]);_0x5d7e0a[_0xd028('0x2c')]=_[_0xd028('0x2a')](_0x354079['model'],qs[_0xd028('0x2d')](_0x38daf3[_0xd028('0x27')]['fields']));_0x5d7e0a['attributes']=_0x5d7e0a['attributes']['length']?_0x5d7e0a[_0xd028('0x2c')]:_0x354079[_0xd028('0x2b')];if(_0x38daf3['query'][_0xd028('0x38')]){_0x5d7e0a[_0xd028('0x39')]=[{'all':!![]}];}_0x5d7e0a=_[_0xd028('0x35')]({},_0x5d7e0a,_0x38daf3[_0xd028('0x3f')]);return db[_0xd028('0x23')]['find'](_0x5d7e0a)[_0xd028('0x1e')](handleEntityNotFound(_0x522217,null))['then'](respondWithResult(_0x522217,null))[_0xd028('0x3c')](handleError(_0x522217,null));};exports['destroy']=function(_0x4a5182,_0x4986a0){return db[_0xd028('0x23')]['find']({'where':{'id':_0x4a5182['params']['id']}})[_0xd028('0x1e')](handleEntityNotFound(_0x4986a0,null))[_0xd028('0x1e')](removeEntity(_0x4986a0,null))[_0xd028('0x3c')](handleError(_0x4986a0,null));};exports[_0xd028('0x40')]=function(_0x2e077c,_0x2ee6b8){if(_0x2e077c[_0xd028('0x41')][_0xd028('0x18')]==='outbound'&&!_[_0xd028('0x42')](_0x2e077c[_0xd028('0x41')][_0xd028('0x43')],'_')){_0x2e077c[_0xd028('0x41')]['exten']='_'['concat'](_0x2e077c[_0xd028('0x41')][_0xd028('0x43')]);}return db[_0xd028('0x23')][_0xd028('0x40')](_0x2e077c['body'],{'raw':![]})['then'](function(_0x472608){var _0x5edc62=_0x2e077c[_0xd028('0x44')]['get']({'plain':!![]});if(!_0x5edc62)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5edc62[_0xd028('0x45')]===_0xd028('0x44')){var _0x212da0=_0x472608[_0xd028('0x10')]({'plain':!![]});var _0x26cdca=[{'name':_0xd028('0x11'),'value':'inbound'},{'name':_0xd028('0x46'),'value':_0xd028('0x13')},{'name':_0xd028('0x14'),'value':_0xd028('0x15')}];var _0x469422=_[_0xd028('0x19')](_0x26cdca,[_0xd028('0x1a'),_0x212da0[_0xd028('0x18')]])[_0xd028('0x1b')];return db[_0xd028('0x47')][_0xd028('0x19')]({'where':{'name':_0x469422,'userProfileId':_0x5edc62[_0xd028('0x48')]},'raw':!![]})[_0xd028('0x1e')](function(_0x5ad429){if(_0x5ad429&&_0x5ad429[_0xd028('0x49')]===0x0){return db[_0xd028('0x1c')]['create']({'name':_0x212da0[_0xd028('0x1b')],'resourceId':_0x212da0['id'],'type':_0x5ad429[_0xd028('0x1b')],'sectionId':_0x5ad429['id']},{})[_0xd028('0x1e')](function(){return _0x472608;});}else{return _0x472608;}})[_0xd028('0x3c')](function(_0x2e9b46){logger[_0xd028('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e9b46);throw _0x2e9b46;});}return _0x472608;})[_0xd028('0x1e')](respondWithResult(_0x2ee6b8,0xc9))[_0xd028('0x3c')](handleError(_0x2ee6b8,null));};exports[_0xd028('0x4a')]=function(_0x3027fa,_0x382ffc){if(_0x3027fa[_0xd028('0x41')]['id']){delete _0x3027fa[_0xd028('0x41')]['id'];}return db['VoiceExtension']['find']({'where':{'id':_0x3027fa[_0xd028('0x3e')]['id']}})[_0xd028('0x1e')](handleEntityNotFound(_0x382ffc,null))[_0xd028('0x1e')](function(_0x5d8669){if(_0x5d8669){return db[_0xd028('0x23')]['update'](_[_0xd028('0x34')](_0x3027fa[_0xd028('0x41')],[_0xd028('0x43'),'context',_0xd028('0x4b'),'recordingFormat','cutdigits',_0xd028('0x4c'),_0xd028('0x4d')]),{'where':{'context':_0x5d8669[_0xd028('0x4e')],'exten':_0x5d8669[_0xd028('0x43')]},'individualHooks':!![]})[_0xd028('0x1e')](function(_0xeb6ab3){return _0xeb6ab3;});}return null;})[_0xd028('0x1e')](respondWithStatusCode(_0x382ffc,null))['catch'](handleError(_0x382ffc,null));};exports[_0xd028('0x4f')]=function(_0xbeedfa,_0x5c0597){var _0x3106f2=_0xbeedfa['params']['id'];var _0x36ad7d=_0xbeedfa['body'];var _0xb1d45f=0xc8;var _0x49e445=null;return db[_0xd028('0x50')][_0xd028('0x51')]({'isolationLevel':db['sequelize'][_0xd028('0x52')]['ISOLATION_LEVELS'][_0xd028('0x53')]},function(_0x1ec7db){return db['VoiceExtension']['findOne']({'where':{'id':_0x3106f2},'transaction':_0x1ec7db})[_0xd028('0x1e')](function(_0x45db13){if(_0x45db13){return db[_0xd028('0x23')][_0xd028('0x1d')]({'where':{'VoiceExtensionId':_0x3106f2},'transaction':_0x1ec7db})['then'](function(){var _0x5b8993=_[_0xd028('0x36')](_0x36ad7d,function(_0x3e1502){_0x3e1502[_0xd028('0x54')]=_0x3106f2;_0x3e1502[_0xd028('0x55')]=!![];return _0x3e1502;});return _0x45db13[_0xd028('0x56')](_0x5b8993);})[_0xd028('0x1e')](function(_0x568bc1){return db['VoiceExtension']['bulkCreate'](_0x568bc1,{'transaction':_0x1ec7db});});}else{_0xb1d45f=0x194;_0x49e445=[];}});})['then'](function(){if(_0xb1d45f!==0x194){return db[_0xd028('0x23')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x3106f2},'order':'cast(priority\x20as\x20unsigned)'})[_0xd028('0x1e')](function(_0x215f54){_0x49e445=_0x215f54;});}})[_0xd028('0x3c')](function(_0x3f874e){_0xb1d45f=0x1f4;logger[_0xd028('0x1f')](_0x3f874e[_0xd028('0x20')]);if(_0x3f874e['name']){delete _0x3f874e[_0xd028('0x1b')];}_0x49e445=_0x3f874e;})['finally'](function(){if(_0x49e445===null){_0x5c0597['sendStatus'](_0xb1d45f);}else{if(_0xb1d45f===0x1f4){_0x5c0597[_0xd028('0x9')](_0xb1d45f)[_0xd028('0x21')](_0x49e445);}else{_0x5c0597[_0xd028('0x9')](_0xb1d45f)[_0xd028('0xb')](_0x49e445);}}});};
\ No newline at end of file
index 1c86189..fb609d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6709=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save'];(function(_0x2d0d4a,_0x356b8a){var _0x392794=function(_0x63d4e2){while(--_0x63d4e2){_0x2d0d4a['push'](_0x2d0d4a['shift']());}};_0x392794(++_0x356b8a);}(_0x6709,0x87));var _0x9670=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x6709[_0x255d5b];return _0x3e141a;};'use strict';var EventEmitter=require(_0x9670('0x0'));var VoiceExtension=require(_0x9670('0x1'))['db'][_0x9670('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x9670('0x3')](0x0);var events={'afterCreate':_0x9670('0x4'),'afterUpdate':_0x9670('0x5'),'afterDestroy':_0x9670('0x6')};function emitEvent(_0x18b10a){return function(_0x2418f1,_0x40bc37,_0x30f4a6){VoiceExtensionEvents[_0x9670('0x7')](_0x18b10a+':'+_0x2418f1['id'],_0x2418f1);VoiceExtensionEvents[_0x9670('0x7')](_0x18b10a,_0x2418f1);_0x30f4a6(null);};}for(var e in events){if(events[_0x9670('0x8')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x9670('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x2621=['../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x36cb6a,_0x2b4d79){var _0x2538cd=function(_0x4598b3){while(--_0x4598b3){_0x36cb6a['push'](_0x36cb6a['shift']());}};_0x2538cd(++_0x2b4d79);}(_0x2621,0xdb));var _0x1262=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2621[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x1262('0x0'));var VoiceExtension=require(_0x1262('0x1'))['db'][_0x1262('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x1262('0x3')](0x0);var events={'afterCreate':_0x1262('0x4'),'afterUpdate':_0x1262('0x5'),'afterDestroy':_0x1262('0x6')};function emitEvent(_0x245a28){return function(_0x49a40c,_0x465516,_0x423f99){VoiceExtensionEvents['emit'](_0x245a28+':'+_0x49a40c['id'],_0x49a40c);VoiceExtensionEvents[_0x1262('0x7')](_0x245a28,_0x49a40c);_0x423f99(null);};}for(var e in events){if(events[_0x1262('0x8')](e)){var event=events[e];VoiceExtension[_0x1262('0x9')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index d91c487..aa3507a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8786=['SIP','join','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','hasOwnProperty','tag','toLowerCase','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','answer','queue','playback','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','appType','outboundDial','appdata','priority','concat','last','define','lodash','./voiceExtension.attributes','exports','models','type','Set','context','alias','CDR(routeAlias)=','No\x20alias\x20set','exten','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','options','url','split','length','name','trunk','param','phone','prefix'];(function(_0x962fc5,_0x58f074){var _0x43667c=function(_0x5e6ec0){while(--_0x5e6ec0){_0x962fc5['push'](_0x962fc5['shift']());}};_0x43667c(++_0x58f074);}(_0x8786,0x7a));var _0x6878=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x8786[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0x6878('0x0'));var attributes=require(_0x6878('0x1'));module[_0x6878('0x2')]=function(_0x26afa9){var _0x96c45c=_0x26afa9[_0x6878('0x3')];function _0x188829(_0xa01ae1){var _0x3bfe28=0x2;var _0x413805=[{'type':_0xa01ae1[_0x6878('0x4')],'app':_0x6878('0x5'),'appdata':'CDR(type)='+_0xa01ae1[_0x6878('0x4')],'context':_0xa01ae1[_0x6878('0x6')],'exten':_0xa01ae1['exten'],'priority':_0x3bfe28++,'VoiceExtensionId':_0xa01ae1['id']},{'type':_0xa01ae1[_0x6878('0x4')],'app':_0xa01ae1[_0x6878('0x7')]?_0x6878('0x5'):'NoOp','appdata':_0xa01ae1[_0x6878('0x7')]?_0x6878('0x8')+_0xa01ae1[_0x6878('0x7')]:_0x6878('0x9'),'context':_0xa01ae1['context'],'exten':_0xa01ae1[_0x6878('0xa')],'priority':_0x3bfe28++,'VoiceExtensionId':_0xa01ae1['id']}];if(_0xa01ae1['type']===_0x6878('0xb')){_0x413805[_0x6878('0xc')]({'type':_0x6878('0xb'),'app':_0x6878('0x5'),'appdata':_0x6878('0xd')+_0xa01ae1['id'],'context':_0xa01ae1[_0x6878('0x6')],'exten':_0xa01ae1[_0x6878('0xa')],'priority':_0x3bfe28++,'VoiceExtensionId':_0xa01ae1['id']});}_0x413805[_0x6878('0xc')]({'type':_0xa01ae1[_0x6878('0x4')],'app':_0x6878('0x5'),'appdata':_0x6878('0xe'),'context':_0xa01ae1[_0x6878('0x6')],'exten':_0xa01ae1[_0x6878('0xa')],'priority':_0x3bfe28++,'VoiceExtensionId':_0xa01ae1['id']},{'type':_0xa01ae1[_0x6878('0x4')],'app':'Set','appdata':_0x6878('0xf'),'context':_0xa01ae1[_0x6878('0x6')],'exten':_0xa01ae1[_0x6878('0xa')],'priority':_0x3bfe28++,'VoiceExtensionId':_0xa01ae1['id']},{'type':_0xa01ae1[_0x6878('0x4')],'app':_0x6878('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0xa01ae1['context'],'exten':_0xa01ae1[_0x6878('0xa')],'priority':_0x3bfe28++,'VoiceExtensionId':_0xa01ae1['id']});return _0x413805;}function _0x188082(_0x35a0db){var _0xc7fa48=0x2;var _0x2b664f=[{'type':_0x6878('0x10'),'app':_0x6878('0x5'),'appdata':_0x6878('0x11'),'context':_0x35a0db['context'],'exten':_0x35a0db['exten'],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':_0x35a0db['alias']?'Set':'NoOp','appdata':_0x35a0db['alias']?'CDR(routeAlias)='+_0x35a0db['alias']:_0x6878('0x9'),'context':_0x35a0db['context'],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':_0x6878('0x5'),'appdata':_0x6878('0x12')+(_0x35a0db[_0x6878('0x13')]?_0x6878('0x14')+_0x35a0db[_0x6878('0x13')]+'}':_0x6878('0x15')),'context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':_0x6878('0x5'),'appdata':_0x6878('0xd')+_0x35a0db['id'],'context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':'ExecIf','appdata':_0x6878('0x16')+(_0xc7fa48+0x2)+_0x6878('0x17')+(_0xc7fa48+0x1)+')','context':_0x35a0db['context'],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':'outbound','app':_0x6878('0x5'),'appdata':_0x35a0db['cutdigits']?_0x6878('0x18')+_0x35a0db['cutdigits']+'}':_0x6878('0x19'),'context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db['exten'],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':_0x6878('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db['exten'],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db['exten'],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':'outbound','app':_0x6878('0x5'),'appdata':_0x6878('0x1a'),'context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':_0x6878('0x5'),'appdata':_0x6878('0x1b')+_0x35a0db['id'],'context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']}];if(_0x35a0db['hasOwnProperty'](_0x6878('0x1c'))&&_0x35a0db[_0x6878('0x1c')]!==_0x6878('0x1d')){_0x2b664f[_0x6878('0xc')]({'type':_0x6878('0x10'),'app':_0x6878('0x5'),'appdata':_0x6878('0x1e'),'context':_0x35a0db[_0x6878('0x6')],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']},{'type':_0x6878('0x10'),'app':'Set','appdata':_0x6878('0x1f')+_0x35a0db['recordingFormat']||_0x6878('0x20'),'context':_0x35a0db['context'],'exten':_0x35a0db[_0x6878('0xa')],'priority':_0xc7fa48++,'VoiceExtensionId':_0x35a0db['id']});}return _0x2b664f;}function _0x259fc3(_0x50893d,_0x4c3ac7){var _0x29abeb=[{'name':'trunk','param':0x0},{'name':'timeout','param':0x1},{'name':_0x6878('0x21'),'param':0x2},{'name':_0x6878('0x22'),'param':0x3}];var _0x12adf4={};var _0x3de059=_0x4c3ac7[_0x6878('0x23')](',');var _0xb94ffa=[];for(var _0x177f20=0x0;_0x177f20<_0x29abeb[_0x6878('0x24')];_0x177f20++){switch(_0x29abeb[_0x177f20][_0x6878('0x25')]){case _0x6878('0x26'):_0x12adf4['trunk']=_0x3de059[_0x29abeb[_0x177f20][_0x6878('0x27')]][_0x6878('0x23')]('/')[0x1];_0x12adf4[_0x6878('0x28')]=_0x3de059[_0x29abeb[_0x177f20][_0x6878('0x27')]][_0x6878('0x23')]('/')[0x2];_0x12adf4[_0x6878('0x29')]=_0x12adf4[_0x6878('0x28')]?_0x12adf4[_0x6878('0x28')][_0x6878('0x23')]('$')[0x0]:undefined;_0x12adf4['phone']=_0x50893d[_0x6878('0x13')]?(_0x12adf4[_0x6878('0x29')]||'')+_0x6878('0x14')+_0x50893d[_0x6878('0x13')]+'}':(_0x12adf4[_0x6878('0x29')]||'')+_0x6878('0x15');_0xb94ffa[_0x29abeb[_0x177f20][_0x6878('0x27')]]=[_0x6878('0x2a'),_0x12adf4['trunk'],_0x12adf4[_0x6878('0x28')]][_0x6878('0x2b')]('/');break;case _0x6878('0x21'):_0x12adf4[_0x6878('0x21')]=_0x3de059[_0x29abeb[_0x177f20]['param']];if(_0x50893d['recordingFormat']!==_0x6878('0x1d')){if(_0x12adf4[_0x6878('0x21')][_0x6878('0x2c')](_0x6878('0x2d'))<0x0){_0x12adf4[_0x6878('0x21')]+=_0x6878('0x2d');}}else{_0x12adf4['options']=_0x12adf4[_0x6878('0x21')]['replace']('U(xcally-mixmonitor-context)','');}_0xb94ffa[_0x29abeb[_0x177f20]['param']]=_0x12adf4[_0x6878('0x21')];break;default:_0xb94ffa[_0x29abeb[_0x177f20][_0x6878('0x27')]]=_0x3de059[_0x29abeb[_0x177f20][_0x6878('0x27')]];}}return _0xb94ffa[_0x6878('0x2b')](',');}function _0x25f075(_0x31b7d2,_0x2fffca,_0x121bc5){return new Promise(function(_0x3a2b08,_0x500f67){var _0x6a741b=[];if(_[_0x6878('0x2e')](_0x2fffca))return _0x3a2b08(_0x6a741b);_0x96c45c[_0x6878('0x2f')][_0x6878('0x30')]({'attributes':['id',_0x6878('0x31'),_0x6878('0x32')],'raw':!![]})[_0x6878('0x33')](function(_0x205a85){for(var _0x1f2e14=0x0,_0x3b406d=0x0;_0x1f2e14<_0x2fffca[_0x6878('0x24')];_0x1f2e14++,_0x3b406d=0x0){var _0x4e8ec7=_0x2fffca[_0x1f2e14];var _0x4e5f02=[];var _0x3293d0=[];delete _0x4e8ec7['id'];if(_0x4e8ec7[_0x6878('0x31')]!==_0x6878('0x34')){_0x4e8ec7[_0x6878('0x35')]=[_0x4e8ec7[_0x6878('0x31')]];}else{_0x4e8ec7[_0x6878('0x35')]=_0x4e8ec7[_0x6878('0x32')]?_[_0x6878('0x36')](_[_0x6878('0x37')](_0x205a85,{'IntervalId':_0x4e8ec7[_0x6878('0x32')]}),_0x6878('0x31')):[];}_0x4e8ec7[_0x6878('0x6')]=_0x31b7d2[_0x6878('0x6')];_0x4e8ec7[_0x6878('0xa')]=_0x31b7d2[_0x6878('0xa')];if(_0x4e8ec7['type'])_0x4e8ec7[_0x6878('0x4')]=_0x4e8ec7[_0x6878('0x4')]['toLowerCase']();if(_0x31b7d2['type']===_0x6878('0x10')){if(_0x4e8ec7[_0x6878('0x38')](_0x6878('0x39'))&&_0x4e8ec7[_0x6878('0x39')]&&_0x4e8ec7[_0x6878('0x39')]!=='--'){_0x4e5f02['push']({'type':_0x4e8ec7[_0x6878('0x4')][_0x6878('0x3a')](),'app':'Set','appdata':_0x6878('0x3b')+_0x4e8ec7[_0x6878('0x39')],'context':_0x31b7d2[_0x6878('0x6')],'exten':_0x31b7d2[_0x6878('0xa')],'priority':_0x4e8ec7[_0x6878('0x35')][_0x6878('0x24')]+_0x121bc5+_0x3b406d++,'VoiceExtensionId':_0x31b7d2['id']});}_0x4e5f02[_0x6878('0xc')]({'type':_0x4e8ec7[_0x6878('0x4')][_0x6878('0x3a')](),'app':_0x6878('0x3c'),'appdata':_0x6878('0x3d')+(_0x4e8ec7[_0x6878('0x3e')]?'Set(CALLERID(all)='+_0x4e8ec7[_0x6878('0x3e')]+')':_0x6878('0x3f')),'context':_0x31b7d2[_0x6878('0x6')],'exten':_0x31b7d2['exten'],'priority':_0x4e8ec7[_0x6878('0x35')]['length']+_0x121bc5+_0x3b406d++,'VoiceExtensionId':_0x31b7d2['id']});}else{if(_0x4e8ec7[_0x6878('0x38')](_0x6878('0x40'))){if([_0x6878('0x41'),_0x6878('0x42')]['includes'](_0x4e8ec7[_0x6878('0x43')][_0x6878('0x3a')]())&&_0x4e8ec7['appType']!==_0x6878('0x44')){if(_0x4e8ec7[_0x6878('0x40')]){_0x4e5f02[_0x6878('0xc')]({'type':_0x4e8ec7[_0x6878('0x4')][_0x6878('0x3a')](),'app':_0x6878('0x3c'),'appdata':_0x6878('0x45'),'context':_0x31b7d2[_0x6878('0x6')],'exten':_0x31b7d2['exten'],'priority':_0x4e8ec7[_0x6878('0x35')][_0x6878('0x24')]+_0x121bc5+_0x3b406d++,'VoiceExtensionId':_0x31b7d2['id']});_0x4e5f02[_0x6878('0xc')]({'type':_0x4e8ec7[_0x6878('0x4')][_0x6878('0x3a')](),'app':'Set','appdata':_0x6878('0x46'),'context':_0x31b7d2[_0x6878('0x6')],'exten':_0x31b7d2[_0x6878('0xa')],'priority':_0x4e8ec7[_0x6878('0x35')][_0x6878('0x24')]+_0x121bc5+_0x3b406d++,'VoiceExtensionId':_0x31b7d2['id']});}else{_0x4e5f02[_0x6878('0xc')]({'type':_0x4e8ec7[_0x6878('0x4')][_0x6878('0x3a')](),'app':_0x6878('0x3c'),'appdata':_0x6878('0x47'),'context':_0x31b7d2[_0x6878('0x6')],'exten':_0x31b7d2['exten'],'priority':_0x4e8ec7[_0x6878('0x35')]['length']+_0x121bc5+_0x3b406d++,'VoiceExtensionId':_0x31b7d2['id']});_0x4e5f02[_0x6878('0xc')]({'type':_0x4e8ec7[_0x6878('0x4')]['toLowerCase'](),'app':_0x6878('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x31b7d2[_0x6878('0x6')],'exten':_0x31b7d2[_0x6878('0xa')],'priority':_0x4e8ec7[_0x6878('0x35')][_0x6878('0x24')]+_0x121bc5+_0x3b406d++,'VoiceExtensionId':_0x31b7d2['id']});}}}}for(var _0x1a53f1=0x0;_0x1a53f1<_0x4e8ec7[_0x6878('0x35')][_0x6878('0x24')];_0x1a53f1++){var _0x50fd1e=_0x121bc5+_0x4e8ec7[_0x6878('0x35')][_0x6878('0x24')];var _0x3c4659=_0x1a53f1===_0x4e8ec7[_0x6878('0x35')][_0x6878('0x24')]-0x1?_0x121bc5+_0x4e5f02[_0x6878('0x24')]+_0x3293d0[_0x6878('0x24')]+0x2:_0x121bc5+_0x1a53f1+0x1;_0x4e5f02[_0x6878('0x48')](_0x1a53f1,0x0,{'type':_0x31b7d2[_0x6878('0x4')],'app':_0x6878('0x49'),'appdata':_0x4e8ec7[_0x6878('0x35')][_0x1a53f1]+'?'+_0x31b7d2[_0x6878('0x6')]+_0x6878('0x4a')+_0x50fd1e+':'+_0x31b7d2['context']+_0x6878('0x4a')+_0x3c4659,'exten':_0x31b7d2[_0x6878('0xa')],'context':_0x31b7d2[_0x6878('0x6')],'priority':_0x121bc5+_0x1a53f1,'VoiceExtensionId':_0x31b7d2['id']});}if(_0x4e8ec7[_0x6878('0x4b')]===_0x6878('0x4c'))_0x4e8ec7[_0x6878('0x4d')]=_0x259fc3(_0x31b7d2,_0x4e8ec7[_0x6878('0x4d')]);_0x4e8ec7['priority']=_0x4e5f02['length']?_['last'](_0x4e5f02)[_0x6878('0x4e')]+0x1:_0x121bc5;_0x6a741b=_[_0x6878('0x4f')](_0x6a741b,_0x4e5f02,[_0x4e8ec7],_0x3293d0);_0x121bc5=_[_0x6878('0x50')](_0x6a741b)[_0x6878('0x4e')]+0x1;}return _0x3a2b08(_0x6a741b);})['catch'](function(_0xe4379b){_0x500f67(_0xe4379b);});});}return _0x26afa9[_0x6878('0x51')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x30c53e){var _0x4278af=this['get']({'plain':!![]});var _0x5a035f=_0x4278af[_0x6878('0x4')]===_0x6878('0x10')?_0x188082(_0x4278af):_0x188829(_0x4278af);return _0x25f075(_0x4278af,_0x30c53e,_['last'](_0x5a035f)[_0x6878('0x4e')]+0x1)['then'](function(_0x5be19e){var _0xfc226f=_[_0x6878('0x4f')](_0x5a035f,_0x5be19e);_0xfc226f[_0x6878('0xc')]({'type':_0x4278af['type'],'app':'Hangup','exten':_0x4278af[_0x6878('0xa')],'context':_0x4278af[_0x6878('0x6')],'priority':_[_0x6878('0x50')](_0xfc226f)[_0x6878('0x4e')]+0x1,'VoiceExtensionId':_0x4278af['id']});return _0xfc226f;});}}});};
\ No newline at end of file
+var _0x29af=['timeout','url','length','name','param','split','phone','prefix','${EXTEN:','SIP','join','options','indexOf','replace','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','toLowerCase','hasOwnProperty','tag','CDR(tag)=','callerID','Set(CALLERID(all)=','includes','app','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','last','priority','concat','catch','define','VoiceExtension','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes','exports','models','type','context','exten','alias','Set','CDR(routeAlias)=','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk'];(function(_0x2fa5aa,_0x2a05d3){var _0x51a34f=function(_0x35070d){while(--_0x35070d){_0x2fa5aa['push'](_0x2fa5aa['shift']());}};_0x51a34f(++_0x2a05d3);}(_0x29af,0x134));var _0xf29a=function(_0x8fc0a4,_0x5b5beb){_0x8fc0a4=_0x8fc0a4-0x0;var _0x56a29d=_0x29af[_0x8fc0a4];return _0x56a29d;};'use strict';var _=require(_0xf29a('0x0'));var attributes=require(_0xf29a('0x1'));module[_0xf29a('0x2')]=function(_0x5d1cb4){var _0x133327=_0x5d1cb4[_0xf29a('0x3')];function _0x58929e(_0x40ab34){var _0x505d15=0x2;var _0x37e156=[{'type':_0x40ab34[_0xf29a('0x4')],'app':'Set','appdata':'CDR(type)='+_0x40ab34[_0xf29a('0x4')],'context':_0x40ab34[_0xf29a('0x5')],'exten':_0x40ab34[_0xf29a('0x6')],'priority':_0x505d15++,'VoiceExtensionId':_0x40ab34['id']},{'type':_0x40ab34[_0xf29a('0x4')],'app':_0x40ab34[_0xf29a('0x7')]?_0xf29a('0x8'):'NoOp','appdata':_0x40ab34[_0xf29a('0x7')]?_0xf29a('0x9')+_0x40ab34[_0xf29a('0x7')]:'No\x20alias\x20set','context':_0x40ab34['context'],'exten':_0x40ab34[_0xf29a('0x6')],'priority':_0x505d15++,'VoiceExtensionId':_0x40ab34['id']}];if(_0x40ab34[_0xf29a('0x4')]===_0xf29a('0xa')){_0x37e156[_0xf29a('0xb')]({'type':_0xf29a('0xa'),'app':_0xf29a('0x8'),'appdata':_0xf29a('0xc')+_0x40ab34['id'],'context':_0x40ab34['context'],'exten':_0x40ab34[_0xf29a('0x6')],'priority':_0x505d15++,'VoiceExtensionId':_0x40ab34['id']});}_0x37e156[_0xf29a('0xb')]({'type':_0x40ab34[_0xf29a('0x4')],'app':_0xf29a('0x8'),'appdata':_0xf29a('0xd'),'context':_0x40ab34[_0xf29a('0x5')],'exten':_0x40ab34[_0xf29a('0x6')],'priority':_0x505d15++,'VoiceExtensionId':_0x40ab34['id']},{'type':_0x40ab34['type'],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x40ab34[_0xf29a('0x5')],'exten':_0x40ab34[_0xf29a('0x6')],'priority':_0x505d15++,'VoiceExtensionId':_0x40ab34['id']},{'type':_0x40ab34[_0xf29a('0x4')],'app':_0xf29a('0x8'),'appdata':_0xf29a('0xe'),'context':_0x40ab34['context'],'exten':_0x40ab34[_0xf29a('0x6')],'priority':_0x505d15++,'VoiceExtensionId':_0x40ab34['id']});return _0x37e156;}function _0x42567e(_0x297764){var _0x283fe5=0x2;var _0x14d1dc=[{'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':_0xf29a('0x10'),'context':_0x297764[_0xf29a('0x5')],'exten':_0x297764[_0xf29a('0x6')],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':'outbound','app':_0x297764[_0xf29a('0x7')]?_0xf29a('0x8'):'NoOp','appdata':_0x297764[_0xf29a('0x7')]?_0xf29a('0x9')+_0x297764[_0xf29a('0x7')]:'No\x20alias\x20set','context':_0x297764[_0xf29a('0x5')],'exten':_0x297764['exten'],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':_0xf29a('0x11')+(_0x297764[_0xf29a('0x12')]?'${EXTEN:'+_0x297764[_0xf29a('0x12')]+'}':_0xf29a('0x13')),'context':_0x297764[_0xf29a('0x5')],'exten':_0x297764[_0xf29a('0x6')],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':_0xf29a('0xc')+_0x297764['id'],'context':_0x297764['context'],'exten':_0x297764['exten'],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':'outbound','app':_0xf29a('0x14'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x283fe5+0x2)+_0xf29a('0x15')+(_0x283fe5+0x1)+')','context':_0x297764[_0xf29a('0x5')],'exten':_0x297764[_0xf29a('0x6')],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':'outbound','app':_0xf29a('0x8'),'appdata':_0x297764[_0xf29a('0x12')]?_0xf29a('0x16')+_0x297764[_0xf29a('0x12')]+'}':_0xf29a('0x17'),'context':_0x297764[_0xf29a('0x5')],'exten':_0x297764['exten'],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x297764['context'],'exten':_0x297764['exten'],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':_0xf29a('0x18'),'context':_0x297764[_0xf29a('0x5')],'exten':_0x297764[_0xf29a('0x6')],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':'MONITOR_OPTIONS=ab','context':_0x297764[_0xf29a('0x5')],'exten':_0x297764[_0xf29a('0x6')],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':_0xf29a('0x19')+_0x297764['id'],'context':_0x297764[_0xf29a('0x5')],'exten':_0x297764[_0xf29a('0x6')],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']}];if(_0x297764['hasOwnProperty'](_0xf29a('0x1a'))&&_0x297764['recordingFormat']!==_0xf29a('0x1b')){_0x14d1dc[_0xf29a('0xb')]({'type':_0xf29a('0xf'),'app':_0xf29a('0x8'),'appdata':_0xf29a('0x1c'),'context':_0x297764['context'],'exten':_0x297764[_0xf29a('0x6')],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']},{'type':'outbound','app':_0xf29a('0x8'),'appdata':_0xf29a('0x1d')+_0x297764['recordingFormat']||_0xf29a('0x1e'),'context':_0x297764[_0xf29a('0x5')],'exten':_0x297764['exten'],'priority':_0x283fe5++,'VoiceExtensionId':_0x297764['id']});}return _0x14d1dc;}function _0x13b011(_0x399698,_0x422cd8){var _0x33df00=[{'name':_0xf29a('0x1f'),'param':0x0},{'name':_0xf29a('0x20'),'param':0x1},{'name':'options','param':0x2},{'name':_0xf29a('0x21'),'param':0x3}];var _0x244d89={};var _0x10616d=_0x422cd8['split'](',');var _0x250e21=[];for(var _0x10c686=0x0;_0x10c686<_0x33df00[_0xf29a('0x22')];_0x10c686++){switch(_0x33df00[_0x10c686][_0xf29a('0x23')]){case _0xf29a('0x1f'):_0x244d89[_0xf29a('0x1f')]=_0x10616d[_0x33df00[_0x10c686][_0xf29a('0x24')]][_0xf29a('0x25')]('/')[0x1];_0x244d89[_0xf29a('0x26')]=_0x10616d[_0x33df00[_0x10c686][_0xf29a('0x24')]][_0xf29a('0x25')]('/')[0x2];_0x244d89[_0xf29a('0x27')]=_0x244d89['phone']?_0x244d89['phone'][_0xf29a('0x25')]('$')[0x0]:undefined;_0x244d89[_0xf29a('0x26')]=_0x399698[_0xf29a('0x12')]?(_0x244d89['prefix']||'')+_0xf29a('0x28')+_0x399698[_0xf29a('0x12')]+'}':(_0x244d89[_0xf29a('0x27')]||'')+_0xf29a('0x13');_0x250e21[_0x33df00[_0x10c686][_0xf29a('0x24')]]=[_0xf29a('0x29'),_0x244d89[_0xf29a('0x1f')],_0x244d89[_0xf29a('0x26')]][_0xf29a('0x2a')]('/');break;case _0xf29a('0x2b'):_0x244d89[_0xf29a('0x2b')]=_0x10616d[_0x33df00[_0x10c686]['param']];if(_0x399698[_0xf29a('0x1a')]!=='none'){if(_0x244d89[_0xf29a('0x2b')][_0xf29a('0x2c')]('U(xcally-mixmonitor-context)')<0x0){_0x244d89[_0xf29a('0x2b')]+='U(xcally-mixmonitor-context)';}}else{_0x244d89[_0xf29a('0x2b')]=_0x244d89[_0xf29a('0x2b')][_0xf29a('0x2d')](_0xf29a('0x2e'),'');}_0x250e21[_0x33df00[_0x10c686][_0xf29a('0x24')]]=_0x244d89['options'];break;default:_0x250e21[_0x33df00[_0x10c686][_0xf29a('0x24')]]=_0x10616d[_0x33df00[_0x10c686][_0xf29a('0x24')]];}}return _0x250e21[_0xf29a('0x2a')](',');}function _0xc63172(_0x558cd8,_0x116891,_0x1a898d){return new Promise(function(_0x3473bf,_0x34902b){var _0x2fd353=[];if(_[_0xf29a('0x2f')](_0x116891))return _0x3473bf(_0x2fd353);_0x133327[_0xf29a('0x30')][_0xf29a('0x31')]({'attributes':['id',_0xf29a('0x32'),_0xf29a('0x33')],'raw':!![]})[_0xf29a('0x34')](function(_0x2d179d){for(var _0x340c9c=0x0,_0xd69797=0x0;_0x340c9c<_0x116891[_0xf29a('0x22')];_0x340c9c++,_0xd69797=0x0){var _0x458ae4=_0x116891[_0x340c9c];var _0x2e59a5=[];var _0x282881=[];delete _0x458ae4['id'];if(_0x458ae4[_0xf29a('0x32')]!==_0xf29a('0x35')){_0x458ae4['intervals']=[_0x458ae4['interval']];}else{_0x458ae4[_0xf29a('0x36')]=_0x458ae4[_0xf29a('0x33')]?_[_0xf29a('0x37')](_[_0xf29a('0x38')](_0x2d179d,{'IntervalId':_0x458ae4[_0xf29a('0x33')]}),_0xf29a('0x32')):[];}_0x458ae4[_0xf29a('0x5')]=_0x558cd8[_0xf29a('0x5')];_0x458ae4[_0xf29a('0x6')]=_0x558cd8[_0xf29a('0x6')];if(_0x458ae4[_0xf29a('0x4')])_0x458ae4[_0xf29a('0x4')]=_0x458ae4[_0xf29a('0x4')][_0xf29a('0x39')]();if(_0x558cd8[_0xf29a('0x4')]===_0xf29a('0xf')){if(_0x458ae4[_0xf29a('0x3a')](_0xf29a('0x3b'))&&_0x458ae4[_0xf29a('0x3b')]&&_0x458ae4[_0xf29a('0x3b')]!=='--'){_0x2e59a5[_0xf29a('0xb')]({'type':_0x458ae4[_0xf29a('0x4')]['toLowerCase'](),'app':_0xf29a('0x8'),'appdata':_0xf29a('0x3c')+_0x458ae4[_0xf29a('0x3b')],'context':_0x558cd8[_0xf29a('0x5')],'exten':_0x558cd8[_0xf29a('0x6')],'priority':_0x458ae4['intervals'][_0xf29a('0x22')]+_0x1a898d+_0xd69797++,'VoiceExtensionId':_0x558cd8['id']});}_0x2e59a5[_0xf29a('0xb')]({'type':_0x458ae4[_0xf29a('0x4')]['toLowerCase'](),'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x458ae4[_0xf29a('0x3d')]?_0xf29a('0x3e')+_0x458ae4['callerID']+')':'NoOp(No\x20number\x20available)'),'context':_0x558cd8[_0xf29a('0x5')],'exten':_0x558cd8[_0xf29a('0x6')],'priority':_0x458ae4['intervals'][_0xf29a('0x22')]+_0x1a898d+_0xd69797++,'VoiceExtensionId':_0x558cd8['id']});}else{if(_0x458ae4[_0xf29a('0x3a')]('answer')){if(['queue','playback'][_0xf29a('0x3f')](_0x458ae4[_0xf29a('0x40')][_0xf29a('0x39')]())&&_0x458ae4[_0xf29a('0x41')]!==_0xf29a('0x42')){if(_0x458ae4[_0xf29a('0x43')]){_0x2e59a5['push']({'type':_0x458ae4[_0xf29a('0x4')][_0xf29a('0x39')](),'app':_0xf29a('0x14'),'appdata':_0xf29a('0x44'),'context':_0x558cd8[_0xf29a('0x5')],'exten':_0x558cd8[_0xf29a('0x6')],'priority':_0x458ae4[_0xf29a('0x36')][_0xf29a('0x22')]+_0x1a898d+_0xd69797++,'VoiceExtensionId':_0x558cd8['id']});_0x2e59a5[_0xf29a('0xb')]({'type':_0x458ae4['type']['toLowerCase'](),'app':_0xf29a('0x8'),'appdata':_0xf29a('0x45'),'context':_0x558cd8[_0xf29a('0x5')],'exten':_0x558cd8[_0xf29a('0x6')],'priority':_0x458ae4['intervals']['length']+_0x1a898d+_0xd69797++,'VoiceExtensionId':_0x558cd8['id']});}else{_0x2e59a5['push']({'type':_0x458ae4[_0xf29a('0x4')][_0xf29a('0x39')](),'app':_0xf29a('0x14'),'appdata':_0xf29a('0x46'),'context':_0x558cd8['context'],'exten':_0x558cd8[_0xf29a('0x6')],'priority':_0x458ae4[_0xf29a('0x36')][_0xf29a('0x22')]+_0x1a898d+_0xd69797++,'VoiceExtensionId':_0x558cd8['id']});_0x2e59a5[_0xf29a('0xb')]({'type':_0x458ae4['type'][_0xf29a('0x39')](),'app':'Set','appdata':_0xf29a('0x47'),'context':_0x558cd8[_0xf29a('0x5')],'exten':_0x558cd8[_0xf29a('0x6')],'priority':_0x458ae4[_0xf29a('0x36')][_0xf29a('0x22')]+_0x1a898d+_0xd69797++,'VoiceExtensionId':_0x558cd8['id']});}}}}for(var _0x19fa44=0x0;_0x19fa44<_0x458ae4[_0xf29a('0x36')][_0xf29a('0x22')];_0x19fa44++){var _0x5c87cf=_0x1a898d+_0x458ae4[_0xf29a('0x36')][_0xf29a('0x22')];var _0x43c886=_0x19fa44===_0x458ae4[_0xf29a('0x36')][_0xf29a('0x22')]-0x1?_0x1a898d+_0x2e59a5[_0xf29a('0x22')]+_0x282881[_0xf29a('0x22')]+0x2:_0x1a898d+_0x19fa44+0x1;_0x2e59a5['splice'](_0x19fa44,0x0,{'type':_0x558cd8[_0xf29a('0x4')],'app':_0xf29a('0x48'),'appdata':_0x458ae4[_0xf29a('0x36')][_0x19fa44]+'?'+_0x558cd8['context']+_0xf29a('0x49')+_0x5c87cf+':'+_0x558cd8[_0xf29a('0x5')]+_0xf29a('0x49')+_0x43c886,'exten':_0x558cd8[_0xf29a('0x6')],'context':_0x558cd8[_0xf29a('0x5')],'priority':_0x1a898d+_0x19fa44,'VoiceExtensionId':_0x558cd8['id']});}if(_0x458ae4[_0xf29a('0x41')]===_0xf29a('0x4a'))_0x458ae4[_0xf29a('0x4b')]=_0x13b011(_0x558cd8,_0x458ae4[_0xf29a('0x4b')]);_0x458ae4['priority']=_0x2e59a5[_0xf29a('0x22')]?_[_0xf29a('0x4c')](_0x2e59a5)[_0xf29a('0x4d')]+0x1:_0x1a898d;_0x2fd353=_[_0xf29a('0x4e')](_0x2fd353,_0x2e59a5,[_0x458ae4],_0x282881);_0x1a898d=_[_0xf29a('0x4c')](_0x2fd353)[_0xf29a('0x4d')]+0x1;}return _0x3473bf(_0x2fd353);})[_0xf29a('0x4f')](function(_0x4b8664){_0x34902b(_0x4b8664);});});}return _0x5d1cb4[_0xf29a('0x50')](_0xf29a('0x51'),attributes,{'tableName':_0xf29a('0x52'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x40e404){var _0x1df5ce=this[_0xf29a('0x53')]({'plain':!![]});var _0x4f6a67=_0x1df5ce['type']==='outbound'?_0x42567e(_0x1df5ce):_0x58929e(_0x1df5ce);return _0xc63172(_0x1df5ce,_0x40e404,_['last'](_0x4f6a67)[_0xf29a('0x4d')]+0x1)[_0xf29a('0x34')](function(_0x28fff0){var _0x119a11=_['concat'](_0x4f6a67,_0x28fff0);_0x119a11['push']({'type':_0x1df5ce[_0xf29a('0x4')],'app':_0xf29a('0x54'),'exten':_0x1df5ce[_0xf29a('0x6')],'context':_0x1df5ce[_0xf29a('0x5')],'priority':_[_0xf29a('0x4c')](_0x119a11)[_0xf29a('0x4d')]+0x1,'VoiceExtensionId':_0x1df5ce['id']});return _0x119a11;});}}});};
\ No newline at end of file
index 8fabf6e..99eddaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x292c=['../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','limit','map','model','include','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x292c,0x66));var _0xc292=function(_0x427352,_0x1bce61){_0x427352=_0x427352-0x0;var _0x23e0e6=_0x292c[_0x427352];return _0x23e0e6;};'use strict';var _=require(_0xc292('0x0'));var util=require('util');var moment=require(_0xc292('0x1'));var BPromise=require(_0xc292('0x2'));var rs=require(_0xc292('0x3'));var fs=require('fs');var Redis=require(_0xc292('0x4'));var db=require(_0xc292('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc292('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc292('0x7'));var client=jayson[_0xc292('0x8')][_0xc292('0x9')]({'port':0x232a});config[_0xc292('0xa')]=_[_0xc292('0xb')](config[_0xc292('0xa')],{'host':_0xc292('0xc'),'port':0x18eb});var socket=require(_0xc292('0xd'))(new Redis(config[_0xc292('0xa')]));require(_0xc292('0xe'))['register'](socket);function respondWithRpcPromise(_0x1be13f,_0x659c9a,_0x45fe79){return new BPromise(function(_0x25d1f0,_0x556537){return client['request'](_0x1be13f,_0x45fe79)[_0xc292('0xf')](function(_0x215ae7){logger[_0xc292('0x10')](_0xc292('0x11'),_0x659c9a,_0xc292('0x12'));logger[_0xc292('0x13')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x659c9a,_0xc292('0x12'),JSON[_0xc292('0x14')](_0x215ae7));if(_0x215ae7[_0xc292('0x15')]){if(_0x215ae7[_0xc292('0x15')][_0xc292('0x16')]===0x1f4){logger['error']('VoiceExtension,\x20%s,\x20%s',_0x659c9a,_0x215ae7[_0xc292('0x15')][_0xc292('0x17')]);return _0x556537(_0x215ae7['error'][_0xc292('0x17')]);}logger['error']('VoiceExtension,\x20%s,\x20%s',_0x659c9a,_0x215ae7[_0xc292('0x15')]['message']);return _0x25d1f0(_0x215ae7[_0xc292('0x15')][_0xc292('0x17')]);}else{logger[_0xc292('0x10')]('VoiceExtension,\x20%s,\x20%s',_0x659c9a,_0xc292('0x12'));_0x25d1f0(_0x215ae7['result']['message']);}})[_0xc292('0x18')](function(_0x502f23){logger['error'](_0xc292('0x11'),_0x659c9a,_0x502f23);_0x556537(_0x502f23);});});}exports[_0xc292('0x19')]=function(_0x314f3b){var _0x5a9873=this;return new Promise(function(_0x4b7c83,_0x29b51a){return db[_0xc292('0x1a')][_0xc292('0x1b')]({'raw':_0x314f3b[_0xc292('0x1c')]?_0x314f3b[_0xc292('0x1c')][_0xc292('0x1d')]===undefined?!![]:![]:!![],'where':_0x314f3b[_0xc292('0x1c')]?_0x314f3b[_0xc292('0x1c')][_0xc292('0x1e')]||null:null,'attributes':_0x314f3b['options']?_0x314f3b['options'][_0xc292('0x1f')]||null:null,'limit':_0x314f3b[_0xc292('0x1c')]?_0x314f3b['options'][_0xc292('0x20')]||null:null,'include':_0x314f3b[_0xc292('0x1c')]?_0x314f3b[_0xc292('0x1c')]['include']?_[_0xc292('0x21')](_0x314f3b[_0xc292('0x1c')]['include'],function(_0x4eb30e){return{'model':db[_0x4eb30e[_0xc292('0x22')]],'as':_0x4eb30e['as'],'attributes':_0x4eb30e[_0xc292('0x1f')],'include':_0x4eb30e['include']?_['map'](_0x4eb30e['include'],function(_0x3933c6){return{'model':db[_0x3933c6[_0xc292('0x22')]],'as':_0x3933c6['as'],'attributes':_0x3933c6['attributes'],'include':_0x3933c6[_0xc292('0x23')]?_['map'](_0x3933c6[_0xc292('0x23')],function(_0x20452e){return{'model':db[_0x20452e['model']],'as':_0x20452e['as'],'attributes':_0x20452e['attributes']};}):[]};}):[]};}):[]:[]})[_0xc292('0xf')](function(_0x100cf2){logger['info']('GetVoiceExtension',_0x314f3b);logger[_0xc292('0x13')]('GetVoiceExtension',_0x314f3b,JSON[_0xc292('0x14')](_0x100cf2));_0x4b7c83(_0x100cf2);})[_0xc292('0x18')](function(_0x2f7735){logger['error'](_0xc292('0x19'),_0x2f7735[_0xc292('0x17')],_0x314f3b);_0x29b51a(_0x5a9873[_0xc292('0x15')](0x1f4,_0x2f7735[_0xc292('0x17')]));});});};
\ No newline at end of file
+var _0x4d87=['catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','limit','include','model','map','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result'];(function(_0x4a6c3a,_0x26d684){var _0x175496=function(_0x543e3a){while(--_0x543e3a){_0x4a6c3a['push'](_0x4a6c3a['shift']());}};_0x175496(++_0x26d684);}(_0x4d87,0xf0));var _0x74d8=function(_0x4641a7,_0x448505){_0x4641a7=_0x4641a7-0x0;var _0xb8ddec=_0x4d87[_0x4641a7];return _0xb8ddec;};'use strict';var _=require('lodash');var util=require(_0x74d8('0x0'));var moment=require(_0x74d8('0x1'));var BPromise=require(_0x74d8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x74d8('0x3'));var db=require(_0x74d8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x74d8('0x5'));var config=require(_0x74d8('0x6'));var jayson=require(_0x74d8('0x7'));var client=jayson[_0x74d8('0x8')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x74d8('0x9')],{'host':_0x74d8('0xa'),'port':0x18eb});var socket=require(_0x74d8('0xb'))(new Redis(config[_0x74d8('0x9')]));require(_0x74d8('0xc'))[_0x74d8('0xd')](socket);function respondWithRpcPromise(_0x5e1ba0,_0x924d2c,_0xbf5ea1){return new BPromise(function(_0xc1e3c0,_0xa6301a){return client[_0x74d8('0xe')](_0x5e1ba0,_0xbf5ea1)[_0x74d8('0xf')](function(_0x40d175){logger[_0x74d8('0x10')](_0x74d8('0x11'),_0x924d2c,'request\x20sent');logger[_0x74d8('0x12')](_0x74d8('0x13'),_0x924d2c,'request\x20sent',JSON[_0x74d8('0x14')](_0x40d175));if(_0x40d175[_0x74d8('0x15')]){if(_0x40d175[_0x74d8('0x15')][_0x74d8('0x16')]===0x1f4){logger[_0x74d8('0x15')]('VoiceExtension,\x20%s,\x20%s',_0x924d2c,_0x40d175['error']['message']);return _0xa6301a(_0x40d175[_0x74d8('0x15')][_0x74d8('0x17')]);}logger[_0x74d8('0x15')](_0x74d8('0x11'),_0x924d2c,_0x40d175[_0x74d8('0x15')][_0x74d8('0x17')]);return _0xc1e3c0(_0x40d175['error'][_0x74d8('0x17')]);}else{logger['info'](_0x74d8('0x11'),_0x924d2c,_0x74d8('0x18'));_0xc1e3c0(_0x40d175[_0x74d8('0x19')][_0x74d8('0x17')]);}})[_0x74d8('0x1a')](function(_0x22a331){logger[_0x74d8('0x15')]('VoiceExtension,\x20%s,\x20%s',_0x924d2c,_0x22a331);_0xa6301a(_0x22a331);});});}exports[_0x74d8('0x1b')]=function(_0x2823f5){var _0x480b8a=this;return new Promise(function(_0x1b3f24,_0x3ea248){return db[_0x74d8('0x1c')][_0x74d8('0x1d')]({'raw':_0x2823f5[_0x74d8('0x1e')]?_0x2823f5[_0x74d8('0x1e')][_0x74d8('0x1f')]===undefined?!![]:![]:!![],'where':_0x2823f5[_0x74d8('0x1e')]?_0x2823f5[_0x74d8('0x1e')][_0x74d8('0x20')]||null:null,'attributes':_0x2823f5[_0x74d8('0x1e')]?_0x2823f5[_0x74d8('0x1e')][_0x74d8('0x21')]||null:null,'limit':_0x2823f5[_0x74d8('0x1e')]?_0x2823f5[_0x74d8('0x1e')][_0x74d8('0x22')]||null:null,'include':_0x2823f5[_0x74d8('0x1e')]?_0x2823f5[_0x74d8('0x1e')][_0x74d8('0x23')]?_['map'](_0x2823f5[_0x74d8('0x1e')][_0x74d8('0x23')],function(_0x252aa3){return{'model':db[_0x252aa3[_0x74d8('0x24')]],'as':_0x252aa3['as'],'attributes':_0x252aa3[_0x74d8('0x21')],'include':_0x252aa3[_0x74d8('0x23')]?_[_0x74d8('0x25')](_0x252aa3[_0x74d8('0x23')],function(_0x35a750){return{'model':db[_0x35a750[_0x74d8('0x24')]],'as':_0x35a750['as'],'attributes':_0x35a750[_0x74d8('0x21')],'include':_0x35a750['include']?_[_0x74d8('0x25')](_0x35a750[_0x74d8('0x23')],function(_0x54124d){return{'model':db[_0x54124d[_0x74d8('0x24')]],'as':_0x54124d['as'],'attributes':_0x54124d[_0x74d8('0x21')]};}):[]};}):[]};}):[]:[]})[_0x74d8('0xf')](function(_0x30ac88){logger['info'](_0x74d8('0x1b'),_0x2823f5);logger[_0x74d8('0x12')](_0x74d8('0x1b'),_0x2823f5,JSON[_0x74d8('0x14')](_0x30ac88));_0x1b3f24(_0x30ac88);})['catch'](function(_0x2b6f84){logger[_0x74d8('0x15')](_0x74d8('0x1b'),_0x2b6f84[_0x74d8('0x17')],_0x2823f5);_0x3ea248(_0x480b8a['error'](0x1f4,_0x2b6f84[_0x74d8('0x17')]));});});};
\ No newline at end of file
index a9da318..644e10e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['removeListener','register','length','./voiceExtension.events','save','emit'];(function(_0x445564,_0x2ea7f8){var _0x4d98b2=function(_0x3d5d75){while(--_0x3d5d75){_0x445564['push'](_0x445564['shift']());}};_0x4d98b2(++_0x2ea7f8);}(_0xe14b,0x93));var _0xbe14=function(_0x53e37c,_0x53b06f){_0x53e37c=_0x53e37c-0x0;var _0x16dda6=_0xe14b[_0x53e37c];return _0x16dda6;};'use strict';var VoiceExtensionEvents=require(_0xbe14('0x0'));var events=[_0xbe14('0x1'),'remove','update'];function createListener(_0x11c3a0,_0x36393a){return function(_0x48a116){_0x36393a[_0xbe14('0x2')](_0x11c3a0,_0x48a116);};}function removeListener(_0x5ce8fb,_0x496c04){return function(){VoiceExtensionEvents[_0xbe14('0x3')](_0x5ce8fb,_0x496c04);};}exports[_0xbe14('0x4')]=function(_0x1fe204){for(var _0x1ff100=0x0,_0x1d9ade=events[_0xbe14('0x5')];_0x1ff100<_0x1d9ade;_0x1ff100++){var _0x196fca=events[_0x1ff100];var _0x566ae7=createListener('voiceExtension:'+_0x196fca,_0x1fe204);VoiceExtensionEvents['on'](_0x196fca,_0x566ae7);}};
\ No newline at end of file
+var _0xabce=['voiceExtension:','./voiceExtension.events','save','remove','update','emit'];(function(_0x9d5b0f,_0x235c56){var _0x3a08ea=function(_0x2996b1){while(--_0x2996b1){_0x9d5b0f['push'](_0x9d5b0f['shift']());}};_0x3a08ea(++_0x235c56);}(_0xabce,0x103));var _0xeabc=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xabce[_0x4fc9e6];return _0x551d28;};'use strict';var VoiceExtensionEvents=require(_0xeabc('0x0'));var events=[_0xeabc('0x1'),_0xeabc('0x2'),_0xeabc('0x3')];function createListener(_0x49dbcc,_0x5bd1a4){return function(_0x5ebc95){_0x5bd1a4[_0xeabc('0x4')](_0x49dbcc,_0x5ebc95);};}function removeListener(_0x1d9f37,_0x1a88a7){return function(){VoiceExtensionEvents['removeListener'](_0x1d9f37,_0x1a88a7);};}exports['register']=function(_0x1b07a8){for(var _0x52a4d7=0x0,_0x229ba4=events['length'];_0x52a4d7<_0x229ba4;_0x52a4d7++){var _0x3bdc29=events[_0x52a4d7];var _0x9417af=createListener(_0xeabc('0x5')+_0x3bdc29,_0x1b07a8);VoiceExtensionEvents['on'](_0x3bdc29,_0x9417af);}};
\ No newline at end of file
index 7ddf977..b1873f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6050=['/:id/messages','isAuthenticated','getMessages','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index','show','get'];(function(_0x3740bd,_0x479297){var _0x2905fe=function(_0x481a45){while(--_0x481a45){_0x3740bd['push'](_0x3740bd['shift']());}};_0x2905fe(++_0x479297);}(_0x6050,0x196));var _0x0605=function(_0xa8220,_0x52f115){_0xa8220=_0xa8220-0x0;var _0x173b20=_0x6050[_0xa8220];return _0x173b20;};'use strict';var multer=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var path=require(_0x0605('0x2'));var timeout=require(_0x0605('0x3'));var express=require(_0x0605('0x4'));var router=express[_0x0605('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0605('0x6'));var interaction=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var controller=require('./voiceMail.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0605('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x0605('0xa')]);router[_0x0605('0xb')](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0xe')]);router['post']('/',auth[_0x0605('0xd')](),controller[_0x0605('0xf')]);router[_0x0605('0x10')](_0x0605('0x11'),auth[_0x0605('0xd')](),controller[_0x0605('0x12')]);router[_0x0605('0x13')](_0x0605('0x11'),auth[_0x0605('0xd')](),controller[_0x0605('0x14')]);module[_0x0605('0x15')]=router;
\ No newline at end of file
+var _0x4fb4=['update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','/:id','show','getMessages','post','create','put'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x4fb4,0x190));var _0x44fb=function(_0x5da77b,_0x36a2af){_0x5da77b=_0x5da77b-0x0;var _0x2b65de=_0x4fb4[_0x5da77b];return _0x2b65de;};'use strict';var multer=require('multer');var util=require(_0x44fb('0x0'));var path=require(_0x44fb('0x1'));var timeout=require(_0x44fb('0x2'));var express=require(_0x44fb('0x3'));var router=express[_0x44fb('0x4')]();var fs_extra=require(_0x44fb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x44fb('0x6'));var config=require(_0x44fb('0x7'));var controller=require(_0x44fb('0x8'));router[_0x44fb('0x9')]('/',auth[_0x44fb('0xa')](),controller[_0x44fb('0xb')]);router[_0x44fb('0x9')](_0x44fb('0xc'),auth['isAuthenticated'](),controller[_0x44fb('0xd')]);router[_0x44fb('0x9')]('/:id/messages',auth[_0x44fb('0xa')](),controller[_0x44fb('0xe')]);router[_0x44fb('0xf')]('/',auth[_0x44fb('0xa')](),controller[_0x44fb('0x10')]);router[_0x44fb('0x11')](_0x44fb('0xc'),auth[_0x44fb('0xa')](),controller[_0x44fb('0x12')]);router[_0x44fb('0x13')]('/:id',auth[_0x44fb('0xa')](),controller[_0x44fb('0x14')]);module[_0x44fb('0x15')]=router;
\ No newline at end of file
index 1ed8ac5..0bb1608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef05=['mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','ENUM','yes','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0xef05,0x111));var _0x5ef0=function(_0x45dbc2,_0x5f2e57){_0x45dbc2=_0x45dbc2-0x0;var _0x30cb20=_0xef05[_0x45dbc2];return _0x30cb20;};'use strict';var Sequelize=require(_0x5ef0('0x0'));module[_0x5ef0('0x1')]={'customer_id':{'type':Sequelize[_0x5ef0('0x2')]},'context':{'type':Sequelize[_0x5ef0('0x2')],'defaultValue':_0x5ef0('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x5ef0('0x2')],'defaultValue':'','allowNull':![],'unique':_0x5ef0('0x4')},'password':{'type':Sequelize[_0x5ef0('0x2')]},'fullname':{'type':Sequelize[_0x5ef0('0x2')]},'email':{'type':Sequelize[_0x5ef0('0x2')],'validate':{'isEmail':!![]},'set':function(_0x22aaf4){this[_0x5ef0('0x5')](_0x5ef0('0x6'),typeof _0x22aaf4===_0x5ef0('0x7')&&_0x22aaf4[_0x5ef0('0x8')]()?_0x22aaf4['trim']():null);}},'pager':{'type':Sequelize[_0x5ef0('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':'central'},'attach':{'type':Sequelize[_0x5ef0('0x9')](_0x5ef0('0xa'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0x5ef0('0xa'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize[_0x5ef0('0x2')]},'callback':{'type':Sequelize[_0x5ef0('0x2')]},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x5ef0('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x5ef0('0x9')](_0x5ef0('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x5ef0('0x9')](_0x5ef0('0xa'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x5ef0('0x9')](_0x5ef0('0xa'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x5ef0('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x5ef0('0x9')](_0x5ef0('0xa'),'no'),'defaultValue':_0x5ef0('0xa'),'allowNull':![]},'forcename':{'type':Sequelize[_0x5ef0('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x5ef0('0x9')](_0x5ef0('0xa'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x5ef0('0x9')](_0x5ef0('0xa'),'no'),'defaultValue':_0x5ef0('0xa'),'allowNull':![]},'stamp':{'type':_0x5ef0('0xb')},'emailsubject':{'type':Sequelize[_0x5ef0('0x2')]},'emailbody':{'type':Sequelize[_0x5ef0('0x2')]},'maxsecs':{'type':Sequelize[_0x5ef0('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x5ef0('0xd')],'get':function(){return this[_0x5ef0('0xe')]('fullname')+_0x5ef0('0xf')+this[_0x5ef0('0xe')](_0x5ef0('0x10'));}}};
\ No newline at end of file
+var _0x28af=['getDataValue','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','INTEGER','VIRTUAL','fullname','\x20-\x20'];(function(_0x27d958,_0x29ef87){var _0x53e63e=function(_0x4130ec){while(--_0x4130ec){_0x27d958['push'](_0x27d958['shift']());}};_0x53e63e(++_0x29ef87);}(_0x28af,0xda));var _0xf28a=function(_0x27d958,_0x29ef87){_0x27d958=_0x27d958-0x0;var _0x53e63e=_0x28af[_0x27d958];return _0x53e63e;};'use strict';var Sequelize=require(_0xf28a('0x0'));module[_0xf28a('0x1')]={'customer_id':{'type':Sequelize[_0xf28a('0x2')]},'context':{'type':Sequelize[_0xf28a('0x2')],'defaultValue':_0xf28a('0x3'),'unique':_0xf28a('0x4')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0xf28a('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0xf28a('0x2')]},'email':{'type':Sequelize[_0xf28a('0x2')],'validate':{'isEmail':!![]},'set':function(_0x2c8037){this[_0xf28a('0x5')](_0xf28a('0x6'),typeof _0x2c8037===_0xf28a('0x7')&&_0x2c8037[_0xf28a('0x8')]()?_0x2c8037[_0xf28a('0x8')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize[_0xf28a('0x2')],'defaultValue':_0xf28a('0x9')},'attach':{'type':Sequelize[_0xf28a('0xa')](_0xf28a('0xb'),'no'),'defaultValue':_0xf28a('0xb'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xf28a('0xb'),'no'),'defaultValue':_0xf28a('0xb'),'allowNull':![]},'dialout':{'type':Sequelize[_0xf28a('0x2')]},'callback':{'type':Sequelize[_0xf28a('0x2')]},'review':{'type':Sequelize[_0xf28a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xf28a('0xa')](_0xf28a('0xb'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xf28a('0xa')](_0xf28a('0xb'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xf28a('0xa')](_0xf28a('0xb'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xf28a('0xa')](_0xf28a('0xb'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xf28a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xf28a('0xa')]('yes','no'),'defaultValue':_0xf28a('0xb'),'allowNull':![]},'forcename':{'type':Sequelize[_0xf28a('0xa')](_0xf28a('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xf28a('0xa')](_0xf28a('0xb'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xf28a('0xa')]('yes','no'),'defaultValue':_0xf28a('0xb'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0xf28a('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0xf28a('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xf28a('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xf28a('0xd')],'get':function(){return this['getDataValue'](_0xf28a('0xe'))+_0xf28a('0xf')+this[_0xf28a('0x10')](_0xf28a('0x11'));}}};
\ No newline at end of file
index 9ec0a32..2f50643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750a=['mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','status','end','offset','undefined','count','set','json','destroy','then','get','Voicemails','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','VoiceMail','include','findAll','rows','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','body','getMessages','findOne','VoiceMailMessage','length','findAndCountAll','rimraf','request-promise','moment','bluebird'];(function(_0x2d2e85,_0x22faa9){var _0x3e9f5e=function(_0x101c22){while(--_0x101c22){_0x2d2e85['push'](_0x2d2e85['shift']());}};_0x3e9f5e(++_0x22faa9);}(_0x750a,0x140));var _0xa750=function(_0x396274,_0x2e0e65){_0x396274=_0x396274-0x0;var _0x1b6484=_0x750a[_0x396274];return _0x1b6484;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa750('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa750('0x1'));var moment=require(_0xa750('0x2'));var BPromise=require(_0xa750('0x3'));var Mustache=require(_0xa750('0x4'));var util=require(_0xa750('0x5'));var path=require(_0xa750('0x6'));var sox=require(_0xa750('0x7'));var csv=require(_0xa750('0x8'));var ejs=require(_0xa750('0x9'));var fs=require('fs');var fs_extra=require(_0xa750('0xa'));var _=require(_0xa750('0xb'));var squel=require(_0xa750('0xc'));var crypto=require(_0xa750('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa750('0x8'));var querystring=require('querystring');var Papa=require(_0xa750('0xe'));var Redis=require(_0xa750('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa750('0x10'));var as=require(_0xa750('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa750('0x12'));var utils=require('../../config/utils');var config=require(_0xa750('0x13'));var licenseUtil=require(_0xa750('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x24ec62,_0x1c5657){_0x1c5657=_0x1c5657||0xcc;return function(_0x344c67){if(_0x344c67){return _0x24ec62['sendStatus'](_0x1c5657);}return _0x24ec62[_0xa750('0x15')](_0x1c5657)[_0xa750('0x16')]();};}function respondWithResult(_0x2d3421,_0x24e48a){_0x24e48a=_0x24e48a||0xc8;return function(_0xa66181){if(_0xa66181){return _0x2d3421[_0xa750('0x15')](_0x24e48a)['json'](_0xa66181);}};}function respondWithFilteredResult(_0x3ae2a1,_0x8488ea){return function(_0x290d46){if(_0x290d46){var _0x49fe3b=typeof _0x8488ea[_0xa750('0x17')]===_0xa750('0x18')&&typeof _0x8488ea['limit']==='undefined';var _0x321eb2=_0x290d46['count'];var _0x433dbd=_0x49fe3b?0x0:_0x8488ea[_0xa750('0x17')];var _0x4f1faa=_0x49fe3b?_0x290d46[_0xa750('0x19')]:_0x8488ea['offset']+_0x8488ea['limit'];var _0x25e335;if(_0x4f1faa>=_0x321eb2){_0x4f1faa=_0x321eb2;_0x25e335=0xc8;}else{_0x25e335=0xce;}_0x3ae2a1['status'](_0x25e335);return _0x3ae2a1[_0xa750('0x1a')]('Content-Range',_0x433dbd+'-'+_0x4f1faa+'/'+_0x321eb2)[_0xa750('0x1b')](_0x290d46);}return null;};}function patchUpdates(_0x4a007d){return function(_0x3dc7f1){try{jsonpatch['apply'](_0x3dc7f1,_0x4a007d,!![]);}catch(_0x1efb68){return BPromise['reject'](_0x1efb68);}return _0x3dc7f1['save']();};}function saveUpdates(_0xaa9d3e,_0x52da84){return function(_0x216fbf){if(_0x216fbf){return _0x216fbf['update'](_0xaa9d3e)['then'](function(_0x5b433d){return _0x5b433d;});}return null;};}function removeEntity(_0x5d758e,_0x15d72f){return function(_0x2ec6c4){if(_0x2ec6c4){return _0x2ec6c4[_0xa750('0x1c')]()[_0xa750('0x1d')](function(){var _0x1b80a5=_0x2ec6c4[_0xa750('0x1e')]({'plain':!![]});var _0x3001bc=_0xa750('0x1f');return db[_0xa750('0x20')][_0xa750('0x1c')]({'where':{'type':_0x3001bc,'resourceId':_0x1b80a5['id']}})[_0xa750('0x1d')](function(){return _0x2ec6c4;});})[_0xa750('0x1d')](function(){_0x5d758e[_0xa750('0x15')](0xcc)[_0xa750('0x16')]();});}};}function handleEntityNotFound(_0x310e2d,_0x4ffff4){return function(_0x3d3923){if(!_0x3d3923){_0x310e2d[_0xa750('0x21')](0x194);}return _0x3d3923;};}function handleError(_0x21cd2c,_0x4cceee){_0x4cceee=_0x4cceee||0x1f4;return function(_0x35ab53){logger[_0xa750('0x22')](_0x35ab53[_0xa750('0x23')]);if(_0x35ab53[_0xa750('0x24')]){delete _0x35ab53['name'];}_0x21cd2c[_0xa750('0x15')](_0x4cceee)[_0xa750('0x25')](_0x35ab53);};}exports[_0xa750('0x26')]=function(_0x2aef3a,_0x2c5253){var _0x59ab33={},_0x46cc11={},_0x4c2c9e={'count':0x0,'rows':[]};var _0x2d0e93=_[_0xa750('0x27')](db['VoiceMail'][_0xa750('0x28')],function(_0x6bc25d){return{'name':_0x6bc25d[_0xa750('0x29')],'type':_0x6bc25d[_0xa750('0x2a')][_0xa750('0x2b')]};});_0x46cc11[_0xa750('0x2c')]=_[_0xa750('0x27')](_0x2d0e93,_0xa750('0x24'));_0x46cc11['query']=_[_0xa750('0x2d')](_0x2aef3a['query']);_0x46cc11[_0xa750('0x2e')]=_[_0xa750('0x2f')](_0x46cc11[_0xa750('0x2c')],_0x46cc11[_0xa750('0x30')]);_0x59ab33['attributes']=_[_0xa750('0x2f')](_0x46cc11[_0xa750('0x2c')],qs['fields'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x31')]));_0x59ab33[_0xa750('0x32')]=_0x59ab33[_0xa750('0x32')]['length']?_0x59ab33[_0xa750('0x32')]:_0x46cc11['model'];if(!_0x2aef3a['query'][_0xa750('0x33')](_0xa750('0x34'))){_0x59ab33[_0xa750('0x35')]=qs['limit'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x35')]);_0x59ab33[_0xa750('0x17')]=qs['offset'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x17')]);}_0x59ab33[_0xa750('0x36')]=qs['sort'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x37')]);_0x59ab33[_0xa750('0x38')]=qs['filters'](_[_0xa750('0x39')](_0x2aef3a[_0xa750('0x30')],_0x46cc11[_0xa750('0x2e')]),_0x2d0e93);if(_0x2aef3a[_0xa750('0x30')]['filter']){_0x59ab33['where']=_[_0xa750('0x3a')](_0x59ab33[_0xa750('0x38')],{'$or':_['map'](_0x2d0e93,function(_0x43dc3a){if(_0x43dc3a[_0xa750('0x2a')]!==_0xa750('0x3b')){var _0x1166ff={};_0x1166ff[_0x43dc3a[_0xa750('0x24')]]={'$like':'%'+_0x2aef3a['query'][_0xa750('0x3c')]+'%'};return _0x1166ff;}})});}_0x59ab33=_[_0xa750('0x3a')]({},_0x59ab33,_0x2aef3a[_0xa750('0x3d')]);var _0x134874={'where':_0x59ab33[_0xa750('0x38')]};return db[_0xa750('0x3e')][_0xa750('0x19')](_0x134874)['then'](function(_0x3daa38){_0x4c2c9e['count']=_0x3daa38;if(_0x2aef3a[_0xa750('0x30')]['includeAll']){_0x59ab33[_0xa750('0x3f')]=[{'all':!![]}];}return db[_0xa750('0x3e')][_0xa750('0x40')](_0x59ab33);})[_0xa750('0x1d')](function(_0x430d60){_0x4c2c9e[_0xa750('0x41')]=_0x430d60;return _0x4c2c9e;})[_0xa750('0x1d')](respondWithFilteredResult(_0x2c5253,_0x59ab33))[_0xa750('0x42')](handleError(_0x2c5253,null));};exports[_0xa750('0x43')]=function(_0x108a1a,_0x36a8d6){var _0x1458f1={'raw':!![],'where':{'id':_0x108a1a[_0xa750('0x44')]['id']}},_0x3ec860={};_0x3ec860[_0xa750('0x2c')]=_[_0xa750('0x2d')](db[_0xa750('0x3e')][_0xa750('0x28')]);_0x3ec860[_0xa750('0x30')]=_[_0xa750('0x2d')](_0x108a1a['query']);_0x3ec860[_0xa750('0x2e')]=_[_0xa750('0x2f')](_0x3ec860[_0xa750('0x2c')],_0x3ec860[_0xa750('0x30')]);_0x1458f1[_0xa750('0x32')]=_[_0xa750('0x2f')](_0x3ec860[_0xa750('0x2c')],qs[_0xa750('0x31')](_0x108a1a[_0xa750('0x30')]['fields']));_0x1458f1[_0xa750('0x32')]=_0x1458f1[_0xa750('0x32')]['length']?_0x1458f1[_0xa750('0x32')]:_0x3ec860[_0xa750('0x2c')];if(_0x108a1a[_0xa750('0x30')][_0xa750('0x45')]){_0x1458f1[_0xa750('0x3f')]=[{'all':!![]}];}_0x1458f1=_[_0xa750('0x3a')]({},_0x1458f1,_0x108a1a[_0xa750('0x3d')]);return db[_0xa750('0x3e')][_0xa750('0x46')](_0x1458f1)[_0xa750('0x1d')](handleEntityNotFound(_0x36a8d6,null))['then'](respondWithResult(_0x36a8d6,null))[_0xa750('0x42')](handleError(_0x36a8d6,null));};exports[_0xa750('0x47')]=function(_0x58afd2,_0x93e49f){return db[_0xa750('0x3e')][_0xa750('0x47')](_0x58afd2['body'],{})[_0xa750('0x1d')](function(_0x3fc623){var _0x1e5a9a=_0x58afd2[_0xa750('0x48')]['get']({'plain':!![]});if(!_0x1e5a9a)throw new Error(_0xa750('0x49'));if(_0x1e5a9a[_0xa750('0x4a')]===_0xa750('0x48')){var _0xed4f88=_0x3fc623['get']({'plain':!![]});var _0x203f2a=_0xa750('0x1f');return db['UserProfileSection'][_0xa750('0x46')]({'where':{'name':_0x203f2a,'userProfileId':_0x1e5a9a['userProfileId']},'raw':!![]})[_0xa750('0x1d')](function(_0x69995b){if(_0x69995b&&_0x69995b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0xed4f88[_0xa750('0x24')],'resourceId':_0xed4f88['id'],'type':_0x69995b[_0xa750('0x24')],'sectionId':_0x69995b['id']},{})['then'](function(){return _0x3fc623;});}else{return _0x3fc623;}})[_0xa750('0x42')](function(_0x1a79a9){logger[_0xa750('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a79a9);throw _0x1a79a9;});}return _0x3fc623;})['then'](respondWithResult(_0x93e49f,0xc9))['catch'](handleError(_0x93e49f,null));};exports['update']=function(_0x3c34d4,_0x4a1b5d){if(_0x3c34d4[_0xa750('0x4b')]['id']){delete _0x3c34d4[_0xa750('0x4b')]['id'];}return db['VoiceMail'][_0xa750('0x46')]({'where':{'id':_0x3c34d4['params']['id']}})[_0xa750('0x1d')](handleEntityNotFound(_0x4a1b5d,null))['then'](saveUpdates(_0x3c34d4['body'],null))['then'](respondWithResult(_0x4a1b5d,null))['catch'](handleError(_0x4a1b5d,null));};exports[_0xa750('0x1c')]=function(_0x40dac2,_0x5f1313){return db['VoiceMail']['find']({'where':{'id':_0x40dac2[_0xa750('0x44')]['id']}})[_0xa750('0x1d')](handleEntityNotFound(_0x5f1313,null))[_0xa750('0x1d')](removeEntity(_0x5f1313,null))[_0xa750('0x42')](handleError(_0x5f1313,null));};exports[_0xa750('0x4c')]=function(_0x13528a,_0x599e7e,_0x590b1c){return db[_0xa750('0x3e')][_0xa750('0x4d')]({'where':{'id':_0x13528a[_0xa750('0x44')]['id']}})[_0xa750('0x1d')](handleEntityNotFound(_0x599e7e,null))[_0xa750('0x1d')](function(_0x5a3cd5){var _0x4030b3;var _0xaa63be={},_0x2c7dd0={};_0x2c7dd0[_0xa750('0x2c')]=_[_0xa750('0x2d')](db[_0xa750('0x4e')][_0xa750('0x28')]);_0x2c7dd0[_0xa750('0x30')]=_['keys'](_0x13528a[_0xa750('0x30')]);_0x2c7dd0[_0xa750('0x2e')]=_[_0xa750('0x2f')](_0x2c7dd0[_0xa750('0x2c')],_0x2c7dd0[_0xa750('0x30')]);_0xaa63be['attributes']=_[_0xa750('0x2f')](_0x2c7dd0[_0xa750('0x2c')],qs[_0xa750('0x31')](_0x13528a[_0xa750('0x30')][_0xa750('0x31')]));_0xaa63be[_0xa750('0x32')]=_0xaa63be[_0xa750('0x32')][_0xa750('0x4f')]?_0xaa63be[_0xa750('0x32')]:_0x2c7dd0[_0xa750('0x2c')];if(!_0x13528a[_0xa750('0x30')][_0xa750('0x33')](_0xa750('0x34'))){_0xaa63be[_0xa750('0x35')]=qs[_0xa750('0x35')](_0x13528a[_0xa750('0x30')]['limit']);_0xaa63be[_0xa750('0x17')]=qs['offset'](_0x13528a[_0xa750('0x30')][_0xa750('0x17')]);}_0xaa63be[_0xa750('0x36')]=qs['sort'](_0x13528a[_0xa750('0x30')][_0xa750('0x37')]);_0xaa63be[_0xa750('0x38')]=qs[_0xa750('0x2e')](_[_0xa750('0x39')](_0x13528a[_0xa750('0x30')],_0x2c7dd0['filters']));if(_0x13528a[_0xa750('0x30')][_0xa750('0x3c')]){_0xaa63be['where']=_[_0xa750('0x3a')](_0xaa63be[_0xa750('0x38')],{'$or':_[_0xa750('0x27')](_0xaa63be[_0xa750('0x32')],function(_0x3255c7){var _0x1b7597={};_0x1b7597[_0x3255c7]={'$like':'%'+_0x13528a[_0xa750('0x30')][_0xa750('0x3c')]+'%'};return _0x1b7597;})});}_0xaa63be[_0xa750('0x38')]=_[_0xa750('0x3a')](_0xaa63be[_0xa750('0x38')],{'mailboxuser':_0x5a3cd5['mailbox']});_0xaa63be=_['merge']({},_0xaa63be,_0x13528a[_0xa750('0x3d')]);return db[_0xa750('0x4e')][_0xa750('0x50')](_0xaa63be)[_0xa750('0x1d')](respondWithFilteredResult(_0x599e7e,_0xaa63be));})['catch'](handleError(_0x599e7e,null));};
\ No newline at end of file
+var _0x3de3=['fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','findAll','rows','catch','params','include','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','getMessages','VoiceMailMessage','mailbox','findAndCountAll','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','get','Voicemails','UserProfileResource','destroy','error','name','send','index','map','VoiceMail','fieldName','keys','intersection','model','query','attributes'];(function(_0x3ec882,_0x1bf419){var _0x396bed=function(_0x3099c0){while(--_0x3099c0){_0x3ec882['push'](_0x3ec882['shift']());}};_0x396bed(++_0x1bf419);}(_0x3de3,0x1ce));var _0x33de=function(_0x1803f8,_0x5cb239){_0x1803f8=_0x1803f8-0x0;var _0x36e7a1=_0x3de3[_0x1803f8];return _0x36e7a1;};'use strict';var emlformat=require(_0x33de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x33de('0x1'));var jsonpatch=require(_0x33de('0x2'));var rp=require('request-promise');var moment=require(_0x33de('0x3'));var BPromise=require(_0x33de('0x4'));var Mustache=require(_0x33de('0x5'));var util=require(_0x33de('0x6'));var path=require('path');var sox=require(_0x33de('0x7'));var csv=require(_0x33de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x33de('0x9'));var _=require('lodash');var squel=require(_0x33de('0xa'));var crypto=require(_0x33de('0xb'));var jsforce=require(_0x33de('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x33de('0x8'));var querystring=require(_0x33de('0xd'));var Papa=require(_0x33de('0xe'));var Redis=require('ioredis');var authService=require(_0x33de('0xf'));var qs=require(_0x33de('0x10'));var as=require(_0x33de('0x11'));var hardwareService=require(_0x33de('0x12'));var logger=require(_0x33de('0x13'))(_0x33de('0x14'));var utils=require(_0x33de('0x15'));var config=require(_0x33de('0x16'));var licenseUtil=require(_0x33de('0x17'));var db=require(_0x33de('0x18'))['db'];function respondWithStatusCode(_0x27d1d8,_0x5170ad){_0x5170ad=_0x5170ad||0xcc;return function(_0x6b1a4c){if(_0x6b1a4c){return _0x27d1d8[_0x33de('0x19')](_0x5170ad);}return _0x27d1d8['status'](_0x5170ad)['end']();};}function respondWithResult(_0x4164ab,_0x22bda8){_0x22bda8=_0x22bda8||0xc8;return function(_0x2b3748){if(_0x2b3748){return _0x4164ab[_0x33de('0x1a')](_0x22bda8)['json'](_0x2b3748);}};}function respondWithFilteredResult(_0x11e6b5,_0x1b1166){return function(_0x522ba0){if(_0x522ba0){var _0x4ff69f=typeof _0x1b1166[_0x33de('0x1b')]===_0x33de('0x1c')&&typeof _0x1b1166[_0x33de('0x1d')]==='undefined';var _0x2db887=_0x522ba0[_0x33de('0x1e')];var _0x52cfa0=_0x4ff69f?0x0:_0x1b1166[_0x33de('0x1b')];var _0x201ff3=_0x4ff69f?_0x522ba0['count']:_0x1b1166['offset']+_0x1b1166[_0x33de('0x1d')];var _0x52d718;if(_0x201ff3>=_0x2db887){_0x201ff3=_0x2db887;_0x52d718=0xc8;}else{_0x52d718=0xce;}_0x11e6b5[_0x33de('0x1a')](_0x52d718);return _0x11e6b5[_0x33de('0x1f')](_0x33de('0x20'),_0x52cfa0+'-'+_0x201ff3+'/'+_0x2db887)[_0x33de('0x21')](_0x522ba0);}return null;};}function patchUpdates(_0xc4f1a4){return function(_0x40a8e6){try{jsonpatch[_0x33de('0x22')](_0x40a8e6,_0xc4f1a4,!![]);}catch(_0x493263){return BPromise['reject'](_0x493263);}return _0x40a8e6[_0x33de('0x23')]();};}function saveUpdates(_0x5af3fa,_0x8acd8d){return function(_0x4cd8db){if(_0x4cd8db){return _0x4cd8db[_0x33de('0x24')](_0x5af3fa)[_0x33de('0x25')](function(_0x575e88){return _0x575e88;});}return null;};}function removeEntity(_0x2dbcf2,_0x5cd77e){return function(_0x67d040){if(_0x67d040){return _0x67d040['destroy']()[_0x33de('0x25')](function(){var _0x24e282=_0x67d040[_0x33de('0x26')]({'plain':!![]});var _0x5b79d7=_0x33de('0x27');return db[_0x33de('0x28')][_0x33de('0x29')]({'where':{'type':_0x5b79d7,'resourceId':_0x24e282['id']}})['then'](function(){return _0x67d040;});})[_0x33de('0x25')](function(){_0x2dbcf2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c8de9,_0x17c760){return function(_0x1a870a){if(!_0x1a870a){_0x1c8de9[_0x33de('0x19')](0x194);}return _0x1a870a;};}function handleError(_0x44b10e,_0x160687){_0x160687=_0x160687||0x1f4;return function(_0x3f22fb){logger[_0x33de('0x2a')](_0x3f22fb['stack']);if(_0x3f22fb['name']){delete _0x3f22fb[_0x33de('0x2b')];}_0x44b10e[_0x33de('0x1a')](_0x160687)[_0x33de('0x2c')](_0x3f22fb);};}exports[_0x33de('0x2d')]=function(_0x167cec,_0x20f393){var _0x427e82={},_0x4e1898={},_0x282158={'count':0x0,'rows':[]};var _0x1cee91=_[_0x33de('0x2e')](db[_0x33de('0x2f')]['rawAttributes'],function(_0xe5dc68){return{'name':_0xe5dc68[_0x33de('0x30')],'type':_0xe5dc68['type']['key']};});_0x4e1898['model']=_[_0x33de('0x2e')](_0x1cee91,_0x33de('0x2b'));_0x4e1898['query']=_[_0x33de('0x31')](_0x167cec['query']);_0x4e1898['filters']=_[_0x33de('0x32')](_0x4e1898[_0x33de('0x33')],_0x4e1898[_0x33de('0x34')]);_0x427e82[_0x33de('0x35')]=_[_0x33de('0x32')](_0x4e1898[_0x33de('0x33')],qs[_0x33de('0x36')](_0x167cec[_0x33de('0x34')]['fields']));_0x427e82[_0x33de('0x35')]=_0x427e82['attributes'][_0x33de('0x37')]?_0x427e82['attributes']:_0x4e1898['model'];if(!_0x167cec[_0x33de('0x34')][_0x33de('0x38')](_0x33de('0x39'))){_0x427e82[_0x33de('0x1d')]=qs[_0x33de('0x1d')](_0x167cec[_0x33de('0x34')]['limit']);_0x427e82[_0x33de('0x1b')]=qs[_0x33de('0x1b')](_0x167cec[_0x33de('0x34')][_0x33de('0x1b')]);}_0x427e82[_0x33de('0x3a')]=qs[_0x33de('0x3b')](_0x167cec[_0x33de('0x34')]['sort']);_0x427e82[_0x33de('0x3c')]=qs[_0x33de('0x3d')](_[_0x33de('0x3e')](_0x167cec[_0x33de('0x34')],_0x4e1898[_0x33de('0x3d')]),_0x1cee91);if(_0x167cec[_0x33de('0x34')][_0x33de('0x3f')]){_0x427e82['where']=_[_0x33de('0x40')](_0x427e82[_0x33de('0x3c')],{'$or':_[_0x33de('0x2e')](_0x1cee91,function(_0x7eaa40){if(_0x7eaa40[_0x33de('0x41')]!==_0x33de('0x42')){var _0x58f236={};_0x58f236[_0x7eaa40[_0x33de('0x2b')]]={'$like':'%'+_0x167cec['query'][_0x33de('0x3f')]+'%'};return _0x58f236;}})});}_0x427e82=_[_0x33de('0x40')]({},_0x427e82,_0x167cec['options']);var _0x198b72={'where':_0x427e82[_0x33de('0x3c')]};return db[_0x33de('0x2f')][_0x33de('0x1e')](_0x198b72)[_0x33de('0x25')](function(_0x4251e3){_0x282158[_0x33de('0x1e')]=_0x4251e3;if(_0x167cec[_0x33de('0x34')][_0x33de('0x43')]){_0x427e82['include']=[{'all':!![]}];}return db['VoiceMail'][_0x33de('0x44')](_0x427e82);})[_0x33de('0x25')](function(_0x20d04f){_0x282158[_0x33de('0x45')]=_0x20d04f;return _0x282158;})['then'](respondWithFilteredResult(_0x20f393,_0x427e82))[_0x33de('0x46')](handleError(_0x20f393,null));};exports['show']=function(_0x553ef2,_0x1f164c){var _0x3caa1f={'raw':!![],'where':{'id':_0x553ef2[_0x33de('0x47')]['id']}},_0x384b12={};_0x384b12[_0x33de('0x33')]=_[_0x33de('0x31')](db[_0x33de('0x2f')]['rawAttributes']);_0x384b12[_0x33de('0x34')]=_['keys'](_0x553ef2[_0x33de('0x34')]);_0x384b12['filters']=_[_0x33de('0x32')](_0x384b12[_0x33de('0x33')],_0x384b12['query']);_0x3caa1f[_0x33de('0x35')]=_[_0x33de('0x32')](_0x384b12[_0x33de('0x33')],qs['fields'](_0x553ef2['query'][_0x33de('0x36')]));_0x3caa1f[_0x33de('0x35')]=_0x3caa1f['attributes']['length']?_0x3caa1f[_0x33de('0x35')]:_0x384b12['model'];if(_0x553ef2['query']['includeAll']){_0x3caa1f[_0x33de('0x48')]=[{'all':!![]}];}_0x3caa1f=_[_0x33de('0x40')]({},_0x3caa1f,_0x553ef2[_0x33de('0x49')]);return db[_0x33de('0x2f')]['find'](_0x3caa1f)['then'](handleEntityNotFound(_0x1f164c,null))[_0x33de('0x25')](respondWithResult(_0x1f164c,null))[_0x33de('0x46')](handleError(_0x1f164c,null));};exports['create']=function(_0x1d016b,_0xc23633){return db[_0x33de('0x2f')][_0x33de('0x4a')](_0x1d016b[_0x33de('0x4b')],{})['then'](function(_0x185e5f){var _0x3bf2e3=_0x1d016b['user'][_0x33de('0x26')]({'plain':!![]});if(!_0x3bf2e3)throw new Error(_0x33de('0x4c'));if(_0x3bf2e3[_0x33de('0x4d')]===_0x33de('0x4e')){var _0xbbb376=_0x185e5f[_0x33de('0x26')]({'plain':!![]});var _0x3d6424=_0x33de('0x27');return db[_0x33de('0x4f')][_0x33de('0x50')]({'where':{'name':_0x3d6424,'userProfileId':_0x3bf2e3['userProfileId']},'raw':!![]})[_0x33de('0x25')](function(_0x3d66e1){if(_0x3d66e1&&_0x3d66e1[_0x33de('0x51')]===0x0){return db[_0x33de('0x28')][_0x33de('0x4a')]({'name':_0xbbb376[_0x33de('0x2b')],'resourceId':_0xbbb376['id'],'type':_0x3d66e1[_0x33de('0x2b')],'sectionId':_0x3d66e1['id']},{})['then'](function(){return _0x185e5f;});}else{return _0x185e5f;}})[_0x33de('0x46')](function(_0x32042e){logger[_0x33de('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32042e);throw _0x32042e;});}return _0x185e5f;})[_0x33de('0x25')](respondWithResult(_0xc23633,0xc9))[_0x33de('0x46')](handleError(_0xc23633,null));};exports[_0x33de('0x24')]=function(_0x303f72,_0x492aa7){if(_0x303f72['body']['id']){delete _0x303f72[_0x33de('0x4b')]['id'];}return db[_0x33de('0x2f')][_0x33de('0x50')]({'where':{'id':_0x303f72[_0x33de('0x47')]['id']}})[_0x33de('0x25')](handleEntityNotFound(_0x492aa7,null))['then'](saveUpdates(_0x303f72['body'],null))[_0x33de('0x25')](respondWithResult(_0x492aa7,null))[_0x33de('0x46')](handleError(_0x492aa7,null));};exports[_0x33de('0x29')]=function(_0x7112db,_0x3bd3b1){return db[_0x33de('0x2f')][_0x33de('0x50')]({'where':{'id':_0x7112db[_0x33de('0x47')]['id']}})[_0x33de('0x25')](handleEntityNotFound(_0x3bd3b1,null))['then'](removeEntity(_0x3bd3b1,null))[_0x33de('0x46')](handleError(_0x3bd3b1,null));};exports[_0x33de('0x52')]=function(_0x27b134,_0x5a0101,_0x1a34ea){return db['VoiceMail']['findOne']({'where':{'id':_0x27b134['params']['id']}})['then'](handleEntityNotFound(_0x5a0101,null))[_0x33de('0x25')](function(_0x36c4a2){var _0x4d3a85;var _0x397179={},_0x232840={};_0x232840['model']=_[_0x33de('0x31')](db[_0x33de('0x53')]['rawAttributes']);_0x232840[_0x33de('0x34')]=_[_0x33de('0x31')](_0x27b134[_0x33de('0x34')]);_0x232840[_0x33de('0x3d')]=_[_0x33de('0x32')](_0x232840[_0x33de('0x33')],_0x232840[_0x33de('0x34')]);_0x397179['attributes']=_['intersection'](_0x232840[_0x33de('0x33')],qs['fields'](_0x27b134[_0x33de('0x34')][_0x33de('0x36')]));_0x397179['attributes']=_0x397179[_0x33de('0x35')]['length']?_0x397179[_0x33de('0x35')]:_0x232840[_0x33de('0x33')];if(!_0x27b134['query']['hasOwnProperty'](_0x33de('0x39'))){_0x397179[_0x33de('0x1d')]=qs[_0x33de('0x1d')](_0x27b134[_0x33de('0x34')][_0x33de('0x1d')]);_0x397179['offset']=qs[_0x33de('0x1b')](_0x27b134[_0x33de('0x34')]['offset']);}_0x397179[_0x33de('0x3a')]=qs[_0x33de('0x3b')](_0x27b134['query'][_0x33de('0x3b')]);_0x397179[_0x33de('0x3c')]=qs['filters'](_['pick'](_0x27b134[_0x33de('0x34')],_0x232840['filters']));if(_0x27b134[_0x33de('0x34')]['filter']){_0x397179[_0x33de('0x3c')]=_['merge'](_0x397179['where'],{'$or':_['map'](_0x397179['attributes'],function(_0x50182b){var _0x4d290e={};_0x4d290e[_0x50182b]={'$like':'%'+_0x27b134[_0x33de('0x34')]['filter']+'%'};return _0x4d290e;})});}_0x397179[_0x33de('0x3c')]=_['merge'](_0x397179['where'],{'mailboxuser':_0x36c4a2[_0x33de('0x54')]});_0x397179=_[_0x33de('0x40')]({},_0x397179,_0x27b134[_0x33de('0x49')]);return db[_0x33de('0x53')][_0x33de('0x55')](_0x397179)[_0x33de('0x25')](respondWithFilteredResult(_0x5a0101,_0x397179));})[_0x33de('0x46')](handleError(_0x5a0101,null));};
\ No newline at end of file
index 7d3f2c4..5b52fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3304=['voice_voicemail','mailbox_context','mailbox','context','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','VoiceMail'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3304,0x1b4));var _0x4330=function(_0xf200ef,_0x5df1cd){_0xf200ef=_0xf200ef-0x0;var _0x16df2a=_0x3304[_0xf200ef];return _0x16df2a;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x4330('0x0'));var moment=require(_0x4330('0x1'));var BPromise=require(_0x4330('0x2'));var rp=require(_0x4330('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4330('0x4'));var config=require(_0x4330('0x5'));var attributes=require('./voiceMail.attributes');module['exports']=function(_0x4671c8,_0x321e47){return _0x4671c8[_0x4330('0x6')](_0x4330('0x7'),attributes,{'tableName':_0x4330('0x8'),'paranoid':![],'indexes':[{'name':_0x4330('0x9'),'fields':[_0x4330('0xa'),_0x4330('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x90be=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','voice_voicemail','mailbox','context'];(function(_0x598f9a,_0x3a5e55){var _0x23ffa5=function(_0x5607a7){while(--_0x5607a7){_0x598f9a['push'](_0x598f9a['shift']());}};_0x23ffa5(++_0x3a5e55);}(_0x90be,0x1ee));var _0xe90b=function(_0x5922d5,_0x5ef30f){_0x5922d5=_0x5922d5-0x0;var _0x14ebc0=_0x90be[_0x5922d5];return _0x14ebc0;};'use strict';var _=require('lodash');var util=require(_0xe90b('0x0'));var logger=require(_0xe90b('0x1'))(_0xe90b('0x2'));var moment=require(_0xe90b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe90b('0x4'));var rimraf=require(_0xe90b('0x5'));var config=require(_0xe90b('0x6'));var attributes=require(_0xe90b('0x7'));module[_0xe90b('0x8')]=function(_0x98b8e4,_0x32d888){return _0x98b8e4[_0xe90b('0x9')]('VoiceMail',attributes,{'tableName':_0xe90b('0xa'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xe90b('0xb'),_0xe90b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c0e7b1d..4f4a424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4d=['catch','util','bluebird','../../config/logger','jayson/promise','client','http','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3522c8,_0x1e7c82){var _0x22f498=function(_0x5bf143){while(--_0x5bf143){_0x3522c8['push'](_0x3522c8['shift']());}};_0x22f498(++_0x1e7c82);}(_0xdd4d,0x145));var _0xddd4=function(_0x5c53dd,_0x551746){_0x5c53dd=_0x5c53dd-0x0;var _0x23fac9=_0xdd4d[_0x5c53dd];return _0x23fac9;};'use strict';var _=require('lodash');var util=require(_0xddd4('0x0'));var moment=require('moment');var BPromise=require(_0xddd4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xddd4('0x2'))('rpc');var config=require('../../config/environment');var jayson=require(_0xddd4('0x3'));var client=jayson[_0xddd4('0x4')][_0xddd4('0x5')]({'port':0x232a});function respondWithRpcPromise(_0xdac08d,_0x3b9684,_0x2c177d){return new BPromise(function(_0x17a720,_0x34e907){return client['request'](_0xdac08d,_0x2c177d)[_0xddd4('0x6')](function(_0x304625){logger[_0xddd4('0x7')](_0xddd4('0x8'),_0x3b9684,_0xddd4('0x9'));logger[_0xddd4('0xa')](_0xddd4('0xb'),_0x3b9684,_0xddd4('0x9'),JSON[_0xddd4('0xc')](_0x304625));if(_0x304625['error']){if(_0x304625[_0xddd4('0xd')][_0xddd4('0xe')]===0x1f4){logger[_0xddd4('0xd')]('VoiceMail,\x20%s,\x20%s',_0x3b9684,_0x304625[_0xddd4('0xd')]['message']);return _0x34e907(_0x304625[_0xddd4('0xd')][_0xddd4('0xf')]);}logger[_0xddd4('0xd')](_0xddd4('0x8'),_0x3b9684,_0x304625[_0xddd4('0xd')]['message']);return _0x17a720(_0x304625['error'][_0xddd4('0xf')]);}else{logger[_0xddd4('0x7')]('VoiceMail,\x20%s,\x20%s',_0x3b9684,_0xddd4('0x9'));_0x17a720(_0x304625[_0xddd4('0x10')][_0xddd4('0xf')]);}})[_0xddd4('0x11')](function(_0x15f80a){logger[_0xddd4('0xd')](_0xddd4('0x8'),_0x3b9684,_0x15f80a);_0x34e907(_0x15f80a);});});}
\ No newline at end of file
+var _0xde80=['info','VoiceMail,\x20%s,\x20%s','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','moment','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xde80,0x88));var _0x0de8=function(_0x2d8d8a,_0x4382f8){_0x2d8d8a=_0x2d8d8a-0x0;var _0x37f3ee=_0xde80[_0x2d8d8a];return _0x37f3ee;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0de8('0x0'));var BPromise=require('bluebird');var rs=require(_0x0de8('0x1'));var fs=require('fs');var Redis=require(_0x0de8('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0de8('0x3'));var logger=require(_0x0de8('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0de8('0x5'));var client=jayson[_0x0de8('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35ebbe,_0x26676b,_0x649045){return new BPromise(function(_0x186b12,_0x5f056b){return client[_0x0de8('0x7')](_0x35ebbe,_0x649045)['then'](function(_0x5abae5){logger[_0x0de8('0x8')](_0x0de8('0x9'),_0x26676b,'request\x20sent');logger[_0x0de8('0xa')](_0x0de8('0xb'),_0x26676b,_0x0de8('0xc'),JSON[_0x0de8('0xd')](_0x5abae5));if(_0x5abae5[_0x0de8('0xe')]){if(_0x5abae5[_0x0de8('0xe')]['code']===0x1f4){logger[_0x0de8('0xe')]('VoiceMail,\x20%s,\x20%s',_0x26676b,_0x5abae5[_0x0de8('0xe')]['message']);return _0x5f056b(_0x5abae5[_0x0de8('0xe')][_0x0de8('0xf')]);}logger['error'](_0x0de8('0x9'),_0x26676b,_0x5abae5[_0x0de8('0xe')][_0x0de8('0xf')]);return _0x186b12(_0x5abae5[_0x0de8('0xe')][_0x0de8('0xf')]);}else{logger[_0x0de8('0x8')](_0x0de8('0x9'),_0x26676b,'request\x20sent');_0x186b12(_0x5abae5[_0x0de8('0x10')][_0x0de8('0xf')]);}})[_0x0de8('0x11')](function(_0x265f94){logger[_0x0de8('0xe')](_0x0de8('0x9'),_0x26676b,_0x265f94);_0x5f056b(_0x265f94);});});}
\ No newline at end of file
index 94e3e40..da7b55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf89a=['destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/download','download','post','create','put','update','delete'];(function(_0x2ead8c,_0x123395){var _0x35fa79=function(_0x49fefa){while(--_0x49fefa){_0x2ead8c['push'](_0x2ead8c['shift']());}};_0x35fa79(++_0x123395);}(_0xf89a,0xe6));var _0xaf89=function(_0x1c1ae2,_0x1a3623){_0x1c1ae2=_0x1c1ae2-0x0;var _0x1b7cc6=_0xf89a[_0x1c1ae2];return _0x1b7cc6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaf89('0x0'));var timeout=require(_0xaf89('0x1'));var express=require('express');var router=express[_0xaf89('0x2')]();var fs_extra=require(_0xaf89('0x3'));var auth=require(_0xaf89('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xaf89('0x5'));var controller=require('./voiceMailMessage.controller');router[_0xaf89('0x6')]('/',auth[_0xaf89('0x7')](),controller[_0xaf89('0x8')]);router[_0xaf89('0x6')](_0xaf89('0x9'),auth[_0xaf89('0x7')](),controller['show']);router[_0xaf89('0x6')](_0xaf89('0xa'),auth['isAuthenticated'](),controller[_0xaf89('0xb')]);router[_0xaf89('0xc')]('/',auth['isAuthenticated'](),controller[_0xaf89('0xd')]);router[_0xaf89('0xe')]('/:id',auth[_0xaf89('0x7')](),controller[_0xaf89('0xf')]);router[_0xaf89('0x10')](_0xaf89('0x9'),auth[_0xaf89('0x7')](),controller[_0xaf89('0x11')]);module[_0xaf89('0x12')]=router;
\ No newline at end of file
+var _0xfbf2=['connect-timeout','Router','fs-extra','../../components/auth/service','./voiceMailMessage.controller','index','/:id','isAuthenticated','show','get','/:id/download','download','post','put','delete','exports','multer','util','path'];(function(_0xb46aa4,_0x3db253){var _0x4d2fd8=function(_0x1b24ce){while(--_0x1b24ce){_0xb46aa4['push'](_0xb46aa4['shift']());}};_0x4d2fd8(++_0x3db253);}(_0xfbf2,0xa8));var _0x2fbf=function(_0x25c90e,_0x362581){_0x25c90e=_0x25c90e-0x0;var _0x1d00e0=_0xfbf2[_0x25c90e];return _0x1d00e0;};'use strict';var multer=require(_0x2fbf('0x0'));var util=require(_0x2fbf('0x1'));var path=require(_0x2fbf('0x2'));var timeout=require(_0x2fbf('0x3'));var express=require('express');var router=express[_0x2fbf('0x4')]();var fs_extra=require(_0x2fbf('0x5'));var auth=require(_0x2fbf('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2fbf('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x2fbf('0x8')]);router['get'](_0x2fbf('0x9'),auth[_0x2fbf('0xa')](),controller[_0x2fbf('0xb')]);router[_0x2fbf('0xc')](_0x2fbf('0xd'),auth[_0x2fbf('0xa')](),controller[_0x2fbf('0xe')]);router[_0x2fbf('0xf')]('/',auth[_0x2fbf('0xa')](),controller['create']);router[_0x2fbf('0x10')](_0x2fbf('0x9'),auth[_0x2fbf('0xa')](),controller['update']);router[_0x2fbf('0x11')]('/:id',auth[_0x2fbf('0xa')](),controller['destroy']);module[_0x2fbf('0x12')]=router;
\ No newline at end of file
index 8670176..bd09bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ad=['exports','VIRTUAL','getDataValue','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x2dcf35,_0x37cf99){var _0x2e5748=function(_0x343cc5){while(--_0x343cc5){_0x2dcf35['push'](_0x2dcf35['shift']());}};_0x2e5748(++_0x37cf99);}(_0xa7ad,0x9f));var _0xda7a=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xa7ad[_0x5f309e];return _0x487b5e;};'use strict';var Sequelize=require(_0xda7a('0x0'));module[_0xda7a('0x1')]={'name':{'type':Sequelize[_0xda7a('0x2')],'get':function(_0x2575d5){return this[_0xda7a('0x3')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xda7a('0x5')](_0xda7a('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xda7a('0x4')],'defaultValue':''},'stamp':{'type':_0xda7a('0x7'),'defaultValue':Sequelize[_0xda7a('0x8')](_0xda7a('0x9'))}};
\ No newline at end of file
+var _0x5da2=['getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','exports'];(function(_0x265d9e,_0xb9d257){var _0x1d45d6=function(_0x317223){while(--_0x317223){_0x265d9e['push'](_0x265d9e['shift']());}};_0x1d45d6(++_0xb9d257);}(_0x5da2,0xd7));var _0x25da=function(_0x44bcb0,_0x235aa9){_0x44bcb0=_0x44bcb0-0x0;var _0xfaf881=_0x5da2[_0x44bcb0];return _0xfaf881;};'use strict';var Sequelize=require('sequelize');module[_0x25da('0x0')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x5a6596){return this[_0x25da('0x1')]('id');}},'msgnum':{'type':Sequelize[_0x25da('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x25da('0x4')](_0x25da('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x25da('0x3')],'defaultValue':''},'stamp':{'type':_0x25da('0x6'),'defaultValue':Sequelize[_0x25da('0x7')](_0x25da('0x8'))}};
\ No newline at end of file
index 65a4eb0..3a97168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7bf=['show','params','keys','create','body','find','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','differenceBy','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceMailMessage','includeAll','include','rows','catch'];(function(_0x4216ba,_0x5739c5){var _0x2592ca=function(_0x58ecea){while(--_0x58ecea){_0x4216ba['push'](_0x4216ba['shift']());}};_0x2592ca(++_0x5739c5);}(_0xd7bf,0x1c9));var _0xfd7b=function(_0xcb4064,_0x971d53){_0xcb4064=_0xcb4064-0x0;var _0x1b336d=_0xd7bf[_0xcb4064];return _0x1b336d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfd7b('0x0'));var zipdir=require(_0xfd7b('0x1'));var jsonpatch=require(_0xfd7b('0x2'));var rp=require(_0xfd7b('0x3'));var moment=require(_0xfd7b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfd7b('0x5'));var util=require(_0xfd7b('0x6'));var path=require('path');var sox=require(_0xfd7b('0x7'));var csv=require(_0xfd7b('0x8'));var ejs=require(_0xfd7b('0x9'));var fs=require('fs');var fs_extra=require(_0xfd7b('0xa'));var _=require('lodash');var squel=require(_0xfd7b('0xb'));var crypto=require(_0xfd7b('0xc'));var jsforce=require(_0xfd7b('0xd'));var deskjs=require(_0xfd7b('0xe'));var toCsv=require(_0xfd7b('0x8'));var querystring=require('querystring');var Papa=require(_0xfd7b('0xf'));var Redis=require('ioredis');var authService=require(_0xfd7b('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xfd7b('0x11'));var hardwareService=require(_0xfd7b('0x12'));var logger=require(_0xfd7b('0x13'))(_0xfd7b('0x14'));var utils=require(_0xfd7b('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xfd7b('0x16'));var db=require(_0xfd7b('0x17'))['db'];function respondWithStatusCode(_0x4bb787,_0xc6954e){_0xc6954e=_0xc6954e||0xcc;return function(_0x275563){if(_0x275563){return _0x4bb787[_0xfd7b('0x18')](_0xc6954e);}return _0x4bb787[_0xfd7b('0x19')](_0xc6954e)[_0xfd7b('0x1a')]();};}function respondWithResult(_0x58927f,_0x2fff12){_0x2fff12=_0x2fff12||0xc8;return function(_0x251648){if(_0x251648){return _0x58927f[_0xfd7b('0x19')](_0x2fff12)['json'](_0x251648);}};}function respondWithFilteredResult(_0x17f25c,_0x5923a3){return function(_0xefce65){if(_0xefce65){var _0xfe06d7=typeof _0x5923a3[_0xfd7b('0x1b')]===_0xfd7b('0x1c')&&typeof _0x5923a3['limit']===_0xfd7b('0x1c');var _0x2003cc=_0xefce65[_0xfd7b('0x1d')];var _0xe44b4f=_0xfe06d7?0x0:_0x5923a3['offset'];var _0x96babf=_0xfe06d7?_0xefce65[_0xfd7b('0x1d')]:_0x5923a3[_0xfd7b('0x1b')]+_0x5923a3[_0xfd7b('0x1e')];var _0x2ce4bb;if(_0x96babf>=_0x2003cc){_0x96babf=_0x2003cc;_0x2ce4bb=0xc8;}else{_0x2ce4bb=0xce;}_0x17f25c[_0xfd7b('0x19')](_0x2ce4bb);return _0x17f25c['set'](_0xfd7b('0x1f'),_0xe44b4f+'-'+_0x96babf+'/'+_0x2003cc)[_0xfd7b('0x20')](_0xefce65);}return null;};}function patchUpdates(_0x3cac4e){return function(_0x20fe12){try{jsonpatch[_0xfd7b('0x21')](_0x20fe12,_0x3cac4e,!![]);}catch(_0x189b1c){return BPromise[_0xfd7b('0x22')](_0x189b1c);}return _0x20fe12[_0xfd7b('0x23')]();};}function saveUpdates(_0x19bd60,_0x2c9e13){return function(_0xae117b){if(_0xae117b){return _0xae117b[_0xfd7b('0x24')](_0x19bd60)[_0xfd7b('0x25')](function(_0x207964){return _0x207964;});}return null;};}function removeEntity(_0x5ac377,_0xf2d84b){return function(_0x1cf926){if(_0x1cf926){return _0x1cf926[_0xfd7b('0x26')]()[_0xfd7b('0x25')](function(){_0x5ac377[_0xfd7b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8d0e8f,_0x180d02){return function(_0x32c2ec){if(!_0x32c2ec){_0x8d0e8f['sendStatus'](0x194);}return _0x32c2ec;};}function handleError(_0x34e6e8,_0x4efed2){_0x4efed2=_0x4efed2||0x1f4;return function(_0x2ff422){logger[_0xfd7b('0x27')](_0x2ff422['stack']);if(_0x2ff422[_0xfd7b('0x28')]){delete _0x2ff422['name'];}_0x34e6e8[_0xfd7b('0x19')](_0x4efed2)[_0xfd7b('0x29')](_0x2ff422);};}exports[_0xfd7b('0x2a')]=function(_0x45cb9a,_0x1a036c){var _0x3e2854={},_0x4c7e68={},_0x5afba2={'count':0x0,'rows':[]};var _0x48083a=_[_0xfd7b('0x2b')](db['VoiceMailMessage'][_0xfd7b('0x2c')],function(_0x39b487){return{'name':_0x39b487[_0xfd7b('0x2d')],'type':_0x39b487[_0xfd7b('0x2e')][_0xfd7b('0x2f')]};});_0x4c7e68[_0xfd7b('0x30')]=_[_0xfd7b('0x31')](_['map'](_0x48083a,_0xfd7b('0x28')),['name']);_0x4c7e68['query']=_['keys'](_0x45cb9a['query']);_0x4c7e68[_0xfd7b('0x32')]=_[_0xfd7b('0x33')](_0x4c7e68[_0xfd7b('0x30')],_0x4c7e68[_0xfd7b('0x34')]);_0x3e2854[_0xfd7b('0x35')]=_[_0xfd7b('0x33')](_0x4c7e68[_0xfd7b('0x30')],qs[_0xfd7b('0x36')](_0x45cb9a['query'][_0xfd7b('0x36')]));_0x3e2854['attributes']=_0x3e2854[_0xfd7b('0x35')][_0xfd7b('0x37')]?_0x3e2854[_0xfd7b('0x35')]:_0x4c7e68[_0xfd7b('0x30')];if(!_0x45cb9a[_0xfd7b('0x34')][_0xfd7b('0x38')](_0xfd7b('0x39'))){_0x3e2854[_0xfd7b('0x1e')]=qs['limit'](_0x45cb9a[_0xfd7b('0x34')][_0xfd7b('0x1e')]);_0x3e2854['offset']=qs[_0xfd7b('0x1b')](_0x45cb9a[_0xfd7b('0x34')]['offset']);}_0x3e2854[_0xfd7b('0x3a')]=qs[_0xfd7b('0x3b')](_0x45cb9a[_0xfd7b('0x34')]['sort']);_0x3e2854[_0xfd7b('0x3c')]=qs[_0xfd7b('0x32')](_[_0xfd7b('0x3d')](_0x45cb9a[_0xfd7b('0x34')],_0x4c7e68[_0xfd7b('0x32')]),_0x48083a);if(_0x45cb9a['query'][_0xfd7b('0x3e')]){_0x3e2854[_0xfd7b('0x3c')]=_[_0xfd7b('0x3f')](_0x3e2854[_0xfd7b('0x3c')],{'$or':_['map'](_0x48083a,function(_0x55deee){if(_0x55deee[_0xfd7b('0x2e')]!==_0xfd7b('0x40')){var _0x3bf9b2={};_0x3bf9b2[_0x55deee[_0xfd7b('0x28')]]={'$like':'%'+_0x45cb9a['query'][_0xfd7b('0x3e')]+'%'};return _0x3bf9b2;}})});}_0x3e2854=_[_0xfd7b('0x3f')]({},_0x3e2854,_0x45cb9a[_0xfd7b('0x41')]);var _0x58625c={'where':_0x3e2854[_0xfd7b('0x3c')]};return db[_0xfd7b('0x42')][_0xfd7b('0x1d')](_0x58625c)['then'](function(_0x23e310){_0x5afba2['count']=_0x23e310;if(_0x45cb9a[_0xfd7b('0x34')][_0xfd7b('0x43')]){_0x3e2854[_0xfd7b('0x44')]=[{'all':!![]}];}return db[_0xfd7b('0x42')]['findAll'](_0x3e2854);})[_0xfd7b('0x25')](function(_0x3a0dfb){_0x5afba2[_0xfd7b('0x45')]=_0x3a0dfb;return _0x5afba2;})['then'](respondWithFilteredResult(_0x1a036c,_0x3e2854))[_0xfd7b('0x46')](handleError(_0x1a036c,null));};exports[_0xfd7b('0x47')]=function(_0x2b7559,_0x154eb6){var _0x575fb2={'raw':!![],'where':{'id':_0x2b7559[_0xfd7b('0x48')]['id']}},_0x23703a={};_0x23703a['model']=_[_0xfd7b('0x49')](db[_0xfd7b('0x42')][_0xfd7b('0x2c')]);_0x23703a[_0xfd7b('0x34')]=_[_0xfd7b('0x49')](_0x2b7559[_0xfd7b('0x34')]);_0x23703a[_0xfd7b('0x32')]=_[_0xfd7b('0x33')](_0x23703a[_0xfd7b('0x30')],_0x23703a[_0xfd7b('0x34')]);_0x575fb2[_0xfd7b('0x35')]=_[_0xfd7b('0x33')](_0x23703a[_0xfd7b('0x30')],qs['fields'](_0x2b7559[_0xfd7b('0x34')][_0xfd7b('0x36')]));_0x575fb2['attributes']=_0x575fb2[_0xfd7b('0x35')][_0xfd7b('0x37')]?_0x575fb2[_0xfd7b('0x35')]:_0x23703a[_0xfd7b('0x30')];if(_0x2b7559[_0xfd7b('0x34')]['includeAll']){_0x575fb2['include']=[{'all':!![]}];}_0x575fb2=_[_0xfd7b('0x3f')]({},_0x575fb2,_0x2b7559['options']);return db[_0xfd7b('0x42')]['find'](_0x575fb2)[_0xfd7b('0x25')](handleEntityNotFound(_0x154eb6,null))[_0xfd7b('0x25')](respondWithResult(_0x154eb6,null))[_0xfd7b('0x46')](handleError(_0x154eb6,null));};exports[_0xfd7b('0x4a')]=function(_0x4633e6,_0x171b39){return db[_0xfd7b('0x42')][_0xfd7b('0x4a')](_0x4633e6[_0xfd7b('0x4b')],{})[_0xfd7b('0x25')](respondWithResult(_0x171b39,0xc9))[_0xfd7b('0x46')](handleError(_0x171b39,null));};exports['update']=function(_0x22eb22,_0x816269){if(_0x22eb22[_0xfd7b('0x4b')]['id']){delete _0x22eb22[_0xfd7b('0x4b')]['id'];}return db[_0xfd7b('0x42')][_0xfd7b('0x4c')]({'where':{'id':_0x22eb22['params']['id']}})[_0xfd7b('0x25')](handleEntityNotFound(_0x816269,null))[_0xfd7b('0x25')](saveUpdates(_0x22eb22[_0xfd7b('0x4b')],null))[_0xfd7b('0x25')](respondWithResult(_0x816269,null))[_0xfd7b('0x46')](handleError(_0x816269,null));};exports['destroy']=function(_0x151fc0,_0x34ae99){return db[_0xfd7b('0x42')]['find']({'where':{'id':_0x151fc0['params']['id']}})[_0xfd7b('0x25')](handleEntityNotFound(_0x34ae99,null))[_0xfd7b('0x25')](removeEntity(_0x34ae99,null))[_0xfd7b('0x46')](handleError(_0x34ae99,null));};exports[_0xfd7b('0x4d')]=function(_0x1ff0b5,_0x3727ff,_0x116a3d){return db[_0xfd7b('0x42')]['find']({'where':{'id':_0x1ff0b5[_0xfd7b('0x48')]['id']},'attributes':['id',_0xfd7b('0x4e'),_0xfd7b('0x4f')]})[_0xfd7b('0x25')](handleEntityNotFound(_0x3727ff,null))[_0xfd7b('0x25')](function(_0x5822d7){if(_0x5822d7){if(!_0x5822d7[_0xfd7b('0x4e')]){throw new db[(_0xfd7b('0x50'))][(_0xfd7b('0x51'))](_0xfd7b('0x52'));}var _0x33bc2a={'Content-Type':_0xfd7b('0x53'),'Content-Disposition':_0xfd7b('0x54')};if(_0x5822d7[_0xfd7b('0x4f')]){_0x33bc2a[_0xfd7b('0x55')]=_0xfd7b('0x56')+_0x5822d7[_0xfd7b('0x4f')]+_0xfd7b('0x57');}_0x3727ff['set'](_0x33bc2a);return _0x3727ff[_0xfd7b('0x29')](new Buffer(_0x5822d7[_0xfd7b('0x4e')]));}})[_0xfd7b('0x46')](handleError(_0x3727ff,null));};
\ No newline at end of file
+var _0x8e89=['send','index','map','VoiceMailMessage','rawAttributes','fieldName','key','model','differenceBy','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','create','body','find','download','recording','ValidationError','VoiceMailMessage\x20not\x20found','attachment','attachment;\x20filename=\x22','msg_id','.wav\x22','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','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name'];(function(_0x1f8ceb,_0x4ec9bd){var _0x45ebda=function(_0x138549){while(--_0x138549){_0x1f8ceb['push'](_0x1f8ceb['shift']());}};_0x45ebda(++_0x4ec9bd);}(_0x8e89,0x8a));var _0x98e8=function(_0x32f26d,_0x2c0b5d){_0x32f26d=_0x32f26d-0x0;var _0x5d9ddc=_0x8e89[_0x32f26d];return _0x5d9ddc;};'use strict';var emlformat=require(_0x98e8('0x0'));var rimraf=require(_0x98e8('0x1'));var zipdir=require(_0x98e8('0x2'));var jsonpatch=require(_0x98e8('0x3'));var rp=require(_0x98e8('0x4'));var moment=require(_0x98e8('0x5'));var BPromise=require(_0x98e8('0x6'));var Mustache=require(_0x98e8('0x7'));var util=require(_0x98e8('0x8'));var path=require(_0x98e8('0x9'));var sox=require(_0x98e8('0xa'));var csv=require(_0x98e8('0xb'));var ejs=require(_0x98e8('0xc'));var fs=require('fs');var fs_extra=require(_0x98e8('0xd'));var _=require(_0x98e8('0xe'));var squel=require(_0x98e8('0xf'));var crypto=require(_0x98e8('0x10'));var jsforce=require(_0x98e8('0x11'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x98e8('0x12'));var Papa=require(_0x98e8('0x13'));var Redis=require(_0x98e8('0x14'));var authService=require(_0x98e8('0x15'));var qs=require(_0x98e8('0x16'));var as=require(_0x98e8('0x17'));var hardwareService=require(_0x98e8('0x18'));var logger=require(_0x98e8('0x19'))(_0x98e8('0x1a'));var utils=require(_0x98e8('0x1b'));var config=require(_0x98e8('0x1c'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x440a99,_0x14fa93){_0x14fa93=_0x14fa93||0xcc;return function(_0x2c0992){if(_0x2c0992){return _0x440a99[_0x98e8('0x1d')](_0x14fa93);}return _0x440a99[_0x98e8('0x1e')](_0x14fa93)[_0x98e8('0x1f')]();};}function respondWithResult(_0x1b2712,_0x1b326b){_0x1b326b=_0x1b326b||0xc8;return function(_0x366e0a){if(_0x366e0a){return _0x1b2712[_0x98e8('0x1e')](_0x1b326b)[_0x98e8('0x20')](_0x366e0a);}};}function respondWithFilteredResult(_0x5557e6,_0x3cdb7b){return function(_0x1668e4){if(_0x1668e4){var _0x18c7cb=typeof _0x3cdb7b[_0x98e8('0x21')]===_0x98e8('0x22')&&typeof _0x3cdb7b['limit']===_0x98e8('0x22');var _0x2873d4=_0x1668e4[_0x98e8('0x23')];var _0x595d5f=_0x18c7cb?0x0:_0x3cdb7b[_0x98e8('0x21')];var _0x3f6989=_0x18c7cb?_0x1668e4['count']:_0x3cdb7b[_0x98e8('0x21')]+_0x3cdb7b[_0x98e8('0x24')];var _0x31e8eb;if(_0x3f6989>=_0x2873d4){_0x3f6989=_0x2873d4;_0x31e8eb=0xc8;}else{_0x31e8eb=0xce;}_0x5557e6['status'](_0x31e8eb);return _0x5557e6[_0x98e8('0x25')](_0x98e8('0x26'),_0x595d5f+'-'+_0x3f6989+'/'+_0x2873d4)['json'](_0x1668e4);}return null;};}function patchUpdates(_0x3493b5){return function(_0x42842c){try{jsonpatch[_0x98e8('0x27')](_0x42842c,_0x3493b5,!![]);}catch(_0x152f59){return BPromise[_0x98e8('0x28')](_0x152f59);}return _0x42842c[_0x98e8('0x29')]();};}function saveUpdates(_0x321b37,_0x36ed1a){return function(_0xc1f9ce){if(_0xc1f9ce){return _0xc1f9ce[_0x98e8('0x2a')](_0x321b37)[_0x98e8('0x2b')](function(_0x1d021){return _0x1d021;});}return null;};}function removeEntity(_0x3fc4d2,_0x3e3854){return function(_0x1a3185){if(_0x1a3185){return _0x1a3185[_0x98e8('0x2c')]()['then'](function(){_0x3fc4d2[_0x98e8('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x102a11,_0x403bb1){return function(_0x27b017){if(!_0x27b017){_0x102a11[_0x98e8('0x1d')](0x194);}return _0x27b017;};}function handleError(_0xb2c1cb,_0x3c0f18){_0x3c0f18=_0x3c0f18||0x1f4;return function(_0x3889a9){logger[_0x98e8('0x2d')](_0x3889a9[_0x98e8('0x2e')]);if(_0x3889a9[_0x98e8('0x2f')]){delete _0x3889a9[_0x98e8('0x2f')];}_0xb2c1cb[_0x98e8('0x1e')](_0x3c0f18)[_0x98e8('0x30')](_0x3889a9);};}exports[_0x98e8('0x31')]=function(_0x52e594,_0xca0853){var _0x40c3e0={},_0xbdd9a9={},_0x467054={'count':0x0,'rows':[]};var _0x5e6fa9=_[_0x98e8('0x32')](db[_0x98e8('0x33')][_0x98e8('0x34')],function(_0x13c673){return{'name':_0x13c673[_0x98e8('0x35')],'type':_0x13c673['type'][_0x98e8('0x36')]};});_0xbdd9a9[_0x98e8('0x37')]=_[_0x98e8('0x38')](_[_0x98e8('0x32')](_0x5e6fa9,_0x98e8('0x2f')),['name']);_0xbdd9a9[_0x98e8('0x39')]=_['keys'](_0x52e594[_0x98e8('0x39')]);_0xbdd9a9[_0x98e8('0x3a')]=_[_0x98e8('0x3b')](_0xbdd9a9['model'],_0xbdd9a9[_0x98e8('0x39')]);_0x40c3e0[_0x98e8('0x3c')]=_[_0x98e8('0x3b')](_0xbdd9a9[_0x98e8('0x37')],qs[_0x98e8('0x3d')](_0x52e594[_0x98e8('0x39')][_0x98e8('0x3d')]));_0x40c3e0[_0x98e8('0x3c')]=_0x40c3e0[_0x98e8('0x3c')][_0x98e8('0x3e')]?_0x40c3e0[_0x98e8('0x3c')]:_0xbdd9a9[_0x98e8('0x37')];if(!_0x52e594[_0x98e8('0x39')][_0x98e8('0x3f')](_0x98e8('0x40'))){_0x40c3e0[_0x98e8('0x24')]=qs['limit'](_0x52e594['query'][_0x98e8('0x24')]);_0x40c3e0[_0x98e8('0x21')]=qs['offset'](_0x52e594[_0x98e8('0x39')][_0x98e8('0x21')]);}_0x40c3e0[_0x98e8('0x41')]=qs[_0x98e8('0x42')](_0x52e594[_0x98e8('0x39')]['sort']);_0x40c3e0[_0x98e8('0x43')]=qs[_0x98e8('0x3a')](_[_0x98e8('0x44')](_0x52e594[_0x98e8('0x39')],_0xbdd9a9[_0x98e8('0x3a')]),_0x5e6fa9);if(_0x52e594[_0x98e8('0x39')][_0x98e8('0x45')]){_0x40c3e0[_0x98e8('0x43')]=_[_0x98e8('0x46')](_0x40c3e0['where'],{'$or':_[_0x98e8('0x32')](_0x5e6fa9,function(_0x2a1e7f){if(_0x2a1e7f[_0x98e8('0x47')]!==_0x98e8('0x48')){var _0x196104={};_0x196104[_0x2a1e7f['name']]={'$like':'%'+_0x52e594['query'][_0x98e8('0x45')]+'%'};return _0x196104;}})});}_0x40c3e0=_['merge']({},_0x40c3e0,_0x52e594[_0x98e8('0x49')]);var _0x473e77={'where':_0x40c3e0[_0x98e8('0x43')]};return db[_0x98e8('0x33')]['count'](_0x473e77)[_0x98e8('0x2b')](function(_0x5d4691){_0x467054[_0x98e8('0x23')]=_0x5d4691;if(_0x52e594[_0x98e8('0x39')]['includeAll']){_0x40c3e0[_0x98e8('0x4a')]=[{'all':!![]}];}return db[_0x98e8('0x33')][_0x98e8('0x4b')](_0x40c3e0);})[_0x98e8('0x2b')](function(_0x568019){_0x467054[_0x98e8('0x4c')]=_0x568019;return _0x467054;})[_0x98e8('0x2b')](respondWithFilteredResult(_0xca0853,_0x40c3e0))[_0x98e8('0x4d')](handleError(_0xca0853,null));};exports[_0x98e8('0x4e')]=function(_0x18b03a,_0x19d5b8){var _0x18151a={'raw':!![],'where':{'id':_0x18b03a[_0x98e8('0x4f')]['id']}},_0x4b87da={};_0x4b87da[_0x98e8('0x37')]=_[_0x98e8('0x50')](db[_0x98e8('0x33')]['rawAttributes']);_0x4b87da['query']=_[_0x98e8('0x50')](_0x18b03a[_0x98e8('0x39')]);_0x4b87da['filters']=_['intersection'](_0x4b87da[_0x98e8('0x37')],_0x4b87da[_0x98e8('0x39')]);_0x18151a[_0x98e8('0x3c')]=_['intersection'](_0x4b87da['model'],qs['fields'](_0x18b03a[_0x98e8('0x39')][_0x98e8('0x3d')]));_0x18151a['attributes']=_0x18151a[_0x98e8('0x3c')][_0x98e8('0x3e')]?_0x18151a['attributes']:_0x4b87da[_0x98e8('0x37')];if(_0x18b03a[_0x98e8('0x39')][_0x98e8('0x51')]){_0x18151a[_0x98e8('0x4a')]=[{'all':!![]}];}_0x18151a=_['merge']({},_0x18151a,_0x18b03a['options']);return db[_0x98e8('0x33')]['find'](_0x18151a)['then'](handleEntityNotFound(_0x19d5b8,null))[_0x98e8('0x2b')](respondWithResult(_0x19d5b8,null))[_0x98e8('0x4d')](handleError(_0x19d5b8,null));};exports[_0x98e8('0x52')]=function(_0x302a73,_0x410d42){return db[_0x98e8('0x33')]['create'](_0x302a73['body'],{})[_0x98e8('0x2b')](respondWithResult(_0x410d42,0xc9))[_0x98e8('0x4d')](handleError(_0x410d42,null));};exports['update']=function(_0x108156,_0x1daf48){if(_0x108156[_0x98e8('0x53')]['id']){delete _0x108156[_0x98e8('0x53')]['id'];}return db[_0x98e8('0x33')][_0x98e8('0x54')]({'where':{'id':_0x108156[_0x98e8('0x4f')]['id']}})[_0x98e8('0x2b')](handleEntityNotFound(_0x1daf48,null))[_0x98e8('0x2b')](saveUpdates(_0x108156[_0x98e8('0x53')],null))['then'](respondWithResult(_0x1daf48,null))[_0x98e8('0x4d')](handleError(_0x1daf48,null));};exports['destroy']=function(_0x50325c,_0x5af763){return db[_0x98e8('0x33')]['find']({'where':{'id':_0x50325c[_0x98e8('0x4f')]['id']}})[_0x98e8('0x2b')](handleEntityNotFound(_0x5af763,null))[_0x98e8('0x2b')](removeEntity(_0x5af763,null))[_0x98e8('0x4d')](handleError(_0x5af763,null));};exports[_0x98e8('0x55')]=function(_0x9aa238,_0x3974ab,_0x16d645){return db['VoiceMailMessage']['find']({'where':{'id':_0x9aa238['params']['id']},'attributes':['id','recording','msg_id']})[_0x98e8('0x2b')](handleEntityNotFound(_0x3974ab,null))['then'](function(_0x19f312){if(_0x19f312){if(!_0x19f312[_0x98e8('0x56')]){throw new db['Sequelize'][(_0x98e8('0x57'))](_0x98e8('0x58'));}var _0x301851={'Content-Type':'audio/wav','Content-Disposition':_0x98e8('0x59')};if(_0x19f312['msg_id']){_0x301851['Content-Disposition']=_0x98e8('0x5a')+_0x19f312[_0x98e8('0x5b')]+_0x98e8('0x5c');}_0x3974ab['set'](_0x301851);return _0x3974ab[_0x98e8('0x30')](new Buffer(_0x19f312['recording']));}})[_0x98e8('0x4d')](handleError(_0x3974ab,null));};
\ No newline at end of file
index 14c9e7f..6f8aaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce98=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash'];(function(_0x1116ac,_0xcbe059){var _0x3e806b=function(_0x33b585){while(--_0x33b585){_0x1116ac['push'](_0x1116ac['shift']());}};_0x3e806b(++_0xcbe059);}(_0xce98,0x117));var _0x8ce9=function(_0x26db18,_0x6f46ab){_0x26db18=_0x26db18-0x0;var _0x4b7ce5=_0xce98[_0x26db18];return _0x4b7ce5;};'use strict';var _=require(_0x8ce9('0x0'));var util=require(_0x8ce9('0x1'));var logger=require(_0x8ce9('0x2'))(_0x8ce9('0x3'));var moment=require(_0x8ce9('0x4'));var BPromise=require(_0x8ce9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8ce9('0x6'));var config=require(_0x8ce9('0x7'));var attributes=require(_0x8ce9('0x8'));module[_0x8ce9('0x9')]=function(_0x38be83,_0x356645){return _0x38be83[_0x8ce9('0xa')](_0x8ce9('0xb'),attributes,{'tableName':_0x8ce9('0xc'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0x8ce9('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x5869=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api'];(function(_0x1ca93c,_0x3271ab){var _0x185169=function(_0x507763){while(--_0x507763){_0x1ca93c['push'](_0x1ca93c['shift']());}};_0x185169(++_0x3271ab);}(_0x5869,0xec));var _0x9586=function(_0x5c5cfb,_0x856fe6){_0x5c5cfb=_0x5c5cfb-0x0;var _0xb89878=_0x5869[_0x5c5cfb];return _0xb89878;};'use strict';var _=require(_0x9586('0x0'));var util=require(_0x9586('0x1'));var logger=require(_0x9586('0x2'))(_0x9586('0x3'));var moment=require('moment');var BPromise=require(_0x9586('0x4'));var rp=require(_0x9586('0x5'));var fs=require('fs');var path=require(_0x9586('0x6'));var rimraf=require(_0x9586('0x7'));var config=require(_0x9586('0x8'));var attributes=require(_0x9586('0x9'));module[_0x9586('0xa')]=function(_0x386ba2,_0x5285d5){return _0x386ba2[_0x9586('0xb')](_0x9586('0xc'),attributes,{'tableName':_0x9586('0xd'),'paranoid':![],'indexes':[{'name':_0x9586('0xe'),'fields':[_0x9586('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index dde017a..712bf4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc831=['info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xc831,0x114));var _0x1c83=function(_0x333bce,_0x53739a){_0x333bce=_0x333bce-0x0;var _0x42d14d=_0xc831[_0x333bce];return _0x42d14d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1c83('0x0'));var BPromise=require(_0x1c83('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1c83('0x2'));var db=require(_0x1c83('0x3'))['db'];var utils=require(_0x1c83('0x4'));var logger=require(_0x1c83('0x5'))(_0x1c83('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1c83('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31d7df,_0x4e7073,_0x486313){return new BPromise(function(_0x3df9f9,_0x3f7d36){return client[_0x1c83('0x8')](_0x31d7df,_0x486313)['then'](function(_0x318bc6){logger[_0x1c83('0x9')](_0x1c83('0xa'),_0x4e7073,_0x1c83('0xb'));logger[_0x1c83('0xc')](_0x1c83('0xd'),_0x4e7073,'request\x20sent',JSON[_0x1c83('0xe')](_0x318bc6));if(_0x318bc6[_0x1c83('0xf')]){if(_0x318bc6[_0x1c83('0xf')][_0x1c83('0x10')]===0x1f4){logger[_0x1c83('0xf')](_0x1c83('0xa'),_0x4e7073,_0x318bc6[_0x1c83('0xf')]['message']);return _0x3f7d36(_0x318bc6['error'][_0x1c83('0x11')]);}logger[_0x1c83('0xf')](_0x1c83('0xa'),_0x4e7073,_0x318bc6['error']['message']);return _0x3df9f9(_0x318bc6['error'][_0x1c83('0x11')]);}else{logger['info'](_0x1c83('0xa'),_0x4e7073,_0x1c83('0xb'));_0x3df9f9(_0x318bc6[_0x1c83('0x12')][_0x1c83('0x11')]);}})['catch'](function(_0x16889b){logger[_0x1c83('0xf')]('VoiceMailMessage,\x20%s,\x20%s',_0x4e7073,_0x16889b);_0x3f7d36(_0x16889b);});});}
\ No newline at end of file
+var _0xf002=['rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4fce7e,_0x311336){var _0x1255ba=function(_0x4d0392){while(--_0x4d0392){_0x4fce7e['push'](_0x4fce7e['shift']());}};_0x1255ba(++_0x311336);}(_0xf002,0xe9));var _0x2f00=function(_0x310ca4,_0x195e91){_0x310ca4=_0x310ca4-0x0;var _0x303c6f=_0xf002[_0x310ca4];return _0x303c6f;};'use strict';var _=require(_0x2f00('0x0'));var util=require(_0x2f00('0x1'));var moment=require('moment');var BPromise=require(_0x2f00('0x2'));var rs=require(_0x2f00('0x3'));var fs=require('fs');var Redis=require(_0x2f00('0x4'));var db=require(_0x2f00('0x5'))['db'];var utils=require(_0x2f00('0x6'));var logger=require('../../config/logger')(_0x2f00('0x7'));var config=require(_0x2f00('0x8'));var jayson=require(_0x2f00('0x9'));var client=jayson[_0x2f00('0xa')][_0x2f00('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27604d,_0x32a90d,_0x1ab769){return new BPromise(function(_0x38ab29,_0x6fed59){return client['request'](_0x27604d,_0x1ab769)[_0x2f00('0xc')](function(_0x15a016){logger[_0x2f00('0xd')](_0x2f00('0xe'),_0x32a90d,_0x2f00('0xf'));logger[_0x2f00('0x10')](_0x2f00('0x11'),_0x32a90d,'request\x20sent',JSON[_0x2f00('0x12')](_0x15a016));if(_0x15a016[_0x2f00('0x13')]){if(_0x15a016[_0x2f00('0x13')][_0x2f00('0x14')]===0x1f4){logger['error'](_0x2f00('0xe'),_0x32a90d,_0x15a016[_0x2f00('0x13')][_0x2f00('0x15')]);return _0x6fed59(_0x15a016['error'][_0x2f00('0x15')]);}logger[_0x2f00('0x13')](_0x2f00('0xe'),_0x32a90d,_0x15a016['error']['message']);return _0x38ab29(_0x15a016['error'][_0x2f00('0x15')]);}else{logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x32a90d,'request\x20sent');_0x38ab29(_0x15a016[_0x2f00('0x16')]['message']);}})[_0x2f00('0x17')](function(_0x54edd8){logger[_0x2f00('0x13')](_0x2f00('0xe'),_0x32a90d,_0x54edd8);_0x6fed59(_0x54edd8);});});}
\ No newline at end of file
index 1efd883..79ae04f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa333=['getSounds','post','isAuthenticated','addSound','put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','index','/:id','show','/:id/sounds'];(function(_0x52a36d,_0x32599f){var _0x5c9de6=function(_0x281028){while(--_0x281028){_0x52a36d['push'](_0x52a36d['shift']());}};_0x5c9de6(++_0x32599f);}(_0xa333,0x150));var _0x3a33=function(_0x10edf7,_0x3e9f4f){_0x10edf7=_0x10edf7-0x0;var _0x26ca4f=_0xa333[_0x10edf7];return _0x26ca4f;};'use strict';var multer=require(_0x3a33('0x0'));var util=require(_0x3a33('0x1'));var path=require(_0x3a33('0x2'));var timeout=require(_0x3a33('0x3'));var express=require('express');var router=express[_0x3a33('0x4')]();var fs_extra=require(_0x3a33('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3a33('0x6'));var config=require(_0x3a33('0x7'));var controller=require(_0x3a33('0x8'));router[_0x3a33('0x9')]('/',auth['isAuthenticated'](),controller[_0x3a33('0xa')]);router['get'](_0x3a33('0xb'),auth['isAuthenticated'](),controller[_0x3a33('0xc')]);router['get'](_0x3a33('0xd'),auth['isAuthenticated'](),controller[_0x3a33('0xe')]);router[_0x3a33('0xf')]('/',auth[_0x3a33('0x10')](),controller['create']);router['post']('/:id/sounds',auth[_0x3a33('0x10')](),controller[_0x3a33('0x11')]);router[_0x3a33('0x12')](_0x3a33('0xb'),auth[_0x3a33('0x10')](),controller[_0x3a33('0x13')]);router[_0x3a33('0x14')](_0x3a33('0xb'),auth[_0x3a33('0x10')](),controller[_0x3a33('0x15')]);router['delete'](_0x3a33('0x16'),auth['isAuthenticated'](),controller[_0x3a33('0x17')]);module[_0x3a33('0x18')]=router;
\ No newline at end of file
+var _0x32f5=['../../config/environment','get','index','isAuthenticated','show','post','create','put','/:id','update','delete','removeSound','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x26bbad,_0x7626b6){var _0x14a22d=function(_0x6dd335){while(--_0x6dd335){_0x26bbad['push'](_0x26bbad['shift']());}};_0x14a22d(++_0x7626b6);}(_0x32f5,0x124));var _0x532f=function(_0x23617a,_0x367c04){_0x23617a=_0x23617a-0x0;var _0x336859=_0x32f5[_0x23617a];return _0x336859;};'use strict';var multer=require(_0x532f('0x0'));var util=require(_0x532f('0x1'));var path=require(_0x532f('0x2'));var timeout=require(_0x532f('0x3'));var express=require(_0x532f('0x4'));var router=express[_0x532f('0x5')]();var fs_extra=require(_0x532f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x532f('0x7'));var config=require(_0x532f('0x8'));var controller=require('./voiceMusicOnHold.controller');router[_0x532f('0x9')]('/',auth['isAuthenticated'](),controller[_0x532f('0xa')]);router[_0x532f('0x9')]('/:id',auth[_0x532f('0xb')](),controller[_0x532f('0xc')]);router[_0x532f('0x9')]('/:id/sounds',auth[_0x532f('0xb')](),controller['getSounds']);router[_0x532f('0xd')]('/',auth['isAuthenticated'](),controller[_0x532f('0xe')]);router[_0x532f('0xd')]('/:id/sounds',auth['isAuthenticated'](),controller['addSound']);router[_0x532f('0xf')](_0x532f('0x10'),auth[_0x532f('0xb')](),controller[_0x532f('0x11')]);router[_0x532f('0x12')](_0x532f('0x10'),auth[_0x532f('0xb')](),controller['destroy']);router['delete']('/:id/sounds/:id2',auth[_0x532f('0xb')](),controller[_0x532f('0x13')]);module['exports']=router;
\ No newline at end of file
index ce50065..f94fadb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ac=['ENUM','custom','files','quietmp3nb','mp3','BOOLEAN','exports','STRING','name'];(function(_0x170311,_0x4d6217){var _0x2d57d4=function(_0x1bfa98){while(--_0x1bfa98){_0x170311['push'](_0x170311['shift']());}};_0x2d57d4(++_0x4d6217);}(_0x03ac,0x1a4));var _0xc03a=function(_0x3c06ab,_0x4f629c){_0x3c06ab=_0x3c06ab-0x0;var _0x5d3139=_0x03ac[_0x3c06ab];return _0x5d3139;};'use strict';var Sequelize=require('sequelize');module[_0xc03a('0x0')]={'name':{'type':Sequelize[_0xc03a('0x1')],'allowNull':![],'unique':_0xc03a('0x2')},'mode':{'type':Sequelize[_0xc03a('0x3')](_0xc03a('0x4'),_0xc03a('0x5'),'mp3nb',_0xc03a('0x6'),'quietmp3',_0xc03a('0x7')),'allowNull':!![],'defaultValue':_0xc03a('0x5')},'directory':{'type':Sequelize[_0xc03a('0x1')],'allowNull':!![]},'application':{'type':Sequelize[_0xc03a('0x1')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0xc03a('0x1')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xc03a('0x8')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x152c=['BOOLEAN','sequelize','STRING','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','mp3','alpha','TIMESTAMP'];(function(_0xab9630,_0xe19d9c){var _0x1567a3=function(_0x6d64ae){while(--_0x6d64ae){_0xab9630['push'](_0xab9630['shift']());}};_0x1567a3(++_0xe19d9c);}(_0x152c,0x9d));var _0xc152=function(_0x25679a,_0x4e0f16){_0x25679a=_0x25679a-0x0;var _0x2ca56e=_0x152c[_0x25679a];return _0x2ca56e;};'use strict';var Sequelize=require(_0xc152('0x0'));module['exports']={'name':{'type':Sequelize[_0xc152('0x1')],'allowNull':![],'unique':_0xc152('0x2')},'mode':{'type':Sequelize[_0xc152('0x3')](_0xc152('0x4'),_0xc152('0x5'),_0xc152('0x6'),_0xc152('0x7'),_0xc152('0x8'),_0xc152('0x9')),'allowNull':!![],'defaultValue':_0xc152('0x5')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0xc152('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0xc152('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0xc152('0x1')],'allowNull':!![],'defaultValue':_0xc152('0xa')},'format':{'type':Sequelize[_0xc152('0x1')],'allowNull':!![]},'stamp':{'type':_0xc152('0xb')},'defaultEntry':{'type':Sequelize[_0xc152('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 79396f7..a61c607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe06d=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','get','then','error','stack','name','send','index','map','VoiceMusicOnHold','fieldName','type','key','model','query','keys','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','rawAttributes','intersection','includeAll','include','find','catch','update','create','sequelize','transaction','body','mode','files','server/files/moh','mkdirSync','directory','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MusicOnHolds','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','createdAt','join','root','server/files/sounds/converted','basename','extname','converted_format','%s.%s','removeSound','id2','format','getSounds','length','order','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','sox','to-csv','lodash','squel','crypto','jsforce','desk.js'];(function(_0x32a9f8,_0x3ea25d){var _0x474790=function(_0x1db80e){while(--_0x1db80e){_0x32a9f8['push'](_0x32a9f8['shift']());}};_0x474790(++_0x3ea25d);}(_0xe06d,0xdb));var _0xde06=function(_0x34e69e,_0x1b37ce){_0x34e69e=_0x34e69e-0x0;var _0x4ebe93=_0xe06d[_0x34e69e];return _0x4ebe93;};'use strict';var emlformat=require(_0xde06('0x0'));var rimraf=require(_0xde06('0x1'));var zipdir=require(_0xde06('0x2'));var jsonpatch=require(_0xde06('0x3'));var rp=require('request-promise');var moment=require(_0xde06('0x4'));var BPromise=require(_0xde06('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xde06('0x6'));var csv=require(_0xde06('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xde06('0x8'));var squel=require(_0xde06('0x9'));var crypto=require(_0xde06('0xa'));var jsforce=require(_0xde06('0xb'));var deskjs=require(_0xde06('0xc'));var toCsv=require(_0xde06('0x7'));var querystring=require('querystring');var Papa=require(_0xde06('0xd'));var Redis=require(_0xde06('0xe'));var authService=require(_0xde06('0xf'));var qs=require(_0xde06('0x10'));var as=require(_0xde06('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xde06('0x12'));var utils=require('../../config/utils');var config=require(_0xde06('0x13'));var licenseUtil=require(_0xde06('0x14'));var db=require(_0xde06('0x15'))['db'];function respondWithStatusCode(_0x1187ae,_0x4d634f){_0x4d634f=_0x4d634f||0xcc;return function(_0xb9addb){if(_0xb9addb){return _0x1187ae[_0xde06('0x16')](_0x4d634f);}return _0x1187ae[_0xde06('0x17')](_0x4d634f)['end']();};}function respondWithResult(_0x277b2e,_0x51abe1){_0x51abe1=_0x51abe1||0xc8;return function(_0x1aad27){if(_0x1aad27){return _0x277b2e[_0xde06('0x17')](_0x51abe1)[_0xde06('0x18')](_0x1aad27);}};}function respondWithFilteredResult(_0x22ad2f,_0x61b6a5){return function(_0x9affd4){if(_0x9affd4){var _0x20e3f5=typeof _0x61b6a5['offset']===_0xde06('0x19')&&typeof _0x61b6a5[_0xde06('0x1a')]==='undefined';var _0x4221dc=_0x9affd4[_0xde06('0x1b')];var _0x4f69d6=_0x20e3f5?0x0:_0x61b6a5[_0xde06('0x1c')];var _0x3cc8d5=_0x20e3f5?_0x9affd4[_0xde06('0x1b')]:_0x61b6a5[_0xde06('0x1c')]+_0x61b6a5[_0xde06('0x1a')];var _0x3d2b1c;if(_0x3cc8d5>=_0x4221dc){_0x3cc8d5=_0x4221dc;_0x3d2b1c=0xc8;}else{_0x3d2b1c=0xce;}_0x22ad2f[_0xde06('0x17')](_0x3d2b1c);return _0x22ad2f[_0xde06('0x1d')](_0xde06('0x1e'),_0x4f69d6+'-'+_0x3cc8d5+'/'+_0x4221dc)[_0xde06('0x18')](_0x9affd4);}return null;};}function patchUpdates(_0x406691){return function(_0x589caf){try{jsonpatch[_0xde06('0x1f')](_0x589caf,_0x406691,!![]);}catch(_0x4bbbf2){return BPromise[_0xde06('0x20')](_0x4bbbf2);}return _0x589caf[_0xde06('0x21')]();};}function saveUpdates(_0x1435de,_0x244c30){return function(_0x5177c6){if(_0x5177c6){return _0x5177c6['update'](_0x1435de)['then'](function(_0x7b51a2){return _0x7b51a2;});}return null;};}function removeEntity(_0x4e9772,_0x27b06f){return function(_0x469a46){if(_0x469a46){return _0x469a46[_0xde06('0x22')]()['then'](function(){var _0x1749f6=_0x469a46[_0xde06('0x23')]({'plain':!![]});var _0x25d1bf='MusicOnHolds';return db['UserProfileResource'][_0xde06('0x22')]({'where':{'type':_0x25d1bf,'resourceId':_0x1749f6['id']}})[_0xde06('0x24')](function(){return _0x469a46;});})[_0xde06('0x24')](function(){_0x4e9772['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a8b22,_0x3b5f2b){return function(_0x2b61e1){if(!_0x2b61e1){_0x3a8b22[_0xde06('0x16')](0x194);}return _0x2b61e1;};}function handleError(_0x25a344,_0x4e96ca){_0x4e96ca=_0x4e96ca||0x1f4;return function(_0x20c109){logger[_0xde06('0x25')](_0x20c109[_0xde06('0x26')]);if(_0x20c109[_0xde06('0x27')]){delete _0x20c109['name'];}_0x25a344[_0xde06('0x17')](_0x4e96ca)[_0xde06('0x28')](_0x20c109);};}exports[_0xde06('0x29')]=function(_0x322509,_0x2d5e3b){var _0x41bb9f={},_0x500373={},_0x21374b={'count':0x0,'rows':[]};var _0x50368b=_[_0xde06('0x2a')](db[_0xde06('0x2b')]['rawAttributes'],function(_0x4b35fa){return{'name':_0x4b35fa[_0xde06('0x2c')],'type':_0x4b35fa[_0xde06('0x2d')][_0xde06('0x2e')]};});_0x500373[_0xde06('0x2f')]=_[_0xde06('0x2a')](_0x50368b,_0xde06('0x27'));_0x500373[_0xde06('0x30')]=_[_0xde06('0x31')](_0x322509[_0xde06('0x30')]);_0x500373['filters']=_['intersection'](_0x500373['model'],_0x500373[_0xde06('0x30')]);_0x41bb9f[_0xde06('0x32')]=_['intersection'](_0x500373[_0xde06('0x2f')],qs[_0xde06('0x33')](_0x322509[_0xde06('0x30')]['fields']));_0x41bb9f[_0xde06('0x32')]=_0x41bb9f[_0xde06('0x32')]['length']?_0x41bb9f['attributes']:_0x500373[_0xde06('0x2f')];if(!_0x322509['query'][_0xde06('0x34')](_0xde06('0x35'))){_0x41bb9f[_0xde06('0x1a')]=qs[_0xde06('0x1a')](_0x322509['query'][_0xde06('0x1a')]);_0x41bb9f['offset']=qs[_0xde06('0x1c')](_0x322509['query'][_0xde06('0x1c')]);}_0x41bb9f['order']=qs['sort'](_0x322509[_0xde06('0x30')][_0xde06('0x36')]);delete _0x322509[_0xde06('0x30')]['sort'];_0x41bb9f[_0xde06('0x37')]=qs[_0xde06('0x38')](_[_0xde06('0x39')](_0x322509[_0xde06('0x30')],_0x500373['filters']),_0x50368b);if(_0x322509[_0xde06('0x30')][_0xde06('0x3a')]){_0x41bb9f[_0xde06('0x37')]=_[_0xde06('0x3b')](_0x41bb9f['where'],{'$or':_[_0xde06('0x2a')](_0x50368b,function(_0x7deb30){if(_0x7deb30[_0xde06('0x2d')]!==_0xde06('0x3c')){var _0x4d56f9={};_0x4d56f9[_0x7deb30[_0xde06('0x27')]]={'$like':'%'+_0x322509[_0xde06('0x30')][_0xde06('0x3a')]+'%'};return _0x4d56f9;}})});}_0x41bb9f=_[_0xde06('0x3b')]({},_0x41bb9f,_0x322509[_0xde06('0x3d')]);var _0x5d8a63={'where':_0x41bb9f[_0xde06('0x37')]};return db[_0xde06('0x2b')][_0xde06('0x1b')](_0x5d8a63)[_0xde06('0x24')](function(_0x31800d){_0x21374b[_0xde06('0x1b')]=_0x31800d;if(_0x322509[_0xde06('0x30')]['includeAll']){_0x41bb9f['include']=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0xde06('0x3e')](_0x41bb9f);})[_0xde06('0x24')](function(_0x294701){_0x21374b[_0xde06('0x3f')]=_0x294701;return _0x21374b;})['then'](respondWithFilteredResult(_0x2d5e3b,_0x41bb9f))['catch'](handleError(_0x2d5e3b,null));};exports[_0xde06('0x40')]=function(_0x1c2d43,_0x5a56f7){var _0x4a5353={'raw':![],'where':{'id':_0x1c2d43[_0xde06('0x41')]['id']}},_0x2f9ce4={};_0x2f9ce4['model']=_[_0xde06('0x31')](db[_0xde06('0x2b')][_0xde06('0x42')]);_0x2f9ce4['query']=_[_0xde06('0x31')](_0x1c2d43[_0xde06('0x30')]);_0x2f9ce4[_0xde06('0x38')]=_[_0xde06('0x43')](_0x2f9ce4[_0xde06('0x2f')],_0x2f9ce4[_0xde06('0x30')]);_0x4a5353[_0xde06('0x32')]=_[_0xde06('0x43')](_0x2f9ce4[_0xde06('0x2f')],qs[_0xde06('0x33')](_0x1c2d43[_0xde06('0x30')][_0xde06('0x33')]));_0x4a5353[_0xde06('0x32')]=_0x4a5353[_0xde06('0x32')]['length']?_0x4a5353[_0xde06('0x32')]:_0x2f9ce4['model'];if(_0x1c2d43[_0xde06('0x30')][_0xde06('0x44')]){_0x4a5353[_0xde06('0x45')]=[{'all':!![]}];}_0x4a5353=_[_0xde06('0x3b')]({},_0x4a5353,_0x1c2d43[_0xde06('0x3d')]);return db[_0xde06('0x2b')][_0xde06('0x46')](_0x4a5353)[_0xde06('0x24')](handleEntityNotFound(_0x5a56f7,null))[_0xde06('0x24')](respondWithResult(_0x5a56f7,null))[_0xde06('0x47')](handleError(_0x5a56f7,null));};exports[_0xde06('0x48')]=function(_0x1af149,_0x172cfb){if(_0x1af149['body']['id']){delete _0x1af149['body']['id'];}return db[_0xde06('0x2b')][_0xde06('0x46')]({'where':{'id':_0x1af149[_0xde06('0x41')]['id']}})[_0xde06('0x24')](handleEntityNotFound(_0x172cfb,null))[_0xde06('0x24')](saveUpdates(_0x1af149['body'],null))['then'](respondWithResult(_0x172cfb,null))['catch'](handleError(_0x172cfb,null));};exports[_0xde06('0x49')]=function(_0x1dc510,_0x35df97,_0xf2e2f4){return db[_0xde06('0x4a')][_0xde06('0x4b')](function(_0x38a149){if(_0x1dc510[_0xde06('0x4c')][_0xde06('0x4d')]===_0xde06('0x4e')){_0x1dc510[_0xde06('0x4c')]['directory']=path['join'](config['root'],_0xde06('0x4f'),_0x1dc510[_0xde06('0x4c')]['name']);}return db[_0xde06('0x2b')][_0xde06('0x49')](_0x1dc510[_0xde06('0x4c')],{'transaction':_0x38a149})[_0xde06('0x24')](function(_0x1a8e41){if(_0x1dc510[_0xde06('0x4c')][_0xde06('0x4d')]===_0xde06('0x4e')){fs[_0xde06('0x50')](_0x1a8e41[_0xde06('0x51')],parseInt(_0xde06('0x52'),0x8));}var _0x363f16=_0x1dc510[_0xde06('0x53')]['get']({'plain':!![]});if(!_0x363f16)throw new Error(_0xde06('0x54'));if(_0x363f16[_0xde06('0x55')]==='user'){var _0x10d6cb=_0x1a8e41[_0xde06('0x23')]({'plain':!![]});return db['UserProfileSection'][_0xde06('0x46')]({'where':{'name':_0xde06('0x56'),'userProfileId':_0x363f16[_0xde06('0x57')]},'raw':!![]})['then'](function(_0xb10004){if(_0xb10004&&_0xb10004[_0xde06('0x58')]===0x0){return db[_0xde06('0x59')][_0xde06('0x49')]({'name':_0x10d6cb[_0xde06('0x27')],'resourceId':_0x10d6cb['id'],'type':_0xb10004['name'],'sectionId':_0xb10004['id']},{})[_0xde06('0x24')](function(){return _0x1a8e41;});}else{return _0x1a8e41;}})['catch'](function(_0x1c33ce){logger[_0xde06('0x25')](_0xde06('0x5a'),_0x1c33ce);});}return _0x1a8e41;});})[_0xde06('0x24')](respondWithResult(_0x35df97,0xc9))[_0xde06('0x47')](handleError(_0x35df97,null));};exports['destroy']=function(_0x5aae2f,_0x484135,_0x16f91b){var _0x5b2661;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x5aae2f[_0xde06('0x41')]['id']}})[_0xde06('0x24')](function(_0x13e1b8){if(_0x13e1b8){return db['sequelize']['transaction'](function(_0x2cb68a){return _0x13e1b8[_0xde06('0x22')]({'transaction':_0x2cb68a,'raw':!![]})[_0xde06('0x24')](function(_0x104046){if(_0x104046['directory']){fs[_0xde06('0x5b')](_0x104046[_0xde06('0x51')])[_0xde06('0x5c')](function(_0x533f5f){fs[_0xde06('0x5d')](path['join'](_0x104046[_0xde06('0x51')],_0x533f5f));});fs[_0xde06('0x5e')](_0x104046[_0xde06('0x51')]);}return _0x104046;});})[_0xde06('0x47')](function(_0x18eed7){throw new db[(_0xde06('0x5f'))][(_0xde06('0x60'))](_0x18eed7[_0xde06('0x61')]);});}})[_0xde06('0x24')](handleEntityNotFound(_0x484135,null))[_0xde06('0x24')](removeEntity(_0x484135,null))[_0xde06('0x47')](handleError(_0x484135,null));};exports[_0xde06('0x62')]=function(_0x924f30,_0xa9a1c3,_0x3053ff){return db[_0xde06('0x4a')][_0xde06('0x4b')](function(_0x5ef6cb){var _0x4d34fa;return db['VoiceMusicOnHold'][_0xde06('0x46')]({'where':{'id':_0x924f30[_0xde06('0x41')]['id']}})[_0xde06('0x24')](function(_0x181a8f){if(_0x181a8f){_0x4d34fa=_0x181a8f;return _0x181a8f[_0xde06('0x62')](_0x924f30['body']['id'],{'transaction':_0x5ef6cb});}})[_0xde06('0x24')](function(_0x3ea3b6){if(_0x3ea3b6){return db[_0xde06('0x63')][_0xde06('0x64')]({'where':{'id':_0x924f30[_0xde06('0x4c')]['id']},'attributes':['id','name',_0xde06('0x65'),'converted_format',_0xde06('0x66')],'raw':!![]});}})[_0xde06('0x24')](function(_0x3b761d){if(_0x3b761d){var _0x1f919f=path[_0xde06('0x67')](config[_0xde06('0x68')],_0xde06('0x69'),util['format']('%s.%s',path[_0xde06('0x6a')](_0x3b761d['save_name'],path[_0xde06('0x6b')](_0x3b761d[_0xde06('0x65')])),_0x3b761d[_0xde06('0x6c')]));var _0x2aa5f0=path[_0xde06('0x67')](config[_0xde06('0x68')],_0xde06('0x4f'),_0x4d34fa['name'],util['format'](_0xde06('0x6d'),_0x3b761d[_0xde06('0x27')],_0x3b761d[_0xde06('0x6c')]));fs['symlinkSync'](_0x1f919f,_0x2aa5f0);return _0x3b761d;}})[_0xde06('0x47')](function(_0x32e114){throw new db['Sequelize'][(_0xde06('0x60'))](_0x32e114[_0xde06('0x61')]);});})[_0xde06('0x24')](handleEntityNotFound(_0xa9a1c3,null))['then'](respondWithResult(_0xa9a1c3,0xc9))[_0xde06('0x47')](handleError(_0xa9a1c3,null));};exports[_0xde06('0x6e')]=function(_0x160746,_0x260ea7,_0x179142){return db[_0xde06('0x4a')][_0xde06('0x4b')](function(_0x5dda23){var _0x34c9bc;return db[_0xde06('0x2b')]['findOne']({'where':{'id':_0x160746[_0xde06('0x41')]['id']}})[_0xde06('0x24')](handleEntityNotFound(_0x260ea7,null))[_0xde06('0x24')](function(_0x51f491){if(_0x51f491){_0x34c9bc=_0x51f491;return _0x51f491['removeSound'](_0x160746[_0xde06('0x41')][_0xde06('0x6f')]);}})[_0xde06('0x24')](function(_0x5edacc){if(_0x5edacc){return db[_0xde06('0x63')][_0xde06('0x64')]({'where':{'id':_0x160746[_0xde06('0x41')][_0xde06('0x6f')]},'attributes':['id',_0xde06('0x27'),_0xde06('0x65'),_0xde06('0x6c'),_0xde06('0x66')],'raw':!![]});}})[_0xde06('0x24')](function(_0x8c33b8){if(_0x8c33b8){fs[_0xde06('0x5d')](path[_0xde06('0x67')](_0x34c9bc[_0xde06('0x51')],util[_0xde06('0x70')](_0xde06('0x6d'),_0x8c33b8[_0xde06('0x27')],_0x8c33b8[_0xde06('0x6c')])));return _0x8c33b8;}})[_0xde06('0x47')](function(_0xd42425){throw new db[(_0xde06('0x5f'))][(_0xde06('0x60'))](_0xd42425[_0xde06('0x61')]);});})[_0xde06('0x24')](handleEntityNotFound(_0x260ea7,null))[_0xde06('0x24')](respondWithStatusCode(_0x260ea7,0xcc))[_0xde06('0x47')](handleError(_0x260ea7,null));};exports[_0xde06('0x71')]=function(_0x3ffa65,_0x11ee01,_0x4582ce){var _0x49f873={};var _0x5907c0={};var _0x27f6d9;var _0x1724f3;return db[_0xde06('0x2b')][_0xde06('0x64')]({'where':{'id':_0x3ffa65[_0xde06('0x41')]['id']}})[_0xde06('0x24')](handleEntityNotFound(_0x11ee01,null))[_0xde06('0x24')](function(_0x42ef58){if(_0x42ef58){_0x27f6d9=_0x42ef58;_0x5907c0['model']=_['keys'](db[_0xde06('0x63')]['rawAttributes']);_0x5907c0['query']=_[_0xde06('0x31')](_0x3ffa65[_0xde06('0x30')]);_0x5907c0['filters']=_[_0xde06('0x43')](_0x5907c0[_0xde06('0x2f')],_0x5907c0[_0xde06('0x30')]);_0x49f873[_0xde06('0x32')]=_[_0xde06('0x43')](_0x5907c0[_0xde06('0x2f')],qs[_0xde06('0x33')](_0x3ffa65[_0xde06('0x30')][_0xde06('0x33')]));_0x49f873[_0xde06('0x32')]=_0x49f873['attributes'][_0xde06('0x72')]?_0x49f873[_0xde06('0x32')]:_0x5907c0[_0xde06('0x2f')];_0x49f873[_0xde06('0x73')]=qs[_0xde06('0x36')](_0x3ffa65[_0xde06('0x30')][_0xde06('0x36')]);_0x49f873[_0xde06('0x37')]=qs['filters'](_[_0xde06('0x39')](_0x3ffa65[_0xde06('0x30')],_0x5907c0[_0xde06('0x38')]));if(_0x3ffa65['query']['filter']){_0x49f873[_0xde06('0x37')]=_['merge'](_0x49f873[_0xde06('0x37')],{'$or':_['map'](_0x49f873[_0xde06('0x32')],function(_0x23f0c5){var _0x4d4367={};_0x4d4367[_0x23f0c5]={'$like':'%'+_0x3ffa65[_0xde06('0x30')][_0xde06('0x3a')]+'%'};return _0x4d4367;})});}_0x49f873=_[_0xde06('0x3b')]({},_0x49f873,_0x3ffa65[_0xde06('0x3d')]);return _0x27f6d9[_0xde06('0x71')](_0x49f873);}})['then'](function(_0x3e12cf){if(_0x3e12cf){_0x1724f3=_0x3e12cf[_0xde06('0x72')];if(!_0x3ffa65[_0xde06('0x30')][_0xde06('0x34')](_0xde06('0x35'))){_0x49f873[_0xde06('0x1a')]=qs['limit'](_0x3ffa65[_0xde06('0x30')][_0xde06('0x1a')]);_0x49f873[_0xde06('0x1c')]=qs[_0xde06('0x1c')](_0x3ffa65['query']['offset']);}return _0x27f6d9[_0xde06('0x71')](_0x49f873);}})['then'](function(_0x4a2782){if(_0x4a2782){return _0x4a2782?{'count':_0x1724f3,'rows':_0x4a2782}:null;}})[_0xde06('0x24')](respondWithResult(_0x11ee01,null))[_0xde06('0x47')](handleError(_0x11ee01,null));};
\ No newline at end of file
+var _0x88e0=['message','addSound','Sound','findOne','save_name','converted_format','server/files/sounds/converted','format','%s.%s','basename','extname','server/files/moh','symlinkSync','ValidationError','removeSound','id2','createdAt','getSounds','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','limit','set','Content-Range','apply','save','update','then','UserProfileResource','destroy','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','offset','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','catch','body','find','create','sequelize','mode','files','directory','root','mkdirSync','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','MusicOnHolds','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','transaction','forEach','unlinkSync','join','Sequelize'];(function(_0x14e27a,_0x3b4136){var _0x288688=function(_0x3d7ab1){while(--_0x3d7ab1){_0x14e27a['push'](_0x14e27a['shift']());}};_0x288688(++_0x3b4136);}(_0x88e0,0x169));var _0x088e=function(_0x3394c0,_0x5c46bf){_0x3394c0=_0x3394c0-0x0;var _0x469d0c=_0x88e0[_0x3394c0];return _0x469d0c;};'use strict';var emlformat=require(_0x088e('0x0'));var rimraf=require(_0x088e('0x1'));var zipdir=require(_0x088e('0x2'));var jsonpatch=require(_0x088e('0x3'));var rp=require('request-promise');var moment=require(_0x088e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x088e('0x5'));var util=require(_0x088e('0x6'));var path=require('path');var sox=require(_0x088e('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x088e('0x8'));var _=require(_0x088e('0x9'));var squel=require('squel');var crypto=require(_0x088e('0xa'));var jsforce=require(_0x088e('0xb'));var deskjs=require(_0x088e('0xc'));var toCsv=require(_0x088e('0xd'));var querystring=require('querystring');var Papa=require(_0x088e('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x088e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x088e('0x10'));var logger=require(_0x088e('0x11'))(_0x088e('0x12'));var utils=require(_0x088e('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x088e('0x14'));var db=require(_0x088e('0x15'))['db'];function respondWithStatusCode(_0x1817ca,_0x4d1f4b){_0x4d1f4b=_0x4d1f4b||0xcc;return function(_0x40953b){if(_0x40953b){return _0x1817ca[_0x088e('0x16')](_0x4d1f4b);}return _0x1817ca[_0x088e('0x17')](_0x4d1f4b)[_0x088e('0x18')]();};}function respondWithResult(_0x521c5b,_0x34bbd3){_0x34bbd3=_0x34bbd3||0xc8;return function(_0x3cf820){if(_0x3cf820){return _0x521c5b['status'](_0x34bbd3)[_0x088e('0x19')](_0x3cf820);}};}function respondWithFilteredResult(_0x109008,_0x50bc05){return function(_0x29b367){if(_0x29b367){var _0x27b373=typeof _0x50bc05['offset']==='undefined'&&typeof _0x50bc05['limit']===_0x088e('0x1a');var _0x3ead57=_0x29b367['count'];var _0xf23761=_0x27b373?0x0:_0x50bc05['offset'];var _0x4bde0a=_0x27b373?_0x29b367[_0x088e('0x1b')]:_0x50bc05['offset']+_0x50bc05[_0x088e('0x1c')];var _0xcaf467;if(_0x4bde0a>=_0x3ead57){_0x4bde0a=_0x3ead57;_0xcaf467=0xc8;}else{_0xcaf467=0xce;}_0x109008[_0x088e('0x17')](_0xcaf467);return _0x109008[_0x088e('0x1d')](_0x088e('0x1e'),_0xf23761+'-'+_0x4bde0a+'/'+_0x3ead57)[_0x088e('0x19')](_0x29b367);}return null;};}function patchUpdates(_0x4aa39f){return function(_0x413119){try{jsonpatch[_0x088e('0x1f')](_0x413119,_0x4aa39f,!![]);}catch(_0x81b541){return BPromise['reject'](_0x81b541);}return _0x413119[_0x088e('0x20')]();};}function saveUpdates(_0xc5d8a4,_0xef3e5a){return function(_0x43f259){if(_0x43f259){return _0x43f259[_0x088e('0x21')](_0xc5d8a4)[_0x088e('0x22')](function(_0x1d7f75){return _0x1d7f75;});}return null;};}function removeEntity(_0x17d3ed,_0x351d81){return function(_0x320f98){if(_0x320f98){return _0x320f98['destroy']()[_0x088e('0x22')](function(){var _0x4b137e=_0x320f98['get']({'plain':!![]});var _0x216065='MusicOnHolds';return db[_0x088e('0x23')][_0x088e('0x24')]({'where':{'type':_0x216065,'resourceId':_0x4b137e['id']}})['then'](function(){return _0x320f98;});})['then'](function(){_0x17d3ed['status'](0xcc)[_0x088e('0x18')]();});}};}function handleEntityNotFound(_0x2390f8,_0x18e05b){return function(_0x5bbe29){if(!_0x5bbe29){_0x2390f8[_0x088e('0x16')](0x194);}return _0x5bbe29;};}function handleError(_0xbc3278,_0x1f49f2){_0x1f49f2=_0x1f49f2||0x1f4;return function(_0xc881f0){logger[_0x088e('0x25')](_0xc881f0[_0x088e('0x26')]);if(_0xc881f0[_0x088e('0x27')]){delete _0xc881f0[_0x088e('0x27')];}_0xbc3278[_0x088e('0x17')](_0x1f49f2)[_0x088e('0x28')](_0xc881f0);};}exports[_0x088e('0x29')]=function(_0x54557,_0x5575f8){var _0x254ad2={},_0x25659e={},_0x440dfe={'count':0x0,'rows':[]};var _0x59cd8f=_[_0x088e('0x2a')](db[_0x088e('0x2b')][_0x088e('0x2c')],function(_0x4360c5){return{'name':_0x4360c5['fieldName'],'type':_0x4360c5['type'][_0x088e('0x2d')]};});_0x25659e['model']=_[_0x088e('0x2a')](_0x59cd8f,'name');_0x25659e[_0x088e('0x2e')]=_[_0x088e('0x2f')](_0x54557[_0x088e('0x2e')]);_0x25659e[_0x088e('0x30')]=_[_0x088e('0x31')](_0x25659e[_0x088e('0x32')],_0x25659e[_0x088e('0x2e')]);_0x254ad2[_0x088e('0x33')]=_[_0x088e('0x31')](_0x25659e[_0x088e('0x32')],qs[_0x088e('0x34')](_0x54557[_0x088e('0x2e')][_0x088e('0x34')]));_0x254ad2[_0x088e('0x33')]=_0x254ad2['attributes'][_0x088e('0x35')]?_0x254ad2[_0x088e('0x33')]:_0x25659e[_0x088e('0x32')];if(!_0x54557['query']['hasOwnProperty'](_0x088e('0x36'))){_0x254ad2['limit']=qs[_0x088e('0x1c')](_0x54557[_0x088e('0x2e')][_0x088e('0x1c')]);_0x254ad2[_0x088e('0x37')]=qs[_0x088e('0x37')](_0x54557['query'][_0x088e('0x37')]);}_0x254ad2[_0x088e('0x38')]=qs['sort'](_0x54557['query'][_0x088e('0x39')]);delete _0x54557[_0x088e('0x2e')][_0x088e('0x39')];_0x254ad2[_0x088e('0x3a')]=qs[_0x088e('0x30')](_[_0x088e('0x3b')](_0x54557['query'],_0x25659e['filters']),_0x59cd8f);if(_0x54557[_0x088e('0x2e')]['filter']){_0x254ad2[_0x088e('0x3a')]=_[_0x088e('0x3c')](_0x254ad2[_0x088e('0x3a')],{'$or':_[_0x088e('0x2a')](_0x59cd8f,function(_0x2b937e){if(_0x2b937e[_0x088e('0x3d')]!==_0x088e('0x3e')){var _0x3d2f8d={};_0x3d2f8d[_0x2b937e[_0x088e('0x27')]]={'$like':'%'+_0x54557[_0x088e('0x2e')][_0x088e('0x3f')]+'%'};return _0x3d2f8d;}})});}_0x254ad2=_['merge']({},_0x254ad2,_0x54557[_0x088e('0x40')]);var _0x43561c={'where':_0x254ad2[_0x088e('0x3a')]};return db[_0x088e('0x2b')][_0x088e('0x1b')](_0x43561c)[_0x088e('0x22')](function(_0x277409){_0x440dfe[_0x088e('0x1b')]=_0x277409;if(_0x54557[_0x088e('0x2e')][_0x088e('0x41')]){_0x254ad2[_0x088e('0x42')]=[{'all':!![]}];}return db[_0x088e('0x2b')][_0x088e('0x43')](_0x254ad2);})[_0x088e('0x22')](function(_0x2e8828){_0x440dfe[_0x088e('0x44')]=_0x2e8828;return _0x440dfe;})['then'](respondWithFilteredResult(_0x5575f8,_0x254ad2))['catch'](handleError(_0x5575f8,null));};exports[_0x088e('0x45')]=function(_0x471355,_0x4decae){var _0x32234e={'raw':![],'where':{'id':_0x471355[_0x088e('0x46')]['id']}},_0xe75d95={};_0xe75d95['model']=_[_0x088e('0x2f')](db['VoiceMusicOnHold']['rawAttributes']);_0xe75d95[_0x088e('0x2e')]=_[_0x088e('0x2f')](_0x471355[_0x088e('0x2e')]);_0xe75d95[_0x088e('0x30')]=_[_0x088e('0x31')](_0xe75d95[_0x088e('0x32')],_0xe75d95[_0x088e('0x2e')]);_0x32234e['attributes']=_['intersection'](_0xe75d95['model'],qs[_0x088e('0x34')](_0x471355[_0x088e('0x2e')][_0x088e('0x34')]));_0x32234e[_0x088e('0x33')]=_0x32234e[_0x088e('0x33')]['length']?_0x32234e['attributes']:_0xe75d95['model'];if(_0x471355[_0x088e('0x2e')]['includeAll']){_0x32234e['include']=[{'all':!![]}];}_0x32234e=_[_0x088e('0x3c')]({},_0x32234e,_0x471355[_0x088e('0x40')]);return db[_0x088e('0x2b')]['find'](_0x32234e)['then'](handleEntityNotFound(_0x4decae,null))[_0x088e('0x22')](respondWithResult(_0x4decae,null))[_0x088e('0x47')](handleError(_0x4decae,null));};exports[_0x088e('0x21')]=function(_0xf2b36a,_0x33251a){if(_0xf2b36a[_0x088e('0x48')]['id']){delete _0xf2b36a[_0x088e('0x48')]['id'];}return db[_0x088e('0x2b')][_0x088e('0x49')]({'where':{'id':_0xf2b36a[_0x088e('0x46')]['id']}})['then'](handleEntityNotFound(_0x33251a,null))[_0x088e('0x22')](saveUpdates(_0xf2b36a[_0x088e('0x48')],null))[_0x088e('0x22')](respondWithResult(_0x33251a,null))[_0x088e('0x47')](handleError(_0x33251a,null));};exports[_0x088e('0x4a')]=function(_0x42da53,_0x52cdb2,_0x15961c){return db[_0x088e('0x4b')]['transaction'](function(_0x30dc03){if(_0x42da53[_0x088e('0x48')][_0x088e('0x4c')]===_0x088e('0x4d')){_0x42da53[_0x088e('0x48')][_0x088e('0x4e')]=path['join'](config[_0x088e('0x4f')],'server/files/moh',_0x42da53[_0x088e('0x48')][_0x088e('0x27')]);}return db[_0x088e('0x2b')][_0x088e('0x4a')](_0x42da53[_0x088e('0x48')],{'transaction':_0x30dc03})['then'](function(_0x3ba490){if(_0x42da53[_0x088e('0x48')]['mode']===_0x088e('0x4d')){fs[_0x088e('0x50')](_0x3ba490[_0x088e('0x4e')],parseInt('0777',0x8));}var _0x5ab2e9=_0x42da53[_0x088e('0x51')]['get']({'plain':!![]});if(!_0x5ab2e9)throw new Error(_0x088e('0x52'));if(_0x5ab2e9[_0x088e('0x53')]===_0x088e('0x51')){var _0x1fa916=_0x3ba490[_0x088e('0x54')]({'plain':!![]});return db[_0x088e('0x55')][_0x088e('0x49')]({'where':{'name':_0x088e('0x56'),'userProfileId':_0x5ab2e9[_0x088e('0x57')]},'raw':!![]})['then'](function(_0x304842){if(_0x304842&&_0x304842[_0x088e('0x58')]===0x0){return db[_0x088e('0x23')][_0x088e('0x4a')]({'name':_0x1fa916[_0x088e('0x27')],'resourceId':_0x1fa916['id'],'type':_0x304842[_0x088e('0x27')],'sectionId':_0x304842['id']},{})[_0x088e('0x22')](function(){return _0x3ba490;});}else{return _0x3ba490;}})[_0x088e('0x47')](function(_0x45433e){logger[_0x088e('0x25')](_0x088e('0x59'),_0x45433e);});}return _0x3ba490;});})[_0x088e('0x22')](respondWithResult(_0x52cdb2,0xc9))[_0x088e('0x47')](handleError(_0x52cdb2,null));};exports[_0x088e('0x24')]=function(_0x12c03f,_0x363ba0,_0x35e572){var _0x1f88b4;return db[_0x088e('0x2b')]['find']({'where':{'id':_0x12c03f[_0x088e('0x46')]['id']}})[_0x088e('0x22')](function(_0x3476a4){if(_0x3476a4){return db[_0x088e('0x4b')][_0x088e('0x5a')](function(_0x2d3731){return _0x3476a4[_0x088e('0x24')]({'transaction':_0x2d3731,'raw':!![]})[_0x088e('0x22')](function(_0x3c7eab){if(_0x3c7eab['directory']){fs['readdirSync'](_0x3c7eab['directory'])[_0x088e('0x5b')](function(_0x55f5d6){fs[_0x088e('0x5c')](path[_0x088e('0x5d')](_0x3c7eab[_0x088e('0x4e')],_0x55f5d6));});fs['rmdirSync'](_0x3c7eab[_0x088e('0x4e')]);}return _0x3c7eab;});})['catch'](function(_0x138c4f){throw new db[(_0x088e('0x5e'))]['ValidationError'](_0x138c4f[_0x088e('0x5f')]);});}})[_0x088e('0x22')](handleEntityNotFound(_0x363ba0,null))['then'](removeEntity(_0x363ba0,null))[_0x088e('0x47')](handleError(_0x363ba0,null));};exports['addSound']=function(_0x4469e5,_0x3d9081,_0x8bd92d){return db['sequelize'][_0x088e('0x5a')](function(_0x379da6){var _0x40034d;return db['VoiceMusicOnHold'][_0x088e('0x49')]({'where':{'id':_0x4469e5[_0x088e('0x46')]['id']}})['then'](function(_0x3c6a67){if(_0x3c6a67){_0x40034d=_0x3c6a67;return _0x3c6a67[_0x088e('0x60')](_0x4469e5[_0x088e('0x48')]['id'],{'transaction':_0x379da6});}})['then'](function(_0x3f0d28){if(_0x3f0d28){return db[_0x088e('0x61')][_0x088e('0x62')]({'where':{'id':_0x4469e5[_0x088e('0x48')]['id']},'attributes':['id',_0x088e('0x27'),_0x088e('0x63'),_0x088e('0x64'),'createdAt'],'raw':!![]});}})[_0x088e('0x22')](function(_0x467c29){if(_0x467c29){var _0x4f15ce=path[_0x088e('0x5d')](config[_0x088e('0x4f')],_0x088e('0x65'),util[_0x088e('0x66')](_0x088e('0x67'),path[_0x088e('0x68')](_0x467c29[_0x088e('0x63')],path[_0x088e('0x69')](_0x467c29[_0x088e('0x63')])),_0x467c29[_0x088e('0x64')]));var _0x4b16ed=path[_0x088e('0x5d')](config['root'],_0x088e('0x6a'),_0x40034d[_0x088e('0x27')],util[_0x088e('0x66')](_0x088e('0x67'),_0x467c29[_0x088e('0x27')],_0x467c29['converted_format']));fs[_0x088e('0x6b')](_0x4f15ce,_0x4b16ed);return _0x467c29;}})['catch'](function(_0xedfd23){throw new db[(_0x088e('0x5e'))][(_0x088e('0x6c'))](_0xedfd23['message']);});})['then'](handleEntityNotFound(_0x3d9081,null))['then'](respondWithResult(_0x3d9081,0xc9))[_0x088e('0x47')](handleError(_0x3d9081,null));};exports['removeSound']=function(_0x2c0011,_0x46abe2,_0xe4f56d){return db[_0x088e('0x4b')][_0x088e('0x5a')](function(_0x2dd71c){var _0xbb3352;return db['VoiceMusicOnHold'][_0x088e('0x62')]({'where':{'id':_0x2c0011['params']['id']}})[_0x088e('0x22')](handleEntityNotFound(_0x46abe2,null))[_0x088e('0x22')](function(_0x41fb0a){if(_0x41fb0a){_0xbb3352=_0x41fb0a;return _0x41fb0a[_0x088e('0x6d')](_0x2c0011[_0x088e('0x46')][_0x088e('0x6e')]);}})[_0x088e('0x22')](function(_0x4b17f4){if(_0x4b17f4){return db[_0x088e('0x61')][_0x088e('0x62')]({'where':{'id':_0x2c0011[_0x088e('0x46')][_0x088e('0x6e')]},'attributes':['id',_0x088e('0x27'),_0x088e('0x63'),_0x088e('0x64'),_0x088e('0x6f')],'raw':!![]});}})[_0x088e('0x22')](function(_0x445cd1){if(_0x445cd1){fs['unlinkSync'](path[_0x088e('0x5d')](_0xbb3352['directory'],util['format']('%s.%s',_0x445cd1[_0x088e('0x27')],_0x445cd1[_0x088e('0x64')])));return _0x445cd1;}})['catch'](function(_0xc90582){throw new db[(_0x088e('0x5e'))][(_0x088e('0x6c'))](_0xc90582[_0x088e('0x5f')]);});})[_0x088e('0x22')](handleEntityNotFound(_0x46abe2,null))[_0x088e('0x22')](respondWithStatusCode(_0x46abe2,0xcc))[_0x088e('0x47')](handleError(_0x46abe2,null));};exports[_0x088e('0x70')]=function(_0x60dd7e,_0xe66528,_0x3135a7){var _0x54dbd9={};var _0x2a9420={};var _0x18f980;var _0x416f06;return db['VoiceMusicOnHold'][_0x088e('0x62')]({'where':{'id':_0x60dd7e[_0x088e('0x46')]['id']}})['then'](handleEntityNotFound(_0xe66528,null))[_0x088e('0x22')](function(_0x2f5afc){if(_0x2f5afc){_0x18f980=_0x2f5afc;_0x2a9420[_0x088e('0x32')]=_[_0x088e('0x2f')](db[_0x088e('0x61')]['rawAttributes']);_0x2a9420[_0x088e('0x2e')]=_['keys'](_0x60dd7e[_0x088e('0x2e')]);_0x2a9420[_0x088e('0x30')]=_[_0x088e('0x31')](_0x2a9420['model'],_0x2a9420[_0x088e('0x2e')]);_0x54dbd9[_0x088e('0x33')]=_[_0x088e('0x31')](_0x2a9420[_0x088e('0x32')],qs['fields'](_0x60dd7e[_0x088e('0x2e')][_0x088e('0x34')]));_0x54dbd9[_0x088e('0x33')]=_0x54dbd9['attributes'][_0x088e('0x35')]?_0x54dbd9[_0x088e('0x33')]:_0x2a9420[_0x088e('0x32')];_0x54dbd9['order']=qs[_0x088e('0x39')](_0x60dd7e[_0x088e('0x2e')][_0x088e('0x39')]);_0x54dbd9[_0x088e('0x3a')]=qs['filters'](_[_0x088e('0x3b')](_0x60dd7e[_0x088e('0x2e')],_0x2a9420['filters']));if(_0x60dd7e[_0x088e('0x2e')]['filter']){_0x54dbd9[_0x088e('0x3a')]=_[_0x088e('0x3c')](_0x54dbd9[_0x088e('0x3a')],{'$or':_[_0x088e('0x2a')](_0x54dbd9['attributes'],function(_0x3475df){var _0x42045b={};_0x42045b[_0x3475df]={'$like':'%'+_0x60dd7e[_0x088e('0x2e')][_0x088e('0x3f')]+'%'};return _0x42045b;})});}_0x54dbd9=_['merge']({},_0x54dbd9,_0x60dd7e[_0x088e('0x40')]);return _0x18f980[_0x088e('0x70')](_0x54dbd9);}})[_0x088e('0x22')](function(_0x4704ec){if(_0x4704ec){_0x416f06=_0x4704ec[_0x088e('0x35')];if(!_0x60dd7e['query'][_0x088e('0x71')]('nolimit')){_0x54dbd9[_0x088e('0x1c')]=qs[_0x088e('0x1c')](_0x60dd7e[_0x088e('0x2e')][_0x088e('0x1c')]);_0x54dbd9['offset']=qs[_0x088e('0x37')](_0x60dd7e[_0x088e('0x2e')][_0x088e('0x37')]);}return _0x18f980[_0x088e('0x70')](_0x54dbd9);}})['then'](function(_0x497080){if(_0x497080){return _0x497080?{'count':_0x416f06,'rows':_0x497080}:null;}})[_0x088e('0x22')](respondWithResult(_0xe66528,null))[_0x088e('0x47')](handleError(_0xe66528,null));};
\ No newline at end of file
index 3fe1184..666dc40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14de=['util','api','moment','bluebird','rimraf','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash'];(function(_0x4349c8,_0x23ff6c){var _0x45cb0b=function(_0x23f92a){while(--_0x23f92a){_0x4349c8['push'](_0x4349c8['shift']());}};_0x45cb0b(++_0x23ff6c);}(_0x14de,0x18b));var _0xe14d=function(_0x3c751e,_0x2cd980){_0x3c751e=_0x3c751e-0x0;var _0x392fee=_0x14de[_0x3c751e];return _0x392fee;};'use strict';var _=require(_0xe14d('0x0'));var util=require(_0xe14d('0x1'));var logger=require('../../config/logger')(_0xe14d('0x2'));var moment=require(_0xe14d('0x3'));var BPromise=require(_0xe14d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe14d('0x5'));var config=require('../../config/environment');var attributes=require(_0xe14d('0x6'));module[_0xe14d('0x7')]=function(_0x1fc20c,_0x130e7a){return _0x1fc20c[_0xe14d('0x8')](_0xe14d('0x9'),attributes,{'tableName':_0xe14d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x508a=['util','../../config/logger','moment','path','rimraf','../../config/environment','define','lodash'];(function(_0x584da8,_0x4944c4){var _0x4da924=function(_0x348f16){while(--_0x348f16){_0x584da8['push'](_0x584da8['shift']());}};_0x4da924(++_0x4944c4);}(_0x508a,0x1b7));var _0xa508=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x508a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa508('0x0'));var util=require(_0xa508('0x1'));var logger=require(_0xa508('0x2'))('api');var moment=require(_0xa508('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa508('0x4'));var rimraf=require(_0xa508('0x5'));var config=require(_0xa508('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module['exports']=function(_0x147a54,_0x5239cb){return _0x147a54[_0xa508('0x7')]('VoiceMusicOnHold',attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9780bb8..302ea9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0x53ac1e,_0x3860bf){var _0x1a48be=function(_0x7e4645){while(--_0x7e4645){_0x53ac1e['push'](_0x53ac1e['shift']());}};_0x1a48be(++_0x3860bf);}(_0xedd9,0xfc));var _0x9edd=function(_0x28db37,_0x539b92){_0x28db37=_0x28db37-0x0;var _0x562a4d=_0xedd9[_0x28db37];return _0x562a4d;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
+var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x87d774,_0x1a110c){var _0x1a8372=function(_0x5641e8){while(--_0x5641e8){_0x87d774['push'](_0x87d774['shift']());}};_0x1a8372(++_0x1a110c);}(_0x34e8,0x12c));var _0x834e=function(_0x412e34,_0x20019b){_0x412e34=_0x412e34-0x0;var _0x15679e=_0x34e8[_0x412e34];return _0x15679e;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
index ac89387..8aab2a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd24d=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','/:id','show','/:id/users','/:id/teams','getTeams','post','create','addAgents','addTeams','put','update','delete','removeAgents','multer','util','express','Router'];(function(_0x5b26be,_0x24893b){var _0x4c02c9=function(_0x17dac2){while(--_0x17dac2){_0x5b26be['push'](_0x5b26be['shift']());}};_0x4c02c9(++_0x24893b);}(_0xd24d,0x168));var _0xdd24=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd24d[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xdd24('0x0'));var util=require(_0xdd24('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdd24('0x2'));var router=express[_0xdd24('0x3')]();var fs_extra=require(_0xdd24('0x4'));var auth=require(_0xdd24('0x5'));var interaction=require(_0xdd24('0x6'));var config=require(_0xdd24('0x7'));var controller=require('./voicePrefix.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xdd24('0x8')]);router[_0xdd24('0x9')](_0xdd24('0xa'),auth[_0xdd24('0xb')](),controller[_0xdd24('0xc')]);router[_0xdd24('0x9')](_0xdd24('0xd'),auth['isAuthenticated'](),controller[_0xdd24('0xe')]);router[_0xdd24('0x9')](_0xdd24('0xf'),auth[_0xdd24('0xb')](),controller['getAgents']);router['get'](_0xdd24('0x10'),auth[_0xdd24('0xb')](),controller[_0xdd24('0x11')]);router[_0xdd24('0x12')]('/',auth['isAuthenticated'](),controller[_0xdd24('0x13')]);router[_0xdd24('0x12')]('/:id/users',auth[_0xdd24('0xb')](),controller[_0xdd24('0x14')]);router[_0xdd24('0x12')](_0xdd24('0x10'),auth['isAuthenticated'](),controller[_0xdd24('0x15')]);router[_0xdd24('0x16')](_0xdd24('0xd'),auth[_0xdd24('0xb')](),controller[_0xdd24('0x17')]);router[_0xdd24('0x18')](_0xdd24('0xd'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0xdd24('0xf'),auth['isAuthenticated'](),controller[_0xdd24('0x19')]);router['delete']('/:id/teams',auth[_0xdd24('0xb')](),controller['removeTeams']);module['exports']=router;
\ No newline at end of file
+var _0x5309=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','/:id/users','/:id/teams','getTeams','post','create','addAgents','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x90a39a,_0x32020d){var _0x2b62f7=function(_0x6841cc){while(--_0x6841cc){_0x90a39a['push'](_0x90a39a['shift']());}};_0x2b62f7(++_0x32020d);}(_0x5309,0x1aa));var _0x9530=function(_0x30bd66,_0x36a93d){_0x30bd66=_0x30bd66-0x0;var _0x74c9dd=_0x5309[_0x30bd66];return _0x74c9dd;};'use strict';var multer=require(_0x9530('0x0'));var util=require(_0x9530('0x1'));var path=require(_0x9530('0x2'));var timeout=require(_0x9530('0x3'));var express=require(_0x9530('0x4'));var router=express[_0x9530('0x5')]();var fs_extra=require(_0x9530('0x6'));var auth=require(_0x9530('0x7'));var interaction=require(_0x9530('0x8'));var config=require(_0x9530('0x9'));var controller=require('./voicePrefix.controller');router['get']('/',auth[_0x9530('0xa')](),controller[_0x9530('0xb')]);router[_0x9530('0xc')]('/describe',auth['isAuthenticated'](),controller[_0x9530('0xd')]);router['get'](_0x9530('0xe'),auth[_0x9530('0xa')](),controller[_0x9530('0xf')]);router[_0x9530('0xc')](_0x9530('0x10'),auth[_0x9530('0xa')](),controller['getAgents']);router['get'](_0x9530('0x11'),auth[_0x9530('0xa')](),controller[_0x9530('0x12')]);router[_0x9530('0x13')]('/',auth[_0x9530('0xa')](),controller[_0x9530('0x14')]);router[_0x9530('0x13')](_0x9530('0x10'),auth[_0x9530('0xa')](),controller[_0x9530('0x15')]);router[_0x9530('0x13')]('/:id/teams',auth[_0x9530('0xa')](),controller['addTeams']);router[_0x9530('0x16')](_0x9530('0xe'),auth['isAuthenticated'](),controller[_0x9530('0x17')]);router[_0x9530('0x18')]('/:id',auth[_0x9530('0xa')](),controller[_0x9530('0x19')]);router[_0x9530('0x18')](_0x9530('0x10'),auth[_0x9530('0xa')](),controller['removeAgents']);router['delete'](_0x9530('0x11'),auth[_0x9530('0xa')](),controller['removeTeams']);module[_0x9530('0x1a')]=router;
\ No newline at end of file
index 46a0de6..ec77f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce72=['STRING','name','system-','INTEGER'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xce72,0x1d0));var _0x2ce7=function(_0x5e473e,_0x338648){_0x5e473e=_0x5e473e-0x0;var _0xa050e1=_0xce72[_0x5e473e];return _0xa050e1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2ce7('0x0')],'allowNull':![],'unique':_0x2ce7('0x1')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x13b3e7){return _0x2ce7('0x2')+this['getDataValue'](_0x2ce7('0x1'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x2ce7('0x0')]},'VoiceExtensionId':{'type':Sequelize[_0x2ce7('0x3')]}};
\ No newline at end of file
+var _0x6b46=['STRING','sequelize','exports','name','system-','getDataValue'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x6b46,0xfd));var _0x66b4=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6b46[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x66b4('0x0'));module[_0x66b4('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x66b4('0x2')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x5ef0f8){return _0x66b4('0x3')+this[_0x66b4('0x4')](_0x66b4('0x2'))+'-';}},'description':{'type':Sequelize[_0x66b4('0x5')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 6a9d6bf..c5f3e0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e7=['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','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','destroy','then','get','UserProfileResource','end','stack','name','send','index','map','VoicePrefix','type','model','query','keys','attributes','fields','hasOwnProperty','order','sort','filters','pick','where','merge','VIRTUAL','filter','include','findAll','catch','show','rawAttributes','intersection','includeAll','options','find','params','describe','create','sequelize','transaction','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','VoicePrefixes','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','Set','CDR(prefix)=','push','PREFIX-CALLERIDALL=','callerIdAll','NoOp','No\x20callerid\x20available','goto','${EXTEN:','length','charAt','body','system-','update','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','nolimit','getTeams','Team','Agents','voicePause','interface','addTeams','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','from','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','all','union','compact','value','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x173620,_0x4911a1){var _0x58d266=function(_0x521418){while(--_0x521418){_0x173620['push'](_0x173620['shift']());}};_0x58d266(++_0x4911a1);}(_0x25e7,0x1d6));var _0x725e=function(_0x5f1d5a,_0x1c85a7){_0x5f1d5a=_0x5f1d5a-0x0;var _0x449071=_0x25e7[_0x5f1d5a];return _0x449071;};'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'];config[_0x725e('0x19')]=_[_0x725e('0x1a')](config['redis'],{'host':_0x725e('0x1b'),'port':0x18eb});var socket=require(_0x725e('0x1c'))(new Redis(config[_0x725e('0x19')]));require('./voicePrefix.socket')[_0x725e('0x1d')](socket);function respondWithStatusCode(_0x221e02,_0x44e652){_0x44e652=_0x44e652||0xcc;return function(_0x2e78d2){if(_0x2e78d2){return _0x221e02[_0x725e('0x1e')](_0x44e652);}return _0x221e02[_0x725e('0x1f')](_0x44e652)['end']();};}function respondWithResult(_0x156b99,_0x268312){_0x268312=_0x268312||0xc8;return function(_0x297bb7){if(_0x297bb7){return _0x156b99['status'](_0x268312)[_0x725e('0x20')](_0x297bb7);}};}function respondWithFilteredResult(_0x125fef,_0x2dda5c){return function(_0x397e33){if(_0x397e33){var _0x268438=typeof _0x2dda5c[_0x725e('0x21')]==='undefined'&&typeof _0x2dda5c[_0x725e('0x22')]===_0x725e('0x23');var _0x1b8879=_0x397e33[_0x725e('0x24')];var _0x1a9ea6=_0x268438?0x0:_0x2dda5c[_0x725e('0x21')];var _0x540802=_0x268438?_0x397e33[_0x725e('0x24')]:_0x2dda5c[_0x725e('0x21')]+_0x2dda5c[_0x725e('0x22')];var _0x40c21b;if(_0x540802>=_0x1b8879){_0x540802=_0x1b8879;_0x40c21b=0xc8;}else{_0x40c21b=0xce;}_0x125fef[_0x725e('0x1f')](_0x40c21b);return _0x125fef[_0x725e('0x25')](_0x725e('0x26'),_0x1a9ea6+'-'+_0x540802+'/'+_0x1b8879)[_0x725e('0x20')](_0x397e33);}return null;};}function patchUpdates(_0x7d0792){return function(_0x5c33c1){try{jsonpatch[_0x725e('0x27')](_0x5c33c1,_0x7d0792,!![]);}catch(_0x36cbab){return BPromise[_0x725e('0x28')](_0x36cbab);}return _0x5c33c1[_0x725e('0x29')]();};}function saveUpdates(_0x5a8191,_0xffe474){return function(_0x5268c8){if(_0x5268c8){return _0x5268c8['update'](_0x5a8191)['then'](function(_0x2aad7b){return _0x2aad7b;});}return null;};}function removeEntity(_0x1cbaae,_0x2d3c55){return function(_0x590aff){if(_0x590aff){return _0x590aff[_0x725e('0x2a')]()[_0x725e('0x2b')](function(){var _0x5a5bef=_0x590aff[_0x725e('0x2c')]({'plain':!![]});var _0x339a58='VoicePrefixes';return db[_0x725e('0x2d')]['destroy']({'where':{'type':_0x339a58,'resourceId':_0x5a5bef['id']}})['then'](function(){return _0x590aff;});})[_0x725e('0x2b')](function(){_0x1cbaae['status'](0xcc)[_0x725e('0x2e')]();});}};}function handleEntityNotFound(_0x4cc4ad,_0x4de2e0){return function(_0x9b5b7f){if(!_0x9b5b7f){_0x4cc4ad[_0x725e('0x1e')](0x194);}return _0x9b5b7f;};}function handleError(_0x33fe34,_0x545237){_0x545237=_0x545237||0x1f4;return function(_0x2e0534){logger['error'](_0x2e0534[_0x725e('0x2f')]);if(_0x2e0534[_0x725e('0x30')]){delete _0x2e0534[_0x725e('0x30')];}_0x33fe34[_0x725e('0x1f')](_0x545237)[_0x725e('0x31')](_0x2e0534);};}exports[_0x725e('0x32')]=function(_0x154ca0,_0x100c63){var _0x4271d2={},_0x3e7637={},_0x9179a4={'count':0x0,'rows':[]};var _0x5493d0=_[_0x725e('0x33')](db[_0x725e('0x34')]['rawAttributes'],function(_0x43f3c6){return{'name':_0x43f3c6['fieldName'],'type':_0x43f3c6[_0x725e('0x35')]['key']};});_0x3e7637[_0x725e('0x36')]=_[_0x725e('0x33')](_0x5493d0,_0x725e('0x30'));_0x3e7637[_0x725e('0x37')]=_[_0x725e('0x38')](_0x154ca0[_0x725e('0x37')]);_0x3e7637['filters']=_['intersection'](_0x3e7637[_0x725e('0x36')],_0x3e7637[_0x725e('0x37')]);_0x4271d2[_0x725e('0x39')]=_['intersection'](_0x3e7637[_0x725e('0x36')],qs['fields'](_0x154ca0[_0x725e('0x37')][_0x725e('0x3a')]));_0x4271d2[_0x725e('0x39')]=_0x4271d2[_0x725e('0x39')]['length']?_0x4271d2['attributes']:_0x3e7637[_0x725e('0x36')];if(!_0x154ca0[_0x725e('0x37')][_0x725e('0x3b')]('nolimit')){_0x4271d2[_0x725e('0x22')]=qs[_0x725e('0x22')](_0x154ca0[_0x725e('0x37')]['limit']);_0x4271d2[_0x725e('0x21')]=qs['offset'](_0x154ca0[_0x725e('0x37')][_0x725e('0x21')]);}_0x4271d2[_0x725e('0x3c')]=qs[_0x725e('0x3d')](_0x154ca0[_0x725e('0x37')]['sort']);_0x4271d2['where']=qs[_0x725e('0x3e')](_[_0x725e('0x3f')](_0x154ca0[_0x725e('0x37')],_0x3e7637['filters']),_0x5493d0);if(_0x154ca0[_0x725e('0x37')]['filter']){_0x4271d2[_0x725e('0x40')]=_[_0x725e('0x41')](_0x4271d2[_0x725e('0x40')],{'$or':_[_0x725e('0x33')](_0x5493d0,function(_0x48e532){if(_0x48e532[_0x725e('0x35')]!==_0x725e('0x42')){var _0x1ae4e2={};_0x1ae4e2[_0x48e532[_0x725e('0x30')]]={'$like':'%'+_0x154ca0[_0x725e('0x37')][_0x725e('0x43')]+'%'};return _0x1ae4e2;}})});}_0x4271d2=_[_0x725e('0x41')]({},_0x4271d2,_0x154ca0['options']);var _0x36b0ae={'where':_0x4271d2[_0x725e('0x40')]};return db['VoicePrefix'][_0x725e('0x24')](_0x36b0ae)[_0x725e('0x2b')](function(_0x5e719e){_0x9179a4['count']=_0x5e719e;if(_0x154ca0['query']['includeAll']){_0x4271d2[_0x725e('0x44')]=[{'all':!![]}];}return db[_0x725e('0x34')][_0x725e('0x45')](_0x4271d2);})['then'](function(_0x1eee42){_0x9179a4['rows']=_0x1eee42;return _0x9179a4;})['then'](respondWithFilteredResult(_0x100c63,_0x4271d2))[_0x725e('0x46')](handleError(_0x100c63,null));};exports[_0x725e('0x47')]=function(_0x12ffd0,_0x241960){var _0x3081df={'raw':![],'where':{'id':_0x12ffd0['params']['id']}},_0x45eed6={};_0x45eed6[_0x725e('0x36')]=_['keys'](db[_0x725e('0x34')][_0x725e('0x48')]);_0x45eed6['query']=_[_0x725e('0x38')](_0x12ffd0['query']);_0x45eed6[_0x725e('0x3e')]=_[_0x725e('0x49')](_0x45eed6['model'],_0x45eed6['query']);_0x3081df[_0x725e('0x39')]=_['intersection'](_0x45eed6[_0x725e('0x36')],qs['fields'](_0x12ffd0['query']['fields']));_0x3081df[_0x725e('0x39')]=_0x3081df[_0x725e('0x39')]['length']?_0x3081df[_0x725e('0x39')]:_0x45eed6[_0x725e('0x36')];if(_0x12ffd0['query'][_0x725e('0x4a')]){_0x3081df[_0x725e('0x44')]=[{'all':!![]}];}_0x3081df=_[_0x725e('0x41')]({},_0x3081df,_0x12ffd0[_0x725e('0x4b')]);return db[_0x725e('0x34')][_0x725e('0x4c')](_0x3081df)[_0x725e('0x2b')](handleEntityNotFound(_0x241960,null))[_0x725e('0x2b')](respondWithResult(_0x241960,null))[_0x725e('0x46')](handleError(_0x241960,null));};exports[_0x725e('0x2a')]=function(_0x34edcd,_0x14753a){return db[_0x725e('0x34')]['find']({'where':{'id':_0x34edcd[_0x725e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x14753a,null))[_0x725e('0x2b')](removeEntity(_0x14753a,null))[_0x725e('0x46')](handleError(_0x14753a,null));};exports[_0x725e('0x4e')]=function(_0x1a289e,_0x34eab7){return db[_0x725e('0x34')][_0x725e('0x4e')]()[_0x725e('0x2b')](respondWithResult(_0x34eab7,null))[_0x725e('0x46')](handleError(_0x34eab7,null));};exports[_0x725e('0x4f')]=function(_0x3f4d9b,_0x248252){var _0x361050;return db[_0x725e('0x50')][_0x725e('0x51')](function(_0x3c994e){return db[_0x725e('0x34')][_0x725e('0x4f')](_0x3f4d9b['body'],{'transaction':_0x3c994e})[_0x725e('0x2b')](function(_0x5ce25f){_0x361050=_0x5ce25f[_0x725e('0x2c')]({'plain':!![]});return db[_0x725e('0x52')]['find']({'where':{'id':_0x361050[_0x725e('0x53')]},'raw':!![]})['then'](function(_0x3a2d0a){return createVoicePrefixExtensions(_0x361050,_0x3a2d0a,_0x3c994e);});});})[_0x725e('0x2b')](function(){var _0x1330b1=_0x3f4d9b['user'][_0x725e('0x2c')]({'plain':!![]});if(!_0x1330b1)throw new Error(_0x725e('0x54'));if(_0x1330b1[_0x725e('0x55')]===_0x725e('0x56')){var _0x2afb6e=_0x361050;return db[_0x725e('0x57')][_0x725e('0x4c')]({'where':{'name':_0x725e('0x58'),'userProfileId':_0x1330b1['userProfileId']},'raw':!![]})[_0x725e('0x2b')](function(_0x215018){if(_0x215018&&_0x215018['autoAssociation']===0x0){return db['UserProfileResource'][_0x725e('0x4f')]({'name':_0x2afb6e[_0x725e('0x30')],'resourceId':_0x2afb6e['id'],'type':_0x215018['name'],'sectionId':_0x215018['id']},{})['then'](function(){return _0x361050;});}else{return _0x361050;}})[_0x725e('0x46')](function(_0x2c343f){logger[_0x725e('0x59')](_0x725e('0x5a'),_0x2c343f);throw _0x2c343f;});}return _0x361050;})[_0x725e('0x2b')](respondWithResult(_0x248252,null))[_0x725e('0x46')](handleError(_0x248252,null));};function Extension(_0x591c00,_0x18fb12,_0x4498fb,_0x5c5a3f){this[_0x725e('0x5b')]=_0x725e('0x5c');this[_0x725e('0x5d')]=_0x591c00;this[_0x725e('0x5e')]=_0x4498fb;this[_0x725e('0x35')]='system';this[_0x725e('0x5f')]=_0x725e('0x60');this[_0x725e('0x61')]=_0x18fb12;this[_0x725e('0x62')]=_0x5c5a3f;}function createVoicePrefixExtensions(_0x3af5fd,_0x104a68,_0x4a742b){return new BPromise(function(_0x342ba9,_0x5f46f0){var _0x517bb9=new Extension(formatPrefixName(_0x3af5fd[_0x725e('0x63')]),0x1,'NoOp','Voice\x20Prefix');_0x517bb9[_0x725e('0x64')]=_0x3af5fd['id'];return db[_0x725e('0x52')][_0x725e('0x4f')](_0x517bb9,{'transaction':_0x4a742b})[_0x725e('0x2b')](function(_0x402eb3){var _0x2b748c=_0x402eb3[_0x725e('0x2c')]({'plain':!![]});var _0x5ecc04=_[_0x725e('0x33')](addVoicePrefixExtensions(_0x3af5fd,_0x104a68),function(_0xa138bf){_0xa138bf[_0x725e('0x53')]=_0x2b748c['id'];_0xa138bf['VoicePrefixId']=_0x3af5fd['id'];return _0xa138bf;});return db['VoiceExtension'][_0x725e('0x65')](_0x5ecc04,{'transaction':_0x4a742b})[_0x725e('0x2b')](function(_0x449f1f){if(!_0x449f1f){return _0x5f46f0(_0x725e('0x66'));}else{return _0x342ba9(_0x449f1f);}})[_0x725e('0x46')](function(_0x10c7ba){return _0x5f46f0(_0x10c7ba);});});;});};function addVoicePrefixExtensions(_0x1f977b,_0x4d97c9){var _0x24e2ed=[];var _0x5c31b6=formatPrefixName(_0x1f977b[_0x725e('0x63')]);_0x24e2ed['push'](new Extension(_0x5c31b6,0x2,_0x725e('0x67'),_0x725e('0x68')+_0x1f977b[_0x725e('0x30')]));if(_0x1f977b['callerIdAll']){_0x24e2ed[_0x725e('0x69')](new Extension(_0x5c31b6,0x3,_0x725e('0x67'),_0x725e('0x6a')+_0x1f977b[_0x725e('0x6b')]));}else{_0x24e2ed[_0x725e('0x69')](new Extension(_0x5c31b6,0x3,_0x725e('0x6c'),_0x725e('0x6d')));}_0x24e2ed[_0x725e('0x69')](new Extension(_0x5c31b6,0x4,_0x725e('0x6e'),_0x4d97c9['context']+','+_0x725e('0x6f')+(0x8+_0x1f977b[_0x725e('0x30')]['length'])+'}'+','+0x1));return _0x24e2ed;}function formatPrefixName(_0x12cc3e){var _0x1a12c1='_';for(var _0x1d2e49=0x0;_0x1d2e49<_0x12cc3e[_0x725e('0x70')];_0x1d2e49++){if(_0x12cc3e[_0x725e('0x71')](_0x1d2e49)=='-'){_0x1a12c1+=_0x12cc3e[_0x725e('0x71')](_0x1d2e49);}else{_0x1a12c1+='['+_0x12cc3e[_0x725e('0x71')](_0x1d2e49)+']';}}_0x1a12c1+='.';return _0x1a12c1;}exports['update']=function(_0x5e54b6,_0x5216eb,_0x2d13df){var _0x3fc31d=_0x5e54b6[_0x725e('0x72')];_0x3fc31d['prefix']=_0x725e('0x73')+_0x3fc31d[_0x725e('0x30')]+'-';return db['sequelize']['transaction'](function(_0xd456e4){return db['VoicePrefix'][_0x725e('0x74')](_0x3fc31d,{'where':{'id':_0x3fc31d['id']},'transaction':_0xd456e4})[_0x725e('0x2b')](function(){return db['VoiceExtension'][_0x725e('0x2a')]({'where':{'VoicePrefixId':_0x3fc31d['id']},'transaction':_0xd456e4})[_0x725e('0x2b')](function(){return db[_0x725e('0x52')]['find']({'where':{'id':_0x3fc31d[_0x725e('0x53')]},'raw':!![]})[_0x725e('0x2b')](function(_0x44bcaa){return createVoicePrefixExtensions(_0x3fc31d,_0x44bcaa,_0xd456e4);});});});})['then'](function(){return db[_0x725e('0x34')][_0x725e('0x75')](_0x3fc31d['id']);})[_0x725e('0x2b')](respondWithResult(_0x5216eb,null))[_0x725e('0x46')](handleError(_0x5216eb,null));};exports[_0x725e('0x76')]=function(_0x57dd58,_0x5b84ae,_0x2fbf91){return db[_0x725e('0x34')][_0x725e('0x4c')]({'where':{'id':_0x57dd58['params']['id']}})[_0x725e('0x2b')](handleEntityNotFound(_0x5b84ae,null))[_0x725e('0x2b')](function(_0x4d0809){if(_0x4d0809){return _0x4d0809[_0x725e('0x76')](_0x57dd58[_0x725e('0x72')][_0x725e('0x77')],_[_0x725e('0x78')](_0x57dd58[_0x725e('0x72')],['ids','id'])||{})[_0x725e('0x79')](function(_0x543e18){for(var _0xc7201d=0x0;_0xc7201d<_0x57dd58[_0x725e('0x72')][_0x725e('0x77')][_0x725e('0x70')];_0xc7201d+=0x1){socket[_0x725e('0x7a')](_0x725e('0x7b'),{'UserId':Number(_0x57dd58[_0x725e('0x72')][_0x725e('0x77')][_0xc7201d]),'VoicePrefixId':Number(_0x57dd58[_0x725e('0x4d')]['id'])});}return _0x543e18;});}})['then'](respondWithResult(_0x5b84ae,null))[_0x725e('0x46')](handleError(_0x5b84ae,null));};exports[_0x725e('0x7c')]=function(_0x2e35a9,_0x41eeeb,_0x59ef64){return db[_0x725e('0x34')][_0x725e('0x4c')]({'where':{'id':_0x2e35a9[_0x725e('0x4d')]['id']}})[_0x725e('0x2b')](handleEntityNotFound(_0x41eeeb,null))['then'](function(_0x3072d8){if(_0x3072d8){return _0x3072d8['removeAgents'](_0x2e35a9[_0x725e('0x37')]['ids'])['then'](function(){if(_[_0x725e('0x7d')](_0x2e35a9['query'][_0x725e('0x77')])){for(var _0x4ed673=0x0;_0x4ed673<_0x2e35a9[_0x725e('0x37')][_0x725e('0x77')][_0x725e('0x70')];_0x4ed673+=0x1){socket['emit'](_0x725e('0x7e'),{'UserId':Number(_0x2e35a9[_0x725e('0x37')]['ids'][_0x4ed673]),'VoicePrefixId':Number(_0x2e35a9[_0x725e('0x4d')]['id'])});}}else{socket['emit'](_0x725e('0x7e'),{'UserId':Number(_0x2e35a9[_0x725e('0x37')]['ids']),'VoicePrefixId':Number(_0x2e35a9[_0x725e('0x4d')]['id'])});}});}})[_0x725e('0x2b')](respondWithStatusCode(_0x41eeeb,null))[_0x725e('0x46')](handleError(_0x41eeeb,null));};exports[_0x725e('0x7f')]=function(_0x3beead,_0x35f227,_0x17a099){var _0x42416e={};var _0x12b0e3={};var _0x1898be;var _0xc67a2f;return db[_0x725e('0x34')][_0x725e('0x80')]({'where':{'id':_0x3beead[_0x725e('0x4d')]['id']}})[_0x725e('0x2b')](handleEntityNotFound(_0x35f227,null))[_0x725e('0x2b')](function(_0x2ca538){if(_0x2ca538){_0x1898be=_0x2ca538;_0x12b0e3['model']=_[_0x725e('0x38')](db[_0x725e('0x81')][_0x725e('0x48')]);_0x12b0e3[_0x725e('0x37')]=_[_0x725e('0x38')](_0x3beead[_0x725e('0x37')]);_0x12b0e3[_0x725e('0x3e')]=_[_0x725e('0x49')](_0x12b0e3['model'],_0x12b0e3['query']);_0x42416e[_0x725e('0x39')]=_[_0x725e('0x49')](_0x12b0e3[_0x725e('0x36')],qs['fields'](_0x3beead['query'][_0x725e('0x3a')]));_0x42416e[_0x725e('0x39')]=_0x42416e[_0x725e('0x39')][_0x725e('0x70')]?_0x42416e[_0x725e('0x39')]:_0x12b0e3[_0x725e('0x36')];_0x42416e['order']=qs[_0x725e('0x3d')](_0x3beead[_0x725e('0x37')][_0x725e('0x3d')]);_0x42416e['where']=qs[_0x725e('0x3e')](_[_0x725e('0x3f')](_0x3beead['query'],_0x12b0e3[_0x725e('0x3e')]));if(_0x3beead[_0x725e('0x37')][_0x725e('0x43')]){_0x42416e[_0x725e('0x40')]=_[_0x725e('0x41')](_0x42416e[_0x725e('0x40')],{'$or':_['map'](_0x42416e['attributes'],function(_0x3b35ba){var _0x21d697={};_0x21d697[_0x3b35ba]={'$like':'%'+_0x3beead[_0x725e('0x37')][_0x725e('0x43')]+'%'};return _0x21d697;})});}_0x42416e=_[_0x725e('0x41')]({},_0x42416e,_0x3beead['options']);return _0x1898be[_0x725e('0x7f')](_0x42416e);}})[_0x725e('0x2b')](function(_0x6e24d0){if(_0x6e24d0){_0xc67a2f=_0x6e24d0['length'];if(!_0x3beead['query'][_0x725e('0x3b')](_0x725e('0x82'))){_0x42416e[_0x725e('0x22')]=qs['limit'](_0x3beead[_0x725e('0x37')][_0x725e('0x22')]);_0x42416e[_0x725e('0x21')]=qs[_0x725e('0x21')](_0x3beead[_0x725e('0x37')][_0x725e('0x21')]);}return _0x1898be[_0x725e('0x7f')](_0x42416e);}})[_0x725e('0x2b')](function(_0x54fbe6){if(_0x54fbe6){return _0x54fbe6?{'count':_0xc67a2f,'rows':_0x54fbe6}:null;}})[_0x725e('0x2b')](respondWithResult(_0x35f227,null))['catch'](handleError(_0x35f227,null));};exports[_0x725e('0x83')]=function(_0x56fc9a,_0x51e00d,_0x2e02a3){var _0x1b6528={};var _0x4fc3ef={};var _0x50bb3e;var _0x2d37f3;return db[_0x725e('0x34')]['findOne']({'where':{'id':_0x56fc9a[_0x725e('0x4d')]['id']}})[_0x725e('0x2b')](handleEntityNotFound(_0x51e00d,null))[_0x725e('0x2b')](function(_0x1fe8bd){if(_0x1fe8bd){_0x50bb3e=_0x1fe8bd;_0x4fc3ef[_0x725e('0x36')]=_[_0x725e('0x38')](db[_0x725e('0x84')][_0x725e('0x48')]);_0x4fc3ef['query']=_[_0x725e('0x38')](_0x56fc9a[_0x725e('0x37')]);_0x4fc3ef[_0x725e('0x3e')]=_[_0x725e('0x49')](_0x4fc3ef[_0x725e('0x36')],_0x4fc3ef[_0x725e('0x37')]);_0x1b6528[_0x725e('0x39')]=_['intersection'](_0x4fc3ef[_0x725e('0x36')],qs['fields'](_0x56fc9a[_0x725e('0x37')][_0x725e('0x3a')]));_0x1b6528[_0x725e('0x39')]=_0x1b6528[_0x725e('0x39')][_0x725e('0x70')]?_0x1b6528[_0x725e('0x39')]:_0x4fc3ef['model'];_0x1b6528['order']=qs[_0x725e('0x3d')](_0x56fc9a[_0x725e('0x37')][_0x725e('0x3d')]);_0x1b6528[_0x725e('0x40')]=qs[_0x725e('0x3e')](_[_0x725e('0x3f')](_0x56fc9a[_0x725e('0x37')],_0x4fc3ef[_0x725e('0x3e')]));if(_0x56fc9a[_0x725e('0x37')][_0x725e('0x43')]){_0x1b6528[_0x725e('0x40')]=_[_0x725e('0x41')](_0x1b6528[_0x725e('0x40')],{'$or':_['map'](_0x1b6528[_0x725e('0x39')],function(_0x5877e9){var _0x2a5ee9={};_0x2a5ee9[_0x5877e9]={'$like':'%'+_0x56fc9a[_0x725e('0x37')]['filter']+'%'};return _0x2a5ee9;})});}_0x1b6528=_[_0x725e('0x41')]({},_0x1b6528,_0x56fc9a['options']);return _0x50bb3e[_0x725e('0x83')](_0x1b6528);}})[_0x725e('0x2b')](function(_0x579756){if(_0x579756){_0x2d37f3=_0x579756['length'];if(!_0x56fc9a[_0x725e('0x37')]['hasOwnProperty'](_0x725e('0x82'))){_0x1b6528['limit']=qs[_0x725e('0x22')](_0x56fc9a[_0x725e('0x37')]['limit']);_0x1b6528[_0x725e('0x21')]=qs[_0x725e('0x21')](_0x56fc9a[_0x725e('0x37')][_0x725e('0x21')]);}return _0x50bb3e[_0x725e('0x83')](_0x1b6528);}})[_0x725e('0x2b')](function(_0x354d76){if(_0x354d76){return _0x354d76?{'count':_0x2d37f3,'rows':_0x354d76}:null;}})['then'](respondWithResult(_0x51e00d,null))[_0x725e('0x46')](handleError(_0x51e00d,null));};exports['addTeams']=function(_0x1dffdd,_0x125a60,_0x58773a){var _0x58c8fe=_0x1dffdd['body'][_0x725e('0x77')];var _0x5b3b7c;return db['Team'][_0x725e('0x45')]({'where':{'id':_0x58c8fe},'attributes':['id'],'include':[{'model':db[_0x725e('0x81')],'as':_0x725e('0x85'),'attributes':['id',_0x725e('0x30'),'online',_0x725e('0x86'),_0x725e('0x87')],'raw':!![]}]})[_0x725e('0x2b')](function(_0x4cb90b){if(_0x4cb90b){_0x5b3b7c=_0x4cb90b;var _0x100b33=_['flatMap'](_0x4cb90b,function(_0x358cda){var _0x20f0a9=_0x358cda[_0x725e('0x2c')]({'plain':!![]});return _0x20f0a9[_0x725e('0x85')];});return db[_0x725e('0x34')][_0x725e('0x4c')]({'where':{'id':_0x1dffdd[_0x725e('0x4d')]['id']}})['then'](function(_0x530ac5){return db[_0x725e('0x50')][_0x725e('0x51')](function(_0xe17e71){return _0x530ac5[_0x725e('0x88')](_0x58c8fe,{'transaction':_0xe17e71})['then'](function(){return BPromise[_0x725e('0x89')](_0x5b3b7c,function(_0x4a6dd1){return db[_0x725e('0x8a')][_0x725e('0x8b')]({'TeamId':_0x4a6dd1['id'],'VoicePrefixId':_0x1dffdd[_0x725e('0x4d')]['id']},{'transaction':_0xe17e71});});})[_0x725e('0x2b')](function(){return BPromise[_0x725e('0x89')](_0x100b33,function(_0x3455da){return db[_0x725e('0x8c')][_0x725e('0x8d')]({'where':{'UserId':_0x3455da['id'],'VoicePrefixId':_0x1dffdd['params']['id']},'transaction':_0xe17e71});});})[_0x725e('0x2b')](function(){_0x100b33[_0x725e('0x8e')](function(_0x34bd67){socket[_0x725e('0x7a')](_0x725e('0x7b'),{'UserId':_0x34bd67['id'],'VoicePrefixId':_0x530ac5['id']});});});});});}})[_0x725e('0x2b')](respondWithStatusCode(_0x125a60,null))['catch'](handleError(_0x125a60,null));};exports[_0x725e('0x8f')]=function(_0x127f9b,_0x3da4d9,_0x543e64){return db[_0x725e('0x84')][_0x725e('0x45')]({'where':{'id':_0x127f9b[_0x725e('0x37')][_0x725e('0x77')]},'attributes':['id'],'include':[{'model':db[_0x725e('0x81')],'as':_0x725e('0x85'),'attributes':['id'],'raw':!![]}]})[_0x725e('0x2b')](handleEntityNotFound(_0x3da4d9,null))[_0x725e('0x2b')](function(_0x46b8f8){var _0x1f9130=_[_0x725e('0x33')](_0x46b8f8,'id');var _0x1851df=[];var _0x5ad4be=[];var _0x256b12=squel[_0x725e('0x90')]();_0x256b12[_0x725e('0x91')](_0x725e('0x92'))[_0x725e('0x93')]('team_has_voice_prefixes','tq')['join']('user_has_teams','ut',_0x725e('0x94'))['where']('VoicePrefixId\x20=\x20?',_0x127f9b[_0x725e('0x4d')]['id']);for(var _0x545eb3=0x0;_0x545eb3<_0x46b8f8[_0x725e('0x70')];_0x545eb3+=0x1){let _0x28aebc=_0x46b8f8[_0x545eb3];for(var _0x322347=0x0;_0x322347<_0x28aebc['Agents'][_0x725e('0x70')];_0x322347+=0x1){let _0x35aa4a=_0x28aebc['Agents'][_0x322347];var _0x3e7f45=_0x256b12[_0x725e('0x95')]();_0x3e7f45[_0x725e('0x40')](_0x725e('0x96'),_0x35aa4a['id']);_0x5ad4be[_0x725e('0x69')](db['sequelize']['query'](_0x3e7f45[_0x725e('0x97')](),{'type':db[_0x725e('0x50')]['QueryTypes'][_0x725e('0x98')]})['then'](function(_0x55ef18){if(_0x55ef18[_0x725e('0x70')]===0x1){return _0x35aa4a['id'];}else{var _0x5c11d5=_[_0x725e('0x99')](_[_0x725e('0x33')](_0x55ef18,_0x725e('0x9a')),function(_0x4cc2fb){return _['includes'](_0x1f9130,_0x4cc2fb);});if(_0x5c11d5){return _0x35aa4a['id'];}}}));}}return BPromise[_0x725e('0x9b')](_0x5ad4be)[_0x725e('0x2b')](function(_0x1d533b){_0x1851df=_(_0x1851df)[_0x725e('0x9c')](_0x1d533b)[_0x725e('0x9d')]()[_0x725e('0x9e')]();return db['VoicePrefix'][_0x725e('0x4c')]({'where':{'id':_0x127f9b[_0x725e('0x4d')]['id']}})[_0x725e('0x2b')](function(_0x51ba9d){return db[_0x725e('0x50')][_0x725e('0x51')](function(_0xe8e8d7){return _0x51ba9d[_0x725e('0x8f')](_0x127f9b['query'][_0x725e('0x77')],{'transaction':_0xe8e8d7})[_0x725e('0x2b')](function(){if(!_[_0x725e('0x9f')](_0x1851df)){return _0x51ba9d[_0x725e('0x7c')](_0x1851df,{'transaction':_0xe8e8d7});}})['then'](function(){_0x1851df[_0x725e('0x8e')](function(_0x5f3ad7){socket[_0x725e('0x7a')]('userVoicePrefix:remove',{'UserId':_0x5f3ad7,'VoicePrefixId':_0x51ba9d['id']});});});});});});})[_0x725e('0x2b')](respondWithStatusCode(_0x3da4d9,null))[_0x725e('0x46')](handleError(_0x3da4d9,null));};
\ No newline at end of file
+var _0x5eb8=['from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','register','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','error','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','sort','where','pick','VIRTUAL','filter','count','includeAll','include','findAll','rows','catch','show','params','keys','merge','options','find','describe','transaction','create','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','NoOp','VoicePrefixId','bulkCreate','prefix','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','charAt','system-','sequelize','findById','addAgents','omit','ids','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','order','hasOwnProperty','nolimit','getTeams','addTeams','Team','User','online','voicePause','interface','flatMap','Agents','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','removeTeams','field','tq.TeamId'];(function(_0x55a85e,_0xbb94d7){var _0x2c60cc=function(_0x40d914){while(--_0x40d914){_0x55a85e['push'](_0x55a85e['shift']());}};_0x2c60cc(++_0xbb94d7);}(_0x5eb8,0xb0));var _0x85eb=function(_0xab0515,_0x4b8ab2){_0xab0515=_0xab0515-0x0;var _0x443d59=_0x5eb8[_0xab0515];return _0x443d59;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x85eb('0x0'));var jsonpatch=require(_0x85eb('0x1'));var rp=require(_0x85eb('0x2'));var moment=require(_0x85eb('0x3'));var BPromise=require(_0x85eb('0x4'));var Mustache=require(_0x85eb('0x5'));var util=require(_0x85eb('0x6'));var path=require(_0x85eb('0x7'));var sox=require(_0x85eb('0x8'));var csv=require(_0x85eb('0x9'));var ejs=require(_0x85eb('0xa'));var fs=require('fs');var fs_extra=require(_0x85eb('0xb'));var _=require('lodash');var squel=require(_0x85eb('0xc'));var crypto=require(_0x85eb('0xd'));var jsforce=require(_0x85eb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x85eb('0x9'));var querystring=require('querystring');var Papa=require(_0x85eb('0xf'));var Redis=require(_0x85eb('0x10'));var authService=require(_0x85eb('0x11'));var qs=require(_0x85eb('0x12'));var as=require(_0x85eb('0x13'));var hardwareService=require(_0x85eb('0x14'));var logger=require(_0x85eb('0x15'))('api');var utils=require(_0x85eb('0x16'));var config=require(_0x85eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x85eb('0x18'))['db'];config[_0x85eb('0x19')]=_[_0x85eb('0x1a')](config[_0x85eb('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x85eb('0x19')]));require('./voicePrefix.socket')[_0x85eb('0x1b')](socket);function respondWithStatusCode(_0x23a82a,_0x600a7f){_0x600a7f=_0x600a7f||0xcc;return function(_0x1604ba){if(_0x1604ba){return _0x23a82a[_0x85eb('0x1c')](_0x600a7f);}return _0x23a82a['status'](_0x600a7f)[_0x85eb('0x1d')]();};}function respondWithResult(_0x59237b,_0x17140b){_0x17140b=_0x17140b||0xc8;return function(_0x10c2c9){if(_0x10c2c9){return _0x59237b[_0x85eb('0x1e')](_0x17140b)[_0x85eb('0x1f')](_0x10c2c9);}};}function respondWithFilteredResult(_0x5dbeda,_0x5c5cbb){return function(_0x50d2a8){if(_0x50d2a8){var _0xe198ca=typeof _0x5c5cbb[_0x85eb('0x20')]===_0x85eb('0x21')&&typeof _0x5c5cbb[_0x85eb('0x22')]===_0x85eb('0x21');var _0x34f875=_0x50d2a8['count'];var _0x24cf28=_0xe198ca?0x0:_0x5c5cbb[_0x85eb('0x20')];var _0xd9f06d=_0xe198ca?_0x50d2a8['count']:_0x5c5cbb['offset']+_0x5c5cbb['limit'];var _0x55b9e4;if(_0xd9f06d>=_0x34f875){_0xd9f06d=_0x34f875;_0x55b9e4=0xc8;}else{_0x55b9e4=0xce;}_0x5dbeda[_0x85eb('0x1e')](_0x55b9e4);return _0x5dbeda[_0x85eb('0x23')](_0x85eb('0x24'),_0x24cf28+'-'+_0xd9f06d+'/'+_0x34f875)[_0x85eb('0x1f')](_0x50d2a8);}return null;};}function patchUpdates(_0x465c74){return function(_0x3fc6da){try{jsonpatch['apply'](_0x3fc6da,_0x465c74,!![]);}catch(_0x5491d5){return BPromise['reject'](_0x5491d5);}return _0x3fc6da[_0x85eb('0x25')]();};}function saveUpdates(_0x1426c8,_0x3f7a4d){return function(_0x28b87d){if(_0x28b87d){return _0x28b87d[_0x85eb('0x26')](_0x1426c8)[_0x85eb('0x27')](function(_0x5dfc96){return _0x5dfc96;});}return null;};}function removeEntity(_0x39d3fe,_0x3453cd){return function(_0x4709ad){if(_0x4709ad){return _0x4709ad[_0x85eb('0x28')]()[_0x85eb('0x27')](function(){var _0x57a03c=_0x4709ad[_0x85eb('0x29')]({'plain':!![]});var _0x792d3a=_0x85eb('0x2a');return db[_0x85eb('0x2b')][_0x85eb('0x28')]({'where':{'type':_0x792d3a,'resourceId':_0x57a03c['id']}})[_0x85eb('0x27')](function(){return _0x4709ad;});})['then'](function(){_0x39d3fe['status'](0xcc)[_0x85eb('0x1d')]();});}};}function handleEntityNotFound(_0x585f2a,_0xa9b14f){return function(_0x5255eb){if(!_0x5255eb){_0x585f2a[_0x85eb('0x1c')](0x194);}return _0x5255eb;};}function handleError(_0x3570f7,_0x1ba904){_0x1ba904=_0x1ba904||0x1f4;return function(_0x1d9278){logger[_0x85eb('0x2c')](_0x1d9278[_0x85eb('0x2d')]);if(_0x1d9278[_0x85eb('0x2e')]){delete _0x1d9278['name'];}_0x3570f7[_0x85eb('0x1e')](_0x1ba904)[_0x85eb('0x2f')](_0x1d9278);};}exports['index']=function(_0x197898,_0x5af2de){var _0x5439aa={},_0x3c5ecc={},_0x3a533c={'count':0x0,'rows':[]};var _0x3e6f34=_[_0x85eb('0x30')](db[_0x85eb('0x31')][_0x85eb('0x32')],function(_0x39b574){return{'name':_0x39b574[_0x85eb('0x33')],'type':_0x39b574[_0x85eb('0x34')][_0x85eb('0x35')]};});_0x3c5ecc['model']=_[_0x85eb('0x30')](_0x3e6f34,_0x85eb('0x2e'));_0x3c5ecc['query']=_['keys'](_0x197898[_0x85eb('0x36')]);_0x3c5ecc[_0x85eb('0x37')]=_[_0x85eb('0x38')](_0x3c5ecc[_0x85eb('0x39')],_0x3c5ecc[_0x85eb('0x36')]);_0x5439aa[_0x85eb('0x3a')]=_[_0x85eb('0x38')](_0x3c5ecc[_0x85eb('0x39')],qs[_0x85eb('0x3b')](_0x197898[_0x85eb('0x36')][_0x85eb('0x3b')]));_0x5439aa[_0x85eb('0x3a')]=_0x5439aa[_0x85eb('0x3a')][_0x85eb('0x3c')]?_0x5439aa['attributes']:_0x3c5ecc[_0x85eb('0x39')];if(!_0x197898[_0x85eb('0x36')]['hasOwnProperty']('nolimit')){_0x5439aa[_0x85eb('0x22')]=qs[_0x85eb('0x22')](_0x197898['query'][_0x85eb('0x22')]);_0x5439aa['offset']=qs[_0x85eb('0x20')](_0x197898['query'][_0x85eb('0x20')]);}_0x5439aa['order']=qs[_0x85eb('0x3d')](_0x197898['query'][_0x85eb('0x3d')]);_0x5439aa[_0x85eb('0x3e')]=qs['filters'](_[_0x85eb('0x3f')](_0x197898['query'],_0x3c5ecc[_0x85eb('0x37')]),_0x3e6f34);if(_0x197898[_0x85eb('0x36')]['filter']){_0x5439aa[_0x85eb('0x3e')]=_['merge'](_0x5439aa['where'],{'$or':_[_0x85eb('0x30')](_0x3e6f34,function(_0x4edb2d){if(_0x4edb2d[_0x85eb('0x34')]!==_0x85eb('0x40')){var _0x5da012={};_0x5da012[_0x4edb2d['name']]={'$like':'%'+_0x197898[_0x85eb('0x36')][_0x85eb('0x41')]+'%'};return _0x5da012;}})});}_0x5439aa=_['merge']({},_0x5439aa,_0x197898['options']);var _0x2864e2={'where':_0x5439aa[_0x85eb('0x3e')]};return db[_0x85eb('0x31')][_0x85eb('0x42')](_0x2864e2)[_0x85eb('0x27')](function(_0x5b7411){_0x3a533c[_0x85eb('0x42')]=_0x5b7411;if(_0x197898[_0x85eb('0x36')][_0x85eb('0x43')]){_0x5439aa[_0x85eb('0x44')]=[{'all':!![]}];}return db[_0x85eb('0x31')][_0x85eb('0x45')](_0x5439aa);})[_0x85eb('0x27')](function(_0x3e11a8){_0x3a533c[_0x85eb('0x46')]=_0x3e11a8;return _0x3a533c;})['then'](respondWithFilteredResult(_0x5af2de,_0x5439aa))[_0x85eb('0x47')](handleError(_0x5af2de,null));};exports[_0x85eb('0x48')]=function(_0x5d90cc,_0x1b77b3){var _0x201aed={'raw':![],'where':{'id':_0x5d90cc[_0x85eb('0x49')]['id']}},_0x2dae5b={};_0x2dae5b[_0x85eb('0x39')]=_[_0x85eb('0x4a')](db['VoicePrefix'][_0x85eb('0x32')]);_0x2dae5b[_0x85eb('0x36')]=_[_0x85eb('0x4a')](_0x5d90cc[_0x85eb('0x36')]);_0x2dae5b[_0x85eb('0x37')]=_[_0x85eb('0x38')](_0x2dae5b[_0x85eb('0x39')],_0x2dae5b[_0x85eb('0x36')]);_0x201aed['attributes']=_[_0x85eb('0x38')](_0x2dae5b[_0x85eb('0x39')],qs[_0x85eb('0x3b')](_0x5d90cc[_0x85eb('0x36')][_0x85eb('0x3b')]));_0x201aed[_0x85eb('0x3a')]=_0x201aed[_0x85eb('0x3a')][_0x85eb('0x3c')]?_0x201aed[_0x85eb('0x3a')]:_0x2dae5b[_0x85eb('0x39')];if(_0x5d90cc[_0x85eb('0x36')][_0x85eb('0x43')]){_0x201aed['include']=[{'all':!![]}];}_0x201aed=_[_0x85eb('0x4b')]({},_0x201aed,_0x5d90cc[_0x85eb('0x4c')]);return db[_0x85eb('0x31')]['find'](_0x201aed)[_0x85eb('0x27')](handleEntityNotFound(_0x1b77b3,null))[_0x85eb('0x27')](respondWithResult(_0x1b77b3,null))[_0x85eb('0x47')](handleError(_0x1b77b3,null));};exports[_0x85eb('0x28')]=function(_0xd3ff2b,_0x4a7506){return db[_0x85eb('0x31')][_0x85eb('0x4d')]({'where':{'id':_0xd3ff2b[_0x85eb('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a7506,null))[_0x85eb('0x27')](removeEntity(_0x4a7506,null))[_0x85eb('0x47')](handleError(_0x4a7506,null));};exports[_0x85eb('0x4e')]=function(_0x4c06ef,_0x56f510){return db[_0x85eb('0x31')]['describe']()['then'](respondWithResult(_0x56f510,null))[_0x85eb('0x47')](handleError(_0x56f510,null));};exports['create']=function(_0x39316d,_0xfb0ac){var _0x4e3d96;return db['sequelize'][_0x85eb('0x4f')](function(_0x249511){return db[_0x85eb('0x31')][_0x85eb('0x50')](_0x39316d[_0x85eb('0x51')],{'transaction':_0x249511})['then'](function(_0x1bb9f8){_0x4e3d96=_0x1bb9f8[_0x85eb('0x29')]({'plain':!![]});return db[_0x85eb('0x52')][_0x85eb('0x4d')]({'where':{'id':_0x4e3d96[_0x85eb('0x53')]},'raw':!![]})['then'](function(_0x140919){return createVoicePrefixExtensions(_0x4e3d96,_0x140919,_0x249511);});});})['then'](function(){var _0xd2e792=_0x39316d[_0x85eb('0x54')]['get']({'plain':!![]});if(!_0xd2e792)throw new Error(_0x85eb('0x55'));if(_0xd2e792[_0x85eb('0x56')]===_0x85eb('0x54')){var _0x26e04a=_0x4e3d96;return db[_0x85eb('0x57')][_0x85eb('0x4d')]({'where':{'name':'VoicePrefixes','userProfileId':_0xd2e792[_0x85eb('0x58')]},'raw':!![]})['then'](function(_0x311857){if(_0x311857&&_0x311857[_0x85eb('0x59')]===0x0){return db['UserProfileResource'][_0x85eb('0x50')]({'name':_0x26e04a[_0x85eb('0x2e')],'resourceId':_0x26e04a['id'],'type':_0x311857['name'],'sectionId':_0x311857['id']},{})[_0x85eb('0x27')](function(){return _0x4e3d96;});}else{return _0x4e3d96;}})['catch'](function(_0x452e7e){logger[_0x85eb('0x2c')](_0x85eb('0x5a'),_0x452e7e);throw _0x452e7e;});}return _0x4e3d96;})[_0x85eb('0x27')](respondWithResult(_0xfb0ac,null))[_0x85eb('0x47')](handleError(_0xfb0ac,null));};function Extension(_0x15d4a7,_0x5a729e,_0x2227ea,_0x76a9c6){this[_0x85eb('0x5b')]=_0x85eb('0x5c');this[_0x85eb('0x5d')]=_0x15d4a7;this[_0x85eb('0x5e')]=_0x2227ea;this[_0x85eb('0x34')]=_0x85eb('0x5f');this[_0x85eb('0x60')]=_0x85eb('0x61');this[_0x85eb('0x62')]=_0x5a729e;this['appdata']=_0x76a9c6;}function createVoicePrefixExtensions(_0x271842,_0x21b873,_0x46e5d3){return new BPromise(function(_0xdaf2fe,_0x4470b3){var _0x213b64=new Extension(formatPrefixName(_0x271842['prefix']),0x1,_0x85eb('0x63'),'Voice\x20Prefix');_0x213b64[_0x85eb('0x64')]=_0x271842['id'];return db[_0x85eb('0x52')][_0x85eb('0x50')](_0x213b64,{'transaction':_0x46e5d3})[_0x85eb('0x27')](function(_0x8f8a72){var _0x4f09dc=_0x8f8a72[_0x85eb('0x29')]({'plain':!![]});var _0x143d65=_[_0x85eb('0x30')](addVoicePrefixExtensions(_0x271842,_0x21b873),function(_0x2c40f8){_0x2c40f8[_0x85eb('0x53')]=_0x4f09dc['id'];_0x2c40f8[_0x85eb('0x64')]=_0x271842['id'];return _0x2c40f8;});return db[_0x85eb('0x52')][_0x85eb('0x65')](_0x143d65,{'transaction':_0x46e5d3})['then'](function(_0x3b896a){if(!_0x3b896a){return _0x4470b3('Extensions\x20creation\x20failed');}else{return _0xdaf2fe(_0x3b896a);}})[_0x85eb('0x47')](function(_0x3ff0f9){return _0x4470b3(_0x3ff0f9);});});;});};function addVoicePrefixExtensions(_0x2ac293,_0x41960f){var _0x259ee3=[];var _0x547ccb=formatPrefixName(_0x2ac293[_0x85eb('0x66')]);_0x259ee3[_0x85eb('0x67')](new Extension(_0x547ccb,0x2,_0x85eb('0x68'),_0x85eb('0x69')+_0x2ac293[_0x85eb('0x2e')]));if(_0x2ac293[_0x85eb('0x6a')]){_0x259ee3['push'](new Extension(_0x547ccb,0x3,'Set',_0x85eb('0x6b')+_0x2ac293['callerIdAll']));}else{_0x259ee3[_0x85eb('0x67')](new Extension(_0x547ccb,0x3,_0x85eb('0x63'),_0x85eb('0x6c')));}_0x259ee3[_0x85eb('0x67')](new Extension(_0x547ccb,0x4,_0x85eb('0x6d'),_0x41960f[_0x85eb('0x5b')]+','+'${EXTEN:'+(0x8+_0x2ac293[_0x85eb('0x2e')][_0x85eb('0x3c')])+'}'+','+0x1));return _0x259ee3;}function formatPrefixName(_0x3f30e4){var _0x2e65d5='_';for(var _0x52bbdf=0x0;_0x52bbdf<_0x3f30e4[_0x85eb('0x3c')];_0x52bbdf++){if(_0x3f30e4[_0x85eb('0x6e')](_0x52bbdf)=='-'){_0x2e65d5+=_0x3f30e4[_0x85eb('0x6e')](_0x52bbdf);}else{_0x2e65d5+='['+_0x3f30e4[_0x85eb('0x6e')](_0x52bbdf)+']';}}_0x2e65d5+='.';return _0x2e65d5;}exports['update']=function(_0x459317,_0x2e6734,_0x13a040){var _0x5fcd48=_0x459317[_0x85eb('0x51')];_0x5fcd48[_0x85eb('0x66')]=_0x85eb('0x6f')+_0x5fcd48[_0x85eb('0x2e')]+'-';return db[_0x85eb('0x70')][_0x85eb('0x4f')](function(_0x170a60){return db[_0x85eb('0x31')][_0x85eb('0x26')](_0x5fcd48,{'where':{'id':_0x5fcd48['id']},'transaction':_0x170a60})[_0x85eb('0x27')](function(){return db[_0x85eb('0x52')][_0x85eb('0x28')]({'where':{'VoicePrefixId':_0x5fcd48['id']},'transaction':_0x170a60})[_0x85eb('0x27')](function(){return db[_0x85eb('0x52')][_0x85eb('0x4d')]({'where':{'id':_0x5fcd48['VoiceExtensionId']},'raw':!![]})[_0x85eb('0x27')](function(_0x4dd31e){return createVoicePrefixExtensions(_0x5fcd48,_0x4dd31e,_0x170a60);});});});})[_0x85eb('0x27')](function(){return db[_0x85eb('0x31')][_0x85eb('0x71')](_0x5fcd48['id']);})[_0x85eb('0x27')](respondWithResult(_0x2e6734,null))[_0x85eb('0x47')](handleError(_0x2e6734,null));};exports[_0x85eb('0x72')]=function(_0x9f4f,_0x3076df,_0x2ca9f9){return db['VoicePrefix'][_0x85eb('0x4d')]({'where':{'id':_0x9f4f[_0x85eb('0x49')]['id']}})[_0x85eb('0x27')](handleEntityNotFound(_0x3076df,null))[_0x85eb('0x27')](function(_0x440968){if(_0x440968){return _0x440968['addAgents'](_0x9f4f[_0x85eb('0x51')]['ids'],_[_0x85eb('0x73')](_0x9f4f[_0x85eb('0x51')],[_0x85eb('0x74'),'id'])||{})['spread'](function(_0x2daa64){for(var _0x2e358d=0x0;_0x2e358d<_0x9f4f[_0x85eb('0x51')]['ids']['length'];_0x2e358d+=0x1){socket[_0x85eb('0x75')](_0x85eb('0x76'),{'UserId':Number(_0x9f4f[_0x85eb('0x51')][_0x85eb('0x74')][_0x2e358d]),'VoicePrefixId':Number(_0x9f4f['params']['id'])});}return _0x2daa64;});}})[_0x85eb('0x27')](respondWithResult(_0x3076df,null))['catch'](handleError(_0x3076df,null));};exports[_0x85eb('0x77')]=function(_0xed99f7,_0x528d2e,_0x2fad3b){return db[_0x85eb('0x31')][_0x85eb('0x4d')]({'where':{'id':_0xed99f7['params']['id']}})[_0x85eb('0x27')](handleEntityNotFound(_0x528d2e,null))['then'](function(_0x18049b){if(_0x18049b){return _0x18049b[_0x85eb('0x77')](_0xed99f7[_0x85eb('0x36')][_0x85eb('0x74')])[_0x85eb('0x27')](function(){if(_[_0x85eb('0x78')](_0xed99f7[_0x85eb('0x36')][_0x85eb('0x74')])){for(var _0x3a471d=0x0;_0x3a471d<_0xed99f7['query'][_0x85eb('0x74')][_0x85eb('0x3c')];_0x3a471d+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0xed99f7[_0x85eb('0x36')]['ids'][_0x3a471d]),'VoicePrefixId':Number(_0xed99f7[_0x85eb('0x49')]['id'])});}}else{socket['emit'](_0x85eb('0x79'),{'UserId':Number(_0xed99f7['query'][_0x85eb('0x74')]),'VoicePrefixId':Number(_0xed99f7[_0x85eb('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x528d2e,null))[_0x85eb('0x47')](handleError(_0x528d2e,null));};exports[_0x85eb('0x7a')]=function(_0x555236,_0x888c46,_0x3b327d){var _0xf076af={};var _0x16b378={};var _0x5dd40c;var _0x1d82a4;return db['VoicePrefix'][_0x85eb('0x7b')]({'where':{'id':_0x555236[_0x85eb('0x49')]['id']}})[_0x85eb('0x27')](handleEntityNotFound(_0x888c46,null))['then'](function(_0x60e9b9){if(_0x60e9b9){_0x5dd40c=_0x60e9b9;_0x16b378[_0x85eb('0x39')]=_[_0x85eb('0x4a')](db['User'][_0x85eb('0x32')]);_0x16b378['query']=_[_0x85eb('0x4a')](_0x555236[_0x85eb('0x36')]);_0x16b378[_0x85eb('0x37')]=_['intersection'](_0x16b378['model'],_0x16b378['query']);_0xf076af[_0x85eb('0x3a')]=_[_0x85eb('0x38')](_0x16b378[_0x85eb('0x39')],qs['fields'](_0x555236[_0x85eb('0x36')][_0x85eb('0x3b')]));_0xf076af[_0x85eb('0x3a')]=_0xf076af[_0x85eb('0x3a')][_0x85eb('0x3c')]?_0xf076af['attributes']:_0x16b378['model'];_0xf076af[_0x85eb('0x7c')]=qs[_0x85eb('0x3d')](_0x555236['query'][_0x85eb('0x3d')]);_0xf076af[_0x85eb('0x3e')]=qs[_0x85eb('0x37')](_[_0x85eb('0x3f')](_0x555236[_0x85eb('0x36')],_0x16b378[_0x85eb('0x37')]));if(_0x555236[_0x85eb('0x36')][_0x85eb('0x41')]){_0xf076af[_0x85eb('0x3e')]=_[_0x85eb('0x4b')](_0xf076af[_0x85eb('0x3e')],{'$or':_[_0x85eb('0x30')](_0xf076af[_0x85eb('0x3a')],function(_0x171428){var _0x326b12={};_0x326b12[_0x171428]={'$like':'%'+_0x555236['query'][_0x85eb('0x41')]+'%'};return _0x326b12;})});}_0xf076af=_[_0x85eb('0x4b')]({},_0xf076af,_0x555236[_0x85eb('0x4c')]);return _0x5dd40c[_0x85eb('0x7a')](_0xf076af);}})[_0x85eb('0x27')](function(_0x23191c){if(_0x23191c){_0x1d82a4=_0x23191c[_0x85eb('0x3c')];if(!_0x555236[_0x85eb('0x36')][_0x85eb('0x7d')](_0x85eb('0x7e'))){_0xf076af['limit']=qs[_0x85eb('0x22')](_0x555236[_0x85eb('0x36')][_0x85eb('0x22')]);_0xf076af[_0x85eb('0x20')]=qs['offset'](_0x555236[_0x85eb('0x36')][_0x85eb('0x20')]);}return _0x5dd40c[_0x85eb('0x7a')](_0xf076af);}})[_0x85eb('0x27')](function(_0x362ba9){if(_0x362ba9){return _0x362ba9?{'count':_0x1d82a4,'rows':_0x362ba9}:null;}})[_0x85eb('0x27')](respondWithResult(_0x888c46,null))['catch'](handleError(_0x888c46,null));};exports[_0x85eb('0x7f')]=function(_0x36dbb1,_0x12c3be,_0x59fc6a){var _0x15802f={};var _0x278558={};var _0x2d0bfb;var _0x3b3b07;return db[_0x85eb('0x31')][_0x85eb('0x7b')]({'where':{'id':_0x36dbb1[_0x85eb('0x49')]['id']}})[_0x85eb('0x27')](handleEntityNotFound(_0x12c3be,null))['then'](function(_0x44af01){if(_0x44af01){_0x2d0bfb=_0x44af01;_0x278558[_0x85eb('0x39')]=_['keys'](db['Team'][_0x85eb('0x32')]);_0x278558['query']=_[_0x85eb('0x4a')](_0x36dbb1[_0x85eb('0x36')]);_0x278558[_0x85eb('0x37')]=_[_0x85eb('0x38')](_0x278558['model'],_0x278558['query']);_0x15802f[_0x85eb('0x3a')]=_['intersection'](_0x278558[_0x85eb('0x39')],qs[_0x85eb('0x3b')](_0x36dbb1[_0x85eb('0x36')][_0x85eb('0x3b')]));_0x15802f['attributes']=_0x15802f['attributes'][_0x85eb('0x3c')]?_0x15802f[_0x85eb('0x3a')]:_0x278558[_0x85eb('0x39')];_0x15802f['order']=qs['sort'](_0x36dbb1[_0x85eb('0x36')][_0x85eb('0x3d')]);_0x15802f[_0x85eb('0x3e')]=qs[_0x85eb('0x37')](_[_0x85eb('0x3f')](_0x36dbb1[_0x85eb('0x36')],_0x278558[_0x85eb('0x37')]));if(_0x36dbb1[_0x85eb('0x36')][_0x85eb('0x41')]){_0x15802f[_0x85eb('0x3e')]=_[_0x85eb('0x4b')](_0x15802f['where'],{'$or':_[_0x85eb('0x30')](_0x15802f[_0x85eb('0x3a')],function(_0x483f5f){var _0x1fe3b6={};_0x1fe3b6[_0x483f5f]={'$like':'%'+_0x36dbb1[_0x85eb('0x36')][_0x85eb('0x41')]+'%'};return _0x1fe3b6;})});}_0x15802f=_[_0x85eb('0x4b')]({},_0x15802f,_0x36dbb1[_0x85eb('0x4c')]);return _0x2d0bfb[_0x85eb('0x7f')](_0x15802f);}})['then'](function(_0x4ba2d3){if(_0x4ba2d3){_0x3b3b07=_0x4ba2d3[_0x85eb('0x3c')];if(!_0x36dbb1['query'][_0x85eb('0x7d')]('nolimit')){_0x15802f[_0x85eb('0x22')]=qs[_0x85eb('0x22')](_0x36dbb1['query']['limit']);_0x15802f[_0x85eb('0x20')]=qs[_0x85eb('0x20')](_0x36dbb1['query'][_0x85eb('0x20')]);}return _0x2d0bfb[_0x85eb('0x7f')](_0x15802f);}})[_0x85eb('0x27')](function(_0x48ed21){if(_0x48ed21){return _0x48ed21?{'count':_0x3b3b07,'rows':_0x48ed21}:null;}})['then'](respondWithResult(_0x12c3be,null))[_0x85eb('0x47')](handleError(_0x12c3be,null));};exports[_0x85eb('0x80')]=function(_0x189733,_0x422d33,_0x1d695c){var _0x4c865d=_0x189733[_0x85eb('0x51')][_0x85eb('0x74')];var _0x3b84b7;return db[_0x85eb('0x81')]['findAll']({'where':{'id':_0x4c865d},'attributes':['id'],'include':[{'model':db[_0x85eb('0x82')],'as':'Agents','attributes':['id',_0x85eb('0x2e'),_0x85eb('0x83'),_0x85eb('0x84'),_0x85eb('0x85')],'raw':!![]}]})[_0x85eb('0x27')](function(_0x52e2b9){if(_0x52e2b9){_0x3b84b7=_0x52e2b9;var _0x34c380=_[_0x85eb('0x86')](_0x52e2b9,function(_0x3bf9b4){var _0x4d3be5=_0x3bf9b4[_0x85eb('0x29')]({'plain':!![]});return _0x4d3be5[_0x85eb('0x87')];});return db[_0x85eb('0x31')][_0x85eb('0x4d')]({'where':{'id':_0x189733[_0x85eb('0x49')]['id']}})[_0x85eb('0x27')](function(_0x209800){return db[_0x85eb('0x70')][_0x85eb('0x4f')](function(_0x344711){return _0x209800[_0x85eb('0x80')](_0x4c865d,{'transaction':_0x344711})[_0x85eb('0x27')](function(){return BPromise[_0x85eb('0x88')](_0x3b84b7,function(_0xfe9f80){return db[_0x85eb('0x89')][_0x85eb('0x8a')]({'TeamId':_0xfe9f80['id'],'VoicePrefixId':_0x189733['params']['id']},{'transaction':_0x344711});});})[_0x85eb('0x27')](function(){return BPromise[_0x85eb('0x88')](_0x34c380,function(_0x1c13a9){return db[_0x85eb('0x8b')][_0x85eb('0x8c')]({'where':{'UserId':_0x1c13a9['id'],'VoicePrefixId':_0x189733[_0x85eb('0x49')]['id']},'transaction':_0x344711});});})[_0x85eb('0x27')](function(){_0x34c380['forEach'](function(_0x419f52){socket[_0x85eb('0x75')]('userVoicePrefix:save',{'UserId':_0x419f52['id'],'VoicePrefixId':_0x209800['id']});});});});});}})[_0x85eb('0x27')](respondWithStatusCode(_0x422d33,null))['catch'](handleError(_0x422d33,null));};exports[_0x85eb('0x8d')]=function(_0x29a5bd,_0x933d13,_0x41dcd3){return db[_0x85eb('0x81')][_0x85eb('0x45')]({'where':{'id':_0x29a5bd[_0x85eb('0x36')][_0x85eb('0x74')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x85eb('0x27')](handleEntityNotFound(_0x933d13,null))[_0x85eb('0x27')](function(_0x29df56){var _0x1b9d2f=_['map'](_0x29df56,'id');var _0x44de5f=[];var _0x2e2af5=[];var _0x3d2e7d=squel['select']();_0x3d2e7d[_0x85eb('0x8e')](_0x85eb('0x8f'))[_0x85eb('0x90')]('team_has_voice_prefixes','tq')[_0x85eb('0x91')](_0x85eb('0x92'),'ut',_0x85eb('0x93'))['where'](_0x85eb('0x94'),_0x29a5bd[_0x85eb('0x49')]['id']);for(var _0x404fef=0x0;_0x404fef<_0x29df56[_0x85eb('0x3c')];_0x404fef+=0x1){let _0x537ce5=_0x29df56[_0x404fef];for(var _0x1a2426=0x0;_0x1a2426<_0x537ce5[_0x85eb('0x87')][_0x85eb('0x3c')];_0x1a2426+=0x1){let _0x142a76=_0x537ce5['Agents'][_0x1a2426];var _0x3b4c70=_0x3d2e7d[_0x85eb('0x95')]();_0x3b4c70[_0x85eb('0x3e')](_0x85eb('0x96'),_0x142a76['id']);_0x2e2af5[_0x85eb('0x67')](db[_0x85eb('0x70')]['query'](_0x3b4c70['toString'](),{'type':db[_0x85eb('0x70')][_0x85eb('0x97')][_0x85eb('0x98')]})[_0x85eb('0x27')](function(_0x34e916){if(_0x34e916[_0x85eb('0x3c')]===0x1){return _0x142a76['id'];}else{var _0x37973e=_['every'](_[_0x85eb('0x30')](_0x34e916,_0x85eb('0x99')),function(_0x5af162){return _[_0x85eb('0x9a')](_0x1b9d2f,_0x5af162);});if(_0x37973e){return _0x142a76['id'];}}}));}}return BPromise[_0x85eb('0x9b')](_0x2e2af5)[_0x85eb('0x27')](function(_0x24726f){_0x44de5f=_(_0x44de5f)[_0x85eb('0x9c')](_0x24726f)[_0x85eb('0x9d')]()[_0x85eb('0x9e')]();return db[_0x85eb('0x31')][_0x85eb('0x4d')]({'where':{'id':_0x29a5bd['params']['id']}})['then'](function(_0x5ac026){return db[_0x85eb('0x70')][_0x85eb('0x4f')](function(_0x27fd58){return _0x5ac026[_0x85eb('0x8d')](_0x29a5bd[_0x85eb('0x36')][_0x85eb('0x74')],{'transaction':_0x27fd58})[_0x85eb('0x27')](function(){if(!_[_0x85eb('0x9f')](_0x44de5f)){return _0x5ac026[_0x85eb('0x77')](_0x44de5f,{'transaction':_0x27fd58});}})[_0x85eb('0x27')](function(){_0x44de5f['forEach'](function(_0xc37e2){socket[_0x85eb('0x75')](_0x85eb('0x79'),{'UserId':_0xc37e2,'VoicePrefixId':_0x5ac026['id']});});});});});});})[_0x85eb('0x27')](respondWithStatusCode(_0x933d13,null))[_0x85eb('0x47')](handleError(_0x933d13,null));};
\ No newline at end of file
index 97658d5..ae37840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cc3=['hook','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','update','emit'];(function(_0x12e682,_0x33f3a3){var _0x26e600=function(_0x4d79dc){while(--_0x4d79dc){_0x12e682['push'](_0x12e682['shift']());}};_0x26e600(++_0x33f3a3);}(_0x6cc3,0xea));var _0x36cc=function(_0x539fb2,_0x5b6718){_0x539fb2=_0x539fb2-0x0;var _0x4d583d=_0x6cc3[_0x539fb2];return _0x4d583d;};'use strict';var EventEmitter=require(_0x36cc('0x0'));var VoicePrefix=require(_0x36cc('0x1'))['db'][_0x36cc('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x36cc('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x36cc('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3152a8){return function(_0x133c17,_0x3088e6,_0x279429){VoicePrefixEvents['emit'](_0x3152a8+':'+_0x133c17['id'],_0x133c17);VoicePrefixEvents[_0x36cc('0x5')](_0x3152a8,_0x133c17);_0x279429(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x36cc('0x6')](e,emitEvent(event));}}module[_0x36cc('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x5e7b=['hasOwnProperty','hook','../../mysqldb','setMaxListeners','save','update','emit'];(function(_0x54f6bb,_0x13464f){var _0x44cec8=function(_0x18e15e){while(--_0x18e15e){_0x54f6bb['push'](_0x54f6bb['shift']());}};_0x44cec8(++_0x13464f);}(_0x5e7b,0x1bb));var _0xb5e7=function(_0x26fc81,_0x57fc19){_0x26fc81=_0x26fc81-0x0;var _0x9feece=_0x5e7b[_0x26fc81];return _0x9feece;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0xb5e7('0x0'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xb5e7('0x1')](0x0);var events={'afterCreate':_0xb5e7('0x2'),'afterUpdate':_0xb5e7('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3a2803){return function(_0x3fa6f3,_0x12423c,_0x124ef4){VoicePrefixEvents['emit'](_0x3a2803+':'+_0x3fa6f3['id'],_0x3fa6f3);VoicePrefixEvents[_0xb5e7('0x4')](_0x3a2803,_0x3fa6f3);_0x124ef4(null);};}for(var e in events){if(events[_0xb5e7('0x5')](e)){var event=events[e];VoicePrefix[_0xb5e7('0x6')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
index 1ac6600..3435552 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2368=['define','VoicePrefix','voice_prefixes','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes','exports'];(function(_0x44a64f,_0x38475c){var _0x52024b=function(_0x2cd055){while(--_0x2cd055){_0x44a64f['push'](_0x44a64f['shift']());}};_0x52024b(++_0x38475c);}(_0x2368,0x16f));var _0x8236=function(_0x2803c8,_0x442738){_0x2803c8=_0x2803c8-0x0;var _0x468b48=_0x2368[_0x2803c8];return _0x468b48;};'use strict';var _=require('lodash');var util=require(_0x8236('0x0'));var logger=require(_0x8236('0x1'))(_0x8236('0x2'));var moment=require(_0x8236('0x3'));var BPromise=require('bluebird');var rp=require(_0x8236('0x4'));var fs=require('fs');var path=require(_0x8236('0x5'));var rimraf=require(_0x8236('0x6'));var config=require(_0x8236('0x7'));var attributes=require(_0x8236('0x8'));module[_0x8236('0x9')]=function(_0x151688,_0x318ef8){return _0x151688[_0x8236('0xa')](_0x8236('0xb'),attributes,{'tableName':_0x8236('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b38=['../../config/environment','./voicePrefix.attributes','exports','define','voice_prefixes','lodash','util','api','bluebird','request-promise','rimraf'];(function(_0x34b821,_0x504e55){var _0x5e00a0=function(_0x242892){while(--_0x242892){_0x34b821['push'](_0x34b821['shift']());}};_0x5e00a0(++_0x504e55);}(_0x1b38,0x9f));var _0x81b3=function(_0x174a4d,_0x203ae3){_0x174a4d=_0x174a4d-0x0;var _0x240fa1=_0x1b38[_0x174a4d];return _0x240fa1;};'use strict';var _=require(_0x81b3('0x0'));var util=require(_0x81b3('0x1'));var logger=require('../../config/logger')(_0x81b3('0x2'));var moment=require('moment');var BPromise=require(_0x81b3('0x3'));var rp=require(_0x81b3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x81b3('0x5'));var config=require(_0x81b3('0x6'));var attributes=require(_0x81b3('0x7'));module[_0x81b3('0x8')]=function(_0x2f5bdb,_0x195d94){return _0x2f5bdb[_0x81b3('0x9')]('VoicePrefix',attributes,{'tableName':_0x81b3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71522b6..da7b3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ad=['jayson/promise','client','http','redis','defaults','localhost','./voicePrefix.socket','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x10ad,0xf4));var _0xd10a=function(_0xeeca4d,_0x37d7f9){_0xeeca4d=_0xeeca4d-0x0;var _0x159c7b=_0x10ad[_0xeeca4d];return _0x159c7b;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xd10a('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd10a('0x1'));var db=require(_0xd10a('0x2'))['db'];var utils=require(_0xd10a('0x3'));var logger=require(_0xd10a('0x4'))('rpc');var config=require(_0xd10a('0x5'));var jayson=require(_0xd10a('0x6'));var client=jayson[_0xd10a('0x7')][_0xd10a('0x8')]({'port':0x232a});config[_0xd10a('0x9')]=_[_0xd10a('0xa')](config[_0xd10a('0x9')],{'host':_0xd10a('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd10a('0xc'))['register'](socket);function respondWithRpcPromise(_0xd5a84c,_0x356373,_0x2ab9dd){return new BPromise(function(_0x1bce80,_0x57f843){return client[_0xd10a('0xd')](_0xd5a84c,_0x2ab9dd)[_0xd10a('0xe')](function(_0x187f4a){logger['info'](_0xd10a('0xf'),_0x356373,_0xd10a('0x10'));logger[_0xd10a('0x11')](_0xd10a('0x12'),_0x356373,_0xd10a('0x10'),JSON[_0xd10a('0x13')](_0x187f4a));if(_0x187f4a['error']){if(_0x187f4a['error'][_0xd10a('0x14')]===0x1f4){logger[_0xd10a('0x15')](_0xd10a('0xf'),_0x356373,_0x187f4a[_0xd10a('0x15')]['message']);return _0x57f843(_0x187f4a['error'][_0xd10a('0x16')]);}logger[_0xd10a('0x15')](_0xd10a('0xf'),_0x356373,_0x187f4a[_0xd10a('0x15')][_0xd10a('0x16')]);return _0x1bce80(_0x187f4a[_0xd10a('0x15')][_0xd10a('0x16')]);}else{logger[_0xd10a('0x17')](_0xd10a('0xf'),_0x356373,'request\x20sent');_0x1bce80(_0x187f4a['result'][_0xd10a('0x16')]);}})[_0xd10a('0x18')](function(_0x4a0220){logger['error']('VoicePrefix,\x20%s,\x20%s',_0x356373,_0x4a0220);_0x57f843(_0x4a0220);});});}
\ No newline at end of file
+var _0x53ec=['./voicePrefix.socket','register','then','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter'];(function(_0x57f345,_0x316929){var _0x255e43=function(_0x619f61){while(--_0x619f61){_0x57f345['push'](_0x57f345['shift']());}};_0x255e43(++_0x316929);}(_0x53ec,0x192));var _0xc53e=function(_0x542e14,_0x5dfd4b){_0x542e14=_0x542e14-0x0;var _0xe3bbb=_0x53ec[_0x542e14];return _0xe3bbb;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});config[_0xc53e('0xa')]=_[_0xc53e('0xb')](config['redis'],{'host':_0xc53e('0xc'),'port':0x18eb});var socket=require(_0xc53e('0xd'))(new Redis(config[_0xc53e('0xa')]));require(_0xc53e('0xe'))[_0xc53e('0xf')](socket);function respondWithRpcPromise(_0x2c88cb,_0xd82002,_0x361e9d){return new BPromise(function(_0xa98198,_0x4b7cfa){return client['request'](_0x2c88cb,_0x361e9d)[_0xc53e('0x10')](function(_0x5a2da7){logger['info'](_0xc53e('0x11'),_0xd82002,_0xc53e('0x12'));logger[_0xc53e('0x13')](_0xc53e('0x14'),_0xd82002,'request\x20sent',JSON['stringify'](_0x5a2da7));if(_0x5a2da7[_0xc53e('0x15')]){if(_0x5a2da7[_0xc53e('0x15')][_0xc53e('0x16')]===0x1f4){logger[_0xc53e('0x15')](_0xc53e('0x11'),_0xd82002,_0x5a2da7[_0xc53e('0x15')][_0xc53e('0x17')]);return _0x4b7cfa(_0x5a2da7[_0xc53e('0x15')][_0xc53e('0x17')]);}logger[_0xc53e('0x15')]('VoicePrefix,\x20%s,\x20%s',_0xd82002,_0x5a2da7[_0xc53e('0x15')][_0xc53e('0x17')]);return _0xa98198(_0x5a2da7[_0xc53e('0x15')][_0xc53e('0x17')]);}else{logger[_0xc53e('0x18')](_0xc53e('0x11'),_0xd82002,_0xc53e('0x12'));_0xa98198(_0x5a2da7[_0xc53e('0x19')][_0xc53e('0x17')]);}})['catch'](function(_0x546fab){logger[_0xc53e('0x15')](_0xc53e('0x11'),_0xd82002,_0x546fab);_0x4b7cfa(_0x546fab);});});}
\ No newline at end of file
index 071294b..8710012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf257=['removeListener','register','length','voicePrefix:','remove','update','emit'];(function(_0x5f265e,_0x5f29c3){var _0x197592=function(_0x2b02d3){while(--_0x2b02d3){_0x5f265e['push'](_0x5f265e['shift']());}};_0x197592(++_0x5f29c3);}(_0xf257,0x82));var _0x7f25=function(_0x54904e,_0x5647ff){_0x54904e=_0x54904e-0x0;var _0x179c42=_0xf257[_0x54904e];return _0x179c42;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=['save',_0x7f25('0x0'),_0x7f25('0x1')];function createListener(_0x3f7a94,_0x22d4a9){return function(_0x5c712c){_0x22d4a9[_0x7f25('0x2')](_0x3f7a94,_0x5c712c);};}function removeListener(_0x2aca61,_0xd94d7a){return function(){VoicePrefixEvents[_0x7f25('0x3')](_0x2aca61,_0xd94d7a);};}exports[_0x7f25('0x4')]=function(_0x36b013){for(var _0x1998d7=0x0,_0x242a3e=events[_0x7f25('0x5')];_0x1998d7<_0x242a3e;_0x1998d7++){var _0x16e278=events[_0x1998d7];var _0x31a5d8=createListener(_0x7f25('0x6')+_0x16e278,_0x36b013);VoicePrefixEvents['on'](_0x16e278,_0x31a5d8);}};
\ No newline at end of file
+var _0xa249=['length','voicePrefix:','./voicePrefix.events','save','update'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0xa249,0x183));var _0x9a24=function(_0xf88555,_0x272649){_0xf88555=_0xf88555-0x0;var _0x176b63=_0xa249[_0xf88555];return _0x176b63;};'use strict';var VoicePrefixEvents=require(_0x9a24('0x0'));var events=[_0x9a24('0x1'),'remove',_0x9a24('0x2')];function createListener(_0x251d51,_0x575a09){return function(_0x12ef32){_0x575a09['emit'](_0x251d51,_0x12ef32);};}function removeListener(_0x3f83df,_0x48c56d){return function(){VoicePrefixEvents['removeListener'](_0x3f83df,_0x48c56d);};}exports['register']=function(_0x1b0728){for(var _0x167980=0x0,_0x3f59a1=events[_0x9a24('0x3')];_0x167980<_0x3f59a1;_0x167980++){var _0x3f2459=events[_0x167980];var _0x22f220=createListener(_0x9a24('0x4')+_0x3f2459,_0x1b0728);VoicePrefixEvents['on'](_0x3f2459,_0x22f220);}};
\ No newline at end of file
index eb3b0d7..e86f3cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0xcc9235,_0x5a199f){var _0x2f1f81=function(_0x18e63f){while(--_0x18e63f){_0xcc9235['push'](_0xcc9235['shift']());}};_0x2f1f81(++_0x5a199f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x4ffaf4,_0x1de0ef){var _0x43a8eb=function(_0x1fc979){while(--_0x1fc979){_0x4ffaf4['push'](_0x4ffaf4['shift']());}};_0x43a8eb(++_0x1de0ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index 475374a..7c2774f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x964a=['never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','outbound','inbound','default','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','ringall','setDataValue','strategy','type','getDataValue','dialMethod','booked','roundrobin','progressive','predictive','INTEGER','yes','once','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','power','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','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>)','#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,*,*,*','always'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x964a,0x1d5));var _0xa964=function(_0x26076e,_0x4920cb){_0x26076e=_0x26076e-0x0;var _0x4d3a25=_0x964a[_0x26076e];return _0x4d3a25;};'use strict';var Sequelize=require(_0xa964('0x0'));module[_0xa964('0x1')]={'name':{'type':Sequelize[_0xa964('0x2')],'allowNull':![],'unique':_0xa964('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xa964('0x4')]('inbound',_0xa964('0x5')),'allowNull':![],'defaultValue':_0xa964('0x6')},'musiconhold':{'type':Sequelize[_0xa964('0x2')],'defaultValue':_0xa964('0x7')},'announce':{'type':Sequelize[_0xa964('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0xa964('0x4')]('rr','ringall',_0xa964('0x8'),_0xa964('0x9'),_0xa964('0xa'),_0xa964('0xb'),_0xa964('0xc'),_0xa964('0xd'),_0xa964('0xe')),'allowNull':![],'defaultValue':_0xa964('0xf'),'set':function(_0x5ea318){this[_0xa964('0x10')](_0xa964('0x11'),_0x5ea318?_0x5ea318:_0xa964('0xb'));},'get':function(){var _0x3e40c2=this['getDataValue'](_0xa964('0x12'));var _0xf4cc5f=this[_0xa964('0x13')](_0xa964('0x14'));var _0x2b5aac=this[_0xa964('0x13')]('strategy');if(_0x3e40c2==='inbound'){return _0x2b5aac;}if(_0xf4cc5f===_0xa964('0x15')&&_0x2b5aac===_0xa964('0xb')||_0xf4cc5f===_0xa964('0x15')&&_0x2b5aac===_0xa964('0x16')){return _0x2b5aac;}if(_0xf4cc5f===_0xa964('0x17')||_0xf4cc5f===_0xa964('0x18')||_0xf4cc5f==='power'){return _0x2b5aac;}return null;}},'servicelevel':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xa964('0x2')]},'weight':{'type':Sequelize[_0xa964('0x19')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0xa964('0x1a'),'no'),'defaultValue':_0xa964('0x1a')},'autopause':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xa964('0x19')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0xa964('0x1a'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0xa964('0x1a'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xa964('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0xa964('0x1a'),'no'),'defaultValue':_0xa964('0x1a')},'announce_holdtime':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no',_0xa964('0x1b')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xa964('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xa964('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xa964('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xa964('0x2')]},'queue_youarenext':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xa964('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xa964('0x2')]},'queue_quantity1':{'type':Sequelize[_0xa964('0x2')]},'queue_quantity2':{'type':Sequelize[_0xa964('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0xa964('0x2')]},'queue_less_than':{'type':Sequelize[_0xa964('0x2')]},'periodic_announce':{'type':Sequelize[_0xa964('0x1c')],'set':function(_0x59a610){this[_0xa964('0x10')]('periodic_announce',_0x59a610?_0x59a610['join'](','):[]);},'get':function(){return this[_0xa964('0x13')]('periodic_announce')?this['getDataValue'](_0xa964('0x1d'))[_0xa964('0x1e')](','):[];}},'joinempty':{'type':Sequelize[_0xa964('0x2')],'defaultValue':_0xa964('0x1a'),'set':function(_0x19b7f0){this['setDataValue'](_0xa964('0x1f'),_0x19b7f0?_0x19b7f0[_0xa964('0x20')](','):undefined);},'get':function(){return this['getDataValue'](_0xa964('0x1f'))?this[_0xa964('0x13')](_0xa964('0x1f'))[_0xa964('0x1e')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xa964('0x2')],'defaultValue':'no','set':function(_0x4bce82){this[_0xa964('0x10')](_0xa964('0x21'),_0x4bce82?_0x4bce82[_0xa964('0x20')](','):undefined);},'get':function(){return this[_0xa964('0x13')](_0xa964('0x21'))?this[_0xa964('0x13')]('leavewhenempty')[_0xa964('0x1e')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xa964('0x4')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xa964('0x19')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x1a'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xa964('0x2')]},'description':{'type':Sequelize[_0xa964('0x2')]},'acw':{'type':Sequelize[_0xa964('0x22')],'defaultValue':0x0,'set':function(_0xcac7ac){this[_0xa964('0x10')](_0xa964('0x23'),_0xcac7ac);if(_0xcac7ac){if(this[_0xa964('0x13')](_0xa964('0x24'))<0x2){this[_0xa964('0x10')](_0xa964('0x24'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xa964('0x22')],'defaultValue':0x0,'comment':_0xa964('0x25')},'dialMethod':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x26'),'progressive',_0xa964('0x27'),_0xa964('0x18'),'booked'),'defaultValue':'progressive','comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0xa964('0x19')](0x4)[_0xa964('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xa964('0x29')},'dialLimitQueue':{'type':Sequelize[_0xa964('0x19')](0x4)[_0xa964('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xa964('0x2a')},'dialPowerLevel':{'type':Sequelize[_0xa964('0x2b')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xa964('0x2c')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0xa964('0x2d'),_0xa964('0x2e')),'defaultValue':'dropRate','comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xa964('0x2b')](0x2)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xa964('0x2f')},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0xa964('0x28')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xa964('0x30')},'dialOriginateCallerIdName':{'type':Sequelize[_0xa964('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xa964('0x28')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa964('0x31')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':'tTxX','comment':_0xa964('0x32')},'dialQueueTimeout':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xa964('0x2')],'comment':_0xa964('0x33')},'dialCongestionMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa964('0x34')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xa964('0x19')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa964('0x35')},'dialBusyMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0xa964('0x19')](0x5)[_0xa964('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'comment':_0xa964('0x36')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xa964('0x19')](0x5)[_0xa964('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa964('0x37')},'dialGlobalMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xa964('0x38')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xa964('0x2')],'defaultValue':_0xa964('0x39')},'dialPrefix':{'type':Sequelize[_0xa964('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xa964('0x3a'),_0xa964('0x3b'),_0xa964('0x3c')),'defaultValue':_0xa964('0x3a')},'dialAMDActive':{'type':Sequelize[_0xa964('0x22')],'defaultValue':0x0,'comment':_0xa964('0x3d')},'dialAMDInitialSilence':{'type':Sequelize[_0xa964('0x19')](0x9)[_0xa964('0x28')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xa964('0x3e')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xa964('0x28')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xa964('0x3f')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xa964('0x19')](0x9)[_0xa964('0x28')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xa964('0x40')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xa964('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xa964('0x19')](0x9)[_0xa964('0x28')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xa964('0x41')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xa964('0x19')](0x9)[_0xa964('0x28')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xa964('0x42')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xa964('0x19')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xa964('0x43')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xa964('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xa964('0x44')},'dialRecallMeTimeout':{'type':Sequelize[_0xa964('0x19')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xa964('0x45')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xa964('0x46')},'dialOrderByScheduledAt':{'type':Sequelize[_0xa964('0x4')](_0xa964('0x47'),_0xa964('0x48')),'defaultValue':_0xa964('0x47')},'dialQueueProject2':{'type':Sequelize[_0xa964('0x2')],'comment':_0xa964('0x33')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xa964('0x22')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xa964('0x22')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xa964('0x49')},'dialCutDigit':{'type':Sequelize[_0xa964('0x19')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xa964('0x4a')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa964('0x4b')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xa964('0x19')](0x5)[_0xa964('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa964('0x4c')},'dialDropMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa964('0x4d')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa964('0x4e')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa964('0x4f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xa964('0x19')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa964('0x50')},'dialMachineMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa964('0x51')},'dialMachineRetryFrequency':{'type':Sequelize[_0xa964('0x19')](0x5)[_0xa964('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa964('0x52')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa964('0x53')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xa964('0x19')](0x5)[_0xa964('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa964('0x54')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa964('0x19')],'allowNull':!![],'comment':_0xa964('0x55')},'mandatoryDisposition':{'type':Sequelize[_0xa964('0x22')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x12ebe1){if(!_0x12ebe1)this[_0xa964('0x10')](_0xa964('0x56'),null);this[_0xa964('0x10')](_0xa964('0x57'),_0x12ebe1);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xa964('0x19')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xa964('0x19')](0x3)[_0xa964('0x28')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xa964('0x22')],'defaultValue':![]}};
\ No newline at end of file
+var _0x66fb=['split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','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)','#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,*,*,*','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','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','inbound','outbound','default','leastrecent','fewestcalls','rrmemory','linear','wrandom','setDataValue','strategy','getDataValue','type','dialMethod','booked','progressive','predictive','power','INTEGER','yes','all','once','periodic_announce','join'];(function(_0x108b9e,_0x1ec154){var _0x2c4bf6=function(_0x20519c){while(--_0x20519c){_0x108b9e['push'](_0x108b9e['shift']());}};_0x2c4bf6(++_0x1ec154);}(_0x66fb,0x86));var _0xb66f=function(_0x5c538d,_0x28f76f){_0x5c538d=_0x5c538d-0x0;var _0x58bb56=_0x66fb[_0x5c538d];return _0x58bb56;};'use strict';var Sequelize=require(_0xb66f('0x0'));module[_0xb66f('0x1')]={'name':{'type':Sequelize[_0xb66f('0x2')],'allowNull':![],'unique':_0xb66f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x5'),_0xb66f('0x6')),'allowNull':![],'defaultValue':_0xb66f('0x5')},'musiconhold':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':_0xb66f('0x7')},'announce':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0xb66f('0x4')]('rr','ringall',_0xb66f('0x8'),_0xb66f('0x9'),'random',_0xb66f('0xa'),_0xb66f('0xb'),_0xb66f('0xc'),'rrordered'),'allowNull':![],'defaultValue':'ringall','set':function(_0x140ab6){this[_0xb66f('0xd')](_0xb66f('0xe'),_0x140ab6?_0x140ab6:_0xb66f('0xa'));},'get':function(){var _0x4c993d=this[_0xb66f('0xf')](_0xb66f('0x10'));var _0x26860f=this[_0xb66f('0xf')](_0xb66f('0x11'));var _0x138a07=this[_0xb66f('0xf')](_0xb66f('0xe'));if(_0x4c993d===_0xb66f('0x5')){return _0x138a07;}if(_0x26860f===_0xb66f('0x12')&&_0x138a07===_0xb66f('0xa')||_0x26860f===_0xb66f('0x12')&&_0x138a07==='roundrobin'){return _0x138a07;}if(_0x26860f===_0xb66f('0x13')||_0x26860f===_0xb66f('0x14')||_0x26860f===_0xb66f('0x15')){return _0x138a07;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xb66f('0x16')](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xb66f('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0xb66f('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xb66f('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x17'),'no'),'defaultValue':'yes'},'autopause':{'type':Sequelize['ENUM']('yes','no',_0xb66f('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xb66f('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xb66f('0x4')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0xb66f('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xb66f('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xb66f('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xb66f('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xb66f('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x17'),'no'),'defaultValue':_0xb66f('0x17')},'announce_holdtime':{'type':Sequelize['ENUM'](_0xb66f('0x17'),'no',_0xb66f('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x17'),'no')},'announce_position_limit':{'type':Sequelize[_0xb66f('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xb66f('0x2')]},'queue_youarenext':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xb66f('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xb66f('0x2')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0xb66f('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0xb66f('0x2')]},'queue_less_than':{'type':Sequelize[_0xb66f('0x2')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x26bb50){this[_0xb66f('0xd')](_0xb66f('0x1a'),_0x26bb50?_0x26bb50[_0xb66f('0x1b')](','):[]);},'get':function(){return this[_0xb66f('0xf')](_0xb66f('0x1a'))?this['getDataValue'](_0xb66f('0x1a'))[_0xb66f('0x1c')](','):[];}},'joinempty':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':'yes','set':function(_0x241b87){this[_0xb66f('0xd')](_0xb66f('0x1d'),_0x241b87?_0x241b87[_0xb66f('0x1b')](','):undefined);},'get':function(){return this['getDataValue']('joinempty')?this[_0xb66f('0xf')](_0xb66f('0x1d'))[_0xb66f('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x53f727){this['setDataValue'](_0xb66f('0x1e'),_0x53f727?_0x53f727[_0xb66f('0x1b')](','):undefined);},'get':function(){return this[_0xb66f('0xf')](_0xb66f('0x1e'))?this[_0xb66f('0xf')]('leavewhenempty')['split'](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xb66f('0x4')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0xb66f('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xb66f('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0xb66f('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xb66f('0x2')]},'description':{'type':Sequelize[_0xb66f('0x2')]},'acw':{'type':Sequelize[_0xb66f('0x1f')],'defaultValue':0x0,'set':function(_0x52f9dc){this[_0xb66f('0xd')](_0xb66f('0x20'),_0x52f9dc);if(_0x52f9dc){if(this[_0xb66f('0xf')](_0xb66f('0x21'))<0x2){this[_0xb66f('0xd')](_0xb66f('0x21'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xb66f('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xb66f('0x1f')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0xb66f('0x4')]('preview',_0xb66f('0x13'),_0xb66f('0x15'),'predictive',_0xb66f('0x12')),'defaultValue':_0xb66f('0x13'),'comment':_0xb66f('0x22')},'dialLimitChannel':{'type':Sequelize[_0xb66f('0x16')](0x4)[_0xb66f('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb66f('0x24')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xb66f('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb66f('0x25')},'dialPowerLevel':{'type':Sequelize[_0xb66f('0x26')](0x2)[_0xb66f('0x23')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xb66f('0x27')},'dialPredictiveOptimization':{'type':Sequelize[_0xb66f('0x4')](_0xb66f('0x28'),_0xb66f('0x29')),'defaultValue':_0xb66f('0x29'),'comment':_0xb66f('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xb66f('0x26')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xb66f('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xb66f('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xb66f('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x2d')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xb66f('0x2e'),'comment':_0xb66f('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x30')},'dialQueueProject':{'type':Sequelize[_0xb66f('0x2')],'comment':_0xb66f('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xb66f('0x16')](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xb66f('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x33')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb66f('0x34')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb66f('0x23')],'defaultValue':0x3,'comment':_0xb66f('0x35')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb66f('0x36')},'dialGlobalMaxRetry':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xb66f('0x37')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':_0xb66f('0x38')},'dialPrefix':{'type':Sequelize[_0xb66f('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xb66f('0x4')]('always',_0xb66f('0x39'),_0xb66f('0x3a')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xb66f('0x1f')],'defaultValue':0x0,'comment':_0xb66f('0x3b')},'dialAMDInitialSilence':{'type':Sequelize[_0xb66f('0x16')](0x9)[_0xb66f('0x23')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xb66f('0x3c')},'dialAMDGreeting':{'type':Sequelize[_0xb66f('0x16')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xb66f('0x16')](0x9)[_0xb66f('0x23')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xb66f('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xb66f('0x16')](0x9)[_0xb66f('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb66f('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0xb66f('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xb66f('0x3f')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xb66f('0x16')](0x9)[_0xb66f('0x23')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xb66f('0x40')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xb66f('0x16')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xb66f('0x41')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xb66f('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xb66f('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0xb66f('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xb66f('0x42')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xb66f('0x43')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xb66f('0x44'),_0xb66f('0x45')),'defaultValue':_0xb66f('0x44')},'dialQueueProject2':{'type':Sequelize[_0xb66f('0x2')],'comment':_0xb66f('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xb66f('0x1f')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb66f('0x46')},'dialCutDigit':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb66f('0x47')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xb66f('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x48')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xb66f('0x16')](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb66f('0x49')},'dialDropMaxRetry':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x4a')},'dialDropRetryFrequency':{'type':Sequelize[_0xb66f('0x16')](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb66f('0x4b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xb66f('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x4c')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xb66f('0x16')](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x4d')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb66f('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb66f('0x4e')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xb66f('0x16')](0x5)[_0xb66f('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb66f('0x16')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x471ad0){if(!_0x471ad0)this['setDataValue'](_0xb66f('0x4f'),null);this[_0xb66f('0xd')](_0xb66f('0x50'),_0x471ad0);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xb66f('0x1f')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xb66f('0x16')](0x3)[_0xb66f('0x23')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xb66f('0x1f')],'defaultValue':![]}};
\ No newline at end of file
index db3cb4f..2e008c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa280=['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','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','value','includes','type','find','name','UserProfileResource','destroy','error','stack','send','index','map','VoiceQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','sort','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','include','create','body','user','get','role','userProfileId','clone','createdAt','omit','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getHoppers','findOne','CmHopper','hasOwnProperty','nolimit','order','VoiceQueueId','getHopperHistories','CmHopperHistory','pick','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','teams','Agents','online','voicePause','interface','forEach','penalty','addTeams','TeamVoiceQueue','upsert','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','SIP/%s','userVoiceQueue:save','removeTeams','User','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','sequelize','toString','QueryTypes','every','TeamId','all','union','compact','transaction','ids','userVoiceQueue:remove','spread','emit','push','isNil','removeAgents','isArray','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','into','cm_hopper','scheduledAt','ListId','phone','CmListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','fromQuery','ContactId','cm_hopper_additional_phones','h.id','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists'];(function(_0x4d337e,_0x2f7eed){var _0x247963=function(_0x3d6564){while(--_0x3d6564){_0x4d337e['push'](_0x4d337e['shift']());}};_0x247963(++_0x2f7eed);}(_0xa280,0xc4));var _0x0a28=function(_0x2237be,_0x2ed5c1){_0x2237be=_0x2237be-0x0;var _0x3312ab=_0xa280[_0x2237be];return _0x3312ab;};'use strict';var emlformat=require(_0x0a28('0x0'));var rimraf=require(_0x0a28('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0a28('0x2'));var rp=require(_0x0a28('0x3'));var moment=require(_0x0a28('0x4'));var BPromise=require(_0x0a28('0x5'));var Mustache=require(_0x0a28('0x6'));var util=require(_0x0a28('0x7'));var path=require(_0x0a28('0x8'));var sox=require(_0x0a28('0x9'));var csv=require(_0x0a28('0xa'));var ejs=require(_0x0a28('0xb'));var fs=require('fs');var fs_extra=require(_0x0a28('0xc'));var _=require(_0x0a28('0xd'));var squel=require(_0x0a28('0xe'));var crypto=require(_0x0a28('0xf'));var jsforce=require(_0x0a28('0x10'));var deskjs=require(_0x0a28('0x11'));var toCsv=require(_0x0a28('0xa'));var querystring=require(_0x0a28('0x12'));var Papa=require('papaparse');var Redis=require(_0x0a28('0x13'));var authService=require(_0x0a28('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x0a28('0x15'));var hardwareService=require(_0x0a28('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x0a28('0x17'));var config=require(_0x0a28('0x18'));var licenseUtil=require(_0x0a28('0x19'));var db=require(_0x0a28('0x1a'))['db'];config[_0x0a28('0x1b')]=_[_0x0a28('0x1c')](config[_0x0a28('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x0a28('0x1d'))(new Redis(config[_0x0a28('0x1b')]));require('./voiceQueue.socket')[_0x0a28('0x1e')](socket);function respondWithStatusCode(_0x10225c,_0xc201a){_0xc201a=_0xc201a||0xcc;return function(_0x28dd1e){if(_0x28dd1e){return _0x10225c['sendStatus'](_0xc201a);}return _0x10225c[_0x0a28('0x1f')](_0xc201a)[_0x0a28('0x20')]();};}function respondWithResult(_0xf28728,_0x4570f9){_0x4570f9=_0x4570f9||0xc8;return function(_0x5c73ca){if(_0x5c73ca){return _0xf28728[_0x0a28('0x1f')](_0x4570f9)[_0x0a28('0x21')](_0x5c73ca);}};}function respondWithFilteredResult(_0x120b12,_0x2b5a00){return function(_0x54fcbe){if(_0x54fcbe){var _0x4ed461=typeof _0x2b5a00[_0x0a28('0x22')]===_0x0a28('0x23')&&typeof _0x2b5a00[_0x0a28('0x24')]==='undefined';var _0x18ac23=_0x54fcbe[_0x0a28('0x25')];var _0xb5d7f5=_0x4ed461?0x0:_0x2b5a00['offset'];var _0x6d727c=_0x4ed461?_0x54fcbe[_0x0a28('0x25')]:_0x2b5a00[_0x0a28('0x22')]+_0x2b5a00['limit'];var _0x137973;if(_0x6d727c>=_0x18ac23){_0x6d727c=_0x18ac23;_0x137973=0xc8;}else{_0x137973=0xce;}_0x120b12[_0x0a28('0x1f')](_0x137973);return _0x120b12[_0x0a28('0x26')](_0x0a28('0x27'),_0xb5d7f5+'-'+_0x6d727c+'/'+_0x18ac23)[_0x0a28('0x21')](_0x54fcbe);}return null;};}function patchUpdates(_0x1d9f30){return function(_0x2d0591){try{jsonpatch[_0x0a28('0x28')](_0x2d0591,_0x1d9f30,!![]);}catch(_0x5bc174){return BPromise[_0x0a28('0x29')](_0x5bc174);}return _0x2d0591[_0x0a28('0x2a')]();};}function saveUpdates(_0x5b4315,_0x5c0ba5){return function(_0x544fc9){if(_0x544fc9){return _0x544fc9[_0x0a28('0x2b')](_0x5b4315)[_0x0a28('0x2c')](function(_0x1be0a8){return _0x1be0a8;});}return null;};}function removeEntity(_0x44be23,_0x356864){return function(_0x2ad313){if(_0x2ad313){return _0x2ad313['destroy']()['then'](function(){var _0x239556=_0x2ad313['get']({'plain':!![]});var _0x509563=[{'name':_0x0a28('0x2d'),'value':_0x0a28('0x2e'),'ignore':![]},{'name':_0x0a28('0x2f'),'value':_0x0a28('0x30'),'ignore':![]}];var _0x2f7d4d=_(_0x509563)[_0x0a28('0x31')](_0x0a28('0x32'))['map']('value')[_0x0a28('0x33')]();if(_[_0x0a28('0x34')](_0x2f7d4d,_0x239556[_0x0a28('0x35')])){return;}var _0x4b6ceb=_[_0x0a28('0x36')](_0x509563,['value',_0x239556[_0x0a28('0x35')]])[_0x0a28('0x37')];return db[_0x0a28('0x38')][_0x0a28('0x39')]({'where':{'type':_0x4b6ceb,'resourceId':_0x239556['id']}})['then'](function(){return _0x2ad313;});})[_0x0a28('0x2c')](function(){_0x44be23['status'](0xcc)[_0x0a28('0x20')]();});}};}function handleEntityNotFound(_0x4ebea8,_0x77a88d){return function(_0x9c1131){if(!_0x9c1131){_0x4ebea8['sendStatus'](0x194);}return _0x9c1131;};}function handleError(_0x412925,_0x3b4815){_0x3b4815=_0x3b4815||0x1f4;return function(_0x4d4dc5){logger[_0x0a28('0x3a')](_0x4d4dc5[_0x0a28('0x3b')]);if(_0x4d4dc5[_0x0a28('0x37')]){delete _0x4d4dc5[_0x0a28('0x37')];}_0x412925['status'](_0x3b4815)[_0x0a28('0x3c')](_0x4d4dc5);};}exports[_0x0a28('0x3d')]=function(_0x3f0c21,_0x133977){var _0x1810aa={},_0x19b0ae={},_0x1f2c82={'count':0x0,'rows':[]};var _0x544817=_[_0x0a28('0x3e')](db[_0x0a28('0x3f')][_0x0a28('0x40')],function(_0x37ed63){return{'name':_0x37ed63[_0x0a28('0x41')],'type':_0x37ed63['type'][_0x0a28('0x42')]};});_0x19b0ae[_0x0a28('0x43')]=_[_0x0a28('0x3e')](_0x544817,_0x0a28('0x37'));_0x19b0ae[_0x0a28('0x44')]=_[_0x0a28('0x45')](_0x3f0c21[_0x0a28('0x44')]);_0x19b0ae[_0x0a28('0x46')]=_[_0x0a28('0x47')](_0x19b0ae[_0x0a28('0x43')],_0x19b0ae[_0x0a28('0x44')]);_0x1810aa[_0x0a28('0x48')]=_['intersection'](_0x19b0ae['model'],qs['fields'](_0x3f0c21[_0x0a28('0x44')][_0x0a28('0x49')]));_0x1810aa[_0x0a28('0x48')]=_0x1810aa[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x1810aa[_0x0a28('0x48')]:_0x19b0ae[_0x0a28('0x43')];if(!_0x3f0c21[_0x0a28('0x44')]['hasOwnProperty']('nolimit')){_0x1810aa[_0x0a28('0x24')]=qs[_0x0a28('0x24')](_0x3f0c21[_0x0a28('0x44')][_0x0a28('0x24')]);_0x1810aa[_0x0a28('0x22')]=qs[_0x0a28('0x22')](_0x3f0c21[_0x0a28('0x44')][_0x0a28('0x22')]);}_0x1810aa['order']=qs[_0x0a28('0x4b')](_0x3f0c21[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x1810aa['where']=qs[_0x0a28('0x46')](_['pick'](_0x3f0c21['query'],_0x19b0ae[_0x0a28('0x46')]),_0x544817);if(_0x3f0c21[_0x0a28('0x44')]['filter']){_0x1810aa[_0x0a28('0x4c')]=_[_0x0a28('0x4d')](_0x1810aa[_0x0a28('0x4c')],{'$or':_[_0x0a28('0x3e')](_0x544817,function(_0x3328a3){if(_0x3328a3[_0x0a28('0x35')]!==_0x0a28('0x4e')){var _0x4b1f08={};_0x4b1f08[_0x3328a3[_0x0a28('0x37')]]={'$like':'%'+_0x3f0c21[_0x0a28('0x44')][_0x0a28('0x31')]+'%'};return _0x4b1f08;}})});}_0x1810aa=_[_0x0a28('0x4d')]({},_0x1810aa,_0x3f0c21[_0x0a28('0x4f')]);var _0x47413d={'where':_0x1810aa['where']};return db['VoiceQueue'][_0x0a28('0x25')](_0x47413d)['then'](function(_0x28db5b){_0x1f2c82[_0x0a28('0x25')]=_0x28db5b;if(_0x3f0c21['query'][_0x0a28('0x50')]){_0x1810aa['include']=[{'all':!![]}];}return db[_0x0a28('0x3f')][_0x0a28('0x51')](_0x1810aa);})[_0x0a28('0x2c')](function(_0x35c8e0){_0x1f2c82[_0x0a28('0x52')]=_0x35c8e0;return _0x1f2c82;})[_0x0a28('0x2c')](respondWithFilteredResult(_0x133977,_0x1810aa))[_0x0a28('0x53')](handleError(_0x133977,null));};exports[_0x0a28('0x54')]=function(_0xf5626e,_0x3c5d92){var _0x3d4c30={'raw':![],'where':{'id':_0xf5626e['params']['id']}},_0x213c15={};_0x213c15[_0x0a28('0x43')]=_['keys'](db[_0x0a28('0x3f')][_0x0a28('0x40')]);_0x213c15[_0x0a28('0x44')]=_[_0x0a28('0x45')](_0xf5626e[_0x0a28('0x44')]);_0x213c15['filters']=_[_0x0a28('0x47')](_0x213c15['model'],_0x213c15[_0x0a28('0x44')]);_0x3d4c30[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x213c15['model'],qs['fields'](_0xf5626e[_0x0a28('0x44')][_0x0a28('0x49')]));_0x3d4c30[_0x0a28('0x48')]=_0x3d4c30[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x3d4c30[_0x0a28('0x48')]:_0x213c15[_0x0a28('0x43')];if(_0xf5626e[_0x0a28('0x44')]['includeAll']){_0x3d4c30[_0x0a28('0x55')]=[{'all':!![]}];}_0x3d4c30=_[_0x0a28('0x4d')]({},_0x3d4c30,_0xf5626e[_0x0a28('0x4f')]);return db[_0x0a28('0x3f')][_0x0a28('0x36')](_0x3d4c30)[_0x0a28('0x2c')](handleEntityNotFound(_0x3c5d92,null))[_0x0a28('0x2c')](respondWithResult(_0x3c5d92,null))[_0x0a28('0x53')](handleError(_0x3c5d92,null));};exports[_0x0a28('0x56')]=function(_0x9283bd,_0x441794){return db[_0x0a28('0x3f')][_0x0a28('0x56')](_0x9283bd[_0x0a28('0x57')],{})[_0x0a28('0x2c')](function(_0x9e8cbe){var _0xac1d6b=_0x9283bd[_0x0a28('0x58')][_0x0a28('0x59')]({'plain':!![]});if(!_0xac1d6b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xac1d6b[_0x0a28('0x5a')]===_0x0a28('0x58')){var _0x24a781=_0x9e8cbe[_0x0a28('0x59')]({'plain':!![]});var _0x28081e=[{'name':_0x0a28('0x2d'),'value':_0x0a28('0x2e')},{'name':_0x0a28('0x2f'),'value':_0x0a28('0x30')}];var _0x46352e=_[_0x0a28('0x36')](_0x28081e,[_0x0a28('0x33'),_0x24a781[_0x0a28('0x35')]])[_0x0a28('0x37')];return db['UserProfileSection']['find']({'where':{'name':_0x46352e,'userProfileId':_0xac1d6b[_0x0a28('0x5b')]},'raw':!![]})[_0x0a28('0x2c')](function(_0x2e4dbe){if(_0x2e4dbe&&_0x2e4dbe['autoAssociation']===0x0){return db[_0x0a28('0x38')][_0x0a28('0x56')]({'name':_0x24a781[_0x0a28('0x37')],'resourceId':_0x24a781['id'],'type':_0x2e4dbe['name'],'sectionId':_0x2e4dbe['id']},{})[_0x0a28('0x2c')](function(){return _0x9e8cbe;});}else{return _0x9e8cbe;}})[_0x0a28('0x53')](function(_0x1af2ef){logger[_0x0a28('0x3a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1af2ef);throw _0x1af2ef;});}return _0x9e8cbe;})['then'](respondWithResult(_0x441794,0xc9))['catch'](handleError(_0x441794,null));};exports[_0x0a28('0x5c')]=function(_0x43172f,_0x5ac5aa){var _0x1c7b3f={'where':{'id':_0x43172f['params']['id']}},_0x1bbf07={};_0x1bbf07[_0x0a28('0x43')]=_[_0x0a28('0x45')](db['VoiceQueue']['rawAttributes']);_0x1c7b3f[_0x0a28('0x48')]=_['intersection'](_0x1bbf07[_0x0a28('0x43')],qs[_0x0a28('0x49')](_0x43172f[_0x0a28('0x44')]['fields']));_0x1c7b3f[_0x0a28('0x48')]=_0x1c7b3f[_0x0a28('0x48')]['length']?_0x1c7b3f[_0x0a28('0x48')]:_0x1bbf07[_0x0a28('0x43')];if(_0x43172f['query']['includeAll']){_0x1c7b3f['include']=[{'all':!![]}];}_0x1c7b3f=_[_0x0a28('0x4d')]({},_0x1c7b3f,_0x43172f[_0x0a28('0x4f')]);return db[_0x0a28('0x3f')]['find'](_0x1c7b3f)[_0x0a28('0x2c')](handleEntityNotFound(_0x5ac5aa,null))[_0x0a28('0x2c')](function(_0x26f24c){if(_0x26f24c){var _0x28b530=_0x26f24c[_0x0a28('0x59')]({'plain':!![]});_0x28b530=qs['omit'](_0x28b530,['id',_0x0a28('0x5d'),'updatedAt']);_0x43172f['body']=_[_0x0a28('0x5e')](_0x43172f[_0x0a28('0x57')],['id',_0x0a28('0x5d'),_0x0a28('0x5f')]);return db[_0x0a28('0x3f')]['create'](_[_0x0a28('0x4d')](_0x28b530,_0x43172f[_0x0a28('0x57')]),{'include':_0x43172f[_0x0a28('0x44')][_0x0a28('0x50')]?[{'all':!![]}]:undefined})[_0x0a28('0x2c')](function(_0x1ea83d){var _0x21852f=_0x43172f[_0x0a28('0x58')][_0x0a28('0x59')]({'plain':!![]});if(!_0x21852f)throw new Error(_0x0a28('0x60'));if(_0x21852f[_0x0a28('0x5a')]==='user'){var _0x430228=_0x1ea83d[_0x0a28('0x59')]({'plain':!![]});var _0x52ae2f=[{'name':_0x0a28('0x2d'),'value':_0x0a28('0x2e')},{'name':'QueueCampaigns','value':_0x0a28('0x30')}];var _0x4654d7=_[_0x0a28('0x36')](_0x52ae2f,[_0x0a28('0x33'),_0x430228['type']])[_0x0a28('0x37')];return db[_0x0a28('0x61')][_0x0a28('0x36')]({'where':{'name':_0x4654d7,'userProfileId':_0x21852f[_0x0a28('0x5b')]},'raw':!![]})[_0x0a28('0x2c')](function(_0x5cc704){if(_0x5cc704&&_0x5cc704[_0x0a28('0x62')]===0x0){return db[_0x0a28('0x38')][_0x0a28('0x56')]({'name':_0x430228['name'],'resourceId':_0x430228['id'],'type':_0x5cc704['name'],'sectionId':_0x5cc704['id']},{})[_0x0a28('0x2c')](function(){return _0x1ea83d;});}else{return _0x1ea83d;}})['catch'](function(_0x1043e5){logger[_0x0a28('0x3a')](_0x0a28('0x63'),_0x1043e5);throw _0x1043e5;});}return _0x1ea83d;});}})[_0x0a28('0x2c')](respondWithResult(_0x5ac5aa,0xc9))['catch'](handleError(_0x5ac5aa,null));};exports[_0x0a28('0x2b')]=function(_0x55faec,_0x317e82){if(_0x55faec['body']['id']){delete _0x55faec[_0x0a28('0x57')]['id'];}return db['VoiceQueue']['find']({'where':{'id':_0x55faec[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x317e82,null))[_0x0a28('0x2c')](saveUpdates(_0x55faec[_0x0a28('0x57')],null))['then'](respondWithResult(_0x317e82,null))[_0x0a28('0x53')](handleError(_0x317e82,null));};exports[_0x0a28('0x39')]=function(_0x27bd59,_0x384ed0){return db[_0x0a28('0x3f')]['find']({'where':{'id':_0x27bd59[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x384ed0,null))[_0x0a28('0x2c')](removeEntity(_0x384ed0,null))[_0x0a28('0x53')](handleError(_0x384ed0,null));};exports[_0x0a28('0x65')]=function(_0x5d7c87,_0x2458f5,_0x4b8842){var _0x51d854={'raw':![],'where':{}};var _0x4654d5={};var _0x40dae7={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x0a28('0x66')]({'where':{'id':_0x5d7c87[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x2458f5,null))[_0x0a28('0x2c')](function(_0x297811){if(_0x297811){_0x4654d5[_0x0a28('0x43')]=_[_0x0a28('0x45')](db[_0x0a28('0x67')]['rawAttributes']);_0x4654d5['query']=_[_0x0a28('0x45')](_0x5d7c87[_0x0a28('0x44')]);_0x4654d5[_0x0a28('0x46')]=_[_0x0a28('0x47')](_0x4654d5[_0x0a28('0x43')],_0x4654d5[_0x0a28('0x44')]);_0x51d854[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x4654d5[_0x0a28('0x43')],qs[_0x0a28('0x49')](_0x5d7c87[_0x0a28('0x44')][_0x0a28('0x49')]));_0x51d854[_0x0a28('0x48')]=_0x51d854[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x51d854[_0x0a28('0x48')]:_0x4654d5[_0x0a28('0x43')];if(!_0x5d7c87[_0x0a28('0x44')][_0x0a28('0x68')](_0x0a28('0x69'))){_0x51d854[_0x0a28('0x24')]=qs[_0x0a28('0x24')](_0x5d7c87[_0x0a28('0x44')][_0x0a28('0x24')]);_0x51d854[_0x0a28('0x22')]=qs[_0x0a28('0x22')](_0x5d7c87[_0x0a28('0x44')][_0x0a28('0x22')]);}_0x51d854[_0x0a28('0x6a')]=qs[_0x0a28('0x4b')](_0x5d7c87[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x51d854[_0x0a28('0x4c')]=qs[_0x0a28('0x46')](_['pick'](_0x5d7c87[_0x0a28('0x44')],_0x4654d5[_0x0a28('0x46')]));_0x51d854['where'][_0x0a28('0x6b')]=_0x297811['id'];if(_0x5d7c87[_0x0a28('0x44')]['filter']){_0x51d854[_0x0a28('0x4c')]=_[_0x0a28('0x4d')](_0x51d854['where'],{'$or':_[_0x0a28('0x3e')](_0x51d854['attributes'],function(_0x1c1841){var _0xe9c4e1={};_0xe9c4e1[_0x1c1841]={'$like':'%'+_0x5d7c87[_0x0a28('0x44')][_0x0a28('0x31')]+'%'};return _0xe9c4e1;})});}_0x51d854=_[_0x0a28('0x4d')]({},_0x51d854,_0x5d7c87[_0x0a28('0x4f')]);return db[_0x0a28('0x67')][_0x0a28('0x25')]({'where':_0x51d854[_0x0a28('0x4c')]})[_0x0a28('0x2c')](function(_0x1c4a23){_0x40dae7[_0x0a28('0x25')]=_0x1c4a23;if(_0x5d7c87[_0x0a28('0x44')][_0x0a28('0x50')]){_0x51d854[_0x0a28('0x55')]=[{'all':!![]}];}return db[_0x0a28('0x67')][_0x0a28('0x51')](_0x51d854);})['then'](function(_0x311cc9){_0x40dae7[_0x0a28('0x52')]=_0x311cc9;return _0x40dae7;});}})[_0x0a28('0x2c')](respondWithFilteredResult(_0x2458f5,_0x51d854))['catch'](handleError(_0x2458f5,null));};exports[_0x0a28('0x6c')]=function(_0x379da5,_0x3a3b31,_0x30b6c4){var _0x500020={'raw':!![],'where':{}};var _0x4a88b9={};var _0x6e81f4={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x0a28('0x66')]({'where':{'id':_0x379da5[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x3a3b31,null))['then'](function(_0x2ed2e4){if(_0x2ed2e4){_0x4a88b9[_0x0a28('0x43')]=_[_0x0a28('0x45')](db[_0x0a28('0x6d')][_0x0a28('0x40')]);_0x4a88b9[_0x0a28('0x44')]=_[_0x0a28('0x45')](_0x379da5[_0x0a28('0x44')]);_0x4a88b9[_0x0a28('0x46')]=_[_0x0a28('0x47')](_0x4a88b9['model'],_0x4a88b9[_0x0a28('0x44')]);_0x500020[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x4a88b9['model'],qs[_0x0a28('0x49')](_0x379da5['query'][_0x0a28('0x49')]));_0x500020[_0x0a28('0x48')]=_0x500020[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x500020[_0x0a28('0x48')]:_0x4a88b9[_0x0a28('0x43')];if(!_0x379da5['query'][_0x0a28('0x68')](_0x0a28('0x69'))){_0x500020['limit']=qs[_0x0a28('0x24')](_0x379da5[_0x0a28('0x44')][_0x0a28('0x24')]);_0x500020['offset']=qs[_0x0a28('0x22')](_0x379da5['query']['offset']);}_0x500020[_0x0a28('0x6a')]=qs[_0x0a28('0x4b')](_0x379da5['query']['sort']);_0x500020[_0x0a28('0x4c')]=qs[_0x0a28('0x46')](_[_0x0a28('0x6e')](_0x379da5[_0x0a28('0x44')],_0x4a88b9[_0x0a28('0x46')]));_0x500020[_0x0a28('0x4c')][_0x0a28('0x6b')]=_0x2ed2e4['id'];if(_0x379da5[_0x0a28('0x44')][_0x0a28('0x31')]){_0x500020[_0x0a28('0x4c')]=_[_0x0a28('0x4d')](_0x500020[_0x0a28('0x4c')],{'$or':_['map'](_0x500020[_0x0a28('0x48')],function(_0x3471c0){var _0x236a67={};_0x236a67[_0x3471c0]={'$like':'%'+_0x379da5[_0x0a28('0x44')][_0x0a28('0x31')]+'%'};return _0x236a67;})});}_0x500020=_[_0x0a28('0x4d')]({},_0x500020,_0x379da5[_0x0a28('0x4f')]);return db[_0x0a28('0x6d')][_0x0a28('0x25')]({'where':_0x500020['where']})[_0x0a28('0x2c')](function(_0x3a82d1){_0x6e81f4[_0x0a28('0x25')]=_0x3a82d1;if(_0x379da5[_0x0a28('0x44')][_0x0a28('0x50')]){_0x500020['include']=[{'all':!![]}];}return db[_0x0a28('0x6d')][_0x0a28('0x51')](_0x500020);})['then'](function(_0x1c1041){_0x6e81f4['rows']=_0x1c1041;return _0x6e81f4;});}})[_0x0a28('0x2c')](respondWithFilteredResult(_0x3a3b31,_0x500020))[_0x0a28('0x53')](handleError(_0x3a3b31,null));};exports[_0x0a28('0x6f')]=function(_0x30eae1,_0x470aef,_0x49f951){var _0x122d62={'raw':!![],'where':{}};var _0x1f7985={};var _0x46a2bf={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x30eae1[_0x0a28('0x64')]['id']}})['then'](handleEntityNotFound(_0x470aef,null))['then'](function(_0x1ac33c){if(_0x1ac33c){_0x1f7985[_0x0a28('0x43')]=_['keys'](db[_0x0a28('0x70')]['rawAttributes']);_0x1f7985[_0x0a28('0x44')]=_[_0x0a28('0x45')](_0x30eae1['query']);_0x1f7985[_0x0a28('0x46')]=_[_0x0a28('0x47')](_0x1f7985[_0x0a28('0x43')],_0x1f7985[_0x0a28('0x44')]);_0x122d62[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x1f7985[_0x0a28('0x43')],qs[_0x0a28('0x49')](_0x30eae1[_0x0a28('0x44')][_0x0a28('0x49')]));_0x122d62[_0x0a28('0x48')]=_0x122d62['attributes']['length']?_0x122d62['attributes']:_0x1f7985[_0x0a28('0x43')];if(!_0x30eae1[_0x0a28('0x44')][_0x0a28('0x68')](_0x0a28('0x69'))){_0x122d62['limit']=qs['limit'](_0x30eae1[_0x0a28('0x44')][_0x0a28('0x24')]);_0x122d62[_0x0a28('0x22')]=qs[_0x0a28('0x22')](_0x30eae1[_0x0a28('0x44')][_0x0a28('0x22')]);}_0x122d62['order']=qs[_0x0a28('0x4b')](_0x30eae1[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x122d62[_0x0a28('0x4c')]=qs['filters'](_[_0x0a28('0x6e')](_0x30eae1[_0x0a28('0x44')],_0x1f7985['filters']));_0x122d62[_0x0a28('0x4c')][_0x0a28('0x6b')]=_0x1ac33c['id'];if(_0x30eae1[_0x0a28('0x44')]['filter']){_0x122d62[_0x0a28('0x4c')]=_[_0x0a28('0x4d')](_0x122d62[_0x0a28('0x4c')],{'$or':_['map'](_0x122d62[_0x0a28('0x48')],function(_0x2c1bc6){var _0x16589c={};_0x16589c[_0x2c1bc6]={'$like':'%'+_0x30eae1[_0x0a28('0x44')][_0x0a28('0x31')]+'%'};return _0x16589c;})});}_0x122d62=_[_0x0a28('0x4d')]({},_0x122d62,_0x30eae1[_0x0a28('0x4f')]);return db[_0x0a28('0x70')]['count']({'where':_0x122d62['where']})['then'](function(_0x253b1d){_0x46a2bf[_0x0a28('0x25')]=_0x253b1d;if(_0x30eae1[_0x0a28('0x44')][_0x0a28('0x50')]){_0x122d62[_0x0a28('0x55')]=[{'all':!![]}];}return db[_0x0a28('0x70')][_0x0a28('0x51')](_0x122d62);})['then'](function(_0x27ae34){_0x46a2bf['rows']=_0x27ae34;return _0x46a2bf;});}})[_0x0a28('0x2c')](respondWithFilteredResult(_0x470aef,_0x122d62))[_0x0a28('0x53')](handleError(_0x470aef,null));};exports[_0x0a28('0x71')]=function(_0x5eb667,_0xa9d8a6,_0x5603cf){var _0x15a8d3={'raw':!![],'where':{}};var _0x431377={};var _0x2a257c={'count':0x0,'rows':[]};return db[_0x0a28('0x3f')][_0x0a28('0x66')]({'where':{'id':_0x5eb667[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0xa9d8a6,null))[_0x0a28('0x2c')](function(_0x5eefe8){if(_0x5eefe8){_0x431377['model']=_[_0x0a28('0x45')](db[_0x0a28('0x72')]['rawAttributes']);_0x431377['query']=_['keys'](_0x5eb667[_0x0a28('0x44')]);_0x431377['filters']=_[_0x0a28('0x47')](_0x431377[_0x0a28('0x43')],_0x431377[_0x0a28('0x44')]);_0x15a8d3[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x431377[_0x0a28('0x43')],qs['fields'](_0x5eb667[_0x0a28('0x44')][_0x0a28('0x49')]));_0x15a8d3[_0x0a28('0x48')]=_0x15a8d3[_0x0a28('0x48')]['length']?_0x15a8d3[_0x0a28('0x48')]:_0x431377['model'];if(!_0x5eb667[_0x0a28('0x44')][_0x0a28('0x68')]('nolimit')){_0x15a8d3[_0x0a28('0x24')]=qs[_0x0a28('0x24')](_0x5eb667[_0x0a28('0x44')]['limit']);_0x15a8d3['offset']=qs[_0x0a28('0x22')](_0x5eb667['query']['offset']);}_0x15a8d3['order']=qs['sort'](_0x5eb667[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x15a8d3['where']=qs[_0x0a28('0x46')](_[_0x0a28('0x6e')](_0x5eb667[_0x0a28('0x44')],_0x431377[_0x0a28('0x46')]));_0x15a8d3[_0x0a28('0x4c')][_0x0a28('0x6b')]=_0x5eefe8['id'];if(_0x5eb667[_0x0a28('0x44')][_0x0a28('0x31')]){_0x15a8d3['where']=_[_0x0a28('0x4d')](_0x15a8d3[_0x0a28('0x4c')],{'$or':_[_0x0a28('0x3e')](_0x15a8d3['attributes'],function(_0x469fbe){var _0x3ed9cf={};_0x3ed9cf[_0x469fbe]={'$like':'%'+_0x5eb667['query'][_0x0a28('0x31')]+'%'};return _0x3ed9cf;})});}_0x15a8d3=_[_0x0a28('0x4d')]({},_0x15a8d3,_0x5eb667[_0x0a28('0x4f')]);return db[_0x0a28('0x72')][_0x0a28('0x25')]({'where':_0x15a8d3[_0x0a28('0x4c')]})[_0x0a28('0x2c')](function(_0x491644){_0x2a257c[_0x0a28('0x25')]=_0x491644;if(_0x5eb667['query'][_0x0a28('0x50')]){_0x15a8d3[_0x0a28('0x55')]=[{'all':!![]}];}return db[_0x0a28('0x72')][_0x0a28('0x51')](_0x15a8d3);})[_0x0a28('0x2c')](function(_0xb4eb54){_0x2a257c[_0x0a28('0x52')]=_0xb4eb54;return _0x2a257c;});}})['then'](respondWithFilteredResult(_0xa9d8a6,_0x15a8d3))[_0x0a28('0x53')](handleError(_0xa9d8a6,null));};exports[_0x0a28('0x73')]=function(_0x3e3825,_0x17c359,_0x161ef6){var _0x2baba2={};var _0x1483a2={};var _0x2a928a;var _0x4abe37;return db[_0x0a28('0x3f')][_0x0a28('0x66')]({'where':{'id':_0x3e3825[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x17c359,null))['then'](function(_0x58b8ad){if(_0x58b8ad){_0x2a928a=_0x58b8ad;_0x1483a2['model']=_[_0x0a28('0x45')](db[_0x0a28('0x74')][_0x0a28('0x40')]);_0x1483a2['query']=_[_0x0a28('0x45')](_0x3e3825[_0x0a28('0x44')]);_0x1483a2['filters']=_[_0x0a28('0x47')](_0x1483a2[_0x0a28('0x43')],_0x1483a2['query']);_0x2baba2[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x1483a2[_0x0a28('0x43')],qs['fields'](_0x3e3825[_0x0a28('0x44')]['fields']));_0x2baba2[_0x0a28('0x48')]=_0x2baba2[_0x0a28('0x48')]['length']?_0x2baba2[_0x0a28('0x48')]:_0x1483a2['model'];_0x2baba2[_0x0a28('0x6a')]=qs['sort'](_0x3e3825[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x2baba2['where']=qs[_0x0a28('0x46')](_[_0x0a28('0x6e')](_0x3e3825[_0x0a28('0x44')],_0x1483a2[_0x0a28('0x46')]));if(_0x3e3825[_0x0a28('0x44')][_0x0a28('0x31')]){_0x2baba2[_0x0a28('0x4c')]=_['merge'](_0x2baba2['where'],{'$or':_[_0x0a28('0x3e')](_0x2baba2['attributes'],function(_0x48c651){var _0x5bbbe1={};_0x5bbbe1[_0x48c651]={'$like':'%'+_0x3e3825[_0x0a28('0x44')][_0x0a28('0x31')]+'%'};return _0x5bbbe1;})});}_0x2baba2=_[_0x0a28('0x4d')]({},_0x2baba2,_0x3e3825[_0x0a28('0x4f')]);return _0x2a928a['getTeams'](_0x2baba2);}})[_0x0a28('0x2c')](function(_0x576d92){if(_0x576d92){_0x4abe37=_0x576d92[_0x0a28('0x4a')];if(!_0x3e3825[_0x0a28('0x44')][_0x0a28('0x68')](_0x0a28('0x69'))){_0x2baba2[_0x0a28('0x24')]=qs[_0x0a28('0x24')](_0x3e3825['query'][_0x0a28('0x24')]);_0x2baba2[_0x0a28('0x22')]=qs['offset'](_0x3e3825[_0x0a28('0x44')][_0x0a28('0x22')]);}return _0x2a928a[_0x0a28('0x73')](_0x2baba2);}})[_0x0a28('0x2c')](function(_0x15578f){if(_0x15578f){return _0x15578f?{'count':_0x4abe37,'rows':_0x15578f}:null;}})[_0x0a28('0x2c')](respondWithResult(_0x17c359,null))['catch'](handleError(_0x17c359,null));};exports['addTeams']=function(_0x43bf87,_0x7446d5,_0x1ed803){var _0x20dda6=_0x43bf87[_0x0a28('0x57')][_0x0a28('0x75')];var _0x5d7f75=_[_0x0a28('0x3e')](_0x20dda6,'id');return db['Team'][_0x0a28('0x51')]({'where':{'id':_0x5d7f75},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0a28('0x76'),'attributes':['id',_0x0a28('0x37'),_0x0a28('0x77'),_0x0a28('0x78'),_0x0a28('0x79')],'raw':!![]}]})[_0x0a28('0x2c')](function(_0x3654ec){if(_0x3654ec){var _0x8ac4a1=_['flatMap'](_0x3654ec,function(_0x311c18){var _0x4f56e3=_0x311c18['get']({'plain':!![]});_0x4f56e3['Agents'][_0x0a28('0x7a')](function(_0x1ac680){_0x1ac680[_0x0a28('0x7b')]=_[_0x0a28('0x36')](_0x20dda6,{'id':_0x4f56e3['id']})[_0x0a28('0x7b')];});return _0x4f56e3['Agents'];});return db[_0x0a28('0x3f')][_0x0a28('0x36')]({'where':{'id':_0x43bf87[_0x0a28('0x64')]['id']}})['then'](function(_0x24345f){return db['sequelize']['transaction'](function(_0x5b3204){return _0x24345f[_0x0a28('0x7c')](_0x5d7f75,{'transaction':_0x5b3204})[_0x0a28('0x2c')](function(){return BPromise['each'](_0x20dda6,function(_0x2b2d46){return db[_0x0a28('0x7d')][_0x0a28('0x7e')]({'TeamId':_0x2b2d46['id'],'VoiceQueueId':_0x43bf87[_0x0a28('0x64')]['id'],'penalty':_0x2b2d46['penalty']},{'transaction':_0x5b3204});});})[_0x0a28('0x2c')](function(){return BPromise[_0x0a28('0x7f')](_0x8ac4a1,function(_0x39db80){return db[_0x0a28('0x80')][_0x0a28('0x81')]({'where':{'UserId':_0x39db80['id'],'VoiceQueueId':_0x43bf87['params']['id']},'defaults':{'penalty':_0x39db80[_0x0a28('0x7b')]},'transaction':_0x5b3204});});})['then'](function(){return BPromise[_0x0a28('0x7f')](_[_0x0a28('0x31')](_0x8ac4a1,{'online':!![]}),function(_0x31e3e5){return db[_0x0a28('0x82')]['upsert']({'membername':_0x31e3e5[_0x0a28('0x37')],'UserId':_0x31e3e5['id'],'queue_name':_0x24345f[_0x0a28('0x37')],'VoiceQueueId':_0x24345f['id'],'interface':_['isNil'](_0x31e3e5['interface'])?util['format'](_0x0a28('0x83'),_0x31e3e5[_0x0a28('0x37')]):_0x31e3e5[_0x0a28('0x79')],'paused':_0x31e3e5[_0x0a28('0x78')]||![],'penalty':_0x31e3e5['penalty']},{'transaction':_0x5b3204});});})['then'](function(){_0x8ac4a1[_0x0a28('0x7a')](function(_0x5515d1){socket['emit'](_0x0a28('0x84'),{'UserId':_0x5515d1['id'],'VoiceQueueId':_0x24345f['id']});});});});});}})[_0x0a28('0x2c')](respondWithStatusCode(_0x7446d5,null))['catch'](handleError(_0x7446d5,null));};exports[_0x0a28('0x85')]=function(_0x5a9083,_0x5beb4d,_0x1f2ee7){return db[_0x0a28('0x74')][_0x0a28('0x51')]({'where':{'id':_0x5a9083[_0x0a28('0x44')]['ids']},'attributes':['id'],'include':[{'model':db[_0x0a28('0x86')],'as':_0x0a28('0x76'),'attributes':['id'],'raw':!![]}]})[_0x0a28('0x2c')](handleEntityNotFound(_0x5beb4d,null))['then'](function(_0x2dd53b){var _0x31a36b=_[_0x0a28('0x3e')](_0x2dd53b,'id');var _0x48c98f=[];var _0x4b6205=[];var _0x2c019f=squel[_0x0a28('0x87')]();_0x2c019f[_0x0a28('0x88')](_0x0a28('0x89'))['from']('team_has_voice_queues','tq')[_0x0a28('0x8a')](_0x0a28('0x8b'),'ut',_0x0a28('0x8c'))[_0x0a28('0x4c')]('VoiceQueueId\x20=\x20?',_0x5a9083['params']['id']);for(var _0x37e285=0x0;_0x37e285<_0x2dd53b[_0x0a28('0x4a')];_0x37e285+=0x1){let _0x428601=_0x2dd53b[_0x37e285];for(var _0xe0445b=0x0;_0xe0445b<_0x428601[_0x0a28('0x76')]['length'];_0xe0445b+=0x1){let _0x986bda=_0x428601[_0x0a28('0x76')][_0xe0445b];var _0xfbecc2=_0x2c019f[_0x0a28('0x5c')]();_0xfbecc2[_0x0a28('0x4c')]('ut.UserId\x20=\x20?',_0x986bda['id']);_0x4b6205['push'](db[_0x0a28('0x8d')][_0x0a28('0x44')](_0xfbecc2[_0x0a28('0x8e')](),{'type':db[_0x0a28('0x8d')][_0x0a28('0x8f')]['SELECT']})[_0x0a28('0x2c')](function(_0x18c292){if(_0x18c292[_0x0a28('0x4a')]===0x1){return _0x986bda['id'];}else{var _0x4b2744=_[_0x0a28('0x90')](_[_0x0a28('0x3e')](_0x18c292,_0x0a28('0x91')),function(_0x2b6ff5){return _[_0x0a28('0x34')](_0x31a36b,_0x2b6ff5);});if(_0x4b2744){return _0x986bda['id'];}}}));}}return BPromise[_0x0a28('0x92')](_0x4b6205)[_0x0a28('0x2c')](function(_0x142639){_0x48c98f=_(_0x48c98f)[_0x0a28('0x93')](_0x142639)[_0x0a28('0x94')]()[_0x0a28('0x33')]();return db[_0x0a28('0x3f')][_0x0a28('0x36')]({'where':{'id':_0x5a9083['params']['id']}})['then'](function(_0x2d23eb){return db['sequelize'][_0x0a28('0x95')](function(_0x42f74b){return _0x2d23eb[_0x0a28('0x85')](_0x5a9083[_0x0a28('0x44')][_0x0a28('0x96')],{'transaction':_0x42f74b})[_0x0a28('0x2c')](function(){if(!_['isEmpty'](_0x48c98f)){return _0x2d23eb['removeAgents'](_0x48c98f,{'transaction':_0x42f74b})[_0x0a28('0x2c')](function(){return db[_0x0a28('0x82')][_0x0a28('0x39')]({'where':{'VoiceQueueId':_0x5a9083[_0x0a28('0x64')]['id'],'UserId':_0x48c98f},'transaction':_0x42f74b});});}})[_0x0a28('0x2c')](function(){_0x48c98f['forEach'](function(_0x1331e5){socket['emit'](_0x0a28('0x97'),{'UserId':_0x1331e5,'VoiceQueueId':_0x2d23eb['id']});});});});});});})[_0x0a28('0x2c')](respondWithStatusCode(_0x5beb4d,null))[_0x0a28('0x53')](handleError(_0x5beb4d,null));};exports['addAgents']=function(_0x2bbc28,_0x217c15,_0x1f5dd5){var _0x5ee29c,_0x3a30c1;return db[_0x0a28('0x3f')][_0x0a28('0x36')]({'where':{'id':_0x2bbc28['params']['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x217c15,null))[_0x0a28('0x2c')](function(_0x2ca5a3){if(_0x2ca5a3){_0x3a30c1=_0x2ca5a3;return _0x2ca5a3['addAgents'](_0x2bbc28[_0x0a28('0x57')][_0x0a28('0x96')],_[_0x0a28('0x5e')](_0x2bbc28[_0x0a28('0x57')],[_0x0a28('0x96'),'id'])||{})[_0x0a28('0x98')](function(_0x404a32){for(var _0x46c68a=0x0;_0x46c68a<_0x2bbc28['body'][_0x0a28('0x96')][_0x0a28('0x4a')];_0x46c68a+=0x1){socket[_0x0a28('0x99')](_0x0a28('0x84'),{'UserId':Number(_0x2bbc28[_0x0a28('0x57')][_0x0a28('0x96')][_0x46c68a]),'VoiceQueueId':Number(_0x2bbc28[_0x0a28('0x64')]['id'])});}return _0x404a32;});}})[_0x0a28('0x2c')](function(_0x41ccba){_0x5ee29c=_0x41ccba||[];if(_0x3a30c1){return db[_0x0a28('0x86')][_0x0a28('0x51')]({'where':{'id':_0x2bbc28[_0x0a28('0x57')]['ids']},'attributes':['id','name',_0x0a28('0x77'),_0x0a28('0x78'),_0x0a28('0x79')],'raw':!![]});}})[_0x0a28('0x2c')](function(_0x313c5a){if(!_['isEmpty'](_0x313c5a)){var _0x3700ce=[];for(var _0x3e50f7=0x0;_0x3e50f7<_0x313c5a[_0x0a28('0x4a')];_0x3e50f7++){if(_0x313c5a[_0x3e50f7]['online']){_0x3700ce[_0x0a28('0x9a')](db['UserVoiceQueueRt'][_0x0a28('0x7e')]({'membername':_0x313c5a[_0x3e50f7][_0x0a28('0x37')],'UserId':_0x313c5a[_0x3e50f7]['id'],'queue_name':_0x3a30c1[_0x0a28('0x37')],'VoiceQueueId':_0x3a30c1['id'],'interface':_[_0x0a28('0x9b')](_0x313c5a[_0x3e50f7][_0x0a28('0x79')])?util['format'](_0x0a28('0x83'),_0x313c5a[_0x3e50f7][_0x0a28('0x37')]):_0x313c5a[_0x3e50f7][_0x0a28('0x79')],'paused':_0x313c5a[_0x3e50f7][_0x0a28('0x78')]||![],'penalty':_0x2bbc28[_0x0a28('0x57')][_0x0a28('0x7b')]||0x0}));}}return BPromise['all'](_0x3700ce);}})[_0x0a28('0x2c')](function(){return _0x5ee29c;})[_0x0a28('0x2c')](respondWithResult(_0x217c15,null))[_0x0a28('0x53')](handleError(_0x217c15,null));};exports['removeAgents']=function(_0x2b7819,_0x2720ad,_0x4369c5){return db[_0x0a28('0x3f')][_0x0a28('0x36')]({'where':{'id':_0x2b7819[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x2720ad,null))[_0x0a28('0x2c')](function(_0x1d08b9){if(_0x1d08b9){return _0x1d08b9[_0x0a28('0x9c')](_0x2b7819[_0x0a28('0x44')][_0x0a28('0x96')])[_0x0a28('0x2c')](function(){if(_[_0x0a28('0x9d')](_0x2b7819[_0x0a28('0x44')]['ids'])){for(var _0x4d2faa=0x0;_0x4d2faa<_0x2b7819[_0x0a28('0x44')][_0x0a28('0x96')][_0x0a28('0x4a')];_0x4d2faa+=0x1){socket[_0x0a28('0x99')](_0x0a28('0x97'),{'UserId':Number(_0x2b7819['query']['ids'][_0x4d2faa]),'VoiceQueueId':Number(_0x2b7819[_0x0a28('0x64')]['id'])});}}else{socket[_0x0a28('0x99')](_0x0a28('0x97'),{'UserId':Number(_0x2b7819[_0x0a28('0x44')]['ids']),'VoiceQueueId':Number(_0x2b7819['params']['id'])});}});}})['then'](function(_0xbd160e){return db['UserVoiceQueueRt'][_0x0a28('0x39')]({'where':{'VoiceQueueId':_0x2b7819[_0x0a28('0x64')]['id'],'UserId':_0x2b7819[_0x0a28('0x44')]['ids']}})[_0x0a28('0x2c')](function(){return _0xbd160e;});})['then'](respondWithStatusCode(_0x2720ad,null))['catch'](handleError(_0x2720ad,null));};exports['getAgents']=function(_0x3b0189,_0x57db21,_0x5332ca){var _0x5173e5={};var _0x29b3ea={};var _0x4f9d68;var _0x5a5540;return db[_0x0a28('0x3f')]['findOne']({'where':{'id':_0x3b0189['params']['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x57db21,null))[_0x0a28('0x2c')](function(_0x27dbc5){if(_0x27dbc5){_0x4f9d68=_0x27dbc5;_0x29b3ea[_0x0a28('0x43')]=_[_0x0a28('0x45')](db[_0x0a28('0x86')]['rawAttributes']);_0x29b3ea[_0x0a28('0x44')]=_[_0x0a28('0x45')](_0x3b0189[_0x0a28('0x44')]);_0x29b3ea['filters']=_[_0x0a28('0x47')](_0x29b3ea[_0x0a28('0x43')],_0x29b3ea[_0x0a28('0x44')]);_0x5173e5[_0x0a28('0x48')]=_['intersection'](_0x29b3ea[_0x0a28('0x43')],qs['fields'](_0x3b0189[_0x0a28('0x44')][_0x0a28('0x49')]));_0x5173e5[_0x0a28('0x48')]=_0x5173e5[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x5173e5['attributes']:_0x29b3ea[_0x0a28('0x43')];_0x5173e5[_0x0a28('0x6a')]=qs[_0x0a28('0x4b')](_0x3b0189[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x5173e5[_0x0a28('0x4c')]=qs[_0x0a28('0x46')](_[_0x0a28('0x6e')](_0x3b0189['query'],_0x29b3ea[_0x0a28('0x46')]));if(_0x3b0189[_0x0a28('0x44')]['filter']){_0x5173e5['where']=_[_0x0a28('0x4d')](_0x5173e5['where'],{'$or':_['map'](_0x5173e5['attributes'],function(_0x427069){var _0x47742a={};_0x47742a[_0x427069]={'$like':'%'+_0x3b0189[_0x0a28('0x44')][_0x0a28('0x31')]+'%'};return _0x47742a;})});}_0x5173e5=_[_0x0a28('0x4d')]({},_0x5173e5,_0x3b0189['options']);return _0x4f9d68['getAgents'](_0x5173e5);}})[_0x0a28('0x2c')](function(_0x2f8884){if(_0x2f8884){_0x5a5540=_0x2f8884[_0x0a28('0x4a')];if(!_0x3b0189[_0x0a28('0x44')][_0x0a28('0x68')](_0x0a28('0x69'))){_0x5173e5[_0x0a28('0x24')]=qs[_0x0a28('0x24')](_0x3b0189[_0x0a28('0x44')][_0x0a28('0x24')]);_0x5173e5[_0x0a28('0x22')]=qs[_0x0a28('0x22')](_0x3b0189[_0x0a28('0x44')][_0x0a28('0x22')]);}return _0x4f9d68['getAgents'](_0x5173e5);}})['then'](function(_0x5939aa){if(_0x5939aa){return _0x5939aa?{'count':_0x5a5540,'rows':_0x5939aa}:null;}})[_0x0a28('0x2c')](respondWithResult(_0x57db21,null))['catch'](handleError(_0x57db21,null));};exports[_0x0a28('0x9e')]=function(_0x4caaeb,_0x17ca0c,_0x175706){var _0x4e0228={};var _0x2fedc7={};var _0x4a2c4c;var _0x31ba3a;return db[_0x0a28('0x3f')][_0x0a28('0x66')]({'where':{'id':_0x4caaeb[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x17ca0c,null))['then'](function(_0x220e4a){if(_0x220e4a){_0x4a2c4c=_0x220e4a;_0x2fedc7[_0x0a28('0x43')]=_[_0x0a28('0x45')](db['UserVoiceQueueRt'][_0x0a28('0x40')]);_0x2fedc7[_0x0a28('0x44')]=_[_0x0a28('0x45')](_0x4caaeb['query']);_0x2fedc7[_0x0a28('0x46')]=_[_0x0a28('0x47')](_0x2fedc7['model'],_0x2fedc7[_0x0a28('0x44')]);_0x4e0228[_0x0a28('0x48')]=_['intersection'](_0x2fedc7['model'],qs[_0x0a28('0x49')](_0x4caaeb['query'][_0x0a28('0x49')]));_0x4e0228[_0x0a28('0x48')]=_0x4e0228[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x4e0228[_0x0a28('0x48')]:_0x2fedc7[_0x0a28('0x43')];_0x4e0228['order']=qs[_0x0a28('0x4b')](_0x4caaeb[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x4e0228[_0x0a28('0x4c')]=qs[_0x0a28('0x46')](_['pick'](_0x4caaeb[_0x0a28('0x44')],_0x2fedc7[_0x0a28('0x46')]));if(_0x4caaeb[_0x0a28('0x44')][_0x0a28('0x31')]){_0x4e0228[_0x0a28('0x4c')]=_['merge'](_0x4e0228[_0x0a28('0x4c')],{'$or':_[_0x0a28('0x3e')](_0x4e0228[_0x0a28('0x48')],function(_0x2c2503){var _0x27024a={};_0x27024a[_0x2c2503]={'$like':'%'+_0x4caaeb[_0x0a28('0x44')][_0x0a28('0x31')]+'%'};return _0x27024a;})});}_0x4e0228=_['merge']({},_0x4e0228,_0x4caaeb[_0x0a28('0x4f')]);return _0x4a2c4c[_0x0a28('0x9e')](_0x4e0228);}})['then'](function(_0x385cfc){if(_0x385cfc){_0x31ba3a=_0x385cfc['length'];if(!_0x4caaeb[_0x0a28('0x44')][_0x0a28('0x68')](_0x0a28('0x69'))){_0x4e0228['limit']=qs[_0x0a28('0x24')](_0x4caaeb[_0x0a28('0x44')][_0x0a28('0x24')]);_0x4e0228[_0x0a28('0x22')]=qs[_0x0a28('0x22')](_0x4caaeb[_0x0a28('0x44')][_0x0a28('0x22')]);}return _0x4a2c4c[_0x0a28('0x9e')](_0x4e0228);}})['then'](function(_0x5d4b11){return _0x5d4b11?{'count':_0x31ba3a,'rows':_0x5d4b11}:null;})[_0x0a28('0x2c')](respondWithResult(_0x17ca0c,null))['catch'](handleError(_0x17ca0c,null));};exports[_0x0a28('0x9f')]=function(_0x3c97f1,_0x356e12,_0x372ba1){var _0x3fe80d={};var _0x4fa6e9={};var _0x176279;var _0x1e1b36;return db[_0x0a28('0x3f')][_0x0a28('0x66')]({'where':{'id':_0x3c97f1[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x356e12,null))[_0x0a28('0x2c')](function(_0x1f6f37){if(_0x1f6f37){_0x176279=_0x1f6f37;_0x4fa6e9[_0x0a28('0x43')]=_[_0x0a28('0x45')](db[_0x0a28('0xa0')]['rawAttributes']);_0x4fa6e9['query']=_['keys'](_0x3c97f1[_0x0a28('0x44')]);_0x4fa6e9['filters']=_[_0x0a28('0x47')](_0x4fa6e9[_0x0a28('0x43')],_0x4fa6e9[_0x0a28('0x44')]);_0x3fe80d[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x4fa6e9[_0x0a28('0x43')],qs[_0x0a28('0x49')](_0x3c97f1[_0x0a28('0x44')][_0x0a28('0x49')]));_0x3fe80d['attributes']=_0x3fe80d[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x3fe80d[_0x0a28('0x48')]:_0x4fa6e9[_0x0a28('0x43')];_0x3fe80d[_0x0a28('0x6a')]=qs[_0x0a28('0x4b')](_0x3c97f1[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x3fe80d[_0x0a28('0x4c')]=qs[_0x0a28('0x46')](_[_0x0a28('0x6e')](_0x3c97f1[_0x0a28('0x44')],_0x4fa6e9[_0x0a28('0x46')]));if(_0x3c97f1[_0x0a28('0x44')][_0x0a28('0x31')]){_0x3fe80d[_0x0a28('0x4c')]=_[_0x0a28('0x4d')](_0x3fe80d[_0x0a28('0x4c')],{'$or':_[_0x0a28('0x3e')](_0x3fe80d[_0x0a28('0x48')],function(_0x4f2181){var _0x57472c={};_0x57472c[_0x4f2181]={'$like':'%'+_0x3c97f1['query']['filter']+'%'};return _0x57472c;})});}_0x3fe80d=_[_0x0a28('0x4d')]({},_0x3fe80d,_0x3c97f1[_0x0a28('0x4f')]);return _0x176279['getLists'](_0x3fe80d);}})[_0x0a28('0x2c')](function(_0x3fabeb){if(_0x3fabeb){_0x1e1b36=_0x3fabeb[_0x0a28('0x4a')];if(!_0x3c97f1[_0x0a28('0x44')]['hasOwnProperty'](_0x0a28('0x69'))){_0x3fe80d[_0x0a28('0x24')]=qs[_0x0a28('0x24')](_0x3c97f1[_0x0a28('0x44')][_0x0a28('0x24')]);_0x3fe80d['offset']=qs[_0x0a28('0x22')](_0x3c97f1['query'][_0x0a28('0x22')]);}return _0x176279[_0x0a28('0x9f')](_0x3fe80d);}})[_0x0a28('0x2c')](function(_0x54d01d){if(_0x54d01d){return _0x54d01d?{'count':_0x1e1b36,'rows':_0x54d01d}:null;}})['then'](respondWithResult(_0x356e12,null))[_0x0a28('0x53')](handleError(_0x356e12,null));};exports[_0x0a28('0xa1')]=function(_0x4dbc4d,_0x58a333,_0x4d1f85){var _0x5dc9ce=moment()['format'](_0x0a28('0xa2'));var _0x218380,_0x8b905d;return db['VoiceQueue']['find']({'where':{'id':_0x4dbc4d[_0x0a28('0x64')]['id']}})['then'](handleEntityNotFound(_0x58a333,null))[_0x0a28('0x2c')](function(_0x42514e){if(_0x42514e){_0x8b905d=_0x42514e;return _0x42514e['addLists'](_0x4dbc4d[_0x0a28('0x57')][_0x0a28('0x96')],_['omit'](_0x4dbc4d[_0x0a28('0x57')],['ids','id'])||{});}return null;})['spread'](function(_0x44a2f1){var _0x104b02;_0x218380=_0x44a2f1||[];var _0x5707c3=[];if(_0x44a2f1){for(var _0x2d1f28=0x0;_0x2d1f28<_0x44a2f1[_0x0a28('0x4a')];_0x2d1f28+=0x1){var _0x2f3246=_0x44a2f1[_0x2d1f28][_0x0a28('0x59')]({'plain':!![]});_0x8b905d[_0x0a28('0xa3')]=_0x4dbc4d['body'][_0x0a28('0xa3')]?_0x4dbc4d['body'][_0x0a28('0xa3')]:_0x8b905d[_0x0a28('0xa3')];switch(_0x8b905d[_0x0a28('0xa3')]){case _0x0a28('0xa4'):_0x104b02=squel['insert']()[_0x0a28('0xa5')](_0x0a28('0xa6'))['fromQuery'](['phone',_0x0a28('0xa7'),'ContactId',_0x0a28('0xa8'),_0x0a28('0x6b'),_0x0a28('0x5d'),'updatedAt'],squel[_0x0a28('0x87')]()[_0x0a28('0x88')]('phone',_0x0a28('0xa9'))[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27',_0x0a28('0xa7'))[_0x0a28('0x88')]('id','ContactId')[_0x0a28('0x88')](_0x2f3246[_0x0a28('0xaa')][_0x0a28('0x8e')](),_0x0a28('0xa8'))[_0x0a28('0x88')](_0x4dbc4d['params']['id'][_0x0a28('0x8e')](),'VoiceQueueId')[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27','createdAt')[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27',_0x0a28('0x5f'))[_0x0a28('0xab')](_0x0a28('0xac'))[_0x0a28('0x4c')](_0x0a28('0xad'))[_0x0a28('0x4c')](_0x0a28('0xae'),_0x2f3246[_0x0a28('0xaa')][_0x0a28('0x8e')]())[_0x0a28('0x4c')](_0x0a28('0xaf'))[_0x0a28('0x4c')](_0x0a28('0xb0'),squel[_0x0a28('0x87')]()[_0x0a28('0x88')](_0x0a28('0xb1'))[_0x0a28('0xab')]('cm_hopper_final')['where'](_0x0a28('0xb2'),_0x4dbc4d['params']['id'][_0x0a28('0x8e')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x0a28('0x87')]()[_0x0a28('0x88')](_0x0a28('0xb3'))['from'](_0x0a28('0xa6'))['where'](_0x0a28('0xb2'),_0x4dbc4d[_0x0a28('0x64')]['id'][_0x0a28('0x8e')]())))[_0x0a28('0x8e')]();break;case _0x0a28('0xb4'):_0x104b02=squel[_0x0a28('0xb5')]()[_0x0a28('0xa5')](_0x0a28('0xa6'))[_0x0a28('0xb6')]([_0x0a28('0xa9'),'scheduledAt','ContactId',_0x0a28('0xa8'),'VoiceQueueId',_0x0a28('0x5d'),_0x0a28('0x5f')],squel[_0x0a28('0x87')]()['field'](_0x0a28('0xa9'),_0x0a28('0xa9'))['field']('\x27'+_0x5dc9ce+'\x27',_0x0a28('0xa7'))[_0x0a28('0x88')]('id','ContactId')[_0x0a28('0x88')](_0x2f3246[_0x0a28('0xaa')][_0x0a28('0x8e')](),_0x0a28('0xa8'))[_0x0a28('0x88')](_0x4dbc4d[_0x0a28('0x64')]['id'][_0x0a28('0x8e')](),_0x0a28('0x6b'))[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27',_0x0a28('0x5d'))['field']('\x27'+_0x5dc9ce+'\x27',_0x0a28('0x5f'))[_0x0a28('0xab')](_0x0a28('0xac'))['where']('deletedAt\x20IS\x20NULL')[_0x0a28('0x4c')](_0x0a28('0xae'),_0x2f3246[_0x0a28('0xaa')][_0x0a28('0x8e')]())[_0x0a28('0x4c')](_0x0a28('0xaf'))[_0x0a28('0x4c')](_0x0a28('0xb0'),squel['select']()['field'](_0x0a28('0xb3'))['from'](_0x0a28('0xa6'))[_0x0a28('0x4c')]('VoiceQueueId\x20=\x20?',_0x4dbc4d['params']['id'][_0x0a28('0x8e')]())))[_0x0a28('0x8e')]();break;default:_0x104b02=squel[_0x0a28('0xb5')]()[_0x0a28('0xa5')](_0x0a28('0xa6'))[_0x0a28('0xb6')]([_0x0a28('0xa9'),_0x0a28('0xa7'),'ContactId','ListId',_0x0a28('0x6b'),_0x0a28('0x5d'),_0x0a28('0x5f')],squel[_0x0a28('0x87')]()['field']('phone',_0x0a28('0xa9'))[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27',_0x0a28('0xa7'))[_0x0a28('0x88')]('id',_0x0a28('0xb7'))[_0x0a28('0x88')](_0x2f3246[_0x0a28('0xaa')]['toString'](),_0x0a28('0xa8'))['field'](_0x4dbc4d[_0x0a28('0x64')]['id'][_0x0a28('0x8e')](),'VoiceQueueId')['field']('\x27'+_0x5dc9ce+'\x27','createdAt')[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27',_0x0a28('0x5f'))[_0x0a28('0xab')](_0x0a28('0xac'))['where']('deletedAt\x20IS\x20NULL')[_0x0a28('0x4c')](_0x0a28('0xae'),_0x2f3246[_0x0a28('0xaa')][_0x0a28('0x8e')]())['where'](_0x0a28('0xaf')))[_0x0a28('0x8e')]();}_0x5707c3['push'](db['sequelize'][_0x0a28('0x44')](_0x104b02));}return BPromise[_0x0a28('0x92')](_0x5707c3);}})['then'](function(){var _0x48f04f=[];var _0x42ebbe=squel[_0x0a28('0xb5')]()['into'](_0x0a28('0xb8'))[_0x0a28('0xb6')](['CmHopperId','phone','OrderBy',_0x0a28('0x5d'),_0x0a28('0x5f')],squel['select']()[_0x0a28('0x88')](_0x0a28('0xb9'))[_0x0a28('0x88')]('ci.item')[_0x0a28('0x88')](_0x0a28('0xba'))[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27','createdAt')[_0x0a28('0x88')]('\x27'+_0x5dc9ce+'\x27',_0x0a28('0x5f'))[_0x0a28('0xab')](_0x0a28('0xbb'),'ci')['join'](_0x0a28('0xa6'),'h',_0x0a28('0xbc'))[_0x0a28('0x4c')]('h.scheduledat=?',_0x5dc9ce)['where']('ci.ItemClass=?',_0x0a28('0xbd')))['toString']();_0x48f04f[_0x0a28('0x9a')](db[_0x0a28('0x8d')][_0x0a28('0x44')](_0x42ebbe));return BPromise[_0x0a28('0x92')](_0x48f04f);})[_0x0a28('0x2c')](function(){return _0x218380;})[_0x0a28('0x2c')](respondWithResult(_0x58a333,null))[_0x0a28('0x53')](handleError(_0x58a333,null));};exports['removeLists']=function(_0x1423bb,_0x402b21,_0x403a24){return db[_0x0a28('0x3f')][_0x0a28('0x36')]({'where':{'id':_0x1423bb[_0x0a28('0x64')]['id']}})['then'](handleEntityNotFound(_0x402b21,null))[_0x0a28('0x2c')](function(_0x590dec){if(_0x590dec){return _0x590dec[_0x0a28('0xbe')](_0x1423bb[_0x0a28('0x44')]['ids']);}})['then'](function(_0x20ec30){if(_0x20ec30){return db[_0x0a28('0x67')][_0x0a28('0x39')]({'where':{'ListId':_0x1423bb['query'][_0x0a28('0x96')],'VoiceQueueId':_0x1423bb[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](function(){return _0x20ec30;});}})['then'](respondWithStatusCode(_0x402b21,null))[_0x0a28('0x53')](handleError(_0x402b21,null));};exports[_0x0a28('0xbf')]=function(_0x534348,_0x1ab5fb,_0x32ca33){var _0x7d7c5e={};var _0x5cb7b8={};var _0x1e1fb6;var _0x32392f;return db[_0x0a28('0x3f')][_0x0a28('0x66')]({'where':{'id':_0x534348['params']['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x1ab5fb,null))[_0x0a28('0x2c')](function(_0x182735){if(_0x182735){_0x1e1fb6=_0x182735;_0x5cb7b8[_0x0a28('0x43')]=_['keys'](db[_0x0a28('0xa0')][_0x0a28('0x40')]);_0x5cb7b8[_0x0a28('0x44')]=_[_0x0a28('0x45')](_0x534348[_0x0a28('0x44')]);_0x5cb7b8[_0x0a28('0x46')]=_[_0x0a28('0x47')](_0x5cb7b8[_0x0a28('0x43')],_0x5cb7b8[_0x0a28('0x44')]);_0x7d7c5e[_0x0a28('0x48')]=_[_0x0a28('0x47')](_0x5cb7b8[_0x0a28('0x43')],qs[_0x0a28('0x49')](_0x534348[_0x0a28('0x44')][_0x0a28('0x49')]));_0x7d7c5e[_0x0a28('0x48')]=_0x7d7c5e[_0x0a28('0x48')][_0x0a28('0x4a')]?_0x7d7c5e[_0x0a28('0x48')]:_0x5cb7b8['model'];_0x7d7c5e[_0x0a28('0x6a')]=qs[_0x0a28('0x4b')](_0x534348[_0x0a28('0x44')][_0x0a28('0x4b')]);_0x7d7c5e[_0x0a28('0x4c')]=qs[_0x0a28('0x46')](_['pick'](_0x534348[_0x0a28('0x44')],_0x5cb7b8[_0x0a28('0x46')]));if(_0x534348[_0x0a28('0x44')][_0x0a28('0x31')]){_0x7d7c5e[_0x0a28('0x4c')]=_[_0x0a28('0x4d')](_0x7d7c5e[_0x0a28('0x4c')],{'$or':_[_0x0a28('0x3e')](_0x7d7c5e[_0x0a28('0x48')],function(_0x294f51){var _0x4d7869={};_0x4d7869[_0x294f51]={'$like':'%'+_0x534348['query'][_0x0a28('0x31')]+'%'};return _0x4d7869;})});}_0x7d7c5e=_[_0x0a28('0x4d')]({},_0x7d7c5e,_0x534348[_0x0a28('0x4f')]);return _0x1e1fb6[_0x0a28('0xbf')](_0x7d7c5e);}})[_0x0a28('0x2c')](function(_0x8ecf60){if(_0x8ecf60){_0x32392f=_0x8ecf60[_0x0a28('0x4a')];if(!_0x534348[_0x0a28('0x44')][_0x0a28('0x68')](_0x0a28('0x69'))){_0x7d7c5e[_0x0a28('0x24')]=qs[_0x0a28('0x24')](_0x534348['query'][_0x0a28('0x24')]);_0x7d7c5e[_0x0a28('0x22')]=qs[_0x0a28('0x22')](_0x534348[_0x0a28('0x44')][_0x0a28('0x22')]);}return _0x1e1fb6['getBlackLists'](_0x7d7c5e);}})[_0x0a28('0x2c')](function(_0x3a88de){if(_0x3a88de){return _0x3a88de?{'count':_0x32392f,'rows':_0x3a88de}:null;}})[_0x0a28('0x2c')](respondWithResult(_0x1ab5fb,null))[_0x0a28('0x53')](handleError(_0x1ab5fb,null));};exports['addBlackLists']=function(_0x52c1d4,_0x3c96b5,_0x3a1227){var _0x1aef7e,_0x2128bc;return db['VoiceQueue'][_0x0a28('0x36')]({'where':{'id':_0x52c1d4[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x3c96b5,null))['then'](function(_0xa51431){if(_0xa51431){_0x2128bc=_0xa51431;return _0xa51431[_0x0a28('0xc0')](_0x52c1d4['body']['ids'],_[_0x0a28('0x5e')](_0x52c1d4[_0x0a28('0x57')],[_0x0a28('0x96'),'id'])||{});}return null;})[_0x0a28('0x98')](function(_0x1515cc){var _0x2e702d;_0x1aef7e=_0x1515cc||[];var _0x4414f2=[];if(_0x1515cc){for(var _0xacc01=0x0;_0xacc01<_0x1515cc['length'];_0xacc01+=0x1){var _0x3462cc=_0x1515cc[_0xacc01][_0x0a28('0x59')]({'plain':!![]});_0x2e702d=squel[_0x0a28('0xb5')]()[_0x0a28('0xa5')](_0x0a28('0xc1'))['fromQuery']([_0x0a28('0xa9'),_0x0a28('0xb7'),_0x0a28('0xa8'),_0x0a28('0x6b'),'createdAt',_0x0a28('0x5f')],squel['select']()[_0x0a28('0x88')](_0x0a28('0xa9'),_0x0a28('0xa9'))[_0x0a28('0x88')]('id',_0x0a28('0xb7'))[_0x0a28('0x88')](_0x3462cc[_0x0a28('0xaa')]['toString'](),_0x0a28('0xa8'))[_0x0a28('0x88')](_0x52c1d4[_0x0a28('0x64')]['id'][_0x0a28('0x8e')](),_0x0a28('0x6b'))[_0x0a28('0x88')](_0x0a28('0xc2'),'createdAt')[_0x0a28('0x88')]('NOW()','updatedAt')[_0x0a28('0xab')]('cm_contacts')['where'](_0x0a28('0xad'))[_0x0a28('0x4c')](_0x0a28('0xae'),_0x3462cc['CmListId'][_0x0a28('0x8e')]())[_0x0a28('0x4c')](_0x0a28('0xaf')))[_0x0a28('0x8e')]();_0x4414f2[_0x0a28('0x9a')](db['sequelize'][_0x0a28('0x44')](_0x2e702d));}return BPromise[_0x0a28('0x92')](_0x4414f2);}})[_0x0a28('0x2c')](function(){return _0x1aef7e;})[_0x0a28('0x2c')](respondWithResult(_0x3c96b5,null))['catch'](handleError(_0x3c96b5,null));};exports['removeBlackLists']=function(_0x1eca68,_0x3a2c2d,_0x42661a){return db[_0x0a28('0x3f')][_0x0a28('0x36')]({'where':{'id':_0x1eca68[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](handleEntityNotFound(_0x3a2c2d,null))[_0x0a28('0x2c')](function(_0x3b8871){if(_0x3b8871){return _0x3b8871[_0x0a28('0xc3')](_0x1eca68[_0x0a28('0x44')][_0x0a28('0x96')]);}})[_0x0a28('0x2c')](function(_0xbb03e0){if(_0xbb03e0){return db[_0x0a28('0x72')][_0x0a28('0x39')]({'where':{'ListId':_0x1eca68[_0x0a28('0x44')][_0x0a28('0x96')],'VoiceQueueId':_0x1eca68[_0x0a28('0x64')]['id']}})[_0x0a28('0x2c')](function(){return _0xbb03e0;});}})['then'](respondWithStatusCode(_0x3a2c2d,null))['catch'](handleError(_0x3a2c2d,null));};
\ No newline at end of file
+var _0x71ab=['updatedAt','omit','body','user','getHoppers','findOne','CmHopper','VoiceQueueId','CmHopperHistory','CmHopperFinal','CmHopperBlack','Team','getTeams','teams','Agents','voicePause','interface','flatMap','forEach','penalty','transaction','addTeams','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','emit','ids','User','select','field','tq.TeamId','from','join','user_has_teams','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','TeamId','union','compact','removeTeams','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','userVoiceQueue:save','online','all','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','cm_contacts','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','get','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','name','UserProfileResource','stack','send','index','VoiceQueue','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','VoiceQueues','UserProfileSection','userProfileId','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt'];(function(_0x1bac4a,_0x34f93f){var _0x257a51=function(_0x2ee692){while(--_0x2ee692){_0x1bac4a['push'](_0x1bac4a['shift']());}};_0x257a51(++_0x34f93f);}(_0x71ab,0x64));var _0xb71a=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x71ab[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb71a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb71a('0x1'));var rp=require('request-promise');var moment=require(_0xb71a('0x2'));var BPromise=require(_0xb71a('0x3'));var Mustache=require(_0xb71a('0x4'));var util=require(_0xb71a('0x5'));var path=require(_0xb71a('0x6'));var sox=require(_0xb71a('0x7'));var csv=require(_0xb71a('0x8'));var ejs=require(_0xb71a('0x9'));var fs=require('fs');var fs_extra=require(_0xb71a('0xa'));var _=require(_0xb71a('0xb'));var squel=require(_0xb71a('0xc'));var crypto=require(_0xb71a('0xd'));var jsforce=require(_0xb71a('0xe'));var deskjs=require(_0xb71a('0xf'));var toCsv=require(_0xb71a('0x8'));var querystring=require(_0xb71a('0x10'));var Papa=require(_0xb71a('0x11'));var Redis=require(_0xb71a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb71a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb71a('0x14'));var logger=require(_0xb71a('0x15'))(_0xb71a('0x16'));var utils=require('../../config/utils');var config=require(_0xb71a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xb71a('0x18'))['db'];config['redis']=_['defaults'](config[_0xb71a('0x19')],{'host':_0xb71a('0x1a'),'port':0x18eb});var socket=require(_0xb71a('0x1b'))(new Redis(config[_0xb71a('0x19')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x5364e3,_0x12900a){_0x12900a=_0x12900a||0xcc;return function(_0xc189cd){if(_0xc189cd){return _0x5364e3[_0xb71a('0x1c')](_0x12900a);}return _0x5364e3[_0xb71a('0x1d')](_0x12900a)[_0xb71a('0x1e')]();};}function respondWithResult(_0x1e9363,_0x31def2){_0x31def2=_0x31def2||0xc8;return function(_0x2ec64a){if(_0x2ec64a){return _0x1e9363[_0xb71a('0x1d')](_0x31def2)['json'](_0x2ec64a);}};}function respondWithFilteredResult(_0x1ca65e,_0x2d6369){return function(_0x374c8c){if(_0x374c8c){var _0x346524=typeof _0x2d6369[_0xb71a('0x1f')]===_0xb71a('0x20')&&typeof _0x2d6369[_0xb71a('0x21')]===_0xb71a('0x20');var _0x20bdfe=_0x374c8c[_0xb71a('0x22')];var _0x16394a=_0x346524?0x0:_0x2d6369['offset'];var _0x5bb77a=_0x346524?_0x374c8c[_0xb71a('0x22')]:_0x2d6369[_0xb71a('0x1f')]+_0x2d6369['limit'];var _0x4d8871;if(_0x5bb77a>=_0x20bdfe){_0x5bb77a=_0x20bdfe;_0x4d8871=0xc8;}else{_0x4d8871=0xce;}_0x1ca65e[_0xb71a('0x1d')](_0x4d8871);return _0x1ca65e['set'](_0xb71a('0x23'),_0x16394a+'-'+_0x5bb77a+'/'+_0x20bdfe)[_0xb71a('0x24')](_0x374c8c);}return null;};}function patchUpdates(_0x3ac77b){return function(_0x18fa8d){try{jsonpatch[_0xb71a('0x25')](_0x18fa8d,_0x3ac77b,!![]);}catch(_0x14b2a1){return BPromise[_0xb71a('0x26')](_0x14b2a1);}return _0x18fa8d[_0xb71a('0x27')]();};}function saveUpdates(_0x5f3f19,_0xd40f86){return function(_0x2c15bc){if(_0x2c15bc){return _0x2c15bc[_0xb71a('0x28')](_0x5f3f19)[_0xb71a('0x29')](function(_0x3401f7){return _0x3401f7;});}return null;};}function removeEntity(_0x1a010d,_0x20ed75){return function(_0xfc8df0){if(_0xfc8df0){return _0xfc8df0[_0xb71a('0x2a')]()[_0xb71a('0x29')](function(){var _0x45b849=_0xfc8df0[_0xb71a('0x2b')]({'plain':!![]});var _0x160f0f=[{'name':'VoiceQueues','value':_0xb71a('0x2c'),'ignore':![]},{'name':_0xb71a('0x2d'),'value':_0xb71a('0x2e'),'ignore':![]}];var _0x358954=_(_0x160f0f)[_0xb71a('0x2f')](_0xb71a('0x30'))[_0xb71a('0x31')](_0xb71a('0x32'))[_0xb71a('0x32')]();if(_[_0xb71a('0x33')](_0x358954,_0x45b849[_0xb71a('0x34')])){return;}var _0x542ffd=_['find'](_0x160f0f,[_0xb71a('0x32'),_0x45b849['type']])[_0xb71a('0x35')];return db[_0xb71a('0x36')]['destroy']({'where':{'type':_0x542ffd,'resourceId':_0x45b849['id']}})[_0xb71a('0x29')](function(){return _0xfc8df0;});})[_0xb71a('0x29')](function(){_0x1a010d[_0xb71a('0x1d')](0xcc)[_0xb71a('0x1e')]();});}};}function handleEntityNotFound(_0x3d3d81,_0x2364c3){return function(_0x5dd779){if(!_0x5dd779){_0x3d3d81[_0xb71a('0x1c')](0x194);}return _0x5dd779;};}function handleError(_0x3f137a,_0x256dbe){_0x256dbe=_0x256dbe||0x1f4;return function(_0x31e708){logger['error'](_0x31e708[_0xb71a('0x37')]);if(_0x31e708[_0xb71a('0x35')]){delete _0x31e708[_0xb71a('0x35')];}_0x3f137a[_0xb71a('0x1d')](_0x256dbe)[_0xb71a('0x38')](_0x31e708);};}exports[_0xb71a('0x39')]=function(_0x2962a0,_0x333280){var _0x10a203={},_0x3f5531={},_0x47e7da={'count':0x0,'rows':[]};var _0x5a0920=_[_0xb71a('0x31')](db[_0xb71a('0x3a')][_0xb71a('0x3b')],function(_0x12b907){return{'name':_0x12b907[_0xb71a('0x3c')],'type':_0x12b907[_0xb71a('0x34')][_0xb71a('0x3d')]};});_0x3f5531['model']=_[_0xb71a('0x31')](_0x5a0920,'name');_0x3f5531[_0xb71a('0x3e')]=_[_0xb71a('0x3f')](_0x2962a0[_0xb71a('0x3e')]);_0x3f5531[_0xb71a('0x40')]=_['intersection'](_0x3f5531[_0xb71a('0x41')],_0x3f5531[_0xb71a('0x3e')]);_0x10a203[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x3f5531[_0xb71a('0x41')],qs[_0xb71a('0x44')](_0x2962a0[_0xb71a('0x3e')][_0xb71a('0x44')]));_0x10a203[_0xb71a('0x42')]=_0x10a203['attributes'][_0xb71a('0x45')]?_0x10a203['attributes']:_0x3f5531[_0xb71a('0x41')];if(!_0x2962a0[_0xb71a('0x3e')][_0xb71a('0x46')](_0xb71a('0x47'))){_0x10a203[_0xb71a('0x21')]=qs[_0xb71a('0x21')](_0x2962a0['query']['limit']);_0x10a203['offset']=qs[_0xb71a('0x1f')](_0x2962a0['query'][_0xb71a('0x1f')]);}_0x10a203[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x2962a0[_0xb71a('0x3e')][_0xb71a('0x49')]);_0x10a203[_0xb71a('0x4a')]=qs['filters'](_[_0xb71a('0x4b')](_0x2962a0[_0xb71a('0x3e')],_0x3f5531[_0xb71a('0x40')]),_0x5a0920);if(_0x2962a0[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x10a203[_0xb71a('0x4a')]=_['merge'](_0x10a203[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0x5a0920,function(_0x2fcf9a){if(_0x2fcf9a[_0xb71a('0x34')]!==_0xb71a('0x4c')){var _0x8f97ff={};_0x8f97ff[_0x2fcf9a[_0xb71a('0x35')]]={'$like':'%'+_0x2962a0['query']['filter']+'%'};return _0x8f97ff;}})});}_0x10a203=_[_0xb71a('0x4d')]({},_0x10a203,_0x2962a0[_0xb71a('0x4e')]);var _0x2f6b72={'where':_0x10a203[_0xb71a('0x4a')]};return db['VoiceQueue'][_0xb71a('0x22')](_0x2f6b72)['then'](function(_0x318d0e){_0x47e7da[_0xb71a('0x22')]=_0x318d0e;if(_0x2962a0['query'][_0xb71a('0x4f')]){_0x10a203[_0xb71a('0x50')]=[{'all':!![]}];}return db[_0xb71a('0x3a')][_0xb71a('0x51')](_0x10a203);})['then'](function(_0x188896){_0x47e7da[_0xb71a('0x52')]=_0x188896;return _0x47e7da;})[_0xb71a('0x29')](respondWithFilteredResult(_0x333280,_0x10a203))['catch'](handleError(_0x333280,null));};exports[_0xb71a('0x53')]=function(_0x1cd434,_0x29b0bd){var _0x5e9eea={'raw':![],'where':{'id':_0x1cd434[_0xb71a('0x54')]['id']}},_0x2148ed={};_0x2148ed[_0xb71a('0x41')]=_[_0xb71a('0x3f')](db[_0xb71a('0x3a')]['rawAttributes']);_0x2148ed[_0xb71a('0x3e')]=_[_0xb71a('0x3f')](_0x1cd434[_0xb71a('0x3e')]);_0x2148ed[_0xb71a('0x40')]=_['intersection'](_0x2148ed['model'],_0x2148ed[_0xb71a('0x3e')]);_0x5e9eea[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x2148ed[_0xb71a('0x41')],qs[_0xb71a('0x44')](_0x1cd434[_0xb71a('0x3e')][_0xb71a('0x44')]));_0x5e9eea[_0xb71a('0x42')]=_0x5e9eea[_0xb71a('0x42')][_0xb71a('0x45')]?_0x5e9eea['attributes']:_0x2148ed[_0xb71a('0x41')];if(_0x1cd434[_0xb71a('0x3e')]['includeAll']){_0x5e9eea[_0xb71a('0x50')]=[{'all':!![]}];}_0x5e9eea=_['merge']({},_0x5e9eea,_0x1cd434[_0xb71a('0x4e')]);return db[_0xb71a('0x3a')][_0xb71a('0x55')](_0x5e9eea)[_0xb71a('0x29')](handleEntityNotFound(_0x29b0bd,null))[_0xb71a('0x29')](respondWithResult(_0x29b0bd,null))['catch'](handleError(_0x29b0bd,null));};exports[_0xb71a('0x56')]=function(_0x5b1902,_0x267cc8){return db[_0xb71a('0x3a')]['create'](_0x5b1902['body'],{})[_0xb71a('0x29')](function(_0x19972a){var _0x4ef963=_0x5b1902['user']['get']({'plain':!![]});if(!_0x4ef963)throw new Error(_0xb71a('0x57'));if(_0x4ef963['role']==='user'){var _0x333ed0=_0x19972a[_0xb71a('0x2b')]({'plain':!![]});var _0xf029f7=[{'name':_0xb71a('0x58'),'value':'inbound'},{'name':_0xb71a('0x2d'),'value':_0xb71a('0x2e')}];var _0x15afe1=_['find'](_0xf029f7,[_0xb71a('0x32'),_0x333ed0[_0xb71a('0x34')]])['name'];return db[_0xb71a('0x59')][_0xb71a('0x55')]({'where':{'name':_0x15afe1,'userProfileId':_0x4ef963[_0xb71a('0x5a')]},'raw':!![]})['then'](function(_0x43c310){if(_0x43c310&&_0x43c310['autoAssociation']===0x0){return db[_0xb71a('0x36')][_0xb71a('0x56')]({'name':_0x333ed0['name'],'resourceId':_0x333ed0['id'],'type':_0x43c310[_0xb71a('0x35')],'sectionId':_0x43c310['id']},{})[_0xb71a('0x29')](function(){return _0x19972a;});}else{return _0x19972a;}})[_0xb71a('0x5b')](function(_0x1c6312){logger[_0xb71a('0x5c')](_0xb71a('0x5d'),_0x1c6312);throw _0x1c6312;});}return _0x19972a;})[_0xb71a('0x29')](respondWithResult(_0x267cc8,0xc9))['catch'](handleError(_0x267cc8,null));};exports['clone']=function(_0x19c72d,_0x43e9ea){var _0x2cf6a3={'where':{'id':_0x19c72d[_0xb71a('0x54')]['id']}},_0x25e342={};_0x25e342['model']=_['keys'](db[_0xb71a('0x3a')][_0xb71a('0x3b')]);_0x2cf6a3['attributes']=_[_0xb71a('0x43')](_0x25e342[_0xb71a('0x41')],qs['fields'](_0x19c72d[_0xb71a('0x3e')][_0xb71a('0x44')]));_0x2cf6a3[_0xb71a('0x42')]=_0x2cf6a3[_0xb71a('0x42')]['length']?_0x2cf6a3[_0xb71a('0x42')]:_0x25e342[_0xb71a('0x41')];if(_0x19c72d['query'][_0xb71a('0x4f')]){_0x2cf6a3[_0xb71a('0x50')]=[{'all':!![]}];}_0x2cf6a3=_[_0xb71a('0x4d')]({},_0x2cf6a3,_0x19c72d[_0xb71a('0x4e')]);return db[_0xb71a('0x3a')][_0xb71a('0x55')](_0x2cf6a3)[_0xb71a('0x29')](handleEntityNotFound(_0x43e9ea,null))[_0xb71a('0x29')](function(_0x559790){if(_0x559790){var _0x5c1080=_0x559790[_0xb71a('0x2b')]({'plain':!![]});_0x5c1080=qs['omit'](_0x5c1080,['id',_0xb71a('0x5e'),_0xb71a('0x5f')]);_0x19c72d['body']=_[_0xb71a('0x60')](_0x19c72d[_0xb71a('0x61')],['id',_0xb71a('0x5e'),_0xb71a('0x5f')]);return db[_0xb71a('0x3a')][_0xb71a('0x56')](_['merge'](_0x5c1080,_0x19c72d['body']),{'include':_0x19c72d[_0xb71a('0x3e')][_0xb71a('0x4f')]?[{'all':!![]}]:undefined})[_0xb71a('0x29')](function(_0x57db9b){var _0xe93fd=_0x19c72d['user'][_0xb71a('0x2b')]({'plain':!![]});if(!_0xe93fd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xe93fd['role']===_0xb71a('0x62')){var _0x9af0c=_0x57db9b[_0xb71a('0x2b')]({'plain':!![]});var _0x2e770d=[{'name':_0xb71a('0x58'),'value':'inbound'},{'name':_0xb71a('0x2d'),'value':'outbound'}];var _0x1adf18=_[_0xb71a('0x55')](_0x2e770d,[_0xb71a('0x32'),_0x9af0c['type']])['name'];return db[_0xb71a('0x59')][_0xb71a('0x55')]({'where':{'name':_0x1adf18,'userProfileId':_0xe93fd[_0xb71a('0x5a')]},'raw':!![]})[_0xb71a('0x29')](function(_0x9eff28){if(_0x9eff28&&_0x9eff28['autoAssociation']===0x0){return db[_0xb71a('0x36')][_0xb71a('0x56')]({'name':_0x9af0c[_0xb71a('0x35')],'resourceId':_0x9af0c['id'],'type':_0x9eff28[_0xb71a('0x35')],'sectionId':_0x9eff28['id']},{})[_0xb71a('0x29')](function(){return _0x57db9b;});}else{return _0x57db9b;}})['catch'](function(_0x4a18ab){logger[_0xb71a('0x5c')](_0xb71a('0x5d'),_0x4a18ab);throw _0x4a18ab;});}return _0x57db9b;});}})[_0xb71a('0x29')](respondWithResult(_0x43e9ea,0xc9))[_0xb71a('0x5b')](handleError(_0x43e9ea,null));};exports[_0xb71a('0x28')]=function(_0xa2081f,_0x2e8b81){if(_0xa2081f['body']['id']){delete _0xa2081f[_0xb71a('0x61')]['id'];}return db[_0xb71a('0x3a')]['find']({'where':{'id':_0xa2081f[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x2e8b81,null))[_0xb71a('0x29')](saveUpdates(_0xa2081f['body'],null))[_0xb71a('0x29')](respondWithResult(_0x2e8b81,null))[_0xb71a('0x5b')](handleError(_0x2e8b81,null));};exports[_0xb71a('0x2a')]=function(_0x5cf30d,_0x1fd31c){return db[_0xb71a('0x3a')][_0xb71a('0x55')]({'where':{'id':_0x5cf30d[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x1fd31c,null))[_0xb71a('0x29')](removeEntity(_0x1fd31c,null))[_0xb71a('0x5b')](handleError(_0x1fd31c,null));};exports[_0xb71a('0x63')]=function(_0x5b9fc7,_0x8d74d9,_0x507da4){var _0x57896d={'raw':![],'where':{}};var _0x30d36a={};var _0x43e4b8={'count':0x0,'rows':[]};return db[_0xb71a('0x3a')][_0xb71a('0x64')]({'where':{'id':_0x5b9fc7['params']['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x8d74d9,null))['then'](function(_0x2dc979){if(_0x2dc979){_0x30d36a[_0xb71a('0x41')]=_['keys'](db[_0xb71a('0x65')]['rawAttributes']);_0x30d36a[_0xb71a('0x3e')]=_['keys'](_0x5b9fc7[_0xb71a('0x3e')]);_0x30d36a[_0xb71a('0x40')]=_[_0xb71a('0x43')](_0x30d36a[_0xb71a('0x41')],_0x30d36a['query']);_0x57896d[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x30d36a['model'],qs[_0xb71a('0x44')](_0x5b9fc7['query']['fields']));_0x57896d['attributes']=_0x57896d['attributes'][_0xb71a('0x45')]?_0x57896d[_0xb71a('0x42')]:_0x30d36a[_0xb71a('0x41')];if(!_0x5b9fc7['query'][_0xb71a('0x46')](_0xb71a('0x47'))){_0x57896d['limit']=qs[_0xb71a('0x21')](_0x5b9fc7[_0xb71a('0x3e')][_0xb71a('0x21')]);_0x57896d[_0xb71a('0x1f')]=qs[_0xb71a('0x1f')](_0x5b9fc7[_0xb71a('0x3e')]['offset']);}_0x57896d[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x5b9fc7[_0xb71a('0x3e')][_0xb71a('0x49')]);_0x57896d[_0xb71a('0x4a')]=qs[_0xb71a('0x40')](_['pick'](_0x5b9fc7[_0xb71a('0x3e')],_0x30d36a[_0xb71a('0x40')]));_0x57896d['where'][_0xb71a('0x66')]=_0x2dc979['id'];if(_0x5b9fc7[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x57896d['where']=_[_0xb71a('0x4d')](_0x57896d[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0x57896d['attributes'],function(_0x1a658e){var _0x4168b7={};_0x4168b7[_0x1a658e]={'$like':'%'+_0x5b9fc7['query'][_0xb71a('0x2f')]+'%'};return _0x4168b7;})});}_0x57896d=_[_0xb71a('0x4d')]({},_0x57896d,_0x5b9fc7[_0xb71a('0x4e')]);return db[_0xb71a('0x65')]['count']({'where':_0x57896d[_0xb71a('0x4a')]})[_0xb71a('0x29')](function(_0x157535){_0x43e4b8[_0xb71a('0x22')]=_0x157535;if(_0x5b9fc7['query'][_0xb71a('0x4f')]){_0x57896d[_0xb71a('0x50')]=[{'all':!![]}];}return db['CmHopper'][_0xb71a('0x51')](_0x57896d);})[_0xb71a('0x29')](function(_0x5df234){_0x43e4b8[_0xb71a('0x52')]=_0x5df234;return _0x43e4b8;});}})[_0xb71a('0x29')](respondWithFilteredResult(_0x8d74d9,_0x57896d))[_0xb71a('0x5b')](handleError(_0x8d74d9,null));};exports['getHopperHistories']=function(_0x2dff0d,_0x2e49c3,_0x771e1){var _0xd5ff7b={'raw':!![],'where':{}};var _0x397e34={};var _0xc552ac={'count':0x0,'rows':[]};return db[_0xb71a('0x3a')][_0xb71a('0x64')]({'where':{'id':_0x2dff0d[_0xb71a('0x54')]['id']}})['then'](handleEntityNotFound(_0x2e49c3,null))['then'](function(_0x36a75e){if(_0x36a75e){_0x397e34[_0xb71a('0x41')]=_[_0xb71a('0x3f')](db[_0xb71a('0x67')][_0xb71a('0x3b')]);_0x397e34[_0xb71a('0x3e')]=_['keys'](_0x2dff0d[_0xb71a('0x3e')]);_0x397e34['filters']=_[_0xb71a('0x43')](_0x397e34['model'],_0x397e34[_0xb71a('0x3e')]);_0xd5ff7b[_0xb71a('0x42')]=_['intersection'](_0x397e34[_0xb71a('0x41')],qs[_0xb71a('0x44')](_0x2dff0d[_0xb71a('0x3e')][_0xb71a('0x44')]));_0xd5ff7b[_0xb71a('0x42')]=_0xd5ff7b['attributes'][_0xb71a('0x45')]?_0xd5ff7b[_0xb71a('0x42')]:_0x397e34['model'];if(!_0x2dff0d[_0xb71a('0x3e')][_0xb71a('0x46')]('nolimit')){_0xd5ff7b[_0xb71a('0x21')]=qs[_0xb71a('0x21')](_0x2dff0d[_0xb71a('0x3e')]['limit']);_0xd5ff7b[_0xb71a('0x1f')]=qs[_0xb71a('0x1f')](_0x2dff0d[_0xb71a('0x3e')]['offset']);}_0xd5ff7b[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x2dff0d[_0xb71a('0x3e')][_0xb71a('0x49')]);_0xd5ff7b[_0xb71a('0x4a')]=qs['filters'](_[_0xb71a('0x4b')](_0x2dff0d['query'],_0x397e34[_0xb71a('0x40')]));_0xd5ff7b[_0xb71a('0x4a')][_0xb71a('0x66')]=_0x36a75e['id'];if(_0x2dff0d['query']['filter']){_0xd5ff7b[_0xb71a('0x4a')]=_[_0xb71a('0x4d')](_0xd5ff7b[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0xd5ff7b[_0xb71a('0x42')],function(_0x18dfb3){var _0x38ffc1={};_0x38ffc1[_0x18dfb3]={'$like':'%'+_0x2dff0d[_0xb71a('0x3e')][_0xb71a('0x2f')]+'%'};return _0x38ffc1;})});}_0xd5ff7b=_[_0xb71a('0x4d')]({},_0xd5ff7b,_0x2dff0d[_0xb71a('0x4e')]);return db[_0xb71a('0x67')][_0xb71a('0x22')]({'where':_0xd5ff7b[_0xb71a('0x4a')]})[_0xb71a('0x29')](function(_0x582134){_0xc552ac[_0xb71a('0x22')]=_0x582134;if(_0x2dff0d[_0xb71a('0x3e')][_0xb71a('0x4f')]){_0xd5ff7b['include']=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0xd5ff7b);})[_0xb71a('0x29')](function(_0x4981c6){_0xc552ac[_0xb71a('0x52')]=_0x4981c6;return _0xc552ac;});}})[_0xb71a('0x29')](respondWithFilteredResult(_0x2e49c3,_0xd5ff7b))['catch'](handleError(_0x2e49c3,null));};exports['getHopperFinals']=function(_0x43ba33,_0x99a14f,_0x1d0050){var _0x3d6d60={'raw':!![],'where':{}};var _0x3362be={};var _0x86854b={'count':0x0,'rows':[]};return db[_0xb71a('0x3a')][_0xb71a('0x64')]({'where':{'id':_0x43ba33[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x99a14f,null))[_0xb71a('0x29')](function(_0x119d32){if(_0x119d32){_0x3362be[_0xb71a('0x41')]=_[_0xb71a('0x3f')](db[_0xb71a('0x68')][_0xb71a('0x3b')]);_0x3362be[_0xb71a('0x3e')]=_[_0xb71a('0x3f')](_0x43ba33[_0xb71a('0x3e')]);_0x3362be[_0xb71a('0x40')]=_[_0xb71a('0x43')](_0x3362be[_0xb71a('0x41')],_0x3362be['query']);_0x3d6d60[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x3362be[_0xb71a('0x41')],qs[_0xb71a('0x44')](_0x43ba33[_0xb71a('0x3e')][_0xb71a('0x44')]));_0x3d6d60[_0xb71a('0x42')]=_0x3d6d60[_0xb71a('0x42')][_0xb71a('0x45')]?_0x3d6d60[_0xb71a('0x42')]:_0x3362be[_0xb71a('0x41')];if(!_0x43ba33[_0xb71a('0x3e')][_0xb71a('0x46')](_0xb71a('0x47'))){_0x3d6d60[_0xb71a('0x21')]=qs[_0xb71a('0x21')](_0x43ba33[_0xb71a('0x3e')][_0xb71a('0x21')]);_0x3d6d60[_0xb71a('0x1f')]=qs[_0xb71a('0x1f')](_0x43ba33['query'][_0xb71a('0x1f')]);}_0x3d6d60[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x43ba33[_0xb71a('0x3e')][_0xb71a('0x49')]);_0x3d6d60[_0xb71a('0x4a')]=qs[_0xb71a('0x40')](_[_0xb71a('0x4b')](_0x43ba33['query'],_0x3362be['filters']));_0x3d6d60[_0xb71a('0x4a')][_0xb71a('0x66')]=_0x119d32['id'];if(_0x43ba33[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x3d6d60['where']=_[_0xb71a('0x4d')](_0x3d6d60[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0x3d6d60[_0xb71a('0x42')],function(_0x2915dd){var _0x18ebc4={};_0x18ebc4[_0x2915dd]={'$like':'%'+_0x43ba33[_0xb71a('0x3e')]['filter']+'%'};return _0x18ebc4;})});}_0x3d6d60=_[_0xb71a('0x4d')]({},_0x3d6d60,_0x43ba33[_0xb71a('0x4e')]);return db[_0xb71a('0x68')]['count']({'where':_0x3d6d60[_0xb71a('0x4a')]})[_0xb71a('0x29')](function(_0x3007f3){_0x86854b['count']=_0x3007f3;if(_0x43ba33[_0xb71a('0x3e')][_0xb71a('0x4f')]){_0x3d6d60[_0xb71a('0x50')]=[{'all':!![]}];}return db[_0xb71a('0x68')]['findAll'](_0x3d6d60);})[_0xb71a('0x29')](function(_0x30ebb7){_0x86854b[_0xb71a('0x52')]=_0x30ebb7;return _0x86854b;});}})[_0xb71a('0x29')](respondWithFilteredResult(_0x99a14f,_0x3d6d60))[_0xb71a('0x5b')](handleError(_0x99a14f,null));};exports['getHopperBlacks']=function(_0x18ad17,_0x125473,_0x1618d4){var _0x11d4cf={'raw':!![],'where':{}};var _0x9b76b0={};var _0x351832={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xb71a('0x64')]({'where':{'id':_0x18ad17[_0xb71a('0x54')]['id']}})['then'](handleEntityNotFound(_0x125473,null))[_0xb71a('0x29')](function(_0x1ab686){if(_0x1ab686){_0x9b76b0[_0xb71a('0x41')]=_[_0xb71a('0x3f')](db[_0xb71a('0x69')][_0xb71a('0x3b')]);_0x9b76b0[_0xb71a('0x3e')]=_[_0xb71a('0x3f')](_0x18ad17[_0xb71a('0x3e')]);_0x9b76b0[_0xb71a('0x40')]=_[_0xb71a('0x43')](_0x9b76b0[_0xb71a('0x41')],_0x9b76b0[_0xb71a('0x3e')]);_0x11d4cf[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x9b76b0[_0xb71a('0x41')],qs[_0xb71a('0x44')](_0x18ad17[_0xb71a('0x3e')]['fields']));_0x11d4cf['attributes']=_0x11d4cf[_0xb71a('0x42')][_0xb71a('0x45')]?_0x11d4cf['attributes']:_0x9b76b0[_0xb71a('0x41')];if(!_0x18ad17[_0xb71a('0x3e')][_0xb71a('0x46')](_0xb71a('0x47'))){_0x11d4cf[_0xb71a('0x21')]=qs[_0xb71a('0x21')](_0x18ad17[_0xb71a('0x3e')][_0xb71a('0x21')]);_0x11d4cf[_0xb71a('0x1f')]=qs[_0xb71a('0x1f')](_0x18ad17[_0xb71a('0x3e')][_0xb71a('0x1f')]);}_0x11d4cf[_0xb71a('0x48')]=qs['sort'](_0x18ad17[_0xb71a('0x3e')]['sort']);_0x11d4cf[_0xb71a('0x4a')]=qs[_0xb71a('0x40')](_['pick'](_0x18ad17[_0xb71a('0x3e')],_0x9b76b0[_0xb71a('0x40')]));_0x11d4cf['where'][_0xb71a('0x66')]=_0x1ab686['id'];if(_0x18ad17[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x11d4cf[_0xb71a('0x4a')]=_[_0xb71a('0x4d')](_0x11d4cf[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0x11d4cf[_0xb71a('0x42')],function(_0x304082){var _0x3f68ca={};_0x3f68ca[_0x304082]={'$like':'%'+_0x18ad17['query'][_0xb71a('0x2f')]+'%'};return _0x3f68ca;})});}_0x11d4cf=_[_0xb71a('0x4d')]({},_0x11d4cf,_0x18ad17['options']);return db[_0xb71a('0x69')][_0xb71a('0x22')]({'where':_0x11d4cf['where']})[_0xb71a('0x29')](function(_0x48b8b2){_0x351832[_0xb71a('0x22')]=_0x48b8b2;if(_0x18ad17[_0xb71a('0x3e')]['includeAll']){_0x11d4cf[_0xb71a('0x50')]=[{'all':!![]}];}return db[_0xb71a('0x69')]['findAll'](_0x11d4cf);})[_0xb71a('0x29')](function(_0x47e0d2){_0x351832[_0xb71a('0x52')]=_0x47e0d2;return _0x351832;});}})['then'](respondWithFilteredResult(_0x125473,_0x11d4cf))['catch'](handleError(_0x125473,null));};exports['getTeams']=function(_0x4ec008,_0x5a6606,_0x4be976){var _0x18d2aa={};var _0x42f4f8={};var _0x5d0026;var _0x3abb95;return db[_0xb71a('0x3a')]['findOne']({'where':{'id':_0x4ec008[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x5a6606,null))[_0xb71a('0x29')](function(_0x56a104){if(_0x56a104){_0x5d0026=_0x56a104;_0x42f4f8['model']=_[_0xb71a('0x3f')](db[_0xb71a('0x6a')][_0xb71a('0x3b')]);_0x42f4f8[_0xb71a('0x3e')]=_[_0xb71a('0x3f')](_0x4ec008['query']);_0x42f4f8[_0xb71a('0x40')]=_[_0xb71a('0x43')](_0x42f4f8['model'],_0x42f4f8[_0xb71a('0x3e')]);_0x18d2aa[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x42f4f8[_0xb71a('0x41')],qs['fields'](_0x4ec008[_0xb71a('0x3e')][_0xb71a('0x44')]));_0x18d2aa[_0xb71a('0x42')]=_0x18d2aa[_0xb71a('0x42')]['length']?_0x18d2aa['attributes']:_0x42f4f8[_0xb71a('0x41')];_0x18d2aa[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x4ec008[_0xb71a('0x3e')]['sort']);_0x18d2aa[_0xb71a('0x4a')]=qs[_0xb71a('0x40')](_[_0xb71a('0x4b')](_0x4ec008['query'],_0x42f4f8[_0xb71a('0x40')]));if(_0x4ec008[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x18d2aa[_0xb71a('0x4a')]=_[_0xb71a('0x4d')](_0x18d2aa[_0xb71a('0x4a')],{'$or':_['map'](_0x18d2aa[_0xb71a('0x42')],function(_0x1cb098){var _0x5083f8={};_0x5083f8[_0x1cb098]={'$like':'%'+_0x4ec008[_0xb71a('0x3e')]['filter']+'%'};return _0x5083f8;})});}_0x18d2aa=_['merge']({},_0x18d2aa,_0x4ec008[_0xb71a('0x4e')]);return _0x5d0026[_0xb71a('0x6b')](_0x18d2aa);}})[_0xb71a('0x29')](function(_0x3bd864){if(_0x3bd864){_0x3abb95=_0x3bd864['length'];if(!_0x4ec008[_0xb71a('0x3e')]['hasOwnProperty'](_0xb71a('0x47'))){_0x18d2aa[_0xb71a('0x21')]=qs[_0xb71a('0x21')](_0x4ec008[_0xb71a('0x3e')][_0xb71a('0x21')]);_0x18d2aa['offset']=qs[_0xb71a('0x1f')](_0x4ec008[_0xb71a('0x3e')][_0xb71a('0x1f')]);}return _0x5d0026[_0xb71a('0x6b')](_0x18d2aa);}})['then'](function(_0x348f8c){if(_0x348f8c){return _0x348f8c?{'count':_0x3abb95,'rows':_0x348f8c}:null;}})[_0xb71a('0x29')](respondWithResult(_0x5a6606,null))[_0xb71a('0x5b')](handleError(_0x5a6606,null));};exports['addTeams']=function(_0xab4985,_0x3dbde4,_0x4e6157){var _0x108f4d=_0xab4985[_0xb71a('0x61')][_0xb71a('0x6c')];var _0xecef29=_[_0xb71a('0x31')](_0x108f4d,'id');return db[_0xb71a('0x6a')][_0xb71a('0x51')]({'where':{'id':_0xecef29},'attributes':['id'],'include':[{'model':db['User'],'as':_0xb71a('0x6d'),'attributes':['id','name','online',_0xb71a('0x6e'),_0xb71a('0x6f')],'raw':!![]}]})[_0xb71a('0x29')](function(_0x8fff21){if(_0x8fff21){var _0x504785=_[_0xb71a('0x70')](_0x8fff21,function(_0x59ae1e){var _0x90b8eb=_0x59ae1e[_0xb71a('0x2b')]({'plain':!![]});_0x90b8eb[_0xb71a('0x6d')][_0xb71a('0x71')](function(_0x1cad05){_0x1cad05[_0xb71a('0x72')]=_[_0xb71a('0x55')](_0x108f4d,{'id':_0x90b8eb['id']})[_0xb71a('0x72')];});return _0x90b8eb[_0xb71a('0x6d')];});return db[_0xb71a('0x3a')]['find']({'where':{'id':_0xab4985[_0xb71a('0x54')]['id']}})['then'](function(_0x438b58){return db['sequelize'][_0xb71a('0x73')](function(_0x3e35a4){return _0x438b58[_0xb71a('0x74')](_0xecef29,{'transaction':_0x3e35a4})[_0xb71a('0x29')](function(){return BPromise[_0xb71a('0x75')](_0x108f4d,function(_0x53399c){return db[_0xb71a('0x76')][_0xb71a('0x77')]({'TeamId':_0x53399c['id'],'VoiceQueueId':_0xab4985['params']['id'],'penalty':_0x53399c['penalty']},{'transaction':_0x3e35a4});});})[_0xb71a('0x29')](function(){return BPromise[_0xb71a('0x75')](_0x504785,function(_0x51e7b2){return db[_0xb71a('0x78')][_0xb71a('0x79')]({'where':{'UserId':_0x51e7b2['id'],'VoiceQueueId':_0xab4985[_0xb71a('0x54')]['id']},'defaults':{'penalty':_0x51e7b2[_0xb71a('0x72')]},'transaction':_0x3e35a4});});})[_0xb71a('0x29')](function(){return BPromise[_0xb71a('0x75')](_[_0xb71a('0x2f')](_0x504785,{'online':!![]}),function(_0x5a39af){return db[_0xb71a('0x7a')][_0xb71a('0x77')]({'membername':_0x5a39af[_0xb71a('0x35')],'UserId':_0x5a39af['id'],'queue_name':_0x438b58[_0xb71a('0x35')],'VoiceQueueId':_0x438b58['id'],'interface':_[_0xb71a('0x7b')](_0x5a39af['interface'])?util[_0xb71a('0x7c')]('SIP/%s',_0x5a39af[_0xb71a('0x35')]):_0x5a39af['interface'],'paused':_0x5a39af['voicePause']||![],'penalty':_0x5a39af[_0xb71a('0x72')]},{'transaction':_0x3e35a4});});})[_0xb71a('0x29')](function(){_0x504785[_0xb71a('0x71')](function(_0x35e3fe){socket[_0xb71a('0x7d')]('userVoiceQueue:save',{'UserId':_0x35e3fe['id'],'VoiceQueueId':_0x438b58['id']});});});});});}})[_0xb71a('0x29')](respondWithStatusCode(_0x3dbde4,null))[_0xb71a('0x5b')](handleError(_0x3dbde4,null));};exports['removeTeams']=function(_0xabbd5,_0x338400,_0x5330b5){return db[_0xb71a('0x6a')][_0xb71a('0x51')]({'where':{'id':_0xabbd5[_0xb71a('0x3e')][_0xb71a('0x7e')]},'attributes':['id'],'include':[{'model':db[_0xb71a('0x7f')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x338400,null))[_0xb71a('0x29')](function(_0x48b1ac){var _0x2c89a5=_['map'](_0x48b1ac,'id');var _0x5d6e87=[];var _0x555205=[];var _0xe8c99f=squel[_0xb71a('0x80')]();_0xe8c99f[_0xb71a('0x81')](_0xb71a('0x82'))[_0xb71a('0x83')]('team_has_voice_queues','tq')[_0xb71a('0x84')](_0xb71a('0x85'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xb71a('0x4a')](_0xb71a('0x86'),_0xabbd5[_0xb71a('0x54')]['id']);for(var _0x56ca82=0x0;_0x56ca82<_0x48b1ac['length'];_0x56ca82+=0x1){let _0x12d81d=_0x48b1ac[_0x56ca82];for(var _0x37d0ec=0x0;_0x37d0ec<_0x12d81d['Agents'][_0xb71a('0x45')];_0x37d0ec+=0x1){let _0x1ecd58=_0x12d81d[_0xb71a('0x6d')][_0x37d0ec];var _0x1e5d88=_0xe8c99f[_0xb71a('0x87')]();_0x1e5d88[_0xb71a('0x4a')](_0xb71a('0x88'),_0x1ecd58['id']);_0x555205[_0xb71a('0x89')](db[_0xb71a('0x8a')][_0xb71a('0x3e')](_0x1e5d88[_0xb71a('0x8b')](),{'type':db['sequelize'][_0xb71a('0x8c')]['SELECT']})[_0xb71a('0x29')](function(_0x2a57c7){if(_0x2a57c7['length']===0x1){return _0x1ecd58['id'];}else{var _0x3ce63e=_['every'](_[_0xb71a('0x31')](_0x2a57c7,_0xb71a('0x8d')),function(_0x10fa62){return _[_0xb71a('0x33')](_0x2c89a5,_0x10fa62);});if(_0x3ce63e){return _0x1ecd58['id'];}}}));}}return BPromise['all'](_0x555205)[_0xb71a('0x29')](function(_0x508d8c){_0x5d6e87=_(_0x5d6e87)[_0xb71a('0x8e')](_0x508d8c)[_0xb71a('0x8f')]()[_0xb71a('0x32')]();return db['VoiceQueue'][_0xb71a('0x55')]({'where':{'id':_0xabbd5['params']['id']}})[_0xb71a('0x29')](function(_0x3b1b85){return db[_0xb71a('0x8a')][_0xb71a('0x73')](function(_0x56f7b3){return _0x3b1b85[_0xb71a('0x90')](_0xabbd5[_0xb71a('0x3e')]['ids'],{'transaction':_0x56f7b3})[_0xb71a('0x29')](function(){if(!_[_0xb71a('0x91')](_0x5d6e87)){return _0x3b1b85[_0xb71a('0x92')](_0x5d6e87,{'transaction':_0x56f7b3})[_0xb71a('0x29')](function(){return db['UserVoiceQueueRt'][_0xb71a('0x2a')]({'where':{'VoiceQueueId':_0xabbd5[_0xb71a('0x54')]['id'],'UserId':_0x5d6e87},'transaction':_0x56f7b3});});}})[_0xb71a('0x29')](function(){_0x5d6e87[_0xb71a('0x71')](function(_0x707e12){socket[_0xb71a('0x7d')](_0xb71a('0x93'),{'UserId':_0x707e12,'VoiceQueueId':_0x3b1b85['id']});});});});});});})[_0xb71a('0x29')](respondWithStatusCode(_0x338400,null))['catch'](handleError(_0x338400,null));};exports[_0xb71a('0x94')]=function(_0x26909d,_0x193525,_0x24196a){var _0x56a564,_0x15c770;return db[_0xb71a('0x3a')]['find']({'where':{'id':_0x26909d[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x193525,null))[_0xb71a('0x29')](function(_0x54f198){if(_0x54f198){_0x15c770=_0x54f198;return _0x54f198[_0xb71a('0x94')](_0x26909d[_0xb71a('0x61')][_0xb71a('0x7e')],_['omit'](_0x26909d[_0xb71a('0x61')],[_0xb71a('0x7e'),'id'])||{})[_0xb71a('0x95')](function(_0x6e3687){for(var _0x1e98e4=0x0;_0x1e98e4<_0x26909d[_0xb71a('0x61')][_0xb71a('0x7e')]['length'];_0x1e98e4+=0x1){socket['emit'](_0xb71a('0x96'),{'UserId':Number(_0x26909d[_0xb71a('0x61')][_0xb71a('0x7e')][_0x1e98e4]),'VoiceQueueId':Number(_0x26909d[_0xb71a('0x54')]['id'])});}return _0x6e3687;});}})[_0xb71a('0x29')](function(_0x35428c){_0x56a564=_0x35428c||[];if(_0x15c770){return db[_0xb71a('0x7f')][_0xb71a('0x51')]({'where':{'id':_0x26909d[_0xb71a('0x61')]['ids']},'attributes':['id','name',_0xb71a('0x97'),_0xb71a('0x6e'),_0xb71a('0x6f')],'raw':!![]});}})[_0xb71a('0x29')](function(_0x3b021d){if(!_['isEmpty'](_0x3b021d)){var _0x1764d7=[];for(var _0x1be129=0x0;_0x1be129<_0x3b021d[_0xb71a('0x45')];_0x1be129++){if(_0x3b021d[_0x1be129][_0xb71a('0x97')]){_0x1764d7[_0xb71a('0x89')](db[_0xb71a('0x7a')][_0xb71a('0x77')]({'membername':_0x3b021d[_0x1be129]['name'],'UserId':_0x3b021d[_0x1be129]['id'],'queue_name':_0x15c770[_0xb71a('0x35')],'VoiceQueueId':_0x15c770['id'],'interface':_[_0xb71a('0x7b')](_0x3b021d[_0x1be129][_0xb71a('0x6f')])?util[_0xb71a('0x7c')]('SIP/%s',_0x3b021d[_0x1be129][_0xb71a('0x35')]):_0x3b021d[_0x1be129][_0xb71a('0x6f')],'paused':_0x3b021d[_0x1be129][_0xb71a('0x6e')]||![],'penalty':_0x26909d[_0xb71a('0x61')]['penalty']||0x0}));}}return BPromise[_0xb71a('0x98')](_0x1764d7);}})[_0xb71a('0x29')](function(){return _0x56a564;})[_0xb71a('0x29')](respondWithResult(_0x193525,null))[_0xb71a('0x5b')](handleError(_0x193525,null));};exports[_0xb71a('0x92')]=function(_0x5f5c9c,_0x5ac5f3,_0x3fff8c){return db[_0xb71a('0x3a')][_0xb71a('0x55')]({'where':{'id':_0x5f5c9c[_0xb71a('0x54')]['id']}})['then'](handleEntityNotFound(_0x5ac5f3,null))[_0xb71a('0x29')](function(_0x6dbd4a){if(_0x6dbd4a){return _0x6dbd4a['removeAgents'](_0x5f5c9c[_0xb71a('0x3e')][_0xb71a('0x7e')])[_0xb71a('0x29')](function(){if(_[_0xb71a('0x99')](_0x5f5c9c['query'][_0xb71a('0x7e')])){for(var _0x3f612a=0x0;_0x3f612a<_0x5f5c9c[_0xb71a('0x3e')]['ids']['length'];_0x3f612a+=0x1){socket[_0xb71a('0x7d')]('userVoiceQueue:remove',{'UserId':Number(_0x5f5c9c[_0xb71a('0x3e')][_0xb71a('0x7e')][_0x3f612a]),'VoiceQueueId':Number(_0x5f5c9c[_0xb71a('0x54')]['id'])});}}else{socket[_0xb71a('0x7d')](_0xb71a('0x93'),{'UserId':Number(_0x5f5c9c[_0xb71a('0x3e')][_0xb71a('0x7e')]),'VoiceQueueId':Number(_0x5f5c9c[_0xb71a('0x54')]['id'])});}});}})['then'](function(_0x59dfa3){return db[_0xb71a('0x7a')][_0xb71a('0x2a')]({'where':{'VoiceQueueId':_0x5f5c9c[_0xb71a('0x54')]['id'],'UserId':_0x5f5c9c[_0xb71a('0x3e')][_0xb71a('0x7e')]}})[_0xb71a('0x29')](function(){return _0x59dfa3;});})['then'](respondWithStatusCode(_0x5ac5f3,null))['catch'](handleError(_0x5ac5f3,null));};exports[_0xb71a('0x9a')]=function(_0x369e33,_0x97794e,_0x40d7a0){var _0x4ca0f2={};var _0x359c74={};var _0x4c5970;var _0x4af16b;return db[_0xb71a('0x3a')][_0xb71a('0x64')]({'where':{'id':_0x369e33[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x97794e,null))['then'](function(_0x46462c){if(_0x46462c){_0x4c5970=_0x46462c;_0x359c74[_0xb71a('0x41')]=_['keys'](db[_0xb71a('0x7f')][_0xb71a('0x3b')]);_0x359c74[_0xb71a('0x3e')]=_['keys'](_0x369e33[_0xb71a('0x3e')]);_0x359c74['filters']=_[_0xb71a('0x43')](_0x359c74['model'],_0x359c74[_0xb71a('0x3e')]);_0x4ca0f2[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x359c74[_0xb71a('0x41')],qs['fields'](_0x369e33['query'][_0xb71a('0x44')]));_0x4ca0f2[_0xb71a('0x42')]=_0x4ca0f2['attributes'][_0xb71a('0x45')]?_0x4ca0f2[_0xb71a('0x42')]:_0x359c74[_0xb71a('0x41')];_0x4ca0f2[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x369e33['query'][_0xb71a('0x49')]);_0x4ca0f2[_0xb71a('0x4a')]=qs[_0xb71a('0x40')](_[_0xb71a('0x4b')](_0x369e33['query'],_0x359c74[_0xb71a('0x40')]));if(_0x369e33[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x4ca0f2['where']=_[_0xb71a('0x4d')](_0x4ca0f2[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0x4ca0f2[_0xb71a('0x42')],function(_0x2d234d){var _0xc527b1={};_0xc527b1[_0x2d234d]={'$like':'%'+_0x369e33[_0xb71a('0x3e')][_0xb71a('0x2f')]+'%'};return _0xc527b1;})});}_0x4ca0f2=_[_0xb71a('0x4d')]({},_0x4ca0f2,_0x369e33[_0xb71a('0x4e')]);return _0x4c5970[_0xb71a('0x9a')](_0x4ca0f2);}})[_0xb71a('0x29')](function(_0x199dae){if(_0x199dae){_0x4af16b=_0x199dae['length'];if(!_0x369e33[_0xb71a('0x3e')][_0xb71a('0x46')](_0xb71a('0x47'))){_0x4ca0f2[_0xb71a('0x21')]=qs['limit'](_0x369e33[_0xb71a('0x3e')][_0xb71a('0x21')]);_0x4ca0f2[_0xb71a('0x1f')]=qs[_0xb71a('0x1f')](_0x369e33[_0xb71a('0x3e')][_0xb71a('0x1f')]);}return _0x4c5970[_0xb71a('0x9a')](_0x4ca0f2);}})['then'](function(_0xb43bdc){if(_0xb43bdc){return _0xb43bdc?{'count':_0x4af16b,'rows':_0xb43bdc}:null;}})['then'](respondWithResult(_0x97794e,null))[_0xb71a('0x5b')](handleError(_0x97794e,null));};exports[_0xb71a('0x9b')]=function(_0x594935,_0x1abbd1,_0x36659c){var _0x334d1e={};var _0x48b54a={};var _0x2c9c93;var _0x3ade3c;return db[_0xb71a('0x3a')][_0xb71a('0x64')]({'where':{'id':_0x594935['params']['id']}})['then'](handleEntityNotFound(_0x1abbd1,null))['then'](function(_0x2ec2c6){if(_0x2ec2c6){_0x2c9c93=_0x2ec2c6;_0x48b54a['model']=_[_0xb71a('0x3f')](db['UserVoiceQueueRt'][_0xb71a('0x3b')]);_0x48b54a['query']=_[_0xb71a('0x3f')](_0x594935[_0xb71a('0x3e')]);_0x48b54a[_0xb71a('0x40')]=_[_0xb71a('0x43')](_0x48b54a[_0xb71a('0x41')],_0x48b54a[_0xb71a('0x3e')]);_0x334d1e[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x48b54a[_0xb71a('0x41')],qs[_0xb71a('0x44')](_0x594935[_0xb71a('0x3e')][_0xb71a('0x44')]));_0x334d1e[_0xb71a('0x42')]=_0x334d1e[_0xb71a('0x42')][_0xb71a('0x45')]?_0x334d1e[_0xb71a('0x42')]:_0x48b54a[_0xb71a('0x41')];_0x334d1e[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x594935[_0xb71a('0x3e')]['sort']);_0x334d1e[_0xb71a('0x4a')]=qs[_0xb71a('0x40')](_['pick'](_0x594935['query'],_0x48b54a[_0xb71a('0x40')]));if(_0x594935[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x334d1e['where']=_[_0xb71a('0x4d')](_0x334d1e[_0xb71a('0x4a')],{'$or':_['map'](_0x334d1e['attributes'],function(_0x3ed674){var _0x29352f={};_0x29352f[_0x3ed674]={'$like':'%'+_0x594935[_0xb71a('0x3e')]['filter']+'%'};return _0x29352f;})});}_0x334d1e=_[_0xb71a('0x4d')]({},_0x334d1e,_0x594935['options']);return _0x2c9c93[_0xb71a('0x9b')](_0x334d1e);}})[_0xb71a('0x29')](function(_0x27b048){if(_0x27b048){_0x3ade3c=_0x27b048['length'];if(!_0x594935[_0xb71a('0x3e')][_0xb71a('0x46')]('nolimit')){_0x334d1e[_0xb71a('0x21')]=qs[_0xb71a('0x21')](_0x594935[_0xb71a('0x3e')][_0xb71a('0x21')]);_0x334d1e[_0xb71a('0x1f')]=qs['offset'](_0x594935[_0xb71a('0x3e')][_0xb71a('0x1f')]);}return _0x2c9c93[_0xb71a('0x9b')](_0x334d1e);}})['then'](function(_0x3f9792){return _0x3f9792?{'count':_0x3ade3c,'rows':_0x3f9792}:null;})[_0xb71a('0x29')](respondWithResult(_0x1abbd1,null))[_0xb71a('0x5b')](handleError(_0x1abbd1,null));};exports[_0xb71a('0x9c')]=function(_0x1bb57c,_0x5ddd78,_0xa790e8){var _0x5cbc9c={};var _0x1e15f5={};var _0x1d5779;var _0x499586;return db[_0xb71a('0x3a')][_0xb71a('0x64')]({'where':{'id':_0x1bb57c[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x5ddd78,null))[_0xb71a('0x29')](function(_0x14b836){if(_0x14b836){_0x1d5779=_0x14b836;_0x1e15f5[_0xb71a('0x41')]=_[_0xb71a('0x3f')](db[_0xb71a('0x9d')][_0xb71a('0x3b')]);_0x1e15f5['query']=_[_0xb71a('0x3f')](_0x1bb57c[_0xb71a('0x3e')]);_0x1e15f5[_0xb71a('0x40')]=_[_0xb71a('0x43')](_0x1e15f5[_0xb71a('0x41')],_0x1e15f5[_0xb71a('0x3e')]);_0x5cbc9c[_0xb71a('0x42')]=_['intersection'](_0x1e15f5[_0xb71a('0x41')],qs['fields'](_0x1bb57c['query'][_0xb71a('0x44')]));_0x5cbc9c[_0xb71a('0x42')]=_0x5cbc9c['attributes'][_0xb71a('0x45')]?_0x5cbc9c[_0xb71a('0x42')]:_0x1e15f5[_0xb71a('0x41')];_0x5cbc9c[_0xb71a('0x48')]=qs['sort'](_0x1bb57c['query'][_0xb71a('0x49')]);_0x5cbc9c[_0xb71a('0x4a')]=qs['filters'](_[_0xb71a('0x4b')](_0x1bb57c[_0xb71a('0x3e')],_0x1e15f5[_0xb71a('0x40')]));if(_0x1bb57c[_0xb71a('0x3e')][_0xb71a('0x2f')]){_0x5cbc9c[_0xb71a('0x4a')]=_[_0xb71a('0x4d')](_0x5cbc9c[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0x5cbc9c[_0xb71a('0x42')],function(_0x452f06){var _0x3dfe80={};_0x3dfe80[_0x452f06]={'$like':'%'+_0x1bb57c[_0xb71a('0x3e')][_0xb71a('0x2f')]+'%'};return _0x3dfe80;})});}_0x5cbc9c=_[_0xb71a('0x4d')]({},_0x5cbc9c,_0x1bb57c['options']);return _0x1d5779[_0xb71a('0x9c')](_0x5cbc9c);}})[_0xb71a('0x29')](function(_0xe8ce86){if(_0xe8ce86){_0x499586=_0xe8ce86[_0xb71a('0x45')];if(!_0x1bb57c['query'][_0xb71a('0x46')](_0xb71a('0x47'))){_0x5cbc9c[_0xb71a('0x21')]=qs['limit'](_0x1bb57c[_0xb71a('0x3e')]['limit']);_0x5cbc9c[_0xb71a('0x1f')]=qs[_0xb71a('0x1f')](_0x1bb57c[_0xb71a('0x3e')][_0xb71a('0x1f')]);}return _0x1d5779['getLists'](_0x5cbc9c);}})[_0xb71a('0x29')](function(_0x20d281){if(_0x20d281){return _0x20d281?{'count':_0x499586,'rows':_0x20d281}:null;}})[_0xb71a('0x29')](respondWithResult(_0x5ddd78,null))['catch'](handleError(_0x5ddd78,null));};exports[_0xb71a('0x9e')]=function(_0x597bf9,_0x134dab,_0x5d9ad2){var _0x26f89f=moment()[_0xb71a('0x7c')](_0xb71a('0x9f'));var _0x45a458,_0x5c0bf6;return db['VoiceQueue'][_0xb71a('0x55')]({'where':{'id':_0x597bf9['params']['id']}})['then'](handleEntityNotFound(_0x134dab,null))['then'](function(_0x5cfaa8){if(_0x5cfaa8){_0x5c0bf6=_0x5cfaa8;return _0x5cfaa8[_0xb71a('0x9e')](_0x597bf9[_0xb71a('0x61')][_0xb71a('0x7e')],_[_0xb71a('0x60')](_0x597bf9['body'],[_0xb71a('0x7e'),'id'])||{});}return null;})[_0xb71a('0x95')](function(_0x186f92){var _0x9eeafc;_0x45a458=_0x186f92||[];var _0x2ca37e=[];if(_0x186f92){for(var _0x2d1846=0x0;_0x2d1846<_0x186f92[_0xb71a('0x45')];_0x2d1846+=0x1){var _0x377810=_0x186f92[_0x2d1846][_0xb71a('0x2b')]({'plain':!![]});_0x5c0bf6[_0xb71a('0xa0')]=_0x597bf9[_0xb71a('0x61')][_0xb71a('0xa0')]?_0x597bf9[_0xb71a('0x61')][_0xb71a('0xa0')]:_0x5c0bf6[_0xb71a('0xa0')];switch(_0x5c0bf6[_0xb71a('0xa0')]){case _0xb71a('0xa1'):_0x9eeafc=squel[_0xb71a('0xa2')]()[_0xb71a('0xa3')](_0xb71a('0xa4'))[_0xb71a('0xa5')]([_0xb71a('0xa6'),_0xb71a('0xa7'),_0xb71a('0xa8'),_0xb71a('0xa9'),_0xb71a('0x66'),_0xb71a('0x5e'),_0xb71a('0x5f')],squel['select']()[_0xb71a('0x81')](_0xb71a('0xa6'),_0xb71a('0xa6'))[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27','scheduledAt')['field']('id',_0xb71a('0xa8'))[_0xb71a('0x81')](_0x377810['CmListId'][_0xb71a('0x8b')](),_0xb71a('0xa9'))[_0xb71a('0x81')](_0x597bf9[_0xb71a('0x54')]['id'][_0xb71a('0x8b')](),_0xb71a('0x66'))[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27','createdAt')[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27',_0xb71a('0x5f'))[_0xb71a('0x83')]('cm_contacts')[_0xb71a('0x4a')](_0xb71a('0xaa'))[_0xb71a('0x4a')](_0xb71a('0xab'),_0x377810[_0xb71a('0xac')][_0xb71a('0x8b')]())[_0xb71a('0x4a')](_0xb71a('0xad'))[_0xb71a('0x4a')](_0xb71a('0xae'),squel[_0xb71a('0x80')]()[_0xb71a('0x81')](_0xb71a('0xaf'))['from'](_0xb71a('0xb0'))['where'](_0xb71a('0x86'),_0x597bf9['params']['id'][_0xb71a('0x8b')]()))[_0xb71a('0x4a')]('phone\x20NOT\x20IN\x20(?)',squel[_0xb71a('0x80')]()[_0xb71a('0x81')](_0xb71a('0xb1'))['from']('cm_hopper')[_0xb71a('0x4a')](_0xb71a('0x86'),_0x597bf9[_0xb71a('0x54')]['id'][_0xb71a('0x8b')]())))[_0xb71a('0x8b')]();break;case'onlyIfOpen':_0x9eeafc=squel[_0xb71a('0xa2')]()[_0xb71a('0xa3')](_0xb71a('0xa4'))[_0xb71a('0xa5')]([_0xb71a('0xa6'),_0xb71a('0xa7'),_0xb71a('0xa8'),_0xb71a('0xa9'),_0xb71a('0x66'),_0xb71a('0x5e'),_0xb71a('0x5f')],squel[_0xb71a('0x80')]()[_0xb71a('0x81')](_0xb71a('0xa6'),_0xb71a('0xa6'))['field']('\x27'+_0x26f89f+'\x27',_0xb71a('0xa7'))[_0xb71a('0x81')]('id',_0xb71a('0xa8'))[_0xb71a('0x81')](_0x377810[_0xb71a('0xac')]['toString'](),_0xb71a('0xa9'))[_0xb71a('0x81')](_0x597bf9[_0xb71a('0x54')]['id'][_0xb71a('0x8b')](),_0xb71a('0x66'))['field']('\x27'+_0x26f89f+'\x27','createdAt')[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27',_0xb71a('0x5f'))[_0xb71a('0x83')](_0xb71a('0xb2'))['where'](_0xb71a('0xaa'))[_0xb71a('0x4a')]('ListId\x20=\x20?',_0x377810[_0xb71a('0xac')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xb71a('0x81')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')['where'](_0xb71a('0x86'),_0x597bf9['params']['id']['toString']())))['toString']();break;default:_0x9eeafc=squel[_0xb71a('0xa2')]()['into'](_0xb71a('0xa4'))[_0xb71a('0xa5')]([_0xb71a('0xa6'),_0xb71a('0xa7'),_0xb71a('0xa8'),'ListId',_0xb71a('0x66'),_0xb71a('0x5e'),_0xb71a('0x5f')],squel[_0xb71a('0x80')]()[_0xb71a('0x81')](_0xb71a('0xa6'),_0xb71a('0xa6'))[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27','scheduledAt')[_0xb71a('0x81')]('id',_0xb71a('0xa8'))['field'](_0x377810[_0xb71a('0xac')][_0xb71a('0x8b')](),_0xb71a('0xa9'))['field'](_0x597bf9[_0xb71a('0x54')]['id'][_0xb71a('0x8b')](),_0xb71a('0x66'))[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27',_0xb71a('0x5e'))[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27',_0xb71a('0x5f'))['from'](_0xb71a('0xb2'))['where'](_0xb71a('0xaa'))['where']('ListId\x20=\x20?',_0x377810[_0xb71a('0xac')]['toString']())[_0xb71a('0x4a')](_0xb71a('0xad')))[_0xb71a('0x8b')]();}_0x2ca37e[_0xb71a('0x89')](db['sequelize']['query'](_0x9eeafc));}return BPromise[_0xb71a('0x98')](_0x2ca37e);}})['then'](function(){var _0x155523=[];var _0x44f6f0=squel[_0xb71a('0xa2')]()[_0xb71a('0xa3')](_0xb71a('0xb3'))[_0xb71a('0xa5')]([_0xb71a('0xb4'),_0xb71a('0xa6'),_0xb71a('0xb5'),_0xb71a('0x5e'),_0xb71a('0x5f')],squel['select']()[_0xb71a('0x81')](_0xb71a('0xb6'))['field'](_0xb71a('0xb7'))[_0xb71a('0x81')](_0xb71a('0xb8'))[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27',_0xb71a('0x5e'))[_0xb71a('0x81')]('\x27'+_0x26f89f+'\x27',_0xb71a('0x5f'))[_0xb71a('0x83')](_0xb71a('0xb9'),'ci')['join']('cm_hopper','h','h.ContactId=ci.CmContactId')[_0xb71a('0x4a')](_0xb71a('0xba'),_0x26f89f)[_0xb71a('0x4a')](_0xb71a('0xbb'),_0xb71a('0xbc')))[_0xb71a('0x8b')]();_0x155523['push'](db[_0xb71a('0x8a')][_0xb71a('0x3e')](_0x44f6f0));return BPromise['all'](_0x155523);})['then'](function(){return _0x45a458;})['then'](respondWithResult(_0x134dab,null))[_0xb71a('0x5b')](handleError(_0x134dab,null));};exports['removeLists']=function(_0x4bd873,_0x2081ae,_0x4e594f){return db['VoiceQueue'][_0xb71a('0x55')]({'where':{'id':_0x4bd873[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x2081ae,null))[_0xb71a('0x29')](function(_0x475e66){if(_0x475e66){return _0x475e66[_0xb71a('0xbd')](_0x4bd873[_0xb71a('0x3e')][_0xb71a('0x7e')]);}})['then'](function(_0xe1b46a){if(_0xe1b46a){return db[_0xb71a('0x65')][_0xb71a('0x2a')]({'where':{'ListId':_0x4bd873['query'][_0xb71a('0x7e')],'VoiceQueueId':_0x4bd873[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](function(){return _0xe1b46a;});}})[_0xb71a('0x29')](respondWithStatusCode(_0x2081ae,null))[_0xb71a('0x5b')](handleError(_0x2081ae,null));};exports[_0xb71a('0xbe')]=function(_0x1824b3,_0x4fec8c,_0x3d44e8){var _0x503fd3={};var _0x2cbda4={};var _0x1ee107;var _0x5b50d0;return db[_0xb71a('0x3a')][_0xb71a('0x64')]({'where':{'id':_0x1824b3[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x4fec8c,null))[_0xb71a('0x29')](function(_0x6df70f){if(_0x6df70f){_0x1ee107=_0x6df70f;_0x2cbda4[_0xb71a('0x41')]=_['keys'](db[_0xb71a('0x9d')]['rawAttributes']);_0x2cbda4[_0xb71a('0x3e')]=_['keys'](_0x1824b3[_0xb71a('0x3e')]);_0x2cbda4[_0xb71a('0x40')]=_[_0xb71a('0x43')](_0x2cbda4['model'],_0x2cbda4[_0xb71a('0x3e')]);_0x503fd3[_0xb71a('0x42')]=_[_0xb71a('0x43')](_0x2cbda4[_0xb71a('0x41')],qs[_0xb71a('0x44')](_0x1824b3[_0xb71a('0x3e')][_0xb71a('0x44')]));_0x503fd3[_0xb71a('0x42')]=_0x503fd3[_0xb71a('0x42')][_0xb71a('0x45')]?_0x503fd3[_0xb71a('0x42')]:_0x2cbda4[_0xb71a('0x41')];_0x503fd3[_0xb71a('0x48')]=qs[_0xb71a('0x49')](_0x1824b3[_0xb71a('0x3e')][_0xb71a('0x49')]);_0x503fd3[_0xb71a('0x4a')]=qs[_0xb71a('0x40')](_[_0xb71a('0x4b')](_0x1824b3[_0xb71a('0x3e')],_0x2cbda4[_0xb71a('0x40')]));if(_0x1824b3['query'][_0xb71a('0x2f')]){_0x503fd3[_0xb71a('0x4a')]=_['merge'](_0x503fd3[_0xb71a('0x4a')],{'$or':_[_0xb71a('0x31')](_0x503fd3[_0xb71a('0x42')],function(_0x40e431){var _0x41a42d={};_0x41a42d[_0x40e431]={'$like':'%'+_0x1824b3[_0xb71a('0x3e')]['filter']+'%'};return _0x41a42d;})});}_0x503fd3=_['merge']({},_0x503fd3,_0x1824b3[_0xb71a('0x4e')]);return _0x1ee107['getBlackLists'](_0x503fd3);}})[_0xb71a('0x29')](function(_0xfeae17){if(_0xfeae17){_0x5b50d0=_0xfeae17[_0xb71a('0x45')];if(!_0x1824b3['query']['hasOwnProperty'](_0xb71a('0x47'))){_0x503fd3[_0xb71a('0x21')]=qs['limit'](_0x1824b3[_0xb71a('0x3e')][_0xb71a('0x21')]);_0x503fd3[_0xb71a('0x1f')]=qs[_0xb71a('0x1f')](_0x1824b3[_0xb71a('0x3e')][_0xb71a('0x1f')]);}return _0x1ee107[_0xb71a('0xbe')](_0x503fd3);}})[_0xb71a('0x29')](function(_0x23ce90){if(_0x23ce90){return _0x23ce90?{'count':_0x5b50d0,'rows':_0x23ce90}:null;}})[_0xb71a('0x29')](respondWithResult(_0x4fec8c,null))['catch'](handleError(_0x4fec8c,null));};exports[_0xb71a('0xbf')]=function(_0x1726fa,_0x379812,_0x42ddcc){var _0x25b4e0,_0x149b4c;return db[_0xb71a('0x3a')][_0xb71a('0x55')]({'where':{'id':_0x1726fa[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0x379812,null))[_0xb71a('0x29')](function(_0x1a0615){if(_0x1a0615){_0x149b4c=_0x1a0615;return _0x1a0615['addBlackLists'](_0x1726fa['body']['ids'],_[_0xb71a('0x60')](_0x1726fa[_0xb71a('0x61')],['ids','id'])||{});}return null;})[_0xb71a('0x95')](function(_0x58ae6d){var _0x490ff3;_0x25b4e0=_0x58ae6d||[];var _0x672c6c=[];if(_0x58ae6d){for(var _0x3757ba=0x0;_0x3757ba<_0x58ae6d[_0xb71a('0x45')];_0x3757ba+=0x1){var _0x70512f=_0x58ae6d[_0x3757ba][_0xb71a('0x2b')]({'plain':!![]});_0x490ff3=squel[_0xb71a('0xa2')]()[_0xb71a('0xa3')](_0xb71a('0xc0'))[_0xb71a('0xa5')]([_0xb71a('0xa6'),_0xb71a('0xa8'),_0xb71a('0xa9'),_0xb71a('0x66'),_0xb71a('0x5e'),_0xb71a('0x5f')],squel[_0xb71a('0x80')]()[_0xb71a('0x81')](_0xb71a('0xa6'),_0xb71a('0xa6'))[_0xb71a('0x81')]('id',_0xb71a('0xa8'))[_0xb71a('0x81')](_0x70512f[_0xb71a('0xac')][_0xb71a('0x8b')](),_0xb71a('0xa9'))[_0xb71a('0x81')](_0x1726fa[_0xb71a('0x54')]['id'][_0xb71a('0x8b')](),'VoiceQueueId')['field'](_0xb71a('0xc1'),_0xb71a('0x5e'))[_0xb71a('0x81')](_0xb71a('0xc1'),'updatedAt')['from'](_0xb71a('0xb2'))['where'](_0xb71a('0xaa'))['where'](_0xb71a('0xab'),_0x70512f[_0xb71a('0xac')]['toString']())[_0xb71a('0x4a')](_0xb71a('0xad')))[_0xb71a('0x8b')]();_0x672c6c[_0xb71a('0x89')](db[_0xb71a('0x8a')][_0xb71a('0x3e')](_0x490ff3));}return BPromise['all'](_0x672c6c);}})[_0xb71a('0x29')](function(){return _0x25b4e0;})[_0xb71a('0x29')](respondWithResult(_0x379812,null))[_0xb71a('0x5b')](handleError(_0x379812,null));};exports['removeBlackLists']=function(_0x3f371d,_0xfb020,_0x2753bd){return db[_0xb71a('0x3a')][_0xb71a('0x55')]({'where':{'id':_0x3f371d[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](handleEntityNotFound(_0xfb020,null))[_0xb71a('0x29')](function(_0x7e78fa){if(_0x7e78fa){return _0x7e78fa[_0xb71a('0xc2')](_0x3f371d[_0xb71a('0x3e')][_0xb71a('0x7e')]);}})['then'](function(_0x1299d8){if(_0x1299d8){return db[_0xb71a('0x69')][_0xb71a('0x2a')]({'where':{'ListId':_0x3f371d[_0xb71a('0x3e')]['ids'],'VoiceQueueId':_0x3f371d[_0xb71a('0x54')]['id']}})[_0xb71a('0x29')](function(){return _0x1299d8;});}})[_0xb71a('0x29')](respondWithStatusCode(_0xfb020,null))['catch'](handleError(_0xfb020,null));};
\ No newline at end of file
index 54ac311..8c46aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0be=['hook','exports','VoiceQueue','save','update','remove','emit','hasOwnProperty'];(function(_0x19d683,_0x703b58){var _0x575519=function(_0x35150b){while(--_0x35150b){_0x19d683['push'](_0x19d683['shift']());}};_0x575519(++_0x703b58);}(_0xf0be,0x17a));var _0xef0b=function(_0x4e8c0d,_0x3ef1f8){_0x4e8c0d=_0x4e8c0d-0x0;var _0x8431fa=_0xf0be[_0x4e8c0d];return _0x8431fa;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db'][_0xef0b('0x0')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xef0b('0x1'),'afterUpdate':_0xef0b('0x2'),'afterDestroy':_0xef0b('0x3')};function emitEvent(_0x563832){return function(_0x442741,_0x264365,_0x3bf3eb){VoiceQueueEvents[_0xef0b('0x4')](_0x563832+':'+_0x442741['id'],_0x442741);VoiceQueueEvents[_0xef0b('0x4')](_0x563832,_0x442741);_0x3bf3eb(null);};}for(var e in events){if(events[_0xef0b('0x5')](e)){var event=events[e];VoiceQueue[_0xef0b('0x6')](e,emitEvent(event));}}module[_0xef0b('0x7')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xad42=['hook','exports','events','../../mysqldb','VoiceQueue','save','remove','emit'];(function(_0x26f518,_0x5a6c2d){var _0x3666d=function(_0x38ef7f){while(--_0x38ef7f){_0x26f518['push'](_0x26f518['shift']());}};_0x3666d(++_0x5a6c2d);}(_0xad42,0x182));var _0x2ad4=function(_0x182828,_0x2a2c40){_0x182828=_0x182828-0x0;var _0x1489d7=_0xad42[_0x182828];return _0x1489d7;};'use strict';var EventEmitter=require(_0x2ad4('0x0'));var VoiceQueue=require(_0x2ad4('0x1'))['db'][_0x2ad4('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2ad4('0x3'),'afterUpdate':'update','afterDestroy':_0x2ad4('0x4')};function emitEvent(_0x5b8f30){return function(_0x57e9e9,_0x4761c2,_0xd1e28b){VoiceQueueEvents[_0x2ad4('0x5')](_0x5b8f30+':'+_0x57e9e9['id'],_0x57e9e9);VoiceQueueEvents['emit'](_0x5b8f30,_0x57e9e9);_0xd1e28b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x2ad4('0x6')](e,emitEvent(event));}}module[_0x2ad4('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index 3963339..9466c5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x216428,_0x5d20ea){var _0x313dd4=function(_0x447e0d){while(--_0x447e0d){_0x216428['push'](_0x216428['shift']());}};_0x313dd4(++_0x5d20ea);}(_0x3e74,0x175));var _0x43e7=function(_0x27c914,_0x5e439f){_0x27c914=_0x27c914-0x0;var _0x3a72f7=_0x3e74[_0x27c914];return _0x3a72f7;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0x382757,_0x571ba1){var _0x45f217=function(_0x1bc781){while(--_0x1bc781){_0x382757['push'](_0x382757['shift']());}};_0x45f217(++_0x571ba1);}(_0xedd9,0xfc));var _0x9edd=function(_0x385706,_0x27cd45){_0x385706=_0x385706-0x0;var _0x16aa20=_0xedd9[_0x385706];return _0x16aa20;};'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
index 45d8d4b..fbf3256 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa795=['code','message','info','result','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','limit','include','model','attributes','map','debug','ShowVoiceQueue','find','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voiceQueue.socket','register','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x946518,_0x22816f){var _0x909b69=function(_0x2fa5a4){while(--_0x2fa5a4){_0x946518['push'](_0x946518['shift']());}};_0x909b69(++_0x22816f);}(_0xa795,0x18d));var _0x5a79=function(_0x58ff3b,_0x45a065){_0x58ff3b=_0x58ff3b-0x0;var _0x2e337e=_0xa795[_0x58ff3b];return _0x2e337e;};'use strict';var _=require(_0x5a79('0x0'));var util=require(_0x5a79('0x1'));var moment=require(_0x5a79('0x2'));var BPromise=require(_0x5a79('0x3'));var rs=require(_0x5a79('0x4'));var fs=require('fs');var Redis=require(_0x5a79('0x5'));var db=require(_0x5a79('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5a79('0x7'));var config=require(_0x5a79('0x8'));var jayson=require(_0x5a79('0x9'));var client=jayson[_0x5a79('0xa')][_0x5a79('0xb')]({'port':0x232a});config[_0x5a79('0xc')]=_[_0x5a79('0xd')](config[_0x5a79('0xc')],{'host':_0x5a79('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5a79('0xc')]));require(_0x5a79('0xf'))[_0x5a79('0x10')](socket);function respondWithRpcPromise(_0x1a6521,_0x107258,_0x16ff26){return new BPromise(function(_0x3dbe0d,_0x4d0a32){return client['request'](_0x1a6521,_0x16ff26)[_0x5a79('0x11')](function(_0x26fe53){logger['info'](_0x5a79('0x12'),_0x107258,_0x5a79('0x13'));logger['debug'](_0x5a79('0x14'),_0x107258,_0x5a79('0x13'),JSON[_0x5a79('0x15')](_0x26fe53));if(_0x26fe53[_0x5a79('0x16')]){if(_0x26fe53[_0x5a79('0x16')][_0x5a79('0x17')]===0x1f4){logger[_0x5a79('0x16')](_0x5a79('0x12'),_0x107258,_0x26fe53[_0x5a79('0x16')]['message']);return _0x4d0a32(_0x26fe53[_0x5a79('0x16')][_0x5a79('0x18')]);}logger[_0x5a79('0x16')](_0x5a79('0x12'),_0x107258,_0x26fe53[_0x5a79('0x16')]['message']);return _0x3dbe0d(_0x26fe53['error']['message']);}else{logger[_0x5a79('0x19')](_0x5a79('0x12'),_0x107258,_0x5a79('0x13'));_0x3dbe0d(_0x26fe53[_0x5a79('0x1a')][_0x5a79('0x18')]);}})['catch'](function(_0x27aab5){logger[_0x5a79('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x107258,_0x27aab5);_0x4d0a32(_0x27aab5);});});}exports[_0x5a79('0x1b')]=function(_0x2e3b02){var _0x316356=this;return new Promise(function(_0x590cc1,_0x203a55){return db[_0x5a79('0x1c')][_0x5a79('0x1d')]({'raw':_0x2e3b02[_0x5a79('0x1e')]?_0x2e3b02[_0x5a79('0x1e')][_0x5a79('0x1f')]===undefined?!![]:![]:!![],'where':_0x2e3b02[_0x5a79('0x1e')]?_0x2e3b02[_0x5a79('0x1e')][_0x5a79('0x20')]||null:null,'attributes':_0x2e3b02[_0x5a79('0x1e')]?_0x2e3b02[_0x5a79('0x1e')]['attributes']||null:null,'limit':_0x2e3b02[_0x5a79('0x1e')]?_0x2e3b02[_0x5a79('0x1e')][_0x5a79('0x21')]||null:null,'include':_0x2e3b02[_0x5a79('0x1e')]?_0x2e3b02[_0x5a79('0x1e')]['include']?_['map'](_0x2e3b02[_0x5a79('0x1e')][_0x5a79('0x22')],function(_0x58847c){return{'model':db[_0x58847c[_0x5a79('0x23')]],'as':_0x58847c['as'],'attributes':_0x58847c[_0x5a79('0x24')],'include':_0x58847c['include']?_[_0x5a79('0x25')](_0x58847c[_0x5a79('0x22')],function(_0x123a84){return{'model':db[_0x123a84[_0x5a79('0x23')]],'as':_0x123a84['as'],'attributes':_0x123a84['attributes'],'include':_0x123a84[_0x5a79('0x22')]?_[_0x5a79('0x25')](_0x123a84[_0x5a79('0x22')],function(_0x3c5066){return{'model':db[_0x3c5066[_0x5a79('0x23')]],'as':_0x3c5066['as'],'attributes':_0x3c5066[_0x5a79('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d70c4){logger[_0x5a79('0x19')](_0x5a79('0x1b'),_0x2e3b02);logger[_0x5a79('0x26')](_0x5a79('0x1b'),_0x2e3b02,JSON[_0x5a79('0x15')](_0x4d70c4));_0x590cc1(_0x4d70c4);})['catch'](function(_0x27f222){logger['error'](_0x5a79('0x1b'),_0x27f222[_0x5a79('0x18')],_0x2e3b02);_0x203a55(_0x316356[_0x5a79('0x16')](0x1f4,_0x27f222['message']));});});};exports[_0x5a79('0x27')]=function(_0x5422d6){var _0x23a56b=this;return new Promise(function(_0x170bd1,_0x2bc225){return db[_0x5a79('0x1c')][_0x5a79('0x28')]({'raw':_0x5422d6[_0x5a79('0x1e')]?_0x5422d6[_0x5a79('0x1e')][_0x5a79('0x1f')]===undefined?!![]:![]:!![],'where':_0x5422d6[_0x5a79('0x1e')]?_0x5422d6[_0x5a79('0x1e')]['where']||null:null,'attributes':_0x5422d6[_0x5a79('0x1e')]?_0x5422d6[_0x5a79('0x1e')][_0x5a79('0x24')]||null:null,'include':_0x5422d6[_0x5a79('0x1e')]?_0x5422d6[_0x5a79('0x1e')][_0x5a79('0x22')]?_[_0x5a79('0x25')](_0x5422d6[_0x5a79('0x1e')]['include'],function(_0x183f29){return{'model':db[_0x183f29['model']],'as':_0x183f29['as'],'attributes':_0x183f29[_0x5a79('0x24')],'include':_0x183f29[_0x5a79('0x22')]?_[_0x5a79('0x25')](_0x183f29[_0x5a79('0x22')],function(_0x363e7a){return{'model':db[_0x363e7a[_0x5a79('0x23')]],'as':_0x363e7a['as'],'attributes':_0x363e7a[_0x5a79('0x24')],'include':_0x363e7a[_0x5a79('0x22')]?_[_0x5a79('0x25')](_0x363e7a[_0x5a79('0x22')],function(_0x502e2d){return{'model':db[_0x502e2d['model']],'as':_0x502e2d['as'],'attributes':_0x502e2d[_0x5a79('0x24')]};}):[]};}):[]};}):[]:[]})[_0x5a79('0x11')](function(_0x5a5b55){logger[_0x5a79('0x19')](_0x5a79('0x27'),_0x5422d6);logger[_0x5a79('0x26')]('ShowVoiceQueue',_0x5422d6,JSON['stringify'](_0x5a5b55));_0x170bd1(_0x5a5b55);})[_0x5a79('0x29')](function(_0x105c87){logger[_0x5a79('0x16')](_0x5a79('0x27'),_0x105c87['message'],_0x5422d6);_0x2bc225(_0x23a56b[_0x5a79('0x16')](0x1f4,_0x105c87[_0x5a79('0x18')]));});});};
\ No newline at end of file
+var _0xc56b=['info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','VoiceQueue,\x20%s,\x20%s','message','result','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','map','include','model','catch','ShowVoiceQueue','find','stringify','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','register','request','then'];(function(_0x330141,_0x1dd290){var _0x1b68a2=function(_0x4e7f3c){while(--_0x4e7f3c){_0x330141['push'](_0x330141['shift']());}};_0x1b68a2(++_0x1dd290);}(_0xc56b,0x19e));var _0xbc56=function(_0x4224ff,_0x1bee4d){_0x4224ff=_0x4224ff-0x0;var _0x200e93=_0xc56b[_0x4224ff];return _0x200e93;};'use strict';var _=require(_0xbc56('0x0'));var util=require(_0xbc56('0x1'));var moment=require(_0xbc56('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbc56('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbc56('0x4'));var logger=require(_0xbc56('0x5'))(_0xbc56('0x6'));var config=require(_0xbc56('0x7'));var jayson=require(_0xbc56('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xbc56('0x9')]=_[_0xbc56('0xa')](config[_0xbc56('0x9')],{'host':_0xbc56('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceQueue.socket')[_0xbc56('0xc')](socket);function respondWithRpcPromise(_0xb56430,_0x2dc4cb,_0xcf3af5){return new BPromise(function(_0x33450a,_0x587776){return client[_0xbc56('0xd')](_0xb56430,_0xcf3af5)[_0xbc56('0xe')](function(_0x3114d5){logger[_0xbc56('0xf')]('VoiceQueue,\x20%s,\x20%s',_0x2dc4cb,_0xbc56('0x10'));logger[_0xbc56('0x11')](_0xbc56('0x12'),_0x2dc4cb,_0xbc56('0x10'),JSON['stringify'](_0x3114d5));if(_0x3114d5[_0xbc56('0x13')]){if(_0x3114d5[_0xbc56('0x13')][_0xbc56('0x14')]===0x1f4){logger['error'](_0xbc56('0x15'),_0x2dc4cb,_0x3114d5[_0xbc56('0x13')][_0xbc56('0x16')]);return _0x587776(_0x3114d5[_0xbc56('0x13')][_0xbc56('0x16')]);}logger[_0xbc56('0x13')](_0xbc56('0x15'),_0x2dc4cb,_0x3114d5['error']['message']);return _0x33450a(_0x3114d5['error']['message']);}else{logger[_0xbc56('0xf')](_0xbc56('0x15'),_0x2dc4cb,_0xbc56('0x10'));_0x33450a(_0x3114d5[_0xbc56('0x17')]['message']);}})['catch'](function(_0x1559f0){logger[_0xbc56('0x13')](_0xbc56('0x15'),_0x2dc4cb,_0x1559f0);_0x587776(_0x1559f0);});});}exports[_0xbc56('0x18')]=function(_0x16fb87){var _0x16413c=this;return new Promise(function(_0x17153f,_0x17fb50){return db[_0xbc56('0x19')][_0xbc56('0x1a')]({'raw':_0x16fb87[_0xbc56('0x1b')]?_0x16fb87[_0xbc56('0x1b')][_0xbc56('0x1c')]===undefined?!![]:![]:!![],'where':_0x16fb87['options']?_0x16fb87[_0xbc56('0x1b')][_0xbc56('0x1d')]||null:null,'attributes':_0x16fb87[_0xbc56('0x1b')]?_0x16fb87['options'][_0xbc56('0x1e')]||null:null,'limit':_0x16fb87[_0xbc56('0x1b')]?_0x16fb87[_0xbc56('0x1b')][_0xbc56('0x1f')]||null:null,'include':_0x16fb87[_0xbc56('0x1b')]?_0x16fb87[_0xbc56('0x1b')]['include']?_[_0xbc56('0x20')](_0x16fb87['options']['include'],function(_0x2bef21){return{'model':db[_0x2bef21['model']],'as':_0x2bef21['as'],'attributes':_0x2bef21[_0xbc56('0x1e')],'include':_0x2bef21[_0xbc56('0x21')]?_['map'](_0x2bef21['include'],function(_0x13fd03){return{'model':db[_0x13fd03[_0xbc56('0x22')]],'as':_0x13fd03['as'],'attributes':_0x13fd03[_0xbc56('0x1e')],'include':_0x13fd03[_0xbc56('0x21')]?_[_0xbc56('0x20')](_0x13fd03[_0xbc56('0x21')],function(_0x1ca9b0){return{'model':db[_0x1ca9b0['model']],'as':_0x1ca9b0['as'],'attributes':_0x1ca9b0[_0xbc56('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbc56('0xe')](function(_0x5c9d4a){logger[_0xbc56('0xf')](_0xbc56('0x18'),_0x16fb87);logger[_0xbc56('0x11')](_0xbc56('0x18'),_0x16fb87,JSON['stringify'](_0x5c9d4a));_0x17153f(_0x5c9d4a);})[_0xbc56('0x23')](function(_0x12b042){logger[_0xbc56('0x13')](_0xbc56('0x18'),_0x12b042[_0xbc56('0x16')],_0x16fb87);_0x17fb50(_0x16413c[_0xbc56('0x13')](0x1f4,_0x12b042['message']));});});};exports[_0xbc56('0x24')]=function(_0x48101a){var _0x5043fc=this;return new Promise(function(_0x4fe8fe,_0x1081b6){return db['VoiceQueue'][_0xbc56('0x25')]({'raw':_0x48101a[_0xbc56('0x1b')]?_0x48101a[_0xbc56('0x1b')][_0xbc56('0x1c')]===undefined?!![]:![]:!![],'where':_0x48101a[_0xbc56('0x1b')]?_0x48101a[_0xbc56('0x1b')][_0xbc56('0x1d')]||null:null,'attributes':_0x48101a['options']?_0x48101a[_0xbc56('0x1b')]['attributes']||null:null,'include':_0x48101a[_0xbc56('0x1b')]?_0x48101a['options'][_0xbc56('0x21')]?_['map'](_0x48101a[_0xbc56('0x1b')]['include'],function(_0x3d3c43){return{'model':db[_0x3d3c43[_0xbc56('0x22')]],'as':_0x3d3c43['as'],'attributes':_0x3d3c43[_0xbc56('0x1e')],'include':_0x3d3c43[_0xbc56('0x21')]?_[_0xbc56('0x20')](_0x3d3c43[_0xbc56('0x21')],function(_0x5a7bad){return{'model':db[_0x5a7bad[_0xbc56('0x22')]],'as':_0x5a7bad['as'],'attributes':_0x5a7bad[_0xbc56('0x1e')],'include':_0x5a7bad[_0xbc56('0x21')]?_[_0xbc56('0x20')](_0x5a7bad['include'],function(_0x47c105){return{'model':db[_0x47c105[_0xbc56('0x22')]],'as':_0x47c105['as'],'attributes':_0x47c105[_0xbc56('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x56e593){logger[_0xbc56('0xf')](_0xbc56('0x24'),_0x48101a);logger[_0xbc56('0x11')](_0xbc56('0x24'),_0x48101a,JSON[_0xbc56('0x26')](_0x56e593));_0x4fe8fe(_0x56e593);})[_0xbc56('0x23')](function(_0x3666c8){logger['error'](_0xbc56('0x24'),_0x3666c8[_0xbc56('0x16')],_0x48101a);_0x1081b6(_0x5043fc[_0xbc56('0x13')](0x1f4,_0x3666c8['message']));});});};
\ No newline at end of file
index c15b788..5ce2e48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee89=['removeListener','register','length','./voiceQueue.events','remove','update','emit'];(function(_0x5ca7b8,_0x1d8f03){var _0x58e84e=function(_0x2f0ffa){while(--_0x2f0ffa){_0x5ca7b8['push'](_0x5ca7b8['shift']());}};_0x58e84e(++_0x1d8f03);}(_0xee89,0x1ae));var _0x9ee8=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0xee89[_0x55e08b];return _0xd1a7ff;};'use strict';var VoiceQueueEvents=require(_0x9ee8('0x0'));var events=['save',_0x9ee8('0x1'),_0x9ee8('0x2')];function createListener(_0x26161c,_0x55ba7f){return function(_0x3fd3a0){_0x55ba7f[_0x9ee8('0x3')](_0x26161c,_0x3fd3a0);};}function removeListener(_0x6d7580,_0x29873d){return function(){VoiceQueueEvents[_0x9ee8('0x4')](_0x6d7580,_0x29873d);};}exports[_0x9ee8('0x5')]=function(_0x45eb37){for(var _0x33d92a=0x0,_0x1f5123=events[_0x9ee8('0x6')];_0x33d92a<_0x1f5123;_0x33d92a++){var _0x159585=events[_0x33d92a];var _0x48b750=createListener('voiceQueue:'+_0x159585,_0x45eb37);VoiceQueueEvents['on'](_0x159585,_0x48b750);}};
\ No newline at end of file
+var _0x477f=['remove','emit','removeListener','register','length','./voiceQueue.events'];(function(_0x12b683,_0x124186){var _0xfb150b=function(_0x565ce7){while(--_0x565ce7){_0x12b683['push'](_0x12b683['shift']());}};_0xfb150b(++_0x124186);}(_0x477f,0xfb));var _0xf477=function(_0x5b98ad,_0x1f872d){_0x5b98ad=_0x5b98ad-0x0;var _0x56047e=_0x477f[_0x5b98ad];return _0x56047e;};'use strict';var VoiceQueueEvents=require(_0xf477('0x0'));var events=['save',_0xf477('0x1'),'update'];function createListener(_0x596d22,_0x5bb49b){return function(_0x275df7){_0x5bb49b[_0xf477('0x2')](_0x596d22,_0x275df7);};}function removeListener(_0x2fa5b0,_0x41b5db){return function(){VoiceQueueEvents[_0xf477('0x3')](_0x2fa5b0,_0x41b5db);};}exports[_0xf477('0x4')]=function(_0x3b1466){for(var _0x3b1800=0x0,_0x19191c=events[_0xf477('0x5')];_0x3b1800<_0x19191c;_0x3b1800++){var _0x2c4021=events[_0x3b1800];var _0x1bb08c=createListener('voiceQueue:'+_0x2c4021,_0x3b1466);VoiceQueueEvents['on'](_0x2c4021,_0x1bb08c);}};
\ No newline at end of file
index 5102a59..638d025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','index','/describe','isAuthenticated','describe','getVoiceQueuesReport','show'];(function(_0x5b242c,_0x537f5a){var _0x17a21e=function(_0x3d2eca){while(--_0x3d2eca){_0x5b242c['push'](_0x5b242c['shift']());}};_0x17a21e(++_0x537f5a);}(_0x2032,0x157));var _0x2203=function(_0x3bd113,_0x564466){_0x3bd113=_0x3bd113-0x0;var _0x28e487=_0x2032[_0x3bd113];return _0x28e487;};'use strict';var multer=require(_0x2203('0x0'));var util=require(_0x2203('0x1'));var path=require(_0x2203('0x2'));var timeout=require(_0x2203('0x3'));var express=require(_0x2203('0x4'));var router=express['Router']();var fs_extra=require(_0x2203('0x5'));var auth=require(_0x2203('0x6'));var interaction=require(_0x2203('0x7'));var config=require(_0x2203('0x8'));var controller=require(_0x2203('0x9'));router[_0x2203('0xa')]('/',auth['isAuthenticated'](),controller[_0x2203('0xb')]);router['get'](_0x2203('0xc'),auth[_0x2203('0xd')](),controller[_0x2203('0xe')]);router[_0x2203('0xa')]('/index',auth[_0x2203('0xd')](),controller[_0x2203('0xf')]);router[_0x2203('0xa')]('/:id',auth[_0x2203('0xd')](),controller[_0x2203('0x10')]);router[_0x2203('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0x12')](_0x2203('0x13'),auth[_0x2203('0xd')](),controller[_0x2203('0x14')]);router[_0x2203('0x15')](_0x2203('0x13'),auth[_0x2203('0xd')](),controller[_0x2203('0x16')]);module[_0x2203('0x17')]=router;
\ No newline at end of file
+var _0x8738=['/index','getVoiceQueuesReport','/:id','show','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0xa40219,_0x21027e){var _0x391974=function(_0x14e4de){while(--_0x14e4de){_0xa40219['push'](_0xa40219['shift']());}};_0x391974(++_0x21027e);}(_0x8738,0xee));var _0x8873=function(_0x54af0d,_0x3e5db0){_0x54af0d=_0x54af0d-0x0;var _0x57b08d=_0x8738[_0x54af0d];return _0x57b08d;};'use strict';var multer=require(_0x8873('0x0'));var util=require(_0x8873('0x1'));var path=require(_0x8873('0x2'));var timeout=require(_0x8873('0x3'));var express=require(_0x8873('0x4'));var router=express[_0x8873('0x5')]();var fs_extra=require(_0x8873('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x8873('0x7'));var config=require(_0x8873('0x8'));var controller=require(_0x8873('0x9'));router[_0x8873('0xa')]('/',auth[_0x8873('0xb')](),controller[_0x8873('0xc')]);router['get'](_0x8873('0xd'),auth[_0x8873('0xb')](),controller[_0x8873('0xe')]);router[_0x8873('0xa')](_0x8873('0xf'),auth[_0x8873('0xb')](),controller[_0x8873('0x10')]);router['get'](_0x8873('0x11'),auth[_0x8873('0xb')](),controller[_0x8873('0x12')]);router['post']('/',auth[_0x8873('0xb')](),controller[_0x8873('0x13')]);router[_0x8873('0x14')]('/:id',auth[_0x8873('0xb')](),controller['update']);router['delete'](_0x8873('0x11'),auth[_0x8873('0xb')](),controller[_0x8873('0x15')]);module[_0x8873('0x16')]=router;
\ No newline at end of file
index 16caaa1..d06decc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ba2=['COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','STRING','getDataValue','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','INTEGER','BOOLEAN','DATE'];(function(_0x5414c9,_0x1ce7b4){var _0x2ab8f2=function(_0x117bef){while(--_0x117bef){_0x5414c9['push'](_0x5414c9['shift']());}};_0x2ab8f2(++_0x1ce7b4);}(_0x4ba2,0x1a2));var _0x24ba=function(_0xc51cc4,_0xe7cd55){_0xc51cc4=_0xc51cc4-0x0;var _0x4ca42d=_0x4ba2[_0xc51cc4];return _0x4ca42d;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module['exports']={'type':{'type':Sequelize[_0x24ba('0x0')]},'uniqueid':{'type':Sequelize[_0x24ba('0x0')]},'calleridnum':{'type':Sequelize[_0x24ba('0x0')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x24ba('0x0')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x344bd7){var _0x39ff3a=moment(_0x344bd7);var _0x5d0293=moment(this[_0x24ba('0x1')](_0x24ba('0x2')))['format'](_0x24ba('0x3'));var _0x5b1fb7=_0x39ff3a[_0x24ba('0x4')](_0x5d0293,_0x24ba('0x5'));this[_0x24ba('0x6')](_0x24ba('0x7'),_0x344bd7);this[_0x24ba('0x6')]('holdtime',_0x5b1fb7||null);}},'position':{'type':Sequelize[_0x24ba('0x8')]},'count':{'type':Sequelize[_0x24ba('0x8')]},'queuecallerabandon':{'type':Sequelize[_0x24ba('0x9')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x24ba('0x9')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x24ba('0xa')]},'queuecallerexit':{'type':Sequelize[_0x24ba('0x9')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x24ba('0xa')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x24ba('0xb')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x24ba('0x0')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x24ba('0x0')]},'exten':{'type':Sequelize[_0x24ba('0x0')]},'priority':{'type':Sequelize[_0x24ba('0x0')]},'holdtime':{'type':Sequelize[_0x24ba('0x8')]},'mohtime':{'type':Sequelize[_0x24ba('0x8')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x24ba('0x9')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x24ba('0x0')]},'transfer':{'type':Sequelize[_0x24ba('0x9')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x24ba('0xc')},'transferexten':{'type':Sequelize[_0x24ba('0x0')]},'transferuniqueid':{'type':Sequelize[_0x24ba('0x0')]},'disposition':{'type':Sequelize[_0x24ba('0x0')]},'secondDisposition':{'type':Sequelize[_0x24ba('0x0')]},'thirdDisposition':{'type':Sequelize[_0x24ba('0x0')]},'queuecallerenterreason':{'type':Sequelize[_0x24ba('0x8')],'defaultValue':0x0},'note':{'type':Sequelize[_0x24ba('0x0')]}};
\ No newline at end of file
+var _0xaa62=['format','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','queuecallerleaveAt','INTEGER','BOOLEAN','sequelize','moment','exports','STRING','DATE','getDataValue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xaa62,0xf1));var _0x2aa6=function(_0x496a35,_0x2670f1){_0x496a35=_0x496a35-0x0;var _0x5e22a1=_0xaa62[_0x496a35];return _0x5e22a1;};'use strict';var Sequelize=require(_0x2aa6('0x0'));var moment=require(_0x2aa6('0x1'));module[_0x2aa6('0x2')]={'type':{'type':Sequelize[_0x2aa6('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x2aa6('0x3')]},'calleridname':{'type':Sequelize[_0x2aa6('0x3')]},'queue':{'type':Sequelize[_0x2aa6('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x2aa6('0x4')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x1525a2){var _0x512330=moment(_0x1525a2);var _0x1383df=moment(this[_0x2aa6('0x5')]('queuecallerjoinAt'))[_0x2aa6('0x6')](_0x2aa6('0x7'));var _0x13f503=_0x512330['diff'](_0x1383df,_0x2aa6('0x8'));this[_0x2aa6('0x9')](_0x2aa6('0xa'),_0x1525a2);this[_0x2aa6('0x9')]('holdtime',_0x13f503||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x2aa6('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x2aa6('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x2aa6('0x4')]},'queuecallerexit':{'type':Sequelize[_0x2aa6('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x2aa6('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x2aa6('0xb')]},'channel':{'type':Sequelize[_0x2aa6('0x3')]},'connectedlinenum':{'type':Sequelize[_0x2aa6('0x3')]},'connectedlinename':{'type':Sequelize[_0x2aa6('0x3')]},'accountcode':{'type':Sequelize[_0x2aa6('0x3')]},'context':{'type':Sequelize[_0x2aa6('0x3')]},'exten':{'type':Sequelize[_0x2aa6('0x3')]},'priority':{'type':Sequelize[_0x2aa6('0x3')]},'holdtime':{'type':Sequelize[_0x2aa6('0xb')]},'mohtime':{'type':Sequelize[_0x2aa6('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x2aa6('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x2aa6('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2aa6('0x3')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x2aa6('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x2aa6('0x3')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'note':{'type':Sequelize[_0x2aa6('0x3')]}};
\ No newline at end of file
index 3364dfb..7c237a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e79=['filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','include','findAll','catch','show','params','rawAttributes','length','find','create','body','describe','getVoiceQueuesReport','rows','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./voiceQueueReport.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','name','map','VoiceQueueReport','key','model','query','keys'];(function(_0xa58574,_0x1d6e5e){var _0x19e14f=function(_0x4395a9){while(--_0x4395a9){_0xa58574['push'](_0xa58574['shift']());}};_0x19e14f(++_0x1d6e5e);}(_0x6e79,0x67));var _0x96e7=function(_0x1830f0,_0xa135f3){_0x1830f0=_0x1830f0-0x0;var _0x3571c8=_0x6e79[_0x1830f0];return _0x3571c8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x96e7('0x0'));var zipdir=require(_0x96e7('0x1'));var jsonpatch=require(_0x96e7('0x2'));var rp=require(_0x96e7('0x3'));var moment=require(_0x96e7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x96e7('0x5'));var util=require(_0x96e7('0x6'));var path=require(_0x96e7('0x7'));var sox=require('sox');var csv=require(_0x96e7('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x96e7('0x9'));var _=require('lodash');var squel=require(_0x96e7('0xa'));var crypto=require(_0x96e7('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x96e7('0xc'));var toCsv=require(_0x96e7('0x8'));var querystring=require(_0x96e7('0xd'));var Papa=require(_0x96e7('0xe'));var Redis=require(_0x96e7('0xf'));var authService=require(_0x96e7('0x10'));var qs=require(_0x96e7('0x11'));var as=require(_0x96e7('0x12'));var hardwareService=require(_0x96e7('0x13'));var logger=require('../../config/logger')(_0x96e7('0x14'));var utils=require(_0x96e7('0x15'));var config=require(_0x96e7('0x16'));var licenseUtil=require(_0x96e7('0x17'));var db=require(_0x96e7('0x18'))['db'];config[_0x96e7('0x19')]=_[_0x96e7('0x1a')](config[_0x96e7('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x96e7('0x19')]));require(_0x96e7('0x1b'))[_0x96e7('0x1c')](socket);function respondWithStatusCode(_0x2e9bc9,_0x3a8d67){_0x3a8d67=_0x3a8d67||0xcc;return function(_0x85fd3b){if(_0x85fd3b){return _0x2e9bc9[_0x96e7('0x1d')](_0x3a8d67);}return _0x2e9bc9['status'](_0x3a8d67)[_0x96e7('0x1e')]();};}function respondWithResult(_0x4e1b34,_0x115f32){_0x115f32=_0x115f32||0xc8;return function(_0x2d11db){if(_0x2d11db){return _0x4e1b34[_0x96e7('0x1f')](_0x115f32)[_0x96e7('0x20')](_0x2d11db);}};}function respondWithFilteredResult(_0x28224f,_0x2ceb05){return function(_0x48ae5c){if(_0x48ae5c){var _0x13c89e=typeof _0x2ceb05[_0x96e7('0x21')]===_0x96e7('0x22')&&typeof _0x2ceb05[_0x96e7('0x23')]===_0x96e7('0x22');var _0x109961=_0x48ae5c[_0x96e7('0x24')];var _0x4d0257=_0x13c89e?0x0:_0x2ceb05[_0x96e7('0x21')];var _0xdcd43b=_0x13c89e?_0x48ae5c['count']:_0x2ceb05[_0x96e7('0x21')]+_0x2ceb05[_0x96e7('0x23')];var _0x472f6c;if(_0xdcd43b>=_0x109961){_0xdcd43b=_0x109961;_0x472f6c=0xc8;}else{_0x472f6c=0xce;}_0x28224f['status'](_0x472f6c);return _0x28224f['set'](_0x96e7('0x25'),_0x4d0257+'-'+_0xdcd43b+'/'+_0x109961)[_0x96e7('0x20')](_0x48ae5c);}return null;};}function patchUpdates(_0x3ecf34){return function(_0x322bb1){try{jsonpatch[_0x96e7('0x26')](_0x322bb1,_0x3ecf34,!![]);}catch(_0x310016){return BPromise[_0x96e7('0x27')](_0x310016);}return _0x322bb1['save']();};}function saveUpdates(_0x31798e,_0x2a2387){return function(_0x4a48bf){if(_0x4a48bf){return _0x4a48bf[_0x96e7('0x28')](_0x31798e)[_0x96e7('0x29')](function(_0x1bf012){return _0x1bf012;});}return null;};}function removeEntity(_0x4d26b1,_0x3c3f91){return function(_0x436583){if(_0x436583){return _0x436583[_0x96e7('0x2a')]()[_0x96e7('0x29')](function(){_0x4d26b1[_0x96e7('0x1f')](0xcc)[_0x96e7('0x1e')]();});}};}function handleEntityNotFound(_0xc6d38c,_0x4ba987){return function(_0x449d08){if(!_0x449d08){_0xc6d38c['sendStatus'](0x194);}return _0x449d08;};}function handleError(_0x56740b,_0x499a34){_0x499a34=_0x499a34||0x1f4;return function(_0x141ebe){logger[_0x96e7('0x2b')](_0x141ebe['stack']);if(_0x141ebe[_0x96e7('0x2c')]){delete _0x141ebe[_0x96e7('0x2c')];}_0x56740b[_0x96e7('0x1f')](_0x499a34)['send'](_0x141ebe);};}exports['index']=function(_0x316ed6,_0x1d8fee){var _0x2dfae7={},_0x5cc661={},_0x308701={'count':0x0,'rows':[]};var _0x509b41=_[_0x96e7('0x2d')](db[_0x96e7('0x2e')]['rawAttributes'],function(_0x39a74e){return{'name':_0x39a74e['fieldName'],'type':_0x39a74e['type'][_0x96e7('0x2f')]};});_0x5cc661[_0x96e7('0x30')]=_['map'](_0x509b41,_0x96e7('0x2c'));_0x5cc661[_0x96e7('0x31')]=_[_0x96e7('0x32')](_0x316ed6['query']);_0x5cc661[_0x96e7('0x33')]=_[_0x96e7('0x34')](_0x5cc661['model'],_0x5cc661[_0x96e7('0x31')]);_0x2dfae7['attributes']=_[_0x96e7('0x34')](_0x5cc661[_0x96e7('0x30')],qs['fields'](_0x316ed6[_0x96e7('0x31')][_0x96e7('0x35')]));_0x2dfae7[_0x96e7('0x36')]=_0x2dfae7['attributes']['length']?_0x2dfae7[_0x96e7('0x36')]:_0x5cc661[_0x96e7('0x30')];if(!_0x316ed6['query'][_0x96e7('0x37')](_0x96e7('0x38'))){_0x2dfae7[_0x96e7('0x23')]=qs[_0x96e7('0x23')](_0x316ed6[_0x96e7('0x31')]['limit']);_0x2dfae7[_0x96e7('0x21')]=qs[_0x96e7('0x21')](_0x316ed6['query'][_0x96e7('0x21')]);}_0x2dfae7['order']=qs[_0x96e7('0x39')](_0x316ed6[_0x96e7('0x31')][_0x96e7('0x39')]);_0x2dfae7[_0x96e7('0x3a')]=qs['filters'](_['pick'](_0x316ed6['query'],_0x5cc661[_0x96e7('0x33')]),_0x509b41);if(_0x316ed6[_0x96e7('0x31')][_0x96e7('0x3b')]){_0x2dfae7['where']=_[_0x96e7('0x3c')](_0x2dfae7['where'],{'$or':_[_0x96e7('0x2d')](_0x509b41,function(_0x1d8b6b){if(_0x1d8b6b[_0x96e7('0x3d')]!==_0x96e7('0x3e')){var _0x34c83d={};_0x34c83d[_0x1d8b6b[_0x96e7('0x2c')]]={'$like':'%'+_0x316ed6[_0x96e7('0x31')]['filter']+'%'};return _0x34c83d;}})});}_0x2dfae7=_[_0x96e7('0x3c')]({},_0x2dfae7,_0x316ed6[_0x96e7('0x3f')]);var _0x5c39df={'where':_0x2dfae7[_0x96e7('0x3a')]};return db[_0x96e7('0x2e')][_0x96e7('0x24')](_0x5c39df)['then'](function(_0x127188){_0x308701[_0x96e7('0x24')]=_0x127188;if(_0x316ed6[_0x96e7('0x31')]['includeAll']){_0x2dfae7[_0x96e7('0x40')]=[{'all':!![]}];}return db[_0x96e7('0x2e')][_0x96e7('0x41')](_0x2dfae7);})[_0x96e7('0x29')](function(_0x1f4db1){_0x308701['rows']=_0x1f4db1;return _0x308701;})[_0x96e7('0x29')](respondWithFilteredResult(_0x1d8fee,_0x2dfae7))[_0x96e7('0x42')](handleError(_0x1d8fee,null));};exports[_0x96e7('0x43')]=function(_0x7e6ad5,_0x2c05b2){var _0x281cde={'raw':![],'where':{'id':_0x7e6ad5[_0x96e7('0x44')]['id']}},_0xbd92c5={};_0xbd92c5[_0x96e7('0x30')]=_['keys'](db[_0x96e7('0x2e')][_0x96e7('0x45')]);_0xbd92c5[_0x96e7('0x31')]=_[_0x96e7('0x32')](_0x7e6ad5['query']);_0xbd92c5['filters']=_[_0x96e7('0x34')](_0xbd92c5[_0x96e7('0x30')],_0xbd92c5[_0x96e7('0x31')]);_0x281cde[_0x96e7('0x36')]=_[_0x96e7('0x34')](_0xbd92c5[_0x96e7('0x30')],qs['fields'](_0x7e6ad5[_0x96e7('0x31')][_0x96e7('0x35')]));_0x281cde['attributes']=_0x281cde[_0x96e7('0x36')][_0x96e7('0x46')]?_0x281cde[_0x96e7('0x36')]:_0xbd92c5[_0x96e7('0x30')];if(_0x7e6ad5[_0x96e7('0x31')]['includeAll']){_0x281cde[_0x96e7('0x40')]=[{'all':!![]}];}_0x281cde=_['merge']({},_0x281cde,_0x7e6ad5['options']);return db['VoiceQueueReport'][_0x96e7('0x47')](_0x281cde)['then'](handleEntityNotFound(_0x2c05b2,null))[_0x96e7('0x29')](respondWithResult(_0x2c05b2,null))[_0x96e7('0x42')](handleError(_0x2c05b2,null));};exports[_0x96e7('0x48')]=function(_0xaf5f11,_0x471668){return db[_0x96e7('0x2e')]['create'](_0xaf5f11[_0x96e7('0x49')],{})[_0x96e7('0x29')](respondWithResult(_0x471668,0xc9))['catch'](handleError(_0x471668,null));};exports['update']=function(_0x2d556a,_0x50d517){if(_0x2d556a[_0x96e7('0x49')]['id']){delete _0x2d556a[_0x96e7('0x49')]['id'];}return db[_0x96e7('0x2e')][_0x96e7('0x47')]({'where':{'id':_0x2d556a['params']['id']}})[_0x96e7('0x29')](handleEntityNotFound(_0x50d517,null))[_0x96e7('0x29')](saveUpdates(_0x2d556a['body'],null))[_0x96e7('0x29')](respondWithResult(_0x50d517,null))['catch'](handleError(_0x50d517,null));};exports[_0x96e7('0x2a')]=function(_0x55f591,_0x2634f5){return db['VoiceQueueReport'][_0x96e7('0x47')]({'where':{'id':_0x55f591['params']['id']}})['then'](handleEntityNotFound(_0x2634f5,null))['then'](removeEntity(_0x2634f5,null))['catch'](handleError(_0x2634f5,null));};exports[_0x96e7('0x4a')]=function(_0x3390d3,_0x22690d){return db[_0x96e7('0x2e')][_0x96e7('0x4a')]()[_0x96e7('0x29')](respondWithResult(_0x22690d,null))['catch'](handleError(_0x22690d,null));};exports[_0x96e7('0x4b')]=function(_0x16a13d,_0x226a31){var _0xa636aa={},_0x171548={},_0x201b28={'count':0x0,'rows':[]};_0x171548[_0x96e7('0x30')]=_[_0x96e7('0x32')](db[_0x96e7('0x2e')]['rawAttributes']);_0x171548[_0x96e7('0x31')]=_['keys'](_0x16a13d['query']);_0x171548['filters']=_[_0x96e7('0x34')](_0x171548[_0x96e7('0x30')],_0x171548['query']);_0xa636aa[_0x96e7('0x36')]=_['intersection'](_0x171548[_0x96e7('0x30')],qs[_0x96e7('0x35')](_0x16a13d['query'][_0x96e7('0x35')]));_0xa636aa[_0x96e7('0x36')]=_0xa636aa[_0x96e7('0x36')][_0x96e7('0x46')]?_0xa636aa[_0x96e7('0x36')]:_0x171548['model'];if(!_0x16a13d['query'][_0x96e7('0x37')](_0x96e7('0x38'))){_0xa636aa['limit']=qs['limit'](_0x16a13d[_0x96e7('0x31')][_0x96e7('0x23')]);_0xa636aa['offset']=qs[_0x96e7('0x21')](_0x16a13d[_0x96e7('0x31')][_0x96e7('0x21')]);}_0xa636aa['order']=qs[_0x96e7('0x39')](_0x16a13d[_0x96e7('0x31')][_0x96e7('0x39')]);_0xa636aa['where']=qs[_0x96e7('0x33')](_['pick'](_0x16a13d['query'],_0x171548[_0x96e7('0x33')]));if(_0x16a13d['query'][_0x96e7('0x3b')]){_0xa636aa['where']=_['merge'](_0xa636aa[_0x96e7('0x3a')],{'$or':_[_0x96e7('0x2d')](_0xa636aa[_0x96e7('0x36')],function(_0x1194cd){var _0x52477e={};_0x52477e[_0x1194cd]={'$like':'%'+_0x16a13d[_0x96e7('0x31')][_0x96e7('0x3b')]+'%'};return _0x52477e;})});}_0xa636aa=_['merge']({},_0xa636aa,_0x16a13d[_0x96e7('0x3f')]);var _0x3e7892={'where':_0xa636aa['where']};return db[_0x96e7('0x2e')][_0x96e7('0x24')](_0x3e7892)['then'](function(_0x4f9847){_0x201b28[_0x96e7('0x24')]=_0x4f9847;if(_0x16a13d[_0x96e7('0x31')]['includeAll']){_0xa636aa[_0x96e7('0x40')]=[{'all':!![]}];}return db[_0x96e7('0x2e')][_0x96e7('0x41')](_0xa636aa);})['then'](function(_0x1ad123){_0x201b28[_0x96e7('0x4c')]=_0x1ad123;return _0x201b28;})[_0x96e7('0x29')](respondWithFilteredResult(_0x226a31,_0xa636aa,'getVoiceQueuesReport'))['catch'](handleError(_0x226a31,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x8656=['describe','hasOwnProperty','findAll','getVoiceQueuesReport','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','show','find','catch','create','body','params'];(function(_0x51b0d9,_0x315257){var _0x322602=function(_0x11ed1c){while(--_0x11ed1c){_0x51b0d9['push'](_0x51b0d9['shift']());}};_0x322602(++_0x315257);}(_0x8656,0x1a8));var _0x6865=function(_0x174ab8,_0x47ea5f){_0x174ab8=_0x174ab8-0x0;var _0x2aab09=_0x8656[_0x174ab8];return _0x2aab09;};'use strict';var emlformat=require(_0x6865('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6865('0x1'));var jsonpatch=require(_0x6865('0x2'));var rp=require('request-promise');var moment=require(_0x6865('0x3'));var BPromise=require(_0x6865('0x4'));var Mustache=require(_0x6865('0x5'));var util=require(_0x6865('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6865('0x7'));var ejs=require(_0x6865('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6865('0x9'));var crypto=require('crypto');var jsforce=require(_0x6865('0xa'));var deskjs=require(_0x6865('0xb'));var toCsv=require('to-csv');var querystring=require(_0x6865('0xc'));var Papa=require('papaparse');var Redis=require(_0x6865('0xd'));var authService=require(_0x6865('0xe'));var qs=require(_0x6865('0xf'));var as=require(_0x6865('0x10'));var hardwareService=require(_0x6865('0x11'));var logger=require('../../config/logger')(_0x6865('0x12'));var utils=require(_0x6865('0x13'));var config=require(_0x6865('0x14'));var licenseUtil=require(_0x6865('0x15'));var db=require(_0x6865('0x16'))['db'];config[_0x6865('0x17')]=_[_0x6865('0x18')](config[_0x6865('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x6865('0x19'))(new Redis(config[_0x6865('0x17')]));require(_0x6865('0x1a'))[_0x6865('0x1b')](socket);function respondWithStatusCode(_0x3a4822,_0x1a895c){_0x1a895c=_0x1a895c||0xcc;return function(_0x107338){if(_0x107338){return _0x3a4822['sendStatus'](_0x1a895c);}return _0x3a4822[_0x6865('0x1c')](_0x1a895c)['end']();};}function respondWithResult(_0x38d9b8,_0x1a0f12){_0x1a0f12=_0x1a0f12||0xc8;return function(_0x5e434a){if(_0x5e434a){return _0x38d9b8[_0x6865('0x1c')](_0x1a0f12)[_0x6865('0x1d')](_0x5e434a);}};}function respondWithFilteredResult(_0x152f84,_0x160e2c){return function(_0x2c6dcb){if(_0x2c6dcb){var _0x3e951b=typeof _0x160e2c[_0x6865('0x1e')]===_0x6865('0x1f')&&typeof _0x160e2c['limit']===_0x6865('0x1f');var _0x31c551=_0x2c6dcb['count'];var _0x568ac1=_0x3e951b?0x0:_0x160e2c[_0x6865('0x1e')];var _0x4e25ce=_0x3e951b?_0x2c6dcb[_0x6865('0x20')]:_0x160e2c[_0x6865('0x1e')]+_0x160e2c[_0x6865('0x21')];var _0x41b197;if(_0x4e25ce>=_0x31c551){_0x4e25ce=_0x31c551;_0x41b197=0xc8;}else{_0x41b197=0xce;}_0x152f84[_0x6865('0x1c')](_0x41b197);return _0x152f84[_0x6865('0x22')](_0x6865('0x23'),_0x568ac1+'-'+_0x4e25ce+'/'+_0x31c551)[_0x6865('0x1d')](_0x2c6dcb);}return null;};}function patchUpdates(_0x3dae73){return function(_0x4be030){try{jsonpatch[_0x6865('0x24')](_0x4be030,_0x3dae73,!![]);}catch(_0x4294fd){return BPromise[_0x6865('0x25')](_0x4294fd);}return _0x4be030['save']();};}function saveUpdates(_0xffd402,_0x4f3f59){return function(_0x1d6d6d){if(_0x1d6d6d){return _0x1d6d6d[_0x6865('0x26')](_0xffd402)[_0x6865('0x27')](function(_0x150571){return _0x150571;});}return null;};}function removeEntity(_0x499098,_0x14bf55){return function(_0x421817){if(_0x421817){return _0x421817[_0x6865('0x28')]()[_0x6865('0x27')](function(){_0x499098[_0x6865('0x1c')](0xcc)[_0x6865('0x29')]();});}};}function handleEntityNotFound(_0x580cc1,_0x4bcb8b){return function(_0x4fb407){if(!_0x4fb407){_0x580cc1[_0x6865('0x2a')](0x194);}return _0x4fb407;};}function handleError(_0x97b7c6,_0x30f5a4){_0x30f5a4=_0x30f5a4||0x1f4;return function(_0x3568ca){logger[_0x6865('0x2b')](_0x3568ca[_0x6865('0x2c')]);if(_0x3568ca[_0x6865('0x2d')]){delete _0x3568ca['name'];}_0x97b7c6[_0x6865('0x1c')](_0x30f5a4)[_0x6865('0x2e')](_0x3568ca);};}exports[_0x6865('0x2f')]=function(_0x52e813,_0x2e9afc){var _0x5a7e41={},_0x4d80dd={},_0x3fda31={'count':0x0,'rows':[]};var _0xf57bb=_[_0x6865('0x30')](db[_0x6865('0x31')][_0x6865('0x32')],function(_0x4ca832){return{'name':_0x4ca832[_0x6865('0x33')],'type':_0x4ca832['type'][_0x6865('0x34')]};});_0x4d80dd[_0x6865('0x35')]=_[_0x6865('0x30')](_0xf57bb,'name');_0x4d80dd[_0x6865('0x36')]=_[_0x6865('0x37')](_0x52e813[_0x6865('0x36')]);_0x4d80dd[_0x6865('0x38')]=_[_0x6865('0x39')](_0x4d80dd[_0x6865('0x35')],_0x4d80dd[_0x6865('0x36')]);_0x5a7e41[_0x6865('0x3a')]=_[_0x6865('0x39')](_0x4d80dd['model'],qs[_0x6865('0x3b')](_0x52e813[_0x6865('0x36')][_0x6865('0x3b')]));_0x5a7e41[_0x6865('0x3a')]=_0x5a7e41[_0x6865('0x3a')][_0x6865('0x3c')]?_0x5a7e41[_0x6865('0x3a')]:_0x4d80dd['model'];if(!_0x52e813['query']['hasOwnProperty'](_0x6865('0x3d'))){_0x5a7e41[_0x6865('0x21')]=qs[_0x6865('0x21')](_0x52e813[_0x6865('0x36')][_0x6865('0x21')]);_0x5a7e41['offset']=qs[_0x6865('0x1e')](_0x52e813[_0x6865('0x36')][_0x6865('0x1e')]);}_0x5a7e41[_0x6865('0x3e')]=qs[_0x6865('0x3f')](_0x52e813[_0x6865('0x36')][_0x6865('0x3f')]);_0x5a7e41[_0x6865('0x40')]=qs[_0x6865('0x38')](_[_0x6865('0x41')](_0x52e813[_0x6865('0x36')],_0x4d80dd[_0x6865('0x38')]),_0xf57bb);if(_0x52e813[_0x6865('0x36')][_0x6865('0x42')]){_0x5a7e41[_0x6865('0x40')]=_[_0x6865('0x43')](_0x5a7e41[_0x6865('0x40')],{'$or':_[_0x6865('0x30')](_0xf57bb,function(_0x4e6069){if(_0x4e6069[_0x6865('0x44')]!==_0x6865('0x45')){var _0x30eb6a={};_0x30eb6a[_0x4e6069[_0x6865('0x2d')]]={'$like':'%'+_0x52e813[_0x6865('0x36')][_0x6865('0x42')]+'%'};return _0x30eb6a;}})});}_0x5a7e41=_[_0x6865('0x43')]({},_0x5a7e41,_0x52e813[_0x6865('0x46')]);var _0x5e3086={'where':_0x5a7e41[_0x6865('0x40')]};return db[_0x6865('0x31')][_0x6865('0x20')](_0x5e3086)[_0x6865('0x27')](function(_0x22e684){_0x3fda31[_0x6865('0x20')]=_0x22e684;if(_0x52e813['query'][_0x6865('0x47')]){_0x5a7e41[_0x6865('0x48')]=[{'all':!![]}];}return db[_0x6865('0x31')]['findAll'](_0x5a7e41);})[_0x6865('0x27')](function(_0x3818d6){_0x3fda31[_0x6865('0x49')]=_0x3818d6;return _0x3fda31;})[_0x6865('0x27')](respondWithFilteredResult(_0x2e9afc,_0x5a7e41))['catch'](handleError(_0x2e9afc,null));};exports[_0x6865('0x4a')]=function(_0x569f68,_0x2bb4f8){var _0x1c3044={'raw':![],'where':{'id':_0x569f68['params']['id']}},_0x3a6eb7={};_0x3a6eb7[_0x6865('0x35')]=_[_0x6865('0x37')](db[_0x6865('0x31')][_0x6865('0x32')]);_0x3a6eb7['query']=_[_0x6865('0x37')](_0x569f68[_0x6865('0x36')]);_0x3a6eb7[_0x6865('0x38')]=_[_0x6865('0x39')](_0x3a6eb7['model'],_0x3a6eb7[_0x6865('0x36')]);_0x1c3044['attributes']=_['intersection'](_0x3a6eb7[_0x6865('0x35')],qs[_0x6865('0x3b')](_0x569f68[_0x6865('0x36')][_0x6865('0x3b')]));_0x1c3044['attributes']=_0x1c3044['attributes'][_0x6865('0x3c')]?_0x1c3044['attributes']:_0x3a6eb7[_0x6865('0x35')];if(_0x569f68['query'][_0x6865('0x47')]){_0x1c3044['include']=[{'all':!![]}];}_0x1c3044=_[_0x6865('0x43')]({},_0x1c3044,_0x569f68[_0x6865('0x46')]);return db[_0x6865('0x31')][_0x6865('0x4b')](_0x1c3044)[_0x6865('0x27')](handleEntityNotFound(_0x2bb4f8,null))[_0x6865('0x27')](respondWithResult(_0x2bb4f8,null))[_0x6865('0x4c')](handleError(_0x2bb4f8,null));};exports[_0x6865('0x4d')]=function(_0xbb76f4,_0x5bfa01){return db[_0x6865('0x31')][_0x6865('0x4d')](_0xbb76f4[_0x6865('0x4e')],{})[_0x6865('0x27')](respondWithResult(_0x5bfa01,0xc9))[_0x6865('0x4c')](handleError(_0x5bfa01,null));};exports['update']=function(_0x2d8d8b,_0x5dc007){if(_0x2d8d8b[_0x6865('0x4e')]['id']){delete _0x2d8d8b[_0x6865('0x4e')]['id'];}return db[_0x6865('0x31')][_0x6865('0x4b')]({'where':{'id':_0x2d8d8b[_0x6865('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5dc007,null))[_0x6865('0x27')](saveUpdates(_0x2d8d8b[_0x6865('0x4e')],null))[_0x6865('0x27')](respondWithResult(_0x5dc007,null))[_0x6865('0x4c')](handleError(_0x5dc007,null));};exports[_0x6865('0x28')]=function(_0x2b4714,_0x31264d){return db[_0x6865('0x31')][_0x6865('0x4b')]({'where':{'id':_0x2b4714[_0x6865('0x4f')]['id']}})[_0x6865('0x27')](handleEntityNotFound(_0x31264d,null))[_0x6865('0x27')](removeEntity(_0x31264d,null))[_0x6865('0x4c')](handleError(_0x31264d,null));};exports['describe']=function(_0xe393f8,_0x41a423){return db[_0x6865('0x31')][_0x6865('0x50')]()['then'](respondWithResult(_0x41a423,null))[_0x6865('0x4c')](handleError(_0x41a423,null));};exports['getVoiceQueuesReport']=function(_0x538b3d,_0x401d5d){var _0x36cb70={},_0x3cb604={},_0x2464f3={'count':0x0,'rows':[]};_0x3cb604[_0x6865('0x35')]=_[_0x6865('0x37')](db['VoiceQueueReport']['rawAttributes']);_0x3cb604[_0x6865('0x36')]=_[_0x6865('0x37')](_0x538b3d[_0x6865('0x36')]);_0x3cb604[_0x6865('0x38')]=_['intersection'](_0x3cb604['model'],_0x3cb604[_0x6865('0x36')]);_0x36cb70['attributes']=_[_0x6865('0x39')](_0x3cb604['model'],qs[_0x6865('0x3b')](_0x538b3d[_0x6865('0x36')]['fields']));_0x36cb70[_0x6865('0x3a')]=_0x36cb70['attributes'][_0x6865('0x3c')]?_0x36cb70[_0x6865('0x3a')]:_0x3cb604[_0x6865('0x35')];if(!_0x538b3d[_0x6865('0x36')][_0x6865('0x51')](_0x6865('0x3d'))){_0x36cb70[_0x6865('0x21')]=qs[_0x6865('0x21')](_0x538b3d['query'][_0x6865('0x21')]);_0x36cb70[_0x6865('0x1e')]=qs[_0x6865('0x1e')](_0x538b3d[_0x6865('0x36')]['offset']);}_0x36cb70['order']=qs['sort'](_0x538b3d[_0x6865('0x36')][_0x6865('0x3f')]);_0x36cb70[_0x6865('0x40')]=qs[_0x6865('0x38')](_[_0x6865('0x41')](_0x538b3d[_0x6865('0x36')],_0x3cb604['filters']));if(_0x538b3d[_0x6865('0x36')][_0x6865('0x42')]){_0x36cb70['where']=_[_0x6865('0x43')](_0x36cb70[_0x6865('0x40')],{'$or':_[_0x6865('0x30')](_0x36cb70['attributes'],function(_0x644982){var _0x33c287={};_0x33c287[_0x644982]={'$like':'%'+_0x538b3d['query'][_0x6865('0x42')]+'%'};return _0x33c287;})});}_0x36cb70=_[_0x6865('0x43')]({},_0x36cb70,_0x538b3d[_0x6865('0x46')]);var _0x3db5f2={'where':_0x36cb70[_0x6865('0x40')]};return db[_0x6865('0x31')][_0x6865('0x20')](_0x3db5f2)[_0x6865('0x27')](function(_0x3159c5){_0x2464f3[_0x6865('0x20')]=_0x3159c5;if(_0x538b3d[_0x6865('0x36')][_0x6865('0x47')]){_0x36cb70['include']=[{'all':!![]}];}return db[_0x6865('0x31')][_0x6865('0x52')](_0x36cb70);})[_0x6865('0x27')](function(_0x83a944){_0x2464f3[_0x6865('0x49')]=_0x83a944;return _0x2464f3;})[_0x6865('0x27')](respondWithFilteredResult(_0x401d5d,_0x36cb70,_0x6865('0x53')))[_0x6865('0x4c')](handleError(_0x401d5d,null,_0x6865('0x53')));};
\ No newline at end of file
index 16d7d6a..5f4d15e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd0=['remove','emit','hook','exports','VoiceQueueReport','setMaxListeners','save','update'];(function(_0x1d70db,_0x142b63){var _0x3060c6=function(_0x347866){while(--_0x347866){_0x1d70db['push'](_0x1d70db['shift']());}};_0x3060c6(++_0x142b63);}(_0x5fd0,0x174));var _0x05fd=function(_0x2f8629,_0x1862b6){_0x2f8629=_0x2f8629-0x0;var _0x4d9af4=_0x5fd0[_0x2f8629];return _0x4d9af4;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require('../../mysqldb')['db'][_0x05fd('0x0')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x05fd('0x1')](0x0);var events={'afterCreate':_0x05fd('0x2'),'afterUpdate':_0x05fd('0x3'),'afterDestroy':_0x05fd('0x4')};function emitEvent(_0x510f3f){return function(_0x579122,_0x5e7730,_0x30afc1){VoiceQueueReportEvents[_0x05fd('0x5')](_0x510f3f+':'+_0x579122['id'],_0x579122);VoiceQueueReportEvents[_0x05fd('0x5')](_0x510f3f,_0x579122);_0x30afc1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x05fd('0x6')](e,emitEvent(event));}}module[_0x05fd('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x2f69=['exports','events','../../mysqldb','VoiceQueueReport','save','update','remove','emit','hasOwnProperty'];(function(_0x56d29f,_0x5edfbc){var _0x30aff8=function(_0xdea053){while(--_0xdea053){_0x56d29f['push'](_0x56d29f['shift']());}};_0x30aff8(++_0x5edfbc);}(_0x2f69,0x169));var _0x92f6=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x2f69[_0x3ab51d];return _0x29a04e;};'use strict';var EventEmitter=require(_0x92f6('0x0'));var VoiceQueueReport=require(_0x92f6('0x1'))['db'][_0x92f6('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x92f6('0x3'),'afterUpdate':_0x92f6('0x4'),'afterDestroy':_0x92f6('0x5')};function emitEvent(_0x4d2a66){return function(_0x34af65,_0x14b03f,_0xc79c62){VoiceQueueReportEvents[_0x92f6('0x6')](_0x4d2a66+':'+_0x34af65['id'],_0x34af65);VoiceQueueReportEvents[_0x92f6('0x6')](_0x4d2a66,_0x34af65);_0xc79c62(null);};}for(var e in events){if(events[_0x92f6('0x7')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x92f6('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index 4593a4f..a355d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9067=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','VoiceQueueReport','report_queue','lodash','util'];(function(_0x3105a1,_0xc09959){var _0x1bca58=function(_0xddc0e7){while(--_0xddc0e7){_0x3105a1['push'](_0x3105a1['shift']());}};_0x1bca58(++_0xc09959);}(_0x9067,0x196));var _0x7906=function(_0x4e0699,_0x457d88){_0x4e0699=_0x4e0699-0x0;var _0x54dcc9=_0x9067[_0x4e0699];return _0x54dcc9;};'use strict';var _=require(_0x7906('0x0'));var util=require(_0x7906('0x1'));var logger=require(_0x7906('0x2'))(_0x7906('0x3'));var moment=require('moment');var BPromise=require(_0x7906('0x4'));var rp=require(_0x7906('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7906('0x6'));var config=require(_0x7906('0x7'));var attributes=require(_0x7906('0x8'));module[_0x7906('0x9')]=function(_0x2e57ed,_0x3899b3){return _0x2e57ed['define'](_0x7906('0xa'),attributes,{'tableName':_0x7906('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x696a=['exports','define','VoiceQueueReport','report_queue','calleridnum','lodash','../../config/logger','api','moment','bluebird','path','rimraf','./voiceQueueReport.attributes'];(function(_0x52997d,_0x1af1f7){var _0x214f46=function(_0x1ef758){while(--_0x1ef758){_0x52997d['push'](_0x52997d['shift']());}};_0x214f46(++_0x1af1f7);}(_0x696a,0x164));var _0xa696=function(_0x5cc8b9,_0x20e3c3){_0x5cc8b9=_0x5cc8b9-0x0;var _0x58892e=_0x696a[_0x5cc8b9];return _0x58892e;};'use strict';var _=require(_0xa696('0x0'));var util=require('util');var logger=require(_0xa696('0x1'))(_0xa696('0x2'));var moment=require(_0xa696('0x3'));var BPromise=require(_0xa696('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa696('0x5'));var rimraf=require(_0xa696('0x6'));var config=require('../../config/environment');var attributes=require(_0xa696('0x7'));module[_0xa696('0x8')]=function(_0x94dfc6,_0x423432){return _0x94dfc6[_0xa696('0x9')](_0xa696('0xa'),attributes,{'tableName':_0xa696('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0xa696('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index ad267a7..00af492 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db5=['UpdateVoiceQueueReport','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voiceQueueReport.socket','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','raw','where','limit','include','map','model','attributes','GetVoiceQueueReport','CreateVoiceQueueReport','VoiceQueueReport','create','body'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x5db5,0xd8));var _0x55db=function(_0x44205b,_0x106623){_0x44205b=_0x44205b-0x0;var _0x1ad2e2=_0x5db5[_0x44205b];return _0x1ad2e2;};'use strict';var _=require(_0x55db('0x0'));var util=require('util');var moment=require(_0x55db('0x1'));var BPromise=require(_0x55db('0x2'));var rs=require(_0x55db('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x55db('0x4'))['db'];var utils=require(_0x55db('0x5'));var logger=require(_0x55db('0x6'))('rpc');var config=require(_0x55db('0x7'));var jayson=require(_0x55db('0x8'));var client=jayson[_0x55db('0x9')][_0x55db('0xa')]({'port':0x232a});config[_0x55db('0xb')]=_[_0x55db('0xc')](config[_0x55db('0xb')],{'host':_0x55db('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x55db('0xb')]));require(_0x55db('0xe'))['register'](socket);function respondWithRpcPromise(_0x53306d,_0x45db64,_0xb49785){return new BPromise(function(_0x3e80f0,_0xe89f51){return client[_0x55db('0xf')](_0x53306d,_0xb49785)[_0x55db('0x10')](function(_0x79c08a){logger[_0x55db('0x11')](_0x55db('0x12'),_0x45db64,_0x55db('0x13'));logger[_0x55db('0x14')](_0x55db('0x15'),_0x45db64,_0x55db('0x13'),JSON[_0x55db('0x16')](_0x79c08a));if(_0x79c08a[_0x55db('0x17')]){if(_0x79c08a[_0x55db('0x17')][_0x55db('0x18')]===0x1f4){logger[_0x55db('0x17')]('VoiceQueueReport,\x20%s,\x20%s',_0x45db64,_0x79c08a[_0x55db('0x17')][_0x55db('0x19')]);return _0xe89f51(_0x79c08a[_0x55db('0x17')]['message']);}logger['error'](_0x55db('0x12'),_0x45db64,_0x79c08a[_0x55db('0x17')]['message']);return _0x3e80f0(_0x79c08a[_0x55db('0x17')][_0x55db('0x19')]);}else{logger[_0x55db('0x11')]('VoiceQueueReport,\x20%s,\x20%s',_0x45db64,_0x55db('0x13'));_0x3e80f0(_0x79c08a[_0x55db('0x1a')][_0x55db('0x19')]);}})[_0x55db('0x1b')](function(_0xd604c0){logger[_0x55db('0x17')](_0x55db('0x12'),_0x45db64,_0xd604c0);_0xe89f51(_0xd604c0);});});}exports['GetVoiceQueueReport']=function(_0x637341){var _0x2c5b07=this;return new Promise(function(_0x493ac6,_0x29668c){return db['VoiceQueueReport'][_0x55db('0x1c')]({'raw':_0x637341[_0x55db('0x1d')]?_0x637341[_0x55db('0x1d')][_0x55db('0x1e')]===undefined?!![]:![]:!![],'where':_0x637341['options']?_0x637341[_0x55db('0x1d')][_0x55db('0x1f')]||null:null,'attributes':_0x637341['options']?_0x637341[_0x55db('0x1d')]['attributes']||null:null,'limit':_0x637341[_0x55db('0x1d')]?_0x637341[_0x55db('0x1d')][_0x55db('0x20')]||null:null,'include':_0x637341[_0x55db('0x1d')]?_0x637341[_0x55db('0x1d')][_0x55db('0x21')]?_[_0x55db('0x22')](_0x637341[_0x55db('0x1d')][_0x55db('0x21')],function(_0x3e9383){return{'model':db[_0x3e9383[_0x55db('0x23')]],'as':_0x3e9383['as'],'attributes':_0x3e9383[_0x55db('0x24')],'include':_0x3e9383[_0x55db('0x21')]?_[_0x55db('0x22')](_0x3e9383['include'],function(_0x39dc77){return{'model':db[_0x39dc77['model']],'as':_0x39dc77['as'],'attributes':_0x39dc77[_0x55db('0x24')],'include':_0x39dc77[_0x55db('0x21')]?_['map'](_0x39dc77[_0x55db('0x21')],function(_0x441c18){return{'model':db[_0x441c18['model']],'as':_0x441c18['as'],'attributes':_0x441c18[_0x55db('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xb1f361){logger['info'](_0x55db('0x25'),_0x637341);logger['debug'](_0x55db('0x25'),_0x637341,JSON[_0x55db('0x16')](_0xb1f361));_0x493ac6(_0xb1f361);})[_0x55db('0x1b')](function(_0x3231dc){logger[_0x55db('0x17')](_0x55db('0x25'),_0x3231dc['message'],_0x637341);_0x29668c(_0x2c5b07[_0x55db('0x17')](0x1f4,_0x3231dc[_0x55db('0x19')]));});});};exports[_0x55db('0x26')]=function(_0x144e01){var _0x38ef69=this;return new Promise(function(_0x5391bd,_0x1c6573){return db[_0x55db('0x27')][_0x55db('0x28')](_0x144e01[_0x55db('0x29')],{'raw':_0x144e01[_0x55db('0x1d')]?_0x144e01[_0x55db('0x1d')][_0x55db('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x3b0f96){logger[_0x55db('0x11')](_0x55db('0x26'),_0x144e01);logger[_0x55db('0x14')](_0x55db('0x26'),_0x144e01,JSON[_0x55db('0x16')](_0x3b0f96));_0x5391bd(_0x3b0f96);})['catch'](function(_0x516726){logger[_0x55db('0x17')](_0x55db('0x26'),_0x516726[_0x55db('0x19')],_0x144e01);_0x1c6573(_0x38ef69[_0x55db('0x17')](0x1f4,_0x516726[_0x55db('0x19')]));});});};exports['UpdateVoiceQueueReport']=function(_0x253a13){var _0x3eb068=this;return new Promise(function(_0x4e545d,_0x2c342a){return db[_0x55db('0x27')]['update'](_0x253a13['body'],{'raw':_0x253a13['options']?_0x253a13[_0x55db('0x1d')][_0x55db('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x253a13[_0x55db('0x1d')]?_0x253a13['options'][_0x55db('0x1f')]||null:null,'attributes':_0x253a13['options']?_0x253a13[_0x55db('0x1d')][_0x55db('0x24')]||null:null,'limit':_0x253a13[_0x55db('0x1d')]?_0x253a13[_0x55db('0x1d')]['limit']||null:null})[_0x55db('0x10')](function(_0x1c7ee0){logger[_0x55db('0x11')](_0x55db('0x2a'),_0x253a13);logger[_0x55db('0x14')](_0x55db('0x2a'),_0x253a13,JSON[_0x55db('0x16')](_0x1c7ee0));_0x4e545d(_0x1c7ee0);})['catch'](function(_0x4ec5be){logger['error'](_0x55db('0x2a'),_0x4ec5be[_0x55db('0x19')],_0x253a13);_0x2c342a(_0x3eb068['error'](0x1f4,_0x4ec5be[_0x55db('0x19')]));});});};
\ No newline at end of file
+var _0x41a9=['defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','map','include','model','CreateVoiceQueueReport','create','update','body','UpdateVoiceQueueReport','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x41a9,0x1cf));var _0x941a=function(_0x266a56,_0x3913bd){_0x266a56=_0x266a56-0x0;var _0x15ed23=_0x41a9[_0x266a56];return _0x15ed23;};'use strict';var _=require(_0x941a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x941a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x941a('0x2'));var db=require(_0x941a('0x3'))['db'];var utils=require(_0x941a('0x4'));var logger=require(_0x941a('0x5'))('rpc');var config=require(_0x941a('0x6'));var jayson=require(_0x941a('0x7'));var client=jayson['client'][_0x941a('0x8')]({'port':0x232a});config[_0x941a('0x9')]=_[_0x941a('0xa')](config['redis'],{'host':_0x941a('0xb'),'port':0x18eb});var socket=require(_0x941a('0xc'))(new Redis(config[_0x941a('0x9')]));require(_0x941a('0xd'))[_0x941a('0xe')](socket);function respondWithRpcPromise(_0x114227,_0x498eac,_0x1a0c32){return new BPromise(function(_0x285799,_0x9ad606){return client[_0x941a('0xf')](_0x114227,_0x1a0c32)[_0x941a('0x10')](function(_0x5716f8){logger[_0x941a('0x11')](_0x941a('0x12'),_0x498eac,_0x941a('0x13'));logger[_0x941a('0x14')](_0x941a('0x15'),_0x498eac,_0x941a('0x13'),JSON[_0x941a('0x16')](_0x5716f8));if(_0x5716f8[_0x941a('0x17')]){if(_0x5716f8[_0x941a('0x17')]['code']===0x1f4){logger['error'](_0x941a('0x12'),_0x498eac,_0x5716f8[_0x941a('0x17')][_0x941a('0x18')]);return _0x9ad606(_0x5716f8[_0x941a('0x17')][_0x941a('0x18')]);}logger['error'](_0x941a('0x12'),_0x498eac,_0x5716f8[_0x941a('0x17')][_0x941a('0x18')]);return _0x285799(_0x5716f8['error'][_0x941a('0x18')]);}else{logger[_0x941a('0x11')](_0x941a('0x12'),_0x498eac,_0x941a('0x13'));_0x285799(_0x5716f8[_0x941a('0x19')]['message']);}})[_0x941a('0x1a')](function(_0x3ceee6){logger[_0x941a('0x17')](_0x941a('0x12'),_0x498eac,_0x3ceee6);_0x9ad606(_0x3ceee6);});});}exports[_0x941a('0x1b')]=function(_0x2c3d70){var _0x4edc6a=this;return new Promise(function(_0x145496,_0x7bed8c){return db[_0x941a('0x1c')][_0x941a('0x1d')]({'raw':_0x2c3d70['options']?_0x2c3d70[_0x941a('0x1e')][_0x941a('0x1f')]===undefined?!![]:![]:!![],'where':_0x2c3d70['options']?_0x2c3d70[_0x941a('0x1e')][_0x941a('0x20')]||null:null,'attributes':_0x2c3d70[_0x941a('0x1e')]?_0x2c3d70[_0x941a('0x1e')][_0x941a('0x21')]||null:null,'limit':_0x2c3d70['options']?_0x2c3d70[_0x941a('0x1e')][_0x941a('0x22')]||null:null,'include':_0x2c3d70[_0x941a('0x1e')]?_0x2c3d70[_0x941a('0x1e')]['include']?_[_0x941a('0x23')](_0x2c3d70[_0x941a('0x1e')][_0x941a('0x24')],function(_0x5d1697){return{'model':db[_0x5d1697[_0x941a('0x25')]],'as':_0x5d1697['as'],'attributes':_0x5d1697[_0x941a('0x21')],'include':_0x5d1697[_0x941a('0x24')]?_[_0x941a('0x23')](_0x5d1697[_0x941a('0x24')],function(_0x376e8a){return{'model':db[_0x376e8a['model']],'as':_0x376e8a['as'],'attributes':_0x376e8a[_0x941a('0x21')],'include':_0x376e8a[_0x941a('0x24')]?_[_0x941a('0x23')](_0x376e8a[_0x941a('0x24')],function(_0x42dcb2){return{'model':db[_0x42dcb2[_0x941a('0x25')]],'as':_0x42dcb2['as'],'attributes':_0x42dcb2[_0x941a('0x21')]};}):[]};}):[]};}):[]:[]})[_0x941a('0x10')](function(_0x33a250){logger[_0x941a('0x11')](_0x941a('0x1b'),_0x2c3d70);logger[_0x941a('0x14')]('GetVoiceQueueReport',_0x2c3d70,JSON['stringify'](_0x33a250));_0x145496(_0x33a250);})[_0x941a('0x1a')](function(_0x2828a1){logger[_0x941a('0x17')]('GetVoiceQueueReport',_0x2828a1[_0x941a('0x18')],_0x2c3d70);_0x7bed8c(_0x4edc6a[_0x941a('0x17')](0x1f4,_0x2828a1[_0x941a('0x18')]));});});};exports[_0x941a('0x26')]=function(_0x555320){var _0x29f6cf=this;return new Promise(function(_0x81d798,_0x53e4b8){return db[_0x941a('0x1c')][_0x941a('0x27')](_0x555320['body'],{'raw':_0x555320[_0x941a('0x1e')]?_0x555320[_0x941a('0x1e')][_0x941a('0x1f')]===undefined?!![]:![]:!![]})[_0x941a('0x10')](function(_0x36c66b){logger[_0x941a('0x11')](_0x941a('0x26'),_0x555320);logger[_0x941a('0x14')](_0x941a('0x26'),_0x555320,JSON[_0x941a('0x16')](_0x36c66b));_0x81d798(_0x36c66b);})[_0x941a('0x1a')](function(_0x253154){logger[_0x941a('0x17')](_0x941a('0x26'),_0x253154['message'],_0x555320);_0x53e4b8(_0x29f6cf['error'](0x1f4,_0x253154[_0x941a('0x18')]));});});};exports['UpdateVoiceQueueReport']=function(_0x480bb9){var _0x3f76b0=this;return new Promise(function(_0x2fd180,_0x35b2da){return db['VoiceQueueReport'][_0x941a('0x28')](_0x480bb9[_0x941a('0x29')],{'raw':_0x480bb9[_0x941a('0x1e')]?_0x480bb9[_0x941a('0x1e')][_0x941a('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x480bb9[_0x941a('0x1e')]?_0x480bb9[_0x941a('0x1e')][_0x941a('0x20')]||null:null,'attributes':_0x480bb9[_0x941a('0x1e')]?_0x480bb9[_0x941a('0x1e')][_0x941a('0x21')]||null:null,'limit':_0x480bb9[_0x941a('0x1e')]?_0x480bb9[_0x941a('0x1e')][_0x941a('0x22')]||null:null})[_0x941a('0x10')](function(_0x21a63e){logger[_0x941a('0x11')](_0x941a('0x2a'),_0x480bb9);logger['debug'](_0x941a('0x2a'),_0x480bb9,JSON[_0x941a('0x16')](_0x21a63e));_0x2fd180(_0x21a63e);})[_0x941a('0x1a')](function(_0x12633b){logger[_0x941a('0x17')](_0x941a('0x2a'),_0x12633b['message'],_0x480bb9);_0x35b2da(_0x3f76b0['error'](0x1f4,_0x12633b[_0x941a('0x18')]));});});};
\ No newline at end of file
index c012aa5..2c75595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f2e=['emit','length','save','remove'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x2f2e,0x146));var _0xe2f2=function(_0x57da0a,_0x284aed){_0x57da0a=_0x57da0a-0x0;var _0x3145d5=_0x2f2e[_0x57da0a];return _0x3145d5;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xe2f2('0x0'),_0xe2f2('0x1'),'update'];function createListener(_0xc8150e,_0x5c1823){return function(_0x1d89ba){_0x5c1823[_0xe2f2('0x2')](_0xc8150e,_0x1d89ba);};}function removeListener(_0x2da048,_0x14543c){return function(){VoiceQueueReportEvents['removeListener'](_0x2da048,_0x14543c);};}exports['register']=function(_0x5b202f){for(var _0x3dca30=0x0,_0x23f7a8=events[_0xe2f2('0x3')];_0x3dca30<_0x23f7a8;_0x3dca30++){var _0xc44c89=events[_0x3dca30];var _0x48111c=createListener('voiceQueueReport:'+_0xc44c89,_0x5b202f);VoiceQueueReportEvents['on'](_0xc44c89,_0x48111c);}};
\ No newline at end of file
+var _0xb39f=['remove','update','emit','removeListener','length','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x4410f9,_0x175692){var _0x2b2000=function(_0x276ae3){while(--_0x276ae3){_0x4410f9['push'](_0x4410f9['shift']());}};_0x2b2000(++_0x175692);}(_0xb39f,0x1e6));var _0xfb39=function(_0x47854d,_0x402a91){_0x47854d=_0x47854d-0x0;var _0x12d3e8=_0xb39f[_0x47854d];return _0x12d3e8;};'use strict';var VoiceQueueReportEvents=require(_0xfb39('0x0'));var events=[_0xfb39('0x1'),_0xfb39('0x2'),_0xfb39('0x3')];function createListener(_0x5ba2ac,_0x4bc0e0){return function(_0x588127){_0x4bc0e0[_0xfb39('0x4')](_0x5ba2ac,_0x588127);};}function removeListener(_0x50f9a1,_0x3d2ee9){return function(){VoiceQueueReportEvents[_0xfb39('0x5')](_0x50f9a1,_0x3d2ee9);};}exports['register']=function(_0x1619f6){for(var _0x455dbe=0x0,_0x45bb1c=events[_0xfb39('0x6')];_0x455dbe<_0x45bb1c;_0x455dbe++){var _0x4ce401=events[_0x455dbe];var _0x4daba2=createListener(_0xfb39('0x7')+_0x4ce401,_0x1619f6);VoiceQueueReportEvents['on'](_0x4ce401,_0x4daba2);}};
\ No newline at end of file
index 7932c7c..3180442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7fd=['express','fs-extra','../../components/auth/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xf7fd,0xe2));var _0xdf7f=function(_0x55abd9,_0x1148af){_0x55abd9=_0x55abd9-0x0;var _0x3e5669=_0xf7fd[_0x55abd9];return _0x3e5669;};'use strict';var multer=require(_0xdf7f('0x0'));var util=require('util');var path=require(_0xdf7f('0x1'));var timeout=require('connect-timeout');var express=require(_0xdf7f('0x2'));var router=express['Router']();var fs_extra=require(_0xdf7f('0x3'));var auth=require(_0xdf7f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xdf7f('0x5'));var controller=require(_0xdf7f('0x6'));router[_0xdf7f('0x7')]('/',auth[_0xdf7f('0x8')](),controller[_0xdf7f('0x9')]);router['get'](_0xdf7f('0xa'),auth[_0xdf7f('0x8')](),controller[_0xdf7f('0xb')]);router[_0xdf7f('0xc')]('/',auth[_0xdf7f('0x8')](),controller[_0xdf7f('0xd')]);router[_0xdf7f('0xe')](_0xdf7f('0xa'),auth[_0xdf7f('0x8')](),controller[_0xdf7f('0xf')]);router[_0xdf7f('0x10')](_0xdf7f('0xa'),auth[_0xdf7f('0x8')](),controller[_0xdf7f('0x11')]);module[_0xdf7f('0x12')]=router;
\ No newline at end of file
+var _0x0689=['exports','multer','path','express','Router','fs-extra','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy'];(function(_0x128641,_0x1ec4c1){var _0x228d4c=function(_0x13604e){while(--_0x13604e){_0x128641['push'](_0x128641['shift']());}};_0x228d4c(++_0x1ec4c1);}(_0x0689,0x10f));var _0x9068=function(_0xeec31d,_0x189f0c){_0xeec31d=_0xeec31d-0x0;var _0x5915e1=_0x0689[_0xeec31d];return _0x5915e1;};'use strict';var multer=require(_0x9068('0x0'));var util=require('util');var path=require(_0x9068('0x1'));var timeout=require('connect-timeout');var express=require(_0x9068('0x2'));var router=express[_0x9068('0x3')]();var fs_extra=require(_0x9068('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9068('0x5'));var config=require('../../config/environment');var controller=require(_0x9068('0x6'));router[_0x9068('0x7')]('/',auth[_0x9068('0x8')](),controller['index']);router['get'](_0x9068('0x9'),auth[_0x9068('0x8')](),controller[_0x9068('0xa')]);router[_0x9068('0xb')]('/',auth[_0x9068('0x8')](),controller[_0x9068('0xc')]);router[_0x9068('0xd')](_0x9068('0x9'),auth[_0x9068('0x8')](),controller[_0x9068('0xe')]);router[_0x9068('0xf')](_0x9068('0x9'),auth[_0x9068('0x8')](),controller[_0x9068('0x10')]);module[_0x9068('0x11')]=router;
\ No newline at end of file
index 5e19b7a..eeaf2b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e49=['exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','moment'];(function(_0xbc4524,_0x2daf07){var _0x1d0651=function(_0x5d5fae){while(--_0x5d5fae){_0xbc4524['push'](_0xbc4524['shift']());}};_0x1d0651(++_0x2daf07);}(_0x8e49,0x1ef));var _0x98e4=function(_0x52121d,_0x1d1704){_0x52121d=_0x52121d-0x0;var _0x448627=_0x8e49[_0x52121d];return _0x448627;};'use strict';var Sequelize=require(_0x98e4('0x0'));var moment=require(_0x98e4('0x1'));module[_0x98e4('0x2')]={'time':{'type':Sequelize[_0x98e4('0x3')]},'callid':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x98e4('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x98e4('0x4')],'allowNull':![],'defaultValue':Sequelize[_0x98e4('0x5')](_0x98e4('0x6'))}};
\ No newline at end of file
+var _0xdc4d=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','moment','exports','STRING','DATE'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0xdc4d,0x9d));var _0xddc4=function(_0x4ba46e,_0x3bc6e0){_0x4ba46e=_0x4ba46e-0x0;var _0x5e3360=_0xdc4d[_0x4ba46e];return _0x5e3360;};'use strict';var Sequelize=require(_0xddc4('0x0'));var moment=require(_0xddc4('0x1'));module[_0xddc4('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xddc4('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xddc4('0x4')],'allowNull':![],'defaultValue':Sequelize['literal'](_0xddc4('0x5'))}};
\ No newline at end of file
index 0e41afa..8b08f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6036=['fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','map','VoiceQueuesLog','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','filters','pick','filter','where','merge','type','options','includeAll','findAll','rows','catch','show','params','rawAttributes','find','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x5b6b38,_0x3c4f72){var _0x3fb646=function(_0x4bf900){while(--_0x4bf900){_0x5b6b38['push'](_0x5b6b38['shift']());}};_0x3fb646(++_0x3c4f72);}(_0x6036,0x111));var _0x6603=function(_0x1b314d,_0x217f68){_0x1b314d=_0x1b314d-0x0;var _0x1a0efb=_0x6036[_0x1b314d];return _0x1a0efb;};'use strict';var emlformat=require(_0x6603('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6603('0x1'));var jsonpatch=require(_0x6603('0x2'));var rp=require(_0x6603('0x3'));var moment=require('moment');var BPromise=require(_0x6603('0x4'));var Mustache=require(_0x6603('0x5'));var util=require(_0x6603('0x6'));var path=require(_0x6603('0x7'));var sox=require(_0x6603('0x8'));var csv=require(_0x6603('0x9'));var ejs=require(_0x6603('0xa'));var fs=require('fs');var fs_extra=require(_0x6603('0xb'));var _=require('lodash');var squel=require(_0x6603('0xc'));var crypto=require(_0x6603('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6603('0xe'));var toCsv=require(_0x6603('0x9'));var querystring=require(_0x6603('0xf'));var Papa=require(_0x6603('0x10'));var Redis=require(_0x6603('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6603('0x12'));var logger=require(_0x6603('0x13'))(_0x6603('0x14'));var utils=require(_0x6603('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6603('0x16'));var db=require(_0x6603('0x17'))['db'];function respondWithStatusCode(_0x1ad768,_0x585a31){_0x585a31=_0x585a31||0xcc;return function(_0x17b86d){if(_0x17b86d){return _0x1ad768[_0x6603('0x18')](_0x585a31);}return _0x1ad768['status'](_0x585a31)[_0x6603('0x19')]();};}function respondWithResult(_0x28d9db,_0x50fd66){_0x50fd66=_0x50fd66||0xc8;return function(_0x4f8b6b){if(_0x4f8b6b){return _0x28d9db['status'](_0x50fd66)['json'](_0x4f8b6b);}};}function respondWithFilteredResult(_0x4f9a14,_0x5e3ef4){return function(_0x49ed8f){if(_0x49ed8f){var _0x1fb3d0=typeof _0x5e3ef4[_0x6603('0x1a')]===_0x6603('0x1b')&&typeof _0x5e3ef4[_0x6603('0x1c')]===_0x6603('0x1b');var _0x1a3254=_0x49ed8f['count'];var _0x2e904f=_0x1fb3d0?0x0:_0x5e3ef4[_0x6603('0x1a')];var _0x5ad57d=_0x1fb3d0?_0x49ed8f[_0x6603('0x1d')]:_0x5e3ef4[_0x6603('0x1a')]+_0x5e3ef4['limit'];var _0x397da8;if(_0x5ad57d>=_0x1a3254){_0x5ad57d=_0x1a3254;_0x397da8=0xc8;}else{_0x397da8=0xce;}_0x4f9a14[_0x6603('0x1e')](_0x397da8);return _0x4f9a14['set'](_0x6603('0x1f'),_0x2e904f+'-'+_0x5ad57d+'/'+_0x1a3254)[_0x6603('0x20')](_0x49ed8f);}return null;};}function patchUpdates(_0x1986b2){return function(_0x5694dd){try{jsonpatch[_0x6603('0x21')](_0x5694dd,_0x1986b2,!![]);}catch(_0x282686){return BPromise[_0x6603('0x22')](_0x282686);}return _0x5694dd[_0x6603('0x23')]();};}function saveUpdates(_0x551be8,_0x2e8cc6){return function(_0xd9b53c){if(_0xd9b53c){return _0xd9b53c[_0x6603('0x24')](_0x551be8)[_0x6603('0x25')](function(_0x4f5f2b){return _0x4f5f2b;});}return null;};}function removeEntity(_0x3c9573,_0x4e2584){return function(_0x21eff2){if(_0x21eff2){return _0x21eff2[_0x6603('0x26')]()[_0x6603('0x25')](function(){_0x3c9573[_0x6603('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8bdae9,_0x42aac6){return function(_0x268f5f){if(!_0x268f5f){_0x8bdae9['sendStatus'](0x194);}return _0x268f5f;};}function handleError(_0x12c75b,_0x44b73c){_0x44b73c=_0x44b73c||0x1f4;return function(_0x168d42){logger['error'](_0x168d42[_0x6603('0x27')]);if(_0x168d42[_0x6603('0x28')]){delete _0x168d42[_0x6603('0x28')];}_0x12c75b['status'](_0x44b73c)['send'](_0x168d42);};}exports['index']=function(_0x4c7717,_0x4b7233){var _0x515806={},_0xa22e79={},_0x3bb168={'count':0x0,'rows':[]};var _0x4f9683=_[_0x6603('0x29')](db[_0x6603('0x2a')]['rawAttributes'],function(_0x228753){return{'name':_0x228753[_0x6603('0x2b')],'type':_0x228753['type'][_0x6603('0x2c')]};});_0xa22e79[_0x6603('0x2d')]=_['map'](_0x4f9683,'name');_0xa22e79[_0x6603('0x2e')]=_[_0x6603('0x2f')](_0x4c7717['query']);_0xa22e79['filters']=_['intersection'](_0xa22e79['model'],_0xa22e79['query']);_0x515806['attributes']=_[_0x6603('0x30')](_0xa22e79['model'],qs[_0x6603('0x31')](_0x4c7717[_0x6603('0x2e')][_0x6603('0x31')]));_0x515806[_0x6603('0x32')]=_0x515806[_0x6603('0x32')][_0x6603('0x33')]?_0x515806['attributes']:_0xa22e79['model'];if(!_0x4c7717[_0x6603('0x2e')][_0x6603('0x34')](_0x6603('0x35'))){_0x515806[_0x6603('0x1c')]=qs[_0x6603('0x1c')](_0x4c7717['query'][_0x6603('0x1c')]);_0x515806[_0x6603('0x1a')]=qs[_0x6603('0x1a')](_0x4c7717[_0x6603('0x2e')][_0x6603('0x1a')]);}_0x515806[_0x6603('0x36')]=qs['sort'](_0x4c7717['query']['sort']);_0x515806['where']=qs[_0x6603('0x37')](_[_0x6603('0x38')](_0x4c7717[_0x6603('0x2e')],_0xa22e79['filters']),_0x4f9683);if(_0x4c7717[_0x6603('0x2e')][_0x6603('0x39')]){_0x515806[_0x6603('0x3a')]=_[_0x6603('0x3b')](_0x515806[_0x6603('0x3a')],{'$or':_[_0x6603('0x29')](_0x4f9683,function(_0x15b957){if(_0x15b957[_0x6603('0x3c')]!=='VIRTUAL'){var _0x490aab={};_0x490aab[_0x15b957['name']]={'$like':'%'+_0x4c7717[_0x6603('0x2e')]['filter']+'%'};return _0x490aab;}})});}_0x515806=_[_0x6603('0x3b')]({},_0x515806,_0x4c7717[_0x6603('0x3d')]);var _0x8a7b1e={'where':_0x515806['where']};return db[_0x6603('0x2a')][_0x6603('0x1d')](_0x8a7b1e)[_0x6603('0x25')](function(_0x3454b1){_0x3bb168[_0x6603('0x1d')]=_0x3454b1;if(_0x4c7717['query'][_0x6603('0x3e')]){_0x515806['include']=[{'all':!![]}];}return db[_0x6603('0x2a')][_0x6603('0x3f')](_0x515806);})[_0x6603('0x25')](function(_0x2b7a9c){_0x3bb168[_0x6603('0x40')]=_0x2b7a9c;return _0x3bb168;})[_0x6603('0x25')](respondWithFilteredResult(_0x4b7233,_0x515806))[_0x6603('0x41')](handleError(_0x4b7233,null));};exports[_0x6603('0x42')]=function(_0x4700e0,_0x296796){var _0x2aa4b7={'raw':!![],'where':{'id':_0x4700e0[_0x6603('0x43')]['id']}},_0x1ab0c5={};_0x1ab0c5[_0x6603('0x2d')]=_[_0x6603('0x2f')](db[_0x6603('0x2a')][_0x6603('0x44')]);_0x1ab0c5[_0x6603('0x2e')]=_[_0x6603('0x2f')](_0x4700e0['query']);_0x1ab0c5[_0x6603('0x37')]=_[_0x6603('0x30')](_0x1ab0c5[_0x6603('0x2d')],_0x1ab0c5[_0x6603('0x2e')]);_0x2aa4b7[_0x6603('0x32')]=_['intersection'](_0x1ab0c5[_0x6603('0x2d')],qs[_0x6603('0x31')](_0x4700e0[_0x6603('0x2e')][_0x6603('0x31')]));_0x2aa4b7['attributes']=_0x2aa4b7[_0x6603('0x32')]['length']?_0x2aa4b7[_0x6603('0x32')]:_0x1ab0c5[_0x6603('0x2d')];if(_0x4700e0[_0x6603('0x2e')]['includeAll']){_0x2aa4b7['include']=[{'all':!![]}];}_0x2aa4b7=_[_0x6603('0x3b')]({},_0x2aa4b7,_0x4700e0[_0x6603('0x3d')]);return db['VoiceQueuesLog'][_0x6603('0x45')](_0x2aa4b7)[_0x6603('0x25')](handleEntityNotFound(_0x296796,null))[_0x6603('0x25')](respondWithResult(_0x296796,null))['catch'](handleError(_0x296796,null));};exports['create']=function(_0x3f2f3f,_0x34b5f9){return db[_0x6603('0x2a')]['create'](_0x3f2f3f[_0x6603('0x46')],{})[_0x6603('0x25')](respondWithResult(_0x34b5f9,0xc9))[_0x6603('0x41')](handleError(_0x34b5f9,null));};exports[_0x6603('0x24')]=function(_0x57fb76,_0x15de1b){if(_0x57fb76['body']['id']){delete _0x57fb76[_0x6603('0x46')]['id'];}return db['VoiceQueuesLog'][_0x6603('0x45')]({'where':{'id':_0x57fb76[_0x6603('0x43')]['id']}})[_0x6603('0x25')](handleEntityNotFound(_0x15de1b,null))['then'](saveUpdates(_0x57fb76[_0x6603('0x46')],null))[_0x6603('0x25')](respondWithResult(_0x15de1b,null))[_0x6603('0x41')](handleError(_0x15de1b,null));};exports[_0x6603('0x26')]=function(_0x22a14a,_0x3b2b32){return db[_0x6603('0x2a')][_0x6603('0x45')]({'where':{'id':_0x22a14a['params']['id']}})[_0x6603('0x25')](handleEntityNotFound(_0x3b2b32,null))[_0x6603('0x25')](removeEntity(_0x3b2b32,null))['catch'](handleError(_0x3b2b32,null));};
\ No newline at end of file
+var _0x2727=['length','include','catch','create','body','destroy','find','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','set','reject','save','update','then','error','name','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','includeAll','findAll','rows','show','params','VoiceQueuesLog'];(function(_0x10e7d6,_0x48fd96){var _0x44839a=function(_0x2fbd0d){while(--_0x2fbd0d){_0x10e7d6['push'](_0x10e7d6['shift']());}};_0x44839a(++_0x48fd96);}(_0x2727,0x11b));var _0x7272=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x2727[_0x1cfa0d];return _0xe33279;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7272('0x0'));var zipdir=require(_0x7272('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7272('0x2'));var BPromise=require(_0x7272('0x3'));var Mustache=require(_0x7272('0x4'));var util=require(_0x7272('0x5'));var path=require(_0x7272('0x6'));var sox=require(_0x7272('0x7'));var csv=require(_0x7272('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(_0x7272('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x7272('0xa'));var toCsv=require(_0x7272('0x8'));var querystring=require(_0x7272('0xb'));var Papa=require(_0x7272('0xc'));var Redis=require(_0x7272('0xd'));var authService=require(_0x7272('0xe'));var qs=require(_0x7272('0xf'));var as=require(_0x7272('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7272('0x11'))(_0x7272('0x12'));var utils=require('../../config/utils');var config=require(_0x7272('0x13'));var licenseUtil=require(_0x7272('0x14'));var db=require(_0x7272('0x15'))['db'];function respondWithStatusCode(_0x411def,_0x4a521f){_0x4a521f=_0x4a521f||0xcc;return function(_0x29a494){if(_0x29a494){return _0x411def[_0x7272('0x16')](_0x4a521f);}return _0x411def[_0x7272('0x17')](_0x4a521f)[_0x7272('0x18')]();};}function respondWithResult(_0xd5c420,_0x3739ad){_0x3739ad=_0x3739ad||0xc8;return function(_0x52e854){if(_0x52e854){return _0xd5c420[_0x7272('0x17')](_0x3739ad)[_0x7272('0x19')](_0x52e854);}};}function respondWithFilteredResult(_0x43fc6f,_0x5eb552){return function(_0x3c3f40){if(_0x3c3f40){var _0xabe3b4=typeof _0x5eb552['offset']==='undefined'&&typeof _0x5eb552['limit']==='undefined';var _0x642414=_0x3c3f40['count'];var _0x111a3f=_0xabe3b4?0x0:_0x5eb552[_0x7272('0x1a')];var _0x26f021=_0xabe3b4?_0x3c3f40['count']:_0x5eb552[_0x7272('0x1a')]+_0x5eb552[_0x7272('0x1b')];var _0x3e96fc;if(_0x26f021>=_0x642414){_0x26f021=_0x642414;_0x3e96fc=0xc8;}else{_0x3e96fc=0xce;}_0x43fc6f[_0x7272('0x17')](_0x3e96fc);return _0x43fc6f[_0x7272('0x1c')]('Content-Range',_0x111a3f+'-'+_0x26f021+'/'+_0x642414)[_0x7272('0x19')](_0x3c3f40);}return null;};}function patchUpdates(_0x241871){return function(_0x37e208){try{jsonpatch['apply'](_0x37e208,_0x241871,!![]);}catch(_0x46fa8f){return BPromise[_0x7272('0x1d')](_0x46fa8f);}return _0x37e208[_0x7272('0x1e')]();};}function saveUpdates(_0x3b20d2,_0x1bac14){return function(_0x26875f){if(_0x26875f){return _0x26875f[_0x7272('0x1f')](_0x3b20d2)['then'](function(_0x1f0a7c){return _0x1f0a7c;});}return null;};}function removeEntity(_0xb04a17,_0x371246){return function(_0x41ae77){if(_0x41ae77){return _0x41ae77['destroy']()[_0x7272('0x20')](function(){_0xb04a17['status'](0xcc)[_0x7272('0x18')]();});}};}function handleEntityNotFound(_0x3bb5ce,_0x4b4d60){return function(_0x4aa4c5){if(!_0x4aa4c5){_0x3bb5ce[_0x7272('0x16')](0x194);}return _0x4aa4c5;};}function handleError(_0x5881e7,_0xb2316e){_0xb2316e=_0xb2316e||0x1f4;return function(_0x3e06be){logger[_0x7272('0x21')](_0x3e06be['stack']);if(_0x3e06be[_0x7272('0x22')]){delete _0x3e06be[_0x7272('0x22')];}_0x5881e7['status'](_0xb2316e)['send'](_0x3e06be);};}exports['index']=function(_0x5f2f47,_0x30581e){var _0x128ba0={},_0x39383d={},_0x3787d2={'count':0x0,'rows':[]};var _0x224947=_[_0x7272('0x23')](db['VoiceQueuesLog'][_0x7272('0x24')],function(_0x1f42fb){return{'name':_0x1f42fb[_0x7272('0x25')],'type':_0x1f42fb[_0x7272('0x26')]['key']};});_0x39383d['model']=_[_0x7272('0x23')](_0x224947,_0x7272('0x22'));_0x39383d[_0x7272('0x27')]=_[_0x7272('0x28')](_0x5f2f47[_0x7272('0x27')]);_0x39383d[_0x7272('0x29')]=_[_0x7272('0x2a')](_0x39383d[_0x7272('0x2b')],_0x39383d[_0x7272('0x27')]);_0x128ba0['attributes']=_['intersection'](_0x39383d[_0x7272('0x2b')],qs[_0x7272('0x2c')](_0x5f2f47[_0x7272('0x27')]['fields']));_0x128ba0[_0x7272('0x2d')]=_0x128ba0[_0x7272('0x2d')]['length']?_0x128ba0[_0x7272('0x2d')]:_0x39383d['model'];if(!_0x5f2f47[_0x7272('0x27')][_0x7272('0x2e')](_0x7272('0x2f'))){_0x128ba0['limit']=qs[_0x7272('0x1b')](_0x5f2f47['query'][_0x7272('0x1b')]);_0x128ba0['offset']=qs['offset'](_0x5f2f47[_0x7272('0x27')][_0x7272('0x1a')]);}_0x128ba0[_0x7272('0x30')]=qs[_0x7272('0x31')](_0x5f2f47[_0x7272('0x27')][_0x7272('0x31')]);_0x128ba0[_0x7272('0x32')]=qs['filters'](_[_0x7272('0x33')](_0x5f2f47[_0x7272('0x27')],_0x39383d[_0x7272('0x29')]),_0x224947);if(_0x5f2f47[_0x7272('0x27')][_0x7272('0x34')]){_0x128ba0[_0x7272('0x32')]=_[_0x7272('0x35')](_0x128ba0['where'],{'$or':_[_0x7272('0x23')](_0x224947,function(_0x1a2ab2){if(_0x1a2ab2[_0x7272('0x26')]!=='VIRTUAL'){var _0x10a9bb={};_0x10a9bb[_0x1a2ab2[_0x7272('0x22')]]={'$like':'%'+_0x5f2f47[_0x7272('0x27')][_0x7272('0x34')]+'%'};return _0x10a9bb;}})});}_0x128ba0=_[_0x7272('0x35')]({},_0x128ba0,_0x5f2f47[_0x7272('0x36')]);var _0x2203b7={'where':_0x128ba0[_0x7272('0x32')]};return db['VoiceQueuesLog'][_0x7272('0x37')](_0x2203b7)[_0x7272('0x20')](function(_0x120ca9){_0x3787d2[_0x7272('0x37')]=_0x120ca9;if(_0x5f2f47[_0x7272('0x27')][_0x7272('0x38')]){_0x128ba0['include']=[{'all':!![]}];}return db['VoiceQueuesLog'][_0x7272('0x39')](_0x128ba0);})['then'](function(_0x21b948){_0x3787d2[_0x7272('0x3a')]=_0x21b948;return _0x3787d2;})[_0x7272('0x20')](respondWithFilteredResult(_0x30581e,_0x128ba0))['catch'](handleError(_0x30581e,null));};exports[_0x7272('0x3b')]=function(_0x31a0db,_0x47cc56){var _0x1db7af={'raw':!![],'where':{'id':_0x31a0db[_0x7272('0x3c')]['id']}},_0x4da591={};_0x4da591[_0x7272('0x2b')]=_[_0x7272('0x28')](db[_0x7272('0x3d')][_0x7272('0x24')]);_0x4da591[_0x7272('0x27')]=_[_0x7272('0x28')](_0x31a0db['query']);_0x4da591[_0x7272('0x29')]=_[_0x7272('0x2a')](_0x4da591['model'],_0x4da591[_0x7272('0x27')]);_0x1db7af['attributes']=_['intersection'](_0x4da591[_0x7272('0x2b')],qs[_0x7272('0x2c')](_0x31a0db[_0x7272('0x27')][_0x7272('0x2c')]));_0x1db7af[_0x7272('0x2d')]=_0x1db7af['attributes'][_0x7272('0x3e')]?_0x1db7af['attributes']:_0x4da591['model'];if(_0x31a0db[_0x7272('0x27')][_0x7272('0x38')]){_0x1db7af[_0x7272('0x3f')]=[{'all':!![]}];}_0x1db7af=_[_0x7272('0x35')]({},_0x1db7af,_0x31a0db['options']);return db['VoiceQueuesLog']['find'](_0x1db7af)[_0x7272('0x20')](handleEntityNotFound(_0x47cc56,null))['then'](respondWithResult(_0x47cc56,null))[_0x7272('0x40')](handleError(_0x47cc56,null));};exports[_0x7272('0x41')]=function(_0x11cbd5,_0x14626){return db[_0x7272('0x3d')][_0x7272('0x41')](_0x11cbd5[_0x7272('0x42')],{})['then'](respondWithResult(_0x14626,0xc9))[_0x7272('0x40')](handleError(_0x14626,null));};exports['update']=function(_0x1eb020,_0x42d256){if(_0x1eb020[_0x7272('0x42')]['id']){delete _0x1eb020['body']['id'];}return db[_0x7272('0x3d')]['find']({'where':{'id':_0x1eb020[_0x7272('0x3c')]['id']}})['then'](handleEntityNotFound(_0x42d256,null))['then'](saveUpdates(_0x1eb020['body'],null))[_0x7272('0x20')](respondWithResult(_0x42d256,null))[_0x7272('0x40')](handleError(_0x42d256,null));};exports[_0x7272('0x43')]=function(_0x394800,_0x3377c9){return db[_0x7272('0x3d')][_0x7272('0x44')]({'where':{'id':_0x394800[_0x7272('0x3c')]['id']}})[_0x7272('0x20')](handleEntityNotFound(_0x3377c9,null))[_0x7272('0x20')](removeEntity(_0x3377c9,null))[_0x7272('0x40')](handleError(_0x3377c9,null));};
\ No newline at end of file
index f375838..02dcd56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3edd=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','define','VoiceQueuesLog','voice_queues_log','event','dtm','lodash'];(function(_0x4ffafb,_0x20171a){var _0x4ab472=function(_0x1afc75){while(--_0x1afc75){_0x4ffafb['push'](_0x4ffafb['shift']());}};_0x4ab472(++_0x20171a);}(_0x3edd,0x14f));var _0xd3ed=function(_0x289b03,_0x526143){_0x289b03=_0x289b03-0x0;var _0x3d13b3=_0x3edd[_0x289b03];return _0x3d13b3;};'use strict';var _=require(_0xd3ed('0x0'));var util=require(_0xd3ed('0x1'));var logger=require(_0xd3ed('0x2'))(_0xd3ed('0x3'));var moment=require(_0xd3ed('0x4'));var BPromise=require(_0xd3ed('0x5'));var rp=require(_0xd3ed('0x6'));var fs=require('fs');var path=require(_0xd3ed('0x7'));var rimraf=require(_0xd3ed('0x8'));var config=require(_0xd3ed('0x9'));var attributes=require(_0xd3ed('0xa'));module['exports']=function(_0x2e6483,_0x2f7100){return _0x2e6483[_0xd3ed('0xb')](_0xd3ed('0xc'),attributes,{'tableName':_0xd3ed('0xd'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0xd3ed('0xe'),_0xd3ed('0xf')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x4ddd=['define','VoiceQueuesLog','voice_queues_log','event_dtm','dtm','lodash','path','rimraf','../../config/environment','exports'];(function(_0x3f85bb,_0x43b18b){var _0x52b060=function(_0x35b128){while(--_0x35b128){_0x3f85bb['push'](_0x3f85bb['shift']());}};_0x52b060(++_0x43b18b);}(_0x4ddd,0x18b));var _0xd4dd=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x4ddd[_0x55f8b4];return _0x2475f9;};'use strict';var _=require(_0xd4dd('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd4dd('0x1'));var rimraf=require(_0xd4dd('0x2'));var config=require(_0xd4dd('0x3'));var attributes=require('./voiceQueuesLog.attributes');module[_0xd4dd('0x4')]=function(_0x207f91,_0x2796e1){return _0x207f91[_0xd4dd('0x5')](_0xd4dd('0x6'),attributes,{'tableName':_0xd4dd('0x7'),'paranoid':![],'indexes':[{'name':_0xd4dd('0x8'),'fields':['event',_0xd4dd('0x9')]}],'timestamps':![]});};
\ No newline at end of file
index 430b140..4648846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2f2=['error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s'];(function(_0x2706da,_0x3856f5){var _0x3ba87e=function(_0x479a79){while(--_0x479a79){_0x2706da['push'](_0x2706da['shift']());}};_0x3ba87e(++_0x3856f5);}(_0xf2f2,0x101));var _0x2f2f=function(_0x11b1b3,_0xf3cc69){_0x11b1b3=_0x11b1b3-0x0;var _0x437029=_0xf2f2[_0x11b1b3];return _0x437029;};'use strict';var _=require(_0x2f2f('0x0'));var util=require('util');var moment=require(_0x2f2f('0x1'));var BPromise=require(_0x2f2f('0x2'));var rs=require(_0x2f2f('0x3'));var fs=require('fs');var Redis=require(_0x2f2f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2f2f('0x5'));var logger=require('../../config/logger')(_0x2f2f('0x6'));var config=require(_0x2f2f('0x7'));var jayson=require(_0x2f2f('0x8'));var client=jayson[_0x2f2f('0x9')][_0x2f2f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34540d,_0x5d5438,_0x5a8100){return new BPromise(function(_0xc86ee6,_0x15f60c){return client['request'](_0x34540d,_0x5a8100)['then'](function(_0x4aae7c){logger[_0x2f2f('0xb')](_0x2f2f('0xc'),_0x5d5438,_0x2f2f('0xd'));logger[_0x2f2f('0xe')](_0x2f2f('0xf'),_0x5d5438,_0x2f2f('0xd'),JSON['stringify'](_0x4aae7c));if(_0x4aae7c[_0x2f2f('0x10')]){if(_0x4aae7c['error'][_0x2f2f('0x11')]===0x1f4){logger['error'](_0x2f2f('0xc'),_0x5d5438,_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);return _0x15f60c(_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);}logger['error'](_0x2f2f('0xc'),_0x5d5438,_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);return _0xc86ee6(_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);}else{logger[_0x2f2f('0xb')]('VoiceQueuesLog,\x20%s,\x20%s',_0x5d5438,_0x2f2f('0xd'));_0xc86ee6(_0x4aae7c[_0x2f2f('0x13')][_0x2f2f('0x12')]);}})[_0x2f2f('0x14')](function(_0x364336){logger[_0x2f2f('0x10')](_0x2f2f('0xc'),_0x5d5438,_0x364336);_0x15f60c(_0x364336);});});}
\ No newline at end of file
+var _0x2d4d=['code','message','result','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3f763e,_0x278a4c){var _0x1d5e38=function(_0x321dda){while(--_0x321dda){_0x3f763e['push'](_0x3f763e['shift']());}};_0x1d5e38(++_0x278a4c);}(_0x2d4d,0x94));var _0xd2d4=function(_0x222a66,_0x223db7){_0x222a66=_0x222a66-0x0;var _0x751d38=_0x2d4d[_0x222a66];return _0x751d38;};'use strict';var _=require(_0xd2d4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd2d4('0x1'));var fs=require('fs');var Redis=require(_0xd2d4('0x2'));var db=require(_0xd2d4('0x3'))['db'];var utils=require(_0xd2d4('0x4'));var logger=require(_0xd2d4('0x5'))(_0xd2d4('0x6'));var config=require(_0xd2d4('0x7'));var jayson=require(_0xd2d4('0x8'));var client=jayson[_0xd2d4('0x9')][_0xd2d4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56d1e3,_0x23e700,_0x57bae4){return new BPromise(function(_0x45176e,_0x89452c){return client[_0xd2d4('0xb')](_0x56d1e3,_0x57bae4)[_0xd2d4('0xc')](function(_0x2db655){logger[_0xd2d4('0xd')](_0xd2d4('0xe'),_0x23e700,_0xd2d4('0xf'));logger[_0xd2d4('0x10')](_0xd2d4('0x11'),_0x23e700,_0xd2d4('0xf'),JSON[_0xd2d4('0x12')](_0x2db655));if(_0x2db655[_0xd2d4('0x13')]){if(_0x2db655[_0xd2d4('0x13')][_0xd2d4('0x14')]===0x1f4){logger[_0xd2d4('0x13')](_0xd2d4('0xe'),_0x23e700,_0x2db655[_0xd2d4('0x13')][_0xd2d4('0x15')]);return _0x89452c(_0x2db655[_0xd2d4('0x13')][_0xd2d4('0x15')]);}logger[_0xd2d4('0x13')](_0xd2d4('0xe'),_0x23e700,_0x2db655[_0xd2d4('0x13')][_0xd2d4('0x15')]);return _0x45176e(_0x2db655[_0xd2d4('0x13')][_0xd2d4('0x15')]);}else{logger[_0xd2d4('0xd')](_0xd2d4('0xe'),_0x23e700,'request\x20sent');_0x45176e(_0x2db655[_0xd2d4('0x16')][_0xd2d4('0x15')]);}})[_0xd2d4('0x17')](function(_0x21e7a1){logger['error'](_0xd2d4('0xe'),_0x23e700,_0x21e7a1);_0x89452c(_0x21e7a1);});});}
\ No newline at end of file
index 5b05c2a..f8422d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x080f=['/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','put'];(function(_0x1b6f85,_0x34ba86){var _0x4b9a05=function(_0x25a637){while(--_0x25a637){_0x1b6f85['push'](_0x1b6f85['shift']());}};_0x4b9a05(++_0x34ba86);}(_0x080f,0xdd));var _0xf080=function(_0xd65ea3,_0x5a0dd6){_0xd65ea3=_0xd65ea3-0x0;var _0xd4a3be=_0x080f[_0xd65ea3];return _0xd4a3be;};'use strict';var multer=require(_0xf080('0x0'));var util=require(_0xf080('0x1'));var path=require('path');var timeout=require(_0xf080('0x2'));var express=require(_0xf080('0x3'));var router=express[_0xf080('0x4')]();var fs_extra=require(_0xf080('0x5'));var auth=require(_0xf080('0x6'));var interaction=require(_0xf080('0x7'));var config=require(_0xf080('0x8'));var controller=require('./voiceRecording.controller');router[_0xf080('0x9')]('/',auth[_0xf080('0xa')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0xf080('0xb')]);router[_0xf080('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['get']('/:id/download',auth[_0xf080('0xa')](),controller['download']);router['get'](_0xf080('0xc'),controller[_0xf080('0xd')]);router[_0xf080('0x9')](_0xf080('0xe'),auth['isAuthenticated'](),controller[_0xf080('0xf')]);router[_0xf080('0x10')]('/',auth[_0xf080('0xa')](),controller[_0xf080('0x11')]);router[_0xf080('0x10')](_0xf080('0xe'),auth[_0xf080('0xa')](),controller['runTranscribe']);router[_0xf080('0x12')](_0xf080('0x13'),auth['isAuthenticated'](),controller[_0xf080('0x14')]);router[_0xf080('0x15')](_0xf080('0x13'),auth[_0xf080('0xa')](),controller[_0xf080('0x16')]);module[_0xf080('0x17')]=router;
\ No newline at end of file
+var _0x562f=['show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','get','isAuthenticated','/describe','describe','/:id'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x562f,0xa5));var _0xf562=function(_0x1dad4f,_0x13b837){_0x1dad4f=_0x1dad4f-0x0;var _0x22468b=_0x562f[_0x1dad4f];return _0x22468b;};'use strict';var multer=require('multer');var util=require(_0xf562('0x0'));var path=require('path');var timeout=require(_0xf562('0x1'));var express=require(_0xf562('0x2'));var router=express['Router']();var fs_extra=require(_0xf562('0x3'));var auth=require(_0xf562('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceRecording.controller');router[_0xf562('0x5')]('/',auth[_0xf562('0x6')](),controller['index']);router[_0xf562('0x5')](_0xf562('0x7'),auth[_0xf562('0x6')](),controller[_0xf562('0x8')]);router['get'](_0xf562('0x9'),auth[_0xf562('0x6')](),controller[_0xf562('0xa')]);router[_0xf562('0x5')](_0xf562('0xb'),auth[_0xf562('0x6')](),controller[_0xf562('0xc')]);router[_0xf562('0x5')](_0xf562('0xd'),controller[_0xf562('0xe')]);router['get'](_0xf562('0xf'),auth[_0xf562('0x6')](),controller[_0xf562('0x10')]);router[_0xf562('0x11')]('/',auth[_0xf562('0x6')](),controller[_0xf562('0x12')]);router[_0xf562('0x11')](_0xf562('0xf'),auth[_0xf562('0x6')](),controller[_0xf562('0x13')]);router[_0xf562('0x14')](_0xf562('0x9'),auth[_0xf562('0x6')](),controller[_0xf562('0x15')]);router[_0xf562('0x16')](_0xf562('0x9'),auth[_0xf562('0x6')](),controller[_0xf562('0x17')]);module[_0xf562('0x18')]=router;
\ No newline at end of file
index bbfb7ec..907f589 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(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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 ae5f421..6374051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7c6=['lodash','squel','desk.js','querystring','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','VoiceRecording','includeAll','rows','params','keys','length','include','find','catch','create','body','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','decryptFile','secrets','recording','Sequelize','filename','extname','unlink','message','VoiceRecording\x20not\x20found','downloads','sequelize','MD5','col','token','$and','push','format','existsSync','ValidationError','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','NEW','data1','IN_PROGRESS','tempSentiment','downloadTranscribe','fileText','.txt','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra'];(function(_0x59138c,_0x579c00){var _0x2942f4=function(_0x1c3b9a){while(--_0x1c3b9a){_0x59138c['push'](_0x59138c['shift']());}};_0x2942f4(++_0x579c00);}(_0xb7c6,0x116));var _0x6b7c=function(_0x163675,_0xce884a){_0x163675=_0x163675-0x0;var _0x4d203f=_0xb7c6[_0x163675];return _0x4d203f;};'use strict';var emlformat=require(_0x6b7c('0x0'));var rimraf=require(_0x6b7c('0x1'));var zipdir=require(_0x6b7c('0x2'));var jsonpatch=require(_0x6b7c('0x3'));var rp=require(_0x6b7c('0x4'));var moment=require(_0x6b7c('0x5'));var BPromise=require(_0x6b7c('0x6'));var Mustache=require(_0x6b7c('0x7'));var util=require(_0x6b7c('0x8'));var path=require('path');var sox=require(_0x6b7c('0x9'));var csv=require('to-csv');var ejs=require(_0x6b7c('0xa'));var fs=require('fs');var fs_extra=require(_0x6b7c('0xb'));var _=require(_0x6b7c('0xc'));var squel=require(_0x6b7c('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6b7c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6b7c('0xf'));var Papa=require('papaparse');var AWS=require(_0x6b7c('0x10'));var uuidv4=require(_0x6b7c('0x11'));var Redis=require(_0x6b7c('0x12'));var authService=require(_0x6b7c('0x13'));var qs=require(_0x6b7c('0x14'));var as=require(_0x6b7c('0x15'));var hardwareService=require(_0x6b7c('0x16'));var logger=require(_0x6b7c('0x17'))('api');var utils=require(_0x6b7c('0x18'));var config=require(_0x6b7c('0x19'));var licenseUtil=require(_0x6b7c('0x1a'));var db=require(_0x6b7c('0x1b'))['db'];function respondWithStatusCode(_0x1e8cf0,_0x26e843){_0x26e843=_0x26e843||0xcc;return function(_0x253102){if(_0x253102){return _0x1e8cf0['sendStatus'](_0x26e843);}return _0x1e8cf0['status'](_0x26e843)[_0x6b7c('0x1c')]();};}function respondWithResult(_0x55623c,_0x468e49){_0x468e49=_0x468e49||0xc8;return function(_0x5deed1){if(_0x5deed1){return _0x55623c[_0x6b7c('0x1d')](_0x468e49)[_0x6b7c('0x1e')](_0x5deed1);}};}function respondWithFilteredResult(_0x549c14,_0x9401e7){return function(_0xc2c326){if(_0xc2c326){var _0xef9fe0=typeof _0x9401e7[_0x6b7c('0x1f')]===_0x6b7c('0x20')&&typeof _0x9401e7[_0x6b7c('0x21')]===_0x6b7c('0x20');var _0x22de93=_0xc2c326[_0x6b7c('0x22')];var _0xeed763=_0xef9fe0?0x0:_0x9401e7[_0x6b7c('0x1f')];var _0x32c2e3=_0xef9fe0?_0xc2c326[_0x6b7c('0x22')]:_0x9401e7[_0x6b7c('0x1f')]+_0x9401e7[_0x6b7c('0x21')];var _0x130c8b;if(_0x32c2e3>=_0x22de93){_0x32c2e3=_0x22de93;_0x130c8b=0xc8;}else{_0x130c8b=0xce;}_0x549c14[_0x6b7c('0x1d')](_0x130c8b);return _0x549c14[_0x6b7c('0x23')](_0x6b7c('0x24'),_0xeed763+'-'+_0x32c2e3+'/'+_0x22de93)[_0x6b7c('0x1e')](_0xc2c326);}return null;};}function patchUpdates(_0x4e595c){return function(_0x3bec52){try{jsonpatch['apply'](_0x3bec52,_0x4e595c,!![]);}catch(_0x34370f){return BPromise['reject'](_0x34370f);}return _0x3bec52[_0x6b7c('0x25')]();};}function saveUpdates(_0x4da17c,_0x514dda){return function(_0x471c4b){if(_0x471c4b){return _0x471c4b[_0x6b7c('0x26')](_0x4da17c)[_0x6b7c('0x27')](function(_0x591e94){return _0x591e94;});}return null;};}function removeEntity(_0x294cbc,_0x3a60d1){return function(_0x402b95){if(_0x402b95){return _0x402b95['destroy']()[_0x6b7c('0x27')](function(){_0x294cbc[_0x6b7c('0x1d')](0xcc)[_0x6b7c('0x1c')]();});}};}function handleEntityNotFound(_0x299e90,_0x28589e){return function(_0xeb4938){if(!_0xeb4938){_0x299e90['sendStatus'](0x194);}return _0xeb4938;};}function handleError(_0x598cb5,_0x54f861){_0x54f861=_0x54f861||0x1f4;return function(_0x3109f4){logger[_0x6b7c('0x28')](_0x3109f4[_0x6b7c('0x29')]);if(_0x3109f4[_0x6b7c('0x2a')]){delete _0x3109f4[_0x6b7c('0x2a')];}_0x598cb5[_0x6b7c('0x1d')](_0x54f861)[_0x6b7c('0x2b')](_0x3109f4);};}exports['index']=function(_0x5c6aaa,_0x3f2077){var _0x5de3c9={},_0x5844f8={},_0x5c79cc={'count':0x0,'rows':[]};var _0x16aa9f=_[_0x6b7c('0x2c')](db['VoiceRecording'][_0x6b7c('0x2d')],function(_0x4c919b){return{'name':_0x4c919b[_0x6b7c('0x2e')],'type':_0x4c919b[_0x6b7c('0x2f')][_0x6b7c('0x30')]};});_0x5844f8[_0x6b7c('0x31')]=_[_0x6b7c('0x32')](_[_0x6b7c('0x2c')](_0x16aa9f,_0x6b7c('0x2a')),['format']);_0x5844f8[_0x6b7c('0x33')]=_['keys'](_0x5c6aaa[_0x6b7c('0x33')]);_0x5844f8['filters']=_[_0x6b7c('0x34')](_0x5844f8[_0x6b7c('0x31')],_0x5844f8[_0x6b7c('0x33')]);_0x5de3c9[_0x6b7c('0x35')]=_['intersection'](_0x5844f8['model'],qs['fields'](_0x5c6aaa[_0x6b7c('0x33')][_0x6b7c('0x36')]));_0x5de3c9[_0x6b7c('0x35')]=_0x5de3c9[_0x6b7c('0x35')]['length']?_0x5de3c9[_0x6b7c('0x35')]:_0x5844f8[_0x6b7c('0x31')];if(!_0x5c6aaa[_0x6b7c('0x33')][_0x6b7c('0x37')](_0x6b7c('0x38'))){_0x5de3c9[_0x6b7c('0x21')]=qs[_0x6b7c('0x21')](_0x5c6aaa[_0x6b7c('0x33')][_0x6b7c('0x21')]);_0x5de3c9[_0x6b7c('0x1f')]=qs[_0x6b7c('0x1f')](_0x5c6aaa[_0x6b7c('0x33')]['offset']);}_0x5de3c9[_0x6b7c('0x39')]=qs[_0x6b7c('0x3a')](_0x5c6aaa[_0x6b7c('0x33')][_0x6b7c('0x3a')]);_0x5de3c9[_0x6b7c('0x3b')]=qs[_0x6b7c('0x3c')](_[_0x6b7c('0x3d')](_0x5c6aaa['query'],_0x5844f8[_0x6b7c('0x3c')]),_0x16aa9f);if(_0x5c6aaa[_0x6b7c('0x33')][_0x6b7c('0x3e')]){_0x5de3c9[_0x6b7c('0x3b')]=_['merge'](_0x5de3c9['where'],{'$or':_[_0x6b7c('0x2c')](_0x16aa9f,function(_0x51c6c8){if(_0x51c6c8[_0x6b7c('0x2f')]!==_0x6b7c('0x3f')){var _0x4e2a73={};_0x4e2a73[_0x51c6c8[_0x6b7c('0x2a')]]={'$like':'%'+_0x5c6aaa[_0x6b7c('0x33')][_0x6b7c('0x3e')]+'%'};return _0x4e2a73;}})});}_0x5de3c9=_[_0x6b7c('0x40')]({},_0x5de3c9,_0x5c6aaa['options']);var _0x4ead0a={'where':_0x5de3c9[_0x6b7c('0x3b')]};return db[_0x6b7c('0x41')][_0x6b7c('0x22')](_0x4ead0a)['then'](function(_0x47894a){_0x5c79cc[_0x6b7c('0x22')]=_0x47894a;if(_0x5c6aaa[_0x6b7c('0x33')][_0x6b7c('0x42')]){_0x5de3c9['include']=[{'all':!![]}];}return db[_0x6b7c('0x41')]['findAll'](_0x5de3c9);})[_0x6b7c('0x27')](function(_0x1cd7a2){_0x5c79cc[_0x6b7c('0x43')]=_0x1cd7a2;return _0x5c79cc;})['then'](respondWithFilteredResult(_0x3f2077,_0x5de3c9))['catch'](handleError(_0x3f2077,null));};exports['show']=function(_0x114e4e,_0x3f7415){var _0x15aff7={'raw':![],'where':{'id':_0x114e4e[_0x6b7c('0x44')]['id']}},_0x27204a={};_0x27204a[_0x6b7c('0x31')]=_[_0x6b7c('0x45')](db[_0x6b7c('0x41')]['rawAttributes']);_0x27204a[_0x6b7c('0x33')]=_['keys'](_0x114e4e[_0x6b7c('0x33')]);_0x27204a[_0x6b7c('0x3c')]=_[_0x6b7c('0x34')](_0x27204a[_0x6b7c('0x31')],_0x27204a[_0x6b7c('0x33')]);_0x15aff7[_0x6b7c('0x35')]=_[_0x6b7c('0x34')](_0x27204a[_0x6b7c('0x31')],qs[_0x6b7c('0x36')](_0x114e4e[_0x6b7c('0x33')][_0x6b7c('0x36')]));_0x15aff7[_0x6b7c('0x35')]=_0x15aff7[_0x6b7c('0x35')][_0x6b7c('0x46')]?_0x15aff7['attributes']:_0x27204a[_0x6b7c('0x31')];if(_0x114e4e[_0x6b7c('0x33')]['includeAll']){_0x15aff7[_0x6b7c('0x47')]=[{'all':!![]}];}_0x15aff7=_[_0x6b7c('0x40')]({},_0x15aff7,_0x114e4e['options']);return db['VoiceRecording'][_0x6b7c('0x48')](_0x15aff7)[_0x6b7c('0x27')](handleEntityNotFound(_0x3f7415,null))['then'](respondWithResult(_0x3f7415,null))[_0x6b7c('0x49')](handleError(_0x3f7415,null));};exports[_0x6b7c('0x4a')]=function(_0x46ed3c,_0x52fd0b){return db[_0x6b7c('0x41')][_0x6b7c('0x4a')](_0x46ed3c['body'],{})['then'](respondWithResult(_0x52fd0b,0xc9))['catch'](handleError(_0x52fd0b,null));};exports[_0x6b7c('0x26')]=function(_0x8e796,_0x1d696a){if(_0x8e796[_0x6b7c('0x4b')]['id']){delete _0x8e796[_0x6b7c('0x4b')]['id'];}return db[_0x6b7c('0x41')][_0x6b7c('0x48')]({'where':{'id':_0x8e796[_0x6b7c('0x44')]['id']}})[_0x6b7c('0x27')](handleEntityNotFound(_0x1d696a,null))[_0x6b7c('0x27')](saveUpdates(_0x8e796[_0x6b7c('0x4b')],null))[_0x6b7c('0x27')](respondWithResult(_0x1d696a,null))[_0x6b7c('0x49')](handleError(_0x1d696a,null));};exports[_0x6b7c('0x4c')]=function(_0xe9bf06,_0x23c3bc){return db[_0x6b7c('0x41')][_0x6b7c('0x4c')]()[_0x6b7c('0x27')](respondWithResult(_0x23c3bc,null))[_0x6b7c('0x49')](handleError(_0x23c3bc,null));};exports[_0x6b7c('0x4d')]=function(_0x21f87a,_0x512099,_0x1ed924){var _0x214f16=require(_0x6b7c('0x4e'));var _0x23d10b=![];var _0x317237={};if(_0x21f87a[_0x6b7c('0x33')][_0x6b7c('0x2f')]&&_0x21f87a['query'][_0x6b7c('0x2f')]===_0x6b7c('0x4f')){_0x317237[_0x6b7c('0x4f')]=_0x21f87a[_0x6b7c('0x44')]['id'];}else{_0x317237['id']=_0x21f87a[_0x6b7c('0x44')]['id'];}return db[_0x6b7c('0x41')][_0x6b7c('0x48')]({'where':_0x317237,'attributes':['id',_0x6b7c('0x50')],'raw':!![]})[_0x6b7c('0x27')](handleEntityNotFound(_0x512099,null))[_0x6b7c('0x27')](function(_0x23b9c8){if(_0x23b9c8){var _0x5cfb27=_0x23b9c8[_0x6b7c('0x50')];var _0x763d1=util['format'](_0x6b7c('0x51'),_0x5cfb27);if(fs['existsSync'](_0x763d1)){_0x23d10b=!![];return _0x214f16[_0x6b7c('0x52')](_0x763d1,_0x5cfb27,config[_0x6b7c('0x53')][_0x6b7c('0x54')])[_0x6b7c('0x27')](function(){return _0x23b9c8;});}return _0x23b9c8;}})[_0x6b7c('0x27')](function(_0x3e713){if(_0x3e713){var _0x2aa515=_0x3e713[_0x6b7c('0x50')];if(!fs['existsSync'](_0x2aa515)){throw new db[(_0x6b7c('0x55'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x3e713['filename']){return _0x512099[_0x6b7c('0x4d')](_0x2aa515,_0x3e713[_0x6b7c('0x56')]+path[_0x6b7c('0x57')](_0x2aa515),function(){if(_0x23d10b){fs[_0x6b7c('0x58')](_0x2aa515);}});}else{return _0x512099[_0x6b7c('0x4d')](_0x2aa515,function(_0x27238){if(_0x23d10b){fs[_0x6b7c('0x58')](_0x2aa515);}});}}})['catch'](function(_0x5b9275){if(_0x5b9275[_0x6b7c('0x59')]===_0x6b7c('0x5a')){_0x512099[_0x6b7c('0x1d')](0x194)[_0x6b7c('0x2b')]('Not\x20found');}else{return handleError(_0x512099,null);}});};exports[_0x6b7c('0x5b')]=function(_0x173a87,_0x4dbcf6,_0x1759b3){var _0x403a33=require(_0x6b7c('0x4e'));var _0x2fe971=![];var _0x4c91e7={'$and':[db['sequelize']['where'](db[_0x6b7c('0x5c')]['fn'](_0x6b7c('0x5d'),db[_0x6b7c('0x5c')][_0x6b7c('0x5e')](_0x6b7c('0x4f'))),_0x173a87['query'][_0x6b7c('0x5f')])]};if(_0x173a87[_0x6b7c('0x33')][_0x6b7c('0x2f')]&&_0x173a87['query'][_0x6b7c('0x2f')]==='uniqueid'){_0x4c91e7[_0x6b7c('0x60')]['push']({'uniqueid':_0x173a87['params']['id']});}else{_0x4c91e7[_0x6b7c('0x60')][_0x6b7c('0x61')]({'id':_0x173a87[_0x6b7c('0x44')]['id']});}return db['VoiceRecording']['find']({'where':_0x4c91e7,'attributes':['id',_0x6b7c('0x50')],'raw':!![]})[_0x6b7c('0x27')](handleEntityNotFound(_0x4dbcf6,null))['then'](function(_0x26d6ba){if(_0x26d6ba){var _0x3d1c40=util[_0x6b7c('0x62')](_0x6b7c('0x51'),_0x26d6ba[_0x6b7c('0x50')]);if(fs['existsSync'](_0x3d1c40)){_0x2fe971=!![];return _0x403a33['decryptFile'](_0x3d1c40,_0x26d6ba[_0x6b7c('0x50')],config['secrets']['recording'])['then'](function(){return _0x26d6ba;});}return _0x26d6ba;}})[_0x6b7c('0x27')](function(_0x5a2d50){if(_0x5a2d50){if(!fs[_0x6b7c('0x63')](_0x5a2d50[_0x6b7c('0x50')])){throw new db['Sequelize'][(_0x6b7c('0x64'))]('VoiceRecording\x20not\x20found');}if(_0x5a2d50[_0x6b7c('0x56')]){return _0x4dbcf6[_0x6b7c('0x4d')](_0x5a2d50['value'],_0x5a2d50[_0x6b7c('0x56')]+path[_0x6b7c('0x57')](_0x5a2d50[_0x6b7c('0x50')]),function(){if(_0x2fe971){fs[_0x6b7c('0x58')](_0x5a2d50[_0x6b7c('0x50')]);}});}else{return _0x4dbcf6['download'](_0x5a2d50['value'],function(_0x831dce){if(_0x2fe971){fs['unlink'](_0x5a2d50[_0x6b7c('0x50')]);}});}}})[_0x6b7c('0x49')](handleError(_0x4dbcf6,null));};exports[_0x6b7c('0x65')]=function(_0x1041a4,_0x4dac45){return db[_0x6b7c('0x41')][_0x6b7c('0x48')]({'where':{'id':_0x1041a4[_0x6b7c('0x44')]['id']}})['then'](function(_0x51a04f){if(_[_0x6b7c('0x66')](_0x51a04f)){throw new ReferenceError(_0x6b7c('0x67'));}return _0x51a04f;})['then'](function(_0x365bd9){var _0x411bc7=_0x365bd9['value'];logger[_0x6b7c('0x68')](_0x6b7c('0x69'),_0x411bc7);if(!_[_0x6b7c('0x66')](_0x365bd9[_0x6b7c('0x50')])&&fs[_0x6b7c('0x63')](_0x411bc7)){logger[_0x6b7c('0x68')](_0x6b7c('0x6a')+_0x411bc7+_0x6b7c('0x6b'));fs[_0x6b7c('0x6c')](_0x411bc7);}_0x411bc7=_0x411bc7+_0x6b7c('0x6d');if(!_[_0x6b7c('0x66')](_0x365bd9[_0x6b7c('0x50')])&&fs[_0x6b7c('0x63')](_0x411bc7)){logger[_0x6b7c('0x68')](_0x6b7c('0x6a')+_0x411bc7+_0x6b7c('0x6b'));fs[_0x6b7c('0x6c')](_0x411bc7);}return _0x365bd9;})[_0x6b7c('0x27')](function(_0x7e06c0){if(!_0x7e06c0)throw new InternalError();return _0x7e06c0[_0x6b7c('0x65')]();})[_0x6b7c('0x27')](function(){_0x4dac45[_0x6b7c('0x1d')](0xcc)[_0x6b7c('0x1c')]();})['catch'](handleError(_0x4dac45,null));};function getBucketslist(_0x504665,_0x3802f9,_0x50b167){return new Promise(function(_0xee8b6b,_0x2b92ff){var _0x3af2cd=new AWS['S3']({'accessKeyId':_0x3802f9,'secretAccessKey':_0x504665,'region':_0x50b167});_0x3af2cd[_0x6b7c('0x6e')]({},function(_0x2a482d,_0x12f903){if(_0x2a482d){return _0x2b92ff(_0x2a482d);}else{return _0xee8b6b(_0x12f903);}});});}function createBucket(_0x96e75f,_0x577dc1,_0x4bbf5b,_0x87548d){return new Promise(function(_0x4a0c84,_0x47c30f){var _0x1f81a3=new AWS['S3']({'accessKeyId':_0x577dc1,'secretAccessKey':_0x96e75f,'region':_0x4bbf5b});_0x1f81a3['createBucket']({'Bucket':_0x87548d},function(_0x1f9fc,_0x4b865c){if(_0x1f9fc){return _0x47c30f(_0x1f9fc);}else{return _0x4a0c84(_0x4b865c);}});});}function uploadFile(_0x8a3559,_0x30cbd7,_0x1b2bb8,_0x2004b4,_0x21fd85,_0x2c1d7f){return new Promise(function(_0xa36120,_0x40cafb){var _0x5c30b3=new AWS['S3']({'accessKeyId':_0x30cbd7,'secretAccessKey':_0x8a3559,'region':_0x1b2bb8});_0x5c30b3[_0x6b7c('0x6f')]({'Bucket':_0x2004b4,'Key':_0x21fd85,'Body':_0x2c1d7f},function(_0x216dd2,_0x284f6f){if(_0x216dd2){return _0x40cafb(_0x216dd2);}else{return _0xa36120(_0x284f6f);}});});}function startTranscribe(_0x3b0120,_0x3f0473,_0x4d5006,_0x19f7ca,_0x27a9e1,_0x58c874){return new Promise(function(_0x371801,_0x1a4a2a){var _0x518072=new AWS['TranscribeService']({'accessKeyId':_0x3f0473,'secretAccessKey':_0x3b0120,'region':_0x4d5006});_0x518072[_0x6b7c('0x70')]({'TranscriptionJobName':_0x19f7ca,'LanguageCode':_0x27a9e1,'Media':{'MediaFileUri':_0x58c874}},function(_0x4efe8c,_0x1064c0){if(_0x4efe8c){return _0x1a4a2a(_0x4efe8c);}else{return _0x371801(_0x1064c0);}});});}function transcribe(_0x58c5c2,_0x2a0a9e,_0x520d24,_0x4577d3,_0x39f34b,_0x2a3b43,_0x31cd1b){return new Promise(function(_0x6d95ba,_0x7fae77){var _0x44897a={};logger[_0x6b7c('0x68')](util[_0x6b7c('0x62')](_0x6b7c('0x71'),_0x58c5c2,_0x39f34b));return uploadFile(_0x2a0a9e,_0x520d24,_0x4577d3,_0x39f34b,path[_0x6b7c('0x72')](_0x2a3b43),fs['readFileSync'](_0x2a3b43))['then'](function(_0x1ae02f){logger[_0x6b7c('0x68')](util['format'](_0x6b7c('0x73'),_0x58c5c2,_0x39f34b,_0x1ae02f['Location']));_0x44897a[_0x6b7c('0x74')]=_0x1ae02f['Bucket'];_0x44897a['location']=_0x1ae02f['Location'];logger[_0x6b7c('0x68')](util[_0x6b7c('0x62')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x58c5c2));return startTranscribe(_0x2a0a9e,_0x520d24,_0x4577d3,uuidv4(),_0x31cd1b,_0x1ae02f['Location']);})[_0x6b7c('0x27')](function(_0x9ce7f){logger[_0x6b7c('0x68')](util['format'](_0x6b7c('0x75'),_0x58c5c2,_0x9ce7f[_0x6b7c('0x76')][_0x6b7c('0x77')]));_0x44897a['transcribeName']=_0x9ce7f[_0x6b7c('0x76')][_0x6b7c('0x77')];_0x44897a['transcribeStatus']=_0x9ce7f['TranscriptionJob'][_0x6b7c('0x78')];return _0x6d95ba(_0x44897a);})[_0x6b7c('0x49')](function(_0x27e6f8){return _0x7fae77(_0x27e6f8);});});}exports[_0x6b7c('0x79')]=function(_0x25ce9b,_0x112557,_0x3720a0){var _0x5cfb9e;var _0x410228;var _0x3bf2b9;var _0x24e603=require(_0x6b7c('0x4e'));return db[_0x6b7c('0x41')]['findOne']({'where':{'id':_0x25ce9b['params']['id']}})[_0x6b7c('0x27')](function(_0x3dcdd5){if(_0x3dcdd5){var _0x57d9ef=util[_0x6b7c('0x62')](_0x6b7c('0x51'),_0x3dcdd5[_0x6b7c('0x50')]);if(fs[_0x6b7c('0x63')](_0x57d9ef)){cypher=!![];return _0x24e603[_0x6b7c('0x52')](_0x57d9ef,_0x3dcdd5[_0x6b7c('0x50')],config[_0x6b7c('0x53')]['recording'])['then'](function(){return _0x3dcdd5;});}return _0x3dcdd5;}})[_0x6b7c('0x27')](function(_0x271239){if(!_0x271239){throw new db[(_0x6b7c('0x55'))][(_0x6b7c('0x64'))](_0x6b7c('0x7a'));}_0x410228=_0x271239;return db[_0x6b7c('0x7b')][_0x6b7c('0x7c')]({'where':{'id':0x1}});})[_0x6b7c('0x27')](handleEntityNotFound(_0x112557,null))['then'](function(_0x171680){if(_0x171680){_0x5cfb9e=_0x171680;if(!_0x5cfb9e['transcribe']||!_0x5cfb9e[_0x6b7c('0x7d')]||!_0x5cfb9e[_0x6b7c('0x7e')]||!_0x5cfb9e['language']||!_0x5cfb9e[_0x6b7c('0x74')]){throw new db[(_0x6b7c('0x55'))][(_0x6b7c('0x64'))](_0x6b7c('0x7f'));}if(_0x25ce9b[_0x6b7c('0x4b')][_0x6b7c('0x80')]&&(!_0x5cfb9e['sentiment']||!_0x5cfb9e[_0x6b7c('0x81')]||!_0x5cfb9e[_0x6b7c('0x82')]||!_0x5cfb9e['language']||!_0x5cfb9e[_0x6b7c('0x74')])){throw new db[(_0x6b7c('0x55'))][(_0x6b7c('0x64'))](_0x6b7c('0x83'));}return db[_0x6b7c('0x84')][_0x6b7c('0x7c')]({'where':{'id':_0x5cfb9e[_0x6b7c('0x7d')]}});}})[_0x6b7c('0x27')](function(_0x336214){if(!_0x336214){throw new db[(_0x6b7c('0x55'))]['ValidationError'](_0x6b7c('0x85'));}if(!_0x336214['data1']||!_0x336214[_0x6b7c('0x86')]){throw new db['Sequelize'][(_0x6b7c('0x64'))](_0x6b7c('0x87'));}_0x3bf2b9=_0x336214;return getBucketslist(_0x3bf2b9['data1'],_0x3bf2b9['data2'],_0x5cfb9e['transcribeRegion']);})[_0x6b7c('0x27')](function(_0x5e665d){if(_0x5e665d&&_0x5e665d[_0x6b7c('0x88')]){var _0x5bdcfb=_[_0x6b7c('0x48')](_0x5e665d[_0x6b7c('0x88')],function(_0xf440f5){return _0xf440f5[_0x6b7c('0x89')]===_0x5cfb9e[_0x6b7c('0x74')];});if(!_0x5bdcfb){logger[_0x6b7c('0x68')](util[_0x6b7c('0x62')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x25ce9b[_0x6b7c('0x44')]['id'],_0x5cfb9e['bucket']));return createBucket(_0x3bf2b9['data1'],_0x3bf2b9[_0x6b7c('0x86')],_0x5cfb9e[_0x6b7c('0x7e')],_0x5cfb9e[_0x6b7c('0x74')]);}logger[_0x6b7c('0x68')](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x25ce9b[_0x6b7c('0x44')]['id'],_0x5cfb9e[_0x6b7c('0x74')]));return;}})[_0x6b7c('0x27')](function(_0x22d270){if(_0x410228['transcribeStatus']===_0x6b7c('0x8a')){return transcribe(_0x25ce9b[_0x6b7c('0x44')]['id'],_0x3bf2b9[_0x6b7c('0x8b')],_0x3bf2b9[_0x6b7c('0x86')],_0x5cfb9e['transcribeRegion'],_0x5cfb9e[_0x6b7c('0x74')],_0x410228[_0x6b7c('0x50')],_0x5cfb9e['language']);}else{logger['info'](util[_0x6b7c('0x62')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x25ce9b[_0x6b7c('0x44')]['id']));return{'transcribeStatus':_0x6b7c('0x8c')};}})[_0x6b7c('0x27')](function(_0x306901){if(_0x306901){_0x306901[_0x6b7c('0x8d')]=_0x25ce9b[_0x6b7c('0x4b')][_0x6b7c('0x80')];return _0x410228['updateAttributes'](_0x306901);}})[_0x6b7c('0x27')](respondWithResult(_0x112557,null))[_0x6b7c('0x49')](handleError(_0x112557,null));};function writeFile(_0x471c82,_0x57cdf1){return new Promise(function(_0x4fa0af,_0x8fb70e){fs['writeFile'](_0x57cdf1,_0x471c82,function(_0x3de596,_0x34c488){if(_0x3de596){return _0x8fb70e(_0x3de596);}else{return _0x4fa0af(_0x34c488);}});});}exports[_0x6b7c('0x8e')]=function(_0x3fe7d3,_0x443187,_0x4f6e72){return db[_0x6b7c('0x41')]['findOne']({'where':{'id':_0x3fe7d3['params']['id']}})[_0x6b7c('0x27')](handleEntityNotFound(_0x443187))[_0x6b7c('0x27')](function(_0xcb1891){if(_0xcb1891&&_0xcb1891[_0x6b7c('0x8f')]){var _0x41a0ab=_0xcb1891[_0x6b7c('0x8f')];var _0x23526c=config['root']+'/server/files/transcribes/transcribe_'+_0xcb1891['id']+_0x6b7c('0x90');if(fs[_0x6b7c('0x63')](_0x23526c)){return _0x23526c;}return writeFile(_0x41a0ab,_0x23526c)[_0x6b7c('0x27')](function(){return _0x23526c;});}else{throw new db['Sequelize'][(_0x6b7c('0x64'))]('Transcript\x20not\x20available');}})[_0x6b7c('0x27')](function(_0xb4326d){return _0x443187['download'](_0xb4326d);})[_0x6b7c('0x49')](handleError(_0x443187));};
\ No newline at end of file
+var _0x9e8f=['create','body','find','describe','download','../../components/encryptor','value','existsSync','decryptFile','Sequelize','VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','sequelize','MD5','uniqueid','token','$and','push','%s.cypher','secrets','recording','ValidationError','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','runTranscribe','findOne','transcribe','transcribeRegion','bucket','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','Sentiment\x20Analysis\x20not\x20configured','transcribeAccountId','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','language','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','fileText','root','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','papaparse','aws-sdk','uuid/v4','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','stack','name','send','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','options','includeAll','rows','catch','show','params','include'];(function(_0xdabc03,_0x3cfdcf){var _0x10c7ad=function(_0x461492){while(--_0x461492){_0xdabc03['push'](_0xdabc03['shift']());}};_0x10c7ad(++_0x3cfdcf);}(_0x9e8f,0x175));var _0xf9e8=function(_0x50ee8a,_0x1b7e6f){_0x50ee8a=_0x50ee8a-0x0;var _0x2f2281=_0x9e8f[_0x50ee8a];return _0x2f2281;};'use strict';var emlformat=require(_0xf9e8('0x0'));var rimraf=require(_0xf9e8('0x1'));var zipdir=require(_0xf9e8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf9e8('0x3'));var BPromise=require(_0xf9e8('0x4'));var Mustache=require(_0xf9e8('0x5'));var util=require(_0xf9e8('0x6'));var path=require(_0xf9e8('0x7'));var sox=require(_0xf9e8('0x8'));var csv=require(_0xf9e8('0x9'));var ejs=require(_0xf9e8('0xa'));var fs=require('fs');var fs_extra=require(_0xf9e8('0xb'));var _=require(_0xf9e8('0xc'));var squel=require('squel');var crypto=require(_0xf9e8('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf9e8('0x9'));var querystring=require('querystring');var Papa=require(_0xf9e8('0xe'));var AWS=require(_0xf9e8('0xf'));var uuidv4=require(_0xf9e8('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf9e8('0x11'));var as=require(_0xf9e8('0x12'));var hardwareService=require(_0xf9e8('0x13'));var logger=require(_0xf9e8('0x14'))(_0xf9e8('0x15'));var utils=require(_0xf9e8('0x16'));var config=require(_0xf9e8('0x17'));var licenseUtil=require(_0xf9e8('0x18'));var db=require(_0xf9e8('0x19'))['db'];function respondWithStatusCode(_0x55fbc8,_0x434f2c){_0x434f2c=_0x434f2c||0xcc;return function(_0x4bbaf3){if(_0x4bbaf3){return _0x55fbc8[_0xf9e8('0x1a')](_0x434f2c);}return _0x55fbc8[_0xf9e8('0x1b')](_0x434f2c)[_0xf9e8('0x1c')]();};}function respondWithResult(_0x245c29,_0x1b934c){_0x1b934c=_0x1b934c||0xc8;return function(_0x3722e5){if(_0x3722e5){return _0x245c29[_0xf9e8('0x1b')](_0x1b934c)['json'](_0x3722e5);}};}function respondWithFilteredResult(_0x2af74b,_0x471136){return function(_0x1739e4){if(_0x1739e4){var _0x3ba52e=typeof _0x471136['offset']===_0xf9e8('0x1d')&&typeof _0x471136['limit']===_0xf9e8('0x1d');var _0x60f14f=_0x1739e4[_0xf9e8('0x1e')];var _0x2c7278=_0x3ba52e?0x0:_0x471136['offset'];var _0x8b08e4=_0x3ba52e?_0x1739e4['count']:_0x471136[_0xf9e8('0x1f')]+_0x471136[_0xf9e8('0x20')];var _0x59e4b3;if(_0x8b08e4>=_0x60f14f){_0x8b08e4=_0x60f14f;_0x59e4b3=0xc8;}else{_0x59e4b3=0xce;}_0x2af74b['status'](_0x59e4b3);return _0x2af74b[_0xf9e8('0x21')]('Content-Range',_0x2c7278+'-'+_0x8b08e4+'/'+_0x60f14f)['json'](_0x1739e4);}return null;};}function patchUpdates(_0x539e0c){return function(_0x44c1b3){try{jsonpatch[_0xf9e8('0x22')](_0x44c1b3,_0x539e0c,!![]);}catch(_0x5cc182){return BPromise[_0xf9e8('0x23')](_0x5cc182);}return _0x44c1b3[_0xf9e8('0x24')]();};}function saveUpdates(_0x5b944d,_0x1d9d5c){return function(_0x312b0b){if(_0x312b0b){return _0x312b0b[_0xf9e8('0x25')](_0x5b944d)[_0xf9e8('0x26')](function(_0x1fcade){return _0x1fcade;});}return null;};}function removeEntity(_0x13444c,_0x2914e3){return function(_0x9d0dcf){if(_0x9d0dcf){return _0x9d0dcf[_0xf9e8('0x27')]()['then'](function(){_0x13444c[_0xf9e8('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9c85c2,_0x538285){return function(_0x5759eb){if(!_0x5759eb){_0x9c85c2['sendStatus'](0x194);}return _0x5759eb;};}function handleError(_0x4055c9,_0xd98389){_0xd98389=_0xd98389||0x1f4;return function(_0x4261a1){logger['error'](_0x4261a1[_0xf9e8('0x28')]);if(_0x4261a1[_0xf9e8('0x29')]){delete _0x4261a1[_0xf9e8('0x29')];}_0x4055c9['status'](_0xd98389)[_0xf9e8('0x2a')](_0x4261a1);};}exports[_0xf9e8('0x2b')]=function(_0x593f95,_0x20683c){var _0x58fa26={},_0xcbf9a7={},_0x3f20b0={'count':0x0,'rows':[]};var _0x3564d7=_[_0xf9e8('0x2c')](db[_0xf9e8('0x2d')]['rawAttributes'],function(_0x4c656b){return{'name':_0x4c656b[_0xf9e8('0x2e')],'type':_0x4c656b[_0xf9e8('0x2f')][_0xf9e8('0x30')]};});_0xcbf9a7[_0xf9e8('0x31')]=_[_0xf9e8('0x32')](_[_0xf9e8('0x2c')](_0x3564d7,_0xf9e8('0x29')),[_0xf9e8('0x33')]);_0xcbf9a7[_0xf9e8('0x34')]=_[_0xf9e8('0x35')](_0x593f95[_0xf9e8('0x34')]);_0xcbf9a7[_0xf9e8('0x36')]=_[_0xf9e8('0x37')](_0xcbf9a7['model'],_0xcbf9a7[_0xf9e8('0x34')]);_0x58fa26[_0xf9e8('0x38')]=_[_0xf9e8('0x37')](_0xcbf9a7[_0xf9e8('0x31')],qs[_0xf9e8('0x39')](_0x593f95['query'][_0xf9e8('0x39')]));_0x58fa26[_0xf9e8('0x38')]=_0x58fa26[_0xf9e8('0x38')][_0xf9e8('0x3a')]?_0x58fa26[_0xf9e8('0x38')]:_0xcbf9a7['model'];if(!_0x593f95['query'][_0xf9e8('0x3b')]('nolimit')){_0x58fa26[_0xf9e8('0x20')]=qs[_0xf9e8('0x20')](_0x593f95[_0xf9e8('0x34')][_0xf9e8('0x20')]);_0x58fa26['offset']=qs[_0xf9e8('0x1f')](_0x593f95[_0xf9e8('0x34')][_0xf9e8('0x1f')]);}_0x58fa26['order']=qs[_0xf9e8('0x3c')](_0x593f95[_0xf9e8('0x34')][_0xf9e8('0x3c')]);_0x58fa26[_0xf9e8('0x3d')]=qs[_0xf9e8('0x36')](_['pick'](_0x593f95[_0xf9e8('0x34')],_0xcbf9a7[_0xf9e8('0x36')]),_0x3564d7);if(_0x593f95[_0xf9e8('0x34')][_0xf9e8('0x3e')]){_0x58fa26[_0xf9e8('0x3d')]=_['merge'](_0x58fa26['where'],{'$or':_['map'](_0x3564d7,function(_0x58b617){if(_0x58b617[_0xf9e8('0x2f')]!=='VIRTUAL'){var _0x39dfef={};_0x39dfef[_0x58b617[_0xf9e8('0x29')]]={'$like':'%'+_0x593f95[_0xf9e8('0x34')]['filter']+'%'};return _0x39dfef;}})});}_0x58fa26=_[_0xf9e8('0x3f')]({},_0x58fa26,_0x593f95[_0xf9e8('0x40')]);var _0x20ddf7={'where':_0x58fa26[_0xf9e8('0x3d')]};return db[_0xf9e8('0x2d')]['count'](_0x20ddf7)['then'](function(_0xc43b9b){_0x3f20b0[_0xf9e8('0x1e')]=_0xc43b9b;if(_0x593f95[_0xf9e8('0x34')][_0xf9e8('0x41')]){_0x58fa26['include']=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x58fa26);})[_0xf9e8('0x26')](function(_0x4442a3){_0x3f20b0[_0xf9e8('0x42')]=_0x4442a3;return _0x3f20b0;})['then'](respondWithFilteredResult(_0x20683c,_0x58fa26))[_0xf9e8('0x43')](handleError(_0x20683c,null));};exports[_0xf9e8('0x44')]=function(_0x51ac82,_0x540173){var _0x3e91e1={'raw':![],'where':{'id':_0x51ac82[_0xf9e8('0x45')]['id']}},_0x5bf451={};_0x5bf451['model']=_['keys'](db[_0xf9e8('0x2d')]['rawAttributes']);_0x5bf451[_0xf9e8('0x34')]=_[_0xf9e8('0x35')](_0x51ac82[_0xf9e8('0x34')]);_0x5bf451[_0xf9e8('0x36')]=_[_0xf9e8('0x37')](_0x5bf451[_0xf9e8('0x31')],_0x5bf451[_0xf9e8('0x34')]);_0x3e91e1['attributes']=_[_0xf9e8('0x37')](_0x5bf451[_0xf9e8('0x31')],qs[_0xf9e8('0x39')](_0x51ac82[_0xf9e8('0x34')][_0xf9e8('0x39')]));_0x3e91e1[_0xf9e8('0x38')]=_0x3e91e1[_0xf9e8('0x38')][_0xf9e8('0x3a')]?_0x3e91e1[_0xf9e8('0x38')]:_0x5bf451[_0xf9e8('0x31')];if(_0x51ac82[_0xf9e8('0x34')][_0xf9e8('0x41')]){_0x3e91e1[_0xf9e8('0x46')]=[{'all':!![]}];}_0x3e91e1=_['merge']({},_0x3e91e1,_0x51ac82[_0xf9e8('0x40')]);return db[_0xf9e8('0x2d')]['find'](_0x3e91e1)[_0xf9e8('0x26')](handleEntityNotFound(_0x540173,null))[_0xf9e8('0x26')](respondWithResult(_0x540173,null))[_0xf9e8('0x43')](handleError(_0x540173,null));};exports[_0xf9e8('0x47')]=function(_0x9110cb,_0x387778){return db[_0xf9e8('0x2d')]['create'](_0x9110cb[_0xf9e8('0x48')],{})[_0xf9e8('0x26')](respondWithResult(_0x387778,0xc9))['catch'](handleError(_0x387778,null));};exports[_0xf9e8('0x25')]=function(_0x11197b,_0x5cf23b){if(_0x11197b[_0xf9e8('0x48')]['id']){delete _0x11197b[_0xf9e8('0x48')]['id'];}return db[_0xf9e8('0x2d')][_0xf9e8('0x49')]({'where':{'id':_0x11197b[_0xf9e8('0x45')]['id']}})[_0xf9e8('0x26')](handleEntityNotFound(_0x5cf23b,null))[_0xf9e8('0x26')](saveUpdates(_0x11197b[_0xf9e8('0x48')],null))[_0xf9e8('0x26')](respondWithResult(_0x5cf23b,null))[_0xf9e8('0x43')](handleError(_0x5cf23b,null));};exports[_0xf9e8('0x4a')]=function(_0x288ea2,_0x4bcc2e){return db[_0xf9e8('0x2d')][_0xf9e8('0x4a')]()[_0xf9e8('0x26')](respondWithResult(_0x4bcc2e,null))['catch'](handleError(_0x4bcc2e,null));};exports[_0xf9e8('0x4b')]=function(_0x191d0c,_0x26995f,_0x32e2da){var _0x3621c9=require(_0xf9e8('0x4c'));var _0x1dc0ae=![];var _0x2a14d5={};if(_0x191d0c[_0xf9e8('0x34')]['type']&&_0x191d0c[_0xf9e8('0x34')][_0xf9e8('0x2f')]==='uniqueid'){_0x2a14d5['uniqueid']=_0x191d0c[_0xf9e8('0x45')]['id'];}else{_0x2a14d5['id']=_0x191d0c[_0xf9e8('0x45')]['id'];}return db[_0xf9e8('0x2d')][_0xf9e8('0x49')]({'where':_0x2a14d5,'attributes':['id',_0xf9e8('0x4d')],'raw':!![]})[_0xf9e8('0x26')](handleEntityNotFound(_0x26995f,null))['then'](function(_0x400af1){if(_0x400af1){var _0x5619c4=_0x400af1['value'];var _0x336446=util[_0xf9e8('0x33')]('%s.cypher',_0x5619c4);if(fs[_0xf9e8('0x4e')](_0x336446)){_0x1dc0ae=!![];return _0x3621c9[_0xf9e8('0x4f')](_0x336446,_0x5619c4,config['secrets']['recording'])[_0xf9e8('0x26')](function(){return _0x400af1;});}return _0x400af1;}})['then'](function(_0x457723){if(_0x457723){var _0x2265ef=_0x457723['value'];if(!fs['existsSync'](_0x2265ef)){throw new db[(_0xf9e8('0x50'))]['ValidationError'](_0xf9e8('0x51'));}if(_0x457723[_0xf9e8('0x52')]){return _0x26995f[_0xf9e8('0x4b')](_0x2265ef,_0x457723[_0xf9e8('0x52')]+path[_0xf9e8('0x53')](_0x2265ef),function(){if(_0x1dc0ae){fs['unlink'](_0x2265ef);}});}else{return _0x26995f[_0xf9e8('0x4b')](_0x2265ef,function(_0x44ffe2){if(_0x1dc0ae){fs[_0xf9e8('0x54')](_0x2265ef);}});}}})['catch'](function(_0x146144){if(_0x146144[_0xf9e8('0x55')]===_0xf9e8('0x51')){_0x26995f[_0xf9e8('0x1b')](0x194)[_0xf9e8('0x2a')](_0xf9e8('0x56'));}else{return handleError(_0x26995f,null);}});};exports['downloads']=function(_0xb44757,_0x201a1e,_0x1b7ce7){var _0x9128e5=require(_0xf9e8('0x4c'));var _0x3b1d4b=![];var _0x549705={'$and':[db[_0xf9e8('0x57')]['where'](db[_0xf9e8('0x57')]['fn'](_0xf9e8('0x58'),db[_0xf9e8('0x57')]['col'](_0xf9e8('0x59'))),_0xb44757['query'][_0xf9e8('0x5a')])]};if(_0xb44757[_0xf9e8('0x34')][_0xf9e8('0x2f')]&&_0xb44757['query'][_0xf9e8('0x2f')]===_0xf9e8('0x59')){_0x549705[_0xf9e8('0x5b')][_0xf9e8('0x5c')]({'uniqueid':_0xb44757[_0xf9e8('0x45')]['id']});}else{_0x549705['$and'][_0xf9e8('0x5c')]({'id':_0xb44757['params']['id']});}return db['VoiceRecording'][_0xf9e8('0x49')]({'where':_0x549705,'attributes':['id',_0xf9e8('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x201a1e,null))[_0xf9e8('0x26')](function(_0x4c2b82){if(_0x4c2b82){var _0x2a1660=util[_0xf9e8('0x33')](_0xf9e8('0x5d'),_0x4c2b82[_0xf9e8('0x4d')]);if(fs[_0xf9e8('0x4e')](_0x2a1660)){_0x3b1d4b=!![];return _0x9128e5[_0xf9e8('0x4f')](_0x2a1660,_0x4c2b82[_0xf9e8('0x4d')],config[_0xf9e8('0x5e')][_0xf9e8('0x5f')])[_0xf9e8('0x26')](function(){return _0x4c2b82;});}return _0x4c2b82;}})[_0xf9e8('0x26')](function(_0x2df90d){if(_0x2df90d){if(!fs['existsSync'](_0x2df90d['value'])){throw new db[(_0xf9e8('0x50'))][(_0xf9e8('0x60'))]('VoiceRecording\x20not\x20found');}if(_0x2df90d[_0xf9e8('0x52')]){return _0x201a1e[_0xf9e8('0x4b')](_0x2df90d[_0xf9e8('0x4d')],_0x2df90d['filename']+path[_0xf9e8('0x53')](_0x2df90d[_0xf9e8('0x4d')]),function(){if(_0x3b1d4b){fs[_0xf9e8('0x54')](_0x2df90d['value']);}});}else{return _0x201a1e['download'](_0x2df90d[_0xf9e8('0x4d')],function(_0x2937ce){if(_0x3b1d4b){fs[_0xf9e8('0x54')](_0x2df90d['value']);}});}}})[_0xf9e8('0x43')](handleError(_0x201a1e,null));};exports['destroy']=function(_0x4a6d69,_0x240577){return db[_0xf9e8('0x2d')][_0xf9e8('0x49')]({'where':{'id':_0x4a6d69[_0xf9e8('0x45')]['id']}})['then'](function(_0xce4ab1){if(_[_0xf9e8('0x61')](_0xce4ab1)){throw new ReferenceError(_0xf9e8('0x62'));}return _0xce4ab1;})[_0xf9e8('0x26')](function(_0x365246){var _0x51ea72=_0x365246[_0xf9e8('0x4d')];logger[_0xf9e8('0x63')](_0xf9e8('0x64'),_0x51ea72);if(!_['isNil'](_0x365246[_0xf9e8('0x4d')])&&fs[_0xf9e8('0x4e')](_0x51ea72)){logger[_0xf9e8('0x63')](_0xf9e8('0x65')+_0x51ea72+_0xf9e8('0x66'));fs[_0xf9e8('0x67')](_0x51ea72);}_0x51ea72=_0x51ea72+_0xf9e8('0x68');if(!_['isNil'](_0x365246[_0xf9e8('0x4d')])&&fs[_0xf9e8('0x4e')](_0x51ea72)){logger['info'](_0xf9e8('0x65')+_0x51ea72+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xf9e8('0x67')](_0x51ea72);}return _0x365246;})['then'](function(_0x3a0458){if(!_0x3a0458)throw new InternalError();return _0x3a0458[_0xf9e8('0x27')]();})[_0xf9e8('0x26')](function(){_0x240577[_0xf9e8('0x1b')](0xcc)['end']();})[_0xf9e8('0x43')](handleError(_0x240577,null));};function getBucketslist(_0x29b5a1,_0x3e7dca,_0x4c7b08){return new Promise(function(_0x31eb47,_0x379694){var _0x20bc45=new AWS['S3']({'accessKeyId':_0x3e7dca,'secretAccessKey':_0x29b5a1,'region':_0x4c7b08});_0x20bc45[_0xf9e8('0x69')]({},function(_0x13ea8d,_0x501bf6){if(_0x13ea8d){return _0x379694(_0x13ea8d);}else{return _0x31eb47(_0x501bf6);}});});}function createBucket(_0x45495e,_0x44e6f4,_0x2103c4,_0x30d556){return new Promise(function(_0x23ede5,_0x504621){var _0x2fb0b7=new AWS['S3']({'accessKeyId':_0x44e6f4,'secretAccessKey':_0x45495e,'region':_0x2103c4});_0x2fb0b7[_0xf9e8('0x6a')]({'Bucket':_0x30d556},function(_0x3ce29d,_0x4cc693){if(_0x3ce29d){return _0x504621(_0x3ce29d);}else{return _0x23ede5(_0x4cc693);}});});}function uploadFile(_0x25184e,_0x34e14e,_0x49c318,_0x39bb92,_0x5e3657,_0x3cd5a2){return new Promise(function(_0x5b57d3,_0x5d6cbb){var _0x4e27b2=new AWS['S3']({'accessKeyId':_0x34e14e,'secretAccessKey':_0x25184e,'region':_0x49c318});_0x4e27b2['upload']({'Bucket':_0x39bb92,'Key':_0x5e3657,'Body':_0x3cd5a2},function(_0x208f65,_0x372bb8){if(_0x208f65){return _0x5d6cbb(_0x208f65);}else{return _0x5b57d3(_0x372bb8);}});});}function startTranscribe(_0xcda5aa,_0x599597,_0x522b42,_0x81671e,_0x12bc48,_0x245ca3){return new Promise(function(_0x292099,_0x5b0911){var _0x7a8566=new AWS[(_0xf9e8('0x6b'))]({'accessKeyId':_0x599597,'secretAccessKey':_0xcda5aa,'region':_0x522b42});_0x7a8566[_0xf9e8('0x6c')]({'TranscriptionJobName':_0x81671e,'LanguageCode':_0x12bc48,'Media':{'MediaFileUri':_0x245ca3}},function(_0x28b591,_0xe411b3){if(_0x28b591){return _0x5b0911(_0x28b591);}else{return _0x292099(_0xe411b3);}});});}function transcribe(_0x40a14d,_0x4d43ea,_0x5dc9a2,_0x1c8e57,_0x37cbb5,_0x1ca9f8,_0x1aec61){return new Promise(function(_0x4d57aa,_0x33b40f){var _0x40ed7b={};logger[_0xf9e8('0x63')](util[_0xf9e8('0x33')](_0xf9e8('0x6d'),_0x40a14d,_0x37cbb5));return uploadFile(_0x4d43ea,_0x5dc9a2,_0x1c8e57,_0x37cbb5,path[_0xf9e8('0x6e')](_0x1ca9f8),fs[_0xf9e8('0x6f')](_0x1ca9f8))[_0xf9e8('0x26')](function(_0x1ff486){logger[_0xf9e8('0x63')](util[_0xf9e8('0x33')](_0xf9e8('0x70'),_0x40a14d,_0x37cbb5,_0x1ff486['Location']));_0x40ed7b['bucket']=_0x1ff486[_0xf9e8('0x71')];_0x40ed7b[_0xf9e8('0x72')]=_0x1ff486[_0xf9e8('0x73')];logger['info'](util[_0xf9e8('0x33')](_0xf9e8('0x74'),_0x40a14d));return startTranscribe(_0x4d43ea,_0x5dc9a2,_0x1c8e57,uuidv4(),_0x1aec61,_0x1ff486[_0xf9e8('0x73')]);})[_0xf9e8('0x26')](function(_0x636ca6){logger['info'](util['format']('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x40a14d,_0x636ca6[_0xf9e8('0x75')][_0xf9e8('0x76')]));_0x40ed7b[_0xf9e8('0x77')]=_0x636ca6['TranscriptionJob'][_0xf9e8('0x76')];_0x40ed7b[_0xf9e8('0x78')]=_0x636ca6[_0xf9e8('0x75')]['TranscriptionJobStatus'];return _0x4d57aa(_0x40ed7b);})[_0xf9e8('0x43')](function(_0x4dc4cf){return _0x33b40f(_0x4dc4cf);});});}exports[_0xf9e8('0x79')]=function(_0x22d413,_0x208087,_0x4645d8){var _0x35cb41;var _0x23df17;var _0x17a57f;var _0x405f43=require(_0xf9e8('0x4c'));return db[_0xf9e8('0x2d')][_0xf9e8('0x7a')]({'where':{'id':_0x22d413[_0xf9e8('0x45')]['id']}})['then'](function(_0x7d439){if(_0x7d439){var _0x4c9409=util[_0xf9e8('0x33')](_0xf9e8('0x5d'),_0x7d439['value']);if(fs[_0xf9e8('0x4e')](_0x4c9409)){cypher=!![];return _0x405f43['decryptFile'](_0x4c9409,_0x7d439[_0xf9e8('0x4d')],config[_0xf9e8('0x5e')][_0xf9e8('0x5f')])[_0xf9e8('0x26')](function(){return _0x7d439;});}return _0x7d439;}})[_0xf9e8('0x26')](function(_0x2fef43){if(!_0x2fef43){throw new db[(_0xf9e8('0x50'))][(_0xf9e8('0x60'))]('Voice\x20Recording\x20not\x20found');}_0x23df17=_0x2fef43;return db['Setting'][_0xf9e8('0x7a')]({'where':{'id':0x1}});})[_0xf9e8('0x26')](handleEntityNotFound(_0x208087,null))['then'](function(_0x4b7e91){if(_0x4b7e91){_0x35cb41=_0x4b7e91;if(!_0x35cb41[_0xf9e8('0x7b')]||!_0x35cb41['transcribeAccountId']||!_0x35cb41[_0xf9e8('0x7c')]||!_0x35cb41['language']||!_0x35cb41[_0xf9e8('0x7d')]){throw new db[(_0xf9e8('0x50'))][(_0xf9e8('0x60'))](_0xf9e8('0x7e'));}if(_0x22d413['body'][_0xf9e8('0x7f')]&&(!_0x35cb41[_0xf9e8('0x80')]||!_0x35cb41[_0xf9e8('0x81')]||!_0x35cb41['sentimentRegion']||!_0x35cb41['language']||!_0x35cb41[_0xf9e8('0x7d')])){throw new db[(_0xf9e8('0x50'))]['ValidationError'](_0xf9e8('0x82'));}return db['CloudProvider'][_0xf9e8('0x7a')]({'where':{'id':_0x35cb41[_0xf9e8('0x83')]}});}})[_0xf9e8('0x26')](function(_0x5b675e){if(!_0x5b675e){throw new db[(_0xf9e8('0x50'))][(_0xf9e8('0x60'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5b675e[_0xf9e8('0x84')]||!_0x5b675e[_0xf9e8('0x85')]){throw new db['Sequelize'][(_0xf9e8('0x60'))](_0xf9e8('0x86'));}_0x17a57f=_0x5b675e;return getBucketslist(_0x17a57f[_0xf9e8('0x84')],_0x17a57f['data2'],_0x35cb41[_0xf9e8('0x7c')]);})['then'](function(_0x1d9303){if(_0x1d9303&&_0x1d9303['Buckets']){var _0x392ecb=_[_0xf9e8('0x49')](_0x1d9303[_0xf9e8('0x87')],function(_0x5b58e1){return _0x5b58e1['Name']===_0x35cb41[_0xf9e8('0x7d')];});if(!_0x392ecb){logger[_0xf9e8('0x63')](util[_0xf9e8('0x33')](_0xf9e8('0x88'),_0x22d413['params']['id'],_0x35cb41[_0xf9e8('0x7d')]));return createBucket(_0x17a57f[_0xf9e8('0x84')],_0x17a57f[_0xf9e8('0x85')],_0x35cb41[_0xf9e8('0x7c')],_0x35cb41[_0xf9e8('0x7d')]);}logger[_0xf9e8('0x63')](util[_0xf9e8('0x33')](_0xf9e8('0x89'),_0x22d413[_0xf9e8('0x45')]['id'],_0x35cb41[_0xf9e8('0x7d')]));return;}})['then'](function(_0x2120b6){if(_0x23df17[_0xf9e8('0x78')]===_0xf9e8('0x8a')){return transcribe(_0x22d413[_0xf9e8('0x45')]['id'],_0x17a57f[_0xf9e8('0x84')],_0x17a57f[_0xf9e8('0x85')],_0x35cb41[_0xf9e8('0x7c')],_0x35cb41[_0xf9e8('0x7d')],_0x23df17['value'],_0x35cb41[_0xf9e8('0x8b')]);}else{logger[_0xf9e8('0x63')](util[_0xf9e8('0x33')](_0xf9e8('0x8c'),_0x22d413[_0xf9e8('0x45')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0xf9e8('0x26')](function(_0x3f46b2){if(_0x3f46b2){_0x3f46b2[_0xf9e8('0x8d')]=_0x22d413[_0xf9e8('0x48')][_0xf9e8('0x7f')];return _0x23df17[_0xf9e8('0x8e')](_0x3f46b2);}})[_0xf9e8('0x26')](respondWithResult(_0x208087,null))['catch'](handleError(_0x208087,null));};function writeFile(_0x42982c,_0x1accf6){return new Promise(function(_0x508c00,_0x1eff24){fs[_0xf9e8('0x8f')](_0x1accf6,_0x42982c,function(_0x28d26d,_0x3f85d5){if(_0x28d26d){return _0x1eff24(_0x28d26d);}else{return _0x508c00(_0x3f85d5);}});});}exports['downloadTranscribe']=function(_0x5ae1ec,_0x354e17,_0x31675d){return db[_0xf9e8('0x2d')][_0xf9e8('0x7a')]({'where':{'id':_0x5ae1ec[_0xf9e8('0x45')]['id']}})[_0xf9e8('0x26')](handleEntityNotFound(_0x354e17))[_0xf9e8('0x26')](function(_0x536505){if(_0x536505&&_0x536505[_0xf9e8('0x90')]){var _0x3e0a7c=_0x536505[_0xf9e8('0x90')];var _0x343a97=config[_0xf9e8('0x91')]+_0xf9e8('0x92')+_0x536505['id']+_0xf9e8('0x93');if(fs[_0xf9e8('0x4e')](_0x343a97)){return _0x343a97;}return writeFile(_0x3e0a7c,_0x343a97)[_0xf9e8('0x26')](function(){return _0x343a97;});}else{throw new db[(_0xf9e8('0x50'))][(_0xf9e8('0x60'))]('Transcript\x20not\x20available');}})[_0xf9e8('0x26')](function(_0x4f01ab){return _0x354e17[_0xf9e8('0x4b')](_0x4f01ab);})[_0xf9e8('0x43')](handleError(_0x354e17));};
\ No newline at end of file
index c3ac353..f81bf43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b1=['define','VoiceRecording','uniqueid','transcribeStatus','./voiceRecording.attributes'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0xb6b1,0x17b));var _0x1b6b=function(_0x101a17,_0x5d047a){_0x101a17=_0x101a17-0x0;var _0x3b76ee=_0xb6b1[_0x101a17];return _0x3b76ee;};'use strict';var attributes=require(_0x1b6b('0x0'));module['exports']=function(_0x669faa,_0x4fc13d){return _0x669faa[_0x1b6b('0x1')](_0x1b6b('0x2'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0x1b6b('0x3'),'fields':['uniqueid']},{'name':_0x1b6b('0x4'),'fields':[_0x1b6b('0x4')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x682e=['./voiceRecording.attributes','exports','define','VoiceRecording','uniqueid','transcribeStatus'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x682e,0x1ce));var _0xe682=function(_0x123563,_0x2e08bb){_0x123563=_0x123563-0x0;var _0x5af0e9=_0x682e[_0x123563];return _0x5af0e9;};'use strict';var attributes=require(_0xe682('0x0'));module[_0xe682('0x1')]=function(_0x25d567,_0x12a2fe){return _0x25d567[_0xe682('0x2')](_0xe682('0x3'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0xe682('0x4'),'fields':[_0xe682('0x4')]},{'name':_0xe682('0x5'),'fields':[_0xe682('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
index e38fa38..57674e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5204=['attributes','limit','then','CreateVoiceRecording','../../components/encryptor','Setting','findOne','create','callRecordingEncryption','value','format','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','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','where'];(function(_0x2d5e63,_0x4b592b){var _0x4c9f37=function(_0x1f4a44){while(--_0x1f4a44){_0x2d5e63['push'](_0x2d5e63['shift']());}};_0x4c9f37(++_0x4b592b);}(_0x5204,0xdf));var _0x4520=function(_0x5a7d5f,_0x5695cb){_0x5a7d5f=_0x5a7d5f-0x0;var _0x5dcded=_0x5204[_0x5a7d5f];return _0x5dcded;};'use strict';var _=require(_0x4520('0x0'));var util=require(_0x4520('0x1'));var moment=require('moment');var BPromise=require(_0x4520('0x2'));var rs=require(_0x4520('0x3'));var fs=require('fs');var Redis=require(_0x4520('0x4'));var db=require(_0x4520('0x5'))['db'];var utils=require(_0x4520('0x6'));var logger=require('../../config/logger')(_0x4520('0x7'));var config=require('../../config/environment');var jayson=require(_0x4520('0x8'));var client=jayson[_0x4520('0x9')][_0x4520('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe741c2,_0x396d29,_0x446dc9){return new BPromise(function(_0x27890f,_0x55b44f){return client[_0x4520('0xb')](_0xe741c2,_0x446dc9)['then'](function(_0x168e62){logger[_0x4520('0xc')](_0x4520('0xd'),_0x396d29,_0x4520('0xe'));logger[_0x4520('0xf')](_0x4520('0x10'),_0x396d29,_0x4520('0xe'),JSON[_0x4520('0x11')](_0x168e62));if(_0x168e62[_0x4520('0x12')]){if(_0x168e62[_0x4520('0x12')][_0x4520('0x13')]===0x1f4){logger[_0x4520('0x12')](_0x4520('0xd'),_0x396d29,_0x168e62[_0x4520('0x12')][_0x4520('0x14')]);return _0x55b44f(_0x168e62[_0x4520('0x12')][_0x4520('0x14')]);}logger[_0x4520('0x12')](_0x4520('0xd'),_0x396d29,_0x168e62[_0x4520('0x12')][_0x4520('0x14')]);return _0x27890f(_0x168e62['error'][_0x4520('0x14')]);}else{logger[_0x4520('0xc')](_0x4520('0xd'),_0x396d29,_0x4520('0xe'));_0x27890f(_0x168e62[_0x4520('0x15')]['message']);}})[_0x4520('0x16')](function(_0x33ac29){logger[_0x4520('0x12')](_0x4520('0xd'),_0x396d29,_0x33ac29);_0x55b44f(_0x33ac29);});});}exports[_0x4520('0x17')]=function(_0x2e00f4){var _0x1dcf51=this;return new Promise(function(_0x4ba69f,_0x3791b6){return db[_0x4520('0x18')][_0x4520('0x19')](_0x2e00f4[_0x4520('0x1a')],{'raw':_0x2e00f4['options']?_0x2e00f4[_0x4520('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2e00f4['options']?_0x2e00f4['options'][_0x4520('0x1c')]||null:null,'attributes':_0x2e00f4['options']?_0x2e00f4[_0x4520('0x1b')][_0x4520('0x1d')]||null:null,'limit':_0x2e00f4[_0x4520('0x1b')]?_0x2e00f4['options'][_0x4520('0x1e')]||null:null})[_0x4520('0x1f')](function(_0x3b2ede){logger['info'](_0x4520('0x17'),_0x2e00f4);logger[_0x4520('0xf')](_0x4520('0x17'),_0x2e00f4,JSON[_0x4520('0x11')](_0x3b2ede));_0x4ba69f(_0x3b2ede);})[_0x4520('0x16')](function(_0x552da1){logger[_0x4520('0x12')](_0x4520('0x17'),_0x552da1[_0x4520('0x14')],_0x2e00f4);_0x3791b6(_0x1dcf51[_0x4520('0x12')](0x1f4,_0x552da1['message']));});});};exports[_0x4520('0x20')]=function(_0x4602a4){var _0x92168b=this;return new Promise(function(_0x21e1f3,_0xad9f8){var _0x2c95ea=require(_0x4520('0x21'));var _0x195c58;return db[_0x4520('0x22')][_0x4520('0x23')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x4520('0x1f')](function(_0x5c1a0b){_0x195c58=_0x5c1a0b;return db[_0x4520('0x18')][_0x4520('0x24')](_0x4602a4[_0x4520('0x1a')]);})[_0x4520('0x1f')](function(_0x1da740){if(_0x195c58[_0x4520('0x25')]&&fs['existsSync'](_0x1da740[_0x4520('0x26')])){var _0x508c05=util[_0x4520('0x27')]('%s.cypher',_0x1da740[_0x4520('0x26')]);return _0x2c95ea['encryptFile'](_0x1da740[_0x4520('0x26')],_0x508c05,config['secrets']['recording'])[_0x4520('0x1f')](function(){fs[_0x4520('0x28')](_0x1da740[_0x4520('0x26')]);logger['info'](_0x4520('0x29'));return _0x1da740;});}return _0x1da740;})[_0x4520('0x1f')](function(_0x2acb4e){logger[_0x4520('0xc')]('CreateVoiceRecording',_0x4602a4);logger['debug'](_0x4520('0x20'),_0x4602a4,JSON[_0x4520('0x11')](_0x2acb4e));_0x21e1f3(_0x2acb4e);})['catch'](function(_0x779e94){logger[_0x4520('0x12')](_0x4520('0x20'),_0x779e94[_0x4520('0x14')],_0x4602a4);_0xad9f8(_0x92168b[_0x4520('0x12')](0x1f4,_0x779e94[_0x4520('0x14')]));});});};
\ No newline at end of file
+var _0xcaf2=['CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','encryptFile','secrets','recording','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','error','code','message','result','VoiceRecording','body','options','raw','where','attributes','limit','UpdateVoiceRecording','stringify','catch'];(function(_0x119d7c,_0x417a3f){var _0x5051a6=function(_0x5ab171){while(--_0x5ab171){_0x119d7c['push'](_0x119d7c['shift']());}};_0x5051a6(++_0x417a3f);}(_0xcaf2,0x8a));var _0x2caf=function(_0x42e4d7,_0x4bd202){_0x42e4d7=_0x42e4d7-0x0;var _0x346cd8=_0xcaf2[_0x42e4d7];return _0x346cd8;};'use strict';var _=require(_0x2caf('0x0'));var util=require('util');var moment=require(_0x2caf('0x1'));var BPromise=require(_0x2caf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2caf('0x3'));var db=require(_0x2caf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2caf('0x5'))('rpc');var config=require(_0x2caf('0x6'));var jayson=require(_0x2caf('0x7'));var client=jayson[_0x2caf('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc44e4e,_0x314486,_0x4667c6){return new BPromise(function(_0x34e792,_0x5611aa){return client[_0x2caf('0x9')](_0xc44e4e,_0x4667c6)[_0x2caf('0xa')](function(_0x45e520){logger[_0x2caf('0xb')](_0x2caf('0xc'),_0x314486,_0x2caf('0xd'));logger[_0x2caf('0xe')](_0x2caf('0xf'),_0x314486,_0x2caf('0xd'),JSON['stringify'](_0x45e520));if(_0x45e520[_0x2caf('0x10')]){if(_0x45e520[_0x2caf('0x10')][_0x2caf('0x11')]===0x1f4){logger[_0x2caf('0x10')](_0x2caf('0xc'),_0x314486,_0x45e520[_0x2caf('0x10')][_0x2caf('0x12')]);return _0x5611aa(_0x45e520[_0x2caf('0x10')]['message']);}logger[_0x2caf('0x10')](_0x2caf('0xc'),_0x314486,_0x45e520['error']['message']);return _0x34e792(_0x45e520['error'][_0x2caf('0x12')]);}else{logger['info'](_0x2caf('0xc'),_0x314486,_0x2caf('0xd'));_0x34e792(_0x45e520[_0x2caf('0x13')][_0x2caf('0x12')]);}})['catch'](function(_0x184355){logger['error'](_0x2caf('0xc'),_0x314486,_0x184355);_0x5611aa(_0x184355);});});}exports['UpdateVoiceRecording']=function(_0x4a33fc){var _0x3e975f=this;return new Promise(function(_0x58047b,_0xe72440){return db[_0x2caf('0x14')]['update'](_0x4a33fc[_0x2caf('0x15')],{'raw':_0x4a33fc[_0x2caf('0x16')]?_0x4a33fc[_0x2caf('0x16')][_0x2caf('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a33fc[_0x2caf('0x16')]?_0x4a33fc['options'][_0x2caf('0x18')]||null:null,'attributes':_0x4a33fc[_0x2caf('0x16')]?_0x4a33fc[_0x2caf('0x16')][_0x2caf('0x19')]||null:null,'limit':_0x4a33fc[_0x2caf('0x16')]?_0x4a33fc[_0x2caf('0x16')][_0x2caf('0x1a')]||null:null})[_0x2caf('0xa')](function(_0x3332b1){logger[_0x2caf('0xb')](_0x2caf('0x1b'),_0x4a33fc);logger['debug'](_0x2caf('0x1b'),_0x4a33fc,JSON[_0x2caf('0x1c')](_0x3332b1));_0x58047b(_0x3332b1);})[_0x2caf('0x1d')](function(_0x401ea2){logger[_0x2caf('0x10')](_0x2caf('0x1b'),_0x401ea2[_0x2caf('0x12')],_0x4a33fc);_0xe72440(_0x3e975f[_0x2caf('0x10')](0x1f4,_0x401ea2[_0x2caf('0x12')]));});});};exports[_0x2caf('0x1e')]=function(_0x5ad211){var _0x6a32ac=this;return new Promise(function(_0x325eda,_0xbefce6){var _0x37b08f=require(_0x2caf('0x1f'));var _0x17d3c6;return db[_0x2caf('0x20')][_0x2caf('0x21')]({'attributes':['id',_0x2caf('0x22')],'where':{'id':0x1},'raw':!![]})[_0x2caf('0xa')](function(_0x30da75){_0x17d3c6=_0x30da75;return db[_0x2caf('0x14')][_0x2caf('0x23')](_0x5ad211['body']);})[_0x2caf('0xa')](function(_0xda0ec5){if(_0x17d3c6[_0x2caf('0x22')]&&fs[_0x2caf('0x24')](_0xda0ec5[_0x2caf('0x25')])){var _0x1f52bf=util[_0x2caf('0x26')]('%s.cypher',_0xda0ec5[_0x2caf('0x25')]);return _0x37b08f[_0x2caf('0x27')](_0xda0ec5['value'],_0x1f52bf,config[_0x2caf('0x28')][_0x2caf('0x29')])[_0x2caf('0xa')](function(){fs['unlink'](_0xda0ec5[_0x2caf('0x25')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0xda0ec5;});}return _0xda0ec5;})[_0x2caf('0xa')](function(_0x28b715){logger[_0x2caf('0xb')](_0x2caf('0x1e'),_0x5ad211);logger[_0x2caf('0xe')](_0x2caf('0x1e'),_0x5ad211,JSON[_0x2caf('0x1c')](_0x28b715));_0x325eda(_0x28b715);})[_0x2caf('0x1d')](function(_0x20818e){logger['error'](_0x2caf('0x1e'),_0x20818e[_0x2caf('0x12')],_0x5ad211);_0xbefce6(_0x6a32ac[_0x2caf('0x10')](0x1f4,_0x20818e[_0x2caf('0x12')]));});});};
\ No newline at end of file
index 506d921..04ab9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2707=['delete','destroy','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','index','/describe','describe','/:id','isAuthenticated','post','create','put','update'];(function(_0x58700e,_0x4c6e8f){var _0x29c901=function(_0x280548){while(--_0x280548){_0x58700e['push'](_0x58700e['shift']());}};_0x29c901(++_0x4c6e8f);}(_0x2707,0xfe));var _0x7270=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0x2707[_0x56916d];return _0x2b7f1f;};'use strict';var multer=require('multer');var util=require(_0x7270('0x0'));var path=require(_0x7270('0x1'));var timeout=require(_0x7270('0x2'));var express=require('express');var router=express[_0x7270('0x3')]();var fs_extra=require(_0x7270('0x4'));var auth=require(_0x7270('0x5'));var interaction=require(_0x7270('0x6'));var config=require(_0x7270('0x7'));var controller=require(_0x7270('0x8'));router[_0x7270('0x9')]('/',auth['isAuthenticated'](),controller[_0x7270('0xa')]);router[_0x7270('0x9')](_0x7270('0xb'),auth['isAuthenticated'](),controller[_0x7270('0xc')]);router[_0x7270('0x9')](_0x7270('0xd'),auth[_0x7270('0xe')](),controller['show']);router[_0x7270('0xf')]('/',auth[_0x7270('0xe')](),controller[_0x7270('0x10')]);router[_0x7270('0x11')]('/:id',auth[_0x7270('0xe')](),controller[_0x7270('0x12')]);router[_0x7270('0x13')](_0x7270('0xd'),auth['isAuthenticated'](),controller[_0x7270('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x74e7=['../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','index','isAuthenticated','/:id','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0xe44204,_0x3922a7){var _0x4c2e54=function(_0x4675a1){while(--_0x4675a1){_0xe44204['push'](_0xe44204['shift']());}};_0x4c2e54(++_0x3922a7);}(_0x74e7,0x112));var _0x774e=function(_0x448a3e,_0x1c9a9e){_0x448a3e=_0x448a3e-0x0;var _0x34592a=_0x74e7[_0x448a3e];return _0x34592a;};'use strict';var multer=require(_0x774e('0x0'));var util=require('util');var path=require(_0x774e('0x1'));var timeout=require(_0x774e('0x2'));var express=require(_0x774e('0x3'));var router=express['Router']();var fs_extra=require(_0x774e('0x4'));var auth=require(_0x774e('0x5'));var interaction=require(_0x774e('0x6'));var config=require(_0x774e('0x7'));var controller=require(_0x774e('0x8'));router[_0x774e('0x9')]('/',auth['isAuthenticated'](),controller[_0x774e('0xa')]);router[_0x774e('0x9')]('/describe',auth[_0x774e('0xb')](),controller['describe']);router[_0x774e('0x9')](_0x774e('0xc'),auth[_0x774e('0xb')](),controller['show']);router[_0x774e('0xd')]('/',auth[_0x774e('0xb')](),controller[_0x774e('0xe')]);router[_0x774e('0xf')](_0x774e('0xc'),auth['isAuthenticated'](),controller[_0x774e('0x10')]);router[_0x774e('0x11')](_0x774e('0xc'),auth['isAuthenticated'](),controller[_0x774e('0x12')]);module[_0x774e('0x13')]=router;
\ No newline at end of file
index 4f3f06b..604deb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee7=['STRING','ENUM','sequelize','moment','attended'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xcee7,0x160));var _0x7cee=function(_0x4d9e90,_0x1c3cca){_0x4d9e90=_0x4d9e90-0x0;var _0x3a0e78=_0xcee7[_0x4d9e90];return _0x3a0e78;};'use strict';var Sequelize=require(_0x7cee('0x0'));var moment=require(_0x7cee('0x1'));module['exports']={'type':{'type':Sequelize['ENUM']('blind',_0x7cee('0x2'))},'result':{'type':Sequelize[_0x7cee('0x3')]},'transfererchannel':{'type':Sequelize[_0x7cee('0x3')]},'transferercalleridnum':{'type':Sequelize[_0x7cee('0x3')]},'transferercalleridname':{'type':Sequelize[_0x7cee('0x3')]},'transfererconnectedlinenum':{'type':Sequelize[_0x7cee('0x3')]},'transfererconnectedlinename':{'type':Sequelize[_0x7cee('0x3')]},'transfereraccountcode':{'type':Sequelize[_0x7cee('0x3')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x7cee('0x3')]},'transfereechannel':{'type':Sequelize[_0x7cee('0x3')]},'transfereecalleridnum':{'type':Sequelize[_0x7cee('0x3')]},'transfereecalleridname':{'type':Sequelize[_0x7cee('0x3')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x7cee('0x3')]},'transfereeconnectedlinename':{'type':Sequelize[_0x7cee('0x3')]},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0x7cee('0x3')]},'transfereeexten':{'type':Sequelize[_0x7cee('0x3')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x7cee('0x4')]('Yes','No')},'context':{'type':Sequelize[_0x7cee('0x3')]},'extension':{'type':Sequelize[_0x7cee('0x3')]}};
\ No newline at end of file
+var _0x928e=['attended','STRING','Yes','sequelize','moment','exports','ENUM','blind'];(function(_0x103b3f,_0x442d66){var _0x3ccac9=function(_0x58ae59){while(--_0x58ae59){_0x103b3f['push'](_0x103b3f['shift']());}};_0x3ccac9(++_0x442d66);}(_0x928e,0x1d3));var _0xe928=function(_0x10da4f,_0x14905e){_0x10da4f=_0x10da4f-0x0;var _0xd296b3=_0x928e[_0x10da4f];return _0xd296b3;};'use strict';var Sequelize=require(_0xe928('0x0'));var moment=require(_0xe928('0x1'));module[_0xe928('0x2')]={'type':{'type':Sequelize[_0xe928('0x3')](_0xe928('0x4'),_0xe928('0x5'))},'result':{'type':Sequelize[_0xe928('0x6')]},'transfererchannel':{'type':Sequelize[_0xe928('0x6')]},'transferercalleridnum':{'type':Sequelize[_0xe928('0x6')]},'transferercalleridname':{'type':Sequelize[_0xe928('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0xe928('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0xe928('0x6')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0xe928('0x6')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0xe928('0x6')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xe928('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xe928('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0xe928('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0xe928('0x6')]},'transfereecontext':{'type':Sequelize[_0xe928('0x6')]},'transfereeexten':{'type':Sequelize[_0xe928('0x6')]},'transfereelinkedid':{'type':Sequelize[_0xe928('0x6')]},'isexternal':{'type':Sequelize['ENUM'](_0xe928('0x7'),'No')},'context':{'type':Sequelize[_0xe928('0x6')]},'extension':{'type':Sequelize[_0xe928('0x6')]}};
\ No newline at end of file
index 83b955c..2670e9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbdb=['find','create','body','update','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','set','destroy','then','error','name','index','map','VoiceTransferReport','rawAttributes','fieldName','type','query','keys','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xdbdb,0x121));var _0xbdbd=function(_0x304600,_0x4ecdfe){_0x304600=_0x304600-0x0;var _0x337878=_0xdbdb[_0x304600];return _0x337878;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbdbd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbdbd('0x1'));var rp=require(_0xbdbd('0x2'));var moment=require(_0xbdbd('0x3'));var BPromise=require(_0xbdbd('0x4'));var Mustache=require('mustache');var util=require(_0xbdbd('0x5'));var path=require(_0xbdbd('0x6'));var sox=require(_0xbdbd('0x7'));var csv=require(_0xbdbd('0x8'));var ejs=require(_0xbdbd('0x9'));var fs=require('fs');var fs_extra=require(_0xbdbd('0xa'));var _=require(_0xbdbd('0xb'));var squel=require('squel');var crypto=require(_0xbdbd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xbdbd('0xd'));var toCsv=require(_0xbdbd('0x8'));var querystring=require(_0xbdbd('0xe'));var Papa=require(_0xbdbd('0xf'));var Redis=require(_0xbdbd('0x10'));var authService=require(_0xbdbd('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xbdbd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbdbd('0x13'))(_0xbdbd('0x14'));var utils=require(_0xbdbd('0x15'));var config=require(_0xbdbd('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1852fe,_0x43c645){_0x43c645=_0x43c645||0xcc;return function(_0x2ab24f){if(_0x2ab24f){return _0x1852fe[_0xbdbd('0x17')](_0x43c645);}return _0x1852fe[_0xbdbd('0x18')](_0x43c645)[_0xbdbd('0x19')]();};}function respondWithResult(_0x2a368e,_0x3102cf){_0x3102cf=_0x3102cf||0xc8;return function(_0x33964a){if(_0x33964a){return _0x2a368e[_0xbdbd('0x18')](_0x3102cf)[_0xbdbd('0x1a')](_0x33964a);}};}function respondWithFilteredResult(_0x268e7b,_0x1d34aa){return function(_0x10fd65){if(_0x10fd65){var _0x3d63d5=typeof _0x1d34aa[_0xbdbd('0x1b')]==='undefined'&&typeof _0x1d34aa[_0xbdbd('0x1c')]===_0xbdbd('0x1d');var _0x211563=_0x10fd65['count'];var _0x361244=_0x3d63d5?0x0:_0x1d34aa[_0xbdbd('0x1b')];var _0x5eb0f2=_0x3d63d5?_0x10fd65[_0xbdbd('0x1e')]:_0x1d34aa['offset']+_0x1d34aa[_0xbdbd('0x1c')];var _0x848ae;if(_0x5eb0f2>=_0x211563){_0x5eb0f2=_0x211563;_0x848ae=0xc8;}else{_0x848ae=0xce;}_0x268e7b['status'](_0x848ae);return _0x268e7b[_0xbdbd('0x1f')]('Content-Range',_0x361244+'-'+_0x5eb0f2+'/'+_0x211563)[_0xbdbd('0x1a')](_0x10fd65);}return null;};}function patchUpdates(_0x19bfc4){return function(_0x2c8043){try{jsonpatch['apply'](_0x2c8043,_0x19bfc4,!![]);}catch(_0x42bd44){return BPromise['reject'](_0x42bd44);}return _0x2c8043['save']();};}function saveUpdates(_0x4e5aa8,_0x25efb8){return function(_0x2f666f){if(_0x2f666f){return _0x2f666f['update'](_0x4e5aa8)['then'](function(_0x58e576){return _0x58e576;});}return null;};}function removeEntity(_0x43359c,_0x47311f){return function(_0x3fb453){if(_0x3fb453){return _0x3fb453[_0xbdbd('0x20')]()[_0xbdbd('0x21')](function(){_0x43359c[_0xbdbd('0x18')](0xcc)[_0xbdbd('0x19')]();});}};}function handleEntityNotFound(_0x3bbb32,_0x2cefac){return function(_0x20e5ff){if(!_0x20e5ff){_0x3bbb32[_0xbdbd('0x17')](0x194);}return _0x20e5ff;};}function handleError(_0x129817,_0x1254b3){_0x1254b3=_0x1254b3||0x1f4;return function(_0x47d24d){logger[_0xbdbd('0x22')](_0x47d24d['stack']);if(_0x47d24d[_0xbdbd('0x23')]){delete _0x47d24d[_0xbdbd('0x23')];}_0x129817['status'](_0x1254b3)['send'](_0x47d24d);};}exports[_0xbdbd('0x24')]=function(_0x265458,_0x57a5c5){var _0x99691={},_0x40a538={},_0x3d90ee={'count':0x0,'rows':[]};var _0x36eeb8=_[_0xbdbd('0x25')](db[_0xbdbd('0x26')][_0xbdbd('0x27')],function(_0xa32131){return{'name':_0xa32131[_0xbdbd('0x28')],'type':_0xa32131[_0xbdbd('0x29')]['key']};});_0x40a538['model']=_['map'](_0x36eeb8,'name');_0x40a538[_0xbdbd('0x2a')]=_[_0xbdbd('0x2b')](_0x265458[_0xbdbd('0x2a')]);_0x40a538['filters']=_[_0xbdbd('0x2c')](_0x40a538['model'],_0x40a538[_0xbdbd('0x2a')]);_0x99691[_0xbdbd('0x2d')]=_[_0xbdbd('0x2c')](_0x40a538[_0xbdbd('0x2e')],qs[_0xbdbd('0x2f')](_0x265458[_0xbdbd('0x2a')][_0xbdbd('0x2f')]));_0x99691[_0xbdbd('0x2d')]=_0x99691[_0xbdbd('0x2d')]['length']?_0x99691[_0xbdbd('0x2d')]:_0x40a538[_0xbdbd('0x2e')];if(!_0x265458['query'][_0xbdbd('0x30')](_0xbdbd('0x31'))){_0x99691[_0xbdbd('0x1c')]=qs[_0xbdbd('0x1c')](_0x265458[_0xbdbd('0x2a')]['limit']);_0x99691[_0xbdbd('0x1b')]=qs['offset'](_0x265458[_0xbdbd('0x2a')][_0xbdbd('0x1b')]);}_0x99691[_0xbdbd('0x32')]=qs[_0xbdbd('0x33')](_0x265458[_0xbdbd('0x2a')][_0xbdbd('0x33')]);_0x99691[_0xbdbd('0x34')]=qs[_0xbdbd('0x35')](_['pick'](_0x265458[_0xbdbd('0x2a')],_0x40a538[_0xbdbd('0x35')]),_0x36eeb8);if(_0x265458[_0xbdbd('0x2a')][_0xbdbd('0x36')]){_0x99691[_0xbdbd('0x34')]=_[_0xbdbd('0x37')](_0x99691[_0xbdbd('0x34')],{'$or':_[_0xbdbd('0x25')](_0x36eeb8,function(_0x2d3948){if(_0x2d3948[_0xbdbd('0x29')]!==_0xbdbd('0x38')){var _0x415965={};_0x415965[_0x2d3948[_0xbdbd('0x23')]]={'$like':'%'+_0x265458[_0xbdbd('0x2a')][_0xbdbd('0x36')]+'%'};return _0x415965;}})});}_0x99691=_[_0xbdbd('0x37')]({},_0x99691,_0x265458[_0xbdbd('0x39')]);var _0x2e28d9={'where':_0x99691[_0xbdbd('0x34')]};return db[_0xbdbd('0x26')][_0xbdbd('0x1e')](_0x2e28d9)['then'](function(_0x7becc3){_0x3d90ee[_0xbdbd('0x1e')]=_0x7becc3;if(_0x265458[_0xbdbd('0x2a')][_0xbdbd('0x3a')]){_0x99691[_0xbdbd('0x3b')]=[{'all':!![]}];}return db[_0xbdbd('0x26')][_0xbdbd('0x3c')](_0x99691);})[_0xbdbd('0x21')](function(_0x404b4a){_0x3d90ee[_0xbdbd('0x3d')]=_0x404b4a;return _0x3d90ee;})[_0xbdbd('0x21')](respondWithFilteredResult(_0x57a5c5,_0x99691))[_0xbdbd('0x3e')](handleError(_0x57a5c5,null));};exports[_0xbdbd('0x3f')]=function(_0x29de07,_0x10cfa6){var _0x3cf580={'raw':!![],'where':{'id':_0x29de07[_0xbdbd('0x40')]['id']}},_0x1514bd={};_0x1514bd['model']=_[_0xbdbd('0x2b')](db[_0xbdbd('0x26')][_0xbdbd('0x27')]);_0x1514bd[_0xbdbd('0x2a')]=_[_0xbdbd('0x2b')](_0x29de07['query']);_0x1514bd['filters']=_[_0xbdbd('0x2c')](_0x1514bd['model'],_0x1514bd[_0xbdbd('0x2a')]);_0x3cf580[_0xbdbd('0x2d')]=_[_0xbdbd('0x2c')](_0x1514bd[_0xbdbd('0x2e')],qs[_0xbdbd('0x2f')](_0x29de07[_0xbdbd('0x2a')][_0xbdbd('0x2f')]));_0x3cf580[_0xbdbd('0x2d')]=_0x3cf580[_0xbdbd('0x2d')][_0xbdbd('0x41')]?_0x3cf580[_0xbdbd('0x2d')]:_0x1514bd[_0xbdbd('0x2e')];if(_0x29de07[_0xbdbd('0x2a')]['includeAll']){_0x3cf580[_0xbdbd('0x3b')]=[{'all':!![]}];}_0x3cf580=_[_0xbdbd('0x37')]({},_0x3cf580,_0x29de07[_0xbdbd('0x39')]);return db[_0xbdbd('0x26')][_0xbdbd('0x42')](_0x3cf580)[_0xbdbd('0x21')](handleEntityNotFound(_0x10cfa6,null))[_0xbdbd('0x21')](respondWithResult(_0x10cfa6,null))[_0xbdbd('0x3e')](handleError(_0x10cfa6,null));};exports[_0xbdbd('0x43')]=function(_0x57c226,_0x2bddbe){return db['VoiceTransferReport'][_0xbdbd('0x43')](_0x57c226[_0xbdbd('0x44')],{})[_0xbdbd('0x21')](respondWithResult(_0x2bddbe,0xc9))[_0xbdbd('0x3e')](handleError(_0x2bddbe,null));};exports[_0xbdbd('0x45')]=function(_0x369c47,_0x3a0bb9){if(_0x369c47[_0xbdbd('0x44')]['id']){delete _0x369c47[_0xbdbd('0x44')]['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x369c47[_0xbdbd('0x40')]['id']}})[_0xbdbd('0x21')](handleEntityNotFound(_0x3a0bb9,null))[_0xbdbd('0x21')](saveUpdates(_0x369c47[_0xbdbd('0x44')],null))[_0xbdbd('0x21')](respondWithResult(_0x3a0bb9,null))[_0xbdbd('0x3e')](handleError(_0x3a0bb9,null));};exports[_0xbdbd('0x20')]=function(_0x1496f5,_0x1a1141){return db[_0xbdbd('0x26')][_0xbdbd('0x42')]({'where':{'id':_0x1496f5[_0xbdbd('0x40')]['id']}})[_0xbdbd('0x21')](handleEntityNotFound(_0x1a1141,null))[_0xbdbd('0x21')](removeEntity(_0x1a1141,null))[_0xbdbd('0x3e')](handleError(_0x1a1141,null));};exports[_0xbdbd('0x46')]=function(_0x3bafaa,_0x5e4fb0){return db[_0xbdbd('0x26')]['describe']()[_0xbdbd('0x21')](respondWithResult(_0x5e4fb0,null))[_0xbdbd('0x3e')](handleError(_0x5e4fb0,null));};
\ No newline at end of file
+var _0x4292=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','set','Content-Range','apply','then','destroy','error','stack','name','index','rawAttributes','fieldName','type','model','map','query','keys','filters','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','VoiceTransferReport','count','includeAll','include','findAll','rows','params','intersection','fields','find','catch','create','body','update','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x5a14e2,_0x2ecc09){var _0x558407=function(_0x1c9a2b){while(--_0x1c9a2b){_0x5a14e2['push'](_0x5a14e2['shift']());}};_0x558407(++_0x2ecc09);}(_0x4292,0x114));var _0x2429=function(_0x217372,_0x1822ce){_0x217372=_0x217372-0x0;var _0x2715a1=_0x4292[_0x217372];return _0x2715a1;};'use strict';var emlformat=require(_0x2429('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2429('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2429('0x2'));var moment=require(_0x2429('0x3'));var BPromise=require(_0x2429('0x4'));var Mustache=require(_0x2429('0x5'));var util=require(_0x2429('0x6'));var path=require(_0x2429('0x7'));var sox=require(_0x2429('0x8'));var csv=require(_0x2429('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2429('0xa'));var _=require(_0x2429('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2429('0xc'));var deskjs=require(_0x2429('0xd'));var toCsv=require(_0x2429('0x9'));var querystring=require(_0x2429('0xe'));var Papa=require(_0x2429('0xf'));var Redis=require(_0x2429('0x10'));var authService=require(_0x2429('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2429('0x12'));var hardwareService=require(_0x2429('0x13'));var logger=require(_0x2429('0x14'))(_0x2429('0x15'));var utils=require('../../config/utils');var config=require(_0x2429('0x16'));var licenseUtil=require(_0x2429('0x17'));var db=require(_0x2429('0x18'))['db'];function respondWithStatusCode(_0x5067a5,_0x54498d){_0x54498d=_0x54498d||0xcc;return function(_0x131302){if(_0x131302){return _0x5067a5['sendStatus'](_0x54498d);}return _0x5067a5['status'](_0x54498d)[_0x2429('0x19')]();};}function respondWithResult(_0x5b0635,_0x296f7e){_0x296f7e=_0x296f7e||0xc8;return function(_0x42fa36){if(_0x42fa36){return _0x5b0635[_0x2429('0x1a')](_0x296f7e)[_0x2429('0x1b')](_0x42fa36);}};}function respondWithFilteredResult(_0x13c7d3,_0x522e18){return function(_0x46c67a){if(_0x46c67a){var _0x501a9d=typeof _0x522e18[_0x2429('0x1c')]===_0x2429('0x1d')&&typeof _0x522e18[_0x2429('0x1e')]===_0x2429('0x1d');var _0x5b36f9=_0x46c67a['count'];var _0x195d68=_0x501a9d?0x0:_0x522e18['offset'];var _0x4cecd4=_0x501a9d?_0x46c67a['count']:_0x522e18[_0x2429('0x1c')]+_0x522e18[_0x2429('0x1e')];var _0x13bea8;if(_0x4cecd4>=_0x5b36f9){_0x4cecd4=_0x5b36f9;_0x13bea8=0xc8;}else{_0x13bea8=0xce;}_0x13c7d3['status'](_0x13bea8);return _0x13c7d3[_0x2429('0x1f')](_0x2429('0x20'),_0x195d68+'-'+_0x4cecd4+'/'+_0x5b36f9)[_0x2429('0x1b')](_0x46c67a);}return null;};}function patchUpdates(_0x129651){return function(_0x2eb748){try{jsonpatch[_0x2429('0x21')](_0x2eb748,_0x129651,!![]);}catch(_0x8325f){return BPromise['reject'](_0x8325f);}return _0x2eb748['save']();};}function saveUpdates(_0x45ea85,_0x2793db){return function(_0x466be){if(_0x466be){return _0x466be['update'](_0x45ea85)[_0x2429('0x22')](function(_0x2a2354){return _0x2a2354;});}return null;};}function removeEntity(_0x20e2ae,_0x22e847){return function(_0x19caba){if(_0x19caba){return _0x19caba[_0x2429('0x23')]()[_0x2429('0x22')](function(){_0x20e2ae[_0x2429('0x1a')](0xcc)[_0x2429('0x19')]();});}};}function handleEntityNotFound(_0x2716c7,_0x66737e){return function(_0x491bf6){if(!_0x491bf6){_0x2716c7['sendStatus'](0x194);}return _0x491bf6;};}function handleError(_0x218d67,_0x3ce0ad){_0x3ce0ad=_0x3ce0ad||0x1f4;return function(_0x4d3e5a){logger[_0x2429('0x24')](_0x4d3e5a[_0x2429('0x25')]);if(_0x4d3e5a[_0x2429('0x26')]){delete _0x4d3e5a['name'];}_0x218d67[_0x2429('0x1a')](_0x3ce0ad)['send'](_0x4d3e5a);};}exports[_0x2429('0x27')]=function(_0x384a43,_0xef40de){var _0x1fa594={},_0x470241={},_0xd1d8fc={'count':0x0,'rows':[]};var _0xe85917=_['map'](db['VoiceTransferReport'][_0x2429('0x28')],function(_0x2f6da2){return{'name':_0x2f6da2[_0x2429('0x29')],'type':_0x2f6da2[_0x2429('0x2a')]['key']};});_0x470241[_0x2429('0x2b')]=_[_0x2429('0x2c')](_0xe85917,_0x2429('0x26'));_0x470241[_0x2429('0x2d')]=_[_0x2429('0x2e')](_0x384a43[_0x2429('0x2d')]);_0x470241[_0x2429('0x2f')]=_['intersection'](_0x470241[_0x2429('0x2b')],_0x470241[_0x2429('0x2d')]);_0x1fa594['attributes']=_['intersection'](_0x470241[_0x2429('0x2b')],qs['fields'](_0x384a43[_0x2429('0x2d')]['fields']));_0x1fa594['attributes']=_0x1fa594[_0x2429('0x30')][_0x2429('0x31')]?_0x1fa594[_0x2429('0x30')]:_0x470241[_0x2429('0x2b')];if(!_0x384a43[_0x2429('0x2d')][_0x2429('0x32')](_0x2429('0x33'))){_0x1fa594[_0x2429('0x1e')]=qs[_0x2429('0x1e')](_0x384a43[_0x2429('0x2d')][_0x2429('0x1e')]);_0x1fa594['offset']=qs['offset'](_0x384a43[_0x2429('0x2d')]['offset']);}_0x1fa594['order']=qs[_0x2429('0x34')](_0x384a43[_0x2429('0x2d')][_0x2429('0x34')]);_0x1fa594['where']=qs[_0x2429('0x2f')](_[_0x2429('0x35')](_0x384a43[_0x2429('0x2d')],_0x470241[_0x2429('0x2f')]),_0xe85917);if(_0x384a43['query'][_0x2429('0x36')]){_0x1fa594[_0x2429('0x37')]=_['merge'](_0x1fa594['where'],{'$or':_[_0x2429('0x2c')](_0xe85917,function(_0x239315){if(_0x239315[_0x2429('0x2a')]!==_0x2429('0x38')){var _0x5e0f14={};_0x5e0f14[_0x239315['name']]={'$like':'%'+_0x384a43[_0x2429('0x2d')]['filter']+'%'};return _0x5e0f14;}})});}_0x1fa594=_[_0x2429('0x39')]({},_0x1fa594,_0x384a43[_0x2429('0x3a')]);var _0x36195c={'where':_0x1fa594[_0x2429('0x37')]};return db[_0x2429('0x3b')][_0x2429('0x3c')](_0x36195c)[_0x2429('0x22')](function(_0x23b259){_0xd1d8fc[_0x2429('0x3c')]=_0x23b259;if(_0x384a43[_0x2429('0x2d')][_0x2429('0x3d')]){_0x1fa594[_0x2429('0x3e')]=[{'all':!![]}];}return db[_0x2429('0x3b')][_0x2429('0x3f')](_0x1fa594);})['then'](function(_0x3d1489){_0xd1d8fc[_0x2429('0x40')]=_0x3d1489;return _0xd1d8fc;})[_0x2429('0x22')](respondWithFilteredResult(_0xef40de,_0x1fa594))['catch'](handleError(_0xef40de,null));};exports['show']=function(_0x3514cd,_0x590cdb){var _0x540405={'raw':!![],'where':{'id':_0x3514cd[_0x2429('0x41')]['id']}},_0x41afe1={};_0x41afe1[_0x2429('0x2b')]=_['keys'](db[_0x2429('0x3b')][_0x2429('0x28')]);_0x41afe1['query']=_[_0x2429('0x2e')](_0x3514cd['query']);_0x41afe1[_0x2429('0x2f')]=_['intersection'](_0x41afe1['model'],_0x41afe1[_0x2429('0x2d')]);_0x540405[_0x2429('0x30')]=_[_0x2429('0x42')](_0x41afe1['model'],qs[_0x2429('0x43')](_0x3514cd[_0x2429('0x2d')][_0x2429('0x43')]));_0x540405['attributes']=_0x540405[_0x2429('0x30')][_0x2429('0x31')]?_0x540405[_0x2429('0x30')]:_0x41afe1['model'];if(_0x3514cd['query'][_0x2429('0x3d')]){_0x540405['include']=[{'all':!![]}];}_0x540405=_[_0x2429('0x39')]({},_0x540405,_0x3514cd[_0x2429('0x3a')]);return db[_0x2429('0x3b')][_0x2429('0x44')](_0x540405)['then'](handleEntityNotFound(_0x590cdb,null))[_0x2429('0x22')](respondWithResult(_0x590cdb,null))[_0x2429('0x45')](handleError(_0x590cdb,null));};exports[_0x2429('0x46')]=function(_0x4c46e6,_0x4312e3){return db[_0x2429('0x3b')][_0x2429('0x46')](_0x4c46e6[_0x2429('0x47')],{})[_0x2429('0x22')](respondWithResult(_0x4312e3,0xc9))[_0x2429('0x45')](handleError(_0x4312e3,null));};exports[_0x2429('0x48')]=function(_0x2a3be5,_0x1ef933){if(_0x2a3be5[_0x2429('0x47')]['id']){delete _0x2a3be5['body']['id'];}return db[_0x2429('0x3b')][_0x2429('0x44')]({'where':{'id':_0x2a3be5[_0x2429('0x41')]['id']}})[_0x2429('0x22')](handleEntityNotFound(_0x1ef933,null))['then'](saveUpdates(_0x2a3be5[_0x2429('0x47')],null))[_0x2429('0x22')](respondWithResult(_0x1ef933,null))[_0x2429('0x45')](handleError(_0x1ef933,null));};exports[_0x2429('0x23')]=function(_0x4a2f90,_0x58602e){return db[_0x2429('0x3b')]['find']({'where':{'id':_0x4a2f90['params']['id']}})['then'](handleEntityNotFound(_0x58602e,null))[_0x2429('0x22')](removeEntity(_0x58602e,null))[_0x2429('0x45')](handleError(_0x58602e,null));};exports[_0x2429('0x49')]=function(_0x260c4d,_0x25d5cc){return db[_0x2429('0x3b')][_0x2429('0x49')]()[_0x2429('0x22')](respondWithResult(_0x25d5cc,null))[_0x2429('0x45')](handleError(_0x25d5cc,null));};
\ No newline at end of file
index c277cd9..87ba382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1357=['rimraf','./voiceTransferReport.attributes','exports','define','report_call_transfer','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x1357,0x1a9));var _0x7135=function(_0x4abd5f,_0x400770){_0x4abd5f=_0x4abd5f-0x0;var _0x32c587=_0x1357[_0x4abd5f];return _0x32c587;};'use strict';var _=require('lodash');var util=require(_0x7135('0x0'));var logger=require(_0x7135('0x1'))(_0x7135('0x2'));var moment=require(_0x7135('0x3'));var BPromise=require(_0x7135('0x4'));var rp=require(_0x7135('0x5'));var fs=require('fs');var path=require(_0x7135('0x6'));var rimraf=require(_0x7135('0x7'));var config=require('../../config/environment');var attributes=require(_0x7135('0x8'));module[_0x7135('0x9')]=function(_0x54523d,_0x2e9a83){return _0x54523d[_0x7135('0xa')]('VoiceTransferReport',attributes,{'tableName':_0x7135('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xafae=['lodash','util','../../config/logger','api','moment','bluebird','path','exports','define','report_call_transfer'];(function(_0x1a87b3,_0x45ba68){var _0x37e84d=function(_0x39f49e){while(--_0x39f49e){_0x1a87b3['push'](_0x1a87b3['shift']());}};_0x37e84d(++_0x45ba68);}(_0xafae,0x19a));var _0xeafa=function(_0xd661ce,_0x32b04d){_0xd661ce=_0xd661ce-0x0;var _0x9dc037=_0xafae[_0xd661ce];return _0x9dc037;};'use strict';var _=require(_0xeafa('0x0'));var util=require(_0xeafa('0x1'));var logger=require(_0xeafa('0x2'))(_0xeafa('0x3'));var moment=require(_0xeafa('0x4'));var BPromise=require(_0xeafa('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeafa('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceTransferReport.attributes');module[_0xeafa('0x7')]=function(_0x2c78ff,_0x162310){return _0x2c78ff[_0xeafa('0x8')]('VoiceTransferReport',attributes,{'tableName':_0xeafa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fd32bcd..8ff7868 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e9a=['VoiceTransferReport,\x20%s,\x20%s','result','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','then','info','debug','stringify','catch','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','error','message'];(function(_0x4abd58,_0x523c62){var _0x3608a8=function(_0xa5878){while(--_0xa5878){_0x4abd58['push'](_0x4abd58['shift']());}};_0x3608a8(++_0x523c62);}(_0x2e9a,0x79));var _0xa2e9=function(_0x58b6c8,_0x198db0){_0x58b6c8=_0x58b6c8-0x0;var _0x5c974c=_0x2e9a[_0x58b6c8];return _0x5c974c;};'use strict';var _=require('lodash');var util=require(_0xa2e9('0x0'));var moment=require('moment');var BPromise=require(_0xa2e9('0x1'));var rs=require(_0xa2e9('0x2'));var fs=require('fs');var Redis=require(_0xa2e9('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa2e9('0x4'))(_0xa2e9('0x5'));var config=require(_0xa2e9('0x6'));var jayson=require(_0xa2e9('0x7'));var client=jayson[_0xa2e9('0x8')][_0xa2e9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2bf485,_0x552823,_0x30f6b7){return new BPromise(function(_0x3aaf4a,_0x1fad04){return client[_0xa2e9('0xa')](_0x2bf485,_0x30f6b7)['then'](function(_0xae6d76){logger['info']('VoiceTransferReport,\x20%s,\x20%s',_0x552823,_0xa2e9('0xb'));logger['debug']('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x552823,_0xa2e9('0xb'),JSON['stringify'](_0xae6d76));if(_0xae6d76[_0xa2e9('0xc')]){if(_0xae6d76[_0xa2e9('0xc')]['code']===0x1f4){logger[_0xa2e9('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x552823,_0xae6d76[_0xa2e9('0xc')][_0xa2e9('0xd')]);return _0x1fad04(_0xae6d76['error'][_0xa2e9('0xd')]);}logger[_0xa2e9('0xc')](_0xa2e9('0xe'),_0x552823,_0xae6d76['error']['message']);return _0x3aaf4a(_0xae6d76[_0xa2e9('0xc')][_0xa2e9('0xd')]);}else{logger['info'](_0xa2e9('0xe'),_0x552823,_0xa2e9('0xb'));_0x3aaf4a(_0xae6d76[_0xa2e9('0xf')][_0xa2e9('0xd')]);}})['catch'](function(_0x294a07){logger[_0xa2e9('0xc')](_0xa2e9('0xe'),_0x552823,_0x294a07);_0x1fad04(_0x294a07);});});}exports[_0xa2e9('0x10')]=function(_0x32f9cb){var _0x313515=this;return new Promise(function(_0x4f21e6,_0x30d7fb){return db[_0xa2e9('0x11')][_0xa2e9('0x12')](_0x32f9cb[_0xa2e9('0x13')],{'raw':_0x32f9cb[_0xa2e9('0x14')]?_0x32f9cb[_0xa2e9('0x14')][_0xa2e9('0x15')]===undefined?!![]:![]:!![]})[_0xa2e9('0x16')](function(_0x27d176){logger[_0xa2e9('0x17')](_0xa2e9('0x10'),_0x32f9cb);logger[_0xa2e9('0x18')](_0xa2e9('0x10'),_0x32f9cb,JSON[_0xa2e9('0x19')](_0x27d176));_0x4f21e6(_0x27d176);})[_0xa2e9('0x1a')](function(_0x19ced2){logger['error'](_0xa2e9('0x10'),_0x19ced2['message'],_0x32f9cb);_0x30d7fb(_0x313515['error'](0x1f4,_0x19ced2[_0xa2e9('0xd')]));});});};
\ No newline at end of file
+var _0x2950=['info','result','catch','CreateVoiceTransferReport','create','options','lodash','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceTransferReport,\x20%s,\x20%s'];(function(_0x511ec0,_0x789506){var _0x18369e=function(_0x32bc42){while(--_0x32bc42){_0x511ec0['push'](_0x511ec0['shift']());}};_0x18369e(++_0x789506);}(_0x2950,0x15f));var _0x0295=function(_0x5be32c,_0x1acaec){_0x5be32c=_0x5be32c-0x0;var _0x2335ee=_0x2950[_0x5be32c];return _0x2335ee;};'use strict';var _=require(_0x0295('0x0'));var util=require('util');var moment=require(_0x0295('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0295('0x2'))['db'];var utils=require(_0x0295('0x3'));var logger=require(_0x0295('0x4'))(_0x0295('0x5'));var config=require('../../config/environment');var jayson=require(_0x0295('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x543d2a,_0x1969bd,_0x1af2d4){return new BPromise(function(_0x379a6d,_0xa1fcf){return client[_0x0295('0x7')](_0x543d2a,_0x1af2d4)[_0x0295('0x8')](function(_0x423b44){logger['info']('VoiceTransferReport,\x20%s,\x20%s',_0x1969bd,_0x0295('0x9'));logger[_0x0295('0xa')](_0x0295('0xb'),_0x1969bd,_0x0295('0x9'),JSON[_0x0295('0xc')](_0x423b44));if(_0x423b44[_0x0295('0xd')]){if(_0x423b44[_0x0295('0xd')][_0x0295('0xe')]===0x1f4){logger[_0x0295('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x1969bd,_0x423b44[_0x0295('0xd')][_0x0295('0xf')]);return _0xa1fcf(_0x423b44['error']['message']);}logger[_0x0295('0xd')](_0x0295('0x10'),_0x1969bd,_0x423b44[_0x0295('0xd')][_0x0295('0xf')]);return _0x379a6d(_0x423b44[_0x0295('0xd')]['message']);}else{logger[_0x0295('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x1969bd,_0x0295('0x9'));_0x379a6d(_0x423b44[_0x0295('0x12')]['message']);}})[_0x0295('0x13')](function(_0x4a59e9){logger[_0x0295('0xd')](_0x0295('0x10'),_0x1969bd,_0x4a59e9);_0xa1fcf(_0x4a59e9);});});}exports[_0x0295('0x14')]=function(_0x3656f5){var _0x1c2656=this;return new Promise(function(_0x11c5eb,_0x841b36){return db['VoiceTransferReport'][_0x0295('0x15')](_0x3656f5['body'],{'raw':_0x3656f5[_0x0295('0x16')]?_0x3656f5[_0x0295('0x16')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1facbe){logger[_0x0295('0x11')](_0x0295('0x14'),_0x3656f5);logger['debug'](_0x0295('0x14'),_0x3656f5,JSON[_0x0295('0xc')](_0x1facbe));_0x11c5eb(_0x1facbe);})['catch'](function(_0x2b2078){logger[_0x0295('0xd')]('CreateVoiceTransferReport',_0x2b2078[_0x0295('0xf')],_0x3656f5);_0x841b36(_0x1c2656[_0x0295('0xd')](0x1f4,_0x2b2078[_0x0295('0xf')]));});});};
\ No newline at end of file
index f988063..49b80d6 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(_0xc12169,_0x4dbf96){var _0x51126d=function(_0x5646e6){while(--_0x5646e6){_0xc12169['push'](_0xc12169['shift']());}};_0x51126d(++_0x4dbf96);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x470bfb,_0x389787){_0x470bfb=_0x470bfb-0x0;var _0x2f5d97=_0xb4e6[_0x470bfb];return _0x2f5d97;};'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 _0xe14d=['hangup','answer','/hold','hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','/originate','isAuthenticated','originate','post','/hangup','isWebrtcLicence'];(function(_0x57ec1a,_0x2b7624){var _0x2159ad=function(_0x4738b4){while(--_0x4738b4){_0x57ec1a['push'](_0x57ec1a['shift']());}};_0x2159ad(++_0x2b7624);}(_0xe14d,0x1ee));var _0xde14=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe14d[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0xde14('0x0'));var router=express[_0xde14('0x1')]();var auth=require(_0xde14('0x2'));var controller=require(_0xde14('0x3'));router['post'](_0xde14('0x4'),auth[_0xde14('0x5')](),auth['isWebrtcLicence'](),controller[_0xde14('0x6')]);router[_0xde14('0x7')](_0xde14('0x8'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xa')]);router['post']('/answer',auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xb')]);router[_0xde14('0x7')](_0xde14('0xc'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xd')]);router['post'](_0xde14('0xe'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0xf')]);router[_0xde14('0x7')](_0xde14('0x10'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0x11')]);router[_0xde14('0x7')](_0xde14('0x12'),auth[_0xde14('0x5')](),auth[_0xde14('0x9')](),controller[_0xde14('0x13')]);module[_0xde14('0x14')]=router;
\ No newline at end of file
index 5cf66b3..723f498 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x402f=['json','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','originate\x20executed!','hangup\x20fired:','sessionId','webbar:hangup','hangup\x20executed!','answer\x20fired:','userId','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','VoiceChannels','all','filter','catch','conference','conference\x20fired:','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','../../mysqldb','bluebird','jayson/promise','client','../../config/logger','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','User','findOne','rows','UserId','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','length'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x402f,0x6f));var _0xf402=function(_0x11551a,_0x49d214){_0x11551a=_0x11551a-0x0;var _0x34f6e0=_0x402f[_0x11551a];return _0x34f6e0;};'use strict';var path=require(_0xf402('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0xf402('0x1'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0xf402('0x2'));var jayson=require(_0xf402('0x3'));var amiClient=jayson[_0xf402('0x4')]['http']({'port':0x232a});var logger=require(_0xf402('0x5'))('webbarapi');var Redis=require(_0xf402('0x6'));config[_0xf402('0x7')]=_[_0xf402('0x8')](config[_0xf402('0x7')],{'host':_0xf402('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0xf402('0xa'));var originateValidation=new Schema({'userId':{'type':_0xf402('0xb'),'required':[!![],_0xf402('0xc')]},'callNumber':{'type':_0xf402('0xd'),'required':[!![],_0xf402('0xe')]},'callerId':{'type':_0xf402('0xd')},'callbackUrl':{'type':_0xf402('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xf402('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xf402('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xf402('0xd'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':'string','required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0xf402('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xf402('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xf402('0xb'),'required':[!![],_0xf402('0xc')]},'sessionId':{'type':_0xf402('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf402('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf402('0xc')]}});function emit(_0x5e38d8,_0x5cc240,_0x545d1a){logger[_0xf402('0xf')](_0x5e38d8,_0x5cc240,JSON[_0xf402('0x10')](_0x545d1a));io['to'](_0x5e38d8)[_0xf402('0x11')](_0x5cc240,_0x545d1a);}function handleError(_0x4629b7){return function(_0x2fbe36){console[_0xf402('0x12')](_0xf402('0x13'),_0x2fbe36,_0x2fbe36 instanceof RangeError);logger[_0xf402('0x14')](_0x2fbe36[_0xf402('0x15')]);if(_0x2fbe36 instanceof RangeError){if(_0x2fbe36[_0xf402('0x16')]){delete _0x2fbe36['name'];}_0x4629b7[_0xf402('0x17')](0x194)[_0xf402('0x18')](_0x2fbe36);}else{if(_0x2fbe36[_0xf402('0x16')]){delete _0x2fbe36[_0xf402('0x16')];}_0x4629b7[_0xf402('0x17')](0x1f4)[_0xf402('0x18')](_0x2fbe36);}};}function checkError(){return function(_0x2d476a){if(!_0x2d476a){throw new RangeError(_0xf402('0x19'));}return _0x2d476a;};}function respondWithRpcPromise(_0x16a05b,_0x499113){return new BPromise(function(_0x3cfe38,_0x4ffe46){var _0x297a68=amiClient;return _0x297a68[_0xf402('0x1a')](_0x16a05b,_0x499113)[_0xf402('0x1b')](function(_0x477709){if(_0x477709[_0xf402('0x14')]){if(_0x477709[_0xf402('0x14')][_0xf402('0x1c')]===0x1f4){return _0x4ffe46(_0x477709[_0xf402('0x14')][_0xf402('0x1d')]);}return _0x3cfe38(_0x477709[_0xf402('0x14')][_0xf402('0x1d')]);}else{_0x3cfe38(_0x477709[_0xf402('0x1e')]);}})['catch'](function(_0x3285bd){_0x4ffe46(_0x3285bd);});});}function getAgent(_0x16c21c){return db[_0xf402('0x1f')][_0xf402('0x20')]({'where':{'id':_0x16c21c,'role':'agent'}})['then'](checkError());}function getAgentCheckSession(_0x3e26d3,_0x3f837e){return new BPromise(function(_0x3a6a8d,_0xb7c8e4){var _0x32f1dc=respondWithRpcPromise('VoiceChannels');var _0x39a38a=getAgent(_0x3e26d3);Promise['all']([_0x32f1dc,_0x39a38a])[_0xf402('0x1b')](function(_0xe3dc2f){var _0x45ead3=_0xe3dc2f[0x0];var _0xb28d88=_0xe3dc2f[0x1];var _0xd82d61=_['filter'](_0x45ead3[_0xf402('0x21')],function(_0x3720c6){return _0x3720c6[_0xf402('0x22')]==_0xb28d88['id']&&_0x3720c6['sessionId']==_0x3f837e;});if(_0xd82d61['length']==0x1){_0x3a6a8d(_0xb28d88);}else{_0xb7c8e4(new RangeError(_0xf402('0x23')+_0x3f837e+_0xf402('0x24')));}});});}exports[_0xf402('0x25')]=function(_0x221d6d,_0x162cce){logger['info'](_0xf402('0x26'),_0x221d6d[_0xf402('0x27')]);var _0x44aa26=originateValidation[_0xf402('0xa')](_0x221d6d[_0xf402('0x27')]);if(_0x44aa26[_0xf402('0x28')]>0x0){return _0x162cce['status'](0x190)[_0xf402('0x29')](_0x44aa26);}var _0x209eae=_0x221d6d[_0xf402('0x27')]['userId'];var _0x5704a2=_0x221d6d[_0xf402('0x27')][_0xf402('0x2a')];var _0x106721=_0x221d6d['body'][_0xf402('0x2b')];var _0x335b34=_0x221d6d[_0xf402('0x27')][_0xf402('0x2c')];return getAgent(_0x209eae)[_0xf402('0x1b')](function(_0x2c4217){logger['info'](_0xf402('0x2d'),_0x2c4217[_0xf402('0x16')]);emit(util[_0xf402('0x2e')](_0xf402('0x2f'),_0x2c4217[_0xf402('0x16')]),'webbar:originate',{'callNumber':_0x5704a2,'callerId':_0x106721,'callbackUrl':_0x335b34});return _0x162cce[_0xf402('0x17')](0xc8)[_0xf402('0x29')]({'error':![],'message':_0xf402('0x30')});})['catch'](handleError(_0x162cce));};exports['hangup']=function(_0x66f414,_0x52e99b){logger[_0xf402('0xf')](_0xf402('0x31'),_0x66f414['body']);var _0x18c3c8=hangupValidation[_0xf402('0xa')](_0x66f414[_0xf402('0x27')]);if(_0x18c3c8[_0xf402('0x28')]>0x0){return _0x52e99b[_0xf402('0x17')](0x190)[_0xf402('0x29')](_0x18c3c8);}var _0x141631=_0x66f414[_0xf402('0x27')]['userId'];var _0x4e62b=_0x66f414[_0xf402('0x27')][_0xf402('0x32')];return getAgent(_0x141631)[_0xf402('0x1b')](function(_0x2fb923){logger['info'](_0xf402('0x2d'),_0x2fb923['name']);emit(util[_0xf402('0x2e')](_0xf402('0x2f'),_0x2fb923[_0xf402('0x16')]),_0xf402('0x33'),{'sessionId':_0x4e62b});return _0x52e99b[_0xf402('0x17')](0xc8)[_0xf402('0x29')]({'error':![],'message':_0xf402('0x34')});})['catch'](handleError(_0x52e99b));};exports['answer']=function(_0x352753,_0x22d601){logger[_0xf402('0xf')](_0xf402('0x35'),_0x352753[_0xf402('0x27')]);var _0x1fe222=answerValidation['validate'](_0x352753[_0xf402('0x27')]);if(_0x1fe222[_0xf402('0x28')]>0x0){return _0x22d601[_0xf402('0x17')](0x190)[_0xf402('0x29')](_0x1fe222);}var _0x50c439=_0x352753[_0xf402('0x27')][_0xf402('0x36')];var _0x299af2=_0x352753[_0xf402('0x27')][_0xf402('0x32')];return getAgent(_0x50c439)[_0xf402('0x1b')](function(_0x47c1e3){logger[_0xf402('0xf')](_0xf402('0x2d'),_0x47c1e3['name']);emit(util['format'](_0xf402('0x2f'),_0x47c1e3[_0xf402('0x16')]),'webbar:answer',{'sessionId':_0x299af2});return _0x22d601[_0xf402('0x17')](0xc8)[_0xf402('0x29')]({'error':![],'message':_0xf402('0x37')});})['catch'](handleError(_0x22d601));};exports[_0xf402('0x38')]=function(_0x48fd97,_0x6bddd8){logger['info'](_0xf402('0x39'),_0x48fd97[_0xf402('0x27')]);var _0x59ae4f=holdValidation['validate'](_0x48fd97[_0xf402('0x27')]);if(_0x59ae4f[_0xf402('0x28')]>0x0){return _0x6bddd8['status'](0x190)['json'](_0x59ae4f);}var _0x213c51=_0x48fd97[_0xf402('0x27')][_0xf402('0x36')];var _0xe53177=_0x48fd97[_0xf402('0x27')][_0xf402('0x32')];return getAgent(_0x213c51)[_0xf402('0x1b')](function(_0xf91b26){logger[_0xf402('0xf')]('entityFound:',_0xf91b26[_0xf402('0x16')]);emit(util[_0xf402('0x2e')](_0xf402('0x2f'),_0xf91b26['name']),_0xf402('0x3a'),{'sessionId':_0xe53177});return _0x6bddd8[_0xf402('0x17')](0xc8)[_0xf402('0x29')]({'error':![],'message':_0xf402('0x3b')});})['catch'](handleError(_0x6bddd8));};exports[_0xf402('0x3c')]=function(_0x411fa3,_0x206601){logger[_0xf402('0xf')](_0xf402('0x3d'),_0x411fa3[_0xf402('0x27')]);var _0x19eb1f=unholdValidation[_0xf402('0xa')](_0x411fa3[_0xf402('0x27')]);if(_0x19eb1f[_0xf402('0x28')]>0x0){return _0x206601[_0xf402('0x17')](0x190)[_0xf402('0x29')](_0x19eb1f);}var _0xfa0ef4=_0x411fa3['body']['userId'];var _0x2a304c=_0x411fa3['body']['sessionId'];return getAgent(_0xfa0ef4)['then'](function(_0xb0a9e7){logger[_0xf402('0xf')]('entityFound:',_0xb0a9e7[_0xf402('0x16')]);emit(util[_0xf402('0x2e')](_0xf402('0x2f'),_0xb0a9e7[_0xf402('0x16')]),_0xf402('0x3e'),{'sessionId':_0x2a304c});return _0x206601[_0xf402('0x17')](0xc8)[_0xf402('0x29')]({'error':![],'message':_0xf402('0x3f')});})['catch'](handleError(_0x206601));};exports['calls']=function(_0x3b8dff,_0x14d955){logger['info'](_0xf402('0x40'),_0x14d955[_0xf402('0x27')]);var _0x49b1d6=callsValidation['validate'](_0x3b8dff[_0xf402('0x27')]);if(_0x49b1d6['length']>0x0){return _0x14d955[_0xf402('0x17')](0x190)['json'](_0x49b1d6);}var _0x192d35=_0x3b8dff[_0xf402('0x27')]['userId'];var _0x4a1ca7=respondWithRpcPromise(_0xf402('0x41'));var _0x4159e2=getAgent(_0x192d35);return Promise[_0xf402('0x42')]([_0x4a1ca7,_0x4159e2])[_0xf402('0x1b')](function(_0x3e5de4){var _0x43378c=_0x3e5de4[0x0];var _0x4bb648=_0x3e5de4[0x1];var _0xe0b662=_[_0xf402('0x43')](_0x43378c[_0xf402('0x21')],function(_0x483d47){return _0x483d47[_0xf402('0x22')]==_0x4bb648['id'];});return _0x14d955[_0xf402('0x17')](0xc8)[_0xf402('0x29')]({'count':_0xe0b662['length'],'rows':_0xe0b662});})[_0xf402('0x44')](handleError(_0x14d955));};exports[_0xf402('0x45')]=function(_0x57a27e,_0x16508f){logger[_0xf402('0xf')](_0xf402('0x46'),_0x57a27e[_0xf402('0x27')]);var _0x4b9ab1=conferenceValidation[_0xf402('0xa')](_0x57a27e[_0xf402('0x27')]);if(_0x4b9ab1['length']>0x0){return _0x16508f[_0xf402('0x17')](0x190)[_0xf402('0x29')](_0x4b9ab1);}var _0x5bc9b7=_0x57a27e[_0xf402('0x27')]['userId'];return getAgent(_0x5bc9b7)[_0xf402('0x1b')](function(_0x559272){logger[_0xf402('0xf')](_0xf402('0x2d'),_0x559272[_0xf402('0x16')]);emit(util['format'](_0xf402('0x2f'),_0x559272[_0xf402('0x16')]),'webbar:conference');return _0x16508f['status'](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})[_0xf402('0x44')](handleError(_0x16508f));};exports[_0xf402('0x47')]=function(_0x6fb6d2,_0xffbac5){logger['info'](_0xf402('0x48'),_0x6fb6d2[_0xf402('0x27')]);var _0x385a95=transferValidation[_0xf402('0xa')](_0x6fb6d2[_0xf402('0x27')]);if(_0x385a95[_0xf402('0x28')]>0x0){return _0xffbac5[_0xf402('0x17')](0x190)[_0xf402('0x29')](_0x385a95);}var _0x16f1ec=_0x6fb6d2[_0xf402('0x27')][_0xf402('0x36')];var _0x5dc335=_0x6fb6d2[_0xf402('0x27')][_0xf402('0x32')];var _0x387a44=_0x6fb6d2[_0xf402('0x27')][_0xf402('0x49')];return getAgent(_0x16f1ec)[_0xf402('0x1b')](function(_0xfddb50){logger[_0xf402('0xf')](_0xf402('0x2d'),_0xfddb50['name']);emit(util[_0xf402('0x2e')](_0xf402('0x2f'),_0xfddb50[_0xf402('0x16')]),_0xf402('0x4a'),{'sessionId':_0x5dc335,'transferNumber':_0x387a44});return _0xffbac5['status'](0xc8)['json']({'error':![],'message':_0xf402('0x4b')});})['catch'](handleError(_0xffbac5));};
\ No newline at end of file
+var _0x2121=['string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','request','then','message','catch','User','findOne','agent','VoiceChannels','all','filter','rows','sessionId','sessionId\x20','originate','originate\x20fired:','body','validate','length','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','originate\x20executed!','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer\x20fired:','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','util','bluebird','jayson/promise','client','http','webbarapi','redis','defaults','localhost','socket.io-emitter','number','userId\x20is\x20required'];(function(_0x5f038b,_0x372c73){var _0x32e7d9=function(_0x2c6ce9){while(--_0x2c6ce9){_0x5f038b['push'](_0x5f038b['shift']());}};_0x32e7d9(++_0x372c73);}(_0x2121,0x1b4));var _0x1212=function(_0x320fbe,_0x39e074){_0x320fbe=_0x320fbe-0x0;var _0x19807b=_0x2121[_0x320fbe];return _0x19807b;};'use strict';var path=require(_0x1212('0x0'));var fs=require('fs');var _=require(_0x1212('0x1'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0x1212('0x2'));var BPromise=require(_0x1212('0x3'));var jayson=require(_0x1212('0x4'));var amiClient=jayson[_0x1212('0x5')][_0x1212('0x6')]({'port':0x232a});var logger=require('../../config/logger')(_0x1212('0x7'));var Redis=require('ioredis');config[_0x1212('0x8')]=_[_0x1212('0x9')](config[_0x1212('0x8')],{'host':_0x1212('0xa'),'port':0x18eb});var io=require(_0x1212('0xb'))(new Redis(config[_0x1212('0x8')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x1212('0xc'),'required':[!![],_0x1212('0xd')]},'callNumber':{'type':_0x1212('0xe'),'required':[!![],_0x1212('0xf')]},'callerId':{'type':_0x1212('0xe')},'callbackUrl':{'type':_0x1212('0xe')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x1212('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1212('0xc'),'required':[!![],_0x1212('0xd')]},'sessionId':{'type':_0x1212('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x1212('0xd')]},'sessionId':{'type':_0x1212('0xe'),'required':[!![],_0x1212('0x10')]},'transferNumber':{'type':_0x1212('0xe'),'required':[!![],_0x1212('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x1212('0xc'),'required':[!![],_0x1212('0xd')]},'sessionId':{'type':_0x1212('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x1212('0xc'),'required':[!![],_0x1212('0xd')]},'sessionId':{'type':_0x1212('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x1212('0xc'),'required':[!![],_0x1212('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x1212('0xc'),'required':[!![],_0x1212('0xd')]}});function emit(_0x5cc246,_0x568870,_0x54ae52){logger[_0x1212('0x12')](_0x5cc246,_0x568870,JSON[_0x1212('0x13')](_0x54ae52));io['to'](_0x5cc246)[_0x1212('0x14')](_0x568870,_0x54ae52);}function handleError(_0x3dd9dd){return function(_0x3cf284){console[_0x1212('0x15')](_0x1212('0x16'),_0x3cf284,_0x3cf284 instanceof RangeError);logger[_0x1212('0x17')](_0x3cf284[_0x1212('0x18')]);if(_0x3cf284 instanceof RangeError){if(_0x3cf284['name']){delete _0x3cf284[_0x1212('0x19')];}_0x3dd9dd[_0x1212('0x1a')](0x194)[_0x1212('0x1b')](_0x3cf284);}else{if(_0x3cf284[_0x1212('0x19')]){delete _0x3cf284[_0x1212('0x19')];}_0x3dd9dd[_0x1212('0x1a')](0x1f4)[_0x1212('0x1b')](_0x3cf284);}};}function checkError(){return function(_0x8d4002){if(!_0x8d4002){throw new RangeError('NotFound');}return _0x8d4002;};}function respondWithRpcPromise(_0x38a5e2,_0x3a9664){return new BPromise(function(_0x46d6df,_0x5d15ca){var _0x1571fd=amiClient;return _0x1571fd[_0x1212('0x1c')](_0x38a5e2,_0x3a9664)[_0x1212('0x1d')](function(_0x28c92b){if(_0x28c92b['error']){if(_0x28c92b['error']['code']===0x1f4){return _0x5d15ca(_0x28c92b['error']['message']);}return _0x46d6df(_0x28c92b[_0x1212('0x17')][_0x1212('0x1e')]);}else{_0x46d6df(_0x28c92b['result']);}})[_0x1212('0x1f')](function(_0xa1c850){_0x5d15ca(_0xa1c850);});});}function getAgent(_0x52c7b0){return db[_0x1212('0x20')][_0x1212('0x21')]({'where':{'id':_0x52c7b0,'role':_0x1212('0x22')}})[_0x1212('0x1d')](checkError());}function getAgentCheckSession(_0x3a0ddf,_0x3f6be3){return new BPromise(function(_0x2750b0,_0x2666be){var _0x53aa25=respondWithRpcPromise(_0x1212('0x23'));var _0x7706a0=getAgent(_0x3a0ddf);Promise[_0x1212('0x24')]([_0x53aa25,_0x7706a0])[_0x1212('0x1d')](function(_0x17d0f6){var _0x26446d=_0x17d0f6[0x0];var _0x315f00=_0x17d0f6[0x1];var _0x40b8f6=_[_0x1212('0x25')](_0x26446d[_0x1212('0x26')],function(_0x4b8e34){return _0x4b8e34['UserId']==_0x315f00['id']&&_0x4b8e34[_0x1212('0x27')]==_0x3f6be3;});if(_0x40b8f6['length']==0x1){_0x2750b0(_0x315f00);}else{_0x2666be(new RangeError(_0x1212('0x28')+_0x3f6be3+'\x20not\x20found!'));}});});}exports[_0x1212('0x29')]=function(_0x585bb6,_0x2c9313){logger[_0x1212('0x12')](_0x1212('0x2a'),_0x585bb6[_0x1212('0x2b')]);var _0x4df9d1=originateValidation[_0x1212('0x2c')](_0x585bb6[_0x1212('0x2b')]);if(_0x4df9d1[_0x1212('0x2d')]>0x0){return _0x2c9313[_0x1212('0x1a')](0x190)[_0x1212('0x2e')](_0x4df9d1);}var _0x47c63f=_0x585bb6[_0x1212('0x2b')][_0x1212('0x2f')];var _0x1cf542=_0x585bb6['body'][_0x1212('0x30')];var _0x33309a=_0x585bb6[_0x1212('0x2b')][_0x1212('0x31')];var _0x52c611=_0x585bb6[_0x1212('0x2b')][_0x1212('0x32')];return getAgent(_0x47c63f)['then'](function(_0x405feb){logger[_0x1212('0x12')](_0x1212('0x33'),_0x405feb['name']);emit(util[_0x1212('0x34')](_0x1212('0x35'),_0x405feb[_0x1212('0x19')]),'webbar:originate',{'callNumber':_0x1cf542,'callerId':_0x33309a,'callbackUrl':_0x52c611});return _0x2c9313[_0x1212('0x1a')](0xc8)['json']({'error':![],'message':_0x1212('0x36')});})[_0x1212('0x1f')](handleError(_0x2c9313));};exports['hangup']=function(_0x4e5be7,_0x2447c6){logger['info'](_0x1212('0x37'),_0x4e5be7[_0x1212('0x2b')]);var _0x31a69c=hangupValidation[_0x1212('0x2c')](_0x4e5be7[_0x1212('0x2b')]);if(_0x31a69c[_0x1212('0x2d')]>0x0){return _0x2447c6[_0x1212('0x1a')](0x190)[_0x1212('0x2e')](_0x31a69c);}var _0x320a5c=_0x4e5be7[_0x1212('0x2b')][_0x1212('0x2f')];var _0x1bbb84=_0x4e5be7[_0x1212('0x2b')][_0x1212('0x27')];return getAgent(_0x320a5c)[_0x1212('0x1d')](function(_0x42b95a){logger[_0x1212('0x12')](_0x1212('0x33'),_0x42b95a['name']);emit(util[_0x1212('0x34')]('user:%s',_0x42b95a['name']),_0x1212('0x38'),{'sessionId':_0x1bbb84});return _0x2447c6[_0x1212('0x1a')](0xc8)[_0x1212('0x2e')]({'error':![],'message':_0x1212('0x39')});})[_0x1212('0x1f')](handleError(_0x2447c6));};exports['answer']=function(_0x497c20,_0x37391e){logger[_0x1212('0x12')](_0x1212('0x3a'),_0x497c20[_0x1212('0x2b')]);var _0x45fc95=answerValidation[_0x1212('0x2c')](_0x497c20[_0x1212('0x2b')]);if(_0x45fc95[_0x1212('0x2d')]>0x0){return _0x37391e[_0x1212('0x1a')](0x190)[_0x1212('0x2e')](_0x45fc95);}var _0x1af6ae=_0x497c20[_0x1212('0x2b')]['userId'];var _0x584d32=_0x497c20[_0x1212('0x2b')][_0x1212('0x27')];return getAgent(_0x1af6ae)['then'](function(_0x1a9c63){logger['info'](_0x1212('0x33'),_0x1a9c63[_0x1212('0x19')]);emit(util[_0x1212('0x34')](_0x1212('0x35'),_0x1a9c63[_0x1212('0x19')]),'webbar:answer',{'sessionId':_0x584d32});return _0x37391e[_0x1212('0x1a')](0xc8)[_0x1212('0x2e')]({'error':![],'message':_0x1212('0x3b')});})['catch'](handleError(_0x37391e));};exports[_0x1212('0x3c')]=function(_0x298538,_0x4b1625){logger[_0x1212('0x12')](_0x1212('0x3d'),_0x298538[_0x1212('0x2b')]);var _0x126df5=holdValidation[_0x1212('0x2c')](_0x298538[_0x1212('0x2b')]);if(_0x126df5['length']>0x0){return _0x4b1625[_0x1212('0x1a')](0x190)[_0x1212('0x2e')](_0x126df5);}var _0x3a4f8c=_0x298538['body']['userId'];var _0xf7d207=_0x298538['body'][_0x1212('0x27')];return getAgent(_0x3a4f8c)['then'](function(_0x50a8ef){logger[_0x1212('0x12')](_0x1212('0x33'),_0x50a8ef['name']);emit(util[_0x1212('0x34')]('user:%s',_0x50a8ef[_0x1212('0x19')]),_0x1212('0x3e'),{'sessionId':_0xf7d207});return _0x4b1625['status'](0xc8)['json']({'error':![],'message':_0x1212('0x3f')});})['catch'](handleError(_0x4b1625));};exports[_0x1212('0x40')]=function(_0x53a46f,_0x20e66f){logger['info'](_0x1212('0x41'),_0x53a46f[_0x1212('0x2b')]);var _0x249066=unholdValidation[_0x1212('0x2c')](_0x53a46f[_0x1212('0x2b')]);if(_0x249066[_0x1212('0x2d')]>0x0){return _0x20e66f['status'](0x190)['json'](_0x249066);}var _0x2a983e=_0x53a46f[_0x1212('0x2b')][_0x1212('0x2f')];var _0x140984=_0x53a46f[_0x1212('0x2b')][_0x1212('0x27')];return getAgent(_0x2a983e)['then'](function(_0x5e3644){logger['info'](_0x1212('0x33'),_0x5e3644[_0x1212('0x19')]);emit(util[_0x1212('0x34')](_0x1212('0x35'),_0x5e3644[_0x1212('0x19')]),'webbar:unhold',{'sessionId':_0x140984});return _0x20e66f[_0x1212('0x1a')](0xc8)[_0x1212('0x2e')]({'error':![],'message':_0x1212('0x42')});})[_0x1212('0x1f')](handleError(_0x20e66f));};exports[_0x1212('0x43')]=function(_0x271ecf,_0x4901c1){logger[_0x1212('0x12')](_0x1212('0x44'),_0x4901c1[_0x1212('0x2b')]);var _0x4a86bd=callsValidation[_0x1212('0x2c')](_0x271ecf[_0x1212('0x2b')]);if(_0x4a86bd[_0x1212('0x2d')]>0x0){return _0x4901c1[_0x1212('0x1a')](0x190)['json'](_0x4a86bd);}var _0x27e94b=_0x271ecf[_0x1212('0x2b')][_0x1212('0x2f')];var _0x41e155=respondWithRpcPromise(_0x1212('0x23'));var _0x162fb0=getAgent(_0x27e94b);return Promise['all']([_0x41e155,_0x162fb0])[_0x1212('0x1d')](function(_0x4ee27a){var _0x568935=_0x4ee27a[0x0];var _0x3c940a=_0x4ee27a[0x1];var _0x343e54=_['filter'](_0x568935[_0x1212('0x26')],function(_0x486162){return _0x486162['UserId']==_0x3c940a['id'];});return _0x4901c1['status'](0xc8)['json']({'count':_0x343e54['length'],'rows':_0x343e54});})[_0x1212('0x1f')](handleError(_0x4901c1));};exports[_0x1212('0x45')]=function(_0x467c40,_0x121f00){logger[_0x1212('0x12')](_0x1212('0x46'),_0x467c40[_0x1212('0x2b')]);var _0x41f7be=conferenceValidation[_0x1212('0x2c')](_0x467c40[_0x1212('0x2b')]);if(_0x41f7be[_0x1212('0x2d')]>0x0){return _0x121f00[_0x1212('0x1a')](0x190)[_0x1212('0x2e')](_0x41f7be);}var _0x49c742=_0x467c40[_0x1212('0x2b')]['userId'];return getAgent(_0x49c742)[_0x1212('0x1d')](function(_0x1170cb){logger[_0x1212('0x12')](_0x1212('0x33'),_0x1170cb[_0x1212('0x19')]);emit(util[_0x1212('0x34')](_0x1212('0x35'),_0x1170cb[_0x1212('0x19')]),'webbar:conference');return _0x121f00[_0x1212('0x1a')](0xc8)[_0x1212('0x2e')]({'error':![],'message':_0x1212('0x47')});})[_0x1212('0x1f')](handleError(_0x121f00));};exports['transfer']=function(_0xa0f4f2,_0x28bb5e){logger['info'](_0x1212('0x48'),_0xa0f4f2[_0x1212('0x2b')]);var _0x519879=transferValidation[_0x1212('0x2c')](_0xa0f4f2[_0x1212('0x2b')]);if(_0x519879[_0x1212('0x2d')]>0x0){return _0x28bb5e[_0x1212('0x1a')](0x190)[_0x1212('0x2e')](_0x519879);}var _0x3a9843=_0xa0f4f2[_0x1212('0x2b')][_0x1212('0x2f')];var _0x388432=_0xa0f4f2[_0x1212('0x2b')][_0x1212('0x27')];var _0x59b660=_0xa0f4f2[_0x1212('0x2b')]['transferNumber'];return getAgent(_0x3a9843)[_0x1212('0x1d')](function(_0x54cca8){logger[_0x1212('0x12')](_0x1212('0x33'),_0x54cca8[_0x1212('0x19')]);emit(util[_0x1212('0x34')]('user:%s',_0x54cca8['name']),_0x1212('0x49'),{'sessionId':_0x388432,'transferNumber':_0x59b660});return _0x28bb5e[_0x1212('0x1a')](0xc8)[_0x1212('0x2e')]({'error':![],'message':_0x1212('0x4a')});})['catch'](handleError(_0x28bb5e));};
\ No newline at end of file
index 09c06a9..d018e6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['Router','./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/users','addAgents','send','put','delete','destroy','removeDispositions','/:id/canned_answers','removeAgents','multer','connect-timeout','express'];(function(_0x3b7ac6,_0x501f60){var _0x45a3f0=function(_0x1dbeff){while(--_0x1dbeff){_0x3b7ac6['push'](_0x3b7ac6['shift']());}};_0x45a3f0(++_0x501f60);}(_0x430c,0x1a1));var _0xc430=function(_0x59342a,_0x16827b){_0x59342a=_0x59342a-0x0;var _0x17abc9=_0x430c[_0x59342a];return _0x17abc9;};'use strict';var multer=require(_0xc430('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc430('0x1'));var express=require(_0xc430('0x2'));var router=express[_0xc430('0x3')]();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(_0xc430('0x4'));router[_0xc430('0x5')]('/',auth['isAuthenticated'](),controller[_0xc430('0x6')]);router['get'](_0xc430('0x7'),auth[_0xc430('0x8')](),controller[_0xc430('0x9')]);router[_0xc430('0x5')](_0xc430('0xa'),auth[_0xc430('0x8')](),controller[_0xc430('0xb')]);router[_0xc430('0x5')](_0xc430('0xc'),auth['isAuthenticated'](),controller[_0xc430('0xd')]);router[_0xc430('0x5')]('/:id/canned_answers',auth[_0xc430('0x8')](),controller['getAnswers']);router[_0xc430('0x5')]('/:id/users',auth[_0xc430('0x8')](),controller[_0xc430('0xe')]);router[_0xc430('0x5')](_0xc430('0xf'),auth[_0xc430('0x8')](),controller[_0xc430('0x10')]);router[_0xc430('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc430('0x11')](_0xc430('0xc'),auth[_0xc430('0x8')](),controller[_0xc430('0x12')]);router[_0xc430('0x11')]('/:id/canned_answers',auth[_0xc430('0x8')](),controller['addAnswer']);router['post'](_0xc430('0x13'),auth[_0xc430('0x8')](),controller[_0xc430('0x14')]);router['post']('/:id/applications',auth[_0xc430('0x8')](),controller['addApplications']);router[_0xc430('0x11')]('/:id/notify',controller['notify']);router[_0xc430('0x11')]('/:id/send',auth[_0xc430('0x8')](),controller[_0xc430('0x15')]);router[_0xc430('0x16')](_0xc430('0xa'),auth[_0xc430('0x8')](),controller['update']);router[_0xc430('0x17')]('/:id',auth['isAuthenticated'](),controller[_0xc430('0x18')]);router[_0xc430('0x17')](_0xc430('0xc'),auth['isAuthenticated'](),controller[_0xc430('0x19')]);router['delete'](_0xc430('0x1a'),auth[_0xc430('0x8')](),controller['removeAnswers']);router[_0xc430('0x17')](_0xc430('0x13'),auth['isAuthenticated'](),controller[_0xc430('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x0598=['put','update','delete','destroy','/:id/canned_answers','removeAgents','multer','util','connect-timeout','fs-extra','../../components/auth/service','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/users','addAgents','addApplications','/:id/notify'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x0598,0x92));var _0x8059=function(_0x2a3090,_0x1a0f97){_0x2a3090=_0x2a3090-0x0;var _0x530f51=_0x0598[_0x2a3090];return _0x530f51;};'use strict';var multer=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var path=require('path');var timeout=require(_0x8059('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8059('0x3'));var auth=require(_0x8059('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./whatsappAccount.controller');router[_0x8059('0x5')]('/',auth[_0x8059('0x6')](),controller['index']);router['get'](_0x8059('0x7'),auth[_0x8059('0x6')](),controller[_0x8059('0x8')]);router[_0x8059('0x5')]('/:id',auth['isAuthenticated'](),controller[_0x8059('0x9')]);router[_0x8059('0x5')](_0x8059('0xa'),auth[_0x8059('0x6')](),controller[_0x8059('0xb')]);router['get']('/:id/canned_answers',auth[_0x8059('0x6')](),controller[_0x8059('0xc')]);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x8059('0xd')]);router[_0x8059('0x5')](_0x8059('0xe'),auth[_0x8059('0x6')](),controller[_0x8059('0xf')]);router['post']('/',auth[_0x8059('0x6')](),controller['create']);router[_0x8059('0x10')]('/:id/dispositions',auth[_0x8059('0x6')](),controller[_0x8059('0x11')]);router[_0x8059('0x10')]('/:id/canned_answers',auth['isAuthenticated'](),controller['addAnswer']);router[_0x8059('0x10')](_0x8059('0x12'),auth[_0x8059('0x6')](),controller[_0x8059('0x13')]);router[_0x8059('0x10')]('/:id/applications',auth[_0x8059('0x6')](),controller[_0x8059('0x14')]);router[_0x8059('0x10')](_0x8059('0x15'),controller['notify']);router[_0x8059('0x10')]('/:id/send',auth[_0x8059('0x6')](),controller['send']);router[_0x8059('0x16')]('/:id',auth[_0x8059('0x6')](),controller[_0x8059('0x17')]);router[_0x8059('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x8059('0x19')]);router[_0x8059('0x18')](_0x8059('0xa'),auth[_0x8059('0x6')](),controller['removeDispositions']);router[_0x8059('0x18')](_0x8059('0x1a'),auth[_0x8059('0x6')](),controller['removeAnswers']);router[_0x8059('0x18')](_0x8059('0x12'),auth[_0x8059('0x6')](),controller[_0x8059('0x1b')]);module['exports']=router;
\ No newline at end of file
index 65479cb..68b02dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f68=['STRING','generate','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','setDataValue','mandatoryDisposition','sequelize','randomstring','exports'];(function(_0x42b4c5,_0x21f581){var _0x540b23=function(_0x4680b8){while(--_0x4680b8){_0x42b4c5['push'](_0x42b4c5['shift']());}};_0x540b23(++_0x21f581);}(_0x4f68,0x14d));var _0x84f6=function(_0x462c76,_0x3d0d7b){_0x462c76=_0x462c76-0x0;var _0x528309=_0x4f68[_0x462c76];return _0x528309;};'use strict';var Sequelize=require(_0x84f6('0x0'));var rs=require(_0x84f6('0x1'));module[_0x84f6('0x2')]={'name':{'type':Sequelize[_0x84f6('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x84f6('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x84f6('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x84f6('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x84f6('0x5')](_0x84f6('0x6'),_0x84f6('0x7'))},'accountSid':{'type':Sequelize[_0x84f6('0x3')]},'baseUrl':{'type':Sequelize[_0x84f6('0x3')]},'authToken':{'type':Sequelize[_0x84f6('0x3')]},'notificationTemplate':{'type':Sequelize[_0x84f6('0x8')],'defaultValue':function(){return _0x84f6('0x9');}},'notificationSound':{'type':Sequelize[_0x84f6('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x84f6('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x84f6('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x84f6('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x84f6('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x84f6('0xb')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x84f6('0xa')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4c50fd){if(!_0x4c50fd){this[_0x84f6('0xc')]('mandatoryDispositionPauseId',null);}this[_0x84f6('0xc')](_0x84f6('0xd'),_0x4c50fd);}},'description':{'type':Sequelize[_0x84f6('0x3')]}};
\ No newline at end of file
+var _0x3ecb=['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','mandatoryDisposition','sequelize','randomstring','name','STRING','generate','ENUM','twilio','sinch','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3ecb,0x1b1));var _0xb3ec=function(_0x11e1ef,_0x3cbe5e){_0x11e1ef=_0x11e1ef-0x0;var _0x125d5b=_0x3ecb[_0x11e1ef];return _0x125d5b;};'use strict';var Sequelize=require(_0xb3ec('0x0'));var rs=require(_0xb3ec('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xb3ec('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0xb3ec('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xb3ec('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xb3ec('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xb3ec('0x5')](_0xb3ec('0x6'),_0xb3ec('0x7'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0xb3ec('0x3')]},'authToken':{'type':Sequelize[_0xb3ec('0x3')]},'notificationTemplate':{'type':Sequelize[_0xb3ec('0x8')],'defaultValue':function(){return _0xb3ec('0x9');}},'notificationSound':{'type':Sequelize[_0xb3ec('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xb3ec('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb3ec('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb3ec('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0xb3ec('0xc')},'mandatoryDisposition':{'type':Sequelize[_0xb3ec('0xa')],'defaultValue':![],'comment':_0xb3ec('0xd'),'set':function(_0x21fe11){if(!_0x21fe11){this[_0xb3ec('0xe')](_0xb3ec('0xf'),null);}this[_0xb3ec('0xe')](_0xb3ec('0x10'),_0x21fe11);}},'description':{'type':Sequelize[_0xb3ec('0x3')]}};
\ No newline at end of file
index 67ed1b4..73340a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f28=['stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','UserProfileResource','destroy','stack','name','send','Pause','mandatoryDispositionPause','map','WhatsappAccount','type','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','get','role','user','WhatsappAccounts','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','Disposition','order','WhatsappAccountId','ids','CannedAnswer','findOne','removeAnswers','addAgents','omit','spread','emit','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','sequelize','transaction','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','notify','whatsapp','account','sinch','statuses','state','read','timestamp','message_id','applications','orderBy','Applications','CmContact','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','mobile','twilio','from','From','replace','Body','messageId','MessageSid','notifications','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','ValidationError','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','set','Content-Type','text/xml','to\x20is\x20mandatory','List','out','WhatsappMessage','Messages','dataValues','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','then','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s'];(function(_0xee9b54,_0x4bd2c9){var _0x374605=function(_0x3e7100){while(--_0x3e7100){_0xee9b54['push'](_0xee9b54['shift']());}};_0x374605(++_0x4bd2c9);}(_0x7f28,0x160));var _0x87f2=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x7f28[_0x126558];return _0x1f6d14;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x87f2('0x0'));var jsonpatch=require(_0x87f2('0x1'));var rp=require(_0x87f2('0x2'));var moment=require(_0x87f2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x87f2('0x4'));var util=require(_0x87f2('0x5'));var path=require(_0x87f2('0x6'));var sox=require(_0x87f2('0x7'));var csv=require(_0x87f2('0x8'));var ejs=require(_0x87f2('0x9'));var fs=require('fs');var fs_extra=require(_0x87f2('0xa'));var _=require(_0x87f2('0xb'));var squel=require(_0x87f2('0xc'));var crypto=require(_0x87f2('0xd'));var jsforce=require(_0x87f2('0xe'));var deskjs=require(_0x87f2('0xf'));var toCsv=require(_0x87f2('0x8'));var querystring=require(_0x87f2('0x10'));var Papa=require(_0x87f2('0x11'));var Redis=require(_0x87f2('0x12'));var authService=require(_0x87f2('0x13'));var qs=require(_0x87f2('0x14'));var as=require(_0x87f2('0x15'));var hardwareService=require(_0x87f2('0x16'));var logger=require(_0x87f2('0x17'))(_0x87f2('0x18'));var utils=require(_0x87f2('0x19'));var config=require(_0x87f2('0x1a'));var licenseUtil=require(_0x87f2('0x1b'));var db=require(_0x87f2('0x1c'))['db'];config[_0x87f2('0x1d')]=_[_0x87f2('0x1e')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x87f2('0x1f'))(new Redis(config[_0x87f2('0x1d')]));require(_0x87f2('0x20'))[_0x87f2('0x21')](socket);var jayson=require(_0x87f2('0x22'));var client=jayson[_0x87f2('0x23')][_0x87f2('0x24')]({'port':0x232c});function respondWithRpcPromise(_0x32878f,_0xa21528,_0x36f78d,_0x59e9ff){return new BPromise(function(_0x544efe,_0x3ba004){var _0x1016bc=_0x59e9ff||client;return _0x1016bc['request'](_0x32878f,_0x36f78d)[_0x87f2('0x25')](function(_0x5e1b3c){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0xa21528,_0x87f2('0x26'));logger['debug'](_0x87f2('0x27'),_0xa21528,_0x87f2('0x26'),JSON[_0x87f2('0x28')](_0x5e1b3c));if(_0x5e1b3c[_0x87f2('0x29')]){if(_0x5e1b3c['error'][_0x87f2('0x2a')]===0x1f4){logger['error'](_0x87f2('0x2b'),_0xa21528,_0x5e1b3c[_0x87f2('0x29')][_0x87f2('0x2c')]);return _0x3ba004(_0x5e1b3c[_0x87f2('0x29')]['message']);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0xa21528,_0x5e1b3c[_0x87f2('0x29')][_0x87f2('0x2c')]);return _0x544efe(_0x5e1b3c[_0x87f2('0x29')][_0x87f2('0x2c')]);}else{logger[_0x87f2('0x2d')](_0x87f2('0x2b'),_0xa21528,_0x87f2('0x26'));_0x544efe(_0x5e1b3c[_0x87f2('0x2e')][_0x87f2('0x2c')]);}})[_0x87f2('0x2f')](function(_0x32219a){logger[_0x87f2('0x29')](_0x87f2('0x2b'),_0xa21528,_0x32219a);_0x3ba004(_0x32219a);});});}function respondWithStatusCode(_0x483e87,_0x1acde4){_0x1acde4=_0x1acde4||0xcc;return function(_0x275f2d){if(_0x275f2d){return _0x483e87[_0x87f2('0x30')](_0x1acde4);}return _0x483e87['status'](_0x1acde4)[_0x87f2('0x31')]();};}function respondWithResult(_0x3a311f,_0x58232e){_0x58232e=_0x58232e||0xc8;return function(_0x111316){if(_0x111316){return _0x3a311f[_0x87f2('0x32')](_0x58232e)[_0x87f2('0x33')](_0x111316);}};}function respondWithFilteredResult(_0x59d7a1,_0x41e160){return function(_0x2cb51c){if(_0x2cb51c){var _0x3945f2=typeof _0x41e160[_0x87f2('0x34')]===_0x87f2('0x35')&&typeof _0x41e160[_0x87f2('0x36')]===_0x87f2('0x35');var _0x585e4f=_0x2cb51c['count'];var _0x378fc4=_0x3945f2?0x0:_0x41e160[_0x87f2('0x34')];var _0x515c1a=_0x3945f2?_0x2cb51c[_0x87f2('0x37')]:_0x41e160['offset']+_0x41e160[_0x87f2('0x36')];var _0x35e893;if(_0x515c1a>=_0x585e4f){_0x515c1a=_0x585e4f;_0x35e893=0xc8;}else{_0x35e893=0xce;}_0x59d7a1[_0x87f2('0x32')](_0x35e893);return _0x59d7a1['set'](_0x87f2('0x38'),_0x378fc4+'-'+_0x515c1a+'/'+_0x585e4f)[_0x87f2('0x33')](_0x2cb51c);}return null;};}function patchUpdates(_0x462c38){return function(_0x2d9589){try{jsonpatch[_0x87f2('0x39')](_0x2d9589,_0x462c38,!![]);}catch(_0x4cbae2){return BPromise[_0x87f2('0x3a')](_0x4cbae2);}return _0x2d9589[_0x87f2('0x3b')]();};}function saveUpdates(_0x4dceae,_0x4d091d){return function(_0x33b8c5){if(_0x33b8c5){return _0x33b8c5['update'](_0x4dceae)['then'](function(_0x14f7c7){return _0x14f7c7;});}return null;};}function removeEntity(_0x37228d,_0x309a4a){return function(_0xdd7990){if(_0xdd7990){return _0xdd7990['destroy']()['then'](function(){var _0x43bc80=_0xdd7990['get']({'plain':!![]});var _0x3333f3='WhatsappAccounts';return db[_0x87f2('0x3c')][_0x87f2('0x3d')]({'where':{'type':_0x3333f3,'resourceId':_0x43bc80['id']}})[_0x87f2('0x25')](function(){return _0xdd7990;});})[_0x87f2('0x25')](function(){_0x37228d[_0x87f2('0x32')](0xcc)[_0x87f2('0x31')]();});}};}function handleEntityNotFound(_0x8da09c,_0x36f74f){return function(_0x31253d){if(!_0x31253d){_0x8da09c['sendStatus'](0x194);}return _0x31253d;};}function handleError(_0x4d62fa,_0x4a1223){_0x4a1223=_0x4a1223||0x1f4;return function(_0x196327){logger['error'](_0x196327[_0x87f2('0x3e')]);if(_0x196327[_0x87f2('0x3f')]){delete _0x196327[_0x87f2('0x3f')];}_0x4d62fa[_0x87f2('0x32')](_0x4a1223)[_0x87f2('0x40')](_0x196327);};}exports['index']=function(_0xecc6dd,_0x42a95f){var _0x44e369={'include':[{'model':db[_0x87f2('0x41')],'as':_0x87f2('0x42')}]},_0x369728={},_0x4dee59={'count':0x0,'rows':[]};var _0xd1132e=_[_0x87f2('0x43')](db[_0x87f2('0x44')]['rawAttributes'],function(_0x2e8252){return{'name':_0x2e8252['fieldName'],'type':_0x2e8252[_0x87f2('0x45')]['key']};});_0x369728[_0x87f2('0x46')]=_[_0x87f2('0x43')](_0xd1132e,'name');_0x369728['query']=_[_0x87f2('0x47')](_0xecc6dd[_0x87f2('0x48')]);_0x369728[_0x87f2('0x49')]=_['intersection'](_0x369728[_0x87f2('0x46')],_0x369728[_0x87f2('0x48')]);_0x44e369[_0x87f2('0x4a')]=_[_0x87f2('0x4b')](_0x369728[_0x87f2('0x46')],qs['fields'](_0xecc6dd[_0x87f2('0x48')][_0x87f2('0x4c')]));_0x44e369[_0x87f2('0x4a')]=_0x44e369[_0x87f2('0x4a')][_0x87f2('0x4d')]?_0x44e369['attributes']:_0x369728[_0x87f2('0x46')];if(!_0xecc6dd[_0x87f2('0x48')][_0x87f2('0x4e')](_0x87f2('0x4f'))){_0x44e369[_0x87f2('0x36')]=qs[_0x87f2('0x36')](_0xecc6dd[_0x87f2('0x48')][_0x87f2('0x36')]);_0x44e369[_0x87f2('0x34')]=qs[_0x87f2('0x34')](_0xecc6dd[_0x87f2('0x48')]['offset']);}_0x44e369['order']=qs[_0x87f2('0x50')](_0xecc6dd['query'][_0x87f2('0x50')]);_0x44e369[_0x87f2('0x51')]=qs[_0x87f2('0x49')](_[_0x87f2('0x52')](_0xecc6dd[_0x87f2('0x48')],_0x369728[_0x87f2('0x49')]),_0xd1132e);if(_0xecc6dd['query'][_0x87f2('0x53')]){_0x44e369['where']=_[_0x87f2('0x54')](_0x44e369['where'],{'$or':_[_0x87f2('0x43')](_0xd1132e,function(_0x151c4f){if(_0x151c4f[_0x87f2('0x45')]!=='VIRTUAL'){var _0x4b9aeb={};_0x4b9aeb[_0x151c4f['name']]={'$like':'%'+_0xecc6dd[_0x87f2('0x48')][_0x87f2('0x53')]+'%'};return _0x4b9aeb;}})});}_0x44e369=_[_0x87f2('0x54')]({},_0x44e369,_0xecc6dd[_0x87f2('0x55')]);var _0x36d7dd={'where':_0x44e369[_0x87f2('0x51')]};return db[_0x87f2('0x44')]['count'](_0x36d7dd)[_0x87f2('0x25')](function(_0x1d5cdd){_0x4dee59[_0x87f2('0x37')]=_0x1d5cdd;if(_0xecc6dd['query'][_0x87f2('0x56')]){_0x44e369[_0x87f2('0x57')]=[{'all':!![]}];}return db[_0x87f2('0x44')][_0x87f2('0x58')](_0x44e369);})[_0x87f2('0x25')](function(_0x16b98a){_0x4dee59[_0x87f2('0x59')]=_0x16b98a;return _0x4dee59;})[_0x87f2('0x25')](respondWithFilteredResult(_0x42a95f,_0x44e369))[_0x87f2('0x2f')](handleError(_0x42a95f,null));};exports[_0x87f2('0x5a')]=function(_0x576259,_0x4a7710){var _0xfa355a={'raw':![],'where':{'id':_0x576259[_0x87f2('0x5b')]['id']},'include':[{'model':db[_0x87f2('0x41')],'as':_0x87f2('0x42')}]},_0x1e8e55={};_0x1e8e55[_0x87f2('0x46')]=_['keys'](db[_0x87f2('0x44')][_0x87f2('0x5c')]);_0x1e8e55[_0x87f2('0x48')]=_['keys'](_0x576259[_0x87f2('0x48')]);_0x1e8e55[_0x87f2('0x49')]=_['intersection'](_0x1e8e55[_0x87f2('0x46')],_0x1e8e55[_0x87f2('0x48')]);_0xfa355a[_0x87f2('0x4a')]=_[_0x87f2('0x4b')](_0x1e8e55[_0x87f2('0x46')],qs[_0x87f2('0x4c')](_0x576259[_0x87f2('0x48')][_0x87f2('0x4c')]));_0xfa355a[_0x87f2('0x4a')]=_0xfa355a[_0x87f2('0x4a')]['length']?_0xfa355a[_0x87f2('0x4a')]:_0x1e8e55[_0x87f2('0x46')];if(_0x576259[_0x87f2('0x48')][_0x87f2('0x56')]){_0xfa355a[_0x87f2('0x57')]=[{'all':!![]}];}_0xfa355a=_[_0x87f2('0x54')]({},_0xfa355a,_0x576259['options']);return db[_0x87f2('0x44')][_0x87f2('0x5d')](_0xfa355a)[_0x87f2('0x25')](handleEntityNotFound(_0x4a7710,null))[_0x87f2('0x25')](respondWithResult(_0x4a7710,null))['catch'](handleError(_0x4a7710,null));};exports[_0x87f2('0x5e')]=function(_0x189e61,_0x2da2fe){return db['WhatsappAccount'][_0x87f2('0x5e')](_0x189e61['body'],{})[_0x87f2('0x25')](function(_0x37dce9){var _0x6c9877=_0x189e61['user'][_0x87f2('0x5f')]({'plain':!![]});if(!_0x6c9877)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x6c9877[_0x87f2('0x60')]===_0x87f2('0x61')){var _0x5fa4b5=_0x37dce9['get']({'plain':!![]});var _0x569062=_0x87f2('0x62');return db['UserProfileSection']['find']({'where':{'name':_0x569062,'userProfileId':_0x6c9877['userProfileId']},'raw':!![]})[_0x87f2('0x25')](function(_0x59ca88){if(_0x59ca88&&_0x59ca88[_0x87f2('0x63')]===0x0){return db[_0x87f2('0x3c')][_0x87f2('0x5e')]({'name':_0x5fa4b5[_0x87f2('0x3f')],'resourceId':_0x5fa4b5['id'],'type':_0x59ca88['name'],'sectionId':_0x59ca88['id']},{})[_0x87f2('0x25')](function(){return _0x37dce9;});}else{return _0x37dce9;}})[_0x87f2('0x2f')](function(_0x16526c){logger[_0x87f2('0x29')](_0x87f2('0x64'),_0x16526c);throw _0x16526c;});}return _0x37dce9;})[_0x87f2('0x25')](respondWithResult(_0x2da2fe,0xc9))[_0x87f2('0x2f')](handleError(_0x2da2fe,null));};exports[_0x87f2('0x65')]=function(_0x585d1e,_0x50108a){if(_0x585d1e[_0x87f2('0x66')]['id']){delete _0x585d1e['body']['id'];}return db[_0x87f2('0x44')][_0x87f2('0x5d')]({'where':{'id':_0x585d1e[_0x87f2('0x5b')]['id']},'include':[{'model':db[_0x87f2('0x41')],'as':_0x87f2('0x42')}]})[_0x87f2('0x25')](handleEntityNotFound(_0x50108a,null))[_0x87f2('0x25')](saveUpdates(_0x585d1e[_0x87f2('0x66')],null))[_0x87f2('0x25')](respondWithResult(_0x50108a,null))[_0x87f2('0x2f')](handleError(_0x50108a,null));};exports[_0x87f2('0x3d')]=function(_0x5af37f,_0x2e85af){return db[_0x87f2('0x44')][_0x87f2('0x5d')]({'where':{'id':_0x5af37f[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x2e85af,null))[_0x87f2('0x25')](removeEntity(_0x2e85af,null))[_0x87f2('0x2f')](handleError(_0x2e85af,null));};exports[_0x87f2('0x67')]=function(_0x1fd84b,_0x6524ff){return db[_0x87f2('0x44')][_0x87f2('0x67')]()[_0x87f2('0x25')](respondWithResult(_0x6524ff,null))['catch'](handleError(_0x6524ff,null));};exports['addDisposition']=function(_0x13df8e,_0x22966e,_0x238fc4){if(_0x13df8e['body']['id']){delete _0x13df8e[_0x87f2('0x66')]['id'];}return db['WhatsappAccount'][_0x87f2('0x5d')]({'where':{'id':_0x13df8e[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x22966e,null))[_0x87f2('0x25')](function(_0x2ab2a9){if(_0x2ab2a9){_0x13df8e['body']['WhatsappAccountId']=_0x2ab2a9['id'];return db[_0x87f2('0x68')][_0x87f2('0x5e')](_0x13df8e[_0x87f2('0x66')]);}})['then'](respondWithResult(_0x22966e,null))[_0x87f2('0x2f')](handleError(_0x22966e,null));};exports['getDispositions']=function(_0x313a23,_0x12f5d4,_0x68eb94){var _0x3facb3={'raw':![],'where':{}};var _0xdbec5b={};var _0x4be750={'count':0x0,'rows':[]};return db[_0x87f2('0x44')]['findOne']({'where':{'id':_0x313a23[_0x87f2('0x5b')]['id']}})['then'](handleEntityNotFound(_0x12f5d4,null))[_0x87f2('0x25')](function(_0x558e2b){if(_0x558e2b){_0xdbec5b[_0x87f2('0x46')]=_[_0x87f2('0x47')](db[_0x87f2('0x68')][_0x87f2('0x5c')]);_0xdbec5b[_0x87f2('0x48')]=_[_0x87f2('0x47')](_0x313a23[_0x87f2('0x48')]);_0xdbec5b['filters']=_[_0x87f2('0x4b')](_0xdbec5b[_0x87f2('0x46')],_0xdbec5b[_0x87f2('0x48')]);_0x3facb3['attributes']=_[_0x87f2('0x4b')](_0xdbec5b['model'],qs[_0x87f2('0x4c')](_0x313a23[_0x87f2('0x48')][_0x87f2('0x4c')]));_0x3facb3['attributes']=_0x3facb3[_0x87f2('0x4a')][_0x87f2('0x4d')]?_0x3facb3[_0x87f2('0x4a')]:_0xdbec5b[_0x87f2('0x46')];if(!_0x313a23[_0x87f2('0x48')]['hasOwnProperty'](_0x87f2('0x4f'))){_0x3facb3['limit']=qs[_0x87f2('0x36')](_0x313a23['query']['limit']);_0x3facb3[_0x87f2('0x34')]=qs[_0x87f2('0x34')](_0x313a23[_0x87f2('0x48')][_0x87f2('0x34')]);}_0x3facb3[_0x87f2('0x69')]=qs[_0x87f2('0x50')](_0x313a23[_0x87f2('0x48')][_0x87f2('0x50')]);_0x3facb3[_0x87f2('0x51')]=qs['filters'](_[_0x87f2('0x52')](_0x313a23[_0x87f2('0x48')],_0xdbec5b[_0x87f2('0x49')]));_0x3facb3[_0x87f2('0x51')][_0x87f2('0x6a')]=_0x558e2b['id'];if(_0x313a23[_0x87f2('0x48')][_0x87f2('0x53')]){_0x3facb3[_0x87f2('0x51')]=_[_0x87f2('0x54')](_0x3facb3[_0x87f2('0x51')],{'$or':_['map'](_0x3facb3[_0x87f2('0x4a')],function(_0xac8e1f){var _0x4907e6={};_0x4907e6[_0xac8e1f]={'$like':'%'+_0x313a23[_0x87f2('0x48')][_0x87f2('0x53')]+'%'};return _0x4907e6;})});}_0x3facb3=_[_0x87f2('0x54')]({},_0x3facb3,_0x313a23[_0x87f2('0x55')]);return db[_0x87f2('0x68')][_0x87f2('0x37')]({'where':_0x3facb3[_0x87f2('0x51')]})[_0x87f2('0x25')](function(_0x168da9){_0x4be750[_0x87f2('0x37')]=_0x168da9;if(_0x313a23[_0x87f2('0x48')][_0x87f2('0x56')]){_0x3facb3['include']=[{'all':!![]}];}return db['Disposition'][_0x87f2('0x58')](_0x3facb3);})[_0x87f2('0x25')](function(_0x3e37fc){_0x4be750[_0x87f2('0x59')]=_0x3e37fc;return _0x4be750;});}})[_0x87f2('0x25')](respondWithFilteredResult(_0x12f5d4,_0x3facb3))[_0x87f2('0x2f')](handleError(_0x12f5d4,null));};exports['removeDispositions']=function(_0x1a184a,_0x17a6b2,_0x1ca9a7){return db[_0x87f2('0x44')]['find']({'where':{'id':_0x1a184a[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x17a6b2,null))[_0x87f2('0x25')](function(_0xc405b8){if(_0xc405b8){return _0xc405b8['removeDispositions'](_0x1a184a[_0x87f2('0x48')][_0x87f2('0x6b')]);}})[_0x87f2('0x25')](respondWithStatusCode(_0x17a6b2,null))[_0x87f2('0x2f')](handleError(_0x17a6b2,null));};exports['addAnswer']=function(_0x42d1c2,_0x151860,_0x34b37f){if(_0x42d1c2['body']['id']){delete _0x42d1c2[_0x87f2('0x66')]['id'];}return db[_0x87f2('0x44')][_0x87f2('0x5d')]({'where':{'id':_0x42d1c2[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x151860,null))['then'](function(_0xe088e9){if(_0xe088e9){_0x42d1c2[_0x87f2('0x66')][_0x87f2('0x6a')]=_0xe088e9['id'];return db[_0x87f2('0x6c')][_0x87f2('0x5e')](_0x42d1c2[_0x87f2('0x66')]);}})['then'](respondWithResult(_0x151860,null))['catch'](handleError(_0x151860,null));};exports['getAnswers']=function(_0x2b37ad,_0x151093,_0x28ed6c){var _0x1c3e41={'raw':![],'where':{}};var _0x27786c={};var _0x51b1cc={'count':0x0,'rows':[]};return db[_0x87f2('0x44')][_0x87f2('0x6d')]({'where':{'id':_0x2b37ad[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x151093,null))['then'](function(_0x4a1b19){if(_0x4a1b19){_0x27786c[_0x87f2('0x46')]=_['keys'](db[_0x87f2('0x6c')]['rawAttributes']);_0x27786c[_0x87f2('0x48')]=_['keys'](_0x2b37ad['query']);_0x27786c[_0x87f2('0x49')]=_['intersection'](_0x27786c[_0x87f2('0x46')],_0x27786c['query']);_0x1c3e41[_0x87f2('0x4a')]=_[_0x87f2('0x4b')](_0x27786c[_0x87f2('0x46')],qs[_0x87f2('0x4c')](_0x2b37ad[_0x87f2('0x48')]['fields']));_0x1c3e41['attributes']=_0x1c3e41[_0x87f2('0x4a')][_0x87f2('0x4d')]?_0x1c3e41[_0x87f2('0x4a')]:_0x27786c[_0x87f2('0x46')];if(!_0x2b37ad['query'][_0x87f2('0x4e')](_0x87f2('0x4f'))){_0x1c3e41[_0x87f2('0x36')]=qs['limit'](_0x2b37ad['query'][_0x87f2('0x36')]);_0x1c3e41[_0x87f2('0x34')]=qs[_0x87f2('0x34')](_0x2b37ad['query'][_0x87f2('0x34')]);}_0x1c3e41[_0x87f2('0x69')]=qs[_0x87f2('0x50')](_0x2b37ad['query'][_0x87f2('0x50')]);_0x1c3e41['where']=qs['filters'](_[_0x87f2('0x52')](_0x2b37ad[_0x87f2('0x48')],_0x27786c[_0x87f2('0x49')]));_0x1c3e41[_0x87f2('0x51')][_0x87f2('0x6a')]=_0x4a1b19['id'];if(_0x2b37ad[_0x87f2('0x48')]['filter']){_0x1c3e41[_0x87f2('0x51')]=_[_0x87f2('0x54')](_0x1c3e41[_0x87f2('0x51')],{'$or':_['map'](_0x1c3e41[_0x87f2('0x4a')],function(_0x1069fa){var _0x1d14af={};_0x1d14af[_0x1069fa]={'$like':'%'+_0x2b37ad[_0x87f2('0x48')][_0x87f2('0x53')]+'%'};return _0x1d14af;})});}_0x1c3e41=_[_0x87f2('0x54')]({},_0x1c3e41,_0x2b37ad[_0x87f2('0x55')]);return db[_0x87f2('0x6c')]['count']({'where':_0x1c3e41['where']})['then'](function(_0x5550ea){_0x51b1cc[_0x87f2('0x37')]=_0x5550ea;if(_0x2b37ad[_0x87f2('0x48')][_0x87f2('0x56')]){_0x1c3e41['include']=[{'all':!![]}];}return db[_0x87f2('0x6c')][_0x87f2('0x58')](_0x1c3e41);})[_0x87f2('0x25')](function(_0x353baf){_0x51b1cc[_0x87f2('0x59')]=_0x353baf;return _0x51b1cc;});}})[_0x87f2('0x25')](respondWithFilteredResult(_0x151093,_0x1c3e41))['catch'](handleError(_0x151093,null));};exports[_0x87f2('0x6e')]=function(_0x39c3b6,_0x2f746b,_0x5c95e9){return db['WhatsappAccount'][_0x87f2('0x5d')]({'where':{'id':_0x39c3b6[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x2f746b,null))[_0x87f2('0x25')](function(_0x3124a5){if(_0x3124a5){return _0x3124a5[_0x87f2('0x6e')](_0x39c3b6[_0x87f2('0x48')][_0x87f2('0x6b')]);}})[_0x87f2('0x25')](respondWithStatusCode(_0x2f746b,null))[_0x87f2('0x2f')](handleError(_0x2f746b,null));};exports[_0x87f2('0x6f')]=function(_0x1a3655,_0x70facb,_0x8e7b0){return db['WhatsappAccount'][_0x87f2('0x5d')]({'where':{'id':_0x1a3655[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x70facb,null))[_0x87f2('0x25')](function(_0x3635dc){if(_0x3635dc){return _0x3635dc[_0x87f2('0x6f')](_0x1a3655[_0x87f2('0x66')][_0x87f2('0x6b')],_[_0x87f2('0x70')](_0x1a3655['body'],['ids','id'])||{})[_0x87f2('0x71')](function(_0x4e5b9e){for(var _0x447702=0x0;_0x447702<_0x1a3655[_0x87f2('0x66')][_0x87f2('0x6b')][_0x87f2('0x4d')];_0x447702+=0x1){socket[_0x87f2('0x72')]('userWhatsappAccount:save',{'UserId':Number(_0x1a3655[_0x87f2('0x66')][_0x87f2('0x6b')][_0x447702]),'WhatsappAccountId':Number(_0x1a3655[_0x87f2('0x5b')]['id'])});}return _0x4e5b9e;});}})[_0x87f2('0x25')](respondWithResult(_0x70facb,null))[_0x87f2('0x2f')](handleError(_0x70facb,null));};exports[_0x87f2('0x73')]=function(_0x108353,_0x3c71ed,_0x54857c){return db[_0x87f2('0x44')]['find']({'where':{'id':_0x108353[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x3c71ed,null))[_0x87f2('0x25')](function(_0x921043){if(_0x921043){return _0x921043[_0x87f2('0x73')](_0x108353[_0x87f2('0x48')][_0x87f2('0x6b')])['then'](function(){if(_[_0x87f2('0x74')](_0x108353[_0x87f2('0x48')]['ids'])){for(var _0x28565b=0x0;_0x28565b<_0x108353['query'][_0x87f2('0x6b')][_0x87f2('0x4d')];_0x28565b+=0x1){socket[_0x87f2('0x72')](_0x87f2('0x75'),{'UserId':Number(_0x108353[_0x87f2('0x48')][_0x87f2('0x6b')][_0x28565b]),'WhatsappAccountId':Number(_0x108353[_0x87f2('0x5b')]['id'])});}}else{socket[_0x87f2('0x72')]('userWhatsappAccount:remove',{'UserId':Number(_0x108353[_0x87f2('0x48')]['ids']),'WhatsappAccountId':Number(_0x108353[_0x87f2('0x5b')]['id'])});}});}})[_0x87f2('0x25')](respondWithStatusCode(_0x3c71ed,null))['catch'](handleError(_0x3c71ed,null));};exports['getAgents']=function(_0x20dcd0,_0x11d2fa,_0x36d91a){var _0x39126e={};var _0x33d41f={};var _0x4bde4a;var _0x4baf6e;return db[_0x87f2('0x44')][_0x87f2('0x6d')]({'where':{'id':_0x20dcd0[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x11d2fa,null))[_0x87f2('0x25')](function(_0x317c68){if(_0x317c68){_0x4bde4a=_0x317c68;_0x33d41f[_0x87f2('0x46')]=_[_0x87f2('0x47')](db[_0x87f2('0x76')]['rawAttributes']);_0x33d41f[_0x87f2('0x48')]=_[_0x87f2('0x47')](_0x20dcd0[_0x87f2('0x48')]);_0x33d41f[_0x87f2('0x49')]=_['intersection'](_0x33d41f[_0x87f2('0x46')],_0x33d41f[_0x87f2('0x48')]);_0x39126e[_0x87f2('0x4a')]=_['intersection'](_0x33d41f[_0x87f2('0x46')],qs[_0x87f2('0x4c')](_0x20dcd0[_0x87f2('0x48')][_0x87f2('0x4c')]));_0x39126e[_0x87f2('0x4a')]=_0x39126e[_0x87f2('0x4a')][_0x87f2('0x4d')]?_0x39126e['attributes']:_0x33d41f[_0x87f2('0x46')];_0x39126e['order']=qs[_0x87f2('0x50')](_0x20dcd0[_0x87f2('0x48')][_0x87f2('0x50')]);_0x39126e[_0x87f2('0x51')]=qs[_0x87f2('0x49')](_[_0x87f2('0x52')](_0x20dcd0[_0x87f2('0x48')],_0x33d41f[_0x87f2('0x49')]));if(_0x20dcd0['query']['filter']){_0x39126e[_0x87f2('0x51')]=_['merge'](_0x39126e[_0x87f2('0x51')],{'$or':_[_0x87f2('0x43')](_0x39126e[_0x87f2('0x4a')],function(_0x43ed8d){var _0x5c1e83={};_0x5c1e83[_0x43ed8d]={'$like':'%'+_0x20dcd0[_0x87f2('0x48')][_0x87f2('0x53')]+'%'};return _0x5c1e83;})});}_0x39126e=_[_0x87f2('0x54')]({},_0x39126e,_0x20dcd0[_0x87f2('0x55')]);return _0x4bde4a[_0x87f2('0x77')](_0x39126e);}})[_0x87f2('0x25')](function(_0x966fec){if(_0x966fec){_0x4baf6e=_0x966fec['length'];if(!_0x20dcd0[_0x87f2('0x48')][_0x87f2('0x4e')](_0x87f2('0x4f'))){_0x39126e[_0x87f2('0x36')]=qs['limit'](_0x20dcd0[_0x87f2('0x48')][_0x87f2('0x36')]);_0x39126e['offset']=qs[_0x87f2('0x34')](_0x20dcd0[_0x87f2('0x48')][_0x87f2('0x34')]);}return _0x4bde4a[_0x87f2('0x77')](_0x39126e);}})[_0x87f2('0x25')](function(_0x37e3fb){if(_0x37e3fb){return _0x37e3fb?{'count':_0x4baf6e,'rows':_0x37e3fb}:null;}})[_0x87f2('0x25')](respondWithResult(_0x11d2fa,null))[_0x87f2('0x2f')](handleError(_0x11d2fa,null));};exports[_0x87f2('0x78')]=function(_0x2d58e7,_0x338f05){var _0x5cec22=_0x2d58e7[_0x87f2('0x5b')]['id'];var _0x43f2c1=_0x2d58e7[_0x87f2('0x66')];var _0x5b9361=0xc8;var _0x7839ec=null;return db[_0x87f2('0x79')][_0x87f2('0x7a')]({'isolationLevel':db['sequelize']['Transaction']['ISOLATION_LEVELS'][_0x87f2('0x7b')]},function(_0x15ab70){return db[_0x87f2('0x44')][_0x87f2('0x6d')]({'where':{'id':_0x5cec22},'transaction':_0x15ab70})['then'](function(_0x47e2c0){if(_0x47e2c0){return db[_0x87f2('0x7c')][_0x87f2('0x3d')]({'where':{'WhatsappAccountId':_0x5cec22},'transaction':_0x15ab70})[_0x87f2('0x25')](function(){var _0x420f5e=_[_0x87f2('0x43')](_0x43f2c1,function(_0x5e934d){_0x5e934d['WhatsappAccountId']=_0x5cec22;return _0x5e934d;});return db[_0x87f2('0x7c')][_0x87f2('0x7d')](_0x420f5e,{'transaction':_0x15ab70});});}else{_0x5b9361=0x194;_0x7839ec=[];}});})[_0x87f2('0x25')](function(){if(_0x5b9361!==0x194){return db[_0x87f2('0x7c')][_0x87f2('0x7e')]({'where':{'WhatsappAccountId':_0x5cec22},'order':_0x87f2('0x7f')})[_0x87f2('0x25')](function(_0x27e053){_0x7839ec=_0x27e053;});}})[_0x87f2('0x2f')](function(_0x70fcb1){_0x5b9361=0x1f4;logger[_0x87f2('0x29')](_0x70fcb1[_0x87f2('0x3e')]);if(_0x70fcb1[_0x87f2('0x3f')]){delete _0x70fcb1[_0x87f2('0x3f')];}_0x7839ec=_0x70fcb1;})[_0x87f2('0x80')](function(){if(_0x7839ec===null){_0x338f05[_0x87f2('0x30')](_0x5b9361);}else{if(_0x5b9361===0x1f4){_0x338f05[_0x87f2('0x32')](_0x5b9361)[_0x87f2('0x40')](_0x7839ec);}else{_0x338f05['status'](_0x5b9361)[_0x87f2('0x33')](_0x7839ec);}}});};exports[_0x87f2('0x81')]=function(_0x49dbe3,_0x42d70f,_0x4c343a){var _0x1fb9a2={};var _0x4b3e8c={};var _0x11c39b;var _0x257499;return db[_0x87f2('0x44')][_0x87f2('0x6d')]({'where':{'id':_0x49dbe3[_0x87f2('0x5b')]['id']}})[_0x87f2('0x25')](handleEntityNotFound(_0x42d70f,null))[_0x87f2('0x25')](function(_0x2da5c5){if(_0x2da5c5){_0x11c39b=_0x2da5c5;_0x4b3e8c[_0x87f2('0x46')]=_[_0x87f2('0x47')](db['WhatsappApplication']['rawAttributes']);_0x4b3e8c[_0x87f2('0x48')]=_[_0x87f2('0x47')](_0x49dbe3['query']);_0x4b3e8c[_0x87f2('0x49')]=_['intersection'](_0x4b3e8c[_0x87f2('0x46')],_0x4b3e8c[_0x87f2('0x48')]);_0x1fb9a2[_0x87f2('0x4a')]=_[_0x87f2('0x4b')](_0x4b3e8c['model'],qs[_0x87f2('0x4c')](_0x49dbe3[_0x87f2('0x48')]['fields']));_0x1fb9a2[_0x87f2('0x4a')]=_0x1fb9a2[_0x87f2('0x4a')][_0x87f2('0x4d')]?_0x1fb9a2['attributes']:_0x4b3e8c[_0x87f2('0x46')];_0x1fb9a2[_0x87f2('0x69')]=qs[_0x87f2('0x50')](_0x49dbe3[_0x87f2('0x48')]['sort']);_0x1fb9a2['where']=qs[_0x87f2('0x49')](_[_0x87f2('0x52')](_0x49dbe3[_0x87f2('0x48')],_0x4b3e8c['filters']));if(_0x49dbe3[_0x87f2('0x48')][_0x87f2('0x53')]){_0x1fb9a2[_0x87f2('0x51')]=_['merge'](_0x1fb9a2[_0x87f2('0x51')],{'$or':_[_0x87f2('0x43')](_0x1fb9a2['attributes'],function(_0x1634b0){var _0x20b7f6={};_0x20b7f6[_0x1634b0]={'$like':'%'+_0x49dbe3[_0x87f2('0x48')][_0x87f2('0x53')]+'%'};return _0x20b7f6;})});}_0x1fb9a2=_[_0x87f2('0x54')]({},_0x1fb9a2,_0x49dbe3[_0x87f2('0x55')]);return _0x11c39b[_0x87f2('0x81')](_0x1fb9a2);}})[_0x87f2('0x25')](function(_0x50c71f){if(_0x50c71f){_0x257499=_0x50c71f[_0x87f2('0x4d')];if(!_0x49dbe3[_0x87f2('0x48')][_0x87f2('0x4e')](_0x87f2('0x4f'))){_0x1fb9a2['limit']=qs[_0x87f2('0x36')](_0x49dbe3['query']['limit']);_0x1fb9a2[_0x87f2('0x34')]=qs['offset'](_0x49dbe3[_0x87f2('0x48')]['offset']);}return _0x11c39b[_0x87f2('0x81')](_0x1fb9a2);}})['then'](function(_0x31d5fc){if(_0x31d5fc){return _0x31d5fc?{'count':_0x257499,'rows':_0x31d5fc}:null;}})[_0x87f2('0x25')](respondWithResult(_0x42d70f,null))[_0x87f2('0x2f')](handleError(_0x42d70f,null));};exports[_0x87f2('0x82')]=function(_0x7f1ce3,_0x3109e6,_0x29ae8e){var _0x54d592={'channel':_0x87f2('0x83')};var _0x293188=[];var _0x28a457=[];var _0x1f8ed5={};return db['WhatsappAccount'][_0x87f2('0x5d')]({'where':{'id':_0x7f1ce3['params']['id']},'include':[{'model':db[_0x87f2('0x7c')],'as':'Applications'}]})['then'](handleEntityNotFound(_0x3109e6,null))['then'](function(_0x5ed572){_0x54d592[_0x87f2('0x84')]=_0x5ed572;if(_0x54d592[_0x87f2('0x84')]&&_0x54d592['account'][_0x87f2('0x45')]===_0x87f2('0x85')&&_0x7f1ce3[_0x87f2('0x66')][_0x87f2('0x86')]){if(_0x7f1ce3[_0x87f2('0x66')][_0x87f2('0x86')][_0x87f2('0x4d')]===0x0)return;if(_0x7f1ce3['body'][_0x87f2('0x86')][0x0][_0x87f2('0x87')]!==_0x87f2('0x88'))return;return db['WhatsappMessage'][_0x87f2('0x65')]({'read':!![],'readAt':_0x7f1ce3[_0x87f2('0x66')][_0x87f2('0x86')][0x0][_0x87f2('0x89')]},{'where':{'messageId':_0x7f1ce3['body'][_0x87f2('0x86')][0x0][_0x87f2('0x8a')]},'individualHooks':!![]})[_0x87f2('0x25')](function(_0x1d82a3){return _0x3109e6[_0x87f2('0x32')](0xc8)[_0x87f2('0x33')](_0x1d82a3);});}_0x54d592[_0x87f2('0x8b')]=_[_0x87f2('0x8c')](_0x5ed572[_0x87f2('0x8d')],[_0x87f2('0x7f')],['asc']);if(_0x54d592[_0x87f2('0x84')][_0x87f2('0x8d')]){delete _0x54d592['account'][_0x87f2('0x8d')];}return db[_0x87f2('0x8e')]['describe']()[_0x87f2('0x25')](function(_0x431c42){if(!_0x431c42){throw new db[(_0x87f2('0x8f'))]['ValidationError'](_0x87f2('0x90'));}_0x293188=_['difference'](_['keys'](_0x431c42),[_0x87f2('0x91'),_0x87f2('0x92')]);_0x28a457=_[_0x87f2('0x93')](_[_0x87f2('0x47')](_0x431c42),[_0x87f2('0x91'),_0x87f2('0x92'),'CompanyId',_0x87f2('0x94')]);_0x54d592[_0x87f2('0x66')]={'mapKey':_0x87f2('0x95')};if(_0x54d592[_0x87f2('0x84')]&&_0x54d592[_0x87f2('0x84')][_0x87f2('0x45')]===_0x87f2('0x96')){_0x54d592[_0x87f2('0x66')][_0x87f2('0x97')]=_0x7f1ce3['body'][_0x87f2('0x98')][_0x87f2('0x99')]('whatsapp:','');_0x54d592[_0x87f2('0x66')][_0x87f2('0x66')]=_0x7f1ce3[_0x87f2('0x66')][_0x87f2('0x9a')];_0x54d592[_0x87f2('0x66')][_0x87f2('0x9b')]=_0x7f1ce3[_0x87f2('0x66')][_0x87f2('0x9c')];}if(_0x54d592[_0x87f2('0x84')]&&_0x54d592[_0x87f2('0x84')][_0x87f2('0x45')]===_0x87f2('0x85')){_0x54d592['body'][_0x87f2('0x97')]=_0x7f1ce3[_0x87f2('0x66')][_0x87f2('0x9d')][0x0][_0x87f2('0x97')];_0x54d592[_0x87f2('0x66')][_0x87f2('0x66')]=_0x7f1ce3[_0x87f2('0x66')][_0x87f2('0x9d')][0x0]['message']['body'];_0x54d592[_0x87f2('0x66')][_0x87f2('0x9b')]=_0x7f1ce3[_0x87f2('0x66')]['notifications'][0x0][_0x87f2('0x8a')];}if(_0x54d592[_0x87f2('0x66')]['id']){delete _0x54d592[_0x87f2('0x66')]['id'];}if(_[_0x87f2('0x9e')](_0x54d592[_0x87f2('0x66')][_0x87f2('0x97')])){throw new db[(_0x87f2('0x8f'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x54d592[_0x87f2('0x66')][_0x87f2('0x66')])||_0x54d592[_0x87f2('0x66')][_0x87f2('0x66')]===''){throw new db[(_0x87f2('0x8f'))]['ValidationError'](_0x87f2('0x9f'));}if(_[_0x87f2('0x9e')](_0x54d592[_0x87f2('0x66')][_0x87f2('0xa0')])){throw new db['Sequelize']['ValidationError'](_0x87f2('0xa1')+_0x28a457);}if(!_['includes'](_0x28a457,_0x54d592[_0x87f2('0x66')][_0x87f2('0xa0')])){throw new db[(_0x87f2('0x8f'))][(_0x87f2('0xa2'))](_0x87f2('0xa3')+_0x28a457);}_0x1f8ed5[_0x54d592[_0x87f2('0x66')]['mapKey']]=_0x54d592[_0x87f2('0x66')][_0x87f2('0x97')];return db['CmList'][_0x87f2('0x5d')]({'where':{'id':_0x54d592[_0x87f2('0x84')][_0x87f2('0x94')]},'include':[{'model':db['CmContact'],'as':_0x87f2('0xa4'),'where':_0x1f8ed5,'limit':0x1,'order':[['updatedAt',_0x87f2('0xa5')]]}]});})[_0x87f2('0x25')](handleEntityNotFound(_0x3109e6,null))[_0x87f2('0x25')](function(_0x20e22a){if(_0x20e22a){_0x54d592[_0x87f2('0xa6')]=_['omit'](_0x20e22a,[_0x87f2('0xa4')]);if(_0x20e22a[_0x87f2('0xa4')][_0x87f2('0x4d')]){return _0x20e22a[_0x87f2('0xa4')][0x0];}var _0x1271cb=_['defaults'](_0x54d592[_0x87f2('0x66')],{'firstName':_0x54d592[_0x87f2('0x66')][_0x87f2('0x97')],'ListId':_0x20e22a['id']});_0x1271cb[_0x54d592[_0x87f2('0x66')]['mapKey']]=_0x54d592['body'][_0x87f2('0x97')];return db[_0x87f2('0x8e')]['create'](_0x1271cb,{'fields':_0x293188,'raw':!![]});}})[_0x87f2('0x25')](handleEntityNotFound(_0x3109e6,null))[_0x87f2('0x25')](function(_0x21d743){if(_0x21d743){_0x54d592[_0x87f2('0xa7')]=_0x21d743;var _0x35a1ad={'ContactId':_0x21d743['id'],'phone':_0x54d592[_0x87f2('0x66')][_0x87f2('0x97')],'WhatsappAccountId':_0x7f1ce3['params']['id']};var _0x2c6a3f={'ContactId':_0x21d743['id'],'WhatsappAccountId':_0x7f1ce3[_0x87f2('0x5b')]['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x2c6a3f})[_0x87f2('0x25')](function(_0x160581){if(_0x160581){return[_0x160581,![]];}return db[_0x87f2('0xa8')]['create'](_0x35a1ad)['then'](function(_0x230172){return[_0x230172,!![]];});});}})['spread'](function(_0x570a16,_0x4b1ff6){_0x54d592[_0x87f2('0xa9')]=_0x570a16['get']({'plain':!![]});_0x54d592['interaction'][_0x87f2('0xaa')]=![];if(_0x4b1ff6){if(_0x54d592['account'][_0x87f2('0xab')]){_0x54d592[_0x87f2('0x8b')][_0x87f2('0xac')]({'id':0x0,'priority':_0x54d592[_0x87f2('0x8b')][_0x87f2('0x4d')]+0x1,'app':_0x87f2('0xad'),'appdata':_0x87f2('0xae'),'interval':_0x87f2('0xaf')});}_0x54d592['interaction'][_0x87f2('0xaa')]=!![];}return db['WhatsappMessage']['create']({'phone':_0x54d592['body'][_0x87f2('0x97')],'messageId':_0x54d592[_0x87f2('0x66')][_0x87f2('0x9b')],'body':_0x54d592[_0x87f2('0x66')][_0x87f2('0x66')],'WhatsappAccountId':_0x7f1ce3[_0x87f2('0x5b')]['id'],'WhatsappInteractionId':_0x570a16['id'],'direction':'in','ContactId':_0x570a16[_0x87f2('0xb0')],'AttachmentId':_0x54d592['body'][_0x87f2('0xb1')]});})[_0x87f2('0x25')](function(_0x17cc01){_0x54d592[_0x87f2('0x2c')]=_0x17cc01;if(_0x54d592['interaction'][_0x87f2('0xb2')]){return db[_0x87f2('0x76')][_0x87f2('0x5d')]({'attributes':['id',_0x87f2('0x3f')],'where':{'id':_0x54d592[_0x87f2('0xa9')][_0x87f2('0xb2')]}})['then'](function(_0x525707){if(_0x525707){_0x54d592[_0x87f2('0x8b')][_0x87f2('0xb3')]({'id':0x0,'priority':0x0,'app':_0x87f2('0xb4'),'appdata':_0x525707['name']+','+(_0x54d592['account'][_0x87f2('0xb5')]||0xa),'interval':_0x87f2('0xaf')});}return respondWithRpcPromise(_0x87f2('0xb6'),_0x87f2('0xb7'),_0x54d592);});}return respondWithRpcPromise('Start',_0x87f2('0xb7'),_0x54d592);})[_0x87f2('0x25')](function(_0xf6ec96){if(_0xf6ec96){var _0x9e35c3=0xc8;var _0xcf6a6=_0x87f2('0xb8');logger[_0x87f2('0x2d')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xcf6a6,_0x9e35c3,'entity\x20found');logger['debug'](_0x87f2('0xb9'),_0xcf6a6,_0x9e35c3,_0x87f2('0xba'),JSON[_0x87f2('0x28')](_0xf6ec96));if(_0x54d592[_0x87f2('0x84')][_0x87f2('0x45')]===_0x87f2('0x96')){return _0x3109e6[_0x87f2('0x32')](_0x9e35c3)[_0x87f2('0xbb')](_0x87f2('0xbc'),_0x87f2('0xbd'))[_0x87f2('0x40')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x3109e6[_0x87f2('0x32')](_0x9e35c3)[_0x87f2('0x33')](_0xf6ec96);}}});})[_0x87f2('0x2f')](handleError(_0x3109e6,null));};exports['send']=function(_0x149473,_0x42459c,_0xf7da4f){var _0x246bd3,_0x1e2cd2,_0x5a6a03;if(_[_0x87f2('0x9e')](_0x149473['body'][_0x87f2('0x66')])||_0x149473[_0x87f2('0x66')][_0x87f2('0x66')]===''){throw new db[(_0x87f2('0x8f'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x87f2('0x9e')](_0x149473[_0x87f2('0x66')]['to'])){throw new db[(_0x87f2('0x8f'))]['ValidationError'](_0x87f2('0xbe'));}_0x246bd3=_0x149473[_0x87f2('0x66')]['to'];return db['WhatsappAccount'][_0x87f2('0x5d')]({'where':{'id':_0x149473[_0x87f2('0x5b')]['id']},'include':[{'model':db['CmList'],'as':_0x87f2('0xbf'),'include':[{'model':db[_0x87f2('0x8e')],'as':'Contacts','where':{'mobile':_0x246bd3},'limit':0x1,'order':[[_0x87f2('0x92'),_0x87f2('0xa5')]]}]}]})[_0x87f2('0x25')](handleEntityNotFound(_0x42459c,null))[_0x87f2('0x25')](function(_0x45de4d){if(_0x45de4d&&_0x45de4d['List']){_0x1e2cd2=_0x45de4d[_0x87f2('0x5f')]({'plain':!![]});if(_0x1e2cd2[_0x87f2('0xbf')]&&_0x1e2cd2[_0x87f2('0xbf')][_0x87f2('0xa4')][_0x87f2('0x4d')]){return _0x1e2cd2[_0x87f2('0xbf')][_0x87f2('0xa4')][0x0];}return db[_0x87f2('0x8e')]['create'](_['defaults'](_0x149473['body'],{'firstName':_0x246bd3,'mobile':_0x246bd3,'phone':_0x246bd3,'ListId':_0x1e2cd2['ListId']}));}})['then'](handleEntityNotFound(_0x42459c,null))[_0x87f2('0x25')](function(_0x4fe679){if(_0x4fe679){_0x5a6a03=_0x4fe679;return db[_0x87f2('0xa8')][_0x87f2('0x5d')]({'where':{'ContactId':_0x5a6a03['id'],'closed':![],'WhatsappAccountId':_0x1e2cd2['id']}})[_0x87f2('0x25')](function(_0x126cba){if(_0x126cba){return[_0x126cba,![]];}return db[_0x87f2('0xa8')]['create']({'UserId':_0x149473[_0x87f2('0x61')]['id'],'ContactId':_0x5a6a03['id'],'WhatsappAccountId':_0x1e2cd2['id'],'phone':_0x246bd3,'firstMsgDirection':_0x87f2('0xc0'),'Messages':[_['merge'](_0x149473[_0x87f2('0x66')],{'read':![],'body':_0x149473[_0x87f2('0x66')][_0x87f2('0x66')],'phone':_0x246bd3,'WhatsappAccountId':_0x1e2cd2['id'],'UserId':_0x149473[_0x87f2('0x61')]['id'],'ContactId':_0x5a6a03['id']})]},{'include':[{'model':db[_0x87f2('0xc1')],'as':_0x87f2('0xc2')}]})[_0x87f2('0x25')](function(_0x203231){return[_0x203231,!![]];});});}})[_0x87f2('0x71')](function(_0x550dac,_0x4e6c2f){if(_0x4e6c2f){return _0x550dac;}return db[_0x87f2('0xc1')][_0x87f2('0x5e')](_[_0x87f2('0x54')](_0x149473[_0x87f2('0x66')],{'read':![],'body':_0x149473[_0x87f2('0x66')]['body'],'phone':_0x246bd3,'WhatsappAccountId':_0x1e2cd2['id'],'WhatsappInteractionId':_0x550dac['id'],'UserId':_0x149473[_0x87f2('0x61')]['id'],'ContactId':_0x5a6a03['id']}))[_0x87f2('0x25')](function(_0x703ae4){_0x550dac['dataValues'][_0x87f2('0xc2')]=[];_0x550dac[_0x87f2('0xc3')][_0x87f2('0xc2')][_0x87f2('0xac')](_0x703ae4['dataValues']);return _0x550dac;});})[_0x87f2('0x25')](respondWithResult(_0x42459c,null))[_0x87f2('0x2f')](handleError(_0x42459c,null));};
\ No newline at end of file
+var _0xd564=['options','include','findAll','rows','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','mandatoryDispositionPause','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','includeAll','removeAnswers','addAgents','spread','length','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','findAndCountAll','priority','stack','finally','getApplications','notify','Applications','account','statuses','state','timestamp','message_id','applications','orderBy','asc','Sequelize','ValidationError','createdAt','updatedAt','difference','ListId','mobile','twilio','from','From','whatsapp:','Body','messageId','MessageSid','sinch','notifications','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','CmContact','Contacts','DESC','contact','WhatsappInteraction','interaction','created','autoclose','close','unmanaged','*,*,*,*','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','to\x20is\x20mandatory','List','out','WhatsappMessage','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','redis','./whatsappAccount.socket','register','client','http','then','info','request\x20sent','debug','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','reject','update','destroy','UserProfileResource','end','name','send','index','Pause','map','WhatsappAccount','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','nolimit','sort','pick','filter','where','merge','VIRTUAL'];(function(_0x178604,_0x688861){var _0x3cf983=function(_0x494fd4){while(--_0x494fd4){_0x178604['push'](_0x178604['shift']());}};_0x3cf983(++_0x688861);}(_0xd564,0x137));var _0x4d56=function(_0x9e4572,_0x29e793){_0x9e4572=_0x9e4572-0x0;var _0x4e28d9=_0xd564[_0x9e4572];return _0x4e28d9;};'use strict';var emlformat=require(_0x4d56('0x0'));var rimraf=require(_0x4d56('0x1'));var zipdir=require(_0x4d56('0x2'));var jsonpatch=require(_0x4d56('0x3'));var rp=require(_0x4d56('0x4'));var moment=require(_0x4d56('0x5'));var BPromise=require(_0x4d56('0x6'));var Mustache=require(_0x4d56('0x7'));var util=require('util');var path=require('path');var sox=require(_0x4d56('0x8'));var csv=require('to-csv');var ejs=require(_0x4d56('0x9'));var fs=require('fs');var fs_extra=require(_0x4d56('0xa'));var _=require(_0x4d56('0xb'));var squel=require('squel');var crypto=require(_0x4d56('0xc'));var jsforce=require(_0x4d56('0xd'));var deskjs=require(_0x4d56('0xe'));var toCsv=require(_0x4d56('0xf'));var querystring=require('querystring');var Papa=require(_0x4d56('0x10'));var Redis=require(_0x4d56('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4d56('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d56('0x13'));var logger=require('../../config/logger')(_0x4d56('0x14'));var utils=require(_0x4d56('0x15'));var config=require(_0x4d56('0x16'));var licenseUtil=require(_0x4d56('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x4d56('0x18')](config['redis'],{'host':_0x4d56('0x19'),'port':0x18eb});var socket=require(_0x4d56('0x1a'))(new Redis(config[_0x4d56('0x1b')]));require(_0x4d56('0x1c'))[_0x4d56('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x4d56('0x1e')][_0x4d56('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x317e37,_0x181883,_0x5e8992,_0x5cb01e){return new BPromise(function(_0x427d55,_0xed6b1e){var _0x4f7336=_0x5cb01e||client;return _0x4f7336['request'](_0x317e37,_0x5e8992)[_0x4d56('0x20')](function(_0x45b69a){logger[_0x4d56('0x21')]('WhatsappAccount,\x20%s,\x20%s',_0x181883,_0x4d56('0x22'));logger[_0x4d56('0x23')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x181883,_0x4d56('0x22'),JSON[_0x4d56('0x24')](_0x45b69a));if(_0x45b69a[_0x4d56('0x25')]){if(_0x45b69a[_0x4d56('0x25')][_0x4d56('0x26')]===0x1f4){logger[_0x4d56('0x25')](_0x4d56('0x27'),_0x181883,_0x45b69a['error'][_0x4d56('0x28')]);return _0xed6b1e(_0x45b69a['error'][_0x4d56('0x28')]);}logger[_0x4d56('0x25')](_0x4d56('0x27'),_0x181883,_0x45b69a['error'][_0x4d56('0x28')]);return _0x427d55(_0x45b69a['error'][_0x4d56('0x28')]);}else{logger['info'](_0x4d56('0x27'),_0x181883,_0x4d56('0x22'));_0x427d55(_0x45b69a[_0x4d56('0x29')][_0x4d56('0x28')]);}})[_0x4d56('0x2a')](function(_0x32f1b8){logger[_0x4d56('0x25')]('WhatsappAccount,\x20%s,\x20%s',_0x181883,_0x32f1b8);_0xed6b1e(_0x32f1b8);});});}function respondWithStatusCode(_0x2df69d,_0x563cd4){_0x563cd4=_0x563cd4||0xcc;return function(_0x4c6c23){if(_0x4c6c23){return _0x2df69d[_0x4d56('0x2b')](_0x563cd4);}return _0x2df69d[_0x4d56('0x2c')](_0x563cd4)['end']();};}function respondWithResult(_0x71bbb,_0x57e905){_0x57e905=_0x57e905||0xc8;return function(_0xc274f3){if(_0xc274f3){return _0x71bbb[_0x4d56('0x2c')](_0x57e905)[_0x4d56('0x2d')](_0xc274f3);}};}function respondWithFilteredResult(_0x41afcc,_0x14d6fd){return function(_0x446a79){if(_0x446a79){var _0xedc53e=typeof _0x14d6fd[_0x4d56('0x2e')]===_0x4d56('0x2f')&&typeof _0x14d6fd['limit']==='undefined';var _0x2a267b=_0x446a79['count'];var _0x5d5243=_0xedc53e?0x0:_0x14d6fd[_0x4d56('0x2e')];var _0x2beee7=_0xedc53e?_0x446a79[_0x4d56('0x30')]:_0x14d6fd[_0x4d56('0x2e')]+_0x14d6fd[_0x4d56('0x31')];var _0x2b1510;if(_0x2beee7>=_0x2a267b){_0x2beee7=_0x2a267b;_0x2b1510=0xc8;}else{_0x2b1510=0xce;}_0x41afcc[_0x4d56('0x2c')](_0x2b1510);return _0x41afcc[_0x4d56('0x32')]('Content-Range',_0x5d5243+'-'+_0x2beee7+'/'+_0x2a267b)[_0x4d56('0x2d')](_0x446a79);}return null;};}function patchUpdates(_0x48b453){return function(_0x118526){try{jsonpatch['apply'](_0x118526,_0x48b453,!![]);}catch(_0x448038){return BPromise[_0x4d56('0x33')](_0x448038);}return _0x118526['save']();};}function saveUpdates(_0x3f107d,_0x2a0744){return function(_0x3c914c){if(_0x3c914c){return _0x3c914c[_0x4d56('0x34')](_0x3f107d)['then'](function(_0x574cf6){return _0x574cf6;});}return null;};}function removeEntity(_0xaa6302,_0x360d5d){return function(_0x74ad57){if(_0x74ad57){return _0x74ad57[_0x4d56('0x35')]()['then'](function(){var _0x262dfc=_0x74ad57['get']({'plain':!![]});var _0x282c78='WhatsappAccounts';return db[_0x4d56('0x36')]['destroy']({'where':{'type':_0x282c78,'resourceId':_0x262dfc['id']}})['then'](function(){return _0x74ad57;});})[_0x4d56('0x20')](function(){_0xaa6302[_0x4d56('0x2c')](0xcc)[_0x4d56('0x37')]();});}};}function handleEntityNotFound(_0x6be02b,_0x568c5f){return function(_0x50f7e1){if(!_0x50f7e1){_0x6be02b[_0x4d56('0x2b')](0x194);}return _0x50f7e1;};}function handleError(_0x3c7cf5,_0x2785c7){_0x2785c7=_0x2785c7||0x1f4;return function(_0x5922d6){logger[_0x4d56('0x25')](_0x5922d6['stack']);if(_0x5922d6[_0x4d56('0x38')]){delete _0x5922d6['name'];}_0x3c7cf5['status'](_0x2785c7)[_0x4d56('0x39')](_0x5922d6);};}exports[_0x4d56('0x3a')]=function(_0x32b5d3,_0x2ec4c4){var _0x31ef6c={'include':[{'model':db[_0x4d56('0x3b')],'as':'mandatoryDispositionPause'}]},_0x12b2db={},_0x1b34e5={'count':0x0,'rows':[]};var _0xd86146=_[_0x4d56('0x3c')](db[_0x4d56('0x3d')][_0x4d56('0x3e')],function(_0xa8ced1){return{'name':_0xa8ced1['fieldName'],'type':_0xa8ced1[_0x4d56('0x3f')][_0x4d56('0x40')]};});_0x12b2db[_0x4d56('0x41')]=_[_0x4d56('0x3c')](_0xd86146,'name');_0x12b2db['query']=_[_0x4d56('0x42')](_0x32b5d3[_0x4d56('0x43')]);_0x12b2db[_0x4d56('0x44')]=_[_0x4d56('0x45')](_0x12b2db[_0x4d56('0x41')],_0x12b2db['query']);_0x31ef6c[_0x4d56('0x46')]=_[_0x4d56('0x45')](_0x12b2db[_0x4d56('0x41')],qs[_0x4d56('0x47')](_0x32b5d3[_0x4d56('0x43')][_0x4d56('0x47')]));_0x31ef6c[_0x4d56('0x46')]=_0x31ef6c[_0x4d56('0x46')]['length']?_0x31ef6c['attributes']:_0x12b2db[_0x4d56('0x41')];if(!_0x32b5d3[_0x4d56('0x43')]['hasOwnProperty'](_0x4d56('0x48'))){_0x31ef6c[_0x4d56('0x31')]=qs[_0x4d56('0x31')](_0x32b5d3[_0x4d56('0x43')][_0x4d56('0x31')]);_0x31ef6c[_0x4d56('0x2e')]=qs[_0x4d56('0x2e')](_0x32b5d3[_0x4d56('0x43')][_0x4d56('0x2e')]);}_0x31ef6c['order']=qs[_0x4d56('0x49')](_0x32b5d3[_0x4d56('0x43')]['sort']);_0x31ef6c['where']=qs[_0x4d56('0x44')](_[_0x4d56('0x4a')](_0x32b5d3[_0x4d56('0x43')],_0x12b2db['filters']),_0xd86146);if(_0x32b5d3[_0x4d56('0x43')][_0x4d56('0x4b')]){_0x31ef6c[_0x4d56('0x4c')]=_[_0x4d56('0x4d')](_0x31ef6c['where'],{'$or':_[_0x4d56('0x3c')](_0xd86146,function(_0x4cdec0){if(_0x4cdec0[_0x4d56('0x3f')]!==_0x4d56('0x4e')){var _0x47e3f7={};_0x47e3f7[_0x4cdec0[_0x4d56('0x38')]]={'$like':'%'+_0x32b5d3[_0x4d56('0x43')][_0x4d56('0x4b')]+'%'};return _0x47e3f7;}})});}_0x31ef6c=_[_0x4d56('0x4d')]({},_0x31ef6c,_0x32b5d3[_0x4d56('0x4f')]);var _0x3e09b8={'where':_0x31ef6c['where']};return db['WhatsappAccount'][_0x4d56('0x30')](_0x3e09b8)[_0x4d56('0x20')](function(_0x4acfcb){_0x1b34e5[_0x4d56('0x30')]=_0x4acfcb;if(_0x32b5d3['query']['includeAll']){_0x31ef6c[_0x4d56('0x50')]=[{'all':!![]}];}return db[_0x4d56('0x3d')][_0x4d56('0x51')](_0x31ef6c);})[_0x4d56('0x20')](function(_0x1cd924){_0x1b34e5[_0x4d56('0x52')]=_0x1cd924;return _0x1b34e5;})[_0x4d56('0x20')](respondWithFilteredResult(_0x2ec4c4,_0x31ef6c))['catch'](handleError(_0x2ec4c4,null));};exports[_0x4d56('0x53')]=function(_0x5ea9ed,_0x3472c8){var _0x5cfed5={'raw':![],'where':{'id':_0x5ea9ed[_0x4d56('0x54')]['id']},'include':[{'model':db[_0x4d56('0x3b')],'as':'mandatoryDispositionPause'}]},_0x5598f6={};_0x5598f6[_0x4d56('0x41')]=_[_0x4d56('0x42')](db[_0x4d56('0x3d')]['rawAttributes']);_0x5598f6[_0x4d56('0x43')]=_[_0x4d56('0x42')](_0x5ea9ed[_0x4d56('0x43')]);_0x5598f6[_0x4d56('0x44')]=_['intersection'](_0x5598f6[_0x4d56('0x41')],_0x5598f6[_0x4d56('0x43')]);_0x5cfed5['attributes']=_[_0x4d56('0x45')](_0x5598f6[_0x4d56('0x41')],qs[_0x4d56('0x47')](_0x5ea9ed[_0x4d56('0x43')][_0x4d56('0x47')]));_0x5cfed5[_0x4d56('0x46')]=_0x5cfed5[_0x4d56('0x46')]['length']?_0x5cfed5[_0x4d56('0x46')]:_0x5598f6[_0x4d56('0x41')];if(_0x5ea9ed[_0x4d56('0x43')]['includeAll']){_0x5cfed5[_0x4d56('0x50')]=[{'all':!![]}];}_0x5cfed5=_[_0x4d56('0x4d')]({},_0x5cfed5,_0x5ea9ed[_0x4d56('0x4f')]);return db[_0x4d56('0x3d')][_0x4d56('0x55')](_0x5cfed5)[_0x4d56('0x20')](handleEntityNotFound(_0x3472c8,null))[_0x4d56('0x20')](respondWithResult(_0x3472c8,null))[_0x4d56('0x2a')](handleError(_0x3472c8,null));};exports[_0x4d56('0x56')]=function(_0x337a04,_0x51ff72){return db[_0x4d56('0x3d')]['create'](_0x337a04[_0x4d56('0x57')],{})[_0x4d56('0x20')](function(_0x20ccac){var _0x37e8ef=_0x337a04[_0x4d56('0x58')][_0x4d56('0x59')]({'plain':!![]});if(!_0x37e8ef)throw new Error(_0x4d56('0x5a'));if(_0x37e8ef[_0x4d56('0x5b')]===_0x4d56('0x58')){var _0x2f4060=_0x20ccac[_0x4d56('0x59')]({'plain':!![]});var _0x284862=_0x4d56('0x5c');return db[_0x4d56('0x5d')][_0x4d56('0x55')]({'where':{'name':_0x284862,'userProfileId':_0x37e8ef[_0x4d56('0x5e')]},'raw':!![]})[_0x4d56('0x20')](function(_0x1c4ef2){if(_0x1c4ef2&&_0x1c4ef2[_0x4d56('0x5f')]===0x0){return db[_0x4d56('0x36')][_0x4d56('0x56')]({'name':_0x2f4060[_0x4d56('0x38')],'resourceId':_0x2f4060['id'],'type':_0x1c4ef2[_0x4d56('0x38')],'sectionId':_0x1c4ef2['id']},{})[_0x4d56('0x20')](function(){return _0x20ccac;});}else{return _0x20ccac;}})['catch'](function(_0xa427e8){logger[_0x4d56('0x25')](_0x4d56('0x60'),_0xa427e8);throw _0xa427e8;});}return _0x20ccac;})[_0x4d56('0x20')](respondWithResult(_0x51ff72,0xc9))['catch'](handleError(_0x51ff72,null));};exports[_0x4d56('0x34')]=function(_0x58caf5,_0x4f7245){if(_0x58caf5[_0x4d56('0x57')]['id']){delete _0x58caf5[_0x4d56('0x57')]['id'];}return db['WhatsappAccount'][_0x4d56('0x55')]({'where':{'id':_0x58caf5[_0x4d56('0x54')]['id']},'include':[{'model':db['Pause'],'as':_0x4d56('0x61')}]})[_0x4d56('0x20')](handleEntityNotFound(_0x4f7245,null))[_0x4d56('0x20')](saveUpdates(_0x58caf5[_0x4d56('0x57')],null))[_0x4d56('0x20')](respondWithResult(_0x4f7245,null))['catch'](handleError(_0x4f7245,null));};exports['destroy']=function(_0x36752c,_0xe2d283){return db['WhatsappAccount'][_0x4d56('0x55')]({'where':{'id':_0x36752c[_0x4d56('0x54')]['id']}})['then'](handleEntityNotFound(_0xe2d283,null))[_0x4d56('0x20')](removeEntity(_0xe2d283,null))['catch'](handleError(_0xe2d283,null));};exports['describe']=function(_0x47da18,_0x363aea){return db[_0x4d56('0x3d')][_0x4d56('0x62')]()[_0x4d56('0x20')](respondWithResult(_0x363aea,null))[_0x4d56('0x2a')](handleError(_0x363aea,null));};exports[_0x4d56('0x63')]=function(_0xb5b68a,_0x5b6f33,_0x44f034){if(_0xb5b68a[_0x4d56('0x57')]['id']){delete _0xb5b68a[_0x4d56('0x57')]['id'];}return db[_0x4d56('0x3d')]['find']({'where':{'id':_0xb5b68a[_0x4d56('0x54')]['id']}})[_0x4d56('0x20')](handleEntityNotFound(_0x5b6f33,null))['then'](function(_0x46fd0f){if(_0x46fd0f){_0xb5b68a['body'][_0x4d56('0x64')]=_0x46fd0f['id'];return db[_0x4d56('0x65')][_0x4d56('0x56')](_0xb5b68a['body']);}})[_0x4d56('0x20')](respondWithResult(_0x5b6f33,null))[_0x4d56('0x2a')](handleError(_0x5b6f33,null));};exports[_0x4d56('0x66')]=function(_0x4ed2b6,_0x4d715e,_0xd5a592){var _0x1c44c5={'raw':![],'where':{}};var _0x4e1a99={};var _0x587953={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x4d56('0x67')]({'where':{'id':_0x4ed2b6['params']['id']}})[_0x4d56('0x20')](handleEntityNotFound(_0x4d715e,null))[_0x4d56('0x20')](function(_0x8c0885){if(_0x8c0885){_0x4e1a99[_0x4d56('0x41')]=_[_0x4d56('0x42')](db[_0x4d56('0x65')][_0x4d56('0x3e')]);_0x4e1a99[_0x4d56('0x43')]=_[_0x4d56('0x42')](_0x4ed2b6[_0x4d56('0x43')]);_0x4e1a99['filters']=_['intersection'](_0x4e1a99[_0x4d56('0x41')],_0x4e1a99[_0x4d56('0x43')]);_0x1c44c5[_0x4d56('0x46')]=_[_0x4d56('0x45')](_0x4e1a99[_0x4d56('0x41')],qs[_0x4d56('0x47')](_0x4ed2b6[_0x4d56('0x43')][_0x4d56('0x47')]));_0x1c44c5[_0x4d56('0x46')]=_0x1c44c5[_0x4d56('0x46')]['length']?_0x1c44c5['attributes']:_0x4e1a99['model'];if(!_0x4ed2b6[_0x4d56('0x43')][_0x4d56('0x68')](_0x4d56('0x48'))){_0x1c44c5[_0x4d56('0x31')]=qs[_0x4d56('0x31')](_0x4ed2b6[_0x4d56('0x43')][_0x4d56('0x31')]);_0x1c44c5['offset']=qs[_0x4d56('0x2e')](_0x4ed2b6[_0x4d56('0x43')]['offset']);}_0x1c44c5[_0x4d56('0x69')]=qs[_0x4d56('0x49')](_0x4ed2b6[_0x4d56('0x43')][_0x4d56('0x49')]);_0x1c44c5['where']=qs['filters'](_[_0x4d56('0x4a')](_0x4ed2b6[_0x4d56('0x43')],_0x4e1a99['filters']));_0x1c44c5[_0x4d56('0x4c')][_0x4d56('0x64')]=_0x8c0885['id'];if(_0x4ed2b6['query'][_0x4d56('0x4b')]){_0x1c44c5[_0x4d56('0x4c')]=_[_0x4d56('0x4d')](_0x1c44c5[_0x4d56('0x4c')],{'$or':_[_0x4d56('0x3c')](_0x1c44c5['attributes'],function(_0x5bc07d){var _0x3c9bd0={};_0x3c9bd0[_0x5bc07d]={'$like':'%'+_0x4ed2b6[_0x4d56('0x43')][_0x4d56('0x4b')]+'%'};return _0x3c9bd0;})});}_0x1c44c5=_[_0x4d56('0x4d')]({},_0x1c44c5,_0x4ed2b6['options']);return db[_0x4d56('0x65')][_0x4d56('0x30')]({'where':_0x1c44c5[_0x4d56('0x4c')]})[_0x4d56('0x20')](function(_0x30ff8a){_0x587953[_0x4d56('0x30')]=_0x30ff8a;if(_0x4ed2b6[_0x4d56('0x43')]['includeAll']){_0x1c44c5[_0x4d56('0x50')]=[{'all':!![]}];}return db[_0x4d56('0x65')][_0x4d56('0x51')](_0x1c44c5);})[_0x4d56('0x20')](function(_0x1370e9){_0x587953[_0x4d56('0x52')]=_0x1370e9;return _0x587953;});}})[_0x4d56('0x20')](respondWithFilteredResult(_0x4d715e,_0x1c44c5))[_0x4d56('0x2a')](handleError(_0x4d715e,null));};exports['removeDispositions']=function(_0x2a39f3,_0x51d8c9,_0x205069){return db['WhatsappAccount'][_0x4d56('0x55')]({'where':{'id':_0x2a39f3['params']['id']}})[_0x4d56('0x20')](handleEntityNotFound(_0x51d8c9,null))['then'](function(_0x4ae064){if(_0x4ae064){return _0x4ae064[_0x4d56('0x6a')](_0x2a39f3[_0x4d56('0x43')][_0x4d56('0x6b')]);}})[_0x4d56('0x20')](respondWithStatusCode(_0x51d8c9,null))['catch'](handleError(_0x51d8c9,null));};exports[_0x4d56('0x6c')]=function(_0x376d97,_0x54be22,_0x319d9b){if(_0x376d97[_0x4d56('0x57')]['id']){delete _0x376d97['body']['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x376d97['params']['id']}})[_0x4d56('0x20')](handleEntityNotFound(_0x54be22,null))[_0x4d56('0x20')](function(_0x181814){if(_0x181814){_0x376d97['body']['WhatsappAccountId']=_0x181814['id'];return db[_0x4d56('0x6d')][_0x4d56('0x56')](_0x376d97[_0x4d56('0x57')]);}})[_0x4d56('0x20')](respondWithResult(_0x54be22,null))[_0x4d56('0x2a')](handleError(_0x54be22,null));};exports[_0x4d56('0x6e')]=function(_0x2b00f8,_0x41e73f,_0x4252d2){var _0x28d5e1={'raw':![],'where':{}};var _0x508392={};var _0x242e4f={'count':0x0,'rows':[]};return db[_0x4d56('0x3d')][_0x4d56('0x67')]({'where':{'id':_0x2b00f8['params']['id']}})[_0x4d56('0x20')](handleEntityNotFound(_0x41e73f,null))[_0x4d56('0x20')](function(_0x5a3114){if(_0x5a3114){_0x508392[_0x4d56('0x41')]=_['keys'](db['CannedAnswer'][_0x4d56('0x3e')]);_0x508392['query']=_[_0x4d56('0x42')](_0x2b00f8[_0x4d56('0x43')]);_0x508392['filters']=_[_0x4d56('0x45')](_0x508392[_0x4d56('0x41')],_0x508392[_0x4d56('0x43')]);_0x28d5e1['attributes']=_[_0x4d56('0x45')](_0x508392['model'],qs[_0x4d56('0x47')](_0x2b00f8[_0x4d56('0x43')][_0x4d56('0x47')]));_0x28d5e1[_0x4d56('0x46')]=_0x28d5e1[_0x4d56('0x46')]['length']?_0x28d5e1[_0x4d56('0x46')]:_0x508392['model'];if(!_0x2b00f8[_0x4d56('0x43')][_0x4d56('0x68')]('nolimit')){_0x28d5e1['limit']=qs[_0x4d56('0x31')](_0x2b00f8[_0x4d56('0x43')][_0x4d56('0x31')]);_0x28d5e1[_0x4d56('0x2e')]=qs['offset'](_0x2b00f8[_0x4d56('0x43')][_0x4d56('0x2e')]);}_0x28d5e1['order']=qs[_0x4d56('0x49')](_0x2b00f8[_0x4d56('0x43')][_0x4d56('0x49')]);_0x28d5e1['where']=qs['filters'](_[_0x4d56('0x4a')](_0x2b00f8[_0x4d56('0x43')],_0x508392[_0x4d56('0x44')]));_0x28d5e1[_0x4d56('0x4c')][_0x4d56('0x64')]=_0x5a3114['id'];if(_0x2b00f8[_0x4d56('0x43')][_0x4d56('0x4b')]){_0x28d5e1[_0x4d56('0x4c')]=_[_0x4d56('0x4d')](_0x28d5e1[_0x4d56('0x4c')],{'$or':_[_0x4d56('0x3c')](_0x28d5e1[_0x4d56('0x46')],function(_0x21d4c9){var _0x12e618={};_0x12e618[_0x21d4c9]={'$like':'%'+_0x2b00f8['query'][_0x4d56('0x4b')]+'%'};return _0x12e618;})});}_0x28d5e1=_[_0x4d56('0x4d')]({},_0x28d5e1,_0x2b00f8['options']);return db[_0x4d56('0x6d')][_0x4d56('0x30')]({'where':_0x28d5e1[_0x4d56('0x4c')]})[_0x4d56('0x20')](function(_0x1764af){_0x242e4f[_0x4d56('0x30')]=_0x1764af;if(_0x2b00f8[_0x4d56('0x43')][_0x4d56('0x6f')]){_0x28d5e1[_0x4d56('0x50')]=[{'all':!![]}];}return db[_0x4d56('0x6d')]['findAll'](_0x28d5e1);})['then'](function(_0x3b2926){_0x242e4f[_0x4d56('0x52')]=_0x3b2926;return _0x242e4f;});}})['then'](respondWithFilteredResult(_0x41e73f,_0x28d5e1))['catch'](handleError(_0x41e73f,null));};exports['removeAnswers']=function(_0x4e572e,_0x275e3b,_0x27147a){return db[_0x4d56('0x3d')]['find']({'where':{'id':_0x4e572e[_0x4d56('0x54')]['id']}})['then'](handleEntityNotFound(_0x275e3b,null))[_0x4d56('0x20')](function(_0x2626d7){if(_0x2626d7){return _0x2626d7[_0x4d56('0x70')](_0x4e572e['query'][_0x4d56('0x6b')]);}})['then'](respondWithStatusCode(_0x275e3b,null))['catch'](handleError(_0x275e3b,null));};exports[_0x4d56('0x71')]=function(_0x3c264c,_0x521697,_0x469740){return db[_0x4d56('0x3d')][_0x4d56('0x55')]({'where':{'id':_0x3c264c[_0x4d56('0x54')]['id']}})['then'](handleEntityNotFound(_0x521697,null))[_0x4d56('0x20')](function(_0x35250e){if(_0x35250e){return _0x35250e['addAgents'](_0x3c264c[_0x4d56('0x57')][_0x4d56('0x6b')],_['omit'](_0x3c264c[_0x4d56('0x57')],[_0x4d56('0x6b'),'id'])||{})[_0x4d56('0x72')](function(_0x3a30f8){for(var _0x1d6846=0x0;_0x1d6846<_0x3c264c[_0x4d56('0x57')][_0x4d56('0x6b')][_0x4d56('0x73')];_0x1d6846+=0x1){socket[_0x4d56('0x74')](_0x4d56('0x75'),{'UserId':Number(_0x3c264c[_0x4d56('0x57')][_0x4d56('0x6b')][_0x1d6846]),'WhatsappAccountId':Number(_0x3c264c['params']['id'])});}return _0x3a30f8;});}})[_0x4d56('0x20')](respondWithResult(_0x521697,null))[_0x4d56('0x2a')](handleError(_0x521697,null));};exports[_0x4d56('0x76')]=function(_0x4bffd3,_0x59ab67,_0x4a15bd){return db[_0x4d56('0x3d')][_0x4d56('0x55')]({'where':{'id':_0x4bffd3['params']['id']}})[_0x4d56('0x20')](handleEntityNotFound(_0x59ab67,null))[_0x4d56('0x20')](function(_0x101f22){if(_0x101f22){return _0x101f22[_0x4d56('0x76')](_0x4bffd3[_0x4d56('0x43')][_0x4d56('0x6b')])[_0x4d56('0x20')](function(){if(_['isArray'](_0x4bffd3[_0x4d56('0x43')]['ids'])){for(var _0x298f92=0x0;_0x298f92<_0x4bffd3['query'][_0x4d56('0x6b')][_0x4d56('0x73')];_0x298f92+=0x1){socket[_0x4d56('0x74')](_0x4d56('0x77'),{'UserId':Number(_0x4bffd3[_0x4d56('0x43')][_0x4d56('0x6b')][_0x298f92]),'WhatsappAccountId':Number(_0x4bffd3[_0x4d56('0x54')]['id'])});}}else{socket[_0x4d56('0x74')](_0x4d56('0x77'),{'UserId':Number(_0x4bffd3[_0x4d56('0x43')]['ids']),'WhatsappAccountId':Number(_0x4bffd3[_0x4d56('0x54')]['id'])});}});}})[_0x4d56('0x20')](respondWithStatusCode(_0x59ab67,null))['catch'](handleError(_0x59ab67,null));};exports[_0x4d56('0x78')]=function(_0x1f05fb,_0x5129dc,_0x3319b7){var _0x3b7834={};var _0x433b2d={};var _0x3ea711;var _0x30b5a5;return db['WhatsappAccount'][_0x4d56('0x67')]({'where':{'id':_0x1f05fb[_0x4d56('0x54')]['id']}})['then'](handleEntityNotFound(_0x5129dc,null))[_0x4d56('0x20')](function(_0x1747a2){if(_0x1747a2){_0x3ea711=_0x1747a2;_0x433b2d['model']=_['keys'](db[_0x4d56('0x79')]['rawAttributes']);_0x433b2d[_0x4d56('0x43')]=_[_0x4d56('0x42')](_0x1f05fb[_0x4d56('0x43')]);_0x433b2d[_0x4d56('0x44')]=_[_0x4d56('0x45')](_0x433b2d[_0x4d56('0x41')],_0x433b2d[_0x4d56('0x43')]);_0x3b7834[_0x4d56('0x46')]=_[_0x4d56('0x45')](_0x433b2d[_0x4d56('0x41')],qs[_0x4d56('0x47')](_0x1f05fb[_0x4d56('0x43')]['fields']));_0x3b7834[_0x4d56('0x46')]=_0x3b7834['attributes'][_0x4d56('0x73')]?_0x3b7834['attributes']:_0x433b2d[_0x4d56('0x41')];_0x3b7834[_0x4d56('0x69')]=qs[_0x4d56('0x49')](_0x1f05fb[_0x4d56('0x43')][_0x4d56('0x49')]);_0x3b7834[_0x4d56('0x4c')]=qs[_0x4d56('0x44')](_[_0x4d56('0x4a')](_0x1f05fb['query'],_0x433b2d[_0x4d56('0x44')]));if(_0x1f05fb[_0x4d56('0x43')]['filter']){_0x3b7834[_0x4d56('0x4c')]=_[_0x4d56('0x4d')](_0x3b7834[_0x4d56('0x4c')],{'$or':_[_0x4d56('0x3c')](_0x3b7834[_0x4d56('0x46')],function(_0x3a40fa){var _0x3fd967={};_0x3fd967[_0x3a40fa]={'$like':'%'+_0x1f05fb[_0x4d56('0x43')][_0x4d56('0x4b')]+'%'};return _0x3fd967;})});}_0x3b7834=_[_0x4d56('0x4d')]({},_0x3b7834,_0x1f05fb[_0x4d56('0x4f')]);return _0x3ea711[_0x4d56('0x78')](_0x3b7834);}})[_0x4d56('0x20')](function(_0x2c98c2){if(_0x2c98c2){_0x30b5a5=_0x2c98c2[_0x4d56('0x73')];if(!_0x1f05fb[_0x4d56('0x43')][_0x4d56('0x68')](_0x4d56('0x48'))){_0x3b7834[_0x4d56('0x31')]=qs[_0x4d56('0x31')](_0x1f05fb[_0x4d56('0x43')][_0x4d56('0x31')]);_0x3b7834[_0x4d56('0x2e')]=qs[_0x4d56('0x2e')](_0x1f05fb[_0x4d56('0x43')][_0x4d56('0x2e')]);}return _0x3ea711[_0x4d56('0x78')](_0x3b7834);}})['then'](function(_0xff93d){if(_0xff93d){return _0xff93d?{'count':_0x30b5a5,'rows':_0xff93d}:null;}})[_0x4d56('0x20')](respondWithResult(_0x5129dc,null))[_0x4d56('0x2a')](handleError(_0x5129dc,null));};exports[_0x4d56('0x7a')]=function(_0x1a8d61,_0x4c3859){var _0x597df1=_0x1a8d61[_0x4d56('0x54')]['id'];var _0x46f1ee=_0x1a8d61['body'];var _0x38d0e8=0xc8;var _0x4e270c=null;return db[_0x4d56('0x7b')]['transaction']({'isolationLevel':db[_0x4d56('0x7b')][_0x4d56('0x7c')][_0x4d56('0x7d')][_0x4d56('0x7e')]},function(_0x185c8b){return db['WhatsappAccount'][_0x4d56('0x67')]({'where':{'id':_0x597df1},'transaction':_0x185c8b})[_0x4d56('0x20')](function(_0x1a0ec0){if(_0x1a0ec0){return db[_0x4d56('0x7f')][_0x4d56('0x35')]({'where':{'WhatsappAccountId':_0x597df1},'transaction':_0x185c8b})['then'](function(){var _0x29f7c2=_[_0x4d56('0x3c')](_0x46f1ee,function(_0xdccffd){_0xdccffd[_0x4d56('0x64')]=_0x597df1;return _0xdccffd;});return db[_0x4d56('0x7f')]['bulkCreate'](_0x29f7c2,{'transaction':_0x185c8b});});}else{_0x38d0e8=0x194;_0x4e270c=[];}});})[_0x4d56('0x20')](function(){if(_0x38d0e8!==0x194){return db['WhatsappApplication'][_0x4d56('0x80')]({'where':{'WhatsappAccountId':_0x597df1},'order':_0x4d56('0x81')})[_0x4d56('0x20')](function(_0x48b57f){_0x4e270c=_0x48b57f;});}})[_0x4d56('0x2a')](function(_0x554305){_0x38d0e8=0x1f4;logger[_0x4d56('0x25')](_0x554305[_0x4d56('0x82')]);if(_0x554305[_0x4d56('0x38')]){delete _0x554305[_0x4d56('0x38')];}_0x4e270c=_0x554305;})[_0x4d56('0x83')](function(){if(_0x4e270c===null){_0x4c3859['sendStatus'](_0x38d0e8);}else{if(_0x38d0e8===0x1f4){_0x4c3859[_0x4d56('0x2c')](_0x38d0e8)[_0x4d56('0x39')](_0x4e270c);}else{_0x4c3859[_0x4d56('0x2c')](_0x38d0e8)[_0x4d56('0x2d')](_0x4e270c);}}});};exports[_0x4d56('0x84')]=function(_0x3584a3,_0x6bec51,_0x5d8c1a){var _0x37d734={};var _0x579b44={};var _0x366267;var _0x57d239;return db[_0x4d56('0x3d')][_0x4d56('0x67')]({'where':{'id':_0x3584a3[_0x4d56('0x54')]['id']}})[_0x4d56('0x20')](handleEntityNotFound(_0x6bec51,null))[_0x4d56('0x20')](function(_0xe04c1c){if(_0xe04c1c){_0x366267=_0xe04c1c;_0x579b44[_0x4d56('0x41')]=_['keys'](db['WhatsappApplication'][_0x4d56('0x3e')]);_0x579b44[_0x4d56('0x43')]=_['keys'](_0x3584a3[_0x4d56('0x43')]);_0x579b44['filters']=_[_0x4d56('0x45')](_0x579b44['model'],_0x579b44['query']);_0x37d734['attributes']=_[_0x4d56('0x45')](_0x579b44['model'],qs[_0x4d56('0x47')](_0x3584a3[_0x4d56('0x43')][_0x4d56('0x47')]));_0x37d734[_0x4d56('0x46')]=_0x37d734[_0x4d56('0x46')][_0x4d56('0x73')]?_0x37d734['attributes']:_0x579b44[_0x4d56('0x41')];_0x37d734[_0x4d56('0x69')]=qs[_0x4d56('0x49')](_0x3584a3['query']['sort']);_0x37d734[_0x4d56('0x4c')]=qs[_0x4d56('0x44')](_[_0x4d56('0x4a')](_0x3584a3[_0x4d56('0x43')],_0x579b44[_0x4d56('0x44')]));if(_0x3584a3[_0x4d56('0x43')][_0x4d56('0x4b')]){_0x37d734['where']=_[_0x4d56('0x4d')](_0x37d734[_0x4d56('0x4c')],{'$or':_['map'](_0x37d734['attributes'],function(_0x122fda){var _0x4fc2cf={};_0x4fc2cf[_0x122fda]={'$like':'%'+_0x3584a3['query'][_0x4d56('0x4b')]+'%'};return _0x4fc2cf;})});}_0x37d734=_[_0x4d56('0x4d')]({},_0x37d734,_0x3584a3['options']);return _0x366267[_0x4d56('0x84')](_0x37d734);}})[_0x4d56('0x20')](function(_0x6f5e17){if(_0x6f5e17){_0x57d239=_0x6f5e17[_0x4d56('0x73')];if(!_0x3584a3['query'][_0x4d56('0x68')](_0x4d56('0x48'))){_0x37d734['limit']=qs[_0x4d56('0x31')](_0x3584a3[_0x4d56('0x43')][_0x4d56('0x31')]);_0x37d734[_0x4d56('0x2e')]=qs['offset'](_0x3584a3[_0x4d56('0x43')][_0x4d56('0x2e')]);}return _0x366267['getApplications'](_0x37d734);}})['then'](function(_0x42c106){if(_0x42c106){return _0x42c106?{'count':_0x57d239,'rows':_0x42c106}:null;}})[_0x4d56('0x20')](respondWithResult(_0x6bec51,null))[_0x4d56('0x2a')](handleError(_0x6bec51,null));};exports[_0x4d56('0x85')]=function(_0x17fb1e,_0x57ddcf,_0x5b16e0){var _0x3a01cc={'channel':'whatsapp'};var _0x2b9a13=[];var _0x1fe7d1=[];var _0x99779e={};return db[_0x4d56('0x3d')][_0x4d56('0x55')]({'where':{'id':_0x17fb1e[_0x4d56('0x54')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x4d56('0x86')}]})['then'](handleEntityNotFound(_0x57ddcf,null))['then'](function(_0x5cafe5){_0x3a01cc['account']=_0x5cafe5;if(_0x3a01cc[_0x4d56('0x87')]&&_0x3a01cc[_0x4d56('0x87')][_0x4d56('0x3f')]==='sinch'&&_0x17fb1e[_0x4d56('0x57')][_0x4d56('0x88')]){if(_0x17fb1e[_0x4d56('0x57')][_0x4d56('0x88')][_0x4d56('0x73')]===0x0)return;if(_0x17fb1e[_0x4d56('0x57')]['statuses'][0x0][_0x4d56('0x89')]!=='read')return;return db['WhatsappMessage'][_0x4d56('0x34')]({'read':!![],'readAt':_0x17fb1e[_0x4d56('0x57')][_0x4d56('0x88')][0x0][_0x4d56('0x8a')]},{'where':{'messageId':_0x17fb1e[_0x4d56('0x57')]['statuses'][0x0][_0x4d56('0x8b')]},'individualHooks':!![]})[_0x4d56('0x20')](function(_0x130723){return _0x57ddcf[_0x4d56('0x2c')](0xc8)[_0x4d56('0x2d')](_0x130723);});}_0x3a01cc[_0x4d56('0x8c')]=_[_0x4d56('0x8d')](_0x5cafe5[_0x4d56('0x86')],[_0x4d56('0x81')],[_0x4d56('0x8e')]);if(_0x3a01cc[_0x4d56('0x87')][_0x4d56('0x86')]){delete _0x3a01cc[_0x4d56('0x87')][_0x4d56('0x86')];}return db['CmContact'][_0x4d56('0x62')]()[_0x4d56('0x20')](function(_0x302178){if(!_0x302178){throw new db[(_0x4d56('0x8f'))][(_0x4d56('0x90'))]('no\x20available\x20attributes');}_0x2b9a13=_['difference'](_['keys'](_0x302178),[_0x4d56('0x91'),_0x4d56('0x92')]);_0x1fe7d1=_[_0x4d56('0x93')](_[_0x4d56('0x42')](_0x302178),[_0x4d56('0x91'),_0x4d56('0x92'),'CompanyId',_0x4d56('0x94')]);_0x3a01cc[_0x4d56('0x57')]={'mapKey':_0x4d56('0x95')};if(_0x3a01cc[_0x4d56('0x87')]&&_0x3a01cc[_0x4d56('0x87')][_0x4d56('0x3f')]===_0x4d56('0x96')){_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x97')]=_0x17fb1e['body'][_0x4d56('0x98')]['replace'](_0x4d56('0x99'),'');_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x57')]=_0x17fb1e[_0x4d56('0x57')][_0x4d56('0x9a')];_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x9b')]=_0x17fb1e['body'][_0x4d56('0x9c')];}if(_0x3a01cc['account']&&_0x3a01cc[_0x4d56('0x87')][_0x4d56('0x3f')]===_0x4d56('0x9d')){_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x97')]=_0x17fb1e[_0x4d56('0x57')][_0x4d56('0x9e')][0x0][_0x4d56('0x97')];_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x57')]=_0x17fb1e[_0x4d56('0x57')]['notifications'][0x0]['message'][_0x4d56('0x57')];_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x9b')]=_0x17fb1e[_0x4d56('0x57')][_0x4d56('0x9e')][0x0]['message_id'];}if(_0x3a01cc[_0x4d56('0x57')]['id']){delete _0x3a01cc[_0x4d56('0x57')]['id'];}if(_['isNil'](_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x97')])){throw new db[(_0x4d56('0x8f'))]['ValidationError'](_0x4d56('0x9f'));}if(_[_0x4d56('0xa0')](_0x3a01cc['body'][_0x4d56('0x57')])||_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x57')]===''){throw new db[(_0x4d56('0x8f'))][(_0x4d56('0x90'))](_0x4d56('0xa1'));}if(_[_0x4d56('0xa0')](_0x3a01cc[_0x4d56('0x57')][_0x4d56('0xa2')])){throw new db[(_0x4d56('0x8f'))][(_0x4d56('0x90'))](_0x4d56('0xa3')+_0x1fe7d1);}if(!_[_0x4d56('0xa4')](_0x1fe7d1,_0x3a01cc[_0x4d56('0x57')]['mapKey'])){throw new db[(_0x4d56('0x8f'))][(_0x4d56('0x90'))](_0x4d56('0xa5')+_0x1fe7d1);}_0x99779e[_0x3a01cc[_0x4d56('0x57')][_0x4d56('0xa2')]]=_0x3a01cc['body']['from'];return db['CmList']['find']({'where':{'id':_0x3a01cc[_0x4d56('0x87')][_0x4d56('0x94')]},'include':[{'model':db[_0x4d56('0xa6')],'as':_0x4d56('0xa7'),'where':_0x99779e,'limit':0x1,'order':[[_0x4d56('0x92'),_0x4d56('0xa8')]]}]});})[_0x4d56('0x20')](handleEntityNotFound(_0x57ddcf,null))[_0x4d56('0x20')](function(_0x3704a1){if(_0x3704a1){_0x3a01cc['list']=_['omit'](_0x3704a1,['Contacts']);if(_0x3704a1['Contacts'][_0x4d56('0x73')]){return _0x3704a1['Contacts'][0x0];}var _0x725b55=_[_0x4d56('0x18')](_0x3a01cc['body'],{'firstName':_0x3a01cc['body'][_0x4d56('0x97')],'ListId':_0x3704a1['id']});_0x725b55[_0x3a01cc[_0x4d56('0x57')][_0x4d56('0xa2')]]=_0x3a01cc[_0x4d56('0x57')]['from'];return db['CmContact'][_0x4d56('0x56')](_0x725b55,{'fields':_0x2b9a13,'raw':!![]});}})[_0x4d56('0x20')](handleEntityNotFound(_0x57ddcf,null))[_0x4d56('0x20')](function(_0x510751){if(_0x510751){_0x3a01cc[_0x4d56('0xa9')]=_0x510751;var _0x401729={'ContactId':_0x510751['id'],'phone':_0x3a01cc[_0x4d56('0x57')]['from'],'WhatsappAccountId':_0x17fb1e[_0x4d56('0x54')]['id']};var _0x3beb76={'ContactId':_0x510751['id'],'WhatsappAccountId':_0x17fb1e['params']['id'],'closed':![]};return db[_0x4d56('0xaa')][_0x4d56('0x55')]({'where':_0x3beb76})[_0x4d56('0x20')](function(_0x2b43fd){if(_0x2b43fd){return[_0x2b43fd,![]];}return db[_0x4d56('0xaa')][_0x4d56('0x56')](_0x401729)['then'](function(_0x27d5a0){return[_0x27d5a0,!![]];});});}})[_0x4d56('0x72')](function(_0x21b627,_0x873748){_0x3a01cc['interaction']=_0x21b627[_0x4d56('0x59')]({'plain':!![]});_0x3a01cc[_0x4d56('0xab')][_0x4d56('0xac')]=![];if(_0x873748){if(_0x3a01cc['account'][_0x4d56('0xad')]){_0x3a01cc[_0x4d56('0x8c')]['push']({'id':0x0,'priority':_0x3a01cc[_0x4d56('0x8c')][_0x4d56('0x73')]+0x1,'app':_0x4d56('0xae'),'appdata':_0x4d56('0xaf'),'interval':_0x4d56('0xb0')});}_0x3a01cc[_0x4d56('0xab')][_0x4d56('0xac')]=!![];}return db['WhatsappMessage'][_0x4d56('0x56')]({'phone':_0x3a01cc['body'][_0x4d56('0x97')],'messageId':_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x9b')],'body':_0x3a01cc[_0x4d56('0x57')][_0x4d56('0x57')],'WhatsappAccountId':_0x17fb1e[_0x4d56('0x54')]['id'],'WhatsappInteractionId':_0x21b627['id'],'direction':'in','ContactId':_0x21b627['ContactId'],'AttachmentId':_0x3a01cc[_0x4d56('0x57')][_0x4d56('0xb1')]});})[_0x4d56('0x20')](function(_0x376fec){_0x3a01cc[_0x4d56('0x28')]=_0x376fec;if(_0x3a01cc['interaction'][_0x4d56('0xb2')]){return db[_0x4d56('0x79')][_0x4d56('0x55')]({'attributes':['id',_0x4d56('0x38')],'where':{'id':_0x3a01cc[_0x4d56('0xab')][_0x4d56('0xb2')]}})[_0x4d56('0x20')](function(_0x50086){if(_0x50086){_0x3a01cc[_0x4d56('0x8c')][_0x4d56('0xb3')]({'id':0x0,'priority':0x0,'app':_0x4d56('0xb4'),'appdata':_0x50086[_0x4d56('0x38')]+','+(_0x3a01cc[_0x4d56('0x87')][_0x4d56('0xb5')]||0xa),'interval':_0x4d56('0xb0')});}return respondWithRpcPromise(_0x4d56('0xb6'),'startRouting',_0x3a01cc);});}return respondWithRpcPromise(_0x4d56('0xb6'),_0x4d56('0xb7'),_0x3a01cc);})['then'](function(_0x4ec127){if(_0x4ec127){var _0x1c464e=0xc8;var _0x444bc1=_0x4d56('0xb8');logger['info'](_0x4d56('0xb9'),_0x444bc1,_0x1c464e,'entity\x20found');logger[_0x4d56('0x23')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x444bc1,_0x1c464e,_0x4d56('0xba'),JSON['stringify'](_0x4ec127));if(_0x3a01cc[_0x4d56('0x87')][_0x4d56('0x3f')]===_0x4d56('0x96')){return _0x57ddcf[_0x4d56('0x2c')](_0x1c464e)[_0x4d56('0x32')](_0x4d56('0xbb'),'text/xml')[_0x4d56('0x39')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x57ddcf[_0x4d56('0x2c')](_0x1c464e)[_0x4d56('0x2d')](_0x4ec127);}}});})[_0x4d56('0x2a')](handleError(_0x57ddcf,null));};exports[_0x4d56('0x39')]=function(_0x38e506,_0x459153,_0x31c3b1){var _0xcc5d21,_0x1955f8,_0x5f5504;if(_[_0x4d56('0xa0')](_0x38e506[_0x4d56('0x57')]['body'])||_0x38e506['body'][_0x4d56('0x57')]===''){throw new db['Sequelize']['ValidationError'](_0x4d56('0xa1'));}if(_[_0x4d56('0xa0')](_0x38e506[_0x4d56('0x57')]['to'])){throw new db[(_0x4d56('0x8f'))]['ValidationError'](_0x4d56('0xbc'));}_0xcc5d21=_0x38e506[_0x4d56('0x57')]['to'];return db[_0x4d56('0x3d')]['find']({'where':{'id':_0x38e506[_0x4d56('0x54')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x4d56('0xa6')],'as':_0x4d56('0xa7'),'where':{'mobile':_0xcc5d21},'limit':0x1,'order':[['updatedAt',_0x4d56('0xa8')]]}]}]})['then'](handleEntityNotFound(_0x459153,null))['then'](function(_0x5c72da){if(_0x5c72da&&_0x5c72da['List']){_0x1955f8=_0x5c72da[_0x4d56('0x59')]({'plain':!![]});if(_0x1955f8[_0x4d56('0xbd')]&&_0x1955f8[_0x4d56('0xbd')]['Contacts'][_0x4d56('0x73')]){return _0x1955f8['List']['Contacts'][0x0];}return db[_0x4d56('0xa6')][_0x4d56('0x56')](_[_0x4d56('0x18')](_0x38e506[_0x4d56('0x57')],{'firstName':_0xcc5d21,'mobile':_0xcc5d21,'phone':_0xcc5d21,'ListId':_0x1955f8[_0x4d56('0x94')]}));}})['then'](handleEntityNotFound(_0x459153,null))[_0x4d56('0x20')](function(_0x1c91cb){if(_0x1c91cb){_0x5f5504=_0x1c91cb;return db[_0x4d56('0xaa')]['find']({'where':{'ContactId':_0x5f5504['id'],'closed':![],'WhatsappAccountId':_0x1955f8['id']}})[_0x4d56('0x20')](function(_0x4e552d){if(_0x4e552d){return[_0x4e552d,![]];}return db[_0x4d56('0xaa')][_0x4d56('0x56')]({'UserId':_0x38e506['user']['id'],'ContactId':_0x5f5504['id'],'WhatsappAccountId':_0x1955f8['id'],'phone':_0xcc5d21,'firstMsgDirection':_0x4d56('0xbe'),'Messages':[_[_0x4d56('0x4d')](_0x38e506[_0x4d56('0x57')],{'read':![],'body':_0x38e506[_0x4d56('0x57')]['body'],'phone':_0xcc5d21,'WhatsappAccountId':_0x1955f8['id'],'UserId':_0x38e506[_0x4d56('0x58')]['id'],'ContactId':_0x5f5504['id']})]},{'include':[{'model':db[_0x4d56('0xbf')],'as':_0x4d56('0xc0')}]})[_0x4d56('0x20')](function(_0x4f1252){return[_0x4f1252,!![]];});});}})[_0x4d56('0x72')](function(_0x436734,_0x2a32fb){if(_0x2a32fb){return _0x436734;}return db[_0x4d56('0xbf')][_0x4d56('0x56')](_['merge'](_0x38e506[_0x4d56('0x57')],{'read':![],'body':_0x38e506[_0x4d56('0x57')][_0x4d56('0x57')],'phone':_0xcc5d21,'WhatsappAccountId':_0x1955f8['id'],'WhatsappInteractionId':_0x436734['id'],'UserId':_0x38e506[_0x4d56('0x58')]['id'],'ContactId':_0x5f5504['id']}))['then'](function(_0x51b908){_0x436734[_0x4d56('0xc1')][_0x4d56('0xc0')]=[];_0x436734['dataValues']['Messages'][_0x4d56('0xc2')](_0x51b908['dataValues']);return _0x436734;});})['then'](respondWithResult(_0x459153,null))['catch'](handleError(_0x459153,null));};
\ No newline at end of file
index 547eb09..8dab7af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38ee=['update','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x24ca1f,_0x3d2164){var _0x5f4222=function(_0x37b651){while(--_0x37b651){_0x24ca1f['push'](_0x24ca1f['shift']());}};_0x5f4222(++_0x3d2164);}(_0x38ee,0x1a7));var _0xe38e=function(_0x11fc8b,_0x4ee51d){_0x11fc8b=_0x11fc8b-0x0;var _0x4ea86e=_0x38ee[_0x11fc8b];return _0x4ea86e;};'use strict';var EventEmitter=require(_0xe38e('0x0'));var WhatsappAccount=require(_0xe38e('0x1'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xe38e('0x2')](0x0);var events={'afterCreate':_0xe38e('0x3'),'afterUpdate':_0xe38e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x947a61){return function(_0x41117f,_0x2ae700,_0x14a8cf){WhatsappAccountEvents['emit'](_0x947a61+':'+_0x41117f['id'],_0x41117f);WhatsappAccountEvents['emit'](_0x947a61,_0x41117f);_0x14a8cf(null);};}for(var e in events){if(events[_0xe38e('0x5')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0xe38e('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xbf51=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save'];(function(_0x4a0a1e,_0x367f6a){var _0x23ce29=function(_0x5e029a){while(--_0x5e029a){_0x4a0a1e['push'](_0x4a0a1e['shift']());}};_0x23ce29(++_0x367f6a);}(_0xbf51,0x145));var _0x1bf5=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0xbf51[_0x456fb1];return _0x4083d6;};'use strict';var EventEmitter=require(_0x1bf5('0x0'));var WhatsappAccount=require(_0x1bf5('0x1'))['db'][_0x1bf5('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x1bf5('0x3')](0x0);var events={'afterCreate':_0x1bf5('0x4'),'afterUpdate':_0x1bf5('0x5'),'afterDestroy':_0x1bf5('0x6')};function emitEvent(_0xccb5d3){return function(_0x12601c,_0x1b9fc7,_0xd787c8){WhatsappAccountEvents[_0x1bf5('0x7')](_0xccb5d3+':'+_0x12601c['id'],_0x12601c);WhatsappAccountEvents[_0x1bf5('0x7')](_0xccb5d3,_0x12601c);_0xd787c8(null);};}for(var e in events){if(events[_0x1bf5('0x8')](e)){var event=events[e];WhatsappAccount[_0x1bf5('0x9')](e,emitEvent(event));}}module[_0x1bf5('0xa')]=WhatsappAccountEvents;
\ No newline at end of file
index 6adf6a5..bbc5837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a4=['moment','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount','../../config/logger','api'];(function(_0x297578,_0x16875c){var _0x57da6d=function(_0x23cfeb){while(--_0x23cfeb){_0x297578['push'](_0x297578['shift']());}};_0x57da6d(++_0x16875c);}(_0xc7a4,0xe5));var _0x4c7a=function(_0x3aaf22,_0x6ad9ef){_0x3aaf22=_0x3aaf22-0x0;var _0x13d285=_0xc7a4[_0x3aaf22];return _0x13d285;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4c7a('0x0'))(_0x4c7a('0x1'));var moment=require(_0x4c7a('0x2'));var BPromise=require('bluebird');var rp=require(_0x4c7a('0x3'));var fs=require('fs');var path=require(_0x4c7a('0x4'));var rimraf=require(_0x4c7a('0x5'));var config=require(_0x4c7a('0x6'));var attributes=require(_0x4c7a('0x7'));module[_0x4c7a('0x8')]=function(_0x2f328a,_0x5e666e){return _0x2f328a[_0x4c7a('0x9')](_0x4c7a('0xa'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3925=['rimraf','exports','define','WhatsappAccount','lodash','util','api','bluebird','path'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x3925,0x190));var _0x5392=function(_0x459a0a,_0x25c46f){_0x459a0a=_0x459a0a-0x0;var _0x4ab46c=_0x3925[_0x459a0a];return _0x4ab46c;};'use strict';var _=require(_0x5392('0x0'));var util=require(_0x5392('0x1'));var logger=require('../../config/logger')(_0x5392('0x2'));var moment=require('moment');var BPromise=require(_0x5392('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5392('0x4'));var rimraf=require(_0x5392('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module[_0x5392('0x6')]=function(_0xdb0ba7,_0x4a9f23){return _0xdb0ba7[_0x5392('0x7')](_0x5392('0x8'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bbfbc65..53d8b3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6c=['include','model','map','ShowWhatsappAccount','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','WhatsappAccount','find','options','where','attributes'];(function(_0xafa3b3,_0x419820){var _0x25fa7f=function(_0x547df6){while(--_0x547df6){_0xafa3b3['push'](_0xafa3b3['shift']());}};_0x25fa7f(++_0x419820);}(_0xfd6c,0x19c));var _0xcfd6=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xfd6c[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xcfd6('0x0'));var util=require(_0xcfd6('0x1'));var moment=require(_0xcfd6('0x2'));var BPromise=require(_0xcfd6('0x3'));var rs=require(_0xcfd6('0x4'));var fs=require('fs');var Redis=require(_0xcfd6('0x5'));var db=require(_0xcfd6('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xcfd6('0x7'));var config=require(_0xcfd6('0x8'));var jayson=require(_0xcfd6('0x9'));var client=jayson[_0xcfd6('0xa')][_0xcfd6('0xb')]({'port':0x232a});config[_0xcfd6('0xc')]=_[_0xcfd6('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xcfd6('0xe'))(new Redis(config[_0xcfd6('0xc')]));require(_0xcfd6('0xf'))[_0xcfd6('0x10')](socket);function respondWithRpcPromise(_0x29bbb2,_0x2608a1,_0x5c5ea9){return new BPromise(function(_0x23f7ec,_0x4d8e45){return client['request'](_0x29bbb2,_0x5c5ea9)[_0xcfd6('0x11')](function(_0x5b1bf7){logger[_0xcfd6('0x12')](_0xcfd6('0x13'),_0x2608a1,_0xcfd6('0x14'));logger['debug'](_0xcfd6('0x15'),_0x2608a1,_0xcfd6('0x14'),JSON[_0xcfd6('0x16')](_0x5b1bf7));if(_0x5b1bf7['error']){if(_0x5b1bf7[_0xcfd6('0x17')]['code']===0x1f4){logger[_0xcfd6('0x17')](_0xcfd6('0x13'),_0x2608a1,_0x5b1bf7[_0xcfd6('0x17')][_0xcfd6('0x18')]);return _0x4d8e45(_0x5b1bf7[_0xcfd6('0x17')][_0xcfd6('0x18')]);}logger[_0xcfd6('0x17')](_0xcfd6('0x13'),_0x2608a1,_0x5b1bf7['error']['message']);return _0x23f7ec(_0x5b1bf7['error'][_0xcfd6('0x18')]);}else{logger[_0xcfd6('0x12')](_0xcfd6('0x13'),_0x2608a1,_0xcfd6('0x14'));_0x23f7ec(_0x5b1bf7[_0xcfd6('0x19')]['message']);}})[_0xcfd6('0x1a')](function(_0x3da276){logger[_0xcfd6('0x17')](_0xcfd6('0x13'),_0x2608a1,_0x3da276);_0x4d8e45(_0x3da276);});});}exports['ShowWhatsappAccount']=function(_0x3cfd80){var _0x2771bc=this;return new Promise(function(_0x21dea8,_0x899a06){return db[_0xcfd6('0x1b')][_0xcfd6('0x1c')]({'raw':_0x3cfd80[_0xcfd6('0x1d')]?_0x3cfd80['options']['raw']===undefined?!![]:![]:!![],'where':_0x3cfd80[_0xcfd6('0x1d')]?_0x3cfd80[_0xcfd6('0x1d')][_0xcfd6('0x1e')]||null:null,'attributes':_0x3cfd80[_0xcfd6('0x1d')]?_0x3cfd80[_0xcfd6('0x1d')][_0xcfd6('0x1f')]||null:null,'include':_0x3cfd80[_0xcfd6('0x1d')]?_0x3cfd80[_0xcfd6('0x1d')][_0xcfd6('0x20')]?_['map'](_0x3cfd80[_0xcfd6('0x1d')][_0xcfd6('0x20')],function(_0x206a5b){return{'model':db[_0x206a5b[_0xcfd6('0x21')]],'as':_0x206a5b['as'],'attributes':_0x206a5b[_0xcfd6('0x1f')],'include':_0x206a5b[_0xcfd6('0x20')]?_[_0xcfd6('0x22')](_0x206a5b[_0xcfd6('0x20')],function(_0x38cab9){return{'model':db[_0x38cab9['model']],'as':_0x38cab9['as'],'attributes':_0x38cab9[_0xcfd6('0x1f')],'include':_0x38cab9['include']?_[_0xcfd6('0x22')](_0x38cab9['include'],function(_0x2e01d9){return{'model':db[_0x2e01d9['model']],'as':_0x2e01d9['as'],'attributes':_0x2e01d9[_0xcfd6('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xcfd6('0x11')](function(_0x2eacc2){logger['info'](_0xcfd6('0x23'),_0x3cfd80);logger[_0xcfd6('0x24')](_0xcfd6('0x23'),_0x3cfd80,JSON[_0xcfd6('0x16')](_0x2eacc2));_0x21dea8(_0x2eacc2);})[_0xcfd6('0x1a')](function(_0x5a50ee){logger[_0xcfd6('0x17')]('ShowWhatsappAccount',_0x5a50ee[_0xcfd6('0x18')],_0x3cfd80);_0x899a06(_0x2771bc['error'](0x1f4,_0x5a50ee[_0xcfd6('0x18')]));});});};
\ No newline at end of file
+var _0xdbd2=['find','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount'];(function(_0x3afb1e,_0x43fcd9){var _0x408028=function(_0x49ed62){while(--_0x49ed62){_0x3afb1e['push'](_0x3afb1e['shift']());}};_0x408028(++_0x43fcd9);}(_0xdbd2,0x119));var _0x2dbd=function(_0x57f54f,_0x517e1b){_0x57f54f=_0x57f54f-0x0;var _0x396b35=_0xdbd2[_0x57f54f];return _0x396b35;};'use strict';var _=require(_0x2dbd('0x0'));var util=require(_0x2dbd('0x1'));var moment=require(_0x2dbd('0x2'));var BPromise=require(_0x2dbd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2dbd('0x4'));var db=require(_0x2dbd('0x5'))['db'];var utils=require(_0x2dbd('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x2dbd('0x7'));var jayson=require(_0x2dbd('0x8'));var client=jayson[_0x2dbd('0x9')][_0x2dbd('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x2dbd('0xb')],{'host':_0x2dbd('0xc'),'port':0x18eb});var socket=require(_0x2dbd('0xd'))(new Redis(config[_0x2dbd('0xb')]));require(_0x2dbd('0xe'))[_0x2dbd('0xf')](socket);function respondWithRpcPromise(_0x5c0d8c,_0x543161,_0x2562f2){return new BPromise(function(_0x330a90,_0x1d073b){return client[_0x2dbd('0x10')](_0x5c0d8c,_0x2562f2)[_0x2dbd('0x11')](function(_0x1ebf97){logger[_0x2dbd('0x12')](_0x2dbd('0x13'),_0x543161,_0x2dbd('0x14'));logger[_0x2dbd('0x15')](_0x2dbd('0x16'),_0x543161,_0x2dbd('0x14'),JSON[_0x2dbd('0x17')](_0x1ebf97));if(_0x1ebf97['error']){if(_0x1ebf97[_0x2dbd('0x18')][_0x2dbd('0x19')]===0x1f4){logger[_0x2dbd('0x18')](_0x2dbd('0x13'),_0x543161,_0x1ebf97['error'][_0x2dbd('0x1a')]);return _0x1d073b(_0x1ebf97[_0x2dbd('0x18')][_0x2dbd('0x1a')]);}logger['error'](_0x2dbd('0x13'),_0x543161,_0x1ebf97['error'][_0x2dbd('0x1a')]);return _0x330a90(_0x1ebf97[_0x2dbd('0x18')][_0x2dbd('0x1a')]);}else{logger[_0x2dbd('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x543161,'request\x20sent');_0x330a90(_0x1ebf97[_0x2dbd('0x1b')]['message']);}})[_0x2dbd('0x1c')](function(_0x4a1902){logger[_0x2dbd('0x18')]('WhatsappAccount,\x20%s,\x20%s',_0x543161,_0x4a1902);_0x1d073b(_0x4a1902);});});}exports[_0x2dbd('0x1d')]=function(_0x16b540){var _0x4cd502=this;return new Promise(function(_0xc64c5d,_0x146777){return db[_0x2dbd('0x1e')][_0x2dbd('0x1f')]({'raw':_0x16b540[_0x2dbd('0x20')]?_0x16b540[_0x2dbd('0x20')][_0x2dbd('0x21')]===undefined?!![]:![]:!![],'where':_0x16b540[_0x2dbd('0x20')]?_0x16b540[_0x2dbd('0x20')][_0x2dbd('0x22')]||null:null,'attributes':_0x16b540['options']?_0x16b540[_0x2dbd('0x20')][_0x2dbd('0x23')]||null:null,'include':_0x16b540[_0x2dbd('0x20')]?_0x16b540[_0x2dbd('0x20')][_0x2dbd('0x24')]?_[_0x2dbd('0x25')](_0x16b540[_0x2dbd('0x20')][_0x2dbd('0x24')],function(_0x382af1){return{'model':db[_0x382af1[_0x2dbd('0x26')]],'as':_0x382af1['as'],'attributes':_0x382af1[_0x2dbd('0x23')],'include':_0x382af1[_0x2dbd('0x24')]?_['map'](_0x382af1[_0x2dbd('0x24')],function(_0x5158f5){return{'model':db[_0x5158f5[_0x2dbd('0x26')]],'as':_0x5158f5['as'],'attributes':_0x5158f5[_0x2dbd('0x23')],'include':_0x5158f5[_0x2dbd('0x24')]?_['map'](_0x5158f5[_0x2dbd('0x24')],function(_0x2abaf9){return{'model':db[_0x2abaf9['model']],'as':_0x2abaf9['as'],'attributes':_0x2abaf9[_0x2dbd('0x23')]};}):[]};}):[]};}):[]:[]})[_0x2dbd('0x11')](function(_0x57cc95){logger[_0x2dbd('0x12')](_0x2dbd('0x1d'),_0x16b540);logger[_0x2dbd('0x15')](_0x2dbd('0x1d'),_0x16b540,JSON[_0x2dbd('0x17')](_0x57cc95));_0xc64c5d(_0x57cc95);})[_0x2dbd('0x1c')](function(_0x54b870){logger[_0x2dbd('0x18')]('ShowWhatsappAccount',_0x54b870['message'],_0x16b540);_0x146777(_0x4cd502[_0x2dbd('0x18')](0x1f4,_0x54b870[_0x2dbd('0x1a')]));});});};
\ No newline at end of file
index 6ee83e8..ec99c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a1a=['length','./whatsappAccount.events','update','register'];(function(_0xee3051,_0xbe4f18){var _0x139e81=function(_0xac81c3){while(--_0xac81c3){_0xee3051['push'](_0xee3051['shift']());}};_0x139e81(++_0xbe4f18);}(_0x7a1a,0xc1));var _0xa7a1=function(_0xbf9fcc,_0xe506e0){_0xbf9fcc=_0xbf9fcc-0x0;var _0x4a5b98=_0x7a1a[_0xbf9fcc];return _0x4a5b98;};'use strict';var WhatsappAccountEvents=require(_0xa7a1('0x0'));var events=['save','remove',_0xa7a1('0x1')];function createListener(_0x119c30,_0x5b157e){return function(_0x5e294c){_0x5b157e['emit'](_0x119c30,_0x5e294c);};}function removeListener(_0x1a1101,_0x52bb47){return function(){WhatsappAccountEvents['removeListener'](_0x1a1101,_0x52bb47);};}exports[_0xa7a1('0x2')]=function(_0x33b5ee){for(var _0x31499d=0x0,_0x3a22c9=events[_0xa7a1('0x3')];_0x31499d<_0x3a22c9;_0x31499d++){var _0xb0042a=events[_0x31499d];var _0x5dda0b=createListener('whatsappAccount:'+_0xb0042a,_0x33b5ee);WhatsappAccountEvents['on'](_0xb0042a,_0x5dda0b);}};
\ No newline at end of file
+var _0xe625=['save','remove','emit','removeListener','register','length','whatsappAccount:'];(function(_0x1ebe2f,_0x523227){var _0xdeb06f=function(_0x2a6051){while(--_0x2a6051){_0x1ebe2f['push'](_0x1ebe2f['shift']());}};_0xdeb06f(++_0x523227);}(_0xe625,0x196));var _0x5e62=function(_0x3476b4,_0x4ca78c){_0x3476b4=_0x3476b4-0x0;var _0x31607c=_0xe625[_0x3476b4];return _0x31607c;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x5e62('0x0'),_0x5e62('0x1'),'update'];function createListener(_0x348337,_0x456d83){return function(_0x1cf512){_0x456d83[_0x5e62('0x2')](_0x348337,_0x1cf512);};}function removeListener(_0x982e59,_0x5cae99){return function(){WhatsappAccountEvents[_0x5e62('0x3')](_0x982e59,_0x5cae99);};}exports[_0x5e62('0x4')]=function(_0x29b3cb){for(var _0x347426=0x0,_0x395cb7=events[_0x5e62('0x5')];_0x347426<_0x395cb7;_0x347426++){var _0x52472d=events[_0x347426];var _0x26ab75=createListener(_0x5e62('0x6')+_0x52472d,_0x29b3cb);WhatsappAccountEvents['on'](_0x52472d,_0x26ab75);}};
\ No newline at end of file
index 7eea038..f598a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x872d=['index','/:id','isAuthenticated','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x872d,0xe6));var _0xd872=function(_0x39bdc2,_0x3fd57d){_0x39bdc2=_0x39bdc2-0x0;var _0x3dd62e=_0x872d[_0x39bdc2];return _0x3dd62e;};'use strict';var multer=require(_0xd872('0x0'));var util=require(_0xd872('0x1'));var path=require(_0xd872('0x2'));var timeout=require(_0xd872('0x3'));var express=require('express');var router=express[_0xd872('0x4')]();var fs_extra=require(_0xd872('0x5'));var auth=require(_0xd872('0x6'));var interaction=require(_0xd872('0x7'));var config=require('../../config/environment');var controller=require(_0xd872('0x8'));router[_0xd872('0x9')]('/',auth['isAuthenticated'](),controller[_0xd872('0xa')]);router[_0xd872('0x9')](_0xd872('0xb'),auth[_0xd872('0xc')](),controller['show']);router['post']('/',auth[_0xd872('0xc')](),controller['create']);router['put']('/:id',auth[_0xd872('0xc')](),controller[_0xd872('0xd')]);router[_0xd872('0xe')](_0xd872('0xb'),auth[_0xd872('0xc')](),controller['destroy']);module[_0xd872('0xf')]=router;
\ No newline at end of file
+var _0x40da=['index','show','create','put','/:id','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get','isAuthenticated'];(function(_0x560249,_0x237eda){var _0x19b813=function(_0x37ab1f){while(--_0x37ab1f){_0x560249['push'](_0x560249['shift']());}};_0x19b813(++_0x237eda);}(_0x40da,0x15e));var _0xa40d=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x40da[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0xa40d('0x0'));var util=require(_0xa40d('0x1'));var path=require('path');var timeout=require(_0xa40d('0x2'));var express=require(_0xa40d('0x3'));var router=express[_0xa40d('0x4')]();var fs_extra=require(_0xa40d('0x5'));var auth=require(_0xa40d('0x6'));var interaction=require(_0xa40d('0x7'));var config=require('../../config/environment');var controller=require(_0xa40d('0x8'));router[_0xa40d('0x9')]('/',auth[_0xa40d('0xa')](),controller[_0xa40d('0xb')]);router[_0xa40d('0x9')]('/:id',auth[_0xa40d('0xa')](),controller[_0xa40d('0xc')]);router['post']('/',auth[_0xa40d('0xa')](),controller[_0xa40d('0xd')]);router[_0xa40d('0xe')](_0xa40d('0xf'),auth[_0xa40d('0xa')](),controller['update']);router[_0xa40d('0x10')]('/:id',auth[_0xa40d('0xa')](),controller[_0xa40d('0x11')]);module[_0xa40d('0x12')]=router;
\ No newline at end of file
index 58fa9e6..0a16062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b93=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x88ab27,_0x4d8ef3){var _0x2929aa=function(_0x3cd27c){while(--_0x3cd27c){_0x88ab27['push'](_0x88ab27['shift']());}};_0x2929aa(++_0x4d8ef3);}(_0x8b93,0x127));var _0x38b9=function(_0x3021a3,_0x402f76){_0x3021a3=_0x3021a3-0x0;var _0x4f8405=_0x8b93[_0x3021a3];return _0x4f8405;};'use strict';var Sequelize=require(_0x38b9('0x0'));module[_0x38b9('0x1')]={'priority':{'type':Sequelize[_0x38b9('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x38b9('0x3')],'allowNull':![],'defaultValue':_0x38b9('0x4')},'appdata':{'type':Sequelize[_0x38b9('0x5')]()},'description':{'type':Sequelize[_0x38b9('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x38b9('0x6')}};
\ No newline at end of file
+var _0x7c20=['INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x16a07b,_0x5ae039){var _0x2e00b6=function(_0x30454e){while(--_0x30454e){_0x16a07b['push'](_0x16a07b['shift']());}};_0x2e00b6(++_0x5ae039);}(_0x7c20,0xcc));var _0x07c2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c20[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x07c2('0x0'));module['exports']={'priority':{'type':Sequelize[_0x07c2('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x07c2('0x2')],'allowNull':![],'defaultValue':_0x07c2('0x3')},'appdata':{'type':Sequelize[_0x07c2('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x07c2('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 77cf024..0ab23d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5853=['../../mysqldb','status','offset','undefined','limit','count','json','apply','save','update','then','end','sendStatus','stack','name','send','index','WhatsappApplication','rawAttributes','fieldName','type','key','map','query','keys','filters','attributes','intersection','model','fields','length','nolimit','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','includeAll','include','create','body','find','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x2152a2,_0x41249b){var _0x465ea5=function(_0x209d9c){while(--_0x209d9c){_0x2152a2['push'](_0x2152a2['shift']());}};_0x465ea5(++_0x41249b);}(_0x5853,0x113));var _0x3585=function(_0x34df4a,_0x209d10){_0x34df4a=_0x34df4a-0x0;var _0x145c69=_0x5853[_0x34df4a];return _0x145c69;};'use strict';var emlformat=require(_0x3585('0x0'));var rimraf=require(_0x3585('0x1'));var zipdir=require(_0x3585('0x2'));var jsonpatch=require(_0x3585('0x3'));var rp=require(_0x3585('0x4'));var moment=require('moment');var BPromise=require(_0x3585('0x5'));var Mustache=require(_0x3585('0x6'));var util=require(_0x3585('0x7'));var path=require(_0x3585('0x8'));var sox=require(_0x3585('0x9'));var csv=require(_0x3585('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3585('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3585('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3585('0xd'));var toCsv=require(_0x3585('0xa'));var querystring=require(_0x3585('0xe'));var Papa=require(_0x3585('0xf'));var Redis=require(_0x3585('0x10'));var authService=require(_0x3585('0x11'));var qs=require(_0x3585('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3585('0x13'));var logger=require(_0x3585('0x14'))(_0x3585('0x15'));var utils=require(_0x3585('0x16'));var config=require(_0x3585('0x17'));var licenseUtil=require(_0x3585('0x18'));var db=require(_0x3585('0x19'))['db'];function respondWithStatusCode(_0x4cb90b,_0x30ff5b){_0x30ff5b=_0x30ff5b||0xcc;return function(_0x5a1cee){if(_0x5a1cee){return _0x4cb90b['sendStatus'](_0x30ff5b);}return _0x4cb90b['status'](_0x30ff5b)['end']();};}function respondWithResult(_0x1f9404,_0x500ae0){_0x500ae0=_0x500ae0||0xc8;return function(_0x16b42a){if(_0x16b42a){return _0x1f9404[_0x3585('0x1a')](_0x500ae0)['json'](_0x16b42a);}};}function respondWithFilteredResult(_0x27837a,_0x3c97ae){return function(_0x5e31b2){if(_0x5e31b2){var _0x366723=typeof _0x3c97ae[_0x3585('0x1b')]===_0x3585('0x1c')&&typeof _0x3c97ae[_0x3585('0x1d')]===_0x3585('0x1c');var _0x59e340=_0x5e31b2[_0x3585('0x1e')];var _0x48c1db=_0x366723?0x0:_0x3c97ae[_0x3585('0x1b')];var _0x4493e5=_0x366723?_0x5e31b2[_0x3585('0x1e')]:_0x3c97ae[_0x3585('0x1b')]+_0x3c97ae[_0x3585('0x1d')];var _0x279bf0;if(_0x4493e5>=_0x59e340){_0x4493e5=_0x59e340;_0x279bf0=0xc8;}else{_0x279bf0=0xce;}_0x27837a[_0x3585('0x1a')](_0x279bf0);return _0x27837a['set']('Content-Range',_0x48c1db+'-'+_0x4493e5+'/'+_0x59e340)[_0x3585('0x1f')](_0x5e31b2);}return null;};}function patchUpdates(_0x473dc9){return function(_0x2f3819){try{jsonpatch[_0x3585('0x20')](_0x2f3819,_0x473dc9,!![]);}catch(_0x2b085d){return BPromise['reject'](_0x2b085d);}return _0x2f3819[_0x3585('0x21')]();};}function saveUpdates(_0x2891b8,_0x35975c){return function(_0x2de21d){if(_0x2de21d){return _0x2de21d[_0x3585('0x22')](_0x2891b8)['then'](function(_0x54a08d){return _0x54a08d;});}return null;};}function removeEntity(_0x5dbbec,_0x5ec4c3){return function(_0x568937){if(_0x568937){return _0x568937['destroy']()[_0x3585('0x23')](function(){_0x5dbbec[_0x3585('0x1a')](0xcc)[_0x3585('0x24')]();});}};}function handleEntityNotFound(_0x3a6bf0,_0x41e2f2){return function(_0x504106){if(!_0x504106){_0x3a6bf0[_0x3585('0x25')](0x194);}return _0x504106;};}function handleError(_0x3369dd,_0x57025c){_0x57025c=_0x57025c||0x1f4;return function(_0x3128f8){logger['error'](_0x3128f8[_0x3585('0x26')]);if(_0x3128f8[_0x3585('0x27')]){delete _0x3128f8[_0x3585('0x27')];}_0x3369dd[_0x3585('0x1a')](_0x57025c)[_0x3585('0x28')](_0x3128f8);};}exports[_0x3585('0x29')]=function(_0x3cb377,_0x149c99){var _0x425057={},_0x414a09={},_0xa5315a={'count':0x0,'rows':[]};var _0x3d454f=_['map'](db[_0x3585('0x2a')][_0x3585('0x2b')],function(_0x15ab31){return{'name':_0x15ab31[_0x3585('0x2c')],'type':_0x15ab31[_0x3585('0x2d')][_0x3585('0x2e')]};});_0x414a09['model']=_[_0x3585('0x2f')](_0x3d454f,_0x3585('0x27'));_0x414a09[_0x3585('0x30')]=_[_0x3585('0x31')](_0x3cb377[_0x3585('0x30')]);_0x414a09[_0x3585('0x32')]=_['intersection'](_0x414a09['model'],_0x414a09[_0x3585('0x30')]);_0x425057[_0x3585('0x33')]=_[_0x3585('0x34')](_0x414a09[_0x3585('0x35')],qs['fields'](_0x3cb377['query'][_0x3585('0x36')]));_0x425057[_0x3585('0x33')]=_0x425057[_0x3585('0x33')][_0x3585('0x37')]?_0x425057['attributes']:_0x414a09[_0x3585('0x35')];if(!_0x3cb377[_0x3585('0x30')]['hasOwnProperty'](_0x3585('0x38'))){_0x425057[_0x3585('0x1d')]=qs['limit'](_0x3cb377[_0x3585('0x30')]['limit']);_0x425057['offset']=qs[_0x3585('0x1b')](_0x3cb377[_0x3585('0x30')]['offset']);}_0x425057[_0x3585('0x39')]=qs[_0x3585('0x3a')](_0x3cb377[_0x3585('0x30')][_0x3585('0x3a')]);_0x425057[_0x3585('0x3b')]=qs['filters'](_[_0x3585('0x3c')](_0x3cb377[_0x3585('0x30')],_0x414a09[_0x3585('0x32')]),_0x3d454f);if(_0x3cb377['query'][_0x3585('0x3d')]){_0x425057['where']=_[_0x3585('0x3e')](_0x425057[_0x3585('0x3b')],{'$or':_[_0x3585('0x2f')](_0x3d454f,function(_0x17de8b){if(_0x17de8b['type']!=='VIRTUAL'){var _0x2de519={};_0x2de519[_0x17de8b[_0x3585('0x27')]]={'$like':'%'+_0x3cb377['query'][_0x3585('0x3d')]+'%'};return _0x2de519;}})});}_0x425057=_[_0x3585('0x3e')]({},_0x425057,_0x3cb377[_0x3585('0x3f')]);var _0x3f1d2f={'where':_0x425057[_0x3585('0x3b')]};return db['WhatsappApplication'][_0x3585('0x1e')](_0x3f1d2f)[_0x3585('0x23')](function(_0x2d0249){_0xa5315a[_0x3585('0x1e')]=_0x2d0249;if(_0x3cb377[_0x3585('0x30')]['includeAll']){_0x425057['include']=[{'all':!![]}];}return db['WhatsappApplication'][_0x3585('0x40')](_0x425057);})['then'](function(_0x2b3b2d){_0xa5315a[_0x3585('0x41')]=_0x2b3b2d;return _0xa5315a;})[_0x3585('0x23')](respondWithFilteredResult(_0x149c99,_0x425057))[_0x3585('0x42')](handleError(_0x149c99,null));};exports[_0x3585('0x43')]=function(_0x44c5ee,_0x38019e){var _0xdb9b82={'raw':!![],'where':{'id':_0x44c5ee['params']['id']}},_0x54f68f={};_0x54f68f[_0x3585('0x35')]=_[_0x3585('0x31')](db[_0x3585('0x2a')]['rawAttributes']);_0x54f68f[_0x3585('0x30')]=_[_0x3585('0x31')](_0x44c5ee[_0x3585('0x30')]);_0x54f68f[_0x3585('0x32')]=_[_0x3585('0x34')](_0x54f68f[_0x3585('0x35')],_0x54f68f[_0x3585('0x30')]);_0xdb9b82[_0x3585('0x33')]=_[_0x3585('0x34')](_0x54f68f[_0x3585('0x35')],qs[_0x3585('0x36')](_0x44c5ee[_0x3585('0x30')][_0x3585('0x36')]));_0xdb9b82[_0x3585('0x33')]=_0xdb9b82[_0x3585('0x33')]['length']?_0xdb9b82['attributes']:_0x54f68f['model'];if(_0x44c5ee['query'][_0x3585('0x44')]){_0xdb9b82[_0x3585('0x45')]=[{'all':!![]}];}_0xdb9b82=_[_0x3585('0x3e')]({},_0xdb9b82,_0x44c5ee[_0x3585('0x3f')]);return db[_0x3585('0x2a')]['find'](_0xdb9b82)['then'](handleEntityNotFound(_0x38019e,null))[_0x3585('0x23')](respondWithResult(_0x38019e,null))['catch'](handleError(_0x38019e,null));};exports['create']=function(_0x240e95,_0x531e69){return db[_0x3585('0x2a')][_0x3585('0x46')](_0x240e95[_0x3585('0x47')],{})[_0x3585('0x23')](respondWithResult(_0x531e69,0xc9))[_0x3585('0x42')](handleError(_0x531e69,null));};exports[_0x3585('0x22')]=function(_0x25451f,_0x2c6c5b){if(_0x25451f[_0x3585('0x47')]['id']){delete _0x25451f[_0x3585('0x47')]['id'];}return db[_0x3585('0x2a')][_0x3585('0x48')]({'where':{'id':_0x25451f[_0x3585('0x49')]['id']}})[_0x3585('0x23')](handleEntityNotFound(_0x2c6c5b,null))[_0x3585('0x23')](saveUpdates(_0x25451f[_0x3585('0x47')],null))[_0x3585('0x23')](respondWithResult(_0x2c6c5b,null))[_0x3585('0x42')](handleError(_0x2c6c5b,null));};exports[_0x3585('0x4a')]=function(_0x2d586d,_0x417540){return db[_0x3585('0x2a')][_0x3585('0x48')]({'where':{'id':_0x2d586d['params']['id']}})[_0x3585('0x23')](handleEntityNotFound(_0x417540,null))[_0x3585('0x23')](removeEntity(_0x417540,null))[_0x3585('0x42')](handleError(_0x417540,null));};
\ No newline at end of file
+var _0x3646=['sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../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','reject','save','update','destroy','stack','name','send','WhatsappApplication','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','filter','VIRTUAL','options','then','includeAll','include','rows','catch','show','params','merge','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x3646,0x15f));var _0x6364=function(_0x49dbb6,_0x49aaa2){_0x49dbb6=_0x49dbb6-0x0;var _0x3028f1=_0x3646[_0x49dbb6];return _0x3028f1;};'use strict';var emlformat=require(_0x6364('0x0'));var rimraf=require(_0x6364('0x1'));var zipdir=require(_0x6364('0x2'));var jsonpatch=require(_0x6364('0x3'));var rp=require('request-promise');var moment=require(_0x6364('0x4'));var BPromise=require(_0x6364('0x5'));var Mustache=require(_0x6364('0x6'));var util=require(_0x6364('0x7'));var path=require(_0x6364('0x8'));var sox=require(_0x6364('0x9'));var csv=require(_0x6364('0xa'));var ejs=require(_0x6364('0xb'));var fs=require('fs');var fs_extra=require(_0x6364('0xc'));var _=require(_0x6364('0xd'));var squel=require(_0x6364('0xe'));var crypto=require('crypto');var jsforce=require(_0x6364('0xf'));var deskjs=require(_0x6364('0x10'));var toCsv=require(_0x6364('0xa'));var querystring=require(_0x6364('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6364('0x12'));var as=require(_0x6364('0x13'));var hardwareService=require(_0x6364('0x14'));var logger=require(_0x6364('0x15'))(_0x6364('0x16'));var utils=require(_0x6364('0x17'));var config=require(_0x6364('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6364('0x19'))['db'];function respondWithStatusCode(_0x366907,_0x3af977){_0x3af977=_0x3af977||0xcc;return function(_0x4fa2f3){if(_0x4fa2f3){return _0x366907[_0x6364('0x1a')](_0x3af977);}return _0x366907[_0x6364('0x1b')](_0x3af977)[_0x6364('0x1c')]();};}function respondWithResult(_0x35ade7,_0x5d309e){_0x5d309e=_0x5d309e||0xc8;return function(_0x1f9fd4){if(_0x1f9fd4){return _0x35ade7['status'](_0x5d309e)[_0x6364('0x1d')](_0x1f9fd4);}};}function respondWithFilteredResult(_0x22c9ad,_0x147a5b){return function(_0x56ca03){if(_0x56ca03){var _0x2cfaa8=typeof _0x147a5b[_0x6364('0x1e')]===_0x6364('0x1f')&&typeof _0x147a5b[_0x6364('0x20')]===_0x6364('0x1f');var _0x1ce965=_0x56ca03[_0x6364('0x21')];var _0x4c9c0a=_0x2cfaa8?0x0:_0x147a5b[_0x6364('0x1e')];var _0x52a942=_0x2cfaa8?_0x56ca03[_0x6364('0x21')]:_0x147a5b[_0x6364('0x1e')]+_0x147a5b[_0x6364('0x20')];var _0xb91255;if(_0x52a942>=_0x1ce965){_0x52a942=_0x1ce965;_0xb91255=0xc8;}else{_0xb91255=0xce;}_0x22c9ad[_0x6364('0x1b')](_0xb91255);return _0x22c9ad['set'](_0x6364('0x22'),_0x4c9c0a+'-'+_0x52a942+'/'+_0x1ce965)[_0x6364('0x1d')](_0x56ca03);}return null;};}function patchUpdates(_0x5f42fb){return function(_0x365f7d){try{jsonpatch['apply'](_0x365f7d,_0x5f42fb,!![]);}catch(_0xadbc82){return BPromise[_0x6364('0x23')](_0xadbc82);}return _0x365f7d[_0x6364('0x24')]();};}function saveUpdates(_0x32c924,_0x39f06d){return function(_0x37a540){if(_0x37a540){return _0x37a540[_0x6364('0x25')](_0x32c924)['then'](function(_0x12abc0){return _0x12abc0;});}return null;};}function removeEntity(_0x4c425f,_0x37b360){return function(_0x58eed8){if(_0x58eed8){return _0x58eed8[_0x6364('0x26')]()['then'](function(){_0x4c425f[_0x6364('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32c3e8,_0x2115d8){return function(_0x4028d8){if(!_0x4028d8){_0x32c3e8['sendStatus'](0x194);}return _0x4028d8;};}function handleError(_0x1d9530,_0x548ef2){_0x548ef2=_0x548ef2||0x1f4;return function(_0x267ed9){logger['error'](_0x267ed9[_0x6364('0x27')]);if(_0x267ed9['name']){delete _0x267ed9[_0x6364('0x28')];}_0x1d9530[_0x6364('0x1b')](_0x548ef2)[_0x6364('0x29')](_0x267ed9);};}exports['index']=function(_0xd879a7,_0x1e40ff){var _0x265106={},_0x487945={},_0xd39469={'count':0x0,'rows':[]};var _0x109d6f=_['map'](db[_0x6364('0x2a')][_0x6364('0x2b')],function(_0x2f9c58){return{'name':_0x2f9c58[_0x6364('0x2c')],'type':_0x2f9c58[_0x6364('0x2d')][_0x6364('0x2e')]};});_0x487945[_0x6364('0x2f')]=_[_0x6364('0x30')](_0x109d6f,'name');_0x487945[_0x6364('0x31')]=_[_0x6364('0x32')](_0xd879a7[_0x6364('0x31')]);_0x487945[_0x6364('0x33')]=_['intersection'](_0x487945[_0x6364('0x2f')],_0x487945[_0x6364('0x31')]);_0x265106[_0x6364('0x34')]=_[_0x6364('0x35')](_0x487945[_0x6364('0x2f')],qs[_0x6364('0x36')](_0xd879a7[_0x6364('0x31')]['fields']));_0x265106[_0x6364('0x34')]=_0x265106[_0x6364('0x34')][_0x6364('0x37')]?_0x265106[_0x6364('0x34')]:_0x487945[_0x6364('0x2f')];if(!_0xd879a7[_0x6364('0x31')]['hasOwnProperty'](_0x6364('0x38'))){_0x265106[_0x6364('0x20')]=qs['limit'](_0xd879a7[_0x6364('0x31')]['limit']);_0x265106[_0x6364('0x1e')]=qs[_0x6364('0x1e')](_0xd879a7[_0x6364('0x31')][_0x6364('0x1e')]);}_0x265106[_0x6364('0x39')]=qs[_0x6364('0x3a')](_0xd879a7[_0x6364('0x31')]['sort']);_0x265106['where']=qs['filters'](_['pick'](_0xd879a7['query'],_0x487945[_0x6364('0x33')]),_0x109d6f);if(_0xd879a7[_0x6364('0x31')][_0x6364('0x3b')]){_0x265106['where']=_['merge'](_0x265106['where'],{'$or':_[_0x6364('0x30')](_0x109d6f,function(_0x2ddf7f){if(_0x2ddf7f[_0x6364('0x2d')]!==_0x6364('0x3c')){var _0x268211={};_0x268211[_0x2ddf7f[_0x6364('0x28')]]={'$like':'%'+_0xd879a7['query'][_0x6364('0x3b')]+'%'};return _0x268211;}})});}_0x265106=_['merge']({},_0x265106,_0xd879a7[_0x6364('0x3d')]);var _0x341582={'where':_0x265106['where']};return db[_0x6364('0x2a')][_0x6364('0x21')](_0x341582)[_0x6364('0x3e')](function(_0x42f6e6){_0xd39469['count']=_0x42f6e6;if(_0xd879a7[_0x6364('0x31')][_0x6364('0x3f')]){_0x265106[_0x6364('0x40')]=[{'all':!![]}];}return db['WhatsappApplication']['findAll'](_0x265106);})['then'](function(_0x57c4a8){_0xd39469[_0x6364('0x41')]=_0x57c4a8;return _0xd39469;})['then'](respondWithFilteredResult(_0x1e40ff,_0x265106))[_0x6364('0x42')](handleError(_0x1e40ff,null));};exports[_0x6364('0x43')]=function(_0x1e453b,_0xc2f182){var _0x5a6764={'raw':!![],'where':{'id':_0x1e453b[_0x6364('0x44')]['id']}},_0x5ce383={};_0x5ce383[_0x6364('0x2f')]=_[_0x6364('0x32')](db[_0x6364('0x2a')]['rawAttributes']);_0x5ce383[_0x6364('0x31')]=_['keys'](_0x1e453b['query']);_0x5ce383['filters']=_[_0x6364('0x35')](_0x5ce383[_0x6364('0x2f')],_0x5ce383[_0x6364('0x31')]);_0x5a6764[_0x6364('0x34')]=_[_0x6364('0x35')](_0x5ce383[_0x6364('0x2f')],qs[_0x6364('0x36')](_0x1e453b[_0x6364('0x31')][_0x6364('0x36')]));_0x5a6764[_0x6364('0x34')]=_0x5a6764['attributes']['length']?_0x5a6764[_0x6364('0x34')]:_0x5ce383[_0x6364('0x2f')];if(_0x1e453b[_0x6364('0x31')]['includeAll']){_0x5a6764[_0x6364('0x40')]=[{'all':!![]}];}_0x5a6764=_[_0x6364('0x45')]({},_0x5a6764,_0x1e453b['options']);return db[_0x6364('0x2a')]['find'](_0x5a6764)[_0x6364('0x3e')](handleEntityNotFound(_0xc2f182,null))['then'](respondWithResult(_0xc2f182,null))['catch'](handleError(_0xc2f182,null));};exports['create']=function(_0x462efe,_0x37353c){return db[_0x6364('0x2a')][_0x6364('0x46')](_0x462efe[_0x6364('0x47')],{})['then'](respondWithResult(_0x37353c,0xc9))[_0x6364('0x42')](handleError(_0x37353c,null));};exports[_0x6364('0x25')]=function(_0x2adbca,_0x2f4653){if(_0x2adbca[_0x6364('0x47')]['id']){delete _0x2adbca[_0x6364('0x47')]['id'];}return db['WhatsappApplication']['find']({'where':{'id':_0x2adbca[_0x6364('0x44')]['id']}})[_0x6364('0x3e')](handleEntityNotFound(_0x2f4653,null))[_0x6364('0x3e')](saveUpdates(_0x2adbca[_0x6364('0x47')],null))[_0x6364('0x3e')](respondWithResult(_0x2f4653,null))[_0x6364('0x42')](handleError(_0x2f4653,null));};exports['destroy']=function(_0x84d4ec,_0x499589){return db[_0x6364('0x2a')]['find']({'where':{'id':_0x84d4ec[_0x6364('0x44')]['id']}})[_0x6364('0x3e')](handleEntityNotFound(_0x499589,null))['then'](removeEntity(_0x499589,null))[_0x6364('0x42')](handleError(_0x499589,null));};
\ No newline at end of file
index 21d1783..a4dd4f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['exports','define','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment'];(function(_0xe69802,_0x10aafb){var _0x83f567=function(_0x57b99e){while(--_0x57b99e){_0xe69802['push'](_0xe69802['shift']());}};_0x83f567(++_0x10aafb);}(_0x7da7,0x10d));var _0x77da=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x7da7[_0x1ae5ab];return _0x1ce001;};'use strict';var _=require(_0x77da('0x0'));var util=require(_0x77da('0x1'));var logger=require(_0x77da('0x2'))('api');var moment=require('moment');var BPromise=require(_0x77da('0x3'));var rp=require(_0x77da('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x77da('0x5'));var config=require(_0x77da('0x6'));var attributes=require('./whatsappApplication.attributes');module[_0x77da('0x7')]=function(_0xc54a12,_0x47da81){return _0xc54a12[_0x77da('0x8')]('WhatsappApplication',attributes,{'tableName':_0x77da('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x77da('0xa'),'collate':_0x77da('0xb')});};
\ No newline at end of file
+var _0xf3be=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0xf3be,0x1e1));var _0xef3b=function(_0x386997,_0x2914e2){_0x386997=_0x386997-0x0;var _0x99d69f=_0xf3be[_0x386997];return _0x99d69f;};'use strict';var _=require(_0xef3b('0x0'));var util=require(_0xef3b('0x1'));var logger=require(_0xef3b('0x2'))(_0xef3b('0x3'));var moment=require('moment');var BPromise=require(_0xef3b('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(_0xef3b('0x5'));module[_0xef3b('0x6')]=function(_0x48f499,_0x3dfcc2){return _0x48f499[_0xef3b('0x7')](_0xef3b('0x8'),attributes,{'tableName':_0xef3b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xef3b('0xa'),'collate':_0xef3b('0xb')});};
\ No newline at end of file
index 68baf9a..e24feb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x4ea3,0x70));var _0x34ea=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x4ea3[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x34ea('0x0'));var util=require(_0x34ea('0x1'));var moment=require(_0x34ea('0x2'));var BPromise=require(_0x34ea('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34ea('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x34ea('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x34ea('0x6'));var jayson=require(_0x34ea('0x7'));var client=jayson[_0x34ea('0x8')][_0x34ea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40434e,_0x18b461,_0x22b09e){return new BPromise(function(_0x5bec7c,_0x341727){return client[_0x34ea('0xa')](_0x40434e,_0x22b09e)[_0x34ea('0xb')](function(_0x5132c4){logger[_0x34ea('0xc')](_0x34ea('0xd'),_0x18b461,'request\x20sent');logger['debug'](_0x34ea('0xe'),_0x18b461,_0x34ea('0xf'),JSON[_0x34ea('0x10')](_0x5132c4));if(_0x5132c4['error']){if(_0x5132c4[_0x34ea('0x11')][_0x34ea('0x12')]===0x1f4){logger[_0x34ea('0x11')](_0x34ea('0xd'),_0x18b461,_0x5132c4[_0x34ea('0x11')][_0x34ea('0x13')]);return _0x341727(_0x5132c4[_0x34ea('0x11')][_0x34ea('0x13')]);}logger[_0x34ea('0x11')](_0x34ea('0xd'),_0x18b461,_0x5132c4[_0x34ea('0x11')]['message']);return _0x5bec7c(_0x5132c4[_0x34ea('0x11')][_0x34ea('0x13')]);}else{logger[_0x34ea('0xc')](_0x34ea('0xd'),_0x18b461,_0x34ea('0xf'));_0x5bec7c(_0x5132c4['result'][_0x34ea('0x13')]);}})[_0x34ea('0x14')](function(_0x3fa3b0){logger[_0x34ea('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x18b461,_0x3fa3b0);_0x341727(_0x3fa3b0);});});}
\ No newline at end of file
+var _0x3e74=['rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','WhatsappApplication,\x20%s,\x20%s','message','info','catch','lodash','moment','bluebird','randomstring','../../config/utils'];(function(_0x457456,_0x3b3078){var _0x4a8cc4=function(_0x22cdf9){while(--_0x22cdf9){_0x457456['push'](_0x457456['shift']());}};_0x4a8cc4(++_0x3b3078);}(_0x3e74,0x175));var _0x43e7=function(_0x2db89b,_0x169dd3){_0x2db89b=_0x2db89b-0x0;var _0x129331=_0x3e74[_0x2db89b];return _0x129331;};'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']('WhatsappApplication,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('WhatsappApplication,\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')]('WhatsappApplication,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}
\ No newline at end of file
index 0234692..b88729e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['get','isAuthenticated','index','describe','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','put','/:id','tracked','whatsapp','whatsappinteraction:update','update','delete','destroy','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller'];(function(_0x22b5ec,_0xa78580){var _0x930898=function(_0x162a77){while(--_0x162a77){_0x22b5ec['push'](_0x22b5ec['shift']());}};_0x930898(++_0xa78580);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x133e0a,_0x9b62cd){_0x133e0a=_0x133e0a-0x0;var _0x498f1b=_0xbd0a[_0x133e0a];return _0x498f1b;};'use strict';var multer=require(_0xabd0('0x0'));var util=require('util');var path=require(_0xabd0('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xabd0('0x2'));var auth=require(_0xabd0('0x3'));var interaction=require(_0xabd0('0x4'));var config=require(_0xabd0('0x5'));var controller=require(_0xabd0('0x6'));router[_0xabd0('0x7')]('/',auth[_0xabd0('0x8')](),controller[_0xabd0('0x9')]);router[_0xabd0('0x7')]('/describe',auth[_0xabd0('0x8')](),controller[_0xabd0('0xa')]);router[_0xabd0('0x7')]('/:id',auth[_0xabd0('0x8')](),controller['show']);router[_0xabd0('0x7')](_0xabd0('0xb'),auth[_0xabd0('0x8')](),controller[_0xabd0('0xc')]);router['get'](_0xabd0('0xd'),auth['isAuthenticated'](),controller[_0xabd0('0xe')]);router[_0xabd0('0xf')]('/',auth[_0xabd0('0x8')](),controller[_0xabd0('0x10')]);router[_0xabd0('0xf')](_0xabd0('0xb'),auth['isAuthenticated'](),controller[_0xabd0('0x11')]);router['post'](_0xabd0('0x12'),auth[_0xabd0('0x8')](),interaction['tracked']('whatsapp','whatsappinteraction:addtags'),controller['addTags']);router[_0xabd0('0x13')](_0xabd0('0x14'),auth[_0xabd0('0x8')](),interaction[_0xabd0('0x15')](_0xabd0('0x16'),_0xabd0('0x17')),controller[_0xabd0('0x18')]);router[_0xabd0('0x19')](_0xabd0('0x14'),auth['isAuthenticated'](),interaction[_0xabd0('0x15')]('whatsapp','whatsappinteraction:destroy'),controller[_0xabd0('0x1a')]);router[_0xabd0('0x19')](_0xabd0('0x12'),auth[_0xabd0('0x8')](),controller['removeTags']);module[_0xabd0('0x1b')]=router;
\ No newline at end of file
+var _0x3248=['/:id/tags','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./whatsappInteraction.controller','isAuthenticated','index','get','/describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','tracked','whatsapp','addTags','put','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy'];(function(_0x2055b9,_0x11a7cd){var _0x5249e3=function(_0x287f1e){while(--_0x287f1e){_0x2055b9['push'](_0x2055b9['shift']());}};_0x5249e3(++_0x11a7cd);}(_0x3248,0x1b0));var _0x8324=function(_0x3f7a44,_0x26deb6){_0x3f7a44=_0x3f7a44-0x0;var _0x444af5=_0x3248[_0x3f7a44];return _0x444af5;};'use strict';var multer=require(_0x8324('0x0'));var util=require(_0x8324('0x1'));var path=require(_0x8324('0x2'));var timeout=require(_0x8324('0x3'));var express=require(_0x8324('0x4'));var router=express[_0x8324('0x5')]();var fs_extra=require(_0x8324('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8324('0x7'));var controller=require(_0x8324('0x8'));router['get']('/',auth[_0x8324('0x9')](),controller[_0x8324('0xa')]);router[_0x8324('0xb')](_0x8324('0xc'),auth[_0x8324('0x9')](),controller['describe']);router[_0x8324('0xb')](_0x8324('0xd'),auth[_0x8324('0x9')](),controller['show']);router['get'](_0x8324('0xe'),auth[_0x8324('0x9')](),controller[_0x8324('0xf')]);router['get'](_0x8324('0x10'),auth[_0x8324('0x9')](),controller[_0x8324('0x11')]);router[_0x8324('0x12')]('/',auth[_0x8324('0x9')](),controller[_0x8324('0x13')]);router['post']('/:id/messages',auth['isAuthenticated'](),controller[_0x8324('0x14')]);router['post']('/:id/tags',auth[_0x8324('0x9')](),interaction[_0x8324('0x15')](_0x8324('0x16'),'whatsappinteraction:addtags'),controller[_0x8324('0x17')]);router[_0x8324('0x18')](_0x8324('0xd'),auth['isAuthenticated'](),interaction[_0x8324('0x15')](_0x8324('0x16'),_0x8324('0x19')),controller[_0x8324('0x1a')]);router[_0x8324('0x1b')](_0x8324('0xd'),auth['isAuthenticated'](),interaction['tracked'](_0x8324('0x16'),_0x8324('0x1c')),controller[_0x8324('0x1d')]);router['delete'](_0x8324('0x1e'),auth[_0x8324('0x9')](),controller[_0x8324('0x1f')]);module[_0x8324('0x20')]=router;
\ No newline at end of file
index 27b997d..28e20e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f05=['STRING','out','BOOLEAN','sequelize','moment','exports','DATE'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0x7f05,0xdc));var _0x57f0=function(_0x18c2f8,_0x163fa7){_0x18c2f8=_0x18c2f8-0x0;var _0x597b5d=_0x7f05[_0x18c2f8];return _0x597b5d;};'use strict';var Sequelize=require(_0x57f0('0x0'));var moment=require(_0x57f0('0x1'));module[_0x57f0('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x57f0('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x57f0('0x4')]},'thirdDisposition':{'type':Sequelize[_0x57f0('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x57f0('0x4')]},'read1stAt':{'type':Sequelize[_0x57f0('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x57f0('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x57f0('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x57f0('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x57f0('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9b69=['DATE','out','BOOLEAN','sequelize','moment','exports','STRING','ENUM'];(function(_0x2d4da8,_0x5ae0d6){var _0x2f9401=function(_0x30783f){while(--_0x30783f){_0x2d4da8['push'](_0x2d4da8['shift']());}};_0x2f9401(++_0x5ae0d6);}(_0x9b69,0xa3));var _0x99b6=function(_0xcbb425,_0x117e46){_0xcbb425=_0xcbb425-0x0;var _0x7158fe=_0x9b69[_0xcbb425];return _0x7158fe;};'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 86c8590..2d67d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaf6=['fields','length','includeAll','include','merge','options','create','body','find','describe','addMessage','WhatsappMessage','ids','hasOwnProperty','nolimit','order','sort','where','pick','WhatsappInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','omit','Tag','color','emit','removeTags','download','unix','join','root','tmp','attachments','transcript-%d-%s.zip','push','User','CmContact','Contact','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Account','Owner','fullname','get','mkdirSync','Whatsapp','toString','closed','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','firstName','lastName','read','value','server','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','moment','bluebird','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','update','destroy','then','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','user','catch','show','params','model','keys','WhatsappInteraction','filters','intersection','attributes'];(function(_0x22c6fa,_0x294a82){var _0x213532=function(_0x48b0dc){while(--_0x48b0dc){_0x22c6fa['push'](_0x22c6fa['shift']());}};_0x213532(++_0x294a82);}(_0xfaf6,0xcd));var _0x6faf=function(_0x1ef773,_0x19a814){_0x1ef773=_0x1ef773-0x0;var _0x10a4ad=_0xfaf6[_0x1ef773];return _0x10a4ad;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x6faf('0x0'));var moment=require(_0x6faf('0x1'));var BPromise=require(_0x6faf('0x2'));var util=require(_0x6faf('0x3'));var path=require(_0x6faf('0x4'));var ejs=require(_0x6faf('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x6faf('0x6'));var interaction=require(_0x6faf('0x7'));var qs=require(_0x6faf('0x8'));var pdf=require(_0x6faf('0x9'));var logger=require(_0x6faf('0xa'))(_0x6faf('0xb'));var config=require('../../config/environment');var db=require(_0x6faf('0xc'))['db'];config[_0x6faf('0xd')]=_[_0x6faf('0xe')](config[_0x6faf('0xd')],{'host':_0x6faf('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6faf('0xd')]));require(_0x6faf('0x10'))[_0x6faf('0x11')](socket);function respondWithStatusCode(_0x16462c,_0x4769f4){_0x4769f4=_0x4769f4||0xcc;return function(_0x399d77){if(_0x399d77){return _0x16462c[_0x6faf('0x12')](_0x4769f4);}return _0x16462c[_0x6faf('0x13')](_0x4769f4)['end']();};}function respondWithResult(_0x92796c,_0xf33d81){_0xf33d81=_0xf33d81||0xc8;return function(_0x53b161){if(_0x53b161){return _0x92796c[_0x6faf('0x13')](_0xf33d81)[_0x6faf('0x14')](_0x53b161);}};}function respondWithFilteredResult(_0x43d26e,_0x467e19){return function(_0x1063fc){if(_0x1063fc){var _0x2057c5=typeof _0x467e19[_0x6faf('0x15')]===_0x6faf('0x16')&&typeof _0x467e19['limit']===_0x6faf('0x16');var _0x4a3d2f=_0x1063fc[_0x6faf('0x17')];var _0x205c8d=_0x2057c5?0x0:_0x467e19[_0x6faf('0x15')];var _0x4b9da7=_0x2057c5?_0x1063fc[_0x6faf('0x17')]:_0x467e19[_0x6faf('0x15')]+_0x467e19[_0x6faf('0x18')];var _0x4deb92;if(_0x4b9da7>=_0x4a3d2f){_0x4b9da7=_0x4a3d2f;_0x4deb92=0xc8;}else{_0x4deb92=0xce;}_0x43d26e['status'](_0x4deb92);return _0x43d26e[_0x6faf('0x19')](_0x6faf('0x1a'),_0x205c8d+'-'+_0x4b9da7+'/'+_0x4a3d2f)['json'](_0x1063fc);}return null;};}function saveUpdates(_0x3f5be5){return function(_0x3653e8){if(_0x3653e8){return _0x3653e8[_0x6faf('0x1b')](_0x3f5be5)['then'](function(_0x362a83){return _0x362a83;});}return null;};}function removeEntity(_0xbaf555){return function(_0x4cfc20){if(_0x4cfc20){return _0x4cfc20[_0x6faf('0x1c')]()[_0x6faf('0x1d')](function(){_0xbaf555[_0x6faf('0x13')](0xcc)[_0x6faf('0x1e')]();});}};}function handleEntityNotFound(_0x303715){return function(_0x190052){if(!_0x190052){_0x303715['sendStatus'](0x194);}return _0x190052;};}function handleError(_0x19cf47,_0x4ddb0b){_0x4ddb0b=_0x4ddb0b||0x1f4;return function(_0x4b9662){logger[_0x6faf('0x1f')](_0x4b9662[_0x6faf('0x20')]);if(_0x4b9662[_0x6faf('0x21')]){delete _0x4b9662[_0x6faf('0x21')];}_0x19cf47[_0x6faf('0x13')](_0x4ddb0b)[_0x6faf('0x22')](_0x4b9662);};}exports[_0x6faf('0x23')]=function(_0x250d3f,_0x3ec991){var _0x3e9b66={};var _0x88df09=_[_0x6faf('0x24')](db['WhatsappInteraction'][_0x6faf('0x25')],function(_0x10beec){return{'name':_0x10beec[_0x6faf('0x26')],'type':_0x10beec[_0x6faf('0x27')][_0x6faf('0x28')]};});_0x3e9b66=qs[_0x6faf('0x29')](_0x88df09,_0x250d3f);return interaction[_0x6faf('0x2a')](_0x6faf('0x2b'),_0x250d3f[_0x6faf('0x2c')],_0x250d3f[_0x6faf('0x2d')],_0x3e9b66,_0x88df09)['then'](respondWithFilteredResult(_0x3ec991,_0x3e9b66))[_0x6faf('0x2e')](handleError(_0x3ec991,null));};exports[_0x6faf('0x2f')]=function(_0x1270c3,_0x173f65){var _0x57fc54={'raw':![],'where':{'id':_0x1270c3[_0x6faf('0x30')]['id']}},_0x2e4788={};_0x2e4788[_0x6faf('0x31')]=_[_0x6faf('0x32')](db[_0x6faf('0x33')][_0x6faf('0x25')]);_0x2e4788[_0x6faf('0x2c')]=_[_0x6faf('0x32')](_0x1270c3[_0x6faf('0x2c')]);_0x2e4788[_0x6faf('0x34')]=_[_0x6faf('0x35')](_0x2e4788['model'],_0x2e4788['query']);_0x57fc54[_0x6faf('0x36')]=_['intersection'](_0x2e4788[_0x6faf('0x31')],qs[_0x6faf('0x37')](_0x1270c3[_0x6faf('0x2c')]['fields']));_0x57fc54[_0x6faf('0x36')]=_0x57fc54[_0x6faf('0x36')][_0x6faf('0x38')]?_0x57fc54['attributes']:_0x2e4788[_0x6faf('0x31')];if(_0x1270c3[_0x6faf('0x2c')][_0x6faf('0x39')]){_0x57fc54[_0x6faf('0x3a')]=[{'all':!![]}];}_0x57fc54=_[_0x6faf('0x3b')]({},_0x57fc54,_0x1270c3[_0x6faf('0x3c')]);return db[_0x6faf('0x33')]['find'](_0x57fc54)['then'](handleEntityNotFound(_0x173f65,null))['then'](respondWithResult(_0x173f65,null))['catch'](handleError(_0x173f65,null));};exports[_0x6faf('0x3d')]=function(_0x460255,_0x592153){return db[_0x6faf('0x33')][_0x6faf('0x3d')](_0x460255[_0x6faf('0x3e')],{})[_0x6faf('0x1d')](respondWithResult(_0x592153,0xc9))[_0x6faf('0x2e')](handleError(_0x592153,null));};exports[_0x6faf('0x1b')]=function(_0x10b571,_0x483c17){if(_0x10b571[_0x6faf('0x3e')]['id']){delete _0x10b571[_0x6faf('0x3e')]['id'];}return db[_0x6faf('0x33')]['find']({'where':{'id':_0x10b571[_0x6faf('0x30')]['id']}})[_0x6faf('0x1d')](handleEntityNotFound(_0x483c17,null))[_0x6faf('0x1d')](saveUpdates(_0x10b571['body'],null))[_0x6faf('0x1d')](respondWithResult(_0x483c17,null))[_0x6faf('0x2e')](handleError(_0x483c17,null));};exports[_0x6faf('0x1c')]=function(_0x466b5b,_0x5e19c7){return db[_0x6faf('0x33')][_0x6faf('0x3f')]({'where':{'id':_0x466b5b[_0x6faf('0x30')]['id']}})[_0x6faf('0x1d')](handleEntityNotFound(_0x5e19c7,null))['then'](removeEntity(_0x5e19c7,null))[_0x6faf('0x2e')](handleError(_0x5e19c7,null));};exports[_0x6faf('0x40')]=function(_0x5bd32f,_0x5df134){return db['WhatsappInteraction'][_0x6faf('0x40')]()[_0x6faf('0x1d')](respondWithResult(_0x5df134,null))[_0x6faf('0x2e')](handleError(_0x5df134,null));};exports[_0x6faf('0x41')]=function(_0x304755,_0x364785){return db[_0x6faf('0x42')][_0x6faf('0x3f')]({'where':{'id':_0x304755[_0x6faf('0x30')]['id']}})[_0x6faf('0x1d')](handleEntityNotFound(_0x364785,null))[_0x6faf('0x1d')](function(_0x4edb86){if(_0x4edb86){return _0x4edb86['addMessage'](_0x304755[_0x6faf('0x3e')][_0x6faf('0x43')],_['omit'](_0x304755[_0x6faf('0x3e')],[_0x6faf('0x43'),'id'])||{});}})[_0x6faf('0x1d')](respondWithResult(_0x364785,null))[_0x6faf('0x2e')](handleError(_0x364785,null));};exports['getMessages']=function(_0x29e5c5,_0x2ee78b){var _0xe59041={'raw':![],'where':{}};var _0x325499={};var _0x3e334c={'count':0x0,'rows':[]};return db[_0x6faf('0x33')]['findOne']({'where':{'id':_0x29e5c5['params']['id']}})[_0x6faf('0x1d')](handleEntityNotFound(_0x2ee78b,null))[_0x6faf('0x1d')](function(_0x4467f9){if(_0x4467f9){_0x325499['model']=_[_0x6faf('0x32')](db['WhatsappMessage'][_0x6faf('0x25')]);_0x325499['query']=_[_0x6faf('0x32')](_0x29e5c5[_0x6faf('0x2c')]);_0x325499[_0x6faf('0x34')]=_[_0x6faf('0x35')](_0x325499[_0x6faf('0x31')],_0x325499[_0x6faf('0x2c')]);_0xe59041[_0x6faf('0x36')]=_[_0x6faf('0x35')](_0x325499[_0x6faf('0x31')],qs['fields'](_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x37')]));_0xe59041[_0x6faf('0x36')]=_0xe59041['attributes'][_0x6faf('0x38')]?_0xe59041['attributes']:_0x325499['model'];if(!_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x44')](_0x6faf('0x45'))){_0xe59041[_0x6faf('0x18')]=qs['limit'](_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x18')]);_0xe59041[_0x6faf('0x15')]=qs['offset'](_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x15')]);}_0xe59041[_0x6faf('0x46')]=qs[_0x6faf('0x47')](_0x29e5c5[_0x6faf('0x2c')]['sort']);_0xe59041[_0x6faf('0x48')]=qs[_0x6faf('0x34')](_[_0x6faf('0x49')](_0x29e5c5[_0x6faf('0x2c')],_0x325499[_0x6faf('0x34')]));_0xe59041['where'][_0x6faf('0x4a')]=_0x4467f9['id'];if(_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x4b')]){_0xe59041[_0x6faf('0x48')]=_[_0x6faf('0x3b')](_0xe59041['where'],{'$or':_[_0x6faf('0x24')](_0xe59041['attributes'],function(_0x2a3e90){var _0x29c07e={};_0x29c07e[_0x2a3e90]={'$like':'%'+_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x4b')]+'%'};return _0x29c07e;})});}if(_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x4c')]){var _0x1e5557=_0x29e5c5['query']['$gte']['split'](',');var _0x57a664={};_0x57a664[_0x1e5557[0x0]]={'$gte':moment(_0x1e5557[0x1])[_0x6faf('0x4d')](_0x6faf('0x4e'))};_0xe59041[_0x6faf('0x48')]=_['merge'](_0xe59041['where'],_0x57a664);}_0xe59041=_[_0x6faf('0x3b')]({},_0xe59041,_0x29e5c5[_0x6faf('0x3c')]);return db['WhatsappMessage'][_0x6faf('0x17')]({'where':_0xe59041['where']})[_0x6faf('0x1d')](function(_0x400359){_0x3e334c[_0x6faf('0x17')]=_0x400359;if(_0x29e5c5[_0x6faf('0x2c')][_0x6faf('0x39')]){_0xe59041[_0x6faf('0x3a')]=[{'all':!![]}];}return db[_0x6faf('0x42')][_0x6faf('0x2a')](_0xe59041);})[_0x6faf('0x1d')](function(_0x4db4a8){_0x3e334c[_0x6faf('0x4f')]=_0x4db4a8;return _0x3e334c;});}})['then'](respondWithFilteredResult(_0x2ee78b,_0xe59041))[_0x6faf('0x2e')](handleError(_0x2ee78b,null));};exports['addTags']=function(_0x59def9,_0x466e8f){return db[_0x6faf('0x33')][_0x6faf('0x3f')]({'where':{'id':_0x59def9[_0x6faf('0x30')]['id']}})[_0x6faf('0x1d')](handleEntityNotFound(_0x466e8f,null))[_0x6faf('0x1d')](function(_0x511cba){if(_0x511cba){return _0x511cba[_0x6faf('0x50')](_0x59def9[_0x6faf('0x3e')][_0x6faf('0x43')],_[_0x6faf('0x51')](_0x59def9[_0x6faf('0x3e')],[_0x6faf('0x43'),'id'])||{})['spread'](function(){return db[_0x6faf('0x52')][_0x6faf('0x2a')]({'attributes':['id',_0x6faf('0x21'),_0x6faf('0x53')],'where':{'id':_0x59def9[_0x6faf('0x3e')][_0x6faf('0x43')]}});})['then'](function(_0x58e0f4){socket[_0x6faf('0x54')]('whatsappInteractionTags:save',{'id':Number(_0x59def9['params']['id']),'tags':_0x58e0f4||[]});return{'id':Number(_0x59def9[_0x6faf('0x30')]['id']),'tags':_0x58e0f4||[]};});}})[_0x6faf('0x1d')](respondWithResult(_0x466e8f,null))[_0x6faf('0x2e')](handleError(_0x466e8f,null));};exports[_0x6faf('0x55')]=function(_0x253134,_0x38d0ca){return db['WhatsappInteraction']['find']({'where':{'id':_0x253134[_0x6faf('0x30')]['id']}})[_0x6faf('0x1d')](handleEntityNotFound(_0x38d0ca,null))['then'](function(_0x14952d){if(_0x14952d){return _0x14952d[_0x6faf('0x55')](_0x253134[_0x6faf('0x2c')][_0x6faf('0x43')]);}})[_0x6faf('0x1d')](respondWithStatusCode(_0x38d0ca,null))['catch'](handleError(_0x38d0ca,null));};exports[_0x6faf('0x56')]=function(_0x4ac31e,_0x9ddd66){var _0x5b3cda=moment()[_0x6faf('0x57')]()['toString']();var _0x2fc638=path[_0x6faf('0x58')](config[_0x6faf('0x59')],'server','files',_0x6faf('0x5a'));var _0x1689ff=path['join'](config['root'],'server','files',_0x6faf('0x5b'));var _0x266de4=path[_0x6faf('0x58')](_0x2fc638,_0x5b3cda);var _0x590802=util[_0x6faf('0x4d')](_0x6faf('0x5c'),_0x4ac31e[_0x6faf('0x30')]['id'],_0x5b3cda);var _0x3e3ea4=path[_0x6faf('0x58')](_0x2fc638,_0x590802);var _0x382028=[];_0x382028[_0x6faf('0x5d')]({'model':db['User'],'as':_0x6faf('0x5e'),'attributes':['id','fullname'],'raw':!![]});_0x382028[_0x6faf('0x5d')]({'model':db[_0x6faf('0x5f')],'as':_0x6faf('0x60'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x4ac31e[_0x6faf('0x2c')]['attachments']){_0x382028['push']({'model':db['Attachment'],'as':_0x6faf('0x61'),'raw':!![]});}var _0x1bba37=[{'model':db['WhatsappMessage'],'as':_0x6faf('0x62'),'attributes':['id',_0x6faf('0x3e'),_0x6faf('0x63'),_0x6faf('0x64'),_0x6faf('0x65'),'read'],'include':_0x382028}];_0x1bba37[_0x6faf('0x5d')]({'model':db[_0x6faf('0x66')],'as':_0x6faf('0x67'),'attributes':['id','name']});_0x1bba37[_0x6faf('0x5d')]({'model':db[_0x6faf('0x5e')],'as':_0x6faf('0x68'),'attributes':['id',_0x6faf('0x69')]});return db[_0x6faf('0x33')][_0x6faf('0x3f')]({'where':{'id':_0x4ac31e['params']['id']},'include':_0x1bba37})[_0x6faf('0x1d')](handleEntityNotFound(_0x9ddd66,null))['then'](function(_0x1074aa){if(_0x1074aa){var _0x58c30f=_0x1074aa[_0x6faf('0x6a')]({'plain':!![]});fs[_0x6faf('0x6b')](_0x266de4);var _0x5c1668={'channel':_0x6faf('0x6c'),'account':_0x58c30f[_0x6faf('0x67')][_0x6faf('0x21')],'agent':_0x58c30f[_0x6faf('0x68')]?_0x58c30f[_0x6faf('0x68')]['fullname']:'N.A.','createdAt':moment(_0x58c30f['createdAt'])[_0x6faf('0x4d')](_0x6faf('0x4e'))[_0x6faf('0x6d')](),'closedAt':_0x58c30f[_0x6faf('0x6e')]?moment(_0x58c30f['closedAt'])[_0x6faf('0x4d')](_0x6faf('0x4e'))[_0x6faf('0x6d')]():'','disposition':_0x58c30f[_0x6faf('0x6f')],'messages':_(_0x58c30f['Messages'])[_0x6faf('0x4b')]({'secret':![]})['map'](function(_0x39c79a){if(_0x39c79a['Attachment']){var _0x471182=path['join'](_0x1689ff,_0x39c79a[_0x6faf('0x61')][_0x6faf('0x70')]);if(fs[_0x6faf('0x71')](_0x471182)){fs[_0x6faf('0x72')](_0x471182)[_0x6faf('0x73')](fs[_0x6faf('0x74')](path[_0x6faf('0x58')](_0x266de4,_0x39c79a['Attachment'][_0x6faf('0x70')])));}}return{'date':moment(_0x39c79a[_0x6faf('0x63')])['format'](_0x6faf('0x4e'))[_0x6faf('0x6d')](),'sender':_0x39c79a['direction']===_0x6faf('0x75')?_0x39c79a[_0x6faf('0x5e')]?_0x39c79a['User'][_0x6faf('0x69')]:_0x6faf('0x76'):_0x39c79a[_0x6faf('0x60')][_0x6faf('0x77')]+(_0x39c79a[_0x6faf('0x60')][_0x6faf('0x78')]?'\x20'+_0x39c79a[_0x6faf('0x60')][_0x6faf('0x78')]:''),'body':_0x39c79a[_0x6faf('0x61')]?_0x39c79a[_0x6faf('0x61')][_0x6faf('0x70')]:_0x39c79a['body'],'direction':_0x39c79a[_0x6faf('0x64')]===_0x6faf('0x75')?'A':'C','secret':_0x39c79a[_0x6faf('0x65')],'read':_0x39c79a[_0x6faf('0x79')],'attachment':_0x39c79a['Attachment']};})[_0x6faf('0x7a')]()};return ejs['renderFile'](path[_0x6faf('0x58')](config[_0x6faf('0x59')],_0x6faf('0x7b'),'views',_0x6faf('0x7c')),{'interaction':_0x5c1668})['then'](function(_0x303fac){var _0x254e9d=path[_0x6faf('0x58')](_0x266de4,_0x6faf('0x7d')+_0x58c30f['id']+'-'+_0x5b3cda+_0x6faf('0x7e'));var _0xae5134={'path':_0x254e9d,'channel':_0x6faf('0x6c'),'interactionId':_0x58c30f['id']};return pdf[_0x6faf('0x7f')](_0x303fac,_0xae5134);})[_0x6faf('0x1d')](function(){return new BPromise(function(_0x1428d6,_0x375372){zipdir(_0x266de4,{'saveTo':_0x3e3ea4},function(_0x51bb4d,_0x142777){if(_0x51bb4d)return _0x375372(_0x51bb4d);return _0x1428d6(_0x142777);});})[_0x6faf('0x1d')](function(){return new BPromise(function(_0x447384,_0x1738e4){rimraf(_0x266de4,function(_0x1465d7){if(_0x1465d7)_0x1738e4(_0x1465d7);return _0x447384();});});})[_0x6faf('0x1d')](function(){return _0x9ddd66['download'](_0x3e3ea4,_0x590802,function(_0x26bcc3){if(_0x26bcc3){console['log'](_0x6faf('0x80'),_0x26bcc3);}else{fs[_0x6faf('0x81')](_0x3e3ea4);}});});});}else{return _0x9ddd66[_0x6faf('0x12')](0xc8);}})[_0x6faf('0x2e')](handleError(_0x9ddd66,null));};
\ No newline at end of file
+var _0xb683=['User','fullname','CmContact','Contact','lastName','Attachment','direction','secret','read','WhatsappAccount','Account','Owner','N.A.','createdAt','closed','closedAt','disposition','basename','existsSync','createReadStream','createWriteStream','firstName','out','value','renderFile','transcript-','.pdf','Whatsapp','createPdfFromHTML','err','unlinkSync','zip-dir','moment','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','update','destroy','then','error','stack','name','map','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','user','catch','show','params','model','keys','WhatsappInteraction','query','filters','intersection','attributes','fields','length','include','merge','options','find','create','body','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','hasOwnProperty','nolimit','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','omit','spread','color','whatsappInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push'];(function(_0x8c125c,_0x1c1ccb){var _0x56cf5b=function(_0x29daf3){while(--_0x29daf3){_0x8c125c['push'](_0x8c125c['shift']());}};_0x56cf5b(++_0x1c1ccb);}(_0xb683,0x199));var _0x3b68=function(_0x14ec9d,_0x45d283){_0x14ec9d=_0x14ec9d-0x0;var _0x3636df=_0xb683[_0x14ec9d];return _0x3636df;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x3b68('0x0'));var moment=require(_0x3b68('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require(_0x3b68('0x2'));var ejs=require(_0x3b68('0x3'));var fs=require('fs');var _=require(_0x3b68('0x4'));var Redis=require(_0x3b68('0x5'));var interaction=require(_0x3b68('0x6'));var qs=require(_0x3b68('0x7'));var pdf=require(_0x3b68('0x8'));var logger=require(_0x3b68('0x9'))(_0x3b68('0xa'));var config=require('../../config/environment');var db=require(_0x3b68('0xb'))['db'];config[_0x3b68('0xc')]=_['defaults'](config[_0x3b68('0xc')],{'host':_0x3b68('0xd'),'port':0x18eb});var socket=require(_0x3b68('0xe'))(new Redis(config[_0x3b68('0xc')]));require(_0x3b68('0xf'))[_0x3b68('0x10')](socket);function respondWithStatusCode(_0x35846f,_0x560b38){_0x560b38=_0x560b38||0xcc;return function(_0x580071){if(_0x580071){return _0x35846f[_0x3b68('0x11')](_0x560b38);}return _0x35846f['status'](_0x560b38)[_0x3b68('0x12')]();};}function respondWithResult(_0x5db161,_0x597821){_0x597821=_0x597821||0xc8;return function(_0x2219e9){if(_0x2219e9){return _0x5db161[_0x3b68('0x13')](_0x597821)['json'](_0x2219e9);}};}function respondWithFilteredResult(_0x1d3e52,_0x3ced7e){return function(_0x45a468){if(_0x45a468){var _0x4b27aa=typeof _0x3ced7e[_0x3b68('0x14')]==='undefined'&&typeof _0x3ced7e[_0x3b68('0x15')]===_0x3b68('0x16');var _0x2a8901=_0x45a468['count'];var _0x423731=_0x4b27aa?0x0:_0x3ced7e['offset'];var _0x32af3b=_0x4b27aa?_0x45a468[_0x3b68('0x17')]:_0x3ced7e[_0x3b68('0x14')]+_0x3ced7e[_0x3b68('0x15')];var _0x17fb70;if(_0x32af3b>=_0x2a8901){_0x32af3b=_0x2a8901;_0x17fb70=0xc8;}else{_0x17fb70=0xce;}_0x1d3e52['status'](_0x17fb70);return _0x1d3e52[_0x3b68('0x18')](_0x3b68('0x19'),_0x423731+'-'+_0x32af3b+'/'+_0x2a8901)[_0x3b68('0x1a')](_0x45a468);}return null;};}function saveUpdates(_0x5921d2){return function(_0x6eb892){if(_0x6eb892){return _0x6eb892[_0x3b68('0x1b')](_0x5921d2)['then'](function(_0x21d4d6){return _0x21d4d6;});}return null;};}function removeEntity(_0x3b3397){return function(_0x375b4e){if(_0x375b4e){return _0x375b4e[_0x3b68('0x1c')]()[_0x3b68('0x1d')](function(){_0x3b3397[_0x3b68('0x13')](0xcc)[_0x3b68('0x12')]();});}};}function handleEntityNotFound(_0x22df95){return function(_0x489407){if(!_0x489407){_0x22df95[_0x3b68('0x11')](0x194);}return _0x489407;};}function handleError(_0x11d070,_0x4f1acc){_0x4f1acc=_0x4f1acc||0x1f4;return function(_0x2556ec){logger[_0x3b68('0x1e')](_0x2556ec[_0x3b68('0x1f')]);if(_0x2556ec['name']){delete _0x2556ec[_0x3b68('0x20')];}_0x11d070[_0x3b68('0x13')](_0x4f1acc)['send'](_0x2556ec);};}exports['index']=function(_0x2f02a6,_0x39ad07){var _0x43b55e={};var _0x39f98a=_[_0x3b68('0x21')](db['WhatsappInteraction'][_0x3b68('0x22')],function(_0x388008){return{'name':_0x388008[_0x3b68('0x23')],'type':_0x388008[_0x3b68('0x24')][_0x3b68('0x25')]};});_0x43b55e=qs[_0x3b68('0x26')](_0x39f98a,_0x2f02a6);return interaction[_0x3b68('0x27')](_0x3b68('0x28'),_0x2f02a6['query'],_0x2f02a6[_0x3b68('0x29')],_0x43b55e,_0x39f98a)[_0x3b68('0x1d')](respondWithFilteredResult(_0x39ad07,_0x43b55e))[_0x3b68('0x2a')](handleError(_0x39ad07,null));};exports[_0x3b68('0x2b')]=function(_0x5b87f3,_0x2d63f7){var _0x16bf67={'raw':![],'where':{'id':_0x5b87f3[_0x3b68('0x2c')]['id']}},_0x19f355={};_0x19f355[_0x3b68('0x2d')]=_[_0x3b68('0x2e')](db[_0x3b68('0x2f')]['rawAttributes']);_0x19f355['query']=_[_0x3b68('0x2e')](_0x5b87f3[_0x3b68('0x30')]);_0x19f355[_0x3b68('0x31')]=_[_0x3b68('0x32')](_0x19f355[_0x3b68('0x2d')],_0x19f355[_0x3b68('0x30')]);_0x16bf67[_0x3b68('0x33')]=_[_0x3b68('0x32')](_0x19f355['model'],qs['fields'](_0x5b87f3['query'][_0x3b68('0x34')]));_0x16bf67['attributes']=_0x16bf67['attributes'][_0x3b68('0x35')]?_0x16bf67[_0x3b68('0x33')]:_0x19f355[_0x3b68('0x2d')];if(_0x5b87f3[_0x3b68('0x30')]['includeAll']){_0x16bf67[_0x3b68('0x36')]=[{'all':!![]}];}_0x16bf67=_[_0x3b68('0x37')]({},_0x16bf67,_0x5b87f3[_0x3b68('0x38')]);return db['WhatsappInteraction'][_0x3b68('0x39')](_0x16bf67)[_0x3b68('0x1d')](handleEntityNotFound(_0x2d63f7,null))[_0x3b68('0x1d')](respondWithResult(_0x2d63f7,null))[_0x3b68('0x2a')](handleError(_0x2d63f7,null));};exports[_0x3b68('0x3a')]=function(_0x487044,_0x1eb86d){return db[_0x3b68('0x2f')][_0x3b68('0x3a')](_0x487044[_0x3b68('0x3b')],{})['then'](respondWithResult(_0x1eb86d,0xc9))['catch'](handleError(_0x1eb86d,null));};exports['update']=function(_0x3e2bea,_0x284da8){if(_0x3e2bea['body']['id']){delete _0x3e2bea[_0x3b68('0x3b')]['id'];}return db[_0x3b68('0x2f')]['find']({'where':{'id':_0x3e2bea['params']['id']}})[_0x3b68('0x1d')](handleEntityNotFound(_0x284da8,null))[_0x3b68('0x1d')](saveUpdates(_0x3e2bea[_0x3b68('0x3b')],null))['then'](respondWithResult(_0x284da8,null))[_0x3b68('0x2a')](handleError(_0x284da8,null));};exports[_0x3b68('0x1c')]=function(_0x2d815c,_0x25a552){return db['WhatsappInteraction']['find']({'where':{'id':_0x2d815c['params']['id']}})[_0x3b68('0x1d')](handleEntityNotFound(_0x25a552,null))['then'](removeEntity(_0x25a552,null))[_0x3b68('0x2a')](handleError(_0x25a552,null));};exports['describe']=function(_0x4ecf53,_0x269eaa){return db[_0x3b68('0x2f')][_0x3b68('0x3c')]()['then'](respondWithResult(_0x269eaa,null))[_0x3b68('0x2a')](handleError(_0x269eaa,null));};exports[_0x3b68('0x3d')]=function(_0x4e9668,_0x4d6216){return db[_0x3b68('0x3e')][_0x3b68('0x39')]({'where':{'id':_0x4e9668[_0x3b68('0x2c')]['id']}})[_0x3b68('0x1d')](handleEntityNotFound(_0x4d6216,null))[_0x3b68('0x1d')](function(_0x3b9e11){if(_0x3b9e11){return _0x3b9e11[_0x3b68('0x3d')](_0x4e9668[_0x3b68('0x3b')][_0x3b68('0x3f')],_['omit'](_0x4e9668['body'],['ids','id'])||{});}})[_0x3b68('0x1d')](respondWithResult(_0x4d6216,null))[_0x3b68('0x2a')](handleError(_0x4d6216,null));};exports[_0x3b68('0x40')]=function(_0x1a6363,_0xcecab1){var _0x5eec3a={'raw':![],'where':{}};var _0xa58608={};var _0x29a6c8={'count':0x0,'rows':[]};return db[_0x3b68('0x2f')][_0x3b68('0x41')]({'where':{'id':_0x1a6363['params']['id']}})[_0x3b68('0x1d')](handleEntityNotFound(_0xcecab1,null))[_0x3b68('0x1d')](function(_0x38e3e0){if(_0x38e3e0){_0xa58608[_0x3b68('0x2d')]=_[_0x3b68('0x2e')](db[_0x3b68('0x3e')]['rawAttributes']);_0xa58608[_0x3b68('0x30')]=_[_0x3b68('0x2e')](_0x1a6363[_0x3b68('0x30')]);_0xa58608[_0x3b68('0x31')]=_['intersection'](_0xa58608[_0x3b68('0x2d')],_0xa58608[_0x3b68('0x30')]);_0x5eec3a['attributes']=_[_0x3b68('0x32')](_0xa58608[_0x3b68('0x2d')],qs[_0x3b68('0x34')](_0x1a6363[_0x3b68('0x30')][_0x3b68('0x34')]));_0x5eec3a[_0x3b68('0x33')]=_0x5eec3a[_0x3b68('0x33')][_0x3b68('0x35')]?_0x5eec3a[_0x3b68('0x33')]:_0xa58608[_0x3b68('0x2d')];if(!_0x1a6363[_0x3b68('0x30')][_0x3b68('0x42')](_0x3b68('0x43'))){_0x5eec3a[_0x3b68('0x15')]=qs['limit'](_0x1a6363[_0x3b68('0x30')]['limit']);_0x5eec3a[_0x3b68('0x14')]=qs[_0x3b68('0x14')](_0x1a6363[_0x3b68('0x30')][_0x3b68('0x14')]);}_0x5eec3a['order']=qs[_0x3b68('0x44')](_0x1a6363[_0x3b68('0x30')]['sort']);_0x5eec3a[_0x3b68('0x45')]=qs[_0x3b68('0x31')](_[_0x3b68('0x46')](_0x1a6363['query'],_0xa58608['filters']));_0x5eec3a[_0x3b68('0x45')]['WhatsappInteractionId']=_0x38e3e0['id'];if(_0x1a6363[_0x3b68('0x30')][_0x3b68('0x47')]){_0x5eec3a[_0x3b68('0x45')]=_[_0x3b68('0x37')](_0x5eec3a[_0x3b68('0x45')],{'$or':_[_0x3b68('0x21')](_0x5eec3a[_0x3b68('0x33')],function(_0xd24c65){var _0x406e5a={};_0x406e5a[_0xd24c65]={'$like':'%'+_0x1a6363[_0x3b68('0x30')]['filter']+'%'};return _0x406e5a;})});}if(_0x1a6363[_0x3b68('0x30')]['$gte']){var _0x1d4957=_0x1a6363['query'][_0x3b68('0x48')][_0x3b68('0x49')](',');var _0x268a9d={};_0x268a9d[_0x1d4957[0x0]]={'$gte':moment(_0x1d4957[0x1])[_0x3b68('0x4a')](_0x3b68('0x4b'))};_0x5eec3a['where']=_[_0x3b68('0x37')](_0x5eec3a[_0x3b68('0x45')],_0x268a9d);}_0x5eec3a=_['merge']({},_0x5eec3a,_0x1a6363[_0x3b68('0x38')]);return db[_0x3b68('0x3e')][_0x3b68('0x17')]({'where':_0x5eec3a[_0x3b68('0x45')]})[_0x3b68('0x1d')](function(_0xf477a5){_0x29a6c8['count']=_0xf477a5;if(_0x1a6363[_0x3b68('0x30')][_0x3b68('0x4c')]){_0x5eec3a['include']=[{'all':!![]}];}return db['WhatsappMessage'][_0x3b68('0x27')](_0x5eec3a);})['then'](function(_0x2f0c07){_0x29a6c8[_0x3b68('0x4d')]=_0x2f0c07;return _0x29a6c8;});}})[_0x3b68('0x1d')](respondWithFilteredResult(_0xcecab1,_0x5eec3a))['catch'](handleError(_0xcecab1,null));};exports[_0x3b68('0x4e')]=function(_0x2da56f,_0x4da507){return db[_0x3b68('0x2f')][_0x3b68('0x39')]({'where':{'id':_0x2da56f[_0x3b68('0x2c')]['id']}})[_0x3b68('0x1d')](handleEntityNotFound(_0x4da507,null))[_0x3b68('0x1d')](function(_0x278961){if(_0x278961){return _0x278961['setTags'](_0x2da56f[_0x3b68('0x3b')][_0x3b68('0x3f')],_[_0x3b68('0x4f')](_0x2da56f['body'],['ids','id'])||{})[_0x3b68('0x50')](function(){return db['Tag'][_0x3b68('0x27')]({'attributes':['id','name',_0x3b68('0x51')],'where':{'id':_0x2da56f[_0x3b68('0x3b')][_0x3b68('0x3f')]}});})[_0x3b68('0x1d')](function(_0x230d40){socket['emit'](_0x3b68('0x52'),{'id':Number(_0x2da56f[_0x3b68('0x2c')]['id']),'tags':_0x230d40||[]});return{'id':Number(_0x2da56f['params']['id']),'tags':_0x230d40||[]};});}})[_0x3b68('0x1d')](respondWithResult(_0x4da507,null))[_0x3b68('0x2a')](handleError(_0x4da507,null));};exports['removeTags']=function(_0xd68ed7,_0x195433){return db[_0x3b68('0x2f')][_0x3b68('0x39')]({'where':{'id':_0xd68ed7[_0x3b68('0x2c')]['id']}})[_0x3b68('0x1d')](handleEntityNotFound(_0x195433,null))['then'](function(_0x5c3840){if(_0x5c3840){return _0x5c3840[_0x3b68('0x53')](_0xd68ed7[_0x3b68('0x30')]['ids']);}})[_0x3b68('0x1d')](respondWithStatusCode(_0x195433,null))['catch'](handleError(_0x195433,null));};exports[_0x3b68('0x54')]=function(_0x12ae83,_0x1357cd){var _0x2a157f=moment()[_0x3b68('0x55')]()[_0x3b68('0x56')]();var _0x2d5e42=path[_0x3b68('0x57')](config[_0x3b68('0x58')],'server',_0x3b68('0x59'),_0x3b68('0x5a'));var _0x4576f3=path['join'](config[_0x3b68('0x58')],_0x3b68('0x5b'),'files',_0x3b68('0x5c'));var _0x1be45c=path[_0x3b68('0x57')](_0x2d5e42,_0x2a157f);var _0x35a2df=util['format'](_0x3b68('0x5d'),_0x12ae83[_0x3b68('0x2c')]['id'],_0x2a157f);var _0x2f9c0d=path[_0x3b68('0x57')](_0x2d5e42,_0x35a2df);var _0x23b946=[];_0x23b946[_0x3b68('0x5e')]({'model':db[_0x3b68('0x5f')],'as':_0x3b68('0x5f'),'attributes':['id',_0x3b68('0x60')],'raw':!![]});_0x23b946[_0x3b68('0x5e')]({'model':db[_0x3b68('0x61')],'as':_0x3b68('0x62'),'attributes':['id','firstName',_0x3b68('0x63')],'raw':!![]});if(_0x12ae83[_0x3b68('0x30')][_0x3b68('0x5c')]){_0x23b946[_0x3b68('0x5e')]({'model':db[_0x3b68('0x64')],'as':'Attachment','raw':!![]});}var _0x27bcc3=[{'model':db[_0x3b68('0x3e')],'as':'Messages','attributes':['id',_0x3b68('0x3b'),'createdAt',_0x3b68('0x65'),_0x3b68('0x66'),_0x3b68('0x67')],'include':_0x23b946}];_0x27bcc3['push']({'model':db[_0x3b68('0x68')],'as':_0x3b68('0x69'),'attributes':['id',_0x3b68('0x20')]});_0x27bcc3[_0x3b68('0x5e')]({'model':db['User'],'as':_0x3b68('0x6a'),'attributes':['id',_0x3b68('0x60')]});return db[_0x3b68('0x2f')]['find']({'where':{'id':_0x12ae83[_0x3b68('0x2c')]['id']},'include':_0x27bcc3})[_0x3b68('0x1d')](handleEntityNotFound(_0x1357cd,null))[_0x3b68('0x1d')](function(_0x21affa){if(_0x21affa){var _0x5a41eb=_0x21affa['get']({'plain':!![]});fs['mkdirSync'](_0x1be45c);var _0x4409b7={'channel':'Whatsapp','account':_0x5a41eb[_0x3b68('0x69')][_0x3b68('0x20')],'agent':_0x5a41eb['Owner']?_0x5a41eb['Owner']['fullname']:_0x3b68('0x6b'),'createdAt':moment(_0x5a41eb[_0x3b68('0x6c')])[_0x3b68('0x4a')](_0x3b68('0x4b'))[_0x3b68('0x56')](),'closedAt':_0x5a41eb[_0x3b68('0x6d')]?moment(_0x5a41eb[_0x3b68('0x6e')])['format'](_0x3b68('0x4b'))[_0x3b68('0x56')]():'','disposition':_0x5a41eb[_0x3b68('0x6f')],'messages':_(_0x5a41eb['Messages'])[_0x3b68('0x47')]({'secret':![]})[_0x3b68('0x21')](function(_0x4f2d28){if(_0x4f2d28[_0x3b68('0x64')]){var _0x2fb77f=path[_0x3b68('0x57')](_0x4576f3,_0x4f2d28['Attachment'][_0x3b68('0x70')]);if(fs[_0x3b68('0x71')](_0x2fb77f)){fs[_0x3b68('0x72')](_0x2fb77f)['pipe'](fs[_0x3b68('0x73')](path[_0x3b68('0x57')](_0x1be45c,_0x4f2d28[_0x3b68('0x64')][_0x3b68('0x70')])));}}return{'date':moment(_0x4f2d28[_0x3b68('0x6c')])[_0x3b68('0x4a')](_0x3b68('0x4b'))[_0x3b68('0x56')](),'sender':_0x4f2d28[_0x3b68('0x65')]==='out'?_0x4f2d28[_0x3b68('0x5f')]?_0x4f2d28['User'][_0x3b68('0x60')]:'System':_0x4f2d28['Contact'][_0x3b68('0x74')]+(_0x4f2d28[_0x3b68('0x62')][_0x3b68('0x63')]?'\x20'+_0x4f2d28[_0x3b68('0x62')][_0x3b68('0x63')]:''),'body':_0x4f2d28[_0x3b68('0x64')]?_0x4f2d28[_0x3b68('0x64')][_0x3b68('0x70')]:_0x4f2d28[_0x3b68('0x3b')],'direction':_0x4f2d28[_0x3b68('0x65')]===_0x3b68('0x75')?'A':'C','secret':_0x4f2d28[_0x3b68('0x66')],'read':_0x4f2d28[_0x3b68('0x67')],'attachment':_0x4f2d28[_0x3b68('0x64')]};})[_0x3b68('0x76')]()};return ejs[_0x3b68('0x77')](path[_0x3b68('0x57')](config[_0x3b68('0x58')],_0x3b68('0x5b'),'views','downloadInteraction.ejs'),{'interaction':_0x4409b7})[_0x3b68('0x1d')](function(_0x1f2da9){var _0x5d83be=path[_0x3b68('0x57')](_0x1be45c,_0x3b68('0x78')+_0x5a41eb['id']+'-'+_0x2a157f+_0x3b68('0x79'));var _0x816784={'path':_0x5d83be,'channel':_0x3b68('0x7a'),'interactionId':_0x5a41eb['id']};return pdf[_0x3b68('0x7b')](_0x1f2da9,_0x816784);})[_0x3b68('0x1d')](function(){return new BPromise(function(_0xb7b856,_0x1bd204){zipdir(_0x1be45c,{'saveTo':_0x2f9c0d},function(_0x20e4ef,_0x13665f){if(_0x20e4ef)return _0x1bd204(_0x20e4ef);return _0xb7b856(_0x13665f);});})[_0x3b68('0x1d')](function(){return new BPromise(function(_0x3f91a1,_0x3410cd){rimraf(_0x1be45c,function(_0x4b6c7f){if(_0x4b6c7f)_0x3410cd(_0x4b6c7f);return _0x3f91a1();});});})[_0x3b68('0x1d')](function(){return _0x1357cd[_0x3b68('0x54')](_0x2f9c0d,_0x35a2df,function(_0x255035){if(_0x255035){console['log'](_0x3b68('0x7c'),_0x255035);}else{fs[_0x3b68('0x7d')](_0x2f9c0d);}});});});}else{return _0x1357cd[_0x3b68('0x11')](0xc8);}})[_0x3b68('0x2a')](handleError(_0x1357cd,null));};
\ No newline at end of file
index 0ef413e..6219237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df5=['unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','save','update','remove','getUsers','Users','map','findAll','then','setDataValue'];(function(_0x3ee926,_0x837d2a){var _0x45831c=function(_0x154d63){while(--_0x154d63){_0x3ee926['push'](_0x3ee926['shift']());}};_0x45831c(++_0x837d2a);}(_0x1df5,0xfd));var _0x51df=function(_0x531041,_0xb6a8f2){_0x531041=_0x531041-0x0;var _0x2c1c9e=_0x1df5[_0x531041];return _0x2c1c9e;};'use strict';var EventEmitter=require(_0x51df('0x0'));var WhatsappInteraction=require(_0x51df('0x1'))['db'][_0x51df('0x2')];var WhatsappMessage=require(_0x51df('0x1'))['db'][_0x51df('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x51df('0x4'),'afterUpdate':_0x51df('0x5'),'afterDestroy':_0x51df('0x6')};function emitEvent(_0x34fedd){return function(_0x5ff7ba,_0xd33a85,_0x15de76){_0x5ff7ba[_0x51df('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x1316c2){_0x5ff7ba['setDataValue'](_0x51df('0x8'),_0x1316c2[_0x51df('0x9')](function(_0x8dbf50){return{'id':_0x8dbf50['id']};}));return WhatsappMessage[_0x51df('0xa')]({'where':{'WhatsappInteractionId':_0x5ff7ba['id'],'direction':'in','read':![]},'raw':!![]});})[_0x51df('0xb')](function(_0x130cd5){_0x5ff7ba[_0x51df('0xc')](_0x51df('0xd'),_0x130cd5['length']);WhatsappInteractionEvents[_0x51df('0xe')](_0x34fedd+':'+_0x5ff7ba['id'],_0x5ff7ba);WhatsappInteractionEvents[_0x51df('0xe')](_0x34fedd,_0x5ff7ba);_0x15de76(null);})[_0x51df('0xf')](_0x15de76(null));};}for(var e in events){if(events[_0x51df('0x10')](e)){var event=events[e];WhatsappInteraction[_0x51df('0x11')](e,emitEvent(event));}}module[_0x51df('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x2182=['events','../../mysqldb','WhatsappInteraction','setMaxListeners','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x1c9f4c,_0x45e41f){var _0x42eef6=function(_0x529977){while(--_0x529977){_0x1c9f4c['push'](_0x1c9f4c['shift']());}};_0x42eef6(++_0x45e41f);}(_0x2182,0xea));var _0x2218=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x2182[_0x397e5f];return _0x5302b8;};'use strict';var EventEmitter=require(_0x2218('0x0'));var WhatsappInteraction=require(_0x2218('0x1'))['db'][_0x2218('0x2')];var WhatsappMessage=require(_0x2218('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x2218('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2218('0x4'),'afterDestroy':_0x2218('0x5')};function emitEvent(_0x3348af){return function(_0x6fd30,_0xf3271d,_0x1e2df1){_0x6fd30[_0x2218('0x6')]({'attributes':['id'],'raw':!![]})[_0x2218('0x7')](function(_0x142d1d){_0x6fd30[_0x2218('0x8')]('Users',_0x142d1d[_0x2218('0x9')](function(_0xed1f79){return{'id':_0xed1f79['id']};}));return WhatsappMessage[_0x2218('0xa')]({'where':{'WhatsappInteractionId':_0x6fd30['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2218('0x7')](function(_0x49df16){_0x6fd30[_0x2218('0x8')](_0x2218('0xb'),_0x49df16[_0x2218('0xc')]);WhatsappInteractionEvents[_0x2218('0xd')](_0x3348af+':'+_0x6fd30['id'],_0x6fd30);WhatsappInteractionEvents['emit'](_0x3348af,_0x6fd30);_0x1e2df1(null);})[_0x2218('0xe')](_0x1e2df1(null));};}for(var e in events){if(events[_0x2218('0xf')](e)){var event=events[e];WhatsappInteraction[_0x2218('0x10')](e,emitEvent(event));}}module[_0x2218('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
index 9551d4d..5fd1c96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefa1=['WhatsappInteraction','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./whatsappInteraction.attributes','exports','define'];(function(_0x35f75d,_0x8be46f){var _0x443014=function(_0x2a7a6f){while(--_0x2a7a6f){_0x35f75d['push'](_0x35f75d['shift']());}};_0x443014(++_0x8be46f);}(_0xefa1,0x175));var _0x1efa=function(_0x431c98,_0x123202){_0x431c98=_0x431c98-0x0;var _0x4ce060=_0xefa1[_0x431c98];return _0x4ce060;};'use strict';var _=require(_0x1efa('0x0'));var util=require(_0x1efa('0x1'));var logger=require(_0x1efa('0x2'))(_0x1efa('0x3'));var moment=require(_0x1efa('0x4'));var BPromise=require(_0x1efa('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1efa('0x6'));var rimraf=require('rimraf');var config=require(_0x1efa('0x7'));var attributes=require(_0x1efa('0x8'));module[_0x1efa('0x9')]=function(_0x56253e,_0x5a860a){return _0x56253e[_0x1efa('0xa')](_0x1efa('0xb'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x28c8b3,_0x46c91e,_0x96f3f6){if(_0x28c8b3[_0x1efa('0xc')](_0x1efa('0xd'))){_0x28c8b3[_0x1efa('0xe')]=moment()['format'](_0x1efa('0xf'));}_0x96f3f6(null,_0x28c8b3);}}});};
\ No newline at end of file
+var _0x78d1=['rimraf','../../config/environment','./whatsappInteraction.attributes','define','WhatsappInteraction','whatsapp_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x86dad7,_0xe3b7c0){var _0x328095=function(_0x54fc6c){while(--_0x54fc6c){_0x86dad7['push'](_0x86dad7['shift']());}};_0x328095(++_0xe3b7c0);}(_0x78d1,0x159));var _0x178d=function(_0x2e85a3,_0x209612){_0x2e85a3=_0x2e85a3-0x0;var _0x4e5c02=_0x78d1[_0x2e85a3];return _0x4e5c02;};'use strict';var _=require(_0x178d('0x0'));var util=require(_0x178d('0x1'));var logger=require(_0x178d('0x2'))('api');var moment=require(_0x178d('0x3'));var BPromise=require(_0x178d('0x4'));var rp=require(_0x178d('0x5'));var fs=require('fs');var path=require(_0x178d('0x6'));var rimraf=require(_0x178d('0x7'));var config=require(_0x178d('0x8'));var attributes=require(_0x178d('0x9'));module['exports']=function(_0x3b2c16,_0x39b461){return _0x3b2c16[_0x178d('0xa')](_0x178d('0xb'),attributes,{'tableName':_0x178d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x343c1f,_0x3c4391,_0x59f8e3){if(_0x343c1f['changed']('closed')){_0x343c1f[_0x178d('0xd')]=moment()[_0x178d('0xe')](_0x178d('0xf'));}_0x59f8e3(null,_0x343c1f);}}});};
\ No newline at end of file
index 513d161..0e49fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b4a=['ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','./whatsappInteraction.socket','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','WhatsappInteraction','update','body','options','raw','where','attributes','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction'];(function(_0x39bc44,_0x1d4373){var _0x2916d8=function(_0x1767ac){while(--_0x1767ac){_0x39bc44['push'](_0x39bc44['shift']());}};_0x2916d8(++_0x1d4373);}(_0x7b4a,0x78));var _0xa7b4=function(_0x442614,_0x2542e5){_0x442614=_0x442614-0x0;var _0x225e21=_0x7b4a[_0x442614];return _0x225e21;};'use strict';var _=require(_0xa7b4('0x0'));var util=require(_0xa7b4('0x1'));var moment=require('moment');var BPromise=require(_0xa7b4('0x2'));var rs=require(_0xa7b4('0x3'));var fs=require('fs');var Redis=require(_0xa7b4('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa7b4('0x5'));var logger=require(_0xa7b4('0x6'))(_0xa7b4('0x7'));var config=require(_0xa7b4('0x8'));var jayson=require(_0xa7b4('0x9'));var client=jayson['client'][_0xa7b4('0xa')]({'port':0x232a});config['redis']=_[_0xa7b4('0xb')](config[_0xa7b4('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xa7b4('0xd'))(new Redis(config[_0xa7b4('0xc')]));require(_0xa7b4('0xe'))['register'](socket);function respondWithRpcPromise(_0x5053d7,_0x47906a,_0x262bdf){return new BPromise(function(_0x232426,_0x2f1139){return client[_0xa7b4('0xf')](_0x5053d7,_0x262bdf)[_0xa7b4('0x10')](function(_0x523e28){logger[_0xa7b4('0x11')](_0xa7b4('0x12'),_0x47906a,_0xa7b4('0x13'));logger[_0xa7b4('0x14')](_0xa7b4('0x15'),_0x47906a,_0xa7b4('0x13'),JSON[_0xa7b4('0x16')](_0x523e28));if(_0x523e28[_0xa7b4('0x17')]){if(_0x523e28[_0xa7b4('0x17')]['code']===0x1f4){logger['error'](_0xa7b4('0x12'),_0x47906a,_0x523e28[_0xa7b4('0x17')][_0xa7b4('0x18')]);return _0x2f1139(_0x523e28[_0xa7b4('0x17')]['message']);}logger[_0xa7b4('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x47906a,_0x523e28[_0xa7b4('0x17')][_0xa7b4('0x18')]);return _0x232426(_0x523e28[_0xa7b4('0x17')][_0xa7b4('0x18')]);}else{logger[_0xa7b4('0x11')](_0xa7b4('0x12'),_0x47906a,_0xa7b4('0x13'));_0x232426(_0x523e28[_0xa7b4('0x19')][_0xa7b4('0x18')]);}})[_0xa7b4('0x1a')](function(_0xd2c9b1){logger[_0xa7b4('0x17')](_0xa7b4('0x12'),_0x47906a,_0xd2c9b1);_0x2f1139(_0xd2c9b1);});});}exports['UpdateWhatsappInteraction']=function(_0x53f444){var _0x470f97=this;return new Promise(function(_0x303013,_0x47e214){return db[_0xa7b4('0x1b')][_0xa7b4('0x1c')](_0x53f444[_0xa7b4('0x1d')],{'raw':_0x53f444[_0xa7b4('0x1e')]?_0x53f444['options'][_0xa7b4('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53f444[_0xa7b4('0x1e')]?_0x53f444[_0xa7b4('0x1e')][_0xa7b4('0x20')]||null:null,'attributes':_0x53f444[_0xa7b4('0x1e')]?_0x53f444['options'][_0xa7b4('0x21')]||null:null,'limit':_0x53f444[_0xa7b4('0x1e')]?_0x53f444[_0xa7b4('0x1e')]['limit']||null:null})[_0xa7b4('0x10')](function(_0x2e964c){logger[_0xa7b4('0x11')](_0xa7b4('0x22'),_0x53f444);logger[_0xa7b4('0x14')](_0xa7b4('0x22'),_0x53f444,JSON[_0xa7b4('0x16')](_0x2e964c));_0x303013(_0x2e964c);})['catch'](function(_0x993548){logger[_0xa7b4('0x17')](_0xa7b4('0x22'),_0x993548[_0xa7b4('0x18')],_0x53f444);_0x47e214(_0x470f97[_0xa7b4('0x17')](0x1f4,_0x993548[_0xa7b4('0x18')]));});});};exports[_0xa7b4('0x23')]=function(_0x4b2fdf){return new Promise(function(_0x4f8f68,_0x461820){return db[_0xa7b4('0x1b')]['find']({'where':_0x4b2fdf[_0xa7b4('0x1e')]?_0x4b2fdf[_0xa7b4('0x1e')][_0xa7b4('0x20')]||null:null})['then'](function(_0x5d6ed0){if(_0x5d6ed0){return _0x5d6ed0['addTags'](_0x4b2fdf['body'][_0xa7b4('0x24')],_['omit'](_0x4b2fdf[_0xa7b4('0x1d')],['ids','id'])||{});}})[_0xa7b4('0x25')](function(_0x5f3922){logger['info']('AddTags',_0x4b2fdf);logger[_0xa7b4('0x14')](_0xa7b4('0x26'),_0x4b2fdf,JSON['stringify'](_0x5f3922));_0x4f8f68(_0x5f3922);})[_0xa7b4('0x1a')](function(_0x5bdd12){logger[_0xa7b4('0x17')](_0xa7b4('0x26'),_0x5bdd12['message'],_0x4b2fdf);_0x461820(_this[_0xa7b4('0x17')](0x1f4,_0x5bdd12['message']));});});};
\ No newline at end of file
+var _0x681e=['addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','info','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappInteraction,\x20%s,\x20%s','message','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','where','attributes','limit','then','AddTagsToWhatsappInteraction'];(function(_0x1dd4fb,_0x432f33){var _0xbb788e=function(_0x566aae){while(--_0x566aae){_0x1dd4fb['push'](_0x1dd4fb['shift']());}};_0xbb788e(++_0x432f33);}(_0x681e,0x11c));var _0xe681=function(_0x8c16e2,_0x4afe21){_0x8c16e2=_0x8c16e2-0x0;var _0x54676c=_0x681e[_0x8c16e2];return _0x54676c;};'use strict';var _=require(_0xe681('0x0'));var util=require(_0xe681('0x1'));var moment=require(_0xe681('0x2'));var BPromise=require(_0xe681('0x3'));var rs=require(_0xe681('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe681('0x5'))['db'];var utils=require(_0xe681('0x6'));var logger=require(_0xe681('0x7'))(_0xe681('0x8'));var config=require(_0xe681('0x9'));var jayson=require(_0xe681('0xa'));var client=jayson[_0xe681('0xb')][_0xe681('0xc')]({'port':0x232a});config[_0xe681('0xd')]=_['defaults'](config[_0xe681('0xd')],{'host':_0xe681('0xe'),'port':0x18eb});var socket=require(_0xe681('0xf'))(new Redis(config[_0xe681('0xd')]));require(_0xe681('0x10'))[_0xe681('0x11')](socket);function respondWithRpcPromise(_0x1418af,_0x426a91,_0x502b64){return new BPromise(function(_0x55332e,_0x6e4d3f){return client['request'](_0x1418af,_0x502b64)['then'](function(_0x3c7231){logger[_0xe681('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x426a91,_0xe681('0x13'));logger[_0xe681('0x14')](_0xe681('0x15'),_0x426a91,_0xe681('0x13'),JSON[_0xe681('0x16')](_0x3c7231));if(_0x3c7231['error']){if(_0x3c7231['error']['code']===0x1f4){logger[_0xe681('0x17')](_0xe681('0x18'),_0x426a91,_0x3c7231[_0xe681('0x17')][_0xe681('0x19')]);return _0x6e4d3f(_0x3c7231[_0xe681('0x17')][_0xe681('0x19')]);}logger[_0xe681('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x426a91,_0x3c7231[_0xe681('0x17')][_0xe681('0x19')]);return _0x55332e(_0x3c7231[_0xe681('0x17')][_0xe681('0x19')]);}else{logger[_0xe681('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x426a91,_0xe681('0x13'));_0x55332e(_0x3c7231['result'][_0xe681('0x19')]);}})[_0xe681('0x1a')](function(_0x250ffb){logger[_0xe681('0x17')](_0xe681('0x18'),_0x426a91,_0x250ffb);_0x6e4d3f(_0x250ffb);});});}exports[_0xe681('0x1b')]=function(_0x438350){var _0x32e7ae=this;return new Promise(function(_0x3379aa,_0x16e647){return db[_0xe681('0x1c')][_0xe681('0x1d')](_0x438350['body'],{'raw':_0x438350[_0xe681('0x1e')]?_0x438350['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x438350[_0xe681('0x1e')]?_0x438350[_0xe681('0x1e')][_0xe681('0x1f')]||null:null,'attributes':_0x438350[_0xe681('0x1e')]?_0x438350[_0xe681('0x1e')][_0xe681('0x20')]||null:null,'limit':_0x438350[_0xe681('0x1e')]?_0x438350[_0xe681('0x1e')][_0xe681('0x21')]||null:null})[_0xe681('0x22')](function(_0x5a1453){logger[_0xe681('0x12')](_0xe681('0x1b'),_0x438350);logger['debug'](_0xe681('0x1b'),_0x438350,JSON['stringify'](_0x5a1453));_0x3379aa(_0x5a1453);})[_0xe681('0x1a')](function(_0x182db1){logger[_0xe681('0x17')](_0xe681('0x1b'),_0x182db1[_0xe681('0x19')],_0x438350);_0x16e647(_0x32e7ae[_0xe681('0x17')](0x1f4,_0x182db1[_0xe681('0x19')]));});});};exports[_0xe681('0x23')]=function(_0xc9d9b2){return new Promise(function(_0x32a9b2,_0x294099){return db['WhatsappInteraction']['find']({'where':_0xc9d9b2[_0xe681('0x1e')]?_0xc9d9b2['options'][_0xe681('0x1f')]||null:null})[_0xe681('0x22')](function(_0x37ef05){if(_0x37ef05){return _0x37ef05[_0xe681('0x24')](_0xc9d9b2['body'][_0xe681('0x25')],_[_0xe681('0x26')](_0xc9d9b2['body'],[_0xe681('0x25'),'id'])||{});}})['spread'](function(_0x48ffc0){logger[_0xe681('0x12')]('AddTags',_0xc9d9b2);logger[_0xe681('0x14')](_0xe681('0x27'),_0xc9d9b2,JSON[_0xe681('0x16')](_0x48ffc0));_0x32a9b2(_0x48ffc0);})[_0xe681('0x1a')](function(_0x684aa){logger[_0xe681('0x17')]('AddTags',_0x684aa[_0xe681('0x19')],_0xc9d9b2);_0x294099(_this[_0xe681('0x17')](0x1f4,_0x684aa[_0xe681('0x19')]));});});};
\ No newline at end of file
index cf15ef8..6c20cb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24dd=['register','whatsappInteraction:','./whatsappInteraction.events','save','remove','update','emit','removeListener'];(function(_0x2b9001,_0x21f783){var _0x2f1b3e=function(_0x3da631){while(--_0x3da631){_0x2b9001['push'](_0x2b9001['shift']());}};_0x2f1b3e(++_0x21f783);}(_0x24dd,0x16a));var _0xd24d=function(_0xbc4560,_0x4020b8){_0xbc4560=_0xbc4560-0x0;var _0x298cfb=_0x24dd[_0xbc4560];return _0x298cfb;};'use strict';var WhatsappInteractionEvents=require(_0xd24d('0x0'));var events=[_0xd24d('0x1'),_0xd24d('0x2'),_0xd24d('0x3')];function createListener(_0x30295f,_0xb929ed){return function(_0x546946){_0xb929ed[_0xd24d('0x4')](_0x30295f,_0x546946);};}function removeListener(_0x5dffe4,_0x11fc1e){return function(){WhatsappInteractionEvents[_0xd24d('0x5')](_0x5dffe4,_0x11fc1e);};}exports[_0xd24d('0x6')]=function(_0x3fae97){for(var _0x1190b9=0x0,_0x2e1735=events['length'];_0x1190b9<_0x2e1735;_0x1190b9++){var _0xe026b9=events[_0x1190b9];var _0x41d428=createListener(_0xd24d('0x7')+_0xe026b9,_0x3fae97);WhatsappInteractionEvents['on'](_0xe026b9,_0x41d428);}};
\ No newline at end of file
+var _0xbf19=['save','update','emit','register','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0xbf19,0x1aa));var _0x9bf1=function(_0x37cb77,_0x52eddf){_0x37cb77=_0x37cb77-0x0;var _0x52db4f=_0xbf19[_0x37cb77];return _0x52db4f;};'use strict';var WhatsappInteractionEvents=require(_0x9bf1('0x0'));var events=[_0x9bf1('0x1'),'remove',_0x9bf1('0x2')];function createListener(_0x3b28d2,_0x436e92){return function(_0x4297f3){_0x436e92[_0x9bf1('0x3')](_0x3b28d2,_0x4297f3);};}function removeListener(_0x447fca,_0x5a6647){return function(){WhatsappInteractionEvents['removeListener'](_0x447fca,_0x5a6647);};}exports[_0x9bf1('0x4')]=function(_0x52df56){for(var _0x5674eb=0x0,_0x1b858b=events[_0x9bf1('0x5')];_0x5674eb<_0x1b858b;_0x5674eb++){var _0x42d405=events[_0x5674eb];var _0x7b2ff9=createListener(_0x9bf1('0x6')+_0x42d405,_0x52df56);WhatsappInteractionEvents['on'](_0x42d405,_0x7b2ff9);}};
\ No newline at end of file
index e847b43..ac28bd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeece=['path','express','Router','../../components/auth/service','./whatsappMessage.controller','get','isAuthenticated','/describe','/:id','show','post','tracked','whatsappmessage:create','create','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','destroy','exports','multer','util'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xeece,0xdf));var _0xeeec=function(_0x2c7eee,_0x2545b5){_0x2c7eee=_0x2c7eee-0x0;var _0x539dbb=_0xeece[_0x2c7eee];return _0x539dbb;};'use strict';var multer=require(_0xeeec('0x0'));var util=require(_0xeeec('0x1'));var path=require(_0xeeec('0x2'));var timeout=require('connect-timeout');var express=require(_0xeeec('0x3'));var router=express[_0xeeec('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xeeec('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xeeec('0x6'));router[_0xeeec('0x7')]('/',auth[_0xeeec('0x8')](),controller['index']);router[_0xeeec('0x7')](_0xeeec('0x9'),auth[_0xeeec('0x8')](),controller['describe']);router[_0xeeec('0x7')](_0xeeec('0xa'),auth[_0xeeec('0x8')](),controller[_0xeeec('0xb')]);router[_0xeeec('0xc')]('/',auth['isAuthenticated'](),interaction[_0xeeec('0xd')]('whatsapp',_0xeeec('0xe')),controller[_0xeeec('0xf')]);router[_0xeeec('0xc')](_0xeeec('0x10'),controller[_0xeeec('0x11')]);router[_0xeeec('0x12')](_0xeeec('0xa'),auth[_0xeeec('0x8')](),controller[_0xeeec('0x13')]);router['put'](_0xeeec('0x14'),auth[_0xeeec('0x8')](),controller[_0xeeec('0x15')]);router['put'](_0xeeec('0x16'),auth[_0xeeec('0x8')](),controller['reject']);router['delete'](_0xeeec('0xa'),auth['isAuthenticated'](),controller[_0xeeec('0x17')]);module[_0xeeec('0x18')]=router;
\ No newline at end of file
+var _0x4bf3=['index','/describe','describe','show','tracked','whatsappmessage:create','create','post','/:id/status','status','put','/:id','update','/:id/accept','accept','reject','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','get','isAuthenticated'];(function(_0x34e14d,_0x5dea39){var _0x3d8e08=function(_0x134769){while(--_0x134769){_0x34e14d['push'](_0x34e14d['shift']());}};_0x3d8e08(++_0x5dea39);}(_0x4bf3,0x13e));var _0x34bf=function(_0x5a8c7e,_0x2ac85c){_0x5a8c7e=_0x5a8c7e-0x0;var _0x315d92=_0x4bf3[_0x5a8c7e];return _0x315d92;};'use strict';var multer=require(_0x34bf('0x0'));var util=require(_0x34bf('0x1'));var path=require(_0x34bf('0x2'));var timeout=require(_0x34bf('0x3'));var express=require(_0x34bf('0x4'));var router=express[_0x34bf('0x5')]();var fs_extra=require(_0x34bf('0x6'));var auth=require(_0x34bf('0x7'));var interaction=require(_0x34bf('0x8'));var config=require('../../config/environment');var controller=require(_0x34bf('0x9'));router[_0x34bf('0xa')]('/',auth[_0x34bf('0xb')](),controller[_0x34bf('0xc')]);router[_0x34bf('0xa')](_0x34bf('0xd'),auth[_0x34bf('0xb')](),controller[_0x34bf('0xe')]);router[_0x34bf('0xa')]('/:id',auth[_0x34bf('0xb')](),controller[_0x34bf('0xf')]);router['post']('/',auth[_0x34bf('0xb')](),interaction[_0x34bf('0x10')]('whatsapp',_0x34bf('0x11')),controller[_0x34bf('0x12')]);router[_0x34bf('0x13')](_0x34bf('0x14'),controller[_0x34bf('0x15')]);router[_0x34bf('0x16')](_0x34bf('0x17'),auth[_0x34bf('0xb')](),controller[_0x34bf('0x18')]);router[_0x34bf('0x16')](_0x34bf('0x19'),auth[_0x34bf('0xb')](),controller[_0x34bf('0x1a')]);router[_0x34bf('0x16')]('/:id/reject',auth[_0x34bf('0xb')](),controller[_0x34bf('0x1b')]);router[_0x34bf('0x1c')](_0x34bf('0x17'),auth[_0x34bf('0xb')](),controller[_0x34bf('0x1d')]);module['exports']=router;
\ No newline at end of file
index 55c5787..20fbed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4b=['sequelize','TEXT','medium','out','STRING','BOOLEAN'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0f4b,0x168));var _0xb0f4=function(_0x1e3dd5,_0x26d8c6){_0x1e3dd5=_0x1e3dd5-0x0;var _0x2f8a38=_0x0f4b[_0x1e3dd5];return _0x2f8a38;};'use strict';var Sequelize=require(_0xb0f4('0x0'));module['exports']={'body':{'type':Sequelize[_0xb0f4('0x1')](_0xb0f4('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xb0f4('0x3'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xb0f4('0x4')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xb0f4('0x5')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xb0f4('0x4')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xb770=['STRING','DATE','sequelize','medium','BOOLEAN','ENUM','out'];(function(_0x16903b,_0x10f871){var _0x519ec2=function(_0x3b8a76){while(--_0x3b8a76){_0x16903b['push'](_0x16903b['shift']());}};_0x519ec2(++_0x10f871);}(_0xb770,0x191));var _0x0b77=function(_0x4bd355,_0x1ff6d5){_0x4bd355=_0x4bd355-0x0;var _0x36f0a4=_0xb770[_0x4bd355];return _0x36f0a4;};'use strict';var Sequelize=require(_0x0b77('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x0b77('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x0b77('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0b77('0x3')]('in',_0x0b77('0x4')),'defaultValue':_0x0b77('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x0b77('0x5')]},'readAt':{'type':Sequelize[_0x0b77('0x6')]},'secret':{'type':Sequelize[_0x0b77('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x0b77('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ad71d75..1c7bd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ede=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','json','offset','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','stack','send','index','map','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','name','options','WhatsappMessage','includeAll','include','show','params','keys','find','create','body','describe','../../config/logger','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteractionId','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','contact','User','agent','fullname','internal','manual','interface','format','SIP/%s','channel','EventManager','acceptmessage','whatsapp-interactions','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','QueryTypes','email','motionChannel','event','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x2fc8b9,_0x2843cb){var _0x599fbe=function(_0x45ba2a){while(--_0x45ba2a){_0x2fc8b9['push'](_0x2fc8b9['shift']());}};_0x599fbe(++_0x2843cb);}(_0x5ede,0x111));var _0xe5ed=function(_0x32a900,_0x4fb615){_0x32a900=_0x32a900-0x0;var _0x24b321=_0x5ede[_0x32a900];return _0x24b321;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe5ed('0x0'));var zipdir=require(_0xe5ed('0x1'));var jsonpatch=require(_0xe5ed('0x2'));var rp=require(_0xe5ed('0x3'));var moment=require(_0xe5ed('0x4'));var BPromise=require(_0xe5ed('0x5'));var Mustache=require(_0xe5ed('0x6'));var util=require(_0xe5ed('0x7'));var path=require(_0xe5ed('0x8'));var sox=require(_0xe5ed('0x9'));var csv=require(_0xe5ed('0xa'));var ejs=require(_0xe5ed('0xb'));var fs=require('fs');var fs_extra=require(_0xe5ed('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe5ed('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe5ed('0xe'));var toCsv=require(_0xe5ed('0xa'));var querystring=require(_0xe5ed('0xf'));var Papa=require(_0xe5ed('0x10'));var Redis=require(_0xe5ed('0x11'));var authService=require(_0xe5ed('0x12'));var qs=require(_0xe5ed('0x13'));var as=require(_0xe5ed('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe5ed('0x15'));var utils=require(_0xe5ed('0x16'));var config=require(_0xe5ed('0x17'));var licenseUtil=require(_0xe5ed('0x18'));var db=require('../../mysqldb')['db'];config[_0xe5ed('0x19')]=_[_0xe5ed('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe5ed('0x1b'))(new Redis(config[_0xe5ed('0x19')]));require('./whatsappMessage.socket')[_0xe5ed('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xe5ed('0x1d')][_0xe5ed('0x1e')]({'port':0x232c});var client9002=jayson[_0xe5ed('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37c8d3,_0x43625e,_0x2c848b,_0x48a9bd){return new BPromise(function(_0xca9638,_0x33a4f5){var _0x2b2dd7=_0x48a9bd||client;return _0x2b2dd7[_0xe5ed('0x1f')](_0x37c8d3,_0x2c848b)['then'](function(_0x2e1e28){logger[_0xe5ed('0x20')](_0xe5ed('0x21'),_0x43625e,_0xe5ed('0x22'));logger[_0xe5ed('0x23')](_0xe5ed('0x24'),_0x43625e,_0xe5ed('0x22'),JSON[_0xe5ed('0x25')](_0x2e1e28));if(_0x2e1e28[_0xe5ed('0x26')]){if(_0x2e1e28[_0xe5ed('0x26')][_0xe5ed('0x27')]===0x1f4){logger[_0xe5ed('0x26')](_0xe5ed('0x21'),_0x43625e,_0x2e1e28[_0xe5ed('0x26')]['message']);return _0x33a4f5(_0x2e1e28['error'][_0xe5ed('0x28')]);}logger[_0xe5ed('0x26')](_0xe5ed('0x21'),_0x43625e,_0x2e1e28[_0xe5ed('0x26')][_0xe5ed('0x28')]);return _0xca9638(_0x2e1e28['error'][_0xe5ed('0x28')]);}else{logger[_0xe5ed('0x20')](_0xe5ed('0x21'),_0x43625e,_0xe5ed('0x22'));_0xca9638(_0x2e1e28['result'][_0xe5ed('0x28')]);}})[_0xe5ed('0x29')](function(_0x2c7031){logger[_0xe5ed('0x26')](_0xe5ed('0x21'),_0x43625e,_0x2c7031);_0x33a4f5(_0x2c7031);});});}function respondWithStatusCode(_0x256193,_0x1c9ac6){_0x1c9ac6=_0x1c9ac6||0xcc;return function(_0x4bb93b){if(_0x4bb93b){return _0x256193[_0xe5ed('0x2a')](_0x1c9ac6);}return _0x256193[_0xe5ed('0x2b')](_0x1c9ac6)['end']();};}function respondWithResult(_0x3892fb,_0x28b225){_0x28b225=_0x28b225||0xc8;return function(_0x1c9a78){if(_0x1c9a78){return _0x3892fb[_0xe5ed('0x2b')](_0x28b225)[_0xe5ed('0x2c')](_0x1c9a78);}};}function respondWithFilteredResult(_0x4a9dd3,_0x56af6f){return function(_0x49213f){if(_0x49213f){var _0xc004c5=typeof _0x56af6f[_0xe5ed('0x2d')]==='undefined'&&typeof _0x56af6f[_0xe5ed('0x2e')]==='undefined';var _0x3ff0f2=_0x49213f[_0xe5ed('0x2f')];var _0x42d786=_0xc004c5?0x0:_0x56af6f[_0xe5ed('0x2d')];var _0x4315d3=_0xc004c5?_0x49213f['count']:_0x56af6f['offset']+_0x56af6f[_0xe5ed('0x2e')];var _0x135e6a;if(_0x4315d3>=_0x3ff0f2){_0x4315d3=_0x3ff0f2;_0x135e6a=0xc8;}else{_0x135e6a=0xce;}_0x4a9dd3['status'](_0x135e6a);return _0x4a9dd3['set'](_0xe5ed('0x30'),_0x42d786+'-'+_0x4315d3+'/'+_0x3ff0f2)[_0xe5ed('0x2c')](_0x49213f);}return null;};}function patchUpdates(_0x3e0c27){return function(_0x5bd71a){try{jsonpatch[_0xe5ed('0x31')](_0x5bd71a,_0x3e0c27,!![]);}catch(_0x2d0242){return BPromise[_0xe5ed('0x32')](_0x2d0242);}return _0x5bd71a[_0xe5ed('0x33')]();};}function saveUpdates(_0x5c98ee,_0x30efb1){return function(_0x594381){if(_0x594381){return _0x594381[_0xe5ed('0x34')](_0x5c98ee)['then'](function(_0xedd7ff){return _0xedd7ff;});}return null;};}function removeEntity(_0x58452c,_0x2f63a5){return function(_0x503d11){if(_0x503d11){return _0x503d11[_0xe5ed('0x35')]()[_0xe5ed('0x36')](function(){_0x58452c[_0xe5ed('0x2b')](0xcc)[_0xe5ed('0x37')]();});}};}function handleEntityNotFound(_0x453442,_0x3cdaaf){return function(_0x2b8e8a){if(!_0x2b8e8a){_0x453442[_0xe5ed('0x2a')](0x194);}return _0x2b8e8a;};}function handleError(_0x670809,_0x4ea2d9){_0x4ea2d9=_0x4ea2d9||0x1f4;return function(_0x4568ff){logger[_0xe5ed('0x26')](_0x4568ff[_0xe5ed('0x38')]);if(_0x4568ff['name']){delete _0x4568ff['name'];}_0x670809[_0xe5ed('0x2b')](_0x4ea2d9)[_0xe5ed('0x39')](_0x4568ff);};}exports[_0xe5ed('0x3a')]=function(_0x16cdb7,_0x534796){var _0x4d0b92={},_0x48b6dd={},_0x51227a={'count':0x0,'rows':[]};var _0x2474e1=_[_0xe5ed('0x3b')](db['WhatsappMessage'][_0xe5ed('0x3c')],function(_0x4ae578){return{'name':_0x4ae578[_0xe5ed('0x3d')],'type':_0x4ae578[_0xe5ed('0x3e')]['key']};});_0x48b6dd['model']=_[_0xe5ed('0x3b')](_0x2474e1,'name');_0x48b6dd[_0xe5ed('0x3f')]=_['keys'](_0x16cdb7[_0xe5ed('0x3f')]);_0x48b6dd[_0xe5ed('0x40')]=_[_0xe5ed('0x41')](_0x48b6dd['model'],_0x48b6dd['query']);_0x4d0b92[_0xe5ed('0x42')]=_[_0xe5ed('0x41')](_0x48b6dd[_0xe5ed('0x43')],qs[_0xe5ed('0x44')](_0x16cdb7[_0xe5ed('0x3f')]['fields']));_0x4d0b92[_0xe5ed('0x42')]=_0x4d0b92[_0xe5ed('0x42')][_0xe5ed('0x45')]?_0x4d0b92['attributes']:_0x48b6dd[_0xe5ed('0x43')];if(!_0x16cdb7[_0xe5ed('0x3f')]['hasOwnProperty'](_0xe5ed('0x46'))){_0x4d0b92[_0xe5ed('0x2e')]=qs[_0xe5ed('0x2e')](_0x16cdb7['query'][_0xe5ed('0x2e')]);_0x4d0b92[_0xe5ed('0x2d')]=qs[_0xe5ed('0x2d')](_0x16cdb7[_0xe5ed('0x3f')][_0xe5ed('0x2d')]);}_0x4d0b92['order']=qs['sort'](_0x16cdb7[_0xe5ed('0x3f')][_0xe5ed('0x47')]);_0x4d0b92[_0xe5ed('0x48')]=qs[_0xe5ed('0x40')](_['pick'](_0x16cdb7[_0xe5ed('0x3f')],_0x48b6dd['filters']),_0x2474e1);if(_0x16cdb7[_0xe5ed('0x3f')][_0xe5ed('0x49')]){_0x4d0b92[_0xe5ed('0x48')]=_[_0xe5ed('0x4a')](_0x4d0b92[_0xe5ed('0x48')],{'$or':_[_0xe5ed('0x3b')](_0x2474e1,function(_0x236244){if(_0x236244['type']!==_0xe5ed('0x4b')){var _0x2bc68b={};_0x2bc68b[_0x236244[_0xe5ed('0x4c')]]={'$like':'%'+_0x16cdb7[_0xe5ed('0x3f')][_0xe5ed('0x49')]+'%'};return _0x2bc68b;}})});}_0x4d0b92=_[_0xe5ed('0x4a')]({},_0x4d0b92,_0x16cdb7[_0xe5ed('0x4d')]);var _0x45ef93={'where':_0x4d0b92[_0xe5ed('0x48')]};return db[_0xe5ed('0x4e')][_0xe5ed('0x2f')](_0x45ef93)[_0xe5ed('0x36')](function(_0x85a6de){_0x51227a[_0xe5ed('0x2f')]=_0x85a6de;if(_0x16cdb7[_0xe5ed('0x3f')][_0xe5ed('0x4f')]){_0x4d0b92[_0xe5ed('0x50')]=[{'all':!![]}];}return db[_0xe5ed('0x4e')]['findAll'](_0x4d0b92);})['then'](function(_0x1d86cb){_0x51227a['rows']=_0x1d86cb;return _0x51227a;})[_0xe5ed('0x36')](respondWithFilteredResult(_0x534796,_0x4d0b92))[_0xe5ed('0x29')](handleError(_0x534796,null));};exports[_0xe5ed('0x51')]=function(_0x262fa4,_0x5b6b84){var _0x82c75b={'raw':!![],'where':{'id':_0x262fa4[_0xe5ed('0x52')]['id']}},_0x48b18c={};_0x48b18c[_0xe5ed('0x43')]=_['keys'](db[_0xe5ed('0x4e')][_0xe5ed('0x3c')]);_0x48b18c[_0xe5ed('0x3f')]=_[_0xe5ed('0x53')](_0x262fa4[_0xe5ed('0x3f')]);_0x48b18c['filters']=_[_0xe5ed('0x41')](_0x48b18c[_0xe5ed('0x43')],_0x48b18c['query']);_0x82c75b[_0xe5ed('0x42')]=_[_0xe5ed('0x41')](_0x48b18c[_0xe5ed('0x43')],qs[_0xe5ed('0x44')](_0x262fa4[_0xe5ed('0x3f')]['fields']));_0x82c75b[_0xe5ed('0x42')]=_0x82c75b[_0xe5ed('0x42')][_0xe5ed('0x45')]?_0x82c75b[_0xe5ed('0x42')]:_0x48b18c[_0xe5ed('0x43')];if(_0x262fa4['query'][_0xe5ed('0x4f')]){_0x82c75b[_0xe5ed('0x50')]=[{'all':!![]}];}_0x82c75b=_['merge']({},_0x82c75b,_0x262fa4[_0xe5ed('0x4d')]);return db[_0xe5ed('0x4e')][_0xe5ed('0x54')](_0x82c75b)[_0xe5ed('0x36')](handleEntityNotFound(_0x5b6b84,null))[_0xe5ed('0x36')](respondWithResult(_0x5b6b84,null))['catch'](handleError(_0x5b6b84,null));};exports[_0xe5ed('0x55')]=function(_0x3ec176,_0x19b926){return db[_0xe5ed('0x4e')][_0xe5ed('0x55')](_0x3ec176[_0xe5ed('0x56')],{})[_0xe5ed('0x36')](respondWithResult(_0x19b926,0xc9))[_0xe5ed('0x29')](handleError(_0x19b926,null));};exports['update']=function(_0xdeb88d,_0x574161){if(_0xdeb88d[_0xe5ed('0x56')]['id']){delete _0xdeb88d['body']['id'];}return db[_0xe5ed('0x4e')]['find']({'where':{'id':_0xdeb88d[_0xe5ed('0x52')]['id']}})['then'](handleEntityNotFound(_0x574161,null))['then'](saveUpdates(_0xdeb88d[_0xe5ed('0x56')],null))[_0xe5ed('0x36')](respondWithResult(_0x574161,null))[_0xe5ed('0x29')](handleError(_0x574161,null));};exports['destroy']=function(_0x5f0e51,_0x221d88){return db[_0xe5ed('0x4e')][_0xe5ed('0x54')]({'where':{'id':_0x5f0e51[_0xe5ed('0x52')]['id']}})[_0xe5ed('0x36')](handleEntityNotFound(_0x221d88,null))[_0xe5ed('0x36')](removeEntity(_0x221d88,null))[_0xe5ed('0x29')](handleError(_0x221d88,null));};exports[_0xe5ed('0x57')]=function(_0x5f00fe,_0x3679a7){return db[_0xe5ed('0x4e')]['describe']()[_0xe5ed('0x36')](respondWithResult(_0x3679a7,null))['catch'](handleError(_0x3679a7,null));};var interaction_log=require(_0xe5ed('0x58'))('whatsapp-interactions');exports[_0xe5ed('0x59')]=function(_0x26ac74,_0x53541d,_0x549a81){var _0x4ccc0b={'agent':{},'channel':_0xe5ed('0x5a')};if(_0x26ac74['body']['id']){delete _0x26ac74[_0xe5ed('0x56')]['id'];}_0x26ac74['body'][_0xe5ed('0x5b')]=!![];_0x26ac74[_0xe5ed('0x56')][_0xe5ed('0x5c')]=moment()['format'](_0xe5ed('0x5d'));_0x26ac74[_0xe5ed('0x56')][_0xe5ed('0x5e')]=_0x26ac74[_0xe5ed('0x56')]['UserId']||_0x26ac74[_0xe5ed('0x5f')]['id'];_0x4ccc0b['agent']['id']=_0x26ac74[_0xe5ed('0x56')]['UserId'];return db['WhatsappMessage'][_0xe5ed('0x54')]({'where':{'id':_0x26ac74[_0xe5ed('0x52')]['id'],'UserId':null}})[_0xe5ed('0x36')](handleEntityNotFound(_0x53541d,null))['then'](saveUpdates(_0x26ac74['body'],null))['then'](function(_0x258b51){if(_0x258b51){_0x4ccc0b[_0xe5ed('0x28')]=_0x258b51[_0xe5ed('0x60')]({'plain':!![]});return db['WhatsappInteraction'][_0xe5ed('0x54')]({'where':{'id':_0x258b51[_0xe5ed('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x53541d,null))[_0xe5ed('0x36')](function(_0x3bd955){if(_0x3bd955){return _0x3bd955[_0xe5ed('0x34')]({'UserId':_0x26ac74[_0xe5ed('0x56')]['UserId'],'read1stAt':_['isNil'](_0x3bd955[_0xe5ed('0x62')])?moment()['format'](_0xe5ed('0x5d')):undefined});}return null;})[_0xe5ed('0x36')](function(_0x2d39d6){if(_0x2d39d6){_0x4ccc0b[_0xe5ed('0x63')]=_0x2d39d6[_0xe5ed('0x60')]({'plain':!![]});interaction_log[_0xe5ed('0x20')](_0xe5ed('0x64'),_0x26ac74['user']['id'],_0x26ac74['user'][_0xe5ed('0x4c')],_0x26ac74['user'][_0xe5ed('0x65')],_0x4ccc0b['interaction']['id'],_0x26ac74[_0xe5ed('0x56')]?JSON[_0xe5ed('0x25')](_0x26ac74['body']):_0xe5ed('0x66'));return respondWithRpcPromise('AcceptMessage',_0xe5ed('0x67'),_0x4ccc0b);}return null;})[_0xe5ed('0x36')](function(_0x3b3469){var _0x3f87e7=_0xe5ed('0x68')+_0x3b3469[_0xe5ed('0x28')]['ContactId'];return db[_0xe5ed('0x69')][_0xe5ed('0x3f')](_0x3f87e7,{'type':db[_0xe5ed('0x6a')]['QueryTypes'][_0xe5ed('0x6b')],'raw':!![]})['then'](function(_0x186df8){return _0x186df8;});})[_0xe5ed('0x36')](function(_0x538e4a){if(_0x538e4a){_0x4ccc0b[_0xe5ed('0x28')][_0xe5ed('0x6c')]=_0x538e4a[0x0];if(!_0x26ac74[_0xe5ed('0x56')][_0xe5ed('0x5e')])return;return db[_0xe5ed('0x6d')]['find']({'where':{'id':_0x26ac74[_0xe5ed('0x56')][_0xe5ed('0x5e')],'role':_0xe5ed('0x6e')},'attributes':['id',_0xe5ed('0x4c'),_0xe5ed('0x6f'),'email',_0xe5ed('0x70')],'raw':!![]});}return null;})[_0xe5ed('0x36')](function(_0x3073d4){if(!_0x3073d4)return null;_0x4ccc0b[_0xe5ed('0x28')][_0xe5ed('0x6e')]=_0x3073d4;return _0x4ccc0b;})[_0xe5ed('0x36')](function(_0x2aff71){if(_0x2aff71){if(_0x26ac74['body'][_0xe5ed('0x71')]){_0x4ccc0b['message'][_0xe5ed('0x72')]=util[_0xe5ed('0x73')](_0xe5ed('0x74'),_0x26ac74['user'][_0xe5ed('0x4c')]);_0x4ccc0b[_0xe5ed('0x28')]['channel']=_0x4ccc0b[_0xe5ed('0x75')];_0x4ccc0b[_0xe5ed('0x28')]['motionChannel']=_0x4ccc0b[_0xe5ed('0x75')];_0x4ccc0b[_0xe5ed('0x28')]['event']=_0xe5ed('0x59');return respondWithRpcPromise(_0xe5ed('0x76'),_0xe5ed('0x76'),{'event':_0xe5ed('0x77'),'message':_0x4ccc0b[_0xe5ed('0x28')]},client9002)[_0xe5ed('0x36')](function(){return _0x4ccc0b;});}return _0x4ccc0b;}return null;})[_0xe5ed('0x36')](respondWithResult(_0x53541d,null))[_0xe5ed('0x29')](handleError(_0x53541d,null));};var interaction_log=require(_0xe5ed('0x58'))(_0xe5ed('0x78'));exports[_0xe5ed('0x32')]=function(_0x3842bf,_0x411ce8,_0x1e3557){var _0x331b0d={'agent':{},'channel':_0xe5ed('0x5a')};if(_0x3842bf[_0xe5ed('0x56')]['id']){delete _0x3842bf[_0xe5ed('0x56')]['id'];}_0x3842bf[_0xe5ed('0x56')][_0xe5ed('0x5e')]=_0x3842bf[_0xe5ed('0x56')][_0xe5ed('0x5e')]||_0x3842bf[_0xe5ed('0x5f')]['id'];_0x331b0d[_0xe5ed('0x6e')]['id']=_0x3842bf['body'][_0xe5ed('0x5e')];return db[_0xe5ed('0x4e')][_0xe5ed('0x54')]({'where':{'id':_0x3842bf[_0xe5ed('0x52')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x411ce8,null))['then'](function(_0x376a4e){if(_0x376a4e){_0x331b0d[_0xe5ed('0x28')]=_0x376a4e[_0xe5ed('0x60')]({'plain':!![]});return db[_0xe5ed('0x79')][_0xe5ed('0x54')]({'where':{'id':_0x376a4e[_0xe5ed('0x61')]}});}return null;})[_0xe5ed('0x36')](handleEntityNotFound(_0x411ce8,null))[_0xe5ed('0x36')](function(_0x374972){if(_0x374972){_0x331b0d[_0xe5ed('0x63')]=_0x374972[_0xe5ed('0x60')]({'plain':!![]});interaction_log[_0xe5ed('0x20')](_0xe5ed('0x7a'),_0x3842bf[_0xe5ed('0x5f')]['id'],_0x3842bf[_0xe5ed('0x5f')][_0xe5ed('0x4c')],_0x3842bf['user'][_0xe5ed('0x65')],_0x331b0d[_0xe5ed('0x63')]['id'],_0x3842bf[_0xe5ed('0x56')]?JSON[_0xe5ed('0x25')](_0x3842bf['body']):'null');return respondWithRpcPromise(_0xe5ed('0x7b'),_0xe5ed('0x7c'),_0x331b0d);}return null;})[_0xe5ed('0x36')](function(_0x3760eb){var _0x56b1e4=_0xe5ed('0x68')+_0x3760eb[_0xe5ed('0x28')][_0xe5ed('0x7d')];return db[_0xe5ed('0x69')][_0xe5ed('0x3f')](_0x56b1e4,{'type':db['Sequelize'][_0xe5ed('0x7e')][_0xe5ed('0x6b')],'raw':!![]})[_0xe5ed('0x36')](function(_0x4ac68c){return _0x4ac68c;});})['then'](function(_0x2a533a){if(_0x2a533a){_0x331b0d[_0xe5ed('0x28')][_0xe5ed('0x6c')]=_0x2a533a[0x0];if(!_0x3842bf['body'][_0xe5ed('0x5e')])return;return db[_0xe5ed('0x6d')][_0xe5ed('0x54')]({'where':{'id':_0x3842bf[_0xe5ed('0x56')][_0xe5ed('0x5e')],'role':_0xe5ed('0x6e')},'attributes':['id',_0xe5ed('0x4c'),_0xe5ed('0x6f'),_0xe5ed('0x7f'),_0xe5ed('0x70')],'raw':!![]});}return null;})[_0xe5ed('0x36')](function(_0x58c4e5){if(!_0x58c4e5)return null;_0x331b0d[_0xe5ed('0x28')][_0xe5ed('0x6e')]=_0x58c4e5;return _0x331b0d;})[_0xe5ed('0x36')](function(_0xc298bc){if(_0xc298bc){_0xc298bc['message'][_0xe5ed('0x72')]=util['format'](_0xe5ed('0x74'),_0x3842bf[_0xe5ed('0x5f')][_0xe5ed('0x4c')]);_0xc298bc[_0xe5ed('0x28')]['channel']=_0x331b0d['channel'];_0xc298bc['message'][_0xe5ed('0x80')]=_0x331b0d[_0xe5ed('0x75')];_0xc298bc[_0xe5ed('0x28')][_0xe5ed('0x81')]='reject';respondWithRpcPromise(_0xe5ed('0x76'),'EventManager',{'event':_0xe5ed('0x82'),'message':_0xc298bc['message']},client9002);return _0x331b0d;}return null;})[_0xe5ed('0x36')](respondWithResult(_0x411ce8,null))[_0xe5ed('0x29')](handleError(_0x411ce8,null));};exports['status']=function(_0x1a110a,_0x59cd67,_0x412527){if(_0x1a110a['body']['id']){delete _0x1a110a[_0xe5ed('0x56')]['id'];}var _0x1ff182;return db[_0xe5ed('0x4e')]['find']({'where':{'id':_0x1a110a[_0xe5ed('0x52')]['id']}})[_0xe5ed('0x36')](handleEntityNotFound(_0x59cd67,null))['then'](function(_0x572b36){if(_0x572b36){_0x1ff182=_0x572b36;return db[_0xe5ed('0x83')][_0xe5ed('0x54')]({'where':{'id':_0x572b36[_0xe5ed('0x84')]}});}})['then'](handleEntityNotFound(_0x59cd67,null))[_0xe5ed('0x36')](function(_0x333c92){if(_0x333c92){logger[_0xe5ed('0x23')](_0xe5ed('0x85'),'status',_0xe5ed('0x86'),_0x333c92[_0xe5ed('0x3e')],util[_0xe5ed('0x87')](_0x1a110a[_0xe5ed('0x56')],{'showHidden':![],'depth':null}));switch(_0x333c92[_0xe5ed('0x3e')]){case _0xe5ed('0x88'):if(_0x1a110a[_0xe5ed('0x56')]['MessageSid']&&_0x1a110a[_0xe5ed('0x56')]['MessageSid']===_0x1ff182['messageId']&&_0x1a110a['body'][_0xe5ed('0x89')]&&_0x1a110a[_0xe5ed('0x56')][_0xe5ed('0x89')]===_0xe5ed('0x5b')){return _0x1ff182['update']({'read':!![]});}else{logger[_0xe5ed('0x26')](_0xe5ed('0x8a'),_0xe5ed('0x2b'),_0xe5ed('0x88'),util[_0xe5ed('0x87')](_0x1a110a[_0xe5ed('0x56')],{'showHidden':![],'depth':null}));}break;}return _0x1ff182;}})[_0xe5ed('0x36')](respondWithResult(_0x59cd67,null))['catch'](handleError(_0x59cd67,null));};
\ No newline at end of file
+var _0x8040=['fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','sequelize','Sequelize','interface','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','destroy','stack','name','index','map','WhatsappMessage','fieldName','type','key','model','query','filters','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','keys','rawAttributes','intersection','fields','find','create','body','describe','whatsapp-interactions','accept','whatsapp','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SELECT','contact','User'];(function(_0x4f0f49,_0x10b7e0){var _0x16a2bc=function(_0x12041d){while(--_0x12041d){_0x4f0f49['push'](_0x4f0f49['shift']());}};_0x16a2bc(++_0x10b7e0);}(_0x8040,0x1c2));var _0x0804=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x8040[_0x29b609];return _0x54c952;};'use strict';var emlformat=require(_0x0804('0x0'));var rimraf=require(_0x0804('0x1'));var zipdir=require(_0x0804('0x2'));var jsonpatch=require(_0x0804('0x3'));var rp=require(_0x0804('0x4'));var moment=require('moment');var BPromise=require(_0x0804('0x5'));var Mustache=require(_0x0804('0x6'));var util=require('util');var path=require('path');var sox=require(_0x0804('0x7'));var csv=require(_0x0804('0x8'));var ejs=require(_0x0804('0x9'));var fs=require('fs');var fs_extra=require(_0x0804('0xa'));var _=require(_0x0804('0xb'));var squel=require(_0x0804('0xc'));var crypto=require('crypto');var jsforce=require(_0x0804('0xd'));var deskjs=require(_0x0804('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0804('0xf'));var Redis=require('ioredis');var authService=require(_0x0804('0x10'));var qs=require(_0x0804('0x11'));var as=require(_0x0804('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0804('0x13'))(_0x0804('0x14'));var utils=require('../../config/utils');var config=require(_0x0804('0x15'));var licenseUtil=require(_0x0804('0x16'));var db=require(_0x0804('0x17'))['db'];config[_0x0804('0x18')]=_[_0x0804('0x19')](config['redis'],{'host':_0x0804('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0804('0x18')]));require(_0x0804('0x1b'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x0804('0x1c')][_0x0804('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x1982f2,_0x437cc1,_0x4e049f,_0x191db2){return new BPromise(function(_0x95ac0a,_0x2f75af){var _0x420a28=_0x191db2||client;return _0x420a28[_0x0804('0x1e')](_0x1982f2,_0x4e049f)[_0x0804('0x1f')](function(_0x52702a){logger[_0x0804('0x20')](_0x0804('0x21'),_0x437cc1,_0x0804('0x22'));logger[_0x0804('0x23')](_0x0804('0x24'),_0x437cc1,_0x0804('0x22'),JSON[_0x0804('0x25')](_0x52702a));if(_0x52702a['error']){if(_0x52702a[_0x0804('0x26')][_0x0804('0x27')]===0x1f4){logger[_0x0804('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x437cc1,_0x52702a[_0x0804('0x26')][_0x0804('0x28')]);return _0x2f75af(_0x52702a[_0x0804('0x26')]['message']);}logger[_0x0804('0x26')](_0x0804('0x21'),_0x437cc1,_0x52702a[_0x0804('0x26')][_0x0804('0x28')]);return _0x95ac0a(_0x52702a[_0x0804('0x26')]['message']);}else{logger[_0x0804('0x20')](_0x0804('0x21'),_0x437cc1,_0x0804('0x22'));_0x95ac0a(_0x52702a[_0x0804('0x29')]['message']);}})[_0x0804('0x2a')](function(_0x26f742){logger[_0x0804('0x26')](_0x0804('0x21'),_0x437cc1,_0x26f742);_0x2f75af(_0x26f742);});});}function respondWithStatusCode(_0x562b59,_0xf1981c){_0xf1981c=_0xf1981c||0xcc;return function(_0x216bf2){if(_0x216bf2){return _0x562b59['sendStatus'](_0xf1981c);}return _0x562b59[_0x0804('0x2b')](_0xf1981c)[_0x0804('0x2c')]();};}function respondWithResult(_0x4eb2b0,_0x8e330c){_0x8e330c=_0x8e330c||0xc8;return function(_0x159130){if(_0x159130){return _0x4eb2b0[_0x0804('0x2b')](_0x8e330c)[_0x0804('0x2d')](_0x159130);}};}function respondWithFilteredResult(_0x218f37,_0x38022a){return function(_0x41e506){if(_0x41e506){var _0x4bf9e4=typeof _0x38022a[_0x0804('0x2e')]===_0x0804('0x2f')&&typeof _0x38022a['limit']===_0x0804('0x2f');var _0x29eeec=_0x41e506['count'];var _0x2eabe9=_0x4bf9e4?0x0:_0x38022a[_0x0804('0x2e')];var _0x3da607=_0x4bf9e4?_0x41e506[_0x0804('0x30')]:_0x38022a['offset']+_0x38022a[_0x0804('0x31')];var _0x4ecba9;if(_0x3da607>=_0x29eeec){_0x3da607=_0x29eeec;_0x4ecba9=0xc8;}else{_0x4ecba9=0xce;}_0x218f37[_0x0804('0x2b')](_0x4ecba9);return _0x218f37[_0x0804('0x32')]('Content-Range',_0x2eabe9+'-'+_0x3da607+'/'+_0x29eeec)[_0x0804('0x2d')](_0x41e506);}return null;};}function patchUpdates(_0x5939b4){return function(_0x172b6d){try{jsonpatch[_0x0804('0x33')](_0x172b6d,_0x5939b4,!![]);}catch(_0x4137e4){return BPromise[_0x0804('0x34')](_0x4137e4);}return _0x172b6d[_0x0804('0x35')]();};}function saveUpdates(_0x17496c,_0x1c3871){return function(_0x5d29e6){if(_0x5d29e6){return _0x5d29e6[_0x0804('0x36')](_0x17496c)[_0x0804('0x1f')](function(_0x312916){return _0x312916;});}return null;};}function removeEntity(_0x16b649,_0x4af095){return function(_0x2e83c8){if(_0x2e83c8){return _0x2e83c8[_0x0804('0x37')]()[_0x0804('0x1f')](function(){_0x16b649[_0x0804('0x2b')](0xcc)[_0x0804('0x2c')]();});}};}function handleEntityNotFound(_0x79bb47,_0xe0295e){return function(_0x507fd7){if(!_0x507fd7){_0x79bb47['sendStatus'](0x194);}return _0x507fd7;};}function handleError(_0x485b68,_0x50a944){_0x50a944=_0x50a944||0x1f4;return function(_0x5d0780){logger[_0x0804('0x26')](_0x5d0780[_0x0804('0x38')]);if(_0x5d0780[_0x0804('0x39')]){delete _0x5d0780[_0x0804('0x39')];}_0x485b68[_0x0804('0x2b')](_0x50a944)['send'](_0x5d0780);};}exports[_0x0804('0x3a')]=function(_0x69e26f,_0x144d97){var _0x398e46={},_0x4d362d={},_0x17e49e={'count':0x0,'rows':[]};var _0x26befd=_[_0x0804('0x3b')](db[_0x0804('0x3c')]['rawAttributes'],function(_0x2f9a79){return{'name':_0x2f9a79[_0x0804('0x3d')],'type':_0x2f9a79[_0x0804('0x3e')][_0x0804('0x3f')]};});_0x4d362d[_0x0804('0x40')]=_['map'](_0x26befd,_0x0804('0x39'));_0x4d362d['query']=_['keys'](_0x69e26f[_0x0804('0x41')]);_0x4d362d[_0x0804('0x42')]=_['intersection'](_0x4d362d[_0x0804('0x40')],_0x4d362d['query']);_0x398e46[_0x0804('0x43')]=_['intersection'](_0x4d362d[_0x0804('0x40')],qs['fields'](_0x69e26f[_0x0804('0x41')]['fields']));_0x398e46[_0x0804('0x43')]=_0x398e46[_0x0804('0x43')][_0x0804('0x44')]?_0x398e46[_0x0804('0x43')]:_0x4d362d[_0x0804('0x40')];if(!_0x69e26f[_0x0804('0x41')][_0x0804('0x45')](_0x0804('0x46'))){_0x398e46[_0x0804('0x31')]=qs[_0x0804('0x31')](_0x69e26f[_0x0804('0x41')][_0x0804('0x31')]);_0x398e46[_0x0804('0x2e')]=qs[_0x0804('0x2e')](_0x69e26f[_0x0804('0x41')]['offset']);}_0x398e46['order']=qs['sort'](_0x69e26f[_0x0804('0x41')][_0x0804('0x47')]);_0x398e46[_0x0804('0x48')]=qs[_0x0804('0x42')](_[_0x0804('0x49')](_0x69e26f[_0x0804('0x41')],_0x4d362d['filters']),_0x26befd);if(_0x69e26f['query'][_0x0804('0x4a')]){_0x398e46['where']=_[_0x0804('0x4b')](_0x398e46['where'],{'$or':_[_0x0804('0x3b')](_0x26befd,function(_0x5941f6){if(_0x5941f6[_0x0804('0x3e')]!==_0x0804('0x4c')){var _0x33341f={};_0x33341f[_0x5941f6[_0x0804('0x39')]]={'$like':'%'+_0x69e26f[_0x0804('0x41')][_0x0804('0x4a')]+'%'};return _0x33341f;}})});}_0x398e46=_[_0x0804('0x4b')]({},_0x398e46,_0x69e26f['options']);var _0x22eb3b={'where':_0x398e46[_0x0804('0x48')]};return db[_0x0804('0x3c')]['count'](_0x22eb3b)[_0x0804('0x1f')](function(_0x4d8295){_0x17e49e[_0x0804('0x30')]=_0x4d8295;if(_0x69e26f[_0x0804('0x41')][_0x0804('0x4d')]){_0x398e46[_0x0804('0x4e')]=[{'all':!![]}];}return db[_0x0804('0x3c')][_0x0804('0x4f')](_0x398e46);})['then'](function(_0x591510){_0x17e49e[_0x0804('0x50')]=_0x591510;return _0x17e49e;})[_0x0804('0x1f')](respondWithFilteredResult(_0x144d97,_0x398e46))['catch'](handleError(_0x144d97,null));};exports[_0x0804('0x51')]=function(_0x37c1e1,_0x2e232c){var _0xa42cd3={'raw':!![],'where':{'id':_0x37c1e1[_0x0804('0x52')]['id']}},_0x3c5d70={};_0x3c5d70[_0x0804('0x40')]=_[_0x0804('0x53')](db[_0x0804('0x3c')][_0x0804('0x54')]);_0x3c5d70[_0x0804('0x41')]=_[_0x0804('0x53')](_0x37c1e1[_0x0804('0x41')]);_0x3c5d70[_0x0804('0x42')]=_[_0x0804('0x55')](_0x3c5d70[_0x0804('0x40')],_0x3c5d70[_0x0804('0x41')]);_0xa42cd3['attributes']=_['intersection'](_0x3c5d70[_0x0804('0x40')],qs['fields'](_0x37c1e1['query'][_0x0804('0x56')]));_0xa42cd3[_0x0804('0x43')]=_0xa42cd3[_0x0804('0x43')][_0x0804('0x44')]?_0xa42cd3[_0x0804('0x43')]:_0x3c5d70[_0x0804('0x40')];if(_0x37c1e1['query']['includeAll']){_0xa42cd3[_0x0804('0x4e')]=[{'all':!![]}];}_0xa42cd3=_[_0x0804('0x4b')]({},_0xa42cd3,_0x37c1e1['options']);return db['WhatsappMessage'][_0x0804('0x57')](_0xa42cd3)['then'](handleEntityNotFound(_0x2e232c,null))[_0x0804('0x1f')](respondWithResult(_0x2e232c,null))[_0x0804('0x2a')](handleError(_0x2e232c,null));};exports[_0x0804('0x58')]=function(_0x1efe81,_0x37d223){return db[_0x0804('0x3c')][_0x0804('0x58')](_0x1efe81[_0x0804('0x59')],{})[_0x0804('0x1f')](respondWithResult(_0x37d223,0xc9))[_0x0804('0x2a')](handleError(_0x37d223,null));};exports['update']=function(_0x180f72,_0x2e8882){if(_0x180f72['body']['id']){delete _0x180f72['body']['id'];}return db[_0x0804('0x3c')][_0x0804('0x57')]({'where':{'id':_0x180f72[_0x0804('0x52')]['id']}})[_0x0804('0x1f')](handleEntityNotFound(_0x2e8882,null))[_0x0804('0x1f')](saveUpdates(_0x180f72[_0x0804('0x59')],null))['then'](respondWithResult(_0x2e8882,null))[_0x0804('0x2a')](handleError(_0x2e8882,null));};exports[_0x0804('0x37')]=function(_0x335ce0,_0x1b912b){return db[_0x0804('0x3c')]['find']({'where':{'id':_0x335ce0[_0x0804('0x52')]['id']}})[_0x0804('0x1f')](handleEntityNotFound(_0x1b912b,null))[_0x0804('0x1f')](removeEntity(_0x1b912b,null))[_0x0804('0x2a')](handleError(_0x1b912b,null));};exports[_0x0804('0x5a')]=function(_0x2383e7,_0x45f81d){return db[_0x0804('0x3c')][_0x0804('0x5a')]()[_0x0804('0x1f')](respondWithResult(_0x45f81d,null))[_0x0804('0x2a')](handleError(_0x45f81d,null));};var interaction_log=require('../../config/logger')(_0x0804('0x5b'));exports[_0x0804('0x5c')]=function(_0x4600db,_0x4807a8,_0x38ba46){var _0x5d102f={'agent':{},'channel':_0x0804('0x5d')};if(_0x4600db[_0x0804('0x59')]['id']){delete _0x4600db['body']['id'];}_0x4600db[_0x0804('0x59')]['read']=!![];_0x4600db['body'][_0x0804('0x5e')]=moment()[_0x0804('0x5f')](_0x0804('0x60'));_0x4600db[_0x0804('0x59')][_0x0804('0x61')]=_0x4600db[_0x0804('0x59')][_0x0804('0x61')]||_0x4600db[_0x0804('0x62')]['id'];_0x5d102f[_0x0804('0x63')]['id']=_0x4600db[_0x0804('0x59')][_0x0804('0x61')];return db['WhatsappMessage'][_0x0804('0x57')]({'where':{'id':_0x4600db['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4807a8,null))[_0x0804('0x1f')](saveUpdates(_0x4600db[_0x0804('0x59')],null))[_0x0804('0x1f')](function(_0x28708b){if(_0x28708b){_0x5d102f[_0x0804('0x28')]=_0x28708b[_0x0804('0x64')]({'plain':!![]});return db[_0x0804('0x65')][_0x0804('0x57')]({'where':{'id':_0x28708b[_0x0804('0x66')]}});}return null;})[_0x0804('0x1f')](handleEntityNotFound(_0x4807a8,null))[_0x0804('0x1f')](function(_0x4fd616){if(_0x4fd616){return _0x4fd616[_0x0804('0x36')]({'UserId':_0x4600db[_0x0804('0x59')][_0x0804('0x61')],'read1stAt':_[_0x0804('0x67')](_0x4fd616['read1stAt'])?moment()[_0x0804('0x5f')](_0x0804('0x60')):undefined});}return null;})[_0x0804('0x1f')](function(_0x17fa6b){if(_0x17fa6b){_0x5d102f[_0x0804('0x68')]=_0x17fa6b[_0x0804('0x64')]({'plain':!![]});interaction_log[_0x0804('0x20')](_0x0804('0x69'),_0x4600db[_0x0804('0x62')]['id'],_0x4600db[_0x0804('0x62')]['name'],_0x4600db[_0x0804('0x62')][_0x0804('0x6a')],_0x5d102f[_0x0804('0x68')]['id'],_0x4600db[_0x0804('0x59')]?JSON[_0x0804('0x25')](_0x4600db[_0x0804('0x59')]):_0x0804('0x6b'));return respondWithRpcPromise(_0x0804('0x6c'),'acceptMessage',_0x5d102f);}return null;})[_0x0804('0x1f')](function(_0x16828e){var _0x21d4cf=_0x0804('0x6d')+_0x16828e[_0x0804('0x28')]['ContactId'];return db['sequelize'][_0x0804('0x41')](_0x21d4cf,{'type':db['Sequelize'][_0x0804('0x6e')][_0x0804('0x6f')],'raw':!![]})[_0x0804('0x1f')](function(_0xd294ff){return _0xd294ff;});})[_0x0804('0x1f')](function(_0x4dc975){if(_0x4dc975){_0x5d102f[_0x0804('0x28')][_0x0804('0x70')]=_0x4dc975[0x0];if(!_0x4600db[_0x0804('0x59')]['UserId'])return;return db[_0x0804('0x71')][_0x0804('0x57')]({'where':{'id':_0x4600db[_0x0804('0x59')][_0x0804('0x61')],'role':_0x0804('0x63')},'attributes':['id','name',_0x0804('0x72'),_0x0804('0x73'),_0x0804('0x74')],'raw':!![]});}return null;})[_0x0804('0x1f')](function(_0x44f24f){if(!_0x44f24f)return null;_0x5d102f['message']['agent']=_0x44f24f;return _0x5d102f;})['then'](function(_0x3feb8a){if(_0x3feb8a){if(_0x4600db['body'][_0x0804('0x75')]){_0x5d102f[_0x0804('0x28')]['interface']=util[_0x0804('0x5f')](_0x0804('0x76'),_0x4600db[_0x0804('0x62')][_0x0804('0x39')]);_0x5d102f[_0x0804('0x28')][_0x0804('0x77')]=_0x5d102f[_0x0804('0x77')];_0x5d102f['message'][_0x0804('0x78')]=_0x5d102f['channel'];_0x5d102f['message'][_0x0804('0x79')]=_0x0804('0x5c');return respondWithRpcPromise(_0x0804('0x7a'),_0x0804('0x7a'),{'event':_0x0804('0x7b'),'message':_0x5d102f[_0x0804('0x28')]},client9002)['then'](function(){return _0x5d102f;});}return _0x5d102f;}return null;})[_0x0804('0x1f')](respondWithResult(_0x4807a8,null))['catch'](handleError(_0x4807a8,null));};var interaction_log=require(_0x0804('0x13'))(_0x0804('0x5b'));exports[_0x0804('0x34')]=function(_0x25c4fb,_0x4a8f6a,_0x356d9e){var _0x3f2a5b={'agent':{},'channel':_0x0804('0x5d')};if(_0x25c4fb[_0x0804('0x59')]['id']){delete _0x25c4fb['body']['id'];}_0x25c4fb[_0x0804('0x59')]['UserId']=_0x25c4fb['body'][_0x0804('0x61')]||_0x25c4fb['user']['id'];_0x3f2a5b['agent']['id']=_0x25c4fb[_0x0804('0x59')]['UserId'];return db[_0x0804('0x3c')]['find']({'where':{'id':_0x25c4fb[_0x0804('0x52')]['id'],'UserId':null}})[_0x0804('0x1f')](handleEntityNotFound(_0x4a8f6a,null))[_0x0804('0x1f')](function(_0x43d109){if(_0x43d109){_0x3f2a5b[_0x0804('0x28')]=_0x43d109[_0x0804('0x64')]({'plain':!![]});return db[_0x0804('0x65')]['find']({'where':{'id':_0x43d109['WhatsappInteractionId']}});}return null;})[_0x0804('0x1f')](handleEntityNotFound(_0x4a8f6a,null))[_0x0804('0x1f')](function(_0x29b854){if(_0x29b854){_0x3f2a5b[_0x0804('0x68')]=_0x29b854['get']({'plain':!![]});interaction_log['info'](_0x0804('0x7c'),_0x25c4fb[_0x0804('0x62')]['id'],_0x25c4fb[_0x0804('0x62')][_0x0804('0x39')],_0x25c4fb[_0x0804('0x62')]['role'],_0x3f2a5b['interaction']['id'],_0x25c4fb[_0x0804('0x59')]?JSON[_0x0804('0x25')](_0x25c4fb['body']):_0x0804('0x6b'));return respondWithRpcPromise(_0x0804('0x7d'),_0x0804('0x7e'),_0x3f2a5b);}return null;})['then'](function(_0x4b1b6d){var _0x35cce9=_0x0804('0x6d')+_0x4b1b6d[_0x0804('0x28')][_0x0804('0x7f')];return db[_0x0804('0x80')][_0x0804('0x41')](_0x35cce9,{'type':db[_0x0804('0x81')]['QueryTypes'][_0x0804('0x6f')],'raw':!![]})[_0x0804('0x1f')](function(_0x161b6d){return _0x161b6d;});})[_0x0804('0x1f')](function(_0x12ceb5){if(_0x12ceb5){_0x3f2a5b[_0x0804('0x28')][_0x0804('0x70')]=_0x12ceb5[0x0];if(!_0x25c4fb[_0x0804('0x59')][_0x0804('0x61')])return;return db['User'][_0x0804('0x57')]({'where':{'id':_0x25c4fb[_0x0804('0x59')][_0x0804('0x61')],'role':_0x0804('0x63')},'attributes':['id','name',_0x0804('0x72'),_0x0804('0x73'),_0x0804('0x74')],'raw':!![]});}return null;})[_0x0804('0x1f')](function(_0x58aea7){if(!_0x58aea7)return null;_0x3f2a5b[_0x0804('0x28')][_0x0804('0x63')]=_0x58aea7;return _0x3f2a5b;})['then'](function(_0x206464){if(_0x206464){_0x206464[_0x0804('0x28')][_0x0804('0x82')]=util[_0x0804('0x5f')](_0x0804('0x76'),_0x25c4fb['user'][_0x0804('0x39')]);_0x206464[_0x0804('0x28')][_0x0804('0x77')]=_0x3f2a5b['channel'];_0x206464['message'][_0x0804('0x78')]=_0x3f2a5b[_0x0804('0x77')];_0x206464[_0x0804('0x28')][_0x0804('0x79')]=_0x0804('0x34');respondWithRpcPromise(_0x0804('0x7a'),_0x0804('0x7a'),{'event':'rejectmessage','message':_0x206464[_0x0804('0x28')]},client9002);return _0x3f2a5b;}return null;})[_0x0804('0x1f')](respondWithResult(_0x4a8f6a,null))[_0x0804('0x2a')](handleError(_0x4a8f6a,null));};exports[_0x0804('0x2b')]=function(_0x53161b,_0x15331,_0x3d5dd2){if(_0x53161b['body']['id']){delete _0x53161b[_0x0804('0x59')]['id'];}var _0x3d0716;return db[_0x0804('0x3c')]['find']({'where':{'id':_0x53161b[_0x0804('0x52')]['id']}})[_0x0804('0x1f')](handleEntityNotFound(_0x15331,null))[_0x0804('0x1f')](function(_0x164391){if(_0x164391){_0x3d0716=_0x164391;return db[_0x0804('0x83')][_0x0804('0x57')]({'where':{'id':_0x164391[_0x0804('0x84')]}});}})[_0x0804('0x1f')](handleEntityNotFound(_0x15331,null))[_0x0804('0x1f')](function(_0x217de4){if(_0x217de4){logger[_0x0804('0x23')](_0x0804('0x85'),_0x0804('0x2b'),_0x0804('0x86'),_0x217de4[_0x0804('0x3e')],util[_0x0804('0x87')](_0x53161b[_0x0804('0x59')],{'showHidden':![],'depth':null}));switch(_0x217de4[_0x0804('0x3e')]){case'twilio':if(_0x53161b[_0x0804('0x59')][_0x0804('0x88')]&&_0x53161b[_0x0804('0x59')][_0x0804('0x88')]===_0x3d0716['messageId']&&_0x53161b[_0x0804('0x59')][_0x0804('0x89')]&&_0x53161b[_0x0804('0x59')][_0x0804('0x89')]===_0x0804('0x8a')){return _0x3d0716[_0x0804('0x36')]({'read':!![]});}else{logger[_0x0804('0x26')](_0x0804('0x8b'),'status',_0x0804('0x8c'),util['inspect'](_0x53161b[_0x0804('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x3d0716;}})[_0x0804('0x1f')](respondWithResult(_0x15331,null))[_0x0804('0x2a')](handleError(_0x15331,null));};
\ No newline at end of file
index ff611d1..2a71386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x777d=['emit','hook','../../mysqldb','WhatsappMessage','setMaxListeners','update','remove'];(function(_0x409c50,_0x337255){var _0x1f646e=function(_0x594ff2){while(--_0x594ff2){_0x409c50['push'](_0x409c50['shift']());}};_0x1f646e(++_0x337255);}(_0x777d,0xe9));var _0xd777=function(_0x5c7525,_0x39490f){_0x5c7525=_0x5c7525-0x0;var _0x2e2ec8=_0x777d[_0x5c7525];return _0x2e2ec8;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0xd777('0x0'))['db'][_0xd777('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xd777('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd777('0x3'),'afterDestroy':_0xd777('0x4')};function emitEvent(_0x54bbb5){return function(_0x5e0f79,_0x514817,_0x40b685){WhatsappMessageEvents['emit'](_0x54bbb5+':'+_0x5e0f79['id'],_0x5e0f79);WhatsappMessageEvents[_0xd777('0x5')](_0x54bbb5,_0x5e0f79);_0x40b685(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0xd777('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x7af2=['hook','../../mysqldb','WhatsappMessage','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x472204,_0x281f41){var _0x2da08c=function(_0x966ebc){while(--_0x966ebc){_0x472204['push'](_0x472204['shift']());}};_0x2da08c(++_0x281f41);}(_0x7af2,0x119));var _0x27af=function(_0x53874d,_0x522af1){_0x53874d=_0x53874d-0x0;var _0x391c4e=_0x7af2[_0x53874d];return _0x391c4e;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x27af('0x0'))['db'][_0x27af('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x27af('0x2')](0x0);var events={'afterCreate':_0x27af('0x3'),'afterUpdate':'update','afterDestroy':_0x27af('0x4')};function emitEvent(_0x1067e7){return function(_0x709cb6,_0x2a542f,_0x22ae46){WhatsappMessageEvents[_0x27af('0x5')](_0x1067e7+':'+_0x709cb6['id'],_0x709cb6);WhatsappMessageEvents[_0x27af('0x5')](_0x1067e7,_0x709cb6);_0x22ae46(null);};}for(var e in events){if(events[_0x27af('0x6')](e)){var event=events[e];WhatsappMessage[_0x27af('0x7')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 2271b61..6a33a82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b8d=['../../config/environment','exports','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','FULLTEXT','get','direction','toLowerCase','secret','isNil','UserId','findOne','then','update','createdAt','error','out','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','remote','/status?token=','token','catch','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','sinch','baseUrl','/messages/','text','statuses','message_id','err','WhatsappMessage,\x20%s','utf8mb4','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x5895aa,_0x2c70c7){var _0x38541d=function(_0x4a1c10){while(--_0x4a1c10){_0x5895aa['push'](_0x5895aa['shift']());}};_0x38541d(++_0x2c70c7);}(_0x8b8d,0x15f));var _0xd8b8=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0x8b8d[_0x32d457];return _0x338386;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd8b8('0x0'))(_0xd8b8('0x1'));var moment=require(_0xd8b8('0x2'));var BPromise=require('bluebird');var rp=require(_0xd8b8('0x3'));var fetch=require('node-fetch');var fs=require('fs');var path=require(_0xd8b8('0x4'));var rimraf=require(_0xd8b8('0x5'));var config=require(_0xd8b8('0x6'));var attributes=require('./whatsappMessage.attributes');module[_0xd8b8('0x7')]=function(_0x275d8b,_0x47ff98){return _0x275d8b['define'](_0xd8b8('0x8'),attributes,{'tableName':_0xd8b8('0x9'),'paranoid':![],'indexes':[{'name':_0xd8b8('0xa'),'fields':['messageId']},{'name':_0xd8b8('0xb'),'fields':['body'],'type':_0xd8b8('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x19f845,_0x39df09,_0x5a990d){var _0x581a52=_0x275d8b['models'];var _0x181845=_0x19f845[_0xd8b8('0xd')]({'plain':!![]});if(_0x181845['direction']['toLowerCase']()==='in'||_0x181845[_0xd8b8('0xe')][_0xd8b8('0xf')]()==='out'&&!_0x181845[_0xd8b8('0x10')]&&!_[_0xd8b8('0x11')](_0x181845[_0xd8b8('0x12')])){_0x581a52['WhatsappInteraction'][_0xd8b8('0x13')]({'where':{'id':_0x181845['WhatsappInteractionId']}})[_0xd8b8('0x14')](function(_0x59d644){if(_0x59d644){_0x59d644[_0xd8b8('0x15')]({'lastMsgAt':_0x181845[_0xd8b8('0x16')],'lastMsgDirection':_0x181845[_0xd8b8('0xe')][_0xd8b8('0xf')]()});}})['catch'](function(_0x24f1e1){console[_0xd8b8('0x17')](_0x24f1e1);});}if(_0x181845['direction']===_0xd8b8('0x18')&&!_0x181845['secret']){var _0x482914;_0x581a52['WhatsappAccount'][_0xd8b8('0x19')]({'where':{'id':_0x181845[_0xd8b8('0x1a')]},'raw':!![]})[_0xd8b8('0x14')](function(_0x2e01a5){_0x482914=_0x2e01a5;if(_0x482914&&_0x482914[_0xd8b8('0x1b')]){switch(_0x482914[_0xd8b8('0x1b')]){case _0xd8b8('0x1c'):var _0xcd42a2=require(_0xd8b8('0x1c'));if(_0x482914[_0xd8b8('0x1d')]&&_0x482914[_0xd8b8('0x1e')]&&_0x482914[_0xd8b8('0x1f')]){var _0x43834a=new _0xcd42a2(_0x482914[_0xd8b8('0x1d')],_0x482914[_0xd8b8('0x1e')]);_0x43834a[_0xd8b8('0x20')][_0xd8b8('0x21')]({'body':_0x181845['body'],'to':_0xd8b8('0x22')+_0x181845[_0xd8b8('0x1f')],'from':_0xd8b8('0x22')+_0x482914[_0xd8b8('0x1f')],'statusCallback':_0x482914[_0xd8b8('0x23')]+'/api/whatsapp/messages/'+_0x181845['id']+_0xd8b8('0x24')+_0x482914[_0xd8b8('0x25')]})[_0xd8b8('0x14')](function(_0x2198d5){if(_0x2198d5['sid']){return _0x19f845[_0xd8b8('0x15')]({'messageId':_0x2198d5['sid']});}})[_0xd8b8('0x26')](function(_0x5bbd93){logger[_0xd8b8('0x17')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xd8b8('0x27'),'twilio',util[_0xd8b8('0x28')](_0x5bbd93,{'showHidden':![],'depth':null}));});}else{logger[_0xd8b8('0x17')](_0xd8b8('0x29'),'afterCreate',_0xd8b8('0x1c'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xd8b8('0x2a'):var _0x3db079=_0x482914['accountSid'];var _0x54b2cc=_0x482914['authToken'];var _0x4d610d=_0x482914[_0xd8b8('0x2b')]+'/whatsapp/v1/'+_0x3db079+_0xd8b8('0x2c');var _0x321193={'to':[_0x181845['phone']],'message':{'type':_0xd8b8('0x2d'),'text':_0x181845['body']}};var _0x21d3ed={'method':'POST','uri':_0x4d610d,'headers':{'Authorization':'Bearer\x20'+_0x54b2cc,'Content-Type':'application/json'},'body':_0x321193,'json':!![]};rp(_0x21d3ed)['then'](function(_0x7a61b4){if(_0x7a61b4[_0xd8b8('0x2e')][0x0][_0xd8b8('0x2f')]){return _0x19f845[_0xd8b8('0x15')]({'messageId':_0x7a61b4['statuses'][0x0]['message_id']});}})[_0xd8b8('0x26')](function(_0x2913ce){logger[_0xd8b8('0x30')](_0xd8b8('0x31'),_0x2913ce);});break;}}})['finally'](function(){_0x5a990d();});}else{_0x5a990d();}}},'charset':_0xd8b8('0x32'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x2962=['whatsapp:','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','application/json','message_id','statuses','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','then','update','createdAt','catch','error','WhatsappAccount','find','WhatsappAccountId','type','accountSid','authToken','phone','messages','create'];(function(_0x478ee1,_0x1d974e){var _0x48dc22=function(_0x307622){while(--_0x307622){_0x478ee1['push'](_0x478ee1['shift']());}};_0x48dc22(++_0x1d974e);}(_0x2962,0xca));var _0x2296=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x2962[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0x2296('0x0'));var util=require(_0x2296('0x1'));var logger=require(_0x2296('0x2'))(_0x2296('0x3'));var moment=require('moment');var BPromise=require(_0x2296('0x4'));var rp=require('request-promise');var fetch=require(_0x2296('0x5'));var fs=require('fs');var path=require(_0x2296('0x6'));var rimraf=require(_0x2296('0x7'));var config=require(_0x2296('0x8'));var attributes=require(_0x2296('0x9'));module['exports']=function(_0x33bbaf,_0x3442b6){return _0x33bbaf[_0x2296('0xa')](_0x2296('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0x2296('0xc'),'fields':[_0x2296('0xc')]},{'name':_0x2296('0xd'),'fields':[_0x2296('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x540252,_0x20461c,_0x1364c1){var _0x4f1f2c=_0x33bbaf[_0x2296('0xf')];var _0x1c88b3=_0x540252[_0x2296('0x10')]({'plain':!![]});if(_0x1c88b3[_0x2296('0x11')][_0x2296('0x12')]()==='in'||_0x1c88b3[_0x2296('0x11')][_0x2296('0x12')]()===_0x2296('0x13')&&!_0x1c88b3[_0x2296('0x14')]&&!_[_0x2296('0x15')](_0x1c88b3[_0x2296('0x16')])){_0x4f1f2c[_0x2296('0x17')]['findOne']({'where':{'id':_0x1c88b3['WhatsappInteractionId']}})[_0x2296('0x18')](function(_0x44f33f){if(_0x44f33f){_0x44f33f[_0x2296('0x19')]({'lastMsgAt':_0x1c88b3[_0x2296('0x1a')],'lastMsgDirection':_0x1c88b3[_0x2296('0x11')][_0x2296('0x12')]()});}})[_0x2296('0x1b')](function(_0x4eb79f){console[_0x2296('0x1c')](_0x4eb79f);});}if(_0x1c88b3[_0x2296('0x11')]===_0x2296('0x13')&&!_0x1c88b3[_0x2296('0x14')]){var _0x1478da;_0x4f1f2c[_0x2296('0x1d')][_0x2296('0x1e')]({'where':{'id':_0x1c88b3[_0x2296('0x1f')]},'raw':!![]})[_0x2296('0x18')](function(_0x128b3b){_0x1478da=_0x128b3b;if(_0x1478da&&_0x1478da[_0x2296('0x20')]){switch(_0x1478da[_0x2296('0x20')]){case'twilio':var _0x388444=require('twilio');if(_0x1478da[_0x2296('0x21')]&&_0x1478da[_0x2296('0x22')]&&_0x1478da[_0x2296('0x23')]){var _0x434e2e=new _0x388444(_0x1478da[_0x2296('0x21')],_0x1478da[_0x2296('0x22')]);_0x434e2e[_0x2296('0x24')][_0x2296('0x25')]({'body':_0x1c88b3[_0x2296('0xe')],'to':_0x2296('0x26')+_0x1c88b3[_0x2296('0x23')],'from':_0x2296('0x26')+_0x1478da[_0x2296('0x23')],'statusCallback':_0x1478da['remote']+_0x2296('0x27')+_0x1c88b3['id']+_0x2296('0x28')+_0x1478da[_0x2296('0x29')]})[_0x2296('0x18')](function(_0x3a7d9c){if(_0x3a7d9c['sid']){return _0x540252[_0x2296('0x19')]({'messageId':_0x3a7d9c[_0x2296('0x2a')]});}})[_0x2296('0x1b')](function(_0x2accb7){logger['error'](_0x2296('0x2b'),_0x2296('0x2c'),_0x2296('0x2d'),util[_0x2296('0x2e')](_0x2accb7,{'showHidden':![],'depth':null}));});}else{logger[_0x2296('0x1c')](_0x2296('0x2b'),'afterCreate','twilio',_0x2296('0x2f'));}break;case _0x2296('0x30'):var _0x35d423=_0x1478da[_0x2296('0x21')];var _0x6cb3c9=_0x1478da['authToken'];var _0x19fe0b=_0x1478da[_0x2296('0x31')]+_0x2296('0x32')+_0x35d423+_0x2296('0x33');var _0x9ea9ca={'to':[_0x1c88b3[_0x2296('0x23')]],'message':{'type':'text','text':_0x1c88b3[_0x2296('0xe')]}};var _0x162419={'method':_0x2296('0x34'),'uri':_0x19fe0b,'headers':{'Authorization':'Bearer\x20'+_0x6cb3c9,'Content-Type':_0x2296('0x35')},'body':_0x9ea9ca,'json':!![]};rp(_0x162419)[_0x2296('0x18')](function(_0xd6cf20){if(_0xd6cf20['statuses'][0x0][_0x2296('0x36')]){return _0x540252[_0x2296('0x19')]({'messageId':_0xd6cf20[_0x2296('0x37')][0x0]['message_id']});}})[_0x2296('0x1b')](function(_0x1eda8f){logger['err'](_0x2296('0x38'),_0x1eda8f);});break;}}})[_0x2296('0x39')](function(){_0x1364c1();});}else{_0x1364c1();}}},'charset':_0x2296('0x3a'),'collate':_0x2296('0x3b')});};
\ No newline at end of file
index b54a31e..e0bbc76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8d2=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappMessage','options','CreateWhatsappMessage','debug','lodash','util','moment'];(function(_0xe34bb4,_0x13676f){var _0x47a838=function(_0x5852f7){while(--_0x5852f7){_0xe34bb4['push'](_0xe34bb4['shift']());}};_0x47a838(++_0x13676f);}(_0xe8d2,0x133));var _0x2e8d=function(_0x19fd94,_0x246ec1){_0x19fd94=_0x19fd94-0x0;var _0xa96c6=_0xe8d2[_0x19fd94];return _0xa96c6;};'use strict';var _=require(_0x2e8d('0x0'));var util=require(_0x2e8d('0x1'));var moment=require(_0x2e8d('0x2'));var BPromise=require('bluebird');var rs=require(_0x2e8d('0x3'));var fs=require('fs');var Redis=require(_0x2e8d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2e8d('0x5'));var logger=require(_0x2e8d('0x6'))('rpc');var config=require(_0x2e8d('0x7'));var jayson=require(_0x2e8d('0x8'));var client=jayson['client'][_0x2e8d('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x2e8d('0xa')],{'host':_0x2e8d('0xb'),'port':0x18eb});var socket=require(_0x2e8d('0xc'))(new Redis(config[_0x2e8d('0xa')]));require(_0x2e8d('0xd'))[_0x2e8d('0xe')](socket);function respondWithRpcPromise(_0x129222,_0x597bfe,_0x3a326d){return new BPromise(function(_0x4ef2ad,_0xa5a45a){return client[_0x2e8d('0xf')](_0x129222,_0x3a326d)[_0x2e8d('0x10')](function(_0x3ecd17){logger[_0x2e8d('0x11')](_0x2e8d('0x12'),_0x597bfe,_0x2e8d('0x13'));logger['debug'](_0x2e8d('0x14'),_0x597bfe,_0x2e8d('0x13'),JSON[_0x2e8d('0x15')](_0x3ecd17));if(_0x3ecd17[_0x2e8d('0x16')]){if(_0x3ecd17['error'][_0x2e8d('0x17')]===0x1f4){logger[_0x2e8d('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x597bfe,_0x3ecd17[_0x2e8d('0x16')]['message']);return _0xa5a45a(_0x3ecd17[_0x2e8d('0x16')]['message']);}logger[_0x2e8d('0x16')](_0x2e8d('0x12'),_0x597bfe,_0x3ecd17[_0x2e8d('0x16')][_0x2e8d('0x18')]);return _0x4ef2ad(_0x3ecd17['error'][_0x2e8d('0x18')]);}else{logger[_0x2e8d('0x11')](_0x2e8d('0x12'),_0x597bfe,_0x2e8d('0x13'));_0x4ef2ad(_0x3ecd17[_0x2e8d('0x19')][_0x2e8d('0x18')]);}})[_0x2e8d('0x1a')](function(_0x6ff645){logger[_0x2e8d('0x16')](_0x2e8d('0x12'),_0x597bfe,_0x6ff645);_0xa5a45a(_0x6ff645);});});}exports['CreateWhatsappMessage']=function(_0x44a325){var _0x55e90e=this;return new Promise(function(_0x2f2591,_0x118819){return db[_0x2e8d('0x1b')]['create'](_0x44a325['body'],{'raw':_0x44a325[_0x2e8d('0x1c')]?_0x44a325[_0x2e8d('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1d441f){logger[_0x2e8d('0x11')](_0x2e8d('0x1d'),_0x44a325);logger[_0x2e8d('0x1e')](_0x2e8d('0x1d'),_0x44a325,JSON[_0x2e8d('0x15')](_0x1d441f));_0x2f2591(_0x1d441f);})[_0x2e8d('0x1a')](function(_0x4fa9dd){logger[_0x2e8d('0x16')]('CreateWhatsappMessage',_0x4fa9dd['message'],_0x44a325);_0x118819(_0x55e90e[_0x2e8d('0x16')](0x1f4,_0x4fa9dd[_0x2e8d('0x18')]));});});};
\ No newline at end of file
+var _0xfe9e=['WhatsappMessage','body','options','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','localhost','./whatsappMessage.socket','register','request','then','info','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','catch','CreateWhatsappMessage'];(function(_0x2965f5,_0x249c7d){var _0x3d8a7f=function(_0x487f13){while(--_0x487f13){_0x2965f5['push'](_0x2965f5['shift']());}};_0x3d8a7f(++_0x249c7d);}(_0xfe9e,0x190));var _0xefe9=function(_0x1d0e07,_0x2037e9){_0x1d0e07=_0x1d0e07-0x0;var _0x8912e0=_0xfe9e[_0x1d0e07];return _0x8912e0;};'use strict';var _=require(_0xefe9('0x0'));var util=require(_0xefe9('0x1'));var moment=require(_0xefe9('0x2'));var BPromise=require(_0xefe9('0x3'));var rs=require(_0xefe9('0x4'));var fs=require('fs');var Redis=require(_0xefe9('0x5'));var db=require(_0xefe9('0x6'))['db'];var utils=require(_0xefe9('0x7'));var logger=require(_0xefe9('0x8'))('rpc');var config=require(_0xefe9('0x9'));var jayson=require(_0xefe9('0xa'));var client=jayson[_0xefe9('0xb')]['http']({'port':0x232a});config[_0xefe9('0xc')]=_['defaults'](config[_0xefe9('0xc')],{'host':_0xefe9('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xefe9('0xe'))[_0xefe9('0xf')](socket);function respondWithRpcPromise(_0x34beec,_0x2348e0,_0x2dfdc4){return new BPromise(function(_0x47db7d,_0x57ad14){return client[_0xefe9('0x10')](_0x34beec,_0x2dfdc4)[_0xefe9('0x11')](function(_0x1877dd){logger[_0xefe9('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x2348e0,_0xefe9('0x13'));logger['debug'](_0xefe9('0x14'),_0x2348e0,_0xefe9('0x13'),JSON[_0xefe9('0x15')](_0x1877dd));if(_0x1877dd[_0xefe9('0x16')]){if(_0x1877dd[_0xefe9('0x16')][_0xefe9('0x17')]===0x1f4){logger[_0xefe9('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x2348e0,_0x1877dd[_0xefe9('0x16')][_0xefe9('0x18')]);return _0x57ad14(_0x1877dd[_0xefe9('0x16')][_0xefe9('0x18')]);}logger[_0xefe9('0x16')](_0xefe9('0x19'),_0x2348e0,_0x1877dd['error'][_0xefe9('0x18')]);return _0x47db7d(_0x1877dd[_0xefe9('0x16')]['message']);}else{logger[_0xefe9('0x12')](_0xefe9('0x19'),_0x2348e0,_0xefe9('0x13'));_0x47db7d(_0x1877dd[_0xefe9('0x1a')][_0xefe9('0x18')]);}})[_0xefe9('0x1b')](function(_0x488ff1){logger[_0xefe9('0x16')](_0xefe9('0x19'),_0x2348e0,_0x488ff1);_0x57ad14(_0x488ff1);});});}exports[_0xefe9('0x1c')]=function(_0x592f55){var _0x4add26=this;return new Promise(function(_0x5f2f87,_0x186cd0){return db[_0xefe9('0x1d')]['create'](_0x592f55[_0xefe9('0x1e')],{'raw':_0x592f55[_0xefe9('0x1f')]?_0x592f55[_0xefe9('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0xefe9('0x11')](function(_0x2e5060){logger[_0xefe9('0x12')]('CreateWhatsappMessage',_0x592f55);logger[_0xefe9('0x20')]('CreateWhatsappMessage',_0x592f55,JSON[_0xefe9('0x15')](_0x2e5060));_0x5f2f87(_0x2e5060);})[_0xefe9('0x1b')](function(_0x2ad4f9){logger['error'](_0xefe9('0x1c'),_0x2ad4f9[_0xefe9('0x18')],_0x592f55);_0x186cd0(_0x4add26[_0xefe9('0x16')](0x1f4,_0x2ad4f9[_0xefe9('0x18')]));});});};
\ No newline at end of file
index 0af304e..f8f7984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x582e=['save','emit','register','length','whatsappMessage:','./whatsappMessage.events'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x582e,0x19d));var _0xe582=function(_0x4f71cb,_0x39d98e){_0x4f71cb=_0x4f71cb-0x0;var _0x3f9435=_0x582e[_0x4f71cb];return _0x3f9435;};'use strict';var WhatsappMessageEvents=require(_0xe582('0x0'));var events=[_0xe582('0x1'),'remove','update'];function createListener(_0x3f2b66,_0x298f5d){return function(_0x4ae1da){_0x298f5d[_0xe582('0x2')](_0x3f2b66,_0x4ae1da);};}function removeListener(_0x2f1452,_0x99d49){return function(){WhatsappMessageEvents['removeListener'](_0x2f1452,_0x99d49);};}exports[_0xe582('0x3')]=function(_0x5b3614){for(var _0x4206f8=0x0,_0x3dc12a=events[_0xe582('0x4')];_0x4206f8<_0x3dc12a;_0x4206f8++){var _0x2bbc2c=events[_0x4206f8];var _0x5534e=createListener(_0xe582('0x5')+_0x2bbc2c,_0x5b3614);WhatsappMessageEvents['on'](_0x2bbc2c,_0x5534e);}};
\ No newline at end of file
+var _0x1991=['length','whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','removeListener','register'];(function(_0xbf1870,_0x53acd9){var _0x5324b1=function(_0x1b8ee9){while(--_0x1b8ee9){_0xbf1870['push'](_0xbf1870['shift']());}};_0x5324b1(++_0x53acd9);}(_0x1991,0x107));var _0x1199=function(_0x43f5be,_0x119556){_0x43f5be=_0x43f5be-0x0;var _0x58257d=_0x1991[_0x43f5be];return _0x58257d;};'use strict';var WhatsappMessageEvents=require(_0x1199('0x0'));var events=[_0x1199('0x1'),_0x1199('0x2'),_0x1199('0x3')];function createListener(_0x4cb5a9,_0x4ce0b1){return function(_0x3ee123){_0x4ce0b1[_0x1199('0x4')](_0x4cb5a9,_0x3ee123);};}function removeListener(_0x2e6b4d,_0x1c4213){return function(){WhatsappMessageEvents[_0x1199('0x5')](_0x2e6b4d,_0x1c4213);};}exports[_0x1199('0x6')]=function(_0x1d5a7c){for(var _0x3a7de2=0x0,_0x205eaf=events[_0x1199('0x7')];_0x3a7de2<_0x205eaf;_0x3a7de2++){var _0x34e907=events[_0x3a7de2];var _0x1297b1=createListener(_0x1199('0x8')+_0x34e907,_0x1d5a7c);WhatsappMessageEvents['on'](_0x34e907,_0x1297b1);}};
\ No newline at end of file
index 6adf1ec..c183e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd868=['/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','exports','multer','path','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams'];(function(_0x5b7318,_0x29c479){var _0x2c6dbc=function(_0x5397b7){while(--_0x5397b7){_0x5b7318['push'](_0x5b7318['shift']());}};_0x2c6dbc(++_0x29c479);}(_0xd868,0x1ec));var _0x8d86=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xd868[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x8d86('0x0'));var util=require('util');var path=require(_0x8d86('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8d86('0x2')]();var fs_extra=require(_0x8d86('0x3'));var auth=require(_0x8d86('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8d86('0x5'));var controller=require(_0x8d86('0x6'));router['get']('/',auth[_0x8d86('0x7')](),controller[_0x8d86('0x8')]);router[_0x8d86('0x9')](_0x8d86('0xa'),auth[_0x8d86('0x7')](),controller[_0x8d86('0xb')]);router[_0x8d86('0x9')](_0x8d86('0xc'),auth[_0x8d86('0x7')](),controller[_0x8d86('0xd')]);router[_0x8d86('0x9')](_0x8d86('0xe'),auth[_0x8d86('0x7')](),controller[_0x8d86('0xf')]);router[_0x8d86('0x9')](_0x8d86('0x10'),auth[_0x8d86('0x7')](),controller[_0x8d86('0x11')]);router['get'](_0x8d86('0x12'),auth[_0x8d86('0x7')](),controller[_0x8d86('0x13')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8d86('0x14')]);router[_0x8d86('0x15')](_0x8d86('0x10'),auth[_0x8d86('0x7')](),controller[_0x8d86('0x16')]);router[_0x8d86('0x15')]('/:id/users',auth[_0x8d86('0x7')](),controller[_0x8d86('0x17')]);router[_0x8d86('0x18')](_0x8d86('0xc'),auth['isAuthenticated'](),controller[_0x8d86('0x19')]);router[_0x8d86('0x1a')](_0x8d86('0xc'),auth['isAuthenticated'](),controller[_0x8d86('0x1b')]);router[_0x8d86('0x1a')](_0x8d86('0x10'),auth[_0x8d86('0x7')](),controller[_0x8d86('0x1c')]);router['delete']('/:id/users',auth[_0x8d86('0x7')](),controller['removeAgents']);module[_0x8d86('0x1d')]=router;
\ No newline at end of file
+var _0x6c6d=['addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','/describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','post'];(function(_0x4aec37,_0x1c72a5){var _0x52a663=function(_0x3a6a80){while(--_0x3a6a80){_0x4aec37['push'](_0x4aec37['shift']());}};_0x52a663(++_0x1c72a5);}(_0x6c6d,0x12b));var _0xd6c6=function(_0x3ad935,_0x209700){_0x3ad935=_0x3ad935-0x0;var _0x5d6602=_0x6c6d[_0x3ad935];return _0x5d6602;};'use strict';var multer=require(_0xd6c6('0x0'));var util=require(_0xd6c6('0x1'));var path=require('path');var timeout=require(_0xd6c6('0x2'));var express=require(_0xd6c6('0x3'));var router=express[_0xd6c6('0x4')]();var fs_extra=require(_0xd6c6('0x5'));var auth=require(_0xd6c6('0x6'));var interaction=require(_0xd6c6('0x7'));var config=require('../../config/environment');var controller=require(_0xd6c6('0x8'));router[_0xd6c6('0x9')]('/',auth[_0xd6c6('0xa')](),controller[_0xd6c6('0xb')]);router['get'](_0xd6c6('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xd6c6('0x9')](_0xd6c6('0xd'),auth[_0xd6c6('0xa')](),controller[_0xd6c6('0xe')]);router[_0xd6c6('0x9')]('/:id/members',auth[_0xd6c6('0xa')](),controller[_0xd6c6('0xf')]);router[_0xd6c6('0x9')](_0xd6c6('0x10'),auth[_0xd6c6('0xa')](),controller[_0xd6c6('0x11')]);router[_0xd6c6('0x9')](_0xd6c6('0x12'),auth[_0xd6c6('0xa')](),controller['getAgents']);router[_0xd6c6('0x13')]('/',auth[_0xd6c6('0xa')](),controller['create']);router[_0xd6c6('0x13')](_0xd6c6('0x10'),auth[_0xd6c6('0xa')](),controller[_0xd6c6('0x14')]);router[_0xd6c6('0x13')](_0xd6c6('0x12'),auth[_0xd6c6('0xa')](),controller[_0xd6c6('0x15')]);router[_0xd6c6('0x16')](_0xd6c6('0xd'),auth['isAuthenticated'](),controller[_0xd6c6('0x17')]);router[_0xd6c6('0x18')](_0xd6c6('0xd'),auth[_0xd6c6('0xa')](),controller[_0xd6c6('0x19')]);router[_0xd6c6('0x18')](_0xd6c6('0x10'),auth[_0xd6c6('0xa')](),controller[_0xd6c6('0x1a')]);router[_0xd6c6('0x18')](_0xd6c6('0x12'),auth[_0xd6c6('0xa')](),controller[_0xd6c6('0x1b')]);module[_0xd6c6('0x1c')]=router;
\ No newline at end of file
index f95523c..96088b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa699=['exports','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x92a79a,_0x5ddeb7){var _0x4ad4cc=function(_0x230238){while(--_0x230238){_0x92a79a['push'](_0x92a79a['shift']());}};_0x4ad4cc(++_0x5ddeb7);}(_0xa699,0x6b));var _0x9a69=function(_0x256d6a,_0x2f002f){_0x256d6a=_0x256d6a-0x0;var _0x460058=_0xa699[_0x256d6a];return _0x460058;};'use strict';var Sequelize=require(_0x9a69('0x0'));module[_0x9a69('0x1')]={'name':{'type':Sequelize[_0x9a69('0x2')],'unique':_0x9a69('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9a69('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9a69('0x5')](_0x9a69('0x6'),_0x9a69('0x7'),_0x9a69('0x8'))},'description':{'type':Sequelize[_0x9a69('0x2')]}};
\ No newline at end of file
+var _0x7119=['name','ENUM','rrmemory','beepall','roundrobin','exports'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x7119,0x1c7));var _0x9711=function(_0x3a607e,_0x54d530){_0x3a607e=_0x3a607e-0x0;var _0x37b106=_0x7119[_0x3a607e];return _0x37b106;};'use strict';var Sequelize=require('sequelize');module[_0x9711('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x9711('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9711('0x2')](_0x9711('0x3'),_0x9711('0x4'),_0x9711('0x5'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a5ec017..2312b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcd8=['Team','addTeams','ids','Agents','online','interface','transaction','each','findOrCreate','forEach','userWhatsappQueue:save','field','tq.TeamId','team_has_whatsapp_queues','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','sequelize','QueryTypes','every','TeamId','includes','all','union','compact','removeTeams','removeAgents','userWhatsappQueue:remove','addAgents','spread','emit','isArray','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','path','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','defaults','redis','socket.io-emitter','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','error','stack','name','send','index','WhatsappQueue','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','type','options','includeAll','findAll','catch','show','params','keys','rawAttributes','include','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMembers','UserWhatsappQueue','order','pick','WhatsappQueueId','User','UserId','agent','updatedAt','createdAt','rows','format','SIP','whatsappPause','getTeams','findOne'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0xfcd8,0xac));var _0x8fcd=function(_0x463600,_0x38ab92){_0x463600=_0x463600-0x0;var _0x1be4e3=_0xfcd8[_0x463600];return _0x1be4e3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8fcd('0x0'));var zipdir=require(_0x8fcd('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8fcd('0x2'));var moment=require(_0x8fcd('0x3'));var BPromise=require(_0x8fcd('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8fcd('0x5'));var sox=require('sox');var csv=require(_0x8fcd('0x6'));var ejs=require(_0x8fcd('0x7'));var fs=require('fs');var fs_extra=require(_0x8fcd('0x8'));var _=require(_0x8fcd('0x9'));var squel=require(_0x8fcd('0xa'));var crypto=require(_0x8fcd('0xb'));var jsforce=require(_0x8fcd('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8fcd('0x6'));var querystring=require(_0x8fcd('0xd'));var Papa=require(_0x8fcd('0xe'));var Redis=require(_0x8fcd('0xf'));var authService=require(_0x8fcd('0x10'));var qs=require(_0x8fcd('0x11'));var as=require(_0x8fcd('0x12'));var hardwareService=require(_0x8fcd('0x13'));var logger=require(_0x8fcd('0x14'))(_0x8fcd('0x15'));var utils=require(_0x8fcd('0x16'));var config=require(_0x8fcd('0x17'));var licenseUtil=require(_0x8fcd('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x8fcd('0x19')](config[_0x8fcd('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x8fcd('0x1b'))(new Redis(config[_0x8fcd('0x1a')]));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x5eea82,_0x348eaf){_0x348eaf=_0x348eaf||0xcc;return function(_0x3b9b9a){if(_0x3b9b9a){return _0x5eea82[_0x8fcd('0x1c')](_0x348eaf);}return _0x5eea82[_0x8fcd('0x1d')](_0x348eaf)[_0x8fcd('0x1e')]();};}function respondWithResult(_0x4d1a09,_0x11a64c){_0x11a64c=_0x11a64c||0xc8;return function(_0x14418c){if(_0x14418c){return _0x4d1a09[_0x8fcd('0x1d')](_0x11a64c)[_0x8fcd('0x1f')](_0x14418c);}};}function respondWithFilteredResult(_0x2e48ec,_0xb7b9c7){return function(_0xe3def8){if(_0xe3def8){var _0x1a5f54=typeof _0xb7b9c7['offset']===_0x8fcd('0x20')&&typeof _0xb7b9c7[_0x8fcd('0x21')]===_0x8fcd('0x20');var _0x3f9be4=_0xe3def8[_0x8fcd('0x22')];var _0xc424fd=_0x1a5f54?0x0:_0xb7b9c7['offset'];var _0x1e6db8=_0x1a5f54?_0xe3def8[_0x8fcd('0x22')]:_0xb7b9c7[_0x8fcd('0x23')]+_0xb7b9c7[_0x8fcd('0x21')];var _0x1f630b;if(_0x1e6db8>=_0x3f9be4){_0x1e6db8=_0x3f9be4;_0x1f630b=0xc8;}else{_0x1f630b=0xce;}_0x2e48ec[_0x8fcd('0x1d')](_0x1f630b);return _0x2e48ec[_0x8fcd('0x24')](_0x8fcd('0x25'),_0xc424fd+'-'+_0x1e6db8+'/'+_0x3f9be4)[_0x8fcd('0x1f')](_0xe3def8);}return null;};}function patchUpdates(_0x567180){return function(_0x54b08a){try{jsonpatch[_0x8fcd('0x26')](_0x54b08a,_0x567180,!![]);}catch(_0x39b9de){return BPromise[_0x8fcd('0x27')](_0x39b9de);}return _0x54b08a[_0x8fcd('0x28')]();};}function saveUpdates(_0x35c23d,_0x38c40b){return function(_0x3a1979){if(_0x3a1979){return _0x3a1979[_0x8fcd('0x29')](_0x35c23d)['then'](function(_0x3628ae){return _0x3628ae;});}return null;};}function removeEntity(_0x150505,_0x1786ad){return function(_0x441f5d){if(_0x441f5d){return _0x441f5d[_0x8fcd('0x2a')]()[_0x8fcd('0x2b')](function(){var _0x136beb=_0x441f5d[_0x8fcd('0x2c')]({'plain':!![]});var _0x11efa3='WhatsappQueues';return db[_0x8fcd('0x2d')][_0x8fcd('0x2a')]({'where':{'type':_0x11efa3,'resourceId':_0x136beb['id']}})[_0x8fcd('0x2b')](function(){return _0x441f5d;});})[_0x8fcd('0x2b')](function(){_0x150505[_0x8fcd('0x1d')](0xcc)[_0x8fcd('0x1e')]();});}};}function handleEntityNotFound(_0x2adef1,_0xadc662){return function(_0x47a8cc){if(!_0x47a8cc){_0x2adef1[_0x8fcd('0x1c')](0x194);}return _0x47a8cc;};}function handleError(_0x192d77,_0xc356d6){_0xc356d6=_0xc356d6||0x1f4;return function(_0x3f2db0){logger[_0x8fcd('0x2e')](_0x3f2db0[_0x8fcd('0x2f')]);if(_0x3f2db0[_0x8fcd('0x30')]){delete _0x3f2db0[_0x8fcd('0x30')];}_0x192d77[_0x8fcd('0x1d')](_0xc356d6)[_0x8fcd('0x31')](_0x3f2db0);};}exports[_0x8fcd('0x32')]=function(_0x271a6d,_0x2b2fed){var _0x1e62d4={},_0x42ada8={},_0x26b78a={'count':0x0,'rows':[]};var _0xdc29de=_['map'](db[_0x8fcd('0x33')]['rawAttributes'],function(_0x247f63){return{'name':_0x247f63[_0x8fcd('0x34')],'type':_0x247f63['type']['key']};});_0x42ada8[_0x8fcd('0x35')]=_['map'](_0xdc29de,_0x8fcd('0x30'));_0x42ada8[_0x8fcd('0x36')]=_['keys'](_0x271a6d[_0x8fcd('0x36')]);_0x42ada8[_0x8fcd('0x37')]=_['intersection'](_0x42ada8[_0x8fcd('0x35')],_0x42ada8[_0x8fcd('0x36')]);_0x1e62d4[_0x8fcd('0x38')]=_[_0x8fcd('0x39')](_0x42ada8[_0x8fcd('0x35')],qs[_0x8fcd('0x3a')](_0x271a6d[_0x8fcd('0x36')]['fields']));_0x1e62d4[_0x8fcd('0x38')]=_0x1e62d4[_0x8fcd('0x38')][_0x8fcd('0x3b')]?_0x1e62d4[_0x8fcd('0x38')]:_0x42ada8[_0x8fcd('0x35')];if(!_0x271a6d[_0x8fcd('0x36')][_0x8fcd('0x3c')](_0x8fcd('0x3d'))){_0x1e62d4[_0x8fcd('0x21')]=qs[_0x8fcd('0x21')](_0x271a6d['query'][_0x8fcd('0x21')]);_0x1e62d4[_0x8fcd('0x23')]=qs[_0x8fcd('0x23')](_0x271a6d['query'][_0x8fcd('0x23')]);}_0x1e62d4['order']=qs[_0x8fcd('0x3e')](_0x271a6d[_0x8fcd('0x36')][_0x8fcd('0x3e')]);_0x1e62d4[_0x8fcd('0x3f')]=qs[_0x8fcd('0x37')](_['pick'](_0x271a6d[_0x8fcd('0x36')],_0x42ada8[_0x8fcd('0x37')]),_0xdc29de);if(_0x271a6d[_0x8fcd('0x36')][_0x8fcd('0x40')]){_0x1e62d4[_0x8fcd('0x3f')]=_[_0x8fcd('0x41')](_0x1e62d4[_0x8fcd('0x3f')],{'$or':_[_0x8fcd('0x42')](_0xdc29de,function(_0x48735c){if(_0x48735c[_0x8fcd('0x43')]!=='VIRTUAL'){var _0x50404f={};_0x50404f[_0x48735c[_0x8fcd('0x30')]]={'$like':'%'+_0x271a6d[_0x8fcd('0x36')][_0x8fcd('0x40')]+'%'};return _0x50404f;}})});}_0x1e62d4=_['merge']({},_0x1e62d4,_0x271a6d[_0x8fcd('0x44')]);var _0x48e27c={'where':_0x1e62d4[_0x8fcd('0x3f')]};return db[_0x8fcd('0x33')]['count'](_0x48e27c)['then'](function(_0x8f35c8){_0x26b78a['count']=_0x8f35c8;if(_0x271a6d[_0x8fcd('0x36')][_0x8fcd('0x45')]){_0x1e62d4['include']=[{'all':!![]}];}return db[_0x8fcd('0x33')][_0x8fcd('0x46')](_0x1e62d4);})[_0x8fcd('0x2b')](function(_0x473dc7){_0x26b78a['rows']=_0x473dc7;return _0x26b78a;})[_0x8fcd('0x2b')](respondWithFilteredResult(_0x2b2fed,_0x1e62d4))[_0x8fcd('0x47')](handleError(_0x2b2fed,null));};exports[_0x8fcd('0x48')]=function(_0x310ff0,_0x44195f){var _0x579e92={'raw':!![],'where':{'id':_0x310ff0[_0x8fcd('0x49')]['id']}},_0x33cceb={};_0x33cceb[_0x8fcd('0x35')]=_[_0x8fcd('0x4a')](db['WhatsappQueue'][_0x8fcd('0x4b')]);_0x33cceb[_0x8fcd('0x36')]=_[_0x8fcd('0x4a')](_0x310ff0[_0x8fcd('0x36')]);_0x33cceb['filters']=_[_0x8fcd('0x39')](_0x33cceb[_0x8fcd('0x35')],_0x33cceb[_0x8fcd('0x36')]);_0x579e92[_0x8fcd('0x38')]=_[_0x8fcd('0x39')](_0x33cceb['model'],qs['fields'](_0x310ff0[_0x8fcd('0x36')][_0x8fcd('0x3a')]));_0x579e92[_0x8fcd('0x38')]=_0x579e92['attributes']['length']?_0x579e92[_0x8fcd('0x38')]:_0x33cceb[_0x8fcd('0x35')];if(_0x310ff0[_0x8fcd('0x36')][_0x8fcd('0x45')]){_0x579e92[_0x8fcd('0x4c')]=[{'all':!![]}];}_0x579e92=_[_0x8fcd('0x41')]({},_0x579e92,_0x310ff0[_0x8fcd('0x44')]);return db[_0x8fcd('0x33')][_0x8fcd('0x4d')](_0x579e92)[_0x8fcd('0x2b')](handleEntityNotFound(_0x44195f,null))[_0x8fcd('0x2b')](respondWithResult(_0x44195f,null))[_0x8fcd('0x47')](handleError(_0x44195f,null));};exports[_0x8fcd('0x4e')]=function(_0x549ed2,_0x24b2b6){return db[_0x8fcd('0x33')][_0x8fcd('0x4e')](_0x549ed2['body'],{})[_0x8fcd('0x2b')](function(_0x2d229e){var _0x1c797d=_0x549ed2[_0x8fcd('0x4f')][_0x8fcd('0x2c')]({'plain':!![]});if(!_0x1c797d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1c797d[_0x8fcd('0x50')]===_0x8fcd('0x4f')){var _0x35e6f7=_0x2d229e[_0x8fcd('0x2c')]({'plain':!![]});var _0x3fbe9b='WhatsappQueues';return db[_0x8fcd('0x51')][_0x8fcd('0x4d')]({'where':{'name':_0x3fbe9b,'userProfileId':_0x1c797d[_0x8fcd('0x52')]},'raw':!![]})[_0x8fcd('0x2b')](function(_0x39893e){if(_0x39893e&&_0x39893e[_0x8fcd('0x53')]===0x0){return db['UserProfileResource'][_0x8fcd('0x4e')]({'name':_0x35e6f7[_0x8fcd('0x30')],'resourceId':_0x35e6f7['id'],'type':_0x39893e['name'],'sectionId':_0x39893e['id']},{})[_0x8fcd('0x2b')](function(){return _0x2d229e;});}else{return _0x2d229e;}})[_0x8fcd('0x47')](function(_0x361ccb){logger['error'](_0x8fcd('0x54'),_0x361ccb);throw _0x361ccb;});}return _0x2d229e;})[_0x8fcd('0x2b')](respondWithResult(_0x24b2b6,0xc9))[_0x8fcd('0x47')](handleError(_0x24b2b6,null));};exports[_0x8fcd('0x29')]=function(_0x3f20ca,_0x2ecb09){if(_0x3f20ca[_0x8fcd('0x55')]['id']){delete _0x3f20ca['body']['id'];}return db['WhatsappQueue'][_0x8fcd('0x4d')]({'where':{'id':_0x3f20ca[_0x8fcd('0x49')]['id']}})[_0x8fcd('0x2b')](handleEntityNotFound(_0x2ecb09,null))[_0x8fcd('0x2b')](saveUpdates(_0x3f20ca[_0x8fcd('0x55')],null))[_0x8fcd('0x2b')](respondWithResult(_0x2ecb09,null))[_0x8fcd('0x47')](handleError(_0x2ecb09,null));};exports[_0x8fcd('0x2a')]=function(_0x248c49,_0x52af13){return db[_0x8fcd('0x33')][_0x8fcd('0x4d')]({'where':{'id':_0x248c49[_0x8fcd('0x49')]['id']}})[_0x8fcd('0x2b')](handleEntityNotFound(_0x52af13,null))[_0x8fcd('0x2b')](removeEntity(_0x52af13,null))[_0x8fcd('0x47')](handleError(_0x52af13,null));};exports['describe']=function(_0x5dcc96,_0x150a60){return db[_0x8fcd('0x33')]['describe']()['then'](respondWithResult(_0x150a60,null))[_0x8fcd('0x47')](handleError(_0x150a60,null));};exports[_0x8fcd('0x56')]=function(_0x32919a,_0x3e6dda,_0x1e4f29){var _0x2eaf94={'raw':!![],'where':{}},_0x297b71={},_0x53944f;return db['WhatsappQueue']['findOne']({'where':{'id':_0x32919a[_0x8fcd('0x49')]['id']}})[_0x8fcd('0x2b')](handleEntityNotFound(_0x3e6dda,null))[_0x8fcd('0x2b')](function(_0x2296ed){if(_0x2296ed){_0x53944f=_0x2296ed[_0x8fcd('0x2c')]({'plain':!![]});_0x297b71[_0x8fcd('0x35')]=_[_0x8fcd('0x4a')](db[_0x8fcd('0x57')]['rawAttributes']);_0x297b71[_0x8fcd('0x36')]=_[_0x8fcd('0x4a')](_0x32919a[_0x8fcd('0x36')]);_0x297b71['filters']=_[_0x8fcd('0x39')](_0x297b71[_0x8fcd('0x35')],_0x297b71[_0x8fcd('0x36')]);_0x2eaf94[_0x8fcd('0x38')]=_[_0x8fcd('0x39')](_0x297b71[_0x8fcd('0x35')],qs[_0x8fcd('0x3a')](_0x32919a[_0x8fcd('0x36')]['fields']));_0x2eaf94[_0x8fcd('0x38')]=_0x2eaf94[_0x8fcd('0x38')][_0x8fcd('0x3b')]?_0x2eaf94[_0x8fcd('0x38')]:_0x297b71[_0x8fcd('0x35')];if(!_0x32919a[_0x8fcd('0x36')][_0x8fcd('0x3c')]('nolimit')){_0x2eaf94[_0x8fcd('0x21')]=qs[_0x8fcd('0x21')](_0x32919a[_0x8fcd('0x36')][_0x8fcd('0x21')]);_0x2eaf94['offset']=qs[_0x8fcd('0x23')](_0x32919a[_0x8fcd('0x36')][_0x8fcd('0x23')]);}_0x2eaf94[_0x8fcd('0x58')]=qs[_0x8fcd('0x3e')](_0x32919a['query'][_0x8fcd('0x3e')]);_0x2eaf94['where']=qs[_0x8fcd('0x37')](_[_0x8fcd('0x59')](_0x32919a[_0x8fcd('0x36')],_0x297b71[_0x8fcd('0x37')]));_0x2eaf94[_0x8fcd('0x3f')][_0x8fcd('0x5a')]=_0x2296ed['id'];if(_0x32919a['query'][_0x8fcd('0x40')]){_0x2eaf94[_0x8fcd('0x3f')]=_['merge'](_0x2eaf94[_0x8fcd('0x3f')],{'$or':_[_0x8fcd('0x42')](_0x2eaf94[_0x8fcd('0x38')],function(_0x4edc19){var _0xd382c8={};_0xd382c8[_0x4edc19]={'$like':'%'+_0x32919a[_0x8fcd('0x36')]['filter']+'%'};return _0xd382c8;})});}_0x2eaf94=_[_0x8fcd('0x41')]({},_0x2eaf94,_0x32919a[_0x8fcd('0x44')]);return db['UserWhatsappQueue'][_0x8fcd('0x46')](_0x2eaf94);}})['then'](function(_0x5e6dbe){if(_0x5e6dbe){return db[_0x8fcd('0x5b')]['findAndCountAll']({'where':{'id':_[_0x8fcd('0x42')](_0x5e6dbe,_0x8fcd('0x5c')),'role':_0x8fcd('0x5d')},'attributes':['id',_0x8fcd('0x30'),'whatsappPause',_0x8fcd('0x5e'),_0x8fcd('0x5f')]});}})['then'](function(_0x5c63ad){if(_0x5c63ad){return{'count':_0x5c63ad[_0x8fcd('0x22')],'rows':_[_0x8fcd('0x42')](_0x5c63ad[_0x8fcd('0x60')],function(_0x2382bb){return{'membername':_0x2382bb[_0x8fcd('0x30')],'UserId':_0x2382bb['id'],'queue_name':_0x53944f[_0x8fcd('0x30')],'WhatsappQueueId':_0x53944f['id'],'interface':util[_0x8fcd('0x61')]('%s/%s',_0x8fcd('0x62'),_0x2382bb[_0x8fcd('0x30')]),'penalty':0x0,'paused':_0x2382bb[_0x8fcd('0x63')],'createdAt':_0x2382bb[_0x8fcd('0x5f')],'updatedAt':_0x2382bb['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x8fcd('0x2b')](respondWithFilteredResult(_0x3e6dda,_0x2eaf94))[_0x8fcd('0x47')](handleError(_0x3e6dda,null));};exports[_0x8fcd('0x64')]=function(_0x172726,_0x39d63f,_0x4013ef){var _0xbb7ee={};var _0x305dc5={};var _0x1fd96b;var _0x179a19;return db[_0x8fcd('0x33')][_0x8fcd('0x65')]({'where':{'id':_0x172726['params']['id']}})[_0x8fcd('0x2b')](handleEntityNotFound(_0x39d63f,null))[_0x8fcd('0x2b')](function(_0x52ffa6){if(_0x52ffa6){_0x1fd96b=_0x52ffa6;_0x305dc5[_0x8fcd('0x35')]=_[_0x8fcd('0x4a')](db[_0x8fcd('0x66')]['rawAttributes']);_0x305dc5[_0x8fcd('0x36')]=_[_0x8fcd('0x4a')](_0x172726[_0x8fcd('0x36')]);_0x305dc5['filters']=_[_0x8fcd('0x39')](_0x305dc5[_0x8fcd('0x35')],_0x305dc5[_0x8fcd('0x36')]);_0xbb7ee[_0x8fcd('0x38')]=_[_0x8fcd('0x39')](_0x305dc5[_0x8fcd('0x35')],qs['fields'](_0x172726[_0x8fcd('0x36')][_0x8fcd('0x3a')]));_0xbb7ee['attributes']=_0xbb7ee[_0x8fcd('0x38')][_0x8fcd('0x3b')]?_0xbb7ee[_0x8fcd('0x38')]:_0x305dc5[_0x8fcd('0x35')];_0xbb7ee[_0x8fcd('0x58')]=qs[_0x8fcd('0x3e')](_0x172726['query']['sort']);_0xbb7ee['where']=qs[_0x8fcd('0x37')](_[_0x8fcd('0x59')](_0x172726[_0x8fcd('0x36')],_0x305dc5[_0x8fcd('0x37')]));if(_0x172726[_0x8fcd('0x36')][_0x8fcd('0x40')]){_0xbb7ee[_0x8fcd('0x3f')]=_[_0x8fcd('0x41')](_0xbb7ee[_0x8fcd('0x3f')],{'$or':_['map'](_0xbb7ee[_0x8fcd('0x38')],function(_0x267881){var _0x282f29={};_0x282f29[_0x267881]={'$like':'%'+_0x172726[_0x8fcd('0x36')][_0x8fcd('0x40')]+'%'};return _0x282f29;})});}_0xbb7ee=_[_0x8fcd('0x41')]({},_0xbb7ee,_0x172726['options']);return _0x1fd96b[_0x8fcd('0x64')](_0xbb7ee);}})['then'](function(_0x5c3ee2){if(_0x5c3ee2){_0x179a19=_0x5c3ee2[_0x8fcd('0x3b')];if(!_0x172726[_0x8fcd('0x36')][_0x8fcd('0x3c')](_0x8fcd('0x3d'))){_0xbb7ee[_0x8fcd('0x21')]=qs['limit'](_0x172726['query']['limit']);_0xbb7ee[_0x8fcd('0x23')]=qs[_0x8fcd('0x23')](_0x172726[_0x8fcd('0x36')][_0x8fcd('0x23')]);}return _0x1fd96b['getTeams'](_0xbb7ee);}})['then'](function(_0x91d852){if(_0x91d852){return _0x91d852?{'count':_0x179a19,'rows':_0x91d852}:null;}})[_0x8fcd('0x2b')](respondWithResult(_0x39d63f,null))[_0x8fcd('0x47')](handleError(_0x39d63f,null));};exports[_0x8fcd('0x67')]=function(_0x3d79b2,_0x4a54cf,_0x448707){var _0x915646=_0x3d79b2[_0x8fcd('0x55')][_0x8fcd('0x68')];return db[_0x8fcd('0x66')][_0x8fcd('0x46')]({'where':{'id':_0x915646},'attributes':['id'],'include':[{'model':db[_0x8fcd('0x5b')],'as':_0x8fcd('0x69'),'attributes':['id',_0x8fcd('0x30'),_0x8fcd('0x6a'),'voicePause',_0x8fcd('0x6b')],'raw':!![]}]})[_0x8fcd('0x2b')](function(_0x417b49){if(_0x417b49){var _0x13b0fc=_['flatMap'](_0x417b49,function(_0x5b9e12){var _0x254382=_0x5b9e12[_0x8fcd('0x2c')]({'plain':!![]});return _0x254382['Agents'];});return db[_0x8fcd('0x33')][_0x8fcd('0x4d')]({'where':{'id':_0x3d79b2[_0x8fcd('0x49')]['id']}})[_0x8fcd('0x2b')](function(_0x43a21c){return db['sequelize'][_0x8fcd('0x6c')](function(_0xc0750){return _0x43a21c['addTeams'](_0x915646,{'transaction':_0xc0750})[_0x8fcd('0x2b')](function(){return BPromise[_0x8fcd('0x6d')](_0x13b0fc,function(_0x229abc){return db[_0x8fcd('0x57')][_0x8fcd('0x6e')]({'where':{'UserId':_0x229abc['id'],'WhatsappQueueId':_0x3d79b2[_0x8fcd('0x49')]['id']},'transaction':_0xc0750});});})['then'](function(){_0x13b0fc[_0x8fcd('0x6f')](function(_0x27622b){socket['emit'](_0x8fcd('0x70'),{'UserId':_0x27622b['id'],'WhatsappQueueId':_0x43a21c['id']});});});});});}})[_0x8fcd('0x2b')](respondWithStatusCode(_0x4a54cf,null))[_0x8fcd('0x47')](handleError(_0x4a54cf,null));};exports['removeTeams']=function(_0x3b579f,_0x18957b,_0x2e82a6){return db[_0x8fcd('0x66')]['findAll']({'where':{'id':_0x3b579f['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x8fcd('0x5b')],'as':_0x8fcd('0x69'),'attributes':['id'],'raw':!![]}]})[_0x8fcd('0x2b')](handleEntityNotFound(_0x18957b,null))[_0x8fcd('0x2b')](function(_0x4157ce){var _0xa6effd=_[_0x8fcd('0x42')](_0x4157ce,'id');var _0x35e760=[];var _0x3177e1=[];var _0x5bdc4f=squel['select']();_0x5bdc4f[_0x8fcd('0x71')](_0x8fcd('0x72'))['from'](_0x8fcd('0x73'),'tq')['join']('user_has_teams','ut',_0x8fcd('0x74'))['where'](_0x8fcd('0x75'),_0x3b579f[_0x8fcd('0x49')]['id']);for(var _0x4f242e=0x0;_0x4f242e<_0x4157ce[_0x8fcd('0x3b')];_0x4f242e+=0x1){let _0x47505e=_0x4157ce[_0x4f242e];for(var _0x12d360=0x0;_0x12d360<_0x47505e[_0x8fcd('0x69')][_0x8fcd('0x3b')];_0x12d360+=0x1){let _0x51c5f7=_0x47505e[_0x8fcd('0x69')][_0x12d360];var _0x2ba338=_0x5bdc4f['clone']();_0x2ba338[_0x8fcd('0x3f')](_0x8fcd('0x76'),_0x51c5f7['id']);_0x3177e1[_0x8fcd('0x77')](db['sequelize'][_0x8fcd('0x36')](_0x2ba338[_0x8fcd('0x78')](),{'type':db[_0x8fcd('0x79')][_0x8fcd('0x7a')]['SELECT']})[_0x8fcd('0x2b')](function(_0x2ef747){if(_0x2ef747[_0x8fcd('0x3b')]===0x1){return _0x51c5f7['id'];}else{var _0x54b8d6=_[_0x8fcd('0x7b')](_[_0x8fcd('0x42')](_0x2ef747,_0x8fcd('0x7c')),function(_0x389146){return _[_0x8fcd('0x7d')](_0xa6effd,_0x389146);});if(_0x54b8d6){return _0x51c5f7['id'];}}}));}}return BPromise[_0x8fcd('0x7e')](_0x3177e1)[_0x8fcd('0x2b')](function(_0x46be39){_0x35e760=_(_0x35e760)[_0x8fcd('0x7f')](_0x46be39)[_0x8fcd('0x80')]()['value']();return db['WhatsappQueue']['find']({'where':{'id':_0x3b579f[_0x8fcd('0x49')]['id']}})['then'](function(_0x226ce2){return db[_0x8fcd('0x79')][_0x8fcd('0x6c')](function(_0x20f447){return _0x226ce2[_0x8fcd('0x81')](_0x3b579f[_0x8fcd('0x36')][_0x8fcd('0x68')],{'transaction':_0x20f447})[_0x8fcd('0x2b')](function(){if(!_['isEmpty'](_0x35e760)){return _0x226ce2[_0x8fcd('0x82')](_0x35e760,{'transaction':_0x20f447});}})[_0x8fcd('0x2b')](function(){_0x35e760[_0x8fcd('0x6f')](function(_0x909f46){socket['emit'](_0x8fcd('0x83'),{'UserId':_0x909f46,'WhatsappQueueId':_0x226ce2['id']});});});});});});})['then'](respondWithStatusCode(_0x18957b,null))[_0x8fcd('0x47')](handleError(_0x18957b,null));};exports['addAgents']=function(_0x1446d2,_0x519d1d,_0x22df81){return db[_0x8fcd('0x33')]['find']({'where':{'id':_0x1446d2['params']['id']}})[_0x8fcd('0x2b')](handleEntityNotFound(_0x519d1d,null))[_0x8fcd('0x2b')](function(_0x53fa2f){if(_0x53fa2f){return _0x53fa2f[_0x8fcd('0x84')](_0x1446d2[_0x8fcd('0x55')][_0x8fcd('0x68')],_['omit'](_0x1446d2[_0x8fcd('0x55')],['ids','id'])||{})[_0x8fcd('0x85')](function(_0x4013b3){for(var _0x601411=0x0;_0x601411<_0x1446d2[_0x8fcd('0x55')][_0x8fcd('0x68')][_0x8fcd('0x3b')];_0x601411+=0x1){socket[_0x8fcd('0x86')](_0x8fcd('0x70'),{'UserId':Number(_0x1446d2[_0x8fcd('0x55')][_0x8fcd('0x68')][_0x601411]),'WhatsappQueueId':Number(_0x1446d2[_0x8fcd('0x49')]['id'])});}return _0x4013b3;});}})[_0x8fcd('0x2b')](respondWithResult(_0x519d1d,null))[_0x8fcd('0x47')](handleError(_0x519d1d,null));};exports['removeAgents']=function(_0x208251,_0x1cc2b5,_0x40c653){return db[_0x8fcd('0x33')]['find']({'where':{'id':_0x208251[_0x8fcd('0x49')]['id']}})[_0x8fcd('0x2b')](handleEntityNotFound(_0x1cc2b5,null))[_0x8fcd('0x2b')](function(_0x525084){if(_0x525084){return _0x525084[_0x8fcd('0x82')](_0x208251['query']['ids'])[_0x8fcd('0x2b')](function(){if(_[_0x8fcd('0x87')](_0x208251[_0x8fcd('0x36')]['ids'])){for(var _0x38e3fb=0x0;_0x38e3fb<_0x208251[_0x8fcd('0x36')][_0x8fcd('0x68')]['length'];_0x38e3fb+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x208251[_0x8fcd('0x36')][_0x8fcd('0x68')][_0x38e3fb]),'WhatsappQueueId':Number(_0x208251['params']['id'])});}}else{socket['emit'](_0x8fcd('0x83'),{'UserId':Number(_0x208251['query'][_0x8fcd('0x68')]),'WhatsappQueueId':Number(_0x208251[_0x8fcd('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x1cc2b5,null))[_0x8fcd('0x47')](handleError(_0x1cc2b5,null));};exports['getAgents']=function(_0x5668e2,_0x52c454,_0x2d2ca9){var _0x4c6753={};var _0x4cb97b={};var _0x301c95;var _0x52d877;return db[_0x8fcd('0x33')][_0x8fcd('0x65')]({'where':{'id':_0x5668e2['params']['id']}})[_0x8fcd('0x2b')](handleEntityNotFound(_0x52c454,null))[_0x8fcd('0x2b')](function(_0x5bf622){if(_0x5bf622){_0x301c95=_0x5bf622;_0x4cb97b[_0x8fcd('0x35')]=_[_0x8fcd('0x4a')](db[_0x8fcd('0x5b')][_0x8fcd('0x4b')]);_0x4cb97b[_0x8fcd('0x36')]=_['keys'](_0x5668e2[_0x8fcd('0x36')]);_0x4cb97b['filters']=_[_0x8fcd('0x39')](_0x4cb97b['model'],_0x4cb97b[_0x8fcd('0x36')]);_0x4c6753['attributes']=_[_0x8fcd('0x39')](_0x4cb97b[_0x8fcd('0x35')],qs[_0x8fcd('0x3a')](_0x5668e2['query'][_0x8fcd('0x3a')]));_0x4c6753[_0x8fcd('0x38')]=_0x4c6753[_0x8fcd('0x38')]['length']?_0x4c6753[_0x8fcd('0x38')]:_0x4cb97b[_0x8fcd('0x35')];_0x4c6753[_0x8fcd('0x58')]=qs[_0x8fcd('0x3e')](_0x5668e2[_0x8fcd('0x36')][_0x8fcd('0x3e')]);_0x4c6753['where']=qs[_0x8fcd('0x37')](_['pick'](_0x5668e2[_0x8fcd('0x36')],_0x4cb97b[_0x8fcd('0x37')]));if(_0x5668e2[_0x8fcd('0x36')][_0x8fcd('0x40')]){_0x4c6753['where']=_['merge'](_0x4c6753[_0x8fcd('0x3f')],{'$or':_[_0x8fcd('0x42')](_0x4c6753[_0x8fcd('0x38')],function(_0x3205cb){var _0x5b0e48={};_0x5b0e48[_0x3205cb]={'$like':'%'+_0x5668e2['query'][_0x8fcd('0x40')]+'%'};return _0x5b0e48;})});}_0x4c6753=_[_0x8fcd('0x41')]({},_0x4c6753,_0x5668e2[_0x8fcd('0x44')]);return _0x301c95['getAgents'](_0x4c6753);}})[_0x8fcd('0x2b')](function(_0x1b65c4){if(_0x1b65c4){_0x52d877=_0x1b65c4['length'];if(!_0x5668e2[_0x8fcd('0x36')]['hasOwnProperty'](_0x8fcd('0x3d'))){_0x4c6753[_0x8fcd('0x21')]=qs[_0x8fcd('0x21')](_0x5668e2[_0x8fcd('0x36')]['limit']);_0x4c6753[_0x8fcd('0x23')]=qs['offset'](_0x5668e2[_0x8fcd('0x36')][_0x8fcd('0x23')]);}return _0x301c95[_0x8fcd('0x88')](_0x4c6753);}})['then'](function(_0x485218){if(_0x485218){return _0x485218?{'count':_0x52d877,'rows':_0x485218}:null;}})[_0x8fcd('0x2b')](respondWithResult(_0x52c454,null))[_0x8fcd('0x47')](handleError(_0x52c454,null));};
\ No newline at end of file
+var _0xf8a1=['request-promise','moment','mustache','path','sox','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','end','status','offset','limit','undefined','set','Content-Range','json','apply','reject','save','update','then','destroy','get','WhatsappQueues','sendStatus','stack','name','send','index','WhatsappQueue','fieldName','type','key','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','VIRTUAL','merge','count','includeAll','rows','catch','show','params','model','rawAttributes','include','find','create','user','role','userProfileId','autoAssociation','error','body','describe','getMembers','findOne','UserWhatsappQueue','hasOwnProperty','order','WhatsappQueueId','filter','options','findAll','User','findAndCountAll','UserId','agent','whatsappPause','createdAt','format','updatedAt','getTeams','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','transaction','userWhatsappQueue:remove','addAgents','spread','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch'];(function(_0x3ea36c,_0x4c4860){var _0x2c90f1=function(_0x4dbc12){while(--_0x4dbc12){_0x3ea36c['push'](_0x3ea36c['shift']());}};_0x2c90f1(++_0x4c4860);}(_0xf8a1,0x117));var _0x1f8a=function(_0x28821e,_0x43d56c){_0x28821e=_0x28821e-0x0;var _0x29d248=_0xf8a1[_0x28821e];return _0x29d248;};'use strict';var emlformat=require(_0x1f8a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1f8a('0x1'));var jsonpatch=require(_0x1f8a('0x2'));var rp=require(_0x1f8a('0x3'));var moment=require(_0x1f8a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1f8a('0x5'));var util=require('util');var path=require(_0x1f8a('0x6'));var sox=require(_0x1f8a('0x7'));var csv=require('to-csv');var ejs=require(_0x1f8a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1f8a('0x9'));var squel=require('squel');var crypto=require(_0x1f8a('0xa'));var jsforce=require(_0x1f8a('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1f8a('0xc'));var Papa=require(_0x1f8a('0xd'));var Redis=require('ioredis');var authService=require(_0x1f8a('0xe'));var qs=require(_0x1f8a('0xf'));var as=require(_0x1f8a('0x10'));var hardwareService=require(_0x1f8a('0x11'));var logger=require(_0x1f8a('0x12'))(_0x1f8a('0x13'));var utils=require(_0x1f8a('0x14'));var config=require(_0x1f8a('0x15'));var licenseUtil=require(_0x1f8a('0x16'));var db=require(_0x1f8a('0x17'))['db'];config['redis']=_['defaults'](config[_0x1f8a('0x18')],{'host':_0x1f8a('0x19'),'port':0x18eb});var socket=require(_0x1f8a('0x1a'))(new Redis(config[_0x1f8a('0x18')]));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x5730a7,_0x1fe4b4){_0x1fe4b4=_0x1fe4b4||0xcc;return function(_0x47a7bb){if(_0x47a7bb){return _0x5730a7['sendStatus'](_0x1fe4b4);}return _0x5730a7['status'](_0x1fe4b4)[_0x1f8a('0x1b')]();};}function respondWithResult(_0x591152,_0x4991fb){_0x4991fb=_0x4991fb||0xc8;return function(_0x4f48b0){if(_0x4f48b0){return _0x591152[_0x1f8a('0x1c')](_0x4991fb)['json'](_0x4f48b0);}};}function respondWithFilteredResult(_0x4f7c2f,_0x520a1c){return function(_0x2f35a3){if(_0x2f35a3){var _0x18f600=typeof _0x520a1c[_0x1f8a('0x1d')]==='undefined'&&typeof _0x520a1c[_0x1f8a('0x1e')]===_0x1f8a('0x1f');var _0x5a59a4=_0x2f35a3['count'];var _0xb471cd=_0x18f600?0x0:_0x520a1c[_0x1f8a('0x1d')];var _0x3765f9=_0x18f600?_0x2f35a3['count']:_0x520a1c['offset']+_0x520a1c['limit'];var _0x446fcc;if(_0x3765f9>=_0x5a59a4){_0x3765f9=_0x5a59a4;_0x446fcc=0xc8;}else{_0x446fcc=0xce;}_0x4f7c2f['status'](_0x446fcc);return _0x4f7c2f[_0x1f8a('0x20')](_0x1f8a('0x21'),_0xb471cd+'-'+_0x3765f9+'/'+_0x5a59a4)[_0x1f8a('0x22')](_0x2f35a3);}return null;};}function patchUpdates(_0x51c69f){return function(_0x1f3aa5){try{jsonpatch[_0x1f8a('0x23')](_0x1f3aa5,_0x51c69f,!![]);}catch(_0xe45b97){return BPromise[_0x1f8a('0x24')](_0xe45b97);}return _0x1f3aa5[_0x1f8a('0x25')]();};}function saveUpdates(_0x138b1e,_0x592b9e){return function(_0x25e57b){if(_0x25e57b){return _0x25e57b[_0x1f8a('0x26')](_0x138b1e)[_0x1f8a('0x27')](function(_0x3ba53e){return _0x3ba53e;});}return null;};}function removeEntity(_0x2fa033,_0x48bd08){return function(_0x53cc30){if(_0x53cc30){return _0x53cc30[_0x1f8a('0x28')]()[_0x1f8a('0x27')](function(){var _0x6d1448=_0x53cc30[_0x1f8a('0x29')]({'plain':!![]});var _0x17e9aa=_0x1f8a('0x2a');return db['UserProfileResource'][_0x1f8a('0x28')]({'where':{'type':_0x17e9aa,'resourceId':_0x6d1448['id']}})['then'](function(){return _0x53cc30;});})['then'](function(){_0x2fa033['status'](0xcc)[_0x1f8a('0x1b')]();});}};}function handleEntityNotFound(_0x57181f,_0x4dff6f){return function(_0x428fa7){if(!_0x428fa7){_0x57181f[_0x1f8a('0x2b')](0x194);}return _0x428fa7;};}function handleError(_0xd5e290,_0x4af35f){_0x4af35f=_0x4af35f||0x1f4;return function(_0x2fcc3a){logger['error'](_0x2fcc3a[_0x1f8a('0x2c')]);if(_0x2fcc3a[_0x1f8a('0x2d')]){delete _0x2fcc3a[_0x1f8a('0x2d')];}_0xd5e290['status'](_0x4af35f)[_0x1f8a('0x2e')](_0x2fcc3a);};}exports[_0x1f8a('0x2f')]=function(_0x4c5fba,_0x47696a){var _0x54f100={},_0x2ad636={},_0x4804d9={'count':0x0,'rows':[]};var _0x41aaee=_['map'](db[_0x1f8a('0x30')]['rawAttributes'],function(_0x2c4c46){return{'name':_0x2c4c46[_0x1f8a('0x31')],'type':_0x2c4c46[_0x1f8a('0x32')][_0x1f8a('0x33')]};});_0x2ad636['model']=_[_0x1f8a('0x34')](_0x41aaee,_0x1f8a('0x2d'));_0x2ad636[_0x1f8a('0x35')]=_[_0x1f8a('0x36')](_0x4c5fba[_0x1f8a('0x35')]);_0x2ad636[_0x1f8a('0x37')]=_[_0x1f8a('0x38')](_0x2ad636['model'],_0x2ad636[_0x1f8a('0x35')]);_0x54f100[_0x1f8a('0x39')]=_[_0x1f8a('0x38')](_0x2ad636['model'],qs[_0x1f8a('0x3a')](_0x4c5fba['query'][_0x1f8a('0x3a')]));_0x54f100[_0x1f8a('0x39')]=_0x54f100[_0x1f8a('0x39')][_0x1f8a('0x3b')]?_0x54f100[_0x1f8a('0x39')]:_0x2ad636['model'];if(!_0x4c5fba['query']['hasOwnProperty'](_0x1f8a('0x3c'))){_0x54f100[_0x1f8a('0x1e')]=qs['limit'](_0x4c5fba['query'][_0x1f8a('0x1e')]);_0x54f100[_0x1f8a('0x1d')]=qs[_0x1f8a('0x1d')](_0x4c5fba['query'][_0x1f8a('0x1d')]);}_0x54f100['order']=qs[_0x1f8a('0x3d')](_0x4c5fba[_0x1f8a('0x35')][_0x1f8a('0x3d')]);_0x54f100[_0x1f8a('0x3e')]=qs['filters'](_[_0x1f8a('0x3f')](_0x4c5fba[_0x1f8a('0x35')],_0x2ad636[_0x1f8a('0x37')]),_0x41aaee);if(_0x4c5fba['query']['filter']){_0x54f100[_0x1f8a('0x3e')]=_['merge'](_0x54f100['where'],{'$or':_['map'](_0x41aaee,function(_0x142e39){if(_0x142e39[_0x1f8a('0x32')]!==_0x1f8a('0x40')){var _0x5ef27c={};_0x5ef27c[_0x142e39[_0x1f8a('0x2d')]]={'$like':'%'+_0x4c5fba[_0x1f8a('0x35')]['filter']+'%'};return _0x5ef27c;}})});}_0x54f100=_[_0x1f8a('0x41')]({},_0x54f100,_0x4c5fba['options']);var _0x44a383={'where':_0x54f100[_0x1f8a('0x3e')]};return db[_0x1f8a('0x30')][_0x1f8a('0x42')](_0x44a383)[_0x1f8a('0x27')](function(_0x5e054f){_0x4804d9[_0x1f8a('0x42')]=_0x5e054f;if(_0x4c5fba['query'][_0x1f8a('0x43')]){_0x54f100['include']=[{'all':!![]}];}return db['WhatsappQueue']['findAll'](_0x54f100);})['then'](function(_0x2b06a7){_0x4804d9[_0x1f8a('0x44')]=_0x2b06a7;return _0x4804d9;})[_0x1f8a('0x27')](respondWithFilteredResult(_0x47696a,_0x54f100))[_0x1f8a('0x45')](handleError(_0x47696a,null));};exports[_0x1f8a('0x46')]=function(_0x47ff41,_0x5b987e){var _0x155d73={'raw':!![],'where':{'id':_0x47ff41[_0x1f8a('0x47')]['id']}},_0x1a2152={};_0x1a2152[_0x1f8a('0x48')]=_[_0x1f8a('0x36')](db[_0x1f8a('0x30')][_0x1f8a('0x49')]);_0x1a2152[_0x1f8a('0x35')]=_['keys'](_0x47ff41[_0x1f8a('0x35')]);_0x1a2152[_0x1f8a('0x37')]=_[_0x1f8a('0x38')](_0x1a2152['model'],_0x1a2152[_0x1f8a('0x35')]);_0x155d73[_0x1f8a('0x39')]=_[_0x1f8a('0x38')](_0x1a2152['model'],qs[_0x1f8a('0x3a')](_0x47ff41[_0x1f8a('0x35')]['fields']));_0x155d73[_0x1f8a('0x39')]=_0x155d73[_0x1f8a('0x39')][_0x1f8a('0x3b')]?_0x155d73['attributes']:_0x1a2152[_0x1f8a('0x48')];if(_0x47ff41['query'][_0x1f8a('0x43')]){_0x155d73[_0x1f8a('0x4a')]=[{'all':!![]}];}_0x155d73=_[_0x1f8a('0x41')]({},_0x155d73,_0x47ff41['options']);return db[_0x1f8a('0x30')][_0x1f8a('0x4b')](_0x155d73)['then'](handleEntityNotFound(_0x5b987e,null))[_0x1f8a('0x27')](respondWithResult(_0x5b987e,null))['catch'](handleError(_0x5b987e,null));};exports[_0x1f8a('0x4c')]=function(_0x309b29,_0x25c3f3){return db['WhatsappQueue'][_0x1f8a('0x4c')](_0x309b29['body'],{})[_0x1f8a('0x27')](function(_0xdbc8ac){var _0x2a5b72=_0x309b29[_0x1f8a('0x4d')][_0x1f8a('0x29')]({'plain':!![]});if(!_0x2a5b72)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2a5b72[_0x1f8a('0x4e')]===_0x1f8a('0x4d')){var _0x1796d4=_0xdbc8ac[_0x1f8a('0x29')]({'plain':!![]});var _0x5688e9=_0x1f8a('0x2a');return db['UserProfileSection'][_0x1f8a('0x4b')]({'where':{'name':_0x5688e9,'userProfileId':_0x2a5b72[_0x1f8a('0x4f')]},'raw':!![]})[_0x1f8a('0x27')](function(_0x54f931){if(_0x54f931&&_0x54f931[_0x1f8a('0x50')]===0x0){return db['UserProfileResource'][_0x1f8a('0x4c')]({'name':_0x1796d4['name'],'resourceId':_0x1796d4['id'],'type':_0x54f931[_0x1f8a('0x2d')],'sectionId':_0x54f931['id']},{})['then'](function(){return _0xdbc8ac;});}else{return _0xdbc8ac;}})[_0x1f8a('0x45')](function(_0x597cff){logger[_0x1f8a('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x597cff);throw _0x597cff;});}return _0xdbc8ac;})[_0x1f8a('0x27')](respondWithResult(_0x25c3f3,0xc9))['catch'](handleError(_0x25c3f3,null));};exports[_0x1f8a('0x26')]=function(_0x4e1685,_0x81ea6b){if(_0x4e1685['body']['id']){delete _0x4e1685[_0x1f8a('0x52')]['id'];}return db['WhatsappQueue'][_0x1f8a('0x4b')]({'where':{'id':_0x4e1685[_0x1f8a('0x47')]['id']}})[_0x1f8a('0x27')](handleEntityNotFound(_0x81ea6b,null))[_0x1f8a('0x27')](saveUpdates(_0x4e1685['body'],null))[_0x1f8a('0x27')](respondWithResult(_0x81ea6b,null))[_0x1f8a('0x45')](handleError(_0x81ea6b,null));};exports[_0x1f8a('0x28')]=function(_0x3c86e7,_0x206fdd){return db[_0x1f8a('0x30')]['find']({'where':{'id':_0x3c86e7['params']['id']}})[_0x1f8a('0x27')](handleEntityNotFound(_0x206fdd,null))[_0x1f8a('0x27')](removeEntity(_0x206fdd,null))[_0x1f8a('0x45')](handleError(_0x206fdd,null));};exports[_0x1f8a('0x53')]=function(_0x2c397d,_0x127843){return db['WhatsappQueue']['describe']()[_0x1f8a('0x27')](respondWithResult(_0x127843,null))[_0x1f8a('0x45')](handleError(_0x127843,null));};exports[_0x1f8a('0x54')]=function(_0x37190,_0x3e1258,_0xb4e063){var _0x14c359={'raw':!![],'where':{}},_0x4255e={},_0x414bab;return db[_0x1f8a('0x30')][_0x1f8a('0x55')]({'where':{'id':_0x37190[_0x1f8a('0x47')]['id']}})[_0x1f8a('0x27')](handleEntityNotFound(_0x3e1258,null))['then'](function(_0x103b14){if(_0x103b14){_0x414bab=_0x103b14['get']({'plain':!![]});_0x4255e[_0x1f8a('0x48')]=_[_0x1f8a('0x36')](db[_0x1f8a('0x56')][_0x1f8a('0x49')]);_0x4255e['query']=_[_0x1f8a('0x36')](_0x37190[_0x1f8a('0x35')]);_0x4255e[_0x1f8a('0x37')]=_[_0x1f8a('0x38')](_0x4255e[_0x1f8a('0x48')],_0x4255e[_0x1f8a('0x35')]);_0x14c359[_0x1f8a('0x39')]=_[_0x1f8a('0x38')](_0x4255e['model'],qs['fields'](_0x37190[_0x1f8a('0x35')][_0x1f8a('0x3a')]));_0x14c359[_0x1f8a('0x39')]=_0x14c359[_0x1f8a('0x39')][_0x1f8a('0x3b')]?_0x14c359[_0x1f8a('0x39')]:_0x4255e[_0x1f8a('0x48')];if(!_0x37190[_0x1f8a('0x35')][_0x1f8a('0x57')](_0x1f8a('0x3c'))){_0x14c359[_0x1f8a('0x1e')]=qs[_0x1f8a('0x1e')](_0x37190[_0x1f8a('0x35')][_0x1f8a('0x1e')]);_0x14c359[_0x1f8a('0x1d')]=qs[_0x1f8a('0x1d')](_0x37190[_0x1f8a('0x35')]['offset']);}_0x14c359[_0x1f8a('0x58')]=qs[_0x1f8a('0x3d')](_0x37190['query']['sort']);_0x14c359['where']=qs[_0x1f8a('0x37')](_[_0x1f8a('0x3f')](_0x37190[_0x1f8a('0x35')],_0x4255e[_0x1f8a('0x37')]));_0x14c359[_0x1f8a('0x3e')][_0x1f8a('0x59')]=_0x103b14['id'];if(_0x37190[_0x1f8a('0x35')][_0x1f8a('0x5a')]){_0x14c359[_0x1f8a('0x3e')]=_['merge'](_0x14c359[_0x1f8a('0x3e')],{'$or':_['map'](_0x14c359[_0x1f8a('0x39')],function(_0x578ae9){var _0x26b9b0={};_0x26b9b0[_0x578ae9]={'$like':'%'+_0x37190[_0x1f8a('0x35')][_0x1f8a('0x5a')]+'%'};return _0x26b9b0;})});}_0x14c359=_[_0x1f8a('0x41')]({},_0x14c359,_0x37190[_0x1f8a('0x5b')]);return db['UserWhatsappQueue'][_0x1f8a('0x5c')](_0x14c359);}})[_0x1f8a('0x27')](function(_0x35c8ec){if(_0x35c8ec){return db[_0x1f8a('0x5d')][_0x1f8a('0x5e')]({'where':{'id':_[_0x1f8a('0x34')](_0x35c8ec,_0x1f8a('0x5f')),'role':_0x1f8a('0x60')},'attributes':['id',_0x1f8a('0x2d'),_0x1f8a('0x61'),'updatedAt',_0x1f8a('0x62')]});}})[_0x1f8a('0x27')](function(_0x444d1b){if(_0x444d1b){return{'count':_0x444d1b[_0x1f8a('0x42')],'rows':_[_0x1f8a('0x34')](_0x444d1b['rows'],function(_0x4aae21){return{'membername':_0x4aae21['name'],'UserId':_0x4aae21['id'],'queue_name':_0x414bab[_0x1f8a('0x2d')],'WhatsappQueueId':_0x414bab['id'],'interface':util[_0x1f8a('0x63')]('%s/%s','SIP',_0x4aae21['name']),'penalty':0x0,'paused':_0x4aae21[_0x1f8a('0x61')],'createdAt':_0x4aae21[_0x1f8a('0x62')],'updatedAt':_0x4aae21[_0x1f8a('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1f8a('0x27')](respondWithFilteredResult(_0x3e1258,_0x14c359))[_0x1f8a('0x45')](handleError(_0x3e1258,null));};exports[_0x1f8a('0x65')]=function(_0x1eb6fe,_0x2faaf0,_0x23a3c1){var _0x52423f={};var _0x263eaf={};var _0x33a9f5;var _0x136d21;return db['WhatsappQueue']['findOne']({'where':{'id':_0x1eb6fe[_0x1f8a('0x47')]['id']}})[_0x1f8a('0x27')](handleEntityNotFound(_0x2faaf0,null))[_0x1f8a('0x27')](function(_0x1a9ef6){if(_0x1a9ef6){_0x33a9f5=_0x1a9ef6;_0x263eaf['model']=_[_0x1f8a('0x36')](db[_0x1f8a('0x66')]['rawAttributes']);_0x263eaf['query']=_['keys'](_0x1eb6fe[_0x1f8a('0x35')]);_0x263eaf[_0x1f8a('0x37')]=_[_0x1f8a('0x38')](_0x263eaf[_0x1f8a('0x48')],_0x263eaf['query']);_0x52423f[_0x1f8a('0x39')]=_[_0x1f8a('0x38')](_0x263eaf[_0x1f8a('0x48')],qs[_0x1f8a('0x3a')](_0x1eb6fe[_0x1f8a('0x35')][_0x1f8a('0x3a')]));_0x52423f[_0x1f8a('0x39')]=_0x52423f[_0x1f8a('0x39')]['length']?_0x52423f['attributes']:_0x263eaf[_0x1f8a('0x48')];_0x52423f[_0x1f8a('0x58')]=qs[_0x1f8a('0x3d')](_0x1eb6fe[_0x1f8a('0x35')][_0x1f8a('0x3d')]);_0x52423f[_0x1f8a('0x3e')]=qs[_0x1f8a('0x37')](_['pick'](_0x1eb6fe[_0x1f8a('0x35')],_0x263eaf[_0x1f8a('0x37')]));if(_0x1eb6fe['query'][_0x1f8a('0x5a')]){_0x52423f[_0x1f8a('0x3e')]=_['merge'](_0x52423f['where'],{'$or':_['map'](_0x52423f[_0x1f8a('0x39')],function(_0x459095){var _0x10b040={};_0x10b040[_0x459095]={'$like':'%'+_0x1eb6fe[_0x1f8a('0x35')][_0x1f8a('0x5a')]+'%'};return _0x10b040;})});}_0x52423f=_['merge']({},_0x52423f,_0x1eb6fe[_0x1f8a('0x5b')]);return _0x33a9f5[_0x1f8a('0x65')](_0x52423f);}})[_0x1f8a('0x27')](function(_0x3afbce){if(_0x3afbce){_0x136d21=_0x3afbce[_0x1f8a('0x3b')];if(!_0x1eb6fe[_0x1f8a('0x35')][_0x1f8a('0x57')]('nolimit')){_0x52423f[_0x1f8a('0x1e')]=qs[_0x1f8a('0x1e')](_0x1eb6fe[_0x1f8a('0x35')]['limit']);_0x52423f[_0x1f8a('0x1d')]=qs['offset'](_0x1eb6fe[_0x1f8a('0x35')][_0x1f8a('0x1d')]);}return _0x33a9f5[_0x1f8a('0x65')](_0x52423f);}})[_0x1f8a('0x27')](function(_0x45615a){if(_0x45615a){return _0x45615a?{'count':_0x136d21,'rows':_0x45615a}:null;}})['then'](respondWithResult(_0x2faaf0,null))[_0x1f8a('0x45')](handleError(_0x2faaf0,null));};exports[_0x1f8a('0x67')]=function(_0x16d802,_0x400d1c,_0x4ff014){var _0x86a061=_0x16d802[_0x1f8a('0x52')][_0x1f8a('0x68')];return db['Team'][_0x1f8a('0x5c')]({'where':{'id':_0x86a061},'attributes':['id'],'include':[{'model':db['User'],'as':_0x1f8a('0x69'),'attributes':['id',_0x1f8a('0x2d'),'online',_0x1f8a('0x6a'),_0x1f8a('0x6b')],'raw':!![]}]})[_0x1f8a('0x27')](function(_0x5beb38){if(_0x5beb38){var _0x595ff7=_[_0x1f8a('0x6c')](_0x5beb38,function(_0x27e711){var _0x2cfaa6=_0x27e711[_0x1f8a('0x29')]({'plain':!![]});return _0x2cfaa6[_0x1f8a('0x69')];});return db[_0x1f8a('0x30')]['find']({'where':{'id':_0x16d802[_0x1f8a('0x47')]['id']}})[_0x1f8a('0x27')](function(_0x3ea158){return db[_0x1f8a('0x6d')]['transaction'](function(_0x2063f2){return _0x3ea158[_0x1f8a('0x67')](_0x86a061,{'transaction':_0x2063f2})[_0x1f8a('0x27')](function(){return BPromise[_0x1f8a('0x6e')](_0x595ff7,function(_0x33aa51){return db[_0x1f8a('0x56')][_0x1f8a('0x6f')]({'where':{'UserId':_0x33aa51['id'],'WhatsappQueueId':_0x16d802[_0x1f8a('0x47')]['id']},'transaction':_0x2063f2});});})['then'](function(){_0x595ff7[_0x1f8a('0x70')](function(_0x2decc8){socket[_0x1f8a('0x71')](_0x1f8a('0x72'),{'UserId':_0x2decc8['id'],'WhatsappQueueId':_0x3ea158['id']});});});});});}})[_0x1f8a('0x27')](respondWithStatusCode(_0x400d1c,null))['catch'](handleError(_0x400d1c,null));};exports[_0x1f8a('0x73')]=function(_0x52db27,_0x1f93a4,_0x69aff4){return db[_0x1f8a('0x66')][_0x1f8a('0x5c')]({'where':{'id':_0x52db27['query'][_0x1f8a('0x68')]},'attributes':['id'],'include':[{'model':db[_0x1f8a('0x5d')],'as':_0x1f8a('0x69'),'attributes':['id'],'raw':!![]}]})[_0x1f8a('0x27')](handleEntityNotFound(_0x1f93a4,null))['then'](function(_0x26d79b){var _0x9a58ac=_[_0x1f8a('0x34')](_0x26d79b,'id');var _0x1638f2=[];var _0x18362f=[];var _0x1f82b9=squel['select']();_0x1f82b9[_0x1f8a('0x74')](_0x1f8a('0x75'))['from']('team_has_whatsapp_queues','tq')[_0x1f8a('0x76')](_0x1f8a('0x77'),'ut',_0x1f8a('0x78'))[_0x1f8a('0x3e')](_0x1f8a('0x79'),_0x52db27[_0x1f8a('0x47')]['id']);for(var _0x252476=0x0;_0x252476<_0x26d79b[_0x1f8a('0x3b')];_0x252476+=0x1){let _0x5a9c82=_0x26d79b[_0x252476];for(var _0x7df002=0x0;_0x7df002<_0x5a9c82['Agents'][_0x1f8a('0x3b')];_0x7df002+=0x1){let _0x238af3=_0x5a9c82[_0x1f8a('0x69')][_0x7df002];var _0x734e5b=_0x1f82b9[_0x1f8a('0x7a')]();_0x734e5b[_0x1f8a('0x3e')](_0x1f8a('0x7b'),_0x238af3['id']);_0x18362f[_0x1f8a('0x7c')](db[_0x1f8a('0x6d')]['query'](_0x734e5b[_0x1f8a('0x7d')](),{'type':db['sequelize'][_0x1f8a('0x7e')]['SELECT']})[_0x1f8a('0x27')](function(_0x3f9180){if(_0x3f9180[_0x1f8a('0x3b')]===0x1){return _0x238af3['id'];}else{var _0xbdef2f=_[_0x1f8a('0x7f')](_[_0x1f8a('0x34')](_0x3f9180,_0x1f8a('0x80')),function(_0x201a90){return _[_0x1f8a('0x81')](_0x9a58ac,_0x201a90);});if(_0xbdef2f){return _0x238af3['id'];}}}));}}return BPromise[_0x1f8a('0x82')](_0x18362f)[_0x1f8a('0x27')](function(_0x5180b2){_0x1638f2=_(_0x1638f2)[_0x1f8a('0x83')](_0x5180b2)[_0x1f8a('0x84')]()[_0x1f8a('0x85')]();return db['WhatsappQueue'][_0x1f8a('0x4b')]({'where':{'id':_0x52db27[_0x1f8a('0x47')]['id']}})['then'](function(_0x54a98f){return db[_0x1f8a('0x6d')][_0x1f8a('0x86')](function(_0x3f8485){return _0x54a98f[_0x1f8a('0x73')](_0x52db27[_0x1f8a('0x35')]['ids'],{'transaction':_0x3f8485})[_0x1f8a('0x27')](function(){if(!_['isEmpty'](_0x1638f2)){return _0x54a98f['removeAgents'](_0x1638f2,{'transaction':_0x3f8485});}})[_0x1f8a('0x27')](function(){_0x1638f2[_0x1f8a('0x70')](function(_0x4921ad){socket[_0x1f8a('0x71')](_0x1f8a('0x87'),{'UserId':_0x4921ad,'WhatsappQueueId':_0x54a98f['id']});});});});});});})[_0x1f8a('0x27')](respondWithStatusCode(_0x1f93a4,null))[_0x1f8a('0x45')](handleError(_0x1f93a4,null));};exports[_0x1f8a('0x88')]=function(_0x1f2db9,_0xa018a9,_0x23dd74){return db['WhatsappQueue'][_0x1f8a('0x4b')]({'where':{'id':_0x1f2db9[_0x1f8a('0x47')]['id']}})[_0x1f8a('0x27')](handleEntityNotFound(_0xa018a9,null))[_0x1f8a('0x27')](function(_0x286c35){if(_0x286c35){return _0x286c35[_0x1f8a('0x88')](_0x1f2db9[_0x1f8a('0x52')][_0x1f8a('0x68')],_['omit'](_0x1f2db9[_0x1f8a('0x52')],[_0x1f8a('0x68'),'id'])||{})[_0x1f8a('0x89')](function(_0x581fd4){for(var _0x227f6f=0x0;_0x227f6f<_0x1f2db9[_0x1f8a('0x52')][_0x1f8a('0x68')][_0x1f8a('0x3b')];_0x227f6f+=0x1){socket[_0x1f8a('0x71')]('userWhatsappQueue:save',{'UserId':Number(_0x1f2db9[_0x1f8a('0x52')][_0x1f8a('0x68')][_0x227f6f]),'WhatsappQueueId':Number(_0x1f2db9[_0x1f8a('0x47')]['id'])});}return _0x581fd4;});}})[_0x1f8a('0x27')](respondWithResult(_0xa018a9,null))[_0x1f8a('0x45')](handleError(_0xa018a9,null));};exports[_0x1f8a('0x8a')]=function(_0x15ddae,_0x2b22e2,_0xeb0bf6){return db[_0x1f8a('0x30')][_0x1f8a('0x4b')]({'where':{'id':_0x15ddae[_0x1f8a('0x47')]['id']}})[_0x1f8a('0x27')](handleEntityNotFound(_0x2b22e2,null))[_0x1f8a('0x27')](function(_0x3095c8){if(_0x3095c8){return _0x3095c8[_0x1f8a('0x8a')](_0x15ddae[_0x1f8a('0x35')][_0x1f8a('0x68')])[_0x1f8a('0x27')](function(){if(_[_0x1f8a('0x8b')](_0x15ddae[_0x1f8a('0x35')]['ids'])){for(var _0xa3604=0x0;_0xa3604<_0x15ddae['query'][_0x1f8a('0x68')][_0x1f8a('0x3b')];_0xa3604+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x15ddae[_0x1f8a('0x35')]['ids'][_0xa3604]),'WhatsappQueueId':Number(_0x15ddae['params']['id'])});}}else{socket[_0x1f8a('0x71')]('userWhatsappQueue:remove',{'UserId':Number(_0x15ddae[_0x1f8a('0x35')][_0x1f8a('0x68')]),'WhatsappQueueId':Number(_0x15ddae[_0x1f8a('0x47')]['id'])});}});}})[_0x1f8a('0x27')](respondWithStatusCode(_0x2b22e2,null))[_0x1f8a('0x45')](handleError(_0x2b22e2,null));};exports[_0x1f8a('0x8c')]=function(_0x2477b3,_0x367f7c,_0x40f26b){var _0x4103b4={};var _0x357fe9={};var _0x5f282e;var _0x4b351f;return db[_0x1f8a('0x30')][_0x1f8a('0x55')]({'where':{'id':_0x2477b3[_0x1f8a('0x47')]['id']}})['then'](handleEntityNotFound(_0x367f7c,null))[_0x1f8a('0x27')](function(_0xda9f34){if(_0xda9f34){_0x5f282e=_0xda9f34;_0x357fe9[_0x1f8a('0x48')]=_[_0x1f8a('0x36')](db['User']['rawAttributes']);_0x357fe9[_0x1f8a('0x35')]=_[_0x1f8a('0x36')](_0x2477b3['query']);_0x357fe9[_0x1f8a('0x37')]=_[_0x1f8a('0x38')](_0x357fe9[_0x1f8a('0x48')],_0x357fe9[_0x1f8a('0x35')]);_0x4103b4[_0x1f8a('0x39')]=_[_0x1f8a('0x38')](_0x357fe9[_0x1f8a('0x48')],qs['fields'](_0x2477b3[_0x1f8a('0x35')][_0x1f8a('0x3a')]));_0x4103b4[_0x1f8a('0x39')]=_0x4103b4[_0x1f8a('0x39')][_0x1f8a('0x3b')]?_0x4103b4['attributes']:_0x357fe9[_0x1f8a('0x48')];_0x4103b4[_0x1f8a('0x58')]=qs[_0x1f8a('0x3d')](_0x2477b3[_0x1f8a('0x35')][_0x1f8a('0x3d')]);_0x4103b4[_0x1f8a('0x3e')]=qs[_0x1f8a('0x37')](_[_0x1f8a('0x3f')](_0x2477b3[_0x1f8a('0x35')],_0x357fe9[_0x1f8a('0x37')]));if(_0x2477b3[_0x1f8a('0x35')][_0x1f8a('0x5a')]){_0x4103b4[_0x1f8a('0x3e')]=_[_0x1f8a('0x41')](_0x4103b4[_0x1f8a('0x3e')],{'$or':_[_0x1f8a('0x34')](_0x4103b4[_0x1f8a('0x39')],function(_0x555bf0){var _0x4bd0a6={};_0x4bd0a6[_0x555bf0]={'$like':'%'+_0x2477b3[_0x1f8a('0x35')]['filter']+'%'};return _0x4bd0a6;})});}_0x4103b4=_[_0x1f8a('0x41')]({},_0x4103b4,_0x2477b3['options']);return _0x5f282e[_0x1f8a('0x8c')](_0x4103b4);}})['then'](function(_0x4cd47b){if(_0x4cd47b){_0x4b351f=_0x4cd47b[_0x1f8a('0x3b')];if(!_0x2477b3[_0x1f8a('0x35')][_0x1f8a('0x57')](_0x1f8a('0x3c'))){_0x4103b4['limit']=qs[_0x1f8a('0x1e')](_0x2477b3[_0x1f8a('0x35')][_0x1f8a('0x1e')]);_0x4103b4['offset']=qs[_0x1f8a('0x1d')](_0x2477b3['query'][_0x1f8a('0x1d')]);}return _0x5f282e['getAgents'](_0x4103b4);}})['then'](function(_0x44c437){if(_0x44c437){return _0x44c437?{'count':_0x4b351f,'rows':_0x44c437}:null;}})[_0x1f8a('0x27')](respondWithResult(_0x367f7c,null))[_0x1f8a('0x45')](handleError(_0x367f7c,null));};
\ No newline at end of file
index 5edfc0f..14b629c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82d1=['WhatsappQueue','setMaxListeners','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x3b477a,_0x1e22ed){var _0x338aba=function(_0x1a2e74){while(--_0x1a2e74){_0x3b477a['push'](_0x3b477a['shift']());}};_0x338aba(++_0x1e22ed);}(_0x82d1,0xde));var _0x182d=function(_0x529431,_0x24727b){_0x529431=_0x529431-0x0;var _0x567696=_0x82d1[_0x529431];return _0x567696;};'use strict';var EventEmitter=require(_0x182d('0x0'));var WhatsappQueue=require(_0x182d('0x1'))['db'][_0x182d('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x182d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x182d('0x4')};function emitEvent(_0x1ad5d9){return function(_0x41bdb8,_0x527356,_0x175a4e){WhatsappQueueEvents[_0x182d('0x5')](_0x1ad5d9+':'+_0x41bdb8['id'],_0x41bdb8);WhatsappQueueEvents[_0x182d('0x5')](_0x1ad5d9,_0x41bdb8);_0x175a4e(null);};}for(var e in events){if(events[_0x182d('0x6')](e)){var event=events[e];WhatsappQueue[_0x182d('0x7')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x5868=['WhatsappQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x25d264,_0x2b49ba){var _0x309b3b=function(_0x36fb95){while(--_0x36fb95){_0x25d264['push'](_0x25d264['shift']());}};_0x309b3b(++_0x2b49ba);}(_0x5868,0x194));var _0x8586=function(_0x4d6d79,_0x3e4e8f){_0x4d6d79=_0x4d6d79-0x0;var _0x553ad2=_0x5868[_0x4d6d79];return _0x553ad2;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x8586('0x0'))['db'][_0x8586('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x8586('0x2')](0x0);var events={'afterCreate':_0x8586('0x3'),'afterUpdate':'update','afterDestroy':_0x8586('0x4')};function emitEvent(_0x464516){return function(_0xc808ce,_0x342e4e,_0x46dea5){WhatsappQueueEvents[_0x8586('0x5')](_0x464516+':'+_0xc808ce['id'],_0xc808ce);WhatsappQueueEvents[_0x8586('0x5')](_0x464516,_0xc808ce);_0x46dea5(null);};}for(var e in events){if(events[_0x8586('0x6')](e)){var event=events[e];WhatsappQueue[_0x8586('0x7')](e,emitEvent(event));}}module[_0x8586('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
index 898f1e1..b729200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb28f=['util','moment','request-promise','rimraf','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash'];(function(_0x37a2c8,_0x1cf8dd){var _0x37ffac=function(_0x5a36d9){while(--_0x5a36d9){_0x37a2c8['push'](_0x37a2c8['shift']());}};_0x37ffac(++_0x1cf8dd);}(_0xb28f,0x199));var _0xfb28=function(_0x2d89ce,_0x24d58d){_0x2d89ce=_0x2d89ce-0x0;var _0x3fad10=_0xb28f[_0x2d89ce];return _0x3fad10;};'use strict';var _=require(_0xfb28('0x0'));var util=require(_0xfb28('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xfb28('0x2'));var BPromise=require('bluebird');var rp=require(_0xfb28('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfb28('0x4'));var config=require('../../config/environment');var attributes=require(_0xfb28('0x5'));module[_0xfb28('0x6')]=function(_0xadf515,_0x920a3d){return _0xadf515[_0xfb28('0x7')](_0xfb28('0x8'),attributes,{'tableName':_0xfb28('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6488=['WhatsappQueue','whatsapp_queues','lodash','api','bluebird','request-promise','rimraf','./whatsappQueue.attributes','exports','define'];(function(_0x310dc2,_0x2299c4){var _0x24980f=function(_0xde9b88){while(--_0xde9b88){_0x310dc2['push'](_0x310dc2['shift']());}};_0x24980f(++_0x2299c4);}(_0x6488,0x19c));var _0x8648=function(_0x667081,_0x1d02b8){_0x667081=_0x667081-0x0;var _0x1c1e88=_0x6488[_0x667081];return _0x1c1e88;};'use strict';var _=require(_0x8648('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8648('0x1'));var moment=require('moment');var BPromise=require(_0x8648('0x2'));var rp=require(_0x8648('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8648('0x4'));var config=require('../../config/environment');var attributes=require(_0x8648('0x5'));module[_0x8648('0x6')]=function(_0x3809c1,_0x1e55e8){return _0x3809c1[_0x8648('0x7')](_0x8648('0x8'),attributes,{'tableName':_0x8648('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42df064..3a1a2c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f61=['GetWhatsappQueue','findAll','options','raw','where','limit','include','map','model','attributes','then','debug','WhatsappQueue','ShowWhatsappQueue','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','info','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappQueue,\x20%s,\x20%s','message','result','catch'];(function(_0x4bfb94,_0x57e844){var _0x55bde6=function(_0x2ea3c1){while(--_0x2ea3c1){_0x4bfb94['push'](_0x4bfb94['shift']());}};_0x55bde6(++_0x57e844);}(_0x3f61,0x194));var _0x13f6=function(_0x3635ca,_0x4113db){_0x3635ca=_0x3635ca-0x0;var _0x521ae2=_0x3f61[_0x3635ca];return _0x521ae2;};'use strict';var _=require('lodash');var util=require(_0x13f6('0x0'));var moment=require(_0x13f6('0x1'));var BPromise=require(_0x13f6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13f6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x13f6('0x4'));var logger=require('../../config/logger')(_0x13f6('0x5'));var config=require('../../config/environment');var jayson=require(_0x13f6('0x6'));var client=jayson[_0x13f6('0x7')][_0x13f6('0x8')]({'port':0x232a});config[_0x13f6('0x9')]=_[_0x13f6('0xa')](config[_0x13f6('0x9')],{'host':_0x13f6('0xb'),'port':0x18eb});var socket=require(_0x13f6('0xc'))(new Redis(config[_0x13f6('0x9')]));require(_0x13f6('0xd'))[_0x13f6('0xe')](socket);function respondWithRpcPromise(_0x163063,_0x155dc3,_0x502ea8){return new BPromise(function(_0x1d9798,_0x1d8e77){return client['request'](_0x163063,_0x502ea8)['then'](function(_0x468f64){logger[_0x13f6('0xf')]('WhatsappQueue,\x20%s,\x20%s',_0x155dc3,'request\x20sent');logger['debug'](_0x13f6('0x10'),_0x155dc3,_0x13f6('0x11'),JSON[_0x13f6('0x12')](_0x468f64));if(_0x468f64[_0x13f6('0x13')]){if(_0x468f64[_0x13f6('0x13')][_0x13f6('0x14')]===0x1f4){logger['error'](_0x13f6('0x15'),_0x155dc3,_0x468f64[_0x13f6('0x13')][_0x13f6('0x16')]);return _0x1d8e77(_0x468f64[_0x13f6('0x13')][_0x13f6('0x16')]);}logger[_0x13f6('0x13')](_0x13f6('0x15'),_0x155dc3,_0x468f64['error'][_0x13f6('0x16')]);return _0x1d9798(_0x468f64[_0x13f6('0x13')]['message']);}else{logger['info'](_0x13f6('0x15'),_0x155dc3,'request\x20sent');_0x1d9798(_0x468f64[_0x13f6('0x17')]['message']);}})[_0x13f6('0x18')](function(_0x2d99a3){logger[_0x13f6('0x13')](_0x13f6('0x15'),_0x155dc3,_0x2d99a3);_0x1d8e77(_0x2d99a3);});});}exports[_0x13f6('0x19')]=function(_0xeb0780){var _0x503100=this;return new Promise(function(_0x549ecd,_0x432069){return db['WhatsappQueue'][_0x13f6('0x1a')]({'raw':_0xeb0780[_0x13f6('0x1b')]?_0xeb0780['options'][_0x13f6('0x1c')]===undefined?!![]:![]:!![],'where':_0xeb0780[_0x13f6('0x1b')]?_0xeb0780[_0x13f6('0x1b')][_0x13f6('0x1d')]||null:null,'attributes':_0xeb0780[_0x13f6('0x1b')]?_0xeb0780[_0x13f6('0x1b')]['attributes']||null:null,'limit':_0xeb0780[_0x13f6('0x1b')]?_0xeb0780[_0x13f6('0x1b')][_0x13f6('0x1e')]||null:null,'include':_0xeb0780[_0x13f6('0x1b')]?_0xeb0780[_0x13f6('0x1b')][_0x13f6('0x1f')]?_[_0x13f6('0x20')](_0xeb0780[_0x13f6('0x1b')][_0x13f6('0x1f')],function(_0x7f3072){return{'model':db[_0x7f3072['model']],'as':_0x7f3072['as'],'attributes':_0x7f3072['attributes'],'include':_0x7f3072['include']?_[_0x13f6('0x20')](_0x7f3072[_0x13f6('0x1f')],function(_0x1542ce){return{'model':db[_0x1542ce[_0x13f6('0x21')]],'as':_0x1542ce['as'],'attributes':_0x1542ce['attributes'],'include':_0x1542ce['include']?_[_0x13f6('0x20')](_0x1542ce[_0x13f6('0x1f')],function(_0x472cc1){return{'model':db[_0x472cc1[_0x13f6('0x21')]],'as':_0x472cc1['as'],'attributes':_0x472cc1[_0x13f6('0x22')]};}):[]};}):[]};}):[]:[]})[_0x13f6('0x23')](function(_0x1469c3){logger[_0x13f6('0xf')]('GetWhatsappQueue',_0xeb0780);logger[_0x13f6('0x24')]('GetWhatsappQueue',_0xeb0780,JSON[_0x13f6('0x12')](_0x1469c3));_0x549ecd(_0x1469c3);})[_0x13f6('0x18')](function(_0x3095b9){logger[_0x13f6('0x13')](_0x13f6('0x19'),_0x3095b9[_0x13f6('0x16')],_0xeb0780);_0x432069(_0x503100[_0x13f6('0x13')](0x1f4,_0x3095b9[_0x13f6('0x16')]));});});};exports['ShowWhatsappQueue']=function(_0x185a2a){var _0x4d97da=this;return new Promise(function(_0x423b29,_0x4bba75){return db[_0x13f6('0x25')]['find']({'raw':_0x185a2a['options']?_0x185a2a[_0x13f6('0x1b')][_0x13f6('0x1c')]===undefined?!![]:![]:!![],'where':_0x185a2a[_0x13f6('0x1b')]?_0x185a2a['options']['where']||null:null,'attributes':_0x185a2a[_0x13f6('0x1b')]?_0x185a2a[_0x13f6('0x1b')][_0x13f6('0x22')]||null:null,'include':_0x185a2a[_0x13f6('0x1b')]?_0x185a2a['options'][_0x13f6('0x1f')]?_[_0x13f6('0x20')](_0x185a2a[_0x13f6('0x1b')]['include'],function(_0x53935c){return{'model':db[_0x53935c[_0x13f6('0x21')]],'as':_0x53935c['as'],'attributes':_0x53935c['attributes'],'include':_0x53935c[_0x13f6('0x1f')]?_[_0x13f6('0x20')](_0x53935c['include'],function(_0x2df460){return{'model':db[_0x2df460[_0x13f6('0x21')]],'as':_0x2df460['as'],'attributes':_0x2df460[_0x13f6('0x22')],'include':_0x2df460[_0x13f6('0x1f')]?_[_0x13f6('0x20')](_0x2df460['include'],function(_0x59f32d){return{'model':db[_0x59f32d['model']],'as':_0x59f32d['as'],'attributes':_0x59f32d[_0x13f6('0x22')]};}):[]};}):[]};}):[]:[]})[_0x13f6('0x23')](function(_0x42231d){logger[_0x13f6('0xf')]('ShowWhatsappQueue',_0x185a2a);logger[_0x13f6('0x24')](_0x13f6('0x26'),_0x185a2a,JSON[_0x13f6('0x12')](_0x42231d));_0x423b29(_0x42231d);})[_0x13f6('0x18')](function(_0x212880){logger[_0x13f6('0x13')](_0x13f6('0x26'),_0x212880[_0x13f6('0x16')],_0x185a2a);_0x4bba75(_0x4d97da[_0x13f6('0x13')](0x1f4,_0x212880['message']));});});};
\ No newline at end of file
+var _0xdad5=['ShowWhatsappQueue','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','socket.io-emitter','./whatsappQueue.socket','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','message','info','catch','GetWhatsappQueue','options','where','attributes','include','map','model','stringify','WhatsappQueue','find'];(function(_0x1f9f5f,_0x509fb7){var _0x51d649=function(_0x4a5285){while(--_0x4a5285){_0x1f9f5f['push'](_0x1f9f5f['shift']());}};_0x51d649(++_0x509fb7);}(_0xdad5,0xcd));var _0x5dad=function(_0x293aae,_0xfab260){_0x293aae=_0x293aae-0x0;var _0x3b7abd=_0xdad5[_0x293aae];return _0x3b7abd;};'use strict';var _=require(_0x5dad('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5dad('0x1'));var rs=require(_0x5dad('0x2'));var fs=require('fs');var Redis=require(_0x5dad('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5dad('0x4'));var logger=require(_0x5dad('0x5'))(_0x5dad('0x6'));var config=require(_0x5dad('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5dad('0x8')][_0x5dad('0x9')]({'port':0x232a});config['redis']=_[_0x5dad('0xa')](config[_0x5dad('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x5dad('0xc'))(new Redis(config['redis']));require(_0x5dad('0xd'))['register'](socket);function respondWithRpcPromise(_0x3ce3bd,_0x50c113,_0x13f8e6){return new BPromise(function(_0x1558e3,_0x3184a2){return client['request'](_0x3ce3bd,_0x13f8e6)[_0x5dad('0xe')](function(_0x2bb82a){logger['info'](_0x5dad('0xf'),_0x50c113,_0x5dad('0x10'));logger[_0x5dad('0x11')](_0x5dad('0x12'),_0x50c113,_0x5dad('0x10'),JSON['stringify'](_0x2bb82a));if(_0x2bb82a['error']){if(_0x2bb82a[_0x5dad('0x13')]['code']===0x1f4){logger[_0x5dad('0x13')](_0x5dad('0xf'),_0x50c113,_0x2bb82a[_0x5dad('0x13')][_0x5dad('0x14')]);return _0x3184a2(_0x2bb82a['error']['message']);}logger[_0x5dad('0x13')](_0x5dad('0xf'),_0x50c113,_0x2bb82a[_0x5dad('0x13')][_0x5dad('0x14')]);return _0x1558e3(_0x2bb82a['error'][_0x5dad('0x14')]);}else{logger[_0x5dad('0x15')](_0x5dad('0xf'),_0x50c113,'request\x20sent');_0x1558e3(_0x2bb82a['result'][_0x5dad('0x14')]);}})[_0x5dad('0x16')](function(_0x40fa1d){logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x50c113,_0x40fa1d);_0x3184a2(_0x40fa1d);});});}exports[_0x5dad('0x17')]=function(_0x14ef62){var _0x40f5b1=this;return new Promise(function(_0x4cf41c,_0x21ce2d){return db['WhatsappQueue']['findAll']({'raw':_0x14ef62['options']?_0x14ef62[_0x5dad('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x14ef62['options']?_0x14ef62[_0x5dad('0x18')][_0x5dad('0x19')]||null:null,'attributes':_0x14ef62[_0x5dad('0x18')]?_0x14ef62[_0x5dad('0x18')][_0x5dad('0x1a')]||null:null,'limit':_0x14ef62[_0x5dad('0x18')]?_0x14ef62[_0x5dad('0x18')]['limit']||null:null,'include':_0x14ef62[_0x5dad('0x18')]?_0x14ef62[_0x5dad('0x18')][_0x5dad('0x1b')]?_[_0x5dad('0x1c')](_0x14ef62['options']['include'],function(_0x4f75ae){return{'model':db[_0x4f75ae[_0x5dad('0x1d')]],'as':_0x4f75ae['as'],'attributes':_0x4f75ae[_0x5dad('0x1a')],'include':_0x4f75ae['include']?_[_0x5dad('0x1c')](_0x4f75ae[_0x5dad('0x1b')],function(_0x2fe9a9){return{'model':db[_0x2fe9a9['model']],'as':_0x2fe9a9['as'],'attributes':_0x2fe9a9[_0x5dad('0x1a')],'include':_0x2fe9a9[_0x5dad('0x1b')]?_[_0x5dad('0x1c')](_0x2fe9a9[_0x5dad('0x1b')],function(_0x18e77c){return{'model':db[_0x18e77c[_0x5dad('0x1d')]],'as':_0x18e77c['as'],'attributes':_0x18e77c[_0x5dad('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5dad('0xe')](function(_0x8e5ff){logger[_0x5dad('0x15')](_0x5dad('0x17'),_0x14ef62);logger['debug'](_0x5dad('0x17'),_0x14ef62,JSON[_0x5dad('0x1e')](_0x8e5ff));_0x4cf41c(_0x8e5ff);})[_0x5dad('0x16')](function(_0x54981d){logger[_0x5dad('0x13')]('GetWhatsappQueue',_0x54981d[_0x5dad('0x14')],_0x14ef62);_0x21ce2d(_0x40f5b1[_0x5dad('0x13')](0x1f4,_0x54981d['message']));});});};exports['ShowWhatsappQueue']=function(_0x114e37){var _0x844dca=this;return new Promise(function(_0x5d10b6,_0x19ae69){return db[_0x5dad('0x1f')][_0x5dad('0x20')]({'raw':_0x114e37[_0x5dad('0x18')]?_0x114e37[_0x5dad('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x114e37[_0x5dad('0x18')]?_0x114e37[_0x5dad('0x18')][_0x5dad('0x19')]||null:null,'attributes':_0x114e37['options']?_0x114e37[_0x5dad('0x18')]['attributes']||null:null,'include':_0x114e37[_0x5dad('0x18')]?_0x114e37[_0x5dad('0x18')][_0x5dad('0x1b')]?_[_0x5dad('0x1c')](_0x114e37['options'][_0x5dad('0x1b')],function(_0x322697){return{'model':db[_0x322697[_0x5dad('0x1d')]],'as':_0x322697['as'],'attributes':_0x322697[_0x5dad('0x1a')],'include':_0x322697[_0x5dad('0x1b')]?_['map'](_0x322697['include'],function(_0x191bea){return{'model':db[_0x191bea[_0x5dad('0x1d')]],'as':_0x191bea['as'],'attributes':_0x191bea[_0x5dad('0x1a')],'include':_0x191bea[_0x5dad('0x1b')]?_['map'](_0x191bea[_0x5dad('0x1b')],function(_0x4c06c7){return{'model':db[_0x4c06c7[_0x5dad('0x1d')]],'as':_0x4c06c7['as'],'attributes':_0x4c06c7[_0x5dad('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4674a6){logger['info']('ShowWhatsappQueue',_0x114e37);logger['debug'](_0x5dad('0x21'),_0x114e37,JSON[_0x5dad('0x1e')](_0x4674a6));_0x5d10b6(_0x4674a6);})['catch'](function(_0x48867f){logger[_0x5dad('0x13')]('ShowWhatsappQueue',_0x48867f[_0x5dad('0x14')],_0x114e37);_0x19ae69(_0x844dca[_0x5dad('0x13')](0x1f4,_0x48867f[_0x5dad('0x14')]));});});};
\ No newline at end of file
index 98c650b..92c2ddc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83bb=['./whatsappQueue.events','remove','emit','removeListener','register','length'];(function(_0x37870d,_0x356e02){var _0x1ae695=function(_0x508f6c){while(--_0x508f6c){_0x37870d['push'](_0x37870d['shift']());}};_0x1ae695(++_0x356e02);}(_0x83bb,0x14a));var _0xb83b=function(_0x7ee248,_0x474113){_0x7ee248=_0x7ee248-0x0;var _0x3a0167=_0x83bb[_0x7ee248];return _0x3a0167;};'use strict';var WhatsappQueueEvents=require(_0xb83b('0x0'));var events=['save',_0xb83b('0x1'),'update'];function createListener(_0x294e60,_0x5a08cb){return function(_0x50c61d){_0x5a08cb[_0xb83b('0x2')](_0x294e60,_0x50c61d);};}function removeListener(_0x3c4967,_0x26829c){return function(){WhatsappQueueEvents[_0xb83b('0x3')](_0x3c4967,_0x26829c);};}exports[_0xb83b('0x4')]=function(_0x47d092){for(var _0x34b23e=0x0,_0x1a9d5e=events[_0xb83b('0x5')];_0x34b23e<_0x1a9d5e;_0x34b23e++){var _0x4cf9cb=events[_0x34b23e];var _0x20b80f=createListener('whatsappQueue:'+_0x4cf9cb,_0x47d092);WhatsappQueueEvents['on'](_0x4cf9cb,_0x20b80f);}};
\ No newline at end of file
+var _0x0472=['save','update','emit','removeListener','register','length','whatsappQueue:'];(function(_0x2b8d9a,_0x567a67){var _0x879dd=function(_0xecaf){while(--_0xecaf){_0x2b8d9a['push'](_0x2b8d9a['shift']());}};_0x879dd(++_0x567a67);}(_0x0472,0x10a));var _0x2047=function(_0xf29c3a,_0x3f43be){_0xf29c3a=_0xf29c3a-0x0;var _0x5632c9=_0x0472[_0xf29c3a];return _0x5632c9;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x2047('0x0'),'remove',_0x2047('0x1')];function createListener(_0x461ee0,_0x48d430){return function(_0x437ec6){_0x48d430[_0x2047('0x2')](_0x461ee0,_0x437ec6);};}function removeListener(_0x3865e8,_0x185478){return function(){WhatsappQueueEvents[_0x2047('0x3')](_0x3865e8,_0x185478);};}exports[_0x2047('0x4')]=function(_0x2c47be){for(var _0x1c45c4=0x0,_0x38223d=events[_0x2047('0x5')];_0x1c45c4<_0x38223d;_0x1c45c4++){var _0x50873e=events[_0x1c45c4];var _0x41ca25=createListener(_0x2047('0x6')+_0x50873e,_0x2c47be);WhatsappQueueEvents['on'](_0x50873e,_0x41ca25);}};
\ No newline at end of file
index ae183e9..54e95c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a0=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','destroy','util','path','connect-timeout','Router'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x30a0,0xc4));var _0x030a=function(_0xf1d537,_0x112dad){_0xf1d537=_0xf1d537-0x0;var _0x14d243=_0x30a0[_0xf1d537];return _0x14d243;};'use strict';var multer=require('multer');var util=require(_0x030a('0x0'));var path=require(_0x030a('0x1'));var timeout=require(_0x030a('0x2'));var express=require('express');var router=express[_0x030a('0x3')]();var fs_extra=require(_0x030a('0x4'));var auth=require(_0x030a('0x5'));var interaction=require(_0x030a('0x6'));var config=require(_0x030a('0x7'));var controller=require(_0x030a('0x8'));router[_0x030a('0x9')]('/',auth[_0x030a('0xa')](),controller[_0x030a('0xb')]);router[_0x030a('0x9')](_0x030a('0xc'),auth[_0x030a('0xa')](),controller[_0x030a('0xd')]);router[_0x030a('0x9')](_0x030a('0xe'),auth[_0x030a('0xa')](),controller[_0x030a('0xf')]);router[_0x030a('0x10')]('/',auth[_0x030a('0xa')](),controller[_0x030a('0x11')]);router[_0x030a('0x12')](_0x030a('0xe'),auth[_0x030a('0xa')](),controller['update']);router['delete'](_0x030a('0xe'),auth['isAuthenticated'](),controller[_0x030a('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x06a6=['connect-timeout','express','Router','fs-extra','../../config/environment','./whatsappQueueReport.controller','get','index','isAuthenticated','show','post','create','put','/:id','update','destroy','multer','util','path'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0x06a6,0x12d));var _0x606a=function(_0x1c9671,_0x3cf964){_0x1c9671=_0x1c9671-0x0;var _0x1dd552=_0x06a6[_0x1c9671];return _0x1dd552;};'use strict';var multer=require(_0x606a('0x0'));var util=require(_0x606a('0x1'));var path=require(_0x606a('0x2'));var timeout=require(_0x606a('0x3'));var express=require(_0x606a('0x4'));var router=express[_0x606a('0x5')]();var fs_extra=require(_0x606a('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x606a('0x7'));var controller=require(_0x606a('0x8'));router[_0x606a('0x9')]('/',auth['isAuthenticated'](),controller[_0x606a('0xa')]);router[_0x606a('0x9')]('/describe',auth[_0x606a('0xb')](),controller['describe']);router['get']('/:id',auth[_0x606a('0xb')](),controller[_0x606a('0xc')]);router[_0x606a('0xd')]('/',auth[_0x606a('0xb')](),controller[_0x606a('0xe')]);router[_0x606a('0xf')](_0x606a('0x10'),auth['isAuthenticated'](),controller[_0x606a('0x11')]);router['delete'](_0x606a('0x10'),auth[_0x606a('0xb')](),controller[_0x606a('0x12')]);module['exports']=router;
\ No newline at end of file
index 7003d50..a99360e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x360d4d,_0x4fac84){var _0x4beded=function(_0x11cce6){while(--_0x11cce6){_0x360d4d['push'](_0x360d4d['shift']());}};_0x4beded(++_0x4fac84);}(_0x7a54,0x106));var _0x47a5=function(_0x4c39ae,_0xff4803){_0x4c39ae=_0x4c39ae-0x0;var _0x32a03d=_0x7a54[_0x4c39ae];return _0x32a03d;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x532e8b,_0x564e4d){var _0x202202=function(_0x18dd0f){while(--_0x18dd0f){_0x532e8b['push'](_0x532e8b['shift']());}};_0x202202(++_0x564e4d);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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 e5fe6a3..69e2817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['mustache','sox','to-csv','ejs','squel','crypto','jsforce','querystring','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x14a0,0x8e));var _0x014a=function(_0x9db5d3,_0x4eea5e){_0x9db5d3=_0x9db5d3-0x0;var _0x477a81=_0x14a0[_0x9db5d3];return _0x477a81;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x014a('0x0'));var zipdir=require(_0x014a('0x1'));var jsonpatch=require(_0x014a('0x2'));var rp=require(_0x014a('0x3'));var moment=require(_0x014a('0x4'));var BPromise=require(_0x014a('0x5'));var Mustache=require(_0x014a('0x6'));var util=require('util');var path=require('path');var sox=require(_0x014a('0x7'));var csv=require(_0x014a('0x8'));var ejs=require(_0x014a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x014a('0xa'));var crypto=require(_0x014a('0xb'));var jsforce=require(_0x014a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x014a('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x014a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x014a('0xf'))(_0x014a('0x10'));var utils=require('../../config/utils');var config=require(_0x014a('0x11'));var licenseUtil=require(_0x014a('0x12'));var db=require(_0x014a('0x13'))['db'];function respondWithStatusCode(_0x43bfeb,_0x1bcd1){_0x1bcd1=_0x1bcd1||0xcc;return function(_0x20cb56){if(_0x20cb56){return _0x43bfeb[_0x014a('0x14')](_0x1bcd1);}return _0x43bfeb[_0x014a('0x15')](_0x1bcd1)[_0x014a('0x16')]();};}function respondWithResult(_0x71535d,_0x45cd80){_0x45cd80=_0x45cd80||0xc8;return function(_0x3c54c8){if(_0x3c54c8){return _0x71535d['status'](_0x45cd80)[_0x014a('0x17')](_0x3c54c8);}};}function respondWithFilteredResult(_0x3cf92f,_0x59f207){return function(_0x3a836f){if(_0x3a836f){var _0x128c46=typeof _0x59f207['offset']===_0x014a('0x18')&&typeof _0x59f207[_0x014a('0x19')]===_0x014a('0x18');var _0x12da95=_0x3a836f[_0x014a('0x1a')];var _0x12d339=_0x128c46?0x0:_0x59f207[_0x014a('0x1b')];var _0x263b07=_0x128c46?_0x3a836f[_0x014a('0x1a')]:_0x59f207[_0x014a('0x1b')]+_0x59f207[_0x014a('0x19')];var _0x89e132;if(_0x263b07>=_0x12da95){_0x263b07=_0x12da95;_0x89e132=0xc8;}else{_0x89e132=0xce;}_0x3cf92f[_0x014a('0x15')](_0x89e132);return _0x3cf92f[_0x014a('0x1c')]('Content-Range',_0x12d339+'-'+_0x263b07+'/'+_0x12da95)[_0x014a('0x17')](_0x3a836f);}return null;};}function patchUpdates(_0x109a9c){return function(_0x11065f){try{jsonpatch[_0x014a('0x1d')](_0x11065f,_0x109a9c,!![]);}catch(_0xc9a563){return BPromise[_0x014a('0x1e')](_0xc9a563);}return _0x11065f[_0x014a('0x1f')]();};}function saveUpdates(_0x3dd2d0,_0x290b86){return function(_0x486e66){if(_0x486e66){return _0x486e66[_0x014a('0x20')](_0x3dd2d0)['then'](function(_0x1a1318){return _0x1a1318;});}return null;};}function removeEntity(_0x26718b,_0x44d921){return function(_0x36d52b){if(_0x36d52b){return _0x36d52b[_0x014a('0x21')]()[_0x014a('0x22')](function(){_0x26718b[_0x014a('0x15')](0xcc)[_0x014a('0x16')]();});}};}function handleEntityNotFound(_0x165a42,_0x4c2627){return function(_0x3b4b92){if(!_0x3b4b92){_0x165a42['sendStatus'](0x194);}return _0x3b4b92;};}function handleError(_0x39a432,_0x28701e){_0x28701e=_0x28701e||0x1f4;return function(_0x4f1c44){logger['error'](_0x4f1c44[_0x014a('0x23')]);if(_0x4f1c44[_0x014a('0x24')]){delete _0x4f1c44[_0x014a('0x24')];}_0x39a432['status'](_0x28701e)[_0x014a('0x25')](_0x4f1c44);};}exports[_0x014a('0x26')]=function(_0x598179,_0x31dc95){var _0x2560a6={},_0x496040={},_0x4f9c1c={'count':0x0,'rows':[]};var _0x397850=_[_0x014a('0x27')](db[_0x014a('0x28')][_0x014a('0x29')],function(_0x4ea00c){return{'name':_0x4ea00c[_0x014a('0x2a')],'type':_0x4ea00c[_0x014a('0x2b')][_0x014a('0x2c')]};});_0x496040[_0x014a('0x2d')]=_[_0x014a('0x27')](_0x397850,_0x014a('0x24'));_0x496040[_0x014a('0x2e')]=_[_0x014a('0x2f')](_0x598179[_0x014a('0x2e')]);_0x496040[_0x014a('0x30')]=_[_0x014a('0x31')](_0x496040['model'],_0x496040[_0x014a('0x2e')]);_0x2560a6[_0x014a('0x32')]=_[_0x014a('0x31')](_0x496040[_0x014a('0x2d')],qs[_0x014a('0x33')](_0x598179[_0x014a('0x2e')][_0x014a('0x33')]));_0x2560a6['attributes']=_0x2560a6[_0x014a('0x32')][_0x014a('0x34')]?_0x2560a6['attributes']:_0x496040[_0x014a('0x2d')];if(!_0x598179[_0x014a('0x2e')][_0x014a('0x35')](_0x014a('0x36'))){_0x2560a6[_0x014a('0x19')]=qs[_0x014a('0x19')](_0x598179[_0x014a('0x2e')][_0x014a('0x19')]);_0x2560a6['offset']=qs[_0x014a('0x1b')](_0x598179[_0x014a('0x2e')][_0x014a('0x1b')]);}_0x2560a6[_0x014a('0x37')]=qs['sort'](_0x598179[_0x014a('0x2e')][_0x014a('0x38')]);_0x2560a6[_0x014a('0x39')]=qs[_0x014a('0x30')](_[_0x014a('0x3a')](_0x598179[_0x014a('0x2e')],_0x496040[_0x014a('0x30')]),_0x397850);if(_0x598179[_0x014a('0x2e')][_0x014a('0x3b')]){_0x2560a6['where']=_[_0x014a('0x3c')](_0x2560a6['where'],{'$or':_[_0x014a('0x27')](_0x397850,function(_0xc11492){if(_0xc11492[_0x014a('0x2b')]!==_0x014a('0x3d')){var _0x43376c={};_0x43376c[_0xc11492['name']]={'$like':'%'+_0x598179[_0x014a('0x2e')][_0x014a('0x3b')]+'%'};return _0x43376c;}})});}_0x2560a6=_['merge']({},_0x2560a6,_0x598179[_0x014a('0x3e')]);var _0x2990df={'where':_0x2560a6[_0x014a('0x39')]};return db[_0x014a('0x28')][_0x014a('0x1a')](_0x2990df)[_0x014a('0x22')](function(_0x17b1b6){_0x4f9c1c[_0x014a('0x1a')]=_0x17b1b6;if(_0x598179[_0x014a('0x2e')]['includeAll']){_0x2560a6[_0x014a('0x3f')]=[{'all':!![]}];}return db[_0x014a('0x28')][_0x014a('0x40')](_0x2560a6);})[_0x014a('0x22')](function(_0x5f1a91){_0x4f9c1c[_0x014a('0x41')]=_0x5f1a91;return _0x4f9c1c;})[_0x014a('0x22')](respondWithFilteredResult(_0x31dc95,_0x2560a6))[_0x014a('0x42')](handleError(_0x31dc95,null));};exports[_0x014a('0x43')]=function(_0x1dc647,_0x430a56){var _0x5f2969={'raw':!![],'where':{'id':_0x1dc647[_0x014a('0x44')]['id']}},_0x361866={};_0x361866['model']=_[_0x014a('0x2f')](db[_0x014a('0x28')][_0x014a('0x29')]);_0x361866['query']=_[_0x014a('0x2f')](_0x1dc647['query']);_0x361866['filters']=_[_0x014a('0x31')](_0x361866[_0x014a('0x2d')],_0x361866['query']);_0x5f2969[_0x014a('0x32')]=_[_0x014a('0x31')](_0x361866[_0x014a('0x2d')],qs[_0x014a('0x33')](_0x1dc647[_0x014a('0x2e')][_0x014a('0x33')]));_0x5f2969['attributes']=_0x5f2969[_0x014a('0x32')][_0x014a('0x34')]?_0x5f2969[_0x014a('0x32')]:_0x361866['model'];if(_0x1dc647['query'][_0x014a('0x45')]){_0x5f2969['include']=[{'all':!![]}];}_0x5f2969=_['merge']({},_0x5f2969,_0x1dc647[_0x014a('0x3e')]);return db['WhatsappQueueReport'][_0x014a('0x46')](_0x5f2969)[_0x014a('0x22')](handleEntityNotFound(_0x430a56,null))[_0x014a('0x22')](respondWithResult(_0x430a56,null))['catch'](handleError(_0x430a56,null));};exports[_0x014a('0x47')]=function(_0x23be18,_0x12cd9b){return db[_0x014a('0x28')][_0x014a('0x47')](_0x23be18[_0x014a('0x48')],{})['then'](respondWithResult(_0x12cd9b,0xc9))[_0x014a('0x42')](handleError(_0x12cd9b,null));};exports[_0x014a('0x20')]=function(_0x5a861c,_0x1a4df9){if(_0x5a861c[_0x014a('0x48')]['id']){delete _0x5a861c[_0x014a('0x48')]['id'];}return db[_0x014a('0x28')][_0x014a('0x46')]({'where':{'id':_0x5a861c[_0x014a('0x44')]['id']}})[_0x014a('0x22')](handleEntityNotFound(_0x1a4df9,null))[_0x014a('0x22')](saveUpdates(_0x5a861c['body'],null))[_0x014a('0x22')](respondWithResult(_0x1a4df9,null))[_0x014a('0x42')](handleError(_0x1a4df9,null));};exports[_0x014a('0x21')]=function(_0x135e7e,_0x312c7a){return db['WhatsappQueueReport'][_0x014a('0x46')]({'where':{'id':_0x135e7e['params']['id']}})[_0x014a('0x22')](handleEntityNotFound(_0x312c7a,null))[_0x014a('0x22')](removeEntity(_0x312c7a,null))[_0x014a('0x42')](handleError(_0x312c7a,null));};exports[_0x014a('0x49')]=function(_0x3caa6e,_0x4f8547){return db['WhatsappQueueReport']['describe']()['then'](respondWithResult(_0x4f8547,null))[_0x014a('0x42')](handleError(_0x4f8547,null));};
\ No newline at end of file
+var _0xbee3=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','map','WhatsappQueueReport','rawAttributes','type','key','model','keys','query','attributes','intersection','fields','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','body','find','describe','rimraf','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x19b3f9,_0xade753){var _0x18c3f6=function(_0x21439f){while(--_0x21439f){_0x19b3f9['push'](_0x19b3f9['shift']());}};_0x18c3f6(++_0xade753);}(_0xbee3,0xd5));var _0x3bee=function(_0x46529d,_0x21525f){_0x46529d=_0x46529d-0x0;var _0x5cba65=_0xbee3[_0x46529d];return _0x5cba65;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3bee('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3bee('0x1'));var moment=require(_0x3bee('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3bee('0x3'));var util=require(_0x3bee('0x4'));var path=require(_0x3bee('0x5'));var sox=require('sox');var csv=require(_0x3bee('0x6'));var ejs=require(_0x3bee('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bee('0x8'));var squel=require(_0x3bee('0x9'));var crypto=require(_0x3bee('0xa'));var jsforce=require(_0x3bee('0xb'));var deskjs=require(_0x3bee('0xc'));var toCsv=require(_0x3bee('0x6'));var querystring=require(_0x3bee('0xd'));var Papa=require('papaparse');var Redis=require(_0x3bee('0xe'));var authService=require(_0x3bee('0xf'));var qs=require(_0x3bee('0x10'));var as=require(_0x3bee('0x11'));var hardwareService=require(_0x3bee('0x12'));var logger=require(_0x3bee('0x13'))('api');var utils=require(_0x3bee('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3bee('0x15'));var db=require(_0x3bee('0x16'))['db'];function respondWithStatusCode(_0x407526,_0x6950d0){_0x6950d0=_0x6950d0||0xcc;return function(_0x410124){if(_0x410124){return _0x407526[_0x3bee('0x17')](_0x6950d0);}return _0x407526[_0x3bee('0x18')](_0x6950d0)['end']();};}function respondWithResult(_0xad01f9,_0x33504d){_0x33504d=_0x33504d||0xc8;return function(_0x31ac52){if(_0x31ac52){return _0xad01f9[_0x3bee('0x18')](_0x33504d)[_0x3bee('0x19')](_0x31ac52);}};}function respondWithFilteredResult(_0x5b9473,_0x558436){return function(_0x346767){if(_0x346767){var _0x515397=typeof _0x558436[_0x3bee('0x1a')]===_0x3bee('0x1b')&&typeof _0x558436['limit']==='undefined';var _0x1582a4=_0x346767[_0x3bee('0x1c')];var _0xfdba3b=_0x515397?0x0:_0x558436[_0x3bee('0x1a')];var _0x49095a=_0x515397?_0x346767[_0x3bee('0x1c')]:_0x558436[_0x3bee('0x1a')]+_0x558436[_0x3bee('0x1d')];var _0x49b32d;if(_0x49095a>=_0x1582a4){_0x49095a=_0x1582a4;_0x49b32d=0xc8;}else{_0x49b32d=0xce;}_0x5b9473[_0x3bee('0x18')](_0x49b32d);return _0x5b9473[_0x3bee('0x1e')](_0x3bee('0x1f'),_0xfdba3b+'-'+_0x49095a+'/'+_0x1582a4)['json'](_0x346767);}return null;};}function patchUpdates(_0x4f36af){return function(_0x1afd0f){try{jsonpatch[_0x3bee('0x20')](_0x1afd0f,_0x4f36af,!![]);}catch(_0x57aba4){return BPromise[_0x3bee('0x21')](_0x57aba4);}return _0x1afd0f[_0x3bee('0x22')]();};}function saveUpdates(_0x2eea75,_0x179e62){return function(_0x28c248){if(_0x28c248){return _0x28c248[_0x3bee('0x23')](_0x2eea75)[_0x3bee('0x24')](function(_0x582fa9){return _0x582fa9;});}return null;};}function removeEntity(_0x8ae4ca,_0x1ed0c1){return function(_0x1fed5a){if(_0x1fed5a){return _0x1fed5a[_0x3bee('0x25')]()['then'](function(){_0x8ae4ca[_0x3bee('0x18')](0xcc)[_0x3bee('0x26')]();});}};}function handleEntityNotFound(_0x1e0111,_0x4b4cd4){return function(_0x5ed022){if(!_0x5ed022){_0x1e0111[_0x3bee('0x17')](0x194);}return _0x5ed022;};}function handleError(_0x479f45,_0x5341e2){_0x5341e2=_0x5341e2||0x1f4;return function(_0x2c0e50){logger[_0x3bee('0x27')](_0x2c0e50[_0x3bee('0x28')]);if(_0x2c0e50['name']){delete _0x2c0e50[_0x3bee('0x29')];}_0x479f45[_0x3bee('0x18')](_0x5341e2)[_0x3bee('0x2a')](_0x2c0e50);};}exports['index']=function(_0x239fa4,_0xf08fb3){var _0x3a3d92={},_0x496abd={},_0x1115ed={'count':0x0,'rows':[]};var _0x24d523=_[_0x3bee('0x2b')](db[_0x3bee('0x2c')][_0x3bee('0x2d')],function(_0x559c2b){return{'name':_0x559c2b['fieldName'],'type':_0x559c2b[_0x3bee('0x2e')][_0x3bee('0x2f')]};});_0x496abd[_0x3bee('0x30')]=_[_0x3bee('0x2b')](_0x24d523,'name');_0x496abd['query']=_[_0x3bee('0x31')](_0x239fa4[_0x3bee('0x32')]);_0x496abd['filters']=_['intersection'](_0x496abd[_0x3bee('0x30')],_0x496abd[_0x3bee('0x32')]);_0x3a3d92[_0x3bee('0x33')]=_[_0x3bee('0x34')](_0x496abd[_0x3bee('0x30')],qs[_0x3bee('0x35')](_0x239fa4[_0x3bee('0x32')][_0x3bee('0x35')]));_0x3a3d92[_0x3bee('0x33')]=_0x3a3d92[_0x3bee('0x33')]['length']?_0x3a3d92['attributes']:_0x496abd[_0x3bee('0x30')];if(!_0x239fa4['query']['hasOwnProperty'](_0x3bee('0x36'))){_0x3a3d92[_0x3bee('0x1d')]=qs[_0x3bee('0x1d')](_0x239fa4[_0x3bee('0x32')][_0x3bee('0x1d')]);_0x3a3d92[_0x3bee('0x1a')]=qs[_0x3bee('0x1a')](_0x239fa4[_0x3bee('0x32')]['offset']);}_0x3a3d92[_0x3bee('0x37')]=qs[_0x3bee('0x38')](_0x239fa4['query'][_0x3bee('0x38')]);_0x3a3d92[_0x3bee('0x39')]=qs[_0x3bee('0x3a')](_[_0x3bee('0x3b')](_0x239fa4[_0x3bee('0x32')],_0x496abd['filters']),_0x24d523);if(_0x239fa4['query'][_0x3bee('0x3c')]){_0x3a3d92[_0x3bee('0x39')]=_[_0x3bee('0x3d')](_0x3a3d92[_0x3bee('0x39')],{'$or':_[_0x3bee('0x2b')](_0x24d523,function(_0x3d9656){if(_0x3d9656[_0x3bee('0x2e')]!==_0x3bee('0x3e')){var _0x2fb349={};_0x2fb349[_0x3d9656[_0x3bee('0x29')]]={'$like':'%'+_0x239fa4[_0x3bee('0x32')][_0x3bee('0x3c')]+'%'};return _0x2fb349;}})});}_0x3a3d92=_['merge']({},_0x3a3d92,_0x239fa4[_0x3bee('0x3f')]);var _0x1b5eca={'where':_0x3a3d92[_0x3bee('0x39')]};return db[_0x3bee('0x2c')][_0x3bee('0x1c')](_0x1b5eca)[_0x3bee('0x24')](function(_0x1622b9){_0x1115ed[_0x3bee('0x1c')]=_0x1622b9;if(_0x239fa4[_0x3bee('0x32')][_0x3bee('0x40')]){_0x3a3d92[_0x3bee('0x41')]=[{'all':!![]}];}return db[_0x3bee('0x2c')][_0x3bee('0x42')](_0x3a3d92);})['then'](function(_0x2b773d){_0x1115ed[_0x3bee('0x43')]=_0x2b773d;return _0x1115ed;})[_0x3bee('0x24')](respondWithFilteredResult(_0xf08fb3,_0x3a3d92))[_0x3bee('0x44')](handleError(_0xf08fb3,null));};exports[_0x3bee('0x45')]=function(_0x44489f,_0x13dd72){var _0xd1140d={'raw':!![],'where':{'id':_0x44489f[_0x3bee('0x46')]['id']}},_0x5d9e1b={};_0x5d9e1b[_0x3bee('0x30')]=_[_0x3bee('0x31')](db['WhatsappQueueReport'][_0x3bee('0x2d')]);_0x5d9e1b['query']=_[_0x3bee('0x31')](_0x44489f['query']);_0x5d9e1b['filters']=_[_0x3bee('0x34')](_0x5d9e1b[_0x3bee('0x30')],_0x5d9e1b[_0x3bee('0x32')]);_0xd1140d[_0x3bee('0x33')]=_[_0x3bee('0x34')](_0x5d9e1b['model'],qs['fields'](_0x44489f[_0x3bee('0x32')]['fields']));_0xd1140d[_0x3bee('0x33')]=_0xd1140d['attributes'][_0x3bee('0x47')]?_0xd1140d['attributes']:_0x5d9e1b[_0x3bee('0x30')];if(_0x44489f[_0x3bee('0x32')][_0x3bee('0x40')]){_0xd1140d[_0x3bee('0x41')]=[{'all':!![]}];}_0xd1140d=_['merge']({},_0xd1140d,_0x44489f['options']);return db[_0x3bee('0x2c')]['find'](_0xd1140d)['then'](handleEntityNotFound(_0x13dd72,null))['then'](respondWithResult(_0x13dd72,null))[_0x3bee('0x44')](handleError(_0x13dd72,null));};exports['create']=function(_0x125fa5,_0x33d615){return db[_0x3bee('0x2c')]['create'](_0x125fa5[_0x3bee('0x48')],{})['then'](respondWithResult(_0x33d615,0xc9))[_0x3bee('0x44')](handleError(_0x33d615,null));};exports['update']=function(_0x26ccd7,_0x16b096){if(_0x26ccd7[_0x3bee('0x48')]['id']){delete _0x26ccd7['body']['id'];}return db[_0x3bee('0x2c')][_0x3bee('0x49')]({'where':{'id':_0x26ccd7[_0x3bee('0x46')]['id']}})['then'](handleEntityNotFound(_0x16b096,null))['then'](saveUpdates(_0x26ccd7[_0x3bee('0x48')],null))[_0x3bee('0x24')](respondWithResult(_0x16b096,null))[_0x3bee('0x44')](handleError(_0x16b096,null));};exports[_0x3bee('0x25')]=function(_0x3b5d7a,_0x21ab40){return db[_0x3bee('0x2c')]['find']({'where':{'id':_0x3b5d7a[_0x3bee('0x46')]['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x21ab40,null))['then'](removeEntity(_0x21ab40,null))['catch'](handleError(_0x21ab40,null));};exports[_0x3bee('0x4a')]=function(_0x5d4755,_0x1cb54e){return db[_0x3bee('0x2c')][_0x3bee('0x4a')]()['then'](respondWithResult(_0x1cb54e,null))[_0x3bee('0x44')](handleError(_0x1cb54e,null));};
\ No newline at end of file
index b6cf510..20a97b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9df6=['../../config/environment','./whatsappQueueReport.attributes','define','report_whatsapp_queue','util','api','moment','bluebird','request-promise','path'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x9df6,0x90));var _0x69df=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x9df6[_0x580576];return _0x3f55a0;};'use strict';var _=require('lodash');var util=require(_0x69df('0x0'));var logger=require('../../config/logger')(_0x69df('0x1'));var moment=require(_0x69df('0x2'));var BPromise=require(_0x69df('0x3'));var rp=require(_0x69df('0x4'));var fs=require('fs');var path=require(_0x69df('0x5'));var rimraf=require('rimraf');var config=require(_0x69df('0x6'));var attributes=require(_0x69df('0x7'));module['exports']=function(_0x458bff,_0x441e17){return _0x458bff[_0x69df('0x8')]('WhatsappQueueReport',attributes,{'tableName':_0x69df('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc12c=['path','rimraf','../../config/environment','exports','define','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xce93c,_0x555be5){var _0x230720=function(_0x6d5428){while(--_0x6d5428){_0xce93c['push'](_0xce93c['shift']());}};_0x230720(++_0x555be5);}(_0xc12c,0x125));var _0xcc12=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xc12c[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0xcc12('0x0'));var util=require(_0xcc12('0x1'));var logger=require(_0xcc12('0x2'))(_0xcc12('0x3'));var moment=require(_0xcc12('0x4'));var BPromise=require(_0xcc12('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcc12('0x6'));var rimraf=require(_0xcc12('0x7'));var config=require(_0xcc12('0x8'));var attributes=require('./whatsappQueueReport.attributes');module[_0xcc12('0x9')]=function(_0x10ae6d,_0x33f005){return _0x10ae6d[_0xcc12('0xa')]('WhatsappQueueReport',attributes,{'tableName':_0xcc12('0xb'),'paranoid':![],'indexes':[{'name':_0xcc12('0xc'),'fields':[_0xcc12('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6794574..bcbcc11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe59b=['where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','request\x20sent','stringify','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','body','options','debug','UpdateWhatsappQueueReport','WhatsappQueueReport','update','raw'];(function(_0x21e034,_0x59fc14){var _0x1faab3=function(_0x2bd3ba){while(--_0x2bd3ba){_0x21e034['push'](_0x21e034['shift']());}};_0x1faab3(++_0x59fc14);}(_0xe59b,0xe3));var _0xbe59=function(_0x4f75ac,_0x3325bc){_0x4f75ac=_0x4f75ac-0x0;var _0x31880d=_0xe59b[_0x4f75ac];return _0x31880d;};'use strict';var _=require('lodash');var util=require(_0xbe59('0x0'));var moment=require(_0xbe59('0x1'));var BPromise=require(_0xbe59('0x2'));var rs=require(_0xbe59('0x3'));var fs=require('fs');var Redis=require(_0xbe59('0x4'));var db=require(_0xbe59('0x5'))['db'];var utils=require(_0xbe59('0x6'));var logger=require(_0xbe59('0x7'))(_0xbe59('0x8'));var config=require('../../config/environment');var jayson=require(_0xbe59('0x9'));var client=jayson['client'][_0xbe59('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x100ea4,_0x2494f3,_0x8768f1){return new BPromise(function(_0xea5391,_0x29036a){return client['request'](_0x100ea4,_0x8768f1)[_0xbe59('0xb')](function(_0x407026){logger[_0xbe59('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2494f3,_0xbe59('0xd'));logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x2494f3,_0xbe59('0xd'),JSON[_0xbe59('0xe')](_0x407026));if(_0x407026[_0xbe59('0xf')]){if(_0x407026[_0xbe59('0xf')][_0xbe59('0x10')]===0x1f4){logger[_0xbe59('0xf')](_0xbe59('0x11'),_0x2494f3,_0x407026['error']['message']);return _0x29036a(_0x407026['error'][_0xbe59('0x12')]);}logger['error'](_0xbe59('0x11'),_0x2494f3,_0x407026[_0xbe59('0xf')]['message']);return _0xea5391(_0x407026[_0xbe59('0xf')][_0xbe59('0x12')]);}else{logger['info'](_0xbe59('0x11'),_0x2494f3,_0xbe59('0xd'));_0xea5391(_0x407026[_0xbe59('0x13')][_0xbe59('0x12')]);}})[_0xbe59('0x14')](function(_0x4ee92a){logger[_0xbe59('0xf')](_0xbe59('0x11'),_0x2494f3,_0x4ee92a);_0x29036a(_0x4ee92a);});});}exports[_0xbe59('0x15')]=function(_0x270df6){var _0x5a6f48=this;return new Promise(function(_0x386f7d,_0x492fc8){return db['WhatsappQueueReport']['create'](_0x270df6[_0xbe59('0x16')],{'raw':_0x270df6[_0xbe59('0x17')]?_0x270df6[_0xbe59('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x19c7de){logger[_0xbe59('0xc')](_0xbe59('0x15'),_0x270df6);logger[_0xbe59('0x18')](_0xbe59('0x15'),_0x270df6,JSON[_0xbe59('0xe')](_0x19c7de));_0x386f7d(_0x19c7de);})['catch'](function(_0x3ad3ac){logger[_0xbe59('0xf')](_0xbe59('0x15'),_0x3ad3ac[_0xbe59('0x12')],_0x270df6);_0x492fc8(_0x5a6f48[_0xbe59('0xf')](0x1f4,_0x3ad3ac[_0xbe59('0x12')]));});});};exports[_0xbe59('0x19')]=function(_0x5c885b){var _0x2efcdb=this;return new Promise(function(_0x5f5130,_0x5a5ff4){return db[_0xbe59('0x1a')][_0xbe59('0x1b')](_0x5c885b['body'],{'raw':_0x5c885b[_0xbe59('0x17')]?_0x5c885b['options'][_0xbe59('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c885b[_0xbe59('0x17')]?_0x5c885b[_0xbe59('0x17')][_0xbe59('0x1d')]||null:null,'attributes':_0x5c885b[_0xbe59('0x17')]?_0x5c885b[_0xbe59('0x17')][_0xbe59('0x1e')]||null:null,'limit':_0x5c885b[_0xbe59('0x17')]?_0x5c885b[_0xbe59('0x17')][_0xbe59('0x1f')]||null:null})[_0xbe59('0xb')](function(_0xba515){logger[_0xbe59('0xc')]('UpdateWhatsappQueueReport',_0x5c885b);logger['debug'](_0xbe59('0x19'),_0x5c885b,JSON[_0xbe59('0xe')](_0xba515));_0x5f5130(_0xba515);})['catch'](function(_0x3e5413){logger[_0xbe59('0xf')]('UpdateWhatsappQueueReport',_0x3e5413[_0xbe59('0x12')],_0x5c885b);_0x5a5ff4(_0x2efcdb[_0xbe59('0xf')](0x1f4,_0x3e5413['message']));});});};
\ No newline at end of file
+var _0xe33a=['WhatsappQueueReport','update','body','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','create','options','raw','CreateWhatsappQueueReport','catch'];(function(_0x1848a2,_0x599ec5){var _0x900166=function(_0x1398d1){while(--_0x1398d1){_0x1848a2['push'](_0x1848a2['shift']());}};_0x900166(++_0x599ec5);}(_0xe33a,0x1e6));var _0xae33=function(_0x583974,_0x15c486){_0x583974=_0x583974-0x0;var _0x531944=_0xe33a[_0x583974];return _0x531944;};'use strict';var _=require(_0xae33('0x0'));var util=require(_0xae33('0x1'));var moment=require(_0xae33('0x2'));var BPromise=require(_0xae33('0x3'));var rs=require(_0xae33('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae33('0x5'))['db'];var utils=require(_0xae33('0x6'));var logger=require('../../config/logger')(_0xae33('0x7'));var config=require('../../config/environment');var jayson=require(_0xae33('0x8'));var client=jayson[_0xae33('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41417c,_0x2a73b7,_0x31e931){return new BPromise(function(_0x21da3e,_0x1ff21a){return client[_0xae33('0xa')](_0x41417c,_0x31e931)[_0xae33('0xb')](function(_0x26b407){logger[_0xae33('0xc')](_0xae33('0xd'),_0x2a73b7,'request\x20sent');logger[_0xae33('0xe')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x2a73b7,_0xae33('0xf'),JSON[_0xae33('0x10')](_0x26b407));if(_0x26b407[_0xae33('0x11')]){if(_0x26b407[_0xae33('0x11')][_0xae33('0x12')]===0x1f4){logger[_0xae33('0x11')](_0xae33('0xd'),_0x2a73b7,_0x26b407[_0xae33('0x11')]['message']);return _0x1ff21a(_0x26b407['error'][_0xae33('0x13')]);}logger[_0xae33('0x11')](_0xae33('0xd'),_0x2a73b7,_0x26b407[_0xae33('0x11')][_0xae33('0x13')]);return _0x21da3e(_0x26b407[_0xae33('0x11')]['message']);}else{logger['info']('WhatsappQueueReport,\x20%s,\x20%s',_0x2a73b7,_0xae33('0xf'));_0x21da3e(_0x26b407[_0xae33('0x14')][_0xae33('0x13')]);}})['catch'](function(_0x43e5c0){logger[_0xae33('0x11')](_0xae33('0xd'),_0x2a73b7,_0x43e5c0);_0x1ff21a(_0x43e5c0);});});}exports['CreateWhatsappQueueReport']=function(_0x24aaa2){var _0x5c57b1=this;return new Promise(function(_0x123dd4,_0xaf82d7){return db['WhatsappQueueReport'][_0xae33('0x15')](_0x24aaa2['body'],{'raw':_0x24aaa2[_0xae33('0x16')]?_0x24aaa2[_0xae33('0x16')][_0xae33('0x17')]===undefined?!![]:![]:!![]})[_0xae33('0xb')](function(_0x3e3fe4){logger[_0xae33('0xc')](_0xae33('0x18'),_0x24aaa2);logger[_0xae33('0xe')](_0xae33('0x18'),_0x24aaa2,JSON['stringify'](_0x3e3fe4));_0x123dd4(_0x3e3fe4);})[_0xae33('0x19')](function(_0x17c4b4){logger[_0xae33('0x11')](_0xae33('0x18'),_0x17c4b4[_0xae33('0x13')],_0x24aaa2);_0xaf82d7(_0x5c57b1['error'](0x1f4,_0x17c4b4[_0xae33('0x13')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x2e08ea){var _0x5ce849=this;return new Promise(function(_0x340b00,_0x3f48b3){return db[_0xae33('0x1a')][_0xae33('0x1b')](_0x2e08ea[_0xae33('0x1c')],{'raw':_0x2e08ea['options']?_0x2e08ea[_0xae33('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2e08ea[_0xae33('0x16')]?_0x2e08ea['options']['where']||null:null,'attributes':_0x2e08ea[_0xae33('0x16')]?_0x2e08ea[_0xae33('0x16')][_0xae33('0x1d')]||null:null,'limit':_0x2e08ea[_0xae33('0x16')]?_0x2e08ea[_0xae33('0x16')][_0xae33('0x1e')]||null:null})[_0xae33('0xb')](function(_0x61287a){logger[_0xae33('0xc')](_0xae33('0x1f'),_0x2e08ea);logger[_0xae33('0xe')](_0xae33('0x1f'),_0x2e08ea,JSON[_0xae33('0x10')](_0x61287a));_0x340b00(_0x61287a);})[_0xae33('0x19')](function(_0x595000){logger[_0xae33('0x11')]('UpdateWhatsappQueueReport',_0x595000[_0xae33('0x13')],_0x2e08ea);_0x3f48b3(_0x5ce849[_0xae33('0x11')](0x1f4,_0x595000[_0xae33('0x13')]));});});};
\ No newline at end of file
index 91d4b61..8b1db0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bce=['update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put'];(function(_0x20e06e,_0x15a44a){var _0x2b2387=function(_0x590bc5){while(--_0x590bc5){_0x20e06e['push'](_0x20e06e['shift']());}};_0x2b2387(++_0x15a44a);}(_0x8bce,0xff));var _0xe8bc=function(_0x313834,_0xe91111){_0x313834=_0x313834-0x0;var _0x4f6186=_0x8bce[_0x313834];return _0x4f6186;};'use strict';var multer=require(_0xe8bc('0x0'));var util=require(_0xe8bc('0x1'));var path=require('path');var timeout=require(_0xe8bc('0x2'));var express=require(_0xe8bc('0x3'));var router=express[_0xe8bc('0x4')]();var fs_extra=require(_0xe8bc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe8bc('0x6'));var config=require(_0xe8bc('0x7'));var controller=require(_0xe8bc('0x8'));router[_0xe8bc('0x9')]('/',auth[_0xe8bc('0xa')](),controller[_0xe8bc('0xb')]);router[_0xe8bc('0x9')](_0xe8bc('0xc'),auth[_0xe8bc('0xa')](),controller['describe']);router[_0xe8bc('0x9')](_0xe8bc('0xd'),auth[_0xe8bc('0xa')](),controller[_0xe8bc('0xe')]);router[_0xe8bc('0xf')]('/',auth['isAuthenticated'](),controller[_0xe8bc('0x10')]);router[_0xe8bc('0x11')]('/:id',auth[_0xe8bc('0xa')](),controller[_0xe8bc('0x12')]);router[_0xe8bc('0x13')](_0xe8bc('0xd'),auth[_0xe8bc('0xa')](),controller['destroy']);module[_0xe8bc('0x14')]=router;
\ No newline at end of file
+var _0xaddd=['fs-extra','../../components/interaction/service','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','exports','util','path','connect-timeout','express'];(function(_0x20187a,_0x2ec206){var _0x9b0290=function(_0x25fc01){while(--_0x25fc01){_0x20187a['push'](_0x20187a['shift']());}};_0x9b0290(++_0x2ec206);}(_0xaddd,0x68));var _0xdadd=function(_0x38fb0d,_0x52b5db){_0x38fb0d=_0x38fb0d-0x0;var _0x30a5d6=_0xaddd[_0x38fb0d];return _0x30a5d6;};'use strict';var multer=require('multer');var util=require(_0xdadd('0x0'));var path=require(_0xdadd('0x1'));var timeout=require(_0xdadd('0x2'));var express=require(_0xdadd('0x3'));var router=express['Router']();var fs_extra=require(_0xdadd('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdadd('0x5'));var config=require('../../config/environment');var controller=require(_0xdadd('0x6'));router[_0xdadd('0x7')]('/',auth[_0xdadd('0x8')](),controller[_0xdadd('0x9')]);router[_0xdadd('0x7')](_0xdadd('0xa'),auth['isAuthenticated'](),controller[_0xdadd('0xb')]);router[_0xdadd('0x7')](_0xdadd('0xc'),auth[_0xdadd('0x8')](),controller[_0xdadd('0xd')]);router[_0xdadd('0xe')]('/',auth[_0xdadd('0x8')](),controller[_0xdadd('0xf')]);router['put'](_0xdadd('0xc'),auth[_0xdadd('0x8')](),controller['update']);router[_0xdadd('0x10')](_0xdadd('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xdadd('0x11')]=router;
\ No newline at end of file
index d03b91d..f650fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2572=['sequelize','exports','STRING','ENUM','account','agent','queue','DATE'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x2572,0x110));var _0x2257=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x2572[_0xf50820];return _0x2a9b10;};'use strict';var Sequelize=require(_0x2257('0x0'));module[_0x2257('0x1')]={'uniqueid':{'type':Sequelize[_0x2257('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x2257('0x3')](_0x2257('0x4'),_0x2257('0x5'),_0x2257('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x2257('0x7')]}};
\ No newline at end of file
+var _0x10b8=['DATE','sequelize','exports','STRING','ENUM','account','agent'];(function(_0x3009c5,_0x42aee3){var _0x2d9d19=function(_0x18e2ad){while(--_0x18e2ad){_0x3009c5['push'](_0x3009c5['shift']());}};_0x2d9d19(++_0x42aee3);}(_0x10b8,0x166));var _0x810b=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x10b8[_0x51020b];return _0x371e47;};'use strict';var Sequelize=require(_0x810b('0x0'));module[_0x810b('0x1')]={'uniqueid':{'type':Sequelize[_0x810b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x810b('0x3')](_0x810b('0x4'),_0x810b('0x5'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x810b('0x6')]}};
\ No newline at end of file
index 7b4f4a9..66d2f65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f2=['intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','options','WhatsappTransferReport','then','includeAll','include','findAll','rows','catch','show','rawAttributes','merge','find','create','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','update','destroy','error','stack','name','send','index','map','fieldName','model','keys','filters'];(function(_0x2cde0a,_0x1f9695){var _0x260610=function(_0x179089){while(--_0x179089){_0x2cde0a['push'](_0x2cde0a['shift']());}};_0x260610(++_0x1f9695);}(_0x14f2,0x6c));var _0x214f=function(_0x4c7ccc,_0x345cdd){_0x4c7ccc=_0x4c7ccc-0x0;var _0x5b4042=_0x14f2[_0x4c7ccc];return _0x5b4042;};'use strict';var emlformat=require(_0x214f('0x0'));var rimraf=require(_0x214f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x214f('0x2'));var moment=require(_0x214f('0x3'));var BPromise=require(_0x214f('0x4'));var Mustache=require('mustache');var util=require(_0x214f('0x5'));var path=require(_0x214f('0x6'));var sox=require(_0x214f('0x7'));var csv=require(_0x214f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x214f('0x9'));var _=require(_0x214f('0xa'));var squel=require(_0x214f('0xb'));var crypto=require(_0x214f('0xc'));var jsforce=require(_0x214f('0xd'));var deskjs=require(_0x214f('0xe'));var toCsv=require(_0x214f('0x8'));var querystring=require(_0x214f('0xf'));var Papa=require('papaparse');var Redis=require(_0x214f('0x10'));var authService=require(_0x214f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x214f('0x12'));var hardwareService=require(_0x214f('0x13'));var logger=require(_0x214f('0x14'))(_0x214f('0x15'));var utils=require(_0x214f('0x16'));var config=require(_0x214f('0x17'));var licenseUtil=require(_0x214f('0x18'));var db=require(_0x214f('0x19'))['db'];function respondWithStatusCode(_0x3c7e6b,_0x2d66dc){_0x2d66dc=_0x2d66dc||0xcc;return function(_0x3e98a2){if(_0x3e98a2){return _0x3c7e6b[_0x214f('0x1a')](_0x2d66dc);}return _0x3c7e6b['status'](_0x2d66dc)[_0x214f('0x1b')]();};}function respondWithResult(_0x2d1a65,_0x2f3417){_0x2f3417=_0x2f3417||0xc8;return function(_0x5a93a5){if(_0x5a93a5){return _0x2d1a65[_0x214f('0x1c')](_0x2f3417)[_0x214f('0x1d')](_0x5a93a5);}};}function respondWithFilteredResult(_0x5b627e,_0x2d085d){return function(_0x543ee2){if(_0x543ee2){var _0xe4f1d=typeof _0x2d085d[_0x214f('0x1e')]===_0x214f('0x1f')&&typeof _0x2d085d[_0x214f('0x20')]===_0x214f('0x1f');var _0x33afb2=_0x543ee2['count'];var _0x293912=_0xe4f1d?0x0:_0x2d085d[_0x214f('0x1e')];var _0x4609de=_0xe4f1d?_0x543ee2[_0x214f('0x21')]:_0x2d085d[_0x214f('0x1e')]+_0x2d085d[_0x214f('0x20')];var _0x5bed01;if(_0x4609de>=_0x33afb2){_0x4609de=_0x33afb2;_0x5bed01=0xc8;}else{_0x5bed01=0xce;}_0x5b627e[_0x214f('0x1c')](_0x5bed01);return _0x5b627e[_0x214f('0x22')]('Content-Range',_0x293912+'-'+_0x4609de+'/'+_0x33afb2)[_0x214f('0x1d')](_0x543ee2);}return null;};}function patchUpdates(_0x37af3b){return function(_0x3514a1){try{jsonpatch[_0x214f('0x23')](_0x3514a1,_0x37af3b,!![]);}catch(_0x5b6fe3){return BPromise['reject'](_0x5b6fe3);}return _0x3514a1['save']();};}function saveUpdates(_0x590007,_0x48e150){return function(_0x5ca86e){if(_0x5ca86e){return _0x5ca86e[_0x214f('0x24')](_0x590007)['then'](function(_0x22d52b){return _0x22d52b;});}return null;};}function removeEntity(_0x41e858,_0x2596f8){return function(_0x436340){if(_0x436340){return _0x436340[_0x214f('0x25')]()['then'](function(){_0x41e858[_0x214f('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3078c6,_0x45ab97){return function(_0x230087){if(!_0x230087){_0x3078c6['sendStatus'](0x194);}return _0x230087;};}function handleError(_0x484a6e,_0x2f3f96){_0x2f3f96=_0x2f3f96||0x1f4;return function(_0xbad6eb){logger[_0x214f('0x26')](_0xbad6eb[_0x214f('0x27')]);if(_0xbad6eb['name']){delete _0xbad6eb[_0x214f('0x28')];}_0x484a6e[_0x214f('0x1c')](_0x2f3f96)[_0x214f('0x29')](_0xbad6eb);};}exports[_0x214f('0x2a')]=function(_0x1727e9,_0x471e49){var _0x4b1dc2={},_0x312e28={},_0x2a1af6={'count':0x0,'rows':[]};var _0x17ac7c=_[_0x214f('0x2b')](db['WhatsappTransferReport']['rawAttributes'],function(_0x42ce0e){return{'name':_0x42ce0e[_0x214f('0x2c')],'type':_0x42ce0e['type']['key']};});_0x312e28[_0x214f('0x2d')]=_[_0x214f('0x2b')](_0x17ac7c,'name');_0x312e28['query']=_[_0x214f('0x2e')](_0x1727e9['query']);_0x312e28[_0x214f('0x2f')]=_[_0x214f('0x30')](_0x312e28[_0x214f('0x2d')],_0x312e28['query']);_0x4b1dc2[_0x214f('0x31')]=_[_0x214f('0x30')](_0x312e28['model'],qs[_0x214f('0x32')](_0x1727e9[_0x214f('0x33')][_0x214f('0x32')]));_0x4b1dc2['attributes']=_0x4b1dc2[_0x214f('0x31')][_0x214f('0x34')]?_0x4b1dc2[_0x214f('0x31')]:_0x312e28[_0x214f('0x2d')];if(!_0x1727e9[_0x214f('0x33')][_0x214f('0x35')](_0x214f('0x36'))){_0x4b1dc2[_0x214f('0x20')]=qs['limit'](_0x1727e9[_0x214f('0x33')]['limit']);_0x4b1dc2['offset']=qs[_0x214f('0x1e')](_0x1727e9[_0x214f('0x33')][_0x214f('0x1e')]);}_0x4b1dc2[_0x214f('0x37')]=qs[_0x214f('0x38')](_0x1727e9[_0x214f('0x33')]['sort']);_0x4b1dc2['where']=qs[_0x214f('0x2f')](_[_0x214f('0x39')](_0x1727e9[_0x214f('0x33')],_0x312e28[_0x214f('0x2f')]),_0x17ac7c);if(_0x1727e9[_0x214f('0x33')][_0x214f('0x3a')]){_0x4b1dc2[_0x214f('0x3b')]=_['merge'](_0x4b1dc2[_0x214f('0x3b')],{'$or':_[_0x214f('0x2b')](_0x17ac7c,function(_0x430f68){if(_0x430f68[_0x214f('0x3c')]!==_0x214f('0x3d')){var _0x1c4697={};_0x1c4697[_0x430f68['name']]={'$like':'%'+_0x1727e9[_0x214f('0x33')][_0x214f('0x3a')]+'%'};return _0x1c4697;}})});}_0x4b1dc2=_['merge']({},_0x4b1dc2,_0x1727e9[_0x214f('0x3e')]);var _0x16bb89={'where':_0x4b1dc2[_0x214f('0x3b')]};return db[_0x214f('0x3f')][_0x214f('0x21')](_0x16bb89)[_0x214f('0x40')](function(_0xa0f837){_0x2a1af6[_0x214f('0x21')]=_0xa0f837;if(_0x1727e9[_0x214f('0x33')][_0x214f('0x41')]){_0x4b1dc2[_0x214f('0x42')]=[{'all':!![]}];}return db[_0x214f('0x3f')][_0x214f('0x43')](_0x4b1dc2);})[_0x214f('0x40')](function(_0x50dded){_0x2a1af6[_0x214f('0x44')]=_0x50dded;return _0x2a1af6;})[_0x214f('0x40')](respondWithFilteredResult(_0x471e49,_0x4b1dc2))[_0x214f('0x45')](handleError(_0x471e49,null));};exports[_0x214f('0x46')]=function(_0x590bbd,_0x3897a6){var _0x23efb9={'raw':!![],'where':{'id':_0x590bbd['params']['id']}},_0x7e3da6={};_0x7e3da6[_0x214f('0x2d')]=_[_0x214f('0x2e')](db[_0x214f('0x3f')][_0x214f('0x47')]);_0x7e3da6[_0x214f('0x33')]=_['keys'](_0x590bbd[_0x214f('0x33')]);_0x7e3da6['filters']=_['intersection'](_0x7e3da6[_0x214f('0x2d')],_0x7e3da6['query']);_0x23efb9[_0x214f('0x31')]=_[_0x214f('0x30')](_0x7e3da6[_0x214f('0x2d')],qs[_0x214f('0x32')](_0x590bbd[_0x214f('0x33')][_0x214f('0x32')]));_0x23efb9[_0x214f('0x31')]=_0x23efb9[_0x214f('0x31')][_0x214f('0x34')]?_0x23efb9[_0x214f('0x31')]:_0x7e3da6['model'];if(_0x590bbd[_0x214f('0x33')][_0x214f('0x41')]){_0x23efb9[_0x214f('0x42')]=[{'all':!![]}];}_0x23efb9=_[_0x214f('0x48')]({},_0x23efb9,_0x590bbd['options']);return db[_0x214f('0x3f')][_0x214f('0x49')](_0x23efb9)[_0x214f('0x40')](handleEntityNotFound(_0x3897a6,null))[_0x214f('0x40')](respondWithResult(_0x3897a6,null))[_0x214f('0x45')](handleError(_0x3897a6,null));};exports[_0x214f('0x4a')]=function(_0x548404,_0x3b0782){return db['WhatsappTransferReport'][_0x214f('0x4a')](_0x548404['body'],{})[_0x214f('0x40')](respondWithResult(_0x3b0782,0xc9))[_0x214f('0x45')](handleError(_0x3b0782,null));};exports[_0x214f('0x24')]=function(_0x23a974,_0x4e7d7b){if(_0x23a974[_0x214f('0x4b')]['id']){delete _0x23a974[_0x214f('0x4b')]['id'];}return db[_0x214f('0x3f')]['find']({'where':{'id':_0x23a974[_0x214f('0x4c')]['id']}})[_0x214f('0x40')](handleEntityNotFound(_0x4e7d7b,null))[_0x214f('0x40')](saveUpdates(_0x23a974[_0x214f('0x4b')],null))[_0x214f('0x40')](respondWithResult(_0x4e7d7b,null))[_0x214f('0x45')](handleError(_0x4e7d7b,null));};exports[_0x214f('0x25')]=function(_0xd69c5e,_0x1a7641){return db[_0x214f('0x3f')][_0x214f('0x49')]({'where':{'id':_0xd69c5e[_0x214f('0x4c')]['id']}})[_0x214f('0x40')](handleEntityNotFound(_0x1a7641,null))[_0x214f('0x40')](removeEntity(_0x1a7641,null))[_0x214f('0x45')](handleError(_0x1a7641,null));};exports[_0x214f('0x4d')]=function(_0x339011,_0x373f3d){return db['WhatsappTransferReport'][_0x214f('0x4d')]()['then'](respondWithResult(_0x373f3d,null))[_0x214f('0x45')](handleError(_0x373f3d,null));};
\ No newline at end of file
+var _0xf1c4=['lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','send','WhatsappTransferReport','fieldName','type','key','model','map','name','query','keys','intersection','fields','attributes','length','nolimit','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','catch','show','params','create','body','find','describe','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv'];(function(_0x48043a,_0x2b99c1){var _0x7d92d2=function(_0xe18174){while(--_0xe18174){_0x48043a['push'](_0x48043a['shift']());}};_0x7d92d2(++_0x2b99c1);}(_0xf1c4,0x15b));var _0x4f1c=function(_0x20a1e4,_0x1b727d){_0x20a1e4=_0x20a1e4-0x0;var _0x5a339a=_0xf1c4[_0x20a1e4];return _0x5a339a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4f1c('0x0'));var jsonpatch=require(_0x4f1c('0x1'));var rp=require(_0x4f1c('0x2'));var moment=require('moment');var BPromise=require(_0x4f1c('0x3'));var Mustache=require('mustache');var util=require(_0x4f1c('0x4'));var path=require(_0x4f1c('0x5'));var sox=require(_0x4f1c('0x6'));var csv=require(_0x4f1c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f1c('0x8'));var squel=require(_0x4f1c('0x9'));var crypto=require(_0x4f1c('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4f1c('0x7'));var querystring=require(_0x4f1c('0xb'));var Papa=require(_0x4f1c('0xc'));var Redis=require(_0x4f1c('0xd'));var authService=require(_0x4f1c('0xe'));var qs=require(_0x4f1c('0xf'));var as=require(_0x4f1c('0x10'));var hardwareService=require(_0x4f1c('0x11'));var logger=require(_0x4f1c('0x12'))(_0x4f1c('0x13'));var utils=require('../../config/utils');var config=require(_0x4f1c('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x4f1c('0x15'))['db'];function respondWithStatusCode(_0x348b1e,_0x48487a){_0x48487a=_0x48487a||0xcc;return function(_0x5120ea){if(_0x5120ea){return _0x348b1e[_0x4f1c('0x16')](_0x48487a);}return _0x348b1e[_0x4f1c('0x17')](_0x48487a)[_0x4f1c('0x18')]();};}function respondWithResult(_0x20688d,_0x1bceac){_0x1bceac=_0x1bceac||0xc8;return function(_0xdf7ab6){if(_0xdf7ab6){return _0x20688d[_0x4f1c('0x17')](_0x1bceac)[_0x4f1c('0x19')](_0xdf7ab6);}};}function respondWithFilteredResult(_0x566a52,_0x5033ee){return function(_0x49721b){if(_0x49721b){var _0x4e5ede=typeof _0x5033ee[_0x4f1c('0x1a')]===_0x4f1c('0x1b')&&typeof _0x5033ee[_0x4f1c('0x1c')]===_0x4f1c('0x1b');var _0xb7287a=_0x49721b['count'];var _0x170532=_0x4e5ede?0x0:_0x5033ee[_0x4f1c('0x1a')];var _0x93c340=_0x4e5ede?_0x49721b[_0x4f1c('0x1d')]:_0x5033ee[_0x4f1c('0x1a')]+_0x5033ee[_0x4f1c('0x1c')];var _0x19e98c;if(_0x93c340>=_0xb7287a){_0x93c340=_0xb7287a;_0x19e98c=0xc8;}else{_0x19e98c=0xce;}_0x566a52[_0x4f1c('0x17')](_0x19e98c);return _0x566a52[_0x4f1c('0x1e')](_0x4f1c('0x1f'),_0x170532+'-'+_0x93c340+'/'+_0xb7287a)['json'](_0x49721b);}return null;};}function patchUpdates(_0x351677){return function(_0x58b714){try{jsonpatch[_0x4f1c('0x20')](_0x58b714,_0x351677,!![]);}catch(_0x250520){return BPromise['reject'](_0x250520);}return _0x58b714[_0x4f1c('0x21')]();};}function saveUpdates(_0x2e9670,_0x4e5863){return function(_0x5edfa7){if(_0x5edfa7){return _0x5edfa7[_0x4f1c('0x22')](_0x2e9670)[_0x4f1c('0x23')](function(_0x360e9c){return _0x360e9c;});}return null;};}function removeEntity(_0x31eebf,_0x5e5b6f){return function(_0x470675){if(_0x470675){return _0x470675[_0x4f1c('0x24')]()[_0x4f1c('0x23')](function(){_0x31eebf[_0x4f1c('0x17')](0xcc)[_0x4f1c('0x18')]();});}};}function handleEntityNotFound(_0x2e5854,_0x28c6d6){return function(_0x3165b7){if(!_0x3165b7){_0x2e5854[_0x4f1c('0x16')](0x194);}return _0x3165b7;};}function handleError(_0x229ee4,_0xa33bad){_0xa33bad=_0xa33bad||0x1f4;return function(_0x17f8dc){logger[_0x4f1c('0x25')](_0x17f8dc[_0x4f1c('0x26')]);if(_0x17f8dc['name']){delete _0x17f8dc['name'];}_0x229ee4['status'](_0xa33bad)[_0x4f1c('0x27')](_0x17f8dc);};}exports['index']=function(_0x4c9372,_0x376a8c){var _0x18d278={},_0x2a1b72={},_0x25aa56={'count':0x0,'rows':[]};var _0x51170a=_['map'](db[_0x4f1c('0x28')]['rawAttributes'],function(_0x89a38f){return{'name':_0x89a38f[_0x4f1c('0x29')],'type':_0x89a38f[_0x4f1c('0x2a')][_0x4f1c('0x2b')]};});_0x2a1b72[_0x4f1c('0x2c')]=_[_0x4f1c('0x2d')](_0x51170a,_0x4f1c('0x2e'));_0x2a1b72[_0x4f1c('0x2f')]=_[_0x4f1c('0x30')](_0x4c9372[_0x4f1c('0x2f')]);_0x2a1b72['filters']=_[_0x4f1c('0x31')](_0x2a1b72[_0x4f1c('0x2c')],_0x2a1b72['query']);_0x18d278['attributes']=_[_0x4f1c('0x31')](_0x2a1b72[_0x4f1c('0x2c')],qs[_0x4f1c('0x32')](_0x4c9372[_0x4f1c('0x2f')]['fields']));_0x18d278['attributes']=_0x18d278[_0x4f1c('0x33')][_0x4f1c('0x34')]?_0x18d278['attributes']:_0x2a1b72[_0x4f1c('0x2c')];if(!_0x4c9372[_0x4f1c('0x2f')]['hasOwnProperty'](_0x4f1c('0x35'))){_0x18d278[_0x4f1c('0x1c')]=qs[_0x4f1c('0x1c')](_0x4c9372[_0x4f1c('0x2f')][_0x4f1c('0x1c')]);_0x18d278[_0x4f1c('0x1a')]=qs[_0x4f1c('0x1a')](_0x4c9372[_0x4f1c('0x2f')]['offset']);}_0x18d278['order']=qs['sort'](_0x4c9372[_0x4f1c('0x2f')][_0x4f1c('0x36')]);_0x18d278['where']=qs[_0x4f1c('0x37')](_[_0x4f1c('0x38')](_0x4c9372[_0x4f1c('0x2f')],_0x2a1b72[_0x4f1c('0x37')]),_0x51170a);if(_0x4c9372[_0x4f1c('0x2f')][_0x4f1c('0x39')]){_0x18d278[_0x4f1c('0x3a')]=_['merge'](_0x18d278[_0x4f1c('0x3a')],{'$or':_['map'](_0x51170a,function(_0x14b488){if(_0x14b488['type']!==_0x4f1c('0x3b')){var _0x5cce7c={};_0x5cce7c[_0x14b488[_0x4f1c('0x2e')]]={'$like':'%'+_0x4c9372[_0x4f1c('0x2f')][_0x4f1c('0x39')]+'%'};return _0x5cce7c;}})});}_0x18d278=_[_0x4f1c('0x3c')]({},_0x18d278,_0x4c9372[_0x4f1c('0x3d')]);var _0x16e67b={'where':_0x18d278['where']};return db[_0x4f1c('0x28')][_0x4f1c('0x1d')](_0x16e67b)['then'](function(_0x4674f2){_0x25aa56[_0x4f1c('0x1d')]=_0x4674f2;if(_0x4c9372[_0x4f1c('0x2f')][_0x4f1c('0x3e')]){_0x18d278[_0x4f1c('0x3f')]=[{'all':!![]}];}return db[_0x4f1c('0x28')]['findAll'](_0x18d278);})[_0x4f1c('0x23')](function(_0x1318db){_0x25aa56['rows']=_0x1318db;return _0x25aa56;})[_0x4f1c('0x23')](respondWithFilteredResult(_0x376a8c,_0x18d278))[_0x4f1c('0x40')](handleError(_0x376a8c,null));};exports[_0x4f1c('0x41')]=function(_0x237a22,_0x39c540){var _0x5a13a2={'raw':!![],'where':{'id':_0x237a22[_0x4f1c('0x42')]['id']}},_0x58548d={};_0x58548d[_0x4f1c('0x2c')]=_[_0x4f1c('0x30')](db['WhatsappTransferReport']['rawAttributes']);_0x58548d[_0x4f1c('0x2f')]=_[_0x4f1c('0x30')](_0x237a22[_0x4f1c('0x2f')]);_0x58548d[_0x4f1c('0x37')]=_[_0x4f1c('0x31')](_0x58548d['model'],_0x58548d[_0x4f1c('0x2f')]);_0x5a13a2['attributes']=_[_0x4f1c('0x31')](_0x58548d[_0x4f1c('0x2c')],qs[_0x4f1c('0x32')](_0x237a22[_0x4f1c('0x2f')][_0x4f1c('0x32')]));_0x5a13a2[_0x4f1c('0x33')]=_0x5a13a2['attributes'][_0x4f1c('0x34')]?_0x5a13a2[_0x4f1c('0x33')]:_0x58548d[_0x4f1c('0x2c')];if(_0x237a22[_0x4f1c('0x2f')]['includeAll']){_0x5a13a2['include']=[{'all':!![]}];}_0x5a13a2=_[_0x4f1c('0x3c')]({},_0x5a13a2,_0x237a22[_0x4f1c('0x3d')]);return db[_0x4f1c('0x28')]['find'](_0x5a13a2)['then'](handleEntityNotFound(_0x39c540,null))['then'](respondWithResult(_0x39c540,null))[_0x4f1c('0x40')](handleError(_0x39c540,null));};exports[_0x4f1c('0x43')]=function(_0x4eecc3,_0x285dad){return db[_0x4f1c('0x28')][_0x4f1c('0x43')](_0x4eecc3[_0x4f1c('0x44')],{})[_0x4f1c('0x23')](respondWithResult(_0x285dad,0xc9))[_0x4f1c('0x40')](handleError(_0x285dad,null));};exports[_0x4f1c('0x22')]=function(_0x311050,_0x599bba){if(_0x311050[_0x4f1c('0x44')]['id']){delete _0x311050[_0x4f1c('0x44')]['id'];}return db['WhatsappTransferReport'][_0x4f1c('0x45')]({'where':{'id':_0x311050[_0x4f1c('0x42')]['id']}})[_0x4f1c('0x23')](handleEntityNotFound(_0x599bba,null))[_0x4f1c('0x23')](saveUpdates(_0x311050[_0x4f1c('0x44')],null))[_0x4f1c('0x23')](respondWithResult(_0x599bba,null))[_0x4f1c('0x40')](handleError(_0x599bba,null));};exports[_0x4f1c('0x24')]=function(_0xc3ca89,_0x5eff4b){return db[_0x4f1c('0x28')][_0x4f1c('0x45')]({'where':{'id':_0xc3ca89['params']['id']}})[_0x4f1c('0x23')](handleEntityNotFound(_0x5eff4b,null))['then'](removeEntity(_0x5eff4b,null))[_0x4f1c('0x40')](handleError(_0x5eff4b,null));};exports[_0x4f1c('0x46')]=function(_0x321d2a,_0x5e0321){return db['WhatsappTransferReport']['describe']()[_0x4f1c('0x23')](respondWithResult(_0x5e0321,null))[_0x4f1c('0x40')](handleError(_0x5e0321,null));};
\ No newline at end of file
index d83a035..3e737e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb409=['rimraf','../../config/environment','./whatsappTransferReport.attributes','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x47907a,_0x50e497){var _0x5eaaf0=function(_0x42e4b8){while(--_0x42e4b8){_0x47907a['push'](_0x47907a['shift']());}};_0x5eaaf0(++_0x50e497);}(_0xb409,0x19d));var _0x9b40=function(_0x518974,_0xe08428){_0x518974=_0x518974-0x0;var _0x4a02d5=_0xb409[_0x518974];return _0x4a02d5;};'use strict';var _=require(_0x9b40('0x0'));var util=require(_0x9b40('0x1'));var logger=require(_0x9b40('0x2'))(_0x9b40('0x3'));var moment=require(_0x9b40('0x4'));var BPromise=require(_0x9b40('0x5'));var rp=require(_0x9b40('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9b40('0x7'));var config=require(_0x9b40('0x8'));var attributes=require(_0x9b40('0x9'));module['exports']=function(_0x4eb727,_0x40f275){return _0x4eb727[_0x9b40('0xa')](_0x9b40('0xb'),attributes,{'tableName':_0x9b40('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x9b40('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0bcd=['util','moment','bluebird','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid'];(function(_0x864484,_0x8d1543){var _0x18d472=function(_0x24b657){while(--_0x24b657){_0x864484['push'](_0x864484['shift']());}};_0x18d472(++_0x8d1543);}(_0x0bcd,0xe7));var _0xd0bc=function(_0x507b0e,_0x60eae8){_0x507b0e=_0x507b0e-0x0;var _0x42c3d1=_0x0bcd[_0x507b0e];return _0x42c3d1;};'use strict';var _=require('lodash');var util=require(_0xd0bc('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xd0bc('0x1'));var BPromise=require(_0xd0bc('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd0bc('0x3'));var rimraf=require(_0xd0bc('0x4'));var config=require(_0xd0bc('0x5'));var attributes=require(_0xd0bc('0x6'));module['exports']=function(_0x34c931,_0x52cac4){return _0x34c931[_0xd0bc('0x7')](_0xd0bc('0x8'),attributes,{'tableName':_0xd0bc('0x9'),'paranoid':![],'indexes':[{'name':_0xd0bc('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 10363c2..3dab18d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8aa=['stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x19409d,_0xf48905){var _0x5de146=function(_0x117745){while(--_0x117745){_0x19409d['push'](_0x19409d['shift']());}};_0x5de146(++_0xf48905);}(_0xb8aa,0x18d));var _0xab8a=function(_0x30f3b0,_0x5bdf94){_0x30f3b0=_0x30f3b0-0x0;var _0x1cb074=_0xb8aa[_0x30f3b0];return _0x1cb074;};'use strict';var _=require(_0xab8a('0x0'));var util=require(_0xab8a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xab8a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab8a('0x3'))['db'];var utils=require(_0xab8a('0x4'));var logger=require(_0xab8a('0x5'))(_0xab8a('0x6'));var config=require(_0xab8a('0x7'));var jayson=require(_0xab8a('0x8'));var client=jayson['client'][_0xab8a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d5b91,_0x3444a4,_0x73340c){return new BPromise(function(_0x1c4f56,_0x498516){return client[_0xab8a('0xa')](_0x4d5b91,_0x73340c)[_0xab8a('0xb')](function(_0x51b0df){logger[_0xab8a('0xc')](_0xab8a('0xd'),_0x3444a4,_0xab8a('0xe'));logger[_0xab8a('0xf')](_0xab8a('0x10'),_0x3444a4,'request\x20sent',JSON[_0xab8a('0x11')](_0x51b0df));if(_0x51b0df[_0xab8a('0x12')]){if(_0x51b0df[_0xab8a('0x12')][_0xab8a('0x13')]===0x1f4){logger[_0xab8a('0x12')](_0xab8a('0xd'),_0x3444a4,_0x51b0df[_0xab8a('0x12')][_0xab8a('0x14')]);return _0x498516(_0x51b0df[_0xab8a('0x12')][_0xab8a('0x14')]);}logger[_0xab8a('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3444a4,_0x51b0df['error']['message']);return _0x1c4f56(_0x51b0df['error']['message']);}else{logger['info'](_0xab8a('0xd'),_0x3444a4,_0xab8a('0xe'));_0x1c4f56(_0x51b0df[_0xab8a('0x15')]['message']);}})[_0xab8a('0x16')](function(_0x3641da){logger[_0xab8a('0x12')](_0xab8a('0xd'),_0x3444a4,_0x3641da);_0x498516(_0x3641da);});});}
\ No newline at end of file
+var _0xae2c=['client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4e667e,_0x112720){var _0x454ef3=function(_0x1b22c5){while(--_0x1b22c5){_0x4e667e['push'](_0x4e667e['shift']());}};_0x454ef3(++_0x112720);}(_0xae2c,0x1f0));var _0xcae2=function(_0x5dd163,_0x32da59){_0x5dd163=_0x5dd163-0x0;var _0xc66814=_0xae2c[_0x5dd163];return _0xc66814;};'use strict';var _=require(_0xcae2('0x0'));var util=require(_0xcae2('0x1'));var moment=require(_0xcae2('0x2'));var BPromise=require(_0xcae2('0x3'));var rs=require(_0xcae2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcae2('0x5'));var logger=require(_0xcae2('0x6'))(_0xcae2('0x7'));var config=require(_0xcae2('0x8'));var jayson=require(_0xcae2('0x9'));var client=jayson[_0xcae2('0xa')][_0xcae2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x68b8d9,_0x5127bd,_0x141861){return new BPromise(function(_0x1cee9c,_0x131387){return client[_0xcae2('0xc')](_0x68b8d9,_0x141861)[_0xcae2('0xd')](function(_0x4e0750){logger[_0xcae2('0xe')](_0xcae2('0xf'),_0x5127bd,'request\x20sent');logger[_0xcae2('0x10')](_0xcae2('0x11'),_0x5127bd,'request\x20sent',JSON[_0xcae2('0x12')](_0x4e0750));if(_0x4e0750[_0xcae2('0x13')]){if(_0x4e0750[_0xcae2('0x13')][_0xcae2('0x14')]===0x1f4){logger[_0xcae2('0x13')](_0xcae2('0xf'),_0x5127bd,_0x4e0750['error']['message']);return _0x131387(_0x4e0750[_0xcae2('0x13')][_0xcae2('0x15')]);}logger['error'](_0xcae2('0xf'),_0x5127bd,_0x4e0750[_0xcae2('0x13')][_0xcae2('0x15')]);return _0x1cee9c(_0x4e0750[_0xcae2('0x13')][_0xcae2('0x15')]);}else{logger['info'](_0xcae2('0xf'),_0x5127bd,'request\x20sent');_0x1cee9c(_0x4e0750['result'][_0xcae2('0x15')]);}})[_0xcae2('0x16')](function(_0x367f2d){logger[_0xcae2('0x13')](_0xcae2('0xf'),_0x5127bd,_0x367f2d);_0x131387(_0x367f2d);});});}
\ No newline at end of file
index 746fe43..081b3e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2494=['filter','exitCode','number','length','pm2_env','name','Online\x20apps:','online','join','Offline\x20apps:','map','None','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','then','seedDB','default','listen','info','start'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x2494,0x82));var _0x4249=function(_0x1a6327,_0x22b7e6){_0x1a6327=_0x1a6327-0x0;var _0x576843=_0x2494[_0x1a6327];return _0x576843;};'use strict';var _=require(_0x4249('0x0'));var db=require('./mysqldb')['db'];var seedDb=require(_0x4249('0x1'));var checkLicense=require(_0x4249('0x2'));var rpc=require(_0x4249('0x3'));var config=require(_0x4249('0x4'));var logger=require(_0x4249('0x5'))(_0x4249('0x6'));var pm2=require('./config/pm2');var pm2Config=require('./config/pm2/config');var schedule=require(_0x4249('0x7'));var chat=require('./config/schedule/chat');var whatsapp=require(_0x4249('0x8'));var transcribe=require(_0x4249('0x9'));var provider=require(_0x4249('0xa'));function main(){return db['sequelize'][_0x4249('0xb')]()[_0x4249('0xc')](function(){if(config[_0x4249('0xd')]){return seedDb['default']();}})['then'](function(){return checkLicense[_0x4249('0xe')]();})[_0x4249('0xc')](function(){return rpc[_0x4249('0xf')]();})[_0x4249('0xc')](function(_0x4a8ff2){logger[_0x4249('0x10')](_0x4a8ff2);return chat[_0x4249('0x11')]();})['then'](function(){return whatsapp['start']();})[_0x4249('0xc')](function(){return schedule['start']();})[_0x4249('0xc')](function(){return transcribe[_0x4249('0x11')]();})['then'](function(){return provider[_0x4249('0x11')]();})[_0x4249('0xc')](function(_0x578cce){logger[_0x4249('0x10')](_0x578cce);return pm2[_0x4249('0x11')](pm2Config);})[_0x4249('0xc')](function(_0x3a514b){var _0x2499ff=_0x3a514b[_0x4249('0x12')](function(_0x49eede){return typeof _0x49eede[_0x4249('0x13')]===_0x4249('0x14')&&_0x49eede['exitCode']>=0x0;});if(_0x2499ff[_0x4249('0x15')]>0x0){throw new Error(_0x2499ff['length']+'\x20processes\x20failed\x20at\x20startup:\x20'+_['map'](_0x2499ff,function(_0x39a6df){return'\x22'+_0x39a6df[_0x4249('0x16')][_0x4249('0x17')]+'\x22';}));}logger[_0x4249('0x10')](_0x4249('0x18'),_['map'](_['filter'](_0x3a514b,{'status':_0x4249('0x19')}),_0x4249('0x17'))[_0x4249('0x1a')]());logger['info'](_0x4249('0x1b'),_[_0x4249('0x1c')](_['filter'](_0x3a514b,function(_0x17399e){return _0x17399e['status']!==_0x4249('0x19');}),_0x4249('0x17'))[_0x4249('0x1a')]()||_0x4249('0x1d'));console[_0x4249('0x1e')](_0x4249('0x1f'));})[_0x4249('0x20')](function(_0x3e30a5){console[_0x4249('0x1e')](_0x4249('0x21'),_0x3e30a5);logger[_0x4249('0x22')](_0x4249('0x23'),_0x3e30a5);process[_0x4249('0x24')](0x1);});}main();
\ No newline at end of file
+var _0x126e=['\x20processes\x20failed\x20at\x20startup:\x20','name','Online\x20apps:','map','online','join','Offline\x20apps:','status','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','then','seedDB','default','listen','info','start','filter','exitCode','number','length'];(function(_0x486c68,_0xbedc08){var _0x460317=function(_0x2108c1){while(--_0x2108c1){_0x486c68['push'](_0x486c68['shift']());}};_0x460317(++_0xbedc08);}(_0x126e,0x108));var _0xe126=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x126e[_0x3ff085];return _0x2b68c3;};'use strict';var _=require('lodash');var db=require(_0xe126('0x0'))['db'];var seedDb=require(_0xe126('0x1'));var checkLicense=require(_0xe126('0x2'));var rpc=require(_0xe126('0x3'));var config=require(_0xe126('0x4'));var logger=require(_0xe126('0x5'))('app');var pm2=require(_0xe126('0x6'));var pm2Config=require(_0xe126('0x7'));var schedule=require(_0xe126('0x8'));var chat=require(_0xe126('0x9'));var whatsapp=require(_0xe126('0xa'));var transcribe=require(_0xe126('0xb'));var provider=require(_0xe126('0xc'));function main(){return db['sequelize'][_0xe126('0xd')]()[_0xe126('0xe')](function(){if(config[_0xe126('0xf')]){return seedDb[_0xe126('0x10')]();}})[_0xe126('0xe')](function(){return checkLicense['default']();})[_0xe126('0xe')](function(){return rpc[_0xe126('0x11')]();})['then'](function(_0xd69bf4){logger[_0xe126('0x12')](_0xd69bf4);return chat['start']();})[_0xe126('0xe')](function(){return whatsapp['start']();})[_0xe126('0xe')](function(){return schedule['start']();})[_0xe126('0xe')](function(){return transcribe[_0xe126('0x13')]();})[_0xe126('0xe')](function(){return provider[_0xe126('0x13')]();})[_0xe126('0xe')](function(_0x1a57c4){logger[_0xe126('0x12')](_0x1a57c4);return pm2['start'](pm2Config);})[_0xe126('0xe')](function(_0x1c02c9){var _0x4d335f=_0x1c02c9[_0xe126('0x14')](function(_0x28d7dd){return typeof _0x28d7dd[_0xe126('0x15')]===_0xe126('0x16')&&_0x28d7dd['exitCode']>=0x0;});if(_0x4d335f[_0xe126('0x17')]>0x0){throw new Error(_0x4d335f[_0xe126('0x17')]+_0xe126('0x18')+_['map'](_0x4d335f,function(_0x2b0baa){return'\x22'+_0x2b0baa['pm2_env'][_0xe126('0x19')]+'\x22';}));}logger[_0xe126('0x12')](_0xe126('0x1a'),_[_0xe126('0x1b')](_[_0xe126('0x14')](_0x1c02c9,{'status':_0xe126('0x1c')}),_0xe126('0x19'))[_0xe126('0x1d')]());logger['info'](_0xe126('0x1e'),_[_0xe126('0x1b')](_[_0xe126('0x14')](_0x1c02c9,function(_0x2e5617){return _0x2e5617[_0xe126('0x1f')]!==_0xe126('0x1c');}),_0xe126('0x19'))[_0xe126('0x1d')]()||'None');console['log'](_0xe126('0x20'));})[_0xe126('0x21')](function(_0x256b05){console['log']('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x256b05);logger['error'](_0xe126('0x22'),_0x256b05);process[_0xe126('0x23')](0x1);});}main();
\ No newline at end of file
index 41e39b9..c7d43b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','unmanaged','Unmanaged.','Forbidden.','catch','headers','authorization','User','name','then','status','json','Wrong\x20credentials.','startsWith','Bearer','query','apikey','getUuid','find','sub','allowedLoginAttempts','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','canUpdate','Forbidden','isWebrtcLicence','webrtc','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','validatePasswordPattern','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','decryptString','length','splice','unshift','join','promisify','sign','secret','verify','secrets','session','randomBytes','now','toString','../../mysqldb','../../config/environment','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','util','moment','role','fullname','internal','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','openchannelPause','pauseType','lastPauseAt','allowmessenger'];(function(_0x2924fe,_0x4331d7){var _0x2f17a7=function(_0x5e80f2){while(--_0x5e80f2){_0x2924fe['push'](_0x2924fe['shift']());}};_0x2f17a7(++_0x4331d7);}(_0xa41a,0x6b));var _0xaa41=function(_0x28556d,_0xd4da57){_0x28556d=_0x28556d-0x0;var _0x241dd0=_0xa41a[_0x28556d];return _0x241dd0;};'use strict';var db=require(_0xaa41('0x0'))['db'];var config=require(_0xaa41('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xaa41('0x2'));var encryptor=require(_0xaa41('0x3'));var _=require(_0xaa41('0x4'));var jwt=require(_0xaa41('0x5'));var expressJwt=require(_0xaa41('0x6'));var compose=require(_0xaa41('0x7'));var basicAuth=require(_0xaa41('0x8'));var crypto=require(_0xaa41('0x9'));var BPromise=require('bluebird');var util=require(_0xaa41('0xa'));var moment=require(_0xaa41('0xb'));var validateJwt=expressJwt({'secret':config['secrets']['session']});var userAttributes=['id',_0xaa41('0xc'),_0xaa41('0xd'),'name',_0xaa41('0xe'),_0xaa41('0xf'),_0xaa41('0x10'),_0xaa41('0x11'),_0xaa41('0x12'),_0xaa41('0x13'),_0xaa41('0x14'),_0xaa41('0x15'),_0xaa41('0x16'),'smsPause',_0xaa41('0x17'),_0xaa41('0x18'),'showWebBar','lastLoginAt',_0xaa41('0x19'),'crudPermissions',_0xaa41('0x1a'),_0xaa41('0x1b'),_0xaa41('0x1c'),_0xaa41('0x1d'),_0xaa41('0x1e'),'phoneBarDnd',_0xaa41('0x1f'),_0xaa41('0x20'),_0xaa41('0x21'),_0xaa41('0x22'),_0xaa41('0x23'),_0xaa41('0x24'),_0xaa41('0x25'),'hotdesk',_0xaa41('0x26'),_0xaa41('0x27'),_0xaa41('0x28'),_0xaa41('0x29'),_0xaa41('0x2a'),_0xaa41('0x2b'),_0xaa41('0x2c'),_0xaa41('0x2d'),_0xaa41('0x2e'),'selectRecallMeCampaign','chatAutoanswer',_0xaa41('0x2f'),_0xaa41('0x30'),_0xaa41('0x31'),'smsAutoanswer',_0xaa41('0x32'),_0xaa41('0x33'),'openchannelAutoanswerDelay','faxAutoanswer',_0xaa41('0x34'),'whatsappAutoanswer',_0xaa41('0x35')];exports[_0xaa41('0x36')]=function(){return this[_0xaa41('0x37')](!![])[_0xaa41('0x38')](function(_0x1d623c,_0x4eb01f,_0x43c430){if(_0x1d623c[_0xaa41('0x39')]){_0x43c430();}else{return db[_0xaa41('0x3a')][_0xaa41('0x3b')]({'where':{'id':_0x1d623c[_0xaa41('0x3c')]['id']},'attributes':['id',_0xaa41('0x3d'),'disposition'],'raw':!![]})['then'](function(_0x16aec5){if(_0x16aec5&&_0x16aec5['closed']){return _0x4eb01f['status'](_0x16aec5[_0xaa41('0x3e')]==='unmanaged'?0x195:0x193)['json']({'message':_0x16aec5[_0xaa41('0x3e')]===_0xaa41('0x3f')?_0xaa41('0x40'):_0xaa41('0x41')});}else{_0x43c430();}})[_0xaa41('0x42')](function(_0xa7269f){_0x43c430(_0xa7269f);});}});};exports['isAuthenticated']=function isAuthenticated(_0x30a174){return compose()[_0xaa41('0x38')](function(_0x63c18c,_0x9a16e3,_0x1d8c2b){var _0x4466a3;if(_0x63c18c[_0xaa41('0x43')][_0xaa41('0x44')]){if(_['startsWith'](_0x63c18c[_0xaa41('0x43')]['authorization'],'Basic')){var _0x714537=basicAuth(_0x63c18c);db[_0xaa41('0x45')]['find']({'where':{'name':_0x714537[_0xaa41('0x46')]}})[_0xaa41('0x47')](function(_0x4e3b44){if(!_0x4e3b44||!_0x4e3b44['authenticate'](_0x714537['pass'])){return _0x9a16e3[_0xaa41('0x48')](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x4a')});}_0x63c18c[_0xaa41('0x39')]={'id':_0x4e3b44['id']};_0x1d8c2b();})['catch'](function(_0x289c4a){_0x1d8c2b(_0x289c4a);});}else if(_[_0xaa41('0x4b')](_0x63c18c[_0xaa41('0x43')]['authorization'],_0xaa41('0x4c'))){validateJwt(_0x63c18c,_0x9a16e3,_0x1d8c2b);}else{if(_0x30a174){_0x1d8c2b();}else{return _0x9a16e3[_0xaa41('0x48')](0x193)[_0xaa41('0x49')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x63c18c[_0xaa41('0x4d')][_0xaa41('0x4e')]){try{var _0x57fe1d={'audience':hardwareConf[_0xaa41('0x4f')](),'issuer':hardwareConf[_0xaa41('0x4f')]()};verifyJwt(_0x63c18c[_0xaa41('0x4d')]['apikey'],_0x57fe1d)[_0xaa41('0x47')](function(_0x48335f){return db[_0xaa41('0x45')][_0xaa41('0x50')]({'where':{'id':_0x48335f[_0xaa41('0x51')]}})['then'](function(_0x526377){_0x4466a3=_0x526377;return db['Setting'][_0xaa41('0x3b')]({'where':{'id':0x1},'attributes':[_0xaa41('0x52'),_0xaa41('0x53')],'raw':!![]});})[_0xaa41('0x47')](function(_0x4fbb92){if(!_0x4466a3||!_['isEqual'](_0x4466a3[_0xaa41('0x54')],_0x48335f[_0xaa41('0x55')])){return _0x9a16e3[_0xaa41('0x48')](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x56')});}if(_0x4466a3[_0xaa41('0x57')]){return _0x9a16e3[_0xaa41('0x48')](0x191)['json']({'message':_0xaa41('0x58')});}if(_0x4466a3[_0xaa41('0x59')]){if(_0x4fbb92[_0xaa41('0x53')]>0x0){if(moment(_0x4466a3[_0xaa41('0x5a')])['add'](_0x4fbb92['blockDuration'],_0xaa41('0x5b'))>moment()){return _0x9a16e3[_0xaa41('0x48')](0x191)['json']({'message':_0xaa41('0x58')});}}else{return _0x9a16e3['status'](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x58')});}}_0x63c18c[_0xaa41('0x39')]={'id':_0x4466a3['id']};_0x1d8c2b();});})[_0xaa41('0x42')](function(){return _0x9a16e3[_0xaa41('0x48')](0x191)[_0xaa41('0x49')]({'message':_0xaa41('0x58')});});}catch(_0x21f204){_0x1d8c2b(_0x21f204);}}else if(_0x30a174){_0x1d8c2b();}else{return _0x9a16e3['status'](0x193)[_0xaa41('0x49')]({'message':_0xaa41('0x5c')});}})[_0xaa41('0x38')](function(_0x398c35,_0xc84fb8,_0x1e2eb2){if(_0x398c35['user']){db['User'][_0xaa41('0x50')]({'where':{'id':_0x398c35['user']['id']},'attributes':userAttributes})[_0xaa41('0x47')](function(_0x215896){if(!_0x215896){return _0xc84fb8[_0xaa41('0x48')](0x194)[_0xaa41('0x49')]({'message':_0xaa41('0x5d')});}_0x398c35[_0xaa41('0x39')]=_0x215896;_0x1e2eb2();})[_0xaa41('0x42')](function(_0x5ee74c){_0x1e2eb2(_0x5ee74c);});}else if(_0x30a174){_0x1e2eb2();}else{return _0xc84fb8[_0xaa41('0x48')](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xaa41('0x5e')]=function canUpdate(){return compose()['use'](function(_0x57240d,_0x5274c9,_0x3bad48){return licenseUtil['getLicense']()[_0xaa41('0x47')](function(_0x198716){if(_0x198716['update']){_0x3bad48();}else{return _0x5274c9['status'](0x193)[_0xaa41('0x49')]({'message':_0xaa41('0x5f')});}})[_0xaa41('0x42')](function(_0x2af8ba){_0x3bad48(_0x2af8ba);});});};exports[_0xaa41('0x60')]=function isWebrtcLicence(){return compose()[_0xaa41('0x38')](function(_0x258096,_0x37bf5d,_0x2fa6ec){return licenseUtil['getLicense']()[_0xaa41('0x47')](function(_0x22d512){if(_0x22d512[_0xaa41('0x61')]){_0x2fa6ec();}else{return _0x37bf5d[_0xaa41('0x48')](0x193)[_0xaa41('0x49')]({'message':_0xaa41('0x5f')});}})['catch'](function(_0x406824){_0x2fa6ec(_0x406824);});});};exports[_0xaa41('0x62')]=function(_0x1f50c,_0x2288f8,_0x57d1f6){_0x1f50c[_0xaa41('0x62')]=!![];return _0x57d1f6();};exports['signToken']=function signToken(_0x49fedd){return signJwt(_0x49fedd);};exports[_0xaa41('0x63')]=function(_0xe0eec0,_0x3e16ef){if(!_0xe0eec0['user']){return _0x3e16ef[_0xaa41('0x48')](0x194)[_0xaa41('0x49')]({'message':_0xaa41('0x64')});}var _0x48fa37={'payload':{'id':_0xe0eec0[_0xaa41('0x39')]['id'],'role':_0xe0eec0[_0xaa41('0x39')][_0xaa41('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x48fa37)[_0xaa41('0x47')](function(_0x37fbe2){_0x3e16ef[_0xaa41('0x65')](_0xaa41('0x66'),_0x37fbe2);_0x3e16ef[_0xaa41('0x67')]('/dashboards/general');})[_0xaa41('0x42')](function(_0x5bef5f){return _0x3e16ef['status'](0x1f4)[_0xaa41('0x68')](_0x5bef5f);});};exports[_0xaa41('0x69')]=function(_0x3fef3e){if(_[_0xaa41('0x6a')](_0x3fef3e[_0xaa41('0x54')])||_[_0xaa41('0x6a')](_0x3fef3e[_0xaa41('0x6b')])){return null;}else{return createJwt(_0x3fef3e);}};exports[_0xaa41('0x6c')]=function(_0x519e39){_0x519e39[_0xaa41('0x54')]=generateNonce();_0x519e39[_0xaa41('0x6b')]=generateIssuedAt();return createJwt(_0x519e39);};exports[_0xaa41('0x6d')]=function(_0x4f9e92,_0x2e0f53){var _0x35f664=_0x4f9e92['query'][_0xaa41('0x4e')];if(_0x35f664){var _0xd36d1a={'nonce':_0x2e0f53[_0xaa41('0x54')],'iat':_0x2e0f53['apiKeyIat'],'audience':hardwareConf[_0xaa41('0x4f')](),'issuer':hardwareConf[_0xaa41('0x4f')]()};return verifyJwt(_0x35f664,_0xd36d1a)['then'](function(){return generateApiKey(_0x2e0f53);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0xaa41('0x6e')]=function(_0x3cd14f){var _0x3a29d2=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3a29d2['test'](_0x3cd14f))throw new db[(_0xaa41('0x6f'))][(_0xaa41('0x70'))](_0xaa41('0x71'));return;};exports[_0xaa41('0x72')]=function(_0x2abb78,_0x5ccdc5,_0x2ae70c){var _0x57cb70=encryptor['decryptString'](_0x5ccdc5)[_0xaa41('0x73')](',');for(var _0x52ae7f=0x0;_0x52ae7f<_0x2ae70c;_0x52ae7f++){if(!_0x57cb70[_0x52ae7f])break;if(_0x2abb78[_0xaa41('0x74')]()===_0x57cb70[_0x52ae7f][_0xaa41('0x74')]()){var _0x169ddf=util['format'](_0xaa41('0x75'),_0x2ae70c);if(_0x2ae70c===0x1){_0x169ddf=_0xaa41('0x76');}throw new db[(_0xaa41('0x6f'))][(_0xaa41('0x70'))](_0x169ddf);}}return;};exports[_0xaa41('0x77')]=function(_0x332a3c,_0xc56018){var _0x337059=_0xc56018?encryptor[_0xaa41('0x78')](_0xc56018)['split'](','):[];if(_0x337059[_0xaa41('0x79')]===0x5){_0x337059[_0xaa41('0x7a')](-0x1,0x1);}_0x337059[_0xaa41('0x7b')](_0x332a3c);return encryptor['encryptString'](_0x337059[_0xaa41('0x7c')](','));};function signJwt(_0x2caf5c){var _0x157898=BPromise[_0xaa41('0x7d')](jwt[_0xaa41('0x7e')],{'context':jwt});var _0xfbe748=_0x2caf5c[_0xaa41('0x7f')]||config['secrets']['session'];return new BPromise(function(_0x5cb34d,_0x540325){_0x157898(_0x2caf5c['payload'],_0xfbe748,_0x2caf5c['options'])[_0xaa41('0x47')](function(_0x50b598){_0x5cb34d(_0x50b598);})['catch'](function(_0x24c6f3){_0x540325(_0x24c6f3);});});}function verifyJwt(_0x40a524,_0x1a877b,_0x312eee){var _0x5cabc4=BPromise[_0xaa41('0x7d')](jwt[_0xaa41('0x80')],{'context':jwt});var _0x1ddb6c=_0x312eee||config[_0xaa41('0x81')][_0xaa41('0x82')];return new BPromise(function(_0x41ca40,_0x46ebcd){_0x5cabc4(_0x40a524,_0x1ddb6c,_0x1a877b)[_0xaa41('0x47')](function(_0x1795d1){_0x41ca40(_0x1795d1);})['catch'](function(_0x185600){_0x46ebcd(_0x185600);});});}function generateNonce(){return crypto[_0xaa41('0x83')](0x10)['toString']('hex');}function generateIssuedAt(){return Math['floor'](Date[_0xaa41('0x84')]()/0x3e8)['toString']();}function createJwt(_0x1eac4a){var _0x5c8028={'payload':{'iat':_0x1eac4a[_0xaa41('0x6b')],'nonce':_0x1eac4a[_0xaa41('0x54')]},'options':{'algorithm':'HS512','subject':_0x1eac4a['id'][_0xaa41('0x85')](),'issuer':hardwareConf[_0xaa41('0x4f')](),'audience':hardwareConf[_0xaa41('0x4f')]()}};return signJwt(_0x5c8028)[_0xaa41('0x47')](function(_0x5a2683){return{'iat':_0x1eac4a['apiKeyIat'],'nonce':_0x1eac4a[_0xaa41('0x54')],'token':_0x5a2683};});}
\ No newline at end of file
+var _0x3e74=['util','moment','session','role','fullname','name','internal','userpic','voicePause','chatPause','faxPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','interface','userProfileId','privacyEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','params','closed','then','disposition','unmanaged','json','Forbidden.','headers','authorization','startsWith','Basic','User','find','authenticate','pass','status','Wrong\x20credentials.','catch','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','allowedLoginAttempts','blockDuration','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','apiKeyNonce','isNil','generateApiKey','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','length','join','promisify','secret','secrets','payload','options','randomBytes','toString','floor','now','../../mysqldb','../../config/license/hardware','../../config/license/util','../encryptor','express-jwt','basic-auth','crypto','bluebird'];(function(_0x2b10d1,_0x183dc0){var _0xf5ea65=function(_0x53a93f){while(--_0x53a93f){_0x2b10d1['push'](_0x2b10d1['shift']());}};_0xf5ea65(++_0x183dc0);}(_0x3e74,0x175));var _0x43e7=function(_0x16f131,_0x442796){_0x16f131=_0x16f131-0x0;var _0x14f1a0=_0x3e74[_0x16f131];return _0x14f1a0;};'use strict';var db=require(_0x43e7('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0x43e7('0x1'));var licenseUtil=require(_0x43e7('0x2'));var encryptor=require(_0x43e7('0x3'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x43e7('0x4'));var compose=require('composable-middleware');var basicAuth=require(_0x43e7('0x5'));var crypto=require(_0x43e7('0x6'));var BPromise=require(_0x43e7('0x7'));var util=require(_0x43e7('0x8'));var moment=require(_0x43e7('0x9'));var validateJwt=expressJwt({'secret':config['secrets'][_0x43e7('0xa')]});var userAttributes=['id',_0x43e7('0xb'),_0x43e7('0xc'),_0x43e7('0xd'),_0x43e7('0xe'),'email',_0x43e7('0xf'),'permissions','md5secret',_0x43e7('0x10'),_0x43e7('0x11'),'mailPause',_0x43e7('0x12'),'smsPause',_0x43e7('0x13'),_0x43e7('0x14'),'showWebBar',_0x43e7('0x15'),_0x43e7('0x16'),_0x43e7('0x17'),_0x43e7('0x18'),'passwordResetAt','alias',_0x43e7('0x19'),_0x43e7('0x1a'),_0x43e7('0x1b'),'phoneBarEnableRecording','phoneBarEnableDtmfTone',_0x43e7('0x1c'),_0x43e7('0x1d'),_0x43e7('0x1e'),_0x43e7('0x1f'),'phoneBarRemoteControlPort','hotdesk',_0x43e7('0x20'),_0x43e7('0x21'),_0x43e7('0x22'),'settingsEnabled','wssPort',_0x43e7('0x23'),_0x43e7('0x24'),_0x43e7('0x25'),_0x43e7('0x26'),_0x43e7('0x27'),_0x43e7('0x28'),_0x43e7('0x29'),_0x43e7('0x2a'),_0x43e7('0x2b'),_0x43e7('0x2c'),_0x43e7('0x2d'),_0x43e7('0x2e'),'openchannelAutoanswerDelay',_0x43e7('0x2f'),_0x43e7('0x30'),'whatsappAutoanswer',_0x43e7('0x31')];exports[_0x43e7('0x32')]=function(){return this[_0x43e7('0x33')](!![])[_0x43e7('0x34')](function(_0x4077fb,_0x2f4cb4,_0x54a9e7){if(_0x4077fb[_0x43e7('0x35')]){_0x54a9e7();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x4077fb[_0x43e7('0x36')]['id']},'attributes':['id',_0x43e7('0x37'),'disposition'],'raw':!![]})[_0x43e7('0x38')](function(_0x4ca5cf){if(_0x4ca5cf&&_0x4ca5cf[_0x43e7('0x37')]){return _0x2f4cb4['status'](_0x4ca5cf[_0x43e7('0x39')]===_0x43e7('0x3a')?0x195:0x193)[_0x43e7('0x3b')]({'message':_0x4ca5cf[_0x43e7('0x39')]==='unmanaged'?'Unmanaged.':_0x43e7('0x3c')});}else{_0x54a9e7();}})['catch'](function(_0x2dd5f){_0x54a9e7(_0x2dd5f);});}});};exports[_0x43e7('0x33')]=function isAuthenticated(_0x3565cf){return compose()[_0x43e7('0x34')](function(_0x5087d7,_0x33a1a5,_0x4690a6){var _0x45b675;if(_0x5087d7[_0x43e7('0x3d')][_0x43e7('0x3e')]){if(_[_0x43e7('0x3f')](_0x5087d7[_0x43e7('0x3d')][_0x43e7('0x3e')],_0x43e7('0x40'))){var _0x35dbcd=basicAuth(_0x5087d7);db[_0x43e7('0x41')][_0x43e7('0x42')]({'where':{'name':_0x35dbcd[_0x43e7('0xd')]}})[_0x43e7('0x38')](function(_0x4bdb17){if(!_0x4bdb17||!_0x4bdb17[_0x43e7('0x43')](_0x35dbcd[_0x43e7('0x44')])){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x46')});}_0x5087d7['user']={'id':_0x4bdb17['id']};_0x4690a6();})[_0x43e7('0x47')](function(_0x49b83d){_0x4690a6(_0x49b83d);});}else if(_[_0x43e7('0x3f')](_0x5087d7[_0x43e7('0x3d')]['authorization'],'Bearer')){validateJwt(_0x5087d7,_0x33a1a5,_0x4690a6);}else{if(_0x3565cf){_0x4690a6();}else{return _0x33a1a5['status'](0x193)[_0x43e7('0x3b')]({'message':_0x43e7('0x48')});}}}else if(_0x5087d7[_0x43e7('0x49')][_0x43e7('0x4a')]){try{var _0x108313={'audience':hardwareConf[_0x43e7('0x4b')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x5087d7['query']['apikey'],_0x108313)['then'](function(_0x4e8e86){return db['User']['find']({'where':{'id':_0x4e8e86[_0x43e7('0x4c')]}})['then'](function(_0x2b4bfd){_0x45b675=_0x2b4bfd;return db[_0x43e7('0x4d')][_0x43e7('0x4e')]({'where':{'id':0x1},'attributes':[_0x43e7('0x4f'),_0x43e7('0x50')],'raw':!![]});})[_0x43e7('0x38')](function(_0x101d45){if(!_0x45b675||!_['isEqual'](_0x45b675['apiKeyNonce'],_0x4e8e86['nonce'])){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x51')});}if(_0x45b675[_0x43e7('0x52')]){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}if(_0x45b675[_0x43e7('0x54')]){if(_0x101d45['blockDuration']>0x0){if(moment(_0x45b675[_0x43e7('0x55')])[_0x43e7('0x56')](_0x101d45['blockDuration'],_0x43e7('0x57'))>moment()){return _0x33a1a5['status'](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}}else{return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}}_0x5087d7[_0x43e7('0x35')]={'id':_0x45b675['id']};_0x4690a6();});})['catch'](function(){return _0x33a1a5['status'](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});});}catch(_0x44b6ae){_0x4690a6(_0x44b6ae);}}else if(_0x3565cf){_0x4690a6();}else{return _0x33a1a5[_0x43e7('0x45')](0x193)[_0x43e7('0x3b')]({'message':'Unknown\x20authorization\x20format'});}})[_0x43e7('0x34')](function(_0x4227c4,_0x575439,_0x3628e0){if(_0x4227c4['user']){db[_0x43e7('0x41')]['find']({'where':{'id':_0x4227c4[_0x43e7('0x35')]['id']},'attributes':userAttributes})[_0x43e7('0x38')](function(_0x3a5807){if(!_0x3a5807){return _0x575439[_0x43e7('0x45')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x4227c4[_0x43e7('0x35')]=_0x3a5807;_0x3628e0();})[_0x43e7('0x47')](function(_0xe979b5){_0x3628e0(_0xe979b5);});}else if(_0x3565cf){_0x3628e0();}else{return _0x575439[_0x43e7('0x45')](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports['canUpdate']=function canUpdate(){return compose()[_0x43e7('0x34')](function(_0x57f5d0,_0x2ab022,_0x4b3a59){return licenseUtil['getLicense']()[_0x43e7('0x38')](function(_0x5ee1c5){if(_0x5ee1c5[_0x43e7('0x58')]){_0x4b3a59();}else{return _0x2ab022[_0x43e7('0x45')](0x193)[_0x43e7('0x3b')]({'message':_0x43e7('0x59')});}})['catch'](function(_0x91f1e4){_0x4b3a59(_0x91f1e4);});});};exports[_0x43e7('0x5a')]=function isWebrtcLicence(){return compose()[_0x43e7('0x34')](function(_0x1fd277,_0x296dc8,_0x1efe59){return licenseUtil['getLicense']()['then'](function(_0x3bc9de){if(_0x3bc9de[_0x43e7('0x5b')]){_0x1efe59();}else{return _0x296dc8[_0x43e7('0x45')](0x193)['json']({'message':'Forbidden'});}})['catch'](function(_0x292ded){_0x1efe59(_0x292ded);});});};exports[_0x43e7('0x5c')]=function(_0x52b098,_0x351ca2,_0x47686e){_0x52b098[_0x43e7('0x5c')]=!![];return _0x47686e();};exports['signToken']=function signToken(_0x593155){return signJwt(_0x593155);};exports['setTokenCookie']=function(_0x4de644,_0x214e7e){if(!_0x4de644[_0x43e7('0x35')]){return _0x214e7e['status'](0x194)[_0x43e7('0x3b')]({'message':_0x43e7('0x5d')});}var _0x426bcb={'payload':{'id':_0x4de644[_0x43e7('0x35')]['id'],'role':_0x4de644['user'][_0x43e7('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x426bcb)['then'](function(_0x4bebd4){_0x214e7e[_0x43e7('0x5e')](_0x43e7('0x5f'),_0x4bebd4);_0x214e7e[_0x43e7('0x60')](_0x43e7('0x61'));})[_0x43e7('0x47')](function(_0x2351cf){return _0x214e7e[_0x43e7('0x45')](0x1f4)[_0x43e7('0x62')](_0x2351cf);});};exports[_0x43e7('0x63')]=function(_0x2b5515){if(_['isNil'](_0x2b5515[_0x43e7('0x64')])||_[_0x43e7('0x65')](_0x2b5515['apiKeyIat'])){return null;}else{return createJwt(_0x2b5515);}};exports[_0x43e7('0x66')]=function(_0x4e6f6d){_0x4e6f6d[_0x43e7('0x64')]=generateNonce();_0x4e6f6d[_0x43e7('0x67')]=generateIssuedAt();return createJwt(_0x4e6f6d);};exports[_0x43e7('0x68')]=function(_0x1f561f,_0xfe13fa){var _0x5e5556=_0x1f561f['query'][_0x43e7('0x4a')];if(_0x5e5556){var _0x2ab7ee={'nonce':_0xfe13fa[_0x43e7('0x64')],'iat':_0xfe13fa[_0x43e7('0x67')],'audience':hardwareConf[_0x43e7('0x4b')](),'issuer':hardwareConf[_0x43e7('0x4b')]()};return verifyJwt(_0x5e5556,_0x2ab7ee)[_0x43e7('0x38')](function(){return generateApiKey(_0xfe13fa);});}else{throw{'message':_0x43e7('0x69')};}};exports[_0x43e7('0x6a')]=function(_0x24e758){var _0x312306=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x312306['test'](_0x24e758))throw new db[(_0x43e7('0x6b'))][(_0x43e7('0x6c'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x43e7('0x6d')]=function(_0x220bf2,_0x2d0052,_0x558d54){var _0x5d63c6=encryptor[_0x43e7('0x6e')](_0x2d0052)[_0x43e7('0x6f')](',');for(var _0x4ebdde=0x0;_0x4ebdde<_0x558d54;_0x4ebdde++){if(!_0x5d63c6[_0x4ebdde])break;if(_0x220bf2[_0x43e7('0x70')]()===_0x5d63c6[_0x4ebdde]['toLowerCase']()){var _0x49a6ce=util[_0x43e7('0x71')](_0x43e7('0x72'),_0x558d54);if(_0x558d54===0x1){_0x49a6ce=_0x43e7('0x73');}throw new db[(_0x43e7('0x6b'))][(_0x43e7('0x6c'))](_0x49a6ce);}}return;};exports['updatePasswordsHistory']=function(_0xc3976,_0xdb9fbe){var _0x4d89bd=_0xdb9fbe?encryptor[_0x43e7('0x6e')](_0xdb9fbe)[_0x43e7('0x6f')](','):[];if(_0x4d89bd[_0x43e7('0x74')]===0x5){_0x4d89bd['splice'](-0x1,0x1);}_0x4d89bd['unshift'](_0xc3976);return encryptor['encryptString'](_0x4d89bd[_0x43e7('0x75')](','));};function signJwt(_0x4058ce){var _0x323cf7=BPromise[_0x43e7('0x76')](jwt['sign'],{'context':jwt});var _0x5a50fc=_0x4058ce[_0x43e7('0x77')]||config[_0x43e7('0x78')][_0x43e7('0xa')];return new BPromise(function(_0x5dd349,_0x5ea0db){_0x323cf7(_0x4058ce[_0x43e7('0x79')],_0x5a50fc,_0x4058ce[_0x43e7('0x7a')])[_0x43e7('0x38')](function(_0x2a194d){_0x5dd349(_0x2a194d);})[_0x43e7('0x47')](function(_0xd41e79){_0x5ea0db(_0xd41e79);});});}function verifyJwt(_0x4665db,_0x46748f,_0x406155){var _0x381208=BPromise[_0x43e7('0x76')](jwt['verify'],{'context':jwt});var _0x5f3824=_0x406155||config[_0x43e7('0x78')]['session'];return new BPromise(function(_0x501616,_0x50edb2){_0x381208(_0x4665db,_0x5f3824,_0x46748f)[_0x43e7('0x38')](function(_0xe666b0){_0x501616(_0xe666b0);})['catch'](function(_0xfe5a8d){_0x50edb2(_0xfe5a8d);});});}function generateNonce(){return crypto[_0x43e7('0x7b')](0x10)[_0x43e7('0x7c')]('hex');}function generateIssuedAt(){return Math[_0x43e7('0x7d')](Date[_0x43e7('0x7e')]()/0x3e8)[_0x43e7('0x7c')]();}function createJwt(_0xc9723){var _0x2f43d7={'payload':{'iat':_0xc9723[_0x43e7('0x67')],'nonce':_0xc9723[_0x43e7('0x64')]},'options':{'algorithm':'HS512','subject':_0xc9723['id'][_0x43e7('0x7c')](),'issuer':hardwareConf[_0x43e7('0x4b')](),'audience':hardwareConf[_0x43e7('0x4b')]()}};return signJwt(_0x2f43d7)['then'](function(_0x56b06d){return{'iat':_0xc9723[_0x43e7('0x67')],'nonce':_0xc9723['apiKeyNonce'],'token':_0x56b06d};});}
\ No newline at end of file
index 9ed5d56..af1d781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['user','clause','tags','skip','checkListsRestrictions','ids','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','keys','startsWith','cf_','map','CmCustomField','findOne','slice','all','fieldType','type','lodash','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','parseQueryParameters','default','where','fields','filter'];(function(_0x4a9f9a,_0x51c29b){var _0x3a171e=function(_0x18c341){while(--_0x18c341){_0x4a9f9a['push'](_0x4a9f9a['shift']());}};_0x3a171e(++_0x51c29b);}(_0xb10b,0x12a));var _0xbb10=function(_0xa1ae5c,_0x44beef){_0xa1ae5c=_0xa1ae5c-0x0;var _0x4573c1=_0xb10b[_0xa1ae5c];return _0x4573c1;};'use strict';var _=require(_0xbb10('0x0'));var sqlUtils=require('./sql-utils');var db=require(_0xbb10('0x1'))['db'];exports[_0xbb10('0x2')]=function(_0x1dcb08,_0x4d688c,_0x4541ae,_0x9bbed){var _0x460981={'count':0x0,'rows':[]};var _0x22320e=sqlUtils[_0xbb10('0x3')](_0x4d688c,_0x1dcb08);if(_0x22320e){return Promise[_0xbb10('0x4')](_0x460981);}var _0x481979=sqlUtils[_0xbb10('0x5')]();var _0x3cdd53={};var _0x513741=![];var _0x1b9e94=![];return Promise[_0xbb10('0x4')]()[_0xbb10('0x6')](function(){if(_0x1dcb08[_0xbb10('0x7')]){return sqlUtils[_0xbb10('0x8')](_0x1dcb08[_0xbb10('0x7')],_0x9bbed);}else{return sqlUtils[_0xbb10('0x9')](_0x1dcb08,_0x9bbed);}})[_0xbb10('0x6')](function(_0x5ab04a){_0x481979['where'](_0x5ab04a[_0xbb10('0xa')]);_0x481979[_0xbb10('0xb')](_0x5ab04a[_0xbb10('0xc')]);_0x481979['where'](_0x5ab04a[_0xbb10('0xd')]);_0x481979['where'](_0x5ab04a[_0xbb10('0xe')][_0xbb10('0xf')]);_0x3cdd53=_0x5ab04a[_0xbb10('0x10')];_0x1b9e94=_0x5ab04a[_0xbb10('0xe')][_0xbb10('0x11')];return sqlUtils[_0xbb10('0x12')](_0x4d688c,_0x1dcb08,_0x1b9e94);})['then'](function(_0x26e021){_0x481979[_0xbb10('0xb')](_0x26e021);var _0x45b9d6=_0x1dcb08[_0xbb10('0x7')]?_0x3cdd53[_0xbb10('0x13')]:_0x1dcb08[_0xbb10('0x14')];_0x513741=_0x45b9d6?!![]:![];return sqlUtils[_0xbb10('0x15')](_0x481979,_0x45b9d6);})[_0xbb10('0x6')](function(_0x3e26f4){_0x460981[_0xbb10('0x16')]=_0x3e26f4;if(_0x460981['count']===0x0){return;}return sqlUtils[_0xbb10('0x17')](_0x481979,_0x1dcb08[_0xbb10('0xc')],_0x4541ae,_0x513741,_0x3cdd53[_0xbb10('0xf')],_0x1b9e94);})[_0xbb10('0x6')](function(_0x378da8){if(!_0x378da8){return[];}return sqlUtils[_0xbb10('0x18')](_0x378da8,_0x1dcb08,_0x4541ae);})[_0xbb10('0x6')](function(_0x30efc6){_0x460981[_0xbb10('0x19')]=_0x30efc6;return _0x460981;})[_0xbb10('0x1a')](function(_0x48b6e9){throw _0x48b6e9;});};exports[_0xbb10('0x1b')]=function(){var _0x19f48d={};var _0x388fab=[];return db[_0xbb10('0x1c')][_0xbb10('0x1b')]()[_0xbb10('0x6')](function(_0x4deb49){_0x19f48d=_0x4deb49;var _0x12f888=Object[_0xbb10('0x1d')](_0x19f48d)['filter'](function(_0x4c4b0d){return _[_0xbb10('0x1e')](_0x4c4b0d,_0xbb10('0x1f'))?_0x4c4b0d:undefined;});var _0x2e911d=_0x12f888[_0xbb10('0x20')](function(_0x445761){return db[_0xbb10('0x21')][_0xbb10('0x22')]({'where':{'id':_0x445761[_0xbb10('0x23')](0x3)},'raw':!![]});});return Promise[_0xbb10('0x24')](_0x2e911d);})[_0xbb10('0x6')](function(_0x3ba6cd){for(var _0x26ad93=0x0;_0x26ad93<_0x3ba6cd['length'];_0x26ad93++){if(_0x3ba6cd[_0x26ad93]){var _0x4fedac='cf_'+_0x3ba6cd[_0x26ad93]['id'];_0x19f48d[_0x4fedac][_0xbb10('0x25')]=_0x3ba6cd[_0x26ad93][_0xbb10('0x26')];}}_0x388fab=_[_0xbb10('0x20')](Object['keys'](_0x19f48d),function(_0x2fdde9){return{'name':_0x2fdde9,'type':_0x19f48d[_0x2fdde9][_0xbb10('0x26')]};});return _0x388fab;})[_0xbb10('0x1a')](function(_0x1d5e95){throw _0x1d5e95;});};
\ No newline at end of file
+var _0x5f66=['buildContactsQuery','getFilteredContacts','catch','CmContact','keys','filter','cf_','CmCustomField','slice','all','length','./sql-utils','findAll','resolve','then','search','parseAdvancedSearchFilter','where','default','fields','clause','user','skip','checkListsRestrictions','ids','tag','count'];(function(_0x444f0a,_0x14e245){var _0x420ccb=function(_0x517867){while(--_0x517867){_0x444f0a['push'](_0x444f0a['shift']());}};_0x420ccb(++_0x14e245);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'use strict';var _=require('lodash');var sqlUtils=require(_0x65f6('0x0'));var db=require('../../mysqldb')['db'];exports[_0x65f6('0x1')]=function(_0x2f06ae,_0x3461cd,_0xbce843,_0x1a330c){var _0x5eb9ad={'count':0x0,'rows':[]};var _0x3c5029=sqlUtils['skipContactsQuery'](_0x3461cd,_0x2f06ae);if(_0x3c5029){return Promise[_0x65f6('0x2')](_0x5eb9ad);}var _0x22b017=sqlUtils['getContactsSubquery']();var _0x4ed98f={};var _0x1c0e12=![];var _0x2c6571=![];return Promise[_0x65f6('0x2')]()[_0x65f6('0x3')](function(){if(_0x2f06ae[_0x65f6('0x4')]){return sqlUtils[_0x65f6('0x5')](_0x2f06ae['search'],_0x1a330c);}else{return sqlUtils['parseQueryParameters'](_0x2f06ae,_0x1a330c);}})[_0x65f6('0x3')](function(_0x2f6d5b){_0x22b017[_0x65f6('0x6')](_0x2f6d5b[_0x65f6('0x7')]);_0x22b017['where'](_0x2f6d5b[_0x65f6('0x8')]);_0x22b017['where'](_0x2f6d5b['filter']);_0x22b017[_0x65f6('0x6')](_0x2f6d5b['user'][_0x65f6('0x9')]);_0x4ed98f=_0x2f6d5b['tags'];_0x2c6571=_0x2f6d5b[_0x65f6('0xa')][_0x65f6('0xb')];return sqlUtils[_0x65f6('0xc')](_0x3461cd,_0x2f06ae,_0x2c6571);})[_0x65f6('0x3')](function(_0x369f96){_0x22b017[_0x65f6('0x6')](_0x369f96);var _0x44144b=_0x2f06ae[_0x65f6('0x4')]?_0x4ed98f[_0x65f6('0xd')]:_0x2f06ae[_0x65f6('0xe')];_0x1c0e12=_0x44144b?!![]:![];return sqlUtils['countFilteredContacts'](_0x22b017,_0x44144b);})[_0x65f6('0x3')](function(_0x49a913){_0x5eb9ad['count']=_0x49a913;if(_0x5eb9ad[_0x65f6('0xf')]===0x0){return;}return sqlUtils[_0x65f6('0x10')](_0x22b017,_0x2f06ae[_0x65f6('0x8')],_0xbce843,_0x1c0e12,_0x4ed98f[_0x65f6('0x9')],_0x2c6571);})[_0x65f6('0x3')](function(_0x1f974c){if(!_0x1f974c){return[];}return sqlUtils[_0x65f6('0x11')](_0x1f974c,_0x2f06ae,_0xbce843);})[_0x65f6('0x3')](function(_0x495dd6){_0x5eb9ad['rows']=_0x495dd6;return _0x5eb9ad;})[_0x65f6('0x12')](function(_0x5b4055){throw _0x5b4055;});};exports['describe']=function(){var _0x5c5b91={};var _0x365159=[];return db[_0x65f6('0x13')]['describe']()[_0x65f6('0x3')](function(_0x270893){_0x5c5b91=_0x270893;var _0xbee6a4=Object[_0x65f6('0x14')](_0x5c5b91)[_0x65f6('0x15')](function(_0xc139c2){return _['startsWith'](_0xc139c2,_0x65f6('0x16'))?_0xc139c2:undefined;});var _0x4bb39e=_0xbee6a4['map'](function(_0x212247){return db[_0x65f6('0x17')]['findOne']({'where':{'id':_0x212247[_0x65f6('0x18')](0x3)},'raw':!![]});});return Promise[_0x65f6('0x19')](_0x4bb39e);})[_0x65f6('0x3')](function(_0x2774a1){for(var _0x4f5a69=0x0;_0x4f5a69<_0x2774a1[_0x65f6('0x1a')];_0x4f5a69++){if(_0x2774a1[_0x4f5a69]){var _0x59ea32=_0x65f6('0x16')+_0x2774a1[_0x4f5a69]['id'];_0x5c5b91[_0x59ea32]['fieldType']=_0x2774a1[_0x4f5a69]['type'];}}_0x365159=_['map'](Object[_0x65f6('0x14')](_0x5c5b91),function(_0x16cde8){return{'name':_0x16cde8,'type':_0x5c5b91[_0x16cde8]['type']};});return _0x365159;})[_0x65f6('0x12')](function(_0x28f710){throw _0x28f710;});};
\ No newline at end of file
index f503b62..f2470fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe69d=['end','Tag','map','tags','clause','and','ids','User','user','uc.UserId\x20=\x20?','skip','keys','name','Contact','push','c.ListId\x20IN\x20?','concat','\x20=\x20?','then','tag','filter','resolve','getLists','c.ListId\x20IS\x20NULL','attributes','select','c.id','limit','offset','group','having','order','DESC','subqry.','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','sequelize','query','toString','Tags','clone','getSelectedTags','isEmpty','t.id\x20IN\x20?','COUNT(*)','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','role','agent','search','ListId','autocomplete','true','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','lastName','phone','mobile','fax','TagIds','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','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?','c.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','parseSearch','conditions','dateOfBirth','fieldType','datetime','castTo','DATE','type','default','value','start'];(function(_0x2ef644,_0x2ab0ff){var _0x11f00e=function(_0x32983a){while(--_0x32983a){_0x2ef644['push'](_0x2ef644['shift']());}};_0x11f00e(++_0x2ab0ff);}(_0xe69d,0x99));var _0xde69=function(_0x474624,_0x5a9183){_0x474624=_0x474624-0x0;var _0x418ac5=_0xe69d[_0x474624];return _0x418ac5;};'use strict';var _=require(_0xde69('0x0'));var squel=require(_0xde69('0x1'));var as=require(_0xde69('0x2'));var qs=require(_0xde69('0x3'));var utils=require(_0xde69('0x4'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x369813,_0x196a8f){var _0x22d570=![];if(_0x369813[_0xde69('0x5')]===_0xde69('0x6')&&!_0x196a8f[_0xde69('0x7')]&&!_0x196a8f[_0xde69('0x8')]&&_0x196a8f[_0xde69('0x9')]!==_0xde69('0xa')){_0x22d570=!![];}return _0x22d570;}function getContactsSubquery(){return squel['select']()[_0xde69('0xb')](_0xde69('0xc'),'c')[_0xde69('0xd')](_0xde69('0xe'));}function applyJoinClauses(_0x419389,_0x302b3d){var _0x2e8d5b=_0x302b3d?'c':_0xde69('0xf');_0x419389['left_join'](_0xde69('0x10'),'uc',_0xde69('0x11')+_0x2e8d5b+_0xde69('0x12'))['left_join'](_0xde69('0x13'),'ct',_0xde69('0x14')+_0x2e8d5b+_0xde69('0x12'))['left_join'](_0xde69('0x15'),'t',_0xde69('0x16'));return _0x419389;}function addFieldsToQuery(_0x23cbf0,_0x23f177,_0x18ffb5,_0x3cd29c,_0xe9b5b4){var _0xaf7993=_0xe9b5b4?'c':_0xde69('0xf');if(!_0x23f177){_0x23f177=['id','firstName',_0xde69('0x17'),_0xde69('0x18'),_0xde69('0x19'),_0xde69('0x1a'),'email',_0xde69('0x8'),'CompanyId','createdAt','updatedAt','deletedAt',_0xde69('0x1b')];}else if(!_0x23f177['includes']('id')){_0x23f177['push']('id');}var _0x27ee60=_0x18ffb5&&_0xe9b5b4||!_0x18ffb5&&!_0xe9b5b4;if(_0x3cd29c){_0x27ee60=_0x3cd29c&&_0xe9b5b4||!_0x3cd29c&&!_0xe9b5b4;}_0x23f177[_0xde69('0x1c')](function(_0x8d6b59){if(_0x8d6b59===_0xde69('0x1b')){if(_0x27ee60){_0x23cbf0[_0xde69('0x1d')](_0xde69('0x1e'),_0x8d6b59);}else if(_0x18ffb5||_0x3cd29c){_0x23cbf0[_0xde69('0x1d')](_0xaf7993+'.'+_0x8d6b59);}}else{_0x23cbf0[_0xde69('0x1d')](_0xaf7993+'.'+_0x8d6b59);}});return _0x23cbf0;}function getSqlClauses(){var _0x2724d4={'default':squel[_0xde69('0x1f')](),'fields':squel['expr'](),'filter':squel[_0xde69('0x1f')](),'tags':{'clause':squel[_0xde69('0x1f')](),'ids':null},'user':{'clause':squel[_0xde69('0x1f')](),'skip':![]}};return _0x2724d4;}function parseTagParameter(_0x2e65af){var _0x49aa39=squel[_0xde69('0x1f')]();if(_0x2e65af){var _0x167d9e=utils['getSelectedTags'](_0x2e65af);_0x167d9e[_0xde69('0x1c')](function(_0xbc4eb8){_0x49aa39['or'](_0xde69('0x20'),'%,'+_0xbc4eb8+',%');});}return _0x49aa39;}function parseSearchFilter(_0xf7cc72){var _0x366225=squel[_0xde69('0x1f')]();if(_0xf7cc72){var _0x16f026=_0xf7cc72[_0xde69('0x21')]('\x5c','\x5c\x5c')[_0xde69('0x21')](/'/g,'\x27\x27');if(_0x16f026[_0xde69('0x22')]('\x20')[_0xde69('0x23')]>0x1){_0x366225['or'](_0xde69('0x24'),qs['getFullTextValue'](_0x16f026),null);}else{if(qs['isNumeric'](_0x16f026)){_0x366225['or'](_0xde69('0x25'),_0x16f026+'%');_0x366225['or']('c.phone\x20LIKE\x20?',_0x16f026+'%');_0x366225['or'](_0xde69('0x26'),_0x16f026+'%');_0x366225['or'](_0xde69('0x27'),_0x16f026+'%');}else if(qs[_0xde69('0x28')](_0x16f026)){_0x366225['or']('c.email\x20LIKE\x20?',_0x16f026+'%');}else{_0x366225['or'](_0xde69('0x29'),'%'+_0x16f026+'%');_0x366225['or'](_0xde69('0x2a'),'%'+_0x16f026+'%');_0x366225['or'](_0xde69('0x2b'),'%'+_0x16f026+'%');}}}return _0x366225;}function parseAdvancedSearchFilter(_0x269e0c,_0x4df4c2){var _0x27caff=getSqlClauses();var _0x2445a0=as[_0xde69('0x2c')](_0x269e0c);var _0x468b26=_0x2445a0['sqlOperator'];for(var _0xc8c3f9=0x0;_0xc8c3f9<_0x2445a0['conditions'][_0xde69('0x23')];_0xc8c3f9++){var _0x2f2156=_0x2445a0[_0xde69('0x2d')][_0xc8c3f9];var _0x11fe3e='c';var _0x369ee2=_['find'](_0x4df4c2,['name',_0x2f2156[_0xde69('0x1d')]]);if(_0x369ee2){if(_0x2f2156['field']===_0xde69('0x2e')||_0x369ee2[_0xde69('0x2f')]===_0xde69('0x30')){_0x2f2156[_0xde69('0x31')]=_0xde69('0x32');}var _0x20050f=as['buildExpression'](_0x11fe3e,_0x369ee2[_0xde69('0x33')],_0x2f2156);_0x27caff[_0xde69('0x34')][_0x468b26](_0x20050f['text'],_0x20050f[_0xde69('0x35')][_0xde69('0x36')],_0x20050f[_0xde69('0x35')][_0xde69('0x37')]);}else{if(_0x2f2156[_0xde69('0x1d')]===_0xde69('0x38')){var _0x10abb6=_0x2f2156['value'][_0xde69('0x22')](',')[_0xde69('0x39')](function(_0xc06fb8){return Number(_0xc06fb8);});var _0x5ab501=parseTagParameter(_0x10abb6);_0x27caff[_0xde69('0x3a')][_0xde69('0x3b')][_0xde69('0x3c')](_0x5ab501);_0x27caff[_0xde69('0x3a')][_0xde69('0x3d')]=_0x10abb6;}else if(_0x2f2156[_0xde69('0x1d')]===_0xde69('0x3e')){_0x27caff[_0xde69('0x3f')][_0xde69('0x3b')]['and'](_0xde69('0x40'),_0x2f2156[_0xde69('0x35')]);_0x27caff[_0xde69('0x3f')][_0xde69('0x41')]=!![];}}}return _0x27caff;}function parseModelFields(_0xe37ed7,_0x491c19){var _0x50a2ab=squel[_0xde69('0x1f')]();var _0x1cc87e=_(_0xe37ed7)[_0xde69('0x42')]()[_0xde69('0x39')](function(_0x595305){return _['some'](_0x491c19,[_0xde69('0x43'),_0x595305])?_0x595305:undefined;})['compact']()['value']();if(_0xe37ed7[_0xde69('0x44')]){_0x1cc87e[_0xde69('0x45')](_0xde69('0x44'));}if(_0x1cc87e[_0xde69('0x23')]>0x0){_0x1cc87e[_0xde69('0x1c')](function(_0x5dc5c0){if(_0x5dc5c0===_0xde69('0x8')){_0x50a2ab['and'](_0xde69('0x46'),[][_0xde69('0x47')](_0xe37ed7[_0x5dc5c0]));}else if(_0x5dc5c0===_0xde69('0x44')){var _0x4a19a7='%'+_0xe37ed7[_0x5dc5c0]+'%';_0x50a2ab['and']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x4a19a7);}else{_0x50a2ab['and']('c.'+_0x5dc5c0+_0xde69('0x48'),_0xe37ed7[_0x5dc5c0]);}});}return _0x50a2ab;}function parseQueryParameters(_0x462d21,_0x701eb3){var _0x549648=getSqlClauses();return Promise['resolve']()[_0xde69('0x49')](function(){return parseModelFields(_0x462d21,_0x701eb3);})[_0xde69('0x49')](function(_0x19cb2d){_0x549648['fields'][_0xde69('0x3c')](_0x19cb2d);return parseTagParameter(_0x462d21[_0xde69('0x4a')]);})[_0xde69('0x49')](function(_0x6c411b){_0x549648[_0xde69('0x3a')][_0xde69('0x3b')]['and'](_0x6c411b);return parseSearchFilter(_0x462d21[_0xde69('0x4b')]);})[_0xde69('0x49')](function(_0x4a02f4){_0x549648['filter']=_0x4a02f4;return _0x549648;});}function checkListsRestrictions(_0x53bd94,_0x2b3b2e,_0x15456d){var _0x158be4=squel[_0xde69('0x1f')]();return Promise[_0xde69('0x4c')]()[_0xde69('0x49')](function(){if(_0x2b3b2e[_0xde69('0x7')]&&_0x53bd94[_0xde69('0x5')]===_0xde69('0x6')&&!_0x15456d){return _0x53bd94[_0xde69('0x4d')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x3a7c20){if(_0x3a7c20){if(_0x3a7c20['length']===0x0){_0x158be4[_0xde69('0x3c')](_0xde69('0x4e'));}else{_0x158be4[_0xde69('0x3c')](_0xde69('0x46'),_[_0xde69('0x39')](_0x3a7c20,'id'));}}})[_0xde69('0x49')](function(){return _0x158be4;});}function buildContactsQuery(_0x20ec06,_0x37e286,_0x27decc,_0x143b12,_0x8ae2ec,_0x40ae6a){if(_0x37e286){_0x37e286=_0x27decc[_0xde69('0x4f')];}_0x20ec06=addFieldsToQuery(_0x20ec06,_0x37e286,_0x143b12,_0x40ae6a,!![]);var _0x465a09=squel[_0xde69('0x50')]();_0x465a09=addFieldsToQuery(_0x465a09,_0x37e286,_0x143b12,_0x40ae6a,![]);if(_0x143b12||_0x40ae6a){_0x20ec06=applyJoinClauses(_0x20ec06,!![]);_0x20ec06['group'](_0xde69('0x51'));if(_0x27decc[_0xde69('0x52')]){_0x465a09[_0xde69('0x52')](_0x27decc[_0xde69('0x52')]);}if(_0x27decc[_0xde69('0x53')]){_0x465a09[_0xde69('0x53')](_0x27decc['offset']);}}else{_0x465a09=applyJoinClauses(_0x465a09,![]);_0x465a09[_0xde69('0x54')]('subqry.id');if(_0x27decc[_0xde69('0x52')]){_0x20ec06[_0xde69('0x52')](_0x27decc[_0xde69('0x52')]);}if(_0x27decc[_0xde69('0x53')]){_0x20ec06[_0xde69('0x53')](_0x27decc[_0xde69('0x53')]);}}_0x465a09[_0xde69('0x55')](_0x8ae2ec);if(_0x27decc['order']){_0x27decc[_0xde69('0x56')][_0xde69('0x1c')](function(_0x1f8121){_0x20ec06[_0xde69('0x56')]('c.'+_0x1f8121[0x0],_0x1f8121[0x1]===_0xde69('0x57')?![]:!![]);_0x465a09[_0xde69('0x56')](_0xde69('0x58')+_0x1f8121[0x0],_0x1f8121[0x1]==='DESC'?![]:!![]);});}_0x465a09[_0xde69('0xb')](_0x20ec06,'subqry');return _0x465a09;}function getFilteredContacts(_0x1ebe9c){var _0x2e4217=[];return db[_0xde69('0x38')][_0xde69('0x59')]({'attributes':['id',_0xde69('0x43'),_0xde69('0x5a')],'raw':!![]})[_0xde69('0x49')](function(_0x2d454e){_0x2e4217=_[_0xde69('0x5b')](_0x2d454e,'id');var _0x18cd87={'type':db[_0xde69('0x5c')][_0xde69('0x5d')][_0xde69('0x5e')],'model':db['CmContact'],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xde69('0x5f')][_0xde69('0x60')](_0x1ebe9c[_0xde69('0x61')](),_0x18cd87);})['then'](function(_0x5e19ec){_0x5e19ec[_0xde69('0x1c')](function(_0x204620){if(_0x204620[_0xde69('0x1b')]){_0x204620['Tags']=[];_0x204620[_0xde69('0x1b')]['split'](',')[_0xde69('0x1c')](function(_0x2fd1f6){_0x204620[_0xde69('0x62')][_0xde69('0x45')](_0x2e4217[_0x2fd1f6]);});}delete _0x204620[_0xde69('0x1b')];});return _0x5e19ec;});}function countFilteredContacts(_0x3b0269,_0x211f8b){var _0x17eee8=_0x3b0269[_0xde69('0x63')]();_0x17eee8[_0xde69('0x1d')]('COUNT(*)');_0x17eee8=applyJoinClauses(_0x17eee8,!![]);_0x3b0269[_0xde69('0x54')](_0xde69('0x51'));var _0x5cad04=utils[_0xde69('0x64')](_0x211f8b);if(!_[_0xde69('0x65')](_0x5cad04)){_0x17eee8[_0xde69('0xd')](_0xde69('0x66'),_0x5cad04);}var _0x4f1657={'type':db[_0xde69('0x5c')][_0xde69('0x5d')][_0xde69('0x5e')],'raw':!![]};return db['sequelize'][_0xde69('0x60')](_0x17eee8[_0xde69('0x61')](),_0x4f1657)[_0xde69('0x49')](function(_0x474234){return _0x474234[0x0][_0xde69('0x67')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0xf98b=['having','order','subqry.','findAll','color','keyBy','Sequelize','SELECT','CmContact','sequelize','query','toString','Tags','clone','c.id','isEmpty','t.id\x20IN\x20?','QueryTypes','COUNT(*)','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','search','ListId','autocomplete','true','select','from','cm_contacts','c.deletedAt\x20IS\x20NULL','subqry','left_join','uc.CmContactId\x20=\x20','.id','tools_tags','firstName','lastName','mobile','fax','email','createdAt','updatedAt','deletedAt','includes','forEach','TagIds','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','datetime','castTo','DATE','type','start','value','end','Tag','split','map','tags','clause','and','ids','User','user','uc.UserId\x20=\x20?','keys','some','compact','Contact','push','c.ListId\x20IN\x20?','concat','\x20=\x20?','resolve','then','tag','filter','getLists','attributes','group','limit','offset','subqry.id'];(function(_0x2fdfcf,_0x3497fa){var _0x7eb4f7=function(_0x38eb80){while(--_0x38eb80){_0x2fdfcf['push'](_0x2fdfcf['shift']());}};_0x7eb4f7(++_0x3497fa);}(_0xf98b,0x155));var _0xbf98=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0xf98b[_0x2b5eae];return _0x5f3ac9;};'use strict';var _=require(_0xbf98('0x0'));var squel=require(_0xbf98('0x1'));var as=require(_0xbf98('0x2'));var qs=require(_0xbf98('0x3'));var utils=require(_0xbf98('0x4'));var db=require(_0xbf98('0x5'))['db'];function skipContactsQuery(_0x3c465f,_0x35ffec){var _0x5757e3=![];if(_0x3c465f[_0xbf98('0x6')]==='agent'&&!_0x35ffec[_0xbf98('0x7')]&&!_0x35ffec[_0xbf98('0x8')]&&_0x35ffec[_0xbf98('0x9')]!==_0xbf98('0xa')){_0x5757e3=!![];}return _0x5757e3;}function getContactsSubquery(){return squel[_0xbf98('0xb')]()[_0xbf98('0xc')](_0xbf98('0xd'),'c')['where'](_0xbf98('0xe'));}function applyJoinClauses(_0x5135e3,_0x464479){var _0x4caec8=_0x464479?'c':_0xbf98('0xf');_0x5135e3[_0xbf98('0x10')]('cm_user_has_contacts','uc',_0xbf98('0x11')+_0x4caec8+_0xbf98('0x12'))[_0xbf98('0x10')]('cm_contact_has_tags','ct','ct.CmContactId\x20=\x20'+_0x4caec8+_0xbf98('0x12'))[_0xbf98('0x10')](_0xbf98('0x13'),'t','t.id\x20=\x20ct.TagId');return _0x5135e3;}function addFieldsToQuery(_0x331e24,_0x987f1c,_0x34a361,_0x4e33f8,_0x132e08){var _0x22560e=_0x132e08?'c':_0xbf98('0xf');if(!_0x987f1c){_0x987f1c=['id',_0xbf98('0x14'),_0xbf98('0x15'),'phone',_0xbf98('0x16'),_0xbf98('0x17'),_0xbf98('0x18'),_0xbf98('0x8'),'CompanyId',_0xbf98('0x19'),_0xbf98('0x1a'),_0xbf98('0x1b'),'TagIds'];}else if(!_0x987f1c[_0xbf98('0x1c')]('id')){_0x987f1c['push']('id');}var _0x9db5f8=_0x34a361&&_0x132e08||!_0x34a361&&!_0x132e08;if(_0x4e33f8){_0x9db5f8=_0x4e33f8&&_0x132e08||!_0x4e33f8&&!_0x132e08;}_0x987f1c[_0xbf98('0x1d')](function(_0x1b0c04){if(_0x1b0c04===_0xbf98('0x1e')){if(_0x9db5f8){_0x331e24['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x1b0c04);}else if(_0x34a361||_0x4e33f8){_0x331e24[_0xbf98('0x1f')](_0x22560e+'.'+_0x1b0c04);}}else{_0x331e24[_0xbf98('0x1f')](_0x22560e+'.'+_0x1b0c04);}});return _0x331e24;}function getSqlClauses(){var _0x5b1551={'default':squel['expr'](),'fields':squel[_0xbf98('0x20')](),'filter':squel[_0xbf98('0x20')](),'tags':{'clause':squel[_0xbf98('0x20')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x5b1551;}function parseTagParameter(_0x553950){var _0x5a0963=squel[_0xbf98('0x20')]();if(_0x553950){var _0x3493a5=utils[_0xbf98('0x21')](_0x553950);_0x3493a5['forEach'](function(_0x1ddf21){_0x5a0963['or'](_0xbf98('0x22'),'%,'+_0x1ddf21+',%');});}return _0x5a0963;}function parseSearchFilter(_0x1376b1){var _0x2ee57d=squel['expr']();if(_0x1376b1){var _0x49c3f7=_0x1376b1[_0xbf98('0x23')]('\x5c','\x5c\x5c')[_0xbf98('0x23')](/'/g,'\x27\x27');if(_0x49c3f7['split']('\x20')[_0xbf98('0x24')]>0x1){_0x2ee57d['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xbf98('0x25')](_0x49c3f7),null);}else{if(qs[_0xbf98('0x26')](_0x49c3f7)){_0x2ee57d['or'](_0xbf98('0x27'),_0x49c3f7+'%');_0x2ee57d['or'](_0xbf98('0x28'),_0x49c3f7+'%');_0x2ee57d['or']('c.mobile\x20LIKE\x20?',_0x49c3f7+'%');_0x2ee57d['or'](_0xbf98('0x29'),_0x49c3f7+'%');}else if(qs[_0xbf98('0x2a')](_0x49c3f7)){_0x2ee57d['or'](_0xbf98('0x2b'),_0x49c3f7+'%');}else{_0x2ee57d['or'](_0xbf98('0x2c'),'%'+_0x49c3f7+'%');_0x2ee57d['or'](_0xbf98('0x2d'),'%'+_0x49c3f7+'%');_0x2ee57d['or'](_0xbf98('0x2b'),'%'+_0x49c3f7+'%');}}}return _0x2ee57d;}function parseAdvancedSearchFilter(_0x427f1f,_0x5e576e){var _0x211d41=getSqlClauses();var _0x102785=as[_0xbf98('0x2e')](_0x427f1f);var _0x393f73=_0x102785[_0xbf98('0x2f')];for(var _0xcca9e2=0x0;_0xcca9e2<_0x102785[_0xbf98('0x30')][_0xbf98('0x24')];_0xcca9e2++){var _0x5633ec=_0x102785[_0xbf98('0x30')][_0xcca9e2];var _0x55f446='c';var _0x473fbd=_[_0xbf98('0x31')](_0x5e576e,[_0xbf98('0x32'),_0x5633ec[_0xbf98('0x1f')]]);if(_0x473fbd){if(_0x5633ec['field']===_0xbf98('0x33')||_0x473fbd['fieldType']===_0xbf98('0x34')){_0x5633ec[_0xbf98('0x35')]=_0xbf98('0x36');}var _0x2c1621=as['buildExpression'](_0x55f446,_0x473fbd[_0xbf98('0x37')],_0x5633ec);_0x211d41['default'][_0x393f73](_0x2c1621['text'],_0x2c1621['value'][_0xbf98('0x38')],_0x2c1621[_0xbf98('0x39')][_0xbf98('0x3a')]);}else{if(_0x5633ec[_0xbf98('0x1f')]===_0xbf98('0x3b')){var _0x3b27e3=_0x5633ec[_0xbf98('0x39')][_0xbf98('0x3c')](',')[_0xbf98('0x3d')](function(_0x15c35a){return Number(_0x15c35a);});var _0x23d451=parseTagParameter(_0x3b27e3);_0x211d41[_0xbf98('0x3e')][_0xbf98('0x3f')][_0xbf98('0x40')](_0x23d451);_0x211d41[_0xbf98('0x3e')][_0xbf98('0x41')]=_0x3b27e3;}else if(_0x5633ec[_0xbf98('0x1f')]===_0xbf98('0x42')){_0x211d41[_0xbf98('0x43')][_0xbf98('0x3f')][_0xbf98('0x40')](_0xbf98('0x44'),_0x5633ec[_0xbf98('0x39')]);_0x211d41['user']['skip']=!![];}}}return _0x211d41;}function parseModelFields(_0x1c3272,_0x241a1f){var _0x1960df=squel[_0xbf98('0x20')]();var _0x16f34e=_(_0x1c3272)[_0xbf98('0x45')]()[_0xbf98('0x3d')](function(_0x108bf0){return _[_0xbf98('0x46')](_0x241a1f,[_0xbf98('0x32'),_0x108bf0])?_0x108bf0:undefined;})[_0xbf98('0x47')]()['value']();if(_0x1c3272[_0xbf98('0x48')]){_0x16f34e[_0xbf98('0x49')]('Contact');}if(_0x16f34e[_0xbf98('0x24')]>0x0){_0x16f34e[_0xbf98('0x1d')](function(_0x5d3495){if(_0x5d3495===_0xbf98('0x8')){_0x1960df[_0xbf98('0x40')](_0xbf98('0x4a'),[][_0xbf98('0x4b')](_0x1c3272[_0x5d3495]));}else if(_0x5d3495===_0xbf98('0x48')){var _0x181b9f='%'+_0x1c3272[_0x5d3495]+'%';_0x1960df[_0xbf98('0x40')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x181b9f);}else{_0x1960df[_0xbf98('0x40')]('c.'+_0x5d3495+_0xbf98('0x4c'),_0x1c3272[_0x5d3495]);}});}return _0x1960df;}function parseQueryParameters(_0x53a3db,_0x414159){var _0x21f8a1=getSqlClauses();return Promise[_0xbf98('0x4d')]()['then'](function(){return parseModelFields(_0x53a3db,_0x414159);})[_0xbf98('0x4e')](function(_0x209966){_0x21f8a1['fields'][_0xbf98('0x40')](_0x209966);return parseTagParameter(_0x53a3db[_0xbf98('0x4f')]);})[_0xbf98('0x4e')](function(_0x194d4b){_0x21f8a1[_0xbf98('0x3e')][_0xbf98('0x3f')]['and'](_0x194d4b);return parseSearchFilter(_0x53a3db[_0xbf98('0x50')]);})[_0xbf98('0x4e')](function(_0x145bf7){_0x21f8a1['filter']=_0x145bf7;return _0x21f8a1;});}function checkListsRestrictions(_0x1b78aa,_0x4d5246,_0x464bbb){var _0x39e45e=squel['expr']();return Promise['resolve']()[_0xbf98('0x4e')](function(){if(_0x4d5246[_0xbf98('0x7')]&&_0x1b78aa[_0xbf98('0x6')]==='agent'&&!_0x464bbb){return _0x1b78aa[_0xbf98('0x51')]({'attributes':['id'],'raw':!![]});}})[_0xbf98('0x4e')](function(_0x572e0d){if(_0x572e0d){if(_0x572e0d['length']===0x0){_0x39e45e['and']('c.ListId\x20IS\x20NULL');}else{_0x39e45e['and'](_0xbf98('0x4a'),_[_0xbf98('0x3d')](_0x572e0d,'id'));}}})['then'](function(){return _0x39e45e;});}function buildContactsQuery(_0xc9b8ff,_0x358101,_0x4cd4fd,_0x3def66,_0x331b0d,_0x206da2){if(_0x358101){_0x358101=_0x4cd4fd[_0xbf98('0x52')];}_0xc9b8ff=addFieldsToQuery(_0xc9b8ff,_0x358101,_0x3def66,_0x206da2,!![]);var _0xa40630=squel[_0xbf98('0xb')]();_0xa40630=addFieldsToQuery(_0xa40630,_0x358101,_0x3def66,_0x206da2,![]);if(_0x3def66||_0x206da2){_0xc9b8ff=applyJoinClauses(_0xc9b8ff,!![]);_0xc9b8ff[_0xbf98('0x53')]('c.id');if(_0x4cd4fd['limit']){_0xa40630['limit'](_0x4cd4fd[_0xbf98('0x54')]);}if(_0x4cd4fd['offset']){_0xa40630['offset'](_0x4cd4fd[_0xbf98('0x55')]);}}else{_0xa40630=applyJoinClauses(_0xa40630,![]);_0xa40630[_0xbf98('0x53')](_0xbf98('0x56'));if(_0x4cd4fd[_0xbf98('0x54')]){_0xc9b8ff[_0xbf98('0x54')](_0x4cd4fd[_0xbf98('0x54')]);}if(_0x4cd4fd['offset']){_0xc9b8ff[_0xbf98('0x55')](_0x4cd4fd['offset']);}}_0xa40630[_0xbf98('0x57')](_0x331b0d);if(_0x4cd4fd[_0xbf98('0x58')]){_0x4cd4fd[_0xbf98('0x58')][_0xbf98('0x1d')](function(_0x24ad2e){_0xc9b8ff[_0xbf98('0x58')]('c.'+_0x24ad2e[0x0],_0x24ad2e[0x1]==='DESC'?![]:!![]);_0xa40630[_0xbf98('0x58')](_0xbf98('0x59')+_0x24ad2e[0x0],_0x24ad2e[0x1]==='DESC'?![]:!![]);});}_0xa40630['from'](_0xc9b8ff,_0xbf98('0xf'));return _0xa40630;}function getFilteredContacts(_0x1fd043){var _0x23b3de=[];return db[_0xbf98('0x3b')][_0xbf98('0x5a')]({'attributes':['id','name',_0xbf98('0x5b')],'raw':!![]})[_0xbf98('0x4e')](function(_0x57f74e){_0x23b3de=_[_0xbf98('0x5c')](_0x57f74e,'id');var _0x2996b2={'type':db[_0xbf98('0x5d')]['QueryTypes'][_0xbf98('0x5e')],'model':db[_0xbf98('0x5f')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xbf98('0x60')][_0xbf98('0x61')](_0x1fd043[_0xbf98('0x62')](),_0x2996b2);})['then'](function(_0xe25179){_0xe25179[_0xbf98('0x1d')](function(_0x1397a7){if(_0x1397a7[_0xbf98('0x1e')]){_0x1397a7[_0xbf98('0x63')]=[];_0x1397a7['TagIds'][_0xbf98('0x3c')](',')[_0xbf98('0x1d')](function(_0x848338){_0x1397a7[_0xbf98('0x63')][_0xbf98('0x49')](_0x23b3de[_0x848338]);});}delete _0x1397a7[_0xbf98('0x1e')];});return _0xe25179;});}function countFilteredContacts(_0x527bc1,_0x89657e){var _0x5462ef=_0x527bc1[_0xbf98('0x64')]();_0x5462ef[_0xbf98('0x1f')]('COUNT(*)');_0x5462ef=applyJoinClauses(_0x5462ef,!![]);_0x527bc1[_0xbf98('0x53')](_0xbf98('0x65'));var _0x175171=utils['getSelectedTags'](_0x89657e);if(!_[_0xbf98('0x66')](_0x175171)){_0x5462ef['where'](_0xbf98('0x67'),_0x175171);}var _0x958f8c={'type':db[_0xbf98('0x5d')][_0xbf98('0x68')]['SELECT'],'raw':!![]};return db['sequelize']['query'](_0x5462ef['toString'](),_0x958f8c)[_0xbf98('0x4e')](function(_0x47d646){return _0x47d646[0x0][_0xbf98('0x69')];});}module[_0xbf98('0x6a')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 6a7d0f1..32d51c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x898c=['end','close','unlink','decryptFile','createDecipher','encryptString','secret','createCipher','base64','decryptString','utf8','bluebird','lodash','../../config/logger','app','secrets','session','aes-256-ctr','encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','update','binary','write','final'];(function(_0x46bec2,_0x36cde0){var _0x39b857=function(_0xf29a34){while(--_0xf29a34){_0x46bec2['push'](_0x46bec2['shift']());}};_0x39b857(++_0x36cde0);}(_0x898c,0x1a3));var _0xc898=function(_0x73c130,_0x5f532f){_0x73c130=_0x73c130-0x0;var _0x3bd9b4=_0x898c[_0x73c130];return _0x3bd9b4;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0xc898('0x0'));var _=require(_0xc898('0x1'));var config=require('../../config/environment');var logger=require(_0xc898('0x2'))(_0xc898('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xc898('0x4')][_0xc898('0x5')],'algorithm':_0xc898('0x6')};const fileOptions={'algorithm':'aes192'};if(config[_0xc898('0x7')]&&config[_0xc898('0x7')][_0xc898('0x8')]){var isSupported=isAlgorithmSupported(config[_0xc898('0x7')][_0xc898('0x8')]);if(isSupported){fileOptions[_0xc898('0x8')]=config[_0xc898('0x7')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0xc898('0x9')](config[_0xc898('0x7')][_0xc898('0x8')],_0xc898('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x478351){return AES_SUPPORTED_RX[_0xc898('0xb')](_0x478351);}function getSupportedCiphers(){return crypto[_0xc898('0xc')]()[_0xc898('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x2a8d72){return getSupportedCiphers()['indexOf'](_0x2a8d72)>-0x1;}function combineOptions(_0x33aa04){var _0xced673={};for(var _0x2dd226 in fileOptions){if(fileOptions[_0xc898('0xe')](_0x2dd226)){_0xced673[_0x2dd226]=fileOptions[_0x2dd226];}}if(_0x33aa04){for(var _0x410746 in _0x33aa04){if(_0x33aa04[_0xc898('0xe')](_0x410746)){_0xced673[_0x410746]=_0x33aa04[_0x410746];}}}return _0xced673;}exports[_0xc898('0xf')]=function(_0x12e493,_0x509430,_0x47dc9a,_0x374fea){return new BPromise(function(_0x1cf30d,_0x2029da){_0x374fea=combineOptions(_0x374fea);var _0x29533c=new Buffer(_0x47dc9a);var _0xc663d9=fs[_0xc898('0x10')](_0x12e493);var _0x2ba576=fs[_0xc898('0x11')](_0x509430);var _0x1a5336=crypto['createCipher'](_0x374fea['algorithm'],_0x29533c);_0xc663d9['on'](_0xc898('0x12'),function(_0xc17acd){var _0x44a76a=new Buffer(_0x1a5336[_0xc898('0x13')](_0xc17acd),_0xc898('0x14'));_0x2ba576[_0xc898('0x15')](_0x44a76a);});_0xc663d9['on']('end',function(){try{var _0x4e9fe3=new Buffer(_0x1a5336[_0xc898('0x16')](_0xc898('0x14')),'binary');_0x2ba576[_0xc898('0x15')](_0x4e9fe3);_0x2ba576[_0xc898('0x17')]();_0x2ba576['on'](_0xc898('0x18'),function(){return _0x1cf30d(_0x509430);});}catch(_0x2ac8c5){fs[_0xc898('0x19')](_0x509430);return _0x2029da(_0x2ac8c5);}});});};exports[_0xc898('0x1a')]=function(_0x2f8160,_0x5480a0,_0x1f45de,_0x105f20){return new BPromise(function(_0x581899,_0x2c059d){_0x105f20=combineOptions(_0x105f20);var _0x6801e0=new Buffer(_0x1f45de);var _0x3f0093=fs['createReadStream'](_0x2f8160);var _0x4653bf=fs[_0xc898('0x11')](_0x5480a0);var _0x13f30b=crypto[_0xc898('0x1b')](_0x105f20[_0xc898('0x8')],_0x6801e0);_0x3f0093['on']('data',function(_0x1d7ca2){var _0x3f61ef=new Buffer(_0x13f30b[_0xc898('0x13')](_0x1d7ca2),_0xc898('0x14'));_0x4653bf['write'](_0x3f61ef);});_0x3f0093['on'](_0xc898('0x17'),function(){try{var _0x30751e=new Buffer(_0x13f30b[_0xc898('0x16')](_0xc898('0x14')),_0xc898('0x14'));_0x4653bf[_0xc898('0x15')](_0x30751e);_0x4653bf['end']();_0x4653bf['on'](_0xc898('0x18'),function(){return _0x581899(_0x5480a0);});}catch(_0x973a9c){fs['unlink'](_0x5480a0);return _0x2c059d(_0x973a9c);}});});};exports[_0xc898('0x1c')]=function(_0x5e58a4,_0x405ad9,_0x4b65b0){var _0x46a6e8=_0x4b65b0||stringOptions['algorithm'];var _0x5aa5cb=_0x405ad9||stringOptions[_0xc898('0x1d')];var _0x3f0ac1=crypto[_0xc898('0x1e')](_0x46a6e8,_0x5aa5cb);var _0x1075e4=_0x3f0ac1[_0xc898('0x13')](_0x5e58a4,'utf8',_0xc898('0x1f'));_0x1075e4+=_0x3f0ac1['final'](_0xc898('0x1f'));return _0x1075e4;};exports[_0xc898('0x20')]=function(_0xc7c392,_0x32b638,_0xe36021){var _0x1c90fd=_0xe36021||stringOptions[_0xc898('0x8')];var _0xf70e12=_0x32b638||stringOptions[_0xc898('0x1d')];var _0x2ef529=crypto[_0xc898('0x1b')](_0x1c90fd,_0xf70e12);var _0x5a3ae6=_0x2ef529[_0xc898('0x13')](_0xc7c392,_0xc898('0x1f'),_0xc898('0x21'));_0x5a3ae6+=_0x2ef529['final'](_0xc898('0x21'));return _0x5a3ae6;};
\ No newline at end of file
+var _0xe7f8=['app','secrets','session','aes-256-ctr','encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','filter','hasOwnProperty','encryptFile','createReadStream','data','binary','write','end','final','close','createWriteStream','createDecipher','update','encryptString','secret','utf8','base64','decryptString','crypto','bluebird','../../config/environment','../../config/logger'];(function(_0x290e0e,_0x78aa77){var _0xf8cf06=function(_0x1aee50){while(--_0x1aee50){_0x290e0e['push'](_0x290e0e['shift']());}};_0xf8cf06(++_0x78aa77);}(_0xe7f8,0xb6));var _0x8e7f=function(_0x3ac274,_0x4daee6){_0x3ac274=_0x3ac274-0x0;var _0x13499a=_0xe7f8[_0x3ac274];return _0x13499a;};'use strict';var crypto=require(_0x8e7f('0x0'));var fs=require('fs');var BPromise=require(_0x8e7f('0x1'));var _=require('lodash');var config=require(_0x8e7f('0x2'));var logger=require(_0x8e7f('0x3'))(_0x8e7f('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x8e7f('0x5')][_0x8e7f('0x6')],'algorithm':_0x8e7f('0x7')};const fileOptions={'algorithm':'aes192'};if(config[_0x8e7f('0x8')]&&config[_0x8e7f('0x8')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x8e7f('0x8')][_0x8e7f('0x9')]);if(isSupported){fileOptions[_0x8e7f('0x9')]=config[_0x8e7f('0x8')][_0x8e7f('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x8e7f('0xa')](config[_0x8e7f('0x8')][_0x8e7f('0x9')],_0x8e7f('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x4564e3){return AES_SUPPORTED_RX['test'](_0x4564e3);}function getSupportedCiphers(){return crypto[_0x8e7f('0xc')]()[_0x8e7f('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x768864){return getSupportedCiphers()['indexOf'](_0x768864)>-0x1;}function combineOptions(_0xa5e61a){var _0x5b7b25={};for(var _0x1d72f2 in fileOptions){if(fileOptions[_0x8e7f('0xe')](_0x1d72f2)){_0x5b7b25[_0x1d72f2]=fileOptions[_0x1d72f2];}}if(_0xa5e61a){for(var _0x312390 in _0xa5e61a){if(_0xa5e61a[_0x8e7f('0xe')](_0x312390)){_0x5b7b25[_0x312390]=_0xa5e61a[_0x312390];}}}return _0x5b7b25;}exports[_0x8e7f('0xf')]=function(_0x2d75d,_0x3a9545,_0x4e90df,_0x27ccfc){return new BPromise(function(_0x12b393,_0x49d901){_0x27ccfc=combineOptions(_0x27ccfc);var _0x4f7251=new Buffer(_0x4e90df);var _0x13e638=fs[_0x8e7f('0x10')](_0x2d75d);var _0xcf1b69=fs['createWriteStream'](_0x3a9545);var _0x34b8fb=crypto['createCipher'](_0x27ccfc['algorithm'],_0x4f7251);_0x13e638['on'](_0x8e7f('0x11'),function(_0x1e4f8f){var _0x13ea42=new Buffer(_0x34b8fb['update'](_0x1e4f8f),_0x8e7f('0x12'));_0xcf1b69[_0x8e7f('0x13')](_0x13ea42);});_0x13e638['on'](_0x8e7f('0x14'),function(){try{var _0x59ae95=new Buffer(_0x34b8fb[_0x8e7f('0x15')](_0x8e7f('0x12')),_0x8e7f('0x12'));_0xcf1b69['write'](_0x59ae95);_0xcf1b69[_0x8e7f('0x14')]();_0xcf1b69['on'](_0x8e7f('0x16'),function(){return _0x12b393(_0x3a9545);});}catch(_0x31d472){fs['unlink'](_0x3a9545);return _0x49d901(_0x31d472);}});});};exports['decryptFile']=function(_0x51511f,_0x5c2d3d,_0x32fa6e,_0x40f116){return new BPromise(function(_0x29cf28,_0x503c62){_0x40f116=combineOptions(_0x40f116);var _0x37a5b8=new Buffer(_0x32fa6e);var _0x319c55=fs[_0x8e7f('0x10')](_0x51511f);var _0x3a1030=fs[_0x8e7f('0x17')](_0x5c2d3d);var _0x5c9cdc=crypto[_0x8e7f('0x18')](_0x40f116[_0x8e7f('0x9')],_0x37a5b8);_0x319c55['on'](_0x8e7f('0x11'),function(_0x15de79){var _0xc139c=new Buffer(_0x5c9cdc[_0x8e7f('0x19')](_0x15de79),'binary');_0x3a1030[_0x8e7f('0x13')](_0xc139c);});_0x319c55['on']('end',function(){try{var _0x6a3fff=new Buffer(_0x5c9cdc[_0x8e7f('0x15')](_0x8e7f('0x12')),_0x8e7f('0x12'));_0x3a1030[_0x8e7f('0x13')](_0x6a3fff);_0x3a1030[_0x8e7f('0x14')]();_0x3a1030['on'](_0x8e7f('0x16'),function(){return _0x29cf28(_0x5c2d3d);});}catch(_0x2de38b){fs['unlink'](_0x5c2d3d);return _0x503c62(_0x2de38b);}});});};exports[_0x8e7f('0x1a')]=function(_0x129d1e,_0x2831bf,_0xa26488){var _0x3375e7=_0xa26488||stringOptions[_0x8e7f('0x9')];var _0x737404=_0x2831bf||stringOptions[_0x8e7f('0x1b')];var _0x241c44=crypto['createCipher'](_0x3375e7,_0x737404);var _0x4f92b9=_0x241c44[_0x8e7f('0x19')](_0x129d1e,_0x8e7f('0x1c'),'base64');_0x4f92b9+=_0x241c44[_0x8e7f('0x15')](_0x8e7f('0x1d'));return _0x4f92b9;};exports[_0x8e7f('0x1e')]=function(_0x34f0cd,_0x5214ca,_0x4ad72d){var _0x17d677=_0x4ad72d||stringOptions[_0x8e7f('0x9')];var _0x3c3fe3=_0x5214ca||stringOptions[_0x8e7f('0x1b')];var _0x4d65f2=crypto[_0x8e7f('0x18')](_0x17d677,_0x3c3fe3);var _0x490d50=_0x4d65f2['update'](_0x34f0cd,_0x8e7f('0x1d'),'utf8');_0x490d50+=_0x4d65f2[_0x8e7f('0x15')](_0x8e7f('0x1c'));return _0x490d50;};
\ No newline at end of file
index d0c32f8..7281cf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9269=['then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','isInteger','forEach','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','CSV','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','exit','lodash','to-csv','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','info','format','find','split','splitSizeCsv'];(function(_0x12c263,_0x2d9bce){var _0x192cd7=function(_0x3a1fc0){while(--_0x3a1fc0){_0x12c263['push'](_0x12c263['shift']());}};_0x192cd7(++_0x2d9bce);}(_0x9269,0x161));var _0x9926=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x9269[_0x4d8ed9];return _0x1e2140;};'use strict';var util=require('util');var path=require('path');var _=require(_0x9926('0x0'));var csv=require(_0x9926('0x1'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x9926('0x2'));var db=require(_0x9926('0x3'))['db'];var dbH=require(_0x9926('0x3'))[_0x9926('0x4')];var logger=require('../../config/logger')(_0x9926('0x5'));var EXTRACTED_REPORT_ID=Number(process[_0x9926('0x6')][0x2]);var QUERY=process[_0x9926('0x6')][0x3];var PATH=process[_0x9926('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x415214,_0x15fcf0){var _0x32431a={'status':_0x415214};var _0xb8d73e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x15fcf0){_0x32431a[_0x9926('0x7')]=_0x15fcf0;}return db[_0x9926('0x8')][_0x9926('0x9')](_0x32431a,_0xb8d73e);}function main(){var _0x59f313=0x1388;var _0x4e96eb;logger[_0x9926('0xa')](util[_0x9926('0xb')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'));return db['Setting'][_0x9926('0xc')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x9926('0xd'),_0x9926('0xe')]})[_0x9926('0xf')](function(_0x55d5e9){if(_0x55d5e9){_0x4e96eb=_0x55d5e9;_0x59f313=_0x4e96eb[_0x9926('0xe')]||0x1388;}})[_0x9926('0xf')](function(){return dbH[_0x9926('0x10')]['query'](util['format'](_0x9926('0x11'),QUERY),{'type':dbH[_0x9926('0x10')][_0x9926('0x12')][_0x9926('0x13')]});})['then'](function(_0x1f8685){if(!_0x1f8685[0x0][_0x9926('0x14')]){return analyticExtractedReport(_0x9926('0x15'));}var _0x451b84=[];var _0x4b1561=0x0;if(_0x4e96eb[_0x9926('0xd')]){if(_0x1f8685&&_0x1f8685[_0x9926('0x16')]){var _0x4089c1=_[_0x9926('0x17')](_0x1f8685[0x0][_0x9926('0x14')]/_0x59f313);var _0x56295b=Number[_0x9926('0x18')](_0x1f8685[0x0]['num']/_0x59f313)?_0x1f8685[0x0][_0x9926('0x14')]%_0x59f313:0x0;_0x4089c1[_0x9926('0x19')](function(_0x4d5a18){if(_0x4d5a18>0x0){_0x4b1561+=_0x59f313;}_0x451b84[_0x9926('0x1a')](dbH['sequelize'][_0x9926('0x1b')](util[_0x9926('0xb')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x59f313,_0x4b1561),{'type':dbH[_0x9926('0x10')][_0x9926('0x12')]['SELECT']}));});if(_0x56295b>0x0){_0x4b1561+=_0x59f313;_0x451b84[_0x9926('0x1a')](dbH['sequelize'][_0x9926('0x1b')](util[_0x9926('0xb')](_0x9926('0x1c'),QUERY,_0x56295b,_0x4b1561),{'type':dbH[_0x9926('0x10')][_0x9926('0x12')][_0x9926('0x13')]}));}}}else{_0x451b84[_0x9926('0x1a')](dbH[_0x9926('0x10')][_0x9926('0x1b')](QUERY,{'type':dbH['sequelize']['QueryTypes']['SELECT']}));}var _0x8a7cc8=path[_0x9926('0x1d')](PATH);var _0x3df364=path[_0x9926('0x1e')](PATH,_0x9926('0x1f'));var _0x217f08=_0x4e96eb[_0x9926('0xd')]&&_0x451b84[_0x9926('0x16')]>0x1;var _0x5c22a4=[];if(!fs[_0x9926('0x20')](path[_0x9926('0x21')](_0x8a7cc8,_0x3df364))&&_0x217f08){fs[_0x9926('0x22')](path['join'](_0x8a7cc8,_0x3df364));}return BPromise[_0x9926('0x23')](_0x451b84,function(_0x14902e){_0x5c22a4['push'](_0x14902e);})[_0x9926('0xf')](function(){for(var _0x5e33b7=0x0;_0x5e33b7<_0x5c22a4[_0x9926('0x16')];_0x5e33b7+=0x1){var _0x148043;var _0x354daf=_0x5c22a4[_0x5e33b7];if(_0x217f08){_0x148043=path[_0x9926('0x21')](_0x8a7cc8,_0x3df364,util[_0x9926('0xb')](_0x9926('0x24'),_0x3df364,_0x5e33b7,_0x9926('0x25')));}else{_0x148043=path[_0x9926('0x21')](_0x8a7cc8,util['format'](_0x9926('0x26'),_0x3df364,'csv'));}fs[_0x9926('0x27')](_0x148043,csv(_0x354daf));}})[_0x9926('0xf')](function(){if(_0x217f08){return new Promise(function(_0x42a7df){zipdir(path['join'](_0x8a7cc8,_0x3df364),{'saveTo':path[_0x9926('0x21')](_0x8a7cc8,util[_0x9926('0xb')](_0x9926('0x26'),_0x3df364,_0x9926('0x28')))},function(_0x123553,_0x3b203c){rimraf(path[_0x9926('0x21')](_0x8a7cc8,_0x3df364),function(){});_0x42a7df(_0x9926('0x29'));});});}})[_0x9926('0xf')](function(){logger[_0x9926('0xa')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x9926('0x2a')));return analyticExtractedReport(_0x9926('0x2b'),_0x217f08?util[_0x9926('0xb')](_0x9926('0x26'),_0x3df364,_0x217f08?'zip':_0x9926('0x25')):null);});})['catch'](function(_0x1382ff){logger[_0x9926('0xa')](util[_0x9926('0xb')](_0x9926('0x2c'),EXTRACTED_REPORT_ID,_0x9926('0x2a')),util['inspect'](_0x1382ff,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x9926('0x2d')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x21cc=['util','path','lodash','to-csv','bluebird','rimraf','../../mysqldb','../../config/logger','analytics','argv','update','info','Setting','find','split','splitSizeCsv','then','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','forEach','push','query','format','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','mkdirSync','join','csv','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','CSV','inspect','Failed','finally','exit'];(function(_0x5dba8f,_0x74ebaf){var _0x359ed4=function(_0x4af407){while(--_0x4af407){_0x5dba8f['push'](_0x5dba8f['shift']());}};_0x359ed4(++_0x74ebaf);}(_0x21cc,0x11a));var _0xc21c=function(_0x253875,_0x19d574){_0x253875=_0x253875-0x0;var _0x4fabe7=_0x21cc[_0x253875];return _0x4fabe7;};'use strict';var util=require(_0xc21c('0x0'));var path=require(_0xc21c('0x1'));var _=require(_0xc21c('0x2'));var csv=require(_0xc21c('0x3'));var fs=require('fs');var BPromise=require(_0xc21c('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0xc21c('0x5'));var db=require(_0xc21c('0x6'))['db'];var dbH=require(_0xc21c('0x6'))['dbH'];var logger=require(_0xc21c('0x7'))(_0xc21c('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xc21c('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x10130a,_0x59724e){var _0xbd1f8={'status':_0x10130a};var _0x5a17a8={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x59724e){_0xbd1f8['savename']=_0x59724e;}return db['AnalyticExtractedReport'][_0xc21c('0xa')](_0xbd1f8,_0x5a17a8);}function main(){var _0x58aa16=0x1388;var _0xc4e6bb;logger[_0xc21c('0xb')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'));return db[_0xc21c('0xc')][_0xc21c('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc21c('0xe'),_0xc21c('0xf')]})[_0xc21c('0x10')](function(_0x50024d){if(_0x50024d){_0xc4e6bb=_0x50024d;_0x58aa16=_0xc4e6bb[_0xc21c('0xf')]||0x1388;}})['then'](function(){return dbH['sequelize']['query'](util['format'](_0xc21c('0x11'),QUERY),{'type':dbH[_0xc21c('0x12')][_0xc21c('0x13')][_0xc21c('0x14')]});})[_0xc21c('0x10')](function(_0x524248){if(!_0x524248[0x0][_0xc21c('0x15')]){return analyticExtractedReport(_0xc21c('0x16'));}var _0x3eaebb=[];var _0x3bc7d0=0x0;if(_0xc4e6bb[_0xc21c('0xe')]){if(_0x524248&&_0x524248[_0xc21c('0x17')]){var _0x57fe78=_['range'](_0x524248[0x0][_0xc21c('0x15')]/_0x58aa16);var _0x591757=Number['isInteger'](_0x524248[0x0]['num']/_0x58aa16)?_0x524248[0x0]['num']%_0x58aa16:0x0;_0x57fe78[_0xc21c('0x18')](function(_0x517e95){if(_0x517e95>0x0){_0x3bc7d0+=_0x58aa16;}_0x3eaebb[_0xc21c('0x19')](dbH[_0xc21c('0x12')][_0xc21c('0x1a')](util[_0xc21c('0x1b')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x58aa16,_0x3bc7d0),{'type':dbH[_0xc21c('0x12')]['QueryTypes'][_0xc21c('0x14')]}));});if(_0x591757>0x0){_0x3bc7d0+=_0x58aa16;_0x3eaebb[_0xc21c('0x19')](dbH[_0xc21c('0x12')][_0xc21c('0x1a')](util[_0xc21c('0x1b')](_0xc21c('0x1c'),QUERY,_0x591757,_0x3bc7d0),{'type':dbH['sequelize'][_0xc21c('0x13')][_0xc21c('0x14')]}));}}}else{_0x3eaebb[_0xc21c('0x19')](dbH[_0xc21c('0x12')]['query'](QUERY,{'type':dbH[_0xc21c('0x12')][_0xc21c('0x13')][_0xc21c('0x14')]}));}var _0xb9689c=path[_0xc21c('0x1d')](PATH);var _0x4e0816=path[_0xc21c('0x1e')](PATH,_0xc21c('0x1f'));var _0x45ddac=_0xc4e6bb[_0xc21c('0xe')]&&_0x3eaebb[_0xc21c('0x17')]>0x1;var _0x27d436=[];if(!fs['existsSync'](path['join'](_0xb9689c,_0x4e0816))&&_0x45ddac){fs[_0xc21c('0x20')](path[_0xc21c('0x21')](_0xb9689c,_0x4e0816));}return BPromise['each'](_0x3eaebb,function(_0x1770c9){_0x27d436[_0xc21c('0x19')](_0x1770c9);})[_0xc21c('0x10')](function(){for(var _0x119d50=0x0;_0x119d50<_0x27d436['length'];_0x119d50+=0x1){var _0x182e11;var _0x25a18d=_0x27d436[_0x119d50];if(_0x45ddac){_0x182e11=path[_0xc21c('0x21')](_0xb9689c,_0x4e0816,util[_0xc21c('0x1b')]('%s%d.%s',_0x4e0816,_0x119d50,_0xc21c('0x22')));}else{_0x182e11=path[_0xc21c('0x21')](_0xb9689c,util['format']('%s.%s',_0x4e0816,_0xc21c('0x22')));}fs[_0xc21c('0x23')](_0x182e11,csv(_0x25a18d));}})[_0xc21c('0x10')](function(){if(_0x45ddac){return new Promise(function(_0x277320){zipdir(path[_0xc21c('0x21')](_0xb9689c,_0x4e0816),{'saveTo':path[_0xc21c('0x21')](_0xb9689c,util[_0xc21c('0x1b')]('%s.%s',_0x4e0816,_0xc21c('0x24')))},function(_0x10124,_0x73603b){rimraf(path[_0xc21c('0x21')](_0xb9689c,_0x4e0816),function(){});_0x277320(_0xc21c('0x25'));});});}})[_0xc21c('0x10')](function(){logger['info'](util[_0xc21c('0x1b')](_0xc21c('0x26'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xc21c('0x27'),_0x45ddac?util[_0xc21c('0x1b')]('%s.%s',_0x4e0816,_0x45ddac?_0xc21c('0x24'):_0xc21c('0x22')):null);});})[_0xc21c('0x28')](function(_0x37ea5d){logger[_0xc21c('0xb')](util[_0xc21c('0x1b')](_0xc21c('0x29'),EXTRACTED_REPORT_ID,_0xc21c('0x2a')),util[_0xc21c('0x2b')](_0x37ea5d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc21c('0x2c'));})[_0xc21c('0x2d')](function(){process[_0xc21c('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index 4e15432..1f25c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ba5=['basename','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','%s.%s','pdf','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','header','pipe','createWriteStream','finish','error','createPdfFromHTML','util','path','moment','html-to-pdfmake','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','map','tableHeader','pick','toString','fill','auto','body','concat','chunk','keys','forEach','push','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','length','before','margin','landscape','\x20/\x20','footer','black','right','num','Setting','find','split','splitSizePdf','then','isInteger','query','sequelize','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname'];(function(_0x50bf67,_0x2af7c8){var _0x2e0516=function(_0x3ff5b4){while(--_0x3ff5b4){_0x50bf67['push'](_0x50bf67['shift']());}};_0x2e0516(++_0x2af7c8);}(_0x0ba5,0x13a));var _0x50ba=function(_0x415657,_0x39092e){_0x415657=_0x415657-0x0;var _0x9607a1=_0x0ba5[_0x415657];return _0x9607a1;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x50ba('0x0'));var path=require(_0x50ba('0x1'));var moment=require(_0x50ba('0x2'));var htmlToPdfmake=require(_0x50ba('0x3'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x50ba('0x4'));var rimraf=require(_0x50ba('0x5'));var JSDOM=require(_0x50ba('0x6'))[_0x50ba('0x7')];var window=new JSDOM('')[_0x50ba('0x8')];var BPromise=require('bluebird');var db=require(_0x50ba('0x9'))['db'];var dbH=require(_0x50ba('0x9'))[_0x50ba('0xa')];var logger=require(_0x50ba('0xb'))(_0x50ba('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0x50ba('0xd')][0x2]);var QUERY=process[_0x50ba('0xd')][0x3];var PATH=process[_0x50ba('0xd')][0x4];var NAME=process[_0x50ba('0xd')][0x5];var FORMAT=_0x50ba('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1e230e,_0x41965d){var _0x3bdb46={'status':_0x1e230e};var _0x1bd783={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x41965d){_0x3bdb46['savename']=_0x41965d;}return db[_0x50ba('0xf')]['update'](_0x3bdb46,_0x1bd783);}function getHeaders(_0xa7d956){return _[_0x50ba('0x10')](_0xa7d956,function(_0x59a4bd){return{'text':_0x59a4bd,'style':_0x50ba('0x11')};});}function getRows(_0x448f76,_0x31c961){return _[_0x50ba('0x10')](_0x31c961,function(_0x5bb068){return _(_0x5bb068)[_0x50ba('0x12')](_0x448f76)[_0x50ba('0x10')](function(_0xe13475){return _0xe13475?_[_0x50ba('0x13')](_0xe13475):'';})['value']();});}function createTable(_0x2e69ad,_0x306382){var _0x593fec={'widths':_[_0x50ba('0x14')](Array(_0x2e69ad['length']),0x91),'heights':function(_0x1a92b6){return _0x1a92b6===0x0?_0x50ba('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x8b9b9c=getHeaders(_0x2e69ad);_0x593fec[_0x50ba('0x16')]['push'](_0x8b9b9c);var _0x45ff24=getRows(_0x2e69ad,_0x306382);_0x593fec[_0x50ba('0x16')]=_0x593fec[_0x50ba('0x16')][_0x50ba('0x17')](_0x45ff24);return _0x593fec;}function createTables(_0x265a55){var _0x3245e8=[];var _0x589e6a=_[_0x50ba('0x18')](Object[_0x50ba('0x19')](_0x265a55[0x0]),0x5);_0x589e6a[_0x50ba('0x1a')](function(_0x24e8c8){_0x3245e8[_0x50ba('0x1b')](createTable(_0x24e8c8,_0x265a55));});return _0x3245e8;}function getPDFDocDefinition(_0x4aa6a9){var _0x120bae=util[_0x50ba('0x1c')](_0x50ba('0x1d'),NAME,EXTRACTED_REPORT[_0x50ba('0x1e')],moment(EXTRACTED_REPORT[_0x50ba('0x1f')])[_0x50ba('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0x50ba('0x20')])['format'](FORMAT));var _0x3afe46=[];for(var _0x56866d=0x0;_0x56866d<_0x4aa6a9[_0x50ba('0x21')];_0x56866d++){var _0x2fedd0=[];if(_0x56866d===0x0){_0x2fedd0[_0x50ba('0x1b')]({'text':_0x120bae,'style':'header'});}var _0x215eb2={'table':_0x4aa6a9[_0x56866d]};if(_0x56866d>0x0){_0x215eb2['pageBreak']=_0x50ba('0x22');_0x215eb2[_0x50ba('0x23')]=[0x0,0x46,0x0,0x0];}_0x2fedd0['push'](_0x215eb2);_0x3afe46[_0x50ba('0x1b')](_0x2fedd0);}return{'pageSize':'A4','pageOrientation':_0x50ba('0x24'),'content':_0x3afe46,'footer':function(_0x121f9f,_0x24dc04){return{'text':_0x121f9f[_0x50ba('0x13')]()+_0x50ba('0x25')+_0x24dc04,'style':_0x50ba('0x26')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x50ba('0x27')},'footer':{'alignment':_0x50ba('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x289423){var _0x49e08a=0x1388;var _0x3b336f;if(!_0x289423[0x0][_0x50ba('0x29')]){return analyticExtractedReport('Empty');}return db[_0x50ba('0x2a')][_0x50ba('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x50ba('0x2c'),_0x50ba('0x2d')]})[_0x50ba('0x2e')](function(_0x470819){if(_0x470819){_0x3b336f=_0x470819;_0x49e08a=_0x3b336f[_0x50ba('0x2d')]||0x3e8;}})[_0x50ba('0x2e')](function(){var _0x31625d=[];var _0x40f9e7=0x0;if(_0x3b336f[_0x50ba('0x2c')]){if(_0x289423&&_0x289423[_0x50ba('0x21')]){var _0x29fd09=_['range'](_0x289423[0x0][_0x50ba('0x29')]/_0x49e08a);var _0x7d7f66=Number[_0x50ba('0x2f')](_0x289423[0x0]['num']/_0x49e08a)?_0x289423[0x0]['num']%_0x49e08a:0x0;_0x29fd09[_0x50ba('0x1a')](function(_0x3eb7e9){if(_0x3eb7e9>0x0){_0x40f9e7+=_0x49e08a;}_0x31625d[_0x50ba('0x1b')](dbH['sequelize'][_0x50ba('0x30')](util[_0x50ba('0x1c')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x49e08a,_0x40f9e7),{'type':dbH[_0x50ba('0x31')]['QueryTypes'][_0x50ba('0x32')]}));});if(_0x7d7f66>0x0){_0x40f9e7+=_0x49e08a;_0x31625d[_0x50ba('0x1b')](dbH[_0x50ba('0x31')][_0x50ba('0x30')](util['format'](_0x50ba('0x33'),QUERY,_0x7d7f66,_0x40f9e7),{'type':dbH['sequelize'][_0x50ba('0x34')][_0x50ba('0x32')]}));}}}else{_0x31625d[_0x50ba('0x1b')](dbH['sequelize'][_0x50ba('0x30')](QUERY,{'type':dbH[_0x50ba('0x31')][_0x50ba('0x34')]['SELECT']}));}var _0x5a96a4=path[_0x50ba('0x35')](PATH);var _0x2dfa6e=path[_0x50ba('0x36')](PATH,_0x50ba('0x37'));var _0x1136a1=_0x3b336f[_0x50ba('0x2c')]&&_0x31625d[_0x50ba('0x21')]>0x1;var _0x5b9bd7=[];if(!fs[_0x50ba('0x38')](path[_0x50ba('0x39')](_0x5a96a4,_0x2dfa6e))&&_0x1136a1){fs[_0x50ba('0x3a')](path['join'](_0x5a96a4,_0x2dfa6e));}return BPromise[_0x50ba('0x3b')](_0x31625d,function(_0x3d77cd){_0x5b9bd7['push'](_0x3d77cd);})[_0x50ba('0x2e')](function(){var _0x1c3fdf=[];for(var _0xa12a29=0x0;_0xa12a29<_0x5b9bd7[_0x50ba('0x21')];_0xa12a29+=0x1){var _0x3aa878=_0x5b9bd7[_0xa12a29];var _0x232e41=createTables(_[_0x50ba('0x3c')](_0x3aa878));var _0xdae022;var _0x5f6693=getPDFDocDefinition(_0x232e41);var _0x218ffd=getPDFPrinter();var _0x5d79d3=_0x218ffd[_0x50ba('0x3d')](_0x5f6693);if(_0x1136a1){_0xdae022=path[_0x50ba('0x39')](_0x5a96a4,_0x2dfa6e,util[_0x50ba('0x1c')](_0x50ba('0x3e'),_0x2dfa6e,_0xa12a29,'pdf'));}else{_0xdae022=path[_0x50ba('0x39')](_0x5a96a4,util[_0x50ba('0x1c')](_0x50ba('0x3f'),_0x2dfa6e,_0x50ba('0x40')));}_0x1c3fdf['push'](writePDFDocument(_0x5d79d3,_0xdae022));}return Promise['all'](_0x1c3fdf);})['then'](function(){if(_0x1136a1){return new Promise(function(_0x288dc5){zipdir(path[_0x50ba('0x39')](_0x5a96a4,_0x2dfa6e),{'saveTo':path['join'](_0x5a96a4,util[_0x50ba('0x1c')](_0x50ba('0x3f'),_0x2dfa6e,_0x50ba('0x41')))},function(){rimraf(path[_0x50ba('0x39')](_0x5a96a4,_0x2dfa6e),function(){});_0x288dc5(_0x50ba('0x42'));});});}})[_0x50ba('0x2e')](function(){if(!_0x1136a1)return;rimraf(path[_0x50ba('0x39')](_0x5a96a4,_0x2dfa6e),function(){});})[_0x50ba('0x2e')](function(){logger['info'](util[_0x50ba('0x1c')](_0x50ba('0x43'),EXTRACTED_REPORT_ID,_0x50ba('0x44')));return analyticExtractedReport(_0x50ba('0x45'),_0x1136a1?util[_0x50ba('0x1c')](_0x50ba('0x3f'),_0x2dfa6e,_0x1136a1?'zip':'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x50ba('0x46')](util[_0x50ba('0x1c')](_0x50ba('0x47'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport'][_0x50ba('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x50ba('0x2e')](function(_0x303015){EXTRACTED_REPORT=_0x303015;return dbH['sequelize'][_0x50ba('0x30')](util[_0x50ba('0x1c')](_0x50ba('0x49'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x50ba('0x32')]});})[_0x50ba('0x2e')](extractReport)['catch'](function(_0x5e592f){logger[_0x50ba('0x46')](util[_0x50ba('0x1c')](_0x50ba('0x4a'),EXTRACTED_REPORT_ID,_0x50ba('0x44')),util['inspect'](_0x5e592f,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x50ba('0x4b'));})['finally'](function(){process[_0x50ba('0x4c')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x121286=new PdfPrinter({'Arial':{'normal':__dirname+_0x50ba('0x4d'),'bold':__dirname+_0x50ba('0x4e'),'italics':__dirname+_0x50ba('0x4f'),'bolditalics':__dirname+_0x50ba('0x50')}});return _0x121286;}function getPDFDocDefinitionFromHTML(_0x1f6672,_0x5828d8){var _0x43d6ba=util[_0x50ba('0x1c')]('%s\x20#%d',_0x5828d8[_0x50ba('0x51')],_0x5828d8[_0x50ba('0x52')]);var _0x774713=moment()[_0x50ba('0x1c')](_0x50ba('0x53'))['toString']();var _0x409b2a=htmlToPdfmake(_0x1f6672,{'window':window,'tableAutoSize':!![]});return{'content':[_0x409b2a],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x50ba('0x54'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x50ba('0x54'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x50ba('0x54')}},'header':function(){return[{'text':_0x50ba('0x55'),'style':_0x50ba('0x56')}];},'footer':function(_0x1664d9,_0x2185b1){return[{'text':util[_0x50ba('0x1c')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x43d6ba,_0x1664d9,_0x2185b1,_0x774713),'style':_0x50ba('0x26')}];}};}function writePDFDocument(_0x55477c,_0x1bbfe8){return new Promise(function(_0x3e5c79,_0x471577){var _0x50eea7=_0x55477c[_0x50ba('0x57')](fs[_0x50ba('0x58')](_0x1bbfe8));_0x50eea7['on']('finish',function(){_0x3e5c79(_0x50ba('0x59'));});_0x50eea7['on'](_0x50ba('0x5a'),function(_0x4704a7){_0x471577(_0x4704a7);});_0x55477c['end']();});}exports[_0x50ba('0x5b')]=function(_0x3abb54,_0x33bd57){var _0x1f622e=getPDFPrinter();var _0x1f0d3e=getPDFDocDefinitionFromHTML(_0x3abb54,_0x33bd57);var _0x2d4c5e=_0x1f622e['createPdfKitDocument'](_0x1f0d3e);return writePDFDocument(_0x2d4c5e,_0x33bd57[_0x50ba('0x1')])['catch'](function(_0x4f4626){throw _0x4f4626;});};
\ No newline at end of file
+var _0x18e5=['Setting','find','split','splitSizePdf','then','range','num','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','query','dirname','basename','.pdf','existsSync','join','mkdirSync','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','createWriteStream','finish','error','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','pick','toString','fill','length','auto','push','body','concat','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','before','margin','\x20/\x20','footer','right'];(function(_0x5647a5,_0x4fc32e){var _0x419234=function(_0x4bfb94){while(--_0x4bfb94){_0x5647a5['push'](_0x5647a5['shift']());}};_0x419234(++_0x4fc32e);}(_0x18e5,0x1d6));var _0x518e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x18e5[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x518e('0x0'));var path=require(_0x518e('0x1'));var moment=require(_0x518e('0x2'));var htmlToPdfmake=require(_0x518e('0x3'));var PdfPrinter=require(_0x518e('0x4'));var zipdir=require(_0x518e('0x5'));var rimraf=require('rimraf');var JSDOM=require(_0x518e('0x6'))[_0x518e('0x7')];var window=new JSDOM('')[_0x518e('0x8')];var BPromise=require('bluebird');var db=require(_0x518e('0x9'))['db'];var dbH=require('../../mysqldb')[_0x518e('0xa')];var logger=require(_0x518e('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x518e('0xc')][0x2]);var QUERY=process[_0x518e('0xc')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x518e('0xc')][0x5];var FORMAT=_0x518e('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x223165,_0x4a6c17){var _0x1be547={'status':_0x223165};var _0x43fc30={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4a6c17){_0x1be547[_0x518e('0xe')]=_0x4a6c17;}return db[_0x518e('0xf')][_0x518e('0x10')](_0x1be547,_0x43fc30);}function getHeaders(_0x237357){return _[_0x518e('0x11')](_0x237357,function(_0x17ae1f){return{'text':_0x17ae1f,'style':'tableHeader'};});}function getRows(_0x1282a7,_0x457fa7){return _['map'](_0x457fa7,function(_0x3aeaaa){return _(_0x3aeaaa)[_0x518e('0x12')](_0x1282a7)[_0x518e('0x11')](function(_0x14f643){return _0x14f643?_[_0x518e('0x13')](_0x14f643):'';})['value']();});}function createTable(_0x3fb775,_0xeaf255){var _0x55fd2c={'widths':_[_0x518e('0x14')](Array(_0x3fb775[_0x518e('0x15')]),0x91),'heights':function(_0x5a07d2){return _0x5a07d2===0x0?_0x518e('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x107fd3=getHeaders(_0x3fb775);_0x55fd2c['body'][_0x518e('0x17')](_0x107fd3);var _0x213f44=getRows(_0x3fb775,_0xeaf255);_0x55fd2c[_0x518e('0x18')]=_0x55fd2c[_0x518e('0x18')][_0x518e('0x19')](_0x213f44);return _0x55fd2c;}function createTables(_0x37e279){var _0x44cc35=[];var _0x58a687=_[_0x518e('0x1a')](Object['keys'](_0x37e279[0x0]),0x5);_0x58a687[_0x518e('0x1b')](function(_0x112c80){_0x44cc35[_0x518e('0x17')](createTable(_0x112c80,_0x37e279));});return _0x44cc35;}function getPDFDocDefinition(_0x28c342){var _0xa796ac=util[_0x518e('0x1c')](_0x518e('0x1d'),NAME,EXTRACTED_REPORT[_0x518e('0x1e')],moment(EXTRACTED_REPORT[_0x518e('0x1f')])[_0x518e('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0x518e('0x20')])[_0x518e('0x1c')](FORMAT));var _0x38d5a4=[];for(var _0x3e1ec6=0x0;_0x3e1ec6<_0x28c342[_0x518e('0x15')];_0x3e1ec6++){var _0xe11cad=[];if(_0x3e1ec6===0x0){_0xe11cad[_0x518e('0x17')]({'text':_0xa796ac,'style':_0x518e('0x21')});}var _0x2e57f1={'table':_0x28c342[_0x3e1ec6]};if(_0x3e1ec6>0x0){_0x2e57f1[_0x518e('0x22')]=_0x518e('0x23');_0x2e57f1[_0x518e('0x24')]=[0x0,0x46,0x0,0x0];}_0xe11cad['push'](_0x2e57f1);_0x38d5a4[_0x518e('0x17')](_0xe11cad);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x38d5a4,'footer':function(_0xdd9eb2,_0xbbb863){return{'text':_0xdd9eb2[_0x518e('0x13')]()+_0x518e('0x25')+_0xbbb863,'style':_0x518e('0x26')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x518e('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1dd27e){var _0x2219cd=0x1388;var _0x44ecc3;if(!_0x1dd27e[0x0]['num']){return analyticExtractedReport('Empty');}return db[_0x518e('0x28')][_0x518e('0x29')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x518e('0x2a'),_0x518e('0x2b')]})[_0x518e('0x2c')](function(_0x100e8c){if(_0x100e8c){_0x44ecc3=_0x100e8c;_0x2219cd=_0x44ecc3[_0x518e('0x2b')]||0x3e8;}})[_0x518e('0x2c')](function(){var _0x571599=[];var _0x233d28=0x0;if(_0x44ecc3[_0x518e('0x2a')]){if(_0x1dd27e&&_0x1dd27e[_0x518e('0x15')]){var _0xd214ba=_[_0x518e('0x2d')](_0x1dd27e[0x0][_0x518e('0x2e')]/_0x2219cd);var _0x310c51=Number['isInteger'](_0x1dd27e[0x0][_0x518e('0x2e')]/_0x2219cd)?_0x1dd27e[0x0]['num']%_0x2219cd:0x0;_0xd214ba[_0x518e('0x1b')](function(_0x4eaf16){if(_0x4eaf16>0x0){_0x233d28+=_0x2219cd;}_0x571599['push'](dbH[_0x518e('0x2f')]['query'](util[_0x518e('0x1c')](_0x518e('0x30'),QUERY,_0x2219cd,_0x233d28),{'type':dbH[_0x518e('0x2f')][_0x518e('0x31')][_0x518e('0x32')]}));});if(_0x310c51>0x0){_0x233d28+=_0x2219cd;_0x571599[_0x518e('0x17')](dbH['sequelize'][_0x518e('0x33')](util[_0x518e('0x1c')](_0x518e('0x30'),QUERY,_0x310c51,_0x233d28),{'type':dbH['sequelize'][_0x518e('0x31')][_0x518e('0x32')]}));}}}else{_0x571599[_0x518e('0x17')](dbH[_0x518e('0x2f')][_0x518e('0x33')](QUERY,{'type':dbH[_0x518e('0x2f')][_0x518e('0x31')]['SELECT']}));}var _0x512d80=path[_0x518e('0x34')](PATH);var _0x482053=path[_0x518e('0x35')](PATH,_0x518e('0x36'));var _0x44bf87=_0x44ecc3[_0x518e('0x2a')]&&_0x571599[_0x518e('0x15')]>0x1;var _0x19ea16=[];if(!fs[_0x518e('0x37')](path[_0x518e('0x38')](_0x512d80,_0x482053))&&_0x44bf87){fs[_0x518e('0x39')](path[_0x518e('0x38')](_0x512d80,_0x482053));}return BPromise['each'](_0x571599,function(_0x26e6f9){_0x19ea16[_0x518e('0x17')](_0x26e6f9);})[_0x518e('0x2c')](function(){var _0x48952b=[];for(var _0x5243d2=0x0;_0x5243d2<_0x19ea16[_0x518e('0x15')];_0x5243d2+=0x1){var _0x18cb1c=_0x19ea16[_0x5243d2];var _0x4a9c84=createTables(_[_0x518e('0x3a')](_0x18cb1c));var _0x41971d;var _0x5d10f8=getPDFDocDefinition(_0x4a9c84);var _0x378f46=getPDFPrinter();var _0x4137a6=_0x378f46[_0x518e('0x3b')](_0x5d10f8);if(_0x44bf87){_0x41971d=path[_0x518e('0x38')](_0x512d80,_0x482053,util[_0x518e('0x1c')](_0x518e('0x3c'),_0x482053,_0x5243d2,_0x518e('0x3d')));}else{_0x41971d=path[_0x518e('0x38')](_0x512d80,util[_0x518e('0x1c')](_0x518e('0x3e'),_0x482053,_0x518e('0x3d')));}_0x48952b[_0x518e('0x17')](writePDFDocument(_0x4137a6,_0x41971d));}return Promise[_0x518e('0x3f')](_0x48952b);})[_0x518e('0x2c')](function(){if(_0x44bf87){return new Promise(function(_0xe46697){zipdir(path[_0x518e('0x38')](_0x512d80,_0x482053),{'saveTo':path[_0x518e('0x38')](_0x512d80,util[_0x518e('0x1c')](_0x518e('0x3e'),_0x482053,_0x518e('0x40')))},function(){rimraf(path[_0x518e('0x38')](_0x512d80,_0x482053),function(){});_0xe46697(_0x518e('0x41'));});});}})[_0x518e('0x2c')](function(){if(!_0x44bf87)return;rimraf(path[_0x518e('0x38')](_0x512d80,_0x482053),function(){});})[_0x518e('0x2c')](function(){logger['info'](util['format'](_0x518e('0x42'),EXTRACTED_REPORT_ID,_0x518e('0x43')));return analyticExtractedReport(_0x518e('0x44'),_0x44bf87?util[_0x518e('0x1c')](_0x518e('0x3e'),_0x482053,_0x44bf87?_0x518e('0x40'):_0x518e('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x518e('0x1c')](_0x518e('0x45'),EXTRACTED_REPORT_ID,_0x518e('0x43')));return db['AnalyticExtractedReport']['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x518e('0x2c')](function(_0x6bc2a){EXTRACTED_REPORT=_0x6bc2a;return dbH[_0x518e('0x2f')][_0x518e('0x33')](util['format'](_0x518e('0x46'),QUERY),{'type':dbH[_0x518e('0x2f')][_0x518e('0x31')][_0x518e('0x32')]});})['then'](extractReport)[_0x518e('0x47')](function(_0x5dc1ba){logger['info'](util['format'](_0x518e('0x48'),EXTRACTED_REPORT_ID,_0x518e('0x43')),util['inspect'](_0x5dc1ba,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x518e('0x49')](function(){process[_0x518e('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x336a94=new PdfPrinter({'Arial':{'normal':__dirname+_0x518e('0x4b'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x518e('0x4c')}});return _0x336a94;}function getPDFDocDefinitionFromHTML(_0x2c7cbd,_0x26b88a){var _0x5d132e=util[_0x518e('0x1c')](_0x518e('0x4d'),_0x26b88a['channel'],_0x26b88a[_0x518e('0x4e')]);var _0x113c2e=moment()[_0x518e('0x1c')](_0x518e('0x4f'))['toString']();var _0x31a104=htmlToPdfmake(_0x2c7cbd,{'window':window,'tableAutoSize':!![]});return{'content':[_0x31a104],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x518e('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x518e('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x518e('0x50')}},'header':function(){return[{'text':_0x518e('0x51'),'style':_0x518e('0x21')}];},'footer':function(_0x40076d,_0x5cc838){return[{'text':util['format']('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x5d132e,_0x40076d,_0x5cc838,_0x113c2e),'style':_0x518e('0x26')}];}};}function writePDFDocument(_0x5ddad5,_0x3967d9){return new Promise(function(_0x24c4aa,_0x77b334){var _0x5ebe36=_0x5ddad5['pipe'](fs[_0x518e('0x52')](_0x3967d9));_0x5ebe36['on'](_0x518e('0x53'),function(){_0x24c4aa(_0x518e('0x53'));});_0x5ebe36['on'](_0x518e('0x54'),function(_0x8e7635){_0x77b334(_0x8e7635);});_0x5ddad5['end']();});}exports['createPdfFromHTML']=function(_0x5751cc,_0x3447bc){var _0x46a00e=getPDFPrinter();var _0x351117=getPDFDocDefinitionFromHTML(_0x5751cc,_0x3447bc);var _0x32d75a=_0x46a00e[_0x518e('0x3b')](_0x351117);return writePDFDocument(_0x32d75a,_0x3447bc['path'])[_0x518e('0x47')](function(_0x4efe57){throw _0x4efe57;});};
\ No newline at end of file
index 8447ae7..560b847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5dd=['%s.%s','zip','catch','inspect','Failed','finally','exit','util','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','XLSX','Setting','split','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','length','range','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','writeFileSync','binary'];(function(_0x4b527e,_0x4c85fe){var _0x1a1189=function(_0x21c560){while(--_0x21c560){_0x4b527e['push'](_0x4b527e['shift']());}};_0x1a1189(++_0x4c85fe);}(_0xa5dd,0x101));var _0xda5d=function(_0x4360b7,_0x5c48f4){_0x4360b7=_0x4360b7-0x0;var _0x2f24bf=_0xa5dd[_0x4360b7];return _0x2f24bf;};'use strict';var util=require(_0xda5d('0x0'));var path=require('path');var _=require('lodash');var fs=require('fs');var json2xls=require(_0xda5d('0x1'));var BPromise=require(_0xda5d('0x2'));var zipdir=require(_0xda5d('0x3'));var rimraf=require(_0xda5d('0x4'));var db=require(_0xda5d('0x5'))['db'];var dbH=require('../../mysqldb')[_0xda5d('0x6')];var logger=require(_0xda5d('0x7'))(_0xda5d('0x8'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xda5d('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x91cf4e,_0x432097){var _0x402aa8={'status':_0x91cf4e};var _0x1c1e2d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x432097){_0x402aa8[_0xda5d('0xa')]=_0x432097;}return db[_0xda5d('0xb')][_0xda5d('0xc')](_0x402aa8,_0x1c1e2d);}function main(){var _0x547d8c=0x1388;var _0x59f160;logger[_0xda5d('0xd')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xda5d('0xe')));return db[_0xda5d('0xf')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xda5d('0x10'),_0xda5d('0x11')]})[_0xda5d('0x12')](function(_0x514648){if(_0x514648){_0x59f160=_0x514648;_0x547d8c=_0x59f160['splitSizeXlsx']||0x1388;}})[_0xda5d('0x12')](function(){return dbH[_0xda5d('0x13')][_0xda5d('0x14')](util[_0xda5d('0x15')](_0xda5d('0x16'),QUERY),{'type':dbH[_0xda5d('0x13')][_0xda5d('0x17')]['SELECT']});})['then'](function(_0x55127c){if(!_0x55127c[0x0]['num']){return analyticExtractedReport('Empty');}var _0x42be77=[];var _0x257973=0x0;if(_0x59f160[_0xda5d('0x10')]){if(_0x55127c&&_0x55127c[_0xda5d('0x18')]){var _0x38af9e=_[_0xda5d('0x19')](_0x55127c[0x0][_0xda5d('0x1a')]/_0x547d8c);var _0x3667da=Number[_0xda5d('0x1b')](_0x55127c[0x0]['num']/_0x547d8c)?_0x55127c[0x0][_0xda5d('0x1a')]%_0x547d8c:0x0;_0x38af9e[_0xda5d('0x1c')](function(_0x53261f){if(_0x53261f>0x0){_0x257973+=_0x547d8c;}_0x42be77[_0xda5d('0x1d')](dbH[_0xda5d('0x13')][_0xda5d('0x14')](util[_0xda5d('0x15')](_0xda5d('0x1e'),QUERY,_0x547d8c,_0x257973),{'type':dbH[_0xda5d('0x13')][_0xda5d('0x17')]['SELECT']}));});if(_0x3667da>0x0){_0x257973+=_0x547d8c;_0x42be77[_0xda5d('0x1d')](dbH['sequelize'][_0xda5d('0x14')](util[_0xda5d('0x15')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x3667da,_0x257973),{'type':dbH[_0xda5d('0x13')]['QueryTypes'][_0xda5d('0x1f')]}));}}}else{_0x42be77[_0xda5d('0x1d')](dbH[_0xda5d('0x13')][_0xda5d('0x14')](QUERY,{'type':dbH[_0xda5d('0x13')][_0xda5d('0x17')][_0xda5d('0x1f')]}));}var _0x40be9c=path[_0xda5d('0x20')](PATH);var _0x42d28d=path[_0xda5d('0x21')](PATH,_0xda5d('0x22'));var _0x2046e1=_0x59f160[_0xda5d('0x10')]&&_0x42be77[_0xda5d('0x18')]>0x1;var _0x24d988=[];if(!fs[_0xda5d('0x23')](path[_0xda5d('0x24')](_0x40be9c,_0x42d28d))&&_0x2046e1){fs[_0xda5d('0x25')](path[_0xda5d('0x24')](_0x40be9c,_0x42d28d));}return BPromise[_0xda5d('0x26')](_0x42be77,function(_0x58cfd2){_0x24d988[_0xda5d('0x1d')](_0x58cfd2);})[_0xda5d('0x12')](function(){for(var _0x435572=0x0;_0x435572<_0x24d988[_0xda5d('0x18')];_0x435572+=0x1){var _0x17a946;var _0x55a9da=_0x24d988[_0x435572];if(_0x2046e1){_0x17a946=path[_0xda5d('0x24')](_0x40be9c,_0x42d28d,util[_0xda5d('0x15')](_0xda5d('0x27'),_0x42d28d,_0x435572,_0xda5d('0x28')));}else{_0x17a946=path[_0xda5d('0x24')](_0x40be9c,util['format']('%s.%s',_0x42d28d,_0xda5d('0x28')));}fs[_0xda5d('0x29')](_0x17a946,json2xls(_0x55a9da),_0xda5d('0x2a'));}})['then'](function(){if(_0x2046e1){return new Promise(function(_0x49548e){zipdir(path['join'](_0x40be9c,_0x42d28d),{'saveTo':path[_0xda5d('0x24')](_0x40be9c,util[_0xda5d('0x15')](_0xda5d('0x2b'),_0x42d28d,_0xda5d('0x2c')))},function(_0xa2f81e,_0x4f16c8){rimraf(path[_0xda5d('0x24')](_0x40be9c,_0x42d28d),function(){});_0x49548e('zip\x20finished');});});}})[_0xda5d('0x12')](function(){logger[_0xda5d('0xd')](util[_0xda5d('0x15')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xda5d('0xe')));return analyticExtractedReport('Completed',_0x2046e1?util[_0xda5d('0x15')](_0xda5d('0x2b'),_0x42d28d,_0x2046e1?_0xda5d('0x2c'):_0xda5d('0x28')):null);});})[_0xda5d('0x2d')](function(_0x56756c){logger[_0xda5d('0xd')](util[_0xda5d('0x15')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xda5d('0xe')),util[_0xda5d('0x2e')](_0x56756c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xda5d('0x2f'));})[_0xda5d('0x30')](function(){process[_0xda5d('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xa264=['../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','split','splitSizeXlsx','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','query','basename','length','existsSync','join','mkdirSync','%s%d.%s','xlsx','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Failed','finally','exit','util','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xa264,0x148));var _0x4a26=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0xa264[_0x432fca];return _0x3adba4;};'use strict';var util=require(_0x4a26('0x0'));var path=require('path');var _=require(_0x4a26('0x1'));var fs=require('fs');var json2xls=require(_0x4a26('0x2'));var BPromise=require(_0x4a26('0x3'));var zipdir=require(_0x4a26('0x4'));var rimraf=require(_0x4a26('0x5'));var db=require(_0x4a26('0x6'))['db'];var dbH=require('../../mysqldb')[_0x4a26('0x7')];var logger=require(_0x4a26('0x8'))(_0x4a26('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x4a26('0xa')][0x2]);var QUERY=process[_0x4a26('0xa')][0x3];var PATH=process[_0x4a26('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2758c1,_0x5f3886){var _0x6c431b={'status':_0x2758c1};var _0x5202dd={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5f3886){_0x6c431b[_0x4a26('0xb')]=_0x5f3886;}return db[_0x4a26('0xc')]['update'](_0x6c431b,_0x5202dd);}function main(){var _0x4a3aa9=0x1388;var _0x1c2828;logger[_0x4a26('0xd')](util[_0x4a26('0xe')](_0x4a26('0xf'),EXTRACTED_REPORT_ID,'XLSX'));return db[_0x4a26('0x10')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4a26('0x11'),_0x4a26('0x12')]})['then'](function(_0x168bee){if(_0x168bee){_0x1c2828=_0x168bee;_0x4a3aa9=_0x1c2828[_0x4a26('0x12')]||0x1388;}})[_0x4a26('0x13')](function(){return dbH[_0x4a26('0x14')]['query'](util[_0x4a26('0xe')](_0x4a26('0x15'),QUERY),{'type':dbH['sequelize'][_0x4a26('0x16')][_0x4a26('0x17')]});})[_0x4a26('0x13')](function(_0x438eb0){if(!_0x438eb0[0x0]['num']){return analyticExtractedReport('Empty');}var _0x16a69a=[];var _0x1beba9=0x0;if(_0x1c2828[_0x4a26('0x11')]){if(_0x438eb0&&_0x438eb0['length']){var _0x5573c5=_['range'](_0x438eb0[0x0][_0x4a26('0x18')]/_0x4a3aa9);var _0x5c8b0f=Number[_0x4a26('0x19')](_0x438eb0[0x0]['num']/_0x4a3aa9)?_0x438eb0[0x0][_0x4a26('0x18')]%_0x4a3aa9:0x0;_0x5573c5[_0x4a26('0x1a')](function(_0xabc2f){if(_0xabc2f>0x0){_0x1beba9+=_0x4a3aa9;}_0x16a69a[_0x4a26('0x1b')](dbH['sequelize']['query'](util['format'](_0x4a26('0x1c'),QUERY,_0x4a3aa9,_0x1beba9),{'type':dbH[_0x4a26('0x14')][_0x4a26('0x16')][_0x4a26('0x17')]}));});if(_0x5c8b0f>0x0){_0x1beba9+=_0x4a3aa9;_0x16a69a[_0x4a26('0x1b')](dbH[_0x4a26('0x14')][_0x4a26('0x1d')](util[_0x4a26('0xe')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x5c8b0f,_0x1beba9),{'type':dbH[_0x4a26('0x14')][_0x4a26('0x16')][_0x4a26('0x17')]}));}}}else{_0x16a69a['push'](dbH[_0x4a26('0x14')][_0x4a26('0x1d')](QUERY,{'type':dbH['sequelize'][_0x4a26('0x16')][_0x4a26('0x17')]}));}var _0x346c89=path['dirname'](PATH);var _0x59a021=path[_0x4a26('0x1e')](PATH,'.xlsx');var _0x348e29=_0x1c2828[_0x4a26('0x11')]&&_0x16a69a[_0x4a26('0x1f')]>0x1;var _0x2e68ec=[];if(!fs[_0x4a26('0x20')](path[_0x4a26('0x21')](_0x346c89,_0x59a021))&&_0x348e29){fs[_0x4a26('0x22')](path['join'](_0x346c89,_0x59a021));}return BPromise['each'](_0x16a69a,function(_0x30874d){_0x2e68ec['push'](_0x30874d);})['then'](function(){for(var _0x470389=0x0;_0x470389<_0x2e68ec[_0x4a26('0x1f')];_0x470389+=0x1){var _0x45f9d4;var _0x207941=_0x2e68ec[_0x470389];if(_0x348e29){_0x45f9d4=path[_0x4a26('0x21')](_0x346c89,_0x59a021,util[_0x4a26('0xe')](_0x4a26('0x23'),_0x59a021,_0x470389,_0x4a26('0x24')));}else{_0x45f9d4=path['join'](_0x346c89,util[_0x4a26('0xe')](_0x4a26('0x25'),_0x59a021,_0x4a26('0x24')));}fs[_0x4a26('0x26')](_0x45f9d4,json2xls(_0x207941),'binary');}})[_0x4a26('0x13')](function(){if(_0x348e29){return new Promise(function(_0x5505ff){zipdir(path[_0x4a26('0x21')](_0x346c89,_0x59a021),{'saveTo':path['join'](_0x346c89,util[_0x4a26('0xe')](_0x4a26('0x25'),_0x59a021,_0x4a26('0x27')))},function(_0x59d914,_0x23fde4){rimraf(path[_0x4a26('0x21')](_0x346c89,_0x59a021),function(){});_0x5505ff(_0x4a26('0x28'));});});}})['then'](function(){logger[_0x4a26('0xd')](util[_0x4a26('0xe')](_0x4a26('0x29'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0x4a26('0x2a'),_0x348e29?util[_0x4a26('0xe')](_0x4a26('0x25'),_0x59a021,_0x348e29?_0x4a26('0x27'):_0x4a26('0x24')):null);});})['catch'](function(_0x40db11){logger['info'](util[_0x4a26('0xe')](_0x4a26('0x2b'),EXTRACTED_REPORT_ID,_0x4a26('0x2c')),util['inspect'](_0x40db11,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4a26('0x2d'));})[_0x4a26('0x2e')](function(){process[_0x4a26('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index d563589..f1ba5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b1=['splice',',${EXTEN},','concat','Hangup','destroy','bulkCreate','sortBy','catch','error','rewrite','lodash','models','Interval','then','intervals','VoiceExtension','findAll','IntervalId','uniq','map','filter','groupBy','exten','queue','hasOwnProperty','extensions','extension','type','Set','format','CDR(type)=%s','context','priority','VoiceExtensionId','push','CDR(destination)=','cutdigits','${EXTEN:','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1'];(function(_0x27e3f0,_0x702f5c){var _0x4741cf=function(_0x458085){while(--_0x458085){_0x27e3f0['push'](_0x27e3f0['shift']());}};_0x4741cf(++_0x702f5c);}(_0xf7b1,0x122));var _0x1f7b=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xf7b1[_0x55f8b4];return _0x2475f9;};'use strict';var _=require(_0x1f7b('0x0'));var util=require('util');function rewrite(_0x3f459f,_0x31362d){var _0x598093=this;return _0x3f459f[_0x1f7b('0x1')][_0x1f7b('0x2')]['findAll']({'raw':!![]})[_0x1f7b('0x3')](function(_0x857fe5){_0x598093[_0x1f7b('0x4')]=_0x857fe5;return _0x3f459f['models'][_0x1f7b('0x5')][_0x1f7b('0x6')]({'where':{'IntervalId':_0x31362d[_0x1f7b('0x7')]},'raw':!![]});})[_0x1f7b('0x3')](function(_0x190b61){return _0x3f459f['models'][_0x1f7b('0x5')][_0x1f7b('0x6')]({'where':{'exten':{'$in':_[_0x1f7b('0x8')](_[_0x1f7b('0x9')](_0x190b61,'exten'))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x1f7b('0x3')](function(_0x2cb888){var _0x2e3b53=_[_0x1f7b('0xa')](_0x2cb888,{'priority':'1'});var _0x398edc=_[_0x1f7b('0xa')](_0x2cb888,{'isApp':0x1});var _0x659c5b=_[_0x1f7b('0xb')](_0x398edc,_0x1f7b('0xc'));var _0x55e34c=[_0x1f7b('0xd'),'playback'];var _0x52e0db=[];var _0x23aa30=[];for(var _0x687d1a in _0x659c5b){if(_0x659c5b[_0x1f7b('0xe')](_0x687d1a)){_0x598093['priority']=0x2;_0x598093[_0x1f7b('0xf')]=[];_0x598093[_0x1f7b('0x10')]=_['find'](_0x2e3b53,{'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')]});_0x598093[_0x1f7b('0xf')]['push']({'type':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')],'app':_0x1f7b('0x12'),'appdata':util[_0x1f7b('0x13')](_0x1f7b('0x14'),_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')]),'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});if(_0x659c5b[_0x687d1a][0x0]['type']==='inbound'){_0x598093[_0x1f7b('0xf')]['push']({'type':_0x659c5b[_0x687d1a][0x0]['type'],'app':_0x1f7b('0x12'),'appdata':'CDR(routeid)='+_0x659c5b[_0x687d1a][0x0]['VoiceExtensionId'],'context':_0x659c5b[_0x687d1a][0x0]['context'],'exten':_0x659c5b[_0x687d1a][0x0]['exten'],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});}else if(_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')]==='outbound'){if(_0x598093[_0x1f7b('0x10')]){_0x598093['extensions'][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x19')+(_0x598093[_0x1f7b('0x10')][_0x1f7b('0x1a')]?_0x1f7b('0x1b')+_0x598093[_0x1f7b('0x10')][_0x1f7b('0x1a')]+'}':'${EXTEN}'),'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});}_0x598093[_0x1f7b('0xf')][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x1c')+_0x659c5b[_0x687d1a][0x0]['VoiceExtensionId'],'context':_0x659c5b[_0x687d1a][0x0]['context'],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093['priority']++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});var _0x6e2b65=_0x598093[_0x1f7b('0x16')]++;_0x598093[_0x1f7b('0xf')][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')],'app':_0x1f7b('0x1d'),'appdata':_0x1f7b('0x1e')+(_0x6e2b65+0x2)+'):Goto('+(_0x6e2b65+0x1)+')','context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0]['exten'],'priority':_0x6e2b65,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});if(_0x598093['extension']){_0x598093[_0x1f7b('0xf')][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0]['type'],'app':_0x1f7b('0x12'),'appdata':_0x598093['extension'][_0x1f7b('0x1a')]?_0x1f7b('0x1f')+_0x598093[_0x1f7b('0x10')][_0x1f7b('0x1a')]+'}':'CDR(prefix)=noprefix','context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});}_0x598093[_0x1f7b('0xf')][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0]['type'],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x20')+_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')],'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});if(_0x598093[_0x1f7b('0x10')]&&_0x598093['extension'][_0x1f7b('0xe')](_0x1f7b('0x21'))&&_0x598093[_0x1f7b('0x10')][_0x1f7b('0x21')]!==_0x1f7b('0x22')){_0x598093['extensions'][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x23'),'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093['priority']++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});_0x598093[_0x1f7b('0xf')][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x11')],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x24')+_0x598093[_0x1f7b('0x10')][_0x1f7b('0x21')]||_0x1f7b('0x25'),'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0]['exten'],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0]['VoiceExtensionId']});}}_0x598093['extensions'][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0]['type'],'app':_0x1f7b('0x12'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});_0x598093['extensions'][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0]['type'],'app':'Set','appdata':_0x1f7b('0x26'),'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093[_0x1f7b('0x16')]++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});_0x598093['extensions'][_0x1f7b('0x18')]({'type':_0x659c5b[_0x687d1a][0x0]['type'],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x27'),'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'priority':_0x598093['priority']++,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});for(var _0x4703c3=0x0,_0x5a2c08=0x0;_0x4703c3<_0x659c5b[_0x687d1a][_0x1f7b('0x28')];_0x4703c3+=0x1,_0x5a2c08=0x0){var _0x11c227=_0x659c5b[_0x687d1a][_0x4703c3];if(_0x11c227['type']){_0x11c227[_0x1f7b('0x11')]=_0x11c227[_0x1f7b('0x11')][_0x1f7b('0x29')]();}var _0x1ee9f8=[];var _0x17a835=[];delete _0x11c227['id'];delete _0x11c227[_0x1f7b('0x2a')];delete _0x11c227[_0x1f7b('0x2b')];var _0x2c085e=_0x11c227[_0x1f7b('0x2c')]!==_0x1f7b('0x2d')?[_0x11c227[_0x1f7b('0x2c')]]:_0x11c227['IntervalId']?_[_0x1f7b('0x9')](_[_0x1f7b('0xa')](_0x598093[_0x1f7b('0x4')],{'IntervalId':_0x11c227[_0x1f7b('0x7')]}),_0x1f7b('0x2c')):[];if(_0x11c227[_0x1f7b('0xe')](_0x1f7b('0x2e'))){if(_0x11c227[_0x1f7b('0x2e')]&&_0x11c227[_0x1f7b('0x2e')]!=='--'){_0x1ee9f8[_0x1f7b('0x18')]({'type':_0x11c227[_0x1f7b('0x11')],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x2f')+_0x11c227[_0x1f7b('0x2e')],'context':_0x11c227[_0x1f7b('0x15')],'exten':_0x11c227[_0x1f7b('0xc')],'priority':_0x2c085e[_0x1f7b('0x28')]+_0x598093[_0x1f7b('0x16')]+_0x5a2c08++,'VoiceExtensionId':_0x11c227['VoiceExtensionId']});}}if(_0x11c227[_0x1f7b('0x11')]===_0x1f7b('0x30')&&_0x11c227[_0x1f7b('0xe')]('callerID')){if(_0x11c227[_0x1f7b('0x31')]){_0x1ee9f8[_0x1f7b('0x18')]({'type':_0x11c227['type'],'app':_0x1f7b('0x1d'),'appdata':_0x1f7b('0x32')+_0x11c227[_0x1f7b('0x31')]+')','context':_0x11c227[_0x1f7b('0x15')],'exten':_0x11c227[_0x1f7b('0xc')],'priority':_0x2c085e[_0x1f7b('0x28')]+_0x598093['priority']+_0x5a2c08++,'VoiceExtensionId':_0x11c227['VoiceExtensionId']});}else{_0x1ee9f8['push']({'type':_0x11c227['type'],'app':_0x1f7b('0x1d'),'appdata':_0x1f7b('0x33'),'context':_0x11c227[_0x1f7b('0x15')],'exten':_0x11c227['exten'],'priority':_0x2c085e[_0x1f7b('0x28')]+_0x598093[_0x1f7b('0x16')]+_0x5a2c08++,'VoiceExtensionId':_0x11c227[_0x1f7b('0x17')]});}}if(_0x11c227[_0x1f7b('0xe')](_0x1f7b('0x34'))){if(_0x55e34c[_0x1f7b('0x35')](_0x11c227[_0x1f7b('0x36')][_0x1f7b('0x29')]())>=0x0&&_0x11c227[_0x1f7b('0x37')]!=='custom'){if(_0x11c227[_0x1f7b('0x34')]){_0x1ee9f8['push']({'type':_0x11c227[_0x1f7b('0x11')],'app':_0x1f7b('0x1d'),'appdata':_0x1f7b('0x38'),'context':_0x11c227[_0x1f7b('0x15')],'exten':_0x11c227['exten'],'priority':_0x2c085e[_0x1f7b('0x28')]+_0x598093[_0x1f7b('0x16')]+_0x5a2c08++,'VoiceExtensionId':_0x11c227[_0x1f7b('0x17')]});_0x1ee9f8[_0x1f7b('0x18')]({'type':_0x11c227['type'],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x39'),'context':_0x11c227['context'],'exten':_0x11c227['exten'],'priority':_0x2c085e[_0x1f7b('0x28')]+_0x598093[_0x1f7b('0x16')]+_0x5a2c08++,'VoiceExtensionId':_0x11c227[_0x1f7b('0x17')]});}else{_0x1ee9f8[_0x1f7b('0x18')]({'type':_0x11c227[_0x1f7b('0x11')],'app':_0x1f7b('0x1d'),'appdata':_0x1f7b('0x3a'),'context':_0x11c227[_0x1f7b('0x15')],'exten':_0x11c227['exten'],'priority':_0x2c085e[_0x1f7b('0x28')]+_0x598093[_0x1f7b('0x16')]+_0x5a2c08++,'VoiceExtensionId':_0x11c227[_0x1f7b('0x17')]});_0x1ee9f8[_0x1f7b('0x18')]({'type':_0x11c227[_0x1f7b('0x11')],'app':_0x1f7b('0x12'),'appdata':_0x1f7b('0x3b'),'context':_0x11c227['context'],'exten':_0x11c227[_0x1f7b('0xc')],'priority':_0x2c085e[_0x1f7b('0x28')]+_0x598093[_0x1f7b('0x16')]+_0x5a2c08++,'VoiceExtensionId':_0x11c227[_0x1f7b('0x17')]});}}}for(var _0x4dbd40=0x0;_0x4dbd40<_0x2c085e['length'];_0x4dbd40+=0x1){var _0x2540a3=_0x598093['priority']+_0x2c085e[_0x1f7b('0x28')];var _0x3cc101=_0x4dbd40===_0x2c085e[_0x1f7b('0x28')]-0x1?_0x598093[_0x1f7b('0x16')]+_0x1ee9f8['length']+_0x17a835[_0x1f7b('0x28')]+0x2:_0x598093[_0x1f7b('0x16')]+_0x4dbd40+0x1;_0x1ee9f8[_0x1f7b('0x3c')](_0x4dbd40,0x0,{'type':_0x11c227[_0x1f7b('0x11')],'app':'GotoIfTime','appdata':_0x2c085e[_0x4dbd40]+'?'+_0x11c227[_0x1f7b('0x15')]+_0x1f7b('0x3d')+_0x2540a3+':'+_0x11c227[_0x1f7b('0x15')]+_0x1f7b('0x3d')+_0x3cc101,'exten':_0x11c227[_0x1f7b('0xc')],'context':_0x11c227[_0x1f7b('0x15')],'priority':_0x598093[_0x1f7b('0x16')]+_0x4dbd40,'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});}_0x11c227[_0x1f7b('0x16')]=_0x1ee9f8[_0x1f7b('0x28')]?_['last'](_0x1ee9f8)[_0x1f7b('0x16')]+0x1:_0x598093['priority'];_0x598093[_0x1f7b('0x16')]=(_0x17a835[_0x1f7b('0x28')]?_['last'](_0x17a835)[_0x1f7b('0x16')]:_0x11c227[_0x1f7b('0x16')])+0x1;_0x598093[_0x1f7b('0xf')]=_[_0x1f7b('0x3e')](_0x598093[_0x1f7b('0xf')],_0x1ee9f8,[_0x11c227],_0x17a835);}_0x598093[_0x1f7b('0xf')]['push']({'type':_0x659c5b[_0x687d1a][0x0]['type'],'app':_0x1f7b('0x3f'),'exten':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0xc')],'context':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x15')],'priority':_0x598093[_0x1f7b('0x16')],'VoiceExtensionId':_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]});_0x52e0db['push'](_0x659c5b[_0x687d1a][0x0][_0x1f7b('0x17')]);_0x23aa30=_['concat'](_0x23aa30,_0x598093[_0x1f7b('0xf')]);}}return _0x3f459f['transaction'](function(_0xf85d09){return _0x3f459f[_0x1f7b('0x1')]['VoiceExtension'][_0x1f7b('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x52e0db}},'transaction':_0xf85d09})[_0x1f7b('0x3')](function(_0x2c1c16){return _0x3f459f[_0x1f7b('0x1')][_0x1f7b('0x5')][_0x1f7b('0x41')](_[_0x1f7b('0x42')](_0x23aa30,_0x1f7b('0x16')),{'transaction':_0xf85d09});});});})[_0x1f7b('0x43')](function(_0x242550){console[_0x1f7b('0x44')](_0x242550);});}exports[_0x1f7b('0x45')]=rewrite;
\ No newline at end of file
+var _0x7998=['exten','queue','playback','hasOwnProperty','priority','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','cutdigits','${EXTEN}','ExecIf','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','toLowerCase','createdAt','updatedAt','interval','tag','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','bulkCreate','sortBy','catch','error','rewrite','lodash','util','models','Interval','then','intervals','VoiceExtension','findAll','IntervalId','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','filter'];(function(_0x10691e,_0xe5265){var _0x30ce27=function(_0x53b8d3){while(--_0x53b8d3){_0x10691e['push'](_0x10691e['shift']());}};_0x30ce27(++_0xe5265);}(_0x7998,0x15b));var _0x8799=function(_0x361b8c,_0x1caf39){_0x361b8c=_0x361b8c-0x0;var _0x3faa41=_0x7998[_0x361b8c];return _0x3faa41;};'use strict';var _=require(_0x8799('0x0'));var util=require(_0x8799('0x1'));function rewrite(_0x4a3094,_0x1d65c2){var _0x9b0687=this;return _0x4a3094[_0x8799('0x2')][_0x8799('0x3')]['findAll']({'raw':!![]})[_0x8799('0x4')](function(_0x18372b){_0x9b0687[_0x8799('0x5')]=_0x18372b;return _0x4a3094[_0x8799('0x2')][_0x8799('0x6')][_0x8799('0x7')]({'where':{'IntervalId':_0x1d65c2[_0x8799('0x8')]},'raw':!![]});})[_0x8799('0x4')](function(_0x57aefc){return _0x4a3094[_0x8799('0x2')]['VoiceExtension']['findAll']({'where':{'exten':{'$in':_[_0x8799('0x9')](_[_0x8799('0xa')](_0x57aefc,'exten'))}},'order':[{'raw':_0x8799('0xb')}],'raw':!![]});})[_0x8799('0x4')](function(_0x59f7a7){var _0x4e33a1=_['filter'](_0x59f7a7,{'priority':'1'});var _0x1147be=_[_0x8799('0xc')](_0x59f7a7,{'isApp':0x1});var _0x4a5131=_['groupBy'](_0x1147be,_0x8799('0xd'));var _0x2364c8=[_0x8799('0xe'),_0x8799('0xf')];var _0x5ebf93=[];var _0x3fbfb2=[];for(var _0x76e468 in _0x4a5131){if(_0x4a5131[_0x8799('0x10')](_0x76e468)){_0x9b0687[_0x8799('0x11')]=0x2;_0x9b0687[_0x8799('0x12')]=[];_0x9b0687[_0x8799('0x13')]=_[_0x8799('0x14')](_0x4e33a1,{'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')]});_0x9b0687[_0x8799('0x12')][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':util[_0x8799('0x18')](_0x8799('0x19'),_0x4a5131[_0x76e468][0x0]['type']),'context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x9b0687[_0x8799('0x11')]++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});if(_0x4a5131[_0x76e468][0x0][_0x8799('0x16')]===_0x8799('0x1c')){_0x9b0687[_0x8799('0x12')]['push']({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':_0x8799('0x1d')+_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')],'context':_0x4a5131[_0x76e468][0x0]['context'],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x9b0687[_0x8799('0x11')]++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0]['VoiceExtensionId']});}else if(_0x4a5131[_0x76e468][0x0][_0x8799('0x16')]===_0x8799('0x1e')){if(_0x9b0687[_0x8799('0x13')]){_0x9b0687[_0x8799('0x12')]['push']({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':'CDR(destination)='+(_0x9b0687[_0x8799('0x13')][_0x8799('0x1f')]?'${EXTEN:'+_0x9b0687['extension']['cutdigits']+'}':_0x8799('0x20')),'context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x9b0687['priority']++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});}_0x9b0687[_0x8799('0x12')][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':_0x8799('0x1d')+_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')],'context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x9b0687['priority']++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0]['VoiceExtensionId']});var _0x1628b7=_0x9b0687[_0x8799('0x11')]++;_0x9b0687[_0x8799('0x12')][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0]['type'],'app':_0x8799('0x21'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x1628b7+0x2)+'):Goto('+(_0x1628b7+0x1)+')','context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x1628b7,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});if(_0x9b0687[_0x8799('0x13')]){_0x9b0687['extensions'][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':_0x9b0687[_0x8799('0x13')]['cutdigits']?_0x8799('0x22')+_0x9b0687['extension']['cutdigits']+'}':_0x8799('0x23'),'context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0]['exten'],'priority':_0x9b0687[_0x8799('0x11')]++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0]['VoiceExtensionId']});}_0x9b0687[_0x8799('0x12')][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':'Set','appdata':_0x8799('0x24')+_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')],'context':_0x4a5131[_0x76e468][0x0]['context'],'exten':_0x4a5131[_0x76e468][0x0]['exten'],'priority':_0x9b0687['priority']++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});if(_0x9b0687[_0x8799('0x13')]&&_0x9b0687['extension'][_0x8799('0x10')](_0x8799('0x25'))&&_0x9b0687[_0x8799('0x13')]['recordingFormat']!==_0x8799('0x26')){_0x9b0687['extensions'][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0]['type'],'app':_0x8799('0x17'),'appdata':_0x8799('0x27'),'context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x9b0687[_0x8799('0x11')]++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0]['VoiceExtensionId']});_0x9b0687[_0x8799('0x12')]['push']({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':_0x8799('0x28')+_0x9b0687[_0x8799('0x13')]['recordingFormat']||_0x8799('0x29'),'context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0]['exten'],'priority':_0x9b0687['priority']++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0]['VoiceExtensionId']});}}_0x9b0687[_0x8799('0x12')][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0][_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':_0x8799('0x2a'),'context':_0x4a5131[_0x76e468][0x0]['context'],'exten':_0x4a5131[_0x76e468][0x0]['exten'],'priority':_0x9b0687[_0x8799('0x11')]++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});_0x9b0687[_0x8799('0x12')][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0]['type'],'app':'Set','appdata':_0x8799('0x2b'),'context':_0x4a5131[_0x76e468][0x0]['context'],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x9b0687['priority']++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});_0x9b0687['extensions'][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0]['type'],'app':_0x8799('0x17'),'appdata':_0x8799('0x2c'),'context':_0x4a5131[_0x76e468][0x0][_0x8799('0x1a')],'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'priority':_0x9b0687['priority']++,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});for(var _0x47a6ed=0x0,_0x3e92a4=0x0;_0x47a6ed<_0x4a5131[_0x76e468]['length'];_0x47a6ed+=0x1,_0x3e92a4=0x0){var _0x2a2181=_0x4a5131[_0x76e468][_0x47a6ed];if(_0x2a2181[_0x8799('0x16')]){_0x2a2181[_0x8799('0x16')]=_0x2a2181['type'][_0x8799('0x2d')]();}var _0x4f9c87=[];var _0xae1078=[];delete _0x2a2181['id'];delete _0x2a2181[_0x8799('0x2e')];delete _0x2a2181[_0x8799('0x2f')];var _0x61dea=_0x2a2181[_0x8799('0x30')]!=='*,*,*,*'?[_0x2a2181[_0x8799('0x30')]]:_0x2a2181[_0x8799('0x8')]?_[_0x8799('0xa')](_[_0x8799('0xc')](_0x9b0687[_0x8799('0x5')],{'IntervalId':_0x2a2181['IntervalId']}),_0x8799('0x30')):[];if(_0x2a2181[_0x8799('0x10')]('tag')){if(_0x2a2181[_0x8799('0x31')]&&_0x2a2181[_0x8799('0x31')]!=='--'){_0x4f9c87[_0x8799('0x15')]({'type':_0x2a2181[_0x8799('0x16')],'app':'Set','appdata':'CDR(tag)='+_0x2a2181[_0x8799('0x31')],'context':_0x2a2181['context'],'exten':_0x2a2181['exten'],'priority':_0x61dea[_0x8799('0x32')]+_0x9b0687[_0x8799('0x11')]+_0x3e92a4++,'VoiceExtensionId':_0x2a2181['VoiceExtensionId']});}}if(_0x2a2181[_0x8799('0x16')]===_0x8799('0x1e')&&_0x2a2181['hasOwnProperty'](_0x8799('0x33'))){if(_0x2a2181['callerID']){_0x4f9c87[_0x8799('0x15')]({'type':_0x2a2181['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x2a2181[_0x8799('0x33')]+')','context':_0x2a2181[_0x8799('0x1a')],'exten':_0x2a2181[_0x8799('0xd')],'priority':_0x61dea[_0x8799('0x32')]+_0x9b0687[_0x8799('0x11')]+_0x3e92a4++,'VoiceExtensionId':_0x2a2181['VoiceExtensionId']});}else{_0x4f9c87[_0x8799('0x15')]({'type':_0x2a2181[_0x8799('0x16')],'app':'ExecIf','appdata':_0x8799('0x34'),'context':_0x2a2181['context'],'exten':_0x2a2181[_0x8799('0xd')],'priority':_0x61dea[_0x8799('0x32')]+_0x9b0687[_0x8799('0x11')]+_0x3e92a4++,'VoiceExtensionId':_0x2a2181[_0x8799('0x1b')]});}}if(_0x2a2181[_0x8799('0x10')](_0x8799('0x35'))){if(_0x2364c8[_0x8799('0x36')](_0x2a2181[_0x8799('0x37')][_0x8799('0x2d')]())>=0x0&&_0x2a2181['appType']!==_0x8799('0x38')){if(_0x2a2181[_0x8799('0x35')]){_0x4f9c87[_0x8799('0x15')]({'type':_0x2a2181['type'],'app':_0x8799('0x21'),'appdata':_0x8799('0x39'),'context':_0x2a2181[_0x8799('0x1a')],'exten':_0x2a2181[_0x8799('0xd')],'priority':_0x61dea[_0x8799('0x32')]+_0x9b0687[_0x8799('0x11')]+_0x3e92a4++,'VoiceExtensionId':_0x2a2181[_0x8799('0x1b')]});_0x4f9c87[_0x8799('0x15')]({'type':_0x2a2181[_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':_0x8799('0x3a'),'context':_0x2a2181[_0x8799('0x1a')],'exten':_0x2a2181[_0x8799('0xd')],'priority':_0x61dea[_0x8799('0x32')]+_0x9b0687[_0x8799('0x11')]+_0x3e92a4++,'VoiceExtensionId':_0x2a2181[_0x8799('0x1b')]});}else{_0x4f9c87['push']({'type':_0x2a2181[_0x8799('0x16')],'app':_0x8799('0x21'),'appdata':_0x8799('0x3b'),'context':_0x2a2181['context'],'exten':_0x2a2181[_0x8799('0xd')],'priority':_0x61dea['length']+_0x9b0687[_0x8799('0x11')]+_0x3e92a4++,'VoiceExtensionId':_0x2a2181[_0x8799('0x1b')]});_0x4f9c87[_0x8799('0x15')]({'type':_0x2a2181[_0x8799('0x16')],'app':_0x8799('0x17'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x2a2181[_0x8799('0x1a')],'exten':_0x2a2181['exten'],'priority':_0x61dea[_0x8799('0x32')]+_0x9b0687[_0x8799('0x11')]+_0x3e92a4++,'VoiceExtensionId':_0x2a2181[_0x8799('0x1b')]});}}}for(var _0x2da1af=0x0;_0x2da1af<_0x61dea[_0x8799('0x32')];_0x2da1af+=0x1){var _0x4e2842=_0x9b0687[_0x8799('0x11')]+_0x61dea['length'];var _0x1c37d9=_0x2da1af===_0x61dea[_0x8799('0x32')]-0x1?_0x9b0687['priority']+_0x4f9c87['length']+_0xae1078['length']+0x2:_0x9b0687[_0x8799('0x11')]+_0x2da1af+0x1;_0x4f9c87[_0x8799('0x3c')](_0x2da1af,0x0,{'type':_0x2a2181['type'],'app':_0x8799('0x3d'),'appdata':_0x61dea[_0x2da1af]+'?'+_0x2a2181[_0x8799('0x1a')]+',${EXTEN},'+_0x4e2842+':'+_0x2a2181['context']+_0x8799('0x3e')+_0x1c37d9,'exten':_0x2a2181[_0x8799('0xd')],'context':_0x2a2181[_0x8799('0x1a')],'priority':_0x9b0687[_0x8799('0x11')]+_0x2da1af,'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});}_0x2a2181[_0x8799('0x11')]=_0x4f9c87['length']?_[_0x8799('0x3f')](_0x4f9c87)[_0x8799('0x11')]+0x1:_0x9b0687[_0x8799('0x11')];_0x9b0687[_0x8799('0x11')]=(_0xae1078['length']?_[_0x8799('0x3f')](_0xae1078)[_0x8799('0x11')]:_0x2a2181[_0x8799('0x11')])+0x1;_0x9b0687[_0x8799('0x12')]=_[_0x8799('0x40')](_0x9b0687[_0x8799('0x12')],_0x4f9c87,[_0x2a2181],_0xae1078);}_0x9b0687[_0x8799('0x12')][_0x8799('0x15')]({'type':_0x4a5131[_0x76e468][0x0]['type'],'app':_0x8799('0x41'),'exten':_0x4a5131[_0x76e468][0x0][_0x8799('0xd')],'context':_0x4a5131[_0x76e468][0x0]['context'],'priority':_0x9b0687[_0x8799('0x11')],'VoiceExtensionId':_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]});_0x5ebf93[_0x8799('0x15')](_0x4a5131[_0x76e468][0x0][_0x8799('0x1b')]);_0x3fbfb2=_[_0x8799('0x40')](_0x3fbfb2,_0x9b0687[_0x8799('0x12')]);}}return _0x4a3094[_0x8799('0x42')](function(_0x19c1ac){return _0x4a3094['models'][_0x8799('0x6')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x5ebf93}},'transaction':_0x19c1ac})[_0x8799('0x4')](function(_0x452e95){return _0x4a3094[_0x8799('0x2')][_0x8799('0x6')][_0x8799('0x43')](_[_0x8799('0x44')](_0x3fbfb2,_0x8799('0x11')),{'transaction':_0x19c1ac});});});})[_0x8799('0x45')](function(_0x58bffa){console[_0x8799('0x46')](_0x58bffa);});}exports[_0x8799('0x47')]=rewrite;
\ No newline at end of file
index 52501c0..9819c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabb2=['all','VoiceQueue','BlackLists','get','CampaignId','Campaign','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','ioredis','../../../mysqldb','../../../config/environment','api','redis','defaults','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','length','find','create','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','cm_hopper','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','fromQuery','str','calleridnum','phone\x20NOT\x20IN\x20(?)','deletedAt\x20IS\x20NULL','id\x20IN\x20?','cm_hopper_black','findAll','outbound','dialCheckDuplicateType','CmList','Lists','always','sequelize','VoiceQueueId','onlyIfOpen','query'];(function(_0xcf3a4a,_0x1cc820){var _0x2bfcbb=function(_0x4fe8c5){while(--_0x4fe8c5){_0xcf3a4a['push'](_0xcf3a4a['shift']());}};_0x2bfcbb(++_0x1cc820);}(_0xabb2,0x1c4));var _0x2abb=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xabb2[_0x1c546c];return _0x2cc384;};'use strict';var BPromise=require(_0x2abb('0x0'));var util=require(_0x2abb('0x1'));var _=require(_0x2abb('0x2'));var fs=require('fs');var squel=require(_0x2abb('0x3'));var Papa=require('papaparse');var Redis=require(_0x2abb('0x4'));var db=require(_0x2abb('0x5'))['db'];var config=require(_0x2abb('0x6'));var logger=require('../../../config/logger')(_0x2abb('0x7'));config[_0x2abb('0x8')]=_[_0x2abb('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')[_0x2abb('0xa')](socket);try{if(!process[_0x2abb('0xb')][0x2]||process[_0x2abb('0xb')][0x2]===_0x2abb('0xc')||process[_0x2abb('0xb')][0x2]===_0x2abb('0xd')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process['argv'][0x2];if(!process[_0x2abb('0xb')][0x3]||process[_0x2abb('0xb')][0x3]===_0x2abb('0xc')||process[_0x2abb('0xb')][0x3]===_0x2abb('0xd')||!process['argv'][0x4]||process[_0x2abb('0xb')][0x4]===_0x2abb('0xc')||process['argv'][0x4]==='null'){throw new Error(_0x2abb('0xe'));}var FIELDS=_[_0x2abb('0xf')](process['argv'][0x3][_0x2abb('0x10')](','),process[_0x2abb('0xb')][0x4][_0x2abb('0x10')](','));if(!process[_0x2abb('0xb')][0x5]||process['argv'][0x5]==='undefined'||process[_0x2abb('0xb')][0x5]==='null'){throw new Error(_0x2abb('0x11'));}var LISTID=process[_0x2abb('0xb')][0x5];var COMPANYID=process[_0x2abb('0xb')][0x6]&&process[_0x2abb('0xb')][0x6]!==_0x2abb('0xc')&&process[_0x2abb('0xb')][0x6]!==_0x2abb('0xd')?process[_0x2abb('0xb')][0x6]:null;var DUPLICATES=process[_0x2abb('0xb')][0x7]&&process[_0x2abb('0xb')][0x7]!==_0x2abb('0xc')&&process['argv'][0x7]!==_0x2abb('0xd')?process[_0x2abb('0xb')][0x7]:null;if(!process[_0x2abb('0xb')][0x8]||process['argv'][0x8]===_0x2abb('0xc')||process[_0x2abb('0xb')][0x8]===_0x2abb('0xd')){throw new Error(_0x2abb('0x12'));}var SOCKET_TIMESTAMP=process[_0x2abb('0xb')][0x8];}catch(_0x47de72){logger[_0x2abb('0x13')](_0x47de72);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(_0x2f153d,_0x36cc9e,_0x53e453,_0x36db51){var _0x290458={'message':_0x36cc9e};_0x290458[_0x2f153d]=!![];if(_0x53e453){_0x290458['contact']=_0x53e453;}if(_0x36db51){_0x290458['index']=_0x36db51;}return _0x290458;}function isEmail(_0x421de7){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))*$/[_0x2abb('0x14')](_0x421de7);}function checkRow(_0x4713f9,_0x36d979,_0x3f7f75){return new BPromise(function(_0x2089bd,_0x4ed11a){if(_[_0x2abb('0x15')](_0x4713f9)){return _0x4ed11a(handleCheckRowError('error',_0x2abb('0x16'),null,_0x3f7f75));}if(_0x4713f9[_0x2abb('0x17')]&&_0x4713f9['errors']['length']){var _0x466dea=_[_0x2abb('0x18')](_0x4713f9['errors'],_0x2abb('0x19'))['join'](';');return _0x4ed11a(handleCheckRowError(_0x2abb('0x13'),_0x466dea,null,_0x3f7f75));}var _0x41df6c={};for(var _0x43e52d in FIELDS){if(FIELDS[_0x2abb('0x1a')](_0x43e52d)&&FIELDS[_0x43e52d]){_0x41df6c[_0x43e52d]=_0x4713f9['data'][0x0][FIELDS[_0x43e52d]]||_0x4713f9[_0x2abb('0x1b')][0x0]['\ufeff'+FIELDS[_0x43e52d]];}}if(!_0x41df6c['firstName']){return _0x4ed11a(handleCheckRowError('error',_0x2abb('0x1c'),null,_0x3f7f75));}if(!_0x41df6c[_0x2abb('0x1d')]){return _0x4ed11a(handleCheckRowError(_0x2abb('0x13'),_0x2abb('0x1e'),null,_0x3f7f75));}if(_0x41df6c[_0x2abb('0x1f')]){var _0x4b261a=moment(_0x41df6c['birthDate'],_0x2abb('0x20'));if(!_0x4b261a[_0x2abb('0x21')]()){return _0x4ed11a(handleCheckRowError(_0x2abb('0x13'),_0x2abb('0x22'),null,_0x3f7f75));}}if(_0x41df6c[_0x2abb('0x23')]){if(!isEmail(_0x41df6c[_0x2abb('0x23')])){return _0x4ed11a(handleCheckRowError(_0x2abb('0x13'),'email\x20format\x20is\x20not\x20valid!',null,_0x3f7f75));}}_0x41df6c[_0x2abb('0x24')]=LISTID;_0x41df6c['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x2abb('0x25')]&&_0x36d979){var _0x5dd873={};for(var _0x6f5e2d=0x0,_0x16c62d=DUPLICATES['length'];_0x6f5e2d<_0x16c62d;_0x6f5e2d+=0x1){_0x5dd873[DUPLICATES[_0x6f5e2d]]=_0x41df6c[DUPLICATES[_0x6f5e2d]];}var _0x15c29d=_[_0x2abb('0x26')](_0x36d979,_0x5dd873);if(_0x15c29d){return _0x4ed11a(handleCheckRowError('duplicate','Duplicate\x20Contact',_0x15c29d,_0x3f7f75));}}return db['CmContact'][_0x2abb('0x27')](_0x41df6c,{'raw':!![],'hooks':![],'fields':_['keys'](_0x41df6c)})[_0x2abb('0x28')](function(_0x4626a8){if(DUPLICATES&&DUPLICATES[_0x2abb('0x25')]&&_0x36d979){_0x36d979[_0x2abb('0x29')](_[_0x2abb('0x2a')](_0x41df6c,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x4626a8['id'];return _0x2089bd();})[_0x2abb('0x2b')](function(_0x374568){return _0x4ed11a(handleCheckRowError('error',_0x2abb('0x2c')+(_0x374568[_0x2abb('0x19')]||JSON[_0x2abb('0x2d')](_0x374568)),null,_0x3f7f75));});});}function checkHopper(){function _0x20b555(){return function(_0xac38e9){logger[_0x2abb('0x13')](_0x2abb('0x2e'),_0x2abb('0x2f'),util[_0x2abb('0x30')](_0xac38e9,{'showHidden':![],'depth':null}));};}var _0x49293b=function(_0x3239a6,_0x40fd7f){var _0x1fa2b0=squel[_0x2abb('0x31')]()[_0x2abb('0x32')](_0x2abb('0x33'))['fromQuery'](['phone',_0x2abb('0x34'),_0x2abb('0x35'),'ListId',_0x40fd7f,_0x2abb('0x36'),_0x2abb('0x37')],squel[_0x2abb('0x38')]()['field'](_0x2abb('0x1d'),_0x2abb('0x1d'))[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x34'))[_0x2abb('0x39')]('id',_0x2abb('0x35'))[_0x2abb('0x39')](LISTID['toString'](),_0x2abb('0x24'))[_0x2abb('0x39')](_0x3239a6['id'][_0x2abb('0x3b')](),_0x40fd7f)[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x36'))[_0x2abb('0x39')]('NOW()',_0x2abb('0x37'))[_0x2abb('0x3c')](_0x2abb('0x3d'))[_0x2abb('0x3e')]('deletedAt\x20IS\x20NULL')[_0x2abb('0x3e')](_0x2abb('0x3f'),LISTID[_0x2abb('0x3b')]())['where'](_0x2abb('0x40'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x2abb('0x38')]()['field']('phone')['from'](_0x2abb('0x33'))[_0x2abb('0x3e')](_0x40fd7f+_0x2abb('0x41'),_0x3239a6['id'][_0x2abb('0x3b')]())))[_0x2abb('0x3b')]();return _0x1fa2b0;};var _0x1fb0e0=function(_0x40846b,_0x45b7a4){var _0xb29328=squel['insert']()[_0x2abb('0x32')](_0x2abb('0x33'))[_0x2abb('0x42')]([_0x2abb('0x1d'),_0x2abb('0x34'),_0x2abb('0x35'),_0x2abb('0x24'),_0x45b7a4,_0x2abb('0x36'),_0x2abb('0x37')],squel['select']()[_0x2abb('0x39')](_0x2abb('0x1d'),'phone')[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x34'))[_0x2abb('0x39')]('id','ContactId')[_0x2abb('0x39')](LISTID[_0x2abb('0x3b')](),'ListId')[_0x2abb('0x39')](_0x40846b['id'][_0x2abb('0x3b')](),_0x45b7a4)[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x36'))[_0x2abb('0x39')](_0x2abb('0x3a'),'updatedAt')['from'](_0x2abb('0x3d'))[_0x2abb('0x3e')]('deletedAt\x20IS\x20NULL')[_0x2abb('0x3e')](_0x2abb('0x3f'),LISTID['toString']())['where']('id\x20IN\x20?',squel[_0x2abb('0x43')](hopperContacts))['where'](_0x2abb('0x40'))[_0x2abb('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel[_0x2abb('0x38')]()['field'](_0x2abb('0x44'))[_0x2abb('0x3c')]('cm_hopper_final')['where'](_0x45b7a4+_0x2abb('0x41'),_0x40846b['id']['toString']()))[_0x2abb('0x3e')](_0x2abb('0x45'),squel[_0x2abb('0x38')]()['field'](_0x2abb('0x1d'))[_0x2abb('0x3c')](_0x2abb('0x33'))[_0x2abb('0x3e')](_0x45b7a4+_0x2abb('0x41'),_0x40846b['id'][_0x2abb('0x3b')]())))[_0x2abb('0x3b')]();return _0xb29328;};function _0x335110(_0x44a074,_0x58190b){var _0x287760=squel[_0x2abb('0x31')]()[_0x2abb('0x32')](_0x2abb('0x33'))[_0x2abb('0x42')](['phone','scheduledAt','ContactId',_0x2abb('0x24'),_0x58190b,'createdAt',_0x2abb('0x37')],squel['select']()[_0x2abb('0x39')](_0x2abb('0x1d'),_0x2abb('0x1d'))[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x34'))[_0x2abb('0x39')]('id',_0x2abb('0x35'))['field'](LISTID['toString'](),'ListId')[_0x2abb('0x39')](_0x44a074['id'][_0x2abb('0x3b')](),_0x58190b)[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x36'))[_0x2abb('0x39')](_0x2abb('0x3a'),'updatedAt')[_0x2abb('0x3c')](_0x2abb('0x3d'))[_0x2abb('0x3e')](_0x2abb('0x46'))['where'](_0x2abb('0x3f'),LISTID[_0x2abb('0x3b')]())[_0x2abb('0x3e')](_0x2abb('0x47'),squel[_0x2abb('0x43')](hopperContacts))[_0x2abb('0x3e')](_0x2abb('0x40')))[_0x2abb('0x3b')]();return _0x287760;}function _0x27233e(_0x198c5d,_0x182aa5){var _0x1a49c1=squel[_0x2abb('0x31')]()[_0x2abb('0x32')](_0x2abb('0x48'))[_0x2abb('0x42')](['phone',_0x2abb('0x35'),'ListId',_0x182aa5,_0x2abb('0x36'),_0x2abb('0x37')],squel[_0x2abb('0x38')]()[_0x2abb('0x39')](_0x2abb('0x1d'),_0x2abb('0x1d'))['field']('id','ContactId')['field'](LISTID[_0x2abb('0x3b')](),_0x2abb('0x24'))[_0x2abb('0x39')](_0x198c5d['id'][_0x2abb('0x3b')](),_0x182aa5)[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x36'))[_0x2abb('0x39')](_0x2abb('0x3a'),_0x2abb('0x37'))[_0x2abb('0x3c')](_0x2abb('0x3d'))[_0x2abb('0x3e')](_0x2abb('0x46'))[_0x2abb('0x3e')]('ListId\x20=\x20?',LISTID[_0x2abb('0x3b')]())[_0x2abb('0x3e')](_0x2abb('0x47'),squel[_0x2abb('0x43')](hopperContacts))[_0x2abb('0x3e')](_0x2abb('0x40')))[_0x2abb('0x3b')]();return _0x1a49c1;}return db['VoiceQueue'][_0x2abb('0x49')]({'where':{'type':_0x2abb('0x4a')},'attributes':['id',_0x2abb('0x4b')],'include':[{'model':db[_0x2abb('0x4c')],'as':_0x2abb('0x4d'),'where':{'id':LISTID}}]})[_0x2abb('0x28')](function(_0xee11d7){var _0x176149=[];if(_0xee11d7){var _0x1819e0;for(var _0x3fbd52=0x0,_0x296f65;_0x3fbd52<_0xee11d7[_0x2abb('0x25')];_0x3fbd52+=0x1){_0x296f65=_0xee11d7[_0x3fbd52]['get']({'plain':!![]});switch(_0x296f65[_0x2abb('0x4b')]){case _0x2abb('0x4e'):_0x176149[_0x2abb('0x29')](db[_0x2abb('0x4f')]['query'](_0x1fb0e0(_0x296f65,_0x2abb('0x50')))[_0x2abb('0x28')](function(){})[_0x2abb('0x2b')](_0x20b555()));break;case _0x2abb('0x51'):_0x176149[_0x2abb('0x29')](db[_0x2abb('0x4f')][_0x2abb('0x52')](_0x49293b(_0x296f65,'VoiceQueueId'))['then'](function(){})[_0x2abb('0x2b')](_0x20b555()));break;default:_0x176149[_0x2abb('0x29')](db[_0x2abb('0x4f')]['query'](_0x335110(_0x296f65,_0x2abb('0x50')))[_0x2abb('0x28')](function(){})[_0x2abb('0x2b')](_0x20b555()));}}}return _0x176149;})[_0x2abb('0x53')]()['then'](function(){return db[_0x2abb('0x54')][_0x2abb('0x49')]({'where':{'type':_0x2abb('0x4a')},'attributes':['id'],'include':[{'model':db[_0x2abb('0x4c')],'as':_0x2abb('0x55'),'where':{'id':LISTID}}]})[_0x2abb('0x28')](function(_0x386a61){var _0x3b5329=[];if(_0x386a61){var _0xadc976;for(var _0x3e3943=0x0,_0x34ab42;_0x3e3943<_0x386a61[_0x2abb('0x25')];_0x3e3943+=0x1){_0x34ab42=_0x386a61[_0x3e3943]['get']({'plain':!![]});_0x3b5329[_0x2abb('0x29')](db[_0x2abb('0x4f')]['query'](_0x27233e(_0x34ab42,_0x2abb('0x50')))[_0x2abb('0x28')](function(){})['catch'](_0x20b555()));}}return _0x3b5329;})[_0x2abb('0x53')]();})['then'](function(){return db['Campaign'][_0x2abb('0x49')]({'attributes':['id',_0x2abb('0x4b')],'include':[{'model':db[_0x2abb('0x4c')],'as':'Lists','where':{'id':LISTID}}]})[_0x2abb('0x28')](function(_0x2dc08c){var _0x1e5bd9=[];if(_0x2dc08c){for(var _0x15cf64=0x0,_0x4388a9;_0x15cf64<_0x2dc08c[_0x2abb('0x25')];_0x15cf64+=0x1){_0x4388a9=_0x2dc08c[_0x15cf64][_0x2abb('0x56')]({'plain':!![]});switch(_0x4388a9[_0x2abb('0x4b')]){case'always':_0x1e5bd9[_0x2abb('0x29')](db[_0x2abb('0x4f')][_0x2abb('0x52')](_0x1fb0e0(_0x4388a9,'CampaignId'))['then'](function(){})[_0x2abb('0x2b')](_0x20b555()));break;case _0x2abb('0x51'):_0x1e5bd9[_0x2abb('0x29')](db[_0x2abb('0x4f')]['query'](_0x49293b(_0x4388a9,_0x2abb('0x57')))[_0x2abb('0x28')](function(){})[_0x2abb('0x2b')](_0x20b555()));break;default:_0x1e5bd9[_0x2abb('0x29')](db[_0x2abb('0x4f')][_0x2abb('0x52')](_0x335110(_0x4388a9,_0x2abb('0x57')))[_0x2abb('0x28')](function(){})[_0x2abb('0x2b')](_0x20b555()));}}}return _0x1e5bd9;})[_0x2abb('0x53')]();})[_0x2abb('0x28')](function(){return db[_0x2abb('0x58')][_0x2abb('0x49')]({'attributes':['id'],'include':[{'model':db[_0x2abb('0x4c')],'as':_0x2abb('0x55'),'where':{'id':LISTID}}]})[_0x2abb('0x28')](function(_0x335507){var _0x1fa874=[];if(_0x335507){for(var _0x3852a9=0x0,_0x26ec88;_0x3852a9<_0x335507[_0x2abb('0x25')];_0x3852a9+=0x1){_0x26ec88=_0x335507[_0x3852a9][_0x2abb('0x56')]({'plain':!![]});_0x1fa874['push'](db['sequelize'][_0x2abb('0x52')](_0x27233e(_0x26ec88,_0x2abb('0x57')))[_0x2abb('0x28')](function(){})[_0x2abb('0x2b')](_0x20b555()));}}return _0x1fa874;})[_0x2abb('0x53')]();})[_0x2abb('0x2b')](function(_0x4d3bb2){logger['error']('cmContact,\x20%s,\x20%s',_0x2abb('0x59'),_0x4d3bb2[_0x2abb('0x19')]);});}var processPromises=function(_0x596d5a){return BPromise[_0x2abb('0x53')](promises)[_0x2abb('0x28')](function(_0x5f151f){})[_0x2abb('0x2b')](function(_0x48442d){logger[_0x2abb('0x13')](_0x2abb('0x5a'),JSON[_0x2abb('0x2d')](_0x48442d));})[_0x2abb('0x5b')](function(){socket[_0x2abb('0x5c')](_0x2abb('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x596d5a){return _0x596d5a['resume']();}});};var endCsv=function(){return BPromise[_0x2abb('0x5e')]()[_0x2abb('0x28')](function(){if(hopperContacts){return checkHopper();}})[_0x2abb('0x28')](function(){socket[_0x2abb('0x5c')](_0x2abb('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x2abb('0x5f')](FILEPATH);}catch(_0x10eaa7){logger['error'](_0x2abb('0x60'),JSON['stringify'](_0x10eaa7));}finally{process[_0x2abb('0x61')](0x0);}});};process['on'](_0x2abb('0x62'),function(){logger[_0x2abb('0x63')](_0x2abb('0x64'));endCsv();});function main(){return BPromise['resolve']()[_0x2abb('0x28')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db['CmContact'][_0x2abb('0x49')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x2abb('0x28')](function(_0x118a13){var _0x16ad31=fs[_0x2abb('0x65')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2abb('0x66')](_0x16ad31,{'header':!![],'skipEmptyLines':!![],'step':function(_0x547c79,_0x1a4b2f){total+=0x1;var _0x2c686d=total;promises[_0x2abb('0x29')](checkRow(_0x547c79,_0x118a13,_0x2c686d)['then'](function(){success+=0x1;})[_0x2abb('0x2b')](function(_0x578152){if(_0x578152['error']){errors+=0x1;delete _0x578152[_0x2abb('0x13')];}else if(_0x578152[_0x2abb('0x67')]){duplicates+=0x1;delete _0x578152[_0x2abb('0x67')];}rows[_0x2abb('0x29')](_0x578152);}));if(total%0xc8===0x0){_0x1a4b2f[_0x2abb('0x68')]();return processPromises(_0x1a4b2f);}},'complete':function(){return processPromises()[_0x2abb('0x28')](function(){logger['info'](_0x2abb('0x69'));endCsv();});},'error':function(_0x218581,_0x42d2db){logger[_0x2abb('0x63')]('CSV\x20parse\x20error',JSON['stringify'](_0x218581));endCsv();}});})[_0x2abb('0x2b')](function(_0x1df7a8){logger['error'](_0x2abb('0x6a'),JSON[_0x2abb('0x2d')](_0x1df7a8));});}main();
\ No newline at end of file
+var _0xa9ce=['Campaign','CampaignId','cmContact,\x20%s,\x20%s','stringify','contact:csv_','resolve','emit','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','createReadStream','pause','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','squel','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','errors','length','map','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','inspect','into','fromQuery','scheduledAt','ContactId','updatedAt','field','NOW()','toString','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper','insert','createdAt','select','calleridnum','cm_hopper_final','\x20=\x20?','deletedAt\x20IS\x20NULL','str','cm_hopper_black','id\x20IN\x20?','dialCheckDuplicateType','CmList','Lists','always','query','VoiceQueueId','onlyIfOpen','push','sequelize','all','findAll','outbound','BlackLists','get'];(function(_0x141658,_0x27b519){var _0x16388a=function(_0x55c6f1){while(--_0x55c6f1){_0x141658['push'](_0x141658['shift']());}};_0x16388a(++_0x27b519);}(_0xa9ce,0x78));var _0xea9c=function(_0x56172a,_0x4e9617){_0x56172a=_0x56172a-0x0;var _0x259380=_0xa9ce[_0x56172a];return _0x259380;};'use strict';var BPromise=require('bluebird');var util=require(_0xea9c('0x0'));var _=require(_0xea9c('0x1'));var fs=require('fs');var squel=require(_0xea9c('0x2'));var Papa=require(_0xea9c('0x3'));var Redis=require('ioredis');var db=require(_0xea9c('0x4'))['db'];var config=require(_0xea9c('0x5'));var logger=require(_0xea9c('0x6'))(_0xea9c('0x7'));config['redis']=_[_0xea9c('0x8')](config[_0xea9c('0x9')],{'host':_0xea9c('0xa'),'port':0x18eb});var socket=require(_0xea9c('0xb'))(new Redis(config[_0xea9c('0x9')]));require(_0xea9c('0xc'))[_0xea9c('0xd')](socket);try{if(!process[_0xea9c('0xe')][0x2]||process['argv'][0x2]===_0xea9c('0xf')||process[_0xea9c('0xe')][0x2]===_0xea9c('0x10')){throw new Error(_0xea9c('0x11'));}var FILEPATH=process[_0xea9c('0xe')][0x2];if(!process[_0xea9c('0xe')][0x3]||process['argv'][0x3]==='undefined'||process[_0xea9c('0xe')][0x3]===_0xea9c('0x10')||!process[_0xea9c('0xe')][0x4]||process[_0xea9c('0xe')][0x4]===_0xea9c('0xf')||process[_0xea9c('0xe')][0x4]===_0xea9c('0x10')){throw new Error(_0xea9c('0x12'));}var FIELDS=_['zipObject'](process['argv'][0x3][_0xea9c('0x13')](','),process[_0xea9c('0xe')][0x4][_0xea9c('0x13')](','));if(!process[_0xea9c('0xe')][0x5]||process[_0xea9c('0xe')][0x5]==='undefined'||process[_0xea9c('0xe')][0x5]==='null'){throw new Error(_0xea9c('0x14'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0xea9c('0xe')][0x6]&&process[_0xea9c('0xe')][0x6]!==_0xea9c('0xf')&&process[_0xea9c('0xe')][0x6]!==_0xea9c('0x10')?process[_0xea9c('0xe')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xea9c('0xe')][0x7]!==_0xea9c('0xf')&&process[_0xea9c('0xe')][0x7]!==_0xea9c('0x10')?process[_0xea9c('0xe')][0x7]:null;if(!process[_0xea9c('0xe')][0x8]||process[_0xea9c('0xe')][0x8]===_0xea9c('0xf')||process[_0xea9c('0xe')][0x8]===_0xea9c('0x10')){throw new Error(_0xea9c('0x15'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x4d172c){logger[_0xea9c('0x16')](_0x4d172c);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(_0xb1204,_0x50b315,_0x352639,_0x231e79){var _0x415d74={'message':_0x50b315};_0x415d74[_0xb1204]=!![];if(_0x352639){_0x415d74[_0xea9c('0x17')]=_0x352639;}if(_0x231e79){_0x415d74[_0xea9c('0x18')]=_0x231e79;}return _0x415d74;}function isEmail(_0xf207ff){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))*$/[_0xea9c('0x19')](_0xf207ff);}function checkRow(_0x93176a,_0x3734a5,_0x1e2025){return new BPromise(function(_0x307be0,_0x418aa6){if(_['isNil'](_0x93176a)){return _0x418aa6(handleCheckRowError('error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x1e2025));}if(_0x93176a['errors']&&_0x93176a[_0xea9c('0x1a')][_0xea9c('0x1b')]){var _0x18fa96=_[_0xea9c('0x1c')](_0x93176a[_0xea9c('0x1a')],_0xea9c('0x1d'))['join'](';');return _0x418aa6(handleCheckRowError(_0xea9c('0x16'),_0x18fa96,null,_0x1e2025));}var _0xed1040={};for(var _0x1d6600 in FIELDS){if(FIELDS[_0xea9c('0x1e')](_0x1d6600)&&FIELDS[_0x1d6600]){_0xed1040[_0x1d6600]=_0x93176a[_0xea9c('0x1f')][0x0][FIELDS[_0x1d6600]]||_0x93176a[_0xea9c('0x1f')][0x0]['\ufeff'+FIELDS[_0x1d6600]];}}if(!_0xed1040[_0xea9c('0x20')]){return _0x418aa6(handleCheckRowError(_0xea9c('0x16'),_0xea9c('0x21'),null,_0x1e2025));}if(!_0xed1040[_0xea9c('0x22')]){return _0x418aa6(handleCheckRowError(_0xea9c('0x16'),_0xea9c('0x23'),null,_0x1e2025));}if(_0xed1040[_0xea9c('0x24')]){var _0x2b8eff=moment(_0xed1040[_0xea9c('0x24')],_0xea9c('0x25'));if(!_0x2b8eff['isValid']()){return _0x418aa6(handleCheckRowError('error',_0xea9c('0x26'),null,_0x1e2025));}}if(_0xed1040[_0xea9c('0x27')]){if(!isEmail(_0xed1040['email'])){return _0x418aa6(handleCheckRowError(_0xea9c('0x16'),'email\x20format\x20is\x20not\x20valid!',null,_0x1e2025));}}_0xed1040[_0xea9c('0x28')]=LISTID;_0xed1040[_0xea9c('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x3734a5){var _0x501fcb={};for(var _0x52bf4f=0x0,_0x4f5527=DUPLICATES['length'];_0x52bf4f<_0x4f5527;_0x52bf4f+=0x1){_0x501fcb[DUPLICATES[_0x52bf4f]]=_0xed1040[DUPLICATES[_0x52bf4f]];}var _0x4b649b=_[_0xea9c('0x2a')](_0x3734a5,_0x501fcb);if(_0x4b649b){return _0x418aa6(handleCheckRowError(_0xea9c('0x2b'),_0xea9c('0x2c'),_0x4b649b,_0x1e2025));}}return db[_0xea9c('0x2d')][_0xea9c('0x2e')](_0xed1040,{'raw':!![],'hooks':![],'fields':_['keys'](_0xed1040)})[_0xea9c('0x2f')](function(_0x3c0d0d){if(DUPLICATES&&DUPLICATES[_0xea9c('0x1b')]&&_0x3734a5){_0x3734a5['push'](_[_0xea9c('0x30')](_0xed1040,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x3c0d0d['id'];return _0x307be0();})[_0xea9c('0x31')](function(_0x35aa82){return _0x418aa6(handleCheckRowError(_0xea9c('0x16'),_0xea9c('0x32')+(_0x35aa82['message']||JSON['stringify'](_0x35aa82)),null,_0x1e2025));});});}function checkHopper(){function _0x3af28f(){return function(_0x65a4d6){logger[_0xea9c('0x16')](_0xea9c('0x33'),'checkHopper',util[_0xea9c('0x34')](_0x65a4d6,{'showHidden':![],'depth':null}));};}var _0xb5f1ef=function(_0x357b54,_0x5560e8){var _0x556dc8=squel['insert']()[_0xea9c('0x35')]('cm_hopper')[_0xea9c('0x36')]([_0xea9c('0x22'),_0xea9c('0x37'),_0xea9c('0x38'),'ListId',_0x5560e8,'createdAt',_0xea9c('0x39')],squel['select']()[_0xea9c('0x3a')](_0xea9c('0x22'),_0xea9c('0x22'))['field'](_0xea9c('0x3b'),_0xea9c('0x37'))['field']('id',_0xea9c('0x38'))[_0xea9c('0x3a')](LISTID[_0xea9c('0x3c')](),_0xea9c('0x28'))['field'](_0x357b54['id']['toString'](),_0x5560e8)['field'](_0xea9c('0x3b'),'createdAt')[_0xea9c('0x3a')](_0xea9c('0x3b'),_0xea9c('0x39'))[_0xea9c('0x3d')](_0xea9c('0x3e'))[_0xea9c('0x3f')]('deletedAt\x20IS\x20NULL')[_0xea9c('0x3f')](_0xea9c('0x40'),LISTID[_0xea9c('0x3c')]())[_0xea9c('0x3f')](_0xea9c('0x41'))[_0xea9c('0x3f')](_0xea9c('0x42'),squel['select']()['field'](_0xea9c('0x22'))[_0xea9c('0x3d')](_0xea9c('0x43'))[_0xea9c('0x3f')](_0x5560e8+'\x20=\x20?',_0x357b54['id'][_0xea9c('0x3c')]())))[_0xea9c('0x3c')]();return _0x556dc8;};var _0x58c657=function(_0x5a12da,_0x10b3c0){var _0x1acb1a=squel[_0xea9c('0x44')]()[_0xea9c('0x35')](_0xea9c('0x43'))[_0xea9c('0x36')]([_0xea9c('0x22'),'scheduledAt',_0xea9c('0x38'),'ListId',_0x10b3c0,_0xea9c('0x45'),_0xea9c('0x39')],squel[_0xea9c('0x46')]()[_0xea9c('0x3a')](_0xea9c('0x22'),_0xea9c('0x22'))[_0xea9c('0x3a')](_0xea9c('0x3b'),'scheduledAt')[_0xea9c('0x3a')]('id',_0xea9c('0x38'))[_0xea9c('0x3a')](LISTID[_0xea9c('0x3c')](),'ListId')[_0xea9c('0x3a')](_0x5a12da['id'][_0xea9c('0x3c')](),_0x10b3c0)['field'](_0xea9c('0x3b'),_0xea9c('0x45'))['field'](_0xea9c('0x3b'),_0xea9c('0x39'))[_0xea9c('0x3d')]('cm_contacts')[_0xea9c('0x3f')]('deletedAt\x20IS\x20NULL')[_0xea9c('0x3f')](_0xea9c('0x40'),LISTID['toString']())[_0xea9c('0x3f')]('id\x20IN\x20?',squel['str'](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL')[_0xea9c('0x3f')](_0xea9c('0x42'),squel['select']()[_0xea9c('0x3a')](_0xea9c('0x47'))[_0xea9c('0x3d')](_0xea9c('0x48'))[_0xea9c('0x3f')](_0x10b3c0+'\x20=\x20?',_0x5a12da['id']['toString']()))[_0xea9c('0x3f')](_0xea9c('0x42'),squel[_0xea9c('0x46')]()[_0xea9c('0x3a')](_0xea9c('0x22'))[_0xea9c('0x3d')](_0xea9c('0x43'))[_0xea9c('0x3f')](_0x10b3c0+_0xea9c('0x49'),_0x5a12da['id'][_0xea9c('0x3c')]())))[_0xea9c('0x3c')]();return _0x1acb1a;};function _0x217148(_0xbb16ec,_0xa02c60){var _0x44c042=squel[_0xea9c('0x44')]()[_0xea9c('0x35')]('cm_hopper')[_0xea9c('0x36')]([_0xea9c('0x22'),_0xea9c('0x37'),_0xea9c('0x38'),_0xea9c('0x28'),_0xa02c60,_0xea9c('0x45'),'updatedAt'],squel[_0xea9c('0x46')]()['field']('phone',_0xea9c('0x22'))[_0xea9c('0x3a')](_0xea9c('0x3b'),_0xea9c('0x37'))['field']('id','ContactId')['field'](LISTID[_0xea9c('0x3c')](),'ListId')[_0xea9c('0x3a')](_0xbb16ec['id'][_0xea9c('0x3c')](),_0xa02c60)['field'](_0xea9c('0x3b'),_0xea9c('0x45'))[_0xea9c('0x3a')](_0xea9c('0x3b'),_0xea9c('0x39'))[_0xea9c('0x3d')]('cm_contacts')[_0xea9c('0x3f')](_0xea9c('0x4a'))['where']('ListId\x20=\x20?',LISTID[_0xea9c('0x3c')]())['where']('id\x20IN\x20?',squel[_0xea9c('0x4b')](hopperContacts))['where'](_0xea9c('0x41')))[_0xea9c('0x3c')]();return _0x44c042;}function _0x54cb48(_0x411da3,_0x1ee014){var _0x42cc1c=squel[_0xea9c('0x44')]()[_0xea9c('0x35')](_0xea9c('0x4c'))[_0xea9c('0x36')]([_0xea9c('0x22'),_0xea9c('0x38'),_0xea9c('0x28'),_0x1ee014,_0xea9c('0x45'),_0xea9c('0x39')],squel[_0xea9c('0x46')]()['field']('phone','phone')[_0xea9c('0x3a')]('id',_0xea9c('0x38'))[_0xea9c('0x3a')](LISTID[_0xea9c('0x3c')](),_0xea9c('0x28'))[_0xea9c('0x3a')](_0x411da3['id'][_0xea9c('0x3c')](),_0x1ee014)[_0xea9c('0x3a')](_0xea9c('0x3b'),_0xea9c('0x45'))[_0xea9c('0x3a')](_0xea9c('0x3b'),_0xea9c('0x39'))[_0xea9c('0x3d')](_0xea9c('0x3e'))[_0xea9c('0x3f')]('deletedAt\x20IS\x20NULL')['where'](_0xea9c('0x40'),LISTID[_0xea9c('0x3c')]())[_0xea9c('0x3f')](_0xea9c('0x4d'),squel[_0xea9c('0x4b')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0xea9c('0x3c')]();return _0x42cc1c;}return db['VoiceQueue']['findAll']({'where':{'type':'outbound'},'attributes':['id',_0xea9c('0x4e')],'include':[{'model':db[_0xea9c('0x4f')],'as':_0xea9c('0x50'),'where':{'id':LISTID}}]})[_0xea9c('0x2f')](function(_0x2affad){var _0x21e168=[];if(_0x2affad){var _0x14c3f3;for(var _0x21e5ff=0x0,_0x25b7b9;_0x21e5ff<_0x2affad[_0xea9c('0x1b')];_0x21e5ff+=0x1){_0x25b7b9=_0x2affad[_0x21e5ff]['get']({'plain':!![]});switch(_0x25b7b9[_0xea9c('0x4e')]){case _0xea9c('0x51'):_0x21e168['push'](db['sequelize'][_0xea9c('0x52')](_0x58c657(_0x25b7b9,_0xea9c('0x53')))['then'](function(){})[_0xea9c('0x31')](_0x3af28f()));break;case _0xea9c('0x54'):_0x21e168[_0xea9c('0x55')](db[_0xea9c('0x56')]['query'](_0xb5f1ef(_0x25b7b9,_0xea9c('0x53')))[_0xea9c('0x2f')](function(){})[_0xea9c('0x31')](_0x3af28f()));break;default:_0x21e168[_0xea9c('0x55')](db[_0xea9c('0x56')][_0xea9c('0x52')](_0x217148(_0x25b7b9,_0xea9c('0x53')))[_0xea9c('0x2f')](function(){})[_0xea9c('0x31')](_0x3af28f()));}}}return _0x21e168;})[_0xea9c('0x57')]()['then'](function(){return db['VoiceQueue'][_0xea9c('0x58')]({'where':{'type':_0xea9c('0x59')},'attributes':['id'],'include':[{'model':db[_0xea9c('0x4f')],'as':_0xea9c('0x5a'),'where':{'id':LISTID}}]})[_0xea9c('0x2f')](function(_0x46b2c4){var _0x548053=[];if(_0x46b2c4){var _0x914cb4;for(var _0x34d7ee=0x0,_0x4eabc9;_0x34d7ee<_0x46b2c4[_0xea9c('0x1b')];_0x34d7ee+=0x1){_0x4eabc9=_0x46b2c4[_0x34d7ee][_0xea9c('0x5b')]({'plain':!![]});_0x548053['push'](db[_0xea9c('0x56')]['query'](_0x54cb48(_0x4eabc9,_0xea9c('0x53')))[_0xea9c('0x2f')](function(){})['catch'](_0x3af28f()));}}return _0x548053;})[_0xea9c('0x57')]();})[_0xea9c('0x2f')](function(){return db[_0xea9c('0x5c')][_0xea9c('0x58')]({'attributes':['id',_0xea9c('0x4e')],'include':[{'model':db[_0xea9c('0x4f')],'as':'Lists','where':{'id':LISTID}}]})[_0xea9c('0x2f')](function(_0x3dddf8){var _0x307b58=[];if(_0x3dddf8){for(var _0x220e45=0x0,_0x23769e;_0x220e45<_0x3dddf8[_0xea9c('0x1b')];_0x220e45+=0x1){_0x23769e=_0x3dddf8[_0x220e45][_0xea9c('0x5b')]({'plain':!![]});switch(_0x23769e['dialCheckDuplicateType']){case _0xea9c('0x51'):_0x307b58[_0xea9c('0x55')](db[_0xea9c('0x56')][_0xea9c('0x52')](_0x58c657(_0x23769e,_0xea9c('0x5d')))[_0xea9c('0x2f')](function(){})['catch'](_0x3af28f()));break;case'onlyIfOpen':_0x307b58[_0xea9c('0x55')](db['sequelize']['query'](_0xb5f1ef(_0x23769e,_0xea9c('0x5d')))[_0xea9c('0x2f')](function(){})[_0xea9c('0x31')](_0x3af28f()));break;default:_0x307b58[_0xea9c('0x55')](db['sequelize']['query'](_0x217148(_0x23769e,'CampaignId'))[_0xea9c('0x2f')](function(){})[_0xea9c('0x31')](_0x3af28f()));}}}return _0x307b58;})[_0xea9c('0x57')]();})[_0xea9c('0x2f')](function(){return db[_0xea9c('0x5c')][_0xea9c('0x58')]({'attributes':['id'],'include':[{'model':db[_0xea9c('0x4f')],'as':_0xea9c('0x5a'),'where':{'id':LISTID}}]})['then'](function(_0x2e2a53){var _0xf384cf=[];if(_0x2e2a53){for(var _0x163a12=0x0,_0x5b1030;_0x163a12<_0x2e2a53[_0xea9c('0x1b')];_0x163a12+=0x1){_0x5b1030=_0x2e2a53[_0x163a12][_0xea9c('0x5b')]({'plain':!![]});_0xf384cf[_0xea9c('0x55')](db['sequelize'][_0xea9c('0x52')](_0x54cb48(_0x5b1030,_0xea9c('0x5d')))['then'](function(){})['catch'](_0x3af28f()));}}return _0xf384cf;})['all']();})[_0xea9c('0x31')](function(_0x10dcf8){logger[_0xea9c('0x16')](_0xea9c('0x5e'),'generalCheckHopper',_0x10dcf8[_0xea9c('0x1d')]);});}var processPromises=function(_0x3586a5){return BPromise[_0xea9c('0x57')](promises)[_0xea9c('0x2f')](function(_0x1239f9){})[_0xea9c('0x31')](function(_0x10c488){logger[_0xea9c('0x16')]('Error\x20processing\x20rows\x20block:',JSON[_0xea9c('0x5f')](_0x10c488));})['finally'](function(){socket['emit'](_0xea9c('0x60')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3586a5){return _0x3586a5['resume']();}});};var endCsv=function(){return BPromise[_0xea9c('0x61')]()[_0xea9c('0x2f')](function(){if(hopperContacts){return checkHopper();}})[_0xea9c('0x2f')](function(){socket[_0xea9c('0x62')](_0xea9c('0x60')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x92f17a){logger[_0xea9c('0x16')](_0xea9c('0x63'),JSON['stringify'](_0x92f17a));}finally{process['exit'](0x0);}});};process['on'](_0xea9c('0x64'),function(){logger[_0xea9c('0x65')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0xea9c('0x61')]()[_0xea9c('0x2f')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xea9c('0x13')](',');return db[_0xea9c('0x2d')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xea9c('0x2f')](function(_0x27202d){var _0x39d06e=fs[_0xea9c('0x66')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x39d06e,{'header':!![],'skipEmptyLines':!![],'step':function(_0x58c63a,_0x1499bb){total+=0x1;var _0x199385=total;promises[_0xea9c('0x55')](checkRow(_0x58c63a,_0x27202d,_0x199385)[_0xea9c('0x2f')](function(){success+=0x1;})[_0xea9c('0x31')](function(_0x21f0df){if(_0x21f0df['error']){errors+=0x1;delete _0x21f0df['error'];}else if(_0x21f0df[_0xea9c('0x2b')]){duplicates+=0x1;delete _0x21f0df[_0xea9c('0x2b')];}rows[_0xea9c('0x55')](_0x21f0df);}));if(total%0xc8===0x0){_0x1499bb[_0xea9c('0x67')]();return processPromises(_0x1499bb);}},'complete':function(){return processPromises()['then'](function(){logger[_0xea9c('0x65')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x5e77d9,_0x327dde){logger[_0xea9c('0x65')](_0xea9c('0x68'),JSON[_0xea9c('0x5f')](_0x5e77d9));endCsv();}});})['catch'](function(_0x20d751){logger[_0xea9c('0x16')](_0xea9c('0x69'),JSON['stringify'](_0x20d751));});}main();
\ No newline at end of file
index 5179848..229ab20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa267=['VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_blacklists','CampaignId','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','redis','defaults','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','field','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','CmContact','findAll','AdditionalPhones','then','length','push','split','all','isNil','filter','CmContactHasItem','findOne','updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','phone','scheduledat','ContactId','ListId','createdAt','priority','UserId','recallme','select','fields','cm_contacts','.CmListId','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','updatedAt','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','cm_contacts.createdAt\x20=\x20?','\x22onlyIfOpen\x22','cm_hopper_black','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','keys','CompanyId','deletedAt\x20IS\x20NULL','id\x20IN\x20?','min_id','info','message','exit','errors','code','sequelize','query','catch','error','campaigns.id','campaigns','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','spread','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','timezones','dialTimezone','set','offset','main','stringify','send','binding','clone','root','server/files/tmp','.csv','includes','ContactItemType','name','_description','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','utcOffset','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','abort','SystemError','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','dialTimezone,utcOffset',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists'];(function(_0x2bc0d7,_0x479955){var _0x2f4ab4=function(_0x2dafcd){while(--_0x2dafcd){_0x2bc0d7['push'](_0x2bc0d7['shift']());}};_0x2f4ab4(++_0x479955);}(_0xa267,0xcb));var _0x7a26=function(_0xc2df91,_0x3a661a){_0xc2df91=_0xc2df91-0x0;var _0x3c2e6b=_0xa267[_0xc2df91];return _0x3c2e6b;};'use strict';var fs=require('fs');var path=require(_0x7a26('0x0'));var _=require(_0x7a26('0x1'));var Papa=require(_0x7a26('0x2'));var util=require('util');var BPromise=require(_0x7a26('0x3'));var moment=require(_0x7a26('0x4'));var squel=require(_0x7a26('0x5'));var Redis=require(_0x7a26('0x6'));var db=require(_0x7a26('0x7'))['db'];var config=require(_0x7a26('0x8'));var shared=require(_0x7a26('0x9'));var logger=require(_0x7a26('0xa'))('import');config[_0x7a26('0xb')]=_[_0x7a26('0xc')](config[_0x7a26('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x7a26('0xd'))(new Redis(config[_0x7a26('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x7a26('0xe')]('YYYY-MM-DD\x20HH:mm:ss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()['format'](_0x7a26('0xf'));function isEmail(_0x327acd){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))*$/[_0x7a26('0x10')](_0x327acd);}function selectNotIn(_0x3f854d,_0x2d8e4a,_0x26adac,_0xab20c9,_0xf0a634){return squel['select']()[_0x7a26('0x11')]('phone')[_0x7a26('0x12')](_0xab20c9)[_0x7a26('0x13')](_0x2d8e4a,null,_0x2d8e4a+_0x7a26('0x14')+_0xab20c9+'.'+_0x26adac)[_0x7a26('0x15')](_0xab20c9+'.'+_0x26adac+_0x7a26('0x16')+_0x3f854d+'.'+_0x26adac)[_0x7a26('0x15')](_0x2d8e4a+_0x7a26('0x17')+_0xf0a634['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x2e4433,_0xca6723){promisesAdditionalPhones=[];return db[_0x7a26('0x18')][_0x7a26('0x19')]({'raw':!![],'attributes':['id',_0x7a26('0x1a')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x7a26('0x1b')](function(_0x17db47){if(_0x17db47!==null){var _0x473b53=[];for(var _0x5f025d=0x0;_0x5f025d<_0x17db47[_0x7a26('0x1c')];_0x5f025d++){var _0x115ae3=_0x17db47[_0x5f025d];_0x473b53[_0x7a26('0x1d')](insertAdditionalPhones(_0x115ae3));}}Promise['all'](_0x473b53)['then'](function(){_0x2e4433({'val':0x1});});});});}function insertAdditionalPhones(_0x16ad35){return new Promise(function(_0x18bc5f,_0x5ca973){var _0x5dcc0a=_0x16ad35[_0x7a26('0x1a')];var _0x58cf05=_0x5dcc0a[_0x7a26('0x1e')](';');var _0x581354=[];orderBy=0x0;for(var _0x54354e=0x0;_0x54354e<_0x58cf05[_0x7a26('0x1c')];_0x54354e++){_0x581354['push'](splitAdditionalPhone(_0x16ad35['id'],_0x58cf05[_0x54354e]));}Promise[_0x7a26('0x1f')](_0x581354)[_0x7a26('0x1b')](function(){_0x18bc5f({'val':_0x58cf05[_0x7a26('0x1c')]});});});}function splitAdditionalPhone(_0x585596,_0x9c2f85){return new Promise(function(_0x3a37ce,_0x24d947){var _0x4da007=_0x9c2f85['split'](':');var _0x2144fa=_0x4da007[0x0];var _0x14178e=_0x4da007[0x1];if(!_[_0x7a26('0x20')](_0x14178e)){var _0x4f94a7=_0x14178e[_0x7a26('0x1e')]('|');var _0x351d88=[];for(var _0x44de8d=0x0;_0x44de8d<_0x4f94a7[_0x7a26('0x1c')];_0x44de8d++){if(_0x4f94a7[_0x44de8d]!==''){var _0x38b7ab=_[_0x7a26('0x21')](promisesAdditionalPhones,{'contactId':_0x585596,'phone':_0x4f94a7[_0x44de8d]});if(_0x38b7ab['length']==0x0){orderBy++;promisesAdditionalPhones[_0x7a26('0x1d')]({'contactId':_0x585596,'contactTypeId':_0x2144fa,'phone':_0x4f94a7[_0x44de8d],'orderBy':orderBy});}}}_0x3a37ce({'ok':0x1});}else _0x3a37ce({'res':0x0});});}function createAdditionalPhone(_0x2a7e20,_0xcdb33e,_0x265e65,_0x8829ab){var _0x24f880='';var _0xf965ca='';var _0x4ae1c0=_0x265e65[_0x7a26('0x1e')]('§');_0x24f880=_0x4ae1c0[0x0];if(_0x4ae1c0['length']==0x2)_0xf965ca=_0x4ae1c0[0x1];return new Promise(function(_0x553c25,_0x503ec8){return db[_0x7a26('0x22')][_0x7a26('0x23')]({'where':{'CmContactId':_0x2a7e20,'item':_0x24f880}})[_0x7a26('0x1b')](function(_0x37334b){if(_0x37334b){return db[_0x7a26('0x22')]['update']({'ItemTypeId':_0xcdb33e,'description':_0xf965ca,'OrderBy':_0x8829ab},{'where':{'CmContactId':_0x2a7e20,'item':_0x24f880}})[_0x7a26('0x1b')](function(_0x186792){_0x553c25({'res':_0x7a26('0x24')});});}else{return db[_0x7a26('0x22')][_0x7a26('0x25')]({'CmContactId':_0x2a7e20,'item':_0x24f880,'description':_0xf965ca,'ItemTypeId':_0xcdb33e,'OrderBy':_0x8829ab,'ItemClass':_0x7a26('0x26')})[_0x7a26('0x1b')](function(_0x524260){_0x553c25({'res':_0x7a26('0x27')});});}});});}function insertCmHopper(_0x114eea,_0x467192,_0x2c2307,_0x499b8f,_0xb9a13c){var _0x37ee2c=[_0x7a26('0x28'),_0x7a26('0x29'),_0x7a26('0x2a'),_0x7a26('0x2b'),_0x467192+'.'+_0x499b8f,_0x7a26('0x2c'),_0x7a26('0x2d'),'cm_contacts.priority',_0x7a26('0x2e'),'\x22'+_0xb9a13c+'\x22'];return squel[_0x7a26('0x2f')]()[_0x7a26('0x30')](_0x7a26('0x31'))[_0x7a26('0x32')]([_0x7a26('0x33'),_0x7a26('0x34'),_0x7a26('0x35'),_0x7a26('0x36'),_0x499b8f,_0x7a26('0x37'),'updatedAt',_0x7a26('0x38'),_0x7a26('0x39'),_0x7a26('0x3a')],squel[_0x7a26('0x3b')]()[_0x7a26('0x3c')](_0x37ee2c)[_0x7a26('0x12')](_0x467192)[_0x7a26('0x13')](_0x7a26('0x3d'),null,'cm_contacts.ListId\x20=\x20'+_0x467192+_0x7a26('0x3e'))[_0x7a26('0x13')](_0x2c2307,null,_0x2c2307+_0x7a26('0x14')+_0x467192+'.'+_0x499b8f)['where'](_0x467192+'.CmListId\x20=\x20?',_0x114eea)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x7a26('0x15')](_0x7a26('0x3f'),selectNotIn(_0x467192,_0x2c2307,_0x499b8f,_0x7a26('0x31'),['\x22always\x22','\x22onlyIfOpen\x22']))[_0x7a26('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x467192,_0x2c2307,_0x499b8f,_0x7a26('0x31'),[_0x7a26('0x40')])))[_0x7a26('0x41')]();}function insertCmHopperBlack(_0x32e9aa,_0x59ad33,_0x106fa3,_0x8c7927){var _0x12cfc9=[_0x7a26('0x28'),_0x7a26('0x2a'),_0x7a26('0x2b'),_0x59ad33+'.'+_0x8c7927,_0x7a26('0x2c'),_0x7a26('0x2d')];return squel[_0x7a26('0x2f')]()[_0x7a26('0x30')]('cm_hopper_black')[_0x7a26('0x32')](['phone',_0x7a26('0x35'),_0x7a26('0x36'),_0x8c7927,_0x7a26('0x37'),_0x7a26('0x42')],squel[_0x7a26('0x3b')]()['fields'](_0x12cfc9)['from'](_0x59ad33)[_0x7a26('0x13')](_0x7a26('0x3d'),null,_0x7a26('0x43')+_0x59ad33+_0x7a26('0x3e'))[_0x7a26('0x13')](_0x106fa3,null,_0x106fa3+_0x7a26('0x14')+_0x59ad33+'.'+_0x8c7927)[_0x7a26('0x15')](_0x59ad33+_0x7a26('0x44'),_0x32e9aa)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x7a26('0x15')](_0x7a26('0x3f'),squel[_0x7a26('0x3b')]()[_0x7a26('0x11')](_0x7a26('0x33'))['from']('cm_hopper_black')[_0x7a26('0x15')](_0x7a26('0x45'),_0x32e9aa)[_0x7a26('0x15')](_0x8c7927+'\x20=\x20'+_0x59ad33+'.'+_0x8c7927)))[_0x7a26('0x41')]();}function insertTzCmHopper(_0x2b3e47,_0x353c22,_0x383df2,_0x3970a0,_0x4137fa,_0x462714){var _0xe95907=[_0x7a26('0x28'),_0x7a26('0x46')+_0x462714+'.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.id',_0x7a26('0x2b'),_0x353c22+'.'+_0x3970a0,'cm_contacts.createdAt',_0x7a26('0x2d'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x4137fa+'\x22'];var _0x2e5ce=squel[_0x7a26('0x2f')]()['into'](_0x7a26('0x31'))['fromQuery']([_0x7a26('0x33'),_0x7a26('0x34'),_0x7a26('0x35'),_0x7a26('0x36'),_0x3970a0,_0x7a26('0x37'),'updatedAt','priority',_0x7a26('0x39'),_0x7a26('0x3a')],squel[_0x7a26('0x3b')]()[_0x7a26('0x3c')](_0xe95907)['from'](_0x353c22)[_0x7a26('0x13')](_0x7a26('0x3d'),null,'cm_contacts.ListId\x20=\x20'+_0x353c22+_0x7a26('0x3e'))['join'](_0x383df2,null,_0x383df2+_0x7a26('0x14')+_0x353c22+'.'+_0x3970a0)[_0x7a26('0x13')](_0x462714,null,_0x462714+_0x7a26('0x14')+_0x353c22+'.'+_0x3970a0)[_0x7a26('0x15')](_0x353c22+'.CmListId\x20=\x20?',_0x2b3e47)[_0x7a26('0x15')](_0x7a26('0x47'),NOW)[_0x7a26('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x353c22,_0x383df2,_0x3970a0,'cm_hopper',[_0x7a26('0x40'),_0x7a26('0x48')]))['where'](_0x7a26('0x3f'),selectNotIn(_0x353c22,_0x383df2,_0x3970a0,'cm_hopper',['\x22always\x22'])))['toString']();return _0x2e5ce;}function insertTzCmHopperBlack(_0x22b3b9,_0x298f25,_0x24b422,_0x1b933b){var _0x552fb1=['cm_contacts.phone',_0x7a26('0x2a'),'cm_contacts.ListId',_0x298f25+'.'+_0x1b933b,_0x7a26('0x2c'),'cm_contacts.updatedAt'];return squel[_0x7a26('0x2f')]()['into'](_0x7a26('0x49'))[_0x7a26('0x32')]([_0x7a26('0x33'),'ContactId','ListId',_0x1b933b,_0x7a26('0x37'),'updatedAt'],squel[_0x7a26('0x3b')]()[_0x7a26('0x3c')](_0x552fb1)[_0x7a26('0x12')](_0x298f25)['join'](_0x7a26('0x3d'),null,'cm_contacts.ListId\x20=\x20'+_0x298f25+_0x7a26('0x3e'))[_0x7a26('0x13')](_0x24b422,null,_0x24b422+_0x7a26('0x14')+_0x298f25+'.'+_0x1b933b)['where'](_0x298f25+_0x7a26('0x44'),_0x22b3b9)[_0x7a26('0x15')](_0x7a26('0x47'),NOW)[_0x7a26('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x7a26('0x3b')]()['field'](_0x7a26('0x33'))[_0x7a26('0x12')](_0x7a26('0x49'))[_0x7a26('0x15')](_0x7a26('0x45'),_0x22b3b9)[_0x7a26('0x15')](_0x1b933b+_0x7a26('0x16')+_0x298f25+'.'+_0x1b933b)))[_0x7a26('0x41')]();}function insertCmHopperAdditionalPhones(_0x51b2de){var _0x36fbb1=[_0x7a26('0x4a'),_0x7a26('0x4b'),_0x7a26('0x4c'),_0x7a26('0x4d'),_0x7a26('0x4e')];return squel[_0x7a26('0x2f')]()['into'](_0x7a26('0x4f'))[_0x7a26('0x32')]([_0x7a26('0x50'),'phone','OrderBy','createdAt',_0x7a26('0x42')],squel['select']()[_0x7a26('0x3c')](_0x36fbb1)['from']('cm_hopper')[_0x7a26('0x13')](_0x7a26('0x3d'),null,_0x7a26('0x51'))[_0x7a26('0x13')](_0x7a26('0x52'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0x7a26('0x15')]('cm_hopper.ListId\x20=\x20?',_0x51b2de)[_0x7a26('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x7a26('0x41')]();}function insertCmContact(_0x1d0c15,_0x423b63,_0x26b40c,_0xdfa463){var _0x465673=_['concat'](_[_0x7a26('0x53')](_0xdfa463),[_0x7a26('0x36'),_0x7a26('0x54'),_0x7a26('0x37'),_0x7a26('0x42')]);return squel['insert']()[_0x7a26('0x30')](_0x7a26('0x3d'))['fromQuery'](_0x465673,squel[_0x7a26('0x3b')]()[_0x7a26('0x3c')](_0x465673)[_0x7a26('0x12')](_0x423b63)['where']('('+_0x26b40c[_0x7a26('0x13')](',')+')\x20NOT\x20IN\x20?',squel[_0x7a26('0x3b')]()[_0x7a26('0x3c')](_0x26b40c)['from'](_0x7a26('0x3d'))[_0x7a26('0x15')](_0x7a26('0x45'),_0x1d0c15)[_0x7a26('0x15')](_0x7a26('0x55')))[_0x7a26('0x15')](_0x7a26('0x56'),squel[_0x7a26('0x3b')]()[_0x7a26('0x11')]('MIN(id)',_0x7a26('0x57'))[_0x7a26('0x12')](_0x423b63)['group'](_0x26b40c[_0x7a26('0x13')](','))))[_0x7a26('0x41')]();}function handleStop(){logger[_0x7a26('0x58')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x510391){logger['error'](_0x510391[_0x7a26('0x59')]);process[_0x7a26('0x5a')](0x1);}function handleError(_0x2d2877,_0x31e7ae){stats[_0x7a26('0x5b')][_0x7a26('0x1d')]({'name':_0x31e7ae[_0x7a26('0x5c')],'message':_0x31e7ae['message'],'row':_0x2d2877});}function handleQuery(_0x2ea0ce){logger[_0x7a26('0x58')](_0x2ea0ce);return db[_0x7a26('0x5d')][_0x7a26('0x5e')](_0x2ea0ce)['spread'](function(_0x4cf6b7){results[_0x7a26('0x1d')](_0x4cf6b7);})[_0x7a26('0x5f')](function(_0x3f88ad){logger[_0x7a26('0x60')](_0x3f88ad['message']);});}function updateTzCampaigns(_0x47ccb6){return new Promise(function(_0xaf4841,_0x77441d){var _0x34b79d=squel[_0x7a26('0x3b')]()[_0x7a26('0x3c')]([_0x7a26('0x61'),'campaigns.dialTimezone'])['from'](_0x7a26('0x62'))['join'](_0x7a26('0x63'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x7a26('0x15')](_0x7a26('0x64')+_0x47ccb6);db[_0x7a26('0x5d')][_0x7a26('0x5e')](_0x34b79d[_0x7a26('0x41')]())[_0x7a26('0x65')](function(_0x297782){var _0x1eb994=[];for(var _0x1ff91a=0x0;_0x1ff91a<_0x297782['length'];_0x1ff91a++){_0x1eb994[_0x7a26('0x1d')](getTimezoneData(_0x297782[_0x1ff91a],tmp_campaigns));}BPromise[_0x7a26('0x1f')](_0x1eb994)[_0x7a26('0x1b')](function(){_0xaf4841({'val':0x1});});})[_0x7a26('0x5f')](function(_0x4e53ce){logger['error'](_0x4e53ce['message']);_0xaf4841({'val':0x0});});});}function updateTzVoiceQueues(_0x36479b){return new Promise(function(_0x55932c,_0x4037f2){var _0x467c90=squel['select']()['fields']([_0x7a26('0x66'),_0x7a26('0x67')])[_0x7a26('0x12')](_0x7a26('0x68'))[_0x7a26('0x13')]('voice_queues_has_cm_lists',null,_0x7a26('0x69'))[_0x7a26('0x15')]('voice_queues_has_cm_lists.CmListId='+_0x36479b);db[_0x7a26('0x5d')][_0x7a26('0x5e')](_0x467c90['toString']())[_0x7a26('0x65')](function(_0x5bc23e){var _0xc33f8c=[];for(var _0x1ecfcb=0x0;_0x1ecfcb<_0x5bc23e[_0x7a26('0x1c')];_0x1ecfcb++){_0xc33f8c[_0x7a26('0x1d')](getTimezoneData(_0x5bc23e[_0x1ecfcb],tmp_voice_queues));}BPromise['all'](_0xc33f8c)[_0x7a26('0x1b')](function(){_0x55932c({'val':0x1});});})[_0x7a26('0x5f')](function(_0x3c3793){logger['error'](_0x3c3793[_0x7a26('0x59')]);_0x55932c({'val':0x0});});});}function getTimezoneData(_0x52903f,_0x465fc4){return new Promise(function(_0x1ed2b1,_0x4d8e45){var _0x5aedb2=shared[_0x7a26('0x6a')];var _0x24c359=_0x5aedb2[_0x52903f[_0x7a26('0x6b')]];if(_['isNil'](_0x24c359)){_0x1ed2b1({'ret':0x1});}else{var _0x5900de=_0x24c359['utcOffset'];var _0x3e8f3f=squel[_0x7a26('0x2f')]()['into'](_0x465fc4)[_0x7a26('0x6c')]('id',_0x52903f['id'])[_0x7a26('0x6c')](_0x7a26('0x6d'),_0x5900de)[_0x7a26('0x6c')](_0x7a26('0x6b'),_0x52903f['dialTimezone'])[_0x7a26('0x41')]();return db[_0x7a26('0x5d')][_0x7a26('0x5e')](_0x3e8f3f)[_0x7a26('0x65')](function(_0x1afac7){_0x1ed2b1({'ret':0x1});})[_0x7a26('0x5f')](function(_0x126383){logger[_0x7a26('0x60')](_0x126383[_0x7a26('0x59')]);_0x4d8e45({'ret':0x1});});}});}function handleTZQuery(_0x550c91){logger[_0x7a26('0x58')](_0x550c91);return db['sequelize'][_0x7a26('0x5e')](_0x550c91)[_0x7a26('0x65')](function(_0x18936b){})[_0x7a26('0x5f')](function(_0x3d2900){logger['error'](_0x3d2900[_0x7a26('0x59')]);});}function main(_0x3aa8c6,_0x5db611,_0x3b60a9,_0x375882){logger[_0x7a26('0x58')](_0x7a26('0x6e'),_0x3aa8c6,JSON[_0x7a26('0x6f')](_0x5db611));process[_0x7a26('0x70')]('start');var _0x3fd541=_0x5db611[_0x7a26('0x71')];var _0x491e13=_[_0x7a26('0x72')](_0x3fd541);var _0x14fca1=_0x5db611['socket_timestamp'];var _0x336a6d=path[_0x7a26('0x13')](config[_0x7a26('0x73')],_0x7a26('0x74'),_0x14fca1+_0x7a26('0x75'));hasTZ=_[_0x7a26('0x53')](_0x3fd541)[_0x7a26('0x76')]('dialTimezone');var _0x55dc27=_['keys'](_0x3fd541)[_0x7a26('0x13')]();logger['info']('header',_0x55dc27);db[_0x7a26('0x77')][_0x7a26('0x19')]({'raw':!![],'attributes':['id',_0x7a26('0x78')]})[_0x7a26('0x1b')](function(_0x74bb76){for(var _0x5e4f4d=0x0;_0x5e4f4d<_0x74bb76['length'];_0x5e4f4d++){if(_0x74bb76[_0x5e4f4d]['name']in _0x3fd541){contactItemTypes[_0x7a26('0x1d')](_0x74bb76[_0x5e4f4d]);delete _0x491e13[_0x74bb76[_0x5e4f4d][_0x7a26('0x78')]];hasAdditionalPhones=!![];}for(var _0x4d736a in _0x3fd541){if(_0x74bb76[_0x5e4f4d][_0x7a26('0x78')]+_0x7a26('0x79')===_0x4d736a){phoneDescriptions[_0x7a26('0x1d')]({'itemTypeId':_0x74bb76[_0x5e4f4d]['id'],'description':_0x4d736a});delete _0x491e13[_0x4d736a];}}}if(hasAdditionalPhones)_0x491e13[_0x7a26('0x1a')]='';var _0x5b4d89=_[_0x7a26('0x53')](_0x491e13)[_0x7a26('0x13')]();logger[_0x7a26('0x58')]('header',_0x5b4d89);fs[_0x7a26('0x7a')](_0x336a6d,_0x5b4d89+'\x0a');Papa[_0x7a26('0x7b')](fs[_0x7a26('0x7c')](_0x3aa8c6),{'header':!![],'skipEmptyLines':!![],'step':function(_0x46fd4b,_0x45844c){try{for(var _0x47a6be=0x0,_0x24c54=[];_0x47a6be<_0x46fd4b[_0x7a26('0x7d')][_0x7a26('0x1c')];_0x47a6be++){stats[_0x7a26('0x7e')]+=0x1;if(_0x46fd4b[_0x7a26('0x5b')][_0x47a6be]){handleError(_0x46fd4b[_0x7a26('0x7d')][_0x47a6be],_0x46fd4b[_0x7a26('0x5b')][_0x47a6be]);}else{var _0x436efe=[];var _0x5b5956=[];var _0x539e44={};for(var _0x10e126 in _0x3fd541){let _0x83008b=contactItemTypes[_0x7a26('0x7f')](_0x2eb105=>_0x2eb105[_0x7a26('0x78')]===_0x10e126);let _0x4205f6=contactItemTypes['find'](_0x5ff4ae=>_0x5ff4ae['name']+'_description'===_0x10e126);if(_[_0x7a26('0x20')](_0x83008b)&&_[_0x7a26('0x20')](_0x4205f6)){if(_0x3fd541[_0x7a26('0x80')](_0x10e126)){if(_0x46fd4b[_0x7a26('0x7d')][_0x47a6be][_0x3fd541[_0x10e126]]){var _0x1deabe=_[_0x7a26('0x81')](_0x46fd4b[_0x7a26('0x7d')][_0x47a6be][_0x3fd541[_0x10e126]][_0x7a26('0x82')](/"/g,'\x27'));switch(_0x10e126){case'scheduledat':var _0x2584fc=moment(_0x1deabe,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x2584fc[_0x7a26('0x83')]()){_0x24c54['push']('\x22'+_0x1deabe+'\x22');}else{_0x436efe[_0x7a26('0x1d')](_0x7a26('0x84'));}break;case _0x7a26('0x38'):var _0x162134=parseInt(_0x1deabe);_0x1deabe=_[_0x7a26('0x85')](_0x162134)||_0x162134<0x0||_0x162134>0x4?_0x375882?0x3:0x2:_0x162134;_0x24c54['push']('\x22'+_0x1deabe+'\x22');break;case _0x7a26('0x39'):var _0x571d19=parseInt(_0x1deabe);if(_['isNumber'](_0x571d19)&&_[_0x7a26('0x76')](_0x3b60a9,_0x571d19)){_0x24c54[_0x7a26('0x1d')]('\x22'+_0x571d19+'\x22');}else{_0x436efe[_0x7a26('0x1d')](_0x7a26('0x86'));}break;case _0x7a26('0x87'):if(isEmail(_0x1deabe)){_0x24c54[_0x7a26('0x1d')]('\x22'+_0x1deabe+'\x22');}else{_0x436efe[_0x7a26('0x1d')](_0x7a26('0x88'));}break;case _0x7a26('0x89'):var _0x213f35=moment(_0x1deabe,'YYYY-MM-DD',!![]);if(_0x213f35[_0x7a26('0x83')]()){_0x24c54['push']('\x22'+_0x1deabe+'\x22');}else{_0x436efe[_0x7a26('0x1d')](_0x7a26('0x8a'));}break;case _0x7a26('0x6b'):var _0x38ecc8=shared[_0x7a26('0x6a')];var _0x4ccb8e=_0x38ecc8[_0x1deabe];if(!_[_0x7a26('0x20')](_0x4ccb8e)){var _0xf9a4ac=_0x4ccb8e[_0x7a26('0x8b')];_0x24c54[_0x7a26('0x1d')]('\x22'+_0x1deabe+'\x22');_0x24c54['push']('\x22'+_0xf9a4ac+'\x22');}break;default:_0x24c54[_0x7a26('0x1d')]('\x22'+_0x1deabe+'\x22');}}else{switch(_0x10e126){case _0x7a26('0x8c'):case _0x7a26('0x33'):_0x436efe[_0x7a26('0x1d')](_0x10e126+_0x7a26('0x8d'));break;default:_0x24c54[_0x7a26('0x1d')]('\x22\x22');}}}}else{var _0x3796d2='';if(!_[_0x7a26('0x20')](_0x83008b)){if(!_0x539e44[_0x7a26('0x80')](_0x83008b['id'])){if(!_[_0x7a26('0x20')](_0x46fd4b[_0x7a26('0x7d')][_0x47a6be][_0x3fd541[_0x10e126]])){var _0x1deabe=_['trim'](_0x46fd4b[_0x7a26('0x7d')][_0x47a6be][_0x3fd541[_0x10e126]][_0x7a26('0x82')](/"/g,'\x27'));var _0x504991=phoneDescriptions[_0x7a26('0x7f')](_0x473322=>_0x473322[_0x7a26('0x8e')]===_0x83008b['id']);if(!_[_0x7a26('0x20')](_0x504991)){var _0x282c6f=_[_0x7a26('0x81')](_0x46fd4b['data'][_0x47a6be][_0x3fd541[_0x504991[_0x7a26('0x8f')]]][_0x7a26('0x82')](/"/g,'\x27'));if(!_[_0x7a26('0x20')](_0x282c6f))_0x1deabe=_0x1deabe+'§'+_0x282c6f;}if(_0x3796d2=='')_0x3796d2=_0x1deabe;else _0x3796d2+='|'+_0x1deabe;}_0x5b5956[_0x7a26('0x1d')](_0x83008b['id']+':'+_0x3796d2);_0x539e44[_0x83008b['id']]=0x1;}}}}if(hasAdditionalPhones){_0x24c54['push']('\x22'+_0x5b5956['join'](';')+'\x22');}if(_0x436efe[_0x7a26('0x1c')]){handleError(_0x46fd4b[_0x7a26('0x7d')][_0x47a6be],{'code':_0x7a26('0x90'),'message':_0x436efe[_0x7a26('0x13')]()});}else{fs[_0x7a26('0x91')](_0x336a6d,_0x24c54['join']()+'\x0a');}_0x24c54=[];}if(!(stats[_0x7a26('0x7e')]%0xc8)){socket[_0x7a26('0x92')](_0x7a26('0x93')+_0x14fca1,stats);stats[_0x7a26('0x5b')]=[];}}if(stopped){logger[_0x7a26('0x58')]('Abort\x20parser');_0x45844c[_0x7a26('0x94')]();}}catch(_0xd4b234){handleError(_0x46fd4b[_0x7a26('0x7d')][_0x47a6be],{'code':_0x7a26('0x95'),'message':_0xd4b234[_0x7a26('0x59')]});logger[_0x7a26('0x60')](_0x7a26('0x96'),_0xd4b234[_0x7a26('0x59')]);}},'complete':function(){try{var _0x4539da=[];var _0x5a68eb=[];var _0x340ada=_0x7a26('0x3d');if(_0x5db611[_0x7a26('0x97')]&&_0x5db611[_0x7a26('0x97')][_0x7a26('0x1c')]){_0x340ada='cm_contacts_'+_0x14fca1;_0x4539da[_0x7a26('0x1d')](_0x7a26('0x98')+_0x340ada+_0x7a26('0x99'));}tmp_campaigns=_0x7a26('0x9a')+_0x14fca1;tmp_voice_queues=_0x7a26('0x9b')+_0x14fca1;_0x5a68eb[_0x7a26('0x1d')](_0x7a26('0x98')+tmp_campaigns+_0x7a26('0x9c'));_0x5a68eb['push'](_0x7a26('0x98')+tmp_voice_queues+_0x7a26('0x9c'));BPromise[_0x7a26('0x9d')](_0x5a68eb,handleTZQuery)[_0x7a26('0x1b')](function(_0x499278){updateTzCampaigns(_0x5db611[_0x7a26('0x36')])[_0x7a26('0x1b')](function(_0x26b86c){updateTzVoiceQueues(_0x5db611[_0x7a26('0x36')])['then'](function(_0x84dec5){if(hasTZ)_0x5b4d89=_0x5b4d89['replace'](_0x7a26('0x6b'),_0x7a26('0x9e'));var _0x2f0901=util[_0x7a26('0xe')]('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',_0x336a6d,_0x340ada,_0x5b4d89,_0x5db611[_0x7a26('0x36')],_0x5db611[_0x7a26('0x54')]||null,NOW,NOW);if(_[_0x7a26('0x20')](_0x3fd541[_0x7a26('0x34')])){_0x2f0901+=_0x7a26('0x9f');}_0x4539da[_0x7a26('0x1d')](_0x2f0901);if(_0x5db611[_0x7a26('0x97')]&&_0x5db611[_0x7a26('0x97')][_0x7a26('0x1c')]){_0x4539da[_0x7a26('0x1d')](insertCmContact(_0x5db611[_0x7a26('0x36')],_0x340ada,_0x5db611['duplicates'],_0x3fd541));_0x4539da['push'](_0x7a26('0xa0')+_0x340ada+';');}BPromise[_0x7a26('0x9d')](_0x4539da,handleQuery)[_0x7a26('0x1b')](function(_0x5a7129){BPromise['all']([handleAdditionalPhones()])['then'](function(){_0x4539da=[];for(var _0x14d182=0x0;_0x14d182<promisesAdditionalPhones[_0x7a26('0x1c')];_0x14d182++){if(promisesAdditionalPhones[_0x14d182]['phone']!='§'){_0x4539da[_0x7a26('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0x14d182][_0x7a26('0xa1')],promisesAdditionalPhones[_0x14d182][_0x7a26('0xa2')],promisesAdditionalPhones[_0x14d182][_0x7a26('0x33')],promisesAdditionalPhones[_0x14d182][_0x7a26('0xa3')]));}}BPromise['all'](_0x4539da)[_0x7a26('0x1b')](function(){_0x4539da=[];if(hasTZ){_0x4539da[_0x7a26('0x1d')](insertTzCmHopper(_0x5db611[_0x7a26('0x36')],_0x7a26('0xa4'),_0x7a26('0x68'),_0x7a26('0xa5'),_0x375882,tmp_voice_queues));_0x4539da[_0x7a26('0x1d')](insertTzCmHopperBlack(_0x5db611['ListId'],_0x7a26('0xa6'),_0x7a26('0x68'),_0x7a26('0xa5')));_0x4539da[_0x7a26('0x1d')](insertTzCmHopper(_0x5db611[_0x7a26('0x36')],_0x7a26('0x63'),_0x7a26('0x62'),'CampaignId',_0x375882,tmp_campaigns));_0x4539da[_0x7a26('0x1d')](insertTzCmHopperBlack(_0x5db611[_0x7a26('0x36')],_0x7a26('0xa7'),_0x7a26('0x62'),'CampaignId'));_0x4539da[_0x7a26('0x1d')](insertCmHopperAdditionalPhones(_0x5db611['ListId']));}else{_0x4539da['push'](insertCmHopper(_0x5db611[_0x7a26('0x36')],_0x7a26('0xa4'),'voice_queues','VoiceQueueId',_0x375882));_0x4539da[_0x7a26('0x1d')](insertCmHopperBlack(_0x5db611[_0x7a26('0x36')],_0x7a26('0xa6'),'voice_queues',_0x7a26('0xa5')));_0x4539da[_0x7a26('0x1d')](insertCmHopper(_0x5db611['ListId'],_0x7a26('0x63'),_0x7a26('0x62'),_0x7a26('0xa8'),_0x375882));_0x4539da[_0x7a26('0x1d')](insertCmHopperBlack(_0x5db611[_0x7a26('0x36')],_0x7a26('0xa7'),_0x7a26('0x62'),_0x7a26('0xa8')));_0x4539da[_0x7a26('0x1d')](insertCmHopperAdditionalPhones(_0x5db611['ListId']));}_0x4539da['push'](_0x7a26('0xa0')+tmp_campaigns+';');_0x4539da[_0x7a26('0x1d')](_0x7a26('0xa0')+tmp_voice_queues+';');BPromise['each'](_0x4539da,handleQuery)[_0x7a26('0x1b')](function(_0x1098f0){stats[_0x7a26('0xa9')]=!![];stats[_0x7a26('0xaa')]=_0x5db611[_0x7a26('0x97')]&&_0x5db611[_0x7a26('0x97')][_0x7a26('0x1c')]?results[0x2]['affectedRows']:results[0x0][_0x7a26('0xaa')];socket[_0x7a26('0x92')](_0x7a26('0x93')+_0x14fca1,stats);fs[_0x7a26('0xab')](_0x3aa8c6);fs['unlink'](_0x336a6d);process[_0x7a26('0x5a')](0x0);})[_0x7a26('0x5f')](function(_0x316ee4){logger[_0x7a26('0x60')](_0x316ee4[_0x7a26('0x59')]);process['exit'](0x1);});});});})[_0x7a26('0x5f')](function(_0x47fa94){logger['error'](_0x47fa94[_0x7a26('0x59')]);process['exit'](0x1);});});});});}catch(_0x558efc){logger[_0x7a26('0x60')](_0x7a26('0xac'),_0x558efc[_0x7a26('0x59')]);process['exit'](0x1);}},'error':function(_0x363700,_0x53e55a,_0x2926f4,_0x103f40){throw new Error(_0x103f40);}});});}function validate(){if(process[_0x7a26('0xad')]&&process['argv'][_0x7a26('0x1c')]<0x4){throw new Error(_0x7a26('0xae'));}var _0x148953=path['join'](config[_0x7a26('0x73')],_0x7a26('0x74'),process[_0x7a26('0xad')][0x2]);if(!fs[_0x7a26('0xaf')](_0x148953)){throw new Error(_0x7a26('0xb0'));}var _0x236763={};try{_0x236763=JSON[_0x7a26('0x7b')](process['argv'][0x3]);if(!_0x236763['binding']){throw new Error(_0x7a26('0xb1'));}if(!_0x236763[_0x7a26('0x71')][_0x7a26('0x33')]){throw new Error(_0x7a26('0xb2'));}if(!_0x236763[_0x7a26('0x71')][_0x7a26('0x8c')]){throw new Error(_0x7a26('0xb3'));}var _0x370c17=0x0;if(_0x236763[_0x7a26('0x71')][_0x7a26('0x39')]){_0x370c17=0x1;}if(!_0x236763['ListId']){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x36ef2a){throw new Error(_0x7a26('0xb4'));}var _0x4ecee9=[];try{_0x4ecee9=_[_0x7a26('0xb5')](JSON[_0x7a26('0x7b')](process[_0x7a26('0xad')][0x4]),'id');}catch(_0x111788){logger['info']('No\x20agent\x20available');}main(_0x148953,_0x236763,_0x4ecee9,_0x370c17);}validate();process['on'](_0x7a26('0xb6'),handleStop);process['on'](_0x7a26('0xb7'),handleUncaughtException);
\ No newline at end of file
+var _0x4f4f=['campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','query','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','offset','main','start','binding','clone','socket_timestamp','root','server/files/tmp','.csv','keys','includes','header','ContactItemType','name','_description','AdditionalPhones','createReadStream','data','errors','find','trim','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','hasOwnProperty','itemTypeId','description','SystemRow','appendFileSync','rows','emit','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','DROP\x20TABLE\x20','each','contactId','orderBy','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','voice_queues_has_cm_lists','VoiceQueueId','finish','affectedRows','contact:import:','unlink','catch','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','SIGINT','path','util','bluebird','moment','squel','../../../mysqldb','../../../config/environment/shared','../../../config/logger','import','redis','defaults','localhost','YYYY-MM-DD\x20HH:mm:ss','format','select','field','phone','from','.id\x20=\x20','where','join','CmContact','then','push','all','split','length','isNil','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','\x22onlyIfOpen\x22','insert','cm_hopper_black','.CmListId','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','\x20=\x20','toString','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','into','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','min_id','Received\x20SIGINT','error','message','exit','info','sequelize','spread'];(function(_0x56f69f,_0x1a67f1){var _0x1a0bf8=function(_0x3ee708){while(--_0x3ee708){_0x56f69f['push'](_0x56f69f['shift']());}};_0x1a0bf8(++_0x1a67f1);}(_0x4f4f,0x1ca));var _0xf4f4=function(_0x2abde0,_0x34c56e){_0x2abde0=_0x2abde0-0x0;var _0x33d1e6=_0x4f4f[_0x2abde0];return _0x33d1e6;};'use strict';var fs=require('fs');var path=require(_0xf4f4('0x0'));var _=require('lodash');var Papa=require('papaparse');var util=require(_0xf4f4('0x1'));var BPromise=require(_0xf4f4('0x2'));var moment=require(_0xf4f4('0x3'));var squel=require(_0xf4f4('0x4'));var Redis=require('ioredis');var db=require(_0xf4f4('0x5'))['db'];var config=require('../../../config/environment');var shared=require(_0xf4f4('0x6'));var logger=require(_0xf4f4('0x7'))(_0xf4f4('0x8'));config[_0xf4f4('0x9')]=_[_0xf4f4('0xa')](config['redis'],{'host':_0xf4f4('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format'](_0xf4f4('0xc'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xf4f4('0xd')](_0xf4f4('0xc'));function isEmail(_0x4f5059){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'](_0x4f5059);}function selectNotIn(_0x45ca7b,_0x4a2920,_0x3e4d0a,_0x4431b3,_0x384835){return squel[_0xf4f4('0xe')]()[_0xf4f4('0xf')](_0xf4f4('0x10'))[_0xf4f4('0x11')](_0x4431b3)['join'](_0x4a2920,null,_0x4a2920+_0xf4f4('0x12')+_0x4431b3+'.'+_0x3e4d0a)['where'](_0x4431b3+'.'+_0x3e4d0a+'\x20=\x20'+_0x45ca7b+'.'+_0x3e4d0a)[_0xf4f4('0x13')](_0x4a2920+'.dialCheckDuplicateType\x20IN\x20('+_0x384835[_0xf4f4('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x12db64,_0xceb35f){promisesAdditionalPhones=[];return db[_0xf4f4('0x15')]['findAll']({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xf4f4('0x16')](function(_0x563347){if(_0x563347!==null){var _0x141e57=[];for(var _0x10cd15=0x0;_0x10cd15<_0x563347['length'];_0x10cd15++){var _0x47885d=_0x563347[_0x10cd15];_0x141e57[_0xf4f4('0x17')](insertAdditionalPhones(_0x47885d));}}Promise[_0xf4f4('0x18')](_0x141e57)[_0xf4f4('0x16')](function(){_0x12db64({'val':0x1});});});});}function insertAdditionalPhones(_0x80dd5e){return new Promise(function(_0x2e5808,_0x3f615c){var _0x219ca5=_0x80dd5e['AdditionalPhones'];var _0x56afd5=_0x219ca5[_0xf4f4('0x19')](';');var _0xbde985=[];orderBy=0x0;for(var _0x27dd17=0x0;_0x27dd17<_0x56afd5['length'];_0x27dd17++){_0xbde985[_0xf4f4('0x17')](splitAdditionalPhone(_0x80dd5e['id'],_0x56afd5[_0x27dd17]));}Promise[_0xf4f4('0x18')](_0xbde985)[_0xf4f4('0x16')](function(){_0x2e5808({'val':_0x56afd5[_0xf4f4('0x1a')]});});});}function splitAdditionalPhone(_0x20d761,_0x44f072){return new Promise(function(_0x31a538,_0x196a27){var _0x77905d=_0x44f072[_0xf4f4('0x19')](':');var _0x4240a0=_0x77905d[0x0];var _0x28bc6e=_0x77905d[0x1];if(!_[_0xf4f4('0x1b')](_0x28bc6e)){var _0x2fce8b=_0x28bc6e['split']('|');var _0xece40f=[];for(var _0xca0574=0x0;_0xca0574<_0x2fce8b[_0xf4f4('0x1a')];_0xca0574++){if(_0x2fce8b[_0xca0574]!==''){var _0x1b78f1=_[_0xf4f4('0x1c')](promisesAdditionalPhones,{'contactId':_0x20d761,'phone':_0x2fce8b[_0xca0574]});if(_0x1b78f1['length']==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x20d761,'contactTypeId':_0x4240a0,'phone':_0x2fce8b[_0xca0574],'orderBy':orderBy});}}}_0x31a538({'ok':0x1});}else _0x31a538({'res':0x0});});}function createAdditionalPhone(_0x292693,_0x24781b,_0x6ea8b1,_0x411b98){var _0x42bd80='';var _0x288379='';var _0x3601f5=_0x6ea8b1['split']('§');_0x42bd80=_0x3601f5[0x0];if(_0x3601f5[_0xf4f4('0x1a')]==0x2)_0x288379=_0x3601f5[0x1];return new Promise(function(_0x2b1599,_0x9666a){return db[_0xf4f4('0x1d')][_0xf4f4('0x1e')]({'where':{'CmContactId':_0x292693,'item':_0x42bd80}})[_0xf4f4('0x16')](function(_0x58c2a2){if(_0x58c2a2){return db['CmContactHasItem'][_0xf4f4('0x1f')]({'ItemTypeId':_0x24781b,'description':_0x288379,'OrderBy':_0x411b98},{'where':{'CmContactId':_0x292693,'item':_0x42bd80}})['then'](function(_0x1f4937){_0x2b1599({'res':_0xf4f4('0x20')});});}else{return db['CmContactHasItem'][_0xf4f4('0x21')]({'CmContactId':_0x292693,'item':_0x42bd80,'description':_0x288379,'ItemTypeId':_0x24781b,'OrderBy':_0x411b98,'ItemClass':_0xf4f4('0x22')})[_0xf4f4('0x16')](function(_0x6740a5){_0x2b1599({'res':_0xf4f4('0x23')});});}});});}function insertCmHopper(_0x2c8029,_0x113fbb,_0x144b95,_0x407d82,_0x905e7b){var _0x32c3fa=[_0xf4f4('0x24'),_0xf4f4('0x25'),_0xf4f4('0x26'),_0xf4f4('0x27'),_0x113fbb+'.'+_0x407d82,_0xf4f4('0x28'),_0xf4f4('0x29'),_0xf4f4('0x2a'),_0xf4f4('0x2b'),'\x22'+_0x905e7b+'\x22'];return squel['insert']()['into']('cm_hopper')[_0xf4f4('0x2c')]([_0xf4f4('0x10'),_0xf4f4('0x2d'),_0xf4f4('0x2e'),_0xf4f4('0x2f'),_0x407d82,_0xf4f4('0x30'),_0xf4f4('0x31'),_0xf4f4('0x32'),_0xf4f4('0x33'),_0xf4f4('0x34')],squel['select']()[_0xf4f4('0x35')](_0x32c3fa)[_0xf4f4('0x11')](_0x113fbb)[_0xf4f4('0x14')](_0xf4f4('0x36'),null,_0xf4f4('0x37')+_0x113fbb+'.CmListId')['join'](_0x144b95,null,_0x144b95+_0xf4f4('0x12')+_0x113fbb+'.'+_0x407d82)['where'](_0x113fbb+_0xf4f4('0x38'),_0x2c8029)[_0xf4f4('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xf4f4('0x13')](_0xf4f4('0x39'),selectNotIn(_0x113fbb,_0x144b95,_0x407d82,_0xf4f4('0x3a'),[_0xf4f4('0x3b'),_0xf4f4('0x3c')]))[_0xf4f4('0x13')](_0xf4f4('0x39'),selectNotIn(_0x113fbb,_0x144b95,_0x407d82,'cm_hopper',[_0xf4f4('0x3b')])))['toString']();}function insertCmHopperBlack(_0x496c1a,_0x4c7900,_0x15727c,_0x4dfd36){var _0x2ef5e1=[_0xf4f4('0x24'),_0xf4f4('0x26'),_0xf4f4('0x27'),_0x4c7900+'.'+_0x4dfd36,_0xf4f4('0x28'),_0xf4f4('0x29')];return squel[_0xf4f4('0x3d')]()['into'](_0xf4f4('0x3e'))[_0xf4f4('0x2c')]([_0xf4f4('0x10'),_0xf4f4('0x2e'),_0xf4f4('0x2f'),_0x4dfd36,'createdAt','updatedAt'],squel['select']()[_0xf4f4('0x35')](_0x2ef5e1)['from'](_0x4c7900)['join'](_0xf4f4('0x36'),null,'cm_contacts.ListId\x20=\x20'+_0x4c7900+_0xf4f4('0x3f'))[_0xf4f4('0x14')](_0x15727c,null,_0x15727c+_0xf4f4('0x12')+_0x4c7900+'.'+_0x4dfd36)[_0xf4f4('0x13')](_0x4c7900+_0xf4f4('0x38'),_0x496c1a)[_0xf4f4('0x13')](_0xf4f4('0x40'),NOW)[_0xf4f4('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xf4f4('0xe')]()[_0xf4f4('0xf')](_0xf4f4('0x10'))[_0xf4f4('0x11')](_0xf4f4('0x3e'))[_0xf4f4('0x13')](_0xf4f4('0x41'),_0x496c1a)[_0xf4f4('0x13')](_0x4dfd36+_0xf4f4('0x42')+_0x4c7900+'.'+_0x4dfd36)))[_0xf4f4('0x43')]();}function insertTzCmHopper(_0x401bad,_0x58361,_0x71937c,_0x3b9313,_0x31a31a,_0x68085e){var _0x2587fb=[_0xf4f4('0x24'),'date_add(cm_contacts.scheduledat,interval\x20'+_0x68085e+'.offset-cm_contacts.utcOffset\x20minute)',_0xf4f4('0x26'),_0xf4f4('0x27'),_0x58361+'.'+_0x3b9313,_0xf4f4('0x28'),'cm_contacts.updatedAt',_0xf4f4('0x2a'),'cm_contacts.UserId','\x22'+_0x31a31a+'\x22'];var _0x560a37=squel[_0xf4f4('0x3d')]()['into'](_0xf4f4('0x3a'))['fromQuery']([_0xf4f4('0x10'),'scheduledat',_0xf4f4('0x2e'),_0xf4f4('0x2f'),_0x3b9313,_0xf4f4('0x30'),_0xf4f4('0x31'),_0xf4f4('0x32'),_0xf4f4('0x33'),_0xf4f4('0x34')],squel[_0xf4f4('0xe')]()[_0xf4f4('0x35')](_0x2587fb)['from'](_0x58361)[_0xf4f4('0x14')](_0xf4f4('0x36'),null,_0xf4f4('0x37')+_0x58361+_0xf4f4('0x3f'))['join'](_0x71937c,null,_0x71937c+_0xf4f4('0x12')+_0x58361+'.'+_0x3b9313)['join'](_0x68085e,null,_0x68085e+_0xf4f4('0x12')+_0x58361+'.'+_0x3b9313)[_0xf4f4('0x13')](_0x58361+_0xf4f4('0x38'),_0x401bad)[_0xf4f4('0x13')](_0xf4f4('0x40'),NOW)[_0xf4f4('0x13')](_0xf4f4('0x39'),selectNotIn(_0x58361,_0x71937c,_0x3b9313,_0xf4f4('0x3a'),[_0xf4f4('0x3b'),_0xf4f4('0x3c')]))[_0xf4f4('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x58361,_0x71937c,_0x3b9313,_0xf4f4('0x3a'),[_0xf4f4('0x3b')])))[_0xf4f4('0x43')]();return _0x560a37;}function insertTzCmHopperBlack(_0x44db17,_0x5cbaa6,_0x468061,_0x575553){var _0x2bf708=[_0xf4f4('0x24'),_0xf4f4('0x26'),_0xf4f4('0x27'),_0x5cbaa6+'.'+_0x575553,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel[_0xf4f4('0x3d')]()['into'](_0xf4f4('0x3e'))['fromQuery']([_0xf4f4('0x10'),_0xf4f4('0x2e'),'ListId',_0x575553,'createdAt','updatedAt'],squel['select']()[_0xf4f4('0x35')](_0x2bf708)[_0xf4f4('0x11')](_0x5cbaa6)[_0xf4f4('0x14')](_0xf4f4('0x36'),null,_0xf4f4('0x37')+_0x5cbaa6+_0xf4f4('0x3f'))[_0xf4f4('0x14')](_0x468061,null,_0x468061+_0xf4f4('0x12')+_0x5cbaa6+'.'+_0x575553)[_0xf4f4('0x13')](_0x5cbaa6+'.CmListId\x20=\x20?',_0x44db17)[_0xf4f4('0x13')](_0xf4f4('0x40'),NOW)['where'](_0xf4f4('0x39'),squel['select']()['field']('phone')['from']('cm_hopper_black')[_0xf4f4('0x13')](_0xf4f4('0x41'),_0x44db17)['where'](_0x575553+_0xf4f4('0x42')+_0x5cbaa6+'.'+_0x575553)))[_0xf4f4('0x43')]();}function insertCmHopperAdditionalPhones(_0x5e713d){var _0xd0953=[_0xf4f4('0x44'),_0xf4f4('0x45'),_0xf4f4('0x46'),'cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt'];return squel['insert']()[_0xf4f4('0x47')](_0xf4f4('0x48'))[_0xf4f4('0x2c')]([_0xf4f4('0x49'),_0xf4f4('0x10'),_0xf4f4('0x4a'),_0xf4f4('0x30'),'updatedAt'],squel[_0xf4f4('0xe')]()[_0xf4f4('0x35')](_0xd0953)[_0xf4f4('0x11')]('cm_hopper')['join'](_0xf4f4('0x36'),null,_0xf4f4('0x4b'))[_0xf4f4('0x14')]('cm_contact_has_items',null,_0xf4f4('0x4c'))['where'](_0xf4f4('0x4d'),_0x5e713d)[_0xf4f4('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0xf4f4('0x43')]();}function insertCmContact(_0x5efccc,_0x395f4e,_0x100336,_0x59d5d5){var _0x2222b2=_[_0xf4f4('0x4e')](_['keys'](_0x59d5d5),[_0xf4f4('0x2f'),_0xf4f4('0x4f'),_0xf4f4('0x30'),_0xf4f4('0x31')]);return squel[_0xf4f4('0x3d')]()['into'](_0xf4f4('0x36'))[_0xf4f4('0x2c')](_0x2222b2,squel['select']()[_0xf4f4('0x35')](_0x2222b2)[_0xf4f4('0x11')](_0x395f4e)[_0xf4f4('0x13')]('('+_0x100336[_0xf4f4('0x14')](',')+_0xf4f4('0x50'),squel[_0xf4f4('0xe')]()[_0xf4f4('0x35')](_0x100336)[_0xf4f4('0x11')](_0xf4f4('0x36'))[_0xf4f4('0x13')]('ListId\x20=\x20?',_0x5efccc)['where'](_0xf4f4('0x51')))[_0xf4f4('0x13')](_0xf4f4('0x52'),squel[_0xf4f4('0xe')]()[_0xf4f4('0xf')]('MIN(id)',_0xf4f4('0x53'))[_0xf4f4('0x11')](_0x395f4e)['group'](_0x100336[_0xf4f4('0x14')](','))))[_0xf4f4('0x43')]();}function handleStop(){logger['info'](_0xf4f4('0x54'));stopped=!![];}function handleUncaughtException(_0x5f0edd){logger[_0xf4f4('0x55')](_0x5f0edd[_0xf4f4('0x56')]);process[_0xf4f4('0x57')](0x1);}function handleError(_0xec8e34,_0x538456){stats['errors'][_0xf4f4('0x17')]({'name':_0x538456['code'],'message':_0x538456[_0xf4f4('0x56')],'row':_0xec8e34});}function handleQuery(_0x9e0760){logger[_0xf4f4('0x58')](_0x9e0760);return db[_0xf4f4('0x59')]['query'](_0x9e0760)[_0xf4f4('0x5a')](function(_0x562553){results[_0xf4f4('0x17')](_0x562553);})['catch'](function(_0x4c57bf){logger['error'](_0x4c57bf['message']);});}function updateTzCampaigns(_0x2d9c7c){return new Promise(function(_0x10c41d,_0x307ef1){var _0x4d3877=squel[_0xf4f4('0xe')]()[_0xf4f4('0x35')]([_0xf4f4('0x5b'),_0xf4f4('0x5c')])[_0xf4f4('0x11')](_0xf4f4('0x5d'))[_0xf4f4('0x14')](_0xf4f4('0x5e'),null,_0xf4f4('0x5f'))[_0xf4f4('0x13')](_0xf4f4('0x60')+_0x2d9c7c);db[_0xf4f4('0x59')][_0xf4f4('0x61')](_0x4d3877['toString']())[_0xf4f4('0x5a')](function(_0x2289bf){var _0x432d8c=[];for(var _0x2d0a92=0x0;_0x2d0a92<_0x2289bf[_0xf4f4('0x1a')];_0x2d0a92++){_0x432d8c[_0xf4f4('0x17')](getTimezoneData(_0x2289bf[_0x2d0a92],tmp_campaigns));}BPromise['all'](_0x432d8c)['then'](function(){_0x10c41d({'val':0x1});});})['catch'](function(_0xcbce4a){logger[_0xf4f4('0x55')](_0xcbce4a['message']);_0x10c41d({'val':0x0});});});}function updateTzVoiceQueues(_0x289d8b){return new Promise(function(_0x5d774b,_0x16b8b7){var _0x36f728=squel[_0xf4f4('0xe')]()[_0xf4f4('0x35')]([_0xf4f4('0x62'),_0xf4f4('0x63')])[_0xf4f4('0x11')](_0xf4f4('0x64'))[_0xf4f4('0x14')]('voice_queues_has_cm_lists',null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0xf4f4('0x13')](_0xf4f4('0x65')+_0x289d8b);db[_0xf4f4('0x59')][_0xf4f4('0x61')](_0x36f728[_0xf4f4('0x43')]())[_0xf4f4('0x5a')](function(_0x3dea02){var _0x5b2434=[];for(var _0x182a04=0x0;_0x182a04<_0x3dea02['length'];_0x182a04++){_0x5b2434[_0xf4f4('0x17')](getTimezoneData(_0x3dea02[_0x182a04],tmp_voice_queues));}BPromise[_0xf4f4('0x18')](_0x5b2434)[_0xf4f4('0x16')](function(){_0x5d774b({'val':0x1});});})['catch'](function(_0xb035a1){logger[_0xf4f4('0x55')](_0xb035a1[_0xf4f4('0x56')]);_0x5d774b({'val':0x0});});});}function getTimezoneData(_0x5be2b6,_0x53c5c2){return new Promise(function(_0x232e4e,_0x57b3b5){var _0x2c02c6=shared[_0xf4f4('0x66')];var _0xcb9df7=_0x2c02c6[_0x5be2b6[_0xf4f4('0x67')]];if(_[_0xf4f4('0x1b')](_0xcb9df7)){_0x232e4e({'ret':0x1});}else{var _0x2d1ce7=_0xcb9df7[_0xf4f4('0x68')];var _0x273a0f=squel[_0xf4f4('0x3d')]()[_0xf4f4('0x47')](_0x53c5c2)[_0xf4f4('0x69')]('id',_0x5be2b6['id'])[_0xf4f4('0x69')](_0xf4f4('0x6a'),_0x2d1ce7)[_0xf4f4('0x69')](_0xf4f4('0x67'),_0x5be2b6['dialTimezone'])[_0xf4f4('0x43')]();return db[_0xf4f4('0x59')][_0xf4f4('0x61')](_0x273a0f)[_0xf4f4('0x5a')](function(_0x1d7a80){_0x232e4e({'ret':0x1});})['catch'](function(_0x5c26dc){logger[_0xf4f4('0x55')](_0x5c26dc[_0xf4f4('0x56')]);_0x57b3b5({'ret':0x1});});}});}function handleTZQuery(_0x1fc06a){logger[_0xf4f4('0x58')](_0x1fc06a);return db[_0xf4f4('0x59')][_0xf4f4('0x61')](_0x1fc06a)[_0xf4f4('0x5a')](function(_0x19facf){})['catch'](function(_0x4f5e6b){logger[_0xf4f4('0x55')](_0x4f5e6b['message']);});}function main(_0x260a1e,_0x4c96ee,_0x112919,_0x4e55c4){logger[_0xf4f4('0x58')](_0xf4f4('0x6b'),_0x260a1e,JSON['stringify'](_0x4c96ee));process['send'](_0xf4f4('0x6c'));var _0x34d081=_0x4c96ee[_0xf4f4('0x6d')];var _0x370777=_[_0xf4f4('0x6e')](_0x34d081);var _0x509c95=_0x4c96ee[_0xf4f4('0x6f')];var _0x1d1723=path[_0xf4f4('0x14')](config[_0xf4f4('0x70')],_0xf4f4('0x71'),_0x509c95+_0xf4f4('0x72'));hasTZ=_[_0xf4f4('0x73')](_0x34d081)[_0xf4f4('0x74')]('dialTimezone');var _0x7b57d7=_[_0xf4f4('0x73')](_0x34d081)[_0xf4f4('0x14')]();logger[_0xf4f4('0x58')](_0xf4f4('0x75'),_0x7b57d7);db[_0xf4f4('0x76')]['findAll']({'raw':!![],'attributes':['id',_0xf4f4('0x77')]})[_0xf4f4('0x16')](function(_0x17f560){for(var _0xc50c35=0x0;_0xc50c35<_0x17f560[_0xf4f4('0x1a')];_0xc50c35++){if(_0x17f560[_0xc50c35][_0xf4f4('0x77')]in _0x34d081){contactItemTypes[_0xf4f4('0x17')](_0x17f560[_0xc50c35]);delete _0x370777[_0x17f560[_0xc50c35]['name']];hasAdditionalPhones=!![];}for(var _0x142e45 in _0x34d081){if(_0x17f560[_0xc50c35][_0xf4f4('0x77')]+_0xf4f4('0x78')===_0x142e45){phoneDescriptions[_0xf4f4('0x17')]({'itemTypeId':_0x17f560[_0xc50c35]['id'],'description':_0x142e45});delete _0x370777[_0x142e45];}}}if(hasAdditionalPhones)_0x370777[_0xf4f4('0x79')]='';var _0x55f51d=_[_0xf4f4('0x73')](_0x370777)[_0xf4f4('0x14')]();logger[_0xf4f4('0x58')](_0xf4f4('0x75'),_0x55f51d);fs['writeFileSync'](_0x1d1723,_0x55f51d+'\x0a');Papa['parse'](fs[_0xf4f4('0x7a')](_0x260a1e),{'header':!![],'skipEmptyLines':!![],'step':function(_0x53a27c,_0x2d40b4){try{for(var _0x13c85d=0x0,_0x27351d=[];_0x13c85d<_0x53a27c[_0xf4f4('0x7b')]['length'];_0x13c85d++){stats['rows']+=0x1;if(_0x53a27c[_0xf4f4('0x7c')][_0x13c85d]){handleError(_0x53a27c[_0xf4f4('0x7b')][_0x13c85d],_0x53a27c[_0xf4f4('0x7c')][_0x13c85d]);}else{var _0x1f6feb=[];var _0x219d51=[];var _0x19fa7c={};for(var _0x47d67b in _0x34d081){let _0x554ad4=contactItemTypes[_0xf4f4('0x7d')](_0x4ecfdb=>_0x4ecfdb[_0xf4f4('0x77')]===_0x47d67b);let _0x567584=contactItemTypes[_0xf4f4('0x7d')](_0x122e79=>_0x122e79[_0xf4f4('0x77')]+'_description'===_0x47d67b);if(_[_0xf4f4('0x1b')](_0x554ad4)&&_[_0xf4f4('0x1b')](_0x567584)){if(_0x34d081['hasOwnProperty'](_0x47d67b)){if(_0x53a27c[_0xf4f4('0x7b')][_0x13c85d][_0x34d081[_0x47d67b]]){var _0x3be4a6=_[_0xf4f4('0x7e')](_0x53a27c[_0xf4f4('0x7b')][_0x13c85d][_0x34d081[_0x47d67b]][_0xf4f4('0x7f')](/"/g,'\x27'));switch(_0x47d67b){case _0xf4f4('0x2d'):var _0x28b15b=moment(_0x3be4a6,_0xf4f4('0xc'),!![]);if(_0x28b15b['isValid']()){_0x27351d[_0xf4f4('0x17')]('\x22'+_0x3be4a6+'\x22');}else{_0x1f6feb[_0xf4f4('0x17')](_0xf4f4('0x80'));}break;case _0xf4f4('0x32'):var _0x226bf5=parseInt(_0x3be4a6);_0x3be4a6=_[_0xf4f4('0x81')](_0x226bf5)||_0x226bf5<0x0||_0x226bf5>0x4?_0x4e55c4?0x3:0x2:_0x226bf5;_0x27351d[_0xf4f4('0x17')]('\x22'+_0x3be4a6+'\x22');break;case'UserId':var _0x1c3141=parseInt(_0x3be4a6);if(_[_0xf4f4('0x82')](_0x1c3141)&&_[_0xf4f4('0x74')](_0x112919,_0x1c3141)){_0x27351d[_0xf4f4('0x17')]('\x22'+_0x1c3141+'\x22');}else{_0x1f6feb[_0xf4f4('0x17')](_0xf4f4('0x83'));}break;case'email':if(isEmail(_0x3be4a6)){_0x27351d[_0xf4f4('0x17')]('\x22'+_0x3be4a6+'\x22');}else{_0x1f6feb[_0xf4f4('0x17')](_0xf4f4('0x84'));}break;case _0xf4f4('0x85'):var _0x4a0489=moment(_0x3be4a6,_0xf4f4('0x86'),!![]);if(_0x4a0489[_0xf4f4('0x87')]()){_0x27351d[_0xf4f4('0x17')]('\x22'+_0x3be4a6+'\x22');}else{_0x1f6feb[_0xf4f4('0x17')](_0xf4f4('0x88'));}break;case'dialTimezone':var _0x1d9277=shared[_0xf4f4('0x66')];var _0x1acef0=_0x1d9277[_0x3be4a6];if(!_['isNil'](_0x1acef0)){var _0x1adffe=_0x1acef0[_0xf4f4('0x68')];_0x27351d[_0xf4f4('0x17')]('\x22'+_0x3be4a6+'\x22');_0x27351d[_0xf4f4('0x17')]('\x22'+_0x1adffe+'\x22');}break;default:_0x27351d[_0xf4f4('0x17')]('\x22'+_0x3be4a6+'\x22');}}else{switch(_0x47d67b){case _0xf4f4('0x89'):case _0xf4f4('0x10'):_0x1f6feb['push'](_0x47d67b+_0xf4f4('0x8a'));break;default:_0x27351d[_0xf4f4('0x17')]('\x22\x22');}}}}else{var _0x20c942='';if(!_[_0xf4f4('0x1b')](_0x554ad4)){if(!_0x19fa7c[_0xf4f4('0x8b')](_0x554ad4['id'])){if(!_[_0xf4f4('0x1b')](_0x53a27c['data'][_0x13c85d][_0x34d081[_0x47d67b]])){var _0x3be4a6=_['trim'](_0x53a27c[_0xf4f4('0x7b')][_0x13c85d][_0x34d081[_0x47d67b]][_0xf4f4('0x7f')](/"/g,'\x27'));var _0x4a1c52=phoneDescriptions[_0xf4f4('0x7d')](_0x1ac941=>_0x1ac941[_0xf4f4('0x8c')]===_0x554ad4['id']);if(!_[_0xf4f4('0x1b')](_0x4a1c52)){var _0x416dbe=_[_0xf4f4('0x7e')](_0x53a27c['data'][_0x13c85d][_0x34d081[_0x4a1c52[_0xf4f4('0x8d')]]]['replace'](/"/g,'\x27'));if(!_[_0xf4f4('0x1b')](_0x416dbe))_0x3be4a6=_0x3be4a6+'§'+_0x416dbe;}if(_0x20c942=='')_0x20c942=_0x3be4a6;else _0x20c942+='|'+_0x3be4a6;}_0x219d51[_0xf4f4('0x17')](_0x554ad4['id']+':'+_0x20c942);_0x19fa7c[_0x554ad4['id']]=0x1;}}}}if(hasAdditionalPhones){_0x27351d[_0xf4f4('0x17')]('\x22'+_0x219d51[_0xf4f4('0x14')](';')+'\x22');}if(_0x1f6feb[_0xf4f4('0x1a')]){handleError(_0x53a27c[_0xf4f4('0x7b')][_0x13c85d],{'code':_0xf4f4('0x8e'),'message':_0x1f6feb['join']()});}else{fs[_0xf4f4('0x8f')](_0x1d1723,_0x27351d[_0xf4f4('0x14')]()+'\x0a');}_0x27351d=[];}if(!(stats[_0xf4f4('0x90')]%0xc8)){socket[_0xf4f4('0x91')]('contact:import:'+_0x509c95,stats);stats[_0xf4f4('0x7c')]=[];}}if(stopped){logger['info']('Abort\x20parser');_0x2d40b4[_0xf4f4('0x92')]();}}catch(_0x397f8a){handleError(_0x53a27c[_0xf4f4('0x7b')][_0x13c85d],{'code':_0xf4f4('0x93'),'message':_0x397f8a['message']});logger['error'](_0xf4f4('0x94'),_0x397f8a['message']);}},'complete':function(){try{var _0x21f509=[];var _0x96778e=[];var _0x2f9d42=_0xf4f4('0x36');if(_0x4c96ee[_0xf4f4('0x95')]&&_0x4c96ee[_0xf4f4('0x95')]['length']){_0x2f9d42=_0xf4f4('0x96')+_0x509c95;_0x21f509[_0xf4f4('0x17')](_0xf4f4('0x97')+_0x2f9d42+_0xf4f4('0x98'));}tmp_campaigns=_0xf4f4('0x99')+_0x509c95;tmp_voice_queues=_0xf4f4('0x9a')+_0x509c95;_0x96778e[_0xf4f4('0x17')](_0xf4f4('0x97')+tmp_campaigns+_0xf4f4('0x9b'));_0x96778e[_0xf4f4('0x17')](_0xf4f4('0x97')+tmp_voice_queues+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');BPromise['each'](_0x96778e,handleTZQuery)[_0xf4f4('0x16')](function(_0xc85013){updateTzCampaigns(_0x4c96ee[_0xf4f4('0x2f')])[_0xf4f4('0x16')](function(_0x34e85f){updateTzVoiceQueues(_0x4c96ee[_0xf4f4('0x2f')])['then'](function(_0x36ee3d){if(hasTZ)_0x55f51d=_0x55f51d[_0xf4f4('0x7f')](_0xf4f4('0x67'),_0xf4f4('0x9c'));var _0x59e899=util[_0xf4f4('0xd')](_0xf4f4('0x9d'),_0x1d1723,_0x2f9d42,_0x55f51d,_0x4c96ee['ListId'],_0x4c96ee[_0xf4f4('0x4f')]||null,NOW,NOW);if(_['isNil'](_0x34d081['scheduledat'])){_0x59e899+=',\x20scheduledAt\x20=\x20NOW()';}_0x21f509[_0xf4f4('0x17')](_0x59e899);if(_0x4c96ee['duplicates']&&_0x4c96ee[_0xf4f4('0x95')][_0xf4f4('0x1a')]){_0x21f509[_0xf4f4('0x17')](insertCmContact(_0x4c96ee[_0xf4f4('0x2f')],_0x2f9d42,_0x4c96ee[_0xf4f4('0x95')],_0x34d081));_0x21f509[_0xf4f4('0x17')](_0xf4f4('0x9e')+_0x2f9d42+';');}BPromise[_0xf4f4('0x9f')](_0x21f509,handleQuery)[_0xf4f4('0x16')](function(_0x48e53e){BPromise[_0xf4f4('0x18')]([handleAdditionalPhones()])[_0xf4f4('0x16')](function(){_0x21f509=[];for(var _0x557ba1=0x0;_0x557ba1<promisesAdditionalPhones[_0xf4f4('0x1a')];_0x557ba1++){if(promisesAdditionalPhones[_0x557ba1]['phone']!='§'){_0x21f509[_0xf4f4('0x17')](createAdditionalPhone(promisesAdditionalPhones[_0x557ba1][_0xf4f4('0xa0')],promisesAdditionalPhones[_0x557ba1]['contactTypeId'],promisesAdditionalPhones[_0x557ba1][_0xf4f4('0x10')],promisesAdditionalPhones[_0x557ba1][_0xf4f4('0xa1')]));}}BPromise['all'](_0x21f509)['then'](function(){_0x21f509=[];if(hasTZ){_0x21f509['push'](insertTzCmHopper(_0x4c96ee[_0xf4f4('0x2f')],'voice_queues_has_cm_lists',_0xf4f4('0x64'),'VoiceQueueId',_0x4e55c4,tmp_voice_queues));_0x21f509[_0xf4f4('0x17')](insertTzCmHopperBlack(_0x4c96ee['ListId'],_0xf4f4('0xa2'),_0xf4f4('0x64'),'VoiceQueueId'));_0x21f509['push'](insertTzCmHopper(_0x4c96ee[_0xf4f4('0x2f')],'campaigns_has_cm_lists',_0xf4f4('0x5d'),_0xf4f4('0xa3'),_0x4e55c4,tmp_campaigns));_0x21f509[_0xf4f4('0x17')](insertTzCmHopperBlack(_0x4c96ee['ListId'],_0xf4f4('0xa4'),'campaigns',_0xf4f4('0xa3')));_0x21f509[_0xf4f4('0x17')](insertCmHopperAdditionalPhones(_0x4c96ee['ListId']));}else{_0x21f509['push'](insertCmHopper(_0x4c96ee['ListId'],_0xf4f4('0xa5'),'voice_queues',_0xf4f4('0xa6'),_0x4e55c4));_0x21f509['push'](insertCmHopperBlack(_0x4c96ee[_0xf4f4('0x2f')],_0xf4f4('0xa2'),_0xf4f4('0x64'),_0xf4f4('0xa6')));_0x21f509[_0xf4f4('0x17')](insertCmHopper(_0x4c96ee['ListId'],_0xf4f4('0x5e'),_0xf4f4('0x5d'),_0xf4f4('0xa3'),_0x4e55c4));_0x21f509[_0xf4f4('0x17')](insertCmHopperBlack(_0x4c96ee[_0xf4f4('0x2f')],'campaigns_has_cm_blacklists',_0xf4f4('0x5d'),_0xf4f4('0xa3')));_0x21f509[_0xf4f4('0x17')](insertCmHopperAdditionalPhones(_0x4c96ee['ListId']));}_0x21f509[_0xf4f4('0x17')](_0xf4f4('0x9e')+tmp_campaigns+';');_0x21f509[_0xf4f4('0x17')](_0xf4f4('0x9e')+tmp_voice_queues+';');BPromise[_0xf4f4('0x9f')](_0x21f509,handleQuery)[_0xf4f4('0x16')](function(_0x18cd40){stats[_0xf4f4('0xa7')]=!![];stats[_0xf4f4('0xa8')]=_0x4c96ee['duplicates']&&_0x4c96ee['duplicates'][_0xf4f4('0x1a')]?results[0x2][_0xf4f4('0xa8')]:results[0x0]['affectedRows'];socket[_0xf4f4('0x91')](_0xf4f4('0xa9')+_0x509c95,stats);fs[_0xf4f4('0xaa')](_0x260a1e);fs[_0xf4f4('0xaa')](_0x1d1723);process[_0xf4f4('0x57')](0x0);})[_0xf4f4('0xab')](function(_0x117da7){logger[_0xf4f4('0x55')](_0x117da7['message']);process[_0xf4f4('0x57')](0x1);});});});})['catch'](function(_0x36315f){logger[_0xf4f4('0x55')](_0x36315f[_0xf4f4('0x56')]);process[_0xf4f4('0x57')](0x1);});});});});}catch(_0xb0f706){logger['error'](_0xf4f4('0xac'),_0xb0f706['message']);process[_0xf4f4('0x57')](0x1);}},'error':function(_0x3b654e,_0x551df6,_0x3f10cb,_0x15210c){throw new Error(_0x15210c);}});});}function validate(){if(process['argv']&&process[_0xf4f4('0xad')][_0xf4f4('0x1a')]<0x4){throw new Error(_0xf4f4('0xae'));}var _0x250f91=path[_0xf4f4('0x14')](config[_0xf4f4('0x70')],_0xf4f4('0x71'),process[_0xf4f4('0xad')][0x2]);if(!fs[_0xf4f4('0xaf')](_0x250f91)){throw new Error(_0xf4f4('0xb0'));}var _0x2794b8={};try{_0x2794b8=JSON[_0xf4f4('0xb1')](process['argv'][0x3]);if(!_0x2794b8[_0xf4f4('0x6d')]){throw new Error(_0xf4f4('0xb2'));}if(!_0x2794b8[_0xf4f4('0x6d')][_0xf4f4('0x10')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x2794b8[_0xf4f4('0x6d')]['firstName']){throw new Error(_0xf4f4('0xb3'));}var _0x1f9cd8=0x0;if(_0x2794b8['binding']['UserId']){_0x1f9cd8=0x1;}if(!_0x2794b8[_0xf4f4('0x2f')]){throw new Error(_0xf4f4('0xb4'));}}catch(_0xb4d8ea){throw new Error(_0xf4f4('0xb5'));}var _0x3a25e8=[];try{_0x3a25e8=_['map'](JSON[_0xf4f4('0xb1')](process[_0xf4f4('0xad')][0x4]),'id');}catch(_0x11ddf9){logger[_0xf4f4('0x58')]('No\x20agent\x20available');}main(_0x250f91,_0x2794b8,_0x3a25e8,_0x1f9cd8);}validate();process['on'](_0xf4f4('0xb6'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 19eb441..6302326 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7969=['defaults','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','format','test','select','phone','join','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','isNil','AdditionalPhones','push','all','then','catch','error','message','split','length','filter','findOne','CmContactHasItem','update','updated','create','PHONE','inserted','CmHopper','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','fields','from','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.phone','cm_hopper_black','fromQuery','cm_contacts.createdAt\x20=\x20?','field','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','CmHopperId','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','id\x20IN\x20?','min_id','group','info','exit','errors','code','stringify','send','binding','root','server/files/tmp','.csv','body','findAll','name','_description','header','writeFileSync','parse','createReadStream','data','rows','find','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','hasOwnProperty','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','abort','SystemError','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','arguments\x20<filename>\x20<parameters>\x20<agents>','argv','existsSync','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','papaparse','util','bluebird','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x7969,0x1c2));var _0x9796=function(_0x10bb5d,_0x56eae6){_0x10bb5d=_0x10bb5d-0x0;var _0x4af8d6=_0x7969[_0x10bb5d];return _0x4af8d6;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0x9796('0x0'));var util=require(_0x9796('0x1'));var BPromise=require(_0x9796('0x2'));var moment=require('moment');var squel=require('squel');var Redis=require(_0x9796('0x3'));var db=require(_0x9796('0x4'))['db'];var config=require(_0x9796('0x5'));var logger=require(_0x9796('0x6'))(_0x9796('0x7'));config[_0x9796('0x8')]=_[_0x9796('0x9')](config[_0x9796('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x9796('0xa'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()['format'](_0x9796('0xb'));var tempTableName='cm_contacts_temp_'+moment()[_0x9796('0xc')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x677ed9){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))*$/[_0x9796('0xd')](_0x677ed9);}function selectNotIn(_0x19ac82,_0xc69b32,_0xc8e1bb,_0x1da06c,_0xb26632){return squel[_0x9796('0xe')]()['field'](_0x9796('0xf'))['from'](_0x1da06c)[_0x9796('0x10')](_0xc69b32,null,_0xc69b32+'.id\x20=\x20'+_0x1da06c+'.'+_0xc8e1bb)[_0x9796('0x11')](_0x1da06c+'.'+_0xc8e1bb+_0x9796('0x12')+_0x19ac82+'.'+_0xc8e1bb)[_0x9796('0x11')](_0xc69b32+_0x9796('0x13')+_0xb26632[_0x9796('0x10')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x2d3874,_0x413795){promisesAdditionalPhones=[];promisesContact=[];return db[_0x9796('0x14')][_0x9796('0x15')](_0x9796('0x16')+tempTableName)[_0x9796('0x17')](function(_0xf2fd9a){if(_0xf2fd9a!==null){var _0x4d894d=[];for(var _0x49d3b3=0x0;_0x49d3b3<_0xf2fd9a['length'];_0x49d3b3++){var _0x312b5f=_0xf2fd9a[_0x49d3b3];if(!_[_0x9796('0x18')](_0x312b5f[_0x9796('0xf')])){if(!_[_0x9796('0x18')](_0x312b5f[_0x9796('0x19')]))_0x4d894d[_0x9796('0x1a')](insertAdditionalPhones(_0x312b5f));promisesContact[_0x9796('0x1a')]({'contact':_0x312b5f});}}}Promise[_0x9796('0x1b')](_0x4d894d)[_0x9796('0x1c')](function(){_0x2d3874({'val':0x1});});})[_0x9796('0x1d')](function(_0x1e33c8){logger[_0x9796('0x1e')](_0x1e33c8[_0x9796('0x1f')]);});});}function insertAdditionalPhones(_0x415f4b){return new Promise(function(_0xa3c110,_0x8bda7b){var _0x4d4c49=_0x415f4b[_0x9796('0x19')];if(_[_0x9796('0x18')](_0x4d4c49))_0x8bda7b({'val':0x0});else{var _0x247098=_0x4d4c49[_0x9796('0x20')](';');var _0x554613=[];orderBy=0x0;for(var _0x50b89d=0x0;_0x50b89d<_0x247098[_0x9796('0x21')];_0x50b89d++){_0x554613[_0x9796('0x1a')](splitAdditionalPhone(_0x415f4b['id'],_0x247098[_0x50b89d]));}Promise['all'](_0x554613)[_0x9796('0x1c')](function(){_0xa3c110({'val':_0x247098[_0x9796('0x21')]});});}});}function splitAdditionalPhone(_0x1c8749,_0x23615f){return new Promise(function(_0xe2d640,_0x1600be){var _0x1a2e51=_0x23615f['split'](':');var _0x1de592=_0x1a2e51[0x0];var _0x5ef55f=_0x1a2e51[0x1];if(_0x5ef55f!==''){var _0x272d97=_0x5ef55f[_0x9796('0x20')]('|');var _0x358bbe=[];for(var _0x32e917=0x0;_0x32e917<_0x272d97[_0x9796('0x21')];_0x32e917++){if(_0x272d97[_0x32e917]!==''){var _0x1009e9=_[_0x9796('0x22')](promisesAdditionalPhones,{'contactId':_0x1c8749,'phone':_0x272d97[_0x32e917]});if(_0x1009e9[_0x9796('0x21')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x1c8749,'contactTypeId':_0x1de592,'phone':_0x272d97[_0x32e917],'orderBy':orderBy});}}}_0xe2d640({'ok':0x1});}else _0xe2d640({'res':0x0});});}function createAdditionalPhone(_0x1e2984,_0x53ba4c,_0x5e268d,_0x2575b7){var _0x36cc6f='';var _0x3e9d62='';var _0x5d5e53=_0x5e268d[_0x9796('0x20')]('§');_0x36cc6f=_0x5d5e53[0x0];if(_0x5d5e53['length']==0x2)_0x3e9d62=_0x5d5e53[0x1];return new Promise(function(_0x20e5fd,_0x156b26){return db['CmContactHasItem'][_0x9796('0x23')]({'where':{'CmContactId':_0x1e2984,'item':_0x36cc6f}})[_0x9796('0x1c')](function(_0x336e61){if(_0x336e61){return db[_0x9796('0x24')][_0x9796('0x25')]({'ItemTypeId':_0x53ba4c,'description':_0x3e9d62,'OrderBy':_0x2575b7},{'where':{'CmContactId':_0x1e2984,'item':_0x36cc6f}})['then'](function(_0x5a7507){_0x20e5fd({'res':_0x9796('0x26')});});}else{return db[_0x9796('0x24')][_0x9796('0x27')]({'CmContactId':_0x1e2984,'item':_0x36cc6f,'ItemTypeId':_0x53ba4c,'description':_0x3e9d62,'OrderBy':_0x2575b7,'ItemClass':_0x9796('0x28')})[_0x9796('0x1c')](function(_0x119f7c){_0x20e5fd({'res':_0x9796('0x29')});});}});});}function updateContact(_0x406e09){return new Promise(function(_0x3d455c,_0x1c86bf){var _0x2ca645=_0x406e09['id'];delete _0x406e09['id'];return db['CmContact'][_0x9796('0x25')](_0x406e09,{'where':{'id':_0x2ca645}})[_0x9796('0x1c')](function(_0x34fec0){updatedRows+=0x1;return db[_0x9796('0x2a')][_0x9796('0x25')]({'phone':_0x406e09[_0x9796('0xf')]},{'where':{'ContactId':_0x2ca645}})[_0x9796('0x1c')](function(_0x2e968b){_0x3d455c({'ret':'OK'});});});});}function insertCmHopper(_0x1cdd27,_0x5ea1bb,_0x3b5b73,_0x1677f5,_0x3e1844){var _0x4e24b5=['cm_contacts.phone','cm_contacts.scheduledat',_0x9796('0x2b'),_0x9796('0x2c'),_0x5ea1bb+'.'+_0x1677f5,_0x9796('0x2d'),_0x9796('0x2e'),_0x9796('0x2f'),_0x9796('0x30'),'\x22'+_0x3e1844+'\x22'];return squel[_0x9796('0x31')]()[_0x9796('0x32')](_0x9796('0x33'))['fromQuery']([_0x9796('0xf'),_0x9796('0x34'),_0x9796('0x35'),_0x9796('0x36'),_0x1677f5,_0x9796('0x37'),_0x9796('0x38'),_0x9796('0x39'),_0x9796('0x3a'),'recallme'],squel[_0x9796('0xe')]()[_0x9796('0x3b')](_0x4e24b5)[_0x9796('0x3c')](_0x5ea1bb)[_0x9796('0x10')](_0x9796('0x3d'),null,'cm_contacts.ListId\x20=\x20'+_0x5ea1bb+_0x9796('0x3e'))[_0x9796('0x10')](_0x3b5b73,null,_0x3b5b73+'.id\x20=\x20'+_0x5ea1bb+'.'+_0x1677f5)[_0x9796('0x11')](_0x5ea1bb+_0x9796('0x3f'),_0x1cdd27)[_0x9796('0x11')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x9796('0x40'),selectNotIn(_0x5ea1bb,_0x3b5b73,_0x1677f5,_0x9796('0x33'),[_0x9796('0x41'),_0x9796('0x42')]))[_0x9796('0x11')](_0x9796('0x40'),selectNotIn(_0x5ea1bb,_0x3b5b73,_0x1677f5,'cm_hopper',[_0x9796('0x41')])))[_0x9796('0x43')]();}function insertCmHopperBlack(_0x5a9f8d,_0x5668f1,_0x295c2f,_0x54d3c6){var _0x139f95=[_0x9796('0x44'),_0x9796('0x2b'),_0x9796('0x2c'),_0x5668f1+'.'+_0x54d3c6,_0x9796('0x2d'),_0x9796('0x2e')];return squel[_0x9796('0x31')]()['into'](_0x9796('0x45'))[_0x9796('0x46')]([_0x9796('0xf'),_0x9796('0x35'),'ListId',_0x54d3c6,_0x9796('0x37'),'updatedAt'],squel[_0x9796('0xe')]()[_0x9796('0x3b')](_0x139f95)[_0x9796('0x3c')](_0x5668f1)['join'](_0x9796('0x3d'),null,'cm_contacts.ListId\x20=\x20'+_0x5668f1+_0x9796('0x3e'))[_0x9796('0x10')](_0x295c2f,null,_0x295c2f+'.id\x20=\x20'+_0x5668f1+'.'+_0x54d3c6)['where'](_0x5668f1+_0x9796('0x3f'),_0x5a9f8d)[_0x9796('0x11')](_0x9796('0x47'),NOW)[_0x9796('0x11')](_0x9796('0x40'),squel[_0x9796('0xe')]()[_0x9796('0x48')]('phone')[_0x9796('0x3c')](_0x9796('0x45'))[_0x9796('0x11')]('ListId\x20=\x20?',_0x5a9f8d)['where'](_0x54d3c6+'\x20=\x20?',_0x5668f1+'.'+_0x54d3c6)))[_0x9796('0x43')]();}function insertCmHopperAdditionalPhones(_0x1a2c28){var _0x5ee1cc=[_0x9796('0x49'),_0x9796('0x4a'),'cm_contact_has_items.OrderBy',_0x9796('0x4b'),_0x9796('0x4c')];return squel[_0x9796('0x31')]()[_0x9796('0x32')]('cm_hopper_additional_phones')[_0x9796('0x46')]([_0x9796('0x4d'),_0x9796('0xf'),'OrderBy',_0x9796('0x37'),_0x9796('0x38')],squel[_0x9796('0xe')]()[_0x9796('0x3b')](_0x5ee1cc)['from']('cm_hopper')[_0x9796('0x10')]('cm_contacts',null,_0x9796('0x4e'))['join'](_0x9796('0x4f'),null,_0x9796('0x50'))[_0x9796('0x11')](_0x9796('0x51'),_0x1a2c28)[_0x9796('0x11')](_0x9796('0x47'),NOW))[_0x9796('0x43')]();}function insertCmContact(_0x5bad6d,_0x5425f7,_0x336250,_0x54437d){var _0x5a24d8=_[_0x9796('0x52')](_[_0x9796('0x53')](_0x54437d),['ListId',_0x9796('0x54'),_0x9796('0x37'),'updatedAt']);return squel['insert']()['into'](_0x9796('0x3d'))['fromQuery'](_0x5a24d8,squel[_0x9796('0xe')]()[_0x9796('0x3b')](_0x5a24d8)['from'](_0x5425f7)['where']('('+_0x336250['join'](',')+_0x9796('0x55'),squel[_0x9796('0xe')]()['fields'](_0x336250)[_0x9796('0x3c')](_0x9796('0x3d'))[_0x9796('0x11')](_0x9796('0x56'),_0x5bad6d))[_0x9796('0x11')](_0x9796('0x57'),squel[_0x9796('0xe')]()[_0x9796('0x48')]('MIN(id)',_0x9796('0x58'))['from'](_0x5425f7)[_0x9796('0x59')](_0x336250[_0x9796('0x10')](','))))[_0x9796('0x43')]();}function handleStop(){logger[_0x9796('0x5a')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x3100a4){logger[_0x9796('0x1e')](_0x3100a4[_0x9796('0x1f')]);process[_0x9796('0x5b')](0x1);}function handleError(_0x155d37,_0x15977a){stats[_0x9796('0x5c')]['push']({'name':_0x15977a[_0x9796('0x5d')],'message':_0x15977a[_0x9796('0x1f')],'row':_0x155d37});}function handleQuery(_0x6f9e86){logger[_0x9796('0x5a')](_0x6f9e86);return db[_0x9796('0x14')][_0x9796('0x15')](_0x6f9e86)[_0x9796('0x17')](function(_0x1cbb28){results[_0x9796('0x1a')](_0x1cbb28);})[_0x9796('0x1d')](function(_0x4bf599){logger[_0x9796('0x1e')](_0x4bf599[_0x9796('0x1f')]);});}function main(_0x44b93f,_0x4cb4f6,_0x48a684,_0x34a2ca){logger[_0x9796('0x5a')]('main',_0x44b93f,JSON[_0x9796('0x5e')](_0x4cb4f6));process[_0x9796('0x5f')]('start');var _0x22142e=_0x4cb4f6[_0x9796('0x60')];var _0x17408a=_['clone'](_0x22142e);var _0x4f672d=_0x4cb4f6['socket_timestamp'];var _0x1b96c5=path[_0x9796('0x10')](config[_0x9796('0x61')],_0x9796('0x62'),_0x4f672d+_0x9796('0x63'));logger[_0x9796('0x5a')](_0x9796('0x64'),_0x4cb4f6);db['ContactItemType'][_0x9796('0x65')]({'raw':!![],'attributes':['id','name']})[_0x9796('0x1c')](function(_0x2a05f7){for(var _0xce7faf=0x0;_0xce7faf<_0x2a05f7[_0x9796('0x21')];_0xce7faf++){if(_0x2a05f7[_0xce7faf][_0x9796('0x66')]in _0x22142e){contactItemTypes[_0x9796('0x1a')](_0x2a05f7[_0xce7faf]);delete _0x17408a[_0x2a05f7[_0xce7faf][_0x9796('0x66')]];hasAdditionalPhones=!![];}for(var _0xb3fe78 in _0x22142e){if(_0x2a05f7[_0xce7faf]['name']+_0x9796('0x67')===_0xb3fe78){phoneDescriptions['push']({'itemTypeId':_0x2a05f7[_0xce7faf]['id'],'description':_0xb3fe78});delete _0x17408a[_0xb3fe78];}}}if(hasAdditionalPhones)_0x17408a[_0x9796('0x19')]='';var _0x2d82e7=_['keys'](_0x17408a)[_0x9796('0x10')]();logger[_0x9796('0x5a')](_0x9796('0x68'),_0x2d82e7);fs[_0x9796('0x69')](_0x1b96c5,_0x2d82e7+'\x0a');Papa[_0x9796('0x6a')](fs[_0x9796('0x6b')](_0x44b93f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x5e7a21,_0x2dd43a){try{for(var _0x5703dc=0x0,_0x13caa7=[];_0x5703dc<_0x5e7a21[_0x9796('0x6c')][_0x9796('0x21')];_0x5703dc++){stats[_0x9796('0x6d')]+=0x1;if(_0x5e7a21[_0x9796('0x5c')][_0x5703dc]){handleError(_0x5e7a21[_0x9796('0x6c')][_0x5703dc],_0x5e7a21[_0x9796('0x5c')][_0x5703dc]);}else{var _0x221731=[];var _0x11fc8b=[];var _0x96eacb={};for(var _0x371d51 in _0x22142e){let _0x3a64e=contactItemTypes[_0x9796('0x6e')](_0x542c7a=>_0x542c7a[_0x9796('0x66')]===_0x371d51);let _0xd77a26=contactItemTypes['find'](_0x429f55=>_0x429f55['name']+_0x9796('0x67')===_0x371d51);if(_['isNil'](_0x3a64e)&&_[_0x9796('0x18')](_0xd77a26)){if(_0x22142e['hasOwnProperty'](_0x371d51)){if(_0x5e7a21['data'][_0x5703dc][_0x22142e[_0x371d51]]){var _0x1c5e1d=_[_0x9796('0x6f')](_0x5e7a21[_0x9796('0x6c')][_0x5703dc][_0x22142e[_0x371d51]][_0x9796('0x70')](/"/g,'\x27'));switch(_0x371d51){case'scheduledat':var _0x1321a5=moment(_0x1c5e1d,_0x9796('0xb'),!![]);if(_0x1321a5[_0x9796('0x71')]()){_0x13caa7['push']('\x22'+_0x1c5e1d+'\x22');}else{_0x221731[_0x9796('0x1a')](_0x9796('0x72'));}break;case _0x9796('0x39'):var _0x51b15b=parseInt(_0x1c5e1d);_0x1c5e1d=_['isNaN'](_0x51b15b)||_0x51b15b<0x0||_0x51b15b>0x4?_0x34a2ca?0x3:0x2:_0x51b15b;_0x13caa7['push']('\x22'+_0x1c5e1d+'\x22');break;case _0x9796('0x3a'):var _0x150133=parseInt(_0x1c5e1d);if(_[_0x9796('0x73')](_0x150133)&&_[_0x9796('0x74')](_0x48a684,_0x150133)){_0x13caa7[_0x9796('0x1a')]('\x22'+_0x150133+'\x22');}else{_0x221731[_0x9796('0x1a')](_0x9796('0x75'));}break;case _0x9796('0x76'):if(isEmail(_0x1c5e1d)){_0x13caa7['push']('\x22'+_0x1c5e1d+'\x22');}else{_0x221731[_0x9796('0x1a')](_0x9796('0x77'));}break;case _0x9796('0x78'):var _0x389d00=moment(_0x1c5e1d,_0x9796('0x79'),!![]);if(_0x389d00[_0x9796('0x71')]()){_0x13caa7['push']('\x22'+_0x1c5e1d+'\x22');}else{_0x221731['push'](_0x9796('0x7a'));}break;default:_0x13caa7[_0x9796('0x1a')]('\x22'+_0x1c5e1d+'\x22');}}else{switch(_0x371d51){case'firstName':case _0x9796('0xf'):_0x221731[_0x9796('0x1a')](_0x371d51+'\x20not\x20specified');break;default:_0x13caa7['push']('\x22\x22');}}}}else{var _0x192d71='';if(!_['isNil'](_0x3a64e)){if(!_0x96eacb[_0x9796('0x7b')](_0x3a64e['id'])){for(var _0xbe1943=0x0;_0xbe1943<_0x22142e[_0x371d51]['length'];_0xbe1943++){var _0x1c5e1d=_[_0x9796('0x6f')](_0x5e7a21[_0x9796('0x6c')][_0x5703dc][_0x22142e[_0x371d51][_0xbe1943]][_0x9796('0x70')](/"/g,'\x27'));var _0xb1375e=phoneDescriptions[_0x9796('0x6e')](_0x1f7073=>_0x1f7073[_0x9796('0x7c')]===_0x3a64e['id']);if(!_[_0x9796('0x18')](_0xb1375e)){var _0x5e4c1e=_['trim'](_0x5e7a21['data'][_0x5703dc][_0x22142e[_0xb1375e[_0x9796('0x7d')]][0x0]][_0x9796('0x70')](/"/g,'\x27'));if(!_[_0x9796('0x18')](_0x5e4c1e))_0x1c5e1d=_0x1c5e1d+'§'+_0x5e4c1e;}if(_0x192d71=='')_0x192d71=_0x1c5e1d;else _0x192d71+='|'+_0x1c5e1d;}_0x11fc8b[_0x9796('0x1a')](_0x3a64e['id']+':'+_0x192d71);_0x96eacb[_0x3a64e['id']]=0x1;}}}}if(hasAdditionalPhones){_0x13caa7['push']('\x22'+_0x11fc8b[_0x9796('0x10')](';')+'\x22');}if(_0x221731['length']){handleError(_0x5e7a21[_0x9796('0x6c')][_0x5703dc],{'code':_0x9796('0x7e'),'message':_0x221731[_0x9796('0x10')]()});}else{fs[_0x9796('0x7f')](_0x1b96c5,_0x13caa7['join']()+'\x0a');}_0x13caa7=[];}if(!(stats[_0x9796('0x6d')]%0xc8)){socket[_0x9796('0x80')](_0x9796('0x81')+_0x4f672d,stats);stats['errors']=[];}}if(stopped){logger['info']('Abort\x20parser');_0x2dd43a[_0x9796('0x82')]();}}catch(_0x26383b){handleError(_0x5e7a21[_0x9796('0x6c')][_0x5703dc],{'code':_0x9796('0x83'),'message':_0x26383b[_0x9796('0x1f')]});logger[_0x9796('0x1e')]('step',_0x26383b[_0x9796('0x1f')]);}},'complete':function(){try{var _0x5963c2=[];var _0x2b328a=tempTableName;_0x5963c2[_0x9796('0x1a')](_0x9796('0x84')+_0x2b328a+_0x9796('0x85'));logger['info'](_0x9796('0x86'),contactItemTypes[_0x9796('0x21')]);var _0x1e3d81=util[_0x9796('0xc')]('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x1b96c5,_0x2b328a,_0x2d82e7,_0x4cb4f6[_0x9796('0x36')],_0x4cb4f6[_0x9796('0x54')]||null,NOW,NOW);if(_['isNil'](_0x22142e[_0x9796('0x34')])){_0x1e3d81+=_0x9796('0x87');}_0x5963c2[_0x9796('0x1a')](_0x1e3d81);BPromise[_0x9796('0x88')](_0x5963c2,handleQuery)[_0x9796('0x1c')](function(_0x2b0213){BPromise['all']([handleAdditionalPhones()])[_0x9796('0x1c')](function(){_0x5963c2=[];for(var _0x48eb7b=0x0;_0x48eb7b<promisesContact[_0x9796('0x21')];_0x48eb7b++){_0x5963c2[_0x9796('0x1a')](updateContact(promisesContact[_0x48eb7b][_0x9796('0x89')]));}BPromise[_0x9796('0x1b')](_0x5963c2)[_0x9796('0x1c')](function(){_0x5963c2=[];for(var _0x519a89=0x0;_0x519a89<promisesAdditionalPhones[_0x9796('0x21')];_0x519a89++){_0x5963c2[_0x9796('0x1a')](createAdditionalPhone(promisesAdditionalPhones[_0x519a89][_0x9796('0x8a')],promisesAdditionalPhones[_0x519a89][_0x9796('0x8b')],promisesAdditionalPhones[_0x519a89]['phone'],promisesAdditionalPhones[_0x519a89][_0x9796('0x8c')]));}BPromise[_0x9796('0x1b')](_0x5963c2)[_0x9796('0x1c')](function(){_0x5963c2=[];_0x5963c2[_0x9796('0x1a')](insertCmHopperAdditionalPhones(_0x4cb4f6[_0x9796('0x36')]));_0x5963c2[_0x9796('0x1a')](_0x9796('0x8d')+_0x2b328a+';');BPromise[_0x9796('0x88')](_0x5963c2,handleQuery)[_0x9796('0x1c')](function(_0x425bb7){stats[_0x9796('0x8e')]=!![];stats[_0x9796('0x8f')]=updatedRows;socket[_0x9796('0x80')](_0x9796('0x81')+_0x4f672d,stats);fs[_0x9796('0x90')](_0x44b93f);fs['unlink'](_0x1b96c5);process[_0x9796('0x5b')](0x0);})['catch'](function(_0x47d6cc){logger['error'](_0x47d6cc[_0x9796('0x1f')]);process[_0x9796('0x5b')](0x1);});});});});})[_0x9796('0x1d')](function(_0x5d086b){logger[_0x9796('0x1e')](_0x5d086b[_0x9796('0x1f')]);process[_0x9796('0x5b')](0x1);});}catch(_0x523353){logger[_0x9796('0x1e')](_0x9796('0x91'),_0x523353[_0x9796('0x1f')]);process[_0x9796('0x5b')](0x1);}},'error':function(_0x289798,_0x13af18,_0xb36a04,_0x2c3bf4){throw new Error(_0x2c3bf4);}});});}function validate(){if(process['argv']&&process['argv']['length']<0x4){throw new Error(_0x9796('0x92'));}var _0x57b4db=path[_0x9796('0x10')](config[_0x9796('0x61')],'server/files/tmp',process[_0x9796('0x93')][0x2]);if(!fs[_0x9796('0x94')](_0x57b4db)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x25ca8a={};try{_0x25ca8a=JSON[_0x9796('0x6a')](process[_0x9796('0x93')][0x3]);if(!_0x25ca8a[_0x9796('0x60')]){throw new Error('binding\x20doesn\x27t\x20exists');}var _0x12b1b5=0x0;if(_0x25ca8a['binding'][_0x9796('0x3a')]){_0x12b1b5=0x1;}if(!_0x25ca8a[_0x9796('0x36')]){throw new Error(_0x9796('0x95'));}}catch(_0x57106f){throw new Error('body\x20id\x20mandatory');}var _0x27ac39=[];try{_0x27ac39=_[_0x9796('0x96')](JSON[_0x9796('0x6a')](process[_0x9796('0x93')][0x4]),'id');}catch(_0x5617ff){logger[_0x9796('0x5a')](_0x9796('0x97'));}main(_0x57b4db,_0x25ca8a,_0x27ac39,_0x12b1b5);}validate();process['on'](_0x9796('0x98'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x237d=['where','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','isNil','AdditionalPhones','push','all','catch','error','message','split','length','filter','CmContactHasItem','findOne','then','update','updated','create','inserted','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','createdAt','updatedAt','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','cm_hopper_black','ListId','.CmListId\x20=\x20?','field','ListId\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_hopper_additional_phones','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','min_id','group','Received\x20SIGINT','exit','errors','code','info','main','send','start','binding','clone','socket_timestamp','root','server/files/tmp','.csv','body','ContactItemType','findAll','name','header','writeFileSync','parse','createReadStream','data','rows','find','_description','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','hasOwnProperty','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','abort','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len','format','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','finish','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','defaults','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','phone','from','join','.id\x20=\x20','\x20=\x20'];(function(_0x55754e,_0x286388){var _0x2e9948=function(_0x1eaeff){while(--_0x1eaeff){_0x55754e['push'](_0x55754e['shift']());}};_0x2e9948(++_0x286388);}(_0x237d,0x1d9));var _0xd237=function(_0x42c439,_0xa44e39){_0x42c439=_0x42c439-0x0;var _0x58a0a1=_0x237d[_0x42c439];return _0x58a0a1;};'use strict';var fs=require('fs');var path=require(_0xd237('0x0'));var _=require(_0xd237('0x1'));var Papa=require(_0xd237('0x2'));var util=require(_0xd237('0x3'));var BPromise=require('bluebird');var moment=require(_0xd237('0x4'));var squel=require(_0xd237('0x5'));var Redis=require(_0xd237('0x6'));var db=require(_0xd237('0x7'))['db'];var config=require(_0xd237('0x8'));var logger=require(_0xd237('0x9'))('import');config[_0xd237('0xa')]=_[_0xd237('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd237('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()['format'](_0xd237('0xc'));var tempTableName=_0xd237('0xd')+moment()['format'](_0xd237('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x1475fb){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))*$/[_0xd237('0xf')](_0x1475fb);}function selectNotIn(_0x3c8135,_0x2111ee,_0x46b4e3,_0x316042,_0x247450){return squel[_0xd237('0x10')]()['field'](_0xd237('0x11'))[_0xd237('0x12')](_0x316042)[_0xd237('0x13')](_0x2111ee,null,_0x2111ee+_0xd237('0x14')+_0x316042+'.'+_0x46b4e3)['where'](_0x316042+'.'+_0x46b4e3+_0xd237('0x15')+_0x3c8135+'.'+_0x46b4e3)[_0xd237('0x16')](_0x2111ee+_0xd237('0x17')+_0x247450[_0xd237('0x13')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x176b4c,_0x4100b4){promisesAdditionalPhones=[];promisesContact=[];return db[_0xd237('0x18')][_0xd237('0x19')](_0xd237('0x1a')+tempTableName)[_0xd237('0x1b')](function(_0x408719){if(_0x408719!==null){var _0x3086c4=[];for(var _0x3db7a9=0x0;_0x3db7a9<_0x408719['length'];_0x3db7a9++){var _0x2011e7=_0x408719[_0x3db7a9];if(!_[_0xd237('0x1c')](_0x2011e7[_0xd237('0x11')])){if(!_[_0xd237('0x1c')](_0x2011e7[_0xd237('0x1d')]))_0x3086c4[_0xd237('0x1e')](insertAdditionalPhones(_0x2011e7));promisesContact[_0xd237('0x1e')]({'contact':_0x2011e7});}}}Promise[_0xd237('0x1f')](_0x3086c4)['then'](function(){_0x176b4c({'val':0x1});});})[_0xd237('0x20')](function(_0x8f339b){logger[_0xd237('0x21')](_0x8f339b[_0xd237('0x22')]);});});}function insertAdditionalPhones(_0x27d7d3){return new Promise(function(_0x19bfb8,_0x65942){var _0x3b8599=_0x27d7d3[_0xd237('0x1d')];if(_[_0xd237('0x1c')](_0x3b8599))_0x65942({'val':0x0});else{var _0x385de8=_0x3b8599[_0xd237('0x23')](';');var _0x10d937=[];orderBy=0x0;for(var _0x343ea1=0x0;_0x343ea1<_0x385de8[_0xd237('0x24')];_0x343ea1++){_0x10d937['push'](splitAdditionalPhone(_0x27d7d3['id'],_0x385de8[_0x343ea1]));}Promise[_0xd237('0x1f')](_0x10d937)['then'](function(){_0x19bfb8({'val':_0x385de8[_0xd237('0x24')]});});}});}function splitAdditionalPhone(_0x187459,_0x203aac){return new Promise(function(_0x431f90,_0x502ba1){var _0xf13922=_0x203aac[_0xd237('0x23')](':');var _0x375142=_0xf13922[0x0];var _0x14f22b=_0xf13922[0x1];if(_0x14f22b!==''){var _0x5b4ee6=_0x14f22b[_0xd237('0x23')]('|');var _0x1ed1df=[];for(var _0x5733e3=0x0;_0x5733e3<_0x5b4ee6[_0xd237('0x24')];_0x5733e3++){if(_0x5b4ee6[_0x5733e3]!==''){var _0x9f826e=_[_0xd237('0x25')](promisesAdditionalPhones,{'contactId':_0x187459,'phone':_0x5b4ee6[_0x5733e3]});if(_0x9f826e[_0xd237('0x24')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x187459,'contactTypeId':_0x375142,'phone':_0x5b4ee6[_0x5733e3],'orderBy':orderBy});}}}_0x431f90({'ok':0x1});}else _0x431f90({'res':0x0});});}function createAdditionalPhone(_0x4cc361,_0x59133d,_0x376d32,_0x3a14ff){var _0xde1567='';var _0x7f193e='';var _0x4a1b23=_0x376d32[_0xd237('0x23')]('§');_0xde1567=_0x4a1b23[0x0];if(_0x4a1b23[_0xd237('0x24')]==0x2)_0x7f193e=_0x4a1b23[0x1];return new Promise(function(_0x560125,_0x126beb){return db[_0xd237('0x26')][_0xd237('0x27')]({'where':{'CmContactId':_0x4cc361,'item':_0xde1567}})[_0xd237('0x28')](function(_0x3630a7){if(_0x3630a7){return db['CmContactHasItem'][_0xd237('0x29')]({'ItemTypeId':_0x59133d,'description':_0x7f193e,'OrderBy':_0x3a14ff},{'where':{'CmContactId':_0x4cc361,'item':_0xde1567}})[_0xd237('0x28')](function(_0x1edbcd){_0x560125({'res':_0xd237('0x2a')});});}else{return db[_0xd237('0x26')][_0xd237('0x2b')]({'CmContactId':_0x4cc361,'item':_0xde1567,'ItemTypeId':_0x59133d,'description':_0x7f193e,'OrderBy':_0x3a14ff,'ItemClass':'PHONE'})[_0xd237('0x28')](function(_0x56a843){_0x560125({'res':_0xd237('0x2c')});});}});});}function updateContact(_0x5ea141){return new Promise(function(_0x1418d1,_0x250054){var _0x12ba9a=_0x5ea141['id'];delete _0x5ea141['id'];return db['CmContact']['update'](_0x5ea141,{'where':{'id':_0x12ba9a}})['then'](function(_0x1943d6){updatedRows+=0x1;return db[_0xd237('0x2d')][_0xd237('0x29')]({'phone':_0x5ea141['phone']},{'where':{'ContactId':_0x12ba9a}})['then'](function(_0x247c22){_0x1418d1({'ret':'OK'});});});});}function insertCmHopper(_0x32da2b,_0x40d4f6,_0x18b6c3,_0x37d4fd,_0xdd0af8){var _0x1b24bf=[_0xd237('0x2e'),_0xd237('0x2f'),_0xd237('0x30'),'cm_contacts.ListId',_0x40d4f6+'.'+_0x37d4fd,_0xd237('0x31'),_0xd237('0x32'),'cm_contacts.priority',_0xd237('0x33'),'\x22'+_0xdd0af8+'\x22'];return squel[_0xd237('0x34')]()[_0xd237('0x35')](_0xd237('0x36'))[_0xd237('0x37')]([_0xd237('0x11'),_0xd237('0x38'),'ContactId','ListId',_0x37d4fd,_0xd237('0x39'),_0xd237('0x3a'),'priority',_0xd237('0x3b'),_0xd237('0x3c')],squel[_0xd237('0x10')]()[_0xd237('0x3d')](_0x1b24bf)['from'](_0x40d4f6)['join'](_0xd237('0x3e'),null,_0xd237('0x3f')+_0x40d4f6+_0xd237('0x40'))[_0xd237('0x13')](_0x18b6c3,null,_0x18b6c3+_0xd237('0x14')+_0x40d4f6+'.'+_0x37d4fd)[_0xd237('0x16')](_0x40d4f6+'.CmListId\x20=\x20?',_0x32da2b)[_0xd237('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xd237('0x16')](_0xd237('0x41'),selectNotIn(_0x40d4f6,_0x18b6c3,_0x37d4fd,_0xd237('0x36'),[_0xd237('0x42'),_0xd237('0x43')]))[_0xd237('0x16')](_0xd237('0x41'),selectNotIn(_0x40d4f6,_0x18b6c3,_0x37d4fd,_0xd237('0x36'),[_0xd237('0x42')])))[_0xd237('0x44')]();}function insertCmHopperBlack(_0x4a003e,_0x50dfb9,_0x6f29dd,_0x22c579){var _0x21b431=[_0xd237('0x2e'),_0xd237('0x30'),_0xd237('0x45'),_0x50dfb9+'.'+_0x22c579,_0xd237('0x31'),_0xd237('0x32')];return squel['insert']()[_0xd237('0x35')](_0xd237('0x46'))[_0xd237('0x37')]([_0xd237('0x11'),'ContactId',_0xd237('0x47'),_0x22c579,_0xd237('0x39'),'updatedAt'],squel[_0xd237('0x10')]()['fields'](_0x21b431)[_0xd237('0x12')](_0x50dfb9)['join']('cm_contacts',null,_0xd237('0x3f')+_0x50dfb9+_0xd237('0x40'))['join'](_0x6f29dd,null,_0x6f29dd+_0xd237('0x14')+_0x50dfb9+'.'+_0x22c579)[_0xd237('0x16')](_0x50dfb9+_0xd237('0x48'),_0x4a003e)[_0xd237('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xd237('0x16')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xd237('0x10')]()[_0xd237('0x49')](_0xd237('0x11'))['from'](_0xd237('0x46'))[_0xd237('0x16')](_0xd237('0x4a'),_0x4a003e)['where'](_0x22c579+'\x20=\x20?',_0x50dfb9+'.'+_0x22c579)))[_0xd237('0x44')]();}function insertCmHopperAdditionalPhones(_0x23db5a){var _0x6103c1=[_0xd237('0x4b'),_0xd237('0x4c'),_0xd237('0x4d'),'cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt'];return squel[_0xd237('0x34')]()[_0xd237('0x35')](_0xd237('0x4e'))[_0xd237('0x37')](['CmHopperId',_0xd237('0x11'),_0xd237('0x4f'),'createdAt',_0xd237('0x3a')],squel[_0xd237('0x10')]()[_0xd237('0x3d')](_0x6103c1)[_0xd237('0x12')](_0xd237('0x36'))[_0xd237('0x13')](_0xd237('0x3e'),null,_0xd237('0x50'))['join']('cm_contact_has_items',null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0xd237('0x16')](_0xd237('0x51'),_0x23db5a)['where']('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x22d89d,_0x1d0fda,_0x313ffa,_0x39b9e2){var _0x5ced95=_[_0xd237('0x52')](_[_0xd237('0x53')](_0x39b9e2),[_0xd237('0x47'),_0xd237('0x54'),_0xd237('0x39'),'updatedAt']);return squel[_0xd237('0x34')]()[_0xd237('0x35')](_0xd237('0x3e'))[_0xd237('0x37')](_0x5ced95,squel[_0xd237('0x10')]()[_0xd237('0x3d')](_0x5ced95)[_0xd237('0x12')](_0x1d0fda)[_0xd237('0x16')]('('+_0x313ffa['join'](',')+_0xd237('0x55'),squel[_0xd237('0x10')]()[_0xd237('0x3d')](_0x313ffa)[_0xd237('0x12')](_0xd237('0x3e'))[_0xd237('0x16')](_0xd237('0x4a'),_0x22d89d))['where'](_0xd237('0x56'),squel['select']()['field']('MIN(id)',_0xd237('0x57'))['from'](_0x1d0fda)[_0xd237('0x58')](_0x313ffa['join'](','))))['toString']();}function handleStop(){logger['info'](_0xd237('0x59'));stopped=!![];}function handleUncaughtException(_0x4b5fd0){logger[_0xd237('0x21')](_0x4b5fd0[_0xd237('0x22')]);process[_0xd237('0x5a')](0x1);}function handleError(_0x4eaa44,_0x4a8379){stats[_0xd237('0x5b')][_0xd237('0x1e')]({'name':_0x4a8379[_0xd237('0x5c')],'message':_0x4a8379[_0xd237('0x22')],'row':_0x4eaa44});}function handleQuery(_0x46296f){logger[_0xd237('0x5d')](_0x46296f);return db[_0xd237('0x18')][_0xd237('0x19')](_0x46296f)['spread'](function(_0x1eafe4){results['push'](_0x1eafe4);})['catch'](function(_0x44a0c3){logger['error'](_0x44a0c3[_0xd237('0x22')]);});}function main(_0x5076dc,_0x3ac2ee,_0x33ff24,_0x3a9347){logger[_0xd237('0x5d')](_0xd237('0x5e'),_0x5076dc,JSON['stringify'](_0x3ac2ee));process[_0xd237('0x5f')](_0xd237('0x60'));var _0x3f8a02=_0x3ac2ee[_0xd237('0x61')];var _0x21b725=_[_0xd237('0x62')](_0x3f8a02);var _0x32e9de=_0x3ac2ee[_0xd237('0x63')];var _0x3cf939=path[_0xd237('0x13')](config[_0xd237('0x64')],_0xd237('0x65'),_0x32e9de+_0xd237('0x66'));logger[_0xd237('0x5d')](_0xd237('0x67'),_0x3ac2ee);db[_0xd237('0x68')][_0xd237('0x69')]({'raw':!![],'attributes':['id','name']})[_0xd237('0x28')](function(_0x2a731b){for(var _0xe1a625=0x0;_0xe1a625<_0x2a731b[_0xd237('0x24')];_0xe1a625++){if(_0x2a731b[_0xe1a625][_0xd237('0x6a')]in _0x3f8a02){contactItemTypes[_0xd237('0x1e')](_0x2a731b[_0xe1a625]);delete _0x21b725[_0x2a731b[_0xe1a625][_0xd237('0x6a')]];hasAdditionalPhones=!![];}for(var _0x145d97 in _0x3f8a02){if(_0x2a731b[_0xe1a625][_0xd237('0x6a')]+'_description'===_0x145d97){phoneDescriptions[_0xd237('0x1e')]({'itemTypeId':_0x2a731b[_0xe1a625]['id'],'description':_0x145d97});delete _0x21b725[_0x145d97];}}}if(hasAdditionalPhones)_0x21b725[_0xd237('0x1d')]='';var _0x2399fb=_[_0xd237('0x53')](_0x21b725)['join']();logger['info'](_0xd237('0x6b'),_0x2399fb);fs[_0xd237('0x6c')](_0x3cf939,_0x2399fb+'\x0a');Papa[_0xd237('0x6d')](fs[_0xd237('0x6e')](_0x5076dc),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3f7d17,_0xd28a2f){try{for(var _0x2f24d5=0x0,_0x246c84=[];_0x2f24d5<_0x3f7d17[_0xd237('0x6f')]['length'];_0x2f24d5++){stats[_0xd237('0x70')]+=0x1;if(_0x3f7d17[_0xd237('0x5b')][_0x2f24d5]){handleError(_0x3f7d17[_0xd237('0x6f')][_0x2f24d5],_0x3f7d17[_0xd237('0x5b')][_0x2f24d5]);}else{var _0x4742cb=[];var _0x4437d1=[];var _0x58b3e7={};for(var _0xdbf692 in _0x3f8a02){let _0xca4002=contactItemTypes[_0xd237('0x71')](_0x3e13ae=>_0x3e13ae[_0xd237('0x6a')]===_0xdbf692);let _0x4c2772=contactItemTypes[_0xd237('0x71')](_0x2f7091=>_0x2f7091['name']+_0xd237('0x72')===_0xdbf692);if(_[_0xd237('0x1c')](_0xca4002)&&_[_0xd237('0x1c')](_0x4c2772)){if(_0x3f8a02['hasOwnProperty'](_0xdbf692)){if(_0x3f7d17[_0xd237('0x6f')][_0x2f24d5][_0x3f8a02[_0xdbf692]]){var _0x161a1a=_[_0xd237('0x73')](_0x3f7d17[_0xd237('0x6f')][_0x2f24d5][_0x3f8a02[_0xdbf692]][_0xd237('0x74')](/"/g,'\x27'));switch(_0xdbf692){case _0xd237('0x38'):var _0x7ba98d=moment(_0x161a1a,_0xd237('0xc'),!![]);if(_0x7ba98d[_0xd237('0x75')]()){_0x246c84[_0xd237('0x1e')]('\x22'+_0x161a1a+'\x22');}else{_0x4742cb[_0xd237('0x1e')](_0xd237('0x76'));}break;case _0xd237('0x77'):var _0x53092b=parseInt(_0x161a1a);_0x161a1a=_[_0xd237('0x78')](_0x53092b)||_0x53092b<0x0||_0x53092b>0x4?_0x3a9347?0x3:0x2:_0x53092b;_0x246c84[_0xd237('0x1e')]('\x22'+_0x161a1a+'\x22');break;case _0xd237('0x3b'):var _0xe1a962=parseInt(_0x161a1a);if(_[_0xd237('0x79')](_0xe1a962)&&_[_0xd237('0x7a')](_0x33ff24,_0xe1a962)){_0x246c84[_0xd237('0x1e')]('\x22'+_0xe1a962+'\x22');}else{_0x4742cb['push'](_0xd237('0x7b'));}break;case'email':if(isEmail(_0x161a1a)){_0x246c84[_0xd237('0x1e')]('\x22'+_0x161a1a+'\x22');}else{_0x4742cb[_0xd237('0x1e')](_0xd237('0x7c'));}break;case _0xd237('0x7d'):var _0x48005f=moment(_0x161a1a,_0xd237('0x7e'),!![]);if(_0x48005f[_0xd237('0x75')]()){_0x246c84['push']('\x22'+_0x161a1a+'\x22');}else{_0x4742cb['push'](_0xd237('0x7f'));}break;default:_0x246c84['push']('\x22'+_0x161a1a+'\x22');}}else{switch(_0xdbf692){case _0xd237('0x80'):case'phone':_0x4742cb['push'](_0xdbf692+_0xd237('0x81'));break;default:_0x246c84['push']('\x22\x22');}}}}else{var _0x41494c='';if(!_[_0xd237('0x1c')](_0xca4002)){if(!_0x58b3e7[_0xd237('0x82')](_0xca4002['id'])){for(var _0x1970de=0x0;_0x1970de<_0x3f8a02[_0xdbf692]['length'];_0x1970de++){var _0x161a1a=_[_0xd237('0x73')](_0x3f7d17[_0xd237('0x6f')][_0x2f24d5][_0x3f8a02[_0xdbf692][_0x1970de]][_0xd237('0x74')](/"/g,'\x27'));var _0x1dbbc5=phoneDescriptions['find'](_0x2b8f95=>_0x2b8f95[_0xd237('0x83')]===_0xca4002['id']);if(!_[_0xd237('0x1c')](_0x1dbbc5)){var _0x1b4b65=_[_0xd237('0x73')](_0x3f7d17[_0xd237('0x6f')][_0x2f24d5][_0x3f8a02[_0x1dbbc5[_0xd237('0x84')]][0x0]]['replace'](/"/g,'\x27'));if(!_[_0xd237('0x1c')](_0x1b4b65))_0x161a1a=_0x161a1a+'§'+_0x1b4b65;}if(_0x41494c=='')_0x41494c=_0x161a1a;else _0x41494c+='|'+_0x161a1a;}_0x4437d1[_0xd237('0x1e')](_0xca4002['id']+':'+_0x41494c);_0x58b3e7[_0xca4002['id']]=0x1;}}}}if(hasAdditionalPhones){_0x246c84[_0xd237('0x1e')]('\x22'+_0x4437d1[_0xd237('0x13')](';')+'\x22');}if(_0x4742cb[_0xd237('0x24')]){handleError(_0x3f7d17[_0xd237('0x6f')][_0x2f24d5],{'code':_0xd237('0x85'),'message':_0x4742cb[_0xd237('0x13')]()});}else{fs[_0xd237('0x86')](_0x3cf939,_0x246c84[_0xd237('0x13')]()+'\x0a');}_0x246c84=[];}if(!(stats[_0xd237('0x70')]%0xc8)){socket[_0xd237('0x87')](_0xd237('0x88')+_0x32e9de,stats);stats['errors']=[];}}if(stopped){logger[_0xd237('0x5d')]('Abort\x20parser');_0xd28a2f[_0xd237('0x89')]();}}catch(_0x1705ae){handleError(_0x3f7d17['data'][_0x2f24d5],{'code':_0xd237('0x8a'),'message':_0x1705ae[_0xd237('0x22')]});logger[_0xd237('0x21')](_0xd237('0x8b'),_0x1705ae[_0xd237('0x22')]);}},'complete':function(){try{var _0x1be6e5=[];var _0x43a51d=tempTableName;_0x1be6e5['push'](_0xd237('0x8c')+_0x43a51d+_0xd237('0x8d'));logger[_0xd237('0x5d')](_0xd237('0x8e'),contactItemTypes[_0xd237('0x24')]);var _0x1041be=util[_0xd237('0x8f')](_0xd237('0x90'),_0x3cf939,_0x43a51d,_0x2399fb,_0x3ac2ee['ListId'],_0x3ac2ee['CompanyId']||null,NOW,NOW);if(_[_0xd237('0x1c')](_0x3f8a02[_0xd237('0x38')])){_0x1041be+=_0xd237('0x91');}_0x1be6e5['push'](_0x1041be);BPromise[_0xd237('0x92')](_0x1be6e5,handleQuery)[_0xd237('0x28')](function(_0x3f9fe7){BPromise[_0xd237('0x1f')]([handleAdditionalPhones()])[_0xd237('0x28')](function(){_0x1be6e5=[];for(var _0x19dfa9=0x0;_0x19dfa9<promisesContact[_0xd237('0x24')];_0x19dfa9++){_0x1be6e5[_0xd237('0x1e')](updateContact(promisesContact[_0x19dfa9][_0xd237('0x93')]));}BPromise[_0xd237('0x1f')](_0x1be6e5)['then'](function(){_0x1be6e5=[];for(var _0xa13474=0x0;_0xa13474<promisesAdditionalPhones[_0xd237('0x24')];_0xa13474++){_0x1be6e5[_0xd237('0x1e')](createAdditionalPhone(promisesAdditionalPhones[_0xa13474][_0xd237('0x94')],promisesAdditionalPhones[_0xa13474][_0xd237('0x95')],promisesAdditionalPhones[_0xa13474][_0xd237('0x11')],promisesAdditionalPhones[_0xa13474][_0xd237('0x96')]));}BPromise[_0xd237('0x1f')](_0x1be6e5)[_0xd237('0x28')](function(){_0x1be6e5=[];_0x1be6e5['push'](insertCmHopperAdditionalPhones(_0x3ac2ee[_0xd237('0x47')]));_0x1be6e5[_0xd237('0x1e')]('DROP\x20TABLE\x20'+_0x43a51d+';');BPromise[_0xd237('0x92')](_0x1be6e5,handleQuery)['then'](function(_0x2f7181){stats[_0xd237('0x97')]=!![];stats['affectedRows']=updatedRows;socket[_0xd237('0x87')]('contact:import:'+_0x32e9de,stats);fs[_0xd237('0x98')](_0x5076dc);fs[_0xd237('0x98')](_0x3cf939);process[_0xd237('0x5a')](0x0);})[_0xd237('0x20')](function(_0x1c7cc1){logger[_0xd237('0x21')](_0x1c7cc1['message']);process[_0xd237('0x5a')](0x1);});});});});})['catch'](function(_0x1053b7){logger[_0xd237('0x21')](_0x1053b7[_0xd237('0x22')]);process[_0xd237('0x5a')](0x1);});}catch(_0x3a7f4d){logger[_0xd237('0x21')](_0xd237('0x99'),_0x3a7f4d['message']);process[_0xd237('0x5a')](0x1);}},'error':function(_0x235c5e,_0x37753b,_0x1c13dd,_0x30c1bd){throw new Error(_0x30c1bd);}});});}function validate(){if(process[_0xd237('0x9a')]&&process[_0xd237('0x9a')]['length']<0x4){throw new Error(_0xd237('0x9b'));}var _0x303d95=path['join'](config[_0xd237('0x64')],_0xd237('0x65'),process[_0xd237('0x9a')][0x2]);if(!fs[_0xd237('0x9c')](_0x303d95)){throw new Error(_0xd237('0x9d'));}var _0x291531={};try{_0x291531=JSON['parse'](process['argv'][0x3]);if(!_0x291531[_0xd237('0x61')]){throw new Error(_0xd237('0x9e'));}var _0x271b5d=0x0;if(_0x291531[_0xd237('0x61')][_0xd237('0x3b')]){_0x271b5d=0x1;}if(!_0x291531[_0xd237('0x47')]){throw new Error(_0xd237('0x9f'));}}catch(_0x475a68){throw new Error(_0xd237('0xa0'));}var _0x2b7225=[];try{_0x2b7225=_[_0xd237('0xa1')](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x3b3e4b){logger[_0xd237('0x5d')](_0xd237('0xa2'));}main(_0x303d95,_0x291531,_0x2b7225,_0x271b5d);}validate();process['on'](_0xd237('0xa3'),handleStop);process['on'](_0xd237('0xa4'),handleUncaughtException);
\ No newline at end of file
index 6050d4f..a6e0911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7504=['Queue','UniqueId','uniqueid','Date','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentcompleteAt','Hold\x20Time','Talk\x20Time','membername','starttime','Answer\x20Time','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','getSubjects','string','[xCALLY\x20Ticket]','voice','inbound','push','queue','variable','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','destexten'];(function(_0x41b980,_0x442e4a){var _0x5c2dc4=function(_0x55a213){while(--_0x55a213){_0x41b980['push'](_0x41b980['shift']());}};_0x5c2dc4(++_0x442e4a);}(_0x7504,0xd9));var _0x4750=function(_0x40e1d7,_0x20c2ca){_0x40e1d7=_0x40e1d7-0x0;var _0xccef09=_0x7504[_0x40e1d7];return _0xccef09;};'use strict';exports[_0x4750('0x0')]=function(_0x14f0fd,_0x30186b){var _0x4521fa=[{'type':_0x4750('0x1'),'content':_0x4750('0x2'),'variableName':null}];switch(_0x14f0fd['toLowerCase']()){case _0x4750('0x3'):switch(_0x30186b['toLowerCase']()){case _0x4750('0x4'):_0x4521fa[_0x4750('0x5')]({'type':'variable','content':'','variableName':_0x4750('0x6')});_0x4521fa['push']({'type':_0x4750('0x7'),'content':'','variableName':_0x4750('0x8')});break;case _0x4750('0x9'):_0x4521fa[_0x4750('0x5')]({'type':'string','content':_0x4750('0xa'),'variableName':null});_0x4521fa['push']({'type':_0x4750('0x7'),'content':'','variableName':_0x4750('0xb')});break;}}return _0x4521fa;};exports[_0x4750('0xc')]=function(_0x168b73,_0x26532d){var _0x15034c=[];switch(_0x168b73['toLowerCase']()){case _0x4750('0x3'):switch(_0x26532d['toLowerCase']()){case _0x4750('0x4'):_0x15034c=[{'type':'string','content':_0x4750('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x4750('0xe'),'content':'','key':'Caller\x20Number','keyType':_0x4750('0x7'),'variableName':_0x4750('0x8')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0xf'),'keyType':_0x4750('0x7'),'variableName':'calleridname'},{'type':_0x4750('0xe'),'content':'','key':'Call\x20To','keyType':_0x4750('0x7'),'variableName':_0x4750('0x10')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x11'),'keyType':_0x4750('0x7'),'variableName':'queue'},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x12'),'keyType':_0x4750('0x7'),'variableName':_0x4750('0x13')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x14'),'keyType':'variable','variableName':_0x4750('0x15')},{'type':_0x4750('0x1'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x16'),'keyType':_0x4750('0x7'),'variableName':_0x4750('0x17')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x18'),'keyType':_0x4750('0x7'),'variableName':_0x4750('0xb')},{'type':'string','content':_0x4750('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x1a'),'keyType':_0x4750('0x7'),'variableName':'agentcalledAt'},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x1b'),'keyType':'variable','variableName':'agentconnectAt'},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0x4750('0x7'),'variableName':_0x4750('0x1c')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x1d'),'keyType':'variable','variableName':'holdtime'},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x1e'),'keyType':_0x4750('0x7'),'variableName':'talktime'}];break;case'outbound':_0x15034c=[{'type':_0x4750('0x1'),'content':_0x4750('0xd'),'variableName':null},{'type':_0x4750('0xe'),'content':'','key':'Called\x20Number','keyType':_0x4750('0x7'),'keyContent':'','variableName':_0x4750('0xb')},{'type':_0x4750('0xe'),'content':'','key':'Member\x20Name','keyType':'variable','keyContent':'','variableName':_0x4750('0x1f')},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0x4750('0x7'),'keyContent':'','variableName':'uniqueid'},{'type':_0x4750('0xe'),'content':'','key':'Date','keyType':_0x4750('0x7'),'keyContent':'','variableName':_0x4750('0x20')},{'type':_0x4750('0x1'),'content':_0x4750('0x19')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x21'),'keyType':_0x4750('0x7'),'keyContent':'','variableName':'answertime'},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x22'),'keyType':_0x4750('0x7'),'keyContent':'','variableName':_0x4750('0x23')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x24'),'keyType':_0x4750('0x7'),'keyContent':'','variableName':_0x4750('0x25')},{'type':_0x4750('0xe'),'content':'','key':_0x4750('0x26'),'keyType':_0x4750('0x7'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x15034c;};
\ No newline at end of file
+var _0x8ec2=['holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','starttime','Answer\x20Time','answertime','endtime','duration','getSubjects','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','calleridnum','outbound','string','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','queue','uniqueid','Date','***\x20Agent\x20Info\x20***','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time'];(function(_0x1dec97,_0x5bc3c4){var _0x95cc95=function(_0xb83505){while(--_0xb83505){_0x1dec97['push'](_0x1dec97['shift']());}};_0x95cc95(++_0x5bc3c4);}(_0x8ec2,0x1ce));var _0x28ec=function(_0x2f37e0,_0x393ef9){_0x2f37e0=_0x2f37e0-0x0;var _0x43ccce=_0x8ec2[_0x2f37e0];return _0x43ccce;};'use strict';exports[_0x28ec('0x0')]=function(_0x124838,_0x51a3ef){var _0x4f7844=[{'type':'string','content':_0x28ec('0x1'),'variableName':null}];switch(_0x124838[_0x28ec('0x2')]()){case _0x28ec('0x3'):switch(_0x51a3ef[_0x28ec('0x2')]()){case _0x28ec('0x4'):_0x4f7844[_0x28ec('0x5')]({'type':_0x28ec('0x6'),'content':'','variableName':'queue'});_0x4f7844['push']({'type':_0x28ec('0x6'),'content':'','variableName':_0x28ec('0x7')});break;case _0x28ec('0x8'):_0x4f7844['push']({'type':_0x28ec('0x9'),'content':_0x28ec('0xa'),'variableName':null});_0x4f7844[_0x28ec('0x5')]({'type':_0x28ec('0x6'),'content':'','variableName':_0x28ec('0xb')});break;}}return _0x4f7844;};exports['getDescriptions']=function(_0x3e53af,_0x384482){var _0x34d0dd=[];switch(_0x3e53af[_0x28ec('0x2')]()){case _0x28ec('0x3'):switch(_0x384482[_0x28ec('0x2')]()){case _0x28ec('0x4'):_0x34d0dd=[{'type':_0x28ec('0x9'),'content':_0x28ec('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0xe'),'keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x7')},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0xf'),'keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x10')},{'type':'keyValue','content':'','key':_0x28ec('0x11'),'keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x12')},{'type':'keyValue','content':'','key':_0x28ec('0x13'),'keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x14')},{'type':_0x28ec('0xd'),'content':'','key':'UniqueId','keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x15')},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0x16'),'keyType':_0x28ec('0x6'),'variableName':'agentcalledAt'},{'type':_0x28ec('0x9'),'content':_0x28ec('0x17'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Name','keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x18')},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0x19'),'keyType':_0x28ec('0x6'),'variableName':_0x28ec('0xb')},{'type':_0x28ec('0x9'),'content':_0x28ec('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0x1b'),'keyType':'variable','variableName':_0x28ec('0x1c')},{'type':'keyValue','content':'','key':_0x28ec('0x1d'),'keyType':'variable','variableName':_0x28ec('0x1e')},{'type':_0x28ec('0xd'),'content':'','key':'Agent\x20Complete','keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x1f')},{'type':'keyValue','content':'','key':_0x28ec('0x20'),'keyType':'variable','variableName':_0x28ec('0x21')},{'type':'keyValue','content':'','key':_0x28ec('0x22'),'keyType':_0x28ec('0x6'),'variableName':_0x28ec('0x23')}];break;case'outbound':_0x34d0dd=[{'type':_0x28ec('0x9'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0x24'),'keyType':_0x28ec('0x6'),'keyContent':'','variableName':_0x28ec('0xb')},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0x25'),'keyType':_0x28ec('0x6'),'keyContent':'','variableName':_0x28ec('0x26')},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0x27'),'keyType':_0x28ec('0x6'),'keyContent':'','variableName':_0x28ec('0x15')},{'type':_0x28ec('0xd'),'content':'','key':'Date','keyType':_0x28ec('0x6'),'keyContent':'','variableName':_0x28ec('0x28')},{'type':_0x28ec('0x9'),'content':_0x28ec('0x1a')},{'type':_0x28ec('0xd'),'content':'','key':_0x28ec('0x29'),'keyType':_0x28ec('0x6'),'keyContent':'','variableName':_0x28ec('0x2a')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':_0x28ec('0x6'),'keyContent':'','variableName':_0x28ec('0x2b')},{'type':_0x28ec('0xd'),'content':'','key':'Duration','keyType':'variable','keyContent':'','variableName':_0x28ec('0x2c')},{'type':_0x28ec('0xd'),'content':'','key':'Billable\x20Time','keyType':_0x28ec('0x6'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x34d0dd;};
\ No newline at end of file
index 277b65c..eb0a352 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd752=['./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','then','parseAdvancedSearchFilter','where','body','contact','fields','having','read','tags','group','i.id','search','tag','countFilteredInteractions','count','clause','order','forEach','contactName','DESC','closed','getClosedOrderClause','getFilteredInteractions','rows','tracked','query','clone','omit','html','phone','fax','mobile','updateUser','lodash','./sql-utils'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xd752,0x13e));var _0x2d75=function(_0x2c26a0,_0x2b9577){_0x2c26a0=_0x2c26a0-0x0;var _0x3e26d2=_0xd752[_0x2c26a0];return _0x3e26d2;};'use strict';var _=require(_0x2d75('0x0'));var sqlUtils=require(_0x2d75('0x1'));var utils=require(_0x2d75('0x2'));exports[_0x2d75('0x3')]=function(_0x406b2b,_0x56495f,_0xae3ca1,_0x254c43,_0x5cd3a7){var _0x24c796={'count':0x0,'rows':[]};var _0x293009=sqlUtils[_0x2d75('0x4')](_0x406b2b,_0xae3ca1,_0x56495f);if(_0x293009){return Promise[_0x2d75('0x5')](_0x24c796);}var _0x4899dd=sqlUtils[_0x2d75('0x6')](_0x406b2b);var _0x536dcd={};return Promise[_0x2d75('0x5')]()[_0x2d75('0x7')](function(){if(_0x56495f['search']){return sqlUtils[_0x2d75('0x8')](_0x56495f['search'],_0x5cd3a7);}else{return sqlUtils['parseQueryParameters'](_0x406b2b,_0x56495f,_0x5cd3a7);}})[_0x2d75('0x7')](function(_0x502a5d){_0x4899dd[_0x2d75('0x9')](_0x502a5d[_0x2d75('0xa')]);_0x4899dd['where'](_0x502a5d[_0x2d75('0xb')]);_0x4899dd[_0x2d75('0x9')](_0x502a5d['default']);_0x4899dd['where'](_0x502a5d[_0x2d75('0xc')]);_0x4899dd[_0x2d75('0x9')](_0x502a5d['filter']);_0x4899dd[_0x2d75('0x9')](_0x502a5d['user']);_0x4899dd[_0x2d75('0xd')](_0x502a5d[_0x2d75('0xe')]);_0x536dcd=_0x502a5d[_0x2d75('0xf')];return sqlUtils['checkAccountsRestrictions'](_0x406b2b,_0xae3ca1,_0x56495f);})[_0x2d75('0x7')](function(_0x376484){_0x4899dd[_0x2d75('0x9')](_0x376484);_0x4899dd[_0x2d75('0x10')](_0x2d75('0x11'));var _0x324532=_0x56495f[_0x2d75('0x12')]?_0x536dcd['ids']:_0x56495f[_0x2d75('0x13')];return sqlUtils[_0x2d75('0x14')](_0x4899dd,_0x324532);})[_0x2d75('0x7')](function(_0x14e2fc){_0x24c796['count']=_0x14e2fc['length'];if(_0x24c796[_0x2d75('0x15')]===0x0){return[];}_0x4899dd[_0x2d75('0xd')](_0x536dcd[_0x2d75('0x16')]);if(_0x254c43[_0x2d75('0x17')]){_0x254c43[_0x2d75('0x17')][_0x2d75('0x18')](function(_0x59eb00){var _0x3757cc=_0x59eb00[0x0]===_0x2d75('0x19')?_0x59eb00[0x0]:'i.'+_0x59eb00[0x0];_0x4899dd['order'](_0x3757cc,_0x59eb00[0x1]===_0x2d75('0x1a')?![]:!![]);if(_0x59eb00[0x0]===_0x2d75('0x1b')){var _0x3717b5=sqlUtils[_0x2d75('0x1c')](_0x406b2b,_0x56495f);_0x4899dd[_0x2d75('0x17')](_0x3717b5,_0x59eb00[0x1]===_0x2d75('0x1a')?![]:!![]);}});}return sqlUtils[_0x2d75('0x1d')](_0x406b2b,_0x4899dd,_0x56495f,_0x254c43);})[_0x2d75('0x7')](function(_0x422aff){_0x24c796[_0x2d75('0x1e')]=_0x422aff;return _0x24c796;})['catch'](function(_0x5e7c4a){throw _0x5e7c4a;});};exports[_0x2d75('0x1f')]=function(_0x3aff96,_0x48032b){return function(_0x6b3b92,_0x4ff413,_0x77b6c){var _0x25e958=_0x6b3b92['user'];var _0x4f4d1b={};var _0x2203c1=_0x6b3b92[_0x2d75('0x20')];if(_0x4f4d1b){_0x4f4d1b=_[_0x2d75('0x21')](_0x6b3b92[_0x2d75('0xa')]);_0x4f4d1b=_[_0x2d75('0x22')](_0x4f4d1b,[_0x2d75('0xa'),_0x2d75('0x23'),_0x2d75('0x24'),_0x2d75('0x25'),_0x2d75('0x26')]);}utils[_0x2d75('0x27')](_0x25e958,_0x4f4d1b,_0x2203c1,_0x3aff96,_0x48032b);_0x77b6c(null);};};
\ No newline at end of file
+var _0x5d14=['rows','catch','user','clone','omit','html','phone','fax','mobile','lodash','./sql-utils','./utils','getInteractionsQuery','resolve','then','search','parseQueryParameters','where','body','contact','fields','having','read','tags','group','i.id','ids','tag','countFilteredInteractions','count','length','clause','order','forEach','contactName','DESC','closed','getClosedOrderClause','getFilteredInteractions'];(function(_0x4e111e,_0x4a0e83){var _0x319cc0=function(_0x577758){while(--_0x577758){_0x4e111e['push'](_0x4e111e['shift']());}};_0x319cc0(++_0x4a0e83);}(_0x5d14,0xcc));var _0x45d1=function(_0x8be9fb,_0x2f90d9){_0x8be9fb=_0x8be9fb-0x0;var _0x3b41ac=_0x5d14[_0x8be9fb];return _0x3b41ac;};'use strict';var _=require(_0x45d1('0x0'));var sqlUtils=require(_0x45d1('0x1'));var utils=require(_0x45d1('0x2'));exports['findAll']=function(_0x235646,_0x13a647,_0x119011,_0x4450f0,_0x4d90c1){var _0x2537b4={'count':0x0,'rows':[]};var _0x6e3ec8=sqlUtils['skipInteractionsQuery'](_0x235646,_0x119011,_0x13a647);if(_0x6e3ec8){return Promise['resolve'](_0x2537b4);}var _0x5ece7d=sqlUtils[_0x45d1('0x3')](_0x235646);var _0x268574={};return Promise[_0x45d1('0x4')]()[_0x45d1('0x5')](function(){if(_0x13a647[_0x45d1('0x6')]){return sqlUtils['parseAdvancedSearchFilter'](_0x13a647[_0x45d1('0x6')],_0x4d90c1);}else{return sqlUtils[_0x45d1('0x7')](_0x235646,_0x13a647,_0x4d90c1);}})[_0x45d1('0x5')](function(_0x34cd79){_0x5ece7d[_0x45d1('0x8')](_0x34cd79[_0x45d1('0x9')]);_0x5ece7d[_0x45d1('0x8')](_0x34cd79[_0x45d1('0xa')]);_0x5ece7d[_0x45d1('0x8')](_0x34cd79['default']);_0x5ece7d['where'](_0x34cd79[_0x45d1('0xb')]);_0x5ece7d[_0x45d1('0x8')](_0x34cd79['filter']);_0x5ece7d[_0x45d1('0x8')](_0x34cd79['user']);_0x5ece7d[_0x45d1('0xc')](_0x34cd79[_0x45d1('0xd')]);_0x268574=_0x34cd79[_0x45d1('0xe')];return sqlUtils['checkAccountsRestrictions'](_0x235646,_0x119011,_0x13a647);})[_0x45d1('0x5')](function(_0x16d429){_0x5ece7d['where'](_0x16d429);_0x5ece7d[_0x45d1('0xf')](_0x45d1('0x10'));var _0x44f4e9=_0x13a647[_0x45d1('0x6')]?_0x268574[_0x45d1('0x11')]:_0x13a647[_0x45d1('0x12')];return sqlUtils[_0x45d1('0x13')](_0x5ece7d,_0x44f4e9);})[_0x45d1('0x5')](function(_0x376a32){_0x2537b4[_0x45d1('0x14')]=_0x376a32[_0x45d1('0x15')];if(_0x2537b4[_0x45d1('0x14')]===0x0){return[];}_0x5ece7d[_0x45d1('0xc')](_0x268574[_0x45d1('0x16')]);if(_0x4450f0[_0x45d1('0x17')]){_0x4450f0[_0x45d1('0x17')][_0x45d1('0x18')](function(_0x5961d6){var _0xe8755a=_0x5961d6[0x0]===_0x45d1('0x19')?_0x5961d6[0x0]:'i.'+_0x5961d6[0x0];_0x5ece7d[_0x45d1('0x17')](_0xe8755a,_0x5961d6[0x1]===_0x45d1('0x1a')?![]:!![]);if(_0x5961d6[0x0]===_0x45d1('0x1b')){var _0x2534a5=sqlUtils[_0x45d1('0x1c')](_0x235646,_0x13a647);_0x5ece7d[_0x45d1('0x17')](_0x2534a5,_0x5961d6[0x1]===_0x45d1('0x1a')?![]:!![]);}});}return sqlUtils[_0x45d1('0x1d')](_0x235646,_0x5ece7d,_0x13a647,_0x4450f0);})[_0x45d1('0x5')](function(_0x5ca008){_0x2537b4[_0x45d1('0x1e')]=_0x5ca008;return _0x2537b4;})[_0x45d1('0x1f')](function(_0x3700d3){throw _0x3700d3;});};exports['tracked']=function(_0x3858d8,_0x565220){return function(_0x3f55f7,_0x329b3d,_0x42dadb){var _0xbaf226=_0x3f55f7[_0x45d1('0x20')];var _0xe9b603={};var _0x54b76c=_0x3f55f7['query'];if(_0xe9b603){_0xe9b603=_[_0x45d1('0x21')](_0x3f55f7[_0x45d1('0x9')]);_0xe9b603=_[_0x45d1('0x22')](_0xe9b603,[_0x45d1('0x9'),_0x45d1('0x23'),_0x45d1('0x24'),_0x45d1('0x25'),_0x45d1('0x26')]);}utils['updateUser'](_0xbaf226,_0xe9b603,_0x54b76c,_0x3858d8,_0x565220);_0x42dadb(null);};};
\ No newline at end of file
index 3fd5d8d..f550d14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc3=['Account.mandatoryDisposition','Account.email','contactName','i.id','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.thirdDisposition','i.ContactId','i.MailAccountId','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','Contact.lastName','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','limit','offset','groupBy','Setting','enableEmailPreview','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','Sequelize','exports','lodash','squel','../parsers/qs','./update-interaction','./utils','../../mysqldb','role','select','field','name','color','_interactions','u.id','u.fullname','ui.','users','length','where','\x20IN\x20?','map','getAccountFK','getInteractionFK','interactions','left_join','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','messages','\x20=\x20i.id','interactionsTags','tools_tags','t.id\x20=\x20it.TagId','expr','getSelectedTags','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','sms','i.phone\x20LIKE\x20?','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','fax','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','sqlOperator','conditions','buildExpression','default','text','value','end','unreadMessages','read','and','Contact','operator','$substring','split','contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','find','ContactId','type','start','Tag','tags','clause','ids','user','UserId','body','plainBody','keys','compact','forEach','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','then','fields','tag','filter','get','capitalize','chat','Websites','Accounts','search','agent','\x20IS\x20NULL','\x20IS\x20NOT\x20NULL','i.secondDisposition','i.disposition','unshift','i.substatus','closed','CONCAT_WS(\x27\x27,\x20','join','Interaction','QueryTypes','SELECT','sequelize','query','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x4bc3,0x16e));var _0x34bc=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0x4bc3[_0x58e469];return _0x4c01c5;};'use strict';var _=require(_0x34bc('0x0'));var squel=require(_0x34bc('0x1'));var as=require('../parsers/advancedSearch');var qs=require(_0x34bc('0x2'));var updateInteraction=require(_0x34bc('0x3'))['updateInteraction'];var utils=require(_0x34bc('0x4'));var db=require(_0x34bc('0x5'))['db'];function skipInteractionsQuery(_0x3ce1c3,_0x2e043e,_0x232f40){var _0x2a1322=![];var _0x2cc9c2=utils['getAccountFK'](_0x3ce1c3);if(_0x2e043e[_0x34bc('0x6')]==='agent'&&!_0x232f40['search']&&!_0x232f40[_0x2cc9c2]){_0x2a1322=!![];}return _0x2a1322;}function getTagsQuery(){return squel[_0x34bc('0x7')]()[_0x34bc('0x8')]('id')[_0x34bc('0x8')](_0x34bc('0x9'))[_0x34bc('0x8')](_0x34bc('0xa'))['from']('tools_tags');}function getUsersQuery(_0x2b8112,_0x33025c){var _0x2a35f3=utils['getInteractionFK'](_0x2b8112);var _0x41960e='user_has_'+_0x2b8112+_0x34bc('0xb');var _0x124b87=squel[_0x34bc('0x7')]()['field'](_0x34bc('0xc'))['field'](_0x34bc('0xd'))[_0x34bc('0x8')](_0x34bc('0xe')+_0x2a35f3)['from'](_0x41960e,'ui')['left_join'](_0x34bc('0xf'),'u','u.id\x20=\x20ui.UserId');if(_0x33025c[_0x34bc('0x10')]>0x0){_0x124b87[_0x34bc('0x11')](_0x34bc('0xe')+_0x2a35f3+_0x34bc('0x12'),_[_0x34bc('0x13')](_0x33025c,'id'));}return _0x124b87;}function getInteractionsQuery(_0x69542f){var _0x5e132d=utils['getInteractionsTables'](_0x69542f);var _0x5a5895=utils[_0x34bc('0x14')](_0x69542f);var _0x3eaedf=utils[_0x34bc('0x15')](_0x69542f);return squel[_0x34bc('0x7')]()['from'](_0x5e132d[_0x34bc('0x16')],'i')[_0x34bc('0x17')]('cm_contacts','c',_0x34bc('0x18'))[_0x34bc('0x17')]('users','o',_0x34bc('0x19'))[_0x34bc('0x17')](_0x5e132d[_0x34bc('0x1a')],'a',_0x34bc('0x1b')+_0x5a5895)[_0x34bc('0x17')](_0x5e132d[_0x34bc('0x1c')],'me','me.'+_0x3eaedf+_0x34bc('0x1d'))[_0x34bc('0x17')](_0x5e132d[_0x34bc('0x1e')],'it','it.'+_0x3eaedf+'\x20=\x20i.id')[_0x34bc('0x17')](_0x34bc('0x1f'),'t',_0x34bc('0x20'));}function getSqlClauses(){var _0x410800={'body':squel[_0x34bc('0x21')](),'contact':squel[_0x34bc('0x21')](),'default':squel[_0x34bc('0x21')](),'fields':squel[_0x34bc('0x21')](),'filter':squel[_0x34bc('0x21')](),'read':squel[_0x34bc('0x21')](),'tags':{'clause':squel[_0x34bc('0x21')](),'ids':null},'user':squel[_0x34bc('0x21')]()};return _0x410800;}function parseTagParameter(_0x4fd589){var _0x43e527=squel['expr']();if(_0x4fd589){var _0x4b76c7=utils[_0x34bc('0x22')](_0x4fd589);_0x4b76c7['forEach'](function(_0x4082c3){_0x43e527['or'](_0x34bc('0x23'),'%,'+_0x4082c3+',%');});}return _0x43e527;}function parseReadParameter(_0x46fd76){var _0x47c878='';if(_0x46fd76){_0x47c878=_0x34bc('0x24');if(_0x46fd76==='1'){_0x47c878=_0x47c878[_0x34bc('0x25')](_0x34bc('0x26'),'=');}else{_0x47c878=_0x47c878[_0x34bc('0x25')](_0x34bc('0x26'),'>');}}return _0x47c878;}function parseSearchFilter(_0x33bf46,_0x520fd4){var _0xff07bd=squel[_0x34bc('0x21')]();if(_0x520fd4){var _0x22aacc=_0x520fd4[_0x34bc('0x25')]('\x5c','\x5c\x5c')[_0x34bc('0x25')](/'/g,'\x27\x27');if(qs[_0x34bc('0x27')](_0x22aacc)){_0xff07bd['or']('i.id\x20LIKE\x20?',_0x22aacc+'%');if([_0x34bc('0x28'),'whatsapp']['includes'](_0x33bf46)){_0xff07bd['or'](_0x34bc('0x29'),_0x22aacc+'%');}else if(_0x33bf46==='fax'){_0xff07bd['or'](_0x34bc('0x2a'),_0x22aacc+'%');}else if(_0x33bf46===_0x34bc('0x2b')){_0xff07bd['or'](_0x34bc('0x2c'),_0x22aacc+'%');}}else if(_0x33bf46===_0x34bc('0x2d')&&qs[_0x34bc('0x2e')](_0x22aacc)){_0xff07bd['or'](_0x34bc('0x2f'),_0x22aacc+'%');}else{if(_0x33bf46===_0x34bc('0x2d')){_0xff07bd['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x34bc('0x30')](_0x22aacc))['or'](_0x34bc('0x31'),qs[_0x34bc('0x30')](_0x22aacc));}else{if(_0x33bf46!==_0x34bc('0x32')){_0xff07bd['or'](_0x34bc('0x33'),qs['getFullTextValue'](_0x22aacc));}_0xff07bd['or'](_0x34bc('0x34'),_0x22aacc+'%');}}}return _0xff07bd;}function parseAdvancedSearchFilter(_0x3dfd8b,_0xaaaac1){var _0x493835=getSqlClauses();var _0x1b0d0e=as['parseSearch'](_0x3dfd8b);var _0x4ad3c7=_0x1b0d0e[_0x34bc('0x35')];for(var _0x6a3bd3=0x0;_0x6a3bd3<_0x1b0d0e[_0x34bc('0x36')][_0x34bc('0x10')];_0x6a3bd3++){var _0x4a0671=_0x1b0d0e[_0x34bc('0x36')][_0x6a3bd3];var _0x4477bd='i';var _0x32cf3b=_['find'](_0xaaaac1,[_0x34bc('0x9'),_0x4a0671[_0x34bc('0x8')]]);if(_0x32cf3b){var _0xd0e121=as[_0x34bc('0x37')](_0x4477bd,_0x32cf3b['type'],_0x4a0671);_0x493835[_0x34bc('0x38')][_0x4ad3c7](_0xd0e121[_0x34bc('0x39')],_0xd0e121[_0x34bc('0x3a')]['start'],_0xd0e121[_0x34bc('0x3a')][_0x34bc('0x3b')]);}else{switch(_0x4a0671[_0x34bc('0x8')]){case _0x34bc('0x3c'):var _0x348cea=parseReadParameter(_0x4a0671['value']);_0x493835[_0x34bc('0x3d')][_0x34bc('0x3e')](_0x348cea);break;case _0x34bc('0x3f'):if(_0x4a0671[_0x34bc('0x40')]===_0x34bc('0x41')){if(_0x4a0671['value'][_0x34bc('0x42')]('\x20')['length']>0x1){_0x493835[_0x34bc('0x43')][_0x4ad3c7](_0x34bc('0x44'),qs[_0x34bc('0x30')](_0x4a0671[_0x34bc('0x3a')]),null);}else{var _0x53feca='%'+_0x4a0671[_0x34bc('0x3a')]+'%';_0x493835[_0x34bc('0x43')][_0x4ad3c7]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x53feca,_0x53feca,_0x53feca);}}else{_0x32cf3b=_[_0x34bc('0x45')](_0xaaaac1,[_0x34bc('0x9'),_0x34bc('0x46')]);_0x4a0671['field']=_0x34bc('0x46');_0xd0e121=as[_0x34bc('0x37')](_0x4477bd,_0x32cf3b[_0x34bc('0x47')],_0x4a0671);_0x493835[_0x34bc('0x43')][_0x4ad3c7](_0xd0e121[_0x34bc('0x39')],_0xd0e121[_0x34bc('0x3a')][_0x34bc('0x48')],_0xd0e121[_0x34bc('0x3a')][_0x34bc('0x3b')]);}break;case _0x34bc('0x49'):var _0x370c6f=_0x4a0671['value']['split'](',')[_0x34bc('0x13')](function(_0x1e1bf3){return Number(_0x1e1bf3);});var _0x244b64=parseTagParameter(_0x370c6f);_0x493835[_0x34bc('0x4a')][_0x34bc('0x4b')][_0x34bc('0x3e')](_0x244b64);_0x493835['tags'][_0x34bc('0x4c')]=_0x370c6f;break;case'User':if(_0x4a0671[_0x34bc('0x40')]===_0x34bc('0x41')){_0x493835[_0x34bc('0x4d')][_0x4ad3c7]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x4a0671[_0x34bc('0x3a')]+'%',null);}else{_0x32cf3b=_[_0x34bc('0x45')](_0xaaaac1,[_0x34bc('0x9'),_0x34bc('0x4e')]);_0x4a0671[_0x34bc('0x8')]=_0x34bc('0x4e');_0xd0e121=as[_0x34bc('0x37')](_0x4477bd,_0x32cf3b[_0x34bc('0x47')],_0x4a0671);_0x493835[_0x34bc('0x4d')][_0x4ad3c7](_0xd0e121[_0x34bc('0x39')],_0xd0e121[_0x34bc('0x3a')][_0x34bc('0x48')],_0xd0e121['value']['end']);}break;case _0x34bc('0x4f'):case _0x34bc('0x50'):_0xd0e121=as[_0x34bc('0x37')]('me',null,_0x4a0671);_0x493835['body'][_0x4ad3c7](_0xd0e121['text'],_0xd0e121[_0x34bc('0x3a')][_0x34bc('0x48')],_0xd0e121[_0x34bc('0x3a')]['end']);break;}}}return _0x493835;}function parseModelFields(_0x43bfb7,_0x25b02e,_0x49286b){var _0x4627de=utils['getAccountFK'](_0x43bfb7);var _0x465ac8=squel['expr']();var _0x281d6f=_(_0x25b02e)[_0x34bc('0x51')]()[_0x34bc('0x13')](function(_0x374271){return _['some'](_0x49286b,[_0x34bc('0x9'),_0x374271])?_0x374271:undefined;})[_0x34bc('0x52')]()[_0x34bc('0x3a')]();if(_0x281d6f[_0x34bc('0x10')]>0x0){_0x281d6f[_0x34bc('0x53')](function(_0x943e1c){if(_0x943e1c===_0x4627de){_0x465ac8[_0x34bc('0x3e')]('i.'+_0x4627de+_0x34bc('0x12'),[]['concat'](_0x25b02e[_0x943e1c]));}else if(_0x943e1c==='createdAt'){var _0x561ee8=JSON[_0x34bc('0x54')](_0x25b02e[_0x943e1c])[_0x34bc('0x55')];var _0x584ef6=JSON[_0x34bc('0x54')](_0x25b02e[_0x943e1c])[_0x34bc('0x56')];_0x465ac8[_0x34bc('0x3e')](_0x34bc('0x57'),_0x561ee8,_0x584ef6);}else{if(_0x25b02e[_0x943e1c]===_0x34bc('0x58')){_0x465ac8['and']('i.'+_0x943e1c+'\x20IS\x20NULL');}else{_0x465ac8['and']('i.'+_0x943e1c+_0x34bc('0x59'),_0x25b02e[_0x943e1c]);}}});}return _0x465ac8;}function parseQueryParameters(_0x17ce18,_0x151a45,_0x128733){var _0x301c23=getSqlClauses();return Promise['resolve']()[_0x34bc('0x5a')](function(){return parseModelFields(_0x17ce18,_0x151a45,_0x128733);})[_0x34bc('0x5a')](function(_0x3dabaa){_0x301c23[_0x34bc('0x5b')]['and'](_0x3dabaa);return parseReadParameter(_0x151a45[_0x34bc('0x3d')]);})[_0x34bc('0x5a')](function(_0x29d7df){_0x301c23[_0x34bc('0x3d')][_0x34bc('0x3e')](_0x29d7df);return parseTagParameter(_0x151a45[_0x34bc('0x5c')]);})[_0x34bc('0x5a')](function(_0x432e74){_0x301c23[_0x34bc('0x4a')][_0x34bc('0x4b')][_0x34bc('0x3e')](_0x432e74);return parseSearchFilter(_0x17ce18,_0x151a45[_0x34bc('0x5d')]);})[_0x34bc('0x5a')](function(_0x592e81){_0x301c23[_0x34bc('0x5d')]=_0x592e81;return _0x301c23;});}function checkAccountsRestrictions(_0x2cc1f5,_0x35e9ad,_0x3d1f33){var _0x426df1=utils[_0x34bc('0x14')](_0x2cc1f5);var _0x31cf3a=_0x34bc('0x5e')+_[_0x34bc('0x5f')](_0x2cc1f5)+(_0x2cc1f5===_0x34bc('0x60')?_0x34bc('0x61'):_0x34bc('0x62'));var _0x341003=squel[_0x34bc('0x21')]();return Promise['resolve']()[_0x34bc('0x5a')](function(){if(_0x3d1f33[_0x34bc('0x63')]&&_0x35e9ad[_0x34bc('0x6')]===_0x34bc('0x64')){return _0x35e9ad[_0x31cf3a]({'attributes':['id'],'raw':!![]});}})[_0x34bc('0x5a')](function(_0x2b46b8){if(_0x2b46b8){if(_0x2b46b8[_0x34bc('0x10')]===0x0){_0x341003[_0x34bc('0x3e')]('i.'+_0x426df1+_0x34bc('0x65'));}else{_0x341003[_0x34bc('0x3e')]('i.'+_0x426df1+'\x20IN\x20?',_[_0x34bc('0x13')](_0x2b46b8,'id'));}}else if(!_0x3d1f33[_0x426df1]){_0x341003[_0x34bc('0x3e')]('i.'+_0x426df1+_0x34bc('0x66'));}})['then'](function(){return _0x341003;});}function getClosedOrderClause(_0x2f151a,_0x295420){var _0x9dd563='';var _0x3b087=['i.thirdDisposition',_0x34bc('0x67'),_0x34bc('0x68')];if(_0x2f151a===_0x34bc('0x2d')){_0x3b087[_0x34bc('0x69')](_0x34bc('0x6a'));}if(_0x295420[_0x34bc('0x6b')]==='0'&&_0x2f151a===_0x34bc('0x2d')){_0x9dd563=_0x34bc('0x6a');}else{if(_0x295420['closed']==='1'){_0x3b087['shift']();}_0x9dd563=_0x34bc('0x6c')+_0x3b087[_0x34bc('0x6d')](',\x20')+')';}return _0x9dd563;}function getFilteredInteractions(_0x498178,_0x1aad17,_0x1108c5,_0x3066d9){var _0x1ef068=utils[_0x34bc('0x15')](_0x498178);var _0x123fb5=_[_0x34bc('0x5f')](_0x498178)+_0x34bc('0x6e');var _0x2d0d2c=[];var _0x46c64e=getTagsQuery();var _0x98f897={'type':db['Sequelize'][_0x34bc('0x6f')][_0x34bc('0x70')],'raw':!![]};var _0xa4e120=[];var _0x4f85d0=[];return db[_0x34bc('0x71')][_0x34bc('0x72')](_0x46c64e[_0x34bc('0x73')](),_0x98f897)[_0x34bc('0x5a')](function(_0x570876){_0x2d0d2c=_[_0x34bc('0x74')](_0x570876,'id');_0x98f897=_[_0x34bc('0x75')](_0x98f897,{'model':db[_0x123fb5],'mapToModel':!![],'nest':!![]});if(_0x1108c5[_0x34bc('0x5b')]){_0x3066d9[_0x34bc('0x76')][_0x34bc('0x53')](function(_0x4b209b){_0x1aad17[_0x34bc('0x8')]('i.'+_0x4b209b);});}else{_0x1aad17[_0x34bc('0x8')](_0x34bc('0x77'),_0x34bc('0x3c'));_0x1aad17['field'](_0x34bc('0x78'),_0x34bc('0x79'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x7a'),_0x34bc('0x7b'));if(_0x498178===_0x34bc('0x2d')){_0x1aad17['field']('a.email',_0x34bc('0x7c'));_0x1aad17[_0x34bc('0x8')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0x34bc('0x7d'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x7e'));_0x1aad17[_0x34bc('0x8')]('i.createdAt');_0x1aad17['field'](_0x34bc('0x7f'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x80'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x81'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x82'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x83'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x84'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x85'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x68'));_0x1aad17[_0x34bc('0x8')]('i.secondDisposition');_0x1aad17[_0x34bc('0x8')](_0x34bc('0x86'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x6a'));_0x1aad17[_0x34bc('0x8')]('i.to');_0x1aad17[_0x34bc('0x8')](_0x34bc('0x87'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x88'));_0x1aad17[_0x34bc('0x8')]('i.UserId');}else if(_0x498178===_0x34bc('0x2b')){_0x1aad17[_0x34bc('0x8')](_0x34bc('0x89'),_0x34bc('0x7d'));}else{_0x1aad17[_0x34bc('0x8')](_0x34bc('0x8a'),'contactName');}if(_0x498178!==_0x34bc('0x2d')){_0x1aad17[_0x34bc('0x8')]('i.*');}_0x1aad17[_0x34bc('0x8')](_0x34bc('0x8b'),_0x34bc('0x8c'));_0x1aad17['field']('c.lastName',_0x34bc('0x8d'));_0x1aad17['field']('c.email','Contact.email');_0x1aad17[_0x34bc('0x8')](_0x34bc('0x8e'),_0x34bc('0x8f'));_0x1aad17['field'](_0x34bc('0x90'),_0x34bc('0x91'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x92'),_0x34bc('0x93'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x94'),_0x34bc('0x95'));_0x1aad17[_0x34bc('0x8')](_0x34bc('0x96'),_0x34bc('0x97'));_0x1aad17[_0x34bc('0x8')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x3066d9[_0x34bc('0x98')]){_0x1aad17[_0x34bc('0x98')](_0x3066d9[_0x34bc('0x98')]);}if(_0x3066d9[_0x34bc('0x99')]){_0x1aad17[_0x34bc('0x99')](_0x3066d9[_0x34bc('0x99')]);}return db[_0x34bc('0x71')][_0x34bc('0x72')](_0x1aad17[_0x34bc('0x73')](),_0x98f897);})[_0x34bc('0x5a')](function(_0x498a83){_0xa4e120=_0x498a83;var _0x288613=getUsersQuery(_0x498178,_0xa4e120);return db[_0x34bc('0x71')][_0x34bc('0x72')](_0x288613[_0x34bc('0x73')](),_0x98f897);})[_0x34bc('0x5a')](function(_0x21261a){_0x4f85d0=_[_0x34bc('0x9a')](_0x21261a,_0x1ef068);if(_0x498178===_0x34bc('0x2d')){return db[_0x34bc('0x9b')]['findOne']({'attributes':[_0x34bc('0x9c')],'raw':!![]});}})['then'](function(_0x5ba38f){var _0x21a70a=_0x5ba38f?_0x5ba38f['enableEmailPreview']:undefined;var _0x4d25e2=_0xa4e120[_0x34bc('0x13')](function(_0x47275a){return updateInteraction(_0x47275a,_0x2d0d2c,_0x4f85d0,_0x21a70a);});return Promise['all'](_0x4d25e2);});}function countFilteredInteractions(_0x139fcc,_0x24333e){var _0x316a2c=_0x139fcc[_0x34bc('0x9d')]();_0x316a2c['field'](_0x34bc('0x9e'));_0x316a2c[_0x34bc('0x8')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');var _0x49da95=utils[_0x34bc('0x22')](_0x24333e);if(!_[_0x34bc('0x9f')](_0x49da95)){_0x316a2c[_0x34bc('0x11')](_0x34bc('0xa0'),_0x49da95);}var _0x1bcfc9={'type':db[_0x34bc('0xa1')][_0x34bc('0x6f')][_0x34bc('0x70')],'raw':!![]};return db[_0x34bc('0x71')]['query'](_0x316a2c[_0x34bc('0x73')](),_0x1bcfc9);}module[_0x34bc('0xa2')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0x0c5d=['conditions','find','buildExpression','default','text','start','value','unreadMessages','read','and','Contact','operator','$substring','split','contact','ContactId','type','end','map','ids','user','UserId','body','plainBody','some','compact','concat','createdAt','parse','$gte','$lte','null','resolve','then','fields','tag','filter','get','capitalize','Websites','Accounts','\x20IS\x20NULL','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','QueryTypes','SELECT','sequelize','query','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','a.email','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.ContactId','i.MailAccountId','i.UserId','openchannel','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','toString','groupBy','Setting','findOne','enableEmailPreview','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','Sequelize','exports','lodash','squel','../parsers/qs','updateInteraction','./utils','../../mysqldb','role','select','name','field','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id','u.fullname','ui.','left_join','users','length','where','\x20IN\x20?','getInteractionsTables','getAccountFK','interactions','cm_contacts','accounts','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id','it.','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','{OPERATOR}','replace','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.from\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','parseSearch','sqlOperator'];(function(_0x3fc51b,_0x5b2bbf){var _0x3a5937=function(_0x4fbc7c){while(--_0x4fbc7c){_0x3fc51b['push'](_0x3fc51b['shift']());}};_0x3a5937(++_0x5b2bbf);}(_0x0c5d,0x6c));var _0xd0c5=function(_0x416dfc,_0x469d36){_0x416dfc=_0x416dfc-0x0;var _0x3d093b=_0x0c5d[_0x416dfc];return _0x3d093b;};'use strict';var _=require(_0xd0c5('0x0'));var squel=require(_0xd0c5('0x1'));var as=require('../parsers/advancedSearch');var qs=require(_0xd0c5('0x2'));var updateInteraction=require('./update-interaction')[_0xd0c5('0x3')];var utils=require(_0xd0c5('0x4'));var db=require(_0xd0c5('0x5'))['db'];function skipInteractionsQuery(_0x177811,_0x4664bc,_0xc3a9b9){var _0x166636=![];var _0x121911=utils['getAccountFK'](_0x177811);if(_0x4664bc[_0xd0c5('0x6')]==='agent'&&!_0xc3a9b9['search']&&!_0xc3a9b9[_0x121911]){_0x166636=!![];}return _0x166636;}function getTagsQuery(){return squel[_0xd0c5('0x7')]()['field']('id')['field'](_0xd0c5('0x8'))[_0xd0c5('0x9')]('color')[_0xd0c5('0xa')](_0xd0c5('0xb'));}function getUsersQuery(_0x5ae844,_0x458d02){var _0x410037=utils[_0xd0c5('0xc')](_0x5ae844);var _0x30ea26=_0xd0c5('0xd')+_0x5ae844+_0xd0c5('0xe');var _0x1310cf=squel[_0xd0c5('0x7')]()[_0xd0c5('0x9')](_0xd0c5('0xf'))[_0xd0c5('0x9')](_0xd0c5('0x10'))['field'](_0xd0c5('0x11')+_0x410037)[_0xd0c5('0xa')](_0x30ea26,'ui')[_0xd0c5('0x12')](_0xd0c5('0x13'),'u','u.id\x20=\x20ui.UserId');if(_0x458d02[_0xd0c5('0x14')]>0x0){_0x1310cf[_0xd0c5('0x15')](_0xd0c5('0x11')+_0x410037+_0xd0c5('0x16'),_['map'](_0x458d02,'id'));}return _0x1310cf;}function getInteractionsQuery(_0x2be13d){var _0x5809ba=utils[_0xd0c5('0x17')](_0x2be13d);var _0x57c76a=utils[_0xd0c5('0x18')](_0x2be13d);var _0x692aeb=utils[_0xd0c5('0xc')](_0x2be13d);return squel[_0xd0c5('0x7')]()[_0xd0c5('0xa')](_0x5809ba[_0xd0c5('0x19')],'i')[_0xd0c5('0x12')](_0xd0c5('0x1a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xd0c5('0x12')](_0xd0c5('0x13'),'o','o.id\x20=\x20i.UserId')[_0xd0c5('0x12')](_0x5809ba[_0xd0c5('0x1b')],'a',_0xd0c5('0x1c')+_0x57c76a)[_0xd0c5('0x12')](_0x5809ba[_0xd0c5('0x1d')],'me',_0xd0c5('0x1e')+_0x692aeb+_0xd0c5('0x1f'))['left_join'](_0x5809ba['interactionsTags'],'it',_0xd0c5('0x20')+_0x692aeb+_0xd0c5('0x1f'))[_0xd0c5('0x12')](_0xd0c5('0xb'),'t','t.id\x20=\x20it.TagId');}function getSqlClauses(){var _0x185e33={'body':squel['expr'](),'contact':squel['expr'](),'default':squel[_0xd0c5('0x21')](),'fields':squel[_0xd0c5('0x21')](),'filter':squel[_0xd0c5('0x21')](),'read':squel[_0xd0c5('0x21')](),'tags':{'clause':squel[_0xd0c5('0x21')](),'ids':null},'user':squel[_0xd0c5('0x21')]()};return _0x185e33;}function parseTagParameter(_0xbcef61){var _0x17443b=squel[_0xd0c5('0x21')]();if(_0xbcef61){var _0x198e39=utils[_0xd0c5('0x22')](_0xbcef61);_0x198e39[_0xd0c5('0x23')](function(_0x3502fe){_0x17443b['or'](_0xd0c5('0x24'),'%,'+_0x3502fe+',%');});}return _0x17443b;}function parseReadParameter(_0x1df662){var _0x2869a3='';if(_0x1df662){_0x2869a3=_0xd0c5('0x25');if(_0x1df662==='1'){_0x2869a3=_0x2869a3['replace'](_0xd0c5('0x26'),'=');}else{_0x2869a3=_0x2869a3[_0xd0c5('0x27')](_0xd0c5('0x26'),'>');}}return _0x2869a3;}function parseSearchFilter(_0x21ed42,_0xa2afc1){var _0xcca299=squel[_0xd0c5('0x21')]();if(_0xa2afc1){var _0x571410=_0xa2afc1[_0xd0c5('0x27')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xd0c5('0x28')](_0x571410)){_0xcca299['or'](_0xd0c5('0x29'),_0x571410+'%');if([_0xd0c5('0x2a'),_0xd0c5('0x2b')][_0xd0c5('0x2c')](_0x21ed42)){_0xcca299['or'](_0xd0c5('0x2d'),_0x571410+'%');}else if(_0x21ed42===_0xd0c5('0x2e')){_0xcca299['or']('i.fax\x20LIKE\x20?',_0x571410+'%');}else if(_0x21ed42==='openchannel'){_0xcca299['or'](_0xd0c5('0x2f'),_0x571410+'%');}}else if(_0x21ed42==='mail'&&qs[_0xd0c5('0x30')](_0x571410)){_0xcca299['or'](_0xd0c5('0x31'),_0x571410+'%');}else{if(_0x21ed42===_0xd0c5('0x32')){_0xcca299['or'](_0xd0c5('0x33'),qs['getFullTextValue'](_0x571410))['or'](_0xd0c5('0x34'),qs[_0xd0c5('0x35')](_0x571410));}else{if(_0x21ed42!=='fax'){_0xcca299['or'](_0xd0c5('0x36'),qs['getFullTextValue'](_0x571410));}_0xcca299['or'](_0xd0c5('0x37'),_0x571410+'%');}}}return _0xcca299;}function parseAdvancedSearchFilter(_0x2bddff,_0x44b67a){var _0x511f5c=getSqlClauses();var _0x2fda97=as[_0xd0c5('0x38')](_0x2bddff);var _0x2e8f04=_0x2fda97[_0xd0c5('0x39')];for(var _0x432d57=0x0;_0x432d57<_0x2fda97[_0xd0c5('0x3a')][_0xd0c5('0x14')];_0x432d57++){var _0x323fb3=_0x2fda97[_0xd0c5('0x3a')][_0x432d57];var _0x54042='i';var _0x14c397=_[_0xd0c5('0x3b')](_0x44b67a,[_0xd0c5('0x8'),_0x323fb3['field']]);if(_0x14c397){var _0x4e3d0e=as[_0xd0c5('0x3c')](_0x54042,_0x14c397['type'],_0x323fb3);_0x511f5c[_0xd0c5('0x3d')][_0x2e8f04](_0x4e3d0e[_0xd0c5('0x3e')],_0x4e3d0e['value'][_0xd0c5('0x3f')],_0x4e3d0e[_0xd0c5('0x40')]['end']);}else{switch(_0x323fb3[_0xd0c5('0x9')]){case _0xd0c5('0x41'):var _0x831e0b=parseReadParameter(_0x323fb3[_0xd0c5('0x40')]);_0x511f5c[_0xd0c5('0x42')][_0xd0c5('0x43')](_0x831e0b);break;case _0xd0c5('0x44'):if(_0x323fb3[_0xd0c5('0x45')]===_0xd0c5('0x46')){if(_0x323fb3[_0xd0c5('0x40')][_0xd0c5('0x47')]('\x20')[_0xd0c5('0x14')]>0x1){_0x511f5c[_0xd0c5('0x48')][_0x2e8f04]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xd0c5('0x35')](_0x323fb3[_0xd0c5('0x40')]),null);}else{var _0x215048='%'+_0x323fb3[_0xd0c5('0x40')]+'%';_0x511f5c[_0xd0c5('0x48')][_0x2e8f04]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x215048,_0x215048,_0x215048);}}else{_0x14c397=_['find'](_0x44b67a,[_0xd0c5('0x8'),_0xd0c5('0x49')]);_0x323fb3[_0xd0c5('0x9')]=_0xd0c5('0x49');_0x4e3d0e=as['buildExpression'](_0x54042,_0x14c397[_0xd0c5('0x4a')],_0x323fb3);_0x511f5c[_0xd0c5('0x48')][_0x2e8f04](_0x4e3d0e[_0xd0c5('0x3e')],_0x4e3d0e[_0xd0c5('0x40')][_0xd0c5('0x3f')],_0x4e3d0e[_0xd0c5('0x40')][_0xd0c5('0x4b')]);}break;case'Tag':var _0x36ae03=_0x323fb3[_0xd0c5('0x40')]['split'](',')[_0xd0c5('0x4c')](function(_0x2634f3){return Number(_0x2634f3);});var _0x17ab06=parseTagParameter(_0x36ae03);_0x511f5c['tags']['clause']['and'](_0x17ab06);_0x511f5c['tags'][_0xd0c5('0x4d')]=_0x36ae03;break;case'User':if(_0x323fb3[_0xd0c5('0x45')]==='$substring'){_0x511f5c[_0xd0c5('0x4e')][_0x2e8f04]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x323fb3[_0xd0c5('0x40')]+'%',null);}else{_0x14c397=_[_0xd0c5('0x3b')](_0x44b67a,[_0xd0c5('0x8'),_0xd0c5('0x4f')]);_0x323fb3[_0xd0c5('0x9')]='UserId';_0x4e3d0e=as[_0xd0c5('0x3c')](_0x54042,_0x14c397[_0xd0c5('0x4a')],_0x323fb3);_0x511f5c[_0xd0c5('0x4e')][_0x2e8f04](_0x4e3d0e[_0xd0c5('0x3e')],_0x4e3d0e[_0xd0c5('0x40')][_0xd0c5('0x3f')],_0x4e3d0e['value'][_0xd0c5('0x4b')]);}break;case _0xd0c5('0x50'):case _0xd0c5('0x51'):_0x4e3d0e=as[_0xd0c5('0x3c')]('me',null,_0x323fb3);_0x511f5c['body'][_0x2e8f04](_0x4e3d0e[_0xd0c5('0x3e')],_0x4e3d0e[_0xd0c5('0x40')][_0xd0c5('0x3f')],_0x4e3d0e[_0xd0c5('0x40')][_0xd0c5('0x4b')]);break;}}}return _0x511f5c;}function parseModelFields(_0x43d0ad,_0x17d71c,_0x269d63){var _0x393094=utils[_0xd0c5('0x18')](_0x43d0ad);var _0x26fe06=squel[_0xd0c5('0x21')]();var _0x592ff6=_(_0x17d71c)['keys']()[_0xd0c5('0x4c')](function(_0x1dd3aa){return _[_0xd0c5('0x52')](_0x269d63,[_0xd0c5('0x8'),_0x1dd3aa])?_0x1dd3aa:undefined;})[_0xd0c5('0x53')]()[_0xd0c5('0x40')]();if(_0x592ff6['length']>0x0){_0x592ff6[_0xd0c5('0x23')](function(_0x2c2485){if(_0x2c2485===_0x393094){_0x26fe06[_0xd0c5('0x43')]('i.'+_0x393094+_0xd0c5('0x16'),[][_0xd0c5('0x54')](_0x17d71c[_0x2c2485]));}else if(_0x2c2485===_0xd0c5('0x55')){var _0x3441eb=JSON[_0xd0c5('0x56')](_0x17d71c[_0x2c2485])[_0xd0c5('0x57')];var _0x278962=JSON[_0xd0c5('0x56')](_0x17d71c[_0x2c2485])[_0xd0c5('0x58')];_0x26fe06[_0xd0c5('0x43')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3441eb,_0x278962);}else{if(_0x17d71c[_0x2c2485]===_0xd0c5('0x59')){_0x26fe06[_0xd0c5('0x43')]('i.'+_0x2c2485+'\x20IS\x20NULL');}else{_0x26fe06[_0xd0c5('0x43')]('i.'+_0x2c2485+'\x20=\x20?',_0x17d71c[_0x2c2485]);}}});}return _0x26fe06;}function parseQueryParameters(_0x588347,_0x34c5c5,_0x5ff7d5){var _0x3b2ee8=getSqlClauses();return Promise[_0xd0c5('0x5a')]()[_0xd0c5('0x5b')](function(){return parseModelFields(_0x588347,_0x34c5c5,_0x5ff7d5);})[_0xd0c5('0x5b')](function(_0x23fcd6){_0x3b2ee8[_0xd0c5('0x5c')][_0xd0c5('0x43')](_0x23fcd6);return parseReadParameter(_0x34c5c5[_0xd0c5('0x42')]);})[_0xd0c5('0x5b')](function(_0x476ed3){_0x3b2ee8[_0xd0c5('0x42')][_0xd0c5('0x43')](_0x476ed3);return parseTagParameter(_0x34c5c5[_0xd0c5('0x5d')]);})[_0xd0c5('0x5b')](function(_0x1df7ae){_0x3b2ee8['tags']['clause'][_0xd0c5('0x43')](_0x1df7ae);return parseSearchFilter(_0x588347,_0x34c5c5[_0xd0c5('0x5e')]);})['then'](function(_0x5c3b61){_0x3b2ee8[_0xd0c5('0x5e')]=_0x5c3b61;return _0x3b2ee8;});}function checkAccountsRestrictions(_0x245038,_0x3a5bf9,_0x164646){var _0x268fb0=utils[_0xd0c5('0x18')](_0x245038);var _0x19db83=_0xd0c5('0x5f')+_[_0xd0c5('0x60')](_0x245038)+(_0x245038==='chat'?_0xd0c5('0x61'):_0xd0c5('0x62'));var _0x4ec681=squel[_0xd0c5('0x21')]();return Promise['resolve']()[_0xd0c5('0x5b')](function(){if(_0x164646['search']&&_0x3a5bf9[_0xd0c5('0x6')]==='agent'){return _0x3a5bf9[_0x19db83]({'attributes':['id'],'raw':!![]});}})[_0xd0c5('0x5b')](function(_0x339710){if(_0x339710){if(_0x339710[_0xd0c5('0x14')]===0x0){_0x4ec681[_0xd0c5('0x43')]('i.'+_0x268fb0+_0xd0c5('0x63'));}else{_0x4ec681[_0xd0c5('0x43')]('i.'+_0x268fb0+_0xd0c5('0x16'),_[_0xd0c5('0x4c')](_0x339710,'id'));}}else if(!_0x164646[_0x268fb0]){_0x4ec681[_0xd0c5('0x43')]('i.'+_0x268fb0+_0xd0c5('0x64'));}})[_0xd0c5('0x5b')](function(){return _0x4ec681;});}function getClosedOrderClause(_0x3c7e4b,_0x5599cf){var _0x160db5='';var _0x4b8eee=[_0xd0c5('0x65'),_0xd0c5('0x66'),'i.disposition'];if(_0x3c7e4b===_0xd0c5('0x32')){_0x4b8eee[_0xd0c5('0x67')](_0xd0c5('0x68'));}if(_0x5599cf[_0xd0c5('0x69')]==='0'&&_0x3c7e4b===_0xd0c5('0x32')){_0x160db5=_0xd0c5('0x68');}else{if(_0x5599cf['closed']==='1'){_0x4b8eee[_0xd0c5('0x6a')]();}_0x160db5=_0xd0c5('0x6b')+_0x4b8eee[_0xd0c5('0x6c')](',\x20')+')';}return _0x160db5;}function getFilteredInteractions(_0x22815a,_0x5c170d,_0x3440db,_0x229405){var _0x23783c=utils[_0xd0c5('0xc')](_0x22815a);var _0x19b799=_[_0xd0c5('0x60')](_0x22815a)+_0xd0c5('0x6d');var _0xcab1fc=[];var _0x66078a=getTagsQuery();var _0x3d283a={'type':db['Sequelize'][_0xd0c5('0x6e')][_0xd0c5('0x6f')],'raw':!![]};var _0x3b27d7=[];var _0x427461=[];return db[_0xd0c5('0x70')][_0xd0c5('0x71')](_0x66078a['toString'](),_0x3d283a)[_0xd0c5('0x5b')](function(_0x490c93){_0xcab1fc=_[_0xd0c5('0x72')](_0x490c93,'id');_0x3d283a=_[_0xd0c5('0x73')](_0x3d283a,{'model':db[_0x19b799],'mapToModel':!![],'nest':!![]});if(_0x3440db[_0xd0c5('0x5c')]){_0x229405[_0xd0c5('0x74')][_0xd0c5('0x23')](function(_0x5ca677){_0x5c170d['field']('i.'+_0x5ca677);});}else{_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x75'),_0xd0c5('0x41'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x76'),_0xd0c5('0x77'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x78'),_0xd0c5('0x79'));if(_0x22815a===_0xd0c5('0x32')){_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x7a'),_0xd0c5('0x7b'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x7c'),_0xd0c5('0x7d'));_0x5c170d[_0xd0c5('0x9')]('i.id');_0x5c170d[_0xd0c5('0x9')]('i.createdAt');_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x7e'));_0x5c170d['field'](_0xd0c5('0x7f'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x80'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x81'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x82'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x83'));_0x5c170d['field']('i.subject');_0x5c170d[_0xd0c5('0x9')]('i.disposition');_0x5c170d['field'](_0xd0c5('0x66'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x65'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x68'));_0x5c170d['field']('i.to');_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x84'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x85'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x86'));}else if(_0x22815a===_0xd0c5('0x87')){_0x5c170d['field'](_0xd0c5('0x88'),_0xd0c5('0x7d'));}else{_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x89'),'contactName');}if(_0x22815a!==_0xd0c5('0x32')){_0x5c170d['field'](_0xd0c5('0x8a'));}_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x8b'),_0xd0c5('0x8c'));_0x5c170d[_0xd0c5('0x9')]('c.lastName',_0xd0c5('0x8d'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x8e'),_0xd0c5('0x8f'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x90'),'Contact.phone');_0x5c170d[_0xd0c5('0x9')]('c.mobile',_0xd0c5('0x91'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x92'),_0xd0c5('0x93'));_0x5c170d[_0xd0c5('0x9')](_0xd0c5('0x94'),_0xd0c5('0x95'));_0x5c170d[_0xd0c5('0x9')]('o.internal',_0xd0c5('0x96'));_0x5c170d['field'](_0xd0c5('0x97'),_0xd0c5('0x98'));}if(_0x229405[_0xd0c5('0x99')]){_0x5c170d[_0xd0c5('0x99')](_0x229405[_0xd0c5('0x99')]);}if(_0x229405[_0xd0c5('0x9a')]){_0x5c170d[_0xd0c5('0x9a')](_0x229405[_0xd0c5('0x9a')]);}return db[_0xd0c5('0x70')]['query'](_0x5c170d[_0xd0c5('0x9b')](),_0x3d283a);})[_0xd0c5('0x5b')](function(_0x15d596){_0x3b27d7=_0x15d596;var _0xd3c843=getUsersQuery(_0x22815a,_0x3b27d7);return db[_0xd0c5('0x70')]['query'](_0xd3c843[_0xd0c5('0x9b')](),_0x3d283a);})[_0xd0c5('0x5b')](function(_0x53ad30){_0x427461=_[_0xd0c5('0x9c')](_0x53ad30,_0x23783c);if(_0x22815a===_0xd0c5('0x32')){return db[_0xd0c5('0x9d')][_0xd0c5('0x9e')]({'attributes':[_0xd0c5('0x9f')],'raw':!![]});}})[_0xd0c5('0x5b')](function(_0xb4efc5){var _0x463f3d=_0xb4efc5?_0xb4efc5[_0xd0c5('0x9f')]:undefined;var _0x4b79f3=_0x3b27d7[_0xd0c5('0x4c')](function(_0x30044e){return updateInteraction(_0x30044e,_0xcab1fc,_0x427461,_0x463f3d);});return Promise['all'](_0x4b79f3);});}function countFilteredInteractions(_0xd0c69e,_0x246793){var _0x287c00=_0xd0c69e[_0xd0c5('0xa0')]();_0x287c00[_0xd0c5('0x9')](_0xd0c5('0xa1'));_0x287c00[_0xd0c5('0x9')](_0xd0c5('0x75'),_0xd0c5('0x41'));var _0x1ad7db=utils['getSelectedTags'](_0x246793);if(!_[_0xd0c5('0xa2')](_0x1ad7db)){_0x287c00['where'](_0xd0c5('0xa3'),_0x1ad7db);}var _0x233bde={'type':db[_0xd0c5('0xa4')][_0xd0c5('0x6e')][_0xd0c5('0x6f')],'raw':!![]};return db[_0xd0c5('0x70')][_0xd0c5('0x71')](_0x287c00[_0xd0c5('0x9b')](),_0x233bde);}module[_0xd0c5('0xa5')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 7c8451f..a6cc213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x043b=['waiting','unmanaged','abandoned','closed','disposition','UserId','answered','talking','total','findOne','out','plainBody','-id','lastMsgText','catch','updateInteraction','then','Users','TagIds','lodash','../../mysqldb','fullname','split','push'];(function(_0x204967,_0x50bb66){var _0x31fca9=function(_0x1f2262){while(--_0x1f2262){_0x204967['push'](_0x204967['shift']());}};_0x31fca9(++_0x50bb66);}(_0x043b,0xd3));var _0xb043=function(_0x4ed6bb,_0x4a55a5){_0x4ed6bb=_0x4ed6bb-0x0;var _0x57e1e4=_0x043b[_0x4ed6bb];return _0x57e1e4;};'use strict';var _=require(_0xb043('0x0'));var db=require(_0xb043('0x1'))['db'];function getInteractionUsers(_0x434e80,_0x469231){return new Promise(function(_0x24e61b,_0x420a4c){try{var _0x1b1be9=[];if(_0x469231[_0x434e80]){_0x1b1be9=_0x469231[_0x434e80]['map'](function(_0x486ed2){return{'id':_0x486ed2['id'],'fullname':_0x486ed2[_0xb043('0x2')]};});}return _0x24e61b(_0x1b1be9);}catch(_0x133bda){_0x420a4c(_0x133bda);}});}function getInteractionTags(_0x444a3e,_0x2049a8){var _0x5ee76d=[];if(_0x444a3e){_0x444a3e[_0xb043('0x3')](',')['forEach'](function(_0x5b90fa){_0x5ee76d[_0xb043('0x4')](_0x2049a8[_0x5b90fa]);});}return _0x5ee76d;}function updateWaitingCounter(_0x184e11){if(_0x184e11['waiting']){_0x184e11['waiting']-=0x1;}}function updateInteractionCounters(_0x3c2ff4){_0x3c2ff4[_0xb043('0x5')]=0x0;_0x3c2ff4['talking']=0x0;_0x3c2ff4['answered']=0x0;_0x3c2ff4[_0xb043('0x6')]=0x0;_0x3c2ff4[_0xb043('0x7')]=0x0;_0x3c2ff4['total']=0x0;if(_0x3c2ff4[_0xb043('0x8')]){if(_0x3c2ff4[_0xb043('0x9')]==='abandoned'){_0x3c2ff4[_0xb043('0x7')]+=0x1;updateWaitingCounter(_0x3c2ff4);}if(_0x3c2ff4[_0xb043('0xa')]){_0x3c2ff4[_0xb043('0xb')]+=0x1;if(_0x3c2ff4[_0xb043('0xc')]){_0x3c2ff4['talking']-=0x1;}}else{if(_0x3c2ff4[_0xb043('0x9')]){_0x3c2ff4[_0xb043('0x6')]+=0x1;updateWaitingCounter(_0x3c2ff4);}}}else{if(!_0x3c2ff4['UserId']){_0x3c2ff4[_0xb043('0x5')]+=0x1;}if(_0x3c2ff4[_0xb043('0xa')]){_0x3c2ff4[_0xb043('0xc')]+=0x1;updateWaitingCounter(_0x3c2ff4);}}_0x3c2ff4[_0xb043('0xd')]+=0x1;return _0x3c2ff4;}function getLastMessageText(_0x1bb980){return db['MailMessage'][_0xb043('0xe')]({'where':{'$and':[{'MailInteractionId':_0x1bb980['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xb043('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xb043('0x10')],'order':_0xb043('0x11'),'raw':!![]})['then'](function(_0x14abf7){if(_0x14abf7&&_0x14abf7[_0xb043('0x10')]){_0x1bb980[_0xb043('0x12')]=_['trimStart'](_0x14abf7[_0xb043('0x10')]);}return _0x1bb980;})[_0xb043('0x13')](function(_0x19b3f4){throw _0x19b3f4;});}exports[_0xb043('0x14')]=function(_0x4daaff,_0x849c88,_0x30f9b4,_0x4e8984){return new Promise(function(_0x2f73ab,_0x32ea6e){return getInteractionUsers(_0x4daaff['id'],_0x30f9b4)[_0xb043('0x15')](function(_0x3d0676){_0x4daaff[_0xb043('0x16')]=_0x3d0676;return getInteractionTags(_0x4daaff[_0xb043('0x17')],_0x849c88);})['then'](function(_0x30dd1e){_0x4daaff['Tags']=_0x30dd1e;delete _0x4daaff[_0xb043('0x17')];return updateInteractionCounters(_0x4daaff);})[_0xb043('0x15')](function(_0x260843){if(_0x4e8984){return getLastMessageText(_0x260843);}else{return _0x260843;}})['then'](function(_0x5a6d46){_0x2f73ab(_0x5a6d46);})[_0xb043('0x13')](function(_0x2ec788){_0x32ea6e(_0x2ec788);});});};
\ No newline at end of file
+var _0x3f00=['updateInteraction','Users','TagIds','catch','../../mysqldb','map','fullname','split','forEach','waiting','unmanaged','total','closed','abandoned','UserId','answered','talking','disposition','MailMessage','out','plainBody','-id','then','lastMsgText'];(function(_0x2fc30a,_0x349fbd){var _0x5cad21=function(_0xbca2f7){while(--_0xbca2f7){_0x2fc30a['push'](_0x2fc30a['shift']());}};_0x5cad21(++_0x349fbd);}(_0x3f00,0x19c));var _0x03f0=function(_0x3d9555,_0xdc4e50){_0x3d9555=_0x3d9555-0x0;var _0xa1df2d=_0x3f00[_0x3d9555];return _0xa1df2d;};'use strict';var _=require('lodash');var db=require(_0x03f0('0x0'))['db'];function getInteractionUsers(_0x56ce5f,_0x2418ef){return new Promise(function(_0x3b90ba,_0xcdf2ff){try{var _0x4daa87=[];if(_0x2418ef[_0x56ce5f]){_0x4daa87=_0x2418ef[_0x56ce5f][_0x03f0('0x1')](function(_0x192358){return{'id':_0x192358['id'],'fullname':_0x192358[_0x03f0('0x2')]};});}return _0x3b90ba(_0x4daa87);}catch(_0x176b73){_0xcdf2ff(_0x176b73);}});}function getInteractionTags(_0x5dc2ce,_0x4a57dc){var _0x16e26b=[];if(_0x5dc2ce){_0x5dc2ce[_0x03f0('0x3')](',')[_0x03f0('0x4')](function(_0x10e979){_0x16e26b['push'](_0x4a57dc[_0x10e979]);});}return _0x16e26b;}function updateWaitingCounter(_0x3b3f28){if(_0x3b3f28[_0x03f0('0x5')]){_0x3b3f28[_0x03f0('0x5')]-=0x1;}}function updateInteractionCounters(_0xb6a963){_0xb6a963[_0x03f0('0x5')]=0x0;_0xb6a963['talking']=0x0;_0xb6a963['answered']=0x0;_0xb6a963[_0x03f0('0x6')]=0x0;_0xb6a963['abandoned']=0x0;_0xb6a963[_0x03f0('0x7')]=0x0;if(_0xb6a963[_0x03f0('0x8')]){if(_0xb6a963['disposition']===_0x03f0('0x9')){_0xb6a963['abandoned']+=0x1;updateWaitingCounter(_0xb6a963);}if(_0xb6a963[_0x03f0('0xa')]){_0xb6a963[_0x03f0('0xb')]+=0x1;if(_0xb6a963['talking']){_0xb6a963[_0x03f0('0xc')]-=0x1;}}else{if(_0xb6a963[_0x03f0('0xd')]){_0xb6a963[_0x03f0('0x6')]+=0x1;updateWaitingCounter(_0xb6a963);}}}else{if(!_0xb6a963[_0x03f0('0xa')]){_0xb6a963[_0x03f0('0x5')]+=0x1;}if(_0xb6a963['UserId']){_0xb6a963[_0x03f0('0xc')]+=0x1;updateWaitingCounter(_0xb6a963);}}_0xb6a963[_0x03f0('0x7')]+=0x1;return _0xb6a963;}function getLastMessageText(_0x4879b7){return db[_0x03f0('0xe')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x4879b7['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x03f0('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x03f0('0x10')],'order':_0x03f0('0x11'),'raw':!![]})[_0x03f0('0x12')](function(_0x305e13){if(_0x305e13&&_0x305e13[_0x03f0('0x10')]){_0x4879b7[_0x03f0('0x13')]=_['trimStart'](_0x305e13['plainBody']);}return _0x4879b7;})['catch'](function(_0xcc008d){throw _0xcc008d;});}exports[_0x03f0('0x14')]=function(_0x4a9a60,_0x3ea975,_0xbe9e7b,_0x4bf9e8){return new Promise(function(_0x47b237,_0x2f372a){return getInteractionUsers(_0x4a9a60['id'],_0xbe9e7b)['then'](function(_0x3cc9b9){_0x4a9a60[_0x03f0('0x15')]=_0x3cc9b9;return getInteractionTags(_0x4a9a60[_0x03f0('0x16')],_0x3ea975);})['then'](function(_0x49f206){_0x4a9a60['Tags']=_0x49f206;delete _0x4a9a60[_0x03f0('0x16')];return updateInteractionCounters(_0x4a9a60);})[_0x03f0('0x12')](function(_0xaf847){if(_0x4bf9e8){return getLastMessageText(_0xaf847);}else{return _0xaf847;}})[_0x03f0('0x12')](function(_0x4be5bf){_0x47b237(_0x4be5bf);})[_0x03f0('0x17')](function(_0x12ee33){_0x2f372a(_0x12ee33);});});};
\ No newline at end of file
index 6bd7a47..84f2be2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8caa=['_interaction_has_tags','_messages','user_has_','isArray','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','stringify','Interaction','findOne','update','then','catch','lodash','../../config/logger','openchannel-interactions','mail-interactions','whatsapp-interactions','Website','Account','capitalize','upperFirst','InteractionId','unknown','chat','accounts','_interactions'];(function(_0x22e38a,_0x48b8d1){var _0x8ae4fc=function(_0x447626){while(--_0x447626){_0x22e38a['push'](_0x22e38a['shift']());}};_0x8ae4fc(++_0x48b8d1);}(_0x8caa,0xdc));var _0xa8ca=function(_0x31f6d2,_0x49129c){_0x31f6d2=_0x31f6d2-0x0;var _0xd9d2ba=_0x8caa[_0x31f6d2];return _0xd9d2ba;};'use strict';var _=require(_0xa8ca('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0xa8ca('0x1'))(_0xa8ca('0x2')),'mail':require(_0xa8ca('0x1'))(_0xa8ca('0x3')),'fax':require('../../config/logger')('fax-interactions'),'sms':require(_0xa8ca('0x1'))('sms-interactions'),'chat':require(_0xa8ca('0x1'))('chat-interactions'),'whatsapp':require(_0xa8ca('0x1'))(_0xa8ca('0x4'))};function getAccountFK(_0x1daf97){return _['capitalize'](_0x1daf97)+(_0x1daf97==='chat'?_0xa8ca('0x5'):_0xa8ca('0x6'))+'Id';}function getInteractionFK(_0x56924c){return _[_0xa8ca('0x7')](_0x56924c)+'InteractionId';}function getInteractionId(_0x387d94,_0x37e537,_0xd50e12){if(_0x387d94&&_0x387d94[_[_0xa8ca('0x8')](_0xd50e12)+'InteractionId']){return _0x387d94[_['upperFirst'](_0xd50e12)+_0xa8ca('0x9')];}else if(_0x387d94&&_0x387d94['id']){return _0x387d94['id'];}else if(_0x37e537&&_0x37e537['id']){return _0x37e537['id'];}else{return _0xa8ca('0xa');}}function getInteractionsTables(_0x2b6a1d){return{'accounts':_0x2b6a1d+'_'+(_0x2b6a1d===_0xa8ca('0xb')?'websites':_0xa8ca('0xc')),'interactions':_0x2b6a1d+_0xa8ca('0xd'),'interactionsTags':_0x2b6a1d+_0xa8ca('0xe'),'messages':_0x2b6a1d+_0xa8ca('0xf'),'userInteractions':_0xa8ca('0x10')+_0x2b6a1d+'_interactions'};}function getSelectedTags(_0x5e5b61){var _0xdefe66=[];if(_0x5e5b61){_0xdefe66=Array[_0xa8ca('0x11')](_0x5e5b61)?_0x5e5b61:[_0x5e5b61];}return _0xdefe66;}function log(_0xbccfb1,_0x26f35b,_0xccce35,_0x5a6274,_0xa5cfbd,_0x27c0df){loggers[_0xa5cfbd['toLowerCase']()][_0xbccfb1](_0xa8ca('0x12'),_0x27c0df['toUpperCase'](),_0x26f35b?_0x26f35b['id']:null,_0x26f35b?_0x26f35b[_0xa8ca('0x13')]:null,_0x26f35b?_0x26f35b['role']:null,getInteractionId(_0xccce35,_0x5a6274,_0xa5cfbd),_0xccce35?JSON[_0xa8ca('0x14')](_0xccce35):'null');}function updateUser(_0xaa1e8c,_0x31379c,_0x461739,_0x20eb18,_0x5be88a){db[_['upperFirst'](_0x20eb18)+_0xa8ca('0x15')][_0xa8ca('0x16')]({'where':{'id':getInteractionId(_0x31379c,_0x461739,_0x20eb18)}})['then'](function(_0x10b194){if(_0x10b194){return _0x10b194[_0xa8ca('0x17')]({'UserId':_0xaa1e8c?_0xaa1e8c['id']:null});}})[_0xa8ca('0x18')](function(_0x17e8ec){if(_0x17e8ec){log('info',_0xaa1e8c,_0x31379c,_0x461739,_0x20eb18,_0x5be88a);}})[_0xa8ca('0x19')](function(){log('error',_0xaa1e8c,_0x31379c,_0x461739,_0x20eb18,_0x5be88a);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x19e3=['_interactions','_interaction_has_tags','user_has_','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','Interaction','findOne','then','catch','error','exports','lodash','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','websites'];(function(_0x332aa8,_0x3b22ef){var _0x51373e=function(_0xa6bd80){while(--_0xa6bd80){_0x332aa8['push'](_0x332aa8['shift']());}};_0x51373e(++_0x3b22ef);}(_0x19e3,0xd7));var _0x319e=function(_0x3b4067,_0x2ea1ff){_0x3b4067=_0x3b4067-0x0;var _0x4e3243=_0x19e3[_0x3b4067];return _0x4e3243;};'use strict';var _=require(_0x319e('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x319e('0x1'))(_0x319e('0x2')),'mail':require(_0x319e('0x1'))(_0x319e('0x3')),'fax':require(_0x319e('0x1'))(_0x319e('0x4')),'sms':require(_0x319e('0x1'))(_0x319e('0x5')),'chat':require(_0x319e('0x1'))(_0x319e('0x6')),'whatsapp':require(_0x319e('0x1'))(_0x319e('0x7'))};function getAccountFK(_0x6f4e4c){return _[_0x319e('0x8')](_0x6f4e4c)+(_0x6f4e4c===_0x319e('0x9')?_0x319e('0xa'):_0x319e('0xb'))+'Id';}function getInteractionFK(_0x1360ca){return _[_0x319e('0x8')](_0x1360ca)+_0x319e('0xc');}function getInteractionId(_0x5a3b02,_0x1228c8,_0x33e3d6){if(_0x5a3b02&&_0x5a3b02[_[_0x319e('0xd')](_0x33e3d6)+_0x319e('0xc')]){return _0x5a3b02[_[_0x319e('0xd')](_0x33e3d6)+'InteractionId'];}else if(_0x5a3b02&&_0x5a3b02['id']){return _0x5a3b02['id'];}else if(_0x1228c8&&_0x1228c8['id']){return _0x1228c8['id'];}else{return _0x319e('0xe');}}function getInteractionsTables(_0x2006a8){return{'accounts':_0x2006a8+'_'+(_0x2006a8===_0x319e('0x9')?_0x319e('0xf'):'accounts'),'interactions':_0x2006a8+_0x319e('0x10'),'interactionsTags':_0x2006a8+_0x319e('0x11'),'messages':_0x2006a8+'_messages','userInteractions':_0x319e('0x12')+_0x2006a8+_0x319e('0x10')};}function getSelectedTags(_0x2f9111){var _0x4fb9b2=[];if(_0x2f9111){_0x4fb9b2=Array[_0x319e('0x13')](_0x2f9111)?_0x2f9111:[_0x2f9111];}return _0x4fb9b2;}function log(_0x566bfa,_0x2ac1de,_0x300a6a,_0x13a32f,_0x4090d1,_0x394620){loggers[_0x4090d1[_0x319e('0x14')]()][_0x566bfa](_0x319e('0x15'),_0x394620[_0x319e('0x16')](),_0x2ac1de?_0x2ac1de['id']:null,_0x2ac1de?_0x2ac1de[_0x319e('0x17')]:null,_0x2ac1de?_0x2ac1de[_0x319e('0x18')]:null,getInteractionId(_0x300a6a,_0x13a32f,_0x4090d1),_0x300a6a?JSON[_0x319e('0x19')](_0x300a6a):_0x319e('0x1a'));}function updateUser(_0x4a27ac,_0x57a17d,_0x54536e,_0x29c2a6,_0x11a97d){db[_[_0x319e('0xd')](_0x29c2a6)+_0x319e('0x1b')][_0x319e('0x1c')]({'where':{'id':getInteractionId(_0x57a17d,_0x54536e,_0x29c2a6)}})[_0x319e('0x1d')](function(_0x81aa78){if(_0x81aa78){return _0x81aa78['update']({'UserId':_0x4a27ac?_0x4a27ac['id']:null});}})[_0x319e('0x1d')](function(_0x4c350a){if(_0x4c350a){log('info',_0x4a27ac,_0x57a17d,_0x54536e,_0x29c2a6,_0x11a97d);}})[_0x319e('0x1e')](function(){log(_0x319e('0x1f'),_0x4a27ac,_0x57a17d,_0x54536e,_0x29c2a6,_0x11a97d);});}module[_0x319e('0x20')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 818b53f..b73406d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe844=['update','utf8','final','parse','use','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','isUserLimit','util','composable-middleware','../../mysqldb','license','data1','split','createDecipher','aes-256-ctr','format','%s:%s:%s'];(function(_0x7fd1b2,_0x20abc5){var _0xfd79fb=function(_0x2ec4bb){while(--_0x2ec4bb){_0x7fd1b2['push'](_0x7fd1b2['shift']());}};_0xfd79fb(++_0x20abc5);}(_0xe844,0x17c));var _0x4e84=function(_0x304bd7,_0xa852d9){_0x304bd7=_0x304bd7-0x0;var _0x45112f=_0xe844[_0x304bd7];return _0x45112f;};'use strict';var crypto=require('crypto');var util=require(_0x4e84('0x0'));var compose=require(_0x4e84('0x1'));var db=require(_0x4e84('0x2'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x196e73,_0x3d5420){if(_0x196e73&&_0x3d5420){if(_0x3d5420['data1']&&_0x3d5420[_0x4e84('0x3')]){var _0x172fb1=_0x3d5420[_0x4e84('0x4')];var _0x3b9be8=_0x3d5420['license'];var _0x4ba760=_0x172fb1[_0x4e84('0x5')]('-')[0x4];var _0x4aa448=_0x172fb1[_0x4e84('0x5')]('-')[0x0];var _0x3745d2=crypto[_0x4e84('0x6')](_0x4e84('0x7'),util[_0x4e84('0x8')](_0x4e84('0x9'),_0x4ba760,_0x172fb1,_0x4aa448));var _0x50fc72=_0x3745d2[_0x4e84('0xa')](_0x3b9be8,'base64',_0x4e84('0xb'));_0x50fc72+=_0x3745d2[_0x4e84('0xc')](_0x4e84('0xb'));var _0x25d680=JSON[_0x4e84('0xd')](_0x50fc72);return _0x25d680['hasOwnProperty'](_0x196e73)?_0x25d680[_0x196e73]:null;}}return null;}function isLimit(_0x19c3fa,_0x176e38,_0x246f29,_0x73da92){var _0x27d78d=_0x176e38;return compose()[_0x4e84('0xe')](function(_0x43f48a,_0x32b23b,_0x2346e2){return db['License'][_0x4e84('0xf')]({'where':{'id':0x1},'raw':!![]})[_0x4e84('0x10')](function(_0x3c4ea6){var _0x3957a1=getValueFromLicense(_0x19c3fa,_0x3c4ea6);return _0x3957a1?_0x3957a1:_0x27d78d;})[_0x4e84('0x10')](function(_0x247888){_0x27d78d=_0x247888;return _0x246f29[_0x4e84('0x11')](_0x73da92);})['then'](function(_0xfaaa21){if(_0xfaaa21>=_0x27d78d){return _0x32b23b[_0x4e84('0x12')](0x193)[_0x4e84('0x13')]({'message':util['format'](_0x4e84('0x14'),_0x19c3fa)});}_0x2346e2();})[_0x4e84('0x15')](function(_0x24caf1){_0x2346e2(_0x24caf1);});});}function isUserLimit(){return isLimit(_0x4e84('0x16'),0x1,db['User'],{'where':{'$or':[{'role':_0x4e84('0x17')},{'role':_0x4e84('0x18')}]}});}exports[_0x4e84('0x19')]=isUserLimit;
\ No newline at end of file
+var _0x62d3=['update','base64','final','utf8','use','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','User','isUserLimit','crypto','util','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format'];(function(_0x112024,_0x5ee5a0){var _0x3516c6=function(_0x141e90){while(--_0x141e90){_0x112024['push'](_0x112024['shift']());}};_0x3516c6(++_0x5ee5a0);}(_0x62d3,0xbe));var _0x362d=function(_0x511f29,_0x27cbaf){_0x511f29=_0x511f29-0x0;var _0xa48afd=_0x62d3[_0x511f29];return _0xa48afd;};'use strict';var crypto=require(_0x362d('0x0'));var util=require(_0x362d('0x1'));var compose=require('composable-middleware');var db=require(_0x362d('0x2'))['db'];var config=require(_0x362d('0x3'));function getValueFromLicense(_0x50af8a,_0xa94159){if(_0x50af8a&&_0xa94159){if(_0xa94159[_0x362d('0x4')]&&_0xa94159[_0x362d('0x5')]){var _0x53d706=_0xa94159[_0x362d('0x4')];var _0x3af5c0=_0xa94159[_0x362d('0x5')];var _0x837fd1=_0x53d706['split']('-')[0x4];var _0x124e08=_0x53d706[_0x362d('0x6')]('-')[0x0];var _0xa9da1c=crypto[_0x362d('0x7')](_0x362d('0x8'),util[_0x362d('0x9')]('%s:%s:%s',_0x837fd1,_0x53d706,_0x124e08));var _0xc40163=_0xa9da1c[_0x362d('0xa')](_0x3af5c0,_0x362d('0xb'),'utf8');_0xc40163+=_0xa9da1c[_0x362d('0xc')](_0x362d('0xd'));var _0x583f59=JSON['parse'](_0xc40163);return _0x583f59['hasOwnProperty'](_0x50af8a)?_0x583f59[_0x50af8a]:null;}}return null;}function isLimit(_0x448908,_0x40859e,_0x53cf10,_0x126b45){var _0x1dabf1=_0x40859e;return compose()[_0x362d('0xe')](function(_0xb1257a,_0x555c5a,_0x3b5d3c){return db[_0x362d('0xf')][_0x362d('0x10')]({'where':{'id':0x1},'raw':!![]})[_0x362d('0x11')](function(_0xb86fb3){var _0x54c00c=getValueFromLicense(_0x448908,_0xb86fb3);return _0x54c00c?_0x54c00c:_0x1dabf1;})[_0x362d('0x11')](function(_0x8facbc){_0x1dabf1=_0x8facbc;return _0x53cf10[_0x362d('0x12')](_0x126b45);})[_0x362d('0x11')](function(_0x39e20a){if(_0x39e20a>=_0x1dabf1){return _0x555c5a[_0x362d('0x13')](0x193)[_0x362d('0x14')]({'message':util[_0x362d('0x9')](_0x362d('0x15'),_0x448908)});}_0x3b5d3c();})['catch'](function(_0x83cba8){_0x3b5d3c(_0x83cba8);});});}function isUserLimit(){return isLimit(_0x362d('0x16'),0x1,db[_0x362d('0x17')],{'where':{'$or':[{'role':'admin'},{'role':'user'}]}});}exports[_0x362d('0x18')]=isUserLimit;
\ No newline at end of file
index 27be262..a6e40c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x128f=['lodash','moment','parseSearch','sqlOperator','[$or]','and','replace','[$and]','split','length','forEach','shift','match','filter','indexOf','conditions','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','YYYY-MM-DD','castTo','text','CAST(','field','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','start','$endsWith','pop','utcOffset','format','hours','minutes'];(function(_0x19b84f,_0x48765e){var _0x18067b=function(_0x1c69aa){while(--_0x1c69aa){_0x19b84f['push'](_0x19b84f['shift']());}};_0x18067b(++_0x48765e);}(_0x128f,0xab));var _0xf128=function(_0x587b1f,_0x576a41){_0x587b1f=_0x587b1f-0x0;var _0x2caf3b=_0x128f[_0x587b1f];return _0x2caf3b;};'use strict';var _=require(_0xf128('0x0'));var moment=require(_0xf128('0x1'));exports[_0xf128('0x2')]=function(_0x5598a9){var _0x585da6={'conditions':[]};_0x585da6[_0xf128('0x3')]=_['startsWith'](_0x5598a9,_0xf128('0x4'))?'or':_0xf128('0x5');var _0x394e82=_0x5598a9[_0xf128('0x6')](_0xf128('0x7'),'')['replace'](_0xf128('0x4'),'')[_0xf128('0x8')]('||');for(var _0x480211=0x0;_0x480211<_0x394e82[_0xf128('0x9')];_0x480211++){var _0x5462c7=_0x394e82[_0x480211]['split'](':=');var _0x1a7595=_0x5462c7[0x0];var _0x1dc7b4=_0x5462c7['slice'](0x1);_0x1dc7b4[_0xf128('0xa')](function(_0x1251c5){var _0x1b7b44=_0x1251c5[_0xf128('0x8')]('[')[_0xf128('0xb')]();var _0x4c6fbe=_0x1251c5[_0xf128('0xc')](/\[(.*?)\]/g);_0x4c6fbe[_0xf128('0xa')](function(_0x1527af){var _0x5639b8=_0x1527af['split']('[')[_0xf128('0xd')](function(_0x4ed04f){return _0x4ed04f[_0xf128('0xe')](']')>-0x1;})['map'](function(_0x3364fd){return _0x3364fd['split'](']')[0x0];})[0x0];_0x585da6[_0xf128('0xf')][_0xf128('0x10')]({'field':_0x1a7595,'operator':_0x1b7b44,'value':_0x5639b8});});});}return _0x585da6;};exports[_0xf128('0x11')]=function(_0x18b048,_0x21b4f2,_0x12a78a){var _0x3813a8={};if(_0x21b4f2===_0xf128('0x12')){if(_0x12a78a[_0xf128('0x13')]===_0xf128('0x14')){_0x12a78a[_0xf128('0x13')]=_0xf128('0x15');_0x12a78a['value']+=','+_0x12a78a[_0xf128('0x16')];}else if(_[_0xf128('0x17')]([_0xf128('0x18'),_0xf128('0x19')],_0x12a78a[_0xf128('0x13')])){_0x12a78a['value']=moment(_0x12a78a[_0xf128('0x16')])[_0xf128('0x1a')](0x1,_0xf128('0x1b'))['format'](_0xf128('0x1c'));}}if(_0x12a78a[_0xf128('0x1d')]){_0x21b4f2=_0x12a78a[_0xf128('0x1d')];_0x3813a8[_0xf128('0x1e')]=_0xf128('0x1f')+_0x18b048+'.'+_0x12a78a[_0xf128('0x20')]+'\x20AS\x20'+_0x12a78a[_0xf128('0x1d')]+')\x20'+parseOperator(_0x12a78a[_0xf128('0x13')]);}else{_0x3813a8['text']=_0x18b048+'.'+_0x12a78a[_0xf128('0x20')]+'\x20'+parseOperator(_0x12a78a['operator']);}if(_['includes']([_0xf128('0x21'),_0xf128('0x22')],_0x12a78a['operator']))_0x3813a8[_0xf128('0x1e')]='('+_0x3813a8[_0xf128('0x1e')]+_0xf128('0x23')+_0x18b048+'.'+_0x12a78a[_0xf128('0x20')]+_0xf128('0x24');_0x3813a8[_0xf128('0x16')]=parseValue(_0x21b4f2,_0x12a78a['operator'],_0x12a78a[_0xf128('0x16')]);return _0x3813a8;};function parseOperator(_0x36c91c){var _0x28229d;switch(_0x36c91c){case _0xf128('0x25'):_0x28229d=_0xf128('0x26');break;case _0xf128('0x22'):_0x28229d=_0xf128('0x27');break;case _0xf128('0x14'):_0x28229d=_0xf128('0x28');break;case _0xf128('0x21'):_0x28229d=_0xf128('0x29');break;case _0xf128('0x2a'):case'$startsWith':case'$endsWith':_0x28229d=_0xf128('0x2b');break;case _0xf128('0x2c'):_0x28229d=_0xf128('0x2d');break;case _0xf128('0x18'):_0x28229d=_0xf128('0x2e');break;case _0xf128('0x19'):_0x28229d=_0xf128('0x2f');break;case _0xf128('0x30'):_0x28229d=_0xf128('0x31');break;case _0xf128('0x15'):_0x28229d='BETWEEN\x20?\x20AND\x20?';break;}return _0x28229d;}function parseValue(_0x3c1317,_0x482226,_0x43c3e6){var _0x28f92d={'start':undefined,'end':undefined};switch(_0x482226){case'$in':case _0xf128('0x22'):_0x28f92d[_0xf128('0x32')]=_0x43c3e6[_0xf128('0x8')](',');break;case'$substring':_0x28f92d[_0xf128('0x32')]='%'+_0x43c3e6+'%';break;case'$startsWith':_0x28f92d['start']=_0x43c3e6+'%';break;case _0xf128('0x33'):_0x28f92d['start']='%'+_0x43c3e6;break;case _0xf128('0x15'):var _0x5c51a5=_0x43c3e6[_0xf128('0x8')](',');var _0x43c3e6=_0x5c51a5[_0xf128('0xb')]();var _0x4a59cf=_0x5c51a5[_0xf128('0x34')]();if(_0x3c1317==='DATE'){_0x43c3e6=moment(_0x43c3e6)[_0xf128('0x35')](0x0,!![])[_0xf128('0x36')]();_0x4a59cf=moment(_0x4a59cf)[_0xf128('0x35')](0x0,!![])[_0xf128('0x1a')](0x17,_0xf128('0x37'))[_0xf128('0x1a')](0x3b,_0xf128('0x38'))[_0xf128('0x1a')](0x3b,'seconds')[_0xf128('0x36')]();}_0x28f92d={'start':_0x43c3e6,'end':_0x4a59cf};break;default:_0x28f92d['start']=_0x43c3e6;break;}return _0x28f92d;}
\ No newline at end of file
+var _0x6e0f=['=\x20?','<>\x20?','$endsWith','$lt','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','$substring','$startsWith','start','pop','utcOffset','hours','minutes','seconds','lodash','moment','sqlOperator','startsWith','replace','[$or]','split','slice','forEach','shift','match','filter','indexOf','map','conditions','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','format','castTo','text','CAST(','field','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','NOT\x20IN\x20?'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6e0f,0x78));var _0xf6e0=function(_0x4f02a5,_0x154972){_0x4f02a5=_0x4f02a5-0x0;var _0x23ca4f=_0x6e0f[_0x4f02a5];return _0x23ca4f;};'use strict';var _=require(_0xf6e0('0x0'));var moment=require(_0xf6e0('0x1'));exports['parseSearch']=function(_0x547040){var _0xa84d61={'conditions':[]};_0xa84d61[_0xf6e0('0x2')]=_[_0xf6e0('0x3')](_0x547040,'[$or]')?'or':'and';var _0x4edf9d=_0x547040[_0xf6e0('0x4')]('[$and]','')[_0xf6e0('0x4')](_0xf6e0('0x5'),'')[_0xf6e0('0x6')]('||');for(var _0x311389=0x0;_0x311389<_0x4edf9d['length'];_0x311389++){var _0x1ef631=_0x4edf9d[_0x311389][_0xf6e0('0x6')](':=');var _0x11da27=_0x1ef631[0x0];var _0x373d40=_0x1ef631[_0xf6e0('0x7')](0x1);_0x373d40[_0xf6e0('0x8')](function(_0x41b328){var _0x108852=_0x41b328['split']('[')[_0xf6e0('0x9')]();var _0x485ecd=_0x41b328[_0xf6e0('0xa')](/\[(.*?)\]/g);_0x485ecd[_0xf6e0('0x8')](function(_0x208abc){var _0xe75561=_0x208abc['split']('[')[_0xf6e0('0xb')](function(_0x733222){return _0x733222[_0xf6e0('0xc')](']')>-0x1;})[_0xf6e0('0xd')](function(_0x571757){return _0x571757[_0xf6e0('0x6')](']')[0x0];})[0x0];_0xa84d61[_0xf6e0('0xe')]['push']({'field':_0x11da27,'operator':_0x108852,'value':_0xe75561});});});}return _0xa84d61;};exports[_0xf6e0('0xf')]=function(_0xcfeeff,_0x931fa5,_0x52f918){var _0x532dea={};if(_0x931fa5===_0xf6e0('0x10')){if(_0x52f918[_0xf6e0('0x11')]===_0xf6e0('0x12')){_0x52f918[_0xf6e0('0x11')]=_0xf6e0('0x13');_0x52f918[_0xf6e0('0x14')]+=','+_0x52f918[_0xf6e0('0x14')];}else if(_[_0xf6e0('0x15')]([_0xf6e0('0x16'),_0xf6e0('0x17')],_0x52f918['operator'])){_0x52f918['value']=moment(_0x52f918[_0xf6e0('0x14')])[_0xf6e0('0x18')](0x1,_0xf6e0('0x19'))[_0xf6e0('0x1a')]('YYYY-MM-DD');}}if(_0x52f918[_0xf6e0('0x1b')]){_0x931fa5=_0x52f918[_0xf6e0('0x1b')];_0x532dea[_0xf6e0('0x1c')]=_0xf6e0('0x1d')+_0xcfeeff+'.'+_0x52f918[_0xf6e0('0x1e')]+'\x20AS\x20'+_0x52f918[_0xf6e0('0x1b')]+')\x20'+parseOperator(_0x52f918[_0xf6e0('0x11')]);}else{_0x532dea[_0xf6e0('0x1c')]=_0xcfeeff+'.'+_0x52f918[_0xf6e0('0x1e')]+'\x20'+parseOperator(_0x52f918[_0xf6e0('0x11')]);}if(_[_0xf6e0('0x15')]([_0xf6e0('0x1f'),_0xf6e0('0x20')],_0x52f918[_0xf6e0('0x11')]))_0x532dea['text']='('+_0x532dea['text']+_0xf6e0('0x21')+_0xcfeeff+'.'+_0x52f918[_0xf6e0('0x1e')]+_0xf6e0('0x22');_0x532dea[_0xf6e0('0x14')]=parseValue(_0x931fa5,_0x52f918['operator'],_0x52f918[_0xf6e0('0x14')]);return _0x532dea;};function parseOperator(_0x33fc17){var _0x5be81b;switch(_0x33fc17){case'$in':_0x5be81b='IN\x20?';break;case _0xf6e0('0x20'):_0x5be81b=_0xf6e0('0x23');break;case _0xf6e0('0x12'):_0x5be81b=_0xf6e0('0x24');break;case _0xf6e0('0x1f'):_0x5be81b=_0xf6e0('0x25');break;case'$substring':case'$startsWith':case _0xf6e0('0x26'):_0x5be81b='LIKE\x20?';break;case _0xf6e0('0x27'):_0x5be81b='<\x20?';break;case _0xf6e0('0x16'):_0x5be81b='>\x20?';break;case _0xf6e0('0x17'):_0x5be81b='<=\x20?';break;case _0xf6e0('0x28'):_0x5be81b=_0xf6e0('0x29');break;case _0xf6e0('0x13'):_0x5be81b=_0xf6e0('0x2a');break;}return _0x5be81b;}function parseValue(_0xcaf5c9,_0x3b9349,_0x1714db){var _0x14f9b8={'start':undefined,'end':undefined};switch(_0x3b9349){case _0xf6e0('0x2b'):case _0xf6e0('0x20'):_0x14f9b8['start']=_0x1714db[_0xf6e0('0x6')](',');break;case _0xf6e0('0x2c'):_0x14f9b8['start']='%'+_0x1714db+'%';break;case _0xf6e0('0x2d'):_0x14f9b8[_0xf6e0('0x2e')]=_0x1714db+'%';break;case _0xf6e0('0x26'):_0x14f9b8['start']='%'+_0x1714db;break;case'$between':var _0x1ea136=_0x1714db[_0xf6e0('0x6')](',');var _0x1714db=_0x1ea136[_0xf6e0('0x9')]();var _0x5d6e66=_0x1ea136[_0xf6e0('0x2f')]();if(_0xcaf5c9===_0xf6e0('0x10')){_0x1714db=moment(_0x1714db)[_0xf6e0('0x30')](0x0,!![])['format']();_0x5d6e66=moment(_0x5d6e66)[_0xf6e0('0x30')](0x0,!![])['add'](0x17,_0xf6e0('0x31'))['add'](0x3b,_0xf6e0('0x32'))[_0xf6e0('0x18')](0x3b,_0xf6e0('0x33'))[_0xf6e0('0x1a')]();}_0x14f9b8={'start':_0x1714db,'end':_0x5d6e66};break;default:_0x14f9b8[_0xf6e0('0x2e')]=_0x1714db;break;}return _0x14f9b8;}
\ No newline at end of file
index 4607cec..78afaae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['map','indexOf','priority','unsigned','DESC','col','omit','length','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','push','join','getOptions','query','$id','model','keys','intersection','attributes','nolimit','offset','order','where','filter','object','value','type','VIRTUAL','lower','merge','options','lodash','sequelize','moment','parse','includes','fields','split','filters','isEmpty','forOwn','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','sort'];(function(_0x27cad8,_0x5d8552){var _0x232988=function(_0x3f0c58){while(--_0x3f0c58){_0x27cad8['push'](_0x27cad8['shift']());}};_0x232988(++_0x5d8552);}(_0xdc97,0x13b));var _0x7dc9=function(_0x3c95f0,_0x56ca94){_0x3c95f0=_0x3c95f0-0x0;var _0x5b6fad=_0xdc97[_0x3c95f0];return _0x5b6fad;};'use strict';var _=require(_0x7dc9('0x0'));var sequelize=require(_0x7dc9('0x1'));var moment=require(_0x7dc9('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x5f1f64){var _0x2913e6=['ne'];try{var _0x4f5c88=JSON[_0x7dc9('0x3')](_0x5f1f64);var _0x2b86da=Object['keys'](_0x4f5c88)[0x0];return _0x2913e6[_0x7dc9('0x4')](_0x2b86da);}catch(_0x1e513b){return![];}}function getOperatorValue(_0xb15a0b){var _0x3ba3ca=JSON['parse'](_0xb15a0b);var _0x2636ef=Object['keys'](_0x3ba3ca)[0x0];var _0x4b3229=_0x3ba3ca[_0x2636ef];return{['$'+_0x2636ef]:_0x4b3229};}exports[_0x7dc9('0x5')]=function(_0x23737d){var _0x3318ea=null;if(_0x23737d){_0x3318ea=_0x23737d[_0x7dc9('0x6')](',');}return _0x3318ea;};exports[_0x7dc9('0x7')]=function(_0x5ca05b,_0xb2fa2a){var _0x44fe24={};if(!_[_0x7dc9('0x8')](_0x5ca05b)){_[_0x7dc9('0x9')](_0x5ca05b,function(_0x359c88,_0x3c2af5){try{if(_0xb2fa2a){var _0x1e336a=_['find'](_0xb2fa2a,{'name':_0x3c2af5})||{};if(hasSequelizeOperator(_0x359c88)){_0x44fe24[_0x3c2af5]=getOperatorValue(_0x359c88);}else if(_0x1e336a['type']==='DATE'&&_['isPlainObject'](_0x359c88)){var _0x94c75a=JSON[_0x7dc9('0x3')](_0x359c88);var _0x5c6ca5={'$gte':moment(moment(_0x94c75a[_0x7dc9('0xa')])[_0x7dc9('0xb')](_0x7dc9('0xc')))[_0x7dc9('0xd')]()[_0x7dc9('0xb')](),'$lte':moment(moment(_0x94c75a[_0x7dc9('0xe')])['format'](_0x7dc9('0xc')))[_0x7dc9('0xd')]()[_0x7dc9('0xf')](0x1,'s')[_0x7dc9('0xb')]()};_0x44fe24[_0x3c2af5]=_0x5c6ca5;}else if(_0x1e336a[_0x7dc9('0x10')]===_0x7dc9('0x11')){_0x44fe24[_0x3c2af5]=_0x359c88;}else{_0x44fe24[_0x3c2af5]=_[_0x7dc9('0x12')](_0x359c88)?_0x359c88:JSON[_0x7dc9('0x3')](_0x359c88);}}else{_0x44fe24[_0x3c2af5]=_[_0x7dc9('0x12')](_0x359c88)?_0x359c88:JSON['parse'](_0x359c88);}}catch(_0x22577e){_0x44fe24[_0x3c2af5]=_0x359c88['split'](',');}});}return _0x44fe24;};exports[_0x7dc9('0x13')]=function(_0x1cc237){_0x1cc237=parseInt(_0x1cc237,0xa);if(!_0x1cc237||_0x1cc237<0x0){_0x1cc237=LIMIT_VALUE;}return _0x1cc237;};exports['offset']=function(_0x41f66e){_0x41f66e=parseInt(_0x41f66e,0xa);if(!_0x41f66e||_0x41f66e<0x0){_0x41f66e=0x0;}return _0x41f66e;};exports[_0x7dc9('0x14')]=function(_0x12f08d){var _0x4b2703,_0x43ec33=null;if(_0x12f08d){_0x4b2703=_0x12f08d[_0x7dc9('0x6')](',');_0x43ec33=_[_0x7dc9('0x15')](_0x4b2703,function(_0x2895f5){if(_0x2895f5[_0x7dc9('0x16')]('-')===0x0){return[_0x2895f5===_0x7dc9('0x17')?sequelize['cast'](sequelize['col'](_0x7dc9('0x17')),_0x7dc9('0x18')):_0x2895f5['substr'](0x1),_0x7dc9('0x19')];}else{return[_0x2895f5===_0x7dc9('0x17')?sequelize['cast'](sequelize[_0x7dc9('0x1a')](_0x7dc9('0x17')),_0x7dc9('0x18')):_0x2895f5,'ASC'];}});}return _0x43ec33;};exports[_0x7dc9('0x1b')]=function(_0x1e3a8d,_0xf95336){if(_['isEmpty'](_0x1e3a8d)){return _0x1e3a8d;}if(_['isArray'](_0x1e3a8d)){for(var _0x4b9ba6=0x0;_0x4b9ba6<_0x1e3a8d[_0x7dc9('0x1c')];_0x4b9ba6+=0x1){_0x1e3a8d[_0x4b9ba6]=this[_0x7dc9('0x1b')](_0x1e3a8d[_0x4b9ba6],_0xf95336);}return _0x1e3a8d;}if(!_['isObject'](_0x1e3a8d)){return _0x1e3a8d;}if(_['isString'](_0xf95336)){_0xf95336=[_0xf95336];}if(!_[_0x7dc9('0x12')](_0xf95336)){return _0x1e3a8d;}for(var _0x5afb7d=0x0;_0x5afb7d<_0xf95336[_0x7dc9('0x1c')];_0x5afb7d+=0x1){_[_0x7dc9('0x1d')](_0x1e3a8d,_0xf95336[_0x5afb7d]);}for(var _0x3a74a0 in _0x1e3a8d){if(_0x1e3a8d[_0x7dc9('0x1e')](_0x3a74a0)){_0x1e3a8d[_0x3a74a0]=this[_0x7dc9('0x1b')](_0x1e3a8d[_0x3a74a0],_0xf95336);}}return _0x1e3a8d;};exports[_0x7dc9('0x1f')]=function(_0x236d42){return _0x236d42[_0x7dc9('0x20')](RegExp(_0x7dc9('0x21')))?!![]:![];};exports[_0x7dc9('0x22')]=function(_0x14083d){return _0x14083d[_0x7dc9('0x20')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x4e929c){var _0x513dd6=[];_0x4e929c['split'](/[ ,]+/)['forEach'](function(_0x553a03){_0x553a03=_0x553a03['replace'](/([^:]")"+/g,'$1');_0x553a03='+'+_0x553a03+'*';var _0x59f5d8=/[ `!@#$%^&*()_\-?~]/;if(_0x553a03[_0x7dc9('0x20')](_0x59f5d8))_0x553a03='\x22'+_0x553a03+'\x22';_0x513dd6[_0x7dc9('0x23')](_0x553a03);});return _0x513dd6[_0x7dc9('0x24')]('\x20');};exports[_0x7dc9('0x25')]=function(_0x3300ff,_0x154e22,_0x5d2e7b){var _0x5ce3e1={},_0x4d4e46={};if(_0x154e22[_0x7dc9('0x26')]['$id']){_0x154e22[_0x7dc9('0x26')]['id']=_0x154e22[_0x7dc9('0x26')][_0x7dc9('0x27')];delete _0x154e22[_0x7dc9('0x26')][_0x7dc9('0x27')];}_0x5ce3e1[_0x7dc9('0x28')]=_[_0x7dc9('0x15')](_0x3300ff,_0x7dc9('0x10'));_0x5ce3e1['query']=_[_0x7dc9('0x29')](_0x154e22['query']);_0x5ce3e1[_0x7dc9('0x7')]=_[_0x7dc9('0x2a')](_0x5ce3e1[_0x7dc9('0x28')],_0x5ce3e1[_0x7dc9('0x26')]);_0x4d4e46['attributes']=_[_0x7dc9('0x2a')](_0x5ce3e1['model'],this[_0x7dc9('0x5')](_0x154e22['query']['fields']));_0x4d4e46[_0x7dc9('0x2b')]=_0x4d4e46[_0x7dc9('0x2b')][_0x7dc9('0x1c')]?_0x4d4e46[_0x7dc9('0x2b')]:_0x5ce3e1['model'];if(!_0x154e22[_0x7dc9('0x26')][_0x7dc9('0x1e')](_0x7dc9('0x2c'))){_0x4d4e46[_0x7dc9('0x13')]=this[_0x7dc9('0x13')](_0x154e22[_0x7dc9('0x26')][_0x7dc9('0x13')]);_0x4d4e46[_0x7dc9('0x2d')]=this[_0x7dc9('0x2d')](_0x154e22[_0x7dc9('0x26')][_0x7dc9('0x2d')]);}_0x4d4e46[_0x7dc9('0x2e')]=this['sort'](_0x154e22[_0x7dc9('0x26')][_0x7dc9('0x14')]);_0x4d4e46[_0x7dc9('0x2f')]=this[_0x7dc9('0x7')](_['pick'](_0x154e22[_0x7dc9('0x26')],_0x5ce3e1[_0x7dc9('0x7')]),_0x3300ff);if(_0x154e22[_0x7dc9('0x26')][_0x7dc9('0x30')]){var _0x295853=_0x3300ff;var _0x3436a6=_0x154e22['query']['filter'];if(typeof _0x3436a6===_0x7dc9('0x31')){_0x295853=_[_0x7dc9('0x30')](_0x3300ff,function(_0x495100){return _[_0x7dc9('0x4')](_0x3436a6['columns'],_0x495100[_0x7dc9('0x10')]);});_0x3436a6=_0x3436a6[_0x7dc9('0x32')];}_0x4d4e46[_0x7dc9('0x2f')]=_['merge'](_0x4d4e46[_0x7dc9('0x2f')],{'$or':_[_0x7dc9('0x15')](_0x295853,function(_0x1929b6){if(_0x1929b6[_0x7dc9('0x33')]!==_0x7dc9('0x34')){if(_0x5d2e7b){return sequelize[_0x7dc9('0x2f')](sequelize['fn'](_0x7dc9('0x35'),sequelize['col'](_0x1929b6[_0x7dc9('0x10')])),{'$like':sequelize['fn']('lower','%'+_0x154e22['query'][_0x7dc9('0x30')]+'%')});}else{var _0x294276={};_0x294276[_0x1929b6[_0x7dc9('0x10')]]={'$like':'%'+_0x154e22[_0x7dc9('0x26')][_0x7dc9('0x30')]+'%'};return _0x294276;}}})});}_0x4d4e46=_[_0x7dc9('0x36')]({},_0x4d4e46,_0x154e22[_0x7dc9('0x37')]);return _0x4d4e46;};
\ No newline at end of file
+var _0xd67b=['attributes','nolimit','offset','sort','where','filter','object','columns','value','merge','lower','options','sequelize','includes','parse','keys','fields','split','filters','forOwn','find','type','DATE','isPlainObject','$gte','YYYY-MM-DD','utc','format','$lte','subtract','name','isArray','limit','map','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','isEmpty','length','isString','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','push','getOptions','$id','query','model','intersection'];(function(_0x41eacb,_0x45a8df){var _0xc758b5=function(_0x292d00){while(--_0x292d00){_0x41eacb['push'](_0x41eacb['shift']());}};_0xc758b5(++_0x45a8df);}(_0xd67b,0x133));var _0xbd67=function(_0x38785b,_0x451a72){_0x38785b=_0x38785b-0x0;var _0x2f7183=_0xd67b[_0x38785b];return _0x2f7183;};'use strict';var _=require('lodash');var sequelize=require(_0xbd67('0x0'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x1da24d){var _0x280954=['ne'];try{var _0x317e33=JSON['parse'](_0x1da24d);var _0x40e384=Object['keys'](_0x317e33)[0x0];return _0x280954[_0xbd67('0x1')](_0x40e384);}catch(_0x5a827b){return![];}}function getOperatorValue(_0x309962){var _0xa5c384=JSON[_0xbd67('0x2')](_0x309962);var _0x27b016=Object[_0xbd67('0x3')](_0xa5c384)[0x0];var _0x72f9ac=_0xa5c384[_0x27b016];return{['$'+_0x27b016]:_0x72f9ac};}exports[_0xbd67('0x4')]=function(_0xfad775){var _0x1da7f1=null;if(_0xfad775){_0x1da7f1=_0xfad775[_0xbd67('0x5')](',');}return _0x1da7f1;};exports[_0xbd67('0x6')]=function(_0x3a7f43,_0x283f2f){var _0x52b981={};if(!_['isEmpty'](_0x3a7f43)){_[_0xbd67('0x7')](_0x3a7f43,function(_0x5aad7a,_0x388d95){try{if(_0x283f2f){var _0xb6b4b5=_[_0xbd67('0x8')](_0x283f2f,{'name':_0x388d95})||{};if(hasSequelizeOperator(_0x5aad7a)){_0x52b981[_0x388d95]=getOperatorValue(_0x5aad7a);}else if(_0xb6b4b5[_0xbd67('0x9')]===_0xbd67('0xa')&&_[_0xbd67('0xb')](_0x5aad7a)){var _0x3621ad=JSON[_0xbd67('0x2')](_0x5aad7a);var _0x341b2b={'$gte':moment(moment(_0x3621ad[_0xbd67('0xc')])['format'](_0xbd67('0xd')))[_0xbd67('0xe')]()[_0xbd67('0xf')](),'$lte':moment(moment(_0x3621ad[_0xbd67('0x10')])[_0xbd67('0xf')](_0xbd67('0xd')))[_0xbd67('0xe')]()[_0xbd67('0x11')](0x1,'s')[_0xbd67('0xf')]()};_0x52b981[_0x388d95]=_0x341b2b;}else if(_0xb6b4b5[_0xbd67('0x12')]==='uniqueid'){_0x52b981[_0x388d95]=_0x5aad7a;}else{_0x52b981[_0x388d95]=_['isArray'](_0x5aad7a)?_0x5aad7a:JSON[_0xbd67('0x2')](_0x5aad7a);}}else{_0x52b981[_0x388d95]=_[_0xbd67('0x13')](_0x5aad7a)?_0x5aad7a:JSON[_0xbd67('0x2')](_0x5aad7a);}}catch(_0x47d066){_0x52b981[_0x388d95]=_0x5aad7a[_0xbd67('0x5')](',');}});}return _0x52b981;};exports[_0xbd67('0x14')]=function(_0x357ff2){_0x357ff2=parseInt(_0x357ff2,0xa);if(!_0x357ff2||_0x357ff2<0x0){_0x357ff2=LIMIT_VALUE;}return _0x357ff2;};exports['offset']=function(_0x5906a2){_0x5906a2=parseInt(_0x5906a2,0xa);if(!_0x5906a2||_0x5906a2<0x0){_0x5906a2=0x0;}return _0x5906a2;};exports['sort']=function(_0x1f9193){var _0x4609b7,_0xb3f67f=null;if(_0x1f9193){_0x4609b7=_0x1f9193['split'](',');_0xb3f67f=_[_0xbd67('0x15')](_0x4609b7,function(_0x40ec96){if(_0x40ec96[_0xbd67('0x16')]('-')===0x0){return[_0x40ec96===_0xbd67('0x17')?sequelize[_0xbd67('0x18')](sequelize[_0xbd67('0x19')]('priority'),_0xbd67('0x1a')):_0x40ec96[_0xbd67('0x1b')](0x1),_0xbd67('0x1c')];}else{return[_0x40ec96===_0xbd67('0x17')?sequelize[_0xbd67('0x18')](sequelize[_0xbd67('0x19')](_0xbd67('0x17')),_0xbd67('0x1a')):_0x40ec96,_0xbd67('0x1d')];}});}return _0xb3f67f;};exports[_0xbd67('0x1e')]=function(_0x46b7ff,_0x57602d){if(_[_0xbd67('0x1f')](_0x46b7ff)){return _0x46b7ff;}if(_['isArray'](_0x46b7ff)){for(var _0x25bf7a=0x0;_0x25bf7a<_0x46b7ff[_0xbd67('0x20')];_0x25bf7a+=0x1){_0x46b7ff[_0x25bf7a]=this[_0xbd67('0x1e')](_0x46b7ff[_0x25bf7a],_0x57602d);}return _0x46b7ff;}if(!_['isObject'](_0x46b7ff)){return _0x46b7ff;}if(_[_0xbd67('0x21')](_0x57602d)){_0x57602d=[_0x57602d];}if(!_[_0xbd67('0x13')](_0x57602d)){return _0x46b7ff;}for(var _0x4dfa19=0x0;_0x4dfa19<_0x57602d[_0xbd67('0x20')];_0x4dfa19+=0x1){_[_0xbd67('0x22')](_0x46b7ff,_0x57602d[_0x4dfa19]);}for(var _0x374f1b in _0x46b7ff){if(_0x46b7ff[_0xbd67('0x23')](_0x374f1b)){_0x46b7ff[_0x374f1b]=this[_0xbd67('0x1e')](_0x46b7ff[_0x374f1b],_0x57602d);}}return _0x46b7ff;};exports['isNumeric']=function(_0x5975dc){return _0x5975dc[_0xbd67('0x24')](RegExp(_0xbd67('0x25')))?!![]:![];};exports[_0xbd67('0x26')]=function(_0x44eced){return _0x44eced[_0xbd67('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0xbd67('0x27')]=function(_0x256137){var _0x2e123e=[];_0x256137[_0xbd67('0x5')](/[ ,]+/)[_0xbd67('0x28')](function(_0x5cb0ce){_0x5cb0ce=_0x5cb0ce['replace'](/([^:]")"+/g,'$1');_0x5cb0ce='+'+_0x5cb0ce+'*';var _0x5fcae8=/[ `!@#$%^&*()_\-?~]/;if(_0x5cb0ce[_0xbd67('0x24')](_0x5fcae8))_0x5cb0ce='\x22'+_0x5cb0ce+'\x22';_0x2e123e[_0xbd67('0x29')](_0x5cb0ce);});return _0x2e123e['join']('\x20');};exports[_0xbd67('0x2a')]=function(_0x15da85,_0xb3f593,_0x484989){var _0x4d1ce3={},_0x5186eb={};if(_0xb3f593['query'][_0xbd67('0x2b')]){_0xb3f593[_0xbd67('0x2c')]['id']=_0xb3f593[_0xbd67('0x2c')]['$id'];delete _0xb3f593['query'][_0xbd67('0x2b')];}_0x4d1ce3[_0xbd67('0x2d')]=_[_0xbd67('0x15')](_0x15da85,_0xbd67('0x12'));_0x4d1ce3[_0xbd67('0x2c')]=_[_0xbd67('0x3')](_0xb3f593['query']);_0x4d1ce3[_0xbd67('0x6')]=_[_0xbd67('0x2e')](_0x4d1ce3[_0xbd67('0x2d')],_0x4d1ce3['query']);_0x5186eb[_0xbd67('0x2f')]=_['intersection'](_0x4d1ce3[_0xbd67('0x2d')],this[_0xbd67('0x4')](_0xb3f593['query'][_0xbd67('0x4')]));_0x5186eb[_0xbd67('0x2f')]=_0x5186eb[_0xbd67('0x2f')][_0xbd67('0x20')]?_0x5186eb[_0xbd67('0x2f')]:_0x4d1ce3[_0xbd67('0x2d')];if(!_0xb3f593['query'][_0xbd67('0x23')](_0xbd67('0x30'))){_0x5186eb[_0xbd67('0x14')]=this[_0xbd67('0x14')](_0xb3f593[_0xbd67('0x2c')]['limit']);_0x5186eb['offset']=this[_0xbd67('0x31')](_0xb3f593[_0xbd67('0x2c')][_0xbd67('0x31')]);}_0x5186eb['order']=this[_0xbd67('0x32')](_0xb3f593[_0xbd67('0x2c')][_0xbd67('0x32')]);_0x5186eb[_0xbd67('0x33')]=this['filters'](_['pick'](_0xb3f593['query'],_0x4d1ce3['filters']),_0x15da85);if(_0xb3f593['query'][_0xbd67('0x34')]){var _0x5a6b2d=_0x15da85;var _0x4d08a6=_0xb3f593['query'][_0xbd67('0x34')];if(typeof _0x4d08a6===_0xbd67('0x35')){_0x5a6b2d=_[_0xbd67('0x34')](_0x15da85,function(_0x2ca134){return _['includes'](_0x4d08a6[_0xbd67('0x36')],_0x2ca134[_0xbd67('0x12')]);});_0x4d08a6=_0x4d08a6[_0xbd67('0x37')];}_0x5186eb[_0xbd67('0x33')]=_[_0xbd67('0x38')](_0x5186eb[_0xbd67('0x33')],{'$or':_[_0xbd67('0x15')](_0x5a6b2d,function(_0x532c9b){if(_0x532c9b[_0xbd67('0x9')]!=='VIRTUAL'){if(_0x484989){return sequelize[_0xbd67('0x33')](sequelize['fn'](_0xbd67('0x39'),sequelize[_0xbd67('0x19')](_0x532c9b[_0xbd67('0x12')])),{'$like':sequelize['fn'](_0xbd67('0x39'),'%'+_0xb3f593[_0xbd67('0x2c')][_0xbd67('0x34')]+'%')});}else{var _0xfe170b={};_0xfe170b[_0x532c9b['name']]={'$like':'%'+_0xb3f593[_0xbd67('0x2c')][_0xbd67('0x34')]+'%'};return _0xfe170b;}}})});}_0x5186eb=_['merge']({},_0x5186eb,_0xb3f593[_0xbd67('0x3a')]);return _0x5186eb;};
\ No newline at end of file
index 1a525e1..5069183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfe3=['Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','unknown','busy','getAgentStatus','startCase','Queue','map','findOne','getAgents','flatten','value','includes','getAgentIdsByStatus','resolve','findAll','fullname','chatPause','pauseType','find','getSortedAgentsIdsByStatus','split','fields','order','startsWith','DESC','ASC','getUpdatedSortOptions','internal','substring','indexOf','validateSortParameter','globalStatus','toLowerCase','sortAgentsByStatus','userpic','online','lastPauseAt','address','chatCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','filterAgentAttributes','lodash','jayson/promise','../../mysqldb','http','faxPause','mailPause','openchannelPause','smsPause','whatsappPause','filter','length','idle','unavailable','ringing','isNil','voicePause','voiceStatus','pause','every','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request'];(function(_0x5106e6,_0x6ab414){var _0xdd43c9=function(_0x1d2b56){while(--_0x1d2b56){_0x5106e6['push'](_0x5106e6['shift']());}};_0xdd43c9(++_0x6ab414);}(_0xcfe3,0x1ad));var _0x3cfe=function(_0x46658c,_0x441428){_0x46658c=_0x46658c-0x0;var _0x5154d2=_0xcfe3[_0x46658c];return _0x5154d2;};'use strict';var _=require(_0x3cfe('0x0'));var jayson=require(_0x3cfe('0x1'));var db=require(_0x3cfe('0x2'))['db'];var amiClient=jayson['client'][_0x3cfe('0x3')]({'port':0x232a});var routingClient=jayson['client'][_0x3cfe('0x3')]({'port':0x232c});function isAgentPaused(_0x1d42d0,_0x2ae875){var _0x59d8=[_0x1d42d0['chatPause'],_0x1d42d0[_0x3cfe('0x4')],_0x1d42d0[_0x3cfe('0x5')],_0x1d42d0[_0x3cfe('0x6')],_0x1d42d0[_0x3cfe('0x7')],_0x1d42d0['voicePause'],_0x1d42d0[_0x3cfe('0x8')]];if(!_0x2ae875)return _['every'](_0x59d8);var _0x416c6b=_[_0x3cfe('0x9')](_0x59d8);return _0x416c6b[_0x3cfe('0xa')]>0x0&&_0x416c6b[_0x3cfe('0xa')]<_0x59d8[_0x3cfe('0xa')]?!![]:![];}function isIdle(_0xdad9b8){return _0xdad9b8===_0x3cfe('0xb')||_0xdad9b8==='unknown'||_0xdad9b8===_0x3cfe('0xc')||_0xdad9b8===_0x3cfe('0xd')||_[_0x3cfe('0xe')](_0xdad9b8);}function isAgentIdle(_0x44abc7){if(_0x44abc7['voiceStatus']!=='idle'&&_0x44abc7[_0x3cfe('0xf')]){_0x44abc7[_0x3cfe('0x10')]=_0x3cfe('0x11');return![];}return _[_0x3cfe('0x12')]([_0x44abc7[_0x3cfe('0x13')],_0x44abc7[_0x3cfe('0x14')],_0x44abc7[_0x3cfe('0x15')],_0x44abc7[_0x3cfe('0x16')],_0x44abc7[_0x3cfe('0x17')],_0x44abc7[_0x3cfe('0x10')],_0x44abc7[_0x3cfe('0x18')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x3cfe('0x19')](_0x3cfe('0x1a'),{})[_0x3cfe('0x1b')](function(_0x342d9a){if(_0x342d9a[_0x3cfe('0x1c')]){throw new Error(_0x3cfe('0x1d'));}var _0x5ec47b=_0x342d9a[_0x3cfe('0x1e')];return routingClient['request']('Agents',{})['then'](function(_0x35be8f){if(_0x35be8f[_0x3cfe('0x1c')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x7690e1=_0x35be8f[_0x3cfe('0x1e')];return _[_0x3cfe('0x1f')]({},_0x5ec47b,_0x7690e1);});})['catch'](function(_0x5bdf66){throw _0x5bdf66;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x380934){var _0x1dfd18=_0x3cfe('0x20');if(isAgentPaused(_0x380934))_0x1dfd18='pause';else if(isAgentPaused(_0x380934,!![]))_0x1dfd18='*pause';else if(isAgentIdle(_0x380934))_0x1dfd18='idle';else _0x1dfd18=_0x3cfe('0x21');return _0x1dfd18;}exports[_0x3cfe('0x22')]=getAgentStatus;function getAgentIdsByQueues(_0x52d08b,_0x14e9cd){var _0x55a325=_['isArray'](_0x52d08b)?_0x52d08b:[_0x52d08b];var _0x37cc07=_[_0x3cfe('0x23')](_0x14e9cd)+_0x3cfe('0x24');var _0x370e3a=_[_0x3cfe('0x25')](_0x55a325,function(_0x5971ec){return db[_0x37cc07][_0x3cfe('0x26')]({'where':{'id':_0x5971ec}})['then'](function(_0x5415c0){if(!_0x5415c0)return[];return _0x5415c0[_0x3cfe('0x27')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x370e3a)[_0x3cfe('0x1b')](function(_0x2f0a37){var _0xb5a0c6=_(_0x2f0a37)[_0x3cfe('0x28')]()[_0x3cfe('0x25')]('id')['uniq']()[_0x3cfe('0x29')]();return _0xb5a0c6;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x5812dc,_0x5a582b,_0x47dc6e){try{if(_0x5a582b[_0x3cfe('0xa')]>0x0){_0x5812dc=_0x5812dc[_0x3cfe('0x9')](function(_0x87e46f){return _0x5a582b[_0x3cfe('0x2a')](_0x87e46f['id']);});}var _0x1e426c=_0x5812dc[_0x3cfe('0x9')](function(_0x20e050){var _0x466e32=_0x3cfe('0x21');if(isAgentIdle(_0x20e050)){_0x466e32=_0x3cfe('0xb');}return _0x466e32===_0x47dc6e;});return _[_0x3cfe('0x25')](_0x1e426c,'id');}catch(_0x41f2d2){throw _0x41f2d2;}}exports[_0x3cfe('0x2b')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x85178f,_0x43388f,_0x58fff9){return Promise[_0x3cfe('0x2c')]()[_0x3cfe('0x1b')](function(){if(_0x43388f[_0x3cfe('0xa')]>0x0){_0x85178f=_0x85178f[_0x3cfe('0x9')](function(_0x3027bf){return _0x43388f[_0x3cfe('0x2a')](_0x3027bf['id']);});}return _0x85178f;})[_0x3cfe('0x1b')](function(){return db['User'][_0x3cfe('0x2d')]({'attributes':['id','name',_0x3cfe('0x2e'),_0x3cfe('0x2f'),_0x3cfe('0x4'),_0x3cfe('0x5'),_0x3cfe('0x6'),_0x3cfe('0x7'),'voicePause',_0x3cfe('0x8'),_0x3cfe('0x30')],'where':{'id':{'$in':_[_0x3cfe('0x25')](_0x85178f,'id')}},'raw':!![]});})[_0x3cfe('0x1b')](function(_0x4738fa){return _0x4738fa[_0x3cfe('0x25')](function(_0x2e35b9){var _0x3895e8=_[_0x3cfe('0x31')](_0x85178f,['id',_0x2e35b9['id']]);var _0x300642=filterAgentAttributes(_0x3895e8);_[_0x3cfe('0x1f')](_0x2e35b9,_0x300642);_0x2e35b9['globalStatus']=getAgentStatus(_0x2e35b9);return _0x2e35b9;});})['then'](function(_0x393ce6){var _0x43e672=sortAgentsByStatus(_0x393ce6,_0x58fff9);return _[_0x3cfe('0x25')](_0x43e672,'id');})['catch'](function(_0x349bb1){throw _0x349bb1;});}exports[_0x3cfe('0x32')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x2e4309){var _0x33a151={'fields':[],'order':null};var _0x56616a=_0x2e4309[_0x3cfe('0x33')](',');_0x33a151[_0x3cfe('0x34')]=_['filter'](_0x56616a,function(_0x1c0879){if(!_0x1c0879[_0x3cfe('0x2a')]('globalStatus')){return!![];}_0x33a151[_0x3cfe('0x35')]=_[_0x3cfe('0x36')](_0x1c0879,'-')?_0x3cfe('0x37'):_0x3cfe('0x38');return![];});return _0x33a151;}exports[_0x3cfe('0x39')]=getUpdatedSortOptions;function validateSortParameter(_0x5a688c){if(_0x5a688c[_0x3cfe('0x2a')](_0x3cfe('0x2e'))&&!_0x5a688c['includes'](_0x3cfe('0x3a'))){var _0xc295e7=_0x5a688c[_0x3cfe('0x3b')](0x0,_0x5a688c[_0x3cfe('0x3c')](_0x3cfe('0x2e')));_0x5a688c+=','+_0xc295e7+_0x3cfe('0x3a');}return _0x5a688c;}exports[_0x3cfe('0x3d')]=validateSortParameter;function sortAgentsByStatus(_0x48e23a,_0x3503a5){var _0x2bcbd8=_0x48e23a['sort'](function(_0x4b0b46,_0x543cca){if(_0x4b0b46[_0x3cfe('0x3e')]===_0x543cca[_0x3cfe('0x3e')]){if(_0x4b0b46['globalStatus']===_0x3cfe('0x11')){if(_0x3503a5===_0x3cfe('0x37')){return(_0x4b0b46[_0x3cfe('0x30')]||'')<(_0x543cca[_0x3cfe('0x30')]||'')||_0x4b0b46['fullname'][_0x3cfe('0x3f')]()>_0x543cca[_0x3cfe('0x2e')][_0x3cfe('0x3f')]()?0x1:-0x1;}else{return(_0x4b0b46[_0x3cfe('0x30')]||'')<(_0x543cca[_0x3cfe('0x30')]||'')||_0x4b0b46[_0x3cfe('0x2e')][_0x3cfe('0x3f')]()>_0x543cca[_0x3cfe('0x2e')][_0x3cfe('0x3f')]()?-0x1:0x1;}}else{if(_0x3503a5===_0x3cfe('0x37')){return _0x4b0b46[_0x3cfe('0x2e')][_0x3cfe('0x3f')]()<_0x543cca[_0x3cfe('0x2e')][_0x3cfe('0x3f')]()?0x1:-0x1;}else{return _0x4b0b46[_0x3cfe('0x2e')]['toLowerCase']()<_0x543cca[_0x3cfe('0x2e')][_0x3cfe('0x3f')]()?-0x1:0x1;}}}else{if(_0x3503a5==='DESC'){return _0x4b0b46[_0x3cfe('0x3e')]<_0x543cca[_0x3cfe('0x3e')]?0x1:-0x1;}else{return _0x4b0b46['globalStatus']<_0x543cca[_0x3cfe('0x3e')]?-0x1:0x1;}}});return _0x2bcbd8;}exports[_0x3cfe('0x40')]=sortAgentsByStatus;function filterAgentAttributes(_0x141136){var _0x5d35bd=[_0x3cfe('0x41'),_0x3cfe('0x42'),'lastLoginAt','lastPauseAt',_0x3cfe('0x30'),_0x3cfe('0x43'),_0x3cfe('0x3a'),_0x3cfe('0x44'),_0x3cfe('0x2f'),'openchannelPause',_0x3cfe('0x5'),'smsPause','whatsappPause',_0x3cfe('0x4'),_0x3cfe('0xf'),_0x3cfe('0x45'),'openchannelCapacity','mailCapacity','smsCapacity',_0x3cfe('0x46'),_0x3cfe('0x47'),_0x3cfe('0x48'),_0x3cfe('0x49'),_0x3cfe('0x4a'),'smsCurrentCapacity',_0x3cfe('0x4b'),_0x3cfe('0x4c'),_0x3cfe('0x13'),'openchannelStatus','mailStatus','smsStatus',_0x3cfe('0x18'),_0x3cfe('0x14'),'voiceStatus',_0x3cfe('0x4d'),_0x3cfe('0x4e'),_0x3cfe('0x4f'),'smsStatusTime',_0x3cfe('0x50'),_0x3cfe('0x51'),_0x3cfe('0x52'),_0x3cfe('0x53'),_0x3cfe('0x54'),'screenrecording',_0x3cfe('0x55'),_0x3cfe('0x56'),_0x3cfe('0x57')];var _0x55f943=[_0x3cfe('0x2f'),_0x3cfe('0x6'),_0x3cfe('0x5'),_0x3cfe('0x7'),_0x3cfe('0x8'),'faxPause','voicePause','online'];var _0x111494=_(_0x141136)[_0x3cfe('0x58')](_0x55f943)[_0x3cfe('0x59')](_0x5d35bd)['value']();return _0x111494;}exports[_0x3cfe('0x5a')]=filterAgentAttributes;
\ No newline at end of file
+var _0xf0d4=['indexOf','validateSortParameter','sort','toLowerCase','userpic','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','openchannelStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','filterAgentAttributes','lodash','../../mysqldb','client','http','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','pause','chatStatus','faxStatus','mailStatus','smsStatus','request','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','*pause','busy','getAgentStatus','isArray','Queue','map','getAgents','all','flatten','uniq','value','getAgentIdsByQueues','resolve','includes','User','fullname','chatPause','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','startsWith','DESC','ASC','internal'];(function(_0x33a476,_0x52c445){var _0x158a2f=function(_0x8aa5c5){while(--_0x8aa5c5){_0x33a476['push'](_0x33a476['shift']());}};_0x158a2f(++_0x52c445);}(_0xf0d4,0x146));var _0x4f0d=function(_0xe2bb9e,_0x2629a9){_0xe2bb9e=_0xe2bb9e-0x0;var _0x43ba10=_0xf0d4[_0xe2bb9e];return _0x43ba10;};'use strict';var _=require(_0x4f0d('0x0'));var jayson=require('jayson/promise');var db=require(_0x4f0d('0x1'))['db'];var amiClient=jayson[_0x4f0d('0x2')]['http']({'port':0x232a});var routingClient=jayson['client'][_0x4f0d('0x3')]({'port':0x232c});function isAgentPaused(_0x16fa3a,_0x189296){var _0x3c99aa=[_0x16fa3a['chatPause'],_0x16fa3a[_0x4f0d('0x4')],_0x16fa3a[_0x4f0d('0x5')],_0x16fa3a[_0x4f0d('0x6')],_0x16fa3a[_0x4f0d('0x7')],_0x16fa3a[_0x4f0d('0x8')],_0x16fa3a[_0x4f0d('0x9')]];if(!_0x189296)return _[_0x4f0d('0xa')](_0x3c99aa);var _0x3e5a08=_[_0x4f0d('0xb')](_0x3c99aa);return _0x3e5a08[_0x4f0d('0xc')]>0x0&&_0x3e5a08['length']<_0x3c99aa[_0x4f0d('0xc')]?!![]:![];}function isIdle(_0xe2f214){return _0xe2f214===_0x4f0d('0xd')||_0xe2f214===_0x4f0d('0xe')||_0xe2f214===_0x4f0d('0xf')||_0xe2f214===_0x4f0d('0x10')||_[_0x4f0d('0x11')](_0xe2f214);}function isAgentIdle(_0x4ce8b6){if(_0x4ce8b6['voiceStatus']!==_0x4f0d('0xd')&&_0x4ce8b6[_0x4f0d('0x8')]){_0x4ce8b6[_0x4f0d('0x12')]=_0x4f0d('0x13');return![];}return _[_0x4f0d('0xa')]([_0x4ce8b6[_0x4f0d('0x14')],_0x4ce8b6[_0x4f0d('0x15')],_0x4ce8b6[_0x4f0d('0x16')],_0x4ce8b6['openchannelStatus'],_0x4ce8b6[_0x4f0d('0x17')],_0x4ce8b6['voiceStatus'],_0x4ce8b6['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0x4f0d('0x18')]('Agents',{})[_0x4f0d('0x19')](function(_0x243ab6){if(_0x243ab6[_0x4f0d('0x1a')]){throw new Error(_0x4f0d('0x1b'));}var _0x555d9a=_0x243ab6[_0x4f0d('0x1c')];return routingClient[_0x4f0d('0x18')](_0x4f0d('0x1d'),{})[_0x4f0d('0x19')](function(_0x2bac08){if(_0x2bac08['error']){throw new Error(_0x4f0d('0x1e'));}var _0xe090d3=_0x2bac08['result'];return _[_0x4f0d('0x1f')]({},_0x555d9a,_0xe090d3);});})[_0x4f0d('0x20')](function(_0x38df9e){throw _0x38df9e;});}exports[_0x4f0d('0x21')]=getRealtimeAgents;function getAgentStatus(_0xf7909d){var _0xda5f5d='unknown';if(isAgentPaused(_0xf7909d))_0xda5f5d=_0x4f0d('0x13');else if(isAgentPaused(_0xf7909d,!![]))_0xda5f5d=_0x4f0d('0x22');else if(isAgentIdle(_0xf7909d))_0xda5f5d=_0x4f0d('0xd');else _0xda5f5d=_0x4f0d('0x23');return _0xda5f5d;}exports[_0x4f0d('0x24')]=getAgentStatus;function getAgentIdsByQueues(_0x4e1e64,_0x25d961){var _0x520095=_[_0x4f0d('0x25')](_0x4e1e64)?_0x4e1e64:[_0x4e1e64];var _0x5158bb=_['startCase'](_0x25d961)+_0x4f0d('0x26');var _0xf8d632=_[_0x4f0d('0x27')](_0x520095,function(_0x35b529){return db[_0x5158bb]['findOne']({'where':{'id':_0x35b529}})[_0x4f0d('0x19')](function(_0x2cddf5){if(!_0x2cddf5)return[];return _0x2cddf5[_0x4f0d('0x28')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x4f0d('0x29')](_0xf8d632)['then'](function(_0x2bf176){var _0x338130=_(_0x2bf176)[_0x4f0d('0x2a')]()[_0x4f0d('0x27')]('id')[_0x4f0d('0x2b')]()[_0x4f0d('0x2c')]();return _0x338130;});}exports[_0x4f0d('0x2d')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x28a167,_0x424918,_0x2e28b9){try{if(_0x424918['length']>0x0){_0x28a167=_0x28a167[_0x4f0d('0xb')](function(_0x573ff6){return _0x424918['includes'](_0x573ff6['id']);});}var _0x39eb79=_0x28a167['filter'](function(_0x2cda39){var _0x4429d7=_0x4f0d('0x23');if(isAgentIdle(_0x2cda39)){_0x4429d7=_0x4f0d('0xd');}return _0x4429d7===_0x2e28b9;});return _[_0x4f0d('0x27')](_0x39eb79,'id');}catch(_0xf3f0a){throw _0xf3f0a;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x32f9da,_0x2168cc,_0x3ed5f0){return Promise[_0x4f0d('0x2e')]()[_0x4f0d('0x19')](function(){if(_0x2168cc[_0x4f0d('0xc')]>0x0){_0x32f9da=_0x32f9da[_0x4f0d('0xb')](function(_0x3ff3d3){return _0x2168cc[_0x4f0d('0x2f')](_0x3ff3d3['id']);});}return _0x32f9da;})['then'](function(){return db[_0x4f0d('0x30')]['findAll']({'attributes':['id','name',_0x4f0d('0x31'),_0x4f0d('0x32'),'faxPause',_0x4f0d('0x5'),_0x4f0d('0x6'),_0x4f0d('0x7'),'voicePause',_0x4f0d('0x9'),_0x4f0d('0x33')],'where':{'id':{'$in':_[_0x4f0d('0x27')](_0x32f9da,'id')}},'raw':!![]});})[_0x4f0d('0x19')](function(_0x3bc791){return _0x3bc791[_0x4f0d('0x27')](function(_0x40c6aa){var _0x1e9abc=_[_0x4f0d('0x34')](_0x32f9da,['id',_0x40c6aa['id']]);var _0x38c2b2=filterAgentAttributes(_0x1e9abc);_[_0x4f0d('0x1f')](_0x40c6aa,_0x38c2b2);_0x40c6aa[_0x4f0d('0x35')]=getAgentStatus(_0x40c6aa);return _0x40c6aa;});})['then'](function(_0x414814){var _0x35149c=sortAgentsByStatus(_0x414814,_0x3ed5f0);return _[_0x4f0d('0x27')](_0x35149c,'id');})[_0x4f0d('0x20')](function(_0x478201){throw _0x478201;});}exports[_0x4f0d('0x36')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x47ac18){var _0x2b40fd={'fields':[],'order':null};var _0x416978=_0x47ac18[_0x4f0d('0x37')](',');_0x2b40fd[_0x4f0d('0x38')]=_[_0x4f0d('0xb')](_0x416978,function(_0x3957ca){if(!_0x3957ca[_0x4f0d('0x2f')](_0x4f0d('0x35'))){return!![];}_0x2b40fd[_0x4f0d('0x39')]=_[_0x4f0d('0x3a')](_0x3957ca,'-')?_0x4f0d('0x3b'):_0x4f0d('0x3c');return![];});return _0x2b40fd;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x418ff4){if(_0x418ff4[_0x4f0d('0x2f')]('fullname')&&!_0x418ff4[_0x4f0d('0x2f')](_0x4f0d('0x3d'))){var _0x1370e2=_0x418ff4['substring'](0x0,_0x418ff4[_0x4f0d('0x3e')](_0x4f0d('0x31')));_0x418ff4+=','+_0x1370e2+_0x4f0d('0x3d');}return _0x418ff4;}exports[_0x4f0d('0x3f')]=validateSortParameter;function sortAgentsByStatus(_0x28357b,_0x3d1e04){var _0x17405d=_0x28357b[_0x4f0d('0x40')](function(_0x21c7ce,_0x3f4a1e){if(_0x21c7ce[_0x4f0d('0x35')]===_0x3f4a1e[_0x4f0d('0x35')]){if(_0x21c7ce[_0x4f0d('0x35')]===_0x4f0d('0x13')){if(_0x3d1e04===_0x4f0d('0x3b')){return(_0x21c7ce[_0x4f0d('0x33')]||'')<(_0x3f4a1e[_0x4f0d('0x33')]||'')||_0x21c7ce['fullname']['toLowerCase']()>_0x3f4a1e['fullname'][_0x4f0d('0x41')]()?0x1:-0x1;}else{return(_0x21c7ce[_0x4f0d('0x33')]||'')<(_0x3f4a1e[_0x4f0d('0x33')]||'')||_0x21c7ce[_0x4f0d('0x31')]['toLowerCase']()>_0x3f4a1e[_0x4f0d('0x31')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x3d1e04==='DESC'){return _0x21c7ce[_0x4f0d('0x31')][_0x4f0d('0x41')]()<_0x3f4a1e[_0x4f0d('0x31')]['toLowerCase']()?0x1:-0x1;}else{return _0x21c7ce[_0x4f0d('0x31')]['toLowerCase']()<_0x3f4a1e[_0x4f0d('0x31')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x3d1e04===_0x4f0d('0x3b')){return _0x21c7ce[_0x4f0d('0x35')]<_0x3f4a1e[_0x4f0d('0x35')]?0x1:-0x1;}else{return _0x21c7ce[_0x4f0d('0x35')]<_0x3f4a1e[_0x4f0d('0x35')]?-0x1:0x1;}}});return _0x17405d;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x105869){var _0x57dce3=[_0x4f0d('0x42'),'online','lastLoginAt',_0x4f0d('0x43'),_0x4f0d('0x33'),_0x4f0d('0x43'),_0x4f0d('0x3d'),_0x4f0d('0x44'),'chatPause',_0x4f0d('0x6'),_0x4f0d('0x5'),_0x4f0d('0x7'),_0x4f0d('0x9'),'faxPause',_0x4f0d('0x8'),_0x4f0d('0x45'),_0x4f0d('0x46'),_0x4f0d('0x47'),_0x4f0d('0x48'),_0x4f0d('0x49'),'faxCapacity',_0x4f0d('0x4a'),_0x4f0d('0x4b'),_0x4f0d('0x4c'),_0x4f0d('0x4d'),'whatsappCurrentCapacity',_0x4f0d('0x4e'),_0x4f0d('0x14'),_0x4f0d('0x4f'),_0x4f0d('0x16'),'smsStatus',_0x4f0d('0x50'),_0x4f0d('0x15'),_0x4f0d('0x12'),_0x4f0d('0x51'),_0x4f0d('0x52'),_0x4f0d('0x53'),_0x4f0d('0x54'),_0x4f0d('0x55'),_0x4f0d('0x56'),_0x4f0d('0x57'),_0x4f0d('0x58'),_0x4f0d('0x59'),_0x4f0d('0x5a'),_0x4f0d('0x5b'),_0x4f0d('0x5c'),_0x4f0d('0x5d')];var _0x4f231=[_0x4f0d('0x32'),'openchannelPause',_0x4f0d('0x5'),'smsPause',_0x4f0d('0x9'),_0x4f0d('0x4'),_0x4f0d('0x8'),'online'];var _0x15e227=_(_0x105869)[_0x4f0d('0x5e')](_0x4f231)[_0x4f0d('0x5f')](_0x57dce3)['value']();return _0x15e227;}exports[_0x4f0d('0x60')]=filterAgentAttributes;
\ No newline at end of file
diff --git a/server/components/realtime/queues.js b/server/components/realtime/queues.js
new file mode 100644 (file)
index 0000000..279ead8
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xceee=['format','result','catch','getRealtimeQueues','voice','outbound','get','paused','loggedInDb','available','waiting','talking','find','merge','initializeQueues','lodash','jayson/promise','util','client','http','loggedIn','busy','onHold','ringInUse','unknown','pTalking','originated','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','request','startCase','Queues','error'];(function(_0x5c1b59,_0x19f4b4){var _0xaff792=function(_0x1e998f){while(--_0x1e998f){_0x5c1b59['push'](_0x5c1b59['shift']());}};_0xaff792(++_0x19f4b4);}(_0xceee,0x1ef));var _0xecee=function(_0x692aa4,_0x38bca4){_0x692aa4=_0x692aa4-0x0;var _0x1b5947=_0xceee[_0x692aa4];return _0x1b5947;};'use strict';var _=require(_0xecee('0x0'));var jayson=require(_0xecee('0x1'));var util=require(_0xecee('0x2'));var amiClient=jayson[_0xecee('0x3')][_0xecee('0x4')]({'port':0x232a});var routingClient=jayson[_0xecee('0x3')][_0xecee('0x4')]({'port':0x232c});var QUEUE_DEFAULT_ATTRIBUTES=['available',_0xecee('0x5'),'paused','waiting'];var INBOUND_VOICE_QUEUE_ATTRIBUTES=[_0xecee('0x6'),'inUse','invalid','loggedInDb','notInUse',_0xecee('0x7'),'ringing',_0xecee('0x8'),'talking','unavailable',_0xecee('0x9')];var OUTBOUND_VOICE_QUEUE_ATTRIBUTES=[_0xecee('0xa'),_0xecee('0xb'),'message',_0xecee('0xc'),_0xecee('0xd'),_0xecee('0xe'),_0xecee('0xf'),_0xecee('0x10'),_0xecee('0x11'),_0xecee('0x12'),_0xecee('0x13'),_0xecee('0x14'),_0xecee('0x15'),_0xecee('0x16'),_0xecee('0x17'),_0xecee('0x18'),_0xecee('0x19'),_0xecee('0x1a'),'predictiveIntervalDroppedCallsTimeout',_0xecee('0x1b'),'predictiveIntervalAvgHoldtime',_0xecee('0x1c')];function getRealtimeQueues(_0x13386b,_0x39ff62){var _0x17309a=_0x39ff62==='voice'?amiClient:routingClient;return _0x17309a[_0xecee('0x1d')](_[_0xecee('0x1e')](_0x39ff62)+_0xecee('0x1f'),_0x13386b)['then'](function(_0x2f68f6){if(_0x2f68f6[_0xecee('0x20')])throw new Error(util[_0xecee('0x21')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x39ff62));return _0x2f68f6[_0xecee('0x22')];})[_0xecee('0x23')](function(_0x2d53b0){throw _0x2d53b0;});}exports[_0xecee('0x24')]=getRealtimeQueues;function initializeQueues(_0x5a4065,_0x381b8d,_0x9957e2,_0x2f7308){var _0x3dd8af=QUEUE_DEFAULT_ATTRIBUTES;if(_0x9957e2===_0xecee('0x25')){if(_0x2f7308===_0xecee('0x26')){_0x3dd8af=_0x3dd8af['concat'](OUTBOUND_VOICE_QUEUE_ATTRIBUTES);}else{_0x3dd8af=_0x3dd8af['concat'](INBOUND_VOICE_QUEUE_ATTRIBUTES);}}return _0x5a4065['map'](function(_0x271878){var _0x49384d=_0x271878[_0xecee('0x27')]({'plain':!![]});_0x49384d[_0xecee('0x28')]=0x0;_0x49384d[_0xecee('0x29')]=0x0;_0x49384d[_0xecee('0x5')]=0x0;_0x49384d[_0xecee('0x2a')]=0x0;_0x49384d[_0xecee('0x2b')]=0x0;if(_0x9957e2==='voice'){_0x49384d[_0xecee('0x2c')]=0x0;_0x49384d[_0xecee('0x6')]=0x0;if(_0x2f7308===_0xecee('0x26')){_0x49384d[_0xecee('0xa')]=0x0;_0x49384d[_0xecee('0xb')]=0x0;}}var _0x5548f1=_[_0xecee('0x2d')](_0x381b8d,['id',_0x49384d['id']]);if(_0x5548f1){_[_0xecee('0x2e')](_0x49384d,_['pick'](_0x5548f1,_0x3dd8af));}return _0x49384d;});}exports[_0xecee('0x2f')]=initializeQueues;
\ No newline at end of file
index 7eb0952..51a4847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x46c9a5,_0x1cb9e7){var _0x5e3eec=function(_0x24105a){while(--_0x24105a){_0x46c9a5['push'](_0x46c9a5['shift']());}};_0x5e3eec(++_0x1cb9e7);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
+var _0xa9e0=['get','production','set','appPath','public','join','root','client','use','toISOString','split','static','views','/server/views','engine','html','ejs','urlencoded','50mb','json','initialize','express','method-override','cookie-parser','passport','./environment','default'];(function(_0xd5160a,_0x572c4b){var _0x576cf9=function(_0xa95da6){while(--_0xa95da6){_0xd5160a['push'](_0xd5160a['shift']());}};_0x576cf9(++_0x572c4b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
index ee17115..299172f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59d4=['../environment','networkInterfaces','keys','length','family','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','cpus','model','md5','update','digest','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','createHash','substring','lodash','crypto','bimedia-machine-uuid','child_process'];(function(_0x5bdaa3,_0x462479){var _0xc4967a=function(_0x3653b2){while(--_0x3653b2){_0x5bdaa3['push'](_0x5bdaa3['shift']());}};_0xc4967a(++_0x462479);}(_0x59d4,0x188));var _0x459d=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x59d4[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x459d('0x0'));var os=require('os');var crypto=require(_0x459d('0x1'));var machine=require(_0x459d('0x2'));var exec=require(_0x459d('0x3'))['execSync'];var config=require(_0x459d('0x4'));function getInterfaces(){var _0x540796=[];var _0x21cbf4=os[_0x459d('0x5')]();var _0x510e35=_['orderBy'](_[_0x459d('0x6')](_0x21cbf4));for(var _0x90fd85=0x0;_0x90fd85<_0x510e35[_0x459d('0x7')];_0x90fd85++){var _0x33a379=_0x21cbf4[_0x510e35[_0x90fd85]]['filter'](function(_0x403504){return _0x403504[_0x459d('0x8')]==='IPv4'&&_0x403504[_0x459d('0x9')]===![];});_0x540796=_0x540796[_0x459d('0xa')](_0x33a379);}return _0x540796;}function getFirstInterface(){var _0x5c38f2=_[_0x459d('0xb')](getInterfaces());return{'macAddress':_0x5c38f2&&_0x5c38f2[_0x459d('0xc')]?_0x5c38f2[_0x459d('0xc')]:_0x459d('0xd'),'ipAddress':_0x5c38f2&&_0x5c38f2['address']?_0x5c38f2[_0x459d('0xe')]:_0x459d('0xf')};}exports[_0x459d('0x10')]=getFirstInterface;function getCPUhash(){var _0x1f4985=_[_0x459d('0x11')](os[_0x459d('0x12')]()['map'](function(_0x30de51){return _0x30de51[_0x459d('0x13')];}))['join'](':');return crypto['createHash'](_0x459d('0x14'))[_0x459d('0x15')](_0x1f4985)[_0x459d('0x16')](_0x459d('0x17'));}exports[_0x459d('0x18')]=function(){var _0x109112=os[_0x459d('0x19')]();var _0x15255c=/[0-9a-f-]{36}/;if(config[_0x459d('0x1a')]&&_0x15255c[_0x459d('0x1b')](config[_0x459d('0x1a')])){return config[_0x459d('0x1a')];}else if(_0x109112==='win32'){return exec(_0x459d('0x1c'),{'encoding':_0x459d('0x1d')})[_0x459d('0x1e')]('\x0d\x0a','');}else{var _0x577d76=getFirstInterface();var _0x79fe45=getCPUhash();var _0x20b994=_0x79fe45+'|'+os[_0x459d('0x1f')]()+'|'+_0x577d76[_0x459d('0x20')]+'|'+_0x577d76[_0x459d('0x21')];var _0x235e80=crypto[_0x459d('0x22')]('md5')[_0x459d('0x15')](_0x20b994)['digest'](_0x459d('0x17'));return _0x235e80[_0x459d('0x23')](0x0,0x8)+'-'+_0x235e80[_0x459d('0x23')](0x8,0xc)+'-'+_0x235e80['substring'](0xc,0x10)+'-'+_0x235e80[_0x459d('0x23')](0x10,0x14)+'-'+_0x235e80[_0x459d('0x23')](0x14);}};
\ No newline at end of file
+var _0x6dd8=['digest','hex','substring','bimedia-machine-uuid','child_process','execSync','orderBy','keys','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','getFirstInterface','cpus','map','createHash','md5','update','platform','test','licenseToken','replace','hostname','macAddress','ipAddress'];(function(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0x6dd8,0x16b));var _0x86dd=function(_0x55afa9,_0x34bb2d){_0x55afa9=_0x55afa9-0x0;var _0x1ba0ad=_0x6dd8[_0x55afa9];return _0x1ba0ad;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0x86dd('0x0'));var exec=require(_0x86dd('0x1'))[_0x86dd('0x2')];var config=require('../environment');function getInterfaces(){var _0x31cae9=[];var _0x2729c9=os['networkInterfaces']();var _0x51a1ba=_[_0x86dd('0x3')](_[_0x86dd('0x4')](_0x2729c9));for(var _0x1cf9eb=0x0;_0x1cf9eb<_0x51a1ba['length'];_0x1cf9eb++){var _0x37f4e4=_0x2729c9[_0x51a1ba[_0x1cf9eb]][_0x86dd('0x5')](function(_0x296785){return _0x296785[_0x86dd('0x6')]===_0x86dd('0x7')&&_0x296785[_0x86dd('0x8')]===![];});_0x31cae9=_0x31cae9[_0x86dd('0x9')](_0x37f4e4);}return _0x31cae9;}function getFirstInterface(){var _0x4b8101=_[_0x86dd('0xa')](getInterfaces());return{'macAddress':_0x4b8101&&_0x4b8101[_0x86dd('0xb')]?_0x4b8101[_0x86dd('0xb')]:_0x86dd('0xc'),'ipAddress':_0x4b8101&&_0x4b8101['address']?_0x4b8101[_0x86dd('0xd')]:'127.0.0.1'};}exports[_0x86dd('0xe')]=getFirstInterface;function getCPUhash(){var _0x5865a3=_['orderBy'](os[_0x86dd('0xf')]()[_0x86dd('0x10')](function(_0x41b94b){return _0x41b94b['model'];}))['join'](':');return crypto[_0x86dd('0x11')](_0x86dd('0x12'))[_0x86dd('0x13')](_0x5865a3)['digest']('hex');}exports['getUuid']=function(){var _0x33b1d4=os[_0x86dd('0x14')]();var _0x577f86=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x577f86[_0x86dd('0x15')](config['licenseToken'])){return config[_0x86dd('0x16')];}else if(_0x33b1d4==='win32'){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':'utf8'})[_0x86dd('0x17')]('\x0d\x0a','');}else{var _0x17e232=getFirstInterface();var _0x1e9e1f=getCPUhash();var _0x439afa=_0x1e9e1f+'|'+os[_0x86dd('0x18')]()+'|'+_0x17e232[_0x86dd('0x19')]+'|'+_0x17e232[_0x86dd('0x1a')];var _0xdb2419=crypto[_0x86dd('0x11')]('md5')[_0x86dd('0x13')](_0x439afa)[_0x86dd('0x1b')](_0x86dd('0x1c'));return _0xdb2419[_0x86dd('0x1d')](0x0,0x8)+'-'+_0xdb2419[_0x86dd('0x1d')](0x8,0xc)+'-'+_0xdb2419['substring'](0xc,0x10)+'-'+_0xdb2419['substring'](0x10,0x14)+'-'+_0xdb2419['substring'](0x14);}};
\ No newline at end of file
index 880c594..dcc5b31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7453=['version','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','get','data2','data1','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','catch','message','finally','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','util','moment','request-promise','pkginfo','../../mysqldb','./hardware','license','exports'];(function(_0x79c24d,_0x4a521d){var _0x3e0c24=function(_0x44df2a){while(--_0x44df2a){_0x79c24d['push'](_0x79c24d['shift']());}};_0x3e0c24(++_0x4a521d);}(_0x7453,0xc4));var _0x3745=function(_0x4ca566,_0x2da224){_0x4ca566=_0x4ca566-0x0;var _0x17416b=_0x7453[_0x4ca566];return _0x17416b;};'use strict';var util=require(_0x3745('0x0'));var moment=require(_0x3745('0x1'));var rp=require(_0x3745('0x2'));var BPromise=require('bluebird');var pkginfo=require(_0x3745('0x3'))(module,'version');var db=require(_0x3745('0x4'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x3745('0x5'));var logger=require('../logger')(_0x3745('0x6'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x39d312){return new BPromise(function(_0x5a710a,_0x309b3d){var _0xfec36e=util['format']('%s/api/servers/%s/check?version=%s',HOST,_0x39d312,module[_0x3745('0x7')][_0x3745('0x8')]);if(oldToken){_0xfec36e=util[_0x3745('0x9')](_0x3745('0xa'),HOST,_0x39d312,module[_0x3745('0x7')][_0x3745('0x8')],oldToken);}var _0x2fa8e6={'uri':_0xfec36e,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x2fa8e6)['then'](function(_0x5c51b3){_0x5a710a(_0x5c51b3);})['catch'](function(_0x4ec040){_0x309b3d(_0x4ec040);});});}function manageLicense(_0x480781,_0x189d7a){var _0xf757aa=_0x189d7a[_0x3745('0xb')]({'plain':!![]});if(!isOldTokenSent&&_0xf757aa['data1']!==_0x480781&&!_0xf757aa[_0x3745('0xc')]){oldToken=_0xf757aa[_0x3745('0xd')];}httpRequest(_0x480781)['then'](function(_0x5f5987){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x5f5987[_0x3745('0xe')]){isOldTokenSent=![];if(!_0xf757aa['license']&&_0xf757aa[_0x3745('0x6')]!=_0x5f5987[_0x3745('0x6')]||_0xf757aa[_0x3745('0x6')]&&_0xf757aa[_0x3745('0xc')]){logger[_0x3745('0xf')](_0x3745('0x10'));}if(_0xf757aa[_0x3745('0x6')]&&!_0xf757aa[_0x3745('0xc')]&&_0xf757aa[_0x3745('0x6')]!=_0x5f5987['license']){logger[_0x3745('0xf')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0xf757aa[_0x3745('0x6')]&&!_0xf757aa[_0x3745('0xc')]&&_0xf757aa[_0x3745('0x6')]==_0x5f5987['license']){return _0x189d7a;}return _0x189d7a['update']({'data1':_0x480781,'data2':null,'license':_0x5f5987[_0x3745('0x6')]});}else{if(_0x5f5987[_0x3745('0x6')]||_0xf757aa['license']){if(!_0xf757aa[_0x3745('0xc')]){if(_0xf757aa['data1']==_0x480781){GRAY_PERIOD_REASON=_0x3745('0x11');logger['info'](_0x3745('0x12'));}else{GRAY_PERIOD_REASON=_0x3745('0x13');logger[_0x3745('0xf')](_0x3745('0x14'),_0xf757aa[_0x3745('0xd')],_0x480781);}logger[_0x3745('0xf')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x3745('0x15')](),moment()[_0x3745('0x9')](_0x3745('0x16')));return _0x189d7a[_0x3745('0x17')]({'data2':encryptor[_0x3745('0x18')](moment()[_0x3745('0x9')](_0x3745('0x16')))});}else{if(moment()[_0x3745('0x19')](encryptor[_0x3745('0x1a')](_0xf757aa[_0x3745('0xc')]),'days')>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()[_0x3745('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x189d7a[_0x3745('0x17')]({'data1':_0x480781,'data2':null,'license':null});}}}else{if(_0xf757aa['data1']!=_0x480781){logger['info'](_0x3745('0x14'),_0xf757aa[_0x3745('0xd')],_0x480781);return _0x189d7a['update']({'data1':_0x480781,'data2':null,'license':null});}}}return _0x189d7a;})['then'](function(_0xada7e){_0x189d7a=_0xada7e;})[_0x3745('0x1b')](function(_0x5ebcb5){logger['error'](_0x5ebcb5[_0x3745('0x1c')]);})[_0x3745('0x1d')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x189d7a);},TIME);});}function defaultLicense(){var _0x4a08b1=hardware['getUuid']();if(_0x4a08b1){return db['License'][_0x3745('0x1e')]({'where':{'id':0x1},'defaults':{'data1':_0x4a08b1}})[_0x3745('0x1f')](function(_0x8eeb52,_0x2b96bf){logger['info'](_0x3745('0x20'),_0x4a08b1);manageLicense(_0x4a08b1,_0x8eeb52);})[_0x3745('0x1b')](function(_0x1eb520){logger[_0x3745('0x21')](_0x1eb520['message']);});}}exports['default']=defaultLicense;
\ No newline at end of file
+var _0x8de3=['Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','format','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','catch','error','message','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','pkginfo','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','version','%s/api/servers/%s/check?version=%s&oldtoken=%s','then','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED'];(function(_0x40f2b4,_0x145a9c){var _0x3ae8c9=function(_0x30f881){while(--_0x30f881){_0x40f2b4['push'](_0x40f2b4['shift']());}};_0x3ae8c9(++_0x145a9c);}(_0x8de3,0xda));var _0x38de=function(_0x515e9f,_0xff9586){_0x515e9f=_0x515e9f-0x0;var _0x19cbf0=_0x8de3[_0x515e9f];return _0x19cbf0;};'use strict';var util=require(_0x38de('0x0'));var moment=require('moment');var rp=require('request-promise');var BPromise=require('bluebird');var pkginfo=require(_0x38de('0x1'))(module,'version');var db=require(_0x38de('0x2'))['db'];var encryptor=require(_0x38de('0x3'));var hardware=require(_0x38de('0x4'));var logger=require(_0x38de('0x5'))(_0x38de('0x6'));var HOST=_0x38de('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x30f647){return new BPromise(function(_0x2b06ae,_0x42ac5c){var _0x29a0f6=util['format'](_0x38de('0x8'),HOST,_0x30f647,module[_0x38de('0x9')][_0x38de('0xa')]);if(oldToken){_0x29a0f6=util['format'](_0x38de('0xb'),HOST,_0x30f647,module['exports']['version'],oldToken);}var _0x53be75={'uri':_0x29a0f6,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x53be75)[_0x38de('0xc')](function(_0x1adb2d){_0x2b06ae(_0x1adb2d);})['catch'](function(_0x2bb9b8){_0x42ac5c(_0x2bb9b8);});});}function manageLicense(_0x13f64a,_0x117340){var _0x384ff8=_0x117340[_0x38de('0xd')]({'plain':!![]});if(!isOldTokenSent&&_0x384ff8[_0x38de('0xe')]!==_0x13f64a&&!_0x384ff8[_0x38de('0xf')]){oldToken=_0x384ff8[_0x38de('0xe')];}httpRequest(_0x13f64a)[_0x38de('0xc')](function(_0x17ff73){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x17ff73[_0x38de('0x10')]){isOldTokenSent=![];if(!_0x384ff8['license']&&_0x384ff8[_0x38de('0x6')]!=_0x17ff73['license']||_0x384ff8[_0x38de('0x6')]&&_0x384ff8[_0x38de('0xf')]){logger[_0x38de('0x11')](_0x38de('0x12'));}if(_0x384ff8['license']&&!_0x384ff8['data2']&&_0x384ff8[_0x38de('0x6')]!=_0x17ff73[_0x38de('0x6')]){logger[_0x38de('0x11')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x384ff8[_0x38de('0x6')]&&!_0x384ff8[_0x38de('0xf')]&&_0x384ff8['license']==_0x17ff73['license']){return _0x117340;}return _0x117340[_0x38de('0x13')]({'data1':_0x13f64a,'data2':null,'license':_0x17ff73['license']});}else{if(_0x17ff73['license']||_0x384ff8[_0x38de('0x6')]){if(!_0x384ff8['data2']){if(_0x384ff8[_0x38de('0xe')]==_0x13f64a){GRAY_PERIOD_REASON=_0x38de('0x14');logger[_0x38de('0x11')](_0x38de('0x15'));}else{GRAY_PERIOD_REASON=_0x38de('0x16');logger[_0x38de('0x11')](_0x38de('0x17'),_0x384ff8['data1'],_0x13f64a);}logger[_0x38de('0x11')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x38de('0x18')](),moment()[_0x38de('0x19')](_0x38de('0x1a')));return _0x117340[_0x38de('0x13')]({'data2':encryptor[_0x38de('0x1b')](moment()[_0x38de('0x19')](_0x38de('0x1a')))});}else{if(moment()[_0x38de('0x1c')](encryptor[_0x38de('0x1d')](_0x384ff8[_0x38de('0xf')]),_0x38de('0x1e'))>DAYS){logger[_0x38de('0x11')](_0x38de('0x1f'),moment()['format']('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x117340[_0x38de('0x13')]({'data1':_0x13f64a,'data2':null,'license':null});}}}else{if(_0x384ff8['data1']!=_0x13f64a){logger['info'](_0x38de('0x17'),_0x384ff8[_0x38de('0xe')],_0x13f64a);return _0x117340[_0x38de('0x13')]({'data1':_0x13f64a,'data2':null,'license':null});}}}return _0x117340;})[_0x38de('0xc')](function(_0xef746d){_0x117340=_0xef746d;})[_0x38de('0x20')](function(_0x220120){logger[_0x38de('0x21')](_0x220120[_0x38de('0x22')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x117340);},TIME);});}function defaultLicense(){var _0x3bce21=hardware['getUuid']();if(_0x3bce21){return db[_0x38de('0x23')][_0x38de('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x3bce21}})[_0x38de('0x25')](function(_0x5d4822,_0x362026){logger['info'](_0x38de('0x26'),_0x3bce21);manageLicense(_0x3bce21,_0x5d4822);})['catch'](function(_0x27f098){logger[_0x38de('0x21')](_0x27f098[_0x38de('0x22')]);});}}exports[_0x38de('0x27')]=defaultLicense;
\ No newline at end of file
index 0654165..f6e52a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e1e=['moment','./hardware','../../mysqldb','Demo\x20license','getUuid','Breaking\x20license','find','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','parse','demo','machineUuid','gray','days','disabled','message','then','role','sequelize','col','count','admin','user','users','forEach','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash'];(function(_0x3191ec,_0x3111d4){var _0x3128f5=function(_0x560a17){while(--_0x560a17){_0x3191ec['push'](_0x3191ec['shift']());}};_0x3128f5(++_0x3111d4);}(_0x6e1e,0x1a0));var _0xe6e1=function(_0x4aec2a,_0x5deff8){_0x4aec2a=_0x4aec2a-0x0;var _0x3a4cdc=_0x6e1e[_0x4aec2a];return _0x3a4cdc;};'use strict';var util=require(_0xe6e1('0x0'));var _=require(_0xe6e1('0x1'));var moment=require(_0xe6e1('0x2'));var BPromise=require('bluebird');var hardware=require(_0xe6e1('0x3'));var encryptor=require('../../components/encryptor');var db=require(_0xe6e1('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xe6e1('0x5'),'machineUuid':hardware[_0xe6e1('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xe6e1('0x7'),'machineUuid':hardware[_0xe6e1('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x364f56){return new BPromise(function(_0x28cbc8,_0x11adcc){return db['License'][_0xe6e1('0x8')](_['defaults'](_0x364f56,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x2d59b9){return checkLicense(_0x2d59b9,null);})['then'](function(_0xcf6b84){_0x28cbc8(_0xcf6b84);return;})[_0xe6e1('0x9')](function(_0x2fd6e3){_0x11adcc(_0x2fd6e3);});});}function checkLicense(_0x51450e,_0x24a5c4){if(!_0x51450e){demoLicense[_0xe6e1('0xa')]=_0x51450e[_0xe6e1('0xb')];return demoLicense;}try{var _0x37592b=_0x24a5c4||_0x51450e[_0xe6e1('0xc')];if(_[_0xe6e1('0xd')](_0x37592b)){throw new Error(_0xe6e1('0xe'));}var _0x5de983=_0x51450e['data1'];var _0x5d96d8=_0x51450e['data2'];var _0x4a9576=_0x5de983[_0xe6e1('0xf')]('-')[0x4];var _0x3bca71=_0x5de983[_0xe6e1('0xf')]('-')[0x0];var _0x289dc6=encryptor[_0xe6e1('0x10')](_0x37592b,util[_0xe6e1('0x11')]('%s:%s:%s',_0x4a9576,_0x5de983,_0x3bca71));var _0x4db2e8=JSON[_0xe6e1('0x12')](_0x289dc6);_0x4db2e8[_0xe6e1('0x13')]=![];_0x4db2e8[_0xe6e1('0xa')]=_0x5de983;_0x4db2e8[_0xe6e1('0x14')]=hardware[_0xe6e1('0x6')]();if(_0x5d96d8){var _0x141426=encryptor[_0xe6e1('0x10')](_0x5d96d8);_0x4db2e8[_0xe6e1('0x15')]=_0x141426;_0x4db2e8['deadline']=moment(_0x141426)['add'](0x7,_0xe6e1('0x16'))[_0xe6e1('0x11')]();_0x4db2e8['grayReason']=_0x4db2e8[_0xe6e1('0xa')]!=_0x4db2e8[_0xe6e1('0x14')]?'changed':_0xe6e1('0x17');}return _0x4db2e8;}catch(_0x31041d){breakingLicense['uuid']=_0x51450e[_0xe6e1('0xb')];breakingLicense[_0xe6e1('0x18')]=_0x31041d[_0xe6e1('0x18')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x1658cd,_0x306385){getLicense()[_0xe6e1('0x19')](function(_0x397d38){return db['User']['findAll']({'attributes':[_0xe6e1('0x1a'),[db['sequelize']['fn']('COUNT',db[_0xe6e1('0x1b')][_0xe6e1('0x1c')](_0xe6e1('0x1a'))),_0xe6e1('0x1d')]],'group':_0xe6e1('0x1a'),'where':{'role':{'$or':[_0xe6e1('0x1e'),_0xe6e1('0x1f'),'telephone']}},'raw':!![]})[_0xe6e1('0x19')](function(_0x4d78e0){var _0x51fc61={'user':_0x397d38[_0xe6e1('0x20')]||0x0,'telephone':_0x397d38['telephones']||0x0};_0x4d78e0[_0xe6e1('0x21')](function(_0x3e87f4){var _0x254ce9=_0x3e87f4['role']==='admin'?'user':_0x3e87f4[_0xe6e1('0x1a')];_0x51fc61[_0x254ce9]-=_0x3e87f4[_0xe6e1('0x1d')];if(_0x51fc61[_0x254ce9]<0x0)_0x51fc61[_0x254ce9]=0x0;});_0x1658cd(_0x51fc61);return;});})[_0xe6e1('0x9')](function(_0x198775){_0x306385(_0x198775);});});}function checkUserLimits(_0x342b1){return new BPromise(function(_0x413469,_0x3c8a5d){getLimits()[_0xe6e1('0x19')](function(_0x22edb8){var _0x888dd0=_['pick'](_['countBy'](_0x342b1,'role'),['admin',_0xe6e1('0x1f'),_0xe6e1('0x22')]);var _0x3c17e9=(_0x888dd0['admin']||0x0)+(_0x888dd0[_0xe6e1('0x1f')]||0x0);var _0x5a154b=_0x888dd0[_0xe6e1('0x22')]||0x0;if(_0x3c17e9>_0x22edb8[_0xe6e1('0x1f')])return _0x3c8a5d(_0xe6e1('0x23'));if(_0x5a154b>_0x22edb8['telephone'])return _0x3c8a5d(_0xe6e1('0x24'));return _0x413469();})[_0xe6e1('0x9')](function(_0x508265){_0x3c8a5d(_0x508265);});});}module[_0xe6e1('0x25')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xf9d5=['Demo\x20license','Breaking\x20license','getUuid','License','find','defaults','then','catch','uuid','license','License\x20key\x20value\x20not\x20found','data1','data2','split','decryptString','%s:%s:%s','parse','deadline','add','format','changed','disabled','message','findAll','role','sequelize','COUNT','count','admin','user','telephone','users','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'];(function(_0x12c6a0,_0x121b8d){var _0x358883=function(_0x5b7e66){while(--_0x5b7e66){_0x12c6a0['push'](_0x12c6a0['shift']());}};_0x358883(++_0x121b8d);}(_0xf9d5,0xe3));var _0x5f9d=function(_0x5c25d8,_0x36c7e7){_0x5c25d8=_0x5c25d8-0x0;var _0x48652c=_0xf9d5[_0x5c25d8];return _0x48652c;};'use strict';var util=require(_0x5f9d('0x0'));var _=require(_0x5f9d('0x1'));var moment=require(_0x5f9d('0x2'));var BPromise=require(_0x5f9d('0x3'));var hardware=require(_0x5f9d('0x4'));var encryptor=require(_0x5f9d('0x5'));var db=require(_0x5f9d('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x5f9d('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x5f9d('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x5f9d('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x5f9d('0x9'),'machineUuid':hardware[_0x5f9d('0xa')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0xe77173){return new BPromise(function(_0x46d9b3,_0x293d37){return db[_0x5f9d('0xb')][_0x5f9d('0xc')](_[_0x5f9d('0xd')](_0xe77173,{'raw':!![],'where':{'id':0x1}}))[_0x5f9d('0xe')](function(_0x5efc26){return checkLicense(_0x5efc26,null);})[_0x5f9d('0xe')](function(_0x4f4520){_0x46d9b3(_0x4f4520);return;})[_0x5f9d('0xf')](function(_0x1bb198){_0x293d37(_0x1bb198);});});}function checkLicense(_0xa4db9,_0x37c6c1){if(!_0xa4db9){demoLicense[_0x5f9d('0x10')]=_0xa4db9['data1'];return demoLicense;}try{var _0x1d8f6c=_0x37c6c1||_0xa4db9[_0x5f9d('0x11')];if(_['isEmpty'](_0x1d8f6c)){throw new Error(_0x5f9d('0x12'));}var _0x86fbe0=_0xa4db9[_0x5f9d('0x13')];var _0xeb00f0=_0xa4db9[_0x5f9d('0x14')];var _0x36c310=_0x86fbe0[_0x5f9d('0x15')]('-')[0x4];var _0x5b062a=_0x86fbe0[_0x5f9d('0x15')]('-')[0x0];var _0x1be232=encryptor[_0x5f9d('0x16')](_0x1d8f6c,util['format'](_0x5f9d('0x17'),_0x36c310,_0x86fbe0,_0x5b062a));var _0x322ed7=JSON[_0x5f9d('0x18')](_0x1be232);_0x322ed7['demo']=![];_0x322ed7[_0x5f9d('0x10')]=_0x86fbe0;_0x322ed7['machineUuid']=hardware['getUuid']();if(_0xeb00f0){var _0x470a56=encryptor['decryptString'](_0xeb00f0);_0x322ed7['gray']=_0x470a56;_0x322ed7[_0x5f9d('0x19')]=moment(_0x470a56)[_0x5f9d('0x1a')](0x7,'days')[_0x5f9d('0x1b')]();_0x322ed7['grayReason']=_0x322ed7[_0x5f9d('0x10')]!=_0x322ed7['machineUuid']?_0x5f9d('0x1c'):_0x5f9d('0x1d');}return _0x322ed7;}catch(_0xe00b0d){breakingLicense[_0x5f9d('0x10')]=_0xa4db9['data1'];breakingLicense[_0x5f9d('0x1e')]=_0xe00b0d['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x2e89ce,_0x428863){getLicense()[_0x5f9d('0xe')](function(_0x33c81d){return db['User'][_0x5f9d('0x1f')]({'attributes':[_0x5f9d('0x20'),[db[_0x5f9d('0x21')]['fn'](_0x5f9d('0x22'),db[_0x5f9d('0x21')]['col'](_0x5f9d('0x20'))),_0x5f9d('0x23')]],'group':_0x5f9d('0x20'),'where':{'role':{'$or':[_0x5f9d('0x24'),_0x5f9d('0x25'),_0x5f9d('0x26')]}},'raw':!![]})[_0x5f9d('0xe')](function(_0x550f19){var _0x8fe994={'user':_0x33c81d[_0x5f9d('0x27')]||0x0,'telephone':_0x33c81d[_0x5f9d('0x28')]||0x0};_0x550f19[_0x5f9d('0x29')](function(_0x41e69f){var _0x4906f8=_0x41e69f[_0x5f9d('0x20')]===_0x5f9d('0x24')?_0x5f9d('0x25'):_0x41e69f['role'];_0x8fe994[_0x4906f8]-=_0x41e69f['count'];if(_0x8fe994[_0x4906f8]<0x0)_0x8fe994[_0x4906f8]=0x0;});_0x2e89ce(_0x8fe994);return;});})[_0x5f9d('0xf')](function(_0x573a6c){_0x428863(_0x573a6c);});});}function checkUserLimits(_0x4b3951){return new BPromise(function(_0x50595a,_0x5572c0){getLimits()[_0x5f9d('0xe')](function(_0x50db13){var _0x35b63e=_[_0x5f9d('0x2a')](_[_0x5f9d('0x2b')](_0x4b3951,'role'),[_0x5f9d('0x24'),_0x5f9d('0x25'),_0x5f9d('0x26')]);var _0x371e34=(_0x35b63e[_0x5f9d('0x24')]||0x0)+(_0x35b63e[_0x5f9d('0x25')]||0x0);var _0x1a668a=_0x35b63e['telephone']||0x0;if(_0x371e34>_0x50db13['user'])return _0x5572c0(_0x5f9d('0x2c'));if(_0x1a668a>_0x50db13[_0x5f9d('0x26')])return _0x5572c0(_0x5f9d('0x2d'));return _0x50595a();})[_0x5f9d('0xf')](function(_0x35151d){_0x5572c0(_0x35151d);});});}module[_0x5f9d('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 5ffe0a4..fba5d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['http://localhost:9000','myappanuglar-secret','app-id','secret','exports'];(function(_0x838914,_0x532e4a){var _0x35f2f2=function(_0x1d9753){while(--_0x1d9753){_0x838914['push'](_0x838914['shift']());}};_0x35f2f2(++_0x532e4a);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x5cd7ea,_0x41ea95){_0x5cd7ea=_0x5cd7ea-0x0;var _0x581ad1=_0xd4f4[_0x5cd7ea];return _0x581ad1;};'use strict';module[_0x4d4f('0x0')]={'DOMAIN':_0x4d4f('0x1'),'SESSION_SECRET':_0x4d4f('0x2'),'GOOGLE_ID':_0x4d4f('0x3'),'GOOGLE_SECRET':_0x4d4f('0x4'),'DEBUG':''};
\ No newline at end of file
+var _0x065e=['secret','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x065e,0x1a7));var _0xe065=function(_0x145f49,_0x3812b9){_0x145f49=_0x145f49-0x0;var _0x343c38=_0x065e[_0x145f49];return _0x343c38;};'use strict';module[_0xe065('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xe065('0x1'),'DEBUG':''};
\ No newline at end of file
index 911f2cf..7be2147 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b5=['../utils/loggers','exports'];(function(_0x17249c,_0x168d62){var _0x324e7b=function(_0x1b1397){while(--_0x1b1397){_0x17249c['push'](_0x17249c['shift']());}};_0x324e7b(++_0x168d62);}(_0x68b5,0x1b0));var _0x568b=function(_0x584c27,_0x1bf7f5){_0x584c27=_0x584c27-0x0;var _0x1b3e96=_0x68b5[_0x584c27];return _0x1b3e96;};'use strict';var fileLogger=require(_0x568b('0x0'))['fileLogger'];module[_0x568b('0x1')]=fileLogger;
\ No newline at end of file
+var _0x32f0=['fileLogger','../utils/loggers'];(function(_0x26aaaf,_0x4e8f2a){var _0x24e1a8=function(_0x53c0ec){while(--_0x53c0ec){_0x26aaaf['push'](_0x26aaaf['shift']());}};_0x24e1a8(++_0x4e8f2a);}(_0x32f0,0x1c3));var _0x032f=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x32f0[_0x5f309e];return _0x487b5e;};'use strict';var fileLogger=require(_0x032f('0x0'))[_0x032f('0x1')];module['exports']=fileLogger;
\ No newline at end of file
index 43465ff..7eb327a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d00=['ami','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','express','join','../../services/express/index.js'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x7d00,0x1dd));var _0x07d0=function(_0x759f52,_0xec7063){_0x759f52=_0x759f52-0x0;var _0x406907=_0x7d00[_0x759f52];return _0x406907;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0x07d0('0x0'),'script':path[_0x07d0('0x1')](__dirname,_0x07d0('0x2'))},{'name':_0x07d0('0x3'),'script':path[_0x07d0('0x1')](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path[_0x07d0('0x1')](__dirname,_0x07d0('0x4'))},{'name':_0x07d0('0x5'),'script':path[_0x07d0('0x1')](__dirname,_0x07d0('0x6'))},{'name':_0x07d0('0x7'),'script':path['join'](__dirname,_0x07d0('0x8'))},{'name':_0x07d0('0x9'),'script':path[_0x07d0('0x1')](__dirname,_0x07d0('0xa'))}]};module[_0x07d0('0xb')]=config;
\ No newline at end of file
+var _0x145d=['../../services/xdr/index.js','path','ami','agi','join','email','../../services/email/index.js','../../services/routing/index.js','xdr'];(function(_0x1bb58a,_0x49b338){var _0x508303=function(_0x36ad36){while(--_0x36ad36){_0x1bb58a['push'](_0x1bb58a['shift']());}};_0x508303(++_0x49b338);}(_0x145d,0x1ba));var _0xd145=function(_0x5019bb,_0x516449){_0x5019bb=_0x5019bb-0x0;var _0x4d07b2=_0x145d[_0x5019bb];return _0x4d07b2;};'use strict';var path=require(_0xd145('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path['join'](__dirname,'../../services/express/index.js')},{'name':_0xd145('0x1'),'script':path['join'](__dirname,'../../services/ami/index.js')},{'name':_0xd145('0x2'),'script':path[_0xd145('0x3')](__dirname,'../../services/agi/index.js')},{'name':_0xd145('0x4'),'script':path[_0xd145('0x3')](__dirname,_0xd145('0x5'))},{'name':'routing','script':path[_0xd145('0x3')](__dirname,_0xd145('0x6'))},{'name':_0xd145('0x7'),'script':path[_0xd145('0x3')](__dirname,_0xd145('0x8'))}]};module['exports']=config;
\ No newline at end of file
index 9003760..c31e4b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec3e=['restart','list','describe','delete','dump','saved','pm2','bluebird','./config','connect','connected','start','disconnect','stop','then'];(function(_0x5be633,_0x210def){var _0x44811d=function(_0x22613c){while(--_0x22613c){_0x5be633['push'](_0x5be633['shift']());}};_0x44811d(++_0x210def);}(_0xec3e,0x1e6));var _0xeec3=function(_0x238460,_0x23bd23){_0x238460=_0x238460-0x0;var _0x4c7237=_0xec3e[_0x238460];return _0x4c7237;};'use strict';var pm2=require(_0xeec3('0x0'));var BPromise=require(_0xeec3('0x1'));var config=require(_0xeec3('0x2'));function connect(){return new BPromise(function(_0x5de822,_0x4d9063){return pm2[_0xeec3('0x3')](function(_0x56d50e){if(_0x56d50e){return _0x4d9063(_0x56d50e);}return _0x5de822(_0xeec3('0x4'));});});};exports[_0xeec3('0x5')]=function(_0x3116da){return connect()['then'](function(){return new BPromise(function(_0x44bcb3,_0x4b448f){return pm2[_0xeec3('0x5')](_0x3116da,function(_0x51549a,_0x15674a){if(_0x51549a){return _0x4b448f(_0x51549a);}pm2[_0xeec3('0x6')]();return _0x44bcb3(_0x15674a);});});});};exports[_0xeec3('0x7')]=function(_0x2fad57){return connect()[_0xeec3('0x8')](function(){return new BPromise(function(_0x444e9c,_0x3e6a1a){return pm2['stop'](_0x2fad57,function(_0x3c1f3f,_0x576c1d){if(_0x3c1f3f){return _0x3e6a1a(_0x3c1f3f);}pm2[_0xeec3('0x6')]();return _0x444e9c(_0x576c1d);});});});};exports[_0xeec3('0x9')]=function(_0x3dff01){return connect()[_0xeec3('0x8')](function(){return new BPromise(function(_0x4e50e2,_0x5739f0){return pm2[_0xeec3('0x9')](_0x3dff01,function(_0x45be20,_0x258f48){if(_0x45be20){return _0x5739f0(_0x45be20);}pm2[_0xeec3('0x6')]();return _0x4e50e2(_0x258f48);});});});};exports[_0xeec3('0xa')]=function(){return connect()[_0xeec3('0x8')](function(){return new BPromise(function(_0x43084c,_0x4d7bce){return pm2[_0xeec3('0xa')](function(_0x50aa02,_0x28ca94){if(_0x50aa02){return _0x4d7bce(_0x50aa02);}pm2[_0xeec3('0x6')]();return _0x43084c(_0x28ca94);});});});};exports[_0xeec3('0xb')]=function(_0x54523c){return connect()[_0xeec3('0x8')](function(){return new BPromise(function(_0x1b10b5,_0x42e338){return pm2[_0xeec3('0xb')](_0x54523c,function(_0x26a4eb,_0x557c87){if(_0x26a4eb){return _0x42e338(_0x26a4eb);}pm2[_0xeec3('0x6')]();return _0x1b10b5(_0x557c87);});});});};exports[_0xeec3('0xc')]=function(_0x5eb21c){return connect()[_0xeec3('0x8')](function(){return new BPromise(function(_0x43a381,_0x135857){return pm2[_0xeec3('0xc')](_0x5eb21c,function(_0x37c97a,_0x4cfc15){if(_0x37c97a){return _0x135857(_0x37c97a);}pm2[_0xeec3('0x6')]();return _0x43a381(_0x4cfc15);});});});};exports[_0xeec3('0xd')]=function(){return connect()[_0xeec3('0x8')](function(){return new BPromise(function(_0x31f9b3,_0xb14f97){return pm2[_0xeec3('0xd')](function(_0x19b9e2){if(_0x19b9e2){return _0xb14f97(_0x19b9e2);}return _0x31f9b3(_0xeec3('0xe'));});});});};
\ No newline at end of file
+var _0x953d=['start','then','disconnect','stop','restart','list','delete','dump','pm2','bluebird','./config','connect','connected'];(function(_0xc45596,_0x5c410e){var _0x425ffe=function(_0x3c327d){while(--_0x3c327d){_0xc45596['push'](_0xc45596['shift']());}};_0x425ffe(++_0x5c410e);}(_0x953d,0x1a8));var _0xd953=function(_0x5147a4,_0x4e4b41){_0x5147a4=_0x5147a4-0x0;var _0x84faf6=_0x953d[_0x5147a4];return _0x84faf6;};'use strict';var pm2=require(_0xd953('0x0'));var BPromise=require(_0xd953('0x1'));var config=require(_0xd953('0x2'));function connect(){return new BPromise(function(_0x2ed6b5,_0x47e3b9){return pm2[_0xd953('0x3')](function(_0x2456fa){if(_0x2456fa){return _0x47e3b9(_0x2456fa);}return _0x2ed6b5(_0xd953('0x4'));});});};exports[_0xd953('0x5')]=function(_0x52e71f){return connect()[_0xd953('0x6')](function(){return new BPromise(function(_0x49969e,_0x3ed133){return pm2[_0xd953('0x5')](_0x52e71f,function(_0x1851a2,_0x452010){if(_0x1851a2){return _0x3ed133(_0x1851a2);}pm2[_0xd953('0x7')]();return _0x49969e(_0x452010);});});});};exports[_0xd953('0x8')]=function(_0x319163){return connect()[_0xd953('0x6')](function(){return new BPromise(function(_0x7b2f07,_0x4b2b34){return pm2[_0xd953('0x8')](_0x319163,function(_0x752353,_0x5cb7a7){if(_0x752353){return _0x4b2b34(_0x752353);}pm2['disconnect']();return _0x7b2f07(_0x5cb7a7);});});});};exports['restart']=function(_0x311d6a){return connect()[_0xd953('0x6')](function(){return new BPromise(function(_0x41d3f6,_0x46c3f7){return pm2[_0xd953('0x9')](_0x311d6a,function(_0x310eaf,_0x446593){if(_0x310eaf){return _0x46c3f7(_0x310eaf);}pm2[_0xd953('0x7')]();return _0x41d3f6(_0x446593);});});});};exports[_0xd953('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x37cae7,_0x1ce188){return pm2[_0xd953('0xa')](function(_0x13626a,_0x50f7a8){if(_0x13626a){return _0x1ce188(_0x13626a);}pm2['disconnect']();return _0x37cae7(_0x50f7a8);});});});};exports['describe']=function(_0x16b7d1){return connect()['then'](function(){return new BPromise(function(_0x447fb4,_0x1a5ffa){return pm2['describe'](_0x16b7d1,function(_0x321dd6,_0x1a9d78){if(_0x321dd6){return _0x1a5ffa(_0x321dd6);}pm2['disconnect']();return _0x447fb4(_0x1a9d78);});});});};exports[_0xd953('0xb')]=function(_0x3ebccf){return connect()[_0xd953('0x6')](function(){return new BPromise(function(_0x414837,_0xf20fbc){return pm2[_0xd953('0xb')](_0x3ebccf,function(_0x103a22,_0x4b9628){if(_0x103a22){return _0xf20fbc(_0x103a22);}pm2[_0xd953('0x7')]();return _0x414837(_0x4b9628);});});});};exports[_0xd953('0xc')]=function(){return connect()[_0xd953('0x6')](function(){return new BPromise(function(_0x30df06,_0x4290dc){return pm2[_0xd953('0xc')](function(_0x2627a8){if(_0x2627a8){return _0x4290dc(_0x2627a8);}return _0x30df06('saved');});});});};
\ No newline at end of file
index bf21064..b7662ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85de=['chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','start','moment','ioredis','util','../../mysqldb','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','then','chatTimeout','ChatInteraction','lastMsgAt','subtract','minutes','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','length','emit'];(function(_0x4de99a,_0x478e39){var _0x1c43a4=function(_0x3f55f7){while(--_0x3f55f7){_0x4de99a['push'](_0x4de99a['shift']());}};_0x1c43a4(++_0x478e39);}(_0x85de,0xcb));var _0xe85d=function(_0x4145df,_0x1ad4a7){_0x4145df=_0x4145df-0x0;var _0x5934b9=_0x85de[_0x4145df];return _0x5934b9;};'use strict';var _=require('lodash');var moment=require(_0xe85d('0x0'));var Redis=require(_0xe85d('0x1'));var util=require(_0xe85d('0x2'));var config=require('../../config/environment');var db=require(_0xe85d('0x3'))['db'];var logger=require('../logger')(_0xe85d('0x4'));config[_0xe85d('0x5')]=_[_0xe85d('0x6')](config[_0xe85d('0x5')],{'host':_0xe85d('0x7'),'port':0x18eb});var io=require(_0xe85d('0x8'))(new Redis(config[_0xe85d('0x5')]));function closeInteractions(){var _0x4c276b=0x0;var _0x7525a5=[];return db[_0xe85d('0x9')][_0xe85d('0xa')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0xe85d('0xb')](function(_0x104693){_0x4c276b=_0x104693[_0xe85d('0xc')];if(_0x4c276b){return db[_0xe85d('0xd')]['findAll']({'raw':!![],'attributes':['id',_0xe85d('0xe')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xe85d('0xf')](_0x104693['chatTimeout'],_0xe85d('0x10'))}}});}else{return[];}})['then'](function(_0x22f549){if(_0x22f549&&_0x22f549['length']){_0x7525a5=_[_0xe85d('0x11')](_0x22f549||[],'id');logger[_0xe85d('0x12')](_0xe85d('0x13'),_0x7525a5[_0xe85d('0x14')]());return db[_0xe85d('0xd')]['update']({'closeReason':_0xe85d('0x15'),'disposition':_0xe85d('0x16'),'closed':!![],'closedAt':moment()[_0xe85d('0x17')](_0xe85d('0x18'))},{'where':{'id':_0x7525a5}});}})[_0xe85d('0xb')](function(){if(_0x7525a5&&_0x7525a5['length']){logger[_0xe85d('0x12')](_0xe85d('0x19'),_0x7525a5[_0xe85d('0x14')]());for(var _0x13d121=0x0;_0x13d121<_0x7525a5[_0xe85d('0x1a')];_0x13d121++){io[_0xe85d('0x1b')](_0xe85d('0x1c'),{'id':_0x7525a5[_0x13d121],'closed':!![]});}}})[_0xe85d('0x1d')](function(_0x424112){logger[_0xe85d('0x1e')](_0xe85d('0x1f'),_0x424112?util['inspect'](_0x424112,{'showHidden':![],'depth':null}):'');});}exports[_0xe85d('0x20')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xe16a=['join','update','system','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','find','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','subtract','minutes','length','info','[CHAT]\x20Interactions\x20to\x20close:'];(function(_0x39ffd1,_0x299703){var _0x31267e=function(_0x11b420){while(--_0x11b420){_0x39ffd1['push'](_0x39ffd1['shift']());}};_0x31267e(++_0x299703);}(_0xe16a,0xb6));var _0xae16=function(_0x25d947,_0x5c070c){_0x25d947=_0x25d947-0x0;var _0x4fa896=_0xe16a[_0x25d947];return _0x4fa896;};'use strict';var _=require(_0xae16('0x0'));var moment=require('moment');var Redis=require(_0xae16('0x1'));var util=require(_0xae16('0x2'));var config=require(_0xae16('0x3'));var db=require(_0xae16('0x4'))['db'];var logger=require(_0xae16('0x5'))(_0xae16('0x6'));config[_0xae16('0x7')]=_[_0xae16('0x8')](config['redis'],{'host':_0xae16('0x9'),'port':0x18eb});var io=require(_0xae16('0xa'))(new Redis(config[_0xae16('0x7')]));function closeInteractions(){var _0x32ccf9=0x0;var _0x37905c=[];return db['Setting'][_0xae16('0xb')]({'raw':!![],'attributes':['id',_0xae16('0xc')],'where':{'id':0x1}})[_0xae16('0xd')](function(_0x599262){_0x32ccf9=_0x599262[_0xae16('0xc')];if(_0x32ccf9){return db[_0xae16('0xe')][_0xae16('0xf')]({'raw':!![],'attributes':['id',_0xae16('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xae16('0x11')](_0x599262['chatTimeout'],_0xae16('0x12'))}}});}else{return[];}})[_0xae16('0xd')](function(_0x422824){if(_0x422824&&_0x422824[_0xae16('0x13')]){_0x37905c=_['map'](_0x422824||[],'id');logger[_0xae16('0x14')](_0xae16('0x15'),_0x37905c[_0xae16('0x16')]());return db[_0xae16('0xe')][_0xae16('0x17')]({'closeReason':_0xae16('0x18'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xae16('0x19')](_0xae16('0x1a'))},{'where':{'id':_0x37905c}});}})[_0xae16('0xd')](function(){if(_0x37905c&&_0x37905c[_0xae16('0x13')]){logger[_0xae16('0x14')](_0xae16('0x1b'),_0x37905c[_0xae16('0x16')]());for(var _0x3dbfc0=0x0;_0x3dbfc0<_0x37905c['length'];_0x3dbfc0++){io[_0xae16('0x1c')]('chatInteraction:update',{'id':_0x37905c[_0x3dbfc0],'closed':!![]});}}})[_0xae16('0x1d')](function(_0x1552b0){logger[_0xae16('0x1e')](_0xae16('0x1f'),_0x1552b0?util[_0xae16('0x20')](_0x1552b0,{'showHidden':![],'depth':null}):'');});}exports[_0xae16('0x21')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 600b150..375ce54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d76=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals','exports'];(function(_0xc22441,_0x580291){var _0x4d7161=function(_0x5c8bf4){while(--_0x5c8bf4){_0xc22441['push'](_0xc22441['shift']());}};_0x4d7161(++_0x580291);}(_0x3d76,0xc9));var _0x63d7=function(_0x7feb90,_0x28e700){_0x7feb90=_0x7feb90-0x0;var _0x3c5b33=_0x3d76[_0x7feb90];return _0x3c5b33;};'use strict';function start(){var _0x3af706=require(_0x63d7('0x0'));return _0x3af706[_0x63d7('0x1')]();}module[_0x63d7('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0xed20=['../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x254f53,_0x14b5fc){var _0x4d9970=function(_0x1a2d94){while(--_0x1a2d94){_0x254f53['push'](_0x254f53['shift']());}};_0x4d9970(++_0x14b5fc);}(_0xed20,0xe4));var _0x0ed2=function(_0x5797aa,_0x3fdb39){_0x5797aa=_0x5797aa-0x0;var _0x427812=_0xed20[_0x5797aa];return _0x427812;};'use strict';function start(){var _0x411abb=require(_0x0ed2('0x0'));return _0x411abb['startAllRefreshIntervals']();}module['exports']={'intervals':{},'start':start};
\ No newline at end of file
index b3cfd87..4f933c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf1c=['user','bcc','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','Sent','message','text','status','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','error\x20mail','stringify','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','then','CustomReportId','exec\x20custom\x20report\x20id:%s','findAll','MailServerOut','CloudProvider','keys','map','keyBy','difference','intersection','toString','exists','stop','deleteJob','delete\x20cron','toRun','resolve','run\x20job','cron','active','isBetween','startAt','endAt','start','add\x20cron','length','update\x20cron','util','path','moment','cron-job-manager','jayson/promise','bluebird','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','Smtp'];(function(_0x50067a,_0x176087){var _0x58d7f1=function(_0x37eb42){while(--_0x37eb42){_0x50067a['push'](_0x50067a['shift']());}};_0x58d7f1(++_0x176087);}(_0xcf1c,0x18d));var _0xccf1=function(_0x41cd93,_0x382eb8){_0x41cd93=_0x41cd93-0x0;var _0x58a7f8=_0xcf1c[_0x41cd93];return _0x58a7f8;};'use strict';var fs=require('fs');var util=require(_0xccf1('0x0'));var path=require(_0xccf1('0x1'));var _=require('lodash');var moment=require(_0xccf1('0x2'));var CronJobManager=require(_0xccf1('0x3'));var jayson=require(_0xccf1('0x4'));var BPromise=require(_0xccf1('0x5'));var logger=require('../logger')('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xccf1('0x6'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xccf1('0x7')][_0xccf1('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2c381f,_0x439e91){return function(){logger[_0xccf1('0x9')](_0xccf1('0xa'),_0x2c381f[_0xccf1('0xb')]);var _0x2ed2a0=!![];var _0x31f820=_0x2c381f[_0xccf1('0xc')][_0xccf1('0xd')]();var _0x1aa1f3={'account':_0x31f820,'message':{'from':util[_0xccf1('0xe')](_0xccf1('0xf'),_0x2c381f[_0xccf1('0xc')][_0xccf1('0x10')],_0x2c381f[_0xccf1('0xc')]['email']||_0x2c381f['MailAccount'][_0xccf1('0x11')][_0xccf1('0x12')]),'to':_0x2c381f[_0xccf1('0xb')],'cc':_0x2c381f['cc'],'bcc':_0x2c381f[_0xccf1('0x13')],'subject':util[_0xccf1('0xe')]('Report\x20%s\x20last\x20%s\x20%s',_0x439e91['name'],_0x2c381f[_0xccf1('0x14')],_0x2c381f[_0xccf1('0x15')])}};var _0x1170e1=path[_0xccf1('0x16')](__dirname,_0xccf1('0x17'));var _0x513ea6=_0x439e91[_0xccf1('0x18')];var _0x537996=util['format'](_0xccf1('0x19'),path[_0xccf1('0x1a')](_0x439e91[_0xccf1('0x18')],path[_0xccf1('0x1b')](_0x439e91[_0xccf1('0x18')])),_0xccf1('0x1c'));var _0x262e47=path['join'](_0x1170e1,_0x513ea6);var _0x414f23=path['join'](_0x1170e1,_0x537996);if(fs[_0xccf1('0x1d')](_0x262e47)){_0x439e91['status']=_0xccf1('0x1e');_0x1aa1f3[_0xccf1('0x1f')]['attachments']=[{'filename':_0x513ea6,'path':_0x262e47}];_0x1aa1f3[_0xccf1('0x1f')][_0xccf1('0x20')]=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON['stringify'](_0x439e91,null,0x2));}else if(fs[_0xccf1('0x1d')](_0x414f23)){_0x439e91[_0xccf1('0x21')]='Sent';_0x1aa1f3['message'][_0xccf1('0x22')]=[{'filename':_0x537996,'path':_0x414f23}];}else{_0x1aa1f3[_0xccf1('0x1f')][_0xccf1('0x20')]=_0xccf1('0x23');if(!_0x2c381f[_0xccf1('0x24')]){_0x2ed2a0=![];logger[_0xccf1('0x9')](_0xccf1('0x25'));}}if(_0x2ed2a0){return client[_0xccf1('0x26')](_0xccf1('0x27'),_0x1aa1f3)['then'](function(_0x2702a2){if(_0x2702a2[_0xccf1('0x28')]){return logger[_0xccf1('0x28')](_0xccf1('0x29'),JSON[_0xccf1('0x2a')](_0x2702a2));}return logger[_0xccf1('0x9')](_0xccf1('0x2b'));})[_0xccf1('0x2c')](function(_0x34799e){return logger[_0xccf1('0x28')](_0xccf1('0x29'),JSON[_0xccf1('0x2a')](_0x34799e));});}};}function handleError(){return function(_0x300da5){return logger['error'](JSON[_0xccf1('0x2a')](_0x300da5));};}function handleResult(_0x183319){return function(_0x3fa621){logger[_0xccf1('0x9')]('data',JSON[_0xccf1('0x2a')](_0x3fa621));if(_0x183319[_0xccf1('0xc')]&&_0x183319[_0xccf1('0xc')][_0xccf1('0x11')]&&!_[_0xccf1('0x2d')](_0x183319[_0xccf1('0xb')])){setTimeout(handleSendEmail(_0x183319,_0x3fa621),0x3c*0x3e8);}};}function handleJob(_0xc5cb28){return function(){try{if(_[_0xccf1('0x2d')](_0xc5cb28[_0xccf1('0x14')])){return logger['info'](_0xccf1('0x2e'));}if(_[_0xccf1('0x2d')](_0xc5cb28[_0xccf1('0x15')])){return logger[_0xccf1('0x9')](_0xccf1('0x2f'));}var _0x5954bc={'startDate':moment()[_0xccf1('0x30')](_0xc5cb28[_0xccf1('0x14')],_0xc5cb28[_0xccf1('0x15')])[_0xccf1('0xe')](_0xccf1('0x31')),'endDate':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xccf1('0x32'),'output':_0xc5cb28[_0xccf1('0x33')],'name':_0xc5cb28[_0xccf1('0x10')]};if(!_[_0xccf1('0x2d')](_0xc5cb28['DefaultReportId'])){logger[_0xccf1('0x9')](_0xccf1('0x34'),_0xc5cb28[_0xccf1('0x35')]);return analyticDefaultReportController[_0xccf1('0x36')]({'id':_0xc5cb28[_0xccf1('0x35')]},_0x5954bc)[_0xccf1('0x37')](handleResult(_0xc5cb28))[_0xccf1('0x2c')](handleError());}if(!_['isNil'](_0xc5cb28[_0xccf1('0x38')])){logger[_0xccf1('0x9')](_0xccf1('0x39'),_0xc5cb28[_0xccf1('0x38')]);return analyticCustomReportController[_0xccf1('0x36')]({'id':_0xc5cb28[_0xccf1('0x38')]},_0x5954bc)[_0xccf1('0x37')](handleResult(_0xc5cb28))[_0xccf1('0x2c')](handleError());}}catch(_0x3ec19f){logger[_0xccf1('0x28')](JSON[_0xccf1('0x2a')](_0x3ec19f));}return logger[_0xccf1('0x9')]('no\x20report\x20id');};}function getJobs(_0xe3d3b7){var _0x295021={};if(_0xe3d3b7){_0x295021['id']=_0xe3d3b7;}return db['Schedule'][_0xccf1('0x3a')]({'where':_0x295021,'include':[{'model':db[_0xccf1('0xc')],'attributes':['id',_0xccf1('0x10'),_0xccf1('0xb')],'include':[{'model':db[_0xccf1('0x3b')],'as':_0xccf1('0x11'),'include':[{'model':db[_0xccf1('0x3c')],'as':_0xccf1('0x3c')}]}]}]})[_0xccf1('0x37')](function(_0x1f5ebf){var _0x570a04=_[_0xccf1('0x3d')](manager['jobs']);var _0x4d72de=_[_0xccf1('0x3e')](_0x1f5ebf,function(_0x21e339){return _0x21e339['id']['toString']();});var _0x26b0c2=_[_0xccf1('0x3f')](_0x1f5ebf,function(_0x520106){return _0x520106['id']['toString']();});var _0x28248d=_0xe3d3b7?_0x4d72de:_[_0xccf1('0x40')](_0x4d72de,_0x570a04);var _0x8c9185=_[_0xccf1('0x41')](_0x4d72de,_0x570a04);var _0x466ceb=_[_0xccf1('0x40')](_0x570a04,_0x4d72de);var _0x284be0;var _0x2c02f2;for(_0x284be0=0x0;_0x284be0<_0x466ceb['length']&&!_0xe3d3b7;_0x284be0+=0x1){_0x2c02f2=_0x466ceb[_0x284be0][_0xccf1('0x42')]();if(manager[_0xccf1('0x43')](_0x2c02f2)){manager[_0xccf1('0x44')](_0x2c02f2);manager[_0xccf1('0x45')](_0x2c02f2);logger['info'](_0xccf1('0x46'),_0x2c02f2);}}logger[_0xccf1('0x9')](_0xccf1('0x47'),JSON['stringify'](_0x28248d));for(_0x284be0=0x0;_0x284be0<_0x28248d['length'];_0x284be0+=0x1){_0x2c02f2=_0x28248d[_0x284be0][_0xccf1('0x42')]();logger[_0xccf1('0x9')]('index',_0x2c02f2);if(_0xe3d3b7){logger[_0xccf1('0x9')]('my\x20id',_0xe3d3b7);logger[_0xccf1('0x9')](JSON[_0xccf1('0x2a')](_0x26b0c2[_0x2c02f2]));BPromise[_0xccf1('0x48')]()[_0xccf1('0x37')](handleJob(_0x26b0c2[_0x2c02f2]));logger[_0xccf1('0x9')](_0xccf1('0x49'),_0x26b0c2[_0x2c02f2][_0xccf1('0x10')],_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')]);}else if(_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')]&&_0x26b0c2[_0x2c02f2][_0xccf1('0x4b')]&&moment()[_0xccf1('0x4c')](_0x26b0c2[_0x2c02f2][_0xccf1('0x4d')],_0x26b0c2[_0x2c02f2][_0xccf1('0x4e')])){manager['add'](_0x2c02f2,_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')],handleJob(_0x26b0c2[_0x2c02f2]));manager[_0xccf1('0x4f')](_0x2c02f2);logger[_0xccf1('0x9')](_0xccf1('0x50'),_0x26b0c2[_0x2c02f2][_0xccf1('0x10')],_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')]);}else if(manager[_0xccf1('0x43')](_0x2c02f2)){manager[_0xccf1('0x44')](_0x2c02f2);manager[_0xccf1('0x45')](_0x2c02f2);logger[_0xccf1('0x9')]('stop\x20cron',_0x26b0c2[_0x2c02f2][_0xccf1('0x10')],_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')]);}}for(_0x284be0=0x0,_0x2c02f2;_0x284be0<_0x8c9185[_0xccf1('0x51')]&&!_0xe3d3b7;_0x284be0+=0x1){_0x2c02f2=_0x8c9185[_0x284be0][_0xccf1('0x42')]();if(manager[_0xccf1('0x43')](_0x2c02f2)){if(_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')]&&_0x26b0c2[_0x2c02f2]['active']&&moment()['isBetween'](_0x26b0c2[_0x2c02f2][_0xccf1('0x4d')],_0x26b0c2[_0x2c02f2][_0xccf1('0x4e')])){manager['update'](_0x2c02f2,_0x26b0c2[_0x2c02f2]['cron'],handleJob(_0x26b0c2[_0x2c02f2]));logger[_0xccf1('0x9')](_0xccf1('0x52'),_0x26b0c2[_0x2c02f2][_0xccf1('0x10')],_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')]);}else{manager[_0xccf1('0x44')](_0x2c02f2);manager[_0xccf1('0x45')](_0x2c02f2);logger['info']('stop\x20cron',_0x26b0c2[_0x2c02f2][_0xccf1('0x10')],_0x26b0c2[_0x2c02f2][_0xccf1('0x4a')]);}}}})['catch'](function(_0x1f131f){logger[_0xccf1('0x28')](JSON[_0xccf1('0x2a')](_0x1f131f));});}exports['run']=function(_0x1e80c8){return getJobs(_0x1e80c8);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x12c9=['length','stop','deleteJob','delete\x20cron','toRun','run\x20job','cron','active','startAt','endAt','add','start','add\x20cron','exists','isBetween','update\x20cron','stop\x20cron','run','util','lodash','moment','cron-job-manager','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','email','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','existsSync','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','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','info','email\x20sent','catch','data','Smtp','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','Schedule','findAll','MailServerOut','CloudProvider','keys','map','keyBy','toString','difference','intersection'];(function(_0x4a78f5,_0x37a1d0){var _0x5c1cf1=function(_0x28d878){while(--_0x28d878){_0x4a78f5['push'](_0x4a78f5['shift']());}};_0x5c1cf1(++_0x37a1d0);}(_0x12c9,0x10e));var _0x912c=function(_0x14aa2d,_0x17e091){_0x14aa2d=_0x14aa2d-0x0;var _0x382624=_0x12c9[_0x14aa2d];return _0x382624;};'use strict';var fs=require('fs');var util=require(_0x912c('0x0'));var path=require('path');var _=require(_0x912c('0x1'));var moment=require(_0x912c('0x2'));var CronJobManager=require(_0x912c('0x3'));var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x912c('0x4'))(_0x912c('0x5'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x912c('0x6'));var analyticDefaultReportController=require(_0x912c('0x7'));var client=jayson['client'][_0x912c('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4600d8,_0x44662a){return function(){logger['info']('Try\x20to\x20send\x20a\x20mail\x20to',_0x4600d8[_0x912c('0x9')]);var _0x222030=!![];var _0x4eb1c5=_0x4600d8[_0x912c('0xa')][_0x912c('0xb')]();var _0x58edac={'account':_0x4eb1c5,'message':{'from':util['format'](_0x912c('0xc'),_0x4600d8[_0x912c('0xa')][_0x912c('0xd')],_0x4600d8[_0x912c('0xa')]['email']||_0x4600d8[_0x912c('0xa')]['Smtp']['user']),'to':_0x4600d8[_0x912c('0x9')],'cc':_0x4600d8['cc'],'bcc':_0x4600d8[_0x912c('0xe')],'subject':util[_0x912c('0xf')](_0x912c('0x10'),_0x44662a[_0x912c('0xd')],_0x4600d8['subtractNumber'],_0x4600d8[_0x912c('0x11')])}};var _0x5caf46=path[_0x912c('0x12')](__dirname,_0x912c('0x13'));var _0x2f89c7=_0x44662a[_0x912c('0x14')];var _0x7a3d34=util[_0x912c('0xf')](_0x912c('0x15'),path[_0x912c('0x16')](_0x44662a[_0x912c('0x14')],path[_0x912c('0x17')](_0x44662a[_0x912c('0x14')])),'zip');var _0x2ec379=path[_0x912c('0x12')](_0x5caf46,_0x2f89c7);var _0x2c8ab5=path['join'](_0x5caf46,_0x7a3d34);if(fs[_0x912c('0x18')](_0x2ec379)){_0x44662a[_0x912c('0x19')]='Sent';_0x58edac[_0x912c('0x1a')][_0x912c('0x1b')]=[{'filename':_0x2f89c7,'path':_0x2ec379}];_0x58edac[_0x912c('0x1a')][_0x912c('0x1c')]=util[_0x912c('0xf')](_0x912c('0x1d'),JSON[_0x912c('0x1e')](_0x44662a,null,0x2));}else if(fs[_0x912c('0x18')](_0x2c8ab5)){_0x44662a[_0x912c('0x19')]='Sent';_0x58edac['message'][_0x912c('0x1b')]=[{'filename':_0x7a3d34,'path':_0x2c8ab5}];}else{_0x58edac['message'][_0x912c('0x1c')]=_0x912c('0x1f');if(!_0x4600d8[_0x912c('0x20')]){_0x222030=![];logger['info'](_0x912c('0x21'));}}if(_0x222030){return client[_0x912c('0x22')](_0x912c('0x23'),_0x58edac)[_0x912c('0x24')](function(_0x5a916e){if(_0x5a916e[_0x912c('0x25')]){return logger[_0x912c('0x25')](_0x912c('0x26'),JSON[_0x912c('0x1e')](_0x5a916e));}return logger[_0x912c('0x27')](_0x912c('0x28'));})[_0x912c('0x29')](function(_0x134012){return logger[_0x912c('0x25')](_0x912c('0x26'),JSON[_0x912c('0x1e')](_0x134012));});}};}function handleError(){return function(_0x4b3334){return logger[_0x912c('0x25')](JSON[_0x912c('0x1e')](_0x4b3334));};}function handleResult(_0xebbd58){return function(_0x1d5e8a){logger[_0x912c('0x27')](_0x912c('0x2a'),JSON[_0x912c('0x1e')](_0x1d5e8a));if(_0xebbd58[_0x912c('0xa')]&&_0xebbd58['MailAccount'][_0x912c('0x2b')]&&!_[_0x912c('0x2c')](_0xebbd58[_0x912c('0x9')])){setTimeout(handleSendEmail(_0xebbd58,_0x1d5e8a),0x3c*0x3e8);}};}function handleJob(_0xbd1f95){return function(){try{if(_['isNil'](_0xbd1f95[_0x912c('0x2d')])){return logger[_0x912c('0x27')](_0x912c('0x2e'));}if(_['isNil'](_0xbd1f95[_0x912c('0x11')])){return logger[_0x912c('0x27')](_0x912c('0x2f'));}var _0x54df3b={'startDate':moment()[_0x912c('0x30')](_0xbd1f95[_0x912c('0x2d')],_0xbd1f95[_0x912c('0x11')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()['format'](_0x912c('0x31')),'type':_0x912c('0x32'),'output':_0xbd1f95[_0x912c('0x33')],'name':_0xbd1f95['name']};if(!_[_0x912c('0x2c')](_0xbd1f95[_0x912c('0x34')])){logger[_0x912c('0x27')](_0x912c('0x35'),_0xbd1f95['DefaultReportId']);return analyticDefaultReportController[_0x912c('0x36')]({'id':_0xbd1f95[_0x912c('0x34')]},_0x54df3b)['then'](handleResult(_0xbd1f95))[_0x912c('0x29')](handleError());}if(!_[_0x912c('0x2c')](_0xbd1f95[_0x912c('0x37')])){logger[_0x912c('0x27')]('exec\x20custom\x20report\x20id:%s',_0xbd1f95[_0x912c('0x37')]);return analyticCustomReportController['runReport']({'id':_0xbd1f95[_0x912c('0x37')]},_0x54df3b)[_0x912c('0x24')](handleResult(_0xbd1f95))[_0x912c('0x29')](handleError());}}catch(_0xbca6b4){logger[_0x912c('0x25')](JSON[_0x912c('0x1e')](_0xbca6b4));}return logger[_0x912c('0x27')]('no\x20report\x20id');};}function getJobs(_0x47fbb0){var _0x1b77d9={};if(_0x47fbb0){_0x1b77d9['id']=_0x47fbb0;}return db[_0x912c('0x38')][_0x912c('0x39')]({'where':_0x1b77d9,'include':[{'model':db[_0x912c('0xa')],'attributes':['id','name',_0x912c('0x9')],'include':[{'model':db[_0x912c('0x3a')],'as':'Smtp','include':[{'model':db[_0x912c('0x3b')],'as':'CloudProvider'}]}]}]})[_0x912c('0x24')](function(_0x411428){var _0xa6e2ac=_[_0x912c('0x3c')](manager['jobs']);var _0x155282=_[_0x912c('0x3d')](_0x411428,function(_0xdcca74){return _0xdcca74['id']['toString']();});var _0x248578=_[_0x912c('0x3e')](_0x411428,function(_0x6550e9){return _0x6550e9['id'][_0x912c('0x3f')]();});var _0x1c28dc=_0x47fbb0?_0x155282:_[_0x912c('0x40')](_0x155282,_0xa6e2ac);var _0xed709e=_[_0x912c('0x41')](_0x155282,_0xa6e2ac);var _0x5d9a68=_[_0x912c('0x40')](_0xa6e2ac,_0x155282);var _0x3b4d17;var _0x5c9576;for(_0x3b4d17=0x0;_0x3b4d17<_0x5d9a68[_0x912c('0x42')]&&!_0x47fbb0;_0x3b4d17+=0x1){_0x5c9576=_0x5d9a68[_0x3b4d17][_0x912c('0x3f')]();if(manager['exists'](_0x5c9576)){manager[_0x912c('0x43')](_0x5c9576);manager[_0x912c('0x44')](_0x5c9576);logger['info'](_0x912c('0x45'),_0x5c9576);}}logger[_0x912c('0x27')](_0x912c('0x46'),JSON[_0x912c('0x1e')](_0x1c28dc));for(_0x3b4d17=0x0;_0x3b4d17<_0x1c28dc[_0x912c('0x42')];_0x3b4d17+=0x1){_0x5c9576=_0x1c28dc[_0x3b4d17][_0x912c('0x3f')]();logger[_0x912c('0x27')]('index',_0x5c9576);if(_0x47fbb0){logger[_0x912c('0x27')]('my\x20id',_0x47fbb0);logger[_0x912c('0x27')](JSON['stringify'](_0x248578[_0x5c9576]));BPromise['resolve']()[_0x912c('0x24')](handleJob(_0x248578[_0x5c9576]));logger[_0x912c('0x27')](_0x912c('0x47'),_0x248578[_0x5c9576][_0x912c('0xd')],_0x248578[_0x5c9576][_0x912c('0x48')]);}else if(_0x248578[_0x5c9576][_0x912c('0x48')]&&_0x248578[_0x5c9576][_0x912c('0x49')]&&moment()['isBetween'](_0x248578[_0x5c9576][_0x912c('0x4a')],_0x248578[_0x5c9576][_0x912c('0x4b')])){manager[_0x912c('0x4c')](_0x5c9576,_0x248578[_0x5c9576]['cron'],handleJob(_0x248578[_0x5c9576]));manager[_0x912c('0x4d')](_0x5c9576);logger[_0x912c('0x27')](_0x912c('0x4e'),_0x248578[_0x5c9576]['name'],_0x248578[_0x5c9576]['cron']);}else if(manager[_0x912c('0x4f')](_0x5c9576)){manager[_0x912c('0x43')](_0x5c9576);manager[_0x912c('0x44')](_0x5c9576);logger[_0x912c('0x27')]('stop\x20cron',_0x248578[_0x5c9576][_0x912c('0xd')],_0x248578[_0x5c9576][_0x912c('0x48')]);}}for(_0x3b4d17=0x0,_0x5c9576;_0x3b4d17<_0xed709e[_0x912c('0x42')]&&!_0x47fbb0;_0x3b4d17+=0x1){_0x5c9576=_0xed709e[_0x3b4d17][_0x912c('0x3f')]();if(manager[_0x912c('0x4f')](_0x5c9576)){if(_0x248578[_0x5c9576]['cron']&&_0x248578[_0x5c9576]['active']&&moment()[_0x912c('0x50')](_0x248578[_0x5c9576]['startAt'],_0x248578[_0x5c9576]['endAt'])){manager['update'](_0x5c9576,_0x248578[_0x5c9576]['cron'],handleJob(_0x248578[_0x5c9576]));logger[_0x912c('0x27')](_0x912c('0x51'),_0x248578[_0x5c9576][_0x912c('0xd')],_0x248578[_0x5c9576]['cron']);}else{manager['stop'](_0x5c9576);manager[_0x912c('0x44')](_0x5c9576);logger[_0x912c('0x27')](_0x912c('0x52'),_0x248578[_0x5c9576]['name'],_0x248578[_0x5c9576][_0x912c('0x48')]);}}}})[_0x912c('0x29')](function(_0x12f114){logger[_0x912c('0x25')](JSON[_0x912c('0x1e')](_0x12f114));});}exports[_0x912c('0x53')]=function(_0x1e5105){return getJobs(_0x1e5105);};exports[_0x912c('0x4d')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 04886a5..f68a8e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa988=['error','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','push','catch','lodash','aws-sdk','request-promise','util','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','transcribeName','data2','transcribeRegion','then','info','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','sentimentAccountId','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','name','SequelizeValidationError'];(function(_0x1d6010,_0xed56a5){var _0x28ce09=function(_0x165a8d){while(--_0x165a8d){_0x1d6010['push'](_0x1d6010['shift']());}};_0x28ce09(++_0xed56a5);}(_0xa988,0x1a7));var _0x8a98=function(_0x3eee2d,_0x526c93){_0x3eee2d=_0x3eee2d-0x0;var _0xf16ab2=_0xa988[_0x3eee2d];return _0xf16ab2;};var _=require(_0x8a98('0x0'));var AWS=require(_0x8a98('0x1'));var rp=require(_0x8a98('0x2'));var util=require(_0x8a98('0x3'));var BPromise=require(_0x8a98('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0x8a98('0x5'))(_0x8a98('0x6'));function getTranscriptionJob(_0x1380fa,_0x12efcf,_0x3b1af2,_0x28a583){return new Promise(function(_0x3eb5cf,_0x3fcd06){var _0x4ef481=new AWS[(_0x8a98('0x7'))]({'accessKeyId':_0x12efcf,'secretAccessKey':_0x1380fa,'region':_0x3b1af2});_0x4ef481[_0x8a98('0x8')]({'TranscriptionJobName':_0x28a583},function(_0x5f3abf,_0xfa3168){if(_0x5f3abf){return _0x3fcd06(_0x5f3abf);}else{return _0x3eb5cf(_0xfa3168);}});});}function sentiment(_0x188aea,_0x4e1bb9,_0x5552b2,_0x1aab5c,_0x26c340){return new Promise(function(_0x51f11f,_0x3cac53){var _0xf73acb=new AWS[(_0x8a98('0x9'))]({'accessKeyId':_0x4e1bb9,'secretAccessKey':_0x188aea,'region':_0x5552b2});_0xf73acb['detectSentiment']({'Text':_0x1aab5c,'LanguageCode':_0x26c340[_0x8a98('0xa')](0x0,0x2)},function(_0x282591,_0x100159){if(_0x282591){return _0x3cac53(_0x282591);}else{return _0x51f11f(_0x100159);}});});}function checkTranscribeJob(_0x50fd87,_0x20cc12,_0x51b8f5){var _0x55dcde;return new BPromise(function(_0x56e619,_0x12da45){logger['info'](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x50fd87['id'],_0x50fd87[_0x8a98('0xb')]));return getTranscriptionJob(_0x51b8f5['data1'],_0x51b8f5[_0x8a98('0xc')],_0x20cc12[_0x8a98('0xd')],_0x50fd87[_0x8a98('0xb')])[_0x8a98('0xe')](function(_0xf02e1){logger[_0x8a98('0xf')](util[_0x8a98('0x10')](_0x8a98('0x11'),_0x50fd87['id'],_0x50fd87['transcribeName'],_0xf02e1['TranscriptionJob'][_0x8a98('0x12')]));if(!_0x50fd87[_0x8a98('0x13')]){switch(_0xf02e1['TranscriptionJob'][_0x8a98('0x12')]){case'COMPLETED':var _0x184488={'transcribeStatus':_0xf02e1[_0x8a98('0x14')][_0x8a98('0x12')],'fileUri':_0xf02e1[_0x8a98('0x14')][_0x8a98('0x15')]['TranscriptFileUri']};logger['info'](util[_0x8a98('0x10')](_0x8a98('0x16'),_0x50fd87['id']));return rp({'uri':_0xf02e1[_0x8a98('0x14')][_0x8a98('0x15')][_0x8a98('0x17')],'json':!![]})[_0x8a98('0xe')](function(_0x3b9b88){logger[_0x8a98('0xf')](util[_0x8a98('0x10')](_0x8a98('0x18'),_0x50fd87['id']));if(_0x3b9b88&&_0x3b9b88['results']&&_0x3b9b88[_0x8a98('0x19')][_0x8a98('0x1a')]&&_0x3b9b88[_0x8a98('0x19')][_0x8a98('0x1a')][_0x8a98('0x1b')]){_0x184488['fileText']='';for(var _0x1deb61=0x0;_0x1deb61<_0x3b9b88['results']['transcripts'][_0x8a98('0x1b')];_0x1deb61++){_0x184488[_0x8a98('0x13')]+=_0x3b9b88[_0x8a98('0x19')][_0x8a98('0x1a')][_0x1deb61][_0x8a98('0x1c')]+'';}}return _0x50fd87[_0x8a98('0x1d')](_0x184488);})['then'](function(){logger[_0x8a98('0xf')](util[_0x8a98('0x10')](_0x8a98('0x1e'),_0x50fd87['id']));if(!_0x50fd87['tempSentiment']){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))](_0x8a98('0x21'));}if(!_0x20cc12[_0x8a98('0x22')]||!_0x20cc12['sentimentAccountId']||!_0x20cc12[_0x8a98('0x23')]||!_0x20cc12['language']||!_0x20cc12[_0x8a98('0x24')]){throw new db[(_0x8a98('0x1f'))]['ValidationError'](_0x8a98('0x25'));}if(!_0x184488[_0x8a98('0x13')]){throw new Error(_0x8a98('0x26'));}if(_0x20cc12['sentimentAccountId']===_0x51b8f5['id']){return _0x51b8f5;}else{return db[_0x8a98('0x27')][_0x8a98('0x28')]({'where':{'id':_settings[_0x8a98('0x29')]}});}})[_0x8a98('0xe')](function(_0x3f6975){if(!_0x3f6975){throw new db['Sequelize']['ValidationError'](_0x8a98('0x2a'));}if(!_0x3f6975[_0x8a98('0x2b')]||!_0x3f6975[_0x8a98('0xc')]){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))](_0x8a98('0x2c'));}_0x55dcde=_0x3f6975;logger[_0x8a98('0xf')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x50fd87['id']));return sentiment(_0x55dcde[_0x8a98('0x2b')],_0x55dcde[_0x8a98('0xc')],_0x20cc12[_0x8a98('0x23')],_0x184488[_0x8a98('0x13')],_0x20cc12[_0x8a98('0x2d')]);})[_0x8a98('0xe')](function(_0x501287){logger[_0x8a98('0xf')](util['format'](_0x8a98('0x2e'),_0x50fd87['id']));return _0x50fd87['update']({'sentiment':_0x501287[_0x8a98('0x2f')],'sPositive':_0x501287[_0x8a98('0x30')][_0x8a98('0x31')],'sNegative':_0x501287[_0x8a98('0x30')][_0x8a98('0x32')],'sMixed':_0x501287[_0x8a98('0x30')][_0x8a98('0x33')],'sNeutral':_0x501287['SentimentScore'][_0x8a98('0x34')]});})[_0x8a98('0xe')](function(){logger['info'](util[_0x8a98('0x10')](_0x8a98('0x1e'),_0x50fd87['id']));_0x56e619();});case _0x8a98('0x35'):return _0x50fd87[_0x8a98('0x1d')]({'transcribeStatus':_0x8a98('0x35'),'failureReason':_0xf02e1['TranscriptionJob'][_0x8a98('0x36')]})[_0x8a98('0xe')](function(){logger[_0x8a98('0xf')](util[_0x8a98('0x10')](_0x8a98('0x1e'),_0x50fd87['id']));_0x56e619();});default:logger[_0x8a98('0xf')](util['format'](_0x8a98('0x37'),_0x50fd87['id']));break;}}else{return BPromise[_0x8a98('0x38')]()[_0x8a98('0xe')](function(){if(!_0x50fd87[_0x8a98('0x39')]){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))](_0x8a98('0x21'));}if(!_0x20cc12[_0x8a98('0x22')]||!_0x20cc12['sentimentAccountId']||!_0x20cc12[_0x8a98('0x23')]||!_0x20cc12['language']||!_0x20cc12[_0x8a98('0x24')]){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))](_0x8a98('0x25'));}if(!_0x50fd87['fileText']){throw new Error(_0x8a98('0x26'));}if(_0x20cc12[_0x8a98('0x29')]===_0x51b8f5['id']){return _0x51b8f5;}else{return db[_0x8a98('0x27')][_0x8a98('0x28')]({'where':{'id':_settings[_0x8a98('0x29')]}});}})[_0x8a98('0xe')](function(_0x4c399e){if(!_0x4c399e){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x4c399e[_0x8a98('0x2b')]||!_0x4c399e[_0x8a98('0xc')]){throw new db[(_0x8a98('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x55dcde=_0x4c399e;logger[_0x8a98('0xf')](util[_0x8a98('0x10')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x50fd87['id']));return sentiment(_0x55dcde[_0x8a98('0x2b')],_0x55dcde['data2'],_0x20cc12[_0x8a98('0x23')],_0x50fd87[_0x8a98('0x13')],_0x20cc12[_0x8a98('0x2d')]);})[_0x8a98('0xe')](function(_0x1df134){logger[_0x8a98('0xf')](util[_0x8a98('0x10')](_0x8a98('0x2e'),_0x50fd87['id']));return _0x50fd87[_0x8a98('0x1d')]({'sentiment':_0x1df134['Sentiment'],'sPositive':_0x1df134[_0x8a98('0x30')][_0x8a98('0x31')],'sNegative':_0x1df134[_0x8a98('0x30')][_0x8a98('0x32')],'sMixed':_0x1df134[_0x8a98('0x30')][_0x8a98('0x33')],'sNeutral':_0x1df134['SentimentScore'][_0x8a98('0x34')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger['info'](util[_0x8a98('0x10')](_0x8a98('0x1e'),_0x50fd87['id']));_0x56e619();});}})['catch'](function(_0x480a0d){if(_0x480a0d){if(!_0x480a0d[_0x8a98('0x3a')]||_0x480a0d[_0x8a98('0x3a')]!==_0x8a98('0x3b')){logger[_0x8a98('0x3c')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x50fd87['id']),util[_0x8a98('0x3d')](_0x480a0d,{'showHidden':![],'depth':null}));}}_0x56e619();});});}function checkTranscribe(){var _0x222288;var _0x4fd177;var _0x2ec84c;return db[_0x8a98('0x3e')]['findAll']({'where':{'transcribeStatus':_0x8a98('0x3f')}})[_0x8a98('0xe')](function(_0x5274be){if(!_0x5274be||!_0x5274be['length']){throw new db[(_0x8a98('0x1f'))]['ValidationError'](_0x8a98('0x40'));}_0x222288=_0x5274be;return db['Setting'][_0x8a98('0x28')]({'where':{'id':0x1}});})[_0x8a98('0xe')](function(_0x117371){if(!_0x117371){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))](_0x8a98('0x41'));}_0x4fd177=_0x117371;if(!_0x4fd177[_0x8a98('0x6')]||!_0x4fd177[_0x8a98('0x42')]||!_0x4fd177[_0x8a98('0xd')]||!_0x4fd177[_0x8a98('0x2d')]||!_0x4fd177[_0x8a98('0x24')]){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))]('Transcribe\x20not\x20configured');}return db[_0x8a98('0x27')][_0x8a98('0x28')]({'where':{'id':_0x4fd177['transcribeAccountId']}});})[_0x8a98('0xe')](function(_0x4ee74a){if(!_0x4ee74a){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))](_0x8a98('0x2a'));}if(!_0x4ee74a[_0x8a98('0x2b')]||!_0x4ee74a[_0x8a98('0xc')]){throw new db[(_0x8a98('0x1f'))][(_0x8a98('0x20'))](_0x8a98('0x2c'));}_0x2ec84c=_0x4ee74a;var _0x60230d=[];_0x222288['forEach'](function(_0x3abd63){_0x60230d[_0x8a98('0x43')](checkTranscribeJob(_0x3abd63,_0x4fd177,_0x2ec84c));});return BPromise['all'](_0x60230d);})[_0x8a98('0x44')](function(_0x5725e3){if(_0x5725e3){if(!_0x5725e3[_0x8a98('0x3a')]||_0x5725e3[_0x8a98('0x3a')]!==_0x8a98('0x3b')){logger[_0x8a98('0x3c')](util[_0x8a98('0x3d')](_0x5725e3,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x0bb4=['length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','Sentiment','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribe','Transcribe\x20not\x20configured','transcribeAccountId','push','all','SequelizeValidationError','error','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts'];(function(_0x57e2fd,_0x54e75b){var _0x54022e=function(_0x19b41b){while(--_0x19b41b){_0x57e2fd['push'](_0x57e2fd['shift']());}};_0x54022e(++_0x54e75b);}(_0x0bb4,0x77));var _0x40bb=function(_0x13a147,_0x461113){_0x13a147=_0x13a147-0x0;var _0x8853d0=_0x0bb4[_0x13a147];return _0x8853d0;};var _=require(_0x40bb('0x0'));var AWS=require(_0x40bb('0x1'));var rp=require('request-promise');var util=require(_0x40bb('0x2'));var BPromise=require(_0x40bb('0x3'));var db=require(_0x40bb('0x4'))['db'];var logger=require(_0x40bb('0x5'))('transcribe');function getTranscriptionJob(_0x10646e,_0x54fef0,_0x266cf4,_0x57a115){return new Promise(function(_0xa8c628,_0xe75667){var _0x4d15f6=new AWS[(_0x40bb('0x6'))]({'accessKeyId':_0x54fef0,'secretAccessKey':_0x10646e,'region':_0x266cf4});_0x4d15f6[_0x40bb('0x7')]({'TranscriptionJobName':_0x57a115},function(_0x50d70f,_0x1dc35d){if(_0x50d70f){return _0xe75667(_0x50d70f);}else{return _0xa8c628(_0x1dc35d);}});});}function sentiment(_0x5d98d0,_0x3e8ef4,_0x3bc5c5,_0x1ee54b,_0x35095d){return new Promise(function(_0x44c1b5,_0x3ee596){var _0x3a86c3=new AWS[(_0x40bb('0x8'))]({'accessKeyId':_0x3e8ef4,'secretAccessKey':_0x5d98d0,'region':_0x3bc5c5});_0x3a86c3[_0x40bb('0x9')]({'Text':_0x1ee54b,'LanguageCode':_0x35095d[_0x40bb('0xa')](0x0,0x2)},function(_0x23bac7,_0x774cef){if(_0x23bac7){return _0x3ee596(_0x23bac7);}else{return _0x44c1b5(_0x774cef);}});});}function checkTranscribeJob(_0x1505a9,_0x344b09,_0x436966){var _0x2a3ae5;return new BPromise(function(_0x713bae,_0x4c98ae){logger['info'](util[_0x40bb('0xb')](_0x40bb('0xc'),_0x1505a9['id'],_0x1505a9[_0x40bb('0xd')]));return getTranscriptionJob(_0x436966[_0x40bb('0xe')],_0x436966[_0x40bb('0xf')],_0x344b09[_0x40bb('0x10')],_0x1505a9[_0x40bb('0xd')])[_0x40bb('0x11')](function(_0x4a177c){logger[_0x40bb('0x12')](util[_0x40bb('0xb')](_0x40bb('0x13'),_0x1505a9['id'],_0x1505a9[_0x40bb('0xd')],_0x4a177c[_0x40bb('0x14')]['TranscriptionJobStatus']));if(!_0x1505a9[_0x40bb('0x15')]){switch(_0x4a177c[_0x40bb('0x14')][_0x40bb('0x16')]){case _0x40bb('0x17'):var _0x77e2d2={'transcribeStatus':_0x4a177c[_0x40bb('0x14')][_0x40bb('0x16')],'fileUri':_0x4a177c['TranscriptionJob'][_0x40bb('0x18')][_0x40bb('0x19')]};logger[_0x40bb('0x12')](util[_0x40bb('0xb')](_0x40bb('0x1a'),_0x1505a9['id']));return rp({'uri':_0x4a177c[_0x40bb('0x14')][_0x40bb('0x18')][_0x40bb('0x19')],'json':!![]})[_0x40bb('0x11')](function(_0x1f0ac7){logger[_0x40bb('0x12')](util[_0x40bb('0xb')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x1505a9['id']));if(_0x1f0ac7&&_0x1f0ac7[_0x40bb('0x1b')]&&_0x1f0ac7[_0x40bb('0x1b')][_0x40bb('0x1c')]&&_0x1f0ac7[_0x40bb('0x1b')][_0x40bb('0x1c')][_0x40bb('0x1d')]){_0x77e2d2[_0x40bb('0x15')]='';for(var _0x2a0278=0x0;_0x2a0278<_0x1f0ac7[_0x40bb('0x1b')][_0x40bb('0x1c')][_0x40bb('0x1d')];_0x2a0278++){_0x77e2d2['fileText']+=_0x1f0ac7['results'][_0x40bb('0x1c')][_0x2a0278][_0x40bb('0x1e')]+'';}}return _0x1505a9[_0x40bb('0x1f')](_0x77e2d2);})['then'](function(){logger[_0x40bb('0x12')](util[_0x40bb('0xb')](_0x40bb('0x20'),_0x1505a9['id']));if(!_0x1505a9[_0x40bb('0x21')]){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))](_0x40bb('0x24'));}if(!_0x344b09[_0x40bb('0x25')]||!_0x344b09[_0x40bb('0x26')]||!_0x344b09['sentimentRegion']||!_0x344b09[_0x40bb('0x27')]||!_0x344b09[_0x40bb('0x28')]){throw new db['Sequelize'][(_0x40bb('0x23'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x77e2d2[_0x40bb('0x15')]){throw new Error('Transcript\x20not\x20available');}if(_0x344b09['sentimentAccountId']===_0x436966['id']){return _0x436966;}else{return db[_0x40bb('0x29')][_0x40bb('0x2a')]({'where':{'id':_settings[_0x40bb('0x26')]}});}})['then'](function(_0x1ce1fe){if(!_0x1ce1fe){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1ce1fe[_0x40bb('0xe')]||!_0x1ce1fe[_0x40bb('0xf')]){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))](_0x40bb('0x2b'));}_0x2a3ae5=_0x1ce1fe;logger[_0x40bb('0x12')](util[_0x40bb('0xb')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1505a9['id']));return sentiment(_0x2a3ae5['data1'],_0x2a3ae5[_0x40bb('0xf')],_0x344b09['sentimentRegion'],_0x77e2d2[_0x40bb('0x15')],_0x344b09[_0x40bb('0x27')]);})[_0x40bb('0x11')](function(_0x52f5f1){logger[_0x40bb('0x12')](util['format'](_0x40bb('0x2c'),_0x1505a9['id']));return _0x1505a9[_0x40bb('0x1f')]({'sentiment':_0x52f5f1['Sentiment'],'sPositive':_0x52f5f1[_0x40bb('0x2d')][_0x40bb('0x2e')],'sNegative':_0x52f5f1['SentimentScore'][_0x40bb('0x2f')],'sMixed':_0x52f5f1[_0x40bb('0x2d')][_0x40bb('0x30')],'sNeutral':_0x52f5f1['SentimentScore'][_0x40bb('0x31')]});})[_0x40bb('0x11')](function(){logger['info'](util['format'](_0x40bb('0x20'),_0x1505a9['id']));_0x713bae();});case'FAILED':return _0x1505a9[_0x40bb('0x1f')]({'transcribeStatus':_0x40bb('0x32'),'failureReason':_0x4a177c[_0x40bb('0x14')][_0x40bb('0x33')]})['then'](function(){logger['info'](util['format'](_0x40bb('0x20'),_0x1505a9['id']));_0x713bae();});default:logger[_0x40bb('0x12')](util['format'](_0x40bb('0x34'),_0x1505a9['id']));break;}}else{return BPromise[_0x40bb('0x35')]()[_0x40bb('0x11')](function(){if(!_0x1505a9[_0x40bb('0x21')]){throw new db['Sequelize'][(_0x40bb('0x23'))](_0x40bb('0x24'));}if(!_0x344b09[_0x40bb('0x25')]||!_0x344b09[_0x40bb('0x26')]||!_0x344b09[_0x40bb('0x36')]||!_0x344b09['language']||!_0x344b09['bucket']){throw new db['Sequelize'][(_0x40bb('0x23'))](_0x40bb('0x37'));}if(!_0x1505a9['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x344b09[_0x40bb('0x26')]===_0x436966['id']){return _0x436966;}else{return db[_0x40bb('0x29')][_0x40bb('0x2a')]({'where':{'id':_settings[_0x40bb('0x26')]}});}})[_0x40bb('0x11')](function(_0x194728){if(!_0x194728){throw new db['Sequelize'][(_0x40bb('0x23'))](_0x40bb('0x38'));}if(!_0x194728['data1']||!_0x194728['data2']){throw new db['Sequelize']['ValidationError'](_0x40bb('0x2b'));}_0x2a3ae5=_0x194728;logger[_0x40bb('0x12')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1505a9['id']));return sentiment(_0x2a3ae5[_0x40bb('0xe')],_0x2a3ae5[_0x40bb('0xf')],_0x344b09[_0x40bb('0x36')],_0x1505a9['fileText'],_0x344b09['language']);})[_0x40bb('0x11')](function(_0x21fdbe){logger[_0x40bb('0x12')](util['format'](_0x40bb('0x2c'),_0x1505a9['id']));return _0x1505a9[_0x40bb('0x1f')]({'sentiment':_0x21fdbe[_0x40bb('0x39')],'sPositive':_0x21fdbe[_0x40bb('0x2d')]['Positive'],'sNegative':_0x21fdbe[_0x40bb('0x2d')][_0x40bb('0x2f')],'sMixed':_0x21fdbe[_0x40bb('0x2d')][_0x40bb('0x30')],'sNeutral':_0x21fdbe['SentimentScore'][_0x40bb('0x31')],'transcribeStatus':_0x40bb('0x17')});})[_0x40bb('0x11')](function(){logger['info'](util[_0x40bb('0xb')](_0x40bb('0x20'),_0x1505a9['id']));_0x713bae();});}})[_0x40bb('0x3a')](function(_0x138a72){if(_0x138a72){if(!_0x138a72[_0x40bb('0x3b')]||_0x138a72[_0x40bb('0x3b')]!=='SequelizeValidationError'){logger['error'](util[_0x40bb('0xb')](_0x40bb('0x3c'),_0x1505a9['id']),util[_0x40bb('0x3d')](_0x138a72,{'showHidden':![],'depth':null}));}}_0x713bae();});});}function checkTranscribe(){var _0x577c05;var _0x21c211;var _0x3302ea;return db[_0x40bb('0x3e')][_0x40bb('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x5ae6f7){if(!_0x5ae6f7||!_0x5ae6f7['length']){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))](_0x40bb('0x40'));}_0x577c05=_0x5ae6f7;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0x40bb('0x11')](function(_0x757421){if(!_0x757421){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))](_0x40bb('0x41'));}_0x21c211=_0x757421;if(!_0x21c211[_0x40bb('0x42')]||!_0x21c211['transcribeAccountId']||!_0x21c211[_0x40bb('0x10')]||!_0x21c211[_0x40bb('0x27')]||!_0x21c211['bucket']){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))](_0x40bb('0x43'));}return db[_0x40bb('0x29')][_0x40bb('0x2a')]({'where':{'id':_0x21c211[_0x40bb('0x44')]}});})['then'](function(_0x42e8f7){if(!_0x42e8f7){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))](_0x40bb('0x38'));}if(!_0x42e8f7['data1']||!_0x42e8f7[_0x40bb('0xf')]){throw new db[(_0x40bb('0x22'))][(_0x40bb('0x23'))](_0x40bb('0x2b'));}_0x3302ea=_0x42e8f7;var _0x5eca2d=[];_0x577c05['forEach'](function(_0x3c6821){_0x5eca2d[_0x40bb('0x45')](checkTranscribeJob(_0x3c6821,_0x21c211,_0x3302ea));});return BPromise[_0x40bb('0x46')](_0x5eca2d);})[_0x40bb('0x3a')](function(_0x307bf0){if(_0x307bf0){if(!_0x307bf0[_0x40bb('0x3b')]||_0x307bf0['name']!==_0x40bb('0x47')){logger[_0x40bb('0x48')](util[_0x40bb('0x3d')](_0x307bf0,{'showHidden':![],'depth':null}));}}});}exports[_0x40bb('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 2cc0777..ba014cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf646=['info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','WhatsappInteraction','system','format','YYYY-MM-DD\x20HH:mm:ss','then','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','schedule','redis','defaults','socket.io-emitter','lastMsgAt','subtract','hours','map'];(function(_0xd1c052,_0x34d5d7){var _0x56f0dc=function(_0x5b7357){while(--_0x5b7357){_0xd1c052['push'](_0xd1c052['shift']());}};_0x56f0dc(++_0x34d5d7);}(_0xf646,0x1af));var _0x6f64=function(_0x1305f6,_0x157352){_0x1305f6=_0x1305f6-0x0;var _0xfb75c=_0xf646[_0x1305f6];return _0xfb75c;};'use strict';var _=require(_0x6f64('0x0'));var moment=require(_0x6f64('0x1'));var Redis=require(_0x6f64('0x2'));var util=require('util');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0x6f64('0x3'));config[_0x6f64('0x4')]=_[_0x6f64('0x5')](config[_0x6f64('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x6f64('0x6'))(new Redis(config[_0x6f64('0x4')]));function closeInteractions(){var _0x3f8008=[];return db['WhatsappInteraction']['findAll']({'raw':!![],'attributes':['id',_0x6f64('0x7')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x6f64('0x8')](0x18,_0x6f64('0x9'))}}})['then'](function(_0x274156){if(_0x274156&&_0x274156['length']){_0x3f8008=_[_0x6f64('0xa')](_0x274156||[],'id');logger[_0x6f64('0xb')](_0x6f64('0xc'),_0x3f8008[_0x6f64('0xd')]());return db[_0x6f64('0xe')]['update']({'closeReason':_0x6f64('0xf'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x6f64('0x10')](_0x6f64('0x11'))},{'where':{'id':_0x3f8008}});}})[_0x6f64('0x12')](function(){if(_0x3f8008&&_0x3f8008[_0x6f64('0x13')]){logger[_0x6f64('0xb')](_0x6f64('0x14'),_0x3f8008['join']());for(var _0x2749ab=0x0;_0x2749ab<_0x3f8008['length'];_0x2749ab++){io['emit']('whatsappInteraction:update',{'id':_0x3f8008[_0x2749ab],'closed':!![]});}}})[_0x6f64('0x15')](function(_0x1db1a7){logger[_0x6f64('0x16')](_0x6f64('0x17'),_0x1db1a7?util[_0x6f64('0x18')](_0x1db1a7,{'showHidden':![],'depth':null}):'');});}exports[_0x6f64('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x49c1=['whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','lodash','moment','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','findAll','lastMsgAt','subtract','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','emit'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x49c1,0x154));var _0x149c=function(_0x4b9422,_0x4aac94){_0x4b9422=_0x4b9422-0x0;var _0x12a277=_0x49c1[_0x4b9422];return _0x12a277;};'use strict';var _=require(_0x149c('0x0'));var moment=require(_0x149c('0x1'));var Redis=require('ioredis');var util=require(_0x149c('0x2'));var config=require(_0x149c('0x3'));var db=require(_0x149c('0x4'))['db'];var logger=require(_0x149c('0x5'))(_0x149c('0x6'));config[_0x149c('0x7')]=_[_0x149c('0x8')](config[_0x149c('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x2561c4=[];return db['WhatsappInteraction'][_0x149c('0x9')]({'raw':!![],'attributes':['id',_0x149c('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x149c('0xb')](0x18,_0x149c('0xc'))}}})[_0x149c('0xd')](function(_0x373218){if(_0x373218&&_0x373218[_0x149c('0xe')]){_0x2561c4=_[_0x149c('0xf')](_0x373218||[],'id');logger[_0x149c('0x10')](_0x149c('0x11'),_0x2561c4[_0x149c('0x12')]());return db['WhatsappInteraction'][_0x149c('0x13')]({'closeReason':_0x149c('0x14'),'disposition':_0x149c('0x15'),'closed':!![],'closedAt':moment()['format'](_0x149c('0x16'))},{'where':{'id':_0x2561c4}});}})['then'](function(){if(_0x2561c4&&_0x2561c4[_0x149c('0xe')]){logger['info']('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x2561c4[_0x149c('0x12')]());for(var _0x4f926c=0x0;_0x4f926c<_0x2561c4[_0x149c('0xe')];_0x4f926c++){io[_0x149c('0x17')](_0x149c('0x18'),{'id':_0x2561c4[_0x4f926c],'closed':!![]});}}})['catch'](function(_0x18f136){logger[_0x149c('0x19')](_0x149c('0x1a'),_0x18f136?util[_0x149c('0x1b')](_0x18f136,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index c16534e..f65c3b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e13=['CmHopper','log','finished\x20populating','hopper1','contacts2','hopper2','catch','../mysqldb','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','push','now','then','CmContact','bulkCreate','contacts1'];(function(_0x5f2f86,_0x1a97ed){var _0x45aeef=function(_0x499e42){while(--_0x499e42){_0x5f2f86['push'](_0x5f2f86['shift']());}};_0x45aeef(++_0x1a97ed);}(_0x7e13,0x139));var _0x37e1=function(_0x315a7b,_0x4aefed){_0x315a7b=_0x315a7b-0x0;var _0x4a0bec=_0x7e13[_0x315a7b];return _0x4a0bec;};'use strict';var util=require('util');var db=require(_0x37e1('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x37e1('0x1')+i,'lastName':_0x37e1('0x2')+i,'phone':0xf879fb460+i,'email':_0x37e1('0x3')+i+_0x37e1('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x37e1('0x5')]({'id':i,'active':![],'scheduledat':Date[_0x37e1('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x37e1('0x6')](),'updatedAt':Date[_0x37e1('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x37e1('0x5')]({'id':i,'firstName':_0x37e1('0x1')+i,'lastName':_0x37e1('0x2')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x37e1('0x5')]({'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[_0x37e1('0x6')]()});}db['CmContact']['destroy']({'where':{}})[_0x37e1('0x7')](function(){return db[_0x37e1('0x8')][_0x37e1('0x9')](contacts);})[_0x37e1('0x7')](function(){console['log']('finished\x20populating',_0x37e1('0xa'));return db['CmHopper']['destroy']({'where':{}});})['then'](function(){return db[_0x37e1('0xb')][_0x37e1('0x9')](hopper);})['then'](function(){console[_0x37e1('0xc')](_0x37e1('0xd'),_0x37e1('0xe'));return db[_0x37e1('0x8')][_0x37e1('0x9')](contacts2);})[_0x37e1('0x7')](function(){console[_0x37e1('0xc')](_0x37e1('0xd'),_0x37e1('0xf'));return db[_0x37e1('0xb')][_0x37e1('0x9')](hopper2);})['then'](function(){console[_0x37e1('0xc')](_0x37e1('0xd'),_0x37e1('0x10'));})[_0x37e1('0x11')](function(_0x21c80c){console[_0x37e1('0xc')](_0x21c80c);});
\ No newline at end of file
+var _0x5c83=['CmHopper','bulkCreate','hopper1','log','contacts2','catch','util','../mysqldb','push','Innocenzo','now','Biondo','innocenzo.biondo','@xcally.com','CmContact','destroy','then','finished\x20populating','contacts1'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x5c83,0x9e));var _0x35c8=function(_0x385467,_0x298239){_0x385467=_0x385467-0x0;var _0x5ed67e=_0x5c83[_0x385467];return _0x5ed67e;};'use strict';var util=require(_0x35c8('0x0'));var db=require(_0x35c8('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x35c8('0x2')]({'id':i,'firstName':_0x35c8('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x35c8('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x35c8('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x35c8('0x4')](),'updatedAt':Date[_0x35c8('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x35c8('0x2')]({'id':i,'firstName':_0x35c8('0x3')+i,'lastName':_0x35c8('0x5')+i,'phone':0xf879fb460+i,'email':_0x35c8('0x6')+i+_0x35c8('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x35c8('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x35c8('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x35c8('0x4')](),'updatedAt':Date[_0x35c8('0x4')]()});}db[_0x35c8('0x8')][_0x35c8('0x9')]({'where':{}})[_0x35c8('0xa')](function(){return db[_0x35c8('0x8')]['bulkCreate'](contacts);})[_0x35c8('0xa')](function(){console['log'](_0x35c8('0xb'),_0x35c8('0xc'));return db[_0x35c8('0xd')][_0x35c8('0x9')]({'where':{}});})['then'](function(){return db['CmHopper'][_0x35c8('0xe')](hopper);})[_0x35c8('0xa')](function(){console['log'](_0x35c8('0xb'),_0x35c8('0xf'));return db['CmContact'][_0x35c8('0xe')](contacts2);})[_0x35c8('0xa')](function(){console[_0x35c8('0x10')](_0x35c8('0xb'),_0x35c8('0x11'));return db[_0x35c8('0xd')][_0x35c8('0xe')](hopper2);})[_0x35c8('0xa')](function(){console[_0x35c8('0x10')](_0x35c8('0xb'),'hopper2');})[_0x35c8('0x12')](function(_0x56267a){console[_0x35c8('0x10')](_0x56267a);});
\ No newline at end of file
index 997e0ac..5817492 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf21=['format','agent','%s%s@xcally.com','friend','udp','wss','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','log','add\x20user','catch','util','../mysqldb','push','%s%s'];(function(_0x5b1741,_0x221a5c){var _0x575530=function(_0x24b6e1){while(--_0x24b6e1){_0x5b1741['push'](_0x5b1741['shift']());}};_0x575530(++_0x221a5c);}(_0xdf21,0x1a0));var _0x1df2=function(_0x198a7a,_0x348577){_0x198a7a=_0x198a7a-0x0;var _0x549abe=_0xdf21[_0x198a7a];return _0x549abe;};'use strict';var util=require(_0x1df2('0x0'));var db=require(_0x1df2('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x1df2('0x2')]({'name':util['format'](_0x1df2('0x3'),'agent',i),'fullname':util[_0x1df2('0x4')]('%s%s',_0x1df2('0x5'),i),'email':util[_0x1df2('0x4')](_0x1df2('0x6'),'agent',i),'role':_0x1df2('0x5'),'password':'password','internal':0xfa0+i,'type':_0x1df2('0x7'),'transport':[_0x1df2('0x8'),'ws',_0x1df2('0x9')],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0x1df2('0x4')](_0x1df2('0x3'),_0x1df2('0x5'),i),'encryption':'yes','avpf':_0x1df2('0xa'),'force_avp':'yes','icesupport':_0x1df2('0xa'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x1df2('0xb'),'dtlsprivatekey':_0x1df2('0xc'),'dtlssetup':_0x1df2('0xd'),'callerid':util[_0x1df2('0x4')](_0x1df2('0xe'),util['format'](_0x1df2('0x3'),_0x1df2('0x5'),i),0xfa0+i)});}db[_0x1df2('0xf')][_0x1df2('0x10')](users)['then'](function(){console[_0x1df2('0x11')](_0x1df2('0x12'));})[_0x1df2('0x13')](function(_0x4ae601){console[_0x1df2('0x11')](_0x4ae601);});
\ No newline at end of file
+var _0xb8c5=['/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','bulkCreate','then','log','add\x20user','catch','util','../mysqldb','push','format','%s%s','agent','friend','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb8c5,0x1e3));var _0x5b8c=function(_0x483a68,_0x2acc85){_0x483a68=_0x483a68-0x0;var _0x5d8176=_0xb8c5[_0x483a68];return _0x5d8176;};'use strict';var util=require(_0x5b8c('0x0'));var db=require(_0x5b8c('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x5b8c('0x2')]({'name':util[_0x5b8c('0x3')](_0x5b8c('0x4'),'agent',i),'fullname':util[_0x5b8c('0x3')](_0x5b8c('0x4'),'agent',i),'email':util[_0x5b8c('0x3')]('%s%s@xcally.com',_0x5b8c('0x5'),i),'role':_0x5b8c('0x5'),'password':'password','internal':0xfa0+i,'type':_0x5b8c('0x6'),'transport':['udp','ws',_0x5b8c('0x7')],'disallow':['all'],'allow':[_0x5b8c('0x8')],'defaultuser':util[_0x5b8c('0x3')]('%s%s',_0x5b8c('0x5'),i),'encryption':_0x5b8c('0x9'),'avpf':'yes','force_avp':'yes','icesupport':_0x5b8c('0x9'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x5b8c('0xa'),'dtlsprivatekey':_0x5b8c('0xb'),'dtlssetup':_0x5b8c('0xc'),'callerid':util[_0x5b8c('0x3')](_0x5b8c('0xd'),util[_0x5b8c('0x3')](_0x5b8c('0x4'),_0x5b8c('0x5'),i),0xfa0+i)});}db['User'][_0x5b8c('0xe')](users)[_0x5b8c('0xf')](function(){console[_0x5b8c('0x10')](_0x5b8c('0x11'));})[_0x5b8c('0x12')](function(_0x76b701){console[_0x5b8c('0x10')](_0x76b701);});
\ No newline at end of file
index 59aba6a..4f456bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac6=['removeMailInteractions','FaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','default','connection','setMaxListeners','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','./environment','Agents','name','role','agent','UserProfileSection','findOne','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','IvrCampaigns','UserProfileResource','resourceId','then','map','User','telephone','ivr','format','%s:queue:%s','length','user:%s','handshake','find','userProfileId','query','MailInteraction','MailInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','OpenchannelQueues','Trunks','Campaign','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','fax','openchannel','whatsapp','telephone:%s','trunk:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xbac6,0x1ec));var _0x6bac=function(_0x1cbf94,_0x583add){_0x1cbf94=_0x1cbf94-0x0;var _0x3ee429=_0xbac6[_0x1cbf94];return _0x3ee429;};'use strict';var _=require(_0x6bac('0x0'));var util=require(_0x6bac('0x1'));var BPromise=require(_0x6bac('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x6bac('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x6bac('0x4'),'model':db['User'],'attributes':['id',_0x6bac('0x5'),_0x6bac('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x6bac('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x6bac('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x6bac('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6bac('0x5'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x4c2aeb,_0x59e25e,_0x4e65ce){return db[_0x6bac('0x8')][_0x6bac('0x9')]({'where':{'name':_0x4c2aeb,'userProfileId':_0x59e25e},'raw':!![]})['then'](function(_0x4b795f){if(_0x4b795f){if(_0x4b795f['autoAssociation']){switch(_0x4c2aeb){case _0x6bac('0xa'):case _0x6bac('0xb'):case _0x6bac('0xc'):case _0x6bac('0xd'):case _0x6bac('0xe'):case'OpenchannelQueues':case _0x6bac('0xf'):return db[_0x4e65ce][_0x6bac('0x10')](queryQueues);case'Telephones':return db[_0x4e65ce][_0x6bac('0x10')](queryTelephones);case'Trunks':return db[_0x4e65ce]['findAll'](queryTrunks);case _0x6bac('0x11'):return db[_0x4e65ce][_0x6bac('0x10')](queryCampaigns);}}else{return db[_0x6bac('0x12')]['findAll']({'attributes':[_0x6bac('0x13')],'where':{'sectionId':_0x4b795f['id']},'raw':!![]})[_0x6bac('0x14')](function(_0x581ea2){if(_0x581ea2){var _0x55a6fe={'where':{'id':_[_0x6bac('0x15')](_0x581ea2,_0x6bac('0x13'))},'raw':!![]};switch(_0x4e65ce){case _0x6bac('0x16'):_0x55a6fe['where'][_0x6bac('0x6')]=_0x6bac('0x17');break;case'Campaign':_0x55a6fe['where']['type']=_0x6bac('0x18');break;}return db[_0x4e65ce][_0x6bac('0x10')](_0x55a6fe);}else{return[];}});}}else{return[];}})[_0x6bac('0x14')](function(_0x1345ea){return _0x1345ea;});}function joinOrLeaveQueues(_0x337538,_0x3787f6,_0x13b331,_0x34690c){_0x337538[_0x3787f6](util[_0x6bac('0x19')](_0x6bac('0x1a'),_0x13b331,_0x34690c[_0x6bac('0x5')]));if(_0x34690c[_0x6bac('0x4')]){for(var _0x178840=0x0;_0x178840<_0x34690c[_0x6bac('0x4')][_0x6bac('0x1b')];_0x178840+=0x1){_0x337538[_0x3787f6](util[_0x6bac('0x19')](_0x6bac('0x1c'),_0x34690c[_0x6bac('0x4')][_0x178840][_0x6bac('0x5')]));}}}function joinOrLeave(_0x3d98ed,_0x127350,_0x30f425){var _0x4e56ed;if(_0x3d98ed[_0x6bac('0x1d')]['query']['id']){db[_0x6bac('0x16')][_0x6bac('0x1e')]({'attributes':['id',_0x6bac('0x5'),_0x6bac('0x6'),_0x6bac('0x1f')],'where':{'id':_0x3d98ed[_0x6bac('0x1d')][_0x6bac('0x20')]['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x6bac('0x21')],'as':_0x6bac('0x22'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x6bac('0x23')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x6bac('0x24')],'as':_0x6bac('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x6bac('0x26')],'as':_0x6bac('0x27'),'attributes':['id'],'raw':!![]}]})[_0x6bac('0x14')](function(_0x395d4b){if(_0x395d4b){_0x4e56ed=_0x395d4b;_0x3d98ed[_0x127350](util[_0x6bac('0x19')](_0x6bac('0x1c'),_0x395d4b['name']));var _0x20c477=[];switch(_0x395d4b[_0x6bac('0x6')]){case'admin':_0x3d98ed[_0x127350]('voice:inbound');_0x3d98ed[_0x127350]('voice:outbound');if(queryQueues['hasOwnProperty'](_0x6bac('0x28'))){delete queryQueues[_0x6bac('0x28')];}_0x20c477[_0x6bac('0x29')](db['VoiceQueue'][_0x6bac('0x10')](queryQueues));_0x20c477[_0x6bac('0x29')](db[_0x6bac('0x2a')][_0x6bac('0x10')](queryQueues));_0x20c477['push'](db[_0x6bac('0x2b')]['findAll'](queryQueues));_0x20c477[_0x6bac('0x29')](db[_0x6bac('0x2c')]['findAll'](queryQueues));_0x20c477[_0x6bac('0x29')](db[_0x6bac('0x2d')][_0x6bac('0x10')](queryQueues));_0x20c477[_0x6bac('0x29')](db[_0x6bac('0x2e')][_0x6bac('0x10')](queryQueues));_0x20c477[_0x6bac('0x29')](db[_0x6bac('0x2f')][_0x6bac('0x10')](queryQueues));_0x20c477['push'](db['User']['findAll'](queryTelephones));_0x20c477[_0x6bac('0x29')](db[_0x6bac('0x30')][_0x6bac('0x10')](queryTrunks));_0x20c477[_0x6bac('0x29')](db['Campaign'][_0x6bac('0x10')](queryCampaigns));_0x20c477[_0x6bac('0x29')](db[_0x6bac('0x16')][_0x6bac('0x10')](queryAgents));break;case _0x6bac('0x31'):_0x3d98ed[_0x127350]('voice:inbound');_0x3d98ed[_0x127350](_0x6bac('0x32'));_0x20c477['push'](getAssociatedResources('VoiceQueues',_0x395d4b[_0x6bac('0x1f')],'VoiceQueue'));_0x20c477[_0x6bac('0x29')](getAssociatedResources(_0x6bac('0xb'),_0x395d4b[_0x6bac('0x1f')],_0x6bac('0x2a')));_0x20c477['push'](getAssociatedResources(_0x6bac('0xc'),_0x395d4b[_0x6bac('0x1f')],_0x6bac('0x2b')));_0x20c477['push'](getAssociatedResources(_0x6bac('0xd'),_0x395d4b[_0x6bac('0x1f')],'SmsQueue'));_0x20c477[_0x6bac('0x29')](getAssociatedResources(_0x6bac('0xe'),_0x395d4b['userProfileId'],_0x6bac('0x2d')));_0x20c477[_0x6bac('0x29')](getAssociatedResources(_0x6bac('0x33'),_0x395d4b[_0x6bac('0x1f')],_0x6bac('0x2e')));_0x20c477['push'](getAssociatedResources(_0x6bac('0xf'),_0x395d4b['userProfileId'],_0x6bac('0x2f')));_0x20c477[_0x6bac('0x29')](getAssociatedResources('Telephones',_0x395d4b[_0x6bac('0x1f')],_0x6bac('0x16')));_0x20c477[_0x6bac('0x29')](getAssociatedResources(_0x6bac('0x34'),_0x395d4b['userProfileId'],_0x6bac('0x30')));_0x20c477['push'](getAssociatedResources('IvrCampaigns',_0x395d4b[_0x6bac('0x1f')],_0x6bac('0x35')));_0x20c477[_0x6bac('0x29')](db['User'][_0x6bac('0x10')](queryAgents));break;case _0x6bac('0x7'):_0x3d98ed[_0x127350]('voice:inbound');_0x3d98ed[_0x127350](_0x6bac('0x32'));_0x20c477[_0x6bac('0x29')](_0x395d4b[_0x6bac('0x36')]({'attributes':['id',_0x6bac('0x5')]}));_0x20c477['push'](_0x395d4b[_0x6bac('0x37')]({'attributes':['id',_0x6bac('0x5')]}));_0x20c477[_0x6bac('0x29')](_0x395d4b['getFaxQueues']({'attributes':['id',_0x6bac('0x5')]}));_0x20c477['push'](_0x395d4b[_0x6bac('0x38')]({'attributes':['id',_0x6bac('0x5')]}));_0x20c477[_0x6bac('0x29')](_0x395d4b[_0x6bac('0x39')]({'attributes':['id','name']}));_0x20c477[_0x6bac('0x29')](_0x395d4b[_0x6bac('0x3a')]({'attributes':['id',_0x6bac('0x5')]}));_0x20c477[_0x6bac('0x29')](_0x395d4b[_0x6bac('0x3b')]({'attributes':['id',_0x6bac('0x5')]}));break;}return BPromise[_0x6bac('0x3c')](_0x20c477);}})[_0x6bac('0x14')](function(_0xae8737){if(_0xae8737&&_0xae8737[_0x6bac('0x1b')]){for(var _0x1e3bc4=0x0;_0x1e3bc4<_0xae8737[_0x6bac('0x1b')];_0x1e3bc4+=0x1){for(var _0x5038b8=0x0;_0x5038b8<_0xae8737[_0x1e3bc4]['length'];_0x5038b8+=0x1){switch(_0x1e3bc4){case 0x0:joinOrLeaveQueues(_0x3d98ed,_0x127350,'voice',_0xae8737[_0x1e3bc4][_0x5038b8]);break;case 0x1:joinOrLeaveQueues(_0x3d98ed,_0x127350,_0x6bac('0x3d'),_0xae8737[_0x1e3bc4][_0x5038b8]);break;case 0x2:joinOrLeaveQueues(_0x3d98ed,_0x127350,_0x6bac('0x3e'),_0xae8737[_0x1e3bc4][_0x5038b8]);break;case 0x3:joinOrLeaveQueues(_0x3d98ed,_0x127350,'sms',_0xae8737[_0x1e3bc4][_0x5038b8]);break;case 0x4:joinOrLeaveQueues(_0x3d98ed,_0x127350,'mail',_0xae8737[_0x1e3bc4][_0x5038b8]);break;case 0x5:joinOrLeaveQueues(_0x3d98ed,_0x127350,_0x6bac('0x3f'),_0xae8737[_0x1e3bc4][_0x5038b8]);break;case 0x6:joinOrLeaveQueues(_0x3d98ed,_0x127350,_0x6bac('0x40'),_0xae8737[_0x1e3bc4][_0x5038b8]);break;case 0x7:if(_0x4e56ed[_0x6bac('0x6')]!==_0x6bac('0x7'))_0x3d98ed[_0x127350](util[_0x6bac('0x19')](_0x6bac('0x41'),_0xae8737[_0x1e3bc4][_0x5038b8][_0x6bac('0x5')]));break;case 0x8:if(_0x4e56ed[_0x6bac('0x6')]!==_0x6bac('0x7'))_0x3d98ed[_0x127350](util[_0x6bac('0x19')](_0x6bac('0x42'),_0xae8737[_0x1e3bc4][_0x5038b8][_0x6bac('0x5')]));break;case 0x9:if(_0x4e56ed[_0x6bac('0x6')]!==_0x6bac('0x7'))_0x3d98ed[_0x127350](util['format']('campaign:%s:%s',_0xae8737[_0x1e3bc4][_0x5038b8]['type'],_0xae8737[_0x1e3bc4][_0x5038b8][_0x6bac('0x5')]));break;case 0xa:_0x3d98ed[_0x127350](util['format']('user:%s',_0xae8737[_0x1e3bc4][_0x5038b8][_0x6bac('0x5')]));break;}}}}})['then'](function(){if(_0x127350===_0x6bac('0x43')){var _0x341756=_[_0x6bac('0x15')](_0x4e56ed[_0x6bac('0x44')],'id');return _0x4e56ed[_0x6bac('0x45')](_0x341756)[_0x6bac('0x14')](function(){for(var _0x1fb2ba=0x0;_0x1fb2ba<_0x341756[_0x6bac('0x1b')];_0x1fb2ba+=0x1){_0x30f425[_0x6bac('0x46')](_0x6bac('0x47'),{'ChatInteractionId':Number(_0x341756[_0x1fb2ba]),'UserId':Number(_0x4e56ed['id'])});}});}})[_0x6bac('0x14')](function(){if(_0x127350==='leave'){var _0x23919d=_[_0x6bac('0x15')](_0x4e56ed[_0x6bac('0x22')],'id');return _0x4e56ed[_0x6bac('0x48')](_0x23919d)[_0x6bac('0x14')](function(){for(var _0x16c4fd=0x0;_0x16c4fd<_0x23919d[_0x6bac('0x1b')];_0x16c4fd+=0x1){_0x30f425[_0x6bac('0x46')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x23919d[_0x16c4fd]),'UserId':Number(_0x4e56ed['id'])});}});}})[_0x6bac('0x14')](function(){if(_0x127350===_0x6bac('0x43')){var _0x1c5a49=_[_0x6bac('0x15')](_0x4e56ed[_0x6bac('0x49')],'id');return _0x4e56ed['removeFaxInteractions'](_0x1c5a49)[_0x6bac('0x14')](function(){for(var _0x404d78=0x0;_0x404d78<_0x1c5a49[_0x6bac('0x1b')];_0x404d78+=0x1){_0x30f425[_0x6bac('0x46')](_0x6bac('0x4a'),{'FaxInteractionId':Number(_0x1c5a49[_0x404d78]),'UserId':Number(_0x4e56ed['id'])});}});}})[_0x6bac('0x14')](function(){if(_0x127350===_0x6bac('0x43')){var _0x4161c5=_[_0x6bac('0x15')](_0x4e56ed[_0x6bac('0x4b')],'id');return _0x4e56ed[_0x6bac('0x4c')](_0x4161c5)['then'](function(){for(var _0x8a1aa7=0x0;_0x8a1aa7<_0x4161c5['length'];_0x8a1aa7+=0x1){_0x30f425[_0x6bac('0x46')](_0x6bac('0x4d'),{'SmsInteractionId':Number(_0x4161c5[_0x8a1aa7]),'UserId':Number(_0x4e56ed['id'])});}});}})['then'](function(){if(_0x127350===_0x6bac('0x43')){var _0x24befd=_['map'](_0x4e56ed[_0x6bac('0x25')],'id');return _0x4e56ed[_0x6bac('0x4e')](_0x24befd)['then'](function(){for(var _0xefc69e=0x0;_0xefc69e<_0x24befd[_0x6bac('0x1b')];_0xefc69e+=0x1){_0x30f425[_0x6bac('0x46')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x24befd[_0xefc69e]),'UserId':Number(_0x4e56ed['id'])});}});}})[_0x6bac('0x14')](function(){if(_0x127350===_0x6bac('0x43')){var _0x40fdba=_[_0x6bac('0x15')](_0x4e56ed['WhatsappInteractions'],'id');return _0x4e56ed[_0x6bac('0x4f')](_0x40fdba)[_0x6bac('0x14')](function(){for(var _0x3cac70=0x0;_0x3cac70<_0x40fdba[_0x6bac('0x1b')];_0x3cac70+=0x1){_0x30f425[_0x6bac('0x46')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x40fdba[_0x3cac70]),'UserId':Number(_0x4e56ed['id'])});}});}})['catch'](function(_0x35797b){_0x3d98ed['log'](_0x35797b);});}}function onDisconnect(_0x84c89b,_0x599a22){joinOrLeave(_0x84c89b,_0x6bac('0x43'),_0x599a22);}function onConnect(_0x5152db){joinOrLeave(_0x5152db,'join');}exports[_0x6bac('0x50')]=function(_0x4e549b){_0x4e549b['on'](_0x6bac('0x51'),function(_0x1c9f30){_0x1c9f30[_0x6bac('0x52')](0x0);_0x1c9f30['address']=_0x1c9f30[_0x6bac('0x53')]['connection'][_0x6bac('0x54')]+':'+_0x1c9f30[_0x6bac('0x53')][_0x6bac('0x51')][_0x6bac('0x55')];_0x1c9f30[_0x6bac('0x56')]=new Date();_0x1c9f30[_0x6bac('0x57')]=function(_0x313ede){console['log'](_0x6bac('0x58')+_0x1c9f30[_0x6bac('0x59')][_0x6bac('0x5')]+'['+_0x1c9f30[_0x6bac('0x5a')]+']',_0x313ede);};_0x1c9f30['on'](_0x6bac('0x5b'),function(){onDisconnect(_0x1c9f30,_0x4e549b);_0x1c9f30[_0x6bac('0x57')](_0x6bac('0x5c'));});onConnect(_0x1c9f30);_0x1c9f30[_0x6bac('0x57')](_0x6bac('0x5d'));});};
\ No newline at end of file
+var _0x94d4=['%s:queue:%s','Agents','length','handshake','find','userProfileId','query','ChatInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','ChatQueues','OpenchannelQueues','OpenchannelQueue','Trunk','getVoiceQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','telephone:%s','leave','ChatInteractions','removeChatInteractions','removeMailInteractions','emit','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','request','connectedAt','disconnect','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','./environment','name','User','role','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format'];(function(_0xa1f465,_0x48e306){var _0x126406=function(_0x4ae16b){while(--_0x4ae16b){_0xa1f465['push'](_0xa1f465['shift']());}};_0x126406(++_0x48e306);}(_0x94d4,0xa5));var _0x494d=function(_0x55451a,_0x311541){_0x55451a=_0x55451a-0x0;var _0xc79144=_0x94d4[_0x55451a];return _0xc79144;};'use strict';var _=require(_0x494d('0x0'));var util=require(_0x494d('0x1'));var BPromise=require('bluebird');var db=require(_0x494d('0x2'))['db'];var config=require(_0x494d('0x3'));var queryQueues={'attributes':['id',_0x494d('0x4')],'include':[{'as':'Agents','model':db[_0x494d('0x5')],'attributes':['id',_0x494d('0x4'),_0x494d('0x6')],'raw':!![],'where':{'role':_0x494d('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x494d('0x4')],'where':{'role':_0x494d('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x494d('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x494d('0x9')],'where':{'type':_0x494d('0xa')}};function getAssociatedResources(_0x5408b3,_0x4c3e5f,_0x456fe8){return db[_0x494d('0xb')]['findOne']({'where':{'name':_0x5408b3,'userProfileId':_0x4c3e5f},'raw':!![]})[_0x494d('0xc')](function(_0x28bff7){if(_0x28bff7){if(_0x28bff7[_0x494d('0xd')]){switch(_0x5408b3){case _0x494d('0xe'):case'ChatQueues':case _0x494d('0xf'):case _0x494d('0x10'):case'MailQueues':case'OpenchannelQueues':case'WhatsappQueues':return db[_0x456fe8][_0x494d('0x11')](queryQueues);case _0x494d('0x12'):return db[_0x456fe8][_0x494d('0x11')](queryTelephones);case _0x494d('0x13'):return db[_0x456fe8][_0x494d('0x11')](queryTrunks);case _0x494d('0x14'):return db[_0x456fe8][_0x494d('0x11')](queryCampaigns);}}else{return db[_0x494d('0x15')][_0x494d('0x11')]({'attributes':[_0x494d('0x16')],'where':{'sectionId':_0x28bff7['id']},'raw':!![]})[_0x494d('0xc')](function(_0x5c2c67){if(_0x5c2c67){var _0x22f04f={'where':{'id':_[_0x494d('0x17')](_0x5c2c67,_0x494d('0x16'))},'raw':!![]};switch(_0x456fe8){case _0x494d('0x5'):_0x22f04f[_0x494d('0x18')][_0x494d('0x6')]=_0x494d('0x8');break;case _0x494d('0x19'):_0x22f04f[_0x494d('0x18')][_0x494d('0x9')]=_0x494d('0xa');break;}return db[_0x456fe8][_0x494d('0x11')](_0x22f04f);}else{return[];}});}}else{return[];}})[_0x494d('0xc')](function(_0x23997d){return _0x23997d;});}function joinOrLeaveQueues(_0x20dd3d,_0x3e4be3,_0x134632,_0x5bf90b){_0x20dd3d[_0x3e4be3](util[_0x494d('0x1a')](_0x494d('0x1b'),_0x134632,_0x5bf90b[_0x494d('0x4')]));if(_0x5bf90b[_0x494d('0x1c')]){for(var _0x4c2731=0x0;_0x4c2731<_0x5bf90b['Agents'][_0x494d('0x1d')];_0x4c2731+=0x1){_0x20dd3d[_0x3e4be3](util[_0x494d('0x1a')]('user:%s',_0x5bf90b['Agents'][_0x4c2731][_0x494d('0x4')]));}}}function joinOrLeave(_0x5b9c64,_0x1dec57,_0x52f26d){var _0x2be6f0;if(_0x5b9c64[_0x494d('0x1e')]['query']['id']){db[_0x494d('0x5')][_0x494d('0x1f')]({'attributes':['id',_0x494d('0x4'),_0x494d('0x6'),_0x494d('0x20')],'where':{'id':_0x5b9c64['handshake'][_0x494d('0x21')]['id']},'include':[{'model':db[_0x494d('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x494d('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x494d('0x24')],'as':_0x494d('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x494d('0x26')],'as':_0x494d('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x494d('0x28')],'as':_0x494d('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x494d('0x2a')],'as':_0x494d('0x2b'),'attributes':['id'],'raw':!![]}]})[_0x494d('0xc')](function(_0x1a8d4b){if(_0x1a8d4b){_0x2be6f0=_0x1a8d4b;_0x5b9c64[_0x1dec57](util[_0x494d('0x1a')](_0x494d('0x2c'),_0x1a8d4b['name']));var _0x220dd8=[];switch(_0x1a8d4b[_0x494d('0x6')]){case _0x494d('0x2d'):_0x5b9c64[_0x1dec57](_0x494d('0x2e'));_0x5b9c64[_0x1dec57](_0x494d('0x2f'));if(queryQueues[_0x494d('0x30')](_0x494d('0x31'))){delete queryQueues[_0x494d('0x31')];}_0x220dd8[_0x494d('0x32')](db[_0x494d('0x33')]['findAll'](queryQueues));_0x220dd8[_0x494d('0x32')](db[_0x494d('0x34')]['findAll'](queryQueues));_0x220dd8[_0x494d('0x32')](db[_0x494d('0x35')]['findAll'](queryQueues));_0x220dd8['push'](db[_0x494d('0x36')]['findAll'](queryQueues));_0x220dd8[_0x494d('0x32')](db[_0x494d('0x37')][_0x494d('0x11')](queryQueues));_0x220dd8[_0x494d('0x32')](db['OpenchannelQueue']['findAll'](queryQueues));_0x220dd8[_0x494d('0x32')](db[_0x494d('0x38')][_0x494d('0x11')](queryQueues));_0x220dd8['push'](db['User'][_0x494d('0x11')](queryTelephones));_0x220dd8[_0x494d('0x32')](db['Trunk'][_0x494d('0x11')](queryTrunks));_0x220dd8[_0x494d('0x32')](db[_0x494d('0x19')]['findAll'](queryCampaigns));_0x220dd8['push'](db['User'][_0x494d('0x11')](queryAgents));break;case'user':_0x5b9c64[_0x1dec57]('voice:inbound');_0x5b9c64[_0x1dec57](_0x494d('0x2f'));_0x220dd8[_0x494d('0x32')](getAssociatedResources(_0x494d('0xe'),_0x1a8d4b[_0x494d('0x20')],_0x494d('0x33')));_0x220dd8['push'](getAssociatedResources(_0x494d('0x39'),_0x1a8d4b[_0x494d('0x20')],_0x494d('0x34')));_0x220dd8[_0x494d('0x32')](getAssociatedResources(_0x494d('0xf'),_0x1a8d4b['userProfileId'],_0x494d('0x35')));_0x220dd8[_0x494d('0x32')](getAssociatedResources('SmsQueues',_0x1a8d4b[_0x494d('0x20')],_0x494d('0x36')));_0x220dd8[_0x494d('0x32')](getAssociatedResources('MailQueues',_0x1a8d4b[_0x494d('0x20')],_0x494d('0x37')));_0x220dd8['push'](getAssociatedResources(_0x494d('0x3a'),_0x1a8d4b[_0x494d('0x20')],_0x494d('0x3b')));_0x220dd8['push'](getAssociatedResources('WhatsappQueues',_0x1a8d4b[_0x494d('0x20')],'WhatsappQueue'));_0x220dd8[_0x494d('0x32')](getAssociatedResources(_0x494d('0x12'),_0x1a8d4b[_0x494d('0x20')],'User'));_0x220dd8[_0x494d('0x32')](getAssociatedResources(_0x494d('0x13'),_0x1a8d4b['userProfileId'],_0x494d('0x3c')));_0x220dd8[_0x494d('0x32')](getAssociatedResources('IvrCampaigns',_0x1a8d4b[_0x494d('0x20')],_0x494d('0x19')));_0x220dd8['push'](db[_0x494d('0x5')][_0x494d('0x11')](queryAgents));break;case _0x494d('0x7'):_0x5b9c64[_0x1dec57](_0x494d('0x2e'));_0x5b9c64[_0x1dec57]('voice:outbound');_0x220dd8[_0x494d('0x32')](_0x1a8d4b[_0x494d('0x3d')]({'attributes':['id',_0x494d('0x4')]}));_0x220dd8[_0x494d('0x32')](_0x1a8d4b['getChatQueues']({'attributes':['id','name']}));_0x220dd8[_0x494d('0x32')](_0x1a8d4b[_0x494d('0x3e')]({'attributes':['id','name']}));_0x220dd8[_0x494d('0x32')](_0x1a8d4b[_0x494d('0x3f')]({'attributes':['id',_0x494d('0x4')]}));_0x220dd8['push'](_0x1a8d4b['getMailQueues']({'attributes':['id',_0x494d('0x4')]}));_0x220dd8[_0x494d('0x32')](_0x1a8d4b[_0x494d('0x40')]({'attributes':['id',_0x494d('0x4')]}));_0x220dd8[_0x494d('0x32')](_0x1a8d4b[_0x494d('0x41')]({'attributes':['id',_0x494d('0x4')]}));break;}return BPromise[_0x494d('0x42')](_0x220dd8);}})[_0x494d('0xc')](function(_0xcc60c2){if(_0xcc60c2&&_0xcc60c2[_0x494d('0x1d')]){for(var _0x30a1eb=0x0;_0x30a1eb<_0xcc60c2['length'];_0x30a1eb+=0x1){for(var _0x37c49d=0x0;_0x37c49d<_0xcc60c2[_0x30a1eb][_0x494d('0x1d')];_0x37c49d+=0x1){switch(_0x30a1eb){case 0x0:joinOrLeaveQueues(_0x5b9c64,_0x1dec57,_0x494d('0x43'),_0xcc60c2[_0x30a1eb][_0x37c49d]);break;case 0x1:joinOrLeaveQueues(_0x5b9c64,_0x1dec57,_0x494d('0x44'),_0xcc60c2[_0x30a1eb][_0x37c49d]);break;case 0x2:joinOrLeaveQueues(_0x5b9c64,_0x1dec57,_0x494d('0x45'),_0xcc60c2[_0x30a1eb][_0x37c49d]);break;case 0x3:joinOrLeaveQueues(_0x5b9c64,_0x1dec57,_0x494d('0x46'),_0xcc60c2[_0x30a1eb][_0x37c49d]);break;case 0x4:joinOrLeaveQueues(_0x5b9c64,_0x1dec57,_0x494d('0x47'),_0xcc60c2[_0x30a1eb][_0x37c49d]);break;case 0x5:joinOrLeaveQueues(_0x5b9c64,_0x1dec57,_0x494d('0x48'),_0xcc60c2[_0x30a1eb][_0x37c49d]);break;case 0x6:joinOrLeaveQueues(_0x5b9c64,_0x1dec57,'whatsapp',_0xcc60c2[_0x30a1eb][_0x37c49d]);break;case 0x7:if(_0x2be6f0[_0x494d('0x6')]!==_0x494d('0x7'))_0x5b9c64[_0x1dec57](util[_0x494d('0x1a')](_0x494d('0x49'),_0xcc60c2[_0x30a1eb][_0x37c49d][_0x494d('0x4')]));break;case 0x8:if(_0x2be6f0['role']!=='agent')_0x5b9c64[_0x1dec57](util[_0x494d('0x1a')]('trunk:%s',_0xcc60c2[_0x30a1eb][_0x37c49d][_0x494d('0x4')]));break;case 0x9:if(_0x2be6f0[_0x494d('0x6')]!==_0x494d('0x7'))_0x5b9c64[_0x1dec57](util[_0x494d('0x1a')]('campaign:%s:%s',_0xcc60c2[_0x30a1eb][_0x37c49d][_0x494d('0x9')],_0xcc60c2[_0x30a1eb][_0x37c49d][_0x494d('0x4')]));break;case 0xa:_0x5b9c64[_0x1dec57](util['format'](_0x494d('0x2c'),_0xcc60c2[_0x30a1eb][_0x37c49d][_0x494d('0x4')]));break;}}}}})[_0x494d('0xc')](function(){if(_0x1dec57===_0x494d('0x4a')){var _0x2d3a26=_[_0x494d('0x17')](_0x2be6f0[_0x494d('0x4b')],'id');return _0x2be6f0[_0x494d('0x4c')](_0x2d3a26)['then'](function(){for(var _0x5c07b5=0x0;_0x5c07b5<_0x2d3a26[_0x494d('0x1d')];_0x5c07b5+=0x1){_0x52f26d['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x2d3a26[_0x5c07b5]),'UserId':Number(_0x2be6f0['id'])});}});}})[_0x494d('0xc')](function(){if(_0x1dec57===_0x494d('0x4a')){var _0x338a66=_[_0x494d('0x17')](_0x2be6f0[_0x494d('0x23')],'id');return _0x2be6f0[_0x494d('0x4d')](_0x338a66)['then'](function(){for(var _0xdd869e=0x0;_0xdd869e<_0x338a66[_0x494d('0x1d')];_0xdd869e+=0x1){_0x52f26d[_0x494d('0x4e')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x338a66[_0xdd869e]),'UserId':Number(_0x2be6f0['id'])});}});}})[_0x494d('0xc')](function(){if(_0x1dec57===_0x494d('0x4a')){var _0x596628=_[_0x494d('0x17')](_0x2be6f0[_0x494d('0x25')],'id');return _0x2be6f0[_0x494d('0x4f')](_0x596628)[_0x494d('0xc')](function(){for(var _0x4bc5e5=0x0;_0x4bc5e5<_0x596628['length'];_0x4bc5e5+=0x1){_0x52f26d[_0x494d('0x4e')](_0x494d('0x50'),{'FaxInteractionId':Number(_0x596628[_0x4bc5e5]),'UserId':Number(_0x2be6f0['id'])});}});}})[_0x494d('0xc')](function(){if(_0x1dec57===_0x494d('0x4a')){var _0x538f07=_[_0x494d('0x17')](_0x2be6f0[_0x494d('0x27')],'id');return _0x2be6f0[_0x494d('0x51')](_0x538f07)['then'](function(){for(var _0x421198=0x0;_0x421198<_0x538f07['length'];_0x421198+=0x1){_0x52f26d[_0x494d('0x4e')](_0x494d('0x52'),{'SmsInteractionId':Number(_0x538f07[_0x421198]),'UserId':Number(_0x2be6f0['id'])});}});}})['then'](function(){if(_0x1dec57===_0x494d('0x4a')){var _0x1d4d86=_[_0x494d('0x17')](_0x2be6f0[_0x494d('0x29')],'id');return _0x2be6f0['removeOpenchannelInteractions'](_0x1d4d86)[_0x494d('0xc')](function(){for(var _0x3beb37=0x0;_0x3beb37<_0x1d4d86[_0x494d('0x1d')];_0x3beb37+=0x1){_0x52f26d[_0x494d('0x4e')](_0x494d('0x53'),{'OpenchannelInteractionId':Number(_0x1d4d86[_0x3beb37]),'UserId':Number(_0x2be6f0['id'])});}});}})['then'](function(){if(_0x1dec57===_0x494d('0x4a')){var _0x8304b5=_[_0x494d('0x17')](_0x2be6f0[_0x494d('0x2b')],'id');return _0x2be6f0[_0x494d('0x54')](_0x8304b5)[_0x494d('0xc')](function(){for(var _0x1c12a0=0x0;_0x1c12a0<_0x8304b5[_0x494d('0x1d')];_0x1c12a0+=0x1){_0x52f26d[_0x494d('0x4e')](_0x494d('0x55'),{'WhatsappInteractionId':Number(_0x8304b5[_0x1c12a0]),'UserId':Number(_0x2be6f0['id'])});}});}})[_0x494d('0x56')](function(_0x17c800){_0x5b9c64[_0x494d('0x57')](_0x17c800);});}}function onDisconnect(_0x30f2a0,_0x20dc78){joinOrLeave(_0x30f2a0,_0x494d('0x4a'),_0x20dc78);}function onConnect(_0x532e21){joinOrLeave(_0x532e21,_0x494d('0x58'));}exports[_0x494d('0x59')]=function(_0x44e182){_0x44e182['on'](_0x494d('0x5a'),function(_0x330233){_0x330233['setMaxListeners'](0x0);_0x330233['address']=_0x330233[_0x494d('0x5b')][_0x494d('0x5a')]['remoteAddress']+':'+_0x330233[_0x494d('0x5b')]['connection']['remotePort'];_0x330233[_0x494d('0x5c')]=new Date();_0x330233[_0x494d('0x57')]=function(_0x8e3bf1){console[_0x494d('0x57')]('SocketIO\x20'+_0x330233['nsp']['name']+'['+_0x330233['address']+']',_0x8e3bf1);};_0x330233['on'](_0x494d('0x5d'),function(){onDisconnect(_0x330233,_0x44e182);_0x330233['log'](_0x494d('0x5e'));});onConnect(_0x330233);_0x330233[_0x494d('0x57')](_0x494d('0x5f'));});};
\ No newline at end of file
index 53e21ff..1b20566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa340=['hasOwnProperty','model','hook','callback','toLowerCase','util','jayson/promise','triggers','client','http','Chat','ChatInteraction','afterCreate','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','Whatsapp','newinteraction','WhatsappInteraction','WhatsappMessage','FaxInteraction','Fax','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error','code','catch','get','channel','event','direction','resolve','ContactId','sequelize','query','Sequelize','contact','UserId','undefined','format','SIP/%s','name','outgoingmessage','AfterCreateMessage','offlineMessage','motionChannel','opened','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','interface','agent','AfterCreate','changed','substatus','closed','QueryTypes','find','fullname','internal','default','length'];(function(_0x2308f1,_0x27f0fe){var _0x365f0b=function(_0x2d8dc8){while(--_0x2d8dc8){_0x2308f1['push'](_0x2308f1['shift']());}};_0x365f0b(++_0x27f0fe);}(_0xa340,0x177));var _0x0a34=function(_0x73df09,_0x5b217b){_0x73df09=_0x73df09-0x0;var _0x2c23a0=_0xa340[_0x73df09];return _0x2c23a0;};'use strict';var util=require(_0x0a34('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0x0a34('0x1'));var logger=require('../logger')(_0x0a34('0x2'));var client=jayson[_0x0a34('0x3')][_0x0a34('0x4')]({'port':0x232a});var triggers=[{'channel':_0x0a34('0x5'),'model':_0x0a34('0x6'),'event':_0x0a34('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x0a34('0x5'),'model':_0x0a34('0x6'),'event':_0x0a34('0x8'),'condition':_0x0a34('0x9'),'callback':afterUpdate},{'channel':_0x0a34('0x5'),'model':_0x0a34('0xa'),'event':'afterCreate','condition':_0x0a34('0xb'),'callback':afterCreateMessage},{'channel':_0x0a34('0x5'),'model':_0x0a34('0xc'),'event':_0x0a34('0x7'),'condition':_0x0a34('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0x0a34('0xd'),'model':'SmsInteraction','event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x0a34('0xd'),'model':_0x0a34('0xe'),'event':_0x0a34('0x8'),'condition':_0x0a34('0x9'),'callback':afterUpdate},{'channel':_0x0a34('0xd'),'model':'SmsMessage','event':_0x0a34('0x7'),'condition':_0x0a34('0xb'),'callback':afterCreateMessage},{'channel':_0x0a34('0xf'),'model':'WhatsappInteraction','event':'afterCreate','condition':_0x0a34('0x10'),'callback':afterCreate},{'channel':_0x0a34('0xf'),'model':_0x0a34('0x11'),'event':_0x0a34('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x0a34('0xf'),'model':_0x0a34('0x12'),'event':_0x0a34('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Fax','model':_0x0a34('0x13'),'event':_0x0a34('0x7'),'condition':_0x0a34('0x10'),'callback':afterCreate},{'channel':_0x0a34('0x14'),'model':_0x0a34('0x13'),'event':_0x0a34('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':'FaxMessage','event':_0x0a34('0x7'),'condition':_0x0a34('0xb'),'callback':afterCreateMessage},{'channel':_0x0a34('0x15'),'model':_0x0a34('0x16'),'event':_0x0a34('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x0a34('0x15'),'model':_0x0a34('0x16'),'event':_0x0a34('0x8'),'condition':_0x0a34('0x9'),'callback':afterUpdate},{'channel':'Mail','model':_0x0a34('0x17'),'event':_0x0a34('0x7'),'condition':_0x0a34('0xb'),'callback':afterCreateMessage},{'channel':_0x0a34('0x18'),'model':_0x0a34('0x19'),'event':'afterCreate','condition':_0x0a34('0x10'),'callback':afterCreate},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0x0a34('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x0a34('0x18'),'model':_0x0a34('0x1a'),'event':'afterCreate','condition':_0x0a34('0xb'),'callback':afterCreateMessage}];function request(_0x31a3b6){return client[_0x0a34('0x1b')](_0x0a34('0x1c'),_0x31a3b6)[_0x0a34('0x1d')](function(_0x5c303a){logger[_0x0a34('0x1e')](_0x0a34('0x1f'),'EventManager',_0x5c303a);if(_0x5c303a[_0x0a34('0x20')]){if(_0x5c303a['error'][_0x0a34('0x21')]===0x1f4){logger['error'](_0x0a34('0x1f'),_0x0a34('0x1c'),_0x5c303a['error']);}}})[_0x0a34('0x22')](function(_0x598330){logger[_0x0a34('0x20')](_0x0a34('0x1f'),'EventManager',_0x598330);});}function afterCreateMessage(_0x515202){return function(_0x3f4a34){_0x3f4a34=_0x3f4a34[_0x0a34('0x23')]({'plain':!![]});_0x3f4a34[_0x0a34('0x24')]=_0x515202;_0x3f4a34['motionChannel']=_0x515202;_0x3f4a34[_0x0a34('0x25')]=_0x3f4a34[_0x0a34('0x26')];Promise[_0x0a34('0x27')]()['then'](function(){if(typeof _0x3f4a34[_0x0a34('0x28')]==='undefined')return null;var _0x26937f='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3f4a34[_0x0a34('0x28')];return db[_0x0a34('0x29')][_0x0a34('0x2a')](_0x26937f,{'type':db[_0x0a34('0x2b')]['QueryTypes']['SELECT'],'raw':!![]});})[_0x0a34('0x1d')](function(_0x57a619){if(_0x57a619){_0x3f4a34[_0x0a34('0x2c')]=_0x57a619[0x0];}if(typeof _0x3f4a34[_0x0a34('0x2d')]===_0x0a34('0x2e'))return;return getAgent(_0x3f4a34[_0x0a34('0x2d')]);})['then'](function(_0x2877b8){if(_0x2877b8){_0x3f4a34['interface']=util[_0x0a34('0x2f')](_0x0a34('0x30'),_0x2877b8[_0x0a34('0x31')]);_0x3f4a34['agent']=_0x2877b8;_0x3f4a34['channel']=_0x515202;return request({'event':'incomingmessage','message':_0x3f4a34});}else{return request({'event':_0x0a34('0x32'),'message':_0x3f4a34});}})[_0x0a34('0x22')](function(_0x3a4aa8){logger[_0x0a34('0x20')](_0x0a34('0x1f'),_0x0a34('0x33'),_0x3a4aa8);});};}function afterCreateOfflineMessage(_0x96dd26){return function(_0x3bef66){_0x3bef66=_0x3bef66[_0x0a34('0x23')]({'plain':!![]});_0x3bef66[_0x0a34('0x24')]=_0x96dd26;_0x3bef66['motionChannel']=_0x96dd26;_0x3bef66[_0x0a34('0x25')]=_0x0a34('0x34');return request({'event':_0x3bef66[_0x0a34('0x25')],'message':_0x3bef66});};}function afterCreate(_0xd04b58,_0x32473f){return function(_0x58e835){_0x58e835=_0x58e835[_0x0a34('0x23')]({'plain':!![]});_0x58e835[_0x0a34('0x24')]=_0xd04b58;_0x58e835[_0x0a34('0x35')]=_0xd04b58;_0x58e835[_0x0a34('0x25')]=_0x0a34('0x36');Promise['resolve']()[_0x0a34('0x1d')](function(){var _0xeb78dd=_0x0a34('0x37')+_0x58e835[_0x0a34('0x28')];return db[_0x0a34('0x29')][_0x0a34('0x2a')](_0xeb78dd,{'type':db[_0x0a34('0x2b')]['QueryTypes'][_0x0a34('0x38')],'raw':!![]});})[_0x0a34('0x1d')](function(_0x38eb9e){if(_0x38eb9e){_0x58e835[_0x0a34('0x2c')]=_0x38eb9e[0x0];}if(typeof _0x58e835[_0x0a34('0x2d')]===_0x0a34('0x2e'))return;return getAgent(_0x58e835[_0x0a34('0x2d')]);})[_0x0a34('0x1d')](function(_0x5547ed){if(_0x5547ed){_0x58e835[_0x0a34('0x39')]=util[_0x0a34('0x2f')](_0x0a34('0x30'),_0x5547ed[_0x0a34('0x31')]);_0x58e835[_0x0a34('0x3a')]=_0x5547ed;}return request({'event':_0x32473f,'message':_0x58e835});})[_0x0a34('0x22')](function(_0x201da0){logger[_0x0a34('0x20')](_0x0a34('0x1f'),_0x0a34('0x3b'),_0x201da0);});};}function afterUpdate(_0x46ed05){return function(_0x30dbf2){var _0x1ade79=_0x30dbf2[_0x0a34('0x3c')]('closed')&&_0x30dbf2['closed'];var _0x578ecd=_0x30dbf2[_0x0a34('0x3c')](_0x0a34('0x3d'));if(_0x1ade79||_0x578ecd){var _0x4b9205=_0x1ade79?_0x0a34('0x9'):_0x0a34('0x3d');var _0x24ad18=_0x30dbf2[_0x0a34('0x23')]({'plain':!![]});_0x24ad18['channel']=_0x46ed05;_0x24ad18['motionChannel']=_0x46ed05;_0x24ad18[_0x0a34('0x25')]=_0x1ade79?_0x0a34('0x3e'):'substatus';var _0x1f0c6d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x24ad18[_0x0a34('0x28')];return db[_0x0a34('0x29')][_0x0a34('0x2a')](_0x1f0c6d,{'type':db[_0x0a34('0x2b')][_0x0a34('0x3f')][_0x0a34('0x38')],'raw':!![]})[_0x0a34('0x1d')](function(_0x125919){if(_0x125919){_0x24ad18[_0x0a34('0x2c')]=_0x125919[0x0];}if(typeof _0x24ad18[_0x0a34('0x2d')]===_0x0a34('0x2e'))return;return getAgent(_0x24ad18[_0x0a34('0x2d')]);})[_0x0a34('0x1d')](function(_0x154121){if(_0x154121){_0x24ad18[_0x0a34('0x39')]=util[_0x0a34('0x2f')]('SIP/%s',_0x154121['name']);_0x24ad18[_0x0a34('0x3a')]=_0x154121;}return request({'event':_0x4b9205,'message':_0x24ad18});})[_0x0a34('0x22')](function(_0x3295f8){logger[_0x0a34('0x20')](_0x0a34('0x1f'),'AfterUpdate',_0x3295f8);});}};}function getAgent(_0x3a914a){return db['User'][_0x0a34('0x40')]({'where':{'id':_0x3a914a},'attributes':['id',_0x0a34('0x31'),_0x0a34('0x41'),'email',_0x0a34('0x42')],'raw':!![]})[_0x0a34('0x1d')](function(_0x28c63c){return _0x28c63c;});}exports[_0x0a34('0x43')]=function(){for(var _0x26b132=0x0;_0x26b132<triggers[_0x0a34('0x44')];_0x26b132+=0x1){if(db[_0x0a34('0x45')](triggers[_0x26b132][_0x0a34('0x46')])){db[triggers[_0x26b132]['model']][_0x0a34('0x47')](triggers[_0x26b132]['event'],triggers[_0x26b132][_0x0a34('0x48')](triggers[_0x26b132][_0x0a34('0x24')][_0x0a34('0x49')](),triggers[_0x26b132]['condition']));}}};
\ No newline at end of file
+var _0x62f9=['code','get','channel','motionChannel','event','direction','resolve','undefined','ContactId','sequelize','query','Sequelize','SELECT','contact','UserId','interface','format','name','incomingmessage','outgoingmessage','catch','AfterCreateMessage','offlineMessage','opened','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SIP/%s','agent','AfterCreate','changed','closed','substatus','AfterUpdate','User','find','default','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','SmsInteraction','Sms','SmsMessage','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','Openchannel','OpenchannelInteraction','request','then','info','Trigger,\x20%s','EventManager','error'];(function(_0x1f8a2a,_0x906b0f){var _0x4dcaa7=function(_0x55098d){while(--_0x55098d){_0x1f8a2a['push'](_0x1f8a2a['shift']());}};_0x4dcaa7(++_0x906b0f);}(_0x62f9,0xc0));var _0x962f=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0x62f9[_0x3a6efd];return _0x487b9a;};'use strict';var util=require(_0x962f('0x0'));var db=require(_0x962f('0x1'))['db'];var jayson=require(_0x962f('0x2'));var logger=require(_0x962f('0x3'))(_0x962f('0x4'));var client=jayson[_0x962f('0x5')][_0x962f('0x6')]({'port':0x232a});var triggers=[{'channel':_0x962f('0x7'),'model':_0x962f('0x8'),'event':_0x962f('0x9'),'condition':_0x962f('0xa'),'callback':afterCreate},{'channel':_0x962f('0x7'),'model':_0x962f('0x8'),'event':_0x962f('0xb'),'condition':_0x962f('0xc'),'callback':afterUpdate},{'channel':_0x962f('0x7'),'model':_0x962f('0xd'),'event':_0x962f('0x9'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x962f('0x7'),'model':'ChatOfflineMessage','event':_0x962f('0x9'),'condition':_0x962f('0xe'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0x962f('0xf'),'event':_0x962f('0x9'),'condition':_0x962f('0xa'),'callback':afterCreate},{'channel':_0x962f('0x10'),'model':_0x962f('0xf'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':'Sms','model':_0x962f('0x11'),'event':_0x962f('0x9'),'condition':_0x962f('0xe'),'callback':afterCreateMessage},{'channel':_0x962f('0x12'),'model':_0x962f('0x13'),'event':_0x962f('0x9'),'condition':_0x962f('0xa'),'callback':afterCreate},{'channel':_0x962f('0x12'),'model':_0x962f('0x13'),'event':_0x962f('0xb'),'condition':_0x962f('0xc'),'callback':afterUpdate},{'channel':_0x962f('0x12'),'model':'WhatsappMessage','event':_0x962f('0x9'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x962f('0x14'),'model':_0x962f('0x15'),'event':_0x962f('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x962f('0x14'),'model':'FaxInteraction','event':'afterUpdate','condition':_0x962f('0xc'),'callback':afterUpdate},{'channel':_0x962f('0x14'),'model':_0x962f('0x16'),'event':_0x962f('0x9'),'condition':_0x962f('0xe'),'callback':afterCreateMessage},{'channel':_0x962f('0x17'),'model':_0x962f('0x18'),'event':_0x962f('0x9'),'condition':_0x962f('0xa'),'callback':afterCreate},{'channel':_0x962f('0x17'),'model':_0x962f('0x18'),'event':_0x962f('0xb'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Mail','model':'MailMessage','event':_0x962f('0x9'),'condition':_0x962f('0xe'),'callback':afterCreateMessage},{'channel':_0x962f('0x19'),'model':_0x962f('0x1a'),'event':_0x962f('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x962f('0x19'),'model':'OpenchannelInteraction','event':_0x962f('0xb'),'condition':_0x962f('0xc'),'callback':afterUpdate},{'channel':_0x962f('0x19'),'model':'OpenchannelMessage','event':'afterCreate','condition':'newmessage','callback':afterCreateMessage}];function request(_0x425817){return client[_0x962f('0x1b')]('EventManager',_0x425817)[_0x962f('0x1c')](function(_0x57f5a6){logger[_0x962f('0x1d')](_0x962f('0x1e'),_0x962f('0x1f'),_0x57f5a6);if(_0x57f5a6[_0x962f('0x20')]){if(_0x57f5a6[_0x962f('0x20')][_0x962f('0x21')]===0x1f4){logger[_0x962f('0x20')](_0x962f('0x1e'),_0x962f('0x1f'),_0x57f5a6['error']);}}})['catch'](function(_0x5aac0d){logger[_0x962f('0x20')](_0x962f('0x1e'),_0x962f('0x1f'),_0x5aac0d);});}function afterCreateMessage(_0x1f3bb9){return function(_0x20e159){_0x20e159=_0x20e159[_0x962f('0x22')]({'plain':!![]});_0x20e159[_0x962f('0x23')]=_0x1f3bb9;_0x20e159[_0x962f('0x24')]=_0x1f3bb9;_0x20e159[_0x962f('0x25')]=_0x20e159[_0x962f('0x26')];Promise[_0x962f('0x27')]()[_0x962f('0x1c')](function(){if(typeof _0x20e159['ContactId']===_0x962f('0x28'))return null;var _0x18ac16='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x20e159[_0x962f('0x29')];return db[_0x962f('0x2a')][_0x962f('0x2b')](_0x18ac16,{'type':db[_0x962f('0x2c')]['QueryTypes'][_0x962f('0x2d')],'raw':!![]});})[_0x962f('0x1c')](function(_0x4dcb37){if(_0x4dcb37){_0x20e159[_0x962f('0x2e')]=_0x4dcb37[0x0];}if(typeof _0x20e159[_0x962f('0x2f')]===_0x962f('0x28'))return;return getAgent(_0x20e159[_0x962f('0x2f')]);})['then'](function(_0x31aa64){if(_0x31aa64){_0x20e159[_0x962f('0x30')]=util[_0x962f('0x31')]('SIP/%s',_0x31aa64[_0x962f('0x32')]);_0x20e159['agent']=_0x31aa64;_0x20e159[_0x962f('0x23')]=_0x1f3bb9;return request({'event':_0x962f('0x33'),'message':_0x20e159});}else{return request({'event':_0x962f('0x34'),'message':_0x20e159});}})[_0x962f('0x35')](function(_0x21baa5){logger[_0x962f('0x20')]('Trigger,\x20%s',_0x962f('0x36'),_0x21baa5);});};}function afterCreateOfflineMessage(_0x3b9396){return function(_0xd335cb){_0xd335cb=_0xd335cb['get']({'plain':!![]});_0xd335cb[_0x962f('0x23')]=_0x3b9396;_0xd335cb[_0x962f('0x24')]=_0x3b9396;_0xd335cb[_0x962f('0x25')]=_0x962f('0x37');return request({'event':_0xd335cb[_0x962f('0x25')],'message':_0xd335cb});};}function afterCreate(_0x148845,_0x1ca5e2){return function(_0x3787fc){_0x3787fc=_0x3787fc[_0x962f('0x22')]({'plain':!![]});_0x3787fc['channel']=_0x148845;_0x3787fc[_0x962f('0x24')]=_0x148845;_0x3787fc[_0x962f('0x25')]=_0x962f('0x38');Promise[_0x962f('0x27')]()['then'](function(){var _0x11db9e=_0x962f('0x39')+_0x3787fc[_0x962f('0x29')];return db[_0x962f('0x2a')][_0x962f('0x2b')](_0x11db9e,{'type':db[_0x962f('0x2c')][_0x962f('0x3a')][_0x962f('0x2d')],'raw':!![]});})['then'](function(_0x384823){if(_0x384823){_0x3787fc[_0x962f('0x2e')]=_0x384823[0x0];}if(typeof _0x3787fc[_0x962f('0x2f')]===_0x962f('0x28'))return;return getAgent(_0x3787fc['UserId']);})[_0x962f('0x1c')](function(_0x3a8ecf){if(_0x3a8ecf){_0x3787fc[_0x962f('0x30')]=util[_0x962f('0x31')](_0x962f('0x3b'),_0x3a8ecf[_0x962f('0x32')]);_0x3787fc[_0x962f('0x3c')]=_0x3a8ecf;}return request({'event':_0x1ca5e2,'message':_0x3787fc});})[_0x962f('0x35')](function(_0x500ed9){logger[_0x962f('0x20')]('Trigger,\x20%s',_0x962f('0x3d'),_0x500ed9);});};}function afterUpdate(_0x43dd89){return function(_0x4f0c55){var _0x25346e=_0x4f0c55[_0x962f('0x3e')]('closed')&&_0x4f0c55[_0x962f('0x3f')];var _0x14118f=_0x4f0c55[_0x962f('0x3e')](_0x962f('0x40'));if(_0x25346e||_0x14118f){var _0x4fed1b=_0x25346e?_0x962f('0xc'):_0x962f('0x40');var _0x49047d=_0x4f0c55[_0x962f('0x22')]({'plain':!![]});_0x49047d[_0x962f('0x23')]=_0x43dd89;_0x49047d[_0x962f('0x24')]=_0x43dd89;_0x49047d['event']=_0x25346e?_0x962f('0x3f'):_0x962f('0x40');var _0x2e7edc='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x49047d[_0x962f('0x29')];return db[_0x962f('0x2a')]['query'](_0x2e7edc,{'type':db['Sequelize']['QueryTypes'][_0x962f('0x2d')],'raw':!![]})[_0x962f('0x1c')](function(_0x7e58d4){if(_0x7e58d4){_0x49047d[_0x962f('0x2e')]=_0x7e58d4[0x0];}if(typeof _0x49047d[_0x962f('0x2f')]===_0x962f('0x28'))return;return getAgent(_0x49047d[_0x962f('0x2f')]);})['then'](function(_0x52ef09){if(_0x52ef09){_0x49047d[_0x962f('0x30')]=util[_0x962f('0x31')](_0x962f('0x3b'),_0x52ef09[_0x962f('0x32')]);_0x49047d[_0x962f('0x3c')]=_0x52ef09;}return request({'event':_0x4fed1b,'message':_0x49047d});})[_0x962f('0x35')](function(_0x29dcb4){logger['error'](_0x962f('0x1e'),_0x962f('0x41'),_0x29dcb4);});}};}function getAgent(_0x3bc50f){return db[_0x962f('0x42')][_0x962f('0x43')]({'where':{'id':_0x3bc50f},'attributes':['id',_0x962f('0x32'),'fullname','email','internal'],'raw':!![]})['then'](function(_0x11a746){return _0x11a746;});}exports[_0x962f('0x44')]=function(){for(var _0x9c5a0=0x0;_0x9c5a0<triggers['length'];_0x9c5a0+=0x1){if(db[_0x962f('0x45')](triggers[_0x9c5a0][_0x962f('0x46')])){db[triggers[_0x9c5a0][_0x962f('0x46')]][_0x962f('0x47')](triggers[_0x9c5a0][_0x962f('0x25')],triggers[_0x9c5a0][_0x962f('0x48')](triggers[_0x9c5a0][_0x962f('0x23')][_0x962f('0x49')](),triggers[_0x9c5a0][_0x962f('0x4a')]));}}};
\ No newline at end of file
index d850416..a8a44e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec5f=['includes','clearBlockUser','isUndefined','updateAttributes','getLicense','role','User','agent','then','agents','catch','lodash','bluebird','../mysqldb','./license/util','mail','chat','fax','sms','openchannel','getChannels','toLowerCase'];(function(_0x39d085,_0x288b3d){var _0x170f80=function(_0xafb691){while(--_0xafb691){_0x39d085['push'](_0x39d085['shift']());}};_0x170f80(++_0x288b3d);}(_0xec5f,0x8f));var _0xfec5=function(_0x8c9b09,_0xaf95bc){_0x8c9b09=_0x8c9b09-0x0;var _0xb848b4=_0xec5f[_0x8c9b09];return _0xb848b4;};'use strict';var _=require(_0xfec5('0x0'));var BPromise=require(_0xfec5('0x1'));var db=require(_0xfec5('0x2'))['db'];var util=require(_0xfec5('0x3'));var channels=['voice',_0xfec5('0x4'),_0xfec5('0x5'),_0xfec5('0x6'),_0xfec5('0x7'),'whatsapp',_0xfec5('0x8')];exports[_0xfec5('0x9')]=function(){return channels;};exports['isValidChannel']=function(_0x4d2da0){_0x4d2da0=_0x4d2da0[_0xfec5('0xa')]();return _[_0xfec5('0xb')](channels,_0x4d2da0);};exports[_0xfec5('0xc')]=function(_0x533e79,_0x7eced5,_0x9193d6,_0x2b15e1){var _0x4848b0={'loginAttempts':_0x7eced5,'blocked':_0x9193d6};if(!_[_0xfec5('0xd')](_0x2b15e1)){_0x4848b0['blockedAt']=_0x2b15e1;}return _0x533e79[_0xfec5('0xe')](_0x4848b0);};exports[_0xfec5('0xf')]=function(_0x1b65ba){return new BPromise(function(_0x19b30b,_0x3b0289){var _0x3b3090=0x0;if(_0x1b65ba[_0xfec5('0x10')]!=='agent'){_0x19b30b(_0x1b65ba);}db[_0xfec5('0x11')]['count']({'where':{'role':_0xfec5('0x12'),'online':!![],'id':{'$ne':_0x1b65ba['id']}}})[_0xfec5('0x13')](function(_0x5a17bb){_0x3b3090=_0x5a17bb;return util[_0xfec5('0xf')]();})[_0xfec5('0x13')](function(_0x531eaa){if(_0x531eaa&&_0x531eaa[_0xfec5('0x14')]&&_0x3b3090>=_0x531eaa[_0xfec5('0x14')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x19b30b(_0x1b65ba);})[_0xfec5('0x15')](function(_0x49e82f){_0x3b0289(_0x49e82f);});});};
\ No newline at end of file
+var _0x3fce=['then','agents','catch','lodash','bluebird','../mysqldb','./license/util','mail','chat','sms','whatsapp','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','agent','User','count'];(function(_0x179773,_0x296780){var _0x13efcb=function(_0x590067){while(--_0x590067){_0x179773['push'](_0x179773['shift']());}};_0x13efcb(++_0x296780);}(_0x3fce,0x12e));var _0xe3fc=function(_0x466af7,_0x2f7551){_0x466af7=_0x466af7-0x0;var _0x348c96=_0x3fce[_0x466af7];return _0x348c96;};'use strict';var _=require(_0xe3fc('0x0'));var BPromise=require(_0xe3fc('0x1'));var db=require(_0xe3fc('0x2'))['db'];var util=require(_0xe3fc('0x3'));var channels=['voice',_0xe3fc('0x4'),_0xe3fc('0x5'),'fax',_0xe3fc('0x6'),_0xe3fc('0x7'),'openchannel'];exports[_0xe3fc('0x8')]=function(){return channels;};exports[_0xe3fc('0x9')]=function(_0x4fb2e5){_0x4fb2e5=_0x4fb2e5[_0xe3fc('0xa')]();return _[_0xe3fc('0xb')](channels,_0x4fb2e5);};exports[_0xe3fc('0xc')]=function(_0x167d62,_0x57e9ae,_0x22009e,_0x37b4fa){var _0xde8d69={'loginAttempts':_0x57e9ae,'blocked':_0x22009e};if(!_[_0xe3fc('0xd')](_0x37b4fa)){_0xde8d69[_0xe3fc('0xe')]=_0x37b4fa;}return _0x167d62[_0xe3fc('0xf')](_0xde8d69);};exports[_0xe3fc('0x10')]=function(_0x42d29f){return new BPromise(function(_0x31397b,_0x2e467d){var _0x1cceb0=0x0;if(_0x42d29f['role']!==_0xe3fc('0x11')){_0x31397b(_0x42d29f);}db[_0xe3fc('0x12')][_0xe3fc('0x13')]({'where':{'role':_0xe3fc('0x11'),'online':!![],'id':{'$ne':_0x42d29f['id']}}})[_0xe3fc('0x14')](function(_0x4d478d){_0x1cceb0=_0x4d478d;return util['getLicense']();})[_0xe3fc('0x14')](function(_0x2bafca){if(_0x2bafca&&_0x2bafca[_0xe3fc('0x15')]&&_0x1cceb0>=_0x2bafca[_0xe3fc('0x15')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x31397b(_0x42d29f);})[_0xe3fc('0x16')](function(_0x1b82a9){_0x2e467d(_0x1b82a9);});});};
\ No newline at end of file
index 73b27e2..c6b5202 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['OutOfInterval','error','status','send','exports','util','api','message','Internal\x20Server\x20Error','name','Error','Bad\x20Request','Not\x20Found','inherits','Forbidden'];(function(_0x16f026,_0x2baae7){var _0x380606=function(_0x1f5ed2){while(--_0x1f5ed2){_0x16f026['push'](_0x16f026['shift']());}};_0x380606(++_0x2baae7);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x2bf5bd,_0x120787){_0x2bf5bd=_0x2bf5bd-0x0;var _0xc810c0=_0xb4e6[_0x2bf5bd];return _0xc810c0;};'use strict';var util=require(_0x6b4e('0x0'));var logger=require('../config/logger')(_0x6b4e('0x1'));var APIError=function(_0x1afd20,_0x365912){this[_0x6b4e('0x2')]=_0x1afd20||_0x6b4e('0x3');this[_0x6b4e('0x4')]=_0x365912||_0x6b4e('0x5');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0x40da90){this[_0x6b4e('0x2')]=_0x40da90||_0x6b4e('0x6');this['name']=_0x6b4e('0x6');util['inherits'](APIBadRequestError,APIError);};var APINotFoundError=function(_0x4f00be){this[_0x6b4e('0x2')]=_0x4f00be||'Entity\x20not\x20found';this['name']=_0x6b4e('0x7');util[_0x6b4e('0x8')](APINotFoundError,APIError);};function getStatusCode(_0x1e3bf6){switch(_0x1e3bf6){case _0x6b4e('0x6'):return 0x190;case _0x6b4e('0x9'),_0x6b4e('0xa'):return 0x193;case _0x6b4e('0x7'):return 0x194;default:return 0x1f4;}}function handleError(_0x49c734){return function(_0x39b4ec){logger[_0x6b4e('0xb')](_0x39b4ec['stack']);var _0x2a4d0f=getStatusCode(_0x39b4ec[_0x6b4e('0x4')]);if(_0x39b4ec[_0x6b4e('0x4')])delete _0x39b4ec[_0x6b4e('0x4')];return _0x49c734[_0x6b4e('0xc')](_0x2a4d0f)[_0x6b4e('0xd')](_0x39b4ec);};}module[_0x6b4e('0xe')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x153f=['inherits','Forbidden','OutOfInterval','error','status','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','Error','Bad\x20Request','name','Entity\x20not\x20found','Not\x20Found'];(function(_0x3b1c36,_0x5d6885){var _0x542038=function(_0x284bcb){while(--_0x284bcb){_0x3b1c36['push'](_0x3b1c36['shift']());}};_0x542038(++_0x5d6885);}(_0x153f,0x15b));var _0xf153=function(_0x1c6f0d,_0x254eb0){_0x1c6f0d=_0x1c6f0d-0x0;var _0x512118=_0x153f[_0x1c6f0d];return _0x512118;};'use strict';var util=require(_0xf153('0x0'));var logger=require(_0xf153('0x1'))(_0xf153('0x2'));var APIError=function(_0x44cea3,_0x2afb9a){this[_0xf153('0x3')]=_0x44cea3||_0xf153('0x4');this['name']=_0x2afb9a||_0xf153('0x5');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0x1f9ead){this[_0xf153('0x3')]=_0x1f9ead||_0xf153('0x6');this[_0xf153('0x7')]=_0xf153('0x6');util['inherits'](APIBadRequestError,APIError);};var APINotFoundError=function(_0x17ba96){this[_0xf153('0x3')]=_0x17ba96||_0xf153('0x8');this[_0xf153('0x7')]=_0xf153('0x9');util[_0xf153('0xa')](APINotFoundError,APIError);};function getStatusCode(_0x44845c){switch(_0x44845c){case _0xf153('0x6'):return 0x190;case _0xf153('0xb'),_0xf153('0xc'):return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function handleError(_0x2b76eb){return function(_0x1c8de7){logger[_0xf153('0xd')](_0x1c8de7['stack']);var _0x3a8838=getStatusCode(_0x1c8de7[_0xf153('0x7')]);if(_0x1c8de7[_0xf153('0x7')])delete _0x1c8de7[_0xf153('0x7')];return _0x2b76eb[_0xf153('0xe')](_0x3a8838)[_0xf153('0xf')](_0x1c8de7);};}module[_0xf153('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index a914ccd..bfb364e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f60=['render','json','send','exports','404','status'];(function(_0x48d7aa,_0x52349c){var _0x138fc6=function(_0x273dd9){while(--_0x273dd9){_0x48d7aa['push'](_0x48d7aa['shift']());}};_0x138fc6(++_0x52349c);}(_0x5f60,0xed));var _0x05f6=function(_0x23b1c2,_0x4e40ea){_0x23b1c2=_0x23b1c2-0x0;var _0x254a78=_0x5f60[_0x23b1c2];return _0x254a78;};'use strict';module[_0x05f6('0x0')][0x194]=function pageNotFound(_0x560cee,_0x34825b){var _0x1d5b60=_0x05f6('0x1');var _0x7aab6=0x194;var _0x2066f3={'status':_0x7aab6};_0x34825b[_0x05f6('0x2')](_0x2066f3[_0x05f6('0x2')]);_0x34825b[_0x05f6('0x3')](_0x1d5b60,{},function(_0x1b2ac5,_0x5d4f6b){if(_0x1b2ac5){return _0x34825b['status'](_0x2066f3[_0x05f6('0x2')])[_0x05f6('0x4')](_0x2066f3);}_0x34825b[_0x05f6('0x5')](_0x5d4f6b);});};
\ No newline at end of file
+var _0x312f=['send','exports','404','status','render','json'];(function(_0x4e35e5,_0x41ff30){var _0x1778e4=function(_0x5e900c){while(--_0x5e900c){_0x4e35e5['push'](_0x4e35e5['shift']());}};_0x1778e4(++_0x41ff30);}(_0x312f,0x1ab));var _0xf312=function(_0x1dadd8,_0x41f173){_0x1dadd8=_0x1dadd8-0x0;var _0x2ff460=_0x312f[_0x1dadd8];return _0x2ff460;};'use strict';module[_0xf312('0x0')][0x194]=function pageNotFound(_0x1e8297,_0x1a3ca6){var _0x2b3a20=_0xf312('0x1');var _0x4d6a6f=0x194;var _0x564bb2={'status':_0x4d6a6f};_0x1a3ca6[_0xf312('0x2')](_0x564bb2['status']);_0x1a3ca6[_0xf312('0x3')](_0x2b3a20,{},function(_0x259d35,_0x276bf3){if(_0x259d35){return _0x1a3ca6[_0xf312('0x2')](_0x564bb2[_0xf312('0x2')])[_0xf312('0x4')](_0x564bb2);}_0x1a3ca6[_0xf312('0x5')](_0x276bf3);});};
\ No newline at end of file
index 7fc623e..4096506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f0=['CmCustomField','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','DeskConfiguration','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoField','../api/intZohoField/intZohoField.model','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','Network','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/cmList/cmList.model','VoicePrefix','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','UserProfileResource','../api/userProfileResource/userProfileResource.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','CloudProvider','../api/cloudProvider/cloudProvider.model','../api/teamVoiceQueue/teamVoiceQueue.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','userSetting','hasMany','VoiceQueuesRt','VoiceExtension','Extensions','OpenchannelInteractions','ChatInteractions','SmsInteraction','SmsInteractions','MailInteractions','WhatsappInteractions','UserNotification','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','CmList','cm_user_has_lists','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoicePrefixes','UserVoicePrefix','MailQueues','ChatQueues','FaxQueues','UserFaxQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','ChatWebsites','FaxAccount','MailAccount','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperBlacks','JscriptySessions','Trunk','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Agents','Teams','TeamVoiceQueue','BlackLists','voice_queues_has_cm_blacklists','mailboxuser','mailbox','QueueCalls','uniqueid','ContactId','MailAccountId','CloudProviderId','restrict','Imap','Answers','Interactions','List','ListId','TemplateId','team_has_mail_queues','MailInteractionId','Account','Contact','Owner','Tag','mail_interaction_has_tags','ThroughTags','Users','MailMessage','Attachment','Attachments','Interaction','ChatOfflineMessageId','MailQueue','TagId','Items','Dispositions','FaxAccountId','Exntensions','Messages','FaxInteractionId','fax_interaction_has_tags','Tags','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelApplication','OpenchannelInteractionId','openchannel_interaction_has_tags','OpenchannelQueueId','ChatWebsiteId','ProactiveActions','ChatMessage','user_has_chat_websites','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','AttachmentId','team_has_chat_queues','Contacts','CompanyId','CmContactHasItem','Phones','HopperHistories','CmCompany','Company','cm_user_has_contacts','cm_contact_has_tags','AdditionalPhones','CampaignId','OwnerId','Campaign','Condition','All','OneAll','Any','OneAny','Automation','Actions','AutomationId','ParentId','Intervals','MailApplications','CustomReportId','Mohs','whatsapp_interaction_has_tags','ItemType','ItemTypeId','Hopper','CmHopperId','CmContactId','AllConditions','AllCondition','TriggerAllId','AnyCondition','TriggerAnyId','TriggerId','AnalyticCustomReport','Fields','DefaultReportId','AnalyticMetric','MetricId','Configurations','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','AccountId','Subject','Description','Field','VariableId','SugarcrmAccount','SugarcrmConfiguration','DeskField','int_desk_configuration_has_tags','ZohoConfiguration','ZendeskAccount','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','VtigerField','FreshsalesAccount','FromId','ToId','SessionId','JscriptyProject','ProjectId','user_has_teams','VoiceQueues','team_has_fax_queues','SmsQueues','team_has_openchannel_queues','team_has_whatsapp_queues','TeamVoicePrefix','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','FromAccount','ToFaxQueueId','ToFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','FromSmsAccountId','HopperHistory','Queues','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToQueueId','WhatsappQueueId','user','Smtp','exports','../config/environment','sequelize','lodash','jstz','defaultsDeep','motion2','xcall','127.0.0.1','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','xC@LL1234','mysql','database','username','password','options','User','../api/user/user.model','VoiceChanSpy','import','VoiceContext','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','../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','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model'];(function(_0x1a90e9,_0x17a706){var _0x10abba=function(_0x5418d2){while(--_0x5418d2){_0x1a90e9['push'](_0x1a90e9['shift']());}};_0x10abba(++_0x17a706);}(_0xa5f0,0x182));var _0x0a5f=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0xa5f0[_0x172747];return _0x509692;};'use strict';var config=require(_0x0a5f('0x0'));var Sequelize=require(_0x0a5f('0x1'));var _=require(_0x0a5f('0x2'));var jstz=require(_0x0a5f('0x3'));var timezone=jstz['determine']();config[_0x0a5f('0x1')]=_[_0x0a5f('0x4')](config[_0x0a5f('0x1')],{'database':_0x0a5f('0x5'),'username':_0x0a5f('0x6'),'password':'xC@LL1234','options':{'host':_0x0a5f('0x7'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a5f('0x8')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x0a5f('0x9'),'collate':_0x0a5f('0xa')}}});config['sequelizeHistory']=_[_0x0a5f('0x4')](config[_0x0a5f('0xb')],{'database':_0x0a5f('0x5'),'username':_0x0a5f('0x6'),'password':_0x0a5f('0xc'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x0a5f('0xd'),'dialectOptions':{'charset':_0x0a5f('0x8')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x0a5f('0x9'),'collate':_0x0a5f('0xa')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x0a5f('0x1')][_0x0a5f('0xe')],config[_0x0a5f('0x1')][_0x0a5f('0xf')],config[_0x0a5f('0x1')][_0x0a5f('0x10')],config[_0x0a5f('0x1')][_0x0a5f('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory']['database'],config[_0x0a5f('0xb')]['username'],config[_0x0a5f('0xb')][_0x0a5f('0x10')],config[_0x0a5f('0xb')][_0x0a5f('0x11')])};db[_0x0a5f('0x12')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x13'));db[_0x0a5f('0x14')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/voiceChanSpy/voiceChanSpy.model');db[_0x0a5f('0x16')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x17'));db['VoiceExtension']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x18'));db[_0x0a5f('0x19')]=db['sequelize']['import'](_0x0a5f('0x1a'));db[_0x0a5f('0x1b')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x1c'));db[_0x0a5f('0x1d')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x1e'));db[_0x0a5f('0x1f')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x20'));db[_0x0a5f('0x21')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x22'));db[_0x0a5f('0x23')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x24'));db[_0x0a5f('0x25')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/voiceCallReport/voiceCallReport.model');db[_0x0a5f('0x26')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x27'));db[_0x0a5f('0x28')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0x0a5f('0x29')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x2a'));db[_0x0a5f('0x2b')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x2c'));db['Trunk']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x2d'));db[_0x0a5f('0x2e')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x2f'));db[_0x0a5f('0x30')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x31'));db[_0x0a5f('0x32')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x0a5f('0x33')]=db[_0x0a5f('0x1')]['import']('../api/userChatQueue/userChatQueue.model');db[_0x0a5f('0x34')]=db['sequelize']['import'](_0x0a5f('0x35'));db['UserFaxQueue']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/userFaxQueue/userFaxQueue.model');db[_0x0a5f('0x36')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x37'));db['UserOpenchannelQueue']=db['sequelize']['import'](_0x0a5f('0x38'));db[_0x0a5f('0x39')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x3a'));db[_0x0a5f('0x3b')]=db['sequelize'][_0x0a5f('0x15')]('../api/mailServerIn/mailServerIn.model');db[_0x0a5f('0x3c')]=db['sequelize']['import'](_0x0a5f('0x3d'));db['MailAccount']=db['sequelize']['import'](_0x0a5f('0x3e'));db['MailQueue']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/mailQueue/mailQueue.model');db['MailSubstatus']=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x3f'));db[_0x0a5f('0x40')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x41'));db['MailMessage']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x42'));db[_0x0a5f('0x43')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x44'));db[_0x0a5f('0x45')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x46'));db[_0x0a5f('0x47')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x48'));db[_0x0a5f('0x49')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/dashboardItem/dashboardItem.model');db['FaxAccount']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x4a'));db[_0x0a5f('0x4b')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x4c'));db[_0x0a5f('0x4d')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x4e'));db[_0x0a5f('0x4f')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x50'));db[_0x0a5f('0x51')]=db['sequelize'][_0x0a5f('0x15')]('../api/faxQueue/faxQueue.model');db[_0x0a5f('0x52')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/faxQueueReport/faxQueueReport.model');db['SmsAccount']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x53'));db[_0x0a5f('0x54')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x55'));db['SmsInteraction']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x56'));db[_0x0a5f('0x57')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x58'));db[_0x0a5f('0x59')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x5a'));db[_0x0a5f('0x5b')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x5c'));db['OpenchannelApplication']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x5d'));db[_0x0a5f('0x5e')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x5f'));db['OpenchannelMessage']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x60'));db[_0x0a5f('0x61')]=db['sequelize']['import']('../api/openchannelQueue/openchannelQueue.model');db[_0x0a5f('0x62')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x63'));db[_0x0a5f('0x64')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a5f('0x65')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x66'));db[_0x0a5f('0x67')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x68'));db['ChatMessage']=db[_0x0a5f('0x1')]['import']('../api/chatMessage/chatMessage.model');db[_0x0a5f('0x69')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x6a'));db[_0x0a5f('0x6b')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x6c'));db[_0x0a5f('0x6d')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x6e'));db[_0x0a5f('0x6f')]=db['sequelize']['import'](_0x0a5f('0x70'));db['CmCompany']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x71'));db[_0x0a5f('0x72')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x73'));db[_0x0a5f('0x74')]=db['sequelize']['import'](_0x0a5f('0x75'));db[_0x0a5f('0x76')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0x0a5f('0x77')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x78'));db[_0x0a5f('0x79')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x7a'));db[_0x0a5f('0x7b')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x7c'));db[_0x0a5f('0x7d')]=db[_0x0a5f('0x1')]['import']('../api/cmCustomField/cmCustomField.model');db['Action']=db[_0x0a5f('0x1')]['import']('../api/action/action.model');db['Automation']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/automation/automation.model');db[_0x0a5f('0x7e')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x7f'));db[_0x0a5f('0x80')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x81'));db['Condition']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/condition/condition.model');db[_0x0a5f('0x82')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0x83'));db[_0x0a5f('0x84')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x85'));db[_0x0a5f('0x86')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x87'));db[_0x0a5f('0x88')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x89'));db[_0x0a5f('0x8a')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x8b'));db[_0x0a5f('0x8c')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/sound/sound.model');db['Tag']=db['sequelize'][_0x0a5f('0x15')]('../api/tag/tag.model');db[_0x0a5f('0x8d')]=db['sequelize']['import'](_0x0a5f('0x8e'));db['CmContactHasItem']=db['sequelize']['import'](_0x0a5f('0x8f'));db[_0x0a5f('0x90')]=db[_0x0a5f('0x1')]['import']('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a5f('0x91')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x92'));db[_0x0a5f('0x93')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/trigger/trigger.model');db[_0x0a5f('0x94')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x95'));db[_0x0a5f('0x96')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/integration/integration.model');db['IntegrationReport']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/integrationReport/integrationReport.model');db['AnalyticCustomReport']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x97'));db[_0x0a5f('0x98')]=db['sequelize'][_0x0a5f('0x15')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x0a5f('0x99')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/analyticExtractedReport/analyticExtractedReport.model');db['AnalyticMetric']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x9a'));db[_0x0a5f('0x9b')]=db['sequelize']['import']('../api/analyticFieldReport/analyticFieldReport.model');db['AnalyticTreeReport']=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0x9c'));db[_0x0a5f('0x9d')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x9e'));db[_0x0a5f('0x9f')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xa0'));db[_0x0a5f('0xa1')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0xa2'));db['SugarcrmAccount']=db[_0x0a5f('0x1')]['import']('../api/intSugarcrmAccount/intSugarcrmAccount.model');db['SugarcrmConfiguration']=db['sequelize']['import'](_0x0a5f('0xa3'));db[_0x0a5f('0xa4')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0xa5'));db[_0x0a5f('0xa6')]=db['sequelize']['import']('../api/intDeskAccount/intDeskAccount.model');db[_0x0a5f('0xa7')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/intDeskConfiguration/intDeskConfiguration.model');db['DeskField']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/intDeskField/intDeskField.model');db[_0x0a5f('0xa8')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xa9'));db['ZohoConfiguration']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0x0a5f('0xaa')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0xab'));db['ZendeskAccount']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xac'));db[_0x0a5f('0xad')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xae'));db[_0x0a5f('0xaf')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xb0'));db[_0x0a5f('0xb1')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xb2'));db[_0x0a5f('0xb3')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0xb4'));db[_0x0a5f('0xb5')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xb6'));db['VtigerAccount']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xb7'));db[_0x0a5f('0xb8')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xb9'));db['VtigerField']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xba'));db[_0x0a5f('0xbb')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0xbc'));db[_0x0a5f('0xbd')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xbe'));db[_0x0a5f('0xbf')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xc0'));db[_0x0a5f('0xc1')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xc2'));db[_0x0a5f('0xc3')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0x0a5f('0xc4')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xc5'));db['FreshsalesAccount']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xc6'));db[_0x0a5f('0xc7')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0xc8'));db[_0x0a5f('0xc9')]=db['sequelize'][_0x0a5f('0x15')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x0a5f('0x96')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/integration/integration.model');db[_0x0a5f('0xca')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/network/network.model');db[_0x0a5f('0xcb')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0xcc'));db[_0x0a5f('0xcd')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xce'));db[_0x0a5f('0xcf')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xd0'));db[_0x0a5f('0xd1')]=db['sequelize']['import'](_0x0a5f('0xd2'));db[_0x0a5f('0xd3')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xd4'));db[_0x0a5f('0xd5')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xd6'));db['SquareReport']=db[_0x0a5f('0x1')]['import'](_0x0a5f('0xd7'));db['SquareDetailsReport']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xd8'));db['JscriptyProject']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/jscriptyProject/jscriptyProject.model');db[_0x0a5f('0xd9')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xda'));db[_0x0a5f('0xdb')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xdc'));db[_0x0a5f('0xdd')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xde'));db['SquareRecording']=db[_0x0a5f('0x1')]['import']('../api/squareRecording/squareRecording.model');db[_0x0a5f('0xdf')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0xe0'));db[_0x0a5f('0xe1')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xe2'));db[_0x0a5f('0xe3')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xe4'));db['Campaign']=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0xe5'));db[_0x0a5f('0xe6')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/migration/migration.model');db['Attachment']=db[_0x0a5f('0x1')]['import'](_0x0a5f('0xe7'));db[_0x0a5f('0xe8')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xe9'));db[_0x0a5f('0xea')]=db[_0x0a5f('0x1')]['import'](_0x0a5f('0xeb'));db[_0x0a5f('0xec')]=db['sequelize'][_0x0a5f('0x15')]('../api/chatTransferReport/chatTransferReport.model');db[_0x0a5f('0xed')]=db['sequelize']['import'](_0x0a5f('0xee'));db['OpenchannelTransferReport']=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x0a5f('0xef')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/smsTransferReport/smsTransferReport.model');db['CmList']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xf0'));db[_0x0a5f('0xf1')]=db['sequelize']['import']('../api/voicePrefix/voicePrefix.model');db[_0x0a5f('0xf2')]=db['sequelize'][_0x0a5f('0x15')](_0x0a5f('0xf3'));db[_0x0a5f('0xf4')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/userProfileSection/userProfileSection.model');db[_0x0a5f('0xf5')]=db['sequelize']['import'](_0x0a5f('0xf6'));db['UserNotification']=db[_0x0a5f('0x1')]['import']('../api/userNotification/userNotification.model');db[_0x0a5f('0xf7')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xf8'));db[_0x0a5f('0xf9')]=db['sequelize']['import']('../api/whatsappApplication/whatsappApplication.model');db[_0x0a5f('0xfa')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xfb'));db[_0x0a5f('0xfc')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xfd'));db[_0x0a5f('0xfe')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0xff'));db[_0x0a5f('0x100')]=db['sequelize'][_0x0a5f('0x15')]('../api/whatsappQueue/whatsappQueue.model');db[_0x0a5f('0x101')]=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x102'));db['TeamVoiceQueue']=db[_0x0a5f('0x1')][_0x0a5f('0x15')](_0x0a5f('0x103'));db['TeamVoicePrefix']=db[_0x0a5f('0x1')]['import']('../api/teamVoicePrefix/teamVoicePrefix.model');db['UserVoicePrefix']=db['sequelize'][_0x0a5f('0x15')]('../api/userVoicePrefix/userVoicePrefix.model');db[_0x0a5f('0x104')]=db['sequelize']['import'](_0x0a5f('0x105'));db[_0x0a5f('0x12')][_0x0a5f('0x106')](db[_0x0a5f('0x21')],{'as':'VoiceMail','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x12')][_0x0a5f('0x106')](db[_0x0a5f('0x104')],{'as':_0x0a5f('0x109'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x12')][_0x0a5f('0x10a')](db[_0x0a5f('0x1d')],{'as':'Recordings','foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x12')][_0x0a5f('0x10a')](db['UserVoiceQueueRt'],{'as':_0x0a5f('0x10b'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x12')]['hasMany'](db[_0x0a5f('0x10c')],{'as':_0x0a5f('0x10d'),'onDelete':'cascade','hooks':!![]});db['User'][_0x0a5f('0x10a')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x12')]['hasMany'](db[_0x0a5f('0x79')],{'as':'HopperHistory','foreignKey':_0x0a5f('0x108')});db['User'][_0x0a5f('0x10a')](db[_0x0a5f('0x7b')],{'as':_0x0a5f('0x7b'),'foreignKey':'UserId'});db[_0x0a5f('0x12')]['hasMany'](db[_0x0a5f('0x5e')],{'as':_0x0a5f('0x10e'),'foreignKey':'UserId'});db[_0x0a5f('0x12')]['hasMany'](db[_0x0a5f('0x67')],{'as':_0x0a5f('0x10f'),'foreignKey':'UserId'});db[_0x0a5f('0x12')][_0x0a5f('0x10a')](db[_0x0a5f('0x110')],{'as':_0x0a5f('0x111'),'foreignKey':'UserId'});db[_0x0a5f('0x12')]['hasMany'](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':_0x0a5f('0x108')});db['User'][_0x0a5f('0x10a')](db[_0x0a5f('0x40')],{'as':_0x0a5f('0x112'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x12')][_0x0a5f('0x10a')](db[_0x0a5f('0xfa')],{'as':_0x0a5f('0x113'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x12')][_0x0a5f('0x10a')](db[_0x0a5f('0x114')],{'as':_0x0a5f('0x115'),'foreignKey':_0x0a5f('0x116')});db[_0x0a5f('0x12')][_0x0a5f('0x117')](db['UserProfile'],{'as':_0x0a5f('0xf2'),'foreignKey':_0x0a5f('0x118')});db['User'][_0x0a5f('0x119')](db[_0x0a5f('0x6d')],{'as':_0x0a5f('0x11a'),'through':_0x0a5f('0x11b')});db[_0x0a5f('0x12')]['belongsToMany'](db['CmContact'],{'as':'Contacts','through':'cm_user_has_contacts'});db['User'][_0x0a5f('0x119')](db[_0x0a5f('0x11c')],{'as':'Lists','through':_0x0a5f('0x11d')});db['User'][_0x0a5f('0x119')](db[_0x0a5f('0xe1')],{'through':'user_has_teams'});db[_0x0a5f('0x12')]['belongsToMany'](db[_0x0a5f('0x40')],{'as':'MailInteractions','through':_0x0a5f('0x11e')});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0x67')],{'as':_0x0a5f('0x10f'),'through':'user_has_chat_interactions'});db[_0x0a5f('0x12')]['belongsToMany'](db['FaxInteraction'],{'as':_0x0a5f('0x11f'),'through':_0x0a5f('0x120')});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0x110')],{'as':_0x0a5f('0x111'),'through':_0x0a5f('0x121')});db['User'][_0x0a5f('0x119')](db[_0x0a5f('0x5e')],{'as':'OpenchannelInteractions','through':_0x0a5f('0x122')});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0xfa')],{'as':_0x0a5f('0x113'),'through':_0x0a5f('0x123')});db[_0x0a5f('0x12')]['belongsToMany'](db[_0x0a5f('0x1b')],{'as':'VoiceQueues','through':_0x0a5f('0x32'),'required':![]});db[_0x0a5f('0x12')]['belongsToMany'](db[_0x0a5f('0xf1')],{'as':_0x0a5f('0x124'),'through':_0x0a5f('0x125'),'required':![]});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db['MailQueue'],{'as':_0x0a5f('0x126'),'through':_0x0a5f('0x34'),'required':![]});db[_0x0a5f('0x12')]['belongsToMany'](db['ChatQueue'],{'as':_0x0a5f('0x127'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0x0a5f('0x12')]['belongsToMany'](db[_0x0a5f('0x51')],{'as':_0x0a5f('0x128'),'through':_0x0a5f('0x129'),'required':![]});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0x59')],{'as':'SmsQueues','through':'UserSmsQueue','required':![]});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0x61')],{'as':_0x0a5f('0x12a'),'through':_0x0a5f('0x12b'),'required':![]});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0x100')],{'as':_0x0a5f('0x12c'),'through':_0x0a5f('0x39'),'required':![]});db['User']['belongsToMany'](db[_0x0a5f('0x11c')],{'through':_0x0a5f('0x11d')});db['User']['belongsToMany'](db[_0x0a5f('0x62')],{'as':_0x0a5f('0x12d'),'through':'user_has_chat_websites'});db[_0x0a5f('0x12')]['belongsToMany'](db[_0x0a5f('0x12e')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0x12f')],{'as':'MailAccounts','through':_0x0a5f('0x130')});db[_0x0a5f('0x12')]['belongsToMany'](db[_0x0a5f('0x5b')],{'as':_0x0a5f('0x131'),'through':_0x0a5f('0x132')});db[_0x0a5f('0x12')][_0x0a5f('0x119')](db[_0x0a5f('0x133')],{'as':_0x0a5f('0x134'),'through':_0x0a5f('0x135')});db[_0x0a5f('0x12')]['belongsToMany'](db[_0x0a5f('0xf7')],{'as':_0x0a5f('0x136'),'through':_0x0a5f('0x137')});db[_0x0a5f('0x14')][_0x0a5f('0x10a')](db[_0x0a5f('0x10c')],{'as':_0x0a5f('0x138'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x139')});db['VoiceContext'][_0x0a5f('0x10a')](db[_0x0a5f('0x10c')],{'onDelete':_0x0a5f('0x107')});db['VoiceExtension']['hasMany'](db[_0x0a5f('0x10c')],{'as':_0x0a5f('0x13a'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x19')][_0x0a5f('0x119')](db[_0x0a5f('0x8c')],{'as':_0x0a5f('0x13b'),'through':_0x0a5f('0x13c')});db[_0x0a5f('0x1b')][_0x0a5f('0x10a')](db[_0x0a5f('0x30')],{'as':_0x0a5f('0x13d'),'foreignKey':_0x0a5f('0x13e')});db[_0x0a5f('0x1b')]['hasMany'](db['CmHopper'],{'as':_0x0a5f('0x13f'),'foreignKey':_0x0a5f('0x13e')});db[_0x0a5f('0x1b')][_0x0a5f('0x10a')](db[_0x0a5f('0x77')],{'as':_0x0a5f('0x140'),'foreignKey':_0x0a5f('0x13e')});db[_0x0a5f('0x1b')]['hasMany'](db[_0x0a5f('0x79')],{'as':'HopperHistories','foreignKey':_0x0a5f('0x13e')});db[_0x0a5f('0x1b')][_0x0a5f('0x10a')](db[_0x0a5f('0x7b')],{'as':_0x0a5f('0x7b'),'foreignKey':_0x0a5f('0x13e')});db[_0x0a5f('0x1b')][_0x0a5f('0x10a')](db['CmHopperBlack'],{'as':_0x0a5f('0x141'),'foreignKey':_0x0a5f('0x13e')});db[_0x0a5f('0x1b')][_0x0a5f('0x10a')](db[_0x0a5f('0xd3')],{'as':_0x0a5f('0x142'),'foreignKey':_0x0a5f('0x13e')});db[_0x0a5f('0x1b')]['belongsTo'](db[_0x0a5f('0x143')],{'as':_0x0a5f('0x143'),'foreignKey':_0x0a5f('0x144')});db[_0x0a5f('0x1b')][_0x0a5f('0x117')](db[_0x0a5f('0x143')],{'as':_0x0a5f('0x145'),'foreignKey':_0x0a5f('0x146')});db[_0x0a5f('0x1b')]['belongsTo'](db[_0x0a5f('0x82')],{'as':_0x0a5f('0x82'),'foreignKey':_0x0a5f('0x147')});db['VoiceQueue'][_0x0a5f('0x117')](db[_0x0a5f('0x84')],{'as':_0x0a5f('0x148'),'foreignKey':_0x0a5f('0x149')});db[_0x0a5f('0x1b')][_0x0a5f('0x119')](db['CmList'],{'as':_0x0a5f('0x14a'),'through':_0x0a5f('0x14b')});db[_0x0a5f('0x1b')]['belongsToMany'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':_0x0a5f('0x32')});db[_0x0a5f('0x1b')]['belongsToMany'](db[_0x0a5f('0xe1')],{'as':_0x0a5f('0x14d'),'through':_0x0a5f('0x14e')});db[_0x0a5f('0x1b')][_0x0a5f('0x119')](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x14f'),'through':_0x0a5f('0x150')});db[_0x0a5f('0x1d')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':'User','foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x1f')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x12'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x21')][_0x0a5f('0x10a')](db[_0x0a5f('0x23')],{'as':'Messages','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x151'),'sourceKey':_0x0a5f('0x152')});db[_0x0a5f('0x23')][_0x0a5f('0x117')](db['VoiceMail'],{'foreignKey':'mailboxuser','targetKey':_0x0a5f('0x152')});db['VoiceCallReport'][_0x0a5f('0x10a')](db[_0x0a5f('0x29')],{'as':_0x0a5f('0x153'),'foreignKey':_0x0a5f('0x154'),'constraints':![]});db['VoiceCallReport'][_0x0a5f('0x10a')](db[_0x0a5f('0x28')],{'as':'AgentReports','foreignKey':_0x0a5f('0x154'),'constraints':![]});db['VoiceCallReport'][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x12'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x25')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':'Contact','foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x3b')][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{'as':'MailAccount','foreignKey':_0x0a5f('0x156')});db['MailServerIn']['belongsTo'](db[_0x0a5f('0x101')],{'as':_0x0a5f('0x101'),'foreignKey':_0x0a5f('0x157'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x3c')][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{'as':_0x0a5f('0x12f'),'foreignKey':'MailAccountId'});db[_0x0a5f('0x3c')][_0x0a5f('0x117')](db[_0x0a5f('0x101')],{'as':_0x0a5f('0x101'),'foreignKey':_0x0a5f('0x157'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x12f')]['hasOne'](db[_0x0a5f('0x3b')],{'as':_0x0a5f('0x159'),'onDelete':_0x0a5f('0x107')});db['MailAccount'][_0x0a5f('0x106')](db[_0x0a5f('0x3c')],{'as':'Smtp','onDelete':_0x0a5f('0x107')});db['MailAccount'][_0x0a5f('0x10a')](db[_0x0a5f('0x80')],{'as':'Dispositions','foreignKey':_0x0a5f('0x156'),'onDelete':_0x0a5f('0x107')});db['MailAccount'][_0x0a5f('0x10a')](db[_0x0a5f('0x7e')],{'as':_0x0a5f('0x15a'),'foreignKey':_0x0a5f('0x156')});db[_0x0a5f('0x12f')][_0x0a5f('0x10a')](db['MailMessage'],{'as':'Messages','foreignKey':'MailAccountId'});db[_0x0a5f('0x12f')][_0x0a5f('0x10a')](db[_0x0a5f('0x40')],{'as':_0x0a5f('0x15b')});db[_0x0a5f('0x12f')][_0x0a5f('0x10a')](db[_0x0a5f('0x43')],{'as':'Applications'});db['MailAccount'][_0x0a5f('0x117')](db['CmList'],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0x12f')]['belongsTo'](db['Template'],{'as':_0x0a5f('0x91'),'foreignKey':_0x0a5f('0x15e')});db[_0x0a5f('0x12f')]['belongsTo'](db[_0x0a5f('0x84')],{'as':_0x0a5f('0x148'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a5f('0x12f')][_0x0a5f('0x119')](db['User'],{'as':'Agents','through':_0x0a5f('0x130')});db['MailQueue'][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':'Agents','through':_0x0a5f('0x34')});db['MailQueue'][_0x0a5f('0x119')](db[_0x0a5f('0xe1')],{'through':_0x0a5f('0x15f'),'as':_0x0a5f('0x14d')});db[_0x0a5f('0x40')][_0x0a5f('0x10a')](db['MailMessage'],{'as':'Messages','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x160')});db[_0x0a5f('0x40')][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{'as':_0x0a5f('0x161'),'foreignKey':'MailAccountId'});db[_0x0a5f('0x40')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x162'),'foreignKey':'ContactId'});db['MailInteraction'][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x163'),'foreignKey':_0x0a5f('0x108')});db['MailInteraction'][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x165'),'as':'Tags'});db[_0x0a5f('0x40')]['belongsToMany'](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x165'),'as':_0x0a5f('0x166')});db['MailInteraction'][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x167'),'through':_0x0a5f('0x11e'),'foreignKey':_0x0a5f('0x160')});db[_0x0a5f('0x168')][_0x0a5f('0x10a')](db[_0x0a5f('0x169')],{'as':_0x0a5f('0x16a'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x168')]['belongsTo'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x12')});db['MailMessage']['belongsTo'](db[_0x0a5f('0x72')],{'onDelete':'cascade','as':_0x0a5f('0x162')});db['MailMessage']['belongsTo'](db[_0x0a5f('0x40')],{'as':_0x0a5f('0x16b'),'foreignKey':_0x0a5f('0x160')});db['MailMessage'][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x156')});db['MailMessage'][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{'as':'ChatWebsite','foreignKey':'ChatWebsiteId'});db[_0x0a5f('0x168')][_0x0a5f('0x117')](db[_0x0a5f('0x69')],{'as':'ChatOfflineMessage','foreignKey':_0x0a5f('0x16c')});db[_0x0a5f('0x43')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'onDelete':_0x0a5f('0x158')});db['MailApplication'][_0x0a5f('0x117')](db[_0x0a5f('0x16d')],{'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x43')][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{'onDelete':_0x0a5f('0x158')});db['MailApplication'][_0x0a5f('0x117')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0x43')][_0x0a5f('0x117')](db[_0x0a5f('0x164')],{'onDelete':_0x0a5f('0x158'),'foreignKey':_0x0a5f('0x16e')});db['MailQueueReport'][_0x0a5f('0x117')](db['MailAccount'],{});db[_0x0a5f('0x45')][_0x0a5f('0x117')](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':'ListId'});db[_0x0a5f('0x45')]['belongsTo'](db[_0x0a5f('0x72')],{'as':'Contact','foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x45')][_0x0a5f('0x117')](db[_0x0a5f('0x40')],{});db[_0x0a5f('0x45')][_0x0a5f('0x117')](db[_0x0a5f('0x168')],{});db[_0x0a5f('0x45')][_0x0a5f('0x117')](db['User'],{});db[_0x0a5f('0x45')][_0x0a5f('0x117')](db['MailQueue'],{});db['Dashboard']['hasMany'](db[_0x0a5f('0x49')],{'as':_0x0a5f('0x16f'),'onDelete':'cascade'});db[_0x0a5f('0x12e')][_0x0a5f('0x10a')](db['Disposition'],{'as':_0x0a5f('0x170'),'foreignKey':_0x0a5f('0x171'),'onDelete':_0x0a5f('0x107')});db['FaxAccount']['hasMany'](db[_0x0a5f('0x7e')],{'as':_0x0a5f('0x15a'),'foreignKey':'FaxAccountId'});db[_0x0a5f('0x12e')][_0x0a5f('0x10a')](db['FaxInteraction'],{'as':'Interactions'});db[_0x0a5f('0x12e')][_0x0a5f('0x10a')](db[_0x0a5f('0x4b')],{'as':'Applications'});db[_0x0a5f('0x12e')][_0x0a5f('0x10a')](db[_0x0a5f('0x10c')],{'as':_0x0a5f('0x172'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x12e')][_0x0a5f('0x10a')](db[_0x0a5f('0x4f')],{'as':'Messages'});db[_0x0a5f('0x12e')]['belongsTo'](db[_0x0a5f('0x143')],{'as':_0x0a5f('0x143')});db[_0x0a5f('0x12e')]['belongsTo'](db[_0x0a5f('0x11c')],{'as':'List','foreignKey':_0x0a5f('0x15d')});db['FaxAccount'][_0x0a5f('0x117')](db[_0x0a5f('0x84')],{'as':_0x0a5f('0x148'),'foreignKey':_0x0a5f('0x149')});db[_0x0a5f('0x12e')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':'user_has_fax_accounts'});db['FaxApplication'][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x4b')]['belongsTo'](db[_0x0a5f('0x51')],{'onDelete':'restrict'});db[_0x0a5f('0x4b')][_0x0a5f('0x117')](db[_0x0a5f('0x12e')],{'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x4b')]['belongsTo'](db[_0x0a5f('0x164')],{'onDelete':_0x0a5f('0x158'),'foreignKey':_0x0a5f('0x16e')});db[_0x0a5f('0x4d')][_0x0a5f('0x10a')](db['FaxMessage'],{'as':_0x0a5f('0x173'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x174')});db['FaxInteraction'][_0x0a5f('0x117')](db[_0x0a5f('0x12e')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x171')});db['FaxInteraction'][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x162'),'foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x4d')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':'Owner','foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x4d')][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x175'),'as':_0x0a5f('0x176')});db[_0x0a5f('0x4d')]['belongsToMany'](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x175'),'as':'ThroughTags'});db[_0x0a5f('0x4d')]['belongsToMany'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x167'),'through':_0x0a5f('0x120'),'foreignKey':'FaxInteractionId'});db[_0x0a5f('0x4f')]['belongsTo'](db[_0x0a5f('0x12')],{'onDelete':'cascade','as':_0x0a5f('0x12')});db[_0x0a5f('0x4f')]['belongsTo'](db['FaxInteraction'],{'as':_0x0a5f('0x16b'),'foreignKey':_0x0a5f('0x174')});db[_0x0a5f('0x4f')]['belongsTo'](db[_0x0a5f('0x72')],{'onDelete':_0x0a5f('0x107'),'as':_0x0a5f('0x162')});db['FaxMessage'][_0x0a5f('0x117')](db[_0x0a5f('0x169')],{'as':_0x0a5f('0x169'),'foreignKey':'AttachmentId'});db[_0x0a5f('0x4f')]['belongsTo'](db[_0x0a5f('0x12e')],{'as':_0x0a5f('0x161'),'foreignKey':'FaxAccountId'});db[_0x0a5f('0x51')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':'Agents','through':_0x0a5f('0x129')});db[_0x0a5f('0x51')][_0x0a5f('0x119')](db['Team'],{'through':'team_has_fax_queues','as':_0x0a5f('0x14d')});db['FaxQueueReport'][_0x0a5f('0x117')](db['FaxAccount'],{});db[_0x0a5f('0x52')][_0x0a5f('0x117')](db[_0x0a5f('0x11c')],{'as':'List','foreignKey':_0x0a5f('0x15d')});db['FaxQueueReport'][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x162'),'foreignKey':_0x0a5f('0x155')});db['FaxQueueReport']['belongsTo'](db[_0x0a5f('0x4d')],{});db[_0x0a5f('0x52')][_0x0a5f('0x117')](db['FaxMessage'],{});db[_0x0a5f('0x52')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{});db[_0x0a5f('0x52')][_0x0a5f('0x117')](db[_0x0a5f('0x51')],{});db['SmsAccount'][_0x0a5f('0x10a')](db['Disposition'],{'as':_0x0a5f('0x170'),'foreignKey':_0x0a5f('0x177'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x133')][_0x0a5f('0x10a')](db['CannedAnswer'],{'as':_0x0a5f('0x15a'),'foreignKey':'SmsAccountId'});db['SmsAccount'][_0x0a5f('0x10a')](db['SmsMessage'],{'as':_0x0a5f('0x173'),'foreignKey':'SmsAccountId'});db[_0x0a5f('0x133')][_0x0a5f('0x10a')](db[_0x0a5f('0x110')],{'as':_0x0a5f('0x15b')});db[_0x0a5f('0x133')][_0x0a5f('0x10a')](db[_0x0a5f('0x54')],{'as':_0x0a5f('0x13a')});db[_0x0a5f('0x133')]['belongsTo'](db[_0x0a5f('0x11c')],{'as':'List','foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0x133')][_0x0a5f('0x117')](db[_0x0a5f('0x84')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a5f('0x149')});db[_0x0a5f('0x133')]['belongsToMany'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':_0x0a5f('0x135')});db[_0x0a5f('0x54')][_0x0a5f('0x117')](db['User'],{'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x54')]['belongsTo'](db['SmsQueue'],{'onDelete':_0x0a5f('0x158')});db['SmsApplication'][_0x0a5f('0x117')](db[_0x0a5f('0x133')],{'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x54')][_0x0a5f('0x117')](db[_0x0a5f('0x82')],{'onDelete':'restrict','foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0x54')][_0x0a5f('0x117')](db[_0x0a5f('0x164')],{'onDelete':_0x0a5f('0x158'),'foreignKey':_0x0a5f('0x16e')});db[_0x0a5f('0x110')][_0x0a5f('0x10a')](db[_0x0a5f('0x57')],{'as':'Messages','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x178')});db[_0x0a5f('0x110')]['belongsTo'](db[_0x0a5f('0x133')],{'as':_0x0a5f('0x161'),'foreignKey':'SmsAccountId'});db[_0x0a5f('0x110')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':'Contact','foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x110')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x163'),'foreignKey':_0x0a5f('0x108')});db['SmsInteraction']['belongsToMany'](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x179'),'as':_0x0a5f('0x176')});db[_0x0a5f('0x110')][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x179'),'as':_0x0a5f('0x166')});db['SmsInteraction'][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':'Users','through':_0x0a5f('0x121'),'foreignKey':_0x0a5f('0x178')});db[_0x0a5f('0x57')][_0x0a5f('0x117')](db['User'],{'as':'User'});db['SmsMessage'][_0x0a5f('0x117')](db['CmContact'],{'onDelete':_0x0a5f('0x107'),'as':'Contact'});db[_0x0a5f('0x57')][_0x0a5f('0x117')](db[_0x0a5f('0x110')],{'onDelete':_0x0a5f('0x107'),'as':'Interaction','foreignKey':'SmsInteractionId'});db[_0x0a5f('0x57')][_0x0a5f('0x117')](db['SmsAccount'],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x177')});db[_0x0a5f('0x59')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':_0x0a5f('0x36'),'foreignKey':_0x0a5f('0x17a')});db[_0x0a5f('0x59')][_0x0a5f('0x119')](db[_0x0a5f('0xe1')],{'through':_0x0a5f('0x17b'),'as':_0x0a5f('0x14d')});db[_0x0a5f('0x5b')][_0x0a5f('0x10a')](db['Disposition'],{'as':_0x0a5f('0x170'),'foreignKey':_0x0a5f('0x17c'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x5b')]['hasMany'](db['CannedAnswer'],{'as':_0x0a5f('0x15a'),'foreignKey':_0x0a5f('0x17c')});db[_0x0a5f('0x5b')][_0x0a5f('0x10a')](db[_0x0a5f('0x5e')],{'as':_0x0a5f('0x15b'),'foreignKey':'OpenchannelAccountId'});db[_0x0a5f('0x5b')][_0x0a5f('0x10a')](db[_0x0a5f('0x17d')],{'as':'Messages','foreignKey':_0x0a5f('0x17c')});db[_0x0a5f('0x5b')][_0x0a5f('0x10a')](db['OpenchannelApplication'],{'as':_0x0a5f('0x13a'),'foreignKey':_0x0a5f('0x17c')});db['OpenchannelAccount']['belongsTo'](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0x5b')][_0x0a5f('0x117')](db[_0x0a5f('0x84')],{'as':_0x0a5f('0x148'),'foreignKey':_0x0a5f('0x149')});db['OpenchannelAccount'][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':'user_has_openchannel_accounts'});db[_0x0a5f('0x17e')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'onDelete':'restrict'});db[_0x0a5f('0x17e')][_0x0a5f('0x117')](db[_0x0a5f('0x61')],{'onDelete':'restrict','foreignKey':'OpenchannelQueueId'});db[_0x0a5f('0x17e')][_0x0a5f('0x117')](db[_0x0a5f('0x5b')],{'onDelete':_0x0a5f('0x158'),'foreignKey':'OpenchannelAccountId'});db[_0x0a5f('0x17e')][_0x0a5f('0x117')](db[_0x0a5f('0x82')],{'onDelete':_0x0a5f('0x158'),'foreignKey':'IntervalId'});db[_0x0a5f('0x17e')]['belongsTo'](db['Tag'],{'onDelete':_0x0a5f('0x158'),'foreignKey':_0x0a5f('0x16e')});db[_0x0a5f('0x5e')][_0x0a5f('0x10a')](db['OpenchannelMessage'],{'as':'Messages','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x17f')});db['OpenchannelInteraction'][_0x0a5f('0x117')](db['OpenchannelAccount'],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x17c')});db[_0x0a5f('0x5e')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x162'),'foreignKey':'ContactId'});db['OpenchannelInteraction']['belongsTo'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x163'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x5e')][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x180'),'as':_0x0a5f('0x176')});db[_0x0a5f('0x5e')][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x180'),'as':_0x0a5f('0x166')});db[_0x0a5f('0x5e')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x167'),'through':_0x0a5f('0x122'),'foreignKey':_0x0a5f('0x17f')});db['OpenchannelMessage'][_0x0a5f('0x117')](db['User'],{'onDelete':'cascade','as':_0x0a5f('0x12')});db[_0x0a5f('0x17d')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'onDelete':_0x0a5f('0x107'),'as':'Contact'});db[_0x0a5f('0x17d')][_0x0a5f('0x117')](db[_0x0a5f('0x5e')],{'onDelete':_0x0a5f('0x107'),'as':'Interaction','foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0x0a5f('0x117')](db[_0x0a5f('0x169')],{'as':_0x0a5f('0x169'),'foreignKey':'AttachmentId'});db[_0x0a5f('0x17d')]['belongsTo'](db[_0x0a5f('0x5b')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x17c')});db[_0x0a5f('0x61')]['belongsToMany'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':_0x0a5f('0x12b'),'foreignKey':_0x0a5f('0x181')});db[_0x0a5f('0x61')]['belongsToMany'](db[_0x0a5f('0xe1')],{'through':'team_has_openchannel_queues','as':_0x0a5f('0x14d')});db[_0x0a5f('0x62')][_0x0a5f('0x10a')](db[_0x0a5f('0x80')],{'as':'Dispositions','foreignKey':_0x0a5f('0x182'),'onDelete':'cascade'});db['ChatWebsite'][_0x0a5f('0x10a')](db[_0x0a5f('0x7e')],{'as':_0x0a5f('0x15a'),'foreignKey':_0x0a5f('0x182')});db[_0x0a5f('0x62')]['hasMany'](db[_0x0a5f('0x6f')],{'as':_0x0a5f('0x183')});db['ChatWebsite'][_0x0a5f('0x10a')](db[_0x0a5f('0x67')],{'as':_0x0a5f('0x15b')});db[_0x0a5f('0x62')][_0x0a5f('0x10a')](db['ChatApplication'],{'as':_0x0a5f('0x13a')});db[_0x0a5f('0x62')][_0x0a5f('0x10a')](db[_0x0a5f('0x184')],{'as':_0x0a5f('0x173')});db[_0x0a5f('0x62')]['belongsTo'](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0x62')][_0x0a5f('0x117')](db[_0x0a5f('0x82')],{'as':_0x0a5f('0x82'),'foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0x62')][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{'as':_0x0a5f('0x12f'),'foreignKey':'MailAccountId'});db[_0x0a5f('0x62')][_0x0a5f('0x117')](db[_0x0a5f('0x84')],{'as':_0x0a5f('0x148'),'foreignKey':_0x0a5f('0x149')});db[_0x0a5f('0x62')]['belongsToMany'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':_0x0a5f('0x185')});db[_0x0a5f('0x64')][_0x0a5f('0x117')](db[_0x0a5f('0x5b')],{});db[_0x0a5f('0x64')]['belongsTo'](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db['OpenchannelQueueReport'][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':'Contact','foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x64')][_0x0a5f('0x117')](db[_0x0a5f('0x5e')],{});db[_0x0a5f('0x64')][_0x0a5f('0x117')](db['OpenchannelMessage'],{});db[_0x0a5f('0x64')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{});db[_0x0a5f('0x64')][_0x0a5f('0x117')](db['OpenchannelQueue'],{});db[_0x0a5f('0x65')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x186'),'foreignKey':_0x0a5f('0x108'),'onDelete':_0x0a5f('0x158')});db['ChatApplication'][_0x0a5f('0x117')](db['ChatQueue'],{'as':_0x0a5f('0x187'),'foreignKey':_0x0a5f('0x188'),'onDelete':_0x0a5f('0x158')});db['ChatApplication'][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{'as':_0x0a5f('0x189'),'foreignKey':_0x0a5f('0x182'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x65')][_0x0a5f('0x117')](db[_0x0a5f('0x164')],{'onDelete':_0x0a5f('0x158'),'foreignKey':'TagId'});db['ChatInteraction']['hasMany'](db[_0x0a5f('0x184')],{'as':_0x0a5f('0x173'),'onDelete':'cascade','foreignKey':_0x0a5f('0x18a')});db[_0x0a5f('0x67')][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x182')});db[_0x0a5f('0x67')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':'Contact','foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x67')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x163'),'foreignKey':'UserId'});db[_0x0a5f('0x67')]['belongsToMany'](db[_0x0a5f('0x164')],{'through':'chat_interaction_has_tags','as':_0x0a5f('0x176')});db[_0x0a5f('0x67')]['belongsToMany'](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x18b'),'as':_0x0a5f('0x166')});db[_0x0a5f('0x67')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x167'),'through':_0x0a5f('0x18c'),'foreignKey':'ChatInteractionId'});db['ChatMessage']['belongsTo'](db[_0x0a5f('0x12')],{'onDelete':_0x0a5f('0x107'),'as':'User'});db[_0x0a5f('0x184')]['belongsTo'](db[_0x0a5f('0x72')],{'onDelete':'cascade','as':_0x0a5f('0x162'),'foreignKey':'ContactId'});db[_0x0a5f('0x184')][_0x0a5f('0x117')](db[_0x0a5f('0x67')],{'onDelete':'cascade','as':_0x0a5f('0x16b'),'foreignKey':_0x0a5f('0x18a')});db[_0x0a5f('0x184')]['belongsTo'](db[_0x0a5f('0x169')],{'as':_0x0a5f('0x169'),'foreignKey':_0x0a5f('0x18d')});db[_0x0a5f('0x184')][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x182')});db[_0x0a5f('0x69')][_0x0a5f('0x10a')](db['Attachment'],{'as':_0x0a5f('0x16a'),'foreignKey':_0x0a5f('0x16c'),'onDelete':'cascade','hooks':!![]});db[_0x0a5f('0x69')]['belongsTo'](db[_0x0a5f('0x72')],{'onDelete':'cascade','as':_0x0a5f('0x162'),'foreignKey':'ContactId'});db[_0x0a5f('0x69')][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x182')});db[_0x0a5f('0x6b')][_0x0a5f('0x119')](db['User'],{'as':'Agents','through':_0x0a5f('0x33'),'hooks':!![]});db[_0x0a5f('0x6b')][_0x0a5f('0x119')](db[_0x0a5f('0xe1')],{'through':_0x0a5f('0x18e'),'as':'Teams'});db[_0x0a5f('0x6d')][_0x0a5f('0x10a')](db[_0x0a5f('0xcd')],{'as':_0x0a5f('0x173'),'foreignKey':'ChatGroupId','onDelete':_0x0a5f('0x107')});db['ChatGroup'][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':'Members','through':_0x0a5f('0x11b')});db[_0x0a5f('0x6f')][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{'as':_0x0a5f('0x189'),'foreignKey':_0x0a5f('0x182')});db['CmCompany'][_0x0a5f('0x10a')](db['CmContact'],{'as':_0x0a5f('0x18f'),'foreignKey':_0x0a5f('0x190')});db['CmContact']['hasMany'](db[_0x0a5f('0x191')],{'as':_0x0a5f('0x192'),'foreignKey':'CmContactId'});db[_0x0a5f('0x72')]['hasMany'](db[_0x0a5f('0x74')],{'as':_0x0a5f('0x13f'),'foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x72')][_0x0a5f('0x10a')](db[_0x0a5f('0x77')],{'as':'HopperFinals','foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x72')][_0x0a5f('0x10a')](db[_0x0a5f('0x79')],{'as':_0x0a5f('0x193'),'foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x72')]['hasMany'](db['ReportAgentPreview'],{'as':_0x0a5f('0x7b'),'foreignKey':_0x0a5f('0x155')});db[_0x0a5f('0x72')][_0x0a5f('0x10a')](db[_0x0a5f('0xd3')],{'as':'JscriptySessions','foreignKey':_0x0a5f('0x155')});db['CmContact']['hasMany'](db[_0x0a5f('0x5e')],{'as':'OpenchannelInteractions','foreignKey':_0x0a5f('0x155'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x72')][_0x0a5f('0x10a')](db[_0x0a5f('0x67')],{'as':_0x0a5f('0x10f'),'foreignKey':_0x0a5f('0x155'),'onDelete':_0x0a5f('0x158')});db['CmContact'][_0x0a5f('0x10a')](db['SmsInteraction'],{'as':_0x0a5f('0x111'),'foreignKey':'ContactId','onDelete':_0x0a5f('0x158')});db['CmContact'][_0x0a5f('0x10a')](db[_0x0a5f('0x4d')],{'as':'FaxInteractions','foreignKey':_0x0a5f('0x155'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x72')][_0x0a5f('0x10a')](db[_0x0a5f('0x40')],{'as':'MailInteractions','foreignKey':_0x0a5f('0x155'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x72')][_0x0a5f('0x117')](db[_0x0a5f('0x194')],{'as':_0x0a5f('0x195'),'foreignKey':_0x0a5f('0x190')});db['CmContact'][_0x0a5f('0x117')](db['CmList'],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d'),'onDelete':'cascade'});db[_0x0a5f('0x72')][_0x0a5f('0x119')](db['User'],{'as':_0x0a5f('0x167'),'through':_0x0a5f('0x196')});db['CmContact'][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'as':_0x0a5f('0x176'),'through':_0x0a5f('0x197')});db[_0x0a5f('0x72')][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x197'),'as':_0x0a5f('0x166')});db[_0x0a5f('0x74')]['hasMany'](db[_0x0a5f('0x90')],{'as':_0x0a5f('0x198'),'foreignKey':'CmHopperId'});db['CmHopper']['belongsTo'](db['CmContact'],{'as':_0x0a5f('0x162'),'foreignKey':_0x0a5f('0x155'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x74')]['belongsTo'](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':'ListId','onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x74')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x186'),'foreignKey':_0x0a5f('0x108')});db[_0x0a5f('0x74')][_0x0a5f('0x117')](db[_0x0a5f('0x1b')],{'as':_0x0a5f('0x187'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a5f('0x74')]['belongsTo'](db['Campaign'],{'as':'Campaign','foreignKey':_0x0a5f('0x199'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x74')][_0x0a5f('0x117')](db['User'],{'as':_0x0a5f('0x163'),'foreignKey':_0x0a5f('0x19a')});db[_0x0a5f('0x76')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x162'),'foreignKey':_0x0a5f('0x155'),'onDelete':_0x0a5f('0x107')});db['CmHopperBlack'][_0x0a5f('0x117')](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db[_0x0a5f('0x76')][_0x0a5f('0x117')](db[_0x0a5f('0x1b')],{'as':_0x0a5f('0x187'),'foreignKey':_0x0a5f('0x13e'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x76')][_0x0a5f('0x117')](db[_0x0a5f('0x19b')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':'cascade'});db['Automation']['hasMany'](db[_0x0a5f('0x19c')],{'as':{'plural':_0x0a5f('0x19d'),'singular':_0x0a5f('0x19e')},'foreignKey':'AutomationAllId','onDelete':_0x0a5f('0x107'),'hooks':!![]});db['Automation'][_0x0a5f('0x10a')](db[_0x0a5f('0x19c')],{'as':{'plural':_0x0a5f('0x19f'),'singular':_0x0a5f('0x1a0')},'foreignKey':'AutomationAnyId','onDelete':_0x0a5f('0x107'),'hooks':!![]});db[_0x0a5f('0x1a1')][_0x0a5f('0x10a')](db['Action'],{'as':_0x0a5f('0x1a2'),'foreignKey':_0x0a5f('0x1a3'),'onDelete':_0x0a5f('0x107'),'hooks':!![]});db[_0x0a5f('0x80')]['hasMany'](db[_0x0a5f('0x80')],{'as':_0x0a5f('0x170'),'foreignKey':_0x0a5f('0x1a4'),'onDelete':'cascade'});db[_0x0a5f('0x82')][_0x0a5f('0x10a')](db[_0x0a5f('0x82')],{'as':_0x0a5f('0x1a5'),'foreignKey':'IntervalId','onDelete':_0x0a5f('0x107'),'hooks':!![],'required':![]});db[_0x0a5f('0x82')][_0x0a5f('0x10a')](db[_0x0a5f('0x10c')],{'as':_0x0a5f('0x10d'),'foreignKey':_0x0a5f('0x147'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x82')][_0x0a5f('0x10a')](db['MailApplication'],{'as':_0x0a5f('0x1a6'),'foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0x82')]['hasMany'](db[_0x0a5f('0x65')],{'as':'ChatApplications','foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0x82')]['hasMany'](db[_0x0a5f('0x4b')],{'as':'FaxApplications','foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0x82')]['hasMany'](db[_0x0a5f('0x54')],{'as':'SmsApplications','foreignKey':_0x0a5f('0x147')});db['Schedule'][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{});db['Schedule'][_0x0a5f('0x117')](db['AnalyticDefaultReport'],{'foreignKey':'DefaultReportId'});db[_0x0a5f('0x8a')][_0x0a5f('0x117')](db['AnalyticCustomReport'],{'foreignKey':_0x0a5f('0x1a7')});db[_0x0a5f('0x8c')]['belongsToMany'](db[_0x0a5f('0x19')],{'as':_0x0a5f('0x1a8'),'through':_0x0a5f('0x13c'),'onDelete':_0x0a5f('0x158')});db['Tag']['belongsToMany'](db[_0x0a5f('0x72')],{'through':_0x0a5f('0x197')});db[_0x0a5f('0x164')]['belongsToMany'](db['ChatInteraction'],{'through':_0x0a5f('0x18b')});db[_0x0a5f('0x164')][_0x0a5f('0x119')](db[_0x0a5f('0x40')],{'through':_0x0a5f('0x165')});db[_0x0a5f('0x164')][_0x0a5f('0x119')](db[_0x0a5f('0x110')],{'through':_0x0a5f('0x179')});db[_0x0a5f('0x164')]['belongsToMany'](db[_0x0a5f('0x4d')],{'through':'fax_interaction_has_tags'});db[_0x0a5f('0x164')]['belongsToMany'](db['OpenchannelInteraction'],{'through':_0x0a5f('0x180')});db[_0x0a5f('0x164')][_0x0a5f('0x119')](db[_0x0a5f('0xfa')],{'through':_0x0a5f('0x1a9')});db[_0x0a5f('0x191')][_0x0a5f('0x117')](db[_0x0a5f('0x8d')],{'as':_0x0a5f('0x1aa'),'foreignKey':_0x0a5f('0x1ab')});db['CmHopperAdditionalPhone']['belongsTo'](db[_0x0a5f('0x74')],{'as':_0x0a5f('0x1ac'),'foreignKey':_0x0a5f('0x1ad')});db[_0x0a5f('0x191')][_0x0a5f('0x117')](db['CmContact'],{'as':_0x0a5f('0x162'),'foreignKey':_0x0a5f('0x1ae')});db[_0x0a5f('0x93')]['hasMany'](db[_0x0a5f('0x19c')],{'as':{'plural':_0x0a5f('0x1af'),'singular':_0x0a5f('0x1b0')},'foreignKey':_0x0a5f('0x1b1'),'onDelete':_0x0a5f('0x107'),'hooks':!![]});db[_0x0a5f('0x93')][_0x0a5f('0x10a')](db[_0x0a5f('0x19c')],{'as':{'plural':'AnyConditions','singular':_0x0a5f('0x1b2')},'foreignKey':_0x0a5f('0x1b3'),'onDelete':'cascade','hooks':!![]});db[_0x0a5f('0x93')][_0x0a5f('0x10a')](db['Action'],{'as':'Actions','foreignKey':_0x0a5f('0x1b4'),'onDelete':'cascade','hooks':!![]});db[_0x0a5f('0x1b5')][_0x0a5f('0x10a')](db[_0x0a5f('0x9b')],{'as':_0x0a5f('0x1b6'),'onDelete':'cascade','foreignKey':_0x0a5f('0x1a7'),'hooks':!![]});db[_0x0a5f('0x98')][_0x0a5f('0x10a')](db[_0x0a5f('0x9b')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x0a5f('0x1b7')});db['AnalyticMetric'][_0x0a5f('0x10a')](db[_0x0a5f('0x9b')],{'as':_0x0a5f('0x1b6'),'onDelete':_0x0a5f('0x107'),'foreignKey':'MetricId'});db[_0x0a5f('0x9b')]['belongsTo'](db[_0x0a5f('0x1b8')],{'foreignKey':_0x0a5f('0x1b9')});db[_0x0a5f('0x9d')][_0x0a5f('0x10a')](db['SalesforceConfiguration'],{'as':_0x0a5f('0x1ba'),'onDelete':_0x0a5f('0x107'),'foreignKey':'AccountId'});db[_0x0a5f('0x9f')][_0x0a5f('0x10a')](db[_0x0a5f('0xa1')],{'as':_0x0a5f('0x1bb'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0x9f')][_0x0a5f('0x10a')](db[_0x0a5f('0xa1')],{'as':_0x0a5f('0x1bd'),'onDelete':'cascade','foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0x9f')][_0x0a5f('0x10a')](db[_0x0a5f('0xa1')],{'as':_0x0a5f('0x1b6'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1bf')});db['SalesforceConfiguration'][_0x0a5f('0x117')](db[_0x0a5f('0x9d')],{'as':'Account','foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xa1')][_0x0a5f('0x10a')](db[_0x0a5f('0xa1')],{'as':_0x0a5f('0x1c1'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xa1')]['hasMany'](db[_0x0a5f('0xa1')],{'as':_0x0a5f('0x1c2'),'foreignKey':_0x0a5f('0x1be')});db['SalesforceField']['hasMany'](db[_0x0a5f('0xa1')],{'as':_0x0a5f('0x1c3'),'foreignKey':_0x0a5f('0x1bf')});db['SalesforceField'][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':_0x0a5f('0x94'),'foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0x1c5')][_0x0a5f('0x10a')](db['SugarcrmConfiguration'],{'as':_0x0a5f('0x1ba'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0x1c6')][_0x0a5f('0x10a')](db[_0x0a5f('0xa4')],{'as':_0x0a5f('0x1bb'),'onDelete':'cascade','foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0x1c6')][_0x0a5f('0x10a')](db[_0x0a5f('0xa4')],{'as':_0x0a5f('0x1bd'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0x1c6')][_0x0a5f('0x10a')](db[_0x0a5f('0xa4')],{'as':_0x0a5f('0x1b6'),'onDelete':_0x0a5f('0x107'),'foreignKey':'FieldId'});db[_0x0a5f('0x1c6')][_0x0a5f('0x117')](db[_0x0a5f('0x1c5')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xa4')][_0x0a5f('0x10a')](db[_0x0a5f('0xa4')],{'as':_0x0a5f('0x1c1'),'foreignKey':_0x0a5f('0x1bc')});db['SugarcrmField'][_0x0a5f('0x10a')](db[_0x0a5f('0xa4')],{'as':'Description','foreignKey':_0x0a5f('0x1be')});db['SugarcrmField'][_0x0a5f('0x10a')](db[_0x0a5f('0xa4')],{'as':_0x0a5f('0x1c3'),'foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xa4')][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':_0x0a5f('0x94'),'foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0xa6')]['hasMany'](db[_0x0a5f('0xa7')],{'as':_0x0a5f('0x1ba'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xa7')][_0x0a5f('0x10a')](db[_0x0a5f('0x1c7')],{'as':_0x0a5f('0x1bb'),'onDelete':_0x0a5f('0x107'),'foreignKey':'SubjectId'});db['DeskConfiguration'][_0x0a5f('0x10a')](db[_0x0a5f('0x1c7')],{'as':'Descriptions','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xa7')][_0x0a5f('0x10a')](db['DeskField'],{'as':'Fields','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xa7')]['belongsTo'](db['DeskAccount'],{'as':_0x0a5f('0x161'),'foreignKey':'AccountId'});db['DeskConfiguration'][_0x0a5f('0x119')](db['Tag'],{'through':_0x0a5f('0x1c8')});db['DeskField'][_0x0a5f('0x10a')](db[_0x0a5f('0x1c7')],{'as':_0x0a5f('0x1c1'),'foreignKey':'SubjectId'});db[_0x0a5f('0x1c7')][_0x0a5f('0x10a')](db[_0x0a5f('0x1c7')],{'as':_0x0a5f('0x1c2'),'foreignKey':'DescriptionId'});db[_0x0a5f('0x1c7')]['hasMany'](db[_0x0a5f('0x1c7')],{'as':'Field','foreignKey':'FieldId'});db[_0x0a5f('0x1c7')][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':'Variable','foreignKey':'VariableId'});db[_0x0a5f('0xa8')]['hasMany'](db[_0x0a5f('0x1c9')],{'as':'Configurations','onDelete':_0x0a5f('0x107'),'foreignKey':'AccountId'});db['ZohoConfiguration'][_0x0a5f('0x10a')](db['ZohoField'],{'as':_0x0a5f('0x1bb'),'onDelete':_0x0a5f('0x107'),'foreignKey':'SubjectId'});db[_0x0a5f('0x1c9')][_0x0a5f('0x10a')](db[_0x0a5f('0xaa')],{'as':_0x0a5f('0x1bd'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0x1c9')][_0x0a5f('0x10a')](db['ZohoField'],{'as':_0x0a5f('0x1b6'),'onDelete':_0x0a5f('0x107'),'foreignKey':'FieldId'});db[_0x0a5f('0x1c9')][_0x0a5f('0x117')](db[_0x0a5f('0xa8')],{'as':'Account','foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xaa')][_0x0a5f('0x10a')](db['ZohoField'],{'as':_0x0a5f('0x1c1'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xaa')][_0x0a5f('0x10a')](db[_0x0a5f('0xaa')],{'as':_0x0a5f('0x1c2'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xaa')][_0x0a5f('0x10a')](db['ZohoField'],{'as':_0x0a5f('0x1c3'),'foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xaa')][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':'Variable','foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0x1ca')][_0x0a5f('0x10a')](db[_0x0a5f('0xad')],{'as':_0x0a5f('0x1ba'),'onDelete':'cascade','foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xad')][_0x0a5f('0x10a')](db[_0x0a5f('0xaf')],{'as':'Subjects','foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xad')][_0x0a5f('0x10a')](db[_0x0a5f('0xaf')],{'as':_0x0a5f('0x1bd'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xad')][_0x0a5f('0x10a')](db[_0x0a5f('0xaf')],{'as':_0x0a5f('0x1b6'),'foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xad')][_0x0a5f('0x117')](db[_0x0a5f('0x1ca')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xad')]['belongsToMany'](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x1cb')});db[_0x0a5f('0xaf')][_0x0a5f('0x10a')](db[_0x0a5f('0xaf')],{'as':_0x0a5f('0x1c1'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xaf')][_0x0a5f('0x10a')](db['ZendeskField'],{'as':_0x0a5f('0x1c2'),'foreignKey':'DescriptionId'});db[_0x0a5f('0xaf')]['hasMany'](db[_0x0a5f('0xaf')],{'as':_0x0a5f('0x1c3'),'foreignKey':_0x0a5f('0x1bf')});db['ZendeskField'][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':'Variable','foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0xb1')][_0x0a5f('0x10a')](db['FreshdeskConfiguration'],{'as':_0x0a5f('0x1ba'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1c0')});db['FreshdeskConfiguration'][_0x0a5f('0x10a')](db[_0x0a5f('0xb5')],{'as':_0x0a5f('0x1bb'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xb3')][_0x0a5f('0x10a')](db[_0x0a5f('0xb5')],{'as':_0x0a5f('0x1bd'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xb3')][_0x0a5f('0x10a')](db[_0x0a5f('0xb5')],{'as':_0x0a5f('0x1b6'),'onDelete':'cascade','foreignKey':_0x0a5f('0x1bf')});db['FreshdeskConfiguration'][_0x0a5f('0x117')](db[_0x0a5f('0xb1')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xb3')][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x1cc')});db['FreshdeskField']['hasMany'](db[_0x0a5f('0xb5')],{'as':'Subject','foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xb5')][_0x0a5f('0x10a')](db[_0x0a5f('0xb5')],{'as':'Description','foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xb5')][_0x0a5f('0x10a')](db[_0x0a5f('0xb5')],{'as':_0x0a5f('0x1c3'),'foreignKey':'FieldId'});db[_0x0a5f('0xb5')][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':_0x0a5f('0x94'),'foreignKey':_0x0a5f('0x1c4')});db['VtigerAccount'][_0x0a5f('0x10a')](db[_0x0a5f('0xb8')],{'as':_0x0a5f('0x1ba'),'onDelete':_0x0a5f('0x107'),'foreignKey':'AccountId'});db[_0x0a5f('0xb8')][_0x0a5f('0x10a')](db[_0x0a5f('0x1cd')],{'as':_0x0a5f('0x1bb'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xb8')]['hasMany'](db[_0x0a5f('0x1cd')],{'as':_0x0a5f('0x1bd'),'foreignKey':_0x0a5f('0x1be')});db['VtigerConfiguration'][_0x0a5f('0x10a')](db[_0x0a5f('0x1cd')],{'as':'Fields','foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xb8')][_0x0a5f('0x117')](db['VtigerAccount'],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0x1cd')][_0x0a5f('0x10a')](db['VtigerField'],{'as':_0x0a5f('0x1c1'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0x1cd')][_0x0a5f('0x10a')](db['VtigerField'],{'as':_0x0a5f('0x1c2'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0x1cd')]['hasMany'](db[_0x0a5f('0x1cd')],{'as':_0x0a5f('0x1c3'),'foreignKey':'FieldId'});db['VtigerField'][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':_0x0a5f('0x94'),'foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0xbb')][_0x0a5f('0x10a')](db[_0x0a5f('0xbd')],{'as':_0x0a5f('0x1ba'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1c0')});db['ServicenowConfiguration']['hasMany'](db[_0x0a5f('0xbf')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x0a5f('0xbd')][_0x0a5f('0x10a')](db[_0x0a5f('0xbf')],{'as':'Descriptions','foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xbd')][_0x0a5f('0x10a')](db[_0x0a5f('0xbf')],{'as':_0x0a5f('0x1b6'),'foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xbd')][_0x0a5f('0x117')](db[_0x0a5f('0xbb')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1c0')});db['ServicenowField'][_0x0a5f('0x10a')](db[_0x0a5f('0xbf')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a5f('0xbf')][_0x0a5f('0x10a')](db[_0x0a5f('0xbf')],{'as':_0x0a5f('0x1c2'),'foreignKey':'DescriptionId'});db[_0x0a5f('0xbf')][_0x0a5f('0x10a')](db[_0x0a5f('0xbf')],{'as':_0x0a5f('0x1c3'),'foreignKey':_0x0a5f('0x1bf')});db['ServicenowField'][_0x0a5f('0x117')](db['Variable'],{'as':'Variable','foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0xc1')][_0x0a5f('0x10a')](db['Dynamics365Configuration'],{'as':_0x0a5f('0x1ba'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1c0')});db['Dynamics365Account']['belongsTo'](db[_0x0a5f('0x101')],{'as':_0x0a5f('0x101'),'foreignKey':_0x0a5f('0x157')});db[_0x0a5f('0xc3')][_0x0a5f('0x10a')](db[_0x0a5f('0xc4')],{'as':_0x0a5f('0x1bb'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xc3')]['hasMany'](db[_0x0a5f('0xc4')],{'as':_0x0a5f('0x1bd'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xc3')][_0x0a5f('0x10a')](db['Dynamics365Field'],{'as':_0x0a5f('0x1b6'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xc3')][_0x0a5f('0x117')](db[_0x0a5f('0xc1')],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1c0')});db['Dynamics365Field']['hasMany'](db[_0x0a5f('0xc4')],{'as':'Subject','foreignKey':_0x0a5f('0x1bc')});db['Dynamics365Field'][_0x0a5f('0x10a')](db[_0x0a5f('0xc4')],{'as':_0x0a5f('0x1c2'),'foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xc4')][_0x0a5f('0x10a')](db[_0x0a5f('0xc4')],{'as':_0x0a5f('0x1c3'),'foreignKey':'FieldId'});db[_0x0a5f('0xc4')][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':_0x0a5f('0x94'),'foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0x1ce')][_0x0a5f('0x10a')](db[_0x0a5f('0xc7')],{'as':'Configurations','onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xc7')]['hasMany'](db['FreshsalesField'],{'as':_0x0a5f('0x1bb'),'foreignKey':_0x0a5f('0x1bc')});db['FreshsalesConfiguration'][_0x0a5f('0x10a')](db['FreshsalesField'],{'as':'Descriptions','foreignKey':_0x0a5f('0x1be')});db[_0x0a5f('0xc7')][_0x0a5f('0x10a')](db[_0x0a5f('0xc9')],{'as':_0x0a5f('0x1b6'),'foreignKey':_0x0a5f('0x1bf')});db[_0x0a5f('0xc7')][_0x0a5f('0x117')](db['FreshsalesAccount'],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1c0')});db[_0x0a5f('0xc9')][_0x0a5f('0x10a')](db[_0x0a5f('0xc9')],{'as':_0x0a5f('0x1c1'),'foreignKey':_0x0a5f('0x1bc')});db[_0x0a5f('0xc9')][_0x0a5f('0x10a')](db[_0x0a5f('0xc9')],{'as':_0x0a5f('0x1c2'),'foreignKey':_0x0a5f('0x1be')});db['FreshsalesField']['hasMany'](db['FreshsalesField'],{'as':'Field','foreignKey':'FieldId'});db[_0x0a5f('0xc9')][_0x0a5f('0x117')](db[_0x0a5f('0x94')],{'as':_0x0a5f('0x94'),'foreignKey':_0x0a5f('0x1c4')});db[_0x0a5f('0xcb')][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{});db['ChatQueueReport'][_0x0a5f('0x117')](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db['ChatQueueReport'][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x162'),'foreignKey':'ContactId'});db[_0x0a5f('0xcb')][_0x0a5f('0x117')](db[_0x0a5f('0x67')],{});db[_0x0a5f('0xcb')]['belongsTo'](db['ChatMessage'],{});db[_0x0a5f('0xcb')][_0x0a5f('0x117')](db['User'],{});db[_0x0a5f('0xcb')][_0x0a5f('0x117')](db[_0x0a5f('0x6b')],{});db[_0x0a5f('0xcd')][_0x0a5f('0x117')](db['User'],{'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1cf')});db[_0x0a5f('0xcd')]['belongsTo'](db[_0x0a5f('0x12')],{'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1d0')});db[_0x0a5f('0xd3')][_0x0a5f('0x10a')](db['JscriptyQuestionReport'],{'foreignKey':_0x0a5f('0x1d1'),'onDelete':'cascade'});db[_0x0a5f('0xd3')][_0x0a5f('0x10a')](db['JscriptyAnswerReport'],{'foreignKey':_0x0a5f('0x1d1'),'onDelete':'cascade'});db[_0x0a5f('0xd5')][_0x0a5f('0x117')](db[_0x0a5f('0x133')],{});db[_0x0a5f('0xd5')][_0x0a5f('0x117')](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0xd5')][_0x0a5f('0x117')](db['CmContact'],{'as':_0x0a5f('0x162'),'foreignKey':'ContactId'});db['SmsQueueReport'][_0x0a5f('0x117')](db[_0x0a5f('0x110')],{});db[_0x0a5f('0xd5')][_0x0a5f('0x117')](db[_0x0a5f('0x57')],{});db['SmsQueueReport']['belongsTo'](db[_0x0a5f('0x12')],{});db[_0x0a5f('0xd5')][_0x0a5f('0x117')](db[_0x0a5f('0x59')],{});db[_0x0a5f('0x1d2')][_0x0a5f('0x10a')](db['JscriptySessionReport'],{'foreignKey':_0x0a5f('0x1d3')});db[_0x0a5f('0x1d2')]['hasMany'](db[_0x0a5f('0xd1')],{'foreignKey':_0x0a5f('0x1d3')});db[_0x0a5f('0x1d2')][_0x0a5f('0x10a')](db[_0x0a5f('0xcf')],{'foreignKey':_0x0a5f('0x1d3')});db[_0x0a5f('0xe1')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':_0x0a5f('0x1d4')});db[_0x0a5f('0xe1')][_0x0a5f('0x119')](db[_0x0a5f('0x1b')],{'through':_0x0a5f('0x14e'),'as':_0x0a5f('0x1d5')});db['Team'][_0x0a5f('0x119')](db[_0x0a5f('0x16d')],{'through':'team_has_mail_queues','as':_0x0a5f('0x126')});db[_0x0a5f('0xe1')]['belongsToMany'](db[_0x0a5f('0x6b')],{'through':'team_has_chat_queues','as':_0x0a5f('0x127')});db[_0x0a5f('0xe1')][_0x0a5f('0x119')](db['FaxQueue'],{'through':_0x0a5f('0x1d6'),'as':_0x0a5f('0x128')});db[_0x0a5f('0xe1')][_0x0a5f('0x119')](db['SmsQueue'],{'through':_0x0a5f('0x17b'),'as':_0x0a5f('0x1d7')});db[_0x0a5f('0xe1')][_0x0a5f('0x119')](db[_0x0a5f('0x61')],{'through':_0x0a5f('0x1d8'),'as':_0x0a5f('0x12a')});db[_0x0a5f('0xe1')][_0x0a5f('0x119')](db[_0x0a5f('0x100')],{'through':_0x0a5f('0x1d9'),'as':_0x0a5f('0x12c')});db[_0x0a5f('0xe1')][_0x0a5f('0x119')](db[_0x0a5f('0xf1')],{'through':_0x0a5f('0x1da'),'as':_0x0a5f('0x124')});db[_0x0a5f('0x19b')][_0x0a5f('0x10a')](db[_0x0a5f('0x74')],{'as':_0x0a5f('0x13f'),'foreignKey':_0x0a5f('0x199')});db['Campaign'][_0x0a5f('0x10a')](db['CmHopperFinal'],{'as':_0x0a5f('0x140'),'foreignKey':_0x0a5f('0x199')});db[_0x0a5f('0x19b')][_0x0a5f('0x10a')](db[_0x0a5f('0x79')],{'as':_0x0a5f('0x193'),'foreignKey':_0x0a5f('0x199')});db[_0x0a5f('0x19b')]['hasMany'](db[_0x0a5f('0x76')],{'as':'HopperBlacks','foreignKey':_0x0a5f('0x199')});db['Campaign']['belongsTo'](db[_0x0a5f('0x143')],{'as':_0x0a5f('0x143'),'foreignKey':_0x0a5f('0x144')});db['Campaign'][_0x0a5f('0x117')](db[_0x0a5f('0x143')],{'as':_0x0a5f('0x145'),'foreignKey':_0x0a5f('0x146')});db[_0x0a5f('0x19b')][_0x0a5f('0x117')](db[_0x0a5f('0x82')],{'as':_0x0a5f('0x82'),'foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0x19b')][_0x0a5f('0x117')](db['SquareProject'],{'as':_0x0a5f('0xdd'),'foreignKey':'SquareProjectId'});db[_0x0a5f('0x19b')]['belongsToMany'](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x14a'),'through':_0x0a5f('0x1db')});db[_0x0a5f('0x19b')][_0x0a5f('0x119')](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x14f'),'through':_0x0a5f('0x1dc')});db[_0x0a5f('0x169')][_0x0a5f('0x117')](db[_0x0a5f('0x69')],{'as':_0x0a5f('0x69'),'foreignKey':_0x0a5f('0x16c')});db[_0x0a5f('0xea')]['belongsTo'](db[_0x0a5f('0x168')],{});db[_0x0a5f('0xea')][_0x0a5f('0x117')](db[_0x0a5f('0x40')],{});db['MailTransferReport'][_0x0a5f('0x117')](db['MailAccount'],{'foreignKey':_0x0a5f('0x1dd'),'as':'FromAccount'});db[_0x0a5f('0xea')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1de'),'as':_0x0a5f('0x1df')});db[_0x0a5f('0xea')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1e0'),'as':_0x0a5f('0x1e1')});db[_0x0a5f('0xea')]['belongsTo'](db[_0x0a5f('0x16d')],{'foreignKey':_0x0a5f('0x1e2'),'as':_0x0a5f('0x1e3')});db['MailTransferReport'][_0x0a5f('0x117')](db[_0x0a5f('0x12f')],{'foreignKey':_0x0a5f('0x1e4'),'as':_0x0a5f('0x1e5')});db[_0x0a5f('0xec')]['belongsTo'](db[_0x0a5f('0x184')],{});db[_0x0a5f('0xec')][_0x0a5f('0x117')](db[_0x0a5f('0x67')],{});db[_0x0a5f('0xec')][_0x0a5f('0x117')](db['ChatWebsite'],{'foreignKey':_0x0a5f('0x1e6'),'as':'FromAccount'});db[_0x0a5f('0xec')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1de'),'as':_0x0a5f('0x1df')});db[_0x0a5f('0xec')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1e0'),'as':_0x0a5f('0x1e1')});db[_0x0a5f('0xec')][_0x0a5f('0x117')](db[_0x0a5f('0x6b')],{'foreignKey':_0x0a5f('0x1e7'),'as':'ToQueue'});db[_0x0a5f('0xec')][_0x0a5f('0x117')](db[_0x0a5f('0x62')],{'foreignKey':_0x0a5f('0x1e8'),'as':_0x0a5f('0x1e5')});db[_0x0a5f('0xed')]['belongsTo'](db['FaxMessage'],{});db[_0x0a5f('0xed')]['belongsTo'](db[_0x0a5f('0x4d')],{});db[_0x0a5f('0xed')][_0x0a5f('0x117')](db['FaxAccount'],{'foreignKey':_0x0a5f('0x1e9'),'as':_0x0a5f('0x1ea')});db[_0x0a5f('0xed')]['belongsTo'](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1de'),'as':_0x0a5f('0x1df')});db[_0x0a5f('0xed')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1e0'),'as':_0x0a5f('0x1e1')});db[_0x0a5f('0xed')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a5f('0x1eb'),'as':_0x0a5f('0x1e3')});db[_0x0a5f('0xed')]['belongsTo'](db[_0x0a5f('0x12e')],{'foreignKey':_0x0a5f('0x1ec'),'as':_0x0a5f('0x1e5')});db[_0x0a5f('0x1ed')]['belongsTo'](db[_0x0a5f('0x17d')],{});db[_0x0a5f('0x1ed')]['belongsTo'](db[_0x0a5f('0x5e')],{});db[_0x0a5f('0x1ed')][_0x0a5f('0x117')](db[_0x0a5f('0x5b')],{'foreignKey':_0x0a5f('0x1ee'),'as':_0x0a5f('0x1ea')});db[_0x0a5f('0x1ed')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1de'),'as':_0x0a5f('0x1df')});db[_0x0a5f('0x1ed')]['belongsTo'](db['User'],{'foreignKey':_0x0a5f('0x1e0'),'as':_0x0a5f('0x1e1')});db[_0x0a5f('0x1ed')]['belongsTo'](db[_0x0a5f('0x61')],{'foreignKey':_0x0a5f('0x1ef'),'as':'ToQueue'});db[_0x0a5f('0x1ed')][_0x0a5f('0x117')](db[_0x0a5f('0x5b')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db[_0x0a5f('0xef')][_0x0a5f('0x117')](db[_0x0a5f('0x57')],{});db[_0x0a5f('0xef')][_0x0a5f('0x117')](db['SmsInteraction'],{});db[_0x0a5f('0xef')][_0x0a5f('0x117')](db[_0x0a5f('0x133')],{'foreignKey':_0x0a5f('0x1f0'),'as':_0x0a5f('0x1ea')});db['SmsTransferReport'][_0x0a5f('0x117')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x0a5f('0xef')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1e0'),'as':'ToAgent'});db[_0x0a5f('0xef')][_0x0a5f('0x117')](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a5f('0x1e3')});db['SmsTransferReport']['belongsTo'](db[_0x0a5f('0x133')],{'foreignKey':'ToSmsAccountId','as':_0x0a5f('0x1e5')});db[_0x0a5f('0x11c')][_0x0a5f('0x10a')](db[_0x0a5f('0x80')],{'as':_0x0a5f('0x170'),'foreignKey':'ListId','onDelete':_0x0a5f('0x107')});db[_0x0a5f('0x11c')]['hasMany'](db[_0x0a5f('0x7d')],{'as':'CustomFields','foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0x11c')]['hasMany'](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x18f'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0x11c')]['hasMany'](db[_0x0a5f('0x77')],{'as':_0x0a5f('0x140'),'foreignKey':'ListId'});db[_0x0a5f('0x11c')][_0x0a5f('0x10a')](db['CmHopperHistory'],{'as':_0x0a5f('0x1f1'),'foreignKey':_0x0a5f('0x15d')});db['CmList'][_0x0a5f('0x10a')](db[_0x0a5f('0x7b')],{'as':_0x0a5f('0x7b'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0x11c')][_0x0a5f('0x119')](db[_0x0a5f('0x1b')],{'as':_0x0a5f('0x1f2'),'through':_0x0a5f('0x14b')});db['CmList'][_0x0a5f('0x119')](db['User'],{'as':_0x0a5f('0x14c'),'through':'cm_user_has_lists'});db[_0x0a5f('0xf1')][_0x0a5f('0x10a')](db['VoiceExtension'],{'as':_0x0a5f('0x10d'),'onDelete':'cascade'});db[_0x0a5f('0xf1')][_0x0a5f('0x119')](db['User'],{'as':_0x0a5f('0x14c'),'through':'UserVoicePrefix'});db[_0x0a5f('0xf1')][_0x0a5f('0x119')](db['Team'],{'through':'TeamVoicePrefix','as':'Teams'});db[_0x0a5f('0xf2')]['hasMany'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x167'),'foreignKey':_0x0a5f('0x118')});db[_0x0a5f('0xf2')]['hasMany'](db[_0x0a5f('0xf4')],{'as':_0x0a5f('0x1f3'),'foreignKey':_0x0a5f('0x118'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0xf4')][_0x0a5f('0x10a')](db['UserProfileResource'],{'as':_0x0a5f('0x1f4'),'foreignKey':_0x0a5f('0x1f5'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0xf7')][_0x0a5f('0x10a')](db['Disposition'],{'as':_0x0a5f('0x170'),'foreignKey':_0x0a5f('0x1f6'),'onDelete':_0x0a5f('0x107')});db[_0x0a5f('0xf7')][_0x0a5f('0x10a')](db[_0x0a5f('0x7e')],{'as':_0x0a5f('0x15a'),'foreignKey':_0x0a5f('0x1f6')});db[_0x0a5f('0xf7')][_0x0a5f('0x10a')](db[_0x0a5f('0xfc')],{'as':_0x0a5f('0x173'),'foreignKey':_0x0a5f('0x1f6')});db[_0x0a5f('0xf7')][_0x0a5f('0x10a')](db[_0x0a5f('0xfa')],{'as':_0x0a5f('0x15b')});db[_0x0a5f('0xf7')][_0x0a5f('0x10a')](db[_0x0a5f('0xf9')],{'as':_0x0a5f('0x13a')});db['WhatsappAccount'][_0x0a5f('0x117')](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0xf7')][_0x0a5f('0x117')](db[_0x0a5f('0x84')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x0a5f('0xf7')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':'Agents','through':_0x0a5f('0x137')});db[_0x0a5f('0xf9')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0xf9')][_0x0a5f('0x117')](db[_0x0a5f('0x100')],{'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0xf9')][_0x0a5f('0x117')](db['WhatsappAccount'],{'onDelete':'restrict'});db[_0x0a5f('0xf9')][_0x0a5f('0x117')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x0a5f('0x147')});db[_0x0a5f('0xf9')][_0x0a5f('0x117')](db['Tag'],{'onDelete':_0x0a5f('0x158'),'foreignKey':_0x0a5f('0x16e')});db[_0x0a5f('0xfa')]['hasMany'](db['WhatsappMessage'],{'as':_0x0a5f('0x173'),'onDelete':_0x0a5f('0x107'),'foreignKey':_0x0a5f('0x1f7')});db[_0x0a5f('0xfa')][_0x0a5f('0x117')](db['WhatsappAccount'],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1f6')});db[_0x0a5f('0xfa')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':_0x0a5f('0x162'),'foreignKey':_0x0a5f('0x155')});db['WhatsappInteraction'][_0x0a5f('0x117')](db['User'],{'as':'Owner','foreignKey':'UserId'});db[_0x0a5f('0xfa')]['belongsToMany'](db[_0x0a5f('0x164')],{'through':'whatsapp_interaction_has_tags','as':_0x0a5f('0x176')});db[_0x0a5f('0xfa')][_0x0a5f('0x119')](db[_0x0a5f('0x164')],{'through':_0x0a5f('0x1a9'),'as':_0x0a5f('0x166')});db[_0x0a5f('0xfa')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':'Users','through':'user_has_whatsapp_interactions','foreignKey':'WhatsappInteractionId'});db[_0x0a5f('0xfc')]['belongsTo'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x12')});db[_0x0a5f('0xfc')]['belongsTo'](db[_0x0a5f('0x72')],{'onDelete':'cascade','as':_0x0a5f('0x162')});db[_0x0a5f('0xfc')][_0x0a5f('0x117')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a5f('0x16b'),'foreignKey':_0x0a5f('0x1f7')});db[_0x0a5f('0xfc')]['belongsTo'](db['WhatsappAccount'],{'as':_0x0a5f('0x161'),'foreignKey':_0x0a5f('0x1f6')});db[_0x0a5f('0xfe')][_0x0a5f('0x117')](db[_0x0a5f('0xf7')],{});db[_0x0a5f('0xfe')][_0x0a5f('0x117')](db[_0x0a5f('0x11c')],{'as':_0x0a5f('0x15c'),'foreignKey':_0x0a5f('0x15d')});db[_0x0a5f('0xfe')][_0x0a5f('0x117')](db[_0x0a5f('0x72')],{'as':'Contact','foreignKey':_0x0a5f('0x155')});db['WhatsappQueueReport'][_0x0a5f('0x117')](db[_0x0a5f('0xfa')],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a5f('0x100')],{});db[_0x0a5f('0xfe')][_0x0a5f('0x117')](db[_0x0a5f('0xfc')],{});db['WhatsappQueueReport'][_0x0a5f('0x117')](db['User'],{});db[_0x0a5f('0x1f8')][_0x0a5f('0x117')](db[_0x0a5f('0xfc')],{});db[_0x0a5f('0x1f8')][_0x0a5f('0x117')](db[_0x0a5f('0xfa')],{});db[_0x0a5f('0x1f8')][_0x0a5f('0x117')](db[_0x0a5f('0xf7')],{'foreignKey':_0x0a5f('0x1f9'),'as':_0x0a5f('0x1ea')});db[_0x0a5f('0x1f8')][_0x0a5f('0x117')](db['WhatsappAccount'],{'foreignKey':'ToWhatsappAccountId','as':_0x0a5f('0x1e5')});db[_0x0a5f('0x1f8')][_0x0a5f('0x117')](db[_0x0a5f('0x100')],{'foreignKey':_0x0a5f('0x1fa'),'as':'ToQueue'});db[_0x0a5f('0x1f8')][_0x0a5f('0x117')](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1de'),'as':_0x0a5f('0x1df')});db[_0x0a5f('0x1f8')]['belongsTo'](db[_0x0a5f('0x12')],{'foreignKey':_0x0a5f('0x1e0'),'as':_0x0a5f('0x1e1')});db[_0x0a5f('0x100')][_0x0a5f('0x119')](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x14c'),'through':_0x0a5f('0x39'),'foreignKey':_0x0a5f('0x1fb')});db[_0x0a5f('0x100')][_0x0a5f('0x119')](db[_0x0a5f('0xe1')],{'through':_0x0a5f('0x1d9'),'as':_0x0a5f('0x14d')});db['UserSetting']['belongsTo'](db[_0x0a5f('0x12')],{'as':_0x0a5f('0x1fc'),'foreignKey':_0x0a5f('0x108'),'onDelete':_0x0a5f('0x107'),'hooks':!![]});db[_0x0a5f('0x101')][_0x0a5f('0x106')](db[_0x0a5f('0xc1')],{'as':_0x0a5f('0xc1'),'onDelete':'restrict'});db[_0x0a5f('0x101')]['hasOne'](db[_0x0a5f('0x3b')],{'as':_0x0a5f('0x159'),'onDelete':_0x0a5f('0x158')});db[_0x0a5f('0x101')]['hasOne'](db['MailServerOut'],{'as':_0x0a5f('0x1fd'),'onDelete':_0x0a5f('0x158')});module[_0x0a5f('0x1fe')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x554f=['ChatOfflineMessage','ChatOfflineMessageId','TagId','Items','FaxAccountId','Exntensions','FaxMessage','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','Users','SmsQueueId','team_has_sms_queues','Teams','OpenchannelAccountId','OpenchannelApplication','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','ProactiveActions','ChatApplication','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','team_has_chat_queues','ChatGroupId','chat_group_has_users','Contacts','CompanyId','Phones','CmContactId','cm_contact_has_tags','AdditionalPhones','Agent','Campaign','OwnerId','CampaignId','All','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','SmsApplications','DefaultReportId','CustomReportId','Sound','Mohs','whatsapp_interaction_has_tags','ItemType','ItemTypeId','CmHopperId','AllConditions','AllCondition','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','Configurations','AccountId','SubjectId','SalesforceField','DescriptionId','FieldId','Description','VariableId','Subjects','Subject','Field','Descriptions','int_desk_configuration_has_tags','ZohoAccount','ZohoConfiguration','ZendeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','VtigerConfiguration','VtigerField','Dynamics365Account','FreshsalesAccount','FromId','ToId','SessionId','ProjectId','TeamVoiceQueue','team_has_openchannel_queues','OpenchannelQueues','WhatsappQueues','Hoppers','SquareProjectId','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','ToUserId','ToMailQueueId','ToQueue','ToAccount','FromChatWebsiteId','FromAgent','ToAgent','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','FromFaxAccountId','FromUserId','ToFaxQueueId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','Queues','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','WhatsappQueueReport','ToWhatsappAccountId','WhatsappQueueId','user','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','motion2','xcall','127.0.0.1','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','xC@LL1234','mysql','name','database','username','password','options','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','Trunk','../api/trunk/trunk.model','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','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','../api/faxMessage/faxMessage.model','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','ContactItemType','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.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','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','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','../api/setting/setting.model','SquareOdbc','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','../api/attachment/attachment.model','Plugin','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','VoiceMail','cascade','userSetting','hasMany','Recordings','UserId','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','HopperHistory','ReportAgentPreview','OpenchannelInteractions','SmsInteractions','WhatsappInteractions','UserNotification','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','CmContact','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','MailInteractions','user_has_mail_interactions','ChatInteractions','FaxInteractions','user_has_fax_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','MailQueues','ChatQueues','FaxQueue','FaxQueues','SmsQueues','UserOpenchannelQueue','UserWhatsappQueue','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','VoiceContext','Applications','VoiceMusicOnHold','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','mailboxuser','mailbox','VoiceQueueReport','QueueCalls','uniqueid','Contact','ContactId','MailServerIn','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Dispositions','Answers','Messages','Interactions','List','ListId','Template','TemplateId','team_has_mail_queues','MailInteractionId','Account','Owner','Tag','mail_interaction_has_tags','Tags','ThroughTags','Attachment','Attachments','Interaction','ChatWebsiteId'];(function(_0x4b4717,_0x1ab8ff){var _0x56edc8=function(_0x4f89ab){while(--_0x4f89ab){_0x4b4717['push'](_0x4b4717['shift']());}};_0x56edc8(++_0x1ab8ff);}(_0x554f,0x8a));var _0xf554=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x554f[_0x178e48];return _0x440d7e;};'use strict';var config=require(_0xf554('0x0'));var Sequelize=require(_0xf554('0x1'));var _=require(_0xf554('0x2'));var jstz=require(_0xf554('0x3'));var timezone=jstz[_0xf554('0x4')]();config[_0xf554('0x1')]=_[_0xf554('0x5')](config[_0xf554('0x1')],{'database':_0xf554('0x6'),'username':_0xf554('0x7'),'password':'xC@LL1234','options':{'host':_0xf554('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xf554('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xf554('0xa'),'collate':_0xf554('0xb')}}});config[_0xf554('0xc')]=_[_0xf554('0x5')](config[_0xf554('0xc')],{'database':_0xf554('0x6'),'username':_0xf554('0x7'),'password':_0xf554('0xd'),'options':{'host':_0xf554('0x8'),'port':0xcea,'dialect':_0xf554('0xe'),'dialectOptions':{'charset':_0xf554('0x9')},'logging':![],'timezone':timezone[_0xf554('0xf')](),'define':{'charset':_0xf554('0xa'),'collate':_0xf554('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xf554('0x1')][_0xf554('0x10')],config[_0xf554('0x1')][_0xf554('0x11')],config[_0xf554('0x1')][_0xf554('0x12')],config[_0xf554('0x1')][_0xf554('0x13')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xf554('0xc')]['database'],config[_0xf554('0xc')][_0xf554('0x11')],config[_0xf554('0xc')][_0xf554('0x12')],config['sequelizeHistory'][_0xf554('0x13')])};db[_0xf554('0x14')]=db['sequelize'][_0xf554('0x15')]('../api/user/user.model');db[_0xf554('0x16')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x17'));db['VoiceContext']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x18'));db['VoiceExtension']=db['sequelize'][_0xf554('0x15')](_0xf554('0x19'));db['VoiceMusicOnHold']=db['sequelize']['import'](_0xf554('0x1a'));db[_0xf554('0x1b')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x1c'));db[_0xf554('0x1d')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/voiceRecording/voiceRecording.model');db['ScreenRecording']=db['sequelize'][_0xf554('0x15')]('../api/screenRecording/screenRecording.model');db['VoiceMail']=db[_0xf554('0x1')]['import'](_0xf554('0x1e'));db[_0xf554('0x1f')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xf554('0x20')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x21'));db[_0xf554('0x22')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x23'));db[_0xf554('0x24')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x25'));db['VoiceQueueReport']=db[_0xf554('0x1')][_0xf554('0x15')]('../api/voiceQueueReport/voiceQueueReport.model');db['MemberReport']=db[_0xf554('0x1')][_0xf554('0x15')]('../api/memberReport/memberReport.model');db[_0xf554('0x26')]=db['sequelize']['import'](_0xf554('0x27'));db['VoiceTransferReport']=db[_0xf554('0x1')]['import']('../api/voiceTransferReport/voiceTransferReport.model');db[_0xf554('0x28')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x29'));db[_0xf554('0x2a')]=db[_0xf554('0x1')]['import'](_0xf554('0x2b'));db[_0xf554('0x2c')]=db[_0xf554('0x1')]['import'](_0xf554('0x2d'));db[_0xf554('0x2e')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x2f'));db[_0xf554('0x30')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x31'));db[_0xf554('0x32')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x33'));db['UserOpenchannelQueue']=db['sequelize'][_0xf554('0x15')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db['UserWhatsappQueue']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x34'));db['MailServerIn']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x35'));db['MailServerOut']=db[_0xf554('0x1')]['import'](_0xf554('0x36'));db[_0xf554('0x37')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x38'));db[_0xf554('0x39')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x3a'));db[_0xf554('0x3b')]=db[_0xf554('0x1')]['import'](_0xf554('0x3c'));db[_0xf554('0x3d')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x3e'));db[_0xf554('0x3f')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x40'));db[_0xf554('0x41')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x42'));db[_0xf554('0x43')]=db['sequelize']['import'](_0xf554('0x44'));db[_0xf554('0x45')]=db[_0xf554('0x1')]['import']('../api/dashboard/dashboard.model');db[_0xf554('0x46')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x47'));db[_0xf554('0x48')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x49'));db[_0xf554('0x4a')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x4b'));db[_0xf554('0x4c')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x4d'));db['FaxMessage']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x4e'));db['FaxQueue']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x4f'));db[_0xf554('0x50')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x51'));db[_0xf554('0x52')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x53'));db[_0xf554('0x54')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x55'));db[_0xf554('0x56')]=db[_0xf554('0x1')]['import'](_0xf554('0x57'));db[_0xf554('0x58')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/smsMessage/smsMessage.model');db[_0xf554('0x59')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x5a'));db[_0xf554('0x5b')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x5c'));db['OpenchannelApplication']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x5d'));db[_0xf554('0x5e')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x5f'));db[_0xf554('0x60')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x61'));db[_0xf554('0x62')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x63'));db[_0xf554('0x64')]=db[_0xf554('0x1')]['import'](_0xf554('0x65'));db[_0xf554('0x66')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x67'));db['ChatApplication']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x68'));db[_0xf554('0x69')]=db[_0xf554('0x1')]['import'](_0xf554('0x6a'));db[_0xf554('0x6b')]=db[_0xf554('0x1')]['import']('../api/chatMessage/chatMessage.model');db['ChatOfflineMessage']=db['sequelize'][_0xf554('0x15')](_0xf554('0x6c'));db[_0xf554('0x6d')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x6e'));db[_0xf554('0x6f')]=db[_0xf554('0x1')]['import'](_0xf554('0x70'));db[_0xf554('0x71')]=db[_0xf554('0x1')]['import'](_0xf554('0x72'));db[_0xf554('0x73')]=db[_0xf554('0x1')]['import'](_0xf554('0x74'));db['CmContact']=db[_0xf554('0x1')]['import'](_0xf554('0x75'));db[_0xf554('0x76')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x77'));db[_0xf554('0x78')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x79'));db[_0xf554('0x7a')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x7b'));db[_0xf554('0x7c')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/cmHopperHistory/cmHopperHistory.model');db['ReportAgentPreview']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x7d'));db[_0xf554('0x7e')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x7f'));db[_0xf554('0x80')]=db['sequelize']['import'](_0xf554('0x81'));db[_0xf554('0x82')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x83'));db[_0xf554('0x84')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x85'));db[_0xf554('0x86')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x87'));db[_0xf554('0x88')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x89'));db[_0xf554('0x8a')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x8b'));db[_0xf554('0x8c')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x8d'));db[_0xf554('0x8e')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x8f'));db[_0xf554('0x90')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x91'));db[_0xf554('0x92')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x93'));db['Sound']=db['sequelize'][_0xf554('0x15')]('../api/sound/sound.model');db['Tag']=db['sequelize']['import']('../api/tag/tag.model');db[_0xf554('0x94')]=db[_0xf554('0x1')]['import'](_0xf554('0x95'));db[_0xf554('0x96')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x97'));db[_0xf554('0x98')]=db['sequelize']['import'](_0xf554('0x99'));db['Template']=db[_0xf554('0x1')][_0xf554('0x15')]('../api/template/template.model');db[_0xf554('0x9a')]=db['sequelize']['import'](_0xf554('0x9b'));db[_0xf554('0x9c')]=db[_0xf554('0x1')]['import'](_0xf554('0x9d'));db[_0xf554('0x9e')]=db[_0xf554('0x1')]['import'](_0xf554('0x9f'));db[_0xf554('0xa0')]=db['sequelize'][_0xf554('0x15')](_0xf554('0xa1'));db[_0xf554('0xa2')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/analyticCustomReport/analyticCustomReport.model');db[_0xf554('0xa3')]=db[_0xf554('0x1')]['import']('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0xf554('0xa4')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0xf554('0xa5')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xa6'));db[_0xf554('0xa7')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/analyticFieldReport/analyticFieldReport.model');db['AnalyticTreeReport']=db['sequelize'][_0xf554('0x15')](_0xf554('0xa8'));db[_0xf554('0xa9')]=db['sequelize'][_0xf554('0x15')](_0xf554('0xaa'));db[_0xf554('0xab')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xac'));db['SalesforceField']=db[_0xf554('0x1')][_0xf554('0x15')]('../api/intSalesforceField/intSalesforceField.model');db[_0xf554('0xad')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xae'));db[_0xf554('0xaf')]=db['sequelize']['import']('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0xf554('0xb0')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xb1'));db[_0xf554('0xb2')]=db[_0xf554('0x1')]['import']('../api/intDeskAccount/intDeskAccount.model');db[_0xf554('0xb3')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xb4'));db[_0xf554('0xb5')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xb6'));db['ZohoAccount']=db[_0xf554('0x1')]['import'](_0xf554('0xb7'));db['ZohoConfiguration']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xb8'));db[_0xf554('0xb9')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/intZohoField/intZohoField.model');db['ZendeskAccount']=db['sequelize'][_0xf554('0x15')](_0xf554('0xba'));db['ZendeskConfiguration']=db[_0xf554('0x1')]['import'](_0xf554('0xbb'));db[_0xf554('0xbc')]=db[_0xf554('0x1')]['import']('../api/intZendeskField/intZendeskField.model');db[_0xf554('0xbd')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xf554('0xbe')]=db[_0xf554('0x1')]['import'](_0xf554('0xbf'));db[_0xf554('0xc0')]=db[_0xf554('0x1')]['import']('../api/intFreshdeskField/intFreshdeskField.model');db[_0xf554('0xc1')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xc2'));db['VtigerConfiguration']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xc3'));db['VtigerField']=db['sequelize']['import'](_0xf554('0xc4'));db[_0xf554('0xc5')]=db['sequelize'][_0xf554('0x15')](_0xf554('0xc6'));db[_0xf554('0xc7')]=db[_0xf554('0x1')]['import'](_0xf554('0xc8'));db[_0xf554('0xc9')]=db[_0xf554('0x1')]['import'](_0xf554('0xca'));db['Dynamics365Account']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xcb'));db[_0xf554('0xcc')]=db[_0xf554('0x1')]['import'](_0xf554('0xcd'));db[_0xf554('0xce')]=db['sequelize'][_0xf554('0x15')]('../api/intDynamics365Field/intDynamics365Field.model');db['FreshsalesAccount']=db[_0xf554('0x1')][_0xf554('0x15')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0xf554('0xcf')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xd0'));db[_0xf554('0xd1')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xd2'));db[_0xf554('0x9e')]=db['sequelize']['import'](_0xf554('0x9f'));db[_0xf554('0xd3')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xd4'));db[_0xf554('0xd5')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xd6'));db[_0xf554('0xd7')]=db[_0xf554('0x1')]['import'](_0xf554('0xd8'));db[_0xf554('0xd9')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0xf554('0xda')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xdb'));db[_0xf554('0xdc')]=db['sequelize'][_0xf554('0x15')](_0xf554('0xdd'));db[_0xf554('0xde')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xdf'));db[_0xf554('0xe0')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/squareReport/squareReport.model');db[_0xf554('0xe1')]=db[_0xf554('0x1')]['import'](_0xf554('0xe2'));db[_0xf554('0xe3')]=db[_0xf554('0x1')]['import'](_0xf554('0xe4'));db['Setting']=db[_0xf554('0x1')]['import'](_0xf554('0xe5'));db[_0xf554('0xe6')]=db[_0xf554('0x1')][_0xf554('0x15')]('../api/squareOdbc/squareOdbc.model');db[_0xf554('0xe7')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xe8'));db[_0xf554('0xe9')]=db['sequelize'][_0xf554('0x15')](_0xf554('0xea'));db['SquareMessage']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xeb'));db[_0xf554('0xec')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xed'));db[_0xf554('0xee')]=db[_0xf554('0x1')]['import'](_0xf554('0xef'));db['Campaign']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xf0'));db[_0xf554('0xf1')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xf2'));db['Attachment']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xf3'));db[_0xf554('0xf4')]=db['sequelize'][_0xf554('0x15')]('../api/plugin/plugin.model');db['MailTransferReport']=db[_0xf554('0x1')][_0xf554('0x15')]('../api/mailTransferReport/mailTransferReport.model');db[_0xf554('0xf5')]=db['sequelize'][_0xf554('0x15')](_0xf554('0xf6'));db['FaxTransferReport']=db['sequelize'][_0xf554('0x15')](_0xf554('0xf7'));db[_0xf554('0xf8')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0xf9'));db['SmsTransferReport']=db['sequelize'][_0xf554('0x15')](_0xf554('0xfa'));db[_0xf554('0xfb')]=db['sequelize']['import'](_0xf554('0xfc'));db[_0xf554('0xfd')]=db[_0xf554('0x1')]['import'](_0xf554('0xfe'));db[_0xf554('0xff')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x100'));db[_0xf554('0x101')]=db[_0xf554('0x1')]['import'](_0xf554('0x102'));db[_0xf554('0x103')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x104'));db['UserNotification']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x105'));db[_0xf554('0x106')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x107'));db[_0xf554('0x108')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x109'));db[_0xf554('0x10a')]=db[_0xf554('0x1')]['import']('../api/whatsappInteraction/whatsappInteraction.model');db['WhatsappMessage']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x10b'));db['WhatsappQueueReport']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x10c'));db[_0xf554('0x10d')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x10e'));db[_0xf554('0x10f')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x110'));db[_0xf554('0x111')]=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x112'));db['TeamVoiceQueue']=db[_0xf554('0x1')][_0xf554('0x15')](_0xf554('0x113'));db[_0xf554('0x114')]=db[_0xf554('0x1')]['import'](_0xf554('0x115'));db[_0xf554('0x116')]=db['sequelize']['import'](_0xf554('0x117'));db[_0xf554('0x118')]=db['sequelize'][_0xf554('0x15')](_0xf554('0x119'));db['User'][_0xf554('0x11a')](db['VoiceMail'],{'as':_0xf554('0x11b'),'onDelete':_0xf554('0x11c'),'foreignKey':'UserId'});db['User'][_0xf554('0x11a')](db[_0xf554('0x118')],{'as':_0xf554('0x11d'),'onDelete':'cascade','foreignKey':'UserId'});db['User'][_0xf554('0x11e')](db[_0xf554('0x1d')],{'as':_0xf554('0x11f'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x14')][_0xf554('0x11e')](db[_0xf554('0x28')],{'as':_0xf554('0x121'),'foreignKey':_0xf554('0x120')});db['User']['hasMany'](db[_0xf554('0x122')],{'as':_0xf554('0x123'),'onDelete':_0xf554('0x11c'),'hooks':!![]});db['User'][_0xf554('0x11e')](db[_0xf554('0x7a')],{'as':_0xf554('0x124'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x14')]['hasMany'](db[_0xf554('0x7c')],{'as':_0xf554('0x125'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x14')][_0xf554('0x11e')](db[_0xf554('0x126')],{'as':_0xf554('0x126'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x14')][_0xf554('0x11e')](db['OpenchannelInteraction'],{'as':_0xf554('0x127'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x14')][_0xf554('0x11e')](db[_0xf554('0x69')],{'as':'ChatInteractions','foreignKey':_0xf554('0x120')});db[_0xf554('0x14')][_0xf554('0x11e')](db['SmsInteraction'],{'as':_0xf554('0x128'),'foreignKey':'UserId'});db[_0xf554('0x14')][_0xf554('0x11e')](db[_0xf554('0x4c')],{'as':'FaxInteractions','foreignKey':_0xf554('0x120')});db['User']['hasMany'](db[_0xf554('0x3d')],{'as':'MailInteractions','foreignKey':_0xf554('0x120')});db['User'][_0xf554('0x11e')](db[_0xf554('0x10a')],{'as':_0xf554('0x129'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x14')][_0xf554('0x11e')](db[_0xf554('0x12a')],{'as':_0xf554('0x12b'),'foreignKey':_0xf554('0x12c')});db[_0xf554('0x14')][_0xf554('0x12d')](db[_0xf554('0xff')],{'as':_0xf554('0xff'),'foreignKey':_0xf554('0x12e')});db['User'][_0xf554('0x12f')](db[_0xf554('0x6f')],{'as':'Groups','through':'chat_group_has_users'});db['User']['belongsToMany'](db[_0xf554('0x130')],{'as':'Contacts','through':_0xf554('0x131')});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0xfb')],{'as':_0xf554('0x132'),'through':_0xf554('0x133')});db[_0xf554('0x14')]['belongsToMany'](db[_0xf554('0xec')],{'through':_0xf554('0x134')});db['User'][_0xf554('0x12f')](db['MailInteraction'],{'as':_0xf554('0x135'),'through':_0xf554('0x136')});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x69')],{'as':_0xf554('0x137'),'through':'user_has_chat_interactions'});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x4c')],{'as':_0xf554('0x138'),'through':_0xf554('0x139')});db[_0xf554('0x14')]['belongsToMany'](db[_0xf554('0x56')],{'as':_0xf554('0x128'),'through':'user_has_sms_interactions'});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x5e')],{'as':_0xf554('0x127'),'through':_0xf554('0x13a')});db[_0xf554('0x14')]['belongsToMany'](db[_0xf554('0x10a')],{'as':_0xf554('0x129'),'through':_0xf554('0x13b')});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x1b')],{'as':_0xf554('0x13c'),'through':_0xf554('0x2a'),'required':![]});db[_0xf554('0x14')][_0xf554('0x12f')](db['VoicePrefix'],{'as':_0xf554('0x13d'),'through':_0xf554('0x116'),'required':![]});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x39')],{'as':_0xf554('0x13e'),'through':_0xf554('0x2e'),'required':![]});db[_0xf554('0x14')]['belongsToMany'](db['ChatQueue'],{'as':_0xf554('0x13f'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x140')],{'as':_0xf554('0x141'),'through':_0xf554('0x30'),'required':![]});db[_0xf554('0x14')][_0xf554('0x12f')](db['SmsQueue'],{'as':_0xf554('0x142'),'through':_0xf554('0x32'),'required':![]});db['User'][_0xf554('0x12f')](db[_0xf554('0x62')],{'as':'OpenchannelQueues','through':_0xf554('0x143'),'required':![]});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x10f')],{'as':'WhatsappQueues','through':_0xf554('0x144'),'required':![]});db[_0xf554('0x14')]['belongsToMany'](db['CmList'],{'through':_0xf554('0x133')});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x64')],{'as':_0xf554('0x145'),'through':_0xf554('0x146')});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x48')],{'as':_0xf554('0x147'),'through':_0xf554('0x148')});db[_0xf554('0x14')][_0xf554('0x12f')](db['MailAccount'],{'as':_0xf554('0x149'),'through':_0xf554('0x14a')});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x5b')],{'as':_0xf554('0x14b'),'through':_0xf554('0x14c')});db[_0xf554('0x14')][_0xf554('0x12f')](db[_0xf554('0x52')],{'as':_0xf554('0x14d'),'through':_0xf554('0x14e')});db[_0xf554('0x14')][_0xf554('0x12f')](db['WhatsappAccount'],{'as':_0xf554('0x14f'),'through':_0xf554('0x150')});db[_0xf554('0x16')][_0xf554('0x11e')](db[_0xf554('0x122')],{'as':_0xf554('0x151'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x152')});db[_0xf554('0x153')]['hasMany'](db[_0xf554('0x122')],{'onDelete':_0xf554('0x11c')});db[_0xf554('0x122')]['hasMany'](db['VoiceExtension'],{'as':_0xf554('0x154'),'onDelete':'cascade'});db[_0xf554('0x155')][_0xf554('0x12f')](db['Sound'],{'as':_0xf554('0x156'),'through':_0xf554('0x157')});db[_0xf554('0x1b')]['hasMany'](db[_0xf554('0x28')],{'as':_0xf554('0x158'),'foreignKey':_0xf554('0x159')});db[_0xf554('0x1b')][_0xf554('0x11e')](db[_0xf554('0x76')],{'as':'Hoppers','foreignKey':_0xf554('0x159')});db['VoiceQueue'][_0xf554('0x11e')](db[_0xf554('0x7a')],{'as':_0xf554('0x124'),'foreignKey':_0xf554('0x159')});db['VoiceQueue']['hasMany'](db[_0xf554('0x7c')],{'as':_0xf554('0x15a'),'foreignKey':'VoiceQueueId'});db[_0xf554('0x1b')][_0xf554('0x11e')](db[_0xf554('0x126')],{'as':_0xf554('0x126'),'foreignKey':_0xf554('0x159')});db[_0xf554('0x1b')][_0xf554('0x11e')](db['CmHopperBlack'],{'as':_0xf554('0x15b'),'foreignKey':'VoiceQueueId'});db[_0xf554('0x1b')]['hasMany'](db[_0xf554('0xdc')],{'as':_0xf554('0x15c'),'foreignKey':_0xf554('0x159')});db[_0xf554('0x1b')][_0xf554('0x12d')](db[_0xf554('0x26')],{'as':_0xf554('0x26'),'foreignKey':_0xf554('0x15d')});db[_0xf554('0x1b')]['belongsTo'](db[_0xf554('0x26')],{'as':_0xf554('0x15e'),'foreignKey':_0xf554('0x15f')});db[_0xf554('0x1b')]['belongsTo'](db['Interval'],{'as':_0xf554('0x8a'),'foreignKey':_0xf554('0x160')});db[_0xf554('0x1b')][_0xf554('0x12d')](db[_0xf554('0x8c')],{'as':_0xf554('0x161'),'foreignKey':_0xf554('0x162')});db[_0xf554('0x1b')][_0xf554('0x12f')](db[_0xf554('0xfb')],{'as':_0xf554('0x132'),'through':_0xf554('0x163')});db[_0xf554('0x1b')][_0xf554('0x12f')](db['User'],{'as':_0xf554('0x164'),'through':_0xf554('0x2a')});db[_0xf554('0x1b')][_0xf554('0x12f')](db[_0xf554('0xec')],{'as':'Teams','through':'TeamVoiceQueue'});db[_0xf554('0x1b')][_0xf554('0x12f')](db[_0xf554('0xfb')],{'as':_0xf554('0x165'),'through':_0xf554('0x166')});db[_0xf554('0x1d')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x14'),'foreignKey':'UserId'});db[_0xf554('0x167')]['belongsTo'](db['User'],{'as':'User','foreignKey':'UserId'});db[_0xf554('0x11b')]['hasMany'](db[_0xf554('0x1f')],{'as':'Messages','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x168'),'sourceKey':_0xf554('0x169')});db[_0xf554('0x1f')]['belongsTo'](db['VoiceMail'],{'foreignKey':_0xf554('0x168'),'targetKey':'mailbox'});db['VoiceCallReport']['hasMany'](db[_0xf554('0x16a')],{'as':_0xf554('0x16b'),'foreignKey':_0xf554('0x16c'),'constraints':![]});db['VoiceCallReport']['hasMany'](db[_0xf554('0x24')],{'as':'AgentReports','foreignKey':_0xf554('0x16c'),'constraints':![]});db['VoiceCallReport']['belongsTo'](db[_0xf554('0x14')],{'as':_0xf554('0x14'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x20')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db[_0xf554('0x16f')]['belongsTo'](db['MailAccount'],{'as':_0xf554('0x37'),'foreignKey':_0xf554('0x170')});db['MailServerIn'][_0xf554('0x12d')](db[_0xf554('0x111')],{'as':_0xf554('0x111'),'foreignKey':_0xf554('0x171'),'onDelete':'restrict'});db[_0xf554('0x172')][_0xf554('0x12d')](db['MailAccount'],{'as':_0xf554('0x37'),'foreignKey':'MailAccountId'});db[_0xf554('0x172')][_0xf554('0x12d')](db[_0xf554('0x111')],{'as':_0xf554('0x111'),'foreignKey':_0xf554('0x171'),'onDelete':_0xf554('0x173')});db[_0xf554('0x37')][_0xf554('0x11a')](db[_0xf554('0x16f')],{'as':_0xf554('0x174'),'onDelete':_0xf554('0x11c')});db['MailAccount'][_0xf554('0x11a')](db[_0xf554('0x172')],{'as':_0xf554('0x175'),'onDelete':_0xf554('0x11c')});db['MailAccount'][_0xf554('0x11e')](db[_0xf554('0x86')],{'as':_0xf554('0x176'),'foreignKey':_0xf554('0x170'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x37')][_0xf554('0x11e')](db[_0xf554('0x84')],{'as':_0xf554('0x177'),'foreignKey':_0xf554('0x170')});db[_0xf554('0x37')][_0xf554('0x11e')](db[_0xf554('0x3f')],{'as':_0xf554('0x178'),'foreignKey':_0xf554('0x170')});db[_0xf554('0x37')]['hasMany'](db[_0xf554('0x3d')],{'as':_0xf554('0x179')});db[_0xf554('0x37')]['hasMany'](db[_0xf554('0x41')],{'as':_0xf554('0x154')});db['MailAccount'][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b')});db['MailAccount'][_0xf554('0x12d')](db['Template'],{'as':_0xf554('0x17c'),'foreignKey':_0xf554('0x17d')});db[_0xf554('0x37')][_0xf554('0x12d')](db[_0xf554('0x8c')],{'as':_0xf554('0x161'),'foreignKey':_0xf554('0x162')});db['MailAccount'][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x14a')});db['MailQueue']['belongsToMany'](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x2e')});db[_0xf554('0x39')][_0xf554('0x12f')](db[_0xf554('0xec')],{'through':_0xf554('0x17e'),'as':'Teams'});db[_0xf554('0x3d')]['hasMany'](db['MailMessage'],{'as':_0xf554('0x178'),'onDelete':'cascade','foreignKey':_0xf554('0x17f')});db['MailInteraction']['belongsTo'](db[_0xf554('0x37')],{'as':_0xf554('0x180'),'foreignKey':'MailAccountId'});db[_0xf554('0x3d')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':'Contact','foreignKey':_0xf554('0x16e')});db['MailInteraction'][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x181'),'foreignKey':_0xf554('0x120')});db['MailInteraction'][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':_0xf554('0x183'),'as':_0xf554('0x184')});db[_0xf554('0x3d')][_0xf554('0x12f')](db['Tag'],{'through':'mail_interaction_has_tags','as':_0xf554('0x185')});db['MailInteraction'][_0xf554('0x12f')](db['User'],{'as':'Users','through':_0xf554('0x136'),'foreignKey':_0xf554('0x17f')});db['MailMessage']['hasMany'](db[_0xf554('0x186')],{'as':_0xf554('0x187'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x3f')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x14')});db[_0xf554('0x3f')]['belongsTo'](db[_0xf554('0x130')],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x16d')});db['MailMessage'][_0xf554('0x12d')](db[_0xf554('0x3d')],{'as':_0xf554('0x188'),'foreignKey':_0xf554('0x17f')});db[_0xf554('0x3f')]['belongsTo'](db[_0xf554('0x37')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x170')});db[_0xf554('0x3f')][_0xf554('0x12d')](db[_0xf554('0x64')],{'as':_0xf554('0x64'),'foreignKey':_0xf554('0x189')});db[_0xf554('0x3f')][_0xf554('0x12d')](db[_0xf554('0x18a')],{'as':'ChatOfflineMessage','foreignKey':_0xf554('0x18b')});db[_0xf554('0x41')][_0xf554('0x12d')](db[_0xf554('0x14')],{'onDelete':_0xf554('0x173')});db[_0xf554('0x41')][_0xf554('0x12d')](db[_0xf554('0x39')],{'onDelete':'restrict'});db['MailApplication']['belongsTo'](db[_0xf554('0x37')],{'onDelete':_0xf554('0x173')});db[_0xf554('0x41')][_0xf554('0x12d')](db[_0xf554('0x8a')],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x160')});db[_0xf554('0x41')][_0xf554('0x12d')](db['Tag'],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x18c')});db[_0xf554('0x43')][_0xf554('0x12d')](db['MailAccount'],{});db[_0xf554('0x43')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':'List','foreignKey':'ListId'});db[_0xf554('0x43')]['belongsTo'](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db[_0xf554('0x43')][_0xf554('0x12d')](db[_0xf554('0x3d')],{});db[_0xf554('0x43')][_0xf554('0x12d')](db[_0xf554('0x3f')],{});db[_0xf554('0x43')]['belongsTo'](db[_0xf554('0x14')],{});db[_0xf554('0x43')][_0xf554('0x12d')](db[_0xf554('0x39')],{});db[_0xf554('0x45')]['hasMany'](db['DashboardItem'],{'as':_0xf554('0x18d'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x48')]['hasMany'](db[_0xf554('0x86')],{'as':_0xf554('0x176'),'foreignKey':_0xf554('0x18e'),'onDelete':_0xf554('0x11c')});db['FaxAccount'][_0xf554('0x11e')](db[_0xf554('0x84')],{'as':'Answers','foreignKey':_0xf554('0x18e')});db[_0xf554('0x48')][_0xf554('0x11e')](db[_0xf554('0x4c')],{'as':_0xf554('0x179')});db[_0xf554('0x48')][_0xf554('0x11e')](db[_0xf554('0x4a')],{'as':_0xf554('0x154')});db['FaxAccount'][_0xf554('0x11e')](db['VoiceExtension'],{'as':_0xf554('0x18f'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x48')]['hasMany'](db[_0xf554('0x190')],{'as':_0xf554('0x178')});db['FaxAccount'][_0xf554('0x12d')](db[_0xf554('0x26')],{'as':_0xf554('0x26')});db[_0xf554('0x48')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':'List','foreignKey':'ListId'});db[_0xf554('0x48')][_0xf554('0x12d')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xf554('0x162')});db[_0xf554('0x48')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x148')});db[_0xf554('0x4a')]['belongsTo'](db[_0xf554('0x14')],{'onDelete':_0xf554('0x173')});db[_0xf554('0x4a')][_0xf554('0x12d')](db[_0xf554('0x140')],{'onDelete':'restrict'});db['FaxApplication'][_0xf554('0x12d')](db[_0xf554('0x48')],{'onDelete':_0xf554('0x173')});db['FaxApplication'][_0xf554('0x12d')](db[_0xf554('0x182')],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x18c')});db[_0xf554('0x4c')]['hasMany'](db[_0xf554('0x190')],{'as':_0xf554('0x178'),'onDelete':'cascade','foreignKey':_0xf554('0x191')});db['FaxInteraction'][_0xf554('0x12d')](db['FaxAccount'],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x18e')});db[_0xf554('0x4c')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db['FaxInteraction'][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x181'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x4c')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':_0xf554('0x192'),'as':_0xf554('0x184')});db[_0xf554('0x4c')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':'fax_interaction_has_tags','as':'ThroughTags'});db[_0xf554('0x4c')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':'Users','through':_0xf554('0x139'),'foreignKey':'FaxInteractionId'});db[_0xf554('0x190')][_0xf554('0x12d')](db['User'],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x14')});db[_0xf554('0x190')]['belongsTo'](db[_0xf554('0x4c')],{'as':_0xf554('0x188'),'foreignKey':'FaxInteractionId'});db[_0xf554('0x190')][_0xf554('0x12d')](db[_0xf554('0x130')],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x16d')});db[_0xf554('0x190')][_0xf554('0x12d')](db[_0xf554('0x186')],{'as':_0xf554('0x186'),'foreignKey':_0xf554('0x193')});db[_0xf554('0x190')][_0xf554('0x12d')](db[_0xf554('0x48')],{'as':'Account','foreignKey':_0xf554('0x18e')});db[_0xf554('0x140')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x30')});db['FaxQueue'][_0xf554('0x12f')](db[_0xf554('0xec')],{'through':_0xf554('0x194'),'as':'Teams'});db['FaxQueueReport']['belongsTo'](db[_0xf554('0x48')],{});db[_0xf554('0x50')]['belongsTo'](db[_0xf554('0xfb')],{'as':'List','foreignKey':_0xf554('0x17b')});db[_0xf554('0x50')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':'Contact','foreignKey':_0xf554('0x16e')});db[_0xf554('0x50')][_0xf554('0x12d')](db[_0xf554('0x4c')],{});db[_0xf554('0x50')][_0xf554('0x12d')](db[_0xf554('0x190')],{});db[_0xf554('0x50')]['belongsTo'](db[_0xf554('0x14')],{});db['FaxQueueReport'][_0xf554('0x12d')](db['FaxQueue'],{});db[_0xf554('0x52')][_0xf554('0x11e')](db[_0xf554('0x86')],{'as':_0xf554('0x176'),'foreignKey':_0xf554('0x195'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x52')][_0xf554('0x11e')](db[_0xf554('0x84')],{'as':_0xf554('0x177'),'foreignKey':_0xf554('0x195')});db[_0xf554('0x52')][_0xf554('0x11e')](db[_0xf554('0x58')],{'as':'Messages','foreignKey':'SmsAccountId'});db['SmsAccount'][_0xf554('0x11e')](db['SmsInteraction'],{'as':_0xf554('0x179')});db[_0xf554('0x52')][_0xf554('0x11e')](db[_0xf554('0x54')],{'as':_0xf554('0x154')});db[_0xf554('0x52')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':'List','foreignKey':_0xf554('0x17b')});db[_0xf554('0x52')][_0xf554('0x12d')](db['Pause'],{'as':_0xf554('0x161'),'foreignKey':_0xf554('0x162')});db[_0xf554('0x52')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x14e')});db[_0xf554('0x54')][_0xf554('0x12d')](db[_0xf554('0x14')],{'onDelete':_0xf554('0x173')});db[_0xf554('0x54')]['belongsTo'](db['SmsQueue'],{'onDelete':_0xf554('0x173')});db['SmsApplication'][_0xf554('0x12d')](db[_0xf554('0x52')],{'onDelete':_0xf554('0x173')});db[_0xf554('0x54')][_0xf554('0x12d')](db['Interval'],{'onDelete':'restrict','foreignKey':'IntervalId'});db['SmsApplication'][_0xf554('0x12d')](db[_0xf554('0x182')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xf554('0x56')][_0xf554('0x11e')](db[_0xf554('0x58')],{'as':'Messages','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x196')});db[_0xf554('0x56')][_0xf554('0x12d')](db[_0xf554('0x52')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x195')});db['SmsInteraction']['belongsTo'](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':'ContactId'});db[_0xf554('0x56')]['belongsTo'](db[_0xf554('0x14')],{'as':_0xf554('0x181'),'foreignKey':'UserId'});db[_0xf554('0x56')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':_0xf554('0x197'),'as':_0xf554('0x184')});db[_0xf554('0x56')][_0xf554('0x12f')](db['Tag'],{'through':_0xf554('0x197'),'as':_0xf554('0x185')});db['SmsInteraction'][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x198'),'through':'user_has_sms_interactions','foreignKey':_0xf554('0x196')});db[_0xf554('0x58')][_0xf554('0x12d')](db['User'],{'as':_0xf554('0x14')});db['SmsMessage'][_0xf554('0x12d')](db[_0xf554('0x130')],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x16d')});db[_0xf554('0x58')][_0xf554('0x12d')](db[_0xf554('0x56')],{'onDelete':_0xf554('0x11c'),'as':'Interaction','foreignKey':_0xf554('0x196')});db['SmsMessage'][_0xf554('0x12d')](db[_0xf554('0x52')],{'as':'Account','foreignKey':_0xf554('0x195')});db[_0xf554('0x59')][_0xf554('0x12f')](db['User'],{'as':'Agents','through':_0xf554('0x32'),'foreignKey':_0xf554('0x199')});db[_0xf554('0x59')][_0xf554('0x12f')](db[_0xf554('0xec')],{'through':_0xf554('0x19a'),'as':_0xf554('0x19b')});db[_0xf554('0x5b')]['hasMany'](db[_0xf554('0x86')],{'as':_0xf554('0x176'),'foreignKey':_0xf554('0x19c'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x5b')][_0xf554('0x11e')](db[_0xf554('0x84')],{'as':_0xf554('0x177'),'foreignKey':'OpenchannelAccountId'});db[_0xf554('0x5b')]['hasMany'](db[_0xf554('0x5e')],{'as':_0xf554('0x179'),'foreignKey':_0xf554('0x19c')});db[_0xf554('0x5b')][_0xf554('0x11e')](db[_0xf554('0x60')],{'as':_0xf554('0x178'),'foreignKey':_0xf554('0x19c')});db['OpenchannelAccount']['hasMany'](db[_0xf554('0x19d')],{'as':'Applications','foreignKey':_0xf554('0x19c')});db[_0xf554('0x5b')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':'List','foreignKey':_0xf554('0x17b')});db['OpenchannelAccount'][_0xf554('0x12d')](db[_0xf554('0x8c')],{'as':_0xf554('0x161'),'foreignKey':_0xf554('0x162')});db[_0xf554('0x5b')][_0xf554('0x12f')](db['User'],{'as':_0xf554('0x164'),'through':_0xf554('0x14c')});db[_0xf554('0x19d')][_0xf554('0x12d')](db[_0xf554('0x14')],{'onDelete':_0xf554('0x173')});db[_0xf554('0x19d')][_0xf554('0x12d')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0xf554('0x19e')});db[_0xf554('0x19d')][_0xf554('0x12d')](db[_0xf554('0x5b')],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x19c')});db[_0xf554('0x19d')]['belongsTo'](db['Interval'],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x160')});db[_0xf554('0x19d')]['belongsTo'](db[_0xf554('0x182')],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x18c')});db['OpenchannelInteraction'][_0xf554('0x11e')](db[_0xf554('0x60')],{'as':'Messages','onDelete':'cascade','foreignKey':_0xf554('0x19f')});db[_0xf554('0x5e')][_0xf554('0x12d')](db[_0xf554('0x5b')],{'as':_0xf554('0x180'),'foreignKey':'OpenchannelAccountId'});db[_0xf554('0x5e')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db['OpenchannelInteraction'][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x181'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x5e')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':_0xf554('0x1a0'),'as':_0xf554('0x184')});db[_0xf554('0x5e')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':'openchannel_interaction_has_tags','as':_0xf554('0x185')});db[_0xf554('0x5e')]['belongsToMany'](db[_0xf554('0x14')],{'as':_0xf554('0x198'),'through':_0xf554('0x13a'),'foreignKey':_0xf554('0x19f')});db['OpenchannelMessage'][_0xf554('0x12d')](db[_0xf554('0x14')],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x14')});db[_0xf554('0x60')]['belongsTo'](db[_0xf554('0x130')],{'onDelete':_0xf554('0x11c'),'as':'Contact'});db[_0xf554('0x60')][_0xf554('0x12d')](db['OpenchannelInteraction'],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x188'),'foreignKey':_0xf554('0x19f')});db[_0xf554('0x60')][_0xf554('0x12d')](db['Attachment'],{'as':_0xf554('0x186'),'foreignKey':_0xf554('0x193')});db[_0xf554('0x60')][_0xf554('0x12d')](db[_0xf554('0x5b')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x19c')});db['OpenchannelQueue'][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x143'),'foreignKey':_0xf554('0x19e')});db[_0xf554('0x62')]['belongsToMany'](db['Team'],{'through':'team_has_openchannel_queues','as':'Teams'});db['ChatWebsite'][_0xf554('0x11e')](db[_0xf554('0x86')],{'as':_0xf554('0x176'),'foreignKey':_0xf554('0x189'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x64')][_0xf554('0x11e')](db['CannedAnswer'],{'as':_0xf554('0x177'),'foreignKey':'ChatWebsiteId'});db[_0xf554('0x64')][_0xf554('0x11e')](db['ChatProactiveAction'],{'as':_0xf554('0x1a1')});db[_0xf554('0x64')][_0xf554('0x11e')](db[_0xf554('0x69')],{'as':_0xf554('0x179')});db[_0xf554('0x64')][_0xf554('0x11e')](db[_0xf554('0x1a2')],{'as':_0xf554('0x154')});db[_0xf554('0x64')][_0xf554('0x11e')](db[_0xf554('0x6b')],{'as':_0xf554('0x178')});db[_0xf554('0x64')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b')});db['ChatWebsite']['belongsTo'](db[_0xf554('0x8a')],{'as':_0xf554('0x8a'),'foreignKey':_0xf554('0x160')});db['ChatWebsite']['belongsTo'](db[_0xf554('0x37')],{'as':'MailAccount','foreignKey':'MailAccountId'});db[_0xf554('0x64')][_0xf554('0x12d')](db[_0xf554('0x8c')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0xf554('0x64')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x146')});db[_0xf554('0x66')][_0xf554('0x12d')](db[_0xf554('0x5b')],{});db[_0xf554('0x66')][_0xf554('0x12d')](db['CmList'],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b')});db[_0xf554('0x66')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db[_0xf554('0x66')][_0xf554('0x12d')](db[_0xf554('0x5e')],{});db[_0xf554('0x66')]['belongsTo'](db[_0xf554('0x60')],{});db[_0xf554('0x66')]['belongsTo'](db[_0xf554('0x14')],{});db[_0xf554('0x66')][_0xf554('0x12d')](db[_0xf554('0x62')],{});db[_0xf554('0x1a2')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':'Agent','foreignKey':_0xf554('0x120'),'onDelete':_0xf554('0x173')});db['ChatApplication'][_0xf554('0x12d')](db[_0xf554('0x6d')],{'as':_0xf554('0x1a3'),'foreignKey':_0xf554('0x1a4'),'onDelete':'restrict'});db['ChatApplication'][_0xf554('0x12d')](db[_0xf554('0x64')],{'as':_0xf554('0x1a5'),'foreignKey':_0xf554('0x189'),'onDelete':_0xf554('0x173')});db['ChatApplication'][_0xf554('0x12d')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xf554('0x69')][_0xf554('0x11e')](db['ChatMessage'],{'as':'Messages','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1a6')});db[_0xf554('0x69')][_0xf554('0x12d')](db[_0xf554('0x64')],{'as':_0xf554('0x180'),'foreignKey':'ChatWebsiteId'});db[_0xf554('0x69')][_0xf554('0x12d')](db['CmContact'],{'as':'Contact','foreignKey':_0xf554('0x16e')});db[_0xf554('0x69')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x181'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x69')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':_0xf554('0x1a7'),'as':'Tags'});db[_0xf554('0x69')][_0xf554('0x12f')](db['Tag'],{'through':_0xf554('0x1a7'),'as':_0xf554('0x185')});db[_0xf554('0x69')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x198'),'through':_0xf554('0x1a8'),'foreignKey':'ChatInteractionId'});db[_0xf554('0x6b')]['belongsTo'](db[_0xf554('0x14')],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x14')});db[_0xf554('0x6b')][_0xf554('0x12d')](db[_0xf554('0x130')],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x16d'),'foreignKey':'ContactId'});db[_0xf554('0x6b')]['belongsTo'](db['ChatInteraction'],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x188'),'foreignKey':'ChatInteractionId'});db['ChatMessage']['belongsTo'](db[_0xf554('0x186')],{'as':_0xf554('0x186'),'foreignKey':_0xf554('0x193')});db[_0xf554('0x6b')][_0xf554('0x12d')](db[_0xf554('0x64')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x189')});db[_0xf554('0x18a')][_0xf554('0x11e')](db[_0xf554('0x186')],{'as':_0xf554('0x187'),'foreignKey':_0xf554('0x18b'),'onDelete':_0xf554('0x11c'),'hooks':!![]});db[_0xf554('0x18a')][_0xf554('0x12d')](db[_0xf554('0x130')],{'onDelete':_0xf554('0x11c'),'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db[_0xf554('0x18a')][_0xf554('0x12d')](db['ChatWebsite'],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x189')});db['ChatQueue'][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x2c'),'hooks':!![]});db[_0xf554('0x6d')][_0xf554('0x12f')](db[_0xf554('0xec')],{'through':_0xf554('0x1a9'),'as':'Teams'});db[_0xf554('0x6f')][_0xf554('0x11e')](db[_0xf554('0xd7')],{'as':_0xf554('0x178'),'foreignKey':_0xf554('0x1aa'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x6f')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x158'),'through':_0xf554('0x1ab')});db[_0xf554('0x71')]['belongsTo'](db[_0xf554('0x64')],{'as':_0xf554('0x1a5'),'foreignKey':_0xf554('0x189')});db[_0xf554('0x73')][_0xf554('0x11e')](db[_0xf554('0x130')],{'as':_0xf554('0x1ac'),'foreignKey':_0xf554('0x1ad')});db[_0xf554('0x130')][_0xf554('0x11e')](db[_0xf554('0x96')],{'as':_0xf554('0x1ae'),'foreignKey':_0xf554('0x1af')});db[_0xf554('0x130')][_0xf554('0x11e')](db['CmHopper'],{'as':'Hoppers','foreignKey':_0xf554('0x16e')});db[_0xf554('0x130')]['hasMany'](db[_0xf554('0x7a')],{'as':'HopperFinals','foreignKey':_0xf554('0x16e')});db['CmContact']['hasMany'](db['CmHopperHistory'],{'as':_0xf554('0x15a'),'foreignKey':_0xf554('0x16e')});db[_0xf554('0x130')][_0xf554('0x11e')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xf554('0x16e')});db[_0xf554('0x130')]['hasMany'](db[_0xf554('0xdc')],{'as':_0xf554('0x15c'),'foreignKey':_0xf554('0x16e')});db['CmContact'][_0xf554('0x11e')](db[_0xf554('0x5e')],{'as':_0xf554('0x127'),'foreignKey':_0xf554('0x16e'),'onDelete':_0xf554('0x173')});db['CmContact'][_0xf554('0x11e')](db[_0xf554('0x69')],{'as':'ChatInteractions','foreignKey':_0xf554('0x16e'),'onDelete':_0xf554('0x173')});db[_0xf554('0x130')][_0xf554('0x11e')](db[_0xf554('0x56')],{'as':'SmsInteractions','foreignKey':_0xf554('0x16e'),'onDelete':'restrict'});db[_0xf554('0x130')][_0xf554('0x11e')](db[_0xf554('0x4c')],{'as':_0xf554('0x138'),'foreignKey':_0xf554('0x16e'),'onDelete':_0xf554('0x173')});db['CmContact'][_0xf554('0x11e')](db[_0xf554('0x3d')],{'as':_0xf554('0x135'),'foreignKey':_0xf554('0x16e'),'onDelete':_0xf554('0x173')});db[_0xf554('0x130')][_0xf554('0x12d')](db[_0xf554('0x73')],{'as':'Company','foreignKey':'CompanyId'});db[_0xf554('0x130')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':'List','foreignKey':_0xf554('0x17b'),'onDelete':'cascade'});db[_0xf554('0x130')]['belongsToMany'](db[_0xf554('0x14')],{'as':'Users','through':_0xf554('0x131')});db[_0xf554('0x130')][_0xf554('0x12f')](db[_0xf554('0x182')],{'as':_0xf554('0x184'),'through':'cm_contact_has_tags'});db[_0xf554('0x130')]['belongsToMany'](db['Tag'],{'through':_0xf554('0x1b0'),'as':_0xf554('0x185')});db[_0xf554('0x76')][_0xf554('0x11e')](db[_0xf554('0x98')],{'as':_0xf554('0x1b1'),'foreignKey':'CmHopperId'});db[_0xf554('0x76')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':'Contact','foreignKey':_0xf554('0x16e'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x76')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x76')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x1b2'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x76')]['belongsTo'](db['VoiceQueue'],{'as':_0xf554('0x1a3'),'foreignKey':_0xf554('0x159'),'onDelete':'cascade'});db[_0xf554('0x76')][_0xf554('0x12d')](db[_0xf554('0x1b3')],{'as':_0xf554('0x1b3'),'foreignKey':'CampaignId','onDelete':_0xf554('0x11c')});db[_0xf554('0x76')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x181'),'foreignKey':_0xf554('0x1b4')});db[_0xf554('0x78')]['belongsTo'](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e'),'onDelete':_0xf554('0x11c')});db['CmHopperBlack']['belongsTo'](db[_0xf554('0xfb')],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x78')]['belongsTo'](db[_0xf554('0x1b')],{'as':'Queue','foreignKey':_0xf554('0x159'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x78')][_0xf554('0x12d')](db[_0xf554('0x1b3')],{'as':'Campaign','foreignKey':_0xf554('0x1b5'),'onDelete':'cascade'});db[_0xf554('0x82')]['hasMany'](db[_0xf554('0x88')],{'as':{'plural':_0xf554('0x1b6'),'singular':'OneAll'},'foreignKey':_0xf554('0x1b7'),'onDelete':_0xf554('0x11c'),'hooks':!![]});db['Automation'][_0xf554('0x11e')](db[_0xf554('0x88')],{'as':{'plural':_0xf554('0x1b8'),'singular':_0xf554('0x1b9')},'foreignKey':_0xf554('0x1ba'),'onDelete':_0xf554('0x11c'),'hooks':!![]});db[_0xf554('0x82')][_0xf554('0x11e')](db[_0xf554('0x80')],{'as':_0xf554('0x1bb'),'foreignKey':_0xf554('0x1bc'),'onDelete':_0xf554('0x11c'),'hooks':!![]});db[_0xf554('0x86')][_0xf554('0x11e')](db[_0xf554('0x86')],{'as':_0xf554('0x176'),'foreignKey':_0xf554('0x1bd'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x8a')][_0xf554('0x11e')](db[_0xf554('0x8a')],{'as':_0xf554('0x1be'),'foreignKey':'IntervalId','onDelete':'cascade','hooks':!![],'required':![]});db[_0xf554('0x8a')][_0xf554('0x11e')](db[_0xf554('0x122')],{'as':_0xf554('0x123'),'foreignKey':'IntervalId','onDelete':_0xf554('0x173')});db[_0xf554('0x8a')]['hasMany'](db[_0xf554('0x41')],{'as':_0xf554('0x1bf'),'foreignKey':_0xf554('0x160')});db[_0xf554('0x8a')][_0xf554('0x11e')](db[_0xf554('0x1a2')],{'as':_0xf554('0x1c0'),'foreignKey':_0xf554('0x160')});db[_0xf554('0x8a')][_0xf554('0x11e')](db[_0xf554('0x4a')],{'as':'FaxApplications','foreignKey':_0xf554('0x160')});db[_0xf554('0x8a')][_0xf554('0x11e')](db['SmsApplication'],{'as':_0xf554('0x1c1'),'foreignKey':_0xf554('0x160')});db[_0xf554('0x92')][_0xf554('0x12d')](db[_0xf554('0x37')],{});db[_0xf554('0x92')][_0xf554('0x12d')](db[_0xf554('0xa3')],{'foreignKey':_0xf554('0x1c2')});db[_0xf554('0x92')][_0xf554('0x12d')](db[_0xf554('0xa2')],{'foreignKey':_0xf554('0x1c3')});db[_0xf554('0x1c4')][_0xf554('0x12f')](db[_0xf554('0x155')],{'as':_0xf554('0x1c5'),'through':'moh_has_sounds','onDelete':_0xf554('0x173')});db[_0xf554('0x182')]['belongsToMany'](db[_0xf554('0x130')],{'through':_0xf554('0x1b0')});db[_0xf554('0x182')]['belongsToMany'](db[_0xf554('0x69')],{'through':'chat_interaction_has_tags'});db[_0xf554('0x182')]['belongsToMany'](db[_0xf554('0x3d')],{'through':_0xf554('0x183')});db[_0xf554('0x182')][_0xf554('0x12f')](db[_0xf554('0x56')],{'through':_0xf554('0x197')});db[_0xf554('0x182')]['belongsToMany'](db[_0xf554('0x4c')],{'through':_0xf554('0x192')});db[_0xf554('0x182')][_0xf554('0x12f')](db[_0xf554('0x5e')],{'through':_0xf554('0x1a0')});db[_0xf554('0x182')][_0xf554('0x12f')](db[_0xf554('0x10a')],{'through':_0xf554('0x1c6')});db[_0xf554('0x96')][_0xf554('0x12d')](db[_0xf554('0x94')],{'as':_0xf554('0x1c7'),'foreignKey':_0xf554('0x1c8')});db[_0xf554('0x98')]['belongsTo'](db[_0xf554('0x76')],{'as':'Hopper','foreignKey':_0xf554('0x1c9')});db[_0xf554('0x96')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x1af')});db[_0xf554('0x9a')][_0xf554('0x11e')](db[_0xf554('0x88')],{'as':{'plural':_0xf554('0x1ca'),'singular':_0xf554('0x1cb')},'foreignKey':'TriggerAllId','onDelete':'cascade','hooks':!![]});db['Trigger'][_0xf554('0x11e')](db[_0xf554('0x88')],{'as':{'plural':'AnyConditions','singular':_0xf554('0x1cc')},'foreignKey':_0xf554('0x1cd'),'onDelete':_0xf554('0x11c'),'hooks':!![]});db['Trigger'][_0xf554('0x11e')](db['Action'],{'as':_0xf554('0x1bb'),'foreignKey':_0xf554('0x1ce'),'onDelete':_0xf554('0x11c'),'hooks':!![]});db[_0xf554('0xa2')][_0xf554('0x11e')](db[_0xf554('0xa7')],{'as':_0xf554('0x1cf'),'onDelete':'cascade','foreignKey':_0xf554('0x1c3'),'hooks':!![]});db['AnalyticDefaultReport']['hasMany'](db[_0xf554('0xa7')],{'as':_0xf554('0x1cf'),'onDelete':_0xf554('0x11c'),'foreignKey':'DefaultReportId'});db[_0xf554('0xa5')][_0xf554('0x11e')](db[_0xf554('0xa7')],{'as':'Fields','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d0')});db['AnalyticFieldReport'][_0xf554('0x12d')](db['AnalyticMetric'],{'foreignKey':_0xf554('0x1d0')});db[_0xf554('0xa9')][_0xf554('0x11e')](db[_0xf554('0xab')],{'as':_0xf554('0x1d1'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0xab')]['hasMany'](db['SalesforceField'],{'as':'Subjects','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0xab')][_0xf554('0x11e')](db[_0xf554('0x1d4')],{'as':'Descriptions','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0xab')]['hasMany'](db['SalesforceField'],{'as':_0xf554('0x1cf'),'onDelete':'cascade','foreignKey':_0xf554('0x1d6')});db[_0xf554('0xab')][_0xf554('0x12d')](db[_0xf554('0xa9')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0x1d4')][_0xf554('0x11e')](db[_0xf554('0x1d4')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xf554('0x1d4')]['hasMany'](db['SalesforceField'],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0x1d4')][_0xf554('0x11e')](db[_0xf554('0x1d4')],{'as':'Field','foreignKey':'FieldId'});db['SalesforceField']['belongsTo'](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0xad')][_0xf554('0x11e')](db[_0xf554('0xaf')],{'as':'Configurations','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0xaf')][_0xf554('0x11e')](db['SugarcrmField'],{'as':_0xf554('0x1d9'),'onDelete':_0xf554('0x11c'),'foreignKey':'SubjectId'});db[_0xf554('0xaf')][_0xf554('0x11e')](db[_0xf554('0xb0')],{'as':'Descriptions','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0xaf')][_0xf554('0x11e')](db['SugarcrmField'],{'as':_0xf554('0x1cf'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xaf')]['belongsTo'](db[_0xf554('0xad')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0xb0')]['hasMany'](db[_0xf554('0xb0')],{'as':_0xf554('0x1da'),'foreignKey':_0xf554('0x1d3')});db['SugarcrmField'][_0xf554('0x11e')](db['SugarcrmField'],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db['SugarcrmField'][_0xf554('0x11e')](db[_0xf554('0xb0')],{'as':_0xf554('0x1db'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xb0')][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0xb2')][_0xf554('0x11e')](db['DeskConfiguration'],{'as':_0xf554('0x1d1'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d2')});db['DeskConfiguration'][_0xf554('0x11e')](db['DeskField'],{'as':_0xf554('0x1d9'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xf554('0xb3')][_0xf554('0x11e')](db[_0xf554('0xb5')],{'as':_0xf554('0x1dc'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d5')});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':_0xf554('0x1cf'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xb3')][_0xf554('0x12d')](db['DeskAccount'],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0xb3')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':_0xf554('0x1dd')});db['DeskField']['hasMany'](db[_0xf554('0xb5')],{'as':_0xf554('0x1da'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0xb5')][_0xf554('0x11e')](db[_0xf554('0xb5')],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0xb5')][_0xf554('0x11e')](db[_0xf554('0xb5')],{'as':_0xf554('0x1db'),'foreignKey':'FieldId'});db[_0xf554('0xb5')][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0x1de')]['hasMany'](db[_0xf554('0x1df')],{'as':_0xf554('0x1d1'),'onDelete':_0xf554('0x11c'),'foreignKey':'AccountId'});db[_0xf554('0x1df')][_0xf554('0x11e')](db['ZohoField'],{'as':_0xf554('0x1d9'),'onDelete':_0xf554('0x11c'),'foreignKey':'SubjectId'});db[_0xf554('0x1df')]['hasMany'](db[_0xf554('0xb9')],{'as':_0xf554('0x1dc'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0x1df')][_0xf554('0x11e')](db[_0xf554('0xb9')],{'as':_0xf554('0x1cf'),'onDelete':'cascade','foreignKey':'FieldId'});db['ZohoConfiguration'][_0xf554('0x12d')](db['ZohoAccount'],{'as':'Account','foreignKey':_0xf554('0x1d2')});db['ZohoField'][_0xf554('0x11e')](db[_0xf554('0xb9')],{'as':_0xf554('0x1da'),'foreignKey':'SubjectId'});db[_0xf554('0xb9')][_0xf554('0x11e')](db['ZohoField'],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db['ZohoField']['hasMany'](db['ZohoField'],{'as':_0xf554('0x1db'),'foreignKey':'FieldId'});db[_0xf554('0xb9')]['belongsTo'](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0x1e0')][_0xf554('0x11e')](db[_0xf554('0x1e1')],{'as':_0xf554('0x1d1'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0x1e1')][_0xf554('0x11e')](db['ZendeskField'],{'as':'Subjects','foreignKey':_0xf554('0x1d3')});db[_0xf554('0x1e1')][_0xf554('0x11e')](db['ZendeskField'],{'as':_0xf554('0x1dc'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0x1e1')]['hasMany'](db['ZendeskField'],{'as':_0xf554('0x1cf'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0x1e1')][_0xf554('0x12d')](db[_0xf554('0x1e0')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x1d2')});db['ZendeskConfiguration']['belongsToMany'](db[_0xf554('0x182')],{'through':_0xf554('0x1e2')});db[_0xf554('0xbc')]['hasMany'](db['ZendeskField'],{'as':_0xf554('0x1da'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0xbc')][_0xf554('0x11e')](db['ZendeskField'],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0xbc')][_0xf554('0x11e')](db[_0xf554('0xbc')],{'as':_0xf554('0x1db'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xbc')][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0xbd')][_0xf554('0x11e')](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':_0xf554('0x11c'),'foreignKey':'AccountId'});db[_0xf554('0xbe')][_0xf554('0x11e')](db[_0xf554('0xc0')],{'as':'Subjects','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0xbe')]['hasMany'](db['FreshdeskField'],{'as':_0xf554('0x1dc'),'onDelete':'cascade','foreignKey':_0xf554('0x1d5')});db[_0xf554('0xbe')][_0xf554('0x11e')](db['FreshdeskField'],{'as':_0xf554('0x1cf'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xbe')][_0xf554('0x12d')](db[_0xf554('0xbd')],{'as':_0xf554('0x180'),'foreignKey':'AccountId'});db[_0xf554('0xbe')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':'int_freshdesk_configuration_has_tags'});db['FreshdeskField'][_0xf554('0x11e')](db[_0xf554('0xc0')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xf554('0xc0')][_0xf554('0x11e')](db[_0xf554('0xc0')],{'as':'Description','foreignKey':'DescriptionId'});db[_0xf554('0xc0')][_0xf554('0x11e')](db[_0xf554('0xc0')],{'as':_0xf554('0x1db'),'foreignKey':_0xf554('0x1d6')});db['FreshdeskField'][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':'Variable','foreignKey':_0xf554('0x1d8')});db['VtigerAccount'][_0xf554('0x11e')](db[_0xf554('0x1e3')],{'as':'Configurations','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0x1e3')][_0xf554('0x11e')](db[_0xf554('0x1e4')],{'as':_0xf554('0x1d9'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0x1e3')][_0xf554('0x11e')](db[_0xf554('0x1e4')],{'as':_0xf554('0x1dc'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0x1e3')]['hasMany'](db[_0xf554('0x1e4')],{'as':_0xf554('0x1cf'),'foreignKey':_0xf554('0x1d6')});db['VtigerConfiguration'][_0xf554('0x12d')](db[_0xf554('0xc1')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0x1e4')][_0xf554('0x11e')](db[_0xf554('0x1e4')],{'as':'Subject','foreignKey':_0xf554('0x1d3')});db[_0xf554('0x1e4')]['hasMany'](db[_0xf554('0x1e4')],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0x1e4')][_0xf554('0x11e')](db[_0xf554('0x1e4')],{'as':_0xf554('0x1db'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0x1e4')][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0xc5')]['hasMany'](db[_0xf554('0xc7')],{'as':_0xf554('0x1d1'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d2')});db['ServicenowConfiguration'][_0xf554('0x11e')](db[_0xf554('0xc9')],{'as':_0xf554('0x1d9'),'foreignKey':_0xf554('0x1d3')});db['ServicenowConfiguration']['hasMany'](db[_0xf554('0xc9')],{'as':'Descriptions','foreignKey':_0xf554('0x1d5')});db[_0xf554('0xc7')]['hasMany'](db[_0xf554('0xc9')],{'as':_0xf554('0x1cf'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xc7')][_0xf554('0x12d')](db[_0xf554('0xc5')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0xc9')][_0xf554('0x11e')](db[_0xf554('0xc9')],{'as':_0xf554('0x1da'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0xc9')][_0xf554('0x11e')](db[_0xf554('0xc9')],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db['ServicenowField']['hasMany'](db[_0xf554('0xc9')],{'as':'Field','foreignKey':_0xf554('0x1d6')});db['ServicenowField'][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':'VariableId'});db[_0xf554('0x1e5')][_0xf554('0x11e')](db[_0xf554('0xcc')],{'as':'Configurations','onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0x1e5')]['belongsTo'](db[_0xf554('0x111')],{'as':_0xf554('0x111'),'foreignKey':_0xf554('0x171')});db[_0xf554('0xcc')][_0xf554('0x11e')](db[_0xf554('0xce')],{'as':_0xf554('0x1d9'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0xcc')]['hasMany'](db[_0xf554('0xce')],{'as':_0xf554('0x1dc'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d5')});db['Dynamics365Configuration'][_0xf554('0x11e')](db['Dynamics365Field'],{'as':_0xf554('0x1cf'),'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xcc')]['belongsTo'](db[_0xf554('0x1e5')],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x1d2')});db[_0xf554('0xce')]['hasMany'](db['Dynamics365Field'],{'as':_0xf554('0x1da'),'foreignKey':_0xf554('0x1d3')});db[_0xf554('0xce')]['hasMany'](db['Dynamics365Field'],{'as':_0xf554('0x1d7'),'foreignKey':_0xf554('0x1d5')});db[_0xf554('0xce')][_0xf554('0x11e')](db[_0xf554('0xce')],{'as':_0xf554('0x1db'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xce')][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0x1e6')]['hasMany'](db['FreshsalesConfiguration'],{'as':_0xf554('0x1d1'),'onDelete':'cascade','foreignKey':_0xf554('0x1d2')});db[_0xf554('0xcf')]['hasMany'](db['FreshsalesField'],{'as':_0xf554('0x1d9'),'foreignKey':'SubjectId'});db['FreshsalesConfiguration'][_0xf554('0x11e')](db[_0xf554('0xd1')],{'as':_0xf554('0x1dc'),'foreignKey':'DescriptionId'});db['FreshsalesConfiguration']['hasMany'](db[_0xf554('0xd1')],{'as':_0xf554('0x1cf'),'foreignKey':_0xf554('0x1d6')});db['FreshsalesConfiguration']['belongsTo'](db['FreshsalesAccount'],{'as':'Account','foreignKey':'AccountId'});db[_0xf554('0xd1')]['hasMany'](db[_0xf554('0xd1')],{'as':'Subject','foreignKey':_0xf554('0x1d3')});db[_0xf554('0xd1')][_0xf554('0x11e')](db['FreshsalesField'],{'as':_0xf554('0x1d7'),'foreignKey':'DescriptionId'});db[_0xf554('0xd1')][_0xf554('0x11e')](db['FreshsalesField'],{'as':_0xf554('0x1db'),'foreignKey':_0xf554('0x1d6')});db[_0xf554('0xd1')][_0xf554('0x12d')](db[_0xf554('0x9c')],{'as':_0xf554('0x9c'),'foreignKey':_0xf554('0x1d8')});db[_0xf554('0xd5')][_0xf554('0x12d')](db[_0xf554('0x64')],{});db['ChatQueueReport']['belongsTo'](db['CmList'],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b')});db[_0xf554('0xd5')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db[_0xf554('0xd5')][_0xf554('0x12d')](db[_0xf554('0x69')],{});db['ChatQueueReport'][_0xf554('0x12d')](db['ChatMessage'],{});db[_0xf554('0xd5')][_0xf554('0x12d')](db[_0xf554('0x14')],{});db[_0xf554('0xd5')][_0xf554('0x12d')](db[_0xf554('0x6d')],{});db[_0xf554('0xd7')][_0xf554('0x12d')](db[_0xf554('0x14')],{'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1e7')});db[_0xf554('0xd7')][_0xf554('0x12d')](db['User'],{'onDelete':_0xf554('0x11c'),'foreignKey':_0xf554('0x1e8')});db[_0xf554('0xdc')][_0xf554('0x11e')](db['JscriptyQuestionReport'],{'foreignKey':'SessionId','onDelete':_0xf554('0x11c')});db['JscriptySessionReport'][_0xf554('0x11e')](db[_0xf554('0xd9')],{'foreignKey':_0xf554('0x1e9'),'onDelete':_0xf554('0x11c')});db[_0xf554('0xde')][_0xf554('0x12d')](db['SmsAccount'],{});db['SmsQueueReport'][_0xf554('0x12d')](db['CmList'],{'as':_0xf554('0x17a'),'foreignKey':'ListId'});db[_0xf554('0xde')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':'Contact','foreignKey':_0xf554('0x16e')});db[_0xf554('0xde')]['belongsTo'](db[_0xf554('0x56')],{});db['SmsQueueReport'][_0xf554('0x12d')](db[_0xf554('0x58')],{});db['SmsQueueReport']['belongsTo'](db[_0xf554('0x14')],{});db['SmsQueueReport']['belongsTo'](db[_0xf554('0x59')],{});db[_0xf554('0xe3')]['hasMany'](db[_0xf554('0xdc')],{'foreignKey':_0xf554('0x1ea')});db[_0xf554('0xe3')][_0xf554('0x11e')](db[_0xf554('0xda')],{'foreignKey':_0xf554('0x1ea')});db[_0xf554('0xe3')][_0xf554('0x11e')](db[_0xf554('0xd9')],{'foreignKey':_0xf554('0x1ea')});db['Team'][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x134')});db[_0xf554('0xec')][_0xf554('0x12f')](db[_0xf554('0x1b')],{'through':_0xf554('0x1eb'),'as':_0xf554('0x13c')});db[_0xf554('0xec')][_0xf554('0x12f')](db[_0xf554('0x39')],{'through':'team_has_mail_queues','as':'MailQueues'});db[_0xf554('0xec')]['belongsToMany'](db[_0xf554('0x6d')],{'through':_0xf554('0x1a9'),'as':_0xf554('0x13f')});db[_0xf554('0xec')]['belongsToMany'](db[_0xf554('0x140')],{'through':_0xf554('0x194'),'as':_0xf554('0x141')});db[_0xf554('0xec')]['belongsToMany'](db[_0xf554('0x59')],{'through':_0xf554('0x19a'),'as':'SmsQueues'});db[_0xf554('0xec')]['belongsToMany'](db[_0xf554('0x62')],{'through':_0xf554('0x1ec'),'as':_0xf554('0x1ed')});db[_0xf554('0xec')]['belongsToMany'](db['WhatsappQueue'],{'through':'team_has_whatsapp_queues','as':_0xf554('0x1ee')});db[_0xf554('0xec')][_0xf554('0x12f')](db['VoicePrefix'],{'through':'TeamVoicePrefix','as':_0xf554('0x13d')});db[_0xf554('0x1b3')][_0xf554('0x11e')](db[_0xf554('0x76')],{'as':_0xf554('0x1ef'),'foreignKey':_0xf554('0x1b5')});db[_0xf554('0x1b3')]['hasMany'](db[_0xf554('0x7a')],{'as':_0xf554('0x124'),'foreignKey':_0xf554('0x1b5')});db[_0xf554('0x1b3')][_0xf554('0x11e')](db[_0xf554('0x7c')],{'as':_0xf554('0x15a'),'foreignKey':_0xf554('0x1b5')});db[_0xf554('0x1b3')]['hasMany'](db[_0xf554('0x78')],{'as':_0xf554('0x15b'),'foreignKey':_0xf554('0x1b5')});db[_0xf554('0x1b3')][_0xf554('0x12d')](db[_0xf554('0x26')],{'as':'Trunk','foreignKey':'TrunkId'});db[_0xf554('0x1b3')][_0xf554('0x12d')](db[_0xf554('0x26')],{'as':_0xf554('0x15e'),'foreignKey':'TrunkBackupId'});db[_0xf554('0x1b3')]['belongsTo'](db[_0xf554('0x8a')],{'as':_0xf554('0x8a'),'foreignKey':_0xf554('0x160')});db[_0xf554('0x1b3')][_0xf554('0x12d')](db['SquareProject'],{'as':_0xf554('0xe7'),'foreignKey':_0xf554('0x1f0')});db['Campaign'][_0xf554('0x12f')](db[_0xf554('0xfb')],{'as':'Lists','through':'campaigns_has_cm_lists'});db[_0xf554('0x1b3')][_0xf554('0x12f')](db[_0xf554('0xfb')],{'as':_0xf554('0x165'),'through':_0xf554('0x1f1')});db[_0xf554('0x186')][_0xf554('0x12d')](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':_0xf554('0x18b')});db[_0xf554('0x1f2')][_0xf554('0x12d')](db[_0xf554('0x3f')],{});db['MailTransferReport']['belongsTo'](db['MailInteraction'],{});db['MailTransferReport']['belongsTo'](db[_0xf554('0x37')],{'foreignKey':_0xf554('0x1f3'),'as':_0xf554('0x1f4')});db[_0xf554('0x1f2')][_0xf554('0x12d')](db[_0xf554('0x14')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xf554('0x1f2')][_0xf554('0x12d')](db[_0xf554('0x14')],{'foreignKey':_0xf554('0x1f5'),'as':'ToAgent'});db[_0xf554('0x1f2')][_0xf554('0x12d')](db['MailQueue'],{'foreignKey':_0xf554('0x1f6'),'as':_0xf554('0x1f7')});db['MailTransferReport'][_0xf554('0x12d')](db['MailAccount'],{'foreignKey':'ToMailAccountId','as':_0xf554('0x1f8')});db[_0xf554('0xf5')][_0xf554('0x12d')](db[_0xf554('0x6b')],{});db[_0xf554('0xf5')]['belongsTo'](db[_0xf554('0x69')],{});db['ChatTransferReport']['belongsTo'](db[_0xf554('0x64')],{'foreignKey':_0xf554('0x1f9'),'as':_0xf554('0x1f4')});db[_0xf554('0xf5')][_0xf554('0x12d')](db[_0xf554('0x14')],{'foreignKey':'FromUserId','as':_0xf554('0x1fa')});db['ChatTransferReport'][_0xf554('0x12d')](db['User'],{'foreignKey':_0xf554('0x1f5'),'as':_0xf554('0x1fb')});db[_0xf554('0xf5')][_0xf554('0x12d')](db['ChatQueue'],{'foreignKey':_0xf554('0x1fc'),'as':'ToQueue'});db[_0xf554('0xf5')][_0xf554('0x12d')](db[_0xf554('0x64')],{'foreignKey':_0xf554('0x1fd'),'as':_0xf554('0x1f8')});db['FaxTransferReport'][_0xf554('0x12d')](db[_0xf554('0x190')],{});db['FaxTransferReport'][_0xf554('0x12d')](db[_0xf554('0x4c')],{});db[_0xf554('0x1fe')]['belongsTo'](db[_0xf554('0x48')],{'foreignKey':_0xf554('0x1ff'),'as':_0xf554('0x1f4')});db[_0xf554('0x1fe')][_0xf554('0x12d')](db[_0xf554('0x14')],{'foreignKey':_0xf554('0x200'),'as':_0xf554('0x1fa')});db[_0xf554('0x1fe')][_0xf554('0x12d')](db[_0xf554('0x14')],{'foreignKey':_0xf554('0x1f5'),'as':_0xf554('0x1fb')});db[_0xf554('0x1fe')]['belongsTo'](db[_0xf554('0x140')],{'foreignKey':_0xf554('0x201'),'as':_0xf554('0x1f7')});db[_0xf554('0x1fe')]['belongsTo'](db[_0xf554('0x48')],{'foreignKey':'ToFaxAccountId','as':_0xf554('0x1f8')});db[_0xf554('0xf8')]['belongsTo'](db[_0xf554('0x60')],{});db['OpenchannelTransferReport'][_0xf554('0x12d')](db[_0xf554('0x5e')],{});db[_0xf554('0xf8')][_0xf554('0x12d')](db[_0xf554('0x5b')],{'foreignKey':_0xf554('0x202'),'as':_0xf554('0x1f4')});db[_0xf554('0xf8')]['belongsTo'](db[_0xf554('0x14')],{'foreignKey':_0xf554('0x200'),'as':_0xf554('0x1fa')});db[_0xf554('0xf8')][_0xf554('0x12d')](db['User'],{'foreignKey':'ToUserId','as':_0xf554('0x1fb')});db[_0xf554('0xf8')][_0xf554('0x12d')](db['OpenchannelQueue'],{'foreignKey':_0xf554('0x203'),'as':'ToQueue'});db[_0xf554('0xf8')]['belongsTo'](db[_0xf554('0x5b')],{'foreignKey':_0xf554('0x204'),'as':_0xf554('0x1f8')});db['SmsTransferReport'][_0xf554('0x12d')](db[_0xf554('0x58')],{});db[_0xf554('0x205')][_0xf554('0x12d')](db[_0xf554('0x56')],{});db['SmsTransferReport'][_0xf554('0x12d')](db[_0xf554('0x52')],{'foreignKey':_0xf554('0x206'),'as':_0xf554('0x1f4')});db[_0xf554('0x205')]['belongsTo'](db[_0xf554('0x14')],{'foreignKey':_0xf554('0x200'),'as':_0xf554('0x1fa')});db[_0xf554('0x205')]['belongsTo'](db[_0xf554('0x14')],{'foreignKey':_0xf554('0x1f5'),'as':'ToAgent'});db[_0xf554('0x205')][_0xf554('0x12d')](db['SmsQueue'],{'foreignKey':_0xf554('0x207'),'as':_0xf554('0x1f7')});db['SmsTransferReport']['belongsTo'](db[_0xf554('0x52')],{'foreignKey':_0xf554('0x208'),'as':_0xf554('0x1f8')});db[_0xf554('0xfb')][_0xf554('0x11e')](db['Disposition'],{'as':_0xf554('0x176'),'foreignKey':'ListId','onDelete':'cascade'});db[_0xf554('0xfb')][_0xf554('0x11e')](db[_0xf554('0x7e')],{'as':'CustomFields','foreignKey':_0xf554('0x17b')});db[_0xf554('0xfb')][_0xf554('0x11e')](db[_0xf554('0x130')],{'as':_0xf554('0x1ac'),'onDelete':'cascade','foreignKey':_0xf554('0x17b')});db[_0xf554('0xfb')][_0xf554('0x11e')](db[_0xf554('0x7a')],{'as':_0xf554('0x124'),'foreignKey':'ListId'});db[_0xf554('0xfb')][_0xf554('0x11e')](db[_0xf554('0x7c')],{'as':_0xf554('0x125'),'foreignKey':_0xf554('0x17b')});db['CmList']['hasMany'](db[_0xf554('0x126')],{'as':_0xf554('0x126'),'foreignKey':_0xf554('0x17b')});db[_0xf554('0xfb')][_0xf554('0x12f')](db[_0xf554('0x1b')],{'as':_0xf554('0x209'),'through':'voice_queues_has_cm_lists'});db[_0xf554('0xfb')]['belongsToMany'](db['User'],{'as':_0xf554('0x164'),'through':'cm_user_has_lists'});db[_0xf554('0xfd')]['hasMany'](db[_0xf554('0x122')],{'as':_0xf554('0x123'),'onDelete':'cascade'});db['VoicePrefix']['belongsToMany'](db['User'],{'as':_0xf554('0x164'),'through':_0xf554('0x116')});db[_0xf554('0xfd')][_0xf554('0x12f')](db[_0xf554('0xec')],{'through':_0xf554('0x114'),'as':_0xf554('0x19b')});db['UserProfile']['hasMany'](db[_0xf554('0x14')],{'as':'Users','foreignKey':_0xf554('0x12e')});db['UserProfile'][_0xf554('0x11e')](db[_0xf554('0x101')],{'as':_0xf554('0x20a'),'foreignKey':_0xf554('0x12e'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x101')]['hasMany'](db[_0xf554('0x103')],{'as':_0xf554('0x20b'),'foreignKey':_0xf554('0x20c'),'onDelete':_0xf554('0x11c')});db[_0xf554('0x106')][_0xf554('0x11e')](db['Disposition'],{'as':_0xf554('0x176'),'foreignKey':_0xf554('0x20d'),'onDelete':'cascade'});db[_0xf554('0x106')][_0xf554('0x11e')](db[_0xf554('0x84')],{'as':_0xf554('0x177'),'foreignKey':'WhatsappAccountId'});db['WhatsappAccount']['hasMany'](db[_0xf554('0x20e')],{'as':'Messages','foreignKey':_0xf554('0x20d')});db[_0xf554('0x106')]['hasMany'](db[_0xf554('0x10a')],{'as':'Interactions'});db[_0xf554('0x106')][_0xf554('0x11e')](db['WhatsappApplication'],{'as':_0xf554('0x154')});db[_0xf554('0x106')][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b')});db[_0xf554('0x106')][_0xf554('0x12d')](db[_0xf554('0x8c')],{'as':_0xf554('0x161'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xf554('0x106')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x150')});db[_0xf554('0x108')][_0xf554('0x12d')](db['User'],{'onDelete':_0xf554('0x173')});db['WhatsappApplication'][_0xf554('0x12d')](db[_0xf554('0x10f')],{'onDelete':_0xf554('0x173')});db[_0xf554('0x108')]['belongsTo'](db[_0xf554('0x106')],{'onDelete':'restrict'});db[_0xf554('0x108')][_0xf554('0x12d')](db[_0xf554('0x8a')],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x160')});db['WhatsappApplication'][_0xf554('0x12d')](db[_0xf554('0x182')],{'onDelete':_0xf554('0x173'),'foreignKey':_0xf554('0x18c')});db[_0xf554('0x10a')][_0xf554('0x11e')](db[_0xf554('0x20e')],{'as':_0xf554('0x178'),'onDelete':'cascade','foreignKey':_0xf554('0x20f')});db[_0xf554('0x10a')][_0xf554('0x12d')](db['WhatsappAccount'],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0xf554('0x10a')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':_0xf554('0x16d'),'foreignKey':_0xf554('0x16e')});db[_0xf554('0x10a')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x181'),'foreignKey':_0xf554('0x120')});db[_0xf554('0x10a')][_0xf554('0x12f')](db['Tag'],{'through':_0xf554('0x1c6'),'as':_0xf554('0x184')});db[_0xf554('0x10a')][_0xf554('0x12f')](db[_0xf554('0x182')],{'through':'whatsapp_interaction_has_tags','as':_0xf554('0x185')});db[_0xf554('0x10a')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x198'),'through':'user_has_whatsapp_interactions','foreignKey':_0xf554('0x20f')});db[_0xf554('0x20e')][_0xf554('0x12d')](db[_0xf554('0x14')],{'as':_0xf554('0x14')});db[_0xf554('0x20e')]['belongsTo'](db['CmContact'],{'onDelete':_0xf554('0x11c'),'as':'Contact'});db[_0xf554('0x20e')][_0xf554('0x12d')](db[_0xf554('0x10a')],{'onDelete':'cascade','as':_0xf554('0x188'),'foreignKey':_0xf554('0x20f')});db[_0xf554('0x20e')][_0xf554('0x12d')](db['WhatsappAccount'],{'as':_0xf554('0x180'),'foreignKey':_0xf554('0x20d')});db[_0xf554('0x210')]['belongsTo'](db[_0xf554('0x106')],{});db['WhatsappQueueReport'][_0xf554('0x12d')](db[_0xf554('0xfb')],{'as':_0xf554('0x17a'),'foreignKey':_0xf554('0x17b')});db[_0xf554('0x210')][_0xf554('0x12d')](db[_0xf554('0x130')],{'as':'Contact','foreignKey':_0xf554('0x16e')});db[_0xf554('0x210')][_0xf554('0x12d')](db[_0xf554('0x10a')],{});db['WhatsappQueueReport']['belongsTo'](db['WhatsappQueue'],{});db[_0xf554('0x210')][_0xf554('0x12d')](db[_0xf554('0x20e')],{});db[_0xf554('0x210')][_0xf554('0x12d')](db[_0xf554('0x14')],{});db[_0xf554('0x10d')][_0xf554('0x12d')](db[_0xf554('0x20e')],{});db['WhatsappTransferReport'][_0xf554('0x12d')](db['WhatsappInteraction'],{});db[_0xf554('0x10d')][_0xf554('0x12d')](db[_0xf554('0x106')],{'foreignKey':'FromWhatsappAccountId','as':'FromAccount'});db[_0xf554('0x10d')]['belongsTo'](db[_0xf554('0x106')],{'foreignKey':_0xf554('0x211'),'as':_0xf554('0x1f8')});db['WhatsappTransferReport'][_0xf554('0x12d')](db[_0xf554('0x10f')],{'foreignKey':'ToQueueId','as':_0xf554('0x1f7')});db['WhatsappTransferReport'][_0xf554('0x12d')](db[_0xf554('0x14')],{'foreignKey':'FromUserId','as':_0xf554('0x1fa')});db[_0xf554('0x10d')][_0xf554('0x12d')](db[_0xf554('0x14')],{'foreignKey':_0xf554('0x1f5'),'as':_0xf554('0x1fb')});db[_0xf554('0x10f')][_0xf554('0x12f')](db[_0xf554('0x14')],{'as':_0xf554('0x164'),'through':_0xf554('0x144'),'foreignKey':_0xf554('0x212')});db[_0xf554('0x10f')][_0xf554('0x12f')](db[_0xf554('0xec')],{'through':'team_has_whatsapp_queues','as':_0xf554('0x19b')});db[_0xf554('0x118')][_0xf554('0x12d')](db['User'],{'as':_0xf554('0x213'),'foreignKey':'UserId','onDelete':_0xf554('0x11c'),'hooks':!![]});db[_0xf554('0x111')][_0xf554('0x11a')](db[_0xf554('0x1e5')],{'as':_0xf554('0x1e5'),'onDelete':_0xf554('0x173')});db[_0xf554('0x111')]['hasOne'](db['MailServerIn'],{'as':'Imap','onDelete':_0xf554('0x173')});db[_0xf554('0x111')][_0xf554('0x11a')](db[_0xf554('0x172')],{'as':_0xf554('0x175'),'onDelete':'restrict'});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index d00ce4c..4a9aa93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed73=['./api/client-side-logs','default','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/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/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','/api/trunks','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','/api/schedules','./api/schedule','./api/sound','./api/tag','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','/api/triggers','./api/trigger','./api/variable','/api/integrations','./api/integration','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','./api/intSugarcrmField','/api/integrations/desk/accounts','/api/integrations/desk/configurations','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareProject','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','/api/attachments','./api/attachment','/api/plugins','./api/plugin','./api/mailTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','./api/voicePrefix','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/jira','/api/rpc','./api/rpc','./api/version','./api/system','./api/pm2','/api/logs','/apidoc','static','root','/www','/demo','join','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','path','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers'];(function(_0x484532,_0x3d023e){var _0x3cb4a0=function(_0x569670){while(--_0x569670){_0x484532['push'](_0x484532['shift']());}};_0x3cb4a0(++_0x3d023e);}(_0xed73,0x116));var _0x3ed7=function(_0x4dd7f9,_0x48c61c){_0x4dd7f9=_0x4dd7f9-0x0;var _0xd0e04=_0xed73[_0x4dd7f9];return _0xd0e04;};'use strict';var path=require(_0x3ed7('0x0'));var express=require(_0x3ed7('0x1'));var errors=require(_0x3ed7('0x2'));var config=require(_0x3ed7('0x3'));var setupLoggers=require(_0x3ed7('0x4'))[_0x3ed7('0x5')];var clientSideLogs=require(_0x3ed7('0x6'));exports[_0x3ed7('0x7')]=function(_0x2a5834){return setupLoggers(_0x2a5834)[_0x3ed7('0x8')](function(){_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xa'),require(_0x3ed7('0xb')));_0x2a5834['use'](_0x3ed7('0xc'),require(_0x3ed7('0xd')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xe'),require(_0x3ed7('0xf')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x10'),require(_0x3ed7('0x11')));_0x2a5834['use'](_0x3ed7('0x12'),require(_0x3ed7('0x13')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x14'),require(_0x3ed7('0x15')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x16'),require(_0x3ed7('0x17')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x18'),require(_0x3ed7('0x19')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x1a'),require(_0x3ed7('0x1b')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x1c'),require(_0x3ed7('0x1d')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x1e'),require('./api/voiceCallReport'));_0x2a5834[_0x3ed7('0x9')]('/api/voice/dials/reports',require(_0x3ed7('0x1f')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x20'),require(_0x3ed7('0x21')));_0x2a5834['use'](_0x3ed7('0x22'),require(_0x3ed7('0x23')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x24'),require('./api/memberReport'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x25'),require(_0x3ed7('0x26')));_0x2a5834[_0x3ed7('0x9')]('/api/voice/transfers/reports',require(_0x3ed7('0x27')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x28'),require(_0x3ed7('0x29')));_0x2a5834[_0x3ed7('0x9')]('/api/mail/accounts',require('./api/mailAccount'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x2a'),require(_0x3ed7('0x2b')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x2c'),require(_0x3ed7('0x2d')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x2e'),require(_0x3ed7('0x2f')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x30'),require(_0x3ed7('0x31')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x32'),require(_0x3ed7('0x33')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x34'),require(_0x3ed7('0x35')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x36'),require(_0x3ed7('0x37')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x38'),require(_0x3ed7('0x39')));_0x2a5834[_0x3ed7('0x9')]('/api/fax/accounts',require(_0x3ed7('0x3a')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x3b'),require(_0x3ed7('0x3c')));_0x2a5834['use'](_0x3ed7('0x3d'),require(_0x3ed7('0x3e')));_0x2a5834[_0x3ed7('0x9')]('/api/fax/messages',require(_0x3ed7('0x3f')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x40'),require(_0x3ed7('0x41')));_0x2a5834['use'](_0x3ed7('0x42'),require('./api/faxQueueReport'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x43'),require(_0x3ed7('0x44')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x45'),require(_0x3ed7('0x46')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x47'),require(_0x3ed7('0x48')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x49'),require(_0x3ed7('0x4a')));_0x2a5834[_0x3ed7('0x9')]('/api/sms/queues',require(_0x3ed7('0x4b')));_0x2a5834['use'](_0x3ed7('0x4c'),require(_0x3ed7('0x4d')));_0x2a5834[_0x3ed7('0x9')]('/api/openchannel/applications',require(_0x3ed7('0x4e')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x4f'),require(_0x3ed7('0x50')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x51'),require(_0x3ed7('0x52')));_0x2a5834[_0x3ed7('0x9')]('/api/openchannel/queues',require(_0x3ed7('0x53')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x54'),require(_0x3ed7('0x55')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x56'),require(_0x3ed7('0x57')));_0x2a5834['use'](_0x3ed7('0x58'),require('./api/chatApplication'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x59'),require(_0x3ed7('0x5a')));_0x2a5834['use'](_0x3ed7('0x5b'),require(_0x3ed7('0x5c')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x5d'),require(_0x3ed7('0x5e')));_0x2a5834['use'](_0x3ed7('0x5f'),require(_0x3ed7('0x60')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x61'),require('./api/chatGroup'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x62'),require(_0x3ed7('0x63')));_0x2a5834[_0x3ed7('0x9')]('/api/cm/companies',require(_0x3ed7('0x64')));_0x2a5834['use'](_0x3ed7('0x65'),require(_0x3ed7('0x66')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x67'),require(_0x3ed7('0x68')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x69'),require('./api/cmHopperBlack'));_0x2a5834[_0x3ed7('0x9')]('/api/cm/hopper_final',require(_0x3ed7('0x6a')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x6b'),require(_0x3ed7('0x6c')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x6d'),require('./api/cmCustomField'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x6e'),require(_0x3ed7('0x6f')));_0x2a5834[_0x3ed7('0x9')]('/api/automations',require(_0x3ed7('0x70')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x71'),require(_0x3ed7('0x72')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x73'),require(_0x3ed7('0x74')));_0x2a5834['use'](_0x3ed7('0x75'),require(_0x3ed7('0x76')));_0x2a5834['use'](_0x3ed7('0x77'),require('./api/interval'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x78'),require(_0x3ed7('0x79')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x7a'),require(_0x3ed7('0x7b')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x7c'),require('./api/voiceQueuesLog'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x7d'),require(_0x3ed7('0x7e')));_0x2a5834[_0x3ed7('0x9')]('/api/sounds',require(_0x3ed7('0x7f')));_0x2a5834['use']('/api/tags',require(_0x3ed7('0x80')));_0x2a5834[_0x3ed7('0x9')]('/api/contact_item_types',require('./api/contactItemType'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x81'),require(_0x3ed7('0x82')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x83'),require(_0x3ed7('0x84')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x85'),require('./api/template'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x86'),require(_0x3ed7('0x87')));_0x2a5834[_0x3ed7('0x9')]('/api/variables',require(_0x3ed7('0x88')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x89'),require(_0x3ed7('0x8a')));_0x2a5834['use']('/api/integrations/reports',require(_0x3ed7('0x8b')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x8c'),require('./api/analyticCustomReport'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x8d'),require(_0x3ed7('0x8e')));_0x2a5834[_0x3ed7('0x9')]('/api/analytics/extracted_reports',require('./api/analyticExtractedReport'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x8f'),require(_0x3ed7('0x90')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x91'),require('./api/analyticFieldReport'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x92'),require(_0x3ed7('0x93')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x94'),require(_0x3ed7('0x95')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x96'),require(_0x3ed7('0x97')));_0x2a5834['use'](_0x3ed7('0x98'),require(_0x3ed7('0x99')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x9a'),require(_0x3ed7('0x9b')));_0x2a5834['use'](_0x3ed7('0x9c'),require(_0x3ed7('0x9d')));_0x2a5834[_0x3ed7('0x9')]('/api/integrations/sugarcrm/fields',require(_0x3ed7('0x9e')));_0x2a5834['use'](_0x3ed7('0x9f'),require('./api/intDeskAccount'));_0x2a5834['use'](_0x3ed7('0xa0'),require('./api/intDeskConfiguration'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xa1'),require(_0x3ed7('0xa2')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xa3'),require(_0x3ed7('0xa4')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xa5'),require(_0x3ed7('0xa6')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xa7'),require('./api/intZohoField'));_0x2a5834['use'](_0x3ed7('0xa8'),require(_0x3ed7('0xa9')));_0x2a5834['use']('/api/integrations/zendesk/configurations',require(_0x3ed7('0xaa')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xab'),require(_0x3ed7('0xac')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xad'),require(_0x3ed7('0xae')));_0x2a5834['use'](_0x3ed7('0xaf'),require(_0x3ed7('0xb0')));_0x2a5834[_0x3ed7('0x9')]('/api/integrations/freshdesk/fields',require(_0x3ed7('0xb1')));_0x2a5834[_0x3ed7('0x9')]('/api/integrations/vtiger/accounts',require(_0x3ed7('0xb2')));_0x2a5834['use']('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x2a5834[_0x3ed7('0x9')]('/api/integrations/vtiger/fields',require('./api/intVtigerField'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xb3'),require(_0x3ed7('0xb4')));_0x2a5834[_0x3ed7('0x9')]('/api/integrations/servicenow/configurations',require('./api/intServicenowConfiguration'));_0x2a5834['use'](_0x3ed7('0xb5'),require('./api/intServicenowField'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xb6'),require('./api/intDynamics365Account'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xb7'),require('./api/intDynamics365Configuration'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xb8'),require(_0x3ed7('0xb9')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xba'),require(_0x3ed7('0xbb')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xbc'),require(_0x3ed7('0xbd')));_0x2a5834['use'](_0x3ed7('0xbe'),require(_0x3ed7('0xbf')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xc0'),require('./api/network'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xc1'),require(_0x3ed7('0xc2')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xc3'),require(_0x3ed7('0xc4')));_0x2a5834[_0x3ed7('0x9')]('/api/jscripty/answers/reports',require(_0x3ed7('0xc5')));_0x2a5834['use'](_0x3ed7('0xc6'),require(_0x3ed7('0xc7')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xc8'),require(_0x3ed7('0xc9')));_0x2a5834['use'](_0x3ed7('0xca'),require('./api/smsQueueReport'));_0x2a5834[_0x3ed7('0x9')]('/api/square/reports',require('./api/squareReport'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xcb'),require(_0x3ed7('0xcc')));_0x2a5834[_0x3ed7('0x9')]('/api/jscripty/projects',require(_0x3ed7('0xcd')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xce'),require(_0x3ed7('0xcf')));_0x2a5834['use'](_0x3ed7('0xd0'),require(_0x3ed7('0xd1')));_0x2a5834[_0x3ed7('0x9')]('/api/square/projects',require(_0x3ed7('0xd2')));_0x2a5834[_0x3ed7('0x9')]('/api/square/recordings',require(_0x3ed7('0xd3')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xd4'),require(_0x3ed7('0xd5')));_0x2a5834[_0x3ed7('0x9')]('/api/teams',require(_0x3ed7('0xd6')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xd7'),require(_0x3ed7('0xd8')));_0x2a5834['use'](_0x3ed7('0xd9'),require(_0x3ed7('0xda')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xdb'),require('./api/migration'));_0x2a5834['use'](_0x3ed7('0xdc'),require(_0x3ed7('0xdd')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xde'),require(_0x3ed7('0xdf')));_0x2a5834[_0x3ed7('0x9')]('/api/mail/reports/transfer',require(_0x3ed7('0xe0')));_0x2a5834[_0x3ed7('0x9')]('/api/chat/reports/transfer',require('./api/chatTransferReport'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xe1'),require(_0x3ed7('0xe2')));_0x2a5834['use'](_0x3ed7('0xe3'),require(_0x3ed7('0xe4')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xe5'),require(_0x3ed7('0xe6')));_0x2a5834[_0x3ed7('0x9')]('/api/cm/lists',require(_0x3ed7('0xe7')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xe8'),require(_0x3ed7('0xe9')));_0x2a5834[_0x3ed7('0x9')]('/api/userProfiles',require(_0x3ed7('0xea')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xeb'),require(_0x3ed7('0xec')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xed'),require(_0x3ed7('0xee')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xef'),require(_0x3ed7('0xf0')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xf1'),require('./api/whatsappAccount'));_0x2a5834[_0x3ed7('0x9')]('/api/whatsapp/applications',require(_0x3ed7('0xf2')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xf3'),require(_0x3ed7('0xf4')));_0x2a5834['use']('/api/whatsapp/messages',require(_0x3ed7('0xf5')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xf6'),require(_0x3ed7('0xf7')));_0x2a5834['use'](_0x3ed7('0xf8'),require(_0x3ed7('0xf9')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xfa'),require(_0x3ed7('0xfb')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xfc'),require(_0x3ed7('0xfd')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0xfe'),require(_0x3ed7('0xff')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x100'),require(_0x3ed7('0x101')));_0x2a5834['use'](_0x3ed7('0x102'),require(_0x3ed7('0x103')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x104'),require('./api/authGoogle'));_0x2a5834[_0x3ed7('0x9')]('/api/auth/activedirectory',require('./api/authActiveDirectory'));_0x2a5834['use']('/api/jira',require(_0x3ed7('0x105')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x106'),require(_0x3ed7('0x107')));_0x2a5834[_0x3ed7('0x9')]('/api/version',require(_0x3ed7('0x108')));_0x2a5834[_0x3ed7('0x9')]('/api/system',require(_0x3ed7('0x109')));_0x2a5834[_0x3ed7('0x9')]('/api/pm2',require(_0x3ed7('0x10a')));_0x2a5834[_0x3ed7('0x9')]('/api/webbar',require('./api/webbar'));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x10b'),clientSideLogs);_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x10c'),express[_0x3ed7('0x10d')](path['join'](config[_0x3ed7('0x10e')],'/apidoc')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x10f'),express[_0x3ed7('0x10d')](path['join'](config['root'],'/www')));_0x2a5834[_0x3ed7('0x9')](_0x3ed7('0x110'),express[_0x3ed7('0x10d')](path[_0x3ed7('0x111')](config[_0x3ed7('0x10e')],_0x3ed7('0x110'))));_0x2a5834[_0x3ed7('0x9')]('/snippet',express[_0x3ed7('0x10d')](path['join'](config[_0x3ed7('0x10e')],_0x3ed7('0x112'),_0x3ed7('0x113'))));_0x2a5834['use'](_0x3ed7('0x114'),express[_0x3ed7('0x10d')](path[_0x3ed7('0x111')](config[_0x3ed7('0x10e')],_0x3ed7('0x115'))));_0x2a5834[_0x3ed7('0x116')](_0x3ed7('0x117'))[_0x3ed7('0x118')](errors[0x194]);_0x2a5834[_0x3ed7('0x116')]('/*')['get'](function(_0x1f080c,_0x2e616c){_0x2e616c[_0x3ed7('0x119')](path[_0x3ed7('0x11a')](_0x2a5834[_0x3ed7('0x118')]('appPath')+_0x3ed7('0x11b')));});return _0x2a5834;});};
\ No newline at end of file
+var _0xa3a0=['default','use','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','/api/dashboards','./api/dashboard','./api/dashboardItem','/api/fax/accounts','/api/fax/applications','./api/faxApplication','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/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/cmHopper','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','/api/intervals','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/tag','/api/contact_item_types','./api/contactItemType','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','./api/trigger','/api/variables','./api/variable','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/intFreshsalesField','/api/networks','./api/network','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','/api/fax/reports/transfer','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','/api/user-settings','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','/www','root','/demo','snippet','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs'];(function(_0x5c6994,_0x19ad9a){var _0x1d5c84=function(_0x4a385a){while(--_0x4a385a){_0x5c6994['push'](_0x5c6994['shift']());}};_0x1d5c84(++_0x19ad9a);}(_0xa3a0,0x10d));var _0x0a3a=function(_0xc42411,_0x4ebb2e){_0xc42411=_0xc42411-0x0;var _0x31e0bf=_0xa3a0[_0xc42411];return _0x31e0bf;};'use strict';var path=require('path');var express=require(_0x0a3a('0x0'));var errors=require(_0x0a3a('0x1'));var config=require(_0x0a3a('0x2'));var setupLoggers=require(_0x0a3a('0x3'))[_0x0a3a('0x4')];var clientSideLogs=require(_0x0a3a('0x5'));exports[_0x0a3a('0x6')]=function(_0x49dac4){return setupLoggers(_0x49dac4)['then'](function(){_0x49dac4[_0x0a3a('0x7')]('/api/users',require('./api/user'));_0x49dac4[_0x0a3a('0x7')]('/api/voice/chanspy',require(_0x0a3a('0x8')));_0x49dac4['use'](_0x0a3a('0x9'),require(_0x0a3a('0xa')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xb'),require(_0x0a3a('0xc')));_0x49dac4[_0x0a3a('0x7')]('/api/voice/mohs',require(_0x0a3a('0xd')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xe'),require(_0x0a3a('0xf')));_0x49dac4['use'](_0x0a3a('0x10'),require(_0x0a3a('0x11')));_0x49dac4[_0x0a3a('0x7')]('/api/screen/recordings',require(_0x0a3a('0x12')));_0x49dac4['use'](_0x0a3a('0x13'),require('./api/voiceMail'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x14'),require('./api/voiceMailMessage'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x15'),require('./api/voiceCallReport'));_0x49dac4['use'](_0x0a3a('0x16'),require(_0x0a3a('0x17')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x18'),require(_0x0a3a('0x19')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x1a'),require('./api/voiceQueueReport'));_0x49dac4[_0x0a3a('0x7')]('/api/members/reports',require('./api/memberReport'));_0x49dac4['use'](_0x0a3a('0x1b'),require(_0x0a3a('0x1c')));_0x49dac4['use'](_0x0a3a('0x1d'),require(_0x0a3a('0x1e')));_0x49dac4['use'](_0x0a3a('0x1f'),require(_0x0a3a('0x20')));_0x49dac4['use'](_0x0a3a('0x21'),require(_0x0a3a('0x22')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x23'),require(_0x0a3a('0x24')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x25'),require(_0x0a3a('0x26')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x27'),require(_0x0a3a('0x28')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x29'),require(_0x0a3a('0x2a')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x2b'),require(_0x0a3a('0x2c')));_0x49dac4[_0x0a3a('0x7')]('/api/mail/reports/queue',require(_0x0a3a('0x2d')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x2e'),require(_0x0a3a('0x2f')));_0x49dac4[_0x0a3a('0x7')]('/api/dashboards/items',require(_0x0a3a('0x30')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x31'),require('./api/faxAccount'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x32'),require(_0x0a3a('0x33')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x34'),require('./api/faxInteraction'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x35'),require(_0x0a3a('0x36')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x37'),require('./api/faxQueue'));_0x49dac4['use']('/api/fax/reports/queue',require('./api/faxQueueReport'));_0x49dac4[_0x0a3a('0x7')]('/api/sms/accounts',require(_0x0a3a('0x38')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x39'),require(_0x0a3a('0x3a')));_0x49dac4['use'](_0x0a3a('0x3b'),require('./api/smsInteraction'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x3c'),require('./api/smsMessage'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x3d'),require(_0x0a3a('0x3e')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x3f'),require(_0x0a3a('0x40')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x41'),require(_0x0a3a('0x42')));_0x49dac4[_0x0a3a('0x7')]('/api/openchannel/interactions',require(_0x0a3a('0x43')));_0x49dac4['use']('/api/openchannel/messages',require(_0x0a3a('0x44')));_0x49dac4['use'](_0x0a3a('0x45'),require('./api/openchannelQueue'));_0x49dac4['use'](_0x0a3a('0x46'),require(_0x0a3a('0x47')));_0x49dac4['use']('/api/openchannel/reports/queue',require(_0x0a3a('0x48')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x49'),require('./api/chatApplication'));_0x49dac4['use'](_0x0a3a('0x4a'),require(_0x0a3a('0x4b')));_0x49dac4['use'](_0x0a3a('0x4c'),require('./api/chatMessage'));_0x49dac4['use'](_0x0a3a('0x4d'),require(_0x0a3a('0x4e')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x4f'),require('./api/chatQueue'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x50'),require(_0x0a3a('0x51')));_0x49dac4['use'](_0x0a3a('0x52'),require(_0x0a3a('0x53')));_0x49dac4['use'](_0x0a3a('0x54'),require(_0x0a3a('0x55')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x56'),require(_0x0a3a('0x57')));_0x49dac4['use'](_0x0a3a('0x58'),require(_0x0a3a('0x59')));_0x49dac4[_0x0a3a('0x7')]('/api/cm/hopper_black',require('./api/cmHopperBlack'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x5a'),require(_0x0a3a('0x5b')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x5c'),require(_0x0a3a('0x5d')));_0x49dac4['use'](_0x0a3a('0x5e'),require(_0x0a3a('0x5f')));_0x49dac4['use'](_0x0a3a('0x60'),require(_0x0a3a('0x61')));_0x49dac4['use']('/api/automations',require(_0x0a3a('0x62')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x63'),require(_0x0a3a('0x64')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x65'),require(_0x0a3a('0x66')));_0x49dac4['use'](_0x0a3a('0x67'),require('./api/condition'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x68'),require('./api/interval'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x69'),require(_0x0a3a('0x6a')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x6b'),require(_0x0a3a('0x6c')));_0x49dac4[_0x0a3a('0x7')]('/api/voiceQueuesLog',require(_0x0a3a('0x6d')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x6e'),require(_0x0a3a('0x6f')));_0x49dac4['use'](_0x0a3a('0x70'),require('./api/sound'));_0x49dac4[_0x0a3a('0x7')]('/api/tags',require(_0x0a3a('0x71')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x72'),require(_0x0a3a('0x73')));_0x49dac4[_0x0a3a('0x7')]('/api/cm_contact_has_items',require(_0x0a3a('0x74')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x75'),require(_0x0a3a('0x76')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x77'),require(_0x0a3a('0x78')));_0x49dac4['use']('/api/triggers',require(_0x0a3a('0x79')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x7a'),require(_0x0a3a('0x7b')));_0x49dac4[_0x0a3a('0x7')]('/api/integrations',require(_0x0a3a('0x7c')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x7d'),require(_0x0a3a('0x7e')));_0x49dac4[_0x0a3a('0x7')]('/api/analytics/custom_reports',require('./api/analyticCustomReport'));_0x49dac4['use'](_0x0a3a('0x7f'),require(_0x0a3a('0x80')));_0x49dac4['use'](_0x0a3a('0x81'),require(_0x0a3a('0x82')));_0x49dac4['use'](_0x0a3a('0x83'),require('./api/analyticMetric'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x84'),require(_0x0a3a('0x85')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x86'),require('./api/analyticTreeReport'));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/salesforce/accounts',require(_0x0a3a('0x87')));_0x49dac4['use']('/api/integrations/salesforce/configurations',require(_0x0a3a('0x88')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x89'),require(_0x0a3a('0x8a')));_0x49dac4['use'](_0x0a3a('0x8b'),require('./api/intSugarcrmAccount'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x8c'),require('./api/intSugarcrmConfiguration'));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/sugarcrm/fields',require(_0x0a3a('0x8d')));_0x49dac4['use'](_0x0a3a('0x8e'),require(_0x0a3a('0x8f')));_0x49dac4['use'](_0x0a3a('0x90'),require(_0x0a3a('0x91')));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/desk/fields',require('./api/intDeskField'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x92'),require(_0x0a3a('0x93')));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/zoho/configurations',require(_0x0a3a('0x94')));_0x49dac4['use'](_0x0a3a('0x95'),require(_0x0a3a('0x96')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x97'),require(_0x0a3a('0x98')));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/zendesk/configurations',require(_0x0a3a('0x99')));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/zendesk/fields',require('./api/intZendeskField'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x9a'),require('./api/intFreshdeskAccount'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x9b'),require(_0x0a3a('0x9c')));_0x49dac4['use'](_0x0a3a('0x9d'),require(_0x0a3a('0x9e')));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/vtiger/accounts',require('./api/intVtigerAccount'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x9f'),require(_0x0a3a('0xa0')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xa1'),require(_0x0a3a('0xa2')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xa3'),require('./api/intServicenowAccount'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xa4'),require(_0x0a3a('0xa5')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xa6'),require(_0x0a3a('0xa7')));_0x49dac4['use'](_0x0a3a('0xa8'),require(_0x0a3a('0xa9')));_0x49dac4['use'](_0x0a3a('0xaa'),require('./api/intDynamics365Configuration'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xab'),require(_0x0a3a('0xac')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xad'),require(_0x0a3a('0xae')));_0x49dac4['use'](_0x0a3a('0xaf'),require(_0x0a3a('0xb0')));_0x49dac4[_0x0a3a('0x7')]('/api/integrations/freshsales/fields',require(_0x0a3a('0xb1')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xb2'),require(_0x0a3a('0xb3')));_0x49dac4[_0x0a3a('0x7')]('/api/chat/reports/queue',require(_0x0a3a('0xb4')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xb5'),require(_0x0a3a('0xb6')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xb7'),require(_0x0a3a('0xb8')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xb9'),require(_0x0a3a('0xba')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xbb'),require(_0x0a3a('0xbc')));_0x49dac4['use'](_0x0a3a('0xbd'),require(_0x0a3a('0xbe')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xbf'),require('./api/squareReport'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xc0'),require(_0x0a3a('0xc1')));_0x49dac4['use'](_0x0a3a('0xc2'),require(_0x0a3a('0xc3')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xc4'),require(_0x0a3a('0xc5')));_0x49dac4[_0x0a3a('0x7')]('/api/square/odbc',require(_0x0a3a('0xc6')));_0x49dac4[_0x0a3a('0x7')]('/api/square/projects',require('./api/squareProject'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xc7'),require(_0x0a3a('0xc8')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xc9'),require(_0x0a3a('0xca')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xcb'),require(_0x0a3a('0xcc')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xcd'),require(_0x0a3a('0xce')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xcf'),require(_0x0a3a('0xd0')));_0x49dac4['use'](_0x0a3a('0xd1'),require('./api/migration'));_0x49dac4[_0x0a3a('0x7')]('/api/attachments',require(_0x0a3a('0xd2')));_0x49dac4['use'](_0x0a3a('0xd3'),require(_0x0a3a('0xd4')));_0x49dac4['use'](_0x0a3a('0xd5'),require('./api/mailTransferReport'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xd6'),require('./api/chatTransferReport'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xd7'),require('./api/faxTransferReport'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xd8'),require(_0x0a3a('0xd9')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xda'),require(_0x0a3a('0xdb')));_0x49dac4[_0x0a3a('0x7')]('/api/cm/lists',require(_0x0a3a('0xdc')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xdd'),require('./api/voicePrefix'));_0x49dac4[_0x0a3a('0x7')]('/api/userProfiles',require('./api/userProfile'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xde'),require(_0x0a3a('0xdf')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xe0'),require(_0x0a3a('0xe1')));_0x49dac4[_0x0a3a('0x7')]('/api/userNotifications',require(_0x0a3a('0xe2')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xe3'),require(_0x0a3a('0xe4')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xe5'),require(_0x0a3a('0xe6')));_0x49dac4['use'](_0x0a3a('0xe7'),require('./api/whatsappInteraction'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xe8'),require('./api/whatsappMessage'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xe9'),require(_0x0a3a('0xea')));_0x49dac4['use'](_0x0a3a('0xeb'),require(_0x0a3a('0xec')));_0x49dac4[_0x0a3a('0x7')]('/api/whatsapp/queues',require(_0x0a3a('0xed')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xee'),require(_0x0a3a('0xef')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xf0'),require('./api/realtime'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xf1'),require('./api/user-setting'));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xf2'),require(_0x0a3a('0xf3')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xf4'),require(_0x0a3a('0xf5')));_0x49dac4['use'](_0x0a3a('0xf6'),require(_0x0a3a('0xf7')));_0x49dac4[_0x0a3a('0x7')]('/api/jira',require(_0x0a3a('0xf8')));_0x49dac4['use'](_0x0a3a('0xf9'),require(_0x0a3a('0xfa')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xfb'),require(_0x0a3a('0xfc')));_0x49dac4[_0x0a3a('0x7')]('/api/system',require(_0x0a3a('0xfd')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0xfe'),require(_0x0a3a('0xff')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x100'),require(_0x0a3a('0x101')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x102'),clientSideLogs);_0x49dac4['use'](_0x0a3a('0x103'),express[_0x0a3a('0x104')](path[_0x0a3a('0x105')](config['root'],_0x0a3a('0x103'))));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x106'),express[_0x0a3a('0x104')](path[_0x0a3a('0x105')](config[_0x0a3a('0x107')],_0x0a3a('0x106'))));_0x49dac4['use'](_0x0a3a('0x108'),express[_0x0a3a('0x104')](path[_0x0a3a('0x105')](config['root'],_0x0a3a('0x108'))));_0x49dac4['use']('/snippet',express[_0x0a3a('0x104')](path[_0x0a3a('0x105')](config['root'],_0x0a3a('0x109'),'3.0.0')));_0x49dac4[_0x0a3a('0x7')](_0x0a3a('0x10a'),express[_0x0a3a('0x104')](path['join'](config[_0x0a3a('0x107')],_0x0a3a('0x10b'))));_0x49dac4[_0x0a3a('0x10c')](_0x0a3a('0x10d'))['get'](errors[0x194]);_0x49dac4[_0x0a3a('0x10c')]('/*')[_0x0a3a('0x10e')](function(_0x38c48e,_0x2e4f87){_0x2e4f87[_0x0a3a('0x10f')](path[_0x0a3a('0x110')](_0x49dac4[_0x0a3a('0x10e')](_0x0a3a('0x111'))+_0x0a3a('0x112')));});return _0x49dac4;});};
\ No newline at end of file
index 6714bc7..0176656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8cd=['../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','rpc','localhost','listen','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','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/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc'];(function(_0x38c202,_0x299906){var _0xb66482=function(_0x55374d){while(--_0x55374d){_0x38c202['push'](_0x38c202['shift']());}};_0xb66482(++_0x299906);}(_0xa8cd,0x7e));var _0xda8c=function(_0x1fd9e7,_0x24cdbe){_0x1fd9e7=_0x1fd9e7-0x0;var _0x1781f2=_0xa8cd[_0x1fd9e7];return _0x1781f2;};'use strict';var jayson=require(_0xda8c('0x0'));var _=require(_0xda8c('0x1'));var config=require(_0xda8c('0x2'));exports['listen']=function(){return new Promise(function(_0x475846,_0x189369){var _0x260877={};_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x4')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x5')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x6')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x7')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x8')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x9')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0xa')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0xb')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0xc')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0xd')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0xe')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0xf')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x10')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/mailApplication/mailApplication.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x11')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x12')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x13')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/faxInteraction/faxInteraction.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x14')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x15')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x16')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x17')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x18')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x19')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x1a')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x1b')));_0x260877=_['merge'](_0x260877,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x1c')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x1d')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x1e')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x1f')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x20')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/chatQueue/chatQueue.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x21')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/cmHopper/cmHopper.rpc'));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x22')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x23')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x24')));_0x260877=_['merge'](_0x260877,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/interval/interval.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x25')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x26')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x27')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x28')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/trigger/trigger.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x29')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x2a')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x2b')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x2c')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x2d')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x2e')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x2f')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x30')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x31')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x32')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x33')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/setting/setting.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/squareOdbc/squareOdbc.rpc'));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x34')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x35')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x36')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x37')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x38')));_0x260877=_[_0xda8c('0x3')](_0x260877,require('../api/plugin/plugin.rpc'));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x39')));_0x260877=_['merge'](_0x260877,require(_0xda8c('0x3a')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x3b')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x3c')));_0x260877=_[_0xda8c('0x3')](_0x260877,require(_0xda8c('0x3d')));var _0x548087=jayson[_0xda8c('0x3e')](_0x260877)[_0xda8c('0x3f')]();var _0x541a4f=config['rpc'][_0xda8c('0x40')]||config[_0xda8c('0x40')]+0x1;var _0x24f053=config[_0xda8c('0x41')]['ip']||_0xda8c('0x42');_0x548087['on']('error',function(_0x313867){return _0x189369(_0x313867);});_0x548087[_0xda8c('0x43')](_0x541a4f,_0x24f053,function(){console[_0xda8c('0x44')](_0xda8c('0x45'),_0x24f053,_0x541a4f);require(_0xda8c('0x46'))[_0xda8c('0x47')]();return _0x475846(_0xda8c('0x48')+_0x24f053+':'+_0x541a4f);});});};
\ No newline at end of file
+var _0x8de3=['../api/mailQueue/mailQueue.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxInteraction/faxInteraction.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/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','error','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','jayson/promise','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc'];(function(_0x34905c,_0x4da712){var _0x274736=function(_0x5300be){while(--_0x5300be){_0x34905c['push'](_0x34905c['shift']());}};_0x274736(++_0x4da712);}(_0x8de3,0x11c));var _0x38de=function(_0x2bb3f6,_0x25fde0){_0x2bb3f6=_0x2bb3f6-0x0;var _0x62b339=_0x8de3[_0x2bb3f6];return _0x62b339;};'use strict';var jayson=require(_0x38de('0x0'));var _=require(_0x38de('0x1'));var config=require(_0x38de('0x2'));exports[_0x38de('0x3')]=function(){return new Promise(function(_0x596ccf,_0x27da84){var _0x1b8151={};_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x5')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/voiceExtension/voiceExtension.rpc'));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x6')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x7')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x8')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x9')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0xa')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0xb')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/memberReport/memberReport.rpc'));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0xc')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0xd')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0xe')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/mailServerIn/mailServerIn.rpc'));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0xf')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x10')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/mailInteraction/mailInteraction.rpc'));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/mailMessage/mailMessage.rpc'));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x11')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x12')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x13')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/faxApplication/faxApplication.rpc'));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x14')));_0x1b8151=_['merge'](_0x1b8151,require('../api/faxMessage/faxMessage.rpc'));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x15')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x16')));_0x1b8151=_['merge'](_0x1b8151,require('../api/smsAccount/smsAccount.rpc'));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x17')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x18')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x19')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x1a')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x1b')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x1c')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x1d')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x1e')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x1f')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x20')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x21')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x22')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x23')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x24')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x25')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x26')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x27')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x28')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x29')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x2a')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x2b')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x2c')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x2d')));_0x1b8151=_['merge'](_0x1b8151,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x2e')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x2f')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x30')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x31')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x32')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x33')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x34')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x35')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x36')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x37')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x38')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x39')));_0x1b8151=_['merge'](_0x1b8151,require('../api/squareOdbc/squareOdbc.rpc'));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x3a')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x3b')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x3c')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x3d')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require('../api/attachment/attachment.rpc'));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x3e')));_0x1b8151=_['merge'](_0x1b8151,require(_0x38de('0x3f')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x40')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x41')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x42')));_0x1b8151=_[_0x38de('0x4')](_0x1b8151,require(_0x38de('0x43')));var _0x2fbceb=jayson['server'](_0x1b8151)[_0x38de('0x44')]();var _0x88b793=config[_0x38de('0x45')][_0x38de('0x46')]||config[_0x38de('0x46')]+0x1;var _0x62dcbc=config[_0x38de('0x45')]['ip']||'localhost';_0x2fbceb['on'](_0x38de('0x47'),function(_0x47a27d){return _0x27da84(_0x47a27d);});_0x2fbceb[_0x38de('0x3')](_0x88b793,_0x62dcbc,function(){console['log'](_0x38de('0x48'),_0x62dcbc,_0x88b793);require(_0x38de('0x49'))[_0x38de('0x4a')]();return _0x596ccf('RPC\x20listening\x20on\x20'+_0x62dcbc+':'+_0x88b793);});});};
\ No newline at end of file
index 40cab33..5815ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1410=['./error','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','no\x20code','replace','result=','indexOf','split','length','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','function','write','inherits','prototype','sendRequest','answer','ANSWER','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','HANGUP','setVariable','isBoolean','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','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','util','lodash','events','EventEmitter'];(function(_0x5d9ce1,_0x4a1556){var _0x1fd84e=function(_0x419f6e){while(--_0x419f6e){_0x5d9ce1['push'](_0x5d9ce1['shift']());}};_0x1fd84e(++_0x4a1556);}(_0x1410,0x130));var _0x0141=function(_0x21470a,_0x51d6fe){_0x21470a=_0x21470a-0x0;var _0x5e055c=_0x1410[_0x21470a];return _0x5e055c;};'use strict';var util=require(_0x0141('0x0'));var _=require(_0x0141('0x1'));var EventEmitter=require(_0x0141('0x2'))[_0x0141('0x3')];var AGIReply=require('./reply');var AGIError=require(_0x0141('0x4'));function AGIChannel(_0x4f3258){var _0x3c3422=this,_0x5d2855=new AGIReply(),_0x194c72=![],_0x454af1={};EventEmitter[_0x0141('0x5')](_0x3c3422);_0x4f3258[_0x0141('0x6')](_0x0141('0x7'));_0x4f3258[_0x0141('0x8')](0x8*0x3c*0x3c*0x3e8);_0x5d2855[_0x0141('0x6')](_0x0141('0x7'));_0x5d2855['on'](_0x0141('0x9'),function(_0x57cfbb){for(var _0x19ff64 in _0x57cfbb){_0x3c3422[_0x19ff64]=_0x57cfbb[_0x19ff64];}_0x3c3422[_0x0141('0xa')](_0x0141('0xb'));});_0x5d2855['on'](_0x0141('0xc'),function(_0x1b6b66){if(_0x1b6b66[_0x0141('0xd')]()==_0x0141('0xe')){_0x3c3422[_0x0141('0xa')]('hangup');return;}if(_0x1b6b66[_0x0141('0xf')](0x0,0xb)==_0x0141('0x10')){_0x194c72=!![];}if(_0x194c72){_0x454af1['rx']+=_0x1b6b66+'\x0a';if(_0x1b6b66[_0x0141('0x11')](_0x0141('0x12'))!=-0x1){_0x194c72=![];}}else{_0x454af1['rx']=_0x1b6b66;}if(_0x194c72){return;}if(typeof _0x454af1['cb']=='function'){var _0x49cebd=_0x454af1['rx']['substring'](0x0,0x3),_0xab59e3=null,_0x25aefb=null;_0x49cebd=parseInt(_0x49cebd);if(isNaN(_0x49cebd)){_0x454af1['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x0141('0x13')});return;}if(_0x49cebd!=0xc8){_0x454af1['cb'](null,{'code':_0x49cebd,'result':-0x1,'extra':'KO'});return;}_0xab59e3=_0x454af1['rx'][_0x0141('0xf')](0x4)[_0x0141('0x14')](_0x0141('0x15'),'');if(_0xab59e3[_0x0141('0x16')]('\x20')!=-0x1){_0xab59e3=_0xab59e3['substr'](0x0,_0xab59e3[_0x0141('0x16')]('\x20'));}if(_['startsWith'](_0xab59e3,'-1')){_0xab59e3=parseInt(_0xab59e3);}_0x25aefb=_0x454af1['rx'][_0x0141('0x17')]('\x20');if(_0x25aefb[_0x0141('0x18')]==0x3){_0x25aefb=_0x25aefb[0x2][_0x0141('0xf')](0x1,_0x25aefb[0x2][_0x0141('0x18')]-0x1);}else if(_0x25aefb[_0x0141('0x18')]>0x3){var _0x3c91e8=/\((.+)\)/;var _0x5274ab=_0x454af1['rx']['match'](_0x3c91e8);if(_0x5274ab){_0x25aefb=_0x5274ab[0x1];}else{_0x25aefb=null;}}else{_0x25aefb=null;}_0x454af1['cb'](null,{'code':_0x49cebd,'result':_0xab59e3,'extra':_0x25aefb});}});_0x4f3258['on'](_0x0141('0x19'),function(_0x3720f6){_0x3c3422['emit'](_0x0141('0x19'),new AGIError(_0x0141('0x1a'),_0x3720f6[_0x0141('0x1b')]));});_0x4f3258['on'](_0x0141('0x1c'),function(){_0x3c3422['emit'](_0x0141('0x1c'),new AGIError(_0x0141('0x1d')));});_0x4f3258['on']('timeout',function(){_0x3c3422[_0x0141('0xa')](_0x0141('0x1e'),new AGIError(_0x0141('0x1f')));_0x4f3258[_0x0141('0x20')]();});_0x4f3258[_0x0141('0x21')](_0x5d2855);this[_0x0141('0x22')]=function(_0x5e0ebe,_0x21d8fc){var _0x5e0ebe=_0x5e0ebe||'',_0x21d8fc=typeof _0x21d8fc==_0x0141('0x23')?_0x21d8fc:new Function();_0x454af1={'tx':_0x5e0ebe,'rx':'','cb':_0x21d8fc};_0x4f3258[_0x0141('0x24')](_0x5e0ebe+'\x0a');},this[_0x0141('0x1c')]=function(){_0x4f3258[_0x0141('0x20')]();};}util[_0x0141('0x25')](AGIChannel,EventEmitter);AGIChannel[_0x0141('0x26')][_0x0141('0x27')]=function(_0x43b105){return this[_0x0141('0x22')]['sync'](this,_0x43b105);};AGIChannel[_0x0141('0x26')][_0x0141('0x28')]=function(){return this[_0x0141('0x27')](_0x0141('0x29'));};AGIChannel[_0x0141('0x26')]['getData']=function(_0x59196f,_0x4f0c09,_0x2bb7c4){_0x59196f=_0x59196f===undefined?'beep':_0x59196f;_0x4f0c09=_0x4f0c09===undefined?'5':_0x4f0c09;_0x2bb7c4=_0x2bb7c4===undefined?'1':_0x2bb7c4;return this[_0x0141('0x27')](util['format'](_0x0141('0x2a'),_0x59196f,_0x4f0c09*0x3e8,_0x2bb7c4));};AGIChannel[_0x0141('0x26')][_0x0141('0x2b')]=function(_0x378a87){_0x378a87=_0x378a87||_0x0141('0x2c');return this[_0x0141('0x27')](util[_0x0141('0x2d')](_0x0141('0x2e'),_0x378a87));};AGIChannel[_0x0141('0x26')][_0x0141('0x2f')]=function(_0x32ce7e,_0x36c409){if(_[_0x0141('0x30')](_0x36c409)){return this['sendRequest'](util[_0x0141('0x2d')]('EXEC\x20%s\x20%s',_0x32ce7e,_0x36c409[_0x0141('0x31')](',')));}return this[_0x0141('0x27')](util[_0x0141('0x2d')](_0x0141('0x32'),_0x32ce7e,_0x36c409));};AGIChannel[_0x0141('0x26')][_0x0141('0x33')]=function(_0x5292ef){return this[_0x0141('0x27')](util['format'](_0x0141('0x34'),_0x5292ef));};AGIChannel[_0x0141('0x26')][_0x0141('0x35')]=function(_0x54d8fa){return this[_0x0141('0x27')](util[_0x0141('0x2d')]('SET\x20EXTENSION\x20%s',_0x54d8fa));};AGIChannel[_0x0141('0x26')][_0x0141('0x36')]=function(_0x17dd47){return this[_0x0141('0x27')](util[_0x0141('0x2d')]('SET\x20PRIORITY\x20%s',_0x17dd47));};AGIChannel[_0x0141('0x26')][_0x0141('0xe')]=function(){return this[_0x0141('0x27')](_0x0141('0x37'));};AGIChannel[_0x0141('0x26')][_0x0141('0x38')]=function(_0x4eaa30,_0x52437d){var _0x12ad43=_[_0x0141('0x39')](_0x52437d)||_['isNumber'](_0x52437d)?_0x52437d[_0x0141('0x3a')]():_0x52437d;return this[_0x0141('0x27')](util[_0x0141('0x2d')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x4eaa30,_0x12ad43?_0x12ad43['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x0141('0x26')][_0x0141('0x3b')]=function(_0x45dfb3,_0x284986){return this[_0x0141('0x27')](util[_0x0141('0x2d')](_0x0141('0x3c'),_0x45dfb3,_0x284986));};AGIChannel['prototype'][_0x0141('0x3d')]=function(_0x258bc0,_0x5b76c1){return this[_0x0141('0x27')](util[_0x0141('0x2d')](_0x0141('0x3e'),_0x258bc0,_0x5b76c1));};AGIChannel[_0x0141('0x26')][_0x0141('0x3f')]=function(_0x158480,_0xe7cce0){return this[_0x0141('0x27')](util['format'](_0x0141('0x40'),_0x158480,_0xe7cce0));};AGIChannel[_0x0141('0x26')]['continueAt']=function(_0x1d545b,_0x21baeb,_0x321f83){_0x21baeb=_0x21baeb||this[_0x0141('0x41')];_0x321f83=_0x321f83||0x1;this[_0x0141('0x33')](_0x1d545b);this['setExtension'](_0x21baeb);this[_0x0141('0x36')](_0x321f83);return this['noop'](util[_0x0141('0x2d')]('GOTO\x20%s\x20%s\x20%s',_0x1d545b,_0x21baeb,_0x321f83));};AGIChannel['prototype']['getVariable']=function(_0x25870d){return this[_0x0141('0x27')](util[_0x0141('0x2d')]('GET\x20VARIABLE\x20\x22%s\x22',_0x25870d));};AGIChannel[_0x0141('0x26')][_0x0141('0x42')]=function(_0x451471,_0x51de8f,_0x4c64bf,_0x3caba9,_0x268d2a,_0x3195bc){_0x51de8f=_0x51de8f||_0x0141('0x43');_0x4c64bf=_0x4c64bf||'';_0x3caba9=_0x3caba9===undefined?-0x1:_0x3caba9==='-1'?-0x1:_0x3caba9*0x3e8;_0x268d2a=_0x268d2a===undefined?'':'s='+_0x268d2a;_0x3195bc=_0x3195bc?_0x0141('0x44'):'';return this[_0x0141('0x27')](util[_0x0141('0x2d')](_0x0141('0x45'),_0x451471,_0x51de8f,_0x4c64bf,_0x3caba9,_0x3195bc,_0x268d2a));};AGIChannel['prototype'][_0x0141('0x46')]=function(_0x1dd10c,_0xbacb30){_0xbacb30=_0xbacb30||'';return this['sendRequest'](util[_0x0141('0x2d')](_0x0141('0x47'),_0x1dd10c,_0xbacb30));};AGIChannel[_0x0141('0x26')]['agi']=function(_0x34d300){return this['exec'](_0x0141('0x48'),_0x34d300);};AGIChannel['prototype'][_0x0141('0x49')]=function(_0x558af0){return this[_0x0141('0x2f')](_0x0141('0x4a'),_0x558af0);};AGIChannel[_0x0141('0x26')][_0x0141('0x19')]=function(_0x20a901,_0x482e1e){this[_0x0141('0x2b')](util[_0x0141('0x2d')](_0x0141('0x4b'),_0x20a901['id'],_0x20a901['label'],_0x482e1e));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x0141('0x4c')]=AGIChannel;
\ No newline at end of file
+var _0x4f75=['sync','prototype','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','exec','isArray','EXEC\x20%s\x20%s','join','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setExtension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','streamFile','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','util','lodash','EventEmitter','./reply','call','utf8','setTimeout','ready','line','toLowerCase','emit','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','replace','indexOf','startsWith','split','length','match','error','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','sendRequest'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x4f75,0xbb));var _0x54f7=function(_0x436de1,_0x500a38){_0x436de1=_0x436de1-0x0;var _0x8a766f=_0x4f75[_0x436de1];return _0x8a766f;};'use strict';var util=require(_0x54f7('0x0'));var _=require(_0x54f7('0x1'));var EventEmitter=require('events')[_0x54f7('0x2')];var AGIReply=require(_0x54f7('0x3'));var AGIError=require('./error');function AGIChannel(_0x7ffc5f){var _0x383133=this,_0x141cd0=new AGIReply(),_0x328d55=![],_0x11c0c9={};EventEmitter[_0x54f7('0x4')](_0x383133);_0x7ffc5f['setEncoding'](_0x54f7('0x5'));_0x7ffc5f[_0x54f7('0x6')](0x8*0x3c*0x3c*0x3e8);_0x141cd0['setEncoding'](_0x54f7('0x5'));_0x141cd0['on']('headers',function(_0x2cf04d){for(var _0x19609b in _0x2cf04d){_0x383133[_0x19609b]=_0x2cf04d[_0x19609b];}_0x383133['emit'](_0x54f7('0x7'));});_0x141cd0['on'](_0x54f7('0x8'),function(_0x75948a){if(_0x75948a[_0x54f7('0x9')]()=='hangup'){_0x383133[_0x54f7('0xa')]('hangup');return;}if(_0x75948a[_0x54f7('0xb')](0x0,0xb)==_0x54f7('0xc')){_0x328d55=!![];}if(_0x328d55){_0x11c0c9['rx']+=_0x75948a+'\x0a';if(_0x75948a[_0x54f7('0xd')](_0x54f7('0xe'))!=-0x1){_0x328d55=![];}}else{_0x11c0c9['rx']=_0x75948a;}if(_0x328d55){return;}if(typeof _0x11c0c9['cb']==_0x54f7('0xf')){var _0x495ef8=_0x11c0c9['rx']['substring'](0x0,0x3),_0x1ac843=null,_0x52bb74=null;_0x495ef8=parseInt(_0x495ef8);if(isNaN(_0x495ef8)){_0x11c0c9['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x495ef8!=0xc8){_0x11c0c9['cb'](null,{'code':_0x495ef8,'result':-0x1,'extra':'KO'});return;}_0x1ac843=_0x11c0c9['rx'][_0x54f7('0xb')](0x4)[_0x54f7('0x10')]('result=','');if(_0x1ac843['indexOf']('\x20')!=-0x1){_0x1ac843=_0x1ac843['substr'](0x0,_0x1ac843[_0x54f7('0x11')]('\x20'));}if(_[_0x54f7('0x12')](_0x1ac843,'-1')){_0x1ac843=parseInt(_0x1ac843);}_0x52bb74=_0x11c0c9['rx'][_0x54f7('0x13')]('\x20');if(_0x52bb74[_0x54f7('0x14')]==0x3){_0x52bb74=_0x52bb74[0x2][_0x54f7('0xb')](0x1,_0x52bb74[0x2]['length']-0x1);}else if(_0x52bb74[_0x54f7('0x14')]>0x3){var _0x274f30=/\((.+)\)/;var _0x43a286=_0x11c0c9['rx'][_0x54f7('0x15')](_0x274f30);if(_0x43a286){_0x52bb74=_0x43a286[0x1];}else{_0x52bb74=null;}}else{_0x52bb74=null;}_0x11c0c9['cb'](null,{'code':_0x495ef8,'result':_0x1ac843,'extra':_0x52bb74});}});_0x7ffc5f['on'](_0x54f7('0x16'),function(_0x39d7db){_0x383133[_0x54f7('0xa')](_0x54f7('0x16'),new AGIError('E_AGI_SOCKET_ERROR',_0x39d7db[_0x54f7('0x17')]));});_0x7ffc5f['on'](_0x54f7('0x18'),function(){_0x383133[_0x54f7('0xa')](_0x54f7('0x18'),new AGIError(_0x54f7('0x19')));});_0x7ffc5f['on'](_0x54f7('0x1a'),function(){_0x383133[_0x54f7('0xa')](_0x54f7('0x1a'),new AGIError(_0x54f7('0x1b')));_0x7ffc5f[_0x54f7('0x1c')]();});_0x7ffc5f[_0x54f7('0x1d')](_0x141cd0);this[_0x54f7('0x1e')]=function(_0x39430d,_0x52ff22){var _0x39430d=_0x39430d||'',_0x52ff22=typeof _0x52ff22==_0x54f7('0xf')?_0x52ff22:new Function();_0x11c0c9={'tx':_0x39430d,'rx':'','cb':_0x52ff22};_0x7ffc5f['write'](_0x39430d+'\x0a');},this[_0x54f7('0x18')]=function(){_0x7ffc5f[_0x54f7('0x1c')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x54f7('0x1f')]=function(_0x1a449f){return this[_0x54f7('0x1e')][_0x54f7('0x20')](this,_0x1a449f);};AGIChannel[_0x54f7('0x21')]['answer']=function(){return this[_0x54f7('0x1f')](_0x54f7('0x22'));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x23')]=function(_0x24da0c,_0x597540,_0x3aa132){_0x24da0c=_0x24da0c===undefined?_0x54f7('0x24'):_0x24da0c;_0x597540=_0x597540===undefined?'5':_0x597540;_0x3aa132=_0x3aa132===undefined?'1':_0x3aa132;return this[_0x54f7('0x1f')](util[_0x54f7('0x25')](_0x54f7('0x26'),_0x24da0c,_0x597540*0x3e8,_0x3aa132));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x27')]=function(_0xb2bc0f){_0xb2bc0f=_0xb2bc0f||_0x54f7('0x28');return this['sendRequest'](util[_0x54f7('0x25')]('VERBOSE\x20\x22%s\x22',_0xb2bc0f));};AGIChannel['prototype'][_0x54f7('0x29')]=function(_0x1fe06a,_0x409c6f){if(_[_0x54f7('0x2a')](_0x409c6f)){return this['sendRequest'](util['format'](_0x54f7('0x2b'),_0x1fe06a,_0x409c6f[_0x54f7('0x2c')](',')));}return this[_0x54f7('0x1f')](util[_0x54f7('0x25')]('EXEC\x20%s\x20%s',_0x1fe06a,_0x409c6f));};AGIChannel[_0x54f7('0x21')]['setContext']=function(_0x650877){return this[_0x54f7('0x1f')](util[_0x54f7('0x25')](_0x54f7('0x2d'),_0x650877));};AGIChannel[_0x54f7('0x21')]['setExtension']=function(_0x18dfa5){return this[_0x54f7('0x1f')](util[_0x54f7('0x25')](_0x54f7('0x2e'),_0x18dfa5));};AGIChannel[_0x54f7('0x21')]['setPriority']=function(_0x548128){return this['sendRequest'](util[_0x54f7('0x25')](_0x54f7('0x2f'),_0x548128));};AGIChannel[_0x54f7('0x21')]['hangup']=function(){return this[_0x54f7('0x1f')](_0x54f7('0x30'));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x31')]=function(_0x410f39,_0x1bfb08){var _0x417139=_['isBoolean'](_0x1bfb08)||_[_0x54f7('0x32')](_0x1bfb08)?_0x1bfb08[_0x54f7('0x33')]():_0x1bfb08;return this[_0x54f7('0x1f')](util[_0x54f7('0x25')](_0x54f7('0x34'),_0x410f39,_0x417139?_0x417139[_0x54f7('0x33')]()[_0x54f7('0x10')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x35')]=function(_0x3d49ac,_0x1c4ee5){return this[_0x54f7('0x1f')](util[_0x54f7('0x25')](_0x54f7('0x36'),_0x3d49ac,_0x1c4ee5));};AGIChannel['prototype']['sayDigits']=function(_0x3b2602,_0x42c4b5){return this['sendRequest'](util[_0x54f7('0x25')](_0x54f7('0x37'),_0x3b2602,_0x42c4b5));};AGIChannel['prototype']['sayPhonetic']=function(_0xb9c753,_0x469bf9){return this[_0x54f7('0x1f')](util[_0x54f7('0x25')](_0x54f7('0x38'),_0xb9c753,_0x469bf9));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x39')]=function(_0x3e96c5,_0x364a29,_0x373dae){_0x364a29=_0x364a29||this[_0x54f7('0x3a')];_0x373dae=_0x373dae||0x1;this['setContext'](_0x3e96c5);this[_0x54f7('0x3b')](_0x364a29);this[_0x54f7('0x3c')](_0x373dae);return this['noop'](util[_0x54f7('0x25')](_0x54f7('0x3d'),_0x3e96c5,_0x364a29,_0x373dae));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x3e')]=function(_0x535f89){return this[_0x54f7('0x1f')](util[_0x54f7('0x25')](_0x54f7('0x3f'),_0x535f89));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x40')]=function(_0x145b52,_0x121b62,_0x2f17c1,_0xa4161b,_0x206ce2,_0x48c4d9){_0x121b62=_0x121b62||_0x54f7('0x41');_0x2f17c1=_0x2f17c1||'';_0xa4161b=_0xa4161b===undefined?-0x1:_0xa4161b==='-1'?-0x1:_0xa4161b*0x3e8;_0x206ce2=_0x206ce2===undefined?'':'s='+_0x206ce2;_0x48c4d9=_0x48c4d9?_0x54f7('0x42'):'';return this[_0x54f7('0x1f')](util[_0x54f7('0x25')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x145b52,_0x121b62,_0x2f17c1,_0xa4161b,_0x48c4d9,_0x206ce2));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x43')]=function(_0x5322e7,_0x135904){_0x135904=_0x135904||'';return this[_0x54f7('0x1f')](util[_0x54f7('0x25')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x5322e7,_0x135904));};AGIChannel[_0x54f7('0x21')][_0x54f7('0x44')]=function(_0x22db56){return this['exec'](_0x54f7('0x45'),_0x22db56);};AGIChannel['prototype'][_0x54f7('0x46')]=function(_0x899494){return this[_0x54f7('0x29')](_0x54f7('0x47'),_0x899494);};AGIChannel['prototype'][_0x54f7('0x16')]=function(_0x3884f3,_0x5ad8d7){this[_0x54f7('0x27')](util[_0x54f7('0x25')](_0x54f7('0x48'),_0x3884f3['id'],_0x3884f3['label'],_0x5ad8d7));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index 7bb148f..6d2c650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f9=['push','apply','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20closed.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED'];(function(_0x25efdf,_0x521462){var _0x22c495=function(_0x184469){while(--_0x184469){_0x25efdf['push'](_0x25efdf['shift']());}};_0x22c495(++_0x521462);}(_0x41f9,0x1c5));var _0x941f=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x41f9[_0x45d55e];return _0x29812a;};'use strict';var util=require(_0x941f('0x0'));var error={'E_AGI_UNDEFINED':_0x941f('0x1'),'E_AGI_ARGUMENT_PORT':_0x941f('0x2'),'E_AGI_SERVER_ERROR':_0x941f('0x3'),'E_AGI_SERVER_CLOSE':_0x941f('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0x941f('0x5'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x941f('0x6'),'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':_0x941f('0x7')};function AGIError(_0xc7c476){var _0xc7c476=_0xc7c476||null,_0x502480=_0x502480||[],_0x2853b0=0x1,_0x31e7ad='';if(!error[_0xc7c476]){_0xc7c476=_0x941f('0x8');}_0x502480[_0x941f('0x9')](error[_0xc7c476]);while(arguments[_0x2853b0]){_0x502480[_0x941f('0x9')](arguments[_0x2853b0]);_0x2853b0++;}_0x31e7ad=util['format'][_0x941f('0xa')](util,_0x502480);this[_0x941f('0xb')]=_0x31e7ad;this[_0x941f('0xc')]=_0xc7c476;}module[_0x941f('0xd')]=AGIError;
\ No newline at end of file
+var _0xf253=['Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xf253,0x105));var _0x3f25=function(_0x5229bb,_0x4b17f5){_0x5229bb=_0x5229bb-0x0;var _0x15db9b=_0xf253[_0x5229bb];return _0x15db9b;};'use strict';var util=require(_0x3f25('0x0'));var error={'E_AGI_UNDEFINED':_0x3f25('0x1'),'E_AGI_ARGUMENT_PORT':_0x3f25('0x2'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x3f25('0x3'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x3f25('0x4'),'E_AGI_SOCKET_ERROR':_0x3f25('0x5'),'E_AGI_SOCKET_CLOSE':_0x3f25('0x6'),'E_AGI_SOCKET_TIMEOUT':_0x3f25('0x7'),'E_AGI_COMMAND_EMPTY':_0x3f25('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x3f25('0x9'),'E_AGI_IVR_ENTRY':_0x3f25('0xa')};function AGIError(_0x207165){var _0x207165=_0x207165||null,_0x1715aa=_0x1715aa||[],_0x5ef2c7=0x1,_0x21e3db='';if(!error[_0x207165]){_0x207165=_0x3f25('0xb');}_0x1715aa[_0x3f25('0xc')](error[_0x207165]);while(arguments[_0x5ef2c7]){_0x1715aa['push'](arguments[_0x5ef2c7]);_0x5ef2c7++;}_0x21e3db=util['format']['apply'](util,_0x1715aa);this['message']=_0x21e3db;this[_0x3f25('0xd')]=_0x207165;}module[_0x3f25('0xe')]=AGIError;
\ No newline at end of file
index 2daf0b4..300b5df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0e7=['subscribe','agi','emit','error','E_AGI_SERVER_ERROR','message','parse','exports','lodash','ioredis','./error','../../config/environment','localhost'];(function(_0xb0391f,_0xe5b90b){var _0x55a67a=function(_0x5b97c9){while(--_0x5b97c9){_0xb0391f['push'](_0xb0391f['shift']());}};_0x55a67a(++_0xe5b90b);}(_0xd0e7,0x119));var _0x7d0e=function(_0x31eb67,_0x9bc8c0){_0x31eb67=_0x31eb67-0x0;var _0x2a8cb8=_0xd0e7[_0x31eb67];return _0x2a8cb8;};'use strict';var _=require(_0x7d0e('0x0'));var EventEmitter=require('events')['EventEmitter'];var Redis=require(_0x7d0e('0x1'));var AGIError=require(_0x7d0e('0x2'));var config=require(_0x7d0e('0x3'));config['redis']=_['defaults'](config['redis'],{'host':_0x7d0e('0x4'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub[_0x7d0e('0x5')](_0x7d0e('0x6'),function(_0x6da93e){if(_0x6da93e)return eventEmitter[_0x7d0e('0x7')](_0x7d0e('0x8'),new AGIError(_0x7d0e('0x9'),_0x6da93e));});sub['on'](_0x7d0e('0xa'),function(_0x3c3d0c,_0x5052fc){if(_0x3c3d0c!==_0x7d0e('0x6'))return;try{var _0x2c13be=JSON[_0x7d0e('0xb')](_0x5052fc);eventEmitter['emit']('projectUpdate',_0x2c13be);}catch(_0xebb7c){eventEmitter['emit'](_0x7d0e('0x8'),new AGIError(_0x7d0e('0x9'),_0xebb7c));}});module[_0x7d0e('0xc')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x6076=['agi','emit','error','E_AGI_SERVER_ERROR','projectUpdate','lodash','events','EventEmitter','ioredis','./error','../../config/environment','redis','defaults','localhost'];(function(_0x170f7e,_0x1f444a){var _0x54aca1=function(_0x3fce86){while(--_0x3fce86){_0x170f7e['push'](_0x170f7e['shift']());}};_0x54aca1(++_0x1f444a);}(_0x6076,0x163));var _0x6607=function(_0x521a8b,_0x3dfc1c){_0x521a8b=_0x521a8b-0x0;var _0x30d8f9=_0x6076[_0x521a8b];return _0x30d8f9;};'use strict';var _=require(_0x6607('0x0'));var EventEmitter=require(_0x6607('0x1'))[_0x6607('0x2')];var Redis=require(_0x6607('0x3'));var AGIError=require(_0x6607('0x4'));var config=require(_0x6607('0x5'));config[_0x6607('0x6')]=_[_0x6607('0x7')](config[_0x6607('0x6')],{'host':_0x6607('0x8'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x6607('0x6')]);sub['subscribe'](_0x6607('0x9'),function(_0x429cbb){if(_0x429cbb)return eventEmitter[_0x6607('0xa')](_0x6607('0xb'),new AGIError(_0x6607('0xc'),_0x429cbb));});sub['on']('message',function(_0x200589,_0x34c365){if(_0x200589!==_0x6607('0x9'))return;try{var _0x4e9f0b=JSON['parse'](_0x34c365);eventEmitter[_0x6607('0xa')](_0x6607('0xd'),_0x4e9f0b);}catch(_0x22d1ba){eventEmitter[_0x6607('0xa')](_0x6607('0xb'),new AGIError(_0x6607('0xc'),_0x22d1ba));}});module['exports']={'EventEmitter':eventEmitter};
\ No newline at end of file
index 7d18f17..402a7ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe82e=['traverseBFS','info','no\x20vertex\x20found','length','no\x20edge/s\x20available','condition','split','vswitch','default','target','agicommand','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','edges','prototype','addVertex','numberOfEdges','size','vertices','relations'];(function(_0x449095,_0x165c1f){var _0x3c1b13=function(_0x52f4fc){while(--_0x52f4fc){_0x449095['push'](_0x449095['shift']());}};_0x3c1b13(++_0x165c1f);}(_0xe82e,0x101));var _0xee82=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0xe82e[_0x2ec461];return _0x28603d;};'use strict';var _=require(_0xee82('0x0'));var logger=require(_0xee82('0x1'))(_0xee82('0x2'));var verticesWithRetry=[_0xee82('0x3'),_0xee82('0x4'),_0xee82('0x5')];var Graph=function(){this['vertices']={};this[_0xee82('0x6')]={};this['numberOfEdges']=0x0;};Graph[_0xee82('0x7')][_0xee82('0x8')]=function(_0x197281){this['vertices'][_0x197281['id']]=_0x197281;this['edges'][_0x197281['id']]=[];};Graph[_0xee82('0x7')]['addEdge']=function(_0x1f2cf8,_0x275a6d,_0x574cf8){this[_0xee82('0x6')][_0x1f2cf8]['push']({'target':_0x275a6d,'condition':_0x574cf8});this[_0xee82('0x9')]+=0x1;};Graph[_0xee82('0x7')][_0xee82('0xa')]=function(){return _[_0xee82('0xa')](this[_0xee82('0xb')]);};Graph[_0xee82('0x7')][_0xee82('0xc')]=function(){return this[_0xee82('0x9')];};Graph[_0xee82('0x7')]['getVertex']=function(_0x1906c2){return this[_0xee82('0xb')][_0x1906c2];};Graph['prototype'][_0xee82('0xd')]=function(_0x1caf78,_0x544e2b){if(!this[_0xee82('0xb')][_0x1caf78]){return logger[_0xee82('0xe')](_0xee82('0xf'));}var _0x1f5e92=_0x544e2b(this['vertices'][_0x1caf78]);if(!_0x1f5e92){return logger[_0xee82('0xe')]('stop\x20traverse');}if(this[_0xee82('0x6')][_0x1caf78][_0xee82('0x10')]===0x0){return logger[_0xee82('0xe')](_0xee82('0x11'));}for(var _0x2eca36=0x0,_0x58b6c5=[],_0x1378da=![];_0x2eca36<this[_0xee82('0x6')][_0x1caf78][_0xee82('0x10')];_0x2eca36+=0x1){if(this[_0xee82('0x6')][_0x1caf78][_0x2eca36][_0xee82('0x12')]){_0x58b6c5=this[_0xee82('0x6')][_0x1caf78][_0x2eca36]['condition'][_0xee82('0x13')](',');for(var _0x5bb05c=0x0;_0x5bb05c<_0x58b6c5[_0xee82('0x10')];_0x5bb05c+=0x1){if(this['vertices'][_0x1caf78]['agicommand']===_0xee82('0x14')&&_0x58b6c5[_0x5bb05c]==='-'){_0x1378da=this[_0xee82('0x6')][_0x1caf78][_0x2eca36]['target'];logger[_0xee82('0xe')](_0xee82('0x15'),_0x58b6c5[_0x5bb05c],this[_0xee82('0x6')][_0x1caf78][_0x2eca36][_0xee82('0x16')]);}else if(this[_0xee82('0xb')][_0x1caf78][_0xee82('0x17')]===_0xee82('0x3')&&_0x58b6c5[_0x5bb05c]==='i'){_0x1378da=this[_0xee82('0x6')][_0x1caf78][_0x2eca36][_0xee82('0x16')];logger[_0xee82('0xe')](_0xee82('0x18'),_0x58b6c5[_0x5bb05c],this['edges'][_0x1caf78][_0x2eca36][_0xee82('0x16')]);}if(_0x58b6c5[_0x5bb05c]===_0x1f5e92){return this[_0xee82('0xd')](this[_0xee82('0x6')][_0x1caf78][_0x2eca36][_0xee82('0x16')],_0x544e2b);}}}else{return this['traverseBFS'](this[_0xee82('0x6')][_0x1caf78][_0x2eca36][_0xee82('0x16')],_0x544e2b);}}if(_0x58b6c5[_0xee82('0x10')]){if(this['vertices'][_0x1caf78][_0xee82('0x17')]===_0xee82('0x14')){if(_0x1378da){return this[_0xee82('0xd')](_0x1378da,_0x544e2b);}return logger['info'](_0xee82('0x19'));}else if(_[_0xee82('0x1a')](verticesWithRetry,this['vertices'][_0x1caf78][_0xee82('0x17')])){if(_0x1f5e92==='-'){return logger[_0xee82('0xe')](_0xee82('0x1b'));}if(_0x1378da&&_0x1f5e92!=='t'){return this['traverseBFS'](_0x1378da,_0x544e2b);}return this[_0xee82('0xd')](_0x1caf78,_0x544e2b);}return logger[_0xee82('0xe')](_0xee82('0x1c'));}};module[_0xee82('0x1d')]=Graph;
\ No newline at end of file
+var _0xb4ca=['prototype','no\x20vertex\x20found','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','vswitch','target','default','agicommand','menu','invalid','traverseBFS','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found','exports','../../../config/logger','agi','getdigits','vertices','edges','numberOfEdges','addVertex','push','size'];(function(_0x2637ac,_0x377857){var _0x4a5758=function(_0x5d5043){while(--_0x5d5043){_0x2637ac['push'](_0x2637ac['shift']());}};_0x4a5758(++_0x377857);}(_0xb4ca,0x1b7));var _0xab4c=function(_0x2ae279,_0x1b1d57){_0x2ae279=_0x2ae279-0x0;var _0x48ad35=_0xb4ca[_0x2ae279];return _0x48ad35;};'use strict';var _=require('lodash');var logger=require(_0xab4c('0x0'))(_0xab4c('0x1'));var verticesWithRetry=['menu',_0xab4c('0x2'),'getsecretdigits'];var Graph=function(){this[_0xab4c('0x3')]={};this[_0xab4c('0x4')]={};this[_0xab4c('0x5')]=0x0;};Graph['prototype'][_0xab4c('0x6')]=function(_0x962b7b){this[_0xab4c('0x3')][_0x962b7b['id']]=_0x962b7b;this[_0xab4c('0x4')][_0x962b7b['id']]=[];};Graph['prototype']['addEdge']=function(_0x83a234,_0x57c26c,_0x11ff46){this[_0xab4c('0x4')][_0x83a234][_0xab4c('0x7')]({'target':_0x57c26c,'condition':_0x11ff46});this[_0xab4c('0x5')]+=0x1;};Graph['prototype']['size']=function(){return _[_0xab4c('0x8')](this[_0xab4c('0x3')]);};Graph['prototype']['relations']=function(){return this['numberOfEdges'];};Graph[_0xab4c('0x9')]['getVertex']=function(_0x5a382f){return this[_0xab4c('0x3')][_0x5a382f];};Graph[_0xab4c('0x9')]['traverseBFS']=function(_0x13607f,_0x29f475){if(!this[_0xab4c('0x3')][_0x13607f]){return logger['info'](_0xab4c('0xa'));}var _0x11e6d4=_0x29f475(this[_0xab4c('0x3')][_0x13607f]);if(!_0x11e6d4){return logger[_0xab4c('0xb')](_0xab4c('0xc'));}if(this[_0xab4c('0x4')][_0x13607f][_0xab4c('0xd')]===0x0){return logger[_0xab4c('0xb')](_0xab4c('0xe'));}for(var _0x4e8e19=0x0,_0x6d2437=[],_0x2f6238=![];_0x4e8e19<this['edges'][_0x13607f][_0xab4c('0xd')];_0x4e8e19+=0x1){if(this['edges'][_0x13607f][_0x4e8e19][_0xab4c('0xf')]){_0x6d2437=this['edges'][_0x13607f][_0x4e8e19][_0xab4c('0xf')][_0xab4c('0x10')](',');for(var _0x21b752=0x0;_0x21b752<_0x6d2437[_0xab4c('0xd')];_0x21b752+=0x1){if(this[_0xab4c('0x3')][_0x13607f]['agicommand']===_0xab4c('0x11')&&_0x6d2437[_0x21b752]==='-'){_0x2f6238=this[_0xab4c('0x4')][_0x13607f][_0x4e8e19][_0xab4c('0x12')];logger[_0xab4c('0xb')](_0xab4c('0x13'),_0x6d2437[_0x21b752],this['edges'][_0x13607f][_0x4e8e19][_0xab4c('0x12')]);}else if(this[_0xab4c('0x3')][_0x13607f][_0xab4c('0x14')]===_0xab4c('0x15')&&_0x6d2437[_0x21b752]==='i'){_0x2f6238=this[_0xab4c('0x4')][_0x13607f][_0x4e8e19]['target'];logger[_0xab4c('0xb')](_0xab4c('0x16'),_0x6d2437[_0x21b752],this[_0xab4c('0x4')][_0x13607f][_0x4e8e19][_0xab4c('0x12')]);}if(_0x6d2437[_0x21b752]===_0x11e6d4){return this[_0xab4c('0x17')](this[_0xab4c('0x4')][_0x13607f][_0x4e8e19]['target'],_0x29f475);}}}else{return this[_0xab4c('0x17')](this[_0xab4c('0x4')][_0x13607f][_0x4e8e19][_0xab4c('0x12')],_0x29f475);}}if(_0x6d2437['length']){if(this[_0xab4c('0x3')][_0x13607f][_0xab4c('0x14')]===_0xab4c('0x11')){if(_0x2f6238){return this[_0xab4c('0x17')](_0x2f6238,_0x29f475);}return logger[_0xab4c('0xb')](_0xab4c('0x18'));}else if(_[_0xab4c('0x19')](verticesWithRetry,this['vertices'][_0x13607f][_0xab4c('0x14')])){if(_0x11e6d4==='-'){return logger[_0xab4c('0xb')]('max\x20retry\x20reach');}if(_0x2f6238&&_0x11e6d4!=='t'){return this[_0xab4c('0x17')](_0x2f6238,_0x29f475);}return this[_0xab4c('0x17')](_0x13607f,_0x29f475);}return logger['info'](_0xab4c('0x1a'));}};module[_0xab4c('0x1b')]=Graph;
\ No newline at end of file
index eeccd20..8cddf0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fb4=['listening','connection','lodash','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./project','./events','EventEmitter','defaults','127.0.0.1','projectUpdate','nextTick','error','findIndex','deleted','splice','push','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','[%s]\x20%s','[ERROR]\x20%s','arg_1','calleridname','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','evtHangup','createSquareReport','then','hasOwnProperty','indexOf','agi_','substring','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','find','handleNotFound','production','handleUnpublished','initialize','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','catch','[LICENSE]','finally','./server'];(function(_0x9f7332,_0x3b87ee){var _0x255e0d=function(_0x4cdd2b){while(--_0x4cdd2b){_0x9f7332['push'](_0x9f7332['shift']());}};_0x255e0d(++_0x3b87ee);}(_0x0fb4,0x17c));var _0x40fb=function(_0x4e4519,_0x392ae){_0x4e4519=_0x4e4519-0x0;var _0x340044=_0x0fb4[_0x4e4519];return _0x340044;};'use strict';var _=require(_0x40fb('0x0'));var syncho=require(_0x40fb('0x1'));var util=require(_0x40fb('0x2'));var config=require(_0x40fb('0x3'));var logger=require(_0x40fb('0x4'))(_0x40fb('0x5'));var utilLicense=require(_0x40fb('0x6'));var rpc=require(_0x40fb('0x7'));var Project=require(_0x40fb('0x8'));var AGIEmitter=require(_0x40fb('0x9'))[_0x40fb('0xa')];var projects=[];config[_0x40fb('0x5')]=_[_0x40fb('0xb')](config[_0x40fb('0x5')],{'ip':_0x40fb('0xc'),'port':0x11dd});AGIEmitter['on'](_0x40fb('0xd'),projectUpdateHandler);function connectionHandler(_0x4fccc4){process[_0x40fb('0xe')](function(){syncho(function(){try{setChannelVariables(_0x4fccc4);agiHandler(_0x4fccc4);}catch(_0x326ff8){logger[_0x40fb('0xf')](_0x326ff8['stack']);}});});}function projectUpdateHandler(_0x461f66){try{var _0x5d0755=_[_0x40fb('0x10')](projects,['id',_0x461f66['id']]);if(_0x5d0755>-0x1){if(_0x461f66[_0x40fb('0x11')]===!![]){projects[_0x40fb('0x12')](_0x5d0755,0x1);}else{projects[_0x5d0755]=_0x461f66;}}else{projects[_0x40fb('0x13')](_0x461f66);}}catch(_0x189ac7){logger[_0x40fb('0xf')](_0x189ac7[_0x40fb('0x14')]);}}function listeningHandler(){console['log'](_0x40fb('0x15'),config[_0x40fb('0x5')]['port']);logger[_0x40fb('0x16')](util[_0x40fb('0x17')](_0x40fb('0x18'),config[_0x40fb('0x5')]['ip'],config[_0x40fb('0x5')][_0x40fb('0x19')]));}function errorHandler(_0x5c0c2a){if(_0x5c0c2a&&_0x5c0c2a[_0x40fb('0x1a')]&&_0x5c0c2a[_0x40fb('0x1b')]){logger[_0x40fb('0xf')](util[_0x40fb('0x17')](_0x40fb('0x1c'),_0x5c0c2a[_0x40fb('0x1a')],_0x5c0c2a[_0x40fb('0x1b')]));}else{logger[_0x40fb('0xf')](util['format'](_0x40fb('0x1d'),_0x5c0c2a[_0x40fb('0x14')]));}}function closeHandler(){logger[_0x40fb('0x16')](util[_0x40fb('0x17')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x40fb('0x1e')],this[_0x40fb('0x1f')],this[_0x40fb('0x20')],this['dnid'],this[_0x40fb('0x21')]));try{createSquareReport(this);}catch(_0xcd26c0){logger['error'](_0xcd26c0[_0x40fb('0x14')]);}}function timeoutHandler(){logger[_0x40fb('0x16')](util[_0x40fb('0x17')](_0x40fb('0x22'),this['arg_1'],this[_0x40fb('0x1f')],this[_0x40fb('0x20')],this['dnid'],this[_0x40fb('0x21')]));}function hangupHandler(){logger[_0x40fb('0x16')](util['format'](_0x40fb('0x23'),this[_0x40fb('0x1e')],this[_0x40fb('0x1f')],this['callerid'],this[_0x40fb('0x24')],this[_0x40fb('0x21')]));this[_0x40fb('0x25')]=!![];}function createSquareReport(_0x58eab1,_0x3ee076){rpc[_0x40fb('0x26')](_0x58eab1)[_0x40fb('0x27')](function(_0x6685c){if(_0x3ee076){_0x3ee076(null,_0x6685c);}})['catch'](function(_0x3a4645){if(_0x3ee076){_0x3ee076(null,_0x3a4645);}});}function setChannelVariables(_0x53af88){for(var _0x4dd45b in _0x53af88){if(_0x53af88[_0x40fb('0x28')](_0x4dd45b)){if(_0x4dd45b[_0x40fb('0x29')](_0x40fb('0x2a'))===0x0){_0x53af88[_0x4dd45b[_0x40fb('0x2b')](0x4)]=_0x53af88[_0x4dd45b];delete _0x53af88[_0x4dd45b];}}}}function agiHandler(_0x5c3b51){logger[_0x40fb('0x2c')]('variables',JSON[_0x40fb('0x2d')](_0x5c3b51,null,0x2));logger[_0x40fb('0x16')](util[_0x40fb('0x17')](_0x40fb('0x2e'),_0x5c3b51[_0x40fb('0x1e')],_0x5c3b51['calleridname'],_0x5c3b51[_0x40fb('0x20')],_0x5c3b51[_0x40fb('0x24')],_0x5c3b51[_0x40fb('0x21')]));_0x5c3b51['on']('error',errorHandler);_0x5c3b51['on'](_0x40fb('0x2f'),closeHandler);_0x5c3b51['on'](_0x40fb('0x30'),timeoutHandler);_0x5c3b51['evtHangup']=![];_0x5c3b51['on']('hangup',hangupHandler);var _0x5877d8=_[_0x40fb('0x31')](projects,[_0x40fb('0x1a'),_0x5c3b51[_0x40fb('0x1e')]]);if(!_0x5877d8)return Project[_0x40fb('0x32')](_0x5c3b51);if(!_0x5877d8[_0x40fb('0x33')])return Project[_0x40fb('0x34')](_0x5c3b51);return Project[_0x40fb('0x35')](_0x5877d8,_0x5c3b51);}function main(){var _0x257804;return utilLicense['getLicense']()[_0x40fb('0x27')](function(_0x4d09e6){if(!_0x4d09e6)return;if(_0x4d09e6[_0x40fb('0x36')]){if(_0x4d09e6[_0x40fb('0x37')]&&_0x4d09e6[_0x40fb('0x37')]>0x0){logger[_0x40fb('0x16')](util[_0x40fb('0x17')](_0x40fb('0x38'),_0x4d09e6[_0x40fb('0x37')]));_0x257804=_0x4d09e6[_0x40fb('0x37')];}else{logger[_0x40fb('0x16')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x40fb('0x16')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x257804=-0x1;}})[_0x40fb('0x27')](function(){return Project['getAll']();})['then'](function(_0x455306){projects=_0x455306;return;})[_0x40fb('0x39')](function(_0x562225){logger[_0x40fb('0xf')](_0x40fb('0x3a'),_0x562225[_0x40fb('0x14')]);})[_0x40fb('0x3b')](function(){var _0x595b97=require(_0x40fb('0x3c'))(config[_0x40fb('0x5')][_0x40fb('0x19')],config['agi']['ip'],_0x257804);_0x595b97['on']('error',errorHandler);_0x595b97['on'](_0x40fb('0x3d'),listeningHandler);_0x595b97['on'](_0x40fb('0x3e'),connectionHandler);_0x595b97['on'](_0x40fb('0x2f'),closeHandler);});}main();
\ No newline at end of file
+var _0xb0d5=['port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','message','error','[%s]\x20%s','name','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','then','hasOwnProperty','indexOf','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','handleNotFound','production','handleUnpublished','initialize','getLicense','callysquare','[LICENSE]\x20VOICE\x20IS\x20DISABLED','catch','[LICENSE]','finally','./server','connection','syncho','util','../../config/environment','../../config/license/util','./rpc','EventEmitter','agi','defaults','127.0.0.1','projectUpdate','nextTick','deleted','push','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!'];(function(_0x438e00,_0x2ad474){var _0xd1098=function(_0x5e5708){while(--_0x5e5708){_0x438e00['push'](_0x438e00['shift']());}};_0xd1098(++_0x2ad474);}(_0xb0d5,0x1f2));var _0x5b0d=function(_0x454d94,_0x2d5642){_0x454d94=_0x454d94-0x0;var _0x1389b0=_0xb0d5[_0x454d94];return _0x1389b0;};'use strict';var _=require('lodash');var syncho=require(_0x5b0d('0x0'));var util=require(_0x5b0d('0x1'));var config=require(_0x5b0d('0x2'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0x5b0d('0x3'));var rpc=require(_0x5b0d('0x4'));var Project=require('./project');var AGIEmitter=require('./events')[_0x5b0d('0x5')];var projects=[];config[_0x5b0d('0x6')]=_[_0x5b0d('0x7')](config['agi'],{'ip':_0x5b0d('0x8'),'port':0x11dd});AGIEmitter['on'](_0x5b0d('0x9'),projectUpdateHandler);function connectionHandler(_0x1ff40c){process[_0x5b0d('0xa')](function(){syncho(function(){try{setChannelVariables(_0x1ff40c);agiHandler(_0x1ff40c);}catch(_0x501015){logger['error'](_0x501015['stack']);}});});}function projectUpdateHandler(_0x5103f9){try{var _0x344e74=_['findIndex'](projects,['id',_0x5103f9['id']]);if(_0x344e74>-0x1){if(_0x5103f9[_0x5b0d('0xb')]===!![]){projects['splice'](_0x344e74,0x1);}else{projects[_0x344e74]=_0x5103f9;}}else{projects[_0x5b0d('0xc')](_0x5103f9);}}catch(_0xa18357){logger['error'](_0xa18357['stack']);}}function listeningHandler(){console[_0x5b0d('0xd')](_0x5b0d('0xe'),config['agi'][_0x5b0d('0xf')]);logger[_0x5b0d('0x10')](util[_0x5b0d('0x11')](_0x5b0d('0x12'),config[_0x5b0d('0x6')]['ip'],config[_0x5b0d('0x6')][_0x5b0d('0xf')]));}function errorHandler(_0x1f674d){if(_0x1f674d&&_0x1f674d['name']&&_0x1f674d[_0x5b0d('0x13')]){logger[_0x5b0d('0x14')](util[_0x5b0d('0x11')](_0x5b0d('0x15'),_0x1f674d[_0x5b0d('0x16')],_0x1f674d[_0x5b0d('0x13')]));}else{logger[_0x5b0d('0x14')](util[_0x5b0d('0x11')](_0x5b0d('0x17'),_0x1f674d[_0x5b0d('0x18')]));}}function closeHandler(){logger[_0x5b0d('0x10')](util['format'](_0x5b0d('0x19'),this[_0x5b0d('0x1a')],this[_0x5b0d('0x1b')],this[_0x5b0d('0x1c')],this[_0x5b0d('0x1d')],this[_0x5b0d('0x1e')]));try{createSquareReport(this);}catch(_0x4432f5){logger[_0x5b0d('0x14')](_0x4432f5[_0x5b0d('0x18')]);}}function timeoutHandler(){logger['info'](util['format'](_0x5b0d('0x1f'),this[_0x5b0d('0x1a')],this[_0x5b0d('0x1b')],this[_0x5b0d('0x1c')],this[_0x5b0d('0x1d')],this[_0x5b0d('0x1e')]));}function hangupHandler(){logger[_0x5b0d('0x10')](util['format'](_0x5b0d('0x20'),this[_0x5b0d('0x1a')],this[_0x5b0d('0x1b')],this[_0x5b0d('0x1c')],this[_0x5b0d('0x1d')],this[_0x5b0d('0x1e')]));this[_0x5b0d('0x21')]=!![];}function createSquareReport(_0x3e19ad,_0x1392f4){rpc[_0x5b0d('0x22')](_0x3e19ad)[_0x5b0d('0x23')](function(_0x49d5cc){if(_0x1392f4){_0x1392f4(null,_0x49d5cc);}})['catch'](function(_0xe374c0){if(_0x1392f4){_0x1392f4(null,_0xe374c0);}});}function setChannelVariables(_0x22efff){for(var _0x42a222 in _0x22efff){if(_0x22efff[_0x5b0d('0x24')](_0x42a222)){if(_0x42a222[_0x5b0d('0x25')]('agi_')===0x0){_0x22efff[_0x42a222[_0x5b0d('0x26')](0x4)]=_0x22efff[_0x42a222];delete _0x22efff[_0x42a222];}}}}function agiHandler(_0x2951e6){logger[_0x5b0d('0x27')](_0x5b0d('0x28'),JSON['stringify'](_0x2951e6,null,0x2));logger['info'](util['format'](_0x5b0d('0x29'),_0x2951e6[_0x5b0d('0x1a')],_0x2951e6[_0x5b0d('0x1b')],_0x2951e6['callerid'],_0x2951e6['dnid'],_0x2951e6[_0x5b0d('0x1e')]));_0x2951e6['on'](_0x5b0d('0x14'),errorHandler);_0x2951e6['on'](_0x5b0d('0x2a'),closeHandler);_0x2951e6['on'](_0x5b0d('0x2b'),timeoutHandler);_0x2951e6[_0x5b0d('0x21')]=![];_0x2951e6['on'](_0x5b0d('0x2c'),hangupHandler);var _0x839941=_['find'](projects,[_0x5b0d('0x16'),_0x2951e6[_0x5b0d('0x1a')]]);if(!_0x839941)return Project[_0x5b0d('0x2d')](_0x2951e6);if(!_0x839941[_0x5b0d('0x2e')])return Project[_0x5b0d('0x2f')](_0x2951e6);return Project[_0x5b0d('0x30')](_0x839941,_0x2951e6);}function main(){var _0xfda6c5;return utilLicense[_0x5b0d('0x31')]()[_0x5b0d('0x23')](function(_0x2cc5ac){if(!_0x2cc5ac)return;if(_0x2cc5ac['voice']){if(_0x2cc5ac['callysquare']&&_0x2cc5ac[_0x5b0d('0x32')]>0x0){logger['info'](util['format']('[LICENSE]\x20CHANNELS:\x20%s',_0x2cc5ac['callysquare']));_0xfda6c5=_0x2cc5ac[_0x5b0d('0x32')];}else{logger[_0x5b0d('0x10')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger['info'](_0x5b0d('0x33'));_0xfda6c5=-0x1;}})[_0x5b0d('0x23')](function(){return Project['getAll']();})[_0x5b0d('0x23')](function(_0x12bb3f){projects=_0x12bb3f;return;})[_0x5b0d('0x34')](function(_0xc4e898){logger[_0x5b0d('0x14')](_0x5b0d('0x35'),_0xc4e898[_0x5b0d('0x18')]);})[_0x5b0d('0x36')](function(){var _0x544fcc=require(_0x5b0d('0x37'))(config[_0x5b0d('0x6')]['port'],config[_0x5b0d('0x6')]['ip'],_0xfda6c5);_0x544fcc['on'](_0x5b0d('0x14'),errorHandler);_0x544fcc['on']('listening',listeningHandler);_0x544fcc['on'](_0x5b0d('0x38'),connectionHandler);_0x544fcc['on']('close',closeHandler);});}main();
\ No newline at end of file
index 9544316..2800de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe788=['http','request','then','error','message','catch','sendMailMessage','bluebird','client'];(function(_0x59b8d3,_0x1ecb66){var _0x298fa0=function(_0x3fb54a){while(--_0x3fb54a){_0x59b8d3['push'](_0x59b8d3['shift']());}};_0x298fa0(++_0x1ecb66);}(_0xe788,0x1c9));var _0x8e78=function(_0x461e5b,_0x552152){_0x461e5b=_0x461e5b-0x0;var _0x1bfb77=_0xe788[_0x461e5b];return _0x1bfb77;};'use strict';var BPromise=require(_0x8e78('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x8e78('0x1')][_0x8e78('0x2')]({'port':0x232b});function request(_0x47e038,_0x2a7eb8){return new BPromise(function(_0xde3b97,_0x4745ea){return client[_0x8e78('0x3')](_0x47e038,_0x2a7eb8)[_0x8e78('0x4')](function(_0x1ad6fd){if(_0x1ad6fd[_0x8e78('0x5')]){return _0x4745ea(_0x1ad6fd[_0x8e78('0x5')][_0x8e78('0x6')]);}else{return _0xde3b97(_0x1ad6fd['result']);}})[_0x8e78('0x7')](function(_0x1685ee){return _0x4745ea(_0x1685ee);});});}exports[_0x8e78('0x8')]=function(_0x39dc10,_0x57d0de){return request('SendMail',{'account':_0x39dc10,'message':_0x57d0de});};
\ No newline at end of file
+var _0x7a97=['then','error','message','result','catch','bluebird','client','request'];(function(_0x28ebf4,_0x482afb){var _0x46b771=function(_0x97314a){while(--_0x97314a){_0x28ebf4['push'](_0x28ebf4['shift']());}};_0x46b771(++_0x482afb);}(_0x7a97,0x195));var _0x77a9=function(_0x5615d6,_0x1ce57b){_0x5615d6=_0x5615d6-0x0;var _0x560ddf=_0x7a97[_0x5615d6];return _0x560ddf;};'use strict';var BPromise=require(_0x77a9('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x77a9('0x1')]['http']({'port':0x232b});function request(_0x328140,_0x52b3c7){return new BPromise(function(_0x3761bb,_0x57449d){return client[_0x77a9('0x2')](_0x328140,_0x52b3c7)[_0x77a9('0x3')](function(_0x486544){if(_0x486544[_0x77a9('0x4')]){return _0x57449d(_0x486544[_0x77a9('0x4')][_0x77a9('0x5')]);}else{return _0x3761bb(_0x486544[_0x77a9('0x6')]);}})[_0x77a9('0x7')](function(_0x298a5b){return _0x57449d(_0x298a5b);});});}exports['sendMailMessage']=function(_0x1b4e21,_0x463227){return request('SendMail',{'account':_0x1b4e21,'message':_0x463227});};
\ No newline at end of file
index d59d2a8..22a244a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x695c=['maxRetry','addVertex','isArray','length','target','value','toJson','root','inspect','start','debug','joinAt','omit','info','format','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','traverseBFS','clear','stringify','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','isUndefined','error','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','uniqueid','finally','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','exports','lodash','moment','util','../../config/logger','agi','./rpc','./mailRpc','./graph','./vertices','catch','Unable\x20to\x20download\x20CallySquare\x20projects','agicommand','hasOwnProperty','retry'];(function(_0x4ce15c,_0x1bbcbd){var _0x5ee259=function(_0xfb0acd){while(--_0xfb0acd){_0x4ce15c['push'](_0x4ce15c['shift']());}};_0x5ee259(++_0x1bbcbd);}(_0x695c,0x154));var _0xc695=function(_0x21ed71,_0x3fca8e){_0x21ed71=_0x21ed71-0x0;var _0x515130=_0x695c[_0x21ed71];return _0x515130;};'use strict';var _=require(_0xc695('0x0'));var moment=require(_0xc695('0x1'));var parser=require('xml2json');var util=require(_0xc695('0x2'));var logger=require(_0xc695('0x3'))(_0xc695('0x4'));var rpc=require(_0xc695('0x5'));var mailRpc=require(_0xc695('0x6'));var Graph=require(_0xc695('0x7'));var Vertices=require(_0xc695('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()[_0xc695('0x9')](function(_0x3e06a4){logger['error'](_0xc695('0xa'),_0x3e06a4['stack']);return[];});}function addVertex(_0x52fb9a,_0x2958c7,_0x363ac3){_0x2958c7[_0xc695('0xb')]=_0x363ac3;if(_0x2958c7[_0xc695('0xc')](_0xc695('0xd'))){_0x2958c7[_0xc695('0xe')]=parseInt(_0x2958c7[_0xc695('0xd')],0xa);}_0x52fb9a[_0xc695('0xf')](_['omit'](_0x2958c7,'mxCell'));}function initGraph(_0x26cedc,_0xe8d84b){var _0x3f3aef=new Graph();for(var _0x374c2b in _0x26cedc){if(_0x26cedc[_0xc695('0xc')](_0x374c2b)){if(_[_0xc695('0x10')](_0x26cedc[_0x374c2b])){for(var _0x1938f3=0x0;_0x1938f3<_0x26cedc[_0x374c2b][_0xc695('0x11')];_0x1938f3+=0x1){addVertex(_0x3f3aef,_0x26cedc[_0x374c2b][_0x1938f3],_0x374c2b);}}else{addVertex(_0x3f3aef,_0x26cedc[_0x374c2b],_0x374c2b);}}}for(var _0xe1fd8a=0x0;_0xe1fd8a<_0xe8d84b[_0xc695('0x11')];_0xe1fd8a+=0x1){if(_0xe8d84b[_0xe1fd8a]['source']&&_0xe8d84b[_0xe1fd8a][_0xc695('0x12')]){_0x3f3aef['addEdge'](_0xe8d84b[_0xe1fd8a]['source'],_0xe8d84b[_0xe1fd8a][_0xc695('0x12')],_0xe8d84b[_0xe1fd8a][_0xc695('0x13')]);}}return _0x3f3aef;}function getRoot(_0x12e7cf){return parser[_0xc695('0x14')](_0x12e7cf,{'object':!![]})['mxGraphModel'][_0xc695('0x15')];}function inspect(_0x4f592c){return util[_0xc695('0x16')](_0x4f592c,{'showHidden':![],'depth':null});}function initialize(_0x2357d1,_0x229d72){var _0x341d32=getRoot(_0x2357d1['production']);if(!_0x341d32||!_0x341d32[_0xc695('0x17')])return;var _0x1ae6c8,_0x4daea7,_0x434621;logger[_0xc695('0x18')](_0xc695('0x15'),JSON['stringify'](_0x341d32,null,0x2));_0x229d72[_0xc695('0x19')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1ae6c8=initGraph(_[_0xc695('0x1a')](_0x341d32,'mxCell'),_0x341d32['mxCell']);_0x4daea7=new Vertices(_0x229d72,rpc,mailRpc);logger[_0xc695('0x1b')](util[_0xc695('0x1c')](_0xc695('0x1d'),_0x229d72[_0xc695('0x1e')],_0x229d72['calleridname'],_0x229d72[_0xc695('0x1f')],_0x229d72[_0xc695('0x20')],_0x229d72['uniqueid']));_0x1ae6c8[_0xc695('0x21')](_0x341d32[_0xc695('0x17')]['id'],function(_0xf21c37){try{_0xf21c37=_0x4daea7[_0xc695('0x22')](_0xf21c37);logger[_0xc695('0x18')]('vertex',JSON[_0xc695('0x23')](_0xf21c37,null,0x2));if(_0xf21c37['agicommand']===_0xc695('0x24')){logger[_0xc695('0x1b')](_0xc695('0x25'));_0x229d72[_0xc695('0x26')]=_0xf21c37[_0xc695('0x26')]||_0x229d72[_0xc695('0x26')];_0x229d72[_0xc695('0x27')]=_0xf21c37[_0xc695('0x27')];_0x229d72[_0xc695('0x28')]=_0xf21c37['priority']?_0xf21c37[_0xc695('0x28')]-0x1:0x1;return null;}else if(_0xf21c37&&_0x4daea7[_0xf21c37[_0xc695('0xb')]]){_0x434621=_0x4daea7[_0xf21c37[_0xc695('0xb')]](_0xf21c37);logger[_0xc695('0x1b')](_0xc695('0x29'),JSON['stringify'](_0x434621,null,0x2));if(_0x434621&&_0x434621[_0xc695('0x2a')]===AGI_CODE_SUCCESS&&_0x434621[_0xc695('0x2b')]!==AGI_RESULT_ERROR&&!_0x229d72[_0xc695('0x2c')]){logger['debug']('response',inspect(_0x434621));return _[_0xc695('0x2d')](_0x434621[_0xc695('0x2b')])?null:_0x434621['result']['toString']();}else{logger[_0xc695('0x2e')](_0xc695('0x29'),inspect(_0x434621));return null;}}else{logger['error'](_0xc695('0x2f'));return null;}}catch(_0xa0ab81){logger[_0xc695('0x2e')](_0xa0ab81['stack']);return null;}});if(_0x341d32['finally']){logger[_0xc695('0x1b')](util[_0xc695('0x1c')](_0xc695('0x30'),_0x229d72[_0xc695('0x1e')],_0x229d72[_0xc695('0x31')],_0x229d72[_0xc695('0x1f')],_0x229d72[_0xc695('0x20')],_0x229d72[_0xc695('0x32')]));_0x1ae6c8[_0xc695('0x21')](_0x341d32[_0xc695('0x33')]['id'],function(_0x14786d){try{_0x14786d=_0x4daea7[_0xc695('0x22')](_0x14786d);logger[_0xc695('0x18')]('vertex',JSON['stringify'](_0x14786d,null,0x2));if(_0x14786d&&_0x4daea7[_0x14786d[_0xc695('0xb')]]){_0x434621=_0x4daea7[_0x14786d['agicommand']](_0x14786d);if(_0x434621){logger[_0xc695('0x18')](_0xc695('0x29'),inspect(_0x434621));return _[_0xc695('0x2d')](_0x434621['result'])?null:_0x434621[_0xc695('0x2b')]['toString']();}else{logger[_0xc695('0x2e')](_0xc695('0x29'),inspect(_0x434621));return null;}}else{logger[_0xc695('0x2e')](_0xc695('0x2f'));return null;}}catch(_0x4dbf31){logger['error'](_0x4dbf31['stack']);return null;}});}logger['info'](util[_0xc695('0x1c')](_0xc695('0x34'),_0x229d72[_0xc695('0x1e')],_0x229d72['calleridname'],_0x229d72[_0xc695('0x1f')],_0x229d72[_0xc695('0x20')],_0x229d72[_0xc695('0x32')]));logger[_0xc695('0x1b')](util[_0xc695('0x1c')](_0xc695('0x35'),_0x229d72[_0xc695('0x26')],_0x229d72[_0xc695('0x27')],parseInt(_0x229d72['priority'],0xa)+0x1));_0x229d72[_0xc695('0x36')](_0x229d72[_0xc695('0x26')],_0x229d72[_0xc695('0x27')],parseInt(_0x229d72[_0xc695('0x28')],0xa)+0x1);_0x229d72[_0xc695('0x37')]();}function handleNotFound(_0x256028){logger[_0xc695('0x2e')](util[_0xc695('0x1c')](_0xc695('0x38'),_0x256028[_0xc695('0x1e')]));_0x256028[_0xc695('0x36')](_0x256028[_0xc695('0x26')],_0x256028['extension'],parseInt(_0x256028['priority'],0xa)+0x1);_0x256028[_0xc695('0x37')]();}function handleUnpublished(_0x231c82){logger['error'](util[_0xc695('0x1c')](_0xc695('0x39'),_0x231c82[_0xc695('0x1e')]));_0x231c82[_0xc695('0x36')](_0x231c82[_0xc695('0x26')],_0x231c82[_0xc695('0x27')],parseInt(_0x231c82[_0xc695('0x28')],0xa)+0x1);_0x231c82['close']();}module[_0xc695('0x3a')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x5157=['[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','traverseBFS','clear','gotoc','context','extension','priority','stringify','code','result','evtHangup','isUndefined','response','error','uniqueid','finally','vertex','toString','agicommand\x20not\x20found','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','exports','lodash','moment','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./graph','./vertices','getSquareProjects','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','hasOwnProperty','maxRetry','retry','omit','mxCell','isArray','length','source','target','addEdge','toJson','mxGraphModel','root','inspect','production','start','debug','joinAt','YYYY-MM-DD\x20HH:mm:ss','info','format'];(function(_0x135904,_0x1e252b){var _0x1ce7d5=function(_0x25a721){while(--_0x25a721){_0x135904['push'](_0x135904['shift']());}};_0x1ce7d5(++_0x1e252b);}(_0x5157,0x113));var _0x7515=function(_0x5a4926,_0x2d05ec){_0x5a4926=_0x5a4926-0x0;var _0x55a29c=_0x5157[_0x5a4926];return _0x55a29c;};'use strict';var _=require(_0x7515('0x0'));var moment=require(_0x7515('0x1'));var parser=require(_0x7515('0x2'));var util=require(_0x7515('0x3'));var logger=require(_0x7515('0x4'))(_0x7515('0x5'));var rpc=require(_0x7515('0x6'));var mailRpc=require(_0x7515('0x7'));var Graph=require(_0x7515('0x8'));var Vertices=require(_0x7515('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x7515('0xa')]()['catch'](function(_0x1305fc){logger['error'](_0x7515('0xb'),_0x1305fc[_0x7515('0xc')]);return[];});}function addVertex(_0x274ee7,_0x15f1dc,_0x2f58f0){_0x15f1dc[_0x7515('0xd')]=_0x2f58f0;if(_0x15f1dc[_0x7515('0xe')]('retry')){_0x15f1dc[_0x7515('0xf')]=parseInt(_0x15f1dc[_0x7515('0x10')],0xa);}_0x274ee7['addVertex'](_[_0x7515('0x11')](_0x15f1dc,_0x7515('0x12')));}function initGraph(_0x2ac8db,_0x5b5474){var _0x1c1913=new Graph();for(var _0xff6bdf in _0x2ac8db){if(_0x2ac8db[_0x7515('0xe')](_0xff6bdf)){if(_[_0x7515('0x13')](_0x2ac8db[_0xff6bdf])){for(var _0x1cf631=0x0;_0x1cf631<_0x2ac8db[_0xff6bdf]['length'];_0x1cf631+=0x1){addVertex(_0x1c1913,_0x2ac8db[_0xff6bdf][_0x1cf631],_0xff6bdf);}}else{addVertex(_0x1c1913,_0x2ac8db[_0xff6bdf],_0xff6bdf);}}}for(var _0x31368e=0x0;_0x31368e<_0x5b5474[_0x7515('0x14')];_0x31368e+=0x1){if(_0x5b5474[_0x31368e][_0x7515('0x15')]&&_0x5b5474[_0x31368e][_0x7515('0x16')]){_0x1c1913[_0x7515('0x17')](_0x5b5474[_0x31368e][_0x7515('0x15')],_0x5b5474[_0x31368e][_0x7515('0x16')],_0x5b5474[_0x31368e]['value']);}}return _0x1c1913;}function getRoot(_0x3457b6){return parser[_0x7515('0x18')](_0x3457b6,{'object':!![]})[_0x7515('0x19')][_0x7515('0x1a')];}function inspect(_0x18709e){return util[_0x7515('0x1b')](_0x18709e,{'showHidden':![],'depth':null});}function initialize(_0x560c60,_0x1dfadb){var _0x40e0f1=getRoot(_0x560c60[_0x7515('0x1c')]);if(!_0x40e0f1||!_0x40e0f1[_0x7515('0x1d')])return;var _0x22e599,_0x38360a,_0x5259e0;logger[_0x7515('0x1e')]('root',JSON['stringify'](_0x40e0f1,null,0x2));_0x1dfadb[_0x7515('0x1f')]=moment()['format'](_0x7515('0x20'));_0x22e599=initGraph(_[_0x7515('0x11')](_0x40e0f1,_0x7515('0x12')),_0x40e0f1['mxCell']);_0x38360a=new Vertices(_0x1dfadb,rpc,mailRpc);logger[_0x7515('0x21')](util[_0x7515('0x22')](_0x7515('0x23'),_0x1dfadb[_0x7515('0x24')],_0x1dfadb[_0x7515('0x25')],_0x1dfadb['callerid'],_0x1dfadb[_0x7515('0x26')],_0x1dfadb['uniqueid']));_0x22e599[_0x7515('0x27')](_0x40e0f1['start']['id'],function(_0x56ec64){try{_0x56ec64=_0x38360a[_0x7515('0x28')](_0x56ec64);logger[_0x7515('0x1e')]('vertex',JSON['stringify'](_0x56ec64,null,0x2));if(_0x56ec64[_0x7515('0xd')]===_0x7515('0x29')){logger[_0x7515('0x21')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x1dfadb['context']=_0x56ec64[_0x7515('0x2a')]||_0x1dfadb['context'];_0x1dfadb[_0x7515('0x2b')]=_0x56ec64['extension'];_0x1dfadb['priority']=_0x56ec64[_0x7515('0x2c')]?_0x56ec64[_0x7515('0x2c')]-0x1:0x1;return null;}else if(_0x56ec64&&_0x38360a[_0x56ec64[_0x7515('0xd')]]){_0x5259e0=_0x38360a[_0x56ec64[_0x7515('0xd')]](_0x56ec64);logger[_0x7515('0x21')]('response',JSON[_0x7515('0x2d')](_0x5259e0,null,0x2));if(_0x5259e0&&_0x5259e0[_0x7515('0x2e')]===AGI_CODE_SUCCESS&&_0x5259e0[_0x7515('0x2f')]!==AGI_RESULT_ERROR&&!_0x1dfadb[_0x7515('0x30')]){logger[_0x7515('0x1e')]('response',inspect(_0x5259e0));return _[_0x7515('0x31')](_0x5259e0['result'])?null:_0x5259e0[_0x7515('0x2f')]['toString']();}else{logger['error'](_0x7515('0x32'),inspect(_0x5259e0));return null;}}else{logger[_0x7515('0x33')]('agicommand\x20not\x20found');return null;}}catch(_0x1a29fa){logger['error'](_0x1a29fa[_0x7515('0xc')]);return null;}});if(_0x40e0f1['finally']){logger[_0x7515('0x21')](util[_0x7515('0x22')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x1dfadb['arg_1'],_0x1dfadb[_0x7515('0x25')],_0x1dfadb['callerid'],_0x1dfadb[_0x7515('0x26')],_0x1dfadb[_0x7515('0x34')]));_0x22e599['traverseBFS'](_0x40e0f1[_0x7515('0x35')]['id'],function(_0x54e4fb){try{_0x54e4fb=_0x38360a[_0x7515('0x28')](_0x54e4fb);logger['debug'](_0x7515('0x36'),JSON['stringify'](_0x54e4fb,null,0x2));if(_0x54e4fb&&_0x38360a[_0x54e4fb[_0x7515('0xd')]]){_0x5259e0=_0x38360a[_0x54e4fb[_0x7515('0xd')]](_0x54e4fb);if(_0x5259e0){logger[_0x7515('0x1e')]('response',inspect(_0x5259e0));return _['isUndefined'](_0x5259e0[_0x7515('0x2f')])?null:_0x5259e0[_0x7515('0x2f')][_0x7515('0x37')]();}else{logger[_0x7515('0x33')](_0x7515('0x32'),inspect(_0x5259e0));return null;}}else{logger[_0x7515('0x33')](_0x7515('0x38'));return null;}}catch(_0x3df5c7){logger[_0x7515('0x33')](_0x3df5c7[_0x7515('0xc')]);return null;}});}logger['info'](util[_0x7515('0x22')](_0x7515('0x39'),_0x1dfadb[_0x7515('0x24')],_0x1dfadb[_0x7515('0x25')],_0x1dfadb['callerid'],_0x1dfadb['dnid'],_0x1dfadb[_0x7515('0x34')]));logger['info'](util[_0x7515('0x22')](_0x7515('0x3a'),_0x1dfadb[_0x7515('0x2a')],_0x1dfadb['extension'],parseInt(_0x1dfadb[_0x7515('0x2c')],0xa)+0x1));_0x1dfadb[_0x7515('0x3b')](_0x1dfadb[_0x7515('0x2a')],_0x1dfadb['extension'],parseInt(_0x1dfadb[_0x7515('0x2c')],0xa)+0x1);_0x1dfadb[_0x7515('0x3c')]();}function handleNotFound(_0x144161){logger[_0x7515('0x33')](util[_0x7515('0x22')]('Project\x20%s\x20not\x20found',_0x144161[_0x7515('0x24')]));_0x144161[_0x7515('0x3b')](_0x144161[_0x7515('0x2a')],_0x144161[_0x7515('0x2b')],parseInt(_0x144161[_0x7515('0x2c')],0xa)+0x1);_0x144161[_0x7515('0x3c')]();}function handleUnpublished(_0x302d07){logger[_0x7515('0x33')](util[_0x7515('0x22')]('Project\x20%s\x20not\x20published',_0x302d07['arg_1']));_0x302d07['continueAt'](_0x302d07[_0x7515('0x2a')],_0x302d07[_0x7515('0x2b')],parseInt(_0x302d07[_0x7515('0x2c')],0xa)+0x1);_0x302d07[_0x7515('0x3c')]();}module[_0x7515('0x3d')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index d07d22c..039339a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x111b=['prototype','_transform','\x0d\x0a\x0d\x0a','substring','split','slice','trim','length','emit','headers','exports','stream','Transform','call','_localBuffer','_inBody','inherits'];(function(_0x4ae0b9,_0xbf353b){var _0x397c53=function(_0x526bd6){while(--_0x526bd6){_0x4ae0b9['push'](_0x4ae0b9['shift']());}};_0x397c53(++_0xbf353b);}(_0x111b,0x15f));var _0xb111=function(_0x1b833d,_0x6890a7){_0x1b833d=_0x1b833d-0x0;var _0x1a76d3=_0x111b[_0x1b833d];return _0x1a76d3;};'use strict';var util=require('util');var Transform=require(_0xb111('0x0'))[_0xb111('0x1')];function AGIReply(_0x145829){Transform[_0xb111('0x2')](this,_0x145829);this[_0xb111('0x3')]='';this[_0xb111('0x4')]=![];}util[_0xb111('0x5')](AGIReply,Transform);AGIReply[_0xb111('0x6')][_0xb111('0x7')]=function(_0x21599f,_0x87691a,_0x43af85){var _0x1c7e96='\x0a',_0xf3a6ad=['\x0a\x0a',_0xb111('0x8')],_0x3e7838=-0x1,_0x328e49=-0x1,_0x65b88c='',_0x35da51=0x0,_0x4bf32a='',_0x1eae97='';this['_localBuffer']+=_0x21599f['toString']();_0x4bf32a=this[_0xb111('0x3')];if(!this[_0xb111('0x4')]){_0x35da51=0x0;while(_0xf3a6ad[_0x35da51]){while((_0x328e49=_0x4bf32a['indexOf'](_0xf3a6ad[_0x35da51]))!=-0x1){_0x65b88c=_0xf3a6ad[_0x35da51];_0x1eae97=_0x4bf32a[_0xb111('0x9')](0x0,_0x328e49);_0x4bf32a=_0x4bf32a[_0xb111('0x9')](_0x328e49+_0x65b88c['length']);var _0x2d3503=_0x1eae97[_0xb111('0xa')](_0x1c7e96),_0xee778f=0x0,_0x49020a={},_0xa870ba='',_0x49fc16='',_0xb0f919=-0x1;while(_0x2d3503[_0xee778f]){_0xb0f919=_0x2d3503[_0xee778f]['indexOf'](':');if(_0xb0f919!=-0x1){_0xa870ba=_0x2d3503[_0xee778f][_0xb111('0xb')](0x0,_0xb0f919)[_0xb111('0xc')]();_0x49fc16=_0x2d3503[_0xee778f][_0xb111('0xb')](_0xb0f919+0x1)[_0xb111('0xc')]();if(_0xa870ba[_0xb111('0xd')]>0x0){_0x49020a[_0xa870ba]=_0x49fc16;}}else{}_0xee778f++;}this[_0xb111('0xe')](_0xb111('0xf'),_0x49020a);this[_0xb111('0x4')]=!![];}_0x35da51++;}this[_0xb111('0x3')]=_0x4bf32a;}else{while((_0x3e7838=_0x4bf32a['indexOf'](_0x1c7e96))!=-0x1){_0x1eae97=_0x4bf32a[_0xb111('0x9')](0x0,_0x3e7838);this['emit']('line',_0x1eae97);_0x4bf32a=_0x4bf32a[_0xb111('0x9')](_0x3e7838+_0x1c7e96['length']);}this[_0xb111('0x3')]=_0x4bf32a;}_0x43af85();};module[_0xb111('0x10')]=AGIReply;
\ No newline at end of file
+var _0x7b34=['exports','util','stream','Transform','call','_localBuffer','_inBody','inherits','prototype','_transform','toString','substring','length','split','indexOf','slice','emit','line'];(function(_0x198eae,_0xf23e90){var _0x2ad186=function(_0x24e88f){while(--_0x24e88f){_0x198eae['push'](_0x198eae['shift']());}};_0x2ad186(++_0xf23e90);}(_0x7b34,0x18d));var _0x47b3=function(_0x286203,_0x2faaf7){_0x286203=_0x286203-0x0;var _0x37a671=_0x7b34[_0x286203];return _0x37a671;};'use strict';var util=require(_0x47b3('0x0'));var Transform=require(_0x47b3('0x1'))[_0x47b3('0x2')];function AGIReply(_0x3b7c14){Transform[_0x47b3('0x3')](this,_0x3b7c14);this[_0x47b3('0x4')]='';this[_0x47b3('0x5')]=![];}util[_0x47b3('0x6')](AGIReply,Transform);AGIReply[_0x47b3('0x7')][_0x47b3('0x8')]=function(_0x2d31ea,_0x2b59c3,_0x1d4b7b){var _0x14a176='\x0a',_0x333ae0=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x5047bd=-0x1,_0x2f2adf=-0x1,_0x51e6cb='',_0xb6549a=0x0,_0x3e771f='',_0x3ed2a0='';this[_0x47b3('0x4')]+=_0x2d31ea[_0x47b3('0x9')]();_0x3e771f=this[_0x47b3('0x4')];if(!this[_0x47b3('0x5')]){_0xb6549a=0x0;while(_0x333ae0[_0xb6549a]){while((_0x2f2adf=_0x3e771f['indexOf'](_0x333ae0[_0xb6549a]))!=-0x1){_0x51e6cb=_0x333ae0[_0xb6549a];_0x3ed2a0=_0x3e771f[_0x47b3('0xa')](0x0,_0x2f2adf);_0x3e771f=_0x3e771f['substring'](_0x2f2adf+_0x51e6cb[_0x47b3('0xb')]);var _0x44d64c=_0x3ed2a0[_0x47b3('0xc')](_0x14a176),_0x28fa5a=0x0,_0x2124d5={},_0x528b42='',_0x29e88c='',_0x593020=-0x1;while(_0x44d64c[_0x28fa5a]){_0x593020=_0x44d64c[_0x28fa5a][_0x47b3('0xd')](':');if(_0x593020!=-0x1){_0x528b42=_0x44d64c[_0x28fa5a][_0x47b3('0xe')](0x0,_0x593020)['trim']();_0x29e88c=_0x44d64c[_0x28fa5a][_0x47b3('0xe')](_0x593020+0x1)['trim']();if(_0x528b42[_0x47b3('0xb')]>0x0){_0x2124d5[_0x528b42]=_0x29e88c;}}else{}_0x28fa5a++;}this[_0x47b3('0xf')]('headers',_0x2124d5);this[_0x47b3('0x5')]=!![];}_0xb6549a++;}this[_0x47b3('0x4')]=_0x3e771f;}else{while((_0x5047bd=_0x3e771f[_0x47b3('0xd')](_0x14a176))!=-0x1){_0x3ed2a0=_0x3e771f[_0x47b3('0xa')](0x0,_0x5047bd);this[_0x47b3('0xf')](_0x47b3('0x10'),_0x3ed2a0);_0x3e771f=_0x3e771f[_0x47b3('0xa')](_0x5047bd+_0x14a176[_0x47b3('0xb')]);}this[_0x47b3('0x4')]=_0x3e771f;}_0x1d4b7b();};module[_0x47b3('0x11')]=AGIReply;
\ No newline at end of file
index 43a8c8a..7e5b6cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89f7=['getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','getSoundById','save_name','getIntervalById','ShowInterval','Interval','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','getPauseById','agentLogin','agentPause','PauseUser','agentUnpause','agentLogout','LogoutUser','lodash','moment','jayson/promise','http','request','then','error','message','result','catch','GetSquareProjects','name','production','ShowSquareProject','Smtp','CloudProvider','email','getSquareProjectById','getVoiceQueueById'];(function(_0x504ad9,_0x2dec3e){var _0x4aacf9=function(_0x3fec23){while(--_0x3fec23){_0x504ad9['push'](_0x504ad9['shift']());}};_0x4aacf9(++_0x2dec3e);}(_0x89f7,0x105));var _0x789f=function(_0x1d9e40,_0x1c44db){_0x1d9e40=_0x1d9e40-0x0;var _0x2ee94f=_0x89f7[_0x1d9e40];return _0x2ee94f;};'use strict';var _=require(_0x789f('0x0'));var moment=require(_0x789f('0x1'));var jayson=require(_0x789f('0x2'));var client=jayson['client'][_0x789f('0x3')]({'port':0x2329});function request(_0x564d48,_0x1c55ac){return new Promise(function(_0x48fa02,_0xf6ef5d){return client[_0x789f('0x4')](_0x564d48,_0x1c55ac)[_0x789f('0x5')](function(_0x23222b){if(_0x23222b['error']){return _0xf6ef5d(_0x23222b[_0x789f('0x6')][_0x789f('0x7')]);}else{return _0x48fa02(_0x23222b[_0x789f('0x8')]);}})[_0x789f('0x9')](function(_0x48f79b){return _0xf6ef5d(_0x48f79b);});});}exports['getSquareProjects']=function(){return request(_0x789f('0xa'),{'options':{'raw':![],'attributes':['id',_0x789f('0xb'),_0x789f('0xc')]}});};exports['getSquareProject']=function(_0x300d27){return request(_0x789f('0xd'),{'options':{'raw':![],'where':{'name':_0x300d27},'attributes':[_0x789f('0xc')]}});};exports['getMailAccountById']=function(_0x4f85a3){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x4f85a3},'include':[{'model':'MailServerOut','as':_0x789f('0xe'),'include':[{'model':_0x789f('0xf'),'as':_0x789f('0xf')}]}],'attributes':['id',_0x789f('0xb'),_0x789f('0x10')],'smtp':!![]}});};exports[_0x789f('0x11')]=function(_0x47b1f3){return request(_0x789f('0xd'),{'options':{'where':{'id':_0x47b1f3},'attributes':[_0x789f('0xb')]}});};exports[_0x789f('0x12')]=function(_0xe767ad){return request('ShowVoiceQueue',{'options':{'where':{'id':_0xe767ad},'attributes':[_0x789f('0xb')]}});};exports['getVariableById']=function(_0x7fd299){return request('ShowVariable',{'options':{'where':{'id':_0x7fd299},'attributes':['name']}});};exports[_0x789f('0x13')]=function(_0x1223ac){return request(_0x789f('0x14'),{'options':{'where':{'id':_0x1223ac},'attributes':[_0x789f('0x15')]}});};exports[_0x789f('0x16')]=function(_0x44058c){return request(_0x789f('0x17'),{'options':{'where':{'id':_0x44058c},'attributes':['name']}});};exports[_0x789f('0x18')]=function(_0x678cfb){return request(_0x789f('0x19'),{'options':{'where':{'phone':_0x678cfb[_0x789f('0x1a')]},'attributes':['id']}});};exports[_0x789f('0x1b')]=function(_0xe4bb84){return request('ShowTrunk',{'options':{'where':{'id':_0xe4bb84},'attributes':[_0x789f('0xb')]}});};exports[_0x789f('0x1c')]=function(_0x9b58e){return request('ShowSound',{'options':{'where':{'id':_0x9b58e},'attributes':[_0x789f('0x1d')]}});};exports[_0x789f('0x1e')]=function(_0x415c71){return request(_0x789f('0x1f'),{'options':{'raw':![],'where':{'id':_0x415c71},'include':[{'model':_0x789f('0x20'),'as':'Intervals'}]}});};exports[_0x789f('0x21')]=function(_0x162855){return request('ShowSmsAccount',{'options':{'where':{'id':_0x162855},'attributes':['id',_0x789f('0xb')]}});};exports[_0x789f('0x22')]=function(_0x1a67f0){return request(_0x789f('0x23'),{'body':_0x1a67f0});};exports['createSquareDetailsReport']=function(_0x554c48){return request('CreateSquareDetailsReport',{'body':_0x554c48});};exports[_0x789f('0x24')]=function(_0x158202){return request('CreateSquareReport',{'body':_[_0x789f('0x25')](_0x158202,{'project_name':_0x158202[_0x789f('0x26')],'prev_project_name':_0x158202[_0x789f('0x27')]||'','is_subproject':_0x158202['arg_2']?!![]:![],'leaveAt':moment()[_0x789f('0x28')](_0x789f('0x29'))})});};exports[_0x789f('0x2a')]=function(_0x4344ea){return request('CreateSquareRecording',{'body':_0x4344ea});};exports[_0x789f('0x2b')]=function(_0x25250d){return request(_0x789f('0x2c'),{'body':_0x25250d});};exports[_0x789f('0x2d')]=function(_0xd5a07){return request(_0x789f('0x2e'),{'options':{'raw':![],'where':{'phone':_0xd5a07['phone'],'ListId':_0xd5a07[_0x789f('0x2f')]}}})[_0x789f('0x5')](function(_0x6c6859){if(_0x6c6859){return _0x6c6859;}return request(_0x789f('0x30'),{'body':_0xd5a07});});};exports[_0x789f('0x31')]=function(_0x28c365){return request('ShowPause',{'options':{'where':{'id':_0x28c365},'attributes':['name']}});};exports[_0x789f('0x32')]=function(_0x47da54,_0x34e5b7){return request('LoginUser',{'body':{'interface':_0x34e5b7},'options':{'where':_0x47da54}});};exports[_0x789f('0x33')]=function(_0x1d642d,_0x2b626f,_0x2e4b69){return request(_0x789f('0x34'),{'body':{'type':_0x2b626f,'uniqueid':_0x2e4b69},'options':{'where':_0x1d642d}});};exports[_0x789f('0x35')]=function(_0x34deb2){return request('UnpauseUser',{'body':{},'options':{'where':_0x34deb2}});};exports[_0x789f('0x36')]=function(_0x485eff){return request(_0x789f('0x37'),{'body':{},'options':{'where':_0x485eff}});};
\ No newline at end of file
+var _0xb90d=['CloudProvider','email','getSquareProjectById','getVariableById','ShowVariable','ShowSquareOdbc','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','ShowTrunk','ShowSound','save_name','getIntervalById','ShowInterval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','moment','jayson/promise','client','http','request','then','error','message','result','catch','getSquareProjects','GetSquareProjects','name','getSquareProject','ShowSquareProject','production','getMailAccountById','Smtp'];(function(_0x5e6487,_0x2718b8){var _0x70c092=function(_0x16300f){while(--_0x16300f){_0x5e6487['push'](_0x5e6487['shift']());}};_0x70c092(++_0x2718b8);}(_0xb90d,0x17a));var _0xdb90=function(_0xf7ff4,_0x543a19){_0xf7ff4=_0xf7ff4-0x0;var _0x554e6a=_0xb90d[_0xf7ff4];return _0x554e6a;};'use strict';var _=require('lodash');var moment=require(_0xdb90('0x0'));var jayson=require(_0xdb90('0x1'));var client=jayson[_0xdb90('0x2')][_0xdb90('0x3')]({'port':0x2329});function request(_0x8cab86,_0x42e57f){return new Promise(function(_0x4a9a1f,_0x3db22e){return client[_0xdb90('0x4')](_0x8cab86,_0x42e57f)[_0xdb90('0x5')](function(_0x532dbc){if(_0x532dbc['error']){return _0x3db22e(_0x532dbc[_0xdb90('0x6')][_0xdb90('0x7')]);}else{return _0x4a9a1f(_0x532dbc[_0xdb90('0x8')]);}})[_0xdb90('0x9')](function(_0x57862b){return _0x3db22e(_0x57862b);});});}exports[_0xdb90('0xa')]=function(){return request(_0xdb90('0xb'),{'options':{'raw':![],'attributes':['id',_0xdb90('0xc'),'production']}});};exports[_0xdb90('0xd')]=function(_0x40312b){return request(_0xdb90('0xe'),{'options':{'raw':![],'where':{'name':_0x40312b},'attributes':[_0xdb90('0xf')]}});};exports[_0xdb90('0x10')]=function(_0x48eb30){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x48eb30},'include':[{'model':'MailServerOut','as':_0xdb90('0x11'),'include':[{'model':_0xdb90('0x12'),'as':_0xdb90('0x12')}]}],'attributes':['id',_0xdb90('0xc'),_0xdb90('0x13')],'smtp':!![]}});};exports[_0xdb90('0x14')]=function(_0x5655d2){return request('ShowSquareProject',{'options':{'where':{'id':_0x5655d2},'attributes':['name']}});};exports['getVoiceQueueById']=function(_0x569d40){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x569d40},'attributes':[_0xdb90('0xc')]}});};exports[_0xdb90('0x15')]=function(_0x5b93b1){return request(_0xdb90('0x16'),{'options':{'where':{'id':_0x5b93b1},'attributes':[_0xdb90('0xc')]}});};exports['getSquareOdbcById']=function(_0x4a3298){return request(_0xdb90('0x17'),{'options':{'where':{'id':_0x4a3298},'attributes':[_0xdb90('0x18')]}});};exports[_0xdb90('0x19')]=function(_0x5101e9){return request(_0xdb90('0x1a'),{'options':{'where':{'id':_0x5101e9},'attributes':[_0xdb90('0xc')]}});};exports[_0xdb90('0x1b')]=function(_0x44d4d4){return request(_0xdb90('0x1c'),{'options':{'where':{'phone':_0x44d4d4[_0xdb90('0x1d')]},'attributes':['id']}});};exports[_0xdb90('0x1e')]=function(_0x1838ed){return request(_0xdb90('0x1f'),{'options':{'where':{'id':_0x1838ed},'attributes':[_0xdb90('0xc')]}});};exports['getSoundById']=function(_0x55e1b7){return request(_0xdb90('0x20'),{'options':{'where':{'id':_0x55e1b7},'attributes':[_0xdb90('0x21')]}});};exports[_0xdb90('0x22')]=function(_0x13f84d){return request(_0xdb90('0x23'),{'options':{'raw':![],'where':{'id':_0x13f84d},'include':[{'model':'Interval','as':_0xdb90('0x24')}]}});};exports[_0xdb90('0x25')]=function(_0x590e6a){return request(_0xdb90('0x26'),{'options':{'where':{'id':_0x590e6a},'attributes':['id','name']}});};exports[_0xdb90('0x27')]=function(_0x2fdb1b){return request(_0xdb90('0x28'),{'body':_0x2fdb1b});};exports[_0xdb90('0x29')]=function(_0xb591f1){return request(_0xdb90('0x2a'),{'body':_0xb591f1});};exports[_0xdb90('0x2b')]=function(_0x23aea1){return request(_0xdb90('0x2c'),{'body':_[_0xdb90('0x2d')](_0x23aea1,{'project_name':_0x23aea1[_0xdb90('0x2e')],'prev_project_name':_0x23aea1['arg_2']||'','is_subproject':_0x23aea1[_0xdb90('0x2f')]?!![]:![],'leaveAt':moment()[_0xdb90('0x30')](_0xdb90('0x31'))})});};exports['createSquareRecording']=function(_0x536eae){return request(_0xdb90('0x32'),{'body':_0x536eae});};exports[_0xdb90('0x33')]=function(_0x3c8349){return request(_0xdb90('0x34'),{'body':_0x3c8349});};exports[_0xdb90('0x35')]=function(_0x321efc){return request(_0xdb90('0x36'),{'options':{'raw':![],'where':{'phone':_0x321efc[_0xdb90('0x1d')],'ListId':_0x321efc['ListId']}}})[_0xdb90('0x5')](function(_0x204f8a){if(_0x204f8a){return _0x204f8a;}return request(_0xdb90('0x37'),{'body':_0x321efc});});};exports[_0xdb90('0x38')]=function(_0x3e9791){return request(_0xdb90('0x39'),{'options':{'where':{'id':_0x3e9791},'attributes':[_0xdb90('0xc')]}});};exports[_0xdb90('0x3a')]=function(_0x35a471,_0x43a20e){return request(_0xdb90('0x3b'),{'body':{'interface':_0x43a20e},'options':{'where':_0x35a471}});};exports[_0xdb90('0x3c')]=function(_0x3c2608,_0x62712d,_0x487953){return request(_0xdb90('0x3d'),{'body':{'type':_0x62712d,'uniqueid':_0x487953},'options':{'where':_0x3c2608}});};exports[_0xdb90('0x3e')]=function(_0x8d9d6a){return request(_0xdb90('0x3f'),{'body':{},'options':{'where':_0x8d9d6a}});};exports[_0xdb90('0x40')]=function(_0x55002){return request(_0xdb90('0x41'),{'body':{},'options':{'where':_0x55002}});};
\ No newline at end of file
index b602d33..4d0973c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc17=['exports','./polly','./lex'];(function(_0x5d0a5c,_0xe69a1){var _0x1c9fe7=function(_0x575f46){while(--_0x575f46){_0x5d0a5c['push'](_0x5d0a5c['shift']());}};_0x1c9fe7(++_0xe69a1);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x1da73b,_0x528c52){_0x1da73b=_0x1da73b-0x0;var _0x84cc35=_0xfc17[_0x1da73b];return _0x84cc35;};var polly=require(_0x7fc1('0x0'));var lex=require(_0x7fc1('0x1'));module[_0x7fc1('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xaa3f=['exports','./polly','./lex'];(function(_0x1ae254,_0x50c2ff){var _0x5a392c=function(_0x34c531){while(--_0x34c531){_0x1ae254['push'](_0x1ae254['shift']());}};_0x5a392c(++_0x50c2ff);}(_0xaa3f,0xbb));var _0xfaa3=function(_0x4653d7,_0x34a1dc){_0x4653d7=_0x4653d7-0x0;var _0x23c761=_0xaa3f[_0x4653d7];return _0x23c761;};var polly=require(_0xfaa3('0x0'));var lex=require(_0xfaa3('0x1'));module[_0xfaa3('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index e3c2192..669b65e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['./lib/api','exports'];(function(_0x5f523d,_0x3eea95){var _0x1d9814=function(_0x170f6b){while(--_0x170f6b){_0x5f523d['push'](_0x5f523d['shift']());}};_0x1d9814(++_0x3eea95);}(_0x55e0,0xdc));var _0x055e=function(_0x4f2777,_0x524bdb){_0x4f2777=_0x4f2777-0x0;var _0x3d43d5=_0x55e0[_0x4f2777];return _0x3d43d5;};'use strict';var lex=require(_0x055e('0x0'));module[_0x055e('0x1')]=function(_0x2e09a6,_0x414740,_0x5b82b9,_0x578882,_0x3a2ee6,_0x2d9bd5){return lex(_0x2e09a6,_0x414740,_0x5b82b9,_0x578882,_0x3a2ee6,_0x2d9bd5);};
\ No newline at end of file
+var _0xdace=['./lib/api'];(function(_0x648163,_0x241576){var _0x199d4d=function(_0x23055d){while(--_0x23055d){_0x648163['push'](_0x648163['shift']());}};_0x199d4d(++_0x241576);}(_0xdace,0xc5));var _0xedac=function(_0x55d8c5,_0x10287a){_0x55d8c5=_0x55d8c5-0x0;var _0x225ae5=_0xdace[_0x55d8c5];return _0x225ae5;};'use strict';var lex=require(_0xedac('0x0'));module['exports']=function(_0x1c76b2,_0x13adb5,_0x46eba0,_0x518516,_0x413d77,_0x36bcd2){return lex(_0x1c76b2,_0x13adb5,_0x46eba0,_0x518516,_0x413d77,_0x36bcd2);};
\ No newline at end of file
index 8d2307e..e04b772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x1e24c8,_0x2fd284){var _0x49c692=function(_0x3fdc35){while(--_0x3fdc35){_0x1e24c8['push'](_0x1e24c8['shift']());}};_0x49c692(++_0x2fd284);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'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(_0x516df8,_0x3d65ef){var _0x558809=function(_0x10dabd){while(--_0x10dabd){_0x516df8['push'](_0x516df8['shift']());}};_0x558809(++_0x3d65ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index a84b2bc..edfbf1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3e9=['./lib/api','exports'];(function(_0x4fde0e,_0x42909e){var _0x359da0=function(_0xa21082){while(--_0xa21082){_0x4fde0e['push'](_0x4fde0e['shift']());}};_0x359da0(++_0x42909e);}(_0xa3e9,0x14e));var _0x9a3e=function(_0x910e1b,_0x2232f5){_0x910e1b=_0x910e1b-0x0;var _0x3eb8fd=_0xa3e9[_0x910e1b];return _0x3eb8fd;};'use strict';var polly=require(_0x9a3e('0x0'));module[_0x9a3e('0x1')]=function(_0x3a9be7,_0x2dda53,_0x75959c,_0x4db8f4,_0x33651d,_0x44f8e7,_0x529d42){return polly(_0x3a9be7,_0x2dda53,_0x75959c,_0x4db8f4,_0x33651d,_0x44f8e7,_0x529d42);};
\ No newline at end of file
+var _0x1bed=['exports'];(function(_0x3de4f8,_0x336c7d){var _0x3d81fc=function(_0x53b9f9){while(--_0x53b9f9){_0x3de4f8['push'](_0x3de4f8['shift']());}};_0x3d81fc(++_0x336c7d);}(_0x1bed,0x116));var _0xd1be=function(_0x387611,_0x2fc0f0){_0x387611=_0x387611-0x0;var _0x9f9be6=_0x1bed[_0x387611];return _0x9f9be6;};'use strict';var polly=require('./lib/api');module[_0xd1be('0x0')]=function(_0x3d9952,_0x5f33d1,_0x4ad669,_0xeacf37,_0x35a659,_0x17b4bc,_0x1ea63a){return polly(_0x3d9952,_0x5f33d1,_0x4ad669,_0xeacf37,_0x35a659,_0x17b4bc,_0x1ea63a);};
\ No newline at end of file
index 89afcc9..6504aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f6f=['mp3','path','bluebird','randomstring','synthesizeSpeech','writeFile','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','text'];(function(_0x1f1ca,_0x59a0ed){var _0x2b6c28=function(_0xe2860a){while(--_0xe2860a){_0x1f1ca['push'](_0x1f1ca['shift']());}};_0x2b6c28(++_0x59a0ed);}(_0x1f6f,0x65));var _0xf1f6=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x1f6f[_0x3bf83f];return _0x22c4a9;};'use strict';var fs=require('fs');var path=require(_0xf1f6('0x0'));var BPromise=require(_0xf1f6('0x1'));var rs=require(_0xf1f6('0x2'));var AWS=require('aws-sdk');function pollyResult(_0x315378,_0x156c26,_0x4afd57){return new BPromise(function(_0x1bfef8,_0x2ab1d4){_0x315378[_0xf1f6('0x3')](_0x156c26,function(_0x2959e7,_0x407c23){if(_0x2959e7){_0x2ab1d4(_0x2959e7);}else if(_0x407c23){if(_0x407c23['AudioStream']instanceof Buffer){fs[_0xf1f6('0x4')](_0x4afd57,_0x407c23[_0xf1f6('0x5')],function(_0x58c88b){if(_0x58c88b){_0x2ab1d4(_0x58c88b);}else{_0x1bfef8();}});}else{_0x2ab1d4(new Error(_0xf1f6('0x6')));}}else{_0x2ab1d4(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xf1f6('0x7')]=function(_0xb15bf7,_0x1fa4a8,_0x159326,_0xe88db,_0x40463a,_0x403a57,_0x484c47){var _0x3bf5a5=new AWS['Polly']({'accessKeyId':_0xb15bf7,'secretAccessKey':_0x1fa4a8,'region':_0x159326});var _0x5e349d={'Text':_0x40463a,'TextType':_0x403a57||_0xf1f6('0x8'),'OutputFormat':_0xf1f6('0x9'),'VoiceId':_0xe88db};return pollyResult(_0x3bf5a5,_0x5e349d,_0x484c47);};
\ No newline at end of file
+var _0x606d=['synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','randomstring','aws-sdk'];(function(_0x18b52e,_0x5852b6){var _0x27899b=function(_0x5df315){while(--_0x5df315){_0x18b52e['push'](_0x18b52e['shift']());}};_0x27899b(++_0x5852b6);}(_0x606d,0x105));var _0xd606=function(_0x424dd0,_0x23f3ae){_0x424dd0=_0x424dd0-0x0;var _0x55ef22=_0x606d[_0x424dd0];return _0x55ef22;};'use strict';var fs=require('fs');var path=require(_0xd606('0x0'));var BPromise=require('bluebird');var rs=require(_0xd606('0x1'));var AWS=require(_0xd606('0x2'));function pollyResult(_0x326a65,_0x22fe59,_0x45f945){return new BPromise(function(_0xbf3624,_0x3505ba){_0x326a65[_0xd606('0x3')](_0x22fe59,function(_0x16a664,_0x212353){if(_0x16a664){_0x3505ba(_0x16a664);}else if(_0x212353){if(_0x212353[_0xd606('0x4')]instanceof Buffer){fs[_0xd606('0x5')](_0x45f945,_0x212353[_0xd606('0x4')],function(_0x32ef2b){if(_0x32ef2b){_0x3505ba(_0x32ef2b);}else{_0xbf3624();}});}else{_0x3505ba(new Error(_0xd606('0x6')));}}else{_0x3505ba(new Error(_0xd606('0x7')));}});});}module[_0xd606('0x8')]=function(_0x5ec8e3,_0x2468f2,_0x37d234,_0x78ccf2,_0x51c655,_0x4d418a,_0x2264c9){var _0x34fb9e=new AWS[(_0xd606('0x9'))]({'accessKeyId':_0x5ec8e3,'secretAccessKey':_0x2468f2,'region':_0x37d234});var _0x56ea31={'Text':_0x51c655,'TextType':_0x4d418a||_0xd606('0xa'),'OutputFormat':_0xd606('0xb'),'VoiceId':_0x78ccf2};return pollyResult(_0x34fb9e,_0x56ea31,_0x2264c9);};
\ No newline at end of file
index 840605e..acee0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e09=['./lib/api','exports'];(function(_0x4bc0fd,_0x29f6d7){var _0x24ec4a=function(_0x3d63c9){while(--_0x3d63c9){_0x4bc0fd['push'](_0x4bc0fd['shift']());}};_0x24ec4a(++_0x29f6d7);}(_0x3e09,0x128));var _0x93e0=function(_0x3fcfb6,_0x515024){_0x3fcfb6=_0x3fcfb6-0x0;var _0x3b99a7=_0x3e09[_0x3fcfb6];return _0x3b99a7;};'use strict';var asr=require(_0x93e0('0x0'));module[_0x93e0('0x1')]=function(_0x58fcc4,_0x33e14d,_0x5cf258,_0x7f5490){return asr(_0x58fcc4,_0x33e14d,_0x5cf258);};
\ No newline at end of file
+var _0xf20f=['./lib/api','exports'];(function(_0x58b801,_0x410ef2){var _0x2985a9=function(_0x2cfb36){while(--_0x2cfb36){_0x58b801['push'](_0x58b801['shift']());}};_0x2985a9(++_0x410ef2);}(_0xf20f,0xf4));var _0xff20=function(_0x328d6f,_0x5b1662){_0x328d6f=_0x328d6f-0x0;var _0x1d5160=_0xf20f[_0x328d6f];return _0x1d5160;};'use strict';var asr=require(_0xff20('0x0'));module[_0xff20('0x1')]=function(_0x59b0d8,_0x203a4b,_0x27fa16,_0x4bbd4a){return asr(_0x59b0d8,_0x203a4b,_0x27fa16);};
\ No newline at end of file
index fd7e854..f41de42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d2=['lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','LINEAR16','url','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined'];(function(_0xf9d997,_0x489aed){var _0x29ec5b=function(_0x252017){while(--_0x252017){_0xf9d997['push'](_0xf9d997['shift']());}};_0x29ec5b(++_0x489aed);}(_0x16d2,0x123));var _0x216d=function(_0x50d7c7,_0x3cef1d){_0x50d7c7=_0x50d7c7-0x0;var _0x5cb0f5=_0x16d2[_0x50d7c7];return _0x5cb0f5;};'use strict';var url=require(_0x216d('0x0'));var BPromise=require(_0x216d('0x1'));var fs=require('fs');var host=_0x216d('0x2');module[_0x216d('0x3')]=function(_0x1688cc,_0x3a2589,_0x34cf5b){return new BPromise(function(_0x239b49,_0xfd7306){var _0x593bb0;if(typeof _0x1688cc!==_0x216d('0x4')||_0x1688cc[_0x216d('0x5')]===0x0){return _0xfd7306(_0x216d('0x6'));}if(typeof _0x3a2589!==_0x216d('0x4')||_0x3a2589[_0x216d('0x5')]===0x0){return _0xfd7306(_0x216d('0x7'));}if(typeof _0x34cf5b!==_0x216d('0x8')&&(typeof _0x34cf5b!==_0x216d('0x4')||_0x34cf5b['length']===0x0)){return _0xfd7306(_0x216d('0x9'));}try{_0x593bb0=fs[_0x216d('0xa')](_0x1688cc)[_0x216d('0xb')](_0x216d('0xc'));}catch(_0x301058){return _0xfd7306(_0x301058);}return _0x239b49({'method':_0x216d('0xd'),'uri':host+'/v1/speech:recognize?key='+_0x3a2589,'body':{'config':{'encoding':_0x216d('0xe'),'sampleRateHertz':'8000','languageCode':_0x34cf5b},'audio':{'content':_0x593bb0}},'json':!![]});});};
\ No newline at end of file
+var _0x8e0d=['url','exports','filepath\x20should\x20be\x20a\x20string','string','length','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','/v1/speech:recognize?key='];(function(_0x3ec74e,_0x2f6536){var _0x5a53f9=function(_0x461459){while(--_0x461459){_0x3ec74e['push'](_0x3ec74e['shift']());}};_0x5a53f9(++_0x2f6536);}(_0x8e0d,0x82));var _0xd8e0=function(_0x5e9876,_0x16052d){_0x5e9876=_0x5e9876-0x0;var _0x576c48=_0x8e0d[_0x5e9876];return _0x576c48;};'use strict';var url=require(_0xd8e0('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host='https://speech.googleapis.com';module[_0xd8e0('0x1')]=function(_0x11f7df,_0x549e82,_0x3ee520){return new BPromise(function(_0x180f36,_0x14598d){var _0xe9c59f;if(typeof _0x11f7df!=='string'||_0x11f7df['length']===0x0){return _0x14598d(_0xd8e0('0x2'));}if(typeof _0x549e82!==_0xd8e0('0x3')||_0x549e82[_0xd8e0('0x4')]===0x0){return _0x14598d(_0xd8e0('0x5'));}if(typeof _0x3ee520!=='undefined'&&(typeof _0x3ee520!==_0xd8e0('0x3')||_0x3ee520[_0xd8e0('0x4')]===0x0)){return _0x14598d(_0xd8e0('0x6'));}try{_0xe9c59f=fs[_0xd8e0('0x7')](_0x11f7df)[_0xd8e0('0x8')]('base64');}catch(_0x332007){return _0x14598d(_0x332007);}return _0x180f36({'method':'POST','uri':host+_0xd8e0('0x9')+_0x549e82,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':'8000','languageCode':_0x3ee520},'audio':{'content':_0xe9c59f}},'json':!![]});});};
\ No newline at end of file
index 0a89447..3e51f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacd5=['./asr'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xacd5,0x110));var _0x5acd=function(_0x17141f,_0x4d7c4b){_0x17141f=_0x17141f-0x0;var _0x3ee900=_0xacd5[_0x17141f];return _0x3ee900;};var asr=require(_0x5acd('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0xb761=['./asr'];(function(_0x4a180e,_0x3f9cb5){var _0x3a8eaa=function(_0x55b532){while(--_0x55b532){_0x4a180e['push'](_0x4a180e['shift']());}};_0x3a8eaa(++_0x3f9cb5);}(_0xb761,0x19c));var _0x1b76=function(_0x37d0bc,_0x109b96){_0x37d0bc=_0x37d0bc-0x0;var _0x170e60=_0xb761[_0x37d0bc];return _0x170e60;};var asr=require(_0x1b76('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 435ca3c..d597b4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8153=['resolvedQuery','action','actionIncomplete','fulfillment','speech','status','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','responseId','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','bluebird','https','md5','querystring','request-promise','randomstring','sox','url','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','host','path','WHAT_EVER','get','statusCode','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','close','unlink','download\x20error','pipe','end','protocol','https:','data','transcode','wav','error\x20convert','info','resolve','tmp','.wav','writeFileSync','then','chmodSync','777','split','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','base64','writeFile','generate','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','result','source'];(function(_0xe8dbc4,_0x3fb405){var _0x83f140=function(_0x17741e){while(--_0x17741e){_0xe8dbc4['push'](_0xe8dbc4['shift']());}};_0x83f140(++_0x3fb405);}(_0x8153,0xc1));var _0x3815=function(_0x1d40a3,_0x57f9eb){_0x1d40a3=_0x1d40a3-0x0;var _0x80c9e=_0x8153[_0x1d40a3];return _0x80c9e;};'use strict';var apiai=require(_0x3815('0x0'));var BPromise=require(_0x3815('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0x3815('0x2'));var md5=require(_0x3815('0x3'));var path=require('path');var querystring=require(_0x3815('0x4'));var rp=require(_0x3815('0x5'));var rs=require(_0x3815('0x6'));var sox=require(_0x3815('0x7'));var tts=require('google-tts-api');var urlParse=require(_0x3815('0x8'))[_0x3815('0x9')];var util=require(_0x3815('0xa'));var aws=require('./aws');var google=require(_0x3815('0xb'));var sestek=require(_0x3815('0xc'));var tilde=require(_0x3815('0xd'));var logger=require(_0x3815('0xe'))(_0x3815('0xf'));var ISPEECH_API=_0x3815('0x10');function downloadFile(_0x2ce693,_0x360c85){return new BPromise(function(_0x39c40f,_0x2f1489){var _0x4756ae=urlParse(_0x2ce693);var _0x34c8dc=_0x4756ae['protocol']==='https:'?https:http;var _0x408ae2={'host':_0x4756ae[_0x3815('0x11')],'path':_0x4756ae[_0x3815('0x12')],'headers':{'user-agent':_0x3815('0x13')}};_0x34c8dc[_0x3815('0x14')](_0x408ae2,function(_0x115ee0){if(_0x115ee0[_0x3815('0x15')]!==0xc8){logger[_0x3815('0x16')](_0x3815('0x17')+_0x2ce693+'\x20failed,\x20status\x20code\x20=\x20'+_0x115ee0[_0x3815('0x15')]+'\x20('+_0x115ee0[_0x3815('0x18')]+')');_0x2f1489(new Error(_0x3815('0x17')+_0x2ce693+_0x3815('0x19')+_0x115ee0[_0x3815('0x15')]+'\x20('+_0x115ee0['statusMessage']+')'));return;}var _0x588c4c=fs[_0x3815('0x1a')](_0x360c85);_0x588c4c['on'](_0x3815('0x1b'),function(){logger['info']('finish\x20download\x20file');_0x588c4c[_0x3815('0x1c')](_0x39c40f);});_0x588c4c['on'](_0x3815('0x16'),function(_0x1f567b){fs[_0x3815('0x1d')](_0x360c85);logger[_0x3815('0x16')](_0x3815('0x1e'),_0x1f567b);_0x2f1489(_0x1f567b);});_0x115ee0[_0x3815('0x1f')](_0x588c4c);})['on'](_0x3815('0x16'),function(_0x2a1c8d){logger['error'](_0x2a1c8d);_0x2f1489(_0x2a1c8d);})[_0x3815('0x20')]();});}function uploadFile(_0x26e4b0){return new BPromise(function(_0x1c8c86,_0xfdfd25){var _0x41bed0=urlParse(_0x26e4b0);var _0x53146d=_0x41bed0[_0x3815('0x21')]===_0x3815('0x22')?https:http;var _0x21f266={'host':_0x41bed0[_0x3815('0x11')],'path':_0x41bed0['path'],'headers':{'user-agent':_0x3815('0x13')}};_0x53146d[_0x3815('0x14')](_0x21f266,function(_0xd41786){if(_0xd41786[_0x3815('0x15')]!==0xc8){_0xfdfd25(new Error('request\x20to\x20'+_0x26e4b0+_0x3815('0x19')+_0xd41786[_0x3815('0x15')]+'\x20('+_0xd41786['statusMessage']+')'));return;}var _0x4ecf12='';_0xd41786['on'](_0x3815('0x23'),function(_0x310a67){_0x4ecf12+=_0x310a67;});_0xd41786['on']('end',function(){_0x1c8c86(_0x4ecf12);});})['on'](_0x3815('0x16'),function(_0x1b8224){_0xfdfd25(_0x1b8224);})[_0x3815('0x20')]();});}function convertFile(_0x20abbc,_0x2de31d){return new BPromise(function(_0x31a9e2,_0x12aa82){var _0x38c542=sox[_0x3815('0x24')](_0x20abbc,_0x2de31d,{'sampleRate':0x1f40,'format':_0x3815('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x38c542['on'](_0x3815('0x16'),function(_0x5d7b52){logger[_0x3815('0x16')](_0x3815('0x26'),_0x5d7b52);_0x12aa82(_0x5d7b52);});_0x38c542['on'](_0x3815('0x20'),function(){logger[_0x3815('0x27')]('finish\x20to\x20convert');_0x31a9e2();});_0x38c542['start']();});}function base64Decode(_0x567351,_0x3b0408){var _0x1a5a7c=path[_0x3815('0x28')](__dirname,_0x3815('0x29'),rs['generate'](0x4)+_0x3815('0x2a'));fs[_0x3815('0x2b')](_0x1a5a7c,_0x567351,'base64');return convertFile(_0x1a5a7c,_0x3b0408)[_0x3815('0x2c')](function(){try{fs[_0x3815('0x1d')](_0x1a5a7c);fs[_0x3815('0x2d')](_0x3b0408,_0x3815('0x2e'));}catch(_0x2e9c5c){logger['error'](_0x2e9c5c);}return _0x3b0408[_0x3815('0x2f')]('.')[0x0];});}function base64Encode(_0xb2b4c1){var _0x4dbe37=fs[_0x3815('0x30')](_0xb2b4c1);return new Buffer(_0x4dbe37)['toString']('base64');}exports[_0x3815('0x31')]=function(_0x38f1ba,_0x4431c4,_0x4f38d2,_0xc0e187,_0x51ea4d,_0x108e7c){var _0x16e3e0,_0x1e9a49;var _0x459ed5=_0x3815('0x32');var _0x2d7731=_0x3815('0x33')+_0x38f1ba;var _0x27383e={};if(_0x4431c4===_0x3815('0x34')){_0x27383e[_0x3815('0x35')]={'ssml':_0x4f38d2};}else{_0x27383e['input']={'text':_0x4f38d2};};_0x27383e[_0x3815('0x36')]={'languageCode':_0xc0e187,'ssmlGender':_0x51ea4d};_0x27383e[_0x3815('0x37')]={'audioEncoding':_0x3815('0x38'),'sampleRateHertz':0x1f40};var _0x522fe0={'url':_0x459ed5+_0x3815('0x39')+_0x2d7731,'method':_0x3815('0x3a'),'json':!![],'body':_0x27383e};return rp(_0x522fe0)[_0x3815('0x2c')](function(_0x3cd529){return new BPromise(function(_0x5569f3,_0x1c39b1){_0x16e3e0=path[_0x3815('0x28')](__dirname,'tmp',rs['generate'](0x4)+_0x3815('0x3b'));var _0x2c4895=Buffer[_0x3815('0x3c')](_0x3cd529[_0x3815('0x3d')],_0x3815('0x3e'));return fs[_0x3815('0x3f')](_0x16e3e0,_0x2c4895,function(_0x493bb0){_0x1c39b1(_0x493bb0);},function(_0x3281b9){fs[_0x3815('0x2d')](_0x16e3e0,_0x3815('0x2e'));_0x5569f3(_0x3281b9);});});})['then'](function(_0x2b27d9){_0x1e9a49=path['resolve'](__dirname,'tmp',rs[_0x3815('0x40')](0x4)+_0x3815('0x2a'));return convertFile(_0x16e3e0,_0x1e9a49);})[_0x3815('0x2c')](function(){try{fs['unlink'](_0x16e3e0);fs[_0x3815('0x2d')](_0x1e9a49,_0x3815('0x2e'));}catch(_0x3fdff8){logger[_0x3815('0x16')](_0x3fdff8);}logger[_0x3815('0x27')](_0x3815('0x41'),_0x1e9a49[_0x3815('0x2f')]('.')[0x0]);return _0x1e9a49[_0x3815('0x2f')]('.')[0x0];});};exports[_0x3815('0x42')]=function(_0x18506a,_0x2137b4){var _0x20f821=_0x3815('0x43');var _0x4c9bb5,_0x22e5c0;var _0xb740bd;var _0x156026={'encoding':_0x3815('0x44'),'method':_0x3815('0x3a'),'timeout':0x2710,'url':_0x20f821,'headers':{'Content-Type':_0x3815('0x45')},'body':_0x3815('0x46')+encodeURIComponent(JSON[_0x3815('0x47')]([[['jQ1olc',JSON[_0x3815('0x47')]([_0x18506a,_0x2137b4||'en',![],_0x3815('0x48')]),null,_0x3815('0x49')]]]))};return rp(_0x156026)['then'](function(_0x459051){try{_0xb740bd=eval(_0x459051[_0x3815('0x4a')](0x5))[0x0][0x2];}catch(_0x335c11){throw new Error(_0x3815('0x4b')+_0x459051[_0x3815('0x23')]);}if(!_0xb740bd){if(_0x18506a[_0x3815('0x4c')]>0xc8){throw new Error(_0x3815('0x4d'));}else{throw new Error(_0x3815('0x4e')+_0x2137b4+_0x3815('0x4f'));}}try{_0xb740bd=eval(_0xb740bd)[0x0];}catch(_0x18240f){throw new Error(_0x3815('0x4b')+res[_0x3815('0x23')]);}const _0x514ca7=_0xb740bd;_0x4c9bb5=path[_0x3815('0x28')](__dirname,_0x3815('0x29'),rs[_0x3815('0x40')](0x4)+_0x3815('0x3b'));fs[_0x3815('0x2b')](_0x4c9bb5,_0xb740bd,{'encoding':_0x3815('0x3e')});_0x22e5c0=path['resolve'](__dirname,'tmp',rs[_0x3815('0x40')](0x4)+_0x3815('0x2a'));return convertFile(_0x4c9bb5,_0x22e5c0);})['then'](function(){try{fs[_0x3815('0x1d')](_0x4c9bb5);fs[_0x3815('0x2d')](_0x22e5c0,_0x3815('0x2e'));}catch(_0x1b9980){logger[_0x3815('0x16')](_0x1b9980);}logger[_0x3815('0x27')](_0x3815('0x50'),_0x22e5c0['split']('.')[0x0]);return _0x22e5c0['split']('.')[0x0];});};exports[_0x3815('0x51')]=function(_0x11666b,_0x2d0fe4,_0x3f39e5){return google['asr'](_0x11666b,_0x2d0fe4,_0x3f39e5)[_0x3815('0x2c')](function(_0x538572){logger[_0x3815('0x27')](_0x538572[_0x3815('0x52')]);return rp(_0x538572);})[_0x3815('0x2c')](function(_0x24c965){var _0xe8ffbd='';var _0x25f276=0x0;try{fs[_0x3815('0x1d')](_0x11666b);}catch(_0x422160){logger['error'](_0x422160);}if(_0x24c965&&_0x24c965[_0x3815('0x53')]){_0xe8ffbd=_0x24c965[_0x3815('0x53')][_0x3815('0x54')](function(_0x220aaf){return _0x220aaf&&_0x220aaf[_0x3815('0x55')][0x0]&&_0x220aaf['alternatives'][0x0][_0x3815('0x56')]?_0x220aaf['alternatives'][0x0][_0x3815('0x56')]:'';})['join']('\x0a');_0x25f276=_0x24c965[_0x3815('0x53')][_0x3815('0x54')](function(_0x446888){return _0x446888&&_0x446888['alternatives'][0x0]&&_0x446888[_0x3815('0x55')][0x0][_0x3815('0x57')]?_0x446888[_0x3815('0x55')][0x0]['confidence']:0x0;})['join']('\x0a');}logger[_0x3815('0x27')](_0x3815('0x58'),_0xe8ffbd);logger[_0x3815('0x27')](_0x3815('0x59'),_0x25f276);return{'transcript':_0xe8ffbd,'confidence':_0x25f276};})[_0x3815('0x5a')](function(_0x2ff692){logger[_0x3815('0x16')](_0x3815('0x5b'),_0x2ff692[_0x3815('0x15')],_0x2ff692[_0x3815('0x5c')],_0x2ff692[_0x3815('0x5d')]);});};exports[_0x3815('0x5e')]=function(_0x317835,_0x562e61,_0x2d8915,_0x434f5f){var _0x143951=apiai(_0x562e61,{'language':_0x434f5f||'en'});return _0x143951['textRequest'](_0x2d8915,{'sessionId':md5(_0x317835)})['then'](function(_0x4e7962){logger['info'](JSON[_0x3815('0x47')](_0x4e7962));return{'source':_0x4e7962[_0x3815('0x5f')][_0x3815('0x60')],'resolvedQuery':_0x4e7962['result'][_0x3815('0x61')],'action':_0x4e7962[_0x3815('0x5f')][_0x3815('0x62')],'actionIncomplete':_0x4e7962[_0x3815('0x5f')][_0x3815('0x63')],'speech':_0x4e7962[_0x3815('0x5f')][_0x3815('0x64')][_0x3815('0x65')],'score':_0x4e7962[_0x3815('0x5f')]['score'],'statusCode':_0x4e7962[_0x3815('0x66')]['code'],'endConversation':_0x4e7962['result'][_0x3815('0x67')]['endConversation']||![],'isFallbackIntent':_0x4e7962[_0x3815('0x5f')][_0x3815('0x67')][_0x3815('0x68')]};});};exports[_0x3815('0x69')]=function(_0x1873cc,_0x1463e5,_0x41fd73,_0x41bee0,_0x116ee9,_0x2eaf8c){var _0x1ed766=_0x41bee0[_0x3815('0x6a')](/\\n/g,'\x0a');var _0xb246ff={'credentials':{'private_key':_0x1ed766,'client_email':_0x41fd73}};var _0xc69065=new dialogflow[(_0x3815('0x6b'))](_0xb246ff);var _0x4c07ab=_0xc69065[_0x3815('0x6c')](_0x1463e5,md5(_0x1873cc));var _0x1b3550={'session':_0x4c07ab,'queryInput':{'text':{'text':_0x116ee9,'languageCode':_0x2eaf8c}}};return _0xc69065[_0x3815('0x6d')](_0x1b3550)[_0x3815('0x2c')](function(_0x11e574){if(_0x11e574&&_0x11e574['length']){logger[_0x3815('0x27')](_0x3815('0x6e'),JSON[_0x3815('0x47')](_0x11e574));var _0xd2981d=_0x11e574[0x0];if(_0xd2981d){var _0x1c092c={'action':_0xd2981d[_0x3815('0x6f')][_0x3815('0x62')],'allRequiredParamsPresent':_0xd2981d[_0x3815('0x6f')][_0x3815('0x70')],'endConversation':_0xd2981d[_0x3815('0x6f')]['diagnosticInfo']&&_0xd2981d['queryResult'][_0x3815('0x71')][_0x3815('0x72')]?_0xd2981d[_0x3815('0x6f')][_0x3815('0x71')]['fields'][_0x3815('0x73')][_0x3815('0x74')]:![],'fulfillmentText':_0xd2981d['queryResult'][_0x3815('0x75')],'intentName':_0xd2981d['queryResult'][_0x3815('0x76')]['name'],'intentDisplayName':_0xd2981d[_0x3815('0x6f')][_0x3815('0x76')][_0x3815('0x77')],'isFallbackIntent':_0xd2981d[_0x3815('0x6f')]['intent'][_0x3815('0x78')],'languageCode':_0xd2981d[_0x3815('0x6f')][_0x3815('0x79')],'queryText':_0xd2981d[_0x3815('0x6f')]['queryText'],'responseId':_0xd2981d[_0x3815('0x7a')],'score':_0xd2981d[_0x3815('0x6f')][_0x3815('0x7b')],'speech':_0xd2981d[_0x3815('0x6f')][_0x3815('0x75')],'providerResponse':JSON[_0x3815('0x47')](_0x11e574)};return _0x1c092c;}}});};exports[_0x3815('0x7c')]=function(_0x4d758f,_0x253bc0,_0x5af287,_0x30c99a){return tilde[_0x3815('0x7d')](_0x4d758f,_0x253bc0,_0x5af287,_0x30c99a)['then'](function(_0x279ab4){try{fs['unlink'](_0x4d758f);}catch(_0x220f8a){logger[_0x3815('0x16')](_0x220f8a);}logger['info'](_0x3815('0x7e'),_0x279ab4[_0x3815('0x56')]);logger[_0x3815('0x27')]('Tilde\x20ASR\x20confidence',_0x279ab4['confidence']);return _0x279ab4;});};exports[_0x3815('0x7f')]=function(_0xe324e2,_0x5b1d63,_0xd657e7,_0x10376f,_0x3e1382,_0x95e5fb){var _0xa08529=path[_0x3815('0x28')](__dirname,_0x3815('0x29'),rs[_0x3815('0x40')](0x4)+_0x3815('0x3b'));var _0x5b5948;return aws[_0x3815('0x80')](_0xe324e2,_0x5b1d63,_0xd657e7,_0x10376f,_0x3e1382,_0x95e5fb,_0xa08529)['then'](function(){_0x5b5948=path[_0x3815('0x28')](__dirname,'tmp',rs[_0x3815('0x40')](0x4)+_0x3815('0x2a'));return convertFile(_0xa08529,_0x5b5948);})[_0x3815('0x2c')](function(){try{fs[_0x3815('0x1d')](_0xa08529);fs[_0x3815('0x2d')](_0x5b5948,_0x3815('0x2e'));}catch(_0x5d9cfb){logger['error'](_0x5d9cfb);}return _0x5b5948[_0x3815('0x2f')]('.')[0x0];});};exports[_0x3815('0x81')]=function(_0x87b120,_0x11f5ac,_0x1316d7,_0xb9b4ab,_0x4f9cfd,_0x268441){return aws[_0x3815('0x82')](_0x87b120,_0x11f5ac,_0x1316d7,_0xb9b4ab,_0x4f9cfd,_0x268441)[_0x3815('0x2c')](function(_0x56c941){logger[_0x3815('0x27')](JSON[_0x3815('0x47')](_0x56c941));return _0x56c941;});};exports[_0x3815('0x83')]=function(_0x2f478d,_0x4041e3,_0x487cdc,_0x51aa02){var _0x3a29fa=util[_0x3815('0x84')](_0x3815('0x85'),ISPEECH_API,_0x2f478d,encodeURIComponent(_0x4041e3),_0x487cdc,_0x51aa02);var _0x18fdcd=path[_0x3815('0x28')](__dirname,_0x3815('0x29'),rs[_0x3815('0x40')](0x4)+_0x3815('0x3b'));var _0x4e5dcf;return downloadFile(_0x3a29fa,_0x18fdcd)[_0x3815('0x2c')](function(){_0x4e5dcf=path[_0x3815('0x28')](__dirname,_0x3815('0x29'),rs[_0x3815('0x40')](0x4)+_0x3815('0x2a'));return convertFile(_0x18fdcd,_0x4e5dcf);})[_0x3815('0x2c')](function(){try{fs['unlink'](_0x18fdcd);fs['chmodSync'](_0x4e5dcf,_0x3815('0x2e'));}catch(_0x45dd78){logger[_0x3815('0x16')](_0x45dd78);}return _0x4e5dcf[_0x3815('0x2f')]('.')[0x0];});};exports['ispeechASR']=function(_0x5006d4,_0xc76068,_0x4286f3,_0x1f62bf){var _0x486240=util['format'](_0x3815('0x86'),ISPEECH_API,_0xc76068,_0x4286f3,base64Encode(_0x5006d4),_0x1f62bf?util[_0x3815('0x84')]('model=%s',encodeURIComponent(_0x1f62bf)):_0x3815('0x87'));return uploadFile(_0x486240)['then'](function(_0x28f98d){return querystring[_0x3815('0x9')](_0x28f98d);});};exports[_0x3815('0x88')]=function(_0x294333,_0x4e0a37){return sestek[_0x3815('0x89')](_0x294333,_0x4e0a37)['then'](function(_0x4b65a3){logger[_0x3815('0x27')](JSON[_0x3815('0x47')](_0x4b65a3));var _0x14a232={'speech':_0x4b65a3[_0x3815('0x8a')],'action':_0x4b65a3[_0x3815('0x8b')]?_0x4b65a3[_0x3815('0x8b')][_0x3815('0x8c')]:undefined,'actiondata':_0x4b65a3[_0x3815('0x8b')]?_0x4b65a3[_0x3815('0x8b')][_0x3815('0x8d')]:undefined};if(_0x4b65a3['channelData']&&_0x4b65a3[_0x3815('0x8b')][_0x3815('0x8e')]){return base64Decode(_0x4b65a3[_0x3815('0x8b')][_0x3815('0x8e')][_0x3815('0x8f')],path[_0x3815('0x28')](__dirname,_0x3815('0x29'),rs[_0x3815('0x40')](0x4)+_0x3815('0x2a')))['then'](function(_0x1d190b){_0x14a232[_0x3815('0x90')]=_0x1d190b;return _0x14a232;});}return _0x14a232;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x6965=['length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','.wav','goggleTTS\x20path','googleASR','uri','results','map','alternatives','join','confidence','googleASR\x20confidence','name','message','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','code','endConversation','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','isFallback','queryText','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','transcript','awsPolly','polly','awsLex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','http','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','download\x20error','pipe','get','data','end','wav','error\x20convert','finish\x20to\x20convert','resolve','writeFileSync','base64','then','unlink','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','tmp','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','utf8','application/x-www-form-urlencoded','f.req=','stringify','generic','slice','parse\x20response\x20failed:\x0a'];(function(_0x2fcd90,_0x4780cc){var _0x55b596=function(_0xe475f6){while(--_0xe475f6){_0x2fcd90['push'](_0x2fcd90['shift']());}};_0x55b596(++_0x4780cc);}(_0x6965,0xd1));var _0x5696=function(_0x3258b6,_0x2d7ae1){_0x3258b6=_0x3258b6-0x0;var _0x54f732=_0x6965[_0x3258b6];return _0x54f732;};'use strict';var apiai=require(_0x5696('0x0'));var BPromise=require(_0x5696('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x5696('0x2'));var https=require('https');var md5=require(_0x5696('0x3'));var path=require(_0x5696('0x4'));var querystring=require(_0x5696('0x5'));var rp=require(_0x5696('0x6'));var rs=require(_0x5696('0x7'));var sox=require(_0x5696('0x8'));var tts=require(_0x5696('0x9'));var urlParse=require(_0x5696('0xa'))[_0x5696('0xb')];var util=require(_0x5696('0xc'));var aws=require(_0x5696('0xd'));var google=require(_0x5696('0xe'));var sestek=require(_0x5696('0xf'));var tilde=require(_0x5696('0x10'));var logger=require(_0x5696('0x11'))('agi');var ISPEECH_API=_0x5696('0x12');function downloadFile(_0x1dfcd4,_0x13d5d5){return new BPromise(function(_0x498f4b,_0x34c7c4){var _0xef92a0=urlParse(_0x1dfcd4);var _0xb0500b=_0xef92a0[_0x5696('0x13')]===_0x5696('0x14')?https:http;var _0x4082e1={'host':_0xef92a0[_0x5696('0x15')],'path':_0xef92a0[_0x5696('0x4')],'headers':{'user-agent':_0x5696('0x16')}};_0xb0500b['get'](_0x4082e1,function(_0x276ab6){if(_0x276ab6[_0x5696('0x17')]!==0xc8){logger[_0x5696('0x18')](_0x5696('0x19')+_0x1dfcd4+_0x5696('0x1a')+_0x276ab6[_0x5696('0x17')]+'\x20('+_0x276ab6[_0x5696('0x1b')]+')');_0x34c7c4(new Error('request\x20to\x20'+_0x1dfcd4+_0x5696('0x1a')+_0x276ab6[_0x5696('0x17')]+'\x20('+_0x276ab6[_0x5696('0x1b')]+')'));return;}var _0x2c9956=fs[_0x5696('0x1c')](_0x13d5d5);_0x2c9956['on'](_0x5696('0x1d'),function(){logger[_0x5696('0x1e')](_0x5696('0x1f'));_0x2c9956['close'](_0x498f4b);});_0x2c9956['on']('error',function(_0xce0771){fs['unlink'](_0x13d5d5);logger[_0x5696('0x18')](_0x5696('0x20'),_0xce0771);_0x34c7c4(_0xce0771);});_0x276ab6[_0x5696('0x21')](_0x2c9956);})['on'](_0x5696('0x18'),function(_0x1a40e3){logger['error'](_0x1a40e3);_0x34c7c4(_0x1a40e3);})['end']();});}function uploadFile(_0xe71d7f){return new BPromise(function(_0x1173eb,_0x5b7274){var _0x307e9c=urlParse(_0xe71d7f);var _0x160f22=_0x307e9c[_0x5696('0x13')]==='https:'?https:http;var _0x120c1b={'host':_0x307e9c[_0x5696('0x15')],'path':_0x307e9c[_0x5696('0x4')],'headers':{'user-agent':_0x5696('0x16')}};_0x160f22[_0x5696('0x22')](_0x120c1b,function(_0x1086ac){if(_0x1086ac[_0x5696('0x17')]!==0xc8){_0x5b7274(new Error(_0x5696('0x19')+_0xe71d7f+_0x5696('0x1a')+_0x1086ac[_0x5696('0x17')]+'\x20('+_0x1086ac[_0x5696('0x1b')]+')'));return;}var _0x21d64d='';_0x1086ac['on'](_0x5696('0x23'),function(_0x47f9a6){_0x21d64d+=_0x47f9a6;});_0x1086ac['on'](_0x5696('0x24'),function(){_0x1173eb(_0x21d64d);});})['on'](_0x5696('0x18'),function(_0x107b98){_0x5b7274(_0x107b98);})['end']();});}function convertFile(_0x11b31d,_0x4ccb8f){return new BPromise(function(_0x462b68,_0x2c29f0){var _0x3af553=sox['transcode'](_0x11b31d,_0x4ccb8f,{'sampleRate':0x1f40,'format':_0x5696('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3af553['on'](_0x5696('0x18'),function(_0x163f5d){logger['error'](_0x5696('0x26'),_0x163f5d);_0x2c29f0(_0x163f5d);});_0x3af553['on'](_0x5696('0x24'),function(){logger[_0x5696('0x1e')](_0x5696('0x27'));_0x462b68();});_0x3af553['start']();});}function base64Decode(_0x582a3f,_0xc8c5e9){var _0x420b83=path[_0x5696('0x28')](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs[_0x5696('0x29')](_0x420b83,_0x582a3f,_0x5696('0x2a'));return convertFile(_0x420b83,_0xc8c5e9)[_0x5696('0x2b')](function(){try{fs[_0x5696('0x2c')](_0x420b83);fs[_0x5696('0x2d')](_0xc8c5e9,_0x5696('0x2e'));}catch(_0x4ec57b){logger[_0x5696('0x18')](_0x4ec57b);}return _0xc8c5e9[_0x5696('0x2f')]('.')[0x0];});}function base64Encode(_0x5537c3){var _0x5615b3=fs[_0x5696('0x30')](_0x5537c3);return new Buffer(_0x5615b3)[_0x5696('0x31')](_0x5696('0x2a'));}exports[_0x5696('0x32')]=function(_0x2af87d,_0xce180d,_0x7856a6,_0x9f8707,_0xc44120,_0x4910d4){var _0x3f084f,_0x31847e;var _0x268aab=_0x5696('0x33');var _0x2a4b98=_0x5696('0x34')+_0x2af87d;var _0x49a939={};if(_0xce180d===_0x5696('0x35')){_0x49a939[_0x5696('0x36')]={'ssml':_0x7856a6};}else{_0x49a939[_0x5696('0x36')]={'text':_0x7856a6};};_0x49a939[_0x5696('0x37')]={'languageCode':_0x9f8707,'ssmlGender':_0xc44120};_0x49a939[_0x5696('0x38')]={'audioEncoding':_0x5696('0x39'),'sampleRateHertz':0x1f40};var _0x16897e={'url':_0x268aab+_0x5696('0x3a')+_0x2a4b98,'method':_0x5696('0x3b'),'json':!![],'body':_0x49a939};return rp(_0x16897e)[_0x5696('0x2b')](function(_0x2a9b7f){return new BPromise(function(_0x512722,_0x545d94){_0x3f084f=path[_0x5696('0x28')](__dirname,_0x5696('0x3c'),rs[_0x5696('0x3d')](0x4)+_0x5696('0x3e'));var _0x195c84=Buffer[_0x5696('0x3f')](_0x2a9b7f[_0x5696('0x40')],'base64');return fs[_0x5696('0x41')](_0x3f084f,_0x195c84,function(_0x361484){_0x545d94(_0x361484);},function(_0x5cca9f){fs[_0x5696('0x2d')](_0x3f084f,_0x5696('0x2e'));_0x512722(_0x5cca9f);});});})['then'](function(_0x127939){_0x31847e=path[_0x5696('0x28')](__dirname,_0x5696('0x3c'),rs[_0x5696('0x3d')](0x4)+'.wav');return convertFile(_0x3f084f,_0x31847e);})['then'](function(){try{fs[_0x5696('0x2c')](_0x3f084f);fs[_0x5696('0x2d')](_0x31847e,_0x5696('0x2e'));}catch(_0x149615){logger[_0x5696('0x18')](_0x149615);}logger[_0x5696('0x1e')](_0x5696('0x42'),_0x31847e[_0x5696('0x2f')]('.')[0x0]);return _0x31847e[_0x5696('0x2f')]('.')[0x0];});};exports[_0x5696('0x43')]=function(_0x256e26,_0xaa389c){var _0x208dc4='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x5ee08a,_0x4578f0;var _0x165cd6;var _0x22e72c={'encoding':_0x5696('0x44'),'method':_0x5696('0x3b'),'timeout':0x2710,'url':_0x208dc4,'headers':{'Content-Type':_0x5696('0x45')},'body':_0x5696('0x46')+encodeURIComponent(JSON['stringify']([[['jQ1olc',JSON[_0x5696('0x47')]([_0x256e26,_0xaa389c||'en',![],'null']),null,_0x5696('0x48')]]]))};return rp(_0x22e72c)[_0x5696('0x2b')](function(_0x35e956){try{_0x165cd6=eval(_0x35e956[_0x5696('0x49')](0x5))[0x0][0x2];}catch(_0x353cf1){throw new Error(_0x5696('0x4a')+_0x35e956['data']);}if(!_0x165cd6){if(_0x256e26[_0x5696('0x4b')]>0xc8){throw new Error(_0x5696('0x4c'));}else{throw new Error(_0x5696('0x4d')+_0xaa389c+_0x5696('0x4e'));}}try{_0x165cd6=eval(_0x165cd6)[0x0];}catch(_0x3d3a97){throw new Error(_0x5696('0x4a')+res[_0x5696('0x23')]);}const _0x59a658=_0x165cd6;_0x5ee08a=path[_0x5696('0x28')](__dirname,_0x5696('0x3c'),rs[_0x5696('0x3d')](0x4)+_0x5696('0x3e'));fs[_0x5696('0x29')](_0x5ee08a,_0x165cd6,{'encoding':_0x5696('0x2a')});_0x4578f0=path[_0x5696('0x28')](__dirname,_0x5696('0x3c'),rs[_0x5696('0x3d')](0x4)+_0x5696('0x4f'));return convertFile(_0x5ee08a,_0x4578f0);})[_0x5696('0x2b')](function(){try{fs[_0x5696('0x2c')](_0x5ee08a);fs['chmodSync'](_0x4578f0,'777');}catch(_0x2edd3c){logger[_0x5696('0x18')](_0x2edd3c);}logger[_0x5696('0x1e')](_0x5696('0x50'),_0x4578f0['split']('.')[0x0]);return _0x4578f0['split']('.')[0x0];});};exports[_0x5696('0x51')]=function(_0x3fff1c,_0x2a3d2e,_0x56ed02){return google['asr'](_0x3fff1c,_0x2a3d2e,_0x56ed02)[_0x5696('0x2b')](function(_0x18a6c5){logger[_0x5696('0x1e')](_0x18a6c5[_0x5696('0x52')]);return rp(_0x18a6c5);})[_0x5696('0x2b')](function(_0x551b16){var _0x1a5c71='';var _0x54793a=0x0;try{fs[_0x5696('0x2c')](_0x3fff1c);}catch(_0x2ec5b1){logger[_0x5696('0x18')](_0x2ec5b1);}if(_0x551b16&&_0x551b16['results']){_0x1a5c71=_0x551b16[_0x5696('0x53')][_0x5696('0x54')](function(_0x15a895){return _0x15a895&&_0x15a895[_0x5696('0x55')][0x0]&&_0x15a895[_0x5696('0x55')][0x0]['transcript']?_0x15a895[_0x5696('0x55')][0x0]['transcript']:'';})[_0x5696('0x56')]('\x0a');_0x54793a=_0x551b16[_0x5696('0x53')]['map'](function(_0x17271e){return _0x17271e&&_0x17271e['alternatives'][0x0]&&_0x17271e[_0x5696('0x55')][0x0][_0x5696('0x57')]?_0x17271e[_0x5696('0x55')][0x0][_0x5696('0x57')]:0x0;})[_0x5696('0x56')]('\x0a');}logger[_0x5696('0x1e')]('googleASR\x20transcription',_0x1a5c71);logger[_0x5696('0x1e')](_0x5696('0x58'),_0x54793a);return{'transcript':_0x1a5c71,'confidence':_0x54793a};})['catch'](function(_0x5a02eb){logger[_0x5696('0x18')]('[%s]\x20%s:%s',_0x5a02eb[_0x5696('0x17')],_0x5a02eb[_0x5696('0x59')],_0x5a02eb[_0x5696('0x5a')]);});};exports['googleDialogflow']=function(_0x150a3b,_0x3bdb47,_0x4eb743,_0x4770c0){var _0x164c03=apiai(_0x3bdb47,{'language':_0x4770c0||'en'});return _0x164c03[_0x5696('0x5b')](_0x4eb743,{'sessionId':md5(_0x150a3b)})['then'](function(_0x4e6e42){logger[_0x5696('0x1e')](JSON[_0x5696('0x47')](_0x4e6e42));return{'source':_0x4e6e42[_0x5696('0x5c')][_0x5696('0x5d')],'resolvedQuery':_0x4e6e42['result'][_0x5696('0x5e')],'action':_0x4e6e42[_0x5696('0x5c')][_0x5696('0x5f')],'actionIncomplete':_0x4e6e42[_0x5696('0x5c')][_0x5696('0x60')],'speech':_0x4e6e42[_0x5696('0x5c')][_0x5696('0x61')][_0x5696('0x62')],'score':_0x4e6e42[_0x5696('0x5c')][_0x5696('0x63')],'statusCode':_0x4e6e42[_0x5696('0x64')][_0x5696('0x65')],'endConversation':_0x4e6e42['result']['metadata'][_0x5696('0x66')]||![],'isFallbackIntent':_0x4e6e42[_0x5696('0x5c')][_0x5696('0x67')][_0x5696('0x68')]};});};exports[_0x5696('0x69')]=function(_0xa81cf1,_0x6b7967,_0x5acf76,_0x31bb02,_0x51e8b3,_0x28502a){var _0x1948d5=_0x31bb02[_0x5696('0x6a')](/\\n/g,'\x0a');var _0x5c9a3a={'credentials':{'private_key':_0x1948d5,'client_email':_0x5acf76}};var _0x268c37=new dialogflow[(_0x5696('0x6b'))](_0x5c9a3a);var _0x39f83c=_0x268c37[_0x5696('0x6c')](_0x6b7967,md5(_0xa81cf1));var _0x8e4d87={'session':_0x39f83c,'queryInput':{'text':{'text':_0x51e8b3,'languageCode':_0x28502a}}};return _0x268c37[_0x5696('0x6d')](_0x8e4d87)['then'](function(_0x3ab7f2){if(_0x3ab7f2&&_0x3ab7f2['length']){logger[_0x5696('0x1e')](_0x5696('0x6e'),JSON[_0x5696('0x47')](_0x3ab7f2));var _0x4325f1=_0x3ab7f2[0x0];if(_0x4325f1){var _0x2f1a46={'action':_0x4325f1[_0x5696('0x6f')]['action'],'allRequiredParamsPresent':_0x4325f1[_0x5696('0x6f')]['allRequiredParamsPresent'],'endConversation':_0x4325f1[_0x5696('0x6f')]['diagnosticInfo']&&_0x4325f1['queryResult'][_0x5696('0x70')][_0x5696('0x71')]?_0x4325f1[_0x5696('0x6f')]['diagnosticInfo'][_0x5696('0x71')][_0x5696('0x72')][_0x5696('0x73')]:![],'fulfillmentText':_0x4325f1[_0x5696('0x6f')][_0x5696('0x74')],'intentName':_0x4325f1[_0x5696('0x6f')][_0x5696('0x75')][_0x5696('0x59')],'intentDisplayName':_0x4325f1[_0x5696('0x6f')][_0x5696('0x75')]['displayName'],'isFallbackIntent':_0x4325f1[_0x5696('0x6f')][_0x5696('0x75')][_0x5696('0x76')],'languageCode':_0x4325f1['queryResult']['languageCode'],'queryText':_0x4325f1[_0x5696('0x6f')][_0x5696('0x77')],'responseId':_0x4325f1['responseId'],'score':_0x4325f1[_0x5696('0x6f')][_0x5696('0x78')],'speech':_0x4325f1[_0x5696('0x6f')][_0x5696('0x74')],'providerResponse':JSON[_0x5696('0x47')](_0x3ab7f2)};return _0x2f1a46;}}});};exports[_0x5696('0x79')]=function(_0xfbf07c,_0x5c30ff,_0x231c61,_0x223b1d){return tilde[_0x5696('0x7a')](_0xfbf07c,_0x5c30ff,_0x231c61,_0x223b1d)[_0x5696('0x2b')](function(_0x3bfef9){try{fs['unlink'](_0xfbf07c);}catch(_0x39c4ec){logger[_0x5696('0x18')](_0x39c4ec);}logger[_0x5696('0x1e')](_0x5696('0x7b'),_0x3bfef9[_0x5696('0x7c')]);logger['info']('Tilde\x20ASR\x20confidence',_0x3bfef9['confidence']);return _0x3bfef9;});};exports[_0x5696('0x7d')]=function(_0x4ecacf,_0x46da8a,_0x551f6a,_0x1be541,_0x1d2b97,_0x42ba09){var _0x49e246=path['resolve'](__dirname,_0x5696('0x3c'),rs[_0x5696('0x3d')](0x4)+_0x5696('0x3e'));var _0x5bab21;return aws[_0x5696('0x7e')](_0x4ecacf,_0x46da8a,_0x551f6a,_0x1be541,_0x1d2b97,_0x42ba09,_0x49e246)[_0x5696('0x2b')](function(){_0x5bab21=path[_0x5696('0x28')](__dirname,'tmp',rs[_0x5696('0x3d')](0x4)+_0x5696('0x4f'));return convertFile(_0x49e246,_0x5bab21);})['then'](function(){try{fs['unlink'](_0x49e246);fs[_0x5696('0x2d')](_0x5bab21,'777');}catch(_0x55ef18){logger[_0x5696('0x18')](_0x55ef18);}return _0x5bab21['split']('.')[0x0];});};exports[_0x5696('0x7f')]=function(_0x1a766c,_0x21aa10,_0xcb19f8,_0x392d30,_0x46d8dc,_0x1c3c07){return aws['lex'](_0x1a766c,_0x21aa10,_0xcb19f8,_0x392d30,_0x46d8dc,_0x1c3c07)[_0x5696('0x2b')](function(_0x8113b1){logger[_0x5696('0x1e')](JSON[_0x5696('0x47')](_0x8113b1));return _0x8113b1;});};exports['ispeechTTS']=function(_0x1e62d3,_0x1d59c8,_0xeea767,_0x328e57){var _0x3ef2c2=util[_0x5696('0x80')](_0x5696('0x81'),ISPEECH_API,_0x1e62d3,encodeURIComponent(_0x1d59c8),_0xeea767,_0x328e57);var _0x2738ce=path[_0x5696('0x28')](__dirname,_0x5696('0x3c'),rs[_0x5696('0x3d')](0x4)+_0x5696('0x3e'));var _0x372556;return downloadFile(_0x3ef2c2,_0x2738ce)[_0x5696('0x2b')](function(){_0x372556=path[_0x5696('0x28')](__dirname,_0x5696('0x3c'),rs['generate'](0x4)+'.wav');return convertFile(_0x2738ce,_0x372556);})[_0x5696('0x2b')](function(){try{fs[_0x5696('0x2c')](_0x2738ce);fs[_0x5696('0x2d')](_0x372556,'777');}catch(_0x36cd20){logger['error'](_0x36cd20);}return _0x372556[_0x5696('0x2f')]('.')[0x0];});};exports[_0x5696('0x82')]=function(_0x81ee0e,_0x11255a,_0x420e7f,_0xb5ec42){var _0x1444cc=util[_0x5696('0x80')](_0x5696('0x83'),ISPEECH_API,_0x11255a,_0x420e7f,base64Encode(_0x81ee0e),_0xb5ec42?util[_0x5696('0x80')]('model=%s',encodeURIComponent(_0xb5ec42)):_0x5696('0x84'));return uploadFile(_0x1444cc)[_0x5696('0x2b')](function(_0x2d4dd0){return querystring['parse'](_0x2d4dd0);});};exports[_0x5696('0x85')]=function(_0x27af30,_0xc59404){return sestek[_0x5696('0x86')](_0x27af30,_0xc59404)['then'](function(_0x144724){logger[_0x5696('0x1e')](JSON[_0x5696('0x47')](_0x144724));var _0x2b9eca={'speech':_0x144724[_0x5696('0x87')],'action':_0x144724['channelData']?_0x144724[_0x5696('0x88')][_0x5696('0x89')]:undefined,'actiondata':_0x144724[_0x5696('0x88')]?_0x144724['channelData'][_0x5696('0x8a')]:undefined};if(_0x144724['channelData']&&_0x144724[_0x5696('0x88')][_0x5696('0x8b')]){return base64Decode(_0x144724[_0x5696('0x88')][_0x5696('0x8b')]['Data'],path['resolve'](__dirname,_0x5696('0x3c'),rs[_0x5696('0x3d')](0x4)+_0x5696('0x4f')))[_0x5696('0x2b')](function(_0x54474a){_0x2b9eca[_0x5696('0x8c')]=_0x54474a;return _0x2b9eca;});}return _0x2b9eca;});};exports[_0x5696('0x8d')]=function(){return __dirname;};
\ No newline at end of file
index 1c70fe2..391d1b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa470=['./nda'];(function(_0x5c3bb0,_0x32caed){var _0x595565=function(_0x366c89){while(--_0x366c89){_0x5c3bb0['push'](_0x5c3bb0['shift']());}};_0x595565(++_0x32caed);}(_0xa470,0x111));var _0x0a47=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa470[_0x20a584];return _0x4b41a8;};var nda=require(_0x0a47('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
+var _0xb309=['./nda'];(function(_0x16ca11,_0x5c8f1e){var _0x3c8f7e=function(_0x4cb921){while(--_0x4cb921){_0x16ca11['push'](_0x16ca11['shift']());}};_0x3c8f7e(++_0x5c8f1e);}(_0xb309,0x129));var _0x9b30=function(_0x1eb64b,_0x1ec889){_0x1eb64b=_0x1eb64b-0x0;var _0x1498e0=_0xb309[_0x1eb64b];return _0x1498e0;};var nda=require(_0x9b30('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index 2889ec8..bbcb837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad95=['text','Bearer\x20','access_token','project','body','channelData','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','request-promise','url','../../../../../config/logger','resolve','password','then','POST','ndassistant_url','message','Nda','uniqueid','calleridname','dnid'];(function(_0x3132e8,_0x499a0e){var _0x43eb8c=function(_0x2321e1){while(--_0x2321e1){_0x3132e8['push'](_0x3132e8['shift']());}};_0x43eb8c(++_0x499a0e);}(_0xad95,0x70));var _0x5ad9=function(_0x557bc1,_0x5f07a3){_0x557bc1=_0x557bc1-0x0;var _0x1e00fa=_0xad95[_0x557bc1];return _0x1e00fa;};'use strict';var rp=require(_0x5ad9('0x0'));var url=require(_0x5ad9('0x1'));var logger=require(_0x5ad9('0x2'))('agi');module['exports']=function(_0x409d5b,_0x235c61){var _0x59809d={'method':'POST','uri':url[_0x5ad9('0x3')](_0x235c61['ndauth_url'],'/token'),'form':{'grant_type':'password','username':_0x235c61['username'],'password':_0x235c61[_0x5ad9('0x4')]},'json':!![]};return rp(_0x59809d)[_0x5ad9('0x5')](function(_0x2a0915){var _0x3d937a={'method':_0x5ad9('0x6'),'uri':url['resolve'](_0x235c61[_0x5ad9('0x7')],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x235c61['ndaactivity_type']||_0x5ad9('0x8'),'channelId':_0x5ad9('0x9'),'conversation':{'id':_0x409d5b[_0x5ad9('0xa')]},'from':{'id':_0x409d5b['callerid'],'name':_0x409d5b[_0x5ad9('0xb')]},'recipient':{'id':_0x409d5b[_0x5ad9('0xc')],'name':_0x409d5b['extension']},'text':_0x235c61[_0x5ad9('0xd')],'channelData':{}},'headers':{'Authorization':_0x5ad9('0xe')+_0x2a0915[_0x5ad9('0xf')]},'json':!![]};if(_0x235c61[_0x5ad9('0x10')]){_0x3d937a[_0x5ad9('0x11')][_0x5ad9('0x12')]['ProjectName']=_0x235c61['project'];}if(_0x235c61['ndagenerate_audio']=='1'){_0x3d937a[_0x5ad9('0x11')][_0x5ad9('0x12')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x5ad9('0x13')};}if(_0x235c61[_0x5ad9('0x14')]){_0x3d937a[_0x5ad9('0x11')][_0x5ad9('0x12')][_0x5ad9('0x15')]=_0x235c61[_0x5ad9('0x14')];if(_0x235c61[_0x5ad9('0x16')]){_0x3d937a[_0x5ad9('0x11')][_0x5ad9('0x12')][_0x5ad9('0x17')]=_0x235c61['custom_action_data'];}}logger[_0x5ad9('0x18')](JSON['stringify'](_0x3d937a));return rp(_0x3d937a);});};
\ No newline at end of file
+var _0x40ca=['POST','ndauth_url','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension','Bearer\x20','project','body','channelData','ProjectName','audio/wav','CustomAction','CustomActionData','custom_action_data','info','stringify','request-promise','agi','exports'];(function(_0xcaf3d8,_0x2af9a8){var _0x4d1cb9=function(_0x55e179){while(--_0x55e179){_0xcaf3d8['push'](_0xcaf3d8['shift']());}};_0x4d1cb9(++_0x2af9a8);}(_0x40ca,0x1a1));var _0xa40c=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x40ca[_0x2ec461];return _0x28603d;};'use strict';var rp=require(_0xa40c('0x0'));var url=require('url');var logger=require('../../../../../config/logger')(_0xa40c('0x1'));module[_0xa40c('0x2')]=function(_0x2c7760,_0x1f2731){var _0x5e774a={'method':_0xa40c('0x3'),'uri':url['resolve'](_0x1f2731[_0xa40c('0x4')],'/token'),'form':{'grant_type':_0xa40c('0x5'),'username':_0x1f2731['username'],'password':_0x1f2731[_0xa40c('0x5')]},'json':!![]};return rp(_0x5e774a)[_0xa40c('0x6')](function(_0x6fadf3){var _0x444497={'method':_0xa40c('0x3'),'uri':url['resolve'](_0x1f2731[_0xa40c('0x7')],_0xa40c('0x8')),'body':{'type':_0x1f2731[_0xa40c('0x9')]||_0xa40c('0xa'),'channelId':_0xa40c('0xb'),'conversation':{'id':_0x2c7760[_0xa40c('0xc')]},'from':{'id':_0x2c7760[_0xa40c('0xd')],'name':_0x2c7760[_0xa40c('0xe')]},'recipient':{'id':_0x2c7760[_0xa40c('0xf')],'name':_0x2c7760[_0xa40c('0x10')]},'text':_0x1f2731['text'],'channelData':{}},'headers':{'Authorization':_0xa40c('0x11')+_0x6fadf3['access_token']},'json':!![]};if(_0x1f2731[_0xa40c('0x12')]){_0x444497[_0xa40c('0x13')][_0xa40c('0x14')][_0xa40c('0x15')]=_0x1f2731[_0xa40c('0x12')];}if(_0x1f2731['ndagenerate_audio']=='1'){_0x444497[_0xa40c('0x13')][_0xa40c('0x14')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xa40c('0x16')};}if(_0x1f2731['custom_action']){_0x444497[_0xa40c('0x13')][_0xa40c('0x14')][_0xa40c('0x17')]=_0x1f2731['custom_action'];if(_0x1f2731['custom_action_data']){_0x444497[_0xa40c('0x13')][_0xa40c('0x14')][_0xa40c('0x18')]=_0x1f2731[_0xa40c('0x19')];}}logger[_0xa40c('0x1a')](JSON[_0xa40c('0x1b')](_0x444497));return rp(_0x444497);});};
\ No newline at end of file
index 452cc69..6dd10ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1555=['exports','./lib/api'];(function(_0x55530a,_0x26e6e8){var _0x4702f3=function(_0x2e83fe){while(--_0x2e83fe){_0x55530a['push'](_0x55530a['shift']());}};_0x4702f3(++_0x26e6e8);}(_0x1555,0x12d));var _0x5155=function(_0x3790af,_0xc5bd37){_0x3790af=_0x3790af-0x0;var _0x20b2d8=_0x1555[_0x3790af];return _0x20b2d8;};'use strict';var asr=require(_0x5155('0x0'));module[_0x5155('0x1')]=function(_0x33e2d2,_0x4da1e3,_0x28d5d7,_0x28c645){return asr(_0x33e2d2,_0x4da1e3,_0x28d5d7,_0x28c645);};
\ No newline at end of file
+var _0x39d2=['./lib/api','exports'];(function(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0x39d2,0x14e));var _0x239d=function(_0x3b19ea,_0x518b6b){_0x3b19ea=_0x3b19ea-0x0;var _0x40ece9=_0x39d2[_0x3b19ea];return _0x40ece9;};'use strict';var asr=require(_0x239d('0x0'));module[_0x239d('0x1')]=function(_0x59d9e1,_0x217df8,_0x53b347,_0x4fa799){return asr(_0x59d9e1,_0x217df8,_0x53b347,_0x4fa799);};
\ No newline at end of file
index c9c0c3b..0a11daa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x891c=['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.','isNil','open','message','close','lodash','moment','crypto','agi','exports','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','info','Open\x20Tilde\x20ASR\x20socket','send','stringify','createReadStream','data','EOS','error','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','Success.','terminate'];(function(_0x8a217e,_0x450bfc){var _0x3fc350=function(_0x55ed99){while(--_0x55ed99){_0x8a217e['push'](_0x8a217e['shift']());}};_0x3fc350(++_0x450bfc);}(_0x891c,0x1dc));var _0xc891=function(_0x3844ae,_0x3ac9d2){_0x3844ae=_0x3844ae-0x0;var _0x775f28=_0x891c[_0x3844ae];return _0x775f28;};'use strict';var BPromise=require('bluebird');var _=require(_0xc891('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xc891('0x1'));var crypto=require(_0xc891('0x2'));var logger=require('../../../../../../config/logger')(_0xc891('0x3'));module[_0xc891('0x4')]=function(_0x40e289,_0x5f5684,_0x49c160,_0x58fb0f){return new BPromise(function(_0x22b654,_0x19cbaa){logger['info']('Tilde\x20URI',_0x58fb0f||_0xc891('0x5'));var _0x45f603=new WebSocket(_0x58fb0f||_0xc891('0x5'),{'perMessageDeflate':![]});var _0x189bfc='';var _0x6d1ee9='0';var _0x5ca59f='1';var _0x5e50c5=_0xc891('0x6');function _0x199455(_0x5412d6){var _0x234f51=crypto['createHash'](_0xc891('0x7'));_0x234f51[_0xc891('0x8')](_0x5412d6);return _0x234f51[_0xc891('0x9')](_0xc891('0xa'));}function _0x39c98e(){try{logger[_0xc891('0xb')](_0xc891('0xc'));var _0x2f4fb1=moment()['unix']();var _0x12b287=_0x199455(_0x2f4fb1+_0x5f5684+_0x49c160);_0x45f603[_0xc891('0xd')](JSON[_0xc891('0xe')]({'appID':_0x5f5684,'timestamp':_0x2f4fb1,'appKey':_0x12b287}));var _0x510a49=fs[_0xc891('0xf')](_0x40e289);_0x510a49['on'](_0xc891('0x10'),function(_0x3fb411){_0x45f603[_0xc891('0xd')](_0x3fb411);});_0x510a49['on']('close',function(){_0x45f603[_0xc891('0xd')](_0xc891('0x11'));});}catch(_0x366ccb){logger[_0xc891('0x12')]('Tilde\x20ASR\x20send\x20error',JSON[_0xc891('0xe')](_0x366ccb));_0x45f603['terminate']();}}function _0x3090ff(_0x447f86){try{if(_0x447f86){var _0x4bc628=JSON[_0xc891('0x13')](_0x447f86);switch(_0x4bc628[_0xc891('0x14')]){case 0x0:if(_0x4bc628[_0xc891('0x15')]){if(_0x4bc628[_0xc891('0x15')][_0xc891('0x16')]){logger[_0xc891('0xb')](_0xc891('0x17'),JSON[_0xc891('0xe')](_0x4bc628[_0xc891('0x15')][_0xc891('0x18')]));_0x189bfc=_0x4bc628['result'][_0xc891('0x18')][0x0]['transcript'];_0x6d1ee9=_0x4bc628[_0xc891('0x15')]['hypotheses'][0x0][_0xc891('0x19')];_0x5ca59f='0';_0x5e50c5=_0xc891('0x1a');_0x45f603[_0xc891('0x1b')]();}}break;case 0x1:logger[_0xc891('0xb')](_0xc891('0x6'));_0x5ca59f='1';_0x5e50c5=_0xc891('0x6');break;case 0x2:logger['info'](_0xc891('0x1c'));_0x5ca59f='2';_0x5e50c5='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger['info'](_0xc891('0x1d'));_0x5ca59f='9';_0x5e50c5=_0xc891('0x1d');break;case 0xa:logger[_0xc891('0xb')]('Authentication\x20failed.');_0x5ca59f='10';_0x5e50c5=_0xc891('0x1e');break;case 0xb:logger[_0xc891('0xb')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x5ca59f='11';_0x5e50c5=_0xc891('0x1f');}}}catch(_0x27fe2f){logger[_0xc891('0x12')]('Tilde\x20ASR\x20parse\x20error',JSON[_0xc891('0xe')](_0x27fe2f));_0x45f603[_0xc891('0x1b')]();}}function _0xf913fb(){logger[_0xc891('0xb')]('Close\x20Tilde\x20ASR\x20socket');_0x22b654({'transcript':_0x189bfc,'confidence':_0x6d1ee9,'status':_0x5ca59f,'status_message':_0x5e50c5});}function _0x593885(_0x53b521){logger['error']('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xc891('0x20')](_0x53b521)){logger[_0xc891('0x12')](_['isObject'](_0x53b521)?JSON[_0xc891('0xe')](_0x53b521):_0x53b521);}}_0x45f603['on'](_0xc891('0x21'),_0x39c98e);_0x45f603['on'](_0xc891('0x22'),_0x3090ff);_0x45f603['on'](_0xc891('0x23'),_0xf913fb);_0x45f603['on'](_0xc891('0x12'),_0x593885);});};
\ No newline at end of file
+var _0xd471=['createReadStream','data','send','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','Success.','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','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','isNil','isObject','open','bluebird','moment','crypto','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix'];(function(_0x5a27e8,_0x492a2f){var _0x4e38f7=function(_0x2a4048){while(--_0x2a4048){_0x5a27e8['push'](_0x5a27e8['shift']());}};_0x4e38f7(++_0x492a2f);}(_0xd471,0x6c));var _0x1d47=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xd471[_0x13d07a];return _0x5ee0ee;};'use strict';var BPromise=require(_0x1d47('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x1d47('0x1'));var crypto=require(_0x1d47('0x2'));var logger=require('../../../../../../config/logger')(_0x1d47('0x3'));module[_0x1d47('0x4')]=function(_0x35ae3f,_0x1088dc,_0x374cfe,_0x380455){return new BPromise(function(_0x66a199,_0x30488b){logger[_0x1d47('0x5')](_0x1d47('0x6'),_0x380455||_0x1d47('0x7'));var _0x39b863=new WebSocket(_0x380455||_0x1d47('0x7'),{'perMessageDeflate':![]});var _0x3bb6ec='';var _0x214c04='0';var _0x41ce5e='1';var _0x334a29='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x5d1e26(_0x3b2308){var _0x3e3e83=crypto[_0x1d47('0x8')](_0x1d47('0x9'));_0x3e3e83[_0x1d47('0xa')](_0x3b2308);return _0x3e3e83[_0x1d47('0xb')](_0x1d47('0xc'));}function _0x1eb16a(){try{logger['info'](_0x1d47('0xd'));var _0xdecb48=moment()[_0x1d47('0xe')]();var _0x4676ec=_0x5d1e26(_0xdecb48+_0x1088dc+_0x374cfe);_0x39b863['send'](JSON['stringify']({'appID':_0x1088dc,'timestamp':_0xdecb48,'appKey':_0x4676ec}));var _0x8c653d=fs[_0x1d47('0xf')](_0x35ae3f);_0x8c653d['on'](_0x1d47('0x10'),function(_0x7099cc){_0x39b863[_0x1d47('0x11')](_0x7099cc);});_0x8c653d['on'](_0x1d47('0x12'),function(){_0x39b863[_0x1d47('0x11')](_0x1d47('0x13'));});}catch(_0x491bbf){logger[_0x1d47('0x14')](_0x1d47('0x15'),JSON[_0x1d47('0x16')](_0x491bbf));_0x39b863[_0x1d47('0x17')]();}}function _0x28daee(_0x43856b){try{if(_0x43856b){var _0xe47edf=JSON[_0x1d47('0x18')](_0x43856b);switch(_0xe47edf[_0x1d47('0x19')]){case 0x0:if(_0xe47edf['result']){if(_0xe47edf[_0x1d47('0x1a')][_0x1d47('0x1b')]){logger[_0x1d47('0x5')](_0x1d47('0x1c'),JSON[_0x1d47('0x16')](_0xe47edf[_0x1d47('0x1a')][_0x1d47('0x1d')]));_0x3bb6ec=_0xe47edf[_0x1d47('0x1a')][_0x1d47('0x1d')][0x0]['transcript'];_0x214c04=_0xe47edf[_0x1d47('0x1a')][_0x1d47('0x1d')][0x0]['likelihood'];_0x41ce5e='0';_0x334a29=_0x1d47('0x1e');_0x39b863[_0x1d47('0x17')]();}}break;case 0x1:logger[_0x1d47('0x5')](_0x1d47('0x1f'));_0x41ce5e='1';_0x334a29='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x1d47('0x5')](_0x1d47('0x20'));_0x41ce5e='2';_0x334a29=_0x1d47('0x20');break;case 0x9:logger['info'](_0x1d47('0x21'));_0x41ce5e='9';_0x334a29=_0x1d47('0x21');break;case 0xa:logger[_0x1d47('0x5')](_0x1d47('0x22'));_0x41ce5e='10';_0x334a29='Authentication\x20failed.';break;case 0xb:logger[_0x1d47('0x5')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x41ce5e='11';_0x334a29=_0x1d47('0x23');}}}catch(_0x49e4f8){logger[_0x1d47('0x14')](_0x1d47('0x24'),JSON['stringify'](_0x49e4f8));_0x39b863[_0x1d47('0x17')]();}}function _0x460dce(){logger[_0x1d47('0x5')](_0x1d47('0x25'));_0x66a199({'transcript':_0x3bb6ec,'confidence':_0x214c04,'status':_0x41ce5e,'status_message':_0x334a29});}function _0xb7c81a(_0x351a19){logger['error']('Error\x20Tilde\x20ASR\x20socket');if(!_[_0x1d47('0x26')](_0x351a19)){logger[_0x1d47('0x14')](_[_0x1d47('0x27')](_0x351a19)?JSON[_0x1d47('0x16')](_0x351a19):_0x351a19);}}_0x39b863['on'](_0x1d47('0x28'),_0x1eb16a);_0x39b863['on']('message',_0x28daee);_0x39b863['on'](_0x1d47('0x12'),_0x460dce);_0x39b863['on']('error',_0xb7c81a);});};
\ No newline at end of file
index cb38d79..518ef38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe1f=['exports'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0xbe1f,0x148));var _0xfbe1=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbe1f[_0x501510];return _0x1e6ee5;};var asr=require('./asr');module[_0xfbe1('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x0aff=['./asr'];(function(_0x430f53,_0x47ec74){var _0x179ebd=function(_0x330cbe){while(--_0x330cbe){_0x430f53['push'](_0x430f53['shift']());}};_0x179ebd(++_0x47ec74);}(_0x0aff,0x9f));var _0xf0af=function(_0x260859,_0x3cfcff){_0x260859=_0x260859-0x0;var _0x4b77f8=_0x0aff[_0x260859];return _0x4b77f8;};var asr=require(_0xf0af('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 6886bff..c599137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['ready','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','inherits','exports','util','net','events','./channel','call','emit','createServer','listening','connection','getConnections','error','E_AGI_SERVER_VOICE_DISABLED','destroy'];(function(_0x2f8c05,_0x551e3d){var _0x14cfde=function(_0x282d66){while(--_0x282d66){_0x2f8c05['push'](_0x2f8c05['shift']());}};_0x14cfde(++_0x551e3d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var util=require(_0x0a9e('0x0'));var net=require(_0x0a9e('0x1'));var EventEmitter=require(_0x0a9e('0x2'))['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x0a9e('0x3'));var AGIServer=function(_0x4ce2f1,_0x333808,_0x432180){var _0x2ab90b=this;var _0x991246=null;var _0x981158=0x0;if(!_0x4ce2f1)_0x4ce2f1=0x11dd;if(!_0x333808)_0x333808='127.0.0.1';EventEmitter[_0x0a9e('0x4')](_0x2ab90b);function _0x441e3a(){if(!_0x4ce2f1){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x991246=net[_0x0a9e('0x6')]();_0x991246['listen'](_0x4ce2f1,_0x333808);_0x991246['on']('listening',function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x7'));});_0x991246['on'](_0x0a9e('0x8'),function(_0x3ab53f){_0x991246[_0x0a9e('0x9')](function(_0xbd1168,_0x4a4c56){if(_0xbd1168){_0x2ab90b['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0xbd1168));}else if(_0x432180&&_0x432180<0x0){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError(_0x0a9e('0xb')));_0x3ab53f[_0x0a9e('0xc')]();}else if(_0x432180&&_0x432180>0x0&&_0x432180<_0x4a4c56){_0x981158+=0x1;_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x981158));_0x3ab53f[_0x0a9e('0xc')]();}else{var _0x239b12=new AGIChannel(_0x3ab53f);_0x239b12['on'](_0x0a9e('0xd'),function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x8'),_0x239b12);});}});});_0x991246['on'](_0x0a9e('0xa'),function(_0x52a03d){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError(_0x0a9e('0xe'),_0x52a03d['code']));});_0x991246['on'](_0x0a9e('0xf'),function(){_0x2ab90b[_0x0a9e('0x5')]('close',new AGIError(_0x0a9e('0x10')));});}process['nextTick'](function(){_0x441e3a();});};util[_0x0a9e('0x11')](AGIServer,EventEmitter);module[_0x0a9e('0x12')]=function(_0x106033,_0x205fd6,_0x31b1ca){return new AGIServer(_0x106033,_0x205fd6,_0x31b1ca);};
\ No newline at end of file
+var _0xe706=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','exports','util','net','events','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x4f4e4b,_0x46ea73){var _0x23a628=function(_0x56791){while(--_0x56791){_0x4f4e4b['push'](_0x4f4e4b['shift']());}};_0x23a628(++_0x46ea73);}(_0xe706,0xa3));var _0x6e70=function(_0x22c393,_0x1f2389){_0x22c393=_0x22c393-0x0;var _0x161580=_0xe706[_0x22c393];return _0x161580;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
index 3b5ccc1..50ffa1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2136=['AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','apiKey','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawBody','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','getSoundPath','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','createSquareMessage','createCmContact','isNil','isEmpty','lastName','phone','list_id','scheduledAt','callback','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agent','agentLogout','internal','%s/%s@from-sip/n','LOCAL','agentLogin','exec','replace','googleCloudTTS','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','restAPI','timeout','number','includes','POST','PUT','method','toUpperCase','parse','rawHeaders','computedVariables','uri','render','url','stringify','body','statusCode','statusMessage','headers','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','clear','agicommand','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','length','saveRestApiResult','%s.%s','isArray','split','replaceAll','extra','result','setVariable','maxRetry','retry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','no\x20text\x20configured','MRCPSynth','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','delay','sync','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','database','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','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','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','bot','DIALOGFLOW_%s','speech','out','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','streamFile','unlink','.wav','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','hiddendigitsnum','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','message','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','appsecret','generate','beep','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','condition','no\x20condition\x20configured','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','NOBEEP','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','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','menu','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','Response:','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','\x22%s\x22\x20<%s>','email','Smtp','user','bcc','subject','template_id','sendMail\x20message','account_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','answer','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','arg_1','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project'];(function(_0x55a97a,_0x5efc58){var _0x462296=function(_0x2e6cf2){while(--_0x2e6cf2){_0x55a97a['push'](_0x55a97a['shift']());}};_0x462296(++_0x5efc58);}(_0x2136,0x1eb));var _0x6213=function(_0x582e18,_0x4fd856){_0x582e18=_0x582e18-0x0;var _0x445d03=_0x2136[_0x582e18];return _0x445d03;};'use strict';var fs=require('fs');var util=require(_0x6213('0x0'));var _=require(_0x6213('0x1'));var sh=require(_0x6213('0x2'));var odbc=require(_0x6213('0x3'))();var rs=require(_0x6213('0x4'));var moment=require(_0x6213('0x5'));var Mustache=require(_0x6213('0x6'));var rp=require(_0x6213('0x7'));var logger=require(_0x6213('0x8'))(_0x6213('0x9'));var config=require('../../config/environment');var shared=require(_0x6213('0xa'));var scripts=require(_0x6213('0xb'));var FILES_PATH=_0x6213('0xc');var recursiveMapAttributes=['rawHeaders',_0x6213('0xd')];var verticesWithRetry=['menu',_0x6213('0xe'),_0x6213('0xf')];var AGIVertices=function(_0x551a16,_0x49c38c,_0x275ba8){this[_0x6213('0x10')]=_0x551a16;this[_0x6213('0x11')]=_0x49c38c;this[_0x6213('0x12')]=_0x275ba8;};AGIVertices[_0x6213('0x13')][_0x6213('0x14')]=function(_0x3d3f03,_0x58ab3f){this[_0x6213('0x11')][_0x6213('0x15')](_0x3d3f03)[_0x6213('0x16')](function(_0x5d665a){_0x58ab3f(null,_0x5d665a?_0x5d665a[_0x6213('0x17')]:![]);})[_0x6213('0x18')](function(_0x3a7c02){_0x58ab3f(_0x3a7c02);});};AGIVertices[_0x6213('0x13')][_0x6213('0x19')]=function(_0x48e2d7,_0x900cb3){this['rpc'][_0x6213('0x1a')](_0x48e2d7)[_0x6213('0x16')](function(_0x26335){_0x900cb3(null,_0x26335?_0x26335['name']:![]);})[_0x6213('0x18')](function(_0x888ae0){_0x900cb3(_0x888ae0);});};AGIVertices['prototype']['getSquareProject']=function(_0x159908,_0x208557){this['rpc'][_0x6213('0x1b')](_0x159908)[_0x6213('0x16')](function(_0x3e5ece){_0x208557(null,_0x3e5ece?_0x3e5ece['name']:![]);})[_0x6213('0x18')](function(_0x4ff45b){_0x208557(_0x4ff45b);});};AGIVertices[_0x6213('0x13')][_0x6213('0x1c')]=function(_0x563bf4,_0xe8cc03){this['rpc'][_0x6213('0x1d')](_0x563bf4)[_0x6213('0x16')](function(_0x1a9e97){_0xe8cc03(null,_0x1a9e97?_0x1a9e97[_0x6213('0x1e')]:![]);})[_0x6213('0x18')](function(_0x438f19){_0xe8cc03(_0x438f19);});};AGIVertices[_0x6213('0x13')][_0x6213('0x1f')]=function(_0x363584,_0x25dcac){this['rpc'][_0x6213('0x20')](_0x363584)[_0x6213('0x16')](function(_0x103ebe){_0x25dcac(null,_0x103ebe?_0x103ebe[_0x6213('0x17')]:![]);})[_0x6213('0x18')](function(_0x154cd3){_0x25dcac(_0x154cd3);});};AGIVertices[_0x6213('0x13')][_0x6213('0x21')]=function(_0x229fb0,_0x38cbba){this[_0x6213('0x11')][_0x6213('0x22')](_0x229fb0)[_0x6213('0x16')](function(_0x5407a6){_0x38cbba(null,_0x5407a6?_0x5407a6['name']:![]);})[_0x6213('0x18')](function(_0x11881d){_0x38cbba(_0x11881d);});};AGIVertices[_0x6213('0x13')][_0x6213('0x23')]=function(_0x3f961a,_0x3b4735){var _0x363af0=this;this[_0x6213('0x11')]['getSoundById'](_0x3f961a)[_0x6213('0x16')](function(_0x14aa5c){_0x3b4735(null,_0x14aa5c?_0x363af0['getSoundPath'](_0x14aa5c[_0x6213('0x24')]):![]);})[_0x6213('0x18')](function(_0x4ee434){_0x3b4735(_0x4ee434);});};AGIVertices['prototype'][_0x6213('0x25')]=function(_0x2df3ec,_0x1289c4){this[_0x6213('0x11')][_0x6213('0x26')](_0x2df3ec)['then'](function(_0x340daf){_0x1289c4(null,_0x340daf?_0x340daf:![]);})[_0x6213('0x18')](function(_0x144222){_0x1289c4(_0x144222);});};AGIVertices[_0x6213('0x13')][_0x6213('0x27')]=function(_0x2f9d6,_0x3da972,_0x4307a2){this[_0x6213('0x12')][_0x6213('0x27')](_0x2f9d6,_0x3da972)[_0x6213('0x16')](function(){_0x4307a2(null);})['catch'](function(_0x3ec389){_0x4307a2(_0x3ec389);});};AGIVertices[_0x6213('0x13')][_0x6213('0x28')]=function(_0x31e7fb,_0xc79dd2){this[_0x6213('0x11')][_0x6213('0x29')](_0x31e7fb)['then'](function(_0x16990f){if(_0x16990f){if(_0x16990f[_0x6213('0x2a')]){_0xc79dd2(null,[_0x16990f[_0x6213('0x2b')]]);}else{_0xc79dd2(null,_[_0x6213('0x2c')](_0x16990f[_0x6213('0x2d')],_0x6213('0x2b')));}}else{_0xc79dd2(null,![]);}})[_0x6213('0x18')](function(_0x5dc000){_0xc79dd2(_0x5dc000);});};AGIVertices['prototype'][_0x6213('0x2e')]=function(_0x42ab50){return util[_0x6213('0x2f')](_0x6213('0x30'),FILES_PATH,_0x42ab50);};AGIVertices[_0x6213('0x13')][_0x6213('0x31')]=function(_0x2a6e18,_0x5907fc,_0x4d32b8){odbc[_0x6213('0x32')](_0x2a6e18,function(_0x371cb3){if(_0x371cb3){logger[_0x6213('0x33')](_0x6213('0x34'),_0x371cb3);_0x4d32b8(_0x371cb3);}else{logger[_0x6213('0x35')](_0x6213('0x36'));odbc[_0x6213('0x37')](_0x5907fc,function(_0x5e5324,_0x56e11f){if(_0x5e5324){logger[_0x6213('0x35')](_0x6213('0x38'),_0x5907fc);_0x4d32b8(_0x5e5324);}else{logger[_0x6213('0x35')](_0x6213('0x39'),_0x5907fc);odbc[_0x6213('0x3a')](function(_0x511242){if(_0x511242){logger[_0x6213('0x33')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x511242);}_0x4d32b8(null,_0x56e11f);});}});}});};AGIVertices[_0x6213('0x13')][_0x6213('0x3b')]=function(_0x56f60c,_0x167d6c){this[_0x6213('0x11')][_0x6213('0x3c')](_0x56f60c)[_0x6213('0x16')](function(_0xda4b67){_0x167d6c(null,_0xda4b67?_0xda4b67:![]);})[_0x6213('0x18')](function(_0x1e575b){_0x167d6c(_0x1e575b);});};AGIVertices['prototype'][_0x6213('0x3d')]=function(_0x4a9bf6,_0x42230f){this[_0x6213('0x11')]['createSmsMessage'](_0x4a9bf6)[_0x6213('0x16')](function(_0x3d0b00){_0x42230f(null,_0x3d0b00);})['catch'](function(_0x36c53d){_0x42230f(_0x36c53d);});};AGIVertices[_0x6213('0x13')]['createSquareDetailsReport']=function(_0x6d76e5,_0x559bba,_0x1bebad){this['rpc'][_0x6213('0x3e')]({'uniqueid':this[_0x6213('0x10')][_0x6213('0x3f')],'node':_0x6d76e5['label'],'application':_0x6d76e5['agicommand'],'data':_0x559bba||null,'project_name':this[_0x6213('0x10')]['arg_1'],'callerid':this[_0x6213('0x10')][_0x6213('0x40')]})[_0x6213('0x16')](function(_0x29e36c){if(_0x1bebad){_0x1bebad(null,_0x29e36c);}})['catch'](function(_0x2178cb){if(_0x1bebad){_0x1bebad(_0x2178cb);}});};AGIVertices[_0x6213('0x13')][_0x6213('0x41')]=function(_0x21a3cd,_0x234543,_0x2b6edd,_0x39a613){this['rpc'][_0x6213('0x41')]({'uniqueid':this[_0x6213('0x10')]['uniqueid'],'callerid':this['channel'][_0x6213('0x40')],'calleridname':this['channel'][_0x6213('0x42')],'context':this[_0x6213('0x10')][_0x6213('0x43')],'extension':this[_0x6213('0x10')][_0x6213('0x44')],'priority':this[_0x6213('0x10')][_0x6213('0x45')],'accountcode':this[_0x6213('0x10')][_0x6213('0x46')],'dnid':this['channel']['dnid'],'projectName':this[_0x6213('0x10')]['arg_1'],'saveName':_0x234543,'filename':_0x21a3cd['file']||_0x234543,'savePath':_0x2b6edd})['then'](function(_0x55a065){_0x39a613(null,_0x55a065);})[_0x6213('0x18')](function(_0x37abee){_0x39a613(_0x37abee);});};AGIVertices[_0x6213('0x13')]['createSquareMessage']=function(_0x428b03,_0x3bf444,_0x2c421c,_0x2c2301,_0x1b1d53){this[_0x6213('0x11')][_0x6213('0x47')]({'uniqueid':this[_0x6213('0x10')][_0x6213('0x3f')],'body':_0x428b03,'direction':_0x3bf444,'providerName':_0x2c421c,'providerResponse':_0x2c2301})['then'](function(_0x4ccec8){if(_0x1b1d53){_0x1b1d53(null,_0x4ccec8);}})[_0x6213('0x18')](function(_0x1b825a){if(_0x1b1d53){_0x1b1d53(_0x1b825a);}});};AGIVertices['prototype'][_0x6213('0x48')]=function(_0x56b872,_0x536987){this[_0x6213('0x11')][_0x6213('0x48')]({'firstName':_['isEmpty'](_0x56b872[_0x6213('0x17')])||_[_0x6213('0x49')](_0x56b872['name'])?'callback_'+Math['random']():_0x56b872[_0x6213('0x17')],'lastName':_[_0x6213('0x4a')](_0x56b872[_0x6213('0x4b')])||_['isNil'](_0x56b872['lastName'])?null:_0x56b872[_0x6213('0x4b')],'phone':_0x56b872[_0x6213('0x4c')],'ListId':_0x56b872[_0x6213('0x4d')],'scheduledat':_0x56b872[_0x6213('0x4e')],'callbackUniqueid':this[_0x6213('0x10')][_0x6213('0x3f')],'tags':_0x6213('0x4f'),'description':'Callback\x20scheduled\x20at\x20'+_0x56b872['scheduledAt'][_0x6213('0x50')](),'priority':_0x56b872[_0x6213('0x51')]})[_0x6213('0x16')](function(_0xc08241){_0x536987(null,_0xc08241);})[_0x6213('0x18')](function(_0x5c048f){_0x536987(_0x5c048f);});};AGIVertices[_0x6213('0x13')][_0x6213('0x52')]=function(_0x420876,_0x1eb6f0){this[_0x6213('0x11')][_0x6213('0x53')](_0x420876)['then'](function(_0x4aa446){_0x1eb6f0(null,_0x4aa446?_0x4aa446[_0x6213('0x17')]:![]);})[_0x6213('0x18')](function(_0x194395){_0x1eb6f0(_0x194395);});};AGIVertices[_0x6213('0x13')][_0x6213('0x54')]=function(_0x2abaa6,_0x24ca0f,_0x4aab30){var _0x5c2174={'role':'agent'};_0x5c2174[_0x2abaa6]=this[_0x6213('0x10')][_0x6213('0x40')];this[_0x6213('0x11')]['agentPause'](_0x5c2174,_0x24ca0f,this[_0x6213('0x10')]['uniqueid'])[_0x6213('0x16')](function(_0x18313f){_0x4aab30(null,_['isNil'](_0x18313f)?![]:!![]);})[_0x6213('0x18')](function(_0x2184c0){logger['error'](_0x2184c0);_0x4aab30(null,![]);});};AGIVertices[_0x6213('0x13')][_0x6213('0x55')]=function(_0x302996,_0x3b25ee){var _0x39e12b={'role':_0x6213('0x56')};_0x39e12b[_0x302996]=this['channel'][_0x6213('0x40')];this[_0x6213('0x11')][_0x6213('0x55')](_0x39e12b)[_0x6213('0x16')](function(_0x321594){_0x3b25ee(null,_[_0x6213('0x49')](_0x321594)?![]:!![]);})[_0x6213('0x18')](function(_0x8b8277){logger[_0x6213('0x33')](_0x8b8277);_0x3b25ee(null,![]);});};AGIVertices[_0x6213('0x13')][_0x6213('0x57')]=function(_0x5bf8b0,_0x447e4e){var _0x16561e={'role':'agent'};_0x16561e[_0x5bf8b0]=this[_0x6213('0x10')][_0x6213('0x40')];this[_0x6213('0x11')][_0x6213('0x57')](_0x16561e)[_0x6213('0x16')](function(_0x2f8a3a){_0x447e4e(null,_['isNil'](_0x2f8a3a)?![]:!![]);})[_0x6213('0x18')](function(_0x59d86e){logger['error'](_0x59d86e);_0x447e4e(null,![]);});};AGIVertices[_0x6213('0x13')]['agentLogin']=function(_0x110be5,_0x3c11b4){var _0x329550={'role':_0x6213('0x56')};_0x329550[_0x110be5]=this['channel'][_0x6213('0x40')];var _0x1ed829=_0x110be5!=_0x6213('0x58')?util[_0x6213('0x2f')](_0x6213('0x59'),_0x6213('0x5a'),this[_0x6213('0x10')][_0x6213('0x40')]):undefined;this[_0x6213('0x11')][_0x6213('0x5b')](_0x329550,_0x1ed829)[_0x6213('0x16')](function(_0xa4feb){_0x3c11b4(null,_[_0x6213('0x49')](_0xa4feb)?![]:!![]);})[_0x6213('0x18')](function(_0x423251){logger[_0x6213('0x33')](_0x423251);_0x3c11b4(null,![]);});};AGIVertices[_0x6213('0x13')]['shellCommand']=function(_0x2e92c6,_0x440830){sh[_0x6213('0x5c')](_['trim'](_0x2e92c6),function(_0x5846fe,_0x37c6b4){var _0x54878d=_0x37c6b4[_0x6213('0x5d')](/(\r\n|\n|\r)/gm,'');_0x440830(null,_0x54878d);});};AGIVertices['prototype'][_0x6213('0x5e')]=function(_0x4a42c6,_0x5eb007){scripts[_0x6213('0x5e')](_0x4a42c6['apiKey'],_0x4a42c6[_0x6213('0x5f')]||_0x6213('0x60'),_0x4a42c6['text'],_0x4a42c6[_0x6213('0x61')]||_0x6213('0x62'),_0x4a42c6[_0x6213('0x63')]||_0x6213('0x64'),_0x4a42c6[_0x6213('0x65')]||'MP3')[_0x6213('0x16')](function(_0xdfb9ed){_0x5eb007(null,_0xdfb9ed);})[_0x6213('0x18')](function(_0x21cc3a){_0x5eb007(_0x21cc3a);});};AGIVertices[_0x6213('0x13')][_0x6213('0x66')]=function(_0x4bc2f4,_0x33e8d3){scripts[_0x6213('0x66')](_0x4bc2f4[_0x6213('0x60')],_0x4bc2f4['google_tts_language']||'en',0x1)[_0x6213('0x16')](function(_0x587fde){_0x33e8d3(null,_0x587fde);})['catch'](function(_0x51991b){_0x33e8d3(_0x51991b);});};AGIVertices[_0x6213('0x13')][_0x6213('0x67')]=function(_0xbdd3ef,_0x126e08){var _0x2d420a={'uri':_0xbdd3ef['url'],'method':_0xbdd3ef['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0xbdd3ef[_0x6213('0x68')])===_0x6213('0x69')&&parseInt(_0xbdd3ef[_0x6213('0x68')])>=0x1?parseInt(_0xbdd3ef['timeout'])*0x3e8:0x5*0x3e8};if(_[_0x6213('0x6a')]([_0x6213('0x6b'),_0x6213('0x6c')],_0x2d420a[_0x6213('0x6d')][_0x6213('0x6e')]())){try{_0x2d420a['body']=_0xbdd3ef[_0x6213('0xd')]?JSON['parse'](_0xbdd3ef[_0x6213('0xd')]):{};}catch(_0x53881c){logger[_0x6213('0x33')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x53881c);}}try{_0x2d420a['headers']=_0xbdd3ef['rawHeaders']?JSON[_0x6213('0x6f')](_0xbdd3ef[_0x6213('0x70')]):{};}catch(_0x513ad6){logger[_0x6213('0x33')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x513ad6);}if(_0xbdd3ef[_0x6213('0x71')]){try{var _0x16b53b=require(_0xbdd3ef['computedVariables'])['sync'](this,_0x2d420a);_0x2d420a[_0x6213('0x72')]=Mustache[_0x6213('0x73')](_0xbdd3ef[_0x6213('0x74')],_0x16b53b,{},['$$','$$']);if(_0x2d420a['headers']){_0x2d420a['headers']=JSON[_0x6213('0x6f')](Mustache['render'](JSON[_0x6213('0x75')](_0x2d420a['headers']),_0x16b53b,{},['$$','$$']));}if(_0x2d420a[_0x6213('0x76')]){_0x2d420a[_0x6213('0x76')]=JSON['parse'](Mustache['render'](JSON['stringify'](_0x2d420a['body']),_0x16b53b,{},['$$','$$']));}}catch(_0x23f0f6){logger['error']('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x23f0f6);}}rp(_0x2d420a)[_0x6213('0x16')](function(_0x2d587a){var _0x1e0ede={'statusCode':_0x2d587a[_0x6213('0x77')]||0xc8,'statusMessage':_0x2d587a[_0x6213('0x78')]||'OK','headers':_0x2d587a[_0x6213('0x79')]||{},'body':_0x2d587a[_0x6213('0x76')]||{}};_0x126e08(null,_0x1e0ede);})[_0x6213('0x18')](function(_0x2e0d14){var _0xdab4aa={'statusCode':_0x2e0d14['statusCode']||0x1f4,'statusMessage':_0x2e0d14['message']||_0x6213('0x7a'),'headers':_0x2e0d14[_0x6213('0x7b')]['headers']||{},'body':_0x2e0d14['options'][_0x6213('0x76')]||{}};_0x126e08(null,_0xdab4aa);});};AGIVertices[_0x6213('0x13')]['googleDialogflow']=function(_0x27ec02,_0x3c96ff){scripts[_0x6213('0x7c')](this[_0x6213('0x10')][_0x6213('0x3f')],_0x27ec02[_0x6213('0x7d')],_0x27ec02[_0x6213('0x60')],_0x27ec02[_0x6213('0x7e')]||'en')[_0x6213('0x16')](function(_0x200d6e){_0x3c96ff(null,_0x200d6e);})[_0x6213('0x18')](function(_0x473143){_0x3c96ff(_0x473143);});};AGIVertices[_0x6213('0x13')][_0x6213('0x7f')]=function(_0x22e79a,_0x1f13c4){scripts['googleDialogflowV2'](this[_0x6213('0x10')][_0x6213('0x3f')],_0x22e79a[_0x6213('0x80')],_0x22e79a['client_email'],_0x22e79a[_0x6213('0x81')],_0x22e79a[_0x6213('0x60')],_0x22e79a[_0x6213('0x82')]||'en')[_0x6213('0x16')](function(_0x15f0ac){_0x1f13c4(null,_0x15f0ac);})[_0x6213('0x18')](function(_0x2c0224){_0x1f13c4(_0x2c0224);});};AGIVertices['prototype']['sestekNDA']=function(_0x3ac1fc,_0x1e4145){scripts[_0x6213('0x83')](this['channel'],_0x3ac1fc)[_0x6213('0x16')](function(_0x3bc480){_0x1e4145(null,_0x3bc480);})[_0x6213('0x18')](function(_0x12cea6){_0x1e4145(_0x12cea6);});};AGIVertices['prototype']['ispeechTTS']=function(_0x1a55be,_0x4b361e){scripts[_0x6213('0x84')](_0x1a55be['key'],_0x1a55be[_0x6213('0x60')],_0x1a55be[_0x6213('0x85')]||_0x6213('0x62'),_0x1a55be[_0x6213('0x86')])[_0x6213('0x16')](function(_0x3fa313){_0x4b361e(null,_0x3fa313);})[_0x6213('0x18')](function(_0x1f1f12){_0x4b361e(_0x1f1f12);});};AGIVertices[_0x6213('0x13')][_0x6213('0x87')]=function(_0x5ed7f7,_0x1b21cb,_0x2879dc){scripts['ispeechASR'](_0x1b21cb,_0x5ed7f7['key'],_0x5ed7f7[_0x6213('0x88')]||_0x6213('0x62'),this[_0x6213('0x89')](_0x5ed7f7[_0x6213('0x8a')])?_0x5ed7f7[_0x6213('0x8a')]:undefined)[_0x6213('0x16')](function(_0xa1fa98){_0x2879dc(null,_0xa1fa98);})[_0x6213('0x18')](function(_0x279e22){_0x2879dc(_0x279e22);});};AGIVertices[_0x6213('0x13')][_0x6213('0x8b')]=function(_0x1bef85,_0x4e9938){scripts['awsPolly'](_0x1bef85[_0x6213('0x8c')],_0x1bef85['aws_secret_access_key'],_0x1bef85[_0x6213('0x8d')],_0x1bef85[_0x6213('0x8e')]||_0x6213('0x8f'),_0x1bef85[_0x6213('0x60')],_0x1bef85[_0x6213('0x90')]||_0x6213('0x60'))[_0x6213('0x16')](function(_0x4ae16d){_0x4e9938(null,_0x4ae16d);})[_0x6213('0x18')](function(_0x208ecb){_0x4e9938(_0x208ecb);});};AGIVertices[_0x6213('0x13')]['awsLex']=function(_0x59ec52,_0x31bad1){scripts[_0x6213('0x91')](this[_0x6213('0x10')]['uniqueid'],_0x59ec52[_0x6213('0x8c')],_0x59ec52[_0x6213('0x92')],_0x59ec52[_0x6213('0x93')],_0x59ec52[_0x6213('0x60')],_0x59ec52[_0x6213('0x94')])['then'](function(_0x434716){_0x31bad1(null,_0x434716);})[_0x6213('0x18')](function(_0x4d9ef6){_0x31bad1(_0x4d9ef6);});};AGIVertices[_0x6213('0x13')]['googleASR']=function(_0xb344ce,_0x326c3e,_0x539638){scripts[_0x6213('0x95')](_0x326c3e,_0xb344ce[_0x6213('0x7d')],_0xb344ce[_0x6213('0x96')]||'en-US')[_0x6213('0x16')](function(_0x5a0188){_0x539638(null,_0x5a0188);})[_0x6213('0x18')](function(_0x29bedc){_0x539638(_0x29bedc);});};AGIVertices['prototype']['tildeASR']=function(_0x2304ea,_0x251ca4,_0x2268a4){scripts[_0x6213('0x97')](_0x251ca4,_0x2304ea['appid'],_0x2304ea['appsecret'],_0x2304ea[_0x6213('0x72')])[_0x6213('0x16')](function(_0x27c951){_0x2268a4(null,_0x27c951);})[_0x6213('0x18')](function(_0x30439b){_0x2268a4(_0x30439b);});};AGIVertices[_0x6213('0x13')][_0x6213('0x98')]=function(_0x37bb9a){var _0x1185fe=_[_0x6213('0x6a')](verticesWithRetry,_0x37bb9a[_0x6213('0x99')])?_0x37bb9a:_[_0x6213('0x9a')](_0x37bb9a);for(var _0x26ddc1 in _0x1185fe){if(_0x1185fe[_0x6213('0x9b')](_0x26ddc1)){if(_0x1185fe[_0x26ddc1]&&_[_0x6213('0x9c')](_0x1185fe[_0x26ddc1])){if(_[_0x6213('0x6a')](recursiveMapAttributes,_0x26ddc1)){_0x1185fe[_0x26ddc1]=this[_0x6213('0x9d')](_0x1185fe[_0x26ddc1]);}else{_0x1185fe[_0x26ddc1]=this[_0x6213('0x9e')](_0x1185fe[_0x26ddc1]);}}}}return _0x1185fe;};AGIVertices[_0x6213('0x13')][_0x6213('0x9f')]=function(_0x4f5473){for(var _0x1ab2e9 in _0x4f5473){if(_0x4f5473[_0x6213('0x9b')](_0x1ab2e9)){if(_[_0x6213('0xa0')](_0x4f5473[_0x1ab2e9])){this[_0x6213('0x9f')](_0x4f5473[_0x1ab2e9]);}else if(_['isArray'](_0x4f5473[_0x1ab2e9])){for(var _0x2b89f7=0x0;_0x2b89f7<_0x4f5473[_0x1ab2e9][_0x6213('0xa1')];_0x2b89f7++){this[_0x6213('0x9f')](_0x4f5473[_0x1ab2e9][_0x2b89f7]);}}else if(_[_0x6213('0x9c')](_0x4f5473[_0x1ab2e9])){_0x4f5473[_0x1ab2e9]=this[_0x6213('0x9e')](_0x4f5473[_0x1ab2e9]);}}}};AGIVertices[_0x6213('0x13')][_0x6213('0xa2')]=function(_0x589b90,_0x2c033d){for(var _0x51e20f in _0x589b90){if(_0x589b90[_0x6213('0x9b')](_0x51e20f)){if(_[_0x6213('0xa0')](_0x589b90[_0x51e20f])){if(!_[_0x6213('0x4a')](_0x589b90[_0x51e20f])){this[_0x6213('0xa2')](_0x589b90[_0x51e20f],util[_0x6213('0x2f')](_0x6213('0xa3'),_0x2c033d,_0x51e20f));}}else if(_[_0x6213('0xa4')](_0x589b90[_0x51e20f])){for(var _0x3985e8=0x0;_0x3985e8<_0x589b90[_0x51e20f][_0x6213('0xa1')];_0x3985e8++){this[_0x6213('0xa2')](_0x589b90[_0x51e20f][_0x3985e8],util[_0x6213('0x2f')](_0x6213('0xa3'),_0x2c033d,_0x51e20f+'['+_0x3985e8+']'));}}else{if(!_['isNil'](_0x589b90[_0x51e20f])){this[_0x6213('0x10')]['setVariable'](util[_0x6213('0x2f')](_0x6213('0xa3'),_0x2c033d,_0x51e20f),_0x589b90[_0x51e20f]);}}}}};AGIVertices['prototype'][_0x6213('0x9d')]=function(_0x36003e){try{var _0x4e9aba=JSON[_0x6213('0x6f')](_0x36003e);this[_0x6213('0x9f')](_0x4e9aba);return JSON['stringify'](_0x4e9aba);}catch(_0xa048c5){return this[_0x6213('0x9e')](_0x36003e);}};AGIVertices[_0x6213('0x13')]['replaceAllVariables']=function(_0x4c823d){var _0x1fc595=_0x4c823d[_0x6213('0xa5')]('{');for(var _0xe192bf=0x1;_0xe192bf<_0x1fc595['length'];_0xe192bf+=0x1){var _0x250335=_0x1fc595[_0xe192bf][_0x6213('0xa5')]('}');if(_0x250335['length']>0x1){_0x4c823d=_0x4c823d[_0x6213('0xa6')]('{'+_0x250335[0x0]+'}',this[_0x6213('0x10')]['getVariable'](_0x250335[0x0])[_0x6213('0xa7')]||_0x250335[0x0]);}}if(_0x1fc595[_0x6213('0xa1')]===0x1){return _0x4c823d[_0x6213('0x50')]();}return this[_0x6213('0x9e')](_0x4c823d);};AGIVertices[_0x6213('0x13')]['getAndSetVariable']=function(_0x1520f7,_0x4b8cf5){var _0x5d176e=this[_0x6213('0x10')][_0x6213('0x14')](_0x1520f7);if(_0x5d176e[_0x6213('0xa8')]===-0x1){return _0x5d176e;}logger[_0x6213('0x35')](util[_0x6213('0x2f')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x4b8cf5,_0x5d176e[_0x6213('0xa7')]));return this[_0x6213('0x10')][_0x6213('0xa9')](_0x4b8cf5,_0x5d176e[_0x6213('0xa7')]);};AGIVertices[_0x6213('0x13')][_0x6213('0x89')]=function(_0x4a4d0a){return _0x4a4d0a&&_0x4a4d0a!=='0'&&_0x4a4d0a!=='-1'&&_0x4a4d0a!=='';};AGIVertices[_0x6213('0x13')][_0x6213('0xaa')]=function(_0x1d1d0a){this['createSquareDetailsReport']['sync'](this,_0x1d1d0a,'-');_0x1d1d0a[_0x6213('0xab')]=_0x1d1d0a[_0x6213('0xaa')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x6213('0x13')]['mrcpsynth']=function(_0x163db3){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0xac'),_0x163db3[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x163db3['text'])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0xaf'));}var _0x29540d='\x22'+_0x163db3[_0x6213('0x60')]+'\x22';if(this[_0x6213('0x89')](_0x163db3[_0x6213('0x7b')])){_0x29540d+=','+_0x163db3[_0x6213('0x7b')];}var _0x501e41=this[_0x6213('0x10')]['exec'](_0x6213('0xb0'),_0x29540d);if(_0x501e41['result']===-0x1){return _0x501e41;}return this['channel']['noop'](util[_0x6213('0x2f')]('Executed\x20command\x20MRCPSynth\x20%s',_0x29540d));};AGIVertices[_0x6213('0x13')][_0x6213('0xb1')]=function(_0x1797f1){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0xb2'),_0x1797f1[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x1797f1[_0x6213('0xb3')])){return this[_0x6213('0x10')][_0x6213('0xae')]('no\x20grammar\x20configured');}var _0x45e4fe=_0x1797f1[_0x6213('0xb3')];if(this[_0x6213('0x89')](_0x1797f1[_0x6213('0x7b')])){_0x45e4fe+=','+_0x1797f1[_0x6213('0x7b')];}var _0x516eda=this[_0x6213('0x10')][_0x6213('0x5c')](_0x6213('0xb4'),_0x45e4fe);if(_0x516eda[_0x6213('0xa8')]===-0x1){return _0x516eda;}var _0x5bc4de=this[_0x6213('0xb5')](_0x6213('0xb6'),_0x6213('0xb7'));if(_0x5bc4de[_0x6213('0xa8')]===-0x1){return _0x5bc4de;}var _0x2f00cd=this[_0x6213('0xb5')]('RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT');if(_0x2f00cd[_0x6213('0xa8')]===-0x1){return _0x2f00cd;}var _0x119bb7=this['getAndSetVariable'](_0x6213('0xb8'),_0x6213('0xb9'));if(_0x119bb7[_0x6213('0xa8')]===-0x1){return _0x119bb7;}return this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')]('Executed\x20command\x20MRCPRecog\x20%s',_0x45e4fe));};AGIVertices[_0x6213('0x13')]['agi']=function(_0x448493){logger[_0x6213('0x35')](util['format'](_0x6213('0xba'),_0x448493[_0x6213('0xad')]));return this['channel'][_0x6213('0x9')]([_0x448493[_0x6213('0xbb')],_0x448493[_0x6213('0xbc')]]);};AGIVertices['prototype']['answer']=function(_0x448f7f){logger['info'](util[_0x6213('0x2f')](_0x6213('0xbd'),_0x448f7f[_0x6213('0xad')]));if(this[_0x6213('0x89')](_0x448f7f[_0x6213('0x68')])){logger[_0x6213('0x35')](util['format']('Wait\x20%s\x20seconds\x20before\x20answer',_0x448f7f[_0x6213('0x68')]));var _0x923b30=this[_0x6213('0x10')][_0x6213('0xbe')](_0x448f7f[_0x6213('0x68')]);if(_0x923b30[_0x6213('0xa8')]===-0x1){return _0x923b30;}}return this[_0x6213('0x10')]['answer']();};AGIVertices[_0x6213('0x13')]['callback']=function(_0x3e6af8){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0xbf'),_0x3e6af8[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x3e6af8[_0x6213('0x4d')])){return this['channel']['error'](_0x3e6af8,_0x6213('0xc0'));}_0x3e6af8[_0x6213('0x4e')]=moment();if(this['isConfigured'](_0x3e6af8['delay'])){_0x3e6af8['scheduledAt']=moment()[_0x6213('0xc1')](_0x3e6af8[_0x6213('0xc2')],'minutes');}if(!this[_0x6213('0x89')](_0x3e6af8[_0x6213('0x51')])){_0x3e6af8[_0x6213('0x51')]=0x2;}this[_0x6213('0x48')][_0x6213('0xc3')](this,_0x3e6af8);return this[_0x6213('0x10')]['noop'](util['format'](_0x6213('0xc4'),_0x3e6af8[_0x6213('0x4c')],_0x3e6af8[_0x6213('0x4d')],_0x3e6af8[_0x6213('0x4e')]));};AGIVertices[_0x6213('0x13')]['custom_app']=function(_0x52d60e){logger['info'](util[_0x6213('0x2f')](_0x6213('0xc5'),_0x52d60e[_0x6213('0xad')]));var _0x45efd9=this[_0x6213('0x10')][_0x6213('0x5c')](_0x52d60e[_0x6213('0xc6')],_0x52d60e[_0x6213('0x7b')]);if(_0x45efd9[_0x6213('0xa8')]===-0x1){return _0x45efd9;}return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xc7'),_0x52d60e[_0x6213('0xc6')],_0x52d60e['options']));};AGIVertices[_0x6213('0x13')][_0x6213('0xc8')]=function(_0x39c5ff){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0xc9'),_0x39c5ff[_0x6213('0xad')]));if(!this['isConfigured'](_0x39c5ff[_0x6213('0x60')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0xaf'));}var _0x20c64b='\x22'+_0x39c5ff[_0x6213('0x60')]+'\x22';if(this[_0x6213('0x89')](_0x39c5ff['options'])){_0x20c64b+=','+_0x39c5ff[_0x6213('0x7b')];}var _0x393ba1=this[_0x6213('0x10')][_0x6213('0x5c')](_0x6213('0xb0'),_0x20c64b);if(_0x393ba1[_0x6213('0xa8')]===-0x1){return _0x393ba1;}return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xca'),_0x20c64b));};AGIVertices[_0x6213('0x13')][_0x6213('0xcb')]=function(_0x30058f){logger[_0x6213('0x35')](util['format'](_0x6213('0xcc'),_0x30058f[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x30058f[_0x6213('0x60')])){return this['channel'][_0x6213('0xae')](_0x6213('0xaf'));}var _0x56bb19='\x22'+_0x30058f[_0x6213('0x60')]+'\x22';if(this['isConfigured'](_0x30058f[_0x6213('0x7b')])){_0x56bb19+=','+_0x30058f[_0x6213('0x7b')];}var _0x5362e7=this[_0x6213('0x10')][_0x6213('0x5c')](_0x6213('0xb0'),_0x56bb19);if(_0x5362e7[_0x6213('0xa8')]===-0x1){return _0x5362e7;}return this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xca'),_0x56bb19));};AGIVertices['prototype'][_0x6213('0xcd')]=function(_0x205a05){logger[_0x6213('0x35')](util['format'](_0x6213('0xce'),_0x205a05[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x205a05[_0x6213('0xb3')])){return this['channel'][_0x6213('0xae')]('no\x20grammar\x20configured');}var _0x5f12a4=_0x205a05[_0x6213('0xb3')];if(this[_0x6213('0x89')](_0x205a05[_0x6213('0x7b')])){_0x5f12a4+=','+_0x205a05[_0x6213('0x7b')];}var _0x2c4611=this[_0x6213('0x10')][_0x6213('0x5c')]('MRCPRecog',_0x5f12a4);if(_0x2c4611[_0x6213('0xa8')]===-0x1){return _0x2c4611;}var _0x363550=this[_0x6213('0xb5')](_0x6213('0xb6'),_0x6213('0xcf'));if(_0x363550[_0x6213('0xa8')]===-0x1){return _0x363550;}var _0x20ddbc=this[_0x6213('0xb5')](_0x6213('0xd0'),_0x6213('0xd1'));if(_0x20ddbc[_0x6213('0xa8')]===-0x1){return _0x20ddbc;}var _0x56d7bd=this[_0x6213('0xb5')](_0x6213('0xb8'),_0x6213('0xd2'));if(_0x56d7bd[_0x6213('0xa8')]===-0x1){return _0x56d7bd;}return this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xd3'),_0x5f12a4));};AGIVertices[_0x6213('0x13')][_0x6213('0xd4')]=function(_0x38c8d3){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0xd5'),_0x38c8d3[_0x6213('0xad')]));if(!this['isConfigured'](_0x38c8d3[_0x6213('0xb3')])){return this['channel'][_0x6213('0xae')]('no\x20grammar\x20configured');}var _0x51c4f3=_0x38c8d3[_0x6213('0xb3')];if(this[_0x6213('0x89')](_0x38c8d3[_0x6213('0x7b')])){_0x51c4f3+=','+_0x38c8d3[_0x6213('0x7b')];}var _0x4d1617=this[_0x6213('0x10')][_0x6213('0x5c')](_0x6213('0xb4'),_0x51c4f3);if(_0x4d1617[_0x6213('0xa8')]===-0x1){return _0x4d1617;}var _0x30b9e1=this['getAndSetVariable'](_0x6213('0xb6'),_0x6213('0xd6'));if(_0x30b9e1[_0x6213('0xa8')]===-0x1){return _0x30b9e1;}var _0x39cbf3=this[_0x6213('0xb5')]('RECOG_INPUT()','SESTEK_ASR_TRANSCRIPT');if(_0x39cbf3[_0x6213('0xa8')]===-0x1){return _0x39cbf3;}var _0x2c98cd=this[_0x6213('0xb5')](_0x6213('0xb8'),'SESTEK_ASR_INSTANCE');if(_0x2c98cd[_0x6213('0xa8')]===-0x1){return _0x2c98cd;}return this['channel'][_0x6213('0xae')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x51c4f3));};AGIVertices['prototype'][_0x6213('0xd7')]=function(_0x12aaeb){logger[_0x6213('0x35')](util['format']('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x12aaeb['label']));if(!this['isConfigured'](_0x12aaeb[_0x6213('0xd8')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x12aaeb,_0x6213('0xd9'));}var _0xd1a7fb=this[_0x6213('0x1c')][_0x6213('0xc3')](this,_0x12aaeb[_0x6213('0xd8')]);if(!_0xd1a7fb){return this[_0x6213('0x10')][_0x6213('0x33')](_0x12aaeb,_0x6213('0xda'));}if(!this[_0x6213('0x89')](_0x12aaeb[_0x6213('0x37')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x12aaeb,_0x6213('0xdb'));}var _0x18c176=_0x12aaeb[_0x6213('0x37')][_0x6213('0x5d')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xdc'),_0x18c176));var _0x5a3628=this[_0x6213('0x31')]['sync'](this,_0xd1a7fb,_0x18c176);this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0x12aaeb,_0x18c176);if(!this[_0x6213('0x89')](_0x12aaeb[_0x6213('0xdd')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0xde'));}var _0x2ad6e1=this['getVariable']['sync'](this,_0x12aaeb[_0x6213('0xdd')]);if(!_0x2ad6e1){return this[_0x6213('0x10')][_0x6213('0x33')](_0x12aaeb,_0x6213('0xdf'));}var _0x50c387=this;_0x5a3628['forEach'](function(_0x1ee54a,_0x3a1b87){Object[_0x6213('0xe0')](_0x1ee54a)[_0x6213('0xe1')](function(_0x1df95b){_0x50c387[_0x6213('0x10')]['setVariable'](util[_0x6213('0x2f')](_0x6213('0xe2'),_0x2ad6e1,_0x3a1b87,_0x1df95b),_0x1ee54a[_0x1df95b]);});});this[_0x6213('0x10')][_0x6213('0xa9')](util['format'](_0x6213('0xe3'),_0x2ad6e1),_0x5a3628['length']);return this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0xe4'),_0x2ad6e1));};AGIVertices[_0x6213('0x13')][_0x6213('0xe5')]=function(_0x140dd6){logger[_0x6213('0xe6')](util[_0x6213('0x2f')](_0x6213('0xe7'),_0x140dd6[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x140dd6[_0x6213('0xe8')])){return this['channel'][_0x6213('0x33')](_0x140dd6,_0x6213('0xe9'));}var _0x2bc1ee=this['getUser'][_0x6213('0xc3')](this,_0x140dd6[_0x6213('0xe8')]);if(!_0x2bc1ee){return this[_0x6213('0x10')][_0x6213('0x33')](_0x140dd6,_0x6213('0xea'));}var _0x2f9992=this[_0x6213('0x10')]['exec'](_0x6213('0xeb'),[util['format'](_0x6213('0xec'),_0x2bc1ee),_0x140dd6[_0x6213('0x68')],_0x140dd6[_0x6213('0xed')],_0x140dd6[_0x6213('0x74')]]);if(_0x2f9992['result']===-0x1){return _0x2f9992;}return this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')](_0x6213('0xee'),_0x6213('0xeb')));};AGIVertices[_0x6213('0x13')][_0x6213('0xef')]=function(_0x1f3634){logger[_0x6213('0x35')](util[_0x6213('0x2f')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x1f3634[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x1f3634[_0x6213('0x7d')])){return this[_0x6213('0x10')]['noop'](_0x6213('0xf0'));}if(!this[_0x6213('0x89')](_0x1f3634['text'])){return this['channel'][_0x6213('0xae')](_0x6213('0xaf'));}this[_0x6213('0x10')][_0x6213('0xf1')]=!![];this[_0x6213('0x3e')](_0x1f3634);this[_0x6213('0x47')](_0x1f3634[_0x6213('0x60')],'in','','');this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')]('Trying\x20Dialogflow:\x20%s',_0x1f3634[_0x6213('0x60')]));var _0x5872ce=this[_0x6213('0x7c')][_0x6213('0xc3')](this,_0x1f3634);if(_0x5872ce){for(var _0x29c3ef in _0x5872ce){if(_0x5872ce[_0x6213('0x9b')](_0x29c3ef)){this[_0x6213('0x10')][_0x6213('0xa9')](util['format'](_0x6213('0xf2'),_0x29c3ef[_0x6213('0x6e')]()),_0x5872ce[_0x29c3ef]);}}this[_0x6213('0x47')](_0x5872ce[_0x6213('0xf3')],_0x6213('0xf4'),'dialogflow','');return this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')]('Dialogflow\x20Result\x20%s',_0x5872ce[_0x6213('0xf3')]));}return this[_0x6213('0x10')]['error'](_0x1f3634,_0x6213('0xf5'));};AGIVertices[_0x6213('0x13')][_0x6213('0xf6')]=function(_0x3032a0){logger[_0x6213('0x35')](util['format'](_0x6213('0xf7'),_0x3032a0[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x3032a0[_0x6213('0x80')])){return this['channel'][_0x6213('0xae')](_0x6213('0xf8'));}if(!this[_0x6213('0x89')](_0x3032a0[_0x6213('0xf9')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0xfa'));}if(!this[_0x6213('0x89')](_0x3032a0[_0x6213('0x81')])){return this[_0x6213('0x10')]['noop'](_0x6213('0xfb'));}if(!this[_0x6213('0x89')](_0x3032a0['dialogflowV2_language'])){return this['channel'][_0x6213('0xae')]('no\x20anguage\x20configured');}if(!this[_0x6213('0x89')](_0x3032a0[_0x6213('0x60')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0xaf'));}this[_0x6213('0x10')][_0x6213('0xf1')]=!![];this[_0x6213('0x3e')](_0x3032a0);this[_0x6213('0x47')](_0x3032a0['text'],'in','','');this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xfc'),_0x3032a0[_0x6213('0x60')]));var _0x4bbec5=this['googleDialogflowV2']['sync'](this,_0x3032a0);if(_0x4bbec5){for(var _0x14986d in _0x4bbec5){if(_0x4bbec5[_0x6213('0x9b')](_0x14986d)){if(_0x14986d!==_0x6213('0xfd')){this[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')]('DIALOGFLOW_%s',_0x14986d[_0x6213('0x6e')]()),_0x4bbec5[_0x14986d]);}}}this[_0x6213('0x47')](_0x4bbec5[_0x6213('0xf3')],'out',_0x6213('0xf6'),_0x4bbec5['providerResponse']);return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xfe'),_0x4bbec5[_0x6213('0xf3')]));}return this[_0x6213('0x10')]['error'](_0x3032a0,_0x6213('0xff'));};AGIVertices['prototype'][_0x6213('0x100')]=function(_0x153318){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x101'),_0x153318[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x153318[_0x6213('0x102')])){return this['channel'][_0x6213('0xae')](_0x6213('0x103'));}if(!this['isConfigured'](_0x153318['username'])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x104'));}if(!this[_0x6213('0x89')](_0x153318[_0x6213('0x105')])){return this[_0x6213('0x10')]['noop'](_0x6213('0x106'));}if(!this[_0x6213('0x89')](_0x153318[_0x6213('0x107')])){return this['channel'][_0x6213('0xae')](_0x6213('0xaf'));}this[_0x6213('0x10')][_0x6213('0xf1')]=!![];this['createSquareDetailsReport'](_0x153318);this[_0x6213('0x47')](_0x153318['text'],'in','','');this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0x108'),_0x153318[_0x6213('0x60')]));var _0x3736eb=this[_0x6213('0x83')][_0x6213('0xc3')](this,_0x153318);if(_0x3736eb){for(var _0x141960 in _0x3736eb){if(_0x3736eb['hasOwnProperty'](_0x141960)){this[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')](_0x6213('0x109'),_0x141960[_0x6213('0x6e')]()),_0x3736eb[_0x141960]);}}this['createSquareMessage'](_0x3736eb['speech'],_0x6213('0xf4'),_0x6213('0x100'),'');if(_0x3736eb[_0x6213('0x10a')]){this[_0x6213('0x10')][_0x6213('0xae')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x3736eb[_0x6213('0x10a')]));var _0x2a0c46=this[_0x6213('0x10')][_0x6213('0x10b')](_0x3736eb['audiofile']);try{fs[_0x6213('0x10c')](_0x3736eb[_0x6213('0x10a')]+_0x6213('0x10d'));}catch(_0x1c2394){logger['error'](_0x1c2394);}return _0x2a0c46;}else{return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')]('SestekNDA\x20Result\x20%s',_0x3736eb[_0x6213('0xf3')]));}}return this['channel']['error'](_0x153318,_0x6213('0x10e'));};AGIVertices[_0x6213('0x13')][_0x6213('0x10f')]=function(_0x18fecb){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x110'),_0x18fecb['label']));return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x10f'));};AGIVertices[_0x6213('0x13')][_0x6213('0x111')]=function(_0x6e61e6){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x112'),_0x6e61e6['label']));var _0x32dc9f='';if(_0x6e61e6['trunk_id']){if(!this[_0x6213('0x89')](_0x6e61e6[_0x6213('0x113')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x6e61e6,_0x6213('0x114'));}else{var _0x95d3d3=parseInt(_0x6e61e6[_0x6213('0x113')],0xa);if(isNaN(_0x95d3d3)){_0x32dc9f=_0x6e61e6['trunk_id'];}else{_0x32dc9f=this[_0x6213('0x21')][_0x6213('0xc3')](this,_0x6e61e6[_0x6213('0x113')]);if(!_0x32dc9f){return this['channel'][_0x6213('0x33')](_0x6e61e6,'no\x20trunk\x20found');}}}}else if(_0x6e61e6[_0x6213('0x115')]){_0x32dc9f=_0x6e61e6['trunk_name'];}else{return this[_0x6213('0x10')][_0x6213('0x33')](_0x6e61e6,_0x6213('0x114'));}var _0x59e49b=this[_0x6213('0x10')]['exec']('DIAL',[util[_0x6213('0x2f')]('SIP/%s/%s',_0x32dc9f,_0x6e61e6[_0x6213('0x4c')]),_0x6e61e6['timeout'],_0x6e61e6[_0x6213('0xed')],_0x6e61e6[_0x6213('0x74')]]);if(_0x59e49b[_0x6213('0xa8')]===-0x1){return _0x59e49b;}return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xee'),'DIAL'));};AGIVertices['prototype']['finally']=function(_0x4f33ab){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x116'),_0x4f33ab[_0x6213('0xad')]));return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x117'));};AGIVertices[_0x6213('0x13')][_0x6213('0xe')]=function(_0x1befb4){logger['info'](util['format'](_0x6213('0x118'),_0x1befb4[_0x6213('0xad')]));if(_0x1befb4[_0x6213('0xab')]===0x0){return this['maxRetry'](_0x1befb4);}_0x1befb4['retry']-=0x1;if(!this[_0x6213('0x89')](_0x1befb4[_0x6213('0x119')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x1befb4,'no\x20file\x20audio\x20selected');}var _0x3fb073=this[_0x6213('0x23')]['sync'](this,_0x1befb4['file_id']);if(!_0x3fb073){return this['channel'][_0x6213('0x33')](_0x1befb4,_0x6213('0x11a'));}if(!this[_0x6213('0x89')](_0x1befb4[_0x6213('0xdd')])){return this[_0x6213('0x10')][_0x6213('0x33')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0xfb1973=this['channel'][_0x6213('0x11b')](_0x3fb073,_0x1befb4[_0x6213('0x11c')],_0x1befb4['maxdigit']);var _0x369602=_0xfb1973[_0x6213('0xa8')]?_0xfb1973['result']['toString']():'';logger['info'](_0x6213('0x11d'),JSON[_0x6213('0x75')](_0xfb1973));if(_0xfb1973[_0x6213('0xa8')]===-0x1){this['createSquareDetailsReport'][_0x6213('0xc3')](this,_0x1befb4,_0x369602);return _0xfb1973;}else if(_0xfb1973[_0x6213('0xa7')]===_0x6213('0x68')){_0xfb1973[_0x6213('0xa8')]=_0x369602[_0x6213('0xa1')]>=parseInt(_0x1befb4['mindigit'])?'x':'i';}else{_0xfb1973[_0x6213('0xa8')]=_0x369602['length']>=parseInt(_0x1befb4[_0x6213('0x11e')])&&_0x369602[_0x6213('0xa1')]<=parseInt(_0x1befb4[_0x6213('0x11f')])?'x':'i';}var _0x25b94b=this['getVariable']['sync'](this,_0x1befb4[_0x6213('0xdd')]);if(!_0x25b94b){return this[_0x6213('0x10')][_0x6213('0x33')](_0x1befb4,_0x6213('0xdf'));}this['channel'][_0x6213('0xa9')](_0x25b94b,_0x369602);if(this[_0x6213('0x89')](_0x1befb4[_0x6213('0x120')])){var _0x100541=parseInt(_0x1befb4[_0x6213('0x120')],0xa);var _0x3275e8=rs['generate']({'charset':'*','length':_0x100541});var _0x300aa0=_0x369602[_0x6213('0xa1')];if(_0x300aa0>0x0){if(_0x300aa0>_0x100541){this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0x1befb4,_0x1befb4[_0x6213('0x121')]===_0x6213('0x122')?_0x3275e8+_0x369602[_0x6213('0x123')](_0x100541):_0x369602[_0x6213('0x123')](0x0,_0x300aa0-_0x100541)+_0x3275e8);}else{this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0x1befb4,rs['generate']({'charset':'*','length':_0x300aa0}));}}else{this[_0x6213('0x3e')]['sync'](this,_0x1befb4,'');}}else{this[_0x6213('0x3e')]['sync'](this,_0x1befb4,_0x369602);}return _0xfb1973;};AGIVertices['prototype'][_0x6213('0xf')]=function(_0x448a5f){logger[_0x6213('0x35')](util['format'](_0x6213('0x124'),_0x448a5f['label']));return this[_0x6213('0xe')](_0x448a5f);};AGIVertices['prototype']['goal']=function(_0x180c55){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x125'),_0x180c55[_0x6213('0xad')]));this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0x180c55,_0x180c55[_0x6213('0x126')]);return this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x127'),_0x180c55[_0x6213('0x126')]));};AGIVertices[_0x6213('0x13')][_0x6213('0x128')]=function(_0x38054c){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x129'),_0x38054c['label']));if(!this[_0x6213('0x89')](_0x38054c['aws_access_key_id'])||!this[_0x6213('0x89')](_0x38054c[_0x6213('0x92')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x12a'));}if(!this[_0x6213('0x89')](_0x38054c[_0x6213('0x60')])){return this[_0x6213('0x10')]['noop']('no\x20text\x20configured');}this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0x12b'),_0x38054c[_0x6213('0x60')]));var _0x58a934=this[_0x6213('0x8b')][_0x6213('0xc3')](this,_0x38054c);if(_0x58a934){this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x12c'),_0x58a934));var _0x3d0460=this[_0x6213('0x10')][_0x6213('0x10b')](_0x58a934);try{fs['unlink'](_0x58a934+_0x6213('0x10d'));}catch(_0x128bcc){logger['error'](_0x128bcc);}return _0x3d0460;}return this[_0x6213('0x10')]['error'](_0x38054c,_0x6213('0x12d'));};AGIVertices[_0x6213('0x13')]['awslex']=function(_0x34c496){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x12e'),_0x34c496[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x34c496[_0x6213('0x8c')])||!this[_0x6213('0x89')](_0x34c496[_0x6213('0x92')])){return this['channel'][_0x6213('0xae')](_0x6213('0x12a'));}if(!this[_0x6213('0x89')](_0x34c496['aws_bot_name'])){return this[_0x6213('0x10')]['noop'](_0x6213('0x12f'));}if(!this[_0x6213('0x89')](_0x34c496['text'])){return this['channel'][_0x6213('0xae')](_0x6213('0xaf'));}this[_0x6213('0x10')][_0x6213('0xf1')]=!![];this[_0x6213('0x3e')](_0x34c496);this[_0x6213('0x47')](_0x34c496[_0x6213('0x60')],'in','','');this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0x130'),_0x34c496['text']));var _0x78ae9e=this[_0x6213('0x91')][_0x6213('0xc3')](this,_0x34c496);if(_0x78ae9e){for(var _0x1ad9ee in _0x78ae9e){if(_0x78ae9e[_0x6213('0x9b')](_0x1ad9ee)&&_[_0x6213('0x9c')](_0x78ae9e[_0x1ad9ee])){this[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')]('AWS_LEX_%s',_0x1ad9ee['toUpperCase']()),_0x78ae9e[_0x1ad9ee]);}}if(_[_0x6213('0x49')](_0x78ae9e['message'])){return this['channel'][_0x6213('0xae')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this['createSquareMessage'](_0x78ae9e[_0x6213('0x131')],_0x6213('0xf4'),'amazonlex','');return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')]('Amazon\x20Lex\x20Result\x20%s',_0x78ae9e['message']));}}return this[_0x6213('0x10')][_0x6213('0x33')](_0x34c496,_0x6213('0x132'));};AGIVertices[_0x6213('0x13')]['googleasr']=function(_0x539a9f){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x133'),_0x539a9f['label'],_0x539a9f['timeout']));if(!this['isConfigured'](_0x539a9f[_0x6213('0x7d')])){return this['channel'][_0x6213('0xae')](_0x6213('0xf0'));}var _0x48e56e=_0x6213('0x134');var _0x124209=util[_0x6213('0x2f')](_0x6213('0x135'),FILES_PATH,rs['generate'](0x4));var _0x3f1bb6=util[_0x6213('0x2f')](_0x6213('0xa3'),_0x124209,_0x48e56e);var _0x57a86c=!![];if(_0x539a9f['beep']==='NOBEEP'){_0x57a86c=![];}var _0x2dbf56=this[_0x6213('0x10')][_0x6213('0x136')](_0x124209,_0x48e56e,_0x539a9f[_0x6213('0x137')],_0x539a9f['timeout'],undefined,_0x57a86c);if(_0x2dbf56['result']!==-0x1){this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x138'),_0x3f1bb6));var _0x4dc0c1=this['googleASR'][_0x6213('0xc3')](this,_0x539a9f,_0x3f1bb6);if(_0x4dc0c1){for(var _0xbfe3a2 in _0x4dc0c1){if(_0x4dc0c1[_0x6213('0x9b')](_0xbfe3a2)){this[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')](_0x6213('0x139'),_0xbfe3a2[_0x6213('0x6e')]()),_0x4dc0c1[_0xbfe3a2]);}}return this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0x13a'),JSON[_0x6213('0x75')](_0x4dc0c1)));}}return _0x2dbf56;};AGIVertices['prototype']['tildeasr']=function(_0x4200be){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x13b'),_0x4200be[_0x6213('0xad')]));if(!this['isConfigured'](_0x4200be[_0x6213('0x13c')])){return this[_0x6213('0x10')][_0x6213('0xae')]('no\x20appid\x20configured');}if(!this[_0x6213('0x89')](_0x4200be[_0x6213('0x13d')])){return this[_0x6213('0x10')][_0x6213('0xae')]('no\x20appsecret\x20configured');}var _0x45460f=_0x6213('0x134');var _0x5ecad7=util[_0x6213('0x2f')](_0x6213('0x135'),FILES_PATH,rs[_0x6213('0x13e')](0x4));var _0xa15d85=util[_0x6213('0x2f')](_0x6213('0xa3'),_0x5ecad7,_0x45460f);var _0x35ea79=!![];if(_0x4200be[_0x6213('0x13f')]==='NOBEEP'){_0x35ea79=![];}var _0x15b383=this[_0x6213('0x10')][_0x6213('0x136')](_0x5ecad7,_0x45460f,_0x4200be[_0x6213('0x137')],_0x4200be[_0x6213('0x68')],undefined,_0x35ea79);if(_0x15b383[_0x6213('0xa8')]!==-0x1){this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x140'),_0xa15d85));var _0x279817=this[_0x6213('0x97')][_0x6213('0xc3')](this,_0x4200be,_0xa15d85);if(_0x279817){for(var _0xf772d6 in _0x279817){if(_0x279817[_0x6213('0x9b')](_0xf772d6)){this[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')](_0x6213('0x141'),_0xf772d6[_0x6213('0x6e')]()),_0x279817[_0xf772d6]);}}return this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0x142'),JSON[_0x6213('0x75')](_0x279817)));}}return _0x15b383;};AGIVertices[_0x6213('0x13')]['gotoc']=function(_0x21de27){logger[_0x6213('0x35')](util[_0x6213('0x2f')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x21de27[_0x6213('0xad')]));return this[_0x6213('0x10')]['continueAt'](_0x21de27[_0x6213('0x43')],_0x21de27['extension'],_0x21de27['priority']);};AGIVertices[_0x6213('0x13')]['gotoif']=function(_0x243ee7){logger[_0x6213('0x35')](util[_0x6213('0x2f')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x243ee7[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x243ee7[_0x6213('0x143')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x243ee7,_0x6213('0x144'));}try{var _0x3814a5=eval(_0x243ee7[_0x6213('0x143')])?_0x6213('0x145'):_0x6213('0x146');this[_0x6213('0x10')][_0x6213('0xae')](util['format']('EVAL\x20CONDITION\x20%s\x20%s',_0x243ee7[_0x6213('0x143')],_0x3814a5));return{'code':0xc8,'result':_0x3814a5};}catch(_0x555d9b){return{'code':0xc8,'result':_0x6213('0x146')};}};AGIVertices[_0x6213('0x13')][_0x6213('0x147')]=function(_0x11e35b){logger['info'](util[_0x6213('0x2f')](_0x6213('0x148'),_0x11e35b['label']));if(!this[_0x6213('0x89')](_0x11e35b[_0x6213('0x149')])){return this[_0x6213('0x10')]['error'](_0x11e35b,'no\x20interval\x20configured');}var _0x1a5ca4=this[_0x6213('0x28')]['sync'](this,_0x11e35b[_0x6213('0x149')]);if(!_0x1a5ca4){return this[_0x6213('0x10')][_0x6213('0x33')](_0x11e35b,_0x6213('0x14a'));}for(var _0xb290cf=0x0;_0xb290cf<_0x1a5ca4[_0x6213('0xa1')];_0xb290cf+=0x1){var _0x3bca88=this[_0x6213('0x10')]['getVariable'](util[_0x6213('0x2f')](_0x6213('0x14b'),_0x1a5ca4[_0xb290cf]));if(_0x3bca88['result']===-0x1){return _0x3bca88;}logger['info'](util[_0x6213('0x2f')](_0x6213('0x14c'),_0x1a5ca4[_0xb290cf],_0x3bca88[_0x6213('0xa7')]));if(_0x3bca88['extra']==='true'){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x14c'),_0x1a5ca4[_0xb290cf],'true'));this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x14c'),_0x1a5ca4[_0xb290cf],'true'));return{'code':0xc8,'result':'true'};}else{logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x14c'),_0x1a5ca4[_0xb290cf],_0x6213('0x146')));this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x14c'),_0x1a5ca4[_0xb290cf],'false'));}}return{'code':0xc8,'result':_0x6213('0x146')};};AGIVertices[_0x6213('0x13')][_0x6213('0x14d')]=function(_0x321643){logger[_0x6213('0x35')](util['format']('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x321643['label']));return this[_0x6213('0x10')]['hangup']();};AGIVertices[_0x6213('0x13')][_0x6213('0x14e')]=function(_0x2f04ce){logger['info'](util[_0x6213('0x2f')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x2f04ce['label']));if(!this[_0x6213('0x89')](_0x2f04ce['key'])){return this[_0x6213('0x10')]['noop'](_0x6213('0xf0'));}var _0x468e1f=_0x6213('0x134');var _0x42ed03=util[_0x6213('0x2f')](_0x6213('0x135'),FILES_PATH,rs[_0x6213('0x13e')](0x4));var _0x21b488=util[_0x6213('0x2f')](_0x6213('0xa3'),_0x42ed03,_0x468e1f);var _0x16d3df=!![];if(_0x2f04ce[_0x6213('0x13f')]===_0x6213('0x14f')){_0x16d3df=![];}var _0x4b09b9=this[_0x6213('0x10')][_0x6213('0x136')](_0x42ed03,_0x468e1f,_0x2f04ce[_0x6213('0x137')],_0x2f04ce['timeout'],undefined,_0x16d3df);if(_0x4b09b9['result']!==-0x1){this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x150'),_0x21b488));var _0x22263e=this[_0x6213('0x87')][_0x6213('0xc3')](this,_0x2f04ce,_0x21b488);if(_0x22263e){for(var _0x236fdb in _0x22263e){if(_0x22263e[_0x6213('0x9b')](_0x236fdb)){this['channel'][_0x6213('0xa9')](util['format'](_0x6213('0x151'),_0x236fdb[_0x6213('0x6e')]()),_0x22263e[_0x236fdb]);}}return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x152'),JSON[_0x6213('0x75')](_0x22263e)));}}return _0x4b09b9;};AGIVertices[_0x6213('0x13')][_0x6213('0x153')]=function(_0x29d9b8){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x154'),_0x29d9b8[_0x6213('0xad')]));if(!this['isConfigured'](_0x29d9b8[_0x6213('0x7d')])){return this[_0x6213('0x10')]['noop'](_0x6213('0xf0'));}if(!this[_0x6213('0x89')](_0x29d9b8[_0x6213('0x60')])){return this['channel'][_0x6213('0xae')](_0x6213('0xaf'));}this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0x155'),_0x29d9b8[_0x6213('0x60')]));var _0x3908d5=this[_0x6213('0x84')][_0x6213('0xc3')](this,_0x29d9b8);if(_0x3908d5){this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')]('ispeech\x20%s\x20file\x20created',_0x3908d5));var _0x2f9442=this[_0x6213('0x10')]['streamFile'](_0x3908d5,_0x29d9b8[_0x6213('0x137')]);try{fs['unlink'](_0x3908d5+_0x6213('0x10d'));}catch(_0x3e62b8){logger[_0x6213('0x33')](_0x3e62b8);}return _0x2f9442;}return this['channel'][_0x6213('0x33')](_0x29d9b8,_0x6213('0x156'));};AGIVertices[_0x6213('0x13')][_0x6213('0x157')]=function(_0x12d592){logger['info'](util['format'](_0x6213('0x158'),_0x12d592[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x12d592[_0x6213('0x159')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x12d592,'no\x20find\x20by\x20configured');}logger[_0x6213('0x35')](util['format'](_0x6213('0x15a'),this[_0x6213('0x10')][_0x6213('0x40')],_0x12d592[_0x6213('0x159')]));var _0x56223e=this[_0x6213('0x5b')][_0x6213('0xc3')](this,_0x12d592[_0x6213('0x159')]);if(_0x56223e){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x15b'),this[_0x6213('0x10')]['callerid'],_0x12d592[_0x6213('0x159')]));this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x15b'),this[_0x6213('0x10')]['callerid'],_0x12d592[_0x6213('0x159')]));return{'code':0xc8,'result':_0x6213('0x15c')};}else{logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x15d'),this[_0x6213('0x10')]['callerid'],_0x12d592[_0x6213('0x159')]));this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x15d'),this[_0x6213('0x10')]['callerid'],_0x12d592['findBy']));return{'code':0xc8,'result':_0x6213('0x15e')};}};AGIVertices[_0x6213('0x13')][_0x6213('0x15f')]=function(_0x1b058b){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x160'),_0x1b058b[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x1b058b[_0x6213('0x159')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x1b058b,_0x6213('0x161'));}logger['info'](util[_0x6213('0x2f')](_0x6213('0x15a'),this['channel']['callerid'],_0x1b058b[_0x6213('0x159')]));var _0xb34038=this[_0x6213('0x57')][_0x6213('0xc3')](this,_0x1b058b[_0x6213('0x159')]);if(_0xb34038){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x15b'),this[_0x6213('0x10')][_0x6213('0x40')],_0x1b058b[_0x6213('0x159')]));this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x15b'),this[_0x6213('0x10')][_0x6213('0x40')],_0x1b058b[_0x6213('0x159')]));return{'code':0xc8,'result':_0x6213('0x15c')};}else{logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x15d'),this['channel'][_0x6213('0x40')],_0x1b058b[_0x6213('0x159')]));this['channel'][_0x6213('0xae')](util['format'](_0x6213('0x15d'),this[_0x6213('0x10')][_0x6213('0x40')],_0x1b058b[_0x6213('0x159')]));return{'code':0xc8,'result':_0x6213('0x15e')};}};AGIVertices['prototype'][_0x6213('0x162')]=function(_0x1db389){logger['info'](util['format'](_0x6213('0x163'),_0x1db389['label']));if(!this['isConfigured'](_0x1db389[_0x6213('0x164')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x1db389,_0x6213('0x165'));}this['channel'][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x166'),_0x1db389[_0x6213('0x164')]));var _0xb0d1c4=eval(_0x1db389[_0x6213('0x164')]);if(!this[_0x6213('0x89')](_0x1db389[_0x6213('0xdd')])){return this['channel'][_0x6213('0xae')](_0x6213('0xde'));}var _0x49871c=this[_0x6213('0x14')][_0x6213('0xc3')](this,_0x1db389['variable_id']);if(!_0x49871c){return this[_0x6213('0x10')]['error'](_0x1db389,_0x6213('0xdf'));}if(_[_0x6213('0xa4')](_0xb0d1c4)){var _0x123194=this;_0xb0d1c4[_0x6213('0xe1')](function(_0x2a833c,_0x21f829){_0x123194[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')](_0x6213('0x167'),_0x49871c,_0x21f829),_0x2a833c);});return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x168'),_0x49871c));}else{return this[_0x6213('0x10')][_0x6213('0xa9')](_0x49871c,_0xb0d1c4);}};AGIVertices[_0x6213('0x13')][_0x6213('0x169')]=function(_0x8dcf5d){logger[_0x6213('0x35')](util['format']('Enter\x20in\x20MENU\x20(%s)\x20block',_0x8dcf5d[_0x6213('0xad')]));if(_0x8dcf5d['retry']===0x0){return this[_0x6213('0xaa')](_0x8dcf5d);}_0x8dcf5d['retry']-=0x1;if(!this[_0x6213('0x89')](_0x8dcf5d[_0x6213('0x119')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x8dcf5d,'no\x20file\x20audio\x20selected');}var _0x2baac9=this[_0x6213('0x23')][_0x6213('0xc3')](this,_0x8dcf5d[_0x6213('0x119')]);if(!_0x2baac9){return this[_0x6213('0x10')][_0x6213('0x33')](_0x8dcf5d,_0x6213('0x11a'));}var _0xc314b4=this['channel']['getData'](_0x2baac9,_0x8dcf5d[_0x6213('0x11c')],_0x8dcf5d['digit']);var _0x4c12d3=_0xc314b4['result'];if(_0xc314b4[_0x6213('0xa8')]===-0x1){this[_0x6213('0x3e')]['sync'](this,_0x8dcf5d,'-1');return _0xc314b4;}else if(_0xc314b4[_0x6213('0xa7')]===_0x6213('0x68')){_0xc314b4[_0x6213('0xa8')]=_0xc314b4['result'][_0x6213('0xa1')]>0x0?_0xc314b4['result']:'t';}else if(_[_0x6213('0x4a')](_0xc314b4[_0x6213('0xa8')])){_0xc314b4[_0x6213('0xa8')]='#';_0x4c12d3='#';}if(!this['isConfigured'](_0x8dcf5d[_0x6213('0xdd')])){this[_0x6213('0x10')]['noop'](_0x6213('0xde'));}else{var _0x3baced=this[_0x6213('0x14')][_0x6213('0xc3')](this,_0x8dcf5d['variable_id']);if(!_0x3baced){return this[_0x6213('0x10')][_0x6213('0x33')](_0x8dcf5d,_0x6213('0xdf'));}this[_0x6213('0x10')]['setVariable'](_0x3baced,_0x4c12d3);}this[_0x6213('0x3e')]['sync'](this,_0x8dcf5d,_0x4c12d3);return _0xc314b4;};AGIVertices[_0x6213('0x13')][_0x6213('0xae')]=function(_0x108592){logger[_0x6213('0x35')](util['format'](_0x6213('0x16a'),_0x108592[_0x6213('0xad')]));return this['channel']['noop'](_0x108592[_0x6213('0x16b')]||_0x108592['label']);};AGIVertices[_0x6213('0x13')][_0x6213('0x16c')]=function(_0x4e75b8){logger[_0x6213('0x35')](util['format'](_0x6213('0x16d'),_0x4e75b8[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x4e75b8[_0x6213('0x159')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x4e75b8,_0x6213('0x161'));}logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x15a'),this[_0x6213('0x10')][_0x6213('0x40')],_0x4e75b8[_0x6213('0x159')]));var _0x129ba8=this[_0x6213('0x52')]['sync'](this,_0x4e75b8[_0x6213('0x16e')]);var _0x21ea0f=this[_0x6213('0x54')][_0x6213('0xc3')](this,_0x4e75b8[_0x6213('0x159')],_0x129ba8);if(_0x21ea0f){logger[_0x6213('0x35')](util['format'](_0x6213('0x15b'),this[_0x6213('0x10')]['callerid'],_0x4e75b8[_0x6213('0x159')]));this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x15b'),this['channel'][_0x6213('0x40')],_0x4e75b8[_0x6213('0x159')]));return{'code':0xc8,'result':_0x6213('0x15c')};}else{logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x15d'),this[_0x6213('0x10')]['callerid'],_0x4e75b8[_0x6213('0x159')]));this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x15b'),this['channel'][_0x6213('0x40')],_0x4e75b8['findBy']));return{'code':0xc8,'result':_0x6213('0x15e')};}};AGIVertices[_0x6213('0x13')][_0x6213('0x16f')]=function(_0x12bd52){logger['info'](util['format'](_0x6213('0x170'),_0x12bd52[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x12bd52[_0x6213('0x119')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x12bd52,'no\x20file\x20audio\x20selected');}var _0x4fbf31=this[_0x6213('0x23')][_0x6213('0xc3')](this,_0x12bd52[_0x6213('0x119')]);if(!_0x4fbf31){return this[_0x6213('0x10')][_0x6213('0x33')](_0x12bd52,_0x6213('0x11a'));}var _0x51392f=this['channel'][_0x6213('0x5c')]('PLAYBACK',[_0x4fbf31,_0x12bd52[_0x6213('0xed')]]);if(_0x51392f[_0x6213('0xa8')]===-0x1){return _0x51392f;}return this[_0x6213('0x10')]['noop'](util['format'](_0x6213('0xc7'),_0x6213('0x171'),_0x4fbf31));};AGIVertices['prototype']['queue']=function(_0x47d657){logger[_0x6213('0x35')](util[_0x6213('0x2f')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x47d657[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x47d657[_0x6213('0x172')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x47d657,_0x6213('0x173'));}var _0x422799='';var _0x4d70bd=parseInt(_0x47d657[_0x6213('0x172')],0xa);if(isNaN(_0x4d70bd)){_0x422799=_0x47d657[_0x6213('0x172')];}else{_0x422799=this[_0x6213('0x19')]['sync'](this,_0x47d657[_0x6213('0x172')]);if(!_0x422799){return this['channel'][_0x6213('0x33')](_0x47d657,_0x6213('0x174'));}}var _0x450ee4='';if(this[_0x6213('0x89')](_0x47d657['file_id'])){var _0x25b4f9=this[_0x6213('0x23')][_0x6213('0xc3')](this,_0x47d657[_0x6213('0x119')]);if(_0x25b4f9){_0x450ee4=_0x25b4f9;}}this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0x47d657,_0x422799);if(_0x47d657[_0x6213('0xed')][_0x6213('0x175')]('x')<0x0){_0x47d657[_0x6213('0xed')]+='x';}if(_0x47d657[_0x6213('0xed')][_0x6213('0x175')]('X')<0x0){_0x47d657[_0x6213('0xed')]+='X';}this['channel']['setVariable'](_0x6213('0x176'),_0x422799?_0x422799[_0x6213('0x177')]():'');var _0x4f48fd=this['channel'][_0x6213('0x5c')](_0x6213('0x178'),[_0x422799,_0x47d657['opts'],_0x47d657[_0x6213('0x74')],_0x450ee4,_0x47d657[_0x6213('0x68')],_0x47d657[_0x6213('0x9')],_0x47d657[_0x6213('0x179')],_0x47d657[_0x6213('0x17a')],'',_0x47d657[_0x6213('0x17b')]]);if(_0x4f48fd[_0x6213('0xa8')]===-0x1){return _0x4f48fd;}return this['channel'][_0x6213('0xae')](util['format']('Executed\x20command\x20%s\x20%s',_0x6213('0x178'),_0x422799));};AGIVertices[_0x6213('0x13')][_0x6213('0x17c')]=function(_0x4b7a3d){logger['info'](util[_0x6213('0x2f')](_0x6213('0x17d'),_0x4b7a3d['label']));var _0x29549c=_0x4b7a3d[_0x6213('0x17e')]||'wav';var _0x5e5945=util['format']('%s_%s',this['channel'][_0x6213('0x3f')],rs['generate'](0x5));var _0x2e9582=util['format'](_0x6213('0x17f'),FILES_PATH,_0x5e5945,_0x29549c);var _0x49e832=util['format'](_0x6213('0x135'),FILES_PATH,_0x5e5945);this[_0x6213('0x41')][_0x6213('0xc3')](this,_0x4b7a3d,_0x5e5945,_0x2e9582);this[_0x6213('0x10')][_0x6213('0xa9')](_0x6213('0x180'),_0x5e5945);logger[_0x6213('0x35')](_0x6213('0x181'),_0x49e832,_0x29549c,_0x4b7a3d['escape_digits'],_0x4b7a3d[_0x6213('0x68')]);return this[_0x6213('0x10')][_0x6213('0x136')](_0x49e832,_0x29549c,_0x4b7a3d[_0x6213('0x182')],_0x4b7a3d[_0x6213('0x68')],undefined,!![]);};AGIVertices[_0x6213('0x13')][_0x6213('0x183')]=function(_0xfef37a){logger[_0x6213('0x35')](util['format']('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0xfef37a['label']));if(!this[_0x6213('0x89')](_0xfef37a[_0x6213('0x74')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x184'));}var _0x3f372d=this[_0x6213('0x67')][_0x6213('0xc3')](this,_0xfef37a);logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x185'),util['inspect'](_0x3f372d,{'showHidden':![],'depth':null})));if(!this[_0x6213('0x89')](_0xfef37a[_0x6213('0xdd')])){return this['channel']['noop'](_0x6213('0x186'));}var _0x53d016=this[_0x6213('0x14')][_0x6213('0xc3')](this,_0xfef37a['variable_id']);if(!_0x53d016){return this[_0x6213('0x10')]['error'](_0xfef37a,'no\x20variable\x20found');}this[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')](_0x6213('0x187'),_0x53d016),_0x3f372d[_0x6213('0x77')]?_0x3f372d[_0x6213('0x77')]:_0x6213('0x188'));this[_0x6213('0x10')][_0x6213('0xa9')](util[_0x6213('0x2f')](_0x6213('0x189'),_0x53d016),_0x3f372d[_0x6213('0x78')]?_0x3f372d[_0x6213('0x78')]:'OK');if(_0x3f372d[_0x6213('0x76')]){try{this[_0x6213('0xa2')](_0x3f372d['body'],_0x53d016);}catch(_0xc9fe4){logger[_0x6213('0x33')](util['format'](_0x6213('0x18a'),_0x53d016));}}return this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')]('variable\x20%s\x20set',_0x53d016));};AGIVertices[_0x6213('0x13')][_0x6213('0x18b')]=function(_0x45a17f){logger['info'](util[_0x6213('0x2f')](_0x6213('0x18c'),_0x45a17f[_0x6213('0xad')]));return this['channel'][_0x6213('0x18d')](_0x45a17f['digits']['replace'](/\s+/g,''),_0x45a17f['escape_digits']);};AGIVertices[_0x6213('0x13')][_0x6213('0x18e')]=function(_0xf82250){logger['info'](util['format']('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0xf82250[_0x6213('0xad')]));return this[_0x6213('0x10')][_0x6213('0x18f')](_0xf82250['number'][_0x6213('0x5d')](/\s+/g,''),_0xf82250['escape_digits']);};AGIVertices[_0x6213('0x13')][_0x6213('0x190')]=function(_0x68f9c0){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x191'),_0x68f9c0[_0x6213('0xad')]));return this[_0x6213('0x10')]['sayPhonetic'](_0x68f9c0[_0x6213('0x60')],_0x68f9c0[_0x6213('0x182')]);};AGIVertices[_0x6213('0x13')][_0x6213('0x192')]=function(_0x182734){logger[_0x6213('0x35')](util['format'](_0x6213('0x193'),_0x182734[_0x6213('0xad')]));if(!this['isConfigured'](_0x182734['account_id'])){return this[_0x6213('0x10')]['noop'](_0x6213('0x194'));}var _0x2e7edb=this[_0x6213('0x25')]['sync'](this,_0x182734['account_id']);if(!_0x2e7edb||!_0x2e7edb['Smtp']){return this[_0x6213('0x10')][_0x6213('0x33')](_0x182734,'no\x20mail\x20account\x20found');}var _0x2bf43a={'from':util[_0x6213('0x2f')](_0x6213('0x195'),_0x2e7edb[_0x6213('0x17')],_0x2e7edb[_0x6213('0x196')]||_0x2e7edb[_0x6213('0x197')][_0x6213('0x198')]),'to':_0x182734['to']||'','cc':_0x182734['cc']||'','bcc':_0x182734[_0x6213('0x199')]||'','subject':_0x182734[_0x6213('0x19a')],'html':_0x182734[_0x6213('0x60')],'text':_0x182734[_0x6213('0x60')]};if(this[_0x6213('0x89')](_0x182734[_0x6213('0x19b')])){}logger[_0x6213('0xe6')](_0x6213('0x19c'),JSON['stringify'](_0x2bf43a));this[_0x6213('0x3e')]['sync'](this,_0x182734,_0x182734[_0x6213('0x19d')]);this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0x19e'),_0x2e7edb[_0x6213('0x17')]));this[_0x6213('0x27')][_0x6213('0xc3')](this,_0x2e7edb[_0x6213('0x19f')],_0x2bf43a);return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x1a0'));};AGIVertices[_0x6213('0x13')]['sendFax']=function(_0x5077d4){logger['info'](util[_0x6213('0x2f')](_0x6213('0x1a1'),_0x5077d4[_0x6213('0xad')]));return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x1a2'));};AGIVertices[_0x6213('0x13')]['sendSMS']=function(_0xe8e448){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x1a3'),_0xe8e448[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0xe8e448[_0x6213('0x1a4')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x1a5'));}var _0xcdc0ca=this['getSmsAccount'][_0x6213('0xc3')](this,_0xe8e448[_0x6213('0x1a4')]);if(!_0xcdc0ca){return this[_0x6213('0x10')][_0x6213('0x33')](_0xe8e448,'no\x20sms\x20account\x20found');}var _0x49db25={'body':_0xe8e448['sms_text'],'phone':_0xe8e448['to']||'','SmsAccountId':_0xcdc0ca['id']};logger[_0x6213('0xe6')](_0x6213('0x1a6'),JSON['stringify'](_0x49db25));this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0xe8e448,_0xe8e448[_0x6213('0x1a4')]);this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x1a7'),_0xcdc0ca['name']));this[_0x6213('0x3d')][_0x6213('0xc3')](this,_0x49db25);return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x1a8'));};AGIVertices['prototype'][_0x6213('0x1a9')]=function(_0x49e413){logger['info'](util['format'](_0x6213('0x1aa'),_0x49e413['label']));if(!this['isConfigured'](_0x49e413[_0x6213('0xdd')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x49e413,_0x6213('0x1ab'));}var _0x21bdaa=this['getVariable']['sync'](this,_0x49e413[_0x6213('0xdd')]);if(!_0x21bdaa){return this[_0x6213('0x10')][_0x6213('0x33')](_0x49e413,_0x6213('0xdf'));}return this[_0x6213('0x10')]['setVariable'](_0x21bdaa,_0x49e413[_0x6213('0x1ac')]);};AGIVertices['prototype'][_0x6213('0x1ad')]=function(_0x12915b){logger[_0x6213('0x35')](util['format']('Enter\x20in\x20START\x20(%s)\x20block',_0x12915b[_0x6213('0xad')]));this[_0x6213('0x10')][_0x6213('0xae')]('START\x20CALLY\x20SQUARE');if(_0x12915b[_0x6213('0x1ae')]===_0x6213('0x1af')){this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x1b0'));return this[_0x6213('0x10')][_0x6213('0x1ae')]();}return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x1b1'));};AGIVertices[_0x6213('0x13')][_0x6213('0x1b2')]=function(_0x3ae9b5){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x1b3'),_0x3ae9b5['label']));if(!this[_0x6213('0x89')](_0x3ae9b5[_0x6213('0x1b4')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x3ae9b5,'no\x20subproject\x20selected');}var _0x55717a=this[_0x6213('0x1b5')][_0x6213('0xc3')](this,_0x3ae9b5[_0x6213('0x1b4')]);if(!this[_0x6213('0x89')](_0x55717a)){return this[_0x6213('0x10')][_0x6213('0x33')](_0x3ae9b5,util['format'](_0x6213('0x1b6'),_0x3ae9b5['project_id']));}if(_0x55717a===this['channel'][_0x6213('0x1b7')]){return this[_0x6213('0x10')]['error'](_0x3ae9b5,_0x6213('0x1b8'));}this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0x3ae9b5,_0x55717a);var _0x167562=this[_0x6213('0x10')][_0x6213('0x5c')](_0x6213('0x1b9'),util[_0x6213('0x2f')](_0x6213('0x1ba'),config[_0x6213('0x9')][_0x6213('0x1bb')]||'127.0.0.1',_0x55717a,this[_0x6213('0x10')][_0x6213('0x1b7')]));if(_0x167562['result']===-0x1){return _0x167562;}return this[_0x6213('0x10')][_0x6213('0xae')](util['format'](_0x6213('0xc7'),_0x6213('0x1b9'),_0x55717a));};AGIVertices[_0x6213('0x13')]['system']=function(_0x5b0ee1){logger['info'](util[_0x6213('0x2f')](_0x6213('0x1bc'),_0x5b0ee1[_0x6213('0xad')]));var _0x5e7dea=this[_0x6213('0x1bd')][_0x6213('0xc3')](this,_0x5b0ee1[_0x6213('0xbb')]);this[_0x6213('0x3e')][_0x6213('0xc3')](this,_0x5b0ee1,_0x5b0ee1[_0x6213('0xbb')]);if(this[_0x6213('0x89')](_0x5b0ee1[_0x6213('0xdd')])){var _0x5e8673=this[_0x6213('0x14')][_0x6213('0xc3')](this,_0x5b0ee1['variable_id']);if(_0x5e8673){this['channel'][_0x6213('0xa9')](_0x5e8673,_0x5e7dea);return this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')](_0x6213('0x1be'),_0x5b0ee1[_0x6213('0xbb')],_0x5e8673));}}return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x1bf'),_0x5b0ee1[_0x6213('0xbb')]));};AGIVertices[_0x6213('0x13')][_0x6213('0x1c0')]=function(_0x36eb2e){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x1c1'),_0x36eb2e['label']));_0x36eb2e[_0x6213('0x60')]=_0x36eb2e[_0x6213('0x60')][_0x6213('0x5d')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x6213('0x89')](_0x36eb2e[_0x6213('0x1c2')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0x1c3'));}if(!this[_0x6213('0x89')](_0x36eb2e[_0x6213('0x60')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0xaf'));}this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')](_0x6213('0x1c4'),_0x36eb2e[_0x6213('0x60')]));var _0xef1ab6=this['googleCloudTTS'][_0x6213('0xc3')](this,_0x36eb2e);if(_0xef1ab6){this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0xef1ab6));var _0x5b0169=this[_0x6213('0x10')][_0x6213('0x10b')](_0xef1ab6);try{fs[_0x6213('0x10c')](_0xef1ab6+_0x6213('0x10d'));}catch(_0x3a35cf){logger[_0x6213('0x33')](_0x3a35cf);}return _0x5b0169;}return this[_0x6213('0x10')][_0x6213('0x33')](_0x36eb2e,_0x6213('0x1c5'));};AGIVertices[_0x6213('0x13')][_0x6213('0x1c6')]=function(_0x3a8b23){logger['info'](util[_0x6213('0x2f')](_0x6213('0x1c7'),_0x3a8b23['label']));_0x3a8b23[_0x6213('0x60')]=_0x3a8b23[_0x6213('0x60')][_0x6213('0x5d')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x6213('0x89')](_0x3a8b23[_0x6213('0x60')])){return this[_0x6213('0x10')][_0x6213('0xae')](_0x6213('0xaf'));}this[_0x6213('0x10')][_0x6213('0xae')](util['format']('Trying\x20Google\x20TTS\x20%s',_0x3a8b23[_0x6213('0x60')]));var _0x39fb6c=this[_0x6213('0x66')][_0x6213('0xc3')](this,_0x3a8b23);if(_0x39fb6c){this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0x1c8'),_0x39fb6c));var _0xe0d233=this[_0x6213('0x10')]['streamFile'](_0x39fb6c);try{fs[_0x6213('0x10c')](_0x39fb6c+_0x6213('0x10d'));}catch(_0x11a2ea){logger[_0x6213('0x33')](_0x11a2ea);}return _0xe0d233;}return this[_0x6213('0x10')][_0x6213('0x33')](_0x3a8b23,_0x6213('0x1c9'));};AGIVertices[_0x6213('0x13')][_0x6213('0x1ca')]=function(_0x204a6e){logger['info'](util[_0x6213('0x2f')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x204a6e[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x204a6e[_0x6213('0x159')])){return this[_0x6213('0x10')][_0x6213('0x33')](_0x204a6e,'no\x20find\x20by\x20configured');}logger['info'](util[_0x6213('0x2f')](_0x6213('0x15a'),this[_0x6213('0x10')][_0x6213('0x40')],_0x204a6e[_0x6213('0x159')]));var _0x561ea0=this[_0x6213('0x55')][_0x6213('0xc3')](this,_0x204a6e['findBy']);if(_0x561ea0){logger['info'](util[_0x6213('0x2f')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x6213('0x10')][_0x6213('0x40')],_0x204a6e[_0x6213('0x159')]));this[_0x6213('0x10')]['noop'](util[_0x6213('0x2f')](_0x6213('0x15b'),this[_0x6213('0x10')][_0x6213('0x40')],_0x204a6e[_0x6213('0x159')]));return{'code':0xc8,'result':'success'};}else{logger[_0x6213('0x35')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x6213('0x10')]['callerid'],_0x204a6e['findBy']));this['channel'][_0x6213('0xae')](util['format'](_0x6213('0x15d'),this['channel']['callerid'],_0x204a6e['findBy']));return{'code':0xc8,'result':_0x6213('0x15e')};}};AGIVertices[_0x6213('0x13')][_0x6213('0x1cb')]=function(_0x1de9f8){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x1cc'),_0x1de9f8[_0x6213('0xad')]));var _0x245991=this[_0x6213('0x10')][_0x6213('0x5c')](_0x6213('0x1cd'),[_0x1de9f8[_0x6213('0x1ce')],_0x1de9f8[_0x6213('0x7b')]]);if(_0x245991[_0x6213('0xa8')]===-0x1){return _0x245991;}return this[_0x6213('0x10')][_0x6213('0xae')](util[_0x6213('0x2f')](_0x6213('0xc7'),_0x6213('0x1cd'),_0x1de9f8[_0x6213('0x1ce')]));};AGIVertices[_0x6213('0x13')][_0x6213('0x1cf')]=function(_0x2b633d){logger[_0x6213('0x35')](util[_0x6213('0x2f')](_0x6213('0x1d0'),_0x2b633d[_0x6213('0xad')]));if(!this[_0x6213('0x89')](_0x2b633d[_0x6213('0xdd')])){return this['channel'][_0x6213('0x33')](_0x2b633d,_0x6213('0x1ab'));}var _0x4755b6=this[_0x6213('0x14')][_0x6213('0xc3')](this,_0x2b633d['variable_id']);if(!_0x4755b6){return this['channel'][_0x6213('0x33')](_0x2b633d,_0x6213('0xdf'));}var _0x113862=this[_0x6213('0x10')][_0x6213('0x14')](_0x4755b6);return{'code':0xc8,'result':_0x113862['extra']?_0x113862[_0x6213('0xa7')]:'-'};};String[_0x6213('0x13')][_0x6213('0xa6')]=function(_0x5bb603,_0x2015b0){return this['split'](_0x5bb603)['join'](_0x2015b0);};module[_0x6213('0x1d1')]=AGIVertices;
\ No newline at end of file
+var _0xc933=['SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','DIAL','SIP/%s','opts','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','dialogflow','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','out','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','Executed\x20command\x20%s','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20found','getData','response','mindigit','maxdigit','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','aws\x20Polly\x20%s\x20file\x20created','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','condition','no\x20condition\x20configured','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','true','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','no\x20find\x20by\x20configured','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','menu','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','getPause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','macro','gosub','position','QUEUE','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','%s_STATUS_CODE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','sms_account_id','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','Trying\x20Google\x20Cloud\x20TTS\x20%s','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','success','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','join','exports','util','lodash','shelljs','odbc','randomstring','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawBody','getdigits','getsecretdigits','channel','getVariable','rpc','getVariableById','then','name','catch','prototype','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getMailAccount','sendMailMessage','mailRpc','getIntervals','getIntervalById','IntervalId','map','interval','getSoundPath','%s/sounds/converted/%s','getQueryOdbc','open','error','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','callback','toString','callback_priority','agentPause','agent','agentUnpause','agentLogout','agentLogin','format','%s/%s@from-sip/n','shellCommand','exec','trim','googleCloudTTS','apiKey','text','languageCode','en-US','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','timeout','number','includes','POST','PUT','method','toUpperCase','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','parse','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','render','stringify','body','statusCode','statusMessage','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','hasOwnProperty','isString','replaceAllVariables','isPlainObject','recursiveNodeIndex','saveRestApiResult','%s.%s','isArray','length','setVariable','split','replaceAll','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','sync','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','no\x20text\x20configured','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','result','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','MRCPRecog'];(function(_0x2ab5d7,_0x1243d9){var _0x516388=function(_0x412cd1){while(--_0x412cd1){_0x2ab5d7['push'](_0x2ab5d7['shift']());}};_0x516388(++_0x1243d9);}(_0xc933,0xf9));var _0x3c93=function(_0x1d2821,_0x18698a){_0x1d2821=_0x1d2821-0x0;var _0x3a8497=_0xc933[_0x1d2821];return _0x3a8497;};'use strict';var fs=require('fs');var util=require(_0x3c93('0x0'));var _=require(_0x3c93('0x1'));var sh=require(_0x3c93('0x2'));var odbc=require(_0x3c93('0x3'))();var rs=require(_0x3c93('0x4'));var moment=require('moment');var Mustache=require(_0x3c93('0x5'));var rp=require(_0x3c93('0x6'));var logger=require(_0x3c93('0x7'))(_0x3c93('0x8'));var config=require(_0x3c93('0x9'));var shared=require('../../config/environment/shared');var scripts=require(_0x3c93('0xa'));var FILES_PATH=_0x3c93('0xb');var recursiveMapAttributes=['rawHeaders',_0x3c93('0xc')];var verticesWithRetry=['menu',_0x3c93('0xd'),_0x3c93('0xe')];var AGIVertices=function(_0x137d3c,_0xb32593,_0x46f9e8){this[_0x3c93('0xf')]=_0x137d3c;this['rpc']=_0xb32593;this['mailRpc']=_0x46f9e8;};AGIVertices['prototype'][_0x3c93('0x10')]=function(_0x39ff98,_0x2a904f){this[_0x3c93('0x11')][_0x3c93('0x12')](_0x39ff98)[_0x3c93('0x13')](function(_0x283ed8){_0x2a904f(null,_0x283ed8?_0x283ed8[_0x3c93('0x14')]:![]);})[_0x3c93('0x15')](function(_0x2c0bce){_0x2a904f(_0x2c0bce);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x17')]=function(_0xaa2eae,_0x1fc09c){this[_0x3c93('0x11')][_0x3c93('0x18')](_0xaa2eae)[_0x3c93('0x13')](function(_0x5c01ba){_0x1fc09c(null,_0x5c01ba?_0x5c01ba['name']:![]);})[_0x3c93('0x15')](function(_0x3a7ae7){_0x1fc09c(_0x3a7ae7);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x19')]=function(_0x35890a,_0x8b3fdc){this[_0x3c93('0x11')]['getSquareProjectById'](_0x35890a)['then'](function(_0xe14ac8){_0x8b3fdc(null,_0xe14ac8?_0xe14ac8[_0x3c93('0x14')]:![]);})['catch'](function(_0x54a8d8){_0x8b3fdc(_0x54a8d8);});};AGIVertices['prototype'][_0x3c93('0x1a')]=function(_0x599def,_0x47da2e){this['rpc'][_0x3c93('0x1b')](_0x599def)[_0x3c93('0x13')](function(_0xa4bcfb){_0x47da2e(null,_0xa4bcfb?_0xa4bcfb[_0x3c93('0x1c')]:![]);})[_0x3c93('0x15')](function(_0x269d3a){_0x47da2e(_0x269d3a);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x1d')]=function(_0x3207ac,_0x3d88c2){this['rpc'][_0x3c93('0x1e')](_0x3207ac)[_0x3c93('0x13')](function(_0xcbc8b){_0x3d88c2(null,_0xcbc8b?_0xcbc8b[_0x3c93('0x14')]:![]);})[_0x3c93('0x15')](function(_0x329cd3){_0x3d88c2(_0x329cd3);});};AGIVertices['prototype'][_0x3c93('0x1f')]=function(_0x3932f2,_0x88f6d4){this[_0x3c93('0x11')][_0x3c93('0x20')](_0x3932f2)[_0x3c93('0x13')](function(_0x1a180f){_0x88f6d4(null,_0x1a180f?_0x1a180f[_0x3c93('0x14')]:![]);})[_0x3c93('0x15')](function(_0x568e40){_0x88f6d4(_0x568e40);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x21')]=function(_0x3f49a5,_0x51de7b){var _0x129354=this;this[_0x3c93('0x11')][_0x3c93('0x22')](_0x3f49a5)[_0x3c93('0x13')](function(_0x4d7a78){_0x51de7b(null,_0x4d7a78?_0x129354['getSoundPath'](_0x4d7a78['save_name']):![]);})[_0x3c93('0x15')](function(_0x27d63e){_0x51de7b(_0x27d63e);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x23')]=function(_0x5e5601,_0x186b30){this['rpc']['getMailAccountById'](_0x5e5601)[_0x3c93('0x13')](function(_0x2dfb63){_0x186b30(null,_0x2dfb63?_0x2dfb63:![]);})[_0x3c93('0x15')](function(_0x5b1d6f){_0x186b30(_0x5b1d6f);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x24')]=function(_0x2947a1,_0x57e7d3,_0x28d04f){this[_0x3c93('0x25')][_0x3c93('0x24')](_0x2947a1,_0x57e7d3)[_0x3c93('0x13')](function(){_0x28d04f(null);})[_0x3c93('0x15')](function(_0x34892b){_0x28d04f(_0x34892b);});};AGIVertices['prototype'][_0x3c93('0x26')]=function(_0x3da67b,_0x57efa7){this[_0x3c93('0x11')][_0x3c93('0x27')](_0x3da67b)[_0x3c93('0x13')](function(_0x4e5c98){if(_0x4e5c98){if(_0x4e5c98[_0x3c93('0x28')]){_0x57efa7(null,[_0x4e5c98['interval']]);}else{_0x57efa7(null,_[_0x3c93('0x29')](_0x4e5c98['Intervals'],_0x3c93('0x2a')));}}else{_0x57efa7(null,![]);}})[_0x3c93('0x15')](function(_0x31b2c5){_0x57efa7(_0x31b2c5);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x2b')]=function(_0x41ea9f){return util['format'](_0x3c93('0x2c'),FILES_PATH,_0x41ea9f);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x2d')]=function(_0x28dc82,_0x1c2526,_0xb00081){odbc[_0x3c93('0x2e')](_0x28dc82,function(_0x56a8b8){if(_0x56a8b8){logger[_0x3c93('0x2f')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x56a8b8);_0xb00081(_0x56a8b8);}else{logger[_0x3c93('0x30')](_0x3c93('0x31'));odbc[_0x3c93('0x32')](_0x1c2526,function(_0x4ced96,_0x2bf5ad){if(_0x4ced96){logger[_0x3c93('0x30')](_0x3c93('0x33'),_0x1c2526);_0xb00081(_0x4ced96);}else{logger['info']('Query\x20executed\x20correctly\x20%s',_0x1c2526);odbc[_0x3c93('0x34')](function(_0x535226){if(_0x535226){logger[_0x3c93('0x2f')](_0x3c93('0x35'),_0x535226);}_0xb00081(null,_0x2bf5ad);});}});}});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x36')]=function(_0x2cad40,_0x235b5c){this[_0x3c93('0x11')][_0x3c93('0x37')](_0x2cad40)[_0x3c93('0x13')](function(_0x4c8793){_0x235b5c(null,_0x4c8793?_0x4c8793:![]);})['catch'](function(_0xd9301c){_0x235b5c(_0xd9301c);});};AGIVertices['prototype'][_0x3c93('0x38')]=function(_0x1f48d3,_0x1ccaf2){this['rpc'][_0x3c93('0x38')](_0x1f48d3)[_0x3c93('0x13')](function(_0x45559d){_0x1ccaf2(null,_0x45559d);})[_0x3c93('0x15')](function(_0x47053c){_0x1ccaf2(_0x47053c);});};AGIVertices[_0x3c93('0x16')]['createSquareDetailsReport']=function(_0x5c101a,_0x1acef7,_0x2c2ce3){this[_0x3c93('0x11')][_0x3c93('0x39')]({'uniqueid':this[_0x3c93('0xf')][_0x3c93('0x3a')],'node':_0x5c101a[_0x3c93('0x3b')],'application':_0x5c101a[_0x3c93('0x3c')],'data':_0x1acef7||null,'project_name':this[_0x3c93('0xf')][_0x3c93('0x3d')],'callerid':this[_0x3c93('0xf')][_0x3c93('0x3e')]})[_0x3c93('0x13')](function(_0x23dd36){if(_0x2c2ce3){_0x2c2ce3(null,_0x23dd36);}})[_0x3c93('0x15')](function(_0xc1311a){if(_0x2c2ce3){_0x2c2ce3(_0xc1311a);}});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x3f')]=function(_0x15ff92,_0x6ffc8d,_0x4b15a0,_0x502468){this[_0x3c93('0x11')][_0x3c93('0x3f')]({'uniqueid':this['channel'][_0x3c93('0x3a')],'callerid':this[_0x3c93('0xf')][_0x3c93('0x3e')],'calleridname':this['channel'][_0x3c93('0x40')],'context':this[_0x3c93('0xf')][_0x3c93('0x41')],'extension':this['channel'][_0x3c93('0x42')],'priority':this['channel'][_0x3c93('0x43')],'accountcode':this['channel'][_0x3c93('0x44')],'dnid':this[_0x3c93('0xf')]['dnid'],'projectName':this[_0x3c93('0xf')][_0x3c93('0x3d')],'saveName':_0x6ffc8d,'filename':_0x15ff92[_0x3c93('0x45')]||_0x6ffc8d,'savePath':_0x4b15a0})[_0x3c93('0x13')](function(_0x3a7034){_0x502468(null,_0x3a7034);})[_0x3c93('0x15')](function(_0x50c10c){_0x502468(_0x50c10c);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x46')]=function(_0x427f2d,_0xd2b3d1,_0x35bb28,_0x239ffa,_0x2ef73d){this[_0x3c93('0x11')][_0x3c93('0x46')]({'uniqueid':this[_0x3c93('0xf')][_0x3c93('0x3a')],'body':_0x427f2d,'direction':_0xd2b3d1,'providerName':_0x35bb28,'providerResponse':_0x239ffa})[_0x3c93('0x13')](function(_0x38be76){if(_0x2ef73d){_0x2ef73d(null,_0x38be76);}})[_0x3c93('0x15')](function(_0x4f492c){if(_0x2ef73d){_0x2ef73d(_0x4f492c);}});};AGIVertices['prototype'][_0x3c93('0x47')]=function(_0x37e126,_0x2ff8c5){this['rpc'][_0x3c93('0x47')]({'firstName':_[_0x3c93('0x48')](_0x37e126[_0x3c93('0x14')])||_[_0x3c93('0x49')](_0x37e126[_0x3c93('0x14')])?_0x3c93('0x4a')+Math[_0x3c93('0x4b')]():_0x37e126['name'],'lastName':_['isEmpty'](_0x37e126['lastName'])||_[_0x3c93('0x49')](_0x37e126[_0x3c93('0x4c')])?null:_0x37e126[_0x3c93('0x4c')],'phone':_0x37e126[_0x3c93('0x4d')],'ListId':_0x37e126[_0x3c93('0x4e')],'scheduledat':_0x37e126[_0x3c93('0x4f')],'callbackUniqueid':this[_0x3c93('0xf')][_0x3c93('0x3a')],'tags':_0x3c93('0x50'),'description':'Callback\x20scheduled\x20at\x20'+_0x37e126['scheduledAt'][_0x3c93('0x51')](),'priority':_0x37e126[_0x3c93('0x52')]})[_0x3c93('0x13')](function(_0x53a00d){_0x2ff8c5(null,_0x53a00d);})[_0x3c93('0x15')](function(_0x3069a7){_0x2ff8c5(_0x3069a7);});};AGIVertices[_0x3c93('0x16')]['getPause']=function(_0x2d7914,_0x4e897a){this['rpc']['getPauseById'](_0x2d7914)[_0x3c93('0x13')](function(_0x5a2788){_0x4e897a(null,_0x5a2788?_0x5a2788['name']:![]);})['catch'](function(_0x23daa3){_0x4e897a(_0x23daa3);});};AGIVertices['prototype'][_0x3c93('0x53')]=function(_0x139e9a,_0x57d250,_0x1e73bb){var _0x6ebb7c={'role':_0x3c93('0x54')};_0x6ebb7c[_0x139e9a]=this[_0x3c93('0xf')]['callerid'];this['rpc'][_0x3c93('0x53')](_0x6ebb7c,_0x57d250,this[_0x3c93('0xf')][_0x3c93('0x3a')])[_0x3c93('0x13')](function(_0x26113e){_0x1e73bb(null,_[_0x3c93('0x49')](_0x26113e)?![]:!![]);})[_0x3c93('0x15')](function(_0x15ce86){logger[_0x3c93('0x2f')](_0x15ce86);_0x1e73bb(null,![]);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x55')]=function(_0x5638bc,_0x3dd0e7){var _0x38ab0c={'role':_0x3c93('0x54')};_0x38ab0c[_0x5638bc]=this['channel'][_0x3c93('0x3e')];this['rpc'][_0x3c93('0x55')](_0x38ab0c)['then'](function(_0x33c831){_0x3dd0e7(null,_[_0x3c93('0x49')](_0x33c831)?![]:!![]);})[_0x3c93('0x15')](function(_0x3a646c){logger[_0x3c93('0x2f')](_0x3a646c);_0x3dd0e7(null,![]);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x56')]=function(_0x46d76e,_0x147563){var _0x16680d={'role':'agent'};_0x16680d[_0x46d76e]=this[_0x3c93('0xf')]['callerid'];this[_0x3c93('0x11')][_0x3c93('0x56')](_0x16680d)[_0x3c93('0x13')](function(_0x4fa66a){_0x147563(null,_[_0x3c93('0x49')](_0x4fa66a)?![]:!![]);})['catch'](function(_0x3431da){logger[_0x3c93('0x2f')](_0x3431da);_0x147563(null,![]);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x57')]=function(_0x39d574,_0x1b8d40){var _0x1e0f3f={'role':_0x3c93('0x54')};_0x1e0f3f[_0x39d574]=this[_0x3c93('0xf')][_0x3c93('0x3e')];var _0x9d31d5=_0x39d574!='internal'?util[_0x3c93('0x58')](_0x3c93('0x59'),'LOCAL',this[_0x3c93('0xf')][_0x3c93('0x3e')]):undefined;this['rpc'][_0x3c93('0x57')](_0x1e0f3f,_0x9d31d5)[_0x3c93('0x13')](function(_0xad4578){_0x1b8d40(null,_['isNil'](_0xad4578)?![]:!![]);})[_0x3c93('0x15')](function(_0x13f207){logger['error'](_0x13f207);_0x1b8d40(null,![]);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x5a')]=function(_0x2d131e,_0x59f6de){sh[_0x3c93('0x5b')](_[_0x3c93('0x5c')](_0x2d131e),function(_0x2f543d,_0x2b098e){var _0x847d1e=_0x2b098e['replace'](/(\r\n|\n|\r)/gm,'');_0x59f6de(null,_0x847d1e);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x5d')]=function(_0x1ff4a4,_0x4d9c80){scripts['googleCloudTTS'](_0x1ff4a4[_0x3c93('0x5e')],_0x1ff4a4['google_cloud_tts_text_type']||_0x3c93('0x5f'),_0x1ff4a4[_0x3c93('0x5f')],_0x1ff4a4[_0x3c93('0x60')]||_0x3c93('0x61'),_0x1ff4a4['ssmlGender']||_0x3c93('0x62'),_0x1ff4a4[_0x3c93('0x63')]||_0x3c93('0x64'))[_0x3c93('0x13')](function(_0x2b6a7b){_0x4d9c80(null,_0x2b6a7b);})[_0x3c93('0x15')](function(_0x34e5a1){_0x4d9c80(_0x34e5a1);});};AGIVertices['prototype'][_0x3c93('0x65')]=function(_0x7ece5d,_0x960aeb){scripts[_0x3c93('0x65')](_0x7ece5d[_0x3c93('0x5f')],_0x7ece5d[_0x3c93('0x66')]||'en',0x1)[_0x3c93('0x13')](function(_0x49cdf3){_0x960aeb(null,_0x49cdf3);})['catch'](function(_0x4f6c5f){_0x960aeb(_0x4f6c5f);});};AGIVertices['prototype'][_0x3c93('0x67')]=function(_0x2c54bc,_0x335a0c){var _0x2ce986={'uri':_0x2c54bc[_0x3c93('0x68')],'method':_0x2c54bc['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2c54bc[_0x3c93('0x69')])===_0x3c93('0x6a')&&parseInt(_0x2c54bc['timeout'])>=0x1?parseInt(_0x2c54bc[_0x3c93('0x69')])*0x3e8:0x5*0x3e8};if(_[_0x3c93('0x6b')]([_0x3c93('0x6c'),_0x3c93('0x6d')],_0x2ce986[_0x3c93('0x6e')][_0x3c93('0x6f')]())){try{_0x2ce986['body']=_0x2c54bc[_0x3c93('0xc')]?JSON['parse'](_0x2c54bc['rawBody']):{};}catch(_0xf83954){logger['error'](_0x3c93('0x70'),_0xf83954);}}try{_0x2ce986[_0x3c93('0x71')]=_0x2c54bc[_0x3c93('0x72')]?JSON[_0x3c93('0x73')](_0x2c54bc[_0x3c93('0x72')]):{};}catch(_0x37f435){logger[_0x3c93('0x2f')](_0x3c93('0x74'),_0x37f435);}if(_0x2c54bc[_0x3c93('0x75')]){try{var _0x57a929=require(_0x2c54bc[_0x3c93('0x75')])['sync'](this,_0x2ce986);_0x2ce986['uri']=Mustache[_0x3c93('0x76')](_0x2c54bc[_0x3c93('0x68')],_0x57a929,{},['$$','$$']);if(_0x2ce986[_0x3c93('0x71')]){_0x2ce986[_0x3c93('0x71')]=JSON[_0x3c93('0x73')](Mustache['render'](JSON[_0x3c93('0x77')](_0x2ce986[_0x3c93('0x71')]),_0x57a929,{},['$$','$$']));}if(_0x2ce986[_0x3c93('0x78')]){_0x2ce986[_0x3c93('0x78')]=JSON[_0x3c93('0x73')](Mustache[_0x3c93('0x76')](JSON['stringify'](_0x2ce986[_0x3c93('0x78')]),_0x57a929,{},['$$','$$']));}}catch(_0x5e0724){logger[_0x3c93('0x2f')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5e0724);}}rp(_0x2ce986)[_0x3c93('0x13')](function(_0xa99cc3){var _0x854db8={'statusCode':_0xa99cc3[_0x3c93('0x79')]||0xc8,'statusMessage':_0xa99cc3[_0x3c93('0x7a')]||'OK','headers':_0xa99cc3[_0x3c93('0x71')]||{},'body':_0xa99cc3['body']||{}};_0x335a0c(null,_0x854db8);})['catch'](function(_0x1cb5db){var _0x72593d={'statusCode':_0x1cb5db[_0x3c93('0x79')]||0x1f4,'statusMessage':_0x1cb5db['message']||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x1cb5db['options'][_0x3c93('0x71')]||{},'body':_0x1cb5db[_0x3c93('0x7b')][_0x3c93('0x78')]||{}};_0x335a0c(null,_0x72593d);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x7c')]=function(_0x401d57,_0x12d1e3){scripts['googleDialogflow'](this[_0x3c93('0xf')][_0x3c93('0x3a')],_0x401d57[_0x3c93('0x7d')],_0x401d57[_0x3c93('0x5f')],_0x401d57[_0x3c93('0x7e')]||'en')['then'](function(_0xacb768){_0x12d1e3(null,_0xacb768);})['catch'](function(_0x3f5a07){_0x12d1e3(_0x3f5a07);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x7f')]=function(_0x52caa9,_0xa29e95){scripts[_0x3c93('0x7f')](this[_0x3c93('0xf')]['uniqueid'],_0x52caa9[_0x3c93('0x80')],_0x52caa9['client_email'],_0x52caa9[_0x3c93('0x81')],_0x52caa9[_0x3c93('0x5f')],_0x52caa9[_0x3c93('0x82')]||'en')['then'](function(_0x4ba9aa){_0xa29e95(null,_0x4ba9aa);})[_0x3c93('0x15')](function(_0x327c9e){_0xa29e95(_0x327c9e);});};AGIVertices[_0x3c93('0x16')]['sestekNDA']=function(_0x1e8cd8,_0x4639e7){scripts[_0x3c93('0x83')](this[_0x3c93('0xf')],_0x1e8cd8)[_0x3c93('0x13')](function(_0x114490){_0x4639e7(null,_0x114490);})[_0x3c93('0x15')](function(_0x21d300){_0x4639e7(_0x21d300);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x84')]=function(_0x3f96a0,_0x3b5bb1){scripts['ispeechTTS'](_0x3f96a0[_0x3c93('0x7d')],_0x3f96a0[_0x3c93('0x5f')],_0x3f96a0[_0x3c93('0x85')]||'en-US',_0x3f96a0[_0x3c93('0x86')])[_0x3c93('0x13')](function(_0x1bb6e8){_0x3b5bb1(null,_0x1bb6e8);})[_0x3c93('0x15')](function(_0x287077){_0x3b5bb1(_0x287077);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x87')]=function(_0x2854aa,_0x582972,_0x2e396a){scripts[_0x3c93('0x87')](_0x582972,_0x2854aa[_0x3c93('0x7d')],_0x2854aa[_0x3c93('0x88')]||_0x3c93('0x61'),this[_0x3c93('0x89')](_0x2854aa['model'])?_0x2854aa[_0x3c93('0x8a')]:undefined)[_0x3c93('0x13')](function(_0x38c54f){_0x2e396a(null,_0x38c54f);})[_0x3c93('0x15')](function(_0xd5d7c2){_0x2e396a(_0xd5d7c2);});};AGIVertices['prototype'][_0x3c93('0x8b')]=function(_0x153617,_0x2e4998){scripts[_0x3c93('0x8b')](_0x153617[_0x3c93('0x8c')],_0x153617[_0x3c93('0x8d')],_0x153617[_0x3c93('0x8e')],_0x153617[_0x3c93('0x8f')]||_0x3c93('0x90'),_0x153617[_0x3c93('0x5f')],_0x153617[_0x3c93('0x91')]||_0x3c93('0x5f'))[_0x3c93('0x13')](function(_0x1272e2){_0x2e4998(null,_0x1272e2);})[_0x3c93('0x15')](function(_0x51fb14){_0x2e4998(_0x51fb14);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x92')]=function(_0x353949,_0x54110f){scripts[_0x3c93('0x92')](this[_0x3c93('0xf')][_0x3c93('0x3a')],_0x353949[_0x3c93('0x8c')],_0x353949[_0x3c93('0x8d')],_0x353949['aws_lex_region'],_0x353949['text'],_0x353949[_0x3c93('0x93')])[_0x3c93('0x13')](function(_0x14c371){_0x54110f(null,_0x14c371);})[_0x3c93('0x15')](function(_0x493053){_0x54110f(_0x493053);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x94')]=function(_0x5e8b6c,_0x3f9094,_0x9e99f6){scripts['googleASR'](_0x3f9094,_0x5e8b6c[_0x3c93('0x7d')],_0x5e8b6c[_0x3c93('0x95')]||_0x3c93('0x61'))[_0x3c93('0x13')](function(_0x4083ca){_0x9e99f6(null,_0x4083ca);})['catch'](function(_0xbd2014){_0x9e99f6(_0xbd2014);});};AGIVertices[_0x3c93('0x16')][_0x3c93('0x96')]=function(_0x236039,_0x46aca2,_0x1b19e8){scripts['tildeASR'](_0x46aca2,_0x236039[_0x3c93('0x97')],_0x236039[_0x3c93('0x98')],_0x236039[_0x3c93('0x99')])[_0x3c93('0x13')](function(_0x4efed7){_0x1b19e8(null,_0x4efed7);})[_0x3c93('0x15')](function(_0x1e590e){_0x1b19e8(_0x1e590e);});};AGIVertices['prototype']['clear']=function(_0x1743a7){var _0x13ac4b=_['includes'](verticesWithRetry,_0x1743a7['agicommand'])?_0x1743a7:_['clone'](_0x1743a7);for(var _0x501a13 in _0x13ac4b){if(_0x13ac4b[_0x3c93('0x9a')](_0x501a13)){if(_0x13ac4b[_0x501a13]&&_[_0x3c93('0x9b')](_0x13ac4b[_0x501a13])){if(_['includes'](recursiveMapAttributes,_0x501a13)){_0x13ac4b[_0x501a13]=this['replaceObjectAllVariables'](_0x13ac4b[_0x501a13]);}else{_0x13ac4b[_0x501a13]=this[_0x3c93('0x9c')](_0x13ac4b[_0x501a13]);}}}}return _0x13ac4b;};AGIVertices[_0x3c93('0x16')]['recursiveNodeIndex']=function(_0x45ace4){for(var _0x4e57c7 in _0x45ace4){if(_0x45ace4[_0x3c93('0x9a')](_0x4e57c7)){if(_[_0x3c93('0x9d')](_0x45ace4[_0x4e57c7])){this[_0x3c93('0x9e')](_0x45ace4[_0x4e57c7]);}else if(_['isArray'](_0x45ace4[_0x4e57c7])){for(var _0x3428ce=0x0;_0x3428ce<_0x45ace4[_0x4e57c7]['length'];_0x3428ce++){this[_0x3c93('0x9e')](_0x45ace4[_0x4e57c7][_0x3428ce]);}}else if(_[_0x3c93('0x9b')](_0x45ace4[_0x4e57c7])){_0x45ace4[_0x4e57c7]=this['replaceAllVariables'](_0x45ace4[_0x4e57c7]);}}}};AGIVertices['prototype'][_0x3c93('0x9f')]=function(_0x1cd606,_0x28f796){for(var _0x406d5d in _0x1cd606){if(_0x1cd606[_0x3c93('0x9a')](_0x406d5d)){if(_[_0x3c93('0x9d')](_0x1cd606[_0x406d5d])){if(!_[_0x3c93('0x48')](_0x1cd606[_0x406d5d])){this[_0x3c93('0x9f')](_0x1cd606[_0x406d5d],util[_0x3c93('0x58')](_0x3c93('0xa0'),_0x28f796,_0x406d5d));}}else if(_[_0x3c93('0xa1')](_0x1cd606[_0x406d5d])){for(var _0x4bb272=0x0;_0x4bb272<_0x1cd606[_0x406d5d][_0x3c93('0xa2')];_0x4bb272++){this[_0x3c93('0x9f')](_0x1cd606[_0x406d5d][_0x4bb272],util[_0x3c93('0x58')](_0x3c93('0xa0'),_0x28f796,_0x406d5d+'['+_0x4bb272+']'));}}else{if(!_[_0x3c93('0x49')](_0x1cd606[_0x406d5d])){this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')](_0x3c93('0xa0'),_0x28f796,_0x406d5d),_0x1cd606[_0x406d5d]);}}}}};AGIVertices[_0x3c93('0x16')]['replaceObjectAllVariables']=function(_0x1c493f){try{var _0x23f2ed=JSON[_0x3c93('0x73')](_0x1c493f);this[_0x3c93('0x9e')](_0x23f2ed);return JSON['stringify'](_0x23f2ed);}catch(_0x2e086d){return this['replaceAllVariables'](_0x1c493f);}};AGIVertices[_0x3c93('0x16')][_0x3c93('0x9c')]=function(_0x4f4250){var _0x44e012=_0x4f4250[_0x3c93('0xa4')]('{');for(var _0x3fee55=0x1;_0x3fee55<_0x44e012[_0x3c93('0xa2')];_0x3fee55+=0x1){var _0x58b91d=_0x44e012[_0x3fee55][_0x3c93('0xa4')]('}');if(_0x58b91d[_0x3c93('0xa2')]>0x1){_0x4f4250=_0x4f4250[_0x3c93('0xa5')]('{'+_0x58b91d[0x0]+'}',this[_0x3c93('0xf')][_0x3c93('0x10')](_0x58b91d[0x0])[_0x3c93('0xa6')]||_0x58b91d[0x0]);}}if(_0x44e012[_0x3c93('0xa2')]===0x1){return _0x4f4250[_0x3c93('0x51')]();}return this[_0x3c93('0x9c')](_0x4f4250);};AGIVertices[_0x3c93('0x16')][_0x3c93('0xa7')]=function(_0x55cd9f,_0x45304b){var _0x26ce86=this[_0x3c93('0xf')][_0x3c93('0x10')](_0x55cd9f);if(_0x26ce86['result']===-0x1){return _0x26ce86;}logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xa8'),_0x45304b,_0x26ce86[_0x3c93('0xa6')]));return this[_0x3c93('0xf')]['setVariable'](_0x45304b,_0x26ce86[_0x3c93('0xa6')]);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x89')]=function(_0x7a5bc6){return _0x7a5bc6&&_0x7a5bc6!=='0'&&_0x7a5bc6!=='-1'&&_0x7a5bc6!=='';};AGIVertices[_0x3c93('0x16')]['maxRetry']=function(_0xf3d1d5){this[_0x3c93('0x39')][_0x3c93('0xa9')](this,_0xf3d1d5,'-');_0xf3d1d5['retry']=_0xf3d1d5[_0x3c93('0xaa')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x3c93('0x16')][_0x3c93('0xab')]=function(_0x59383a){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xac'),_0x59383a[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x59383a[_0x3c93('0x5f')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0xad'));}var _0x348dde='\x22'+_0x59383a['text']+'\x22';if(this[_0x3c93('0x89')](_0x59383a[_0x3c93('0x7b')])){_0x348dde+=','+_0x59383a[_0x3c93('0x7b')];}var _0x39f72a=this[_0x3c93('0xf')]['exec'](_0x3c93('0xae'),_0x348dde);if(_0x39f72a['result']===-0x1){return _0x39f72a;}return this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xb0'),_0x348dde));};AGIVertices[_0x3c93('0x16')]['mrcprecog']=function(_0xab7aba){logger[_0x3c93('0x30')](util['format'](_0x3c93('0xb1'),_0xab7aba['label']));if(!this['isConfigured'](_0xab7aba[_0x3c93('0xb2')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0xb3'));}var _0x4b3c84=_0xab7aba[_0x3c93('0xb2')];if(this[_0x3c93('0x89')](_0xab7aba['options'])){_0x4b3c84+=','+_0xab7aba[_0x3c93('0x7b')];}var _0x27f874=this['channel'][_0x3c93('0x5b')]('MRCPRecog',_0x4b3c84);if(_0x27f874[_0x3c93('0xb4')]===-0x1){return _0x27f874;}var _0x468da8=this[_0x3c93('0xa7')]('RECOG_CONFIDENCE()',_0x3c93('0xb5'));if(_0x468da8[_0x3c93('0xb4')]===-0x1){return _0x468da8;}var _0x3690b2=this[_0x3c93('0xa7')](_0x3c93('0xb6'),_0x3c93('0xb7'));if(_0x3690b2[_0x3c93('0xb4')]===-0x1){return _0x3690b2;}var _0x2274b8=this[_0x3c93('0xa7')](_0x3c93('0xb8'),'MRCP_RECOG_INSTANCE');if(_0x2274b8[_0x3c93('0xb4')]===-0x1){return _0x2274b8;}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xb9'),_0x4b3c84));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x8')]=function(_0x215b1c){logger[_0x3c93('0x30')](util['format'](_0x3c93('0xba'),_0x215b1c[_0x3c93('0x3b')]));return this[_0x3c93('0xf')][_0x3c93('0x8')]([_0x215b1c[_0x3c93('0xbb')],_0x215b1c[_0x3c93('0xbc')]]);};AGIVertices['prototype'][_0x3c93('0xbd')]=function(_0x1109d8){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xbe'),_0x1109d8[_0x3c93('0x3b')]));if(this[_0x3c93('0x89')](_0x1109d8['timeout'])){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x1109d8[_0x3c93('0x69')]));var _0xdabc5f=this[_0x3c93('0xf')][_0x3c93('0xbf')](_0x1109d8['timeout']);if(_0xdabc5f['result']===-0x1){return _0xdabc5f;}}return this[_0x3c93('0xf')][_0x3c93('0xbd')]();};AGIVertices[_0x3c93('0x16')][_0x3c93('0x50')]=function(_0x242588){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xc0'),_0x242588[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x242588[_0x3c93('0x4e')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x242588,_0x3c93('0xc1'));}_0x242588[_0x3c93('0x4f')]=moment();if(this[_0x3c93('0x89')](_0x242588['delay'])){_0x242588[_0x3c93('0x4f')]=moment()[_0x3c93('0xc2')](_0x242588['delay'],_0x3c93('0xc3'));}if(!this['isConfigured'](_0x242588[_0x3c93('0x52')])){_0x242588[_0x3c93('0x52')]=0x2;}this[_0x3c93('0x47')][_0x3c93('0xa9')](this,_0x242588);return this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xc4'),_0x242588[_0x3c93('0x4d')],_0x242588[_0x3c93('0x4e')],_0x242588[_0x3c93('0x4f')]));};AGIVertices['prototype'][_0x3c93('0xc5')]=function(_0x4f12a4){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xc6'),_0x4f12a4['label']));var _0x247a71=this[_0x3c93('0xf')]['exec'](_0x4f12a4['application'],_0x4f12a4['options']);if(_0x247a71['result']===-0x1){return _0x247a71;}return this[_0x3c93('0xf')]['noop'](util['format'](_0x3c93('0xc7'),_0x4f12a4['application'],_0x4f12a4[_0x3c93('0x7b')]));};AGIVertices[_0x3c93('0x16')][_0x3c93('0xc8')]=function(_0x30525d){logger[_0x3c93('0x30')](util['format'](_0x3c93('0xc9'),_0x30525d[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x30525d[_0x3c93('0x5f')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')]('no\x20text\x20configured');}var _0x566479='\x22'+_0x30525d['text']+'\x22';if(this['isConfigured'](_0x30525d[_0x3c93('0x7b')])){_0x566479+=','+_0x30525d[_0x3c93('0x7b')];}var _0x221c7=this[_0x3c93('0xf')]['exec'](_0x3c93('0xae'),_0x566479);if(_0x221c7[_0x3c93('0xb4')]===-0x1){return _0x221c7;}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xb0'),_0x566479));};AGIVertices[_0x3c93('0x16')][_0x3c93('0xca')]=function(_0x5a991e){logger[_0x3c93('0x30')](util['format'](_0x3c93('0xcb'),_0x5a991e['label']));if(!this[_0x3c93('0x89')](_0x5a991e[_0x3c93('0x5f')])){return this['channel']['noop'](_0x3c93('0xad'));}var _0x1710ef='\x22'+_0x5a991e[_0x3c93('0x5f')]+'\x22';if(this['isConfigured'](_0x5a991e[_0x3c93('0x7b')])){_0x1710ef+=','+_0x5a991e[_0x3c93('0x7b')];}var _0xc2e26d=this[_0x3c93('0xf')][_0x3c93('0x5b')]('MRCPSynth',_0x1710ef);if(_0xc2e26d[_0x3c93('0xb4')]===-0x1){return _0xc2e26d;}return this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')]('Executed\x20command\x20MRCPSynth\x20%s',_0x1710ef));};AGIVertices[_0x3c93('0x16')][_0x3c93('0xcc')]=function(_0x2504a5){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xcd'),_0x2504a5[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x2504a5[_0x3c93('0xb2')])){return this['channel'][_0x3c93('0xaf')](_0x3c93('0xb3'));}var _0xd76b42=_0x2504a5[_0x3c93('0xb2')];if(this[_0x3c93('0x89')](_0x2504a5[_0x3c93('0x7b')])){_0xd76b42+=','+_0x2504a5['options'];}var _0x14ee45=this[_0x3c93('0xf')][_0x3c93('0x5b')]('MRCPRecog',_0xd76b42);if(_0x14ee45[_0x3c93('0xb4')]===-0x1){return _0x14ee45;}var _0x4c8efa=this[_0x3c93('0xa7')](_0x3c93('0xce'),_0x3c93('0xcf'));if(_0x4c8efa['result']===-0x1){return _0x4c8efa;}var _0x3ba956=this[_0x3c93('0xa7')](_0x3c93('0xb6'),_0x3c93('0xd0'));if(_0x3ba956[_0x3c93('0xb4')]===-0x1){return _0x3ba956;}var _0x24c8e4=this[_0x3c93('0xa7')](_0x3c93('0xb8'),_0x3c93('0xd1'));if(_0x24c8e4[_0x3c93('0xb4')]===-0x1){return _0x24c8e4;}return this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xb9'),_0xd76b42));};AGIVertices[_0x3c93('0x16')][_0x3c93('0xd2')]=function(_0x48bd3f){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xd3'),_0x48bd3f[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x48bd3f[_0x3c93('0xb2')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x335f13=_0x48bd3f['grammar'];if(this[_0x3c93('0x89')](_0x48bd3f['options'])){_0x335f13+=','+_0x48bd3f[_0x3c93('0x7b')];}var _0x3be612=this[_0x3c93('0xf')]['exec'](_0x3c93('0xd4'),_0x335f13);if(_0x3be612['result']===-0x1){return _0x3be612;}var _0xfe8dd4=this[_0x3c93('0xa7')](_0x3c93('0xce'),_0x3c93('0xd5'));if(_0xfe8dd4[_0x3c93('0xb4')]===-0x1){return _0xfe8dd4;}var _0xbea75f=this['getAndSetVariable'](_0x3c93('0xb6'),_0x3c93('0xd6'));if(_0xbea75f[_0x3c93('0xb4')]===-0x1){return _0xbea75f;}var _0x2ffc6a=this[_0x3c93('0xa7')]('RECOG_INSTANCE()',_0x3c93('0xd7'));if(_0x2ffc6a[_0x3c93('0xb4')]===-0x1){return _0x2ffc6a;}return this['channel'][_0x3c93('0xaf')](util['format'](_0x3c93('0xb9'),_0x335f13));};AGIVertices[_0x3c93('0x16')][_0x3c93('0xd8')]=function(_0x3edcca){logger['info'](util[_0x3c93('0x58')](_0x3c93('0xd9'),_0x3edcca[_0x3c93('0x3b')]));if(!this['isConfigured'](_0x3edcca[_0x3c93('0xda')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x3edcca,_0x3c93('0xdb'));}var _0x5a7751=this[_0x3c93('0x1a')]['sync'](this,_0x3edcca['odbc_id']);if(!_0x5a7751){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x3edcca,_0x3c93('0xdc'));}if(!this['isConfigured'](_0x3edcca['query'])){return this[_0x3c93('0xf')]['error'](_0x3edcca,_0x3c93('0xdd'));}var _0x20b4d2=_0x3edcca[_0x3c93('0x32')][_0x3c93('0xde')](/(\r\n|\n|\r)/gm,'\x20');this[_0x3c93('0xf')][_0x3c93('0xaf')](util['format'](_0x3c93('0xdf'),_0x20b4d2));var _0x1af825=this['getQueryOdbc'][_0x3c93('0xa9')](this,_0x5a7751,_0x20b4d2);this[_0x3c93('0x39')][_0x3c93('0xa9')](this,_0x3edcca,_0x20b4d2);if(!this['isConfigured'](_0x3edcca[_0x3c93('0xe0')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0xe1'));}var _0x5c3bc9=this[_0x3c93('0x10')][_0x3c93('0xa9')](this,_0x3edcca['variable_id']);if(!_0x5c3bc9){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x3edcca,_0x3c93('0xe2'));}var _0x57909c=this;_0x1af825[_0x3c93('0xe3')](function(_0x3c06c3,_0xe60eb7){Object[_0x3c93('0xe4')](_0x3c06c3)['forEach'](function(_0x4e58f4){_0x57909c[_0x3c93('0xf')]['setVariable'](util['format'](_0x3c93('0xe5'),_0x5c3bc9,_0xe60eb7,_0x4e58f4),_0x3c06c3[_0x4e58f4]);});});this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')](_0x3c93('0xe6'),_0x5c3bc9),_0x1af825[_0x3c93('0xa2')]);return this[_0x3c93('0xf')]['noop'](util['format']('variable\x20%s\x20set',_0x5c3bc9));};AGIVertices[_0x3c93('0x16')]['dial']=function(_0x3deb8e){logger['debug'](util[_0x3c93('0x58')](_0x3c93('0xe7'),_0x3deb8e[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x3deb8e[_0x3c93('0xe8')])){return this['channel'][_0x3c93('0x2f')](_0x3deb8e,_0x3c93('0xe9'));}var _0x40a945=this[_0x3c93('0x1d')]['sync'](this,_0x3deb8e[_0x3c93('0xe8')]);if(!_0x40a945){return this[_0x3c93('0xf')]['error'](_0x3deb8e,'no\x20user\x20found');}var _0xc3f5b8=this['channel'][_0x3c93('0x5b')](_0x3c93('0xea'),[util[_0x3c93('0x58')](_0x3c93('0xeb'),_0x40a945),_0x3deb8e['timeout'],_0x3deb8e[_0x3c93('0xec')],_0x3deb8e[_0x3c93('0x68')]]);if(_0xc3f5b8[_0x3c93('0xb4')]===-0x1){return _0xc3f5b8;}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0x3c93('0x16')]['dialogflow']=function(_0x49f895){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xed'),_0x49f895[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x49f895[_0x3c93('0x7d')])){return this['channel'][_0x3c93('0xaf')](_0x3c93('0xee'));}if(!this[_0x3c93('0x89')](_0x49f895['text'])){return this['channel']['noop']('no\x20text\x20configured');}this[_0x3c93('0xf')][_0x3c93('0xef')]=!![];this[_0x3c93('0x39')](_0x49f895);this[_0x3c93('0x46')](_0x49f895[_0x3c93('0x5f')],'in','','');this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0xf0'),_0x49f895[_0x3c93('0x5f')]));var _0x111d73=this[_0x3c93('0x7c')][_0x3c93('0xa9')](this,_0x49f895);if(_0x111d73){for(var _0x645bb4 in _0x111d73){if(_0x111d73[_0x3c93('0x9a')](_0x645bb4)){this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')](_0x3c93('0xf1'),_0x645bb4[_0x3c93('0x6f')]()),_0x111d73[_0x645bb4]);}}this[_0x3c93('0x46')](_0x111d73[_0x3c93('0xf2')],'out',_0x3c93('0xf3'),'');return this['channel'][_0x3c93('0xaf')](util['format'](_0x3c93('0xf4'),_0x111d73[_0x3c93('0xf2')]));}return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x49f895,_0x3c93('0xf5'));};AGIVertices[_0x3c93('0x16')][_0x3c93('0xf6')]=function(_0x5740dc){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0xf7'),_0x5740dc['label']));if(!this[_0x3c93('0x89')](_0x5740dc[_0x3c93('0x80')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0xf8'));}if(!this[_0x3c93('0x89')](_0x5740dc[_0x3c93('0xf9')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0xfa'));}if(!this[_0x3c93('0x89')](_0x5740dc['private_key'])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0xfb'));}if(!this[_0x3c93('0x89')](_0x5740dc[_0x3c93('0x82')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0xfc'));}if(!this[_0x3c93('0x89')](_0x5740dc[_0x3c93('0x5f')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0xad'));}this['channel']['bot']=!![];this[_0x3c93('0x39')](_0x5740dc);this[_0x3c93('0x46')](_0x5740dc[_0x3c93('0x5f')],'in','','');this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xfd'),_0x5740dc[_0x3c93('0x5f')]));var _0x8cf9d3=this[_0x3c93('0x7f')][_0x3c93('0xa9')](this,_0x5740dc);if(_0x8cf9d3){for(var _0x5a56b9 in _0x8cf9d3){if(_0x8cf9d3[_0x3c93('0x9a')](_0x5a56b9)){if(_0x5a56b9!==_0x3c93('0xfe')){this[_0x3c93('0xf')]['setVariable'](util[_0x3c93('0x58')](_0x3c93('0xf1'),_0x5a56b9['toUpperCase']()),_0x8cf9d3[_0x5a56b9]);}}}this[_0x3c93('0x46')](_0x8cf9d3[_0x3c93('0xf2')],_0x3c93('0xff'),_0x3c93('0xf6'),_0x8cf9d3[_0x3c93('0xfe')]);return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x100'),_0x8cf9d3[_0x3c93('0xf2')]));}return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x5740dc,_0x3c93('0x101'));};AGIVertices[_0x3c93('0x16')]['sesteknda']=function(_0x2272f4){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x102'),_0x2272f4['label']));if(!this[_0x3c93('0x89')](_0x2272f4[_0x3c93('0x103')])){return this['channel'][_0x3c93('0xaf')](_0x3c93('0x104'));}if(!this[_0x3c93('0x89')](_0x2272f4[_0x3c93('0x105')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')]('no\x20username\x20configured');}if(!this[_0x3c93('0x89')](_0x2272f4[_0x3c93('0x106')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0x107'));}if(!this['isConfigured'](_0x2272f4[_0x3c93('0x108')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0xad'));}this['channel'][_0x3c93('0xef')]=!![];this[_0x3c93('0x39')](_0x2272f4);this['createSquareMessage'](_0x2272f4['text'],'in','','');this['channel']['noop'](util[_0x3c93('0x58')](_0x3c93('0x109'),_0x2272f4['text']));var _0x118760=this[_0x3c93('0x83')]['sync'](this,_0x2272f4);if(_0x118760){for(var _0x4f2880 in _0x118760){if(_0x118760['hasOwnProperty'](_0x4f2880)){this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')](_0x3c93('0x10a'),_0x4f2880[_0x3c93('0x6f')]()),_0x118760[_0x4f2880]);}}this[_0x3c93('0x46')](_0x118760[_0x3c93('0xf2')],_0x3c93('0xff'),_0x3c93('0x10b'),'');if(_0x118760['audiofile']){this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x10c'),_0x118760[_0x3c93('0x10d')]));var _0x6cba05=this[_0x3c93('0xf')][_0x3c93('0x10e')](_0x118760[_0x3c93('0x10d')]);try{fs[_0x3c93('0x10f')](_0x118760[_0x3c93('0x10d')]+_0x3c93('0x110'));}catch(_0x4d6c9d){logger[_0x3c93('0x2f')](_0x4d6c9d);}return _0x6cba05;}else{return this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0x111'),_0x118760['speech']));}}return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x2272f4,_0x3c93('0x112'));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x113')]=function(_0x1b9b77){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x114'),_0x1b9b77[_0x3c93('0x3b')]));return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0x113'));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x115')]=function(_0x420db8){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x116'),_0x420db8[_0x3c93('0x3b')]));var _0x2991fc='';if(_0x420db8[_0x3c93('0x117')]){if(!this[_0x3c93('0x89')](_0x420db8['trunk_id'])){return this['channel'][_0x3c93('0x2f')](_0x420db8,_0x3c93('0x118'));}else{var _0x511f84=parseInt(_0x420db8[_0x3c93('0x117')],0xa);if(isNaN(_0x511f84)){_0x2991fc=_0x420db8[_0x3c93('0x117')];}else{_0x2991fc=this[_0x3c93('0x1f')][_0x3c93('0xa9')](this,_0x420db8[_0x3c93('0x117')]);if(!_0x2991fc){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x420db8,_0x3c93('0x119'));}}}}else if(_0x420db8['trunk_name']){_0x2991fc=_0x420db8[_0x3c93('0x11a')];}else{return this['channel'][_0x3c93('0x2f')](_0x420db8,_0x3c93('0x118'));}var _0x4d6244=this['channel'][_0x3c93('0x5b')](_0x3c93('0xea'),[util[_0x3c93('0x58')]('SIP/%s/%s',_0x2991fc,_0x420db8[_0x3c93('0x4d')]),_0x420db8[_0x3c93('0x69')],_0x420db8[_0x3c93('0xec')],_0x420db8[_0x3c93('0x68')]]);if(_0x4d6244[_0x3c93('0xb4')]===-0x1){return _0x4d6244;}return this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x11b'),'DIAL'));};AGIVertices['prototype'][_0x3c93('0x11c')]=function(_0x507405){logger['info'](util[_0x3c93('0x58')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x507405[_0x3c93('0x3b')]));return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0x11c'));};AGIVertices[_0x3c93('0x16')]['getdigits']=function(_0x5525c8){logger['info'](util[_0x3c93('0x58')](_0x3c93('0x11d'),_0x5525c8['label']));if(_0x5525c8[_0x3c93('0x11e')]===0x0){return this[_0x3c93('0xaa')](_0x5525c8);}_0x5525c8['retry']-=0x1;if(!this[_0x3c93('0x89')](_0x5525c8[_0x3c93('0x11f')])){return this['channel'][_0x3c93('0x2f')](_0x5525c8,'no\x20file\x20audio\x20selected');}var _0x4c83ad=this[_0x3c93('0x21')][_0x3c93('0xa9')](this,_0x5525c8['file_id']);if(!_0x4c83ad){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x5525c8,_0x3c93('0x120'));}if(!this['isConfigured'](_0x5525c8[_0x3c93('0xe0')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x475c21=this[_0x3c93('0xf')][_0x3c93('0x121')](_0x4c83ad,_0x5525c8[_0x3c93('0x122')],_0x5525c8['maxdigit']);var _0xe5df19=_0x475c21['result']?_0x475c21[_0x3c93('0xb4')][_0x3c93('0x51')]():'';logger[_0x3c93('0x30')]('test',JSON[_0x3c93('0x77')](_0x475c21));if(_0x475c21[_0x3c93('0xb4')]===-0x1){this[_0x3c93('0x39')][_0x3c93('0xa9')](this,_0x5525c8,_0xe5df19);return _0x475c21;}else if(_0x475c21['extra']===_0x3c93('0x69')){_0x475c21[_0x3c93('0xb4')]=_0xe5df19[_0x3c93('0xa2')]>=parseInt(_0x5525c8[_0x3c93('0x123')])?'x':'i';}else{_0x475c21[_0x3c93('0xb4')]=_0xe5df19['length']>=parseInt(_0x5525c8[_0x3c93('0x123')])&&_0xe5df19[_0x3c93('0xa2')]<=parseInt(_0x5525c8[_0x3c93('0x124')])?'x':'i';}var _0x320147=this[_0x3c93('0x10')][_0x3c93('0xa9')](this,_0x5525c8[_0x3c93('0xe0')]);if(!_0x320147){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x5525c8,'no\x20variable\x20found');}this[_0x3c93('0xf')][_0x3c93('0xa3')](_0x320147,_0xe5df19);if(this[_0x3c93('0x89')](_0x5525c8[_0x3c93('0x125')])){var _0x2c2ca7=parseInt(_0x5525c8[_0x3c93('0x125')],0xa);var _0x23b390=rs[_0x3c93('0x126')]({'charset':'*','length':_0x2c2ca7});var _0x7b922b=_0xe5df19[_0x3c93('0xa2')];if(_0x7b922b>0x0){if(_0x7b922b>_0x2c2ca7){this[_0x3c93('0x39')][_0x3c93('0xa9')](this,_0x5525c8,_0x5525c8[_0x3c93('0x127')]===_0x3c93('0x128')?_0x23b390+_0xe5df19['substr'](_0x2c2ca7):_0xe5df19[_0x3c93('0x129')](0x0,_0x7b922b-_0x2c2ca7)+_0x23b390);}else{this['createSquareDetailsReport'][_0x3c93('0xa9')](this,_0x5525c8,rs[_0x3c93('0x126')]({'charset':'*','length':_0x7b922b}));}}else{this[_0x3c93('0x39')][_0x3c93('0xa9')](this,_0x5525c8,'');}}else{this['createSquareDetailsReport'][_0x3c93('0xa9')](this,_0x5525c8,_0xe5df19);}return _0x475c21;};AGIVertices[_0x3c93('0x16')][_0x3c93('0xe')]=function(_0x36abcd){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x12a'),_0x36abcd[_0x3c93('0x3b')]));return this[_0x3c93('0xd')](_0x36abcd);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x12b')]=function(_0xcbef0){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0xcbef0['label']));this['createSquareDetailsReport']['sync'](this,_0xcbef0,_0xcbef0[_0x3c93('0x12c')]);return this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')]('GOAL\x20%s',_0xcbef0[_0x3c93('0x12c')]));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x12d')]=function(_0x113d64){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x12e'),_0x113d64[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x113d64['aws_access_key_id'])||!this[_0x3c93('0x89')](_0x113d64[_0x3c93('0x8d')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0x12f'));}if(!this[_0x3c93('0x89')](_0x113d64[_0x3c93('0x5f')])){return this[_0x3c93('0xf')]['noop']('no\x20text\x20configured');}this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('Trying\x20aws\x20Polly\x20%s',_0x113d64['text']));var _0x30b311=this[_0x3c93('0x8b')][_0x3c93('0xa9')](this,_0x113d64);if(_0x30b311){this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x130'),_0x30b311));var _0x5167d9=this[_0x3c93('0xf')][_0x3c93('0x10e')](_0x30b311);try{fs[_0x3c93('0x10f')](_0x30b311+_0x3c93('0x110'));}catch(_0x8f62c4){logger['error'](_0x8f62c4);}return _0x5167d9;}return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x113d64,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x3c93('0x16')]['awslex']=function(_0x3a1074){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x131'),_0x3a1074['label']));if(!this['isConfigured'](_0x3a1074[_0x3c93('0x8c')])||!this['isConfigured'](_0x3a1074[_0x3c93('0x8d')])){return this[_0x3c93('0xf')]['noop']('no\x20valid\x20credentials\x20configured');}if(!this[_0x3c93('0x89')](_0x3a1074['aws_bot_name'])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0x132'));}if(!this[_0x3c93('0x89')](_0x3a1074[_0x3c93('0x5f')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')]('no\x20text\x20configured');}this[_0x3c93('0xf')][_0x3c93('0xef')]=!![];this[_0x3c93('0x39')](_0x3a1074);this[_0x3c93('0x46')](_0x3a1074[_0x3c93('0x5f')],'in','','');this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('Trying\x20Amazon\x20Lex:\x20%s',_0x3a1074[_0x3c93('0x5f')]));var _0x30ffa5=this[_0x3c93('0x92')][_0x3c93('0xa9')](this,_0x3a1074);if(_0x30ffa5){for(var _0x2f7301 in _0x30ffa5){if(_0x30ffa5['hasOwnProperty'](_0x2f7301)&&_[_0x3c93('0x9b')](_0x30ffa5[_0x2f7301])){this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')]('AWS_LEX_%s',_0x2f7301[_0x3c93('0x6f')]()),_0x30ffa5[_0x2f7301]);}}if(_[_0x3c93('0x49')](_0x30ffa5[_0x3c93('0x133')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0x134'));}else{this[_0x3c93('0x46')](_0x30ffa5[_0x3c93('0x133')],'out',_0x3c93('0x135'),'');return this[_0x3c93('0xf')][_0x3c93('0xaf')](util['format']('Amazon\x20Lex\x20Result\x20%s',_0x30ffa5[_0x3c93('0x133')]));}}return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x3a1074,_0x3c93('0x136'));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x137')]=function(_0x3683b4){logger['info'](util[_0x3c93('0x58')](_0x3c93('0x138'),_0x3683b4[_0x3c93('0x3b')],_0x3683b4[_0x3c93('0x69')]));if(!this[_0x3c93('0x89')](_0x3683b4[_0x3c93('0x7d')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0xee'));}var _0x4cce99=_0x3c93('0x139');var _0x3f3191=util['format'](_0x3c93('0x13a'),FILES_PATH,rs[_0x3c93('0x126')](0x4));var _0xbce434=util['format'](_0x3c93('0xa0'),_0x3f3191,_0x4cce99);var _0x5cde82=!![];if(_0x3683b4[_0x3c93('0x13b')]===_0x3c93('0x13c')){_0x5cde82=![];}var _0x24cf87=this[_0x3c93('0xf')][_0x3c93('0x13d')](_0x3f3191,_0x4cce99,_0x3683b4[_0x3c93('0x13e')],_0x3683b4['timeout'],undefined,_0x5cde82);if(_0x24cf87['result']!==-0x1){this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('google\x20%s\x20file\x20created',_0xbce434));var _0x3feea3=this[_0x3c93('0x94')][_0x3c93('0xa9')](this,_0x3683b4,_0xbce434);if(_0x3feea3){for(var _0x50dff4 in _0x3feea3){if(_0x3feea3[_0x3c93('0x9a')](_0x50dff4)){this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')](_0x3c93('0x13f'),_0x50dff4['toUpperCase']()),_0x3feea3[_0x50dff4]);}}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x140'),JSON[_0x3c93('0x77')](_0x3feea3)));}}return _0x24cf87;};AGIVertices['prototype'][_0x3c93('0x141')]=function(_0xfac3a1){logger['info'](util[_0x3c93('0x58')](_0x3c93('0x142'),_0xfac3a1['label']));if(!this[_0x3c93('0x89')](_0xfac3a1[_0x3c93('0x97')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0x143'));}if(!this[_0x3c93('0x89')](_0xfac3a1[_0x3c93('0x98')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')]('no\x20appsecret\x20configured');}var _0x4e1e4a=_0x3c93('0x139');var _0x447710=util[_0x3c93('0x58')]('%s/recordings/%s',FILES_PATH,rs[_0x3c93('0x126')](0x4));var _0x2fda3c=util[_0x3c93('0x58')](_0x3c93('0xa0'),_0x447710,_0x4e1e4a);var _0x40bcd2=!![];if(_0xfac3a1[_0x3c93('0x13b')]===_0x3c93('0x13c')){_0x40bcd2=![];}var _0x358556=this[_0x3c93('0xf')]['recordFile'](_0x447710,_0x4e1e4a,_0xfac3a1['intKey'],_0xfac3a1[_0x3c93('0x69')],undefined,_0x40bcd2);if(_0x358556[_0x3c93('0xb4')]!==-0x1){this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x144'),_0x2fda3c));var _0xa2bba8=this[_0x3c93('0x96')]['sync'](this,_0xfac3a1,_0x2fda3c);if(_0xa2bba8){for(var _0x3406a7 in _0xa2bba8){if(_0xa2bba8[_0x3c93('0x9a')](_0x3406a7)){this[_0x3c93('0xf')][_0x3c93('0xa3')](util['format']('TILDE_ASR_%s',_0x3406a7[_0x3c93('0x6f')]()),_0xa2bba8[_0x3406a7]);}}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x145'),JSON['stringify'](_0xa2bba8)));}}return _0x358556;};AGIVertices[_0x3c93('0x16')][_0x3c93('0x146')]=function(_0x320985){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x147'),_0x320985[_0x3c93('0x3b')]));return this[_0x3c93('0xf')]['continueAt'](_0x320985[_0x3c93('0x41')],_0x320985['extension'],_0x320985[_0x3c93('0x43')]);};AGIVertices[_0x3c93('0x16')]['gotoif']=function(_0x84a21){logger[_0x3c93('0x30')](util['format']('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x84a21[_0x3c93('0x3b')]));if(!this['isConfigured'](_0x84a21[_0x3c93('0x148')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x84a21,_0x3c93('0x149'));}try{var _0x3553d1=eval(_0x84a21['condition'])?'true':_0x3c93('0x14a');this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('EVAL\x20CONDITION\x20%s\x20%s',_0x84a21[_0x3c93('0x148')],_0x3553d1));return{'code':0xc8,'result':_0x3553d1};}catch(_0x9c74ba){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x3c93('0x16')][_0x3c93('0x14b')]=function(_0x45ee5f){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x14c'),_0x45ee5f['label']));if(!this['isConfigured'](_0x45ee5f[_0x3c93('0x14d')])){return this['channel'][_0x3c93('0x2f')](_0x45ee5f,_0x3c93('0x14e'));}var _0x32ca30=this[_0x3c93('0x26')]['sync'](this,_0x45ee5f[_0x3c93('0x14d')]);if(!_0x32ca30){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x45ee5f,_0x3c93('0x14f'));}for(var _0x1fda1e=0x0;_0x1fda1e<_0x32ca30['length'];_0x1fda1e+=0x1){var _0x122722=this[_0x3c93('0xf')][_0x3c93('0x10')](util[_0x3c93('0x58')](_0x3c93('0x150'),_0x32ca30[_0x1fda1e]));if(_0x122722[_0x3c93('0xb4')]===-0x1){return _0x122722;}logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('IFTIME\x20%s\x20%s',_0x32ca30[_0x1fda1e],_0x122722[_0x3c93('0xa6')]));if(_0x122722[_0x3c93('0xa6')]===_0x3c93('0x151')){logger['info'](util[_0x3c93('0x58')]('IFTIME\x20%s\x20%s',_0x32ca30[_0x1fda1e],'true'));this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x152'),_0x32ca30[_0x1fda1e],_0x3c93('0x151')));return{'code':0xc8,'result':'true'};}else{logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('IFTIME\x20%s\x20%s',_0x32ca30[_0x1fda1e],_0x3c93('0x14a')));this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0x152'),_0x32ca30[_0x1fda1e],_0x3c93('0x14a')));}}return{'code':0xc8,'result':_0x3c93('0x14a')};};AGIVertices[_0x3c93('0x16')]['hangup']=function(_0x17d005){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x17d005[_0x3c93('0x3b')]));return this[_0x3c93('0xf')][_0x3c93('0x153')]();};AGIVertices[_0x3c93('0x16')][_0x3c93('0x154')]=function(_0x480178){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x155'),_0x480178['label']));if(!this['isConfigured'](_0x480178[_0x3c93('0x7d')])){return this['channel']['noop']('no\x20key\x20configured');}var _0x4cf23d=_0x3c93('0x139');var _0x85bd9e=util['format'](_0x3c93('0x13a'),FILES_PATH,rs[_0x3c93('0x126')](0x4));var _0x34ba83=util[_0x3c93('0x58')]('%s.%s',_0x85bd9e,_0x4cf23d);var _0x1941dc=!![];if(_0x480178[_0x3c93('0x13b')]===_0x3c93('0x13c')){_0x1941dc=![];}var _0x285dc8=this[_0x3c93('0xf')][_0x3c93('0x13d')](_0x85bd9e,_0x4cf23d,_0x480178['intKey'],_0x480178['timeout'],undefined,_0x1941dc);if(_0x285dc8[_0x3c93('0xb4')]!==-0x1){this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x156'),_0x34ba83));var _0xcac8fe=this[_0x3c93('0x87')][_0x3c93('0xa9')](this,_0x480178,_0x34ba83);if(_0xcac8fe){for(var _0x3782dd in _0xcac8fe){if(_0xcac8fe[_0x3c93('0x9a')](_0x3782dd)){this[_0x3c93('0xf')]['setVariable'](util['format']('ISPEECH_ASR_%s',_0x3782dd[_0x3c93('0x6f')]()),_0xcac8fe[_0x3782dd]);}}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('IspeechASR\x20Result\x20%s',JSON[_0x3c93('0x77')](_0xcac8fe)));}}return _0x285dc8;};AGIVertices['prototype']['ispeechtts']=function(_0x1fe331){logger['info'](util[_0x3c93('0x58')](_0x3c93('0x157'),_0x1fe331['label']));if(!this['isConfigured'](_0x1fe331['key'])){return this['channel'][_0x3c93('0xaf')](_0x3c93('0xee'));}if(!this[_0x3c93('0x89')](_0x1fe331[_0x3c93('0x5f')])){return this['channel']['noop']('no\x20text\x20configured');}this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')]('Trying\x20ispeech\x20TTS\x20%s',_0x1fe331[_0x3c93('0x5f')]));var _0x5cf3dc=this['ispeechTTS']['sync'](this,_0x1fe331);if(_0x5cf3dc){this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x156'),_0x5cf3dc));var _0x243e4d=this[_0x3c93('0xf')][_0x3c93('0x10e')](_0x5cf3dc,_0x1fe331[_0x3c93('0x13e')]);try{fs['unlink'](_0x5cf3dc+_0x3c93('0x110'));}catch(_0x5a658c){logger['error'](_0x5a658c);}return _0x243e4d;}return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x1fe331,_0x3c93('0x158'));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x159')]=function(_0x4c7b6a){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x4c7b6a[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x4c7b6a[_0x3c93('0x15a')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x4c7b6a,'no\x20find\x20by\x20configured');}logger['info'](util['format'](_0x3c93('0x15b'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4c7b6a[_0x3c93('0x15a')]));var _0x1fc295=this[_0x3c93('0x57')][_0x3c93('0xa9')](this,_0x4c7b6a[_0x3c93('0x15a')]);if(_0x1fc295){logger['info'](util[_0x3c93('0x58')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4c7b6a['findBy']));this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x15c'),this['channel']['callerid'],_0x4c7b6a[_0x3c93('0x15a')]));return{'code':0xc8,'result':'success'};}else{logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4c7b6a[_0x3c93('0x15a')]));this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0x15d'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4c7b6a[_0x3c93('0x15a')]));return{'code':0xc8,'result':_0x3c93('0x15e')};}};AGIVertices[_0x3c93('0x16')]['logout']=function(_0x31e79f){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x31e79f[_0x3c93('0x3b')]));if(!this['isConfigured'](_0x31e79f[_0x3c93('0x15a')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x31e79f,_0x3c93('0x15f'));}logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x15b'),this[_0x3c93('0xf')]['callerid'],_0x31e79f[_0x3c93('0x15a')]));var _0x47e578=this['agentLogout'][_0x3c93('0xa9')](this,_0x31e79f['findBy']);if(_0x47e578){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x31e79f['findBy']));this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x15c'),this['channel'][_0x3c93('0x3e')],_0x31e79f['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x15d'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x31e79f['findBy']));this[_0x3c93('0xf')][_0x3c93('0xaf')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x3c93('0xf')]['callerid'],_0x31e79f[_0x3c93('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x3c93('0x160')]=function(_0x20b6c8){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x161'),_0x20b6c8['label']));if(!this['isConfigured'](_0x20b6c8[_0x3c93('0x162')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x20b6c8,_0x3c93('0x163'));}this['channel'][_0x3c93('0xaf')](util['format'](_0x3c93('0x164'),_0x20b6c8[_0x3c93('0x162')]));var _0x4b565a=eval(_0x20b6c8[_0x3c93('0x162')]);if(!this[_0x3c93('0x89')](_0x20b6c8['variable_id'])){return this['channel']['noop'](_0x3c93('0xe1'));}var _0x1b2cae=this['getVariable']['sync'](this,_0x20b6c8[_0x3c93('0xe0')]);if(!_0x1b2cae){return this[_0x3c93('0xf')]['error'](_0x20b6c8,_0x3c93('0xe2'));}if(_[_0x3c93('0xa1')](_0x4b565a)){var _0x5a9f36=this;_0x4b565a[_0x3c93('0xe3')](function(_0x4093f7,_0x59ae03){_0x5a9f36['channel'][_0x3c93('0xa3')](util[_0x3c93('0x58')](_0x3c93('0x165'),_0x1b2cae,_0x59ae03),_0x4093f7);});return this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0x166'),_0x1b2cae));}else{return this['channel'][_0x3c93('0xa3')](_0x1b2cae,_0x4b565a);}};AGIVertices[_0x3c93('0x16')][_0x3c93('0x167')]=function(_0x4545b0){logger['info'](util[_0x3c93('0x58')](_0x3c93('0x168'),_0x4545b0['label']));if(_0x4545b0['retry']===0x0){return this['maxRetry'](_0x4545b0);}_0x4545b0[_0x3c93('0x11e')]-=0x1;if(!this[_0x3c93('0x89')](_0x4545b0[_0x3c93('0x11f')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x4545b0,_0x3c93('0x169'));}var _0x2c6f7d=this['getSound']['sync'](this,_0x4545b0['file_id']);if(!_0x2c6f7d){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x4545b0,_0x3c93('0x120'));}var _0x36fcf7=this['channel'][_0x3c93('0x121')](_0x2c6f7d,_0x4545b0[_0x3c93('0x122')],_0x4545b0[_0x3c93('0x16a')]);var _0x447074=_0x36fcf7[_0x3c93('0xb4')];if(_0x36fcf7[_0x3c93('0xb4')]===-0x1){this[_0x3c93('0x39')]['sync'](this,_0x4545b0,'-1');return _0x36fcf7;}else if(_0x36fcf7['extra']===_0x3c93('0x69')){_0x36fcf7[_0x3c93('0xb4')]=_0x36fcf7[_0x3c93('0xb4')][_0x3c93('0xa2')]>0x0?_0x36fcf7['result']:'t';}else if(_[_0x3c93('0x48')](_0x36fcf7['result'])){_0x36fcf7[_0x3c93('0xb4')]='#';_0x447074='#';}if(!this[_0x3c93('0x89')](_0x4545b0[_0x3c93('0xe0')])){this[_0x3c93('0xf')][_0x3c93('0xaf')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x210b84=this[_0x3c93('0x10')][_0x3c93('0xa9')](this,_0x4545b0['variable_id']);if(!_0x210b84){return this[_0x3c93('0xf')]['error'](_0x4545b0,'no\x20variable\x20found');}this[_0x3c93('0xf')]['setVariable'](_0x210b84,_0x447074);}this[_0x3c93('0x39')][_0x3c93('0xa9')](this,_0x4545b0,_0x447074);return _0x36fcf7;};AGIVertices[_0x3c93('0x16')][_0x3c93('0xaf')]=function(_0x169f0d){logger['info'](util['format'](_0x3c93('0x16b'),_0x169f0d[_0x3c93('0x3b')]));return this['channel'][_0x3c93('0xaf')](_0x169f0d['output']||_0x169f0d['label']);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x16c')]=function(_0x1fe988){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x1fe988[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x1fe988[_0x3c93('0x15a')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x1fe988,'no\x20find\x20by\x20configured');}logger[_0x3c93('0x30')](util['format'](_0x3c93('0x15b'),this[_0x3c93('0xf')]['callerid'],_0x1fe988[_0x3c93('0x15a')]));var _0x3ce8e2=this[_0x3c93('0x16d')][_0x3c93('0xa9')](this,_0x1fe988[_0x3c93('0x16e')]);var _0x9f8c16=this[_0x3c93('0x53')][_0x3c93('0xa9')](this,_0x1fe988[_0x3c93('0x15a')],_0x3ce8e2);if(_0x9f8c16){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x15c'),this['channel'][_0x3c93('0x3e')],_0x1fe988[_0x3c93('0x15a')]));this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x15c'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x1fe988['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x3c93('0x3e')],_0x1fe988[_0x3c93('0x15a')]));this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x1fe988[_0x3c93('0x15a')]));return{'code':0xc8,'result':_0x3c93('0x15e')};}};AGIVertices[_0x3c93('0x16')][_0x3c93('0x16f')]=function(_0x3b4ede){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x170'),_0x3b4ede[_0x3c93('0x3b')]));if(!this['isConfigured'](_0x3b4ede[_0x3c93('0x11f')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x3b4ede,_0x3c93('0x169'));}var _0x6599ea=this[_0x3c93('0x21')][_0x3c93('0xa9')](this,_0x3b4ede[_0x3c93('0x11f')]);if(!_0x6599ea){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x3b4ede,_0x3c93('0x120'));}var _0x3246f7=this[_0x3c93('0xf')]['exec'](_0x3c93('0x171'),[_0x6599ea,_0x3b4ede[_0x3c93('0xec')]]);if(_0x3246f7[_0x3c93('0xb4')]===-0x1){return _0x3246f7;}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')]('Executed\x20command\x20%s\x20%s',_0x3c93('0x171'),_0x6599ea));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x172')]=function(_0x6f75ef){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x6f75ef[_0x3c93('0x3b')]));if(!this['isConfigured'](_0x6f75ef[_0x3c93('0x173')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x6f75ef,_0x3c93('0x174'));}var _0x4233fb='';var _0x537274=parseInt(_0x6f75ef[_0x3c93('0x173')],0xa);if(isNaN(_0x537274)){_0x4233fb=_0x6f75ef[_0x3c93('0x173')];}else{_0x4233fb=this['getVoiceQueue'][_0x3c93('0xa9')](this,_0x6f75ef['queue_id']);if(!_0x4233fb){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x6f75ef,_0x3c93('0x175'));}}var _0x1b4556='';if(this[_0x3c93('0x89')](_0x6f75ef[_0x3c93('0x11f')])){var _0x4a5d8e=this[_0x3c93('0x21')][_0x3c93('0xa9')](this,_0x6f75ef['file_id']);if(_0x4a5d8e){_0x1b4556=_0x4a5d8e;}}this[_0x3c93('0x39')]['sync'](this,_0x6f75ef,_0x4233fb);if(_0x6f75ef['opts'][_0x3c93('0x176')]('x')<0x0){_0x6f75ef['opts']+='x';}if(_0x6f75ef['opts'][_0x3c93('0x176')]('X')<0x0){_0x6f75ef['opts']+='X';}this[_0x3c93('0xf')][_0x3c93('0xa3')](_0x3c93('0x177'),_0x4233fb?_0x4233fb[_0x3c93('0x178')]():'');var _0x50e59c=this[_0x3c93('0xf')]['exec']('QUEUE',[_0x4233fb,_0x6f75ef['opts'],_0x6f75ef[_0x3c93('0x68')],_0x1b4556,_0x6f75ef[_0x3c93('0x69')],_0x6f75ef['agi'],_0x6f75ef[_0x3c93('0x179')],_0x6f75ef[_0x3c93('0x17a')],'',_0x6f75ef[_0x3c93('0x17b')]]);if(_0x50e59c[_0x3c93('0xb4')]===-0x1){return _0x50e59c;}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xc7'),_0x3c93('0x17c'),_0x4233fb));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x17d')]=function(_0x459186){logger['info'](util[_0x3c93('0x58')](_0x3c93('0x17e'),_0x459186[_0x3c93('0x3b')]));var _0x267b71=_0x459186[_0x3c93('0x17f')]||_0x3c93('0x139');var _0x52f7d6=util[_0x3c93('0x58')](_0x3c93('0x180'),this[_0x3c93('0xf')][_0x3c93('0x3a')],rs['generate'](0x5));var _0x5abbc8=util[_0x3c93('0x58')](_0x3c93('0x181'),FILES_PATH,_0x52f7d6,_0x267b71);var _0x19181c=util[_0x3c93('0x58')](_0x3c93('0x13a'),FILES_PATH,_0x52f7d6);this['createSquareRecording'][_0x3c93('0xa9')](this,_0x459186,_0x52f7d6,_0x5abbc8);this[_0x3c93('0xf')][_0x3c93('0xa3')](_0x3c93('0x182'),_0x52f7d6);logger['info'](_0x3c93('0x183'),_0x19181c,_0x267b71,_0x459186['escape_digits'],_0x459186[_0x3c93('0x69')]);return this[_0x3c93('0xf')][_0x3c93('0x13d')](_0x19181c,_0x267b71,_0x459186[_0x3c93('0x184')],_0x459186[_0x3c93('0x69')],undefined,!![]);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x185')]=function(_0x55fe1a){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x186'),_0x55fe1a['label']));if(!this['isConfigured'](_0x55fe1a[_0x3c93('0x68')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0x187'));}var _0x2101be=this[_0x3c93('0x67')]['sync'](this,_0x55fe1a);logger['info'](util[_0x3c93('0x58')]('Response:',util['inspect'](_0x2101be,{'showHidden':![],'depth':null})));if(!this[_0x3c93('0x89')](_0x55fe1a[_0x3c93('0xe0')])){return this[_0x3c93('0xf')][_0x3c93('0xaf')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x20e60d=this[_0x3c93('0x10')]['sync'](this,_0x55fe1a[_0x3c93('0xe0')]);if(!_0x20e60d){return this['channel'][_0x3c93('0x2f')](_0x55fe1a,_0x3c93('0xe2'));}this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')](_0x3c93('0x188'),_0x20e60d),_0x2101be[_0x3c93('0x79')]?_0x2101be['statusCode']:'200');this[_0x3c93('0xf')][_0x3c93('0xa3')](util[_0x3c93('0x58')]('%s_STATUS_MESSAGE',_0x20e60d),_0x2101be[_0x3c93('0x7a')]?_0x2101be['statusMessage']:'OK');if(_0x2101be[_0x3c93('0x78')]){try{this[_0x3c93('0x9f')](_0x2101be[_0x3c93('0x78')],_0x20e60d);}catch(_0x2a0edf){logger['error'](util['format'](_0x3c93('0x189'),_0x20e60d));}}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x18a'),_0x20e60d));};AGIVertices[_0x3c93('0x16')]['saydigits']=function(_0x333e49){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x18b'),_0x333e49[_0x3c93('0x3b')]));return this[_0x3c93('0xf')][_0x3c93('0x18c')](_0x333e49['digits'][_0x3c93('0xde')](/\s+/g,''),_0x333e49['escape_digits']);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x18d')]=function(_0x10ba3c){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x10ba3c[_0x3c93('0x3b')]));return this['channel'][_0x3c93('0x18e')](_0x10ba3c[_0x3c93('0x6a')]['replace'](/\s+/g,''),_0x10ba3c['escape_digits']);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x18f')]=function(_0x5f4028){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x190'),_0x5f4028['label']));return this[_0x3c93('0xf')][_0x3c93('0x191')](_0x5f4028[_0x3c93('0x5f')],_0x5f4028['escape_digits']);};AGIVertices[_0x3c93('0x16')][_0x3c93('0x192')]=function(_0x4e2849){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x193'),_0x4e2849[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x4e2849[_0x3c93('0x194')])){return this[_0x3c93('0xf')]['noop'](_0x3c93('0x195'));}var _0x1a5b6e=this[_0x3c93('0x23')][_0x3c93('0xa9')](this,_0x4e2849[_0x3c93('0x194')]);if(!_0x1a5b6e||!_0x1a5b6e[_0x3c93('0x196')]){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x4e2849,_0x3c93('0x197'));}var _0x210b52={'from':util['format'](_0x3c93('0x198'),_0x1a5b6e[_0x3c93('0x14')],_0x1a5b6e[_0x3c93('0x199')]||_0x1a5b6e[_0x3c93('0x196')][_0x3c93('0x19a')]),'to':_0x4e2849['to']||'','cc':_0x4e2849['cc']||'','bcc':_0x4e2849[_0x3c93('0x19b')]||'','subject':_0x4e2849[_0x3c93('0x19c')],'html':_0x4e2849[_0x3c93('0x5f')],'text':_0x4e2849[_0x3c93('0x5f')]};if(this[_0x3c93('0x89')](_0x4e2849[_0x3c93('0x19d')])){}logger['debug']('sendMail\x20message',JSON[_0x3c93('0x77')](_0x210b52));this[_0x3c93('0x39')][_0x3c93('0xa9')](this,_0x4e2849,_0x4e2849[_0x3c93('0x194')]);this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0x19e'),_0x1a5b6e[_0x3c93('0x14')]));this[_0x3c93('0x24')]['sync'](this,_0x1a5b6e[_0x3c93('0x19f')],_0x210b52);return this[_0x3c93('0xf')][_0x3c93('0xaf')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0x3c93('0x1a0')]=function(_0x322d22){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x1a1'),_0x322d22['label']));return this['channel'][_0x3c93('0xaf')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0x3c93('0x16')]['sendSMS']=function(_0x11d315){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x1a2'),_0x11d315[_0x3c93('0x3b')]));if(!this['isConfigured'](_0x11d315['sms_account_id'])){return this[_0x3c93('0xf')]['noop']('no\x20sms\x20account\x20configured');}var _0x36c336=this[_0x3c93('0x36')]['sync'](this,_0x11d315['sms_account_id']);if(!_0x36c336){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x11d315,_0x3c93('0x1a3'));}var _0x15339d={'body':_0x11d315[_0x3c93('0x1a4')],'phone':_0x11d315['to']||'','SmsAccountId':_0x36c336['id']};logger['debug'](_0x3c93('0x1a5'),JSON['stringify'](_0x15339d));this[_0x3c93('0x39')]['sync'](this,_0x11d315,_0x11d315[_0x3c93('0x1a6')]);this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0x1a7'),_0x36c336[_0x3c93('0x14')]));this['createSmsMessage'][_0x3c93('0xa9')](this,_0x15339d);return this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0x1a8'));};AGIVertices['prototype'][_0x3c93('0x1a9')]=function(_0x27cc10){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x1aa'),_0x27cc10[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x27cc10['variable_id'])){return this[_0x3c93('0xf')]['error'](_0x27cc10,'no\x20variable\x20selected');}var _0x2351a6=this['getVariable'][_0x3c93('0xa9')](this,_0x27cc10[_0x3c93('0xe0')]);if(!_0x2351a6){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x27cc10,'no\x20variable\x20found');}return this[_0x3c93('0xf')]['setVariable'](_0x2351a6,_0x27cc10[_0x3c93('0x1ab')]);};AGIVertices['prototype'][_0x3c93('0x1ac')]=function(_0xbdd69e){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x1ad'),_0xbdd69e['label']));this[_0x3c93('0xf')][_0x3c93('0xaf')](_0x3c93('0x1ae'));if(_0xbdd69e[_0x3c93('0xbd')]===_0x3c93('0x1af')){this['channel'][_0x3c93('0xaf')](_0x3c93('0x1b0'));return this[_0x3c93('0xf')][_0x3c93('0xbd')]();}return this['channel'][_0x3c93('0xaf')](_0x3c93('0x1b1'));};AGIVertices[_0x3c93('0x16')]['subproject']=function(_0x74e156){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x1b2'),_0x74e156[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x74e156[_0x3c93('0x1b3')])){return this[_0x3c93('0xf')]['error'](_0x74e156,_0x3c93('0x1b4'));}var _0x3e004c=this[_0x3c93('0x19')][_0x3c93('0xa9')](this,_0x74e156[_0x3c93('0x1b3')]);if(!this[_0x3c93('0x89')](_0x3e004c)){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x74e156,util[_0x3c93('0x58')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x74e156[_0x3c93('0x1b3')]));}if(_0x3e004c===this[_0x3c93('0xf')][_0x3c93('0x3d')]){return this['channel'][_0x3c93('0x2f')](_0x74e156,_0x3c93('0x1b5'));}this['createSquareDetailsReport'][_0x3c93('0xa9')](this,_0x74e156,_0x3e004c);var _0x472a90=this[_0x3c93('0xf')][_0x3c93('0x5b')](_0x3c93('0x1b6'),util[_0x3c93('0x58')](_0x3c93('0x1b7'),config['agi'][_0x3c93('0x1b8')]||_0x3c93('0x1b9'),_0x3e004c,this['channel']['arg_1']));if(_0x472a90[_0x3c93('0xb4')]===-0x1){return _0x472a90;}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xc7'),_0x3c93('0x1b6'),_0x3e004c));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x1ba')]=function(_0x27817e){logger[_0x3c93('0x30')](util[_0x3c93('0x58')](_0x3c93('0x1bb'),_0x27817e[_0x3c93('0x3b')]));var _0x5c6c46=this['shellCommand']['sync'](this,_0x27817e['command']);this['createSquareDetailsReport'][_0x3c93('0xa9')](this,_0x27817e,_0x27817e[_0x3c93('0xbb')]);if(this['isConfigured'](_0x27817e[_0x3c93('0xe0')])){var _0x2e9655=this['getVariable'][_0x3c93('0xa9')](this,_0x27817e['variable_id']);if(_0x2e9655){this[_0x3c93('0xf')]['setVariable'](_0x2e9655,_0x5c6c46);return this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0x1bc'),_0x27817e['command'],_0x2e9655));}}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util['format'](_0x3c93('0x1bd'),_0x27817e[_0x3c93('0xbb')]));};AGIVertices['prototype'][_0x3c93('0x1be')]=function(_0x347c3d){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x1bf'),_0x347c3d[_0x3c93('0x3b')]));_0x347c3d[_0x3c93('0x5f')]=_0x347c3d[_0x3c93('0x5f')][_0x3c93('0xde')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x3c93('0x89')](_0x347c3d[_0x3c93('0x5e')])){return this[_0x3c93('0xf')]['noop']('no\x20apiKey\x20configured');}if(!this[_0x3c93('0x89')](_0x347c3d[_0x3c93('0x5f')])){return this['channel'][_0x3c93('0xaf')](_0x3c93('0xad'));}this[_0x3c93('0xf')]['noop'](util[_0x3c93('0x58')](_0x3c93('0x1c0'),_0x347c3d[_0x3c93('0x5f')]));var _0x1cb9f6=this[_0x3c93('0x5d')]['sync'](this,_0x347c3d);if(_0x1cb9f6){this['channel'][_0x3c93('0xaf')](util[_0x3c93('0x58')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x1cb9f6));var _0x209ca5=this[_0x3c93('0xf')]['streamFile'](_0x1cb9f6);try{fs[_0x3c93('0x10f')](_0x1cb9f6+'.wav');}catch(_0x25ab12){logger['error'](_0x25ab12);}return _0x209ca5;}return this['channel']['error'](_0x347c3d,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices['prototype'][_0x3c93('0x1c1')]=function(_0x39822b){logger['info'](util[_0x3c93('0x58')](_0x3c93('0x1c2'),_0x39822b[_0x3c93('0x3b')]));_0x39822b[_0x3c93('0x5f')]=_0x39822b['text'][_0x3c93('0xde')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x3c93('0x89')](_0x39822b['text'])){return this['channel'][_0x3c93('0xaf')](_0x3c93('0xad'));}this['channel'][_0x3c93('0xaf')](util['format']('Trying\x20Google\x20TTS\x20%s',_0x39822b[_0x3c93('0x5f')]));var _0x218892=this[_0x3c93('0x65')]['sync'](this,_0x39822b);if(_0x218892){this[_0x3c93('0xf')][_0x3c93('0xaf')](util['format'](_0x3c93('0x1c3'),_0x218892));var _0xb9fde9=this[_0x3c93('0xf')]['streamFile'](_0x218892);try{fs[_0x3c93('0x10f')](_0x218892+'.wav');}catch(_0x55dd37){logger['error'](_0x55dd37);}return _0xb9fde9;}return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x39822b,_0x3c93('0x1c4'));};AGIVertices[_0x3c93('0x16')][_0x3c93('0x1c5')]=function(_0x4654f7){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x1c6'),_0x4654f7[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x4654f7[_0x3c93('0x15a')])){return this['channel']['error'](_0x4654f7,_0x3c93('0x15f'));}logger['info'](util[_0x3c93('0x58')](_0x3c93('0x15b'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4654f7[_0x3c93('0x15a')]));var _0x2639ab=this[_0x3c93('0x55')][_0x3c93('0xa9')](this,_0x4654f7[_0x3c93('0x15a')]);if(_0x2639ab){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x15c'),this['channel'][_0x3c93('0x3e')],_0x4654f7[_0x3c93('0x15a')]));this[_0x3c93('0xf')][_0x3c93('0xaf')](util['format'](_0x3c93('0x15c'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4654f7[_0x3c93('0x15a')]));return{'code':0xc8,'result':_0x3c93('0x1c7')};}else{logger['info'](util[_0x3c93('0x58')](_0x3c93('0x15d'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4654f7[_0x3c93('0x15a')]));this['channel'][_0x3c93('0xaf')](util['format'](_0x3c93('0x15d'),this[_0x3c93('0xf')][_0x3c93('0x3e')],_0x4654f7[_0x3c93('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x3c93('0x16')][_0x3c93('0x1c8')]=function(_0x12b5c6){logger[_0x3c93('0x30')](util['format'](_0x3c93('0x1c9'),_0x12b5c6['label']));var _0x5dcf62=this[_0x3c93('0xf')]['exec']('VOICEMAIL',[_0x12b5c6[_0x3c93('0x1ca')],_0x12b5c6[_0x3c93('0x7b')]]);if(_0x5dcf62['result']===-0x1){return _0x5dcf62;}return this[_0x3c93('0xf')][_0x3c93('0xaf')](util[_0x3c93('0x58')](_0x3c93('0xc7'),_0x3c93('0x1cb'),_0x12b5c6['mailbox']));};AGIVertices[_0x3c93('0x16')]['vswitch']=function(_0x1a7c44){logger[_0x3c93('0x30')](util[_0x3c93('0x58')]('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x1a7c44[_0x3c93('0x3b')]));if(!this[_0x3c93('0x89')](_0x1a7c44[_0x3c93('0xe0')])){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x1a7c44,'no\x20variable\x20selected');}var _0x329bab=this[_0x3c93('0x10')]['sync'](this,_0x1a7c44[_0x3c93('0xe0')]);if(!_0x329bab){return this[_0x3c93('0xf')][_0x3c93('0x2f')](_0x1a7c44,'no\x20variable\x20found');}var _0x5807a7=this[_0x3c93('0xf')][_0x3c93('0x10')](_0x329bab);return{'code':0xc8,'result':_0x5807a7['extra']?_0x5807a7[_0x3c93('0xa6')]:'-'};};String[_0x3c93('0x16')][_0x3c93('0xa5')]=function(_0x482add,_0x5417ae){return this['split'](_0x482add)[_0x3c93('0x1cc')](_0x5417ae);};module[_0x3c93('0x1cd')]=AGIVertices;
\ No newline at end of file
index e377423..64f485c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b0b=['secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncHangupRequest','bind','hangup','syncHangup','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','ACW','mandatoryDispositionPause','name','Action','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','error','finally','message','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][STOP]\x20%s','syncAgentConnect','interface','destlinkedid','[ACW][syncAgentConnect]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','attended','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid'];(function(_0x2a7c2a,_0x37cc9e){var _0x195732=function(_0x4d3902){while(--_0x4d3902){_0x2a7c2a['push'](_0x2a7c2a['shift']());}};_0x195732(++_0x37cc9e);}(_0x5b0b,0x64));var _0xb5b0=function(_0xefc69a,_0x10e57c){_0xefc69a=_0xefc69a-0x0;var _0xadc21a=_0x5b0b[_0xefc69a];return _0xadc21a;};'use strict';var util=require(_0xb5b0('0x0'));var _=require(_0xb5b0('0x1'));var moment=require(_0xb5b0('0x2'));var ami=require(_0xb5b0('0x3'));var logger=require(_0xb5b0('0x4'))(_0xb5b0('0x5'));var RpcUser=require(_0xb5b0('0x6'));var RpcVoiceAgentReport=require(_0xb5b0('0x7'));function Acw(_0xe9ac4f){this[_0xb5b0('0x8')]=_0xe9ac4f[_0xb5b0('0x8')];this[_0xb5b0('0x9')]=_0xe9ac4f['agents'];this[_0xb5b0('0xa')]=_0xe9ac4f[_0xb5b0('0xa')];this[_0xb5b0('0xb')]={};ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on']('hanguprequest',this[_0xb5b0('0xc')][_0xb5b0('0xd')](this));ami['on'](_0xb5b0('0xe'),this[_0xb5b0('0xf')]['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0xb5b0('0xd')](this));ami['on'](_0xb5b0('0x10'),this[_0xb5b0('0x11')][_0xb5b0('0xd')](this));ami['on'](_0xb5b0('0x12'),this['syncBlindTransfer'][_0xb5b0('0xd')](this));ami['on'](_0xb5b0('0x13'),this[_0xb5b0('0x14')][_0xb5b0('0xd')](this));}function getDiff(_0x3b795f){var _0x203cab=moment()[_0xb5b0('0x15')](0x0);var _0x5b3e62=moment(_0x3b795f)[_0xb5b0('0x15')](0x0);return _0x203cab[_0xb5b0('0x16')](_0x5b3e62,_0xb5b0('0x17'));}Acw[_0xb5b0('0x18')][_0xb5b0('0x19')]=function(_0x3d8319){try{var _0x5b59f9=this;var _0x16749a=this['channels'][_0x3d8319]['interface'];var _0x4f3f2d=this[_0xb5b0('0xb')][_0x3d8319][_0xb5b0('0x1a')];var _0xd20877=this[_0xb5b0('0x8')][_0x4f3f2d];var _0x446a0b=![];var _0x20a6b1=_0xb5b0('0x1b');if(_0xd20877['mandatoryDisposition']){if(_0xd20877[_0xb5b0('0x1c')][_0xb5b0('0x1d')]){_0x446a0b=!![];_0x20a6b1=_0xd20877[_0xb5b0('0x1c')][_0xb5b0('0x1d')];}}ami[_0xb5b0('0x1e')]({'action':'QueuePause','interface':_0x16749a,'paused':!![],'reason':_0x20a6b1})[_0xb5b0('0x1f')](function(_0x2bb372){if(_0x5b59f9[_0xb5b0('0x9')][_0x16749a]){return RpcUser['getAgent'](_0x5b59f9['agents'][_0x16749a]['id'])[_0xb5b0('0x1f')](function(_0x2fbbd9){if(_0x2fbbd9&&!_0x2fbbd9[_0xb5b0('0x20')]){logger[_0xb5b0('0x21')](_0xb5b0('0x22'),_0x3d8319,_0x16749a,_0x4f3f2d);var _0x23547a=_0x5b59f9[_0xb5b0('0xb')][_0x3d8319]['attended']&&_0x5b59f9['channels'][_0x3d8319]['destlinkedid']?_0x5b59f9['channels'][_0x3d8319]['destlinkedid']:_0x3d8319;return RpcUser[_0xb5b0('0x23')](_0x5b59f9['agents'][_0x16749a],_0x20a6b1,_0x23547a)[_0xb5b0('0x1f')](function(_0x424e7c){if(!_0x446a0b){_0x5b59f9[_0xb5b0('0xa')][_0x16749a]={};logger[_0xb5b0('0x21')](_0xb5b0('0x24'),_0x3d8319,_0x5b59f9[_0xb5b0('0x8')][_0x4f3f2d][_0xb5b0('0x25')],_0x16749a,_0x4f3f2d);_0x5b59f9[_0xb5b0('0xa')][_0x16749a]['timer']=setTimeout(_0x5b59f9['stopAcw'][_0xb5b0('0xd')](_0x5b59f9,_0x16749a),_0x5b59f9[_0xb5b0('0x8')][_0x4f3f2d][_0xb5b0('0x25')]*0x3e8);_0x5b59f9['timers'][_0x16749a][_0xb5b0('0x26')]=moment()[_0xb5b0('0x27')](_0xb5b0('0x28'));_0x5b59f9[_0xb5b0('0xa')][_0x16749a][_0xb5b0('0x29')]=_0x3d8319;_0x5b59f9['timers'][_0x16749a][_0xb5b0('0x1a')]=_0x4f3f2d;_0x5b59f9[_0xb5b0('0xa')][_0x16749a][_0xb5b0('0x2a')]=function(){var _0x56ad75=getDiff(_0x5b59f9[_0xb5b0('0xa')][_0x16749a][_0xb5b0('0x26')]);clearTimeout(_0x5b59f9[_0xb5b0('0xa')][_0x16749a][_0xb5b0('0x2b')]);_0x5b59f9[_0xb5b0('0xa')][_0x16749a][_0xb5b0('0x2b')]=![];RpcVoiceAgentReport[_0xb5b0('0x2c')]({'acwtime':_0x56ad75},_0x5b59f9[_0xb5b0('0xa')][_0x16749a]['uniqueid'],_0x16749a)['then'](function(_0x573324){logger['info'](_0xb5b0('0x2d'),_0x3d8319,_0x56ad75,_0x573324);})[_0xb5b0('0x2e')](function(_0x51fcdc){logger[_0xb5b0('0x2f')]('[%s][UPDATE][ERRORS:%s]',_0x3d8319,_0x51fcdc);});delete _0x5b59f9[_0xb5b0('0xa')][_0x16749a];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x3d8319,_0x16749a,_0x4f3f2d);}});}})[_0xb5b0('0x2e')](function(_0x294936){logger[_0xb5b0('0x2f')](_0xb5b0('0x24'),_0x3d8319,_0x5b59f9[_0xb5b0('0x8')][_0x4f3f2d][_0xb5b0('0x25')],_0x16749a,_0x4f3f2d);})[_0xb5b0('0x30')](function(){delete _0x5b59f9[_0xb5b0('0xb')][_0x3d8319];});}catch(_0x1fca0b){logger[_0xb5b0('0x2f')]('[ACW][START]\x20%s',_0x1fca0b[_0xb5b0('0x31')]);}};Acw['prototype'][_0xb5b0('0x32')]=function(_0x4a8102){try{var _0x3ea531=this;if(_0x3ea531[_0xb5b0('0xa')][_0x4a8102]){_0x3ea531[_0xb5b0('0xa')][_0x4a8102]['timer']=![];var _0x2550df=_0x3ea531[_0xb5b0('0xa')][_0x4a8102][_0xb5b0('0x29')];var _0x359af8=_0x3ea531[_0xb5b0('0xa')][_0x4a8102]['queue'];var _0x374641=_0x3ea531[_0xb5b0('0x8')][_0x359af8][_0xb5b0('0x25')];logger[_0xb5b0('0x21')](_0xb5b0('0x33'),_0x2550df,_0x4a8102);RpcUser[_0xb5b0('0x34')](this['agents'][_0x4a8102]);RpcVoiceAgentReport[_0xb5b0('0x2c')]({'acwtime':_0x374641,'agentacw':!![]},_0x2550df,_0x4a8102)[_0xb5b0('0x1f')](function(_0x351474){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x2550df,_0x374641,_0x351474);})['catch'](function(_0x4b92f1){logger[_0xb5b0('0x2f')](_0xb5b0('0x35'),_0x2550df,_0x4b92f1);});}else{logger[_0xb5b0('0x2f')](_0xb5b0('0x36'),_0x4a8102);if(_0x3ea531[_0xb5b0('0xa')]){logger['info']('[ACW][TIMERS]',JSON['stringify'](_0x3ea531[_0xb5b0('0xa')]));}}}catch(_0x5ebd3e){logger[_0xb5b0('0x2f')](_0xb5b0('0x37'),_0x5ebd3e[_0xb5b0('0x31')]);}};Acw['prototype'][_0xb5b0('0x38')]=function(_0x311440){try{if(this[_0xb5b0('0x8')][_0x311440[_0xb5b0('0x1a')]]&&(this['voiceQueues'][_0x311440[_0xb5b0('0x1a')]]['acw']||this[_0xb5b0('0x8')][_0x311440[_0xb5b0('0x1a')]]['mandatoryDisposition'])){if(this[_0xb5b0('0x9')][_0x311440[_0xb5b0('0x39')]]){this[_0xb5b0('0xb')][_0x311440['uniqueid']]={'queue':_0x311440[_0xb5b0('0x1a')],'interface':_0x311440[_0xb5b0('0x39')],'destlinkedid':_0x311440[_0xb5b0('0x3a')]};}}}catch(_0x2562e1){logger[_0xb5b0('0x2f')](_0xb5b0('0x3b'),_0x2562e1[_0xb5b0('0x31')]);}};Acw[_0xb5b0('0x18')][_0xb5b0('0x14')]=function(_0xc6a365){try{if(this['voiceQueues'][_0xc6a365[_0xb5b0('0x1a')]]&&(this[_0xb5b0('0x8')][_0xc6a365['queue']][_0xb5b0('0x5')]||this[_0xb5b0('0x8')][_0xc6a365[_0xb5b0('0x1a')]]['mandatoryDisposition'])){if(this[_0xb5b0('0x9')][_0xc6a365['interface']]){this['channels'][_0xc6a365[_0xb5b0('0x29')]]={'queue':_0xc6a365['queue'],'interface':_0xc6a365[_0xb5b0('0x39')]};}}}catch(_0x5bab57){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x5bab57[_0xb5b0('0x31')]);}};Acw[_0xb5b0('0x18')][_0xb5b0('0xc')]=function(_0x27eac4){try{if(this['channels'][_0x27eac4['uniqueid']]&&_[_0xb5b0('0x3c')](this[_0xb5b0('0xb')][_0x27eac4['uniqueid']]['attended'])){logger[_0xb5b0('0x21')](_0xb5b0('0x3d'),_0x27eac4[_0xb5b0('0x29')]);this['startAcw'](_0x27eac4[_0xb5b0('0x29')]);}else if(this[_0xb5b0('0xb')][_0x27eac4[_0xb5b0('0x3e')]]&&_[_0xb5b0('0x3c')](this[_0xb5b0('0xb')][_0x27eac4[_0xb5b0('0x3e')]][_0xb5b0('0x3f')])){logger[_0xb5b0('0x21')](_0xb5b0('0x40'),_0x27eac4[_0xb5b0('0x3e')]);this[_0xb5b0('0x19')](_0x27eac4[_0xb5b0('0x3e')]);}}catch(_0x583001){logger[_0xb5b0('0x2f')](_0xb5b0('0x41'),_0x583001[_0xb5b0('0x31')]);}};Acw[_0xb5b0('0x18')]['syncHangup']=function(_0x3626f8){try{if(this[_0xb5b0('0xb')][_0x3626f8[_0xb5b0('0x29')]]&&this[_0xb5b0('0xb')][_0x3626f8['uniqueid']][_0xb5b0('0x3f')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x3626f8[_0xb5b0('0x29')]);this['startAcw'](_0x3626f8[_0xb5b0('0x29')]);}else if(this[_0xb5b0('0xb')][_0x3626f8['linkedid']]&&this[_0xb5b0('0xb')][_0x3626f8[_0xb5b0('0x3e')]]['attended']){logger[_0xb5b0('0x21')](_0xb5b0('0x42'),_0x3626f8[_0xb5b0('0x3e')]);this[_0xb5b0('0x19')](_0x3626f8['linkedid']);}}catch(_0x54b8ed){logger[_0xb5b0('0x2f')](_0xb5b0('0x43'),_0x54b8ed[_0xb5b0('0x31')]);}};Acw[_0xb5b0('0x18')]['syncAttendedTransfer']=function(_0x3b5b11){try{if(!_[_0xb5b0('0x44')](this['channels'][_0x3b5b11[_0xb5b0('0x45')]])){this[_0xb5b0('0x19')](_0x3b5b11[_0xb5b0('0x45')]);if(this[_0xb5b0('0xb')][_0x3b5b11[_0xb5b0('0x46')]]){this[_0xb5b0('0xb')][_0x3b5b11[_0xb5b0('0x46')]]['attended']=!![];this[_0xb5b0('0xb')][_0x3b5b11[_0xb5b0('0x47')]]=this[_0xb5b0('0xb')][_0x3b5b11['secondtransfereruniqueid']];delete this[_0xb5b0('0xb')][_0x3b5b11['secondtransfereruniqueid']];}}else if(!_[_0xb5b0('0x44')](this[_0xb5b0('0xb')][_0x3b5b11[_0xb5b0('0x47')]])){this['startAcw'](_0x3b5b11[_0xb5b0('0x47')]);if(this['channels'][_0x3b5b11[_0xb5b0('0x48')]]){this[_0xb5b0('0xb')][_0x3b5b11[_0xb5b0('0x48')]][_0xb5b0('0x3f')]=!![];this[_0xb5b0('0xb')][_0x3b5b11['transfereeuniqueid']]=this[_0xb5b0('0xb')][_0x3b5b11['origtransfereruniqueid']];delete this[_0xb5b0('0xb')][_0x3b5b11[_0xb5b0('0x48')]];}}}catch(_0x4b1a94){logger['error'](_0xb5b0('0x49'),_0x4b1a94[_0xb5b0('0x31')]);}};Acw[_0xb5b0('0x18')]['syncBlindTransfer']=function(_0x1b97b4){try{if(this['channels'][_0x1b97b4['transfereruniqueid']]){logger[_0xb5b0('0x21')](_0xb5b0('0x4a'),JSON[_0xb5b0('0x4b')](_0x1b97b4['transfereruniqueid']));this[_0xb5b0('0x19')](_0x1b97b4['transfereruniqueid']);}else if(this['channels'][_0x1b97b4[_0xb5b0('0x4c')]]){logger[_0xb5b0('0x21')](_0xb5b0('0x4d'),JSON[_0xb5b0('0x4b')](_0x1b97b4[_0xb5b0('0x4c')]));this[_0xb5b0('0x19')](_0x1b97b4[_0xb5b0('0x4c')]);}}catch(_0x4ba719){logger[_0xb5b0('0x2f')](_0xb5b0('0x4e'),_0x4ba719[_0xb5b0('0x31')]);}};Acw[_0xb5b0('0x18')][_0xb5b0('0x4f')]=function(_0x47b135){try{if(this[_0xb5b0('0x8')][_0x47b135['queue']]&&this[_0xb5b0('0x8')][_0x47b135[_0xb5b0('0x1a')]][_0xb5b0('0x50')]===_0xb5b0('0x51')){if(this[_0xb5b0('0x9')][_0x47b135[_0xb5b0('0x39')]]){logger['info'](_0xb5b0('0x52'),_0x47b135['uniqueid'],_0x47b135['interface'],_0x47b135[_0xb5b0('0x1a')]);return RpcUser[_0xb5b0('0x23')](this[_0xb5b0('0x9')][_0x47b135[_0xb5b0('0x39')]],'Auto-Pause',_0x47b135[_0xb5b0('0x29')]);}}}catch(_0xa0d961){logger['error'](_0xb5b0('0x53'),_0xa0d961[_0xb5b0('0x31')]);}};module[_0xb5b0('0x54')]=Acw;
\ No newline at end of file
+var _0x31af=['mandatoryDispositionPause','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','uniqueid','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','[ACW][syncAgentRingNoAnswer]\x20%s','util','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','diff','seconds','startAcw','interface','queue','ACW','mandatoryDisposition'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0x31af,0x194));var _0xf31a=function(_0x42fdd0,_0x287c23){_0x42fdd0=_0x42fdd0-0x0;var _0x2d4318=_0x31af[_0x42fdd0];return _0x2d4318;};'use strict';var util=require(_0xf31a('0x0'));var _=require('lodash');var moment=require(_0xf31a('0x1'));var ami=require(_0xf31a('0x2'));var logger=require(_0xf31a('0x3'))(_0xf31a('0x4'));var RpcUser=require(_0xf31a('0x5'));var RpcVoiceAgentReport=require(_0xf31a('0x6'));function Acw(_0x10485a){this['voiceQueues']=_0x10485a[_0xf31a('0x7')];this[_0xf31a('0x8')]=_0x10485a[_0xf31a('0x8')];this[_0xf31a('0x9')]=_0x10485a[_0xf31a('0x9')];this[_0xf31a('0xa')]={};ami['on'](_0xf31a('0xb'),this[_0xf31a('0xc')][_0xf31a('0xd')](this));ami['on'](_0xf31a('0xe'),this[_0xf31a('0xf')][_0xf31a('0xd')](this));ami['on'](_0xf31a('0x10'),this[_0xf31a('0x11')][_0xf31a('0xd')](this));ami['on'](_0xf31a('0x12'),this[_0xf31a('0x13')]['bind'](this));ami['on'](_0xf31a('0x14'),this['syncAttendedTransfer'][_0xf31a('0xd')](this));ami['on']('blindtransfer',this[_0xf31a('0x15')][_0xf31a('0xd')](this));ami['on'](_0xf31a('0x16'),this[_0xf31a('0x17')][_0xf31a('0xd')](this));}function getDiff(_0x44dd97){var _0x581f11=moment()['milliseconds'](0x0);var _0x1728e5=moment(_0x44dd97)['milliseconds'](0x0);return _0x581f11[_0xf31a('0x18')](_0x1728e5,_0xf31a('0x19'));}Acw['prototype'][_0xf31a('0x1a')]=function(_0x29698e){try{var _0x14a531=this;var _0xd3fc74=this['channels'][_0x29698e][_0xf31a('0x1b')];var _0xd7d832=this[_0xf31a('0xa')][_0x29698e][_0xf31a('0x1c')];var _0x8afa9e=this[_0xf31a('0x7')][_0xd7d832];var _0x201015=![];var _0x2247db=_0xf31a('0x1d');if(_0x8afa9e[_0xf31a('0x1e')]){if(_0x8afa9e[_0xf31a('0x1f')]['name']){_0x201015=!![];_0x2247db=_0x8afa9e['mandatoryDispositionPause']['name'];}}ami['Action']({'action':_0xf31a('0x20'),'interface':_0xd3fc74,'paused':!![],'reason':_0x2247db})[_0xf31a('0x21')](function(_0x338338){if(_0x14a531[_0xf31a('0x8')][_0xd3fc74]){return RpcUser['getAgent'](_0x14a531[_0xf31a('0x8')][_0xd3fc74]['id'])[_0xf31a('0x21')](function(_0x2aed6a){if(_0x2aed6a&&!_0x2aed6a[_0xf31a('0x22')]){logger[_0xf31a('0x23')](_0xf31a('0x24'),_0x29698e,_0xd3fc74,_0xd7d832);var _0x13d68f=_0x14a531['channels'][_0x29698e][_0xf31a('0x25')]&&_0x14a531[_0xf31a('0xa')][_0x29698e]['destlinkedid']?_0x14a531[_0xf31a('0xa')][_0x29698e][_0xf31a('0x26')]:_0x29698e;return RpcUser['savePause'](_0x14a531[_0xf31a('0x8')][_0xd3fc74],_0x2247db,_0x13d68f)['then'](function(_0x276937){if(!_0x201015){_0x14a531[_0xf31a('0x9')][_0xd3fc74]={};logger[_0xf31a('0x23')](_0xf31a('0x27'),_0x29698e,_0x14a531[_0xf31a('0x7')][_0xd7d832][_0xf31a('0x28')],_0xd3fc74,_0xd7d832);_0x14a531[_0xf31a('0x9')][_0xd3fc74][_0xf31a('0x29')]=setTimeout(_0x14a531[_0xf31a('0x2a')][_0xf31a('0xd')](_0x14a531,_0xd3fc74),_0x14a531[_0xf31a('0x7')][_0xd7d832]['acwTimeout']*0x3e8);_0x14a531[_0xf31a('0x9')][_0xd3fc74][_0xf31a('0x2b')]=moment()[_0xf31a('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');_0x14a531['timers'][_0xd3fc74][_0xf31a('0x2d')]=_0x29698e;_0x14a531[_0xf31a('0x9')][_0xd3fc74][_0xf31a('0x1c')]=_0xd7d832;_0x14a531[_0xf31a('0x9')][_0xd3fc74]['updateAcw']=function(){var _0x2c91d2=getDiff(_0x14a531[_0xf31a('0x9')][_0xd3fc74][_0xf31a('0x2b')]);clearTimeout(_0x14a531[_0xf31a('0x9')][_0xd3fc74]['timer']);_0x14a531[_0xf31a('0x9')][_0xd3fc74][_0xf31a('0x29')]=![];RpcVoiceAgentReport[_0xf31a('0x2e')]({'acwtime':_0x2c91d2},_0x14a531[_0xf31a('0x9')][_0xd3fc74][_0xf31a('0x2d')],_0xd3fc74)['then'](function(_0x5aa6cc){logger[_0xf31a('0x23')]('[%s][UPDATE][ACWTIME:%s]',_0x29698e,_0x2c91d2,_0x5aa6cc);})[_0xf31a('0x2f')](function(_0x9b2cc4){logger[_0xf31a('0x30')](_0xf31a('0x31'),_0x29698e,_0x9b2cc4);});delete _0x14a531[_0xf31a('0x9')][_0xd3fc74];};}});}else{logger[_0xf31a('0x23')](_0xf31a('0x32'),_0x29698e,_0xd3fc74,_0xd7d832);}});}})['catch'](function(_0x434582){logger[_0xf31a('0x30')](_0xf31a('0x27'),_0x29698e,_0x14a531[_0xf31a('0x7')][_0xd7d832][_0xf31a('0x28')],_0xd3fc74,_0xd7d832);})[_0xf31a('0x33')](function(){delete _0x14a531[_0xf31a('0xa')][_0x29698e];});}catch(_0x1ec5f5){logger[_0xf31a('0x30')](_0xf31a('0x34'),_0x1ec5f5[_0xf31a('0x35')]);}};Acw[_0xf31a('0x36')][_0xf31a('0x2a')]=function(_0x474de8){try{var _0x5c0194=this;if(_0x5c0194['timers'][_0x474de8]){_0x5c0194[_0xf31a('0x9')][_0x474de8][_0xf31a('0x29')]=![];var _0x6a546c=_0x5c0194['timers'][_0x474de8][_0xf31a('0x2d')];var _0x3c8e6d=_0x5c0194[_0xf31a('0x9')][_0x474de8][_0xf31a('0x1c')];var _0x464086=_0x5c0194['voiceQueues'][_0x3c8e6d][_0xf31a('0x28')];logger[_0xf31a('0x23')](_0xf31a('0x37'),_0x6a546c,_0x474de8);RpcUser[_0xf31a('0x38')](this[_0xf31a('0x8')][_0x474de8]);RpcVoiceAgentReport['update']({'acwtime':_0x464086,'agentacw':!![]},_0x6a546c,_0x474de8)[_0xf31a('0x21')](function(_0x4353c0){logger[_0xf31a('0x23')](_0xf31a('0x39'),_0x6a546c,_0x464086,_0x4353c0);})[_0xf31a('0x2f')](function(_0x1df3d3){logger[_0xf31a('0x30')](_0xf31a('0x31'),_0x6a546c,_0x1df3d3);});}else{logger[_0xf31a('0x30')](_0xf31a('0x3a'),_0x474de8);if(_0x5c0194[_0xf31a('0x9')]){logger[_0xf31a('0x23')](_0xf31a('0x3b'),JSON[_0xf31a('0x3c')](_0x5c0194[_0xf31a('0x9')]));}}}catch(_0x30a261){logger['error'](_0xf31a('0x3d'),_0x30a261['message']);}};Acw[_0xf31a('0x36')][_0xf31a('0xc')]=function(_0xbb2f26){try{if(this[_0xf31a('0x7')][_0xbb2f26[_0xf31a('0x1c')]]&&(this[_0xf31a('0x7')][_0xbb2f26[_0xf31a('0x1c')]][_0xf31a('0x4')]||this[_0xf31a('0x7')][_0xbb2f26[_0xf31a('0x1c')]][_0xf31a('0x1e')])){if(this[_0xf31a('0x8')][_0xbb2f26[_0xf31a('0x1b')]]){this[_0xf31a('0xa')][_0xbb2f26['uniqueid']]={'queue':_0xbb2f26[_0xf31a('0x1c')],'interface':_0xbb2f26[_0xf31a('0x1b')],'destlinkedid':_0xbb2f26[_0xf31a('0x26')]};}}}catch(_0x13b4d6){logger[_0xf31a('0x30')](_0xf31a('0x3e'),_0x13b4d6[_0xf31a('0x35')]);}};Acw[_0xf31a('0x36')][_0xf31a('0x17')]=function(_0x283db9){try{if(this['voiceQueues'][_0x283db9[_0xf31a('0x1c')]]&&(this[_0xf31a('0x7')][_0x283db9[_0xf31a('0x1c')]]['acw']||this[_0xf31a('0x7')][_0x283db9[_0xf31a('0x1c')]]['mandatoryDisposition'])){if(this[_0xf31a('0x8')][_0x283db9['interface']]){this[_0xf31a('0xa')][_0x283db9[_0xf31a('0x2d')]]={'queue':_0x283db9[_0xf31a('0x1c')],'interface':_0x283db9['interface']};}}}catch(_0x31053e){logger[_0xf31a('0x30')](_0xf31a('0x3f'),_0x31053e[_0xf31a('0x35')]);}};Acw[_0xf31a('0x36')]['syncHangupRequest']=function(_0x17b8db){try{if(this[_0xf31a('0xa')][_0x17b8db[_0xf31a('0x2d')]]&&_[_0xf31a('0x40')](this['channels'][_0x17b8db['uniqueid']][_0xf31a('0x25')])){logger[_0xf31a('0x23')](_0xf31a('0x41'),_0x17b8db['uniqueid']);this['startAcw'](_0x17b8db[_0xf31a('0x2d')]);}else if(this[_0xf31a('0xa')][_0x17b8db['linkedid']]&&_[_0xf31a('0x40')](this[_0xf31a('0xa')][_0x17b8db[_0xf31a('0x42')]][_0xf31a('0x25')])){logger[_0xf31a('0x23')]('[%s][HANGUP:LINKEDID]',_0x17b8db[_0xf31a('0x42')]);this[_0xf31a('0x1a')](_0x17b8db['linkedid']);}}catch(_0x33824d){logger[_0xf31a('0x30')](_0xf31a('0x43'),_0x33824d[_0xf31a('0x35')]);}};Acw[_0xf31a('0x36')][_0xf31a('0x11')]=function(_0x133054){try{if(this[_0xf31a('0xa')][_0x133054[_0xf31a('0x2d')]]&&this['channels'][_0x133054[_0xf31a('0x2d')]]['attended']){logger[_0xf31a('0x23')](_0xf31a('0x44'),_0x133054[_0xf31a('0x2d')]);this[_0xf31a('0x1a')](_0x133054[_0xf31a('0x2d')]);}else if(this['channels'][_0x133054[_0xf31a('0x42')]]&&this[_0xf31a('0xa')][_0x133054[_0xf31a('0x42')]][_0xf31a('0x25')]){logger[_0xf31a('0x23')](_0xf31a('0x45'),_0x133054[_0xf31a('0x42')]);this['startAcw'](_0x133054['linkedid']);}}catch(_0x5ba322){logger[_0xf31a('0x30')](_0xf31a('0x46'),_0x5ba322[_0xf31a('0x35')]);}};Acw[_0xf31a('0x36')][_0xf31a('0x47')]=function(_0xcaba7e){try{if(!_['isNil'](this[_0xf31a('0xa')][_0xcaba7e[_0xf31a('0x48')]])){this[_0xf31a('0x1a')](_0xcaba7e[_0xf31a('0x48')]);if(this[_0xf31a('0xa')][_0xcaba7e[_0xf31a('0x49')]]){this[_0xf31a('0xa')][_0xcaba7e['secondtransfereruniqueid']][_0xf31a('0x25')]=!![];this[_0xf31a('0xa')][_0xcaba7e['transfertargetuniqueid']]=this['channels'][_0xcaba7e['secondtransfereruniqueid']];delete this[_0xf31a('0xa')][_0xcaba7e[_0xf31a('0x49')]];}}else if(!_[_0xf31a('0x4a')](this[_0xf31a('0xa')][_0xcaba7e['transfertargetuniqueid']])){this['startAcw'](_0xcaba7e['transfertargetuniqueid']);if(this[_0xf31a('0xa')][_0xcaba7e['origtransfereruniqueid']]){this[_0xf31a('0xa')][_0xcaba7e[_0xf31a('0x4b')]]['attended']=!![];this[_0xf31a('0xa')][_0xcaba7e[_0xf31a('0x48')]]=this[_0xf31a('0xa')][_0xcaba7e[_0xf31a('0x4b')]];delete this[_0xf31a('0xa')][_0xcaba7e['origtransfereruniqueid']];}}}catch(_0x2a6656){logger[_0xf31a('0x30')](_0xf31a('0x4c'),_0x2a6656['message']);}};Acw['prototype'][_0xf31a('0x15')]=function(_0x4e3e7a){try{if(this['channels'][_0x4e3e7a[_0xf31a('0x4d')]]){logger['info'](_0xf31a('0x4e'),JSON[_0xf31a('0x3c')](_0x4e3e7a[_0xf31a('0x4d')]));this['startAcw'](_0x4e3e7a[_0xf31a('0x4d')]);}else if(this[_0xf31a('0xa')][_0x4e3e7a[_0xf31a('0x4f')]]){logger['info'](_0xf31a('0x50'),JSON['stringify'](_0x4e3e7a[_0xf31a('0x4f')]));this['startAcw'](_0x4e3e7a[_0xf31a('0x4f')]);}}catch(_0x3a3b5a){logger[_0xf31a('0x30')](_0xf31a('0x51'),_0x3a3b5a['message']);}};Acw[_0xf31a('0x36')]['syncAgentRingNoAnswer']=function(_0x5e6fb5){try{if(this[_0xf31a('0x7')][_0x5e6fb5['queue']]&&this[_0xf31a('0x7')][_0x5e6fb5['queue']][_0xf31a('0x52')]===_0xf31a('0x53')){if(this[_0xf31a('0x8')][_0x5e6fb5[_0xf31a('0x1b')]]){logger[_0xf31a('0x23')](_0xf31a('0x54'),_0x5e6fb5['uniqueid'],_0x5e6fb5['interface'],_0x5e6fb5[_0xf31a('0x1c')]);return RpcUser[_0xf31a('0x55')](this[_0xf31a('0x8')][_0x5e6fb5['interface']],'Auto-Pause',_0x5e6fb5[_0xf31a('0x2d')]);}}}catch(_0x2effd0){logger[_0xf31a('0x30')](_0xf31a('0x56'),_0x2effd0[_0xf31a('0x35')]);}};module['exports']=Acw;
\ No newline at end of file
index 6f532cf..7d43deb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','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','[ami.js][fullybooted]','exports','asterisk-manager','bluebird','../../config/logger','ami','../../config/environment','asterisk','port','username','password','Action','promisify','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','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus'];(function(_0x19b572,_0x2db56c){var _0x3f7842=function(_0x25efc1){while(--_0x25efc1){_0x19b572['push'](_0x19b572['shift']());}};_0x3f7842(++_0x2db56c);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Manager=require(_0x0d8b('0x0'));var BPromise=require(_0x0d8b('0x1'));var moment=require('moment');var util=require('util');var _=require('lodash');var logger=require(_0x0d8b('0x2'))(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var ami=new Manager(config[_0x0d8b('0x5')][_0x0d8b('0x6')],config['asterisk']['ip'],config['asterisk'][_0x0d8b('0x7')],config[_0x0d8b('0x5')][_0x0d8b('0x8')],!![]);ami['keepConnected']();ami[_0x0d8b('0x9')]=BPromise[_0x0d8b('0xa')](ami['action']);function error(_0x129310){logger[_0x0d8b('0xb')](util[_0x0d8b('0xc')](_0x0d8b('0xd'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port'],util[_0x0d8b('0xe')](_0x129310,![],null)));}function close(){logger['error'](util[_0x0d8b('0xc')](_0x0d8b('0xf'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')]));}ami[_0x0d8b('0x10')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x11')});};};ami[_0x0d8b('0x12')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x13')});};};ami[_0x0d8b('0x14')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x15')});};};ami[_0x0d8b('0x16')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x17')});};};ami[_0x0d8b('0x18')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x19')});};};function connect(_0x4586c2){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x1b'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config['asterisk'][_0x0d8b('0x6')]));ami[_0x0d8b('0x1c')](_0x0d8b('0xb'),error);ami[_0x0d8b('0x1c')](_0x0d8b('0x1d'),close);}ami['on'](_0x0d8b('0x1e'),connect);ami['on'](_0x0d8b('0x1f'),function(_0x352c17){logger['info'](util['format'](_0x0d8b('0x20'),config['asterisk']['username'],config['asterisk']['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')],util[_0x0d8b('0xe')](_0x352c17,![],null)));});ami['on'](_0x0d8b('0x21'),function(_0x221071){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x22'),config[_0x0d8b('0x5')]['username'],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port']));return BPromise[_0x0d8b('0x23')]()['then'](ami[_0x0d8b('0x10')]())[_0x0d8b('0x24')](ami[_0x0d8b('0x12')]())['then'](ami['actionSipPeerStatus']())[_0x0d8b('0x24')](ami[_0x0d8b('0x16')]())['then'](ami[_0x0d8b('0x18')]())['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x25'),util['inspect'](_0x1b2b59,{'showHidden':![],'depth':null}));});});ami[_0x0d8b('0x1c')]('error',error);ami[_0x0d8b('0x1c')]('close',close);module[_0x0d8b('0x26')]=ami;
\ No newline at end of file
+var _0xf07e=['once','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','actionSipShowRegistry','then','catch','bluebird','util','../../config/logger','ami','../../config/environment','asterisk','port','password','Action','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','username','sipshowregistry','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','info'];(function(_0x23a451,_0x165659){var _0x28cb94=function(_0x50df39){while(--_0x50df39){_0x23a451['push'](_0x23a451['shift']());}};_0x28cb94(++_0x165659);}(_0xf07e,0x70));var _0xef07=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf07e[_0x3dd15e];return _0x231fd0;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0xef07('0x0'));var util=require(_0xef07('0x1'));var logger=require(_0xef07('0x2'))(_0xef07('0x3'));var config=require(_0xef07('0x4'));var ami=new Manager(config[_0xef07('0x5')][_0xef07('0x6')],config[_0xef07('0x5')]['ip'],config[_0xef07('0x5')]['username'],config[_0xef07('0x5')][_0xef07('0x7')],!![]);ami['keepConnected']();ami[_0xef07('0x8')]=BPromise[_0xef07('0x9')](ami[_0xef07('0xa')]);function error(_0x444cac){logger[_0xef07('0xb')](util[_0xef07('0xc')](_0xef07('0xd'),config['asterisk']['username'],config['asterisk']['ip'],config[_0xef07('0x5')][_0xef07('0x6')],util[_0xef07('0xe')](_0x444cac,![],null)));}function close(){logger[_0xef07('0xb')](util[_0xef07('0xc')](_0xef07('0xf'),config[_0xef07('0x5')][_0xef07('0x10')],config['asterisk']['ip'],config['asterisk'][_0xef07('0x6')]));}ami['actionSipShowRegistry']=function(){return function(){return ami['Action']({'action':_0xef07('0x11')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0xef07('0x8')]({'action':_0xef07('0x12')});};};ami[_0xef07('0x13')]=function(){return function(){return ami[_0xef07('0x8')]({'action':_0xef07('0x14')});};};ami[_0xef07('0x15')]=function(){return function(){return ami[_0xef07('0x8')]({'action':_0xef07('0x16')});};};ami['actionCoreShowChannels']=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(){logger[_0xef07('0x17')](util[_0xef07('0xc')]('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xef07('0x5')][_0xef07('0x10')],config[_0xef07('0x5')]['ip'],config[_0xef07('0x5')][_0xef07('0x6')]));ami['once'](_0xef07('0xb'),error);ami[_0xef07('0x18')]('close',close);}ami['on'](_0xef07('0x19'),connect);ami['on'](_0xef07('0x1a'),function(_0x2c2242){logger[_0xef07('0x17')](util[_0xef07('0xc')](_0xef07('0x1b'),config[_0xef07('0x5')]['username'],config[_0xef07('0x5')]['ip'],config[_0xef07('0x5')][_0xef07('0x6')],util[_0xef07('0xe')](_0x2c2242,![],null)));});ami['on'](_0xef07('0x1c'),function(){logger[_0xef07('0x17')](util[_0xef07('0xc')](_0xef07('0x1d'),config[_0xef07('0x5')][_0xef07('0x10')],config[_0xef07('0x5')]['ip'],config['asterisk']['port']));return Promise[_0xef07('0x1e')]()['then'](ami[_0xef07('0x1f')]())[_0xef07('0x20')](ami['actionDeviceStateList']())[_0xef07('0x20')](ami[_0xef07('0x13')]())[_0xef07('0x20')](ami[_0xef07('0x15')]())[_0xef07('0x20')](ami['actionCoreShowChannels']())[_0xef07('0x21')](function(_0x4ef1cb){logger['error']('[ami.js][fullybooted]',util['inspect'](_0x4ef1cb,{'showHidden':![],'depth':null}));});});ami['once']('error',error);ami[_0xef07('0x18')]('close',close);module['exports']=ami;
\ No newline at end of file
index 5e7062f..33f7db1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['catch','exports','jayson/promise','bluebird','ami','client','http','rpc','memberReport','error','message','result'];(function(_0x1eb402,_0x164f02){var _0x577f76=function(_0x10efd0){while(--_0x10efd0){_0x1eb402['push'](_0x1eb402['shift']());}};_0x577f76(++_0x164f02);}(_0xb43b,0x1b2));var _0xbb43=function(_0x4a72ae,_0x21dfa1){_0x4a72ae=_0x4a72ae-0x0;var _0x2be084=_0xb43b[_0x4a72ae];return _0x2be084;};'use strict';var jayson=require(_0xbb43('0x0'));var BPromise=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var client=jayson[_0xbb43('0x3')][_0xbb43('0x4')]({'port':0x2329});client['Request']=function(_0x131e9e,_0x41aff6){return new BPromise(function(_0x351254,_0x16432a){return client['request'](_0x131e9e,_0x41aff6)['then'](function(_0x378df5){logger['debug'](_0xbb43('0x5'),_0xbb43('0x6'),_0x131e9e,_0x41aff6,_0x378df5);if(_0x378df5[_0xbb43('0x7')]){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x378df5[_0xbb43('0x7')][_0xbb43('0x8')],_0x41aff6);return _0x16432a(_0x378df5['error'][_0xbb43('0x8')]);}else{return _0x351254(_0x378df5[_0xbb43('0x9')]);}})[_0xbb43('0xa')](function(_0x5e3611){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x5e3611,_0x41aff6);return _0x16432a(_0x5e3611);});});};module[_0xbb43('0xb')]=client;
\ No newline at end of file
+var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x4e5552,_0x19ec4e){var _0x60a338=function(_0x40c70e){while(--_0x40c70e){_0x4e5552['push'](_0x4e5552['shift']());}};_0x60a338(++_0x19ec4e);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2b406b,_0x10d0ed){_0x2b406b=_0x2b406b-0x0;var _0x1ae577=_0x9bde[_0x2b406b];return _0x1ae577;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var client=jayson['client'][_0xe9bd('0x2')]({'port':0x2329});client[_0xe9bd('0x3')]=function(_0x131f6a,_0x1c1b34){return new BPromise(function(_0x10822d,_0x1a4d14){return client[_0xe9bd('0x4')](_0x131f6a,_0x1c1b34)['then'](function(_0x4763e9){logger[_0xe9bd('0x5')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x1c1b34,_0x4763e9);if(_0x4763e9[_0xe9bd('0x8')]){logger[_0xe9bd('0x8')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x4763e9[_0xe9bd('0x8')][_0xe9bd('0x9')],_0x1c1b34);return _0x1a4d14(_0x4763e9['error']['message']);}else{return _0x10822d(_0x4763e9[_0xe9bd('0xa')]);}})[_0xe9bd('0xb')](function(_0x2601ac){logger['error'](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x2601ac,_0x1c1b34);return _0x1a4d14(_0x2601ac);});});};module[_0xe9bd('0xc')]=client;
\ No newline at end of file
index 2f83b98..f1df616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9199=['countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callbackuniqueid','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','getQueue','exports','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0xd1b6d5,_0x4fdf80){var _0x3da51e=function(_0x2ff2bf){while(--_0x2ff2bf){_0xd1b6d5['push'](_0xd1b6d5['shift']());}};_0x3da51e(++_0x4fdf80);}(_0x9199,0x71));var _0x9919=function(_0x9ec1a9,_0x5f2e98){_0x9ec1a9=_0x9ec1a9-0x0;var _0x2eba69=_0x9199[_0x9ec1a9];return _0x2eba69;};'use strict';var util=require(_0x9919('0x0'));var _=require(_0x9919('0x1'));var moment=require(_0x9919('0x2'));function checkNameSurname(_0x35b697,_0x1c9050,_0xf6d29){var _0x2dfa69='';if(!_[_0x9919('0x3')](_0x1c9050)&&_0x9919('0x4')===typeof _0x1c9050){_0x2dfa69+=_0x1c9050;}if(!_['isNil'](_0xf6d29)&&_0x9919('0x4')===typeof _0xf6d29){_0x2dfa69+='\x20'+_0xf6d29;}if(_0x2dfa69!==''){return _0x2dfa69;}return _0x35b697;}function Action(_0x473fd3,_0x16c0c3,_0x1b479b){this[_0x9919('0x5')]=_0x473fd3;this[_0x9919('0x6')]=_0x1b479b||undefined;this[_0x9919('0x7')]=checkNameSurname(_0x16c0c3[_0x9919('0x8')]['phone'],_0x16c0c3[_0x9919('0x8')][_0x9919('0x9')],_0x16c0c3['Contact'][_0x9919('0xa')]);this[_0x9919('0xb')]=_0x16c0c3['phone'];this[_0x9919('0xc')]=_0x473fd3[_0x9919('0x7')];this[_0x9919('0xd')]=_0x16c0c3[_0x9919('0xd')]||![];this[_0x9919('0xe')]=_0x473fd3[_0x9919('0xe')];this[_0x9919('0xf')]=_0x473fd3[_0x9919('0xf')]||0x3;this[_0x9919('0x10')]=_0x16c0c3[_0x9919('0x10')];this['countbusyretry']=_0x16c0c3[_0x9919('0x11')];this[_0x9919('0x12')]=_0x16c0c3[_0x9919('0x12')];this[_0x9919('0x13')]=_0x16c0c3['countnoanswerretry'];this[_0x9919('0x14')]=_0x16c0c3['countnosuchnumberretry'];this[_0x9919('0x15')]=_0x16c0c3[_0x9919('0x15')];this[_0x9919('0x16')]=_0x16c0c3['countabandonedretry'];this[_0x9919('0x17')]=_0x16c0c3[_0x9919('0x17')];this['countagentrejectretry']=_0x16c0c3[_0x9919('0x18')];this[_0x9919('0x19')]=_0x16c0c3[_0x9919('0x19')];this[_0x9919('0x1a')]=_0x16c0c3[_0x9919('0x1a')];this[_0x9919('0x1b')]=_0x16c0c3['UserId'];this[_0x9919('0x1c')]=_0x16c0c3['VoiceQueueId'];this[_0x9919('0x1d')]=_0x16c0c3[_0x9919('0x1d')];this['idHopper']=_0x16c0c3['id'];this[_0x9919('0x1e')]=_0x16c0c3[_0x9919('0x8')][_0x9919('0x9')]||'';this[_0x9919('0x1f')]=moment()['format'](_0x9919('0x20'));this['callback']=_0x16c0c3['callback'];this[_0x9919('0x21')]=_0x16c0c3[_0x9919('0x21')];this['callbackat']=_0x16c0c3['callbackat'];this['recallme']=_0x16c0c3[_0x9919('0x22')];this[_0x9919('0x23')]='';this[_0x9919('0x24')]='';}Action[_0x9919('0x25')][_0x9919('0x26')]=function(){return util[_0x9919('0x27')](_0x9919('0x28'),this['name'],this[_0x9919('0x5')][_0x9919('0x29')]>0x0?this['number'][_0x9919('0x2a')](this[_0x9919('0x5')]['dialCutDigit']):this[_0x9919('0xb')]);};Action[_0x9919('0x25')][_0x9919('0x2b')]=function(){return this[_0x9919('0xc')];};module[_0x9919('0x2c')]=Action;
\ No newline at end of file
+var _0x37d4=['uniqueid','name','phone','Contact','firstName','lastName','queue','active','type','dialQueueTimeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','number','substring','getQueue','exports','util','moment','isNil','string','voiceQueue'];(function(_0x68aff2,_0x35a8a8){var _0x149631=function(_0x1090a8){while(--_0x1090a8){_0x68aff2['push'](_0x68aff2['shift']());}};_0x149631(++_0x35a8a8);}(_0x37d4,0xa3));var _0x437d=function(_0x1ab21c,_0x446e99){_0x1ab21c=_0x1ab21c-0x0;var _0x53dcb1=_0x37d4[_0x1ab21c];return _0x53dcb1;};'use strict';var util=require(_0x437d('0x0'));var _=require('lodash');var moment=require(_0x437d('0x1'));function checkNameSurname(_0x46da7b,_0x3a3410,_0x2bf7bf){var _0x409914='';if(!_[_0x437d('0x2')](_0x3a3410)&&_0x437d('0x3')===typeof _0x3a3410){_0x409914+=_0x3a3410;}if(!_['isNil'](_0x2bf7bf)&&_0x437d('0x3')===typeof _0x2bf7bf){_0x409914+='\x20'+_0x2bf7bf;}if(_0x409914!==''){return _0x409914;}return _0x46da7b;}function Action(_0x3da592,_0x438a8f,_0x1288eb){this[_0x437d('0x4')]=_0x3da592;this[_0x437d('0x5')]=_0x1288eb||undefined;this[_0x437d('0x6')]=checkNameSurname(_0x438a8f['Contact'][_0x437d('0x7')],_0x438a8f[_0x437d('0x8')][_0x437d('0x9')],_0x438a8f[_0x437d('0x8')][_0x437d('0xa')]);this['number']=_0x438a8f[_0x437d('0x7')];this[_0x437d('0xb')]=_0x3da592[_0x437d('0x6')];this[_0x437d('0xc')]=_0x438a8f[_0x437d('0xc')]||![];this[_0x437d('0xd')]=_0x3da592['type'];this[_0x437d('0xe')]=_0x3da592[_0x437d('0xe')]||0x3;this['scheduledat']=_0x438a8f['scheduledat'];this[_0x437d('0xf')]=_0x438a8f[_0x437d('0xf')];this[_0x437d('0x10')]=_0x438a8f[_0x437d('0x10')];this[_0x437d('0x11')]=_0x438a8f[_0x437d('0x11')];this[_0x437d('0x12')]=_0x438a8f['countnosuchnumberretry'];this['countdropretry']=_0x438a8f['countdropretry'];this[_0x437d('0x13')]=_0x438a8f[_0x437d('0x13')];this['countmachineretry']=_0x438a8f[_0x437d('0x14')];this['countagentrejectretry']=_0x438a8f[_0x437d('0x15')];this[_0x437d('0x16')]=_0x438a8f[_0x437d('0x16')];this[_0x437d('0x17')]=_0x438a8f[_0x437d('0x17')];this['UserId']=_0x438a8f['UserId'];this[_0x437d('0x18')]=_0x438a8f['VoiceQueueId'];this[_0x437d('0x19')]=_0x438a8f[_0x437d('0x19')];this['idHopper']=_0x438a8f['id'];this[_0x437d('0x1a')]=_0x438a8f[_0x437d('0x8')][_0x437d('0x9')]||'';this[_0x437d('0x1b')]=moment()[_0x437d('0x1c')](_0x437d('0x1d'));this[_0x437d('0x1e')]=_0x438a8f[_0x437d('0x1e')];this[_0x437d('0x1f')]=_0x438a8f['callbackuniqueid'];this[_0x437d('0x20')]=_0x438a8f['callbackat'];this[_0x437d('0x21')]=_0x438a8f[_0x437d('0x21')];this[_0x437d('0x22')]='';this[_0x437d('0x23')]='';}Action[_0x437d('0x24')]['getCaller']=function(){return util[_0x437d('0x1c')](_0x437d('0x25'),this[_0x437d('0x6')],this[_0x437d('0x4')]['dialCutDigit']>0x0?this[_0x437d('0x26')][_0x437d('0x27')](this[_0x437d('0x4')]['dialCutDigit']):this[_0x437d('0x26')]);};Action[_0x437d('0x24')][_0x437d('0x28')]=function(){return this[_0x437d('0xb')];};module[_0x437d('0x29')]=Action;
\ No newline at end of file
index 06adb86..1eec894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe171=['answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','seconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countabandonedretry','countagentrejectretry','countnosuchnumberretry','countdropretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime'];(function(_0x485701,_0x1ff577){var _0x5e747a=function(_0x533c1f){while(--_0x533c1f){_0x485701['push'](_0x485701['shift']());}};_0x5e747a(++_0x1ff577);}(_0xe171,0x194));var _0x1e17=function(_0x31ceff,_0x248128){_0x31ceff=_0x31ceff-0x0;var _0x1194ca=_0xe171[_0x31ceff];return _0x1194ca;};'use strict';var util=require('util');var _=require(_0x1e17('0x0'));var moment=require(_0x1e17('0x1'));function getSeconds(_0x1958cf,_0x1e8bd7){var _0x180e95=moment(_0x1958cf)[_0x1e17('0x2')](0x0);var _0x597c47=moment(_0x1e8bd7)[_0x1e17('0x2')](0x0);return _0x180e95[_0x1e17('0x3')](_0x597c47,_0x1e17('0x4'));}function AgentComplete(_0x23228e,_0x473f2e){this[_0x1e17('0x5')]=0x4;this[_0x1e17('0x6')]='Answer';this[_0x1e17('0x7')]=_0x23228e[_0x1e17('0x7')];this[_0x1e17('0x8')]=_0x23228e[_0x1e17('0x8')];this[_0x1e17('0x9')]=_0x23228e['type']===_0x1e17('0xa')?_0x1e17('0xb'):_0x23228e[_0x1e17('0x8')];this['countbusyretry']=_0x23228e[_0x1e17('0xc')];this[_0x1e17('0xd')]=_0x23228e['countcongestionretry'];this[_0x1e17('0xe')]=_0x23228e[_0x1e17('0xe')];this[_0x1e17('0xf')]=_0x23228e['countbusyretry']+_0x23228e['countcongestionretry']+_0x23228e[_0x1e17('0xe')]+_0x23228e['countnosuchnumberretry']+_0x23228e['countdropretry']+_0x23228e[_0x1e17('0x10')]+_0x23228e['countmachineretry']+_0x23228e[_0x1e17('0x11')];this[_0x1e17('0x12')]=_0x23228e[_0x1e17('0x12')];this[_0x1e17('0x13')]=_0x23228e[_0x1e17('0x13')];this[_0x1e17('0x10')]=_0x23228e[_0x1e17('0x10')];this[_0x1e17('0x14')]=_0x23228e[_0x1e17('0x14')];this[_0x1e17('0x11')]=_0x23228e[_0x1e17('0x11')];this['uniqueid']=_0x473f2e[_0x1e17('0x15')];this[_0x1e17('0x16')]=_0x23228e[_0x1e17('0x17')];this[_0x1e17('0x18')]=_0x23228e[_0x1e17('0x19')];this[_0x1e17('0x1a')]=_0x23228e[_0x1e17('0x1a')];this[_0x1e17('0x1b')]=_0x23228e['responsetime'];this['answertime']=_0x23228e[_0x1e17('0x1c')];this[_0x1e17('0x1d')]=moment()[_0x1e17('0x1e')](_0x1e17('0x1f'));this[_0x1e17('0x20')]=getSeconds(_0x23228e[_0x1e17('0x1b')],_0x23228e['starttime']);this[_0x1e17('0x21')]=getSeconds(_0x23228e[_0x1e17('0x1c')],_0x23228e['responsetime']);this[_0x1e17('0x22')]=getSeconds(this[_0x1e17('0x1d')],_0x23228e['answertime']);this['queue']=_0x473f2e[_0x1e17('0xb')];this[_0x1e17('0x23')]=_0x473f2e[_0x1e17('0x23')];this[_0x1e17('0x24')]=_0x473f2e[_0x1e17('0x24')];this[_0x1e17('0x25')]=_0x23228e[_0x1e17('0x25')];this['callbackuniqueid']=_0x23228e[_0x1e17('0x26')];this[_0x1e17('0x27')]=_0x23228e[_0x1e17('0x27')];this[_0x1e17('0x28')]=_0x23228e[_0x1e17('0x28')];this[_0x1e17('0x29')]=_0x23228e[_0x1e17('0x29')];this[_0x1e17('0x2a')]=_0x23228e[_0x1e17('0x2a')];this[_0x1e17('0x2b')]=_0x23228e['UserId'];this[_0x1e17('0x2c')]=_0x23228e[_0x1e17('0x2c')];this[_0x1e17('0x2d')]=_0x23228e[_0x1e17('0x2d')];this[_0x1e17('0x2e')]=_0x23228e['originatecalleridnum']||'';this[_0x1e17('0x2f')]=_0x23228e[_0x1e17('0x2f')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x8600=['countdropretry','countagentrejectretry','uniqueid','name','calleridnum','starttime','responsetime','answertime','endtime','format','talktime','queue','membername','reason','callback','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','state','Answer','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry'];(function(_0x2f6065,_0x7b5c34){var _0x5e8241=function(_0x2eeb34){while(--_0x2eeb34){_0x2f6065['push'](_0x2f6065['shift']());}};_0x5e8241(++_0x7b5c34);}(_0x8600,0x107));var _0x0860=function(_0x51b829,_0xb2594c){_0x51b829=_0x51b829-0x0;var _0x12437a=_0x8600[_0x51b829];return _0x12437a;};'use strict';var util=require(_0x0860('0x0'));var _=require(_0x0860('0x1'));var moment=require(_0x0860('0x2'));function getSeconds(_0x3c246b,_0x5caf38){var _0x2aa5a9=moment(_0x3c246b)[_0x0860('0x3')](0x0);var _0x58ad52=moment(_0x5caf38)[_0x0860('0x3')](0x0);return _0x2aa5a9[_0x0860('0x4')](_0x58ad52,_0x0860('0x5'));}function AgentComplete(_0x3c8a44,_0x24d373){this[_0x0860('0x6')]=0x4;this['statedesc']=_0x0860('0x7');this['scheduledat']=_0x3c8a44[_0x0860('0x8')];this[_0x0860('0x9')]=_0x3c8a44[_0x0860('0x9')];this['campaigntype']=_0x3c8a44[_0x0860('0x9')]==='outbound'?'queue':_0x3c8a44[_0x0860('0x9')];this[_0x0860('0xa')]=_0x3c8a44['countbusyretry'];this[_0x0860('0xb')]=_0x3c8a44[_0x0860('0xb')];this[_0x0860('0xc')]=_0x3c8a44[_0x0860('0xc')];this[_0x0860('0xd')]=_0x3c8a44['countbusyretry']+_0x3c8a44[_0x0860('0xb')]+_0x3c8a44[_0x0860('0xc')]+_0x3c8a44[_0x0860('0xe')]+_0x3c8a44['countdropretry']+_0x3c8a44[_0x0860('0xf')]+_0x3c8a44[_0x0860('0x10')]+_0x3c8a44['countagentrejectretry'];this[_0x0860('0xe')]=_0x3c8a44[_0x0860('0xe')];this[_0x0860('0x11')]=_0x3c8a44[_0x0860('0x11')];this[_0x0860('0xf')]=_0x3c8a44['countabandonedretry'];this[_0x0860('0x10')]=_0x3c8a44[_0x0860('0x10')];this['countagentrejectretry']=_0x3c8a44[_0x0860('0x12')];this[_0x0860('0x13')]=_0x24d373[_0x0860('0x13')];this['calleridname']=_0x3c8a44[_0x0860('0x14')];this[_0x0860('0x15')]=_0x3c8a44['number'];this[_0x0860('0x16')]=_0x3c8a44[_0x0860('0x16')];this[_0x0860('0x17')]=_0x3c8a44['responsetime'];this[_0x0860('0x18')]=_0x3c8a44[_0x0860('0x18')];this[_0x0860('0x19')]=moment()[_0x0860('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x3c8a44[_0x0860('0x17')],_0x3c8a44[_0x0860('0x16')]);this['holdtime']=getSeconds(_0x3c8a44[_0x0860('0x18')],_0x3c8a44[_0x0860('0x17')]);this[_0x0860('0x1b')]=getSeconds(this['endtime'],_0x3c8a44[_0x0860('0x18')]);this[_0x0860('0x1c')]=_0x24d373[_0x0860('0x1c')];this[_0x0860('0x1d')]=_0x24d373['membername'];this[_0x0860('0x1e')]=_0x24d373['reason'];this[_0x0860('0x1f')]=_0x3c8a44['callback'];this['callbackuniqueid']=_0x3c8a44['callbackuniqueid'];this[_0x0860('0x20')]=_0x3c8a44['callbackat'];this[_0x0860('0x21')]=_0x3c8a44[_0x0860('0x21')];this[_0x0860('0x22')]=_0x3c8a44[_0x0860('0x22')];this[_0x0860('0x23')]=_0x3c8a44['ListId'];this['UserId']=_0x3c8a44['UserId'];this[_0x0860('0x24')]=_0x3c8a44[_0x0860('0x24')];this[_0x0860('0x25')]=_0x3c8a44[_0x0860('0x25')];this['originatecalleridnum']=_0x3c8a44['originatecalleridnum']||'';this['originatecalleridname']=_0x3c8a44[_0x0860('0x26')]||'';}module[_0x0860('0x27')]=AgentComplete;
\ No newline at end of file
index cf81dfb..a7e7c2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25fa=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','queue','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x4517ad,_0x48d355){var _0x4a49b4=function(_0x40e23e){while(--_0x40e23e){_0x4517ad['push'](_0x4517ad['shift']());}};_0x4a49b4(++_0x48d355);}(_0x25fa,0x109));var _0xa25f=function(_0x381951,_0x28b729){_0x381951=_0x381951-0x0;var _0x4d0b67=_0x25fa[_0x381951];return _0x4d0b67;};'use strict';var util=require(_0xa25f('0x0'));var _=require('lodash');var moment=require(_0xa25f('0x1'));function getSeconds(_0x37129d,_0x57e272){var _0x408155=moment(_0x37129d)[_0xa25f('0x2')](0x0);var _0x256155=moment(_0x57e272)['milliseconds'](0x0);return _0x408155['diff'](_0x256155,_0xa25f('0x3'));}function Final(_0x50dafc){this[_0xa25f('0x4')]=_0x50dafc[_0xa25f('0x4')];this[_0xa25f('0x5')]=_0x50dafc[_0xa25f('0x5')];this[_0xa25f('0x6')]=_0x50dafc[_0xa25f('0x6')];this[_0xa25f('0x7')]=_0x50dafc[_0xa25f('0x6')]===_0xa25f('0x8')?'queue':_0x50dafc[_0xa25f('0x6')];this[_0xa25f('0x9')]=_0x50dafc['countbusyretry'];this[_0xa25f('0xa')]=_0x50dafc[_0xa25f('0xa')];this[_0xa25f('0xb')]=_0x50dafc[_0xa25f('0xb')];this['countglobal']=_0x50dafc[_0xa25f('0x9')]+_0x50dafc[_0xa25f('0xa')]+_0x50dafc['countnoanswerretry']+_0x50dafc[_0xa25f('0xc')]+_0x50dafc[_0xa25f('0xd')]+_0x50dafc['countabandonedretry']+_0x50dafc[_0xa25f('0xe')]+_0x50dafc[_0xa25f('0xf')];this[_0xa25f('0xc')]=_0x50dafc[_0xa25f('0xc')];this[_0xa25f('0xd')]=_0x50dafc[_0xa25f('0xd')];this[_0xa25f('0x10')]=_0x50dafc[_0xa25f('0x10')];this[_0xa25f('0xe')]=_0x50dafc[_0xa25f('0xe')];this[_0xa25f('0xf')]=_0x50dafc[_0xa25f('0xf')];this['queue']=_0x50dafc[_0xa25f('0x11')];this[_0xa25f('0x12')]=_0x50dafc[_0xa25f('0x12')];this[_0xa25f('0x13')]=_0x50dafc[_0xa25f('0x13')];this[_0xa25f('0x14')]=_0x50dafc['starttime'];this[_0xa25f('0x15')]=_0x50dafc['responsetime'];this[_0xa25f('0x16')]=_0x50dafc['responsetime'];this['ringtime']=_0x50dafc[_0xa25f('0x17')]||0x0;this['holdtime']=_0x50dafc[_0xa25f('0x18')]||0x0;this[_0xa25f('0x19')]=_0x50dafc[_0xa25f('0x19')]||0x0;this[_0xa25f('0x1a')]=_0x50dafc[_0xa25f('0x1a')];this['callbackuniqueid']=_0x50dafc[_0xa25f('0x1b')];this[_0xa25f('0x1c')]=_0x50dafc[_0xa25f('0x1c')];this[_0xa25f('0x1d')]=_0x50dafc['recallme'];this[_0xa25f('0x1e')]=_0x50dafc[_0xa25f('0x1e')];this[_0xa25f('0x1f')]=_0x50dafc[_0xa25f('0x1f')];this['UserId']=_0x50dafc[_0xa25f('0x20')];this[_0xa25f('0x21')]=_0x50dafc[_0xa25f('0x21')];this[_0xa25f('0x22')]=_0x50dafc['CampaignId'];this[_0xa25f('0x23')]=_0x50dafc[_0xa25f('0x23')]||'';this['originatecalleridname']=_0x50dafc[_0xa25f('0x24')]||'';}module['exports']=Final;
\ No newline at end of file
+var _0xca9e=['holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','calleridname','calleridnum','responsetime','endtime','ringtime'];(function(_0x257d1c,_0x213ee6){var _0x59b03d=function(_0x19af8e){while(--_0x19af8e){_0x257d1c['push'](_0x257d1c['shift']());}};_0x59b03d(++_0x213ee6);}(_0xca9e,0x136));var _0xeca9=function(_0x517feb,_0x39d88b){_0x517feb=_0x517feb-0x0;var _0x5083aa=_0xca9e[_0x517feb];return _0x5083aa;};'use strict';var util=require(_0xeca9('0x0'));var _=require(_0xeca9('0x1'));var moment=require(_0xeca9('0x2'));function getSeconds(_0x1c579d,_0x2df937){var _0x1443e3=moment(_0x1c579d)[_0xeca9('0x3')](0x0);var _0x2c6185=moment(_0x2df937)[_0xeca9('0x3')](0x0);return _0x1443e3[_0xeca9('0x4')](_0x2c6185,_0xeca9('0x5'));}function Final(_0x1c4ce6){this[_0xeca9('0x6')]=_0x1c4ce6[_0xeca9('0x6')];this['scheduledat']=_0x1c4ce6[_0xeca9('0x7')];this[_0xeca9('0x8')]=_0x1c4ce6['type'];this['campaigntype']=_0x1c4ce6[_0xeca9('0x8')]===_0xeca9('0x9')?_0xeca9('0xa'):_0x1c4ce6['type'];this[_0xeca9('0xb')]=_0x1c4ce6[_0xeca9('0xb')];this[_0xeca9('0xc')]=_0x1c4ce6[_0xeca9('0xc')];this[_0xeca9('0xd')]=_0x1c4ce6[_0xeca9('0xd')];this['countglobal']=_0x1c4ce6[_0xeca9('0xb')]+_0x1c4ce6[_0xeca9('0xc')]+_0x1c4ce6['countnoanswerretry']+_0x1c4ce6[_0xeca9('0xe')]+_0x1c4ce6['countdropretry']+_0x1c4ce6[_0xeca9('0xf')]+_0x1c4ce6[_0xeca9('0x10')]+_0x1c4ce6['countagentrejectretry'];this[_0xeca9('0xe')]=_0x1c4ce6[_0xeca9('0xe')];this[_0xeca9('0x11')]=_0x1c4ce6['countdropretry'];this[_0xeca9('0xf')]=_0x1c4ce6[_0xeca9('0xf')];this[_0xeca9('0x10')]=_0x1c4ce6[_0xeca9('0x10')];this['countagentrejectretry']=_0x1c4ce6['countagentrejectretry'];this[_0xeca9('0xa')]=_0x1c4ce6[_0xeca9('0xa')];this['calleridname']=_0x1c4ce6[_0xeca9('0x12')];this[_0xeca9('0x13')]=_0x1c4ce6['calleridnum'];this['starttime']=_0x1c4ce6['starttime'];this[_0xeca9('0x14')]=_0x1c4ce6[_0xeca9('0x14')];this[_0xeca9('0x15')]=_0x1c4ce6['responsetime'];this[_0xeca9('0x16')]=_0x1c4ce6['ringtime']||0x0;this['holdtime']=_0x1c4ce6[_0xeca9('0x17')]||0x0;this['talktime']=_0x1c4ce6[_0xeca9('0x18')]||0x0;this[_0xeca9('0x19')]=_0x1c4ce6['callback'];this[_0xeca9('0x1a')]=_0x1c4ce6[_0xeca9('0x1a')];this['callbackat']=_0x1c4ce6[_0xeca9('0x1b')];this['recallme']=_0x1c4ce6[_0xeca9('0x1c')];this[_0xeca9('0x1d')]=_0x1c4ce6[_0xeca9('0x1d')];this['ListId']=_0x1c4ce6[_0xeca9('0x1e')];this[_0xeca9('0x1f')]=_0x1c4ce6['UserId'];this[_0xeca9('0x20')]=_0x1c4ce6[_0xeca9('0x20')];this[_0xeca9('0x21')]=_0x1c4ce6[_0xeca9('0x21')];this['originatecalleridnum']=_0x1c4ce6[_0xeca9('0x22')]||'';this['originatecalleridname']=_0x1c4ce6[_0xeca9('0x23')]||'';}module[_0xeca9('0x24')]=Final;
\ No newline at end of file
index 8f126f4..7fbe1a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d92=['countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','format','ringtime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','exports','util','lodash','milliseconds','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0x2cbf5d,_0xaac253){var _0xf4da4=function(_0xe9dd5e){while(--_0xe9dd5e){_0x2cbf5d['push'](_0x2cbf5d['shift']());}};_0xf4da4(++_0xaac253);}(_0x9d92,0x11b));var _0x29d9=function(_0x121886,_0x8cd8e5){_0x121886=_0x121886-0x0;var _0x20ca01=_0x9d92[_0x121886];return _0x20ca01;};'use strict';var util=require(_0x29d9('0x0'));var _=require(_0x29d9('0x1'));var moment=require('moment');function getSeconds(_0x36cc85,_0x4e8eba){var _0x10a0f8=moment(_0x36cc85)[_0x29d9('0x2')](0x0);var _0xffff48=moment(_0x4e8eba)['milliseconds'](0x0);return _0x10a0f8['diff'](_0xffff48,'seconds');}function Hangup(_0xa31773,_0x284090){this[_0x29d9('0x3')]=0x4;this['statedesc']=_0x29d9('0x4');this[_0x29d9('0x5')]=_0xa31773[_0x29d9('0x5')];this[_0x29d9('0x6')]=_0xa31773[_0x29d9('0x6')];this[_0x29d9('0x7')]=_0xa31773[_0x29d9('0x6')]===_0x29d9('0x8')?_0x29d9('0x9'):_0xa31773[_0x29d9('0x6')];this[_0x29d9('0xa')]=_0xa31773[_0x29d9('0xa')];this[_0x29d9('0xb')]=_0xa31773['countcongestionretry'];this[_0x29d9('0xc')]=_0xa31773[_0x29d9('0xc')];this[_0x29d9('0xd')]=_0xa31773[_0x29d9('0xa')]+_0xa31773[_0x29d9('0xb')]+_0xa31773[_0x29d9('0xc')]+_0xa31773[_0x29d9('0xe')]+_0xa31773[_0x29d9('0xf')]+_0xa31773[_0x29d9('0x10')]+_0xa31773['countmachineretry']+_0xa31773['countagentrejectretry'];this['countnosuchnumberretry']=_0xa31773[_0x29d9('0xe')];this[_0x29d9('0xf')]=_0xa31773[_0x29d9('0xf')];this[_0x29d9('0x10')]=_0xa31773['countabandonedretry'];this['countmachineretry']=_0xa31773['countmachineretry'];this['countagentrejectretry']=_0xa31773[_0x29d9('0x11')];this[_0x29d9('0x12')]=_0x284090[_0x29d9('0x12')];this['calleridname']=_0xa31773[_0x29d9('0x13')];this[_0x29d9('0x14')]=_0xa31773[_0x29d9('0x15')];this[_0x29d9('0x16')]=_0xa31773['starttime'];this[_0x29d9('0x17')]=_0xa31773[_0x29d9('0x17')];this[_0x29d9('0x18')]=moment()[_0x29d9('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x29d9('0x1a')]=getSeconds(_0xa31773[_0x29d9('0x17')],_0xa31773['starttime']);this['holdtime']=0x0;this['talktime']=getSeconds(this[_0x29d9('0x18')],_0xa31773[_0x29d9('0x17')]);this['queue']=_0xa31773[_0x29d9('0x9')];this['membername']='IVR';this[_0x29d9('0x1b')]=_0x284090['cause-txt'];this['callback']=_0xa31773[_0x29d9('0x1c')];this[_0x29d9('0x1d')]=_0xa31773[_0x29d9('0x1d')];this['callbackat']=_0xa31773[_0x29d9('0x1e')];this[_0x29d9('0x1f')]=_0xa31773[_0x29d9('0x1f')];this[_0x29d9('0x20')]=_0xa31773[_0x29d9('0x20')];this['ListId']=_0xa31773[_0x29d9('0x21')];this[_0x29d9('0x22')]=_0xa31773[_0x29d9('0x22')];this[_0x29d9('0x23')]=_0xa31773[_0x29d9('0x23')];this['CampaignId']=_0xa31773['CampaignId'];}module[_0x29d9('0x24')]=Hangup;
\ No newline at end of file
+var _0x403d=['UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','ringtime','holdtime','talktime','IVR','cause-txt','callback','callbackuniqueid','callbackat','ContactId','ListId'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x403d,0x138));var _0xd403=function(_0x55a440,_0x5dacbc){_0x55a440=_0x55a440-0x0;var _0x1561b9=_0x403d[_0x55a440];return _0x1561b9;};'use strict';var util=require(_0xd403('0x0'));var _=require(_0xd403('0x1'));var moment=require('moment');function getSeconds(_0x197dae,_0x21403d){var _0x182877=moment(_0x197dae)[_0xd403('0x2')](0x0);var _0x53553c=moment(_0x21403d)[_0xd403('0x2')](0x0);return _0x182877[_0xd403('0x3')](_0x53553c,_0xd403('0x4'));}function Hangup(_0x3d8e29,_0x27380b){this[_0xd403('0x5')]=0x4;this[_0xd403('0x6')]=_0xd403('0x7');this[_0xd403('0x8')]=_0x3d8e29[_0xd403('0x8')];this[_0xd403('0x9')]=_0x3d8e29[_0xd403('0x9')];this['campaigntype']=_0x3d8e29['type']===_0xd403('0xa')?_0xd403('0xb'):_0x3d8e29[_0xd403('0x9')];this[_0xd403('0xc')]=_0x3d8e29[_0xd403('0xc')];this[_0xd403('0xd')]=_0x3d8e29[_0xd403('0xd')];this['countnoanswerretry']=_0x3d8e29[_0xd403('0xe')];this[_0xd403('0xf')]=_0x3d8e29[_0xd403('0xc')]+_0x3d8e29[_0xd403('0xd')]+_0x3d8e29[_0xd403('0xe')]+_0x3d8e29[_0xd403('0x10')]+_0x3d8e29['countdropretry']+_0x3d8e29[_0xd403('0x11')]+_0x3d8e29[_0xd403('0x12')]+_0x3d8e29[_0xd403('0x13')];this[_0xd403('0x10')]=_0x3d8e29[_0xd403('0x10')];this[_0xd403('0x14')]=_0x3d8e29[_0xd403('0x14')];this[_0xd403('0x11')]=_0x3d8e29[_0xd403('0x11')];this['countmachineretry']=_0x3d8e29[_0xd403('0x12')];this[_0xd403('0x13')]=_0x3d8e29['countagentrejectretry'];this[_0xd403('0x15')]=_0x27380b[_0xd403('0x15')];this[_0xd403('0x16')]=_0x3d8e29[_0xd403('0x17')];this[_0xd403('0x18')]=_0x3d8e29[_0xd403('0x19')];this[_0xd403('0x1a')]=_0x3d8e29[_0xd403('0x1a')];this[_0xd403('0x1b')]=_0x3d8e29[_0xd403('0x1b')];this[_0xd403('0x1c')]=moment()[_0xd403('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xd403('0x1e')]=getSeconds(_0x3d8e29[_0xd403('0x1b')],_0x3d8e29[_0xd403('0x1a')]);this[_0xd403('0x1f')]=0x0;this[_0xd403('0x20')]=getSeconds(this['endtime'],_0x3d8e29[_0xd403('0x1b')]);this['queue']=_0x3d8e29[_0xd403('0xb')];this['membername']=_0xd403('0x21');this['reason']=_0x27380b[_0xd403('0x22')];this[_0xd403('0x23')]=_0x3d8e29[_0xd403('0x23')];this[_0xd403('0x24')]=_0x3d8e29[_0xd403('0x24')];this[_0xd403('0x25')]=_0x3d8e29[_0xd403('0x25')];this['recallme']=_0x3d8e29['recallme'];this[_0xd403('0x26')]=_0x3d8e29[_0xd403('0x26')];this[_0xd403('0x27')]=_0x3d8e29[_0xd403('0x27')];this[_0xd403('0x28')]=_0x3d8e29['UserId'];this['VoiceQueueId']=_0x3d8e29[_0xd403('0x29')];this[_0xd403('0x2a')]=_0x3d8e29[_0xd403('0x2a')];}module[_0xd403('0x2b')]=Hangup;
\ No newline at end of file
index 554c48e..1d0be4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb6f=['CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeb6f,0x9c));var _0xfeb6=function(_0x44c935,_0x3653f0){_0x44c935=_0x44c935-0x0;var _0x465bee=_0xeb6f[_0x44c935];return _0x465bee;};'use strict';var util=require(_0xfeb6('0x0'));var _=require('lodash');var moment=require(_0xfeb6('0x1'));function getSeconds(_0x16d827,_0x53447d){var _0x581ec2=moment(_0x16d827)['milliseconds'](0x0);var _0x4693fa=moment(_0x53447d)['milliseconds'](0x0);return _0x581ec2['diff'](_0x4693fa,_0xfeb6('0x2'));}function History(_0x204739){this[_0xfeb6('0x3')]=_0x204739[_0xfeb6('0x3')];this[_0xfeb6('0x4')]=_0x204739[_0xfeb6('0x4')]||undefined;this[_0xfeb6('0x5')]=_0x204739['type'];this[_0xfeb6('0x6')]=_0x204739[_0xfeb6('0x5')]===_0xfeb6('0x7')?_0xfeb6('0x8'):_0x204739[_0xfeb6('0x5')];this[_0xfeb6('0x9')]=_0x204739[_0xfeb6('0x9')];this[_0xfeb6('0xa')]=_0x204739[_0xfeb6('0xa')];this[_0xfeb6('0xb')]=_0x204739[_0xfeb6('0xb')];this['countglobal']=_0x204739[_0xfeb6('0x9')]+_0x204739[_0xfeb6('0xa')]+_0x204739[_0xfeb6('0xb')]+_0x204739[_0xfeb6('0xc')]+_0x204739[_0xfeb6('0xd')]+_0x204739[_0xfeb6('0xe')]+_0x204739[_0xfeb6('0xf')]+_0x204739[_0xfeb6('0x10')];this[_0xfeb6('0xc')]=_0x204739[_0xfeb6('0xc')];this[_0xfeb6('0xd')]=_0x204739['countdropretry'];this['countabandonedretry']=_0x204739['countabandonedretry'];this['countmachineretry']=_0x204739[_0xfeb6('0xf')];this['countagentrejectretry']=_0x204739[_0xfeb6('0x10')];this[_0xfeb6('0x8')]=_0x204739[_0xfeb6('0x8')];this[_0xfeb6('0x11')]=_0x204739[_0xfeb6('0x12')];this['calleridnum']=_0x204739[_0xfeb6('0x13')];this[_0xfeb6('0x14')]=_0x204739[_0xfeb6('0x14')];this[_0xfeb6('0x15')]=_0x204739[_0xfeb6('0x15')];this[_0xfeb6('0x16')]=_0x204739[_0xfeb6('0x15')];this[_0xfeb6('0x17')]=getSeconds(_0x204739[_0xfeb6('0x15')],_0x204739['starttime']);this[_0xfeb6('0x18')]=0x0;this[_0xfeb6('0x19')]=0x0;this[_0xfeb6('0x1a')]=_0x204739['callback'];this[_0xfeb6('0x1b')]=_0x204739['callbackuniqueid'];this[_0xfeb6('0x1c')]=_0x204739[_0xfeb6('0x1c')];this[_0xfeb6('0x1d')]=_0x204739[_0xfeb6('0x1d')];this[_0xfeb6('0x1e')]=_0x204739['ContactId'];this['ListId']=_0x204739[_0xfeb6('0x1f')];this[_0xfeb6('0x20')]=_0x204739['UserId'];this[_0xfeb6('0x21')]=_0x204739[_0xfeb6('0x21')];this[_0xfeb6('0x22')]=_0x204739[_0xfeb6('0x22')];this[_0xfeb6('0x23')]=_0x204739[_0xfeb6('0x23')]||'';this[_0xfeb6('0x24')]=_0x204739[_0xfeb6('0x24')]||'';}module[_0xfeb6('0x25')]=History;
\ No newline at end of file
+var _0xf44f=['holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','diff','uniqueid','scheduledat','type','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','calleridname','name','calleridnum','number','starttime','responsetime'];(function(_0x442409,_0x1021fe){var _0x18cc41=function(_0x210ba6){while(--_0x210ba6){_0x442409['push'](_0x442409['shift']());}};_0x18cc41(++_0x1021fe);}(_0xf44f,0x7d));var _0xff44=function(_0x3f8a7e,_0x2d8f8c){_0x3f8a7e=_0x3f8a7e-0x0;var _0x104adc=_0xf44f[_0x3f8a7e];return _0x104adc;};'use strict';var util=require('util');var _=require(_0xff44('0x0'));var moment=require(_0xff44('0x1'));function getSeconds(_0x14c6f8,_0x333eeb){var _0x1e9185=moment(_0x14c6f8)['milliseconds'](0x0);var _0x1a2734=moment(_0x333eeb)['milliseconds'](0x0);return _0x1e9185[_0xff44('0x2')](_0x1a2734,'seconds');}function History(_0x14f6de){this['uniqueid']=_0x14f6de[_0xff44('0x3')];this[_0xff44('0x4')]=_0x14f6de[_0xff44('0x4')]||undefined;this[_0xff44('0x5')]=_0x14f6de[_0xff44('0x5')];this['campaigntype']=_0x14f6de[_0xff44('0x5')]===_0xff44('0x6')?_0xff44('0x7'):_0x14f6de[_0xff44('0x5')];this['countbusyretry']=_0x14f6de['countbusyretry'];this[_0xff44('0x8')]=_0x14f6de[_0xff44('0x8')];this[_0xff44('0x9')]=_0x14f6de[_0xff44('0x9')];this[_0xff44('0xa')]=_0x14f6de[_0xff44('0xb')]+_0x14f6de[_0xff44('0x8')]+_0x14f6de[_0xff44('0x9')]+_0x14f6de['countnosuchnumberretry']+_0x14f6de[_0xff44('0xc')]+_0x14f6de[_0xff44('0xd')]+_0x14f6de[_0xff44('0xe')]+_0x14f6de[_0xff44('0xf')];this[_0xff44('0x10')]=_0x14f6de['countnosuchnumberretry'];this['countdropretry']=_0x14f6de[_0xff44('0xc')];this[_0xff44('0xd')]=_0x14f6de[_0xff44('0xd')];this[_0xff44('0xe')]=_0x14f6de[_0xff44('0xe')];this['countagentrejectretry']=_0x14f6de[_0xff44('0xf')];this[_0xff44('0x7')]=_0x14f6de[_0xff44('0x7')];this[_0xff44('0x11')]=_0x14f6de[_0xff44('0x12')];this[_0xff44('0x13')]=_0x14f6de[_0xff44('0x14')];this[_0xff44('0x15')]=_0x14f6de['starttime'];this[_0xff44('0x16')]=_0x14f6de[_0xff44('0x16')];this['endtime']=_0x14f6de[_0xff44('0x16')];this['ringtime']=getSeconds(_0x14f6de[_0xff44('0x16')],_0x14f6de[_0xff44('0x15')]);this[_0xff44('0x17')]=0x0;this[_0xff44('0x18')]=0x0;this[_0xff44('0x19')]=_0x14f6de[_0xff44('0x19')];this[_0xff44('0x1a')]=_0x14f6de[_0xff44('0x1a')];this[_0xff44('0x1b')]=_0x14f6de[_0xff44('0x1b')];this[_0xff44('0x1c')]=_0x14f6de[_0xff44('0x1c')];this[_0xff44('0x1d')]=_0x14f6de[_0xff44('0x1d')];this[_0xff44('0x1e')]=_0x14f6de[_0xff44('0x1e')];this[_0xff44('0x1f')]=_0x14f6de[_0xff44('0x1f')];this[_0xff44('0x20')]=_0x14f6de['VoiceQueueId'];this[_0xff44('0x21')]=_0x14f6de['CampaignId'];this[_0xff44('0x22')]=_0x14f6de['originatecalleridnum']||'';this[_0xff44('0x23')]=_0x14f6de[_0xff44('0x23')]||'';}module[_0xff44('0x24')]=History;
\ No newline at end of file
index 8750024..8822a7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf348=['custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countcongestionretry','stateGlobal','reason19\x20machine....','syncHangup','[syncHangupIvr][createHistory]','AnswerAGI','AGI','[syncHangupIvr]','dialQueueProject','cause-txt','reason','agent','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','syncQueueCallerAbandon','droptime','responsetime','dropreason','TIMEOUT','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','dialDropMaxRetry','[rescheduleContact][Drop]','Drop','calleridname','calleridnum','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','queueCallerAbandonCreateState','[rescheduleContact][Abandoned]','actionid','locked','paused','stateinterface','push','queueStatusComplete','[booked][unlockQueueStatus]','strategy','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','idHopper','pick','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','iftime\x20%s,%s','interval','timezones','content','indexOf','true','command','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','progressive','handlePower','Queue','method\x20not\x20recognized','Agent','user:%s','launchHandleIvr','handleIvr','dialGlobalInterval','dialTimezone','checkDialMethod','filter','dialPreviewRecallmeReminder','online','map','user:dialPreviewRecallReminder','checkPreviewRecallReminder','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','originate','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialQueueTimeout','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','createdAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','trim','dialCutDigit','substring','[originateError]:\x20%s','OriginateError','[originate][error]','syncOriginateResponse','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','custom:agentbusy','busy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','dialCongestionMaxRetry','reason\x208\x20congestion','reason\x2011\x20abandoned','dialAgentRejectRetryFrequency','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Success','[moveContactManagedDialer][0]','contact\x20not\x20moved','round','predictiveIntervalMaxThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','dialPredictiveInterval','started\x20in\x20predictive\x20at','getDataPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','dialPredictiveOptimizationPercentage','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','UserId','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','Queue:\x20','dialRecallMeTimeout','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','[actionOriginate]\x20','[actionOriginateIvr]\x20','dialLimitQueue','not_inuse','reachable','[getContactDialer2]','[handlePredictive][limitChannel]','tryOriginatePredictive','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\x20--------','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','exports','util','lodash','uuid','md5','ioredis','../preview/util/util','../../../config/environment/','dialer','booked','../../../config/logger','predictiveCalls','syncQueueSummary','redis','defaults','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./action','./history','./final','./agentComplete','./queueCallerAbandon','env','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','syncAgentConnect','queuecallerabandon','originateresponse','bind','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','Error','stringify','diff','seconds','emit','outbound','answered','available','loggedIn','pTalking','sumDuration','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','callerid','voice:queue:%s','voice_queue:save','type','isEmpty','info','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','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','---------\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','milliseconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','string','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','statedesc','endtime','starttime','[uniqueid]','clearZombieChannels','sequence','isNil','Action','channel','No\x20such\x20channel','[Dialer][checkChannel]','queue','ivr','updateOriginated','[Dialer][checkChannel][ivr]','resolve','countReScheduled','catch','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','saveInDb','ContactId','ListId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isTrunkReachable','active','SIP/%s','status','uniqueid','variable','exten','xcally-motion-dialer','dialAMDActive','HANGUP','outboundAnswerCallsDay','state','HangupInAMD','AMD','buildObj','amd','[syncHangupInAMD]','value','MACHINE','Machine','membername','countmachineretry','countglobal'];(function(_0x41382c,_0xc3ffd1){var _0x4da35b=function(_0x5d56b8){while(--_0x5d56b8){_0x41382c['push'](_0x41382c['shift']());}};_0x4da35b(++_0xc3ffd1);}(_0xf348,0x127));var _0x8f34=function(_0xc1d96f,_0x317a75){_0xc1d96f=_0xc1d96f-0x0;var _0x43edd9=_0xf348[_0xc1d96f];return _0x43edd9;};'use strict';var util=require(_0x8f34('0x0'));var _=require(_0x8f34('0x1'));var uuid=require(_0x8f34('0x2'));var moment=require('moment');var rr=require('rr');var md5=require(_0x8f34('0x3'));var Redis=require(_0x8f34('0x4'));var ut=require(_0x8f34('0x5'));var config=require(_0x8f34('0x6'));var logger=require('../../../config/logger')(_0x8f34('0x7'));var loggerBooked=require('../../../config/logger')(_0x8f34('0x8'));var loggerPredictive=require(_0x8f34('0x9'))('predictive');var loggerPredictiveCalls=require('../../../config/logger')(_0x8f34('0xa'));var loggerSyncQueueSummary=require('../../../config/logger')(_0x8f34('0xb'));var ami=require('../ami');config[_0x8f34('0xc')]=_[_0x8f34('0xd')](config[_0x8f34('0xc')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8f34('0xc')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperAdditionalPhone=require(_0x8f34('0xe'));var cmHopperBlack=require(_0x8f34('0xf'));var voiceQueueRt=require(_0x8f34('0x10'));var RpcSetting=require(_0x8f34('0x11'));var Action=require(_0x8f34('0x12'));var History=require(_0x8f34('0x13'));var Final=require(_0x8f34('0x14'));var AgentComplete=require(_0x8f34('0x15'));var QueueCallerAbandon=require(_0x8f34('0x16'));var Hangup=require('./hangup');var ipAgi=process[_0x8f34('0x17')]['XCALLY_IP_AGI']||_0x8f34('0x18');var strategy={'rrmemory':_0x8f34('0x19'),'roundrobin':_0x8f34('0x1a')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x8f34('0x1b')][_0x8f34('0x1c')]=function(_0x434ea3){this['tail']=this[_0x8f34('0x1d')]?this['tail'][_0x8f34('0x1e')](_0x434ea3):_0x434ea3();};function Dialer(_0x2df0e0,_0x3a5ce7){this['sequence']=new Sequence();this[_0x8f34('0x1f')]=_0x3a5ce7;this[_0x8f34('0x20')]=_0x2df0e0[_0x8f34('0x20')];this['campaigns']=_0x2df0e0[_0x8f34('0x21')];this[_0x8f34('0x22')]=_0x2df0e0[_0x8f34('0x22')];this[_0x8f34('0x23')]=_0x2df0e0[_0x8f34('0x23')];this[_0x8f34('0x24')]=config[_0x8f34('0x24')]||0x2;this['channels']={};this[_0x8f34('0x25')]={};this[_0x8f34('0x26')]={};this[_0x8f34('0x27')]={};this[_0x8f34('0x28')]={};this['startPredictive']={};this[_0x8f34('0x29')]={};this[_0x8f34('0x2a')]={};this[_0x8f34('0x2b')]={};this['queueBookedRR']={};ami['on'](_0x8f34('0x2c'),this[_0x8f34('0x2d')]['bind'](this));ami['on'](_0x8f34('0x2e'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0x8f34('0x2f'),this['syncOriginateResponse'][_0x8f34('0x30')](this));ami['on'](_0x8f34('0x31'),this[_0x8f34('0x32')][_0x8f34('0x30')](this));ami['on'](_0x8f34('0x33'),this[_0x8f34('0xb')]['bind'](this));ami['on'](_0x8f34('0x34'),this[_0x8f34('0x35')][_0x8f34('0x30')](this));ami['on'](_0x8f34('0x36'),this['syncHangup'][_0x8f34('0x30')](this));ami['on'](_0x8f34('0x37'),this[_0x8f34('0x38')][_0x8f34('0x30')](this));ami['on'](_0x8f34('0x39'),this[_0x8f34('0x3a')]['bind'](this));ami['on'](_0x8f34('0x3b'),this[_0x8f34('0x3c')][_0x8f34('0x30')](this));ami['on']('queuestatuscomplete',this[_0x8f34('0x3d')][_0x8f34('0x30')](this));this[_0x8f34('0x3e')]();this[_0x8f34('0x3f')]();RpcSetting[_0x8f34('0x40')]()[_0x8f34('0x41')](function(_0x6058d){previewRecallmeReminderInterval=_0x6058d[_0x8f34('0x42')];});}function isNotNull(_0xce5e40){return _0xce5e40!==null&&!_[_0x8f34('0x43')](_0xce5e40);}function checkIsLoggedIn(_0x27881c,_0x2f9397){return function(){if(_0x2f9397<=0x0){_0x27881c[_0x8f34('0x44')]=_0x8f34('0x45');throw _0x27881c[_0x8f34('0x46')]+_0x8f34('0x47');}};}function isActive(_0x41873c){return _0x41873c;}function checkIsActive(_0x324e35,_0x2441db){return function(){if(!isActive(_0x2441db)){_0x324e35[_0x8f34('0x44')]=_0x8f34('0x48');throw _0x324e35[_0x8f34('0x46')]+_0x8f34('0x49');}};}function checkInterval(_0x23f03d){return function(){if(!isNotNull(_0x23f03d[_0x8f34('0x4a')])){_0x23f03d[_0x8f34('0x44')]=_0x8f34('0x4b');throw _0x23f03d[_0x8f34('0x46')]+_0x8f34('0x4c');}if(!isNotNull(_0x23f03d[_0x8f34('0x4a')][_0x8f34('0x4d')])){_0x23f03d[_0x8f34('0x44')]=_0x8f34('0x4b');throw _0x23f03d[_0x8f34('0x46')]+_0x8f34('0x4c');}if(!isNotNull(_['isEmpty'](_0x23f03d[_0x8f34('0x4a')][_0x8f34('0x4d')]))){_0x23f03d[_0x8f34('0x44')]=_0x8f34('0x4b');throw _0x23f03d[_0x8f34('0x46')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x2adf7d,_0x8608b2,_0x12b2e1){return{'action':_0x2adf7d,'response':_0x8608b2,'message':_0x12b2e1,'stack':_0x12b2e1};}function myreject(_0x2168b0){return function(_0x3357ac){return _0x2168b0(msgResponse('[ifTime][Action]',_0x8f34('0x4e'),JSON[_0x8f34('0x4f')](_0x3357ac)));};}function getSeconds(_0x2272ce,_0x2ac495){var _0x52d0df=moment(_0x2272ce)['milliseconds'](0x0);var _0x54eeea=moment(_0x2ac495)['milliseconds'](0x0);return _0x52d0df[_0x8f34('0x50')](_0x54eeea,_0x8f34('0x51'));}function emit(_0x71cd61,_0xb72af6,_0x332961){io['to'](_0x71cd61)[_0x8f34('0x52')](_0xb72af6,_0x332961);}function emitVoiceQueueSummary(_0x34109c){if(_0x34109c['type']===_0x8f34('0x53')){var _0xa577b3={'id':_0x34109c['id'],'name':_0x34109c[_0x8f34('0x46')],'strategy':_0x34109c['strategy'],'answered':_0x34109c[_0x8f34('0x54')],'available':_0x34109c[_0x8f34('0x55')],'loggedIn':_0x34109c[_0x8f34('0x56')],'pTalking':_0x34109c[_0x8f34('0x57')],'sumBillable':_0x34109c['sumBillable'],'sumDuration':_0x34109c[_0x8f34('0x58')],'sumHoldTime':_0x34109c['sumHoldTime']||0x0,'talking':_0x34109c[_0x8f34('0x59')],'total':_0x34109c[_0x8f34('0x5a')],'type':_0x34109c['type'],'unmanaged':_0x34109c[_0x8f34('0x5b')],'abandoned':_0x34109c[_0x8f34('0x5c')],'waiting':_0x34109c[_0x8f34('0x5d')],'loggedInDb':_0x34109c[_0x8f34('0x5e')],'dialActive':_0x34109c[_0x8f34('0x5f')],'dialMethod':_0x34109c[_0x8f34('0x60')],'dialOriginateCallerIdName':_0x34109c[_0x8f34('0x61')],'dialOriginateCallerIdNumber':_0x34109c['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x34109c[_0x8f34('0x62')],'dialPrefix':_0x34109c[_0x8f34('0x63')],'outboundAnswerAgiCallsDay':_0x34109c[_0x8f34('0x64')],'outboundAnswerCallsDay':_0x34109c['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x34109c[_0x8f34('0x65')],'outboundBusyCallsDay':_0x34109c['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x34109c[_0x8f34('0x66')],'outboundDropCallsDayACS':_0x34109c[_0x8f34('0x67')],'outboundDropCallsDayCallersExit':_0x34109c[_0x8f34('0x68')],'outboundDropCallsDayTimeout':_0x34109c[_0x8f34('0x69')],'outboundNoAnswerCallsDay':_0x34109c[_0x8f34('0x6a')],'outboundNoSuchCallsDay':_0x34109c['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x34109c[_0x8f34('0x6b')],'outboundReCallsDay':_0x34109c[_0x8f34('0x6c')],'outboundRejectCallsDay':_0x34109c['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x34109c[_0x8f34('0x6d')],'predictiveIntervalAnsweredCalls':_0x34109c[_0x8f34('0x6e')],'predictiveIntervalAvgHoldtime':_0x34109c[_0x8f34('0x6f')],'predictiveIntervalAvgTalktime':_0x34109c[_0x8f34('0x70')],'predictiveIntervalDroppedCallsCallersExit':_0x34109c[_0x8f34('0x71')],'predictiveIntervalDroppedCallsTimeout':_0x34109c[_0x8f34('0x72')],'predictiveIntervalErlangCalls':_0x34109c[_0x8f34('0x73')],'predictiveIntervalErlangCallsDroppedCalls':_0x34109c[_0x8f34('0x74')],'predictiveIntervalHitRate':_0x34109c[_0x8f34('0x75')],'predictiveIntervalMultiplicativeFactor':_0x34109c['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x34109c[_0x8f34('0x76')],'predictiveIntervalAvailable':_0x34109c[_0x8f34('0x77')],'predictiveIntervalTotalCalls':_0x34109c['predictiveIntervalTotalCalls'],'message':_0x34109c[_0x8f34('0x44')],'originated':_0x34109c[_0x8f34('0x78')],'erlangCalls':_0x34109c['erlangCalls'],'erlangCallToSecond':_0x34109c[_0x8f34('0x79')],'erlangAbandonmentRate':_0x34109c[_0x8f34('0x7a')],'erlangBusyFactor':_0x34109c[_0x8f34('0x7b')],'startPredictive':_0x34109c[_0x8f34('0x7c')],'startProgressive':_0x34109c['startProgressive']};if(_0x34109c[_0x8f34('0x7d')]){_0xa577b3[_0x8f34('0x7d')]={'id':_0x34109c['Trunk']['id'],'name':_0x34109c[_0x8f34('0x7d')][_0x8f34('0x46')],'active':_0x34109c['Trunk']['active'],'callerid':_0x34109c['Trunk'][_0x8f34('0x7e')]};}if(_0x34109c[_0x8f34('0x4a')]){_0xa577b3['Interval']={'id':_0x34109c[_0x8f34('0x4a')]['id'],'name':_0x34109c[_0x8f34('0x4a')]['name']};}var _0x3d1cf0=md5(JSON['stringify'](_0xa577b3));if(_0x34109c['md5']!==_0x3d1cf0){_0x34109c[_0x8f34('0x3')]=_0x3d1cf0;emit(util['format'](_0x8f34('0x7f'),_0xa577b3['name']),_0x8f34('0x80'),_0xa577b3);}}}function emitCampaignSummary(_0x1a5553){if(_0x1a5553[_0x8f34('0x81')]==='ivr'){emit(util['format']('campaign:ivr:%s',_0x1a5553[_0x8f34('0x46')]),'campaign:save',_0x1a5553);}}function checkGetDataPredictive(_0xd9d0f5){if(isNotNull(_0xd9d0f5)&&!_[_0x8f34('0x82')](_0xd9d0f5)){loggerPredictive[_0x8f34('0x83')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0x8f34('0x83')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xd9d0f5[_0x8f34('0x84')]);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x85'),_0xd9d0f5[_0x8f34('0x6e')]);loggerPredictive['info'](_0x8f34('0x86'),_0xd9d0f5[_0x8f34('0x72')]);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x87'),_0xd9d0f5[_0x8f34('0x71')]);loggerPredictive[_0x8f34('0x83')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xd9d0f5[_0x8f34('0x6f')]);loggerPredictive[_0x8f34('0x83')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xd9d0f5[_0x8f34('0x70')]);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x88'));if(_0xd9d0f5['predictiveIntervalTotalCalls']>0x0){if(!_[_0x8f34('0x43')](_0xd9d0f5['predictiveIntervalAvgTalktime'])&&_0xd9d0f5[_0x8f34('0x70')]>0x0){return!![];}loggerPredictive[_0x8f34('0x83')](_0x8f34('0x89'));if(!_[_0x8f34('0x43')](_0xd9d0f5['predictiveIntervalAvgHoldtime'])&&_0xd9d0f5[_0x8f34('0x6f')]>0x0){return!![];}loggerPredictive[_0x8f34('0x83')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x8f34('0x83')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x8f34('0x83')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x43c9d9){return function(_0x5ec683){loggerPredictive[_0x8f34('0x83')](_0x8f34('0x8a'));loggerPredictive[_0x8f34('0x83')](_0x8f34('0x8b'),_0x5ec683[_0x8f34('0x8c')]);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x8d'),_0x5ec683[_0x8f34('0x79')]);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x8e'),_0x5ec683[_0x8f34('0x7a')]);loggerPredictive[_0x8f34('0x83')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5ec683[_0x8f34('0x7b')]);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x8e'),_0x5ec683['erlangAbandonmentRate']);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x88'));_[_0x8f34('0x8f')](_0x43c9d9,_0x5ec683);};}function getDiff(_0x5dec8b){var _0x560c5a=moment()[_0x8f34('0x90')](0x0);var _0xf543f2=moment(_0x5dec8b)['milliseconds'](0x0);return _0x560c5a[_0x8f34('0x50')](_0xf543f2,_0x8f34('0x51'));}function ifInterval(_0x48ce07,_0x3601e4){if(_[_0x8f34('0x43')](_0x3601e4)){return![];}return getDiff(_0x3601e4)<_0x48ce07*0x3c;}function freeVariablesPredictive(_0x3461c4){if(isNotNull(_0x3461c4)){if(!_[_0x8f34('0x43')](_0x3461c4['startProgressive'])){_0x3461c4['startProgressive']=undefined;loggerPredictive[_0x8f34('0x83')](_0x3461c4['name'],_0x8f34('0x91'));}if(!_['isUndefined'](_0x3461c4[_0x8f34('0x7c')])){_0x3461c4[_0x8f34('0x7c')]=undefined;loggerPredictive['info'](_0x3461c4[_0x8f34('0x46')],_0x8f34('0x92'));}if(!_[_0x8f34('0x43')](_0x3461c4[_0x8f34('0x93')])){clearInterval(_0x3461c4[_0x8f34('0x93')]);_0x3461c4[_0x8f34('0x93')]=undefined;loggerPredictive[_0x8f34('0x83')](_0x3461c4[_0x8f34('0x46')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x147bc8,_0x449d36){if(_0x449d36===0x0){return 0x0;}var _0x7f03aa=0x1;for(var _0x3727db=0x1;_0x3727db<=_0x449d36;_0x3727db+=0x1){_0x7f03aa=0x1+_0x7f03aa*_0x3727db/_0x147bc8;}return 0x1/_0x7f03aa;}function isVoiceQueueOutbound(_0x46f40a){return _0x46f40a==='outbound';}function isNotPreview(_0x8b31cc){return _0x8b31cc!==_0x8f34('0x1f');}function isCampaignIvr(_0x41a284){return _0x41a284==='ivr';}function getCallerId(_0x23cd73,_0x5136ba,_0x385a7a){if(!_[_0x8f34('0x43')](_0x385a7a)&&typeof _0x385a7a===_0x8f34('0x94')&&!_[_0x8f34('0x82')](_0x385a7a)){if(!_[_0x8f34('0x43')](_0x5136ba)&&typeof _0x5136ba===_0x8f34('0x94')&&!_[_0x8f34('0x82')](_0x5136ba)){return util[_0x8f34('0x95')](_0x8f34('0x96'),_0x5136ba,_0x385a7a);}return util['format'](_0x8f34('0x96'),_0x385a7a,_0x385a7a);}if(!_[_0x8f34('0x43')](_0x23cd73)&&typeof _0x23cd73===_0x8f34('0x94')&&!_[_0x8f34('0x82')](_0x23cd73)){return _0x23cd73;}return _0x8f34('0x97');}function loggerCatchQueueSummary(_0x864f99,_0x4d1a9e){return function(_0x519252){freeVariablesPredictive(_0x4d1a9e);emitVoiceQueueSummary(_0x4d1a9e);emitCampaignSummary(_0x4d1a9e);loggerSyncQueueSummary[_0x8f34('0x98')](_0x864f99,util[_0x8f34('0x99')](_0x519252,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x2b8fad,_0x113d3b){return function(_0x2cfca7){loggerPredictive['error'](_0x113d3b['name'],_0x2b8fad);loggerPredictive[_0x8f34('0x9a')](_0x2cfca7[_0x8f34('0x9b')]);freeVariablesPredictive(_0x113d3b);};}function loggerCatch(_0x5645a9){return function(_0x55fd68){logger[_0x8f34('0x9a')](_0x5645a9,util['inspect'](_0x55fd68,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x13b7d6){return _0x13b7d6&&!_[_0x8f34('0x43')](_0x13b7d6)&&_0x13b7d6[_0x8f34('0x9c')]>0x0;}function decremetOriginate(_0x253514){if(!_[_0x8f34('0x43')](_0x253514)&&_0x253514!==null){if(typeof _0x253514[_0x8f34('0x78')]!==_0x8f34('0x9d')){if(_0x253514[_0x8f34('0x78')]>0x0){_0x253514['originated']-=0x1;}else{logger[_0x8f34('0x9a')](_0x8f34('0x9e'));}}}else{logger['error'](_0x8f34('0x9f'));}}function checkContactLowerLimitOriginate(_0x31d5ff,_0x2e0c71,_0x5e8440){if(_0x2e0c71>_0x5e8440){for(var _0x500da7=0x0;_0x500da7<_0x2e0c71-_0x5e8440;_0x500da7+=0x1){decremetOriginate(_0x31d5ff);}}}function loggerGetContactDialer(_0x48315f,_0x572904,_0x1f8640){return function(_0x118630){checkContactLowerLimitOriginate(_0x572904,_0x1f8640,0x0);logger[_0x8f34('0x9a')](_0x48315f,util['inspect'](_0x118630,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x1ca2f0){return function(_0x449673){if(isNotNull(_0x449673)&&isNotNull(_0x449673[0x0])){if(_0x449673[0x0][_0x8f34('0xa0')]>0x0){_0x1ca2f0[_0x8f34('0x44')]=_0x8f34('0xa1');logger[_0x8f34('0x83')]('[getContactDialer2][ReScheduled]'+_0x1ca2f0[_0x8f34('0x46')],_0x449673[0x0][_0x8f34('0xa0')],'contacts');}else{_0x1ca2f0[_0x8f34('0x44')]=_0x8f34('0xa2');logger[_0x8f34('0x83')](_0x8f34('0xa3')+_0x1ca2f0['name']);}}};}function notSendMessagesQueue(_0x29e2c1){if(_0x29e2c1['sendMessageOneNotActive']){freeVariablesPredictive(_0x29e2c1);if(_0x29e2c1[_0x8f34('0x78')]===0x0&&_0x29e2c1['talking']===0x0&&_0x29e2c1['waiting']===0x0&&(_0x29e2c1['pTalking']||0x0)===0x0){_0x29e2c1[_0x8f34('0xa4')]=![];_0x29e2c1[_0x8f34('0x55')]=0x0;_0x29e2c1['message']=_0x8f34('0x48');loggerSyncQueueSummary[_0x8f34('0x98')](_0x8f34('0xa5'),_0x29e2c1[_0x8f34('0x46')],_0x8f34('0xa6'));}else{_0x29e2c1[_0x8f34('0x44')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x8f34('0x98')](_0x8f34('0xa5'),_0x29e2c1[_0x8f34('0x46')],'is\x20disactive');}emitVoiceQueueSummary(_0x29e2c1);}}function notSendMessagesCampaign(_0x2fa2c8){if(_0x2fa2c8[_0x8f34('0xa4')]){if(_0x2fa2c8[_0x8f34('0x78')]===0x0){_0x2fa2c8['sendMessageOneNotActive']=![];_0x2fa2c8[_0x8f34('0x44')]=_0x8f34('0x48');loggerSyncQueueSummary[_0x8f34('0x98')](_0x8f34('0xa7'),_0x2fa2c8[_0x8f34('0x46')],_0x8f34('0xa6'));}else{_0x2fa2c8['message']='IS_DISACTIVED';loggerSyncQueueSummary[_0x8f34('0x98')](_0x8f34('0xa7'),_0x2fa2c8['name'],'is\x20disactive');}emitCampaignSummary(_0x2fa2c8);}}function createObjHistory(_0x1c4d00,_0x4184e0,_0x5133f7,_0xda713d,_0x259740){_0x1c4d00[_0x8f34('0x44')]=_0x5133f7;var _0x1711a9=new Action(_0x1c4d00,_0x4184e0);var _0x22fe67=new History(_0x1711a9);_0x22fe67['state']=_0xda713d;_0x22fe67[_0x8f34('0xa8')]=_0x259740;_0x22fe67[_0x8f34('0xa9')]=_0x1711a9[_0x8f34('0xaa')];return _0x22fe67;}Dialer['prototype'][_0x8f34('0x3f')]=function(){var _0x4350ed=this;setInterval(function(){_0x4350ed['clearZombieChannels'](_0x4350ed[_0x8f34('0x27')],_0x8f34('0xab'));_0x4350ed[_0x8f34('0xac')](_0x4350ed[_0x8f34('0x25')],'[actions]');},0x32c8);};Dialer[_0x8f34('0x1b')][_0x8f34('0xac')]=function(_0x29fdf2,_0x363ac9){var _0x452334=this;for(var _0x99f3d5 in _0x29fdf2){if(typeof _0x29fdf2[_0x99f3d5]!==_0x8f34('0x9d')){this[_0x8f34('0xad')][_0x8f34('0x1c')](function(){if(!_[_0x8f34('0xae')](_0x29fdf2[_0x99f3d5])){return ami[_0x8f34('0xaf')]({'action':'status','channel':_0x29fdf2[_0x99f3d5][_0x8f34('0xb0')]})['catch'](function(_0x431c3b){if(_0x431c3b[_0x8f34('0x44')]===_0x8f34('0xb1')){setTimeout(function(){if(_0x29fdf2[_0x99f3d5]&&_0x29fdf2[_0x99f3d5][_0x8f34('0x81')]!=='ivr'){_0x452334['updateOriginated'](_0x452334[_0x8f34('0x20')][_0x29fdf2[_0x99f3d5]['queue']]);logger[_0x8f34('0x9a')](_0x8f34('0xb2'),_0x363ac9,_0x99f3d5,_0x29fdf2[_0x99f3d5][_0x8f34('0xb3')]);delete _0x29fdf2[_0x99f3d5];}if(_0x29fdf2[_0x99f3d5]&&_0x29fdf2[_0x99f3d5][_0x8f34('0x81')]===_0x8f34('0xb4')){_0x452334[_0x8f34('0xb5')](_0x452334[_0x8f34('0x21')][_0x29fdf2[_0x99f3d5][_0x8f34('0xb3')]]);logger[_0x8f34('0x9a')](_0x8f34('0xb6'),_0x363ac9,_0x99f3d5,_0x29fdf2[_0x99f3d5][_0x8f34('0xb3')]);delete _0x29fdf2[_0x99f3d5];}},0x2328);}});}});}}};Dialer[_0x8f34('0x1b')]['countReScheduled']=function(_0x3f3602){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopper[_0x8f34('0xb8')](_0x3f3602))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xba')));};Dialer['prototype']['checkIsBlackList']=function(_0xd7ec8e){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopperBlack[_0x8f34('0xbb')](_0xd7ec8e))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xbc')));};Dialer['prototype'][_0x8f34('0xbd')]=function(_0x20304d,_0x25cf1a,_0x1673a1){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopperAdditionalPhone[_0x8f34('0xbd')](_0x20304d,_0x25cf1a,_0x1673a1))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xbe')));};Dialer[_0x8f34('0x1b')]['swapAdditionalPhones']=function(_0x401ca9,_0x358d26,_0x4ab820){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopperAdditionalPhone[_0x8f34('0xbf')](_0x401ca9,_0x358d26,_0x4ab820))['catch'](loggerCatch(_0x8f34('0xc0')));};Dialer[_0x8f34('0x1b')][_0x8f34('0xc1')]=function(_0x289b48){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopperBlack['checkIsBlackListIvr'](_0x289b48))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xc2')));};Dialer['prototype'][_0x8f34('0xc3')]=function(_0xada888){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopperHistory[_0x8f34('0xc4')](_0xada888))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xc5')));};Dialer[_0x8f34('0x1b')][_0x8f34('0xc6')]=function(_0xc2d82e){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopper[_0x8f34('0xc6')](_0xc2d82e))['catch'](loggerCatch(_0x8f34('0xc7')));};Dialer['prototype'][_0x8f34('0xc8')]=function(_0x1da843,_0x43b044,_0x2533cf){return Promise['resolve']()[_0x8f34('0x41')](cmHopper[_0x8f34('0xc8')](_0x1da843,_0x43b044,_0x2533cf))[_0x8f34('0xb9')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x8f34('0x1b')][_0x8f34('0xc9')]=function(_0x108418,_0x110f42,_0x4bace2,_0x3fff80,_0x2a4373){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopper[_0x8f34('0xc9')](_0x108418,_0x110f42,_0x4bace2,_0x3fff80))['catch'](function(_0x40cc9f){_0x2a4373[_0x8f34('0xca')]-=_0x4bace2;_0x2a4373[_0x8f34('0xca')]=_0x2a4373['temp']>0x0?_0x2a4373['temp']:0x0;loggerCatch(_0x8f34('0xcb'))(_0x40cc9f);});};Dialer[_0x8f34('0x1b')]['getContactDialerIvr']=function(_0x231277,_0x4413c6,_0x3cdd7e,_0x14eda3){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopper[_0x8f34('0xcc')](_0x231277,_0x4413c6,_0x3cdd7e))['catch'](function(_0x292f2d){_0x14eda3[_0x8f34('0xca')]-=_0x4413c6;_0x14eda3[_0x8f34('0xca')]=_0x14eda3[_0x8f34('0xca')]>0x0?_0x14eda3[_0x8f34('0xca')]:0x0;loggerCatch(_0x8f34('0xcd'))(_0x292f2d);});};Dialer[_0x8f34('0x1b')]['getVoiceQueueRtPauses']=function(_0x18b421){return Promise['resolve']()[_0x8f34('0x41')](voiceQueueRt[_0x8f34('0xce')](_0x18b421))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xcf')));};Dialer[_0x8f34('0x1b')][_0x8f34('0xd0')]=function(_0x129af9){return Promise[_0x8f34('0xb7')]()['then'](cmHopper[_0x8f34('0xd0')](_0x129af9))['catch'](loggerCatch(_0x8f34('0xd1')));};Dialer[_0x8f34('0x1b')][_0x8f34('0xd2')]=function(_0x313584){return Promise['resolve']()[_0x8f34('0x41')](cmHopperHistory['createHistory'](_0x313584))['catch'](loggerCatch(_0x8f34('0xd3')));};Dialer['prototype'][_0x8f34('0xb5')]=function(_0x239d47){if(!_['isUndefined'](_0x239d47)&&_0x239d47!==null){if(typeof _0x239d47[_0x8f34('0x78')]!=='undefined'){if(_0x239d47['originated']>0x0){_0x239d47['originated']-=0x1;}else{logger[_0x8f34('0x9a')](_0x8f34('0xd4'));}}}else{logger[_0x8f34('0x9a')](_0x8f34('0xd5'));}};Dialer[_0x8f34('0x1b')][_0x8f34('0xd6')]=function(_0x51cee8,_0x4c2546){var _0x9e8ef3=this;return function(_0x47ff65){_0x9e8ef3['updateOriginated'](_0x4c2546);logger['error'](_0x51cee8,util[_0x8f34('0x99')](_0x47ff65,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x8f34('0xd7')]=function(_0x296f22,_0x415b0c,_0x3e6d96){var _0x4870cd={'state':0x19,'statedesc':'notFound'};this[_0x8f34('0xb5')](_0x415b0c);this[_0x8f34('0xd8')](_['merge'](_0x4870cd,_['pick'](_0x3e6d96,[_0x8f34('0xd9'),_0x8f34('0xda'),'UserId',_0x8f34('0xdb'),_0x8f34('0xdc')])),_0x8f34('0xdd'),_0x8f34('0xde'));logger['error'](_0x296f22);};Dialer['prototype']['isSuccess']=function(_0x5055af){return _0x5055af==='Success';};Dialer['prototype'][_0x8f34('0xdf')]=function(_0xdb85a4){return!_['isUndefined'](_0xdb85a4)&&_0xdb85a4&&!_['isUndefined'](_0xdb85a4[_0x8f34('0x46')])&&!_[_0x8f34('0x43')](_0xdb85a4[_0x8f34('0xe0')])&&_0xdb85a4[_0x8f34('0xe0')]&&(this[_0x8f34('0x23')][util[_0x8f34('0x95')](_0x8f34('0xe1'),_0xdb85a4['name'])][_0x8f34('0xe2')]==='reachable'||this[_0x8f34('0x23')][util['format'](_0x8f34('0xe1'),_0xdb85a4[_0x8f34('0x46')])][_0x8f34('0xe2')]==='unmonitored');};Dialer[_0x8f34('0x1b')][_0x8f34('0xd8')]=function(_0x40825f,_0x3e72b4,_0x18c73a){this['createHistory'](_0x40825f)['catch'](loggerCatch(_0x3e72b4));this[_0x8f34('0xd0')](_0x40825f)[_0x8f34('0xb9')](loggerCatch(_0x18c73a));};Dialer[_0x8f34('0x1b')]['syncVarSet']=function(_0x1a08ec){var _0x4ca0ff=this;var _0x1acdf9=this['uniqueId'][_0x1a08ec[_0x8f34('0xe3')]];var _0x132ed5;if(!_[_0x8f34('0xae')](_0x1a08ec)&&!_[_0x8f34('0xae')](_0x1a08ec['variable'])&&!_[_0x8f34('0xae')](_0x1a08ec[_0x8f34('0xe4')]['amdstatus'])&&_0x1a08ec[_0x8f34('0xe5')]===_0x8f34('0xe6')&&_0x1acdf9){if(_0x1acdf9['type']!=='ivr'&&this[_0x8f34('0x20')][_0x1acdf9[_0x8f34('0xb3')]][_0x8f34('0xe7')]&&_0x1a08ec['value']===_0x8f34('0xe8')){delete this[_0x8f34('0x27')][_0x1a08ec['uniqueid']];this[_0x8f34('0xb5')](this[_0x8f34('0x20')][_0x1acdf9[_0x8f34('0xb3')]]);this['voiceQueues'][_0x1acdf9['queue']][_0x8f34('0xe9')]+=0x1;this[_0x8f34('0x20')][_0x1acdf9['queue']][_0x8f34('0x64')]+=0x1;_0x132ed5=new Hangup(_0x1acdf9,_0x1a08ec);_0x132ed5[_0x8f34('0xea')]=0x12;_0x132ed5['statedesc']=_0x8f34('0xeb');_0x132ed5['membername']=_0x8f34('0xec');ami[_0x8f34('0x52')]('custom:amd',ut[_0x8f34('0xed')](_0x132ed5,_0x8f34('0xee')));this[_0x8f34('0xd8')](_0x132ed5,'[syncHangupInAMD][createHistory]',_0x8f34('0xef'));}if(_0x1acdf9['type']!==_0x8f34('0xb4')&&this[_0x8f34('0x20')][_0x1acdf9[_0x8f34('0xb3')]][_0x8f34('0xe7')]&&_0x1a08ec[_0x8f34('0xf0')]===_0x8f34('0xf1')){return new Promise(function(_0x4960cd,_0x26617e){delete _0x4ca0ff[_0x8f34('0x27')][_0x1a08ec[_0x8f34('0xe3')]];_0x4ca0ff[_0x8f34('0xb5')](_0x4ca0ff[_0x8f34('0x20')][_0x1acdf9[_0x8f34('0xb3')]]);_0x4ca0ff[_0x8f34('0x20')][_0x1acdf9[_0x8f34('0xb3')]]['outboundAnswerCallsDay']+=0x1;_0x4ca0ff['voiceQueues'][_0x1acdf9[_0x8f34('0xb3')]][_0x8f34('0x64')]+=0x1;var _0x5bc7f0=_0x4ca0ff[_0x8f34('0x20')][_0x1acdf9[_0x8f34('0xb3')]];var _0x49afe6=new Hangup(_0x1acdf9,_0x1a08ec);_0x49afe6[_0x8f34('0xea')]=0x13;_0x49afe6[_0x8f34('0xa8')]=_0x8f34('0xf2');_0x49afe6[_0x8f34('0xf3')]=_0x8f34('0xec');_0x49afe6[_0x8f34('0xf4')]+=0x1;_0x49afe6[_0x8f34('0xf5')]+=0x1;_0x49afe6['amd']=!![];ami['emit'](_0x8f34('0xf6'),ut[_0x8f34('0xed')](_0x49afe6,'amd'));_0x4ca0ff['createHistory'](_0x49afe6)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xf7')));if(_0x49afe6[_0x8f34('0xf8')]+_0x49afe6['countcongestionretry']+_0x49afe6[_0x8f34('0xf9')]+_0x49afe6[_0x8f34('0xfa')]+_0x49afe6[_0x8f34('0xfb')]+_0x49afe6[_0x8f34('0xfc')]+_0x49afe6[_0x8f34('0xf4')]+_0x49afe6[_0x8f34('0xfd')]>=_0x5bc7f0[_0x8f34('0xfe')]){_0x4ca0ff['stateGlobal'](_0x49afe6,_0x4960cd,_0x26617e,'reason19\x20machine....');}else{if(_0x49afe6[_0x8f34('0xf4')]>=_0x5bc7f0[_0x8f34('0xff')]){_0x4ca0ff[_0x8f34('0x100')](_0x49afe6,_0x4960cd,_0x26617e,_0x8f34('0x101'));}else{_0x4ca0ff['rescheduleContact']({'active':![],'countmachineretry':_0x49afe6['countmachineretry'],'scheduledat':moment()[_0x8f34('0x102')](_0x5bc7f0[_0x8f34('0x103')],_0x8f34('0x104'))[_0x8f34('0x95')](_0x8f34('0x105')),'ContactId':_0x49afe6[_0x8f34('0xd9')],'ListId':_0x49afe6['ListId'],'VoiceQueueId':_0x49afe6[_0x8f34('0xdb')]||undefined,'CampaignId':_0x49afe6['CampaignId']||undefined})['catch'](loggerCatch(_0x8f34('0x106')));_0x4960cd({'reschedule':0x1});}}});}if(_0x1acdf9[_0x8f34('0x81')]===_0x8f34('0xb4')&&this['campaigns'][_0x1acdf9[_0x8f34('0xb3')]][_0x8f34('0xe7')]&&_0x1a08ec['value']===_0x8f34('0xe8')){delete this[_0x8f34('0x27')][_0x1a08ec[_0x8f34('0xe3')]];this[_0x8f34('0xb5')](this[_0x8f34('0x21')][_0x1acdf9['queue']]);_0x132ed5=new Hangup(_0x1acdf9,_0x1a08ec);_0x132ed5['state']=0x12;_0x132ed5[_0x8f34('0xa8')]=_0x8f34('0xeb');_0x132ed5[_0x8f34('0xf3')]='AMD';ami['emit']('custom:amd',ut['buildObj'](_0x132ed5,_0x8f34('0xee')));this['saveInDb'](_0x132ed5,_0x8f34('0x107'),_0x8f34('0x108'));}if(_0x1acdf9['type']===_0x8f34('0xb4')&&this[_0x8f34('0x21')][_0x1acdf9[_0x8f34('0xb3')]][_0x8f34('0xe7')]&&_0x1a08ec[_0x8f34('0xf0')]==='MACHINE'){return new Promise(function(_0x2d0ec6,_0x2d9a4b){delete _0x4ca0ff[_0x8f34('0x27')][_0x1a08ec[_0x8f34('0xe3')]];_0x4ca0ff[_0x8f34('0xb5')](_0x4ca0ff[_0x8f34('0x21')][_0x1acdf9['queue']]);_0x4ca0ff[_0x8f34('0x21')][_0x1acdf9[_0x8f34('0xb3')]][_0x8f34('0xe9')]+=0x1;_0x4ca0ff[_0x8f34('0x21')][_0x1acdf9[_0x8f34('0xb3')]][_0x8f34('0x64')]+=0x1;var _0xbfc64c=_0x4ca0ff[_0x8f34('0x21')][_0x1acdf9['queue']];var _0x30bfb3=new Hangup(_0x1acdf9,_0x1a08ec);_0x30bfb3[_0x8f34('0xea')]=0x13;_0x30bfb3[_0x8f34('0xa8')]=_0x8f34('0xf2');_0x30bfb3[_0x8f34('0xf3')]=_0x8f34('0xec');_0x30bfb3[_0x8f34('0xf4')]+=0x1;_0x30bfb3[_0x8f34('0xf5')]+=0x1;_0x30bfb3[_0x8f34('0xee')]=!![];ami[_0x8f34('0x52')](_0x8f34('0xf6'),ut[_0x8f34('0xed')](_0x30bfb3,'amd'));_0x4ca0ff['createHistory'](_0x30bfb3)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xf7')));if(_0x30bfb3['countbusyretry']+_0x30bfb3[_0x8f34('0x109')]+_0x30bfb3[_0x8f34('0xf9')]+_0x30bfb3[_0x8f34('0xfa')]+_0x30bfb3[_0x8f34('0xfb')]+_0x30bfb3[_0x8f34('0xfc')]+_0x30bfb3['countmachineretry']+_0x30bfb3['countagentrejectretry']>=_0xbfc64c[_0x8f34('0xfe')]){_0x4ca0ff[_0x8f34('0x10a')](_0x30bfb3,_0x2d0ec6,_0x2d9a4b,_0x8f34('0x10b'));}else{if(_0x30bfb3[_0x8f34('0xf4')]>=_0xbfc64c[_0x8f34('0xff')]){_0x4ca0ff['createStateFinal'](_0x30bfb3,_0x2d0ec6,_0x2d9a4b,'reason\x2019\x20machine....');}else{_0x4ca0ff[_0x8f34('0xc6')]({'active':![],'countmachineretry':_0x30bfb3[_0x8f34('0xf4')],'scheduledat':moment()[_0x8f34('0x102')](_0xbfc64c[_0x8f34('0x103')],'minutes')[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x30bfb3[_0x8f34('0xd9')],'ListId':_0x30bfb3[_0x8f34('0xda')],'VoiceQueueId':_0x30bfb3['VoiceQueueId']||undefined,'CampaignId':_0x30bfb3['CampaignId']||undefined})['catch'](loggerCatch(_0x8f34('0x106')));_0x2d0ec6({'reschedule':0x1});}}});}}};Dialer[_0x8f34('0x1b')][_0x8f34('0x10c')]=function(_0x258d40){var _0x5b0d4f=this[_0x8f34('0x27')][_0x258d40[_0x8f34('0xe3')]];var _0x2948b0;if(_0x5b0d4f&&_0x5b0d4f['type']===_0x8f34('0xb4')){delete this[_0x8f34('0x27')][_0x258d40['uniqueid']];this[_0x8f34('0xb5')](this[_0x8f34('0x21')][_0x5b0d4f[_0x8f34('0xb3')]]);this['campaigns'][_0x5b0d4f[_0x8f34('0xb3')]]['ivrAnswerCallsDay']+=0x1;_0x2948b0=new Hangup(_0x5b0d4f,_0x258d40);this[_0x8f34('0xd2')](_0x2948b0)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x10d')));this[_0x8f34('0xd0')](_0x2948b0)[_0x8f34('0xb9')](loggerCatch('[syncHangupIvr]'));}if(_0x5b0d4f&&_0x5b0d4f[_0x8f34('0x81')]!==_0x8f34('0xb4')&&isNotNull(this[_0x8f34('0x20')][_0x5b0d4f[_0x8f34('0xb3')]]['dialQueueProject'])){delete this[_0x8f34('0x27')][_0x258d40[_0x8f34('0xe3')]];this[_0x8f34('0xb5')](this['voiceQueues'][_0x5b0d4f['queue']]);this[_0x8f34('0x20')][_0x5b0d4f[_0x8f34('0xb3')]][_0x8f34('0xe9')]+=0x1;this['voiceQueues'][_0x5b0d4f[_0x8f34('0xb3')]][_0x8f34('0x64')]+=0x1;_0x2948b0=new Hangup(_0x5b0d4f,_0x258d40);_0x2948b0[_0x8f34('0xea')]=0x10;_0x2948b0[_0x8f34('0xa8')]=_0x8f34('0x10e');_0x2948b0[_0x8f34('0xf3')]=_0x8f34('0x10f');this[_0x8f34('0xd2')](_0x2948b0)['catch'](loggerCatch(_0x8f34('0x10d')));this[_0x8f34('0xd0')](_0x2948b0)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x110')));}if(_0x5b0d4f&&_0x5b0d4f['type']!==_0x8f34('0xb4')&&!isNotNull(this['voiceQueues'][_0x5b0d4f[_0x8f34('0xb3')]][_0x8f34('0x111')])){delete this[_0x8f34('0x27')][_0x258d40['uniqueid']];this['updateOriginated'](this[_0x8f34('0x20')][_0x5b0d4f[_0x8f34('0xb3')]]);this['voiceQueues'][_0x5b0d4f[_0x8f34('0xb3')]]['outboundUnknownCallsDay']+=0x1;_0x2948b0=new Hangup(_0x5b0d4f,_0x258d40);_0x2948b0[_0x8f34('0xea')]=0xc;_0x2948b0[_0x8f34('0xa8')]=_0x258d40[_0x8f34('0x112')];_0x2948b0[_0x8f34('0xf3')]='Unknow';this[_0x8f34('0xd2')](_0x2948b0)[_0x8f34('0xb9')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x8f34('0xd0')](_0x2948b0)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x110')));}};Dialer[_0x8f34('0x1b')][_0x8f34('0x32')]=function(_0xbc3163){var _0x229e83=this['uniqueId'][_0xbc3163['uniqueid']];if(this[_0x8f34('0x20')][_0xbc3163[_0x8f34('0xb3')]]){if(_0x229e83&&_0x229e83[_0x8f34('0x81')]!==_0x8f34('0xb4')){delete this[_0x8f34('0x27')][_0xbc3163[_0x8f34('0xe3')]];this[_0x8f34('0x20')][_0xbc3163['queue']][_0x8f34('0xe9')]+=0x1;var _0x1fcc25=new AgentComplete(_0x229e83,_0xbc3163);if(_0xbc3163[_0x8f34('0x113')]===_0x8f34('0x114')){_0x1fcc25['agiafterat']=this[_0x8f34('0x20')][_0xbc3163[_0x8f34('0xb3')]][_0x8f34('0x115')]&&this[_0x8f34('0x20')][_0xbc3163['queue']][_0x8f34('0x116')]?moment()[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0x8f34('0xd2')](_0x1fcc25)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x117')));this[_0x8f34('0xd0')](_0x1fcc25)[_0x8f34('0xb9')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x8f34('0x1b')][_0x8f34('0x2d')]=function(_0x10c046){if(this['voiceQueues'][_0x10c046[_0x8f34('0xb3')]]){if(this['uniqueId'][_0x10c046[_0x8f34('0xe3')]]&&this[_0x8f34('0x27')][_0x10c046['uniqueid']][_0x8f34('0x81')]!==_0x8f34('0xb4')){this[_0x8f34('0xb5')](this[_0x8f34('0x20')][_0x10c046[_0x8f34('0xb3')]]);this['uniqueId'][_0x10c046['uniqueid']][_0x8f34('0x118')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x8f34('0x1b')]['queueCallerAbandonCreateState']=function(_0x4bcecf,_0x2c9e2f){this[_0x8f34('0xd2')](_0x4bcecf)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x117')));if(_0x2c9e2f==0x0){this[_0x8f34('0xd0')](_0x4bcecf)[_0x8f34('0xb9')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer[_0x8f34('0x1b')][_0x8f34('0x119')]=function(_0x390e99){var _0x42e28e=this[_0x8f34('0x27')][_0x390e99[_0x8f34('0xe3')]];var _0x1d2a01=this;var _0x1d69b5=![];var _0x2502ac;var _0x4042a9;if(this[_0x8f34('0x20')][_0x390e99['queue']]){if(_0x42e28e&&_0x42e28e[_0x8f34('0x81')]!==_0x8f34('0xb4')){delete this[_0x8f34('0x27')][_0x390e99[_0x8f34('0xe3')]];this[_0x8f34('0xb5')](this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]]);_0x42e28e[_0x8f34('0x11a')]=moment()[_0x8f34('0x95')](_0x8f34('0x105'));var _0xd17b83=new QueueCallerAbandon(_0x42e28e,_0x390e99);if(getSeconds(_0x42e28e[_0x8f34('0x11a')],_0x42e28e[_0x8f34('0x11b')])>=_0x42e28e['dialQueueTimeout']){this['voiceQueues'][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x72')]+=0x1;this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x69')]+=0x1;this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0xd17b83[_0x8f34('0xea')]=0xa;_0xd17b83[_0x8f34('0xa8')]='Drop';_0xd17b83[_0x8f34('0x11c')]=_0x8f34('0x11d');_0xd17b83['agiafterat']=this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x115')]?moment()[_0x8f34('0x95')](_0x8f34('0x105')):undefined;_0xd17b83[_0x8f34('0xfb')]+=0x1;_0xd17b83[_0x8f34('0xf5')]+=0x1;_0x2502ac=this['voiceQueues'][_0x390e99['queue']][_0x8f34('0x11e')];_0x4042a9=this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x11f')];_0x1d2a01[_0x8f34('0xbd')](_0xd17b83,_0xd17b83[_0x8f34('0xea')],_0x42e28e[_0x8f34('0x120')])[_0x8f34('0x41')](function(_0x5ddcea){_0x1d69b5=_0x5ddcea[_0x8f34('0x121')]==0x1;if(_0xd17b83[_0x8f34('0xfb')]>=_0x1d2a01[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x122')]){_0x1d2a01['queueCallerAbandonCreateState'](_0xd17b83,_0x5ddcea[_0x8f34('0x121')]);}else{_0x1d2a01[_0x8f34('0xc6')]({'active':![],'countdropretry':_0xd17b83[_0x8f34('0xfb')],'scheduledat':moment()[_0x8f34('0x102')](_0x1d2a01[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x11e')],'minutes')[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x42e28e[_0x8f34('0xd9')],'ListId':_0x42e28e[_0x8f34('0xda')],'VoiceQueueId':_0x42e28e[_0x8f34('0xdb')]||undefined,'CampaignId':_0x42e28e['CampaignId']||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x123')));var _0x58cfee=new History(_0xd17b83);_0x58cfee[_0x8f34('0xea')]=0xa;_0x58cfee[_0x8f34('0xa8')]=_0x8f34('0x124');_0x58cfee[_0x8f34('0xaa')]=moment()[_0x8f34('0x95')](_0x8f34('0x105'));_0x58cfee[_0x8f34('0xa9')]=_0x58cfee[_0x8f34('0xaa')];_0x58cfee['calleridname']=_0xd17b83[_0x8f34('0x125')];_0x58cfee[_0x8f34('0x126')]=_0xd17b83[_0x8f34('0x126')];_0x1d2a01[_0x8f34('0xd2')](_0x58cfee)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}})[_0x8f34('0x41')](function(){if(_0x1d69b5)_0x1d2a01[_0x8f34('0xbf')](_0xd17b83,_0x2502ac,_0x4042a9)[_0x8f34('0x41')](function(){return 0x1;});});}else{this[_0x8f34('0x20')][_0x390e99['queue']][_0x8f34('0x71')]+=0x1;this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x68')]+=0x1;_0xd17b83[_0x8f34('0xea')]=0xb;_0xd17b83[_0x8f34('0xa8')]=_0x8f34('0x127');_0xd17b83[_0x8f34('0x11c')]=_0x8f34('0x128');_0xd17b83[_0x8f34('0xfc')]+=0x1;_0xd17b83['countglobal']+=0x1;_0x2502ac=this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]]['dialAbandonedRetryFrequency'];_0x4042a9=this[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x11f')];_0x1d2a01[_0x8f34('0xbd')](_0xd17b83,_0xd17b83[_0x8f34('0xea')],_0x42e28e['voiceQueue'])[_0x8f34('0x41')](function(_0x17e22c){if(_0xd17b83['countabandonedretry']>=_0x1d2a01[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]][_0x8f34('0x129')]){_0x1d2a01[_0x8f34('0x12a')](_0xd17b83,_0x17e22c[_0x8f34('0x121')]);}else{_0x1d2a01[_0x8f34('0xc6')]({'active':![],'countabandonedretry':_0xd17b83[_0x8f34('0xfc')],'scheduledat':moment()[_0x8f34('0x102')](_0x1d2a01[_0x8f34('0x20')][_0x390e99[_0x8f34('0xb3')]]['dialAbandonedRetryFrequency'],'minutes')[_0x8f34('0x95')](_0x8f34('0x105')),'ContactId':_0x42e28e[_0x8f34('0xd9')],'ListId':_0x42e28e[_0x8f34('0xda')],'VoiceQueueId':_0x42e28e[_0x8f34('0xdb')]||undefined,'CampaignId':_0x42e28e[_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x12b')));var _0x22da41=new History(_0xd17b83);_0x22da41[_0x8f34('0xea')]=0xb;_0x22da41['statedesc']='Abandoned';_0x22da41['starttime']=moment()[_0x8f34('0x95')](_0x8f34('0x105'));_0x22da41[_0x8f34('0xa9')]=_0x22da41['starttime'];_0x22da41['calleridname']=_0xd17b83[_0x8f34('0x125')];_0x22da41[_0x8f34('0x126')]=_0xd17b83['calleridnum'];_0x1d2a01[_0x8f34('0xd2')](_0x22da41)[_0x8f34('0xb9')](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0x8f34('0x41')](function(){if(_0x1d69b5)_0x1d2a01[_0x8f34('0xbf')](_0xd17b83,_0x2502ac,_0x4042a9)['then'](function(){return 0x1;});});}}}};Dialer['prototype'][_0x8f34('0x38')]=function(_0x3b8102){if(this[_0x8f34('0x25')][_0x3b8102[_0x8f34('0xe3')]]){this['actions'][_0x3b8102['uniqueid']][_0x8f34('0xb0')]=_0x3b8102[_0x8f34('0xb0')];}if(this['uniqueId'][_0x3b8102[_0x8f34('0xe3')]]){this[_0x8f34('0x27')][_0x3b8102['uniqueid']][_0x8f34('0xb0')]=_0x3b8102['channel'];}};Dialer[_0x8f34('0x1b')]['syncQueueMember']=function(_0x306028){if(strategy[this[_0x8f34('0x20')][this['actions'][_0x306028[_0x8f34('0x12c')]][_0x8f34('0xb3')]]['strategy']]===_0x8f34('0x1a')){if(this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]]&&_[_0x8f34('0xae')](this['actions'][_0x306028['actionid']][_0x8f34('0x12d')])&&_0x306028['status']==='1'&&_0x306028[_0x8f34('0x12e')]==='0'){if(this[_0x8f34('0x22')][_0x306028[_0x8f34('0x12f')]]){if(!this[_0x8f34('0x22')][_0x306028[_0x8f34('0x12f')]][_0x8f34('0x12d')]){this['agents'][_0x306028[_0x8f34('0x12f')]]['locked']=!![];this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]][_0x8f34('0x12d')]=!![];this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]][_0x8f34('0x12f')]=_0x306028[_0x8f34('0x12f')];}}}}else if((strategy[this[_0x8f34('0x20')][this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]][_0x8f34('0xb3')]]['strategy']]||_0x8f34('0x19'))==='rrmemory'){if(this['actions'][_0x306028[_0x8f34('0x12c')]]){if(this[_0x8f34('0x22')][_0x306028[_0x8f34('0x12f')]]){this['actions'][_0x306028[_0x8f34('0x12c')]][_0x8f34('0x12f')]=_0x306028[_0x8f34('0x12f')];if(_[_0x8f34('0xae')](this['queueBooked'][this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]][_0x8f34('0xb3')]])){this['queueBooked'][this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]][_0x8f34('0xb3')]]=[];}this[_0x8f34('0x2b')][this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]][_0x8f34('0xb3')]][_0x8f34('0x130')](_[_0x8f34('0x8f')](_['pick'](this[_0x8f34('0x25')][_0x306028[_0x8f34('0x12c')]],['idHopper',_0x8f34('0x12f')]),{'status':_0x306028['status'],'paused':_0x306028[_0x8f34('0x12e')]}));}}}};function unlockQueueStatus(_0x1c712c,_0x30e844){setTimeout(function(){if(_['isUndefined'](_0x1c712c[_0x8f34('0x131')])){loggerBooked['error']('[unlockQueueStatus][undefined]',_0x30e844);}_0x1c712c[_0x8f34('0x131')]=!![];loggerBooked[_0x8f34('0x83')](_0x8f34('0x132'),_0x30e844,JSON[_0x8f34('0x4f')](_['pick'](_0x1c712c,[_0x8f34('0x46'),_0x8f34('0x131')])));},0x1f3);}Dialer[_0x8f34('0x1b')][_0x8f34('0x3d')]=function(_0x33218a){var _0x7aca3d=this;var _0x1785bc=_0x7aca3d[_0x8f34('0x20')][_0x7aca3d[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]];if(strategy[this[_0x8f34('0x20')][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['queue']][_0x8f34('0x133')]]===_0x8f34('0x1a')){if(this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]&&this['actions'][_0x33218a[_0x8f34('0x12c')]]['stateinterface']){this[_0x8f34('0x1f')][_0x8f34('0x134')](this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['idHopper'],this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0x12f')])[_0x8f34('0xb9')](function(_0x5878f1){logger[_0x8f34('0x9a')](_0x8f34('0x135'),util[_0x8f34('0x99')](_0x5878f1,{'showHidden':![],'depth':null}));})['finally'](function(){_0x7aca3d[_0x8f34('0xb5')](_0x7aca3d[_0x8f34('0x20')][_0x7aca3d['actions'][_0x33218a['actionid']][_0x8f34('0xb3')]]);_0x7aca3d['agents'][_0x7aca3d[_0x8f34('0x25')][_0x33218a['actionid']][_0x8f34('0x12f')]][_0x8f34('0x12d')]=![];delete _0x7aca3d[_0x8f34('0x25')][_0x33218a['actionid']];unlockQueueStatus(_0x1785bc);});}else{this[_0x8f34('0xb5')](this[_0x8f34('0x20')][this[_0x8f34('0x25')][_0x33218a['actionid']][_0x8f34('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xd9')],'ListId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xda')],'VoiceQueueId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xdb')]||undefined,'CampaignId':this['actions'][_0x33218a['actionid']][_0x8f34('0xdc')]||undefined})['catch'](loggerCatch(_0x8f34('0x136')));delete this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]];unlockQueueStatus(_0x1785bc);}}else if((strategy[this['voiceQueues'][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]['strategy']]||_0x8f34('0x19'))===_0x8f34('0x19')){var _0x3c5063;if(this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]&&!_[_0x8f34('0x82')](this['queueBooked'][this['actions'][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]])){if(this[_0x8f34('0x137')][_0x7aca3d[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]){this[_0x8f34('0x137')][_0x7aca3d[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]=this[_0x8f34('0x137')][this[_0x8f34('0x25')][_0x33218a['actionid']][_0x8f34('0xb3')]]?this[_0x8f34('0x137')][this[_0x8f34('0x25')][_0x33218a['actionid']][_0x8f34('0xb3')]]:this['queueBooked'][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]?this['queueBooked'][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]['_rr']||0x0:0x0;}this[_0x8f34('0x2b')][this[_0x8f34('0x25')][_0x33218a['actionid']][_0x8f34('0xb3')]]['_rr']=this[_0x8f34('0x137')][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]];for(var _0x12ab6c=0x0;_0x12ab6c<this['queueBooked'][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['queue']][_0x8f34('0x9c')];_0x12ab6c+=0x1){_0x3c5063=rr(this[_0x8f34('0x2b')][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['queue']]);this['queueBookedRR'][_0x7aca3d['actions'][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]=this[_0x8f34('0x2b')][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]][_0x8f34('0x138')];if(_0x3c5063[_0x8f34('0xe2')]==='1'&&_0x3c5063[_0x8f34('0x12e')]==='0'){break;}}if(!_['isNil'](_0x3c5063)){this[_0x8f34('0x22')][_0x3c5063[_0x8f34('0x12f')]][_0x8f34('0x139')]=_[_0x8f34('0x43')](this[_0x8f34('0x22')][_0x3c5063[_0x8f34('0x12f')]][_0x8f34('0x139')])?!![]:this['agents'][_0x3c5063[_0x8f34('0x12f')]][_0x8f34('0x139')];}loggerBooked[_0x8f34('0x83')](_0x8f34('0x13a'),_0x33218a['actionid'],_0x8f34('0x13b'),JSON['stringify'](_['pick'](this[_0x8f34('0x22')][_0x3c5063['stateinterface']],[_0x8f34('0x46'),_0x8f34('0x139')])),_0x8f34('0x13c'),JSON[_0x8f34('0x4f')](_0x3c5063['idHopper']));if(!_[_0x8f34('0xae')](_0x3c5063)&&_0x3c5063[_0x8f34('0xe2')]==='1'&&_0x3c5063[_0x8f34('0x12e')]==='0'&&this[_0x8f34('0x22')][_0x3c5063[_0x8f34('0x12f')]][_0x8f34('0x139')]){this[_0x8f34('0x22')][_0x3c5063['stateinterface']]['unlockRR']=![];this[_0x8f34('0x2b')][_0x7aca3d[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['queue']]=[];this[_0x8f34('0x1f')][_0x8f34('0x134')](_0x3c5063[_0x8f34('0x13d')],_0x3c5063[_0x8f34('0x12f')])[_0x8f34('0xb9')](function(_0x1ee7d3){logger[_0x8f34('0x9a')](_0x8f34('0x135'),util[_0x8f34('0x99')](_0x1ee7d3,{'showHidden':![],'depth':null}));})['finally'](function(){_0x7aca3d['updateOriginated'](_0x7aca3d[_0x8f34('0x20')][_0x7aca3d['actions'][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]);setTimeout(function(){_0x7aca3d[_0x8f34('0x22')][_0x3c5063[_0x8f34('0x12f')]]['unlockRR']=!![];loggerBooked['info']('[booked][RR][finaly]',_0x33218a[_0x8f34('0x12c')],_0x8f34('0x13b'),JSON['stringify'](_[_0x8f34('0x13e')](_0x7aca3d[_0x8f34('0x22')][_0x3c5063[_0x8f34('0x12f')]],['name','unlockRR'])),_0x8f34('0x13c'),JSON[_0x8f34('0x4f')](_0x3c5063['idHopper']));},0xc7);delete _0x7aca3d[_0x8f34('0x25')][_0x33218a['actionid']];unlockQueueStatus(_0x1785bc,_0x33218a[_0x8f34('0x12c')]);});}else{loggerBooked['info'](_0x8f34('0x13f'));this[_0x8f34('0xb5')](this[_0x8f34('0x20')][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['queue']]);this[_0x8f34('0xc6')]({'active':![],'ContactId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xd9')],'ListId':this['actions'][_0x33218a[_0x8f34('0x12c')]]['ListId'],'VoiceQueueId':this[_0x8f34('0x25')][_0x33218a['actionid']][_0x8f34('0xdb')]||undefined,'CampaignId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x8f34('0x136')));delete this['actions'][_0x33218a['actionid']];unlockQueueStatus(_0x1785bc);}}else{loggerBooked[_0x8f34('0x83')](_0x8f34('0x140'));this[_0x8f34('0xb5')](this[_0x8f34('0x20')][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xd9')],'ListId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['ListId'],'VoiceQueueId':this['actions'][_0x33218a['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xdc')]||undefined})['catch'](loggerCatch(_0x8f34('0x141')));delete this[_0x8f34('0x25')][_0x33218a['actionid']];unlockQueueStatus(_0x1785bc);}}else{loggerBooked[_0x8f34('0x83')](_0x8f34('0x142'));this[_0x8f34('0xb5')](this[_0x8f34('0x20')][this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]]['queue']]);this[_0x8f34('0xc6')]({'active':![],'ContactId':this['actions'][_0x33218a['actionid']]['ContactId'],'ListId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xda')],'VoiceQueueId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xdb')]||undefined,'CampaignId':this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]][_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x8f34('0x25')][_0x33218a[_0x8f34('0x12c')]];unlockQueueStatus(_0x1785bc);}};Dialer['prototype']['loopCampaigns']=function(){var _0x34c794=this;return cmHopper[_0x8f34('0x143')]({'active':![]},{'where':{'active':!![]}})[_0x8f34('0x41')](function(){setInterval(function(){_0x34c794[_0x8f34('0x144')]();},0x3e8);});};Dialer[_0x8f34('0x1b')][_0x8f34('0x145')]=function(_0x18aaf3){var _0x4a8ea1=this;return function(){if(!_0x4a8ea1['isTrunkReachable'](_0x18aaf3[_0x8f34('0x7d')])){if(!_0x4a8ea1['isTrunkReachable'](_0x18aaf3[_0x8f34('0x146')])){_0x18aaf3[_0x8f34('0x44')]=_0x8f34('0x147');throw _0x18aaf3[_0x8f34('0x46')]+_0x8f34('0x148');}}};};Dialer['prototype'][_0x8f34('0x149')]=function(_0xd53b9d,_0xf79b35,_0x3ccba9,_0x4da388){var _0x36859a=this;return function(){var _0x283497=!![];return _0x36859a['ifTime'](_0xd53b9d,_0xf79b35,_0x3ccba9,_0x4da388,_0x283497);};};Dialer[_0x8f34('0x1b')][_0x8f34('0x14a')]=function(_0xa72343,_0x2f1cbd,_0x269537,_0x42636c){var _0x1d6ef8=this;return function(){var _0x211c5e=![];return _0x1d6ef8[_0x8f34('0x14b')](_0xa72343['Intervals'],_0x2f1cbd,_0x269537,_0x42636c,_0x211c5e);};};Dialer[_0x8f34('0x1b')][_0x8f34('0x14b')]=function(_0x592386,_0x52c8d2,_0x6fb89d,_0x295b4d,_0x1ec7a9){var _0x3f2f45=[];return new Promise(function(_0x5a7bbb,_0x5f5b6f){if(!isNotNull(_0x592386)){_0x295b4d[_0x8f34('0x44')]=_0x8f34('0x4b');return _0x5f5b6f(msgResponse(_0x8f34('0x14b'),_0x8f34('0x14c'),_0x6fb89d+_0x8f34('0x14d')));}if(_[_0x8f34('0x82')](_0x592386)){_0x295b4d[_0x8f34('0x44')]=_0x8f34('0x14e');return _0x5f5b6f(msgResponse(_0x8f34('0x14b'),'Failure',_0x6fb89d+_0x8f34('0x14f')));}if(_0x52c8d2&&_['isUndefined'](config['timezones'][_0x52c8d2])){_0x295b4d[_0x8f34('0x44')]=_0x8f34('0x150');return _0x5f5b6f(msgResponse(_0x8f34('0x14b'),'Failure',_0x6fb89d+_0x8f34('0x151')+_0x52c8d2));}if(_[_0x8f34('0x152')](_0x592386)){for(var _0x419121=0x0;_0x419121<_0x592386['length'];_0x419121+=0x1){_0x3f2f45[_0x8f34('0x130')](ami[_0x8f34('0xaf')]({'action':'command','command':util['format'](_0x8f34('0x153'),_0x592386[_0x419121][_0x8f34('0x154')],!_['isUndefined'](config[_0x8f34('0x155')][_0x52c8d2])?_0x52c8d2:'')})[_0x8f34('0x41')](function(_0x518891){return _0x518891[_0x8f34('0x156')][_0x8f34('0x157')](_0x8f34('0x158'))>=0x0;})[_0x8f34('0xb9')](myreject(_0x5f5b6f)));}}else{_0x3f2f45[_0x8f34('0x130')](ami[_0x8f34('0xaf')]({'action':_0x8f34('0x159'),'command':util['format'](_0x8f34('0x153'),_0x592386,!_[_0x8f34('0x43')](config[_0x8f34('0x155')][_0x52c8d2])?_0x52c8d2:'')})['then'](function(_0x413e1a){return _0x413e1a[_0x8f34('0x156')][_0x8f34('0x157')]('true')>=0x0;})['catch'](myreject(_0x5f5b6f)));}Promise[_0x8f34('0x15a')](_0x3f2f45)['then'](function(_0x41341b){var _0x556d00=_[_0x8f34('0x15b')](_0x41341b);if(_0x556d00){return _0x5a7bbb(_0x556d00);}else{_0x295b4d[_0x8f34('0x44')]=_0x1ec7a9?_0x8f34('0x15c'):_0x8f34('0x15d');return _0x5f5b6f(msgResponse(_0x8f34('0x15e'),'Failure','Global:\x20'+_0x1ec7a9+'\x20'+_0x6fb89d+_0x8f34('0x15f')+util[_0x8f34('0x99')](_0x592386,{'showHidden':![],'depth':null})+_0x8f34('0x160')+_0x52c8d2));}})[_0x8f34('0xb9')](function(_0x2433a0){return _0x5f5b6f(msgResponse('ifTime',_0x8f34('0x14c'),JSON[_0x8f34('0x4f')](_0x2433a0)));});});};Dialer[_0x8f34('0x1b')]['checkDialMethod']=function(_0x46966a){var _0x191ec2=this;return function(){switch(_0x46966a[_0x8f34('0x60')]){case _0x8f34('0x161'):freeVariablesPredictive(_0x46966a);_0x191ec2['handlePower'](_0x46966a,0x1);break;case'power':freeVariablesPredictive(_0x46966a);_0x191ec2[_0x8f34('0x162')](_0x46966a,_0x46966a['dialPowerLevel']);break;case'predictive':_0x191ec2['predictive'](_0x46966a);break;case _0x8f34('0x8'):freeVariablesPredictive(_0x46966a);_0x191ec2['handlePower'](_0x46966a,0x1);break;default:freeVariablesPredictive(_0x46966a);logger[_0x8f34('0x9a')](_0x8f34('0x163'),_0x46966a['name'],_0x8f34('0x164'));}};};Dialer[_0x8f34('0x1b')]['checkPreviewRecallReminder']=function(_0x376352){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopper['handlePreviewRecallNotifications'](_0x376352['id'],previewRecallmeReminderInterval))['then'](function(_0x226494){for(var _0x24fc58=0x0;_0x24fc58<_0x226494[_0x8f34('0x9c')];_0x24fc58++){var _0x338445=_0x226494[_0x24fc58][_0x8f34('0x165')]['name'];if(_0x338445)io['to'](util[_0x8f34('0x95')](_0x8f34('0x166'),_0x338445))[_0x8f34('0x52')]('user:dialPreviewRecallReminder',{'hopper':_0x226494[_0x24fc58]});}})[_0x8f34('0xb9')](function(){});};Dialer['prototype'][_0x8f34('0x167')]=function(_0x565d81){var _0x1a0f06=this;return function(){_0x1a0f06[_0x8f34('0x168')](_0x565d81);};};Dialer[_0x8f34('0x1b')][_0x8f34('0xb')]=function(_0x2f753b){var _0x3e8920=this;if(isNotPreview(_0x2f753b[_0x8f34('0x60')])){if(isVoiceQueueOutbound(_0x2f753b[_0x8f34('0x81')])&&isActive(_0x2f753b['dialActive'])){_0x2f753b[_0x8f34('0xa4')]=!![];Promise[_0x8f34('0xb7')]()['then'](checkIsLoggedIn(_0x2f753b,_0x2f753b[_0x8f34('0x56')]))[_0x8f34('0x41')](checkIsActive(_0x2f753b,_0x2f753b['dialActive']))[_0x8f34('0x41')](checkInterval(_0x2f753b))['then'](_0x3e8920[_0x8f34('0x145')](_0x2f753b))[_0x8f34('0x41')](_0x3e8920[_0x8f34('0x149')](_0x2f753b[_0x8f34('0x169')],_0x2f753b[_0x8f34('0x16a')],_0x2f753b[_0x8f34('0x46')],_0x2f753b))[_0x8f34('0x41')](_0x3e8920[_0x8f34('0x14a')](_0x2f753b['Interval'],_0x2f753b['dialTimezone'],_0x2f753b[_0x8f34('0x46')],_0x2f753b))[_0x8f34('0x41')](_0x3e8920[_0x8f34('0x16b')](_0x2f753b))['catch'](loggerCatchQueueSummary('[syncQueueSummary]',_0x2f753b));}else{notSendMessagesQueue(_0x2f753b);}}else{freeVariablesPredictive(_0x2f753b);}};Dialer[_0x8f34('0x1b')][_0x8f34('0x35')]=_['throttle'](function(){var _0x14e126=_[_0x8f34('0x16c')](this['voiceQueues'],function(_0x2645db){return _0x2645db[_0x8f34('0x16d')];});var _0x295e30=_[_0x8f34('0x16c')](this[_0x8f34('0x22')],function(_0x3f491c){return _0x3f491c[_0x8f34('0x16e')]&&_0x3f491c[_0x8f34('0xe2')]==='reachable';});if(_0x14e126['length']>0x0&&_0x295e30[_0x8f34('0x9c')]>0x0){return Promise[_0x8f34('0xb7')]()[_0x8f34('0x41')](cmHopper['handlePreviewRecallNotifications'](_[_0x8f34('0x16f')](_0x14e126,'id'),previewRecallmeReminderInterval,_['map'](_0x295e30,'id')))[_0x8f34('0x41')](function(_0x54b8dd){for(var _0x39ef15=0x0;_0x39ef15<_0x54b8dd[_0x8f34('0x9c')];_0x39ef15++){var _0x58fd42=_0x54b8dd[_0x39ef15][_0x8f34('0x165')]['name'];if(_0x58fd42)io['to'](util['format'](_0x8f34('0x166'),_0x58fd42))[_0x8f34('0x52')](_0x8f34('0x170'),{'hopper':_0x54b8dd[_0x39ef15]});}})[_0x8f34('0xb9')](function(_0x29121b){logger[_0x8f34('0x9a')](_0x8f34('0x171'),_0x29121b);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x8f34('0x1b')][_0x8f34('0x144')]=function(){var _0x550476=this;var _0x2eb290;for(var _0x535442 in this[_0x8f34('0x21')]){if(typeof this[_0x8f34('0x21')][_0x535442]!==_0x8f34('0x9d')){_0x2eb290=this[_0x8f34('0x21')][_0x535442];if(isCampaignIvr(_0x2eb290[_0x8f34('0x81')])&&isActive(_0x2eb290[_0x8f34('0xe0')])){_0x2eb290[_0x8f34('0xa4')]=!![];Promise['resolve']()[_0x8f34('0x41')](checkIsActive(_0x2eb290,_0x2eb290['active']))[_0x8f34('0x41')](checkInterval(_0x2eb290))['then'](_0x550476[_0x8f34('0x145')](_0x2eb290))[_0x8f34('0x41')](_0x550476[_0x8f34('0x149')](_0x2eb290[_0x8f34('0x169')],_0x2eb290[_0x8f34('0x16a')],_0x2eb290[_0x8f34('0x46')],_0x2eb290))[_0x8f34('0x41')](_0x550476['checkIfTimeIntervals'](_0x2eb290['Interval'],_0x2eb290[_0x8f34('0x16a')],_0x2eb290[_0x8f34('0x46')],_0x2eb290))[_0x8f34('0x41')](_0x550476[_0x8f34('0x167')](_0x2eb290))[_0x8f34('0xb9')](loggerCatchQueueSummary(_0x8f34('0x172'),_0x2eb290));}else{notSendMessagesCampaign(_0x2eb290);}}}};function getCallerIdRandom(_0x548ea2,_0x176871){var _0x321fb8;var _0x16c0af;var _0x3473bd;if(_0x176871<=0x0){_0x176871=0x1;}_0x321fb8=new RegExp(_0x8f34('0x173')+_0x176871+'}$');_0x16c0af=Math[_0x8f34('0x174')](0xa,_0x176871-0x1);_0x3473bd=Math[_0x8f34('0x174')](0xa,_0x176871)-0x1;return util[_0x8f34('0x95')]('%s',_[_0x8f34('0x175')](_0x548ea2,_0x321fb8,_[_0x8f34('0x176')](_0x16c0af,_0x3473bd)));}function extractCalleridName(_0x50189c){var _0x46c89b=_0x50189c[_0x8f34('0x177')](/"(.*?)"/);return _0x46c89b?_0x46c89b[0x1]:_0x50189c;}Dialer[_0x8f34('0x1b')][_0x8f34('0x178')]=function(_0x26d6ac,_0x1c1af5){var _0x389e1a=this;var _0xae6d3e=uuid['v4']();this[_0x8f34('0x25')][_0xae6d3e]=new Action(_0x26d6ac,_0x1c1af5,_0xae6d3e);return new Promise(function(_0x3e49b9,_0x540839){if(_[_0x8f34('0x43')](_0x26d6ac)&&typeof _0x26d6ac!=='object'){return _0x540839(msgResponse(_0x8f34('0x179'),_0x8f34('0x14c'),'voiceQueue\x20is\x20undefine'));}if(_['isUndefined'](_0x1c1af5['phone'])||_0x1c1af5[_0x8f34('0x17a')]===null){return _0x540839(msgResponse(_0x8f34('0x179'),_0x8f34('0x14c'),'contact\x20is\x20undefine'));}var _0x3f39de={'XMD-CALLERID':_0x389e1a[_0x8f34('0x25')][_0xae6d3e][_0x8f34('0x17b')](),'XMD-AGI':_0x26d6ac[_0x8f34('0x111')]?util['format'](_0x8f34('0x17c'),ipAgi,_0x26d6ac[_0x8f34('0x111')]):_0x8f34('0x17d'),'XMD-AGIAFTER':_0x26d6ac['dialQueueProject2']?util[_0x8f34('0x95')]('\x22agi://%s/square,%s\x22',ipAgi,_0x26d6ac[_0x8f34('0x115')]):_0x8f34('0x17d'),'XMD-QUEUE':_0x26d6ac[_0x8f34('0x81')]===_0x8f34('0x53')?util['format'](_0x8f34('0x17e'),_0x26d6ac[_0x8f34('0x46')],_0x26d6ac[_0x8f34('0x17f')]||'',_0x26d6ac[_0x8f34('0x116')]?'c':'',_0x26d6ac[_0x8f34('0x180')]||0x3):_0x8f34('0x17d'),'XMD-CONTACTID':_0x1c1af5[_0x8f34('0xd9')],'XMD-CDRTYPE':_0x8f34('0x7'),'CALLERID(all)':_0x389e1a[_0x8f34('0x25')][_0xae6d3e][_0x8f34('0x17b')](),'XMD-AMD':_0x26d6ac[_0x8f34('0xe7')]?_0x8f34('0x181'):'NONE','XMD-DESTINATION':_0x8f34('0xe6')};if(_0x26d6ac['dialAMDActive']){_0x3f39de['XMD-AMDINITIALSILENCE']=_0x26d6ac[_0x8f34('0x182')]||0x9c4;_0x3f39de[_0x8f34('0x183')]=_0x26d6ac[_0x8f34('0x184')]||0x5dc;_0x3f39de[_0x8f34('0x185')]=_0x26d6ac['dialAMDAfterGreetingSilence']||0x320;_0x3f39de[_0x8f34('0x186')]=_0x26d6ac['dialAMDTotalAnalysisTime']||0x1388;_0x3f39de[_0x8f34('0x187')]=_0x26d6ac['dialAMDMinWordLength']||0x64;_0x3f39de[_0x8f34('0x188')]=_0x26d6ac[_0x8f34('0x189')]||0x32;_0x3f39de[_0x8f34('0x18a')]=_0x26d6ac[_0x8f34('0x18b')]||0x3;_0x3f39de[_0x8f34('0x18c')]=_0x26d6ac[_0x8f34('0x18d')]||0x100;_0x3f39de[_0x8f34('0x18e')]=_0x26d6ac[_0x8f34('0x18f')]||0x1388;}if(_0x26d6ac[_0x8f34('0x81')]==='outbound'){_0x3f39de[_0x8f34('0x190')]=_0x1c1af5['VoiceQueueId'];}else{_0x3f39de[_0x8f34('0x191')]=_0x1c1af5['CampaignId'];}for(var _0x2c847e in _0x1c1af5[_0x8f34('0x192')]){if(typeof _0x1c1af5[_0x8f34('0x192')][_0x2c847e]!==_0x8f34('0x9d')){if(isNotNull(_0x1c1af5['Contact'][_0x2c847e])&&_0x2c847e!=='id'&&_0x2c847e!=='tags'&&_0x2c847e!==_0x8f34('0x193')&&_0x2c847e!=='updatedAt'){_0x3f39de[util['format'](_0x8f34('0x194'),_0x8f34('0x195'),_[_0x8f34('0x196')](_0x2c847e))]=_0x1c1af5[_0x8f34('0x192')][_0x2c847e];}}}var _0x2bda3c=_0x389e1a['isTrunkReachable'](_0x26d6ac[_0x8f34('0x7d')])?getCallerId(_0x26d6ac[_0x8f34('0x7d')]['callerid'],_0x26d6ac[_0x8f34('0x61')],_0x26d6ac[_0x8f34('0x197')]>0x0?getCallerIdRandom(_0x26d6ac[_0x8f34('0x198')],_0x26d6ac[_0x8f34('0x197')]):_0x26d6ac[_0x8f34('0x198')]):getCallerId(_[_0x8f34('0xae')](_0x26d6ac[_0x8f34('0x146')])?_0x26d6ac['Trunk'][_0x8f34('0x7e')]:_0x26d6ac['TrunkBackup']['callerid'],_0x26d6ac[_0x8f34('0x61')],_0x26d6ac['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x26d6ac['dialOriginateCallerIdNumber'],_0x26d6ac[_0x8f34('0x197')]):_0x26d6ac[_0x8f34('0x198')]);if(_0x2bda3c){_0x3f39de['XMD-ORIGINATECALLERIDNAME']=_0x389e1a['actions'][_0xae6d3e]['originatecalleridname']=extractCalleridName(_0x2bda3c);_0x3f39de[_0x8f34('0x199')]=_0x1c1af5[_0x8f34('0x17a')];}_0x26d6ac[_0x8f34('0x19a')]=_0x3f39de;return ami[_0x8f34('0xaf')]({'actionid':_0xae6d3e,'action':_0x8f34('0x179'),'channel':_0x389e1a[_0x8f34('0xdf')](_0x26d6ac[_0x8f34('0x7d')])?util[_0x8f34('0x95')](_0x8f34('0x19b'),_0x26d6ac[_0x8f34('0x7d')][_0x8f34('0x46')],isNotNull(_0x26d6ac[_0x8f34('0x63')])?_0x26d6ac[_0x8f34('0x63')][_0x8f34('0x19c')]()||'':'',_0x26d6ac[_0x8f34('0x19d')]>0x0?_0x1c1af5[_0x8f34('0x17a')][_0x8f34('0x19e')](_0x26d6ac[_0x8f34('0x19d')]):_0x1c1af5[_0x8f34('0x17a')]):util[_0x8f34('0x95')](_0x8f34('0x19b'),_[_0x8f34('0xae')](_0x26d6ac['TrunkBackup'])?_0x26d6ac[_0x8f34('0x7d')][_0x8f34('0x46')]:_0x26d6ac[_0x8f34('0x146')][_0x8f34('0x46')],isNotNull(_0x26d6ac['dialPrefix'])?_0x26d6ac[_0x8f34('0x63')]['trim']()||'':'',_0x26d6ac[_0x8f34('0x19d')]>0x0?_0x1c1af5[_0x8f34('0x17a')][_0x8f34('0x19e')](_0x26d6ac['dialCutDigit']):_0x1c1af5[_0x8f34('0x17a')]),'callerid':_0x2bda3c,'Exten':_0x8f34('0xe6'),'Context':'from-sip','Priority':'1','variable':_0x3f39de,'timeout':(_0x26d6ac[_0x8f34('0x62')]||0x1e)*0x3e8,'async':!![],'channelid':_0xae6d3e})[_0x8f34('0x41')](function(_0x2d33b7){return _0x3e49b9(_0x2d33b7);})[_0x8f34('0xb9')](function(_0x35a714){_0x26d6ac[_0x8f34('0x6b')]+=0x1;var _0x246271=new History(_0x389e1a[_0x8f34('0x25')][_0xae6d3e]);logger[_0x8f34('0x9a')](util['format'](_0x8f34('0x19f'),JSON['stringify'](_0x35a714)));_0x246271['state']=0xe;_0x246271[_0x8f34('0xa8')]=_0x8f34('0x1a0');_0x246271[_0x8f34('0xaa')]=moment()[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss');_0x246271['endtime']=_0x246271[_0x8f34('0xaa')];_0x389e1a[_0x8f34('0xd2')](_0x246271)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1a1')));_0x389e1a[_0x8f34('0xd0')](_0x246271)['catch'](loggerCatch('[originate][error]'))[_0x8f34('0x1e')](function(){delete _0x389e1a[_0x8f34('0x25')][_0xae6d3e];return _0x540839(msgResponse('originate',_0x8f34('0x4e'),'originate\x20action\x20Error'));});});});};Dialer[_0x8f34('0x1b')][_0x8f34('0x1a2')]=function(_0x38ad28){var _0x52a0c6=this[_0x8f34('0x25')][_0x38ad28[_0x8f34('0x12c')]];if(_0x52a0c6){delete this[_0x8f34('0x25')][_0x38ad28[_0x8f34('0x12c')]];_0x52a0c6[_0x8f34('0x11b')]=moment()['format'](_0x8f34('0x105'));var _0x636d39=_0x52a0c6[_0x8f34('0x81')]===_0x8f34('0xb4')?this['campaigns'][_0x52a0c6['queue']]:this[_0x8f34('0x20')][_0x52a0c6['getQueue']()];if(!this['isSuccess'](_0x38ad28['response'])){this['updateOriginated'](_0x636d39);return this[_0x8f34('0x1a3')](_0x52a0c6,_0x636d39,_0x38ad28)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1a4')));}this['uniqueId'][_0x38ad28[_0x8f34('0xe3')]]=_0x52a0c6;}};Dialer[_0x8f34('0x1b')][_0x8f34('0x1a5')]=function(_0xbe2b8b,_0x2e72ac,_0x5dfed3){var _0x39a6f0=new History(_0x2e72ac);if(_0x39a6f0['countbusyretry']+_0x39a6f0[_0x8f34('0x109')]+_0x39a6f0['countnoanswerretry']+_0x39a6f0['countnosuchnumberretry']+_0x39a6f0[_0x8f34('0xfb')]+_0x39a6f0['countabandonedretry']+_0x39a6f0['countmachineretry']+_0x39a6f0[_0x8f34('0xfd')]>=_0x5dfed3[_0x8f34('0xfe')]-0x1){return!![];}switch(_0xbe2b8b){case 0x3:if(_0x39a6f0[_0x8f34('0xf9')]>=_0x5dfed3['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0x8f34('0xc6')]({'active':![],'countnoanswerretry':_0x39a6f0[_0x8f34('0xf9')]+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3[_0x8f34('0x1a6')],_0x8f34('0x104'))[_0x8f34('0x95')](_0x8f34('0x105')),'ContactId':_0x39a6f0['ContactId'],'ListId':_0x39a6f0[_0x8f34('0xda')],'VoiceQueueId':_0x39a6f0[_0x8f34('0xdb')]||undefined,'CampaignId':_0x39a6f0[_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1a7')));break;case 0x5:if(_0x39a6f0[_0x8f34('0xf8')]>=_0x5dfed3[_0x8f34('0x1a8')]-0x1){return!![];}this[_0x8f34('0xc6')]({'active':![],'countbusyretry':_0x39a6f0[_0x8f34('0xf8')]+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3['dialBusyRetryFrequency'],'minutes')[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x39a6f0[_0x8f34('0xd9')],'ListId':_0x39a6f0['ListId'],'VoiceQueueId':_0x39a6f0[_0x8f34('0xdb')]||undefined,'CampaignId':_0x39a6f0['CampaignId']||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1a9')));break;case 0x8:if(_0x39a6f0[_0x8f34('0x109')]>=_0x5dfed3['dialCongestionMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x39a6f0[_0x8f34('0x109')]+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3['dialCongestionRetryFrequency'],_0x8f34('0x104'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x39a6f0[_0x8f34('0xd9')],'ListId':_0x39a6f0[_0x8f34('0xda')],'VoiceQueueId':_0x39a6f0['VoiceQueueId']||undefined,'CampaignId':_0x39a6f0[_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1aa')));break;case 0x0:if(_0x39a6f0['countnosuchnumberretry']>=_0x5dfed3[_0x8f34('0x1ab')]-0x1){return!![];}else{this[_0x8f34('0xc6')]({'active':![],'countnosuchnumberretry':_0x39a6f0[_0x8f34('0xfa')]+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3[_0x8f34('0x1ac')],_0x8f34('0x104'))[_0x8f34('0x95')](_0x8f34('0x105')),'ContactId':_0x39a6f0[_0x8f34('0xd9')],'ListId':_0x39a6f0[_0x8f34('0xda')],'VoiceQueueId':_0x39a6f0[_0x8f34('0xdb')]||undefined,'CampaignId':_0x39a6f0['CampaignId']||undefined})[_0x8f34('0xb9')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x39a6f0['countdropretry']>=_0x5dfed3['dialDropMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x39a6f0['countdropretry']+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3[_0x8f34('0x11e')],_0x8f34('0x104'))[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x39a6f0['ContactId'],'ListId':_0x39a6f0[_0x8f34('0xda')],'VoiceQueueId':_0x39a6f0['VoiceQueueId']||undefined,'CampaignId':_0x39a6f0[_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x123')));break;case 0xb:if(_0x39a6f0[_0x8f34('0xfc')]>=_0x5dfed3[_0x8f34('0x129')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x39a6f0[_0x8f34('0xfc')]+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3['dialAbandonedRetryFrequency'],_0x8f34('0x104'))['format'](_0x8f34('0x105')),'ContactId':_0x39a6f0['ContactId'],'ListId':_0x39a6f0[_0x8f34('0xda')],'VoiceQueueId':_0x39a6f0[_0x8f34('0xdb')]||undefined,'CampaignId':_0x39a6f0[_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x39a6f0[_0x8f34('0xf4')]>=_0x5dfed3['dialMachineMaxRetry']-0x1){return!![];}this[_0x8f34('0xc6')]({'active':![],'countmachineretry':_0x39a6f0['countmachineretry']+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3[_0x8f34('0x103')],'minutes')[_0x8f34('0x95')](_0x8f34('0x105')),'ContactId':_0x39a6f0['ContactId'],'ListId':_0x39a6f0['ListId'],'VoiceQueueId':_0x39a6f0[_0x8f34('0xdb')]||undefined,'CampaignId':_0x39a6f0[_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x39a6f0[_0x8f34('0xfd')]>=_0x5dfed3[_0x8f34('0x1ad')]-0x1){return!![];}this[_0x8f34('0xc6')]({'active':![],'countagentrejectretry':_0x39a6f0[_0x8f34('0xfd')]+=0x1,'scheduledat':moment()[_0x8f34('0x102')](_0x5dfed3['dialAgentRejectRetryFrequency'],_0x8f34('0x104'))[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x39a6f0[_0x8f34('0xd9')],'ListId':_0x39a6f0[_0x8f34('0xda')],'VoiceQueueId':_0x39a6f0[_0x8f34('0xdb')]||undefined,'CampaignId':_0x39a6f0[_0x8f34('0xdc')]||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1ae')));break;default:return!![];}};Dialer['prototype'][_0x8f34('0x1a3')]=function(_0xe76bd5,_0x4d0ab7,_0xbf835c){var _0x18eddc=this;var _0x11a7db=new History(_0xe76bd5);var _0x51e39c=![];var _0x20432e;var _0x509e72;return new Promise(function(_0x3e04c6,_0x1136b5){if(_[_0x8f34('0x43')](_0x4d0ab7)&&typeof _0x4d0ab7!==_0x8f34('0x1af')){return _0x1136b5(msgResponse(_0x8f34('0x1b0'),_0x8f34('0x14c'),_0x8f34('0x1b1')));}if(_[_0x8f34('0x43')](_0xbf835c)&&typeof _0xbf835c!=='object'){return _0x1136b5(msgResponse(_0x8f34('0x1b0'),_0x8f34('0x14c'),_0x8f34('0x1b2')));}_0x18eddc['verifyAdditionalPhones'](_0x11a7db,_0xbf835c[_0x8f34('0x113')],_0x4d0ab7)[_0x8f34('0x41')](function(_0x17bcf3){if(_0x17bcf3[_0x8f34('0x121')]==0x1)_0x51e39c=!![];switch(_0xbf835c[_0x8f34('0x113')]){case'0':_0x4d0ab7[_0x8f34('0x1b3')]+=0x1;_0x11a7db[_0x8f34('0xea')]=0x0;_0x11a7db[_0x8f34('0xa8')]='NoSuchNumber';_0x11a7db[_0x8f34('0xfa')]+=0x1;_0x11a7db['countglobal']+=0x1;ami[_0x8f34('0x52')](_0x8f34('0x1b4'),ut[_0x8f34('0xed')](_0xe76bd5,_0x8f34('0x1b5')));_0x20432e=_0x4d0ab7[_0x8f34('0x1ac')];_0x509e72=_0x4d0ab7['callAdditionalPhoneAfterMin'];_0x18eddc[_0x8f34('0xd2')](_0x11a7db)[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xf7')));if(_0x18eddc[_0x8f34('0x1a5')](0x0,_0xe76bd5,_0x4d0ab7)&&!_0x51e39c){if(_0x11a7db[_0x8f34('0xfa')]>=_0x4d0ab7[_0x8f34('0x1ab')]){_0x18eddc[_0x8f34('0x100')](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1b6'));}else{_0x18eddc[_0x8f34('0x10a')](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1b6'));}}break;case'3':_0x4d0ab7[_0x8f34('0x6a')]+=0x1;_0x11a7db[_0x8f34('0xea')]=0x3;_0x11a7db[_0x8f34('0xa8')]=_0x8f34('0x1b7');_0x11a7db['countnoanswerretry']+=0x1;_0x11a7db[_0x8f34('0xf5')]+=0x1;var _0x279b3b=ut[_0x8f34('0x1b8')](_0xe76bd5,_0x4d0ab7);ami[_0x8f34('0x52')](_0x8f34('0x1b9'),_0x279b3b);_0x20432e=_0x4d0ab7[_0x8f34('0x1a6')];_0x509e72=_0x4d0ab7[_0x8f34('0x11f')];_0x18eddc[_0x8f34('0xd2')](_0x11a7db)[_0x8f34('0xb9')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x18eddc[_0x8f34('0x1a5')](0x3,_0xe76bd5,_0x4d0ab7)&&!_0x51e39c){if(_0x11a7db[_0x8f34('0xf9')]>=_0x4d0ab7['dialNoAnswerMaxRetry']){_0x18eddc['createStateFinal'](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1ba'));}else{_0x18eddc[_0x8f34('0x10a')](_0x11a7db,_0x3e04c6,_0x1136b5,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x4d0ab7[_0x8f34('0x1bb')]+=0x1;_0x11a7db[_0x8f34('0xea')]=0x5;_0x11a7db[_0x8f34('0xa8')]='Busy';_0x11a7db[_0x8f34('0xf8')]+=0x1;_0x11a7db['countglobal']+=0x1;ami[_0x8f34('0x52')](_0x8f34('0x1bc'),ut[_0x8f34('0xed')](_0xe76bd5,_0x8f34('0x1bd')));_0x20432e=_0x4d0ab7[_0x8f34('0x1be')];_0x509e72=_0x4d0ab7['callAdditionalPhoneAfterMin'];_0x18eddc[_0x8f34('0xd2')](_0x11a7db)['catch'](loggerCatch(_0x8f34('0x1bf')));if(_0x18eddc[_0x8f34('0x1a5')](0x5,_0xe76bd5,_0x4d0ab7)&&!_0x51e39c){if(_0x11a7db['countbusyretry']>=_0x4d0ab7[_0x8f34('0x1a8')]){_0x18eddc['createStateFinal'](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1c0'));}else{_0x18eddc[_0x8f34('0x10a')](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1c0'));}}break;case'8':_0x4d0ab7[_0x8f34('0x66')]+=0x1;_0x11a7db[_0x8f34('0xea')]=0x8;_0x11a7db['statedesc']=_0x8f34('0x1c1');_0x11a7db[_0x8f34('0x109')]+=0x1;_0x11a7db[_0x8f34('0xf5')]+=0x1;_0x20432e=_0x4d0ab7[_0x8f34('0x1c2')];_0x509e72=_0x4d0ab7['callAdditionalPhoneAfterMin'];ami['emit'](_0x8f34('0x1c3'),ut[_0x8f34('0xed')](_0xe76bd5,_0x8f34('0x1c4')));_0x18eddc[_0x8f34('0xd2')](_0x11a7db)[_0x8f34('0xb9')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x18eddc[_0x8f34('0x1a5')](0x8,_0xe76bd5,_0x4d0ab7)&&!_0x51e39c){if(_0x11a7db[_0x8f34('0x109')]>=_0x4d0ab7[_0x8f34('0x1c5')]){_0x18eddc[_0x8f34('0x100')](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1c6'));}else{_0x18eddc[_0x8f34('0x10a')](_0x11a7db,_0x3e04c6,_0x1136b5,'reason\x208\x20congestion');}}break;case'11':_0x4d0ab7['outboundAbandonedCallsDay']+=0x1;_0x11a7db[_0x8f34('0xea')]=0xb;_0x11a7db[_0x8f34('0xa8')]=_0x8f34('0x127');_0x11a7db['countabandonedretry']+=0x1;_0x11a7db[_0x8f34('0xf5')]+=0x1;_0x20432e=_0x4d0ab7['dialAbandonedRetryFrequency'];_0x509e72=_0x4d0ab7[_0x8f34('0x11f')];_0x18eddc[_0x8f34('0xd2')](_0x11a7db)[_0x8f34('0xb9')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x18eddc[_0x8f34('0x1a5')](0xb,_0xe76bd5,_0x4d0ab7)&&!_0x51e39c){if(_0x11a7db[_0x8f34('0xfc')]>=_0x4d0ab7[_0x8f34('0x129')]){_0x18eddc[_0x8f34('0x100')](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1c7'));}else{_0x18eddc[_0x8f34('0x10a')](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1c7'));}}break;case'20':_0x4d0ab7['outboundRejectCallsDay']+=0x1;_0x11a7db[_0x8f34('0xea')]=0x14;_0x11a7db[_0x8f34('0xa8')]='AgentReject';_0x11a7db[_0x8f34('0xfd')]+=0x1;_0x11a7db['countglobal']+=0x1;_0x20432e=_0x4d0ab7[_0x8f34('0x1c8')];_0x509e72=_0x4d0ab7[_0x8f34('0x11f')];ami['emit']('custom:agentreject',ut[_0x8f34('0xed')](_0xe76bd5,'agentreject'));_0x18eddc['createHistory'](_0x11a7db)[_0x8f34('0xb9')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x18eddc[_0x8f34('0x1a5')](0x14,_0xe76bd5,_0x4d0ab7)&&!_0x51e39c){if(_0x11a7db['countagentrejectretry']>=_0x4d0ab7['dialAgentRejectMaxRetry']){_0x18eddc[_0x8f34('0x100')](_0x11a7db,_0x3e04c6,_0x1136b5,'reason\x2020\x20agentreject');}else{_0x18eddc[_0x8f34('0x10a')](_0x11a7db,_0x3e04c6,_0x1136b5,_0x8f34('0x1c9'));}}break;default:_0x4d0ab7['outboundUnknownCallsDay']+=0x1;_0x11a7db['state']=0xc;_0x11a7db['statedesc']=_0xbf835c[_0x8f34('0x113')];_0x20432e=_0x4d0ab7[_0x8f34('0x1c8')];_0x509e72=_0x4d0ab7[_0x8f34('0x11f')];_0x18eddc[_0x8f34('0xd2')](_0x11a7db)['catch'](loggerCatch(_0x8f34('0x1ca')));if(_0x18eddc[_0x8f34('0x1a5')](_0xbf835c[_0x8f34('0x113')],_0xe76bd5,_0x4d0ab7)&&!_0x51e39c){if(_0x11a7db['countbusyretry']+_0x11a7db['countcongestionretry']+_0x11a7db['countnoanswerretry']+_0x11a7db[_0x8f34('0xfa')]+_0x11a7db['countdropretry']+_0x11a7db[_0x8f34('0xfc')]+_0x11a7db['countmachineretry']+_0x11a7db['countagentrejectretry']>=_0x4d0ab7['dialGlobalMaxRetry']){_0x18eddc[_0x8f34('0x10a')](_0x11a7db,_0x3e04c6,_0x1136b5,_0xbf835c[_0x8f34('0x113')]);}else{_0x18eddc[_0x8f34('0x100')](_0x11a7db,_0x3e04c6,_0x1136b5,_0xbf835c[_0x8f34('0x113')]);}}}})[_0x8f34('0x41')](function(){if(_0x51e39c){_0x18eddc[_0x8f34('0xbf')](_0x11a7db,_0x20432e,_0x509e72)['then'](function(){return _0x3e04c6(0x1);});}});});};Dialer[_0x8f34('0x1b')][_0x8f34('0x10a')]=function(_0x2c054f,_0x39f115,_0x2907eb,_0x46e2a6){var _0x2af1b3=new Final(_0x2c054f);_0x2af1b3['state']=0xf;_0x2af1b3['statedesc']='Global';this[_0x8f34('0x100')](_0x2af1b3,_0x39f115,_0x2907eb,_0x46e2a6);};Dialer[_0x8f34('0x1b')][_0x8f34('0x100')]=function(_0xd81a8b,_0x26e67d,_0x1fbf41,_0x17e746){this['moveContactManagedDialer'](_0xd81a8b)[_0x8f34('0x41')](function(){return _0x26e67d(msgResponse('[callProgressDetecting]',_0x8f34('0x1cb'),_0x17e746));})[_0x8f34('0xb9')](function(){return _0x1fbf41(msgResponse(_0x8f34('0x1cc'),_0x8f34('0x14c'),_0x8f34('0x1cd')));});};Dialer['prototype']['predictive']=function(_0xfb5b78){var _0x451704=_0xfb5b78['dialPredictiveOptimizationPercentage']/0x64;var _0x139d60=_0xfb5b78['outboundDropCallsDayTimeout']/(_0xfb5b78[_0x8f34('0x69')]+_0xfb5b78[_0x8f34('0xe9')]);var _0x45b365=Math[_0x8f34('0x1ce')](_0xfb5b78[_0x8f34('0x77')]*(_0xfb5b78[_0x8f34('0x1cf')]/0x64));var _0x5d3c1e=Math['round'](_0xfb5b78['predictiveIntervalAvailable']*(_0xfb5b78['predictiveIntervalMinThreshold']/0x64));var _0x3fcb19=_0xfb5b78[_0x8f34('0x55')]+_0xfb5b78[_0x8f34('0x59')];var _0x13284e=Math[_0x8f34('0x1d0')](_0xfb5b78[_0x8f34('0x8c')]*_0xfb5b78['erlangAbandonmentRate']*_0xfb5b78[_0x8f34('0x75')]*_0xfb5b78[_0x8f34('0x1d1')]);if(_[_0x8f34('0x43')](_0xfb5b78['startProgressive'])){if(!_[_0x8f34('0x43')](_0xfb5b78[_0x8f34('0x7c')])){_0xfb5b78['startPredictive']=undefined;loggerPredictive[_0x8f34('0x9a')](_0x8f34('0x1d2'),_0x8f34('0x1d3'));}if(!_['isUndefined'](_0xfb5b78['handlePredictive'])){loggerPredictive[_0x8f34('0x9a')](_0x8f34('0x1d2'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0xfb5b78[_0x8f34('0x93')]);_0xfb5b78[_0x8f34('0x93')]=undefined;}_0xfb5b78[_0x8f34('0x29')]=moment()[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0xfb5b78[_0x8f34('0x46')],_0x8f34('0x1d4'),_0xfb5b78[_0x8f34('0x29')]);this[_0x8f34('0x162')](_0xfb5b78,0x1);}else if(ifInterval(_0xfb5b78['dialPredictiveInterval'],_0xfb5b78[_0x8f34('0x29')])){this[_0x8f34('0x162')](_0xfb5b78,0x1);loggerPredictiveCalls[_0x8f34('0x83')]('[startMethodPredictive][StartProgressive][Loop]',_0xfb5b78[_0x8f34('0x29')],_0xfb5b78['name']);_0xfb5b78[_0x8f34('0x8c')]=0x0;_0xfb5b78[_0x8f34('0x74')]=0x0;}else if(_0x451704<_0x139d60&&_0xfb5b78['dialPredictiveOptimization']===_0x8f34('0x1d5')){freeVariablesPredictive(_0xfb5b78);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x1d6'),_0x8f34('0x1d7'),_0x139d60,'startProgressive',_0xfb5b78['name']);}else if(_0x13284e<_0xfb5b78['predictiveIntervalErlangCallsDroppedCalls']&&_0xfb5b78[_0x8f34('0x1d8')]===_0x8f34('0x1d5')){freeVariablesPredictive(_0xfb5b78);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x1d9'),_0x8f34('0x1da'),_0x13284e,'Drop\x20in\x20this\x20interval',_0xfb5b78['predictiveIntervalErlangCallsDroppedCalls'],_0x8f34('0x29'),_0xfb5b78[_0x8f34('0x46')]);}else if(!ifInterval(_0xfb5b78[_0x8f34('0x1db')],_0xfb5b78['startProgressive'])&&_[_0x8f34('0x43')](_0xfb5b78[_0x8f34('0x7c')])&&!_['isUndefined'](_0xfb5b78['startProgressive'])){_0xfb5b78[_0x8f34('0x7c')]=moment()[_0x8f34('0x95')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x8f34('0x83')](_0xfb5b78[_0x8f34('0x46')],_0x8f34('0x1dc'),_0xfb5b78[_0x8f34('0x7c')]);this[_0x8f34('0xc3')](_0xfb5b78[_0x8f34('0x1db')])['then'](this[_0x8f34('0x1dd')](_0xfb5b78))[_0x8f34('0x41')](mergeDataErlangB(_0xfb5b78))[_0x8f34('0x41')](this['startMethodPredictive'](_0xfb5b78))['catch'](loggerCatchPredictive(_0x8f34('0x1de'),_0xfb5b78));}else if(!ifInterval(_0xfb5b78[_0x8f34('0x1db')],_0xfb5b78[_0x8f34('0x7c')])){_0xfb5b78[_0x8f34('0x74')]=0x0;_0xfb5b78[_0x8f34('0x7c')]=moment()[_0x8f34('0x95')](_0x8f34('0x105'));loggerPredictive[_0x8f34('0x83')](_0xfb5b78['name'],_0x8f34('0x1df'),_0xfb5b78['startPredictive']);clearInterval(_0xfb5b78[_0x8f34('0x93')]);_0xfb5b78[_0x8f34('0x93')]=undefined;this['averageHandleTime'](_0xfb5b78[_0x8f34('0x1db')])['then'](this[_0x8f34('0x1dd')](_0xfb5b78))[_0x8f34('0x41')](mergeDataErlangB(_0xfb5b78))['then'](this[_0x8f34('0x1e0')](_0xfb5b78))['catch'](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0xfb5b78));}else if(_0xfb5b78[_0x8f34('0x77')]&&_0x3fcb19<_0xfb5b78['predictiveIntervalAvailable']-_0x5d3c1e){freeVariablesPredictive(_0xfb5b78);loggerPredictive['info'](_0xfb5b78[_0x8f34('0x46')],_0x8f34('0x1e1'),_0x3fcb19,')\x20are\x20less\x20than\x20threshold\x20(',_0xfb5b78['predictiveIntervalAvailable'],'-',_0x5d3c1e,'=',_0xfb5b78[_0x8f34('0x77')]-_0x5d3c1e,')');}else if(_0xfb5b78[_0x8f34('0x77')]&&_0x3fcb19>_0xfb5b78[_0x8f34('0x77')]+_0x45b365){freeVariablesPredictive(_0xfb5b78);loggerPredictive['info'](_0xfb5b78['name'],_0x8f34('0x1e1'),_0x3fcb19,')\x20are\x20more\x20than\x20threshold\x20(',_0xfb5b78[_0x8f34('0x77')],'+',_0x45b365,'=',_0xfb5b78[_0x8f34('0x77')]+_0x45b365,')');}};Dialer[_0x8f34('0x1b')]['getDataPredictive']=function(_0x1fa3a3){var _0x440316=this;return function(_0x1ec653){return new Promise(function(_0x354b2a,_0x151ab3){_[_0x8f34('0x8f')](_0x1fa3a3,_0x1ec653[0x0]);if(checkGetDataPredictive(_0x1ec653[0x0])){var _0x1f650b=_0x1fa3a3[_0x8f34('0x77')]=_0x1fa3a3['talking']+_0x1fa3a3['available'];var _0xc786c8=_0x1fa3a3[_0x8f34('0x1db')]*0x3c;var _0x1ec625=_0x1ec653[0x0][_0x8f34('0x70')]+_0x1ec653[0x0]['predictiveIntervalAvgHoldtime'];var _0x4d0e09=(_0x1ec653[0x0][_0x8f34('0x6e')]+_0x1ec653[0x0][_0x8f34('0x72')]+_0x1ec653[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1ec653[0x0]['predictiveIntervalTotalCalls'];_0x1fa3a3['predictiveIntervalHitRate']=_0x4d0e09>0x0?_0x4d0e09:0x1;switch(_0x1fa3a3['dialPredictiveOptimization']){case _0x8f34('0x1d5'):var _0x22ea1e=_0x1fa3a3[_0x8f34('0x1e2')]/0x64;return _0x440316[_0x8f34('0x1e3')](_0x1f650b,_0xc786c8,_0x1ec625,_0x4d0e09,_0x22ea1e)['then'](function(_0x3c460e){return _0x354b2a(_0x3c460e);});case _0x8f34('0x1e4'):var _0x4c184b=_0x1fa3a3[_0x8f34('0x1e2')]/0x64;return _0x440316[_0x8f34('0x1e5')](_0x1f650b,_0xc786c8,_0x1ec625,_0x4d0e09,_0x4c184b)[_0x8f34('0x41')](function(_0x2cd8a1){return _0x354b2a(_0x2cd8a1);});default:return _0x151ab3(msgResponse(_0x8f34('0x1e6'),_0x8f34('0x14c'),_0x8f34('0x1e7')));}}else{return _0x151ab3(msgResponse('[getDataPredictive]',_0x8f34('0x14c'),_0x8f34('0x1e8')));}});};};Dialer[_0x8f34('0x1b')][_0x8f34('0x1e9')]=function(_0x122aad){var _0x3d0936=this;return function(_0x21e8de){return new Promise(function(_0x267d80,_0x5e77a5){_['merge'](_0x122aad,_0x21e8de[0x0]);if(checkGetDataPredictive(_0x21e8de[0x0])){loggerPredictive['info'](JSON[_0x8f34('0x4f')](_0x21e8de[0x0]));if(_0x122aad[_0x8f34('0x1d8')]===_0x8f34('0x1d5')){return _0x3d0936[_0x8f34('0xce')](_0x122aad['id'])[_0x8f34('0x41')](function(_0x59665c){var _0x5436c8=_0x122aad[_0x8f34('0x56')]-_0x59665c[0x0]['outboundQueuePauses'];var _0x5ef85d=_0x122aad[_0x8f34('0x1db')]*0x3c;var _0x24fa38=_0x21e8de[0x0][_0x8f34('0x70')]+_0x21e8de[0x0]['predictiveIntervalAvgHoldtime'];var _0x46ed90=(_0x21e8de[0x0][_0x8f34('0x6e')]+_0x21e8de[0x0][_0x8f34('0x72')]+_0x21e8de[0x0][_0x8f34('0x71')])/_0x21e8de[0x0][_0x8f34('0x84')];var _0x1c9fe0=_0x122aad[_0x8f34('0x1e2')]/0x64;_0x122aad[_0x8f34('0x76')]=_0x59665c[0x0][_0x8f34('0x1ea')]||0x0;_0x122aad[_0x8f34('0x75')]=_0x46ed90>0x0?_0x46ed90:0x1;return _0x3d0936[_0x8f34('0x1e3')](_0x5436c8,_0x5ef85d,_0x24fa38,_0x46ed90,_0x1c9fe0);})[_0x8f34('0x41')](function(_0x5d053b){return _0x267d80(_0x5d053b);})['catch'](function(_0x4d7207){return _0x5e77a5(msgResponse(_0x8f34('0x1eb'),'Failure',JSON['stringify'](_0x4d7207)));});}if(_0x122aad['dialPredictiveOptimization']===_0x8f34('0x1e4')){return _0x3d0936[_0x8f34('0xce')](_0x122aad['id'])[_0x8f34('0x41')](function(_0x17cc12){var _0x370f75=_0x122aad[_0x8f34('0x56')]-_0x17cc12[0x0][_0x8f34('0x1ea')];var _0x1d99cb=_0x122aad[_0x8f34('0x1db')]*0x3c;var _0x59d399=_0x21e8de[0x0][_0x8f34('0x70')]+_0x21e8de[0x0][_0x8f34('0x6f')];var _0x22e9f9=(_0x21e8de[0x0][_0x8f34('0x6e')]+_0x21e8de[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x21e8de[0x0][_0x8f34('0x71')])/_0x21e8de[0x0][_0x8f34('0x84')];var _0x2b739d=_0x122aad[_0x8f34('0x1e2')]/0x64;_0x122aad[_0x8f34('0x76')]=_0x17cc12[0x0][_0x8f34('0x1ea')]||0x0;_0x122aad[_0x8f34('0x75')]=_0x22e9f9>0x0?_0x22e9f9:0x1;return _0x3d0936['busyFactor'](_0x370f75,_0x1d99cb,_0x59d399,_0x22e9f9,_0x2b739d);})[_0x8f34('0x41')](function(_0x564e04){return _0x267d80(_0x564e04);})['catch'](function(_0x37fd75){return _0x5e77a5(msgResponse('[CatchErlangB]','Failure',JSON[_0x8f34('0x4f')](_0x37fd75)));});}}else{return _0x5e77a5(msgResponse(_0x8f34('0x1e6'),_0x8f34('0x14c'),_0x8f34('0x1e8')));}});};};Dialer[_0x8f34('0x1b')][_0x8f34('0x1e0')]=function(_0x4a488f){var _0x54e99c=this;return function(){var _0x2810e0=0x0;var _0x45e527=Math[_0x8f34('0x1d0')](_0x4a488f['erlangCallToSecond']*0x3e8);if(_0x45e527>0x0){_0x45e527=_0x45e527<0x64?0x64:_0x45e527;loggerPredictive[_0x8f34('0x83')](_0x4a488f['name'],'one\x20call\x20every:',_0x45e527,_0x8f34('0x90'));_0x4a488f['handlePredictive']=setInterval(function(){_0x54e99c['handlePredictive'](_0x4a488f);loggerPredictiveCalls[_0x8f34('0x83')](_0x8f34('0x1ec'),_0x2810e0+=0x1);},_0x45e527);}else{loggerPredictive['info'](_0x4a488f[_0x8f34('0x46')],_0x8f34('0x1ed'));}};};Dialer[_0x8f34('0x1b')][_0x8f34('0x1ee')]=function(_0x4ba262,_0x1a0933){var _0x360ade=this;return function(_0x596d53){if(_[_0x8f34('0x82')](_0x596d53)){if(_[_0x8f34('0xae')](_0x1a0933[_0x8f34('0x1ef')])||!_0x1a0933[_0x8f34('0x1f0')]){if(_0x4ba262[_0x8f34('0x60')]==='booked'){_0x4ba262[_0x8f34('0x131')]=_['isUndefined'](_0x4ba262['queueStatusComplete'])?!![]:_0x4ba262[_0x8f34('0x131')];var _0x5e976a=uuid['v4']();_0x360ade[_0x8f34('0x25')][_0x5e976a]=new Action(_0x4ba262,_0x1a0933,_0x5e976a);loggerBooked['info'](_0x8f34('0x1f1'),_0x5e976a,_0x8f34('0x1f2'),JSON[_0x8f34('0x4f')](_0x4ba262['queueStatusComplete']),'Queue:\x20',_0x4ba262['name']);if(_0x4ba262['queueStatusComplete']){_0x4ba262[_0x8f34('0x131')]=![];_0x360ade[_0x8f34('0x2b')][_0x360ade[_0x8f34('0x25')][_0x5e976a][_0x8f34('0xb3')]]=[];ami['Action']({'actionid':_0x5e976a,'action':_0x8f34('0x1f3'),'queue':_0x4ba262[_0x8f34('0x46')]})[_0x8f34('0xb9')](function(){_0x360ade[_0x8f34('0xb5')](_0x4ba262);_0x360ade[_0x8f34('0xc6')]({'active':![],'ContactId':_0x360ade[_0x8f34('0x25')][_0x5e976a]['ContactId'],'ListId':_0x360ade[_0x8f34('0x25')][_0x5e976a][_0x8f34('0xda')],'VoiceQueueId':_0x360ade[_0x8f34('0x25')][_0x5e976a][_0x8f34('0xdb')]||undefined,'CampaignId':_0x360ade[_0x8f34('0x25')][_0x5e976a]['CampaignId']||undefined})['catch'](loggerCatch(_0x8f34('0x1f4')));delete _0x360ade[_0x8f34('0x25')][_0x5e976a];});}else{loggerBooked[_0x8f34('0x83')]('[booked][checkContactBlack][else]',JSON[_0x8f34('0x4f')](_0x4ba262[_0x8f34('0x131')]),_0x8f34('0x1f5'),_0x4ba262['name']);_0x360ade[_0x8f34('0xb5')](_0x4ba262);_0x360ade[_0x8f34('0xc6')]({'active':![],'ContactId':_0x360ade[_0x8f34('0x25')][_0x5e976a][_0x8f34('0xd9')],'ListId':_0x360ade[_0x8f34('0x25')][_0x5e976a][_0x8f34('0xda')],'VoiceQueueId':_0x360ade[_0x8f34('0x25')][_0x5e976a][_0x8f34('0xdb')]||undefined,'CampaignId':_0x360ade[_0x8f34('0x25')][_0x5e976a]['CampaignId']||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1f4')));delete _0x360ade[_0x8f34('0x25')][_0x5e976a];}}else{return _0x360ade[_0x8f34('0x178')](_0x4ba262,_0x1a0933);}}else{if(getDiff(_0x1a0933['scheduledat'])<_0x4ba262[_0x8f34('0x1f6')]*0x3c){if(_0x1a0933[_0x8f34('0x165')]&&!_0x1a0933[_0x8f34('0x165')]['voicePause']){_0x360ade[_0x8f34('0x1f')][_0x8f34('0x134')](_0x1a0933['id'])[_0x8f34('0x1e')](function(){_0x360ade[_0x8f34('0xb5')](_0x4ba262);});}else{_0x360ade[_0x8f34('0xc8')]({'active':![]},_0x1a0933['id'],0x1)[_0x8f34('0x1e')](function(){_0x360ade[_0x8f34('0xb5')](_0x4ba262);});}}else{_0x4ba262['outboundReCallsDay']+=0x1;_0x360ade[_0x8f34('0xb5')](_0x4ba262);if(_0x4ba262[_0x8f34('0x1f7')]){_0x360ade[_0x8f34('0xc6')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1a0933['ContactId'],'ListId':_0x1a0933[_0x8f34('0xda')],'VoiceQueueId':_0x1a0933[_0x8f34('0xdb')]||undefined,'CampaignId':_0x1a0933['CampaignId']||undefined})[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1f8')));_0x360ade[_0x8f34('0xd2')](createObjHistory(_0x4ba262,_0x1a0933,_0x8f34('0x1f9'),0x17,'RecallInQueue'))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0x1fa')));}else{_0x360ade[_0x8f34('0xd8')](createObjHistory(_0x4ba262,_0x1a0933,_0x8f34('0x1fb'),0x16,_0x8f34('0x1fc')),_0x8f34('0x1fd'),_0x8f34('0x1fe'));}}}}else{_0x4ba262[_0x8f34('0x65')]+=0x1;_0x360ade[_0x8f34('0xd8')](createObjHistory(_0x4ba262,_0x1a0933,_0x8f34('0x1ff'),0xd,_0x8f34('0x200')),_0x8f34('0x201'),_0x8f34('0x202'));throw'inBlackList';}};};Dialer[_0x8f34('0x1b')][_0x8f34('0x168')]=function(_0x3a3cf1){var _0x3c472b=this;var _0x266fcb=_0x3a3cf1[_0x8f34('0x203')]-_0x3a3cf1[_0x8f34('0x78')]-_0x3a3cf1[_0x8f34('0xca')];emitCampaignSummary(_0x3a3cf1);if(_0x266fcb>0x0){if(_0x266fcb>this[_0x8f34('0x24')]){_0x266fcb=this[_0x8f34('0x24')];}_0x3a3cf1[_0x8f34('0xca')]+=_0x266fcb;this[_0x8f34('0xcc')](_0x3a3cf1['id'],_0x266fcb,_0x3a3cf1[_0x8f34('0x204')],_0x3a3cf1)[_0x8f34('0x41')](function(_0x29daa7){_0x3a3cf1[_0x8f34('0xca')]-=_0x266fcb;_0x3a3cf1[_0x8f34('0xca')]=_0x3a3cf1[_0x8f34('0xca')]>0x0?_0x3a3cf1[_0x8f34('0xca')]:0x0;if(!checkContactEmpty(_0x29daa7)){_0x3a3cf1[_0x8f34('0x44')]=_0x8f34('0xa2');logger[_0x8f34('0x83')](_0x8f34('0x205')+_0x3a3cf1[_0x8f34('0x46')]);}else{_0x3a3cf1['originated']+=_0x29daa7['length'];_0x3a3cf1[_0x8f34('0x44')]='RUNNING';for(var _0x5cd141=0x0;_0x5cd141<_0x29daa7['length'];_0x5cd141+=0x1){_0x3a3cf1['ivrTotalCallsDays']+=0x1;if(_[_0x8f34('0xae')](_0x29daa7[_0x5cd141])||_['isNil'](_0x29daa7[_0x5cd141][_0x8f34('0x192')])||_[_0x8f34('0xae')](_0x29daa7[_0x5cd141]['phone'])){_0x3c472b[_0x8f34('0xd7')](_0x8f34('0x206'),_0x3a3cf1,_0x29daa7[_0x5cd141]);}else{_0x3c472b[_0x8f34('0xc1')](_[_0x8f34('0x13e')](_0x29daa7[_0x5cd141],[_0x8f34('0xdc'),_0x8f34('0x17a')]))['then'](_0x3c472b['checkContactBlack'](_0x3a3cf1,_0x29daa7[_0x5cd141]))[_0x8f34('0xb9')](_0x3c472b['loggerHandler'](_0x8f34('0x207'),_0x3a3cf1));}}}})[_0x8f34('0xb9')](loggerGetContactDialer('[getContactCampaign2]',_0x3a3cf1,_0x266fcb));}};Dialer[_0x8f34('0x1b')][_0x8f34('0x162')]=function(_0x188a22,_0x16278f){var _0x3e2dd2=this;var _0x1516a6=[];var _0x49817b=_0x16278f>=0x1?_0x16278f:0x1;if(_0x188a22['dialMethod']===_0x8f34('0x8')){_0x49817b=0x1;}var _0x195cd7=Math[_0x8f34('0x1d0')](_0x188a22[_0x8f34('0x55')]*_0x49817b)-_0x188a22[_0x8f34('0x78')]-_0x188a22[_0x8f34('0xca')];emitVoiceQueueSummary(_0x188a22);if(_0x188a22['dialLimitQueue']>0x0){var _0x5e3a80=_0x188a22[_0x8f34('0x208')]-_0x188a22['originated']-_0x188a22[_0x8f34('0x59')]-_0x188a22['temp']-_0x188a22[_0x8f34('0x57')];if(_0x195cd7>_0x5e3a80){_0x195cd7=_0x5e3a80;}}if(_0x195cd7>0x0){if(_0x188a22[_0x8f34('0x60')]===_0x8f34('0x8')){_0x195cd7=0x1;}if(_0x195cd7>this[_0x8f34('0x24')]){_0x195cd7=this['maxNumberOriginate'];}_0x188a22[_0x8f34('0xca')]+=_0x195cd7;for(var _0xe58d0f in this[_0x8f34('0x22')]){if(typeof this['agents'][_0xe58d0f]!==_0x8f34('0x9d')){if(this[_0x8f34('0x22')][_0xe58d0f]['state']===_0x8f34('0x209')&&this[_0x8f34('0x22')][_0xe58d0f][_0x8f34('0xe2')]===_0x8f34('0x20a')){_0x1516a6[_0x8f34('0x130')](this[_0x8f34('0x22')][_0xe58d0f]['id']);}}}this[_0x8f34('0xc9')](_0x188a22['id'],_0x1516a6,_0x195cd7,_0x188a22[_0x8f34('0x204')],_0x188a22)[_0x8f34('0x41')](function(_0x10d2ae){_0x188a22[_0x8f34('0xca')]-=_0x195cd7;_0x188a22[_0x8f34('0xca')]=_0x188a22[_0x8f34('0xca')]>0x0?_0x188a22['temp']:0x0;if(!checkContactEmpty(_0x10d2ae)){_0x3e2dd2[_0x8f34('0xb8')](_0x188a22)[_0x8f34('0x41')](sendMessageReschedule(_0x188a22))[_0x8f34('0xb9')](loggerCatch('[countReScheduled]\x20'));}else{_0x188a22['originated']+=_0x10d2ae[_0x8f34('0x9c')];_0x188a22['message']=_0x188a22[_0x8f34('0x60')]==='booked'?'ACTIVE':'RUNNING';for(var _0x24c1b7=0x0;_0x24c1b7<_0x10d2ae[_0x8f34('0x9c')];_0x24c1b7+=0x1){if(_['isNil'](_0x10d2ae[_0x24c1b7])||_['isNil'](_0x10d2ae[_0x24c1b7][_0x8f34('0x192')])||_['isNil'](_0x10d2ae[_0x24c1b7]['phone'])){_0x3e2dd2['emptyContact']('[actionOriginate]\x20',_0x188a22,_0x10d2ae[_0x24c1b7]);}else{_0x3e2dd2[_0x8f34('0xbb')](_[_0x8f34('0x13e')](_0x10d2ae[_0x24c1b7],[_0x8f34('0xdb'),_0x8f34('0x17a')]))[_0x8f34('0x41')](_0x3e2dd2[_0x8f34('0x1ee')](_0x188a22,_0x10d2ae[_0x24c1b7]))[_0x8f34('0xb9')](_0x3e2dd2[_0x8f34('0xd6')](_0x8f34('0x206'),_0x188a22));}}}})[_0x8f34('0xb9')](loggerGetContactDialer(_0x8f34('0x20b'),_0x188a22,_0x195cd7));}};Dialer[_0x8f34('0x1b')][_0x8f34('0x93')]=function(_0x364e5c){if(_0x364e5c[_0x8f34('0x208')]>0x0){var _0xd5cacc=_0x364e5c[_0x8f34('0x208')]-_0x364e5c[_0x8f34('0x78')]-_0x364e5c['talking'];if(_0xd5cacc>0x0){this['tryOriginatePredictive'](_0x364e5c);}else{loggerPredictiveCalls[_0x8f34('0x83')](_0x8f34('0x20c'));}}else{this[_0x8f34('0x20d')](_0x364e5c);}};Dialer[_0x8f34('0x1b')][_0x8f34('0x20d')]=function(_0x132409){var _0x27cc67=this;var _0x5edabf=[];_0x132409[_0x8f34('0x78')]+=0x1;for(var _0x397895 in this[_0x8f34('0x22')]){if(typeof this[_0x8f34('0x22')][_0x397895]!==_0x8f34('0x9d')){if(this['agents'][_0x397895][_0x8f34('0xea')]===_0x8f34('0x209')&&this[_0x8f34('0x22')][_0x397895]['status']===_0x8f34('0x20a')){_0x5edabf[_0x8f34('0x130')](this[_0x8f34('0x22')][_0x397895]['id']);}}}this[_0x8f34('0xc9')](_0x132409['id'],_0x5edabf,0x1,_0x132409[_0x8f34('0x204')],_0x132409)[_0x8f34('0x41')](function(_0x475867){if(!checkContactEmpty(_0x475867)){checkContactLowerLimitOriginate(_0x132409,0x1,0x0);_0x27cc67[_0x8f34('0xb8')](_0x132409)[_0x8f34('0x41')](sendMessageReschedule(_0x132409))[_0x8f34('0xb9')](loggerCatch(_0x8f34('0xba')));}else{_0x132409[_0x8f34('0x44')]='RUNNING';if(_[_0x8f34('0xae')](_0x475867[0x0])||_[_0x8f34('0xae')](_0x475867[0x0][_0x8f34('0x192')])||_[_0x8f34('0xae')](_0x475867[0x0][_0x8f34('0x17a')])){_0x27cc67['emptyContact'](_0x8f34('0x206'),_0x132409,_0x475867[0x0]);}else{_0x27cc67[_0x8f34('0xbb')](_[_0x8f34('0x13e')](_0x475867[0x0],['VoiceQueueId',_0x8f34('0x17a')]))[_0x8f34('0x41')](_0x27cc67['checkContactBlack'](_0x132409,_0x475867[0x0]))['catch'](_0x27cc67[_0x8f34('0xd6')](_0x8f34('0x20e'),_0x132409));}}})['catch'](loggerGetContactDialer('[getContactDialerPredictive]',_0x132409,0x1));emitVoiceQueueSummary(_0x132409);};Dialer[_0x8f34('0x1b')][_0x8f34('0x1e3')]=function(_0x3f89fa,_0x5d9f45,_0x168f02,_0x36ccb6,_0x541066,_0x160bd4){loggerPredictive[_0x8f34('0x83')](_0x8f34('0x20f'));loggerPredictive[_0x8f34('0x83')]('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',_0x3f89fa);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x210'),_0x5d9f45);loggerPredictive['info'](_0x8f34('0x211'),_0x168f02);loggerPredictive['info'](_0x8f34('0x212'),_0x36ccb6);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x541066);loggerPredictive[_0x8f34('0x83')]('---------------------------');return new Promise(function(_0x364072,_0x3b8e62){if(_0x3f89fa<=0x0||isNaN(_0x3f89fa)){return _0x3b8e62(msgResponse(_0x8f34('0x213'),_0x8f34('0x4e'),_0x8f34('0x214')+_0x3f89fa));}if(_0x168f02<=0x0||isNaN(_0x168f02)){return _0x3b8e62(msgResponse(_0x8f34('0x213'),'Error',_0x8f34('0x215')+_0x168f02));}if(_0x36ccb6<=0x0||isNaN(_0x36ccb6)){return _0x3b8e62(msgResponse('[abandonmentRate]',_0x8f34('0x4e'),_0x8f34('0x216')+_0x36ccb6));}if(_0x5d9f45<=0x0||isNaN(_0x5d9f45)){return _0x3b8e62(msgResponse(_0x8f34('0x213'),_0x8f34('0x4e'),_0x8f34('0x217')+_0x5d9f45));}if(_0x541066<=0x0||isNaN(_0x541066)){return _0x3b8e62(msgResponse(_0x8f34('0x213'),_0x8f34('0x4e'),_0x8f34('0x218')+_0x541066));}_0x160bd4=_0x160bd4||0x0;var _0x236d55=0x1/_0x168f02;var _0x3e7fd6=0x0;var _0x3cba0c=0x0;var _0x3bfead=0x0;var _0x7b6127=0x0;for(var _0x3421ea=0x0;_0x3bfead<_0x541066;_0x3421ea+=0x1){_0x3cba0c=_0x3421ea/_0x5d9f45;_0x3e7fd6=(_0x36ccb6*_0x3cba0c+_0x160bd4)/_0x236d55;_0x3bfead=erlangb(_0x3e7fd6,_0x3f89fa);_0x7b6127=_0x3e7fd6/_0x3f89fa*(0x1-erlangb(_0x3e7fd6,_0x3f89fa));}return _0x364072({'erlangCalls':_0x3421ea,'erlangCallToSecond':_0x5d9f45/_0x3421ea,'erlangAbandonmentRate':_0x3bfead,'erlangBusyFactor':_0x7b6127});});};Dialer[_0x8f34('0x1b')][_0x8f34('0x1e5')]=function(_0x33030e,_0x161271,_0x3172f2,_0x59c7ac,_0xfafdf0,_0x50911e){loggerPredictive[_0x8f34('0x83')](_0x8f34('0x219'));loggerPredictive[_0x8f34('0x83')]('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',_0x33030e);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x210'),_0x161271);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',_0x3172f2);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x212'),_0x59c7ac);loggerPredictive[_0x8f34('0x83')](_0x8f34('0x21a'),_0xfafdf0);loggerPredictive['info'](_0x8f34('0x88'));return new Promise(function(_0x19ebbb,_0x4f71cc){if(_0x33030e<=0x0||isNaN(_0x33030e)){return _0x4f71cc(msgResponse(_0x8f34('0x21b'),_0x8f34('0x4e'),'m\x20=\x20'+_0x33030e));}if(_0x3172f2<=0x0||isNaN(_0x3172f2)){return _0x4f71cc(msgResponse(_0x8f34('0x21b'),_0x8f34('0x4e'),_0x8f34('0x215')+_0x3172f2));}if(_0x59c7ac<=0x0||isNaN(_0x59c7ac)){return _0x4f71cc(msgResponse('[busyFactor]',_0x8f34('0x4e'),'p\x20=\x20'+_0x59c7ac));}if(_0x161271<=0x0||isNaN(_0x161271)){return _0x4f71cc(msgResponse(_0x8f34('0x21b'),'Error',_0x8f34('0x217')+_0x161271));}if(_0xfafdf0<=0x0||isNaN(_0xfafdf0)){return _0x4f71cc(msgResponse(_0x8f34('0x21b'),'Error','Umin\x20=\x20'+_0xfafdf0));}_0x50911e=_0x50911e||0x0;var _0x3624ea=0x1/_0x3172f2;var _0xca2da2=0x0;var _0xa2b45b=0x0;var _0x2c172b=0x0;var _0x15091a=0x0;for(var _0x4b9bb2=0x0;_0x15091a<_0xfafdf0;_0x4b9bb2+=0x1){_0xa2b45b=_0x4b9bb2/_0x161271;_0xca2da2=(_0x59c7ac*_0xa2b45b+_0x50911e)/_0x3624ea;_0x2c172b=erlangb(_0xca2da2,_0x33030e);_0x15091a=_0xca2da2/_0x33030e*(0x1-erlangb(_0xca2da2,_0x33030e));}return _0x19ebbb({'erlangCalls':_0x4b9bb2,'erlangCallToSecond':_0x161271/_0x4b9bb2,'erlangAbandonmentRate':_0x2c172b,'erlangBusyFactor':_0x15091a});});};module[_0x8f34('0x21c')]=Dialer;
\ No newline at end of file
+var _0xd0a8=['[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','dropreason','TIMEOUT','dialDropRetryFrequency','voiceQueue','additional','dialDropMaxRetry','[rescheduleContact][Drop]','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','callAdditionalPhoneAfterMin','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','syncNewExten','actionid','roundrobin','paused','stateinterface','locked','pick','queueStatusComplete','[unlockQueueStatus][undefined]','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','resetActiveCalls','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','Failure','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','\x20Timezone\x20unknow\x20','push','iftime\x20%s,%s','timezones','content','indexOf','true','command','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','handlePreviewRecallNotifications','Agent','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','throttle','dialPreviewRecallmeReminder','filter','online','reachable','map','user:%s','syncCampaigns','[syncCampaigns]','pow','replace','random','actionOriginate','object','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','dialQueueProject2','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','xcally-motion-dialer','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','createdAt','updatedAt','toUpper','callerid','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','variables','trim','dialCutDigit','substring','SIP/%s/%s%s','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','reason','NoSuchNumber','nosuchnumber','dialNoSuchNumberRetryFrequency','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','reason\x2011\x20abandoned','AgentReject','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMinThreshold','floor','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','getDataPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[booked][checkContactBlack][else]','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','dialLimitQueue','[actionOriginate]\x20','checkContactBlack','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','getContactDialer','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','Ts\x20=\x20','[abandonmentRate]','p\x20=\x20','Amax\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','interval\x20=\x20','exports','util','lodash','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','../ami','redis','localhost','../rpc/cmHopperHistory','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./action','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','uniqueId','startPredictive','startProgressive','ivrOriginated','queueBooked','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','syncQueueSummary','custom:queuesummarycomplete','syncQueueSummaryComplete','syncHangup','newexten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','name','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','Trunk','active','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','isEmpty','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\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\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','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','debug','inspect','error','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','available','NOT_ACTIVE','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','starttime','clearZombieChannels','[uniqueid]','[actions]','isNil','Action','status','channel','queue','updateOriginated','[Dialer][checkChannel][ivr]','countReScheduled','resolve','catch','[countReScheduled]\x20','then','checkIsBlackList','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','saveInDb','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','unmonitored','variable','amdstatus','exten','dialAMDActive','value','HANGUP','uniqueid','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','outboundAnswerAgiCallsDay','Machine','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','stateGlobal','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countdropretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AGI','outboundUnknownCallsDay','cause-txt','Unknow','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime'];(function(_0x42804f,_0x2bfee7){var _0xd799a5=function(_0xe73653){while(--_0xe73653){_0x42804f['push'](_0x42804f['shift']());}};_0xd799a5(++_0x2bfee7);}(_0xd0a8,0x115));var _0x8d0a=function(_0x471318,_0x45756b){_0x471318=_0x471318-0x0;var _0x55e240=_0xd0a8[_0x471318];return _0x55e240;};'use strict';var util=require(_0x8d0a('0x0'));var _=require(_0x8d0a('0x1'));var uuid=require('uuid');var moment=require(_0x8d0a('0x2'));var rr=require('rr');var md5=require(_0x8d0a('0x3'));var Redis=require(_0x8d0a('0x4'));var ut=require(_0x8d0a('0x5'));var config=require(_0x8d0a('0x6'));var logger=require(_0x8d0a('0x7'))(_0x8d0a('0x8'));var loggerBooked=require(_0x8d0a('0x7'))(_0x8d0a('0x9'));var loggerPredictive=require('../../../config/logger')(_0x8d0a('0xa'));var loggerPredictiveCalls=require(_0x8d0a('0x7'))(_0x8d0a('0xb'));var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require(_0x8d0a('0xc'));config['redis']=_['defaults'](config[_0x8d0a('0xd')],{'host':_0x8d0a('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8d0a('0xd')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x8d0a('0xf'));var cmHopperAdditionalPhone=require(_0x8d0a('0x10'));var cmHopperBlack=require(_0x8d0a('0x11'));var voiceQueueRt=require(_0x8d0a('0x12'));var RpcSetting=require(_0x8d0a('0x13'));var Action=require(_0x8d0a('0x14'));var History=require('./history');var Final=require(_0x8d0a('0x15'));var AgentComplete=require(_0x8d0a('0x16'));var QueueCallerAbandon=require(_0x8d0a('0x17'));var Hangup=require(_0x8d0a('0x18'));var ipAgi=process[_0x8d0a('0x19')][_0x8d0a('0x1a')]||_0x8d0a('0x1b');var strategy={'rrmemory':_0x8d0a('0x1c'),'roundrobin':'roundrobin'};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x8d0a('0x1d')][_0x8d0a('0x1e')]=function(_0x61f64b){this[_0x8d0a('0x1f')]=this['tail']?this[_0x8d0a('0x1f')][_0x8d0a('0x20')](_0x61f64b):_0x61f64b();};function Dialer(_0x564307,_0x365634){this[_0x8d0a('0x21')]=new Sequence();this[_0x8d0a('0x22')]=_0x365634;this[_0x8d0a('0x23')]=_0x564307['voiceQueues'];this['campaigns']=_0x564307[_0x8d0a('0x24')];this[_0x8d0a('0x25')]=_0x564307[_0x8d0a('0x25')];this[_0x8d0a('0x26')]=_0x564307[_0x8d0a('0x26')];this[_0x8d0a('0x27')]=config[_0x8d0a('0x27')]||0x2;this['channels']={};this[_0x8d0a('0x28')]={};this[_0x8d0a('0x29')]={};this[_0x8d0a('0x2a')]={};this['optionPredictive']={};this[_0x8d0a('0x2b')]={};this[_0x8d0a('0x2c')]={};this[_0x8d0a('0x2d')]={};this[_0x8d0a('0x2e')]={};this['queueBookedRR']={};ami['on']('agentconnect',this[_0x8d0a('0x2f')]['bind'](this));ami['on'](_0x8d0a('0x30'),this[_0x8d0a('0x31')][_0x8d0a('0x32')](this));ami['on']('originateresponse',this[_0x8d0a('0x33')][_0x8d0a('0x32')](this));ami['on'](_0x8d0a('0x34'),this[_0x8d0a('0x35')][_0x8d0a('0x32')](this));ami['on'](_0x8d0a('0x36'),this[_0x8d0a('0x37')][_0x8d0a('0x32')](this));ami['on'](_0x8d0a('0x38'),this[_0x8d0a('0x39')][_0x8d0a('0x32')](this));ami['on']('hangup',this[_0x8d0a('0x3a')]['bind'](this));ami['on'](_0x8d0a('0x3b'),this['syncNewExten'][_0x8d0a('0x32')](this));ami['on'](_0x8d0a('0x3c'),this[_0x8d0a('0x3d')]['bind'](this));ami['on'](_0x8d0a('0x3e'),this[_0x8d0a('0x3f')][_0x8d0a('0x32')](this));ami['on'](_0x8d0a('0x40'),this[_0x8d0a('0x41')][_0x8d0a('0x32')](this));this[_0x8d0a('0x42')]();this[_0x8d0a('0x43')]();RpcSetting[_0x8d0a('0x44')]()['then'](function(_0x2dd5d3){previewRecallmeReminderInterval=_0x2dd5d3[_0x8d0a('0x45')];});}function isNotNull(_0x427d22){return _0x427d22!==null&&!_[_0x8d0a('0x46')](_0x427d22);}function checkIsLoggedIn(_0x501d8a,_0x1e7a35){return function(){if(_0x1e7a35<=0x0){_0x501d8a[_0x8d0a('0x47')]=_0x8d0a('0x48');throw _0x501d8a['name']+_0x8d0a('0x49');}};}function isActive(_0x423d15){return _0x423d15;}function checkIsActive(_0x55ed55,_0x4e3366){return function(){if(!isActive(_0x4e3366)){_0x55ed55['message']='NOT_ACTIVE';throw _0x55ed55[_0x8d0a('0x4a')]+'\x20NOT\x20Active';}};}function checkInterval(_0x5f58ac){return function(){if(!isNotNull(_0x5f58ac['Interval'])){_0x5f58ac[_0x8d0a('0x47')]=_0x8d0a('0x4b');throw _0x5f58ac['name']+_0x8d0a('0x4c');}if(!isNotNull(_0x5f58ac[_0x8d0a('0x4d')][_0x8d0a('0x4e')])){_0x5f58ac['message']=_0x8d0a('0x4b');throw _0x5f58ac[_0x8d0a('0x4a')]+_0x8d0a('0x4c');}if(!isNotNull(_['isEmpty'](_0x5f58ac[_0x8d0a('0x4d')][_0x8d0a('0x4e')]))){_0x5f58ac[_0x8d0a('0x47')]='INTERVAL_IS_NULL';throw _0x5f58ac['name']+_0x8d0a('0x4c');}};}function msgResponse(_0xb7e37b,_0x52e307,_0x2acc1d){return{'action':_0xb7e37b,'response':_0x52e307,'message':_0x2acc1d,'stack':_0x2acc1d};}function myreject(_0x3f73c1){return function(_0x530889){return _0x3f73c1(msgResponse(_0x8d0a('0x4f'),_0x8d0a('0x50'),JSON[_0x8d0a('0x51')](_0x530889)));};}function getSeconds(_0x16262d,_0x31f3c9){var _0x56e9f0=moment(_0x16262d)[_0x8d0a('0x52')](0x0);var _0x138764=moment(_0x31f3c9)['milliseconds'](0x0);return _0x56e9f0[_0x8d0a('0x53')](_0x138764,_0x8d0a('0x54'));}function emit(_0x40ba6c,_0x738f88,_0x1de608){io['to'](_0x40ba6c)[_0x8d0a('0x55')](_0x738f88,_0x1de608);}function emitVoiceQueueSummary(_0x25f20b){if(_0x25f20b[_0x8d0a('0x56')]===_0x8d0a('0x57')){var _0xc75823={'id':_0x25f20b['id'],'name':_0x25f20b['name'],'strategy':_0x25f20b[_0x8d0a('0x58')],'answered':_0x25f20b[_0x8d0a('0x59')],'available':_0x25f20b['available'],'loggedIn':_0x25f20b[_0x8d0a('0x5a')],'pTalking':_0x25f20b[_0x8d0a('0x5b')],'sumBillable':_0x25f20b[_0x8d0a('0x5c')],'sumDuration':_0x25f20b[_0x8d0a('0x5d')],'sumHoldTime':_0x25f20b[_0x8d0a('0x5e')]||0x0,'talking':_0x25f20b[_0x8d0a('0x5f')],'total':_0x25f20b['total'],'type':_0x25f20b[_0x8d0a('0x56')],'unmanaged':_0x25f20b[_0x8d0a('0x60')],'abandoned':_0x25f20b[_0x8d0a('0x61')],'waiting':_0x25f20b['waiting'],'loggedInDb':_0x25f20b[_0x8d0a('0x62')],'dialActive':_0x25f20b[_0x8d0a('0x63')],'dialMethod':_0x25f20b[_0x8d0a('0x64')],'dialOriginateCallerIdName':_0x25f20b[_0x8d0a('0x65')],'dialOriginateCallerIdNumber':_0x25f20b['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x25f20b[_0x8d0a('0x66')],'dialPrefix':_0x25f20b[_0x8d0a('0x67')],'outboundAnswerAgiCallsDay':_0x25f20b['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x25f20b[_0x8d0a('0x68')],'outboundBlacklistCallsDay':_0x25f20b[_0x8d0a('0x69')],'outboundBusyCallsDay':_0x25f20b['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x25f20b['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x25f20b[_0x8d0a('0x6a')],'outboundDropCallsDayCallersExit':_0x25f20b['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x25f20b['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x25f20b[_0x8d0a('0x6b')],'outboundNoSuchCallsDay':_0x25f20b[_0x8d0a('0x6c')],'outboundOriginateFailureCallsDay':_0x25f20b[_0x8d0a('0x6d')],'outboundReCallsDay':_0x25f20b[_0x8d0a('0x6e')],'outboundRejectCallsDay':_0x25f20b[_0x8d0a('0x6f')],'outboundUnknownCallsDay':_0x25f20b['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x25f20b[_0x8d0a('0x70')],'predictiveIntervalAvgHoldtime':_0x25f20b[_0x8d0a('0x71')],'predictiveIntervalAvgTalktime':_0x25f20b['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x25f20b[_0x8d0a('0x72')],'predictiveIntervalDroppedCallsTimeout':_0x25f20b[_0x8d0a('0x73')],'predictiveIntervalErlangCalls':_0x25f20b[_0x8d0a('0x74')],'predictiveIntervalErlangCallsDroppedCalls':_0x25f20b[_0x8d0a('0x75')],'predictiveIntervalHitRate':_0x25f20b[_0x8d0a('0x76')],'predictiveIntervalMultiplicativeFactor':_0x25f20b[_0x8d0a('0x77')],'predictiveIntervalPauses':_0x25f20b['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x25f20b['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x25f20b['predictiveIntervalTotalCalls'],'message':_0x25f20b[_0x8d0a('0x47')],'originated':_0x25f20b[_0x8d0a('0x78')],'erlangCalls':_0x25f20b[_0x8d0a('0x79')],'erlangCallToSecond':_0x25f20b[_0x8d0a('0x7a')],'erlangAbandonmentRate':_0x25f20b['erlangAbandonmentRate'],'erlangBusyFactor':_0x25f20b[_0x8d0a('0x7b')],'startPredictive':_0x25f20b[_0x8d0a('0x2b')],'startProgressive':_0x25f20b[_0x8d0a('0x2c')]};if(_0x25f20b[_0x8d0a('0x7c')]){_0xc75823[_0x8d0a('0x7c')]={'id':_0x25f20b[_0x8d0a('0x7c')]['id'],'name':_0x25f20b[_0x8d0a('0x7c')][_0x8d0a('0x4a')],'active':_0x25f20b[_0x8d0a('0x7c')][_0x8d0a('0x7d')],'callerid':_0x25f20b[_0x8d0a('0x7c')]['callerid']};}if(_0x25f20b[_0x8d0a('0x4d')]){_0xc75823[_0x8d0a('0x4d')]={'id':_0x25f20b['Interval']['id'],'name':_0x25f20b['Interval'][_0x8d0a('0x4a')]};}var _0x209f14=md5(JSON['stringify'](_0xc75823));if(_0x25f20b[_0x8d0a('0x3')]!==_0x209f14){_0x25f20b[_0x8d0a('0x3')]=_0x209f14;emit(util[_0x8d0a('0x7e')](_0x8d0a('0x7f'),_0xc75823[_0x8d0a('0x4a')]),_0x8d0a('0x80'),_0xc75823);}}}function emitCampaignSummary(_0x56dd5a){if(_0x56dd5a[_0x8d0a('0x56')]===_0x8d0a('0x81')){emit(util[_0x8d0a('0x7e')](_0x8d0a('0x82'),_0x56dd5a[_0x8d0a('0x4a')]),'campaign:save',_0x56dd5a);}}function checkGetDataPredictive(_0x1b00f7){if(isNotNull(_0x1b00f7)&&!_[_0x8d0a('0x83')](_0x1b00f7)){loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x85'));loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x86'),_0x1b00f7[_0x8d0a('0x87')]);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x88'),_0x1b00f7[_0x8d0a('0x70')]);loggerPredictive[_0x8d0a('0x84')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1b00f7[_0x8d0a('0x73')]);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x89'),_0x1b00f7[_0x8d0a('0x72')]);loggerPredictive['info'](_0x8d0a('0x8a'),_0x1b00f7[_0x8d0a('0x71')]);loggerPredictive[_0x8d0a('0x84')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1b00f7[_0x8d0a('0x8b')]);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x8c'));if(_0x1b00f7['predictiveIntervalTotalCalls']>0x0){if(!_[_0x8d0a('0x46')](_0x1b00f7[_0x8d0a('0x8b')])&&_0x1b00f7['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x8d'));if(!_[_0x8d0a('0x46')](_0x1b00f7[_0x8d0a('0x71')])&&_0x1b00f7[_0x8d0a('0x71')]>0x0){return!![];}loggerPredictive['info'](_0x8d0a('0x8e'));}else{loggerPredictive['info'](_0x8d0a('0x8f'));}}else{loggerPredictive['info'](_0x8d0a('0x90'));}return![];}function mergeDataErlangB(_0x480e9e){return function(_0x22cd93){loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x91'));loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x92'),_0x22cd93[_0x8d0a('0x79')]);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x93'),_0x22cd93[_0x8d0a('0x7a')]);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x94'),_0x22cd93[_0x8d0a('0x95')]);loggerPredictive['info'](_0x8d0a('0x96'),_0x22cd93['erlangBusyFactor']);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x94'),_0x22cd93[_0x8d0a('0x95')]);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x8c'));_[_0x8d0a('0x97')](_0x480e9e,_0x22cd93);};}function getDiff(_0x4290d1){var _0xa39672=moment()[_0x8d0a('0x52')](0x0);var _0x466b27=moment(_0x4290d1)[_0x8d0a('0x52')](0x0);return _0xa39672[_0x8d0a('0x53')](_0x466b27,'seconds');}function ifInterval(_0x636f5d,_0x1c020e){if(_[_0x8d0a('0x46')](_0x1c020e)){return![];}return getDiff(_0x1c020e)<_0x636f5d*0x3c;}function freeVariablesPredictive(_0x5c91f4){if(isNotNull(_0x5c91f4)){if(!_['isUndefined'](_0x5c91f4[_0x8d0a('0x2c')])){_0x5c91f4[_0x8d0a('0x2c')]=undefined;loggerPredictive[_0x8d0a('0x84')](_0x5c91f4[_0x8d0a('0x4a')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x8d0a('0x46')](_0x5c91f4[_0x8d0a('0x2b')])){_0x5c91f4[_0x8d0a('0x2b')]=undefined;loggerPredictive[_0x8d0a('0x84')](_0x5c91f4[_0x8d0a('0x4a')],_0x8d0a('0x98'));}if(!_['isUndefined'](_0x5c91f4[_0x8d0a('0x99')])){clearInterval(_0x5c91f4[_0x8d0a('0x99')]);_0x5c91f4[_0x8d0a('0x99')]=undefined;loggerPredictive[_0x8d0a('0x84')](_0x5c91f4[_0x8d0a('0x4a')],_0x8d0a('0x9a'));}}}function erlangb(_0x214077,_0x53a2fe){if(_0x53a2fe===0x0){return 0x0;}var _0x20495c=0x1;for(var _0x4a152d=0x1;_0x4a152d<=_0x53a2fe;_0x4a152d+=0x1){_0x20495c=0x1+_0x20495c*_0x4a152d/_0x214077;}return 0x1/_0x20495c;}function isVoiceQueueOutbound(_0x2e24a1){return _0x2e24a1===_0x8d0a('0x57');}function isNotPreview(_0x2e480b){return _0x2e480b!==_0x8d0a('0x22');}function isCampaignIvr(_0x2c30b8){return _0x2c30b8===_0x8d0a('0x81');}function getCallerId(_0x400d5e,_0x5edfc7,_0x2f8bd5){if(!_[_0x8d0a('0x46')](_0x2f8bd5)&&typeof _0x2f8bd5===_0x8d0a('0x9b')&&!_[_0x8d0a('0x83')](_0x2f8bd5)){if(!_[_0x8d0a('0x46')](_0x5edfc7)&&typeof _0x5edfc7===_0x8d0a('0x9b')&&!_[_0x8d0a('0x83')](_0x5edfc7)){return util[_0x8d0a('0x7e')](_0x8d0a('0x9c'),_0x5edfc7,_0x2f8bd5);}return util[_0x8d0a('0x7e')](_0x8d0a('0x9c'),_0x2f8bd5,_0x2f8bd5);}if(!_['isUndefined'](_0x400d5e)&&typeof _0x400d5e===_0x8d0a('0x9b')&&!_['isEmpty'](_0x400d5e)){return _0x400d5e;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x1bf1a6,_0x231190){return function(_0x58de64){freeVariablesPredictive(_0x231190);emitVoiceQueueSummary(_0x231190);emitCampaignSummary(_0x231190);loggerSyncQueueSummary[_0x8d0a('0x9d')](_0x1bf1a6,util[_0x8d0a('0x9e')](_0x58de64,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x326ee8,_0x21d801){return function(_0x151c4f){loggerPredictive[_0x8d0a('0x9f')](_0x21d801[_0x8d0a('0x4a')],_0x326ee8);loggerPredictive['error'](_0x151c4f['stack']);freeVariablesPredictive(_0x21d801);};}function loggerCatch(_0x203200){return function(_0x522215){logger[_0x8d0a('0x9f')](_0x203200,util['inspect'](_0x522215,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x8bd0b1){return _0x8bd0b1&&!_[_0x8d0a('0x46')](_0x8bd0b1)&&_0x8bd0b1[_0x8d0a('0xa0')]>0x0;}function decremetOriginate(_0x39d6e3){if(!_[_0x8d0a('0x46')](_0x39d6e3)&&_0x39d6e3!==null){if(typeof _0x39d6e3['originated']!==_0x8d0a('0xa1')){if(_0x39d6e3['originated']>0x0){_0x39d6e3['originated']-=0x1;}else{logger[_0x8d0a('0x9f')](_0x8d0a('0xa2'));}}}else{logger['error']('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x54327a,_0x1256e2,_0x1fd9c8){if(_0x1256e2>_0x1fd9c8){for(var _0x497979=0x0;_0x497979<_0x1256e2-_0x1fd9c8;_0x497979+=0x1){decremetOriginate(_0x54327a);}}}function loggerGetContactDialer(_0x2be072,_0x378260,_0x1a5a8b){return function(_0x5d9593){checkContactLowerLimitOriginate(_0x378260,_0x1a5a8b,0x0);logger[_0x8d0a('0x9f')](_0x2be072,util[_0x8d0a('0x9e')](_0x5d9593,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x5a3342){return function(_0x3cb60b){if(isNotNull(_0x3cb60b)&&isNotNull(_0x3cb60b[0x0])){if(_0x3cb60b[0x0][_0x8d0a('0xa3')]>0x0){_0x5a3342[_0x8d0a('0x47')]=_0x8d0a('0xa4');logger['info'](_0x8d0a('0xa5')+_0x5a3342[_0x8d0a('0x4a')],_0x3cb60b[0x0][_0x8d0a('0xa3')],_0x8d0a('0xa6'));}else{_0x5a3342['message']=_0x8d0a('0xa7');logger[_0x8d0a('0x84')](_0x8d0a('0xa8')+_0x5a3342[_0x8d0a('0x4a')]);}}};}function notSendMessagesQueue(_0x22aaf3){if(_0x22aaf3[_0x8d0a('0xa9')]){freeVariablesPredictive(_0x22aaf3);if(_0x22aaf3[_0x8d0a('0x78')]===0x0&&_0x22aaf3[_0x8d0a('0x5f')]===0x0&&_0x22aaf3['waiting']===0x0&&(_0x22aaf3[_0x8d0a('0x5b')]||0x0)===0x0){_0x22aaf3[_0x8d0a('0xa9')]=![];_0x22aaf3[_0x8d0a('0xaa')]=0x0;_0x22aaf3[_0x8d0a('0x47')]=_0x8d0a('0xab');loggerSyncQueueSummary[_0x8d0a('0x9d')](_0x8d0a('0xac'),_0x22aaf3[_0x8d0a('0x4a')],_0x8d0a('0xad'));}else{_0x22aaf3[_0x8d0a('0x47')]=_0x8d0a('0xae');loggerSyncQueueSummary[_0x8d0a('0x9d')](_0x8d0a('0xac'),_0x22aaf3[_0x8d0a('0x4a')],'is\x20disactive');}emitVoiceQueueSummary(_0x22aaf3);}}function notSendMessagesCampaign(_0x1f4778){if(_0x1f4778['sendMessageOneNotActive']){if(_0x1f4778[_0x8d0a('0x78')]===0x0){_0x1f4778['sendMessageOneNotActive']=![];_0x1f4778['message']=_0x8d0a('0xab');loggerSyncQueueSummary['debug'](_0x8d0a('0xaf'),_0x1f4778['name'],_0x8d0a('0xad'));}else{_0x1f4778[_0x8d0a('0x47')]=_0x8d0a('0xae');loggerSyncQueueSummary[_0x8d0a('0x9d')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x1f4778[_0x8d0a('0x4a')],_0x8d0a('0xb0'));}emitCampaignSummary(_0x1f4778);}}function createObjHistory(_0x52372c,_0x543459,_0x5e8331,_0x14a1fb,_0x542d63){_0x52372c[_0x8d0a('0x47')]=_0x5e8331;var _0x3d1587=new Action(_0x52372c,_0x543459);var _0x10db77=new History(_0x3d1587);_0x10db77[_0x8d0a('0xb1')]=_0x14a1fb;_0x10db77[_0x8d0a('0xb2')]=_0x542d63;_0x10db77['endtime']=_0x3d1587[_0x8d0a('0xb3')];return _0x10db77;}Dialer['prototype']['loopClearZombieChannels']=function(){var _0x596f81=this;setInterval(function(){_0x596f81[_0x8d0a('0xb4')](_0x596f81[_0x8d0a('0x2a')],_0x8d0a('0xb5'));_0x596f81[_0x8d0a('0xb4')](_0x596f81[_0x8d0a('0x28')],_0x8d0a('0xb6'));},0x32c8);};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xb4')]=function(_0x186f8e,_0x2387ff){var _0x451ea6=this;for(var _0x2c950d in _0x186f8e){if(typeof _0x186f8e[_0x2c950d]!==_0x8d0a('0xa1')){this[_0x8d0a('0x21')][_0x8d0a('0x1e')](function(){if(!_[_0x8d0a('0xb7')](_0x186f8e[_0x2c950d])){return ami[_0x8d0a('0xb8')]({'action':_0x8d0a('0xb9'),'channel':_0x186f8e[_0x2c950d][_0x8d0a('0xba')]})['catch'](function(_0x4858bc){if(_0x4858bc[_0x8d0a('0x47')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x186f8e[_0x2c950d]&&_0x186f8e[_0x2c950d][_0x8d0a('0x56')]!==_0x8d0a('0x81')){_0x451ea6['updateOriginated'](_0x451ea6[_0x8d0a('0x23')][_0x186f8e[_0x2c950d][_0x8d0a('0xbb')]]);logger[_0x8d0a('0x9f')]('[Dialer][checkChannel]',_0x2387ff,_0x2c950d,_0x186f8e[_0x2c950d][_0x8d0a('0xbb')]);delete _0x186f8e[_0x2c950d];}if(_0x186f8e[_0x2c950d]&&_0x186f8e[_0x2c950d][_0x8d0a('0x56')]===_0x8d0a('0x81')){_0x451ea6[_0x8d0a('0xbc')](_0x451ea6[_0x8d0a('0x24')][_0x186f8e[_0x2c950d][_0x8d0a('0xbb')]]);logger[_0x8d0a('0x9f')](_0x8d0a('0xbd'),_0x2387ff,_0x2c950d,_0x186f8e[_0x2c950d][_0x8d0a('0xbb')]);delete _0x186f8e[_0x2c950d];}},0x2328);}});}});}}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xbe')]=function(_0x178a0f){return Promise[_0x8d0a('0xbf')]()['then'](cmHopper['countReScheduled'](_0x178a0f))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xc1')));};Dialer[_0x8d0a('0x1d')]['checkIsBlackList']=function(_0x179c58){return Promise['resolve']()[_0x8d0a('0xc2')](cmHopperBlack[_0x8d0a('0xc3')](_0x179c58))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xc4')));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xc5')]=function(_0x5151ac,_0x14d426,_0x260de4){return Promise[_0x8d0a('0xbf')]()[_0x8d0a('0xc2')](cmHopperAdditionalPhone[_0x8d0a('0xc5')](_0x5151ac,_0x14d426,_0x260de4))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xc6')));};Dialer['prototype'][_0x8d0a('0xc7')]=function(_0x1853a4,_0x40673f,_0x5d71c5){return Promise[_0x8d0a('0xbf')]()[_0x8d0a('0xc2')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x1853a4,_0x40673f,_0x5d71c5))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xc8')));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xc9')]=function(_0x5b4a7e){return Promise[_0x8d0a('0xbf')]()['then'](cmHopperBlack[_0x8d0a('0xc9')](_0x5b4a7e))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xca')));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xcb')]=function(_0x438e06){return Promise['resolve']()[_0x8d0a('0xc2')](cmHopperHistory[_0x8d0a('0xcc')](_0x438e06))[_0x8d0a('0xc0')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xcd')]=function(_0x124e85){return Promise[_0x8d0a('0xbf')]()[_0x8d0a('0xc2')](cmHopper[_0x8d0a('0xcd')](_0x124e85))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xce')));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xcf')]=function(_0x30931c,_0x1257d3,_0x3b4ac5){return Promise[_0x8d0a('0xbf')]()['then'](cmHopper[_0x8d0a('0xcf')](_0x30931c,_0x1257d3,_0x3b4ac5))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xd0')));};Dialer[_0x8d0a('0x1d')]['getContactDialer']=function(_0x3274c6,_0x3b3410,_0x5ea1d4,_0x3512ef,_0x15dfd1){return Promise[_0x8d0a('0xbf')]()[_0x8d0a('0xc2')](cmHopper['getContactDialer'](_0x3274c6,_0x3b3410,_0x5ea1d4,_0x3512ef))[_0x8d0a('0xc0')](function(_0x3ad6f4){_0x15dfd1['temp']-=_0x5ea1d4;_0x15dfd1[_0x8d0a('0xd1')]=_0x15dfd1[_0x8d0a('0xd1')]>0x0?_0x15dfd1['temp']:0x0;loggerCatch(_0x8d0a('0xd2'))(_0x3ad6f4);});};Dialer[_0x8d0a('0x1d')]['getContactDialerIvr']=function(_0x508dfd,_0x52215d,_0x1aebf3,_0x4296e2){return Promise[_0x8d0a('0xbf')]()['then'](cmHopper[_0x8d0a('0xd3')](_0x508dfd,_0x52215d,_0x1aebf3))[_0x8d0a('0xc0')](function(_0x10eb29){_0x4296e2['temp']-=_0x52215d;_0x4296e2['temp']=_0x4296e2[_0x8d0a('0xd1')]>0x0?_0x4296e2['temp']:0x0;loggerCatch(_0x8d0a('0xd4'))(_0x10eb29);});};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xd5')]=function(_0x138191){return Promise[_0x8d0a('0xbf')]()['then'](voiceQueueRt[_0x8d0a('0xd5')](_0x138191))[_0x8d0a('0xc0')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xd6')]=function(_0x3b8571){return Promise[_0x8d0a('0xbf')]()[_0x8d0a('0xc2')](cmHopper['moveContactManagedDialer'](_0x3b8571))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xd7')));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xd8')]=function(_0x2ade0e){return Promise[_0x8d0a('0xbf')]()['then'](cmHopperHistory[_0x8d0a('0xd8')](_0x2ade0e))['catch'](loggerCatch(_0x8d0a('0xd9')));};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xbc')]=function(_0x4ddb46){if(!_[_0x8d0a('0x46')](_0x4ddb46)&&_0x4ddb46!==null){if(typeof _0x4ddb46[_0x8d0a('0x78')]!==_0x8d0a('0xa1')){if(_0x4ddb46[_0x8d0a('0x78')]>0x0){_0x4ddb46['originated']-=0x1;}else{logger[_0x8d0a('0x9f')](_0x8d0a('0xda'));}}}else{logger[_0x8d0a('0x9f')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer['prototype'][_0x8d0a('0xdb')]=function(_0x5a2357,_0x47490a){var _0x4e3cba=this;return function(_0x52e209){_0x4e3cba['updateOriginated'](_0x47490a);logger[_0x8d0a('0x9f')](_0x5a2357,util['inspect'](_0x52e209,{'showHidden':![],'depth':null}));};};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xdc')]=function(_0x1b7285,_0x4523ce,_0x2f61bb){var _0x44aa1f={'state':0x19,'statedesc':'notFound'};this[_0x8d0a('0xbc')](_0x4523ce);this[_0x8d0a('0xdd')](_[_0x8d0a('0x97')](_0x44aa1f,_['pick'](_0x2f61bb,['ContactId',_0x8d0a('0xde'),_0x8d0a('0xdf'),_0x8d0a('0xe0'),_0x8d0a('0xe1')])),_0x8d0a('0xe2'),_0x8d0a('0xe3'));logger['error'](_0x1b7285);};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xe4')]=function(_0x4274c8){return _0x4274c8===_0x8d0a('0xe5');};Dialer[_0x8d0a('0x1d')][_0x8d0a('0xe6')]=function(_0x3e9edf){return!_[_0x8d0a('0x46')](_0x3e9edf)&&_0x3e9edf&&!_[_0x8d0a('0x46')](_0x3e9edf[_0x8d0a('0x4a')])&&!_[_0x8d0a('0x46')](_0x3e9edf[_0x8d0a('0x7d')])&&_0x3e9edf[_0x8d0a('0x7d')]&&(this[_0x8d0a('0x26')][util[_0x8d0a('0x7e')](_0x8d0a('0xe7'),_0x3e9edf['name'])][_0x8d0a('0xb9')]==='reachable'||this[_0x8d0a('0x26')][util[_0x8d0a('0x7e')](_0x8d0a('0xe7'),_0x3e9edf[_0x8d0a('0x4a')])][_0x8d0a('0xb9')]===_0x8d0a('0xe8'));};Dialer['prototype'][_0x8d0a('0xdd')]=function(_0x5c14ec,_0x492aef,_0x26f08a){this[_0x8d0a('0xd8')](_0x5c14ec)[_0x8d0a('0xc0')](loggerCatch(_0x492aef));this[_0x8d0a('0xd6')](_0x5c14ec)['catch'](loggerCatch(_0x26f08a));};Dialer[_0x8d0a('0x1d')]['syncVarSet']=function(_0x2e875a){var _0x3fe7ca=this;var _0x4df8dd=this[_0x8d0a('0x2a')][_0x2e875a['uniqueid']];var _0x1c97b8;if(!_['isNil'](_0x2e875a)&&!_['isNil'](_0x2e875a[_0x8d0a('0xe9')])&&!_['isNil'](_0x2e875a[_0x8d0a('0xe9')][_0x8d0a('0xea')])&&_0x2e875a[_0x8d0a('0xeb')]==='xcally-motion-dialer'&&_0x4df8dd){if(_0x4df8dd['type']!==_0x8d0a('0x81')&&this[_0x8d0a('0x23')][_0x4df8dd['queue']][_0x8d0a('0xec')]&&_0x2e875a[_0x8d0a('0xed')]===_0x8d0a('0xee')){delete this[_0x8d0a('0x2a')][_0x2e875a[_0x8d0a('0xef')]];this[_0x8d0a('0xbc')](this['voiceQueues'][_0x4df8dd[_0x8d0a('0xbb')]]);this['voiceQueues'][_0x4df8dd['queue']][_0x8d0a('0x68')]+=0x1;this['voiceQueues'][_0x4df8dd[_0x8d0a('0xbb')]]['outboundAnswerAgiCallsDay']+=0x1;_0x1c97b8=new Hangup(_0x4df8dd,_0x2e875a);_0x1c97b8[_0x8d0a('0xb1')]=0x12;_0x1c97b8[_0x8d0a('0xb2')]=_0x8d0a('0xf0');_0x1c97b8[_0x8d0a('0xf1')]=_0x8d0a('0xf2');ami[_0x8d0a('0x55')](_0x8d0a('0xf3'),ut[_0x8d0a('0xf4')](_0x1c97b8,_0x8d0a('0xf5')));this['saveInDb'](_0x1c97b8,_0x8d0a('0xf6'),_0x8d0a('0xf7'));}if(_0x4df8dd[_0x8d0a('0x56')]!=='ivr'&&this[_0x8d0a('0x23')][_0x4df8dd[_0x8d0a('0xbb')]][_0x8d0a('0xec')]&&_0x2e875a[_0x8d0a('0xed')]==='MACHINE'){return new Promise(function(_0x52b58b,_0x3718a0){delete _0x3fe7ca[_0x8d0a('0x2a')][_0x2e875a[_0x8d0a('0xef')]];_0x3fe7ca[_0x8d0a('0xbc')](_0x3fe7ca[_0x8d0a('0x23')][_0x4df8dd['queue']]);_0x3fe7ca[_0x8d0a('0x23')][_0x4df8dd[_0x8d0a('0xbb')]][_0x8d0a('0x68')]+=0x1;_0x3fe7ca[_0x8d0a('0x23')][_0x4df8dd[_0x8d0a('0xbb')]][_0x8d0a('0xf8')]+=0x1;var _0x3f74d0=_0x3fe7ca[_0x8d0a('0x23')][_0x4df8dd[_0x8d0a('0xbb')]];var _0xf268fe=new Hangup(_0x4df8dd,_0x2e875a);_0xf268fe[_0x8d0a('0xb1')]=0x13;_0xf268fe[_0x8d0a('0xb2')]=_0x8d0a('0xf9');_0xf268fe[_0x8d0a('0xf1')]=_0x8d0a('0xf2');_0xf268fe['countmachineretry']+=0x1;_0xf268fe[_0x8d0a('0xfa')]+=0x1;_0xf268fe[_0x8d0a('0xf5')]=!![];ami['emit'](_0x8d0a('0xf3'),ut[_0x8d0a('0xf4')](_0xf268fe,'amd'));_0x3fe7ca[_0x8d0a('0xd8')](_0xf268fe)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xfb')));if(_0xf268fe[_0x8d0a('0xfc')]+_0xf268fe[_0x8d0a('0xfd')]+_0xf268fe[_0x8d0a('0xfe')]+_0xf268fe[_0x8d0a('0xff')]+_0xf268fe['countdropretry']+_0xf268fe[_0x8d0a('0x100')]+_0xf268fe[_0x8d0a('0x101')]+_0xf268fe['countagentrejectretry']>=_0x3f74d0['dialGlobalMaxRetry']){_0x3fe7ca[_0x8d0a('0x102')](_0xf268fe,_0x52b58b,_0x3718a0,'reason19\x20machine....');}else{if(_0xf268fe[_0x8d0a('0x101')]>=_0x3f74d0[_0x8d0a('0x103')]){_0x3fe7ca[_0x8d0a('0x104')](_0xf268fe,_0x52b58b,_0x3718a0,_0x8d0a('0x105'));}else{_0x3fe7ca[_0x8d0a('0xcd')]({'active':![],'countmachineretry':_0xf268fe['countmachineretry'],'scheduledat':moment()[_0x8d0a('0x106')](_0x3f74d0[_0x8d0a('0x107')],_0x8d0a('0x108'))[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0xf268fe[_0x8d0a('0x10a')],'ListId':_0xf268fe[_0x8d0a('0xde')],'VoiceQueueId':_0xf268fe[_0x8d0a('0xe0')]||undefined,'CampaignId':_0xf268fe['CampaignId']||undefined})[_0x8d0a('0xc0')](loggerCatch('[rescheduleContact][Machine]'));_0x52b58b({'reschedule':0x1});}}});}if(_0x4df8dd[_0x8d0a('0x56')]===_0x8d0a('0x81')&&this[_0x8d0a('0x24')][_0x4df8dd['queue']]['dialAMDActive']&&_0x2e875a[_0x8d0a('0xed')]==='HANGUP'){delete this[_0x8d0a('0x2a')][_0x2e875a['uniqueid']];this[_0x8d0a('0xbc')](this[_0x8d0a('0x24')][_0x4df8dd['queue']]);_0x1c97b8=new Hangup(_0x4df8dd,_0x2e875a);_0x1c97b8[_0x8d0a('0xb1')]=0x12;_0x1c97b8[_0x8d0a('0xb2')]=_0x8d0a('0xf0');_0x1c97b8['membername']=_0x8d0a('0xf2');ami[_0x8d0a('0x55')](_0x8d0a('0xf3'),ut['buildObj'](_0x1c97b8,_0x8d0a('0xf5')));this[_0x8d0a('0xdd')](_0x1c97b8,_0x8d0a('0x10b'),_0x8d0a('0x10c'));}if(_0x4df8dd['type']===_0x8d0a('0x81')&&this['campaigns'][_0x4df8dd[_0x8d0a('0xbb')]][_0x8d0a('0xec')]&&_0x2e875a[_0x8d0a('0xed')]==='MACHINE'){return new Promise(function(_0x2bda65,_0x375607){delete _0x3fe7ca['uniqueId'][_0x2e875a[_0x8d0a('0xef')]];_0x3fe7ca[_0x8d0a('0xbc')](_0x3fe7ca['campaigns'][_0x4df8dd['queue']]);_0x3fe7ca[_0x8d0a('0x24')][_0x4df8dd[_0x8d0a('0xbb')]][_0x8d0a('0x68')]+=0x1;_0x3fe7ca[_0x8d0a('0x24')][_0x4df8dd[_0x8d0a('0xbb')]][_0x8d0a('0xf8')]+=0x1;var _0x591ae1=_0x3fe7ca[_0x8d0a('0x24')][_0x4df8dd[_0x8d0a('0xbb')]];var _0x982d8b=new Hangup(_0x4df8dd,_0x2e875a);_0x982d8b[_0x8d0a('0xb1')]=0x13;_0x982d8b[_0x8d0a('0xb2')]='Machine';_0x982d8b['membername']=_0x8d0a('0xf2');_0x982d8b[_0x8d0a('0x101')]+=0x1;_0x982d8b[_0x8d0a('0xfa')]+=0x1;_0x982d8b[_0x8d0a('0xf5')]=!![];ami[_0x8d0a('0x55')](_0x8d0a('0xf3'),ut[_0x8d0a('0xf4')](_0x982d8b,'amd'));_0x3fe7ca[_0x8d0a('0xd8')](_0x982d8b)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xfb')));if(_0x982d8b[_0x8d0a('0xfc')]+_0x982d8b[_0x8d0a('0xfd')]+_0x982d8b[_0x8d0a('0xfe')]+_0x982d8b[_0x8d0a('0xff')]+_0x982d8b[_0x8d0a('0x10d')]+_0x982d8b[_0x8d0a('0x100')]+_0x982d8b['countmachineretry']+_0x982d8b[_0x8d0a('0x10e')]>=_0x591ae1[_0x8d0a('0x10f')]){_0x3fe7ca['stateGlobal'](_0x982d8b,_0x2bda65,_0x375607,_0x8d0a('0x110'));}else{if(_0x982d8b[_0x8d0a('0x101')]>=_0x591ae1[_0x8d0a('0x103')]){_0x3fe7ca[_0x8d0a('0x104')](_0x982d8b,_0x2bda65,_0x375607,_0x8d0a('0x105'));}else{_0x3fe7ca[_0x8d0a('0xcd')]({'active':![],'countmachineretry':_0x982d8b[_0x8d0a('0x101')],'scheduledat':moment()['add'](_0x591ae1[_0x8d0a('0x107')],'minutes')[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0x982d8b['ContactId'],'ListId':_0x982d8b[_0x8d0a('0xde')],'VoiceQueueId':_0x982d8b[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x982d8b[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x111')));_0x2bda65({'reschedule':0x1});}}});}}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x3a')]=function(_0x4efdfb){var _0x164d16=this[_0x8d0a('0x2a')][_0x4efdfb[_0x8d0a('0xef')]];var _0x1a92cb;if(_0x164d16&&_0x164d16[_0x8d0a('0x56')]==='ivr'){delete this['uniqueId'][_0x4efdfb['uniqueid']];this[_0x8d0a('0xbc')](this[_0x8d0a('0x24')][_0x164d16[_0x8d0a('0xbb')]]);this[_0x8d0a('0x24')][_0x164d16[_0x8d0a('0xbb')]][_0x8d0a('0x112')]+=0x1;_0x1a92cb=new Hangup(_0x164d16,_0x4efdfb);this[_0x8d0a('0xd8')](_0x1a92cb)['catch'](loggerCatch(_0x8d0a('0x113')));this[_0x8d0a('0xd6')](_0x1a92cb)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x114')));}if(_0x164d16&&_0x164d16[_0x8d0a('0x56')]!=='ivr'&&isNotNull(this[_0x8d0a('0x23')][_0x164d16[_0x8d0a('0xbb')]][_0x8d0a('0x115')])){delete this[_0x8d0a('0x2a')][_0x4efdfb[_0x8d0a('0xef')]];this[_0x8d0a('0xbc')](this[_0x8d0a('0x23')][_0x164d16[_0x8d0a('0xbb')]]);this[_0x8d0a('0x23')][_0x164d16[_0x8d0a('0xbb')]][_0x8d0a('0x68')]+=0x1;this[_0x8d0a('0x23')][_0x164d16[_0x8d0a('0xbb')]][_0x8d0a('0xf8')]+=0x1;_0x1a92cb=new Hangup(_0x164d16,_0x4efdfb);_0x1a92cb[_0x8d0a('0xb1')]=0x10;_0x1a92cb[_0x8d0a('0xb2')]='AnswerAGI';_0x1a92cb['membername']=_0x8d0a('0x116');this['createHistory'](_0x1a92cb)['catch'](loggerCatch(_0x8d0a('0x113')));this[_0x8d0a('0xd6')](_0x1a92cb)['catch'](loggerCatch(_0x8d0a('0x114')));}if(_0x164d16&&_0x164d16['type']!==_0x8d0a('0x81')&&!isNotNull(this[_0x8d0a('0x23')][_0x164d16[_0x8d0a('0xbb')]][_0x8d0a('0x115')])){delete this[_0x8d0a('0x2a')][_0x4efdfb[_0x8d0a('0xef')]];this[_0x8d0a('0xbc')](this[_0x8d0a('0x23')][_0x164d16[_0x8d0a('0xbb')]]);this[_0x8d0a('0x23')][_0x164d16[_0x8d0a('0xbb')]][_0x8d0a('0x117')]+=0x1;_0x1a92cb=new Hangup(_0x164d16,_0x4efdfb);_0x1a92cb[_0x8d0a('0xb1')]=0xc;_0x1a92cb[_0x8d0a('0xb2')]=_0x4efdfb[_0x8d0a('0x118')];_0x1a92cb[_0x8d0a('0xf1')]=_0x8d0a('0x119');this[_0x8d0a('0xd8')](_0x1a92cb)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x113')));this[_0x8d0a('0xd6')](_0x1a92cb)['catch'](loggerCatch(_0x8d0a('0x114')));}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x35')]=function(_0x351a6d){var _0x5d2acb=this[_0x8d0a('0x2a')][_0x351a6d[_0x8d0a('0xef')]];if(this[_0x8d0a('0x23')][_0x351a6d[_0x8d0a('0xbb')]]){if(_0x5d2acb&&_0x5d2acb[_0x8d0a('0x56')]!==_0x8d0a('0x81')){delete this[_0x8d0a('0x2a')][_0x351a6d[_0x8d0a('0xef')]];this['voiceQueues'][_0x351a6d[_0x8d0a('0xbb')]][_0x8d0a('0x68')]+=0x1;var _0x15176d=new AgentComplete(_0x5d2acb,_0x351a6d);if(_0x351a6d['reason']===_0x8d0a('0x11a')){_0x15176d[_0x8d0a('0x11b')]=this['voiceQueues'][_0x351a6d[_0x8d0a('0xbb')]]['dialQueueProject2']&&this['voiceQueues'][_0x351a6d[_0x8d0a('0xbb')]][_0x8d0a('0x11c')]?moment()[_0x8d0a('0x7e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0x8d0a('0xd8')](_0x15176d)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x11d')));this[_0x8d0a('0xd6')](_0x15176d)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x11e')));}}};Dialer[_0x8d0a('0x1d')]['syncAgentConnect']=function(_0x217e6a){if(this[_0x8d0a('0x23')][_0x217e6a[_0x8d0a('0xbb')]]){if(this[_0x8d0a('0x2a')][_0x217e6a[_0x8d0a('0xef')]]&&this['uniqueId'][_0x217e6a[_0x8d0a('0xef')]]['type']!=='ivr'){this[_0x8d0a('0xbc')](this[_0x8d0a('0x23')][_0x217e6a['queue']]);this['uniqueId'][_0x217e6a['uniqueid']][_0x8d0a('0x11f')]=moment()[_0x8d0a('0x7e')](_0x8d0a('0x109'));}}};Dialer['prototype']['queueCallerAbandonCreateState']=function(_0x40e47f,_0x4cef04){this[_0x8d0a('0xd8')](_0x40e47f)['catch'](loggerCatch(_0x8d0a('0x11d')));if(_0x4cef04==0x0){this['moveContactManagedDialer'](_0x40e47f)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x120')));}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x31')]=function(_0x31f3e0){var _0x2122fe=this[_0x8d0a('0x2a')][_0x31f3e0[_0x8d0a('0xef')]];var _0x3543cb=this;var _0x24158c=![];var _0x3b659e;var _0x16328d;if(this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]]){if(_0x2122fe&&_0x2122fe[_0x8d0a('0x56')]!==_0x8d0a('0x81')){delete this[_0x8d0a('0x2a')][_0x31f3e0[_0x8d0a('0xef')]];this[_0x8d0a('0xbc')](this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]]);_0x2122fe['droptime']=moment()[_0x8d0a('0x7e')](_0x8d0a('0x109'));var _0x21ddfd=new QueueCallerAbandon(_0x2122fe,_0x31f3e0);if(getSeconds(_0x2122fe[_0x8d0a('0x121')],_0x2122fe[_0x8d0a('0x122')])>=_0x2122fe[_0x8d0a('0x123')]){this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]][_0x8d0a('0x124')]+=0x1;this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x21ddfd[_0x8d0a('0xb1')]=0xa;_0x21ddfd[_0x8d0a('0xb2')]='Drop';_0x21ddfd[_0x8d0a('0x125')]=_0x8d0a('0x126');_0x21ddfd[_0x8d0a('0x11b')]=this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]]['dialQueueProject2']?moment()[_0x8d0a('0x7e')](_0x8d0a('0x109')):undefined;_0x21ddfd[_0x8d0a('0x10d')]+=0x1;_0x21ddfd[_0x8d0a('0xfa')]+=0x1;_0x3b659e=this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]][_0x8d0a('0x127')];_0x16328d=this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]]['callAdditionalPhoneAfterMin'];_0x3543cb[_0x8d0a('0xc5')](_0x21ddfd,_0x21ddfd['state'],_0x2122fe[_0x8d0a('0x128')])[_0x8d0a('0xc2')](function(_0x1bc5dd){_0x24158c=_0x1bc5dd[_0x8d0a('0x129')]==0x1;if(_0x21ddfd[_0x8d0a('0x10d')]>=_0x3543cb[_0x8d0a('0x23')][_0x31f3e0['queue']][_0x8d0a('0x12a')]){_0x3543cb['queueCallerAbandonCreateState'](_0x21ddfd,_0x1bc5dd[_0x8d0a('0x129')]);}else{_0x3543cb['rescheduleContact']({'active':![],'countdropretry':_0x21ddfd[_0x8d0a('0x10d')],'scheduledat':moment()['add'](_0x3543cb[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]][_0x8d0a('0x127')],'minutes')[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0x2122fe[_0x8d0a('0x10a')],'ListId':_0x2122fe[_0x8d0a('0xde')],'VoiceQueueId':_0x2122fe[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x2122fe[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x12b')));var _0x2d78b2=new History(_0x21ddfd);_0x2d78b2[_0x8d0a('0xb1')]=0xa;_0x2d78b2[_0x8d0a('0xb2')]='Drop';_0x2d78b2[_0x8d0a('0xb3')]=moment()[_0x8d0a('0x7e')]('YYYY-MM-DD\x20HH:mm:ss');_0x2d78b2[_0x8d0a('0x12c')]=_0x2d78b2['starttime'];_0x2d78b2[_0x8d0a('0x12d')]=_0x21ddfd[_0x8d0a('0x12d')];_0x2d78b2[_0x8d0a('0x12e')]=_0x21ddfd[_0x8d0a('0x12e')];_0x3543cb[_0x8d0a('0xd8')](_0x2d78b2)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x12f')));}})['then'](function(){if(_0x24158c)_0x3543cb[_0x8d0a('0xc7')](_0x21ddfd,_0x3b659e,_0x16328d)[_0x8d0a('0xc2')](function(){return 0x1;});});}else{this[_0x8d0a('0x23')][_0x31f3e0['queue']][_0x8d0a('0x72')]+=0x1;this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]][_0x8d0a('0x130')]+=0x1;_0x21ddfd[_0x8d0a('0xb1')]=0xb;_0x21ddfd['statedesc']=_0x8d0a('0x131');_0x21ddfd['dropreason']=_0x8d0a('0x132');_0x21ddfd[_0x8d0a('0x100')]+=0x1;_0x21ddfd['countglobal']+=0x1;_0x3b659e=this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]][_0x8d0a('0x133')];_0x16328d=this[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]][_0x8d0a('0x134')];_0x3543cb['verifyAdditionalPhones'](_0x21ddfd,_0x21ddfd[_0x8d0a('0xb1')],_0x2122fe[_0x8d0a('0x128')])['then'](function(_0x58268a){if(_0x21ddfd[_0x8d0a('0x100')]>=_0x3543cb[_0x8d0a('0x23')][_0x31f3e0[_0x8d0a('0xbb')]][_0x8d0a('0x135')]){_0x3543cb['queueCallerAbandonCreateState'](_0x21ddfd,_0x58268a[_0x8d0a('0x129')]);}else{_0x3543cb[_0x8d0a('0xcd')]({'active':![],'countabandonedretry':_0x21ddfd[_0x8d0a('0x100')],'scheduledat':moment()[_0x8d0a('0x106')](_0x3543cb['voiceQueues'][_0x31f3e0[_0x8d0a('0xbb')]]['dialAbandonedRetryFrequency'],_0x8d0a('0x108'))['format'](_0x8d0a('0x109')),'ContactId':_0x2122fe[_0x8d0a('0x10a')],'ListId':_0x2122fe[_0x8d0a('0xde')],'VoiceQueueId':_0x2122fe[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x2122fe[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x136')));var _0x49dd26=new History(_0x21ddfd);_0x49dd26[_0x8d0a('0xb1')]=0xb;_0x49dd26[_0x8d0a('0xb2')]=_0x8d0a('0x131');_0x49dd26[_0x8d0a('0xb3')]=moment()['format'](_0x8d0a('0x109'));_0x49dd26[_0x8d0a('0x12c')]=_0x49dd26[_0x8d0a('0xb3')];_0x49dd26['calleridname']=_0x21ddfd[_0x8d0a('0x12d')];_0x49dd26[_0x8d0a('0x12e')]=_0x21ddfd[_0x8d0a('0x12e')];_0x3543cb['createHistory'](_0x49dd26)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x137')));}})[_0x8d0a('0xc2')](function(){if(_0x24158c)_0x3543cb[_0x8d0a('0xc7')](_0x21ddfd,_0x3b659e,_0x16328d)[_0x8d0a('0xc2')](function(){return 0x1;});});}}}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x138')]=function(_0x4feb0e){if(this[_0x8d0a('0x28')][_0x4feb0e[_0x8d0a('0xef')]]){this[_0x8d0a('0x28')][_0x4feb0e[_0x8d0a('0xef')]][_0x8d0a('0xba')]=_0x4feb0e[_0x8d0a('0xba')];}if(this['uniqueId'][_0x4feb0e['uniqueid']]){this[_0x8d0a('0x2a')][_0x4feb0e[_0x8d0a('0xef')]]['channel']=_0x4feb0e[_0x8d0a('0xba')];}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x3f')]=function(_0x50c018){if(!this[_0x8d0a('0x28')][_0x50c018[_0x8d0a('0x139')]]){return;}if(strategy[this[_0x8d0a('0x23')][this['actions'][_0x50c018['actionid']]['queue']][_0x8d0a('0x58')]]===_0x8d0a('0x13a')){if(this['actions'][_0x50c018[_0x8d0a('0x139')]]&&_['isNil'](this[_0x8d0a('0x28')][_0x50c018[_0x8d0a('0x139')]]['locked'])&&_0x50c018[_0x8d0a('0xb9')]==='1'&&_0x50c018[_0x8d0a('0x13b')]==='0'){if(this[_0x8d0a('0x25')][_0x50c018[_0x8d0a('0x13c')]]){if(!this[_0x8d0a('0x25')][_0x50c018[_0x8d0a('0x13c')]][_0x8d0a('0x13d')]){this[_0x8d0a('0x25')][_0x50c018[_0x8d0a('0x13c')]]['locked']=!![];this[_0x8d0a('0x28')][_0x50c018[_0x8d0a('0x139')]]['locked']=!![];this[_0x8d0a('0x28')][_0x50c018[_0x8d0a('0x139')]][_0x8d0a('0x13c')]=_0x50c018[_0x8d0a('0x13c')];}}}}else if((strategy[this[_0x8d0a('0x23')][this['actions'][_0x50c018['actionid']]['queue']][_0x8d0a('0x58')]]||_0x8d0a('0x1c'))===_0x8d0a('0x1c')){if(this['actions'][_0x50c018[_0x8d0a('0x139')]]){if(this[_0x8d0a('0x25')][_0x50c018[_0x8d0a('0x13c')]]){this[_0x8d0a('0x28')][_0x50c018[_0x8d0a('0x139')]][_0x8d0a('0x13c')]=_0x50c018[_0x8d0a('0x13c')];if(_[_0x8d0a('0xb7')](this[_0x8d0a('0x2e')][this[_0x8d0a('0x28')][_0x50c018['actionid']][_0x8d0a('0xbb')]])){this[_0x8d0a('0x2e')][this['actions'][_0x50c018[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]=[];}this[_0x8d0a('0x2e')][this['actions'][_0x50c018[_0x8d0a('0x139')]]['queue']]['push'](_[_0x8d0a('0x97')](_[_0x8d0a('0x13e')](this[_0x8d0a('0x28')][_0x50c018[_0x8d0a('0x139')]],['idHopper',_0x8d0a('0x13c')]),{'status':_0x50c018['status'],'paused':_0x50c018['paused']}));}}}};function unlockQueueStatus(_0x3acbcf,_0x151a13){setTimeout(function(){if(_[_0x8d0a('0x46')](_0x3acbcf[_0x8d0a('0x13f')])){loggerBooked[_0x8d0a('0x9f')](_0x8d0a('0x140'),_0x151a13);}_0x3acbcf['queueStatusComplete']=!![];loggerBooked[_0x8d0a('0x84')]('[booked][unlockQueueStatus]',_0x151a13,JSON[_0x8d0a('0x51')](_[_0x8d0a('0x13e')](_0x3acbcf,['name',_0x8d0a('0x13f')])));},0x1f3);}Dialer[_0x8d0a('0x1d')][_0x8d0a('0x41')]=function(_0x35081e){if(!this[_0x8d0a('0x28')][_0x35081e['actionid']]){return;}var _0x3a7190=this;var _0x1791a7=_0x3a7190[_0x8d0a('0x23')][_0x3a7190[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]];if(strategy[this[_0x8d0a('0x23')][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]['strategy']]===_0x8d0a('0x13a')){if(this['actions'][_0x35081e[_0x8d0a('0x139')]]&&this[_0x8d0a('0x28')][_0x35081e['actionid']]['stateinterface']){this[_0x8d0a('0x22')][_0x8d0a('0x141')](this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0x142')],this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0x13c')])[_0x8d0a('0xc0')](function(_0x290328){logger[_0x8d0a('0x9f')](_0x8d0a('0x143'),util[_0x8d0a('0x9e')](_0x290328,{'showHidden':![],'depth':null}));})['finally'](function(){_0x3a7190[_0x8d0a('0xbc')](_0x3a7190[_0x8d0a('0x23')][_0x3a7190[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]);_0x3a7190[_0x8d0a('0x25')][_0x3a7190['actions'][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0x13c')]]['locked']=![];delete _0x3a7190[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]];unlockQueueStatus(_0x1791a7);});}else{this[_0x8d0a('0xbc')](this[_0x8d0a('0x23')][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]);this[_0x8d0a('0xcd')]({'active':![],'ContactId':this[_0x8d0a('0x28')][_0x35081e['actionid']]['ContactId'],'ListId':this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]]['ListId'],'VoiceQueueId':this['actions'][_0x35081e['actionid']][_0x8d0a('0xe0')]||undefined,'CampaignId':this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x144')));delete this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]];unlockQueueStatus(_0x1791a7);}}else if((strategy[this['voiceQueues'][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]['strategy']]||_0x8d0a('0x1c'))===_0x8d0a('0x1c')){var _0x4ee1be;if(this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]]&&!_[_0x8d0a('0x83')](this['queueBooked'][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]])){if(this[_0x8d0a('0x145')][_0x3a7190['actions'][_0x35081e['actionid']][_0x8d0a('0xbb')]]){this[_0x8d0a('0x145')][_0x3a7190['actions'][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]=this['queueBookedRR'][this[_0x8d0a('0x28')][_0x35081e['actionid']][_0x8d0a('0xbb')]]?this['queueBookedRR'][this[_0x8d0a('0x28')][_0x35081e['actionid']][_0x8d0a('0xbb')]]:this[_0x8d0a('0x2e')][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]?this[_0x8d0a('0x2e')][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]]['queue']][_0x8d0a('0x146')]||0x0:0x0;}this[_0x8d0a('0x2e')][this[_0x8d0a('0x28')][_0x35081e['actionid']][_0x8d0a('0xbb')]][_0x8d0a('0x146')]=this[_0x8d0a('0x145')][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]];for(var _0x2177eb=0x0;_0x2177eb<this[_0x8d0a('0x2e')][this['actions'][_0x35081e['actionid']][_0x8d0a('0xbb')]][_0x8d0a('0xa0')];_0x2177eb+=0x1){_0x4ee1be=rr(this['queueBooked'][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]]['queue']]);this[_0x8d0a('0x145')][_0x3a7190[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]=this[_0x8d0a('0x2e')][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]['_rr'];if(_0x4ee1be[_0x8d0a('0xb9')]==='1'&&_0x4ee1be[_0x8d0a('0x13b')]==='0'){break;}}if(!_['isNil'](_0x4ee1be)){this['agents'][_0x4ee1be[_0x8d0a('0x13c')]][_0x8d0a('0x147')]=_[_0x8d0a('0x46')](this['agents'][_0x4ee1be['stateinterface']][_0x8d0a('0x147')])?!![]:this[_0x8d0a('0x25')][_0x4ee1be[_0x8d0a('0x13c')]][_0x8d0a('0x147')];}loggerBooked['info'](_0x8d0a('0x148'),_0x35081e[_0x8d0a('0x139')],_0x8d0a('0x149'),JSON[_0x8d0a('0x51')](_[_0x8d0a('0x13e')](this[_0x8d0a('0x25')][_0x4ee1be[_0x8d0a('0x13c')]],['name',_0x8d0a('0x147')])),_0x8d0a('0x14a'),JSON[_0x8d0a('0x51')](_0x4ee1be[_0x8d0a('0x142')]));if(!_['isNil'](_0x4ee1be)&&_0x4ee1be[_0x8d0a('0xb9')]==='1'&&_0x4ee1be[_0x8d0a('0x13b')]==='0'&&this[_0x8d0a('0x25')][_0x4ee1be[_0x8d0a('0x13c')]][_0x8d0a('0x147')]){this[_0x8d0a('0x25')][_0x4ee1be[_0x8d0a('0x13c')]][_0x8d0a('0x147')]=![];this[_0x8d0a('0x2e')][_0x3a7190['actions'][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]=[];this[_0x8d0a('0x22')]['run'](_0x4ee1be[_0x8d0a('0x142')],_0x4ee1be['stateinterface'])[_0x8d0a('0xc0')](function(_0x199322){logger[_0x8d0a('0x9f')](_0x8d0a('0x143'),util[_0x8d0a('0x9e')](_0x199322,{'showHidden':![],'depth':null}));})[_0x8d0a('0x20')](function(){_0x3a7190['updateOriginated'](_0x3a7190['voiceQueues'][_0x3a7190[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]);setTimeout(function(){_0x3a7190[_0x8d0a('0x25')][_0x4ee1be['stateinterface']][_0x8d0a('0x147')]=!![];loggerBooked['info'](_0x8d0a('0x14b'),_0x35081e['actionid'],_0x8d0a('0x149'),JSON['stringify'](_[_0x8d0a('0x13e')](_0x3a7190[_0x8d0a('0x25')][_0x4ee1be[_0x8d0a('0x13c')]],['name',_0x8d0a('0x147')])),_0x8d0a('0x14a'),JSON[_0x8d0a('0x51')](_0x4ee1be[_0x8d0a('0x142')]));},0xc7);delete _0x3a7190[_0x8d0a('0x28')][_0x35081e['actionid']];unlockQueueStatus(_0x1791a7,_0x35081e[_0x8d0a('0x139')]);});}else{loggerBooked[_0x8d0a('0x84')](_0x8d0a('0x14c'));this[_0x8d0a('0xbc')](this[_0x8d0a('0x23')][this['actions'][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xbb')]]);this[_0x8d0a('0xcd')]({'active':![],'ContactId':this['actions'][_0x35081e[_0x8d0a('0x139')]]['ContactId'],'ListId':this['actions'][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xde')],'VoiceQueueId':this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xe0')]||undefined,'CampaignId':this[_0x8d0a('0x28')][_0x35081e['actionid']]['CampaignId']||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x144')));delete this['actions'][_0x35081e[_0x8d0a('0x139')]];unlockQueueStatus(_0x1791a7);}}else{loggerBooked['info'](_0x8d0a('0x14d'));this[_0x8d0a('0xbc')](this[_0x8d0a('0x23')][this[_0x8d0a('0x28')][_0x35081e['actionid']][_0x8d0a('0xbb')]]);this[_0x8d0a('0xcd')]({'active':![],'ContactId':this['actions'][_0x35081e['actionid']][_0x8d0a('0x10a')],'ListId':this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xde')],'VoiceQueueId':this['actions'][_0x35081e[_0x8d0a('0x139')]][_0x8d0a('0xe0')]||undefined,'CampaignId':this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]]['CampaignId']||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x14e')));delete this[_0x8d0a('0x28')][_0x35081e['actionid']];unlockQueueStatus(_0x1791a7);}}else{loggerBooked[_0x8d0a('0x84')]('[booked][unlock3]');this['updateOriginated'](this[_0x8d0a('0x23')][this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]]['queue']]);this[_0x8d0a('0xcd')]({'active':![],'ContactId':this[_0x8d0a('0x28')][_0x35081e['actionid']][_0x8d0a('0x10a')],'ListId':this['actions'][_0x35081e[_0x8d0a('0x139')]]['ListId'],'VoiceQueueId':this[_0x8d0a('0x28')][_0x35081e['actionid']][_0x8d0a('0xe0')]||undefined,'CampaignId':this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]]['CampaignId']||undefined})['catch'](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x8d0a('0x28')][_0x35081e[_0x8d0a('0x139')]];unlockQueueStatus(_0x1791a7);}};Dialer[_0x8d0a('0x1d')]['loopCampaigns']=function(){var _0x4eb3da=this;return cmHopper[_0x8d0a('0x14f')]({'active':![]},{'where':{'active':!![]}})[_0x8d0a('0xc2')](function(){setInterval(function(){_0x4eb3da['syncCampaigns']();},0x3e8);});};Dialer[_0x8d0a('0x1d')]['checkIsTrunkReachable']=function(_0x43db64){var _0x15286b=this;return function(){if(!_0x15286b[_0x8d0a('0xe6')](_0x43db64[_0x8d0a('0x7c')])){if(!_0x15286b[_0x8d0a('0xe6')](_0x43db64['TrunkBackup'])){_0x43db64[_0x8d0a('0x47')]=_0x8d0a('0x150');throw _0x43db64['name']+_0x8d0a('0x151');}}};};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x152')]=function(_0x546100,_0x40d9ab,_0x11992f,_0x3acd06){var _0xbde567=this;return function(){var _0x15b040=!![];return _0xbde567['ifTime'](_0x546100,_0x40d9ab,_0x11992f,_0x3acd06,_0x15b040);};};Dialer['prototype'][_0x8d0a('0x153')]=function(_0x500eb3,_0xab6298,_0x3c60d9,_0x25b0b7){var _0x4a07c0=this;return function(){var _0x36cc87=![];return _0x4a07c0[_0x8d0a('0x154')](_0x500eb3[_0x8d0a('0x4e')],_0xab6298,_0x3c60d9,_0x25b0b7,_0x36cc87);};};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x154')]=function(_0x5ad9f8,_0x34638d,_0x29952b,_0x19d98c,_0x39a293){var _0x381cc4=[];return new Promise(function(_0x288e5a,_0x25abf3){if(!isNotNull(_0x5ad9f8)){_0x19d98c[_0x8d0a('0x47')]=_0x8d0a('0x4b');return _0x25abf3(msgResponse('ifTime',_0x8d0a('0x155'),_0x29952b+'\x20Intervals\x20is\x20null\x20'));}if(_['isEmpty'](_0x5ad9f8)){_0x19d98c[_0x8d0a('0x47')]=_0x8d0a('0x156');return _0x25abf3(msgResponse(_0x8d0a('0x154'),_0x8d0a('0x155'),_0x29952b+_0x8d0a('0x157')));}if(_0x34638d&&_[_0x8d0a('0x46')](config['timezones'][_0x34638d])){_0x19d98c['message']='TIMEZONE_UNKNOW';return _0x25abf3(msgResponse(_0x8d0a('0x154'),_0x8d0a('0x155'),_0x29952b+_0x8d0a('0x158')+_0x34638d));}if(_['isArray'](_0x5ad9f8)){for(var _0x17ba1b=0x0;_0x17ba1b<_0x5ad9f8['length'];_0x17ba1b+=0x1){_0x381cc4[_0x8d0a('0x159')](ami[_0x8d0a('0xb8')]({'action':'command','command':util[_0x8d0a('0x7e')](_0x8d0a('0x15a'),_0x5ad9f8[_0x17ba1b]['interval'],!_[_0x8d0a('0x46')](config[_0x8d0a('0x15b')][_0x34638d])?_0x34638d:'')})[_0x8d0a('0xc2')](function(_0x51cb25){return _0x51cb25[_0x8d0a('0x15c')][_0x8d0a('0x15d')](_0x8d0a('0x15e'))>=0x0;})[_0x8d0a('0xc0')](myreject(_0x25abf3)));}}else{_0x381cc4[_0x8d0a('0x159')](ami[_0x8d0a('0xb8')]({'action':_0x8d0a('0x15f'),'command':util[_0x8d0a('0x7e')](_0x8d0a('0x15a'),_0x5ad9f8,!_['isUndefined'](config[_0x8d0a('0x15b')][_0x34638d])?_0x34638d:'')})[_0x8d0a('0xc2')](function(_0x43bcfe){return _0x43bcfe['content'][_0x8d0a('0x15d')](_0x8d0a('0x15e'))>=0x0;})[_0x8d0a('0xc0')](myreject(_0x25abf3)));}Promise['all'](_0x381cc4)[_0x8d0a('0xc2')](function(_0x45ff5d){var _0x3eb0e1=_[_0x8d0a('0x160')](_0x45ff5d);if(_0x3eb0e1){return _0x288e5a(_0x3eb0e1);}else{_0x19d98c[_0x8d0a('0x47')]=_0x39a293?_0x8d0a('0x161'):_0x8d0a('0x162');return _0x25abf3(msgResponse(_0x8d0a('0x163'),_0x8d0a('0x155'),'Global:\x20'+_0x39a293+'\x20'+_0x29952b+_0x8d0a('0x164')+util[_0x8d0a('0x9e')](_0x5ad9f8,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x34638d));}})[_0x8d0a('0xc0')](function(_0x51bdbf){return _0x25abf3(msgResponse(_0x8d0a('0x154'),_0x8d0a('0x155'),JSON['stringify'](_0x51bdbf)));});});};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x165')]=function(_0x29743c){var _0x424937=this;return function(){switch(_0x29743c['dialMethod']){case _0x8d0a('0x166'):freeVariablesPredictive(_0x29743c);_0x424937[_0x8d0a('0x167')](_0x29743c,0x1);break;case'power':freeVariablesPredictive(_0x29743c);_0x424937[_0x8d0a('0x167')](_0x29743c,_0x29743c[_0x8d0a('0x168')]);break;case _0x8d0a('0xa'):_0x424937[_0x8d0a('0xa')](_0x29743c);break;case _0x8d0a('0x9'):freeVariablesPredictive(_0x29743c);_0x424937[_0x8d0a('0x167')](_0x29743c,0x1);break;default:freeVariablesPredictive(_0x29743c);logger[_0x8d0a('0x9f')](_0x8d0a('0x169'),_0x29743c[_0x8d0a('0x4a')],_0x8d0a('0x16a'));}};};Dialer[_0x8d0a('0x1d')]['checkPreviewRecallReminder']=function(_0x5e5a30){return Promise['resolve']()[_0x8d0a('0xc2')](cmHopper[_0x8d0a('0x16b')](_0x5e5a30['id'],previewRecallmeReminderInterval))[_0x8d0a('0xc2')](function(_0x49546d){for(var _0x3e2af6=0x0;_0x3e2af6<_0x49546d[_0x8d0a('0xa0')];_0x3e2af6++){var _0x497142=_0x49546d[_0x3e2af6][_0x8d0a('0x16c')][_0x8d0a('0x4a')];if(_0x497142)io['to'](util[_0x8d0a('0x7e')]('user:%s',_0x497142))[_0x8d0a('0x55')](_0x8d0a('0x16d'),{'hopper':_0x49546d[_0x3e2af6]});}})[_0x8d0a('0xc0')](function(){});};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x16e')]=function(_0x1224b4){var _0x4b1db0=this;return function(){_0x4b1db0[_0x8d0a('0x16f')](_0x1224b4);};};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x37')]=function(_0x391e0a){var _0x32cc20=this;if(isNotPreview(_0x391e0a[_0x8d0a('0x64')])){if(isVoiceQueueOutbound(_0x391e0a[_0x8d0a('0x56')])&&isActive(_0x391e0a[_0x8d0a('0x63')])){_0x391e0a[_0x8d0a('0xa9')]=!![];Promise[_0x8d0a('0xbf')]()[_0x8d0a('0xc2')](checkIsLoggedIn(_0x391e0a,_0x391e0a[_0x8d0a('0x5a')]))[_0x8d0a('0xc2')](checkIsActive(_0x391e0a,_0x391e0a[_0x8d0a('0x63')]))['then'](checkInterval(_0x391e0a))[_0x8d0a('0xc2')](_0x32cc20['checkIsTrunkReachable'](_0x391e0a))[_0x8d0a('0xc2')](_0x32cc20['checkIfTime'](_0x391e0a[_0x8d0a('0x170')],_0x391e0a[_0x8d0a('0x171')],_0x391e0a[_0x8d0a('0x4a')],_0x391e0a))[_0x8d0a('0xc2')](_0x32cc20['checkIfTimeIntervals'](_0x391e0a[_0x8d0a('0x4d')],_0x391e0a[_0x8d0a('0x171')],_0x391e0a['name'],_0x391e0a))[_0x8d0a('0xc2')](_0x32cc20[_0x8d0a('0x165')](_0x391e0a))[_0x8d0a('0xc0')](loggerCatchQueueSummary(_0x8d0a('0x172'),_0x391e0a));}else{notSendMessagesQueue(_0x391e0a);}}else{freeVariablesPredictive(_0x391e0a);}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x39')]=_[_0x8d0a('0x173')](function(){var _0x465fdb=_['filter'](this[_0x8d0a('0x23')],function(_0x2965b5){return _0x2965b5[_0x8d0a('0x174')];});var _0x3ca21c=_[_0x8d0a('0x175')](this[_0x8d0a('0x25')],function(_0x39bac8){return _0x39bac8[_0x8d0a('0x176')]&&_0x39bac8[_0x8d0a('0xb9')]===_0x8d0a('0x177');});if(_0x465fdb[_0x8d0a('0xa0')]>0x0&&_0x3ca21c[_0x8d0a('0xa0')]>0x0){return Promise[_0x8d0a('0xbf')]()[_0x8d0a('0xc2')](cmHopper[_0x8d0a('0x16b')](_['map'](_0x465fdb,'id'),previewRecallmeReminderInterval,_[_0x8d0a('0x178')](_0x3ca21c,'id')))[_0x8d0a('0xc2')](function(_0x33bc3a){for(var _0xaca81a=0x0;_0xaca81a<_0x33bc3a[_0x8d0a('0xa0')];_0xaca81a++){var _0x15162a=_0x33bc3a[_0xaca81a]['Agent'][_0x8d0a('0x4a')];if(_0x15162a)io['to'](util[_0x8d0a('0x7e')](_0x8d0a('0x179'),_0x15162a))[_0x8d0a('0x55')](_0x8d0a('0x16d'),{'hopper':_0x33bc3a[_0xaca81a]});}})[_0x8d0a('0xc0')](function(_0x2b7338){logger[_0x8d0a('0x9f')]('checkPreviewRecallReminder',_0x2b7338);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x8d0a('0x1d')][_0x8d0a('0x17a')]=function(){var _0x59c439=this;var _0x5ce736;for(var _0x462c5f in this[_0x8d0a('0x24')]){if(typeof this[_0x8d0a('0x24')][_0x462c5f]!=='undefined'){_0x5ce736=this['campaigns'][_0x462c5f];if(isCampaignIvr(_0x5ce736['type'])&&isActive(_0x5ce736[_0x8d0a('0x7d')])){_0x5ce736[_0x8d0a('0xa9')]=!![];Promise['resolve']()['then'](checkIsActive(_0x5ce736,_0x5ce736[_0x8d0a('0x7d')]))[_0x8d0a('0xc2')](checkInterval(_0x5ce736))['then'](_0x59c439['checkIsTrunkReachable'](_0x5ce736))[_0x8d0a('0xc2')](_0x59c439['checkIfTime'](_0x5ce736[_0x8d0a('0x170')],_0x5ce736['dialTimezone'],_0x5ce736['name'],_0x5ce736))['then'](_0x59c439['checkIfTimeIntervals'](_0x5ce736[_0x8d0a('0x4d')],_0x5ce736[_0x8d0a('0x171')],_0x5ce736['name'],_0x5ce736))[_0x8d0a('0xc2')](_0x59c439[_0x8d0a('0x16e')](_0x5ce736))[_0x8d0a('0xc0')](loggerCatchQueueSummary(_0x8d0a('0x17b'),_0x5ce736));}else{notSendMessagesCampaign(_0x5ce736);}}}};function getCallerIdRandom(_0xbb70c,_0xf30173){var _0x4663a1;var _0x5d3731;var _0x38c07a;if(_0xf30173<=0x0){_0xf30173=0x1;}_0x4663a1=new RegExp('\x5cw{0,'+_0xf30173+'}$');_0x5d3731=Math['pow'](0xa,_0xf30173-0x1);_0x38c07a=Math[_0x8d0a('0x17c')](0xa,_0xf30173)-0x1;return util[_0x8d0a('0x7e')]('%s',_[_0x8d0a('0x17d')](_0xbb70c,_0x4663a1,_[_0x8d0a('0x17e')](_0x5d3731,_0x38c07a)));}function extractCalleridName(_0x516bf9){var _0x103ab9=_0x516bf9['match'](/"(.*?)"/);return _0x103ab9?_0x103ab9[0x1]:_0x516bf9;}Dialer[_0x8d0a('0x1d')][_0x8d0a('0x17f')]=function(_0x517d7f,_0x54ca3c){var _0x1c6c9d=this;var _0x2f5fae=uuid['v4']();this[_0x8d0a('0x28')][_0x2f5fae]=new Action(_0x517d7f,_0x54ca3c,_0x2f5fae);return new Promise(function(_0xda7fa6,_0xf40763){if(_[_0x8d0a('0x46')](_0x517d7f)&&typeof _0x517d7f!==_0x8d0a('0x180')){return _0xf40763(msgResponse('originate',_0x8d0a('0x155'),'voiceQueue\x20is\x20undefine'));}if(_[_0x8d0a('0x46')](_0x54ca3c[_0x8d0a('0x181')])||_0x54ca3c[_0x8d0a('0x181')]===null){return _0xf40763(msgResponse('originate',_0x8d0a('0x155'),_0x8d0a('0x182')));}var _0x28964a={'XMD-CALLERID':_0x1c6c9d[_0x8d0a('0x28')][_0x2f5fae][_0x8d0a('0x183')](),'XMD-AGI':_0x517d7f['dialQueueProject']?util[_0x8d0a('0x7e')](_0x8d0a('0x184'),ipAgi,_0x517d7f[_0x8d0a('0x115')]):'NONE','XMD-AGIAFTER':_0x517d7f[_0x8d0a('0x185')]?util['format'](_0x8d0a('0x184'),ipAgi,_0x517d7f[_0x8d0a('0x185')]):_0x8d0a('0x186'),'XMD-QUEUE':_0x517d7f[_0x8d0a('0x56')]==='outbound'?util[_0x8d0a('0x7e')](_0x8d0a('0x187'),_0x517d7f[_0x8d0a('0x4a')],_0x517d7f[_0x8d0a('0x188')]||'',_0x517d7f[_0x8d0a('0x11c')]?'c':'',_0x517d7f[_0x8d0a('0x123')]||0x3):_0x8d0a('0x186'),'XMD-CONTACTID':_0x54ca3c[_0x8d0a('0x10a')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x1c6c9d[_0x8d0a('0x28')][_0x2f5fae][_0x8d0a('0x183')](),'XMD-AMD':_0x517d7f['dialAMDActive']?_0x8d0a('0x189'):_0x8d0a('0x186'),'XMD-DESTINATION':_0x8d0a('0x18a')};if(_0x517d7f[_0x8d0a('0xec')]){_0x28964a['XMD-AMDINITIALSILENCE']=_0x517d7f[_0x8d0a('0x18b')]||0x9c4;_0x28964a[_0x8d0a('0x18c')]=_0x517d7f[_0x8d0a('0x18d')]||0x5dc;_0x28964a[_0x8d0a('0x18e')]=_0x517d7f[_0x8d0a('0x18f')]||0x320;_0x28964a[_0x8d0a('0x190')]=_0x517d7f[_0x8d0a('0x191')]||0x1388;_0x28964a[_0x8d0a('0x192')]=_0x517d7f[_0x8d0a('0x193')]||0x64;_0x28964a[_0x8d0a('0x194')]=_0x517d7f[_0x8d0a('0x195')]||0x32;_0x28964a[_0x8d0a('0x196')]=_0x517d7f[_0x8d0a('0x197')]||0x3;_0x28964a[_0x8d0a('0x198')]=_0x517d7f[_0x8d0a('0x199')]||0x100;_0x28964a[_0x8d0a('0x19a')]=_0x517d7f[_0x8d0a('0x19b')]||0x1388;}if(_0x517d7f['type']===_0x8d0a('0x57')){_0x28964a[_0x8d0a('0x19c')]=_0x54ca3c['VoiceQueueId'];}else{_0x28964a[_0x8d0a('0x19d')]=_0x54ca3c['CampaignId'];}for(var _0xcfea in _0x54ca3c[_0x8d0a('0x19e')]){if(typeof _0x54ca3c[_0x8d0a('0x19e')][_0xcfea]!==_0x8d0a('0xa1')){if(isNotNull(_0x54ca3c[_0x8d0a('0x19e')][_0xcfea])&&_0xcfea!=='id'&&_0xcfea!==_0x8d0a('0x19f')&&_0xcfea!==_0x8d0a('0x1a0')&&_0xcfea!==_0x8d0a('0x1a1')){_0x28964a[util['format']('%s%s','XMD-',_[_0x8d0a('0x1a2')](_0xcfea))]=_0x54ca3c[_0x8d0a('0x19e')][_0xcfea];}}}var _0x121857=_0x1c6c9d[_0x8d0a('0xe6')](_0x517d7f['Trunk'])?getCallerId(_0x517d7f[_0x8d0a('0x7c')][_0x8d0a('0x1a3')],_0x517d7f[_0x8d0a('0x65')],_0x517d7f['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x517d7f[_0x8d0a('0x1a4')],_0x517d7f['dialRandomLastDigitCallerIdNumber']):_0x517d7f[_0x8d0a('0x1a4')]):getCallerId(_[_0x8d0a('0xb7')](_0x517d7f[_0x8d0a('0x1a5')])?_0x517d7f[_0x8d0a('0x7c')]['callerid']:_0x517d7f[_0x8d0a('0x1a5')][_0x8d0a('0x1a3')],_0x517d7f[_0x8d0a('0x65')],_0x517d7f['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x517d7f[_0x8d0a('0x1a4')],_0x517d7f['dialRandomLastDigitCallerIdNumber']):_0x517d7f[_0x8d0a('0x1a4')]);if(_0x121857){_0x28964a[_0x8d0a('0x1a6')]=_0x1c6c9d[_0x8d0a('0x28')][_0x2f5fae][_0x8d0a('0x1a7')]=extractCalleridName(_0x121857);_0x28964a['XMD-ORIGINATECALLERIDNUM']=_0x54ca3c[_0x8d0a('0x181')];}_0x517d7f[_0x8d0a('0x1a8')]=_0x28964a;return ami[_0x8d0a('0xb8')]({'actionid':_0x2f5fae,'action':'originate','channel':_0x1c6c9d['isTrunkReachable'](_0x517d7f[_0x8d0a('0x7c')])?util[_0x8d0a('0x7e')]('SIP/%s/%s%s',_0x517d7f[_0x8d0a('0x7c')][_0x8d0a('0x4a')],isNotNull(_0x517d7f[_0x8d0a('0x67')])?_0x517d7f[_0x8d0a('0x67')][_0x8d0a('0x1a9')]()||'':'',_0x517d7f[_0x8d0a('0x1aa')]>0x0?_0x54ca3c['phone'][_0x8d0a('0x1ab')](_0x517d7f['dialCutDigit']):_0x54ca3c['phone']):util[_0x8d0a('0x7e')](_0x8d0a('0x1ac'),_['isNil'](_0x517d7f[_0x8d0a('0x1a5')])?_0x517d7f['Trunk'][_0x8d0a('0x4a')]:_0x517d7f[_0x8d0a('0x1a5')][_0x8d0a('0x4a')],isNotNull(_0x517d7f[_0x8d0a('0x67')])?_0x517d7f[_0x8d0a('0x67')][_0x8d0a('0x1a9')]()||'':'',_0x517d7f[_0x8d0a('0x1aa')]>0x0?_0x54ca3c[_0x8d0a('0x181')][_0x8d0a('0x1ab')](_0x517d7f[_0x8d0a('0x1aa')]):_0x54ca3c[_0x8d0a('0x181')]),'callerid':_0x121857,'Exten':_0x8d0a('0x18a'),'Context':_0x8d0a('0x1ad'),'Priority':'1','variable':_0x28964a,'timeout':(_0x517d7f[_0x8d0a('0x66')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2f5fae})['then'](function(_0x287ed2){return _0xda7fa6(_0x287ed2);})['catch'](function(_0x3de95c){_0x517d7f[_0x8d0a('0x6d')]+=0x1;var _0xb04b1e=new History(_0x1c6c9d[_0x8d0a('0x28')][_0x2f5fae]);logger[_0x8d0a('0x9f')](util[_0x8d0a('0x7e')]('[originateError]:\x20%s',JSON[_0x8d0a('0x51')](_0x3de95c)));_0xb04b1e[_0x8d0a('0xb1')]=0xe;_0xb04b1e[_0x8d0a('0xb2')]=_0x8d0a('0x1ae');_0xb04b1e[_0x8d0a('0xb3')]=moment()[_0x8d0a('0x7e')](_0x8d0a('0x109'));_0xb04b1e[_0x8d0a('0x12c')]=_0xb04b1e[_0x8d0a('0xb3')];_0x1c6c9d['createHistory'](_0xb04b1e)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x1af')));_0x1c6c9d[_0x8d0a('0xd6')](_0xb04b1e)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x1af')))['finally'](function(){delete _0x1c6c9d['actions'][_0x2f5fae];return _0xf40763(msgResponse('originate',_0x8d0a('0x50'),_0x8d0a('0x1b0')));});});});};Dialer['prototype']['syncOriginateResponse']=function(_0x256bad){var _0x534345=this[_0x8d0a('0x28')][_0x256bad[_0x8d0a('0x139')]];if(_0x534345){delete this['actions'][_0x256bad[_0x8d0a('0x139')]];_0x534345[_0x8d0a('0x122')]=moment()[_0x8d0a('0x7e')](_0x8d0a('0x109'));var _0x450965=_0x534345[_0x8d0a('0x56')]===_0x8d0a('0x81')?this[_0x8d0a('0x24')][_0x534345[_0x8d0a('0xbb')]]:this[_0x8d0a('0x23')][_0x534345[_0x8d0a('0x1b1')]()];if(!this[_0x8d0a('0xe4')](_0x256bad['response'])){this[_0x8d0a('0xbc')](_0x450965);return this[_0x8d0a('0x1b2')](_0x534345,_0x450965,_0x256bad)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x1b3')));}this[_0x8d0a('0x2a')][_0x256bad[_0x8d0a('0xef')]]=_0x534345;}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x1b4')]=function(_0x2d1fb4,_0x4fd2ad,_0x2bda96){var _0x40ec90=new History(_0x4fd2ad);if(_0x40ec90[_0x8d0a('0xfc')]+_0x40ec90[_0x8d0a('0xfd')]+_0x40ec90[_0x8d0a('0xfe')]+_0x40ec90[_0x8d0a('0xff')]+_0x40ec90['countdropretry']+_0x40ec90[_0x8d0a('0x100')]+_0x40ec90['countmachineretry']+_0x40ec90[_0x8d0a('0x10e')]>=_0x2bda96[_0x8d0a('0x10f')]-0x1){return!![];}switch(_0x2d1fb4){case 0x3:if(_0x40ec90[_0x8d0a('0xfe')]>=_0x2bda96[_0x8d0a('0x1b5')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x40ec90[_0x8d0a('0xfe')]+=0x1,'scheduledat':moment()['add'](_0x2bda96[_0x8d0a('0x1b6')],_0x8d0a('0x108'))['format'](_0x8d0a('0x109')),'ContactId':_0x40ec90['ContactId'],'ListId':_0x40ec90[_0x8d0a('0xde')],'VoiceQueueId':_0x40ec90['VoiceQueueId']||undefined,'CampaignId':_0x40ec90[_0x8d0a('0xe1')]||undefined})['catch'](loggerCatch(_0x8d0a('0x1b7')));break;case 0x5:if(_0x40ec90[_0x8d0a('0xfc')]>=_0x2bda96[_0x8d0a('0x1b8')]-0x1){return!![];}this[_0x8d0a('0xcd')]({'active':![],'countbusyretry':_0x40ec90[_0x8d0a('0xfc')]+=0x1,'scheduledat':moment()[_0x8d0a('0x106')](_0x2bda96[_0x8d0a('0x1b9')],'minutes')[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0x40ec90[_0x8d0a('0x10a')],'ListId':_0x40ec90[_0x8d0a('0xde')],'VoiceQueueId':_0x40ec90[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x40ec90['CampaignId']||undefined})['catch'](loggerCatch(_0x8d0a('0x1ba')));break;case 0x8:if(_0x40ec90['countcongestionretry']>=_0x2bda96['dialCongestionMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x40ec90[_0x8d0a('0xfd')]+=0x1,'scheduledat':moment()['add'](_0x2bda96[_0x8d0a('0x1bb')],'minutes')[_0x8d0a('0x7e')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x40ec90['ContactId'],'ListId':_0x40ec90[_0x8d0a('0xde')],'VoiceQueueId':_0x40ec90[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x40ec90[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x40ec90[_0x8d0a('0xff')]>=_0x2bda96[_0x8d0a('0x1bc')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x40ec90[_0x8d0a('0xff')]+=0x1,'scheduledat':moment()[_0x8d0a('0x106')](_0x2bda96['dialNoSuchNumberRetryFrequency'],_0x8d0a('0x108'))[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0x40ec90[_0x8d0a('0x10a')],'ListId':_0x40ec90['ListId'],'VoiceQueueId':_0x40ec90[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x40ec90[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x40ec90[_0x8d0a('0x10d')]>=_0x2bda96['dialDropMaxRetry']-0x1){return!![];}this[_0x8d0a('0xcd')]({'active':![],'countdropretry':_0x40ec90['countdropretry']+=0x1,'scheduledat':moment()[_0x8d0a('0x106')](_0x2bda96[_0x8d0a('0x127')],'minutes')[_0x8d0a('0x7e')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x40ec90[_0x8d0a('0x10a')],'ListId':_0x40ec90['ListId'],'VoiceQueueId':_0x40ec90[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x40ec90[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x40ec90[_0x8d0a('0x100')]>=_0x2bda96['dialAbandonedMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x40ec90[_0x8d0a('0x100')]+=0x1,'scheduledat':moment()[_0x8d0a('0x106')](_0x2bda96[_0x8d0a('0x133')],_0x8d0a('0x108'))[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0x40ec90[_0x8d0a('0x10a')],'ListId':_0x40ec90[_0x8d0a('0xde')],'VoiceQueueId':_0x40ec90[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x40ec90[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x136')));break;case 0x13:if(_0x40ec90[_0x8d0a('0x101')]>=_0x2bda96['dialMachineMaxRetry']-0x1){return!![];}this[_0x8d0a('0xcd')]({'active':![],'countmachineretry':_0x40ec90[_0x8d0a('0x101')]+=0x1,'scheduledat':moment()[_0x8d0a('0x106')](_0x2bda96[_0x8d0a('0x107')],_0x8d0a('0x108'))[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0x40ec90['ContactId'],'ListId':_0x40ec90['ListId'],'VoiceQueueId':_0x40ec90[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x40ec90[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x111')));break;case 0x14:if(_0x40ec90[_0x8d0a('0x10e')]>=_0x2bda96[_0x8d0a('0x1bd')]-0x1){return!![];}this[_0x8d0a('0xcd')]({'active':![],'countagentrejectretry':_0x40ec90[_0x8d0a('0x10e')]+=0x1,'scheduledat':moment()[_0x8d0a('0x106')](_0x2bda96[_0x8d0a('0x1be')],_0x8d0a('0x108'))[_0x8d0a('0x7e')](_0x8d0a('0x109')),'ContactId':_0x40ec90[_0x8d0a('0x10a')],'ListId':_0x40ec90[_0x8d0a('0xde')],'VoiceQueueId':_0x40ec90[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x40ec90[_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x1bf')));break;default:return!![];}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x1b2')]=function(_0x3b7a7c,_0x25573f,_0x2daca5){var _0x408b6f=this;var _0x301b1f=new History(_0x3b7a7c);var _0x553bf7=![];var _0x350e48;var _0x25ff14;return new Promise(function(_0x412e81,_0x18f3d2){if(_['isUndefined'](_0x25573f)&&typeof _0x25573f!=='object'){return _0x18f3d2(msgResponse(_0x8d0a('0x1c0'),'Failure',_0x8d0a('0x1c1')));}if(_[_0x8d0a('0x46')](_0x2daca5)&&typeof _0x2daca5!=='object'){return _0x18f3d2(msgResponse(_0x8d0a('0x1c0'),_0x8d0a('0x155'),_0x8d0a('0x1c2')));}_0x408b6f['verifyAdditionalPhones'](_0x301b1f,_0x2daca5['reason'],_0x25573f)['then'](function(_0x2a297d){if(_0x2a297d[_0x8d0a('0x129')]==0x1)_0x553bf7=!![];switch(_0x2daca5[_0x8d0a('0x1c3')]){case'0':_0x25573f[_0x8d0a('0x6c')]+=0x1;_0x301b1f[_0x8d0a('0xb1')]=0x0;_0x301b1f[_0x8d0a('0xb2')]=_0x8d0a('0x1c4');_0x301b1f['countnosuchnumberretry']+=0x1;_0x301b1f[_0x8d0a('0xfa')]+=0x1;ami[_0x8d0a('0x55')]('custom:agentnosuchnumber',ut[_0x8d0a('0xf4')](_0x3b7a7c,_0x8d0a('0x1c5')));_0x350e48=_0x25573f[_0x8d0a('0x1c6')];_0x25ff14=_0x25573f['callAdditionalPhoneAfterMin'];_0x408b6f['createHistory'](_0x301b1f)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xfb')));if(_0x408b6f[_0x8d0a('0x1b4')](0x0,_0x3b7a7c,_0x25573f)&&!_0x553bf7){if(_0x301b1f['countnosuchnumberretry']>=_0x25573f['dialNoSuchNumberMaxRetry']){_0x408b6f[_0x8d0a('0x104')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1c7'));}else{_0x408b6f['stateGlobal'](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1c7'));}}break;case'3':_0x25573f[_0x8d0a('0x6b')]+=0x1;_0x301b1f[_0x8d0a('0xb1')]=0x3;_0x301b1f[_0x8d0a('0xb2')]=_0x8d0a('0x1c8');_0x301b1f[_0x8d0a('0xfe')]+=0x1;_0x301b1f['countglobal']+=0x1;var _0x4b1050=ut[_0x8d0a('0x1c9')](_0x3b7a7c,_0x25573f);ami[_0x8d0a('0x55')](_0x8d0a('0x1ca'),_0x4b1050);_0x350e48=_0x25573f[_0x8d0a('0x1b6')];_0x25ff14=_0x25573f['callAdditionalPhoneAfterMin'];_0x408b6f[_0x8d0a('0xd8')](_0x301b1f)[_0x8d0a('0xc0')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x408b6f[_0x8d0a('0x1b4')](0x3,_0x3b7a7c,_0x25573f)&&!_0x553bf7){if(_0x301b1f[_0x8d0a('0xfe')]>=_0x25573f[_0x8d0a('0x1b5')]){_0x408b6f[_0x8d0a('0x104')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1cb'));}else{_0x408b6f[_0x8d0a('0x102')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1cb'));}}break;case'5':_0x25573f[_0x8d0a('0x1cc')]+=0x1;_0x301b1f[_0x8d0a('0xb1')]=0x5;_0x301b1f['statedesc']=_0x8d0a('0x1cd');_0x301b1f[_0x8d0a('0xfc')]+=0x1;_0x301b1f[_0x8d0a('0xfa')]+=0x1;ami['emit'](_0x8d0a('0x1ce'),ut[_0x8d0a('0xf4')](_0x3b7a7c,_0x8d0a('0x1cf')));_0x350e48=_0x25573f['dialBusyRetryFrequency'];_0x25ff14=_0x25573f[_0x8d0a('0x134')];_0x408b6f['createHistory'](_0x301b1f)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x408b6f[_0x8d0a('0x1b4')](0x5,_0x3b7a7c,_0x25573f)&&!_0x553bf7){if(_0x301b1f['countbusyretry']>=_0x25573f['dialBusyMaxRetry']){_0x408b6f['createStateFinal'](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1d0'));}else{_0x408b6f[_0x8d0a('0x102')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1d0'));}}break;case'8':_0x25573f['outboundCongestionCallsDay']+=0x1;_0x301b1f['state']=0x8;_0x301b1f['statedesc']=_0x8d0a('0x1d1');_0x301b1f[_0x8d0a('0xfd')]+=0x1;_0x301b1f[_0x8d0a('0xfa')]+=0x1;_0x350e48=_0x25573f[_0x8d0a('0x1bb')];_0x25ff14=_0x25573f[_0x8d0a('0x134')];ami[_0x8d0a('0x55')](_0x8d0a('0x1d2'),ut[_0x8d0a('0xf4')](_0x3b7a7c,_0x8d0a('0x1d3')));_0x408b6f[_0x8d0a('0xd8')](_0x301b1f)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x1d4')));if(_0x408b6f[_0x8d0a('0x1b4')](0x8,_0x3b7a7c,_0x25573f)&&!_0x553bf7){if(_0x301b1f['countcongestionretry']>=_0x25573f[_0x8d0a('0x1d5')]){_0x408b6f[_0x8d0a('0x104')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1d6'));}else{_0x408b6f[_0x8d0a('0x102')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1d6'));}}break;case'11':_0x25573f['outboundAbandonedCallsDay']+=0x1;_0x301b1f[_0x8d0a('0xb1')]=0xb;_0x301b1f[_0x8d0a('0xb2')]=_0x8d0a('0x131');_0x301b1f['countabandonedretry']+=0x1;_0x301b1f[_0x8d0a('0xfa')]+=0x1;_0x350e48=_0x25573f[_0x8d0a('0x133')];_0x25ff14=_0x25573f[_0x8d0a('0x134')];_0x408b6f[_0x8d0a('0xd8')](_0x301b1f)['catch'](loggerCatch(_0x8d0a('0x137')));if(_0x408b6f[_0x8d0a('0x1b4')](0xb,_0x3b7a7c,_0x25573f)&&!_0x553bf7){if(_0x301b1f[_0x8d0a('0x100')]>=_0x25573f[_0x8d0a('0x135')]){_0x408b6f[_0x8d0a('0x104')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1d7'));}else{_0x408b6f[_0x8d0a('0x102')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1d7'));}}break;case'20':_0x25573f[_0x8d0a('0x6f')]+=0x1;_0x301b1f[_0x8d0a('0xb1')]=0x14;_0x301b1f['statedesc']=_0x8d0a('0x1d8');_0x301b1f[_0x8d0a('0x10e')]+=0x1;_0x301b1f[_0x8d0a('0xfa')]+=0x1;_0x350e48=_0x25573f[_0x8d0a('0x1be')];_0x25ff14=_0x25573f[_0x8d0a('0x134')];ami[_0x8d0a('0x55')](_0x8d0a('0x1d9'),ut['buildObj'](_0x3b7a7c,'agentreject'));_0x408b6f[_0x8d0a('0xd8')](_0x301b1f)[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x1da')));if(_0x408b6f[_0x8d0a('0x1b4')](0x14,_0x3b7a7c,_0x25573f)&&!_0x553bf7){if(_0x301b1f['countagentrejectretry']>=_0x25573f[_0x8d0a('0x1bd')]){_0x408b6f[_0x8d0a('0x104')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1db'));}else{_0x408b6f[_0x8d0a('0x102')](_0x301b1f,_0x412e81,_0x18f3d2,_0x8d0a('0x1db'));}}break;default:_0x25573f[_0x8d0a('0x117')]+=0x1;_0x301b1f[_0x8d0a('0xb1')]=0xc;_0x301b1f[_0x8d0a('0xb2')]=_0x2daca5[_0x8d0a('0x1c3')];_0x350e48=_0x25573f[_0x8d0a('0x1be')];_0x25ff14=_0x25573f[_0x8d0a('0x134')];_0x408b6f[_0x8d0a('0xd8')](_0x301b1f)[_0x8d0a('0xc0')](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x408b6f[_0x8d0a('0x1b4')](_0x2daca5['reason'],_0x3b7a7c,_0x25573f)&&!_0x553bf7){if(_0x301b1f[_0x8d0a('0xfc')]+_0x301b1f['countcongestionretry']+_0x301b1f[_0x8d0a('0xfe')]+_0x301b1f[_0x8d0a('0xff')]+_0x301b1f['countdropretry']+_0x301b1f[_0x8d0a('0x100')]+_0x301b1f[_0x8d0a('0x101')]+_0x301b1f[_0x8d0a('0x10e')]>=_0x25573f[_0x8d0a('0x10f')]){_0x408b6f[_0x8d0a('0x102')](_0x301b1f,_0x412e81,_0x18f3d2,_0x2daca5[_0x8d0a('0x1c3')]);}else{_0x408b6f['createStateFinal'](_0x301b1f,_0x412e81,_0x18f3d2,_0x2daca5[_0x8d0a('0x1c3')]);}}}})[_0x8d0a('0xc2')](function(){if(_0x553bf7){_0x408b6f[_0x8d0a('0xc7')](_0x301b1f,_0x350e48,_0x25ff14)[_0x8d0a('0xc2')](function(){return _0x412e81(0x1);});}});});};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x102')]=function(_0x2bdb96,_0x521680,_0x46082b,_0x444771){var _0x427cfc=new Final(_0x2bdb96);_0x427cfc['state']=0xf;_0x427cfc[_0x8d0a('0xb2')]='Global';this['createStateFinal'](_0x427cfc,_0x521680,_0x46082b,_0x444771);};Dialer[_0x8d0a('0x1d')]['createStateFinal']=function(_0x468911,_0x321f60,_0x332b08,_0xd9d568){this[_0x8d0a('0xd6')](_0x468911)[_0x8d0a('0xc2')](function(){return _0x321f60(msgResponse(_0x8d0a('0x1c0'),'Success',_0xd9d568));})['catch'](function(){return _0x332b08(msgResponse(_0x8d0a('0x1dc'),_0x8d0a('0x155'),_0x8d0a('0x1dd')));});};Dialer[_0x8d0a('0x1d')]['predictive']=function(_0x8958cb){var _0x549e0e=_0x8958cb[_0x8d0a('0x1de')]/0x64;var _0xb1dab2=_0x8958cb['outboundDropCallsDayTimeout']/(_0x8958cb[_0x8d0a('0x124')]+_0x8958cb['outboundAnswerCallsDay']);var _0x4cc6dd=Math[_0x8d0a('0x1df')](_0x8958cb[_0x8d0a('0x1e0')]*(_0x8958cb['predictiveIntervalMaxThreshold']/0x64));var _0x39bee6=Math[_0x8d0a('0x1df')](_0x8958cb['predictiveIntervalAvailable']*(_0x8958cb[_0x8d0a('0x1e1')]/0x64));var _0x40037e=_0x8958cb[_0x8d0a('0xaa')]+_0x8958cb[_0x8d0a('0x5f')];var _0x2f9619=Math[_0x8d0a('0x1e2')](_0x8958cb['erlangCalls']*_0x8958cb[_0x8d0a('0x95')]*_0x8958cb[_0x8d0a('0x76')]*_0x8958cb[_0x8d0a('0x77')]);if(_['isUndefined'](_0x8958cb[_0x8d0a('0x2c')])){if(!_[_0x8d0a('0x46')](_0x8958cb[_0x8d0a('0x2b')])){_0x8958cb[_0x8d0a('0x2b')]=undefined;loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0x8d0a('0x1e3'));}if(!_[_0x8d0a('0x46')](_0x8958cb['handlePredictive'])){loggerPredictive[_0x8d0a('0x9f')]('[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x8958cb[_0x8d0a('0x99')]);_0x8958cb['handlePredictive']=undefined;}_0x8958cb[_0x8d0a('0x2c')]=moment()[_0x8d0a('0x7e')](_0x8d0a('0x109'));loggerPredictive[_0x8d0a('0x84')](_0x8958cb['name'],_0x8d0a('0x1e4'),_0x8958cb['startProgressive']);this[_0x8d0a('0x167')](_0x8958cb,0x1);}else if(ifInterval(_0x8958cb['dialPredictiveInterval'],_0x8958cb[_0x8d0a('0x2c')])){this['handlePower'](_0x8958cb,0x1);loggerPredictiveCalls['info'](_0x8d0a('0x1e5'),_0x8958cb[_0x8d0a('0x2c')],_0x8958cb[_0x8d0a('0x4a')]);_0x8958cb['erlangCalls']=0x0;_0x8958cb[_0x8d0a('0x75')]=0x0;}else if(_0x549e0e<_0xb1dab2&&_0x8958cb[_0x8d0a('0x1e6')]==='dropRate'){freeVariablesPredictive(_0x8958cb);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x1e7'),_0x8d0a('0x1e8'),_0xb1dab2,_0x8d0a('0x2c'),_0x8958cb[_0x8d0a('0x4a')]);}else if(_0x2f9619<_0x8958cb[_0x8d0a('0x75')]&&_0x8958cb[_0x8d0a('0x1e6')]===_0x8d0a('0x1e9')){freeVariablesPredictive(_0x8958cb);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x1ea'),_0x8d0a('0x1eb'),_0x2f9619,_0x8d0a('0x1ec'),_0x8958cb[_0x8d0a('0x75')],'startProgressive',_0x8958cb[_0x8d0a('0x4a')]);}else if(!ifInterval(_0x8958cb['dialPredictiveInterval'],_0x8958cb['startProgressive'])&&_[_0x8d0a('0x46')](_0x8958cb[_0x8d0a('0x2b')])&&!_[_0x8d0a('0x46')](_0x8958cb[_0x8d0a('0x2c')])){_0x8958cb[_0x8d0a('0x2b')]=moment()[_0x8d0a('0x7e')](_0x8d0a('0x109'));loggerPredictive[_0x8d0a('0x84')](_0x8958cb[_0x8d0a('0x4a')],'started\x20in\x20predictive\x20at',_0x8958cb[_0x8d0a('0x2b')]);this['averageHandleTime'](_0x8958cb[_0x8d0a('0x1ed')])[_0x8d0a('0xc2')](this[_0x8d0a('0x1ee')](_0x8958cb))[_0x8d0a('0xc2')](mergeDataErlangB(_0x8958cb))[_0x8d0a('0xc2')](this['startMethodPredictive'](_0x8958cb))['catch'](loggerCatchPredictive(_0x8d0a('0x1ef'),_0x8958cb));}else if(!ifInterval(_0x8958cb[_0x8d0a('0x1ed')],_0x8958cb[_0x8d0a('0x2b')])){_0x8958cb[_0x8d0a('0x75')]=0x0;_0x8958cb['startPredictive']=moment()['format'](_0x8d0a('0x109'));loggerPredictive[_0x8d0a('0x84')](_0x8958cb[_0x8d0a('0x4a')],_0x8d0a('0x1f0'),_0x8958cb[_0x8d0a('0x2b')]);clearInterval(_0x8958cb['handlePredictive']);_0x8958cb[_0x8d0a('0x99')]=undefined;this[_0x8d0a('0xcb')](_0x8958cb['dialPredictiveInterval'])[_0x8d0a('0xc2')](this[_0x8d0a('0x1ee')](_0x8958cb))[_0x8d0a('0xc2')](mergeDataErlangB(_0x8958cb))[_0x8d0a('0xc2')](this[_0x8d0a('0x1f1')](_0x8958cb))[_0x8d0a('0xc0')](loggerCatchPredictive(_0x8d0a('0x1f2'),_0x8958cb));}else if(_0x8958cb['predictiveIntervalAvailable']&&_0x40037e<_0x8958cb['predictiveIntervalAvailable']-_0x39bee6){freeVariablesPredictive(_0x8958cb);loggerPredictive['info'](_0x8958cb['name'],_0x8d0a('0x1f3'),_0x40037e,_0x8d0a('0x1f4'),_0x8958cb['predictiveIntervalAvailable'],'-',_0x39bee6,'=',_0x8958cb[_0x8d0a('0x1e0')]-_0x39bee6,')');}else if(_0x8958cb[_0x8d0a('0x1e0')]&&_0x40037e>_0x8958cb[_0x8d0a('0x1e0')]+_0x4cc6dd){freeVariablesPredictive(_0x8958cb);loggerPredictive[_0x8d0a('0x84')](_0x8958cb[_0x8d0a('0x4a')],_0x8d0a('0x1f3'),_0x40037e,_0x8d0a('0x1f5'),_0x8958cb[_0x8d0a('0x1e0')],'+',_0x4cc6dd,'=',_0x8958cb['predictiveIntervalAvailable']+_0x4cc6dd,')');}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x1ee')]=function(_0x2ee8d6){var _0x4fd73a=this;return function(_0xaafc61){return new Promise(function(_0x5c5140,_0x325be8){_[_0x8d0a('0x97')](_0x2ee8d6,_0xaafc61[0x0]);if(checkGetDataPredictive(_0xaafc61[0x0])){var _0x1e3001=_0x2ee8d6[_0x8d0a('0x1e0')]=_0x2ee8d6[_0x8d0a('0x5f')]+_0x2ee8d6[_0x8d0a('0xaa')];var _0x571c46=_0x2ee8d6[_0x8d0a('0x1ed')]*0x3c;var _0x261085=_0xaafc61[0x0][_0x8d0a('0x8b')]+_0xaafc61[0x0][_0x8d0a('0x71')];var _0x6a3400=(_0xaafc61[0x0][_0x8d0a('0x70')]+_0xaafc61[0x0][_0x8d0a('0x73')]+_0xaafc61[0x0][_0x8d0a('0x72')])/_0xaafc61[0x0]['predictiveIntervalTotalCalls'];_0x2ee8d6[_0x8d0a('0x76')]=_0x6a3400>0x0?_0x6a3400:0x1;switch(_0x2ee8d6[_0x8d0a('0x1e6')]){case _0x8d0a('0x1e9'):var _0x4b7535=_0x2ee8d6[_0x8d0a('0x1de')]/0x64;return _0x4fd73a[_0x8d0a('0x1f6')](_0x1e3001,_0x571c46,_0x261085,_0x6a3400,_0x4b7535)[_0x8d0a('0xc2')](function(_0x3681eb){return _0x5c5140(_0x3681eb);});case _0x8d0a('0x1f7'):var _0x2d850f=_0x2ee8d6[_0x8d0a('0x1de')]/0x64;return _0x4fd73a[_0x8d0a('0x1f8')](_0x1e3001,_0x571c46,_0x261085,_0x6a3400,_0x2d850f)['then'](function(_0x290f73){return _0x5c5140(_0x290f73);});default:return _0x325be8(msgResponse('[getDataPredictive]','Failure',_0x8d0a('0x1f9')));}}else{return _0x325be8(msgResponse(_0x8d0a('0x1fa'),_0x8d0a('0x155'),_0x8d0a('0x1fb')));}});};};Dialer['prototype'][_0x8d0a('0x1fc')]=function(_0x407df1){var _0x15de50=this;return function(_0x2870b6){return new Promise(function(_0x2b29fb,_0x1877b9){_[_0x8d0a('0x97')](_0x407df1,_0x2870b6[0x0]);if(checkGetDataPredictive(_0x2870b6[0x0])){loggerPredictive['info'](JSON[_0x8d0a('0x51')](_0x2870b6[0x0]));if(_0x407df1[_0x8d0a('0x1e6')]===_0x8d0a('0x1e9')){return _0x15de50[_0x8d0a('0xd5')](_0x407df1['id'])[_0x8d0a('0xc2')](function(_0x1e13ee){var _0x5058f6=_0x407df1[_0x8d0a('0x5a')]-_0x1e13ee[0x0][_0x8d0a('0x1fd')];var _0x5dcd93=_0x407df1[_0x8d0a('0x1ed')]*0x3c;var _0x3e2ad6=_0x2870b6[0x0][_0x8d0a('0x8b')]+_0x2870b6[0x0][_0x8d0a('0x71')];var _0x2f13a2=(_0x2870b6[0x0]['predictiveIntervalAnsweredCalls']+_0x2870b6[0x0][_0x8d0a('0x73')]+_0x2870b6[0x0][_0x8d0a('0x72')])/_0x2870b6[0x0]['predictiveIntervalTotalCalls'];var _0x9dde1e=_0x407df1[_0x8d0a('0x1de')]/0x64;_0x407df1[_0x8d0a('0x1fe')]=_0x1e13ee[0x0][_0x8d0a('0x1fd')]||0x0;_0x407df1[_0x8d0a('0x76')]=_0x2f13a2>0x0?_0x2f13a2:0x1;return _0x15de50[_0x8d0a('0x1f6')](_0x5058f6,_0x5dcd93,_0x3e2ad6,_0x2f13a2,_0x9dde1e);})[_0x8d0a('0xc2')](function(_0x17ec8d){return _0x2b29fb(_0x17ec8d);})[_0x8d0a('0xc0')](function(_0x20e016){return _0x1877b9(msgResponse(_0x8d0a('0x1ff'),_0x8d0a('0x155'),JSON[_0x8d0a('0x51')](_0x20e016)));});}if(_0x407df1[_0x8d0a('0x1e6')]===_0x8d0a('0x1f7')){return _0x15de50['getVoiceQueueRtPauses'](_0x407df1['id'])['then'](function(_0x142ec6){var _0x543cf4=_0x407df1['loggedIn']-_0x142ec6[0x0]['outboundQueuePauses'];var _0x194376=_0x407df1[_0x8d0a('0x1ed')]*0x3c;var _0x5d16ac=_0x2870b6[0x0][_0x8d0a('0x8b')]+_0x2870b6[0x0][_0x8d0a('0x71')];var _0x340869=(_0x2870b6[0x0][_0x8d0a('0x70')]+_0x2870b6[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x2870b6[0x0][_0x8d0a('0x72')])/_0x2870b6[0x0]['predictiveIntervalTotalCalls'];var _0x424984=_0x407df1[_0x8d0a('0x1de')]/0x64;_0x407df1[_0x8d0a('0x1fe')]=_0x142ec6[0x0]['outboundQueuePauses']||0x0;_0x407df1[_0x8d0a('0x76')]=_0x340869>0x0?_0x340869:0x1;return _0x15de50[_0x8d0a('0x1f8')](_0x543cf4,_0x194376,_0x5d16ac,_0x340869,_0x424984);})[_0x8d0a('0xc2')](function(_0x3db8df){return _0x2b29fb(_0x3db8df);})[_0x8d0a('0xc0')](function(_0x317656){return _0x1877b9(msgResponse(_0x8d0a('0x1ff'),_0x8d0a('0x155'),JSON[_0x8d0a('0x51')](_0x317656)));});}}else{return _0x1877b9(msgResponse('[getDataPredictive]',_0x8d0a('0x155'),'check\x20failure'));}});};};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x1f1')]=function(_0x289816){var _0x4342b0=this;return function(){var _0xaf3ba0=0x0;var _0x51e525=Math[_0x8d0a('0x1e2')](_0x289816[_0x8d0a('0x7a')]*0x3e8);if(_0x51e525>0x0){_0x51e525=_0x51e525<0x64?0x64:_0x51e525;loggerPredictive[_0x8d0a('0x84')](_0x289816[_0x8d0a('0x4a')],_0x8d0a('0x200'),_0x51e525,_0x8d0a('0x52'));_0x289816[_0x8d0a('0x99')]=setInterval(function(){_0x4342b0[_0x8d0a('0x99')](_0x289816);loggerPredictiveCalls[_0x8d0a('0x84')](_0x8d0a('0x201'),_0xaf3ba0+=0x1);},_0x51e525);}else{loggerPredictive[_0x8d0a('0x84')](_0x289816[_0x8d0a('0x4a')],'fail\x20to\x20scheduled\x20calls');}};};Dialer[_0x8d0a('0x1d')]['checkContactBlack']=function(_0x5d30ea,_0x3a884e){var _0x47c38c=this;return function(_0x428beb){if(_['isEmpty'](_0x428beb)){if(_[_0x8d0a('0xb7')](_0x3a884e['UserId'])||!_0x3a884e[_0x8d0a('0x202')]){if(_0x5d30ea[_0x8d0a('0x64')]===_0x8d0a('0x9')){_0x5d30ea[_0x8d0a('0x13f')]=_['isUndefined'](_0x5d30ea['queueStatusComplete'])?!![]:_0x5d30ea[_0x8d0a('0x13f')];var _0x8cf216=uuid['v4']();_0x47c38c[_0x8d0a('0x28')][_0x8cf216]=new Action(_0x5d30ea,_0x3a884e,_0x8cf216);loggerBooked[_0x8d0a('0x84')](_0x8d0a('0x203'),_0x8cf216,_0x8d0a('0x204'),JSON[_0x8d0a('0x51')](_0x5d30ea['queueStatusComplete']),'Queue:\x20',_0x5d30ea[_0x8d0a('0x4a')]);if(_0x5d30ea['queueStatusComplete']){_0x5d30ea[_0x8d0a('0x13f')]=![];_0x47c38c[_0x8d0a('0x2e')][_0x47c38c[_0x8d0a('0x28')][_0x8cf216][_0x8d0a('0xbb')]]=[];ami[_0x8d0a('0xb8')]({'actionid':_0x8cf216,'action':_0x8d0a('0x205'),'queue':_0x5d30ea[_0x8d0a('0x4a')]})[_0x8d0a('0xc0')](function(){_0x47c38c['updateOriginated'](_0x5d30ea);_0x47c38c[_0x8d0a('0xcd')]({'active':![],'ContactId':_0x47c38c['actions'][_0x8cf216][_0x8d0a('0x10a')],'ListId':_0x47c38c[_0x8d0a('0x28')][_0x8cf216][_0x8d0a('0xde')],'VoiceQueueId':_0x47c38c[_0x8d0a('0x28')][_0x8cf216][_0x8d0a('0xe0')]||undefined,'CampaignId':_0x47c38c[_0x8d0a('0x28')][_0x8cf216]['CampaignId']||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x47c38c[_0x8d0a('0x28')][_0x8cf216];});}else{loggerBooked[_0x8d0a('0x84')](_0x8d0a('0x206'),JSON[_0x8d0a('0x51')](_0x5d30ea[_0x8d0a('0x13f')]),_0x8d0a('0x207'),_0x5d30ea[_0x8d0a('0x4a')]);_0x47c38c[_0x8d0a('0xbc')](_0x5d30ea);_0x47c38c[_0x8d0a('0xcd')]({'active':![],'ContactId':_0x47c38c[_0x8d0a('0x28')][_0x8cf216][_0x8d0a('0x10a')],'ListId':_0x47c38c[_0x8d0a('0x28')][_0x8cf216][_0x8d0a('0xde')],'VoiceQueueId':_0x47c38c['actions'][_0x8cf216]['VoiceQueueId']||undefined,'CampaignId':_0x47c38c[_0x8d0a('0x28')][_0x8cf216][_0x8d0a('0xe1')]||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x208')));delete _0x47c38c[_0x8d0a('0x28')][_0x8cf216];}}else{return _0x47c38c['actionOriginate'](_0x5d30ea,_0x3a884e);}}else{if(getDiff(_0x3a884e[_0x8d0a('0x209')])<_0x5d30ea[_0x8d0a('0x20a')]*0x3c){if(_0x3a884e['Agent']&&!_0x3a884e[_0x8d0a('0x16c')][_0x8d0a('0x20b')]){_0x47c38c['preview'][_0x8d0a('0x141')](_0x3a884e['id'])[_0x8d0a('0x20')](function(){_0x47c38c[_0x8d0a('0xbc')](_0x5d30ea);});}else{_0x47c38c[_0x8d0a('0xcf')]({'active':![]},_0x3a884e['id'],0x1)[_0x8d0a('0x20')](function(){_0x47c38c['updateOriginated'](_0x5d30ea);});}}else{_0x5d30ea[_0x8d0a('0x6e')]+=0x1;_0x47c38c[_0x8d0a('0xbc')](_0x5d30ea);if(_0x5d30ea[_0x8d0a('0x20c')]){_0x47c38c[_0x8d0a('0xcd')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3a884e[_0x8d0a('0x10a')],'ListId':_0x3a884e['ListId'],'VoiceQueueId':_0x3a884e[_0x8d0a('0xe0')]||undefined,'CampaignId':_0x3a884e['CampaignId']||undefined})[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x20d')));_0x47c38c['createHistory'](createObjHistory(_0x5d30ea,_0x3a884e,_0x8d0a('0x20e'),0x17,_0x8d0a('0x20f')))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0x210')));}else{_0x47c38c[_0x8d0a('0xdd')](createObjHistory(_0x5d30ea,_0x3a884e,_0x8d0a('0x211'),0x16,_0x8d0a('0x212')),_0x8d0a('0x213'),'[Originate][HistoryRecallClose]');}}}}else{_0x5d30ea['outboundBlacklistCallsDay']+=0x1;_0x47c38c[_0x8d0a('0xdd')](createObjHistory(_0x5d30ea,_0x3a884e,'BLACKLIST',0xd,_0x8d0a('0x214')),_0x8d0a('0x215'),_0x8d0a('0x216'));throw _0x8d0a('0x217');}};};Dialer[_0x8d0a('0x1d')]['handleIvr']=function(_0x1f5857){var _0x449c38=this;var _0xdac769=_0x1f5857[_0x8d0a('0x218')]-_0x1f5857['originated']-_0x1f5857[_0x8d0a('0xd1')];emitCampaignSummary(_0x1f5857);if(_0xdac769>0x0){if(_0xdac769>this[_0x8d0a('0x27')]){_0xdac769=this[_0x8d0a('0x27')];}_0x1f5857['temp']+=_0xdac769;this[_0x8d0a('0xd3')](_0x1f5857['id'],_0xdac769,_0x1f5857[_0x8d0a('0x219')],_0x1f5857)['then'](function(_0x4c7543){_0x1f5857[_0x8d0a('0xd1')]-=_0xdac769;_0x1f5857[_0x8d0a('0xd1')]=_0x1f5857[_0x8d0a('0xd1')]>0x0?_0x1f5857[_0x8d0a('0xd1')]:0x0;if(!checkContactEmpty(_0x4c7543)){_0x1f5857['message']=_0x8d0a('0xa7');logger[_0x8d0a('0x84')](_0x8d0a('0x21a')+_0x1f5857[_0x8d0a('0x4a')]);}else{_0x1f5857[_0x8d0a('0x78')]+=_0x4c7543[_0x8d0a('0xa0')];_0x1f5857['message']=_0x8d0a('0x21b');for(var _0x2ddbe9=0x0;_0x2ddbe9<_0x4c7543['length'];_0x2ddbe9+=0x1){_0x1f5857[_0x8d0a('0x21c')]+=0x1;if(_[_0x8d0a('0xb7')](_0x4c7543[_0x2ddbe9])||_['isNil'](_0x4c7543[_0x2ddbe9][_0x8d0a('0x19e')])||_[_0x8d0a('0xb7')](_0x4c7543[_0x2ddbe9][_0x8d0a('0x181')])){_0x449c38[_0x8d0a('0xdc')]('[actionOriginate]\x20',_0x1f5857,_0x4c7543[_0x2ddbe9]);}else{_0x449c38[_0x8d0a('0xc9')](_[_0x8d0a('0x13e')](_0x4c7543[_0x2ddbe9],[_0x8d0a('0xe1'),_0x8d0a('0x181')]))[_0x8d0a('0xc2')](_0x449c38['checkContactBlack'](_0x1f5857,_0x4c7543[_0x2ddbe9]))['catch'](_0x449c38['loggerHandler']('[actionOriginateIvr]\x20',_0x1f5857));}}}})[_0x8d0a('0xc0')](loggerGetContactDialer('[getContactCampaign2]',_0x1f5857,_0xdac769));}};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x167')]=function(_0x43ef10,_0x2f33ba){var _0x23ee31=this;var _0x461aea=[];var _0x52a8da=_0x2f33ba>=0x1?_0x2f33ba:0x1;if(_0x43ef10[_0x8d0a('0x64')]===_0x8d0a('0x9')){_0x52a8da=0x1;}var _0x22af87=Math[_0x8d0a('0x1e2')](_0x43ef10[_0x8d0a('0xaa')]*_0x52a8da)-_0x43ef10[_0x8d0a('0x78')]-_0x43ef10['temp'];emitVoiceQueueSummary(_0x43ef10);if(_0x43ef10['dialLimitQueue']>0x0){var _0xa595de=_0x43ef10[_0x8d0a('0x21d')]-_0x43ef10[_0x8d0a('0x78')]-_0x43ef10[_0x8d0a('0x5f')]-_0x43ef10['temp']-_0x43ef10[_0x8d0a('0x5b')];if(_0x22af87>_0xa595de){_0x22af87=_0xa595de;}}if(_0x22af87>0x0){if(_0x43ef10[_0x8d0a('0x64')]===_0x8d0a('0x9')){_0x22af87=0x1;}if(_0x22af87>this['maxNumberOriginate']){_0x22af87=this[_0x8d0a('0x27')];}_0x43ef10[_0x8d0a('0xd1')]+=_0x22af87;for(var _0x113f1d in this[_0x8d0a('0x25')]){if(typeof this[_0x8d0a('0x25')][_0x113f1d]!==_0x8d0a('0xa1')){if(this[_0x8d0a('0x25')][_0x113f1d][_0x8d0a('0xb1')]==='not_inuse'&&this['agents'][_0x113f1d]['status']===_0x8d0a('0x177')){_0x461aea[_0x8d0a('0x159')](this[_0x8d0a('0x25')][_0x113f1d]['id']);}}}this['getContactDialer'](_0x43ef10['id'],_0x461aea,_0x22af87,_0x43ef10[_0x8d0a('0x219')],_0x43ef10)[_0x8d0a('0xc2')](function(_0xda52f9){_0x43ef10[_0x8d0a('0xd1')]-=_0x22af87;_0x43ef10['temp']=_0x43ef10[_0x8d0a('0xd1')]>0x0?_0x43ef10[_0x8d0a('0xd1')]:0x0;if(!checkContactEmpty(_0xda52f9)){_0x23ee31[_0x8d0a('0xbe')](_0x43ef10)['then'](sendMessageReschedule(_0x43ef10))[_0x8d0a('0xc0')](loggerCatch('[countReScheduled]\x20'));}else{_0x43ef10[_0x8d0a('0x78')]+=_0xda52f9[_0x8d0a('0xa0')];_0x43ef10[_0x8d0a('0x47')]=_0x43ef10[_0x8d0a('0x64')]===_0x8d0a('0x9')?_0x8d0a('0x189'):_0x8d0a('0x21b');for(var _0x3458e2=0x0;_0x3458e2<_0xda52f9[_0x8d0a('0xa0')];_0x3458e2+=0x1){if(_[_0x8d0a('0xb7')](_0xda52f9[_0x3458e2])||_['isNil'](_0xda52f9[_0x3458e2]['Contact'])||_[_0x8d0a('0xb7')](_0xda52f9[_0x3458e2]['phone'])){_0x23ee31['emptyContact'](_0x8d0a('0x21e'),_0x43ef10,_0xda52f9[_0x3458e2]);}else{_0x23ee31[_0x8d0a('0xc3')](_['pick'](_0xda52f9[_0x3458e2],[_0x8d0a('0xe0'),_0x8d0a('0x181')]))[_0x8d0a('0xc2')](_0x23ee31[_0x8d0a('0x21f')](_0x43ef10,_0xda52f9[_0x3458e2]))[_0x8d0a('0xc0')](_0x23ee31[_0x8d0a('0xdb')](_0x8d0a('0x21e'),_0x43ef10));}}}})[_0x8d0a('0xc0')](loggerGetContactDialer(_0x8d0a('0x220'),_0x43ef10,_0x22af87));}};Dialer['prototype'][_0x8d0a('0x99')]=function(_0x51afa1){if(_0x51afa1['dialLimitQueue']>0x0){var _0x53838f=_0x51afa1[_0x8d0a('0x21d')]-_0x51afa1[_0x8d0a('0x78')]-_0x51afa1[_0x8d0a('0x5f')];if(_0x53838f>0x0){this[_0x8d0a('0x221')](_0x51afa1);}else{loggerPredictiveCalls[_0x8d0a('0x84')](_0x8d0a('0x222'));}}else{this[_0x8d0a('0x221')](_0x51afa1);}};Dialer[_0x8d0a('0x1d')]['tryOriginatePredictive']=function(_0x4e79ae){var _0x311494=this;var _0x4ba7cb=[];_0x4e79ae[_0x8d0a('0x78')]+=0x1;for(var _0x577252 in this[_0x8d0a('0x25')]){if(typeof this[_0x8d0a('0x25')][_0x577252]!=='undefined'){if(this[_0x8d0a('0x25')][_0x577252]['state']===_0x8d0a('0x223')&&this['agents'][_0x577252]['status']==='reachable'){_0x4ba7cb[_0x8d0a('0x159')](this[_0x8d0a('0x25')][_0x577252]['id']);}}}this[_0x8d0a('0x224')](_0x4e79ae['id'],_0x4ba7cb,0x1,_0x4e79ae['dialOrderByScheduledAt'],_0x4e79ae)[_0x8d0a('0xc2')](function(_0x37a587){if(!checkContactEmpty(_0x37a587)){checkContactLowerLimitOriginate(_0x4e79ae,0x1,0x0);_0x311494[_0x8d0a('0xbe')](_0x4e79ae)['then'](sendMessageReschedule(_0x4e79ae))[_0x8d0a('0xc0')](loggerCatch(_0x8d0a('0xc1')));}else{_0x4e79ae[_0x8d0a('0x47')]=_0x8d0a('0x21b');if(_[_0x8d0a('0xb7')](_0x37a587[0x0])||_['isNil'](_0x37a587[0x0][_0x8d0a('0x19e')])||_[_0x8d0a('0xb7')](_0x37a587[0x0]['phone'])){_0x311494['emptyContact']('[actionOriginate]\x20',_0x4e79ae,_0x37a587[0x0]);}else{_0x311494[_0x8d0a('0xc3')](_[_0x8d0a('0x13e')](_0x37a587[0x0],[_0x8d0a('0xe0'),'phone']))[_0x8d0a('0xc2')](_0x311494['checkContactBlack'](_0x4e79ae,_0x37a587[0x0]))[_0x8d0a('0xc0')](_0x311494[_0x8d0a('0xdb')](_0x8d0a('0x225'),_0x4e79ae));}}})[_0x8d0a('0xc0')](loggerGetContactDialer(_0x8d0a('0x226'),_0x4e79ae,0x1));emitVoiceQueueSummary(_0x4e79ae);};Dialer[_0x8d0a('0x1d')][_0x8d0a('0x1f6')]=function(_0x2b8e15,_0x5f204f,_0x16112d,_0x56f6ef,_0x4a2269,_0x4d07b3){loggerPredictive[_0x8d0a('0x84')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x227'),_0x2b8e15);loggerPredictive[_0x8d0a('0x84')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5f204f);loggerPredictive['info'](_0x8d0a('0x228'),_0x16112d);loggerPredictive[_0x8d0a('0x84')]('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',_0x56f6ef);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x229'),_0x4a2269);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x8c'));return new Promise(function(_0x4b6846,_0x2d08ec){if(_0x2b8e15<=0x0||isNaN(_0x2b8e15)){return _0x2d08ec(msgResponse('[abandonmentRate]','Error',_0x8d0a('0x22a')+_0x2b8e15));}if(_0x16112d<=0x0||isNaN(_0x16112d)){return _0x2d08ec(msgResponse('[abandonmentRate]',_0x8d0a('0x50'),_0x8d0a('0x22b')+_0x16112d));}if(_0x56f6ef<=0x0||isNaN(_0x56f6ef)){return _0x2d08ec(msgResponse(_0x8d0a('0x22c'),_0x8d0a('0x50'),_0x8d0a('0x22d')+_0x56f6ef));}if(_0x5f204f<=0x0||isNaN(_0x5f204f)){return _0x2d08ec(msgResponse(_0x8d0a('0x22c'),_0x8d0a('0x50'),'interval\x20=\x20'+_0x5f204f));}if(_0x4a2269<=0x0||isNaN(_0x4a2269)){return _0x2d08ec(msgResponse('[abandonmentRate]',_0x8d0a('0x50'),_0x8d0a('0x22e')+_0x4a2269));}_0x4d07b3=_0x4d07b3||0x0;var _0x225acf=0x1/_0x16112d;var _0x51c182=0x0;var _0x503e8f=0x0;var _0x23d6b4=0x0;var _0x5b3ee6=0x0;for(var _0x2e8c80=0x0;_0x23d6b4<_0x4a2269;_0x2e8c80+=0x1){_0x503e8f=_0x2e8c80/_0x5f204f;_0x51c182=(_0x56f6ef*_0x503e8f+_0x4d07b3)/_0x225acf;_0x23d6b4=erlangb(_0x51c182,_0x2b8e15);_0x5b3ee6=_0x51c182/_0x2b8e15*(0x1-erlangb(_0x51c182,_0x2b8e15));}return _0x4b6846({'erlangCalls':_0x2e8c80,'erlangCallToSecond':_0x5f204f/_0x2e8c80,'erlangAbandonmentRate':_0x23d6b4,'erlangBusyFactor':_0x5b3ee6});});};Dialer['prototype'][_0x8d0a('0x1f8')]=function(_0x1b0109,_0x6c01bd,_0x44ab35,_0x1f2c63,_0xf52f67,_0x1ebf2d){loggerPredictive['info']('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive['info'](_0x8d0a('0x227'),_0x1b0109);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x22f'),_0x6c01bd);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x228'),_0x44ab35);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x230'),_0x1f2c63);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x231'),_0xf52f67);loggerPredictive[_0x8d0a('0x84')](_0x8d0a('0x8c'));return new Promise(function(_0x105e35,_0x34167a){if(_0x1b0109<=0x0||isNaN(_0x1b0109)){return _0x34167a(msgResponse(_0x8d0a('0x232'),_0x8d0a('0x50'),'m\x20=\x20'+_0x1b0109));}if(_0x44ab35<=0x0||isNaN(_0x44ab35)){return _0x34167a(msgResponse(_0x8d0a('0x232'),'Error',_0x8d0a('0x22b')+_0x44ab35));}if(_0x1f2c63<=0x0||isNaN(_0x1f2c63)){return _0x34167a(msgResponse('[busyFactor]',_0x8d0a('0x50'),_0x8d0a('0x22d')+_0x1f2c63));}if(_0x6c01bd<=0x0||isNaN(_0x6c01bd)){return _0x34167a(msgResponse(_0x8d0a('0x232'),_0x8d0a('0x50'),_0x8d0a('0x233')+_0x6c01bd));}if(_0xf52f67<=0x0||isNaN(_0xf52f67)){return _0x34167a(msgResponse(_0x8d0a('0x232'),_0x8d0a('0x50'),'Umin\x20=\x20'+_0xf52f67));}_0x1ebf2d=_0x1ebf2d||0x0;var _0x673c17=0x1/_0x44ab35;var _0x47601a=0x0;var _0x2e3725=0x0;var _0x1667c4=0x0;var _0x456d49=0x0;for(var _0x1cdab2=0x0;_0x456d49<_0xf52f67;_0x1cdab2+=0x1){_0x2e3725=_0x1cdab2/_0x6c01bd;_0x47601a=(_0x1f2c63*_0x2e3725+_0x1ebf2d)/_0x673c17;_0x1667c4=erlangb(_0x47601a,_0x1b0109);_0x456d49=_0x47601a/_0x1b0109*(0x1-erlangb(_0x47601a,_0x1b0109));}return _0x105e35({'erlangCalls':_0x1cdab2,'erlangCallToSecond':_0x6c01bd/_0x1cdab2,'erlangAbandonmentRate':_0x1667c4,'erlangBusyFactor':_0x456d49});});};module[_0x8d0a('0x234')]=Dialer;
\ No newline at end of file
index 45751ac..e768107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa014=['uniqueid','name','calleridnum','number','responsetime','droptime','endtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','seconds','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countagentrejectretry','countdropretry','countmachineretry'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa014,0xeb));var _0x4a01=function(_0x102c19,_0x3a95fa){_0x102c19=_0x102c19-0x0;var _0x1d384d=_0xa014[_0x102c19];return _0x1d384d;};'use strict';var util=require(_0x4a01('0x0'));var _=require(_0x4a01('0x1'));var moment=require('moment');function getSeconds(_0x52bd11,_0x5854b9){var _0x1a0541=moment(_0x52bd11)[_0x4a01('0x2')](0x0);var _0x1ad0bb=moment(_0x5854b9)['milliseconds'](0x0);return _0x1a0541[_0x4a01('0x3')](_0x1ad0bb,_0x4a01('0x4'));}function QueueCallerAbandon(_0x4525f9,_0x4c1c74){this['scheduledat']=_0x4525f9[_0x4a01('0x5')];this[_0x4a01('0x6')]=_0x4525f9['type'];this['campaigntype']=_0x4525f9[_0x4a01('0x6')]===_0x4a01('0x7')?'queue':_0x4525f9[_0x4a01('0x6')];this[_0x4a01('0x8')]=_0x4525f9['countbusyretry'];this[_0x4a01('0x9')]=_0x4525f9[_0x4a01('0x9')];this[_0x4a01('0xa')]=_0x4525f9[_0x4a01('0xa')];this[_0x4a01('0xb')]=_0x4525f9[_0x4a01('0x8')]+_0x4525f9[_0x4a01('0x9')]+_0x4525f9[_0x4a01('0xa')]+_0x4525f9[_0x4a01('0xc')]+_0x4525f9['countdropretry']+_0x4525f9[_0x4a01('0xd')]+_0x4525f9['countmachineretry']+_0x4525f9[_0x4a01('0xe')];this[_0x4a01('0xc')]=_0x4525f9[_0x4a01('0xc')];this[_0x4a01('0xf')]=_0x4525f9[_0x4a01('0xf')];this[_0x4a01('0xd')]=_0x4525f9['countabandonedretry'];this['countmachineretry']=_0x4525f9[_0x4a01('0x10')];this['countagentrejectretry']=_0x4525f9[_0x4a01('0xe')];this[_0x4a01('0x11')]=_0x4c1c74[_0x4a01('0x11')];this['calleridname']=_0x4525f9[_0x4a01('0x12')];this[_0x4a01('0x13')]=_0x4525f9[_0x4a01('0x14')];this['starttime']=_0x4525f9['starttime'];this[_0x4a01('0x15')]=_0x4525f9[_0x4a01('0x15')];this[_0x4a01('0x16')]=_0x4525f9[_0x4a01('0x16')];this[_0x4a01('0x17')]=this[_0x4a01('0x16')];this['ringtime']=getSeconds(_0x4525f9['responsetime'],_0x4525f9['starttime']);this[_0x4a01('0x18')]=getSeconds(this[_0x4a01('0x16')],_0x4525f9[_0x4a01('0x15')]);this[_0x4a01('0x19')]=0x0;this[_0x4a01('0x1a')]=_0x4c1c74[_0x4a01('0x1a')];this[_0x4a01('0x1b')]=_0x4c1c74[_0x4a01('0x1c')];this[_0x4a01('0x1d')]=_0x4c1c74[_0x4a01('0x1d')];this[_0x4a01('0x1e')]=_0x4525f9[_0x4a01('0x1e')];this[_0x4a01('0x1f')]=_0x4525f9['callbackuniqueid'];this[_0x4a01('0x20')]=_0x4525f9[_0x4a01('0x20')];this[_0x4a01('0x21')]=_0x4525f9['recallme'];this[_0x4a01('0x22')]=_0x4525f9[_0x4a01('0x22')];this[_0x4a01('0x23')]=_0x4525f9[_0x4a01('0x23')];this[_0x4a01('0x24')]=_0x4525f9[_0x4a01('0x24')];this[_0x4a01('0x25')]=_0x4525f9[_0x4a01('0x25')];this[_0x4a01('0x26')]=_0x4525f9[_0x4a01('0x26')];this[_0x4a01('0x27')]=_0x4525f9[_0x4a01('0x27')]||'';this[_0x4a01('0x28')]=_0x4525f9[_0x4a01('0x28')]||'';}module[_0x4a01('0x29')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x3451=['campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','type'];(function(_0x3c59fc,_0x10dbd2){var _0x2b78d4=function(_0x5f161a){while(--_0x5f161a){_0x3c59fc['push'](_0x3c59fc['shift']());}};_0x2b78d4(++_0x10dbd2);}(_0x3451,0x1a8));var _0x1345=function(_0x4e3563,_0xb81ba){_0x4e3563=_0x4e3563-0x0;var _0x164b85=_0x3451[_0x4e3563];return _0x164b85;};'use strict';var util=require(_0x1345('0x0'));var _=require(_0x1345('0x1'));var moment=require(_0x1345('0x2'));function getSeconds(_0x423654,_0x35a4c0){var _0x357086=moment(_0x423654)[_0x1345('0x3')](0x0);var _0x4f5073=moment(_0x35a4c0)[_0x1345('0x3')](0x0);return _0x357086[_0x1345('0x4')](_0x4f5073,'seconds');}function QueueCallerAbandon(_0x230f60,_0x5e9095){this['scheduledat']=_0x230f60['scheduledat'];this[_0x1345('0x5')]=_0x230f60[_0x1345('0x5')];this[_0x1345('0x6')]=_0x230f60[_0x1345('0x5')]==='outbound'?_0x1345('0x7'):_0x230f60[_0x1345('0x5')];this[_0x1345('0x8')]=_0x230f60[_0x1345('0x8')];this[_0x1345('0x9')]=_0x230f60[_0x1345('0x9')];this['countnoanswerretry']=_0x230f60[_0x1345('0xa')];this['countglobal']=_0x230f60[_0x1345('0x8')]+_0x230f60[_0x1345('0x9')]+_0x230f60[_0x1345('0xa')]+_0x230f60[_0x1345('0xb')]+_0x230f60['countdropretry']+_0x230f60['countabandonedretry']+_0x230f60[_0x1345('0xc')]+_0x230f60[_0x1345('0xd')];this[_0x1345('0xb')]=_0x230f60[_0x1345('0xb')];this['countdropretry']=_0x230f60[_0x1345('0xe')];this[_0x1345('0xf')]=_0x230f60[_0x1345('0xf')];this[_0x1345('0xc')]=_0x230f60[_0x1345('0xc')];this['countagentrejectretry']=_0x230f60['countagentrejectretry'];this['uniqueid']=_0x5e9095[_0x1345('0x10')];this[_0x1345('0x11')]=_0x230f60[_0x1345('0x12')];this[_0x1345('0x13')]=_0x230f60[_0x1345('0x14')];this[_0x1345('0x15')]=_0x230f60['starttime'];this[_0x1345('0x16')]=_0x230f60[_0x1345('0x16')];this[_0x1345('0x17')]=_0x230f60[_0x1345('0x17')];this[_0x1345('0x18')]=this[_0x1345('0x17')];this[_0x1345('0x19')]=getSeconds(_0x230f60[_0x1345('0x16')],_0x230f60[_0x1345('0x15')]);this[_0x1345('0x1a')]=getSeconds(this[_0x1345('0x17')],_0x230f60[_0x1345('0x16')]);this[_0x1345('0x1b')]=0x0;this[_0x1345('0x7')]=_0x5e9095['queue'];this[_0x1345('0x1c')]=_0x5e9095[_0x1345('0x1d')];this[_0x1345('0x1e')]=_0x5e9095[_0x1345('0x1e')];this[_0x1345('0x1f')]=_0x230f60[_0x1345('0x1f')];this[_0x1345('0x20')]=_0x230f60['callbackuniqueid'];this[_0x1345('0x21')]=_0x230f60['callbackat'];this[_0x1345('0x22')]=_0x230f60[_0x1345('0x22')];this[_0x1345('0x23')]=_0x230f60['ContactId'];this[_0x1345('0x24')]=_0x230f60['ListId'];this['UserId']=_0x230f60[_0x1345('0x25')];this[_0x1345('0x26')]=_0x230f60[_0x1345('0x26')];this[_0x1345('0x27')]=_0x230f60['CampaignId'];this[_0x1345('0x28')]=_0x230f60[_0x1345('0x28')]||'';this[_0x1345('0x29')]=_0x230f60['originatecalleridname']||'';}module[_0x1345('0x2a')]=QueueCallerAbandon;
\ No newline at end of file
index e81f7dc..50397c8 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(_0x2914e2,_0x40a649){var _0x15fbd3=function(_0x83b967){while(--_0x83b967){_0x2914e2['push'](_0x2914e2['shift']());}};_0x15fbd3(++_0x40a649);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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(_0x221649,_0x2a286d){var _0x1a51f2=function(_0x45be7c){while(--_0x45be7c){_0x221649['push'](_0x221649['shift']());}};_0x1a51f2(++_0x2a286d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'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 8a9908e..ec86e52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e99=['./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','syncHangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','channel','uniqueid','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','create','parse','application/pdf','then','notify','.pdf','catch','error','\x20notify\x20','stringify','merge','pick','response','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','execOriginate','FaxAccountId','message','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./util/util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9e99,0x162));var _0x99e9=function(_0x5a9a33,_0x295345){_0x5a9a33=_0x5a9a33-0x0;var _0x3d9bf9=_0x9e99[_0x5a9a33];return _0x3d9bf9;};'use strict';var util=require(_0x99e9('0x0'));var _=require(_0x99e9('0x1'));var BPromise=require(_0x99e9('0x2'));var uuid=require(_0x99e9('0x3'));var moment=require(_0x99e9('0x4'));var path=require('path');var tiff2pdf=require(_0x99e9('0x5'));var gs=require(_0x99e9('0x6'));var logger=require(_0x99e9('0x7'))(_0x99e9('0x8'));var ami=require(_0x99e9('0x9'));var rpcDb=require(_0x99e9('0xa'));var Channel=require('./channel');var ut=require(_0x99e9('0xb'));var Action=require(_0x99e9('0xc'));var faxAccount=require(_0x99e9('0xd'));var attachment=require(_0x99e9('0xe'));var faxMessage=require(_0x99e9('0xf'));function Fax(_0x57c6eb){this[_0x99e9('0x10')]={};this[_0x99e9('0x11')]=_0x57c6eb[_0x99e9('0x11')];this[_0x99e9('0x12')]=_0x57c6eb[_0x99e9('0x12')];this[_0x99e9('0x13')]={};ami['on'](_0x99e9('0x14'),this[_0x99e9('0x15')][_0x99e9('0x16')](this));ami['on'](_0x99e9('0x17'),this[_0x99e9('0x18')][_0x99e9('0x16')](this));ami['on'](_0x99e9('0x19'),this[_0x99e9('0x1a')]['bind'](this));ami['on'](_0x99e9('0x1b'),this[_0x99e9('0x1c')][_0x99e9('0x16')](this));ami['on'](_0x99e9('0x1d'),this[_0x99e9('0x1e')][_0x99e9('0x16')](this));ami['on'](_0x99e9('0x1f'),this[_0x99e9('0x20')][_0x99e9('0x16')](this));ami['on']('hangup',this[_0x99e9('0x21')][_0x99e9('0x16')](this));ami['on'](_0x99e9('0x22'),this[_0x99e9('0x23')][_0x99e9('0x16')](this));}Fax[_0x99e9('0x24')][_0x99e9('0x15')]=function(_0x3686ed){if(_0x3686ed[_0x99e9('0x25')]===_0x99e9('0x26')){for(var _0x27b9f0 in this[_0x99e9('0x11')]){if(this[_0x99e9('0x11')][_0x99e9('0x27')](_0x27b9f0)){if(_0x3686ed[_0x99e9('0x28')]===this[_0x99e9('0x11')][_0x27b9f0][_0x99e9('0x29')]){this[_0x99e9('0x10')][_0x3686ed['uniqueid']]={};this[_0x99e9('0x10')][_0x3686ed['uniqueid']][_0x99e9('0x2a')]=_0x3686ed[_0x99e9('0x2a')];this['channels'][_0x3686ed[_0x99e9('0x2b')]]['id']=this[_0x99e9('0x11')][_0x27b9f0]['id'];this[_0x99e9('0x10')][_0x3686ed[_0x99e9('0x2b')]][_0x99e9('0x2c')]=this[_0x99e9('0x11')][_0x27b9f0]['name'];logger[_0x99e9('0x2d')](_0x3686ed[_0x99e9('0x2b')],'\x20syncNewchannel\x20');}}}}if(this[_0x99e9('0x13')][_0x3686ed[_0x99e9('0x2b')]]){this['channels'][_0x3686ed['uniqueid']]={};this['channels'][_0x3686ed[_0x99e9('0x2b')]][_0x99e9('0x2a')]=_0x3686ed['channel'];logger[_0x99e9('0x2d')](_0x3686ed[_0x99e9('0x2b')],_0x99e9('0x2e'));}};Fax[_0x99e9('0x24')][_0x99e9('0x18')]=function(_0x7176bd){if(this[_0x99e9('0x10')][_0x7176bd[_0x99e9('0x2b')]]){for(var _0x210ef4 in _0x7176bd[_0x99e9('0x2f')]){if(_0x7176bd['variable'][_0x99e9('0x27')](_0x210ef4)){this[_0x99e9('0x10')][_0x7176bd[_0x99e9('0x2b')]][_0x210ef4]=_0x7176bd[_0x99e9('0x30')];}}}};Fax['prototype'][_0x99e9('0x1a')]=function(_0x3be2e8){if(this[_0x99e9('0x10')][_0x3be2e8[_0x99e9('0x2b')]]){this[_0x99e9('0x10')][_0x3be2e8[_0x99e9('0x2b')]][_0x99e9('0x31')]=_0x3be2e8[_0x99e9('0x31')];this[_0x99e9('0x10')][_0x3be2e8['uniqueid']][_0x99e9('0x32')]=_0x3be2e8['channelstatedesc'];}};Fax[_0x99e9('0x24')][_0x99e9('0x1c')]=function(_0xae2315){if(this['channels'][_0xae2315['uniqueid']]){for(var _0x5752cb in _0xae2315[_0x99e9('0x2f')]){if(_0xae2315['variable'][_0x99e9('0x27')](_0x5752cb)){this[_0x99e9('0x10')][_0xae2315[_0x99e9('0x2b')]][_0x5752cb]=_0xae2315[_0x99e9('0x30')];}}}};Fax[_0x99e9('0x24')][_0x99e9('0x1e')]=function(_0x1c1a47){if(this['channels'][_0x1c1a47[_0x99e9('0x2b')]]){this[_0x99e9('0x10')][_0x1c1a47[_0x99e9('0x2b')]]['operation']=_0x1c1a47[_0x99e9('0x33')];this['channels'][_0x1c1a47[_0x99e9('0x2b')]][_0x99e9('0x34')]=_0x1c1a47[_0x99e9('0x34')];this[_0x99e9('0x10')][_0x1c1a47[_0x99e9('0x2b')]][_0x99e9('0x29')]=_0x1c1a47[_0x99e9('0x29')];this[_0x99e9('0x10')][_0x1c1a47[_0x99e9('0x2b')]]['filename']=_0x1c1a47[_0x99e9('0x35')];logger[_0x99e9('0x2d')](_0x1c1a47[_0x99e9('0x2b')],_0x99e9('0x36'));}};Fax[_0x99e9('0x24')]['syncReceiveFax']=function(_0x3c79fc){var _0x156ab9=this;if(this[_0x99e9('0x10')][_0x3c79fc[_0x99e9('0x2b')]]){var _0x51be16=this[_0x99e9('0x10')][_0x3c79fc['uniqueid']]['id'];this[_0x99e9('0x10')][_0x3c79fc['uniqueid']][_0x99e9('0x37')]=_0x3c79fc['remotestationid'];this['channels'][_0x3c79fc[_0x99e9('0x2b')]][_0x99e9('0x38')]=_0x3c79fc[_0x99e9('0x38')];this[_0x99e9('0x10')][_0x3c79fc[_0x99e9('0x2b')]]['localstationid']=_0x3c79fc['localstationid'];this[_0x99e9('0x10')][_0x3c79fc[_0x99e9('0x2b')]][_0x99e9('0x39')]=_0x3c79fc['resolution'];this[_0x99e9('0x10')][_0x3c79fc[_0x99e9('0x2b')]][_0x99e9('0x3a')]=_0x3c79fc['transferrate'];this['channels'][_0x3c79fc[_0x99e9('0x2b')]]['filename']=_0x3c79fc[_0x99e9('0x35')];this[_0x99e9('0x10')][_0x3c79fc[_0x99e9('0x2b')]][_0x99e9('0x3b')]=_0x3c79fc['calleridnum'];if(this[_0x99e9('0x10')][_0x3c79fc['uniqueid']][_0x99e9('0x38')]>0x0){tiff2pdf(_0x3c79fc[_0x99e9('0x35')],_0x99e9('0x3c'),function(_0x1c99c0){logger['info'](_0x3c79fc['uniqueid'],_0x99e9('0x3d'),_0x1c99c0['message']);attachment[_0x99e9('0x3e')]({'name':path['parse'](_0x3c79fc[_0x99e9('0x35')])[_0x99e9('0x2c')],'basename':path[_0x99e9('0x3f')](_0x3c79fc['filename'])[_0x99e9('0x2c')]+'.pdf','type':_0x99e9('0x40')})[_0x99e9('0x41')](function(_0x3c60b8){faxAccount[_0x99e9('0x42')](_0x51be16,{'from':_0x3c79fc[_0x99e9('0x3b')],'mapKey':'fax','body':path[_0x99e9('0x3f')](_0x3c79fc[_0x99e9('0x35')])[_0x99e9('0x2c')]+_0x99e9('0x43'),'AttachmentId':_0x3c60b8['id']})[_0x99e9('0x44')](function(_0x2d2b17){logger[_0x99e9('0x45')](_0x3c79fc['uniqueid'],_0x99e9('0x46'),JSON[_0x99e9('0x47')](_0x2d2b17));});})['catch'](function(_0x14365d){logger[_0x99e9('0x45')](_0x3c79fc[_0x99e9('0x2b')],'\x20receiveFax\x20',JSON[_0x99e9('0x47')](_0x14365d));});});}logger['info'](_0x3c79fc[_0x99e9('0x2b')],'\x20receiveFax\x20');}};Fax[_0x99e9('0x24')][_0x99e9('0x23')]=function(_0x42577e){if(this['actions'][_0x42577e[_0x99e9('0x2b')]]){_[_0x99e9('0x48')](this[_0x99e9('0x10')][_0x42577e['uniqueid']],_[_0x99e9('0x49')](_0x42577e,[_0x99e9('0x4a'),'reason']));}};function updateStatus(_0x62b054){if(_0x62b054[_0x99e9('0x4b')]){faxMessage[_0x99e9('0x4c')](_0x62b054[_0x99e9('0x4b')],{'failMessage':_0x99e9('0x4d')})[_0x99e9('0x41')](function(_0x1b1efa){ut[_0x99e9('0x4e')]('[Fax][Message][Error][Updated]',_0x1b1efa);})[_0x99e9('0x44')](function(_0xa7a85d){ut[_0x99e9('0x4e')]('[Fax][Message][Error][NoUpdate1]',_0xa7a85d);});}else{ut['logger'](_0x99e9('0x4f'));}}Fax[_0x99e9('0x24')][_0x99e9('0x50')]=function(_0x28c455,_0x5f441d,_0x4df79f){var _0x2fde13=this;var _0x21efde={};if(_0x5f441d){_0x21efde={'read':_0x5f441d};}else{_0x21efde={'failMessage':_0x4df79f};}if(this[_0x99e9('0x13')][_0x28c455][_0x99e9('0x4b')]){faxMessage[_0x99e9('0x4c')](this[_0x99e9('0x13')][_0x28c455][_0x99e9('0x4b')],_0x21efde)[_0x99e9('0x41')](function(_0x151c48){ut[_0x99e9('0x4e')](_0x99e9('0x51'),_0x151c48);})[_0x99e9('0x44')](function(_0xfba650){ut['logger']('[Fax][Message][NoUpdate1]',_0xfba650);})[_0x99e9('0x52')](function(){delete _0x2fde13['channels'][_0x28c455];delete _0x2fde13[_0x99e9('0x13')][_0x28c455];});}else{ut[_0x99e9('0x4e')](_0x99e9('0x53'));delete this[_0x99e9('0x10')][_0x28c455];delete this[_0x99e9('0x13')][_0x28c455];}};Fax[_0x99e9('0x24')][_0x99e9('0x21')]=function(_0x544960){var _0x51855f=this;if(this[_0x99e9('0x10')][_0x544960[_0x99e9('0x2b')]]){if(this['actions'][_0x544960['uniqueid']]){this[_0x99e9('0x10')][_0x544960[_0x99e9('0x2b')]]['id']=this['actions'][_0x544960[_0x99e9('0x2b')]]['id'];this[_0x99e9('0x10')][_0x544960[_0x99e9('0x2b')]][_0x99e9('0x2c')]=this['actions'][_0x544960[_0x99e9('0x2b')]][_0x99e9('0x2c')];}logger[_0x99e9('0x2d')](_0x544960['uniqueid'],this[_0x99e9('0x13')][_0x544960[_0x99e9('0x2b')]]?'\x20hangup\x20sendFile\x20':_0x99e9('0x54'),JSON[_0x99e9('0x47')](this['channels'][_0x544960[_0x99e9('0x2b')]]));if(this[_0x99e9('0x13')][_0x544960['uniqueid']]){if(this[_0x99e9('0x10')][_0x544960[_0x99e9('0x2b')]][_0x99e9('0x55')]>0x0&&this['channels'][_0x544960[_0x99e9('0x2b')]][_0x99e9('0x1d')]===_0x99e9('0x56')){this[_0x99e9('0x50')](_0x544960[_0x99e9('0x2b')],!![]);}else{this['updateStatus'](_0x544960[_0x99e9('0x2b')],![],this['channels'][_0x544960['uniqueid']][_0x99e9('0x57')]?_0x99e9('0x58')+this[_0x99e9('0x10')][_0x544960['uniqueid']]['faxstatusstring']:_0x99e9('0x59'));}}}};Fax[_0x99e9('0x24')]['send']=function(_0x3e533e){var _0x35672e=this;return new BPromise(function(_0x20c990,_0x3d6252){_0x35672e[_0x99e9('0x5a')](_0x3e533e,_0x35672e['faxAccounts'][_0x3e533e[_0x99e9('0x5b')]])[_0x99e9('0x41')](function(_0x1a0f47){ut[_0x99e9('0x4e')]('[Fax][execOriginate][success]',_0x1a0f47);_0x20c990(ut[_0x99e9('0x5c')](_0x99e9('0x5d')));})[_0x99e9('0x44')](function(_0x25d921){ut[_0x99e9('0x4e')](_0x99e9('0x5e'),_0x25d921);updateStatus(_0x3e533e);_0x3d6252(ut['message'](_0x99e9('0x5f')));});});};Fax['prototype'][_0x99e9('0x60')]=function(_0xbf7c32){var _0x4f7699=this;return new BPromise(function(_0x574a48,_0x65ed7a){var _0x1a86c6=_0x4f7699[_0x99e9('0x61')](_0x4f7699[_0x99e9('0x11')][_0xbf7c32[_0x99e9('0x5b')]]['Trunk'],_0xbf7c32);if(_0x1a86c6[_0x99e9('0x62')]){_0x574a48(ut[_0x99e9('0x5c')](_0x99e9('0x63')));}else{_0x65ed7a(ut[_0x99e9('0x5c')](_0x1a86c6[_0x99e9('0x5c')]));}});};function originate(_0x5f3843,_0x48a968,_0x2e96ef){return new BPromise(function(_0x481caa,_0x8fc6e4){if(_0x2e96ef){var _0x5af119=util[_0x99e9('0x64')](_0x99e9('0x65'),path[_0x99e9('0x3f')](_0x5f3843['path'])[_0x99e9('0x2c')],_0x5f3843[_0x99e9('0x66')]);gs[_0x99e9('0x67')](_0x5af119)[_0x99e9('0x41')](function(){_0x5f3843['path']=util['format'](_0x99e9('0x68'),path[_0x99e9('0x3f')](_0x5f3843[_0x99e9('0x66')])['dir'],path[_0x99e9('0x3f')](_0x5f3843[_0x99e9('0x66')])[_0x99e9('0x2c')]);_0x48a968['XMF-PATH']=_0x5f3843['path'];ut[_0x99e9('0x4e')](_0x99e9('0x69'),'');ami[_0x99e9('0x6a')](ut[_0x99e9('0x6b')](_0x5f3843,_0x48a968))[_0x99e9('0x41')](function(_0x2043eb){_0x481caa(_0x2043eb);})[_0x99e9('0x44')](function(_0x2e3255){_0x8fc6e4(_0x2e3255);});})[_0x99e9('0x44')](function(_0x14f6ad){_0x8fc6e4(_0x14f6ad);});}else{ami['Action'](ut[_0x99e9('0x6b')](_0x5f3843,_0x48a968))[_0x99e9('0x41')](function(_0x1c2a5){_0x481caa(_0x1c2a5);})[_0x99e9('0x44')](function(_0x20e167){_0x8fc6e4(_0x20e167);});}});}Fax['prototype'][_0x99e9('0x5a')]=function(_0x1334f8,_0x232782){var _0xa8ab97=this;return new BPromise(function(_0x564358,_0x2672d5){var _0x452f5d=uuid['v4']();var _0x3b3792=ut[_0x99e9('0x6c')](_0x1334f8,_0x232782);_0xa8ab97[_0x99e9('0x13')][_0x452f5d]=new Action(_0x452f5d,_0x232782,_0x1334f8);var _0x3b30f8=_0xa8ab97[_0x99e9('0x13')][_0x452f5d];if(path[_0x99e9('0x3f')](_0x1334f8['path'])['ext']===_0x99e9('0x43')){originate(_0x3b30f8,_0x3b3792,!![])[_0x99e9('0x41')](function(_0x3c1862){_0x564358(_0x3c1862);})['catch'](function(_0x34f2b4){_0x2672d5(_0x34f2b4);});}else{originate(_0x3b30f8,_0x3b3792,![])[_0x99e9('0x41')](function(_0x4abb2f){_0x564358(_0x4abb2f);})[_0x99e9('0x44')](function(_0x4ba902){_0x2672d5(_0x4ba902);});}});};Fax['prototype'][_0x99e9('0x6d')]=function(_0x4d2359){return!_['isNil'](_0x4d2359)&&!_[_0x99e9('0x6e')](_0x4d2359[_0x99e9('0x2c')])&&!_[_0x99e9('0x6e')](_0x4d2359[_0x99e9('0x6f')])&&_0x4d2359[_0x99e9('0x6f')]&&!_[_0x99e9('0x6e')](this['trunks'][util[_0x99e9('0x64')](_0x99e9('0x70'),_0x4d2359['name'])])&&!_[_0x99e9('0x6e')](this['trunks'][util[_0x99e9('0x64')](_0x99e9('0x70'),_0x4d2359[_0x99e9('0x2c')])]['status'])&&(this['trunks'][util[_0x99e9('0x64')](_0x99e9('0x70'),_0x4d2359['name'])]['status']===_0x99e9('0x71')||this[_0x99e9('0x12')][util['format'](_0x99e9('0x70'),_0x4d2359[_0x99e9('0x2c')])][_0x99e9('0x34')]===_0x99e9('0x72'));};Fax['prototype'][_0x99e9('0x61')]=function(_0x57847b,_0x54a291){if(!this[_0x99e9('0x6d')](_0x57847b)){ut[_0x99e9('0x4e')](_0x99e9('0x73'),_[_0x99e9('0x6e')](_0x57847b)?'':_0x57847b[_0x99e9('0x2c')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_[_0x99e9('0x6e')](_0x54a291['fax'])){ut[_0x99e9('0x4e')](_0x99e9('0x74'),JSON['stringify'](_0x54a291));return{'isValid':![],'message':_0x99e9('0x75')};}if(_[_0x99e9('0x6e')](_0x54a291['path'])){ut[_0x99e9('0x4e')](_0x99e9('0x76'),JSON[_0x99e9('0x47')](_0x54a291));return{'isValid':![],'message':_0x99e9('0x77')};}return{'isValid':!![],'message':_0x99e9('0x78')};};module[_0x99e9('0x79')]=Fax;
\ No newline at end of file
+var _0xd5b1=['syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isNil','active','SIP/%s','reachable','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Empty\x20Fax','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','faxAccounts','trunks','actions','newchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncOriginateResponse','prototype','syncNewchannel','context','hasOwnProperty','exten','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','channelstate','channelstatedesc','value','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','SENDING\x20FAILED\x20','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]'];(function(_0x32089f,_0x16f8ec){var _0x368967=function(_0x453c84){while(--_0x453c84){_0x32089f['push'](_0x32089f['shift']());}};_0x368967(++_0x16f8ec);}(_0xd5b1,0x119));var _0x1d5b=function(_0x2dcb64,_0x1158db){_0x2dcb64=_0x2dcb64-0x0;var _0x4c7d7c=_0xd5b1[_0x2dcb64];return _0x4c7d7c;};'use strict';var util=require(_0x1d5b('0x0'));var _=require(_0x1d5b('0x1'));var BPromise=require(_0x1d5b('0x2'));var uuid=require(_0x1d5b('0x3'));var moment=require(_0x1d5b('0x4'));var path=require(_0x1d5b('0x5'));var tiff2pdf=require(_0x1d5b('0x6'));var gs=require(_0x1d5b('0x7'));var logger=require(_0x1d5b('0x8'))(_0x1d5b('0x9'));var ami=require('../ami');var rpcDb=require(_0x1d5b('0xa'));var Channel=require(_0x1d5b('0xb'));var ut=require(_0x1d5b('0xc'));var Action=require(_0x1d5b('0xd'));var faxAccount=require(_0x1d5b('0xe'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x1d5b('0xf'));function Fax(_0x12edc5){this['channels']={};this[_0x1d5b('0x10')]=_0x12edc5[_0x1d5b('0x10')];this['trunks']=_0x12edc5[_0x1d5b('0x11')];this[_0x1d5b('0x12')]={};ami['on'](_0x1d5b('0x13'),this['syncNewchannel'][_0x1d5b('0x14')](this));ami['on'](_0x1d5b('0x15'),this[_0x1d5b('0x16')][_0x1d5b('0x14')](this));ami['on'](_0x1d5b('0x17'),this[_0x1d5b('0x18')]['bind'](this));ami['on'](_0x1d5b('0x19'),this[_0x1d5b('0x1a')]['bind'](this));ami['on'](_0x1d5b('0x1b'),this[_0x1d5b('0x1c')][_0x1d5b('0x14')](this));ami['on'](_0x1d5b('0x1d'),this[_0x1d5b('0x1e')]['bind'](this));ami['on'](_0x1d5b('0x1f'),this['syncHangup'][_0x1d5b('0x14')](this));ami['on']('originateresponse',this[_0x1d5b('0x20')]['bind'](this));}Fax[_0x1d5b('0x21')][_0x1d5b('0x22')]=function(_0x632635){if(_0x632635[_0x1d5b('0x23')]==='from-voip-provider'){for(var _0x58543b in this[_0x1d5b('0x10')]){if(this[_0x1d5b('0x10')][_0x1d5b('0x24')](_0x58543b)){if(_0x632635[_0x1d5b('0x25')]===this[_0x1d5b('0x10')][_0x58543b][_0x1d5b('0x26')]){this[_0x1d5b('0x27')][_0x632635[_0x1d5b('0x28')]]={};this[_0x1d5b('0x27')][_0x632635['uniqueid']][_0x1d5b('0x29')]=_0x632635[_0x1d5b('0x29')];this['channels'][_0x632635[_0x1d5b('0x28')]]['id']=this[_0x1d5b('0x10')][_0x58543b]['id'];this['channels'][_0x632635[_0x1d5b('0x28')]][_0x1d5b('0x2a')]=this[_0x1d5b('0x10')][_0x58543b][_0x1d5b('0x2a')];logger[_0x1d5b('0x2b')](_0x632635[_0x1d5b('0x28')],_0x1d5b('0x2c'));}}}}if(this['actions'][_0x632635['uniqueid']]){this[_0x1d5b('0x27')][_0x632635[_0x1d5b('0x28')]]={};this['channels'][_0x632635[_0x1d5b('0x28')]]['channel']=_0x632635[_0x1d5b('0x29')];logger[_0x1d5b('0x2b')](_0x632635['uniqueid'],_0x1d5b('0x2c'));}};Fax['prototype'][_0x1d5b('0x16')]=function(_0x1aaf10){if(this[_0x1d5b('0x27')][_0x1aaf10[_0x1d5b('0x28')]]){for(var _0x620a4a in _0x1aaf10[_0x1d5b('0x2d')]){if(_0x1aaf10[_0x1d5b('0x2d')][_0x1d5b('0x24')](_0x620a4a)){this[_0x1d5b('0x27')][_0x1aaf10[_0x1d5b('0x28')]][_0x620a4a]=_0x1aaf10['value'];}}}};Fax[_0x1d5b('0x21')][_0x1d5b('0x18')]=function(_0x51e29c){if(this['channels'][_0x51e29c[_0x1d5b('0x28')]]){this[_0x1d5b('0x27')][_0x51e29c[_0x1d5b('0x28')]][_0x1d5b('0x2e')]=_0x51e29c[_0x1d5b('0x2e')];this[_0x1d5b('0x27')][_0x51e29c[_0x1d5b('0x28')]][_0x1d5b('0x2f')]=_0x51e29c[_0x1d5b('0x2f')];}};Fax[_0x1d5b('0x21')][_0x1d5b('0x1a')]=function(_0x4e57fa){if(this[_0x1d5b('0x27')][_0x4e57fa[_0x1d5b('0x28')]]){for(var _0x4bd782 in _0x4e57fa[_0x1d5b('0x2d')]){if(_0x4e57fa[_0x1d5b('0x2d')][_0x1d5b('0x24')](_0x4bd782)){this[_0x1d5b('0x27')][_0x4e57fa['uniqueid']][_0x4bd782]=_0x4e57fa[_0x1d5b('0x30')];}}}};Fax[_0x1d5b('0x21')][_0x1d5b('0x1c')]=function(_0x42b4cb){if(this[_0x1d5b('0x27')][_0x42b4cb['uniqueid']]){this[_0x1d5b('0x27')][_0x42b4cb[_0x1d5b('0x28')]][_0x1d5b('0x31')]=_0x42b4cb['operation'];this[_0x1d5b('0x27')][_0x42b4cb[_0x1d5b('0x28')]][_0x1d5b('0x32')]=_0x42b4cb[_0x1d5b('0x32')];this[_0x1d5b('0x27')][_0x42b4cb[_0x1d5b('0x28')]][_0x1d5b('0x26')]=_0x42b4cb[_0x1d5b('0x26')];this['channels'][_0x42b4cb[_0x1d5b('0x28')]][_0x1d5b('0x33')]=_0x42b4cb[_0x1d5b('0x33')];logger[_0x1d5b('0x2b')](_0x42b4cb['uniqueid'],_0x1d5b('0x34'));}};Fax[_0x1d5b('0x21')][_0x1d5b('0x1e')]=function(_0x32229f){var _0x4f6c93=this;if(this[_0x1d5b('0x27')][_0x32229f[_0x1d5b('0x28')]]){var _0x2b128b=this[_0x1d5b('0x27')][_0x32229f[_0x1d5b('0x28')]]['id'];this[_0x1d5b('0x27')][_0x32229f[_0x1d5b('0x28')]]['remotestationid']=_0x32229f[_0x1d5b('0x35')];this['channels'][_0x32229f[_0x1d5b('0x28')]]['pagestransferred']=_0x32229f[_0x1d5b('0x36')];this[_0x1d5b('0x27')][_0x32229f[_0x1d5b('0x28')]][_0x1d5b('0x26')]=_0x32229f[_0x1d5b('0x26')];this[_0x1d5b('0x27')][_0x32229f[_0x1d5b('0x28')]][_0x1d5b('0x37')]=_0x32229f[_0x1d5b('0x37')];this[_0x1d5b('0x27')][_0x32229f[_0x1d5b('0x28')]][_0x1d5b('0x38')]=_0x32229f[_0x1d5b('0x38')];this['channels'][_0x32229f[_0x1d5b('0x28')]][_0x1d5b('0x33')]=_0x32229f[_0x1d5b('0x33')];this['channels'][_0x32229f['uniqueid']][_0x1d5b('0x39')]=_0x32229f['calleridnum'];if(this[_0x1d5b('0x27')][_0x32229f[_0x1d5b('0x28')]][_0x1d5b('0x36')]>0x0){tiff2pdf(_0x32229f[_0x1d5b('0x33')],'/var/opt/motion2/server/files/attachments/',function(_0x2c8362){logger[_0x1d5b('0x2b')](_0x32229f[_0x1d5b('0x28')],_0x1d5b('0x3a'),_0x2c8362[_0x1d5b('0x3b')]);attachment[_0x1d5b('0x3c')]({'name':path['parse'](_0x32229f[_0x1d5b('0x33')])[_0x1d5b('0x2a')],'basename':path[_0x1d5b('0x3d')](_0x32229f[_0x1d5b('0x33')])['name']+_0x1d5b('0x3e'),'type':_0x1d5b('0x3f')})[_0x1d5b('0x40')](function(_0x336df9){faxAccount[_0x1d5b('0x41')](_0x2b128b,{'from':_0x32229f[_0x1d5b('0x39')],'mapKey':_0x1d5b('0x9'),'body':path['parse'](_0x32229f[_0x1d5b('0x33')])['name']+_0x1d5b('0x3e'),'AttachmentId':_0x336df9['id']})[_0x1d5b('0x42')](function(_0xec100){logger[_0x1d5b('0x43')](_0x32229f['uniqueid'],_0x1d5b('0x44'),JSON['stringify'](_0xec100));});})[_0x1d5b('0x42')](function(_0x474f67){logger[_0x1d5b('0x43')](_0x32229f[_0x1d5b('0x28')],'\x20receiveFax\x20',JSON['stringify'](_0x474f67));});});}logger[_0x1d5b('0x2b')](_0x32229f[_0x1d5b('0x28')],_0x1d5b('0x45'));}};Fax[_0x1d5b('0x21')][_0x1d5b('0x20')]=function(_0x4307e3){if(this['actions'][_0x4307e3[_0x1d5b('0x28')]]){_[_0x1d5b('0x46')](this['channels'][_0x4307e3[_0x1d5b('0x28')]],_[_0x1d5b('0x47')](_0x4307e3,[_0x1d5b('0x48'),_0x1d5b('0x49')]));}};function updateStatus(_0x4395fc){if(_0x4395fc[_0x1d5b('0x4a')]){faxMessage['update'](_0x4395fc[_0x1d5b('0x4a')],{'failMessage':_0x1d5b('0x4b')})[_0x1d5b('0x40')](function(_0x31994f){ut['logger'](_0x1d5b('0x4c'),_0x31994f);})['catch'](function(_0x466a1b){ut[_0x1d5b('0x4d')](_0x1d5b('0x4e'),_0x466a1b);});}else{ut[_0x1d5b('0x4d')](_0x1d5b('0x4f'));}}Fax[_0x1d5b('0x21')][_0x1d5b('0x50')]=function(_0x782598,_0x4a8f4b,_0x2b3278){var _0x434a1b=this;var _0x3ae12d={};if(_0x4a8f4b){_0x3ae12d={'read':_0x4a8f4b};}else{_0x3ae12d={'failMessage':_0x2b3278};}if(this['actions'][_0x782598][_0x1d5b('0x4a')]){faxMessage[_0x1d5b('0x51')](this[_0x1d5b('0x12')][_0x782598][_0x1d5b('0x4a')],_0x3ae12d)[_0x1d5b('0x40')](function(_0xfbaf2b){ut[_0x1d5b('0x4d')](_0x1d5b('0x52'),_0xfbaf2b);})[_0x1d5b('0x42')](function(_0x4e970b){ut[_0x1d5b('0x4d')](_0x1d5b('0x53'),_0x4e970b);})['finally'](function(){delete _0x434a1b[_0x1d5b('0x27')][_0x782598];delete _0x434a1b['actions'][_0x782598];});}else{ut[_0x1d5b('0x4d')](_0x1d5b('0x54'));delete this[_0x1d5b('0x27')][_0x782598];delete this[_0x1d5b('0x12')][_0x782598];}};Fax[_0x1d5b('0x21')][_0x1d5b('0x55')]=function(_0x159d19){var _0x2169b1=this;if(this[_0x1d5b('0x27')][_0x159d19[_0x1d5b('0x28')]]){if(this[_0x1d5b('0x12')][_0x159d19[_0x1d5b('0x28')]]){this[_0x1d5b('0x27')][_0x159d19[_0x1d5b('0x28')]]['id']=this[_0x1d5b('0x12')][_0x159d19[_0x1d5b('0x28')]]['id'];this[_0x1d5b('0x27')][_0x159d19['uniqueid']][_0x1d5b('0x2a')]=this[_0x1d5b('0x12')][_0x159d19[_0x1d5b('0x28')]][_0x1d5b('0x2a')];}logger[_0x1d5b('0x2b')](_0x159d19['uniqueid'],this[_0x1d5b('0x12')][_0x159d19[_0x1d5b('0x28')]]?_0x1d5b('0x56'):_0x1d5b('0x57'),JSON['stringify'](this['channels'][_0x159d19[_0x1d5b('0x28')]]));if(this[_0x1d5b('0x12')][_0x159d19[_0x1d5b('0x28')]]){if(this[_0x1d5b('0x27')][_0x159d19['uniqueid']][_0x1d5b('0x58')]>0x0&&this[_0x1d5b('0x27')][_0x159d19[_0x1d5b('0x28')]]['faxstatus']===_0x1d5b('0x59')){this[_0x1d5b('0x50')](_0x159d19[_0x1d5b('0x28')],!![]);}else{this[_0x1d5b('0x50')](_0x159d19[_0x1d5b('0x28')],![],this[_0x1d5b('0x27')][_0x159d19[_0x1d5b('0x28')]]['faxstatusstring']?_0x1d5b('0x5a')+this[_0x1d5b('0x27')][_0x159d19['uniqueid']]['faxstatusstring']:_0x1d5b('0x5b'));}}}};Fax[_0x1d5b('0x21')][_0x1d5b('0x5c')]=function(_0xfefe22){var _0x1de82b=this;return new BPromise(function(_0x96f6c7,_0x33bc7c){_0x1de82b[_0x1d5b('0x5d')](_0xfefe22,_0x1de82b['faxAccounts'][_0xfefe22['FaxAccountId']])[_0x1d5b('0x40')](function(_0x1f590e){ut[_0x1d5b('0x4d')](_0x1d5b('0x5e'),_0x1f590e);_0x96f6c7(ut['message'](_0x1d5b('0x5f')));})[_0x1d5b('0x42')](function(_0x113dd2){ut[_0x1d5b('0x4d')](_0x1d5b('0x60'),_0x113dd2);updateStatus(_0xfefe22);_0x33bc7c(ut[_0x1d5b('0x3b')](_0x1d5b('0x61')));});});};Fax['prototype']['checkAfterSend']=function(_0x177d87){var _0x5db19a=this;return new BPromise(function(_0x1a1dfd,_0x32d5db){var _0x2f2f7d=_0x5db19a[_0x1d5b('0x62')](_0x5db19a['faxAccounts'][_0x177d87['FaxAccountId']]['Trunk'],_0x177d87);if(_0x2f2f7d[_0x1d5b('0x63')]){_0x1a1dfd(ut[_0x1d5b('0x3b')](_0x1d5b('0x64')));}else{_0x32d5db(ut['message'](_0x2f2f7d[_0x1d5b('0x3b')]));}});};function originate(_0x114df2,_0x4309ff,_0xb8fa8f){return new BPromise(function(_0x16a696,_0x4fbd26){if(_0xb8fa8f){var _0xb2bbc1=util[_0x1d5b('0x65')](_0x1d5b('0x66'),path[_0x1d5b('0x3d')](_0x114df2[_0x1d5b('0x5')])[_0x1d5b('0x2a')],_0x114df2[_0x1d5b('0x5')]);gs['execute'](_0xb2bbc1)['then'](function(){_0x114df2[_0x1d5b('0x5')]=util[_0x1d5b('0x65')](_0x1d5b('0x67'),path[_0x1d5b('0x3d')](_0x114df2[_0x1d5b('0x5')])[_0x1d5b('0x68')],path[_0x1d5b('0x3d')](_0x114df2['path'])[_0x1d5b('0x2a')]);_0x4309ff[_0x1d5b('0x69')]=_0x114df2[_0x1d5b('0x5')];ut[_0x1d5b('0x4d')](_0x1d5b('0x6a'),'');ami[_0x1d5b('0x6b')](ut[_0x1d5b('0x6c')](_0x114df2,_0x4309ff))['then'](function(_0x36840e){_0x16a696(_0x36840e);})['catch'](function(_0x49a624){_0x4fbd26(_0x49a624);});})[_0x1d5b('0x42')](function(_0x5af04a){_0x4fbd26(_0x5af04a);});}else{ami['Action'](ut['variablesAction'](_0x114df2,_0x4309ff))[_0x1d5b('0x40')](function(_0x201640){_0x16a696(_0x201640);})[_0x1d5b('0x42')](function(_0x540947){_0x4fbd26(_0x540947);});}});}Fax[_0x1d5b('0x21')]['execOriginate']=function(_0xb03cad,_0x579aa8){var _0x88a01f=this;return new BPromise(function(_0x1304d7,_0x2894a6){var _0x25aee1=uuid['v4']();var _0x3cf2dc=ut[_0x1d5b('0x6d')](_0xb03cad,_0x579aa8);_0x88a01f['actions'][_0x25aee1]=new Action(_0x25aee1,_0x579aa8,_0xb03cad);var _0xde47f5=_0x88a01f[_0x1d5b('0x12')][_0x25aee1];if(path['parse'](_0xb03cad[_0x1d5b('0x5')])[_0x1d5b('0x6e')]===_0x1d5b('0x3e')){originate(_0xde47f5,_0x3cf2dc,!![])[_0x1d5b('0x40')](function(_0x929840){_0x1304d7(_0x929840);})[_0x1d5b('0x42')](function(_0x45c56f){_0x2894a6(_0x45c56f);});}else{originate(_0xde47f5,_0x3cf2dc,![])[_0x1d5b('0x40')](function(_0x309433){_0x1304d7(_0x309433);})[_0x1d5b('0x42')](function(_0x17905b){_0x2894a6(_0x17905b);});}});};Fax[_0x1d5b('0x21')]['isTrunkReachable']=function(_0x567ea9){return!_[_0x1d5b('0x6f')](_0x567ea9)&&!_[_0x1d5b('0x6f')](_0x567ea9[_0x1d5b('0x2a')])&&!_[_0x1d5b('0x6f')](_0x567ea9[_0x1d5b('0x70')])&&_0x567ea9['active']&&!_[_0x1d5b('0x6f')](this[_0x1d5b('0x11')][util[_0x1d5b('0x65')]('SIP/%s',_0x567ea9[_0x1d5b('0x2a')])])&&!_[_0x1d5b('0x6f')](this[_0x1d5b('0x11')][util[_0x1d5b('0x65')](_0x1d5b('0x71'),_0x567ea9[_0x1d5b('0x2a')])][_0x1d5b('0x32')])&&(this[_0x1d5b('0x11')][util['format']('SIP/%s',_0x567ea9[_0x1d5b('0x2a')])][_0x1d5b('0x32')]===_0x1d5b('0x72')||this[_0x1d5b('0x11')][util[_0x1d5b('0x65')]('SIP/%s',_0x567ea9[_0x1d5b('0x2a')])][_0x1d5b('0x32')]==='unmonitored');};Fax[_0x1d5b('0x21')]['checkTrunk']=function(_0x3df0cc,_0x49729b){if(!this[_0x1d5b('0x73')](_0x3df0cc)){ut[_0x1d5b('0x4d')](_0x1d5b('0x74'),_[_0x1d5b('0x6f')](_0x3df0cc)?'':_0x3df0cc[_0x1d5b('0x2a')]+_0x1d5b('0x75'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_['isNil'](_0x49729b[_0x1d5b('0x9')])){ut['logger']('[Fax][checkTrunk][Empty\x20Fax]',JSON['stringify'](_0x49729b));return{'isValid':![],'message':_0x1d5b('0x76')};}if(_[_0x1d5b('0x6f')](_0x49729b[_0x1d5b('0x5')])){ut[_0x1d5b('0x4d')]('[Fax][checkTrunk][Empty\x20path]',JSON['stringify'](_0x49729b));return{'isValid':![],'message':_0x1d5b('0x77')};}return{'isValid':!![],'message':_0x1d5b('0x78')};};module[_0x1d5b('0x79')]=Fax;
\ No newline at end of file
index c0303c6..a095780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc59c=['lodash','resolve','then','notify','catch','[Notify]\x20','../../../config/logger','preview'];(function(_0x145b24,_0x352c14){var _0x1111e1=function(_0x23739d){while(--_0x23739d){_0x145b24['push'](_0x145b24['shift']());}};_0x1111e1(++_0x352c14);}(_0xc59c,0x1a6));var _0xcc59=function(_0x434c8d,_0x3300c7){_0x434c8d=_0x434c8d-0x0;var _0x534d73=_0xc59c[_0x434c8d];return _0x534d73;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0xcc59('0x0'))(_0xcc59('0x1'));var _=require(_0xcc59('0x2'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x5398e2){return function(_0x1b9bb5){logger['error'](_0x5398e2,util['inspect'](_0x1b9bb5,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x3662b3,_0x380c37){return BPromise[_0xcc59('0x3')]()[_0xcc59('0x4')](faxAccount[_0xcc59('0x5')](_0x3662b3,_0x380c37))[_0xcc59('0x6')](loggerCatch(_0xcc59('0x7')));};
\ No newline at end of file
+var _0xf161=['catch','[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','inspect','notify','then'];(function(_0x2389d2,_0x13caa2){var _0x3a4c72=function(_0x2bb91e){while(--_0x2bb91e){_0x2389d2['push'](_0x2389d2['shift']());}};_0x3a4c72(++_0x13caa2);}(_0xf161,0xd3));var _0x1f16=function(_0x2ed8f3,_0x4aa12f){_0x2ed8f3=_0x2ed8f3-0x0;var _0x525a55=_0xf161[_0x2ed8f3];return _0x525a55;};'use strict';var util=require(_0x1f16('0x0'));var BPromise=require(_0x1f16('0x1'));var logger=require(_0x1f16('0x2'))(_0x1f16('0x3'));var _=require(_0x1f16('0x4'));var faxAccount=require(_0x1f16('0x5'));function loggerCatch(_0x46a86d){return function(_0x5172da){logger['error'](_0x46a86d,util[_0x1f16('0x6')](_0x5172da,{'showHidden':![],'depth':null}));};}exports[_0x1f16('0x7')]=function(_0x3d7714,_0x1ba96e){return BPromise['resolve']()[_0x1f16('0x8')](faxAccount['notify'](_0x3d7714,_0x1ba96e))[_0x1f16('0x9')](loggerCatch(_0x1f16('0xa')));};
\ No newline at end of file
index 8441ac3..48bd283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80a2=['child_process','exec','execute','info','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x80a2,0x16e));var _0x280a=function(_0x19f663,_0x14adfe){_0x19f663=_0x19f663-0x0;var _0x3fdf41=_0x80a2[_0x19f663];return _0x3fdf41;};'use strict';var util=require('util');var logger=require(_0x280a('0x0'))(_0x280a('0x1'));var BPromise=require(_0x280a('0x2'));var exec=require(_0x280a('0x3'))[_0x280a('0x4')];exports[_0x280a('0x5')]=function(_0x17c939){return new BPromise(function(_0x1f558b,_0x129e8d){exec(_0x17c939,function(_0x30e418,_0x1ab656,_0x9cc502){logger[_0x280a('0x6')]('Exec\x20gs',_0x1ab656);if(_0x30e418){logger[_0x280a('0x6')]('Exec\x20gs',_0x280a('0x7'),util[_0x280a('0x8')](_0x30e418,{'showHidden':![],'depth':null}),_0x1ab656,_0x9cc502);_0x129e8d(_0x30e418);}_0x1f558b(_0x1ab656);});});};
\ No newline at end of file
+var _0x74a1=['exec','execute','info','Exec\x20gs','util','../../../../config/logger','fax','bluebird','child_process'];(function(_0x48c615,_0x4cc757){var _0x3d9e22=function(_0x1ee9f2){while(--_0x1ee9f2){_0x48c615['push'](_0x48c615['shift']());}};_0x3d9e22(++_0x4cc757);}(_0x74a1,0x8b));var _0x174a=function(_0x1f2b0e,_0xc804dc){_0x1f2b0e=_0x1f2b0e-0x0;var _0x23b334=_0x74a1[_0x1f2b0e];return _0x23b334;};'use strict';var util=require(_0x174a('0x0'));var logger=require(_0x174a('0x1'))(_0x174a('0x2'));var BPromise=require(_0x174a('0x3'));var exec=require(_0x174a('0x4'))[_0x174a('0x5')];exports[_0x174a('0x6')]=function(_0x3e11b3){return new BPromise(function(_0x55d1c7,_0x13f0cd){exec(_0x3e11b3,function(_0x1dfc5f,_0x57c0de,_0x59cb25){logger[_0x174a('0x7')]('Exec\x20gs',_0x57c0de);if(_0x1dfc5f){logger['info'](_0x174a('0x8'),'\x20Error\x20:',util['inspect'](_0x1dfc5f,{'showHidden':![],'depth':null}),_0x57c0de,_0x59cb25);_0x13f0cd(_0x1dfc5f);}_0x55d1c7(_0x57c0de);});});};
\ No newline at end of file
index 7fe323d..b6daaff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a0=['headerinfo','minrate','maxrate','format','\x22%s\x22','gateway','faxdetect','localstationid','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','moment','fax','message','logger','info','inspect','addVariables','ecm'];(function(_0x2eda00,_0x43d652){var _0x14824b=function(_0x14eaf7){while(--_0x14eaf7){_0x2eda00['push'](_0x2eda00['shift']());}};_0x14824b(++_0x43d652);}(_0x93a0,0x1c4));var _0x093a=function(_0x411b7c,_0x34f63f){_0x411b7c=_0x411b7c-0x0;var _0x27d8c7=_0x93a0[_0x411b7c];return _0x27d8c7;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x093a('0x0'));var logger=require('../../../../config/logger')(_0x093a('0x1'));exports[_0x093a('0x2')]=function(_0x2df303){return{'message':_0x2df303};};exports[_0x093a('0x3')]=function(_0x39e40e,_0x50711b){logger[_0x093a('0x4')](_0x39e40e,util[_0x093a('0x5')](_0x50711b,{'showHidden':![],'depth':null}));};exports[_0x093a('0x6')]=function(_0x256ad9,_0x41ce4e){var _0x3990af={'XMF-ECM':_0x41ce4e[_0x093a('0x7')],'XMF-HEADERINFO':_0x41ce4e[_0x093a('0x8')],'XMF-MINRATE':_0x41ce4e[_0x093a('0x9')],'XMF-MAXRATE':_0x41ce4e[_0x093a('0xa')],'XMF-MODEM':util[_0x093a('0xb')](_0x093a('0xc'),_0x41ce4e['modem']),'XMF-GATEWAY':_0x41ce4e[_0x093a('0xd')],'XMF-FAXDETECT':_0x41ce4e[_0x093a('0xe')],'XMF-T38TIMEOUT':_0x41ce4e['t38timeout'],'XMF-LOCALSTATIONID':_0x41ce4e[_0x093a('0xf')],'XMF-PATH':_0x256ad9[_0x093a('0x10')]};return _0x3990af;};exports[_0x093a('0x11')]=function(_0x3c8e51,_0x1fe857){return{'actionid':_0x3c8e51[_0x093a('0x12')],'action':_0x093a('0x13'),'channel':_0x3c8e51[_0x093a('0x14')],'Exten':_0x093a('0x15'),'Context':_0x093a('0x16'),'Priority':'1','callerid':util[_0x093a('0xb')]('\x22%s\x22\x20<%s>',_0x3c8e51[_0x093a('0x8')]?_0x3c8e51[_0x093a('0x8')]:'',_0x3c8e51[_0x093a('0xf')]),'variable':_0x1fe857,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3c8e51[_0x093a('0x12')]};};
\ No newline at end of file
+var _0x668b=['uniqueid','channel','xcally-motion-fax','from-sip','util','lodash','moment','fax','message','logger','info','headerinfo','minrate','maxrate','\x22%s\x22','gateway','faxdetect','t38timeout','localstationid','variablesAction'];(function(_0x4a010b,_0x3523b3){var _0xe0b19b=function(_0x68b0bb){while(--_0x68b0bb){_0x4a010b['push'](_0x4a010b['shift']());}};_0xe0b19b(++_0x3523b3);}(_0x668b,0xf4));var _0xb668=function(_0x1f71d8,_0x278518){_0x1f71d8=_0x1f71d8-0x0;var _0x10b045=_0x668b[_0x1f71d8];return _0x10b045;};'use strict';var util=require(_0xb668('0x0'));var _=require(_0xb668('0x1'));var moment=require(_0xb668('0x2'));var logger=require('../../../../config/logger')(_0xb668('0x3'));exports[_0xb668('0x4')]=function(_0x280322){return{'message':_0x280322};};exports[_0xb668('0x5')]=function(_0x1de39e,_0x61ce39){logger[_0xb668('0x6')](_0x1de39e,util['inspect'](_0x61ce39,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x22e0ce,_0x4af02b){var _0x1c83c6={'XMF-ECM':_0x4af02b['ecm'],'XMF-HEADERINFO':_0x4af02b[_0xb668('0x7')],'XMF-MINRATE':_0x4af02b[_0xb668('0x8')],'XMF-MAXRATE':_0x4af02b[_0xb668('0x9')],'XMF-MODEM':util['format'](_0xb668('0xa'),_0x4af02b['modem']),'XMF-GATEWAY':_0x4af02b[_0xb668('0xb')],'XMF-FAXDETECT':_0x4af02b[_0xb668('0xc')],'XMF-T38TIMEOUT':_0x4af02b[_0xb668('0xd')],'XMF-LOCALSTATIONID':_0x4af02b[_0xb668('0xe')],'XMF-PATH':_0x22e0ce['path']};return _0x1c83c6;};exports[_0xb668('0xf')]=function(_0x249dc3,_0x2ff059){return{'actionid':_0x249dc3[_0xb668('0x10')],'action':'originate','channel':_0x249dc3[_0xb668('0x11')],'Exten':_0xb668('0x12'),'Context':_0xb668('0x13'),'Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x249dc3[_0xb668('0x7')]?_0x249dc3[_0xb668('0x7')]:'',_0x249dc3[_0xb668('0xe')]),'variable':_0x2ff059,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x249dc3[_0xb668('0x10')]};};
\ No newline at end of file
index 3e17cf4..dc7f70c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0edf=['./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/servicenow','ami','get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','initTrunks','getVoiceQueues','initVoiceQueues','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','getFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','initVoiceCallReports','error','[index.js][initParams]','listen','sync','catch','[index.js][main]','inspect','bluebird','moment','./report','./acw','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trunk'];(function(_0x408e08,_0x2d0f82){var _0xc566d2=function(_0xc2ce9d){while(--_0xc2ce9d){_0x408e08['push'](_0x408e08['shift']());}};_0xc566d2(++_0x2d0f82);}(_0x0edf,0x7d));var _0xf0ed=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x0edf[_0x16b9ed];return _0x66b1f8;};'use strict';var BPromise=require(_0xf0ed('0x0'));var util=require('util');var moment=require(_0xf0ed('0x1'));var server=require('./server');var Realtime=require('./realtime');var Report=require(_0xf0ed('0x2'));var Acw=require(_0xf0ed('0x3'));var Trigger=require('./trigger');var Dialer=require('./dialer');var Preview=require('./preview');var Fax=require(_0xf0ed('0x4'));var user=require(_0xf0ed('0x5'));var voiceQueue=require(_0xf0ed('0x6'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0xf0ed('0x7'));var trunk=require(_0xf0ed('0x8'));var trigger=require(_0xf0ed('0x9'));var template=require(_0xf0ed('0xa'));var cmHopperHistory=require(_0xf0ed('0xb'));var campaign=require(_0xf0ed('0xc'));var voiceExtension=require(_0xf0ed('0xd'));var faxAccount=require(_0xf0ed('0xe'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0xf0ed('0xf'));var freshdesk=require(_0xf0ed('0x10'));var desk=require(_0xf0ed('0x11'));var zoho=require(_0xf0ed('0x12'));var vtiger=require(_0xf0ed('0x13'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0xf0ed('0x14'));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('../../config/logger')(_0xf0ed('0x15'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xf0ed('0x16')](_0xf0ed('0x17'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xf0ed('0x17'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xf0ed('0x18')]()['then'](user[_0xf0ed('0x19')]())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x1b')]())[_0xf0ed('0x1a')](user[_0xf0ed('0x1c')]())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x1d')]())['then'](trunk['getTrunks']())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x1e')]())[_0xf0ed('0x1a')](voiceQueue[_0xf0ed('0x1f')]())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x20')]())[_0xf0ed('0x1a')](trigger['getTriggers']())['then'](realtime['initTriggers']())[_0xf0ed('0x1a')](template['getTemplates']())['then'](realtime[_0xf0ed('0x21')]())[_0xf0ed('0x1a')](zendesk[_0xf0ed('0x22')]())['then'](realtime[_0xf0ed('0x23')]())[_0xf0ed('0x1a')](salesforce[_0xf0ed('0x24')]())[_0xf0ed('0x1a')](realtime['initSalesforceAccounts']())[_0xf0ed('0x1a')](sugarcrm[_0xf0ed('0x25')]())[_0xf0ed('0x1a')](realtime['initSugarcrmAccounts']())[_0xf0ed('0x1a')](freshdesk[_0xf0ed('0x26')]())['then'](realtime[_0xf0ed('0x27')]())[_0xf0ed('0x1a')](desk['getDeskAccounts']())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x28')]())[_0xf0ed('0x1a')](zoho[_0xf0ed('0x29')]())['then'](realtime[_0xf0ed('0x2a')]())[_0xf0ed('0x1a')](vtiger[_0xf0ed('0x2b')]())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x2c')]())[_0xf0ed('0x1a')](freshsales[_0xf0ed('0x2d')]())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x2e')]())[_0xf0ed('0x1a')](servicenow['getServicenowAccounts']())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x2f')]())[_0xf0ed('0x1a')](dynamics365[_0xf0ed('0x30')]())[_0xf0ed('0x1a')](realtime['initDynamics365Accounts']())[_0xf0ed('0x1a')](campaign[_0xf0ed('0x31')]())['then'](realtime[_0xf0ed('0x32')]())[_0xf0ed('0x1a')](voiceExtension[_0xf0ed('0x33')]())['then'](realtime['initVoiceExtensions']())[_0xf0ed('0x1a')](faxAccount[_0xf0ed('0x34')]())['then'](realtime['initFaxAccounts']())[_0xf0ed('0x1a')](function(){return realtime;});}function initParams(){return BPromise[_0xf0ed('0x18')]()[_0xf0ed('0x1a')](voiceQueueReport[_0xf0ed('0x35')]())['then'](realtime[_0xf0ed('0x36')]())['then'](cmHopperHistory[_0xf0ed('0x37')]())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x38')]())[_0xf0ed('0x1a')](cmHopperHistory[_0xf0ed('0x39')]())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x3a')]())[_0xf0ed('0x1a')](voiceCallReport['getVoiceCallReports']())[_0xf0ed('0x1a')](realtime[_0xf0ed('0x3b')]())['catch'](function(_0xb45cf0){logger[_0xf0ed('0x3c')](_0xf0ed('0x3d'),util['inspect'](_0xb45cf0,{'showHidden':![],'depth':null}));});}function main(){return server[_0xf0ed('0x3e')](realtime,preview,fax)['then'](function(_0x13d820){return initRealtime();})[_0xf0ed('0x1a')](function(){return initParams();})[_0xf0ed('0x1a')](function(){report[_0xf0ed('0x3f')]();setInterval(initRealtime,0x1388);})[_0xf0ed('0x40')](function(_0x55b294){logger['error'](_0xf0ed('0x41'),util[_0xf0ed('0x42')](_0x55b294,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0xca5d=['sync','[index.js][main]','inspect','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./rpc/user','./rpc/voiceQueueReport','./rpc/voiceCallReport','./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/zoho','./rpc/integrations/vtiger','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','resolve','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','initVoiceCallReports','catch','[index.js][initParams]'];(function(_0x441f15,_0x101e6b){var _0x4136e7=function(_0x4133d6){while(--_0x4133d6){_0x441f15['push'](_0x441f15['shift']());}};_0x4136e7(++_0x101e6b);}(_0xca5d,0x123));var _0xdca5=function(_0x37f86e,_0x19dac9){_0x37f86e=_0x37f86e-0x0;var _0x48e3fa=_0xca5d[_0x37f86e];return _0x48e3fa;};'use strict';var util=require('util');var moment=require(_0xdca5('0x0'));var server=require(_0xdca5('0x1'));var Realtime=require(_0xdca5('0x2'));var Report=require(_0xdca5('0x3'));var Acw=require(_0xdca5('0x4'));var Trigger=require(_0xdca5('0x5'));var Dialer=require(_0xdca5('0x6'));var Preview=require('./preview');var Fax=require('./fax');var user=require(_0xdca5('0x7'));var voiceQueueReport=require(_0xdca5('0x8'));var voiceCallReport=require(_0xdca5('0x9'));var trunk=require(_0xdca5('0xa'));var trigger=require(_0xdca5('0xb'));var template=require('./rpc/template');var cmHopperHistory=require(_0xdca5('0xc'));var campaign=require(_0xdca5('0xd'));var voiceExtension=require(_0xdca5('0xe'));var faxAccount=require(_0xdca5('0xf'));var zendesk=require(_0xdca5('0x10'));var salesforce=require(_0xdca5('0x11'));var sugarcrm=require(_0xdca5('0x12'));var freshdesk=require(_0xdca5('0x13'));var desk=require(_0xdca5('0x14'));var zoho=require(_0xdca5('0x15'));var vtiger=require(_0xdca5('0x16'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0xdca5('0x17'));var dynamics365=require(_0xdca5('0x18'));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(_0xdca5('0x19'))(_0xdca5('0x1a'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xdca5('0x1b')](_0xdca5('0x1c'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xdca5('0x1c'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise['resolve']()['then'](user[_0xdca5('0x1d')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x1f')]())[_0xdca5('0x1e')](user[_0xdca5('0x20')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x21')]())[_0xdca5('0x1e')](trunk[_0xdca5('0x22')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x23')]())[_0xdca5('0x1e')](function(){return realtime[_0xdca5('0x24')]();})[_0xdca5('0x1e')](function(_0x5598fb){realtime['voiceQueues']=_0x5598fb;})['then'](trigger[_0xdca5('0x25')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x26')]())['then'](template[_0xdca5('0x27')]())['then'](realtime[_0xdca5('0x28')]())[_0xdca5('0x1e')](zendesk[_0xdca5('0x29')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x2a')]())[_0xdca5('0x1e')](salesforce[_0xdca5('0x2b')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x2c')]())['then'](sugarcrm[_0xdca5('0x2d')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x2e')]())[_0xdca5('0x1e')](freshdesk[_0xdca5('0x2f')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x30')]())[_0xdca5('0x1e')](desk['getDeskAccounts']())['then'](realtime['initDeskAccounts']())[_0xdca5('0x1e')](zoho['getZohoAccounts']())['then'](realtime['initZohoAccounts']())['then'](vtiger[_0xdca5('0x31')]())['then'](realtime['initVtigerAccounts']())[_0xdca5('0x1e')](freshsales['getFreshsalesAccounts']())[_0xdca5('0x1e')](realtime[_0xdca5('0x32')]())['then'](servicenow[_0xdca5('0x33')]())['then'](realtime[_0xdca5('0x34')]())[_0xdca5('0x1e')](dynamics365[_0xdca5('0x35')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x36')]())['then'](campaign[_0xdca5('0x37')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x38')]())[_0xdca5('0x1e')](voiceExtension[_0xdca5('0x39')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x3a')]())[_0xdca5('0x1e')](faxAccount[_0xdca5('0x3b')]())[_0xdca5('0x1e')](realtime['initFaxAccounts']())['then'](function(){return realtime;});}function initParams(){return Promise[_0xdca5('0x3c')]()[_0xdca5('0x1e')](voiceQueueReport['getVoiceQueueReports']())[_0xdca5('0x1e')](realtime[_0xdca5('0x3d')]())[_0xdca5('0x1e')](cmHopperHistory[_0xdca5('0x3e')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x3f')]())[_0xdca5('0x1e')](cmHopperHistory[_0xdca5('0x40')]())[_0xdca5('0x1e')](realtime[_0xdca5('0x41')]())[_0xdca5('0x1e')](voiceCallReport['getVoiceCallReports']())[_0xdca5('0x1e')](realtime[_0xdca5('0x42')]())[_0xdca5('0x43')](function(_0x23a040){logger['error'](_0xdca5('0x44'),util['inspect'](_0x23a040,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0xdca5('0x1e')](function(){return initRealtime();})[_0xdca5('0x1e')](function(){return initParams();})[_0xdca5('0x1e')](function(){report[_0xdca5('0x45')]();setInterval(initRealtime,0x1388);})[_0xdca5('0x43')](function(_0x5804a8){logger['error'](_0xdca5('0x46'),util[_0xdca5('0x47')](_0x5804a8,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index d9b8c44..f5899b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','stateTime','address','voiceStatusQueue','stringify','format','user:%s','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','state','status','unknown'];(function(_0x53199f,_0x1dac3a){var _0x1f9609=function(_0x452065){while(--_0x452065){_0x53199f['push'](_0x53199f['shift']());}};_0x1f9609(++_0x1dac3a);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var Redis=require(_0x49c4('0x2'));var config=require(_0x49c4('0x3'));config[_0x49c4('0x4')]=_[_0x49c4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x49c4('0x6'))(new Redis(config['redis']));function Agent(_0xc1278f){this['id']=_0xc1278f['id']||0x0;this[_0x49c4('0x7')]=_0xc1278f[_0x49c4('0x7')]||'';this[_0x49c4('0x8')]=_0xc1278f[_0x49c4('0x8')]||'';this['accountcode']=_0xc1278f[_0x49c4('0x9')]||'';this[_0x49c4('0xa')]=_0xc1278f[_0x49c4('0xa')]||'';this[_0x49c4('0xb')]='unknown';this['stateTime']=0x0;this[_0x49c4('0xc')]=_0x49c4('0xd');this['address']='';this[_0x49c4('0xe')]='';this[_0x49c4('0xf')]='';this['interface']='';this['online']=_0xc1278f[_0x49c4('0x10')]||![];this[_0x49c4('0x11')]='unknown';this[_0x49c4('0x12')]=0x0;this[_0x49c4('0x13')]='';this['voiceStatusQueue']='';this[_0x49c4('0x14')]=![];this[_0x49c4('0x15')]=![];this[_0x49c4('0x1')]='';}Agent[_0x49c4('0x16')][_0x49c4('0x17')]=function(_0x18211c){var _0x75ea8;if(_0x18211c&&_0x18211c[_0x49c4('0xb')]){_0x75ea8=_0x18211c['state'][_0x49c4('0x18')]();switch(_0x75ea8){case _0x49c4('0x19'):_0x75ea8=_0x49c4('0x1a');break;case _0x49c4('0x1b'):_0x75ea8=_0x49c4('0x1c');break;}}if(_0x75ea8&&this['voiceStatus']!==_0x75ea8||_0x18211c[_0x49c4('0x1d')]){this[_0x49c4('0x12')]=_['toNumber'](moment()['format']('x'));}if(_0x75ea8){this[_0x49c4('0x11')]=_0x75ea8;}var _0x2f82d5={'id':this['id'],'name':this[_0x49c4('0x7')],'email':this['email'],'accountcode':this[_0x49c4('0x9')],'fullname':this['fullname'],'state':this[_0x49c4('0xb')],'stateTime':this[_0x49c4('0x1e')],'status':this[_0x49c4('0xc')],'address':this[_0x49c4('0x1f')],'online':this[_0x49c4('0x10')],'voiceStatus':this[_0x49c4('0x11')],'voiceStatusTime':this[_0x49c4('0x12')],'voiceStatusCallerIdNumber':this[_0x49c4('0x13')],'voiceStatusQueue':this[_0x49c4('0x20')],'interface':this['interface'],'onhold':this['onhold']};var _0x57f502=md5(JSON[_0x49c4('0x21')](_0x2f82d5));if(this['md5']!==_0x57f502){this['md5']=_0x57f502;io['to'](util[_0x49c4('0x22')](_0x49c4('0x23'),_0x2f82d5[_0x49c4('0x7')]))[_0x49c4('0x24')]('user:save',_0x2f82d5);io['emit'](_0x49c4('0x25'),_0x2f82d5);}};module[_0x49c4('0x26')]=Agent;
\ No newline at end of file
+var _0x17fa=['prototype','toLowerCase','not_inuse','inuse','talking','statePause','toNumber','name','stateTime','voiceStatusQueue','stringify','format','emit','user:presence','exports','util','moment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','status','address','mobile','interface','online','voiceStatus','unknown','voiceStatusTime','voiceStatusCallerIdNumber','onhold','md5'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x17fa,0x190));var _0xa17f=function(_0x5da54c,_0x520452){_0x5da54c=_0x5da54c-0x0;var _0x1246b0=_0x17fa[_0x5da54c];return _0x1246b0;};'use strict';var _=require('lodash');var util=require(_0xa17f('0x0'));var moment=require(_0xa17f('0x1'));var md5=require('md5');var Redis=require('ioredis');var config=require('../../../config/environment');config[_0xa17f('0x2')]=_[_0xa17f('0x3')](config[_0xa17f('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0xa17f('0x4'))(new Redis(config[_0xa17f('0x2')]));function Agent(_0x319623){this['id']=_0x319623['id']||0x0;this['name']=_0x319623['name']||'';this[_0xa17f('0x5')]=_0x319623[_0xa17f('0x5')]||'';this[_0xa17f('0x6')]=_0x319623[_0xa17f('0x6')]||'';this[_0xa17f('0x7')]=_0x319623[_0xa17f('0x7')]||'';this[_0xa17f('0x8')]='unknown';this['stateTime']=0x0;this[_0xa17f('0x9')]='unknown';this[_0xa17f('0xa')]='';this['phone']='';this[_0xa17f('0xb')]='';this[_0xa17f('0xc')]='';this[_0xa17f('0xd')]=_0x319623[_0xa17f('0xd')]||![];this[_0xa17f('0xe')]=_0xa17f('0xf');this[_0xa17f('0x10')]=0x0;this[_0xa17f('0x11')]='';this['voiceStatusQueue']='';this[_0xa17f('0x12')]=![];this['local']=![];this[_0xa17f('0x13')]='';}Agent[_0xa17f('0x14')]['updateStatusRealtime']=function(_0xfc9d66){var _0x534463;if(_0xfc9d66&&_0xfc9d66['state']){_0x534463=_0xfc9d66['state'][_0xa17f('0x15')]();switch(_0x534463){case _0xa17f('0x16'):_0x534463='idle';break;case _0xa17f('0x17'):_0x534463=_0xa17f('0x18');break;}}if(_0x534463&&this[_0xa17f('0xe')]!==_0x534463||_0xfc9d66[_0xa17f('0x19')]){this[_0xa17f('0x10')]=_[_0xa17f('0x1a')](moment()['format']('x'));}if(_0x534463){this[_0xa17f('0xe')]=_0x534463;}var _0x5bc08e={'id':this['id'],'name':this[_0xa17f('0x1b')],'email':this['email'],'accountcode':this[_0xa17f('0x6')],'fullname':this['fullname'],'state':this[_0xa17f('0x8')],'stateTime':this[_0xa17f('0x1c')],'status':this[_0xa17f('0x9')],'address':this['address'],'online':this[_0xa17f('0xd')],'voiceStatus':this[_0xa17f('0xe')],'voiceStatusTime':this[_0xa17f('0x10')],'voiceStatusCallerIdNumber':this[_0xa17f('0x11')],'voiceStatusQueue':this[_0xa17f('0x1d')],'interface':this[_0xa17f('0xc')],'onhold':this[_0xa17f('0x12')]};var _0x5aa7db=md5(JSON[_0xa17f('0x1e')](_0x5bc08e));if(this['md5']!==_0x5aa7db){this[_0xa17f('0x13')]=_0x5aa7db;io['to'](util[_0xa17f('0x1f')]('user:%s',_0x5bc08e[_0xa17f('0x1b')]))['emit']('user:save',_0x5bc08e);io[_0xa17f('0x20')](_0xa17f('0x21'),_0x5bc08e);}};module[_0xa17f('0x22')]=Agent;
\ No newline at end of file
index 5dbe5ca..7f91c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffac=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName'];(function(_0x239a81,_0x1ede2f){var _0x1a3b9b=function(_0x54971f){while(--_0x54971f){_0x239a81['push'](_0x239a81['shift']());}};_0x1a3b9b(++_0x1ede2f);}(_0xffac,0x1ad));var _0xcffa=function(_0x4b64ec,_0x2355c6){_0x4b64ec=_0x4b64ec-0x0;var _0x3373d2=_0xffac[_0x4b64ec];return _0x3373d2;};'use strict';function Campaign(_0x292e71){this['id']=_0x292e71['id']||0x0;this['name']=_0x292e71[_0xcffa('0x0')]||'';this[_0xcffa('0x1')]=_0x292e71[_0xcffa('0x1')]||'campaign';this[_0xcffa('0x2')]=0x0;this[_0xcffa('0x3')]=0x0;this[_0xcffa('0x4')]=0x0;this[_0xcffa('0x5')]=0x0;this['message']='';this[_0xcffa('0x6')]=!![];this[_0xcffa('0x7')]=_0x292e71[_0xcffa('0x7')];this[_0xcffa('0x8')]=_0x292e71[_0xcffa('0x8')];this[_0xcffa('0x9')]=_0x292e71['dialTimezone']||null;this[_0xcffa('0xa')]=_0x292e71['dialGlobalInterval']?_0x292e71[_0xcffa('0xa')]:null;this[_0xcffa('0xb')]=_0x292e71['dialOriginateCallerIdName'];this[_0xcffa('0xc')]=_0x292e71[_0xcffa('0xc')];this[_0xcffa('0xd')]=_0x292e71[_0xcffa('0xd')]||0x1e;this['dialCongestionMaxRetry']=_0x292e71[_0xcffa('0xe')];this[_0xcffa('0xf')]=_0x292e71[_0xcffa('0xf')];this['dialBusyMaxRetry']=_0x292e71[_0xcffa('0x10')];this[_0xcffa('0x11')]=_0x292e71[_0xcffa('0x11')];this[_0xcffa('0x12')]=_0x292e71['dialNoAnswerMaxRetry'];this[_0xcffa('0x13')]=_0x292e71[_0xcffa('0x13')];this[_0xcffa('0x14')]=_0x292e71['dialGlobalMaxRetry'];this['dialNoSuchNumberMaxRetry']=_0x292e71['dialNoSuchNumberMaxRetry']||0x3;this[_0xcffa('0x15')]=_0x292e71['dialNoSuchNumberRetryFrequency']||0x96;this[_0xcffa('0x16')]=_0x292e71['dialDropMaxRetry']||0x3;this[_0xcffa('0x17')]=_0x292e71[_0xcffa('0x17')]||0x96;this[_0xcffa('0x18')]=_0x292e71[_0xcffa('0x18')]||0x3;this[_0xcffa('0x19')]=_0x292e71[_0xcffa('0x19')]||0x96;this[_0xcffa('0x1a')]=_0x292e71[_0xcffa('0x1a')]||0x3;this[_0xcffa('0x1b')]=_0x292e71['dialMachineRetryFrequency']||0x96;this[_0xcffa('0x1c')]=_0x292e71[_0xcffa('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x292e71[_0xcffa('0x1d')]||0x96;this[_0xcffa('0x1e')]=_0x292e71[_0xcffa('0x1e')]||'DESC';this[_0xcffa('0x1f')]=_0x292e71['dialPrefix']||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x292e71[_0xcffa('0x20')]||undefined;this[_0xcffa('0x21')]=_0x292e71[_0xcffa('0x21')]||undefined;this['TrunkBackup']=_0x292e71[_0xcffa('0x22')]?_0x292e71['TrunkBackup']:undefined;this[_0xcffa('0x23')]=_0x292e71[_0xcffa('0x23')]?_0x292e71['Trunk']:undefined;this[_0xcffa('0x24')]=_0x292e71[_0xcffa('0x24')]?_0x292e71['Interval']:undefined;this[_0xcffa('0x25')]=_0x292e71[_0xcffa('0x25')]?_0x292e71['SquareProject']:undefined;this[_0xcffa('0x26')]=_0x292e71[_0xcffa('0x25')]?_0x292e71[_0xcffa('0x25')][_0xcffa('0x0')]:undefined;this[_0xcffa('0x27')]=_0x292e71[_0xcffa('0x27')]||![];this[_0xcffa('0x28')]=_0x292e71[_0xcffa('0x28')];this[_0xcffa('0x29')]=_0x292e71[_0xcffa('0x29')];this[_0xcffa('0x2a')]=_0x292e71[_0xcffa('0x2a')];this[_0xcffa('0x2b')]=_0x292e71[_0xcffa('0x2b')];this['dialAMDMinWordLength']=_0x292e71[_0xcffa('0x2c')];this[_0xcffa('0x2d')]=_0x292e71[_0xcffa('0x2d')];this['dialAMDMaximumNumberOfWords']=_0x292e71['dialAMDMaximumNumberOfWords'];this[_0xcffa('0x2e')]=_0x292e71[_0xcffa('0x2e')];this[_0xcffa('0x2f')]=_0x292e71[_0xcffa('0x2f')];}module[_0xcffa('0x30')]=Campaign;
\ No newline at end of file
+var _0xb32f=['dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','name','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','type','campaign','originated','temp','ivrAnswerCallsDay','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency'];(function(_0x43cc2a,_0x2284be){var _0x5cbcbb=function(_0x1b838e){while(--_0x1b838e){_0x43cc2a['push'](_0x43cc2a['shift']());}};_0x5cbcbb(++_0x2284be);}(_0xb32f,0xe7));var _0xfb32=function(_0x559a3b,_0xe162a1){_0x559a3b=_0x559a3b-0x0;var _0x5565f7=_0xb32f[_0x559a3b];return _0x5565f7;};'use strict';function Campaign(_0x1da4f4){this['id']=_0x1da4f4['id']||0x0;this['name']=_0x1da4f4['name']||'';this[_0xfb32('0x0')]=_0x1da4f4['type']||_0xfb32('0x1');this[_0xfb32('0x2')]=0x0;this[_0xfb32('0x3')]=0x0;this[_0xfb32('0x4')]=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0xfb32('0x5')]=!![];this[_0xfb32('0x6')]=_0x1da4f4[_0xfb32('0x6')];this[_0xfb32('0x7')]=_0x1da4f4['limitCalls'];this[_0xfb32('0x8')]=_0x1da4f4[_0xfb32('0x8')]||null;this[_0xfb32('0x9')]=_0x1da4f4[_0xfb32('0x9')]?_0x1da4f4['dialGlobalInterval']:null;this[_0xfb32('0xa')]=_0x1da4f4[_0xfb32('0xa')];this['dialOriginateCallerIdNumber']=_0x1da4f4[_0xfb32('0xb')];this['dialOriginateTimeout']=_0x1da4f4[_0xfb32('0xc')]||0x1e;this['dialCongestionMaxRetry']=_0x1da4f4[_0xfb32('0xd')];this[_0xfb32('0xe')]=_0x1da4f4['dialCongestionRetryFrequency'];this[_0xfb32('0xf')]=_0x1da4f4['dialBusyMaxRetry'];this['dialBusyRetryFrequency']=_0x1da4f4[_0xfb32('0x10')];this[_0xfb32('0x11')]=_0x1da4f4[_0xfb32('0x11')];this[_0xfb32('0x12')]=_0x1da4f4[_0xfb32('0x12')];this[_0xfb32('0x13')]=_0x1da4f4[_0xfb32('0x13')];this[_0xfb32('0x14')]=_0x1da4f4[_0xfb32('0x14')]||0x3;this[_0xfb32('0x15')]=_0x1da4f4['dialNoSuchNumberRetryFrequency']||0x96;this['dialDropMaxRetry']=_0x1da4f4[_0xfb32('0x16')]||0x3;this[_0xfb32('0x17')]=_0x1da4f4[_0xfb32('0x17')]||0x96;this[_0xfb32('0x18')]=_0x1da4f4['dialAbandonedMaxRetry']||0x3;this[_0xfb32('0x19')]=_0x1da4f4[_0xfb32('0x19')]||0x96;this[_0xfb32('0x1a')]=_0x1da4f4['dialMachineMaxRetry']||0x3;this[_0xfb32('0x1b')]=_0x1da4f4[_0xfb32('0x1b')]||0x96;this[_0xfb32('0x1c')]=_0x1da4f4[_0xfb32('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x1da4f4[_0xfb32('0x1d')]||0x96;this[_0xfb32('0x1e')]=_0x1da4f4[_0xfb32('0x1e')]||_0xfb32('0x1f');this['dialPrefix']=_0x1da4f4['dialPrefix']||undefined;this[_0xfb32('0x20')]=_0x1da4f4[_0xfb32('0x20')]||undefined;this[_0xfb32('0x21')]=_0x1da4f4[_0xfb32('0x21')]||undefined;this[_0xfb32('0x22')]=_0x1da4f4[_0xfb32('0x22')]?_0x1da4f4[_0xfb32('0x22')]:undefined;this[_0xfb32('0x23')]=_0x1da4f4[_0xfb32('0x23')]?_0x1da4f4[_0xfb32('0x23')]:undefined;this[_0xfb32('0x24')]=_0x1da4f4[_0xfb32('0x24')]?_0x1da4f4[_0xfb32('0x24')]:undefined;this[_0xfb32('0x25')]=_0x1da4f4[_0xfb32('0x25')]?_0x1da4f4[_0xfb32('0x25')]:undefined;this[_0xfb32('0x26')]=_0x1da4f4[_0xfb32('0x25')]?_0x1da4f4['SquareProject'][_0xfb32('0x27')]:undefined;this[_0xfb32('0x28')]=_0x1da4f4[_0xfb32('0x28')]||![];this[_0xfb32('0x29')]=_0x1da4f4['dialAMDInitialSilence'];this[_0xfb32('0x2a')]=_0x1da4f4[_0xfb32('0x2a')];this['dialAMDAfterGreetingSilence']=_0x1da4f4[_0xfb32('0x2b')];this['dialAMDTotalAnalysisTime']=_0x1da4f4[_0xfb32('0x2c')];this[_0xfb32('0x2d')]=_0x1da4f4['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x1da4f4['dialAMDBetweenWordsSilence'];this[_0xfb32('0x2e')]=_0x1da4f4[_0xfb32('0x2e')];this[_0xfb32('0x2f')]=_0x1da4f4[_0xfb32('0x2f')];this[_0xfb32('0x30')]=_0x1da4f4['dialAMDMaximumWordLength'];}module[_0xfb32('0x31')]=Campaign;
\ No newline at end of file
index f9f01e4..64242da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f5=['transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','channel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','linkedid','answered','endtime','unmanaged','lastapplication','billableseconds','type','monitor'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x21f5,0x1e5));var _0x521f=function(_0x3e9672,_0x439af9){_0x3e9672=_0x3e9672-0x0;var _0xfa2aac=_0x21f5[_0x3e9672];return _0xfa2aac;};'use strict';function Channel(){this['starttime']=null;this[_0x521f('0x0')]='';this['destinationchannel']='';this[_0x521f('0x1')]=0x0;this[_0x521f('0x2')]='';this[_0x521f('0x3')]=undefined;this[_0x521f('0x4')]=undefined;this[_0x521f('0x5')]=0x0;this[_0x521f('0x6')]='';this['uniqueid']=0x0;this[_0x521f('0x7')]=0x0;this['exten']=0x0;this[_0x521f('0x8')]=![];this['answertime']=null;this[_0x521f('0x9')]=null;this[_0x521f('0xa')]=![];this['abandoned']=![];this[_0x521f('0xb')]='';this['lastdata']='';this['duration']=0x0;this[_0x521f('0xc')]=0x0;this['holdtime']=0x0;this[_0x521f('0xd')]=null;this['tag']=null;this['disposition']=null;this[_0x521f('0xe')]=![];this['monitorFilename']=null;this['queue']=null;this['monitors']=[];this[_0x521f('0xf')]=undefined;this[_0x521f('0x10')]=undefined;this[_0x521f('0x11')]=undefined;this[_0x521f('0x12')]=0x0;}module[_0x521f('0x13')]=Channel;
\ No newline at end of file
+var _0xa9e2=['disposition','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','exports','starttime','channel','destinationchannel','calleridnum','connectedlinenum','context','linkedid','exten','answered','answertime','endtime','lastdata','holdtime','type','tag'];(function(_0x341e09,_0x32e73e){var _0x5a8ed9=function(_0x28c3a4){while(--_0x28c3a4){_0x341e09['push'](_0x341e09['shift']());}};_0x5a8ed9(++_0x32e73e);}(_0xa9e2,0xc0));var _0x2a9e=function(_0x2bdcb0,_0x5d316e){_0x2bdcb0=_0x2bdcb0-0x0;var _0xd345f8=_0xa9e2[_0x2bdcb0];return _0xd345f8;};'use strict';function Channel(){this[_0x2a9e('0x0')]=null;this[_0x2a9e('0x1')]='';this[_0x2a9e('0x2')]='';this[_0x2a9e('0x3')]=0x0;this['calleridname']='';this[_0x2a9e('0x4')]=undefined;this['connectedlinename']=undefined;this['accountcode']=0x0;this[_0x2a9e('0x5')]='';this['uniqueid']=0x0;this[_0x2a9e('0x6')]=0x0;this[_0x2a9e('0x7')]=0x0;this[_0x2a9e('0x8')]=![];this[_0x2a9e('0x9')]=null;this[_0x2a9e('0xa')]=null;this['unmanaged']=![];this['abandoned']=![];this['lastapplication']='';this[_0x2a9e('0xb')]='';this['duration']=0x0;this['billableseconds']=0x0;this[_0x2a9e('0xc')]=0x0;this[_0x2a9e('0xd')]=null;this[_0x2a9e('0xe')]=null;this[_0x2a9e('0xf')]=null;this['monitor']=![];this[_0x2a9e('0x10')]=null;this[_0x2a9e('0x11')]=null;this[_0x2a9e('0x12')]=[];this[_0x2a9e('0x13')]=undefined;this[_0x2a9e('0x14')]=undefined;this[_0x2a9e('0x15')]=undefined;this['mohtime']=0x0;}module[_0x2a9e('0x16')]=Channel;
\ No newline at end of file
index f5f65bf..53ac66b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc03f=['password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType'];(function(_0x34f690,_0x4e4e7e){var _0x55700b=function(_0x34ae79){while(--_0x34ae79){_0x34f690['push'](_0x34f690['shift']());}};_0x55700b(++_0x4e4e7e);}(_0xc03f,0xbf));var _0xfc03=function(_0x5f50eb,_0x3e7d18){_0x5f50eb=_0x5f50eb-0x0;var _0xb912b6=_0xc03f[_0x5f50eb];return _0xb912b6;};'use strict';function DeskAccount(_0x41cc25){this['id']=_0x41cc25['id']||0x0;this['name']=_0x41cc25[_0xfc03('0x0')]||'';this[_0xfc03('0x1')]=_0x41cc25[_0xfc03('0x1')]||'';this[_0xfc03('0x2')]=_0x41cc25['remoteUri']||'';this[_0xfc03('0x3')]=_0x41cc25[_0xfc03('0x3')]||'';this[_0xfc03('0x4')]=_0x41cc25[_0xfc03('0x4')]||'';this[_0xfc03('0x5')]=_0x41cc25[_0xfc03('0x5')]||'';this['consumerSecret']=_0x41cc25[_0xfc03('0x6')]||'';this[_0xfc03('0x7')]=_0x41cc25[_0xfc03('0x7')]||'';this['tokenSecret']=_0x41cc25[_0xfc03('0x8')]||'';this[_0xfc03('0x9')]=_0x41cc25[_0xfc03('0x9')]||'';this[_0xfc03('0xa')]=_0x41cc25[_0xfc03('0xa')]||'';this[_0xfc03('0xb')]=_0x41cc25['Configurations']||{};}module[_0xfc03('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x9b21=['Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x50346c,_0x5826cf){var _0x340c19=function(_0x7c068d){while(--_0x7c068d){_0x50346c['push'](_0x50346c['shift']());}};_0x340c19(++_0x5826cf);}(_0x9b21,0xab));var _0x19b2=function(_0xc3f4fe,_0x1a6bfb){_0xc3f4fe=_0xc3f4fe-0x0;var _0x1349a7=_0x9b21[_0xc3f4fe];return _0x1349a7;};'use strict';function DeskAccount(_0x1de178){this['id']=_0x1de178['id']||0x0;this[_0x19b2('0x0')]=_0x1de178[_0x19b2('0x0')]||'';this[_0x19b2('0x1')]=_0x1de178['username']||'';this['remoteUri']=_0x1de178[_0x19b2('0x2')]||'';this['authType']=_0x1de178[_0x19b2('0x3')]||'';this[_0x19b2('0x4')]=_0x1de178[_0x19b2('0x4')]||'';this['consumerKey']=_0x1de178[_0x19b2('0x5')]||'';this[_0x19b2('0x6')]=_0x1de178[_0x19b2('0x6')]||'';this[_0x19b2('0x7')]=_0x1de178['token']||'';this[_0x19b2('0x8')]=_0x1de178[_0x19b2('0x8')]||'';this[_0x19b2('0x9')]=_0x1de178[_0x19b2('0x9')]||'';this['serverUrl']=_0x1de178[_0x19b2('0xa')]||'';this[_0x19b2('0xb')]=_0x1de178[_0x19b2('0xb')]||{};}module[_0x19b2('0xc')]=DeskAccount;
\ No newline at end of file
index fa83861..adb363e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0169=['tenantId','clientId','clientSecret','serverUrl','modernAuthentication','CloudProvider','exports','name','username','password','remoteUri'];(function(_0x54b051,_0x5c837c){var _0x500dec=function(_0x51b953){while(--_0x51b953){_0x54b051['push'](_0x54b051['shift']());}};_0x500dec(++_0x5c837c);}(_0x0169,0x188));var _0x9016=function(_0x4128b5,_0x16afb9){_0x4128b5=_0x4128b5-0x0;var _0x3132ef=_0x0169[_0x4128b5];return _0x3132ef;};'use strict';function Dynamics365Account(_0x828f24){this['id']=_0x828f24['id']||0x0;this['name']=_0x828f24[_0x9016('0x0')]||'';this[_0x9016('0x1')]=_0x828f24[_0x9016('0x1')]||'';this[_0x9016('0x2')]=_0x828f24[_0x9016('0x2')]||'';this['remoteUri']=_0x828f24[_0x9016('0x3')]||'';this['tenantId']=_0x828f24[_0x9016('0x4')]||'';this[_0x9016('0x5')]=_0x828f24[_0x9016('0x5')]||'';this[_0x9016('0x6')]=_0x828f24[_0x9016('0x6')]||{};this[_0x9016('0x7')]=_0x828f24['serverUrl']||'';this[_0x9016('0x8')]=_0x828f24[_0x9016('0x8')]||![];this['Configurations']=_0x828f24['Configurations']||{};this[_0x9016('0x9')]=_0x828f24[_0x9016('0x9')]||{};}module[_0x9016('0xa')]=Dynamics365Account;
\ No newline at end of file
+var _0xc7e7=['password','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name'];(function(_0x3bd608,_0x4983d3){var _0x538339=function(_0x3f23fd){while(--_0x3f23fd){_0x3bd608['push'](_0x3bd608['shift']());}};_0x538339(++_0x4983d3);}(_0xc7e7,0x103));var _0x7c7e=function(_0x4cec24,_0x2ecd66){_0x4cec24=_0x4cec24-0x0;var _0x5a615f=_0xc7e7[_0x4cec24];return _0x5a615f;};'use strict';function Dynamics365Account(_0x4decbb){this['id']=_0x4decbb['id']||0x0;this['name']=_0x4decbb[_0x7c7e('0x0')]||'';this['username']=_0x4decbb['username']||'';this['password']=_0x4decbb[_0x7c7e('0x1')]||'';this['remoteUri']=_0x4decbb['remoteUri']||'';this['tenantId']=_0x4decbb[_0x7c7e('0x2')]||'';this[_0x7c7e('0x3')]=_0x4decbb['clientId']||'';this[_0x7c7e('0x4')]=_0x4decbb[_0x7c7e('0x4')]||{};this[_0x7c7e('0x5')]=_0x4decbb[_0x7c7e('0x5')]||'';this[_0x7c7e('0x6')]=_0x4decbb[_0x7c7e('0x6')]||![];this[_0x7c7e('0x7')]=_0x4decbb[_0x7c7e('0x7')]||{};this[_0x7c7e('0x8')]=_0x4decbb[_0x7c7e('0x8')]||{};}module[_0x7c7e('0x9')]=Dynamics365Account;
\ No newline at end of file
index 5b5afec..69c358a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x101a=['v17,v27,v29','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem'];(function(_0x5111d8,_0x5afa7c){var _0xfe6ba6=function(_0x293885){while(--_0x293885){_0x5111d8['push'](_0x5111d8['shift']());}};_0xfe6ba6(++_0x5afa7c);}(_0x101a,0x108));var _0xa101=function(_0x2416c9,_0x2de8bb){_0x2416c9=_0x2416c9-0x0;var _0x53a5b3=_0x101a[_0x2416c9];return _0x53a5b3;};'use strict';function FaxAccount(_0x11d721){this['id']=_0x11d721['id']||0x0;this['name']=_0x11d721[_0xa101('0x0')]||'';this[_0xa101('0x1')]=_0x11d721['description'];this[_0xa101('0x2')]=_0x11d721['ecm'];this[_0xa101('0x3')]=_0x11d721[_0xa101('0x3')];this[_0xa101('0x4')]=_0x11d721[_0xa101('0x4')];this[_0xa101('0x5')]=_0x11d721['minrate']||0x960;this[_0xa101('0x6')]=_0x11d721[_0xa101('0x6')]||0x3840;this[_0xa101('0x7')]=_0x11d721['modem']||_0xa101('0x8');this['gateway']=_0x11d721['gateway']||'no';this[_0xa101('0x9')]=_0x11d721[_0xa101('0x9')]||'no';this[_0xa101('0xa')]=_0x11d721[_0xa101('0xa')]||0x1388;this[_0xa101('0xb')]=_0x11d721[_0xa101('0xb')]||_0xa101('0xc');this[_0xa101('0xd')]=_0x11d721[_0xa101('0xd')]?_0x11d721['Trunk']:undefined;this[_0xa101('0xe')]=_0x11d721[_0xa101('0xe')];this['key']=_0x11d721[_0xa101('0xf')];}module[_0xa101('0x10')]=FaxAccount;
\ No newline at end of file
+var _0xdd62=['ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','SIP','Trunk'];(function(_0x499790,_0x37fcea){var _0xe4a55e=function(_0x325b3c){while(--_0x325b3c){_0x499790['push'](_0x499790['shift']());}};_0xe4a55e(++_0x37fcea);}(_0xdd62,0x157));var _0x2dd6=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xdd62[_0x3b380d];return _0x54502b;};'use strict';function FaxAccount(_0x462f31){this['id']=_0x462f31['id']||0x0;this[_0x2dd6('0x0')]=_0x462f31[_0x2dd6('0x0')]||'';this[_0x2dd6('0x1')]=_0x462f31[_0x2dd6('0x1')];this['ecm']=_0x462f31[_0x2dd6('0x2')];this['headerinfo']=_0x462f31[_0x2dd6('0x3')];this['localstationid']=_0x462f31[_0x2dd6('0x4')];this[_0x2dd6('0x5')]=_0x462f31[_0x2dd6('0x5')]||0x960;this[_0x2dd6('0x6')]=_0x462f31[_0x2dd6('0x6')]||0x3840;this[_0x2dd6('0x7')]=_0x462f31[_0x2dd6('0x7')]||'v17,v27,v29';this[_0x2dd6('0x8')]=_0x462f31[_0x2dd6('0x8')]||'no';this[_0x2dd6('0x9')]=_0x462f31[_0x2dd6('0x9')]||'no';this[_0x2dd6('0xa')]=_0x462f31[_0x2dd6('0xa')]||0x1388;this[_0x2dd6('0xb')]=_0x462f31[_0x2dd6('0xb')]||_0x2dd6('0xc');this[_0x2dd6('0xd')]=_0x462f31[_0x2dd6('0xd')]?_0x462f31[_0x2dd6('0xd')]:undefined;this[_0x2dd6('0xe')]=_0x462f31[_0x2dd6('0xe')];this[_0x2dd6('0xf')]=_0x462f31['key'];}module[_0x2dd6('0x10')]=FaxAccount;
\ No newline at end of file
index e2c7e41..ba7442f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4911=['Configurations','exports','name','username','apiKey','remoteUri','serverUrl'];(function(_0x55e039,_0xd1b88){var _0x33f1f3=function(_0x1169ae){while(--_0x1169ae){_0x55e039['push'](_0x55e039['shift']());}};_0x33f1f3(++_0xd1b88);}(_0x4911,0x8e));var _0x1491=function(_0x52dc13,_0x5813c2){_0x52dc13=_0x52dc13-0x0;var _0x1143e7=_0x4911[_0x52dc13];return _0x1143e7;};'use strict';function FreshdeskAccount(_0xa36c60){this['id']=_0xa36c60['id']||0x0;this[_0x1491('0x0')]=_0xa36c60[_0x1491('0x0')]||'';this['username']=_0xa36c60[_0x1491('0x1')]||'';this[_0x1491('0x2')]=_0xa36c60['token']||'';this[_0x1491('0x3')]=_0xa36c60[_0x1491('0x3')]||'';this[_0x1491('0x4')]=_0xa36c60[_0x1491('0x4')]||'';this[_0x1491('0x5')]=_0xa36c60[_0x1491('0x5')]||{};}module[_0x1491('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0x3c26=['apiKey','token','remoteUri','serverUrl','Configurations','exports'];(function(_0x10d8c7,_0xa80d12){var _0x4105b9=function(_0x46684b){while(--_0x46684b){_0x10d8c7['push'](_0x10d8c7['shift']());}};_0x4105b9(++_0xa80d12);}(_0x3c26,0x1e0));var _0x63c2=function(_0x18274c,_0x156e26){_0x18274c=_0x18274c-0x0;var _0x5e867a=_0x3c26[_0x18274c];return _0x5e867a;};'use strict';function FreshdeskAccount(_0x1de5a2){this['id']=_0x1de5a2['id']||0x0;this['name']=_0x1de5a2['name']||'';this['username']=_0x1de5a2['username']||'';this[_0x63c2('0x0')]=_0x1de5a2[_0x63c2('0x1')]||'';this[_0x63c2('0x2')]=_0x1de5a2[_0x63c2('0x2')]||'';this['serverUrl']=_0x1de5a2[_0x63c2('0x3')]||'';this[_0x63c2('0x4')]=_0x1de5a2[_0x63c2('0x4')]||{};}module[_0x63c2('0x5')]=FreshdeskAccount;
\ No newline at end of file
index 59cfaaf..642795f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x873a=['name','username','remoteUri','serverUrl','Configurations','exports'];(function(_0x1ab21e,_0xccf387){var _0x30f711=function(_0x45e4b6){while(--_0x45e4b6){_0x1ab21e['push'](_0x1ab21e['shift']());}};_0x30f711(++_0xccf387);}(_0x873a,0x1c2));var _0xa873=function(_0x71b140,_0x1319cc){_0x71b140=_0x71b140-0x0;var _0x50f774=_0x873a[_0x71b140];return _0x50f774;};'use strict';function FreshsalesAccount(_0x4c8d3b){this['id']=_0x4c8d3b['id']||0x0;this[_0xa873('0x0')]=_0x4c8d3b[_0xa873('0x0')]||'';this['username']=_0x4c8d3b[_0xa873('0x1')]||'';this['apiKey']=_0x4c8d3b['token']||'';this[_0xa873('0x2')]=_0x4c8d3b[_0xa873('0x2')]||'';this['serverUrl']=_0x4c8d3b[_0xa873('0x3')]||'';this[_0xa873('0x4')]=_0x4c8d3b['Configurations']||{};}module[_0xa873('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0x3c70=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3c70,0x10c));var _0x03c7=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x3c70[_0x37c22c];return _0x119d79;};'use strict';function FreshsalesAccount(_0x9115ad){this['id']=_0x9115ad['id']||0x0;this[_0x03c7('0x0')]=_0x9115ad[_0x03c7('0x0')]||'';this['username']=_0x9115ad[_0x03c7('0x1')]||'';this[_0x03c7('0x2')]=_0x9115ad[_0x03c7('0x3')]||'';this[_0x03c7('0x4')]=_0x9115ad[_0x03c7('0x4')]||'';this[_0x03c7('0x5')]=_0x9115ad['serverUrl']||'';this[_0x03c7('0x6')]=_0x9115ad['Configurations']||{};}module[_0x03c7('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 9e2e93d..878a490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb42=['assigned','lastAssignedTo','motionChannel','voice','variables','exports','type','calleridnum','queue','queuecallerjoinAt','position','count','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context'];(function(_0x3d86b4,_0x460b8f){var _0x82ea2=function(_0x584cfd){while(--_0x584cfd){_0x3d86b4['push'](_0x3d86b4['shift']());}};_0x82ea2(++_0x460b8f);}(_0xfb42,0x15f));var _0x2fb4=function(_0x363caa,_0x24eab5){_0x363caa=_0x363caa-0x0;var _0x1d34a9=_0xfb42[_0x363caa];return _0x1d34a9;};'use strict';function QueueReport(){this[_0x2fb4('0x0')]='inbound';this['uniqueid']='';this[_0x2fb4('0x1')]='';this['calleridname']='';this[_0x2fb4('0x2')]='';this[_0x2fb4('0x3')]=null;this['queuecallerleaveAt']=null;this[_0x2fb4('0x4')]=0x1;this[_0x2fb4('0x5')]=0x1;this[_0x2fb4('0x6')]=![];this['queuecallerabandonAt']=null;this[_0x2fb4('0x7')]=![];this[_0x2fb4('0x8')]=null;this[_0x2fb4('0x9')]=![];this[_0x2fb4('0xa')]=null;this[_0x2fb4('0xb')]=0x1;this[_0x2fb4('0xc')]='';this[_0x2fb4('0xd')]='';this[_0x2fb4('0xe')]='';this[_0x2fb4('0xf')]='';this[_0x2fb4('0x10')]='';this['exten']='';this['priority']='';this['holdtime']=0x0;this[_0x2fb4('0x11')]=![];this[_0x2fb4('0x12')]='';this[_0x2fb4('0x13')]=_0x2fb4('0x14');this['mohtime']=0x0;this[_0x2fb4('0x15')]={};}module[_0x2fb4('0x16')]=QueueReport;
\ No newline at end of file
+var _0xf627=['accountcode','context','exten','priority','assigned','lastAssignedTo','motionChannel','voice','variables','exports','type','inbound','uniqueid','calleridnum','queue','queuecallerjoinAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum'];(function(_0x328478,_0x16ecba){var _0x23f286=function(_0x12e344){while(--_0x12e344){_0x328478['push'](_0x328478['shift']());}};_0x23f286(++_0x16ecba);}(_0xf627,0x1c4));var _0x7f62=function(_0x2c3f5,_0x2c822a){_0x2c3f5=_0x2c3f5-0x0;var _0x33e834=_0xf627[_0x2c3f5];return _0x33e834;};'use strict';function QueueReport(){this[_0x7f62('0x0')]=_0x7f62('0x1');this[_0x7f62('0x2')]='';this[_0x7f62('0x3')]='';this['calleridname']='';this[_0x7f62('0x4')]='';this[_0x7f62('0x5')]=null;this['queuecallerleaveAt']=null;this[_0x7f62('0x6')]=0x1;this[_0x7f62('0x7')]=0x1;this[_0x7f62('0x8')]=![];this[_0x7f62('0x9')]=null;this[_0x7f62('0xa')]=![];this['queuecallercompleteAt']=null;this[_0x7f62('0xb')]=![];this[_0x7f62('0xc')]=null;this[_0x7f62('0xd')]=0x1;this[_0x7f62('0xe')]='';this[_0x7f62('0xf')]='';this['connectedlinename']='';this[_0x7f62('0x10')]='';this[_0x7f62('0x11')]='';this[_0x7f62('0x12')]='';this[_0x7f62('0x13')]='';this['holdtime']=0x0;this[_0x7f62('0x14')]=![];this[_0x7f62('0x15')]='';this[_0x7f62('0x16')]=_0x7f62('0x17');this['mohtime']=0x0;this[_0x7f62('0x18')]={};}module[_0x7f62('0x19')]=QueueReport;
\ No newline at end of file
index 1128713..b889aa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2df1=['username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','name'];(function(_0x2dbea6,_0x11f24b){var _0xeec637=function(_0x1aaa10){while(--_0x1aaa10){_0x2dbea6['push'](_0x2dbea6['shift']());}};_0xeec637(++_0x11f24b);}(_0x2df1,0x1ee));var _0x12df=function(_0x40ad23,_0x5a9859){_0x40ad23=_0x40ad23-0x0;var _0x1a4d7a=_0x2df1[_0x40ad23];return _0x1a4d7a;};'use strict';function SalesforceAccount(_0x23dfcc){this['id']=_0x23dfcc['id']||0x0;this[_0x12df('0x0')]=_0x23dfcc[_0x12df('0x0')]||'';this[_0x12df('0x1')]=_0x23dfcc['username']||'';this[_0x12df('0x2')]=_0x23dfcc[_0x12df('0x2')]||'';this[_0x12df('0x3')]=_0x23dfcc[_0x12df('0x3')]||'';this[_0x12df('0x4')]=_0x23dfcc[_0x12df('0x4')]||'';this[_0x12df('0x5')]=_0x23dfcc[_0x12df('0x5')]||'';this['securityToken']=_0x23dfcc[_0x12df('0x6')]||'';this['type']=_0x23dfcc[_0x12df('0x7')]||_0x12df('0x8');this[_0x12df('0x9')]=_0x23dfcc['serverUrl']||'';this[_0x12df('0xa')]=_0x23dfcc[_0x12df('0xa')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0x7455=['clientId','clientSecret','securityToken','type','serverUrl','Configurations','exports','name','username','remoteUri','password'];(function(_0x1c05b4,_0x1270b2){var _0x59283f=function(_0x36d61f){while(--_0x36d61f){_0x1c05b4['push'](_0x1c05b4['shift']());}};_0x59283f(++_0x1270b2);}(_0x7455,0x17d));var _0x5745=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7455[_0x14add3];return _0x4a174f;};'use strict';function SalesforceAccount(_0x586c5a){this['id']=_0x586c5a['id']||0x0;this[_0x5745('0x0')]=_0x586c5a[_0x5745('0x0')]||'';this[_0x5745('0x1')]=_0x586c5a[_0x5745('0x1')]||'';this[_0x5745('0x2')]=_0x586c5a[_0x5745('0x2')]||'';this[_0x5745('0x3')]=_0x586c5a[_0x5745('0x3')]||'';this['clientId']=_0x586c5a[_0x5745('0x4')]||'';this[_0x5745('0x5')]=_0x586c5a[_0x5745('0x5')]||'';this[_0x5745('0x6')]=_0x586c5a[_0x5745('0x6')]||'';this['type']=_0x586c5a[_0x5745('0x7')]||'integrationTab';this['serverUrl']=_0x586c5a[_0x5745('0x8')]||'';this[_0x5745('0x9')]=_0x586c5a[_0x5745('0x9')]||{};}module[_0x5745('0xa')]=SalesforceAccount;
\ No newline at end of file
index 679d465..74e3a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa778=['serverUrl','Configurations','name','username','password','remoteUri'];(function(_0x37a1e6,_0x536b85){var _0x115a59=function(_0x4173a7){while(--_0x4173a7){_0x37a1e6['push'](_0x37a1e6['shift']());}};_0x115a59(++_0x536b85);}(_0xa778,0x74));var _0x8a77=function(_0x1ac734,_0xac2967){_0x1ac734=_0x1ac734-0x0;var _0x1478b2=_0xa778[_0x1ac734];return _0x1478b2;};'use strict';function ServicenowAccount(_0x21526f){this['id']=_0x21526f['id']||0x0;this[_0x8a77('0x0')]=_0x21526f[_0x8a77('0x0')]||'';this['username']=_0x21526f[_0x8a77('0x1')]||'';this[_0x8a77('0x2')]=_0x21526f[_0x8a77('0x2')]||'';this[_0x8a77('0x3')]=_0x21526f['remoteUri']||'';this['serverUrl']=_0x21526f[_0x8a77('0x4')]||'';this['Configurations']=_0x21526f[_0x8a77('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0x28d6=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x26cb35,_0x4ffc79){var _0x133ef5=function(_0x4ef260){while(--_0x4ef260){_0x26cb35['push'](_0x26cb35['shift']());}};_0x133ef5(++_0x4ffc79);}(_0x28d6,0x70));var _0x628d=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x28d6[_0x42bdad];return _0x122626;};'use strict';function ServicenowAccount(_0x245374){this['id']=_0x245374['id']||0x0;this[_0x628d('0x0')]=_0x245374['name']||'';this[_0x628d('0x1')]=_0x245374[_0x628d('0x1')]||'';this[_0x628d('0x2')]=_0x245374['password']||'';this[_0x628d('0x3')]=_0x245374[_0x628d('0x3')]||'';this[_0x628d('0x4')]=_0x245374[_0x628d('0x4')]||'';this['Configurations']=_0x245374[_0x628d('0x5')]||{};}module[_0x628d('0x6')]=ServicenowAccount;
\ No newline at end of file
index 0c0de5a..ced033c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27c0=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x214ddf,_0xff1179){var _0x1245ac=function(_0x44802d){while(--_0x44802d){_0x214ddf['push'](_0x214ddf['shift']());}};_0x1245ac(++_0xff1179);}(_0x27c0,0x8f));var _0x027c=function(_0x49f78b,_0x1d139e){_0x49f78b=_0x49f78b-0x0;var _0x43f021=_0x27c0[_0x49f78b];return _0x43f021;};'use strict';function SugarcrmAccount(_0x11de1b){this['id']=_0x11de1b['id']||0x0;this[_0x027c('0x0')]=_0x11de1b['name']||'';this[_0x027c('0x1')]=_0x11de1b['username']||'';this['password']=_0x11de1b[_0x027c('0x2')]||'';this[_0x027c('0x3')]=_0x11de1b['remoteUri']||'';this[_0x027c('0x4')]=_0x11de1b[_0x027c('0x4')]||'';this[_0x027c('0x5')]=_0x11de1b[_0x027c('0x5')]||{};}module[_0x027c('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0xe9ea=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe9ea,0xb5));var _0xae9e=function(_0x330b67,_0xf0895f){_0x330b67=_0x330b67-0x0;var _0x3b4c96=_0xe9ea[_0x330b67];return _0x3b4c96;};'use strict';function SugarcrmAccount(_0x48a7d9){this['id']=_0x48a7d9['id']||0x0;this[_0xae9e('0x0')]=_0x48a7d9[_0xae9e('0x0')]||'';this['username']=_0x48a7d9[_0xae9e('0x1')]||'';this[_0xae9e('0x2')]=_0x48a7d9[_0xae9e('0x2')]||'';this['remoteUri']=_0x48a7d9[_0xae9e('0x3')]||'';this['serverUrl']=_0x48a7d9[_0xae9e('0x4')]||'';this['Configurations']=_0x48a7d9[_0xae9e('0x5')]||{};}module[_0xae9e('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 87f85f4..be6a75c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97c1=['address','name','accountcode','unknown','stateTime','status'];(function(_0x26d865,_0x357dcb){var _0x1a293a=function(_0x255c16){while(--_0x255c16){_0x26d865['push'](_0x26d865['shift']());}};_0x1a293a(++_0x357dcb);}(_0x97c1,0xdf));var _0x197c=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x97c1[_0x4a9fb1];return _0x348672;};'use strict';function Telephone(_0x5c57cb){this['id']=_0x5c57cb['id']||0x0;this[_0x197c('0x0')]=_0x5c57cb['name']||'';this[_0x197c('0x1')]=_0x5c57cb['accountcode']||'';this['state']=_0x197c('0x2');this[_0x197c('0x3')]=0x0;this[_0x197c('0x4')]=_0x197c('0x2');this[_0x197c('0x5')]='';}module['exports']=Telephone;
\ No newline at end of file
+var _0xcad9=['exports','name','accountcode','state','unknown','stateTime','status','address'];(function(_0x19d67d,_0x4f7e95){var _0x247385=function(_0xe6b2fc){while(--_0xe6b2fc){_0x19d67d['push'](_0x19d67d['shift']());}};_0x247385(++_0x4f7e95);}(_0xcad9,0x1e1));var _0x9cad=function(_0x1e23e2,_0x57767c){_0x1e23e2=_0x1e23e2-0x0;var _0x347c0f=_0xcad9[_0x1e23e2];return _0x347c0f;};'use strict';function Telephone(_0x411fe1){this['id']=_0x411fe1['id']||0x0;this['name']=_0x411fe1[_0x9cad('0x0')]||'';this[_0x9cad('0x1')]=_0x411fe1[_0x9cad('0x1')]||'';this[_0x9cad('0x2')]=_0x9cad('0x3');this[_0x9cad('0x4')]=0x0;this[_0x9cad('0x5')]='unknown';this[_0x9cad('0x6')]='';}module[_0x9cad('0x7')]=Telephone;
\ No newline at end of file
index 1f13d9b..62d5dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x2c93d9,_0x569904){var _0x4964c0=function(_0x12ffb6){while(--_0x12ffb6){_0x2c93d9['push'](_0x2c93d9['shift']());}};_0x4964c0(++_0x569904);}(_0xb10b,0x12a));var _0xbb10=function(_0x14be9e,_0x44e984){_0x14be9e=_0x14be9e-0x0;var _0x11fd99=_0xb10b[_0x14be9e];return _0x11fd99;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x1d5416,_0x4779ca){var _0x49b10d=function(_0x378953){while(--_0x378953){_0x1d5416['push'](_0x1d5416['shift']());}};_0x49b10d(++_0x4779ca);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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 631d47c..1e27ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x4e6280,_0x5bb13d){var _0xb4e14a=function(_0x56dd9a){while(--_0x56dd9a){_0x4e6280['push'](_0x4e6280['shift']());}};_0xb4e14a(++_0x5bb13d);}(_0xb10b,0x12a));var _0xbb10=function(_0x5e3cbd,_0x2fd5cd){_0x5e3cbd=_0x5e3cbd-0x0;var _0x1ed1ce=_0xb10b[_0x5e3cbd];return _0x1ed1ce;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
+var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x56e054,_0x1fe91b){var _0x17e294=function(_0x502703){while(--_0x502703){_0x56e054['push'](_0x56e054['shift']());}};_0x17e294(++_0x1fe91b);}(_0xb10b,0x12a));var _0xbb10=function(_0x1492bd,_0x1ad636){_0x1492bd=_0x1492bd-0x0;var _0x317259=_0xb10b[_0x1492bd];return _0x317259;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
index 0a64244..1ff8a59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cc9=['stateTime','status','registry','host','port','domain','refresh','stateRegistry','registrationtime','defaultuser','exports','active','name','state','unknown'];(function(_0x249b5d,_0x5945b9){var _0xb82d8f=function(_0x55b62c){while(--_0x55b62c){_0x249b5d['push'](_0x249b5d['shift']());}};_0xb82d8f(++_0x5945b9);}(_0x8cc9,0xdd));var _0x98cc=function(_0x7bf747,_0x5a3e7e){_0x7bf747=_0x7bf747-0x0;var _0x198866=_0x8cc9[_0x7bf747];return _0x198866;};'use strict';function Trunk(_0x1b1dd4){this['id']=_0x1b1dd4['id']||0x0;this[_0x98cc('0x0')]=_0x1b1dd4[_0x98cc('0x0')]||![];this[_0x98cc('0x1')]=_0x1b1dd4[_0x98cc('0x1')]||'';this[_0x98cc('0x2')]=_0x98cc('0x3');this[_0x98cc('0x4')]=0x0;this[_0x98cc('0x5')]=_0x98cc('0x3');this[_0x98cc('0x6')]=_0x1b1dd4[_0x98cc('0x6')]&&_0x1b1dd4[_0x98cc('0x6')]['indexOf'](':')?_0x1b1dd4[_0x98cc('0x6')]['split'](':')[0x0]:'';this[_0x98cc('0x7')]='';this[_0x98cc('0x8')]='';this[_0x98cc('0x9')]='';this['domainport']='';this[_0x98cc('0xa')]='';this[_0x98cc('0xb')]=_0x98cc('0x3');this[_0x98cc('0xc')]='';this['address']='';this['defaultuser']=_0x1b1dd4[_0x98cc('0xd')]||'';}module[_0x98cc('0xe')]=Trunk;
\ No newline at end of file
+var _0xb8e7=['status','registry','split','port','domain','domainport','refresh','stateRegistry','address','defaultuser','exports','active','name','state','unknown'];(function(_0x55754e,_0x286388){var _0x2e9948=function(_0x1eaeff){while(--_0x1eaeff){_0x55754e['push'](_0x55754e['shift']());}};_0x2e9948(++_0x286388);}(_0xb8e7,0xb0));var _0x7b8e=function(_0x1493b8,_0x1e59f0){_0x1493b8=_0x1493b8-0x0;var _0x2a62a9=_0xb8e7[_0x1493b8];return _0x2a62a9;};'use strict';function Trunk(_0x535441){this['id']=_0x535441['id']||0x0;this['active']=_0x535441[_0x7b8e('0x0')]||![];this[_0x7b8e('0x1')]=_0x535441[_0x7b8e('0x1')]||'';this[_0x7b8e('0x2')]=_0x7b8e('0x3');this['stateTime']=0x0;this[_0x7b8e('0x4')]=_0x7b8e('0x3');this[_0x7b8e('0x5')]=_0x535441[_0x7b8e('0x5')]&&_0x535441[_0x7b8e('0x5')]['indexOf'](':')?_0x535441[_0x7b8e('0x5')][_0x7b8e('0x6')](':')[0x0]:'';this['host']='';this[_0x7b8e('0x7')]='';this[_0x7b8e('0x8')]='';this[_0x7b8e('0x9')]='';this[_0x7b8e('0xa')]='';this[_0x7b8e('0xb')]='unknown';this['registrationtime']='';this[_0x7b8e('0xc')]='';this[_0x7b8e('0xd')]=_0x535441[_0x7b8e('0xd')]||'';}module[_0x7b8e('0xe')]=Trunk;
\ No newline at end of file
index 44d91c8..b5c2304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16e9=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x16e9,0x144));var _0x916e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x16e9[_0x20a584];return _0x4b41a8;};'use strict';function voiceExtension(_0x4d913b){this['id']=_0x4d913b['id']||0x0;this[_0x916e('0x0')]=_0x4d913b[_0x916e('0x0')]||'';this[_0x916e('0x1')]=_0x4d913b[_0x916e('0x1')]||_0x916e('0x2');this['mandatoryDisposition']=_0x4d913b[_0x916e('0x3')]||![];}module[_0x916e('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x7c51=['none','mandatoryDisposition','exten'];(function(_0x13610a,_0x4f866c){var _0x150ecc=function(_0x383f46){while(--_0x383f46){_0x13610a['push'](_0x13610a['shift']());}};_0x150ecc(++_0x4f866c);}(_0x7c51,0x125));var _0x17c5=function(_0x4535a0,_0x4b4232){_0x4535a0=_0x4535a0-0x0;var _0x3d29b2=_0x7c51[_0x4535a0];return _0x3d29b2;};'use strict';function voiceExtension(_0x4f7f8a){this['id']=_0x4f7f8a['id']||0x0;this[_0x17c5('0x0')]=_0x4f7f8a[_0x17c5('0x0')]||'';this['recordingFormat']=_0x4f7f8a['recordingFormat']||_0x17c5('0x1');this[_0x17c5('0x2')]=_0x4f7f8a['mandatoryDisposition']||![];}module['exports']=voiceExtension;
\ No newline at end of file
index cdcacdd..7aebca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa66=['progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','busy','invalid','unavailable','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod'];(function(_0x268a92,_0x598f04){var _0x17d786=function(_0x282f1c){while(--_0x282f1c){_0x268a92['push'](_0x268a92['shift']());}};_0x17d786(++_0x598f04);}(_0xaa66,0xcc));var _0x6aa6=function(_0x43e773,_0xc7351){_0x43e773=_0x43e773-0x0;var _0x10df45=_0xaa66[_0x43e773];return _0x10df45;};'use strict';var statusDesc=[_0x6aa6('0x0'),_0x6aa6('0x1'),'inuse',_0x6aa6('0x2'),_0x6aa6('0x3'),_0x6aa6('0x4'),'ringing',_0x6aa6('0x5'),_0x6aa6('0x6')];var monitorFormat={'wav':_0x6aa6('0x7'),'wav49':_0x6aa6('0x8'),'gsm':_0x6aa6('0x9')};var strategy={'rrmemory':_0x6aa6('0xa'),'roundrobin':_0x6aa6('0xb')};function VoiceQueue(_0x1dc68b){this['id']=_0x1dc68b['id']||0x0;this['name']=_0x1dc68b[_0x6aa6('0xc')]||'';this[_0x6aa6('0xd')]=_0x1dc68b['monitor_format']||'';this['type']=_0x1dc68b[_0x6aa6('0xe')]||'inbound';this[_0x6aa6('0xf')]=0x0;this[_0x6aa6('0x10')]=0x0;this[_0x6aa6('0x11')]=0x0;this[_0x6aa6('0x12')]=0x0;this[_0x6aa6('0x13')]=0x0;this[_0x6aa6('0x14')]=0x0;this[_0x6aa6('0x15')]=0x0;this[_0x6aa6('0x16')]=0x0;this[_0x6aa6('0x17')]=0x0;this['loggedIn']=0x0;this[_0x6aa6('0x18')]=0x0;this[_0x6aa6('0x19')]=_0x1dc68b[_0x6aa6('0x19')]||![];this[_0x6aa6('0x1a')]=_0x1dc68b[_0x6aa6('0x1a')]||0xa;this[_0x6aa6('0x1b')]=_0x1dc68b[_0x6aa6('0x1b')]||'no';this[_0x6aa6('0x1c')]=!![];this[_0x6aa6('0x1d')]='';this[_0x6aa6('0x1e')]=0x0;this[_0x6aa6('0x1f')]=0x0;this['dialTimezone']=_0x1dc68b[_0x6aa6('0x20')]||null;this['dialGlobalInterval']=_0x1dc68b['dialGlobalInterval']?_0x1dc68b[_0x6aa6('0x21')]:null;this[_0x6aa6('0x22')]=_0x1dc68b[_0x6aa6('0x22')];this[_0x6aa6('0x23')]=_0x1dc68b['dialMethod']||_0x6aa6('0x24');this[_0x6aa6('0x25')]=_0x1dc68b[_0x6aa6('0x25')]||0x0;this[_0x6aa6('0x26')]=_0x1dc68b[_0x6aa6('0x26')]||0x0;this[_0x6aa6('0x27')]=_0x1dc68b[_0x6aa6('0x27')]||0x1;this[_0x6aa6('0x28')]=_0x1dc68b['dialPredictiveOptimization']||'dropRate';this[_0x6aa6('0x29')]=_0x1dc68b[_0x6aa6('0x29')]||0.03;this[_0x6aa6('0x2a')]=_0x1dc68b[_0x6aa6('0x2a')]||0x258;this[_0x6aa6('0x2b')]=_0x1dc68b['dialOriginateCallerIdName']||_0x6aa6('0x2c');this[_0x6aa6('0x2d')]=_0x1dc68b['dialOriginateCallerIdNumber']||_0x6aa6('0x2c');this[_0x6aa6('0x2e')]=_0x1dc68b[_0x6aa6('0x2e')]||0x1e;this[_0x6aa6('0x2f')]=_0x1dc68b['dialQueueOptions']||_0x6aa6('0x30');this['dialQueueTimeout']=_0x1dc68b[_0x6aa6('0x31')]||0x3;this['dialQueueProject']=_0x1dc68b[_0x6aa6('0x32')]||undefined;this[_0x6aa6('0x33')]=_0x1dc68b[_0x6aa6('0x33')]||0x3;this['dialCongestionRetryFrequency']=_0x1dc68b[_0x6aa6('0x34')]||0x96;this[_0x6aa6('0x35')]=_0x1dc68b[_0x6aa6('0x35')]||0x3;this['dialBusyRetryFrequency']=_0x1dc68b['dialBusyRetryFrequency']||0x96;this[_0x6aa6('0x36')]=_0x1dc68b['dialNoAnswerMaxRetry']||0x3;this[_0x6aa6('0x37')]=_0x1dc68b[_0x6aa6('0x37')]||0x96;this[_0x6aa6('0x38')]=_0x1dc68b[_0x6aa6('0x38')]||0x3;this[_0x6aa6('0x39')]=_0x1dc68b['dialNoSuchNumberRetryFrequency']||0x96;this[_0x6aa6('0x3a')]=_0x1dc68b[_0x6aa6('0x3a')]||0x3;this[_0x6aa6('0x3b')]=_0x1dc68b[_0x6aa6('0x3b')]||0x96;this['dialAbandonedMaxRetry']=_0x1dc68b['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x1dc68b['dialAbandonedRetryFrequency']||0x96;this[_0x6aa6('0x3c')]=_0x1dc68b[_0x6aa6('0x3c')]||0x3;this[_0x6aa6('0x3d')]=_0x1dc68b[_0x6aa6('0x3d')]||0x96;this[_0x6aa6('0x3e')]=_0x1dc68b[_0x6aa6('0x3e')]||0x3;this[_0x6aa6('0x3f')]=_0x1dc68b[_0x6aa6('0x3f')]||0x96;this[_0x6aa6('0x40')]=_0x1dc68b[_0x6aa6('0x40')]||0x3;this[_0x6aa6('0x41')]=_0x1dc68b[_0x6aa6('0x41')]||0x4;this['Trunk']=_0x1dc68b[_0x6aa6('0x42')]?_0x1dc68b[_0x6aa6('0x42')]:undefined;this['TrunkBackup']=_0x1dc68b[_0x6aa6('0x43')]?_0x1dc68b['TrunkBackup']:undefined;this['dialPrefix']=_0x1dc68b[_0x6aa6('0x44')]||undefined;this[_0x6aa6('0x45')]=_0x1dc68b['Interval']?_0x1dc68b[_0x6aa6('0x45')]:undefined;this['dialOrderByScheduledAt']=_0x1dc68b[_0x6aa6('0x46')]||_0x6aa6('0x47');this[_0x6aa6('0x48')]=_0x1dc68b[_0x6aa6('0x48')]||undefined;this[_0x6aa6('0x49')]=_0x1dc68b['dialCutDigit']||undefined;this[_0x6aa6('0x4a')]=strategy[_0x1dc68b[_0x6aa6('0x4a')]]||_0x6aa6('0xa');this['queueStatusComplete']=!![];this[_0x6aa6('0x4b')]=_0x1dc68b[_0x6aa6('0x4b')]||![];this[_0x6aa6('0x4c')]=_0x1dc68b['dialAMDInitialSilence'];this[_0x6aa6('0x4d')]=_0x1dc68b['dialAMDGreeting'];this[_0x6aa6('0x4e')]=_0x1dc68b[_0x6aa6('0x4e')];this[_0x6aa6('0x4f')]=_0x1dc68b['dialAMDTotalAnalysisTime'];this[_0x6aa6('0x50')]=_0x1dc68b['dialAMDMinWordLength'];this[_0x6aa6('0x51')]=_0x1dc68b[_0x6aa6('0x51')];this[_0x6aa6('0x52')]=_0x1dc68b[_0x6aa6('0x52')];this[_0x6aa6('0x53')]=_0x1dc68b[_0x6aa6('0x53')];this[_0x6aa6('0x54')]=_0x1dc68b[_0x6aa6('0x54')];this[_0x6aa6('0x55')]=0x0;this[_0x6aa6('0x56')]=0x0;this[_0x6aa6('0x57')]=_0x1dc68b['timeout'];this['outboundAnswerCallsDay']=0x0;this[_0x6aa6('0x58')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this['outboundBusyCallsDay']=0x0;this[_0x6aa6('0x59')]=0x0;this[_0x6aa6('0x5a')]=0x0;this[_0x6aa6('0x5b')]=0x0;this[_0x6aa6('0x5c')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0x6aa6('0x5d')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x6aa6('0x5e')]=0x0;this[_0x6aa6('0x5f')]=0x0;this['startProgressive']=undefined;this[_0x6aa6('0x60')]=undefined;this[_0x6aa6('0x61')]=undefined;this[_0x6aa6('0x62')]=1.05;this[_0x6aa6('0x63')]=0x0;this[_0x6aa6('0x64')]=0x0;this[_0x6aa6('0x65')]=0x0;this[_0x6aa6('0x66')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0x6aa6('0x67')]=0x0;this[_0x6aa6('0x68')]=0x0;this[_0x6aa6('0x69')]=0x0;this[_0x6aa6('0x6a')]=_0x1dc68b['dialPredictiveIntervalMaxThreshold']||0x14;this['predictiveIntervalMinThreshold']=_0x1dc68b['dialPredictiveIntervalMaxThreshold']||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x6aa6('0x6b')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x6aa6('0x6c')]=0x0;this['erlangCallToSecond']=0x0;this[_0x6aa6('0x6d')]=0x0;this[_0x6aa6('0x6e')]=0x0;this[_0x6aa6('0x6f')]=_0x1dc68b['dialRecallMeTimeout']||0x1e;this['dialRecallInQueue']=_0x1dc68b[_0x6aa6('0x70')]||![];this[_0x6aa6('0x71')]=!!_0x1dc68b[_0x6aa6('0x71')]||![];this[_0x6aa6('0x72')]=!!_0x1dc68b[_0x6aa6('0x72')]||![];this[_0x6aa6('0x73')]=_0x1dc68b[_0x6aa6('0x73')]||undefined;this[_0x6aa6('0x74')]=_0x1dc68b[_0x6aa6('0x74')]||![];this[_0x6aa6('0x75')]=_0x1dc68b[_0x6aa6('0x75')]||![];this['monitor_format']=monitorFormat[_0x1dc68b[_0x6aa6('0xd')]]?monitorFormat[_0x1dc68b[_0x6aa6('0xd')]]:undefined;this['mandatoryDisposition']=_0x1dc68b[_0x6aa6('0x76')]||![];this['mandatoryDispositionPause']=_0x1dc68b[_0x6aa6('0x77')]?_0x1dc68b[_0x6aa6('0x77')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0x814b=['predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','wav','wav49','gsm','fewestcalls','leastrecent','linear','ringall','roundrobin','rrmemory','rrordered','wrandom','name','monitor_format','type','inbound','waiting','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','busy','invalid','loggedIn','notInUse','onHold','paused','ringing','ringInUse','talking','unavailable','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','progressive','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses'];(function(_0x253b37,_0xdb7ae0){var _0x24b147=function(_0x38c58d){while(--_0x38c58d){_0x253b37['push'](_0x253b37['shift']());}};_0x24b147(++_0xdb7ae0);}(_0x814b,0x1a2));var _0xb814=function(_0x512661,_0x4b4012){_0x512661=_0x512661-0x0;var _0x1debde=_0x814b[_0x512661];return _0x1debde;};'use strict';var monitorFormat={'wav':_0xb814('0x0'),'wav49':_0xb814('0x1'),'gsm':_0xb814('0x2')};var strategy={'fewestcalls':_0xb814('0x3'),'leastrecent':_0xb814('0x4'),'linear':_0xb814('0x5'),'random':'random','ringall':_0xb814('0x6'),'rr':_0xb814('0x7'),'rrmemory':_0xb814('0x8'),'rrordered':_0xb814('0x9'),'wrandom':_0xb814('0xa')};function VoiceQueue(_0x322a70){this['id']=_0x322a70['id']||0x0;this['name']=_0x322a70[_0xb814('0xb')]||'';this[_0xb814('0xc')]=_0x322a70['monitor_format']||'';this[_0xb814('0xd')]=_0x322a70[_0xb814('0xd')]||_0xb814('0xe');this[_0xb814('0xf')]=0x0;this[_0xb814('0x10')]=0x0;this[_0xb814('0x11')]=0x0;this[_0xb814('0x12')]=0x0;this[_0xb814('0x13')]=0x0;this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;this[_0xb814('0x16')]=0x0;this['available']=0x0;this[_0xb814('0x17')]=0x0;this['inUse']=0x0;this[_0xb814('0x18')]=0x0;this[_0xb814('0x19')]=0x0;this[_0xb814('0x1a')]=0x0;this[_0xb814('0x1b')]=0x0;this[_0xb814('0x1c')]=0x0;this[_0xb814('0x1d')]=0x0;this[_0xb814('0x1e')]=0x0;this[_0xb814('0x1f')]=0x0;this[_0xb814('0x20')]=0x0;this[_0xb814('0x21')]=0x0;this[_0xb814('0x22')]=_0x322a70[_0xb814('0x22')]||![];this[_0xb814('0x23')]=_0x322a70[_0xb814('0x23')]||0xa;this[_0xb814('0x24')]=_0x322a70[_0xb814('0x24')]||'no';this[_0xb814('0x25')]=!![];this[_0xb814('0x26')]='';this[_0xb814('0x27')]=0x0;this[_0xb814('0x28')]=0x0;this[_0xb814('0x29')]=_0x322a70['dialTimezone']||null;this[_0xb814('0x2a')]=_0x322a70['dialGlobalInterval']?_0x322a70[_0xb814('0x2a')]:null;this[_0xb814('0x2b')]=_0x322a70['dialActive'];this['dialMethod']=_0x322a70['dialMethod']||_0xb814('0x2c');this['dialLimitChannel']=_0x322a70['dialLimitChannel']||0x0;this[_0xb814('0x2d')]=_0x322a70[_0xb814('0x2d')]||0x0;this[_0xb814('0x2e')]=_0x322a70['dialPowerLevel']||0x1;this[_0xb814('0x2f')]=_0x322a70['dialPredictiveOptimization']||_0xb814('0x30');this[_0xb814('0x31')]=_0x322a70[_0xb814('0x31')]||0.03;this[_0xb814('0x32')]=_0x322a70[_0xb814('0x32')]||0x258;this[_0xb814('0x33')]=_0x322a70[_0xb814('0x33')]||'anonymous';this[_0xb814('0x34')]=_0x322a70['dialOriginateCallerIdNumber']||_0xb814('0x35');this[_0xb814('0x36')]=_0x322a70[_0xb814('0x36')]||0x1e;this[_0xb814('0x37')]=_0x322a70[_0xb814('0x37')]||_0xb814('0x38');this[_0xb814('0x39')]=_0x322a70['dialQueueTimeout']||0x3;this[_0xb814('0x3a')]=_0x322a70[_0xb814('0x3a')]||undefined;this[_0xb814('0x3b')]=_0x322a70[_0xb814('0x3b')]||0x3;this[_0xb814('0x3c')]=_0x322a70[_0xb814('0x3c')]||0x96;this[_0xb814('0x3d')]=_0x322a70[_0xb814('0x3d')]||0x3;this['dialBusyRetryFrequency']=_0x322a70[_0xb814('0x3e')]||0x96;this[_0xb814('0x3f')]=_0x322a70['dialNoAnswerMaxRetry']||0x3;this[_0xb814('0x40')]=_0x322a70[_0xb814('0x40')]||0x96;this[_0xb814('0x41')]=_0x322a70['dialNoSuchNumberMaxRetry']||0x3;this[_0xb814('0x42')]=_0x322a70[_0xb814('0x42')]||0x96;this['dialDropMaxRetry']=_0x322a70[_0xb814('0x43')]||0x3;this['dialDropRetryFrequency']=_0x322a70[_0xb814('0x44')]||0x96;this['dialAbandonedMaxRetry']=_0x322a70['dialAbandonedMaxRetry']||0x3;this[_0xb814('0x45')]=_0x322a70['dialAbandonedRetryFrequency']||0x96;this[_0xb814('0x46')]=_0x322a70[_0xb814('0x46')]||0x3;this[_0xb814('0x47')]=_0x322a70['dialMachineRetryFrequency']||0x96;this['dialAgentRejectMaxRetry']=_0x322a70[_0xb814('0x48')]||0x3;this[_0xb814('0x49')]=_0x322a70['dialAgentRejectRetryFrequency']||0x96;this[_0xb814('0x4a')]=_0x322a70[_0xb814('0x4a')]||0x3;this[_0xb814('0x4b')]=_0x322a70[_0xb814('0x4b')]||0x4;this[_0xb814('0x4c')]=_0x322a70[_0xb814('0x4c')]?_0x322a70[_0xb814('0x4c')]:undefined;this['TrunkBackup']=_0x322a70[_0xb814('0x4d')]?_0x322a70[_0xb814('0x4d')]:undefined;this[_0xb814('0x4e')]=_0x322a70[_0xb814('0x4e')]||undefined;this[_0xb814('0x4f')]=_0x322a70['Interval']?_0x322a70[_0xb814('0x4f')]:undefined;this['dialOrderByScheduledAt']=_0x322a70[_0xb814('0x50')]||_0xb814('0x51');this[_0xb814('0x52')]=_0x322a70['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xb814('0x53')]=_0x322a70[_0xb814('0x53')]||undefined;this['strategy']=strategy[_0x322a70[_0xb814('0x54')]]||_0xb814('0x8');this[_0xb814('0x55')]=!![];this[_0xb814('0x56')]=_0x322a70[_0xb814('0x56')]||![];this[_0xb814('0x57')]=_0x322a70['dialAMDInitialSilence'];this[_0xb814('0x58')]=_0x322a70['dialAMDGreeting'];this[_0xb814('0x59')]=_0x322a70['dialAMDAfterGreetingSilence'];this[_0xb814('0x5a')]=_0x322a70['dialAMDTotalAnalysisTime'];this[_0xb814('0x5b')]=_0x322a70[_0xb814('0x5b')];this['dialAMDBetweenWordsSilence']=_0x322a70['dialAMDBetweenWordsSilence'];this['dialAMDMaximumNumberOfWords']=_0x322a70['dialAMDMaximumNumberOfWords'];this[_0xb814('0x5c')]=_0x322a70[_0xb814('0x5c')];this[_0xb814('0x5d')]=_0x322a70[_0xb814('0x5d')];this['outboundRejectCallsDay']=0x0;this['pTalking']=0x0;this[_0xb814('0x5e')]=_0x322a70['timeout'];this[_0xb814('0x5f')]=0x0;this[_0xb814('0x60')]=0x0;this[_0xb814('0x61')]=0x0;this[_0xb814('0x62')]=0x0;this[_0xb814('0x63')]=0x0;this[_0xb814('0x64')]=0x0;this[_0xb814('0x65')]=0x0;this[_0xb814('0x66')]=0x0;this[_0xb814('0x67')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this['outboundDropCallsDayTimeout']=0x0;this['outboundDropCallsDayACS']=0x0;this[_0xb814('0x68')]=0x0;this['outboundAbandonedDay']=0x0;this[_0xb814('0x69')]=undefined;this['startPredictive']=undefined;this[_0xb814('0x6a')]=undefined;this[_0xb814('0x6b')]=1.05;this[_0xb814('0x6c')]=0x0;this[_0xb814('0x6d')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xb814('0x6e')]=0x0;this[_0xb814('0x6f')]=0x0;this[_0xb814('0x70')]=0x0;this[_0xb814('0x71')]=0x0;this[_0xb814('0x72')]=0x0;this[_0xb814('0x73')]=_0x322a70['dialPredictiveIntervalMaxThreshold']||0x14;this[_0xb814('0x74')]=_0x322a70[_0xb814('0x75')]||0xa;this[_0xb814('0x76')]=0x0;this[_0xb814('0x77')]=0x0;this[_0xb814('0x78')]=0x1;this[_0xb814('0x79')]=0x0;this[_0xb814('0x7a')]=0x0;this['erlangAbandonmentRate']=0x0;this['erlangBusyFactor']=0x0;this[_0xb814('0x7b')]=_0x322a70[_0xb814('0x7b')]||0x1e;this[_0xb814('0x7c')]=_0x322a70[_0xb814('0x7c')]||![];this[_0xb814('0x7d')]=!!_0x322a70[_0xb814('0x7d')]||![];this[_0xb814('0x7e')]=!!_0x322a70[_0xb814('0x7e')]||![];this[_0xb814('0x7f')]=_0x322a70[_0xb814('0x7f')]||undefined;this[_0xb814('0x80')]=_0x322a70['dialAgiAfterHangupClient']||![];this[_0xb814('0x81')]=_0x322a70[_0xb814('0x81')]||![];this['monitor_format']=monitorFormat[_0x322a70[_0xb814('0xc')]]?monitorFormat[_0x322a70['monitor_format']]:undefined;this[_0xb814('0x82')]=_0x322a70[_0xb814('0x82')]||![];this[_0xb814('0x83')]=_0x322a70[_0xb814('0x83')]?_0x322a70[_0xb814('0x83')]:undefined;}module[_0xb814('0x84')]=VoiceQueue;
\ No newline at end of file
diff --git a/server/services/ami/model/voiceQueueSummary.js b/server/services/ami/model/voiceQueueSummary.js
new file mode 100644 (file)
index 0000000..4f108bb
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x7334=['waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','exports','name','strategy','answered','available','busy','inUse','invalid','loggedIn','loggedInDb','onHold','notInUse','paused','pTalking','ringing','ringInUse','sumBillable','sumDuration','sumHoldTime','talking','total','type','unavailable','unknown','unmanaged'];(function(_0x503ddb,_0x2fcf2c){var _0x534e94=function(_0x1bb934){while(--_0x1bb934){_0x503ddb['push'](_0x503ddb['shift']());}};_0x534e94(++_0x2fcf2c);}(_0x7334,0x18c));var _0x4733=function(_0x3740be,_0x57ed7a){_0x3740be=_0x3740be-0x0;var _0x4ca21c=_0x7334[_0x3740be];return _0x4ca21c;};'use strict';function VoiceQueueSummary(_0x35cd9c){this['id']=_0x35cd9c['id'];this[_0x4733('0x0')]=_0x35cd9c[_0x4733('0x0')];this[_0x4733('0x1')]=_0x35cd9c['strategy'];this['abandoned']=_0x35cd9c['abandoned']||0x0;this[_0x4733('0x2')]=_0x35cd9c['answered']||0x0;this[_0x4733('0x3')]=_0x35cd9c['available']||0x0;this[_0x4733('0x4')]=_0x35cd9c[_0x4733('0x4')]||0x0;this[_0x4733('0x5')]=_0x35cd9c[_0x4733('0x5')]||0x0;this[_0x4733('0x6')]=_0x35cd9c[_0x4733('0x6')]||0x0;this[_0x4733('0x7')]=_0x35cd9c[_0x4733('0x7')]||0x0;this[_0x4733('0x8')]=_0x35cd9c[_0x4733('0x8')]||0x0;this[_0x4733('0x9')]=_0x35cd9c[_0x4733('0x9')]||0x0;this[_0x4733('0xa')]=_0x35cd9c[_0x4733('0xa')]||0x0;this['paused']=_0x35cd9c[_0x4733('0xb')]||0x0;this[_0x4733('0xc')]=_0x35cd9c[_0x4733('0xc')]||0x0;this['ringing']=_0x35cd9c[_0x4733('0xd')]||0x0;this['ringInUse']=_0x35cd9c[_0x4733('0xe')];this[_0x4733('0xf')]=_0x35cd9c[_0x4733('0xf')];this[_0x4733('0x10')]=_0x35cd9c[_0x4733('0x10')];this[_0x4733('0x11')]=_0x35cd9c[_0x4733('0x11')]||0x0;this[_0x4733('0x12')]=_0x35cd9c[_0x4733('0x12')]||0x0;this[_0x4733('0x13')]=_0x35cd9c['total']||0x0;this[_0x4733('0x14')]=_0x35cd9c[_0x4733('0x14')];this[_0x4733('0x15')]=_0x35cd9c[_0x4733('0x15')]||0x0;this[_0x4733('0x16')]=_0x35cd9c[_0x4733('0x16')]||0x0;this['unmanaged']=_0x35cd9c[_0x4733('0x17')]||0x0;this['waiting']=_0x35cd9c[_0x4733('0x18')]||0x0;if(_0x35cd9c[_0x4733('0x14')]===_0x4733('0x19')){this[_0x4733('0x1a')]=_0x35cd9c[_0x4733('0x1a')];this[_0x4733('0x1b')]=_0x35cd9c[_0x4733('0x1b')];this[_0x4733('0x1c')]=_0x35cd9c[_0x4733('0x1c')];this[_0x4733('0x1d')]=_0x35cd9c[_0x4733('0x1d')];this['dialOriginateTimeout']=_0x35cd9c['dialOriginateTimeout'];this[_0x4733('0x1e')]=_0x35cd9c[_0x4733('0x1e')];this[_0x4733('0x1f')]=_0x35cd9c[_0x4733('0x1f')];this[_0x4733('0x20')]=_0x35cd9c[_0x4733('0x20')];this[_0x4733('0x21')]=_0x35cd9c[_0x4733('0x21')];this[_0x4733('0x22')]=_0x35cd9c[_0x4733('0x22')];this['outboundBusyCallsDay']=_0x35cd9c[_0x4733('0x23')];this[_0x4733('0x24')]=_0x35cd9c[_0x4733('0x24')];this[_0x4733('0x25')]=_0x35cd9c[_0x4733('0x25')];this[_0x4733('0x26')]=_0x35cd9c[_0x4733('0x26')];this['outboundDropCallsDayTimeout']=_0x35cd9c[_0x4733('0x27')];this[_0x4733('0x28')]=_0x35cd9c[_0x4733('0x28')];this[_0x4733('0x29')]=_0x35cd9c[_0x4733('0x29')];this[_0x4733('0x2a')]=_0x35cd9c[_0x4733('0x2a')];this['outboundReCallsDay']=_0x35cd9c[_0x4733('0x2b')];this['outboundRejectCallsDay']=_0x35cd9c['outboundRejectCallsDay'];this[_0x4733('0x2c')]=_0x35cd9c[_0x4733('0x2c')];this[_0x4733('0x2d')]=_0x35cd9c[_0x4733('0x2d')];this['predictiveIntervalAvgHoldtime']=_0x35cd9c[_0x4733('0x2e')];this[_0x4733('0x2f')]=_0x35cd9c['predictiveIntervalAvgTalktime'];this[_0x4733('0x30')]=_0x35cd9c['predictiveIntervalDroppedCallsCallersExit'];this['predictiveIntervalDroppedCallsTimeout']=_0x35cd9c[_0x4733('0x31')];this[_0x4733('0x32')]=_0x35cd9c[_0x4733('0x32')];this[_0x4733('0x33')]=_0x35cd9c[_0x4733('0x33')];this[_0x4733('0x34')]=_0x35cd9c['predictiveIntervalHitRate'];this['predictiveIntervalMultiplicativeFactor']=_0x35cd9c[_0x4733('0x35')];this[_0x4733('0x36')]=_0x35cd9c['predictiveIntervalPauses'];this[_0x4733('0x37')]=_0x35cd9c[_0x4733('0x37')];this[_0x4733('0x38')]=_0x35cd9c['predictiveIntervalTotalCalls'];this[_0x4733('0x39')]=_0x35cd9c[_0x4733('0x39')];this[_0x4733('0x3a')]=_0x35cd9c[_0x4733('0x3a')];this[_0x4733('0x3b')]=_0x35cd9c['erlangCalls'];this[_0x4733('0x3c')]=_0x35cd9c['erlangCallToSecond'];this[_0x4733('0x3d')]=_0x35cd9c[_0x4733('0x3d')];this[_0x4733('0x3e')]=_0x35cd9c[_0x4733('0x3e')];this[_0x4733('0x3f')]=_0x35cd9c[_0x4733('0x3f')];this[_0x4733('0x40')]=_0x35cd9c[_0x4733('0x40')];}if(_0x35cd9c['Trunk']){this[_0x4733('0x41')]={'id':_0x35cd9c[_0x4733('0x41')]['id'],'name':_0x35cd9c['Trunk'][_0x4733('0x0')],'active':_0x35cd9c[_0x4733('0x41')][_0x4733('0x42')],'callerid':_0x35cd9c['Trunk'][_0x4733('0x43')]};}if(_0x35cd9c['Interval']){this[_0x4733('0x44')]={'id':_0x35cd9c['Interval']['id'],'name':_0x35cd9c['Interval'][_0x4733('0x0')]};}}module[_0x4733('0x45')]=VoiceQueueSummary;
\ No newline at end of file
index e738ace..9f4aa05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44af=['exports','name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x4d6e1c,_0x35bde3){var _0x11e263=function(_0x454cd1){while(--_0x454cd1){_0x4d6e1c['push'](_0x4d6e1c['shift']());}};_0x11e263(++_0x35bde3);}(_0x44af,0xe8));var _0xf44a=function(_0x195c2c,_0x157ee4){_0x195c2c=_0x195c2c-0x0;var _0x35dbee=_0x44af[_0x195c2c];return _0x35dbee;};'use strict';function VtigerAccount(_0x94892f){this['id']=_0x94892f['id']||0x0;this[_0xf44a('0x0')]=_0x94892f[_0xf44a('0x0')]||'';this[_0xf44a('0x1')]=_0x94892f[_0xf44a('0x1')]||'';this[_0xf44a('0x2')]=_0x94892f['accessKey']||'';this[_0xf44a('0x3')]=_0x94892f['remoteUri']||'';this['serverUrl']=_0x94892f[_0xf44a('0x4')]||'';this['Configurations']=_0x94892f[_0xf44a('0x5')]||{};}module[_0xf44a('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0xd62b=['remoteUri','serverUrl','Configurations','exports','name','accessKey'];(function(_0x12d812,_0x496bb7){var _0x3711ab=function(_0x3259da){while(--_0x3259da){_0x12d812['push'](_0x12d812['shift']());}};_0x3711ab(++_0x496bb7);}(_0xd62b,0x8e));var _0xbd62=function(_0x5f1617,_0x46277b){_0x5f1617=_0x5f1617-0x0;var _0x3af5da=_0xd62b[_0x5f1617];return _0x3af5da;};'use strict';function VtigerAccount(_0x554a8b){this['id']=_0x554a8b['id']||0x0;this[_0xbd62('0x0')]=_0x554a8b[_0xbd62('0x0')]||'';this['username']=_0x554a8b['username']||'';this[_0xbd62('0x1')]=_0x554a8b[_0xbd62('0x1')]||'';this[_0xbd62('0x2')]=_0x554a8b[_0xbd62('0x2')]||'';this[_0xbd62('0x3')]=_0x554a8b[_0xbd62('0x3')]||'';this['Configurations']=_0x554a8b[_0xbd62('0x4')]||{};}module[_0xbd62('0x5')]=VtigerAccount;
\ No newline at end of file
index 69ffe90..9f079a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff4=['username','password','token','remoteUri','authType','type','integrationTab','serverUrl','exports','name'];(function(_0x29f994,_0x1555de){var _0x4d9708=function(_0x5046ec){while(--_0x5046ec){_0x29f994['push'](_0x29f994['shift']());}};_0x4d9708(++_0x1555de);}(_0x7ff4,0x1df));var _0x47ff=function(_0x314faa,_0x56ecd7){_0x314faa=_0x314faa-0x0;var _0x530e47=_0x7ff4[_0x314faa];return _0x530e47;};'use strict';function ZendeskAccount(_0xa6e6d0){this['id']=_0xa6e6d0['id']||0x0;this[_0x47ff('0x0')]=_0xa6e6d0[_0x47ff('0x0')]||'';this[_0x47ff('0x1')]=_0xa6e6d0[_0x47ff('0x1')]||'';this[_0x47ff('0x2')]=_0xa6e6d0['password']||'';this[_0x47ff('0x3')]=_0xa6e6d0[_0x47ff('0x3')]||'';this['remoteUri']=_0xa6e6d0[_0x47ff('0x4')]||'';this[_0x47ff('0x5')]=_0xa6e6d0['authType']||'';this[_0x47ff('0x6')]=_0xa6e6d0[_0x47ff('0x6')]||_0x47ff('0x7');this[_0x47ff('0x8')]=_0xa6e6d0['serverUrl']||'';this['Configurations']=_0xa6e6d0['Configurations']||{};}module[_0x47ff('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0xd361=['name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x16db09,_0x5399bd){var _0x114888=function(_0x3865f4){while(--_0x3865f4){_0x16db09['push'](_0x16db09['shift']());}};_0x114888(++_0x5399bd);}(_0xd361,0x1c3));var _0x1d36=function(_0x16c5f1,_0x45a3da){_0x16c5f1=_0x16c5f1-0x0;var _0x210941=_0xd361[_0x16c5f1];return _0x210941;};'use strict';function ZendeskAccount(_0x55788c){this['id']=_0x55788c['id']||0x0;this[_0x1d36('0x0')]=_0x55788c['name']||'';this[_0x1d36('0x1')]=_0x55788c['username']||'';this[_0x1d36('0x2')]=_0x55788c[_0x1d36('0x2')]||'';this[_0x1d36('0x3')]=_0x55788c[_0x1d36('0x3')]||'';this[_0x1d36('0x4')]=_0x55788c['remoteUri']||'';this[_0x1d36('0x5')]=_0x55788c['authType']||'';this[_0x1d36('0x6')]=_0x55788c[_0x1d36('0x6')]||_0x1d36('0x7');this[_0x1d36('0x8')]=_0x55788c['serverUrl']||'';this[_0x1d36('0x9')]=_0x55788c[_0x1d36('0x9')]||{};}module[_0x1d36('0xa')]=ZendeskAccount;
\ No newline at end of file
index 509a3e7..bf6dad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf1=['code','refreshToken','Configurations','description','host','zone','clientSecret','serverUrl'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xfdf1,0x13b));var _0x1fdf=function(_0xed56c3,_0x57354b){_0xed56c3=_0xed56c3-0x0;var _0x4e13b5=_0xfdf1[_0xed56c3];return _0x4e13b5;};'use strict';function ZohoAccount(_0x59b2f7){this['id']=_0x59b2f7['id']||0x0;this['name']=_0x59b2f7['name']||'';this['description']=_0x59b2f7[_0x1fdf('0x0')]||'';this[_0x1fdf('0x1')]=_0x59b2f7[_0x1fdf('0x1')]||'';this[_0x1fdf('0x2')]=_0x59b2f7[_0x1fdf('0x2')]||'';this['clientId']=_0x59b2f7['clientId']||'';this[_0x1fdf('0x3')]=_0x59b2f7['clientSecret']||'';this[_0x1fdf('0x4')]=_0x59b2f7['serverUrl']||'';this[_0x1fdf('0x5')]=_0x59b2f7[_0x1fdf('0x5')]||'';this[_0x1fdf('0x6')]=_0x59b2f7[_0x1fdf('0x6')]||'';this[_0x1fdf('0x7')]=_0x59b2f7[_0x1fdf('0x7')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0xdea2=['zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','name','description','host'];(function(_0x5a9017,_0x4312fc){var _0x596e52=function(_0x35843d){while(--_0x35843d){_0x5a9017['push'](_0x5a9017['shift']());}};_0x596e52(++_0x4312fc);}(_0xdea2,0x15b));var _0x2dea=function(_0x15318c,_0x2e50e4){_0x15318c=_0x15318c-0x0;var _0x10d3ce=_0xdea2[_0x15318c];return _0x10d3ce;};'use strict';function ZohoAccount(_0x5e5393){this['id']=_0x5e5393['id']||0x0;this[_0x2dea('0x0')]=_0x5e5393[_0x2dea('0x0')]||'';this['description']=_0x5e5393[_0x2dea('0x1')]||'';this['host']=_0x5e5393[_0x2dea('0x2')]||'';this[_0x2dea('0x3')]=_0x5e5393[_0x2dea('0x3')]||'';this['clientId']=_0x5e5393[_0x2dea('0x4')]||'';this[_0x2dea('0x5')]=_0x5e5393[_0x2dea('0x5')]||'';this[_0x2dea('0x6')]=_0x5e5393[_0x2dea('0x6')]||'';this[_0x2dea('0x7')]=_0x5e5393[_0x2dea('0x7')]||'';this[_0x2dea('0x8')]=_0x5e5393[_0x2dea('0x8')]||'';this[_0x2dea('0x9')]=_0x5e5393[_0x2dea('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 57feb62..242dd05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','exports','util','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName'];(function(_0xad57ee,_0x2823a6){var _0x3eaea9=function(_0x185650){while(--_0x185650){_0xad57ee['push'](_0xad57ee['shift']());}};_0x3eaea9(++_0x2823a6);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xf2e3[_0x87b0ff];return _0x3bc0b2;};'use strict';var util=require(_0x3f2e('0x0'));var _=require('lodash');var moment=require(_0x3f2e('0x1'));function checkNameSurname(_0x231b2b,_0x3fba4b,_0x30f1bb){var _0x27d28c='';if(!_[_0x3f2e('0x2')](_0x3fba4b)&&_0x3f2e('0x3')===typeof _0x3fba4b){_0x27d28c+=_0x3fba4b;}if(!_[_0x3f2e('0x2')](_0x30f1bb)&&_0x3f2e('0x3')===typeof _0x30f1bb){_0x27d28c+='\x20'+_0x30f1bb;}if(_0x27d28c!==''){return _0x27d28c;}return _0x231b2b;}function Action(_0x5f254a,_0x33a3b7,_0xdd6b3e,_0x3c0864,_0xdf499f){this[_0x3f2e('0x4')]=_0xdd6b3e||undefined;this[_0x3f2e('0x5')]=_0x5f254a['id'];this[_0x3f2e('0x6')]=_0x33a3b7[_0x3f2e('0x7')];this[_0x3f2e('0x8')]=_0x33a3b7[_0x3f2e('0x8')];this[_0x3f2e('0x9')]=_0x3f2e('0x6');this[_0x3f2e('0xa')]=![];this[_0x3f2e('0xb')]=_[_0x3f2e('0x2')](_0x5f254a[_0x3f2e('0xc')])?undefined:_0x5f254a[_0x3f2e('0xc')][_0x3f2e('0x7')];this[_0x3f2e('0xd')]=this['membername']?util[_0x3f2e('0xe')](_0x3f2e('0xf'),this['membername']):_0x3c0864||undefined;this[_0x3f2e('0x10')]=checkNameSurname(_0x5f254a[_0x3f2e('0x11')][_0x3f2e('0x12')],_0x5f254a[_0x3f2e('0x11')][_0x3f2e('0x13')],_0x5f254a['Contact'][_0x3f2e('0x14')]);this[_0x3f2e('0x15')]=_0x5f254a[_0x3f2e('0x15')]||![];this['calleridnum']=_0x5f254a[_0x3f2e('0x12')];this[_0x3f2e('0x16')]=_0x5f254a[_0x3f2e('0x16')];this[_0x3f2e('0x17')]=_0x5f254a[_0x3f2e('0x17')]||0x0;this[_0x3f2e('0x18')]=_0x5f254a[_0x3f2e('0x18')]||0x0;this[_0x3f2e('0x19')]=_0x5f254a[_0x3f2e('0x19')]||0x0;this[_0x3f2e('0x1a')]=(_0x5f254a[_0x3f2e('0x17')]||0x0)+(_0x5f254a['countcongestionretry']||0x0)+(_0x5f254a[_0x3f2e('0x19')]||0x0)+(_0x5f254a[_0x3f2e('0x1b')]||0x0)+(_0x5f254a[_0x3f2e('0x1c')]||0x0)+(_0x5f254a[_0x3f2e('0x1d')]||0x0)+(_0x5f254a[_0x3f2e('0x1e')]||0x0)+(_0x5f254a['countagentrejectretry']||0x0);this['countnosuchnumberretry']=_0x5f254a[_0x3f2e('0x1b')]||0x0;this[_0x3f2e('0x1c')]=_0x5f254a[_0x3f2e('0x1c')]||0x0;this[_0x3f2e('0x1d')]=_0x5f254a[_0x3f2e('0x1d')]||0x0;this[_0x3f2e('0x1e')]=_0x5f254a['countmachineretry']||0x0;this['countagentrejectretry']=_0x5f254a[_0x3f2e('0x1f')]||0x0;this[_0x3f2e('0x20')]=_0x5f254a['callback'];this['callbackuniqueid']=_0x5f254a[_0x3f2e('0x21')];this['callbackat']=_0x5f254a[_0x3f2e('0x22')];this[_0x3f2e('0x23')]=_0x5f254a['recallme'];this['ContactId']=_0x5f254a['ContactId'];this[_0x3f2e('0x24')]=_0x5f254a[_0x3f2e('0x24')];this['UserId']=_[_0x3f2e('0x2')](_0x5f254a['Agent'])?_0x5f254a[_0x3f2e('0x25')]:_0x5f254a['Agent']['id'];this[_0x3f2e('0x26')]=_0x5f254a[_0x3f2e('0x26')];this[_0x3f2e('0x27')]='';this[_0x3f2e('0x28')]='';}Action[_0x3f2e('0x29')]['getCaller']=function(){return util[_0x3f2e('0xe')](_0x3f2e('0x2a'),this['calleridname'],this['number']);};module[_0x3f2e('0x2b')]=Action;
\ No newline at end of file
+var _0x6a55=['countagentrejectretry','countnosuchnumberretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','\x22%s\x22\x20<%s>','number','util','isNil','uniqueid','idContact','queue','type','campaigntype','dialAnswer','membername','Agent','format','SIP/%s','calleridname','Contact','firstName','lastName','active','calleridnum','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry'];(function(_0x36ee10,_0x3e4e4b){var _0x1ae7e8=function(_0x138916){while(--_0x138916){_0x36ee10['push'](_0x36ee10['shift']());}};_0x1ae7e8(++_0x3e4e4b);}(_0x6a55,0xdb));var _0x56a5=function(_0x3bc82d,_0x59187f){_0x3bc82d=_0x3bc82d-0x0;var _0x2cfb3d=_0x6a55[_0x3bc82d];return _0x2cfb3d;};'use strict';var util=require(_0x56a5('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x4ec858,_0x173b37,_0x47b337){var _0x561353='';if(!_[_0x56a5('0x1')](_0x173b37)&&'string'===typeof _0x173b37){_0x561353+=_0x173b37;}if(!_[_0x56a5('0x1')](_0x47b337)&&'string'===typeof _0x47b337){_0x561353+='\x20'+_0x47b337;}if(_0x561353!==''){return _0x561353;}return _0x4ec858;}function Action(_0x28bb2b,_0x380b1b,_0x42d164,_0x293ea1,_0x444c65){this[_0x56a5('0x2')]=_0x42d164||undefined;this[_0x56a5('0x3')]=_0x28bb2b['id'];this[_0x56a5('0x4')]=_0x380b1b['name'];this[_0x56a5('0x5')]=_0x380b1b[_0x56a5('0x5')];this[_0x56a5('0x6')]=_0x56a5('0x4');this[_0x56a5('0x7')]=![];this[_0x56a5('0x8')]=_[_0x56a5('0x1')](_0x28bb2b[_0x56a5('0x9')])?undefined:_0x28bb2b[_0x56a5('0x9')]['name'];this['channelAgent']=this[_0x56a5('0x8')]?util[_0x56a5('0xa')](_0x56a5('0xb'),this[_0x56a5('0x8')]):_0x293ea1||undefined;this[_0x56a5('0xc')]=checkNameSurname(_0x28bb2b[_0x56a5('0xd')]['phone'],_0x28bb2b['Contact'][_0x56a5('0xe')],_0x28bb2b[_0x56a5('0xd')][_0x56a5('0xf')]);this[_0x56a5('0x10')]=_0x28bb2b[_0x56a5('0x10')]||![];this[_0x56a5('0x11')]=_0x28bb2b[_0x56a5('0x12')];this['scheduledat']=_0x28bb2b[_0x56a5('0x13')];this['countbusyretry']=_0x28bb2b[_0x56a5('0x14')]||0x0;this['countcongestionretry']=_0x28bb2b[_0x56a5('0x15')]||0x0;this[_0x56a5('0x16')]=_0x28bb2b[_0x56a5('0x16')]||0x0;this[_0x56a5('0x17')]=(_0x28bb2b[_0x56a5('0x14')]||0x0)+(_0x28bb2b[_0x56a5('0x15')]||0x0)+(_0x28bb2b[_0x56a5('0x16')]||0x0)+(_0x28bb2b['countnosuchnumberretry']||0x0)+(_0x28bb2b[_0x56a5('0x18')]||0x0)+(_0x28bb2b[_0x56a5('0x19')]||0x0)+(_0x28bb2b[_0x56a5('0x1a')]||0x0)+(_0x28bb2b[_0x56a5('0x1b')]||0x0);this['countnosuchnumberretry']=_0x28bb2b[_0x56a5('0x1c')]||0x0;this[_0x56a5('0x18')]=_0x28bb2b[_0x56a5('0x18')]||0x0;this[_0x56a5('0x19')]=_0x28bb2b[_0x56a5('0x19')]||0x0;this['countmachineretry']=_0x28bb2b['countmachineretry']||0x0;this[_0x56a5('0x1b')]=_0x28bb2b[_0x56a5('0x1b')]||0x0;this['callback']=_0x28bb2b[_0x56a5('0x1d')];this[_0x56a5('0x1e')]=_0x28bb2b[_0x56a5('0x1e')];this[_0x56a5('0x1f')]=_0x28bb2b[_0x56a5('0x1f')];this[_0x56a5('0x20')]=_0x28bb2b[_0x56a5('0x20')];this[_0x56a5('0x21')]=_0x28bb2b[_0x56a5('0x21')];this[_0x56a5('0x22')]=_0x28bb2b[_0x56a5('0x22')];this[_0x56a5('0x23')]=_[_0x56a5('0x1')](_0x28bb2b['Agent'])?_0x28bb2b[_0x56a5('0x23')]:_0x28bb2b[_0x56a5('0x9')]['id'];this[_0x56a5('0x24')]=_0x28bb2b[_0x56a5('0x24')];this[_0x56a5('0x25')]='';this['originatecalleridname']='';}Action[_0x56a5('0x26')]['getCaller']=function(){return util[_0x56a5('0xa')](_0x56a5('0x27'),this[_0x56a5('0xc')],this[_0x56a5('0x28')]);};module['exports']=Action;
\ No newline at end of file
index dfefcbe..a55e87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7bd=['Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','\x20Queue','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','Contact\x20is\x20undefined','Queue','isEmpty','[Preview][execCall][success]','Queue:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','status','unmonitored','execRun','unlock','unlockContact','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','Trunk\x20not\x20working\x20correctly','isActive','\x20Not\x20Active','campaign\x20Name:\x20','execCall','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','originatecalleridnum','extractCalleridNumber','merge','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','lookAgent','logLookAgent','clone','responsetime','isFailure','response','custom:agentringnoanswer','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','channelstate','transfer','destuniqueid','variables','filterKey','keys','variable','addVariable','value','error','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','transfererlinkedid','lodash','uuid','md5','../../../config/environment','preview','../../../config/logger','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','redis','defaults','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','syncBlindTransfer','loopCampaigns','type','name','strategy','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','stringify','format','voice:queue:%s','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','emit','voice_queue_presence:remove','sendMessageOneNotActive','message','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','booked','outbound','setMessage','dialPreviewAutoRecallMe','clearZombieChannel','isNil','info','[clearZombieChannels][talking]','queue','originated:\x20','pTalking:\x20','pick','contactId','UserId','VoiceQueueId','ListId','Action','channel','catch','updateOriginated','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','[action]','size','recallMe','getContactRecallMe','agentReadyId','then','length','getDiff','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','dialRecallInQueue','rescheduleContactInQueue','logCustomer','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','nosuchnumber','createCustomerHistory','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','dialNoSuchNumberMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','scheduledAt','unlockAgent','activeContact','linkedid','actioncountonusuch','incrementPreviewCounters','idContact','swapAdditionalPhones','ANSWER','answertime','uniqueid','buildObj','connect','custom:agentConnectPreview','custom:agentcomplete','complete','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','talktime','[syncHangup][talking][decrement]','BUSY','outboundBusyCallsDay','countbusyretry','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','rescheduleContact','NOANSWER','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','CONGESTION','countcongestionretry'];(function(_0x13f8d2,_0x2e3f95){var _0x4483dd=function(_0x54317f){while(--_0x54317f){_0x13f8d2['push'](_0x13f8d2['shift']());}};_0x4483dd(++_0x2e3f95);}(_0xc7bd,0x86));var _0xdc7b=function(_0x4d8742,_0xd8d845){_0x4d8742=_0x4d8742-0x0;var _0x59701d=_0xc7bd[_0x4d8742];return _0x59701d;};'use strict';var util=require('util');var _=require(_0xdc7b('0x0'));var uuid=require(_0xdc7b('0x1'));var moment=require('moment');var md5=require(_0xdc7b('0x2'));var Redis=require('ioredis');var config=require(_0xdc7b('0x3'));var logger=require('../../../config/logger')(_0xdc7b('0x4'));var loggerAction=require(_0xdc7b('0x5'))(_0xdc7b('0x6'));var ami=require(_0xdc7b('0x7'));var rpcDb=require(_0xdc7b('0x8'));var cmHopperAdditionalPhone=require(_0xdc7b('0x9'));var Action=require(_0xdc7b('0xa'));var ut=require('./util/util');config[_0xdc7b('0xb')]=_[_0xdc7b('0xc')](config[_0xdc7b('0xb')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdc7b('0xb')]));var Sequence=function(){};Sequence[_0xdc7b('0xd')][_0xdc7b('0xe')]=function(_0x295800){this[_0xdc7b('0xf')]=this[_0xdc7b('0xf')]?this['tail'][_0xdc7b('0x10')](_0x295800):_0x295800();};function Preview(_0x359a53){this[_0xdc7b('0x11')]=new Sequence();this[_0xdc7b('0x12')]=_0x359a53[_0xdc7b('0x13')];this[_0xdc7b('0x14')]=_0x359a53['trunks'];this[_0xdc7b('0x15')]={};this[_0xdc7b('0x16')]=_0x359a53['agents'];this[_0xdc7b('0x17')]=0x0;ami['on']('originateresponse',this[_0xdc7b('0x18')][_0xdc7b('0x19')](this));ami['on'](_0xdc7b('0x1a'),this[_0xdc7b('0x1b')]['bind'](this));ami['on'](_0xdc7b('0x1c'),this[_0xdc7b('0x1d')]['bind'](this));ami['on'](_0xdc7b('0x1e'),this[_0xdc7b('0x1f')][_0xdc7b('0x19')](this));ami['on'](_0xdc7b('0x20'),this[_0xdc7b('0x21')][_0xdc7b('0x19')](this));ami['on'](_0xdc7b('0x22'),this[_0xdc7b('0x23')]['bind'](this));ami['on'](_0xdc7b('0x24'),this['syncAttendedTransfer'][_0xdc7b('0x19')](this));ami['on']('blindtransfer',this[_0xdc7b('0x25')][_0xdc7b('0x19')](this));this[_0xdc7b('0x26')](this[_0xdc7b('0x12')]);}function emit(_0x1f516d,_0x4c39db,_0x570d3b){io['to'](_0x1f516d)['emit'](_0x4c39db,_0x570d3b);}function emitCampaignPreview(_0x3e6972){if(_0x3e6972[_0xdc7b('0x27')]==='outbound'){var _0x2665cb={'id':_0x3e6972['id'],'name':_0x3e6972[_0xdc7b('0x28')],'strategy':_0x3e6972[_0xdc7b('0x29')],'answered':_0x3e6972['answered'],'available':_0x3e6972[_0xdc7b('0x2a')],'loggedIn':_0x3e6972['loggedIn'],'pTalking':_0x3e6972[_0xdc7b('0x2b')],'sumBillable':_0x3e6972[_0xdc7b('0x2c')],'sumDuration':_0x3e6972[_0xdc7b('0x2d')],'sumHoldTime':_0x3e6972[_0xdc7b('0x2e')]||0x0,'talking':_0x3e6972[_0xdc7b('0x2f')],'total':_0x3e6972[_0xdc7b('0x30')],'type':_0x3e6972[_0xdc7b('0x27')],'unmanaged':_0x3e6972[_0xdc7b('0x31')],'abandoned':_0x3e6972[_0xdc7b('0x32')],'waiting':_0x3e6972['waiting'],'loggedInDb':_0x3e6972[_0xdc7b('0x33')],'dialActive':_0x3e6972[_0xdc7b('0x34')],'dialMethod':_0x3e6972[_0xdc7b('0x35')],'dialOriginateCallerIdName':_0x3e6972[_0xdc7b('0x36')],'dialOriginateCallerIdNumber':_0x3e6972['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x3e6972[_0xdc7b('0x37')],'dialPrefix':_0x3e6972['dialPrefix'],'outboundAnswerAgiCallsDay':_0x3e6972[_0xdc7b('0x38')],'outboundAnswerCallsDay':_0x3e6972[_0xdc7b('0x39')],'outboundBlacklistCallsDay':_0x3e6972[_0xdc7b('0x3a')],'outboundBusyCallsDay':_0x3e6972['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x3e6972[_0xdc7b('0x3b')],'outboundDropCallsDayACS':_0x3e6972[_0xdc7b('0x3c')],'outboundDropCallsDayCallersExit':_0x3e6972[_0xdc7b('0x3d')],'outboundDropCallsDayTimeout':_0x3e6972[_0xdc7b('0x3e')],'outboundNoAnswerCallsDay':_0x3e6972[_0xdc7b('0x3f')],'outboundNoSuchCallsDay':_0x3e6972['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x3e6972[_0xdc7b('0x40')],'outboundReCallsDay':_0x3e6972[_0xdc7b('0x41')],'outboundRejectCallsDay':_0x3e6972[_0xdc7b('0x42')],'outboundUnknownCallsDay':_0x3e6972[_0xdc7b('0x43')],'outboundAbandonedCallsDay':_0x3e6972['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x3e6972[_0xdc7b('0x44')],'predictiveIntervalAvgHoldtime':_0x3e6972[_0xdc7b('0x45')],'predictiveIntervalAvgTalktime':_0x3e6972[_0xdc7b('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x3e6972[_0xdc7b('0x47')],'predictiveIntervalDroppedCallsTimeout':_0x3e6972['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x3e6972[_0xdc7b('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0x3e6972[_0xdc7b('0x49')],'predictiveIntervalHitRate':_0x3e6972[_0xdc7b('0x4a')],'predictiveIntervalMultiplicativeFactor':_0x3e6972[_0xdc7b('0x4b')],'predictiveIntervalPauses':_0x3e6972[_0xdc7b('0x4c')],'predictiveIntervalAvailable':_0x3e6972['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x3e6972[_0xdc7b('0x4d')],'message':_0x3e6972['message'],'originated':_0x3e6972[_0xdc7b('0x4e')],'erlangCalls':_0x3e6972[_0xdc7b('0x4f')],'erlangCallToSecond':_0x3e6972[_0xdc7b('0x50')],'erlangAbandonmentRate':_0x3e6972['erlangAbandonmentRate'],'erlangBusyFactor':_0x3e6972[_0xdc7b('0x51')],'startPredictive':_0x3e6972[_0xdc7b('0x52')],'startProgressive':_0x3e6972[_0xdc7b('0x53')]};if(_0x3e6972['Trunk']){_0x2665cb[_0xdc7b('0x54')]={'id':_0x3e6972[_0xdc7b('0x54')]['id'],'name':_0x3e6972['Trunk'][_0xdc7b('0x28')],'active':_0x3e6972['Trunk'][_0xdc7b('0x55')],'callerid':_0x3e6972[_0xdc7b('0x54')]['callerid']};}if(_0x3e6972[_0xdc7b('0x56')]){_0x2665cb[_0xdc7b('0x56')]={'id':_0x3e6972[_0xdc7b('0x56')]['id'],'name':_0x3e6972[_0xdc7b('0x56')][_0xdc7b('0x28')]};}var _0x1fc5f6=md5(JSON[_0xdc7b('0x57')](_0x2665cb));if(_0x3e6972[_0xdc7b('0x2')]!==_0x1fc5f6){_0x3e6972['md5']=_0x1fc5f6;emit(util[_0xdc7b('0x58')](_0xdc7b('0x59'),_0x2665cb[_0xdc7b('0x28')]),'voice_queue:save',_0x2665cb);}}}function emitVoiceQueueChannelRemove(_0x5dc9d5){logger['info'](_0xdc7b('0x5a'),JSON[_0xdc7b('0x57')](_0x5dc9d5));emit(util[_0xdc7b('0x58')](_0xdc7b('0x59'),_0x5dc9d5[_0xdc7b('0x28')]),_0xdc7b('0x5b'),_0x5dc9d5);io[_0xdc7b('0x5c')](_0xdc7b('0x5d'),_0x5dc9d5);}function notSendMessagesQueue(_0xa15419){if(_0xa15419[_0xdc7b('0x5e')]){if(_0xa15419['originated']===0x0&&_0xa15419[_0xdc7b('0x2b')]===0x0){_0xa15419[_0xdc7b('0x5e')]=![];_0xa15419['available']=0x0;_0xa15419['paused']=0x0;_0xa15419[_0xdc7b('0x5f')]=_0xdc7b('0x60');ut[_0xdc7b('0x61')](_0xdc7b('0x62'),_0xa15419[_0xdc7b('0x28')]+_0xdc7b('0x63'));}else{_0xa15419[_0xdc7b('0x5f')]=_0xdc7b('0x64');ut[_0xdc7b('0x61')](_0xdc7b('0x62'),_0xa15419['name']+_0xdc7b('0x65'));}emitCampaignPreview(_0xa15419);}}Preview[_0xdc7b('0xd')][_0xdc7b('0x26')]=function(){var _0x517246=this;setInterval(function(){_0x517246[_0xdc7b('0x66')]();},0x7cf);};Preview[_0xdc7b('0xd')][_0xdc7b('0x66')]=function(){var _0x155bf4=this[_0xdc7b('0x12')];this[_0xdc7b('0x17')]+=0x1;for(var _0xf2c27a in _0x155bf4){if(_0x155bf4[_0xdc7b('0x67')](_0xf2c27a)&&(_0x155bf4[_0xf2c27a][_0xdc7b('0x35')]===_0xdc7b('0x4')||_0x155bf4[_0xf2c27a]['dialMethod']===_0xdc7b('0x68'))&&_0x155bf4[_0xf2c27a][_0xdc7b('0x27')]===_0xdc7b('0x69')){if(this[_0xdc7b('0x17')]>0x7){this[_0xdc7b('0x17')]=0x0;this['clearZombieChannels']();}}if(_0x155bf4[_0xdc7b('0x67')](_0xf2c27a)&&_0x155bf4[_0xf2c27a][_0xdc7b('0x35')]===_0xdc7b('0x4')&&_0x155bf4[_0xf2c27a]['type']===_0xdc7b('0x69')){if(_0x155bf4[_0xf2c27a][_0xdc7b('0x34')]){this[_0xdc7b('0x6a')](_0x155bf4[_0xf2c27a]);if(_0x155bf4[_0xf2c27a][_0xdc7b('0x6b')])this['recallMe'](_0x155bf4[_0xf2c27a]);}else{notSendMessagesQueue(_0x155bf4[_0xf2c27a]);}}}};Preview['prototype'][_0xdc7b('0x6c')]=function(_0x4ea569){var _0x51bb75=this;this[_0xdc7b('0x11')][_0xdc7b('0xe')](function(){if(!_[_0xdc7b('0x6d')](_0x51bb75[_0xdc7b('0x15')][_0x4ea569])){loggerAction[_0xdc7b('0x6e')](_0xdc7b('0x6f'),_0x4ea569,'Queue',_0x51bb75['actions'][_0x4ea569][_0xdc7b('0x70')],_0xdc7b('0x71'),JSON[_0xdc7b('0x57')](_0x51bb75[_0xdc7b('0x12')][_0x51bb75[_0xdc7b('0x15')][_0x4ea569][_0xdc7b('0x70')]][_0xdc7b('0x4e')]),_0xdc7b('0x72'),JSON[_0xdc7b('0x57')](_0x51bb75[_0xdc7b('0x12')][_0x51bb75[_0xdc7b('0x15')][_0x4ea569]['queue']][_0xdc7b('0x2b')]),JSON[_0xdc7b('0x57')](_0x51bb75['actions'][_0x4ea569]['dialAnswer']),JSON[_0xdc7b('0x57')](_[_0xdc7b('0x73')](_0x51bb75[_0xdc7b('0x15')][_0x4ea569],[_0xdc7b('0x74'),_0xdc7b('0x75'),_0xdc7b('0x76'),_0xdc7b('0x77')])));return ami[_0xdc7b('0x78')]({'action':'status','channel':_0x51bb75['actions'][_0x4ea569][_0xdc7b('0x79')]})[_0xdc7b('0x7a')](function(_0x1e7e2c){if(_0x1e7e2c['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x51bb75[_0xdc7b('0x15')][_0x4ea569]){ut[_0xdc7b('0x7b')](_0x51bb75['campaignsPreview'][_0x51bb75[_0xdc7b('0x15')][_0x4ea569][_0xdc7b('0x70')]],'[clearZombieChannel]');if(_0x51bb75[_0xdc7b('0x15')][_0x4ea569][_0xdc7b('0x7c')]===!![]){ut[_0xdc7b('0x7d')](_0x51bb75[_0xdc7b('0x12')][_0x51bb75['actions'][_0x4ea569][_0xdc7b('0x70')]],_0xdc7b('0x7e'));ut[_0xdc7b('0x7f')](_0xdc7b('0x80')+_0x4ea569,_0x51bb75[_0xdc7b('0x15')][_0x4ea569][_0xdc7b('0x70')]);}ut[_0xdc7b('0x7f')](_0xdc7b('0x81')+_0x4ea569,_0x51bb75['actions'][_0x4ea569][_0xdc7b('0x70')]);delete _0x51bb75[_0xdc7b('0x15')][_0x4ea569];}},0x2328);}});}});};Preview[_0xdc7b('0xd')][_0xdc7b('0x82')]=function(){var _0x38d694=this;loggerAction['info'](_0xdc7b('0x83'),_[_0xdc7b('0x84')](this[_0xdc7b('0x15')]));for(var _0x298198 in this[_0xdc7b('0x15')]){if(_0x38d694[_0xdc7b('0x15')][_0xdc7b('0x67')](_0x298198)){_0x38d694[_0xdc7b('0x6c')](_0x298198);}}};Preview['prototype'][_0xdc7b('0x85')]=function(_0x55b859){var _0x3a0e46=this;rpcDb[_0xdc7b('0x86')](_0x55b859['id'],ut[_0xdc7b('0x87')](this[_0xdc7b('0x16')]))[_0xdc7b('0x88')](function(_0x34e7fe){if(!_[_0xdc7b('0x6d')](_0x34e7fe)){for(var _0x44e093=0x0;_0x44e093<_0x34e7fe[_0xdc7b('0x89')];_0x44e093+=0x1){if(ut[_0xdc7b('0x8a')](_0x34e7fe[_0x44e093]['scheduledat'])<_0x55b859[_0xdc7b('0x8b')]*0x3c){if(_0x34e7fe[_0x44e093]['Agent']&&!_0x34e7fe[_0x44e093][_0xdc7b('0x8c')][_0xdc7b('0x8d')]){_0x3a0e46['run'](_0x34e7fe[_0x44e093]['id'])[_0xdc7b('0x88')](ut[_0xdc7b('0x8e')](_0xdc7b('0x8f')))[_0xdc7b('0x7a')](ut[_0xdc7b('0x8e')](_0xdc7b('0x8f')));}else{rpcDb[_0xdc7b('0x90')](_0x34e7fe[_0x44e093]['id']);}}else{var _0x3b7537=new Action(_0x34e7fe[_0x44e093],_0x55b859);_0x3b7537[_0xdc7b('0x91')]=moment()[_0xdc7b('0x58')](_0xdc7b('0x92'));_0x55b859[_0xdc7b('0x41')]+=0x1;ut['logCustomer'](_0x3b7537,0x17,'RecallInQueue');if(_0x55b859[_0xdc7b('0x93')]){rpcDb[_0xdc7b('0x94')](ut['createBody'](_0x34e7fe[_0x44e093]));rpcDb['createCustomerHistory'](_0x3b7537,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xdc7b('0x95')](_0x3b7537,0x16,_0xdc7b('0x96'));rpcDb['createCustomerHistory'](_0x3b7537,_0xdc7b('0x97'));rpcDb[_0xdc7b('0x98')](_0x3b7537,_0xdc7b('0x97'));}}}}})[_0xdc7b('0x7a')](ut[_0xdc7b('0x8e')](_0xdc7b('0x99')));};Preview[_0xdc7b('0xd')][_0xdc7b('0x6a')]=function(_0x35680f){_0x35680f[_0xdc7b('0x5e')]=!![];if(ut[_0xdc7b('0x9a')](_0x35680f['loggedIn'])){_0x35680f['message']=_0xdc7b('0x9b');}else if(!ut['isActive'](_0x35680f[_0xdc7b('0x34')])){_0x35680f[_0xdc7b('0x5f')]='NOT_ACTIVE';}else if(!this[_0xdc7b('0x9c')](_0x35680f['Trunk'])){if(!this[_0xdc7b('0x9c')](_0x35680f[_0xdc7b('0x9d')])){_0x35680f['message']=_0xdc7b('0x9e');}else{_0x35680f[_0xdc7b('0x5f')]=_0xdc7b('0x9f');}}else{_0x35680f[_0xdc7b('0x5f')]=_0xdc7b('0x9f');}emitCampaignPreview(_0x35680f);};Preview[_0xdc7b('0xd')][_0xdc7b('0xa0')]=function(_0x501121,_0x54ea78,_0x29262f){var _0x555b23=this;var _0xa8ba36=this[_0xdc7b('0x15')][_0x54ea78];var _0x4933ad=this[_0xdc7b('0x12')][_0xa8ba36[_0xdc7b('0x70')]];var _0x4e7590;var _0x346b8c=![];var _0x584a77=0x2;var _0x483bbf=0x3;if(_0x4933ad){switch(_0x29262f){case'1':_0x4933ad[_0xdc7b('0xa1')]+=0x1;_0xa8ba36[_0xdc7b('0xa2')]+=0x1;_0xa8ba36[_0xdc7b('0xa3')]=ut[_0xdc7b('0xa4')](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0x0,'NoSuchNumber');ami[_0xdc7b('0x5c')]('custom:agentnosuchnumber',ut['buildObj'](_0xa8ba36,_0xdc7b('0xa5')));rpcDb[_0xdc7b('0xa6')](_0xa8ba36,_0xdc7b('0xa7'));_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'0',_0x4933ad)[_0xdc7b('0x88')](function(_0x3614d1){_0x346b8c=_0x3614d1[_0xdc7b('0xa9')]==0x1;_0x584a77=_0x4933ad[_0xdc7b('0xaa')];_0x483bbf=_0x4933ad[_0xdc7b('0xab')];if(!_0x346b8c){if(ut[_0xdc7b('0xa4')](_0xa8ba36)>=_0x4933ad[_0xdc7b('0xac')]){_0x4e7590=ut[_0xdc7b('0xad')](_0xa8ba36,0xf,_0xdc7b('0xae'));rpcDb['createCustomerFinal'](_0x4e7590,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0xa8ba36[_0xdc7b('0xa2')]>=_0x4933ad[_0xdc7b('0xaf')]){rpcDb['createCustomerFinal'](_0xa8ba36,_0xdc7b('0xb0'));}else{rpcDb['rescheduleContact'](ut[_0xdc7b('0xb1')](_0xa8ba36,_0xdc7b('0xa2'),_0x4933ad[_0xdc7b('0xaa')]),_0xa8ba36[_0xdc7b('0xb2')],_0xa8ba36[_0xdc7b('0xb3')]);}}delete this[_0xdc7b('0x15')][_0x501121[_0xdc7b('0xb4')]];}else{_0xa8ba36[_0xdc7b('0xa2')]++;logger[_0xdc7b('0x6e')](_0xdc7b('0xb5'),_0xa8ba36['countnosuchnumberretry']);logger[_0xdc7b('0x6e')]('id',_0xa8ba36['idContact']);_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36[_0xdc7b('0xb7')],'field':{'countnosuchnumberretry':_0xa8ba36[_0xdc7b('0xa2')]}})[_0xdc7b('0x88')](function(){_0x555b23[_0xdc7b('0xb8')](_0xa8ba36,_0x584a77,_0x483bbf)['then'](function(){});});}});break;case _0xdc7b('0xb9'):var _0x5b9c90=moment()[_0xdc7b('0x58')](_0xdc7b('0x92'));_0xa8ba36['responsetime']=_0x5b9c90;_0xa8ba36[_0xdc7b('0xba')]=_0x5b9c90;_0xa8ba36[_0xdc7b('0x7c')]=!![];_0x4933ad['pTalking']+=0x1;logger[_0xdc7b('0x6e')]('[syncHangup][talking][increment]',_0xa8ba36[_0xdc7b('0xbb')],'\x20Queue',_0x4933ad[_0xdc7b('0x28')],_0xdc7b('0x72'),_0x4933ad[_0xdc7b('0x2b')]);ami[_0xdc7b('0x5c')]('custom:agentconnect',ut[_0xdc7b('0xbc')](_0xa8ba36,_0xdc7b('0xbd'),this[_0xdc7b('0x12')][_0xa8ba36[_0xdc7b('0x70')]]));if(_0x4933ad['acw']){ami[_0xdc7b('0x5c')](_0xdc7b('0xbe'),ut['buildAcw'](_0xa8ba36));}break;case'16':ami[_0xdc7b('0x5c')](_0xdc7b('0xbf'),ut['buildObj'](_0xa8ba36,_0xdc7b('0xc0'),this[_0xdc7b('0x12')][_0xa8ba36[_0xdc7b('0x70')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0xa8ba36,_0xdc7b('0xc0')));_0x4933ad['outboundAnswerCallsDay']+=0x1;_0x4933ad[_0xdc7b('0x30')]+=0x1;_0x4933ad['answered']+=0x1;ut['decrementTalkink'](_0x4933ad,_0xdc7b('0xc1'));_0xa8ba36['countglobal']=ut['totalGlobal'](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0x4,'Answer');rpcDb[_0xdc7b('0xa6')](_0xa8ba36,_0xdc7b('0xc2'));rpcDb[_0xdc7b('0x98')](_0xa8ba36,_0xdc7b('0xc3'));rpcDb['crateCustomerReportQueue'](_0xa8ba36);_0x4933ad[_0xdc7b('0x2d')]+=_0xa8ba36[_0xdc7b('0xc4')];_0x4933ad[_0xdc7b('0x2c')]+=_0xa8ba36[_0xdc7b('0xc4')];logger['info'](_0xdc7b('0xc5'),_0xa8ba36['uniqueid'],'\x20Queue',_0x4933ad['name'],_0xdc7b('0x72'),_0x4933ad[_0xdc7b('0x2b')]);delete this[_0xdc7b('0x15')][_0x501121['linkedid']];break;case _0xdc7b('0xc6'):_0x4933ad[_0xdc7b('0xc7')]+=0x1;_0xa8ba36[_0xdc7b('0xc8')]+=0x1;_0xa8ba36['countglobal']=ut[_0xdc7b('0xa4')](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0x5,'Busy');_0x584a77=_0x4933ad[_0xdc7b('0xc9')];_0x483bbf=_0x4933ad['callAdditionalPhoneAfterMin'];ami[_0xdc7b('0x5c')](_0xdc7b('0xca'),ut['buildObj'](_0xa8ba36,_0xdc7b('0xcb')));rpcDb[_0xdc7b('0xa6')](_0xa8ba36,_0xdc7b('0xcc'));_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'5',_0x4933ad)[_0xdc7b('0x88')](function(_0x1943a8){_0x346b8c=_0x1943a8[_0xdc7b('0xa9')]==0x1;if(!_0x346b8c){if(ut[_0xdc7b('0xa4')](_0xa8ba36)>=_0x4933ad[_0xdc7b('0xac')]){_0x4e7590=ut['cloneAction'](_0xa8ba36,0xf,'Global');rpcDb[_0xdc7b('0x98')](_0x4e7590,_0xdc7b('0xcd'));}else{if(_0xa8ba36[_0xdc7b('0xc8')]>=_0x4933ad['dialBusyMaxRetry']){rpcDb[_0xdc7b('0x98')](_0xa8ba36,_0xdc7b('0xcc'));}else{rpcDb[_0xdc7b('0xce')](ut[_0xdc7b('0xb1')](_0xa8ba36,_0xdc7b('0xc8'),_0x4933ad[_0xdc7b('0xc9')]),_0xa8ba36[_0xdc7b('0xb2')],_0xa8ba36[_0xdc7b('0xb3')]);}}}else{_0xa8ba36[_0xdc7b('0xc8')]++;_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36['idContact'],'field':{'countbusyretry':_0xa8ba36['countbusyretry']}})[_0xdc7b('0x88')](function(){_0x555b23[_0xdc7b('0xb8')](_0xa8ba36,_0x584a77,_0x483bbf)[_0xdc7b('0x88')](function(){});});}});break;case _0xdc7b('0xcf'):_0x4933ad[_0xdc7b('0x3f')]+=0x1;_0xa8ba36[_0xdc7b('0xd0')]+=0x1;_0xa8ba36[_0xdc7b('0xa3')]=ut[_0xdc7b('0xa4')](_0xa8ba36);ut['logCustomer'](_0xa8ba36,0x3,_0xdc7b('0xd1'));_0x584a77=_0x4933ad[_0xdc7b('0xd2')];_0x483bbf=_0x4933ad[_0xdc7b('0xab')];var _0x1a1aae=ut[_0xdc7b('0xd3')](_0xa8ba36,_0x4933ad);ami[_0xdc7b('0x5c')]('custom:agentnoanswer',_0x1a1aae);rpcDb[_0xdc7b('0xa6')](_0xa8ba36,_0xdc7b('0xd4'));_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'3',_0x4933ad)['then'](function(_0x43a3d5){_0x346b8c=_0x43a3d5[_0xdc7b('0xa9')]==0x1;if(!_0x346b8c){if(ut['totalGlobal'](_0xa8ba36)>=_0x4933ad[_0xdc7b('0xac')]){_0x4e7590=ut['cloneAction'](_0xa8ba36,0xf,'Global');rpcDb[_0xdc7b('0x98')](_0x4e7590,_0xdc7b('0xd5'));}else{if(_0xa8ba36[_0xdc7b('0xd0')]>=_0x4933ad[_0xdc7b('0xd6')]){rpcDb[_0xdc7b('0x98')](_0xa8ba36,_0xdc7b('0xd4'));}else{rpcDb[_0xdc7b('0xce')](ut[_0xdc7b('0xb1')](_0xa8ba36,_0xdc7b('0xd0'),_0x4933ad[_0xdc7b('0xd2')]),_0xa8ba36[_0xdc7b('0xb2')],_0xa8ba36[_0xdc7b('0xb3')]);}}}else{_0xa8ba36[_0xdc7b('0xd0')]++;_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36[_0xdc7b('0xb7')],'field':{'countnoanswerretry':_0xa8ba36['countnoanswerretry']}})[_0xdc7b('0x88')](function(){_0x555b23[_0xdc7b('0xb8')](_0xa8ba36,_0x584a77,_0x483bbf)['then'](function(){});});}});break;case _0xdc7b('0xd7'):_0x4933ad[_0xdc7b('0x3b')]+=0x1;_0xa8ba36[_0xdc7b('0xd8')]+=0x1;_0xa8ba36[_0xdc7b('0xa3')]=ut[_0xdc7b('0xa4')](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0x8,_0xdc7b('0xd9'));_0x584a77=_0x4933ad[_0xdc7b('0xda')];_0x483bbf=_0x4933ad[_0xdc7b('0xab')];ami[_0xdc7b('0x5c')](_0xdc7b('0xdb'),ut[_0xdc7b('0xbc')](_0xa8ba36,_0xdc7b('0xdc')));rpcDb['createCustomerHistory'](_0xa8ba36,'[callProgressDetectingCustomer][logCongestion]');_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'8',_0x4933ad)[_0xdc7b('0x88')](function(_0x10d85c){_0x346b8c=_0x10d85c[_0xdc7b('0xa9')]==0x1;if(!_0x346b8c){if(ut[_0xdc7b('0xa4')](_0xa8ba36)>=_0x4933ad[_0xdc7b('0xac')]){_0x4e7590=ut['cloneAction'](_0xa8ba36,0xf,_0xdc7b('0xae'));rpcDb[_0xdc7b('0x98')](_0x4e7590,_0xdc7b('0xdd'));}else{if(_0xa8ba36[_0xdc7b('0xd8')]>=_0x4933ad[_0xdc7b('0xde')]){rpcDb[_0xdc7b('0x98')](_0xa8ba36,_0xdc7b('0xdf'));}else{rpcDb['rescheduleContact'](ut[_0xdc7b('0xb1')](_0xa8ba36,'countcongestionretry',_0x4933ad[_0xdc7b('0xc9')]),_0xa8ba36['unlockAgent'],_0xa8ba36['activeContact']);}}}else{_0xa8ba36[_0xdc7b('0xd8')]++;_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36[_0xdc7b('0xb7')],'field':{'countcongestionretry':_0xa8ba36[_0xdc7b('0xd8')]}})[_0xdc7b('0x88')](function(){_0x555b23[_0xdc7b('0xb8')](_0xa8ba36,_0x584a77,_0x483bbf)['then'](function(){});});}});break;case'CANCEL':_0x4933ad['outboundRejectCallsDay']+=0x1;_0xa8ba36[_0xdc7b('0xe0')]+=0x1;_0xa8ba36[_0xdc7b('0xa3')]=ut[_0xdc7b('0xa4')](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0x14,_0xdc7b('0xe1'));_0x584a77=_0x4933ad[_0xdc7b('0xe2')];_0x483bbf=_0x4933ad[_0xdc7b('0xab')];ami[_0xdc7b('0x5c')](_0xdc7b('0xe3'),ut[_0xdc7b('0xbc')](_0xa8ba36,'agentreject'));rpcDb['createCustomerHistory'](_0xa8ba36,_0xdc7b('0xe4'));_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'20',_0x4933ad)[_0xdc7b('0x88')](function(_0x2ace7d){_0x346b8c=_0x2ace7d[_0xdc7b('0xa9')]==0x1;if(!_0x346b8c){if(ut['totalGlobal'](_0xa8ba36)>=_0x4933ad['dialGlobalMaxRetry']){_0x4e7590=ut[_0xdc7b('0xad')](_0xa8ba36,0x14,_0xdc7b('0xe1'));rpcDb[_0xdc7b('0x98')](_0x4e7590,_0xdc7b('0xe5'));}else{if(_0xa8ba36[_0xdc7b('0xe0')]>=_0x4933ad['dialAgentRejectMaxRetry']){rpcDb[_0xdc7b('0x98')](_0xa8ba36,_0xdc7b('0xe5'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0xa8ba36,_0xdc7b('0xe0'),_0x4933ad[_0xdc7b('0xe2')]),_0xa8ba36['unlockAgent'],_0xa8ba36[_0xdc7b('0xb3')]);}}}else{_0xa8ba36[_0xdc7b('0xd0')]++;_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36[_0xdc7b('0xb7')],'field':{'countnoanswerretry':_0xa8ba36[_0xdc7b('0xd0')]}})[_0xdc7b('0x88')](function(){_0x555b23['swapAdditionalPhones'](_0xa8ba36,_0x584a77,_0x483bbf)['then'](function(){});});}});break;case _0xdc7b('0xe6'):_0x4933ad[_0xdc7b('0xe7')]+=0x1;_0xa8ba36[_0xdc7b('0xe8')]+=0x1;_0xa8ba36['countglobal']=ut[_0xdc7b('0xa4')](_0xa8ba36);ut['logCustomer'](_0xa8ba36,0xb,'Abandoned');rpcDb[_0xdc7b('0xa6')](_0xa8ba36,_0xdc7b('0xe9'));_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'11',_0x4933ad)[_0xdc7b('0x88')](function(_0x329389){_0x346b8c=_0x329389[_0xdc7b('0xa9')]==0x1;if(!_0x346b8c){if(ut[_0xdc7b('0xa4')](_0xa8ba36)>=_0x4933ad['dialGlobalMaxRetry']){_0x4e7590=ut[_0xdc7b('0xad')](_0xa8ba36,0xf,'Global');rpcDb[_0xdc7b('0x98')](_0x4e7590,_0xdc7b('0xe9'));}else{if(_0xa8ba36[_0xdc7b('0xea')]>=_0x4933ad[_0xdc7b('0xeb')]){rpcDb[_0xdc7b('0x98')](_0xa8ba36,_0xdc7b('0xe9'));}else{rpcDb[_0xdc7b('0xce')](ut['scheduledAt'](_0xa8ba36,'countabandonedretry',_0x4933ad[_0xdc7b('0xec')]),_0xa8ba36['unlockAgent'],_0xa8ba36[_0xdc7b('0xb3')]);}}}else{_0xa8ba36[_0xdc7b('0xd0')]++;_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36[_0xdc7b('0xb7')],'field':{'countnoanswerretry':_0xa8ba36[_0xdc7b('0xd0')]}})['then'](function(){_0x555b23[_0xdc7b('0xb8')](_0xa8ba36,_0x584a77,_0x483bbf)[_0xdc7b('0x88')](function(){});});}});break;case'18':_0x4933ad['outboundUnknownCallsDay']+=0x1;_0xa8ba36[_0xdc7b('0xed')]+=0x1;_0xa8ba36[_0xdc7b('0xa3')]=ut['totalGlobal'](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0x12,_0x501121[_0xdc7b('0xee')]||_0x501121[_0xdc7b('0xef')]);ami['emit'](_0xdc7b('0xf0'),ut[_0xdc7b('0xbc')](_0xa8ba36,_0xdc7b('0xf1')));rpcDb[_0xdc7b('0xa6')](_0xa8ba36,'[callProgressDetectingCustomer][hangupInAMD]');_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'18',_0x4933ad)[_0xdc7b('0x88')](function(_0x4fd001){_0x346b8c=_0x4fd001[_0xdc7b('0xa9')]==0x1;if(!_0x346b8c){if(ut[_0xdc7b('0xa4')](_0xa8ba36)>=_0x4933ad[_0xdc7b('0xac')]){_0x4e7590=ut[_0xdc7b('0xad')](_0xa8ba36,0x12,'Global');rpcDb['createCustomerFinal'](_0x4e7590,_0xdc7b('0xf2'));}else{rpcDb[_0xdc7b('0x98')](_0xa8ba36,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0xa8ba36[_0xdc7b('0xd0')]++;_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36[_0xdc7b('0xb7')],'field':{'countnoanswerretry':_0xa8ba36[_0xdc7b('0xd0')]}})[_0xdc7b('0x88')](function(){_0x555b23[_0xdc7b('0xb8')](_0xa8ba36,_0x584a77,_0x483bbf)[_0xdc7b('0x88')](function(){});});}});delete this[_0xdc7b('0x15')][_0x501121['linkedid']];break;case'19':_0x4933ad[_0xdc7b('0x43')]+=0x1;_0xa8ba36[_0xdc7b('0xa3')]=ut[_0xdc7b('0xa4')](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0x13,_0x501121[_0xdc7b('0xee')]||_0x501121['dialstatus']);ami[_0xdc7b('0x5c')](_0xdc7b('0xf0'),ut[_0xdc7b('0xbc')](_0xa8ba36,_0xdc7b('0xf1')));rpcDb[_0xdc7b('0xa6')](_0xa8ba36,_0xdc7b('0xf3'));_0x555b23[_0xdc7b('0xa8')](_0xa8ba36,'18',_0x4933ad)['then'](function(_0x4d9acc){_0x346b8c=_0x4d9acc['additional']==0x1;if(!_0x346b8c){if(ut[_0xdc7b('0xa4')](_0xa8ba36)>=_0x4933ad[_0xdc7b('0xac')]){_0x4e7590=ut[_0xdc7b('0xad')](_0xa8ba36,0xf,_0xdc7b('0xae'));rpcDb[_0xdc7b('0x98')](_0x4e7590,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xdc7b('0x98')](_0xa8ba36,'[callProgressDetectingCustomer][machine]');}}else{_0xa8ba36[_0xdc7b('0xd0')]++;_0x555b23[_0xdc7b('0xb6')]({'id':_0xa8ba36['idContact'],'field':{'countnoanswerretry':_0xa8ba36[_0xdc7b('0xd0')]}})[_0xdc7b('0x88')](function(){_0x555b23[_0xdc7b('0xb8')](_0xa8ba36,_0x584a77,_0x483bbf)[_0xdc7b('0x88')](function(){});});}});delete this['actions'][_0x501121[_0xdc7b('0xb4')]];break;default:if(_0xa8ba36['dialAnswer']){ut[_0xdc7b('0x7d')](_0x4933ad,_0xdc7b('0xf4'));ut[_0xdc7b('0x7f')](_0xdc7b('0xf5')+_0x4933ad[_0xdc7b('0x28')],_0x501121);}_0x4933ad['outboundUnknownCallsDay']+=0x1;_0xa8ba36[_0xdc7b('0xa3')]=ut[_0xdc7b('0xa4')](_0xa8ba36);ut[_0xdc7b('0x95')](_0xa8ba36,0xc,_0x501121[_0xdc7b('0xee')]||_0x501121[_0xdc7b('0xef')]);_0x584a77=_0x4933ad['dialAgentRejectRetryFrequency'];_0x483bbf=_0x4933ad['callAdditionalPhoneAfterMin'];rpcDb[_0xdc7b('0xa6')](_0xa8ba36,'[callProgressDetectingCustomer][logUnknown]');_0x555b23['verifyAdditionalPhones'](_0xa8ba36,'20',_0x4933ad)['then'](function(_0x304c79){_0x346b8c=_0x304c79[_0xdc7b('0xa9')]==0x1;if(!_0x346b8c){if(ut[_0xdc7b('0xa4')](_0xa8ba36)>=_0x4933ad[_0xdc7b('0xac')]){_0x4e7590=ut[_0xdc7b('0xad')](_0xa8ba36,0xf,_0xdc7b('0xae'));rpcDb['createCustomerFinal'](_0x4e7590,_0xdc7b('0xf6'));}else{rpcDb[_0xdc7b('0x98')](_0xa8ba36,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xdc7b('0x15')][_0x501121[_0xdc7b('0xb4')]];}else{_0x555b23['swapAdditionalPhones'](_0xa8ba36,_0x584a77,_0x483bbf)[_0xdc7b('0x88')](function(){});}});}if(!(_0xa8ba36[_0xdc7b('0x7c')]&&_0x29262f==='16')){ut[_0xdc7b('0x7b')](_0x4933ad,'[callProgressDetectingCustomer]');logger['info'](_0xdc7b('0xf7'),_0xa8ba36[_0xdc7b('0xbb')],_0xdc7b('0xf8'),_0x4933ad[_0xdc7b('0x28')],_0xdc7b('0x71'),_0x4933ad[_0xdc7b('0x4e')]);}if(_0x29262f!==_0xdc7b('0xb9')){delete this['actions'][_0x501121[_0xdc7b('0xb4')]];delete this[_0xdc7b('0x15')][_0x501121[_0xdc7b('0xf9')]];}}};Preview[_0xdc7b('0xd')][_0xdc7b('0xfa')]=function(_0x932660,_0x4c4409,_0x49c4bb){if(_[_0xdc7b('0xfb')](_0x4c4409)&&_0xdc7b('0xfc')!==typeof _0x4c4409){return;}if(_[_0xdc7b('0xfb')](_0x49c4bb)&&_0xdc7b('0xfc')!==typeof _0x49c4bb){return;}switch(_0x49c4bb[_0xdc7b('0xfd')]){case'0':ut[_0xdc7b('0xfe')](_0x932660,0x0,_0xdc7b('0xff'));rpcDb[_0xdc7b('0x100')](_0x932660,_0xdc7b('0x101'));break;case'3':ut[_0xdc7b('0xfe')](_0x932660,0x3,_0xdc7b('0xd1'));rpcDb['createAgentHistory'](_0x932660,_0xdc7b('0x102'));break;case'5':ut['logAgent'](_0x932660,0x5,_0xdc7b('0x103'));rpcDb[_0xdc7b('0x100')](_0x932660,_0xdc7b('0x104'));break;case'8':ut[_0xdc7b('0xfe')](_0x932660,0x8,_0xdc7b('0xd9'));rpcDb[_0xdc7b('0x100')](_0x932660,_0xdc7b('0x105'));break;case'22':ut['logAgent'](_0x932660,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x932660,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut[_0xdc7b('0xfe')](_0x932660,0xc,_0x49c4bb[_0xdc7b('0xfd')]);rpcDb['createAgentHistory'](_0x932660,_0xdc7b('0x105'));}ut['updateOriginated'](_0x4c4409,_0xdc7b('0x106'));logger['info'](_0xdc7b('0x107'),_0x932660[_0xdc7b('0xbb')],_0xdc7b('0xf8'),_0x4c4409[_0xdc7b('0x28')],_0xdc7b('0x71'),_0x4c4409[_0xdc7b('0x4e')]);delete this[_0xdc7b('0x15')][_0x932660['uniqueid']];};Preview[_0xdc7b('0xd')]['verifyAdditionalPhones']=function(_0x5bfa13,_0x59bd40,_0x291ba3){return Promise[_0xdc7b('0x108')]()[_0xdc7b('0x88')](cmHopperAdditionalPhone[_0xdc7b('0xa8')](_0x5bfa13,_0x59bd40,_0x291ba3))[_0xdc7b('0x7a')](logger[_0xdc7b('0x6e')](_0xdc7b('0x109')));};Preview[_0xdc7b('0xd')][_0xdc7b('0xb8')]=function(_0x1e96fd,_0x33184f,_0x47ca1b){return Promise[_0xdc7b('0x108')]()[_0xdc7b('0x88')](cmHopperAdditionalPhone[_0xdc7b('0xb8')](_0x1e96fd,_0x33184f,_0x47ca1b))[_0xdc7b('0x7a')](logger['info'](_0xdc7b('0x10a')));};Preview[_0xdc7b('0xd')]['incrementPreviewCounters']=function(_0x3ca69b){return Promise[_0xdc7b('0x108')]()[_0xdc7b('0x88')](cmHopperAdditionalPhone[_0xdc7b('0xb6')](_0x3ca69b))['catch'](logger[_0xdc7b('0x6e')](_0xdc7b('0x10b')));};Preview[_0xdc7b('0xd')][_0xdc7b('0x10c')]=function(_0x1597e4,_0x304a9b,_0x4cab2f,_0x37c7d3,_0x133eeb){var _0x33bf5b=this;return new Promise(function(_0x3c80e4,_0x4edcea){if(_['isNil'](_0x304a9b)||_[_0xdc7b('0x6d')](_0x304a9b[_0xdc7b('0x10d')])||_[_0xdc7b('0x6d')](_0x304a9b[_0xdc7b('0x10e')])||_[_0xdc7b('0x6d')](_0x304a9b[_0xdc7b('0x76')])){_0x4edcea(ut['message'](_0xdc7b('0x10f'),_0x37c7d3,_0x133eeb));return;}var _0x42756e=uuid['v4']();var _0x331a0d=_0x33bf5b[_0xdc7b('0x12')][_0x304a9b[_0xdc7b('0x110')][_0xdc7b('0x28')]];var _0x2fb692=_0x4cab2f?_0x33bf5b[_0xdc7b('0x16')][_0x4cab2f]['id']:undefined;_0x33bf5b[_0xdc7b('0x15')][_0x42756e]=new Action(_0x304a9b,_0x331a0d,_0x42756e,_0x4cab2f,_0x2fb692);var _0x2fe353=_0x33bf5b[_0xdc7b('0x15')][_0x42756e];_0x2fe353[_0xdc7b('0xb2')]=_0x37c7d3;_0x2fe353[_0xdc7b('0xb3')]=_0x133eeb;_0x2fe353['lookAgent']=_0x4cab2f;if(_[_0xdc7b('0x111')](_0x1597e4)){_0x33bf5b['execCall'](_0x2fe353,_0x331a0d,_0x304a9b,_0x4cab2f)[_0xdc7b('0x88')](function(_0x35c628){logger[_0xdc7b('0x6e')](_0xdc7b('0x112'),_0xdc7b('0x113')+_0x2fe353[_0xdc7b('0x70')]+'\x20IdHopper:\x20'+_0x2fe353[_0xdc7b('0xb7')],JSON['stringify'](_0x35c628));ami['emit'](_0xdc7b('0x114'),ut[_0xdc7b('0xbc')](_0x2fe353,_0xdc7b('0x115'),_0x33bf5b[_0xdc7b('0x12')][_0x2fe353[_0xdc7b('0x70')]]));_0x3c80e4(ut[_0xdc7b('0x5f')](_0xdc7b('0x116')));})['catch'](function(_0x5611b1){ut[_0xdc7b('0x61')](_0xdc7b('0x117'),_0x5611b1);_0x4edcea(ut[_0xdc7b('0x5f')](_0xdc7b('0x118'),_0x37c7d3,_0x133eeb));});}else{_0x331a0d[_0xdc7b('0x3a')]+=0x1;ut[_0xdc7b('0x119')](_0x2fe353);rpcDb[_0xdc7b('0x11a')](_0x2fe353,_0xdc7b('0x11b'));delete _0x33bf5b[_0xdc7b('0x15')][_0x42756e];_0x4edcea(ut[_0xdc7b('0x5f')](_0xdc7b('0x11c'),_0x37c7d3,_0x133eeb));}});};Preview[_0xdc7b('0xd')]['isTrunkReachable']=function(_0x3fee37){return!_[_0xdc7b('0x6d')](_0x3fee37)&&!_['isNil'](_0x3fee37['name'])&&!_[_0xdc7b('0x6d')](_0x3fee37[_0xdc7b('0x55')])&&_0x3fee37[_0xdc7b('0x55')]&&!_[_0xdc7b('0x6d')](this[_0xdc7b('0x14')][util[_0xdc7b('0x58')](_0xdc7b('0x11d'),_0x3fee37[_0xdc7b('0x28')])])&&!_['isNil'](this[_0xdc7b('0x14')][util[_0xdc7b('0x58')](_0xdc7b('0x11d'),_0x3fee37[_0xdc7b('0x28')])]['status'])&&(this[_0xdc7b('0x14')][util['format'](_0xdc7b('0x11d'),_0x3fee37['name'])]['status']===_0xdc7b('0x11e')||this['trunks'][util[_0xdc7b('0x58')]('SIP/%s',_0x3fee37[_0xdc7b('0x28')])][_0xdc7b('0x11f')]===_0xdc7b('0x120'));};Preview[_0xdc7b('0xd')]['run']=function(_0x32aaea,_0x59c9ae){return this[_0xdc7b('0x121')](_0x32aaea,_0x59c9ae)[_0xdc7b('0x88')](function(_0x1cd159){return _['pick'](_0x1cd159,[_0xdc7b('0x5f')]);})[_0xdc7b('0x7a')](function(_0x276d96){if(_0x276d96[_0xdc7b('0x122')]){rpcDb[_0xdc7b('0x123')](_0x32aaea);}if(_0x276d96[_0xdc7b('0x55')]){rpcDb[_0xdc7b('0x90')](_0x32aaea);}throw _[_0xdc7b('0x73')](_0x276d96,[_0xdc7b('0x5f')]);});};Preview[_0xdc7b('0xd')]['execRun']=function(_0x5757ce,_0x44fc32){var _0x4b5ea7=this;var _0x36c088,_0x14cef2;return rpcDb[_0xdc7b('0x124')](_0x5757ce)[_0xdc7b('0x88')](function(_0x61bf11){if(!_[_0xdc7b('0x6d')](_0x61bf11[0x0])){_0x14cef2=_0x61bf11[0x0][_0xdc7b('0x125')]?![]:!![];_0x36c088=_0x61bf11[0x0][_0xdc7b('0x125')]?!![]:![];_0x36c088=_0x44fc32?!![]:_0x36c088;}var _0x129e74=_0x4b5ea7[_0xdc7b('0x126')](_0x61bf11);if(_0x129e74[_0xdc7b('0x127')]){rpcDb[_0xdc7b('0x128')](_[_0xdc7b('0x73')](_0x61bf11[0x0],[_0xdc7b('0x76'),_0xdc7b('0x10e')]))['then'](function(_0x51d136){_0x4b5ea7[_0xdc7b('0x10c')](_0x51d136,_0x61bf11[0x0],_0x44fc32,_0x14cef2,_0x36c088)[_0xdc7b('0x88')](function(_0x3204f7){return _0x3204f7;})['catch'](function(_0x587a91){throw _0x587a91;});})[_0xdc7b('0x7a')](function(_0x19f231){ut[_0xdc7b('0x61')]('[Preview][checkIsBlackList]',_0x19f231);throw ut[_0xdc7b('0x5f')](_0xdc7b('0x129'),_0x14cef2,_0x36c088);});}else{throw ut[_0xdc7b('0x5f')](_0x129e74['message'],_0x14cef2,_0x36c088);}})[_0xdc7b('0x7a')](function(_0x28dd5f){ut[_0xdc7b('0x61')](_0xdc7b('0x12a'),_0x28dd5f);throw ut[_0xdc7b('0x5f')](_0xdc7b('0x129'),![],!![]);});};Preview[_0xdc7b('0xd')]['validateContact']=function(_0xdd3a6){if(_[_0xdc7b('0x6d')](_0xdd3a6)||_[_0xdc7b('0x111')](_0xdd3a6)||!_[_0xdc7b('0x6d')](_0xdd3a6[0x0][_0xdc7b('0x8c')])&&_[_0xdc7b('0x6d')](_0xdd3a6[0x0][_0xdc7b('0x8c')][_0xdc7b('0x28')])){ut[_0xdc7b('0x61')]('[Preview][validateContact][Empty\x20Contact]',_0xdd3a6);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x37052b=this['campaignsPreview'][_0xdd3a6[0x0][_0xdc7b('0x110')][_0xdc7b('0x28')]];_0x37052b[_0xdc7b('0x5f')]='ACTIVE';if(_[_0xdc7b('0x6d')](_0x37052b)){ut[_0xdc7b('0x61')](_0xdc7b('0x12b'),_0x37052b);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0xdc7b('0x9c')](_0x37052b[_0xdc7b('0x54')])){ut[_0xdc7b('0x61')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20'+_0x37052b[_0xdc7b('0x28')]+'\x20Trunk\x20is\x20not\x20active');if(!this[_0xdc7b('0x9c')](_0x37052b[_0xdc7b('0x9d')])){ut[_0xdc7b('0x61')](_0xdc7b('0x12c'),_0x37052b[_0xdc7b('0x28')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0xdc7b('0x12d')};}}if(!ut[_0xdc7b('0x12e')](_0x37052b[_0xdc7b('0x34')])){ut['logger']('[Preview][validateContact][Campaign\x20Active]',_0x37052b[_0xdc7b('0x28')]+_0xdc7b('0x12f'));return{'isValid':![],'message':_0xdc7b('0x130')+_0x37052b[_0xdc7b('0x28')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0xdc7b('0xd')][_0xdc7b('0x131')]=function(_0xaf692d,_0x2d5184,_0x5a2c8a,_0x1d9abe){var _0x45b09f=this;return new Promise(function(_0x4f4a9f,_0x15fd44){var _0x5720e3=_0xaf692d[_0xdc7b('0xbb')];var _0x482e39=_0x45b09f[_0xdc7b('0x9c')](_0x2d5184[_0xdc7b('0x54')])?util['format'](_0xdc7b('0x132'),_0x2d5184[_0xdc7b('0x54')]['name'],_[_0xdc7b('0x6d')](_0x2d5184[_0xdc7b('0x133')])?'':_0x2d5184[_0xdc7b('0x133')][_0xdc7b('0x134')]()||'',_0x2d5184[_0xdc7b('0x135')]>0x0?_0x5a2c8a[_0xdc7b('0x10e')][_0xdc7b('0x136')](_0x2d5184[_0xdc7b('0x135')]):_0x5a2c8a[_0xdc7b('0x10e')]):util['format']('SIP/%s/%s%s',_[_0xdc7b('0x6d')](_0x2d5184[_0xdc7b('0x9d')])?_0x2d5184[_0xdc7b('0x54')]['name']:_0x2d5184[_0xdc7b('0x9d')][_0xdc7b('0x28')],_['isNil'](_0x2d5184[_0xdc7b('0x133')])?'':_0x2d5184[_0xdc7b('0x133')][_0xdc7b('0x134')]()||'',_0x2d5184[_0xdc7b('0x135')]>0x0?_0x5a2c8a['phone'][_0xdc7b('0x136')](_0x2d5184['dialCutDigit']):_0x5a2c8a[_0xdc7b('0x10e')]);var _0x5ca16a=_0x45b09f[_0xdc7b('0x9c')](_0x2d5184[_0xdc7b('0x54')])?ut[_0xdc7b('0x137')](_0x2d5184[_0xdc7b('0x54')][_0xdc7b('0x138')],_0x2d5184[_0xdc7b('0x36')],_0x2d5184[_0xdc7b('0x139')]>0x0?ut[_0xdc7b('0x13a')](_0x2d5184[_0xdc7b('0x13b')],_0x2d5184[_0xdc7b('0x139')]):_0x2d5184[_0xdc7b('0x13b')]):ut[_0xdc7b('0x137')](_[_0xdc7b('0x6d')](_0x2d5184[_0xdc7b('0x9d')])?_0x2d5184['Trunk'][_0xdc7b('0x138')]:_0x2d5184[_0xdc7b('0x9d')][_0xdc7b('0x138')],_0x2d5184[_0xdc7b('0x36')],_0x2d5184[_0xdc7b('0x139')]>0x0?ut[_0xdc7b('0x13a')](_0x2d5184[_0xdc7b('0x13b')],_0x2d5184[_0xdc7b('0x139')]):_0x2d5184[_0xdc7b('0x13b')]);if(_0x5ca16a){_0xaf692d['originatecalleridname']=ut[_0xdc7b('0x13c')](_0x5ca16a);_0xaf692d[_0xdc7b('0x13d')]=ut[_0xdc7b('0x13e')](_0x5ca16a);}var _0x38e40a=ut['addVariables'](_0x2d5184,_0x5a2c8a,_0x482e39,_0x5ca16a,_0x5720e3,_0xaf692d);_[_0xdc7b('0x13f')](_0xaf692d,ut['toLowerVariables'](_0x38e40a));_0xaf692d[_0xdc7b('0x91')]=moment()['format'](_0xdc7b('0x92'));_0x2d5184['variables']=_0x38e40a;ami[_0xdc7b('0x78')](ut[_0xdc7b('0x140')](_0xaf692d,_0x2d5184,_0x38e40a,_0xaf692d[_0xdc7b('0xb3')],_0x1d9abe))['then'](function(_0x4b292d){_0x2d5184[_0xdc7b('0x4e')]+=0x1;logger[_0xdc7b('0x6e')](_0xdc7b('0x141'),_0x5720e3,_0xdc7b('0xf8'),_0x2d5184['name'],_0xdc7b('0x71'),_0x2d5184['originated']);_0x4f4a9f(_0x4b292d);})[_0xdc7b('0x7a')](function(_0x1b09e5){ut[_0xdc7b('0xfe')](_0xaf692d,0xe,_0xdc7b('0x142'));rpcDb[_0xdc7b('0x100')](_0xaf692d,_0xdc7b('0x143'));_0x15fd44(_0x1b09e5);});});};Preview[_0xdc7b('0xd')][_0xdc7b('0x21')]=function(_0x453cc6){if(this[_0xdc7b('0x15')][_0x453cc6[_0xdc7b('0xb4')]]){this[_0xdc7b('0x15')][_0x453cc6[_0xdc7b('0xb4')]][_0xdc7b('0x79')]=_0x453cc6['channel'];}};Preview[_0xdc7b('0xd')][_0xdc7b('0x18')]=function(_0x4300a0){var _0x382008=this;var _0x4cf9dc=this[_0xdc7b('0x15')][_0x4300a0['actionid']];if(_0x4cf9dc){if(_0x4cf9dc[_0xdc7b('0x144')]&&this['agents'][_0x4cf9dc[_0xdc7b('0x144')]]){ut[_0xdc7b('0x145')](_0x4cf9dc,this[_0xdc7b('0x16')][_0x4cf9dc[_0xdc7b('0x144')]][_0xdc7b('0x28')],this['agents'][_0x4cf9dc[_0xdc7b('0x144')]]['id']);}var _0x3f5b09=_[_0xdc7b('0x146')](_0x4cf9dc);_0x3f5b09[_0xdc7b('0x147')]=moment()[_0xdc7b('0x58')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5ba15e=_0x382008[_0xdc7b('0x12')][_0x4cf9dc['queue']];if(ut[_0xdc7b('0x148')](_0x4300a0[_0xdc7b('0x149')])){if(_0x4cf9dc['unlockAgent']){rpcDb[_0xdc7b('0x123')](_0x4cf9dc[_0xdc7b('0xb7')]);}if(_0x4cf9dc[_0xdc7b('0xb3')]){rpcDb[_0xdc7b('0x90')](_0x4cf9dc[_0xdc7b('0xb7')]);}ami[_0xdc7b('0x5c')](_0xdc7b('0x14a'),ut['buildObj'](_0x4cf9dc,'rejected',this[_0xdc7b('0x12')][_0x4cf9dc[_0xdc7b('0x70')]]));this['callProgressDetectingAgent'](_0x3f5b09,_0x5ba15e,_0x4300a0);}else{_0x4cf9dc['starttime']=moment()[_0xdc7b('0x58')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0xdc7b('0xfe')](_0x3f5b09,0x4,_0xdc7b('0x14b'));rpcDb[_0xdc7b('0x100')](_0x3f5b09,_0xdc7b('0x14c'));}}};Preview[_0xdc7b('0xd')][_0xdc7b('0x1b')]=function(_0x609b79){var _0x171bc6=this[_0xdc7b('0x15')][_0x609b79['linkedid']];var _0x3ceb05;if(_0x171bc6){_0x3ceb05=this['campaignsPreview'][_0x171bc6[_0xdc7b('0x70')]];logger['info'](_0xdc7b('0x14d'),_0x609b79['linkedid'],'\x20Queue',_0x3ceb05[_0xdc7b('0x28')],_0xdc7b('0x72'),_0x3ceb05['pTalking']);}if(this[_0xdc7b('0x15')][_0x609b79['linkedid']]&&_0x609b79['linkedid']!==_0x609b79[_0xdc7b('0xbb')]){if(_0x609b79[_0xdc7b('0x14e')]==='16'&&this[_0xdc7b('0x15')][_0x609b79[_0xdc7b('0xb4')]][_0xdc7b('0x7c')]){this[_0xdc7b('0xa0')](_0x609b79,_0x609b79['linkedid'],_0x609b79[_0xdc7b('0x14e')]);}else if(this['actions'][_0x609b79[_0xdc7b('0xb4')]][_0xdc7b('0x7c')]){logger['info'](_0xdc7b('0x14f'),_0x609b79[_0xdc7b('0xb4')],_0x609b79[_0xdc7b('0x14e')],_0xdc7b('0xf8'),_0x3ceb05[_0xdc7b('0x28')],'pTalking:\x20',_0x3ceb05['pTalking']);this[_0xdc7b('0xa0')](_0x609b79,_0x609b79['linkedid'],_0x609b79[_0xdc7b('0x14e')]);}}else if(_0x171bc6&&_[_0xdc7b('0x6d')](_0x171bc6['statedesc'])&&_0x3ceb05['dialQueueProject']&&_0x609b79['linkedid']===_0x609b79['uniqueid']&&_[_0xdc7b('0x6d')](_0x609b79[_0xdc7b('0xfd')])&&_0x609b79[_0xdc7b('0x14e')]==='16'&&_0x609b79[_0xdc7b('0x150')]==='6'&&_[_0xdc7b('0xfb')](_0x171bc6[_0xdc7b('0x151')])){if(_0x171bc6[_0xdc7b('0xb2')]){rpcDb[_0xdc7b('0x123')](_0x171bc6['idContact']);}if(_0x171bc6[_0xdc7b('0xb3')]){rpcDb[_0xdc7b('0x90')](_0x171bc6['idContact']);}_0x609b79[_0xdc7b('0xfd')]='22';this[_0xdc7b('0xfa')](_0x171bc6,_0x3ceb05,_0x609b79);}else if(_0x171bc6&&_0x171bc6[_0xdc7b('0x151')]){if(_0x609b79[_0xdc7b('0x14e')]==='16'&&this['actions'][_0x609b79[_0xdc7b('0xb4')]][_0xdc7b('0x7c')]){logger['info']('[syncHangup][talking][transfer]',_0x609b79['linkedid'],_0x609b79[_0xdc7b('0x14e')],_0xdc7b('0xf8'),_0x3ceb05[_0xdc7b('0x28')],_0xdc7b('0x72'),_0x3ceb05[_0xdc7b('0x2b')]);this[_0xdc7b('0xa0')](_0x609b79,_0x609b79[_0xdc7b('0xb4')],_0x609b79[_0xdc7b('0x14e')]);}else if(this[_0xdc7b('0x15')][_0x609b79['linkedid']][_0xdc7b('0x7c')]){logger[_0xdc7b('0x6e')](_0xdc7b('0x14f'),_0x609b79['linkedid'],_0x609b79['cause'],_0xdc7b('0xf8'),_0x3ceb05['name'],_0xdc7b('0x72'),_0x3ceb05[_0xdc7b('0x2b')]);this['callProgressDetectingCustomer'](_0x609b79,_0x609b79[_0xdc7b('0xb4')],_0x609b79['cause']);}}};Preview[_0xdc7b('0xd')][_0xdc7b('0x1f')]=function(_0x2617eb){if(this[_0xdc7b('0x15')][_0x2617eb[_0xdc7b('0xf9')]]&&_0x2617eb['destlinkedid']!==_0x2617eb[_0xdc7b('0x152')]){this[_0xdc7b('0xa0')](_0x2617eb,_0x2617eb[_0xdc7b('0xf9')],_0x2617eb[_0xdc7b('0xef')]);}};Preview['prototype']['syncHangupRequest']=function(_0x2ad9a4){if(this[_0xdc7b('0x15')][_0x2ad9a4[_0xdc7b('0xb4')]]&&_0x2ad9a4[_0xdc7b('0xb4')]!==_0x2ad9a4[_0xdc7b('0xbb')]&&!this[_0xdc7b('0x15')][_0x2ad9a4['linkedid']][_0xdc7b('0x7c')]){if(_0x2ad9a4['cause']==='1'){this[_0xdc7b('0xa0')](_0x2ad9a4,_0x2ad9a4[_0xdc7b('0xb4')],_0x2ad9a4[_0xdc7b('0x14e')]);}}};Preview['prototype']['addVariable']=function(_0x4a60cc,_0x30eddd,_0xb7842a){if(this[_0xdc7b('0x15')][_0x4a60cc]){if(_[_0xdc7b('0x6d')](this[_0xdc7b('0x15')][_0x4a60cc][_0xdc7b('0x153')])){this[_0xdc7b('0x15')][_0x4a60cc][_0xdc7b('0x153')]={};}this['actions'][_0x4a60cc]['variables'][_0x30eddd]=_0xb7842a;}};Preview[_0xdc7b('0xd')][_0xdc7b('0x23')]=function(_0x2e25a3){try{if(!_[_0xdc7b('0x6d')](_0x2e25a3)){if(ut[_0xdc7b('0x154')](_[_0xdc7b('0x155')](_0x2e25a3[_0xdc7b('0x156')])[0x0])){this[_0xdc7b('0x157')](_0x2e25a3[_0xdc7b('0xbb')],_[_0xdc7b('0x155')](_0x2e25a3[_0xdc7b('0x156')])[0x0],_0x2e25a3[_0xdc7b('0x158')]);}}}catch(_0x3089ec){logger[_0xdc7b('0x159')](_0xdc7b('0x15a'),util[_0xdc7b('0x15b')](_0x3089ec,{'showHidden':![],'depth':null}));}};Preview[_0xdc7b('0xd')][_0xdc7b('0x15c')]=function(_0x5c3d72){if(_0x5c3d72){if(this['actions'][_0x5c3d72[_0xdc7b('0x15d')]]){this[_0xdc7b('0x15')][_0x5c3d72[_0xdc7b('0x15d')]]['transfer']=!![];}}};Preview['prototype'][_0xdc7b('0x25')]=function(_0x1c0334){if(_0x1c0334){if(this['actions'][_0x1c0334['transfererlinkedid']]){this[_0xdc7b('0x15')][_0x1c0334[_0xdc7b('0x15e')]][_0xdc7b('0x151')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x7278=['variable','value','error','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','transfer','util','lodash','uuid','moment','md5','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','prototype','enqueue','tail','finally','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','answered','available','pTalking','sumBillable','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','sequence','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','ListId','Action','status','catch','updateOriginated','[clearZombieChannel]','[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','size','then','length','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','dialRecallInQueue','rescheduleContactInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','logCustomer','RecallFailedTimeout','createCustomerFinal','[HistoryRecallClose]','[getContactRecallMe]','loggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','ACTIVE','outboundNoSuchCallsDay','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','linkedid','actioncountonusuch','incrementPreviewCounters','swapAdditionalPhones','YYYY-MM-DD\x20HH:mm:ss','responsetime','answertime','custom:agentconnect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','decrementTalkink','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','sumDuration','talktime','uniqueid','\x20Queue','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','additional','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','unlockAgent','activeContact','idContact','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerMaxRetry','CONGESTION','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','countcongestionretry','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','outboundUnknownCallsDay','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','dialAgentRejectRetryFrequency','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','ANSWER','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logNoAnswer]','createAgentHistory','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','resolve','[incrementPreviewCounters]\x20','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','isEmpty','execCall','[Preview][execCall][success]','\x20IdHopper:\x20','custom:agentcalled','Call\x20failed','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','execRun','unlock','unlockContact','recallme','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','\x20Not\x20Active','SIP/%s/%s%s','dialPrefix','substring','dialCutDigit','trim','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variables','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','channel','actionid','lookAgent','clone','isFailure','response','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','[syncHangup][talking][transfer]','destuniqueid','addVariable','syncVarSet','filterKey','keys'];(function(_0x4e74e2,_0x433d73){var _0x13ee43=function(_0x232da9){while(--_0x232da9){_0x4e74e2['push'](_0x4e74e2['shift']());}};_0x13ee43(++_0x433d73);}(_0x7278,0x161));var _0x8727=function(_0x7a2fe,_0x25f282){_0x7a2fe=_0x7a2fe-0x0;var _0x355257=_0x7278[_0x7a2fe];return _0x355257;};'use strict';var util=require(_0x8727('0x0'));var _=require(_0x8727('0x1'));var uuid=require(_0x8727('0x2'));var moment=require(_0x8727('0x3'));var md5=require(_0x8727('0x4'));var Redis=require('ioredis');var config=require(_0x8727('0x5'));var logger=require(_0x8727('0x6'))(_0x8727('0x7'));var loggerAction=require(_0x8727('0x6'))(_0x8727('0x8'));var ami=require(_0x8727('0x9'));var rpcDb=require(_0x8727('0xa'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0x8727('0xb'));var ut=require(_0x8727('0xc'));config[_0x8727('0xd')]=_[_0x8727('0xe')](config[_0x8727('0xd')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x8727('0xf')][_0x8727('0x10')]=function(_0x3a6c9b){this[_0x8727('0x11')]=this[_0x8727('0x11')]?this[_0x8727('0x11')][_0x8727('0x12')](_0x3a6c9b):_0x3a6c9b();};function Preview(_0xefa0bf){this['sequence']=new Sequence();this[_0x8727('0x13')]=_0xefa0bf[_0x8727('0x14')];this[_0x8727('0x15')]=_0xefa0bf['trunks'];this[_0x8727('0x16')]={};this[_0x8727('0x17')]=_0xefa0bf['agents'];this[_0x8727('0x18')]=0x0;ami['on'](_0x8727('0x19'),this[_0x8727('0x1a')][_0x8727('0x1b')](this));ami['on'](_0x8727('0x1c'),this[_0x8727('0x1d')][_0x8727('0x1b')](this));ami['on'](_0x8727('0x1e'),this[_0x8727('0x1f')][_0x8727('0x1b')](this));ami['on']('dialend',this[_0x8727('0x20')][_0x8727('0x1b')](this));ami['on'](_0x8727('0x21'),this[_0x8727('0x22')][_0x8727('0x1b')](this));ami['on'](_0x8727('0x23'),this['syncVarSet']['bind'](this));ami['on'](_0x8727('0x24'),this['syncAttendedTransfer'][_0x8727('0x1b')](this));ami['on'](_0x8727('0x25'),this[_0x8727('0x26')][_0x8727('0x1b')](this));this[_0x8727('0x27')](this['campaignsPreview']);}function emit(_0x6e552f,_0x286856,_0x8cde82){io['to'](_0x6e552f)[_0x8727('0x28')](_0x286856,_0x8cde82);}function emitCampaignPreview(_0x2fe8ba){if(_0x2fe8ba[_0x8727('0x29')]===_0x8727('0x2a')){var _0x441cc0={'id':_0x2fe8ba['id'],'name':_0x2fe8ba[_0x8727('0x2b')],'strategy':_0x2fe8ba[_0x8727('0x2c')],'answered':_0x2fe8ba[_0x8727('0x2d')],'available':_0x2fe8ba[_0x8727('0x2e')],'loggedIn':_0x2fe8ba['loggedIn'],'pTalking':_0x2fe8ba[_0x8727('0x2f')],'sumBillable':_0x2fe8ba[_0x8727('0x30')],'sumDuration':_0x2fe8ba['sumDuration'],'sumHoldTime':_0x2fe8ba['sumHoldTime']||0x0,'talking':_0x2fe8ba[_0x8727('0x31')],'total':_0x2fe8ba[_0x8727('0x32')],'type':_0x2fe8ba[_0x8727('0x29')],'unmanaged':_0x2fe8ba['unmanaged'],'abandoned':_0x2fe8ba[_0x8727('0x33')],'waiting':_0x2fe8ba[_0x8727('0x34')],'loggedInDb':_0x2fe8ba[_0x8727('0x35')],'dialActive':_0x2fe8ba[_0x8727('0x36')],'dialMethod':_0x2fe8ba[_0x8727('0x37')],'dialOriginateCallerIdName':_0x2fe8ba[_0x8727('0x38')],'dialOriginateCallerIdNumber':_0x2fe8ba[_0x8727('0x39')],'dialOriginateTimeout':_0x2fe8ba[_0x8727('0x3a')],'dialPrefix':_0x2fe8ba['dialPrefix'],'outboundAnswerAgiCallsDay':_0x2fe8ba[_0x8727('0x3b')],'outboundAnswerCallsDay':_0x2fe8ba[_0x8727('0x3c')],'outboundBlacklistCallsDay':_0x2fe8ba['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x2fe8ba[_0x8727('0x3d')],'outboundCongestionCallsDay':_0x2fe8ba[_0x8727('0x3e')],'outboundDropCallsDayACS':_0x2fe8ba[_0x8727('0x3f')],'outboundDropCallsDayCallersExit':_0x2fe8ba[_0x8727('0x40')],'outboundDropCallsDayTimeout':_0x2fe8ba[_0x8727('0x41')],'outboundNoAnswerCallsDay':_0x2fe8ba[_0x8727('0x42')],'outboundNoSuchCallsDay':_0x2fe8ba['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x2fe8ba[_0x8727('0x43')],'outboundReCallsDay':_0x2fe8ba['outboundReCallsDay'],'outboundRejectCallsDay':_0x2fe8ba[_0x8727('0x44')],'outboundUnknownCallsDay':_0x2fe8ba['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x2fe8ba[_0x8727('0x45')],'predictiveIntervalAnsweredCalls':_0x2fe8ba[_0x8727('0x46')],'predictiveIntervalAvgHoldtime':_0x2fe8ba[_0x8727('0x47')],'predictiveIntervalAvgTalktime':_0x2fe8ba[_0x8727('0x48')],'predictiveIntervalDroppedCallsCallersExit':_0x2fe8ba[_0x8727('0x49')],'predictiveIntervalDroppedCallsTimeout':_0x2fe8ba[_0x8727('0x4a')],'predictiveIntervalErlangCalls':_0x2fe8ba[_0x8727('0x4b')],'predictiveIntervalErlangCallsDroppedCalls':_0x2fe8ba['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x2fe8ba[_0x8727('0x4c')],'predictiveIntervalMultiplicativeFactor':_0x2fe8ba[_0x8727('0x4d')],'predictiveIntervalPauses':_0x2fe8ba[_0x8727('0x4e')],'predictiveIntervalAvailable':_0x2fe8ba[_0x8727('0x4f')],'predictiveIntervalTotalCalls':_0x2fe8ba[_0x8727('0x50')],'message':_0x2fe8ba[_0x8727('0x51')],'originated':_0x2fe8ba[_0x8727('0x52')],'erlangCalls':_0x2fe8ba[_0x8727('0x53')],'erlangCallToSecond':_0x2fe8ba[_0x8727('0x54')],'erlangAbandonmentRate':_0x2fe8ba[_0x8727('0x55')],'erlangBusyFactor':_0x2fe8ba[_0x8727('0x56')],'startPredictive':_0x2fe8ba[_0x8727('0x57')],'startProgressive':_0x2fe8ba['startProgressive']};if(_0x2fe8ba['Trunk']){_0x441cc0[_0x8727('0x58')]={'id':_0x2fe8ba[_0x8727('0x58')]['id'],'name':_0x2fe8ba[_0x8727('0x58')][_0x8727('0x2b')],'active':_0x2fe8ba['Trunk'][_0x8727('0x59')],'callerid':_0x2fe8ba[_0x8727('0x58')][_0x8727('0x5a')]};}if(_0x2fe8ba[_0x8727('0x5b')]){_0x441cc0[_0x8727('0x5b')]={'id':_0x2fe8ba['Interval']['id'],'name':_0x2fe8ba[_0x8727('0x5b')][_0x8727('0x2b')]};}var _0x8e9de8=md5(JSON[_0x8727('0x5c')](_0x441cc0));if(_0x2fe8ba[_0x8727('0x4')]!==_0x8e9de8){_0x2fe8ba[_0x8727('0x4')]=_0x8e9de8;emit(util[_0x8727('0x5d')](_0x8727('0x5e'),_0x441cc0[_0x8727('0x2b')]),_0x8727('0x5f'),_0x441cc0);}}}function emitVoiceQueueChannelRemove(_0x396f12){logger[_0x8727('0x60')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0x8727('0x5c')](_0x396f12));emit(util[_0x8727('0x5d')](_0x8727('0x5e'),_0x396f12[_0x8727('0x2b')]),_0x8727('0x61'),_0x396f12);io[_0x8727('0x28')](_0x8727('0x62'),_0x396f12);}function notSendMessagesQueue(_0x41b08e){if(_0x41b08e[_0x8727('0x63')]){if(_0x41b08e[_0x8727('0x52')]===0x0&&_0x41b08e[_0x8727('0x2f')]===0x0){_0x41b08e[_0x8727('0x63')]=![];_0x41b08e[_0x8727('0x2e')]=0x0;_0x41b08e[_0x8727('0x64')]=0x0;_0x41b08e['message']=_0x8727('0x65');ut[_0x8727('0x66')](_0x8727('0x67'),_0x41b08e['name']+_0x8727('0x68'));}else{_0x41b08e[_0x8727('0x51')]=_0x8727('0x69');ut[_0x8727('0x66')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x41b08e[_0x8727('0x2b')]+_0x8727('0x6a'));}emitCampaignPreview(_0x41b08e);}}Preview[_0x8727('0xf')][_0x8727('0x27')]=function(){var _0x16b870=this;setInterval(function(){_0x16b870[_0x8727('0x6b')]();},0x7cf);};Preview[_0x8727('0xf')][_0x8727('0x6b')]=function(){var _0x3aac97=this[_0x8727('0x13')];this['clockClearZombieChannels']+=0x1;for(var _0x307785 in _0x3aac97){if(_0x3aac97[_0x8727('0x6c')](_0x307785)&&(_0x3aac97[_0x307785][_0x8727('0x37')]===_0x8727('0x7')||_0x3aac97[_0x307785][_0x8727('0x37')]==='booked')&&_0x3aac97[_0x307785][_0x8727('0x29')]===_0x8727('0x2a')){if(this[_0x8727('0x18')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x8727('0x6d')]();}}if(_0x3aac97[_0x8727('0x6c')](_0x307785)&&_0x3aac97[_0x307785][_0x8727('0x37')]===_0x8727('0x7')&&_0x3aac97[_0x307785][_0x8727('0x29')]===_0x8727('0x2a')){if(_0x3aac97[_0x307785]['dialActive']){this[_0x8727('0x6e')](_0x3aac97[_0x307785]);if(_0x3aac97[_0x307785][_0x8727('0x6f')])this[_0x8727('0x70')](_0x3aac97[_0x307785]);}else{notSendMessagesQueue(_0x3aac97[_0x307785]);}}}};Preview['prototype'][_0x8727('0x71')]=function(_0x3e6aee){var _0x976ebc=this;this[_0x8727('0x72')][_0x8727('0x10')](function(){if(!_[_0x8727('0x73')](_0x976ebc[_0x8727('0x16')][_0x3e6aee])){loggerAction['info'](_0x8727('0x74'),_0x3e6aee,_0x8727('0x75'),_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x76')],_0x8727('0x77'),JSON[_0x8727('0x5c')](_0x976ebc[_0x8727('0x13')][_0x976ebc['actions'][_0x3e6aee][_0x8727('0x76')]][_0x8727('0x52')]),_0x8727('0x78'),JSON['stringify'](_0x976ebc[_0x8727('0x13')][_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x76')]][_0x8727('0x2f')]),JSON[_0x8727('0x5c')](_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x79')]),JSON['stringify'](_[_0x8727('0x7a')](_0x976ebc['actions'][_0x3e6aee],[_0x8727('0x7b'),_0x8727('0x7c'),'VoiceQueueId',_0x8727('0x7d')])));return ami[_0x8727('0x7e')]({'action':_0x8727('0x7f'),'channel':_0x976ebc['actions'][_0x3e6aee]['channel']})[_0x8727('0x80')](function(_0x1486ca){if(_0x1486ca[_0x8727('0x51')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x976ebc[_0x8727('0x16')][_0x3e6aee]){ut[_0x8727('0x81')](_0x976ebc[_0x8727('0x13')][_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x76')]],_0x8727('0x82'));if(_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x79')]===!![]){ut['decrementTalkink'](_0x976ebc[_0x8727('0x13')][_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x76')]],_0x8727('0x82'));ut['loggerError'](_0x8727('0x83')+_0x3e6aee,_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x76')]);}ut[_0x8727('0x84')](_0x8727('0x85')+_0x3e6aee,_0x976ebc[_0x8727('0x16')][_0x3e6aee][_0x8727('0x76')]);delete _0x976ebc[_0x8727('0x16')][_0x3e6aee];}},0x2328);}});}});};Preview['prototype'][_0x8727('0x6d')]=function(){var _0x291b3e=this;loggerAction[_0x8727('0x60')]('[action]',_[_0x8727('0x86')](this['actions']));for(var _0x41cb0e in this['actions']){if(_0x291b3e[_0x8727('0x16')][_0x8727('0x6c')](_0x41cb0e)){_0x291b3e['clearZombieChannel'](_0x41cb0e);}}};Preview[_0x8727('0xf')][_0x8727('0x70')]=function(_0x105a9d){var _0x5b0ee9=this;rpcDb['getContactRecallMe'](_0x105a9d['id'],ut['agentReadyId'](this['agents']))[_0x8727('0x87')](function(_0x41fdad){if(!_[_0x8727('0x73')](_0x41fdad)){for(var _0x7e15b0=0x0;_0x7e15b0<_0x41fdad[_0x8727('0x88')];_0x7e15b0+=0x1){if(ut['getDiff'](_0x41fdad[_0x7e15b0]['scheduledat'])<_0x105a9d[_0x8727('0x89')]*0x3c){if(_0x41fdad[_0x7e15b0][_0x8727('0x8a')]&&!_0x41fdad[_0x7e15b0][_0x8727('0x8a')][_0x8727('0x8b')]){_0x5b0ee9[_0x8727('0x8c')](_0x41fdad[_0x7e15b0]['id'])[_0x8727('0x87')](ut[_0x8727('0x8d')](_0x8727('0x8e')))[_0x8727('0x80')](ut[_0x8727('0x8d')](_0x8727('0x8e')));}else{rpcDb[_0x8727('0x8f')](_0x41fdad[_0x7e15b0]['id']);}}else{var _0x508fc9=new Action(_0x41fdad[_0x7e15b0],_0x105a9d);_0x508fc9[_0x8727('0x90')]=moment()[_0x8727('0x5d')]('YYYY-MM-DD\x20HH:mm:ss');_0x105a9d['outboundReCallsDay']+=0x1;ut['logCustomer'](_0x508fc9,0x17,'RecallInQueue');if(_0x105a9d[_0x8727('0x91')]){rpcDb[_0x8727('0x92')](ut['createBody'](_0x41fdad[_0x7e15b0]));rpcDb[_0x8727('0x93')](_0x508fc9,_0x8727('0x94'));}else{ut[_0x8727('0x95')](_0x508fc9,0x16,_0x8727('0x96'));rpcDb[_0x8727('0x93')](_0x508fc9,'[HistoryRecallClose]');rpcDb[_0x8727('0x97')](_0x508fc9,_0x8727('0x98'));}}}}})[_0x8727('0x80')](ut[_0x8727('0x8d')](_0x8727('0x99')));};Preview[_0x8727('0xf')][_0x8727('0x6e')]=function(_0x190f0d){_0x190f0d[_0x8727('0x63')]=!![];if(ut['IsNotLoggedIn'](_0x190f0d[_0x8727('0x9a')])){_0x190f0d[_0x8727('0x51')]=_0x8727('0x9b');}else if(!ut['isActive'](_0x190f0d[_0x8727('0x36')])){_0x190f0d['message']=_0x8727('0x65');}else if(!this[_0x8727('0x9c')](_0x190f0d[_0x8727('0x58')])){if(!this[_0x8727('0x9c')](_0x190f0d[_0x8727('0x9d')])){_0x190f0d['message']='TRUNK_IS_NOT_REACHABLE';}else{_0x190f0d[_0x8727('0x51')]=_0x8727('0x9e');}}else{_0x190f0d[_0x8727('0x51')]=_0x8727('0x9e');}emitCampaignPreview(_0x190f0d);};Preview[_0x8727('0xf')]['callProgressDetectingCustomer']=function(_0x29da1c,_0x56a275,_0x24196b){var _0x55f8a2=this;var _0x5c9024=this[_0x8727('0x16')][_0x56a275];var _0x2d7dd3=this[_0x8727('0x13')][_0x5c9024[_0x8727('0x76')]];var _0x2a92d6;var _0x5c0c1b=![];var _0x4de3f0=0x2;var _0x1a16f8=0x3;if(_0x2d7dd3){switch(_0x24196b){case'1':_0x2d7dd3[_0x8727('0x9f')]+=0x1;_0x5c9024['countnosuchnumberretry']+=0x1;_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut[_0x8727('0x95')](_0x5c9024,0x0,_0x8727('0xa2'));ami['emit'](_0x8727('0xa3'),ut[_0x8727('0xa4')](_0x5c9024,_0x8727('0xa5')));rpcDb[_0x8727('0x93')](_0x5c9024,_0x8727('0xa6'));_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'0',_0x2d7dd3)[_0x8727('0x87')](function(_0x4a75ec){_0x5c0c1b=_0x4a75ec['additional']==0x1;_0x4de3f0=_0x2d7dd3['dialNoSuchNumberRetryFrequency'];_0x1a16f8=_0x2d7dd3[_0x8727('0xa8')];if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0xf,_0x8727('0xab'));rpcDb[_0x8727('0x97')](_0x2a92d6,_0x8727('0xac'));}else{if(_0x5c9024[_0x8727('0xad')]>=_0x2d7dd3[_0x8727('0xae')]){rpcDb[_0x8727('0x97')](_0x5c9024,_0x8727('0xac'));}else{rpcDb[_0x8727('0xaf')](ut[_0x8727('0xb0')](_0x5c9024,_0x8727('0xad'),_0x2d7dd3[_0x8727('0xb1')]),_0x5c9024['unlockAgent'],_0x5c9024['activeContact']);}}delete this['actions'][_0x29da1c[_0x8727('0xb2')]];}else{_0x5c9024[_0x8727('0xad')]++;logger['info'](_0x8727('0xb3'),_0x5c9024[_0x8727('0xad')]);logger[_0x8727('0x60')]('id',_0x5c9024['idContact']);_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024['idContact'],'field':{'countnosuchnumberretry':_0x5c9024[_0x8727('0xad')]}})[_0x8727('0x87')](function(){_0x55f8a2[_0x8727('0xb5')](_0x5c9024,_0x4de3f0,_0x1a16f8)['then'](function(){});});}});break;case'ANSWER':var _0x3519d1=moment()[_0x8727('0x5d')](_0x8727('0xb6'));_0x5c9024[_0x8727('0xb7')]=_0x3519d1;_0x5c9024[_0x8727('0xb8')]=_0x3519d1;_0x5c9024[_0x8727('0x79')]=!![];_0x2d7dd3[_0x8727('0x2f')]+=0x1;logger[_0x8727('0x60')]('[syncHangup][talking][increment]',_0x5c9024['uniqueid'],'\x20Queue',_0x2d7dd3[_0x8727('0x2b')],_0x8727('0x78'),_0x2d7dd3[_0x8727('0x2f')]);ami['emit'](_0x8727('0xb9'),ut[_0x8727('0xa4')](_0x5c9024,'connect',this[_0x8727('0x13')][_0x5c9024[_0x8727('0x76')]]));if(_0x2d7dd3[_0x8727('0xba')]){ami[_0x8727('0x28')](_0x8727('0xbb'),ut[_0x8727('0xbc')](_0x5c9024));}break;case'16':ami[_0x8727('0x28')](_0x8727('0xbd'),ut[_0x8727('0xa4')](_0x5c9024,_0x8727('0xbe'),this['campaignsPreview'][_0x5c9024[_0x8727('0x76')]]));emitVoiceQueueChannelRemove(ut[_0x8727('0xa4')](_0x5c9024,_0x8727('0xbe')));_0x2d7dd3[_0x8727('0x3c')]+=0x1;_0x2d7dd3[_0x8727('0x32')]+=0x1;_0x2d7dd3[_0x8727('0x2d')]+=0x1;ut[_0x8727('0xbf')](_0x2d7dd3,_0x8727('0xc0'));_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut[_0x8727('0x95')](_0x5c9024,0x4,_0x8727('0xc1'));rpcDb['createCustomerHistory'](_0x5c9024,_0x8727('0xc2'));rpcDb[_0x8727('0x97')](_0x5c9024,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb['crateCustomerReportQueue'](_0x5c9024);_0x2d7dd3[_0x8727('0xc3')]+=_0x5c9024[_0x8727('0xc4')];_0x2d7dd3[_0x8727('0x30')]+=_0x5c9024[_0x8727('0xc4')];logger[_0x8727('0x60')]('[syncHangup][talking][decrement]',_0x5c9024[_0x8727('0xc5')],_0x8727('0xc6'),_0x2d7dd3['name'],_0x8727('0x78'),_0x2d7dd3['pTalking']);delete this[_0x8727('0x16')][_0x29da1c[_0x8727('0xb2')]];break;case'BUSY':_0x2d7dd3['outboundBusyCallsDay']+=0x1;_0x5c9024[_0x8727('0xc7')]+=0x1;_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut['logCustomer'](_0x5c9024,0x5,_0x8727('0xc8'));_0x4de3f0=_0x2d7dd3[_0x8727('0xc9')];_0x1a16f8=_0x2d7dd3[_0x8727('0xa8')];ami['emit'](_0x8727('0xca'),ut[_0x8727('0xa4')](_0x5c9024,_0x8727('0xcb')));rpcDb[_0x8727('0x93')](_0x5c9024,'[callProgressDetectingCustomer][logBusy]');_0x55f8a2['verifyAdditionalPhones'](_0x5c9024,'5',_0x2d7dd3)['then'](function(_0x92f690){_0x5c0c1b=_0x92f690[_0x8727('0xcc')]==0x1;if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0xf,_0x8727('0xab'));rpcDb[_0x8727('0x97')](_0x2a92d6,_0x8727('0xcd'));}else{if(_0x5c9024[_0x8727('0xc7')]>=_0x2d7dd3[_0x8727('0xce')]){rpcDb[_0x8727('0x97')](_0x5c9024,_0x8727('0xcf'));}else{rpcDb[_0x8727('0xaf')](ut['scheduledAt'](_0x5c9024,_0x8727('0xc7'),_0x2d7dd3[_0x8727('0xc9')]),_0x5c9024[_0x8727('0xd0')],_0x5c9024[_0x8727('0xd1')]);}}}else{_0x5c9024[_0x8727('0xc7')]++;_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024[_0x8727('0xd2')],'field':{'countbusyretry':_0x5c9024[_0x8727('0xc7')]}})[_0x8727('0x87')](function(){_0x55f8a2['swapAdditionalPhones'](_0x5c9024,_0x4de3f0,_0x1a16f8)[_0x8727('0x87')](function(){});});}});break;case'NOANSWER':_0x2d7dd3[_0x8727('0x42')]+=0x1;_0x5c9024[_0x8727('0xd3')]+=0x1;_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut[_0x8727('0x95')](_0x5c9024,0x3,_0x8727('0xd4'));_0x4de3f0=_0x2d7dd3[_0x8727('0xd5')];_0x1a16f8=_0x2d7dd3[_0x8727('0xa8')];var _0x4a7dd1=ut[_0x8727('0xd6')](_0x5c9024,_0x2d7dd3);ami[_0x8727('0x28')]('custom:agentnoanswer',_0x4a7dd1);rpcDb['createCustomerHistory'](_0x5c9024,_0x8727('0xd7'));_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'3',_0x2d7dd3)['then'](function(_0x3b8a9e){_0x5c0c1b=_0x3b8a9e['additional']==0x1;if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0xf,_0x8727('0xab'));rpcDb[_0x8727('0x97')](_0x2a92d6,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x5c9024[_0x8727('0xd3')]>=_0x2d7dd3[_0x8727('0xd8')]){rpcDb[_0x8727('0x97')](_0x5c9024,_0x8727('0xd7'));}else{rpcDb[_0x8727('0xaf')](ut['scheduledAt'](_0x5c9024,'countnoanswerretry',_0x2d7dd3[_0x8727('0xd5')]),_0x5c9024[_0x8727('0xd0')],_0x5c9024[_0x8727('0xd1')]);}}}else{_0x5c9024[_0x8727('0xd3')]++;_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024[_0x8727('0xd2')],'field':{'countnoanswerretry':_0x5c9024[_0x8727('0xd3')]}})[_0x8727('0x87')](function(){_0x55f8a2['swapAdditionalPhones'](_0x5c9024,_0x4de3f0,_0x1a16f8)[_0x8727('0x87')](function(){});});}});break;case _0x8727('0xd9'):_0x2d7dd3[_0x8727('0x3e')]+=0x1;_0x5c9024['countcongestionretry']+=0x1;_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut[_0x8727('0x95')](_0x5c9024,0x8,_0x8727('0xda'));_0x4de3f0=_0x2d7dd3['dialCongestionRetryFrequency'];_0x1a16f8=_0x2d7dd3[_0x8727('0xa8')];ami[_0x8727('0x28')](_0x8727('0xdb'),ut[_0x8727('0xa4')](_0x5c9024,_0x8727('0xdc')));rpcDb[_0x8727('0x93')](_0x5c9024,'[callProgressDetectingCustomer][logCongestion]');_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'8',_0x2d7dd3)[_0x8727('0x87')](function(_0x50e746){_0x5c0c1b=_0x50e746[_0x8727('0xcc')]==0x1;if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0xf,_0x8727('0xab'));rpcDb[_0x8727('0x97')](_0x2a92d6,_0x8727('0xdd'));}else{if(_0x5c9024['countcongestionretry']>=_0x2d7dd3[_0x8727('0xde')]){rpcDb['createCustomerFinal'](_0x5c9024,_0x8727('0xdf'));}else{rpcDb[_0x8727('0xaf')](ut[_0x8727('0xb0')](_0x5c9024,'countcongestionretry',_0x2d7dd3[_0x8727('0xc9')]),_0x5c9024[_0x8727('0xd0')],_0x5c9024[_0x8727('0xd1')]);}}}else{_0x5c9024['countcongestionretry']++;_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024['idContact'],'field':{'countcongestionretry':_0x5c9024[_0x8727('0xe0')]}})['then'](function(){_0x55f8a2[_0x8727('0xb5')](_0x5c9024,_0x4de3f0,_0x1a16f8)['then'](function(){});});}});break;case'CANCEL':_0x2d7dd3['outboundRejectCallsDay']+=0x1;_0x5c9024[_0x8727('0xe1')]+=0x1;_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut['logCustomer'](_0x5c9024,0x14,_0x8727('0xe2'));_0x4de3f0=_0x2d7dd3['dialAgentRejectRetryFrequency'];_0x1a16f8=_0x2d7dd3['callAdditionalPhoneAfterMin'];ami['emit'](_0x8727('0xe3'),ut[_0x8727('0xa4')](_0x5c9024,_0x8727('0xe4')));rpcDb['createCustomerHistory'](_0x5c9024,'[syncHangupRequest][logAgentReject]');_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'20',_0x2d7dd3)['then'](function(_0x4cbe87){_0x5c0c1b=_0x4cbe87[_0x8727('0xcc')]==0x1;if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0x14,_0x8727('0xe2'));rpcDb[_0x8727('0x97')](_0x2a92d6,_0x8727('0xe5'));}else{if(_0x5c9024['countagentrejectretry']>=_0x2d7dd3[_0x8727('0xe6')]){rpcDb[_0x8727('0x97')](_0x5c9024,_0x8727('0xe5'));}else{rpcDb[_0x8727('0xaf')](ut[_0x8727('0xb0')](_0x5c9024,'countagentrejectretry',_0x2d7dd3['dialAgentRejectRetryFrequency']),_0x5c9024[_0x8727('0xd0')],_0x5c9024[_0x8727('0xd1')]);}}}else{_0x5c9024[_0x8727('0xd3')]++;_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024[_0x8727('0xd2')],'field':{'countnoanswerretry':_0x5c9024['countnoanswerretry']}})[_0x8727('0x87')](function(){_0x55f8a2[_0x8727('0xb5')](_0x5c9024,_0x4de3f0,_0x1a16f8)[_0x8727('0x87')](function(){});});}});break;case _0x8727('0xe7'):_0x2d7dd3[_0x8727('0x45')]+=0x1;_0x5c9024[_0x8727('0xe8')]+=0x1;_0x5c9024['countglobal']=ut[_0x8727('0xa1')](_0x5c9024);ut[_0x8727('0x95')](_0x5c9024,0xb,_0x8727('0xe9'));rpcDb['createCustomerHistory'](_0x5c9024,'[callProgressDetectingCustomer][logAbandoned]');_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'11',_0x2d7dd3)[_0x8727('0x87')](function(_0x3a1bd5){_0x5c0c1b=_0x3a1bd5[_0x8727('0xcc')]==0x1;if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3['dialGlobalMaxRetry']){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0xf,'Global');rpcDb['createCustomerFinal'](_0x2a92d6,_0x8727('0xea'));}else{if(_0x5c9024[_0x8727('0xeb')]>=_0x2d7dd3[_0x8727('0xec')]){rpcDb[_0x8727('0x97')](_0x5c9024,_0x8727('0xea'));}else{rpcDb[_0x8727('0xaf')](ut[_0x8727('0xb0')](_0x5c9024,_0x8727('0xe8'),_0x2d7dd3[_0x8727('0xed')]),_0x5c9024[_0x8727('0xd0')],_0x5c9024[_0x8727('0xd1')]);}}}else{_0x5c9024['countnoanswerretry']++;_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024[_0x8727('0xd2')],'field':{'countnoanswerretry':_0x5c9024[_0x8727('0xd3')]}})[_0x8727('0x87')](function(){_0x55f8a2['swapAdditionalPhones'](_0x5c9024,_0x4de3f0,_0x1a16f8)['then'](function(){});});}});break;case'18':_0x2d7dd3[_0x8727('0xee')]+=0x1;_0x5c9024['countmachineretry']+=0x1;_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut['logCustomer'](_0x5c9024,0x12,_0x29da1c[_0x8727('0xef')]||_0x29da1c[_0x8727('0xf0')]);ami[_0x8727('0x28')](_0x8727('0xf1'),ut[_0x8727('0xa4')](_0x5c9024,'amd'));rpcDb[_0x8727('0x93')](_0x5c9024,'[callProgressDetectingCustomer][hangupInAMD]');_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'18',_0x2d7dd3)['then'](function(_0x1bdb94){_0x5c0c1b=_0x1bdb94[_0x8727('0xcc')]==0x1;if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0x12,'Global');rpcDb['createCustomerFinal'](_0x2a92d6,_0x8727('0xf2'));}else{rpcDb['createCustomerFinal'](_0x5c9024,_0x8727('0xf2'));}}else{_0x5c9024['countnoanswerretry']++;_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024[_0x8727('0xd2')],'field':{'countnoanswerretry':_0x5c9024['countnoanswerretry']}})[_0x8727('0x87')](function(){_0x55f8a2[_0x8727('0xb5')](_0x5c9024,_0x4de3f0,_0x1a16f8)['then'](function(){});});}});delete this['actions'][_0x29da1c[_0x8727('0xb2')]];break;case'19':_0x2d7dd3[_0x8727('0xee')]+=0x1;_0x5c9024[_0x8727('0xa0')]=ut['totalGlobal'](_0x5c9024);ut[_0x8727('0x95')](_0x5c9024,0x13,_0x29da1c[_0x8727('0xef')]||_0x29da1c[_0x8727('0xf0')]);ami[_0x8727('0x28')](_0x8727('0xf1'),ut['buildObj'](_0x5c9024,_0x8727('0xf3')));rpcDb['createCustomerHistory'](_0x5c9024,_0x8727('0xf4'));_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'18',_0x2d7dd3)[_0x8727('0x87')](function(_0x556e4a){_0x5c0c1b=_0x556e4a[_0x8727('0xcc')]==0x1;if(!_0x5c0c1b){if(ut[_0x8727('0xa1')](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0xf,_0x8727('0xab'));rpcDb[_0x8727('0x97')](_0x2a92d6,_0x8727('0xf4'));}else{rpcDb[_0x8727('0x97')](_0x5c9024,_0x8727('0xf4'));}}else{_0x5c9024[_0x8727('0xd3')]++;_0x55f8a2[_0x8727('0xb4')]({'id':_0x5c9024[_0x8727('0xd2')],'field':{'countnoanswerretry':_0x5c9024[_0x8727('0xd3')]}})['then'](function(){_0x55f8a2[_0x8727('0xb5')](_0x5c9024,_0x4de3f0,_0x1a16f8)[_0x8727('0x87')](function(){});});}});delete this[_0x8727('0x16')][_0x29da1c[_0x8727('0xb2')]];break;default:if(_0x5c9024[_0x8727('0x79')]){ut[_0x8727('0xbf')](_0x2d7dd3,_0x8727('0xf5'));ut['loggerError'](_0x8727('0xf6')+_0x2d7dd3[_0x8727('0x2b')],_0x29da1c);}_0x2d7dd3[_0x8727('0xee')]+=0x1;_0x5c9024[_0x8727('0xa0')]=ut[_0x8727('0xa1')](_0x5c9024);ut[_0x8727('0x95')](_0x5c9024,0xc,_0x29da1c[_0x8727('0xef')]||_0x29da1c[_0x8727('0xf0')]);_0x4de3f0=_0x2d7dd3[_0x8727('0xf7')];_0x1a16f8=_0x2d7dd3['callAdditionalPhoneAfterMin'];rpcDb['createCustomerHistory'](_0x5c9024,_0x8727('0xf8'));_0x55f8a2[_0x8727('0xa7')](_0x5c9024,'20',_0x2d7dd3)[_0x8727('0x87')](function(_0x3f4efd){_0x5c0c1b=_0x3f4efd[_0x8727('0xcc')]==0x1;if(!_0x5c0c1b){if(ut['totalGlobal'](_0x5c9024)>=_0x2d7dd3[_0x8727('0xa9')]){_0x2a92d6=ut[_0x8727('0xaa')](_0x5c9024,0xf,_0x8727('0xab'));rpcDb['createCustomerFinal'](_0x2a92d6,_0x8727('0xf9'));}else{rpcDb[_0x8727('0x97')](_0x5c9024,_0x8727('0xf9'));}delete this['actions'][_0x29da1c[_0x8727('0xb2')]];}else{_0x55f8a2['swapAdditionalPhones'](_0x5c9024,_0x4de3f0,_0x1a16f8)[_0x8727('0x87')](function(){});}});}if(!(_0x5c9024[_0x8727('0x79')]&&_0x24196b==='16')){ut[_0x8727('0x81')](_0x2d7dd3,'[callProgressDetectingCustomer]');logger[_0x8727('0x60')](_0x8727('0xfa'),_0x5c9024[_0x8727('0xc5')],_0x8727('0xc6'),_0x2d7dd3[_0x8727('0x2b')],_0x8727('0x77'),_0x2d7dd3[_0x8727('0x52')]);}if(_0x24196b!==_0x8727('0xfb')){delete this[_0x8727('0x16')][_0x29da1c[_0x8727('0xb2')]];delete this[_0x8727('0x16')][_0x29da1c[_0x8727('0xfc')]];}}};Preview[_0x8727('0xf')][_0x8727('0xfd')]=function(_0x136911,_0x246b3c,_0x29751a){if(_[_0x8727('0xfe')](_0x246b3c)&&_0x8727('0xff')!==typeof _0x246b3c){return;}if(_['isUndefined'](_0x29751a)&&_0x8727('0xff')!==typeof _0x29751a){return;}switch(_0x29751a[_0x8727('0x100')]){case'0':ut['logAgent'](_0x136911,0x0,_0x8727('0xa2'));rpcDb['createAgentHistory'](_0x136911,_0x8727('0x101'));break;case'3':ut[_0x8727('0x102')](_0x136911,0x3,_0x8727('0xd4'));rpcDb['createAgentHistory'](_0x136911,_0x8727('0x103'));break;case'5':ut[_0x8727('0x102')](_0x136911,0x5,_0x8727('0xc8'));rpcDb[_0x8727('0x104')](_0x136911,_0x8727('0x105'));break;case'8':ut[_0x8727('0x102')](_0x136911,0x8,_0x8727('0xda'));rpcDb[_0x8727('0x104')](_0x136911,_0x8727('0x106'));break;case'22':ut[_0x8727('0x102')](_0x136911,0x16,_0x8727('0x107'));rpcDb['createAgentHistory'](_0x136911,_0x8727('0x108'));break;default:ut[_0x8727('0x102')](_0x136911,0xc,_0x29751a[_0x8727('0x100')]);rpcDb[_0x8727('0x104')](_0x136911,_0x8727('0x106'));}ut[_0x8727('0x81')](_0x246b3c,'[callProgressDetectingAgent]');logger['info'](_0x8727('0x109'),_0x136911[_0x8727('0xc5')],_0x8727('0xc6'),_0x246b3c[_0x8727('0x2b')],'originated:\x20',_0x246b3c[_0x8727('0x52')]);delete this['actions'][_0x136911[_0x8727('0xc5')]];};Preview[_0x8727('0xf')][_0x8727('0xa7')]=function(_0x16c2b0,_0x240b14,_0x4bd379){return Promise['resolve']()['then'](cmHopperAdditionalPhone[_0x8727('0xa7')](_0x16c2b0,_0x240b14,_0x4bd379))[_0x8727('0x80')](logger['info'](_0x8727('0x10a')));};Preview['prototype'][_0x8727('0xb5')]=function(_0x258702,_0xba5ea9,_0x403593){return Promise[_0x8727('0x10b')]()[_0x8727('0x87')](cmHopperAdditionalPhone[_0x8727('0xb5')](_0x258702,_0xba5ea9,_0x403593))[_0x8727('0x80')](logger['info']('[swapAdditionalPhone]\x20'));};Preview[_0x8727('0xf')]['incrementPreviewCounters']=function(_0x42b601){return Promise[_0x8727('0x10b')]()[_0x8727('0x87')](cmHopperAdditionalPhone[_0x8727('0xb4')](_0x42b601))[_0x8727('0x80')](logger['info'](_0x8727('0x10c')));};Preview[_0x8727('0xf')]['checkInBlack']=function(_0x594814,_0x5198e3,_0x54982c,_0x45d1b7,_0x2d6257){var _0x412be7=this;return new Promise(function(_0x305ff6,_0x1b63e0){if(_['isNil'](_0x5198e3)||_['isNil'](_0x5198e3[_0x8727('0x10d')])||_['isNil'](_0x5198e3[_0x8727('0x10e')])||_[_0x8727('0x73')](_0x5198e3[_0x8727('0x10f')])){_0x1b63e0(ut[_0x8727('0x51')](_0x8727('0x110'),_0x45d1b7,_0x2d6257));return;}var _0x28c0a4=uuid['v4']();var _0x1e034e=_0x412be7[_0x8727('0x13')][_0x5198e3[_0x8727('0x75')][_0x8727('0x2b')]];var _0x60fd55=_0x54982c?_0x412be7[_0x8727('0x17')][_0x54982c]['id']:undefined;_0x412be7[_0x8727('0x16')][_0x28c0a4]=new Action(_0x5198e3,_0x1e034e,_0x28c0a4,_0x54982c,_0x60fd55);var _0x5eecc7=_0x412be7['actions'][_0x28c0a4];_0x5eecc7[_0x8727('0xd0')]=_0x45d1b7;_0x5eecc7[_0x8727('0xd1')]=_0x2d6257;_0x5eecc7['lookAgent']=_0x54982c;if(_[_0x8727('0x111')](_0x594814)){_0x412be7[_0x8727('0x112')](_0x5eecc7,_0x1e034e,_0x5198e3,_0x54982c)[_0x8727('0x87')](function(_0x3ab557){logger[_0x8727('0x60')](_0x8727('0x113'),'Queue:\x20'+_0x5eecc7[_0x8727('0x76')]+_0x8727('0x114')+_0x5eecc7[_0x8727('0xd2')],JSON[_0x8727('0x5c')](_0x3ab557));ami[_0x8727('0x28')](_0x8727('0x115'),ut[_0x8727('0xa4')](_0x5eecc7,'called',_0x412be7[_0x8727('0x13')][_0x5eecc7[_0x8727('0x76')]]));_0x305ff6(ut[_0x8727('0x51')]('Calling'));})[_0x8727('0x80')](function(_0x5a9d4b){ut[_0x8727('0x66')]('[Preview][execCall][failure]',_0x5a9d4b);_0x1b63e0(ut['message'](_0x8727('0x116'),_0x45d1b7,_0x2d6257));});}else{_0x1e034e['outboundBlacklistCallsDay']+=0x1;ut['logBlacklist'](_0x5eecc7);rpcDb[_0x8727('0x117')](_0x5eecc7,_0x8727('0x118'));delete _0x412be7['actions'][_0x28c0a4];_0x1b63e0(ut[_0x8727('0x51')](_0x8727('0x119'),_0x45d1b7,_0x2d6257));}});};Preview[_0x8727('0xf')][_0x8727('0x9c')]=function(_0x221093){return!_[_0x8727('0x73')](_0x221093)&&!_[_0x8727('0x73')](_0x221093[_0x8727('0x2b')])&&!_[_0x8727('0x73')](_0x221093[_0x8727('0x59')])&&_0x221093[_0x8727('0x59')]&&!_['isNil'](this[_0x8727('0x15')][util['format'](_0x8727('0x11a'),_0x221093['name'])])&&!_['isNil'](this['trunks'][util[_0x8727('0x5d')](_0x8727('0x11a'),_0x221093['name'])][_0x8727('0x7f')])&&(this['trunks'][util['format']('SIP/%s',_0x221093[_0x8727('0x2b')])][_0x8727('0x7f')]===_0x8727('0x11b')||this[_0x8727('0x15')][util['format'](_0x8727('0x11a'),_0x221093[_0x8727('0x2b')])][_0x8727('0x7f')]==='unmonitored');};Preview[_0x8727('0xf')][_0x8727('0x8c')]=function(_0x1fee50,_0x143cee){return this[_0x8727('0x11c')](_0x1fee50,_0x143cee)[_0x8727('0x87')](function(_0x1bd09e){return _[_0x8727('0x7a')](_0x1bd09e,[_0x8727('0x51')]);})[_0x8727('0x80')](function(_0x524653){if(_0x524653[_0x8727('0x11d')]){rpcDb[_0x8727('0x11e')](_0x1fee50);}if(_0x524653[_0x8727('0x59')]){rpcDb[_0x8727('0x8f')](_0x1fee50);}throw _['pick'](_0x524653,[_0x8727('0x51')]);});};Preview[_0x8727('0xf')][_0x8727('0x11c')]=function(_0x1a3d90,_0x56ef45){var _0x324d92=this;var _0x5a083e,_0x181801;return rpcDb['getContactPreview'](_0x1a3d90)[_0x8727('0x87')](function(_0xf90072){if(!_[_0x8727('0x73')](_0xf90072[0x0])){_0x181801=_0xf90072[0x0][_0x8727('0x11f')]?![]:!![];_0x5a083e=_0xf90072[0x0]['recallme']?!![]:![];_0x5a083e=_0x56ef45?!![]:_0x5a083e;}var _0x43d44d=_0x324d92['validateContact'](_0xf90072);if(_0x43d44d[_0x8727('0x120')]){rpcDb[_0x8727('0x121')](_['pick'](_0xf90072[0x0],[_0x8727('0x10f'),_0x8727('0x10e')]))[_0x8727('0x87')](function(_0x4ca8b7){_0x324d92['checkInBlack'](_0x4ca8b7,_0xf90072[0x0],_0x56ef45,_0x181801,_0x5a083e)[_0x8727('0x87')](function(_0x5e95a4){return _0x5e95a4;})[_0x8727('0x80')](function(_0x5ceb76){throw _0x5ceb76;});})[_0x8727('0x80')](function(_0x5b097e){ut[_0x8727('0x66')](_0x8727('0x122'),_0x5b097e);throw ut[_0x8727('0x51')]('Call\x20unsuccessful',_0x181801,_0x5a083e);});}else{throw ut[_0x8727('0x51')](_0x43d44d[_0x8727('0x51')],_0x181801,_0x5a083e);}})[_0x8727('0x80')](function(_0x4ce3bb){ut['logger']('[Preview][getContactPreview]',_0x4ce3bb);throw ut['message'](_0x8727('0x123'),![],!![]);});};Preview[_0x8727('0xf')]['validateContact']=function(_0x50b615){if(_[_0x8727('0x73')](_0x50b615)||_[_0x8727('0x111')](_0x50b615)||!_[_0x8727('0x73')](_0x50b615[0x0][_0x8727('0x8a')])&&_[_0x8727('0x73')](_0x50b615[0x0][_0x8727('0x8a')][_0x8727('0x2b')])){ut['logger'](_0x8727('0x124'),_0x50b615);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x419a84=this[_0x8727('0x13')][_0x50b615[0x0][_0x8727('0x75')]['name']];_0x419a84[_0x8727('0x51')]='ACTIVE';if(_[_0x8727('0x73')](_0x419a84)){ut[_0x8727('0x66')]('[Preview][validateContact][Empty\x20Campaign]',_0x419a84);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x8727('0x9c')](_0x419a84[_0x8727('0x58')])){ut[_0x8727('0x66')](_0x8727('0x125'),_0x8727('0x126')+_0x419a84[_0x8727('0x2b')]+_0x8727('0x127'));if(!this['isTrunkReachable'](_0x419a84[_0x8727('0x9d')])){ut[_0x8727('0x66')](_0x8727('0x125'),_0x419a84[_0x8727('0x2b')]+_0x8727('0x128'));return{'isValid':![],'message':_0x8727('0x129')};}}if(!ut[_0x8727('0x12a')](_0x419a84['dialActive'])){ut[_0x8727('0x66')]('[Preview][validateContact][Campaign\x20Active]',_0x419a84[_0x8727('0x2b')]+'\x20Not\x20Active');return{'isValid':![],'message':_0x8727('0x126')+_0x419a84['name']+_0x8727('0x12b')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x8727('0xf')][_0x8727('0x112')]=function(_0x18ebd0,_0x5c781c,_0x412de3,_0x3c9c91){var _0x4b487c=this;return new Promise(function(_0x546598,_0x5ad35d){var _0x5565a5=_0x18ebd0[_0x8727('0xc5')];var _0x66fb8=_0x4b487c['isTrunkReachable'](_0x5c781c['Trunk'])?util[_0x8727('0x5d')](_0x8727('0x12c'),_0x5c781c[_0x8727('0x58')][_0x8727('0x2b')],_['isNil'](_0x5c781c['dialPrefix'])?'':_0x5c781c[_0x8727('0x12d')]['trim']()||'',_0x5c781c['dialCutDigit']>0x0?_0x412de3[_0x8727('0x10e')][_0x8727('0x12e')](_0x5c781c[_0x8727('0x12f')]):_0x412de3[_0x8727('0x10e')]):util[_0x8727('0x5d')]('SIP/%s/%s%s',_[_0x8727('0x73')](_0x5c781c['TrunkBackup'])?_0x5c781c[_0x8727('0x58')][_0x8727('0x2b')]:_0x5c781c[_0x8727('0x9d')][_0x8727('0x2b')],_[_0x8727('0x73')](_0x5c781c[_0x8727('0x12d')])?'':_0x5c781c[_0x8727('0x12d')][_0x8727('0x130')]()||'',_0x5c781c['dialCutDigit']>0x0?_0x412de3[_0x8727('0x10e')][_0x8727('0x12e')](_0x5c781c[_0x8727('0x12f')]):_0x412de3[_0x8727('0x10e')]);var _0x529ad8=_0x4b487c[_0x8727('0x9c')](_0x5c781c[_0x8727('0x58')])?ut['getCallerId'](_0x5c781c[_0x8727('0x58')][_0x8727('0x5a')],_0x5c781c[_0x8727('0x38')],_0x5c781c['dialRandomLastDigitCallerIdNumber']>0x0?ut['getCallerIdRandom'](_0x5c781c[_0x8727('0x39')],_0x5c781c['dialRandomLastDigitCallerIdNumber']):_0x5c781c[_0x8727('0x39')]):ut[_0x8727('0x131')](_[_0x8727('0x73')](_0x5c781c[_0x8727('0x9d')])?_0x5c781c[_0x8727('0x58')][_0x8727('0x5a')]:_0x5c781c[_0x8727('0x9d')][_0x8727('0x5a')],_0x5c781c[_0x8727('0x38')],_0x5c781c[_0x8727('0x132')]>0x0?ut[_0x8727('0x133')](_0x5c781c[_0x8727('0x39')],_0x5c781c[_0x8727('0x132')]):_0x5c781c[_0x8727('0x39')]);if(_0x529ad8){_0x18ebd0[_0x8727('0x134')]=ut[_0x8727('0x135')](_0x529ad8);_0x18ebd0[_0x8727('0x136')]=ut[_0x8727('0x137')](_0x529ad8);}var _0x61c637=ut[_0x8727('0x138')](_0x5c781c,_0x412de3,_0x66fb8,_0x529ad8,_0x5565a5,_0x18ebd0);_[_0x8727('0x139')](_0x18ebd0,ut[_0x8727('0x13a')](_0x61c637));_0x18ebd0['starttime']=moment()[_0x8727('0x5d')](_0x8727('0xb6'));_0x5c781c[_0x8727('0x13b')]=_0x61c637;ami[_0x8727('0x7e')](ut['variablesAction'](_0x18ebd0,_0x5c781c,_0x61c637,_0x18ebd0[_0x8727('0xd1')],_0x3c9c91))[_0x8727('0x87')](function(_0x4f703a){_0x5c781c[_0x8727('0x52')]+=0x1;logger[_0x8727('0x60')](_0x8727('0x13c'),_0x5565a5,_0x8727('0xc6'),_0x5c781c[_0x8727('0x2b')],'originated:\x20',_0x5c781c['originated']);_0x546598(_0x4f703a);})[_0x8727('0x80')](function(_0x5e3867){ut[_0x8727('0x102')](_0x18ebd0,0xe,_0x8727('0x13d'));rpcDb[_0x8727('0x104')](_0x18ebd0,_0x8727('0x13e'));_0x5ad35d(_0x5e3867);});});};Preview[_0x8727('0xf')][_0x8727('0x22')]=function(_0x25103d){if(this[_0x8727('0x16')][_0x25103d[_0x8727('0xb2')]]){this[_0x8727('0x16')][_0x25103d[_0x8727('0xb2')]][_0x8727('0x13f')]=_0x25103d[_0x8727('0x13f')];}};Preview[_0x8727('0xf')]['syncOriginateResponse']=function(_0x55b3db){var _0x56ea14=this;var _0x47261a=this[_0x8727('0x16')][_0x55b3db[_0x8727('0x140')]];if(_0x47261a){if(_0x47261a['lookAgent']&&this[_0x8727('0x17')][_0x47261a[_0x8727('0x141')]]){ut['logLookAgent'](_0x47261a,this[_0x8727('0x17')][_0x47261a['lookAgent']][_0x8727('0x2b')],this[_0x8727('0x17')][_0x47261a['lookAgent']]['id']);}var _0x12f8fe=_[_0x8727('0x142')](_0x47261a);_0x12f8fe['responsetime']=moment()['format'](_0x8727('0xb6'));var _0xe8bdd2=_0x56ea14[_0x8727('0x13')][_0x47261a[_0x8727('0x76')]];if(ut[_0x8727('0x143')](_0x55b3db[_0x8727('0x144')])){if(_0x47261a[_0x8727('0xd0')]){rpcDb[_0x8727('0x11e')](_0x47261a[_0x8727('0xd2')]);}if(_0x47261a[_0x8727('0xd1')]){rpcDb[_0x8727('0x8f')](_0x47261a[_0x8727('0xd2')]);}ami[_0x8727('0x28')]('custom:agentringnoanswer',ut['buildObj'](_0x47261a,'rejected',this[_0x8727('0x13')][_0x47261a[_0x8727('0x76')]]));this[_0x8727('0xfd')](_0x12f8fe,_0xe8bdd2,_0x55b3db);}else{_0x47261a['starttime']=moment()[_0x8727('0x5d')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0x8727('0x102')](_0x12f8fe,0x4,_0x8727('0xc1'));rpcDb[_0x8727('0x104')](_0x12f8fe,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0x8727('0xf')][_0x8727('0x1d')]=function(_0xa79231){var _0x773c90=this['actions'][_0xa79231[_0x8727('0xb2')]];var _0x58c018;if(_0x773c90){_0x58c018=this[_0x8727('0x13')][_0x773c90[_0x8727('0x76')]];logger[_0x8727('0x60')]('[syncHangup][talking]',_0xa79231[_0x8727('0xb2')],'\x20Queue',_0x58c018[_0x8727('0x2b')],_0x8727('0x78'),_0x58c018[_0x8727('0x2f')]);}if(this[_0x8727('0x16')][_0xa79231[_0x8727('0xb2')]]&&_0xa79231[_0x8727('0xb2')]!==_0xa79231[_0x8727('0xc5')]){if(_0xa79231[_0x8727('0x145')]==='16'&&this[_0x8727('0x16')][_0xa79231[_0x8727('0xb2')]][_0x8727('0x79')]){this[_0x8727('0x146')](_0xa79231,_0xa79231['linkedid'],_0xa79231[_0x8727('0x145')]);}else if(this[_0x8727('0x16')][_0xa79231['linkedid']][_0x8727('0x79')]){logger['info'](_0x8727('0x147'),_0xa79231[_0x8727('0xb2')],_0xa79231[_0x8727('0x145')],'\x20Queue',_0x58c018[_0x8727('0x2b')],_0x8727('0x78'),_0x58c018[_0x8727('0x2f')]);this[_0x8727('0x146')](_0xa79231,_0xa79231[_0x8727('0xb2')],_0xa79231[_0x8727('0x145')]);}}else if(_0x773c90&&_['isNil'](_0x773c90[_0x8727('0x148')])&&_0x58c018[_0x8727('0x149')]&&_0xa79231[_0x8727('0xb2')]===_0xa79231['uniqueid']&&_[_0x8727('0x73')](_0xa79231[_0x8727('0x100')])&&_0xa79231[_0x8727('0x145')]==='16'&&_0xa79231[_0x8727('0x14a')]==='6'&&_[_0x8727('0xfe')](_0x773c90['transfer'])){if(_0x773c90[_0x8727('0xd0')]){rpcDb[_0x8727('0x11e')](_0x773c90[_0x8727('0xd2')]);}if(_0x773c90[_0x8727('0xd1')]){rpcDb[_0x8727('0x8f')](_0x773c90[_0x8727('0xd2')]);}_0xa79231[_0x8727('0x100')]='22';this[_0x8727('0xfd')](_0x773c90,_0x58c018,_0xa79231);}else if(_0x773c90&&_0x773c90['transfer']){if(_0xa79231['cause']==='16'&&this[_0x8727('0x16')][_0xa79231[_0x8727('0xb2')]][_0x8727('0x79')]){logger[_0x8727('0x60')](_0x8727('0x14b'),_0xa79231[_0x8727('0xb2')],_0xa79231[_0x8727('0x145')],'\x20Queue',_0x58c018[_0x8727('0x2b')],'pTalking:\x20',_0x58c018['pTalking']);this[_0x8727('0x146')](_0xa79231,_0xa79231[_0x8727('0xb2')],_0xa79231[_0x8727('0x145')]);}else if(this['actions'][_0xa79231['linkedid']][_0x8727('0x79')]){logger['info'](_0x8727('0x147'),_0xa79231[_0x8727('0xb2')],_0xa79231['cause'],'\x20Queue',_0x58c018[_0x8727('0x2b')],_0x8727('0x78'),_0x58c018[_0x8727('0x2f')]);this[_0x8727('0x146')](_0xa79231,_0xa79231['linkedid'],_0xa79231['cause']);}}};Preview[_0x8727('0xf')][_0x8727('0x20')]=function(_0x510962){if(this['actions'][_0x510962[_0x8727('0xfc')]]&&_0x510962['destlinkedid']!==_0x510962[_0x8727('0x14c')]){this[_0x8727('0x146')](_0x510962,_0x510962[_0x8727('0xfc')],_0x510962[_0x8727('0xf0')]);}};Preview[_0x8727('0xf')]['syncHangupRequest']=function(_0x3a0647){if(this['actions'][_0x3a0647[_0x8727('0xb2')]]&&_0x3a0647[_0x8727('0xb2')]!==_0x3a0647['uniqueid']&&!this[_0x8727('0x16')][_0x3a0647['linkedid']]['dialAnswer']){if(_0x3a0647['cause']==='1'){this[_0x8727('0x146')](_0x3a0647,_0x3a0647['linkedid'],_0x3a0647[_0x8727('0x145')]);}}};Preview[_0x8727('0xf')][_0x8727('0x14d')]=function(_0x525ed6,_0x2fe47c,_0x35500f){if(this['actions'][_0x525ed6]){if(_[_0x8727('0x73')](this['actions'][_0x525ed6]['variables'])){this[_0x8727('0x16')][_0x525ed6][_0x8727('0x13b')]={};}this[_0x8727('0x16')][_0x525ed6][_0x8727('0x13b')][_0x2fe47c]=_0x35500f;}};Preview[_0x8727('0xf')][_0x8727('0x14e')]=function(_0x2e380f){try{if(!_['isNil'](_0x2e380f)){if(ut[_0x8727('0x14f')](_[_0x8727('0x150')](_0x2e380f['variable'])[0x0])){this['addVariable'](_0x2e380f[_0x8727('0xc5')],_[_0x8727('0x150')](_0x2e380f[_0x8727('0x151')])[0x0],_0x2e380f[_0x8727('0x152')]);}}}catch(_0x78dd27){logger[_0x8727('0x153')](_0x8727('0x154'),util[_0x8727('0x155')](_0x78dd27,{'showHidden':![],'depth':null}));}};Preview[_0x8727('0xf')][_0x8727('0x156')]=function(_0x4428b0){if(_0x4428b0){if(this[_0x8727('0x16')][_0x4428b0[_0x8727('0x157')]]){this[_0x8727('0x16')][_0x4428b0['transfertargetlinkedid']][_0x8727('0x158')]=!![];}}};Preview[_0x8727('0xf')][_0x8727('0x26')]=function(_0x590a9f){if(_0x590a9f){if(this['actions'][_0x590a9f['transfererlinkedid']]){this['actions'][_0x590a9f['transfererlinkedid']][_0x8727('0x158')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index d988761..faf38cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc34=['endtime','connectedlinename','context','from-sip','xcally-motion-preview','holdtime','assigned','lastAssignedTo','membername','queuecallerexitreason','COMPLETED','create','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','UserId','active','rescheduleContact','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercompleteAt'];(function(_0x15a26f,_0xcc465e){var _0x1457f6=function(_0x29a833){while(--_0x29a833){_0x15a26f['push'](_0x15a26f['shift']());}};_0x1457f6(++_0xcc465e);}(_0xfc34,0xf8));var _0x4fc3=function(_0x1a422a,_0x3468fd){_0x1a422a=_0x1a422a-0x0;var _0x4dcab4=_0xfc34[_0x1a422a];return _0x4dcab4;};'use strict';var util=require('util');var BPromise=require(_0x4fc3('0x0'));var logger=require(_0x4fc3('0x1'))(_0x4fc3('0x2'));var _=require(_0x4fc3('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0x4fc3('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x4fc3('0x5'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x4fc3('0x6'));var voiceQueueReport=require(_0x4fc3('0x7'));function loggerCatch(_0x1a6eaf){return function(_0x294a13){logger[_0x4fc3('0x8')](_0x1a6eaf,util[_0x4fc3('0x9')](_0x294a13,{'showHidden':![],'depth':null}));};}function create(_0x5bb03e){return BPromise[_0x4fc3('0xa')]()[_0x4fc3('0xb')](cmHopperHistory[_0x4fc3('0xc')](_0x5bb03e))[_0x4fc3('0xd')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x41c04c){return BPromise['resolve']()[_0x4fc3('0xb')](agentReportPreview['createHistory'](_0x41c04c))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0xe')));}function moveContact(_0x5529d0){return BPromise[_0x4fc3('0xa')]()[_0x4fc3('0xb')](cmHopper[_0x4fc3('0xf')](_0x5529d0,!![]))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0x10')));}exports[_0x4fc3('0x11')]=function(_0x3cc483){return BPromise[_0x4fc3('0xa')]()['then'](cmHopperBlack[_0x4fc3('0x11')](_0x3cc483))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0x12')));};exports['getContactPreview']=function(_0x3c223d){return BPromise['resolve']()[_0x4fc3('0xb')](cmHopper[_0x4fc3('0x13')](_0x3c223d))['catch'](loggerCatch(_0x4fc3('0x14')));};exports[_0x4fc3('0xc')]=function(_0x4ac22c,_0x3a7774){create(_0x4ac22c)[_0x4fc3('0xd')](loggerCatch(_0x3a7774));moveContact(_0x4ac22c)[_0x4fc3('0xd')](loggerCatch(_0x3a7774));};exports['createAgentHistory']=function(_0x27b6c0,_0x242018){createAgent(_0x27b6c0)[_0x4fc3('0xd')](loggerCatch(_0x242018));};exports[_0x4fc3('0x15')]=function(_0x25c28d,_0x31564b){create(_0x25c28d)['catch'](loggerCatch(_0x31564b));};exports[_0x4fc3('0x16')]=function(_0x425398,_0x2a4d2d){moveContact(_0x425398)[_0x4fc3('0xd')](loggerCatch(_0x2a4d2d));};exports['rescheduleContact']=function(_0x340345,_0x3127b6,_0x4da934){if(_0x3127b6){_0x340345[_0x4fc3('0x17')]=null;}if(_0x4da934){_0x340345[_0x4fc3('0x18')]=![];}return BPromise['resolve']()[_0x4fc3('0xb')](cmHopper[_0x4fc3('0x19')](_0x340345))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0x1a')));};exports[_0x4fc3('0x1b')]=function(_0x47f853){return BPromise[_0x4fc3('0xa')]()[_0x4fc3('0xb')](cmHopper[_0x4fc3('0x1b')](_0x47f853))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0x1c')));};exports['unlockContact']=function(_0x7ef82e){return BPromise['resolve']()[_0x4fc3('0xb')](cmHopper[_0x4fc3('0x1d')]({'UserId':null},_0x7ef82e,0x1))[_0x4fc3('0xd')](loggerCatch('[unlockContact]\x20'));};exports[_0x4fc3('0x1e')]=function(_0x372a07){return BPromise[_0x4fc3('0xa')]()[_0x4fc3('0xb')](cmHopper['unlockContact']({'active':![]},_0x372a07,0x1))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0x1f')));};exports[_0x4fc3('0x20')]=function(_0x20c5f6){var _0x1782c3={};_0x1782c3['type']=_0x20c5f6[_0x4fc3('0x21')];_0x1782c3[_0x4fc3('0x22')]=_0x20c5f6[_0x4fc3('0x22')];_0x1782c3[_0x4fc3('0x23')]=_0x20c5f6[_0x4fc3('0x23')];_0x1782c3[_0x4fc3('0x24')]=_0x20c5f6[_0x4fc3('0x24')];_0x1782c3['queue']=_0x20c5f6[_0x4fc3('0x25')];_0x1782c3[_0x4fc3('0x26')]=_0x20c5f6[_0x4fc3('0x27')];_0x1782c3[_0x4fc3('0x28')]=_0x20c5f6['answertime'];_0x1782c3['queuecallercomplete']=0x1;_0x1782c3[_0x4fc3('0x29')]=_0x20c5f6[_0x4fc3('0x2a')];_0x1782c3[_0x4fc3('0x2b')]=_0x20c5f6['membername'];_0x1782c3[_0x4fc3('0x2c')]=_0x4fc3('0x2d');_0x1782c3['exten']=_0x4fc3('0x2e');_0x1782c3[_0x4fc3('0x2f')]=0x0;_0x1782c3[_0x4fc3('0x30')]=0x1;_0x1782c3[_0x4fc3('0x31')]=_0x20c5f6[_0x4fc3('0x32')];_0x1782c3[_0x4fc3('0x33')]=_0x4fc3('0x34');return BPromise[_0x4fc3('0xa')]()[_0x4fc3('0xb')](voiceQueueReport[_0x4fc3('0x35')](_0x1782c3))['catch'](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x4fc3('0x36')]=function(_0x4257cd,_0xae7277){return BPromise['resolve']()['then'](cmHopper['getContactRecallMe'](_0x4257cd,_0xae7277))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0x37')));};exports[_0x4fc3('0x38')]=function(_0x1e29c6){return BPromise[_0x4fc3('0xa')]()[_0x4fc3('0xb')](cmHopper[_0x4fc3('0x19')](_0x1e29c6,!![],!![]))[_0x4fc3('0xd')](loggerCatch(_0x4fc3('0x39')));};
\ No newline at end of file
+var _0x9194=['../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','[createHistory]\x20','[moveContactManagedDialer]\x20','checkIsBlackList','catch','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack'];(function(_0x558a50,_0x4cc69d){var _0x872e23=function(_0x1581bd){while(--_0x1581bd){_0x558a50['push'](_0x558a50['shift']());}};_0x872e23(++_0x4cc69d);}(_0x9194,0xdf));var _0x4919=function(_0xfbadeb,_0x30e348){_0xfbadeb=_0xfbadeb-0x0;var _0x707ec4=_0x9194[_0xfbadeb];return _0x707ec4;};'use strict';var util=require(_0x4919('0x0'));var BPromise=require(_0x4919('0x1'));var logger=require(_0x4919('0x2'))(_0x4919('0x3'));var _=require(_0x4919('0x4'));var cmHopper=require(_0x4919('0x5'));var cmHopperFinal=require(_0x4919('0x6'));var cmHopperHistory=require(_0x4919('0x7'));var cmHopperBlack=require(_0x4919('0x8'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x4919('0x9'));var voiceQueueReport=require(_0x4919('0xa'));function loggerCatch(_0x3893e1){return function(_0xfd0949){logger[_0x4919('0xb')](_0x3893e1,util[_0x4919('0xc')](_0xfd0949,{'showHidden':![],'depth':null}));};}function create(_0x19238e){return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](cmHopperHistory[_0x4919('0xf')](_0x19238e))['catch'](loggerCatch('[createHistory]\x20'));}function createAgent(_0x10075c){return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](agentReportPreview['createHistory'](_0x10075c))['catch'](loggerCatch(_0x4919('0x10')));}function moveContact(_0x4b0fd7){return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](cmHopper['moveContactManagedDialer'](_0x4b0fd7,!![]))['catch'](loggerCatch(_0x4919('0x11')));}exports[_0x4919('0x12')]=function(_0x7652d0){return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](cmHopperBlack[_0x4919('0x12')](_0x7652d0))[_0x4919('0x13')](loggerCatch(_0x4919('0x14')));};exports[_0x4919('0x15')]=function(_0x545188){return BPromise['resolve']()['then'](cmHopper[_0x4919('0x15')](_0x545188))[_0x4919('0x13')](loggerCatch(_0x4919('0x16')));};exports[_0x4919('0xf')]=function(_0x9b0d2e,_0xfbce77){create(_0x9b0d2e)['catch'](loggerCatch(_0xfbce77));moveContact(_0x9b0d2e)[_0x4919('0x13')](loggerCatch(_0xfbce77));};exports[_0x4919('0x17')]=function(_0x410858,_0x42197a){createAgent(_0x410858)[_0x4919('0x13')](loggerCatch(_0x42197a));};exports['createCustomerHistory']=function(_0x562d88,_0x231293){create(_0x562d88)[_0x4919('0x13')](loggerCatch(_0x231293));};exports[_0x4919('0x18')]=function(_0x5e6b28,_0x51ab20){moveContact(_0x5e6b28)[_0x4919('0x13')](loggerCatch(_0x51ab20));};exports[_0x4919('0x19')]=function(_0x1ca694,_0xe4db17,_0x53a818){if(_0xe4db17){_0x1ca694[_0x4919('0x1a')]=null;}if(_0x53a818){_0x1ca694[_0x4919('0x1b')]=![];}return BPromise['resolve']()[_0x4919('0xe')](cmHopper[_0x4919('0x19')](_0x1ca694))['catch'](loggerCatch(_0x4919('0x1c')));};exports[_0x4919('0x1d')]=function(_0x17f086){return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](cmHopper[_0x4919('0x1d')](_0x17f086))[_0x4919('0x13')](loggerCatch(_0x4919('0x1e')));};exports[_0x4919('0x1f')]=function(_0x2ecfcb){return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](cmHopper[_0x4919('0x1f')]({'UserId':null},_0x2ecfcb,0x1))[_0x4919('0x13')](loggerCatch('[unlockContact]\x20'));};exports['disableContact']=function(_0xceb253){return BPromise['resolve']()[_0x4919('0xe')](cmHopper[_0x4919('0x1f')]({'active':![]},_0xceb253,0x1))[_0x4919('0x13')](loggerCatch(_0x4919('0x20')));};exports[_0x4919('0x21')]=function(_0x407a9a){var _0x5bbd33={};_0x5bbd33[_0x4919('0x22')]=_0x407a9a['type'];_0x5bbd33[_0x4919('0x23')]=_0x407a9a[_0x4919('0x23')];_0x5bbd33['calleridnum']=_0x407a9a[_0x4919('0x24')];_0x5bbd33['calleridname']=_0x407a9a[_0x4919('0x25')];_0x5bbd33[_0x4919('0x26')]=_0x407a9a['queue'];_0x5bbd33[_0x4919('0x27')]=_0x407a9a[_0x4919('0x28')];_0x5bbd33['queuecallerleaveAt']=_0x407a9a[_0x4919('0x28')];_0x5bbd33[_0x4919('0x29')]=0x1;_0x5bbd33[_0x4919('0x2a')]=_0x407a9a[_0x4919('0x2b')];_0x5bbd33[_0x4919('0x2c')]=_0x407a9a['membername'];_0x5bbd33[_0x4919('0x2d')]=_0x4919('0x2e');_0x5bbd33[_0x4919('0x2f')]=_0x4919('0x30');_0x5bbd33[_0x4919('0x31')]=0x0;_0x5bbd33[_0x4919('0x32')]=0x1;_0x5bbd33[_0x4919('0x33')]=_0x407a9a['membername'];_0x5bbd33[_0x4919('0x34')]=_0x4919('0x35');return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](voiceQueueReport[_0x4919('0x36')](_0x5bbd33))[_0x4919('0x13')](loggerCatch(_0x4919('0x37')));};exports[_0x4919('0x38')]=function(_0x326f16,_0x472f38){return BPromise['resolve']()['then'](cmHopper[_0x4919('0x38')](_0x326f16,_0x472f38))[_0x4919('0x13')](loggerCatch('[GetContactRecallMe]\x20'));};exports['rescheduleContactInQueue']=function(_0x370dcc){return BPromise[_0x4919('0xd')]()[_0x4919('0xe')](cmHopper['rescheduleContact'](_0x370dcc,!![],!![]))['catch'](loggerCatch(_0x4919('0x39')));};
\ No newline at end of file
index a081886..eaa0a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ac=['isNil','addVariables','Queue','calleridname','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','logLookAgent','membername','UserId','logCustomer','isFailure','Failure','variablesAction','RECALL','BOOKED','originate','calleridnum','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','active','scheduledat','add','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','interface','channelAgent','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','queue','agentReadyId','not_inuse','status','reachable','push','getDiff','diff','createBody','filterKey','type','campaigntype','dialAnswer','countnoanswerretry','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-queue','xmd-listid','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-cdrtype','xmd-agiafter','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosrtt','bridgepeer','getCallerIdRandom','pow','replace','random','match','extractCalleridNumber','variables','keys','buildNoAnswerEventPayload','util','../../../../config/logger','preview','env','XCALLY_IP_AGI','milliseconds','seconds','loggerCatch','error','inspect','logger','loggerError','logger2','info','message','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive'];(function(_0x6333c6,_0x399664){var _0x23d92f=function(_0x1c4abb){while(--_0x1c4abb){_0x6333c6['push'](_0x6333c6['shift']());}};_0x23d92f(++_0x399664);}(_0x24ac,0x7c));var _0xc24a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x24ac[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xc24a('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0xc24a('0x1'))(_0xc24a('0x2'));var ipAgi=process[_0xc24a('0x3')][_0xc24a('0x4')]||'127.0.0.1';function getSeconds(_0x29d15a,_0xa21901){var _0x2e7fe7=moment(_0x29d15a)['milliseconds'](0x0);var _0x1f58e0=moment(_0xa21901)[_0xc24a('0x5')](0x0);return _0x2e7fe7['diff'](_0x1f58e0,_0xc24a('0x6'));}exports[_0xc24a('0x7')]=function(_0x2d8c9e){return function(_0x2b29a0){logger[_0xc24a('0x8')](_0x2d8c9e,util[_0xc24a('0x9')](_0x2b29a0,{'showHidden':![],'depth':null}));};};exports[_0xc24a('0xa')]=function(_0x4eb43f,_0x180abc){logger['info'](_0x4eb43f,util[_0xc24a('0x9')](_0x180abc,{'showHidden':![],'depth':null}));};exports[_0xc24a('0xb')]=function(_0x27c232,_0x2bab79){logger[_0xc24a('0x8')](_0x27c232,util[_0xc24a('0x9')](_0x2bab79,{'showHidden':![],'depth':null}));};exports[_0xc24a('0xc')]=function(_0x28564e){return function(_0x28e348){logger[_0xc24a('0xd')](_0x28564e,util[_0xc24a('0x9')](_0x28e348,{'showHidden':![],'depth':null}));};};exports[_0xc24a('0xe')]=function(_0x3893f4,_0x3d844e,_0x34e9ab){return{'message':_0x3893f4,'unlock':_0x3d844e,'active':_0x34e9ab};};exports['getCallerId']=function(_0x1ce5cc,_0xb144e1,_0x11a04c){if(!_[_0xc24a('0xf')](_0x11a04c)&&_0xc24a('0x10')===typeof _0x11a04c&&!_[_0xc24a('0x11')](_0x11a04c)){if(!_[_0xc24a('0xf')](_0xb144e1)&&_0xc24a('0x10')===typeof _0xb144e1&&!_[_0xc24a('0x11')](_0xb144e1)){return util[_0xc24a('0x12')](_0xc24a('0x13'),_0xb144e1,_0x11a04c);}return util[_0xc24a('0x12')](_0xc24a('0x13'),_0x11a04c,_0x11a04c);}if(!_[_0xc24a('0xf')](_0x1ce5cc)&&'string'===typeof _0x1ce5cc&&!_[_0xc24a('0x11')](_0x1ce5cc)){return _0x1ce5cc;}return _0xc24a('0x14');};exports[_0xc24a('0x15')]=function(_0x27f610){if(_[_0xc24a('0x16')](_0x27f610)){return![];}return _0x27f610;};exports[_0xc24a('0x17')]=function(_0x102e88,_0x13e159,_0x4bddba,_0x500fcf,_0xbeff66,_0x3f7281){var _0x9c9f={'XMD-QUEUE':_0x13e159[_0xc24a('0x18')]?_0x13e159[_0xc24a('0x18')]['name']:'','XMD-CALLERID':_0x500fcf,'XMD-CALLERID-PREVIEW':_0x3f7281?util[_0xc24a('0x12')](_0xc24a('0x13'),_0x3f7281[_0xc24a('0x19')],_0x3f7281['calleridnum']):_0x500fcf,'XMD-DIALID':_0xbeff66,'XMD-CONTACTID':_0x13e159[_0xc24a('0x1a')],'XMD-CDRTYPE':_0xc24a('0x1b'),'CALLERID(all)':_0x500fcf,'XMD-VOICEQUEUEID':_0x13e159[_0xc24a('0x1c')],'XMD-DIALCHANNEL':_0x4bddba,'XMD-DIALTIMEOUT':_0x102e88['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0xc24a('0x12')](_0xc24a('0x1d'),_0x102e88['dialQueueProject2']?'g':'',_[_0xc24a('0x11')](_0x102e88[_0xc24a('0x1e')])?'':_0xc24a('0x1f')),'XMD-DIALURL':_0x102e88[_0xc24a('0x20')]||'','XMD-AGI':_0x102e88[_0xc24a('0x21')]?util[_0xc24a('0x12')](_0xc24a('0x22'),ipAgi,_0x102e88[_0xc24a('0x21')]):_0xc24a('0x23'),'XMD-AGIAFTER':_0x102e88['dialQueueProject2']?util[_0xc24a('0x12')]('\x22agi://%s/square,%s\x22',ipAgi,_0x102e88[_0xc24a('0x24')]):_0xc24a('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x3f7281?_0x3f7281[_0xc24a('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x3f7281?_0x3f7281[_0xc24a('0x26')]:'','XMD-DESTINATION':_0xc24a('0x27'),'SIPADDHEADER':_0xc24a('0x28')};if(!_[_0xc24a('0x11')](_0x102e88[_0xc24a('0x1e')])){_0x9c9f[util[_0xc24a('0x12')]('%s',_0xc24a('0x29'))]=_0x102e88['monitor_format'];_0x9c9f[util['format']('%s',_0xc24a('0x2a'))]=_0xbeff66;}if(_0x13e159&&_0x13e159[_0xc24a('0x2b')]){for(var _0x41b06c in _0x13e159['Contact']){if(_0x13e159[_0xc24a('0x2b')][_0xc24a('0x2c')](_0x41b06c)){if(!_[_0xc24a('0x16')](_0x13e159[_0xc24a('0x2b')][_0x41b06c])&&_0x41b06c!=='id'&&_0x41b06c!==_0xc24a('0x2d')&&_0x41b06c!=='createdAt'&&_0x41b06c!==_0xc24a('0x2e')){_0x9c9f[util['format'](_0xc24a('0x2f'),_0xc24a('0x30'),_[_0xc24a('0x31')](_0x41b06c))]=_0x13e159[_0xc24a('0x2b')][_0x41b06c];}}}}return _0x9c9f;};exports[_0xc24a('0x32')]=function(_0x73f4e4){var _0x3ce8b9={};for(var _0x56a00e in _0x73f4e4){if(_0x73f4e4[_0xc24a('0x2c')](_0x56a00e)){_0x3ce8b9[util[_0xc24a('0x12')]('%s',_[_0xc24a('0x33')](_0x56a00e))]=_0x73f4e4[_0x56a00e];}}return{'variables':_0x3ce8b9};};exports[_0xc24a('0x34')]=function(_0x3b46d9,_0x194467){if(!_[_0xc24a('0x16')](_0x3b46d9)){if(_0x3b46d9[_0xc24a('0x2c')](_0xc24a('0x35'))){if(_0x3b46d9[_0xc24a('0x35')]>0x0){_0x3b46d9[_0xc24a('0x35')]-=0x1;}else{logger[_0xc24a('0x8')](_0xc24a('0x36'),_0x194467);}}}else{logger[_0xc24a('0x8')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x194467);}};exports[_0xc24a('0x37')]=function(_0x5372a5){var _0x4f3cff=moment()[_0xc24a('0x12')](_0xc24a('0x38'));_0x5372a5[_0xc24a('0x39')]=0xd;_0x5372a5[_0xc24a('0x3a')]=_0xc24a('0x3b');_0x5372a5[_0xc24a('0x3c')]=_0x4f3cff;_0x5372a5[_0xc24a('0x3d')]=_0x4f3cff;_0x5372a5[_0xc24a('0x3e')]=_0x4f3cff;};exports[_0xc24a('0x3f')]=function(_0x30f409,_0x2065cd,_0xa8774a){var _0xb4b430=moment()['format'](_0xc24a('0x38'));_0x30f409['state']=_0x2065cd;_0x30f409['statedesc']=_0xa8774a;_0x30f409[_0xc24a('0x3d')]=_0xb4b430;_0x30f409[_0xc24a('0x40')]=getSeconds(_0x30f409[_0xc24a('0x3d')],_0x30f409[_0xc24a('0x3c')]);};exports[_0xc24a('0x41')]=function(_0x4e76f1,_0x1dc692,_0x46ce66){_0x4e76f1[_0xc24a('0x42')]=_0x1dc692;_0x4e76f1[_0xc24a('0x43')]=_0x46ce66;};exports[_0xc24a('0x44')]=function(_0x30d7cb,_0x31ae13,_0x4b7868){var _0x524588=moment()['format'](_0xc24a('0x38'));_0x30d7cb['state']=_0x31ae13;_0x30d7cb[_0xc24a('0x3a')]=_0x4b7868;_0x30d7cb['responsetime']=_0x30d7cb['responsetime']?_0x30d7cb['responsetime']:_0x524588;_0x30d7cb['endtime']=_0x30d7cb[_0xc24a('0x3e')]?_0x30d7cb[_0xc24a('0x3e')]:_0x524588;_0x30d7cb['ringtime']=getSeconds(_0x30d7cb['responsetime']||0x0,_0x30d7cb[_0xc24a('0x3c')]||0x0);_0x30d7cb['talktime']=_0x30d7cb['answertime']?getSeconds(_0x30d7cb[_0xc24a('0x3e')],_0x30d7cb['answertime']):0x0;};exports[_0xc24a('0x45')]=function(_0x3fcca4){return _0x3fcca4===_0xc24a('0x46');};exports[_0xc24a('0x47')]=function(_0x4024d5,_0x3c584d,_0xac02e9,_0xab75c2,_0x45f8e){var _0x2e3db6=_0xab75c2?_0xc24a('0x48'):_0x4024d5[_0xc24a('0x19')];_0x2e3db6=_0x45f8e?_0xc24a('0x49'):_0x2e3db6;return{'actionid':_0x4024d5['uniqueid'],'action':_0xc24a('0x4a'),'channel':_0x4024d5['channelAgent'],'callerid':util[_0xc24a('0x12')](_0xc24a('0x13'),_0x2e3db6,_0x4024d5[_0xc24a('0x4b')]),'Exten':_0xc24a('0x27'),'Context':'from-sip','Priority':'1','variable':_0xac02e9,'timeout':(_0x3c584d[_0xc24a('0x4c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4024d5[_0xc24a('0x4d')]};};exports[_0xc24a('0x4e')]=function(_0x395502){return _0x395502[_0xc24a('0x4f')]+_0x395502[_0xc24a('0x50')]+_0x395502['countnoanswerretry']+_0x395502[_0xc24a('0x51')]+_0x395502[_0xc24a('0x52')];};exports[_0xc24a('0x53')]=function(_0x2c33ff){var _0x25b6e3=_[_0xc24a('0x54')](_0x2c33ff);_0x25b6e3['state']=0xf;_0x25b6e3[_0xc24a('0x3a')]=_0xc24a('0x55');return _0x25b6e3;};exports['scheduledAt']=function(_0x2bbfaf,_0x56f4fc,_0x793177){var _0x522fe5={};_0x522fe5[_0x56f4fc]=_0x2bbfaf[_0x56f4fc];_0x522fe5[_0xc24a('0x56')]=![];_0x522fe5[_0xc24a('0x57')]=moment()[_0xc24a('0x58')](_0x793177,'minutes')[_0xc24a('0x12')](_0xc24a('0x38'));_0x522fe5[_0xc24a('0x1a')]=_0x2bbfaf[_0xc24a('0x1a')];_0x522fe5[_0xc24a('0x59')]=_0x2bbfaf['ListId'];_0x522fe5[_0xc24a('0x1c')]=_0x2bbfaf[_0xc24a('0x1c')]||undefined;return _0x522fe5;};exports['decrementTalkink']=function(_0x23727a,_0x1adcda){if(!_[_0xc24a('0x16')](_0x23727a)){if(_0x23727a[_0xc24a('0x5a')]>0x0){_0x23727a[_0xc24a('0x5a')]-=0x1;}else{logger[_0xc24a('0x8')](_0x1adcda,_0xc24a('0x5b'));}}else{logger[_0xc24a('0x8')](_0x1adcda,_0xc24a('0x5c'));}};exports[_0xc24a('0x5d')]=function(_0x4fdf91){if(_0x4fdf91<=0x0){return!![];}return![];};function buildObj(_0x479571,_0x39bc78,_0x5717ed){_0x479571[_0xc24a('0x5e')]=_0x39bc78;_0x479571['name']=_0x479571['queue'];_0x479571[_0xc24a('0x5f')]=_0x479571[_0xc24a('0x60')];_0x479571[_0xc24a('0x61')]=_0xc24a('0x62');if(_0x5717ed){_0x479571[_0xc24a('0x63')]=_0x5717ed[_0xc24a('0x63')];}return _0x479571;}exports[_0xc24a('0x64')]=buildObj;exports[_0xc24a('0x65')]=function(_0x1f33b1){var _0x21ee95={};_0x21ee95['queue']=_0x1f33b1[_0xc24a('0x66')];_0x21ee95[_0xc24a('0x5f')]=_0x1f33b1[_0xc24a('0x60')];_0x21ee95['uniqueid']=_0x1f33b1[_0xc24a('0x4d')];return _0x21ee95;};exports[_0xc24a('0x67')]=function(_0x238a96){var _0x5596b9=[];for(var _0x46832c in _0x238a96){if(_0x238a96[_0xc24a('0x2c')](_0x46832c)){if(!_['isNil'](_0x238a96[_0x46832c])&&_0x238a96[_0x46832c][_0xc24a('0x39')]===_0xc24a('0x68')&&_0x238a96[_0x46832c][_0xc24a('0x69')]===_0xc24a('0x6a')){_0x5596b9[_0xc24a('0x6b')](_0x238a96[_0x46832c]['id']);}}}return _0x5596b9;};exports[_0xc24a('0x6c')]=function(_0x22286b){var _0xc2b5f5=moment()['milliseconds'](0x0);var _0x24c70f=moment(_0x22286b)[_0xc24a('0x5')](0x0);return _0xc2b5f5[_0xc24a('0x6d')](_0x24c70f,_0xc24a('0x6'));};exports[_0xc24a('0x6e')]=function(_0xd2d939){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0xd2d939['ContactId'],'ListId':_0xd2d939[_0xc24a('0x59')],'VoiceQueueId':_0xd2d939[_0xc24a('0x1c')]||undefined,'CampaignId':_0xd2d939['CampaignId']||undefined};};exports[_0xc24a('0x6f')]=function(_0x188dcf){if(_0x188dcf===_0xc24a('0x4d')||_0x188dcf==='idContact'||_0x188dcf==='queue'||_0x188dcf===_0xc24a('0x70')||_0x188dcf===_0xc24a('0x71')||_0x188dcf===_0xc24a('0x72')||_0x188dcf===_0xc24a('0x42')||_0x188dcf===_0xc24a('0x60')||_0x188dcf===_0xc24a('0x19')||_0x188dcf===_0xc24a('0x56')||_0x188dcf===_0xc24a('0x4b')||_0x188dcf===_0xc24a('0x57')||_0x188dcf===_0xc24a('0x4f')||_0x188dcf===_0xc24a('0x50')||_0x188dcf===_0xc24a('0x73')||_0x188dcf==='countglobal'||_0x188dcf===_0xc24a('0x74')||_0x188dcf===_0xc24a('0x75')||_0x188dcf===_0xc24a('0x76')||_0x188dcf===_0xc24a('0x77')||_0x188dcf===_0xc24a('0x1a')||_0x188dcf===_0xc24a('0x59')||_0x188dcf===_0xc24a('0x43')||_0x188dcf===_0xc24a('0x1c')||_0x188dcf===_0xc24a('0x78')||_0x188dcf==='xmd-voicequeueid'||_0x188dcf===_0xc24a('0x79')||_0x188dcf==='xmd-phone'||_0x188dcf===_0xc24a('0x7a')||_0x188dcf==='xmd-dialurl'||_0x188dcf===_0xc24a('0x7b')||_0x188dcf===_0xc24a('0x7c')||_0x188dcf===_0xc24a('0x7d')||_0x188dcf==='xmd-dialchannel'||_0x188dcf===_0xc24a('0x7e')||_0x188dcf===_0xc24a('0x7f')||_0x188dcf==='xmd-callerid'||_0x188dcf===_0xc24a('0x80')||_0x188dcf==='xmd-agi'||_0x188dcf==='rtpaudioqos'||_0x188dcf===_0xc24a('0x81')||_0x188dcf===_0xc24a('0x82')||_0x188dcf===_0xc24a('0x83')||_0x188dcf===_0xc24a('0x84')||_0x188dcf===_0xc24a('0x85')||_0x188dcf==='rtpaudioqosrtt'||_0x188dcf===_0xc24a('0x86')||_0x188dcf==='rtpaudioqos'||_0x188dcf===_0xc24a('0x81')||_0x188dcf==='rtpaudioqosjitter'||_0x188dcf===_0xc24a('0x83')||_0x188dcf==='rtpaudioqosloss'||_0x188dcf===_0xc24a('0x85')||_0x188dcf===_0xc24a('0x87')||_0x188dcf===_0xc24a('0x86')||_0x188dcf===_0xc24a('0x88')||_0x188dcf==='bridgepvtcallid'||_0x188dcf===_0xc24a('0x39')||_0x188dcf===_0xc24a('0x3a')){return![];}return!![];};exports[_0xc24a('0x89')]=function(_0x4793d5,_0x27c474){var _0x47c57c,_0x379264,_0x4eca07;if(_0x27c474<=0x0){_0x27c474=0x1;}_0x47c57c=new RegExp('\x5cw{0,'+_0x27c474+'}$');_0x379264=Math[_0xc24a('0x8a')](0xa,_0x27c474-0x1);_0x4eca07=Math[_0xc24a('0x8a')](0xa,_0x27c474)-0x1;return util[_0xc24a('0x12')]('%s',_[_0xc24a('0x8b')](_0x4793d5,_0x47c57c,_[_0xc24a('0x8c')](_0x379264,_0x4eca07)));};exports['extractCalleridName']=function(_0x1193a){var _0x51128f=_0x1193a[_0xc24a('0x8d')](/"(.*?)"/);return _0x51128f?_0x51128f[0x1]:_0x1193a;};exports[_0xc24a('0x8e')]=function(_0xeee3ee){var _0x423330=_0xeee3ee[_0xc24a('0x8d')](/<(.*?)>/);return _0x423330?_0x423330[0x1]:_0xeee3ee;};function buildNoAnswerEventPayload(_0x49029a,_0x227311){var _0x5955b3=buildObj(_0x49029a,'noanswer');if(!_[_0xc24a('0x11')](_0x227311[_0xc24a('0x8f')])){Object[_0xc24a('0x90')](_0x227311[_0xc24a('0x8f')])['forEach'](function(_0x552566){_0x5955b3[_0x552566['toLowerCase']()]=_0x227311[_0xc24a('0x8f')][_0x552566];});}return _0x5955b3;}exports[_0xc24a('0x91')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0xd326=['format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','name','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','\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','toUpper','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','statedesc','responsetime','endtime','logAgent','state','ringtime','starttime','logLookAgent','membername','UserId','talktime','answertime','Failure','BOOKED','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countcongestionretry','countnoanswerretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','scheduledat','add','minutes','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','lastevent','queue','interface','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','createBody','ListId','CampaignId','idContact','type','campaigntype','calleridname','active','countbusyretry','countglobal','callback','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosrtt','getCallerIdRandom','\x5cw{0,','pow','replace','extractCalleridName','match','extractCalleridNumber','noanswer','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload','util','../../../../config/logger','env','XCALLY_IP_AGI','milliseconds','diff','seconds','loggerCatch','error','inspect','logger','info','message','getCallerId','isUndefined','string','isEmpty'];(function(_0x4f5973,_0x5bfe3b){var _0x14ce7d=function(_0x2834e7){while(--_0x2834e7){_0x4f5973['push'](_0x4f5973['shift']());}};_0x14ce7d(++_0x5bfe3b);}(_0xd326,0x83));var _0x6d32=function(_0x222da6,_0x3b0217){_0x222da6=_0x222da6-0x0;var _0x53f9a4=_0xd326[_0x222da6];return _0x53f9a4;};'use strict';var util=require(_0x6d32('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0x6d32('0x1'))('preview');var ipAgi=process[_0x6d32('0x2')][_0x6d32('0x3')]||'127.0.0.1';function getSeconds(_0x581d91,_0x12d4bc){var _0x51295e=moment(_0x581d91)[_0x6d32('0x4')](0x0);var _0x5a989c=moment(_0x12d4bc)[_0x6d32('0x4')](0x0);return _0x51295e[_0x6d32('0x5')](_0x5a989c,_0x6d32('0x6'));}exports[_0x6d32('0x7')]=function(_0x1e7145){return function(_0x51f9b7){logger[_0x6d32('0x8')](_0x1e7145,util[_0x6d32('0x9')](_0x51f9b7,{'showHidden':![],'depth':null}));};};exports[_0x6d32('0xa')]=function(_0x17b948,_0x193bd4){logger[_0x6d32('0xb')](_0x17b948,util[_0x6d32('0x9')](_0x193bd4,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x31f03c,_0x3cea38){logger[_0x6d32('0x8')](_0x31f03c,util[_0x6d32('0x9')](_0x3cea38,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0xf4c5b8){return function(_0x4418e4){logger['info'](_0xf4c5b8,util[_0x6d32('0x9')](_0x4418e4,{'showHidden':![],'depth':null}));};};exports[_0x6d32('0xc')]=function(_0x3d42de,_0x24befe,_0x3a9b53){return{'message':_0x3d42de,'unlock':_0x24befe,'active':_0x3a9b53};};exports[_0x6d32('0xd')]=function(_0x172ffd,_0x5457e8,_0x435e70){if(!_[_0x6d32('0xe')](_0x435e70)&&_0x6d32('0xf')===typeof _0x435e70&&!_['isEmpty'](_0x435e70)){if(!_[_0x6d32('0xe')](_0x5457e8)&&_0x6d32('0xf')===typeof _0x5457e8&&!_[_0x6d32('0x10')](_0x5457e8)){return util[_0x6d32('0x11')](_0x6d32('0x12'),_0x5457e8,_0x435e70);}return util[_0x6d32('0x11')](_0x6d32('0x12'),_0x435e70,_0x435e70);}if(!_[_0x6d32('0xe')](_0x172ffd)&&_0x6d32('0xf')===typeof _0x172ffd&&!_[_0x6d32('0x10')](_0x172ffd)){return _0x172ffd;}return'\x22\x22\x20<>';};exports[_0x6d32('0x13')]=function(_0x3f01fa){if(_[_0x6d32('0x14')](_0x3f01fa)){return![];}return _0x3f01fa;};exports[_0x6d32('0x15')]=function(_0x4ee14d,_0x2cc45b,_0x3b9075,_0x15ee61,_0x5e01b6,_0x4e4ab0){var _0x15b0bc={'XMD-QUEUE':_0x2cc45b[_0x6d32('0x16')]?_0x2cc45b[_0x6d32('0x16')][_0x6d32('0x17')]:'','XMD-CALLERID':_0x15ee61,'XMD-CALLERID-PREVIEW':_0x4e4ab0?util[_0x6d32('0x11')](_0x6d32('0x12'),_0x4e4ab0['calleridname'],_0x4e4ab0[_0x6d32('0x18')]):_0x15ee61,'XMD-DIALID':_0x5e01b6,'XMD-CONTACTID':_0x2cc45b[_0x6d32('0x19')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x15ee61,'XMD-VOICEQUEUEID':_0x2cc45b[_0x6d32('0x1a')],'XMD-DIALCHANNEL':_0x3b9075,'XMD-DIALTIMEOUT':_0x4ee14d[_0x6d32('0x1b')]||0x1e,'XMD-DIALOPTIONS':util[_0x6d32('0x11')](_0x6d32('0x1c'),_0x4ee14d[_0x6d32('0x1d')]?'g':'',_['isEmpty'](_0x4ee14d[_0x6d32('0x1e')])?'':_0x6d32('0x1f')),'XMD-DIALURL':_0x4ee14d[_0x6d32('0x20')]||'','XMD-AGI':_0x4ee14d['dialQueueProject']?util['format'](_0x6d32('0x21'),ipAgi,_0x4ee14d['dialQueueProject']):_0x6d32('0x22'),'XMD-AGIAFTER':_0x4ee14d['dialQueueProject2']?util[_0x6d32('0x11')](_0x6d32('0x21'),ipAgi,_0x4ee14d[_0x6d32('0x1d')]):_0x6d32('0x22'),'XMD-ORIGINATECALLERIDNUM':_0x4e4ab0?_0x4e4ab0[_0x6d32('0x23')]:'','XMD-ORIGINATECALLERIDNAME':_0x4e4ab0?_0x4e4ab0[_0x6d32('0x24')]:'','XMD-DESTINATION':_0x6d32('0x25'),'SIPADDHEADER':_0x6d32('0x26')};if(!_[_0x6d32('0x10')](_0x4ee14d[_0x6d32('0x1e')])){_0x15b0bc[util[_0x6d32('0x11')]('%s',_0x6d32('0x27'))]=_0x4ee14d[_0x6d32('0x1e')];_0x15b0bc[util[_0x6d32('0x11')]('%s',_0x6d32('0x28'))]=_0x5e01b6;}if(_0x2cc45b&&_0x2cc45b['Contact']){for(var _0x1ed00d in _0x2cc45b[_0x6d32('0x29')]){if(_0x2cc45b[_0x6d32('0x29')][_0x6d32('0x2a')](_0x1ed00d)){if(!_[_0x6d32('0x14')](_0x2cc45b['Contact'][_0x1ed00d])&&_0x1ed00d!=='id'&&_0x1ed00d!==_0x6d32('0x2b')&&_0x1ed00d!==_0x6d32('0x2c')&&_0x1ed00d!==_0x6d32('0x2d')){_0x15b0bc[util['format'](_0x6d32('0x2e'),'XMD-',_[_0x6d32('0x2f')](_0x1ed00d))]=_0x2cc45b[_0x6d32('0x29')][_0x1ed00d];}}}}return _0x15b0bc;};exports['toLowerVariables']=function(_0x10fbff){var _0x52a550={};for(var _0x123f46 in _0x10fbff){if(_0x10fbff[_0x6d32('0x2a')](_0x123f46)){_0x52a550[util[_0x6d32('0x11')]('%s',_[_0x6d32('0x30')](_0x123f46))]=_0x10fbff[_0x123f46];}}return{'variables':_0x52a550};};exports[_0x6d32('0x31')]=function(_0x5d0dad,_0x1c6961){if(!_[_0x6d32('0x14')](_0x5d0dad)){if(_0x5d0dad[_0x6d32('0x2a')](_0x6d32('0x32'))){if(_0x5d0dad[_0x6d32('0x32')]>0x0){_0x5d0dad[_0x6d32('0x32')]-=0x1;}else{logger['error'](_0x6d32('0x33'),_0x1c6961);}}}else{logger[_0x6d32('0x8')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x1c6961);}};exports[_0x6d32('0x34')]=function(_0x36ac15){var _0x31d7dc=moment()[_0x6d32('0x11')](_0x6d32('0x35'));_0x36ac15['state']=0xd;_0x36ac15[_0x6d32('0x36')]='Blacklist';_0x36ac15['starttime']=_0x31d7dc;_0x36ac15[_0x6d32('0x37')]=_0x31d7dc;_0x36ac15[_0x6d32('0x38')]=_0x31d7dc;};exports[_0x6d32('0x39')]=function(_0x2ed8aa,_0x496465,_0x2073d6){var _0x47b32d=moment()[_0x6d32('0x11')](_0x6d32('0x35'));_0x2ed8aa[_0x6d32('0x3a')]=_0x496465;_0x2ed8aa['statedesc']=_0x2073d6;_0x2ed8aa[_0x6d32('0x37')]=_0x47b32d;_0x2ed8aa[_0x6d32('0x3b')]=getSeconds(_0x2ed8aa['responsetime'],_0x2ed8aa[_0x6d32('0x3c')]);};exports[_0x6d32('0x3d')]=function(_0xd89d42,_0x59bd3b,_0x36697f){_0xd89d42[_0x6d32('0x3e')]=_0x59bd3b;_0xd89d42[_0x6d32('0x3f')]=_0x36697f;};exports['logCustomer']=function(_0x1c3c15,_0x5ac9c5,_0x1bee45){var _0x5722a8=moment()['format'](_0x6d32('0x35'));_0x1c3c15[_0x6d32('0x3a')]=_0x5ac9c5;_0x1c3c15[_0x6d32('0x36')]=_0x1bee45;_0x1c3c15[_0x6d32('0x37')]=_0x1c3c15['responsetime']?_0x1c3c15[_0x6d32('0x37')]:_0x5722a8;_0x1c3c15[_0x6d32('0x38')]=_0x1c3c15[_0x6d32('0x38')]?_0x1c3c15[_0x6d32('0x38')]:_0x5722a8;_0x1c3c15['ringtime']=getSeconds(_0x1c3c15[_0x6d32('0x37')]||0x0,_0x1c3c15[_0x6d32('0x3c')]||0x0);_0x1c3c15[_0x6d32('0x40')]=_0x1c3c15[_0x6d32('0x41')]?getSeconds(_0x1c3c15[_0x6d32('0x38')],_0x1c3c15[_0x6d32('0x41')]):0x0;};exports['isFailure']=function(_0xca348b){return _0xca348b===_0x6d32('0x42');};exports['variablesAction']=function(_0x171b93,_0x2bdbf4,_0x26c43a,_0x155214,_0x3571d2){var _0x1d3231=_0x155214?'RECALL':_0x171b93['calleridname'];_0x1d3231=_0x3571d2?_0x6d32('0x43'):_0x1d3231;return{'actionid':_0x171b93[_0x6d32('0x44')],'action':_0x6d32('0x45'),'channel':_0x171b93[_0x6d32('0x46')],'callerid':util[_0x6d32('0x11')](_0x6d32('0x12'),_0x1d3231,_0x171b93[_0x6d32('0x18')]),'Exten':'xcally-motion-preview','Context':_0x6d32('0x47'),'Priority':'1','variable':_0x26c43a,'timeout':(_0x2bdbf4[_0x6d32('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x171b93['uniqueid']};};exports[_0x6d32('0x49')]=function(_0x416298){return _0x416298['countbusyretry']+_0x416298[_0x6d32('0x4a')]+_0x416298[_0x6d32('0x4b')]+_0x416298['countagentrejectretry']+_0x416298[_0x6d32('0x4c')];};exports[_0x6d32('0x4d')]=function(_0xf5f74a){var _0x51cd37=_['clone'](_0xf5f74a);_0x51cd37[_0x6d32('0x3a')]=0xf;_0x51cd37[_0x6d32('0x36')]=_0x6d32('0x4e');return _0x51cd37;};exports[_0x6d32('0x4f')]=function(_0x2c24e4,_0x59f4e3,_0x4b8df4){var _0x20c9b2={};_0x20c9b2[_0x59f4e3]=_0x2c24e4[_0x59f4e3];_0x20c9b2['active']=![];_0x20c9b2[_0x6d32('0x50')]=moment()[_0x6d32('0x51')](_0x4b8df4,_0x6d32('0x52'))['format'](_0x6d32('0x35'));_0x20c9b2[_0x6d32('0x19')]=_0x2c24e4[_0x6d32('0x19')];_0x20c9b2['ListId']=_0x2c24e4['ListId'];_0x20c9b2[_0x6d32('0x1a')]=_0x2c24e4[_0x6d32('0x1a')]||undefined;return _0x20c9b2;};exports[_0x6d32('0x53')]=function(_0x32e2db,_0x147c95){if(!_['isNil'](_0x32e2db)){if(_0x32e2db[_0x6d32('0x54')]>0x0){_0x32e2db['pTalking']-=0x1;}else{logger[_0x6d32('0x8')](_0x147c95,_0x6d32('0x55'));}}else{logger[_0x6d32('0x8')](_0x147c95,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x6d32('0x56')]=function(_0x328a90){if(_0x328a90<=0x0){return!![];}return![];};function buildObj(_0x200fd1,_0x11a178,_0x3978f4){_0x200fd1[_0x6d32('0x57')]=_0x11a178;_0x200fd1['name']=_0x200fd1[_0x6d32('0x58')];_0x200fd1[_0x6d32('0x59')]=_0x200fd1[_0x6d32('0x46')];_0x200fd1[_0x6d32('0x5a')]=_0x6d32('0x5b');if(_0x3978f4){_0x200fd1[_0x6d32('0x5c')]=_0x3978f4[_0x6d32('0x5c')];}return _0x200fd1;}exports[_0x6d32('0x5d')]=buildObj;exports[_0x6d32('0x5e')]=function(_0x360883){var _0x556b69={};_0x556b69[_0x6d32('0x58')]=_0x360883['queue'];_0x556b69[_0x6d32('0x59')]=_0x360883['channelAgent'];_0x556b69['uniqueid']=_0x360883[_0x6d32('0x44')];return _0x556b69;};exports[_0x6d32('0x5f')]=function(_0x5dadb5){var _0x337d29=[];for(var _0xa2efc7 in _0x5dadb5){if(_0x5dadb5['hasOwnProperty'](_0xa2efc7)){if(!_[_0x6d32('0x14')](_0x5dadb5[_0xa2efc7])&&_0x5dadb5[_0xa2efc7][_0x6d32('0x3a')]===_0x6d32('0x60')&&_0x5dadb5[_0xa2efc7][_0x6d32('0x61')]===_0x6d32('0x62')){_0x337d29[_0x6d32('0x63')](_0x5dadb5[_0xa2efc7]['id']);}}}return _0x337d29;};exports[_0x6d32('0x64')]=function(_0x273bc5){var _0x10e4fe=moment()[_0x6d32('0x4')](0x0);var _0x396e80=moment(_0x273bc5)[_0x6d32('0x4')](0x0);return _0x10e4fe[_0x6d32('0x5')](_0x396e80,_0x6d32('0x6'));};exports[_0x6d32('0x65')]=function(_0x26c0c8){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x26c0c8[_0x6d32('0x19')],'ListId':_0x26c0c8[_0x6d32('0x66')],'VoiceQueueId':_0x26c0c8[_0x6d32('0x1a')]||undefined,'CampaignId':_0x26c0c8[_0x6d32('0x67')]||undefined};};exports['filterKey']=function(_0xd36314){if(_0xd36314==='uniqueid'||_0xd36314===_0x6d32('0x68')||_0xd36314==='queue'||_0xd36314===_0x6d32('0x69')||_0xd36314===_0x6d32('0x6a')||_0xd36314==='dialAnswer'||_0xd36314===_0x6d32('0x3e')||_0xd36314==='channelAgent'||_0xd36314===_0x6d32('0x6b')||_0xd36314===_0x6d32('0x6c')||_0xd36314===_0x6d32('0x18')||_0xd36314===_0x6d32('0x50')||_0xd36314===_0x6d32('0x6d')||_0xd36314===_0x6d32('0x4a')||_0xd36314===_0x6d32('0x4b')||_0xd36314===_0x6d32('0x6e')||_0xd36314===_0x6d32('0x6f')||_0xd36314==='callbackuniqueid'||_0xd36314===_0x6d32('0x70')||_0xd36314===_0x6d32('0x71')||_0xd36314===_0x6d32('0x19')||_0xd36314===_0x6d32('0x66')||_0xd36314===_0x6d32('0x3f')||_0xd36314===_0x6d32('0x1a')||_0xd36314===_0x6d32('0x72')||_0xd36314===_0x6d32('0x73')||_0xd36314===_0x6d32('0x74')||_0xd36314==='xmd-phone'||_0xd36314===_0x6d32('0x75')||_0xd36314===_0x6d32('0x76')||_0xd36314===_0x6d32('0x77')||_0xd36314===_0x6d32('0x78')||_0xd36314===_0x6d32('0x79')||_0xd36314===_0x6d32('0x7a')||_0xd36314==='xmd-contactid'||_0xd36314===_0x6d32('0x7b')||_0xd36314===_0x6d32('0x7c')||_0xd36314===_0x6d32('0x7d')||_0xd36314===_0x6d32('0x7e')||_0xd36314===_0x6d32('0x7f')||_0xd36314==='rtpaudioqosbridged'||_0xd36314==='rtpaudioqosjitter'||_0xd36314===_0x6d32('0x80')||_0xd36314===_0x6d32('0x81')||_0xd36314===_0x6d32('0x82')||_0xd36314==='rtpaudioqosrtt'||_0xd36314===_0x6d32('0x83')||_0xd36314==='rtpaudioqos'||_0xd36314===_0x6d32('0x84')||_0xd36314===_0x6d32('0x85')||_0xd36314===_0x6d32('0x80')||_0xd36314===_0x6d32('0x81')||_0xd36314===_0x6d32('0x82')||_0xd36314===_0x6d32('0x86')||_0xd36314===_0x6d32('0x83')||_0xd36314==='bridgepeer'||_0xd36314==='bridgepvtcallid'||_0xd36314===_0x6d32('0x3a')||_0xd36314==='statedesc'){return![];}return!![];};exports[_0x6d32('0x87')]=function(_0x38ead6,_0x289a4b){var _0x38cc59,_0x215825,_0x5997fb;if(_0x289a4b<=0x0){_0x289a4b=0x1;}_0x38cc59=new RegExp(_0x6d32('0x88')+_0x289a4b+'}$');_0x215825=Math[_0x6d32('0x89')](0xa,_0x289a4b-0x1);_0x5997fb=Math[_0x6d32('0x89')](0xa,_0x289a4b)-0x1;return util[_0x6d32('0x11')]('%s',_[_0x6d32('0x8a')](_0x38ead6,_0x38cc59,_['random'](_0x215825,_0x5997fb)));};exports[_0x6d32('0x8b')]=function(_0x50f0cd){var _0x57545a=_0x50f0cd[_0x6d32('0x8c')](/"(.*?)"/);return _0x57545a?_0x57545a[0x1]:_0x50f0cd;};exports[_0x6d32('0x8d')]=function(_0x1328c5){var _0x9f6c1c=_0x1328c5['match'](/<(.*?)>/);return _0x9f6c1c?_0x9f6c1c[0x1]:_0x1328c5;};function buildNoAnswerEventPayload(_0x35d3c1,_0x592889){var _0x4b5372=buildObj(_0x35d3c1,_0x6d32('0x8e'));if(!_[_0x6d32('0x10')](_0x592889[_0x6d32('0x8f')])){Object[_0x6d32('0x90')](_0x592889[_0x6d32('0x8f')])[_0x6d32('0x91')](function(_0x524da1){_0x4b5372[_0x524da1[_0x6d32('0x92')]()]=_0x592889[_0x6d32('0x8f')][_0x524da1];});}return _0x4b5372;}exports[_0x6d32('0x93')]=buildNoAnswerEventPayload;
\ No newline at end of file
index c25c045..ab3f2f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087e=['voicechannel','voicequeuechannelredirect','queueadd','string','boolean','queuepause','voicequeuechannel'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x087e,0x121));var _0xe087=function(_0x58f2f4,_0x3d46d8){_0x58f2f4=_0x58f2f4-0x0;var _0x90525b=_0x087e[_0x58f2f4];return _0x90525b;};'use strict';exports[_0xe087('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xe087('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0xe087('0x2'),'required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':_0xe087('0x1'),'required':!![]}};exports[_0xe087('0x3')]={'interface':{'type':_0xe087('0x1'),'required':!![]},'paused':{'type':_0xe087('0x2')},'reason':{'type':_0xe087('0x1'),'required':![]}};exports['reload']={'module':{'type':_0xe087('0x1'),'required':![]}};exports[_0xe087('0x4')]={'uniqueid':{'type':'string','required':!![]}};exports[_0xe087('0x5')]={'uniqueid':{'type':_0xe087('0x1'),'required':!![]},'filename':{'type':_0xe087('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0xe087('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0xe087('0x1'),'required':!![]}};exports[_0xe087('0x6')]={'uniqueid':{'type':_0xe087('0x1'),'required':!![]},'exten':{'type':_0xe087('0x1'),'required':!![]},'context':{'type':_0xe087('0x1')}};
\ No newline at end of file
+var _0x3382=['queueadd','string','boolean','queueremove','queuepause','voicechannel','voicequeuechannelhangup'];(function(_0x100566,_0x46f178){var _0x56f802=function(_0x465ddc){while(--_0x465ddc){_0x100566['push'](_0x100566['shift']());}};_0x56f802(++_0x46f178);}(_0x3382,0xc4));var _0x2338=function(_0x43a5ae,_0x21b090){_0x43a5ae=_0x43a5ae-0x0;var _0x3a8e62=_0x3382[_0x43a5ae];return _0x3a8e62;};'use strict';exports[_0x2338('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x2338('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x2338('0x2'),'required':![]}};exports[_0x2338('0x3')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]}};exports[_0x2338('0x4')]={'interface':{'type':_0x2338('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':'string','required':![]}};exports['reload']={'module':{'type':_0x2338('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':'string','required':!![]}};exports[_0x2338('0x5')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x2338('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0x2338('0x1')}};exports[_0x2338('0x6')]={'uniqueid':{'type':_0x2338('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0x2338('0x1'),'required':!![]},'exten':{'type':_0x2338('0x1'),'required':!![]},'context':{'type':_0x2338('0x1')}};
\ No newline at end of file
index 3b81d59..9ed67c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d91=['queuecallercompleteAt','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','util','lodash','moment','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','channels','queueChannels','outboundChannels','timers','settings','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','format','isNil','interface','SIP/%s','name','hasOwnProperty','total','answered','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','sumHoldTime','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','mergeFromDatabase','initAgents','isUndefined','prototype','initTelephones','length','initTrunks','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','initDeskAccounts','sugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','uniqueid','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallerexitAt','queuecallercomplete'];(function(_0x2fa69f,_0x5c4905){var _0x50d4c9=function(_0xd11e1c){while(--_0xd11e1c){_0x2fa69f['push'](_0x2fa69f['shift']());}};_0x50d4c9(++_0x5c4905);}(_0x0d91,0x76));var _0x10d9=function(_0x1b3fb0,_0x49325a){_0x1b3fb0=_0x1b3fb0-0x0;var _0x5eb66e=_0x0d91[_0x1b3fb0];return _0x5eb66e;};'use strict';var util=require(_0x10d9('0x0'));var _=require(_0x10d9('0x1'));var moment=require(_0x10d9('0x2'));var Agent=require(_0x10d9('0x3'));var Telephone=require('../model/telephone');var Trunk=require(_0x10d9('0x4'));var VoiceQueue=require(_0x10d9('0x5'));var Trigger=require(_0x10d9('0x6'));var Template=require('../model/template');var Campaign=require(_0x10d9('0x7'));var VoiceExtension=require(_0x10d9('0x8'));var ZendeskAccount=require(_0x10d9('0x9'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0x10d9('0xa'));var SugarcrmAccount=require(_0x10d9('0xb'));var ZohoAccount=require(_0x10d9('0xc'));var DeskAccount=require(_0x10d9('0xd'));var VtigerAccount=require(_0x10d9('0xe'));var ServicenowAccount=require(_0x10d9('0xf'));var Dynamics365Account=require(_0x10d9('0x10'));var FreshsalesAccount=require(_0x10d9('0x11'));var FaxAccount=require(_0x10d9('0x12'));var Realtime=function(){this[_0x10d9('0x13')]={};this[_0x10d9('0x14')]={};this[_0x10d9('0x15')]={};this[_0x10d9('0x16')]={};this[_0x10d9('0x17')]={};this[_0x10d9('0x18')]={};this[_0x10d9('0x19')]={};this[_0x10d9('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x10d9('0x1b')]={};this[_0x10d9('0x1c')]={};this[_0x10d9('0x1d')]={};this[_0x10d9('0x1e')]={};this[_0x10d9('0x1f')]={};this['zendeskAccounts']={};this[_0x10d9('0x20')]={};this['sugarcrmAccounts']={};this[_0x10d9('0x21')]={};this[_0x10d9('0x22')]={};this[_0x10d9('0x23')]={};this[_0x10d9('0x24')]={};this[_0x10d9('0x25')]={};this[_0x10d9('0x26')]={};this[_0x10d9('0x27')]={};this[_0x10d9('0x28')]={};};function freeIsNotKey(_0x453d22,_0xb5d3ec,_0x4c6792){var _0x5658b5=_[_0x10d9('0x29')](_0x453d22,function(_0x21b1ac,_0x43d98a){return _0x21b1ac[_0x4c6792];});for(var _0x1e9db9 in _0xb5d3ec){if(_0xb5d3ec['hasOwnProperty'](_0x1e9db9)){if(!_0x5658b5[_0x1e9db9]){delete _0xb5d3ec[_0x1e9db9];}}}}function freeIsNotKeySip(_0x3f5819,_0x206045){var _0x1cff55=_[_0x10d9('0x29')](_0x3f5819,function(_0x5c7014,_0x664294){return util[_0x10d9('0x2a')]('SIP/%s',_0x5c7014['name']);});for(var _0x25f950 in _0x206045){if(_0x206045['hasOwnProperty'](_0x25f950)){if(!_0x1cff55[_0x25f950]){delete _0x206045[_0x25f950];}}}}function freeIsNotKeyAgent(_0x11be56,_0x1e84ba){var _0x5a23f6=_[_0x10d9('0x29')](_0x11be56,function(_0x2c1346,_0x3e7a25){var _0x1bf9fa=_[_0x10d9('0x2b')](_0x2c1346[_0x10d9('0x2c')])?util[_0x10d9('0x2a')](_0x10d9('0x2d'),_0x2c1346[_0x10d9('0x2e')]):_0x2c1346[_0x10d9('0x2c')];return _0x1bf9fa;});for(var _0xee0d33 in _0x1e84ba){if(_0x1e84ba[_0x10d9('0x2f')](_0xee0d33)){if(!_0x5a23f6[_0xee0d33]){delete _0x1e84ba[_0xee0d33];}}}}function clearVoiceCallReports(_0x295595){_0x295595[_0x10d9('0x30')]=0x0;_0x295595[_0x10d9('0x31')]=0x0;_0x295595['sumHoldTime']=0x0;_0x295595[_0x10d9('0x32')]=0x0;_0x295595[_0x10d9('0x33')]=0x0;}function clearCampaigns(_0xce87ca){if(!_[_0x10d9('0x34')](_0xce87ca)){for(var _0x4b2619 in _0xce87ca){if(_0xce87ca[_0x10d9('0x2f')](_0x4b2619)){_0xce87ca[_0x4b2619][_0x10d9('0x35')]=0x0;_0xce87ca[_0x4b2619][_0x10d9('0x36')]=0x0;}}}}function clearVoiceQueues(_0x96655f){if(!_[_0x10d9('0x34')](_0x96655f)){for(var _0x12c87c in _0x96655f){if(_0x96655f['hasOwnProperty'](_0x12c87c)){_0x96655f[_0x12c87c][_0x10d9('0x30')]=0x0;_0x96655f[_0x12c87c]['answered']=0x0;_0x96655f[_0x12c87c][_0x10d9('0x37')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x38')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x39')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x32')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x33')]=0x0;_0x96655f[_0x12c87c]['outboundAnswerAgiCallsDay']=0x0;_0x96655f[_0x12c87c]['outboundNoAnswerCallsDay']=0x0;_0x96655f[_0x12c87c][_0x10d9('0x3a')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x3b')]=0x0;_0x96655f[_0x12c87c]['outboundNoSuchCallsDay']=0x0;_0x96655f[_0x12c87c]['outboundUnknownCallsDay']=0x0;_0x96655f[_0x12c87c][_0x10d9('0x3c')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x3d')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x3e')]=0x0;_0x96655f[_0x12c87c]['outboundOriginateFailureCallsDay']=0x0;_0x96655f[_0x12c87c][_0x10d9('0x3f')]=0x0;_0x96655f[_0x12c87c]['outboundReCallsDay']=0x0;_0x96655f[_0x12c87c][_0x10d9('0x40')]=0x0;_0x96655f[_0x12c87c][_0x10d9('0x41')]=0x0;_0x96655f[_0x12c87c]['queueStatusComplete']=!![];}}}}Realtime['prototype'][_0x10d9('0x42')]=function(_0x389179,_0x4fdc51){for(var _0x26d3a4 in _0x4fdc51){if(_0x389179[_0x10d9('0x2f')](_0x26d3a4)){_0x389179[_0x26d3a4]=_0x4fdc51[_0x26d3a4];}}};Realtime['prototype'][_0x10d9('0x43')]=function(){var _0x3baa6b=this;return function(_0x33588d){if(_0x33588d){freeIsNotKeyAgent(_0x33588d,_0x3baa6b['agents']);for(var _0x32ebd4=0x0,_0x5f6383={},_0x9ddff={};_0x32ebd4<_0x33588d['length'];_0x32ebd4+=0x1){_0x5f6383=_0x33588d[_0x32ebd4];var _0x7dbda0=_[_0x10d9('0x2b')](_0x5f6383['interface'])?util[_0x10d9('0x2a')](_0x10d9('0x2d'),_0x5f6383[_0x10d9('0x2e')]):_0x5f6383[_0x10d9('0x2c')];if(_[_0x10d9('0x44')](_0x3baa6b[_0x10d9('0x13')][_0x7dbda0])){_0x3baa6b['agents'][_0x7dbda0]=new Agent(_0x5f6383);}else{_0x3baa6b['mergeFromDatabase'](_0x3baa6b['agents'][_0x7dbda0],_0x5f6383);}}}return _0x3baa6b[_0x10d9('0x13')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x46')]=function(){var _0x3bc4ab=this;return function(_0x4359b8){if(_0x4359b8){freeIsNotKeySip(_0x4359b8,_0x3bc4ab['telephones']);for(var _0x3e1c4e=0x0,_0x2e7eae={},_0x24e998={};_0x3e1c4e<_0x4359b8[_0x10d9('0x47')];_0x3e1c4e+=0x1){_0x2e7eae=_0x4359b8[_0x3e1c4e];if(_['isUndefined'](_0x3bc4ab[_0x10d9('0x14')][util[_0x10d9('0x2a')](_0x10d9('0x2d'),_0x2e7eae[_0x10d9('0x2e')])])){_0x3bc4ab[_0x10d9('0x14')][util[_0x10d9('0x2a')]('SIP/%s',_0x2e7eae[_0x10d9('0x2e')])]=new Telephone(_0x2e7eae);}else{_0x3bc4ab[_0x10d9('0x42')](_0x3bc4ab[_0x10d9('0x14')][util[_0x10d9('0x2a')](_0x10d9('0x2d'),_0x2e7eae[_0x10d9('0x2e')])],_0x2e7eae);}}}return _0x3bc4ab[_0x10d9('0x14')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x48')]=function(){var _0x5cbeb3=this;return function(_0x712f2c){if(_0x712f2c){freeIsNotKeySip(_0x712f2c,_0x5cbeb3[_0x10d9('0x15')]);for(var _0x1269b8=0x0,_0x4ec5f0={},_0x3ff4b3={};_0x1269b8<_0x712f2c[_0x10d9('0x47')];_0x1269b8+=0x1){_0x4ec5f0=_0x712f2c[_0x1269b8];if(_['isUndefined'](_0x5cbeb3[_0x10d9('0x15')][util[_0x10d9('0x2a')](_0x10d9('0x2d'),_0x4ec5f0[_0x10d9('0x2e')])])){_0x5cbeb3[_0x10d9('0x15')][util[_0x10d9('0x2a')](_0x10d9('0x2d'),_0x4ec5f0[_0x10d9('0x2e')])]=new Trunk(_0x4ec5f0);}else{_0x5cbeb3[_0x10d9('0x42')](_0x5cbeb3[_0x10d9('0x15')][util['format'](_0x10d9('0x2d'),_0x4ec5f0[_0x10d9('0x2e')])],_0x4ec5f0);}}}return _0x5cbeb3[_0x10d9('0x15')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x49')]=function(){var _0x239024=this;return function(_0x30074b){if(_0x30074b){freeIsNotKey(_0x30074b,_0x239024[_0x10d9('0x16')],_0x10d9('0x2e'));for(var _0x310cfb=0x0,_0x27d4e3={},_0xed5974={};_0x310cfb<_0x30074b[_0x10d9('0x47')];_0x310cfb+=0x1){_0x27d4e3=_0x30074b[_0x310cfb];if(_['isUndefined'](_0x239024['voiceQueues'][_0x27d4e3[_0x10d9('0x2e')]])){_0x239024[_0x10d9('0x16')][_0x27d4e3[_0x10d9('0x2e')]]=new VoiceQueue(_0x27d4e3);}else{_0x239024[_0x10d9('0x42')](_0x239024[_0x10d9('0x16')][_0x27d4e3[_0x10d9('0x2e')]],_0x27d4e3);}}}return _0x239024['voiceQueues'];};};Realtime['prototype'][_0x10d9('0x4a')]=function(){var _0x43ac87=this;return function(_0x55acc1){if(_0x55acc1){freeIsNotKey(_0x55acc1,_0x43ac87[_0x10d9('0x17')],'id');for(var _0x204303=0x0,_0x20451a={},_0x159cb4={};_0x204303<_0x55acc1[_0x10d9('0x47')];_0x204303+=0x1){_0x20451a=_0x55acc1[_0x204303];if(_['isUndefined'](_0x43ac87[_0x10d9('0x17')][_0x20451a['id']])){_0x43ac87[_0x10d9('0x17')][_0x20451a['id']]=new Trigger(_0x20451a);}else{_0x43ac87[_0x10d9('0x42')](_0x43ac87[_0x10d9('0x17')][_0x20451a['id']],_0x20451a);}}}return _0x43ac87[_0x10d9('0x17')];};};Realtime['prototype'][_0x10d9('0x4b')]=function(){var _0x30d8e2=this;return function(_0x37cc9a){if(_0x37cc9a){freeIsNotKey(_0x37cc9a,_0x30d8e2['templates'],'id');for(var _0x482d0e=0x0,_0xd72e96={},_0x45ebf1={};_0x482d0e<_0x37cc9a[_0x10d9('0x47')];_0x482d0e+=0x1){_0xd72e96=_0x37cc9a[_0x482d0e];if(_[_0x10d9('0x44')](_0x30d8e2[_0x10d9('0x19')][_0xd72e96['id']])){_0x30d8e2[_0x10d9('0x19')][_0xd72e96['id']]=new Template(_0xd72e96);}else{_0x30d8e2[_0x10d9('0x42')](_0x30d8e2[_0x10d9('0x19')][_0xd72e96['id']],_0xd72e96);}}}return _0x30d8e2[_0x10d9('0x19')];};};Realtime['prototype'][_0x10d9('0x4c')]=function(){var _0x1e49c8=this;return function(_0x3291e6){if(_0x3291e6){freeIsNotKey(_0x3291e6,_0x1e49c8[_0x10d9('0x4d')],'id');for(var _0x5fcb76=0x0,_0x31bef0={},_0x449548={};_0x5fcb76<_0x3291e6[_0x10d9('0x47')];_0x5fcb76+=0x1){_0x31bef0=_0x3291e6[_0x5fcb76];if(_[_0x10d9('0x44')](_0x1e49c8[_0x10d9('0x4d')][_0x31bef0['id']])){_0x1e49c8[_0x10d9('0x4d')][_0x31bef0['id']]=new ZendeskAccount(_0x31bef0);}else{_0x1e49c8[_0x10d9('0x42')](_0x1e49c8['zendeskAccounts'][_0x31bef0['id']],_0x31bef0);}}}return _0x1e49c8[_0x10d9('0x4d')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x4e')]=function(){var _0x4dfdfa=this;return function(_0x315267){if(_0x315267){freeIsNotKey(_0x315267,_0x4dfdfa[_0x10d9('0x20')],'id');for(var _0x288e16=0x0,_0x38356d={},_0x4dd113={};_0x288e16<_0x315267[_0x10d9('0x47')];_0x288e16+=0x1){_0x38356d=_0x315267[_0x288e16];if(_[_0x10d9('0x44')](_0x4dfdfa[_0x10d9('0x20')][_0x38356d['id']])){_0x4dfdfa[_0x10d9('0x20')][_0x38356d['id']]=new SalesforceAccount(_0x38356d);}else{_0x4dfdfa[_0x10d9('0x42')](_0x4dfdfa[_0x10d9('0x20')][_0x38356d['id']],_0x38356d);}}}return _0x4dfdfa['salesforceAccounts'];};};Realtime['prototype']['initFreshdeskAccounts']=function(){var _0x56cc26=this;return function(_0x3b5d58){if(_0x3b5d58){freeIsNotKey(_0x3b5d58,_0x56cc26[_0x10d9('0x21')],'id');for(var _0x5d9212=0x0,_0x76aa9e={},_0x2bac44={};_0x5d9212<_0x3b5d58[_0x10d9('0x47')];_0x5d9212+=0x1){_0x76aa9e=_0x3b5d58[_0x5d9212];if(_[_0x10d9('0x44')](_0x56cc26[_0x10d9('0x21')][_0x76aa9e['id']])){_0x56cc26[_0x10d9('0x21')][_0x76aa9e['id']]=new FreshdeskAccount(_0x76aa9e);}else{_0x56cc26[_0x10d9('0x42')](_0x56cc26[_0x10d9('0x21')][_0x76aa9e['id']],_0x76aa9e);}}}return _0x56cc26[_0x10d9('0x21')];};};Realtime[_0x10d9('0x45')]['initZohoAccounts']=function(){var _0xc446d6=this;return function(_0x1a37e2){if(_0x1a37e2){freeIsNotKey(_0x1a37e2,_0xc446d6[_0x10d9('0x22')],'id');for(var _0x5899df=0x0,_0x3ea8d={},_0x2effe6={};_0x5899df<_0x1a37e2[_0x10d9('0x47')];_0x5899df+=0x1){_0x3ea8d=_0x1a37e2[_0x5899df];if(_['isUndefined'](_0xc446d6[_0x10d9('0x22')][_0x3ea8d['id']])){_0xc446d6[_0x10d9('0x22')][_0x3ea8d['id']]=new ZohoAccount(_0x3ea8d);}else{_0xc446d6['mergeFromDatabase'](_0xc446d6[_0x10d9('0x22')][_0x3ea8d['id']],_0x3ea8d);}}}return _0xc446d6[_0x10d9('0x22')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x4f')]=function(){var _0x49da8b=this;return function(_0x5dd8fe){if(_0x5dd8fe){freeIsNotKey(_0x5dd8fe,_0x49da8b[_0x10d9('0x23')],'id');for(var _0x2b5d63=0x0,_0x1c7e1e={},_0x3aa9b5={};_0x2b5d63<_0x5dd8fe[_0x10d9('0x47')];_0x2b5d63+=0x1){_0x1c7e1e=_0x5dd8fe[_0x2b5d63];if(_[_0x10d9('0x44')](_0x49da8b[_0x10d9('0x23')][_0x1c7e1e['id']])){_0x49da8b[_0x10d9('0x23')][_0x1c7e1e['id']]=new DeskAccount(_0x1c7e1e);}else{_0x49da8b[_0x10d9('0x42')](_0x49da8b[_0x10d9('0x23')][_0x1c7e1e['id']],_0x1c7e1e);}}}return _0x49da8b[_0x10d9('0x23')];};};Realtime['prototype']['initSugarcrmAccounts']=function(){var _0x3d29e9=this;return function(_0x1e2585){if(_0x1e2585){freeIsNotKey(_0x1e2585,_0x3d29e9[_0x10d9('0x50')],'id');for(var _0x1c0517=0x0,_0x37ff11={},_0x11c969={};_0x1c0517<_0x1e2585[_0x10d9('0x47')];_0x1c0517+=0x1){_0x37ff11=_0x1e2585[_0x1c0517];if(_[_0x10d9('0x44')](_0x3d29e9[_0x10d9('0x50')][_0x37ff11['id']])){_0x3d29e9['sugarcrmAccounts'][_0x37ff11['id']]=new SugarcrmAccount(_0x37ff11);}else{_0x3d29e9[_0x10d9('0x42')](_0x3d29e9[_0x10d9('0x50')][_0x37ff11['id']],_0x37ff11);}}}return _0x3d29e9[_0x10d9('0x50')];};};Realtime['prototype'][_0x10d9('0x51')]=function(){var _0x2aa11e=this;return function(_0xd09ee5){if(_0xd09ee5){freeIsNotKey(_0xd09ee5,_0x2aa11e['vtigerAccounts'],'id');for(var _0x554265=0x0,_0x37d1bc={},_0x5d7ed1={};_0x554265<_0xd09ee5[_0x10d9('0x47')];_0x554265+=0x1){_0x37d1bc=_0xd09ee5[_0x554265];if(_[_0x10d9('0x44')](_0x2aa11e[_0x10d9('0x24')][_0x37d1bc['id']])){_0x2aa11e[_0x10d9('0x24')][_0x37d1bc['id']]=new VtigerAccount(_0x37d1bc);}else{_0x2aa11e['mergeFromDatabase'](_0x2aa11e[_0x10d9('0x24')][_0x37d1bc['id']],_0x37d1bc);}}}return _0x2aa11e['vtigerAccounts'];};};Realtime[_0x10d9('0x45')][_0x10d9('0x52')]=function(){var _0x532194=this;return function(_0x3fc6c7){if(_0x3fc6c7){freeIsNotKey(_0x3fc6c7,_0x532194[_0x10d9('0x25')],'id');for(var _0x34c56c=0x0,_0x507c50={},_0x3b6e44={};_0x34c56c<_0x3fc6c7[_0x10d9('0x47')];_0x34c56c+=0x1){_0x507c50=_0x3fc6c7[_0x34c56c];if(_[_0x10d9('0x44')](_0x532194[_0x10d9('0x25')][_0x507c50['id']])){_0x532194[_0x10d9('0x25')][_0x507c50['id']]=new ServicenowAccount(_0x507c50);}else{_0x532194['mergeFromDatabase'](_0x532194[_0x10d9('0x25')][_0x507c50['id']],_0x507c50);}}}return _0x532194[_0x10d9('0x25')];};};Realtime[_0x10d9('0x45')]['initDynamics365Accounts']=function(){var _0x26f0e9=this;return function(_0x442c0b){if(_0x442c0b){freeIsNotKey(_0x442c0b,_0x26f0e9[_0x10d9('0x26')],'id');for(var _0x2526a8=0x0,_0x9db82d={},_0x186539={};_0x2526a8<_0x442c0b[_0x10d9('0x47')];_0x2526a8+=0x1){_0x9db82d=_0x442c0b[_0x2526a8];if(_[_0x10d9('0x44')](_0x26f0e9[_0x10d9('0x26')][_0x9db82d['id']])){_0x26f0e9['dynamics365Accounts'][_0x9db82d['id']]=new Dynamics365Account(_0x9db82d);}else{_0x26f0e9[_0x10d9('0x42')](_0x26f0e9[_0x10d9('0x26')][_0x9db82d['id']],_0x9db82d);}}}return _0x26f0e9[_0x10d9('0x26')];};};Realtime[_0x10d9('0x45')]['initFreshsalesAccounts']=function(){var _0x895d83=this;return function(_0x4d317a){if(_0x4d317a){freeIsNotKey(_0x4d317a,_0x895d83[_0x10d9('0x27')],'id');for(var _0x3f8b65=0x0,_0x22de35={},_0x59be0b={};_0x3f8b65<_0x4d317a['length'];_0x3f8b65+=0x1){_0x22de35=_0x4d317a[_0x3f8b65];if(_[_0x10d9('0x44')](_0x895d83[_0x10d9('0x27')][_0x22de35['id']])){_0x895d83[_0x10d9('0x27')][_0x22de35['id']]=new FreshsalesAccount(_0x22de35);}else{_0x895d83[_0x10d9('0x42')](_0x895d83[_0x10d9('0x27')][_0x22de35['id']],_0x22de35);}}}return _0x895d83[_0x10d9('0x27')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x53')]=function(){var _0x4a5933=this;return function(_0x898746){for(var _0xc1f88d=0x0;_0xc1f88d<_0x898746['length'];_0xc1f88d+=0x1){_[_0x10d9('0x54')](_0x4a5933['voiceQueues'][_0x898746[_0xc1f88d][_0x10d9('0x2e')]],_0x898746[_0xc1f88d]);}return _0x4a5933[_0x10d9('0x16')];};};Realtime['prototype'][_0x10d9('0x55')]=function(){var _0x3045dd=this;return function(_0x41da21){clearVoiceQueues(_0x3045dd['voiceQueues']);if(_0x41da21){_0x41da21=_['groupBy'](_0x41da21,_0x10d9('0x56'));for(var _0x55e974 in _0x41da21){if(_0x41da21[_0x10d9('0x2f')](_0x55e974)){var _0x362a85={};for(var _0x5f3280=0x0;_0x5f3280<_0x41da21[_0x55e974]['length'];_0x5f3280+=0x1){var _0x58932b=_0x41da21[_0x55e974][_0x5f3280]['queue'];if(_0x3045dd[_0x10d9('0x16')][_0x58932b]){if(_0x41da21[_0x55e974][_0x5f3280]['queuecallerexit']){_0x3045dd[_0x10d9('0x16')][_0x58932b][_0x10d9('0x37')]+=0x1;}if(_0x41da21[_0x55e974][_0x5f3280][_0x10d9('0x57')]){_0x3045dd[_0x10d9('0x16')][_0x58932b][_0x10d9('0x38')]+=0x1;}_0x3045dd['voiceQueues'][_0x58932b][_0x10d9('0x39')]+=moment(_0x41da21[_0x55e974][_0x5f3280][_0x10d9('0x58')])[_0x10d9('0x59')](moment(_0x41da21[_0x55e974][_0x5f3280][_0x10d9('0x5a')]),_0x10d9('0x5b'))||0x0;if(_0x5f3280===_0x41da21[_0x55e974][_0x10d9('0x47')]-0x1){_0x3045dd['voiceQueues'][_0x58932b][_0x10d9('0x32')]+=moment(_0x41da21[_0x55e974][_0x5f3280]['queuecallercompleteAt']||_0x41da21[_0x55e974][_0x5f3280]['queuecallerabandonAt']||_0x41da21[_0x55e974][_0x5f3280][_0x10d9('0x5c')])[_0x10d9('0x59')](moment(_0x41da21[_0x55e974][_0x5f3280][_0x10d9('0x5a')]),_0x10d9('0x5b'))||0x0;_0x3045dd[_0x10d9('0x16')][_0x58932b]['total']+=0x1;if(_0x41da21[_0x55e974][_0x5f3280][_0x10d9('0x5d')]){_0x3045dd['voiceQueues'][_0x58932b][_0x10d9('0x31')]+=0x1;_0x3045dd[_0x10d9('0x16')][_0x58932b][_0x10d9('0x33')]+=moment(_0x41da21[_0x55e974][_0x5f3280][_0x10d9('0x5e')])['diff'](moment(_0x41da21[_0x55e974][_0x5f3280]['queuecallerleaveAt']),_0x10d9('0x5b'))||0x0;}}else{_0x3045dd[_0x10d9('0x16')][_0x58932b]['sumDuration']+=_0x3045dd[_0x10d9('0x16')][_0x58932b][_0x10d9('0x39')]||0x0;}}}}}}return _0x3045dd[_0x10d9('0x16')];};};Realtime['prototype'][_0x10d9('0x5f')]=function(){var _0x3a8220=this;return function(_0x3b87d6){clearVoiceCallReports(_0x3a8220[_0x10d9('0x1a')]);if(_0x3b87d6){for(var _0x12f754=0x0;_0x12f754<_0x3b87d6[_0x10d9('0x47')];_0x12f754+=0x1){_0x3a8220[_0x10d9('0x1a')][_0x10d9('0x30')]+=0x1;_0x3a8220['outbound'][_0x10d9('0x32')]+=_0x3b87d6[_0x12f754][_0x10d9('0x60')];if(_0x3b87d6[_0x12f754][_0x10d9('0x61')]===_0x10d9('0x62')){_0x3a8220[_0x10d9('0x1a')]['answered']+=0x1;_0x3a8220[_0x10d9('0x1a')][_0x10d9('0x39')]+=_0x3b87d6[_0x12f754]['duration']-_0x3b87d6[_0x12f754][_0x10d9('0x63')]||0x0;_0x3a8220[_0x10d9('0x1a')][_0x10d9('0x33')]+=_0x3b87d6[_0x12f754][_0x10d9('0x63')];}}}return _0x3a8220[_0x10d9('0x1a')];};};Realtime[_0x10d9('0x45')]['initCampaigns']=function(){var _0x203566=this;return function(_0x2a5661){if(_0x2a5661){freeIsNotKey(_0x2a5661,_0x203566[_0x10d9('0x18')],_0x10d9('0x2e'));for(var _0x41b1d5=0x0,_0xec4178={};_0x41b1d5<_0x2a5661[_0x10d9('0x47')];_0x41b1d5+=0x1){_0xec4178=_0x2a5661[_0x41b1d5];if(_[_0x10d9('0x44')](_0x203566[_0x10d9('0x18')][_0xec4178[_0x10d9('0x2e')]])){_0x203566[_0x10d9('0x18')][_0xec4178[_0x10d9('0x2e')]]=new Campaign(_0xec4178);}else{_0x203566[_0x10d9('0x42')](_0x203566[_0x10d9('0x18')][_0xec4178[_0x10d9('0x2e')]],_0xec4178);_0x203566[_0x10d9('0x18')][_0xec4178[_0x10d9('0x2e')]][_0x10d9('0x64')]=_0xec4178[_0x10d9('0x65')]?_0xec4178[_0x10d9('0x65')][_0x10d9('0x2e')]:undefined;}}}return _0x203566[_0x10d9('0x18')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x66')]=function(){var _0x5af2e1=this;return function(_0x1c9f1f){if(_0x1c9f1f){freeIsNotKey(_0x1c9f1f,_0x5af2e1['voiceExtensions'],'id');for(var _0x45b12b=0x0,_0x3671b2={};_0x45b12b<_0x1c9f1f[_0x10d9('0x47')];_0x45b12b+=0x1){_0x3671b2=_0x1c9f1f[_0x45b12b];if(_['isUndefined'](_0x5af2e1[_0x10d9('0x67')][_0x3671b2['id']])){_0x5af2e1[_0x10d9('0x67')][_0x3671b2['id']]=new VoiceExtension(_0x3671b2);}else{_0x5af2e1[_0x10d9('0x42')](_0x5af2e1[_0x10d9('0x67')][_0x3671b2['id']],_0x3671b2);}}}return _0x5af2e1[_0x10d9('0x67')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x68')]=function(){var _0x7dd841=this;return function(_0x15a0dd){clearCampaigns(_0x7dd841[_0x10d9('0x18')]);for(var _0x462e07=0x0;_0x462e07<_0x15a0dd[_0x10d9('0x47')];_0x462e07+=0x1){_[_0x10d9('0x54')](_0x7dd841['campaigns'][_0x15a0dd[_0x462e07][_0x10d9('0x2e')]],_0x15a0dd[_0x462e07]);}return _0x7dd841[_0x10d9('0x18')];};};Realtime[_0x10d9('0x45')][_0x10d9('0x69')]=function(){var _0x2d0361=this;return function(_0x4f6dc9){if(_0x4f6dc9){freeIsNotKey(_0x4f6dc9,_0x2d0361[_0x10d9('0x28')],'id');for(var _0x161099=0x0,_0x571ca0={},_0x22b349={};_0x161099<_0x4f6dc9[_0x10d9('0x47')];_0x161099+=0x1){_0x571ca0=_0x4f6dc9[_0x161099];if(_[_0x10d9('0x44')](_0x2d0361[_0x10d9('0x28')][_0x571ca0['id']])){_0x2d0361['faxAccounts'][_0x571ca0['id']]=new FaxAccount(_0x571ca0);}else{_0x2d0361[_0x10d9('0x42')](_0x2d0361['faxAccounts'][_0x571ca0['id']],_0x571ca0);}}}return _0x2d0361[_0x10d9('0x28')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x28c8=['mergeFromDatabase','initAgents','length','isNil','format','SIP/%s','isUndefined','initTelephones','initTrunks','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','servicenowAccounts','dynamics365Accounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','uniqueid','queue','queuecallerleaveAt','seconds','sumDuration','queuecallercompleteAt','queuecallerexitAt','diff','queuecallerjoinAt','queuecallercomplete','initVoiceCallReports','disposition','ANSWERED','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','merge','initFaxAccounts','getVoiceQueues','forEach','mergeDBDataToRealtime','exports','moment','util','./utils','../model/agent','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','../rpc/voiceQueue','agents','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','faxAccounts','hasOwnProperty','mapKeys','name','interface','total','answered','sumHoldTime','sumBillable','ivrTotalCallsDays','isEmpty','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype'];(function(_0x3f0b30,_0x159bc8){var _0x2748a5=function(_0x3b42cc){while(--_0x3b42cc){_0x3f0b30['push'](_0x3f0b30['shift']());}};_0x2748a5(++_0x159bc8);}(_0x28c8,0x97));var _0x828c=function(_0x1e6659,_0x1f860c){_0x1e6659=_0x1e6659-0x0;var _0x4d16e4=_0x28c8[_0x1e6659];return _0x4d16e4;};'use strict';var _=require('lodash');var moment=require(_0x828c('0x0'));var util=require(_0x828c('0x1'));var utils=require(_0x828c('0x2'));var Agent=require(_0x828c('0x3'));var Telephone=require('../model/telephone');var Trunk=require('../model/trunk');var VoiceQueue=require(_0x828c('0x4'));var Trigger=require('../model/trigger');var Template=require(_0x828c('0x5'));var Campaign=require(_0x828c('0x6'));var VoiceExtension=require(_0x828c('0x7'));var ZendeskAccount=require(_0x828c('0x8'));var SalesforceAccount=require(_0x828c('0x9'));var FreshdeskAccount=require(_0x828c('0xa'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x828c('0xb'));var DeskAccount=require(_0x828c('0xc'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x828c('0xd'));var Dynamics365Account=require(_0x828c('0xe'));var FreshsalesAccount=require(_0x828c('0xf'));var FaxAccount=require(_0x828c('0x10'));var voiceQueue=require(_0x828c('0x11'));function Realtime(){this[_0x828c('0x12')]={};this[_0x828c('0x13')]={};this[_0x828c('0x14')]={};this[_0x828c('0x15')]={};this[_0x828c('0x16')]={};this[_0x828c('0x17')]={};this[_0x828c('0x18')]={};this[_0x828c('0x19')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x828c('0x1a')]={};this['channels']={};this['queueChannels']={};this[_0x828c('0x1b')]={};this[_0x828c('0x1c')]={};this[_0x828c('0x1d')]={};this[_0x828c('0x1e')]={};this[_0x828c('0x1f')]={};this[_0x828c('0x20')]={};this[_0x828c('0x21')]={};this[_0x828c('0x22')]={};this[_0x828c('0x23')]={};this['vtigerAccounts']={};this['servicenowAccounts']={};this['dynamics365Accounts']={};this['freshsalesAccounts']={};this[_0x828c('0x24')]={};}function freeIsNotKey(_0x204af7,_0x27c781,_0x6ddece){var _0x56709f=_['mapKeys'](_0x204af7,function(_0x254cdb){return _0x254cdb[_0x6ddece];});for(var _0x2976a7 in _0x27c781){if(_0x27c781[_0x828c('0x25')](_0x2976a7)){if(!_0x56709f[_0x2976a7]){delete _0x27c781[_0x2976a7];}}}}function freeIsNotKeySip(_0x105085,_0x19f6f6){var _0x241aac=_[_0x828c('0x26')](_0x105085,function(_0x5245b1){return util['format']('SIP/%s',_0x5245b1[_0x828c('0x27')]);});for(var _0x49c38f in _0x19f6f6){if(_0x19f6f6['hasOwnProperty'](_0x49c38f)){if(!_0x241aac[_0x49c38f]){delete _0x19f6f6[_0x49c38f];}}}}function freeIsNotKeyAgent(_0x5104c2,_0x20a9e0){var _0xe11f41=_['mapKeys'](_0x5104c2,function(_0x1fbf54){var _0x480a5d=_['isNil'](_0x1fbf54[_0x828c('0x28')])?util['format']('SIP/%s',_0x1fbf54[_0x828c('0x27')]):_0x1fbf54[_0x828c('0x28')];return _0x480a5d;});for(var _0x21772d in _0x20a9e0){if(_0x20a9e0[_0x828c('0x25')](_0x21772d)){if(!_0xe11f41[_0x21772d]){delete _0x20a9e0[_0x21772d];}}}}function clearVoiceCallReports(_0x541969){_0x541969[_0x828c('0x29')]=0x0;_0x541969[_0x828c('0x2a')]=0x0;_0x541969[_0x828c('0x2b')]=0x0;_0x541969['sumDuration']=0x0;_0x541969[_0x828c('0x2c')]=0x0;}function clearCampaigns(_0x38e5a0){if(!_['isEmpty'](_0x38e5a0)){for(var _0x44c7ba in _0x38e5a0){if(_0x38e5a0[_0x828c('0x25')](_0x44c7ba)){_0x38e5a0[_0x44c7ba][_0x828c('0x2d')]=0x0;_0x38e5a0[_0x44c7ba]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x33104b){if(!_[_0x828c('0x2e')](_0x33104b)){for(var _0x1d5a62 in _0x33104b){if(_0x33104b[_0x828c('0x25')](_0x1d5a62)){_0x33104b[_0x1d5a62][_0x828c('0x29')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x2a')]=0x0;_0x33104b[_0x1d5a62]['unmanaged']=0x0;_0x33104b[_0x1d5a62][_0x828c('0x2f')]=0x0;_0x33104b[_0x1d5a62]['sumHoldTime']=0x0;_0x33104b[_0x1d5a62]['sumDuration']=0x0;_0x33104b[_0x1d5a62][_0x828c('0x2c')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x30')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x31')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x32')]=0x0;_0x33104b[_0x1d5a62]['outboundCongestionCallsDay']=0x0;_0x33104b[_0x1d5a62][_0x828c('0x33')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x34')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x35')]=0x0;_0x33104b[_0x1d5a62]['outboundDropCallsDayCallersExit']=0x0;_0x33104b[_0x1d5a62]['outboundBlacklistCallsDay']=0x0;_0x33104b[_0x1d5a62]['outboundOriginateFailureCallsDay']=0x0;_0x33104b[_0x1d5a62][_0x828c('0x36')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x37')]=0x0;_0x33104b[_0x1d5a62]['outboundAnswerAgiCallsDay']=0x0;_0x33104b[_0x1d5a62][_0x828c('0x38')]=0x0;_0x33104b[_0x1d5a62][_0x828c('0x39')]=!![];}}}}Realtime[_0x828c('0x3a')][_0x828c('0x3b')]=function(_0x2b7a8f,_0xc40219){for(var _0x2cb2ae in _0xc40219){if(_0x2b7a8f['hasOwnProperty'](_0x2cb2ae)){_0x2b7a8f[_0x2cb2ae]=_0xc40219[_0x2cb2ae];}}};Realtime[_0x828c('0x3a')][_0x828c('0x3c')]=function(){var _0x3c1f13=this;return function(_0x3233f7){if(_0x3233f7){freeIsNotKeyAgent(_0x3233f7,_0x3c1f13[_0x828c('0x12')]);for(var _0x5ccb1d=0x0,_0x3c9a9e={},_0x55b13c={};_0x5ccb1d<_0x3233f7[_0x828c('0x3d')];_0x5ccb1d+=0x1){_0x3c9a9e=_0x3233f7[_0x5ccb1d];var _0x1619ab=_[_0x828c('0x3e')](_0x3c9a9e[_0x828c('0x28')])?util[_0x828c('0x3f')](_0x828c('0x40'),_0x3c9a9e[_0x828c('0x27')]):_0x3c9a9e[_0x828c('0x28')];if(_[_0x828c('0x41')](_0x3c1f13[_0x828c('0x12')][_0x1619ab])){_0x3c1f13[_0x828c('0x12')][_0x1619ab]=new Agent(_0x3c9a9e);}else{_0x3c1f13['mergeFromDatabase'](_0x3c1f13[_0x828c('0x12')][_0x1619ab],_0x3c9a9e);}}}return _0x3c1f13[_0x828c('0x12')];};};Realtime[_0x828c('0x3a')][_0x828c('0x42')]=function(){var _0x5979e8=this;return function(_0xb27a3){if(_0xb27a3){freeIsNotKeySip(_0xb27a3,_0x5979e8[_0x828c('0x13')]);for(var _0x14e240=0x0,_0x1be0a5={},_0x24e6dc={};_0x14e240<_0xb27a3[_0x828c('0x3d')];_0x14e240+=0x1){_0x1be0a5=_0xb27a3[_0x14e240];if(_[_0x828c('0x41')](_0x5979e8[_0x828c('0x13')][util['format'](_0x828c('0x40'),_0x1be0a5[_0x828c('0x27')])])){_0x5979e8[_0x828c('0x13')][util[_0x828c('0x3f')](_0x828c('0x40'),_0x1be0a5[_0x828c('0x27')])]=new Telephone(_0x1be0a5);}else{_0x5979e8[_0x828c('0x3b')](_0x5979e8[_0x828c('0x13')][util[_0x828c('0x3f')](_0x828c('0x40'),_0x1be0a5['name'])],_0x1be0a5);}}}return _0x5979e8[_0x828c('0x13')];};};Realtime['prototype'][_0x828c('0x43')]=function(){var _0xc99173=this;return function(_0x492743){if(_0x492743){freeIsNotKeySip(_0x492743,_0xc99173[_0x828c('0x14')]);for(var _0x59ea26=0x0,_0x435094={},_0x5f5a31={};_0x59ea26<_0x492743['length'];_0x59ea26+=0x1){_0x435094=_0x492743[_0x59ea26];if(_['isUndefined'](_0xc99173[_0x828c('0x14')][util[_0x828c('0x3f')](_0x828c('0x40'),_0x435094[_0x828c('0x27')])])){_0xc99173[_0x828c('0x14')][util[_0x828c('0x3f')](_0x828c('0x40'),_0x435094[_0x828c('0x27')])]=new Trunk(_0x435094);}else{_0xc99173[_0x828c('0x3b')](_0xc99173[_0x828c('0x14')][util[_0x828c('0x3f')]('SIP/%s',_0x435094['name'])],_0x435094);}}}return _0xc99173[_0x828c('0x14')];};};Realtime[_0x828c('0x3a')]['initTriggers']=function(){var _0x599035=this;return function(_0xceb84c){if(_0xceb84c){freeIsNotKey(_0xceb84c,_0x599035[_0x828c('0x16')],'id');for(var _0xa79063=0x0,_0x4acb9c={},_0x3d708f={};_0xa79063<_0xceb84c['length'];_0xa79063+=0x1){_0x4acb9c=_0xceb84c[_0xa79063];if(_[_0x828c('0x41')](_0x599035['triggers'][_0x4acb9c['id']])){_0x599035[_0x828c('0x16')][_0x4acb9c['id']]=new Trigger(_0x4acb9c);}else{_0x599035['mergeFromDatabase'](_0x599035['triggers'][_0x4acb9c['id']],_0x4acb9c);}}}return _0x599035[_0x828c('0x16')];};};Realtime[_0x828c('0x3a')][_0x828c('0x44')]=function(){var _0x43dbb1=this;return function(_0x297b05){if(_0x297b05){freeIsNotKey(_0x297b05,_0x43dbb1[_0x828c('0x18')],'id');for(var _0xbd9f34=0x0,_0x1e1383={},_0x4ff84a={};_0xbd9f34<_0x297b05[_0x828c('0x3d')];_0xbd9f34+=0x1){_0x1e1383=_0x297b05[_0xbd9f34];if(_[_0x828c('0x41')](_0x43dbb1['templates'][_0x1e1383['id']])){_0x43dbb1[_0x828c('0x18')][_0x1e1383['id']]=new Template(_0x1e1383);}else{_0x43dbb1[_0x828c('0x3b')](_0x43dbb1['templates'][_0x1e1383['id']],_0x1e1383);}}}return _0x43dbb1['templates'];};};Realtime[_0x828c('0x3a')][_0x828c('0x45')]=function(){var _0x3f82cc=this;return function(_0x4ce610){if(_0x4ce610){freeIsNotKey(_0x4ce610,_0x3f82cc[_0x828c('0x1e')],'id');for(var _0x41052d=0x0,_0x5ad055={},_0x5b9669={};_0x41052d<_0x4ce610['length'];_0x41052d+=0x1){_0x5ad055=_0x4ce610[_0x41052d];if(_[_0x828c('0x41')](_0x3f82cc['zendeskAccounts'][_0x5ad055['id']])){_0x3f82cc[_0x828c('0x1e')][_0x5ad055['id']]=new ZendeskAccount(_0x5ad055);}else{_0x3f82cc[_0x828c('0x3b')](_0x3f82cc['zendeskAccounts'][_0x5ad055['id']],_0x5ad055);}}}return _0x3f82cc['zendeskAccounts'];};};Realtime[_0x828c('0x3a')][_0x828c('0x46')]=function(){var _0x2a74ed=this;return function(_0x29f75b){if(_0x29f75b){freeIsNotKey(_0x29f75b,_0x2a74ed['salesforceAccounts'],'id');for(var _0x407411=0x0,_0x203bfa={},_0x3e02a8={};_0x407411<_0x29f75b['length'];_0x407411+=0x1){_0x203bfa=_0x29f75b[_0x407411];if(_[_0x828c('0x41')](_0x2a74ed[_0x828c('0x1f')][_0x203bfa['id']])){_0x2a74ed[_0x828c('0x1f')][_0x203bfa['id']]=new SalesforceAccount(_0x203bfa);}else{_0x2a74ed['mergeFromDatabase'](_0x2a74ed[_0x828c('0x1f')][_0x203bfa['id']],_0x203bfa);}}}return _0x2a74ed[_0x828c('0x1f')];};};Realtime[_0x828c('0x3a')][_0x828c('0x47')]=function(){var _0x1b5ee6=this;return function(_0x19c125){if(_0x19c125){freeIsNotKey(_0x19c125,_0x1b5ee6[_0x828c('0x21')],'id');for(var _0x1e3545=0x0,_0x2764ea={},_0x2ca582={};_0x1e3545<_0x19c125[_0x828c('0x3d')];_0x1e3545+=0x1){_0x2764ea=_0x19c125[_0x1e3545];if(_['isUndefined'](_0x1b5ee6[_0x828c('0x21')][_0x2764ea['id']])){_0x1b5ee6['freshdeskAccounts'][_0x2764ea['id']]=new FreshdeskAccount(_0x2764ea);}else{_0x1b5ee6[_0x828c('0x3b')](_0x1b5ee6[_0x828c('0x21')][_0x2764ea['id']],_0x2764ea);}}}return _0x1b5ee6[_0x828c('0x21')];};};Realtime['prototype'][_0x828c('0x48')]=function(){var _0x2e939d=this;return function(_0x5863ab){if(_0x5863ab){freeIsNotKey(_0x5863ab,_0x2e939d[_0x828c('0x22')],'id');for(var _0x56b038=0x0,_0x503132={},_0x2f5ada={};_0x56b038<_0x5863ab[_0x828c('0x3d')];_0x56b038+=0x1){_0x503132=_0x5863ab[_0x56b038];if(_[_0x828c('0x41')](_0x2e939d[_0x828c('0x22')][_0x503132['id']])){_0x2e939d[_0x828c('0x22')][_0x503132['id']]=new ZohoAccount(_0x503132);}else{_0x2e939d[_0x828c('0x3b')](_0x2e939d['zohoAccounts'][_0x503132['id']],_0x503132);}}}return _0x2e939d['zohoAccounts'];};};Realtime[_0x828c('0x3a')]['initDeskAccounts']=function(){var _0x587c2f=this;return function(_0x5dc2c4){if(_0x5dc2c4){freeIsNotKey(_0x5dc2c4,_0x587c2f[_0x828c('0x23')],'id');for(var _0x2a9be2=0x0,_0x20e222={},_0x2056d3={};_0x2a9be2<_0x5dc2c4[_0x828c('0x3d')];_0x2a9be2+=0x1){_0x20e222=_0x5dc2c4[_0x2a9be2];if(_[_0x828c('0x41')](_0x587c2f[_0x828c('0x23')][_0x20e222['id']])){_0x587c2f[_0x828c('0x23')][_0x20e222['id']]=new DeskAccount(_0x20e222);}else{_0x587c2f[_0x828c('0x3b')](_0x587c2f[_0x828c('0x23')][_0x20e222['id']],_0x20e222);}}}return _0x587c2f['deskAccounts'];};};Realtime[_0x828c('0x3a')]['initSugarcrmAccounts']=function(){var _0x4b6abb=this;return function(_0x5a7af2){if(_0x5a7af2){freeIsNotKey(_0x5a7af2,_0x4b6abb[_0x828c('0x20')],'id');for(var _0x1178d8=0x0,_0x1f226b={},_0xf41c04={};_0x1178d8<_0x5a7af2[_0x828c('0x3d')];_0x1178d8+=0x1){_0x1f226b=_0x5a7af2[_0x1178d8];if(_[_0x828c('0x41')](_0x4b6abb[_0x828c('0x20')][_0x1f226b['id']])){_0x4b6abb['sugarcrmAccounts'][_0x1f226b['id']]=new SugarcrmAccount(_0x1f226b);}else{_0x4b6abb[_0x828c('0x3b')](_0x4b6abb[_0x828c('0x20')][_0x1f226b['id']],_0x1f226b);}}}return _0x4b6abb[_0x828c('0x20')];};};Realtime['prototype'][_0x828c('0x49')]=function(){var _0x306ab7=this;return function(_0x40b441){if(_0x40b441){freeIsNotKey(_0x40b441,_0x306ab7['vtigerAccounts'],'id');for(var _0x373148=0x0,_0x369c78={},_0x11ccf9={};_0x373148<_0x40b441[_0x828c('0x3d')];_0x373148+=0x1){_0x369c78=_0x40b441[_0x373148];if(_[_0x828c('0x41')](_0x306ab7['vtigerAccounts'][_0x369c78['id']])){_0x306ab7[_0x828c('0x4a')][_0x369c78['id']]=new VtigerAccount(_0x369c78);}else{_0x306ab7[_0x828c('0x3b')](_0x306ab7['vtigerAccounts'][_0x369c78['id']],_0x369c78);}}}return _0x306ab7[_0x828c('0x4a')];};};Realtime[_0x828c('0x3a')][_0x828c('0x4b')]=function(){var _0x236c4d=this;return function(_0x1ac3f6){if(_0x1ac3f6){freeIsNotKey(_0x1ac3f6,_0x236c4d[_0x828c('0x4c')],'id');for(var _0x55448f=0x0,_0x5fcd51={},_0xba30c5={};_0x55448f<_0x1ac3f6[_0x828c('0x3d')];_0x55448f+=0x1){_0x5fcd51=_0x1ac3f6[_0x55448f];if(_[_0x828c('0x41')](_0x236c4d[_0x828c('0x4c')][_0x5fcd51['id']])){_0x236c4d[_0x828c('0x4c')][_0x5fcd51['id']]=new ServicenowAccount(_0x5fcd51);}else{_0x236c4d[_0x828c('0x3b')](_0x236c4d[_0x828c('0x4c')][_0x5fcd51['id']],_0x5fcd51);}}}return _0x236c4d[_0x828c('0x4c')];};};Realtime[_0x828c('0x3a')]['initDynamics365Accounts']=function(){var _0x2116b0=this;return function(_0x353b0b){if(_0x353b0b){freeIsNotKey(_0x353b0b,_0x2116b0[_0x828c('0x4d')],'id');for(var _0x59ff06=0x0,_0x612ed1={},_0x1b1610={};_0x59ff06<_0x353b0b[_0x828c('0x3d')];_0x59ff06+=0x1){_0x612ed1=_0x353b0b[_0x59ff06];if(_[_0x828c('0x41')](_0x2116b0[_0x828c('0x4d')][_0x612ed1['id']])){_0x2116b0[_0x828c('0x4d')][_0x612ed1['id']]=new Dynamics365Account(_0x612ed1);}else{_0x2116b0[_0x828c('0x3b')](_0x2116b0[_0x828c('0x4d')][_0x612ed1['id']],_0x612ed1);}}}return _0x2116b0[_0x828c('0x4d')];};};Realtime[_0x828c('0x3a')][_0x828c('0x4e')]=function(){var _0x24077d=this;return function(_0x2c1af8){if(_0x2c1af8){freeIsNotKey(_0x2c1af8,_0x24077d[_0x828c('0x4f')],'id');for(var _0x3e25fe=0x0,_0x383e3f={},_0x35af92={};_0x3e25fe<_0x2c1af8[_0x828c('0x3d')];_0x3e25fe+=0x1){_0x383e3f=_0x2c1af8[_0x3e25fe];if(_['isUndefined'](_0x24077d[_0x828c('0x4f')][_0x383e3f['id']])){_0x24077d[_0x828c('0x4f')][_0x383e3f['id']]=new FreshsalesAccount(_0x383e3f);}else{_0x24077d[_0x828c('0x3b')](_0x24077d[_0x828c('0x4f')][_0x383e3f['id']],_0x383e3f);}}}return _0x24077d[_0x828c('0x4f')];};};Realtime[_0x828c('0x3a')][_0x828c('0x50')]=function(){var _0x3cd57a=this;return function(_0x515375){for(var _0x1e2c0f=0x0;_0x1e2c0f<_0x515375[_0x828c('0x3d')];_0x1e2c0f+=0x1){_['merge'](_0x3cd57a[_0x828c('0x15')][_0x515375[_0x1e2c0f][_0x828c('0x27')]],_0x515375[_0x1e2c0f]);}return _0x3cd57a[_0x828c('0x15')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x1a997d=this;return function(_0x433209){clearVoiceQueues(_0x1a997d[_0x828c('0x15')]);if(_0x433209){_0x433209=_['groupBy'](_0x433209,_0x828c('0x51'));for(var _0x3f33d7 in _0x433209){if(_0x433209['hasOwnProperty'](_0x3f33d7)){var _0xcfe37={};for(var _0x2e6b90=0x0;_0x2e6b90<_0x433209[_0x3f33d7][_0x828c('0x3d')];_0x2e6b90+=0x1){var _0x5a41b4=_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x52')];if(_0x1a997d[_0x828c('0x15')][_0x5a41b4]){if(_0x433209[_0x3f33d7][_0x2e6b90]['queuecallerexit']){_0x1a997d[_0x828c('0x15')][_0x5a41b4]['unmanaged']+=0x1;}if(_0x433209[_0x3f33d7][_0x2e6b90]['queuecallerabandon']){_0x1a997d['voiceQueues'][_0x5a41b4]['abandoned']+=0x1;}_0x1a997d[_0x828c('0x15')][_0x5a41b4]['sumHoldTime']+=moment(_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x53')])['diff'](moment(_0x433209[_0x3f33d7][_0x2e6b90]['queuecallerjoinAt']),_0x828c('0x54'))||0x0;if(_0x2e6b90===_0x433209[_0x3f33d7]['length']-0x1){_0x1a997d['voiceQueues'][_0x5a41b4][_0x828c('0x55')]+=moment(_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x56')]||_0x433209[_0x3f33d7][_0x2e6b90]['queuecallerabandonAt']||_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x57')])[_0x828c('0x58')](moment(_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x59')]),_0x828c('0x54'))||0x0;_0x1a997d[_0x828c('0x15')][_0x5a41b4][_0x828c('0x29')]+=0x1;if(_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x5a')]){_0x1a997d[_0x828c('0x15')][_0x5a41b4]['answered']+=0x1;_0x1a997d[_0x828c('0x15')][_0x5a41b4]['sumBillable']+=moment(_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x56')])[_0x828c('0x58')](moment(_0x433209[_0x3f33d7][_0x2e6b90][_0x828c('0x53')]),'seconds')||0x0;}}else{_0x1a997d['voiceQueues'][_0x5a41b4][_0x828c('0x55')]+=_0x1a997d[_0x828c('0x15')][_0x5a41b4][_0x828c('0x2b')]||0x0;}}}}}}return _0x1a997d[_0x828c('0x15')];};};Realtime[_0x828c('0x3a')][_0x828c('0x5b')]=function(){var _0x732a13=this;return function(_0x53a736){clearVoiceCallReports(_0x732a13[_0x828c('0x19')]);if(_0x53a736){for(var _0x328556=0x0;_0x328556<_0x53a736[_0x828c('0x3d')];_0x328556+=0x1){_0x732a13[_0x828c('0x19')][_0x828c('0x29')]+=0x1;_0x732a13['outbound'][_0x828c('0x55')]+=_0x53a736[_0x328556]['duration'];if(_0x53a736[_0x328556][_0x828c('0x5c')]===_0x828c('0x5d')){_0x732a13[_0x828c('0x19')]['answered']+=0x1;_0x732a13['outbound'][_0x828c('0x2b')]+=_0x53a736[_0x328556]['duration']-_0x53a736[_0x328556][_0x828c('0x5e')]||0x0;_0x732a13[_0x828c('0x19')][_0x828c('0x2c')]+=_0x53a736[_0x328556][_0x828c('0x5e')];}}}return _0x732a13[_0x828c('0x19')];};};Realtime[_0x828c('0x3a')][_0x828c('0x5f')]=function(){var _0x869c10=this;return function(_0x512c0b){if(_0x512c0b){freeIsNotKey(_0x512c0b,_0x869c10[_0x828c('0x17')],'name');for(var _0x2ceac0=0x0,_0x2766cc={};_0x2ceac0<_0x512c0b[_0x828c('0x3d')];_0x2ceac0+=0x1){_0x2766cc=_0x512c0b[_0x2ceac0];if(_[_0x828c('0x41')](_0x869c10[_0x828c('0x17')][_0x2766cc['name']])){_0x869c10[_0x828c('0x17')][_0x2766cc[_0x828c('0x27')]]=new Campaign(_0x2766cc);}else{_0x869c10[_0x828c('0x3b')](_0x869c10['campaigns'][_0x2766cc[_0x828c('0x27')]],_0x2766cc);_0x869c10[_0x828c('0x17')][_0x2766cc[_0x828c('0x27')]]['dialQueueProject']=_0x2766cc[_0x828c('0x60')]?_0x2766cc['SquareProject'][_0x828c('0x27')]:undefined;}}}return _0x869c10['campaigns'];};};Realtime[_0x828c('0x3a')][_0x828c('0x61')]=function(){var _0x4821d8=this;return function(_0x52dfbc){if(_0x52dfbc){freeIsNotKey(_0x52dfbc,_0x4821d8[_0x828c('0x1a')],'id');for(var _0x244c3c=0x0,_0x56a715={};_0x244c3c<_0x52dfbc[_0x828c('0x3d')];_0x244c3c+=0x1){_0x56a715=_0x52dfbc[_0x244c3c];if(_[_0x828c('0x41')](_0x4821d8[_0x828c('0x1a')][_0x56a715['id']])){_0x4821d8[_0x828c('0x1a')][_0x56a715['id']]=new VoiceExtension(_0x56a715);}else{_0x4821d8[_0x828c('0x3b')](_0x4821d8['voiceExtensions'][_0x56a715['id']],_0x56a715);}}}return _0x4821d8[_0x828c('0x1a')];};};Realtime[_0x828c('0x3a')][_0x828c('0x62')]=function(){var _0x5bf153=this;return function(_0x123e74){clearCampaigns(_0x5bf153[_0x828c('0x17')]);for(var _0x21ecb0=0x0;_0x21ecb0<_0x123e74[_0x828c('0x3d')];_0x21ecb0+=0x1){_[_0x828c('0x63')](_0x5bf153[_0x828c('0x17')][_0x123e74[_0x21ecb0]['name']],_0x123e74[_0x21ecb0]);}return _0x5bf153[_0x828c('0x17')];};};Realtime[_0x828c('0x3a')][_0x828c('0x64')]=function(){var _0x17f398=this;return function(_0x3c28b1){if(_0x3c28b1){freeIsNotKey(_0x3c28b1,_0x17f398[_0x828c('0x24')],'id');for(var _0x3b4383=0x0,_0x171f51={},_0x3c6837={};_0x3b4383<_0x3c28b1[_0x828c('0x3d')];_0x3b4383+=0x1){_0x171f51=_0x3c28b1[_0x3b4383];if(_[_0x828c('0x41')](_0x17f398[_0x828c('0x24')][_0x171f51['id']])){_0x17f398[_0x828c('0x24')][_0x171f51['id']]=new FaxAccount(_0x171f51);}else{_0x17f398[_0x828c('0x3b')](_0x17f398['faxAccounts'][_0x171f51['id']],_0x171f51);}}}return _0x17f398['faxAccounts'];};};Realtime[_0x828c('0x3a')]['getVoiceQueues']=function(){var _0x323038=this['voiceQueues'];var _0x4d9a12={};return voiceQueue[_0x828c('0x65')]()['then'](function(_0x44627e){_0x44627e[_0x828c('0x66')](function(_0x534ed1){if(_0x323038[_0x534ed1[_0x828c('0x27')]]===undefined){_0x4d9a12[_0x534ed1[_0x828c('0x27')]]=new VoiceQueue(_0x534ed1);}else{_0x4d9a12[_0x534ed1[_0x828c('0x27')]]=utils[_0x828c('0x67')](_0x323038[_0x534ed1[_0x828c('0x27')]],_0x534ed1);}});return _0x4d9a12;});};module[_0x828c('0x68')]=Realtime;
\ No newline at end of file
diff --git a/server/services/ami/realtime/utils.js b/server/services/ami/realtime/utils.js
new file mode 100644 (file)
index 0000000..a1a4e5e
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+'use strict';function mergeDBDataToRealtime(_0x1013ff,_0x1cb8d2){var _0x2e66de=Object['assign']({},_0x1013ff);for(var _0x27a4d4 in _0x1cb8d2){if(_0x2e66de['hasOwnProperty'](_0x27a4d4)){_0x2e66de[_0x27a4d4]=_0x1cb8d2[_0x27a4d4];}}return _0x2e66de;}exports['mergeDBDataToRealtime']=mergeDBDataToRealtime;
\ No newline at end of file
index 323526b..97900d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa995=['destinationchannel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','uniqueid','type','length','monitorFilename','monitors','createdAt','connectedlinename','membername','exten','originatecalleridnum','isArray','forEach','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf','transfererlinkedid','attendedTransfer','exports','moment','../../../config/environment','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','voiceCallReport','bind','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindTransfer','attendedtransfer','findAgent','find','isNil','name','interface','SIP/%s','connectedlinenum','accountcode','lastAssignedTo','format','queuecallercomplete','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create','match','getAgentByInternal','keys','getCallType','channel','split','outbound','internal','destination','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum'];(function(_0x4fe0ab,_0x247392){var _0x1004e2=function(_0x461a3a){while(--_0x461a3a){_0x4fe0ab['push'](_0x4fe0ab['shift']());}};_0x1004e2(++_0x247392);}(_0xa995,0x12b));var _0x5a99=function(_0x564a37,_0x219d66){_0x564a37=_0x564a37-0x0;var _0x222b2e=_0xa995[_0x564a37];return _0x222b2e;};'use strict';var _=require('lodash');var moment=require(_0x5a99('0x0'));var util=require('util');var config=require(_0x5a99('0x1'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x5a99('0x2'));var RpcVoiceDialReport=require(_0x5a99('0x3'));var RpcMemberReport=require(_0x5a99('0x4'));var RpcVoiceQueueReport=require(_0x5a99('0x5'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require(_0x5a99('0x6'));var VoiceQueueReport=require(_0x5a99('0x7'));var VoiceCallReport=require(_0x5a99('0x8'));var VoiceAgentReport=require(_0x5a99('0x9'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x5a99('0xa'));function Report(_0x32fd23){this[_0x5a99('0xb')]=_0x32fd23;this['agents']=_0x32fd23[_0x5a99('0xc')];this[_0x5a99('0xd')]=_0x32fd23[_0x5a99('0xd')];}Report[_0x5a99('0xe')][_0x5a99('0xf')]=function(_0x848333){var _0x399e12=new VoiceQueueReport(this[_0x5a99('0xb')]);var _0x54918c=new VoiceAgentReport(this[_0x5a99('0xb')]);var _0x20093b=new VoiceDialReport(this[_0x5a99('0xb')]);var _0x2c1101=new VoiceCallReport(this[_0x5a99('0xb')]);var _0x544e66=new UserReport(this[_0x5a99('0xb')]);if(config['xdr']&&config[_0x5a99('0x10')][_0x5a99('0x11')]){ami['on'](_0x5a99('0x12'),this[_0x5a99('0x13')]['bind'](this));ami['on']('custom:voiceCallReport',this[_0x5a99('0x14')][_0x5a99('0x15')](this));ami['on']('custom:voiceAgentReport',this[_0x5a99('0x16')][_0x5a99('0x15')](this));ami['on'](_0x5a99('0x17'),this[_0x5a99('0x18')][_0x5a99('0x15')](this));ami['on']('blindtransfer',this[_0x5a99('0x19')][_0x5a99('0x15')](this));ami['on'](_0x5a99('0x1a'),this['attendedTransfer'][_0x5a99('0x15')](this));}};Report[_0x5a99('0xe')][_0x5a99('0x1b')]=function(_0x40a29c){var _0x3eafd8;_0x3eafd8=_[_0x5a99('0x1c')](this[_0x5a99('0xc')],function(_0x80574c){return _0x80574c['accountcode']==_0x40a29c||_0x80574c['name']==_0x40a29c;});if(_[_0x5a99('0x1d')](_0x3eafd8)){var _0x19fa5a=_['find'](this[_0x5a99('0xd')],function(_0x55bb50){return _0x55bb50['accountcode']==_0x40a29c||_0x55bb50[_0x5a99('0x1e')]==_0x40a29c;});if(_0x19fa5a){_0x3eafd8=_[_0x5a99('0x1c')](this['agents'],function(_0x2d775e){return _0x2d775e[_0x5a99('0x1f')]==util['format'](_0x5a99('0x20'),_0x19fa5a[_0x5a99('0x1e')]);});}}return _0x3eafd8;};Report[_0x5a99('0xe')][_0x5a99('0x13')]=function(_0x4399bd){for(var _0x503411=0x0;_0x503411<_0x4399bd['length'];_0x503411+=0x1){var _0x2a900d=this['findAgent'](_0x4399bd[_0x503411][_0x5a99('0x21')]);if(_0x2a900d){_0x4399bd[_0x503411][_0x5a99('0x22')]=_0x2a900d[_0x5a99('0x22')];_0x4399bd[_0x503411]['assigned']=!![];_0x4399bd[_0x503411][_0x5a99('0x23')]=_0x2a900d[_0x5a99('0x1e')];_0x4399bd[_0x503411]['interface']=_[_0x5a99('0x1d')](_0x2a900d[_0x5a99('0x1f')])?util[_0x5a99('0x24')](_0x5a99('0x20'),_0x2a900d['name']):_0x2a900d[_0x5a99('0x1f')];if(_0x4399bd[_0x503411][_0x5a99('0x25')]){_0x4399bd[_0x503411]['queuecallercompleteAt']=moment()[_0x5a99('0x24')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x4399bd[_0x503411][_0x5a99('0x26')]){_0x4399bd[_0x503411][_0x5a99('0x27')]=moment()[_0x5a99('0x24')](_0x5a99('0x28'));}RpcMemberReport[_0x5a99('0x13')](_0x4399bd[_0x503411]);}RpcVoiceQueueReport[_0x5a99('0x29')](_0x4399bd[_0x503411]);}};function extractCalleridNumber(_0x47a34b){var _0x790ff8=_0x47a34b[_0x5a99('0x2a')](/<(.*?)>/);return _0x790ff8?_0x790ff8[0x1]:_0x47a34b;}Report['prototype'][_0x5a99('0x2b')]=function(_0x2197c5){for(var _0x43228c=0x0;_0x43228c<Object[_0x5a99('0x2c')](this[_0x5a99('0xc')])['length'];_0x43228c++){var _0x463dfb=Object[_0x5a99('0x2c')](this['agents'])[_0x43228c];var _0x52dd32=this[_0x5a99('0xc')][_0x463dfb];if(_0x52dd32[_0x5a99('0x22')]===Number(_0x2197c5))return _0x52dd32;}return null;};Report['prototype'][_0x5a99('0x2d')]=function(_0x35b3eb){var _0x3ffdbf=_0x35b3eb[_0x5a99('0x2e')][_0x5a99('0x2f')]('-')[0x0];var _0x261444=this['agents'][_0x3ffdbf];if(!_0x261444)_0x261444=this[_0x5a99('0x2b')](_0x35b3eb['calleridnum']);return!_0x261444?_0x5a99('0x30'):_0x5a99('0x31');};Report[_0x5a99('0xe')]['voiceCallReport']=function(_0x4cce51){_0x4cce51[_0x5a99('0x32')]=_0x4cce51[_0x5a99('0x32')]||_0x4cce51['exten'];if(_0x4cce51['type']=='dialer'){_0x4cce51[_0x5a99('0x33')]=_0x5a99('0x34');_0x4cce51[_0x5a99('0x35')]=_0x4cce51[_0x5a99('0x34')];if(_0x4cce51[_0x5a99('0x36')]==_0x5a99('0x37')){_0x4cce51[_0x5a99('0x22')]='';_0x4cce51['destination']=extractCalleridNumber(_0x4cce51[_0x5a99('0x38')]);}else if(_0x4cce51[_0x5a99('0x36')]==_0x5a99('0x39')){if(_0x4cce51[_0x5a99('0x32')]==_0x5a99('0x3a')){_0x4cce51[_0x5a99('0x32')]=extractCalleridNumber(_0x4cce51[_0x5a99('0x3b')]);_0x4cce51[_0x5a99('0x3c')]=_0x4cce51['originatecalleridnum'];_0x4cce51[_0x5a99('0x3d')]=[_0x4cce51[_0x5a99('0x2e')],_0x4cce51[_0x5a99('0x2e')]=_0x4cce51['destinationchannel']][0x0];_0x4cce51[_0x5a99('0x38')]=_0x4cce51[_0x5a99('0x3b')];}else{_0x4cce51[_0x5a99('0x32')]=_0x4cce51[_0x5a99('0x3c')];_0x4cce51[_0x5a99('0x3c')]=_0x4cce51['originatecalleridnum'];if(_0x4cce51[_0x5a99('0x3e')]==_0x5a99('0x3f')){_0x4cce51[_0x5a99('0x22')]=_0x4cce51[_0x5a99('0x21')];}else{_0x4cce51[_0x5a99('0x22')]='';}}}}else{_0x4cce51[_0x5a99('0x38')]=util[_0x5a99('0x24')](_0x5a99('0x40'),_0x4cce51[_0x5a99('0x41')],_0x4cce51[_0x5a99('0x3c')]);}if(RpcVoiceTransferReport[_0x5a99('0x42')][_0x4cce51[_0x5a99('0x43')]]){var _0x3ebd42=RpcVoiceTransferReport[_0x5a99('0x42')][_0x4cce51[_0x5a99('0x43')]];_0x3ebd42['transfereelinkedid']=_0x4cce51[_0x5a99('0x44')];RpcVoiceTransferReport[_0x5a99('0x19')](_0x3ebd42);delete RpcVoiceTransferReport[_0x5a99('0x42')][_0x4cce51[_0x5a99('0x43')]];}if(_['isNil'](_0x4cce51['type'])){_0x4cce51[_0x5a99('0x45')]=this['getCallType'](_0x4cce51);}if(_[_0x5a99('0x1d')](_0x4cce51['UserId'])){var _0x589e9a=_0x4cce51[_0x5a99('0x2e')][_0x5a99('0x2f')]('-')[0x0];var _0x3786cf=this['agents'][_0x589e9a];if(!_0x3786cf)_0x3786cf=this[_0x5a99('0x2b')](_0x4cce51[_0x5a99('0x22')]);if(_0x3786cf){_0x4cce51['UserId']=_0x3786cf['id'];_0x4cce51['membername']=_0x3786cf['name'];}}RpcVoiceCallReport['create'](_0x4cce51);if(_0x4cce51['monitor']){for(var _0x10f22b=0x0;_0x10f22b<_0x4cce51['monitors'][_0x5a99('0x46')];_0x10f22b+=0x1){_0x4cce51[_0x5a99('0x47')]=_0x4cce51[_0x5a99('0x48')][_0x10f22b]['filename'];_0x4cce51[_0x5a99('0x49')]=_0x4cce51[_0x5a99('0x48')][_0x10f22b][_0x5a99('0x49')];if(_0x4cce51['exten']==_0x5a99('0x3a')){_0x4cce51['calleridnum']=_0x4cce51[_0x5a99('0x21')];_0x4cce51['calleridname']=_0x4cce51[_0x5a99('0x4a')];_0x4cce51[_0x5a99('0x21')]=_0x4cce51[_0x5a99('0x22')];_0x4cce51[_0x5a99('0x4a')]=_0x4cce51[_0x5a99('0x4b')];_0x4cce51[_0x5a99('0x4c')]=_0x4cce51[_0x5a99('0x4d')];}else if(_0x4cce51[_0x5a99('0x4c')]=='xcally-motion-dialer'){_0x4cce51[_0x5a99('0x3c')]=_0x4cce51[_0x5a99('0x32')];_0x4cce51[_0x5a99('0x4c')]=_0x4cce51[_0x5a99('0x4d')];}RpcVoiceRecording['create'](_0x4cce51);}}};Report[_0x5a99('0xe')][_0x5a99('0x16')]=function(_0x5b8b10){if(_[_0x5a99('0x4e')](_0x5b8b10)){_0x5b8b10[_0x5a99('0x4f')](function(_0x3439b1){RpcVoiceAgentReport[_0x5a99('0x29')](_0x3439b1);});}else{RpcVoiceAgentReport[_0x5a99('0x29')](_0x5b8b10);}};Report[_0x5a99('0xe')]['voiceDialReport']=function(_0x4636f2){RpcVoiceDialReport[_0x5a99('0x29')](_0x4636f2);var _0x1eb9b1;var _0x589d7c;var _0x41a4f9=_0x4636f2[_0x5a99('0x2e')];if(_[_0x5a99('0x50')](_0x41a4f9,_0x5a99('0x51'))){_0x589d7c=_0x41a4f9[_0x5a99('0x52')](_0x41a4f9[_0x5a99('0x53')]('/')+0x1,_0x41a4f9[_0x5a99('0x53')]('@'));_0x1eb9b1=_['find'](this[_0x5a99('0xc')],function(_0x128311){return _0x128311[_0x5a99('0x54')]==_0x589d7c||_0x128311[_0x5a99('0x55')]==_0x589d7c||_0x128311['accountcode']==_0x589d7c;});}else{_0x589d7c=_0x41a4f9[_0x5a99('0x52')](_0x41a4f9['indexOf']('/')+0x1,_0x41a4f9[_0x5a99('0x56')]('-'));_0x1eb9b1=this[_0x5a99('0x1b')](_0x589d7c);}if(_0x1eb9b1){_0x4636f2[_0x5a99('0x1f')]=_[_0x5a99('0x1d')](_0x1eb9b1[_0x5a99('0x1f')])?util[_0x5a99('0x24')](_0x5a99('0x20'),_0x1eb9b1['name']):_0x1eb9b1[_0x5a99('0x1f')];_0x4636f2[_0x5a99('0x4b')]=_0x1eb9b1[_0x5a99('0x1e')];_0x4636f2[_0x5a99('0x22')]=_0x1eb9b1['accountcode'];RpcMemberReport[_0x5a99('0x18')](_0x4636f2);}};Report[_0x5a99('0xe')][_0x5a99('0x19')]=function(_0x1323bf){RpcVoiceTransferReport[_0x5a99('0x42')][_0x1323bf[_0x5a99('0x57')]]=_0x1323bf;};Report['prototype'][_0x5a99('0x58')]=function(_0x5b0023){RpcVoiceTransferReport[_0x5a99('0x58')](_0x5b0023);};module[_0x5a99('0x59')]=Report;
\ No newline at end of file
+var _0x1b28=['type','UserId','membername','monitor','monitors','monitorFilename','createdAt','exten','connectedlinename','xcally-motion-dialer','isArray','forEach','startsWith','Local','indexOf','mobile','phone','substring','lastIndexOf','attendedTransfer','exports','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','xdr','custom:voiceQueueReport','voiceQueueReport','custom:voiceCallReport','voiceCallReport','bind','custom:voiceAgentReport','voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent','find','accountcode','name','isNil','format','SIP/%s','connectedlinenum','assigned','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','create','match','getAgentByInternal','keys','length','getCallType','channel','split','outbound','destination','lastapplication','queue','lastdata','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','linkedid','transfers','transfereelinkedid','uniqueid'];(function(_0x4b968b,_0x10b4c7){var _0x54be9e=function(_0x5b9a6d){while(--_0x5b9a6d){_0x4b968b['push'](_0x4b968b['shift']());}};_0x54be9e(++_0x10b4c7);}(_0x1b28,0x73));var _0x81b2=function(_0x90ebf1,_0x77a7ee){_0x90ebf1=_0x90ebf1-0x0;var _0x4f20cd=_0x1b28[_0x90ebf1];return _0x4f20cd;};'use strict';var _=require('lodash');var moment=require(_0x81b2('0x0'));var util=require(_0x81b2('0x1'));var config=require(_0x81b2('0x2'));var ami=require(_0x81b2('0x3'));var RpcVoiceAgentReport=require(_0x81b2('0x4'));var RpcVoiceCallReport=require(_0x81b2('0x5'));var RpcVoiceDialReport=require(_0x81b2('0x6'));var RpcMemberReport=require(_0x81b2('0x7'));var RpcVoiceQueueReport=require(_0x81b2('0x8'));var RpcVoiceRecording=require(_0x81b2('0x9'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x81b2('0xa'));var VoiceCallReport=require(_0x81b2('0xb'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0x81b2('0xc'));var UserReport=require(_0x81b2('0xd'));function Report(_0x391ce1){this[_0x81b2('0xe')]=_0x391ce1;this[_0x81b2('0xf')]=_0x391ce1[_0x81b2('0xf')];this[_0x81b2('0x10')]=_0x391ce1[_0x81b2('0x10')];}Report[_0x81b2('0x11')]['sync']=function(_0xd2e34){var _0x177c19=new VoiceQueueReport(this['realtime']);var _0x4b8807=new VoiceAgentReport(this[_0x81b2('0xe')]);var _0x923830=new VoiceDialReport(this['realtime']);var _0x24668e=new VoiceCallReport(this['realtime']);var _0x5ea6a9=new UserReport(this[_0x81b2('0xe')]);if(config[_0x81b2('0x12')]&&config[_0x81b2('0x12')]['disabled']){ami['on'](_0x81b2('0x13'),this[_0x81b2('0x14')]['bind'](this));ami['on'](_0x81b2('0x15'),this[_0x81b2('0x16')][_0x81b2('0x17')](this));ami['on'](_0x81b2('0x18'),this[_0x81b2('0x19')][_0x81b2('0x17')](this));ami['on']('custom:voiceDialReport',this[_0x81b2('0x1a')][_0x81b2('0x17')](this));ami['on'](_0x81b2('0x1b'),this[_0x81b2('0x1c')]['bind'](this));ami['on'](_0x81b2('0x1d'),this['attendedTransfer']['bind'](this));}};Report[_0x81b2('0x11')][_0x81b2('0x1e')]=function(_0x2c7b81){var _0x22f156;_0x22f156=_[_0x81b2('0x1f')](this[_0x81b2('0xf')],function(_0x41f87b){return _0x41f87b[_0x81b2('0x20')]==_0x2c7b81||_0x41f87b[_0x81b2('0x21')]==_0x2c7b81;});if(_[_0x81b2('0x22')](_0x22f156)){var _0x116164=_['find'](this['telephones'],function(_0x2826c9){return _0x2826c9[_0x81b2('0x20')]==_0x2c7b81||_0x2826c9[_0x81b2('0x21')]==_0x2c7b81;});if(_0x116164){_0x22f156=_[_0x81b2('0x1f')](this[_0x81b2('0xf')],function(_0x4b7b48){return _0x4b7b48['interface']==util[_0x81b2('0x23')](_0x81b2('0x24'),_0x116164[_0x81b2('0x21')]);});}}return _0x22f156;};Report[_0x81b2('0x11')][_0x81b2('0x14')]=function(_0x4459f7){for(var _0x61fbdf=0x0;_0x61fbdf<_0x4459f7['length'];_0x61fbdf+=0x1){var _0x316169=this[_0x81b2('0x1e')](_0x4459f7[_0x61fbdf][_0x81b2('0x25')]);if(_0x316169){_0x4459f7[_0x61fbdf][_0x81b2('0x20')]=_0x316169[_0x81b2('0x20')];_0x4459f7[_0x61fbdf][_0x81b2('0x26')]=!![];_0x4459f7[_0x61fbdf][_0x81b2('0x27')]=_0x316169[_0x81b2('0x21')];_0x4459f7[_0x61fbdf][_0x81b2('0x28')]=_['isNil'](_0x316169[_0x81b2('0x28')])?util['format'](_0x81b2('0x24'),_0x316169[_0x81b2('0x21')]):_0x316169[_0x81b2('0x28')];if(_0x4459f7[_0x61fbdf][_0x81b2('0x29')]){_0x4459f7[_0x61fbdf][_0x81b2('0x2a')]=moment()[_0x81b2('0x23')](_0x81b2('0x2b'));}if(_0x4459f7[_0x61fbdf]['queuecallerexit']){_0x4459f7[_0x61fbdf]['queuecallerexitAt']=moment()[_0x81b2('0x23')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport['voiceQueueReport'](_0x4459f7[_0x61fbdf]);}RpcVoiceQueueReport[_0x81b2('0x2c')](_0x4459f7[_0x61fbdf]);}};function extractCalleridNumber(_0x1cb906){var _0x14fb88=_0x1cb906[_0x81b2('0x2d')](/<(.*?)>/);return _0x14fb88?_0x14fb88[0x1]:_0x1cb906;}Report[_0x81b2('0x11')][_0x81b2('0x2e')]=function(_0xa1c1f3){for(var _0x3e1824=0x0;_0x3e1824<Object[_0x81b2('0x2f')](this[_0x81b2('0xf')])[_0x81b2('0x30')];_0x3e1824++){var _0x1012d8=Object['keys'](this[_0x81b2('0xf')])[_0x3e1824];var _0x3e346e=this[_0x81b2('0xf')][_0x1012d8];if(_0x3e346e[_0x81b2('0x20')]===Number(_0xa1c1f3))return _0x3e346e;}return null;};Report[_0x81b2('0x11')][_0x81b2('0x31')]=function(_0x2f419e){var _0x330d1b=_0x2f419e[_0x81b2('0x32')][_0x81b2('0x33')]('-')[0x0];var _0x4fd7e3=this[_0x81b2('0xf')][_0x330d1b];if(!_0x4fd7e3)_0x4fd7e3=this['getAgentByInternal'](_0x2f419e['calleridnum']);return!_0x4fd7e3?_0x81b2('0x34'):'internal';};Report['prototype'][_0x81b2('0x16')]=function(_0x2b08f3){_0x2b08f3[_0x81b2('0x35')]=_0x2b08f3['destination']||_0x2b08f3['exten'];if(_0x2b08f3['type']=='dialer'){_0x2b08f3[_0x81b2('0x36')]=_0x81b2('0x37');_0x2b08f3[_0x81b2('0x38')]=_0x2b08f3[_0x81b2('0x37')];if(_0x2b08f3['context']==_0x81b2('0x39')){_0x2b08f3[_0x81b2('0x20')]='';_0x2b08f3[_0x81b2('0x35')]=extractCalleridNumber(_0x2b08f3[_0x81b2('0x3a')]);}else if(_0x2b08f3['context']==_0x81b2('0x3b')){if(_0x2b08f3[_0x81b2('0x35')]==_0x81b2('0x3c')){_0x2b08f3[_0x81b2('0x35')]=extractCalleridNumber(_0x2b08f3[_0x81b2('0x3d')]);_0x2b08f3[_0x81b2('0x3e')]=_0x2b08f3[_0x81b2('0x3f')];_0x2b08f3[_0x81b2('0x40')]=[_0x2b08f3[_0x81b2('0x32')],_0x2b08f3['channel']=_0x2b08f3[_0x81b2('0x40')]][0x0];_0x2b08f3['callerid']=_0x2b08f3[_0x81b2('0x3d')];}else{_0x2b08f3[_0x81b2('0x35')]=_0x2b08f3['calleridnum'];_0x2b08f3[_0x81b2('0x3e')]=_0x2b08f3[_0x81b2('0x3f')];if(_0x2b08f3[_0x81b2('0x41')]==_0x81b2('0x42')){_0x2b08f3[_0x81b2('0x20')]=_0x2b08f3[_0x81b2('0x25')];}else{_0x2b08f3[_0x81b2('0x20')]='';}}}}else{_0x2b08f3[_0x81b2('0x3a')]=util[_0x81b2('0x23')](_0x81b2('0x43'),_0x2b08f3[_0x81b2('0x44')],_0x2b08f3[_0x81b2('0x3e')]);}if(RpcVoiceTransferReport['transfers'][_0x2b08f3[_0x81b2('0x45')]]){var _0x131794=RpcVoiceTransferReport[_0x81b2('0x46')][_0x2b08f3[_0x81b2('0x45')]];_0x131794[_0x81b2('0x47')]=_0x2b08f3[_0x81b2('0x48')];RpcVoiceTransferReport['blindTransfer'](_0x131794);delete RpcVoiceTransferReport['transfers'][_0x2b08f3[_0x81b2('0x45')]];}if(_[_0x81b2('0x22')](_0x2b08f3['type'])){_0x2b08f3[_0x81b2('0x49')]=this[_0x81b2('0x31')](_0x2b08f3);}if(_['isNil'](_0x2b08f3[_0x81b2('0x4a')])){var _0x1ece76=_0x2b08f3[_0x81b2('0x32')][_0x81b2('0x33')]('-')[0x0];var _0x190560=this[_0x81b2('0xf')][_0x1ece76];if(!_0x190560)_0x190560=this[_0x81b2('0x2e')](_0x2b08f3[_0x81b2('0x20')]);if(_0x190560){_0x2b08f3[_0x81b2('0x4a')]=_0x190560['id'];_0x2b08f3[_0x81b2('0x4b')]=_0x190560[_0x81b2('0x21')];}}RpcVoiceCallReport[_0x81b2('0x2c')](_0x2b08f3);if(_0x2b08f3[_0x81b2('0x4c')]){for(var _0x2a570b=0x0;_0x2a570b<_0x2b08f3[_0x81b2('0x4d')][_0x81b2('0x30')];_0x2a570b+=0x1){_0x2b08f3[_0x81b2('0x4e')]=_0x2b08f3[_0x81b2('0x4d')][_0x2a570b]['filename'];_0x2b08f3[_0x81b2('0x4f')]=_0x2b08f3['monitors'][_0x2a570b][_0x81b2('0x4f')];if(_0x2b08f3[_0x81b2('0x50')]==_0x81b2('0x3c')){_0x2b08f3[_0x81b2('0x3e')]=_0x2b08f3[_0x81b2('0x25')];_0x2b08f3[_0x81b2('0x44')]=_0x2b08f3[_0x81b2('0x51')];_0x2b08f3[_0x81b2('0x25')]=_0x2b08f3[_0x81b2('0x20')];_0x2b08f3[_0x81b2('0x51')]=_0x2b08f3[_0x81b2('0x4b')];_0x2b08f3['exten']=_0x2b08f3[_0x81b2('0x3f')];}else if(_0x2b08f3['exten']==_0x81b2('0x52')){_0x2b08f3[_0x81b2('0x3e')]=_0x2b08f3[_0x81b2('0x35')];_0x2b08f3[_0x81b2('0x50')]=_0x2b08f3[_0x81b2('0x3f')];}RpcVoiceRecording['create'](_0x2b08f3);}}};Report[_0x81b2('0x11')]['voiceAgentReport']=function(_0x4b6970){if(_[_0x81b2('0x53')](_0x4b6970)){_0x4b6970[_0x81b2('0x54')](function(_0x2b6b86){RpcVoiceAgentReport['create'](_0x2b6b86);});}else{RpcVoiceAgentReport[_0x81b2('0x2c')](_0x4b6970);}};Report['prototype'][_0x81b2('0x1a')]=function(_0x125f8f){RpcVoiceDialReport[_0x81b2('0x2c')](_0x125f8f);var _0x24fefa;var _0x1ac644;var _0x2b15c0=_0x125f8f[_0x81b2('0x32')];if(_[_0x81b2('0x55')](_0x2b15c0,_0x81b2('0x56'))){_0x1ac644=_0x2b15c0['substring'](_0x2b15c0['indexOf']('/')+0x1,_0x2b15c0[_0x81b2('0x57')]('@'));_0x24fefa=_[_0x81b2('0x1f')](this['agents'],function(_0x102400){return _0x102400[_0x81b2('0x58')]==_0x1ac644||_0x102400[_0x81b2('0x59')]==_0x1ac644||_0x102400['accountcode']==_0x1ac644;});}else{_0x1ac644=_0x2b15c0[_0x81b2('0x5a')](_0x2b15c0[_0x81b2('0x57')]('/')+0x1,_0x2b15c0[_0x81b2('0x5b')]('-'));_0x24fefa=this[_0x81b2('0x1e')](_0x1ac644);}if(_0x24fefa){_0x125f8f['interface']=_['isNil'](_0x24fefa[_0x81b2('0x28')])?util[_0x81b2('0x23')](_0x81b2('0x24'),_0x24fefa[_0x81b2('0x21')]):_0x24fefa[_0x81b2('0x28')];_0x125f8f[_0x81b2('0x4b')]=_0x24fefa[_0x81b2('0x21')];_0x125f8f[_0x81b2('0x20')]=_0x24fefa[_0x81b2('0x20')];RpcMemberReport[_0x81b2('0x1a')](_0x125f8f);}};Report[_0x81b2('0x11')][_0x81b2('0x1c')]=function(_0xd87e2a){RpcVoiceTransferReport[_0x81b2('0x46')][_0xd87e2a['transfererlinkedid']]=_0xd87e2a;};Report[_0x81b2('0x11')][_0x81b2('0x5c')]=function(_0xf1cf1b){RpcVoiceTransferReport[_0x81b2('0x5c')](_0xf1cf1b);};module[_0x81b2('0x5d')]=Report;
\ No newline at end of file
index 9568f3a..338f044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f0e=['trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','username','state','[userReport][registry]','find','stateRegistry','omit','event','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','inuse','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','startsWith','Local','substring','indexOf','mobile','phone','updateStatusRealtime','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults'];(function(_0x3c7577,_0x46dcf5){var _0x35dde6=function(_0x4f6948){while(--_0x4f6948){_0x3c7577['push'](_0x3c7577['shift']());}};_0x35dde6(++_0x46dcf5);}(_0x7f0e,0x8e));var _0xe7f0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x7f0e[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xe7f0('0x0'));var moment=require(_0xe7f0('0x1'));var util=require(_0xe7f0('0x2'));var Redis=require(_0xe7f0('0x3'));var BPromise=require(_0xe7f0('0x4'));var config=require(_0xe7f0('0x5'));var logger=require(_0xe7f0('0x6'))(_0xe7f0('0x7'));var ami=require('../ami');config[_0xe7f0('0x8')]=_[_0xe7f0('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe7f0('0x8')]));function UserReport(_0x50fb09){this['trunks']=_0x50fb09[_0xe7f0('0xa')];this[_0xe7f0('0xb')]=_0x50fb09[_0xe7f0('0xb')];this[_0xe7f0('0xc')]=_0x50fb09[_0xe7f0('0xc')];ami['on'](_0xe7f0('0xd'),this[_0xe7f0('0xe')][_0xe7f0('0xf')](this));ami['on'](_0xe7f0('0x10'),this[_0xe7f0('0xe')][_0xe7f0('0xf')](this));ami['on'](_0xe7f0('0x11'),this[_0xe7f0('0x12')][_0xe7f0('0xf')](this));ami['on']('peerstatus',this[_0xe7f0('0x13')][_0xe7f0('0xf')](this));return this[_0xe7f0('0x14')]();}function showSipRegistrations(){Promise[_0xe7f0('0x15')]()[_0xe7f0('0x16')](ami[_0xe7f0('0x17')]())[_0xe7f0('0x18')](function(_0x2738c1){logger[_0xe7f0('0x19')](_0xe7f0('0x1a'),util['inspect'](_0x2738c1,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xe7f0('0x15')]()[_0xe7f0('0x16')](ami[_0xe7f0('0x1b')]())['catch'](function(_0xf7dcec){logger['error']('[userReport][devicestatelist]',util[_0xe7f0('0x1c')](_0xf7dcec,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xe7f0('0x15')]()[_0xe7f0('0x16')](ami[_0xe7f0('0x1d')]())[_0xe7f0('0x18')](function(_0x39c46a){logger[_0xe7f0('0x19')](_0xe7f0('0x1e'),util[_0xe7f0('0x1c')](_0x39c46a,{'showHidden':![],'depth':null}));});}UserReport[_0xe7f0('0x1f')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0xe7f0('0x15')]()['then'](showSipRegistrations())[_0xe7f0('0x16')](listDeviceStates())[_0xe7f0('0x16')](showPeersStatus());},0x32c8);};UserReport[_0xe7f0('0x1f')][_0xe7f0('0x20')]=function(_0x5f3531){return _0x5f3531!==null&&!_[_0xe7f0('0x21')](_0x5f3531);};UserReport[_0xe7f0('0x1f')][_0xe7f0('0x22')]=function(_0x214acc,_0x27099a,_0x359c24){io['to'](_0x214acc)['emit'](_0x27099a,_0x359c24);};UserReport[_0xe7f0('0x1f')][_0xe7f0('0xe')]=function(_0xf23cc5){try{if(this[_0xe7f0('0x20')](_0xf23cc5)){logger[_0xe7f0('0x23')]('[userReport][registry]\x20registry:%s\x20state:%s',_0xf23cc5[_0xe7f0('0x24')],_0xf23cc5[_0xe7f0('0x25')]);logger['debug'](_0xe7f0('0x26'),util['inspect'](_0xf23cc5,{'showHidden':![],'depth':null}));var _0x2c2f7e=_[_0xe7f0('0x27')](this[_0xe7f0('0xa')],{'defaultuser':_0xf23cc5[_0xe7f0('0x24')]});if(_0x2c2f7e){_0xf23cc5[_0xe7f0('0x28')]=_0xf23cc5[_0xe7f0('0x25')];_['merge'](_0x2c2f7e,_[_0xe7f0('0x29')](_0xf23cc5,[_0xe7f0('0x2a'),'actionid',_0xe7f0('0x24'),_0xe7f0('0x25')]));logger[_0xe7f0('0x2b')](_0xe7f0('0x2c'),util['inspect'](_0x2c2f7e,{'showHidden':![],'depth':null}));this[_0xe7f0('0x22')](util[_0xe7f0('0x2d')](_0xe7f0('0x2e'),_0x2c2f7e[_0xe7f0('0x2f')]),_0xe7f0('0x30'),_0x2c2f7e);}}}catch(_0x535b1a){logger[_0xe7f0('0x19')]('[userReport][registry]',util['inspect'](_0x535b1a,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x1eb3fc){try{if(this[_0xe7f0('0x20')](_0x1eb3fc)){logger[_0xe7f0('0x23')](_0xe7f0('0x31'),_0x1eb3fc['device'],_0x1eb3fc[_0xe7f0('0x25')]);logger[_0xe7f0('0x2b')](_0xe7f0('0x32'),util[_0xe7f0('0x1c')](_0x1eb3fc,{'showHidden':![],'depth':null}));if(this[_0xe7f0('0xb')][_0x1eb3fc[_0xe7f0('0x33')]]){if(!this[_0xe7f0('0xb')][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x34')]||_0x1eb3fc[_0xe7f0('0x25')]['toLowerCase']()==_0xe7f0('0x35')){this['agents'][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x34')]=![];if(this[_0xe7f0('0xb')][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x25')]!==_0x1eb3fc[_0xe7f0('0x25')][_0xe7f0('0x36')]()){this[_0xe7f0('0xb')][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x37')]=_[_0xe7f0('0x38')](moment()[_0xe7f0('0x2d')]('x'));}this[_0xe7f0('0xb')][_0x1eb3fc[_0xe7f0('0x33')]]['state']=_0x1eb3fc[_0xe7f0('0x25')][_0xe7f0('0x36')]();this[_0xe7f0('0xb')][_0x1eb3fc[_0xe7f0('0x33')]]['updateStatusRealtime'](_0x1eb3fc);}}else if(this['telephones'][_0x1eb3fc[_0xe7f0('0x33')]]){if(this[_0xe7f0('0xc')][_0x1eb3fc[_0xe7f0('0x33')]]['state']!==_0x1eb3fc[_0xe7f0('0x25')][_0xe7f0('0x36')]()){this['telephones'][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x37')]=_['toNumber'](moment()['format']('x'));}this[_0xe7f0('0xc')][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x25')]=_0x1eb3fc['state'][_0xe7f0('0x36')]();logger[_0xe7f0('0x2b')](_0xe7f0('0x39'),util['inspect'](this[_0xe7f0('0xc')][_0x1eb3fc['device']],{'showHidden':![],'depth':null}));this[_0xe7f0('0x22')](util[_0xe7f0('0x2d')](_0xe7f0('0x3a'),this['telephones'][_0x1eb3fc['device']][_0xe7f0('0x2f')]),_0xe7f0('0x3b'),this[_0xe7f0('0xc')][_0x1eb3fc[_0xe7f0('0x33')]]);}else if(this[_0xe7f0('0xa')][_0x1eb3fc[_0xe7f0('0x33')]]){if(this[_0xe7f0('0xa')][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x25')]!==_0x1eb3fc[_0xe7f0('0x25')]['toLowerCase']()){this['trunks'][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x37')]=_[_0xe7f0('0x38')](moment()['format']('x'));}this[_0xe7f0('0xa')][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x25')]=_0x1eb3fc[_0xe7f0('0x25')][_0xe7f0('0x36')]();logger[_0xe7f0('0x2b')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xe7f0('0x1c')](this['trunks'][_0x1eb3fc['device']],{'showHidden':![],'depth':null}));this[_0xe7f0('0x22')](util['format'](_0xe7f0('0x2e'),this['trunks'][_0x1eb3fc[_0xe7f0('0x33')]][_0xe7f0('0x2f')]),_0xe7f0('0x30'),this[_0xe7f0('0xa')][_0x1eb3fc[_0xe7f0('0x33')]]);}else if(_[_0xe7f0('0x3c')](_0x1eb3fc[_0xe7f0('0x33')],_0xe7f0('0x3d'))){var _0x32ee91=_0x1eb3fc[_0xe7f0('0x33')];var _0x32984e=_0x32ee91[_0xe7f0('0x3e')](_0x32ee91[_0xe7f0('0x3f')]('/')+0x1,_0x32ee91[_0xe7f0('0x3f')]('@'));var _0x58c620=_['find'](this[_0xe7f0('0xb')],function(_0x1369d5){return _0x1369d5[_0xe7f0('0x40')]==_0x32984e||_0x1369d5[_0xe7f0('0x41')]==_0x32984e||_0x1369d5['accountcode']==_0x32984e;});if(_0x58c620){if(_0x58c620[_0xe7f0('0x25')]!==_0x1eb3fc[_0xe7f0('0x25')]['toLowerCase']()){_0x58c620[_0xe7f0('0x37')]=_[_0xe7f0('0x38')](moment()[_0xe7f0('0x2d')]('x'));}_0x58c620[_0xe7f0('0x25')]=_0x1eb3fc[_0xe7f0('0x25')][_0xe7f0('0x36')]();_0x58c620[_0xe7f0('0x34')]=!![];_0x58c620[_0xe7f0('0x42')](_0x1eb3fc);}}}}catch(_0x1128b6){logger[_0xe7f0('0x19')](_0xe7f0('0x32'),util[_0xe7f0('0x1c')](_0x1128b6,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xe7f0('0x13')]=function(_0x5b6474){try{if(this['isNotNull'](_0x5b6474)&&this[_0xe7f0('0x20')](_0x5b6474[_0xe7f0('0x43')])){logger[_0xe7f0('0x23')](_0xe7f0('0x44'),_0x5b6474[_0xe7f0('0x45')],_0x5b6474[_0xe7f0('0x46')],_0x5b6474[_0xe7f0('0x43')]);logger[_0xe7f0('0x2b')](_0xe7f0('0x47'),util[_0xe7f0('0x1c')](_0x5b6474,{'showHidden':![],'depth':null}));if(this[_0xe7f0('0xb')][_0x5b6474[_0xe7f0('0x45')]]){if(!this['agents'][_0x5b6474[_0xe7f0('0x45')]][_0xe7f0('0x34')]||_0x5b6474[_0xe7f0('0x43')]['toLowerCase']()==_0xe7f0('0x48')){this['agents'][_0x5b6474[_0xe7f0('0x45')]]['local']=![];this['agents'][_0x5b6474[_0xe7f0('0x45')]][_0xe7f0('0x49')]=_0x5b6474[_0xe7f0('0x43')][_0xe7f0('0x36')]();this[_0xe7f0('0xb')][_0x5b6474['peer']]['address']=_0x5b6474['address'];this[_0xe7f0('0xb')][_0x5b6474[_0xe7f0('0x45')]][_0xe7f0('0x42')](_0x5b6474);}}else if(this['telephones'][_0x5b6474[_0xe7f0('0x45')]]){this['telephones'][_0x5b6474['peer']][_0xe7f0('0x49')]=_0x5b6474[_0xe7f0('0x43')]['toLowerCase']();this[_0xe7f0('0xc')][_0x5b6474[_0xe7f0('0x45')]][_0xe7f0('0x46')]=_0x5b6474[_0xe7f0('0x46')];logger[_0xe7f0('0x2b')](_0xe7f0('0x4a'),util[_0xe7f0('0x1c')](this['telephones'][_0x5b6474[_0xe7f0('0x45')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xe7f0('0x2d')](_0xe7f0('0x3a'),this[_0xe7f0('0xc')][_0x5b6474['peer']][_0xe7f0('0x2f')]),_0xe7f0('0x3b'),this['telephones'][_0x5b6474[_0xe7f0('0x45')]]);}else if(this[_0xe7f0('0xa')][_0x5b6474[_0xe7f0('0x45')]]){this[_0xe7f0('0xa')][_0x5b6474[_0xe7f0('0x45')]]['status']=_0x5b6474[_0xe7f0('0x43')][_0xe7f0('0x36')]();this['trunks'][_0x5b6474[_0xe7f0('0x45')]][_0xe7f0('0x46')]=_0x5b6474[_0xe7f0('0x46')];logger[_0xe7f0('0x2b')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0xe7f0('0xa')][_0x5b6474[_0xe7f0('0x45')]],{'showHidden':![],'depth':null}));this[_0xe7f0('0x22')](util[_0xe7f0('0x2d')]('trunk:%s',this[_0xe7f0('0xa')][_0x5b6474[_0xe7f0('0x45')]][_0xe7f0('0x2f')]),_0xe7f0('0x30'),this[_0xe7f0('0xa')][_0x5b6474[_0xe7f0('0x45')]]);}}}catch(_0x184eb1){logger['error'](_0xe7f0('0x47'),util[_0xe7f0('0x1c')](_0x184eb1,{'showHidden':![],'depth':null}));}};module[_0xe7f0('0x4b')]=UserReport;
\ No newline at end of file
+var _0xb089=['bind','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','state','debug','find','username','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','mobile','accountcode','updateStatusRealtime','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','trunks','agents','telephones','syncRegistry','registry'];(function(_0x5aca71,_0x322e2f){var _0x9f263d=function(_0x512463){while(--_0x512463){_0x5aca71['push'](_0x5aca71['shift']());}};_0x9f263d(++_0x322e2f);}(_0xb089,0xca));var _0x9b08=function(_0x458ab0,_0x43163a){_0x458ab0=_0x458ab0-0x0;var _0x52ec0e=_0xb089[_0x458ab0];return _0x52ec0e;};'use strict';var _=require(_0x9b08('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x9b08('0x1'));var BPromise=require(_0x9b08('0x2'));var config=require(_0x9b08('0x3'));var logger=require(_0x9b08('0x4'))(_0x9b08('0x5'));var ami=require(_0x9b08('0x6'));config[_0x9b08('0x7')]=_[_0x9b08('0x8')](config[_0x9b08('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0xac7727){this[_0x9b08('0x9')]=_0xac7727['trunks'];this[_0x9b08('0xa')]=_0xac7727['agents'];this[_0x9b08('0xb')]=_0xac7727[_0x9b08('0xb')];ami['on']('registryentry',this[_0x9b08('0xc')]['bind'](this));ami['on'](_0x9b08('0xd'),this[_0x9b08('0xc')][_0x9b08('0xe')](this));ami['on'](_0x9b08('0xf'),this[_0x9b08('0x10')][_0x9b08('0xe')](this));ami['on']('peerstatus',this[_0x9b08('0x11')][_0x9b08('0xe')](this));return this[_0x9b08('0x12')]();}function showSipRegistrations(){Promise[_0x9b08('0x13')]()[_0x9b08('0x14')](ami[_0x9b08('0x15')]())[_0x9b08('0x16')](function(_0x3da4ce){logger[_0x9b08('0x17')](_0x9b08('0x18'),util[_0x9b08('0x19')](_0x3da4ce,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x9b08('0x14')](ami[_0x9b08('0x1a')]())[_0x9b08('0x16')](function(_0x81e27a){logger['error'](_0x9b08('0x1b'),util[_0x9b08('0x19')](_0x81e27a,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x9b08('0x13')]()['then'](ami['actionSipPeerStatus']())['catch'](function(_0x51d6d6){logger[_0x9b08('0x17')](_0x9b08('0x1c'),util[_0x9b08('0x19')](_0x51d6d6,{'showHidden':![],'depth':null}));});}UserReport[_0x9b08('0x1d')][_0x9b08('0x12')]=function(){setInterval(function(){BPromise[_0x9b08('0x13')]()[_0x9b08('0x14')](showSipRegistrations())['then'](listDeviceStates())[_0x9b08('0x14')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x9b08('0x1e')]=function(_0x4e575b){return _0x4e575b!==null&&!_['isUndefined'](_0x4e575b);};UserReport['prototype'][_0x9b08('0x1f')]=function(_0x493db6,_0x1a8268,_0x285a97){io['to'](_0x493db6)[_0x9b08('0x1f')](_0x1a8268,_0x285a97);};UserReport['prototype'][_0x9b08('0xc')]=function(_0x49a899){try{if(this['isNotNull'](_0x49a899)){logger[_0x9b08('0x20')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x49a899['username'],_0x49a899[_0x9b08('0x21')]);logger[_0x9b08('0x22')]('[userReport][registry]',util[_0x9b08('0x19')](_0x49a899,{'showHidden':![],'depth':null}));var _0x20f01f=_[_0x9b08('0x23')](this[_0x9b08('0x9')],{'defaultuser':_0x49a899[_0x9b08('0x24')]});if(_0x20f01f){_0x49a899['stateRegistry']=_0x49a899[_0x9b08('0x21')];_[_0x9b08('0x25')](_0x20f01f,_[_0x9b08('0x26')](_0x49a899,['event',_0x9b08('0x27'),_0x9b08('0x24'),_0x9b08('0x21')]));logger[_0x9b08('0x22')](_0x9b08('0x28'),util[_0x9b08('0x19')](_0x20f01f,{'showHidden':![],'depth':null}));this['emit'](util[_0x9b08('0x29')](_0x9b08('0x2a'),_0x20f01f['name']),_0x9b08('0x2b'),_0x20f01f);}}}catch(_0x2c321c){logger['error'](_0x9b08('0x2c'),util['inspect'](_0x2c321c,{'showHidden':![],'depth':null}));}};UserReport[_0x9b08('0x1d')]['syncDeviceState']=function(_0xa36600){try{if(this[_0x9b08('0x1e')](_0xa36600)){logger[_0x9b08('0x20')](_0x9b08('0x2d'),_0xa36600['device'],_0xa36600[_0x9b08('0x21')]);logger[_0x9b08('0x22')](_0x9b08('0x2e'),util['inspect'](_0xa36600,{'showHidden':![],'depth':null}));if(this[_0x9b08('0xa')][_0xa36600[_0x9b08('0x2f')]]){if(!this['agents'][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x30')]||_0xa36600['state'][_0x9b08('0x31')]()=='inuse'){this[_0x9b08('0xa')][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x30')]=![];if(this['agents'][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x21')]!==_0xa36600[_0x9b08('0x21')][_0x9b08('0x31')]()){this['agents'][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x32')]=_[_0x9b08('0x33')](moment()[_0x9b08('0x29')]('x'));}this[_0x9b08('0xa')][_0xa36600['device']][_0x9b08('0x21')]=_0xa36600[_0x9b08('0x21')][_0x9b08('0x31')]();this['agents'][_0xa36600[_0x9b08('0x2f')]]['updateStatusRealtime'](_0xa36600);}}else if(this['telephones'][_0xa36600[_0x9b08('0x2f')]]){if(this['telephones'][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x21')]!==_0xa36600[_0x9b08('0x21')][_0x9b08('0x31')]()){this['telephones'][_0xa36600[_0x9b08('0x2f')]]['stateTime']=_[_0x9b08('0x33')](moment()[_0x9b08('0x29')]('x'));}this[_0x9b08('0xb')][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x21')]=_0xa36600[_0x9b08('0x21')]['toLowerCase']();logger[_0x9b08('0x22')](_0x9b08('0x34'),util[_0x9b08('0x19')](this['telephones'][_0xa36600['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x9b08('0x29')](_0x9b08('0x35'),this[_0x9b08('0xb')][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x36')]),_0x9b08('0x37'),this[_0x9b08('0xb')][_0xa36600[_0x9b08('0x2f')]]);}else if(this['trunks'][_0xa36600['device']]){if(this[_0x9b08('0x9')][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x21')]!==_0xa36600[_0x9b08('0x21')][_0x9b08('0x31')]()){this[_0x9b08('0x9')][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x32')]=_[_0x9b08('0x33')](moment()[_0x9b08('0x29')]('x'));}this[_0x9b08('0x9')][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x21')]=_0xa36600[_0x9b08('0x21')]['toLowerCase']();logger[_0x9b08('0x22')](_0x9b08('0x38'),util[_0x9b08('0x19')](this['trunks'][_0xa36600[_0x9b08('0x2f')]],{'showHidden':![],'depth':null}));this[_0x9b08('0x1f')](util[_0x9b08('0x29')](_0x9b08('0x2a'),this[_0x9b08('0x9')][_0xa36600[_0x9b08('0x2f')]][_0x9b08('0x36')]),_0x9b08('0x2b'),this['trunks'][_0xa36600[_0x9b08('0x2f')]]);}else if(_[_0x9b08('0x39')](_0xa36600[_0x9b08('0x2f')],'Local')){var _0x4fb590=_0xa36600[_0x9b08('0x2f')];var _0x4ecec6=_0x4fb590[_0x9b08('0x3a')](_0x4fb590[_0x9b08('0x3b')]('/')+0x1,_0x4fb590[_0x9b08('0x3b')]('@'));var _0x94ee19=_[_0x9b08('0x23')](this['agents'],function(_0x387fe8){return _0x387fe8[_0x9b08('0x3c')]==_0x4ecec6||_0x387fe8['phone']==_0x4ecec6||_0x387fe8[_0x9b08('0x3d')]==_0x4ecec6;});if(_0x94ee19){if(_0x94ee19[_0x9b08('0x21')]!==_0xa36600[_0x9b08('0x21')]['toLowerCase']()){_0x94ee19[_0x9b08('0x32')]=_[_0x9b08('0x33')](moment()[_0x9b08('0x29')]('x'));}_0x94ee19[_0x9b08('0x21')]=_0xa36600[_0x9b08('0x21')][_0x9b08('0x31')]();_0x94ee19[_0x9b08('0x30')]=!![];_0x94ee19[_0x9b08('0x3e')](_0xa36600);}}}}catch(_0x258031){logger['error'](_0x9b08('0x2e'),util['inspect'](_0x258031,{'showHidden':![],'depth':null}));}};UserReport[_0x9b08('0x1d')][_0x9b08('0x11')]=function(_0x306d38){try{if(this[_0x9b08('0x1e')](_0x306d38)&&this[_0x9b08('0x1e')](_0x306d38[_0x9b08('0x3f')])){logger[_0x9b08('0x20')](_0x9b08('0x40'),_0x306d38[_0x9b08('0x41')],_0x306d38['address'],_0x306d38[_0x9b08('0x3f')]);logger[_0x9b08('0x22')](_0x9b08('0x42'),util[_0x9b08('0x19')](_0x306d38,{'showHidden':![],'depth':null}));if(this[_0x9b08('0xa')][_0x306d38['peer']]){if(!this['agents'][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x30')]||_0x306d38[_0x9b08('0x3f')]['toLowerCase']()=='registered'){this[_0x9b08('0xa')][_0x306d38[_0x9b08('0x41')]]['local']=![];this['agents'][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x43')]=_0x306d38[_0x9b08('0x3f')][_0x9b08('0x31')]();this[_0x9b08('0xa')][_0x306d38['peer']][_0x9b08('0x44')]=_0x306d38[_0x9b08('0x44')];this[_0x9b08('0xa')][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x3e')](_0x306d38);}}else if(this[_0x9b08('0xb')][_0x306d38['peer']]){this[_0x9b08('0xb')][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x43')]=_0x306d38[_0x9b08('0x3f')][_0x9b08('0x31')]();this[_0x9b08('0xb')][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x44')]=_0x306d38['address'];logger[_0x9b08('0x22')](_0x9b08('0x45'),util['inspect'](this[_0x9b08('0xb')][_0x306d38[_0x9b08('0x41')]],{'showHidden':![],'depth':null}));this[_0x9b08('0x1f')](util['format'](_0x9b08('0x35'),this['telephones'][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x36')]),_0x9b08('0x37'),this[_0x9b08('0xb')][_0x306d38[_0x9b08('0x41')]]);}else if(this['trunks'][_0x306d38[_0x9b08('0x41')]]){this[_0x9b08('0x9')][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x43')]=_0x306d38[_0x9b08('0x3f')][_0x9b08('0x31')]();this['trunks'][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x44')]=_0x306d38[_0x9b08('0x44')];logger[_0x9b08('0x22')](_0x9b08('0x46'),util[_0x9b08('0x19')](this[_0x9b08('0x9')][_0x306d38[_0x9b08('0x41')]],{'showHidden':![],'depth':null}));this[_0x9b08('0x1f')](util[_0x9b08('0x29')](_0x9b08('0x2a'),this['trunks'][_0x306d38[_0x9b08('0x41')]][_0x9b08('0x36')]),_0x9b08('0x2b'),this[_0x9b08('0x9')][_0x306d38['peer']]);}}}catch(_0xe3533c){logger[_0x9b08('0x17')]('[userReport][peerstatus]',util[_0x9b08('0x19')](_0xe3533c,{'showHidden':![],'depth':null}));}};module[_0x9b08('0x47')]=UserReport;
\ No newline at end of file
index 693c14b..7927600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe327=['agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','variable','value','keys','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','isNil','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','substring','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]','moment','util','ioredis','../../../config/environment','../../../config/logger','../ami','redis','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','destuniqueid','debug','uniqueid','isUndefined','YYYY-MM-DD\x20HH:mm:ss','queue','type','inbound','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','inspect','format','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','answeredelsewheremembername','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','agentringnoanswerAt','rejected','reason','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','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:','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe327,0xd3));var _0x7e32=function(_0x58d967,_0x4dc146){_0x58d967=_0x58d967-0x0;var _0x1833b9=_0xe327[_0x58d967];return _0x1833b9;};'use strict';var _=require('lodash');var moment=require(_0x7e32('0x0'));var util=require(_0x7e32('0x1'));var Redis=require(_0x7e32('0x2'));var config=require(_0x7e32('0x3'));var logger=require(_0x7e32('0x4'))('ami');var ami=require(_0x7e32('0x5'));config[_0x7e32('0x6')]=_['defaults'](config[_0x7e32('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7e32('0x6')]));function VoiceAgentReport(_0x4f02d2){this[_0x7e32('0x7')]={};this[_0x7e32('0x8')]=_0x4f02d2[_0x7e32('0x7')];this['voiceQueues']=_0x4f02d2[_0x7e32('0x9')];this[_0x7e32('0xa')]=_0x4f02d2[_0x7e32('0xa')];this[_0x7e32('0xb')]={};ami['on'](_0x7e32('0xc'),this[_0x7e32('0xd')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0xf'),this[_0x7e32('0x10')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0x11'),this[_0x7e32('0x12')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0x13'),this[_0x7e32('0x14')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0x15'),this[_0x7e32('0x16')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0x17'),this[_0x7e32('0x18')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0x19'),this[_0x7e32('0x1a')][_0x7e32('0xe')](this));ami['on']('musiconholdstart',this[_0x7e32('0x1b')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0x1c'),this[_0x7e32('0x1d')]['bind'](this));ami['on'](_0x7e32('0x1e'),this[_0x7e32('0x1f')][_0x7e32('0xe')](this));ami['on'](_0x7e32('0x20'),this[_0x7e32('0x21')][_0x7e32('0xe')](this));}VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x23')]=function(_0x408548,_0x1d9b0e,_0x252911){io['to'](_0x408548)[_0x7e32('0x23')](_0x1d9b0e,_0x252911);};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x24')]=function(_0x1bc42f){return _0x1bc42f!==null&&!_['isUndefined'](_0x1bc42f);};VoiceAgentReport['prototype'][_0x7e32('0xd')]=function(_0x2b430d){try{if(this[_0x7e32('0x24')](_0x2b430d)){logger[_0x7e32('0x25')](_0x7e32('0x26'),_0x2b430d['uniqueid'],_0x2b430d[_0x7e32('0x27')],_0x2b430d[_0x7e32('0x28')]);logger[_0x7e32('0x29')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x2b430d[_0x7e32('0x2a')],util['inspect'](_0x2b430d,{'showHidden':![],'depth':null}));if(_[_0x7e32('0x2b')](this[_0x7e32('0x7')][_0x2b430d[_0x7e32('0x2a')]])){this[_0x7e32('0x7')][_0x2b430d[_0x7e32('0x2a')]]={};}if(_['isUndefined'](this[_0x7e32('0x7')][_0x2b430d[_0x7e32('0x2a')]][_0x2b430d[_0x7e32('0x28')]])){this['channels'][_0x2b430d[_0x7e32('0x2a')]][_0x2b430d[_0x7e32('0x28')]]={'agentcalledAt':moment()['format'](_0x7e32('0x2c')),'lastevent':'called','mandatoryDisposition':this['voiceQueues'][_0x2b430d[_0x7e32('0x2d')]]?this['voiceQueues'][_0x2b430d[_0x7e32('0x2d')]]['mandatoryDisposition']||![]:![],'type':this[_0x7e32('0x9')][_0x2b430d[_0x7e32('0x2d')]]?this[_0x7e32('0x9')][_0x2b430d[_0x7e32('0x2d')]][_0x7e32('0x2e')]||_0x7e32('0x2f'):_0x7e32('0x2f'),'variables':this['variables'][_0x2b430d['uniqueid']],'motionChannel':'voice'};}_[_0x7e32('0x30')](this[_0x7e32('0x7')][_0x2b430d[_0x7e32('0x2a')]][_0x2b430d[_0x7e32('0x28')]],_[_0x7e32('0x31')](_0x2b430d,[_0x7e32('0x32'),_0x7e32('0x33')]));logger[_0x7e32('0x29')](_0x7e32('0x34'),_0x2b430d[_0x7e32('0x2a')],util['inspect'](this['channels'][_0x2b430d['uniqueid']][_0x2b430d[_0x7e32('0x28')]],{'showHidden':![],'depth':null}));ami[_0x7e32('0x23')](_0x7e32('0x35'),this['channels'][_0x2b430d['uniqueid']][_0x2b430d[_0x7e32('0x28')]]);var _0x4ff4e4={'id':this[_0x7e32('0xa')][_0x2b430d[_0x7e32('0x36')]]['id'],'calleridnum':this[_0x7e32('0x7')][_0x2b430d[_0x7e32('0x2a')]][_0x2b430d['destuniqueid']][_0x7e32('0x37')],'queue':this[_0x7e32('0x7')][_0x2b430d[_0x7e32('0x2a')]][_0x2b430d['destuniqueid']][_0x7e32('0x2d')],'variables':this[_0x7e32('0x7')][_0x2b430d[_0x7e32('0x2a')]][_0x2b430d['destuniqueid']][_0x7e32('0xb')]};logger[_0x7e32('0x29')](_0x7e32('0x38'),_0x2b430d[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x4ff4e4,{'showHidden':![],'depth':null}));this[_0x7e32('0x23')](util[_0x7e32('0x3a')](_0x7e32('0x3b'),_0x2b430d[_0x7e32('0x27')]),_0x7e32('0x3c'),_0x4ff4e4);}}catch(_0x5c2991){logger[_0x7e32('0x3d')](_0x7e32('0x3e'),_0x2b430d[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x5c2991,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x7e32('0x10')]=function(_0x1309ed){try{if(this[_0x7e32('0x24')](_0x1309ed)){if(this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]]){logger[_0x7e32('0x29')](_0x7e32('0x3f'),_0x1309ed[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x1309ed,{'showHidden':![],'depth':null}));for(var _0x1cee38 in this['channels'][_0x1309ed[_0x7e32('0x2a')]]){if(this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]]['hasOwnProperty'](_0x1cee38)){if(_0x1309ed[_0x7e32('0x28')]===_0x1cee38){logger['info'](_0x7e32('0x40'),_0x1309ed['uniqueid'],_0x1309ed[_0x7e32('0x27')],_0x1309ed['destuniqueid']);this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x41')]=moment()[_0x7e32('0x3a')](_0x7e32('0x2c'));this[_0x7e32('0x7')][_0x1309ed['uniqueid']][_0x1cee38][_0x7e32('0x42')]=_0x1309ed[_0x7e32('0x42')];this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38]['connectedlinenum']=_0x1309ed['connectedlinenum'];this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x43')]=_0x1309ed[_0x7e32('0x43')];this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x44')]=_0x1309ed[_0x7e32('0x44')];this['channels'][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x45')]=_0x1309ed['holdtime'];this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x46')]=_0x7e32('0x47');if(this[_0x7e32('0x8')][this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x2a')]]){var _0x45f230=this[_0x7e32('0x8')][this[_0x7e32('0x7')][_0x1309ed['uniqueid']][_0x1cee38]['uniqueid']][_0x7e32('0x48')];this['channels'][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38]['routealias']=_0x45f230;_0x1309ed['routealias']=_0x45f230;}_[_0x7e32('0x30')](this[_0x7e32('0xa')][_0x1309ed[_0x7e32('0x36')]],_[_0x7e32('0x49')](_0x1309ed,['queue',_0x7e32('0x4a'),'routealias']));logger[_0x7e32('0x29')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x1309ed[_0x7e32('0x2a')],util['inspect'](this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1309ed[_0x7e32('0x28')]],{'showHidden':![],'depth':null}));ami[_0x7e32('0x23')](_0x7e32('0x4b'),this['channels'][_0x1309ed[_0x7e32('0x2a')]][_0x1309ed[_0x7e32('0x28')]]);logger[_0x7e32('0x29')](_0x7e32('0x4c'),_0x1309ed['uniqueid'],util[_0x7e32('0x39')](this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1309ed[_0x7e32('0x28')]],{'showHidden':![],'depth':null}));this[_0x7e32('0x23')](util['format'](_0x7e32('0x3b'),_0x1309ed[_0x7e32('0x27')]),_0x7e32('0x4d'),this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1309ed[_0x7e32('0x28')]]);}else if(!this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x11')]&&!this['channels'][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x15')]){logger['info'](_0x7e32('0x4e'),_0x1309ed[_0x7e32('0x2a')],this[_0x7e32('0x7')][_0x1309ed['uniqueid']][_0x1cee38]['membername'],_0x1cee38);this[_0x7e32('0x7')][_0x1309ed['uniqueid']][_0x1cee38]['agentringnoanswer']=!![];this[_0x7e32('0x7')][_0x1309ed['uniqueid']][_0x1cee38]['agentringnoanswerAt']=moment()[_0x7e32('0x3a')](_0x7e32('0x2c'));this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38]['answeredelsewheredestinationuniqueid']=_0x1309ed['destuniqueid'];this['channels'][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x4f')]=_0x1309ed['membername'];this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38][_0x7e32('0x46')]=_0x7e32('0x50');this[_0x7e32('0x7')][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38]['reason']='answered_elsewhere';logger[_0x7e32('0x29')](_0x7e32('0x51'),_0x1309ed[_0x7e32('0x2a')],util[_0x7e32('0x39')](this['channels'][_0x1309ed[_0x7e32('0x2a')]][_0x1cee38],{'showHidden':![],'depth':null}));ami['emit'](_0x7e32('0x52'),this['channels'][_0x1309ed['uniqueid']][_0x1cee38]);}}}}}}catch(_0x19d1c4){logger[_0x7e32('0x3d')](_0x7e32('0x53'),_0x1309ed[_0x7e32('0x2a')],util['inspect'](_0x19d1c4,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x12')]=function(_0x2e695b){try{if(this['isNotNull'](_0x2e695b)){logger['debug'](_0x7e32('0x54'),_0x2e695b[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x2e695b,{'showHidden':![],'depth':null}));if(this[_0x7e32('0x7')][_0x2e695b[_0x7e32('0x2a')]]&&this['channels'][_0x2e695b[_0x7e32('0x2a')]][_0x2e695b['destuniqueid']]){logger[_0x7e32('0x25')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x2e695b[_0x7e32('0x2a')],_0x2e695b['membername'],_0x2e695b[_0x7e32('0x28')]);this[_0x7e32('0x7')][_0x2e695b[_0x7e32('0x2a')]][_0x2e695b['destuniqueid']][_0x7e32('0x11')]=!![];this[_0x7e32('0x7')][_0x2e695b[_0x7e32('0x2a')]][_0x2e695b[_0x7e32('0x28')]][_0x7e32('0x55')]=moment()[_0x7e32('0x3a')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x2e695b[_0x7e32('0x2a')]][_0x2e695b[_0x7e32('0x28')]][_0x7e32('0x46')]=_0x7e32('0x56');this['channels'][_0x2e695b['uniqueid']][_0x2e695b['destuniqueid']][_0x7e32('0x57')]=_0x7e32('0x56');logger[_0x7e32('0x29')](_0x7e32('0x58'),_0x2e695b['uniqueid'],util[_0x7e32('0x39')](this['channels'][_0x2e695b[_0x7e32('0x2a')]][_0x2e695b['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x7e32('0x23')](_0x7e32('0x59'),this[_0x7e32('0x7')][_0x2e695b[_0x7e32('0x2a')]][_0x2e695b[_0x7e32('0x28')]]);}}}catch(_0x15ab74){logger[_0x7e32('0x3d')](_0x7e32('0x5a'),_0x2e695b[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x15ab74,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x14')]=function(_0x5ec444){try{if(this['isNotNull'](_0x5ec444)){logger[_0x7e32('0x29')](_0x7e32('0x5b'),_0x5ec444[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x5ec444,{'showHidden':![],'depth':null}));if(this[_0x7e32('0x7')][_0x5ec444[_0x7e32('0x2a')]]){for(var _0x243c3c in this[_0x7e32('0x7')][_0x5ec444[_0x7e32('0x2a')]]){if(this[_0x7e32('0x7')][_0x5ec444[_0x7e32('0x2a')]][_0x7e32('0x5c')](_0x243c3c)&&!this['channels'][_0x5ec444[_0x7e32('0x2a')]][_0x243c3c]['agentringnoanswer']&&!this[_0x7e32('0x7')][_0x5ec444['uniqueid']][_0x243c3c][_0x7e32('0x15')]){logger[_0x7e32('0x25')](_0x7e32('0x5d'),_0x5ec444['uniqueid'],this['channels'][_0x5ec444['uniqueid']][_0x243c3c][_0x7e32('0x27')],_0x243c3c);this['channels'][_0x5ec444['uniqueid']][_0x243c3c][_0x7e32('0x11')]=!![];this[_0x7e32('0x7')][_0x5ec444['uniqueid']][_0x243c3c]['agentringnoanswerAt']=moment()[_0x7e32('0x3a')](_0x7e32('0x2c'));this[_0x7e32('0x7')][_0x5ec444['uniqueid']][_0x243c3c][_0x7e32('0x46')]=_0x7e32('0x5e');this['channels'][_0x5ec444['uniqueid']][_0x243c3c][_0x7e32('0x57')]='abandoned';logger[_0x7e32('0x29')](_0x7e32('0x5f'),_0x5ec444[_0x7e32('0x2a')],util[_0x7e32('0x39')](this[_0x7e32('0x7')][_0x5ec444[_0x7e32('0x2a')]][_0x243c3c],{'showHidden':![],'depth':null}));ami[_0x7e32('0x23')]('custom:agentqueuecallerabandon',this[_0x7e32('0x7')][_0x5ec444[_0x7e32('0x2a')]][_0x243c3c]);}}}}}catch(_0x3d5f65){logger['error']('[%s][voiceAgentReport][queuecallerabandon]',_0x5ec444[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x3d5f65,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x5cc818){try{if(this[_0x7e32('0x24')](_0x5cc818)){logger[_0x7e32('0x29')](_0x7e32('0x60'),_0x5cc818[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x5cc818,{'showHidden':![],'depth':null}));if(this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]]){for(var _0x4c6378 in this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]]){if(this['channels'][_0x5cc818[_0x7e32('0x2a')]][_0x7e32('0x5c')](_0x4c6378)){if(this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x41')]&&!this['channels'][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x15')]){logger[_0x7e32('0x25')](_0x7e32('0x61'),_0x5cc818[_0x7e32('0x2a')],this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x27')],_0x4c6378);this['channels'][_0x5cc818['uniqueid']][_0x4c6378][_0x7e32('0x15')]=!![];this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x62')]=moment()['format'](_0x7e32('0x2c'));this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x46')]=_0x7e32('0x63');this['channels'][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x57')]=_0x5cc818[_0x7e32('0x57')]==_0x7e32('0x64')?_0x7e32('0x65'):_0x5cc818[_0x7e32('0x57')];this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x66')]=_0x5cc818[_0x7e32('0x66')];if(this[_0x7e32('0x9')][_0x5cc818['queue']]&&this[_0x7e32('0x9')][_0x5cc818[_0x7e32('0x2d')]][_0x7e32('0x67')]){this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x68')]=this[_0x7e32('0x9')][_0x5cc818['queue']]['acwTimeout'];this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378][_0x7e32('0x69')]=!![];}this[_0x7e32('0xa')][_0x5cc818[_0x7e32('0x36')]]=_[_0x7e32('0x31')](this[_0x7e32('0xa')][_0x5cc818['interface']],['queue',_0x7e32('0x4a')]);logger[_0x7e32('0x29')](_0x7e32('0x6a'),_0x5cc818[_0x7e32('0x2a')],util[_0x7e32('0x39')](this[_0x7e32('0x7')][_0x5cc818[_0x7e32('0x2a')]][_0x4c6378],{'showHidden':![],'depth':null}));ami[_0x7e32('0x23')](_0x7e32('0x6b'),this[_0x7e32('0x7')][_0x5cc818['uniqueid']][_0x4c6378]);logger[_0x7e32('0x29')](_0x7e32('0x6c'),_0x5cc818[_0x7e32('0x2a')],util[_0x7e32('0x39')]({'id':this[_0x7e32('0xa')][_0x5cc818[_0x7e32('0x36')]]['id'],'destaccountcode':_0x5cc818[_0x7e32('0x6d')]},{'showHidden':![],'depth':null}));this[_0x7e32('0x23')](util[_0x7e32('0x3a')](_0x7e32('0x3b'),_0x5cc818['membername']),_0x7e32('0x6e'),{'id':this[_0x7e32('0xa')][_0x5cc818[_0x7e32('0x36')]]['id'],'destaccountcode':_0x5cc818[_0x7e32('0x6d')]});}}}}}}catch(_0x59dd1f){logger[_0x7e32('0x3d')](_0x7e32('0x6f'),_0x5cc818[_0x7e32('0x2a')],util['inspect'](_0x59dd1f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x18')]=function(_0x5d6938){try{if(this[_0x7e32('0x24')](_0x5d6938)){logger['debug'](_0x7e32('0x70'),_0x5d6938[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x5d6938,{'showHidden':![],'depth':null}));this[_0x7e32('0x71')](_0x5d6938[_0x7e32('0x2a')],_['keys'](_0x5d6938[_0x7e32('0x72')])[0x0],_0x5d6938[_0x7e32('0x73')]);if(this['channels'][_0x5d6938['uniqueid']]){for(var _0x49f56f in this['channels'][_0x5d6938[_0x7e32('0x2a')]]){if(this[_0x7e32('0x7')][_0x5d6938[_0x7e32('0x2a')]][_0x7e32('0x5c')](_0x49f56f)){logger[_0x7e32('0x25')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x5d6938[_0x7e32('0x2a')],_0x49f56f,_[_0x7e32('0x74')](_0x5d6938['variable'])[0x0],_0x5d6938[_0x7e32('0x73')]);if(_[_0x7e32('0x2b')](this[_0x7e32('0x7')][_0x5d6938[_0x7e32('0x2a')]][_0x49f56f][_0x7e32('0xb')])){this[_0x7e32('0x7')][_0x5d6938['uniqueid']][_0x49f56f][_0x7e32('0xb')]={};}this[_0x7e32('0x7')][_0x5d6938['uniqueid']][_0x49f56f][_0x7e32('0xb')]=this['variables'][_0x5d6938[_0x7e32('0x2a')]];}}}}}catch(_0x17fb05){logger['error'](_0x7e32('0x75'),_0x5d6938[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x17fb05,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x71')]=function(_0x19d2dd,_0x5628e5,_0x1d7c30){var _0x9896f8=[_0x7e32('0x76'),_0x7e32('0x77'),_0x7e32('0x78'),'rtpaudioqosjitterbridged',_0x7e32('0x79'),_0x7e32('0x7a'),_0x7e32('0x7b'),_0x7e32('0x7c'),_0x7e32('0x7d'),_0x7e32('0x7e'),_0x7e32('0x7f'),_0x7e32('0x80'),_0x7e32('0x81'),'memberdynamic','memberinterface',_0x7e32('0x82'),_0x7e32('0x27'),_0x7e32('0x83'),'memberrealtime'];if(!_[_0x7e32('0x84')](_0x5628e5)&&!_['includes'](_0x9896f8,_0x5628e5)){if(_[_0x7e32('0x2b')](this[_0x7e32('0xb')][_0x19d2dd])){this[_0x7e32('0xb')][_0x19d2dd]={};}this['variables'][_0x19d2dd][_0x5628e5]=_0x1d7c30;}};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x1a')]=function(_0x3a13be){try{if(this[_0x7e32('0x24')](_0x3a13be)){logger[_0x7e32('0x29')](_0x7e32('0x85'),_0x3a13be[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x3a13be,{'showHidden':![],'depth':null}));if(this[_0x7e32('0x7')][_0x3a13be[_0x7e32('0x2a')]]){for(var _0x5ec7b3 in this[_0x7e32('0x7')][_0x3a13be[_0x7e32('0x2a')]]){if(this[_0x7e32('0x7')][_0x3a13be[_0x7e32('0x2a')]][_0x7e32('0x5c')](_0x5ec7b3)){if(this[_0x7e32('0x7')][_0x3a13be['uniqueid']][_0x5ec7b3][_0x7e32('0x57')]==_0x7e32('0x64')&&this['channels'][_0x3a13be[_0x7e32('0x2a')]][_0x5ec7b3][_0x7e32('0x15')]){logger[_0x7e32('0x25')](_0x7e32('0x86'),_0x3a13be['uniqueid'],_0x5ec7b3);this['channels'][_0x3a13be[_0x7e32('0x2a')]][_0x5ec7b3]['agentcompleteAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x7e32('0x29')](_0x7e32('0x87'),_0x3a13be[_0x7e32('0x2a')],util[_0x7e32('0x39')](_[_0x7e32('0x88')](this[_0x7e32('0x7')][_0x3a13be[_0x7e32('0x2a')]]),{'showHidden':![],'depth':null}));ami[_0x7e32('0x23')](_0x7e32('0x89'),_[_0x7e32('0x88')](this['channels'][_0x3a13be[_0x7e32('0x2a')]]));delete this[_0x7e32('0x7')][_0x3a13be[_0x7e32('0x2a')]];}if(this['variables'][_0x3a13be[_0x7e32('0x2a')]]){delete this['variables'][_0x3a13be[_0x7e32('0x2a')]];}}}catch(_0xcb1064){logger[_0x7e32('0x3d')]('[%s][voiceAgentReport][hangup]',_0x3a13be['uniqueid'],util[_0x7e32('0x39')](_0xcb1064,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x1f')]=function(_0x28c1ef){try{if(this[_0x7e32('0x24')](_0x28c1ef)){logger[_0x7e32('0x29')](_0x7e32('0x8a'),_0x28c1ef[_0x7e32('0x2a')],util['inspect'](_0x28c1ef,{'showHidden':![],'depth':null}));if(this[_0x7e32('0x7')][_0x28c1ef['transfereeuniqueid']]){for(var _0x6c4f5b in this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]]){if(this['channels'][_0x28c1ef[_0x7e32('0x8b')]][_0x7e32('0x5c')](_0x6c4f5b)){if(_0x28c1ef[_0x7e32('0x8c')]===_0x6c4f5b){logger[_0x7e32('0x25')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x28c1ef[_0x7e32('0x2a')],this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]][_0x6c4f5b][_0x7e32('0x27')],_0x6c4f5b);var _0x505f1e=moment();this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]][_0x6c4f5b]['agentcomplete']=!![];this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]][_0x6c4f5b][_0x7e32('0x62')]=moment()[_0x7e32('0x3a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]][_0x6c4f5b]['lastevent']=_0x7e32('0x63');this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]][_0x6c4f5b]['reason']=_0x7e32('0x64');this['channels'][_0x28c1ef[_0x7e32('0x8b')]][_0x6c4f5b][_0x7e32('0x66')]=_0x505f1e[_0x7e32('0x8d')](this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]][_0x6c4f5b][_0x7e32('0x41')],_0x7e32('0x8e'));}}}}if(this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8f')]]){var _0xf4cc09=this['channels'][_0x28c1ef['secondtransfereruniqueid']];this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8f')]]=this[_0x7e32('0x7')][_0x28c1ef[_0x7e32('0x8b')]];this[_0x7e32('0x7')][_0x28c1ef['transfereeuniqueid']]=_0xf4cc09;}}}catch(_0x4e52e1){logger[_0x7e32('0x3d')](_0x7e32('0x90'),_0x28c1ef[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x4e52e1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')]['syncBlindTransfer']=function(_0x37fc88){try{if(this[_0x7e32('0x24')](_0x37fc88)){logger[_0x7e32('0x29')](_0x7e32('0x91'),_0x37fc88[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x37fc88,{'showHidden':![],'depth':null}));if(this[_0x7e32('0x7')][_0x37fc88[_0x7e32('0x8b')]]){for(var _0x57dd6e in this[_0x7e32('0x7')][_0x37fc88[_0x7e32('0x8b')]]){if(this[_0x7e32('0x7')][_0x37fc88['transfereeuniqueid']]['hasOwnProperty'](_0x57dd6e)){if(_0x37fc88[_0x7e32('0x92')]===_0x57dd6e){logger['info'](_0x7e32('0x93'),_0x37fc88[_0x7e32('0x2a')],this['channels'][_0x37fc88['transfereeuniqueid']][_0x57dd6e][_0x7e32('0x27')],_0x57dd6e);var _0x1e587b=moment();this[_0x7e32('0x7')][_0x37fc88[_0x7e32('0x8b')]][_0x57dd6e][_0x7e32('0x15')]=!![];this['channels'][_0x37fc88[_0x7e32('0x8b')]][_0x57dd6e][_0x7e32('0x62')]=_0x1e587b;this['channels'][_0x37fc88[_0x7e32('0x8b')]][_0x57dd6e][_0x7e32('0x46')]='complete';this['channels'][_0x37fc88['transfereeuniqueid']][_0x57dd6e]['reason']=_0x7e32('0x64');this[_0x7e32('0x7')][_0x37fc88[_0x7e32('0x8b')]][_0x57dd6e][_0x7e32('0x66')]=_0x1e587b[_0x7e32('0x8d')](this[_0x7e32('0x7')][_0x37fc88[_0x7e32('0x8b')]][_0x57dd6e][_0x7e32('0x41')],_0x7e32('0x8e'));}}}}}}catch(_0x4c6eba){logger[_0x7e32('0x3d')](_0x7e32('0x94'),_0x37fc88[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x4c6eba,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')][_0x7e32('0x1b')]=function(_0x6e58f4){var _0x25ad8a='';try{if(this[_0x7e32('0x24')](_0x6e58f4)){logger[_0x7e32('0x29')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x6e58f4[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x6e58f4,{'showHidden':![],'depth':null}));if(_0x6e58f4[_0x7e32('0x95')]){_0x25ad8a=_0x6e58f4[_0x7e32('0x95')][_0x7e32('0x96')](0x0,_0x6e58f4[_0x7e32('0x95')]['lastIndexOf']('-'));if(this['agents'][_0x25ad8a]){logger[_0x7e32('0x25')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x6e58f4[_0x7e32('0x2a')],_0x25ad8a);this[_0x7e32('0xa')][_0x25ad8a][_0x7e32('0x97')]=!![];}}}}catch(_0x40c524){logger[_0x7e32('0x3d')](_0x7e32('0x98'),_0x6e58f4[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x40c524,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x7e32('0x22')]['syncMusicOnHoldStop']=function(_0x2f0085){var _0x385f51='';try{if(this[_0x7e32('0x24')](_0x2f0085)){logger[_0x7e32('0x29')](_0x7e32('0x99'),_0x2f0085['uniqueid'],util[_0x7e32('0x39')](_0x2f0085,{'showHidden':![],'depth':null}));if(_0x2f0085[_0x7e32('0x95')]){_0x385f51=_0x2f0085[_0x7e32('0x95')]['substring'](0x0,_0x2f0085[_0x7e32('0x95')][_0x7e32('0x9a')]('-'));if(this['agents'][_0x385f51]){logger[_0x7e32('0x25')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x2f0085[_0x7e32('0x2a')],_0x385f51);this[_0x7e32('0xa')][_0x385f51][_0x7e32('0x97')]=![];}}}}catch(_0x5c9cb0){logger['error'](_0x7e32('0x9b'),_0x2f0085[_0x7e32('0x2a')],util[_0x7e32('0x39')](_0x5c9cb0,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','inbound','voice','merge','omit','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','connectedlinenum','destchannelstatedesc','holdtime','lastevent','connect','voiceChannels','routealias','interface','pick','queue','destconnectedlinenum','channel','name','accountcode','exten','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','agentringnoanswer','reason','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][agentcomplete]\x20event:','agentconnectAt','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','talktime','acw','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','destaccountcode','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind'];(function(_0x211030,_0x3ba490){var _0x28ebd2=function(_0x4c9648){while(--_0x4c9648){_0x211030['push'](_0x211030['shift']());}};_0x28ebd2(++_0x3ba490);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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')]]={};}var _0x16b1ca=this['agents'][_0x155cce['interface']];var _0x197ec0=this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]];var _0x526cf3=this[_0x0a9e('0x9')][_0x155cce['queue']];var _0x45a1e7=this['variables'][_0x155cce[_0x0a9e('0x26')]];if(_[_0x0a9e('0x1f')](_0x197ec0)){_0x197ec0={'agentcalledAt':moment()[_0x0a9e('0x27')](_0x0a9e('0x28')),'lastevent':_0x0a9e('0x29'),'mandatoryDisposition':_0x526cf3&&_0x526cf3[_0x0a9e('0x2a')]?_0x526cf3[_0x0a9e('0x2a')]:![],'type':_0x526cf3&&_0x526cf3[_0x0a9e('0x2b')]?_0x526cf3['type']:_0x0a9e('0x2c'),'variables':_0x45a1e7,'motionChannel':_0x0a9e('0x2d')};}_[_0x0a9e('0x2e')](_0x197ec0,_[_0x0a9e('0x2f')](_0x155cce,['event',_0x0a9e('0x30')]));logger[_0x0a9e('0x23')](_0x0a9e('0x31'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x197ec0,{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x32'),_0x197ec0);var _0x2e8759={'id':_0x16b1ca['id'],'calleridnum':_0x197ec0[_0x0a9e('0x33')],'queue':_0x197ec0['queue'],'variables':_0x197ec0[_0x0a9e('0xb')],'uniqueid':_0x155cce['uniqueid']};logger[_0x0a9e('0x23')](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e8759,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util['format'](_0x0a9e('0x35'),_0x155cce[_0x0a9e('0x21')]),_0x0a9e('0x36'),_0x2e8759);}}catch(_0x2da5c0){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da5c0,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x39')]=function(_0x5e7238){try{if(this[_0x0a9e('0x1e')](_0x5e7238)){if(this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20event:',_0x5e7238[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5e7238,{'showHidden':![],'depth':null}));for(var _0x1fa90d in this[_0x0a9e('0x8')][_0x5e7238['uniqueid']]){if(this['channels'][_0x5e7238[_0x0a9e('0x26')]]['hasOwnProperty'](_0x1fa90d)){if(_0x5e7238[_0x0a9e('0x22')]===_0x1fa90d){logger[_0x0a9e('0x20')](_0x0a9e('0x3a'),_0x5e7238[_0x0a9e('0x26')],_0x5e7238['membername'],_0x5e7238[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d]['agentconnectAt']=moment()[_0x0a9e('0x27')](_0x0a9e('0x28'));this[_0x0a9e('0x8')][_0x5e7238['uniqueid']][_0x1fa90d]['connectedlinename']=_0x5e7238[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x5e7238['uniqueid']][_0x1fa90d][_0x0a9e('0x3c')]=_0x5e7238[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d]['destchannelstate']=_0x5e7238['destchannelstate'];this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d]['destchannelstatedesc']=_0x5e7238[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d]['holdtime']=_0x5e7238[_0x0a9e('0x3e')];this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d][_0x0a9e('0x3f')]=_0x0a9e('0x40');if(this[_0x0a9e('0x41')][this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d][_0x0a9e('0x26')]]){var _0x3da2cd=this[_0x0a9e('0x41')][this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d][_0x0a9e('0x26')]][_0x0a9e('0x42')];this['channels'][_0x5e7238['uniqueid']][_0x1fa90d][_0x0a9e('0x42')]=_0x3da2cd;_0x5e7238[_0x0a9e('0x42')]=_0x3da2cd;}_[_0x0a9e('0x2e')](this[_0x0a9e('0xa')][_0x5e7238[_0x0a9e('0x43')]],_[_0x0a9e('0x44')](_0x5e7238,[_0x0a9e('0x45'),_0x0a9e('0x46'),_0x0a9e('0x42')]));var _0x25c6e6=this[_0x0a9e('0xa')][_0x5e7238[_0x0a9e('0x47')]['split']('-')[0x0]];var _0x117c99={'id':_0x25c6e6['id'],'name':_0x25c6e6[_0x0a9e('0x48')],'agentconnected':!![],'destaccountcode':_0x25c6e6[_0x0a9e('0x49')],'destconnectedlinenum':this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x5e7238[_0x0a9e('0x22')]][_0x0a9e('0x4a')],'queue':this[_0x0a9e('0x8')][_0x5e7238['uniqueid']][_0x5e7238[_0x0a9e('0x22')]]['queue'],'routealias':this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x5e7238[_0x0a9e('0x22')]]['routealias'],'uniqueid':this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x5e7238[_0x0a9e('0x22')]][_0x0a9e('0x26')]};logger[_0x0a9e('0x23')](_0x0a9e('0x4b'),_0x5e7238[_0x0a9e('0x26')],util['inspect'](_0x117c99,{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4c'),_0x117c99);logger[_0x0a9e('0x23')](_0x0a9e('0x4d'),_0x5e7238[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x117c99,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x27')](_0x0a9e('0x35'),_0x5e7238['membername']),_0x0a9e('0x4e'),_0x117c99);}else if(!this[_0x0a9e('0x8')][_0x5e7238['uniqueid']][_0x1fa90d]['agentringnoanswer']&&!this['channels'][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x4f'),_0x5e7238[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d][_0x0a9e('0x21')],_0x1fa90d);this['channels'][_0x5e7238['uniqueid']][_0x1fa90d]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d][_0x0a9e('0x50')]=moment()['format'](_0x0a9e('0x28'));this[_0x0a9e('0x8')][_0x5e7238['uniqueid']][_0x1fa90d]['answeredelsewheredestinationuniqueid']=_0x5e7238[_0x0a9e('0x22')];this['channels'][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d]['answeredelsewheremembername']=_0x5e7238[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x5e7238[_0x0a9e('0x26')]][_0x1fa90d]['lastevent']=_0x0a9e('0x51');this[_0x0a9e('0x8')][_0x5e7238['uniqueid']][_0x1fa90d]['reason']=_0x0a9e('0x51');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x5e7238[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x5e7238['uniqueid']][_0x1fa90d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x5e7238['uniqueid']][_0x1fa90d]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x52'),_0x5e7238[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x53')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);var _0x20c668=this['agents'][_0x272738['interface']];var _0x5674ee=this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]];_0x5674ee[_0x0a9e('0x55')]=!![];_0x5674ee[_0x0a9e('0x50')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x28'));_0x5674ee[_0x0a9e('0x3f')]='rejected';_0x5674ee[_0x0a9e('0x56')]='rejected';var _0xca4ade={'id':_0x20c668['id'],'name':_0x20c668[_0x0a9e('0x48')],'queue':_0x5674ee[_0x0a9e('0x45')],'uniqueid':_0x5674ee['uniqueid']};logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xca4ade,{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x27')](_0x0a9e('0x35'),_0x20c668['name']),_0x0a9e('0x58'),_0xca4ade);ami[_0x0a9e('0x1d')](_0x0a9e('0x59'),_0x5674ee);}}}catch(_0x409b29){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentringnoanswer]',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x409b29,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x3528b7){try{if(this['isNotNull'](_0x3528b7)){logger['debug'](_0x0a9e('0x5a'),_0x3528b7[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3528b7,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]]){for(var _0xc8c264 in this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0x0a9e('0x5b')](_0xc8c264)&&!this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0xc8c264][_0x0a9e('0x55')]&&!this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0xc8c264][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x3528b7[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0xc8c264]['membername'],_0xc8c264);this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0xc8c264]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0xc8c264][_0x0a9e('0x50')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x28'));this['channels'][_0x3528b7['uniqueid']][_0xc8c264]['lastevent']=_0x0a9e('0x5c');this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0xc8c264][_0x0a9e('0x56')]=_0x0a9e('0x5c');logger[_0x0a9e('0x23')](_0x0a9e('0x5d'),_0x3528b7[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x3528b7[_0x0a9e('0x26')]][_0xc8c264],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x3528b7['uniqueid']][_0xc8c264]);}}}}}catch(_0x4437ff){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][queuecallerabandon]',_0x3528b7[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4437ff,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x542ece){try{if(this[_0x0a9e('0x1e')](_0x542ece)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x542ece[_0x0a9e('0x26')],util['inspect'](_0x542ece,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]]){for(var _0x2d5506 in this[_0x0a9e('0x8')][_0x542ece['uniqueid']]){if(this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]][_0x0a9e('0x5b')](_0x2d5506)){if(this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]][_0x2d5506][_0x0a9e('0x5f')]&&!this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]][_0x2d5506][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x60'),_0x542ece[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]][_0x2d5506]['membername'],_0x2d5506);this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]][_0x2d5506][_0x0a9e('0x12')]=!![];this['channels'][_0x542ece[_0x0a9e('0x26')]][_0x2d5506][_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x28'));this['channels'][_0x542ece['uniqueid']][_0x2d5506][_0x0a9e('0x3f')]=_0x0a9e('0x62');this['channels'][_0x542ece[_0x0a9e('0x26')]][_0x2d5506]['reason']=_0x542ece[_0x0a9e('0x56')]==_0x0a9e('0x63')?'agent':_0x542ece[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]][_0x2d5506][_0x0a9e('0x64')]=_0x542ece[_0x0a9e('0x64')];if(this[_0x0a9e('0x9')][_0x542ece[_0x0a9e('0x45')]]&&this['voiceQueues'][_0x542ece[_0x0a9e('0x45')]][_0x0a9e('0x65')]){this[_0x0a9e('0x8')][_0x542ece[_0x0a9e('0x26')]][_0x2d5506]['acwtime']=this[_0x0a9e('0x9')][_0x542ece[_0x0a9e('0x45')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x542ece['uniqueid']][_0x2d5506][_0x0a9e('0x66')]=!![];}this[_0x0a9e('0xa')][_0x542ece[_0x0a9e('0x43')]]=_[_0x0a9e('0x2f')](this['agents'][_0x542ece['interface']],[_0x0a9e('0x45'),_0x0a9e('0x46')]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x542ece[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x542ece['uniqueid']][_0x2d5506],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentcomplete',this['channels'][_0x542ece['uniqueid']][_0x2d5506]);logger[_0x0a9e('0x23')](_0x0a9e('0x67'),_0x542ece[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x542ece[_0x0a9e('0x43')]]['id'],'destaccountcode':_0x542ece['destaccountcode']},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util['format'](_0x0a9e('0x35'),_0x542ece[_0x0a9e('0x21')]),_0x0a9e('0x68'),{'id':this[_0x0a9e('0xa')][_0x542ece['interface']]['id'],'destaccountcode':Number(_0x542ece[_0x0a9e('0x69')])});}}}}}}catch(_0x32f761){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentcomplete]',_0x542ece[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x6a'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6b')](_0x255e49['uniqueid'],_[_0x0a9e('0x6c')](_0x255e49[_0x0a9e('0x6d')])[0x0],_0x255e49[_0x0a9e('0x6e')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x5b')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x6f'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x6d')])[0x0],_0x255e49[_0x0a9e('0x6e')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x37')](_0x0a9e('0x70'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x6b')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x71'),_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'rtpaudioqosloss',_0x0a9e('0x75'),'rtpaudioqosrtt',_0x0a9e('0x76'),_0x0a9e('0x77'),'sipuri',_0x0a9e('0x78'),_0x0a9e('0x79'),_0x0a9e('0x7a'),'memberdynamic','memberinterface',_0x0a9e('0x7b'),_0x0a9e('0x21'),_0x0a9e('0x7c'),_0x0a9e('0x7d')];if(!_[_0x0a9e('0x7e')](_0x5ce99d)&&!_[_0x0a9e('0x7f')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x5b')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x63')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x27')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x81'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x82')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x83'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x84'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x85')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x86'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x87')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x87')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x5b')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x88')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x89'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x87')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x87')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x28'));this['channels'][_0x23b39e[_0x0a9e('0x87')]][_0x2ada60]['lastevent']=_0x0a9e('0x62');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x87')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x63');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x87')]][_0x2ada60][_0x0a9e('0x64')]=_0x3450ae[_0x0a9e('0x8a')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x87')]][_0x2ada60][_0x0a9e('0x5f')],_0x0a9e('0x8b'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x8c')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x87')]];this['channels'][_0x23b39e[_0x0a9e('0x87')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x8e'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x87')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x87')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x87')]][_0x0a9e('0x5b')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x8f')]===_0x17b29d){logger['info'](_0x0a9e('0x90'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x87')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x87')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x87')]][_0x17b29d][_0x0a9e('0x3f')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x87')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x63');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x87')]][_0x17b29d][_0x0a9e('0x64')]=_0x1f6f1c[_0x0a9e('0x8a')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x5f')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x37')](_0x0a9e('0x91'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x47')]){_0x33da81=_0x1a0314[_0x0a9e('0x47')][_0x0a9e('0x92')](0x0,_0x1a0314[_0x0a9e('0x47')][_0x0a9e('0x93')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x94'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x95')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x37')](_0x0a9e('0x96'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x97'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x47')]){_0xd2391=_0x3b581c[_0x0a9e('0x47')][_0x0a9e('0x92')](0x0,_0x3b581c[_0x0a9e('0x47')][_0x0a9e('0x93')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x95')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x37')](_0x0a9e('0x98'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index eb8ad5b..f795436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35a=['[%s][voiceCallReport][newstate]\x20event:','answered','holdtime','diff','destinationchannel','toNumber','answertime','connectedlinename','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','replace','.WAV','monitorFilename','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','length','transferType','resolve','undefined','getSettings','then','stopRecordingOnTransfer','Action','StopMixMonitor','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','lodash','moment','path','ioredis','../../../config/environment','../../../config/logger','../model/channel','../rpc/setting','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','redis','defaults','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','syncNewState','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','inspect','isNotNull','isUndefined','prototype','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','pick','keys','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','format','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','merge','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','subtract','duration','seconds','includes','cdr(','match','type','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s'];(function(_0x297def,_0x7c9290){var _0x411d97=function(_0x1b3262){while(--_0x1b3262){_0x297def['push'](_0x297def['shift']());}};_0x411d97(++_0x7c9290);}(_0xe35a,0x1e2));var _0xae35=function(_0x319532,_0x1bf047){_0x319532=_0x319532-0x0;var _0x2b6eab=_0xe35a[_0x319532];return _0x2b6eab;};'use strict';var _=require(_0xae35('0x0'));var moment=require(_0xae35('0x1'));var util=require('util');var path=require(_0xae35('0x2'));var Redis=require(_0xae35('0x3'));var config=require(_0xae35('0x4'));var logger=require(_0xae35('0x5'))('ami');var ami=require('../ami');var Channel=require(_0xae35('0x6'));var RpcSetting=require(_0xae35('0x7'));var applications=[_0xae35('0x8'),_0xae35('0x9'),_0xae35('0xa'),_0xae35('0xb'),_0xae35('0xc'),_0xae35('0xd')];var dispositions=[_0xae35('0xe'),'FAILED','FAILED',_0xae35('0xe'),_0xae35('0xe'),_0xae35('0xe'),'ANSWERED','BUSY',_0xae35('0xf'),_0xae35('0xf'),_0xae35('0xf')];config[_0xae35('0x10')]=_[_0xae35('0x11')](config[_0xae35('0x10')],{'host':'localhost','port':0x18eb});var io=require(_0xae35('0x12'))(new Redis(config[_0xae35('0x10')]));function VoiceCallReport(_0x212846){this['channels']=_0x212846[_0xae35('0x13')];this[_0xae35('0x14')]=_0x212846[_0xae35('0x14')];this[_0xae35('0x15')]={};ami['on'](_0xae35('0x16'),this[_0xae35('0x17')][_0xae35('0x18')](this));ami['on'](_0xae35('0x19'),this['syncNewExten']['bind'](this));ami['on'](_0xae35('0x1a'),this[_0xae35('0x1b')]['bind'](this));ami['on'](_0xae35('0x1c'),this[_0xae35('0x1d')][_0xae35('0x18')](this));ami['on']('varset',this[_0xae35('0x1e')][_0xae35('0x18')](this));ami['on'](_0xae35('0x1f'),this[_0xae35('0x20')]['bind'](this));ami['on'](_0xae35('0x21'),this[_0xae35('0x22')][_0xae35('0x18')](this));ami['on'](_0xae35('0x23'),this[_0xae35('0x24')][_0xae35('0x18')](this));ami['on'](_0xae35('0x25'),this[_0xae35('0x26')][_0xae35('0x18')](this));ami['on'](_0xae35('0x27'),this[_0xae35('0x28')][_0xae35('0x18')](this));ami['on'](_0xae35('0x29'),this[_0xae35('0x2a')][_0xae35('0x18')](this));try{logger[_0xae35('0x2b')](_0xae35('0x2c'));ami[_0xae35('0x2d')]();}catch(_0x5e0311){logger[_0xae35('0x2e')]('[voiceCallReport][coreshowchannels]',util[_0xae35('0x2f')](_0x5e0311,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0xae35('0x30')]=function(_0x57906e){return _0x57906e!==null&&!_[_0xae35('0x31')](_0x57906e);};VoiceCallReport[_0xae35('0x32')][_0xae35('0x33')]=function(_0x4a5259,_0x13eff3,_0x5d32c6){io['to'](_0x4a5259)[_0xae35('0x33')](_0x13eff3,_0x5d32c6);};VoiceCallReport[_0xae35('0x32')][_0xae35('0x22')]=function(_0x136d3d){try{if(this[_0xae35('0x30')](_0x136d3d)){logger[_0xae35('0x2b')](_0xae35('0x34'),_0x136d3d[_0xae35('0x35')],_0x136d3d[_0xae35('0x36')],_0x136d3d[_0xae35('0x37')]);logger[_0xae35('0x38')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x136d3d[_0xae35('0x35')],util[_0xae35('0x2f')](_0x136d3d,{'showHidden':![],'depth':null}));if(_0x136d3d['uniqueid']===_0x136d3d['linkedid']){if(!_[_0xae35('0x31')](this[_0xae35('0x13')][_0x136d3d[_0xae35('0x35')]])){_['merge'](this['channels'][_0x136d3d[_0xae35('0x35')]],_[_0xae35('0x39')](_0x136d3d,_[_0xae35('0x3a')](this[_0xae35('0x13')][_0x136d3d[_0xae35('0x35')]])));}}if(_0x136d3d['context']===_0xae35('0x3b')){if(this[_0xae35('0x14')][_0x136d3d[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]){if(_0x136d3d[_0xae35('0x3e')]==_0xae35('0x3f')){this[_0xae35('0x14')][_0x136d3d[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x40')]=_0x136d3d[_0xae35('0x41')];this[_0xae35('0x33')](util['format'](_0xae35('0x42'),this[_0xae35('0x14')][_0x136d3d[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x43')]),_0xae35('0x44'),{'destaccountcode':this[_0xae35('0x14')][_0x136d3d[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x45')],'destconnectedlinenum':_0x136d3d[_0xae35('0x41')]});}}}}}catch(_0x23712d){logger[_0xae35('0x2e')](_0xae35('0x46'),_0x136d3d['uniqueid'],util['inspect'](_0x23712d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')][_0xae35('0x1b')]=function(_0x3fb989){try{if(this['isNotNull'](_0x3fb989)){logger[_0xae35('0x38')](_0xae35('0x47'),_0x3fb989[_0xae35('0x35')],util[_0xae35('0x2f')](_0x3fb989,{'showHidden':![],'depth':null}));if(this[_0xae35('0x13')][_0x3fb989[_0xae35('0x35')]])return;if(_0x3fb989[_0xae35('0x3c')]===_0xae35('0x48'))return;if(_0x3fb989[_0xae35('0x35')]!==_0x3fb989[_0xae35('0x49')]&&!this[_0xae35('0x15')][_0x3fb989[_0xae35('0x49')]])return;logger[_0xae35('0x2b')](_0xae35('0x4a'),_0x3fb989[_0xae35('0x35')],_0x3fb989[_0xae35('0x4b')],_0x3fb989['exten']);this[_0xae35('0x13')][_0x3fb989[_0xae35('0x35')]]=new Channel();this[_0xae35('0x13')][_0x3fb989[_0xae35('0x35')]][_0xae35('0x4c')]=moment()[_0xae35('0x4d')](_0xae35('0x4e'));this['channels'][_0x3fb989['uniqueid']][_0xae35('0x4f')]=dispositions[_['toNumber'](_0x3fb989[_0xae35('0x50')])];_[_0xae35('0x51')](this[_0xae35('0x13')][_0x3fb989[_0xae35('0x35')]],_['pick'](_0x3fb989,_[_0xae35('0x3a')](this[_0xae35('0x13')][_0x3fb989['uniqueid']])));if(_0x3fb989[_0xae35('0x4b')]===_0xae35('0x3b')){if(this[_0xae35('0x14')][_0x3fb989[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]){if(_['isUndefined'](this['agents'][_0x3fb989[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]['destconnectedlinenum'])){this[_0xae35('0x14')][_0x3fb989[_0xae35('0x3c')]['split']('-')[0x0]][_0xae35('0x40')]=_0x3fb989['exten'];logger[_0xae35('0x38')](_0xae35('0x52'),_0x3fb989['uniqueid'],util[_0xae35('0x2f')]({'id':this[_0xae35('0x14')][_0x3fb989[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xae35('0x14')][_0x3fb989[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x3fb989[_0xae35('0x3e')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xae35('0x4d')](_0xae35('0x42'),this[_0xae35('0x14')][_0x3fb989['channel'][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x43')]),_0xae35('0x44'),{'id':this[_0xae35('0x14')][_0x3fb989[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xae35('0x14')][_0x3fb989['channel'][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x45')],'destconnectedlinenum':_0x3fb989['exten']});}}}}}catch(_0x7e9f9f){logger[_0xae35('0x2e')](_0xae35('0x53'),_0x3fb989[_0xae35('0x35')],util['inspect'](_0x7e9f9f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')][_0xae35('0x17')]=function(_0x43ac70){try{if(this[_0xae35('0x30')](_0x43ac70)){logger[_0xae35('0x38')](_0xae35('0x54'),_0x43ac70[_0xae35('0x35')],util[_0xae35('0x2f')](_0x43ac70,{'showHidden':![],'depth':null}));if(_0x43ac70[_0xae35('0x3c')]===_0xae35('0x48')||_0x43ac70[_0xae35('0x3e')]==='h')return;if(_0x43ac70['uniqueid']===_0x43ac70['linkedid']||this[_0xae35('0x15')][_0x43ac70[_0xae35('0x49')]]){_0x43ac70['application']=_0x43ac70[_0xae35('0x55')]['toLowerCase']();_0x43ac70[_0xae35('0x56')]=_0x43ac70[_0xae35('0x57')]||_0x43ac70[_0xae35('0x56')];if(_0x43ac70[_0xae35('0x57')]&&!_0x43ac70[_0xae35('0x57')][_0xae35('0x58')](_0xae35('0x59'))&&_0x43ac70[_0xae35('0x55')]!=='queue'){_0x43ac70[_0xae35('0x56')]=_0x43ac70[_0xae35('0x56')][_0xae35('0x5a')]();}logger['info']('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x43ac70['uniqueid'],_0x43ac70[_0xae35('0x55')],_0x43ac70[_0xae35('0x56')]);if(_[_0xae35('0x31')](this[_0xae35('0x13')][_0x43ac70[_0xae35('0x35')]])){this['channels'][_0x43ac70[_0xae35('0x35')]]=new Channel();this[_0xae35('0x13')][_0x43ac70[_0xae35('0x35')]][_0xae35('0x4c')]=_0x43ac70['duration']?moment()[_0xae35('0x5b')](moment[_0xae35('0x5c')](_0x43ac70[_0xae35('0x5c')])[_0xae35('0x5d')](),_0xae35('0x5d'))[_0xae35('0x4d')](_0xae35('0x4e')):moment()[_0xae35('0x4d')](_0xae35('0x4e'));this[_0xae35('0x13')][_0x43ac70['uniqueid']][_0xae35('0x4f')]=_0xae35('0xe');}_[_0xae35('0x51')](this[_0xae35('0x13')][_0x43ac70[_0xae35('0x35')]],_['pick'](_0x43ac70,_['keys'](this[_0xae35('0x13')][_0x43ac70['uniqueid']])));if(_[_0xae35('0x5e')](applications,_0x43ac70[_0xae35('0x55')])){this[_0xae35('0x13')][_0x43ac70[_0xae35('0x35')]]['lastapplication']=_0x43ac70[_0xae35('0x55')];this[_0xae35('0x13')][_0x43ac70['uniqueid']]['lastdata']=_0x43ac70[_0xae35('0x56')];if(_0x43ac70[_0xae35('0x55')]===_0xae35('0x8')&&_[_0xae35('0x58')](_0x43ac70[_0xae35('0x56')]['toLowerCase'](),_0xae35('0x5f'))){var _0x57925f=_0x43ac70[_0xae35('0x56')]['split']('=');var _0x5ab531=_0x57925f[0x0]['toLowerCase']()[_0xae35('0x60')](/cdr\((.*)\)/);if(_0x5ab531){if(_0x5ab531[0x1]===_0xae35('0x61')&&!_['isNil'](this[_0xae35('0x13')][_0x43ac70[_0xae35('0x35')]][_0x5ab531[0x1]]))return;this[_0xae35('0x13')][_0x43ac70[_0xae35('0x35')]][_0x5ab531[0x1]]=_0x57925f[0x1];}}else if(_0x43ac70[_0xae35('0x55')]===_0xae35('0x9')){this[_0xae35('0x13')][_0x43ac70[_0xae35('0x35')]][_0xae35('0x9')]=_0x43ac70[_0xae35('0x56')][_0xae35('0x3d')](',')[0x0];}}}}}catch(_0x3c040d){logger['error'](_0xae35('0x62'),_0x43ac70[_0xae35('0x35')],util[_0xae35('0x2f')](_0x3c040d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')][_0xae35('0x1d')]=function(_0x403121){try{if(this[_0xae35('0x30')](_0x403121)){logger['info'](_0xae35('0x63'),_0x403121['uniqueid'],_0x403121[_0xae35('0x49')],_0x403121[_0xae35('0x36')],_0x403121['calleridnum']);logger[_0xae35('0x38')](_0xae35('0x64'),_0x403121[_0xae35('0x35')],util[_0xae35('0x2f')](_0x403121,{'showHidden':![],'depth':null}));if(_0x403121[_0xae35('0x50')]!=='6')return;if(_0x403121[_0xae35('0x35')]!==_0x403121[_0xae35('0x49')]){var _0xf2156=moment();if(this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]]){if(!this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]]['answered']){this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]][_0xae35('0x65')]=!![];this['channels'][_0x403121[_0xae35('0x49')]]['answertime']=_0xf2156[_0xae35('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]][_0xae35('0x4c')]){this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]][_0xae35('0x66')]=_0xf2156[_0xae35('0x67')](this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]][_0xae35('0x4c')],_0xae35('0x5d'));}}this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]]['linkedid']=_0x403121['uniqueid'];if(_0x403121['calleridnum']!=='xcally-motion-preview'){this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]][_0xae35('0x41')]=_0x403121[_0xae35('0x37')];}this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]]['connectedlinename']=_0x403121[_0xae35('0x36')];this['channels'][_0x403121[_0xae35('0x49')]][_0xae35('0x68')]=_0x403121['channel'];this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]]['disposition']=dispositions[_[_0xae35('0x69')](_0x403121[_0xae35('0x50')])];if(this[_0xae35('0x14')][_0x403121[_0xae35('0x3c')]['split']('-')[0x0]]){this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]]['UserId']=this[_0xae35('0x14')][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]['id'];this['channels'][_0x403121[_0xae35('0x49')]]['membername']=this['agents'][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x43')];}}if(this[_0xae35('0x13')][_0x403121['uniqueid']]){if(!this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]][_0xae35('0x65')]){this['channels'][_0x403121[_0xae35('0x35')]]['answered']=!![];this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]][_0xae35('0x6a')]=_0xf2156[_0xae35('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]][_0xae35('0x4c')]){this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]]['holdtime']=_0xf2156[_0xae35('0x67')](this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]][_0xae35('0x4c')],_0xae35('0x5d'));}}if(_0x403121[_0xae35('0x37')]!==_0xae35('0x3f')){this['channels'][_0x403121['uniqueid']]['connectedlinenum']=_0x403121[_0xae35('0x37')];}this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]][_0xae35('0x6b')]=_0x403121[_0xae35('0x36')];this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]][_0xae35('0x68')]=_0x403121[_0xae35('0x3c')];this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]]['disposition']=dispositions[_['toNumber'](_0x403121[_0xae35('0x50')])];}}else{if(this['channels'][_0x403121[_0xae35('0x35')]]){if(this[_0xae35('0x14')][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]){this['channels'][_0x403121[_0xae35('0x35')]][_0xae35('0x6c')]=this[_0xae35('0x14')][_0x403121[_0xae35('0x3c')]['split']('-')[0x0]]['id'];this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]][_0xae35('0x6d')]=this['agents'][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]['name'];}}}if(_0x403121[_0xae35('0x4b')]===_0xae35('0x3b')){if(this['agents'][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]){this[_0xae35('0x14')][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x40')]=_0x403121[_0xae35('0x3e')];var _0x374c6c,_0x570cd5;if(this[_0xae35('0x13')][_0x403121['uniqueid']]){_0x374c6c=this[_0xae35('0x13')][_0x403121[_0xae35('0x35')]]['routealias'];_0x570cd5=this['channels'][_0x403121[_0xae35('0x35')]][_0xae35('0x9')];}else if(this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]]){_0x374c6c=this[_0xae35('0x13')][_0x403121[_0xae35('0x49')]][_0xae35('0x6e')];_0x570cd5=this[_0xae35('0x13')][_0x403121['linkedid']][_0xae35('0x9')];}this['agents'][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x9')]=_0x570cd5;this['agents'][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x6e')]=_0x374c6c;logger[_0xae35('0x38')](_0xae35('0x6f'),_0x403121[_0xae35('0x35')],util[_0xae35('0x2f')]({'id':this[_0xae35('0x14')][_0x403121['channel'][_0xae35('0x3d')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x45')],'destconnectedlinenum':_0x403121[_0xae35('0x3e')],'routealias':_0x374c6c,'queue':_0x570cd5||undefined},{'showHidden':![],'depth':null}));this[_0xae35('0x33')](util[_0xae35('0x4d')](_0xae35('0x42'),this[_0xae35('0x14')][_0x403121[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x43')]),_0xae35('0x44'),{'id':this[_0xae35('0x14')][_0x403121['channel']['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x403121[_0xae35('0x3c')]['split']('-')[0x0]][_0xae35('0x45')],'destconnectedlinenum':_0x403121[_0xae35('0x3e')],'routealias':_0x374c6c,'queue':_0x570cd5||undefined});}}}}catch(_0x543aac){logger[_0xae35('0x2e')](_0xae35('0x70'),_0x403121[_0xae35('0x35')],util[_0xae35('0x2f')](_0x543aac,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xae35('0x71')]=function(_0x4f3f9b,_0xba9e72){try{if(this[_0xae35('0x13')][_0x4f3f9b]){logger['info'](_0xae35('0x72'),_0x4f3f9b,_0xba9e72);this['channels'][_0x4f3f9b][_0xae35('0x73')]=!![];if(_['endsWith'](_0xba9e72,_0xae35('0x74'))){_0xba9e72=_0xba9e72[_0xae35('0x75')](_0xae35('0x74'),_0xae35('0x76'));}this['channels'][_0x4f3f9b][_0xae35('0x77')]=_0xba9e72;var _0x4f8328=_['find'](this['channels'][_0x4f3f9b][_0xae35('0x78')],{'filename':_0xba9e72});if(_[_0xae35('0x79')](_0x4f8328)){this['channels'][_0x4f3f9b]['monitors'][_0xae35('0x7a')]({'filename':_0xba9e72,'createdAt':moment()['format'](_0xae35('0x4e')),'mixmonitorid':'','status':_0xae35('0x7b')});}}}catch(_0xf5a00b){logger[_0xae35('0x2e')](_0xae35('0x7c'),_0x4f3f9b,util[_0xae35('0x2f')](_0xf5a00b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')]['syncVarSet']=function(_0x5b5a20){try{if(this[_0xae35('0x30')](_0x5b5a20)){logger['debug']('[%s][voiceCallReport][varset]\x20event:',_0x5b5a20[_0xae35('0x35')],util[_0xae35('0x2f')](_0x5b5a20,{'showHidden':![],'depth':null}));if(this[_0xae35('0x13')][_0x5b5a20[_0xae35('0x35')]]&&_0x5b5a20[_0xae35('0x3c')]!=_0xae35('0x48')){if(this['isNotNull'](_0x5b5a20['variable'])){if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x7e')])){logger[_0xae35('0x2b')](_0xae35('0x7f'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20['value']);this[_0xae35('0x71')](_0x5b5a20['uniqueid'],_0x5b5a20[_0xae35('0x80')]);}else if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x81')])){logger[_0xae35('0x2b')](_0xae35('0x82'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]);this[_0xae35('0x13')][_0x5b5a20['uniqueid']]['calleridnum']=_0x5b5a20[_0xae35('0x80')];}else if(this['isNotNull'](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x83')])){logger[_0xae35('0x2b')](_0xae35('0x84'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]);this['channels'][_0x5b5a20[_0xae35('0x35')]][_0xae35('0x85')]=_0x5b5a20[_0xae35('0x80')];}else if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x86')])){logger[_0xae35('0x2b')](_0xae35('0x87'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]);this[_0xae35('0x13')][_0x5b5a20[_0xae35('0x35')]][_0xae35('0x61')]=_0x5b5a20['value'];}else if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x88')])){logger[_0xae35('0x2b')](_0xae35('0x89'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]['split'](',')[0x0]);this['channels'][_0x5b5a20[_0xae35('0x35')]][_0xae35('0x9')]=_0x5b5a20[_0xae35('0x80')][_0xae35('0x3d')](',')[0x0];}else if(this['isNotNull'](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x8a')])){logger['info'](_0xae35('0x8b'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]);this['channels'][_0x5b5a20[_0xae35('0x35')]]['originatecalleridnum']=_0x5b5a20[_0xae35('0x80')];}else if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')]['xmd-destination'])){logger[_0xae35('0x2b')](_0xae35('0x8c'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20['value']);this['channels'][_0x5b5a20[_0xae35('0x35')]]['destination']=_0x5b5a20[_0xae35('0x80')];}else if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x8d')])){logger['info'](_0xae35('0x8e'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]);this['channels'][_0x5b5a20[_0xae35('0x35')]][_0xae35('0x8f')]=_0x5b5a20['value'];}else if(this[_0xae35('0x30')](_0x5b5a20['variable']['xmcs-queue'])){logger[_0xae35('0x2b')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]);this[_0xae35('0x13')][_0x5b5a20[_0xae35('0x35')]][_0xae35('0x9')]=_0x5b5a20[_0xae35('0x80')];}else if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x90')])){logger[_0xae35('0x2b')](_0xae35('0x91'),_0x5b5a20[_0xae35('0x35')],_0x5b5a20[_0xae35('0x80')]);this[_0xae35('0x13')][_0x5b5a20[_0xae35('0x35')]]['sipcalluniqueid']=_0x5b5a20[_0xae35('0x80')];}}}else if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')][_0xae35('0x7e')])){if(_0x5b5a20[_0xae35('0x80')]){var _0x5ebc3a=path[_0xae35('0x92')](_0x5b5a20[_0xae35('0x80')])['name'];logger[_0xae35('0x2b')](_0xae35('0x7f'),_0x5ebc3a,_0x5b5a20['value']);this[_0xae35('0x71')](_0x5ebc3a,_0x5b5a20[_0xae35('0x80')]);}}else if(this[_0xae35('0x13')][_0x5b5a20[_0xae35('0x49')]]){if(this[_0xae35('0x30')](_0x5b5a20['variable'])){if(this[_0xae35('0x30')](_0x5b5a20[_0xae35('0x7d')]['sipcallid'])){logger[_0xae35('0x2b')](_0xae35('0x91'),_0x5b5a20['linkedid'],_0x5b5a20[_0xae35('0x80')]);this[_0xae35('0x13')][_0x5b5a20[_0xae35('0x49')]][_0xae35('0x93')]=_0x5b5a20[_0xae35('0x80')];}}}}}catch(_0x2704a2){logger[_0xae35('0x2e')](_0xae35('0x94'),_0x5b5a20['uniqueid'],util[_0xae35('0x2f')](_0x2704a2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')][_0xae35('0x20')]=function(_0x6e6b0f){try{if(this[_0xae35('0x30')](_0x6e6b0f)){logger[_0xae35('0x38')]('[%s][voiceCallReport][hangup]\x20event:',_0x6e6b0f['uniqueid'],util[_0xae35('0x2f')](_0x6e6b0f,{'showHidden':![],'depth':null}));if(this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]]){if(this['channels'][this['blindTransfers'][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x49')]]){this['channels'][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x49')]]['uniqueid']=_0x6e6b0f[_0xae35('0x35')];this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]]['linkedid']][_0xae35('0x65')]=this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]]['answered'];this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x49')]]['answertime']=this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x6a')];this[_0xae35('0x13')][this['blindTransfers'][_0x6e6b0f['linkedid']][_0xae35('0x49')]][_0xae35('0x68')]=this['channels'][this[_0xae35('0x15')][_0x6e6b0f['linkedid']]['linkedid']][_0xae35('0x3c')];this['channels'][this[_0xae35('0x15')][_0x6e6b0f['linkedid']][_0xae35('0x49')]][_0xae35('0x4f')]=this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x4f')];this['channels'][_0x6e6b0f[_0xae35('0x35')]]=this[_0xae35('0x13')][this['blindTransfers'][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x49')]];delete this[_0xae35('0x13')][this['blindTransfers'][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x49')]];}else if(this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]]['uniqueid']]){this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x35')]][_0xae35('0x35')]=[this[_0xae35('0x13')][this['blindTransfers'][_0x6e6b0f[_0xae35('0x49')]]['uniqueid']][_0xae35('0x49')],this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x35')]][_0xae35('0x49')]=this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f['linkedid']][_0xae35('0x35')]][_0xae35('0x35')]][0x0];this['channels'][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x35')]][_0xae35('0x65')]=this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]]['answered'];this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f['linkedid']][_0xae35('0x35')]][_0xae35('0x6a')]=this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x6a')];this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]]['uniqueid']]['destinationchannel']=this[_0xae35('0x13')][this['blindTransfers'][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x35')]][_0xae35('0x3c')];this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x35')]][_0xae35('0x4f')]=this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x4f')];this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]]=this[_0xae35('0x13')][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]][_0xae35('0x35')]];delete this['channels'][this[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x49')]]['uniqueid']];}}if(this[_0xae35('0x13')][_0x6e6b0f['uniqueid']]){logger[_0xae35('0x2b')](_0xae35('0x95'),_0x6e6b0f[_0xae35('0x35')],_0x6e6b0f[_0xae35('0x96')]);var _0x22996c=moment();this['channels'][_0x6e6b0f['uniqueid']]['endtime']=_0x22996c[_0xae35('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x5c')]=_0x22996c[_0xae35('0x67')](this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x4c')],_0xae35('0x5d'));if(this['channels'][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x65')]){this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x97')]=_0x22996c[_0xae35('0x67')](this['channels'][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x6a')],'seconds');this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x66')]=this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x5c')]-this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x97')];}if(_0x6e6b0f[_0xae35('0x4b')]===_0xae35('0x3b')){if(this['agents'][_0x6e6b0f[_0xae35('0x3c')]['split']('-')[0x0]]){this[_0xae35('0x14')][_0x6e6b0f[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]=_['omit'](this['agents'][_0x6e6b0f['channel'][_0xae35('0x3d')]('-')[0x0]],[_0xae35('0x40')]);logger[_0xae35('0x38')](_0xae35('0x98'),_0x6e6b0f[_0xae35('0x35')],util[_0xae35('0x2f')]({'id':this[_0xae35('0x14')][_0x6e6b0f[_0xae35('0x3c')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xae35('0x14')][_0x6e6b0f[_0xae35('0x3c')]['split']('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0xae35('0x33')](util[_0xae35('0x4d')](_0xae35('0x42'),this[_0xae35('0x14')][_0x6e6b0f[_0xae35('0x3c')][_0xae35('0x3d')]('-')[0x0]]['name']),'user:agentcomplete',{'id':this[_0xae35('0x14')][_0x6e6b0f['channel'][_0xae35('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xae35('0x14')][_0x6e6b0f['channel'][_0xae35('0x3d')]('-')[0x0]][_0xae35('0x45')]});for(var _0x34df33=0x0;_0x34df33<Object[_0xae35('0x3a')](this[_0xae35('0x14')])[_0xae35('0x99')];_0x34df33++){var _0x4eb299=Object['keys'](this['agents'])[_0x34df33];var _0x56e647=this[_0xae35('0x14')][_0x4eb299];if(_0x56e647[_0xae35('0x45')]===Number(_0x6e6b0f[_0xae35('0x41')])){this[_0xae35('0x33')](util[_0xae35('0x4d')](_0xae35('0x42'),_0x56e647[_0xae35('0x43')]),'user:agentcomplete',{'id':_0x56e647['id'],'destaccountcode':_0x56e647[_0xae35('0x45')],'transfer':this[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x9a')]});break;}}}}var _0xa5fdb6=this;Promise[_0xae35('0x9b')]()['then'](function(){var _0x477f01=_0xa5fdb6[_0xae35('0x13')][_0x6e6b0f['uniqueid']];if(typeof _0x477f01[_0xae35('0x9a')]===_0xae35('0x9c'))return;if(_['isEmpty'](_0x477f01['monitors']))return;return RpcSetting[_0xae35('0x9d')]()[_0xae35('0x9e')](function(_0x36b8df){if(!_0x36b8df[_0xae35('0x9f')])return;return Promise['resolve']()['then'](function(){return ami[_0xae35('0xa0')]({'action':'StopMixMonitor','channel':_0x477f01[_0xae35('0x3c')]})['catch'](function(){});})[_0xae35('0x9e')](function(){return ami[_0xae35('0xa0')]({'action':_0xae35('0xa1'),'channel':_0x477f01['destinationchannel']})['catch'](function(){})['finally'](function(){var _0x43278d=_0xa5fdb6[_0xae35('0x14')][_0x477f01['destinationchannel'][_0xae35('0x3d')]('-')[0x0]];if(!_0x43278d)return;io[_0xae35('0x33')](_0xae35('0xa2'),{'agentId':_0x43278d['id'],'uniqueid':_0x477f01[_0xae35('0x35')]});});});});})[_0xae35('0x9e')](function(){if(_0x6e6b0f['event']===_0xae35('0xa3')){_0xa5fdb6[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x35')]]=_0x6e6b0f;}else{if(_0xa5fdb6[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]]['type']===_0xae35('0xa4')&&_0xa5fdb6[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x35')]]){_0xa5fdb6[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x35')]=[_0xa5fdb6[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x49')],_0xa5fdb6[_0xae35('0x13')][_0x6e6b0f['uniqueid']][_0xae35('0x49')]=_0xa5fdb6[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]][_0xae35('0x35')]][0x0];delete _0xa5fdb6[_0xae35('0x15')][_0x6e6b0f[_0xae35('0x35')]];}}logger[_0xae35('0x38')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x6e6b0f[_0xae35('0x35')],util[_0xae35('0x2f')](_0xa5fdb6[_0xae35('0x13')][_0x6e6b0f[_0xae35('0x35')]],{'showHidden':![],'depth':null}));ami[_0xae35('0x33')]('custom:voiceCallReport',_0xa5fdb6['channels'][_0x6e6b0f[_0xae35('0x35')]]);delete _0xa5fdb6[_0xae35('0x13')][_0x6e6b0f['uniqueid']];});}}}catch(_0x1c549e){logger['error'](_0xae35('0xa5'),_0x6e6b0f[_0xae35('0x35')],util['inspect'](_0x1c549e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')][_0xae35('0x24')]=function(_0x172880){try{if(this[_0xae35('0x30')](_0x172880)){logger[_0xae35('0x2b')](_0xae35('0xa6'),_0x172880['uniqueid'],_0x172880[_0xae35('0xa7')],_0x172880[_0xae35('0xa8')]);logger[_0xae35('0x38')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x172880[_0xae35('0x35')],util[_0xae35('0x2f')](_0x172880,{'showHidden':![],'depth':null}));var _0x51551e;if(this[_0xae35('0x13')][_0x172880[_0xae35('0xa9')]]){this[_0xae35('0x13')][_0x172880[_0xae35('0xa9')]][_0xae35('0xaa')]=_0x172880['origtransferercalleridnum'];this[_0xae35('0x13')][_0x172880['transfereeuniqueid']][_0xae35('0xab')]=_0x172880['transfertargetcalleridnum'];if(this[_0xae35('0x13')][_0x172880[_0xae35('0xac')]]){_0x51551e=this['channels'][_0x172880[_0xae35('0xac')]];this[_0xae35('0x13')][_0x172880[_0xae35('0xac')]]=this['channels'][_0x172880[_0xae35('0xa9')]];this[_0xae35('0x13')][_0x172880[_0xae35('0xa9')]]=_0x51551e;}this['channels'][_0x172880[_0xae35('0xac')]]['transferType']=_0xae35('0xad');}else if(this[_0xae35('0x13')][_0x172880[_0xae35('0xae')]]){this[_0xae35('0x13')][_0x172880[_0xae35('0xae')]][_0xae35('0xaa')]=_0x172880[_0xae35('0xa7')];this[_0xae35('0x13')][_0x172880['transfertargetuniqueid']][_0xae35('0xab')]=_0x172880['transfertargetcalleridnum'];if(this[_0xae35('0x13')][_0x172880[_0xae35('0xaf')]]){_0x51551e=this[_0xae35('0x13')][_0x172880[_0xae35('0xaf')]];this['channels'][_0x172880[_0xae35('0xaf')]]=this[_0xae35('0x13')][_0x172880[_0xae35('0xae')]];this[_0xae35('0x13')][_0x172880[_0xae35('0xae')]]=_0x51551e;}this[_0xae35('0x13')][_0x172880[_0xae35('0xae')]][_0xae35('0x9a')]=_0xae35('0xad');}if((this[_0xae35('0x13')][_0x172880['origtransfereruniqueid']]||this[_0xae35('0x13')][_0x172880[_0xae35('0xb0')]])&&this[_0xae35('0x13')][_0x172880[_0xae35('0xac')]]){var _0x4b9f6c=_[_0xae35('0xb1')]([this[_0xae35('0x13')][_0x172880[_0xae35('0xaf')]],this[_0xae35('0x13')][_0x172880[_0xae35('0xb0')]],this[_0xae35('0x13')][_0x172880['secondtransfereruniqueid']]],function(_0x35cc5b){return _0x35cc5b&&_0x35cc5b[_0xae35('0x61')]===_0xae35('0xa4')&&_0x35cc5b[_0xae35('0xb2')];});if(_0x4b9f6c){if(this[_0xae35('0x13')][_0x172880[_0xae35('0xaf')]])this[_0xae35('0x13')][_0x172880['origtransfereruniqueid']][_0xae35('0x9a')]=_0xae35('0xad');if(this[_0xae35('0x13')][_0x172880[_0xae35('0xb0')]])this[_0xae35('0x13')][_0x172880['origtransfererlinkedid']][_0xae35('0x9a')]=_0xae35('0xad');this[_0xae35('0x13')][_0x172880[_0xae35('0xac')]][_0xae35('0x9a')]=_0xae35('0xad');}}}}catch(_0x3e1d49){logger[_0xae35('0x2e')](_0xae35('0xb3'),_0x172880[_0xae35('0x35')],util[_0xae35('0x2f')](_0x3e1d49,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')][_0xae35('0x26')]=function(_0x3b24c4){try{if(this['isNotNull'](_0x3b24c4)){logger[_0xae35('0x2b')](_0xae35('0xb4'),_0x3b24c4[_0xae35('0x35')],_0x3b24c4[_0xae35('0xb5')],_0x3b24c4['extension']);logger['debug'](_0xae35('0xb6'),_0x3b24c4[_0xae35('0x35')],util['inspect'](_0x3b24c4,{'showHidden':![],'depth':null}));if(this[_0xae35('0x13')][_0x3b24c4[_0xae35('0xa9')]]){this[_0xae35('0x13')][_0x3b24c4['transfereeuniqueid']][_0xae35('0xaa')]=_0x3b24c4[_0xae35('0xb5')];this['channels'][_0x3b24c4[_0xae35('0xa9')]][_0xae35('0xab')]=_0x3b24c4['extension'];this[_0xae35('0x13')][_0x3b24c4[_0xae35('0xa9')]][_0xae35('0x9a')]=_0xae35('0xb7');this['syncHangup']({'event':_0xae35('0xa3'),'uniqueid':_0x3b24c4[_0xae35('0xa9')],'linkedid':_0x3b24c4[_0xae35('0xb8')],'context':_0x3b24c4[_0xae35('0x4b')],'channel':_0x3b24c4[_0xae35('0xb9')]});}else{this[_0xae35('0x13')][_0x3b24c4[_0xae35('0xb8')]]['transferType']='BLIND';this[_0xae35('0x20')]({'event':_0xae35('0xa3'),'uniqueid':_0x3b24c4[_0xae35('0xb8')],'linkedid':_0x3b24c4['transfereeuniqueid'],'context':_0x3b24c4['context'],'channel':_0x3b24c4[_0xae35('0xb9')]});}}}catch(_0x5c110e){logger[_0xae35('0x2e')](_0xae35('0xba'),_0x3b24c4[_0xae35('0x35')],util[_0xae35('0x2f')](_0x5c110e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xae35('0x32')][_0xae35('0x28')]=function(_0x44b351){try{if(this[_0xae35('0x30')](_0x44b351)){logger[_0xae35('0x38')](_0xae35('0xbb'),_0x44b351[_0xae35('0x35')],util['inspect'](_0x44b351,{'showHidden':![],'depth':null}));if(this[_0xae35('0x13')][_0x44b351['uniqueid']]){if(!_[_0xae35('0x79')](this['channels'][_0x44b351[_0xae35('0x35')]][_0xae35('0x6a')])){this[_0xae35('0x13')][_0x44b351['uniqueid']][_0xae35('0xbc')]=moment()[_0xae35('0x4d')](_0xae35('0x4e'));logger[_0xae35('0x2b')](_0xae35('0xbd'),_0x44b351[_0xae35('0x35')],this['channels'][_0x44b351['uniqueid']]['mohstarttime']);}}}}catch(_0xbf8660){logger['error'](_0xae35('0xbe'),_0x44b351[_0xae35('0x35')],util[_0xae35('0x2f')](_0xbf8660,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xae35('0x2a')]=function(_0x137064){try{if(this[_0xae35('0x30')](_0x137064)){logger['debug'](_0xae35('0xbf'),_0x137064[_0xae35('0x35')],util[_0xae35('0x2f')](_0x137064,{'showHidden':![],'depth':null}));if(this['channels'][_0x137064[_0xae35('0x35')]]){if(!_[_0xae35('0x79')](this['channels'][_0x137064[_0xae35('0x35')]]['mohstarttime'])){this[_0xae35('0x13')][_0x137064['uniqueid']][_0xae35('0xc0')]+=moment()['milliseconds'](0x0)[_0xae35('0x67')](this[_0xae35('0x13')][_0x137064['uniqueid']]['mohstarttime'],_0xae35('0x5d'));logger[_0xae35('0x2b')](_0xae35('0xc1'),_0x137064[_0xae35('0x35')],this[_0xae35('0x13')][_0x137064[_0xae35('0x35')]][_0xae35('0xc0')]);delete this[_0xae35('0x13')][_0x137064[_0xae35('0x35')]][_0xae35('0xbc')];}}}}catch(_0x11a802){logger[_0xae35('0x2e')]('[%s][voiceCallReport][musiconholdstop]',_0x137064[_0xae35('0x35')],util['inspect'](_0x11a802,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0xfead=['appdata','startsWith','CDR(routeAlias)','isUndefined','duration','subtract','seconds','lastdata','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','answertime','holdtime','calleridnum','connectedlinename','UserId','membername','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','monitorFilename','find','monitors','push','syncVarSet','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','calleridpreview','xmcs-queue','sipcallid','sipcalluniqueid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','[%s][voiceCallReport][hangup]\x20event:','destinationchannel','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','diff','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','length','transferType','then','undefined','getSettings','stopRecordingOnTransfer','Action','catch','StopMixMonitor','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','origtransferercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','ATTENDED','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','set','queue','dial','playback','voicemail','NO\x20ANSWER','FAILED','redis','defaults','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newchannel','newstate','syncNewState','varset','hangup','syncHangup','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','error','prototype','emit','syncNewCallerId','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','merge','pick','from-sip','split','exten','xcally-motion-preview','channel','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','[%s][voiceCallReport][newcallerid]','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','keys','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','accountcode','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata'];(function(_0x283228,_0x4ca45f){var _0x1f3baf=function(_0xdf128f){while(--_0xdf128f){_0x283228['push'](_0x283228['shift']());}};_0x1f3baf(++_0x4ca45f);}(_0xfead,0x72));var _0xdfea=function(_0x16d67c,_0x32238d){_0x16d67c=_0x16d67c-0x0;var _0x20f460=_0xfead[_0x16d67c];return _0x20f460;};'use strict';var _=require(_0xdfea('0x0'));var moment=require(_0xdfea('0x1'));var util=require(_0xdfea('0x2'));var path=require(_0xdfea('0x3'));var Redis=require(_0xdfea('0x4'));var config=require(_0xdfea('0x5'));var logger=require(_0xdfea('0x6'))(_0xdfea('0x7'));var ami=require(_0xdfea('0x8'));var Channel=require(_0xdfea('0x9'));var RpcSetting=require(_0xdfea('0xa'));var applications=[_0xdfea('0xb'),_0xdfea('0xc'),'agi',_0xdfea('0xd'),_0xdfea('0xe'),_0xdfea('0xf')];var dispositions=[_0xdfea('0x10'),_0xdfea('0x11'),_0xdfea('0x11'),_0xdfea('0x10'),_0xdfea('0x10'),'NO\x20ANSWER','ANSWERED','BUSY',_0xdfea('0x11'),_0xdfea('0x11'),_0xdfea('0x11')];config[_0xdfea('0x12')]=_[_0xdfea('0x13')](config[_0xdfea('0x12')],{'host':_0xdfea('0x14'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdfea('0x12')]));function VoiceCallReport(_0x282e9a){this[_0xdfea('0x15')]=_0x282e9a['channels'];this[_0xdfea('0x16')]=_0x282e9a[_0xdfea('0x16')];this[_0xdfea('0x17')]={};ami['on'](_0xdfea('0x18'),this[_0xdfea('0x19')][_0xdfea('0x1a')](this));ami['on']('newexten',this[_0xdfea('0x19')]['bind'](this));ami['on'](_0xdfea('0x1b'),this['syncNewChannel'][_0xdfea('0x1a')](this));ami['on'](_0xdfea('0x1c'),this[_0xdfea('0x1d')][_0xdfea('0x1a')](this));ami['on'](_0xdfea('0x1e'),this['syncVarSet']['bind'](this));ami['on'](_0xdfea('0x1f'),this[_0xdfea('0x20')][_0xdfea('0x1a')](this));ami['on']('newcallerid',this['syncNewCallerId'][_0xdfea('0x1a')](this));ami['on'](_0xdfea('0x21'),this[_0xdfea('0x22')][_0xdfea('0x1a')](this));ami['on']('blindtransfer',this[_0xdfea('0x23')][_0xdfea('0x1a')](this));ami['on'](_0xdfea('0x24'),this['syncMusicOnHoldStart'][_0xdfea('0x1a')](this));ami['on'](_0xdfea('0x25'),this[_0xdfea('0x26')]['bind'](this));try{logger[_0xdfea('0x27')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0xdfea('0x28')]();}catch(_0xe7fd1b){logger[_0xdfea('0x29')]('[voiceCallReport][coreshowchannels]',util['inspect'](_0xe7fd1b,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xdfea('0x2a')]['isNotNull']=function(_0x4b2fe7){return _0x4b2fe7!==null&&!_['isUndefined'](_0x4b2fe7);};VoiceCallReport[_0xdfea('0x2a')][_0xdfea('0x2b')]=function(_0x56a547,_0x16165e,_0x5038d6){io['to'](_0x56a547)[_0xdfea('0x2b')](_0x16165e,_0x5038d6);};VoiceCallReport[_0xdfea('0x2a')][_0xdfea('0x2c')]=function(_0x5ecf0f){try{if(this[_0xdfea('0x2d')](_0x5ecf0f)){logger[_0xdfea('0x27')](_0xdfea('0x2e'),_0x5ecf0f[_0xdfea('0x2f')],_0x5ecf0f[_0xdfea('0x30')],_0x5ecf0f['calleridnum']);logger[_0xdfea('0x31')](_0xdfea('0x32'),_0x5ecf0f[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x5ecf0f,{'showHidden':![],'depth':null}));if(_0x5ecf0f[_0xdfea('0x2f')]===_0x5ecf0f['linkedid']){if(!_['isUndefined'](this[_0xdfea('0x15')][_0x5ecf0f[_0xdfea('0x2f')]])){_[_0xdfea('0x34')](this[_0xdfea('0x15')][_0x5ecf0f[_0xdfea('0x2f')]],_[_0xdfea('0x35')](_0x5ecf0f,_['keys'](this[_0xdfea('0x15')][_0x5ecf0f[_0xdfea('0x2f')]])));}}if(_0x5ecf0f['context']===_0xdfea('0x36')){if(this['agents'][_0x5ecf0f['channel'][_0xdfea('0x37')]('-')[0x0]]){if(_0x5ecf0f[_0xdfea('0x38')]==_0xdfea('0x39')){this[_0xdfea('0x16')][_0x5ecf0f[_0xdfea('0x3a')][_0xdfea('0x37')]('-')[0x0]][_0xdfea('0x3b')]=_0x5ecf0f[_0xdfea('0x3c')];this['emit'](util[_0xdfea('0x3d')](_0xdfea('0x3e'),this[_0xdfea('0x16')][_0x5ecf0f[_0xdfea('0x3a')]['split']('-')[0x0]][_0xdfea('0x3f')]),_0xdfea('0x40'),{'destaccountcode':this[_0xdfea('0x16')][_0x5ecf0f[_0xdfea('0x3a')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x5ecf0f['connectedlinenum']});}}}}}catch(_0x246cf9){logger[_0xdfea('0x29')](_0xdfea('0x41'),_0x5ecf0f[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x246cf9,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xdfea('0x42')]=function(_0x1d1207){try{if(this['isNotNull'](_0x1d1207)){logger['debug'](_0xdfea('0x43'),_0x1d1207[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x1d1207,{'showHidden':![],'depth':null}));if(this[_0xdfea('0x15')][_0x1d1207[_0xdfea('0x2f')]]){return;}if(_0x1d1207[_0xdfea('0x3a')]===_0xdfea('0x44')){return;}if(_0x1d1207[_0xdfea('0x2f')]!==_0x1d1207[_0xdfea('0x45')]&&!this[_0xdfea('0x17')][_0x1d1207[_0xdfea('0x45')]]){return;}logger[_0xdfea('0x27')](_0xdfea('0x46'),_0x1d1207[_0xdfea('0x2f')],_0x1d1207[_0xdfea('0x47')],_0x1d1207[_0xdfea('0x38')]);this['channels'][_0x1d1207[_0xdfea('0x2f')]]=new Channel();this['channels'][_0x1d1207[_0xdfea('0x2f')]][_0xdfea('0x48')]=moment()[_0xdfea('0x3d')](_0xdfea('0x49'));this[_0xdfea('0x15')][_0x1d1207[_0xdfea('0x2f')]][_0xdfea('0x4a')]=dispositions[_[_0xdfea('0x4b')](_0x1d1207['channelstate'])];_[_0xdfea('0x34')](this[_0xdfea('0x15')][_0x1d1207[_0xdfea('0x2f')]],_['pick'](_0x1d1207,_[_0xdfea('0x4c')](this[_0xdfea('0x15')][_0x1d1207[_0xdfea('0x2f')]])));if(_0x1d1207[_0xdfea('0x47')]==='from-sip'){var _0x5ca3d3=this['agents'][_0x1d1207[_0xdfea('0x3a')][_0xdfea('0x37')]('-')[0x0]];if(_0x5ca3d3&&typeof _0x5ca3d3[_0xdfea('0x3b')]==='undefined'){_0x5ca3d3['destconnectedlinenum']=_0x1d1207[_0xdfea('0x38')];logger['debug'](_0xdfea('0x4d'),_0x1d1207['uniqueid'],util[_0xdfea('0x33')]({'id':_0x5ca3d3['id'],'destaccountcode':_0x5ca3d3[_0xdfea('0x4e')],'destconnectedlinenum':_0x1d1207[_0xdfea('0x38')]},{'showHidden':![],'depth':null}));this[_0xdfea('0x2b')](util[_0xdfea('0x3d')](_0xdfea('0x3e'),_0x5ca3d3[_0xdfea('0x3f')]),_0xdfea('0x40'),{'id':_0x5ca3d3['id'],'destaccountcode':_0x5ca3d3[_0xdfea('0x4e')],'destconnectedlinenum':_0x1d1207[_0xdfea('0x38')]});}}}}catch(_0x1cd46c){logger[_0xdfea('0x29')]('[%s][voiceCallReport][newchannel]',_0x1d1207[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x1cd46c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdfea('0x2a')][_0xdfea('0x19')]=function(_0x4930dc){try{if(this[_0xdfea('0x2d')](_0x4930dc)){logger[_0xdfea('0x31')](_0xdfea('0x4f'),_0x4930dc[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x4930dc,{'showHidden':![],'depth':null}));if(_0x4930dc[_0xdfea('0x3a')]===_0xdfea('0x44')||_0x4930dc[_0xdfea('0x38')]==='h')return;if(_0x4930dc[_0xdfea('0x2f')]===_0x4930dc['linkedid']||this[_0xdfea('0x17')][_0x4930dc[_0xdfea('0x45')]]){_0x4930dc[_0xdfea('0x50')]=_0x4930dc[_0xdfea('0x50')][_0xdfea('0x51')]();_0x4930dc[_0xdfea('0x52')]=_0x4930dc[_0xdfea('0x53')]||_0x4930dc[_0xdfea('0x52')];if(_0x4930dc[_0xdfea('0x53')]&&!_0x4930dc[_0xdfea('0x53')][_0xdfea('0x54')](_0xdfea('0x55'))&&_0x4930dc['application']!==_0xdfea('0xc')){_0x4930dc['applicationdata']=_0x4930dc[_0xdfea('0x52')]['toLowerCase']();}logger[_0xdfea('0x27')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x4930dc[_0xdfea('0x2f')],_0x4930dc[_0xdfea('0x50')],_0x4930dc['applicationdata']);if(_[_0xdfea('0x56')](this[_0xdfea('0x15')][_0x4930dc[_0xdfea('0x2f')]])){this[_0xdfea('0x15')][_0x4930dc[_0xdfea('0x2f')]]=new Channel();this[_0xdfea('0x15')][_0x4930dc['uniqueid']][_0xdfea('0x48')]=_0x4930dc[_0xdfea('0x57')]?moment()[_0xdfea('0x58')](moment[_0xdfea('0x57')](_0x4930dc[_0xdfea('0x57')])[_0xdfea('0x59')](),_0xdfea('0x59'))[_0xdfea('0x3d')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xdfea('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xdfea('0x15')][_0x4930dc['uniqueid']][_0xdfea('0x4a')]=_0xdfea('0x10');}_[_0xdfea('0x34')](this['channels'][_0x4930dc[_0xdfea('0x2f')]],_[_0xdfea('0x35')](_0x4930dc,_[_0xdfea('0x4c')](this[_0xdfea('0x15')][_0x4930dc[_0xdfea('0x2f')]])));if(_['includes'](applications,_0x4930dc[_0xdfea('0x50')])){this[_0xdfea('0x15')][_0x4930dc[_0xdfea('0x2f')]]['lastapplication']=_0x4930dc[_0xdfea('0x50')];this[_0xdfea('0x15')][_0x4930dc[_0xdfea('0x2f')]][_0xdfea('0x5a')]=_0x4930dc[_0xdfea('0x52')];if(_0x4930dc[_0xdfea('0x50')]===_0xdfea('0xb')&&_['startsWith'](_0x4930dc[_0xdfea('0x52')]['toLowerCase'](),_0xdfea('0x5b'))){var _0x42b136=_0x4930dc['applicationdata']['split']('=');var _0x320d86=_0x42b136[0x0][_0xdfea('0x51')]()[_0xdfea('0x5c')](/cdr\((.*)\)/);if(_0x320d86){if(_0x320d86[0x1]===_0xdfea('0x5d')&&!_[_0xdfea('0x5e')](this[_0xdfea('0x15')][_0x4930dc[_0xdfea('0x2f')]][_0x320d86[0x1]]))return;this[_0xdfea('0x15')][_0x4930dc[_0xdfea('0x2f')]][_0x320d86[0x1]]=_0x42b136[0x1];}}else if(_0x4930dc[_0xdfea('0x50')]==='queue'){this[_0xdfea('0x15')][_0x4930dc['uniqueid']][_0xdfea('0xc')]=_0x4930dc[_0xdfea('0x52')][_0xdfea('0x37')](',')[0x0];}}}}}catch(_0x54824e){logger[_0xdfea('0x29')](_0xdfea('0x5f'),_0x4930dc[_0xdfea('0x2f')],util['inspect'](_0x54824e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdfea('0x2a')][_0xdfea('0x1d')]=function(_0x4764a4){try{if(this['isNotNull'](_0x4764a4)){logger['info'](_0xdfea('0x60'),_0x4764a4[_0xdfea('0x2f')],_0x4764a4[_0xdfea('0x45')],_0x4764a4[_0xdfea('0x30')],_0x4764a4['calleridnum']);logger[_0xdfea('0x31')](_0xdfea('0x61'),_0x4764a4[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x4764a4,{'showHidden':![],'depth':null}));if(_0x4764a4[_0xdfea('0x62')]!=='6')return;var _0xc17fd6=this['agents'][_0x4764a4['channel'][_0xdfea('0x37')]('-')[0x0]];if(_0x4764a4[_0xdfea('0x2f')]!==_0x4764a4[_0xdfea('0x45')]){var _0x24f907=moment();if(this['channels'][_0x4764a4[_0xdfea('0x45')]]){if(!this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x45')]]['answered']){this[_0xdfea('0x15')][_0x4764a4['linkedid']][_0xdfea('0x63')]=!![];this[_0xdfea('0x15')][_0x4764a4['linkedid']][_0xdfea('0x64')]=_0x24f907[_0xdfea('0x3d')](_0xdfea('0x49'));if(this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x45')]][_0xdfea('0x48')]){this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x45')]][_0xdfea('0x65')]=_0x24f907['diff'](this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x45')]][_0xdfea('0x48')],_0xdfea('0x59'));}}this[_0xdfea('0x15')][_0x4764a4['linkedid']][_0xdfea('0x45')]=_0x4764a4[_0xdfea('0x2f')];if(_0x4764a4[_0xdfea('0x66')]!==_0xdfea('0x39')){this['channels'][_0x4764a4[_0xdfea('0x45')]][_0xdfea('0x3c')]=_0x4764a4['calleridnum'];}this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x45')]][_0xdfea('0x67')]=_0x4764a4[_0xdfea('0x30')];this['channels'][_0x4764a4[_0xdfea('0x45')]]['destinationchannel']=_0x4764a4[_0xdfea('0x3a')];this['channels'][_0x4764a4[_0xdfea('0x45')]]['disposition']=dispositions[_[_0xdfea('0x4b')](_0x4764a4[_0xdfea('0x62')])];if(_0xc17fd6){this[_0xdfea('0x15')][_0x4764a4['linkedid']][_0xdfea('0x68')]=_0xc17fd6['id'];this['channels'][_0x4764a4[_0xdfea('0x45')]][_0xdfea('0x69')]=_0xc17fd6[_0xdfea('0x3f')];}}if(this['channels'][_0x4764a4[_0xdfea('0x2f')]]){if(!this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x63')]){this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]]['answered']=!![];this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x64')]=_0x24f907[_0xdfea('0x3d')](_0xdfea('0x49'));if(this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x48')]){this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]]['holdtime']=_0x24f907['diff'](this[_0xdfea('0x15')][_0x4764a4['uniqueid']]['starttime'],_0xdfea('0x59'));}}if(_0x4764a4[_0xdfea('0x66')]!=='xcally-motion-preview'){this['channels'][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x3c')]=_0x4764a4[_0xdfea('0x66')];}this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x67')]=_0x4764a4[_0xdfea('0x30')];this['channels'][_0x4764a4[_0xdfea('0x2f')]]['destinationchannel']=_0x4764a4[_0xdfea('0x3a')];this[_0xdfea('0x15')][_0x4764a4['uniqueid']]['disposition']=dispositions[_[_0xdfea('0x4b')](_0x4764a4[_0xdfea('0x62')])];}}else{if(this['channels'][_0x4764a4[_0xdfea('0x2f')]]){if(_0xc17fd6){this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x68')]=_0xc17fd6['id'];this['channels'][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x69')]=_0xc17fd6[_0xdfea('0x3f')];}}}if(_0x4764a4[_0xdfea('0x47')]===_0xdfea('0x36')){if(_0xc17fd6){_0xc17fd6[_0xdfea('0x3b')]=_0x4764a4[_0xdfea('0x38')];var _0x3dd528,_0x4be6ed;if(this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]]){_0x3dd528=this['channels'][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0x6a')];_0x4be6ed=this[_0xdfea('0x15')][_0x4764a4[_0xdfea('0x2f')]][_0xdfea('0xc')];}else if(this[_0xdfea('0x15')][_0x4764a4['linkedid']]){_0x3dd528=this['channels'][_0x4764a4[_0xdfea('0x45')]][_0xdfea('0x6a')];_0x4be6ed=this['channels'][_0x4764a4[_0xdfea('0x45')]]['queue'];}_0xc17fd6[_0xdfea('0xc')]=_0x4be6ed;_0xc17fd6[_0xdfea('0x6a')]=_0x3dd528;var _0x132575={'id':_0xc17fd6['id'],'name':_0xc17fd6[_0xdfea('0x3f')],'agentconnected':!![],'destaccountcode':_0xc17fd6[_0xdfea('0x4e')],'destconnectedlinenum':_0x4764a4[_0xdfea('0x38')],'queue':_0x4be6ed||undefined,'routealias':_0x3dd528,'uniqueid':_0x4764a4[_0xdfea('0x45')]};logger[_0xdfea('0x31')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x4764a4[_0xdfea('0x2f')],util['inspect'](_0x132575,{'showHidden':![],'depth':null}));this[_0xdfea('0x2b')](util[_0xdfea('0x3d')](_0xdfea('0x3e'),_0xc17fd6['name']),'user:agentconnect',_0x132575);}}}}catch(_0x3e47b9){logger[_0xdfea('0x29')](_0xdfea('0x6b'),_0x4764a4[_0xdfea('0x2f')],util['inspect'](_0x3e47b9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdfea('0x2a')][_0xdfea('0x6c')]=function(_0x2d8dcc,_0x22a224){try{if(this['channels'][_0x2d8dcc]){logger['info'](_0xdfea('0x6d'),_0x2d8dcc,_0x22a224);this[_0xdfea('0x15')][_0x2d8dcc][_0xdfea('0x6e')]=!![];if(_[_0xdfea('0x6f')](_0x22a224,_0xdfea('0x70'))){_0x22a224=_0x22a224[_0xdfea('0x71')](_0xdfea('0x70'),'.WAV');}this['channels'][_0x2d8dcc][_0xdfea('0x72')]=_0x22a224;var _0x5165cb=_[_0xdfea('0x73')](this[_0xdfea('0x15')][_0x2d8dcc][_0xdfea('0x74')],{'filename':_0x22a224});if(_[_0xdfea('0x5e')](_0x5165cb)){this['channels'][_0x2d8dcc][_0xdfea('0x74')][_0xdfea('0x75')]({'filename':_0x22a224,'createdAt':moment()['format'](_0xdfea('0x49')),'mixmonitorid':'','status':'rec'});}}}catch(_0x41c0af){logger[_0xdfea('0x29')]('[%s][voiceCallReport][mixMonitorFilename]',_0x2d8dcc,util[_0xdfea('0x33')](_0x41c0af,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xdfea('0x76')]=function(_0x288ab4){try{if(this[_0xdfea('0x2d')](_0x288ab4)){logger[_0xdfea('0x31')](_0xdfea('0x77'),_0x288ab4[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x288ab4,{'showHidden':![],'depth':null}));if(this['channels'][_0x288ab4['uniqueid']]&&_0x288ab4[_0xdfea('0x3a')]!='OutgoingSpoolFailed'){if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')])){if(this[_0xdfea('0x2d')](_0x288ab4['variable'][_0xdfea('0x79')])){logger[_0xdfea('0x27')](_0xdfea('0x7a'),_0x288ab4[_0xdfea('0x2f')],_0x288ab4[_0xdfea('0x7b')]);this[_0xdfea('0x6c')](_0x288ab4[_0xdfea('0x2f')],_0x288ab4[_0xdfea('0x7b')]);}else if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')]['xmd-phone'])){logger[_0xdfea('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x288ab4[_0xdfea('0x2f')],_0x288ab4['value']);this['channels'][_0x288ab4['uniqueid']][_0xdfea('0x66')]=_0x288ab4[_0xdfea('0x7b')];}else if(this['isNotNull'](_0x288ab4['variable'][_0xdfea('0x7c')])){logger[_0xdfea('0x27')](_0xdfea('0x7d'),_0x288ab4[_0xdfea('0x2f')],_0x288ab4['value']);this['channels'][_0x288ab4['uniqueid']][_0xdfea('0x7e')]=_0x288ab4[_0xdfea('0x7b')];}else if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')]['xmd-cdrtype'])){logger[_0xdfea('0x27')](_0xdfea('0x7f'),_0x288ab4[_0xdfea('0x2f')],_0x288ab4[_0xdfea('0x7b')]);this['channels'][_0x288ab4[_0xdfea('0x2f')]][_0xdfea('0x5d')]=_0x288ab4[_0xdfea('0x7b')];}else if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')][_0xdfea('0x80')])){logger[_0xdfea('0x27')](_0xdfea('0x81'),_0x288ab4[_0xdfea('0x2f')],_0x288ab4['value'][_0xdfea('0x37')](',')[0x0]);this[_0xdfea('0x15')][_0x288ab4['uniqueid']][_0xdfea('0xc')]=_0x288ab4['value'][_0xdfea('0x37')](',')[0x0];}else if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')][_0xdfea('0x82')])){logger[_0xdfea('0x27')](_0xdfea('0x83'),_0x288ab4[_0xdfea('0x2f')],_0x288ab4['value']);this[_0xdfea('0x15')][_0x288ab4['uniqueid']][_0xdfea('0x84')]=_0x288ab4[_0xdfea('0x7b')];}else if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')][_0xdfea('0x85')])){logger[_0xdfea('0x27')](_0xdfea('0x86'),_0x288ab4['uniqueid'],_0x288ab4[_0xdfea('0x7b')]);this[_0xdfea('0x15')][_0x288ab4['uniqueid']][_0xdfea('0x87')]=_0x288ab4['value'];}else if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')][_0xdfea('0x88')])){logger[_0xdfea('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x288ab4[_0xdfea('0x2f')],_0x288ab4[_0xdfea('0x7b')]);this[_0xdfea('0x15')][_0x288ab4[_0xdfea('0x2f')]][_0xdfea('0x89')]=_0x288ab4[_0xdfea('0x7b')];}else if(this['isNotNull'](_0x288ab4[_0xdfea('0x78')][_0xdfea('0x8a')])){logger[_0xdfea('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x288ab4[_0xdfea('0x2f')],_0x288ab4[_0xdfea('0x7b')]);this['channels'][_0x288ab4[_0xdfea('0x2f')]][_0xdfea('0xc')]=_0x288ab4[_0xdfea('0x7b')];}else if(this['isNotNull'](_0x288ab4[_0xdfea('0x78')][_0xdfea('0x8b')])){logger[_0xdfea('0x27')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x288ab4['uniqueid'],_0x288ab4[_0xdfea('0x7b')]);this[_0xdfea('0x15')][_0x288ab4[_0xdfea('0x2f')]][_0xdfea('0x8c')]=_0x288ab4['value'];}}}else if(this[_0xdfea('0x2d')](_0x288ab4['variable'][_0xdfea('0x79')])){if(_0x288ab4[_0xdfea('0x7b')]){var _0x3f9bb2=path['parse'](_0x288ab4['value'])['name'];logger[_0xdfea('0x27')](_0xdfea('0x7a'),_0x3f9bb2,_0x288ab4[_0xdfea('0x7b')]);this[_0xdfea('0x6c')](_0x3f9bb2,_0x288ab4[_0xdfea('0x7b')]);}}else if(this[_0xdfea('0x15')][_0x288ab4['linkedid']]){if(this[_0xdfea('0x2d')](_0x288ab4[_0xdfea('0x78')])){if(this[_0xdfea('0x2d')](_0x288ab4['variable']['sipcallid'])){logger[_0xdfea('0x27')](_0xdfea('0x8d'),_0x288ab4[_0xdfea('0x45')],_0x288ab4[_0xdfea('0x7b')]);this[_0xdfea('0x15')][_0x288ab4[_0xdfea('0x45')]]['sipcalllinkedid']=_0x288ab4['value'];}}}}}catch(_0x1256b6){logger[_0xdfea('0x29')]('[%s][voiceCallReport][varset]',_0x288ab4[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x1256b6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdfea('0x2a')]['syncHangup']=function(_0x12d259){try{if(this[_0xdfea('0x2d')](_0x12d259)){logger[_0xdfea('0x31')](_0xdfea('0x8e'),_0x12d259[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x12d259,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x12d259[_0xdfea('0x45')]]){if(this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259['linkedid']][_0xdfea('0x45')]]){this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]]['linkedid']][_0xdfea('0x2f')]=_0x12d259['uniqueid'];this['channels'][this['blindTransfers'][_0x12d259['linkedid']]['linkedid']][_0xdfea('0x63')]=this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x63')];this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]]['linkedid']][_0xdfea('0x64')]=this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]]['answertime'];this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x45')]][_0xdfea('0x8f')]=this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]]['linkedid']][_0xdfea('0x3a')];this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]]['linkedid']][_0xdfea('0x4a')]=this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x4a')];this['channels'][_0x12d259['uniqueid']]=this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x45')]];delete this['channels'][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x45')]];}else if(this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]]['uniqueid']]){this['channels'][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]]['uniqueid']][_0xdfea('0x2f')]=[this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259['linkedid']]['uniqueid']][_0xdfea('0x45')],this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259['linkedid']][_0xdfea('0x2f')]][_0xdfea('0x45')]=this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259['linkedid']]['uniqueid']][_0xdfea('0x2f')]][0x0];this['channels'][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x2f')]][_0xdfea('0x63')]=this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]]['answered'];this[_0xdfea('0x15')][this['blindTransfers'][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x2f')]][_0xdfea('0x64')]=this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]]['answertime'];this[_0xdfea('0x15')][this['blindTransfers'][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x2f')]][_0xdfea('0x8f')]=this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x2f')]][_0xdfea('0x3a')];this['channels'][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]][_0xdfea('0x2f')]][_0xdfea('0x4a')]=this['channels'][_0x12d259[_0xdfea('0x2f')]]['disposition'];this[_0xdfea('0x15')][_0x12d259['uniqueid']]=this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259['linkedid']][_0xdfea('0x2f')]];delete this[_0xdfea('0x15')][this[_0xdfea('0x17')][_0x12d259[_0xdfea('0x45')]]['uniqueid']];}}if(this[_0xdfea('0x15')][_0x12d259['uniqueid']]){logger[_0xdfea('0x27')](_0xdfea('0x90'),_0x12d259[_0xdfea('0x2f')],_0x12d259[_0xdfea('0x91')]);var _0x5d4829=moment();this['channels'][_0x12d259['uniqueid']][_0xdfea('0x92')]=_0x5d4829[_0xdfea('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xdfea('0x15')][_0x12d259['uniqueid']][_0xdfea('0x57')]=_0x5d4829[_0xdfea('0x93')](this['channels'][_0x12d259['uniqueid']][_0xdfea('0x48')],_0xdfea('0x59'));if(this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x63')]){this['channels'][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x94')]=_0x5d4829[_0xdfea('0x93')](this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x64')],_0xdfea('0x59'));this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x65')]=this[_0xdfea('0x15')][_0x12d259['uniqueid']][_0xdfea('0x57')]-this['channels'][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x94')];}if(_0x12d259[_0xdfea('0x47')]==='from-sip'){if(this[_0xdfea('0x16')][_0x12d259['channel'][_0xdfea('0x37')]('-')[0x0]]){this[_0xdfea('0x16')][_0x12d259[_0xdfea('0x3a')]['split']('-')[0x0]]=_[_0xdfea('0x95')](this[_0xdfea('0x16')][_0x12d259[_0xdfea('0x3a')][_0xdfea('0x37')]('-')[0x0]],[_0xdfea('0x3b')]);logger[_0xdfea('0x31')](_0xdfea('0x96'),_0x12d259[_0xdfea('0x2f')],util['inspect']({'id':this[_0xdfea('0x16')][_0x12d259[_0xdfea('0x3a')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xdfea('0x16')][_0x12d259[_0xdfea('0x3a')][_0xdfea('0x37')]('-')[0x0]][_0xdfea('0x4e')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xdfea('0x3d')](_0xdfea('0x3e'),this[_0xdfea('0x16')][_0x12d259[_0xdfea('0x3a')][_0xdfea('0x37')]('-')[0x0]][_0xdfea('0x3f')]),'user:agentcomplete',{'id':this[_0xdfea('0x16')][_0x12d259['channel'][_0xdfea('0x37')]('-')[0x0]]['id'],'destaccountcode':this[_0xdfea('0x16')][_0x12d259[_0xdfea('0x3a')]['split']('-')[0x0]]['accountcode']});for(var _0x48cc0e=0x0;_0x48cc0e<Object[_0xdfea('0x4c')](this[_0xdfea('0x16')])[_0xdfea('0x97')];_0x48cc0e++){var _0x1dfefd=Object[_0xdfea('0x4c')](this[_0xdfea('0x16')])[_0x48cc0e];var _0x4c3918=this[_0xdfea('0x16')][_0x1dfefd];if(_0x4c3918[_0xdfea('0x4e')]===Number(this['channels'][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x3c')])){this[_0xdfea('0x2b')](util[_0xdfea('0x3d')](_0xdfea('0x3e'),_0x4c3918['name']),'user:agentcomplete',{'id':_0x4c3918['id'],'destaccountcode':_0x4c3918[_0xdfea('0x4e')],'transfer':this[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x98')]});break;}}}}var _0x2e01d0=this;Promise['resolve']()[_0xdfea('0x99')](function(){var _0x4399dd=_0x2e01d0[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]];if(typeof _0x4399dd[_0xdfea('0x98')]===_0xdfea('0x9a'))return;if(_['isEmpty'](_0x4399dd[_0xdfea('0x74')]))return;return RpcSetting[_0xdfea('0x9b')]()['then'](function(_0x1cf54f){if(!_0x1cf54f[_0xdfea('0x9c')])return;return Promise['resolve']()[_0xdfea('0x99')](function(){return ami[_0xdfea('0x9d')]({'action':'StopMixMonitor','channel':_0x4399dd[_0xdfea('0x3a')]})[_0xdfea('0x9e')](function(){});})[_0xdfea('0x99')](function(){return ami[_0xdfea('0x9d')]({'action':_0xdfea('0x9f'),'channel':_0x4399dd[_0xdfea('0x8f')]})[_0xdfea('0x9e')](function(){})[_0xdfea('0xa0')](function(){var _0x4ad75e=_0x2e01d0[_0xdfea('0x16')][_0x4399dd['destinationchannel']['split']('-')[0x0]];if(!_0x4ad75e)return;io[_0xdfea('0x2b')](_0xdfea('0xa1'),{'agentId':_0x4ad75e['id'],'uniqueid':_0x4399dd[_0xdfea('0x2f')]});});});});})[_0xdfea('0x99')](function(){if(_0x12d259[_0xdfea('0xa2')]===_0xdfea('0xa3')){_0x2e01d0[_0xdfea('0x17')][_0x12d259[_0xdfea('0x2f')]]=_0x12d259;}else{if(_0x2e01d0[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]]['type']===_0xdfea('0xa4')&&_0x2e01d0[_0xdfea('0x17')][_0x12d259['uniqueid']]){_0x2e01d0[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x2f')]=[_0x2e01d0[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x45')],_0x2e01d0[_0xdfea('0x15')][_0x12d259['uniqueid']][_0xdfea('0x45')]=_0x2e01d0['channels'][_0x12d259[_0xdfea('0x2f')]][_0xdfea('0x2f')]][0x0];delete _0x2e01d0[_0xdfea('0x17')][_0x12d259['uniqueid']];}}logger[_0xdfea('0x31')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x12d259[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x2e01d0[_0xdfea('0x15')][_0x12d259['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xdfea('0x2b')]('custom:voiceCallReport',_0x2e01d0[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]]);delete _0x2e01d0[_0xdfea('0x15')][_0x12d259[_0xdfea('0x2f')]];});}}}catch(_0x51b3fd){logger[_0xdfea('0x29')](_0xdfea('0xa5'),_0x12d259[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x51b3fd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdfea('0x2a')][_0xdfea('0x22')]=function(_0x19a497){try{if(this[_0xdfea('0x2d')](_0x19a497)){logger[_0xdfea('0x27')](_0xdfea('0xa6'),_0x19a497[_0xdfea('0x2f')],_0x19a497['origtransferercalleridnum'],_0x19a497[_0xdfea('0xa7')]);logger['debug'](_0xdfea('0xa8'),_0x19a497[_0xdfea('0x2f')],util['inspect'](_0x19a497,{'showHidden':![],'depth':null}));var _0x4e7779;if(this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xa9')]]){this['channels'][_0x19a497[_0xdfea('0xa9')]][_0xdfea('0xaa')]=_0x19a497[_0xdfea('0xab')];this['channels'][_0x19a497['transfereeuniqueid']][_0xdfea('0xac')]=_0x19a497[_0xdfea('0xa7')];if(this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xad')]]){_0x4e7779=this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xad')]];this[_0xdfea('0x15')][_0x19a497['secondtransfereruniqueid']]=this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xa9')]];this['channels'][_0x19a497[_0xdfea('0xa9')]]=_0x4e7779;}this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xad')]][_0xdfea('0x98')]='ATTENDED';}else if(this['channels'][_0x19a497[_0xdfea('0xae')]]){this['channels'][_0x19a497['transfertargetuniqueid']][_0xdfea('0xaa')]=_0x19a497[_0xdfea('0xab')];this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xae')]]['transferconnectedlinenum']=_0x19a497[_0xdfea('0xa7')];if(this['channels'][_0x19a497[_0xdfea('0xaf')]]){_0x4e7779=this[_0xdfea('0x15')][_0x19a497['origtransfereruniqueid']];this['channels'][_0x19a497[_0xdfea('0xaf')]]=this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xae')]];this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xae')]]=_0x4e7779;}this['channels'][_0x19a497[_0xdfea('0xae')]][_0xdfea('0x98')]=_0xdfea('0xb0');}if((this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xaf')]]||this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xb1')]])&&this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xad')]]){var _0x50ac9c=_[_0xdfea('0xb2')]([this[_0xdfea('0x15')][_0x19a497['origtransfereruniqueid']],this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xb1')]],this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xad')]]],function(_0x34a9de){return _0x34a9de&&_0x34a9de[_0xdfea('0x5d')]==='outbound'&&_0x34a9de[_0xdfea('0xb3')];});if(_0x50ac9c){if(this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xaf')]])this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xaf')]][_0xdfea('0x98')]=_0xdfea('0xb0');if(this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xb1')]])this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xb1')]][_0xdfea('0x98')]='ATTENDED';this[_0xdfea('0x15')][_0x19a497[_0xdfea('0xad')]][_0xdfea('0x98')]='ATTENDED';}}}}catch(_0x15449d){logger[_0xdfea('0x29')](_0xdfea('0xb4'),_0x19a497[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x15449d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdfea('0x2a')][_0xdfea('0x23')]=function(_0x44e11d){try{if(this[_0xdfea('0x2d')](_0x44e11d)){logger[_0xdfea('0x27')](_0xdfea('0xb5'),_0x44e11d[_0xdfea('0x2f')],_0x44e11d[_0xdfea('0xb6')],_0x44e11d[_0xdfea('0xb7')]);logger['debug']('[%s][voiceCallReport][blindtransfer]\x20event:',_0x44e11d[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x44e11d,{'showHidden':![],'depth':null}));if(this[_0xdfea('0x15')][_0x44e11d[_0xdfea('0xa9')]]){this[_0xdfea('0x15')][_0x44e11d[_0xdfea('0xa9')]]['transfercalleridnum']=_0x44e11d[_0xdfea('0xb6')];this[_0xdfea('0x15')][_0x44e11d[_0xdfea('0xa9')]][_0xdfea('0xac')]=_0x44e11d[_0xdfea('0xb7')];this[_0xdfea('0x15')][_0x44e11d[_0xdfea('0xa9')]][_0xdfea('0x98')]=_0xdfea('0xb8');this['syncHangup']({'event':'BlindTransfer','uniqueid':_0x44e11d[_0xdfea('0xa9')],'linkedid':_0x44e11d[_0xdfea('0xb9')],'context':_0x44e11d[_0xdfea('0x47')],'channel':_0x44e11d['transfererchannel']});}else{this[_0xdfea('0x15')][_0x44e11d[_0xdfea('0xb9')]]['transferType']=_0xdfea('0xb8');this[_0xdfea('0x20')]({'event':'BlindTransfer','uniqueid':_0x44e11d[_0xdfea('0xb9')],'linkedid':_0x44e11d['transfereeuniqueid'],'context':_0x44e11d['context'],'channel':_0x44e11d[_0xdfea('0xba')]});}}}catch(_0x3d927c){logger[_0xdfea('0x29')]('[%s][voiceCallReport][blindtransfer]',_0x44e11d[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x3d927c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdfea('0x2a')]['syncMusicOnHoldStart']=function(_0x258f99){try{if(this[_0xdfea('0x2d')](_0x258f99)){logger['debug'](_0xdfea('0xbb'),_0x258f99[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x258f99,{'showHidden':![],'depth':null}));if(this['channels'][_0x258f99['uniqueid']]){if(!_[_0xdfea('0x5e')](this[_0xdfea('0x15')][_0x258f99[_0xdfea('0x2f')]]['answertime'])){this[_0xdfea('0x15')][_0x258f99[_0xdfea('0x2f')]]['mohstarttime']=moment()[_0xdfea('0x3d')](_0xdfea('0x49'));logger[_0xdfea('0x27')](_0xdfea('0xbc'),_0x258f99[_0xdfea('0x2f')],this['channels'][_0x258f99['uniqueid']][_0xdfea('0xbd')]);}}}}catch(_0x30b5f1){logger['error'](_0xdfea('0xbe'),_0x258f99['uniqueid'],util[_0xdfea('0x33')](_0x30b5f1,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xdfea('0x26')]=function(_0x2ab381){try{if(this['isNotNull'](_0x2ab381)){logger['debug'](_0xdfea('0xbf'),_0x2ab381[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x2ab381,{'showHidden':![],'depth':null}));if(this[_0xdfea('0x15')][_0x2ab381[_0xdfea('0x2f')]]){if(!_['isNil'](this[_0xdfea('0x15')][_0x2ab381[_0xdfea('0x2f')]][_0xdfea('0xbd')])){this[_0xdfea('0x15')][_0x2ab381[_0xdfea('0x2f')]][_0xdfea('0xc0')]+=moment()[_0xdfea('0xc1')](0x0)[_0xdfea('0x93')](this[_0xdfea('0x15')][_0x2ab381['uniqueid']][_0xdfea('0xbd')],_0xdfea('0x59'));logger['info'](_0xdfea('0xc2'),_0x2ab381[_0xdfea('0x2f')],this[_0xdfea('0x15')][_0x2ab381[_0xdfea('0x2f')]][_0xdfea('0xc0')]);delete this[_0xdfea('0x15')][_0x2ab381[_0xdfea('0x2f')]]['mohstarttime'];}}}}catch(_0x1aaffd){logger[_0xdfea('0x29')](_0xdfea('0xc3'),_0x2ab381[_0xdfea('0x2f')],util[_0xdfea('0x33')](_0x1aaffd,{'showHidden':![],'depth':null}));}};module[_0xdfea('0xc4')]=VoiceCallReport;
\ No newline at end of file
index 348ebad..43f06e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['called','channel','substring','lastIndexOf','omit','event','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','applications','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','lastevent','info','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','variables','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','voice:outbound','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answered','holdtime','billableseconds','sumHoldTime','sumBillable','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','appdata','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','exports','moment','util','../../../config/environment','ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','isNotNull','isUndefined','prototype','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','uniqueid','merge'];(function(_0x3ecfce,_0x32601a){var _0x150b74=function(_0x152cd1){while(--_0x152cd1){_0x3ecfce['push'](_0x3ecfce['shift']());}};_0x150b74(++_0x32601a);}(_0xda19,0xd5));var _0x9da1=function(_0x422a51,_0x1782d8){_0x422a51=_0x422a51-0x0;var _0x250b2a=_0xda19[_0x422a51];return _0x250b2a;};'use strict';var _=require('lodash');var moment=require(_0x9da1('0x0'));var util=require(_0x9da1('0x1'));var Redis=require('ioredis');var config=require(_0x9da1('0x2'));var logger=require('../../../config/logger')(_0x9da1('0x3'));var ami=require('../ami');config[_0x9da1('0x4')]=_[_0x9da1('0x5')](config[_0x9da1('0x4')],{'host':_0x9da1('0x6'),'port':0x18eb});var io=require(_0x9da1('0x7'))(new Redis(config[_0x9da1('0x4')]));function VoiceDialReport(_0x23e4f7){this[_0x9da1('0x8')]=_0x23e4f7[_0x9da1('0x9')];this[_0x9da1('0xa')]=_0x23e4f7['outbound'];this['applications']={};this['variables']={};ami['on'](_0x9da1('0xb'),this['syncDialBegin'][_0x9da1('0xc')](this));ami['on'](_0x9da1('0xd'),this[_0x9da1('0xe')][_0x9da1('0xc')](this));ami['on'](_0x9da1('0xf'),this[_0x9da1('0x10')][_0x9da1('0xc')](this));ami['on']('hangup',this['syncHangup'][_0x9da1('0xc')](this));}VoiceDialReport['prototype'][_0x9da1('0x11')]=function(_0x1d93f8){return _0x1d93f8!==null&&!_[_0x9da1('0x12')](_0x1d93f8);};VoiceDialReport[_0x9da1('0x13')]['emit']=function(_0x2837e3,_0x535a13,_0x4d17e1){io['to'](_0x2837e3)[_0x9da1('0x14')](_0x535a13,_0x4d17e1);};VoiceDialReport['prototype'][_0x9da1('0x15')]=function(_0x43c093){try{if(this[_0x9da1('0x11')](_0x43c093)){logger[_0x9da1('0x16')](_0x9da1('0x17'),_0x43c093['uniqueid'],util[_0x9da1('0x18')](_0x43c093,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]]){_[_0x9da1('0x1a')](this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x9da1('0x1b'),'interface':_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1d')](0x0,_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1e')]('-')),'membername':_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1d')](_0x43c093['channel'][_0x9da1('0x1e')]('/')+0x1,_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1e')]('-'))},_[_0x9da1('0x1f')](_0x43c093,[_0x9da1('0x20'),'privilege']));logger['info'](_0x9da1('0x21'),_0x43c093[_0x9da1('0x19')],this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]][_0x9da1('0x22')],this[_0x9da1('0x8')][_0x43c093['uniqueid']][_0x9da1('0x23')]);logger[_0x9da1('0x16')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x43c093[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x43c093[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));if(this[_0x9da1('0x24')][_0x43c093['uniqueid']])_[_0x9da1('0x1a')](this[_0x9da1('0x8')][_0x43c093['uniqueid']],this['applications'][_0x43c093[_0x9da1('0x19')]]);this[_0x9da1('0x14')]('voice:outbound',_0x9da1('0x25'),this['channels'][_0x43c093['uniqueid']]);logger['debug'](_0x9da1('0x26'),_0x43c093[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami['emit'](_0x9da1('0x27'),this['channels'][_0x43c093[_0x9da1('0x19')]]);}}}catch(_0x235ced){logger['error'](_0x9da1('0x28'),_0x43c093[_0x9da1('0x19')],util['inspect'](_0x235ced,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0xe')]=function(_0x1802e0){try{if(this[_0x9da1('0x11')](_0x1802e0)){logger['debug']('[%s][voiceDialReport][dialend]\x20event:',_0x1802e0[_0x9da1('0x19')],util[_0x9da1('0x18')](_0x1802e0,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]]){this[_0x9da1('0x8')][_0x1802e0['uniqueid']][_0x9da1('0x29')]=_0x1802e0[_0x9da1('0x29')];if(_0x1802e0[_0x9da1('0x29')]===_0x9da1('0x2a')){this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]]['connectedlinenum']=_0x1802e0[_0x9da1('0x2b')];this['channels'][_0x1802e0['uniqueid']][_0x9da1('0x2c')]=_0x1802e0['connectedlinename'];this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]][_0x9da1('0x2d')]=moment()[_0x9da1('0x2e')](_0x9da1('0x2f'));this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]][_0x9da1('0x30')]='connect';logger[_0x9da1('0x31')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x1802e0[_0x9da1('0x19')],_0x1802e0['channel']['substring'](_0x1802e0[_0x9da1('0x1c')]['lastIndexOf']('/')+0x1,_0x1802e0[_0x9da1('0x1c')][_0x9da1('0x1e')]('-')));logger['debug'](_0x9da1('0x32'),_0x1802e0[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x1802e0['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x9da1('0x14')]('custom:dialconnect',this[_0x9da1('0x8')][_0x1802e0['uniqueid']]);}logger[_0x9da1('0x16')](_0x9da1('0x33'),_0x1802e0['uniqueid'],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0x9da1('0x8')][_0x1802e0['uniqueid']]);}}}catch(_0x5b215c){logger[_0x9da1('0x34')](_0x9da1('0x35'),_0x1802e0[_0x9da1('0x19')],util['inspect'](_0x5b215c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x10')]=function(_0x25851b){try{if(this[_0x9da1('0x11')](_0x25851b)){logger[_0x9da1('0x16')](_0x9da1('0x36'),_0x25851b[_0x9da1('0x19')],util['inspect'](_0x25851b,{'showHidden':![],'depth':null}));this[_0x9da1('0x37')](_0x25851b['uniqueid'],_[_0x9da1('0x38')](_0x25851b['variable'])[0x0],_0x25851b[_0x9da1('0x39')]);if(this[_0x9da1('0x11')](_0x25851b['variable'])&&this[_0x9da1('0x11')](_0x25851b[_0x9da1('0x3a')]['outboundrouteid'])){if(_[_0x9da1('0x12')](this['channels'][_0x25851b[_0x9da1('0x19')]])){this[_0x9da1('0x8')][_0x25851b['uniqueid']]={'routeId':_0x25851b['value'],'variables':this[_0x9da1('0x3b')][_0x25851b[_0x9da1('0x19')]],'motionChannel':_0x9da1('0x3c')};logger[_0x9da1('0x31')](_0x9da1('0x3d'),_0x25851b[_0x9da1('0x19')],_0x25851b[_0x9da1('0x3a')][_0x9da1('0x3e')],_['keys'](_0x25851b[_0x9da1('0x3a')])[0x0],_0x25851b[_0x9da1('0x39')]);logger[_0x9da1('0x16')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x25851b[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x25851b['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9da1('0x14')](_0x9da1('0x3f'),_0x9da1('0x25'),this['channels'][_0x25851b[_0x9da1('0x19')]]);}}}}catch(_0x4d3909){logger['error'](_0x9da1('0x40'),_0x25851b[_0x9da1('0x19')],util['inspect'](_0x4d3909,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x37')]=function(_0x47d685,_0x31a2b6,_0x36f2e2){var _0x1984f7=[_0x9da1('0x41'),_0x9da1('0x42'),_0x9da1('0x43'),_0x9da1('0x44'),_0x9da1('0x45'),_0x9da1('0x46'),'rtpaudioqosrtt',_0x9da1('0x47'),_0x9da1('0x48'),_0x9da1('0x49'),_0x9da1('0x4a'),'bridgepvtcallid','membercalls',_0x9da1('0x4b'),_0x9da1('0x4c'),_0x9da1('0x4d'),_0x9da1('0x22'),_0x9da1('0x4e'),_0x9da1('0x4f')];if(!_[_0x9da1('0x50')](_0x31a2b6)&&!_[_0x9da1('0x51')](_0x1984f7,_0x31a2b6)){if(_[_0x9da1('0x12')](this[_0x9da1('0x3b')][_0x47d685])){this[_0x9da1('0x3b')][_0x47d685]={};}this[_0x9da1('0x3b')][_0x47d685][_0x31a2b6]=_0x36f2e2;}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x52')]=function(_0x4c99e8){try{if(this[_0x9da1('0x11')](_0x4c99e8)){logger[_0x9da1('0x16')]('[%s][voiceDialReport][hangup]\x20event:',_0x4c99e8[_0x9da1('0x19')],util['inspect'](_0x4c99e8,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]){logger[_0x9da1('0x31')](_0x9da1('0x53'),_0x4c99e8[_0x9da1('0x19')],_0x4c99e8[_0x9da1('0x54')]);this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x55')]=moment()[_0x9da1('0x2e')](_0x9da1('0x2f'));this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x56')]=moment(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x55')])[_0x9da1('0x57')](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x58')],_0x9da1('0x59'));this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x30')]=_0x9da1('0x5a');this['outbound'][_0x9da1('0x5b')]+=0x1;if(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x2d')]){this[_0x9da1('0xa')][_0x9da1('0x5c')]+=0x1;this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x5d')]=moment(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x2d')])['diff'](this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x58')],_0x9da1('0x59'));this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x5e')]=moment(this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]['endtime'])[_0x9da1('0x57')](this['channels'][_0x4c99e8['uniqueid']]['answertime'],_0x9da1('0x59'));this['outbound'][_0x9da1('0x5f')]+=this['channels'][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x5d')]||0x0;this['outbound'][_0x9da1('0x60')]+=this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x5e')];}this[_0x9da1('0xa')]['sumDuration']+=this['channels'][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x56')];logger[_0x9da1('0x16')](_0x9da1('0x61'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceDialReport',this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);logger[_0x9da1('0x16')](_0x9da1('0x62'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami[_0x9da1('0x14')]('custom:dialend',this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);logger[_0x9da1('0x16')](_0x9da1('0x63'),_0x4c99e8[_0x9da1('0x19')],util['inspect'](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));this[_0x9da1('0x14')](_0x9da1('0x3f'),_0x9da1('0x64'),this[_0x9da1('0xa')]);logger['info'](_0x9da1('0x65'),JSON['stringify'](this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]));logger[_0x9da1('0x16')](_0x9da1('0x66'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x4c99e8['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x9da1('0x3f'),_0x9da1('0x67'),this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);delete this['channels'][_0x4c99e8['uniqueid']];}else if(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x68')]]){this[_0x9da1('0x8')][_0x4c99e8['linkedid']]['uniqueid']=this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x68')]][_0x9da1('0x69')];}if(this['variables'][_0x4c99e8['uniqueid']]){delete this[_0x9da1('0x3b')][_0x4c99e8[_0x9da1('0x19')]];}}}catch(_0x27c9a0){logger[_0x9da1('0x34')](_0x9da1('0x6a'),_0x4c99e8['uniqueid'],util[_0x9da1('0x18')](_0x27c9a0,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x6b')]=function(_0x1f0369){try{if(this['isNotNull'](_0x1f0369)){logger[_0x9da1('0x16')](_0x9da1('0x6c'),_0x1f0369[_0x9da1('0x19')],util['inspect'](_0x1f0369,{'showHidden':![],'depth':null}));if(_0x1f0369[_0x9da1('0x6d')][_0x9da1('0x6e')]()===_0x9da1('0x6f')){_0x1f0369['applicationdata']=(_0x1f0369[_0x9da1('0x70')]||_0x1f0369[_0x9da1('0x71')])['toLowerCase']();if(_[_0x9da1('0x72')](_0x1f0369['applicationdata'],_0x9da1('0x73'))){if(_['isUndefined'](this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]]))this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]]={};logger[_0x9da1('0x31')](_0x9da1('0x74'),_0x1f0369[_0x9da1('0x19')],_0x1f0369[_0x9da1('0x6d')],_0x1f0369[_0x9da1('0x71')]);var _0x457b45=_0x1f0369[_0x9da1('0x71')][_0x9da1('0x75')]('=');var _0x21119f=_0x457b45[0x0]['match'](/cdr\((.*)\)/);if(_0x21119f)this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]][_0x21119f[0x1]]=_0x457b45[0x1];}}}}catch(_0x27cec6){logger[_0x9da1('0x34')](_0x9da1('0x76'),_0x1f0369['uniqueid'],util[_0x9da1('0x18')](_0x27cec6,{'showHidden':![],'depth':null}));}};module[_0x9da1('0x77')]=VoiceDialReport;
\ No newline at end of file
+var _0xbd51=['omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','voice_outbound_channel:save','custom:dialbegin','error','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','format','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','endtime','duration','diff','starttime','lastevent','complete','answered','holdtime','seconds','billableseconds','sumHoldTime','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%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','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','channels','outboundChannels','outbound','variables','syncDialBegin','bind','dialend','syncDialEnd','varset','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf'];(function(_0x2baf40,_0x5ebef2){var _0x2bb2cb=function(_0x1a3fc1){while(--_0x1a3fc1){_0x2baf40['push'](_0x2baf40['shift']());}};_0x2bb2cb(++_0x5ebef2);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x2fd8c8,_0x5f3549){_0x2fd8c8=_0x2fd8c8-0x0;var _0x4cd972=_0xbd51[_0x2fd8c8];return _0x4cd972;};'use strict';var _=require(_0x1bd5('0x0'));var moment=require('moment');var util=require(_0x1bd5('0x1'));var Redis=require(_0x1bd5('0x2'));var config=require(_0x1bd5('0x3'));var logger=require(_0x1bd5('0x4'))('ami');var ami=require('../ami');config['redis']=_['defaults'](config[_0x1bd5('0x5')],{'host':_0x1bd5('0x6'),'port':0x18eb});var io=require(_0x1bd5('0x7'))(new Redis(config['redis']));function VoiceDialReport(_0x29abea){this[_0x1bd5('0x8')]=_0x29abea[_0x1bd5('0x9')];this[_0x1bd5('0xa')]=_0x29abea[_0x1bd5('0xa')];this['applications']={};this[_0x1bd5('0xb')]={};ami['on']('dialbegin',this[_0x1bd5('0xc')][_0x1bd5('0xd')](this));ami['on'](_0x1bd5('0xe'),this[_0x1bd5('0xf')][_0x1bd5('0xd')](this));ami['on'](_0x1bd5('0x10'),this['syncVarSet'][_0x1bd5('0xd')](this));ami['on']('hangup',this[_0x1bd5('0x11')][_0x1bd5('0xd')](this));}VoiceDialReport[_0x1bd5('0x12')][_0x1bd5('0x13')]=function(_0x177be0){return _0x177be0!==null&&!_[_0x1bd5('0x14')](_0x177be0);};VoiceDialReport[_0x1bd5('0x12')]['emit']=function(_0x5650b5,_0x8b2390,_0x6d2c40){io['to'](_0x5650b5)[_0x1bd5('0x15')](_0x8b2390,_0x6d2c40);};VoiceDialReport[_0x1bd5('0x12')]['syncDialBegin']=function(_0x5072c2){try{if(this[_0x1bd5('0x13')](_0x5072c2)){logger[_0x1bd5('0x16')](_0x1bd5('0x17'),_0x5072c2[_0x1bd5('0x18')],util[_0x1bd5('0x19')](_0x5072c2,{'showHidden':![],'depth':null}));if(this[_0x1bd5('0x8')][_0x5072c2[_0x1bd5('0x18')]]){_[_0x1bd5('0x1a')](this[_0x1bd5('0x8')][_0x5072c2['uniqueid']],{'starttime':moment()['format'](_0x1bd5('0x1b')),'lastevent':_0x1bd5('0x1c'),'interface':_0x5072c2[_0x1bd5('0x1d')][_0x1bd5('0x1e')](0x0,_0x5072c2[_0x1bd5('0x1d')][_0x1bd5('0x1f')]('-')),'membername':_0x5072c2[_0x1bd5('0x1d')][_0x1bd5('0x1e')](_0x5072c2[_0x1bd5('0x1d')][_0x1bd5('0x1f')]('/')+0x1,_0x5072c2[_0x1bd5('0x1d')][_0x1bd5('0x1f')]('-'))},_[_0x1bd5('0x20')](_0x5072c2,[_0x1bd5('0x21'),_0x1bd5('0x22')]));logger[_0x1bd5('0x23')](_0x1bd5('0x24'),_0x5072c2[_0x1bd5('0x18')],this['channels'][_0x5072c2[_0x1bd5('0x18')]]['membername'],this[_0x1bd5('0x8')][_0x5072c2[_0x1bd5('0x18')]][_0x1bd5('0x25')]);logger['debug'](_0x1bd5('0x26'),_0x5072c2['uniqueid'],util[_0x1bd5('0x19')](this[_0x1bd5('0x8')][_0x5072c2[_0x1bd5('0x18')]],{'showHidden':![],'depth':null}));if(this[_0x1bd5('0x27')][_0x5072c2['uniqueid']])_[_0x1bd5('0x1a')](this[_0x1bd5('0x8')][_0x5072c2[_0x1bd5('0x18')]],this[_0x1bd5('0x27')][_0x5072c2['uniqueid']]);this[_0x1bd5('0x15')](_0x1bd5('0x28'),_0x1bd5('0x29'),this[_0x1bd5('0x8')][_0x5072c2[_0x1bd5('0x18')]]);logger[_0x1bd5('0x16')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x5072c2[_0x1bd5('0x18')],util[_0x1bd5('0x19')](this[_0x1bd5('0x8')][_0x5072c2['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1bd5('0x15')](_0x1bd5('0x2a'),this[_0x1bd5('0x8')][_0x5072c2[_0x1bd5('0x18')]]);}}}catch(_0x1f4456){logger[_0x1bd5('0x2b')]('[%s][voiceDialReport][dialbegin]',_0x5072c2['uniqueid'],util[_0x1bd5('0x19')](_0x1f4456,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1bd5('0x12')]['syncDialEnd']=function(_0x36649d){try{if(this[_0x1bd5('0x13')](_0x36649d)){logger[_0x1bd5('0x16')](_0x1bd5('0x2c'),_0x36649d['uniqueid'],util[_0x1bd5('0x19')](_0x36649d,{'showHidden':![],'depth':null}));if(this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]]){this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]][_0x1bd5('0x2d')]=_0x36649d[_0x1bd5('0x2d')];if(_0x36649d[_0x1bd5('0x2d')]==='ANSWER'){this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]][_0x1bd5('0x2e')]=_0x36649d[_0x1bd5('0x2e')];this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]][_0x1bd5('0x2f')]=_0x36649d['connectedlinename'];this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]][_0x1bd5('0x30')]=moment()[_0x1bd5('0x31')](_0x1bd5('0x1b'));this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]]['lastevent']='connect';logger[_0x1bd5('0x23')](_0x1bd5('0x32'),_0x36649d[_0x1bd5('0x18')],_0x36649d['channel'][_0x1bd5('0x1e')](_0x36649d['channel'][_0x1bd5('0x1f')]('/')+0x1,_0x36649d[_0x1bd5('0x1d')][_0x1bd5('0x1f')]('-')));logger[_0x1bd5('0x16')](_0x1bd5('0x33'),_0x36649d[_0x1bd5('0x18')],util[_0x1bd5('0x19')](this[_0x1bd5('0x8')][_0x36649d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1bd5('0x15')](_0x1bd5('0x34'),this['channels'][_0x36649d[_0x1bd5('0x18')]]);}logger[_0x1bd5('0x16')](_0x1bd5('0x35'),_0x36649d['uniqueid'],util[_0x1bd5('0x19')](this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]],{'showHidden':![],'depth':null}));this[_0x1bd5('0x15')]('voice:outbound',_0x1bd5('0x29'),this[_0x1bd5('0x8')][_0x36649d[_0x1bd5('0x18')]]);}}}catch(_0x11e996){logger['error']('[%s][voiceDialReport][dialend]',_0x36649d[_0x1bd5('0x18')],util[_0x1bd5('0x19')](_0x11e996,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1bd5('0x12')]['syncVarSet']=function(_0x2a28c6){try{if(this[_0x1bd5('0x13')](_0x2a28c6)){logger['debug'](_0x1bd5('0x36'),_0x2a28c6['uniqueid'],util[_0x1bd5('0x19')](_0x2a28c6,{'showHidden':![],'depth':null}));this[_0x1bd5('0x37')](_0x2a28c6['uniqueid'],_[_0x1bd5('0x38')](_0x2a28c6[_0x1bd5('0x39')])[0x0],_0x2a28c6[_0x1bd5('0x3a')]);if(this[_0x1bd5('0x13')](_0x2a28c6[_0x1bd5('0x39')])&&this[_0x1bd5('0x13')](_0x2a28c6[_0x1bd5('0x39')][_0x1bd5('0x3b')])){if(_[_0x1bd5('0x14')](this[_0x1bd5('0x8')][_0x2a28c6[_0x1bd5('0x18')]])){this[_0x1bd5('0x8')][_0x2a28c6['uniqueid']]={'routeId':_0x2a28c6[_0x1bd5('0x3a')],'variables':this[_0x1bd5('0xb')][_0x2a28c6[_0x1bd5('0x18')]],'motionChannel':'voice'};logger[_0x1bd5('0x23')](_0x1bd5('0x3c'),_0x2a28c6['uniqueid'],_0x2a28c6[_0x1bd5('0x39')]['outboundrouteid'],_[_0x1bd5('0x38')](_0x2a28c6['variable'])[0x0],_0x2a28c6[_0x1bd5('0x3a')]);logger[_0x1bd5('0x16')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2a28c6[_0x1bd5('0x18')],util['inspect'](this[_0x1bd5('0x8')][_0x2a28c6[_0x1bd5('0x18')]],{'showHidden':![],'depth':null}));this[_0x1bd5('0x15')](_0x1bd5('0x28'),_0x1bd5('0x29'),this[_0x1bd5('0x8')][_0x2a28c6[_0x1bd5('0x18')]]);}}}}catch(_0x308de2){logger['error'](_0x1bd5('0x3d'),_0x2a28c6[_0x1bd5('0x18')],util[_0x1bd5('0x19')](_0x308de2,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1bd5('0x12')][_0x1bd5('0x37')]=function(_0x1c4c20,_0x593f80,_0x45925d){var _0x121bfb=[_0x1bd5('0x3e'),_0x1bd5('0x3f'),_0x1bd5('0x40'),_0x1bd5('0x41'),_0x1bd5('0x42'),'rtpaudioqoslossbridged','rtpaudioqosrtt',_0x1bd5('0x43'),_0x1bd5('0x44'),_0x1bd5('0x45'),'bridgepeer',_0x1bd5('0x46'),_0x1bd5('0x47'),_0x1bd5('0x48'),_0x1bd5('0x49'),_0x1bd5('0x4a'),_0x1bd5('0x4b'),_0x1bd5('0x4c'),'memberrealtime'];if(!_[_0x1bd5('0x4d')](_0x593f80)&&!_[_0x1bd5('0x4e')](_0x121bfb,_0x593f80)){if(_['isUndefined'](this[_0x1bd5('0xb')][_0x1c4c20])){this['variables'][_0x1c4c20]={};}this[_0x1bd5('0xb')][_0x1c4c20][_0x593f80]=_0x45925d;}};VoiceDialReport['prototype'][_0x1bd5('0x11')]=function(_0x555ba1){try{if(this['isNotNull'](_0x555ba1)){logger[_0x1bd5('0x16')](_0x1bd5('0x4f'),_0x555ba1[_0x1bd5('0x18')],util[_0x1bd5('0x19')](_0x555ba1,{'showHidden':![],'depth':null}));if(this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]]){logger[_0x1bd5('0x23')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x555ba1[_0x1bd5('0x18')],_0x555ba1['cause-txt']);this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x50')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x51')]=moment(this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x50')])[_0x1bd5('0x52')](this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x53')],'seconds');this[_0x1bd5('0x8')][_0x555ba1['uniqueid']][_0x1bd5('0x54')]=_0x1bd5('0x55');this[_0x1bd5('0xa')]['total']+=0x1;if(this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x30')]){this['outbound'][_0x1bd5('0x56')]+=0x1;this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x57')]=moment(this['channels'][_0x555ba1['uniqueid']][_0x1bd5('0x30')])[_0x1bd5('0x52')](this[_0x1bd5('0x8')][_0x555ba1['uniqueid']]['starttime'],_0x1bd5('0x58'));this['channels'][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x59')]=moment(this['channels'][_0x555ba1[_0x1bd5('0x18')]]['endtime'])[_0x1bd5('0x52')](this['channels'][_0x555ba1[_0x1bd5('0x18')]][_0x1bd5('0x30')],'seconds');this[_0x1bd5('0xa')][_0x1bd5('0x5a')]+=this['channels'][_0x555ba1['uniqueid']][_0x1bd5('0x57')]||0x0;this[_0x1bd5('0xa')]['sumBillable']+=this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]]['billableseconds'];}this['outbound'][_0x1bd5('0x5b')]+=this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]]['duration'];logger[_0x1bd5('0x16')](_0x1bd5('0x5c'),_0x555ba1['uniqueid'],util['inspect'](this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]],{'showHidden':![],'depth':null}));ami[_0x1bd5('0x15')](_0x1bd5('0x5d'),this[_0x1bd5('0x8')][_0x555ba1['uniqueid']]);logger[_0x1bd5('0x16')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x555ba1[_0x1bd5('0x18')],util[_0x1bd5('0x19')](this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialend',this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]]);logger[_0x1bd5('0x16')](_0x1bd5('0x5e'),_0x555ba1[_0x1bd5('0x18')],util[_0x1bd5('0x19')](this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]],{'showHidden':![],'depth':null}));this[_0x1bd5('0x15')](_0x1bd5('0x28'),_0x1bd5('0x5f'),this[_0x1bd5('0xa')]);logger[_0x1bd5('0x23')](_0x1bd5('0x60'),JSON[_0x1bd5('0x61')](this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]]));logger[_0x1bd5('0x16')](_0x1bd5('0x62'),_0x555ba1[_0x1bd5('0x18')],util[_0x1bd5('0x19')](this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]],{'showHidden':![],'depth':null}));this[_0x1bd5('0x15')]('voice:outbound',_0x1bd5('0x63'),this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]]);delete this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x18')]];}else if(this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x64')]]){this['channels'][_0x555ba1[_0x1bd5('0x64')]][_0x1bd5('0x18')]=this[_0x1bd5('0x8')][_0x555ba1[_0x1bd5('0x64')]]['destuniqueid'];}if(this[_0x1bd5('0xb')][_0x555ba1[_0x1bd5('0x18')]]){delete this[_0x1bd5('0xb')][_0x555ba1[_0x1bd5('0x18')]];}}}catch(_0x1ca3b6){logger[_0x1bd5('0x2b')](_0x1bd5('0x65'),_0x555ba1['uniqueid'],util[_0x1bd5('0x19')](_0x1ca3b6,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncNewExten']=function(_0x34f98c){try{if(this['isNotNull'](_0x34f98c)){logger[_0x1bd5('0x16')](_0x1bd5('0x66'),_0x34f98c['uniqueid'],util[_0x1bd5('0x19')](_0x34f98c,{'showHidden':![],'depth':null}));if(_0x34f98c[_0x1bd5('0x67')][_0x1bd5('0x68')]()===_0x1bd5('0x69')){_0x34f98c[_0x1bd5('0x6a')]=(_0x34f98c[_0x1bd5('0x6b')]||_0x34f98c['applicationdata'])[_0x1bd5('0x68')]();if(_[_0x1bd5('0x6c')](_0x34f98c[_0x1bd5('0x6a')],_0x1bd5('0x6d'))){if(_['isUndefined'](this['applications'][_0x34f98c[_0x1bd5('0x18')]]))this[_0x1bd5('0x27')][_0x34f98c[_0x1bd5('0x18')]]={};logger[_0x1bd5('0x23')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x34f98c[_0x1bd5('0x18')],_0x34f98c['application'],_0x34f98c['applicationdata']);var _0x3a203f=_0x34f98c['applicationdata'][_0x1bd5('0x6e')]('=');var _0xefa91b=_0x3a203f[0x0][_0x1bd5('0x6f')](/cdr\((.*)\)/);if(_0xefa91b)this[_0x1bd5('0x27')][_0x34f98c[_0x1bd5('0x18')]][_0xefa91b[0x1]]=_0x3a203f[0x1];}}}}catch(_0xab4ed6){logger[_0x1bd5('0x2b')](_0x1bd5('0x70'),_0x34f98c[_0x1bd5('0x18')],util['inspect'](_0xab4ed6,{'showHidden':![],'depth':null}));}};module[_0x1bd5('0x71')]=VoiceDialReport;
\ No newline at end of file
index 000fcf8..c89b41a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e1d=['format','voice:queue:%s','voice_queue_channel:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_presence:remove','emitVoiceQueueSummary','type','name','strategy','answered','available','sumBillable','sumHoldTime','total','unmanaged','abandoned','Trunk','callerid','Interval','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','catch','[voiceQueueReport][queues]','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedIn','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','holdtime','originalposition','YYYY-MM-DD\x20HH:mm:ss','ABANDONED','lastAssignedTo','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','queuecallerleave','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','linkedid','add','seconds','FORWARDTRANSFER','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','value','variable','queuestatus','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','[%s][voiceQueueReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','handleHangup','length','diff','sumDuration','milliseconds','queuecallercompleteAt','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerabandon','custom:voiceQueueReport','cause-txt','cause','transferid','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','transfertype','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','set','applicationdata','appdata','CDR(routeAlias)','toLowerCase','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','application','split','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','queuesummarycomplete','bind','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','agentconnect','varset','hangup','syncHangup','syncFullyBooted','attendedtransfer','syncAttendedTransfer','blindtransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','clearZombieChannels','isNil','Action','status','message','No\x20such\x20channel','error','inspect','queueReports','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid'];(function(_0x1ac90a,_0x4a434f){var _0xadb75=function(_0x378112){while(--_0x378112){_0x1ac90a['push'](_0x1ac90a['shift']());}};_0xadb75(++_0x4a434f);}(_0x9e1d,0xa8));var _0xd9e1=function(_0x5a63d9,_0x1dfe31){_0x5a63d9=_0x5a63d9-0x0;var _0x3428b3=_0x9e1d[_0x5a63d9];return _0x3428b3;};'use strict';var _=require(_0xd9e1('0x0'));var moment=require(_0xd9e1('0x1'));var util=require(_0xd9e1('0x2'));var md5=require(_0xd9e1('0x3'));var Redis=require(_0xd9e1('0x4'));var config=require(_0xd9e1('0x5'));var logger=require(_0xd9e1('0x6'))(_0xd9e1('0x7'));var ami=require(_0xd9e1('0x8'));var QueueReport=require(_0xd9e1('0x9'));config[_0xd9e1('0xa')]=_[_0xd9e1('0xb')](config[_0xd9e1('0xa')],{'host':_0xd9e1('0xc'),'port':0x18eb});var io=require(_0xd9e1('0xd'))(new Redis(config[_0xd9e1('0xa')]));var Sequence=function(){};Sequence[_0xd9e1('0xe')][_0xd9e1('0xf')]=function(_0x3018ab){this[_0xd9e1('0x10')]=this[_0xd9e1('0x10')]?this[_0xd9e1('0x10')][_0xd9e1('0x11')](_0x3018ab):_0x3018ab();};function VoiceQueueReport(_0x3ede8e){this[_0xd9e1('0x12')]=new Sequence();this['queueReports']={};this[_0xd9e1('0x13')]=_0x3ede8e[_0xd9e1('0x13')];this[_0xd9e1('0x14')]=_0x3ede8e[_0xd9e1('0x15')];this[_0xd9e1('0x16')]=_0x3ede8e[_0xd9e1('0x16')];this[_0xd9e1('0x17')]=!![];this[_0xd9e1('0x18')]=_0x3ede8e[_0xd9e1('0x18')];this[_0xd9e1('0x19')]={};ami['on'](_0xd9e1('0x1a'),this[_0xd9e1('0x1b')]['bind'](this));ami['on'](_0xd9e1('0x1c'),this['syncQueueSummaryComplete'][_0xd9e1('0x1d')](this));ami['on'](_0xd9e1('0x1e'),this['syncQueueCallerJoin']['bind'](this));ami['on'](_0xd9e1('0x1f'),this[_0xd9e1('0x20')][_0xd9e1('0x1d')](this));ami['on']('queuecallerleave',this['syncQueueCallerLeave'][_0xd9e1('0x1d')](this));ami['on'](_0xd9e1('0x21'),this[_0xd9e1('0x22')][_0xd9e1('0x1d')](this));ami['on'](_0xd9e1('0x23'),this['syncAgentConnect'][_0xd9e1('0x1d')](this));ami['on'](_0xd9e1('0x24'),this['syncVarSet'][_0xd9e1('0x1d')](this));ami['on'](_0xd9e1('0x25'),this[_0xd9e1('0x26')]['bind'](this));ami['on']('fullybooted',this[_0xd9e1('0x27')][_0xd9e1('0x1d')](this));ami['on']('musiconholdstart',this['syncMusicOnHoldStart']['bind'](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop']['bind'](this));ami['on'](_0xd9e1('0x28'),this[_0xd9e1('0x29')]['bind'](this));ami['on'](_0xd9e1('0x2a'),this['syncBlindTransfer']['bind'](this));this[_0xd9e1('0x2b')]();this[_0xd9e1('0x2c')]();}function clearChannels(_0x483c4a){if(!_[_0xd9e1('0x2d')](_0x483c4a)){for(var _0x25357e in _0x483c4a){if(_0x483c4a[_0xd9e1('0x2e')](_0x25357e)){delete _0x483c4a[_0x25357e];}}}}function clearCampaigns(_0x58fd73){if(!_[_0xd9e1('0x2d')](_0x58fd73)){for(var _0x23d3df in _0x58fd73){if(_0x58fd73[_0xd9e1('0x2e')](_0x23d3df)){_0x58fd73[_0x23d3df][_0xd9e1('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x4ab293){if(!_[_0xd9e1('0x2d')](_0x4ab293)){for(var _0x3ac8fd in _0x4ab293){if(_0x4ab293['hasOwnProperty'](_0x3ac8fd)){_0x4ab293[_0x3ac8fd][_0xd9e1('0x2f')]=0x0;_0x4ab293[_0x3ac8fd][_0xd9e1('0x30')]=0x0;_0x4ab293[_0x3ac8fd][_0xd9e1('0x31')]=0x0;_0x4ab293[_0x3ac8fd][_0xd9e1('0x32')]=0x0;_0x4ab293[_0x3ac8fd][_0xd9e1('0x33')]=!![];}}}}function clearAgentBooked(_0x2dffd7){if(!_[_0xd9e1('0x2d')](_0x2dffd7)){for(var _0x4e682e in _0x2dffd7){if(_0x2dffd7[_0xd9e1('0x2e')](_0x4e682e)){_0x2dffd7[_0x4e682e]['unlockRR']=!![];}}}}VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x34')]=function(){var _0x339621=this;for(var _0x53a5b3 in this[_0xd9e1('0x14')]){if(this['channels'][_0xd9e1('0x2e')](_0x53a5b3)&&!this[_0xd9e1('0x14')][_0x53a5b3]['switch']){this['sequence'][_0xd9e1('0xf')](function(){if(!_[_0xd9e1('0x35')](_0x339621['channels'][_0x53a5b3])){return ami[_0xd9e1('0x36')]({'action':_0xd9e1('0x37'),'channel':_0x339621['channels'][_0x53a5b3]['channel']})['catch'](function(_0x24cf5f){if(_0x24cf5f[_0xd9e1('0x38')]===_0xd9e1('0x39')){setTimeout(function(){if(_0x339621[_0xd9e1('0x14')][_0x53a5b3]){delete _0x339621[_0xd9e1('0x14')][_0x53a5b3];logger[_0xd9e1('0x3a')]('[%s][voiceQueueReport][checkChannel]',_0x53a5b3,util[_0xd9e1('0x3b')](_0x24cf5f,{'showHidden':![],'depth':null}));}if(_0x339621['queueReports'][_0x53a5b3]){delete _0x339621[_0xd9e1('0x3c')][_0x53a5b3];logger[_0xd9e1('0x3a')](_0xd9e1('0x3d'),_0x53a5b3,util[_0xd9e1('0x3b')](_0x24cf5f,{'showHidden':![],'depth':null}));}if(_0x339621['variables'][_0x53a5b3]){delete _0x339621['variables'][_0x53a5b3];logger['error'](_0xd9e1('0x3e'),_0x53a5b3,util['inspect'](_0x24cf5f,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0xd9e1('0x27')]=function(){logger[_0xd9e1('0x3a')](_0xd9e1('0x3f'));clearChannels(this[_0xd9e1('0x14')]);this['clearQueueReport'](this[_0xd9e1('0x3c')]);clearAgentBooked(this[_0xd9e1('0x13')]);clearVoiceQueues(this[_0xd9e1('0x16')]);clearCampaigns(this[_0xd9e1('0x18')]);};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x40')]=function(_0x463e0c){var _0x1dee46=this;if(!_['isEmpty'](_0x463e0c)){for(var _0x1c2a25 in _0x463e0c){if(_0x463e0c[_0xd9e1('0x2e')](_0x1c2a25)){_0x1dee46['emitVoiceQueueChannelRemove'](_0x463e0c[_0x1c2a25],_0xd9e1('0x41'));delete _0x463e0c[_0x1c2a25];}}}};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x42')]=function(_0x4be5ba,_0x334535,_0x2d67b2){io['to'](_0x4be5ba)[_0xd9e1('0x42')](_0x334535,_0x2d67b2);};VoiceQueueReport['prototype'][_0xd9e1('0x43')]=function(_0x480478,_0x199f76){logger[_0xd9e1('0x44')](_0xd9e1('0x45')+_0x199f76+_0xd9e1('0x46'),_0x480478[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x480478,{'showHidden':![],'depth':null}));this['emit'](util[_0xd9e1('0x48')](_0xd9e1('0x49'),_0x480478['name']),_0xd9e1('0x4a'),_0x480478);io[_0xd9e1('0x42')]('voice_queue_presence:save',_0x480478);};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x4b')]=function(_0x4b4941,_0x26c3dc){logger[_0xd9e1('0x44')](_0xd9e1('0x45')+_0x26c3dc+_0xd9e1('0x4c'),_0x4b4941[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x4b4941,{'showHidden':![],'depth':null}));if(_0x4b4941[_0xd9e1('0x4d')]===_0xd9e1('0x4e'))return;this['emit'](util[_0xd9e1('0x48')]('voice:queue:%s',_0x4b4941['name']),'voice_queue_channel:remove',_0x4b4941);io[_0xd9e1('0x42')](_0xd9e1('0x4f'),_0x4b4941);};VoiceQueueReport['prototype'][_0xd9e1('0x50')]=function(_0x28d555,_0x3760f9){if(_0x28d555[_0xd9e1('0x51')]==='inbound'){var _0xfc4566={'id':_0x28d555['id'],'name':_0x28d555[_0xd9e1('0x52')],'strategy':_0x28d555[_0xd9e1('0x53')],'answered':_0x28d555[_0xd9e1('0x54')],'available':_0x28d555[_0xd9e1('0x55')],'loggedIn':_0x28d555['loggedIn'],'pTalking':_0x28d555[_0xd9e1('0x31')],'sumBillable':_0x28d555[_0xd9e1('0x56')],'sumDuration':_0x28d555['sumDuration'],'sumHoldTime':_0x28d555[_0xd9e1('0x57')]||0x0,'talking':_0x28d555[_0xd9e1('0x30')],'total':_0x28d555[_0xd9e1('0x58')],'type':_0x28d555['type'],'unmanaged':_0x28d555[_0xd9e1('0x59')],'abandoned':_0x28d555[_0xd9e1('0x5a')],'waiting':_0x28d555['waiting']};if(_0x28d555['Trunk']){_0xfc4566[_0xd9e1('0x5b')]={'id':_0x28d555[_0xd9e1('0x5b')]['id'],'name':_0x28d555['Trunk'][_0xd9e1('0x52')],'active':_0x28d555[_0xd9e1('0x5b')]['active'],'callerid':_0x28d555[_0xd9e1('0x5b')][_0xd9e1('0x5c')]};}if(_0x28d555[_0xd9e1('0x5d')]){_0xfc4566['Interval']={'id':_0x28d555['Interval']['id'],'name':_0x28d555['Interval'][_0xd9e1('0x52')]};}var _0x26b532=md5(JSON['stringify'](_0xfc4566));if(_0x28d555[_0xd9e1('0x3')]!==_0x26b532){_0x28d555[_0xd9e1('0x3')]=_0x26b532;logger[_0xd9e1('0x44')](_0xd9e1('0x5e')+_0x3760f9+_0xd9e1('0x5f'),util[_0xd9e1('0x3b')](_0xfc4566,{'showHidden':![],'depth':null}));this[_0xd9e1('0x42')](util['format'](_0xd9e1('0x49'),_0xfc4566['name']),_0xd9e1('0x60'),_0xfc4566);}}};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x61')]=function(_0x1292f6){return _0x1292f6!==null&&!_[_0xd9e1('0x62')](_0x1292f6);};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x2c')]=function(){var _0x1e72d7=this;setInterval(function(){_0x1e72d7['clearZombieChannels']();ami[_0xd9e1('0x36')]({'action':_0xd9e1('0x63')})[_0xd9e1('0x64')](function(_0x3e1b76){logger['error'](_0xd9e1('0x65'),util[_0xd9e1('0x3b')](_0x3e1b76,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x2b')]=function(){var _0x225dd6=this;setInterval(function(){if(_0x225dd6[_0xd9e1('0x17')]){return ami['Action']({'action':_0xd9e1('0x1a')})['then'](function(){_0x225dd6['flagQueueSummary']=![];})[_0xd9e1('0x64')](function(_0x407954){logger[_0xd9e1('0x3a')](_0xd9e1('0x66'),util[_0xd9e1('0x3b')](_0x407954,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x1b')]=function(_0x42f0ed){try{if(this['isNotNull'](_0x42f0ed)&&this[_0xd9e1('0x61')](_0x42f0ed[_0xd9e1('0x67')])){logger[_0xd9e1('0x44')](_0xd9e1('0x68'),util[_0xd9e1('0x3b')](_0x42f0ed,{'showHidden':![],'depth':null}));if(this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]]){logger[_0xd9e1('0x69')](_0xd9e1('0x6a'),_0x42f0ed['queue']);var _0x421221=_[_0xd9e1('0x6b')](this[_0xd9e1('0x14')],'queue')[_0x42f0ed[_0xd9e1('0x67')]]||0x0;var _0x5152a0=_0x421221-_0x42f0ed[_0xd9e1('0x6c')];if(this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]]['waiting']!==_[_0xd9e1('0x6d')](_0x42f0ed[_0xd9e1('0x6c')])||this[_0xd9e1('0x16')][_0x42f0ed['queue']]['loggedIn']!==_[_0xd9e1('0x6d')](_0x42f0ed['loggedin'])||this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]][_0xd9e1('0x55')]!==_[_0xd9e1('0x6d')](_0x42f0ed[_0xd9e1('0x55')])||this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]][_0xd9e1('0x30')]!==_0x5152a0){this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]]['waiting']=_[_0xd9e1('0x6d')](_0x42f0ed[_0xd9e1('0x6c')]);this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]][_0xd9e1('0x6e')]=_[_0xd9e1('0x6d')](_0x42f0ed[_0xd9e1('0x6f')]);this['voiceQueues'][_0x42f0ed[_0xd9e1('0x67')]][_0xd9e1('0x55')]=_[_0xd9e1('0x6d')](_0x42f0ed[_0xd9e1('0x55')]);this['voiceQueues'][_0x42f0ed[_0xd9e1('0x67')]][_0xd9e1('0x30')]=_0x5152a0>0x0?_0x5152a0:0x0;this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]][_0xd9e1('0x30')]=this[_0xd9e1('0x16')][_0x42f0ed['queue']][_0xd9e1('0x30')]>_[_0xd9e1('0x6d')](_0x42f0ed['loggedin'])?_[_0xd9e1('0x6d')](_0x42f0ed[_0xd9e1('0x6f')]):this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]][_0xd9e1('0x30')];this[_0xd9e1('0x50')](this['voiceQueues'][_0x42f0ed[_0xd9e1('0x67')]],_0xd9e1('0x1a'));}logger[_0xd9e1('0x44')](_0xd9e1('0x70'),util[_0xd9e1('0x3b')](this[_0xd9e1('0x16')][_0x42f0ed['queue']],{'showHidden':![],'depth':null}));ami[_0xd9e1('0x42')]('custom:queuesummary',this[_0xd9e1('0x16')][_0x42f0ed[_0xd9e1('0x67')]]);}}}catch(_0xc4cc7b){logger[_0xd9e1('0x3a')](_0xd9e1('0x66'),util[_0xd9e1('0x3b')](_0xc4cc7b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueSummaryComplete']=function(_0x1a4acb){logger[_0xd9e1('0x44')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0xd9e1('0x3b')](_0x1a4acb,{'showHidden':![],'depth':null}));ami[_0xd9e1('0x42')]('custom:queuesummarycomplete',{});this[_0xd9e1('0x17')]=!![];};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x71')]=function(_0x299363){try{if(this[_0xd9e1('0x61')](_0x299363)){logger[_0xd9e1('0x44')](_0xd9e1('0x72'),_0x299363[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x299363,{'showHidden':![],'depth':null}));if(_[_0xd9e1('0x62')](this['queueReports'][_0x299363[_0xd9e1('0x47')]]))this[_0xd9e1('0x3c')][_0x299363[_0xd9e1('0x47')]]=[];if(_[_0xd9e1('0x62')](this[_0xd9e1('0x14')][_0x299363['uniqueid']]))this['channels'][_0x299363['uniqueid']]={};var _0x352525=new QueueReport();_0x352525[_0xd9e1('0x52')]=_0x299363[_0xd9e1('0x67')];_0x352525['type']=this['voiceQueues'][_0x352525['name']]&&this[_0xd9e1('0x16')][_0x352525[_0xd9e1('0x52')]]['type']?this['voiceQueues'][_0x352525[_0xd9e1('0x52')]][_0xd9e1('0x51')]||_0xd9e1('0x73'):_0xd9e1('0x73');_0x352525[_0xd9e1('0x67')]=_0x299363['queue'];_0x352525[_0xd9e1('0x74')]=moment()[_0xd9e1('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0x352525[_0xd9e1('0x75')]=_0x299363['position'];_0x352525[_0xd9e1('0x76')]=_0x299363[_0xd9e1('0x76')];_0x352525[_0xd9e1('0x47')]=_0x299363[_0xd9e1('0x47')];_0x352525[_0xd9e1('0x77')]=this[_0xd9e1('0x14')][_0x299363[_0xd9e1('0x47')]][_0xd9e1('0x77')];logger['info'](_0xd9e1('0x78'),_0x352525[_0xd9e1('0x52')],_0x352525[_0xd9e1('0x51')]);_[_0xd9e1('0x79')](_0x352525,_[_0xd9e1('0x7a')](_0x299363,_[_0xd9e1('0x7b')](_0x352525)));this[_0xd9e1('0x3c')][_0x299363[_0xd9e1('0x47')]][_0xd9e1('0x7c')](_0x352525);this[_0xd9e1('0x14')][_0x299363['uniqueid']]=_0x352525;this[_0xd9e1('0x43')](_0x352525,_0xd9e1('0x1e'));}}catch(_0x9da8ac){logger[_0xd9e1('0x3a')](_0xd9e1('0x72'),_0x299363[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x9da8ac,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueCallerAbandon']=function(_0x4cf801){try{if(this[_0xd9e1('0x61')](_0x4cf801)){logger[_0xd9e1('0x44')](_0xd9e1('0x7d'),_0x4cf801[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x4cf801,{'showHidden':![],'depth':null}));if(this[_0xd9e1('0x3c')][_0x4cf801[_0xd9e1('0x47')]]){var _0x1ccee9=_[_0xd9e1('0x7e')](this['queueReports'][_0x4cf801[_0xd9e1('0x47')]]);_0x1ccee9[_0xd9e1('0x7f')]=![];_0x1ccee9['queuecallercompleteAt']=null;_0x1ccee9[_0xd9e1('0x80')]=_0x4cf801[_0xd9e1('0x80')];_0x1ccee9['originalposition']=_0x4cf801[_0xd9e1('0x81')];_0x1ccee9[_0xd9e1('0x1f')]=!![];_0x1ccee9['queuecallerabandonAt']=moment()[_0xd9e1('0x48')](_0xd9e1('0x82'));_0x1ccee9['queuecallerexitreason']=_0xd9e1('0x83');_0x1ccee9[_0xd9e1('0x84')]=null;logger[_0xd9e1('0x69')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x1ccee9[_0xd9e1('0x52')],_0x1ccee9[_0xd9e1('0x51')]);this[_0xd9e1('0x14')][_0x4cf801[_0xd9e1('0x47')]]=_0x1ccee9;this[_0xd9e1('0x4b')](_0x1ccee9,_0xd9e1('0x1f'));}}}catch(_0x5ebe0d){logger['error']('[%s][voiceQueueReport][queuecallerabandon]',_0x4cf801[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x5ebe0d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd9e1('0xe')]['syncQueueCallerLeave']=function(_0x51b81d){try{if(this[_0xd9e1('0x61')](_0x51b81d)){logger[_0xd9e1('0x44')](_0xd9e1('0x85'),_0x51b81d['uniqueid'],util[_0xd9e1('0x3b')](_0x51b81d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x51b81d[_0xd9e1('0x47')]]){var _0x3472bd=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x51b81d[_0xd9e1('0x47')]]);_0x3472bd[_0xd9e1('0x86')]=moment()[_0xd9e1('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0x3472bd[_0xd9e1('0x87')]=_0x51b81d[_0xd9e1('0x87')];_0x3472bd[_0xd9e1('0x88')]=_0x51b81d[_0xd9e1('0x88')];logger['info']('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x3472bd['name'],_0x3472bd[_0xd9e1('0x51')],_0x51b81d[_0xd9e1('0x87')],_0x51b81d[_0xd9e1('0x88')]);this[_0xd9e1('0x14')][_0x51b81d[_0xd9e1('0x47')]]=_0x3472bd;this[_0xd9e1('0x43')](_0x3472bd,_0xd9e1('0x89'));}}}catch(_0x363583){logger[_0xd9e1('0x3a')](_0xd9e1('0x85'),_0x51b81d['uniqueid'],util[_0xd9e1('0x3b')](_0x363583,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x8a')]=function(_0x206348){try{if(this[_0xd9e1('0x61')](_0x206348)){logger['debug'](_0xd9e1('0x8b'),_0x206348[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x206348,{'showHidden':![],'depth':null}));if(this[_0xd9e1('0x3c')][_0x206348[_0xd9e1('0x47')]]){var _0x1bff1a=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x206348[_0xd9e1('0x47')]]);_0x1bff1a[_0xd9e1('0x7f')]=!![];_0x1bff1a[_0xd9e1('0x4d')]=_0xd9e1('0x8c');logger[_0xd9e1('0x69')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x1bff1a[_0xd9e1('0x52')],_0x1bff1a[_0xd9e1('0x51')]);}}}catch(_0x564dee){logger[_0xd9e1('0x3a')](_0xd9e1('0x8b'),_0x206348['uniqueid'],util[_0xd9e1('0x3b')](_0x564dee,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd9e1('0x22')]=function(_0x9fea6b){try{if(this[_0xd9e1('0x61')](_0x9fea6b)){logger[_0xd9e1('0x44')](_0xd9e1('0x8d'),_0x9fea6b[_0xd9e1('0x47')],util['inspect'](_0x9fea6b,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x9fea6b[_0xd9e1('0x47')]]){var _0x3f606a=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x9fea6b[_0xd9e1('0x47')]]);_0x3f606a[_0xd9e1('0x1f')]=![];_0x3f606a[_0xd9e1('0x8e')]=null;_0x3f606a[_0xd9e1('0x8f')]=!![];_0x3f606a['lastAssignedTo']=_0x9fea6b[_0xd9e1('0x90')];_0x3f606a[_0xd9e1('0x80')]=_0x9fea6b[_0xd9e1('0x80')];_0x3f606a[_0xd9e1('0x7f')]=!![];_0x3f606a[_0xd9e1('0x91')]=![];_0x3f606a[_0xd9e1('0x92')]=null;if(!_0x3f606a[_0xd9e1('0x93')]){if(_0x9fea6b[_0xd9e1('0x94')]==_0xd9e1('0x93')){_0x3f606a[_0xd9e1('0x4d')]=_0xd9e1('0x95');logger[_0xd9e1('0x69')](_0xd9e1('0x96'),_0x3f606a[_0xd9e1('0x52')],_0x3f606a['type']);}else{if(_[_0xd9e1('0x97')](_0x9fea6b[_0xd9e1('0x98')]['toLowerCase'](),'local/')){if(this[_0xd9e1('0x3c')][_0x9fea6b['linkedid']]){var _0x468384=_['last'](this['queueReports'][_0x9fea6b[_0xd9e1('0x99')]]);_0x468384['queuecallercomplete']=![];_0x468384['queuecallerexit']=!![];_0x468384[_0xd9e1('0x92')]=moment(_0x3f606a[_0xd9e1('0x74')])[_0xd9e1('0x9a')](_0x9fea6b[_0xd9e1('0x80')],_0xd9e1('0x9b'))[_0xd9e1('0x48')](_0xd9e1('0x82'));_0x468384[_0xd9e1('0x4d')]=_0xd9e1('0x9c');_0x468384['transfer']=!![];_0x468384['transfertype']=_0xd9e1('0x9d');_0x468384[_0xd9e1('0x9e')]=_0x9fea6b[_0xd9e1('0x9f')];_0x468384[_0xd9e1('0xa0')]=_0x9fea6b[_0xd9e1('0x47')];logger[_0xd9e1('0x69')](_0xd9e1('0xa1'),_0x468384[_0xd9e1('0x52')],_0x468384[_0xd9e1('0x51')]);var _0x2c0413=this[_0xd9e1('0x3c')][_0x9fea6b[_0xd9e1('0x99')]];this[_0xd9e1('0x3c')][_0x9fea6b[_0xd9e1('0x99')]]=this['queueReports'][_0x9fea6b[_0xd9e1('0x47')]];this['queueReports'][_0x9fea6b[_0xd9e1('0x47')]]=_0x2c0413;}}else{_0x3f606a[_0xd9e1('0x4d')]=_0xd9e1('0xa2')+_0x9fea6b[_0xd9e1('0x94')][_0xd9e1('0xa3')]();logger[_0xd9e1('0x69')](_0xd9e1('0xa4'),_0x3f606a['name'],_0x3f606a['type'],_0x3f606a[_0xd9e1('0x4d')]);}}}this[_0xd9e1('0x14')][_0x9fea6b[_0xd9e1('0x47')]]=_0x3f606a;this[_0xd9e1('0x4b')](_0x3f606a,_0xd9e1('0x21'));}}}catch(_0xe20a4c){logger[_0xd9e1('0x3a')](_0xd9e1('0x8d'),_0x9fea6b[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0xe20a4c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd9e1('0xe')]['syncVarSet']=function(_0x3aff70){try{if(this[_0xd9e1('0x61')](_0x3aff70)){logger[_0xd9e1('0x44')]('[%s][voiceQueueReport][varset]',_0x3aff70['uniqueid'],util['inspect'](_0x3aff70,{'showHidden':![],'depth':null}));this[_0xd9e1('0xa5')](_0x3aff70[_0xd9e1('0x47')],_['keys'](_0x3aff70['variable'])[0x0],_0x3aff70[_0xd9e1('0xa6')]);if(this[_0xd9e1('0x3c')][_0x3aff70['uniqueid']]){var _0x11458d=_[_0xd9e1('0x7e')](this['queueReports'][_0x3aff70[_0xd9e1('0x47')]]);if(_0x11458d){if(this[_0xd9e1('0x61')](_0x3aff70[_0xd9e1('0xa7')])&&this[_0xd9e1('0x61')](_0x3aff70[_0xd9e1('0xa7')][_0xd9e1('0xa8')])){switch(_0x3aff70[_0xd9e1('0xa6')]){case _0xd9e1('0xa9'):_0x11458d[_0xd9e1('0x91')]=![];_0x11458d[_0xd9e1('0x92')]=null;break;case'TIMEOUT':_0x11458d[_0xd9e1('0xaa')]=_0xd9e1('0xab');_0x11458d[_0xd9e1('0x91')]=!![];_0x11458d[_0xd9e1('0x92')]=moment()[_0xd9e1('0x48')](_0xd9e1('0x82'));_0x11458d[_0xd9e1('0x86')]=moment()[_0xd9e1('0x48')](_0xd9e1('0x82'));logger[_0xd9e1('0x44')](_0xd9e1('0xac'),_0x3aff70[_0xd9e1('0x47')],util['inspect'](_0x11458d,{'showHidden':![],'depth':null}));ami[_0xd9e1('0x42')](_0xd9e1('0xad'),_0x11458d);break;default:_0x11458d[_0xd9e1('0x91')]=!![];_0x11458d[_0xd9e1('0x92')]=moment()[_0xd9e1('0x48')](_0xd9e1('0x82'));_0x11458d['queuecallerleaveAt']=moment()['format'](_0xd9e1('0x82'));}_0x11458d['queuecallerabandon']=![];_0x11458d[_0xd9e1('0x8e')]=null;_0x11458d['queuecallerexitreason']=_0x3aff70['value'];this[_0xd9e1('0x14')][_0x3aff70['uniqueid']]=_0x11458d;this[_0xd9e1('0x4b')](_0x11458d,_0xd9e1('0x24'));}else if(this[_0xd9e1('0x61')](_0x3aff70[_0xd9e1('0xa7')])&&this['isNotNull'](_0x3aff70['variable']['queueposition'])){if(!_0x11458d[_0xd9e1('0x1f')]){_0x11458d[_0xd9e1('0x91')]=!![];_0x11458d[_0xd9e1('0x92')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x11458d[_0xd9e1('0x4d')]='EXITWITHKEY';_0x11458d[_0xd9e1('0x86')]=moment()[_0xd9e1('0x48')](_0xd9e1('0x82'));this[_0xd9e1('0x14')][_0x3aff70[_0xd9e1('0x47')]]=_0x11458d;}}logger[_0xd9e1('0x69')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x3aff70[_0xd9e1('0x47')],_0x11458d[_0xd9e1('0x52')],_0x11458d[_0xd9e1('0x51')],_['keys'](_0x3aff70[_0xd9e1('0xa7')])[0x0],_0x3aff70['value']);_0x11458d[_0xd9e1('0x19')]=this[_0xd9e1('0x19')][_0x3aff70[_0xd9e1('0x47')]];}}}}catch(_0x5ca607){logger[_0xd9e1('0x3a')](_0xd9e1('0xae'),_0x3aff70[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x5ca607,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0xa5')]=function(_0x38fee6,_0xf8c6df,_0x3b939d){var _0x3dea4e=[_0xd9e1('0xaf'),_0xd9e1('0xb0'),'rtpaudioqosjitter',_0xd9e1('0xb1'),_0xd9e1('0xb2'),_0xd9e1('0xb3'),_0xd9e1('0xb4'),_0xd9e1('0xb5'),_0xd9e1('0xb6'),_0xd9e1('0xb7'),_0xd9e1('0xb8'),_0xd9e1('0xb9'),'membercalls',_0xd9e1('0xba'),_0xd9e1('0xbb'),_0xd9e1('0xbc'),_0xd9e1('0x90'),_0xd9e1('0xbd'),_0xd9e1('0xbe')];if(!_[_0xd9e1('0x35')](_0xf8c6df)&&!_['includes'](_0x3dea4e,_0xf8c6df)){if(_[_0xd9e1('0x62')](this['variables'][_0x38fee6])){this[_0xd9e1('0x19')][_0x38fee6]={};}this['variables'][_0x38fee6][_0xf8c6df]=_0x3b939d;}};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0xbf')]=function(_0x54e46b,_0x571bd8,_0x4a85b2){var _0xed3c10={};for(var _0x5c8e39=0x0;_0x5c8e39<this['queueReports'][_0x54e46b][_0xd9e1('0xc0')];_0x5c8e39+=0x1){_0xed3c10=this['queueReports'][_0x54e46b][_0x5c8e39];if(this[_0xd9e1('0x16')][_0xed3c10['queue']]){if(_0xed3c10[_0xd9e1('0x91')]&&_0xed3c10[_0xd9e1('0x93')]!=!![]){this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]][_0xd9e1('0x59')]+=0x1;}if(_0xed3c10['queuecallerabandon']){this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]]['abandoned']+=0x1;}this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]][_0xd9e1('0x57')]+=moment(_0xed3c10['queuecallerleaveAt'])[_0xd9e1('0xc1')](_0xed3c10[_0xd9e1('0x74')],_0xd9e1('0x9b'))||0x0;if(_0x5c8e39===this[_0xd9e1('0x3c')][_0x54e46b][_0xd9e1('0xc0')]-0x1){this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]][_0xd9e1('0xc2')]+=moment()[_0xd9e1('0xc3')](0x0)[_0xd9e1('0xc1')](_0xed3c10[_0xd9e1('0x74')],'seconds');this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]][_0xd9e1('0x58')]+=0x1;if(_0xed3c10[_0xd9e1('0x7f')]){this['voiceQueues'][_0xed3c10[_0xd9e1('0x67')]][_0xd9e1('0x54')]+=0x1;this[_0xd9e1('0x16')][_0xed3c10['queue']][_0xd9e1('0x56')]+=moment()[_0xd9e1('0xc3')](0x0)['diff'](_0xed3c10['queuecallerleaveAt'],_0xd9e1('0x9b'));_0xed3c10[_0xd9e1('0xc4')]=moment()[_0xd9e1('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0xed3c10[_0xd9e1('0x91')]=![];_0xed3c10[_0xd9e1('0x92')]=null;}if(_0xed3c10[_0xd9e1('0x91')]&&_0xed3c10[_0xd9e1('0x93')]!=!![]){_0xed3c10[_0xd9e1('0xaa')]='unmanaged';logger[_0xd9e1('0x44')](_0xd9e1('0xc5'),_0x54e46b,util[_0xd9e1('0x3b')](_0xed3c10,{'showHidden':![],'depth':null}));ami['emit']('custom:queuecallerunmanaged',_0xed3c10);}if(_0xed3c10['queuecallerabandon']){_0xed3c10[_0xd9e1('0xaa')]=_0xd9e1('0x5a');logger[_0xd9e1('0x44')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x54e46b,util[_0xd9e1('0x3b')](_0xed3c10,{'showHidden':![],'depth':null}));ami[_0xd9e1('0x42')](_0xd9e1('0xc6'),_0xed3c10);}}else{this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]][_0xd9e1('0xc2')]+=this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]][_0xd9e1('0x57')];}logger[_0xd9e1('0x69')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x54e46b,_0xed3c10['name'],_0xed3c10[_0xd9e1('0x51')],_0x571bd8);if(_0x4a85b2&&_0xed3c10[_0xd9e1('0x4d')]===_0xd9e1('0x4e')){_0xed3c10[_0xd9e1('0x4d')]=_0xd9e1('0x8c');}this[_0xd9e1('0x14')][_0x54e46b]=_0xed3c10;this[_0xd9e1('0x4b')](_0xed3c10,_0xd9e1('0x25'));this[_0xd9e1('0x50')](this[_0xd9e1('0x16')][_0xed3c10[_0xd9e1('0x67')]],_0xd9e1('0x25'));}}logger[_0xd9e1('0x44')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x54e46b,util['inspect'](this['queueReports'][_0x54e46b],{'showHidden':![],'depth':null}));ami[_0xd9e1('0x42')](_0xd9e1('0xc7'),this['queueReports'][_0x54e46b]);if(_0xed3c10[_0xd9e1('0x4d')]===_0xd9e1('0x4e'))return;delete this['queueReports'][_0x54e46b];delete this[_0xd9e1('0x14')][_0x54e46b];if(this[_0xd9e1('0x19')][_0x54e46b]){delete this[_0xd9e1('0x19')][_0x54e46b];}};VoiceQueueReport[_0xd9e1('0xe')]['syncHangup']=function(_0x45264e){try{if(this[_0xd9e1('0x61')](_0x45264e)){logger[_0xd9e1('0x44')]('[%s][voiceQueueReport][hangup]',_0x45264e[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x45264e,{'showHidden':![],'depth':null}));if(this[_0xd9e1('0x3c')][_0x45264e['uniqueid']]){return this['handleHangup'](_0x45264e[_0xd9e1('0x47')],_0x45264e[_0xd9e1('0xc8')]);}if(this['queueReports'][_0x45264e[_0xd9e1('0x99')]]){if(_0x45264e[_0xd9e1('0xc9')]==='21'){return;}return this[_0xd9e1('0xbf')](_0x45264e[_0xd9e1('0x99')],_0x45264e[_0xd9e1('0xc8')],!![]);}var _0x599afe=Object[_0xd9e1('0x7b')](this[_0xd9e1('0x3c')]);for(var _0x35b252=0x0;_0x35b252<_0x599afe[_0xd9e1('0xc0')];_0x35b252++){var _0x2e1a1c=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x599afe[_0x35b252]]);if(_0x2e1a1c&&_0x2e1a1c[_0xd9e1('0xca')]===_0x45264e[_0xd9e1('0x47')]){return this[_0xd9e1('0xbf')](_0x2e1a1c[_0xd9e1('0x47')],_0x45264e['cause-txt'],!![]);}}}}catch(_0x1be7ca){logger['error'](_0xd9e1('0xcb'),_0x45264e[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x1be7ca,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd9e1('0xe')][_0xd9e1('0x29')]=function(_0x2b99f5){try{if(this[_0xd9e1('0x61')](_0x2b99f5)){logger[_0xd9e1('0x44')](_0xd9e1('0xcc'),_0x2b99f5['uniqueid'],util[_0xd9e1('0x3b')](_0x2b99f5,{'showHidden':![],'depth':null}));var _0x2b9ed1;var _0x122e14;var _0x337cc0;if(this[_0xd9e1('0x3c')][_0x2b99f5['transfereeuniqueid']]){_0x2b9ed1=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcd')]]);_0x2b9ed1[_0xd9e1('0x9e')]=_0x2b99f5[_0xd9e1('0xce')];_0x2b9ed1[_0xd9e1('0xa0')]=_0x2b99f5[_0xd9e1('0xcf')];_0x2b9ed1[_0xd9e1('0x4d')]=_0xd9e1('0x4e');_0x2b9ed1[_0xd9e1('0x93')]=!![];_0x2b9ed1[_0xd9e1('0xd0')]=_0xd9e1('0xd1');if(this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcf')]]){_0x337cc0=this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcf')]];this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcf')]]=this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcd')]];this['queueReports'][_0x2b99f5['transfereeuniqueid']]=_0x337cc0;_0x122e14=_['last'](this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcd')]]);_0x122e14[_0xd9e1('0xd2')]=!![];}logger[_0xd9e1('0x69')](_0xd9e1('0xd3'),_0x2b99f5[_0xd9e1('0x47')],_0x2b9ed1['name'],_0x2b9ed1['type'],_0x2b9ed1[_0xd9e1('0x9e')],_0x2b9ed1[_0xd9e1('0xa0')]);}else if(this[_0xd9e1('0x3c')][_0x2b99f5['transfertargetuniqueid']]){_0x2b9ed1=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xd4')]]);_0x2b9ed1[_0xd9e1('0x9e')]=_0x2b99f5[_0xd9e1('0xd5')];_0x2b9ed1[_0xd9e1('0xa0')]=_0x2b99f5['origtransfereruniqueid'];_0x2b9ed1[_0xd9e1('0x4d')]='ATTENDEDTRANSFER';_0x2b9ed1[_0xd9e1('0x93')]=!![];_0x2b9ed1[_0xd9e1('0xd0')]=_0xd9e1('0xd1');if(this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xd6')]]){_0x337cc0=this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xd6')]];this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xd6')]]=this['queueReports'][_0x2b99f5['transfertargetuniqueid']];this['queueReports'][_0x2b99f5[_0xd9e1('0xd4')]]=_0x337cc0;_0x122e14=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xd4')]]);_0x122e14['switch']=!![];}logger[_0xd9e1('0x69')](_0xd9e1('0xd3'),_0x2b99f5[_0xd9e1('0x47')],_0x2b9ed1[_0xd9e1('0x52')],_0x2b9ed1[_0xd9e1('0x51')],_0x2b9ed1[_0xd9e1('0x9e')],_0x2b9ed1['transferuniqueid']);}else if(this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xd6')]]){_0x2b9ed1=_['last'](this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xd6')]]);_0x2b9ed1[_0xd9e1('0x9e')]=_0x2b99f5[_0xd9e1('0xd5')];_0x2b9ed1['transferuniqueid']=_0x2b99f5[_0xd9e1('0xd6')];_0x2b9ed1[_0xd9e1('0x4d')]='ATTENDEDTRANSFER';_0x2b9ed1[_0xd9e1('0x93')]=!![];_0x2b9ed1[_0xd9e1('0xd0')]=_0xd9e1('0xd1');_0x2b9ed1[_0xd9e1('0xd2')]=!![];_0x2b9ed1[_0xd9e1('0xca')]=_0x2b99f5[_0xd9e1('0xcd')];}else if(this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcf')]]){_0x2b9ed1=_['last'](this[_0xd9e1('0x3c')][_0x2b99f5[_0xd9e1('0xcf')]]);_0x2b9ed1[_0xd9e1('0x9e')]=_0x2b99f5[_0xd9e1('0xce')];_0x2b9ed1[_0xd9e1('0xa0')]=_0x2b99f5[_0xd9e1('0xcf')];_0x2b9ed1[_0xd9e1('0x4d')]=_0xd9e1('0x4e');_0x2b9ed1[_0xd9e1('0x93')]=!![];_0x2b9ed1[_0xd9e1('0xd0')]=_0xd9e1('0xd1');_0x2b9ed1[_0xd9e1('0xd2')]=!![];_0x2b9ed1['transferid']=_0x2b99f5[_0xd9e1('0xd4')];}}}catch(_0x2bbc60){logger['error'](_0xd9e1('0xcc'),_0x2b99f5['uniqueid'],util[_0xd9e1('0x3b')](_0x2bbc60,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd9e1('0xd7')]=function(_0x3130f4){try{if(this[_0xd9e1('0x61')](_0x3130f4)){logger['debug'](_0xd9e1('0xd8'),_0x3130f4[_0xd9e1('0x47')],util['inspect'](_0x3130f4,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3130f4[_0xd9e1('0xcd')]]){var _0x4fbf69=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x3130f4[_0xd9e1('0xcd')]]);_0x4fbf69[_0xd9e1('0x4d')]=_0xd9e1('0xd9');_0x4fbf69[_0xd9e1('0x93')]=!![];_0x4fbf69[_0xd9e1('0xd0')]='BLIND';_0x4fbf69['transferexten']=_0x3130f4[_0xd9e1('0xda')];_0x4fbf69[_0xd9e1('0xa0')]=_0x3130f4['transfereeuniqueid'];logger[_0xd9e1('0x69')](_0xd9e1('0xdb'),_0x3130f4[_0xd9e1('0x47')],_0x4fbf69[_0xd9e1('0x52')],_0x4fbf69[_0xd9e1('0x51')],_0x4fbf69[_0xd9e1('0x9e')],_0x4fbf69[_0xd9e1('0xa0')]);this[_0xd9e1('0x26')]({'event':_0xd9e1('0xdc'),'uniqueid':_0x3130f4[_0xd9e1('0xcd')],'context':_0x3130f4[_0xd9e1('0xdd')],'channel':_0x3130f4['transfererchannel']});}}}catch(_0x4fcc6f){logger[_0xd9e1('0x3a')](_0xd9e1('0xd8'),_0x3130f4[_0xd9e1('0x47')],util['inspect'](_0x4fcc6f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd9e1('0xde')]=function(_0x548840){try{if(this[_0xd9e1('0x61')](_0x548840)){logger[_0xd9e1('0x44')](_0xd9e1('0xdf'),_0x548840['uniqueid'],util[_0xd9e1('0x3b')](_0x548840,{'showHidden':![],'depth':null}));if(this[_0xd9e1('0x3c')][_0x548840[_0xd9e1('0x47')]]){var _0x2dc99f=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x548840[_0xd9e1('0x47')]]);if(!_[_0xd9e1('0x35')](_0x2dc99f[_0xd9e1('0x86')])){_0x2dc99f[_0xd9e1('0xe0')]=moment()[_0xd9e1('0x48')](_0xd9e1('0x82'));logger[_0xd9e1('0x69')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x548840[_0xd9e1('0x47')],_0x2dc99f[_0xd9e1('0xe0')]);}}}}catch(_0x4348ca){logger[_0xd9e1('0x3a')](_0xd9e1('0xdf'),_0x548840[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x4348ca,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd9e1('0xe')]['syncMusicOnHoldStop']=function(_0x2a563f){try{if(this['isNotNull'](_0x2a563f)){logger[_0xd9e1('0x44')](_0xd9e1('0xe1'),_0x2a563f[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x2a563f,{'showHidden':![],'depth':null}));if(this[_0xd9e1('0x3c')][_0x2a563f[_0xd9e1('0x47')]]){var _0x39b522=_[_0xd9e1('0x7e')](this[_0xd9e1('0x3c')][_0x2a563f[_0xd9e1('0x47')]]);if(!_[_0xd9e1('0x35')](_0x39b522[_0xd9e1('0xe0')])){_0x39b522[_0xd9e1('0xe2')]+=moment()[_0xd9e1('0xc3')](0x0)['diff'](_0x39b522['mohstarttime'],_0xd9e1('0x9b'));logger['info'](_0xd9e1('0xe3'),_0x2a563f['uniqueid'],_0x39b522[_0xd9e1('0xe2')]);delete _0x39b522[_0xd9e1('0xe0')];}}}}catch(_0x2775c3){logger[_0xd9e1('0x3a')]('[%s][voiceQueueReport][musiconholdstop]',_0x2a563f[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0x2775c3,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd9e1('0xe4')]=function(_0x23c63f){try{if(this['isNotNull'](_0x23c63f)){logger['debug'](_0xd9e1('0xe5'),_0x23c63f['uniqueid'],util[_0xd9e1('0x3b')](_0x23c63f,{'showHidden':![],'depth':null}));if(_0x23c63f['application']['toLowerCase']()===_0xd9e1('0xe6')){_0x23c63f[_0xd9e1('0xe7')]=_0x23c63f[_0xd9e1('0xe8')]&&_0x23c63f[_0xd9e1('0xe8')][_0xd9e1('0x97')](_0xd9e1('0xe9'))?_0x23c63f['appdata']:(_0x23c63f[_0xd9e1('0xe8')]||_0x23c63f[_0xd9e1('0xe7')])['toLowerCase']();if(_[_0xd9e1('0x97')](_0x23c63f[_0xd9e1('0xe7')][_0xd9e1('0xea')](),'cdr(')){logger[_0xd9e1('0x69')](_0xd9e1('0xeb'),_0x23c63f['uniqueid'],_0x23c63f[_0xd9e1('0xec')],_0x23c63f[_0xd9e1('0xe7')]);if(_[_0xd9e1('0x62')](this[_0xd9e1('0x14')][_0x23c63f[_0xd9e1('0x47')]]))this[_0xd9e1('0x14')][_0x23c63f[_0xd9e1('0x47')]]={};var _0x3c7f17=_0x23c63f[_0xd9e1('0xe7')][_0xd9e1('0xed')]('=');var _0x645cb1=_0x3c7f17[0x0][_0xd9e1('0xea')]()['match'](/cdr\((.*)\)/);if(_0x645cb1)this[_0xd9e1('0x14')][_0x23c63f[_0xd9e1('0x47')]][_0x645cb1[0x1]]=_0x3c7f17[0x1];}}}}catch(_0xb475ea){logger['error'](_0xd9e1('0xee'),_0x23c63f[_0xd9e1('0x47')],util[_0xd9e1('0x3b')](_0xb475ea,{'showHidden':![],'depth':null}));}};module[_0xd9e1('0xef')]=VoiceQueueReport;
\ No newline at end of file
+var _0xb03e=['syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','switch','isNil','Action','status','channel','catch','message','error','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save',']\x20sending\x20voice_queue_channel:remove\x20event:','ATTENDEDTRANSFER','voice_queue_presence:remove','type','inbound','stringify',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','clearZombieChannels','queues','[voiceQueueReport][queues]','isRunning','then','actionid','[voiceQueueReport][queuesummary]','createQueueSummaryReport','summaryEvent','loggedin','callers','forEach','SIP/','online','loggedInDb','incall','paused','includes','unknown','notInUse','inUse','busy','invalid','ringing','ringInUse','onHold','available','loggedIn','waiting','syncQueueStatusComplete','queuestatus','assign','emitVoiceQueueSummary','statusRequests','push','syncQueueSummary','queue','[voiceQueueReport][queuesummary]\x20event:','info','completeEvent','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','last','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','syncAgentConnect','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallercomplete','queuecallerexit','queuecallerexitAt','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','FORWARDTRANSFER','transfer','transfertype','FORWARD','destexten','transferuniqueid','linkedid','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','variable','value','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','unmanaged','sumHoldTime','diff','seconds','length','sumDuration','milliseconds','total','answered','sumBillable','queuecallercompleteAt','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','handleHangup','transferid','cause-txt','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceQueueReport][newexten]','exports','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','realtime','agents','channels','queueChannels','voiceQueues','campaigns','summary','variables','queuesummary','bind','queuesummarycomplete','syncQueueSummaryComplete','syncQueueMember','queuestatuscomplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart'];(function(_0x4ccaac,_0x18fdeb){var _0x36ee3c=function(_0x51a081){while(--_0x51a081){_0x4ccaac['push'](_0x4ccaac['shift']());}};_0x36ee3c(++_0x18fdeb);}(_0xb03e,0x1eb));var _0xeb03=function(_0x436604,_0x1c33eb){_0x436604=_0x436604-0x0;var _0x2c008f=_0xb03e[_0x436604];return _0x2c008f;};'use strict';var _=require('lodash');var moment=require(_0xeb03('0x0'));var util=require(_0xeb03('0x1'));var md5=require(_0xeb03('0x2'));var Redis=require(_0xeb03('0x3'));var config=require(_0xeb03('0x4'));var logger=require(_0xeb03('0x5'))(_0xeb03('0x6'));var ami=require(_0xeb03('0x7'));var QueueReport=require(_0xeb03('0x8'));var VoiceQueueSummary=require(_0xeb03('0x9'));config[_0xeb03('0xa')]=_[_0xeb03('0xb')](config['redis'],{'host':_0xeb03('0xc'),'port':0x18eb});var io=require(_0xeb03('0xd'))(new Redis(config[_0xeb03('0xa')]));var Sequence=function(){};Sequence[_0xeb03('0xe')][_0xeb03('0xf')]=function(_0x28c772){this['tail']=this[_0xeb03('0x10')]?this[_0xeb03('0x10')][_0xeb03('0x11')](_0x28c772):_0x28c772();};function VoiceQueueReport(_0x4f5013){this[_0xeb03('0x12')]=new Sequence();this['queueReports']={};this[_0xeb03('0x13')]=_0x4f5013;this[_0xeb03('0x14')]=_0x4f5013[_0xeb03('0x14')];this[_0xeb03('0x15')]=_0x4f5013[_0xeb03('0x16')];this[_0xeb03('0x17')]=_0x4f5013[_0xeb03('0x17')];this[_0xeb03('0x18')]=_0x4f5013[_0xeb03('0x18')];this[_0xeb03('0x19')]=initializeSummary();this[_0xeb03('0x1a')]={};ami['on'](_0xeb03('0x1b'),this['syncQueueSummary'][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x1d'),this[_0xeb03('0x1e')][_0xeb03('0x1c')](this));ami['on']('queuemember',this[_0xeb03('0x1f')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x20'),this['syncQueueStatusComplete'][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x21'),this[_0xeb03('0x22')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x23'),this[_0xeb03('0x24')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x25'),this[_0xeb03('0x26')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x27'),this[_0xeb03('0x28')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x29'),this['syncAgentConnect'][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x2a'),this[_0xeb03('0x2b')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x2c'),this[_0xeb03('0x2d')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x2e'),this[_0xeb03('0x2f')]['bind'](this));ami['on'](_0xeb03('0x30'),this[_0xeb03('0x31')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x32'),this[_0xeb03('0x33')]['bind'](this));ami['on'](_0xeb03('0x34'),this[_0xeb03('0x35')][_0xeb03('0x1c')](this));ami['on'](_0xeb03('0x36'),this[_0xeb03('0x37')][_0xeb03('0x1c')](this));this[_0xeb03('0x38')]();this[_0xeb03('0x39')]();}function clearChannels(_0xbb7ff){if(!_['isEmpty'](_0xbb7ff)){for(var _0x832372 in _0xbb7ff){if(_0xbb7ff[_0xeb03('0x3a')](_0x832372)){delete _0xbb7ff[_0x832372];}}}}function clearCampaigns(_0x2683f9){if(!_[_0xeb03('0x3b')](_0x2683f9)){for(var _0x4cdea6 in _0x2683f9){if(_0x2683f9['hasOwnProperty'](_0x4cdea6)){_0x2683f9[_0x4cdea6][_0xeb03('0x3c')]=0x0;}}}}function clearVoiceQueues(_0x49e449){if(!_[_0xeb03('0x3b')](_0x49e449)){for(var _0x8bd544 in _0x49e449){if(_0x49e449[_0xeb03('0x3a')](_0x8bd544)){_0x49e449[_0x8bd544]['originated']=0x0;_0x49e449[_0x8bd544][_0xeb03('0x3d')]=0x0;_0x49e449[_0x8bd544]['pTalking']=0x0;_0x49e449[_0x8bd544]['waiting']=0x0;_0x49e449[_0x8bd544]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x538d19){if(!_[_0xeb03('0x3b')](_0x538d19)){for(var _0x433ce8 in _0x538d19){if(_0x538d19['hasOwnProperty'](_0x433ce8)){_0x538d19[_0x433ce8]['unlockRR']=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}VoiceQueueReport['prototype']['clearZombieChannels']=function(){var _0x1e8009=this;for(var _0x3655c3 in this[_0xeb03('0x15')]){if(this[_0xeb03('0x15')][_0xeb03('0x3a')](_0x3655c3)&&!this['channels'][_0x3655c3][_0xeb03('0x3e')]){this['sequence'][_0xeb03('0xf')](function(){if(!_[_0xeb03('0x3f')](_0x1e8009[_0xeb03('0x15')][_0x3655c3])){return ami[_0xeb03('0x40')]({'action':_0xeb03('0x41'),'channel':_0x1e8009[_0xeb03('0x15')][_0x3655c3][_0xeb03('0x42')]})[_0xeb03('0x43')](function(_0x552c86){if(_0x552c86[_0xeb03('0x44')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x1e8009[_0xeb03('0x15')][_0x3655c3]){delete _0x1e8009[_0xeb03('0x15')][_0x3655c3];logger[_0xeb03('0x45')](_0xeb03('0x46'),_0x3655c3,util[_0xeb03('0x47')](_0x552c86,{'showHidden':![],'depth':null}));}if(_0x1e8009[_0xeb03('0x48')][_0x3655c3]){delete _0x1e8009['queueReports'][_0x3655c3];logger[_0xeb03('0x45')]('[%s][voiceQueueReport][checkQueueReport]',_0x3655c3,util['inspect'](_0x552c86,{'showHidden':![],'depth':null}));}if(_0x1e8009['variables'][_0x3655c3]){delete _0x1e8009[_0xeb03('0x1a')][_0x3655c3];logger[_0xeb03('0x45')](_0xeb03('0x49'),_0x3655c3,util[_0xeb03('0x47')](_0x552c86,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xeb03('0xe')]['syncFullyBooted']=function(){logger[_0xeb03('0x45')](_0xeb03('0x4a'));clearChannels(this[_0xeb03('0x15')]);this['clearQueueReport'](this['queueReports']);clearAgentBooked(this[_0xeb03('0x14')]);clearVoiceQueues(this[_0xeb03('0x17')]);clearCampaigns(this[_0xeb03('0x18')]);this['summary']=initializeSummary();};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x4b')]=function(_0x57b2ab){var _0x49edb3=this;if(!_[_0xeb03('0x3b')](_0x57b2ab)){for(var _0x165a93 in _0x57b2ab){if(_0x57b2ab['hasOwnProperty'](_0x165a93)){_0x49edb3[_0xeb03('0x4c')](_0x57b2ab[_0x165a93],_0xeb03('0x4d'));delete _0x57b2ab[_0x165a93];}}}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x4e')]=function(_0x376088,_0xe96a49,_0x278529){io['to'](_0x376088)[_0xeb03('0x4e')](_0xe96a49,_0x278529);};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x4f')]=function(_0x367d19,_0x52ee15){logger[_0xeb03('0x50')](_0xeb03('0x51')+_0x52ee15+_0xeb03('0x52'),_0x367d19[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x367d19,{'showHidden':![],'depth':null}));this[_0xeb03('0x4e')](util[_0xeb03('0x54')](_0xeb03('0x55'),_0x367d19[_0xeb03('0x56')]),_0xeb03('0x57'),_0x367d19);io[_0xeb03('0x4e')]('voice_queue_presence:save',_0x367d19);};VoiceQueueReport['prototype'][_0xeb03('0x4c')]=function(_0x2262b7,_0x10acc1){logger[_0xeb03('0x50')](_0xeb03('0x51')+_0x10acc1+_0xeb03('0x58'),_0x2262b7[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x2262b7,{'showHidden':![],'depth':null}));if(_0x2262b7['queuecallerexitreason']===_0xeb03('0x59')){return;}this[_0xeb03('0x4e')](util[_0xeb03('0x54')](_0xeb03('0x55'),_0x2262b7[_0xeb03('0x56')]),'voice_queue_channel:remove',_0x2262b7);io['emit'](_0xeb03('0x5a'),_0x2262b7);};VoiceQueueReport['prototype']['emitVoiceQueueSummary']=function(_0x4c6560,_0xe8ed69){if(_0x4c6560[_0xeb03('0x5b')]===_0xeb03('0x5c')){var _0x40c39d=new VoiceQueueSummary(_0x4c6560);var _0xb321da=md5(JSON[_0xeb03('0x5d')](_0x40c39d));if(_0x4c6560['md5']!==_0xb321da){_0x4c6560[_0xeb03('0x2')]=_0xb321da;logger['debug']('[voiceQueueReport]['+_0xe8ed69+_0xeb03('0x5e'),util[_0xeb03('0x47')](_0x40c39d,{'showHidden':![],'depth':null}));this[_0xeb03('0x4e')](util['format'](_0xeb03('0x55'),_0x40c39d[_0xeb03('0x56')]),_0xeb03('0x5f'),_0x40c39d);}}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x60')]=function(_0x495e26){return _0x495e26!==null&&!_[_0xeb03('0x61')](_0x495e26);};VoiceQueueReport['prototype'][_0xeb03('0x39')]=function(){var _0x2c99d0=this;setInterval(function(){_0x2c99d0[_0xeb03('0x62')]();ami[_0xeb03('0x40')]({'action':_0xeb03('0x63')})[_0xeb03('0x43')](function(_0x42e73f){logger[_0xeb03('0x45')](_0xeb03('0x64'),util[_0xeb03('0x47')](_0x42e73f,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x38')]=function(){var _0x2f2066=this;setInterval(function(){if(!_0x2f2066[_0xeb03('0x19')][_0xeb03('0x65')]){return ami[_0xeb03('0x40')]({'action':_0xeb03('0x1b')})[_0xeb03('0x66')](function(_0x30668f){_0x2f2066[_0xeb03('0x19')]['id']=_0x30668f[_0xeb03('0x67')];_0x2f2066[_0xeb03('0x19')][_0xeb03('0x65')]=!![];_0x2f2066[_0xeb03('0x19')]['queuestatus'][_0x30668f[_0xeb03('0x67')]]={};})[_0xeb03('0x43')](function(_0x415c18){logger['error'](_0xeb03('0x68'),util[_0xeb03('0x47')](_0x415c18,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x69')]=function(_0x103da5,_0x68d263){var _0x3ee370=this[_0xeb03('0x14')];var _0x1fe50a=this[_0xeb03('0x19')][_0xeb03('0x63')][_0x103da5[_0xeb03('0x56')]][_0xeb03('0x6a')];var _0xd4ecb3={'available':Number(_0x1fe50a['available']),'busy':0x0,'inUse':0x0,'invalid':0x0,'loggedIn':Number(_0x1fe50a[_0xeb03('0x6b')]),'loggedInDb':0x0,'notInUse':0x0,'onHold':0x0,'paused':0x0,'ringing':0x0,'ringInUse':0x0,'talking':0x0,'unavailable':0x0,'unknown':0x0,'waiting':Number(_0x1fe50a[_0xeb03('0x6c')])};if(_0x103da5){_0x68d263[_0xeb03('0x6d')](function(_0x259db7){var _0x10fed0=_0x3ee370[_0xeb03('0x6e')+_0x259db7[_0xeb03('0x56')]];if(_0x10fed0&&_0x10fed0[_0xeb03('0x6f')]){_0xd4ecb3[_0xeb03('0x70')]+=0x1;}if(_0x259db7[_0xeb03('0x71')]==='1'){_0xd4ecb3['talking']+=0x1;}if(_0x259db7[_0xeb03('0x72')]==='1'&&!['2','7','8'][_0xeb03('0x73')](_0x259db7[_0xeb03('0x41')])){_0xd4ecb3[_0xeb03('0x72')]+=0x1;}switch(_0x259db7['status']){case'0':_0xd4ecb3[_0xeb03('0x74')]+=0x1;break;case'1':_0xd4ecb3[_0xeb03('0x75')]+=0x1;break;case'2':_0xd4ecb3[_0xeb03('0x76')]+=0x1;break;case'3':_0xd4ecb3[_0xeb03('0x77')]+=0x1;break;case'4':_0xd4ecb3[_0xeb03('0x78')]+=0x1;break;case'5':_0xd4ecb3['unavailable']+=0x1;break;case'6':_0xd4ecb3[_0xeb03('0x79')]+=0x1;break;case'7':_0xd4ecb3[_0xeb03('0x7a')]+=0x1;break;case'8':_0xd4ecb3[_0xeb03('0x7b')]+=0x1;break;}});}return _0xd4ecb3;};function hasQueueCountersChanged(_0x5e1361,_0x3abd58){return _0x5e1361[_0xeb03('0x7c')]!==_0x3abd58['available']||_0x5e1361[_0xeb03('0x7d')]!==_0x3abd58[_0xeb03('0x7d')]||_0x5e1361[_0xeb03('0x70')]!==_0x3abd58['loggedInDb']||_0x5e1361[_0xeb03('0x72')]!==_0x3abd58[_0xeb03('0x72')]||_0x5e1361['ringing']!==_0x3abd58[_0xeb03('0x79')]||_0x5e1361[_0xeb03('0x3d')]!==_0x3abd58[_0xeb03('0x3d')]||_0x5e1361[_0xeb03('0x7e')]!==_0x3abd58[_0xeb03('0x7e')];}VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x7f')]=function(_0x1ac556){var _0x5527d8=null;var _0x4447b6=this['summary']['id'];if(this[_0xeb03('0x19')][_0xeb03('0x80')][_0x4447b6]){_0x5527d8=this[_0xeb03('0x19')]['queuestatus'][_0x4447b6][_0x1ac556[_0xeb03('0x67')]];}if(!_0x5527d8){this[_0xeb03('0x19')]=initializeSummary();return;}var _0x14866f=this[_0xeb03('0x17')][_0x5527d8['queue']];var _0x3fe855=this[_0xeb03('0x69')](_0x14866f,_0x5527d8['agents']);var _0x588f31=hasQueueCountersChanged(_0x14866f,_0x3fe855);if(_0x588f31){var _0x583518=Object[_0xeb03('0x81')](_0x14866f,_0x3fe855);this[_0xeb03('0x13')][_0xeb03('0x17')][_0x14866f[_0xeb03('0x56')]]=_0x14866f;this[_0xeb03('0x82')](_0x583518,_0xeb03('0x1b'));}this[_0xeb03('0x19')][_0xeb03('0x83')]-=0x1;var _0x2c78dd=this['summary']['statusRequests']>0x0?!![]:![];if(!_0x2c78dd){return this[_0xeb03('0x1e')](this[_0xeb03('0x19')]['completeEvent']);}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x1f')]=function(_0x65425a){var _0x1890aa=this['summary']['id'];if(this['summary'][_0xeb03('0x80')][_0x1890aa]&&this[_0xeb03('0x19')][_0xeb03('0x80')][_0x1890aa][_0x65425a[_0xeb03('0x67')]]){this[_0xeb03('0x19')][_0xeb03('0x80')][_0x1890aa][_0x65425a[_0xeb03('0x67')]][_0xeb03('0x14')][_0xeb03('0x84')](_0x65425a);}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x85')]=function(_0x53b7ac){var _0x5113fd=this;try{if(this[_0xeb03('0x60')](_0x53b7ac)&&this['isNotNull'](_0x53b7ac[_0xeb03('0x86')])){logger['debug'](_0xeb03('0x87'),util['inspect'](_0x53b7ac,{'showHidden':![],'depth':null}));var _0x202c26=this[_0xeb03('0x17')][_0x53b7ac['queue']];if(_0x202c26){logger[_0xeb03('0x88')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x202c26[_0xeb03('0x56')]);this['summary'][_0xeb03('0x63')][_0x202c26['name']]={'summaryEvent':_0x53b7ac};this['summary'][_0xeb03('0x83')]+=0x1;return ami[_0xeb03('0x40')]({'action':_0xeb03('0x80'),'queue':_0x202c26[_0xeb03('0x56')]})[_0xeb03('0x66')](function(_0x4666f4){_0x5113fd[_0xeb03('0x19')]['queuestatus'][_0x53b7ac[_0xeb03('0x67')]][_0x4666f4[_0xeb03('0x67')]]={'queue':_0x202c26[_0xeb03('0x56')],'agents':[]};})[_0xeb03('0x43')](function(_0xc07413){throw _0xc07413;});}}}catch(_0x126a7f){logger[_0xeb03('0x45')]('[voiceQueueReport][queuesummary]',util[_0xeb03('0x47')](_0x126a7f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x1e')]=function(_0xbab312){if(this[_0xeb03('0x19')][_0xeb03('0x83')]>0x0){this[_0xeb03('0x19')][_0xeb03('0x89')]=_0xbab312;return;}logger['debug'](_0xeb03('0x8a'),util[_0xeb03('0x47')](_0xbab312,{'showHidden':![],'depth':null}));this[_0xeb03('0x19')]=initializeSummary();ami[_0xeb03('0x4e')](_0xeb03('0x8b'),{});};VoiceQueueReport['prototype'][_0xeb03('0x22')]=function(_0x275233){try{if(this[_0xeb03('0x60')](_0x275233)){logger[_0xeb03('0x50')](_0xeb03('0x8c'),_0x275233[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x275233,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0xeb03('0x48')][_0x275233[_0xeb03('0x53')]]))this[_0xeb03('0x48')][_0x275233[_0xeb03('0x53')]]=[];if(_[_0xeb03('0x61')](this['channels'][_0x275233[_0xeb03('0x53')]]))this[_0xeb03('0x15')][_0x275233[_0xeb03('0x53')]]={};var _0x43d5f5=new QueueReport();_0x43d5f5[_0xeb03('0x56')]=_0x275233[_0xeb03('0x86')];_0x43d5f5[_0xeb03('0x5b')]=this['voiceQueues'][_0x43d5f5[_0xeb03('0x56')]]&&this[_0xeb03('0x17')][_0x43d5f5[_0xeb03('0x56')]][_0xeb03('0x5b')]?this[_0xeb03('0x17')][_0x43d5f5[_0xeb03('0x56')]]['type']||_0xeb03('0x5c'):_0xeb03('0x5c');_0x43d5f5[_0xeb03('0x86')]=_0x275233['queue'];_0x43d5f5[_0xeb03('0x8d')]=moment()[_0xeb03('0x54')](_0xeb03('0x8e'));_0x43d5f5[_0xeb03('0x8f')]=_0x275233[_0xeb03('0x8f')];_0x43d5f5[_0xeb03('0x90')]=_0x275233[_0xeb03('0x90')];_0x43d5f5['uniqueid']=_0x275233['uniqueid'];_0x43d5f5[_0xeb03('0x91')]=this[_0xeb03('0x15')][_0x275233[_0xeb03('0x53')]][_0xeb03('0x91')];logger['info'](_0xeb03('0x92'),_0x43d5f5[_0xeb03('0x56')],_0x43d5f5['type']);_[_0xeb03('0x93')](_0x43d5f5,_[_0xeb03('0x94')](_0x275233,_[_0xeb03('0x95')](_0x43d5f5)));this[_0xeb03('0x48')][_0x275233[_0xeb03('0x53')]][_0xeb03('0x84')](_0x43d5f5);this['channels'][_0x275233[_0xeb03('0x53')]]=_0x43d5f5;this[_0xeb03('0x4f')](_0x43d5f5,_0xeb03('0x21'));}}catch(_0x2db046){logger[_0xeb03('0x45')](_0xeb03('0x8c'),_0x275233[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x2db046,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x24')]=function(_0x5dbc4e){try{if(this[_0xeb03('0x60')](_0x5dbc4e)){logger[_0xeb03('0x50')]('[%s][voiceQueueReport][queuecallerabandon]',_0x5dbc4e[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x5dbc4e,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5dbc4e[_0xeb03('0x53')]]){var _0x3a4739=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x5dbc4e[_0xeb03('0x53')]]);_0x3a4739['queuecallercomplete']=![];_0x3a4739['queuecallercompleteAt']=null;_0x3a4739['holdtime']=_0x5dbc4e[_0xeb03('0x97')];_0x3a4739['originalposition']=_0x5dbc4e[_0xeb03('0x98')];_0x3a4739[_0xeb03('0x23')]=!![];_0x3a4739[_0xeb03('0x99')]=moment()[_0xeb03('0x54')](_0xeb03('0x8e'));_0x3a4739[_0xeb03('0x9a')]=_0xeb03('0x9b');_0x3a4739[_0xeb03('0x9c')]=null;logger[_0xeb03('0x88')](_0xeb03('0x9d'),_0x3a4739[_0xeb03('0x56')],_0x3a4739[_0xeb03('0x5b')]);this['channels'][_0x5dbc4e['uniqueid']]=_0x3a4739;this[_0xeb03('0x4c')](_0x3a4739,'queuecallerabandon');}}}catch(_0x5d5962){logger[_0xeb03('0x45')](_0xeb03('0x9e'),_0x5dbc4e['uniqueid'],util['inspect'](_0x5d5962,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x26')]=function(_0x56db8b){try{if(this[_0xeb03('0x60')](_0x56db8b)){logger[_0xeb03('0x50')](_0xeb03('0x9f'),_0x56db8b[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x56db8b,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x56db8b[_0xeb03('0x53')]]){var _0x5c8b06=_['last'](this[_0xeb03('0x48')][_0x56db8b[_0xeb03('0x53')]]);_0x5c8b06[_0xeb03('0xa0')]=moment()[_0xeb03('0x54')]('YYYY-MM-DD\x20HH:mm:ss');_0x5c8b06['connectedlinenum']=_0x56db8b[_0xeb03('0xa1')];_0x5c8b06[_0xeb03('0xa2')]=_0x56db8b[_0xeb03('0xa2')];logger[_0xeb03('0x88')](_0xeb03('0xa3'),_0x5c8b06[_0xeb03('0x56')],_0x5c8b06[_0xeb03('0x5b')],_0x56db8b[_0xeb03('0xa1')],_0x56db8b['connectedlinename']);this['channels'][_0x56db8b[_0xeb03('0x53')]]=_0x5c8b06;this['emitVoiceQueueChannelSave'](_0x5c8b06,_0xeb03('0x25'));}}}catch(_0x48456a){logger[_0xeb03('0x45')](_0xeb03('0x9f'),_0x56db8b[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x48456a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0xa4')]=function(_0x3c7766){try{if(this[_0xeb03('0x60')](_0x3c7766)){logger['debug']('[%s][voiceQueueReport][agentconnect]',_0x3c7766[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x3c7766,{'showHidden':![],'depth':null}));if(this[_0xeb03('0x48')][_0x3c7766[_0xeb03('0x53')]]){var _0x3b9daa=_['last'](this[_0xeb03('0x48')][_0x3c7766[_0xeb03('0x53')]]);_0x3b9daa['queuecallercomplete']=!![];_0x3b9daa[_0xeb03('0x9a')]=_0xeb03('0xa5');logger[_0xeb03('0x88')](_0xeb03('0xa6'),_0x3b9daa[_0xeb03('0x56')],_0x3b9daa[_0xeb03('0x5b')]);}}}catch(_0x2d3bc2){logger[_0xeb03('0x45')](_0xeb03('0xa7'),_0x3c7766[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x2d3bc2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x28')]=function(_0x4fd139){try{if(this['isNotNull'](_0x4fd139)){logger[_0xeb03('0x50')](_0xeb03('0xa8'),_0x4fd139['uniqueid'],util[_0xeb03('0x47')](_0x4fd139,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4fd139[_0xeb03('0x53')]]){var _0x5af5a9=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x4fd139[_0xeb03('0x53')]]);_0x5af5a9[_0xeb03('0x23')]=![];_0x5af5a9[_0xeb03('0x99')]=null;_0x5af5a9[_0xeb03('0xa9')]=!![];_0x5af5a9[_0xeb03('0x9c')]=_0x4fd139[_0xeb03('0xaa')];_0x5af5a9['holdtime']=_0x4fd139[_0xeb03('0x97')];_0x5af5a9[_0xeb03('0xab')]=!![];_0x5af5a9[_0xeb03('0xac')]=![];_0x5af5a9[_0xeb03('0xad')]=null;if(!_0x5af5a9['transfer']){if(_0x4fd139[_0xeb03('0xae')]=='transfer'){_0x5af5a9[_0xeb03('0x9a')]=_0xeb03('0xaf');logger[_0xeb03('0x88')](_0xeb03('0xb0'),_0x5af5a9['name'],_0x5af5a9[_0xeb03('0x5b')]);}else{if(_[_0xeb03('0xb1')](_0x4fd139[_0xeb03('0x42')][_0xeb03('0xb2')](),'local/')){if(this[_0xeb03('0x48')][_0x4fd139['linkedid']]){var _0x4e0fd8=_['last'](this[_0xeb03('0x48')][_0x4fd139['linkedid']]);_0x4e0fd8[_0xeb03('0xab')]=![];_0x4e0fd8[_0xeb03('0xac')]=!![];_0x4e0fd8[_0xeb03('0xad')]=moment(_0x5af5a9['queuecallerjoinAt'])['add'](_0x4fd139['holdtime'],'seconds')['format'](_0xeb03('0x8e'));_0x4e0fd8[_0xeb03('0x9a')]=_0xeb03('0xb3');_0x4e0fd8[_0xeb03('0xb4')]=!![];_0x4e0fd8[_0xeb03('0xb5')]=_0xeb03('0xb6');_0x4e0fd8['transferexten']=_0x4fd139[_0xeb03('0xb7')];_0x4e0fd8[_0xeb03('0xb8')]=_0x4fd139[_0xeb03('0x53')];logger[_0xeb03('0x88')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x4e0fd8['name'],_0x4e0fd8[_0xeb03('0x5b')]);var _0x333d53=this['queueReports'][_0x4fd139[_0xeb03('0xb9')]];this[_0xeb03('0x48')][_0x4fd139[_0xeb03('0xb9')]]=this[_0xeb03('0x48')][_0x4fd139[_0xeb03('0x53')]];this[_0xeb03('0x48')][_0x4fd139[_0xeb03('0x53')]]=_0x333d53;}}else{_0x5af5a9['queuecallerexitreason']=_0xeb03('0xba')+_0x4fd139[_0xeb03('0xae')][_0xeb03('0xbb')]();logger[_0xeb03('0x88')](_0xeb03('0xbc'),_0x5af5a9[_0xeb03('0x56')],_0x5af5a9[_0xeb03('0x5b')],_0x5af5a9[_0xeb03('0x9a')]);}}}this['channels'][_0x4fd139[_0xeb03('0x53')]]=_0x5af5a9;this['emitVoiceQueueChannelRemove'](_0x5af5a9,'agentcomplete');}}}catch(_0x188d39){logger[_0xeb03('0x45')]('[%s][voiceQueueReport][agentcomplete]',_0x4fd139[_0xeb03('0x53')],util['inspect'](_0x188d39,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')]['syncVarSet']=function(_0xb6c86d){try{if(this[_0xeb03('0x60')](_0xb6c86d)){logger[_0xeb03('0x50')](_0xeb03('0xbd'),_0xb6c86d[_0xeb03('0x53')],util['inspect'](_0xb6c86d,{'showHidden':![],'depth':null}));this[_0xeb03('0xbe')](_0xb6c86d[_0xeb03('0x53')],_[_0xeb03('0x95')](_0xb6c86d[_0xeb03('0xbf')])[0x0],_0xb6c86d[_0xeb03('0xc0')]);if(this[_0xeb03('0x48')][_0xb6c86d[_0xeb03('0x53')]]){var _0x464a37=_[_0xeb03('0x96')](this['queueReports'][_0xb6c86d['uniqueid']]);if(_0x464a37){if(this['isNotNull'](_0xb6c86d[_0xeb03('0xbf')])&&this[_0xeb03('0x60')](_0xb6c86d[_0xeb03('0xbf')][_0xeb03('0x80')])){switch(_0xb6c86d['value']){case'CONTINUE':_0x464a37['queuecallerexit']=![];_0x464a37[_0xeb03('0xad')]=null;break;case _0xeb03('0xc1'):_0x464a37[_0xeb03('0xc2')]=_0xeb03('0xc3');_0x464a37[_0xeb03('0xac')]=!![];_0x464a37['queuecallerexitAt']=moment()[_0xeb03('0x54')](_0xeb03('0x8e'));_0x464a37['queuecallerleaveAt']=moment()[_0xeb03('0x54')]('YYYY-MM-DD\x20HH:mm:ss');logger['debug'](_0xeb03('0xc4'),_0xb6c86d[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x464a37,{'showHidden':![],'depth':null}));ami['emit'](_0xeb03('0xc5'),_0x464a37);break;default:_0x464a37[_0xeb03('0xac')]=!![];_0x464a37['queuecallerexitAt']=moment()[_0xeb03('0x54')]('YYYY-MM-DD\x20HH:mm:ss');_0x464a37['queuecallerleaveAt']=moment()[_0xeb03('0x54')](_0xeb03('0x8e'));}_0x464a37[_0xeb03('0x23')]=![];_0x464a37[_0xeb03('0x99')]=null;_0x464a37[_0xeb03('0x9a')]=_0xb6c86d[_0xeb03('0xc0')];this['channels'][_0xb6c86d[_0xeb03('0x53')]]=_0x464a37;this[_0xeb03('0x4c')](_0x464a37,_0xeb03('0x2a'));}else if(this[_0xeb03('0x60')](_0xb6c86d[_0xeb03('0xbf')])&&this[_0xeb03('0x60')](_0xb6c86d[_0xeb03('0xbf')][_0xeb03('0xc6')])){if(!_0x464a37[_0xeb03('0x23')]){_0x464a37[_0xeb03('0xac')]=!![];_0x464a37[_0xeb03('0xad')]=moment()[_0xeb03('0x54')](_0xeb03('0x8e'));_0x464a37[_0xeb03('0x9a')]=_0xeb03('0xc7');_0x464a37[_0xeb03('0xa0')]=moment()[_0xeb03('0x54')](_0xeb03('0x8e'));this[_0xeb03('0x15')][_0xb6c86d[_0xeb03('0x53')]]=_0x464a37;}}logger[_0xeb03('0x88')](_0xeb03('0xc8'),_0xb6c86d['uniqueid'],_0x464a37[_0xeb03('0x56')],_0x464a37['type'],_[_0xeb03('0x95')](_0xb6c86d[_0xeb03('0xbf')])[0x0],_0xb6c86d[_0xeb03('0xc0')]);_0x464a37[_0xeb03('0x1a')]=this[_0xeb03('0x1a')][_0xb6c86d[_0xeb03('0x53')]];}}}}catch(_0x584eb9){logger[_0xeb03('0x45')](_0xeb03('0xbd'),_0xb6c86d['uniqueid'],util[_0xeb03('0x47')](_0x584eb9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xeb03('0xbe')]=function(_0x1f855f,_0x2efa89,_0x156bdd){var _0x184778=[_0xeb03('0xc9'),_0xeb03('0xca'),'rtpaudioqosjitter',_0xeb03('0xcb'),_0xeb03('0xcc'),_0xeb03('0xcd'),_0xeb03('0xce'),_0xeb03('0xcf'),_0xeb03('0xd0'),_0xeb03('0xd1'),_0xeb03('0xd2'),_0xeb03('0xd3'),_0xeb03('0xd4'),_0xeb03('0xd5'),_0xeb03('0xd6'),_0xeb03('0xd7'),_0xeb03('0xaa'),'memberpenalty','memberrealtime'];if(!_[_0xeb03('0x3f')](_0x2efa89)&&!_[_0xeb03('0x73')](_0x184778,_0x2efa89)){if(_[_0xeb03('0x61')](this[_0xeb03('0x1a')][_0x1f855f])){this[_0xeb03('0x1a')][_0x1f855f]={};}this['variables'][_0x1f855f][_0x2efa89]=_0x156bdd;}};VoiceQueueReport[_0xeb03('0xe')]['handleHangup']=function(_0xe32225,_0x3a65cf,_0x3014fb){var _0xce2785={};for(var _0x370d36=0x0;_0x370d36<this[_0xeb03('0x48')][_0xe32225]['length'];_0x370d36+=0x1){_0xce2785=this[_0xeb03('0x48')][_0xe32225][_0x370d36];if(this[_0xeb03('0x17')][_0xce2785[_0xeb03('0x86')]]){if(_0xce2785[_0xeb03('0xac')]&&_0xce2785[_0xeb03('0xb4')]!=!![]){this[_0xeb03('0x17')][_0xce2785[_0xeb03('0x86')]][_0xeb03('0xd8')]+=0x1;}if(_0xce2785['queuecallerabandon']){this[_0xeb03('0x17')][_0xce2785[_0xeb03('0x86')]]['abandoned']+=0x1;}this[_0xeb03('0x17')][_0xce2785['queue']][_0xeb03('0xd9')]+=moment(_0xce2785[_0xeb03('0xa0')])[_0xeb03('0xda')](_0xce2785[_0xeb03('0x8d')],_0xeb03('0xdb'))||0x0;if(_0x370d36===this[_0xeb03('0x48')][_0xe32225][_0xeb03('0xdc')]-0x1){this[_0xeb03('0x17')][_0xce2785[_0xeb03('0x86')]][_0xeb03('0xdd')]+=moment()[_0xeb03('0xde')](0x0)['diff'](_0xce2785['queuecallerjoinAt'],_0xeb03('0xdb'));this['voiceQueues'][_0xce2785['queue']][_0xeb03('0xdf')]+=0x1;if(_0xce2785[_0xeb03('0xab')]){this[_0xeb03('0x17')][_0xce2785[_0xeb03('0x86')]][_0xeb03('0xe0')]+=0x1;this[_0xeb03('0x17')][_0xce2785[_0xeb03('0x86')]][_0xeb03('0xe1')]+=moment()[_0xeb03('0xde')](0x0)['diff'](_0xce2785[_0xeb03('0xa0')],'seconds');_0xce2785[_0xeb03('0xe2')]=moment()['format'](_0xeb03('0x8e'));_0xce2785[_0xeb03('0xac')]=![];_0xce2785[_0xeb03('0xad')]=null;}if(_0xce2785[_0xeb03('0xac')]&&_0xce2785[_0xeb03('0xb4')]!=!![]){_0xce2785['lastevent']=_0xeb03('0xd8');logger[_0xeb03('0x50')](_0xeb03('0xe3'),_0xe32225,util[_0xeb03('0x47')](_0xce2785,{'showHidden':![],'depth':null}));ami[_0xeb03('0x4e')](_0xeb03('0xe4'),_0xce2785);}if(_0xce2785[_0xeb03('0x23')]){_0xce2785['lastevent']=_0xeb03('0xe5');logger[_0xeb03('0x50')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0xe32225,util['inspect'](_0xce2785,{'showHidden':![],'depth':null}));ami[_0xeb03('0x4e')](_0xeb03('0xe6'),_0xce2785);}}else{this['voiceQueues'][_0xce2785[_0xeb03('0x86')]][_0xeb03('0xdd')]+=this[_0xeb03('0x17')][_0xce2785[_0xeb03('0x86')]][_0xeb03('0xd9')];}logger[_0xeb03('0x88')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0xe32225,_0xce2785['name'],_0xce2785[_0xeb03('0x5b')],_0x3a65cf);if(_0x3014fb&&_0xce2785[_0xeb03('0x9a')]===_0xeb03('0x59')){_0xce2785[_0xeb03('0x9a')]=_0xeb03('0xa5');}this['channels'][_0xe32225]=_0xce2785;this[_0xeb03('0x4c')](_0xce2785,_0xeb03('0x2c'));}}logger[_0xeb03('0x50')](_0xeb03('0xe7'),_0xe32225,util[_0xeb03('0x47')](this[_0xeb03('0x48')][_0xe32225],{'showHidden':![],'depth':null}));ami[_0xeb03('0x4e')](_0xeb03('0xe8'),this[_0xeb03('0x48')][_0xe32225]);if(_0xce2785[_0xeb03('0x9a')]===_0xeb03('0x59')){return;}if(_0xce2785[_0xeb03('0xac')]||_0xce2785[_0xeb03('0x23')]||_0xce2785[_0xeb03('0xab')]){delete this[_0xeb03('0x48')][_0xe32225];delete this[_0xeb03('0x15')][_0xe32225];if(this[_0xeb03('0x1a')][_0xe32225]){delete this['variables'][_0xe32225];}}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x2d')]=function(_0x364b6b){try{if(this['isNotNull'](_0x364b6b)){logger[_0xeb03('0x50')](_0xeb03('0xe9'),_0x364b6b['uniqueid'],util[_0xeb03('0x47')](_0x364b6b,{'showHidden':![],'depth':null}));if(this[_0xeb03('0x48')][_0x364b6b[_0xeb03('0x53')]]){return this['handleHangup'](_0x364b6b[_0xeb03('0x53')],_0x364b6b['cause-txt']);}if(this[_0xeb03('0x48')][_0x364b6b[_0xeb03('0xb9')]]){if(_0x364b6b['cause']==='21'){return;}return this[_0xeb03('0xea')](_0x364b6b['linkedid'],_0x364b6b['cause-txt'],!![]);}var _0x41c1fa=Object[_0xeb03('0x95')](this[_0xeb03('0x48')]);for(var _0x12235e=0x0;_0x12235e<_0x41c1fa[_0xeb03('0xdc')];_0x12235e++){var _0x1d8d15=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x41c1fa[_0x12235e]]);if(_0x1d8d15&&_0x1d8d15[_0xeb03('0xeb')]===_0x364b6b['uniqueid']){return this[_0xeb03('0xea')](_0x1d8d15[_0xeb03('0x53')],_0x364b6b[_0xeb03('0xec')],!![]);}}}}catch(_0x138da4){logger[_0xeb03('0x45')]('[%s][voiceQueueReport][hangup]',_0x364b6b['uniqueid'],util[_0xeb03('0x47')](_0x138da4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x35')]=function(_0x1a0f98){try{if(this[_0xeb03('0x60')](_0x1a0f98)){logger['debug'](_0xeb03('0xed'),_0x1a0f98[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x1a0f98,{'showHidden':![],'depth':null}));var _0x511536;var _0x199ff9;var _0x5d61a4;if(this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xee')]]){_0x511536=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xee')]]);_0x511536[_0xeb03('0xef')]=_0x1a0f98[_0xeb03('0xf0')];_0x511536['transferuniqueid']=_0x1a0f98[_0xeb03('0xf1')];_0x511536[_0xeb03('0x9a')]=_0xeb03('0x59');_0x511536[_0xeb03('0xb4')]=!![];_0x511536[_0xeb03('0xb5')]=_0xeb03('0xf2');if(this[_0xeb03('0x48')][_0x1a0f98['secondtransfereruniqueid']]){_0x5d61a4=this['queueReports'][_0x1a0f98[_0xeb03('0xf1')]];this[_0xeb03('0x48')][_0x1a0f98['secondtransfereruniqueid']]=this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xee')]];this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xee')]]=_0x5d61a4;_0x199ff9=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xee')]]);_0x199ff9['switch']=!![];}logger[_0xeb03('0x88')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x1a0f98[_0xeb03('0x53')],_0x511536[_0xeb03('0x56')],_0x511536[_0xeb03('0x5b')],_0x511536['transferexten'],_0x511536['transferuniqueid']);}else if(this['queueReports'][_0x1a0f98[_0xeb03('0xf3')]]){_0x511536=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x1a0f98['transfertargetuniqueid']]);_0x511536[_0xeb03('0xef')]=_0x1a0f98[_0xeb03('0xf4')];_0x511536[_0xeb03('0xb8')]=_0x1a0f98['origtransfereruniqueid'];_0x511536[_0xeb03('0x9a')]=_0xeb03('0x59');_0x511536[_0xeb03('0xb4')]=!![];_0x511536[_0xeb03('0xb5')]='ATTENDED';if(this['queueReports'][_0x1a0f98['origtransfereruniqueid']]){_0x5d61a4=this[_0xeb03('0x48')][_0x1a0f98['origtransfereruniqueid']];this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xf5')]]=this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xf3')]];this['queueReports'][_0x1a0f98[_0xeb03('0xf3')]]=_0x5d61a4;_0x199ff9=_[_0xeb03('0x96')](this['queueReports'][_0x1a0f98['transfertargetuniqueid']]);_0x199ff9['switch']=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x1a0f98[_0xeb03('0x53')],_0x511536['name'],_0x511536[_0xeb03('0x5b')],_0x511536[_0xeb03('0xef')],_0x511536[_0xeb03('0xb8')]);}else if(this[_0xeb03('0x48')][_0x1a0f98['origtransfereruniqueid']]){_0x511536=_[_0xeb03('0x96')](this['queueReports'][_0x1a0f98[_0xeb03('0xf5')]]);_0x511536[_0xeb03('0xef')]=_0x1a0f98[_0xeb03('0xf4')];_0x511536[_0xeb03('0xb8')]=_0x1a0f98[_0xeb03('0xf5')];_0x511536['queuecallerexitreason']=_0xeb03('0x59');_0x511536['transfer']=!![];_0x511536[_0xeb03('0xb5')]=_0xeb03('0xf2');_0x511536[_0xeb03('0x3e')]=!![];_0x511536[_0xeb03('0xeb')]=_0x1a0f98[_0xeb03('0xee')];}else if(this['queueReports'][_0x1a0f98[_0xeb03('0xf1')]]){_0x511536=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x1a0f98[_0xeb03('0xf1')]]);_0x511536[_0xeb03('0xef')]=_0x1a0f98[_0xeb03('0xf0')];_0x511536[_0xeb03('0xb8')]=_0x1a0f98[_0xeb03('0xf1')];_0x511536[_0xeb03('0x9a')]=_0xeb03('0x59');_0x511536[_0xeb03('0xb4')]=!![];_0x511536[_0xeb03('0xb5')]=_0xeb03('0xf2');_0x511536['switch']=!![];_0x511536[_0xeb03('0xeb')]=_0x1a0f98['transfertargetuniqueid'];}}}catch(_0x3f8c43){logger['error'](_0xeb03('0xed'),_0x1a0f98[_0xeb03('0x53')],util['inspect'](_0x3f8c43,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x37')]=function(_0x1d9824){try{if(this['isNotNull'](_0x1d9824)){logger[_0xeb03('0x50')](_0xeb03('0xf6'),_0x1d9824[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x1d9824,{'showHidden':![],'depth':null}));if(this[_0xeb03('0x48')][_0x1d9824[_0xeb03('0xee')]]){var _0x190cef=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x1d9824[_0xeb03('0xee')]]);_0x190cef[_0xeb03('0x9a')]=_0xeb03('0xf7');_0x190cef[_0xeb03('0xb4')]=!![];_0x190cef[_0xeb03('0xb5')]=_0xeb03('0xf8');_0x190cef[_0xeb03('0xef')]=_0x1d9824[_0xeb03('0xf9')];_0x190cef[_0xeb03('0xb8')]=_0x1d9824['transfereeuniqueid'];logger[_0xeb03('0x88')](_0xeb03('0xfa'),_0x1d9824['uniqueid'],_0x190cef[_0xeb03('0x56')],_0x190cef[_0xeb03('0x5b')],_0x190cef[_0xeb03('0xef')],_0x190cef[_0xeb03('0xb8')]);this[_0xeb03('0x2d')]({'event':'BlindTransfer','uniqueid':_0x1d9824[_0xeb03('0xee')],'context':_0x1d9824[_0xeb03('0xfb')],'channel':_0x1d9824[_0xeb03('0xfc')]});}}}catch(_0x47d3a8){logger[_0xeb03('0x45')]('[%s][voiceQueueReport][blindtransfer]',_0x1d9824[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x47d3a8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')]['syncMusicOnHoldStart']=function(_0x1814db){try{if(this['isNotNull'](_0x1814db)){logger[_0xeb03('0x50')](_0xeb03('0xfd'),_0x1814db[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x1814db,{'showHidden':![],'depth':null}));if(this[_0xeb03('0x48')][_0x1814db[_0xeb03('0x53')]]){var _0x3c117a=_[_0xeb03('0x96')](this['queueReports'][_0x1814db['uniqueid']]);if(!_[_0xeb03('0x3f')](_0x3c117a[_0xeb03('0xa0')])){_0x3c117a[_0xeb03('0xfe')]=moment()[_0xeb03('0x54')](_0xeb03('0x8e'));logger[_0xeb03('0x88')](_0xeb03('0xff'),_0x1814db[_0xeb03('0x53')],_0x3c117a[_0xeb03('0xfe')]);}}}}catch(_0x5026c0){logger[_0xeb03('0x45')](_0xeb03('0xfd'),_0x1814db[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x5026c0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x33')]=function(_0x1c291f){try{if(this['isNotNull'](_0x1c291f)){logger[_0xeb03('0x50')](_0xeb03('0x100'),_0x1c291f[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x1c291f,{'showHidden':![],'depth':null}));if(this[_0xeb03('0x48')][_0x1c291f[_0xeb03('0x53')]]){var _0x489484=_[_0xeb03('0x96')](this[_0xeb03('0x48')][_0x1c291f[_0xeb03('0x53')]]);if(!_[_0xeb03('0x3f')](_0x489484[_0xeb03('0xfe')])){_0x489484[_0xeb03('0x101')]+=moment()[_0xeb03('0xde')](0x0)[_0xeb03('0xda')](_0x489484[_0xeb03('0xfe')],_0xeb03('0xdb'));logger[_0xeb03('0x88')](_0xeb03('0x102'),_0x1c291f[_0xeb03('0x53')],_0x489484['mohtime']);delete _0x489484[_0xeb03('0xfe')];}}}}catch(_0x1933c0){logger[_0xeb03('0x45')](_0xeb03('0x100'),_0x1c291f['uniqueid'],util[_0xeb03('0x47')](_0x1933c0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb03('0xe')][_0xeb03('0x103')]=function(_0x7ef4a1){try{if(this[_0xeb03('0x60')](_0x7ef4a1)){logger[_0xeb03('0x50')](_0xeb03('0x104'),_0x7ef4a1['uniqueid'],util[_0xeb03('0x47')](_0x7ef4a1,{'showHidden':![],'depth':null}));if(_0x7ef4a1[_0xeb03('0x105')]['toLowerCase']()===_0xeb03('0x106')){_0x7ef4a1[_0xeb03('0x107')]=_0x7ef4a1[_0xeb03('0x108')]&&_0x7ef4a1[_0xeb03('0x108')][_0xeb03('0xb1')](_0xeb03('0x109'))?_0x7ef4a1[_0xeb03('0x108')]:(_0x7ef4a1['appdata']||_0x7ef4a1[_0xeb03('0x107')])[_0xeb03('0xb2')]();if(_[_0xeb03('0xb1')](_0x7ef4a1['applicationdata'][_0xeb03('0xb2')](),'cdr(')){logger[_0xeb03('0x88')](_0xeb03('0x10a'),_0x7ef4a1['uniqueid'],_0x7ef4a1[_0xeb03('0x105')],_0x7ef4a1[_0xeb03('0x107')]);if(_['isUndefined'](this['channels'][_0x7ef4a1[_0xeb03('0x53')]]))this['channels'][_0x7ef4a1[_0xeb03('0x53')]]={};var _0x39f432=_0x7ef4a1[_0xeb03('0x107')][_0xeb03('0x10b')]('=');var _0x35f79c=_0x39f432[0x0]['toLowerCase']()['match'](/cdr\((.*)\)/);if(_0x35f79c)this[_0xeb03('0x15')][_0x7ef4a1[_0xeb03('0x53')]][_0x35f79c[0x1]]=_0x39f432[0x1];}}}}catch(_0x361f42){logger[_0xeb03('0x45')](_0xeb03('0x10c'),_0x7ef4a1[_0xeb03('0x53')],util[_0xeb03('0x47')](_0x361f42,{'showHidden':![],'depth':null}));}};module[_0xeb03('0x10d')]=VoiceQueueReport;
\ No newline at end of file
index 388f464..1d0a74e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0507=['campaign','queue','CreateReportAgentPreview','createHistory'];(function(_0x4d7633,_0x2b6eb7){var _0x3548f2=function(_0x124175){while(--_0x124175){_0x4d7633['push'](_0x4d7633['shift']());}};_0x3548f2(++_0x2b6eb7);}(_0x0507,0x183));var _0x7050=function(_0x4ff4a9,_0x5ecb20){_0x4ff4a9=_0x4ff4a9-0x0;var _0x56286b=_0x0507[_0x4ff4a9];return _0x56286b;};'use strict';var client=require('../client');exports[_0x7050('0x0')]=function(_0x4cfb34){return function(){_0x4cfb34[_0x7050('0x1')]=_0x4cfb34[_0x7050('0x2')];return client['Request'](_0x7050('0x3'),{'body':_0x4cfb34,'log':_0x7050('0x3')});};};
\ No newline at end of file
+var _0x9da9=['createHistory','queue','Request','CreateReportAgentPreview','../client'];(function(_0x2e75c2,_0x20841f){var _0x34bb9c=function(_0x22aafa){while(--_0x22aafa){_0x2e75c2['push'](_0x2e75c2['shift']());}};_0x34bb9c(++_0x20841f);}(_0x9da9,0xf9));var _0x99da=function(_0x11df66,_0x9eabf){_0x11df66=_0x11df66-0x0;var _0xc2dca1=_0x9da9[_0x11df66];return _0xc2dca1;};'use strict';var client=require(_0x99da('0x0'));exports[_0x99da('0x1')]=function(_0x3b001e){return function(){_0x3b001e['campaign']=_0x3b001e[_0x99da('0x2')];return client[_0x99da('0x3')]('CreateReportAgentPreview',{'body':_0x3b001e,'log':_0x99da('0x4')});};};
\ No newline at end of file
index 5947b17..3675a01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff17=['Request','CreateAttachment','../client','create'];(function(_0x57cb06,_0x4e038d){var _0x513bde=function(_0x120b1c){while(--_0x120b1c){_0x57cb06['push'](_0x57cb06['shift']());}};_0x513bde(++_0x4e038d);}(_0xff17,0x1ee));var _0x7ff1=function(_0x16e278,_0x293cd8){_0x16e278=_0x16e278-0x0;var _0x448a65=_0xff17[_0x16e278];return _0x448a65;};'use strict';var client=require(_0x7ff1('0x0'));exports[_0x7ff1('0x1')]=function(_0x5903da){return client[_0x7ff1('0x2')](_0x7ff1('0x3'),{'body':_0x5903da,'log':_0x7ff1('0x3')});};
\ No newline at end of file
+var _0xa8d7=['create','CreateAttachment','../client'];(function(_0x11d45b,_0xf2ade5){var _0x57bfca=function(_0x103fd7){while(--_0x103fd7){_0x11d45b['push'](_0x11d45b['shift']());}};_0x57bfca(++_0xf2ade5);}(_0xa8d7,0x1b8));var _0x7a8d=function(_0x532d78,_0x25b6a8){_0x532d78=_0x532d78-0x0;var _0x5990c4=_0xa8d7[_0x532d78];return _0x5990c4;};'use strict';var client=require(_0x7a8d('0x0'));exports[_0x7a8d('0x1')]=function(_0x4787af){return client['Request'](_0x7a8d('0x2'),{'body':_0x4787af,'log':_0x7a8d('0x2')});};
\ No newline at end of file
index b05ba76..00972e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','Trunk','callerid','TrunkBackup','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','GetCampaign','name','type','active','limitCalls'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x5f2f,0x73));var _0xf5f2=function(_0x32affa,_0x140f31){_0x32affa=_0x32affa-0x0;var _0x4b3e96=_0x5f2f[_0x32affa];return _0x4b3e96;};'use strict';var client=require(_0xf5f2('0x0'));exports[_0xf5f2('0x1')]=function(){return function(){return client[_0xf5f2('0x2')](_0xf5f2('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),_0xf5f2('0x7'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0xf5f2('0x8'),_0xf5f2('0x9'),_0xf5f2('0xa'),_0xf5f2('0xb'),_0xf5f2('0xc'),_0xf5f2('0xd'),'dialNoAnswerRetryFrequency',_0xf5f2('0xe'),_0xf5f2('0xf'),_0xf5f2('0x10'),'dialDropMaxRetry',_0xf5f2('0x11'),_0xf5f2('0x12'),_0xf5f2('0x13'),'dialMachineMaxRetry',_0xf5f2('0x14'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0xf5f2('0x15'),_0xf5f2('0x16'),'dialAMDActive',_0xf5f2('0x17'),_0xf5f2('0x18'),_0xf5f2('0x19'),_0xf5f2('0x1a'),_0xf5f2('0x1b'),_0xf5f2('0x1c'),'dialAMDMaximumNumberOfWords',_0xf5f2('0x1d'),_0xf5f2('0x1e'),_0xf5f2('0x1f'),_0xf5f2('0x20'),_0xf5f2('0x21'),'dialCutDigit'],'include':[{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x22'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x24'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x25'),'attributes':['id',_0xf5f2('0x4')],'include':[{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x26'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x27')]}]},{'model':'SquareProject','as':_0xf5f2('0x28'),'attributes':['id',_0xf5f2('0x4')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x3f3f06,_0x581e5b){var _0x140feb=function(_0x4cc383){while(--_0x4cc383){_0x3f3f06['push'](_0x3f3f06['shift']());}};_0x140feb(++_0x581e5b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xc4aa[_0x2064e5];return _0x21a233;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ No newline at end of file
index 7fae488..87351d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeacf=['../client','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x443494,_0x51fc7e){var _0x4a6794=function(_0x15197a){while(--_0x15197a){_0x443494['push'](_0x443494['shift']());}};_0x4a6794(++_0x51fc7e);}(_0xeacf,0x190));var _0xfeac=function(_0xb833b1,_0x1c3d3f){_0xb833b1=_0xb833b1-0x0;var _0x1ab87a=_0xeacf[_0xb833b1];return _0x1ab87a;};'use strict';var client=require(_0xfeac('0x0'));exports['createContact']=function(_0x109ae8){return function(){return client[_0xfeac('0x1')](_0xfeac('0x2'),{'body':_0x109ae8,'log':_0xfeac('0x2')});};};exports[_0xfeac('0x3')]=function(_0x44e500){return function(){return client[_0xfeac('0x1')]('GetCmContact',{'options':_0x44e500,'log':_0xfeac('0x4')});};};
\ No newline at end of file
+var _0x111e=['Request','CreateCmContact','GetCmContact','../client'];(function(_0x22cb5f,_0x2cdd63){var _0x274d36=function(_0x421472){while(--_0x421472){_0x22cb5f['push'](_0x22cb5f['shift']());}};_0x274d36(++_0x2cdd63);}(_0x111e,0x9b));var _0xe111=function(_0x3286be,_0x12d34d){_0x3286be=_0x3286be-0x0;var _0x3e7f1e=_0x111e[_0x3286be];return _0x3e7f1e;};'use strict';var client=require(_0xe111('0x0'));exports['createContact']=function(_0x5a583e){return function(){return client[_0xe111('0x1')](_0xe111('0x2'),{'body':_0x5a583e,'log':'CreateCmContact'});};};exports['getContacts']=function(_0x1cf8cd){return function(){return client[_0xe111('0x1')](_0xe111('0x3'),{'options':_0x1cf8cd,'log':_0xe111('0x3')});};};
\ No newline at end of file
index 2f16f79..e7cfe7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0de5=['CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','DESC','scheduledat','ASC','getContactDialerIvr','YYYY-MM-DD\x20HH:mm:ss','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','VoiceQueueId','CountReScheduled','User','Agent','name','Queue','unlockContact','GetContactRecallMe','priority','Contact','voicePause','db.CmHopper.UserId','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','getContacts','Request','GetCmHopper','CmContact','getCmHopper','updateContacts','UpdateCmHopper','format','rescheduleContact','ContactId'];(function(_0x36de4a,_0x58c12f){var _0x3c0c60=function(_0x412022){while(--_0x412022){_0x36de4a['push'](_0x36de4a['shift']());}};_0x3c0c60(++_0x58c12f);}(_0x0de5,0xea));var _0x50de=function(_0x240190,_0x2b6b62){_0x240190=_0x240190-0x0;var _0x257a25=_0x0de5[_0x240190];return _0x257a25;};'use strict';var client=require(_0x50de('0x0'));var moment=require(_0x50de('0x1'));exports[_0x50de('0x2')]=function(_0x5e904d,_0x59593f){return function(){return client[_0x50de('0x3')](_0x50de('0x4'),{'options':{'where':{'VoiceQueueId':_0x5e904d},'include':[{'model':_0x50de('0x5'),'as':'Contact'}],'limit':_0x59593f,'raw':![]},'log':_0x50de('0x6')});};};exports[_0x50de('0x7')]=function(_0x370bea,_0x38498c,_0x446935){return function(){return client[_0x50de('0x3')](_0x50de('0x8'),{'body':_0x370bea,'options':{'where':{'VoiceQueueId':_0x38498c,'scheduledat':{'$lte':moment()[_0x50de('0x9')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x446935},'log':_0x50de('0x8')});};};exports[_0x50de('0xa')]=function(_0xed8afa){return function(){return client[_0x50de('0x3')](_0x50de('0x8'),{'body':_0xed8afa,'options':{'where':{'ContactId':_0xed8afa[_0x50de('0xb')],'ListId':_0xed8afa['ListId'],'VoiceQueueId':_0xed8afa['VoiceQueueId'],'CampaignId':_0xed8afa[_0x50de('0xc')]}},'log':_0x50de('0xa')});};};exports[_0x50de('0xd')]=function(_0x150f3b,_0x167361,_0x1bb5a4){return function(){return client[_0x50de('0x3')](_0x50de('0xe'),{'options':{'where':{'VoiceQueueId':_0x150f3b,'ListId':_0x167361,'ContactId':_0x1bb5a4}},'log':_0x50de('0xe')});};};exports[_0x50de('0xf')]=function(_0xcb1ce1,_0x544d0e,_0x923ccf,_0x4b3a37){return function(){return client['Request'](_0x50de('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xcb1ce1,'active':![],'scheduledat':{'$lte':moment()[_0x50de('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x544d0e}}]},'order':[['priority',_0x50de('0x11')],[_0x50de('0x12'),_0x4b3a37],['id',_0x50de('0x13')]],'raw':!![],'limit':_0x923ccf},'log':_0x50de('0x10')});};};exports[_0x50de('0x14')]=function(_0x4bc457,_0x2ae277,_0x516875){return function(){return client['Request'](_0x50de('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x4bc457,'active':![],'scheduledat':{'$lte':moment()[_0x50de('0x9')](_0x50de('0x15'))}},'include':[{'model':_0x50de('0x5'),'as':'Contact'}],'order':[['priority','DESC'],[_0x50de('0x12'),_0x516875],['id',_0x50de('0x13')]],'raw':!![],'limit':_0x2ae277},'log':_0x50de('0x16')});};};exports[_0x50de('0x17')]=function(_0xf054f3,_0x3f3591){return function(){_0xf054f3[_0x50de('0x18')]=_0xf054f3[_0x50de('0x19')];return client[_0x50de('0x3')](_0x50de('0x1a'),{'body':_0xf054f3,'options':{'where':{'ContactId':_0xf054f3[_0x50de('0xb')],'ListId':_0xf054f3['ListId'],'VoiceQueueId':_0xf054f3[_0x50de('0x1b')],'CampaignId':_0xf054f3[_0x50de('0xc')],'active':_0x3f3591?undefined:!![]}},'log':_0x50de('0x1a')});};};exports['countReScheduled']=function(_0x59a13c){return function(){return client[_0x50de('0x3')](_0x50de('0x1c'),{'options':{'where':{'VoiceQueueId':_0x59a13c['id']?_0x59a13c['id']||null:null}},'log':'countReScheduled'});};};exports['getContactPreview']=function(_0x12bb30){return function(){return client[_0x50de('0x3')]('GetCmHopperPreview',{'options':{'where':{'id':_0x12bb30},'include':[{'model':'CmContact','as':'Contact'},{'model':_0x50de('0x1d'),'as':_0x50de('0x1e'),'attributes':['id',_0x50de('0x1f')]},{'model':'VoiceQueue','as':_0x50de('0x20'),'attributes':['id','name']}],'raw':!![]},'log':_0x50de('0x6')});};};exports[_0x50de('0x21')]=function(_0x3258ce,_0x37c259,_0x3332c7){return function(){return client[_0x50de('0x3')](_0x50de('0x8'),{'body':_0x3258ce,'options':{'where':{'id':_0x37c259},'limit':_0x3332c7},'log':_0x50de('0x8')});};};exports['getContactRecallMe']=function(_0x5e3e77,_0x51546f){return function(){return client[_0x50de('0x3')](_0x50de('0x22'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5e3e77,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x50de('0x9')](_0x50de('0x15'))},'UserId':{'$in':_0x51546f}},'order':[[_0x50de('0x23'),'DESC'],[_0x50de('0x12'),'DESC'],['id',_0x50de('0x13')]],'include':[{'model':_0x50de('0x5'),'as':_0x50de('0x24')},{'model':_0x50de('0x1d'),'as':_0x50de('0x1e'),'attributes':['id',_0x50de('0x1f'),_0x50de('0x25')]}],'group':_0x50de('0x26'),'raw':!![]},'log':'GetContactDialer'});};};exports['resetActiveCalls']=function(_0x4c1646,_0x13ac0f){return client[_0x50de('0x3')]('ResetActiveCalls',{'body':_0x4c1646,'options':_0x13ac0f||{},'log':'ResetActiveCalls'});};exports[_0x50de('0x27')]=function(_0x329731,_0x8a1cd,_0x74a8f1){return function(){return client[_0x50de('0x3')](_0x50de('0x28'),{'body':{'where':{'voiceQueueIds':_0x329731,'interval':_0x8a1cd,'availableAgentsIds':_0x74a8f1}},'log':'handlePreviewRecallNotifications'});};};
\ No newline at end of file
+var _0xd0ca=['priority','DESC','ASC','getContactDialerIvr','CmContact','GetContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','Contact','Agent','name','VoiceQueue','Queue','getCmHopper','GetContactRecallMe','User','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','getContacts','Request','updateContacts','UpdateCmHopper','format','rescheduleContact','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0xd0ca,0x18d));var _0xad0c=function(_0x1c69e2,_0x497842){_0x1c69e2=_0x1c69e2-0x0;var _0x46d934=_0xd0ca[_0x1c69e2];return _0x46d934;};'use strict';var client=require('../client');var moment=require('moment');exports[_0xad0c('0x0')]=function(_0x130ca0,_0x2a9e1a){return function(){return client[_0xad0c('0x1')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x130ca0},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0x2a9e1a,'raw':![]},'log':'getCmHopper'});};};exports[_0xad0c('0x2')]=function(_0x206ef7,_0x5b8512,_0x4fbd00){return function(){return client[_0xad0c('0x1')](_0xad0c('0x3'),{'body':_0x206ef7,'options':{'where':{'VoiceQueueId':_0x5b8512,'scheduledat':{'$lte':moment()[_0xad0c('0x4')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x4fbd00},'log':_0xad0c('0x3')});};};exports[_0xad0c('0x5')]=function(_0x2ac931){return function(){return client[_0xad0c('0x1')](_0xad0c('0x3'),{'body':_0x2ac931,'options':{'where':{'ContactId':_0x2ac931['ContactId'],'ListId':_0x2ac931['ListId'],'VoiceQueueId':_0x2ac931[_0xad0c('0x6')],'CampaignId':_0x2ac931[_0xad0c('0x7')]}},'log':_0xad0c('0x5')});};};exports[_0xad0c('0x8')]=function(_0x18a90e,_0x15887c,_0x20c880){return function(){return client[_0xad0c('0x1')](_0xad0c('0x9'),{'options':{'where':{'VoiceQueueId':_0x18a90e,'ListId':_0x15887c,'ContactId':_0x20c880}},'log':_0xad0c('0x9')});};};exports[_0xad0c('0xa')]=function(_0x5b8dd6,_0x4e360b,_0x16097d,_0x282866){return function(){return client[_0xad0c('0x1')](_0xad0c('0xb'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5b8dd6,'active':![],'scheduledat':{'$lte':moment()[_0xad0c('0x4')](_0xad0c('0xc'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x4e360b}}]},'order':[[_0xad0c('0xd'),_0xad0c('0xe')],['scheduledat',_0x282866],['id',_0xad0c('0xf')]],'raw':!![],'limit':_0x16097d},'log':_0xad0c('0xb')});};};exports[_0xad0c('0x10')]=function(_0x1ef327,_0x4eb508,_0x2c21da){return function(){return client[_0xad0c('0x1')](_0xad0c('0xb'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x1ef327,'active':![],'scheduledat':{'$lte':moment()[_0xad0c('0x4')](_0xad0c('0xc'))}},'include':[{'model':_0xad0c('0x11'),'as':'Contact'}],'order':[[_0xad0c('0xd'),_0xad0c('0xe')],['scheduledat',_0x2c21da],['id','ASC']],'raw':!![],'limit':_0x4eb508},'log':_0xad0c('0x12')});};};exports[_0xad0c('0x13')]=function(_0xb07440,_0x19431f){return function(){_0xb07440[_0xad0c('0x14')]=_0xb07440['queue'];return client[_0xad0c('0x1')](_0xad0c('0x15'),{'body':_0xb07440,'options':{'where':{'ContactId':_0xb07440['ContactId'],'ListId':_0xb07440[_0xad0c('0x16')],'VoiceQueueId':_0xb07440[_0xad0c('0x6')],'CampaignId':_0xb07440[_0xad0c('0x7')],'active':_0x19431f?undefined:!![]}},'log':_0xad0c('0x15')});};};exports[_0xad0c('0x17')]=function(_0xe01df9){return function(){return client[_0xad0c('0x1')](_0xad0c('0x18'),{'options':{'where':{'VoiceQueueId':_0xe01df9['id']?_0xe01df9['id']||null:null}},'log':'countReScheduled'});};};exports[_0xad0c('0x19')]=function(_0x6624f3){return function(){return client[_0xad0c('0x1')](_0xad0c('0x1a'),{'options':{'where':{'id':_0x6624f3},'include':[{'model':_0xad0c('0x11'),'as':_0xad0c('0x1b')},{'model':'User','as':_0xad0c('0x1c'),'attributes':['id',_0xad0c('0x1d')]},{'model':_0xad0c('0x1e'),'as':_0xad0c('0x1f'),'attributes':['id',_0xad0c('0x1d')]}],'raw':!![]},'log':_0xad0c('0x20')});};};exports['unlockContact']=function(_0x1bc22f,_0x516506,_0x4a552d){return function(){return client[_0xad0c('0x1')]('UpdateCmHopper',{'body':_0x1bc22f,'options':{'where':{'id':_0x516506},'limit':_0x4a552d},'log':'UpdateCmHopper'});};};exports['getContactRecallMe']=function(_0x4a5164,_0x10e74a){return function(){return client[_0xad0c('0x1')](_0xad0c('0x21'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4a5164,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xad0c('0x4')](_0xad0c('0xc'))},'UserId':{'$in':_0x10e74a}},'order':[['priority',_0xad0c('0xe')],['scheduledat',_0xad0c('0xe')],['id',_0xad0c('0xf')]],'include':[{'model':'CmContact','as':_0xad0c('0x1b')},{'model':_0xad0c('0x22'),'as':_0xad0c('0x1c'),'attributes':['id',_0xad0c('0x1d'),_0xad0c('0x23')]}],'group':_0xad0c('0x24'),'raw':!![]},'log':_0xad0c('0xb')});};};exports[_0xad0c('0x25')]=function(_0x131a34,_0x2a4657){return client[_0xad0c('0x1')](_0xad0c('0x26'),{'body':_0x131a34,'options':_0x2a4657||{},'log':_0xad0c('0x26')});};exports[_0xad0c('0x27')]=function(_0x56ec46,_0x2f338b,_0x4960d6){return function(){return client[_0xad0c('0x1')](_0xad0c('0x28'),{'body':{'where':{'voiceQueueIds':_0x56ec46,'interval':_0x2f338b,'availableAgentsIds':_0x4960d6}},'log':_0xad0c('0x27')});};};
\ No newline at end of file
index 322cc3f..ed6ff16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b39=['SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x3b3b66,_0x521146){var _0xc5e626=function(_0x2dd463){while(--_0x2dd463){_0x3b3b66['push'](_0x3b3b66['shift']());}};_0xc5e626(++_0x521146);}(_0x1b39,0x10b));var _0x91b3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x1b39[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x91b3('0x0'));var moment=require('moment');exports[_0x91b3('0x1')]=function(_0x5b5a74,_0x223315,_0x587b73){return function(){return client[_0x91b3('0x2')]('VerifyAdditionalPhones',{'body':_0x5b5a74,'reason':_0x223315,'entity':_0x587b73,'log':_0x91b3('0x3')});};};exports[_0x91b3('0x4')]=function(_0x4d4420,_0x50fc13,_0x1aacdf){return function(){return client['Request'](_0x91b3('0x5'),{'body':_0x4d4420,'duration':_0x50fc13,'waitTime':_0x1aacdf,'log':_0x91b3('0x5')});};};exports[_0x91b3('0x6')]=function(_0x529760){return function(){return client['Request']('IncrementPreviewCounters',{'body':_0x529760,'log':_0x91b3('0x7')});};};
\ No newline at end of file
+var _0xdea7=['SwapAdditionalPhones','incrementPreviewCounters','../client','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xdea7,0x19f));var _0x7dea=function(_0x51c1dc,_0x827809){_0x51c1dc=_0x51c1dc-0x0;var _0x4ed7c7=_0xdea7[_0x51c1dc];return _0x4ed7c7;};'use strict';var client=require(_0x7dea('0x0'));var moment=require('moment');exports[_0x7dea('0x1')]=function(_0x264f33,_0x5e0eb4,_0x5c2072){return function(){return client[_0x7dea('0x2')](_0x7dea('0x3'),{'body':_0x264f33,'reason':_0x5e0eb4,'entity':_0x5c2072,'log':_0x7dea('0x3')});};};exports[_0x7dea('0x4')]=function(_0x2cf82e,_0x4d00ac,_0x49f68e){return function(){return client[_0x7dea('0x2')]('SwapAdditionalPhones',{'body':_0x2cf82e,'duration':_0x4d00ac,'waitTime':_0x49f68e,'log':_0x7dea('0x5')});};};exports[_0x7dea('0x6')]=function(_0x3eb080){return function(){return client[_0x7dea('0x2')]('IncrementPreviewCounters',{'body':_0x3eb080,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
index 1ae3f32..2cccb21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33df=['CampaignId','GetCmHopperBlackIvr','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','phone'];(function(_0x3ae613,_0x4f0c94){var _0x2b5baf=function(_0x3e6db6){while(--_0x3e6db6){_0x3ae613['push'](_0x3ae613['shift']());}};_0x2b5baf(++_0x4f0c94);}(_0x33df,0x79));var _0xf33d=function(_0x54b396,_0x3612ee){_0x54b396=_0x54b396-0x0;var _0x532e6d=_0x33df[_0x54b396];return _0x532e6d;};'use strict';var client=require('../client');exports[_0xf33d('0x0')]=function(_0x25d855){return function(){return client[_0xf33d('0x1')](_0xf33d('0x2'),{'options':{'where':{'VoiceQueueId':_0x25d855[_0xf33d('0x3')],'phone':_0x25d855[_0xf33d('0x4')]},'raw':![]},'log':'GetCmHopperBlack'});};};exports['checkIsBlackListIvr']=function(_0x55ee37){return function(){return client[_0xf33d('0x1')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x55ee37[_0xf33d('0x5')],'phone':_0x55ee37[_0xf33d('0x4')]},'raw':![]},'log':_0xf33d('0x6')});};};
\ No newline at end of file
+var _0x35ce=['Request','GetCmHopperBlack','VoiceQueueId','phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList'];(function(_0x19daba,_0x571082){var _0x5690aa=function(_0x39a2c1){while(--_0x39a2c1){_0x19daba['push'](_0x19daba['shift']());}};_0x5690aa(++_0x571082);}(_0x35ce,0x15d));var _0xe35c=function(_0x51bddf,_0x46f7c7){_0x51bddf=_0x51bddf-0x0;var _0x4f78c0=_0x35ce[_0x51bddf];return _0x4f78c0;};'use strict';var client=require(_0xe35c('0x0'));exports[_0xe35c('0x1')]=function(_0x61f53b){return function(){return client[_0xe35c('0x2')](_0xe35c('0x3'),{'options':{'where':{'VoiceQueueId':_0x61f53b[_0xe35c('0x4')],'phone':_0x61f53b[_0xe35c('0x5')]},'raw':![]},'log':_0xe35c('0x3')});};};exports[_0xe35c('0x6')]=function(_0x32a83f){return function(){return client[_0xe35c('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x32a83f[_0xe35c('0x7')],'phone':_0x32a83f[_0xe35c('0x5')]},'raw':![]},'log':_0xe35c('0x8')});};};
\ No newline at end of file
index 2214802..1fd382a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f9f=['CreateCmHopperFinal','campaign','queue','Request'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x2f9f,0x75));var _0xf2f9=function(_0x4af77a,_0xfebfbd){_0x4af77a=_0x4af77a-0x0;var _0x4137de=_0x2f9f[_0x4af77a];return _0x4137de;};'use strict';var client=require('../client');exports['createContact']=function(_0x2e04bb){return function(){_0x2e04bb[_0xf2f9('0x0')]=_0x2e04bb[_0xf2f9('0x1')];return client[_0xf2f9('0x2')]('CreateCmHopperFinal',{'body':_0x2e04bb,'log':_0xf2f9('0x3')});};};
\ No newline at end of file
+var _0x29e5=['createContact','queue','Request','CreateCmHopperFinal'];(function(_0x4dd27d,_0x5a0d25){var _0x550e48=function(_0x47713f){while(--_0x47713f){_0x4dd27d['push'](_0x4dd27d['shift']());}};_0x550e48(++_0x5a0d25);}(_0x29e5,0x78));var _0x529e=function(_0x222a22,_0x137dfe){_0x222a22=_0x222a22-0x0;var _0x2e0ab8=_0x29e5[_0x222a22];return _0x2e0ab8;};'use strict';var client=require('../client');exports[_0x529e('0x0')]=function(_0x40d1bd){return function(){_0x40d1bd['campaign']=_0x40d1bd[_0x529e('0x1')];return client[_0x529e('0x2')](_0x529e('0x3'),{'body':_0x40d1bd,'log':_0x529e('0x3')});};};
\ No newline at end of file
index 2a36b9f..16825ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1d0=['../client','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','ivr'];(function(_0x115055,_0x34d2d8){var _0x1a305a=function(_0x6a7f0){while(--_0x6a7f0){_0x115055['push'](_0x115055['shift']());}};_0x1a305a(++_0x34d2d8);}(_0xe1d0,0x18f));var _0x0e1d=function(_0x3cd819,_0x24fc18){_0x3cd819=_0x3cd819-0x0;var _0x334604=_0xe1d0[_0x3cd819];return _0x334604;};'use strict';var client=require(_0x0e1d('0x0'));var moment=require('moment');exports[_0x0e1d('0x1')]=function(_0x432194){return function(){_0x432194[_0x0e1d('0x2')]=_0x432194[_0x0e1d('0x3')];return client[_0x0e1d('0x4')](_0x0e1d('0x5'),{'body':_0x432194,'log':_0x0e1d('0x5')});};};exports[_0x0e1d('0x6')]=function(_0x3c4cb5){return function(){return client[_0x0e1d('0x4')](_0x0e1d('0x7'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x3c4cb5,_0x0e1d('0x8'))[_0x0e1d('0x9')](_0x0e1d('0xa')),moment()[_0x0e1d('0x9')](_0x0e1d('0xa'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x0e1d('0xb')]=function(_0x469fa4){return function(){return client[_0x0e1d('0x4')](_0x0e1d('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0e1d('0xd')]('day')[_0x0e1d('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x0e1d('0xe')](_0x0e1d('0xf'))['format'](_0x0e1d('0xa'))]},'campaigntype':_0x0e1d('0x3')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x0e1d('0x10')]=function(_0x108a0c){return function(){return client[_0x0e1d('0x4')](_0x0e1d('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0e1d('0xd')](_0x0e1d('0xf'))[_0x0e1d('0x9')](_0x0e1d('0xa')),moment()['endOf']('day')[_0x0e1d('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x0e1d('0x12')},'raw':![]},'log':_0x0e1d('0x11')});};};
\ No newline at end of file
+var _0x1187=['endOf','queue','GetCampaignHopperHistory','ivr','../client','moment','createHistory','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day'];(function(_0x3aa2ba,_0x57e96e){var _0x907f7c=function(_0x4906f1){while(--_0x4906f1){_0x3aa2ba['push'](_0x3aa2ba['shift']());}};_0x907f7c(++_0x57e96e);}(_0x1187,0x134));var _0x7118=function(_0x19df87,_0x107c48){_0x19df87=_0x19df87-0x0;var _0x3b5723=_0x1187[_0x19df87];return _0x3b5723;};'use strict';var client=require(_0x7118('0x0'));var moment=require(_0x7118('0x1'));exports[_0x7118('0x2')]=function(_0x5286e1){return function(){_0x5286e1['campaign']=_0x5286e1['queue'];return client[_0x7118('0x3')](_0x7118('0x4'),{'body':_0x5286e1,'log':_0x7118('0x4')});};};exports[_0x7118('0x5')]=function(_0x45b32a){return function(){return client[_0x7118('0x3')](_0x7118('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x7118('0x7')](_0x45b32a,_0x7118('0x8'))[_0x7118('0x9')](_0x7118('0xa')),moment()[_0x7118('0x9')](_0x7118('0xa'))]}},'raw':![]},'log':_0x7118('0xb')});};};exports[_0x7118('0xc')]=function(_0xf9fd24){return function(){return client[_0x7118('0x3')](_0x7118('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x7118('0xe'))[_0x7118('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x7118('0xf')]('day')[_0x7118('0x9')](_0x7118('0xa'))]},'campaigntype':_0x7118('0x10')},'raw':![]},'log':_0x7118('0xd')});};};exports['getCampaignHopperHistory']=function(_0x3b0416){return function(){return client[_0x7118('0x3')](_0x7118('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x7118('0xe'))[_0x7118('0x9')](_0x7118('0xa')),moment()[_0x7118('0xf')](_0x7118('0xe'))['format'](_0x7118('0xa'))]},'campaigntype':_0x7118('0x12')},'raw':![]},'log':_0x7118('0x11')});};};
\ No newline at end of file
index 46cb67a..5f9b836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7031=['tech','TrunkId','key','Trunk','callerid','active','getFaxAccount','notify','Request','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','name','ecm','headerinfo','minrate','maxrate','gateway','t38timeout'];(function(_0x4821d4,_0x40758d){var _0x5e2abc=function(_0x3cdfb9){while(--_0x3cdfb9){_0x4821d4['push'](_0x4821d4['shift']());}};_0x5e2abc(++_0x40758d);}(_0x7031,0x19a));var _0x1703=function(_0x2e17a7,_0x5b5efa){_0x2e17a7=_0x2e17a7-0x0;var _0x443505=_0x7031[_0x2e17a7];return _0x443505;};'use strict';var client=require(_0x1703('0x0'));exports[_0x1703('0x1')]=function(){return function(){return client['Request'](_0x1703('0x2'),{'options':{'raw':![],'attributes':['id',_0x1703('0x3'),'description',_0x1703('0x4'),_0x1703('0x5'),'localstationid',_0x1703('0x6'),_0x1703('0x7'),'modem',_0x1703('0x8'),'faxdetect',_0x1703('0x9'),_0x1703('0xa'),_0x1703('0xb'),'ListId',_0x1703('0xc')],'include':[{'model':_0x1703('0xd'),'as':_0x1703('0xd'),'attributes':['id','name',_0x1703('0xe'),_0x1703('0xf')]}]},'log':_0x1703('0x10')});};};exports[_0x1703('0x11')]=function(_0x3a5276,_0x46ac30){return client[_0x1703('0x12')](_0x1703('0x13'),{'account':{'id':_0x3a5276},'body':_0x46ac30,'log':_0x1703('0x13')});};
\ No newline at end of file
+var _0x1681=['maxrate','modem','faxdetect','t38timeout','TrunkId','key','Trunk','callerid','getFaxAccount','notify','NotifyFaxAccount','Request','GetFaxAccount','name','description','ecm','headerinfo'];(function(_0x278b7f,_0x3ceee6){var _0x38bea0=function(_0x38e9cc){while(--_0x38e9cc){_0x278b7f['push'](_0x278b7f['shift']());}};_0x38bea0(++_0x3ceee6);}(_0x1681,0x12c));var _0x1168=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1681[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getFaxAccounts']=function(){return function(){return client[_0x1168('0x0')](_0x1168('0x1'),{'options':{'raw':![],'attributes':['id',_0x1168('0x2'),_0x1168('0x3'),_0x1168('0x4'),_0x1168('0x5'),'localstationid','minrate',_0x1168('0x6'),_0x1168('0x7'),'gateway',_0x1168('0x8'),_0x1168('0x9'),'tech',_0x1168('0xa'),'ListId',_0x1168('0xb')],'include':[{'model':_0x1168('0xc'),'as':'Trunk','attributes':['id',_0x1168('0x2'),_0x1168('0xd'),'active']}]},'log':_0x1168('0xe')});};};exports[_0x1168('0xf')]=function(_0x4d836e,_0x5df755){return client[_0x1168('0x0')](_0x1168('0x10'),{'account':{'id':_0x4d836e},'body':_0x5df755,'log':_0x1168('0x10')});};
\ No newline at end of file
index ae3cacf..18992ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b1=['../client','UpdateFaxMessage'];(function(_0x4c9fce,_0x4ec373){var _0x36daea=function(_0x595699){while(--_0x595699){_0x4c9fce['push'](_0x4c9fce['shift']());}};_0x36daea(++_0x4ec373);}(_0xc7b1,0x1e0));var _0x1c7b=function(_0xc4966b,_0x6cd5e0){_0xc4966b=_0xc4966b-0x0;var _0x1802bb=_0xc7b1[_0xc4966b];return _0x1802bb;};'use strict';var client=require(_0x1c7b('0x0'));exports['update']=function(_0x1df17b,_0x35c7a9){return client['Request']('UpdateFaxMessage',{'body':_0x35c7a9,'options':{'where':{'AttachmentId':_0x1df17b}},'log':_0x1c7b('0x1')});};
\ No newline at end of file
+var _0x3c52=['update','Request','UpdateFaxMessage'];(function(_0x46200d,_0x1327b8){var _0x73bcfa=function(_0x1b14ea){while(--_0x1b14ea){_0x46200d['push'](_0x46200d['shift']());}};_0x73bcfa(++_0x1327b8);}(_0x3c52,0xe4));var _0x23c5=function(_0x40de6e,_0x263385){_0x40de6e=_0x40de6e-0x0;var _0x13ed56=_0x3c52[_0x40de6e];return _0x13ed56;};'use strict';var client=require('../client');exports[_0x23c5('0x0')]=function(_0x57f344,_0x80f3ac){return client[_0x23c5('0x1')](_0x23c5('0x2'),{'body':_0x80f3ac,'options':{'where':{'AttachmentId':_0x57f344}},'log':_0x23c5('0x2')});};
\ No newline at end of file
index 279e1ce..64ae904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fdf=['DeskField','Descriptions','keyType','keyContent','Fields','idField','nameField','customField','GetDeskAccount','../../client','Request','name','description','username','remoteUri','authType','serverUrl','DeskConfiguration','Subjects','type','content','variableName','Variable'];(function(_0x48ccaa,_0x118a60){var _0x3c11ab=function(_0x4cfdee){while(--_0x4cfdee){_0x48ccaa['push'](_0x48ccaa['shift']());}};_0x3c11ab(++_0x118a60);}(_0x2fdf,0xc1));var _0xf2fd=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x2fdf[_0x1beef3];return _0x5af964;};'use strict';var client=require(_0xf2fd('0x0'));exports['getDeskAccounts']=function(){return function(_0x423468){return client[_0xf2fd('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0xf2fd('0x2'),_0xf2fd('0x3'),_0xf2fd('0x4'),'password',_0xf2fd('0x5'),_0xf2fd('0x6'),'type',_0xf2fd('0x7')],'include':[{'model':_0xf2fd('0x8'),'as':'Configurations','attributes':['id',_0xf2fd('0x2')],'include':[{'model':'DeskField','as':_0xf2fd('0x9'),'attributes':['id',_0xf2fd('0xa'),_0xf2fd('0xb'),_0xf2fd('0xc')],'include':[{'model':_0xf2fd('0xd'),'as':_0xf2fd('0xd'),'attributes':['id',_0xf2fd('0x2')]}]},{'model':_0xf2fd('0xe'),'as':_0xf2fd('0xf'),'attributes':['id','type',_0xf2fd('0xb'),'key',_0xf2fd('0x10'),_0xf2fd('0x11'),'variableName'],'include':[{'model':_0xf2fd('0xd'),'as':_0xf2fd('0xd'),'attributes':['id',_0xf2fd('0x2')]}]},{'model':_0xf2fd('0xe'),'as':_0xf2fd('0x12'),'attributes':['id','type',_0xf2fd('0xb'),_0xf2fd('0x13'),_0xf2fd('0x14'),_0xf2fd('0x15'),_0xf2fd('0xc')],'include':[{'model':_0xf2fd('0xd'),'as':_0xf2fd('0xd'),'attributes':['id',_0xf2fd('0x2')]}]},{'model':'Tag','as':'Tags','attributes':['id',_0xf2fd('0x2')]}]}]},'log':_0xf2fd('0x16')});};};
\ No newline at end of file
+var _0xed0b=['getDeskAccounts','Request','GetDeskAccount','name','description','username','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','Fields','idField','nameField','Tag','Tags','../../client'];(function(_0x472fc1,_0x39a6f8){var _0xdbe420=function(_0x76a2c2){while(--_0x76a2c2){_0x472fc1['push'](_0x472fc1['shift']());}};_0xdbe420(++_0x39a6f8);}(_0xed0b,0xe0));var _0xbed0=function(_0x503950,_0x5022eb){_0x503950=_0x503950-0x0;var _0x1657a9=_0xed0b[_0x503950];return _0x1657a9;};'use strict';var client=require(_0xbed0('0x0'));exports[_0xbed0('0x1')]=function(){return function(_0x47a81e){return client[_0xbed0('0x2')](_0xbed0('0x3'),{'options':{'raw':![],'attributes':['id',_0xbed0('0x4'),_0xbed0('0x5'),_0xbed0('0x6'),'password','remoteUri','authType','type',_0xbed0('0x7')],'include':[{'model':_0xbed0('0x8'),'as':_0xbed0('0x9'),'attributes':['id',_0xbed0('0x4')],'include':[{'model':_0xbed0('0xa'),'as':_0xbed0('0xb'),'attributes':['id','type',_0xbed0('0xc'),_0xbed0('0xd')],'include':[{'model':_0xbed0('0xe'),'as':_0xbed0('0xe'),'attributes':['id',_0xbed0('0x4')]}]},{'model':_0xbed0('0xa'),'as':_0xbed0('0xf'),'attributes':['id',_0xbed0('0x10'),_0xbed0('0xc'),_0xbed0('0x11'),_0xbed0('0x12'),_0xbed0('0x13'),_0xbed0('0xd')],'include':[{'model':_0xbed0('0xe'),'as':_0xbed0('0xe'),'attributes':['id',_0xbed0('0x4')]}]},{'model':_0xbed0('0xa'),'as':_0xbed0('0x14'),'attributes':['id',_0xbed0('0x10'),_0xbed0('0xc'),_0xbed0('0x15'),_0xbed0('0x16'),'customField',_0xbed0('0xd')],'include':[{'model':_0xbed0('0xe'),'as':'Variable','attributes':['id',_0xbed0('0x4')]}]},{'model':_0xbed0('0x17'),'as':_0xbed0('0x18'),'attributes':['id',_0xbed0('0x4')]}]}]},'log':_0xbed0('0x3')});};};
\ No newline at end of file
index 713b7a3..149982d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['Dynamics365Field','Subjects','content','variableName','Variable','type','key','keyType','keyContent','Fields','nameField','customField','CloudProvider','data5','../../client','GetDynamics365Account','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','modernAuthentication','ticketType','moduleCreate','additionalSearchContact'];(function(_0x4c3283,_0x2ccd4f){var _0x56a245=function(_0x54a75a){while(--_0x54a75a){_0x4c3283['push'](_0x4c3283['shift']());}};_0x56a245(++_0x2ccd4f);}(_0x0b0e,0x187));var _0xe0b0=function(_0x2d36a6,_0x2f8cd0){_0x2d36a6=_0x2d36a6-0x0;var _0x59cec0=_0x0b0e[_0x2d36a6];return _0x59cec0;};'use strict';var client=require(_0xe0b0('0x0'));exports['getDynamics365Accounts']=function(){return function(_0xc416e3){return client['Request'](_0xe0b0('0x1'),{'options':{'raw':![],'attributes':['id',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6'),_0xe0b0('0x7'),_0xe0b0('0x8'),_0xe0b0('0x9'),_0xe0b0('0xa'),_0xe0b0('0xb')],'include':[{'model':'Dynamics365Configuration','as':'Configurations','attributes':['id',_0xe0b0('0x2'),_0xe0b0('0xc'),_0xe0b0('0xd'),_0xe0b0('0xe'),'openNewTab'],'include':[{'model':_0xe0b0('0xf'),'as':_0xe0b0('0x10'),'attributes':['id','type',_0xe0b0('0x11'),_0xe0b0('0x12')],'include':[{'model':'Variable','as':_0xe0b0('0x13'),'attributes':['id',_0xe0b0('0x2')]}]},{'model':_0xe0b0('0xf'),'as':'Descriptions','attributes':['id',_0xe0b0('0x14'),_0xe0b0('0x11'),_0xe0b0('0x15'),_0xe0b0('0x16'),_0xe0b0('0x17'),'variableName'],'include':[{'model':_0xe0b0('0x13'),'as':_0xe0b0('0x13'),'attributes':['id',_0xe0b0('0x2')]}]},{'model':_0xe0b0('0xf'),'as':_0xe0b0('0x18'),'attributes':['id','type',_0xe0b0('0x11'),'idField',_0xe0b0('0x19'),_0xe0b0('0x1a'),'variableName'],'include':[{'model':_0xe0b0('0x13'),'as':'Variable','attributes':['id',_0xe0b0('0x2')]}]}]},{'model':_0xe0b0('0x1b'),'as':'CloudProvider','attributes':['id','data2',_0xe0b0('0x1c'),'data7']}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0xbc87=['CloudProvider','data2','data5','data7','../../client','Request','GetDynamics365Account','name','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','variableName','Variable','Descriptions','content','keyType','keyContent','Fields','nameField'];(function(_0xd7d435,_0x43c82d){var _0x25afdf=function(_0x354107){while(--_0x354107){_0xd7d435['push'](_0xd7d435['shift']());}};_0x25afdf(++_0x43c82d);}(_0xbc87,0x144));var _0x7bc8=function(_0x229971,_0x3961f7){_0x229971=_0x229971-0x0;var _0x1d5266=_0xbc87[_0x229971];return _0x1d5266;};'use strict';var client=require(_0x7bc8('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x5b28ef){return client[_0x7bc8('0x1')](_0x7bc8('0x2'),{'options':{'raw':![],'attributes':['id',_0x7bc8('0x3'),'username','password',_0x7bc8('0x4'),_0x7bc8('0x5'),_0x7bc8('0x6'),_0x7bc8('0x7'),_0x7bc8('0x8'),_0x7bc8('0x9'),_0x7bc8('0xa')],'include':[{'model':_0x7bc8('0xb'),'as':_0x7bc8('0xc'),'attributes':['id',_0x7bc8('0x3'),_0x7bc8('0xd'),_0x7bc8('0xe'),_0x7bc8('0xf'),_0x7bc8('0x10')],'include':[{'model':_0x7bc8('0x11'),'as':_0x7bc8('0x12'),'attributes':['id',_0x7bc8('0x13'),'content',_0x7bc8('0x14')],'include':[{'model':'Variable','as':_0x7bc8('0x15'),'attributes':['id',_0x7bc8('0x3')]}]},{'model':_0x7bc8('0x11'),'as':_0x7bc8('0x16'),'attributes':['id',_0x7bc8('0x13'),_0x7bc8('0x17'),'key',_0x7bc8('0x18'),_0x7bc8('0x19'),'variableName'],'include':[{'model':_0x7bc8('0x15'),'as':'Variable','attributes':['id',_0x7bc8('0x3')]}]},{'model':_0x7bc8('0x11'),'as':_0x7bc8('0x1a'),'attributes':['id',_0x7bc8('0x13'),_0x7bc8('0x17'),'idField',_0x7bc8('0x1b'),'customField',_0x7bc8('0x14')],'include':[{'model':'Variable','as':_0x7bc8('0x15'),'attributes':['id',_0x7bc8('0x3')]}]}]},{'model':_0x7bc8('0x1c'),'as':_0x7bc8('0x1c'),'attributes':['id',_0x7bc8('0x1d'),_0x7bc8('0x1e'),_0x7bc8('0x1f')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index 64ee120..4174e54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['Descriptions','key','keyContent','Fields','idField','nameField','customField','../../client','getFreshdeskAccounts','name','username','apiKey','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','type','content','variableName','Variable'];(function(_0xc073b9,_0x3217b5){var _0x512232=function(_0x1839d4){while(--_0x1839d4){_0xc073b9['push'](_0xc073b9['shift']());}};_0x512232(++_0x3217b5);}(_0xc788,0xc4));var _0x8c78=function(_0x5842c3,_0x56bd74){_0x5842c3=_0x5842c3-0x0;var _0x44bf8c=_0xc788[_0x5842c3];return _0x44bf8c;};'use strict';var client=require(_0x8c78('0x0'));exports[_0x8c78('0x1')]=function(){return function(_0x2344ba){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x8c78('0x2'),_0x8c78('0x3'),_0x8c78('0x4'),_0x8c78('0x5'),_0x8c78('0x6')],'include':[{'model':'FreshdeskConfiguration','as':_0x8c78('0x7'),'attributes':['id',_0x8c78('0x2')],'include':[{'model':_0x8c78('0x8'),'attributes':['id',_0x8c78('0x2')]},{'model':_0x8c78('0x9'),'as':'Subjects','attributes':['id',_0x8c78('0xa'),_0x8c78('0xb'),_0x8c78('0xc')],'include':[{'model':_0x8c78('0xd'),'as':_0x8c78('0xd'),'attributes':['id',_0x8c78('0x2')]}]},{'model':'FreshdeskField','as':_0x8c78('0xe'),'attributes':['id','type',_0x8c78('0xb'),_0x8c78('0xf'),'keyType',_0x8c78('0x10'),_0x8c78('0xc')],'include':[{'model':'Variable','as':_0x8c78('0xd'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':_0x8c78('0x11'),'attributes':['id',_0x8c78('0xa'),_0x8c78('0xb'),_0x8c78('0x12'),_0x8c78('0x13'),_0x8c78('0x14'),_0x8c78('0xc')],'include':[{'model':_0x8c78('0xd'),'as':_0x8c78('0xd'),'attributes':['id',_0x8c78('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0x51c5=['FreshdeskField','type','content','variableName','Variable','key','keyType','keyContent','Fields','idField','nameField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag'];(function(_0x4ad29a,_0x96d404){var _0x95fa2c=function(_0x488e97){while(--_0x488e97){_0x4ad29a['push'](_0x4ad29a['shift']());}};_0x95fa2c(++_0x96d404);}(_0x51c5,0x8f));var _0x551c=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0x51c5[_0x40a825];return _0x273a54;};'use strict';var client=require(_0x551c('0x0'));exports[_0x551c('0x1')]=function(){return function(_0x3bdc26){return client[_0x551c('0x2')](_0x551c('0x3'),{'options':{'raw':![],'attributes':['id',_0x551c('0x4'),_0x551c('0x5'),'apiKey',_0x551c('0x6'),_0x551c('0x7')],'include':[{'model':_0x551c('0x8'),'as':_0x551c('0x9'),'attributes':['id',_0x551c('0x4')],'include':[{'model':_0x551c('0xa'),'attributes':['id',_0x551c('0x4')]},{'model':_0x551c('0xb'),'as':'Subjects','attributes':['id',_0x551c('0xc'),_0x551c('0xd'),_0x551c('0xe')],'include':[{'model':'Variable','as':_0x551c('0xf'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x551c('0xc'),'content',_0x551c('0x10'),_0x551c('0x11'),_0x551c('0x12'),_0x551c('0xe')],'include':[{'model':_0x551c('0xf'),'as':_0x551c('0xf'),'attributes':['id','name']}]},{'model':_0x551c('0xb'),'as':_0x551c('0x13'),'attributes':['id',_0x551c('0xc'),'content',_0x551c('0x14'),_0x551c('0x15'),'customField',_0x551c('0xe')],'include':[{'model':'Variable','as':_0x551c('0xf'),'attributes':['id',_0x551c('0x4')]}]}]}]},'log':_0x551c('0x3')});};};
\ No newline at end of file
index 8251e53..3e66515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['serverUrl','Configurations','Subjects','type','variableName','Variable','Descriptions','GetFreshsalesccount','../../client','Request','name','username','apiKey','remoteUri'];(function(_0x1352f0,_0x4cd565){var _0x1c2a82=function(_0x2a9b63){while(--_0x2a9b63){_0x1352f0['push'](_0x1352f0['shift']());}};_0x1c2a82(++_0x4cd565);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xee2f('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x521787){return client[_0xee2f('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0xee2f('0x2'),_0xee2f('0x3'),_0xee2f('0x4'),_0xee2f('0x5'),_0xee2f('0x6')],'include':[{'model':'FreshsalesConfiguration','as':_0xee2f('0x7'),'attributes':['id',_0xee2f('0x2')],'include':[{'model':'FreshsalesField','as':_0xee2f('0x8'),'attributes':['id',_0xee2f('0x9'),'content',_0xee2f('0xa')],'include':[{'model':'Variable','as':_0xee2f('0xb'),'attributes':['id',_0xee2f('0x2')]}]},{'model':'FreshsalesField','as':_0xee2f('0xc'),'attributes':['id',_0xee2f('0x9'),'content','key','keyType','keyContent',_0xee2f('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]}]}]},'log':_0xee2f('0xd')});};};
\ No newline at end of file
+var _0xdfa0=['Subjects','type','content','variableName','Variable','FreshsalesField','Descriptions','keyType','keyContent','../../client','Request','name','username','apiKey','serverUrl','Configurations'];(function(_0x5165c,_0x152cb6){var _0xa9f81=function(_0x49fe73){while(--_0x49fe73){_0x5165c['push'](_0x5165c['shift']());}};_0xa9f81(++_0x152cb6);}(_0xdfa0,0x69));var _0x0dfa=function(_0x92b32d,_0x55454a){_0x92b32d=_0x92b32d-0x0;var _0x49297e=_0xdfa0[_0x92b32d];return _0x49297e;};'use strict';var client=require(_0x0dfa('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x277084){return client[_0x0dfa('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x0dfa('0x2'),_0x0dfa('0x3'),_0x0dfa('0x4'),'remoteUri',_0x0dfa('0x5')],'include':[{'model':'FreshsalesConfiguration','as':_0x0dfa('0x6'),'attributes':['id',_0x0dfa('0x2')],'include':[{'model':'FreshsalesField','as':_0x0dfa('0x7'),'attributes':['id',_0x0dfa('0x8'),_0x0dfa('0x9'),_0x0dfa('0xa')],'include':[{'model':_0x0dfa('0xb'),'as':'Variable','attributes':['id',_0x0dfa('0x2')]}]},{'model':_0x0dfa('0xc'),'as':_0x0dfa('0xd'),'attributes':['id','type',_0x0dfa('0x9'),'key',_0x0dfa('0xe'),_0x0dfa('0xf'),_0x0dfa('0xa')],'include':[{'model':'Variable','as':_0x0dfa('0xb'),'attributes':['id',_0x0dfa('0x2')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index 2e3543b..b88739b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3609=['additionalSearchContact','additionalSearchLead','SalesforceField','Variable','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','remoteUri','clientId','clientSecret','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount'];(function(_0x31987c,_0x175dab){var _0x48e7d7=function(_0x46275c){while(--_0x46275c){_0x31987c['push'](_0x31987c['shift']());}};_0x48e7d7(++_0x175dab);}(_0x3609,0x101));var _0x9360=function(_0xa8e9eb,_0x232b61){_0xa8e9eb=_0xa8e9eb-0x0;var _0x543d15=_0x3609[_0xa8e9eb];return _0x543d15;};'use strict';var client=require(_0x9360('0x0'));exports[_0x9360('0x1')]=function(){return function(_0x224249){return client[_0x9360('0x2')](_0x9360('0x3'),{'options':{'raw':![],'attributes':['id',_0x9360('0x4'),_0x9360('0x5'),'password',_0x9360('0x6'),_0x9360('0x7'),_0x9360('0x8'),'securityToken','serverUrl','type'],'include':[{'model':_0x9360('0x9'),'as':_0x9360('0xa'),'attributes':['id','name',_0x9360('0xb'),_0x9360('0xc'),_0x9360('0xd'),_0x9360('0xe'),_0x9360('0xf'),_0x9360('0x10'),_0x9360('0x11')],'include':[{'model':_0x9360('0x12'),'as':'Subjects','include':[{'model':'Variable','as':_0x9360('0x13'),'attributes':['id',_0x9360('0x4')]}]},{'model':_0x9360('0x12'),'as':'Descriptions','include':[{'model':_0x9360('0x13'),'as':_0x9360('0x13'),'attributes':['id',_0x9360('0x4')]}]},{'model':_0x9360('0x12'),'as':_0x9360('0x14'),'include':[{'model':_0x9360('0x13'),'as':_0x9360('0x13'),'attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x16a2=['Descriptions','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','password','remoteUri','clientId','clientSecret','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchLead','SalesforceField','Variable','name'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x16a2,0x1d0));var _0x216a=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x16a2[_0x3e112d];return _0x531c31;};'use strict';var client=require(_0x216a('0x0'));exports[_0x216a('0x1')]=function(){return function(_0x25a6bf){return client[_0x216a('0x2')](_0x216a('0x3'),{'options':{'raw':![],'attributes':['id','name','username',_0x216a('0x4'),_0x216a('0x5'),_0x216a('0x6'),_0x216a('0x7'),'securityToken','serverUrl',_0x216a('0x8')],'include':[{'model':_0x216a('0x9'),'as':_0x216a('0xa'),'attributes':['id','name',_0x216a('0xb'),_0x216a('0xc'),_0x216a('0xd'),_0x216a('0xe'),'additionalSearchAccount','additionalSearchContact',_0x216a('0xf')],'include':[{'model':_0x216a('0x10'),'as':'Subjects','include':[{'model':_0x216a('0x11'),'as':_0x216a('0x11'),'attributes':['id',_0x216a('0x12')]}]},{'model':_0x216a('0x10'),'as':_0x216a('0x13'),'include':[{'model':'Variable','as':_0x216a('0x11'),'attributes':['id',_0x216a('0x12')]}]},{'model':'SalesforceField','as':_0x216a('0x14'),'include':[{'model':_0x216a('0x11'),'as':'Variable','attributes':['id',_0x216a('0x12')]}]}]}]},'log':_0x216a('0x3')});};};
\ No newline at end of file
index e352d4f..d275205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['keyContent','Fields','content','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','variableName','Variable','Descriptions','type','key'];(function(_0x58e61b,_0x524471){var _0x210861=function(_0x36dedc){while(--_0x36dedc){_0x58e61b['push'](_0x58e61b['shift']());}};_0x210861(++_0x524471);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xc4aa[_0x1969a7];return _0x3d665f;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(_0x40a0d0){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),'description','username','password',_0xac4a('0x5'),_0xac4a('0x6'),_0xac4a('0x7')],'include':[{'model':_0xac4a('0x8'),'as':_0xac4a('0x9'),'attributes':['id',_0xac4a('0x4')],'include':[{'model':_0xac4a('0xa'),'as':_0xac4a('0xb'),'attributes':['id','type','content',_0xac4a('0xc')],'include':[{'model':_0xac4a('0xd'),'as':_0xac4a('0xd'),'attributes':['id','name']}]},{'model':_0xac4a('0xa'),'as':_0xac4a('0xe'),'attributes':['id',_0xac4a('0xf'),'content',_0xac4a('0x10'),'keyType',_0xac4a('0x11'),'variableName'],'include':[{'model':_0xac4a('0xd'),'as':_0xac4a('0xd'),'attributes':['id',_0xac4a('0x4')]}]},{'model':'ServicenowField','as':_0xac4a('0x12'),'attributes':['id',_0xac4a('0xf'),_0xac4a('0x13'),_0xac4a('0x14'),_0xac4a('0x15'),_0xac4a('0x16'),_0xac4a('0xc')],'include':[{'model':_0xac4a('0xd'),'as':_0xac4a('0xd'),'attributes':['id',_0xac4a('0x4')]}]}]}]},'log':_0xac4a('0x17')});};};
\ No newline at end of file
+var _0xc6ac=['GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','variableName','Variable','content','key','keyContent','Fields','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x412805,_0x5a36e3){_0x412805=_0x412805-0x0;var _0x284bdd=_0xc6ac[_0x412805];return _0x284bdd;};'use strict';var client=require(_0xcc6a('0x0'));exports[_0xcc6a('0x1')]=function(){return function(_0x1b6e92){return client[_0xcc6a('0x2')](_0xcc6a('0x3'),{'options':{'raw':![],'attributes':['id',_0xcc6a('0x4'),_0xcc6a('0x5'),_0xcc6a('0x6'),_0xcc6a('0x7'),_0xcc6a('0x8'),_0xcc6a('0x9'),_0xcc6a('0xa')],'include':[{'model':_0xcc6a('0xb'),'as':_0xcc6a('0xc'),'attributes':['id','name'],'include':[{'model':_0xcc6a('0xd'),'as':_0xcc6a('0xe'),'attributes':['id',_0xcc6a('0xf'),'content',_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':_0xcc6a('0x11'),'attributes':['id',_0xcc6a('0x4')]}]},{'model':_0xcc6a('0xd'),'as':'Descriptions','attributes':['id',_0xcc6a('0xf'),_0xcc6a('0x12'),_0xcc6a('0x13'),'keyType',_0xcc6a('0x14'),_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':_0xcc6a('0xd'),'as':_0xcc6a('0x15'),'attributes':['id',_0xcc6a('0xf'),'content','idField',_0xcc6a('0x16'),_0xcc6a('0x17'),_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':_0xcc6a('0x11'),'attributes':['id',_0xcc6a('0x4')]}]}]}]},'log':_0xcc6a('0x18')});};};
\ No newline at end of file
index 0a9a45c..cc0e6ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','serverUrl','Configurations','type','content','variableName','Variable','key','keyType','Fields','idField'];(function(_0x3495e0,_0x18c15c){var _0x2ecd8b=function(_0x39b3e4){while(--_0x39b3e4){_0x3495e0['push'](_0x3495e0['shift']());}};_0x2ecd8b(++_0x18c15c);}(_0x5f66,0x1a0));var _0x65f6=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x5f66[_0x36eaaa];return _0x461349;};'use strict';var client=require('../../client');exports[_0x65f6('0x0')]=function(){return function(_0x4a3887){return client[_0x65f6('0x1')](_0x65f6('0x2'),{'options':{'raw':![],'attributes':['id',_0x65f6('0x3'),_0x65f6('0x4'),_0x65f6('0x5'),'remoteUri',_0x65f6('0x6')],'include':[{'model':'SugarcrmConfiguration','as':_0x65f6('0x7'),'attributes':['id',_0x65f6('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xc'),_0x65f6('0xd'),'keyContent',_0x65f6('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':_0x65f6('0xe'),'attributes':['id','type',_0x65f6('0x9'),_0x65f6('0xf'),_0x65f6('0x10'),_0x65f6('0x11'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]}]}]},'log':_0x65f6('0x2')});};};
\ No newline at end of file
+var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x41e890,_0x224ff6){var _0x32a523=function(_0x16ded0){while(--_0x16ded0){_0x41e890['push'](_0x41e890['shift']());}};_0x32a523(++_0x224ff6);}(_0x66fa,0x117));var _0xa66f=function(_0x30145c,_0x17cf23){_0x30145c=_0x30145c-0x0;var _0x3cab28=_0x66fa[_0x30145c];return _0x3cab28;};'use strict';var client=require(_0xa66f('0x0'));exports[_0xa66f('0x1')]=function(){return function(_0x52947a){return client[_0xa66f('0x2')](_0xa66f('0x3'),{'options':{'raw':![],'attributes':['id',_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8')],'include':[{'model':'SugarcrmConfiguration','as':'Configurations','attributes':['id',_0xa66f('0x4')],'include':[{'model':_0xa66f('0x9'),'as':_0xa66f('0xa'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0xe'),'attributes':['id','type','content','key',_0xa66f('0xf'),_0xa66f('0x10'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0x11'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'idField','nameField',_0xa66f('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa66f('0x4')]}]}]}]},'log':_0xa66f('0x3')});};};
\ No newline at end of file
index 74299a3..03bc31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8698=['Subjects','content','variableName','Variable','Descriptions','key','type','idField','customField','getVtigerAccounts','Request','GetVtigerAccount','name','description','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField'];(function(_0x30a334,_0x147d6d){var _0x3a1574=function(_0x51f3d8){while(--_0x51f3d8){_0x30a334['push'](_0x30a334['shift']());}};_0x3a1574(++_0x147d6d);}(_0x8698,0x15f));var _0x8869=function(_0xf17d5e,_0x5986b7){_0xf17d5e=_0xf17d5e-0x0;var _0x1550be=_0x8698[_0xf17d5e];return _0x1550be;};'use strict';var client=require('../../client');exports[_0x8869('0x0')]=function(){return function(_0xbe2692){return client[_0x8869('0x1')](_0x8869('0x2'),{'options':{'raw':![],'attributes':['id',_0x8869('0x3'),_0x8869('0x4'),'username','accessKey',_0x8869('0x5'),_0x8869('0x6')],'include':[{'model':_0x8869('0x7'),'as':_0x8869('0x8'),'attributes':['id',_0x8869('0x3')],'include':[{'model':_0x8869('0x9'),'as':_0x8869('0xa'),'attributes':['id','type',_0x8869('0xb'),_0x8869('0xc')],'include':[{'model':_0x8869('0xd'),'as':_0x8869('0xd'),'attributes':['id','name']}]},{'model':_0x8869('0x9'),'as':_0x8869('0xe'),'attributes':['id','type',_0x8869('0xb'),_0x8869('0xf'),'keyType','keyContent','variableName'],'include':[{'model':_0x8869('0xd'),'as':'Variable','attributes':['id',_0x8869('0x3')]}]},{'model':_0x8869('0x9'),'as':'Fields','attributes':['id',_0x8869('0x10'),_0x8869('0xb'),_0x8869('0x11'),'nameField',_0x8869('0x12'),_0x8869('0xc')],'include':[{'model':_0x8869('0xd'),'as':_0x8869('0xd'),'attributes':['id',_0x8869('0x3')]}]}]}]},'log':_0x8869('0x2')});};};
\ No newline at end of file
+var _0x4e23=['getVtigerAccounts','Request','GetVtigerAccount','name','description','username','accessKey','remoteUri','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField'];(function(_0x5f4749,_0x50acc3){var _0x57d267=function(_0x384399){while(--_0x384399){_0x5f4749['push'](_0x5f4749['shift']());}};_0x57d267(++_0x50acc3);}(_0x4e23,0x1ce));var _0x34e2=function(_0x22031f,_0xb8ceca){_0x22031f=_0x22031f-0x0;var _0x362fcb=_0x4e23[_0x22031f];return _0x362fcb;};'use strict';var client=require('../../client');exports[_0x34e2('0x0')]=function(){return function(_0x2d0a01){return client[_0x34e2('0x1')](_0x34e2('0x2'),{'options':{'raw':![],'attributes':['id',_0x34e2('0x3'),_0x34e2('0x4'),_0x34e2('0x5'),_0x34e2('0x6'),_0x34e2('0x7'),'serverUrl'],'include':[{'model':_0x34e2('0x8'),'as':_0x34e2('0x9'),'attributes':['id','name'],'include':[{'model':_0x34e2('0xa'),'as':_0x34e2('0xb'),'attributes':['id',_0x34e2('0xc'),_0x34e2('0xd'),_0x34e2('0xe')],'include':[{'model':_0x34e2('0xf'),'as':_0x34e2('0xf'),'attributes':['id',_0x34e2('0x3')]}]},{'model':_0x34e2('0xa'),'as':_0x34e2('0x10'),'attributes':['id','type',_0x34e2('0xd'),'key',_0x34e2('0x11'),_0x34e2('0x12'),'variableName'],'include':[{'model':_0x34e2('0xf'),'as':_0x34e2('0xf'),'attributes':['id','name']}]},{'model':_0x34e2('0xa'),'as':_0x34e2('0x13'),'attributes':['id',_0x34e2('0xc'),'content',_0x34e2('0x14'),_0x34e2('0x15'),'customField','variableName'],'include':[{'model':_0x34e2('0xf'),'as':_0x34e2('0xf'),'attributes':['id',_0x34e2('0x3')]}]}]}]},'log':_0x34e2('0x2')});};};
\ No newline at end of file
index 0db2c90..499add3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ff=['keyContent','Fields','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','token','remoteUri','authType','serverUrl','type','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x11ff,0x17b));var _0xf11f=function(_0x34536f,_0x54ebca){_0x34536f=_0x34536f-0x0;var _0x13945b=_0x11ff[_0x34536f];return _0x13945b;};'use strict';var client=require(_0xf11f('0x0'));exports[_0xf11f('0x1')]=function(){return function(_0x18911b){return client[_0xf11f('0x2')](_0xf11f('0x3'),{'options':{'raw':![],'attributes':['id',_0xf11f('0x4'),_0xf11f('0x5'),'password',_0xf11f('0x6'),_0xf11f('0x7'),_0xf11f('0x8'),_0xf11f('0x9'),_0xf11f('0xa')],'include':[{'model':'ZendeskConfiguration','as':_0xf11f('0xb'),'attributes':['id','name'],'include':[{'model':_0xf11f('0xc'),'attributes':['id',_0xf11f('0x4')]},{'model':_0xf11f('0xd'),'as':_0xf11f('0xe'),'attributes':['id','type',_0xf11f('0xf'),_0xf11f('0x10')],'include':[{'model':_0xf11f('0x11'),'as':_0xf11f('0x11'),'attributes':['id',_0xf11f('0x4')]}]},{'model':_0xf11f('0xd'),'as':_0xf11f('0x12'),'attributes':['id','type',_0xf11f('0xf'),_0xf11f('0x13'),_0xf11f('0x14'),_0xf11f('0x15'),'variableName'],'include':[{'model':_0xf11f('0x11'),'as':_0xf11f('0x11'),'attributes':['id',_0xf11f('0x4')]}]},{'model':_0xf11f('0xd'),'as':_0xf11f('0x16'),'attributes':['id',_0xf11f('0xa'),_0xf11f('0xf'),'idField',_0xf11f('0x17'),_0xf11f('0x18'),_0xf11f('0x10')],'include':[{'model':_0xf11f('0x11'),'as':_0xf11f('0x11'),'attributes':['id',_0xf11f('0x4')]}]}]}]},'log':_0xf11f('0x3')});};};
\ No newline at end of file
+var _0xb03f=['getZendeskAccounts','Request','GetZendeskAccount','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','name','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','idField','customField','../../client'];(function(_0xd430d7,_0x2fe027){var _0x16d35d=function(_0x38de04){while(--_0x38de04){_0xd430d7['push'](_0xd430d7['shift']());}};_0x16d35d(++_0x2fe027);}(_0xb03f,0x144));var _0xfb03=function(_0x14b74f,_0xf24abd){_0x14b74f=_0x14b74f-0x0;var _0x11f35e=_0xb03f[_0x14b74f];return _0x11f35e;};'use strict';var client=require(_0xfb03('0x0'));exports[_0xfb03('0x1')]=function(){return function(_0x522a23){return client[_0xfb03('0x2')](_0xfb03('0x3'),{'options':{'raw':![],'attributes':['id','name','username',_0xfb03('0x4'),_0xfb03('0x5'),_0xfb03('0x6'),_0xfb03('0x7'),_0xfb03('0x8'),_0xfb03('0x9')],'include':[{'model':_0xfb03('0xa'),'as':_0xfb03('0xb'),'attributes':['id',_0xfb03('0xc')],'include':[{'model':_0xfb03('0xd'),'attributes':['id',_0xfb03('0xc')]},{'model':_0xfb03('0xe'),'as':_0xfb03('0xf'),'attributes':['id',_0xfb03('0x9'),_0xfb03('0x10'),_0xfb03('0x11')],'include':[{'model':_0xfb03('0x12'),'as':_0xfb03('0x12'),'attributes':['id',_0xfb03('0xc')]}]},{'model':_0xfb03('0xe'),'as':_0xfb03('0x13'),'attributes':['id','type','content',_0xfb03('0x14'),_0xfb03('0x15'),_0xfb03('0x16'),_0xfb03('0x11')],'include':[{'model':_0xfb03('0x12'),'as':'Variable','attributes':['id',_0xfb03('0xc')]}]},{'model':_0xfb03('0xe'),'as':'Fields','attributes':['id',_0xfb03('0x9'),_0xfb03('0x10'),_0xfb03('0x17'),'nameField',_0xfb03('0x18'),_0xfb03('0x11')],'include':[{'model':_0xfb03('0x12'),'as':_0xfb03('0x12'),'attributes':['id',_0xfb03('0xc')]}]}]}]},'log':_0xfb03('0x3')});};};
\ No newline at end of file
index 452693a..871c2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c05=['clientId','clientSecret','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','Subjects','content','variableName','Variable','ZohoField','key','keyType','keyContent','name','Fields','idField','nameField','customField','GetZohoAccount','../../client','getZohoAccounts','Request','host'];(function(_0x3f1718,_0x5360ad){var _0x29627e=function(_0x18abc1){while(--_0x18abc1){_0x3f1718['push'](_0x3f1718['shift']());}};_0x29627e(++_0x5360ad);}(_0x0c05,0x1b6));var _0x50c0=function(_0x160606,_0x38d60b){_0x160606=_0x160606-0x0;var _0x3457e6=_0x0c05[_0x160606];return _0x3457e6;};'use strict';var client=require(_0x50c0('0x0'));exports[_0x50c0('0x1')]=function(){return function(_0x805ea0){return client[_0x50c0('0x2')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id','name','description',_0x50c0('0x3'),'zone',_0x50c0('0x4'),_0x50c0('0x5'),'serverUrl',_0x50c0('0x6'),_0x50c0('0x7')],'include':[{'model':_0x50c0('0x8'),'as':_0x50c0('0x9'),'attributes':['id','name',_0x50c0('0xa'),_0x50c0('0xb'),'description'],'include':[{'model':'ZohoField','as':_0x50c0('0xc'),'attributes':['id','type',_0x50c0('0xd'),_0x50c0('0xe')],'include':[{'model':_0x50c0('0xf'),'as':'Variable','attributes':['id','name']}]},{'model':_0x50c0('0x10'),'as':'Descriptions','attributes':['id','type','content',_0x50c0('0x11'),_0x50c0('0x12'),_0x50c0('0x13'),_0x50c0('0xe')],'include':[{'model':_0x50c0('0xf'),'as':_0x50c0('0xf'),'attributes':['id',_0x50c0('0x14')]}]},{'model':_0x50c0('0x10'),'as':_0x50c0('0x15'),'attributes':['id','type',_0x50c0('0xd'),_0x50c0('0x16'),_0x50c0('0x17'),_0x50c0('0x18'),_0x50c0('0xe')],'include':[{'model':_0x50c0('0xf'),'as':_0x50c0('0xf'),'attributes':['id',_0x50c0('0x14')]}]}]}]},'log':_0x50c0('0x19')});};};
\ No newline at end of file
+var _0xc76f=['Configurations','moduleCreate','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration'];(function(_0x23e36d,_0x502fe1){var _0x639868=function(_0x1300bf){while(--_0x1300bf){_0x23e36d['push'](_0x23e36d['shift']());}};_0x639868(++_0x502fe1);}(_0xc76f,0x75));var _0xfc76=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc76f[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../../client');exports[_0xfc76('0x0')]=function(){return function(_0x5e672b){return client[_0xfc76('0x1')](_0xfc76('0x2'),{'options':{'raw':![],'attributes':['id',_0xfc76('0x3'),_0xfc76('0x4'),_0xfc76('0x5'),_0xfc76('0x6'),_0xfc76('0x7'),_0xfc76('0x8'),_0xfc76('0x9'),_0xfc76('0xa'),_0xfc76('0xb')],'include':[{'model':_0xfc76('0xc'),'as':_0xfc76('0xd'),'attributes':['id','name',_0xfc76('0xe'),'moduleSearch',_0xfc76('0x4')],'include':[{'model':_0xfc76('0xf'),'as':_0xfc76('0x10'),'attributes':['id',_0xfc76('0x11'),_0xfc76('0x12'),_0xfc76('0x13')],'include':[{'model':_0xfc76('0x14'),'as':_0xfc76('0x14'),'attributes':['id','name']}]},{'model':_0xfc76('0xf'),'as':_0xfc76('0x15'),'attributes':['id','type',_0xfc76('0x12'),'key',_0xfc76('0x16'),_0xfc76('0x17'),'variableName'],'include':[{'model':_0xfc76('0x14'),'as':_0xfc76('0x14'),'attributes':['id',_0xfc76('0x3')]}]},{'model':_0xfc76('0xf'),'as':_0xfc76('0x18'),'attributes':['id',_0xfc76('0x11'),_0xfc76('0x12'),_0xfc76('0x19'),'nameField','customField','variableName'],'include':[{'model':_0xfc76('0x14'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xfc76('0x2')});};};
\ No newline at end of file
index f923373..7e997af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57c4=['accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','TALKING','starttime','endtime','dialstring','lodash','../client','voiceQueueReport','queuecallercompleteAt','voice','isNil','interface','format','SIP/%s','queuecallerleaveAt','diff','seconds','exten','queue','agent'];(function(_0x46060a,_0x4ed109){var _0x119e5e=function(_0x3d880d){while(--_0x3d880d){_0x46060a['push'](_0x46060a['shift']());}};_0x119e5e(++_0x4ed109);}(_0x57c4,0x81));var _0x457c=function(_0x37e89a,_0xfa9d08){_0x37e89a=_0x37e89a-0x0;var _0x459c5e=_0x57c4[_0x37e89a];return _0x459c5e;};'use strict';var moment=require('moment');var _=require(_0x457c('0x0'));var util=require('util');var client=require(_0x457c('0x1'));exports[_0x457c('0x2')]=function(_0x3a5f1a){var _0x5ddaf7=_0x3a5f1a[_0x457c('0x3')]||_0x3a5f1a['queuecallerexitAt'];return client['Request']('CreateMemberReport',{'body':{'channel':_0x457c('0x4'),'membername':_0x3a5f1a['lastAssignedTo'],'interface':_[_0x457c('0x5')](_0x3a5f1a[_0x457c('0x6')])?util[_0x457c('0x7')](_0x457c('0x8'),_0x3a5f1a['lastAssignedTo']):_0x3a5f1a[_0x457c('0x6')],'type':'TALKING','enterAt':_0x3a5f1a[_0x457c('0x9')],'exitAt':_0x5ddaf7,'duration':moment(_0x5ddaf7)[_0x457c('0xa')](_0x3a5f1a[_0x457c('0x9')],_0x457c('0xb')),'data1':'inbound','data2':_0x3a5f1a['calleridnum'],'data3':_0x3a5f1a[_0x457c('0xc')],'data4':null,'data5':_0x3a5f1a[_0x457c('0xd')],'role':_0x457c('0xe'),'internal':_0x3a5f1a[_0x457c('0xf')]?_[_0x457c('0x10')](_0x3a5f1a[_0x457c('0xf')]):undefined,'uniqueid':_0x3a5f1a[_0x457c('0x11')]},'log':_0x457c('0x12')});};exports[_0x457c('0x13')]=function(_0x5eac88){return client['Request']('CreateMemberReport',{'body':{'channel':_0x457c('0x4'),'membername':_0x5eac88['membername'],'interface':_0x5eac88[_0x457c('0x6')],'type':_0x457c('0x14'),'enterAt':_0x5eac88[_0x457c('0x15')],'exitAt':_0x5eac88[_0x457c('0x16')],'duration':moment(_0x5eac88[_0x457c('0x16')])[_0x457c('0xa')](_0x5eac88[_0x457c('0x15')],'seconds')>=0x0?moment(_0x5eac88[_0x457c('0x16')])['diff'](_0x5eac88[_0x457c('0x15')],_0x457c('0xb')):null,'data1':'outbound','data2':_0x5eac88[_0x457c('0xf')],'data3':_0x5eac88[_0x457c('0xc')],'data4':_0x5eac88[_0x457c('0x17')]||null,'role':'agent','internal':_0x5eac88[_0x457c('0xf')]?_[_0x457c('0x10')](_0x5eac88[_0x457c('0xf')]):undefined,'uniqueid':_0x5eac88['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x71d2=['queuecallerexitAt','CreateMemberReport','voice','isNil','interface','format','lastAssignedTo','TALKING','diff','queuecallerleaveAt','seconds','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','Request','membername','starttime','endtime','dialstring','moment','lodash','util','../client','queuecallercompleteAt'];(function(_0x2383d8,_0x41eba0){var _0x57b158=function(_0x24d26b){while(--_0x24d26b){_0x2383d8['push'](_0x2383d8['shift']());}};_0x57b158(++_0x41eba0);}(_0x71d2,0x91));var _0x271d=function(_0x43a1c6,_0x33f2c7){_0x43a1c6=_0x43a1c6-0x0;var _0x202320=_0x71d2[_0x43a1c6];return _0x202320;};'use strict';var moment=require(_0x271d('0x0'));var _=require(_0x271d('0x1'));var util=require(_0x271d('0x2'));var client=require(_0x271d('0x3'));exports['voiceQueueReport']=function(_0x2165c0){var _0x295e0b=_0x2165c0[_0x271d('0x4')]||_0x2165c0[_0x271d('0x5')];return client['Request'](_0x271d('0x6'),{'body':{'channel':_0x271d('0x7'),'membername':_0x2165c0['lastAssignedTo'],'interface':_[_0x271d('0x8')](_0x2165c0[_0x271d('0x9')])?util[_0x271d('0xa')]('SIP/%s',_0x2165c0[_0x271d('0xb')]):_0x2165c0[_0x271d('0x9')],'type':_0x271d('0xc'),'enterAt':_0x2165c0['queuecallerleaveAt'],'exitAt':_0x295e0b,'duration':moment(_0x295e0b)[_0x271d('0xd')](_0x2165c0[_0x271d('0xe')],_0x271d('0xf')),'data1':_0x271d('0x10'),'data2':_0x2165c0[_0x271d('0x11')],'data3':_0x2165c0[_0x271d('0x12')],'data4':null,'data5':_0x2165c0[_0x271d('0x13')],'role':_0x271d('0x14'),'internal':_0x2165c0[_0x271d('0x15')]?_[_0x271d('0x16')](_0x2165c0[_0x271d('0x15')]):undefined,'uniqueid':_0x2165c0[_0x271d('0x17')]},'log':_0x271d('0x6')});};exports[_0x271d('0x18')]=function(_0x32041f){return client[_0x271d('0x19')](_0x271d('0x6'),{'body':{'channel':_0x271d('0x7'),'membername':_0x32041f[_0x271d('0x1a')],'interface':_0x32041f[_0x271d('0x9')],'type':_0x271d('0xc'),'enterAt':_0x32041f[_0x271d('0x1b')],'exitAt':_0x32041f[_0x271d('0x1c')],'duration':moment(_0x32041f[_0x271d('0x1c')])[_0x271d('0xd')](_0x32041f[_0x271d('0x1b')],'seconds')>=0x0?moment(_0x32041f[_0x271d('0x1c')])[_0x271d('0xd')](_0x32041f['starttime'],_0x271d('0xf')):null,'data1':'outbound','data2':_0x32041f['accountcode'],'data3':_0x32041f[_0x271d('0x12')],'data4':_0x32041f[_0x271d('0x1d')]||null,'role':'agent','internal':_0x32041f[_0x271d('0x15')]?_[_0x271d('0x16')](_0x32041f[_0x271d('0x15')]):undefined,'uniqueid':_0x32041f[_0x271d('0x17')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index 4db5a65..3965819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a2=['GetSettings','../client','getSettings','ShowSetting','previewRecallmeReminderInterval'];(function(_0x1f60e7,_0xa354c6){var _0x5b0986=function(_0x5d8535){while(--_0x5d8535){_0x1f60e7['push'](_0x1f60e7['shift']());}};_0x5b0986(++_0xa354c6);}(_0x63a2,0x1e1));var _0x263a=function(_0x1d2021,_0xe0d37a){_0x1d2021=_0x1d2021-0x0;var _0x39d801=_0x63a2[_0x1d2021];return _0x39d801;};'use strict';var client=require(_0x263a('0x0'));exports[_0x263a('0x1')]=function(){return client['Request'](_0x263a('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0x263a('0x3')]},'log':_0x263a('0x4')});};
\ No newline at end of file
+var _0x9a43=['previewRecallmeReminderInterval','getSettings','Request','ShowSetting','stopRecordingOnTransfer'];(function(_0x3e5171,_0x5dde49){var _0xb6f4e7=function(_0x53f8a0){while(--_0x53f8a0){_0x3e5171['push'](_0x3e5171['shift']());}};_0xb6f4e7(++_0x5dde49);}(_0x9a43,0x15a));var _0x39a4=function(_0x570c8a,_0x4a11cc){_0x570c8a=_0x570c8a-0x0;var _0x25dc12=_0x9a43[_0x570c8a];return _0x25dc12;};'use strict';var client=require('../client');exports[_0x39a4('0x0')]=function(){return client[_0x39a4('0x1')](_0x39a4('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x39a4('0x3'),_0x39a4('0x4')]},'log':'GetSettings'});};
\ No newline at end of file
index a5491b5..5cb7a84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd1=['../client','getTemplates','name','html','GetTemplate'];(function(_0x17ca23,_0x11c7d3){var _0x385e5c=function(_0x1d1d87){while(--_0x1d1d87){_0x17ca23['push'](_0x17ca23['shift']());}};_0x385e5c(++_0x11c7d3);}(_0x4fd1,0xe6));var _0x14fd=function(_0x49f5ea,_0x508a84){_0x49f5ea=_0x49f5ea-0x0;var _0x5858e8=_0x4fd1[_0x49f5ea];return _0x5858e8;};'use strict';var client=require(_0x14fd('0x0'));exports[_0x14fd('0x1')]=function(_0x15a3d3){return function(_0x1e17a8){return client['Request']('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0x14fd('0x2'),_0x14fd('0x3')]},'log':_0x14fd('0x4')});};};
\ No newline at end of file
+var _0x85d6=['html','getTemplates','GetTemplate','name'];(function(_0x21fd49,_0x3280d0){var _0x45b65c=function(_0x5a78d3){while(--_0x5a78d3){_0x21fd49['push'](_0x21fd49['shift']());}};_0x45b65c(++_0x3280d0);}(_0x85d6,0xed));var _0x685d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x85d6[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0x685d('0x0')]=function(_0x329044){return function(_0x1e38fd){return client['Request'](_0x685d('0x1'),{'options':{'raw':!![],'attributes':['id',_0x685d('0x2'),_0x685d('0x3')]},'log':_0x685d('0x1')});};};
\ No newline at end of file
index 73902c8..e3c604f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b1b=['channel','Condition','AllConditions','field','operator','value','Actions','action','data1','data2','data3','data4','data5','../client','getTriggers','Request','GetTrigger','name'];(function(_0x39955f,_0x559ce3){var _0x59f57f=function(_0x440809){while(--_0x440809){_0x39955f['push'](_0x39955f['shift']());}};_0x59f57f(++_0x559ce3);}(_0x7b1b,0x1e1));var _0xb7b1=function(_0x2def49,_0x1b9caf){_0x2def49=_0x2def49-0x0;var _0xff62f9=_0x7b1b[_0x2def49];return _0xff62f9;};'use strict';var client=require(_0xb7b1('0x0'));exports[_0xb7b1('0x1')]=function(_0x5c0d3f){return function(_0x204884){return client[_0xb7b1('0x2')](_0xb7b1('0x3'),{'options':{'raw':![],'attributes':['id',_0xb7b1('0x4'),_0xb7b1('0x5'),'status'],'include':[{'model':_0xb7b1('0x6'),'as':_0xb7b1('0x7'),'attributes':['id',_0xb7b1('0x8'),_0xb7b1('0x9'),'value']},{'model':_0xb7b1('0x6'),'as':'AnyConditions','attributes':['id',_0xb7b1('0x8'),_0xb7b1('0x9'),_0xb7b1('0xa')]},{'model':'Action','as':_0xb7b1('0xb'),'attributes':['id',_0xb7b1('0xc'),_0xb7b1('0xd'),_0xb7b1('0xe'),_0xb7b1('0xf'),_0xb7b1('0x10'),_0xb7b1('0x11'),'data6','data7']}]},'log':_0xb7b1('0x3')});};};
\ No newline at end of file
+var _0x07e8=['name','channel','AllConditions','field','operator','value','Condition','AnyConditions','Action','Actions','action','data2','data5','data6','data7','../client','getTriggers','Request','GetTrigger'];(function(_0x4df13e,_0x5bf60f){var _0x1f273a=function(_0xef2b2a){while(--_0xef2b2a){_0x4df13e['push'](_0x4df13e['shift']());}};_0x1f273a(++_0x5bf60f);}(_0x07e8,0x12c));var _0x807e=function(_0x20ff81,_0x2c8ff8){_0x20ff81=_0x20ff81-0x0;var _0x3230b4=_0x07e8[_0x20ff81];return _0x3230b4;};'use strict';var client=require(_0x807e('0x0'));exports[_0x807e('0x1')]=function(_0x2cf700){return function(_0x2e9a28){return client[_0x807e('0x2')](_0x807e('0x3'),{'options':{'raw':![],'attributes':['id',_0x807e('0x4'),_0x807e('0x5'),'status'],'include':[{'model':'Condition','as':_0x807e('0x6'),'attributes':['id',_0x807e('0x7'),_0x807e('0x8'),_0x807e('0x9')]},{'model':_0x807e('0xa'),'as':_0x807e('0xb'),'attributes':['id','field',_0x807e('0x8'),'value']},{'model':_0x807e('0xc'),'as':_0x807e('0xd'),'attributes':['id',_0x807e('0xe'),'data1',_0x807e('0xf'),'data3','data4',_0x807e('0x10'),_0x807e('0x11'),_0x807e('0x12')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
index 016b628..3654839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd35=['name','defaultuser','GetTrunk','../client','getTrunks','Request'];(function(_0x44fd04,_0x5c1365){var _0x17eac5=function(_0x834a03){while(--_0x834a03){_0x44fd04['push'](_0x44fd04['shift']());}};_0x17eac5(++_0x5c1365);}(_0xbd35,0x153));var _0x5bd3=function(_0x30916f,_0x59365e){_0x30916f=_0x30916f-0x0;var _0x4cc1f9=_0xbd35[_0x30916f];return _0x4cc1f9;};'use strict';var client=require(_0x5bd3('0x0'));exports[_0x5bd3('0x1')]=function(_0x5488b5){return function(_0x554dbe){return client[_0x5bd3('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x5bd3('0x3'),'registry',_0x5bd3('0x4')]},'log':_0x5bd3('0x5')});};};
\ No newline at end of file
+var _0xe647=['../client','getTrunks','Request','GetTrunk','defaultuser'];(function(_0x85391a,_0x2f217b){var _0xef269b=function(_0x356807){while(--_0x356807){_0x85391a['push'](_0x85391a['shift']());}};_0xef269b(++_0x2f217b);}(_0xe647,0x16d));var _0x7e64=function(_0x3f467d,_0xe31610){_0x3f467d=_0x3f467d-0x0;var _0x149c5f=_0xe647[_0x3f467d];return _0x149c5f;};'use strict';var client=require(_0x7e64('0x0'));exports[_0x7e64('0x1')]=function(_0x54aaab){return function(_0x41d99f){return client[_0x7e64('0x2')](_0x7e64('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0x7e64('0x4')]},'log':_0x7e64('0x3')});};};
\ No newline at end of file
index 40c829f..17626f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x305b74,_0x44661a){var _0x14c08b=function(_0x6531c8){while(--_0x6531c8){_0x305b74['push'](_0x305b74['shift']());}};_0x14c08b(++_0x44661a);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'where':{'role':_0x3071('0x2')},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),'accountcode',_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),_0x3071('0xb'),_0x3071('0xc'),_0x3071('0xd')]},'log':_0x3071('0xe')});};};exports[_0x3071('0xf')]=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x3071('0x3'),_0x3071('0x10'),_0x3071('0x11')]},'log':_0x3071('0xf')});};};exports[_0x3071('0x12')]=function(_0x4a470a,_0x2ace21,_0x11a7ee){return client[_0x3071('0x0')](_0x3071('0x13'),{'body':{'type':_0x2ace21,'uniqueid':_0x11a7ee},'options':{'where':{'id':_0x4a470a['id']}},'log':_0x3071('0x12')});};exports['saveUnpause']=function(_0x5330a8){return client[_0x3071('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5330a8['id']}},'log':_0x3071('0x12')});};exports[_0x3071('0x14')]=function(_0x5d4883){return client[_0x3071('0x0')]('ShowUser',{'options':{'raw':![],'where':{'role':_0x3071('0x2'),'id':_0x5d4883},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),_0x3071('0x10'),_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),'interface']},'log':_0x3071('0x14')});};
\ No newline at end of file
+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(_0x5d1248,_0x5135b4){var _0x3bab4e=function(_0x47536f){while(--_0x47536f){_0x5d1248['push'](_0x5d1248['shift']());}};_0x3bab4e(++_0x5135b4);}(_0x9c44,0x178));var _0x49c4=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x9c44[_0xdea41a];return _0x15d0d8;};'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 c18cc1a..85e8c04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02b=['../client','create','Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport'];(function(_0x59937c,_0x42312f){var _0x15b8fc=function(_0x2ae3ed){while(--_0x2ae3ed){_0x59937c['push'](_0x59937c['shift']());}};_0x15b8fc(++_0x42312f);}(_0xf02b,0x132));var _0xbf02=function(_0x46369a,_0x141daa){_0x46369a=_0x46369a-0x0;var _0x59e91d=_0xf02b[_0x46369a];return _0x59e91d;};'use strict';var client=require(_0xbf02('0x0'));exports[_0xbf02('0x1')]=function(_0x919c78){return client[_0xbf02('0x2')](_0xbf02('0x3'),{'body':_0x919c78,'log':_0xbf02('0x3')});};exports[_0xbf02('0x4')]=function(_0x4546d3,_0x43cdb9,_0x5e15d0){return client[_0xbf02('0x2')]('UpdateVoiceAgentReport',{'body':_0x4546d3,'options':{'where':{'uniqueid':_0x43cdb9,'interface':_0x5e15d0,'agentcomplete':!![]}},'log':_0xbf02('0x5')});};
\ No newline at end of file
+var _0x50af=['update','UpdateVoiceAgentReport','../client','create','CreateVoiceAgentReport'];(function(_0x386b03,_0x292b9c){var _0x51d5f0=function(_0x75b8c9){while(--_0x75b8c9){_0x386b03['push'](_0x386b03['shift']());}};_0x51d5f0(++_0x292b9c);}(_0x50af,0x124));var _0xf50a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x50af[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xf50a('0x0'));exports[_0xf50a('0x1')]=function(_0x578936){return client['Request'](_0xf50a('0x2'),{'body':_0x578936,'log':_0xf50a('0x2')});};exports[_0xf50a('0x3')]=function(_0x4dcfd8,_0x554023,_0x1a6e25){return client['Request'](_0xf50a('0x4'),{'body':_0x4dcfd8,'options':{'where':{'uniqueid':_0x554023,'interface':_0x1a6e25,'agentcomplete':!![]}},'log':_0xf50a('0x4')});};
\ No newline at end of file
index 2fd52c5..dd69f36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9332=['GetVoiceCallReport','startOf','day','YYYY-MM-DD\x20HH:mm:ss','duration','GetVoiceCallReports','moment','util','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION'];(function(_0x310fb1,_0x197f47){var _0x585fca=function(_0x201dd2){while(--_0x201dd2){_0x310fb1['push'](_0x310fb1['shift']());}};_0x585fca(++_0x197f47);}(_0x9332,0x1b6));var _0x2933=function(_0x276cfa,_0x100d20){_0x276cfa=_0x276cfa-0x0;var _0x2a81b4=_0x9332[_0x276cfa];return _0x2a81b4;};'use strict';var moment=require(_0x2933('0x0'));var util=require(_0x2933('0x1'));var _=require('lodash');var client=require('../client');exports[_0x2933('0x2')]=function(_0x31bb2c){return client[_0x2933('0x3')](_0x2933('0x4'),{'body':_[_0x2933('0x5')](_0x31bb2c,{'source':_0x31bb2c[_0x2933('0x6')],'destinationcontext':_0x31bb2c[_0x2933('0x7')],'callerid':_0x31bb2c[_0x2933('0x8')],'amaflags':_0x2933('0x9')}),'log':_0x2933('0x4')});};exports['getVoiceCallReports']=function(){return function(){return client['Request'](_0x2933('0xa'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x2933('0xb')](_0x2933('0xc'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf']('day')['format'](_0x2933('0xd'))]}},'attributes':['type','disposition',_0x2933('0xe'),'billableseconds']},'log':_0x2933('0xf')});};};
\ No newline at end of file
+var _0x6b32=['context','DOCUMENTATION','getVoiceCallReports','Request','outbound','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','create','CreateVoiceCallReport','calleridnum'];(function(_0x44fa43,_0xe30b91){var _0xc751e2=function(_0x30b3d1){while(--_0x30b3d1){_0x44fa43['push'](_0x44fa43['shift']());}};_0xc751e2(++_0xe30b91);}(_0x6b32,0x162));var _0x26b3=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x6b32[_0xa464c9];return _0x3d73c4;};'use strict';var moment=require(_0x26b3('0x0'));var util=require(_0x26b3('0x1'));var _=require(_0x26b3('0x2'));var client=require('../client');exports[_0x26b3('0x3')]=function(_0x23d39b){return client['Request'](_0x26b3('0x4'),{'body':_['merge'](_0x23d39b,{'source':_0x23d39b[_0x26b3('0x5')],'destinationcontext':_0x23d39b[_0x26b3('0x6')],'callerid':_0x23d39b['callerid'],'amaflags':_0x26b3('0x7')}),'log':_0x26b3('0x4')});};exports[_0x26b3('0x8')]=function(){return function(){return client[_0x26b3('0x9')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x26b3('0xa')],'createdAt':{'$between':[moment()['startOf'](_0x26b3('0xb'))[_0x26b3('0xc')](_0x26b3('0xd')),moment()[_0x26b3('0xe')](_0x26b3('0xb'))[_0x26b3('0xc')](_0x26b3('0xd'))]}},'attributes':['type','disposition',_0x26b3('0xf'),_0x26b3('0x10')]},'log':_0x26b3('0x11')});};};
\ No newline at end of file
index 4f39a66..a6d8838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe4=['Request','CreateVoiceDialReport','../client'];(function(_0x58c8f2,_0x16ea3b){var _0x5ed5d6=function(_0x504dc0){while(--_0x504dc0){_0x58c8f2['push'](_0x58c8f2['shift']());}};_0x5ed5d6(++_0x16ea3b);}(_0xbfe4,0xd4));var _0x4bfe=function(_0x18a12a,_0x30ba3a){_0x18a12a=_0x18a12a-0x0;var _0x38434b=_0xbfe4[_0x18a12a];return _0x38434b;};'use strict';var client=require(_0x4bfe('0x0'));exports['create']=function(_0x565e9a){return client[_0x4bfe('0x1')](_0x4bfe('0x2'),{'body':_0x565e9a,'log':_0x4bfe('0x2')});};
\ No newline at end of file
+var _0xcf68=['create','CreateVoiceDialReport','../client'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xcf68,0x119));var _0x8cf6=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xcf68[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0x8cf6('0x0'));exports[_0x8cf6('0x1')]=function(_0x41d380){return client['Request'](_0x8cf6('0x2'),{'body':_0x41d380,'log':_0x8cf6('0x2')});};
\ No newline at end of file
index 5fc04ed..b496463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb74=['getVoiceExtensions','Request','GetVoiceExtension','exten','recordingFormat','../client'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xeb74,0xe3));var _0x4eb7=function(_0x9bcfa6,_0x21a3fb){_0x9bcfa6=_0x9bcfa6-0x0;var _0x19d7b8=_0xeb74[_0x9bcfa6];return _0x19d7b8;};'use strict';var client=require(_0x4eb7('0x0'));exports[_0x4eb7('0x1')]=function(){return function(){return client[_0x4eb7('0x2')](_0x4eb7('0x3'),{'options':{'raw':!![],'attributes':['id',_0x4eb7('0x4'),_0x4eb7('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x4eb7('0x1')});};};
\ No newline at end of file
+var _0x6f7a=['../client','getVoiceExtensions','Request','GetVoiceExtension','recordingFormat'];(function(_0x37eb7c,_0x3f53f0){var _0x1a1167=function(_0x48f751){while(--_0x48f751){_0x37eb7c['push'](_0x37eb7c['shift']());}};_0x1a1167(++_0x3f53f0);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x5b90de,_0xc45d3){_0x5b90de=_0x5b90de-0x0;var _0x563fcb=_0x6f7a[_0x5b90de];return _0x563fcb;};'use strict';var client=require(_0xa6f7('0x0'));exports[_0xa6f7('0x1')]=function(){return function(){return client[_0xa6f7('0x2')](_0xa6f7('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0xa6f7('0x4')],'where':{'VoiceExtensionId':null}},'log':_0xa6f7('0x1')});};};
\ No newline at end of file
index c62691f..787c26b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6abb=['Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','autopause','monitor_format','type','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialPrefix','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','Pause','TrunkBackup','callerid','active'];(function(_0x152aa1,_0x307718){var _0x1bc01a=function(_0xd3211e){while(--_0xd3211e){_0x152aa1['push'](_0x152aa1['shift']());}};_0x1bc01a(++_0x307718);}(_0x6abb,0xba));var _0xb6ab=function(_0x31f33b,_0x3324a3){_0x31f33b=_0x31f33b-0x0;var _0x43b295=_0x6abb[_0x31f33b];return _0x43b295;};'use strict';var client=require(_0xb6ab('0x0'));exports[_0xb6ab('0x1')]=function(){return function(){return client[_0xb6ab('0x2')](_0xb6ab('0x3'),{'options':{'raw':![],'attributes':['id',_0xb6ab('0x4'),_0xb6ab('0x5'),'acwTimeout',_0xb6ab('0x6'),_0xb6ab('0x7'),_0xb6ab('0x8'),'dialActive','dialMethod',_0xb6ab('0x9'),_0xb6ab('0xa'),_0xb6ab('0xb'),_0xb6ab('0xc'),_0xb6ab('0xd'),_0xb6ab('0xe'),_0xb6ab('0xf'),_0xb6ab('0x10'),_0xb6ab('0x11'),_0xb6ab('0x12'),_0xb6ab('0x13'),'dialQueueProject',_0xb6ab('0x14'),_0xb6ab('0x15'),_0xb6ab('0x16'),_0xb6ab('0x17'),'dialNoAnswerMaxRetry',_0xb6ab('0x18'),'dialGlobalMaxRetry','dialTimezone','dialGlobalInterval',_0xb6ab('0x19'),'dialCheckDuplicateType',_0xb6ab('0x1a'),'dialAMDInitialSilence',_0xb6ab('0x1b'),_0xb6ab('0x1c'),'dialAMDTotalAnalysisTime',_0xb6ab('0x1d'),_0xb6ab('0x1e'),_0xb6ab('0x1f'),'dialAMDSilenceThreshold',_0xb6ab('0x20'),_0xb6ab('0x21'),_0xb6ab('0x22'),'dialRecallInQueue',_0xb6ab('0x23'),_0xb6ab('0x24'),'dialAgiAfterHangupClient','dialQueueProject2',_0xb6ab('0x7'),_0xb6ab('0x25'),_0xb6ab('0x26'),_0xb6ab('0x27'),_0xb6ab('0x28'),'dialNoSuchNumberRetryFrequency',_0xb6ab('0x29'),_0xb6ab('0x2a'),_0xb6ab('0x2b'),'dialAbandonedRetryFrequency',_0xb6ab('0x2c'),_0xb6ab('0x2d'),_0xb6ab('0x2e'),_0xb6ab('0x2f'),_0xb6ab('0x30'),'dialPredictiveIntervalMaxThreshold',_0xb6ab('0x31'),_0xb6ab('0x32'),_0xb6ab('0x33'),_0xb6ab('0x34')],'include':[{'model':_0xb6ab('0x35'),'as':_0xb6ab('0x35'),'attributes':['id','name','callerid','active']},{'model':_0xb6ab('0x36'),'as':'mandatoryDispositionPause','attributes':['id',_0xb6ab('0x4')]},{'model':'Trunk','as':_0xb6ab('0x37'),'attributes':['id',_0xb6ab('0x4'),_0xb6ab('0x38'),_0xb6ab('0x39')]},{'model':_0xb6ab('0x3a'),'as':'Interval','attributes':['id','name'],'include':[{'model':_0xb6ab('0x3a'),'as':_0xb6ab('0x3b'),'attributes':['id',_0xb6ab('0x4'),_0xb6ab('0x3c')]}]}]},'log':_0xb6ab('0x1')});};};
\ No newline at end of file
+var _0x3340=['dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','callerid','active','Pause','mandatoryDispositionPause','Interval','interval','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialCutDigit','dialNoSuchNumberRetryFrequency'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x3340,0x179));var _0x0334=function(_0x39edfc,_0x4c10ee){_0x39edfc=_0x39edfc-0x0;var _0x230fdd=_0x3340[_0x39edfc];return _0x230fdd;};'use strict';var client=require('../client');exports[_0x0334('0x0')]=function(){return client[_0x0334('0x1')](_0x0334('0x2'),{'options':{'raw':![],'attributes':['id',_0x0334('0x3'),_0x0334('0x4'),_0x0334('0x5'),_0x0334('0x6'),_0x0334('0x7'),_0x0334('0x8'),_0x0334('0x9'),_0x0334('0xa'),'dialLimitChannel','dialLimitQueue',_0x0334('0xb'),_0x0334('0xc'),_0x0334('0xd'),'dialPredictiveInterval',_0x0334('0xe'),_0x0334('0xf'),_0x0334('0x10'),_0x0334('0x11'),_0x0334('0x12'),_0x0334('0x13'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x0334('0x14'),_0x0334('0x15'),_0x0334('0x16'),'dialNoAnswerRetryFrequency',_0x0334('0x17'),_0x0334('0x18'),_0x0334('0x19'),_0x0334('0x1a'),'dialCheckDuplicateType',_0x0334('0x1b'),'dialAMDInitialSilence',_0x0334('0x1c'),'dialAMDAfterGreetingSilence',_0x0334('0x1d'),_0x0334('0x1e'),_0x0334('0x1f'),_0x0334('0x20'),_0x0334('0x21'),_0x0334('0x22'),_0x0334('0x23'),_0x0334('0x24'),_0x0334('0x25'),'dialOrderByScheduledAt',_0x0334('0x26'),'dialAgiAfterHangupClient',_0x0334('0x27'),_0x0334('0x7'),_0x0334('0x28'),'dialRandomLastDigitCallerIdNumber',_0x0334('0x29'),'dialNoSuchNumberMaxRetry',_0x0334('0x2a'),_0x0334('0x2b'),_0x0334('0x2c'),'dialAbandonedMaxRetry',_0x0334('0x2d'),_0x0334('0x2e'),_0x0334('0x2f'),_0x0334('0x30'),_0x0334('0x31'),_0x0334('0x32'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0x0334('0x33'),_0x0334('0x34'),'callAdditionalPhoneAfterMin'],'include':[{'model':_0x0334('0x35'),'as':_0x0334('0x35'),'attributes':['id',_0x0334('0x3'),_0x0334('0x36'),_0x0334('0x37')]},{'model':_0x0334('0x38'),'as':_0x0334('0x39'),'attributes':['id',_0x0334('0x3')]},{'model':'Trunk','as':'TrunkBackup','attributes':['id',_0x0334('0x3'),_0x0334('0x36'),_0x0334('0x37')]},{'model':_0x0334('0x3a'),'as':_0x0334('0x3a'),'attributes':['id','name'],'include':[{'model':_0x0334('0x3a'),'as':'Intervals','attributes':['id',_0x0334('0x3'),_0x0334('0x3b')]}]}]},'log':_0x0334('0x0')});};
\ No newline at end of file
index 42ce3a4..3d2aff2 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(_0xd6a54,_0xa55718){var _0x3f4f26=function(_0x1f2184){while(--_0x1f2184){_0xd6a54['push'](_0xd6a54['shift']());}};_0x3f4f26(++_0xa55718);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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(_0x4b744a,_0x308bef){var _0x4572fc=function(_0x53f5c4){while(--_0x53f5c4){_0x4b744a['push'](_0x4b744a['shift']());}};_0x4572fc(++_0x308bef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa9e0[_0x501510];return _0x1e6ee5;};'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 355d7f3..222e5db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7098=['Request','GetVoiceQueueRtPauses'];(function(_0x366d8b,_0x352950){var _0x3a48cf=function(_0x2f9e6d){while(--_0x2f9e6d){_0x366d8b['push'](_0x366d8b['shift']());}};_0x3a48cf(++_0x352950);}(_0x7098,0x1c2));var _0x8709=function(_0x5bca83,_0x196403){_0x5bca83=_0x5bca83-0x0;var _0x40d41b=_0x7098[_0x5bca83];return _0x40d41b;};'use strict';var client=require('../client');exports['getVoiceQueueRtPauses']=function(_0x4e7579){return function(){return client[_0x8709('0x0')](_0x8709('0x1'),{'options':{'where':{'VoiceQueueId':_0x4e7579,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x6b15=['getVoiceQueueRtPauses','Request'];(function(_0x542210,_0x4791d2){var _0x13ffe3=function(_0x497dd3){while(--_0x497dd3){_0x542210['push'](_0x542210['shift']());}};_0x13ffe3(++_0x4791d2);}(_0x6b15,0x9e));var _0x56b1=function(_0x3a3314,_0x9e02ab){_0x3a3314=_0x3a3314-0x0;var _0x54efb5=_0x6b15[_0x3a3314];return _0x54efb5;};'use strict';var client=require('../client');exports[_0x56b1('0x0')]=function(_0x2da908){return function(){return client[_0x56b1('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x2da908,'paused':!![]},'raw':!![]},'log':_0x56b1('0x0')});};};
\ No newline at end of file
index f579230..08ba7fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x16b8f3,_0xa5fbd5){var _0x3b6530=function(_0x563044){while(--_0x563044){_0x16b8f3['push'](_0x16b8f3['shift']());}};_0x3b6530(++_0xa5fbd5);}(_0x7a54,0x106));var _0x47a5=function(_0x451275,_0x6c7650){_0x451275=_0x451275-0x0;var _0x1f6899=_0x7a54[_0x451275];return _0x1f6899;};'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(_0x57933c,_0x35444e){var _0x414cd8=function(_0x2bd3f0){while(--_0x2bd3f0){_0x57933c['push'](_0x57933c['shift']());}};_0x414cd8(++_0x35444e);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'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 ec7d331..64b93dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d1d=['result','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcontext','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','blindTransfer','Request','CreateVoiceTransferReport','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','attendedTransfer'];(function(_0x4de8f9,_0xde3981){var _0x472379=function(_0x4f40ee){while(--_0x4f40ee){_0x4de8f9['push'](_0x4de8f9['shift']());}};_0x472379(++_0xde3981);}(_0x3d1d,0xfc));var _0xd3d1=function(_0x34d59c,_0x135edf){_0x34d59c=_0x34d59c-0x0;var _0x48e83f=_0x3d1d[_0x34d59c];return _0x48e83f;};'use strict';var client=require('../client');exports['transfers']={};exports[_0xd3d1('0x0')]=function(_0x213109){return client[_0xd3d1('0x1')](_0xd3d1('0x2'),{'body':{'result':_0x213109['result'],'transfererchannel':_0x213109['transfererchannel'],'transferercalleridnum':_0x213109[_0xd3d1('0x3')],'transferercalleridname':_0x213109[_0xd3d1('0x4')],'transfererconnectedlinenum':_0x213109[_0xd3d1('0x5')],'transfererconnectedlinename':_0x213109[_0xd3d1('0x6')],'transfereraccountcode':_0x213109[_0xd3d1('0x7')],'transferercontext':_0x213109['transferercontext'],'transfererexten':_0x213109['transfererexten'],'transfererlinkedid':_0x213109['transfererlinkedid'],'transfereechannel':_0x213109[_0xd3d1('0x8')],'transfereecalleridnum':_0x213109[_0xd3d1('0x9')],'transfereecalleridname':_0x213109[_0xd3d1('0xa')],'transfereeconnectedlinenum':_0x213109[_0xd3d1('0xb')],'transfereeconnectedlinename':_0x213109['transfereeconnectedlinename'],'transfereeaccountcode':_0x213109[_0xd3d1('0xc')],'transfereecontext':_0x213109[_0xd3d1('0xd')],'transfereeexten':_0x213109[_0xd3d1('0xe')],'transfereelinkedid':_0x213109[_0xd3d1('0xf')],'isexternal':_0x213109[_0xd3d1('0x10')],'context':_0x213109[_0xd3d1('0x11')],'extension':_0x213109[_0xd3d1('0x12')],'type':'blind'},'log':_0xd3d1('0x2')});};exports[_0xd3d1('0x13')]=function(_0x57fd4e){return client['Request'](_0xd3d1('0x2'),{'body':{'result':_0x57fd4e[_0xd3d1('0x14')],'transfererchannel':_0x57fd4e[_0xd3d1('0x15')],'transferercalleridnum':_0x57fd4e['origtransferercalleridnum'],'transferercalleridname':_0x57fd4e['origtransferercalleridname'],'transfererconnectedlinenum':_0x57fd4e['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x57fd4e[_0xd3d1('0x16')],'transfereraccountcode':_0x57fd4e[_0xd3d1('0x17')],'transferercontext':_0x57fd4e[_0xd3d1('0x18')],'transfererexten':_0x57fd4e[_0xd3d1('0x19')],'transfererlinkedid':_0x57fd4e[_0xd3d1('0x1a')],'transfereechannel':_0x57fd4e[_0xd3d1('0x1b')],'transfereecalleridnum':_0x57fd4e[_0xd3d1('0x1c')],'transfereecalleridname':_0x57fd4e['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x57fd4e['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x57fd4e['transfertargetconnectedlinename'],'transfereeaccountcode':_0x57fd4e['transfertargetaccountcode'],'transfereecontext':_0x57fd4e[_0xd3d1('0x1d')],'transfereeexten':_0x57fd4e['transfertargetexten'],'transfereelinkedid':_0x57fd4e[_0xd3d1('0x1e')],'isexternal':_0x57fd4e[_0xd3d1('0x10')],'context':_0x57fd4e[_0xd3d1('0x1f')],'extension':_0x57fd4e[_0xd3d1('0x20')],'type':_0xd3d1('0x21')},'log':_0xd3d1('0x2')});};
\ No newline at end of file
+var _0x9e99=['transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','context','extension','blind','attendedTransfer','result','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','isexternal','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','transferercalleridnum','transferercalleridname'];(function(_0x56e235,_0x3879cd){var _0x31495e=function(_0x517138){while(--_0x517138){_0x56e235['push'](_0x56e235['shift']());}};_0x31495e(++_0x3879cd);}(_0x9e99,0xb2));var _0x99e9=function(_0x27b639,_0x5a9f0f){_0x27b639=_0x27b639-0x0;var _0x3b2bfe=_0x9e99[_0x27b639];return _0x3b2bfe;};'use strict';var client=require(_0x99e9('0x0'));exports[_0x99e9('0x1')]={};exports[_0x99e9('0x2')]=function(_0x164a05){return client[_0x99e9('0x3')](_0x99e9('0x4'),{'body':{'result':_0x164a05['result'],'transfererchannel':_0x164a05['transfererchannel'],'transferercalleridnum':_0x164a05[_0x99e9('0x5')],'transferercalleridname':_0x164a05[_0x99e9('0x6')],'transfererconnectedlinenum':_0x164a05[_0x99e9('0x7')],'transfererconnectedlinename':_0x164a05[_0x99e9('0x8')],'transfereraccountcode':_0x164a05[_0x99e9('0x9')],'transferercontext':_0x164a05[_0x99e9('0xa')],'transfererexten':_0x164a05['transfererexten'],'transfererlinkedid':_0x164a05[_0x99e9('0xb')],'transfereechannel':_0x164a05[_0x99e9('0xc')],'transfereecalleridnum':_0x164a05[_0x99e9('0xd')],'transfereecalleridname':_0x164a05[_0x99e9('0xe')],'transfereeconnectedlinenum':_0x164a05['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x164a05['transfereeconnectedlinename'],'transfereeaccountcode':_0x164a05[_0x99e9('0xf')],'transfereecontext':_0x164a05[_0x99e9('0x10')],'transfereeexten':_0x164a05[_0x99e9('0x11')],'transfereelinkedid':_0x164a05[_0x99e9('0x12')],'isexternal':_0x164a05['isexternal'],'context':_0x164a05[_0x99e9('0x13')],'extension':_0x164a05[_0x99e9('0x14')],'type':_0x99e9('0x15')},'log':_0x99e9('0x4')});};exports[_0x99e9('0x16')]=function(_0x27ad87){return client['Request'](_0x99e9('0x4'),{'body':{'result':_0x27ad87[_0x99e9('0x17')],'transfererchannel':_0x27ad87[_0x99e9('0x18')],'transferercalleridnum':_0x27ad87['origtransferercalleridnum'],'transferercalleridname':_0x27ad87['origtransferercalleridname'],'transfererconnectedlinenum':_0x27ad87[_0x99e9('0x19')],'transfererconnectedlinename':_0x27ad87['secondtransfererconnectedlinename'],'transfereraccountcode':_0x27ad87[_0x99e9('0x1a')],'transferercontext':_0x27ad87[_0x99e9('0x1b')],'transfererexten':_0x27ad87['secondtransfererexten'],'transfererlinkedid':_0x27ad87[_0x99e9('0x1c')],'transfereechannel':_0x27ad87['transfertargetchannel'],'transfereecalleridnum':_0x27ad87[_0x99e9('0x1d')],'transfereecalleridname':_0x27ad87[_0x99e9('0x1e')],'transfereeconnectedlinenum':_0x27ad87[_0x99e9('0x1f')],'transfereeconnectedlinename':_0x27ad87['transfertargetconnectedlinename'],'transfereeaccountcode':_0x27ad87[_0x99e9('0x20')],'transfereecontext':_0x27ad87['transfertargetcontext'],'transfereeexten':_0x27ad87[_0x99e9('0x21')],'transfereelinkedid':_0x27ad87[_0x99e9('0x22')],'isexternal':_0x27ad87[_0x99e9('0x23')],'context':_0x27ad87['origtransferercontext'],'extension':_0x27ad87['origtransfererexten'],'type':_0x99e9('0x24')},'log':_0x99e9('0x4')});};
\ No newline at end of file
index db4f04e..1ac139c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51c5=['custom:','faxAccounts','send','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','moment','../../../config/environment','../properties','listen','format','%s/%s','name','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','error','asterisk','username','join','pick','keys','module','Action','then','message','catch','ami\x20disconnected','action','content','voiceQueues','hasOwnProperty','strategy','answered','loggedIn','pTalking','sumDuration','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','push','length','find','omit','undefined','values','channels','isConnected','voicechannel','uniqueid','channel','%s.%s','wav','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','rec','MixMonitor\x20Success','map','destinationchannel','stop','StopMixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','campaigns','event','emit'];(function(_0x2bddf9,_0x22c873){var _0x3f3ae9=function(_0x2d91ac){while(--_0x2d91ac){_0x2bddf9['push'](_0x2bddf9['shift']());}};_0x3f3ae9(++_0x22c873);}(_0x51c5,0x8f));var _0x551c=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x51c5[_0x68c979];return _0x4f0001;};'use strict';var _=require(_0x551c('0x0'));var util=require(_0x551c('0x1'));var jayson=require(_0x551c('0x2'));var schema=require(_0x551c('0x3'));var moment=require(_0x551c('0x4'));var config=require(_0x551c('0x5'));var properties=require(_0x551c('0x6'));var ami=require('../ami');exports[_0x551c('0x7')]=function(_0x1639d0,_0x28e608,_0x237f3c){return new Promise(function(_0xe0272c,_0x1aa8df){var _0x21dfa1={'QueuePause':function(_0x196955){return new Promise(function(_0x4f3a0a){var _0x414edb=util[_0x551c('0x8')](_0x551c('0x9'),'SIP',_0x196955[_0x551c('0xa')]);if(_0x1639d0['timers']&&_0x1639d0['timers'][_0x414edb]&&_0x1639d0['timers'][_0x414edb][_0x551c('0xb')]){_0x1639d0['timers'][_0x414edb][_0x551c('0xc')]();}if(_0x1639d0[_0x551c('0xd')][_0x414edb]){_0x1639d0[_0x551c('0xd')][_0x414edb][_0x551c('0xe')]({'statePause':_0x196955[_0x551c('0xf')]?!![]:![]});}_0x4f3a0a({'code':0xc8,'message':_0x551c('0x10')});});},'Reload':function(_0x57aa1b){var _0x1fbcfd=this;return new Promise(function(_0x42740a,_0x305617){if(ami['isConnected']()==![]){return _0x305617(_0x1fbcfd[_0x551c('0x11')](0x1f4,[config[_0x551c('0x12')]['ip'],config['asterisk'][_0x551c('0x13')],'ami\x20disconnected'][_0x551c('0x14')]('\x20')));}_0x57aa1b=_[_0x551c('0x15')](_0x57aa1b,_[_0x551c('0x16')](properties[_0x551c('0x17')]));_0x57aa1b['action']='Reload';return ami[_0x551c('0x18')](_0x57aa1b)[_0x551c('0x19')](function(_0x5d13f3){_0x42740a({'code':0xc8,'message':_0x5d13f3[_0x551c('0x1a')]});})[_0x551c('0x1b')](function(_0x274432){_0x305617(_0x1fbcfd[_0x551c('0x11')](0x1f5,_0x274432['message']));});});},'Command':function(_0x4fcaf3){var _0x491fec=this;return new Promise(function(_0x2539bd,_0x55382b){if(ami['isConnected']()==![]){return _0x55382b(_0x491fec[_0x551c('0x11')](0x1f4,[config[_0x551c('0x12')]['ip'],config[_0x551c('0x12')][_0x551c('0x13')],_0x551c('0x1c')][_0x551c('0x14')]('\x20')));}_0x4fcaf3=_['pick'](_0x4fcaf3,'command');_0x4fcaf3[_0x551c('0x1d')]='Command';return ami[_0x551c('0x18')](_0x4fcaf3)[_0x551c('0x19')](function(_0x1f2cc5){_0x2539bd({'code':0xc8,'message':_0x1f2cc5[_0x551c('0x1e')]});})[_0x551c('0x1b')](function(_0x5bb391){_0x55382b(_0x491fec['error'](0x1f5,_0x5bb391[_0x551c('0x1a')]));});});},'VoiceQueues':function(){return new Promise(function(_0x52cea5){var _0x164343=[];for(var _0x30f639 in _0x1639d0[_0x551c('0x1f')]){if(_0x1639d0[_0x551c('0x1f')][_0x551c('0x20')](_0x30f639)){var _0x30cdb0=_0x1639d0[_0x551c('0x1f')][_0x30f639];var _0x2226c9={'id':_0x30cdb0['id'],'name':_0x30cdb0['name'],'strategy':_0x30cdb0[_0x551c('0x21')],'answered':_0x30cdb0[_0x551c('0x22')],'available':_0x30cdb0['available'],'loggedIn':_0x30cdb0[_0x551c('0x23')],'pTalking':_0x30cdb0[_0x551c('0x24')],'sumBillable':_0x30cdb0['sumBillable'],'sumDuration':_0x30cdb0[_0x551c('0x25')],'sumHoldTime':_0x30cdb0[_0x551c('0x26')]||0x0,'talking':_0x30cdb0[_0x551c('0x27')],'total':_0x30cdb0[_0x551c('0x28')],'type':_0x30cdb0[_0x551c('0x29')],'unmanaged':_0x30cdb0['unmanaged'],'abandoned':_0x30cdb0[_0x551c('0x2a')],'waiting':_0x30cdb0[_0x551c('0x2b')],'loggedInDb':_0x30cdb0[_0x551c('0x2c')]};if(_0x30cdb0['type']===_0x551c('0x2d')){_0x2226c9[_0x551c('0x2e')]=_0x30cdb0['dialActive'];_0x2226c9['dialMethod']=_0x30cdb0[_0x551c('0x2f')];_0x2226c9[_0x551c('0x30')]=_0x30cdb0['dialOriginateCallerIdName'];_0x2226c9[_0x551c('0x31')]=_0x30cdb0['dialOriginateCallerIdNumber'];_0x2226c9['dialOriginateTimeout']=_0x30cdb0['dialOriginateTimeout'];_0x2226c9[_0x551c('0x32')]=_0x30cdb0['dialPrefix'];_0x2226c9[_0x551c('0x33')]=_0x30cdb0[_0x551c('0x33')];_0x2226c9['outboundAnswerAgiCallsDay']=_0x30cdb0[_0x551c('0x34')];_0x2226c9['outboundAnswerCallsDay']=_0x30cdb0[_0x551c('0x35')];_0x2226c9[_0x551c('0x36')]=_0x30cdb0[_0x551c('0x36')];_0x2226c9[_0x551c('0x37')]=_0x30cdb0[_0x551c('0x37')];_0x2226c9[_0x551c('0x38')]=_0x30cdb0[_0x551c('0x38')];_0x2226c9['outboundDropCallsDayACS']=_0x30cdb0[_0x551c('0x39')];_0x2226c9[_0x551c('0x3a')]=_0x30cdb0['outboundDropCallsDayCallersExit'];_0x2226c9[_0x551c('0x3b')]=_0x30cdb0[_0x551c('0x3b')];_0x2226c9['outboundNoAnswerCallsDay']=_0x30cdb0['outboundNoAnswerCallsDay'];_0x2226c9[_0x551c('0x3c')]=_0x30cdb0[_0x551c('0x3c')];_0x2226c9[_0x551c('0x3d')]=_0x30cdb0[_0x551c('0x3d')];_0x2226c9[_0x551c('0x3e')]=_0x30cdb0[_0x551c('0x3e')];_0x2226c9[_0x551c('0x3f')]=_0x30cdb0[_0x551c('0x3f')];_0x2226c9[_0x551c('0x40')]=_0x30cdb0[_0x551c('0x40')];_0x2226c9['predictiveIntervalAnsweredCalls']=_0x30cdb0['predictiveIntervalAnsweredCalls'];_0x2226c9['predictiveIntervalAvgHoldtime']=_0x30cdb0['predictiveIntervalAvgHoldtime'];_0x2226c9['predictiveIntervalAvgTalktime']=_0x30cdb0['predictiveIntervalAvgTalktime'];_0x2226c9[_0x551c('0x41')]=_0x30cdb0[_0x551c('0x41')];_0x2226c9[_0x551c('0x42')]=_0x30cdb0[_0x551c('0x42')];_0x2226c9[_0x551c('0x43')]=_0x30cdb0[_0x551c('0x43')];_0x2226c9[_0x551c('0x44')]=_0x30cdb0[_0x551c('0x44')];_0x2226c9[_0x551c('0x45')]=_0x30cdb0[_0x551c('0x45')];_0x2226c9[_0x551c('0x46')]=_0x30cdb0[_0x551c('0x46')];_0x2226c9[_0x551c('0x47')]=_0x30cdb0[_0x551c('0x47')];_0x2226c9[_0x551c('0x48')]=_0x30cdb0[_0x551c('0x48')];_0x2226c9[_0x551c('0x49')]=_0x30cdb0[_0x551c('0x49')];_0x2226c9[_0x551c('0x1a')]=_0x30cdb0[_0x551c('0x1a')];_0x2226c9[_0x551c('0x4a')]=_0x30cdb0[_0x551c('0x4a')];_0x2226c9[_0x551c('0x4b')]=_0x30cdb0[_0x551c('0x4b')];_0x2226c9[_0x551c('0x4c')]=_0x30cdb0[_0x551c('0x4c')];_0x2226c9[_0x551c('0x4d')]=_0x30cdb0[_0x551c('0x4d')];_0x2226c9[_0x551c('0x4e')]=_0x30cdb0[_0x551c('0x4e')];_0x2226c9[_0x551c('0x4f')]=_0x30cdb0[_0x551c('0x4f')];_0x2226c9['startProgressive']=_0x30cdb0[_0x551c('0x50')];}if(_0x30cdb0[_0x551c('0x51')]){_0x2226c9[_0x551c('0x51')]={'id':_0x30cdb0[_0x551c('0x51')]['id'],'name':_0x30cdb0[_0x551c('0x51')]['name'],'active':_0x30cdb0[_0x551c('0x51')]['active'],'callerid':_0x30cdb0['Trunk'][_0x551c('0x52')]};}if(_0x30cdb0['Interval']){_0x2226c9[_0x551c('0x53')]={'id':_0x30cdb0[_0x551c('0x53')]['id'],'name':_0x30cdb0[_0x551c('0x53')][_0x551c('0xa')]};}_0x164343[_0x551c('0x54')](_0x2226c9);}}_0x52cea5({'count':_0x164343[_0x551c('0x55')],'rows':_0x164343});});},'UpdateVoiceQueue':function(_0x479ed5){return new Promise(function(_0x11dc1d,_0xdf2567){var _0x53444d=_[_0x551c('0x56')](_0x1639d0[_0x551c('0x1f')],{'id':parseInt(_0x479ed5['id'])});var _0x367fb8=_[_0x551c('0x57')](_0x479ed5,['id']);if(_0x53444d){for(var _0x1745e3 in _0x367fb8){if(typeof _0x367fb8[_0x1745e3]!==_0x551c('0x58')&&typeof _0x53444d[_0x1745e3]!=='undefined'){_0x53444d[_0x1745e3]=_0x367fb8[_0x1745e3];}}_0x11dc1d(_0x53444d);}else{_0xdf2567();}});},'VoiceChannels':function(){return new Promise(function(_0x3b6a40){var _0x51e964=_[_0x551c('0x59')](_0x1639d0[_0x551c('0x5a')]);_0x3b6a40({'count':_0x51e964[_0x551c('0x55')],'rows':_0x51e964});});},'VoiceChannelMixMonitor':function(_0x3adf3b){var _0x5772cf=this;return new Promise(function(_0x5c140e,_0x3b1a3d){if(ami[_0x551c('0x5b')]()==![]){return _0x3b1a3d(_0x5772cf[_0x551c('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x551c('0x12')]['username'],_0x551c('0x1c')][_0x551c('0x14')]('\x20')));}var _0x37bbcd=schema(properties[_0x551c('0x5c')])[_0x551c('0x3')](_0x3adf3b);if(_0x37bbcd['length']>0x0){return _0x3b1a3d(_0x5772cf[_0x551c('0x11')](0x1f4,_['map'](_0x37bbcd,'message')[_0x551c('0x14')](',\x20')));}var _0x519381=_[_0x551c('0x56')](_0x1639d0['channels'],{'uniqueid':_0x3adf3b[_0x551c('0x5d')]});if(_0x519381&&_0x519381[_0x551c('0x5e')]){var _0x24a6de=util[_0x551c('0x8')](_0x551c('0x5f'),_0x3adf3b['filename']||_0x3adf3b['uniqueid'],_0x3adf3b[_0x551c('0x8')]||_0x551c('0x60'));return ami['Action']({'action':'MixMonitor','channel':_0x519381['channel'],'file':_0x24a6de,'options':_0x551c('0x61')})[_0x551c('0x19')](function(_0x29de78){var _0x2c21f7=_[_0x551c('0x56')](_0x519381[_0x551c('0x62')],{'filename':_0x551c('0x63')+_0x24a6de['toLowerCase']()});if(_['isNil'](_0x2c21f7)){_0x519381[_0x551c('0x62')][_0x551c('0x54')]({'filename':'/var/spool/asterisk/monitor/'+_0x24a6de[_0x551c('0x64')](),'createdAt':moment()[_0x551c('0x8')](_0x551c('0x65')),'mixmonitorid':_0x29de78[_0x551c('0x66')],'status':'rec'});}else{_0x2c21f7[_0x551c('0x66')]=_0x29de78[_0x551c('0x66')];_0x2c21f7[_0x551c('0x67')]=_0x551c('0x68');}_0x5c140e({'code':0xc8,'message':[_0x3adf3b[_0x551c('0x5d')],_0x551c('0x69'),_0x29de78[_0x551c('0x66')]][_0x551c('0x14')]('\x20'),'mixmonitorid':_0x29de78[_0x551c('0x66')]});})[_0x551c('0x1b')](function(_0x4b50e2){_0x3b1a3d(_0x5772cf['error'](0x1f5,[_0x3adf3b[_0x551c('0x5d')],_0x4b50e2[_0x551c('0x1a')][_0x551c('0x64')]()]['join']('\x20')));});}else{return _0x3b1a3d(_0x5772cf[_0x551c('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x3d289d){var _0x2bb14a=this;return new Promise(function(_0x3a490d,_0x5d1fde){if(ami[_0x551c('0x5b')]()==![]){return _0x5d1fde(_0x2bb14a[_0x551c('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x551c('0x12')]['username'],_0x551c('0x1c')][_0x551c('0x14')]('\x20')));}var _0x5e9366=schema(properties[_0x551c('0x5c')])[_0x551c('0x3')](_0x3d289d);if(_0x5e9366[_0x551c('0x55')]>0x0){return _0x5d1fde(_0x2bb14a[_0x551c('0x11')](0x1f4,_[_0x551c('0x6a')](_0x5e9366,_0x551c('0x1a'))[_0x551c('0x14')](',\x20')));}var _0x18e37b=_[_0x551c('0x56')](_0x1639d0[_0x551c('0x5a')],{'uniqueid':_0x3d289d[_0x551c('0x5d')]});if(_0x18e37b){return Promise['resolve']()[_0x551c('0x19')](function(){if(_0x18e37b[_0x551c('0x5e')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x18e37b[_0x551c('0x5e')],'mixmonitorid':_0x3d289d[_0x551c('0x66')]})[_0x551c('0x1b')](function(){});}})['then'](function(){if(_0x18e37b[_0x551c('0x6b')]){return ami[_0x551c('0x18')]({'action':'StopMixMonitor','channel':_0x18e37b[_0x551c('0x6b')],'mixmonitorid':_0x3d289d[_0x551c('0x66')]})[_0x551c('0x1b')](function(){});}})[_0x551c('0x19')](function(){var _0x1b62b9=_['find'](_0x18e37b['monitors'],{'mixmonitorid':_0x3d289d[_0x551c('0x66')]});if(_0x1b62b9){_0x1b62b9[_0x551c('0x67')]=_0x551c('0x6c');}})[_0x551c('0x19')](function(){var _0x3ea9a5=util[_0x551c('0x8')](_0x551c('0x5f'),_0x3d289d['filename']||_0x3d289d[_0x551c('0x5d')],_0x3d289d[_0x551c('0x8')]||_0x551c('0x60'));var _0x65d18f=_[_0x551c('0x56')](_0x18e37b[_0x551c('0x62')],{'filename':'/var/spool/asterisk/monitor/'+_0x3ea9a5[_0x551c('0x64')]()});if(_0x65d18f){_0x65d18f[_0x551c('0x67')]=_0x551c('0x6c');}})[_0x551c('0x19')](function(){_0x3a490d({'code':0xc8,'message':[_0x3d289d[_0x551c('0x5d')],_0x551c('0x6d')][_0x551c('0x14')]('\x20')});})[_0x551c('0x1b')](function(_0x3ffe1d){_0x5d1fde(_0x2bb14a[_0x551c('0x11')](0x1f5,[_0x3d289d[_0x551c('0x5d')],_0x3ffe1d[_0x551c('0x1a')][_0x551c('0x64')]()][_0x551c('0x14')]('\x20')));});}else{return _0x5d1fde(_0x2bb14a[_0x551c('0x11')](0x1f5,_0x551c('0x6e')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x10e2d9){var _0x7b7fa7=_[_0x551c('0x59')](_0x1639d0[_0x551c('0x6f')]);_0x10e2d9({'count':_0x7b7fa7[_0x551c('0x55')],'rows':_0x7b7fa7});});},'VoiceQueuesChannel':function(_0x437e32){var _0x178941=this;return new Promise(function(_0x102021,_0x2c4ecf){var _0x40bccf=schema(properties[_0x551c('0x70')])[_0x551c('0x3')](_0x437e32);if(_0x40bccf[_0x551c('0x55')]>0x0){return _0x2c4ecf(_0x178941[_0x551c('0x11')](0x1f4,_[_0x551c('0x6a')](_0x40bccf,_0x551c('0x1a'))[_0x551c('0x14')](',\x20')));}var _0xaf0de5=_[_0x551c('0x56')](_0x1639d0[_0x551c('0x6f')],{'uniqueid':_0x437e32['uniqueid']});if(_0xaf0de5){_0x102021(_0xaf0de5);}else{return _0x2c4ecf(_0x178941[_0x551c('0x11')](0x1f5,_0x551c('0x6e')));}});},'VoiceQueuesChannelHangup':function(_0x55bed1){var _0x56e568=this;return new Promise(function(_0x23cb27,_0x148af6){if(ami[_0x551c('0x5b')]()==![]){return _0x148af6(_0x56e568[_0x551c('0x11')](0x1f4,[config[_0x551c('0x12')]['ip'],config[_0x551c('0x12')][_0x551c('0x13')],_0x551c('0x1c')][_0x551c('0x14')]('\x20')));}var _0x5a0362=schema(properties[_0x551c('0x71')])['validate'](_0x55bed1);if(_0x5a0362[_0x551c('0x55')]>0x0){return _0x148af6(_0x56e568[_0x551c('0x11')](0x1f4,_['map'](_0x5a0362,_0x551c('0x1a'))[_0x551c('0x14')](',\x20')));}var _0x316de7=_[_0x551c('0x56')](_0x1639d0[_0x551c('0x6f')],{'uniqueid':_0x55bed1['uniqueid']});if(_0x316de7&&_0x316de7[_0x551c('0x5e')]){return ami[_0x551c('0x18')]({'action':_0x551c('0x72'),'channel':_0x316de7['channel']})['then'](function(_0x344299){_0x23cb27({'code':0xc8,'message':[_0x55bed1[_0x551c('0x5d')],_0x344299[_0x551c('0x1a')][_0x551c('0x64')]()]['join']('\x20')});})[_0x551c('0x1b')](function(_0x1e3364){_0x148af6(_0x56e568[_0x551c('0x11')](0x1f5,[_0x55bed1[_0x551c('0x5d')],_0x1e3364[_0x551c('0x1a')][_0x551c('0x64')]()][_0x551c('0x14')]('\x20')));});}else{return _0x148af6(_0x56e568['error'](0x1f5,_0x551c('0x6e')));}});},'VoiceQueuesChannelRedirect':function(_0x229065){var _0x1ccd24=this;return new Promise(function(_0x4df22e,_0x4ca5a9){if(ami[_0x551c('0x5b')]()==![]){return _0x4ca5a9(_0x1ccd24['error'](0x1f4,[config[_0x551c('0x12')]['ip'],config[_0x551c('0x12')][_0x551c('0x13')],'ami\x20disconnected']['join']('\x20')));}var _0x57dcf7=schema(properties[_0x551c('0x73')])['validate'](_0x229065);if(_0x57dcf7[_0x551c('0x55')]>0x0){return _0x4ca5a9(_0x1ccd24[_0x551c('0x11')](0x1f4,_[_0x551c('0x6a')](_0x57dcf7,_0x551c('0x1a'))[_0x551c('0x14')](',\x20')));}var _0x239a8d=_['find'](_0x1639d0[_0x551c('0x6f')],{'uniqueid':_0x229065[_0x551c('0x5d')]});if(_0x239a8d&&_0x239a8d[_0x551c('0x5e')]){return ami[_0x551c('0x18')]({'action':_0x551c('0x74'),'channel':_0x239a8d['channel'],'exten':_0x229065[_0x551c('0x75')],'context':_0x229065[_0x551c('0x76')]||_0x239a8d[_0x551c('0x76')],'priority':0x1})['then'](function(_0x1f98c1){_0x4df22e({'code':0xc8,'message':[_0x229065[_0x551c('0x5d')],_0x1f98c1[_0x551c('0x1a')][_0x551c('0x64')]()]['join']('\x20')});})['catch'](function(_0x334b55){_0x4ca5a9(_0x1ccd24['error'](0x1f5,[_0x229065['uniqueid'],_0x334b55[_0x551c('0x1a')][_0x551c('0x64')]()]['join']('\x20')));});}else{return _0x4ca5a9(_0x1ccd24['error'](0x1f5,_0x551c('0x6e')));}});},'Agents':function(_0x18f7a7){return new Promise(function(_0x44b9ef){var _0x3bfc0d=_[_0x551c('0x59')](_0x1639d0[_0x551c('0xd')]);if(_0x18f7a7&&_0x18f7a7['id']){var _0x4f774c=_[_0x551c('0x56')](_0x3bfc0d,function(_0x24e73f){return _0x24e73f['id']===_0x18f7a7['id'];});_0x44b9ef(_0x4f774c);}else{_0x44b9ef({'count':_0x3bfc0d[_0x551c('0x55')],'rows':_0x3bfc0d});}});},'Telephones':function(){return new Promise(function(_0x2f03c6){var _0x46f0e8=_[_0x551c('0x59')](_0x1639d0[_0x551c('0x77')]);_0x2f03c6({'count':_0x46f0e8[_0x551c('0x55')],'rows':_0x46f0e8});});},'Trunks':function(){return new Promise(function(_0x122180){var _0x28de9c=_['values'](_0x1639d0[_0x551c('0x78')]);_0x122180({'count':_0x28de9c[_0x551c('0x55')],'rows':_0x28de9c});});},'OutboundChannels':function(){return new Promise(function(_0x6bd51d){var _0x5f4e37=_[_0x551c('0x59')](_0x1639d0[_0x551c('0x79')]);_0x6bd51d({'count':_0x5f4e37[_0x551c('0x55')],'rows':_0x5f4e37});});},'Outbound':function(){return new Promise(function(_0x59b2a2){_0x59b2a2(_0x1639d0[_0x551c('0x2d')]);});},'Campaigns':function(){return new Promise(function(_0x52008a){var _0x1fe74c=_['values'](_0x1639d0[_0x551c('0x7a')]);_0x52008a({'count':_0x1fe74c[_0x551c('0x55')],'rows':_0x1fe74c});});},'VoiceQueuesPreview':function(_0x8d0bb5){var _0x4aa5f5=this;return new Promise(function(_0x7bfe3c,_0x1fc997){_0x28e608['run'](_0x8d0bb5['id'])[_0x551c('0x19')](function(_0x2decda){_0x7bfe3c({'code':0xc8,'message':_0x2decda['message']});})[_0x551c('0x1b')](function(_0x5632ca){_0x1fc997(_0x4aa5f5[_0x551c('0x11')](0x1f4,_0x5632ca[_0x551c('0x1a')]));});});},'EventManager':function(_0x390c49){var _0x3b6968=this;return new Promise(function(_0x21ee9d,_0x2ffc98){if(!_0x390c49[_0x551c('0x7b')]){return _0x2ffc98(_0x3b6968['error'](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x551c('0x7c')](_0x551c('0x7d')+_0x390c49['event'],_0x390c49[_0x551c('0x1a')]);_0x21ee9d({'code':0xc8,'message':_0x390c49});});},'FaxAccounts':function(){return new Promise(function(_0x324875){var _0x4e96cd=_[_0x551c('0x59')](_0x1639d0[_0x551c('0x7e')]);_0x324875({'count':_0x4e96cd[_0x551c('0x55')],'rows':_0x4e96cd});});},'SendFax':function(_0x52d2c3){var _0x42a3d5=this;return new Promise(function(_0x17130c,_0x37ec66){_0x237f3c[_0x551c('0x7f')](_0x52d2c3)[_0x551c('0x19')](function(_0xa3e2c1){_0x17130c({'code':0xc8,'message':_0xa3e2c1[_0x551c('0x1a')]});})[_0x551c('0x1b')](function(_0x1e51e5){_0x37ec66(_0x42a3d5['error'](0x1f4,_0x1e51e5['message']));});});},'CheckAfterSend':function(_0x4809c3){var _0x25fc3f=this;return new Promise(function(_0x238e02,_0x23b6a4){_0x237f3c['checkAfterSend'](_0x4809c3)[_0x551c('0x19')](function(_0x51e9c1){_0x238e02({'code':0xc8,'message':_0x51e9c1['message']});})[_0x551c('0x1b')](function(_0x352aad){_0x23b6a4(_0x25fc3f[_0x551c('0x11')](0x1f4,_0x352aad['message']));});});}};var _0xd854de=jayson[_0x551c('0x80')](_0x21dfa1)[_0x551c('0x81')]();_0xd854de['on']('error',function(_0x50fc7c){return _0x1aa8df(_0x50fc7c);});_0xd854de[_0x551c('0x7')](0x232a,_0x551c('0x82'),function(){console[_0x551c('0x83')](_0x551c('0x84'),0x232a);return _0xe0272c(_0x551c('0x85')+0x232a);});});};
\ No newline at end of file
+var _0xaa32=['campaigns','emit','custom:','event','checkAfterSend','server','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','jayson/promise','validate','moment','../properties','../ami','format','%s/%s','SIP','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','error','asterisk','join','pick','keys','Reload','Action','then','message','isConnected','username','ami\x20disconnected','command','action','Command','catch','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','channels','voicechannel','filename','uniqueid','wav','MixMonitor','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','resolve','channel','destinationchannel','StopMixMonitor','stop','%s.%s','queueChannels','voicequeuechannel','Channel\x20doesn\x27t\x20exist','voicequeuechannelhangup','map','voicequeuechannelredirect','Redirect','context','telephones','trunks','outboundChannels'];(function(_0x26d034,_0x2c22db){var _0x3015aa=function(_0x282e96){while(--_0x282e96){_0x26d034['push'](_0x26d034['shift']());}};_0x3015aa(++_0x2c22db);}(_0xaa32,0xb2));var _0x2aa3=function(_0x49b7d3,_0x3c42e0){_0x49b7d3=_0x49b7d3-0x0;var _0x44a611=_0xaa32[_0x49b7d3];return _0x44a611;};'use strict';var _=require('lodash');var util=require(_0x2aa3('0x0'));var jayson=require(_0x2aa3('0x1'));var schema=require(_0x2aa3('0x2'));var moment=require(_0x2aa3('0x3'));var config=require('../../../config/environment');var properties=require(_0x2aa3('0x4'));var ami=require(_0x2aa3('0x5'));var VoiceQueueSummary=require('../model/voiceQueueSummary');exports['listen']=function(_0x533c5a,_0x16f081,_0x104a8f){return new Promise(function(_0x59c3bb,_0x574914){var _0x55e567={'QueuePause':function(_0x486700){return new Promise(function(_0x30c129){var _0x4b73e5=util[_0x2aa3('0x6')](_0x2aa3('0x7'),_0x2aa3('0x8'),_0x486700['name']);if(_0x533c5a[_0x2aa3('0x9')]&&_0x533c5a[_0x2aa3('0x9')][_0x4b73e5]&&_0x533c5a[_0x2aa3('0x9')][_0x4b73e5][_0x2aa3('0xa')]){_0x533c5a[_0x2aa3('0x9')][_0x4b73e5][_0x2aa3('0xb')]();}if(_0x533c5a[_0x2aa3('0xc')][_0x4b73e5]){_0x533c5a[_0x2aa3('0xc')][_0x4b73e5][_0x2aa3('0xd')]({'statePause':_0x486700[_0x2aa3('0xe')]?!![]:![]});}_0x30c129({'code':0xc8,'message':_0x2aa3('0xf')});});},'Reload':function(_0x4b897d){var _0x5d2b04=this;return new Promise(function(_0x16e773,_0x11e66c){if(ami['isConnected']()==![]){return _0x11e66c(_0x5d2b04[_0x2aa3('0x10')](0x1f4,[config[_0x2aa3('0x11')]['ip'],config[_0x2aa3('0x11')]['username'],'ami\x20disconnected'][_0x2aa3('0x12')]('\x20')));}_0x4b897d=_[_0x2aa3('0x13')](_0x4b897d,_[_0x2aa3('0x14')](properties['module']));_0x4b897d['action']=_0x2aa3('0x15');return ami[_0x2aa3('0x16')](_0x4b897d)[_0x2aa3('0x17')](function(_0x1b8158){_0x16e773({'code':0xc8,'message':_0x1b8158[_0x2aa3('0x18')]});})['catch'](function(_0x384e96){_0x11e66c(_0x5d2b04['error'](0x1f5,_0x384e96[_0x2aa3('0x18')]));});});},'Command':function(_0x48cc41){var _0x2b0dd0=this;return new Promise(function(_0x2c5e8f,_0x6c574e){if(ami[_0x2aa3('0x19')]()==![]){return _0x6c574e(_0x2b0dd0[_0x2aa3('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x2aa3('0x11')][_0x2aa3('0x1a')],_0x2aa3('0x1b')][_0x2aa3('0x12')]('\x20')));}_0x48cc41=_[_0x2aa3('0x13')](_0x48cc41,_0x2aa3('0x1c'));_0x48cc41[_0x2aa3('0x1d')]=_0x2aa3('0x1e');return ami[_0x2aa3('0x16')](_0x48cc41)['then'](function(_0x1a126b){_0x2c5e8f({'code':0xc8,'message':_0x1a126b['content']});})[_0x2aa3('0x1f')](function(_0x3250c4){_0x6c574e(_0x2b0dd0[_0x2aa3('0x10')](0x1f5,_0x3250c4['message']));});});},'VoiceQueues':function(){return new Promise(function(_0x45b77b){var _0x312593=[];for(var _0x360480 in _0x533c5a[_0x2aa3('0x20')]){if(_0x533c5a[_0x2aa3('0x20')][_0x2aa3('0x21')](_0x360480)){var _0x4cdd79=_0x533c5a[_0x2aa3('0x20')][_0x360480];var _0x31384e=new VoiceQueueSummary(_0x4cdd79);_0x312593[_0x2aa3('0x22')](_0x31384e);}}_0x45b77b({'count':_0x312593[_0x2aa3('0x23')],'rows':_0x312593});});},'UpdateVoiceQueue':function(_0x583b07){return new Promise(function(_0x36b3a1,_0x139652){var _0x351408=_[_0x2aa3('0x24')](_0x533c5a['voiceQueues'],{'id':parseInt(_0x583b07['id'])});var _0x33aa72=_[_0x2aa3('0x25')](_0x583b07,['id']);if(_0x351408){for(var _0x283649 in _0x33aa72){if(typeof _0x33aa72[_0x283649]!==_0x2aa3('0x26')&&typeof _0x351408[_0x283649]!==_0x2aa3('0x26')){_0x351408[_0x283649]=_0x33aa72[_0x283649];}}_0x36b3a1(_0x351408);}else{_0x139652();}});},'VoiceChannels':function(){return new Promise(function(_0x22f5a3){var _0x1da1ab=_[_0x2aa3('0x27')](_0x533c5a[_0x2aa3('0x28')]);_0x22f5a3({'count':_0x1da1ab[_0x2aa3('0x23')],'rows':_0x1da1ab});});},'VoiceChannelMixMonitor':function(_0x124ee1){var _0x14b913=this;return new Promise(function(_0x52910a,_0x32b37b){if(ami[_0x2aa3('0x19')]()==![]){return _0x32b37b(_0x14b913[_0x2aa3('0x10')](0x1f4,[config[_0x2aa3('0x11')]['ip'],config['asterisk']['username'],_0x2aa3('0x1b')][_0x2aa3('0x12')]('\x20')));}var _0x10a23d=schema(properties[_0x2aa3('0x29')])[_0x2aa3('0x2')](_0x124ee1);if(_0x10a23d[_0x2aa3('0x23')]>0x0){return _0x32b37b(_0x14b913[_0x2aa3('0x10')](0x1f4,_['map'](_0x10a23d,_0x2aa3('0x18'))['join'](',\x20')));}var _0x2476a5=_['find'](_0x533c5a['channels'],{'uniqueid':_0x124ee1['uniqueid']});if(_0x2476a5&&_0x2476a5['channel']){var _0x338021=util[_0x2aa3('0x6')]('%s.%s',_0x124ee1[_0x2aa3('0x2a')]||_0x124ee1[_0x2aa3('0x2b')],_0x124ee1[_0x2aa3('0x6')]||_0x2aa3('0x2c'));return ami[_0x2aa3('0x16')]({'action':_0x2aa3('0x2d'),'channel':_0x2476a5['channel'],'file':_0x338021,'options':'ai(mixmonitorid)'})['then'](function(_0x25f8b6){var _0x208145=_[_0x2aa3('0x24')](_0x2476a5[_0x2aa3('0x2e')],{'filename':_0x2aa3('0x2f')+_0x338021[_0x2aa3('0x30')]()});if(_['isNil'](_0x208145)){_0x2476a5[_0x2aa3('0x2e')]['push']({'filename':_0x2aa3('0x2f')+_0x338021['toLowerCase'](),'createdAt':moment()[_0x2aa3('0x6')](_0x2aa3('0x31')),'mixmonitorid':_0x25f8b6[_0x2aa3('0x32')],'status':_0x2aa3('0x33')});}else{_0x208145['mixmonitorid']=_0x25f8b6[_0x2aa3('0x32')];_0x208145[_0x2aa3('0x34')]=_0x2aa3('0x33');}_0x52910a({'code':0xc8,'message':[_0x124ee1['uniqueid'],_0x2aa3('0x35'),_0x25f8b6[_0x2aa3('0x32')]][_0x2aa3('0x12')]('\x20'),'mixmonitorid':_0x25f8b6['mixmonitorid']});})[_0x2aa3('0x1f')](function(_0x34bc71){_0x32b37b(_0x14b913[_0x2aa3('0x10')](0x1f5,[_0x124ee1[_0x2aa3('0x2b')],_0x34bc71[_0x2aa3('0x18')][_0x2aa3('0x30')]()]['join']('\x20')));});}else{return _0x32b37b(_0x14b913['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x4be54f){var _0x3f88ed=this;return new Promise(function(_0x490909,_0x269980){if(ami['isConnected']()==![]){return _0x269980(_0x3f88ed[_0x2aa3('0x10')](0x1f4,[config[_0x2aa3('0x11')]['ip'],config[_0x2aa3('0x11')]['username'],_0x2aa3('0x1b')]['join']('\x20')));}var _0x11117b=schema(properties[_0x2aa3('0x29')])[_0x2aa3('0x2')](_0x4be54f);if(_0x11117b[_0x2aa3('0x23')]>0x0){return _0x269980(_0x3f88ed[_0x2aa3('0x10')](0x1f4,_['map'](_0x11117b,_0x2aa3('0x18'))[_0x2aa3('0x12')](',\x20')));}var _0x2a16fd=_['find'](_0x533c5a['channels'],{'uniqueid':_0x4be54f[_0x2aa3('0x2b')]});if(_0x2a16fd){return Promise[_0x2aa3('0x36')]()[_0x2aa3('0x17')](function(){if(_0x2a16fd[_0x2aa3('0x37')]){return ami[_0x2aa3('0x16')]({'action':'StopMixMonitor','channel':_0x2a16fd[_0x2aa3('0x37')],'mixmonitorid':_0x4be54f[_0x2aa3('0x32')]})[_0x2aa3('0x1f')](function(){});}})[_0x2aa3('0x17')](function(){if(_0x2a16fd[_0x2aa3('0x38')]){return ami[_0x2aa3('0x16')]({'action':_0x2aa3('0x39'),'channel':_0x2a16fd[_0x2aa3('0x38')],'mixmonitorid':_0x4be54f[_0x2aa3('0x32')]})[_0x2aa3('0x1f')](function(){});}})[_0x2aa3('0x17')](function(){var _0x7b23f9=_['find'](_0x2a16fd[_0x2aa3('0x2e')],{'mixmonitorid':_0x4be54f[_0x2aa3('0x32')]});if(_0x7b23f9){_0x7b23f9[_0x2aa3('0x34')]=_0x2aa3('0x3a');}})[_0x2aa3('0x17')](function(){var _0x245487=util[_0x2aa3('0x6')](_0x2aa3('0x3b'),_0x4be54f[_0x2aa3('0x2a')]||_0x4be54f[_0x2aa3('0x2b')],_0x4be54f[_0x2aa3('0x6')]||_0x2aa3('0x2c'));var _0x2898cf=_[_0x2aa3('0x24')](_0x2a16fd[_0x2aa3('0x2e')],{'filename':'/var/spool/asterisk/monitor/'+_0x245487[_0x2aa3('0x30')]()});if(_0x2898cf){_0x2898cf[_0x2aa3('0x34')]=_0x2aa3('0x3a');}})[_0x2aa3('0x17')](function(){_0x490909({'code':0xc8,'message':[_0x4be54f[_0x2aa3('0x2b')],'StopMixMonitor\x20Success'][_0x2aa3('0x12')]('\x20')});})[_0x2aa3('0x1f')](function(_0x2b1847){_0x269980(_0x3f88ed[_0x2aa3('0x10')](0x1f5,[_0x4be54f[_0x2aa3('0x2b')],_0x2b1847[_0x2aa3('0x18')]['toLowerCase']()][_0x2aa3('0x12')]('\x20')));});}else{return _0x269980(_0x3f88ed[_0x2aa3('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x11d33f){var _0x202653=_[_0x2aa3('0x27')](_0x533c5a[_0x2aa3('0x3c')]);_0x11d33f({'count':_0x202653['length'],'rows':_0x202653});});},'VoiceQueuesChannel':function(_0x1ed492){var _0x11000a=this;return new Promise(function(_0x274398,_0x5399fc){var _0x1bbde3=schema(properties[_0x2aa3('0x3d')])[_0x2aa3('0x2')](_0x1ed492);if(_0x1bbde3[_0x2aa3('0x23')]>0x0){return _0x5399fc(_0x11000a[_0x2aa3('0x10')](0x1f4,_['map'](_0x1bbde3,'message')[_0x2aa3('0x12')](',\x20')));}var _0x3604d4=_[_0x2aa3('0x24')](_0x533c5a[_0x2aa3('0x3c')],{'uniqueid':_0x1ed492['uniqueid']});if(_0x3604d4){_0x274398(_0x3604d4);}else{return _0x5399fc(_0x11000a[_0x2aa3('0x10')](0x1f5,_0x2aa3('0x3e')));}});},'VoiceQueuesChannelHangup':function(_0x5f5670){var _0x4567d7=this;return new Promise(function(_0x56ee8c,_0x4512f2){if(ami[_0x2aa3('0x19')]()==![]){return _0x4512f2(_0x4567d7[_0x2aa3('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x2aa3('0x11')][_0x2aa3('0x1a')],_0x2aa3('0x1b')]['join']('\x20')));}var _0x4ea5ba=schema(properties[_0x2aa3('0x3f')])[_0x2aa3('0x2')](_0x5f5670);if(_0x4ea5ba[_0x2aa3('0x23')]>0x0){return _0x4512f2(_0x4567d7['error'](0x1f4,_[_0x2aa3('0x40')](_0x4ea5ba,_0x2aa3('0x18'))[_0x2aa3('0x12')](',\x20')));}var _0x1ac83f=_['find'](_0x533c5a[_0x2aa3('0x3c')],{'uniqueid':_0x5f5670[_0x2aa3('0x2b')]});if(_0x1ac83f&&_0x1ac83f[_0x2aa3('0x37')]){return ami[_0x2aa3('0x16')]({'action':'Hangup','channel':_0x1ac83f[_0x2aa3('0x37')]})[_0x2aa3('0x17')](function(_0x4eb246){_0x56ee8c({'code':0xc8,'message':[_0x5f5670[_0x2aa3('0x2b')],_0x4eb246[_0x2aa3('0x18')][_0x2aa3('0x30')]()][_0x2aa3('0x12')]('\x20')});})[_0x2aa3('0x1f')](function(_0x3573d2){_0x4512f2(_0x4567d7[_0x2aa3('0x10')](0x1f5,[_0x5f5670[_0x2aa3('0x2b')],_0x3573d2[_0x2aa3('0x18')][_0x2aa3('0x30')]()][_0x2aa3('0x12')]('\x20')));});}else{return _0x4512f2(_0x4567d7[_0x2aa3('0x10')](0x1f5,_0x2aa3('0x3e')));}});},'VoiceQueuesChannelRedirect':function(_0x4c735f){var _0xd64d8b=this;return new Promise(function(_0x4fd456,_0x1cae8d){if(ami[_0x2aa3('0x19')]()==![]){return _0x1cae8d(_0xd64d8b['error'](0x1f4,[config['asterisk']['ip'],config[_0x2aa3('0x11')][_0x2aa3('0x1a')],_0x2aa3('0x1b')][_0x2aa3('0x12')]('\x20')));}var _0x2ff5c5=schema(properties[_0x2aa3('0x41')])[_0x2aa3('0x2')](_0x4c735f);if(_0x2ff5c5['length']>0x0){return _0x1cae8d(_0xd64d8b[_0x2aa3('0x10')](0x1f4,_[_0x2aa3('0x40')](_0x2ff5c5,_0x2aa3('0x18'))[_0x2aa3('0x12')](',\x20')));}var _0x5e047d=_[_0x2aa3('0x24')](_0x533c5a['queueChannels'],{'uniqueid':_0x4c735f[_0x2aa3('0x2b')]});if(_0x5e047d&&_0x5e047d['channel']){return ami[_0x2aa3('0x16')]({'action':_0x2aa3('0x42'),'channel':_0x5e047d['channel'],'exten':_0x4c735f['exten'],'context':_0x4c735f[_0x2aa3('0x43')]||_0x5e047d[_0x2aa3('0x43')],'priority':0x1})[_0x2aa3('0x17')](function(_0x4851ec){_0x4fd456({'code':0xc8,'message':[_0x4c735f[_0x2aa3('0x2b')],_0x4851ec['message'][_0x2aa3('0x30')]()][_0x2aa3('0x12')]('\x20')});})[_0x2aa3('0x1f')](function(_0x3fef73){_0x1cae8d(_0xd64d8b[_0x2aa3('0x10')](0x1f5,[_0x4c735f[_0x2aa3('0x2b')],_0x3fef73[_0x2aa3('0x18')]['toLowerCase']()][_0x2aa3('0x12')]('\x20')));});}else{return _0x1cae8d(_0xd64d8b[_0x2aa3('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x2bf922){return new Promise(function(_0xd94809){var _0x3009b9=_[_0x2aa3('0x27')](_0x533c5a[_0x2aa3('0xc')]);if(_0x2bf922&&_0x2bf922['id']){var _0x218117=_['find'](_0x3009b9,function(_0x58638b){return _0x58638b['id']===_0x2bf922['id'];});_0xd94809(_0x218117);}else{_0xd94809({'count':_0x3009b9[_0x2aa3('0x23')],'rows':_0x3009b9});}});},'Telephones':function(){return new Promise(function(_0x18c156){var _0x1cb809=_[_0x2aa3('0x27')](_0x533c5a[_0x2aa3('0x44')]);_0x18c156({'count':_0x1cb809[_0x2aa3('0x23')],'rows':_0x1cb809});});},'Trunks':function(){return new Promise(function(_0x1813d2){var _0x3a4e30=_[_0x2aa3('0x27')](_0x533c5a[_0x2aa3('0x45')]);_0x1813d2({'count':_0x3a4e30['length'],'rows':_0x3a4e30});});},'OutboundChannels':function(){return new Promise(function(_0x27433c){var _0x2cb0f3=_[_0x2aa3('0x27')](_0x533c5a[_0x2aa3('0x46')]);_0x27433c({'count':_0x2cb0f3['length'],'rows':_0x2cb0f3});});},'Outbound':function(){return new Promise(function(_0x6d333e){_0x6d333e(_0x533c5a['outbound']);});},'Campaigns':function(){return new Promise(function(_0x38fd0b){var _0x1cfc4e=_[_0x2aa3('0x27')](_0x533c5a[_0x2aa3('0x47')]);_0x38fd0b({'count':_0x1cfc4e[_0x2aa3('0x23')],'rows':_0x1cfc4e});});},'VoiceQueuesPreview':function(_0x23ea5a){var _0x576aeb=this;return new Promise(function(_0x2c5da0,_0x384d38){_0x16f081['run'](_0x23ea5a['id'])[_0x2aa3('0x17')](function(_0x43071b){_0x2c5da0({'code':0xc8,'message':_0x43071b[_0x2aa3('0x18')]});})[_0x2aa3('0x1f')](function(_0x3dfd33){_0x384d38(_0x576aeb[_0x2aa3('0x10')](0x1f4,_0x3dfd33[_0x2aa3('0x18')]));});});},'EventManager':function(_0x4f59da){var _0x517eca=this;return new Promise(function(_0xc837d0,_0x164fce){if(!_0x4f59da['event']){return _0x164fce(_0x517eca[_0x2aa3('0x10')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x2aa3('0x48')](_0x2aa3('0x49')+_0x4f59da[_0x2aa3('0x4a')],_0x4f59da[_0x2aa3('0x18')]);_0xc837d0({'code':0xc8,'message':_0x4f59da});});},'FaxAccounts':function(){return new Promise(function(_0x4c1d04){var _0x20f862=_[_0x2aa3('0x27')](_0x533c5a['faxAccounts']);_0x4c1d04({'count':_0x20f862['length'],'rows':_0x20f862});});},'SendFax':function(_0x43da7a){var _0x51e736=this;return new Promise(function(_0xa66eed,_0x56f7fa){_0x104a8f['send'](_0x43da7a)[_0x2aa3('0x17')](function(_0x522930){_0xa66eed({'code':0xc8,'message':_0x522930[_0x2aa3('0x18')]});})['catch'](function(_0xe09457){_0x56f7fa(_0x51e736[_0x2aa3('0x10')](0x1f4,_0xe09457[_0x2aa3('0x18')]));});});},'CheckAfterSend':function(_0x2bd5e2){var _0xe336ba=this;return new Promise(function(_0x14926b,_0x2e9603){_0x104a8f[_0x2aa3('0x4b')](_0x2bd5e2)['then'](function(_0x897f1a){_0x14926b({'code':0xc8,'message':_0x897f1a[_0x2aa3('0x18')]});})[_0x2aa3('0x1f')](function(_0x333f94){_0x2e9603(_0xe336ba[_0x2aa3('0x10')](0x1f4,_0x333f94[_0x2aa3('0x18')]));});});}};var _0x46de98=jayson[_0x2aa3('0x4c')](_0x55e567)[_0x2aa3('0x4d')]();_0x46de98['on']('error',function(_0x1ba6d0){return _0x574914(_0x1ba6d0);});_0x46de98[_0x2aa3('0x4e')](0x232a,_0x2aa3('0x4f'),function(){console[_0x2aa3('0x50')](_0x2aa3('0x51'),0x232a);return _0x59c3bb(_0x2aa3('0x52')+0x232a);});});};
\ No newline at end of file
index f1c5238..72d1295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd7=['name','format','trigger:%s','lodash','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','socket.io-emitter','info','emit','exec','data1','data2','isNil','data5','data3','phone','map','routeId','calleridnum','destcalleridnum','firstName','lastName','mobile','ListId','scheduledAt','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','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s'];(function(_0x2c5255,_0x4340c3){var _0x30d0ea=function(_0x131ba1){while(--_0x131ba1){_0x2c5255['push'](_0x2c5255['shift']());}};_0x30d0ea(++_0x4340c3);}(_0x3dd7,0x12f));var _0x73dd=function(_0x1fa6c6,_0x4932da){_0x1fa6c6=_0x1fa6c6-0x0;var _0x2aaab8=_0x3dd7[_0x1fa6c6];return _0x2aaab8;};'use strict';var _=require(_0x73dd('0x0'));var BPromise=require('bluebird');var Redis=require(_0x73dd('0x1'));var util=require(_0x73dd('0x2'));var config=require(_0x73dd('0x3'));var logger=require(_0x73dd('0x4'))(_0x73dd('0x5'));var cmContactRpc=require(_0x73dd('0x6'));config['redis']=_['defaults'](config[_0x73dd('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x73dd('0x8'))(new Redis(config[_0x73dd('0x7')]));function emit(_0x58d1f1,_0x50f41f,_0x15506e,_0x27a656,_0x1ce0ff){logger[_0x73dd('0x9')]('[CM][%s][%s]',_0x58d1f1,_0x50f41f['id'],_0x15506e,_0x27a656,JSON['stringify'](_0x1ce0ff));io['to'](_0x15506e)[_0x73dd('0xa')](_0x27a656,_0x1ce0ff);}exports[_0x73dd('0xb')]=function(_0x41b608,_0x10369a,_0x41333f,_0xf81a3a){var _0x4d6a3f,_0x36bc18;var _0x4327af={};var _0x29e760;var _0x54ec79=Number(_0x41333f[_0x73dd('0xc')]);var _0x29743b=_0x41333f[_0x73dd('0xd')]?Boolean(Number(_0x41333f[_0x73dd('0xd')])):![];var _0x480011;var _0x11c929=![];if(!_[_0x73dd('0xe')](_0x41333f[_0x73dd('0xf')])){if(_0x41333f[_0x73dd('0xf')]=='1')_0x11c929=!![];}if(!_0x11c929){if(_0xf81a3a['xmd-contactid']){_0x4327af['id']=_0xf81a3a['xmd-contactid'];}}if(!_0x4327af['id']){_0x4327af['ListId']=_0x54ec79;_0x480011=_0x41333f[_0x73dd('0x10')]&&_0x41333f[_0x73dd('0x10')]!=='0'?_0x41333f['data3']['split'](','):[_0x73dd('0x11')];_0x4327af['$or']=_[_0x73dd('0x12')](_0x480011,function(_0x29e97e){var _0x1f6439={};_0x1f6439[_0x29e97e]=_0xf81a3a[_0x73dd('0x13')]?_0xf81a3a['destcalleridnum']:_0xf81a3a[_0x73dd('0x14')];return _0x1f6439;});_0x29e760=_0xf81a3a[_0x73dd('0x13')]?_0xf81a3a[_0x73dd('0x15')]:_0xf81a3a['calleridnum'];}var _0x36f136=['id',_0x73dd('0x16'),_0x73dd('0x17'),_0x73dd('0x11'),_0x73dd('0x18'),'fax',_0x73dd('0x19'),'createdAt',_0x73dd('0x1a'),'updatedAt'];var _0x1f40c2=_['union'](_0x36f136,_0x480011);BPromise[_0x73dd('0x1b')]()[_0x73dd('0x1c')](cmContactRpc[_0x73dd('0x1d')]({'attributes':_0x1f40c2,'where':_0x4327af,'phone':_0x29e760}))[_0x73dd('0x1c')](function(_0x391111){_0x36bc18=_0x391111;if(!_[_0x73dd('0x1e')](_0x36bc18)){if(_0x36bc18[_0x73dd('0x1f')]===0x1){_0x4d6a3f=_0x36bc18[0x0];logger[_0x73dd('0x9')](_0x73dd('0x20'),_0xf81a3a[_0x73dd('0x21')],_0x10369a['id'],_0x4d6a3f['id']);}else{logger[_0x73dd('0x9')](_0x73dd('0x22'),_0xf81a3a[_0x73dd('0x21')],_0x10369a['id'],_[_0x73dd('0x12')](_0x36bc18,'id')[_0x73dd('0x23')](','));}return;}else{logger[_0x73dd('0x9')](_0x73dd('0x24'),_0xf81a3a[_0x73dd('0x21')],_0x10369a['id']);var _0x23d71e={'ListId':_0x54ec79};var _0x43d634=_0x41333f[_0x73dd('0x25')]&&_0x41333f[_0x73dd('0x25')]!=='0'?_0x41333f['data4']:_0x73dd('0x11');if(_0x29743b){logger[_0x73dd('0x9')](_0x73dd('0x26'),_0xf81a3a[_0x73dd('0x21')],_0x10369a['id']);_0x23d71e[_0x43d634]=_[_0x73dd('0xe')](_0xf81a3a[_0x73dd('0x13')])?_0xf81a3a[_0x73dd('0x14')]:_0xf81a3a[_0x73dd('0x15')];if(_['isNil'](_0xf81a3a['routeId'])){_0x23d71e['firstName']=_0xf81a3a['calleridname']&&_0xf81a3a[_0x73dd('0x27')]!==_0x73dd('0x28')?_0xf81a3a['calleridname']:_0x73dd('0x29');}else{_0x23d71e[_0x73dd('0x16')]=_0xf81a3a[_0x73dd('0x2a')]&&_0xf81a3a[_0x73dd('0x2a')]!=='<unknown>'?_0xf81a3a['destcalleridname']:_0x73dd('0x29');}return BPromise[_0x73dd('0x1b')]()['then'](cmContactRpc['createContact'](_0x23d71e))[_0x73dd('0x1c')](function(_0x17b665){_0x4d6a3f=_0x17b665;_0x36bc18[_0x73dd('0x2b')](_0x17b665);if(_0x4d6a3f){logger[_0x73dd('0x9')](_0x73dd('0x2c'),_0xf81a3a[_0x73dd('0x21')],_0x10369a['id'],_0x4d6a3f['id']);}return;});}else{logger[_0x73dd('0x9')](_0x73dd('0x2d'),_0xf81a3a[_0x73dd('0x21')],_0x10369a['id']);_0x23d71e[_0x43d634]=_[_0x73dd('0xe')](_0xf81a3a[_0x73dd('0x13')])?_0xf81a3a['calleridnum']:_0xf81a3a[_0x73dd('0x15')];if(_[_0x73dd('0xe')](_0xf81a3a[_0x73dd('0x13')])){_0x23d71e[_0x73dd('0x16')]=_0xf81a3a['calleridname']&&_0xf81a3a[_0x73dd('0x27')]!==_0x73dd('0x28')?_0xf81a3a['calleridname']:_0x73dd('0x29');}else{_0x23d71e[_0x73dd('0x16')]=_0xf81a3a['destcalleridname']&&_0xf81a3a[_0x73dd('0x2a')]!==_0x73dd('0x28')?_0xf81a3a[_0x73dd('0x2a')]:'Unknown';}_0x4d6a3f=_0x23d71e;_0x36bc18[_0x73dd('0x2b')](_0x23d71e);return;}}})[_0x73dd('0x1c')](function(){if(_0x41b608){emit(_0xf81a3a[_0x73dd('0x21')],_0x10369a,util['format'](_0x73dd('0x2e'),_0x41b608[_0x73dd('0x2f')]),util[_0x73dd('0x30')](_0x73dd('0x31'),_0x41333f['action']['toLowerCase']()),{'evt':_['merge'](_0xf81a3a,{'autoCreate':_0x29743b}),'contact':_0x4d6a3f===undefined?{}:_0x4d6a3f,'contacts':_0x36bc18[_0x73dd('0x1f')]===0x0?undefined:_0x36bc18});}});};
\ No newline at end of file
+var _0x9679=['[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','Unknown','destcalleridname','<unknown>','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s','action','toLowerCase','merge','length','lodash','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','fax','createdAt','scheduledAt','updatedAt','resolve','then','isEmpty'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x9679,0x15f));var _0x9967=function(_0x54bf25,_0x1d0aeb){_0x54bf25=_0x54bf25-0x0;var _0x431fbb=_0x9679[_0x54bf25];return _0x431fbb;};'use strict';var _=require(_0x9967('0x0'));var BPromise=require('bluebird');var Redis=require('ioredis');var util=require(_0x9967('0x1'));var config=require(_0x9967('0x2'));var logger=require(_0x9967('0x3'))(_0x9967('0x4'));var cmContactRpc=require(_0x9967('0x5'));config[_0x9967('0x6')]=_[_0x9967('0x7')](config[_0x9967('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0xc3f972,_0x37b5d2,_0x4e5ed5,_0x425d2a,_0x47c431){logger[_0x9967('0x8')](_0x9967('0x9'),_0xc3f972,_0x37b5d2['id'],_0x4e5ed5,_0x425d2a,JSON[_0x9967('0xa')](_0x47c431));io['to'](_0x4e5ed5)[_0x9967('0xb')](_0x425d2a,_0x47c431);}exports[_0x9967('0xc')]=function(_0x2b979a,_0x287b63,_0x3deee7,_0x2079a6){var _0x1a140a,_0x8c7bb;var _0x182bcb={};var _0xad4c07;var _0x4cfb6b=Number(_0x3deee7[_0x9967('0xd')]);var _0x4a1840=_0x3deee7['data2']?Boolean(Number(_0x3deee7[_0x9967('0xe')])):![];var _0x447843;var _0x42917e=![];if(!_[_0x9967('0xf')](_0x3deee7[_0x9967('0x10')])){if(_0x3deee7[_0x9967('0x10')]=='1')_0x42917e=!![];}if(!_0x42917e){if(_0x2079a6['xmd-contactid']){_0x182bcb['id']=_0x2079a6[_0x9967('0x11')];}}if(!_0x182bcb['id']){_0x182bcb[_0x9967('0x12')]=_0x4cfb6b;_0x447843=_0x3deee7['data3']&&_0x3deee7['data3']!=='0'?_0x3deee7['data3']['split'](','):[_0x9967('0x13')];_0x182bcb[_0x9967('0x14')]=_[_0x9967('0x15')](_0x447843,function(_0x8bf4ea){var _0x197816={};_0x197816[_0x8bf4ea]=_0x2079a6[_0x9967('0x16')]?_0x2079a6[_0x9967('0x17')]:_0x2079a6[_0x9967('0x18')];return _0x197816;});_0xad4c07=_0x2079a6[_0x9967('0x16')]?_0x2079a6[_0x9967('0x17')]:_0x2079a6[_0x9967('0x18')];}var _0x421392=['id',_0x9967('0x19'),_0x9967('0x1a'),'phone','mobile',_0x9967('0x1b'),_0x9967('0x12'),_0x9967('0x1c'),_0x9967('0x1d'),_0x9967('0x1e')];var _0x9304ad=_['union'](_0x421392,_0x447843);BPromise[_0x9967('0x1f')]()[_0x9967('0x20')](cmContactRpc['getContacts']({'attributes':_0x9304ad,'where':_0x182bcb,'phone':_0xad4c07}))[_0x9967('0x20')](function(_0xfb090b){_0x8c7bb=_0xfb090b;if(!_[_0x9967('0x21')](_0x8c7bb)){if(_0x8c7bb['length']===0x1){_0x1a140a=_0x8c7bb[0x0];logger['info'](_0x9967('0x22'),_0x2079a6['uniqueid'],_0x287b63['id'],_0x1a140a['id']);}else{logger['info']('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x2079a6[_0x9967('0x23')],_0x287b63['id'],_[_0x9967('0x15')](_0x8c7bb,'id')[_0x9967('0x24')](','));}return;}else{logger[_0x9967('0x8')](_0x9967('0x25'),_0x2079a6[_0x9967('0x23')],_0x287b63['id']);var _0x17f2f3={'ListId':_0x4cfb6b};var _0x38f7c1=_0x3deee7[_0x9967('0x26')]&&_0x3deee7[_0x9967('0x26')]!=='0'?_0x3deee7[_0x9967('0x26')]:_0x9967('0x13');if(_0x4a1840){logger[_0x9967('0x8')](_0x9967('0x27'),_0x2079a6[_0x9967('0x23')],_0x287b63['id']);_0x17f2f3[_0x38f7c1]=_[_0x9967('0xf')](_0x2079a6[_0x9967('0x16')])?_0x2079a6[_0x9967('0x18')]:_0x2079a6['destcalleridnum'];if(_[_0x9967('0xf')](_0x2079a6[_0x9967('0x16')])){_0x17f2f3[_0x9967('0x19')]=_0x2079a6[_0x9967('0x28')]&&_0x2079a6[_0x9967('0x28')]!=='<unknown>'?_0x2079a6['calleridname']:_0x9967('0x29');}else{_0x17f2f3['firstName']=_0x2079a6[_0x9967('0x2a')]&&_0x2079a6[_0x9967('0x2a')]!==_0x9967('0x2b')?_0x2079a6[_0x9967('0x2a')]:_0x9967('0x29');}return BPromise[_0x9967('0x1f')]()['then'](cmContactRpc['createContact'](_0x17f2f3))['then'](function(_0x518f0e){_0x1a140a=_0x518f0e;_0x8c7bb[_0x9967('0x2c')](_0x518f0e);if(_0x1a140a){logger[_0x9967('0x8')](_0x9967('0x2d'),_0x2079a6['uniqueid'],_0x287b63['id'],_0x1a140a['id']);}return;});}else{logger[_0x9967('0x8')](_0x9967('0x2e'),_0x2079a6[_0x9967('0x23')],_0x287b63['id']);_0x17f2f3[_0x38f7c1]=_[_0x9967('0xf')](_0x2079a6['routeId'])?_0x2079a6[_0x9967('0x18')]:_0x2079a6[_0x9967('0x17')];if(_['isNil'](_0x2079a6[_0x9967('0x16')])){_0x17f2f3[_0x9967('0x19')]=_0x2079a6[_0x9967('0x28')]&&_0x2079a6[_0x9967('0x28')]!==_0x9967('0x2b')?_0x2079a6[_0x9967('0x28')]:_0x9967('0x29');}else{_0x17f2f3[_0x9967('0x19')]=_0x2079a6[_0x9967('0x2a')]&&_0x2079a6[_0x9967('0x2a')]!==_0x9967('0x2b')?_0x2079a6['destcalleridname']:_0x9967('0x29');}_0x1a140a=_0x17f2f3;_0x8c7bb[_0x9967('0x2c')](_0x17f2f3);return;}}})[_0x9967('0x20')](function(){if(_0x2b979a){emit(_0x2079a6[_0x9967('0x23')],_0x287b63,util[_0x9967('0x2f')](_0x9967('0x30'),_0x2b979a[_0x9967('0x31')]),util[_0x9967('0x2f')](_0x9967('0x32'),_0x3deee7[_0x9967('0x33')][_0x9967('0x34')]()),{'evt':_[_0x9967('0x35')](_0x2079a6,{'autoCreate':_0x4a1840}),'contact':_0x1a140a===undefined?{}:_0x1a140a,'contacts':_0x8c7bb[_0x9967('0x36')]===0x0?undefined:_0x8c7bb});}});};
\ No newline at end of file
index b763004..2d58024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb931=['vtigerAccounts','servicenowAccounts','dynamics365Accounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:offlineMessage','prototype','emit','stringify','motionChannel','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','action','browser','TemplateId','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','uriLocation','data4','windowWidth','data5','800','windowHeight','data6','600','winapp','winArguments','format','user:%s','trigger:%s:%s','toLowerCase','data1','name','trigger:%s','exec','queue','script','replace','channel','AllConditions','length','every','checkConditions','AnyConditions','some','field','account','chat','value','upperFirst','AccountId','operator','interaction','message','event','agent','membername','lastevent','routeId','null','undefined','substatus','created','equals','url','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts'];(function(_0x68cdc1,_0x32d56e){var _0x1f372c=function(_0x215001){while(--_0x215001){_0x68cdc1['push'](_0x68cdc1['shift']());}};_0x1f372c(++_0x32d56e);}(_0xb931,0x155));var _0x1b93=function(_0xf47217,_0x2a868a){_0xf47217=_0xf47217-0x0;var _0x159211=_0xb931[_0xf47217];return _0x159211;};'use strict';var util=require('util');var _=require('lodash');var url=require(_0x1b93('0x0'));var Mustache=require('mustache');var Redis=require('ioredis');var urlforward=require(_0x1b93('0x1'));var integration=require(_0x1b93('0x2'));var cmContact=require(_0x1b93('0x3'));var script=require(_0x1b93('0x4'));var config=require(_0x1b93('0x5'));var logger=require(_0x1b93('0x6'))(_0x1b93('0x7'));var ami=require(_0x1b93('0x8'));config[_0x1b93('0x9')]=_[_0x1b93('0xa')](config[_0x1b93('0x9')],{'host':_0x1b93('0xb'),'port':0x18eb});var io=require(_0x1b93('0xc'))(new Redis(config[_0x1b93('0x9')]));var operators={'equals':function(_0xa1d294,_0x59e100){return _0xa1d294==_0x59e100;},'not_equals':function(_0x541e77,_0x35ce31){return _0x541e77!=_0x35ce31;}};var barAndWebActions=[_0x1b93('0xd'),_0x1b93('0x0'),'winapp'];function Trigger(_0x38e7da){this['triggers']=_0x38e7da[_0x1b93('0xe')];this[_0x1b93('0xf')]=_0x38e7da['agents'];this['voiceQueues']=_0x38e7da[_0x1b93('0x10')];this[_0x1b93('0x11')]=_0x38e7da[_0x1b93('0x11')];this['voiceExtensions']=_0x38e7da[_0x1b93('0x12')];this['zendeskAccounts']=_0x38e7da[_0x1b93('0x13')];this[_0x1b93('0x14')]=_0x38e7da[_0x1b93('0x14')];this[_0x1b93('0x15')]=_0x38e7da[_0x1b93('0x15')];this[_0x1b93('0x16')]=_0x38e7da['sugarcrmAccounts'];this[_0x1b93('0x17')]=_0x38e7da[_0x1b93('0x17')];this[_0x1b93('0x18')]=_0x38e7da[_0x1b93('0x18')];this['vtigerAccounts']=_0x38e7da[_0x1b93('0x19')];this[_0x1b93('0x1a')]=_0x38e7da['servicenowAccounts'];this[_0x1b93('0x1b')]=_0x38e7da[_0x1b93('0x1b')];this['freshsalesAccounts']=_0x38e7da['freshsalesAccounts'];this[_0x1b93('0x1c')]={'zendesk':this[_0x1b93('0x13')],'salesforce':this[_0x1b93('0x15')],'freshdesk':this[_0x1b93('0x14')],'sugarcrm':this[_0x1b93('0x16')],'zoho':this['zohoAccounts'],'desk':this[_0x1b93('0x18')],'vtiger':this[_0x1b93('0x19')],'dynamics365':this['dynamics365Accounts'],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x1b93('0x1a')]};ami['on'](_0x1b93('0x1d'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x20'),this[_0x1b93('0x1e')]['bind'](this));ami['on'](_0x1b93('0x21'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on']('custom:agentcomplete',this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x22'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x23'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x24'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x25'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x26'),this['syncCustomEvent']['bind'](this));ami['on'](_0x1b93('0x27'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x28'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on']('custom:timeout',this['syncCustomEvent'][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x29'),this[_0x1b93('0x2a')]['bind'](this));ami['on'](_0x1b93('0x2b'),this['syncAgentDial'][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x2c'),this[_0x1b93('0x2a')]['bind'](this));ami['on']('custom:newinteraction',this[_0x1b93('0x1e')]['bind'](this));ami['on'](_0x1b93('0x2d'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on']('custom:substatus',this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x2e'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x2f'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x30'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));ami['on']('custom:rejectmessage',this['syncCustomEvent'][_0x1b93('0x1f')](this));ami['on'](_0x1b93('0x31'),this[_0x1b93('0x1e')][_0x1b93('0x1f')](this));}Trigger[_0x1b93('0x32')][_0x1b93('0x33')]=function(_0x2e6f54,_0x568aba,_0x56e0a8){logger['info'](_0x2e6f54,_0x568aba,JSON[_0x1b93('0x34')](_0x56e0a8));io['to'](_0x2e6f54)[_0x1b93('0x33')](_0x568aba,_0x56e0a8);};Trigger['prototype']['syncCustomEvent']=function(_0x4a581f){var _0x20d4aa=_['clone'](_0x4a581f);if(typeof _0x20d4aa[_0x1b93('0x35')]==='undefined'){_0x20d4aa[_0x1b93('0x35')]=_0x1b93('0x36');}this[_0x1b93('0x37')](_0x20d4aa);};Trigger[_0x1b93('0x32')][_0x1b93('0x2a')]=function(_0x2b292f){if(this['agents'][_0x2b292f[_0x1b93('0x38')]]){this['syncCustomEvent'](_0x2b292f);}};Trigger[_0x1b93('0x32')]['checkTriggers']=function(_0x4302bc){var _0x3bf62d;for(var _0x2bbeef in this[_0x1b93('0xe')]){if(this[_0x1b93('0xe')][_0x1b93('0x39')](_0x2bbeef)){if(this[_0x1b93('0xe')][_0x2bbeef][_0x1b93('0x3a')]){_0x3bf62d=this[_0x1b93('0x3b')](this[_0x1b93('0xe')][_0x2bbeef],_0x4302bc);if(_0x3bf62d){_[_0x1b93('0x3c')](_0x4302bc,_0x4302bc[_0x1b93('0x3d')]);for(var _0x24921d=0x0,_0x3f7403,_0x547bbf,_0x36fad4;_0x24921d<this[_0x1b93('0xe')][_0x2bbeef][_0x1b93('0x3e')]['length'];_0x24921d+=0x1){_0x3f7403=this[_0x1b93('0xe')][_0x2bbeef][_0x1b93('0x3e')][_0x24921d];if(this[_0x1b93('0xf')][_0x4302bc[_0x1b93('0x38')]]){switch(_0x3f7403[_0x1b93('0x3f')]['toLowerCase']()){case'contactmanager':break;case'motionbar':case _0x1b93('0x40'):var _0x595808={};switch(barAndWebActions[_0x3f7403['data1']]){case _0x1b93('0xd'):_0x595808[_0x1b93('0x41')]=_0x3f7403[_0x1b93('0x42')];_0x595808[_0x1b93('0x43')]=this[_0x1b93('0x11')][_0x3f7403[_0x1b93('0x42')]]?Mustache[_0x1b93('0x44')](this['templates'][_0x3f7403['data2']][_0x1b93('0x43')],_0x4302bc):_0x1b93('0x45');break;case'url':_0x595808[_0x1b93('0x46')]=this[_0x1b93('0x47')](_0x3f7403['data2'],_0x4302bc,_[_0x1b93('0x48')](_0x3f7403['data3'])?!![]:parseInt(_0x3f7403[_0x1b93('0x49')],0xa));if(_[_0x1b93('0x48')](_0x3f7403['data4'])){_0x595808[_0x1b93('0x4a')]='0';}else{_0x595808[_0x1b93('0x4b')]=_0x3f7403[_0x1b93('0x4c')];_0x595808[_0x1b93('0x4d')]=_['isNil'](_0x3f7403[_0x1b93('0x4e')])?_0x1b93('0x4f'):_0x3f7403[_0x1b93('0x4e')];_0x595808[_0x1b93('0x50')]=_['isNil'](_0x3f7403[_0x1b93('0x51')])?_0x1b93('0x52'):_0x3f7403['data6'];}break;case _0x1b93('0x53'):_0x595808['winApplication']=_0x3f7403[_0x1b93('0x42')]?Mustache[_0x1b93('0x44')](_0x3f7403[_0x1b93('0x42')],_0x4302bc):'';_0x595808[_0x1b93('0x54')]=_0x3f7403['data3']?Mustache[_0x1b93('0x44')](_0x3f7403[_0x1b93('0x49')],_0x4302bc):'';break;}this[_0x1b93('0x33')](util[_0x1b93('0x55')](_0x1b93('0x56'),this['agents'][_0x4302bc[_0x1b93('0x38')]]['name']),util['format'](_0x1b93('0x57'),_0x3f7403[_0x1b93('0x3f')][_0x1b93('0x58')](),barAndWebActions[_0x3f7403[_0x1b93('0x59')]]),_[_0x1b93('0x3c')](_0x595808,_0x4302bc));break;case'jscripty':this[_0x1b93('0x33')](util[_0x1b93('0x55')](_0x1b93('0x56'),this[_0x1b93('0xf')][_0x4302bc[_0x1b93('0x38')]]['name']),util[_0x1b93('0x55')]('trigger:%s',_0x3f7403[_0x1b93('0x3f')]['toLowerCase']()),_['merge']({'ProjectId':parseInt(_0x3f7403[_0x1b93('0x59')],0xa)},_0x4302bc));break;default:this['emit'](util[_0x1b93('0x55')]('user:%s',this['agents'][_0x4302bc[_0x1b93('0x38')]][_0x1b93('0x5a')]),util['format'](_0x1b93('0x5b'),_0x3f7403[_0x1b93('0x3f')][_0x1b93('0x58')]()),_['merge']({},_0x3f7403,_0x4302bc));}}switch(_0x3f7403[_0x1b93('0x3f')][_0x1b93('0x58')]()){case'contactmanager':cmContact[_0x1b93('0x5c')](this[_0x1b93('0xf')][_0x4302bc[_0x1b93('0x38')]],this[_0x1b93('0xe')][_0x2bbeef],_0x3f7403,_0x4302bc);break;case'integration':integration[_0x1b93('0x5c')](_0x3f7403,_0x4302bc,this[_0x1b93('0x1c')],this[_0x1b93('0xf')][_0x4302bc[_0x1b93('0x38')]],this['voiceQueues'][_0x4302bc[_0x1b93('0x5d')]],this['voiceExtensions'][_0x4302bc['routeId']]);break;case'urlforward':urlforward[_0x1b93('0x5c')](_0x3f7403,_0x4302bc);break;case _0x1b93('0x5e'):script[_0x1b93('0x5c')](_0x3f7403,_0x4302bc);break;}}}}}}};Trigger[_0x1b93('0x32')][_0x1b93('0x47')]=function(_0x159828,_0x209d39,_0x3ea18e){var _0x338f5f=url['parse'](Mustache[_0x1b93('0x44')](_0x159828,_0x209d39),!![]);if(_0x3ea18e){_[_0x1b93('0x3c')](_0x338f5f['query'],_0x209d39);}delete _0x338f5f['search'];var _0x361328=url[_0x1b93('0x55')](_0x338f5f);_0x361328=_0x361328[_0x1b93('0x5f')](/\/\?/g,'?');return _0x361328;};Trigger[_0x1b93('0x32')][_0x1b93('0x3b')]=function(_0x20965e,_0x2050da){var _0x25752a=!![];var _0x4d0623=!![];var _0x2540e8=![];if(_0x20965e[_0x1b93('0x60')]===_0x2050da[_0x1b93('0x35')]){_0x2540e8=!![];}if(_0x20965e[_0x1b93('0x61')][_0x1b93('0x62')]){_0x25752a=_[_0x1b93('0x63')](_0x20965e[_0x1b93('0x61')],this[_0x1b93('0x64')](_0x2050da,_0x20965e['channel']));}if(_0x20965e[_0x1b93('0x65')][_0x1b93('0x62')]){_0x4d0623=_[_0x1b93('0x66')](_0x20965e[_0x1b93('0x65')],this[_0x1b93('0x64')](_0x2050da,_0x20965e['channel']));}return _0x2540e8&&_0x25752a&&_0x4d0623;};Trigger[_0x1b93('0x32')]['checkConditions']=function(_0x4e021c,_0x4ca9fa){return function(_0xfc3708){switch(_0xfc3708[_0x1b93('0x67')]){case _0x1b93('0x68'):if(_0x4e021c['channel']===_0x4ca9fa){if(_0x4ca9fa===_0x1b93('0x69')){return _0x4e021c['ChatWebsiteId']?operators[_0xfc3708['operator']](Number(_0xfc3708[_0x1b93('0x6a')]),_0x4e021c['ChatWebsiteId']):![];}else{return _0x4e021c[_[_0x1b93('0x6b')](_0x4ca9fa)+_0x1b93('0x6c')]?operators[_0xfc3708[_0x1b93('0x6d')]](Number(_0xfc3708[_0x1b93('0x6a')]),_0x4e021c[_[_0x1b93('0x6b')](_0x4ca9fa)+_0x1b93('0x6c')]):![];}}break;case _0x1b93('0x6e'):case _0x1b93('0x6f'):if(_0x4e021c['channel']===_0x4ca9fa){return _0x4e021c[_0x1b93('0x70')]?operators[_0xfc3708[_0x1b93('0x6d')]](_0xfc3708[_0x1b93('0x6a')],_0x4e021c[_0x1b93('0x70')]):![];}break;case _0x1b93('0x5d'):return _0x4e021c[_0x1b93('0x5d')]?operators[_0xfc3708[_0x1b93('0x6d')]](_0xfc3708[_0x1b93('0x6a')],_0x4e021c['queue']):![];case _0x1b93('0x71'):return _0x4e021c[_0x1b93('0x72')]?operators[_0xfc3708['operator']](_0xfc3708[_0x1b93('0x6a')],_0x4e021c[_0x1b93('0x72')]):![];case'lastevent':return _0x4e021c['lastevent']?operators[_0xfc3708['operator']](_0xfc3708[_0x1b93('0x6a')],_0x4e021c[_0x1b93('0x73')]):![];case'routeId':return _0x4e021c[_0x1b93('0x74')]?operators[_0xfc3708[_0x1b93('0x6d')]](_0xfc3708[_0x1b93('0x6a')],_0x4e021c[_0x1b93('0x74')]):![];case'mailSubstatus':if(_0xfc3708[_0x1b93('0x6a')]===_0x1b93('0x75'))_0xfc3708[_0x1b93('0x6a')]=null;return typeof _0x4e021c['substatus']!==_0x1b93('0x76')?operators[_0xfc3708['operator']](_0xfc3708['value'],_0x4e021c[_0x1b93('0x77')]):![];case'offlineMessage':if(_0x4e021c[_0x1b93('0x60')]===_0x4ca9fa){return _0xfc3708['value']===_0x1b93('0x78')&&_0xfc3708[_0x1b93('0x6d')]===_0x1b93('0x79')?!![]:![];}break;}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0x687b=['custom:offlineMessage','emit','info','stringify','prototype','motionChannel','undefined','voice','checkTriggers','interface','status','merge','variables','Actions','length','toLowerCase','contactmanager','browser','data1','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','uriLocation','data4','windowWidth','data5','windowHeight','data6','600','winApplication','winArguments','user:%s','trigger:%s:%s','action','jscripty','format','name','trigger:%s','exec','integration','urlforward','query','search','replace','channel','AllConditions','every','checkConditions','AnyConditions','some','field','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','routeId','null','substatus','offlineMessage','created','util','lodash','url','mustache','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','accounts','freshsalesAccounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','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:newinteraction','custom:closedinteraction','custom:substatus','custom:outgoingmessage','custom:rejectmessage'];(function(_0x2304fe,_0x5ea1b0){var _0x539fe6=function(_0x169a4a){while(--_0x169a4a){_0x2304fe['push'](_0x2304fe['shift']());}};_0x539fe6(++_0x5ea1b0);}(_0x687b,0x14a));var _0xb687=function(_0x127a60,_0x37f33a){_0x127a60=_0x127a60-0x0;var _0xc1f6a3=_0x687b[_0x127a60];return _0xc1f6a3;};'use strict';var util=require(_0xb687('0x0'));var _=require(_0xb687('0x1'));var url=require(_0xb687('0x2'));var Mustache=require(_0xb687('0x3'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require(_0xb687('0x4'));var cmContact=require(_0xb687('0x5'));var script=require(_0xb687('0x6'));var config=require(_0xb687('0x7'));var logger=require(_0xb687('0x8'))(_0xb687('0x9'));var ami=require(_0xb687('0xa'));config[_0xb687('0xb')]=_[_0xb687('0xc')](config[_0xb687('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0xb687('0xd'))(new Redis(config[_0xb687('0xb')]));var operators={'equals':function(_0x47f4cc,_0x1a99c5){return _0x47f4cc==_0x1a99c5;},'not_equals':function(_0x21e3ab,_0x825ad){return _0x21e3ab!=_0x825ad;}};var barAndWebActions=[_0xb687('0xe'),_0xb687('0x2'),_0xb687('0xf')];function Trigger(_0x3e6271){this[_0xb687('0x10')]=_0x3e6271[_0xb687('0x10')];this['agents']=_0x3e6271[_0xb687('0x11')];this[_0xb687('0x12')]=_0x3e6271[_0xb687('0x12')];this[_0xb687('0x13')]=_0x3e6271['templates'];this['voiceExtensions']=_0x3e6271[_0xb687('0x14')];this[_0xb687('0x15')]=_0x3e6271['zendeskAccounts'];this[_0xb687('0x16')]=_0x3e6271[_0xb687('0x16')];this[_0xb687('0x17')]=_0x3e6271[_0xb687('0x17')];this[_0xb687('0x18')]=_0x3e6271[_0xb687('0x18')];this[_0xb687('0x19')]=_0x3e6271[_0xb687('0x19')];this[_0xb687('0x1a')]=_0x3e6271[_0xb687('0x1a')];this[_0xb687('0x1b')]=_0x3e6271[_0xb687('0x1b')];this['servicenowAccounts']=_0x3e6271[_0xb687('0x1c')];this[_0xb687('0x1d')]=_0x3e6271[_0xb687('0x1d')];this['freshsalesAccounts']=_0x3e6271['freshsalesAccounts'];this[_0xb687('0x1e')]={'zendesk':this[_0xb687('0x15')],'salesforce':this[_0xb687('0x17')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0xb687('0x18')],'zoho':this['zohoAccounts'],'desk':this[_0xb687('0x1a')],'vtiger':this[_0xb687('0x1b')],'dynamics365':this[_0xb687('0x1d')],'freshsales':this[_0xb687('0x1f')],'servicenow':this['servicenowAccounts']};ami['on'](_0xb687('0x20'),this['syncCustomEvent'][_0xb687('0x21')](this));ami['on'](_0xb687('0x22'),this[_0xb687('0x23')]['bind'](this));ami['on'](_0xb687('0x24'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x25'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x26'),this[_0xb687('0x23')]['bind'](this));ami['on'](_0xb687('0x27'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x28'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x29'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x2a'),this['syncCustomEvent'][_0xb687('0x21')](this));ami['on'](_0xb687('0x2b'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x2c'),this[_0xb687('0x23')]['bind'](this));ami['on'](_0xb687('0x2d'),this['syncCustomEvent'][_0xb687('0x21')](this));ami['on'](_0xb687('0x2e'),this[_0xb687('0x2f')][_0xb687('0x21')](this));ami['on'](_0xb687('0x30'),this[_0xb687('0x2f')][_0xb687('0x21')](this));ami['on']('custom:dialend',this[_0xb687('0x2f')][_0xb687('0x21')](this));ami['on'](_0xb687('0x31'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x32'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on'](_0xb687('0x33'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0xb687('0x21')](this));ami['on'](_0xb687('0x34'),this[_0xb687('0x23')][_0xb687('0x21')](this));ami['on']('custom:acceptmessage',this['syncCustomEvent'][_0xb687('0x21')](this));ami['on'](_0xb687('0x35'),this['syncCustomEvent'][_0xb687('0x21')](this));ami['on'](_0xb687('0x36'),this['syncCustomEvent'][_0xb687('0x21')](this));}Trigger['prototype'][_0xb687('0x37')]=function(_0x24f34e,_0x2da038,_0x3e146a){logger[_0xb687('0x38')](_0x24f34e,_0x2da038,JSON[_0xb687('0x39')](_0x3e146a));io['to'](_0x24f34e)['emit'](_0x2da038,_0x3e146a);};Trigger[_0xb687('0x3a')][_0xb687('0x23')]=function(_0x2a73df){var _0x38a814=_['clone'](_0x2a73df);if(typeof _0x38a814[_0xb687('0x3b')]===_0xb687('0x3c')){_0x38a814[_0xb687('0x3b')]=_0xb687('0x3d');}this[_0xb687('0x3e')](_0x38a814);};Trigger['prototype'][_0xb687('0x2f')]=function(_0x38a8dc){if(this[_0xb687('0x11')][_0x38a8dc[_0xb687('0x3f')]]){this[_0xb687('0x23')](_0x38a8dc);}};Trigger[_0xb687('0x3a')]['checkTriggers']=function(_0x5ad577){var _0x43f29c;for(var _0x5460a2 in this[_0xb687('0x10')]){if(this[_0xb687('0x10')]['hasOwnProperty'](_0x5460a2)){if(this[_0xb687('0x10')][_0x5460a2][_0xb687('0x40')]){_0x43f29c=this['checkTrigger'](this[_0xb687('0x10')][_0x5460a2],_0x5ad577);if(_0x43f29c){_[_0xb687('0x41')](_0x5ad577,_0x5ad577[_0xb687('0x42')]);for(var _0x5253df=0x0,_0x66fabe,_0x9cffb2,_0x38abe5;_0x5253df<this[_0xb687('0x10')][_0x5460a2][_0xb687('0x43')][_0xb687('0x44')];_0x5253df+=0x1){_0x66fabe=this[_0xb687('0x10')][_0x5460a2]['Actions'][_0x5253df];if(this[_0xb687('0x11')][_0x5ad577['interface']]){switch(_0x66fabe['action'][_0xb687('0x45')]()){case _0xb687('0x46'):break;case'motionbar':case _0xb687('0x47'):var _0x5f1b59={};switch(barAndWebActions[_0x66fabe[_0xb687('0x48')]]){case _0xb687('0xe'):_0x5f1b59['TemplateId']=_0x66fabe[_0xb687('0x49')];_0x5f1b59[_0xb687('0x4a')]=this['templates'][_0x66fabe[_0xb687('0x49')]]?Mustache[_0xb687('0x4b')](this[_0xb687('0x13')][_0x66fabe[_0xb687('0x49')]][_0xb687('0x4a')],_0x5ad577):_0xb687('0x4c');break;case _0xb687('0x2'):_0x5f1b59[_0xb687('0x4d')]=this[_0xb687('0x4e')](_0x66fabe[_0xb687('0x49')],_0x5ad577,_[_0xb687('0x4f')](_0x66fabe[_0xb687('0x50')])?!![]:parseInt(_0x66fabe['data3'],0xa));if(_[_0xb687('0x4f')](_0x66fabe['data4'])){_0x5f1b59[_0xb687('0x51')]='0';}else{_0x5f1b59[_0xb687('0x52')]=_0x66fabe[_0xb687('0x53')];_0x5f1b59[_0xb687('0x54')]=_[_0xb687('0x4f')](_0x66fabe[_0xb687('0x55')])?'800':_0x66fabe['data5'];_0x5f1b59[_0xb687('0x56')]=_[_0xb687('0x4f')](_0x66fabe[_0xb687('0x57')])?_0xb687('0x58'):_0x66fabe['data6'];}break;case _0xb687('0xf'):_0x5f1b59[_0xb687('0x59')]=_0x66fabe[_0xb687('0x49')]?Mustache[_0xb687('0x4b')](_0x66fabe['data2'],_0x5ad577):'';_0x5f1b59[_0xb687('0x5a')]=_0x66fabe[_0xb687('0x50')]?Mustache[_0xb687('0x4b')](_0x66fabe[_0xb687('0x50')],_0x5ad577):'';break;}this['emit'](util['format'](_0xb687('0x5b'),this[_0xb687('0x11')][_0x5ad577[_0xb687('0x3f')]]['name']),util['format'](_0xb687('0x5c'),_0x66fabe[_0xb687('0x5d')][_0xb687('0x45')](),barAndWebActions[_0x66fabe[_0xb687('0x48')]]),_[_0xb687('0x41')](_0x5f1b59,_0x5ad577));break;case _0xb687('0x5e'):this[_0xb687('0x37')](util[_0xb687('0x5f')]('user:%s',this[_0xb687('0x11')][_0x5ad577[_0xb687('0x3f')]][_0xb687('0x60')]),util['format']('trigger:%s',_0x66fabe['action']['toLowerCase']()),_[_0xb687('0x41')]({'ProjectId':parseInt(_0x66fabe[_0xb687('0x48')],0xa)},_0x5ad577));break;default:this[_0xb687('0x37')](util[_0xb687('0x5f')](_0xb687('0x5b'),this[_0xb687('0x11')][_0x5ad577[_0xb687('0x3f')]][_0xb687('0x60')]),util[_0xb687('0x5f')](_0xb687('0x61'),_0x66fabe[_0xb687('0x5d')][_0xb687('0x45')]()),_[_0xb687('0x41')]({},_0x66fabe,_0x5ad577));}}switch(_0x66fabe[_0xb687('0x5d')][_0xb687('0x45')]()){case _0xb687('0x46'):cmContact[_0xb687('0x62')](this['agents'][_0x5ad577['interface']],this[_0xb687('0x10')][_0x5460a2],_0x66fabe,_0x5ad577);break;case _0xb687('0x63'):integration[_0xb687('0x62')](_0x66fabe,_0x5ad577,this[_0xb687('0x1e')],this['agents'][_0x5ad577[_0xb687('0x3f')]],this[_0xb687('0x12')][_0x5ad577['queue']],this[_0xb687('0x14')][_0x5ad577['routeId']]);break;case _0xb687('0x64'):urlforward[_0xb687('0x62')](_0x66fabe,_0x5ad577);break;case'script':script['exec'](_0x66fabe,_0x5ad577);break;}}}}}}};Trigger[_0xb687('0x3a')][_0xb687('0x4e')]=function(_0x5ea8fd,_0x1da4d1,_0x318be6){var _0x3cd364=url['parse'](Mustache[_0xb687('0x4b')](_0x5ea8fd,_0x1da4d1),!![]);if(_0x318be6){_['merge'](_0x3cd364[_0xb687('0x65')],_0x1da4d1);}delete _0x3cd364[_0xb687('0x66')];var _0x3223f8=url[_0xb687('0x5f')](_0x3cd364);_0x3223f8=_0x3223f8[_0xb687('0x67')](/\/\?/g,'?');return _0x3223f8;};Trigger['prototype']['checkTrigger']=function(_0xa8f04a,_0x58ec8b){var _0x5362ea=!![];var _0x5def9d=!![];var _0x5d266c=![];if(_0xa8f04a[_0xb687('0x68')]===_0x58ec8b[_0xb687('0x3b')]){_0x5d266c=!![];}if(_0xa8f04a[_0xb687('0x69')][_0xb687('0x44')]){_0x5362ea=_[_0xb687('0x6a')](_0xa8f04a[_0xb687('0x69')],this[_0xb687('0x6b')](_0x58ec8b,_0xa8f04a[_0xb687('0x68')]));}if(_0xa8f04a[_0xb687('0x6c')][_0xb687('0x44')]){_0x5def9d=_[_0xb687('0x6d')](_0xa8f04a['AnyConditions'],this['checkConditions'](_0x58ec8b,_0xa8f04a[_0xb687('0x68')]));}return _0x5d266c&&_0x5362ea&&_0x5def9d;};Trigger['prototype'][_0xb687('0x6b')]=function(_0x1840f3,_0x1c031f){return function(_0x3ebaa2){switch(_0x3ebaa2[_0xb687('0x6e')]){case'account':if(_0x1840f3[_0xb687('0x68')]===_0x1c031f){if(_0x1c031f==='chat'){return _0x1840f3[_0xb687('0x6f')]?operators[_0x3ebaa2[_0xb687('0x70')]](Number(_0x3ebaa2[_0xb687('0x71')]),_0x1840f3[_0xb687('0x6f')]):![];}else{return _0x1840f3[_[_0xb687('0x72')](_0x1c031f)+_0xb687('0x73')]?operators[_0x3ebaa2[_0xb687('0x70')]](Number(_0x3ebaa2['value']),_0x1840f3[_[_0xb687('0x72')](_0x1c031f)+_0xb687('0x73')]):![];}}break;case _0xb687('0x74'):case _0xb687('0x75'):if(_0x1840f3[_0xb687('0x68')]===_0x1c031f){return _0x1840f3['event']?operators[_0x3ebaa2[_0xb687('0x70')]](_0x3ebaa2[_0xb687('0x71')],_0x1840f3[_0xb687('0x76')]):![];}break;case _0xb687('0x77'):return _0x1840f3[_0xb687('0x77')]?operators[_0x3ebaa2[_0xb687('0x70')]](_0x3ebaa2[_0xb687('0x71')],_0x1840f3[_0xb687('0x77')]):![];case _0xb687('0x78'):return _0x1840f3[_0xb687('0x79')]?operators[_0x3ebaa2[_0xb687('0x70')]](_0x3ebaa2['value'],_0x1840f3[_0xb687('0x79')]):![];case _0xb687('0x7a'):return _0x1840f3[_0xb687('0x7a')]?operators[_0x3ebaa2[_0xb687('0x70')]](_0x3ebaa2['value'],_0x1840f3[_0xb687('0x7a')]):![];case _0xb687('0x7b'):return _0x1840f3['routeId']?operators[_0x3ebaa2[_0xb687('0x70')]](_0x3ebaa2[_0xb687('0x71')],_0x1840f3[_0xb687('0x7b')]):![];case'mailSubstatus':if(_0x3ebaa2[_0xb687('0x71')]===_0xb687('0x7c'))_0x3ebaa2['value']=null;return typeof _0x1840f3[_0xb687('0x7d')]!==_0xb687('0x3c')?operators[_0x3ebaa2[_0xb687('0x70')]](_0x3ebaa2[_0xb687('0x71')],_0x1840f3['substatus']):![];case _0xb687('0x7e'):if(_0x1840f3[_0xb687('0x68')]===_0x1c031f){return _0x3ebaa2['value']===_0xb687('0x7f')&&_0x3ebaa2[_0xb687('0x70')]==='equals'?!![]:![];}break;}return![];};};module['exports']=Trigger;
\ No newline at end of file
index b10df18..476ff7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Motion','CTI','concat','Tags','/api/v2/users/%d','Descriptions','%s/customers/%d/cases','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','Desk\x20account\x20type\x20not\x20recognized','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','integrationTab','newTab','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','desk','defaults','redis','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','[HTTP]','stringify','GET','password','authType','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','customVariable','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x36ae69,_0x38736a){var _0x36f351=function(_0x505939){while(--_0x505939){_0x36ae69['push'](_0x36ae69['shift']());}};_0x36f351(++_0x38736a);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var rp=require(_0x7995('0x1'));var md5=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7995('0x4'));var config=require(_0x7995('0x5'));var logger=require(_0x7995('0x6'))(_0x7995('0x7'));config['redis']=_[_0x7995('0x8')](config[_0x7995('0x9')],{'host':_0x7995('0xa'),'port':0x18eb});var io=require(_0x7995('0xb'))(new Redis(config[_0x7995('0x9')]));function emit(_0x326741,_0x4996ca,_0x465276){io['to'](_0x326741)[_0x7995('0xc')](_0x4996ca,_0x465276);}var headers={'Content-Type':'application/json','Accept':_0x7995('0xd')};function getUser(_0x3116fb,_0x18c8a3){if(intUtil[_0x7995('0xe')](_0x18c8a3)===!![]){logger[_0x7995('0xf')](_0x7995('0x10'),_0x18c8a3);return request({'uri':util[_0x7995('0x11')]('%s/users',_0x3116fb[_0x7995('0x12')])})[_0x7995('0x13')](function(_0x581f22){if(_0x581f22[_0x7995('0x14')]){return _[_0x7995('0x15')](_0x581f22[_0x7995('0x16')][_0x7995('0x17')],{'email':_0x18c8a3});}})[_0x7995('0x13')](function(_0x23999f){if(_0x23999f){logger[_0x7995('0xf')]('Agent\x20found!');return _0x23999f;}else{logger['info'](_0x7995('0x18'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb[_0x7995('0x12')])});}});}else{logger[_0x7995('0xf')](_0x7995('0x1a'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb['remoteUri'])});}}function request(_0x2eeacc){logger['debug'](_0x7995('0x1b'),JSON[_0x7995('0x1c')](_0x2eeacc));return rp(_[_0x7995('0x8')](_0x2eeacc,{'method':_0x7995('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1e1415){var _0x37a7d4;if(_0x1e1415['authType']==='basic'){_0x37a7d4=util[_0x7995('0x11')]('%s:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x1e')]);}else if(_0x1e1415[_0x7995('0x1f')]==='token'){_0x37a7d4=util[_0x7995('0x11')]('%s/token:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x20')]);}return util[_0x7995('0x11')](_0x7995('0x21'),new Buffer(_0x37a7d4)[_0x7995('0x22')](_0x7995('0x23')));}function getEndUser(_0x1c278a,_0x5d40ae,_0x32a09a){logger[_0x7995('0xf')](_0x7995('0x24'),_0x32a09a);return request({'uri':util[_0x7995('0x11')](_0x7995('0x25'),_0x1c278a[_0x7995('0x12')]),'qs':{'phone':_0x32a09a}})[_0x7995('0x13')](function(_0x472195){if(_0x472195['total_entries']){logger[_0x7995('0xf')](_0x7995('0x26'));return _0x472195[_0x7995('0x16')][_0x7995('0x17')][0x0];}else{logger[_0x7995('0xf')](_0x7995('0x27'));return request({'uri':util['format'](_0x7995('0x28'),_0x1c278a['remoteUri']),'method':_0x7995('0x29'),'body':{'first_name':_0x5d40ae,'title':_0x5d40ae,'phone_numbers':[{'type':_0x7995('0x2a'),'value':_0x32a09a}]}});}});}function getTags(_0xf16cc2,_0x132a42){var _0x11c1eb=[];if(_0xf16cc2&&_0xf16cc2['length']>0x0){_0x11c1eb=_[_0x7995('0x2b')](_0xf16cc2,_0x132a42);}return _0x11c1eb;}function getCustomFields(_0x514445,_0x456a28){var _0x3250e0=[];var _0x4253e5={'custom_fields':{}};if(_0x514445['length']>0x0){_['forEach'](_0x514445,function(_0x48e573){if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x30')]&&!_0x48e573[_0x7995('0x31')]){_0x4253e5[_0x48e573['nameField']['toLowerCase']()]=_0x48e573[_0x7995('0x32')]['toString']();}else if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x48e573['content']['toString']();}else if(_0x48e573['type']===_0x7995('0x35')&&_0x48e573[_0x7995('0x36')]&&_0x48e573['idField']&&_0x48e573[_0x7995('0x31')]){_0x456a28[_0x48e573['variableName']]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573[_0x7995('0x36')]]['toString']());}else if(_0x48e573['type']===_0x7995('0x37')&&_0x48e573['Variable']&&_0x48e573['Variable'][_0x7995('0x38')]&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x456a28[_0x48e573[_0x7995('0x39')][_0x7995('0x38')][_0x7995('0x3a')]()]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573['Variable'][_0x7995('0x38')][_0x7995('0x3a')]()][_0x7995('0x22')]());}});}if(_0x4253e5[_0x7995('0x3b')]){_0x4253e5['priority']=Number(_0x4253e5[_0x7995('0x3b')]);}return _0x4253e5;}function getTicket(_0x235df7,_0x3eb04f,_0xe5ea43,_0x1f5bee,_0x1035dc){logger['info'](_0x7995('0x3c'));var _0x3be298=_[_0x7995('0x3d')]({'subject':intUtil[_0x7995('0x3e')](_0x1f5bee[_0x7995('0x3f')],_0x1035dc,'\x20'),'type':_0x7995('0x40'),'status':_0x7995('0x41'),'labels':[_0x7995('0x42'),_0x7995('0x43'),_0x7995('0x44')][_0x7995('0x45')](getTags(_0x1f5bee[_0x7995('0x46')],_0x7995('0x38'))),'description':intUtil['getString'](_0x1f5bee['Descriptions'],_0x1035dc,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7995('0x11')](_0x7995('0x47'),_0x3eb04f['id']),'class':'user'}},'message':{'direction':'in','body':intUtil['getString'](_0x1f5bee[_0x7995('0x48')],_0x1035dc,'\x0a')}},getCustomFields(_0x1f5bee['Fields'],_0x1035dc));return request({'uri':util['format'](_0x7995('0x49'),_0x235df7[_0x7995('0x12')],_0xe5ea43['id']),'method':_0x7995('0x29'),'body':_0x3be298});}exports['queue']=function(_0x46ac4f,_0x5e85b9,_0x3993b5,_0x5a8881,_0x493066,_0x39c5b8){var _0x403f54,_0xc04e5;_0x39c5b8[_0x7995('0x12')]=intUtil['stripTrailingSlash'](_0x39c5b8[_0x7995('0x12')]);_0x39c5b8[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x39c5b8[_0x7995('0x4a')]);if(_0x493066&&_0x493066['monitor_format']){logger['info'](_0x7995('0x4c'),'Recording\x20is\x20enabled!');_0x5e85b9[_0x7995('0x4d')]=util['format'](_0x7995('0x4e'),_0x39c5b8['serverUrl'],_0x5e85b9[_0x7995('0x4f')],md5(_0x5e85b9[_0x7995('0x4f')]));}else{_0x5e85b9['recordingURL']='';}headers[_0x7995('0x50')]=getAuth(_0x39c5b8);return getUser(_0x39c5b8,_0x5a8881[_0x7995('0x51')])[_0x7995('0x13')](function(_0xb70a51){_0x403f54=_0xb70a51;logger['info'](_0x7995('0x52'),_0x403f54['id']);return getEndUser(_0x39c5b8,_0x5e85b9[_0x7995('0x53')],_0x5e85b9[_0x7995('0x54')]);})['then'](function(_0xe228a5){_0xc04e5=_0xe228a5;logger[_0x7995('0xf')](_0x7995('0x55'),_0xc04e5['id']);return getTicket(_0x39c5b8,_0x403f54,_0xc04e5,_0x3993b5,_0x5e85b9);})[_0x7995('0x13')](function(_0x255313){if(_0x255313){logger['info'](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x255313['id']);switch(_0x39c5b8[_0x7995('0x2f')]){case'integrationTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x255313['id']});break;case'newTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x5a'));emit(util['format'](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x5b'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x255313['id'])});break;default:logger['error'](_0x7995('0x4c'),_0x7995('0x5c'));}}})['catch'](function(_0x1cd85){console[_0x7995('0x5d')](_0x1cd85);logger[_0x7995('0x5d')](_0x7995('0x4c'),JSON[_0x7995('0x1c')](_0x1cd85));});};exports['outbound']=function(_0x29ee32,_0x4ab09f,_0x14fe7f,_0x33c801,_0x206d2a,_0x50c7b5,_0x5e1f34){var _0x54e2b1,_0x563f8e;_0x50c7b5[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x12')]);_0x50c7b5[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x4a')]);if(_0x5e1f34&&_0x5e1f34[_0x7995('0x5e')]&&_0x5e1f34[_0x7995('0x5e')]!==_0x7995('0x5f')){logger[_0x7995('0xf')](_0x7995('0x60'),_0x7995('0x61'));_0x4ab09f[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x50c7b5[_0x7995('0x4a')],_0x4ab09f[_0x7995('0x4f')],md5(_0x4ab09f[_0x7995('0x4f')]));}headers[_0x7995('0x50')]=getAuth(_0x50c7b5);return getUser(_0x50c7b5,_0x33c801['email'])[_0x7995('0x13')](function(_0x630737){_0x54e2b1=_0x630737;logger[_0x7995('0xf')](_0x7995('0x52'),_0x54e2b1['id']);return getEndUser(_0x50c7b5,_0x4ab09f['destcalleridname'],_0x4ab09f['destcalleridnum']);})[_0x7995('0x13')](function(_0x197b52){_0x563f8e=_0x197b52;logger[_0x7995('0xf')](_0x7995('0x55'),_0x563f8e['id']);return getTicket(_0x50c7b5,_0x54e2b1,_0x563f8e,_0x14fe7f,_0x4ab09f);})['then'](function(_0x13cd7b){if(_0x13cd7b){logger[_0x7995('0xf')](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x13cd7b['id']);switch(_0x50c7b5['type']){case _0x7995('0x62'):logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x13cd7b['id']});break;case _0x7995('0x63'):logger['info'](_0x7995('0x4c'),_0x7995('0x5a'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801['name']),'trigger:browser:url',{'uri':util[_0x7995('0x11')](_0x7995('0x64'),_0x50c7b5['remoteUri'],_0x13cd7b['id'])});break;default:logger[_0x7995('0x5d')](_0x7995('0x60'),_0x7995('0x5c'));}}})[_0x7995('0x65')](function(_0x32cb04){logger['error'](_0x7995('0x60'),JSON['stringify'](_0x32cb04));});};exports[_0x7995('0x66')]=function(_0xe31dcb,_0x1722e2,_0x25b534,_0x4388c1,_0xeb8920,_0x2b3c1d){var _0x44372a,_0x10f012;_0x2b3c1d[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x12')]);_0x2b3c1d['serverUrl']=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x4a')]);if(_0xeb8920&&_0xeb8920[_0x7995('0x67')]){logger[_0x7995('0xf')]('['+_0x1722e2[_0x7995('0x68')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1722e2[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x2b3c1d[_0x7995('0x4a')],_0x1722e2['uniqueid'],md5(_0x1722e2[_0x7995('0x4f')]));}else{_0x1722e2['recordingURL']='';}headers['Authorization']=getAuth(_0x2b3c1d);return getUser(_0x2b3c1d)[_0x7995('0x13')](function(_0x36d27d){_0x44372a=_0x36d27d;logger[_0x7995('0xf')](_0x7995('0x52'),_0x44372a['id']);return getEndUser(_0x2b3c1d,_0x1722e2[_0x7995('0x53')],_0x1722e2[_0x7995('0x54')]);})[_0x7995('0x13')](function(_0x13dc73){_0x10f012=_0x13dc73;logger[_0x7995('0xf')](_0x7995('0x55'),_0x10f012['id']);return getTicket(_0x2b3c1d,_0x44372a,_0x10f012,_0x25b534,_0x1722e2);})['then'](function(_0x2dc1f7){if(_0x2dc1f7){logger[_0x7995('0xf')](_0x7995('0x56'));logger['info'](_0x7995('0x69'),_0x2dc1f7['id']);}})[_0x7995('0x65')](function(_0x705f0){logger[_0x7995('0x5d')]('['+_0x1722e2[_0x7995('0x68')][_0x7995('0x6a')]()+']',JSON[_0x7995('0x1c')](_0x705f0));});};
\ No newline at end of file
+var _0x9957=['Motion','CTI','concat','Tags','/api/v2/users/%d','Descriptions','%s/customers/%d/cases','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','Desk\x20account\x20type\x20not\x20recognized','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','integrationTab','newTab','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','desk','defaults','redis','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','[HTTP]','stringify','GET','password','authType','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','customVariable','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x3ef2d3,_0x5a70f5){var _0x179ac5=function(_0x243a80){while(--_0x243a80){_0x3ef2d3['push'](_0x3ef2d3['shift']());}};_0x179ac5(++_0x5a70f5);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x7995('0x0'));var rp=require(_0x7995('0x1'));var md5=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7995('0x4'));var config=require(_0x7995('0x5'));var logger=require(_0x7995('0x6'))(_0x7995('0x7'));config['redis']=_[_0x7995('0x8')](config[_0x7995('0x9')],{'host':_0x7995('0xa'),'port':0x18eb});var io=require(_0x7995('0xb'))(new Redis(config[_0x7995('0x9')]));function emit(_0x326741,_0x4996ca,_0x465276){io['to'](_0x326741)[_0x7995('0xc')](_0x4996ca,_0x465276);}var headers={'Content-Type':'application/json','Accept':_0x7995('0xd')};function getUser(_0x3116fb,_0x18c8a3){if(intUtil[_0x7995('0xe')](_0x18c8a3)===!![]){logger[_0x7995('0xf')](_0x7995('0x10'),_0x18c8a3);return request({'uri':util[_0x7995('0x11')]('%s/users',_0x3116fb[_0x7995('0x12')])})[_0x7995('0x13')](function(_0x581f22){if(_0x581f22[_0x7995('0x14')]){return _[_0x7995('0x15')](_0x581f22[_0x7995('0x16')][_0x7995('0x17')],{'email':_0x18c8a3});}})[_0x7995('0x13')](function(_0x23999f){if(_0x23999f){logger[_0x7995('0xf')]('Agent\x20found!');return _0x23999f;}else{logger['info'](_0x7995('0x18'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb[_0x7995('0x12')])});}});}else{logger[_0x7995('0xf')](_0x7995('0x1a'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb['remoteUri'])});}}function request(_0x2eeacc){logger['debug'](_0x7995('0x1b'),JSON[_0x7995('0x1c')](_0x2eeacc));return rp(_[_0x7995('0x8')](_0x2eeacc,{'method':_0x7995('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1e1415){var _0x37a7d4;if(_0x1e1415['authType']==='basic'){_0x37a7d4=util[_0x7995('0x11')]('%s:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x1e')]);}else if(_0x1e1415[_0x7995('0x1f')]==='token'){_0x37a7d4=util[_0x7995('0x11')]('%s/token:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x20')]);}return util[_0x7995('0x11')](_0x7995('0x21'),new Buffer(_0x37a7d4)[_0x7995('0x22')](_0x7995('0x23')));}function getEndUser(_0x1c278a,_0x5d40ae,_0x32a09a){logger[_0x7995('0xf')](_0x7995('0x24'),_0x32a09a);return request({'uri':util[_0x7995('0x11')](_0x7995('0x25'),_0x1c278a[_0x7995('0x12')]),'qs':{'phone':_0x32a09a}})[_0x7995('0x13')](function(_0x472195){if(_0x472195['total_entries']){logger[_0x7995('0xf')](_0x7995('0x26'));return _0x472195[_0x7995('0x16')][_0x7995('0x17')][0x0];}else{logger[_0x7995('0xf')](_0x7995('0x27'));return request({'uri':util['format'](_0x7995('0x28'),_0x1c278a['remoteUri']),'method':_0x7995('0x29'),'body':{'first_name':_0x5d40ae,'title':_0x5d40ae,'phone_numbers':[{'type':_0x7995('0x2a'),'value':_0x32a09a}]}});}});}function getTags(_0xf16cc2,_0x132a42){var _0x11c1eb=[];if(_0xf16cc2&&_0xf16cc2['length']>0x0){_0x11c1eb=_[_0x7995('0x2b')](_0xf16cc2,_0x132a42);}return _0x11c1eb;}function getCustomFields(_0x514445,_0x456a28){var _0x3250e0=[];var _0x4253e5={'custom_fields':{}};if(_0x514445['length']>0x0){_['forEach'](_0x514445,function(_0x48e573){if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x30')]&&!_0x48e573[_0x7995('0x31')]){_0x4253e5[_0x48e573['nameField']['toLowerCase']()]=_0x48e573[_0x7995('0x32')]['toString']();}else if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x48e573['content']['toString']();}else if(_0x48e573['type']===_0x7995('0x35')&&_0x48e573[_0x7995('0x36')]&&_0x48e573['idField']&&_0x48e573[_0x7995('0x31')]){_0x456a28[_0x48e573['variableName']]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573[_0x7995('0x36')]]['toString']());}else if(_0x48e573['type']===_0x7995('0x37')&&_0x48e573['Variable']&&_0x48e573['Variable'][_0x7995('0x38')]&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x456a28[_0x48e573[_0x7995('0x39')][_0x7995('0x38')][_0x7995('0x3a')]()]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573['Variable'][_0x7995('0x38')][_0x7995('0x3a')]()][_0x7995('0x22')]());}});}if(_0x4253e5[_0x7995('0x3b')]){_0x4253e5['priority']=Number(_0x4253e5[_0x7995('0x3b')]);}return _0x4253e5;}function getTicket(_0x235df7,_0x3eb04f,_0xe5ea43,_0x1f5bee,_0x1035dc){logger['info'](_0x7995('0x3c'));var _0x3be298=_[_0x7995('0x3d')]({'subject':intUtil[_0x7995('0x3e')](_0x1f5bee[_0x7995('0x3f')],_0x1035dc,'\x20'),'type':_0x7995('0x40'),'status':_0x7995('0x41'),'labels':[_0x7995('0x42'),_0x7995('0x43'),_0x7995('0x44')][_0x7995('0x45')](getTags(_0x1f5bee[_0x7995('0x46')],_0x7995('0x38'))),'description':intUtil['getString'](_0x1f5bee['Descriptions'],_0x1035dc,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7995('0x11')](_0x7995('0x47'),_0x3eb04f['id']),'class':'user'}},'message':{'direction':'in','body':intUtil['getString'](_0x1f5bee[_0x7995('0x48')],_0x1035dc,'\x0a')}},getCustomFields(_0x1f5bee['Fields'],_0x1035dc));return request({'uri':util['format'](_0x7995('0x49'),_0x235df7[_0x7995('0x12')],_0xe5ea43['id']),'method':_0x7995('0x29'),'body':_0x3be298});}exports['queue']=function(_0x46ac4f,_0x5e85b9,_0x3993b5,_0x5a8881,_0x493066,_0x39c5b8){var _0x403f54,_0xc04e5;_0x39c5b8[_0x7995('0x12')]=intUtil['stripTrailingSlash'](_0x39c5b8[_0x7995('0x12')]);_0x39c5b8[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x39c5b8[_0x7995('0x4a')]);if(_0x493066&&_0x493066['monitor_format']){logger['info'](_0x7995('0x4c'),'Recording\x20is\x20enabled!');_0x5e85b9[_0x7995('0x4d')]=util['format'](_0x7995('0x4e'),_0x39c5b8['serverUrl'],_0x5e85b9[_0x7995('0x4f')],md5(_0x5e85b9[_0x7995('0x4f')]));}else{_0x5e85b9['recordingURL']='';}headers[_0x7995('0x50')]=getAuth(_0x39c5b8);return getUser(_0x39c5b8,_0x5a8881[_0x7995('0x51')])[_0x7995('0x13')](function(_0xb70a51){_0x403f54=_0xb70a51;logger['info'](_0x7995('0x52'),_0x403f54['id']);return getEndUser(_0x39c5b8,_0x5e85b9[_0x7995('0x53')],_0x5e85b9[_0x7995('0x54')]);})['then'](function(_0xe228a5){_0xc04e5=_0xe228a5;logger[_0x7995('0xf')](_0x7995('0x55'),_0xc04e5['id']);return getTicket(_0x39c5b8,_0x403f54,_0xc04e5,_0x3993b5,_0x5e85b9);})[_0x7995('0x13')](function(_0x255313){if(_0x255313){logger['info'](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x255313['id']);switch(_0x39c5b8[_0x7995('0x2f')]){case'integrationTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x255313['id']});break;case'newTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x5a'));emit(util['format'](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x5b'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x255313['id'])});break;default:logger['error'](_0x7995('0x4c'),_0x7995('0x5c'));}}})['catch'](function(_0x1cd85){console[_0x7995('0x5d')](_0x1cd85);logger[_0x7995('0x5d')](_0x7995('0x4c'),JSON[_0x7995('0x1c')](_0x1cd85));});};exports['outbound']=function(_0x29ee32,_0x4ab09f,_0x14fe7f,_0x33c801,_0x206d2a,_0x50c7b5,_0x5e1f34){var _0x54e2b1,_0x563f8e;_0x50c7b5[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x12')]);_0x50c7b5[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x4a')]);if(_0x5e1f34&&_0x5e1f34[_0x7995('0x5e')]&&_0x5e1f34[_0x7995('0x5e')]!==_0x7995('0x5f')){logger[_0x7995('0xf')](_0x7995('0x60'),_0x7995('0x61'));_0x4ab09f[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x50c7b5[_0x7995('0x4a')],_0x4ab09f[_0x7995('0x4f')],md5(_0x4ab09f[_0x7995('0x4f')]));}headers[_0x7995('0x50')]=getAuth(_0x50c7b5);return getUser(_0x50c7b5,_0x33c801['email'])[_0x7995('0x13')](function(_0x630737){_0x54e2b1=_0x630737;logger[_0x7995('0xf')](_0x7995('0x52'),_0x54e2b1['id']);return getEndUser(_0x50c7b5,_0x4ab09f['destcalleridname'],_0x4ab09f['destcalleridnum']);})[_0x7995('0x13')](function(_0x197b52){_0x563f8e=_0x197b52;logger[_0x7995('0xf')](_0x7995('0x55'),_0x563f8e['id']);return getTicket(_0x50c7b5,_0x54e2b1,_0x563f8e,_0x14fe7f,_0x4ab09f);})['then'](function(_0x13cd7b){if(_0x13cd7b){logger[_0x7995('0xf')](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x13cd7b['id']);switch(_0x50c7b5['type']){case _0x7995('0x62'):logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x13cd7b['id']});break;case _0x7995('0x63'):logger['info'](_0x7995('0x4c'),_0x7995('0x5a'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801['name']),'trigger:browser:url',{'uri':util[_0x7995('0x11')](_0x7995('0x64'),_0x50c7b5['remoteUri'],_0x13cd7b['id'])});break;default:logger[_0x7995('0x5d')](_0x7995('0x60'),_0x7995('0x5c'));}}})[_0x7995('0x65')](function(_0x32cb04){logger['error'](_0x7995('0x60'),JSON['stringify'](_0x32cb04));});};exports[_0x7995('0x66')]=function(_0xe31dcb,_0x1722e2,_0x25b534,_0x4388c1,_0xeb8920,_0x2b3c1d){var _0x44372a,_0x10f012;_0x2b3c1d[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x12')]);_0x2b3c1d['serverUrl']=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x4a')]);if(_0xeb8920&&_0xeb8920[_0x7995('0x67')]){logger[_0x7995('0xf')]('['+_0x1722e2[_0x7995('0x68')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1722e2[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x2b3c1d[_0x7995('0x4a')],_0x1722e2['uniqueid'],md5(_0x1722e2[_0x7995('0x4f')]));}else{_0x1722e2['recordingURL']='';}headers['Authorization']=getAuth(_0x2b3c1d);return getUser(_0x2b3c1d)[_0x7995('0x13')](function(_0x36d27d){_0x44372a=_0x36d27d;logger[_0x7995('0xf')](_0x7995('0x52'),_0x44372a['id']);return getEndUser(_0x2b3c1d,_0x1722e2[_0x7995('0x53')],_0x1722e2[_0x7995('0x54')]);})[_0x7995('0x13')](function(_0x13dc73){_0x10f012=_0x13dc73;logger[_0x7995('0xf')](_0x7995('0x55'),_0x10f012['id']);return getTicket(_0x2b3c1d,_0x44372a,_0x10f012,_0x25b534,_0x1722e2);})['then'](function(_0x2dc1f7){if(_0x2dc1f7){logger[_0x7995('0xf')](_0x7995('0x56'));logger['info'](_0x7995('0x69'),_0x2dc1f7['id']);}})[_0x7995('0x65')](function(_0x705f0){logger[_0x7995('0x5d')]('['+_0x1722e2[_0x7995('0x68')][_0x7995('0x6a')]()+']',JSON[_0x7995('0x1c')](_0x705f0));});};
\ No newline at end of file
index 5f60a1b..04a779f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3852=['toUpperCase',']\x20Wrong\x20credentials!','then','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail','userEmail','email','internalemailaddress','isdisabled','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','length','username','message','toLowerCase','outbound','destcalleridnum','calleridnum','POST','contacts','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','GET','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','type','nameField','customField','indexOf','content','ticketType','incident','getString','Subjects','Descriptions','/contacts(','/systemusers(','Fields','phonecall','callDirection','queue','phonecalls','assign','ticketId','format','emit','trigger:browser:url','stripTrailingSlash','remoteUri','serverUrl','unmanaged','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20phone\x20is:','openNewTab','name','lodash','ioredis','../../../../config/logger','dynamics365','redis','defaults','socket.io-emitter','modernAuthentication','CloudProvider','data7','tenantId','data2','resolve','password','access_token','catch','error'];(function(_0x5a8526,_0x3ac519){var _0x18b12f=function(_0x463df7){while(--_0x463df7){_0x5a8526['push'](_0x5a8526['shift']());}};_0x18b12f(++_0x3ac519);}(_0x3852,0x17f));var _0x2385=function(_0x4fb157,_0x209b9d){_0x4fb157=_0x4fb157-0x0;var _0x449dbc=_0x3852[_0x4fb157];return _0x449dbc;};'use strict';var _=require(_0x2385('0x0'));var rp=require('request-promise');var util=require('util');var intUtil=require('./util');var md5=require('md5');var Redis=require(_0x2385('0x1'));var logger=require(_0x2385('0x2'))(_0x2385('0x3'));var config=require('../../../../config/environment');config[_0x2385('0x4')]=_[_0x2385('0x5')](config[_0x2385('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x2385('0x6'))(new Redis(config[_0x2385('0x4')]));function getAuthToken(_0x103be1,_0x2314e1,_0x10b7d6){if(_0x103be1[_0x2385('0x7')]){_0x103be1['remoteUri']=_0x103be1[_0x2385('0x8')][_0x2385('0x9')];_0x103be1[_0x2385('0xa')]=_0x103be1[_0x2385('0x8')][_0x2385('0xb')];return Promise[_0x2385('0xc')](_0x103be1['CloudProvider']['data5']);}var _0x450354={'method':'POST','uri':_0x2314e1,'form':{'client_id':_0x103be1['clientId'],'resource':_0x103be1['remoteUri'],'username':_0x103be1['username'],'password':_0x103be1[_0x2385('0xd')],'grant_type':_0x2385('0xd'),'client_secret':_0x103be1['clientSecret']},'json':!![]};return rp(_0x450354)['then'](function(_0x57d6f2){return _0x57d6f2[_0x2385('0xe')];})[_0x2385('0xf')](function(_0x17fad2){logger[_0x2385('0x10')]('['+[_0x10b7d6[_0x2385('0x11')]()]+_0x2385('0x12'));return _0x17fad2['message'];});}function getUser(_0x43a211,_0x548ef8,_0x3f6183,_0x1d16ff,_0x27126b,_0x22a39a){return new Promise(function(_0x252d5f,_0x2f7096){return getAuthToken(_0x548ef8,_0x1d16ff,_0x22a39a)[_0x2385('0x13')](function(_0x2394c6){var _0x16650f={'method':'GET','uri':_0x27126b+_0x2385('0x14'),'headers':{'Authorization':_0x2385('0x15')+_0x2394c6,'OData-Version':_0x2385('0x16')},'json':!![]};return rp(_0x16650f);})['then'](function(_0xd58ce4){var _0x5a9a9c=_0xd58ce4[_0x2385('0x17')];var _0x40b907=![];var _0x394d29=null;if(!_['isNil'](_0x3f6183)){if(intUtil[_0x2385('0x18')](_0x3f6183['email'])){_0x43a211[_0x2385('0x19')]=_0x3f6183[_0x2385('0x1a')];for(_0x394d29=0x0;_0x394d29<_0x5a9a9c['length'];_0x394d29++){if(_0x5a9a9c[_0x394d29][_0x2385('0x1b')]===_0x3f6183[_0x2385('0x1a')]&&!_0x5a9a9c[_0x394d29][_0x2385('0x1c')]){_0x40b907=!![];logger[_0x2385('0x1d')]('['+[_0x22a39a[_0x2385('0x11')]()]+']\x20Agent\x20found\x20'+_0x5a9a9c[_0x394d29][_0x2385('0x1e')]+'!');_0x43a211[_0x2385('0x1f')]=_0x5a9a9c[_0x394d29][_0x2385('0x1e')];}}}}if(!_0x40b907){logger[_0x2385('0x1d')]('['+[_0x22a39a[_0x2385('0x11')]()]+_0x2385('0x20'));_0x43a211['userEmail']=_0x548ef8['username'];for(_0x394d29=0x0;_0x394d29<_0x5a9a9c[_0x2385('0x21')];_0x394d29++){if(_0x5a9a9c[_0x394d29][_0x2385('0x1b')]===_0x548ef8[_0x2385('0x22')]){_0x43a211[_0x2385('0x1f')]=_0x5a9a9c[_0x394d29][_0x2385('0x1e')];}}}_0x252d5f(_0x43a211);})[_0x2385('0xf')](function(_0x2ca8af){_0x2f7096(_0x2ca8af[_0x2385('0x23')]);});});}function createEndUser(_0x1cf521,_0xd91c26,_0x333506,_0xcdaa1e,_0x764fd0,_0x300d3b,_0x3596f2){return new Promise(function(_0x10476b,_0x4d3654){return getAuthToken(_0xd91c26,_0x333506,_0x300d3b)['then'](function(_0x6fe5b1){var _0x520a49=_0x300d3b[_0x2385('0x24')]()===_0x2385('0x25')?_0x764fd0[_0x2385('0x26')]:_0x764fd0[_0x2385('0x27')];var _0x2b0c0f={'method':_0x2385('0x28'),'uri':_0xcdaa1e+_0x2385('0x29'),'body':{'fullname':_0x520a49,'firstname':_0x520a49,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x1cf521['userId']+')'},'headers':{'Authorization':_0x2385('0x15')+_0x6fe5b1,'OData-Version':_0x2385('0x16')},'json':!![],'resolveWithFullResponse':!![]};_0x2b0c0f[_0x2385('0x2a')][_0x3596f2]=_0x520a49;return rp(_0x2b0c0f);})['then'](function(_0x18b323){var _0x2b0b1b=_0x18b323[_0x2385('0x2b')][_0x2385('0x2c')];var _0x51f905=_0x2b0b1b[_0x2385('0x2d')](_0x2b0b1b[_0x2385('0x2e')]('(')+0x1,_0x2b0b1b[_0x2385('0x2e')](')'));_0x1cf521[_0x2385('0x2f')]=_0x51f905;_0x10476b(_0x1cf521);})[_0x2385('0xf')](function(_0x3d6e78){_0x4d3654(_0x3d6e78[_0x2385('0x23')]);});});}function getEndUser(_0x2a4f83,_0x37d72a,_0xdc921c,_0x1116b9,_0x5f03d4,_0x36ff78,_0x638f7f,_0x4ac061){var _0x49f403=_0x36ff78['toLowerCase']()===_0x2385('0x25')?_0x5f03d4[_0x2385('0x26')]:_0x5f03d4[_0x2385('0x27')];return getAuthToken(_0x37d72a,_0xdc921c,_0x36ff78)[_0x2385('0x13')](function(_0x12d468){_0x4ac061=_0x4ac061?_0x4ac061:_0x2385('0x30');var _0xb357f6={'method':_0x2385('0x31'),'uri':_0x1116b9+'contacts?$select='+_0x4ac061+'&$filter='+_0x4ac061+_0x2385('0x32')+_0x49f403[_0x2385('0x33')]('+',_0x2385('0x34'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x12d468,'If-None-Match':null,'OData-Version':_0x2385('0x16')},'json':!![]};return rp(_0xb357f6);})[_0x2385('0x13')](function(_0x5e83cc){var _0x4c2704=![];if(!_0x5e83cc)return _0x4c2704;var _0x4f8ce2=_0x5e83cc[_0x2385('0x17')];for(var _0x2a3001=0x0;_0x2a3001<_0x4f8ce2[_0x2385('0x21')];_0x2a3001++){if(_0x4f8ce2[_0x2a3001][_0x4ac061]===_0x49f403){_0x4c2704=!![];_0x2a4f83['enduserId']=_0x4f8ce2[_0x2a3001][_0x2385('0x35')];}}return _0x4c2704;})[_0x2385('0x13')](function(_0x15923a){if(_0x15923a)return _0x2a4f83;if(_0x638f7f===_0x2385('0x36')){logger[_0x2385('0x1d')]('['+[_0x36ff78[_0x2385('0x11')]()]+_0x2385('0x37'));return _0x2a4f83;}return createEndUser(_0x2a4f83,_0x37d72a,_0xdc921c,_0x1116b9,_0x5f03d4,_0x36ff78,_0x4ac061)[_0x2385('0x13')](function(_0x3e39df){logger['info']('['+[_0x36ff78[_0x2385('0x11')]()]+_0x2385('0x38'),_0x3e39df[_0x2385('0x2f')]);return _0x3e39df;});});}function getCustomFields(_0x1979a3,_0x3b11c5,_0x310799){var _0x32ccfc={};if(_0x1979a3[_0x2385('0x21')]>0x0){_[_0x2385('0x39')](_0x1979a3,function(_0x1fdbe6){if(_[_0x2385('0x3a')]([_0x2385('0x3b'),'picklist'],_0x1fdbe6[_0x2385('0x3c')])&&_0x1fdbe6[_0x2385('0x3d')]&&!_0x1fdbe6[_0x2385('0x3e')]){var _0x221e9e=_0x1fdbe6['idField']['toLowerCase']();var _0x1a4445=_0x221e9e['substring'](0x0,_0x221e9e[_0x2385('0x3f')]('_'));var _0x2b7297=_0x221e9e[_0x2385('0x2d')](_0x221e9e[_0x2385('0x3f')]('_')+0x1);if(_0x1a4445===_0x310799){_0x32ccfc[_0x2b7297]=_0x1fdbe6[_0x2385('0x40')];}}});}return _0x32ccfc;}function getTicket(_0x4f4dd8,_0x5d1c84,_0x6bab9f,_0x2b50fc,_0x585999,_0x44573f,_0x3572c4){return new Promise(function(_0x35d90d,_0x56f984){var _0x564564;return getAuthToken(_0x5d1c84,_0x6bab9f,_0x3572c4)[_0x2385('0x13')](function(_0x726845){if(_0x44573f[_0x2385('0x41')]===_0x2385('0x42')){_0x564564={'method':'POST','uri':_0x2b50fc+'incidents','body':Object['assign']({},{'title':intUtil[_0x2385('0x43')](_0x44573f[_0x2385('0x44')],_0x585999,'\x20'),'description':intUtil[_0x2385('0x43')](_0x44573f[_0x2385('0x45')],_0x585999,'\x0a'),'customerid_contact@odata.bind':_0x4f4dd8[_0x2385('0x2f')]?_0x2385('0x46')+_0x4f4dd8['enduserId']+')':undefined,'ownerid@odata.bind':_0x2385('0x47')+_0x4f4dd8[_0x2385('0x1f')]+')','caseorigincode':'1'},getCustomFields(_0x44573f[_0x2385('0x48')],_0x585999,_0x44573f[_0x2385('0x41')])),'headers':{'Authorization':_0x2385('0x15')+_0x726845,'OData-Version':_0x2385('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x44573f[_0x2385('0x41')]===_0x2385('0x49')){var _0x3801d3=_0x4f4dd8[_0x2385('0x2f')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x4f4dd8[_0x2385('0x1f')]+')','participationtypemask':_0x4f4dd8['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x2385('0x46')+_0x4f4dd8[_0x2385('0x2f')]+')','participationtypemask':_0x4f4dd8[_0x2385('0x4a')]===_0x2385('0x4b')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x2385('0x47')+_0x4f4dd8['userId']+')','participationtypemask':_0x4f4dd8[_0x2385('0x4a')]===_0x2385('0x4b')?0x2:0x1}];_0x564564={'method':_0x2385('0x28'),'uri':_0x2b50fc+_0x2385('0x4c'),'body':Object[_0x2385('0x4d')]({},{'subject':intUtil[_0x2385('0x43')](_0x44573f[_0x2385('0x44')],_0x585999,'\x20'),'phonenumber':String(_0x585999[_0x2385('0x27')]),'description':intUtil['getString'](_0x44573f[_0x2385('0x45')],_0x585999,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4f4dd8['enduserId']?_0x2385('0x46')+_0x4f4dd8[_0x2385('0x2f')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x4f4dd8['userId']+')','directioncode':_0x4f4dd8[_0x2385('0x4a')]===_0x2385('0x4b')?![]:!![],'phonecall_activity_parties':_0x3801d3},getCustomFields(_0x44573f[_0x2385('0x48')],_0x585999,_0x44573f[_0x2385('0x41')])),'headers':{'Authorization':_0x2385('0x15')+_0x726845,'OData-Version':_0x2385('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x564564);})[_0x2385('0x13')](function(_0x3e2266){var _0x151a4e=_0x3e2266[_0x2385('0x2b')]['odata-entityid'];var _0x160be1=_0x151a4e['substring'](_0x151a4e[_0x2385('0x2e')]('(')+0x1,_0x151a4e[_0x2385('0x2e')](')'));_0x4f4dd8[_0x2385('0x4e')]=_0x160be1;_0x35d90d(_0x4f4dd8);})[_0x2385('0xf')](function(_0x1cd1fc){_0x56f984(_0x1cd1fc[_0x2385('0x23')]);});});}function emit(_0xd10fbe,_0x5b199f,_0x612ebc,_0x393a05){var _0x575a52={'uri':util[_0x2385('0x4f')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0xd10fbe,_0x612ebc,_0x393a05)};io['to'](util[_0x2385('0x4f')]('user:%s',_0x5b199f))[_0x2385('0x50')](_0x2385('0x51'),_0x575a52);}exports['cs']=function(_0x30ced5,_0x1ea562,_0x2c166c,_0x3bd1f4,_0x69b7fc,_0x1b20c9,_0x51eaab,_0x462cc8){var _0x12da5f={};_0x1b20c9['remoteUri']=_0x1b20c9[_0x2385('0x7')]?intUtil[_0x2385('0x52')](_0x1b20c9['CloudProvider'][_0x2385('0x9')]):intUtil[_0x2385('0x52')](_0x1b20c9[_0x2385('0x53')]);_0x1b20c9['serverUrl']=intUtil[_0x2385('0x52')](_0x1b20c9[_0x2385('0x54')]);_0x12da5f[_0x2385('0x4a')]=_0x462cc8===_0x2385('0x4b')||_0x462cc8===_0x2385('0x55')?'queue':_0x2385('0x25');var _0x30110c=_0x1b20c9[_0x2385('0x7')]?util['format']('%s/api/data/v9.0/',_0x1b20c9[_0x2385('0x8')][_0x2385('0x9')]):util['format'](_0x2385('0x56'),_0x1b20c9[_0x2385('0x53')]);var _0x28f0f5=util['format']('https://login.microsoftonline.com/%s/oauth2/token',_0x1b20c9[_0x2385('0xa')]);var _0x1bc633=util[_0x2385('0x4f')](_0x2385('0x57'),_0x1b20c9[_0x2385('0x54')],_0x1ea562['uniqueid'],md5(_0x1ea562[_0x2385('0x58')]));if(_0x69b7fc&&_0x69b7fc[_0x2385('0x59')]){logger[_0x2385('0x1d')](_0x2385('0x5a'),'Recording\x20is\x20enabled!');_0x1ea562[_0x2385('0x5b')]=_0x1bc633;}else if(_0x51eaab&&_0x51eaab[_0x2385('0x5c')]&&_0x51eaab[_0x2385('0x5c')]!==_0x2385('0x5d')){logger[_0x2385('0x1d')](_0x2385('0x5e'),_0x2385('0x5f'));_0x1ea562[_0x2385('0x5b')]=_0x1bc633;}else{_0x1ea562[_0x2385('0x5b')]='';}return getUser(_0x12da5f,_0x1b20c9,_0x3bd1f4,_0x28f0f5,_0x30110c,_0x462cc8)[_0x2385('0x13')](function(_0x4418a9){logger['info']('['+_0x462cc8['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x4418a9['userId']);logger[_0x2385('0x1d')]('['+_0x462cc8[_0x2385('0x11')]()+_0x2385('0x60'),_0x4418a9[_0x2385('0x19')]);return getEndUser(_0x4418a9,_0x1b20c9,_0x28f0f5,_0x30110c,_0x1ea562,_0x462cc8,_0x2c166c['moduleCreate'],_0x2c166c['additionalSearchContact']);})[_0x2385('0x13')](function(_0x37418f){logger[_0x2385('0x1d')]('['+_0x462cc8[_0x2385('0x11')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x37418f['enduserId']);logger[_0x2385('0x1d')]('['+_0x462cc8[_0x2385('0x11')]()+_0x2385('0x61'),_0x1ea562[_0x2385('0x27')]);return getTicket(_0x37418f,_0x1b20c9,_0x28f0f5,_0x30110c,_0x1ea562,_0x2c166c,_0x462cc8);})[_0x2385('0x13')](function(_0x1fffe2){logger[_0x2385('0x1d')](util[_0x2385('0x4f')]('['+_0x462cc8[_0x2385('0x11')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x2c166c[_0x2385('0x41')],_0x1fffe2[_0x2385('0x4e')]));logger[_0x2385('0x1d')](util[_0x2385('0x4f')]('['+_0x462cc8[_0x2385('0x11')]()+']\x20Call\x20direction:\x20%s',_0x462cc8));if(_0x462cc8!==_0x2385('0x55')&&_0x2c166c[_0x2385('0x62')]){logger[_0x2385('0x1d')]('['+_0x462cc8['toUpperCase']()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x1b20c9[_0x2385('0x53')],_0x3bd1f4[_0x2385('0x63')],_0x2c166c[_0x2385('0x41')],_0x1fffe2[_0x2385('0x4e')]);}})['catch'](function(_0x3894b8){logger[_0x2385('0x10')]('['+_0x462cc8[_0x2385('0x11')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x3894b8[_0x2385('0x23')]);console[_0x2385('0x10')]('Error\x20running\x20Dynamics365\x20integration',_0x3894b8);});};
\ No newline at end of file
+var _0x9812=[']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','md5','../../../../config/logger','dynamics365','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','tenantId','data2','resolve','data5','POST','clientId','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','4.0','value','isNil','validateEmail','userEmail','email','length','internalemailaddress','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','outbound','contacts','/systemusers(','body','odata-entityid','substring','lastIndexOf','enduserId','telephone1','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','includes','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incidents','assign','getString','Descriptions','Fields','phonecall','callDirection','/contacts(','queue','phonecalls','calleridnum','headers','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','stripTrailingSlash','data7','serverUrl','%s/api/data/v9.0/','CloudProvider','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:'];(function(_0x448050,_0x2c97da){var _0x1d8968=function(_0x115e4d){while(--_0x115e4d){_0x448050['push'](_0x448050['shift']());}};_0x1d8968(++_0x2c97da);}(_0x9812,0xde));var _0x2981=function(_0x3e4956,_0x571c40){_0x3e4956=_0x3e4956-0x0;var _0xaba5c6=_0x9812[_0x3e4956];return _0xaba5c6;};'use strict';var _=require('lodash');var rp=require(_0x2981('0x0'));var util=require(_0x2981('0x1'));var intUtil=require(_0x2981('0x2'));var md5=require(_0x2981('0x3'));var Redis=require('ioredis');var logger=require(_0x2981('0x4'))(_0x2981('0x5'));var config=require('../../../../config/environment');config[_0x2981('0x6')]=_['defaults'](config['redis'],{'host':_0x2981('0x7'),'port':0x18eb});var io=require(_0x2981('0x8'))(new Redis(config[_0x2981('0x6')]));function getAuthToken(_0x30e9f9,_0x258c1,_0x5ac079){if(_0x30e9f9[_0x2981('0x9')]){_0x30e9f9[_0x2981('0xa')]=_0x30e9f9['CloudProvider']['data7'];_0x30e9f9[_0x2981('0xb')]=_0x30e9f9['CloudProvider'][_0x2981('0xc')];return Promise[_0x2981('0xd')](_0x30e9f9['CloudProvider'][_0x2981('0xe')]);}var _0x299809={'method':_0x2981('0xf'),'uri':_0x258c1,'form':{'client_id':_0x30e9f9[_0x2981('0x10')],'resource':_0x30e9f9['remoteUri'],'username':_0x30e9f9['username'],'password':_0x30e9f9[_0x2981('0x11')],'grant_type':_0x2981('0x11'),'client_secret':_0x30e9f9[_0x2981('0x12')]},'json':!![]};return rp(_0x299809)[_0x2981('0x13')](function(_0xc7de79){return _0xc7de79[_0x2981('0x14')];})[_0x2981('0x15')](function(_0x34d8d1){logger[_0x2981('0x16')]('['+[_0x5ac079[_0x2981('0x17')]()]+_0x2981('0x18'));return _0x34d8d1[_0x2981('0x19')];});}function getUser(_0x4171b6,_0x34ab3f,_0x42094a,_0x1593a6,_0x3a5078,_0x5cd503){return new Promise(function(_0x4277ee,_0x34c93b){return getAuthToken(_0x34ab3f,_0x1593a6,_0x5cd503)[_0x2981('0x13')](function(_0x341a68){var _0x2c4e3b={'method':_0x2981('0x1a'),'uri':_0x3a5078+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x2981('0x1b')+_0x341a68,'OData-Version':_0x2981('0x1c')},'json':!![]};return rp(_0x2c4e3b);})[_0x2981('0x13')](function(_0x142cea){var _0x3d5a81=_0x142cea[_0x2981('0x1d')];var _0x50946f=![];var _0x1963ce=null;if(!_[_0x2981('0x1e')](_0x42094a)){if(intUtil[_0x2981('0x1f')](_0x42094a['email'])){_0x4171b6[_0x2981('0x20')]=_0x42094a[_0x2981('0x21')];for(_0x1963ce=0x0;_0x1963ce<_0x3d5a81[_0x2981('0x22')];_0x1963ce++){if(_0x3d5a81[_0x1963ce][_0x2981('0x23')]===_0x42094a[_0x2981('0x21')]&&!_0x3d5a81[_0x1963ce]['isdisabled']){_0x50946f=!![];logger[_0x2981('0x24')]('['+[_0x5cd503[_0x2981('0x17')]()]+_0x2981('0x25')+_0x3d5a81[_0x1963ce]['systemuserid']+'!');_0x4171b6[_0x2981('0x26')]=_0x3d5a81[_0x1963ce][_0x2981('0x27')];}}}}if(!_0x50946f){logger[_0x2981('0x24')]('['+[_0x5cd503[_0x2981('0x17')]()]+_0x2981('0x28'));_0x4171b6[_0x2981('0x20')]=_0x34ab3f['username'];for(_0x1963ce=0x0;_0x1963ce<_0x3d5a81[_0x2981('0x22')];_0x1963ce++){if(_0x3d5a81[_0x1963ce][_0x2981('0x23')]===_0x34ab3f[_0x2981('0x29')]){_0x4171b6[_0x2981('0x26')]=_0x3d5a81[_0x1963ce][_0x2981('0x27')];}}}_0x4277ee(_0x4171b6);})[_0x2981('0x15')](function(_0x4fa2fa){_0x34c93b(_0x4fa2fa[_0x2981('0x19')]);});});}function createEndUser(_0x47f79f,_0x3ea1e6,_0x39582a,_0x5f3e28,_0x32fb52,_0x3b7f91,_0x511343){return new Promise(function(_0x563c12,_0x4bd5a6){return getAuthToken(_0x3ea1e6,_0x39582a,_0x3b7f91)['then'](function(_0x23b49f){var _0x1787eb=_0x3b7f91['toLowerCase']()===_0x2981('0x2a')?_0x32fb52['destcalleridnum']:_0x32fb52['calleridnum'];var _0x4530b5={'method':_0x2981('0xf'),'uri':_0x5f3e28+_0x2981('0x2b'),'body':{'fullname':_0x1787eb,'firstname':_0x1787eb,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x2981('0x2c')+_0x47f79f[_0x2981('0x26')]+')'},'headers':{'Authorization':_0x2981('0x1b')+_0x23b49f,'OData-Version':_0x2981('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x4530b5[_0x2981('0x2d')][_0x511343]=_0x1787eb;return rp(_0x4530b5);})[_0x2981('0x13')](function(_0x33e647){var _0x3a8944=_0x33e647['headers'][_0x2981('0x2e')];var _0x16f5c5=_0x3a8944[_0x2981('0x2f')](_0x3a8944[_0x2981('0x30')]('(')+0x1,_0x3a8944[_0x2981('0x30')](')'));_0x47f79f[_0x2981('0x31')]=_0x16f5c5;_0x563c12(_0x47f79f);})[_0x2981('0x15')](function(_0x57c4f1){_0x4bd5a6(_0x57c4f1[_0x2981('0x19')]);});});}function getEndUser(_0x1c6fd9,_0x9a15b1,_0x27bc9d,_0x40d3ab,_0x1d19fd,_0x10f6b8,_0x2e0227,_0x1a440b){var _0x567b70=_0x10f6b8['toLowerCase']()===_0x2981('0x2a')?_0x1d19fd['destcalleridnum']:_0x1d19fd['calleridnum'];return getAuthToken(_0x9a15b1,_0x27bc9d,_0x10f6b8)[_0x2981('0x13')](function(_0x33bb89){_0x1a440b=_0x1a440b?_0x1a440b:_0x2981('0x32');var _0x596639={'method':_0x2981('0x1a'),'uri':_0x40d3ab+'contacts?$select='+_0x1a440b+'&$filter='+_0x1a440b+_0x2981('0x33')+_0x567b70[_0x2981('0x34')]('+',_0x2981('0x35'))+'\x27','headers':{'Authorization':_0x2981('0x1b')+_0x33bb89,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x596639);})[_0x2981('0x13')](function(_0x1a8131){var _0x43172b=![];if(!_0x1a8131)return _0x43172b;var _0x41d653=_0x1a8131[_0x2981('0x1d')];for(var _0x5262a8=0x0;_0x5262a8<_0x41d653[_0x2981('0x22')];_0x5262a8++){if(_0x41d653[_0x5262a8][_0x1a440b]===_0x567b70){_0x43172b=!![];_0x1c6fd9[_0x2981('0x31')]=_0x41d653[_0x5262a8][_0x2981('0x36')];}}return _0x43172b;})[_0x2981('0x13')](function(_0x533f5b){if(_0x533f5b)return _0x1c6fd9;if(_0x2e0227===_0x2981('0x37')){logger['info']('['+[_0x10f6b8[_0x2981('0x17')]()]+_0x2981('0x38'));return _0x1c6fd9;}return createEndUser(_0x1c6fd9,_0x9a15b1,_0x27bc9d,_0x40d3ab,_0x1d19fd,_0x10f6b8,_0x1a440b)[_0x2981('0x13')](function(_0x1a26aa){logger[_0x2981('0x24')]('['+[_0x10f6b8[_0x2981('0x17')]()]+_0x2981('0x39'),_0x1a26aa[_0x2981('0x31')]);return _0x1a26aa;});});}function getCustomFields(_0x18af9d,_0x3210e0,_0x1bbe5e){var _0x14bcc4={};if(_0x18af9d[_0x2981('0x22')]>0x0){_['forEach'](_0x18af9d,function(_0x2dfe4f){if(_[_0x2981('0x3a')](['string',_0x2981('0x3b')],_0x2dfe4f[_0x2981('0x3c')])&&_0x2dfe4f[_0x2981('0x3d')]&&!_0x2dfe4f[_0x2981('0x3e')]){var _0x5a1679=_0x2dfe4f[_0x2981('0x3f')]['toLowerCase']();var _0x5ced35=_0x5a1679[_0x2981('0x2f')](0x0,_0x5a1679[_0x2981('0x40')]('_'));var _0xd2e244=_0x5a1679[_0x2981('0x2f')](_0x5a1679[_0x2981('0x40')]('_')+0x1);if(_0x5ced35===_0x1bbe5e){_0x14bcc4[_0xd2e244]=_0x2dfe4f[_0x2981('0x41')];}}});}return _0x14bcc4;}function getTicket(_0x51a59e,_0xf89ac1,_0x2404dc,_0xc2ce99,_0x3f9731,_0x121d9e,_0x4a48cf){return new Promise(function(_0x5e4b0e,_0x50e4af){var _0x22d785;return getAuthToken(_0xf89ac1,_0x2404dc,_0x4a48cf)[_0x2981('0x13')](function(_0x3f9ea7){if(_0x121d9e[_0x2981('0x42')]==='incident'){_0x22d785={'method':'POST','uri':_0xc2ce99+_0x2981('0x43'),'body':Object[_0x2981('0x44')]({},{'title':intUtil[_0x2981('0x45')](_0x121d9e['Subjects'],_0x3f9731,'\x20'),'description':intUtil['getString'](_0x121d9e[_0x2981('0x46')],_0x3f9731,'\x0a'),'customerid_contact@odata.bind':_0x51a59e[_0x2981('0x31')]?'/contacts('+_0x51a59e['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x51a59e[_0x2981('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x121d9e[_0x2981('0x47')],_0x3f9731,_0x121d9e[_0x2981('0x42')])),'headers':{'Authorization':'Bearer\x20'+_0x3f9ea7,'OData-Version':_0x2981('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x121d9e[_0x2981('0x42')]===_0x2981('0x48')){var _0x56016e=_0x51a59e[_0x2981('0x31')]?[{'partyid_systemuser@odata.bind':_0x2981('0x2c')+_0x51a59e['userId']+')','participationtypemask':_0x51a59e[_0x2981('0x49')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x2981('0x4a')+_0x51a59e[_0x2981('0x31')]+')','participationtypemask':_0x51a59e[_0x2981('0x49')]===_0x2981('0x4b')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x2981('0x2c')+_0x51a59e['userId']+')','participationtypemask':_0x51a59e[_0x2981('0x49')]===_0x2981('0x4b')?0x2:0x1}];_0x22d785={'method':_0x2981('0xf'),'uri':_0xc2ce99+_0x2981('0x4c'),'body':Object[_0x2981('0x44')]({},{'subject':intUtil['getString'](_0x121d9e['Subjects'],_0x3f9731,'\x20'),'phonenumber':String(_0x3f9731[_0x2981('0x4d')]),'description':intUtil[_0x2981('0x45')](_0x121d9e['Descriptions'],_0x3f9731,'\x0a'),'regardingobjectid_contact@odata.bind':_0x51a59e[_0x2981('0x31')]?_0x2981('0x4a')+_0x51a59e[_0x2981('0x31')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x51a59e[_0x2981('0x26')]+')','directioncode':_0x51a59e[_0x2981('0x49')]==='queue'?![]:!![],'phonecall_activity_parties':_0x56016e},getCustomFields(_0x121d9e[_0x2981('0x47')],_0x3f9731,_0x121d9e[_0x2981('0x42')])),'headers':{'Authorization':_0x2981('0x1b')+_0x3f9ea7,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x22d785);})['then'](function(_0x3b040d){var _0x429d42=_0x3b040d[_0x2981('0x4e')][_0x2981('0x2e')];var _0x45733e=_0x429d42['substring'](_0x429d42['lastIndexOf']('(')+0x1,_0x429d42[_0x2981('0x30')](')'));_0x51a59e[_0x2981('0x4f')]=_0x45733e;_0x5e4b0e(_0x51a59e);})['catch'](function(_0x52c22b){_0x50e4af(_0x52c22b[_0x2981('0x19')]);});});}function emit(_0x24943c,_0x4dcffb,_0x812c5b,_0x47a8e3){var _0x5a0edc={'uri':util['format'](_0x2981('0x50'),_0x24943c,_0x812c5b,_0x47a8e3)};io['to'](util[_0x2981('0x51')](_0x2981('0x52'),_0x4dcffb))['emit']('trigger:browser:url',_0x5a0edc);}exports['cs']=function(_0x792d26,_0x368e8b,_0x59efb3,_0xe931d7,_0x59d2d3,_0x2b5542,_0x549ed7,_0x2add59){var _0x55ba8d={};_0x2b5542['remoteUri']=_0x2b5542[_0x2981('0x9')]?intUtil[_0x2981('0x53')](_0x2b5542['CloudProvider'][_0x2981('0x54')]):intUtil[_0x2981('0x53')](_0x2b5542['remoteUri']);_0x2b5542[_0x2981('0x55')]=intUtil[_0x2981('0x53')](_0x2b5542['serverUrl']);_0x55ba8d['callDirection']=_0x2add59==='queue'||_0x2add59==='unmanaged'?_0x2981('0x4b'):_0x2981('0x2a');var _0x33e886=_0x2b5542[_0x2981('0x9')]?util[_0x2981('0x51')](_0x2981('0x56'),_0x2b5542[_0x2981('0x57')][_0x2981('0x54')]):util[_0x2981('0x51')](_0x2981('0x56'),_0x2b5542[_0x2981('0xa')]);var _0x315b97=util[_0x2981('0x51')](_0x2981('0x58'),_0x2b5542[_0x2981('0xb')]);var _0x514cf5=util['format'](_0x2981('0x59'),_0x2b5542[_0x2981('0x55')],_0x368e8b['uniqueid'],md5(_0x368e8b[_0x2981('0x5a')]));if(_0x59d2d3&&_0x59d2d3[_0x2981('0x5b')]){logger[_0x2981('0x24')](_0x2981('0x5c'),_0x2981('0x5d'));_0x368e8b[_0x2981('0x5e')]=_0x514cf5;}else if(_0x549ed7&&_0x549ed7[_0x2981('0x5f')]&&_0x549ed7['recordingFormat']!==_0x2981('0x60')){logger[_0x2981('0x24')](_0x2981('0x61'),_0x2981('0x5d'));_0x368e8b[_0x2981('0x5e')]=_0x514cf5;}else{_0x368e8b['recordingURL']='';}return getUser(_0x55ba8d,_0x2b5542,_0xe931d7,_0x315b97,_0x33e886,_0x2add59)['then'](function(_0xb9a439){logger['info']('['+_0x2add59[_0x2981('0x17')]()+_0x2981('0x62'),_0xb9a439[_0x2981('0x26')]);logger[_0x2981('0x24')]('['+_0x2add59[_0x2981('0x17')]()+_0x2981('0x63'),_0xb9a439[_0x2981('0x20')]);return getEndUser(_0xb9a439,_0x2b5542,_0x315b97,_0x33e886,_0x368e8b,_0x2add59,_0x59efb3['moduleCreate'],_0x59efb3[_0x2981('0x64')]);})[_0x2981('0x13')](function(_0x38ef32){logger['info']('['+_0x2add59[_0x2981('0x17')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x38ef32['enduserId']);logger[_0x2981('0x24')]('['+_0x2add59[_0x2981('0x17')]()+_0x2981('0x65'),_0x368e8b[_0x2981('0x4d')]);return getTicket(_0x38ef32,_0x2b5542,_0x315b97,_0x33e886,_0x368e8b,_0x59efb3,_0x2add59);})[_0x2981('0x13')](function(_0x4d24d0){logger[_0x2981('0x24')](util[_0x2981('0x51')]('['+_0x2add59[_0x2981('0x17')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x59efb3['ticketType'],_0x4d24d0[_0x2981('0x4f')]));logger[_0x2981('0x24')](util[_0x2981('0x51')]('['+_0x2add59['toUpperCase']()+_0x2981('0x66'),_0x2add59));if(_0x2add59!=='unmanaged'&&_0x59efb3[_0x2981('0x67')]){logger[_0x2981('0x24')]('['+_0x2add59[_0x2981('0x17')]()+']',_0x2981('0x68'));emit(_0x2b5542[_0x2981('0xa')],_0xe931d7['name'],_0x59efb3[_0x2981('0x42')],_0x4d24d0[_0x2981('0x4f')]);}})[_0x2981('0x15')](function(_0x526fea){logger[_0x2981('0x16')]('['+_0x2add59['toUpperCase']()+_0x2981('0x69'),_0x526fea['message']);console['error'](_0x2981('0x6a'),_0x526fea);});};
\ No newline at end of file
index 6864c0c..2f4df8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe719=['toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Tags','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','email','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','idField','push','content','variable','variableName','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','The\x20User\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','%s/helpdesk/tickets/%d','lastevent','The\x20Ticket\x20ID\x20is:'];(function(_0x46e6d3,_0x487430){var _0x113873=function(_0x986f02){while(--_0x986f02){_0x46e6d3['push'](_0x46e6d3['shift']());}};_0x113873(++_0x487430);}(_0xe719,0xb7));var _0x9e71=function(_0x43a902,_0x4b6785){_0x43a902=_0x43a902-0x0;var _0x3d5d29=_0xe719[_0x43a902];return _0x3d5d29;};'use strict';var _=require(_0x9e71('0x0'));var rp=require(_0x9e71('0x1'));var md5=require(_0x9e71('0x2'));var util=require(_0x9e71('0x3'));var Redis=require(_0x9e71('0x4'));var intUtil=require('./util');var config=require(_0x9e71('0x5'));var logger=require('../../../../config/logger')('freshdesk');config[_0x9e71('0x6')]=_[_0x9e71('0x7')](config[_0x9e71('0x6')],{'host':_0x9e71('0x8'),'port':0x18eb});var io=require(_0x9e71('0x9'))(new Redis(config['redis']));var headers={'Content-Type':_0x9e71('0xa'),'Accept':_0x9e71('0xa')};function emit(_0x424273,_0x15ce76,_0x5f9328){io['to'](_0x424273)[_0x9e71('0xb')](_0x15ce76,_0x5f9328);}function getTicket(_0x171008,_0x3bac84,_0x21dbd2,_0xe399bd,_0x3b8838){logger['info'](_0x9e71('0xc'));var _0x87d9c0=_[_0x9e71('0xd')]({'responder_id':_0x3bac84['id'],'requester_id':_0x21dbd2['id'],'name':util[_0x9e71('0xe')](_0x9e71('0xf'),_0x3b8838[_0x9e71('0x10')]),'phone':_0x3b8838[_0x9e71('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0xe399bd['Subjects'],_0x3b8838,'\x20'),'description':intUtil['getString'](_0xe399bd['Descriptions'],_0x3b8838,'<br>'),'tags':getTags(_0xe399bd[_0x9e71('0x12')],'name')},getCustomFields(_0xe399bd[_0x9e71('0x13')],_0x3b8838));_0x87d9c0[_0x9e71('0x14')]=_[_0x9e71('0x15')](_[_0x9e71('0x16')](_0x87d9c0['custom_fields'],'id'),_0x9e71('0x17'));return request({'uri':util[_0x9e71('0xe')](_0x9e71('0x18'),_0x171008[_0x9e71('0x19')]),'method':'POST','body':_0x87d9c0})[_0x9e71('0x1a')](function(_0x3f46d0){logger[_0x9e71('0x1b')](_0x9e71('0x1c'));return _0x3f46d0;});}function getUser(_0xd9b403,_0x4ed4b6){if(intUtil[_0x9e71('0x1d')](_0x4ed4b6)){return request({'uri':util[_0x9e71('0xe')](_0x9e71('0x1e'),_0xd9b403[_0x9e71('0x19')]),'qs':{'email':_0x4ed4b6}})[_0x9e71('0x1a')](function(_0x20c2e0){if(_0x20c2e0[_0x9e71('0x1f')]){logger[_0x9e71('0x1b')](_0x9e71('0x20'));return _[_0x9e71('0x21')](_0x20c2e0,function(_0x126e92){return _0x126e92['contact'][_0x9e71('0x22')]===_0x4ed4b6;});}else{logger[_0x9e71('0x1b')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format']('%s/api/v2/agents/me',_0xd9b403['remoteUri'])})['then'](function(_0x3885f6){logger[_0x9e71('0x1b')](_0x9e71('0x23'));return _0x3885f6;});}});}else{logger[_0x9e71('0x1b')](_0x9e71('0x24'));return request({'uri':util[_0x9e71('0xe')](_0x9e71('0x25'),_0xd9b403[_0x9e71('0x19')])})[_0x9e71('0x1a')](function(_0x5eb02b){logger[_0x9e71('0x1b')](_0x9e71('0x23'));return _0x5eb02b;});}}function getEndUser(_0x8a72c1,_0x53e558,_0x5c1e81){logger[_0x9e71('0x1b')](_0x9e71('0x26'),_0x5c1e81);return request({'uri':util['format'](_0x9e71('0x27'),_0x8a72c1[_0x9e71('0x19')]),'qs':{'phone':_0x5c1e81}})[_0x9e71('0x1a')](function(_0x1586d4){if(_0x1586d4[_0x9e71('0x1f')]){logger['info'](_0x9e71('0x28'));return _['find'](_0x1586d4,{'phone':_0x5c1e81});}else{logger[_0x9e71('0x1b')](_0x9e71('0x29'));return request({'uri':util[_0x9e71('0xe')](_0x9e71('0x27'),_0x8a72c1[_0x9e71('0x19')]),'method':'POST','body':{'name':_0x53e558,'phone':_0x5c1e81}})[_0x9e71('0x1a')](function(_0x361ca4){logger[_0x9e71('0x1b')](_0x9e71('0x2a'));return _0x361ca4;});}});}function getAuth(_0x2ffdd4){return util[_0x9e71('0xe')](_0x9e71('0x2b'),new Buffer(_0x2ffdd4['apiKey']+':X')[_0x9e71('0x2c')](_0x9e71('0x2d')));}function request(_0x3c2452){logger[_0x9e71('0x2e')]('[HTTP]',JSON[_0x9e71('0x2f')](_0x3c2452));return rp(_[_0x9e71('0x7')](_0x3c2452,{'method':_0x9e71('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x392705,_0x4bb37f){var _0x2bc25b=[];if(_0x392705&&_0x392705[_0x9e71('0x1f')]>0x0){_0x2bc25b=_[_0x9e71('0x31')](_0x392705,_0x4bb37f);}return _0x2bc25b;}function getCustomFields(_0x1a939d,_0x523818){var _0x123fae=[];var _0x40e557={'custom_fields':[]};if(_0x1a939d[_0x9e71('0x1f')]>0x0){_[_0x9e71('0x32')](_0x1a939d,function(_0x4a7205){if(_[_0x9e71('0x33')]([_0x9e71('0x34'),_0x9e71('0x35')],_0x4a7205[_0x9e71('0x36')])&&_0x4a7205[_0x9e71('0x37')]&&!_0x4a7205[_0x9e71('0x38')]){_0x40e557[_0x4a7205[_0x9e71('0x37')]['toLowerCase']()]=_0x4a7205['content'][_0x9e71('0x2c')]();}else if(_[_0x9e71('0x33')]([_0x9e71('0x34'),'picklist'],_0x4a7205[_0x9e71('0x36')])&&_0x4a7205[_0x9e71('0x39')]&&_0x4a7205[_0x9e71('0x38')]){_0x40e557[_0x9e71('0x14')][_0x9e71('0x3a')]({'id':_0x4a7205[_0x9e71('0x39')],'value':_0x4a7205[_0x9e71('0x3b')][_0x9e71('0x2c')]()});}else if(_0x4a7205[_0x9e71('0x36')]===_0x9e71('0x3c')&&_0x4a7205['variableName']&&_0x4a7205[_0x9e71('0x39')]&&_0x4a7205['customField']){_0x523818[_0x4a7205[_0x9e71('0x3d')]]&&_0x40e557[_0x9e71('0x14')][_0x9e71('0x3a')]({'id':_0x4a7205['idField'],'value':_0x523818[_0x4a7205[_0x9e71('0x3d')]][_0x9e71('0x2c')]()});}else if(_0x4a7205['type']===_0x9e71('0x3e')&&_0x4a7205['Variable']&&_0x4a7205[_0x9e71('0x3f')][_0x9e71('0x40')]&&_0x4a7205[_0x9e71('0x39')]&&_0x4a7205['customField']){_0x523818[_0x4a7205[_0x9e71('0x3f')][_0x9e71('0x40')][_0x9e71('0x41')]()]&&_0x40e557[_0x9e71('0x14')][_0x9e71('0x3a')]({'id':_0x4a7205[_0x9e71('0x39')],'value':_0x523818[_0x4a7205['Variable'][_0x9e71('0x40')][_0x9e71('0x41')]()][_0x9e71('0x2c')]()});}});}return _0x40e557;}exports[_0x9e71('0x42')]=function(_0x487153,_0x3b24fc,_0x248879,_0xc59b26,_0xdc9fb7,_0x52c13f){var _0x4dae50,_0x4f9acd;_0x52c13f[_0x9e71('0x19')]=intUtil[_0x9e71('0x43')](_0x52c13f[_0x9e71('0x19')]);_0x52c13f['serverUrl']=intUtil[_0x9e71('0x43')](_0x52c13f['serverUrl']);if(_0xdc9fb7&&_0xdc9fb7['monitor_format']){logger[_0x9e71('0x1b')](_0x9e71('0x44'),_0x9e71('0x45'));_0x3b24fc['recordingURL']=util[_0x9e71('0xe')](_0x9e71('0x46'),_0x52c13f[_0x9e71('0x47')],_0x3b24fc[_0x9e71('0x48')],md5(_0x3b24fc[_0x9e71('0x48')]));}else{_0x3b24fc[_0x9e71('0x49')]='';}headers['Authorization']=getAuth(_0x52c13f);return getUser(_0x52c13f,_0xc59b26[_0x9e71('0x22')])['then'](function(_0x2c9220){_0x4dae50=_0x2c9220;logger[_0x9e71('0x1b')](_0x9e71('0x4a'),_0x4dae50['id']);return getEndUser(_0x52c13f,_0x3b24fc[_0x9e71('0x10')],_0x3b24fc[_0x9e71('0x11')]);})[_0x9e71('0x1a')](function(_0xb50749){_0x4f9acd=_0xb50749;logger[_0x9e71('0x1b')]('The\x20Enduser\x20ID\x20is:',_0x4f9acd['id']);return getTicket(_0x52c13f,_0x4dae50,_0x4f9acd,_0x248879,_0x3b24fc);})['then'](function(_0x121951){if(_0x121951&&_0x121951['id']){logger['info'](_0x9e71('0x1c'));logger[_0x9e71('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x121951['id']);logger[_0x9e71('0x1b')](_0x9e71('0x44'),_0x9e71('0x4b'));emit(util['format'](_0x9e71('0x4c'),_0xc59b26['name']),_0x9e71('0x4d'),{'uri':util[_0x9e71('0xe')]('%s/helpdesk/tickets/%d',_0x52c13f[_0x9e71('0x19')],_0x121951['id'])});}})[_0x9e71('0x4e')](function(_0x38c64b){logger[_0x9e71('0x4f')](_0x9e71('0x44'),JSON[_0x9e71('0x2f')](_0x38c64b));});};exports[_0x9e71('0x50')]=function(_0x22ef67,_0x32d18f,_0x12ffbc,_0x34d5ee,_0x5eecd1,_0x380c89,_0x446523){var _0x37c5a7,_0x44a5c9;_0x380c89[_0x9e71('0x19')]=intUtil[_0x9e71('0x43')](_0x380c89[_0x9e71('0x19')]);_0x380c89[_0x9e71('0x47')]=intUtil[_0x9e71('0x43')](_0x380c89[_0x9e71('0x47')]);if(_0x446523&&_0x446523[_0x9e71('0x51')]&&_0x446523[_0x9e71('0x51')]!==_0x9e71('0x52')){logger[_0x9e71('0x1b')](_0x9e71('0x53'),_0x9e71('0x45'));_0x32d18f['recordingURL']=util['format'](_0x9e71('0x46'),_0x380c89[_0x9e71('0x47')],_0x32d18f['uniqueid'],md5(_0x32d18f[_0x9e71('0x48')]));}headers[_0x9e71('0x54')]=getAuth(_0x380c89);return getUser(_0x380c89,_0x34d5ee[_0x9e71('0x22')])[_0x9e71('0x1a')](function(_0xf4789a){_0x37c5a7=_0xf4789a;logger[_0x9e71('0x1b')](_0x9e71('0x4a'),_0x37c5a7['id']);return getEndUser(_0x380c89,_0x32d18f[_0x9e71('0x55')],_0x32d18f[_0x9e71('0x56')]);})[_0x9e71('0x1a')](function(_0x215634){_0x44a5c9=_0x215634;logger[_0x9e71('0x1b')]('The\x20Enduser\x20ID\x20is:',_0x44a5c9['id']);return getTicket(_0x380c89,_0x37c5a7,_0x44a5c9,_0x12ffbc,_0x32d18f);})[_0x9e71('0x1a')](function(_0x432ef1){if(_0x432ef1&&_0x432ef1['id']){logger[_0x9e71('0x1b')](_0x9e71('0x1c'));logger[_0x9e71('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x432ef1['id']);logger[_0x9e71('0x1b')]('[OUTBOUND]',_0x9e71('0x4b'));emit(util[_0x9e71('0xe')]('user:%s',_0x34d5ee[_0x9e71('0x40')]),_0x9e71('0x4d'),{'uri':util['format'](_0x9e71('0x57'),_0x380c89[_0x9e71('0x19')],_0x432ef1['id'])});}})[_0x9e71('0x4e')](function(_0x3af48a){logger[_0x9e71('0x4f')](_0x9e71('0x53'),JSON[_0x9e71('0x2f')](_0x3af48a));});};exports['unmanaged']=function(_0x2a1a8c,_0x247d1a,_0x18490f,_0x2e23ae,_0x4cc3dd,_0x879c39){var _0x377815,_0x2e0903;_0x879c39['remoteUri']=intUtil[_0x9e71('0x43')](_0x879c39[_0x9e71('0x19')]);_0x879c39[_0x9e71('0x47')]=intUtil[_0x9e71('0x43')](_0x879c39['serverUrl']);if(_0x4cc3dd&&_0x4cc3dd['monitor_format']){logger[_0x9e71('0x1b')]('['+_0x247d1a[_0x9e71('0x58')]['toUpperCase']()+']',_0x9e71('0x45'));_0x247d1a[_0x9e71('0x49')]=util['format'](_0x9e71('0x46'),_0x879c39[_0x9e71('0x47')],_0x247d1a[_0x9e71('0x48')],md5(_0x247d1a['uniqueid']));}else{_0x247d1a[_0x9e71('0x49')]='';}headers[_0x9e71('0x54')]=getAuth(_0x879c39);return getUser(_0x879c39,'')[_0x9e71('0x1a')](function(_0x417ff4){_0x377815=_0x417ff4;logger[_0x9e71('0x1b')](_0x9e71('0x4a'),_0x377815['id']);return getEndUser(_0x879c39,_0x247d1a[_0x9e71('0x10')],_0x247d1a[_0x9e71('0x11')]);})[_0x9e71('0x1a')](function(_0xeeaf4){_0x2e0903=_0xeeaf4;logger[_0x9e71('0x1b')]('The\x20Enduser\x20ID\x20is:',_0x2e0903['id']);return getTicket(_0x879c39,_0x377815,_0x2e0903,_0x18490f,_0x247d1a);})[_0x9e71('0x1a')](function(_0x325f2f){if(_0x325f2f){logger[_0x9e71('0x1b')](_0x9e71('0x1c'));logger['info'](_0x9e71('0x59'),_0x325f2f['id']);}})[_0x9e71('0x4e')](function(_0x300fce){logger['error']('['+_0x247d1a[_0x9e71('0x58')][_0x9e71('0x5a')]()+']',JSON['stringify'](_0x300fce));});};
\ No newline at end of file
+var _0xd001=['%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','apiKey','toString','base64','debug','[HTTP]','defaults','map','forEach','picklist','type','nameField','customField','toLowerCase','content','string','idField','push','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','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','stringify','unmanaged','lastevent','toUpperCase','calleridname','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','<br>','Tags','name','Fields','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0x5bba5c,_0xcb8e5c){var _0x42bad9=function(_0x2044ad){while(--_0x2044ad){_0x5bba5c['push'](_0x5bba5c['shift']());}};_0x42bad9(++_0xcb8e5c);}(_0xd001,0x159));var _0x1d00=function(_0x223dc7,_0xdbb4b7){_0x223dc7=_0x223dc7-0x0;var _0x596b60=_0xd001[_0x223dc7];return _0x596b60;};'use strict';var _=require(_0x1d00('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x1d00('0x1'));var Redis=require(_0x1d00('0x2'));var intUtil=require(_0x1d00('0x3'));var config=require(_0x1d00('0x4'));var logger=require(_0x1d00('0x5'))(_0x1d00('0x6'));config[_0x1d00('0x7')]=_['defaults'](config[_0x1d00('0x7')],{'host':_0x1d00('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x1d00('0x9'),'Accept':_0x1d00('0x9')};function emit(_0x11118a,_0x37abec,_0x6e822d){io['to'](_0x11118a)[_0x1d00('0xa')](_0x37abec,_0x6e822d);}function getTicket(_0xd11f2b,_0x518112,_0xe5e519,_0x5eac48,_0x560cc3){logger[_0x1d00('0xb')](_0x1d00('0xc'));var _0x5111f8=_[_0x1d00('0xd')]({'responder_id':_0x518112['id'],'requester_id':_0xe5e519['id'],'name':util[_0x1d00('0xe')](_0x1d00('0xf'),_0x560cc3['calleridname']),'phone':_0x560cc3[_0x1d00('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x1d00('0x11')](_0x5eac48[_0x1d00('0x12')],_0x560cc3,'\x20'),'description':intUtil[_0x1d00('0x11')](_0x5eac48['Descriptions'],_0x560cc3,_0x1d00('0x13')),'tags':getTags(_0x5eac48[_0x1d00('0x14')],_0x1d00('0x15'))},getCustomFields(_0x5eac48[_0x1d00('0x16')],_0x560cc3));_0x5111f8['custom_fields']=_[_0x1d00('0x17')](_[_0x1d00('0x18')](_0x5111f8[_0x1d00('0x19')],'id'),_0x1d00('0x1a'));return request({'uri':util[_0x1d00('0xe')](_0x1d00('0x1b'),_0xd11f2b[_0x1d00('0x1c')]),'method':'POST','body':_0x5111f8})[_0x1d00('0x1d')](function(_0x3164e3){logger[_0x1d00('0xb')](_0x1d00('0x1e'));return _0x3164e3;});}function getUser(_0x2fa62e,_0xed7c25){if(intUtil[_0x1d00('0x1f')](_0xed7c25)){return request({'uri':util['format'](_0x1d00('0x20'),_0x2fa62e['remoteUri']),'qs':{'email':_0xed7c25}})[_0x1d00('0x1d')](function(_0x1267b9){if(_0x1267b9[_0x1d00('0x21')]){logger[_0x1d00('0xb')](_0x1d00('0x22'));return _[_0x1d00('0x23')](_0x1267b9,function(_0x310bba){return _0x310bba[_0x1d00('0x24')][_0x1d00('0x25')]===_0xed7c25;});}else{logger['info'](_0x1d00('0x26'));return request({'uri':util[_0x1d00('0xe')](_0x1d00('0x27'),_0x2fa62e[_0x1d00('0x1c')])})[_0x1d00('0x1d')](function(_0x448a9b){logger['info'](_0x1d00('0x28'));return _0x448a9b;});}});}else{logger[_0x1d00('0xb')](_0x1d00('0x29'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x2fa62e[_0x1d00('0x1c')])})['then'](function(_0x179716){logger[_0x1d00('0xb')]('Admin\x20account\x20selected.');return _0x179716;});}}function getEndUser(_0x1a0e64,_0x21ad0e,_0x451426){logger['info'](_0x1d00('0x2a'),_0x451426);return request({'uri':util[_0x1d00('0xe')](_0x1d00('0x2b'),_0x1a0e64[_0x1d00('0x1c')]),'qs':{'phone':_0x451426}})[_0x1d00('0x1d')](function(_0x3c2feb){if(_0x3c2feb[_0x1d00('0x21')]){logger['info'](_0x1d00('0x2c'));return _['find'](_0x3c2feb,{'phone':_0x451426});}else{logger[_0x1d00('0xb')](_0x1d00('0x2d'));return request({'uri':util[_0x1d00('0xe')]('%s/api/v2/contacts',_0x1a0e64['remoteUri']),'method':_0x1d00('0x2e'),'body':{'name':_0x21ad0e,'phone':_0x451426}})[_0x1d00('0x1d')](function(_0xcc5ffd){logger[_0x1d00('0xb')](_0x1d00('0x2f'));return _0xcc5ffd;});}});}function getAuth(_0x29ed7d){return util[_0x1d00('0xe')]('Basic\x20%s',new Buffer(_0x29ed7d[_0x1d00('0x30')]+':X')[_0x1d00('0x31')](_0x1d00('0x32')));}function request(_0x126962){logger[_0x1d00('0x33')](_0x1d00('0x34'),JSON['stringify'](_0x126962));return rp(_[_0x1d00('0x35')](_0x126962,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x5dfa78,_0x1170ef){var _0x8967e2=[];if(_0x5dfa78&&_0x5dfa78[_0x1d00('0x21')]>0x0){_0x8967e2=_[_0x1d00('0x36')](_0x5dfa78,_0x1170ef);}return _0x8967e2;}function getCustomFields(_0x5a05cc,_0x56ad70){var _0x2883fa=[];var _0x98a940={'custom_fields':[]};if(_0x5a05cc[_0x1d00('0x21')]>0x0){_[_0x1d00('0x37')](_0x5a05cc,function(_0x262b06){if(_['includes'](['string',_0x1d00('0x38')],_0x262b06[_0x1d00('0x39')])&&_0x262b06[_0x1d00('0x3a')]&&!_0x262b06[_0x1d00('0x3b')]){_0x98a940[_0x262b06[_0x1d00('0x3a')][_0x1d00('0x3c')]()]=_0x262b06[_0x1d00('0x3d')][_0x1d00('0x31')]();}else if(_['includes']([_0x1d00('0x3e'),_0x1d00('0x38')],_0x262b06['type'])&&_0x262b06[_0x1d00('0x3f')]&&_0x262b06[_0x1d00('0x3b')]){_0x98a940['custom_fields'][_0x1d00('0x40')]({'id':_0x262b06[_0x1d00('0x3f')],'value':_0x262b06[_0x1d00('0x3d')][_0x1d00('0x31')]()});}else if(_0x262b06['type']===_0x1d00('0x41')&&_0x262b06[_0x1d00('0x42')]&&_0x262b06[_0x1d00('0x3f')]&&_0x262b06[_0x1d00('0x3b')]){_0x56ad70[_0x262b06['variableName']]&&_0x98a940[_0x1d00('0x19')][_0x1d00('0x40')]({'id':_0x262b06['idField'],'value':_0x56ad70[_0x262b06[_0x1d00('0x42')]]['toString']()});}else if(_0x262b06['type']===_0x1d00('0x43')&&_0x262b06[_0x1d00('0x44')]&&_0x262b06[_0x1d00('0x44')]['name']&&_0x262b06[_0x1d00('0x3f')]&&_0x262b06['customField']){_0x56ad70[_0x262b06[_0x1d00('0x44')][_0x1d00('0x15')][_0x1d00('0x3c')]()]&&_0x98a940['custom_fields'][_0x1d00('0x40')]({'id':_0x262b06[_0x1d00('0x3f')],'value':_0x56ad70[_0x262b06['Variable'][_0x1d00('0x15')][_0x1d00('0x3c')]()][_0x1d00('0x31')]()});}});}return _0x98a940;}exports['queue']=function(_0x1093db,_0x14c765,_0x22c21a,_0x2ebc71,_0x1d3eec,_0x39b3a7){var _0x5926d7,_0x20507a;_0x39b3a7['remoteUri']=intUtil[_0x1d00('0x45')](_0x39b3a7[_0x1d00('0x1c')]);_0x39b3a7[_0x1d00('0x46')]=intUtil['stripTrailingSlash'](_0x39b3a7[_0x1d00('0x46')]);if(_0x1d3eec&&_0x1d3eec[_0x1d00('0x47')]){logger[_0x1d00('0xb')](_0x1d00('0x48'),_0x1d00('0x49'));_0x14c765[_0x1d00('0x4a')]=util[_0x1d00('0xe')](_0x1d00('0x4b'),_0x39b3a7[_0x1d00('0x46')],_0x14c765[_0x1d00('0x4c')],md5(_0x14c765[_0x1d00('0x4c')]));}else{_0x14c765[_0x1d00('0x4a')]='';}headers[_0x1d00('0x4d')]=getAuth(_0x39b3a7);return getUser(_0x39b3a7,_0x2ebc71[_0x1d00('0x25')])['then'](function(_0x32ca1b){_0x5926d7=_0x32ca1b;logger['info']('The\x20User\x20ID\x20is:',_0x5926d7['id']);return getEndUser(_0x39b3a7,_0x14c765['calleridname'],_0x14c765[_0x1d00('0x10')]);})[_0x1d00('0x1d')](function(_0x3d6118){_0x20507a=_0x3d6118;logger[_0x1d00('0xb')]('The\x20Enduser\x20ID\x20is:',_0x20507a['id']);return getTicket(_0x39b3a7,_0x5926d7,_0x20507a,_0x22c21a,_0x14c765);})['then'](function(_0x28991c){if(_0x28991c&&_0x28991c['id']){logger['info']('Ticket\x20created!');logger[_0x1d00('0xb')](_0x1d00('0x4e'),_0x28991c['id']);logger[_0x1d00('0xb')](_0x1d00('0x48'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x1d00('0xe')](_0x1d00('0x4f'),_0x2ebc71[_0x1d00('0x15')]),_0x1d00('0x50'),{'uri':util[_0x1d00('0xe')]('%s/helpdesk/tickets/%d',_0x39b3a7['remoteUri'],_0x28991c['id'])});}})[_0x1d00('0x51')](function(_0x398bdd){logger[_0x1d00('0x52')]('[QUEUE]',JSON['stringify'](_0x398bdd));});};exports[_0x1d00('0x53')]=function(_0x1ddb08,_0x53ef88,_0x385487,_0x5799f9,_0x5d76c6,_0x23af92,_0x28ae30){var _0x2be33c,_0x439597;_0x23af92[_0x1d00('0x1c')]=intUtil[_0x1d00('0x45')](_0x23af92[_0x1d00('0x1c')]);_0x23af92[_0x1d00('0x46')]=intUtil[_0x1d00('0x45')](_0x23af92['serverUrl']);if(_0x28ae30&&_0x28ae30[_0x1d00('0x54')]&&_0x28ae30[_0x1d00('0x54')]!==_0x1d00('0x55')){logger['info'](_0x1d00('0x56'),_0x1d00('0x49'));_0x53ef88['recordingURL']=util[_0x1d00('0xe')](_0x1d00('0x4b'),_0x23af92['serverUrl'],_0x53ef88[_0x1d00('0x4c')],md5(_0x53ef88[_0x1d00('0x4c')]));}headers[_0x1d00('0x4d')]=getAuth(_0x23af92);return getUser(_0x23af92,_0x5799f9[_0x1d00('0x25')])[_0x1d00('0x1d')](function(_0x4fefd4){_0x2be33c=_0x4fefd4;logger[_0x1d00('0xb')]('The\x20User\x20ID\x20is:',_0x2be33c['id']);return getEndUser(_0x23af92,_0x53ef88[_0x1d00('0x57')],_0x53ef88['destcalleridnum']);})[_0x1d00('0x1d')](function(_0x57006c){_0x439597=_0x57006c;logger[_0x1d00('0xb')](_0x1d00('0x58'),_0x439597['id']);return getTicket(_0x23af92,_0x2be33c,_0x439597,_0x385487,_0x53ef88);})[_0x1d00('0x1d')](function(_0x339eeb){if(_0x339eeb&&_0x339eeb['id']){logger[_0x1d00('0xb')](_0x1d00('0x1e'));logger[_0x1d00('0xb')](_0x1d00('0x4e'),_0x339eeb['id']);logger[_0x1d00('0xb')](_0x1d00('0x56'),_0x1d00('0x59'));emit(util['format']('user:%s',_0x5799f9[_0x1d00('0x15')]),_0x1d00('0x50'),{'uri':util[_0x1d00('0xe')](_0x1d00('0x5a'),_0x23af92['remoteUri'],_0x339eeb['id'])});}})['catch'](function(_0x4c5b02){logger[_0x1d00('0x52')]('[OUTBOUND]',JSON[_0x1d00('0x5b')](_0x4c5b02));});};exports[_0x1d00('0x5c')]=function(_0x3f03d8,_0xb76997,_0x431ad7,_0x458bb3,_0x5c0f9b,_0x192865){var _0x151cfc,_0x2c89a6;_0x192865[_0x1d00('0x1c')]=intUtil[_0x1d00('0x45')](_0x192865[_0x1d00('0x1c')]);_0x192865[_0x1d00('0x46')]=intUtil[_0x1d00('0x45')](_0x192865[_0x1d00('0x46')]);if(_0x5c0f9b&&_0x5c0f9b[_0x1d00('0x47')]){logger[_0x1d00('0xb')]('['+_0xb76997[_0x1d00('0x5d')][_0x1d00('0x5e')]()+']',_0x1d00('0x49'));_0xb76997[_0x1d00('0x4a')]=util[_0x1d00('0xe')](_0x1d00('0x4b'),_0x192865[_0x1d00('0x46')],_0xb76997[_0x1d00('0x4c')],md5(_0xb76997['uniqueid']));}else{_0xb76997[_0x1d00('0x4a')]='';}headers[_0x1d00('0x4d')]=getAuth(_0x192865);return getUser(_0x192865,'')[_0x1d00('0x1d')](function(_0x4a29ec){_0x151cfc=_0x4a29ec;logger[_0x1d00('0xb')]('The\x20User\x20ID\x20is:',_0x151cfc['id']);return getEndUser(_0x192865,_0xb76997[_0x1d00('0x5f')],_0xb76997[_0x1d00('0x10')]);})[_0x1d00('0x1d')](function(_0x29c96f){_0x2c89a6=_0x29c96f;logger[_0x1d00('0xb')]('The\x20Enduser\x20ID\x20is:',_0x2c89a6['id']);return getTicket(_0x192865,_0x151cfc,_0x2c89a6,_0x431ad7,_0xb76997);})[_0x1d00('0x1d')](function(_0x591b78){if(_0x591b78){logger[_0x1d00('0xb')](_0x1d00('0x1e'));logger[_0x1d00('0xb')](_0x1d00('0x4e'),_0x591b78['id']);}})[_0x1d00('0x51')](function(_0x1e1ba2){logger[_0x1d00('0x52')]('['+_0xb76997['lastevent'][_0x1d00('0x5e')]()+']',JSON[_0x1d00('0x5b')](_0x1e1ba2));});};
\ No newline at end of file
index 6e95207..12d4974 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e31=['moment','bluebird','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','Getting\x20user\x20list','Getting\x20user\x20with\x20email','userEmail','agentEmail','userId','User\x20found:','Admin\x20selected','error','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','endUserId','work_number','contactNumber','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Subjects','Descriptions','add','ticketId','Task\x20created:','/contacts/','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','username','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util'];(function(_0x21eb46,_0x1a0ff3){var _0x190bf6=function(_0x1b092f){while(--_0x1b092f){_0x21eb46['push'](_0x21eb46['shift']());}};_0x190bf6(++_0x1a0ff3);}(_0x1e31,0xa5));var _0x11e3=function(_0xe4519b,_0x5a50c7){_0xe4519b=_0xe4519b-0x0;var _0x2324f7=_0x1e31[_0xe4519b];return _0x2324f7;};'use strict';var _=require(_0x11e3('0x0'));var rp=require('request-promise');var md5=require(_0x11e3('0x1'));var util=require(_0x11e3('0x2'));var moment=require(_0x11e3('0x3'));var Promise=require(_0x11e3('0x4'));var Redis=require('ioredis');var intUtil=require(_0x11e3('0x5'));var config=require(_0x11e3('0x6'));var logger=require(_0x11e3('0x7'))('freshsales');config[_0x11e3('0x8')]=_[_0x11e3('0x9')](config[_0x11e3('0x8')],{'host':_0x11e3('0xa'),'port':0x18eb});var io=require(_0x11e3('0xb'))(new Redis(config[_0x11e3('0x8')]));function getAdminId(_0x4e9df2,_0x2394eb,_0x3a3462,_0x543481){return new Promise(function(_0x4cb61b,_0xe97eca){var _0x127cf0=![];var _0x3fdab4={'method':_0x11e3('0xc'),'uri':_0x543481+_0x11e3('0xd'),'json':!![]};_0x3fdab4[_0x11e3('0xe')]=_0x3a3462;logger['info'](_0x11e3('0xf'));return rp(_0x3fdab4)[_0x11e3('0x10')](function(_0x402e60){if(_0x402e60){var _0x5874cf=_0x402e60[_0x11e3('0x11')];var _0x3291d4=null;for(_0x3291d4=0x0;_0x3291d4<_0x5874cf[_0x11e3('0x12')];_0x3291d4++){if(_0x5874cf[_0x3291d4][_0x11e3('0x13')]===_0x4e9df2[_0x11e3('0x14')]){_0x4e9df2[_0x11e3('0x15')]=_0x5874cf[_0x3291d4]['id'];_0x127cf0=!![];}}if(_0x127cf0){logger[_0x11e3('0x16')](_0x11e3('0x17'),_0x4e9df2[_0x11e3('0x15')]);_0x4cb61b(_0x4e9df2);}else{_0xe97eca({'statusCode':0x194,'message':_0x11e3('0x18')});}}else{_0xe97eca({'statusCode':0x194,'message':_0x11e3('0x18')});}})[_0x11e3('0x19')](function(_0x581c72){logger['error']('['+[_0x2394eb[_0x11e3('0x1a')]()]+']',_0x581c72[_0x11e3('0x1b')]);_0xe97eca(_0x581c72);});});}function getUser(_0x17a981,_0x12b8c4,_0x594f96){return function(_0x5bd35){return new Promise(function(_0x479ea1,_0x147bbb){var _0x2aaea7={'method':'GET','uri':_0x594f96+'/api/selector/owners','json':!![]};_0x2aaea7['headers']=_0x12b8c4;logger[_0x11e3('0x16')](_0x11e3('0x1c'));return rp(_0x2aaea7)['then'](function(_0x211bed){if(_0x211bed){var _0x184732=_0x211bed[_0x11e3('0x11')];var _0x5a1f6b=![];var _0x3e4337=null;if(_0x5bd35['agentEmail']!==null){logger['info'](_0x11e3('0x1d'),_0x5bd35['agentEmail']);_0x5bd35[_0x11e3('0x1e')]=_0x5bd35[_0x11e3('0x1f')];for(_0x3e4337=0x0;_0x3e4337<_0x184732[_0x11e3('0x12')];_0x3e4337++){if(_0x184732[_0x3e4337][_0x11e3('0x13')]===_0x5bd35[_0x11e3('0x1f')]){_0x5a1f6b=!![];_0x5bd35[_0x11e3('0x20')]=_0x184732[_0x3e4337]['id'];logger[_0x11e3('0x16')](_0x11e3('0x21'),_0x5bd35[_0x11e3('0x20')]);}}}if(!_0x5a1f6b){logger['info'](_0x11e3('0x22'));_0x5bd35[_0x11e3('0x1e')]=_0x5bd35[_0x11e3('0x14')];_0x5bd35[_0x11e3('0x20')]=_0x5bd35[_0x11e3('0x15')];_0x5a1f6b=!![];}if(_0x5a1f6b){_0x479ea1(_0x5bd35);}else{_0x147bbb({'statusCode':0x194,'message':_0x11e3('0x18')});}}else{_0x147bbb({'statusCode':0x194,'message':_0x11e3('0x18')});}})[_0x11e3('0x19')](function(_0x33a676){logger[_0x11e3('0x23')]('['+[_0x17a981[_0x11e3('0x1a')]()]+']',_0x33a676[_0x11e3('0x1b')]);_0x147bbb(_0x33a676);});});};}function searchContact(_0x52673c,_0x3e7a42,_0x3f2eee,_0x1cc814){return new Promise(function(_0x1f3d66,_0x2703f6){var _0x56108a={'method':_0x11e3('0xc'),'headers':_0x3e7a42,'uri':_0x52673c+_0x11e3('0x24')+_0x1cc814+_0x11e3('0x25')+_0x3f2eee+_0x11e3('0x26'),'json':!![]};rp(_0x56108a)[_0x11e3('0x10')](function(_0x3d5e50){var _0x109a3b=_[_0x11e3('0x27')](_0x3d5e50[_0x11e3('0x28')][_0x11e3('0x28')],[_0x3f2eee,_0x1cc814]);_0x1f3d66(_0x109a3b);})['catch'](function(_0x147ac2){_0x2703f6(_0x147ac2);});});}function getEndUser(_0x27db14,_0x56c3b7,_0x4794e5){return function(_0x25d137){return new Promise(function(_0x57b8b7,_0x10e6af){logger[_0x11e3('0x16')](util[_0x11e3('0x29')](_0x11e3('0x2a'),_0x25d137['contactNumber']));searchContact(_0x4794e5,_0x56c3b7,'mobile_number',_0x25d137['contactNumber'])[_0x11e3('0x10')](function(_0x48bf1f){if(_0x48bf1f){_0x25d137[_0x11e3('0x2b')]=_0x48bf1f['id'];logger[_0x11e3('0x16')]('Contact\x20found\x20mobile_number:',_0x25d137[_0x11e3('0x2b')]);return _0x57b8b7(_0x25d137);}searchContact(_0x4794e5,_0x56c3b7,_0x11e3('0x2c'),_0x25d137[_0x11e3('0x2d')])[_0x11e3('0x10')](function(_0x587cc7){if(_0x587cc7){_0x25d137['endUserId']=_0x587cc7['id'];logger[_0x11e3('0x16')]('Contact\x20found\x20work_number:',_0x25d137[_0x11e3('0x2b')]);return _0x57b8b7(_0x25d137);}createEndUser(_0x25d137,_0x27db14,_0x56c3b7,_0x4794e5)[_0x11e3('0x10')](function(_0x30c1ca){logger['info'](_0x11e3('0x2e'),_0x30c1ca[_0x11e3('0x2b')]);return _0x57b8b7(_0x30c1ca);});});})[_0x11e3('0x19')](function(_0x5bb363){_0x10e6af(_0x5bb363);});});};}function createEndUser(_0x44993f,_0x174451,_0x7689dd,_0xb58ec4){return new Promise(function(_0x500e27,_0x3b88cb){var _0x39cc0=moment();var _0x5681ba={'method':_0x11e3('0x2f'),'uri':_0xb58ec4+_0x11e3('0x30'),'body':{'contact':{'last_name':_0x44993f[_0x11e3('0x2d')],'work_number':_0x44993f[_0x11e3('0x2d')],'mobile_number':_0x44993f[_0x11e3('0x2d')],'owner_id':_0x44993f[_0x11e3('0x20')],'created_at':_0x39cc0[_0x11e3('0x29')](_0x11e3('0x31'))}},'json':!![]};_0x5681ba['headers']=_0x7689dd;logger['info'](_0x11e3('0x32'));return rp(_0x5681ba)[_0x11e3('0x10')](function(_0x3686b9){_0x44993f['endUserId']=_0x3686b9[_0x11e3('0x33')]['id'];_0x500e27(_0x44993f);})[_0x11e3('0x19')](function(_0x8020ee){logger['error']('['+[_0x174451['toUpperCase']()]+']',_0x8020ee['message']);_0x3b88cb(_0x8020ee[_0x11e3('0x1b')]);});});}function getTicket(_0x4d0acc,_0x4bf97b,_0x1db1a3,_0xc2b971,_0x58178d){return function(_0x2c7f84){logger[_0x11e3('0x16')](_0x11e3('0x34'));return new Promise(function(_0x53ba84,_0x2cd63a){var _0x4025a0=moment();var _0x383198={'method':_0x11e3('0x2f'),'uri':_0x1db1a3+'/api/tasks','body':{'title':intUtil[_0x11e3('0x35')](_0xc2b971[_0x11e3('0x36')],_0x58178d,'\x20'),'description':intUtil[_0x11e3('0x35')](_0xc2b971[_0x11e3('0x37')],_0x58178d,'\x0a'),'owner_id':_0x2c7f84[_0x11e3('0x20')],'creater_id':_0x2c7f84[_0x11e3('0x15')],'targetable_id':_0x2c7f84['endUserId'],'targetable_type':'Contact','created_at':_0x4025a0[_0x11e3('0x29')](_0x11e3('0x31')),'due_date':_0x4025a0[_0x11e3('0x38')](0x1e,'m')['format'](_0x11e3('0x31'))},'json':!![]};_0x383198['headers']=_0x4bf97b;return rp(_0x383198)['then'](function(_0x4ad1e3){_0x2c7f84[_0x11e3('0x39')]=_0x4ad1e3['task']['id'];logger[_0x11e3('0x16')](_0x11e3('0x3a'),_0x2c7f84[_0x11e3('0x39')]);_0x53ba84(_0x2c7f84);})['catch'](function(_0x2da567){logger[_0x11e3('0x23')]('['+[_0x4d0acc[_0x11e3('0x1a')]()]+']',_0x2da567[_0x11e3('0x1b')]);_0x2cd63a(_0x2da567[_0x11e3('0x1b')]);});});};}function emit(_0x18f209,_0x57d63b,_0x358293){var _0x3efeb5={'uri':_0x18f209+_0x11e3('0x3b')+_0x358293};io['to'](util[_0x11e3('0x29')]('user:%s',_0x57d63b))[_0x11e3('0x3c')]('trigger:browser:url',_0x3efeb5);}exports['cs']=function(_0x595528,_0x4e0afd,_0x3141e0,_0x5af365,_0xd231e0,_0x524a68,_0x341ef4,_0x150c89){var _0xed5973={};var _0x44f75e={'Authorization':_0x11e3('0x3d')+_0x524a68[_0x11e3('0x3e')]};_0x524a68[_0x11e3('0x3f')]=intUtil[_0x11e3('0x40')](_0x524a68[_0x11e3('0x3f')]);_0x524a68['serverUrl']=intUtil[_0x11e3('0x40')](_0x524a68['serverUrl']);var _0x1ca4b1=_0x524a68[_0x11e3('0x3f')];_0xed5973[_0x11e3('0x14')]=_0x524a68[_0x11e3('0x41')];_0xed5973[_0x11e3('0x2d')]=_0x150c89['toLowerCase']()===_0x11e3('0x42')?_0x4e0afd[_0x11e3('0x43')]:_0x4e0afd[_0x11e3('0x44')];_0xed5973[_0x11e3('0x45')]=_0x150c89===_0x11e3('0x46')||_0x150c89===_0x11e3('0x47')?_0x11e3('0x46'):_0x11e3('0x42');if(_0x5af365){_0xed5973[_0x11e3('0x1f')]=_0x5af365[_0x11e3('0x13')];}var _0x321c4e=util[_0x11e3('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x524a68[_0x11e3('0x48')],_0x4e0afd['uniqueid'],md5(_0x4e0afd['uniqueid']));if(_0xd231e0&&_0xd231e0[_0x11e3('0x49')]){logger[_0x11e3('0x16')](_0x11e3('0x4a'),_0x11e3('0x4b'));_0x4e0afd[_0x11e3('0x4c')]=_0x321c4e;}else if(_0x341ef4&&_0x341ef4['recordingFormat']&&_0x341ef4[_0x11e3('0x4d')]!==_0x11e3('0x4e')){logger['info'](_0x11e3('0x4f'),_0x11e3('0x4b'));_0x4e0afd[_0x11e3('0x4c')]=_0x321c4e;}else{_0x4e0afd[_0x11e3('0x4c')]='';}return getAdminId(_0xed5973,_0x150c89,_0x44f75e,_0x1ca4b1)[_0x11e3('0x10')](getUser(_0x150c89,_0x44f75e,_0x1ca4b1))[_0x11e3('0x10')](getEndUser(_0x150c89,_0x44f75e,_0x1ca4b1))[_0x11e3('0x10')](getTicket(_0x150c89,_0x44f75e,_0x1ca4b1,_0x3141e0,_0x4e0afd))['then'](function(_0x5875ac){logger[_0x11e3('0x16')](util[_0x11e3('0x29')]('The\x20ticket\x20ID\x20is:\x20%s',_0x5875ac[_0x11e3('0x39')]));if(_0x150c89!==_0x11e3('0x47')){logger['info']('['+[_0x150c89['toUpperCase']()]+']',_0x11e3('0x50'));emit(_0x1ca4b1,_0x5af365[_0x11e3('0x51')],_0x5875ac[_0x11e3('0x2b')]);}})[_0x11e3('0x19')](function(_0x552cf4){logger[_0x11e3('0x23')]('['+[_0x150c89[_0x11e3('0x1a')]()]+_0x11e3('0x52'),util[_0x11e3('0x53')](_0x552cf4,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xf55f=['info','Getting\x20admin\x20information','users','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','GET','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','email','userId','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','then','find','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','Contact\x20found\x20mobile_number:','work_number','contactNumber','endUserId','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','YYYY-MM-DDTHH:mm:ss','add','task','Task\x20created:','/contacts/','user:%s','emit','Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','adminEmail','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','ticketId','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','../../../../config/environment','freshsales','redis','defaults','socket.io-emitter','/api/selector/owners','headers'];(function(_0xacd1fd,_0x24f8ea){var _0x3d370b=function(_0x2f8eb4){while(--_0x2f8eb4){_0xacd1fd['push'](_0xacd1fd['shift']());}};_0x3d370b(++_0x24f8ea);}(_0xf55f,0xfd));var _0xff55=function(_0x162f4b,_0x31b569){_0x162f4b=_0x162f4b-0x0;var _0x57b00b=_0xf55f[_0x162f4b];return _0x57b00b;};'use strict';var _=require(_0xff55('0x0'));var rp=require(_0xff55('0x1'));var md5=require(_0xff55('0x2'));var util=require(_0xff55('0x3'));var moment=require(_0xff55('0x4'));var Promise=require(_0xff55('0x5'));var Redis=require(_0xff55('0x6'));var intUtil=require('./util');var config=require(_0xff55('0x7'));var logger=require('../../../../config/logger')(_0xff55('0x8'));config[_0xff55('0x9')]=_[_0xff55('0xa')](config[_0xff55('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xff55('0xb'))(new Redis(config[_0xff55('0x9')]));function getAdminId(_0x50a2e0,_0x16ff76,_0x503a35,_0x9b5b8c){return new Promise(function(_0x3e2c58,_0x325983){var _0x3bf75c=![];var _0x8b8ffb={'method':'GET','uri':_0x9b5b8c+_0xff55('0xc'),'json':!![]};_0x8b8ffb[_0xff55('0xd')]=_0x503a35;logger[_0xff55('0xe')](_0xff55('0xf'));return rp(_0x8b8ffb)['then'](function(_0x56739e){if(_0x56739e){var _0x1766d6=_0x56739e[_0xff55('0x10')];var _0x320107=null;for(_0x320107=0x0;_0x320107<_0x1766d6['length'];_0x320107++){if(_0x1766d6[_0x320107]['email']===_0x50a2e0['adminEmail']){_0x50a2e0[_0xff55('0x11')]=_0x1766d6[_0x320107]['id'];_0x3bf75c=!![];}}if(_0x3bf75c){logger[_0xff55('0xe')](_0xff55('0x12'),_0x50a2e0['adminId']);_0x3e2c58(_0x50a2e0);}else{_0x325983({'statusCode':0x194,'message':_0xff55('0x13')});}}else{_0x325983({'statusCode':0x194,'message':_0xff55('0x13')});}})[_0xff55('0x14')](function(_0x3c2755){logger[_0xff55('0x15')]('['+[_0x16ff76[_0xff55('0x16')]()]+']',_0x3c2755[_0xff55('0x17')]);_0x325983(_0x3c2755);});});}function getUser(_0x5850bb,_0x4020b1,_0x49d45d){return function(_0x1d91b6){return new Promise(function(_0x33db6c,_0x1ee157){var _0x1d8aee={'method':_0xff55('0x18'),'uri':_0x49d45d+_0xff55('0xc'),'json':!![]};_0x1d8aee[_0xff55('0xd')]=_0x4020b1;logger[_0xff55('0xe')](_0xff55('0x19'));return rp(_0x1d8aee)['then'](function(_0x28b877){if(_0x28b877){var _0x5a55a9=_0x28b877['users'];var _0x49576e=![];var _0x67bf13=null;if(_0x1d91b6[_0xff55('0x1a')]!==null){logger['info'](_0xff55('0x1b'),_0x1d91b6[_0xff55('0x1a')]);_0x1d91b6[_0xff55('0x1c')]=_0x1d91b6['agentEmail'];for(_0x67bf13=0x0;_0x67bf13<_0x5a55a9[_0xff55('0x1d')];_0x67bf13++){if(_0x5a55a9[_0x67bf13][_0xff55('0x1e')]===_0x1d91b6['agentEmail']){_0x49576e=!![];_0x1d91b6[_0xff55('0x1f')]=_0x5a55a9[_0x67bf13]['id'];logger[_0xff55('0xe')]('User\x20found:',_0x1d91b6[_0xff55('0x1f')]);}}}if(!_0x49576e){logger[_0xff55('0xe')](_0xff55('0x20'));_0x1d91b6['userEmail']=_0x1d91b6['adminEmail'];_0x1d91b6[_0xff55('0x1f')]=_0x1d91b6[_0xff55('0x11')];_0x49576e=!![];}if(_0x49576e){_0x33db6c(_0x1d91b6);}else{_0x1ee157({'statusCode':0x194,'message':_0xff55('0x13')});}}else{_0x1ee157({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xff55('0x14')](function(_0x24033f){logger['error']('['+[_0x5850bb[_0xff55('0x16')]()]+']',_0x24033f[_0xff55('0x17')]);_0x1ee157(_0x24033f);});});};}function searchContact(_0x2ef0c7,_0x51f3aa,_0x5a86c0,_0x39a877){return new Promise(function(_0xd48b54,_0x15c07d){var _0x5b61de={'method':_0xff55('0x18'),'headers':_0x51f3aa,'uri':_0x2ef0c7+_0xff55('0x21')+_0x39a877+_0xff55('0x22')+_0x5a86c0+_0xff55('0x23'),'json':!![]};rp(_0x5b61de)[_0xff55('0x24')](function(_0x1ece30){var _0x1c6ae3=_[_0xff55('0x25')](_0x1ece30['contacts']['contacts'],[_0x5a86c0,_0x39a877]);_0xd48b54(_0x1c6ae3);})[_0xff55('0x14')](function(_0x290b6a){_0x15c07d(_0x290b6a);});});}function getEndUser(_0x5c4a7f,_0x4c236d,_0x4a5ba4){return function(_0x49b905){return new Promise(function(_0x3378ee,_0x2778b3){logger[_0xff55('0xe')](util[_0xff55('0x26')](_0xff55('0x27'),_0x49b905['contactNumber']));searchContact(_0x4a5ba4,_0x4c236d,_0xff55('0x28'),_0x49b905['contactNumber'])['then'](function(_0x41225a){if(_0x41225a){_0x49b905['endUserId']=_0x41225a['id'];logger[_0xff55('0xe')](_0xff55('0x29'),_0x49b905['endUserId']);return _0x3378ee(_0x49b905);}searchContact(_0x4a5ba4,_0x4c236d,_0xff55('0x2a'),_0x49b905[_0xff55('0x2b')])[_0xff55('0x24')](function(_0x4c656e){if(_0x4c656e){_0x49b905[_0xff55('0x2c')]=_0x4c656e['id'];logger['info']('Contact\x20found\x20work_number:',_0x49b905[_0xff55('0x2c')]);return _0x3378ee(_0x49b905);}createEndUser(_0x49b905,_0x5c4a7f,_0x4c236d,_0x4a5ba4)[_0xff55('0x24')](function(_0x103402){logger['info'](_0xff55('0x2d'),_0x103402['endUserId']);return _0x3378ee(_0x103402);});});})[_0xff55('0x14')](function(_0x5c289d){_0x2778b3(_0x5c289d);});});};}function createEndUser(_0x8ebf80,_0x5008e7,_0x1de3b6,_0x4e8ce3){return new Promise(function(_0x206edb,_0x2dfa7b){var _0x21a4f4=moment();var _0x5afad1={'method':_0xff55('0x2e'),'uri':_0x4e8ce3+_0xff55('0x2f'),'body':{'contact':{'last_name':_0x8ebf80[_0xff55('0x2b')],'work_number':_0x8ebf80['contactNumber'],'mobile_number':_0x8ebf80['contactNumber'],'owner_id':_0x8ebf80[_0xff55('0x1f')],'created_at':_0x21a4f4['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x5afad1[_0xff55('0xd')]=_0x1de3b6;logger[_0xff55('0xe')](_0xff55('0x30'));return rp(_0x5afad1)[_0xff55('0x24')](function(_0x13c1a9){_0x8ebf80[_0xff55('0x2c')]=_0x13c1a9[_0xff55('0x31')]['id'];_0x206edb(_0x8ebf80);})[_0xff55('0x14')](function(_0x1e6a35){logger[_0xff55('0x15')]('['+[_0x5008e7[_0xff55('0x16')]()]+']',_0x1e6a35[_0xff55('0x17')]);_0x2dfa7b(_0x1e6a35[_0xff55('0x17')]);});});}function getTicket(_0x44cc33,_0x8be98a,_0x49779f,_0x5526fe,_0x5425e6){return function(_0x2a2c11){logger[_0xff55('0xe')]('Creating\x20new\x20task');return new Promise(function(_0x17b204,_0x10ad30){var _0x5b7456=moment();var _0x428fcb={'method':_0xff55('0x2e'),'uri':_0x49779f+_0xff55('0x32'),'body':{'title':intUtil[_0xff55('0x33')](_0x5526fe[_0xff55('0x34')],_0x5425e6,'\x20'),'description':intUtil[_0xff55('0x33')](_0x5526fe['Descriptions'],_0x5425e6,'\x0a'),'owner_id':_0x2a2c11['userId'],'creater_id':_0x2a2c11[_0xff55('0x11')],'targetable_id':_0x2a2c11[_0xff55('0x2c')],'targetable_type':'Contact','created_at':_0x5b7456[_0xff55('0x26')](_0xff55('0x35')),'due_date':_0x5b7456[_0xff55('0x36')](0x1e,'m')[_0xff55('0x26')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x428fcb[_0xff55('0xd')]=_0x8be98a;return rp(_0x428fcb)[_0xff55('0x24')](function(_0x4c41a2){_0x2a2c11['ticketId']=_0x4c41a2[_0xff55('0x37')]['id'];logger[_0xff55('0xe')](_0xff55('0x38'),_0x2a2c11['ticketId']);_0x17b204(_0x2a2c11);})[_0xff55('0x14')](function(_0x549cc2){logger[_0xff55('0x15')]('['+[_0x44cc33[_0xff55('0x16')]()]+']',_0x549cc2[_0xff55('0x17')]);_0x10ad30(_0x549cc2[_0xff55('0x17')]);});});};}function emit(_0x45eb55,_0x5eadae,_0x4b0c2d){var _0x44a056={'uri':_0x45eb55+_0xff55('0x39')+_0x4b0c2d};io['to'](util['format'](_0xff55('0x3a'),_0x5eadae))[_0xff55('0x3b')]('trigger:browser:url',_0x44a056);}exports['cs']=function(_0x99c170,_0x573b53,_0x5da45f,_0x370303,_0x4accdd,_0x165bd0,_0x561d96,_0x508421){var _0x2e865e={};var _0x9c4373={'Authorization':_0xff55('0x3c')+_0x165bd0[_0xff55('0x3d')]};_0x165bd0['remoteUri']=intUtil[_0xff55('0x3e')](_0x165bd0[_0xff55('0x3f')]);_0x165bd0['serverUrl']=intUtil[_0xff55('0x3e')](_0x165bd0[_0xff55('0x40')]);var _0x2a0a4e=_0x165bd0[_0xff55('0x3f')];_0x2e865e[_0xff55('0x41')]=_0x165bd0[_0xff55('0x42')];_0x2e865e[_0xff55('0x2b')]=_0x508421[_0xff55('0x43')]()===_0xff55('0x44')?_0x573b53[_0xff55('0x45')]:_0x573b53[_0xff55('0x46')];_0x2e865e[_0xff55('0x47')]=_0x508421===_0xff55('0x48')||_0x508421==='unmanaged'?_0xff55('0x48'):_0xff55('0x44');if(_0x370303){_0x2e865e[_0xff55('0x1a')]=_0x370303['email'];}var _0x4b44dc=util[_0xff55('0x26')](_0xff55('0x49'),_0x165bd0[_0xff55('0x40')],_0x573b53[_0xff55('0x4a')],md5(_0x573b53[_0xff55('0x4a')]));if(_0x4accdd&&_0x4accdd[_0xff55('0x4b')]){logger['info'](_0xff55('0x4c'),_0xff55('0x4d'));_0x573b53[_0xff55('0x4e')]=_0x4b44dc;}else if(_0x561d96&&_0x561d96[_0xff55('0x4f')]&&_0x561d96['recordingFormat']!==_0xff55('0x50')){logger[_0xff55('0xe')](_0xff55('0x51'),_0xff55('0x4d'));_0x573b53['recordingURL']=_0x4b44dc;}else{_0x573b53[_0xff55('0x4e')]='';}return getAdminId(_0x2e865e,_0x508421,_0x9c4373,_0x2a0a4e)[_0xff55('0x24')](getUser(_0x508421,_0x9c4373,_0x2a0a4e))[_0xff55('0x24')](getEndUser(_0x508421,_0x9c4373,_0x2a0a4e))['then'](getTicket(_0x508421,_0x9c4373,_0x2a0a4e,_0x5da45f,_0x573b53))['then'](function(_0x64409b){logger[_0xff55('0xe')](util[_0xff55('0x26')](_0xff55('0x52'),_0x64409b[_0xff55('0x53')]));if(_0x508421!==_0xff55('0x54')){logger[_0xff55('0xe')]('['+[_0x508421['toUpperCase']()]+']',_0xff55('0x55'));emit(_0x2a0a4e,_0x370303[_0xff55('0x56')],_0x64409b[_0xff55('0x2c')]);}})['catch'](function(_0x188aee){logger[_0xff55('0x15')]('['+[_0x508421['toUpperCase']()]+_0xff55('0x57'),util[_0xff55('0x58')](_0x188aee,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index c6da4b2..87589ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db5=['util','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','sugarcrm','zoho','desk','dynamics365','freshsales','includes','data1','data2','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','freshdesk','servicenow','unknown\x20integration','toLowerCase','[EXEC]','../../../../config/logger','error','format','lodash'];(function(_0x3a99f2,_0x5686cf){var _0x366940=function(_0x1471fa){while(--_0x1471fa){_0x3a99f2['push'](_0x3a99f2['shift']());}};_0x366940(++_0x5686cf);}(_0x8db5,0x1bf));var _0x58db=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x8db5[_0x5783f4];return _0x28e380;};'use strict';var _=require(_0x58db('0x0'));var util=require(_0x58db('0x1'));var zendesk=require('./zendesk');var salesforce=require('./salesforce');var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require(_0x58db('0x2'));var desk=require(_0x58db('0x3'));var vtiger=require(_0x58db('0x4'));var servicenow=require(_0x58db('0x5'));var dynamics365=require(_0x58db('0x6'));var freshsales=require(_0x58db('0x7'));var integrations=[_0x58db('0x8'),'salesforce',_0x58db('0x9'),'freshdesk',_0x58db('0xa'),_0x58db('0xb'),'vtiger',_0x58db('0xc'),_0x58db('0xd'),'servicenow'];exports['exec']=function(_0x3a9c2b,_0x3f4e30,_0x8f9127,_0xcc346c,_0x35b9e0,_0x2080a6){if(_0x8f9127){if(_[_0x58db('0xe')](integrations,_0x3a9c2b['data1']['toLowerCase']())){try{var _0x146e1c=null;var _0x58c12a='';var _0x5841e5=_0x8f9127[_0x3a9c2b[_0x58db('0xf')]['toLowerCase']()];if(_0x5841e5){var _0x188252=_0x5841e5[_0x3a9c2b[_0x58db('0x10')]];if(_0x188252){var _0x50eef6=_['find'](_0x188252['Configurations'],{'id':parseInt(_0x3a9c2b[_0x58db('0x11')],0xa)});if(_0x50eef6){if(_0xcc346c){if(_0x35b9e0&&_0x3f4e30['queue']){_0x58c12a=_0x58db('0x12');}else if(_0x3f4e30[_0x58db('0x13')]){_0x58c12a=_0x58db('0x14');}else{console[_0x58db('0x15')](_0x58db('0x16'),_0x3f4e30);}}else{_0x58c12a=_0x58db('0x17');}switch(_0x3a9c2b['data1']['toLowerCase']()){case'zendesk':zendesk[_0x58c12a](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6);break;case'salesforce':salesforce[_0x58c12a](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6);break;case'sugarcrm':sugarcrm[_0x58c12a](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6);break;case _0x58db('0x18'):freshdesk[_0x58c12a](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6);break;case _0x58db('0xa'):zoho[_0x58c12a](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6);break;case _0x58db('0xb'):desk[_0x58c12a](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6);break;case'vtiger':vtiger[_0x58c12a](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6);break;case _0x58db('0xd'):freshsales['cs'](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6,_0x58c12a);break;case _0x58db('0x19'):servicenow['cs'](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6,_0x58c12a);break;case _0x58db('0xc'):dynamics365['cs'](_0x3a9c2b,_0x3f4e30,_0x50eef6,_0xcc346c,_0x35b9e0,_0x188252,_0x2080a6,_0x58c12a);break;default:console[_0x58db('0x15')](_0x58db('0x1a'));}}else{_0x146e1c=require('../../../../config/logger')(_0x3a9c2b['data1'][_0x58db('0x1b')]());_0x146e1c['error'](_0x58db('0x1c'),util['format']('%s\x20configuration\x20#%s\x20not\x20found',_0x3a9c2b[_0x58db('0xf')]['toLowerCase'](),_0x3a9c2b[_0x58db('0x11')]));}}else{_0x146e1c=require(_0x58db('0x1d'))(_0x3a9c2b['data1']['toLowerCase']());_0x146e1c[_0x58db('0x1e')]('[EXEC]',util[_0x58db('0x1f')]('%s\x20account\x20#%s\x20not\x20found',_0x3a9c2b[_0x58db('0xf')][_0x58db('0x1b')](),_0x3a9c2b['data2']));}}else{}}catch(_0x407050){console[_0x58db('0x1e')](_0x407050);}}}};
\ No newline at end of file
+var _0x4212=['data1','toLowerCase','data2','Configurations','queue','routeId','outbound','log','unmanaged','../../../../config/logger','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','error','lodash','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./vtiger','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','includes'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x4212,0xdb));var _0x2421=function(_0x1f8053,_0x111077){_0x1f8053=_0x1f8053-0x0;var _0x174fd8=_0x4212[_0x1f8053];return _0x174fd8;};'use strict';var _=require(_0x2421('0x0'));var util=require('util');var zendesk=require(_0x2421('0x1'));var salesforce=require(_0x2421('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0x2421('0x3'));var zoho=require(_0x2421('0x4'));var desk=require(_0x2421('0x5'));var vtiger=require(_0x2421('0x6'));var servicenow=require('./servicenow');var dynamics365=require(_0x2421('0x7'));var freshsales=require(_0x2421('0x8'));var integrations=[_0x2421('0x9'),_0x2421('0xa'),_0x2421('0xb'),_0x2421('0xc'),_0x2421('0xd'),_0x2421('0xe'),_0x2421('0xf'),_0x2421('0x10'),_0x2421('0x11'),'servicenow'];exports['exec']=function(_0x482368,_0x1a3686,_0x9390dc,_0x2886c2,_0x241d64,_0x1b60ab){if(_0x9390dc){if(_[_0x2421('0x12')](integrations,_0x482368[_0x2421('0x13')][_0x2421('0x14')]())){try{var _0x406867=null;var _0x126a94='';var _0x1473b4=_0x9390dc[_0x482368['data1'][_0x2421('0x14')]()];if(_0x1473b4){var _0x4bccbf=_0x1473b4[_0x482368[_0x2421('0x15')]];if(_0x4bccbf){var _0x3eeea8=_['find'](_0x4bccbf[_0x2421('0x16')],{'id':parseInt(_0x482368['data3'],0xa)});if(_0x3eeea8){if(_0x2886c2){if(_0x241d64&&_0x1a3686[_0x2421('0x17')]){_0x126a94=_0x2421('0x17');}else if(_0x1a3686[_0x2421('0x18')]){_0x126a94=_0x2421('0x19');}else{console[_0x2421('0x1a')]('EVENT\x20UNKNOWN',_0x1a3686);}}else{_0x126a94=_0x2421('0x1b');}switch(_0x482368[_0x2421('0x13')][_0x2421('0x14')]()){case'zendesk':zendesk[_0x126a94](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab);break;case _0x2421('0xa'):salesforce[_0x126a94](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab);break;case _0x2421('0xb'):sugarcrm[_0x126a94](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab);break;case _0x2421('0xc'):freshdesk[_0x126a94](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab);break;case'zoho':zoho[_0x126a94](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab);break;case _0x2421('0xe'):desk[_0x126a94](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab);break;case _0x2421('0xf'):vtiger[_0x126a94](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab);break;case _0x2421('0x11'):freshsales['cs'](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab,_0x126a94);break;case'servicenow':servicenow['cs'](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab,_0x126a94);break;case _0x2421('0x10'):dynamics365['cs'](_0x482368,_0x1a3686,_0x3eeea8,_0x2886c2,_0x241d64,_0x4bccbf,_0x1b60ab,_0x126a94);break;default:console[_0x2421('0x1a')]('unknown\x20integration');}}else{_0x406867=require(_0x2421('0x1c'))(_0x482368[_0x2421('0x13')][_0x2421('0x14')]());_0x406867['error'](_0x2421('0x1d'),util[_0x2421('0x1e')](_0x2421('0x1f'),_0x482368[_0x2421('0x13')][_0x2421('0x14')](),_0x482368[_0x2421('0x20')]));}}else{_0x406867=require(_0x2421('0x1c'))(_0x482368['data1'][_0x2421('0x14')]());_0x406867[_0x2421('0x21')](_0x2421('0x1d'),util[_0x2421('0x1e')]('%s\x20account\x20#%s\x20not\x20found',_0x482368[_0x2421('0x13')][_0x2421('0x14')](),_0x482368['data2']));}}else{}}catch(_0x30b112){console[_0x2421('0x21')](_0x30b112);}}}};
\ No newline at end of file
index 3163172..65d7a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcb7=['./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','assign','Subjects','getString','Descriptions','ticketType','Task','ActivityDate','IsReminderSet','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','sobject','create','isNil','validateEmail','find','execute','then','Email','info','Agent\x20%s\x20found.','resolve','Name','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','$or','account_contact_lead','additionalSearchAccount','Lead','length','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','format','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','<unknown>','Company','No\x20Company','forEach','includes','string','picklist','idField','variableName','customVariable','Variable','name','password','concat','Connection','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','remoteUri','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','integrationTab','user:%s','newTab','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','trigger:browser:url','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','jsforce','util','ioredis'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xfcb7,0x78));var _0x7fcb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfcb7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7fcb('0x0'));var rp=require(_0x7fcb('0x1'));var moment=require(_0x7fcb('0x2'));var BPromise=require(_0x7fcb('0x3'));var md5=require('md5');var jsforce=require(_0x7fcb('0x4'));var util=require(_0x7fcb('0x5'));var Redis=require(_0x7fcb('0x6'));var intUtil=require(_0x7fcb('0x7'));var config=require(_0x7fcb('0x8'));var logger=require(_0x7fcb('0x9'))('salesforce');config[_0x7fcb('0xa')]=_[_0x7fcb('0xb')](config[_0x7fcb('0xa')],{'host':_0x7fcb('0xc'),'port':0x18eb});var io=require(_0x7fcb('0xd'))(new Redis(config[_0x7fcb('0xa')]));function emit(_0x1533e2,_0x192e97,_0x4d3d7f){io['to'](_0x1533e2)['emit'](_0x192e97,_0x4d3d7f);}function getTicket(_0x487613,_0x3a0050,_0x5102f9,_0x2888d5,_0x5ee97f,_0x1867da,_0x4e6575,_0x233143){var _0x4ca527=Object[_0x7fcb('0xe')]({},{'OwnerId':_0x3a0050['id'],'Subject':intUtil['getString'](_0x2888d5[_0x7fcb('0xf')],_0x5ee97f,'\x20'),'Description':intUtil[_0x7fcb('0x10')](_0x2888d5[_0x7fcb('0x11')],_0x5ee97f,'\x0a')},getCustomFields(_0x1867da,_0x5ee97f));if(_0x5102f9){if(_0x2888d5[_0x7fcb('0x12')]===_0x7fcb('0x13')){_0x4ca527[_0x7fcb('0x14')]=moment['utc']();_0x4ca527[_0x7fcb('0x15')]=![];_0x4ca527['IsRecurrence']=![];if(_0x5102f9[_0x7fcb('0x16')]===_0x7fcb('0x17')||_0x5102f9[_0x7fcb('0x16')]===_0x7fcb('0x18')){_0x4ca527[_0x7fcb('0x19')]=_0x5102f9['id'];}else if(_0x5102f9[_0x7fcb('0x16')]===_0x7fcb('0x1a')){_0x4ca527[_0x7fcb('0x1b')]=_0x5102f9['id'];}}else if(_0x2888d5[_0x7fcb('0x12')]===_0x7fcb('0x1c')){if(_0x5102f9['endUserType']==='contact'){_0x4ca527[_0x7fcb('0x1d')]=_0x5102f9['id'];}else if(_0x5102f9[_0x7fcb('0x16')]===_0x7fcb('0x1a')){_0x4ca527[_0x7fcb('0x1e')]=_0x5102f9['id'];}else if(_0x5102f9[_0x7fcb('0x16')]==='lead'&&_0x2888d5[_0x7fcb('0x1f')]){_0x4ca527[_0x2888d5[_0x7fcb('0x1f')]]=_0x5102f9['id'];}else{logger['info']('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x4e6575[_0x7fcb('0x20')](_0x2888d5[_0x7fcb('0x12')])[_0x7fcb('0x21')](_0x4ca527);}function getUser(_0xd395f4,_0x26c8c1,_0xd11800){if(!_[_0x7fcb('0x22')](_0x26c8c1)&&intUtil[_0x7fcb('0x23')](_0x26c8c1)){var _0x567e68={'Email':_0x26c8c1};var _0x44612f={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xd11800['sobject']('User')[_0x7fcb('0x24')](_0x567e68,_0x44612f)[_0x7fcb('0x25')]()[_0x7fcb('0x26')](function(_0x1568bf){if(_0x1568bf['length']){var _0x9168ee=_[_0x7fcb('0x24')](_0x1568bf,function(_0x2e28c6){return _0x2e28c6[_0x7fcb('0x27')]===_0x26c8c1;});if(_0x9168ee){logger[_0x7fcb('0x28')](_0x7fcb('0x29'),_0x26c8c1);return BPromise[_0x7fcb('0x2a')]({'id':_0x9168ee['Id'],'name':_0x9168ee[_0x7fcb('0x2b')]});}}else{logger[_0x7fcb('0x28')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x26c8c1);return _0xd11800[_0x7fcb('0x2c')]()[_0x7fcb('0x26')](function(_0x7e828f){return BPromise[_0x7fcb('0x2a')]({'id':_0x7e828f[_0x7fcb('0x2d')],'name':_0x7e828f[_0x7fcb('0x2e')]});});}});}else{logger[_0x7fcb('0x28')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x26c8c1);return _0xd11800[_0x7fcb('0x2c')]()[_0x7fcb('0x26')](function(_0x2468aa){return BPromise[_0x7fcb('0x2a')]({'id':_0x2468aa['user_id'],'name':_0x2468aa['display_name']});});}}function getEndUser(_0x483718,_0x3f688a,_0x56bc6d,_0xb5ced6,_0x2c153a){var _0x26b08b={'$or':{'Phone':_0xb5ced6}};var _0x525f13={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0x7fcb('0x26')](function(){logger[_0x7fcb('0x28')](_0x7fcb('0x2f'),_0xb5ced6,_0x3f688a[_0x7fcb('0x30')]);switch(_0x3f688a[_0x7fcb('0x30')]){case _0x7fcb('0x31'):var _0x27ffa9=_[_0x7fcb('0x32')](_0x26b08b);if(_0x3f688a[_0x7fcb('0x33')]){var _0x5eb705={};_0x5eb705[_0x3f688a[_0x7fcb('0x33')]]=_0xb5ced6;_[_0x7fcb('0x34')](_0x27ffa9['$or'],_0x5eb705);}return _0x2c153a[_0x7fcb('0x20')](_0x7fcb('0x35'))[_0x7fcb('0x24')](_0x27ffa9,_0x525f13)['execute']()[_0x7fcb('0x26')](function(_0x44fdd9){if(_0x44fdd9&&_0x44fdd9['length']){return _0x44fdd9;}else{var _0xa26b2d=_['cloneDeep'](_0x26b08b);if(_0x3f688a[_0x7fcb('0x36')]){var _0x2c6758={};_0x2c6758[_0x3f688a[_0x7fcb('0x36')]]=_0xb5ced6;_['merge'](_0xa26b2d[_0x7fcb('0x37')],_0x2c6758);}return _0x2c153a['sobject']('Lead')[_0x7fcb('0x24')](_0xa26b2d,_0x525f13);}});case _0x7fcb('0x38'):var _0x253856=_[_0x7fcb('0x32')](_0x26b08b);if(_0x3f688a[_0x7fcb('0x39')]){var _0x5eb705={};_0x5eb705[_0x3f688a[_0x7fcb('0x39')]]=_0xb5ced6;_['merge'](_0x253856[_0x7fcb('0x37')],_0x5eb705);}return _0x2c153a[_0x7fcb('0x20')]('Account')['find'](_0x253856,_0x525f13)[_0x7fcb('0x25')]()['then'](function(_0x3957ab){if(_0x3957ab&&_0x3957ab['length']){return _0x3957ab;}else{var _0x2584ac=_[_0x7fcb('0x32')](_0x26b08b);if(_0x3f688a[_0x7fcb('0x33')]){var _0xec091c={};_0xec091c[_0x3f688a['additionalSearchContact']]=_0xb5ced6;_[_0x7fcb('0x34')](_0x2584ac[_0x7fcb('0x37')],_0xec091c);}return _0x2c153a[_0x7fcb('0x20')]('Contact')[_0x7fcb('0x24')](_0x2584ac,_0x525f13)[_0x7fcb('0x26')](function(_0x43904b){if(_0x43904b&&_0x43904b['length']){return _0x43904b;}else{var _0x17e40f=_[_0x7fcb('0x32')](_0x26b08b);if(_0x3f688a[_0x7fcb('0x36')]){var _0x9b5d34={};_0x9b5d34[_0x3f688a['additionalSearchLead']]=_0xb5ced6;_['merge'](_0x17e40f['$or'],_0x9b5d34);}return _0x2c153a[_0x7fcb('0x20')]('Lead')[_0x7fcb('0x24')](_0x17e40f,_0x525f13);}});}});case _0x7fcb('0x17'):var _0x27ffa9=_[_0x7fcb('0x32')](_0x26b08b);if(_0x3f688a[_0x7fcb('0x33')]){var _0x5eb705={};_0x5eb705[_0x3f688a[_0x7fcb('0x33')]]=_0xb5ced6;_['merge'](_0x27ffa9[_0x7fcb('0x37')],_0x5eb705);}return _0x2c153a['sobject'](_0x7fcb('0x35'))[_0x7fcb('0x24')](_0x27ffa9,_0x525f13)[_0x7fcb('0x25')]();case'lead':var _0x368be2=_[_0x7fcb('0x32')](_0x26b08b);if(_0x3f688a[_0x7fcb('0x36')]){var _0x5eb705={};_0x5eb705[_0x3f688a[_0x7fcb('0x36')]]=_0xb5ced6;_[_0x7fcb('0x34')](_0x368be2[_0x7fcb('0x37')],_0x5eb705);}return _0x2c153a[_0x7fcb('0x20')](_0x7fcb('0x3a'))[_0x7fcb('0x24')](_0x368be2,_0x525f13);case _0x7fcb('0x1a'):var _0x253856=_[_0x7fcb('0x32')](_0x26b08b);if(_0x3f688a[_0x7fcb('0x39')]){var _0x5eb705={};_0x5eb705[_0x3f688a[_0x7fcb('0x39')]]=_0xb5ced6;_['merge'](_0x253856[_0x7fcb('0x37')],_0x5eb705);}return _0x2c153a[_0x7fcb('0x20')]('Account')[_0x7fcb('0x24')](_0x253856,_0x525f13);default:return null;}})[_0x7fcb('0x26')](function(_0xc24d9){if(_0xc24d9&&_0xc24d9[_0x7fcb('0x3b')]){var _0x4b943b=_['first'](_0xc24d9);if(_0x4b943b){return BPromise[_0x7fcb('0x2a')]({'id':_0x4b943b['Id'],'name':_0x4b943b[_0x7fcb('0x2b')],'phone':_0x4b943b[_0x7fcb('0x3c')],'endUserType':_0x4b943b[_0x7fcb('0x3d')][_0x7fcb('0x3e')][_0x7fcb('0x3f')]()});}}})[_0x7fcb('0x26')](function(_0x3a7a45){if(_0x3a7a45){logger[_0x7fcb('0x28')](_0x7fcb('0x40'),_0x3a7a45[_0x7fcb('0x16')],_0xb5ced6);return BPromise[_0x7fcb('0x2a')](_0x3a7a45);}else{logger[_0x7fcb('0x28')](_0x7fcb('0x41'),_0xb5ced6);var _0xdf3398={'Phone':_0xb5ced6};if(_0x3f688a[_0x7fcb('0x42')]){if(_0x3f688a[_0x7fcb('0x42')]==='contact'){logger[_0x7fcb('0x28')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0xb5ced6,_0x3f688a['moduleCreate']);_0xdf3398[_0x7fcb('0x43')]=_0x56bc6d!=='<unknown>'?_0x56bc6d:util[_0x7fcb('0x44')](_0x7fcb('0x45'),_0xb5ced6);}else if(_0x3f688a[_0x7fcb('0x42')]==='lead'){logger[_0x7fcb('0x28')](_0x7fcb('0x46'),_0xb5ced6,_0x3f688a[_0x7fcb('0x42')]);_0xdf3398[_0x7fcb('0x43')]=_0x56bc6d!==_0x7fcb('0x47')?_0x56bc6d:util['format']('Caller\x20-\x20%s',_0xb5ced6);_0xdf3398[_0x7fcb('0x48')]=_0x7fcb('0x49');}else if(_0x3f688a[_0x7fcb('0x42')]===_0x7fcb('0x1a')){logger[_0x7fcb('0x28')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0xb5ced6,_0x3f688a['moduleCreate']);_0xdf3398['Name']=_0x56bc6d!==_0x7fcb('0x47')?_0x56bc6d:util[_0x7fcb('0x44')]('Caller\x20-\x20%s',_0xb5ced6);}else{return null;}}return _0x2c153a[_0x7fcb('0x20')](_['upperFirst'](_0x3f688a[_0x7fcb('0x42')]))[_0x7fcb('0x21')](_0xdf3398)[_0x7fcb('0x26')](function(_0x27d2f2){return BPromise[_0x7fcb('0x2a')]({'id':_0x27d2f2['id'],'endUserType':_0x3f688a[_0x7fcb('0x42')]});});}});}function getCustomFields(_0x4512dc,_0x40bdd3){var _0x17bc23={};if(_0x4512dc[_0x7fcb('0x3b')]>0x0){_[_0x7fcb('0x4a')](_0x4512dc,function(_0x4d5d55){if(_[_0x7fcb('0x4b')]([_0x7fcb('0x4c'),_0x7fcb('0x4d')],_0x4d5d55[_0x7fcb('0x3e')])&&_0x4d5d55['idField']){_0x17bc23[_0x4d5d55[_0x7fcb('0x4e')]]=_0x4d5d55['content']['toString']();}else if(_0x4d5d55['type']==='variable'&&_0x4d5d55[_0x7fcb('0x4f')]&&_0x4d5d55[_0x7fcb('0x4e')]){_0x40bdd3[_0x4d5d55[_0x7fcb('0x4f')]]&&(_0x17bc23[_0x4d5d55[_0x7fcb('0x4e')]]=_0x40bdd3[_0x4d5d55['variableName']]['toString']());}else if(_0x4d5d55[_0x7fcb('0x3e')]===_0x7fcb('0x50')&&_0x4d5d55['Variable']&&_0x4d5d55[_0x7fcb('0x51')][_0x7fcb('0x52')]&&_0x4d5d55['idField']){_0x40bdd3[_0x4d5d55[_0x7fcb('0x51')]['name'][_0x7fcb('0x3f')]()]&&(_0x17bc23[_0x4d5d55['idField']]=_0x40bdd3[_0x4d5d55[_0x7fcb('0x51')][_0x7fcb('0x52')][_0x7fcb('0x3f')]()]['toString']());}});}return _0x17bc23;}function getConnection(_0xf05aaa){var _0x2d7c65=_0xf05aaa[_0x7fcb('0x53')][_0x7fcb('0x54')](_0xf05aaa['securityToken']);var _0x5d15c1=new jsforce[(_0x7fcb('0x55'))]({'oauth2':{'loginUrl':_0xf05aaa['remoteUri']||'https://login.salesforce.com','clientId':_0xf05aaa[_0x7fcb('0x56')],'clientSecret':_0xf05aaa[_0x7fcb('0x57')]}});return _0x5d15c1[_0x7fcb('0x58')](_0xf05aaa[_0x7fcb('0x59')],_0x2d7c65)['then'](function(){logger[_0x7fcb('0x28')](_0x7fcb('0x5a'));return _0x5d15c1;});}exports[_0x7fcb('0x5b')]=function(_0x1303d6,_0x2b69e9,_0x39ef85,_0x58e878,_0x129764,_0x205249){var _0x15bdb9,_0x5175b7,_0x2e26e7,_0x378754;_0x205249[_0x7fcb('0x5c')]=intUtil[_0x7fcb('0x5d')](_0x205249[_0x7fcb('0x5c')]);_0x205249[_0x7fcb('0x5e')]=intUtil[_0x7fcb('0x5d')](_0x205249[_0x7fcb('0x5e')]);if(_0x129764&&_0x129764[_0x7fcb('0x5f')]){logger[_0x7fcb('0x28')]('[QUEUE]',_0x7fcb('0x60'));_0x2b69e9[_0x7fcb('0x61')]=util[_0x7fcb('0x44')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x205249['serverUrl'],_0x2b69e9[_0x7fcb('0x62')],md5(_0x2b69e9[_0x7fcb('0x62')]));}else{_0x2b69e9['recordingURL']='';}return getConnection(_0x205249)['then'](function(_0x222666){_0x378754=_0x222666;return getUser(_0x205249,_0x58e878[_0x7fcb('0x63')],_0x378754);})['then'](function(_0x2b9ff3){_0x15bdb9=_0x2b9ff3;return getEndUser(_0x205249,_0x39ef85,_0x2b69e9[_0x7fcb('0x64')],_0x2b69e9[_0x7fcb('0x65')],_0x378754);})[_0x7fcb('0x26')](function(_0xd96677){_0x5175b7=_0xd96677;return getTicket(_0x205249,_0x15bdb9,_0x5175b7,_0x39ef85,_0x2b69e9,_0x39ef85[_0x7fcb('0x66')],_0x378754,_0x7fcb('0x5b'));})['then'](function(_0x46dff8){_0x2e26e7=_0x46dff8;logger[_0x7fcb('0x28')](_0x7fcb('0x67'),_0x2e26e7['id']);logger['info']('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x2e26e7['id'],_0x58e878[_0x7fcb('0x52')],_0x205249['type']);switch(_0x205249[_0x7fcb('0x3e')]){case _0x7fcb('0x68'):emit(util['format'](_0x7fcb('0x69'),_0x58e878['name']),'trigger:salesforce:display',{'recordId':_0x2e26e7['id']});break;case _0x7fcb('0x6a'):emit(util['format'](_0x7fcb('0x69'),_0x58e878[_0x7fcb('0x52')]),'trigger:browser:url',{'uri':util[_0x7fcb('0x44')](_0x7fcb('0x6b'),_0x378754[_0x7fcb('0x6c')],_0x2e26e7['id'])});break;default:logger[_0x7fcb('0x6d')](_0x7fcb('0x6e'));}})[_0x7fcb('0x6f')](function(_0xc87eae){logger['error'](_0x7fcb('0x70'),_0xc87eae);});};exports[_0x7fcb('0x71')]=function(_0x3e755a,_0x1f6497,_0x2206b8,_0x3a2d90,_0x27097b,_0x266b71,_0x36b581){var _0x54009a,_0x435a77,_0x1bc9bc,_0x24b479;_0x266b71['serverUrl']=intUtil['stripTrailingSlash'](_0x266b71[_0x7fcb('0x5c')]);_0x266b71[_0x7fcb('0x5e')]=intUtil[_0x7fcb('0x5d')](_0x266b71[_0x7fcb('0x5e')]);if(_0x36b581&&_0x36b581['recordingFormat']&&_0x36b581[_0x7fcb('0x72')]!==_0x7fcb('0x73')){logger[_0x7fcb('0x28')](_0x7fcb('0x74'),_0x7fcb('0x60'));_0x1f6497['recordingURL']=util[_0x7fcb('0x44')](_0x7fcb('0x75'),_0x266b71[_0x7fcb('0x5c')],_0x1f6497['uniqueid'],md5(_0x1f6497[_0x7fcb('0x62')]));}return getConnection(_0x266b71)[_0x7fcb('0x26')](function(_0x2c3cbc){_0x24b479=_0x2c3cbc;return getUser(_0x266b71,_0x3a2d90[_0x7fcb('0x63')],_0x24b479);})[_0x7fcb('0x26')](function(_0x56bd53){_0x54009a=_0x56bd53;return getEndUser(_0x266b71,_0x2206b8,_0x1f6497['destcalleridname'],_0x1f6497['destcalleridnum'],_0x24b479);})[_0x7fcb('0x26')](function(_0x155fcc){_0x435a77=_0x155fcc;return getTicket(_0x266b71,_0x54009a,_0x435a77,_0x2206b8,_0x1f6497,_0x2206b8[_0x7fcb('0x66')],_0x24b479,'outbound');})['then'](function(_0x39763e){_0x1bc9bc=_0x39763e;logger[_0x7fcb('0x28')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x1bc9bc['id']);logger[_0x7fcb('0x28')](_0x7fcb('0x76'),_0x1bc9bc['id'],_0x3a2d90[_0x7fcb('0x52')],_0x266b71[_0x7fcb('0x3e')]);switch(_0x266b71['type']){case _0x7fcb('0x68'):emit(util[_0x7fcb('0x44')](_0x7fcb('0x69'),_0x3a2d90[_0x7fcb('0x52')]),_0x7fcb('0x77'),{'recordId':_0x1bc9bc['id']});break;case _0x7fcb('0x6a'):emit(util['format']('user:%s',_0x3a2d90[_0x7fcb('0x52')]),_0x7fcb('0x78'),{'uri':util[_0x7fcb('0x44')](_0x7fcb('0x6b'),_0x24b479[_0x7fcb('0x6c')],_0x1bc9bc['id'])});break;default:logger['error'](_0x7fcb('0x74'),_0x7fcb('0x79'));}})[_0x7fcb('0x6f')](function(_0x2a8755){logger[_0x7fcb('0x6d')](_0x7fcb('0x74'),_0x2a8755);});};exports[_0x7fcb('0x7a')]=function(_0x60d426,_0x56513a,_0x16db09,_0xb11f3a,_0x1afa0f,_0x59dc19){var _0x3ad350,_0x191503,_0x44e43d,_0x196502;_0x59dc19[_0x7fcb('0x5c')]=intUtil['stripTrailingSlash'](_0x59dc19[_0x7fcb('0x5c')]);_0x59dc19[_0x7fcb('0x5e')]=intUtil[_0x7fcb('0x5d')](_0x59dc19[_0x7fcb('0x5e')]);if(_0x1afa0f&&_0x1afa0f[_0x7fcb('0x5f')]){logger[_0x7fcb('0x28')]('['+_0x56513a[_0x7fcb('0x7b')][_0x7fcb('0x7c')]()+']','Recording\x20is\x20enabled!');_0x56513a[_0x7fcb('0x61')]=util[_0x7fcb('0x44')](_0x7fcb('0x75'),_0x59dc19['serverUrl'],_0x56513a[_0x7fcb('0x62')],md5(_0x56513a[_0x7fcb('0x62')]));}else{_0x56513a[_0x7fcb('0x61')]='';}return getConnection(_0x59dc19)['then'](function(_0x163321){_0x196502=_0x163321;if(!_['isNil'](_0xb11f3a)){return getUser(_0x59dc19,_0xb11f3a[_0x7fcb('0x52')],_0x196502);}else{return getUser(_0x59dc19,null,_0x196502);}})[_0x7fcb('0x26')](function(_0x5e3500){_0x3ad350=_0x5e3500;return getEndUser(_0x59dc19,_0x16db09,_0x56513a[_0x7fcb('0x64')],_0x56513a[_0x7fcb('0x65')],_0x196502);})[_0x7fcb('0x26')](function(_0x90de32){_0x191503=_0x90de32;return getTicket(_0x59dc19,_0x3ad350,_0x191503,_0x16db09,_0x56513a,_0x16db09[_0x7fcb('0x66')],_0x196502);})[_0x7fcb('0x26')](function(_0x7e97ee){_0x44e43d=_0x7e97ee;logger[_0x7fcb('0x28')]('['+_0x56513a['lastevent']['toUpperCase']()+_0x7fcb('0x7d'),_0x44e43d['id']);logger[_0x7fcb('0x28')]('['+_0x56513a[_0x7fcb('0x7b')][_0x7fcb('0x7c')]()+_0x7fcb('0x7e'),_0x59dc19[_0x7fcb('0x3e')]);})[_0x7fcb('0x6f')](function(_0x5123b8){logger['error']('['+_0x56513a['lastevent']['toUpperCase']()+']',_0x5123b8);});};
\ No newline at end of file
+var _0x7021=['./util','../../../../config/environment','../../../../config/logger','salesforce','defaults','redis','localhost','socket.io-emitter','assign','Subjects','getString','Descriptions','ticketType','utc','IsRecurrence','endUserType','lead','WhoId','WhatId','Case','contact','ContactId','account','AccountId','leadId','info','sobject','create','isNil','User','find','then','length','Email','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','cloneDeep','merge','$or','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','execute','additionalSearchContact','Contact','Name','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','format','Caller\x20-\x20%s','<unknown>','Company','No\x20Company','forEach','includes','string','picklist','idField','toString','variable','variableName','customVariable','Variable','name','password','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','uniqueid','email','calleridname','calleridnum','Fields','integrationTab','user:%s','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','recordingFormat','[OUTBOUND]','destcalleridname','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis'];(function(_0x9e575,_0x5894d4){var _0x522277=function(_0x1f5458){while(--_0x1f5458){_0x9e575['push'](_0x9e575['shift']());}};_0x522277(++_0x5894d4);}(_0x7021,0x75));var _0x1702=function(_0x4bacb6,_0x2b299d){_0x4bacb6=_0x4bacb6-0x0;var _0x58c029=_0x7021[_0x4bacb6];return _0x58c029;};'use strict';var _=require(_0x1702('0x0'));var rp=require(_0x1702('0x1'));var moment=require(_0x1702('0x2'));var BPromise=require(_0x1702('0x3'));var md5=require(_0x1702('0x4'));var jsforce=require(_0x1702('0x5'));var util=require(_0x1702('0x6'));var Redis=require(_0x1702('0x7'));var intUtil=require(_0x1702('0x8'));var config=require(_0x1702('0x9'));var logger=require(_0x1702('0xa'))(_0x1702('0xb'));config['redis']=_[_0x1702('0xc')](config[_0x1702('0xd')],{'host':_0x1702('0xe'),'port':0x18eb});var io=require(_0x1702('0xf'))(new Redis(config[_0x1702('0xd')]));function emit(_0x487afb,_0x3d07f2,_0x214b48){io['to'](_0x487afb)['emit'](_0x3d07f2,_0x214b48);}function getTicket(_0x3df9d2,_0x39c1bd,_0x5dc66b,_0x1ea9d2,_0x1600cd,_0xad069f,_0x35138b,_0x1d82bf){var _0x3d483d=Object[_0x1702('0x10')]({},{'OwnerId':_0x39c1bd['id'],'Subject':intUtil['getString'](_0x1ea9d2[_0x1702('0x11')],_0x1600cd,'\x20'),'Description':intUtil[_0x1702('0x12')](_0x1ea9d2[_0x1702('0x13')],_0x1600cd,'\x0a')},getCustomFields(_0xad069f,_0x1600cd));if(_0x5dc66b){if(_0x1ea9d2[_0x1702('0x14')]==='Task'){_0x3d483d['ActivityDate']=moment[_0x1702('0x15')]();_0x3d483d['IsReminderSet']=![];_0x3d483d[_0x1702('0x16')]=![];if(_0x5dc66b[_0x1702('0x17')]==='contact'||_0x5dc66b[_0x1702('0x17')]===_0x1702('0x18')){_0x3d483d[_0x1702('0x19')]=_0x5dc66b['id'];}else if(_0x5dc66b['endUserType']==='account'){_0x3d483d[_0x1702('0x1a')]=_0x5dc66b['id'];}}else if(_0x1ea9d2[_0x1702('0x14')]===_0x1702('0x1b')){if(_0x5dc66b[_0x1702('0x17')]===_0x1702('0x1c')){_0x3d483d[_0x1702('0x1d')]=_0x5dc66b['id'];}else if(_0x5dc66b[_0x1702('0x17')]===_0x1702('0x1e')){_0x3d483d[_0x1702('0x1f')]=_0x5dc66b['id'];}else if(_0x5dc66b[_0x1702('0x17')]===_0x1702('0x18')&&_0x1ea9d2[_0x1702('0x20')]){_0x3d483d[_0x1ea9d2[_0x1702('0x20')]]=_0x5dc66b['id'];}else{logger[_0x1702('0x21')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x35138b[_0x1702('0x22')](_0x1ea9d2[_0x1702('0x14')])[_0x1702('0x23')](_0x3d483d);}function getUser(_0x1b163e,_0x1971c4,_0x203cef){if(!_[_0x1702('0x24')](_0x1971c4)&&intUtil['validateEmail'](_0x1971c4)){var _0x5c7217={'Email':_0x1971c4};var _0xbfd6c0={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x203cef[_0x1702('0x22')](_0x1702('0x25'))[_0x1702('0x26')](_0x5c7217,_0xbfd6c0)['execute']()[_0x1702('0x27')](function(_0x396c1c){if(_0x396c1c[_0x1702('0x28')]){var _0x257e51=_[_0x1702('0x26')](_0x396c1c,function(_0x299b6d){return _0x299b6d[_0x1702('0x29')]===_0x1971c4;});if(_0x257e51){logger[_0x1702('0x21')]('Agent\x20%s\x20found.',_0x1971c4);return BPromise['resolve']({'id':_0x257e51['Id'],'name':_0x257e51['Name']});}}else{logger['info'](_0x1702('0x2a'),_0x1971c4);return _0x203cef[_0x1702('0x2b')]()[_0x1702('0x27')](function(_0x528af1){return BPromise[_0x1702('0x2c')]({'id':_0x528af1[_0x1702('0x2d')],'name':_0x528af1[_0x1702('0x2e')]});});}});}else{logger['info'](_0x1702('0x2a'),_0x1971c4);return _0x203cef['identity']()[_0x1702('0x27')](function(_0x4ef058){return BPromise[_0x1702('0x2c')]({'id':_0x4ef058[_0x1702('0x2d')],'name':_0x4ef058[_0x1702('0x2e')]});});}}function getEndUser(_0x3a9373,_0x328a0f,_0x289bbb,_0x4b6965,_0x28fe4a){var _0x4a5006={'$or':{'Phone':_0x4b6965}};var _0x252b23={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0x1702('0x27')](function(){logger[_0x1702('0x21')](_0x1702('0x2f'),_0x4b6965,_0x328a0f['moduleSearch']);switch(_0x328a0f['moduleSearch']){case'contact_lead':var _0x1f871b=_[_0x1702('0x30')](_0x4a5006);if(_0x328a0f['additionalSearchContact']){var _0x23c8c1={};_0x23c8c1[_0x328a0f['additionalSearchContact']]=_0x4b6965;_[_0x1702('0x31')](_0x1f871b[_0x1702('0x32')],_0x23c8c1);}return _0x28fe4a['sobject']('Contact')['find'](_0x1f871b,_0x252b23)['execute']()[_0x1702('0x27')](function(_0x518b94){if(_0x518b94&&_0x518b94['length']){return _0x518b94;}else{var _0x4d6f0e=_[_0x1702('0x30')](_0x4a5006);if(_0x328a0f[_0x1702('0x33')]){var _0x100843={};_0x100843[_0x328a0f[_0x1702('0x33')]]=_0x4b6965;_['merge'](_0x4d6f0e[_0x1702('0x32')],_0x100843);}return _0x28fe4a['sobject'](_0x1702('0x34'))[_0x1702('0x26')](_0x4d6f0e,_0x252b23);}});case _0x1702('0x35'):var _0x35053c=_[_0x1702('0x30')](_0x4a5006);if(_0x328a0f[_0x1702('0x36')]){var _0x23c8c1={};_0x23c8c1[_0x328a0f[_0x1702('0x36')]]=_0x4b6965;_[_0x1702('0x31')](_0x35053c[_0x1702('0x32')],_0x23c8c1);}return _0x28fe4a[_0x1702('0x22')](_0x1702('0x37'))[_0x1702('0x26')](_0x35053c,_0x252b23)[_0x1702('0x38')]()[_0x1702('0x27')](function(_0x2c160f){if(_0x2c160f&&_0x2c160f[_0x1702('0x28')]){return _0x2c160f;}else{var _0x5093d8=_['cloneDeep'](_0x4a5006);if(_0x328a0f[_0x1702('0x39')]){var _0x3b0475={};_0x3b0475[_0x328a0f[_0x1702('0x39')]]=_0x4b6965;_[_0x1702('0x31')](_0x5093d8['$or'],_0x3b0475);}return _0x28fe4a[_0x1702('0x22')](_0x1702('0x3a'))['find'](_0x5093d8,_0x252b23)['then'](function(_0x4c853b){if(_0x4c853b&&_0x4c853b[_0x1702('0x28')]){return _0x4c853b;}else{var _0x4214b2=_[_0x1702('0x30')](_0x4a5006);if(_0x328a0f[_0x1702('0x33')]){var _0x457e98={};_0x457e98[_0x328a0f[_0x1702('0x33')]]=_0x4b6965;_['merge'](_0x4214b2[_0x1702('0x32')],_0x457e98);}return _0x28fe4a['sobject'](_0x1702('0x34'))[_0x1702('0x26')](_0x4214b2,_0x252b23);}});}});case _0x1702('0x1c'):var _0x1f871b=_[_0x1702('0x30')](_0x4a5006);if(_0x328a0f['additionalSearchContact']){var _0x23c8c1={};_0x23c8c1[_0x328a0f[_0x1702('0x39')]]=_0x4b6965;_[_0x1702('0x31')](_0x1f871b[_0x1702('0x32')],_0x23c8c1);}return _0x28fe4a[_0x1702('0x22')]('Contact')[_0x1702('0x26')](_0x1f871b,_0x252b23)[_0x1702('0x38')]();case'lead':var _0xebc5a3=_[_0x1702('0x30')](_0x4a5006);if(_0x328a0f[_0x1702('0x33')]){var _0x23c8c1={};_0x23c8c1[_0x328a0f[_0x1702('0x33')]]=_0x4b6965;_[_0x1702('0x31')](_0xebc5a3[_0x1702('0x32')],_0x23c8c1);}return _0x28fe4a[_0x1702('0x22')](_0x1702('0x34'))[_0x1702('0x26')](_0xebc5a3,_0x252b23);case _0x1702('0x1e'):var _0x35053c=_[_0x1702('0x30')](_0x4a5006);if(_0x328a0f['additionalSearchAccount']){var _0x23c8c1={};_0x23c8c1[_0x328a0f['additionalSearchAccount']]=_0x4b6965;_['merge'](_0x35053c[_0x1702('0x32')],_0x23c8c1);}return _0x28fe4a[_0x1702('0x22')]('Account')['find'](_0x35053c,_0x252b23);default:return null;}})[_0x1702('0x27')](function(_0x25b6a1){if(_0x25b6a1&&_0x25b6a1['length']){var _0x582947=_['first'](_0x25b6a1);if(_0x582947){return BPromise[_0x1702('0x2c')]({'id':_0x582947['Id'],'name':_0x582947[_0x1702('0x3b')],'phone':_0x582947[_0x1702('0x3c')],'endUserType':_0x582947[_0x1702('0x3d')][_0x1702('0x3e')][_0x1702('0x3f')]()});}}})[_0x1702('0x27')](function(_0x312018){if(_0x312018){logger[_0x1702('0x21')](_0x1702('0x40'),_0x312018[_0x1702('0x17')],_0x4b6965);return BPromise[_0x1702('0x2c')](_0x312018);}else{logger['info'](_0x1702('0x41'),_0x4b6965);var _0x256d9f={'Phone':_0x4b6965};if(_0x328a0f[_0x1702('0x42')]){if(_0x328a0f[_0x1702('0x42')]===_0x1702('0x1c')){logger[_0x1702('0x21')](_0x1702('0x43'),_0x4b6965,_0x328a0f['moduleCreate']);_0x256d9f['LastName']=_0x289bbb!=='<unknown>'?_0x289bbb:util[_0x1702('0x44')](_0x1702('0x45'),_0x4b6965);}else if(_0x328a0f[_0x1702('0x42')]===_0x1702('0x18')){logger[_0x1702('0x21')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4b6965,_0x328a0f[_0x1702('0x42')]);_0x256d9f['LastName']=_0x289bbb!==_0x1702('0x46')?_0x289bbb:util['format'](_0x1702('0x45'),_0x4b6965);_0x256d9f[_0x1702('0x47')]=_0x1702('0x48');}else if(_0x328a0f['moduleCreate']==='account'){logger[_0x1702('0x21')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4b6965,_0x328a0f[_0x1702('0x42')]);_0x256d9f['Name']=_0x289bbb!==_0x1702('0x46')?_0x289bbb:util[_0x1702('0x44')](_0x1702('0x45'),_0x4b6965);}else{return null;}}return _0x28fe4a[_0x1702('0x22')](_['upperFirst'](_0x328a0f[_0x1702('0x42')]))[_0x1702('0x23')](_0x256d9f)[_0x1702('0x27')](function(_0x1d5bc0){return BPromise[_0x1702('0x2c')]({'id':_0x1d5bc0['id'],'endUserType':_0x328a0f['moduleCreate']});});}});}function getCustomFields(_0x8bb3c,_0x4b9e1a){var _0x25b380={};if(_0x8bb3c[_0x1702('0x28')]>0x0){_[_0x1702('0x49')](_0x8bb3c,function(_0x43cb30){if(_[_0x1702('0x4a')]([_0x1702('0x4b'),_0x1702('0x4c')],_0x43cb30[_0x1702('0x3e')])&&_0x43cb30['idField']){_0x25b380[_0x43cb30[_0x1702('0x4d')]]=_0x43cb30['content'][_0x1702('0x4e')]();}else if(_0x43cb30[_0x1702('0x3e')]===_0x1702('0x4f')&&_0x43cb30['variableName']&&_0x43cb30[_0x1702('0x4d')]){_0x4b9e1a[_0x43cb30[_0x1702('0x50')]]&&(_0x25b380[_0x43cb30[_0x1702('0x4d')]]=_0x4b9e1a[_0x43cb30['variableName']][_0x1702('0x4e')]());}else if(_0x43cb30[_0x1702('0x3e')]===_0x1702('0x51')&&_0x43cb30[_0x1702('0x52')]&&_0x43cb30[_0x1702('0x52')]['name']&&_0x43cb30[_0x1702('0x4d')]){_0x4b9e1a[_0x43cb30[_0x1702('0x52')][_0x1702('0x53')]['toLowerCase']()]&&(_0x25b380[_0x43cb30[_0x1702('0x4d')]]=_0x4b9e1a[_0x43cb30[_0x1702('0x52')]['name'][_0x1702('0x3f')]()]['toString']());}});}return _0x25b380;}function getConnection(_0x186f67){var _0x387a91=_0x186f67[_0x1702('0x54')]['concat'](_0x186f67['securityToken']);var _0x2b9f00=new jsforce[(_0x1702('0x55'))]({'oauth2':{'loginUrl':_0x186f67[_0x1702('0x56')]||_0x1702('0x57'),'clientId':_0x186f67[_0x1702('0x58')],'clientSecret':_0x186f67[_0x1702('0x59')]}});return _0x2b9f00[_0x1702('0x5a')](_0x186f67[_0x1702('0x5b')],_0x387a91)[_0x1702('0x27')](function(){logger[_0x1702('0x21')](_0x1702('0x5c'));return _0x2b9f00;});}exports[_0x1702('0x5d')]=function(_0x42889a,_0xec15dc,_0x405579,_0x20c3a1,_0x4609de,_0x3d8ef9){var _0x4d2787,_0x1dae85,_0x3aef86,_0x370a74;_0x3d8ef9[_0x1702('0x5e')]=intUtil['stripTrailingSlash'](_0x3d8ef9[_0x1702('0x5e')]);_0x3d8ef9[_0x1702('0x56')]=intUtil[_0x1702('0x5f')](_0x3d8ef9['remoteUri']);if(_0x4609de&&_0x4609de['monitor_format']){logger[_0x1702('0x21')](_0x1702('0x60'),'Recording\x20is\x20enabled!');_0xec15dc[_0x1702('0x61')]=util[_0x1702('0x44')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3d8ef9[_0x1702('0x5e')],_0xec15dc[_0x1702('0x62')],md5(_0xec15dc['uniqueid']));}else{_0xec15dc[_0x1702('0x61')]='';}return getConnection(_0x3d8ef9)[_0x1702('0x27')](function(_0x223658){_0x370a74=_0x223658;return getUser(_0x3d8ef9,_0x20c3a1[_0x1702('0x63')],_0x370a74);})[_0x1702('0x27')](function(_0x1315fe){_0x4d2787=_0x1315fe;return getEndUser(_0x3d8ef9,_0x405579,_0xec15dc[_0x1702('0x64')],_0xec15dc[_0x1702('0x65')],_0x370a74);})[_0x1702('0x27')](function(_0x5595eb){_0x1dae85=_0x5595eb;return getTicket(_0x3d8ef9,_0x4d2787,_0x1dae85,_0x405579,_0xec15dc,_0x405579[_0x1702('0x66')],_0x370a74,_0x1702('0x5d'));})[_0x1702('0x27')](function(_0x1c0c0e){_0x3aef86=_0x1c0c0e;logger[_0x1702('0x21')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x3aef86['id']);logger['info']('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x3aef86['id'],_0x20c3a1[_0x1702('0x53')],_0x3d8ef9[_0x1702('0x3e')]);switch(_0x3d8ef9[_0x1702('0x3e')]){case _0x1702('0x67'):emit(util['format'](_0x1702('0x68'),_0x20c3a1[_0x1702('0x53')]),'trigger:salesforce:display',{'recordId':_0x3aef86['id']});break;case _0x1702('0x69'):emit(util[_0x1702('0x44')](_0x1702('0x68'),_0x20c3a1[_0x1702('0x53')]),_0x1702('0x6a'),{'uri':util['format'](_0x1702('0x6b'),_0x370a74[_0x1702('0x6c')],_0x3aef86['id'])});break;default:logger[_0x1702('0x6d')](_0x1702('0x6e'));}})[_0x1702('0x6f')](function(_0x25b668){logger[_0x1702('0x6d')](_0x1702('0x60'),_0x25b668);});};exports['outbound']=function(_0x459aa1,_0x2d8f90,_0x4c0f1f,_0x27c4ed,_0x4f3a5a,_0x4ebe6b,_0xb3fae4){var _0x23040a,_0x439a55,_0x2b05ea,_0xe00ba6;_0x4ebe6b[_0x1702('0x5e')]=intUtil[_0x1702('0x5f')](_0x4ebe6b[_0x1702('0x5e')]);_0x4ebe6b['remoteUri']=intUtil[_0x1702('0x5f')](_0x4ebe6b['remoteUri']);if(_0xb3fae4&&_0xb3fae4[_0x1702('0x70')]&&_0xb3fae4[_0x1702('0x70')]!=='none'){logger[_0x1702('0x21')](_0x1702('0x71'),'Recording\x20is\x20enabled!');_0x2d8f90[_0x1702('0x61')]=util[_0x1702('0x44')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4ebe6b[_0x1702('0x5e')],_0x2d8f90[_0x1702('0x62')],md5(_0x2d8f90[_0x1702('0x62')]));}return getConnection(_0x4ebe6b)[_0x1702('0x27')](function(_0xf82a05){_0xe00ba6=_0xf82a05;return getUser(_0x4ebe6b,_0x27c4ed['email'],_0xe00ba6);})[_0x1702('0x27')](function(_0x2736f1){_0x23040a=_0x2736f1;return getEndUser(_0x4ebe6b,_0x4c0f1f,_0x2d8f90[_0x1702('0x72')],_0x2d8f90['destcalleridnum'],_0xe00ba6);})[_0x1702('0x27')](function(_0x2bf310){_0x439a55=_0x2bf310;return getTicket(_0x4ebe6b,_0x23040a,_0x439a55,_0x4c0f1f,_0x2d8f90,_0x4c0f1f[_0x1702('0x66')],_0xe00ba6,_0x1702('0x73'));})[_0x1702('0x27')](function(_0x334045){_0x2b05ea=_0x334045;logger[_0x1702('0x21')](_0x1702('0x74'),_0x2b05ea['id']);logger[_0x1702('0x21')](_0x1702('0x75'),_0x2b05ea['id'],_0x27c4ed[_0x1702('0x53')],_0x4ebe6b[_0x1702('0x3e')]);switch(_0x4ebe6b['type']){case'integrationTab':emit(util[_0x1702('0x44')](_0x1702('0x68'),_0x27c4ed['name']),'trigger:salesforce:display',{'recordId':_0x2b05ea['id']});break;case _0x1702('0x69'):emit(util[_0x1702('0x44')](_0x1702('0x68'),_0x27c4ed[_0x1702('0x53')]),_0x1702('0x6a'),{'uri':util[_0x1702('0x44')](_0x1702('0x6b'),_0xe00ba6[_0x1702('0x6c')],_0x2b05ea['id'])});break;default:logger[_0x1702('0x6d')](_0x1702('0x71'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x1702('0x6f')](function(_0x368ff2){logger['error'](_0x1702('0x71'),_0x368ff2);});};exports[_0x1702('0x76')]=function(_0x5e9ba1,_0x40c354,_0x2edc63,_0x423a21,_0x487f32,_0x1303f3){var _0x38b5cb,_0x5124a7,_0x3eaf21,_0x322cae;_0x1303f3[_0x1702('0x5e')]=intUtil[_0x1702('0x5f')](_0x1303f3[_0x1702('0x5e')]);_0x1303f3[_0x1702('0x56')]=intUtil[_0x1702('0x5f')](_0x1303f3[_0x1702('0x56')]);if(_0x487f32&&_0x487f32[_0x1702('0x77')]){logger[_0x1702('0x21')]('['+_0x40c354[_0x1702('0x78')][_0x1702('0x79')]()+']',_0x1702('0x7a'));_0x40c354[_0x1702('0x61')]=util[_0x1702('0x44')](_0x1702('0x7b'),_0x1303f3['serverUrl'],_0x40c354[_0x1702('0x62')],md5(_0x40c354[_0x1702('0x62')]));}else{_0x40c354[_0x1702('0x61')]='';}return getConnection(_0x1303f3)[_0x1702('0x27')](function(_0xdef081){_0x322cae=_0xdef081;if(!_['isNil'](_0x423a21)){return getUser(_0x1303f3,_0x423a21[_0x1702('0x53')],_0x322cae);}else{return getUser(_0x1303f3,null,_0x322cae);}})[_0x1702('0x27')](function(_0x21cf86){_0x38b5cb=_0x21cf86;return getEndUser(_0x1303f3,_0x2edc63,_0x40c354['calleridname'],_0x40c354['calleridnum'],_0x322cae);})['then'](function(_0x425601){_0x5124a7=_0x425601;return getTicket(_0x1303f3,_0x38b5cb,_0x5124a7,_0x2edc63,_0x40c354,_0x2edc63[_0x1702('0x66')],_0x322cae);})[_0x1702('0x27')](function(_0x172763){_0x3eaf21=_0x172763;logger[_0x1702('0x21')]('['+_0x40c354['lastevent'][_0x1702('0x79')]()+']\x20Ticket\x20%s\x20created.',_0x3eaf21['id']);logger['info']('['+_0x40c354[_0x1702('0x78')][_0x1702('0x79')]()+_0x1702('0x7c'),_0x1303f3['type']);})[_0x1702('0x6f')](function(_0x4af640){logger[_0x1702('0x6d')]('['+_0x40c354[_0x1702('0x78')]['toUpperCase']()+']',_0x4af640);});};
\ No newline at end of file
index dc83fb9..a7ba7a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4426=['Subjects','getString','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','Incident','Incident\x20-\x20',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','all','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','trigger:browser:url','username','password','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','outbound','destcalleridnum','calleridnum','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','info','],\x20getUser\x20input\x20crm','validateEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','true','userId','sys_id','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','userEmail','adminEmail','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','length','],\x20createEndUser\x20crm','forEach','includes','string','type','nameField','customField','toLowerCase','content','toString','idField','variableName','Variable','name',']\x20getTicket\x20input\x20crm','assign'];(function(_0x2923bb,_0x1dcaa2){var _0x4d0d8a=function(_0x8c3d00){while(--_0x8c3d00){_0x2923bb['push'](_0x2923bb['shift']());}};_0x4d0d8a(++_0x1dcaa2);}(_0x4426,0x159));var _0x6442=function(_0x173def,_0x4446ef){_0x173def=_0x173def-0x0;var _0xa92db9=_0x4426[_0x173def];return _0xa92db9;};'use strict';var _=require('lodash');var Promise=require(_0x6442('0x0'));var rp=require(_0x6442('0x1'));var util=require(_0x6442('0x2'));var md5=require('md5');var Redis=require(_0x6442('0x3'));var intUtil=require(_0x6442('0x4'));var config=require(_0x6442('0x5'));var logger=require(_0x6442('0x6'))(_0x6442('0x7'));config[_0x6442('0x8')]=_[_0x6442('0x9')](config[_0x6442('0x8')],{'host':_0x6442('0xa'),'port':0x18eb});var io=require(_0x6442('0xb'))(new Redis(config[_0x6442('0x8')]));function getAdminUser(_0x23022b,_0x2e88de,_0x53b78d,_0x399e3c,_0x561c5c,_0x5b07f2){return new Promise(function(_0x59da6b,_0x1b3de7){var _0x31934f={'method':_0x6442('0xc'),'uri':_0x399e3c+_0x6442('0xd')+'&'+_0x561c5c+'&'+_0x5b07f2,'auth':_0x2e88de,'json':!![]};return rp(_0x31934f)[_0x6442('0xe')](function(_0x584b5b){if(_0x584b5b[_0x6442('0xf')]['length']>0x0){_0x53b78d[_0x6442('0x10')]=_0x584b5b['result'][0x0]['sys_id'];}logger['info']('['+[_0x23022b[_0x6442('0x11')]()]+_0x6442('0x12'),_0x53b78d);_0x59da6b(_0x53b78d);})[_0x6442('0x13')](function(_0x21a3f9){logger[_0x6442('0x14')]('['+[_0x23022b[_0x6442('0x11')]()]+']',_0x21a3f9[_0x6442('0x15')]);_0x1b3de7(_0x21a3f9[_0x6442('0x15')]);});});}function getUser(_0x182d77,_0x1fccb,_0x1af663,_0x344e15,_0x4bb388){return function(_0x28b160){logger[_0x6442('0x16')]('['+[_0x182d77[_0x6442('0x11')]()]+_0x6442('0x17'),_0x28b160);return new Promise(function(_0x408393,_0x1a9dd5){if(intUtil[_0x6442('0x18')](_0x28b160['userEmail'])){var _0x3b8104={'method':_0x6442('0xc'),'uri':_0x1af663+_0x6442('0x19')+_0x28b160['userEmail']+'&'+_0x344e15+'&'+_0x4bb388,'auth':_0x1fccb,'json':!![]};logger[_0x6442('0x16')]('['+[_0x182d77[_0x6442('0x11')]()]+_0x6442('0x1a'),_0x3b8104);return rp(_0x3b8104)['then'](function(_0x23e59f){logger[_0x6442('0x16')]('['+[_0x182d77[_0x6442('0x11')]()]+'],\x20getUser\x20entity',_0x23e59f);if(_0x23e59f[_0x6442('0xf')]['length']>0x0&&String(_0x23e59f[_0x6442('0xf')][0x0][_0x6442('0x1b')])===_0x6442('0x1c')){_0x28b160[_0x6442('0x1d')]=_0x23e59f[_0x6442('0xf')][0x0][_0x6442('0x1e')];}else{_0x28b160[_0x6442('0x1d')]=_0x28b160[_0x6442('0x10')];_0x28b160['userEmail']=_0x28b160['adminEmail'];}logger[_0x6442('0x16')]('['+[_0x182d77['toUpperCase']()]+_0x6442('0x1f'),_0x28b160);_0x408393(_0x28b160);})[_0x6442('0x13')](function(_0xeb36f5){logger[_0x6442('0x14')]('['+[_0x182d77[_0x6442('0x11')]()]+']',_0xeb36f5[_0x6442('0x15')]);_0x1a9dd5(_0xeb36f5[_0x6442('0x15')]);});}else{logger[_0x6442('0x16')]('['+[_0x182d77['toUpperCase']()]+_0x6442('0x20'));_0x28b160[_0x6442('0x1d')]=_0x28b160[_0x6442('0x10')];_0x28b160[_0x6442('0x21')]=_0x28b160[_0x6442('0x22')];_0x408393(_0x28b160);}});};}function createEndUser(_0x19f590,_0x1369f9,_0x5794f6,_0x2916cf,_0x501101){logger[_0x6442('0x16')]('['+[_0x19f590[_0x6442('0x11')]()]+'],\x20createEndUser\x20input\x20crm',_0x5794f6);return new Promise(function(_0x4aeab2,_0x30373b){var _0x866c1f={'method':_0x6442('0x23'),'uri':_0x2916cf+_0x6442('0x24')+_0x501101,'body':{'user_name':_0x5794f6[_0x6442('0x25')],'roles':_0x6442('0x26'),'first_name':_0x5794f6[_0x6442('0x25')],'active':_0x6442('0x1c'),'date_format':_0x6442('0x27'),'phone':_0x5794f6[_0x6442('0x25')]},'auth':_0x1369f9,'json':!![]};return rp(_0x866c1f)[_0x6442('0xe')](function(_0x3dd908){logger[_0x6442('0x16')]('['+[_0x19f590[_0x6442('0x11')]()]+_0x6442('0x28'),_0x3dd908['result']);_0x5794f6[_0x6442('0x29')]=_0x3dd908[_0x6442('0xf')][_0x6442('0x1e')];_0x4aeab2(_0x5794f6);})[_0x6442('0x13')](function(_0x96f618){logger[_0x6442('0x14')]('['+[_0x19f590[_0x6442('0x11')]()]+']',_0x96f618['message']);_0x30373b(_0x96f618[_0x6442('0x15')]);});});}function getEndUser(_0x248448,_0x504cf7,_0x3caaa5,_0x43c559,_0x36f619){return function(_0x21c993){logger[_0x6442('0x16')]('['+[_0x248448[_0x6442('0x11')]()]+'],\x20getEndUser\x20input\x20crm',_0x21c993);return new Promise(function(_0x1ca6c9,_0x22df17){var _0x1f3022={'method':'GET','uri':_0x3caaa5+'sys_user?sysparm_query=phone%3D'+_0x21c993[_0x6442('0x25')]+'&'+_0x43c559+'&'+_0x36f619,'auth':_0x504cf7,'json':!![]};return rp(_0x1f3022)[_0x6442('0xe')](function(_0x1e854e){if(_0x1e854e['result'][_0x6442('0x2a')]>0x0){_0x21c993[_0x6442('0x29')]=_0x1e854e[_0x6442('0xf')][0x0][_0x6442('0x1e')];logger[_0x6442('0x16')]('['+[_0x248448[_0x6442('0x11')]()]+'],\x20getEndUser\x20crm',_0x21c993);_0x1ca6c9(_0x21c993);}else{return createEndUser(_0x248448,_0x504cf7,_0x21c993,_0x3caaa5,_0x43c559)['then'](function(_0x49ffd4){logger[_0x6442('0x16')]('['+[_0x248448['toUpperCase']()]+_0x6442('0x2b'),_0x49ffd4);_0x1ca6c9(_0x49ffd4);});}})['catch'](function(_0x592d44){logger[_0x6442('0x14')]('['+[_0x248448[_0x6442('0x11')]()]+']',_0x592d44[_0x6442('0x15')]);_0x22df17(_0x592d44[_0x6442('0x15')]);});});};}function getCustomFields(_0x21be23,_0x334af1){var _0x978370={};if(_0x21be23[_0x6442('0x2a')]>0x0){_[_0x6442('0x2c')](_0x21be23,function(_0x2d6d0e){if(_[_0x6442('0x2d')]([_0x6442('0x2e'),'picklist'],_0x2d6d0e[_0x6442('0x2f')])&&_0x2d6d0e[_0x6442('0x30')]&&!_0x2d6d0e[_0x6442('0x31')]){_0x978370[_0x2d6d0e[_0x6442('0x30')][_0x6442('0x32')]()]=_0x2d6d0e[_0x6442('0x33')][_0x6442('0x34')]();}else if(_['includes']([_0x6442('0x2e'),'picklist'],_0x2d6d0e['type'])&&_0x2d6d0e[_0x6442('0x35')]&&_0x2d6d0e['customField']){_0x978370[_0x2d6d0e[_0x6442('0x35')][_0x6442('0x32')]()]=_0x2d6d0e[_0x6442('0x33')]['toString']();}else if(_0x2d6d0e['type']==='variable'&&_0x2d6d0e['variableName']&&_0x2d6d0e['idField']&&_0x2d6d0e[_0x6442('0x31')]){_0x978370[_0x2d6d0e[_0x6442('0x35')][_0x6442('0x32')]()]=_0x334af1[_0x2d6d0e[_0x6442('0x36')]]['toString']();}else if(_0x2d6d0e['type']==='customVariable'&&_0x2d6d0e[_0x6442('0x37')]&&_0x2d6d0e[_0x6442('0x37')][_0x6442('0x38')]&&_0x2d6d0e[_0x6442('0x35')]&&_0x2d6d0e[_0x6442('0x31')]){_0x978370[_0x2d6d0e[_0x6442('0x35')][_0x6442('0x32')]()]=_0x334af1[_0x2d6d0e['Variable'][_0x6442('0x38')][_0x6442('0x32')]()][_0x6442('0x34')]();}});}return _0x978370;}function getTicket(_0x1ba512,_0x2ab66e,_0x1ef3cc,_0x1cae7b,_0x2f7ed6,_0x41ed95){return function(_0x2af53d){logger[_0x6442('0x16')]('['+[_0x1ba512['toUpperCase']()]+_0x6442('0x39'),_0x2af53d);return new Promise(function(_0x44038d,_0x46ba9a){var _0x43f0f8=_0x1ba512['toLowerCase']()==='outbound'?_0x2af53d[_0x6442('0x1d')]:_0x2af53d['endUserId'];var _0x57454c={'method':'POST','uri':_0x1ef3cc+'incident'+'?'+_0x41ed95,'body':Object[_0x6442('0x3a')]({},{'active':_0x6442('0x1c'),'caller_id':_0x43f0f8,'assigned_to':_0x2af53d[_0x6442('0x1d')],'short_description':intUtil['getString'](_0x1cae7b[_0x6442('0x3b')],_0x2f7ed6,'\x20'),'description':intUtil[_0x6442('0x3c')](_0x1cae7b['Descriptions'],_0x2f7ed6,'\x0a')},getCustomFields(_0x1cae7b['Fields'],_0x2f7ed6)),'auth':_0x2ab66e,'json':!![]};return rp(_0x57454c)['then'](function(_0x4eedce){logger[_0x6442('0x16')]('['+[_0x1ba512['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x4eedce['result']);_0x2af53d[_0x6442('0x3d')]=_0x4eedce[_0x6442('0xf')][_0x6442('0x1e')];_0x2af53d[_0x6442('0x3e')]=_0x4eedce[_0x6442('0xf')][_0x6442('0x3f')];logger[_0x6442('0x16')]('['+[_0x1ba512[_0x6442('0x11')]()]+_0x6442('0x40'),_0x2af53d);_0x44038d(_0x2af53d);})[_0x6442('0x13')](function(_0x372732){logger[_0x6442('0x14')]('['+[_0x1ba512[_0x6442('0x11')]()]+']',_0x372732[_0x6442('0x15')]);_0x46ba9a(_0x372732[_0x6442('0x15')]);});});};}function createRemoteTag(_0x9c2e1,_0x58b99f,_0x1c1bd4,_0x110878){return new Promise(function(_0x568dad,_0x157d37){var _0x5bd302={'method':'POST','uri':_0x1c1bd4+_0x6442('0x41')+'?'+_0x110878,'body':{'short_description':_0x9c2e1,'global':!![],'active':!![],'name':_0x9c2e1},'auth':_0x58b99f,'json':!![]};return rp(_0x5bd302)[_0x6442('0xe')](function(_0x1df82d){var _0x357598=_0x1df82d[_0x6442('0xf')][_0x6442('0x1e')];_0x568dad(_0x357598);});});}function getRemoteTag(_0x2ecf1a,_0x465f7b,_0x445248,_0xd12e86,_0x17b225){return new Promise(function(_0x484abc,_0x4efba2){var _0x54b5a9={'method':'GET','uri':_0x445248+'label'+'?sysparm_query=name%3D'+_0x2ecf1a+'&'+_0xd12e86,'auth':_0x465f7b,'json':!![]};return rp(_0x54b5a9)['then'](function(_0x161422){if(_0x161422['result']['length']>0x0){var _0x4912ac=_0x161422['result'][0x0][_0x6442('0x1e')];_0x484abc(_0x4912ac);}else{return createRemoteTag(_0x2ecf1a,_0x465f7b,_0x445248,_0xd12e86)[_0x6442('0xe')](function(_0xb3a2c){_0x484abc(_0xb3a2c);});}});});}function assignTagToIncident(_0x1989d6,_0x515644,_0x25a630,_0x4568aa,_0xf8eed8){return new Promise(function(_0x18a457,_0xe7c2d1){var _0xf7ca2f={'method':_0x6442('0x23'),'uri':_0x25a630+'label_entry'+'?'+_0xf8eed8,'body':{'label':_0x1989d6,'table':'incident','id_type':_0x6442('0x42'),'table_key':_0x4568aa[_0x6442('0x3d')],'title':_0x6442('0x43')+_0x4568aa['ticketNumber'],'id_display':_0x4568aa[_0x6442('0x3e')]},'auth':_0x515644,'json':!![]};return rp(_0xf7ca2f)[_0x6442('0xe')](function(_0x532c70){_0x18a457();})[_0x6442('0x13')](function(){_0x18a457();});});}function manageTags(_0x52489d,_0x2fee13,_0x58ca8e,_0xafd9bd,_0x1df1cf,_0x321217,_0x15f7b0){return new Promise(function(_0xe0432e,_0x27c613){var _0xa627a1=[];_0x2fee13['forEach'](function(_0x1792b){_0xa627a1['push'](getRemoteTag(_0x1792b,_0x58ca8e,_0xafd9bd,_0x321217,_0x15f7b0));});return Promise['all'](_0xa627a1)['then'](function(_0x73ba51){if(_0x73ba51['length']){logger[_0x6442('0x16')]('['+[_0x52489d[_0x6442('0x11')]()]+_0x6442('0x44'),_0x73ba51);var _0x5ca531=[];_0x73ba51[_0x6442('0x2c')](function(_0x5504d7){_0x5ca531[_0x6442('0x45')](assignTagToIncident(_0x5504d7,_0x58ca8e,_0xafd9bd,_0x1df1cf,_0x321217));});return Promise[_0x6442('0x46')](_0x5ca531)[_0x6442('0xe')](function(){_0xe0432e();})[_0x6442('0x13')](function(){_0xe0432e();});}else{_0xe0432e();}});});}function getTags(_0x576da3,_0x26099e,_0x278113,_0x420f41,_0x12de40,_0x504763){return function(_0x5a24e3){return new Promise(function(_0x33e0c6,_0x1f82ee){var _0x16d614=[];var _0x182306=_0x420f41['Tags'];if(_0x182306&&_0x182306[_0x6442('0x2a')]>0x0){_0x16d614=_[_0x6442('0x47')](_0x182306,'name');}if(_0x16d614['length']>0x0){return manageTags(_0x576da3,_0x16d614,_0x26099e,_0x278113,_0x5a24e3,_0x12de40,_0x504763)[_0x6442('0xe')](function(){_0x33e0c6(_0x5a24e3);});}else{_0x33e0c6(_0x5a24e3);}});};}function emit(_0x2a1a1d,_0x53b9c0,_0x46ce36){var _0x42a67b=_0x6442('0x48')+_0x6442('0x49')+_0x6442('0x4a')+'%255EORDERBYDESCnumber';var _0x2af9a1={'uri':_0x2a1a1d+_0x6442('0x4b')+_0x46ce36+_0x42a67b};io['to'](util[_0x6442('0x4c')]('user:%s',_0x53b9c0))['emit'](_0x6442('0x4d'),_0x2af9a1);}exports['cs']=function(_0xdaaf9d,_0x11a174,_0x3bdf57,_0x127e75,_0x2410dc,_0x457f8d,_0x5e8acb,_0x1f4ce8){var _0x53ea1f={};var _0xcefc62={'user':_0x457f8d[_0x6442('0x4e')],'pass':_0x457f8d[_0x6442('0x4f')]};var _0x447814='sysparm_limit=1';var _0xa34144=_0x6442('0x50');_0x457f8d[_0x6442('0x51')]=intUtil[_0x6442('0x52')](_0x457f8d['remoteUri']);_0x457f8d[_0x6442('0x53')]=intUtil[_0x6442('0x52')](_0x457f8d[_0x6442('0x53')]);var _0x25e03b=util['format'](_0x6442('0x54'),_0x457f8d[_0x6442('0x51')]);_0x53ea1f[_0x6442('0x21')]=!_[_0x6442('0x55')](_0x127e75)?_0x127e75[_0x6442('0x56')]:null;_0x53ea1f[_0x6442('0x22')]=_0x457f8d['email'];_0x53ea1f[_0x6442('0x25')]=_0x1f4ce8['toLowerCase']()===_0x6442('0x57')?_0x11a174[_0x6442('0x58')]:_0x11a174[_0x6442('0x59')];_0x53ea1f['callDirection']=_0x1f4ce8===_0x6442('0x5a')||_0x1f4ce8===_0x6442('0x5b')?_0x6442('0x5a'):'outbound';var _0x1f454e=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x457f8d[_0x6442('0x53')],_0x11a174[_0x6442('0x5c')],md5(_0x11a174[_0x6442('0x5c')]));if(_0x2410dc&&_0x2410dc[_0x6442('0x5d')]){logger[_0x6442('0x16')](_0x6442('0x5e'),_0x6442('0x5f'));_0x11a174['recordingURL']=_0x1f454e;}else if(_0x5e8acb&&_0x5e8acb[_0x6442('0x60')]&&_0x5e8acb['recordingFormat']!==_0x6442('0x61')){logger[_0x6442('0x16')]('[OUTBOUND]',_0x6442('0x5f'));_0x11a174['recordingURL']=_0x1f454e;}else{_0x11a174[_0x6442('0x62')]='';}return getAdminUser(_0x1f4ce8,_0xcefc62,_0x53ea1f,_0x25e03b,_0xa34144,_0x447814)[_0x6442('0xe')](getUser(_0x1f4ce8,_0xcefc62,_0x25e03b,_0xa34144,_0x447814))[_0x6442('0xe')](getEndUser(_0x1f4ce8,_0xcefc62,_0x25e03b,_0xa34144,_0x447814))[_0x6442('0xe')](getTicket(_0x1f4ce8,_0xcefc62,_0x25e03b,_0x3bdf57,_0x11a174,_0xa34144))[_0x6442('0xe')](function(_0x3376b4){logger[_0x6442('0x16')](util['format'](_0x6442('0x63'),_0x3376b4[_0x6442('0x3d')]));logger[_0x6442('0x16')](util[_0x6442('0x4c')]('call\x20direction:\x20%s',_0x1f4ce8));if(_0x1f4ce8!=='unmanaged'){logger['info']('['+[_0x1f4ce8[_0x6442('0x11')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x457f8d[_0x6442('0x51')],_0x127e75[_0x6442('0x38')],_0x3376b4['ticketId']);}})[_0x6442('0x13')](function(_0x4a149e){logger[_0x6442('0x14')]('['+[_0x1f4ce8[_0x6442('0x11')]()]+_0x6442('0x64'),util['inspect'](_0x4a149e,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xff43=['sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminId','POST','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','idField','content','variable','variableName','toString','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','trigger:browser:url','username','sysparm_limit=1','remoteUri','serverUrl','stripTrailingSlash','format','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','uniqueid','monitor_format','[QUEUE]','recordingURL','none','Recording\x20is\x20enabled!','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xff43,0x13d));var _0x3ff4=function(_0xf03c6d,_0x49a4b8){_0xf03c6d=_0xf03c6d-0x0;var _0x3bb83d=_0xff43[_0xf03c6d];return _0x3bb83d;};'use strict';var _=require('lodash');var Promise=require(_0x3ff4('0x0'));var rp=require(_0x3ff4('0x1'));var util=require(_0x3ff4('0x2'));var md5=require(_0x3ff4('0x3'));var Redis=require(_0x3ff4('0x4'));var intUtil=require(_0x3ff4('0x5'));var config=require(_0x3ff4('0x6'));var logger=require(_0x3ff4('0x7'))('servicenow');config[_0x3ff4('0x8')]=_[_0x3ff4('0x9')](config[_0x3ff4('0x8')],{'host':_0x3ff4('0xa'),'port':0x18eb});var io=require(_0x3ff4('0xb'))(new Redis(config['redis']));function getAdminUser(_0x4202ab,_0x4d0f2c,_0x413435,_0x4d03ae,_0x50d655,_0x30c3e7){return new Promise(function(_0x2c60da,_0x193706){var _0x2ebdbb={'method':_0x3ff4('0xc'),'uri':_0x4d03ae+_0x3ff4('0xd')+'&'+_0x50d655+'&'+_0x30c3e7,'auth':_0x4d0f2c,'json':!![]};return rp(_0x2ebdbb)[_0x3ff4('0xe')](function(_0x47f1d8){if(_0x47f1d8[_0x3ff4('0xf')][_0x3ff4('0x10')]>0x0){_0x413435['adminId']=_0x47f1d8[_0x3ff4('0xf')][0x0][_0x3ff4('0x11')];}logger[_0x3ff4('0x12')]('['+[_0x4202ab[_0x3ff4('0x13')]()]+_0x3ff4('0x14'),_0x413435);_0x2c60da(_0x413435);})[_0x3ff4('0x15')](function(_0x26e123){logger[_0x3ff4('0x16')]('['+[_0x4202ab[_0x3ff4('0x13')]()]+']',_0x26e123[_0x3ff4('0x17')]);_0x193706(_0x26e123[_0x3ff4('0x17')]);});});}function getUser(_0x2723a5,_0x44da26,_0x2b81e9,_0x31842e,_0x98b4f6){return function(_0x5b5f96){logger[_0x3ff4('0x12')]('['+[_0x2723a5[_0x3ff4('0x13')]()]+_0x3ff4('0x18'),_0x5b5f96);return new Promise(function(_0x87d6e2,_0x3ab795){if(intUtil[_0x3ff4('0x19')](_0x5b5f96[_0x3ff4('0x1a')])){var _0x3014c0={'method':_0x3ff4('0xc'),'uri':_0x2b81e9+_0x3ff4('0x1b')+_0x5b5f96[_0x3ff4('0x1a')]+'&'+_0x31842e+'&'+_0x98b4f6,'auth':_0x44da26,'json':!![]};logger[_0x3ff4('0x12')]('['+[_0x2723a5[_0x3ff4('0x13')]()]+_0x3ff4('0x1c'),_0x3014c0);return rp(_0x3014c0)[_0x3ff4('0xe')](function(_0x52c084){logger[_0x3ff4('0x12')]('['+[_0x2723a5[_0x3ff4('0x13')]()]+_0x3ff4('0x1d'),_0x52c084);if(_0x52c084['result'][_0x3ff4('0x10')]>0x0&&String(_0x52c084[_0x3ff4('0xf')][0x0]['active'])===_0x3ff4('0x1e')){_0x5b5f96[_0x3ff4('0x1f')]=_0x52c084[_0x3ff4('0xf')][0x0][_0x3ff4('0x11')];}else{_0x5b5f96[_0x3ff4('0x1f')]=_0x5b5f96['adminId'];_0x5b5f96[_0x3ff4('0x1a')]=_0x5b5f96[_0x3ff4('0x20')];}logger[_0x3ff4('0x12')]('['+[_0x2723a5[_0x3ff4('0x13')]()]+_0x3ff4('0x21'),_0x5b5f96);_0x87d6e2(_0x5b5f96);})[_0x3ff4('0x15')](function(_0x46c185){logger[_0x3ff4('0x16')]('['+[_0x2723a5['toUpperCase']()]+']',_0x46c185[_0x3ff4('0x17')]);_0x3ab795(_0x46c185['message']);});}else{logger[_0x3ff4('0x12')]('['+[_0x2723a5[_0x3ff4('0x13')]()]+_0x3ff4('0x22'));_0x5b5f96[_0x3ff4('0x1f')]=_0x5b5f96[_0x3ff4('0x23')];_0x5b5f96[_0x3ff4('0x1a')]=_0x5b5f96[_0x3ff4('0x20')];_0x87d6e2(_0x5b5f96);}});};}function createEndUser(_0x3aca8a,_0x3c2c13,_0x455c62,_0x548a33,_0x14e7b9){logger[_0x3ff4('0x12')]('['+[_0x3aca8a[_0x3ff4('0x13')]()]+'],\x20createEndUser\x20input\x20crm',_0x455c62);return new Promise(function(_0x19661a,_0x2a9c04){var _0x354d55={'method':_0x3ff4('0x24'),'uri':_0x548a33+_0x3ff4('0x25')+_0x14e7b9,'body':{'user_name':_0x455c62[_0x3ff4('0x26')],'roles':'user','first_name':_0x455c62['endUserNumber'],'active':_0x3ff4('0x1e'),'date_format':_0x3ff4('0x27'),'phone':_0x455c62[_0x3ff4('0x26')]},'auth':_0x3c2c13,'json':!![]};return rp(_0x354d55)[_0x3ff4('0xe')](function(_0x31546e){logger['info']('['+[_0x3aca8a['toUpperCase']()]+_0x3ff4('0x28'),_0x31546e[_0x3ff4('0xf')]);_0x455c62[_0x3ff4('0x29')]=_0x31546e[_0x3ff4('0xf')]['sys_id'];_0x19661a(_0x455c62);})[_0x3ff4('0x15')](function(_0x2404da){logger[_0x3ff4('0x16')]('['+[_0x3aca8a[_0x3ff4('0x13')]()]+']',_0x2404da['message']);_0x2a9c04(_0x2404da['message']);});});}function getEndUser(_0x3c1df3,_0x5d41af,_0xb1b178,_0x288fde,_0x4d9380){return function(_0x2b31da){logger[_0x3ff4('0x12')]('['+[_0x3c1df3[_0x3ff4('0x13')]()]+_0x3ff4('0x2a'),_0x2b31da);return new Promise(function(_0xc4abcc,_0x6d300c){var _0x38134={'method':_0x3ff4('0xc'),'uri':_0xb1b178+_0x3ff4('0x2b')+_0x2b31da['endUserNumber']+'&'+_0x288fde+'&'+_0x4d9380,'auth':_0x5d41af,'json':!![]};return rp(_0x38134)[_0x3ff4('0xe')](function(_0x21346a){if(_0x21346a[_0x3ff4('0xf')][_0x3ff4('0x10')]>0x0){_0x2b31da[_0x3ff4('0x29')]=_0x21346a[_0x3ff4('0xf')][0x0][_0x3ff4('0x11')];logger['info']('['+[_0x3c1df3[_0x3ff4('0x13')]()]+_0x3ff4('0x2c'),_0x2b31da);_0xc4abcc(_0x2b31da);}else{return createEndUser(_0x3c1df3,_0x5d41af,_0x2b31da,_0xb1b178,_0x288fde)[_0x3ff4('0xe')](function(_0x4d54c8){logger['info']('['+[_0x3c1df3[_0x3ff4('0x13')]()]+'],\x20createEndUser\x20crm',_0x4d54c8);_0xc4abcc(_0x4d54c8);});}})[_0x3ff4('0x15')](function(_0x4e9da0){logger[_0x3ff4('0x16')]('['+[_0x3c1df3[_0x3ff4('0x13')]()]+']',_0x4e9da0['message']);_0x6d300c(_0x4e9da0['message']);});});};}function getCustomFields(_0x1d15b7,_0x351432){var _0x57bfc9={};if(_0x1d15b7[_0x3ff4('0x10')]>0x0){_[_0x3ff4('0x2d')](_0x1d15b7,function(_0x102e99){if(_[_0x3ff4('0x2e')]([_0x3ff4('0x2f'),_0x3ff4('0x30')],_0x102e99[_0x3ff4('0x31')])&&_0x102e99['nameField']&&!_0x102e99[_0x3ff4('0x32')]){_0x57bfc9[_0x102e99[_0x3ff4('0x33')][_0x3ff4('0x34')]()]=_0x102e99['content']['toString']();}else if(_[_0x3ff4('0x2e')](['string',_0x3ff4('0x30')],_0x102e99[_0x3ff4('0x31')])&&_0x102e99[_0x3ff4('0x35')]&&_0x102e99[_0x3ff4('0x32')]){_0x57bfc9[_0x102e99[_0x3ff4('0x35')][_0x3ff4('0x34')]()]=_0x102e99[_0x3ff4('0x36')]['toString']();}else if(_0x102e99['type']===_0x3ff4('0x37')&&_0x102e99[_0x3ff4('0x38')]&&_0x102e99['idField']&&_0x102e99['customField']){_0x57bfc9[_0x102e99[_0x3ff4('0x35')][_0x3ff4('0x34')]()]=_0x351432[_0x102e99[_0x3ff4('0x38')]][_0x3ff4('0x39')]();}else if(_0x102e99[_0x3ff4('0x31')]===_0x3ff4('0x3a')&&_0x102e99[_0x3ff4('0x3b')]&&_0x102e99['Variable']['name']&&_0x102e99[_0x3ff4('0x35')]&&_0x102e99[_0x3ff4('0x32')]){_0x57bfc9[_0x102e99['idField'][_0x3ff4('0x34')]()]=_0x351432[_0x102e99[_0x3ff4('0x3b')][_0x3ff4('0x3c')][_0x3ff4('0x34')]()][_0x3ff4('0x39')]();}});}return _0x57bfc9;}function getTicket(_0x372fab,_0x535c4f,_0x113395,_0x1c218b,_0x5b8dc4,_0x46d012){return function(_0x35f5ae){logger[_0x3ff4('0x12')]('['+[_0x372fab[_0x3ff4('0x13')]()]+_0x3ff4('0x3d'),_0x35f5ae);return new Promise(function(_0x68331a,_0x472742){var _0x467839=_0x372fab[_0x3ff4('0x34')]()===_0x3ff4('0x3e')?_0x35f5ae[_0x3ff4('0x1f')]:_0x35f5ae['endUserId'];var _0x34120d={'method':_0x3ff4('0x24'),'uri':_0x113395+_0x3ff4('0x3f')+'?'+_0x46d012,'body':Object['assign']({},{'active':_0x3ff4('0x1e'),'caller_id':_0x467839,'assigned_to':_0x35f5ae[_0x3ff4('0x1f')],'short_description':intUtil[_0x3ff4('0x40')](_0x1c218b['Subjects'],_0x5b8dc4,'\x20'),'description':intUtil[_0x3ff4('0x40')](_0x1c218b[_0x3ff4('0x41')],_0x5b8dc4,'\x0a')},getCustomFields(_0x1c218b[_0x3ff4('0x42')],_0x5b8dc4)),'auth':_0x535c4f,'json':!![]};return rp(_0x34120d)[_0x3ff4('0xe')](function(_0x18d943){logger['info']('['+[_0x372fab[_0x3ff4('0x13')]()]+_0x3ff4('0x43'),_0x18d943[_0x3ff4('0xf')]);_0x35f5ae[_0x3ff4('0x44')]=_0x18d943['result'][_0x3ff4('0x11')];_0x35f5ae[_0x3ff4('0x45')]=_0x18d943['result'][_0x3ff4('0x46')];logger['info']('['+[_0x372fab[_0x3ff4('0x13')]()]+']\x20getTicket\x20crm',_0x35f5ae);_0x68331a(_0x35f5ae);})['catch'](function(_0x146130){logger[_0x3ff4('0x16')]('['+[_0x372fab['toUpperCase']()]+']',_0x146130[_0x3ff4('0x17')]);_0x472742(_0x146130['message']);});});};}function createRemoteTag(_0x5c0112,_0x1e1e49,_0x508e7c,_0x3caad8){return new Promise(function(_0x421140,_0x33e612){var _0x4eb283={'method':'POST','uri':_0x508e7c+'label'+'?'+_0x3caad8,'body':{'short_description':_0x5c0112,'global':!![],'active':!![],'name':_0x5c0112},'auth':_0x1e1e49,'json':!![]};return rp(_0x4eb283)[_0x3ff4('0xe')](function(_0x23af30){var _0x1807e1=_0x23af30[_0x3ff4('0xf')][_0x3ff4('0x11')];_0x421140(_0x1807e1);});});}function getRemoteTag(_0x2cb927,_0x58f23d,_0x1a06eb,_0x1f0142,_0x3546cf){return new Promise(function(_0x44f35b,_0x1f0d04){var _0x22615a={'method':_0x3ff4('0xc'),'uri':_0x1a06eb+_0x3ff4('0x47')+_0x3ff4('0x48')+_0x2cb927+'&'+_0x1f0142,'auth':_0x58f23d,'json':!![]};return rp(_0x22615a)['then'](function(_0x30a885){if(_0x30a885[_0x3ff4('0xf')][_0x3ff4('0x10')]>0x0){var _0x1978fe=_0x30a885[_0x3ff4('0xf')][0x0][_0x3ff4('0x11')];_0x44f35b(_0x1978fe);}else{return createRemoteTag(_0x2cb927,_0x58f23d,_0x1a06eb,_0x1f0142)[_0x3ff4('0xe')](function(_0x2770fd){_0x44f35b(_0x2770fd);});}});});}function assignTagToIncident(_0x1f375a,_0x361968,_0x114b16,_0x1a3aac,_0x578994){return new Promise(function(_0x43f4b8,_0x741cbe){var _0x430009={'method':'POST','uri':_0x114b16+_0x3ff4('0x49')+'?'+_0x578994,'body':{'label':_0x1f375a,'table':'incident','id_type':'Incident','table_key':_0x1a3aac[_0x3ff4('0x44')],'title':_0x3ff4('0x4a')+_0x1a3aac[_0x3ff4('0x45')],'id_display':_0x1a3aac[_0x3ff4('0x45')]},'auth':_0x361968,'json':!![]};return rp(_0x430009)[_0x3ff4('0xe')](function(_0x301cf0){_0x43f4b8();})[_0x3ff4('0x15')](function(){_0x43f4b8();});});}function manageTags(_0xd663e2,_0x4a5c2a,_0x45ff47,_0x57e413,_0x137433,_0x1ce7a4,_0x1332c5){return new Promise(function(_0x1fbdec,_0x5d2afb){var _0x1ce2a8=[];_0x4a5c2a['forEach'](function(_0xf20a41){_0x1ce2a8[_0x3ff4('0x4b')](getRemoteTag(_0xf20a41,_0x45ff47,_0x57e413,_0x1ce7a4,_0x1332c5));});return Promise[_0x3ff4('0x4c')](_0x1ce2a8)[_0x3ff4('0xe')](function(_0x13fe9d){if(_0x13fe9d[_0x3ff4('0x10')]){logger[_0x3ff4('0x12')]('['+[_0xd663e2[_0x3ff4('0x13')]()]+_0x3ff4('0x4d'),_0x13fe9d);var _0x57b0dc=[];_0x13fe9d[_0x3ff4('0x2d')](function(_0xa14439){_0x57b0dc['push'](assignTagToIncident(_0xa14439,_0x45ff47,_0x57e413,_0x137433,_0x1ce7a4));});return Promise[_0x3ff4('0x4c')](_0x57b0dc)[_0x3ff4('0xe')](function(){_0x1fbdec();})[_0x3ff4('0x15')](function(){_0x1fbdec();});}else{_0x1fbdec();}});});}function getTags(_0x3f9638,_0x4b8c38,_0x1433e0,_0x2d1306,_0x682ab0,_0x2cee7d){return function(_0x32a935){return new Promise(function(_0x22ed9a,_0x53c56a){var _0x5226ed=[];var _0x12361a=_0x2d1306[_0x3ff4('0x4e')];if(_0x12361a&&_0x12361a['length']>0x0){_0x5226ed=_[_0x3ff4('0x4f')](_0x12361a,_0x3ff4('0x3c'));}if(_0x5226ed[_0x3ff4('0x10')]>0x0){return manageTags(_0x3f9638,_0x5226ed,_0x4b8c38,_0x1433e0,_0x32a935,_0x682ab0,_0x2cee7d)['then'](function(){_0x22ed9a(_0x32a935);});}else{_0x22ed9a(_0x32a935);}});};}function emit(_0x2bac5e,_0x4bdeb0,_0x509de3){var _0x1fb9d9=_0x3ff4('0x50')+_0x3ff4('0x51')+_0x3ff4('0x52')+'%255EORDERBYDESCnumber';var _0x576fa3={'uri':_0x2bac5e+_0x3ff4('0x53')+_0x509de3+_0x1fb9d9};io['to'](util['format'](_0x3ff4('0x54'),_0x4bdeb0))['emit'](_0x3ff4('0x55'),_0x576fa3);}exports['cs']=function(_0x240d7e,_0x3ed7c0,_0x26208a,_0x775a3a,_0xc370a3,_0x5a8893,_0x31c935,_0x284a30){var _0x23d9f9={};var _0x219d47={'user':_0x5a8893[_0x3ff4('0x56')],'pass':_0x5a8893['password']};var _0x57b27b=_0x3ff4('0x57');var _0x16141f='sysparm_display_value=true';_0x5a8893[_0x3ff4('0x58')]=intUtil['stripTrailingSlash'](_0x5a8893[_0x3ff4('0x58')]);_0x5a8893[_0x3ff4('0x59')]=intUtil[_0x3ff4('0x5a')](_0x5a8893[_0x3ff4('0x59')]);var _0x33cc34=util[_0x3ff4('0x5b')](_0x3ff4('0x5c'),_0x5a8893[_0x3ff4('0x58')]);_0x23d9f9[_0x3ff4('0x1a')]=!_[_0x3ff4('0x5d')](_0x775a3a)?_0x775a3a[_0x3ff4('0x5e')]:null;_0x23d9f9[_0x3ff4('0x20')]=_0x5a8893[_0x3ff4('0x5e')];_0x23d9f9[_0x3ff4('0x26')]=_0x284a30[_0x3ff4('0x34')]()===_0x3ff4('0x3e')?_0x3ed7c0[_0x3ff4('0x5f')]:_0x3ed7c0[_0x3ff4('0x60')];_0x23d9f9[_0x3ff4('0x61')]=_0x284a30==='queue'||_0x284a30==='unmanaged'?_0x3ff4('0x62'):_0x3ff4('0x3e');var _0x2dad21=util[_0x3ff4('0x5b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5a8893[_0x3ff4('0x59')],_0x3ed7c0[_0x3ff4('0x63')],md5(_0x3ed7c0['uniqueid']));if(_0xc370a3&&_0xc370a3[_0x3ff4('0x64')]){logger[_0x3ff4('0x12')](_0x3ff4('0x65'),'Recording\x20is\x20enabled!');_0x3ed7c0[_0x3ff4('0x66')]=_0x2dad21;}else if(_0x31c935&&_0x31c935['recordingFormat']&&_0x31c935['recordingFormat']!==_0x3ff4('0x67')){logger[_0x3ff4('0x12')]('[OUTBOUND]',_0x3ff4('0x68'));_0x3ed7c0[_0x3ff4('0x66')]=_0x2dad21;}else{_0x3ed7c0['recordingURL']='';}return getAdminUser(_0x284a30,_0x219d47,_0x23d9f9,_0x33cc34,_0x16141f,_0x57b27b)[_0x3ff4('0xe')](getUser(_0x284a30,_0x219d47,_0x33cc34,_0x16141f,_0x57b27b))[_0x3ff4('0xe')](getEndUser(_0x284a30,_0x219d47,_0x33cc34,_0x16141f,_0x57b27b))[_0x3ff4('0xe')](getTicket(_0x284a30,_0x219d47,_0x33cc34,_0x26208a,_0x3ed7c0,_0x16141f))['then'](function(_0x47db6e){logger[_0x3ff4('0x12')](util[_0x3ff4('0x5b')]('The\x20ticket\x20ID\x20is:\x20%s',_0x47db6e['ticketId']));logger[_0x3ff4('0x12')](util['format'](_0x3ff4('0x69'),_0x284a30));if(_0x284a30!==_0x3ff4('0x6a')){logger[_0x3ff4('0x12')]('['+[_0x284a30[_0x3ff4('0x13')]()]+']',_0x3ff4('0x6b'));emit(_0x5a8893[_0x3ff4('0x58')],_0x775a3a[_0x3ff4('0x3c')],_0x47db6e['ticketId']);}})['catch'](function(_0x559e79){logger['error']('['+[_0x284a30[_0x3ff4('0x13')]()]+_0x3ff4('0x6c'),util[_0x3ff4('0x6d')](_0x559e79,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 04f6dad..967340d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf6=['nameField','customField','toLowerCase','content','string','custom_fields','variable','Variable','login','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','Calls','queue','remoteUri','serverUrl','stripTrailingSlash','uri','%s/service/v4_1/rest.php','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','Outbound','Ticket\x20created!','user:%s','unmanaged','monitor_format','lastevent','toUpperCase','request-promise','bluebird','md5','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','POST','emit','info','name','getString','Subjects','description','Descriptions','toISOString','slice','duration_hours','Contacts','direction','length','forEach','variableName','push','idField','set_entry','JSON','format','Basic\x20%s','apiKey','toString','get_server_info','stringify','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','find','entry_list','name_value_list','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','phone_home','then','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','merge','map','type'];(function(_0x403868,_0x1c5249){var _0x29cdd7=function(_0x436b04){while(--_0x436b04){_0x403868['push'](_0x403868['shift']());}};_0x29cdd7(++_0x1c5249);}(_0xecf6,0xa7));var _0x6ecf=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xecf6[_0x5f0089];return _0x193892;};'use strict';var _=require('lodash');var rp=require(_0x6ecf('0x0'));var BPromise=require(_0x6ecf('0x1'));var md5=require(_0x6ecf('0x2'));var util=require('util');var Redis=require(_0x6ecf('0x3'));var intUtil=require('./util');var config=require(_0x6ecf('0x4'));var logger=require(_0x6ecf('0x5'))('sugarcrm');config[_0x6ecf('0x6')]=_[_0x6ecf('0x7')](config[_0x6ecf('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6ecf('0x6')]));var def={'method':_0x6ecf('0x8'),'json':!![]};function emit(_0x2d3459,_0xa83c29,_0x2190d7){io['to'](_0x2d3459)[_0x6ecf('0x9')](_0xa83c29,_0x2190d7);}function getTicket(_0x23320e,_0x1e4335,_0x3db6bb,_0xa81e73,_0x22793f,_0x1bb6af,_0x51d095,_0x58b117){logger[_0x6ecf('0xa')]('Creating\x20new\x20ticket...');var _0x5c5d82=new Date();var _0x1681f1=[{'name':_0x6ecf('0xb'),'value':intUtil[_0x6ecf('0xc')](_0xa81e73[_0x6ecf('0xd')],_0x22793f,'\x20')},{'name':'assigned_user_id','value':_0x1e4335['id']},{'name':'created_by','value':_0x1e4335['id']},{'name':_0x6ecf('0xe'),'value':intUtil['getString'](_0xa81e73[_0x6ecf('0xf')],_0x22793f,'\x0a')},{'name':'date_start','value':_0x5c5d82[_0x6ecf('0x10')]()[_0x6ecf('0x11')](0x0,0x13)['replace']('T','\x20')},{'name':_0x6ecf('0x12'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':'parent_id','value':_0x3db6bb['id']},{'name':'parent_type','value':_0x6ecf('0x13')},{'name':'parent_name','value':_0x3db6bb[_0x6ecf('0xb')]},{'name':_0x6ecf('0x14'),'value':_0x58b117}];if(_0x1bb6af[_0x6ecf('0x15')]){_[_0x6ecf('0x16')](_0x1bb6af,function(_0x410a86){if(_0x22793f[_0x410a86[_0x6ecf('0x17')]]){_0x1681f1[_0x6ecf('0x18')]({'name':_0x410a86[_0x6ecf('0x19')],'value':_0x22793f[_0x410a86['variableName']]});}});}return request({'form':{'method':_0x6ecf('0x1a'),'input_type':_0x6ecf('0x1b'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x51d095['id'],'module_name':'Calls','name_value_list':_0x1681f1})}});}function getAuth(_0x220da9){return util[_0x6ecf('0x1c')](_0x6ecf('0x1d'),new Buffer(_0x220da9[_0x6ecf('0x1e')]+':X')[_0x6ecf('0x1f')]('base64'));}function getServerInfo(_0x2898d5){return request({'form':{'method':_0x6ecf('0x20'),'input_type':_0x6ecf('0x1b'),'response_type':_0x6ecf('0x1b'),'rest_data':JSON[_0x6ecf('0x21')]({'session':_0x2898d5['id']})}});}function getUser(_0x1d66de,_0xad2bf1,_0x145513){if(!_['isNil'](_0xad2bf1)){logger[_0x6ecf('0xa')]('Getting\x20agent\x20with\x20name',_0xad2bf1);return request({'form':{'method':_0x6ecf('0x22'),'input_type':_0x6ecf('0x1b'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x145513['id'],'module_name':'Employees','query':util[_0x6ecf('0x1c')](_0x6ecf('0x23'),_0xad2bf1),'order_by':'','offset':'0','select_fields':['id',_0x6ecf('0xb'),_0x6ecf('0x24')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0xdbc4e1){if(_0xdbc4e1['entry_list'][_0x6ecf('0x15')]){var _0x5477a2=_[_0x6ecf('0x25')](_0xdbc4e1[_0x6ecf('0x26')],function(_0xfb5ff2){return _0xfb5ff2[_0x6ecf('0x27')][_0x6ecf('0x24')][_0x6ecf('0x28')]===_0xad2bf1;});if(_0x5477a2){logger[_0x6ecf('0xa')](_0x6ecf('0x29'));return BPromise[_0x6ecf('0x2a')]({'id':_0x5477a2['name_value_list']['id'][_0x6ecf('0x28')],'name':_0x5477a2[_0x6ecf('0x27')]['name'][_0x6ecf('0x28')]});}}logger['info'](_0x6ecf('0x2b'));return BPromise[_0x6ecf('0x2a')]({'id':_0x145513[_0x6ecf('0x27')][_0x6ecf('0x2c')][_0x6ecf('0x28')],'name':_0x145513['name_value_list']['user_name']['value']});});}else{logger[_0x6ecf('0xa')](_0x6ecf('0x2d'));return BPromise[_0x6ecf('0x2a')]({'id':_0x145513['name_value_list']['user_id']['value'],'name':_0x145513[_0x6ecf('0x27')][_0x6ecf('0x24')][_0x6ecf('0x28')]});}}function getEndUser(_0x37d307,_0x12630b,_0x540373,_0x45442a){logger[_0x6ecf('0xa')]('Searching\x20enduser\x20with\x20phone',_0x540373);return request({'form':{'method':_0x6ecf('0x22'),'input_type':'JSON','response_type':_0x6ecf('0x1b'),'rest_data':JSON[_0x6ecf('0x21')]({'session':_0x45442a['id'],'module_name':_0x6ecf('0x13'),'query':util['format']('contacts.phone_home\x20=\x20\x22%s\x22',_0x540373),'order_by':'','offset':'0','select_fields':['id',_0x6ecf('0xb'),_0x6ecf('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x6ecf('0x2f')](function(_0x52090a){if(_0x52090a['entry_list'][_0x6ecf('0x15')]){var _0x1c8788=_[_0x6ecf('0x25')](_0x52090a['entry_list'],function(_0x12b215){return _0x12b215['name_value_list']['phone_home']['value']===_0x540373;});if(_0x1c8788){logger[_0x6ecf('0xa')]('Enduser\x20found!');return BPromise[_0x6ecf('0x2a')]({'id':_0x1c8788[_0x6ecf('0x27')]['id']['value'],'name':_0x1c8788[_0x6ecf('0x27')]['name'][_0x6ecf('0x28')],'phone':_0x1c8788[_0x6ecf('0x27')][_0x6ecf('0x2e')][_0x6ecf('0x28')]});}}else{logger['info'](_0x6ecf('0x30'));return request({'form':{'method':'set_entry','input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x45442a['id'],'module_name':_0x6ecf('0x13'),'name_value_list':[{'name':_0x6ecf('0x31'),'value':_0x12630b!==_0x6ecf('0x32')?_0x12630b:util[_0x6ecf('0x1c')](_0x6ecf('0x33'),_0x540373)},{'name':_0x6ecf('0x2e'),'value':_0x540373}]})}})['then'](function(_0x22d82e){logger['info'](_0x6ecf('0x34'));return BPromise[_0x6ecf('0x2a')]({'id':_0x22d82e['id'],'name':_0x22d82e[_0x6ecf('0x26')]['first_name'][_0x6ecf('0x28')],'phone':_0x22d82e[_0x6ecf('0x26')]['phone_home'][_0x6ecf('0x28')]});});}});}function request(_0x44fddf){logger[_0x6ecf('0x35')]('[HTTP]',JSON[_0x6ecf('0x21')](_0x44fddf));return rp(_[_0x6ecf('0x36')](def,_0x44fddf));}function getTags(_0x4eee27,_0x93394d){var _0x274aa8=[];if(_0x4eee27&&_0x4eee27[_0x6ecf('0x15')]>0x0){_0x274aa8=_[_0x6ecf('0x37')](_0x4eee27,_0x93394d);}return _0x274aa8;}function getCustomFields(_0x67e995,_0x2207cb){var _0x2b8b4a=[];var _0x52a508={'custom_fields':[]};if(_0x67e995['length']>0x0){_[_0x6ecf('0x16')](_0x67e995,function(_0x5608f7){if(_0x5608f7[_0x6ecf('0x38')]==='string'&&_0x5608f7[_0x6ecf('0x39')]&&!_0x5608f7[_0x6ecf('0x3a')]){_0x52a508[_0x5608f7[_0x6ecf('0x39')][_0x6ecf('0x3b')]()]=_0x5608f7[_0x6ecf('0x3c')]['toString']();}else if(_0x5608f7[_0x6ecf('0x38')]===_0x6ecf('0x3d')&&_0x5608f7[_0x6ecf('0x19')]&&_0x5608f7[_0x6ecf('0x3a')]){_0x52a508[_0x6ecf('0x3e')][_0x6ecf('0x18')]({'id':_0x5608f7[_0x6ecf('0x19')],'value':_0x5608f7[_0x6ecf('0x3c')][_0x6ecf('0x1f')]()});}else if(_0x5608f7['type']===_0x6ecf('0x3f')&&_0x5608f7[_0x6ecf('0x17')]&&_0x5608f7[_0x6ecf('0x19')]&&_0x5608f7[_0x6ecf('0x3a')]){_0x2207cb[_0x5608f7[_0x6ecf('0x17')]]&&_0x52a508[_0x6ecf('0x3e')]['push']({'id':_0x5608f7[_0x6ecf('0x19')],'value':_0x2207cb[_0x5608f7[_0x6ecf('0x17')]][_0x6ecf('0x1f')]()});}else if(_0x5608f7[_0x6ecf('0x38')]==='customVariable'&&_0x5608f7[_0x6ecf('0x40')]&&_0x5608f7[_0x6ecf('0x40')]['name']&&_0x5608f7['idField']&&_0x5608f7['customField']){_0x2207cb[_0x5608f7[_0x6ecf('0x40')][_0x6ecf('0xb')][_0x6ecf('0x3b')]()]&&_0x52a508['custom_fields'][_0x6ecf('0x18')]({'id':_0x5608f7[_0x6ecf('0x19')],'value':_0x2207cb[_0x5608f7[_0x6ecf('0x40')][_0x6ecf('0xb')][_0x6ecf('0x3b')]()][_0x6ecf('0x1f')]()});}});}return _0x52a508;}function getConnection(_0x19d527){return request({'method':_0x6ecf('0x8'),'form':{'method':_0x6ecf('0x41'),'input_type':_0x6ecf('0x1b'),'response_type':_0x6ecf('0x1b'),'rest_data':JSON[_0x6ecf('0x21')]({'user_auth':{'user_name':_0x19d527[_0x6ecf('0x42')],'password':_0x19d527[_0x6ecf('0x43')],'encryption':'PLAIN'},'application':_0x6ecf('0x44')})}})['then'](function(_0x43ce3e){var _0x4265ca=_0x43ce3e;if(_0x4265ca['id']){def[_0x6ecf('0x45')]=_0x4265ca['id'];return BPromise[_0x6ecf('0x2a')](_0x4265ca);}else{throw new Error(util['format'](_0x6ecf('0x46'),_0x19d527['id']));}});}function setRelationship(_0x854dcf,_0x2cdd7e,_0xd15697,_0x10a7a9){return request({'form':{'method':'set_relationship','input_type':_0x6ecf('0x1b'),'response_type':_0x6ecf('0x1b'),'rest_data':JSON[_0x6ecf('0x21')]({'session':_0x854dcf['id'],'module_name':_0x6ecf('0x47'),'module_id':_0xd15697['id'],'link_field_name':_0x10a7a9,'related_ids':[_0x2cdd7e['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x6ecf('0x48')]=function(_0x324ee7,_0x5a455a,_0xcc23b1,_0x5a64af,_0x30c530,_0x53a463){var _0x18f758,_0x39c81a,_0x58fce7,_0x5e75fa;_0x53a463[_0x6ecf('0x49')]=intUtil['stripTrailingSlash'](_0x53a463['remoteUri']);_0x53a463[_0x6ecf('0x4a')]=intUtil[_0x6ecf('0x4b')](_0x53a463[_0x6ecf('0x4a')]);def[_0x6ecf('0x4c')]=util[_0x6ecf('0x1c')](_0x6ecf('0x4d'),_0x53a463[_0x6ecf('0x49')]);if(_0x30c530&&_0x30c530['monitor_format']){logger[_0x6ecf('0xa')]('[QUEUE]',_0x6ecf('0x4e'));_0x5a455a[_0x6ecf('0x4f')]=util[_0x6ecf('0x1c')](_0x6ecf('0x50'),_0x53a463[_0x6ecf('0x4a')],_0x5a455a[_0x6ecf('0x51')],md5(_0x5a455a[_0x6ecf('0x51')]));}else{_0x5a455a[_0x6ecf('0x4f')]='';}return getConnection(_0x53a463)['then'](function(_0x1dc308){_0x5e75fa=_0x1dc308;return getUser(_0x53a463,_0x5a64af[_0x6ecf('0xb')],_0x5e75fa);})[_0x6ecf('0x2f')](function(_0x2528eb){_0x18f758=_0x2528eb;logger['info'](_0x6ecf('0x52'),_0x18f758['id']);return getEndUser(_0x53a463,_0x5a455a[_0x6ecf('0x53')],_0x5a455a[_0x6ecf('0x54')],_0x5e75fa);})['then'](function(_0x2b35ec){_0x39c81a=_0x2b35ec;logger[_0x6ecf('0xa')](_0x6ecf('0x55'),_0x39c81a['id']);return getTicket(_0x53a463,_0x18f758,_0x39c81a,_0xcc23b1,_0x5a455a,_0xcc23b1['Fields'],_0x5e75fa,_0x6ecf('0x56'));})[_0x6ecf('0x2f')](function(_0x3b3f01){_0x58fce7=_0x3b3f01;logger[_0x6ecf('0xa')]('Ticket\x20created!');logger[_0x6ecf('0xa')](_0x6ecf('0x57'),_0x58fce7['id']);return setRelationship(_0x5e75fa,_0x18f758,_0x58fce7,_0x6ecf('0x58'));})['then'](function(){return setRelationship(_0x5e75fa,_0x39c81a,_0x58fce7,_0x6ecf('0x59'));})['then'](function(){return getServerInfo(_0x5e75fa);})[_0x6ecf('0x2f')](function(_0x5103bd){var _0x14eda0=parseInt(_0x5103bd[_0x6ecf('0x5a')][_0x6ecf('0x5b')](0x0));var _0x5003cb=util[_0x6ecf('0x1c')](_0x6ecf('0x5c'),_0x53a463[_0x6ecf('0x49')],_0x58fce7['id']);if(_0x14eda0>0x6){_0x5003cb=util[_0x6ecf('0x1c')](_0x6ecf('0x5d'),_0x53a463[_0x6ecf('0x49')],_0x58fce7['id']);}logger['info'](_0x6ecf('0x5e'),_0x6ecf('0x5f'));emit(util[_0x6ecf('0x1c')]('user:%s',_0x5a64af[_0x6ecf('0xb')]),_0x6ecf('0x60'),{'uri':_0x5003cb});})[_0x6ecf('0x61')](function(_0x57bcf7){logger[_0x6ecf('0x62')](_0x6ecf('0x5e'),JSON[_0x6ecf('0x21')](_0x57bcf7));});};exports['outbound']=function(_0x32fd8b,_0x2f14e9,_0xad3b9b,_0x2d810a,_0x53dd1f,_0x1414c4,_0x297553){var _0x227974,_0x4764ba,_0x2c169e,_0x2166e9;_0x1414c4[_0x6ecf('0x49')]=intUtil['stripTrailingSlash'](_0x1414c4[_0x6ecf('0x49')]);_0x1414c4[_0x6ecf('0x4a')]=intUtil[_0x6ecf('0x4b')](_0x1414c4['serverUrl']);def[_0x6ecf('0x4c')]=util[_0x6ecf('0x1c')](_0x6ecf('0x4d'),_0x1414c4['remoteUri']);if(_0x297553&&_0x297553[_0x6ecf('0x63')]&&_0x297553[_0x6ecf('0x63')]!==_0x6ecf('0x64')){logger[_0x6ecf('0xa')](_0x6ecf('0x65'),_0x6ecf('0x4e'));_0x2f14e9[_0x6ecf('0x4f')]=util['format'](_0x6ecf('0x50'),_0x1414c4['serverUrl'],_0x2f14e9[_0x6ecf('0x51')],md5(_0x2f14e9['uniqueid']));}return getConnection(_0x1414c4)[_0x6ecf('0x2f')](function(_0x4b31d8){_0x2166e9=_0x4b31d8;return getUser(_0x1414c4,_0x2d810a['name'],_0x2166e9);})[_0x6ecf('0x2f')](function(_0x3fe45e){_0x227974=_0x3fe45e;logger[_0x6ecf('0xa')](_0x6ecf('0x52'),_0x227974['id']);return getEndUser(_0x1414c4,_0x2f14e9[_0x6ecf('0x66')],_0x2f14e9[_0x6ecf('0x67')],_0x2166e9);})[_0x6ecf('0x2f')](function(_0x1ea643){_0x4764ba=_0x1ea643;logger['info'](_0x6ecf('0x55'),_0x4764ba['id']);return getTicket(_0x1414c4,_0x227974,_0x4764ba,_0xad3b9b,_0x2f14e9,_0xad3b9b[_0x6ecf('0x68')],_0x2166e9,_0x6ecf('0x69'));})[_0x6ecf('0x2f')](function(_0x3aa0e6){_0x2c169e=_0x3aa0e6;logger[_0x6ecf('0xa')](_0x6ecf('0x6a'));logger[_0x6ecf('0xa')](_0x6ecf('0x57'),_0x2c169e['id']);return setRelationship(_0x2166e9,_0x227974,_0x2c169e,'users');})[_0x6ecf('0x2f')](function(){return setRelationship(_0x2166e9,_0x4764ba,_0x2c169e,_0x6ecf('0x59'));})['then'](function(){return getServerInfo(_0x2166e9);})[_0x6ecf('0x2f')](function(_0x456315){var _0x51bbf4=parseInt(_0x456315['version'][_0x6ecf('0x5b')](0x0));var _0x52de01=util[_0x6ecf('0x1c')](_0x6ecf('0x5c'),_0x1414c4['remoteUri'],_0x2c169e['id']);if(_0x51bbf4>0x6){_0x52de01=util['format'](_0x6ecf('0x5d'),_0x1414c4['remoteUri'],_0x2c169e['id']);}logger['info'](_0x6ecf('0x65'),_0x6ecf('0x5f'));emit(util[_0x6ecf('0x1c')](_0x6ecf('0x6b'),_0x2d810a[_0x6ecf('0xb')]),_0x6ecf('0x60'),{'uri':_0x52de01});})[_0x6ecf('0x61')](function(_0x17e254){logger[_0x6ecf('0x62')](_0x6ecf('0x65'),JSON[_0x6ecf('0x21')](_0x17e254));});};exports[_0x6ecf('0x6c')]=function(_0x46e019,_0x2f49d1,_0x4995be,_0x1f010b,_0xaa07a1,_0x53b230){var _0x57d8c7,_0x3da0b2,_0x4556a7,_0x52af35;_0x53b230['remoteUri']=intUtil[_0x6ecf('0x4b')](_0x53b230[_0x6ecf('0x49')]);_0x53b230['serverUrl']=intUtil[_0x6ecf('0x4b')](_0x53b230[_0x6ecf('0x4a')]);def[_0x6ecf('0x4c')]=util[_0x6ecf('0x1c')](_0x6ecf('0x4d'),_0x53b230['remoteUri']);if(_0xaa07a1&&_0xaa07a1[_0x6ecf('0x6d')]){logger[_0x6ecf('0xa')]('['+_0x2f49d1[_0x6ecf('0x6e')][_0x6ecf('0x6f')]()+']',_0x6ecf('0x4e'));_0x2f49d1[_0x6ecf('0x4f')]=util['format'](_0x6ecf('0x50'),_0x53b230[_0x6ecf('0x4a')],_0x2f49d1[_0x6ecf('0x51')],md5(_0x2f49d1[_0x6ecf('0x51')]));}else{_0x2f49d1[_0x6ecf('0x4f')]='';}return getConnection(_0x53b230)['then'](function(_0x3f88b7){_0x52af35=_0x3f88b7;if(!_['isNil'](_0x1f010b)){return getUser(_0x53b230,_0x1f010b['name'],_0x52af35);}else{return getUser(_0x53b230,null,_0x52af35);}})['then'](function(_0x31c05a){_0x57d8c7=_0x31c05a;logger[_0x6ecf('0xa')](_0x6ecf('0x52'),_0x57d8c7['id']);return getEndUser(_0x53b230,_0x2f49d1[_0x6ecf('0x53')],_0x2f49d1[_0x6ecf('0x54')],_0x52af35);})[_0x6ecf('0x2f')](function(_0x550fa5){_0x3da0b2=_0x550fa5;logger['info'](_0x6ecf('0x55'),_0x3da0b2['id']);return getTicket(_0x53b230,_0x57d8c7,_0x3da0b2,_0x4995be,_0x2f49d1,_0x4995be[_0x6ecf('0x68')],_0x52af35,_0x6ecf('0x56'));})[_0x6ecf('0x2f')](function(_0x34c6b3){_0x4556a7=_0x34c6b3;logger['info']('Ticket\x20created!');logger[_0x6ecf('0xa')](_0x6ecf('0x57'),_0x4556a7['id']);return setRelationship(_0x52af35,_0x57d8c7,_0x4556a7,'users');})['then'](function(){return setRelationship(_0x52af35,_0x3da0b2,_0x4556a7,_0x6ecf('0x59'));})['then'](function(){return getServerInfo(_0x52af35);})[_0x6ecf('0x61')](function(_0x7e1325){logger[_0x6ecf('0x62')]('['+_0x2f49d1[_0x6ecf('0x6e')][_0x6ecf('0x6f')]()+']',JSON['stringify'](_0x7e1325));});};
\ No newline at end of file
+var _0xdfd0=['uri','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','outbound','%s/service/v4_1/rest.php','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridname','The\x20Enduser\x20ID\x20is:','[OUTBOUND]','trigger:browser:url','error','unmanaged','lastevent','toUpperCase','calleridnum','lodash','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','direction','length','forEach','push','idField','variableName','JSON','stringify','Calls','format','Basic\x20%s','apiKey','get_server_info','isNil','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','entry_list','find','name_value_list','user_name','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','get_entry_list','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','string','nameField','customField','content','toString','type','variable','custom_fields','Variable','toLowerCase','POST','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl'];(function(_0x2e76a7,_0x23871a){var _0x454cde=function(_0x51724d){while(--_0x51724d){_0x2e76a7['push'](_0x2e76a7['shift']());}};_0x454cde(++_0x23871a);}(_0xdfd0,0x116));var _0x0dfd=function(_0x429adc,_0x27ba85){_0x429adc=_0x429adc-0x0;var _0x219026=_0xdfd0[_0x429adc];return _0x219026;};'use strict';var _=require(_0x0dfd('0x0'));var rp=require('request-promise');var BPromise=require(_0x0dfd('0x1'));var md5=require('md5');var util=require(_0x0dfd('0x2'));var Redis=require(_0x0dfd('0x3'));var intUtil=require(_0x0dfd('0x4'));var config=require(_0x0dfd('0x5'));var logger=require(_0x0dfd('0x6'))('sugarcrm');config[_0x0dfd('0x7')]=_['defaults'](config[_0x0dfd('0x7')],{'host':_0x0dfd('0x8'),'port':0x18eb});var io=require(_0x0dfd('0x9'))(new Redis(config[_0x0dfd('0x7')]));var def={'method':'POST','json':!![]};function emit(_0x3103ba,_0x42b8ff,_0xa131b3){io['to'](_0x3103ba)[_0x0dfd('0xa')](_0x42b8ff,_0xa131b3);}function getTicket(_0x4eb4e2,_0x8d9945,_0x576442,_0x4d768a,_0x1b0a9,_0x4aa11c,_0x476665,_0x4f4da3){logger[_0x0dfd('0xb')](_0x0dfd('0xc'));var _0x383cf2=new Date();var _0x3b8fb7=[{'name':_0x0dfd('0xd'),'value':intUtil[_0x0dfd('0xe')](_0x4d768a[_0x0dfd('0xf')],_0x1b0a9,'\x20')},{'name':_0x0dfd('0x10'),'value':_0x8d9945['id']},{'name':'created_by','value':_0x8d9945['id']},{'name':'description','value':intUtil[_0x0dfd('0xe')](_0x4d768a[_0x0dfd('0x11')],_0x1b0a9,'\x0a')},{'name':_0x0dfd('0x12'),'value':_0x383cf2[_0x0dfd('0x13')]()[_0x0dfd('0x14')](0x0,0x13)[_0x0dfd('0x15')]('T','\x20')},{'name':_0x0dfd('0x16'),'value':'0'},{'name':_0x0dfd('0x17'),'value':'15'},{'name':_0x0dfd('0x18'),'value':_0x576442['id']},{'name':_0x0dfd('0x19'),'value':_0x0dfd('0x1a')},{'name':'parent_name','value':_0x576442[_0x0dfd('0xd')]},{'name':_0x0dfd('0x1b'),'value':_0x4f4da3}];if(_0x4aa11c[_0x0dfd('0x1c')]){_[_0x0dfd('0x1d')](_0x4aa11c,function(_0x5663d6){if(_0x1b0a9[_0x5663d6['variableName']]){_0x3b8fb7[_0x0dfd('0x1e')]({'name':_0x5663d6[_0x0dfd('0x1f')],'value':_0x1b0a9[_0x5663d6[_0x0dfd('0x20')]]});}});}return request({'form':{'method':'set_entry','input_type':'JSON','response_type':_0x0dfd('0x21'),'rest_data':JSON[_0x0dfd('0x22')]({'session':_0x476665['id'],'module_name':_0x0dfd('0x23'),'name_value_list':_0x3b8fb7})}});}function getAuth(_0x304660){return util[_0x0dfd('0x24')](_0x0dfd('0x25'),new Buffer(_0x304660[_0x0dfd('0x26')]+':X')['toString']('base64'));}function getServerInfo(_0x21b0d1){return request({'form':{'method':_0x0dfd('0x27'),'input_type':_0x0dfd('0x21'),'response_type':_0x0dfd('0x21'),'rest_data':JSON['stringify']({'session':_0x21b0d1['id']})}});}function getUser(_0x1f6352,_0x33df54,_0x476961){if(!_[_0x0dfd('0x28')](_0x33df54)){logger[_0x0dfd('0xb')](_0x0dfd('0x29'),_0x33df54);return request({'form':{'method':'get_entry_list','input_type':_0x0dfd('0x21'),'response_type':_0x0dfd('0x21'),'rest_data':JSON['stringify']({'session':_0x476961['id'],'module_name':_0x0dfd('0x2a'),'query':util[_0x0dfd('0x24')](_0x0dfd('0x2b'),_0x33df54),'order_by':'','offset':'0','select_fields':['id','name','user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0dfd('0x2c')](function(_0x5474b1){if(_0x5474b1[_0x0dfd('0x2d')][_0x0dfd('0x1c')]){var _0x44db74=_[_0x0dfd('0x2e')](_0x5474b1[_0x0dfd('0x2d')],function(_0x37ff31){return _0x37ff31[_0x0dfd('0x2f')][_0x0dfd('0x30')][_0x0dfd('0x31')]===_0x33df54;});if(_0x44db74){logger[_0x0dfd('0xb')](_0x0dfd('0x32'));return BPromise[_0x0dfd('0x33')]({'id':_0x44db74[_0x0dfd('0x2f')]['id'][_0x0dfd('0x31')],'name':_0x44db74['name_value_list']['name']['value']});}}logger[_0x0dfd('0xb')](_0x0dfd('0x34'));return BPromise[_0x0dfd('0x33')]({'id':_0x476961[_0x0dfd('0x2f')][_0x0dfd('0x35')][_0x0dfd('0x31')],'name':_0x476961[_0x0dfd('0x2f')][_0x0dfd('0x30')][_0x0dfd('0x31')]});});}else{logger['info'](_0x0dfd('0x36'));return BPromise['resolve']({'id':_0x476961[_0x0dfd('0x2f')]['user_id']['value'],'name':_0x476961[_0x0dfd('0x2f')][_0x0dfd('0x30')][_0x0dfd('0x31')]});}}function getEndUser(_0x3d21d6,_0x5b9b33,_0x325b12,_0x2ce172){logger[_0x0dfd('0xb')]('Searching\x20enduser\x20with\x20phone',_0x325b12);return request({'form':{'method':_0x0dfd('0x37'),'input_type':'JSON','response_type':_0x0dfd('0x21'),'rest_data':JSON[_0x0dfd('0x22')]({'session':_0x2ce172['id'],'module_name':_0x0dfd('0x1a'),'query':util['format'](_0x0dfd('0x38'),_0x325b12),'order_by':'','offset':'0','select_fields':['id',_0x0dfd('0xd'),_0x0dfd('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x2b549b){if(_0x2b549b['entry_list'][_0x0dfd('0x1c')]){var _0x2690cc=_[_0x0dfd('0x2e')](_0x2b549b[_0x0dfd('0x2d')],function(_0x13df6d){return _0x13df6d[_0x0dfd('0x2f')][_0x0dfd('0x39')]['value']===_0x325b12;});if(_0x2690cc){logger[_0x0dfd('0xb')](_0x0dfd('0x3a'));return BPromise[_0x0dfd('0x33')]({'id':_0x2690cc[_0x0dfd('0x2f')]['id'][_0x0dfd('0x31')],'name':_0x2690cc[_0x0dfd('0x2f')]['name'][_0x0dfd('0x31')],'phone':_0x2690cc['name_value_list'][_0x0dfd('0x39')][_0x0dfd('0x31')]});}}else{logger[_0x0dfd('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x0dfd('0x21'),'response_type':_0x0dfd('0x21'),'rest_data':JSON['stringify']({'session':_0x2ce172['id'],'module_name':_0x0dfd('0x1a'),'name_value_list':[{'name':_0x0dfd('0x3b'),'value':_0x5b9b33!==_0x0dfd('0x3c')?_0x5b9b33:util[_0x0dfd('0x24')](_0x0dfd('0x3d'),_0x325b12)},{'name':'phone_home','value':_0x325b12}]})}})[_0x0dfd('0x2c')](function(_0x4d0721){logger[_0x0dfd('0xb')](_0x0dfd('0x3e'));return BPromise['resolve']({'id':_0x4d0721['id'],'name':_0x4d0721[_0x0dfd('0x2d')][_0x0dfd('0x3b')]['value'],'phone':_0x4d0721[_0x0dfd('0x2d')][_0x0dfd('0x39')][_0x0dfd('0x31')]});});}});}function request(_0x27970f){logger[_0x0dfd('0x3f')](_0x0dfd('0x40'),JSON['stringify'](_0x27970f));return rp(_[_0x0dfd('0x41')](def,_0x27970f));}function getTags(_0x488493,_0xeeb484){var _0x57041d=[];if(_0x488493&&_0x488493[_0x0dfd('0x1c')]>0x0){_0x57041d=_['map'](_0x488493,_0xeeb484);}return _0x57041d;}function getCustomFields(_0x389f06,_0x367784){var _0xd7f61d=[];var _0x4d8693={'custom_fields':[]};if(_0x389f06[_0x0dfd('0x1c')]>0x0){_[_0x0dfd('0x1d')](_0x389f06,function(_0x21fa03){if(_0x21fa03['type']===_0x0dfd('0x42')&&_0x21fa03[_0x0dfd('0x43')]&&!_0x21fa03[_0x0dfd('0x44')]){_0x4d8693[_0x21fa03[_0x0dfd('0x43')]['toLowerCase']()]=_0x21fa03[_0x0dfd('0x45')][_0x0dfd('0x46')]();}else if(_0x21fa03[_0x0dfd('0x47')]===_0x0dfd('0x42')&&_0x21fa03[_0x0dfd('0x1f')]&&_0x21fa03[_0x0dfd('0x44')]){_0x4d8693['custom_fields']['push']({'id':_0x21fa03['idField'],'value':_0x21fa03['content']['toString']()});}else if(_0x21fa03['type']===_0x0dfd('0x48')&&_0x21fa03[_0x0dfd('0x20')]&&_0x21fa03['idField']&&_0x21fa03[_0x0dfd('0x44')]){_0x367784[_0x21fa03[_0x0dfd('0x20')]]&&_0x4d8693[_0x0dfd('0x49')][_0x0dfd('0x1e')]({'id':_0x21fa03[_0x0dfd('0x1f')],'value':_0x367784[_0x21fa03[_0x0dfd('0x20')]][_0x0dfd('0x46')]()});}else if(_0x21fa03[_0x0dfd('0x47')]==='customVariable'&&_0x21fa03[_0x0dfd('0x4a')]&&_0x21fa03[_0x0dfd('0x4a')][_0x0dfd('0xd')]&&_0x21fa03[_0x0dfd('0x1f')]&&_0x21fa03['customField']){_0x367784[_0x21fa03[_0x0dfd('0x4a')]['name']['toLowerCase']()]&&_0x4d8693[_0x0dfd('0x49')][_0x0dfd('0x1e')]({'id':_0x21fa03[_0x0dfd('0x1f')],'value':_0x367784[_0x21fa03[_0x0dfd('0x4a')][_0x0dfd('0xd')][_0x0dfd('0x4b')]()][_0x0dfd('0x46')]()});}});}return _0x4d8693;}function getConnection(_0x227901){return request({'method':_0x0dfd('0x4c'),'form':{'method':_0x0dfd('0x4d'),'input_type':_0x0dfd('0x21'),'response_type':'JSON','rest_data':JSON[_0x0dfd('0x22')]({'user_auth':{'user_name':_0x227901[_0x0dfd('0x4e')],'password':_0x227901[_0x0dfd('0x4f')],'encryption':_0x0dfd('0x50')},'application':_0x0dfd('0x51')})}})[_0x0dfd('0x2c')](function(_0x54f411){var _0x147cf9=_0x54f411;if(_0x147cf9['id']){def['sessionID']=_0x147cf9['id'];return BPromise['resolve'](_0x147cf9);}else{throw new Error(util[_0x0dfd('0x24')](_0x0dfd('0x52'),_0x227901['id']));}});}function setRelationship(_0x3b24a9,_0x7e8eec,_0x5c8b99,_0x518be1){return request({'form':{'method':_0x0dfd('0x53'),'input_type':_0x0dfd('0x21'),'response_type':_0x0dfd('0x21'),'rest_data':JSON[_0x0dfd('0x22')]({'session':_0x3b24a9['id'],'module_name':'Calls','module_id':_0x5c8b99['id'],'link_field_name':_0x518be1,'related_ids':[_0x7e8eec['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x0dfd('0x54')]=function(_0x406be9,_0x591ed5,_0x3aa98b,_0xf92286,_0xe58fd3,_0x1c9f01){var _0x514667,_0x1468cb,_0x131c25,_0x319fe2;_0x1c9f01[_0x0dfd('0x55')]=intUtil[_0x0dfd('0x56')](_0x1c9f01[_0x0dfd('0x55')]);_0x1c9f01['serverUrl']=intUtil[_0x0dfd('0x56')](_0x1c9f01[_0x0dfd('0x57')]);def[_0x0dfd('0x58')]=util[_0x0dfd('0x24')]('%s/service/v4_1/rest.php',_0x1c9f01[_0x0dfd('0x55')]);if(_0xe58fd3&&_0xe58fd3[_0x0dfd('0x59')]){logger['info'](_0x0dfd('0x5a'),'Recording\x20is\x20enabled!');_0x591ed5[_0x0dfd('0x5b')]=util[_0x0dfd('0x24')](_0x0dfd('0x5c'),_0x1c9f01['serverUrl'],_0x591ed5[_0x0dfd('0x5d')],md5(_0x591ed5['uniqueid']));}else{_0x591ed5[_0x0dfd('0x5b')]='';}return getConnection(_0x1c9f01)[_0x0dfd('0x2c')](function(_0x3eaacf){_0x319fe2=_0x3eaacf;return getUser(_0x1c9f01,_0xf92286[_0x0dfd('0xd')],_0x319fe2);})[_0x0dfd('0x2c')](function(_0x16314b){_0x514667=_0x16314b;logger[_0x0dfd('0xb')]('The\x20User\x20ID\x20is:',_0x514667['id']);return getEndUser(_0x1c9f01,_0x591ed5[_0x0dfd('0x5e')],_0x591ed5['calleridnum'],_0x319fe2);})[_0x0dfd('0x2c')](function(_0x4e4268){_0x1468cb=_0x4e4268;logger[_0x0dfd('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1468cb['id']);return getTicket(_0x1c9f01,_0x514667,_0x1468cb,_0x3aa98b,_0x591ed5,_0x3aa98b[_0x0dfd('0x5f')],_0x319fe2,_0x0dfd('0x60'));})[_0x0dfd('0x2c')](function(_0x1e8fb2){_0x131c25=_0x1e8fb2;logger[_0x0dfd('0xb')](_0x0dfd('0x61'));logger['info'](_0x0dfd('0x62'),_0x131c25['id']);return setRelationship(_0x319fe2,_0x514667,_0x131c25,_0x0dfd('0x63'));})['then'](function(){return setRelationship(_0x319fe2,_0x1468cb,_0x131c25,_0x0dfd('0x64'));})[_0x0dfd('0x2c')](function(){return getServerInfo(_0x319fe2);})['then'](function(_0xc691de){var _0x155f03=parseInt(_0xc691de[_0x0dfd('0x65')][_0x0dfd('0x66')](0x0));var _0x4c0b8d=util[_0x0dfd('0x24')](_0x0dfd('0x67'),_0x1c9f01[_0x0dfd('0x55')],_0x131c25['id']);if(_0x155f03>0x6){_0x4c0b8d=util[_0x0dfd('0x24')](_0x0dfd('0x68'),_0x1c9f01[_0x0dfd('0x55')],_0x131c25['id']);}logger[_0x0dfd('0xb')]('[QUEUE]',_0x0dfd('0x69'));emit(util[_0x0dfd('0x24')](_0x0dfd('0x6a'),_0xf92286['name']),'trigger:browser:url',{'uri':_0x4c0b8d});})[_0x0dfd('0x6b')](function(_0x4b08d3){logger['error']('[QUEUE]',JSON[_0x0dfd('0x22')](_0x4b08d3));});};exports[_0x0dfd('0x6c')]=function(_0x1e1815,_0x27d0b9,_0x31a9a2,_0x1bee88,_0x5e9d8f,_0x3926c6,_0x2620d0){var _0x3c576b,_0x420338,_0xf974c,_0x4402bf;_0x3926c6[_0x0dfd('0x55')]=intUtil[_0x0dfd('0x56')](_0x3926c6[_0x0dfd('0x55')]);_0x3926c6[_0x0dfd('0x57')]=intUtil['stripTrailingSlash'](_0x3926c6[_0x0dfd('0x57')]);def['uri']=util['format'](_0x0dfd('0x6d'),_0x3926c6[_0x0dfd('0x55')]);if(_0x2620d0&&_0x2620d0[_0x0dfd('0x6e')]&&_0x2620d0[_0x0dfd('0x6e')]!==_0x0dfd('0x6f')){logger[_0x0dfd('0xb')]('[OUTBOUND]',_0x0dfd('0x70'));_0x27d0b9[_0x0dfd('0x5b')]=util[_0x0dfd('0x24')](_0x0dfd('0x5c'),_0x3926c6['serverUrl'],_0x27d0b9[_0x0dfd('0x5d')],md5(_0x27d0b9[_0x0dfd('0x5d')]));}return getConnection(_0x3926c6)[_0x0dfd('0x2c')](function(_0x592b3e){_0x4402bf=_0x592b3e;return getUser(_0x3926c6,_0x1bee88[_0x0dfd('0xd')],_0x4402bf);})[_0x0dfd('0x2c')](function(_0x57fc58){_0x3c576b=_0x57fc58;logger[_0x0dfd('0xb')]('The\x20User\x20ID\x20is:',_0x3c576b['id']);return getEndUser(_0x3926c6,_0x27d0b9[_0x0dfd('0x71')],_0x27d0b9['destcalleridnum'],_0x4402bf);})[_0x0dfd('0x2c')](function(_0x13f053){_0x420338=_0x13f053;logger[_0x0dfd('0xb')](_0x0dfd('0x72'),_0x420338['id']);return getTicket(_0x3926c6,_0x3c576b,_0x420338,_0x31a9a2,_0x27d0b9,_0x31a9a2[_0x0dfd('0x5f')],_0x4402bf,'Outbound');})['then'](function(_0xb7f4){_0xf974c=_0xb7f4;logger['info'](_0x0dfd('0x61'));logger[_0x0dfd('0xb')](_0x0dfd('0x62'),_0xf974c['id']);return setRelationship(_0x4402bf,_0x3c576b,_0xf974c,_0x0dfd('0x63'));})[_0x0dfd('0x2c')](function(){return setRelationship(_0x4402bf,_0x420338,_0xf974c,_0x0dfd('0x64'));})[_0x0dfd('0x2c')](function(){return getServerInfo(_0x4402bf);})['then'](function(_0x246556){var _0x3b0fbb=parseInt(_0x246556[_0x0dfd('0x65')][_0x0dfd('0x66')](0x0));var _0xb920c9=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x3926c6[_0x0dfd('0x55')],_0xf974c['id']);if(_0x3b0fbb>0x6){_0xb920c9=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x3926c6[_0x0dfd('0x55')],_0xf974c['id']);}logger[_0x0dfd('0xb')](_0x0dfd('0x73'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0dfd('0x24')]('user:%s',_0x1bee88[_0x0dfd('0xd')]),_0x0dfd('0x74'),{'uri':_0xb920c9});})['catch'](function(_0x2b23c9){logger[_0x0dfd('0x75')]('[OUTBOUND]',JSON[_0x0dfd('0x22')](_0x2b23c9));});};exports[_0x0dfd('0x76')]=function(_0xdc9b3a,_0x1d77e1,_0x19c24f,_0x4905fc,_0x458ff3,_0x5b64d3){var _0x75ee79,_0x4cc57d,_0x19e30a,_0x1f88fa;_0x5b64d3[_0x0dfd('0x55')]=intUtil[_0x0dfd('0x56')](_0x5b64d3[_0x0dfd('0x55')]);_0x5b64d3[_0x0dfd('0x57')]=intUtil['stripTrailingSlash'](_0x5b64d3[_0x0dfd('0x57')]);def[_0x0dfd('0x58')]=util[_0x0dfd('0x24')]('%s/service/v4_1/rest.php',_0x5b64d3['remoteUri']);if(_0x458ff3&&_0x458ff3[_0x0dfd('0x59')]){logger[_0x0dfd('0xb')]('['+_0x1d77e1[_0x0dfd('0x77')][_0x0dfd('0x78')]()+']','Recording\x20is\x20enabled!');_0x1d77e1[_0x0dfd('0x5b')]=util[_0x0dfd('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b64d3[_0x0dfd('0x57')],_0x1d77e1[_0x0dfd('0x5d')],md5(_0x1d77e1[_0x0dfd('0x5d')]));}else{_0x1d77e1[_0x0dfd('0x5b')]='';}return getConnection(_0x5b64d3)[_0x0dfd('0x2c')](function(_0x549621){_0x1f88fa=_0x549621;if(!_[_0x0dfd('0x28')](_0x4905fc)){return getUser(_0x5b64d3,_0x4905fc[_0x0dfd('0xd')],_0x1f88fa);}else{return getUser(_0x5b64d3,null,_0x1f88fa);}})[_0x0dfd('0x2c')](function(_0x3e8916){_0x75ee79=_0x3e8916;logger[_0x0dfd('0xb')]('The\x20User\x20ID\x20is:',_0x75ee79['id']);return getEndUser(_0x5b64d3,_0x1d77e1[_0x0dfd('0x5e')],_0x1d77e1[_0x0dfd('0x79')],_0x1f88fa);})[_0x0dfd('0x2c')](function(_0x4839ce){_0x4cc57d=_0x4839ce;logger['info'](_0x0dfd('0x72'),_0x4cc57d['id']);return getTicket(_0x5b64d3,_0x75ee79,_0x4cc57d,_0x19c24f,_0x1d77e1,_0x19c24f[_0x0dfd('0x5f')],_0x1f88fa,_0x0dfd('0x60'));})['then'](function(_0x1c4964){_0x19e30a=_0x1c4964;logger['info'](_0x0dfd('0x61'));logger['info'](_0x0dfd('0x62'),_0x19e30a['id']);return setRelationship(_0x1f88fa,_0x75ee79,_0x19e30a,_0x0dfd('0x63'));})[_0x0dfd('0x2c')](function(){return setRelationship(_0x1f88fa,_0x4cc57d,_0x19e30a,'contacts');})['then'](function(){return getServerInfo(_0x1f88fa);})[_0x0dfd('0x6b')](function(_0x5b8c56){logger[_0x0dfd('0x75')]('['+_0x1d77e1[_0x0dfd('0x77')][_0x0dfd('0x78')]()+']',JSON['stringify'](_0x5b8c56));});};
\ No newline at end of file
index a6cc496..49d5521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d2a=['keyValue','key','format','%s:\x20%s','keyContent','keyType','variable','join','stripTrailingSlash','slice','substring','validateEmail','lodash','util','getString','length','sortBy','type','string','push','content','variableName','toString','customVariable','name','toLowerCase','Variable'];(function(_0x478970,_0x5df032){var _0x1759f1=function(_0x58579d){while(--_0x58579d){_0x478970['push'](_0x478970['shift']());}};_0x1759f1(++_0x5df032);}(_0x2d2a,0xe4));var _0xa2d2=function(_0x47637a,_0x5d721f){_0x47637a=_0x47637a-0x0;var _0x11fd5e=_0x2d2a[_0x47637a];return _0x11fd5e;};'use strict';var _=require(_0xa2d2('0x0'));var util=require(_0xa2d2('0x1'));exports[_0xa2d2('0x2')]=function(_0x3dd7df,_0x32d09f,_0xde83dc){var _0x55c815=[];if(_0x3dd7df[_0xa2d2('0x3')]>0x0){var _0x2276de=_[_0xa2d2('0x4')](_0x3dd7df,['id']);for(var _0x406a4f=0x0;_0x406a4f<_0x2276de[_0xa2d2('0x3')];_0x406a4f++){var _0x5590ae=_0x2276de[_0x406a4f];if(_0x5590ae[_0xa2d2('0x5')]===_0xa2d2('0x6')){_0x55c815[_0xa2d2('0x7')](_0x5590ae[_0xa2d2('0x8')]);}else if(_0x5590ae[_0xa2d2('0x5')]==='variable'&&_0x5590ae[_0xa2d2('0x9')]){_0x32d09f[_0x5590ae[_0xa2d2('0x9')]]&&_0x55c815[_0xa2d2('0x7')](_0x32d09f[_0x5590ae[_0xa2d2('0x9')]][_0xa2d2('0xa')]());}else if(_0x5590ae[_0xa2d2('0x5')]===_0xa2d2('0xb')&&_0x5590ae['Variable']&&_0x5590ae['Variable'][_0xa2d2('0xc')]){_0x32d09f[_0x5590ae['Variable'][_0xa2d2('0xc')][_0xa2d2('0xd')]()]&&_0x55c815['push'](_0x32d09f[_0x5590ae[_0xa2d2('0xe')][_0xa2d2('0xc')]['toLowerCase']()][_0xa2d2('0xa')]());}else if(_0x5590ae[_0xa2d2('0x5')]===_0xa2d2('0xf')){if(_0x5590ae['keyType']===_0xa2d2('0x6')&&_0x5590ae[_0xa2d2('0x10')]){_0x55c815[_0xa2d2('0x7')](util[_0xa2d2('0x11')](_0xa2d2('0x12'),_0x5590ae['key'],_0x5590ae[_0xa2d2('0x13')]));}else if(_0x5590ae[_0xa2d2('0x14')]===_0xa2d2('0x15')&&_0x5590ae[_0xa2d2('0x9')]&&_0x5590ae[_0xa2d2('0x10')]){_0x32d09f[_0x5590ae['variableName']]&&_0x55c815[_0xa2d2('0x7')](util[_0xa2d2('0x11')](_0xa2d2('0x12'),_0x5590ae[_0xa2d2('0x10')],_0x32d09f[_0x5590ae[_0xa2d2('0x9')]]));}else if(_0x5590ae[_0xa2d2('0x14')]===_0xa2d2('0xb')&&_0x5590ae[_0xa2d2('0xe')]&&_0x5590ae[_0xa2d2('0xe')]['name']&&_0x5590ae[_0xa2d2('0x10')]){_0x32d09f[_0x5590ae[_0xa2d2('0xe')]['name']['toLowerCase']()]&&_0x55c815[_0xa2d2('0x7')](util[_0xa2d2('0x11')]('%s:\x20%s',_0x5590ae[_0xa2d2('0x10')],_0x32d09f[_0x5590ae[_0xa2d2('0xe')][_0xa2d2('0xc')][_0xa2d2('0xd')]()]));}}}}return _0x55c815[_0xa2d2('0x16')](_0xde83dc);};exports[_0xa2d2('0x17')]=function(_0x1d0eb7){var _0x4ed84f=_0x1d0eb7[_0xa2d2('0x18')](-0x1);if(_0x4ed84f==='/'){_0x1d0eb7=_0x1d0eb7[_0xa2d2('0x19')](0x0,_0x1d0eb7['lastIndexOf'](_0x4ed84f));}return _0x1d0eb7;};exports[_0xa2d2('0x1a')]=function(_0x4c8a79){if(!_['isNil'](_0x4c8a79)&&_0x4c8a79!==''){var _0x1bb9c2=/^(([^<>()\[\]\\.,;:\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 _0x1bb9c2['test'](String(_0x4c8a79)[_0xa2d2('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x491a=['variable','name','join','stripTrailingSlash','substring','validateEmail','isNil','test','lodash','util','getString','type','string','push','content','variableName','toString','customVariable','Variable','toLowerCase','keyValue','key','format','%s:\x20%s'];(function(_0x3bcded,_0x4611dc){var _0x16ba70=function(_0x4dcfc6){while(--_0x4dcfc6){_0x3bcded['push'](_0x3bcded['shift']());}};_0x16ba70(++_0x4611dc);}(_0x491a,0xb0));var _0xa491=function(_0x203b5c,_0x2384f1){_0x203b5c=_0x203b5c-0x0;var _0x20a057=_0x491a[_0x203b5c];return _0x20a057;};'use strict';var _=require(_0xa491('0x0'));var util=require(_0xa491('0x1'));exports[_0xa491('0x2')]=function(_0x56521f,_0x3056a9,_0x2bc0d3){var _0x5cd1e6=[];if(_0x56521f['length']>0x0){var _0x400d5f=_['sortBy'](_0x56521f,['id']);for(var _0x5ea27f=0x0;_0x5ea27f<_0x400d5f['length'];_0x5ea27f++){var _0x3adfe6=_0x400d5f[_0x5ea27f];if(_0x3adfe6[_0xa491('0x3')]===_0xa491('0x4')){_0x5cd1e6[_0xa491('0x5')](_0x3adfe6[_0xa491('0x6')]);}else if(_0x3adfe6[_0xa491('0x3')]==='variable'&&_0x3adfe6[_0xa491('0x7')]){_0x3056a9[_0x3adfe6[_0xa491('0x7')]]&&_0x5cd1e6[_0xa491('0x5')](_0x3056a9[_0x3adfe6[_0xa491('0x7')]][_0xa491('0x8')]());}else if(_0x3adfe6[_0xa491('0x3')]===_0xa491('0x9')&&_0x3adfe6[_0xa491('0xa')]&&_0x3adfe6[_0xa491('0xa')]['name']){_0x3056a9[_0x3adfe6[_0xa491('0xa')]['name'][_0xa491('0xb')]()]&&_0x5cd1e6[_0xa491('0x5')](_0x3056a9[_0x3adfe6[_0xa491('0xa')]['name'][_0xa491('0xb')]()][_0xa491('0x8')]());}else if(_0x3adfe6[_0xa491('0x3')]===_0xa491('0xc')){if(_0x3adfe6['keyType']===_0xa491('0x4')&&_0x3adfe6[_0xa491('0xd')]){_0x5cd1e6['push'](util[_0xa491('0xe')](_0xa491('0xf'),_0x3adfe6[_0xa491('0xd')],_0x3adfe6['keyContent']));}else if(_0x3adfe6['keyType']===_0xa491('0x10')&&_0x3adfe6[_0xa491('0x7')]&&_0x3adfe6[_0xa491('0xd')]){_0x3056a9[_0x3adfe6[_0xa491('0x7')]]&&_0x5cd1e6['push'](util[_0xa491('0xe')](_0xa491('0xf'),_0x3adfe6[_0xa491('0xd')],_0x3056a9[_0x3adfe6[_0xa491('0x7')]]));}else if(_0x3adfe6['keyType']===_0xa491('0x9')&&_0x3adfe6[_0xa491('0xa')]&&_0x3adfe6[_0xa491('0xa')]['name']&&_0x3adfe6[_0xa491('0xd')]){_0x3056a9[_0x3adfe6[_0xa491('0xa')][_0xa491('0x11')]['toLowerCase']()]&&_0x5cd1e6['push'](util[_0xa491('0xe')](_0xa491('0xf'),_0x3adfe6['key'],_0x3056a9[_0x3adfe6[_0xa491('0xa')][_0xa491('0x11')][_0xa491('0xb')]()]));}}}}return _0x5cd1e6[_0xa491('0x12')](_0x2bc0d3);};exports[_0xa491('0x13')]=function(_0x51f5d2){var _0x10ed10=_0x51f5d2['slice'](-0x1);if(_0x10ed10==='/'){_0x51f5d2=_0x51f5d2[_0xa491('0x14')](0x0,_0x51f5d2['lastIndexOf'](_0x10ed10));}return _0x51f5d2;};exports[_0xa491('0x15')]=function(_0xe2a03a){if(!_[_0xa491('0x16')](_0xe2a03a)&&_0xe2a03a!==''){var _0x1a25f8=/^(([^<>()\[\]\\.,;:\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 _0x1a25f8[_0xa491('0x17')](String(_0xe2a03a)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 7a05e3b..a72b0d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x2636bf,_0x146556){var _0x3bc3d9=function(_0x19c383){while(--_0x19c383){_0x2636bf['push'](_0x2636bf['shift']());}};_0x3bc3d9(++_0x146556);}(_0x9c44,0x178));var _0x49c4=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x9c44[_0x15bc81];return _0x59440e;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
+var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0xe13902,_0x37f1f1){var _0x5628e2=function(_0x431f3b){while(--_0x431f3b){_0xe13902['push'](_0xe13902['shift']());}};_0x5628e2(++_0x37f1f1);}(_0x9c44,0x178));var _0x49c4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x9c44[_0x334841];return _0x5beb4b;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index 2906a4c..207283b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7261=['content','idField','push','custom_fields','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','catch','inspect','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL','integrationTab','newTab','replace','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','Getting\x20agent\x20with\x20email','Agent\x20found!','results','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','debug','[HTTP]','defaults','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase'];(function(_0x3f99d7,_0x5b7acf){var _0x982103=function(_0x3a5727){while(--_0x3a5727){_0x3f99d7['push'](_0x3f99d7['shift']());}};_0x982103(++_0x5b7acf);}(_0x7261,0x1e0));var _0x1726=function(_0x1b4107,_0x192ed2){_0x1b4107=_0x1b4107-0x0;var _0x99a0cf=_0x7261[_0x1b4107];return _0x99a0cf;};'use strict';var _=require(_0x1726('0x0'));var rp=require(_0x1726('0x1'));var md5=require(_0x1726('0x2'));var util=require(_0x1726('0x3'));var Redis=require('ioredis');var intUtil=require(_0x1726('0x4'));var config=require(_0x1726('0x5'));var logger=require(_0x1726('0x6'))(_0x1726('0x7'));config[_0x1726('0x8')]=_['defaults'](config[_0x1726('0x8')],{'host':_0x1726('0x9'),'port':0x18eb});var io=require(_0x1726('0xa'))(new Redis(config[_0x1726('0x8')]));function emit(_0xb9a919,_0x2ac637,_0x439632){io['to'](_0xb9a919)[_0x1726('0xb')](_0x2ac637,_0x439632);}var headers={'Content-Type':_0x1726('0xc'),'Accept':'application/json'};function getTicket(_0x192d20,_0x21eb75,_0x448310,_0x7e1c15,_0x1eb66){logger[_0x1726('0xd')]('Creating\x20new\x20ticket...');return request({'uri':util[_0x1726('0xe')](_0x1726('0xf'),_0x192d20[_0x1726('0x10')]),'method':_0x1726('0x11'),'body':{'ticket':_['merge']({'requester_id':_0x448310['id'],'submitter_id':_0x21eb75?_0x21eb75['id']:undefined,'assignee_id':_0x21eb75?_0x21eb75['id']:undefined,'tags':getTags(_0x7e1c15[_0x1726('0x12')],_0x1726('0x13')),'subject':intUtil[_0x1726('0x14')](_0x7e1c15[_0x1726('0x15')],_0x1eb66,'\x20'),'description':intUtil[_0x1726('0x14')](_0x7e1c15[_0x1726('0x16')],_0x1eb66,'\x0a'),'comment':{'public':![],'body':intUtil[_0x1726('0x14')](_0x7e1c15[_0x1726('0x16')],_0x1eb66,'\x0a')}},getCustomFields(_0x7e1c15[_0x1726('0x17')],_0x1eb66))}})[_0x1726('0x18')](function(_0x25c1cf){logger[_0x1726('0xd')]('Ticket\x20created!');return _0x25c1cf[_0x1726('0x19')];});}function getUser(_0x2a03dc,_0x2f0b55){if(intUtil[_0x1726('0x1a')](_0x2f0b55)){logger[_0x1726('0xd')](_0x1726('0x1b'),_0x2f0b55);return request({'uri':util['format']('%s/search.json',_0x2a03dc['remoteUri']),'qs':{'query':util[_0x1726('0xe')]('type:user\x20role:agent\x20email:%s',_0x2f0b55)}})['then'](function(_0x51e3a9){if(_0x51e3a9['count']){logger['info'](_0x1726('0x1c'));return _['find'](_0x51e3a9[_0x1726('0x1d')],{'email':_0x2f0b55,'role':'agent'});}else{logger[_0x1726('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1726('0xe')]('%s/users/me.json',_0x2a03dc[_0x1726('0x10')])})[_0x1726('0x18')](function(_0xf21c8b){logger[_0x1726('0xd')](_0x1726('0x1e'));return _0xf21c8b[_0x1726('0x1f')];});}});}else{logger[_0x1726('0xd')](_0x1726('0x20'));return request({'uri':util[_0x1726('0xe')](_0x1726('0x21'),_0x2a03dc[_0x1726('0x10')])})[_0x1726('0x18')](function(_0x56d692){logger[_0x1726('0xd')](_0x1726('0x1e'));return _0x56d692[_0x1726('0x1f')];});}}function getEndUser(_0x26d530,_0x16a9fa,_0x3d4ff6){logger['info'](_0x1726('0x22'),_0x3d4ff6);return request({'uri':util[_0x1726('0xe')](_0x1726('0x23'),_0x26d530[_0x1726('0x10')]),'qs':{'query':util[_0x1726('0xe')](_0x1726('0x24'),_0x3d4ff6)}})[_0x1726('0x18')](function(_0x4ceacf){var _0x3a7d13;if(_0x4ceacf[_0x1726('0x1d')][_0x1726('0x25')]){_0x4ceacf[_0x1726('0x1d')]=_[_0x1726('0x26')](_0x4ceacf[_0x1726('0x1d')],{'suspended':![],'role':_0x1726('0x27')});if(_0x4ceacf[_0x1726('0x1d')][_0x1726('0x25')]){_0x3a7d13=_['first'](_0x4ceacf[_0x1726('0x1d')]);}}if(_0x3a7d13){logger[_0x1726('0xd')]('Enduser\x20found!');return _0x3a7d13;}else{logger[_0x1726('0xd')](_0x1726('0x28'));return request({'uri':util[_0x1726('0xe')](_0x1726('0x29'),_0x26d530[_0x1726('0x10')]),'method':_0x1726('0x11'),'body':{'user':{'role':_0x1726('0x27'),'name':util['format'](_0x1726('0x2a'),_0x16a9fa||_0x3d4ff6),'phone':_0x3d4ff6}}})['then'](function(_0x202029){logger[_0x1726('0xd')](_0x1726('0x2b'));return _0x202029[_0x1726('0x1f')];});}});}function getAuth(_0x49128a){var _0x151220;if(_0x49128a[_0x1726('0x2c')]===_0x1726('0x2d')){_0x151220=util[_0x1726('0xe')](_0x1726('0x2e'),_0x49128a[_0x1726('0x2f')],_0x49128a[_0x1726('0x2d')]);}else if(_0x49128a[_0x1726('0x2c')]===_0x1726('0x30')){_0x151220=util[_0x1726('0xe')](_0x1726('0x31'),_0x49128a['username'],_0x49128a[_0x1726('0x30')]);}return util[_0x1726('0xe')](_0x1726('0x32'),new Buffer(_0x151220)[_0x1726('0x33')]('base64'));}function request(_0x429c44){logger[_0x1726('0x34')](_0x1726('0x35'),JSON['stringify'](_0x429c44));return rp(_[_0x1726('0x36')](_0x429c44,{'method':_0x1726('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x26ff15,_0xf6ea72){var _0x1d3f4c=[];if(_0x26ff15&&_0x26ff15['length']>0x0){_0x1d3f4c=_[_0x1726('0x38')](_0x26ff15,_0xf6ea72);}return _0x1d3f4c;}function getCustomFields(_0x3b3186,_0xc27554){var _0x4ca815=[];var _0x540782={'custom_fields':[]};if(_0x3b3186['length']>0x0){_[_0x1726('0x39')](_0x3b3186,function(_0x123b42){if(_[_0x1726('0x3a')]([_0x1726('0x3b'),_0x1726('0x3c')],_0x123b42[_0x1726('0x3d')])&&_0x123b42[_0x1726('0x3e')]&&!_0x123b42[_0x1726('0x3f')]){_0x540782[_0x123b42[_0x1726('0x3e')][_0x1726('0x40')]()]=_0x123b42[_0x1726('0x41')][_0x1726('0x33')]();}else if(_['includes']([_0x1726('0x3b'),_0x1726('0x3c')],_0x123b42[_0x1726('0x3d')])&&_0x123b42[_0x1726('0x42')]&&_0x123b42[_0x1726('0x3f')]){_0x540782['custom_fields'][_0x1726('0x43')]({'id':_0x123b42['idField'],'value':_0x123b42[_0x1726('0x41')][_0x1726('0x33')]()});}else if(_0x123b42[_0x1726('0x3d')]==='variable'&&_0x123b42['variableName']&&_0x123b42['idField']&&_0x123b42[_0x1726('0x3f')]){_0xc27554[_0x123b42['variableName']]&&_0x540782[_0x1726('0x44')]['push']({'id':_0x123b42[_0x1726('0x42')],'value':_0xc27554[_0x123b42[_0x1726('0x45')]]['toString']()});}else if(_0x123b42[_0x1726('0x3d')]==='customVariable'&&_0x123b42[_0x1726('0x46')]&&_0x123b42[_0x1726('0x46')][_0x1726('0x13')]&&_0x123b42[_0x1726('0x42')]&&_0x123b42['customField']){_0xc27554[_0x123b42[_0x1726('0x46')][_0x1726('0x13')]['toLowerCase']()]&&_0x540782[_0x1726('0x44')][_0x1726('0x43')]({'id':_0x123b42[_0x1726('0x42')],'value':_0xc27554[_0x123b42['Variable']['name'][_0x1726('0x40')]()][_0x1726('0x33')]()});}});}return _0x540782;}exports[_0x1726('0x47')]=function(_0x174e05,_0x39e143,_0x18f396,_0x98a7f0,_0x3ef0c1,_0x359b3e){var _0xc48619,_0x57d62e;_0x359b3e['remoteUri']=intUtil[_0x1726('0x48')](_0x359b3e[_0x1726('0x10')]);_0x359b3e[_0x1726('0x49')]=intUtil['stripTrailingSlash'](_0x359b3e[_0x1726('0x49')]);if(_0x3ef0c1&&_0x3ef0c1[_0x1726('0x4a')]){logger[_0x1726('0xd')]('[QUEUE]','Recording\x20is\x20enabled!');_0x39e143['recordingURL']=util[_0x1726('0xe')](_0x1726('0x4b'),_0x359b3e[_0x1726('0x49')],_0x39e143[_0x1726('0x4c')],md5(_0x39e143[_0x1726('0x4c')]));}else{_0x39e143['recordingURL']='';}headers[_0x1726('0x4d')]=getAuth(_0x359b3e);return getUser(_0x359b3e,_0x98a7f0[_0x1726('0x4e')])['then'](function(_0x5df2f3){_0xc48619=_0x5df2f3;logger['info'](_0x1726('0x4f'),_0xc48619['id']);return getEndUser(_0x359b3e,_0x39e143[_0x1726('0x50')],_0x39e143[_0x1726('0x51')]);})[_0x1726('0x18')](function(_0x496a83){_0x57d62e=_0x496a83;logger[_0x1726('0xd')](_0x1726('0x52'),_0x57d62e['id']);return getTicket(_0x359b3e,_0xc48619,_0x57d62e,_0x18f396,_0x39e143);})[_0x1726('0x18')](function(_0x262e44){if(_0x262e44){logger['info'](_0x1726('0x53'),_0x262e44['id']);switch(_0x359b3e[_0x1726('0x3d')]){case'integrationTab':logger['info']('[QUEUE]',_0x1726('0x54'));return request({'uri':util[_0x1726('0xe')](_0x1726('0x55'),_0x359b3e[_0x1726('0x10')],_0xc48619['id'],_0x262e44['id']),'method':'POST'});case'newTab':logger['info'](_0x1726('0x56'),_0x1726('0x57'));emit(util[_0x1726('0xe')](_0x1726('0x58'),_0x98a7f0[_0x1726('0x13')]),_0x1726('0x59'),{'uri':util[_0x1726('0xe')](_0x1726('0x5a'),_0x359b3e[_0x1726('0x10')]['replace'](_0x1726('0x5b'),''),_0x262e44['id'])});break;default:logger[_0x1726('0x5c')]('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x1726('0x5d')](function(_0x48fc7c){logger[_0x1726('0x5c')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x1726('0x5e')](_0x48fc7c,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x1d4dfa,_0x1ed8f8,_0x161ee5,_0x47aff7,_0xa5f2a3,_0x1b2224,_0x57681e){var _0x58e6ac,_0xb7d086;_0x1b2224[_0x1726('0x10')]=intUtil[_0x1726('0x48')](_0x1b2224[_0x1726('0x10')]);_0x1b2224[_0x1726('0x49')]=intUtil[_0x1726('0x48')](_0x1b2224[_0x1726('0x49')]);if(_0x57681e&&_0x57681e[_0x1726('0x5f')]&&_0x57681e['recordingFormat']!==_0x1726('0x60')){logger['info'](_0x1726('0x61'),_0x1726('0x62'));_0x1ed8f8[_0x1726('0x63')]=util[_0x1726('0xe')](_0x1726('0x4b'),_0x1b2224[_0x1726('0x49')],_0x1ed8f8[_0x1726('0x4c')],md5(_0x1ed8f8[_0x1726('0x4c')]));}headers[_0x1726('0x4d')]=getAuth(_0x1b2224);return getUser(_0x1b2224,_0x47aff7[_0x1726('0x4e')])[_0x1726('0x18')](function(_0x14f3b5){_0x58e6ac=_0x14f3b5;logger[_0x1726('0xd')](_0x1726('0x4f'),_0x58e6ac['id']);return getEndUser(_0x1b2224,_0x1ed8f8['destcalleridname'],_0x1ed8f8['destcalleridnum']);})['then'](function(_0x1e7f34){_0xb7d086=_0x1e7f34;logger['info'](_0x1726('0x52'),_0xb7d086['id']);return getTicket(_0x1b2224,_0x58e6ac,_0xb7d086,_0x161ee5,_0x1ed8f8);})[_0x1726('0x18')](function(_0x36c2ba){if(_0x36c2ba){logger['info'](_0x1726('0x53'),_0x36c2ba['id']);switch(_0x1b2224[_0x1726('0x3d')]){case _0x1726('0x64'):logger[_0x1726('0xd')]('[OUTBOUND]',_0x1726('0x54'));return request({'uri':util[_0x1726('0xe')](_0x1726('0x55'),_0x1b2224[_0x1726('0x10')],_0x58e6ac['id'],_0x36c2ba['id']),'method':_0x1726('0x11')});case _0x1726('0x65'):logger[_0x1726('0xd')](_0x1726('0x61'),_0x1726('0x57'));emit(util['format'](_0x1726('0x58'),_0x47aff7['name']),_0x1726('0x59'),{'uri':util[_0x1726('0xe')](_0x1726('0x5a'),_0x1b2224[_0x1726('0x10')][_0x1726('0x66')](_0x1726('0x5b'),''),_0x36c2ba['id'])});break;default:logger['error'](_0x1726('0x61'),_0x1726('0x67'));}}})['catch'](function(_0x51edbe){logger[_0x1726('0x5c')](_0x1726('0x68'),util['inspect'](_0x51edbe,{'showHidden':!![],'depth':null}));});};exports[_0x1726('0x69')]=function(_0x13b278,_0x3cfbc6,_0x260fc5,_0x59a7d9,_0x273cba,_0x2fbb06){var _0x55d4ae,_0x2002c9;_0x2fbb06[_0x1726('0x10')]=intUtil['stripTrailingSlash'](_0x2fbb06[_0x1726('0x10')]);_0x2fbb06[_0x1726('0x49')]=intUtil['stripTrailingSlash'](_0x2fbb06[_0x1726('0x49')]);if(_0x273cba&&_0x273cba['monitor_format']){logger[_0x1726('0xd')]('['+_0x3cfbc6[_0x1726('0x6a')][_0x1726('0x6b')]()+']',_0x1726('0x62'));_0x3cfbc6[_0x1726('0x63')]=util[_0x1726('0xe')](_0x1726('0x4b'),_0x2fbb06['serverUrl'],_0x3cfbc6[_0x1726('0x4c')],md5(_0x3cfbc6[_0x1726('0x4c')]));}else{_0x3cfbc6['recordingURL']='';}headers[_0x1726('0x4d')]=getAuth(_0x2fbb06);return getUser(_0x2fbb06)[_0x1726('0x18')](function(_0x3a8b49){_0x55d4ae=_0x3a8b49;logger['info'](_0x1726('0x4f'),_0x55d4ae['id']);return getEndUser(_0x2fbb06,_0x3cfbc6[_0x1726('0x50')],_0x3cfbc6[_0x1726('0x51')]);})[_0x1726('0x18')](function(_0x49a6e5){_0x2002c9=_0x49a6e5;logger[_0x1726('0xd')](_0x1726('0x52'),_0x2002c9['id']);return getTicket(_0x2fbb06,_0x55d4ae,_0x2002c9,_0x260fc5,_0x3cfbc6);})[_0x1726('0x18')](function(_0x15a2ed){if(_0x15a2ed){logger[_0x1726('0xd')](_0x1726('0x53'),_0x15a2ed['id']);}})[_0x1726('0x5d')](function(_0x28c382){logger[_0x1726('0x5c')]('['+_0x3cfbc6['lastevent'][_0x1726('0x6b')]()+']'+_0x1726('0x6c'),util[_0x1726('0x5e')](_0x28c382,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xe20b=['customField','nameField','toLowerCase','string','idField','custom_fields','push','content','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','user:%s','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','toUpperCase','The\x20User\x20ID\x20is:','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','localhost','redis','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','POST','merge','Tags','name','Subjects','getString','Descriptions','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','type:user\x20role:end-user\x20phone:%s','length','end-user','first','Enduser\x20found!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','authType','token','toString','base64','debug','stringify','GET','map','includes','picklist','type'];(function(_0x42b1f6,_0x3df91b){var _0x37ee4f=function(_0x55df2){while(--_0x55df2){_0x42b1f6['push'](_0x42b1f6['shift']());}};_0x37ee4f(++_0x3df91b);}(_0xe20b,0x180));var _0xbe20=function(_0x509ce7,_0x3fe887){_0x509ce7=_0x509ce7-0x0;var _0x5752b7=_0xe20b[_0x509ce7];return _0x5752b7;};'use strict';var _=require(_0xbe20('0x0'));var rp=require('request-promise');var md5=require(_0xbe20('0x1'));var util=require(_0xbe20('0x2'));var Redis=require(_0xbe20('0x3'));var intUtil=require(_0xbe20('0x4'));var config=require(_0xbe20('0x5'));var logger=require(_0xbe20('0x6'))(_0xbe20('0x7'));config['redis']=_[_0xbe20('0x8')](config['redis'],{'host':_0xbe20('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xbe20('0xa')]));function emit(_0x5e12b5,_0x14ff48,_0x5bb4ef){io['to'](_0x5e12b5)['emit'](_0x14ff48,_0x5bb4ef);}var headers={'Content-Type':'application/json','Accept':_0xbe20('0xb')};function getTicket(_0x48e5d1,_0x18f6ce,_0x13b0be,_0x1e6169,_0x59cf82){logger[_0xbe20('0xc')](_0xbe20('0xd'));return request({'uri':util[_0xbe20('0xe')](_0xbe20('0xf'),_0x48e5d1['remoteUri']),'method':_0xbe20('0x10'),'body':{'ticket':_[_0xbe20('0x11')]({'requester_id':_0x13b0be['id'],'submitter_id':_0x18f6ce?_0x18f6ce['id']:undefined,'assignee_id':_0x18f6ce?_0x18f6ce['id']:undefined,'tags':getTags(_0x1e6169[_0xbe20('0x12')],_0xbe20('0x13')),'subject':intUtil['getString'](_0x1e6169[_0xbe20('0x14')],_0x59cf82,'\x20'),'description':intUtil[_0xbe20('0x15')](_0x1e6169[_0xbe20('0x16')],_0x59cf82,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x1e6169[_0xbe20('0x16')],_0x59cf82,'\x0a')}},getCustomFields(_0x1e6169['Fields'],_0x59cf82))}})['then'](function(_0x489672){logger[_0xbe20('0xc')](_0xbe20('0x17'));return _0x489672['ticket'];});}function getUser(_0x256aaa,_0x2a1710){if(intUtil[_0xbe20('0x18')](_0x2a1710)){logger[_0xbe20('0xc')](_0xbe20('0x19'),_0x2a1710);return request({'uri':util['format'](_0xbe20('0x1a'),_0x256aaa[_0xbe20('0x1b')]),'qs':{'query':util[_0xbe20('0xe')](_0xbe20('0x1c'),_0x2a1710)}})[_0xbe20('0x1d')](function(_0x5bc5f4){if(_0x5bc5f4[_0xbe20('0x1e')]){logger[_0xbe20('0xc')](_0xbe20('0x1f'));return _[_0xbe20('0x20')](_0x5bc5f4[_0xbe20('0x21')],{'email':_0x2a1710,'role':_0xbe20('0x22')});}else{logger['info'](_0xbe20('0x23'));return request({'uri':util[_0xbe20('0xe')]('%s/users/me.json',_0x256aaa['remoteUri'])})['then'](function(_0x546d64){logger[_0xbe20('0xc')](_0xbe20('0x24'));return _0x546d64['user'];});}});}else{logger[_0xbe20('0xc')](_0xbe20('0x23'));return request({'uri':util['format']('%s/users/me.json',_0x256aaa[_0xbe20('0x1b')])})[_0xbe20('0x1d')](function(_0x5cec24){logger['info'](_0xbe20('0x24'));return _0x5cec24[_0xbe20('0x25')];});}}function getEndUser(_0x31f5e9,_0x391079,_0x5aba22){logger[_0xbe20('0xc')]('Searching\x20enduser\x20with\x20phone',_0x5aba22);return request({'uri':util[_0xbe20('0xe')](_0xbe20('0x1a'),_0x31f5e9[_0xbe20('0x1b')]),'qs':{'query':util[_0xbe20('0xe')](_0xbe20('0x26'),_0x5aba22)}})[_0xbe20('0x1d')](function(_0x4723c2){var _0x16d755;if(_0x4723c2[_0xbe20('0x21')][_0xbe20('0x27')]){_0x4723c2[_0xbe20('0x21')]=_['filter'](_0x4723c2[_0xbe20('0x21')],{'suspended':![],'role':_0xbe20('0x28')});if(_0x4723c2[_0xbe20('0x21')]['length']){_0x16d755=_[_0xbe20('0x29')](_0x4723c2[_0xbe20('0x21')]);}}if(_0x16d755){logger['info'](_0xbe20('0x2a'));return _0x16d755;}else{logger[_0xbe20('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe20('0xe')](_0xbe20('0x2b'),_0x31f5e9[_0xbe20('0x1b')]),'method':_0xbe20('0x10'),'body':{'user':{'role':_0xbe20('0x28'),'name':util[_0xbe20('0xe')](_0xbe20('0x2c'),_0x391079||_0x5aba22),'phone':_0x5aba22}}})['then'](function(_0x2ff6a3){logger[_0xbe20('0xc')](_0xbe20('0x2d'));return _0x2ff6a3['user'];});}});}function getAuth(_0x4e7879){var _0x375afd;if(_0x4e7879['authType']===_0xbe20('0x2e')){_0x375afd=util['format'](_0xbe20('0x2f'),_0x4e7879[_0xbe20('0x30')],_0x4e7879[_0xbe20('0x2e')]);}else if(_0x4e7879[_0xbe20('0x31')]===_0xbe20('0x32')){_0x375afd=util[_0xbe20('0xe')]('%s/token:%s',_0x4e7879['username'],_0x4e7879[_0xbe20('0x32')]);}return util[_0xbe20('0xe')]('Basic\x20%s',new Buffer(_0x375afd)[_0xbe20('0x33')](_0xbe20('0x34')));}function request(_0x56f320){logger[_0xbe20('0x35')]('[HTTP]',JSON[_0xbe20('0x36')](_0x56f320));return rp(_[_0xbe20('0x8')](_0x56f320,{'method':_0xbe20('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x28609a,_0x485df9){var _0x400914=[];if(_0x28609a&&_0x28609a[_0xbe20('0x27')]>0x0){_0x400914=_[_0xbe20('0x38')](_0x28609a,_0x485df9);}return _0x400914;}function getCustomFields(_0x507b27,_0x2a6d97){var _0x112601=[];var _0x4be095={'custom_fields':[]};if(_0x507b27[_0xbe20('0x27')]>0x0){_['forEach'](_0x507b27,function(_0x3ae11c){if(_[_0xbe20('0x39')](['string',_0xbe20('0x3a')],_0x3ae11c[_0xbe20('0x3b')])&&_0x3ae11c['nameField']&&!_0x3ae11c[_0xbe20('0x3c')]){_0x4be095[_0x3ae11c[_0xbe20('0x3d')][_0xbe20('0x3e')]()]=_0x3ae11c['content'][_0xbe20('0x33')]();}else if(_['includes']([_0xbe20('0x3f'),_0xbe20('0x3a')],_0x3ae11c['type'])&&_0x3ae11c[_0xbe20('0x40')]&&_0x3ae11c[_0xbe20('0x3c')]){_0x4be095[_0xbe20('0x41')][_0xbe20('0x42')]({'id':_0x3ae11c[_0xbe20('0x40')],'value':_0x3ae11c[_0xbe20('0x43')][_0xbe20('0x33')]()});}else if(_0x3ae11c['type']===_0xbe20('0x44')&&_0x3ae11c[_0xbe20('0x45')]&&_0x3ae11c['idField']&&_0x3ae11c[_0xbe20('0x3c')]){_0x2a6d97[_0x3ae11c[_0xbe20('0x45')]]&&_0x4be095['custom_fields'][_0xbe20('0x42')]({'id':_0x3ae11c[_0xbe20('0x40')],'value':_0x2a6d97[_0x3ae11c['variableName']][_0xbe20('0x33')]()});}else if(_0x3ae11c[_0xbe20('0x3b')]===_0xbe20('0x46')&&_0x3ae11c['Variable']&&_0x3ae11c[_0xbe20('0x47')][_0xbe20('0x13')]&&_0x3ae11c['idField']&&_0x3ae11c['customField']){_0x2a6d97[_0x3ae11c[_0xbe20('0x47')][_0xbe20('0x13')][_0xbe20('0x3e')]()]&&_0x4be095[_0xbe20('0x41')][_0xbe20('0x42')]({'id':_0x3ae11c['idField'],'value':_0x2a6d97[_0x3ae11c[_0xbe20('0x47')][_0xbe20('0x13')][_0xbe20('0x3e')]()]['toString']()});}});}return _0x4be095;}exports[_0xbe20('0x48')]=function(_0x1a8270,_0x249821,_0x119283,_0x410dd6,_0x57f9bb,_0x34e3a5){var _0x290986,_0x2abfb5;_0x34e3a5[_0xbe20('0x1b')]=intUtil[_0xbe20('0x49')](_0x34e3a5[_0xbe20('0x1b')]);_0x34e3a5[_0xbe20('0x4a')]=intUtil[_0xbe20('0x49')](_0x34e3a5[_0xbe20('0x4a')]);if(_0x57f9bb&&_0x57f9bb[_0xbe20('0x4b')]){logger[_0xbe20('0xc')]('[QUEUE]',_0xbe20('0x4c'));_0x249821[_0xbe20('0x4d')]=util[_0xbe20('0xe')](_0xbe20('0x4e'),_0x34e3a5[_0xbe20('0x4a')],_0x249821[_0xbe20('0x4f')],md5(_0x249821['uniqueid']));}else{_0x249821['recordingURL']='';}headers['Authorization']=getAuth(_0x34e3a5);return getUser(_0x34e3a5,_0x410dd6['email'])[_0xbe20('0x1d')](function(_0x73dbc1){_0x290986=_0x73dbc1;logger['info']('The\x20User\x20ID\x20is:',_0x290986['id']);return getEndUser(_0x34e3a5,_0x249821[_0xbe20('0x50')],_0x249821[_0xbe20('0x51')]);})['then'](function(_0x316e8d){_0x2abfb5=_0x316e8d;logger[_0xbe20('0xc')](_0xbe20('0x52'),_0x2abfb5['id']);return getTicket(_0x34e3a5,_0x290986,_0x2abfb5,_0x119283,_0x249821);})[_0xbe20('0x1d')](function(_0x88eb09){if(_0x88eb09){logger[_0xbe20('0xc')](_0xbe20('0x53'),_0x88eb09['id']);switch(_0x34e3a5['type']){case'integrationTab':logger[_0xbe20('0xc')](_0xbe20('0x54'),_0xbe20('0x55'));return request({'uri':util[_0xbe20('0xe')](_0xbe20('0x56'),_0x34e3a5[_0xbe20('0x1b')],_0x290986['id'],_0x88eb09['id']),'method':_0xbe20('0x10')});case _0xbe20('0x57'):logger[_0xbe20('0xc')]('[QUEUE]',_0xbe20('0x58'));emit(util['format']('user:%s',_0x410dd6['name']),_0xbe20('0x59'),{'uri':util[_0xbe20('0xe')]('%s/agent/tickets/%s',_0x34e3a5[_0xbe20('0x1b')]['replace'](_0xbe20('0x5a'),''),_0x88eb09['id'])});break;default:logger[_0xbe20('0x5b')]('[QUEUE]',_0xbe20('0x5c'));}}})[_0xbe20('0x5d')](function(_0x15b144){logger[_0xbe20('0x5b')](_0xbe20('0x5e'),util['inspect'](_0x15b144,{'showHidden':!![],'depth':null}));});};exports[_0xbe20('0x5f')]=function(_0x27ac4b,_0x5263fe,_0x47a8ac,_0x54fdfe,_0x5090bd,_0x50c9b2,_0x4d4fe9){var _0x1490ea,_0x7fc94e;_0x50c9b2[_0xbe20('0x1b')]=intUtil['stripTrailingSlash'](_0x50c9b2[_0xbe20('0x1b')]);_0x50c9b2[_0xbe20('0x4a')]=intUtil[_0xbe20('0x49')](_0x50c9b2[_0xbe20('0x4a')]);if(_0x4d4fe9&&_0x4d4fe9[_0xbe20('0x60')]&&_0x4d4fe9['recordingFormat']!==_0xbe20('0x61')){logger[_0xbe20('0xc')](_0xbe20('0x62'),_0xbe20('0x4c'));_0x5263fe[_0xbe20('0x4d')]=util['format'](_0xbe20('0x4e'),_0x50c9b2[_0xbe20('0x4a')],_0x5263fe['uniqueid'],md5(_0x5263fe[_0xbe20('0x4f')]));}headers[_0xbe20('0x63')]=getAuth(_0x50c9b2);return getUser(_0x50c9b2,_0x54fdfe['email'])[_0xbe20('0x1d')](function(_0x280084){_0x1490ea=_0x280084;logger[_0xbe20('0xc')]('The\x20User\x20ID\x20is:',_0x1490ea['id']);return getEndUser(_0x50c9b2,_0x5263fe[_0xbe20('0x64')],_0x5263fe[_0xbe20('0x65')]);})[_0xbe20('0x1d')](function(_0x2e94ef){_0x7fc94e=_0x2e94ef;logger['info'](_0xbe20('0x52'),_0x7fc94e['id']);return getTicket(_0x50c9b2,_0x1490ea,_0x7fc94e,_0x47a8ac,_0x5263fe);})['then'](function(_0x5570ec){if(_0x5570ec){logger[_0xbe20('0xc')](_0xbe20('0x53'),_0x5570ec['id']);switch(_0x50c9b2['type']){case _0xbe20('0x66'):logger[_0xbe20('0xc')](_0xbe20('0x62'),_0xbe20('0x55'));return request({'uri':util[_0xbe20('0xe')](_0xbe20('0x56'),_0x50c9b2[_0xbe20('0x1b')],_0x1490ea['id'],_0x5570ec['id']),'method':_0xbe20('0x10')});case _0xbe20('0x57'):logger[_0xbe20('0xc')](_0xbe20('0x62'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xbe20('0xe')](_0xbe20('0x67'),_0x54fdfe[_0xbe20('0x13')]),_0xbe20('0x59'),{'uri':util[_0xbe20('0xe')]('%s/agent/tickets/%s',_0x50c9b2[_0xbe20('0x1b')][_0xbe20('0x68')](_0xbe20('0x5a'),''),_0x5570ec['id'])});break;default:logger[_0xbe20('0x5b')](_0xbe20('0x62'),_0xbe20('0x5c'));}}})[_0xbe20('0x5d')](function(_0x1880ed){logger[_0xbe20('0x5b')](_0xbe20('0x69'),util[_0xbe20('0x6a')](_0x1880ed,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x2d712c,_0x18f99d,_0x46959e,_0x8a883b,_0x5e2440,_0x76a181){var _0x2b23b6,_0x34bdbc;_0x76a181[_0xbe20('0x1b')]=intUtil[_0xbe20('0x49')](_0x76a181['remoteUri']);_0x76a181[_0xbe20('0x4a')]=intUtil[_0xbe20('0x49')](_0x76a181[_0xbe20('0x4a')]);if(_0x5e2440&&_0x5e2440[_0xbe20('0x4b')]){logger[_0xbe20('0xc')]('['+_0x18f99d['lastevent'][_0xbe20('0x6b')]()+']',_0xbe20('0x4c'));_0x18f99d[_0xbe20('0x4d')]=util['format'](_0xbe20('0x4e'),_0x76a181['serverUrl'],_0x18f99d[_0xbe20('0x4f')],md5(_0x18f99d[_0xbe20('0x4f')]));}else{_0x18f99d[_0xbe20('0x4d')]='';}headers[_0xbe20('0x63')]=getAuth(_0x76a181);return getUser(_0x76a181)[_0xbe20('0x1d')](function(_0x1231d7){_0x2b23b6=_0x1231d7;logger[_0xbe20('0xc')](_0xbe20('0x6c'),_0x2b23b6['id']);return getEndUser(_0x76a181,_0x18f99d['calleridname'],_0x18f99d[_0xbe20('0x51')]);})[_0xbe20('0x1d')](function(_0x5d743a){_0x34bdbc=_0x5d743a;logger[_0xbe20('0xc')]('The\x20Enduser\x20ID\x20is:',_0x34bdbc['id']);return getTicket(_0x76a181,_0x2b23b6,_0x34bdbc,_0x46959e,_0x18f99d);})[_0xbe20('0x1d')](function(_0x2d23d6){if(_0x2d23d6){logger[_0xbe20('0xc')]('The\x20Ticket\x20ID\x20is:',_0x2d23d6['id']);}})[_0xbe20('0x5d')](function(_0x1a0eeb){logger[_0xbe20('0x5b')]('['+_0x18f99d[_0xbe20('0x6d')][_0xbe20('0x6b')]()+']'+_0xbe20('0x6e'),util[_0xbe20('0x6a')](_0x1a0eeb,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index f26adb5..9078e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0884=['calleridname','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','The\x20User\x20ID\x20is:','destcalleridname','Outbound','The\x20Call\x20ID\x20is:','unmanaged','monitor_format','toUpperCase','lastevent','lodash','request-promise','md5','util','./util','moment','ioredis','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','clientSecret','refresh_token','then','add','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','email','Agent\x20found!','Using\x20the\x20admin\x20account!','findIndex','Administrator','user','profile','info','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','catch','startCase','first_name','last_name','SUCCESS','details','moduleCreate','Error:\x20','log','CREATE\x20ERROR','GET','Zoho-oauthtoken\x20','moduleSearch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','https://www.zohoapis.','lead','Owner','role','administrator','Subject','getString','Description','Descriptions','First_Name','Last_Name','Full_Name','$se_module','talktime','utc','format','mm:ss','answertime','endtime','Call_Duration','YYYY-MM-DDTHH:mm:ss','starttime','called','Called','connect','Answered','rejected','Call_Result','Rejected','Abandoned','Timeout','Call_Start_Time','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','code','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','com'];(function(_0x2d660a,_0x156b96){var _0x3fe6c9=function(_0x576b0d){while(--_0x576b0d){_0x2d660a['push'](_0x2d660a['shift']());}};_0x3fe6c9(++_0x156b96);}(_0x0884,0xb3));var _0x4088=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0884[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4088('0x0'));var rp=require(_0x4088('0x1'));var md5=require(_0x4088('0x2'));var util=require(_0x4088('0x3'));var intUtil=require(_0x4088('0x4'));var moment=require(_0x4088('0x5'));var Redis=require(_0x4088('0x6'));var BPromise=require('bluebird');var config=require(_0x4088('0x7'));var logger=require(_0x4088('0x8'))(_0x4088('0x9'));config[_0x4088('0xa')]=_[_0x4088('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4088('0xc'))(new Redis(config['redis']));function emit(_0x680227,_0x8f007c,_0x38e9d9){io['to'](_0x680227)[_0x4088('0xd')](_0x8f007c,_0x38e9d9);}function request(_0x32fbb6){logger[_0x4088('0xe')](_0x4088('0xf'),JSON[_0x4088('0x10')](_0x32fbb6));return rp(_0x32fbb6);}function getCustomFields(_0x295777,_0x5bd635){var _0x194758={};if(_0x295777[_0x4088('0x11')]>0x0){_[_0x4088('0x12')](_0x295777,function(_0x4933f5){if(_[_0x4088('0x13')]([_0x4088('0x14'),'picklist'],_0x4933f5[_0x4088('0x15')])&&_0x4933f5[_0x4088('0x16')]){_0x194758[_0x4933f5[_0x4088('0x16')]]=_0x4933f5[_0x4088('0x17')][_0x4088('0x18')]();}else if(_0x4933f5[_0x4088('0x15')]===_0x4088('0x19')&&_0x4933f5[_0x4088('0x1a')]&&_0x4933f5[_0x4088('0x16')]&&_0x5bd635[_0x4933f5[_0x4088('0x1a')]]){_0x194758[_0x4933f5[_0x4088('0x16')]]=_0x5bd635[_0x4933f5[_0x4088('0x1a')]][_0x4088('0x18')]();}else if(_0x4933f5[_0x4088('0x15')]===_0x4088('0x1b')&&_0x4933f5[_0x4088('0x1c')]&&_0x4933f5[_0x4088('0x1c')][_0x4088('0x1d')]&&_0x4933f5['idField']&&_0x5bd635[_0x4933f5[_0x4088('0x1c')][_0x4088('0x1d')][_0x4088('0x1e')]()]){_0x194758[_0x4933f5[_0x4088('0x16')]]=_0x5bd635[_0x4933f5[_0x4088('0x1c')][_0x4088('0x1d')][_0x4088('0x1e')]()][_0x4088('0x18')]();}});}return _0x194758;}function getName(_0x38a626){if(_0x38a626[_0x4088('0x1f')]('\x20')>0x0){var _0x51460d=_0x38a626[_0x4088('0x20')](/ (.+)/);if(_0x51460d[0x1]){return _0x51460d;}}return[_0x38a626,_0x38a626];}var accountsTokens={};function getAccessToken(_0x4b887e){return new Promise(function(_0x5248ca,_0x48c263){if(!_['isNil'](accountsTokens[_0x4b887e['id']])&&!_[_0x4088('0x21')](accountsTokens[_0x4b887e['id']][_0x4088('0x22')])){if(moment()[_0x4088('0x23')](accountsTokens[_0x4b887e['id']][_0x4088('0x24')])){_0x5248ca(accountsTokens[_0x4b887e['id']]['access_token']);}}var _0x706539;switch(_0x4b887e[_0x4088('0x25')]){case'US':_0x706539=_0x4088('0x26');break;case'AU':_0x706539='https://accounts.zoho.com.au';break;case'EU':_0x706539='https://accounts.zoho.eu';break;case'IN':_0x706539=_0x4088('0x27');break;case'CN':_0x706539=_0x4088('0x28');break;default:_0x706539=_0x4088('0x29');break;}var _0x159158={'method':_0x4088('0x2a'),'uri':_0x706539+_0x4088('0x2b'),'qs':{'refresh_token':_0x4b887e['refreshToken'],'client_id':_0x4b887e['clientId'],'client_secret':_0x4b887e[_0x4088('0x2c')],'grant_type':_0x4088('0x2d')},'json':!![]};return rp(_0x159158)[_0x4088('0x2e')](function(_0x3f49f6){accountsTokens[_0x4b887e['id']]={'access_token':_0x3f49f6[_0x4088('0x22')],'expires_in':moment()[_0x4088('0x2f')](_0x3f49f6[_0x4088('0x24')],'seconds')};_0x5248ca(_0x3f49f6[_0x4088('0x22')]);})['catch'](function(_0x51ae50){logger[_0x4088('0x30')](_0x4088('0x31'),_0x51ae50[_0x4088('0x32')]);_0x48c263(_0x51ae50);});});}function getUser(_0x5b2b91,_0x2b0a9a,_0x478376,_0x2bc7dd){logger['info'](_0x4088('0x33'));return request({'method':'GET','uri':util['format'](_0x4088('0x34'),_0x2b0a9a),'qs':{'type':_0x4088('0x35')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x5b2b91},'json':!![]})[_0x4088('0x2e')](function(_0x5c24a7){if(_0x5c24a7[_0x4088('0x36')]){var _0x170399=-0x1;if(_[_0x4088('0x37')](_0x5c24a7[_0x4088('0x36')])){if(!_[_0x4088('0x21')](_0x2bc7dd)){_0x170399=_['findIndex'](_0x5c24a7[_0x4088('0x36')],function(_0xf6e1c7){return _0xf6e1c7[_0x4088('0x38')]===_0x2bc7dd;});}if(_0x170399>=0x0){logger['info'](_0x4088('0x39'));}else{logger['info'](_0x4088('0x3a'));_0x170399=_[_0x4088('0x3b')](_0x5c24a7['users'],function(_0x1222ad){return _0x1222ad['profile'][_0x4088('0x1d')]===_0x4088('0x3c');});}return _0x5c24a7[_0x4088('0x36')][_0x170399];}else{if(_0x5c24a7[_0x4088('0x3d')][_0x4088('0x3e')][_0x4088('0x1d')]==='Administrator'){logger[_0x4088('0x3f')](_0x4088('0x3a'));user=_0x5c24a7['user'];return user;}else{logger[_0x4088('0x30')](_0x4088('0x40'),JSON['stringify'](_0x5c24a7));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x4088('0x10')](_0x5c24a7));}}}else{logger[_0x4088('0x30')](_0x4088('0x40'),JSON[_0x4088('0x10')](_0x5c24a7));throw new Error(_0x4088('0x41')+JSON[_0x4088('0x10')](_0x5c24a7));}})['catch'](function(_0x350f94){console[_0x4088('0x30')](_0x350f94);});}function getZohoUser(_0x2a8e6f,_0x539601){return new BPromise(function(_0x4204ab,_0x1e3363){request(_0x2a8e6f)['then'](function(_0x10942b){var _0x41faf5=null;if(_0x10942b){_0x41faf5=_0x10942b[_0x4088('0x42')][0x0];_0x41faf5[_0x4088('0x43')]=_0x539601;}_0x4204ab(_0x41faf5);})[_0x4088('0x44')](function(_0x265c18){_0x1e3363(_0x265c18);});});}function createEndUser(_0xd7f4bc,_0x1febed,_0x30d3ef,_0x3ed07f,_0x2089bc,_0x4d0033){var _0x30d3ef=getName(_0x30d3ef);return request({'method':_0x4088('0x2a'),'uri':'https://www.zohoapis.'+_0x1febed+'/crm/v2/'+_[_0x4088('0x45')](_0x4d0033['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x30d3ef[0x1],'First_Name':_0x30d3ef[0x0],'Phone':_0x3ed07f,'Owner':{'name':!_['isNil'](_0x2089bc['role'][_0x4088('0x1d')])?_0x2089bc['role'][_0x4088('0x1d')]:!_[_0x4088('0x21')](_0x2089bc[_0x4088('0x46')])?_0x2089bc[_0x4088('0x46')]+'\x20'+_0x2089bc[_0x4088('0x47')]:_0x2089bc['last_name'],'id':_0x2089bc['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0xd7f4bc},'json':!![]})[_0x4088('0x2e')](function(_0x3795f4){if(_0x3795f4&&_0x3795f4[_0x4088('0x42')][0x0]['code']===_0x4088('0x48')){var _0x1084c5=_0x3795f4['data'][0x0][_0x4088('0x49')];_0x1084c5[_0x4088('0x43')]=_[_0x4088('0x45')](_0x4d0033[_0x4088('0x4a')])+'s';return _0x1084c5;}logger[_0x4088('0x30')](_0x4088('0x40'),JSON[_0x4088('0x10')](data));throw new Error(_0x4088('0x4b')+JSON[_0x4088('0x10')](data));})[_0x4088('0x44')](function(_0x36531f){console[_0x4088('0x4c')](_0x4088('0x4d'),_0x36531f);});}function getEndUser(_0x2b4c43,_0xbd6c10,_0x2bbcd9,_0x37c804,_0x19f931,_0x15fbda,_0x4c61ff){var _0x367ca5={'method':_0x4088('0x4e'),'uri':'','headers':{'Authorization':_0x4088('0x4f')+_0x2b4c43},'json':!![]};switch(_0x4c61ff[_0x4088('0x50')]){case _0x4088('0x51'):_0x367ca5['uri']='https://www.zohoapis.'+_0xbd6c10+_0x4088('0x52')+_0x19f931+'))';return getZohoUser(_0x367ca5,_0x4088('0x53'))[_0x4088('0x2e')](function(_0x4ba670){if(_0x4ba670)return _0x4ba670;_0x367ca5[_0x4088('0x54')]='https://www.zohoapis.'+_0xbd6c10+_0x4088('0x55')+_0x19f931+'))';return getZohoUser(_0x367ca5,_0x4088('0x56'))[_0x4088('0x2e')](function(_0x557576){if(_0x557576)return _0x557576;if(_0x4c61ff[_0x4088('0x4a')]!=_0x4088('0x57')){return createEndUser(_0x2b4c43,_0xbd6c10,_0x37c804,_0x19f931,_0x15fbda,_0x4c61ff);}else{return{};}});});break;case _0x4088('0x58'):_0x367ca5[_0x4088('0x54')]=_0x4088('0x59')+_0xbd6c10+_0x4088('0x52')+_0x19f931+'))';return getZohoUser(_0x367ca5,_0x4088('0x53'))[_0x4088('0x2e')](function(_0x6af70){if(_0x6af70)return _0x6af70;if(_0x4c61ff[_0x4088('0x4a')]!=_0x4088('0x57')){return createEndUser(_0x2b4c43,_0xbd6c10,_0x37c804,_0x19f931,_0x15fbda,_0x4c61ff);}else{return{};}});break;case _0x4088('0x5a'):_0x367ca5[_0x4088('0x54')]=_0x4088('0x59')+_0xbd6c10+_0x4088('0x55')+_0x19f931+'))';return getZohoUser(_0x367ca5,_0x4088('0x56'))['then'](function(_0x522a37){if(_0x522a37)return _0x522a37;if(_0x4c61ff[_0x4088('0x4a')]!=_0x4088('0x57')){return createEndUser(_0x2b4c43,_0xbd6c10,_0x37c804,_0x19f931,_0x15fbda,_0x4c61ff);}else{return{};}});break;}}function getCall(_0x19e292,_0x340a95,_0x363087,_0x116175,_0x101dab,_0x3c18b3,_0x10786f,_0x4d5d54){logger[_0x4088('0x3f')]('Creating\x20new\x20call...');var _0xadf4fc={};_0xadf4fc[_0x4088('0x5b')]={'name':!_['isNil'](_0x116175[_0x4088('0x5c')][_0x4088('0x1d')])&&!_[_0x4088('0x21')](_0x116175[_0x4088('0x3e')][_0x4088('0x1d')])&&_0x116175[_0x4088('0x3e')][_0x4088('0x1d')]===_0x4088('0x5d')?_0x116175['role'][_0x4088('0x1d')]:!_[_0x4088('0x21')](_0x116175[_0x4088('0x46')])?_0x116175[_0x4088('0x46')]+'\x20'+_0x116175[_0x4088('0x47')]:_0x116175['last_name'],'id':_0x116175['id']};_0xadf4fc[_0x4088('0x5e')]=intUtil[_0x4088('0x5f')](_0x3c18b3['Subjects'],_0x10786f,'\x20');_0xadf4fc[_0x4088('0x60')]=intUtil[_0x4088('0x5f')](_0x3c18b3[_0x4088('0x61')],_0x10786f,'\x0a');if(_0x101dab[_0x4088('0x43')]==='Contacts'){_0xadf4fc['Who_Id']={'name':!_['isNil'](_0x101dab['Full_Name'])?_0x101dab['Full_Name']:!_[_0x4088('0x21')](_0x101dab[_0x4088('0x62')])?_0x101dab[_0x4088('0x62')]+'\x20'+_0x101dab[_0x4088('0x63')]:_0x101dab[_0x4088('0x63')],'id':_0x101dab['id']};}if(_0x101dab[_0x4088('0x43')]==='Leads'){_0xadf4fc['What_Id']={'name':!_[_0x4088('0x21')](_0x101dab[_0x4088('0x64')])?_0x101dab[_0x4088('0x64')]:!_[_0x4088('0x21')](_0x101dab[_0x4088('0x62')])?_0x101dab[_0x4088('0x62')]+'\x20'+_0x101dab[_0x4088('0x63')]:_0x101dab[_0x4088('0x63')],'id':_0x101dab['id']};_0xadf4fc[_0x4088('0x65')]=_[_0x4088('0x45')](_0x101dab[_0x4088('0x43')]);}if(_0x10786f[_0x4088('0x66')]){_0xadf4fc['Call_Duration']=moment[_0x4088('0x67')](parseInt(_0x10786f[_0x4088('0x66')])*0x3e8)[_0x4088('0x68')](_0x4088('0x69'));}else if(_0x10786f[_0x4088('0x6a')]&&_0x10786f[_0x4088('0x6b')]){_0xadf4fc[_0x4088('0x6c')]=moment[_0x4088('0x67')](moment(_0x10786f[_0x4088('0x6b')],_0x4088('0x6d'))['diff'](moment(_0x10786f[_0x4088('0x6e')],_0x4088('0x6d'))))[_0x4088('0x68')](_0x4088('0x69'));}switch(_0x10786f['lastevent']){case _0x4088('0x6f'):_0xadf4fc['Call_Result']=_0x4088('0x70');break;case'complete':case _0x4088('0x71'):_0xadf4fc['Call_Result']=_0x4088('0x72');break;case _0x4088('0x73'):_0xadf4fc[_0x4088('0x74')]=_0x4088('0x75');break;case'abandoned':_0xadf4fc['Call_Result']=_0x4088('0x76');break;case'timeout':_0xadf4fc[_0x4088('0x74')]=_0x4088('0x77');default:}_0xadf4fc[_0x4088('0x78')]=(_0x4d5d54==='outbound'?moment(_0x10786f['starttime'])['format'](_0x4088('0x6d')):moment(_0x10786f[_0x4088('0x79')])['format'](_0x4088('0x6d')))||moment()[_0x4088('0x68')](_0x4088('0x6d'));_0xadf4fc[_0x4088('0x7a')]=_0x4d5d54||_0x4088('0x7b');_0xadf4fc=_[_0x4088('0x7c')](_0xadf4fc,getCustomFields(_0x3c18b3[_0x4088('0x7d')],_0x10786f));return request({'method':_0x4088('0x2a'),'uri':_0x4088('0x59')+_0x340a95+_0x4088('0x7e'),'headers':{'Authorization':_0x4088('0x4f')+_0x19e292},'body':{'data':[_0xadf4fc]},'json':!![]})[_0x4088('0x2e')](function(_0x40ca68){if(_0x40ca68&&_0x40ca68[_0x4088('0x42')][0x0][_0x4088('0x7f')]===_0x4088('0x48')){logger[_0x4088('0x3f')](_0x4088('0x80'));return{'id':_0x40ca68[_0x4088('0x42')][0x0][_0x4088('0x49')]['id']};}})[_0x4088('0x44')](function(_0x24bd41){logger['info'](_0x4088('0x81'),_0x24bd41[_0x4088('0x32')]);console[_0x4088('0x4c')](_0x4088('0x81'),_0x24bd41);});}exports[_0x4088('0x82')]=function(_0x4d2766,_0x57124f,_0x48abea,_0x1b6d7f,_0x2b20cc,_0x4fe65a){var _0x4590c0,_0x42cbc1,_0x118c50;_0x4fe65a[_0x4088('0x83')]=intUtil[_0x4088('0x84')](_0x4fe65a['host']);_0x4fe65a['serverUrl']=intUtil[_0x4088('0x84')](_0x4fe65a[_0x4088('0x85')]);if(_0x2b20cc&&_0x2b20cc['monitor_format']){logger[_0x4088('0x3f')](_0x4088('0x86'),_0x4088('0x87'));_0x57124f[_0x4088('0x88')]=_0x4fe65a['serverUrl']+_0x4088('0x89')+_0x57124f[_0x4088('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x57124f[_0x4088('0x8a')]);}else{_0x57124f[_0x4088('0x88')]='';}var _0x2bbb15=_0x4fe65a[_0x4088('0x83')]===_0x4088('0x8b')?'eu':_0x4088('0x8c');return getAccessToken(_0x4fe65a)[_0x4088('0x2e')](function(_0x10e4fc){_0x118c50=_0x10e4fc;return getUser(_0x118c50,_0x2bbb15,_0x4fe65a,_0x1b6d7f[_0x4088('0x38')]);})[_0x4088('0x2e')](function(_0x231dfa){_0x4590c0=_0x231dfa;logger[_0x4088('0x3f')]('The\x20User\x20ID\x20is:',_0x4590c0['id']);return getEndUser(_0x118c50,_0x2bbb15,_0x4fe65a,_0x57124f[_0x4088('0x8d')],_0x57124f['calleridnum'],_0x4590c0,_0x48abea);})['then'](function(_0x548d7d){_0x42cbc1=_0x548d7d;return getCall(_0x118c50,_0x2bbb15,_0x4fe65a,_0x4590c0,_0x42cbc1,_0x48abea,_0x57124f,_0x4088('0x7b'));})['then'](function(_0x3234ec){if(_0x3234ec){logger['info']('The\x20Call\x20ID\x20is:',_0x3234ec['id']);logger[_0x4088('0x3f')](_0x4088('0x86'),_0x4088('0x8e'));emit(util[_0x4088('0x68')](_0x4088('0x8f'),_0x1b6d7f[_0x4088('0x1d')]),_0x4088('0x90'),{'uri':_0x4088('0x91')+_0x4fe65a[_0x4088('0x83')]+_0x4088('0x92')+_0x3234ec['id']});}})[_0x4088('0x44')](function(_0x572d69){logger[_0x4088('0x30')](_0x4088('0x86'),JSON['stringify'](_0x572d69));});};exports[_0x4088('0x93')]=function(_0x31bd9d,_0x3d1383,_0x2c64a4,_0x121704,_0x210525,_0x2b2fef,_0x28d811){var _0x4d85c8,_0x22c3b1,_0x597d16;_0x2b2fef[_0x4088('0x83')]=intUtil[_0x4088('0x84')](_0x2b2fef[_0x4088('0x83')]);_0x2b2fef[_0x4088('0x85')]=intUtil[_0x4088('0x84')](_0x2b2fef['serverUrl']);if(_0x28d811&&_0x28d811[_0x4088('0x94')]&&_0x28d811[_0x4088('0x94')]!==_0x4088('0x95')){logger[_0x4088('0x3f')](_0x4088('0x96'),_0x4088('0x87'));_0x3d1383[_0x4088('0x88')]=_0x2b2fef[_0x4088('0x85')]+_0x4088('0x89')+_0x3d1383['uniqueid']+_0x4088('0x97')+md5(_0x3d1383['uniqueid']);}var _0xbd94b=_0x2b2fef[_0x4088('0x83')]==='zoho.eu'?'eu':_0x4088('0x8c');return getAccessToken(_0x2b2fef)[_0x4088('0x2e')](function(_0x4d102d){_0x597d16=_0x4d102d;return getUser(_0x597d16,_0xbd94b,_0x2b2fef,_0x121704[_0x4088('0x38')]);})[_0x4088('0x2e')](function(_0x311761){_0x4d85c8=_0x311761;logger[_0x4088('0x3f')](_0x4088('0x98'),_0x4d85c8['id']);return getEndUser(_0x597d16,_0xbd94b,_0x2b2fef,_0x3d1383[_0x4088('0x99')],_0x3d1383['destcalleridnum'],_0x4d85c8,_0x2c64a4);})[_0x4088('0x2e')](function(_0x1b30be){_0x22c3b1=_0x1b30be;return getCall(_0x597d16,_0xbd94b,_0x2b2fef,_0x4d85c8,_0x22c3b1,_0x2c64a4,_0x3d1383,_0x4088('0x9a'));})[_0x4088('0x2e')](function(_0x2575a4){if(_0x2575a4){logger[_0x4088('0x3f')](_0x4088('0x9b'),_0x2575a4['id']);logger[_0x4088('0x3f')](_0x4088('0x96'),_0x4088('0x8e'));emit(util['format'](_0x4088('0x8f'),_0x121704[_0x4088('0x1d')]),_0x4088('0x90'),{'uri':_0x4088('0x91')+_0x2b2fef[_0x4088('0x83')]+_0x4088('0x92')+_0x2575a4['id']});}})[_0x4088('0x44')](function(_0x4c4f7c){logger[_0x4088('0x30')](_0x4088('0x96'),JSON[_0x4088('0x10')](_0x4c4f7c));});};exports[_0x4088('0x9c')]=function(_0x131abc,_0x2fa998,_0x55e0a2,_0xa69418,_0x11b957,_0x2e1033){var _0x38e08c,_0x18bccc,_0x440e13;_0x2e1033['host']=intUtil[_0x4088('0x84')](_0x2e1033['host']);_0x2e1033[_0x4088('0x85')]=intUtil[_0x4088('0x84')](_0x2e1033[_0x4088('0x85')]);if(_0x11b957&&_0x11b957[_0x4088('0x9d')]){logger[_0x4088('0x3f')]('['+_0x2fa998['lastevent'][_0x4088('0x9e')]()+']','Recording\x20is\x20enabled!');_0x2fa998[_0x4088('0x88')]=_0x2e1033[_0x4088('0x85')]+_0x4088('0x89')+_0x2fa998[_0x4088('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x2fa998[_0x4088('0x8a')]);}else{_0x2fa998[_0x4088('0x88')]='';}var _0x1f4fe6=_0x2e1033[_0x4088('0x83')]===_0x4088('0x8b')?'eu':_0x4088('0x8c');return getAccessToken(_0x2e1033)[_0x4088('0x2e')](function(_0x12b71f){_0x440e13=_0x12b71f;return getUser(_0x440e13,_0x1f4fe6,_0x2e1033);})['then'](function(_0x23401f){_0x38e08c=_0x23401f;logger[_0x4088('0x3f')](_0x4088('0x98'),_0x38e08c['id']);return getEndUser(_0x440e13,_0x1f4fe6,_0x2e1033,_0x2fa998[_0x4088('0x8d')],_0x2fa998['calleridnum'],_0x38e08c,_0x55e0a2);})[_0x4088('0x2e')](function(_0x442841){_0x18bccc=_0x442841;return getCall(_0x440e13,_0x1f4fe6,_0x2e1033,_0x38e08c,_0x18bccc,_0x55e0a2,_0x2fa998,_0x4088('0x7b'));})[_0x4088('0x2e')](function(_0x11718b){if(_0x11718b){logger[_0x4088('0x3f')]('The\x20Call\x20ID\x20is:',_0x11718b['id']);}})['catch'](function(_0xd74cd3){logger[_0x4088('0x30')]('['+_0x2fa998[_0x4088('0x9f')][_0x4088('0x9e')]()+']',JSON[_0x4088('0x10')](_0xd74cd3));});};
\ No newline at end of file
+var _0xaec9=['https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','data','code','SUCCESS','details','log','CREATE\x20ERROR','contact_lead','uri','Contacts','/crm/v2/Contacts/search?criteria=((Phone:equals:','lead','nothing','Creating\x20new\x20call...','administrator','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','Leads','What_Id','$se_module','Call_Duration','utc','talktime','answertime','endtime','YYYY-MM-DDTHH:mm:ss','lastevent','called','Call_Result','Called','complete','connect','rejected','Rejected','abandoned','timeout','Timeout','outbound','starttime','agentcalledAt','Call_Type','merge','Fields','/crm/v2/Calls','Call\x20created!','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','recordingURL','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','recordingFormat','none','[OUTBOUND]','zoho.eu','email','destcalleridnum','Outbound','/crm/EntityInfo.do?module=Calls&id=','unmanaged','toUpperCase','request-promise','md5','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','debug','[HTTP]','length','forEach','includes','string','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','expires_in','zone','https://accounts.zoho.com'];(function(_0x549f1d,_0x558244){var _0x4b1b09=function(_0x466fa5){while(--_0x466fa5){_0x549f1d['push'](_0x549f1d['shift']());}};_0x4b1b09(++_0x558244);}(_0xaec9,0x112));var _0x9aec=function(_0x1e4a8e,_0x18022b){_0x1e4a8e=_0x1e4a8e-0x0;var _0x5408f9=_0xaec9[_0x1e4a8e];return _0x5408f9;};'use strict';var _=require('lodash');var rp=require(_0x9aec('0x0'));var md5=require(_0x9aec('0x1'));var util=require(_0x9aec('0x2'));var intUtil=require(_0x9aec('0x3'));var moment=require(_0x9aec('0x4'));var Redis=require(_0x9aec('0x5'));var BPromise=require(_0x9aec('0x6'));var config=require(_0x9aec('0x7'));var logger=require(_0x9aec('0x8'))(_0x9aec('0x9'));config[_0x9aec('0xa')]=_[_0x9aec('0xb')](config[_0x9aec('0xa')],{'host':_0x9aec('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x64ac21,_0x4e84bf,_0x2c1989){io['to'](_0x64ac21)['emit'](_0x4e84bf,_0x2c1989);}function request(_0x4b06f9){logger[_0x9aec('0xd')](_0x9aec('0xe'),JSON['stringify'](_0x4b06f9));return rp(_0x4b06f9);}function getCustomFields(_0x408bdf,_0x44e30b){var _0x5b2811={};if(_0x408bdf[_0x9aec('0xf')]>0x0){_[_0x9aec('0x10')](_0x408bdf,function(_0x50a5fd){if(_[_0x9aec('0x11')]([_0x9aec('0x12'),'picklist'],_0x50a5fd[_0x9aec('0x13')])&&_0x50a5fd[_0x9aec('0x14')]){_0x5b2811[_0x50a5fd[_0x9aec('0x14')]]=_0x50a5fd[_0x9aec('0x15')][_0x9aec('0x16')]();}else if(_0x50a5fd['type']===_0x9aec('0x17')&&_0x50a5fd['variableName']&&_0x50a5fd[_0x9aec('0x14')]&&_0x44e30b[_0x50a5fd['variableName']]){_0x5b2811[_0x50a5fd[_0x9aec('0x14')]]=_0x44e30b[_0x50a5fd[_0x9aec('0x18')]][_0x9aec('0x16')]();}else if(_0x50a5fd[_0x9aec('0x13')]===_0x9aec('0x19')&&_0x50a5fd['Variable']&&_0x50a5fd[_0x9aec('0x1a')][_0x9aec('0x1b')]&&_0x50a5fd['idField']&&_0x44e30b[_0x50a5fd[_0x9aec('0x1a')]['name']['toLowerCase']()]){_0x5b2811[_0x50a5fd[_0x9aec('0x14')]]=_0x44e30b[_0x50a5fd[_0x9aec('0x1a')][_0x9aec('0x1b')][_0x9aec('0x1c')]()][_0x9aec('0x16')]();}});}return _0x5b2811;}function getName(_0x1344f2){if(_0x1344f2[_0x9aec('0x1d')]('\x20')>0x0){var _0x359bc4=_0x1344f2[_0x9aec('0x1e')](/ (.+)/);if(_0x359bc4[0x1]){return _0x359bc4;}}return[_0x1344f2,_0x1344f2];}var accountsTokens={};function getAccessToken(_0x343648){return new Promise(function(_0x47a860,_0x30957a){if(!_[_0x9aec('0x1f')](accountsTokens[_0x343648['id']])&&!_['isNil'](accountsTokens[_0x343648['id']][_0x9aec('0x20')])){if(moment()['isBefore'](accountsTokens[_0x343648['id']][_0x9aec('0x21')])){_0x47a860(accountsTokens[_0x343648['id']][_0x9aec('0x20')]);}}var _0x4ad688;switch(_0x343648[_0x9aec('0x22')]){case'US':_0x4ad688=_0x9aec('0x23');break;case'AU':_0x4ad688=_0x9aec('0x24');break;case'EU':_0x4ad688=_0x9aec('0x25');break;case'IN':_0x4ad688=_0x9aec('0x26');break;case'CN':_0x4ad688=_0x9aec('0x27');break;default:_0x4ad688='https://accounts.zoho.eu';break;}var _0x458f6d={'method':_0x9aec('0x28'),'uri':_0x4ad688+_0x9aec('0x29'),'qs':{'refresh_token':_0x343648[_0x9aec('0x2a')],'client_id':_0x343648[_0x9aec('0x2b')],'client_secret':_0x343648[_0x9aec('0x2c')],'grant_type':_0x9aec('0x2d')},'json':!![]};return rp(_0x458f6d)[_0x9aec('0x2e')](function(_0x12af3c){accountsTokens[_0x343648['id']]={'access_token':_0x12af3c[_0x9aec('0x20')],'expires_in':moment()[_0x9aec('0x2f')](_0x12af3c['expires_in'],_0x9aec('0x30'))};_0x47a860(_0x12af3c[_0x9aec('0x20')]);})[_0x9aec('0x31')](function(_0x2c6255){logger[_0x9aec('0x32')](_0x9aec('0x33'),_0x2c6255['stack']);_0x30957a(_0x2c6255);});});}function getUser(_0x3b5907,_0x3543f1,_0x1dcec6,_0x13d6e1){logger[_0x9aec('0x34')](_0x9aec('0x35'));return request({'method':_0x9aec('0x36'),'uri':util[_0x9aec('0x37')](_0x9aec('0x38'),_0x3543f1),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x9aec('0x39')+_0x3b5907},'json':!![]})['then'](function(_0x930574){if(_0x930574[_0x9aec('0x3a')]){var _0x13642e=-0x1;if(_['isArrayLikeObject'](_0x930574['users'])){if(!_['isNil'](_0x13d6e1)){_0x13642e=_[_0x9aec('0x3b')](_0x930574[_0x9aec('0x3a')],function(_0x20b1db){return _0x20b1db['email']===_0x13d6e1;});}if(_0x13642e>=0x0){logger[_0x9aec('0x34')](_0x9aec('0x3c'));}else{logger[_0x9aec('0x34')](_0x9aec('0x3d'));_0x13642e=_[_0x9aec('0x3b')](_0x930574[_0x9aec('0x3a')],function(_0x2341ef){return _0x2341ef[_0x9aec('0x3e')][_0x9aec('0x1b')]===_0x9aec('0x3f');});}return _0x930574[_0x9aec('0x3a')][_0x13642e];}else{if(_0x930574[_0x9aec('0x40')][_0x9aec('0x3e')][_0x9aec('0x1b')]==='Administrator'){logger['info']('Using\x20the\x20admin\x20account!');user=_0x930574[_0x9aec('0x40')];return user;}else{logger[_0x9aec('0x32')](_0x9aec('0x41'),JSON[_0x9aec('0x42')](_0x930574));throw new Error(_0x9aec('0x43')+JSON[_0x9aec('0x42')](_0x930574));}}}else{logger[_0x9aec('0x32')](_0x9aec('0x41'),JSON[_0x9aec('0x42')](_0x930574));throw new Error(_0x9aec('0x43')+JSON[_0x9aec('0x42')](_0x930574));}})['catch'](function(_0x3150ab){console[_0x9aec('0x32')](_0x3150ab);});}function getZohoUser(_0x34bf01,_0x25da82){return new BPromise(function(_0x2c96b8,_0x1534db){request(_0x34bf01)[_0x9aec('0x2e')](function(_0x2564f8){var _0x57511f=null;if(_0x2564f8){_0x57511f=_0x2564f8['data'][0x0];_0x57511f[_0x9aec('0x44')]=_0x25da82;}_0x2c96b8(_0x57511f);})['catch'](function(_0x432367){_0x1534db(_0x432367);});});}function createEndUser(_0x4854ff,_0x4d76a2,_0x1f5a0e,_0x1e9986,_0x446d25,_0x4e6fdd){var _0x1f5a0e=getName(_0x1f5a0e);return request({'method':_0x9aec('0x28'),'uri':_0x9aec('0x45')+_0x4d76a2+_0x9aec('0x46')+_[_0x9aec('0x47')](_0x4e6fdd[_0x9aec('0x48')])+'s','body':{'data':[{'Last_Name':_0x1f5a0e[0x1],'First_Name':_0x1f5a0e[0x0],'Phone':_0x1e9986,'Owner':{'name':!_[_0x9aec('0x1f')](_0x446d25[_0x9aec('0x49')][_0x9aec('0x1b')])?_0x446d25[_0x9aec('0x49')]['name']:!_[_0x9aec('0x1f')](_0x446d25['first_name'])?_0x446d25[_0x9aec('0x4a')]+'\x20'+_0x446d25[_0x9aec('0x4b')]:_0x446d25[_0x9aec('0x4b')],'id':_0x446d25['id']}}]},'headers':{'Authorization':_0x9aec('0x39')+_0x4854ff},'json':!![]})[_0x9aec('0x2e')](function(_0x54ee2e){if(_0x54ee2e&&_0x54ee2e[_0x9aec('0x4c')][0x0][_0x9aec('0x4d')]===_0x9aec('0x4e')){var _0x1515a1=_0x54ee2e[_0x9aec('0x4c')][0x0][_0x9aec('0x4f')];_0x1515a1[_0x9aec('0x44')]=_[_0x9aec('0x47')](_0x4e6fdd['moduleCreate'])+'s';return _0x1515a1;}logger[_0x9aec('0x32')](_0x9aec('0x41'),JSON['stringify'](data));throw new Error('Error:\x20'+JSON['stringify'](data));})['catch'](function(_0x330319){console[_0x9aec('0x50')](_0x9aec('0x51'),_0x330319);});}function getEndUser(_0xd31fdc,_0x897444,_0x525861,_0x37efee,_0x1ab873,_0x1f618f,_0xcac023){var _0x3e1080={'method':'GET','uri':'','headers':{'Authorization':_0x9aec('0x39')+_0xd31fdc},'json':!![]};switch(_0xcac023['moduleSearch']){case _0x9aec('0x52'):_0x3e1080[_0x9aec('0x53')]='https://www.zohoapis.'+_0x897444+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x1ab873+'))';return getZohoUser(_0x3e1080,_0x9aec('0x54'))[_0x9aec('0x2e')](function(_0x4ba1fd){if(_0x4ba1fd)return _0x4ba1fd;_0x3e1080[_0x9aec('0x53')]='https://www.zohoapis.'+_0x897444+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1ab873+'))';return getZohoUser(_0x3e1080,'Leads')[_0x9aec('0x2e')](function(_0x196f4f){if(_0x196f4f)return _0x196f4f;if(_0xcac023[_0x9aec('0x48')]!='nothing'){return createEndUser(_0xd31fdc,_0x897444,_0x37efee,_0x1ab873,_0x1f618f,_0xcac023);}else{return{};}});});break;case'contact':_0x3e1080['uri']=_0x9aec('0x45')+_0x897444+_0x9aec('0x55')+_0x1ab873+'))';return getZohoUser(_0x3e1080,_0x9aec('0x54'))['then'](function(_0x3c948f){if(_0x3c948f)return _0x3c948f;if(_0xcac023[_0x9aec('0x48')]!='nothing'){return createEndUser(_0xd31fdc,_0x897444,_0x37efee,_0x1ab873,_0x1f618f,_0xcac023);}else{return{};}});break;case _0x9aec('0x56'):_0x3e1080[_0x9aec('0x53')]='https://www.zohoapis.'+_0x897444+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1ab873+'))';return getZohoUser(_0x3e1080,'Leads')[_0x9aec('0x2e')](function(_0x1f48d2){if(_0x1f48d2)return _0x1f48d2;if(_0xcac023[_0x9aec('0x48')]!=_0x9aec('0x57')){return createEndUser(_0xd31fdc,_0x897444,_0x37efee,_0x1ab873,_0x1f618f,_0xcac023);}else{return{};}});break;}}function getCall(_0x321406,_0x593eef,_0x436898,_0x3517dd,_0x67af80,_0x192766,_0x198675,_0x4d06e3){logger[_0x9aec('0x34')](_0x9aec('0x58'));var _0x1cea3f={};_0x1cea3f['Owner']={'name':!_[_0x9aec('0x1f')](_0x3517dd[_0x9aec('0x49')][_0x9aec('0x1b')])&&!_[_0x9aec('0x1f')](_0x3517dd[_0x9aec('0x3e')][_0x9aec('0x1b')])&&_0x3517dd[_0x9aec('0x3e')]['name']===_0x9aec('0x59')?_0x3517dd[_0x9aec('0x49')][_0x9aec('0x1b')]:!_[_0x9aec('0x1f')](_0x3517dd[_0x9aec('0x4a')])?_0x3517dd['first_name']+'\x20'+_0x3517dd[_0x9aec('0x4b')]:_0x3517dd[_0x9aec('0x4b')],'id':_0x3517dd['id']};_0x1cea3f['Subject']=intUtil['getString'](_0x192766['Subjects'],_0x198675,'\x20');_0x1cea3f['Description']=intUtil['getString'](_0x192766[_0x9aec('0x5a')],_0x198675,'\x0a');if(_0x67af80[_0x9aec('0x44')]===_0x9aec('0x54')){_0x1cea3f[_0x9aec('0x5b')]={'name':!_['isNil'](_0x67af80[_0x9aec('0x5c')])?_0x67af80[_0x9aec('0x5c')]:!_['isNil'](_0x67af80[_0x9aec('0x5d')])?_0x67af80['First_Name']+'\x20'+_0x67af80[_0x9aec('0x5e')]:_0x67af80[_0x9aec('0x5e')],'id':_0x67af80['id']};}if(_0x67af80[_0x9aec('0x44')]===_0x9aec('0x5f')){_0x1cea3f[_0x9aec('0x60')]={'name':!_[_0x9aec('0x1f')](_0x67af80[_0x9aec('0x5c')])?_0x67af80[_0x9aec('0x5c')]:!_[_0x9aec('0x1f')](_0x67af80[_0x9aec('0x5d')])?_0x67af80[_0x9aec('0x5d')]+'\x20'+_0x67af80[_0x9aec('0x5e')]:_0x67af80[_0x9aec('0x5e')],'id':_0x67af80['id']};_0x1cea3f[_0x9aec('0x61')]=_[_0x9aec('0x47')](_0x67af80[_0x9aec('0x44')]);}if(_0x198675['talktime']){_0x1cea3f[_0x9aec('0x62')]=moment[_0x9aec('0x63')](parseInt(_0x198675[_0x9aec('0x64')])*0x3e8)[_0x9aec('0x37')]('mm:ss');}else if(_0x198675[_0x9aec('0x65')]&&_0x198675[_0x9aec('0x66')]){_0x1cea3f[_0x9aec('0x62')]=moment[_0x9aec('0x63')](moment(_0x198675[_0x9aec('0x66')],_0x9aec('0x67'))['diff'](moment(_0x198675['starttime'],'YYYY-MM-DDTHH:mm:ss')))[_0x9aec('0x37')]('mm:ss');}switch(_0x198675[_0x9aec('0x68')]){case _0x9aec('0x69'):_0x1cea3f[_0x9aec('0x6a')]=_0x9aec('0x6b');break;case _0x9aec('0x6c'):case _0x9aec('0x6d'):_0x1cea3f[_0x9aec('0x6a')]='Answered';break;case _0x9aec('0x6e'):_0x1cea3f[_0x9aec('0x6a')]=_0x9aec('0x6f');break;case _0x9aec('0x70'):_0x1cea3f['Call_Result']='Abandoned';break;case _0x9aec('0x71'):_0x1cea3f['Call_Result']=_0x9aec('0x72');default:}_0x1cea3f['Call_Start_Time']=(_0x4d06e3===_0x9aec('0x73')?moment(_0x198675[_0x9aec('0x74')])[_0x9aec('0x37')](_0x9aec('0x67')):moment(_0x198675[_0x9aec('0x75')])[_0x9aec('0x37')](_0x9aec('0x67')))||moment()[_0x9aec('0x37')]('YYYY-MM-DDTHH:mm:ss');_0x1cea3f[_0x9aec('0x76')]=_0x4d06e3||'Inbound';_0x1cea3f=_[_0x9aec('0x77')](_0x1cea3f,getCustomFields(_0x192766[_0x9aec('0x78')],_0x198675));return request({'method':_0x9aec('0x28'),'uri':_0x9aec('0x45')+_0x593eef+_0x9aec('0x79'),'headers':{'Authorization':_0x9aec('0x39')+_0x321406},'body':{'data':[_0x1cea3f]},'json':!![]})[_0x9aec('0x2e')](function(_0x42fa6a){if(_0x42fa6a&&_0x42fa6a[_0x9aec('0x4c')][0x0][_0x9aec('0x4d')]===_0x9aec('0x4e')){logger[_0x9aec('0x34')](_0x9aec('0x7a'));return{'id':_0x42fa6a[_0x9aec('0x4c')][0x0][_0x9aec('0x4f')]['id']};}})[_0x9aec('0x31')](function(_0x2b25df){logger[_0x9aec('0x34')]('err',_0x2b25df['stack']);console[_0x9aec('0x50')](_0x9aec('0x7b'),_0x2b25df);});}exports[_0x9aec('0x7c')]=function(_0x5aea5d,_0x2ead72,_0x288f29,_0x2b333e,_0x376876,_0x4d3bc8){var _0x55e5f4,_0xfef10d,_0x4178c6;_0x4d3bc8['host']=intUtil[_0x9aec('0x7d')](_0x4d3bc8[_0x9aec('0x7e')]);_0x4d3bc8[_0x9aec('0x7f')]=intUtil[_0x9aec('0x7d')](_0x4d3bc8[_0x9aec('0x7f')]);if(_0x376876&&_0x376876[_0x9aec('0x80')]){logger[_0x9aec('0x34')](_0x9aec('0x81'),_0x9aec('0x82'));_0x2ead72['recordingURL']=_0x4d3bc8['serverUrl']+_0x9aec('0x83')+_0x2ead72[_0x9aec('0x84')]+_0x9aec('0x85')+md5(_0x2ead72[_0x9aec('0x84')]);}else{_0x2ead72[_0x9aec('0x86')]='';}var _0xdbc682=_0x4d3bc8[_0x9aec('0x7e')]==='zoho.eu'?'eu':_0x9aec('0x87');return getAccessToken(_0x4d3bc8)['then'](function(_0x477502){_0x4178c6=_0x477502;return getUser(_0x4178c6,_0xdbc682,_0x4d3bc8,_0x2b333e['email']);})[_0x9aec('0x2e')](function(_0x26a9d6){_0x55e5f4=_0x26a9d6;logger[_0x9aec('0x34')](_0x9aec('0x88'),_0x55e5f4['id']);return getEndUser(_0x4178c6,_0xdbc682,_0x4d3bc8,_0x2ead72[_0x9aec('0x89')],_0x2ead72[_0x9aec('0x8a')],_0x55e5f4,_0x288f29);})[_0x9aec('0x2e')](function(_0x4be33e){_0xfef10d=_0x4be33e;return getCall(_0x4178c6,_0xdbc682,_0x4d3bc8,_0x55e5f4,_0xfef10d,_0x288f29,_0x2ead72,_0x9aec('0x8b'));})[_0x9aec('0x2e')](function(_0x191ce4){if(_0x191ce4){logger[_0x9aec('0x34')](_0x9aec('0x8c'),_0x191ce4['id']);logger['info']('[QUEUE]',_0x9aec('0x8d'));emit(util[_0x9aec('0x37')](_0x9aec('0x8e'),_0x2b333e[_0x9aec('0x1b')]),_0x9aec('0x8f'),{'uri':_0x9aec('0x90')+_0x4d3bc8[_0x9aec('0x7e')]+'/crm/EntityInfo.do?module=Calls&id='+_0x191ce4['id']});}})[_0x9aec('0x31')](function(_0x2c6c36){logger[_0x9aec('0x32')](_0x9aec('0x81'),JSON[_0x9aec('0x42')](_0x2c6c36));});};exports['outbound']=function(_0x4c624b,_0x374dbb,_0x3788c2,_0x495762,_0x488326,_0x48f7a9,_0x432a0b){var _0x24339b,_0x45aa51,_0x4e4af3;_0x48f7a9[_0x9aec('0x7e')]=intUtil['stripTrailingSlash'](_0x48f7a9[_0x9aec('0x7e')]);_0x48f7a9['serverUrl']=intUtil[_0x9aec('0x7d')](_0x48f7a9[_0x9aec('0x7f')]);if(_0x432a0b&&_0x432a0b['recordingFormat']&&_0x432a0b[_0x9aec('0x91')]!==_0x9aec('0x92')){logger[_0x9aec('0x34')](_0x9aec('0x93'),_0x9aec('0x82'));_0x374dbb[_0x9aec('0x86')]=_0x48f7a9[_0x9aec('0x7f')]+_0x9aec('0x83')+_0x374dbb['uniqueid']+_0x9aec('0x85')+md5(_0x374dbb['uniqueid']);}var _0x15e60d=_0x48f7a9[_0x9aec('0x7e')]===_0x9aec('0x94')?'eu':_0x9aec('0x87');return getAccessToken(_0x48f7a9)[_0x9aec('0x2e')](function(_0x490c6e){_0x4e4af3=_0x490c6e;return getUser(_0x4e4af3,_0x15e60d,_0x48f7a9,_0x495762[_0x9aec('0x95')]);})['then'](function(_0x49cd06){_0x24339b=_0x49cd06;logger[_0x9aec('0x34')](_0x9aec('0x88'),_0x24339b['id']);return getEndUser(_0x4e4af3,_0x15e60d,_0x48f7a9,_0x374dbb['destcalleridname'],_0x374dbb[_0x9aec('0x96')],_0x24339b,_0x3788c2);})[_0x9aec('0x2e')](function(_0x1c7f2a){_0x45aa51=_0x1c7f2a;return getCall(_0x4e4af3,_0x15e60d,_0x48f7a9,_0x24339b,_0x45aa51,_0x3788c2,_0x374dbb,_0x9aec('0x97'));})[_0x9aec('0x2e')](function(_0x57d370){if(_0x57d370){logger[_0x9aec('0x34')](_0x9aec('0x8c'),_0x57d370['id']);logger[_0x9aec('0x34')](_0x9aec('0x93'),_0x9aec('0x8d'));emit(util[_0x9aec('0x37')]('user:%s',_0x495762[_0x9aec('0x1b')]),_0x9aec('0x8f'),{'uri':_0x9aec('0x90')+_0x48f7a9[_0x9aec('0x7e')]+_0x9aec('0x98')+_0x57d370['id']});}})[_0x9aec('0x31')](function(_0x41867d){logger['error'](_0x9aec('0x93'),JSON[_0x9aec('0x42')](_0x41867d));});};exports[_0x9aec('0x99')]=function(_0x54cdcc,_0xc3e18f,_0x312b99,_0x54dc20,_0x5591aa,_0x103a0c){var _0x4ac9f2,_0x52437e,_0x3f5bcb;_0x103a0c['host']=intUtil[_0x9aec('0x7d')](_0x103a0c['host']);_0x103a0c['serverUrl']=intUtil[_0x9aec('0x7d')](_0x103a0c[_0x9aec('0x7f')]);if(_0x5591aa&&_0x5591aa[_0x9aec('0x80')]){logger[_0x9aec('0x34')]('['+_0xc3e18f[_0x9aec('0x68')][_0x9aec('0x9a')]()+']',_0x9aec('0x82'));_0xc3e18f[_0x9aec('0x86')]=_0x103a0c[_0x9aec('0x7f')]+'/api/voice/recordings/'+_0xc3e18f[_0x9aec('0x84')]+_0x9aec('0x85')+md5(_0xc3e18f[_0x9aec('0x84')]);}else{_0xc3e18f[_0x9aec('0x86')]='';}var _0x11aa21=_0x103a0c[_0x9aec('0x7e')]===_0x9aec('0x94')?'eu':'com';return getAccessToken(_0x103a0c)[_0x9aec('0x2e')](function(_0x1f3034){_0x3f5bcb=_0x1f3034;return getUser(_0x3f5bcb,_0x11aa21,_0x103a0c);})[_0x9aec('0x2e')](function(_0x5b0175){_0x4ac9f2=_0x5b0175;logger[_0x9aec('0x34')](_0x9aec('0x88'),_0x4ac9f2['id']);return getEndUser(_0x3f5bcb,_0x11aa21,_0x103a0c,_0xc3e18f[_0x9aec('0x89')],_0xc3e18f[_0x9aec('0x8a')],_0x4ac9f2,_0x312b99);})[_0x9aec('0x2e')](function(_0x52a2a5){_0x52437e=_0x52a2a5;return getCall(_0x3f5bcb,_0x11aa21,_0x103a0c,_0x4ac9f2,_0x52437e,_0x312b99,_0xc3e18f,'Inbound');})[_0x9aec('0x2e')](function(_0x565fde){if(_0x565fde){logger[_0x9aec('0x34')](_0x9aec('0x8c'),_0x565fde['id']);}})[_0x9aec('0x31')](function(_0x3e327a){logger[_0x9aec('0x32')]('['+_0xc3e18f[_0x9aec('0x68')][_0x9aec('0x9a')]()+']',JSON['stringify'](_0x3e327a));});};
\ No newline at end of file
index f33f7ae..62a788d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4b2=['error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','render','data3'];(function(_0x40aaa4,_0x3b22f4){var _0x4e21e5=function(_0x35d2f3){while(--_0x35d2f3){_0x40aaa4['push'](_0x40aaa4['shift']());}};_0x4e21e5(++_0x3b22f4);}(_0xe4b2,0x1f4));var _0x2e4b=function(_0x4c2504,_0x538d71){_0x4c2504=_0x4c2504-0x0;var _0x48409a=_0xe4b2[_0x4c2504];return _0x48409a;};'use strict';var util=require(_0x2e4b('0x0'));var sh=require(_0x2e4b('0x1'));var Mustache=require(_0x2e4b('0x2'));var logger=require(_0x2e4b('0x3'))(_0x2e4b('0x4'));exports[_0x2e4b('0x5')]=function(_0x1556ac,_0x27ea5e){var _0x2ebe47=_0x1556ac[_0x2e4b('0x6')]?_0x1556ac[_0x2e4b('0x6')]:_0x2e4b('0x7');var _0x44b59b=_0x1556ac['data3']?Mustache[_0x2e4b('0x8')](_0x1556ac[_0x2e4b('0x9')],_0x27ea5e):_0x27ea5e;sh[_0x2e4b('0x5')](_0x44b59b,function(_0x20a325,_0x124c46,_0x413fb0){if(_0x20a325!==0x0){logger[_0x2e4b('0xa')](util[_0x2e4b('0xb')](_0x2e4b('0xc'),_0x2ebe47,_0x44b59b,_0x20a325,_0x413fb0));}else{logger[_0x2e4b('0xd')](util[_0x2e4b('0xb')](_0x2e4b('0xe'),_0x2ebe47,_0x44b59b,_0x124c46));}});};
\ No newline at end of file
+var _0x6beb=['trigger','data2','Script','render','exec','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x6beb,0x184));var _0xb6be=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6beb[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0xb6be('0x0'));var sh=require(_0xb6be('0x1'));var Mustache=require(_0xb6be('0x2'));var logger=require(_0xb6be('0x3'))(_0xb6be('0x4'));exports['exec']=function(_0x3d8a6f,_0x32dd3f){var _0xbe6b45=_0x3d8a6f[_0xb6be('0x5')]?_0x3d8a6f[_0xb6be('0x5')]:_0xb6be('0x6');var _0x16151e=_0x3d8a6f['data3']?Mustache[_0xb6be('0x7')](_0x3d8a6f['data3'],_0x32dd3f):_0x32dd3f;sh[_0xb6be('0x8')](_0x16151e,function(_0x37fbf3,_0x2638a4,_0xa9456b){if(_0x37fbf3!==0x0){logger[_0xb6be('0x9')](util['format'](_0xb6be('0xa'),_0xbe6b45,_0x16151e,_0x37fbf3,_0xa9456b));}else{logger[_0xb6be('0xb')](util[_0xb6be('0xc')](_0xb6be('0xd'),_0xbe6b45,_0x16151e,_0x2638a4));}});};
\ No newline at end of file
index 66a03b6..f594c2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa756=['DELETE','POST','data7','render','body','error','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','message','request-promise','util','trigger','exec','data1','toUpperCase','data2','data5','number','headers','parse','data6','stack','GET'];(function(_0x4c71f0,_0x52151f){var _0x2ceb53=function(_0x882b0e){while(--_0x882b0e){_0x4c71f0['push'](_0x4c71f0['shift']());}};_0x2ceb53(++_0x52151f);}(_0xa756,0x72));var _0x6a75=function(_0x48b88f,_0x2e1e94){_0x48b88f=_0x48b88f-0x0;var _0x34d441=_0xa756[_0x48b88f];return _0x34d441;};'use strict';var rp=require(_0x6a75('0x0'));var util=require(_0x6a75('0x1'));var _=require('lodash');var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0x6a75('0x2'));exports[_0x6a75('0x3')]=function(_0x40ece9,_0x4b8168){var _0x42c567,_0x365422;var _0x175840={'method':_0x40ece9[_0x6a75('0x4')][_0x6a75('0x5')](),'uri':Mustache['render'](_0x40ece9[_0x6a75('0x6')],_0x4b8168),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x40ece9[_0x6a75('0x7')])===_0x6a75('0x8')&&parseInt(_0x40ece9[_0x6a75('0x7')])>=0x1&&parseInt(_0x40ece9['data5'])<=0xa?parseInt(_0x40ece9[_0x6a75('0x7')])*0x3e8:0x5*0x3e8};try{_0x175840[_0x6a75('0x9')]=_0x40ece9['data6']?JSON[_0x6a75('0xa')](Mustache['render'](_0x40ece9[_0x6a75('0xb')],_0x4b8168)):{};}catch(_0x5089e9){logger['error'](_0x5089e9[_0x6a75('0xc')]);}switch(_0x40ece9[_0x6a75('0x4')][_0x6a75('0x5')]()){case _0x6a75('0xd'):case _0x6a75('0xe'):_0x42c567=null;_0x175840['qs']=_0x4b8168;break;case _0x6a75('0xf'):case'PUT':if(_0x40ece9[_0x6a75('0x10')]){try{_0x42c567=JSON[_0x6a75('0xa')](Mustache[_0x6a75('0x11')](_0x40ece9['data7'],_0x4b8168));_0x175840[_0x6a75('0x12')]=_0x42c567;}catch(_0x3e6ae9){logger['error'](_0x3e6ae9[_0x6a75('0xc')]);logger[_0x6a75('0x13')](_0x6a75('0x14'));}}else{_0x42c567=_0x4b8168;_0x175840['body']=_0x42c567;}break;}logger[_0x6a75('0x15')](util[_0x6a75('0x16')](_0x6a75('0x17'),_0x40ece9[_0x6a75('0x4')],_0x40ece9[_0x6a75('0x6')],JSON['stringify'](_0x175840)));rp(_0x175840)['then'](function(_0xdce8ed){_0x42c567=!_[_0x6a75('0x18')](_0x42c567)?_0x6a75('0x19')+_0x42c567:'';_0x365422=typeof _0xdce8ed[_0x6a75('0x12')]===_0x6a75('0x1a')?JSON[_0x6a75('0x1b')](_0xdce8ed['body']):_0xdce8ed[_0x6a75('0x12')];logger[_0x6a75('0x15')](util[_0x6a75('0x16')](_0x6a75('0x1c'),_0x40ece9[_0x6a75('0x4')],_0x40ece9[_0x6a75('0x6')],_0xdce8ed[_0x6a75('0x1d')],_0x365422));})['catch'](function(_0xaded13){logger[_0x6a75('0x13')](util[_0x6a75('0x16')](_0x6a75('0x1e'),_0x40ece9[_0x6a75('0x4')],_0x40ece9[_0x6a75('0x6')],_0xaded13[_0x6a75('0x1d')],_0xaded13['name'],_0xaded13[_0x6a75('0x1f')]));});};
\ No newline at end of file
+var _0xc34f=['%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','format','name','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','render','data2','data5','number','data6','parse','error','toUpperCase','GET','DELETE','POST','PUT','data7','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object'];(function(_0x5b1003,_0x4bfeb9){var _0x4a3ca8=function(_0x4f5bde){while(--_0x4f5bde){_0x5b1003['push'](_0x5b1003['shift']());}};_0x4a3ca8(++_0x4bfeb9);}(_0xc34f,0x1d2));var _0xfc34=function(_0x5dbe23,_0x12d1cf){_0x5dbe23=_0x5dbe23-0x0;var _0x1831f3=_0xc34f[_0x5dbe23];return _0x1831f3;};'use strict';var rp=require(_0xfc34('0x0'));var util=require(_0xfc34('0x1'));var _=require(_0xfc34('0x2'));var Mustache=require(_0xfc34('0x3'));var logger=require(_0xfc34('0x4'))(_0xfc34('0x5'));exports[_0xfc34('0x6')]=function(_0x204358,_0xabce7b){var _0x4c39d7,_0x31c8d3;var _0x3ced54={'method':_0x204358[_0xfc34('0x7')]['toUpperCase'](),'uri':Mustache[_0xfc34('0x8')](_0x204358[_0xfc34('0x9')],_0xabce7b),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x204358[_0xfc34('0xa')])===_0xfc34('0xb')&&parseInt(_0x204358[_0xfc34('0xa')])>=0x1&&parseInt(_0x204358[_0xfc34('0xa')])<=0xa?parseInt(_0x204358[_0xfc34('0xa')])*0x3e8:0x5*0x3e8};try{_0x3ced54['headers']=_0x204358[_0xfc34('0xc')]?JSON[_0xfc34('0xd')](Mustache[_0xfc34('0x8')](_0x204358[_0xfc34('0xc')],_0xabce7b)):{};}catch(_0x20917e){logger[_0xfc34('0xe')](_0x20917e['stack']);}switch(_0x204358[_0xfc34('0x7')][_0xfc34('0xf')]()){case _0xfc34('0x10'):case _0xfc34('0x11'):_0x4c39d7=null;_0x3ced54['qs']=_0xabce7b;break;case _0xfc34('0x12'):case _0xfc34('0x13'):if(_0x204358[_0xfc34('0x14')]){try{_0x4c39d7=JSON[_0xfc34('0xd')](Mustache[_0xfc34('0x8')](_0x204358[_0xfc34('0x14')],_0xabce7b));_0x3ced54[_0xfc34('0x15')]=_0x4c39d7;}catch(_0x34fb90){logger[_0xfc34('0xe')](_0x34fb90['stack']);logger[_0xfc34('0xe')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x4c39d7=_0xabce7b;_0x3ced54[_0xfc34('0x15')]=_0x4c39d7;}break;}logger[_0xfc34('0x16')](util['format'](_0xfc34('0x17'),_0x204358['data1'],_0x204358[_0xfc34('0x9')],JSON[_0xfc34('0x18')](_0x3ced54)));rp(_0x3ced54)[_0xfc34('0x19')](function(_0x2e0b0a){_0x4c39d7=!_[_0xfc34('0x1a')](_0x4c39d7)?_0xfc34('0x1b')+_0x4c39d7:'';_0x31c8d3=typeof _0x2e0b0a[_0xfc34('0x15')]===_0xfc34('0x1c')?JSON['stringify'](_0x2e0b0a[_0xfc34('0x15')]):_0x2e0b0a[_0xfc34('0x15')];logger[_0xfc34('0x16')](util['format'](_0xfc34('0x1d'),_0x204358['data1'],_0x204358['data2'],_0x2e0b0a['statusCode'],_0x31c8d3));})['catch'](function(_0xa7f4c2){logger['error'](util[_0xfc34('0x1e')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x204358[_0xfc34('0x7')],_0x204358['data2'],_0xa7f4c2['statusCode'],_0xa7f4c2[_0xfc34('0x1f')],_0xa7f4c2[_0xfc34('0x20')]));});};
\ No newline at end of file
index 1563a8e..6c54c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fad=['bluebird','../../config/logger','http','Request','then','debug','rpc','error','message','result','catch','routing','exports','jayson/promise'];(function(_0x4b801e,_0x224acb){var _0x20353e=function(_0x496072){while(--_0x496072){_0x4b801e['push'](_0x4b801e['shift']());}};_0x20353e(++_0x224acb);}(_0x0fad,0xd1));var _0xd0fa=function(_0x2b37aa,_0x1d40dc){_0x2b37aa=_0x2b37aa-0x0;var _0x52b73d=_0x0fad[_0x2b37aa];return _0x52b73d;};'use strict';var jayson=require(_0xd0fa('0x0'));var BPromise=require(_0xd0fa('0x1'));var logger=require(_0xd0fa('0x2'))('routing');var client=jayson['client'][_0xd0fa('0x3')]({'port':0x2329});client[_0xd0fa('0x4')]=function(_0x3470a6,_0x144805){return new BPromise(function(_0x1f0ad2,_0x104ef5){return client['request'](_0x3470a6,_0x144805)[_0xd0fa('0x5')](function(_0x238c04){logger[_0xd0fa('0x6')](_0xd0fa('0x7'),'routing',_0x3470a6,_0x144805,_0x238c04);if(_0x238c04[_0xd0fa('0x8')]){logger['error'](_0xd0fa('0x7'),'routing',_0x3470a6,_0x238c04[_0xd0fa('0x8')][_0xd0fa('0x9')],_0x144805);return _0x104ef5(_0x238c04[_0xd0fa('0x8')]['message']);}else{return _0x1f0ad2(_0x238c04[_0xd0fa('0xa')]);}})[_0xd0fa('0xb')](function(_0xc804cd){logger[_0xd0fa('0x8')](_0xd0fa('0x7'),_0xd0fa('0xc'),_0x3470a6,_0xc804cd,_0x144805);return _0x104ef5(_0xc804cd);});});};module[_0xd0fa('0xd')]=client;
\ No newline at end of file
+var _0x76c6=['message','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','debug','rpc','routing','error'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x76c6,0xd5));var _0x676c=function(_0xa9c9e8,_0x404ae5){_0xa9c9e8=_0xa9c9e8-0x0;var _0x27d4bb=_0x76c6[_0xa9c9e8];return _0x27d4bb;};'use strict';var jayson=require(_0x676c('0x0'));var BPromise=require(_0x676c('0x1'));var logger=require(_0x676c('0x2'))('routing');var client=jayson[_0x676c('0x3')][_0x676c('0x4')]({'port':0x2329});client[_0x676c('0x5')]=function(_0x3bc186,_0x20dac7){return new BPromise(function(_0x495526,_0x180fbf){return client[_0x676c('0x6')](_0x3bc186,_0x20dac7)[_0x676c('0x7')](function(_0xb65761){logger[_0x676c('0x8')](_0x676c('0x9'),_0x676c('0xa'),_0x3bc186,_0x20dac7,_0xb65761);if(_0xb65761[_0x676c('0xb')]){logger[_0x676c('0xb')](_0x676c('0x9'),_0x676c('0xa'),_0x3bc186,_0xb65761[_0x676c('0xb')][_0x676c('0xc')],_0x20dac7);return _0x180fbf(_0xb65761['error'][_0x676c('0xc')]);}else{return _0x495526(_0xb65761['result']);}})[_0x676c('0xd')](function(_0x1c120b){logger[_0x676c('0xb')](_0x676c('0x9'),'routing',_0x3bc186,_0x1c120b,_0x20dac7);return _0x180fbf(_0x1c120b);});});};module[_0x676c('0xe')]=client;
\ No newline at end of file
index c4dce68..1840fbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f3=['refresh','listen','getSettings','catch','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then','initMailAccounts'];(function(_0x83cab6,_0x267948){var _0x2fa37a=function(_0xb2470f){while(--_0xb2470f){_0x83cab6['push'](_0x83cab6['shift']());}};_0x2fa37a(++_0x267948);}(_0x62f3,0xc4));var _0x362f=function(_0x344aea,_0x438c42){_0x344aea=_0x344aea-0x0;var _0x10dc08=_0x62f3[_0x344aea];return _0x10dc08;};'use strict';var server=require('./server');var Realtime=require('./realtime');var EmailChannel=require(_0x362f('0x0'));var mailAccount=require(_0x362f('0x1'));var setting=require(_0x362f('0x2'));var logger=require(_0x362f('0x3'))(_0x362f('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x362f('0x5')]()[_0x362f('0x6')](mailAccount['getMailAccounts']())['then'](realtime[_0x362f('0x7')]())[_0x362f('0x6')](function(){email[_0x362f('0x8')](realtime['mailAccounts']);return realtime;});}function main(){return server[_0x362f('0x9')](realtime,email)[_0x362f('0x6')](function(){return initRealtime();})[_0x362f('0x6')](function(){return setting[_0x362f('0xa')]();})[_0x362f('0x6')](function(_0x481fe4){return setInterval(initRealtime,_0x481fe4['loginMailFrequency']*0x3e8);})[_0x362f('0xb')](function(_0x42b093){logger['error']('Email\x20service\x20initialization',_0x42b093);});}main();
\ No newline at end of file
+var _0x38f1=['mailAccounts','listen','getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/setting','../../config/logger','resolve','then','getMailAccounts','refresh'];(function(_0x1cd674,_0x8d3638){var _0x27928f=function(_0x5e3c70){while(--_0x5e3c70){_0x1cd674['push'](_0x1cd674['shift']());}};_0x27928f(++_0x8d3638);}(_0x38f1,0x1d7));var _0x138f=function(_0x40ff75,_0x8d322){_0x40ff75=_0x40ff75-0x0;var _0x110488=_0x38f1[_0x40ff75];return _0x110488;};'use strict';var server=require(_0x138f('0x0'));var Realtime=require(_0x138f('0x1'));var EmailChannel=require(_0x138f('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x138f('0x3'));var logger=require(_0x138f('0x4'))('email');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x138f('0x5')]()[_0x138f('0x6')](mailAccount[_0x138f('0x7')]())[_0x138f('0x6')](realtime['initMailAccounts']())[_0x138f('0x6')](function(){email[_0x138f('0x8')](realtime[_0x138f('0x9')]);return realtime;});}function main(){return server[_0x138f('0xa')](realtime,email)[_0x138f('0x6')](function(){return initRealtime();})[_0x138f('0x6')](function(){return setting[_0x138f('0xb')]();})[_0x138f('0x6')](function(_0x1e4a77){return setInterval(initRealtime,_0x1e4a77[_0x138f('0xc')]*0x3e8);})[_0x138f('0xd')](function(_0x5d21fe){logger[_0x138f('0xe')](_0x138f('0xf'),_0x5d21fe);});}main();
\ No newline at end of file
index 00c5aaf..d3d9d37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c73=['prototype','emit','name','key','active','Imap','total','isNil','stringify','hasOwnProperty','service','provider','email','box','handleImapBox','handleImapEmail','bind','handleImapEnd','error','status','disabled','messageStatus','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','send','Smtp','verify','verified','exports','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','defaults','localhost','socket.io-emitter','redis','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp'];(function(_0x5ae4bc,_0x504456){var _0x4db486=function(_0x5c005f){while(--_0x5c005f){_0x5ae4bc['push'](_0x5ae4bc['shift']());}};_0x4db486(++_0x504456);}(_0x4c73,0xf4));var _0x34c7=function(_0x618fbd,_0x482dd9){_0x618fbd=_0x618fbd-0x0;var _0x30eaa7=_0x4c73[_0x618fbd];return _0x30eaa7;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0x34c7('0x0'));var md5=require(_0x34c7('0x1'));var Redis=require(_0x34c7('0x2'));var config=require(_0x34c7('0x3'));var logger=require(_0x34c7('0x4'))('email');config['redis']=_[_0x34c7('0x5')](config['redis'],{'host':_0x34c7('0x6'),'port':0x18eb});var io=require(_0x34c7('0x7'))(new Redis(config[_0x34c7('0x8')]));var EmailImap=require(_0x34c7('0x9'));var EmailSmtp=require(_0x34c7('0xa'));var mailAccount=require(_0x34c7('0xb'));var md5Accounts={};function EmailChannel(_0x1411c2){logger[_0x34c7('0xc')]('start\x20email\x20channel');this[_0x34c7('0xd')]=_0x1411c2['mailAccounts'];this[_0x34c7('0xe')]={};this[_0x34c7('0xf')]=new EmailSmtp();}EmailChannel[_0x34c7('0x10')][_0x34c7('0x11')]=function(_0x47a2ed){var _0x2cac90=this['mailAccounts'][_0x47a2ed];var _0x35991b={'id':_0x2cac90['id'],'name':_0x2cac90[_0x34c7('0x12')],'key':_0x2cac90[_0x34c7('0x13')],'active':_0x2cac90[_0x34c7('0x14')],'Imap':{'status':_0x2cac90['Imap']['status'],'messageStatus':_0x2cac90[_0x34c7('0x15')]['messageStatus'],'total':_0x2cac90[_0x34c7('0x15')][_0x34c7('0x16')]}};if(_[_0x34c7('0x17')](md5Accounts[_0x47a2ed])){md5Accounts[_0x47a2ed]={};}var _0x1618d8=md5(JSON[_0x34c7('0x18')](_0x35991b));if(md5Accounts[_0x47a2ed][_0x34c7('0x1')]!==_0x1618d8){md5Accounts[_0x47a2ed][_0x34c7('0x1')]=_0x1618d8;io[_0x34c7('0x11')]('mailAccount:update',_0x35991b);}};EmailChannel['prototype']['refresh']=function(_0x68f242){for(var _0x52f0f0 in _0x68f242){if(_0x68f242[_0x34c7('0x19')](_0x52f0f0)){if(_0x68f242[_0x52f0f0][_0x34c7('0x15')]&&_0x68f242[_0x52f0f0][_0x34c7('0x14')]){var _0xd465af=_0x68f242[_0x52f0f0][_0x34c7('0x15')];if(!_0xd465af[_0x34c7('0x1a')]&&_0x68f242[_0x52f0f0][_0x34c7('0x1b')]!=='custom')_0xd465af[_0x34c7('0x1a')]=_0x68f242[_0x52f0f0][_0x34c7('0x1b')];if(!this['imapAccounts'][_0x34c7('0x19')](_0xd465af['id'])){this[_0x34c7('0xe')][_0xd465af['id']]=new EmailImap(_0xd465af,_0x68f242[_0x52f0f0][_0x34c7('0x1c')]);this[_0x34c7('0xe')][_0xd465af['id']]['on'](_0x34c7('0x1d'),this[_0x34c7('0x1e')]['bind'](this,_0x52f0f0));this[_0x34c7('0xe')][_0xd465af['id']]['on']('email',this[_0x34c7('0x1f')][_0x34c7('0x20')](this,_0x52f0f0));this[_0x34c7('0xe')][_0xd465af['id']]['on']('end',this[_0x34c7('0x21')]['bind'](this,_0x52f0f0));this[_0x34c7('0xe')][_0xd465af['id']]['on'](_0x34c7('0x22'),this['handleImapError'][_0x34c7('0x20')](this,_0x52f0f0));}}else{if(_[_0x34c7('0x17')](this[_0x34c7('0xd')][_0x52f0f0][_0x34c7('0x15')])){this['mailAccounts'][_0x52f0f0][_0x34c7('0x15')]={};}this[_0x34c7('0xd')][_0x52f0f0]['Imap'][_0x34c7('0x23')]=_0x34c7('0x24');this[_0x34c7('0xd')][_0x52f0f0]['Imap'][_0x34c7('0x25')]='';this['emit'](_0x52f0f0);}}}};EmailChannel[_0x34c7('0x10')][_0x34c7('0x1e')]=function(_0x2e8332,_0x435766){if(this['mailAccounts'][_0x2e8332]){this['mailAccounts'][_0x2e8332][_0x34c7('0x15')][_0x34c7('0x23')]=_0x34c7('0x26');this[_0x34c7('0xd')][_0x2e8332][_0x34c7('0x15')]['messageStatus']=_0x435766[_0x34c7('0x12')];if(_0x435766['messages']){this[_0x34c7('0xd')][_0x2e8332][_0x34c7('0x15')][_0x34c7('0x16')]=_0x435766[_0x34c7('0x27')][_0x34c7('0x16')];}return this['emit'](_0x2e8332);}};EmailChannel[_0x34c7('0x10')][_0x34c7('0x1f')]=function(_0x40e29e,_0xf28d2d){logger[_0x34c7('0xc')](_0x34c7('0x28'),_0xf28d2d['firstName'],_0xf28d2d['lastName'],_0xf28d2d['from'],_0x40e29e);if(this[_0x34c7('0xd')][_0x40e29e]){return mailAccount['notify'](_0x40e29e,_0xf28d2d)[_0x34c7('0x29')](function(_0x3d0547){if(_0x3d0547){logger[_0x34c7('0xc')](_0x34c7('0x2a'));}})[_0x34c7('0x2b')](function(_0x180d5d){logger[_0x34c7('0x22')](_0x34c7('0x2c'),JSON[_0x34c7('0x18')](_0x180d5d));});}};EmailChannel[_0x34c7('0x10')][_0x34c7('0x21')]=function(_0xbee7e0){if(this[_0x34c7('0xd')][_0xbee7e0]&&this[_0x34c7('0xd')][_0xbee7e0][_0x34c7('0x15')]){if(this['imapAccounts'][this[_0x34c7('0xd')][_0xbee7e0]['Imap']['id']]){delete this[_0x34c7('0xe')][this[_0x34c7('0xd')][_0xbee7e0][_0x34c7('0x15')]['id']];}this['mailAccounts'][_0xbee7e0][_0x34c7('0x15')][_0x34c7('0x2d')]=moment();this[_0x34c7('0x11')](_0xbee7e0);}};EmailChannel['prototype']['handleImapError']=function(_0x5a87b8,_0x3b8bdd){if(this[_0x34c7('0xd')][_0x5a87b8]){this[_0x34c7('0xd')][_0x5a87b8]['Imap'][_0x34c7('0x23')]=_0x34c7('0x22');this['mailAccounts'][_0x5a87b8][_0x34c7('0x15')][_0x34c7('0x25')]=_0x3b8bdd;return this[_0x34c7('0x11')](_0x5a87b8);}};EmailChannel[_0x34c7('0x10')][_0x34c7('0x2e')]=function(_0x1371f6,_0x4de6ea){return this[_0x34c7('0xf')][_0x34c7('0x2f')](_0x1371f6,_0x4de6ea);};EmailChannel[_0x34c7('0x10')]['verifySmtp']=function(_0x246e09){var _0xbd33b=this;if(this[_0x34c7('0xd')][_0x246e09['id']]){if(_['isNil'](this[_0x34c7('0xd')][_0x246e09['id']][_0x34c7('0x30')])){this[_0x34c7('0xd')][_0x246e09['id']]['Smtp']={};}this[_0x34c7('0xd')][_0x246e09['id']][_0x34c7('0x30')][_0x34c7('0x2d')]=moment();return new BPromise(function(_0x3301c8,_0x68b127){return _0xbd33b[_0x34c7('0xf')][_0x34c7('0x31')](_0x246e09)[_0x34c7('0x29')](function(_0x128ed1){_0xbd33b[_0x34c7('0xd')][_0x246e09['id']][_0x34c7('0x30')]['status']=_0x34c7('0x32');_0xbd33b[_0x34c7('0xd')][_0x246e09['id']]['Smtp']['messageStatus']='';_0xbd33b[_0x34c7('0x11')](_0x246e09['id']);_0x3301c8(_0x128ed1);})[_0x34c7('0x2b')](function(_0xc9ac86){_0xbd33b[_0x34c7('0xd')][_0x246e09['id']][_0x34c7('0x30')][_0x34c7('0x23')]=_0x34c7('0x22');_0xbd33b[_0x34c7('0xd')][_0x246e09['id']]['Smtp'][_0x34c7('0x25')]=_0xc9ac86;_0xbd33b[_0x34c7('0x11')](_0x246e09['id']);_0x68b127(_0xc9ac86);});});}return this[_0x34c7('0xf')]['verify'](_0x246e09);};module[_0x34c7('0x33')]=EmailChannel;
\ No newline at end of file
+var _0x3bea=['send','Smtp','verify','verified','catch','exports','bluebird','ioredis','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','prototype','emit','name','key','active','Imap','status','messageStatus','total','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','service','provider','custom','box','handleImapBox','bind','end','error','handleImapError','disabled','connected','firstName','lastName','from','then','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','lastSync','sendMail','smtp'];(function(_0x4bf91d,_0x30b134){var _0x5f3de9=function(_0x37783d){while(--_0x37783d){_0x4bf91d['push'](_0x4bf91d['shift']());}};_0x5f3de9(++_0x30b134);}(_0x3bea,0x1be));var _0xa3be=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x3bea[_0x5d4607];return _0x5e4a86;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0xa3be('0x0'));var md5=require('md5');var Redis=require(_0xa3be('0x1'));var config=require('../../../config/environment');var logger=require(_0xa3be('0x2'))(_0xa3be('0x3'));config[_0xa3be('0x4')]=_[_0xa3be('0x5')](config[_0xa3be('0x4')],{'host':_0xa3be('0x6'),'port':0x18eb});var io=require(_0xa3be('0x7'))(new Redis(config[_0xa3be('0x4')]));var EmailImap=require(_0xa3be('0x8'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xa3be('0x9'));var md5Accounts={};function EmailChannel(_0x152723){logger[_0xa3be('0xa')](_0xa3be('0xb'));this[_0xa3be('0xc')]=_0x152723['mailAccounts'];this[_0xa3be('0xd')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0xa3be('0xe')][_0xa3be('0xf')]=function(_0x2035c1){var _0x39bae8=this[_0xa3be('0xc')][_0x2035c1];var _0x52e31c={'id':_0x39bae8['id'],'name':_0x39bae8[_0xa3be('0x10')],'key':_0x39bae8[_0xa3be('0x11')],'active':_0x39bae8[_0xa3be('0x12')],'Imap':{'status':_0x39bae8[_0xa3be('0x13')][_0xa3be('0x14')],'messageStatus':_0x39bae8['Imap'][_0xa3be('0x15')],'total':_0x39bae8['Imap'][_0xa3be('0x16')]}};if(_[_0xa3be('0x17')](md5Accounts[_0x2035c1])){md5Accounts[_0x2035c1]={};}var _0x3e0a29=md5(JSON[_0xa3be('0x18')](_0x52e31c));if(md5Accounts[_0x2035c1][_0xa3be('0x19')]!==_0x3e0a29){md5Accounts[_0x2035c1][_0xa3be('0x19')]=_0x3e0a29;io[_0xa3be('0xf')](_0xa3be('0x1a'),_0x52e31c);}};EmailChannel[_0xa3be('0xe')][_0xa3be('0x1b')]=function(_0x2b178f){for(var _0x29b6f1 in _0x2b178f){if(_0x2b178f[_0xa3be('0x1c')](_0x29b6f1)){if(_0x2b178f[_0x29b6f1][_0xa3be('0x13')]&&_0x2b178f[_0x29b6f1][_0xa3be('0x12')]){var _0x3e18c3=_0x2b178f[_0x29b6f1]['Imap'];if(!_0x3e18c3[_0xa3be('0x1d')]&&_0x2b178f[_0x29b6f1][_0xa3be('0x1e')]!==_0xa3be('0x1f'))_0x3e18c3[_0xa3be('0x1d')]=_0x2b178f[_0x29b6f1]['provider'];if(!this[_0xa3be('0xd')]['hasOwnProperty'](_0x3e18c3['id'])){this[_0xa3be('0xd')][_0x3e18c3['id']]=new EmailImap(_0x3e18c3,_0x2b178f[_0x29b6f1][_0xa3be('0x3')]);this[_0xa3be('0xd')][_0x3e18c3['id']]['on'](_0xa3be('0x20'),this[_0xa3be('0x21')]['bind'](this,_0x29b6f1));this[_0xa3be('0xd')][_0x3e18c3['id']]['on'](_0xa3be('0x3'),this['handleImapEmail'][_0xa3be('0x22')](this,_0x29b6f1));this[_0xa3be('0xd')][_0x3e18c3['id']]['on'](_0xa3be('0x23'),this['handleImapEnd'][_0xa3be('0x22')](this,_0x29b6f1));this[_0xa3be('0xd')][_0x3e18c3['id']]['on'](_0xa3be('0x24'),this[_0xa3be('0x25')][_0xa3be('0x22')](this,_0x29b6f1));}}else{if(_[_0xa3be('0x17')](this[_0xa3be('0xc')][_0x29b6f1][_0xa3be('0x13')])){this[_0xa3be('0xc')][_0x29b6f1]['Imap']={};}this['mailAccounts'][_0x29b6f1]['Imap'][_0xa3be('0x14')]=_0xa3be('0x26');this[_0xa3be('0xc')][_0x29b6f1]['Imap'][_0xa3be('0x15')]='';this[_0xa3be('0xf')](_0x29b6f1);}}}};EmailChannel[_0xa3be('0xe')]['handleImapBox']=function(_0x1a6519,_0x333afb){if(this[_0xa3be('0xc')][_0x1a6519]){this[_0xa3be('0xc')][_0x1a6519][_0xa3be('0x13')][_0xa3be('0x14')]=_0xa3be('0x27');this[_0xa3be('0xc')][_0x1a6519][_0xa3be('0x13')][_0xa3be('0x15')]=_0x333afb[_0xa3be('0x10')];if(_0x333afb['messages']){this['mailAccounts'][_0x1a6519][_0xa3be('0x13')][_0xa3be('0x16')]=_0x333afb['messages'][_0xa3be('0x16')];}return this[_0xa3be('0xf')](_0x1a6519);}};EmailChannel[_0xa3be('0xe')]['handleImapEmail']=function(_0x5efe3,_0x3b9be5){logger[_0xa3be('0xa')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x3b9be5[_0xa3be('0x28')],_0x3b9be5[_0xa3be('0x29')],_0x3b9be5[_0xa3be('0x2a')],_0x5efe3);if(this[_0xa3be('0xc')][_0x5efe3]){return mailAccount['notify'](_0x5efe3,_0x3b9be5)[_0xa3be('0x2b')](function(_0x578089){if(_0x578089){logger[_0xa3be('0xa')]('Mail\x20accepted\x20from\x20routing');}})['catch'](function(_0x516f9f){logger['error'](_0xa3be('0x2c'),JSON[_0xa3be('0x18')](_0x516f9f));});}};EmailChannel[_0xa3be('0xe')][_0xa3be('0x2d')]=function(_0x298720){if(this['mailAccounts'][_0x298720]&&this['mailAccounts'][_0x298720][_0xa3be('0x13')]){if(this[_0xa3be('0xd')][this[_0xa3be('0xc')][_0x298720][_0xa3be('0x13')]['id']]){delete this[_0xa3be('0xd')][this[_0xa3be('0xc')][_0x298720]['Imap']['id']];}this[_0xa3be('0xc')][_0x298720][_0xa3be('0x13')][_0xa3be('0x2e')]=moment();this[_0xa3be('0xf')](_0x298720);}};EmailChannel[_0xa3be('0xe')][_0xa3be('0x25')]=function(_0x2ea6ce,_0x3fbe0a){if(this[_0xa3be('0xc')][_0x2ea6ce]){this[_0xa3be('0xc')][_0x2ea6ce]['Imap'][_0xa3be('0x14')]=_0xa3be('0x24');this['mailAccounts'][_0x2ea6ce]['Imap'][_0xa3be('0x15')]=_0x3fbe0a;return this['emit'](_0x2ea6ce);}};EmailChannel['prototype'][_0xa3be('0x2f')]=function(_0x153ecd,_0x4c5256){return this[_0xa3be('0x30')][_0xa3be('0x31')](_0x153ecd,_0x4c5256);};EmailChannel[_0xa3be('0xe')]['verifySmtp']=function(_0x3dc5ca){var _0x39a581=this;if(this[_0xa3be('0xc')][_0x3dc5ca['id']]){if(_[_0xa3be('0x17')](this[_0xa3be('0xc')][_0x3dc5ca['id']][_0xa3be('0x32')])){this[_0xa3be('0xc')][_0x3dc5ca['id']]['Smtp']={};}this[_0xa3be('0xc')][_0x3dc5ca['id']][_0xa3be('0x32')]['lastSync']=moment();return new BPromise(function(_0x1c724a,_0x43ee02){return _0x39a581[_0xa3be('0x30')][_0xa3be('0x33')](_0x3dc5ca)[_0xa3be('0x2b')](function(_0x4b58d2){_0x39a581[_0xa3be('0xc')][_0x3dc5ca['id']][_0xa3be('0x32')][_0xa3be('0x14')]=_0xa3be('0x34');_0x39a581[_0xa3be('0xc')][_0x3dc5ca['id']][_0xa3be('0x32')][_0xa3be('0x15')]='';_0x39a581['emit'](_0x3dc5ca['id']);_0x1c724a(_0x4b58d2);})[_0xa3be('0x35')](function(_0x46f097){_0x39a581['mailAccounts'][_0x3dc5ca['id']][_0xa3be('0x32')][_0xa3be('0x14')]='error';_0x39a581[_0xa3be('0xc')][_0x3dc5ca['id']][_0xa3be('0x32')]['messageStatus']=_0x46f097;_0x39a581[_0xa3be('0xf')](_0x3dc5ca['id']);_0x43ee02(_0x46f097);});});}return this[_0xa3be('0x30')]['verify'](_0x3dc5ca);};module[_0xa3be('0x36')]=EmailChannel;
\ No newline at end of file
index f5a6c1d..02a6b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfb=['getAccount','imap','once','ready','bind','end','connect','prototype','connTimeout','authTimeout','user','modernAuthentication','xoauth2','CloudProvider','data5','password','authentication','email','host','port','tls','autotls','required','handleReady','openBox','handleOpenBox','handleError','emit','box','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchEnd','error','closeBox','attributes','handleMessageAttributes','handleMessageBody','handleSimpleParser','handleMessageEnd','parser','handleCloseBox','handleFetchError','stringify','textCode','hasOwnProperty','lodash','util','mailparser','simpleParser','iconv','Iconv','../../../config/logger','mailbox','INBOX','account'];(function(_0x23bfdc,_0x42b5f8){var _0x3192c7=function(_0x523a11){while(--_0x523a11){_0x23bfdc['push'](_0x23bfdc['shift']());}};_0x3192c7(++_0x42b5f8);}(_0x7dfb,0x164));var _0xb7df=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x7dfb[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0xb7df('0x0'));var util=require(_0xb7df('0x1'));var Imap=require('imap');var simpleParser=require(_0xb7df('0x2'))[_0xb7df('0x3')];var Iconv=require(_0xb7df('0x4'))[_0xb7df('0x5')];var EventEmitter=require('events')['EventEmitter'];var utils=require('./utils');var logger=require(_0xb7df('0x6'))('email');function EmailImap(_0x4e639b,_0x1d298c){this[_0xb7df('0x7')]=_0xb7df('0x8');this[_0xb7df('0x9')]=this[_0xb7df('0xa')](_0x4e639b,_0x1d298c);this[_0xb7df('0xb')]=new Imap(this[_0xb7df('0x9')]);this[_0xb7df('0xb')][_0xb7df('0xc')](_0xb7df('0xd'),this['handleReady'][_0xb7df('0xe')](this));this[_0xb7df('0xb')][_0xb7df('0xc')](_0xb7df('0xf'),this['handleEnd'][_0xb7df('0xe')](this));this[_0xb7df('0xb')]['on']('error',this['handleError'][_0xb7df('0xe')](this));this['imap'][_0xb7df('0x10')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xb7df('0x11')]['getAccount']=function(_0x2fd43b,_0x38e8e0){var _0x1a0aa9={'connTimeout':_0x2fd43b['connTimeout']?_0x2fd43b[_0xb7df('0x12')]*0x3e8:0x2710,'authTimeout':_0x2fd43b[_0xb7df('0x13')]?_0x2fd43b[_0xb7df('0x13')]*0x3e8:0x1388};if(_0x2fd43b['service']){_0x1a0aa9[_0xb7df('0x14')]=_0x2fd43b[_0xb7df('0x14')];if(_0x2fd43b[_0xb7df('0x15')]){_0x1a0aa9[_0xb7df('0x16')]=utils['generateXOAuth2Token'](_0x2fd43b[_0xb7df('0x17')][_0xb7df('0x18')],_0x2fd43b[_0xb7df('0x14')]);}else{_0x1a0aa9[_0xb7df('0x19')]=_0x2fd43b[_0xb7df('0x19')];}}else{if(_0x2fd43b[_0xb7df('0x1a')]){_0x1a0aa9[_0xb7df('0x14')]=_0x2fd43b['user'];_0x1a0aa9[_0xb7df('0x19')]=_0x2fd43b[_0xb7df('0x19')];}}_0x1a0aa9[_0xb7df('0x1b')]=_0x38e8e0||_0x2fd43b[_0xb7df('0x14')]||'anonymous@xcally.com';_0x1a0aa9['host']=_0x2fd43b[_0xb7df('0x1c')];_0x1a0aa9[_0xb7df('0x1d')]=_0x2fd43b[_0xb7df('0x1d')]||0x3e1;if(_0x2fd43b['tls']){_0x1a0aa9[_0xb7df('0x1e')]=!![];}else{_0x1a0aa9['tls']=![];_0x1a0aa9[_0xb7df('0x1f')]=_0xb7df('0x20');}return _0x1a0aa9;};EmailImap[_0xb7df('0x11')][_0xb7df('0x21')]=function(){this[_0xb7df('0xb')][_0xb7df('0x22')](this[_0xb7df('0x7')],![],this[_0xb7df('0x23')][_0xb7df('0xe')](this));};EmailImap[_0xb7df('0x11')]['handleOpenBox']=function(_0x68a0b4,_0x2f6ce9){if(_0x68a0b4){this[_0xb7df('0x24')](_0x68a0b4,!![]);}else{this[_0xb7df('0x25')](_0xb7df('0x26'),_0x2f6ce9);this[_0xb7df('0x27')]();}};EmailImap[_0xb7df('0x11')]['handleCloseBox']=function(_0x16a6a7){if(_0x16a6a7){this[_0xb7df('0x24')](_0x16a6a7,!![]);}else{this[_0xb7df('0xb')]['end']();}};EmailImap[_0xb7df('0x11')][_0xb7df('0x27')]=function(){this[_0xb7df('0xb')][_0xb7df('0x28')]([_0xb7df('0x29')],this[_0xb7df('0x2a')][_0xb7df('0xe')](this));};EmailImap[_0xb7df('0x11')]['handleReadUnseen']=function(_0x1b3011,_0x3108a0){if(_0x1b3011){this['handleError'](_0x1b3011,!![]);}else{if(_0x3108a0[_0xb7df('0x2b')]){try{var _0x2a1bba=this[_0xb7df('0xb')][_0xb7df('0x2c')](_0x3108a0,{'bodies':'','markSeen':!![]});_0x2a1bba['on'](_0xb7df('0x2d'),this[_0xb7df('0x2e')]['bind'](this));_0x2a1bba[_0xb7df('0xc')]('error',this['handleFetchError']['bind'](this));_0x2a1bba[_0xb7df('0xc')](_0xb7df('0xf'),this[_0xb7df('0x2f')][_0xb7df('0xe')](this));}catch(_0x44c3bb){logger[_0xb7df('0x30')](_0x44c3bb);}}else{this['imap'][_0xb7df('0x31')](!![],this['handleCloseBox'][_0xb7df('0xe')](this));}}};EmailImap[_0xb7df('0x11')][_0xb7df('0x2e')]=function(_0x48dd53){_0x48dd53['on']('body',this['handleMessageBody']['bind'](this));_0x48dd53[_0xb7df('0xc')](_0xb7df('0x32'),this[_0xb7df('0x33')][_0xb7df('0xe')](this));_0x48dd53[_0xb7df('0xc')](_0xb7df('0xf'),this['handleMessageEnd']['bind'](this));};EmailImap[_0xb7df('0x11')][_0xb7df('0x34')]=function(_0x2f71a1){simpleParser(_0x2f71a1,{'Iconv':Iconv},this[_0xb7df('0x35')][_0xb7df('0xe')](this));};EmailImap['prototype'][_0xb7df('0x33')]=function(){};EmailImap[_0xb7df('0x11')][_0xb7df('0x36')]=function(){};EmailImap['prototype'][_0xb7df('0x35')]=function(_0x299452,_0x17e747){if(_0x299452){logger[_0xb7df('0x30')](_0x299452);}else{var _0x303936=this;utils[_0xb7df('0x37')](this[_0xb7df('0x9')],_0x17e747,function(_0x5eb2a8){_0x303936[_0xb7df('0x25')]('email',_0x5eb2a8);});}};EmailImap[_0xb7df('0x11')][_0xb7df('0x2f')]=function(){this['imap']['closeBox'](!![],this[_0xb7df('0x38')]['bind'](this));};EmailImap[_0xb7df('0x11')][_0xb7df('0x39')]=function(_0x5cdf11){this[_0xb7df('0x24')](_0x5cdf11);this['imap']['closeBox'](!![],this[_0xb7df('0x38')][_0xb7df('0xe')](this));};EmailImap['prototype']['handleEnd']=function(){this[_0xb7df('0x25')]('end');};EmailImap[_0xb7df('0x11')]['handleError']=function(_0x3f2f60,_0x2e8f40){logger[_0xb7df('0x30')](_0xb7df('0x24'),this[_0xb7df('0x9')][_0xb7df('0x1b')],JSON[_0xb7df('0x3a')](_0x3f2f60));var _0x2744a4='';if(_0x3f2f60){if(_0x3f2f60[_0xb7df('0x3b')]){_0x2744a4=_0x3f2f60[_0xb7df('0x3b')];}else{for(var _0x50d358 in _0x3f2f60){if(_0x3f2f60[_0xb7df('0x3c')](_0x50d358)){_0x2744a4+=_['upperFirst'](_0x50d358)+':\x20'+_0x3f2f60[_0x50d358]+'\x0a';}}}}if(_0x2e8f40){this[_0xb7df('0xb')][_0xb7df('0xf')]();}else{this[_0xb7df('0x25')](_0xb7df('0x30'),_0x2744a4);this[_0xb7df('0x25')]('end');}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x7314=['lodash','util','mailparser','simpleParser','iconv','events','EventEmitter','./utils','email','mailbox','account','getAccount','once','ready','handleReady','imap','end','handleEnd','bind','error','handleError','connect','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','CloudProvider','data5','password','anonymous@xcally.com','host','port','tls','autotls','required','prototype','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','search','UNSEEN','length','fetch','handleFetchError','handleFetchEnd','handleFetchMessage','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','closeBox','stringify','textCode','hasOwnProperty','upperFirst','exports'];(function(_0x1fa7da,_0x82cb97){var _0x809b2f=function(_0x8fb22a){while(--_0x8fb22a){_0x1fa7da['push'](_0x1fa7da['shift']());}};_0x809b2f(++_0x82cb97);}(_0x7314,0x100));var _0x4731=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7314[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x4731('0x0'));var util=require(_0x4731('0x1'));var Imap=require('imap');var simpleParser=require(_0x4731('0x2'))[_0x4731('0x3')];var Iconv=require(_0x4731('0x4'))['Iconv'];var EventEmitter=require(_0x4731('0x5'))[_0x4731('0x6')];var utils=require(_0x4731('0x7'));var logger=require('../../../config/logger')(_0x4731('0x8'));function EmailImap(_0x1baa3f,_0x4d0789){this[_0x4731('0x9')]=_0x1baa3f[_0x4731('0x9')];this[_0x4731('0xa')]=this[_0x4731('0xb')](_0x1baa3f,_0x4d0789);this['imap']=new Imap(this[_0x4731('0xa')]);this['imap'][_0x4731('0xc')](_0x4731('0xd'),this[_0x4731('0xe')]['bind'](this));this[_0x4731('0xf')][_0x4731('0xc')](_0x4731('0x10'),this[_0x4731('0x11')][_0x4731('0x12')](this));this[_0x4731('0xf')]['on'](_0x4731('0x13'),this[_0x4731('0x14')][_0x4731('0x12')](this));this[_0x4731('0xf')][_0x4731('0x15')]();}util['inherits'](EmailImap,EventEmitter);EmailImap['prototype'][_0x4731('0xb')]=function(_0x15ea96,_0x515f65){var _0x3c99a2={'connTimeout':_0x15ea96[_0x4731('0x16')]?_0x15ea96[_0x4731('0x16')]*0x3e8:0x2710,'authTimeout':_0x15ea96[_0x4731('0x17')]?_0x15ea96['authTimeout']*0x3e8:0x1388};if(_0x15ea96[_0x4731('0x18')]){_0x3c99a2[_0x4731('0x19')]=_0x15ea96['user'];if(_0x15ea96[_0x4731('0x1a')]){_0x3c99a2[_0x4731('0x1b')]=utils['generateXOAuth2Token'](_0x15ea96[_0x4731('0x1c')][_0x4731('0x1d')],_0x15ea96['user']);}else{_0x3c99a2[_0x4731('0x1e')]=_0x15ea96[_0x4731('0x1e')];}}else{if(_0x15ea96['authentication']){_0x3c99a2['user']=_0x15ea96[_0x4731('0x19')];_0x3c99a2[_0x4731('0x1e')]=_0x15ea96[_0x4731('0x1e')];}}_0x3c99a2['email']=_0x515f65||_0x15ea96[_0x4731('0x19')]||_0x4731('0x1f');_0x3c99a2[_0x4731('0x20')]=_0x15ea96[_0x4731('0x20')];_0x3c99a2[_0x4731('0x21')]=_0x15ea96[_0x4731('0x21')]||0x3e1;if(_0x15ea96[_0x4731('0x22')]){_0x3c99a2[_0x4731('0x22')]=!![];}else{_0x3c99a2[_0x4731('0x22')]=![];_0x3c99a2[_0x4731('0x23')]=_0x4731('0x24');}return _0x3c99a2;};EmailImap[_0x4731('0x25')][_0x4731('0xe')]=function(){this[_0x4731('0xf')][_0x4731('0x26')](this[_0x4731('0x9')],![],this[_0x4731('0x27')]['bind'](this));};EmailImap[_0x4731('0x25')][_0x4731('0x27')]=function(_0x1d2151,_0xcd7122){if(_0x1d2151){this['handleError'](_0x1d2151,!![]);}else{this[_0x4731('0x28')](_0x4731('0x29'),_0xcd7122);this[_0x4731('0x2a')]();}};EmailImap[_0x4731('0x25')][_0x4731('0x2b')]=function(_0x244884){if(_0x244884){this[_0x4731('0x14')](_0x244884,!![]);}else{this['imap'][_0x4731('0x10')]();}};EmailImap[_0x4731('0x25')][_0x4731('0x2a')]=function(){this[_0x4731('0xf')][_0x4731('0x2c')]([_0x4731('0x2d')],this['handleReadUnseen'][_0x4731('0x12')](this));};EmailImap['prototype']['handleReadUnseen']=function(_0x1cca8b,_0x4e0777){if(_0x1cca8b){this[_0x4731('0x14')](_0x1cca8b,!![]);}else{if(_0x4e0777[_0x4731('0x2e')]){try{var _0x3374f0=this[_0x4731('0xf')][_0x4731('0x2f')](_0x4e0777,{'bodies':'','markSeen':!![]});_0x3374f0['on']('message',this['handleFetchMessage'][_0x4731('0x12')](this));_0x3374f0[_0x4731('0xc')](_0x4731('0x13'),this[_0x4731('0x30')]['bind'](this));_0x3374f0['once'](_0x4731('0x10'),this[_0x4731('0x31')][_0x4731('0x12')](this));}catch(_0x2ff51f){logger['error'](_0x2ff51f);}}else{this[_0x4731('0xf')]['closeBox'](!![],this[_0x4731('0x2b')]['bind'](this));}}};EmailImap[_0x4731('0x25')][_0x4731('0x32')]=function(_0x15ee89){_0x15ee89['on'](_0x4731('0x33'),this[_0x4731('0x34')][_0x4731('0x12')](this));_0x15ee89[_0x4731('0xc')](_0x4731('0x35'),this[_0x4731('0x36')][_0x4731('0x12')](this));_0x15ee89[_0x4731('0xc')]('end',this[_0x4731('0x37')][_0x4731('0x12')](this));};EmailImap[_0x4731('0x25')][_0x4731('0x34')]=function(_0x4636d7){simpleParser(_0x4636d7,{'Iconv':Iconv},this[_0x4731('0x38')]['bind'](this));};EmailImap['prototype'][_0x4731('0x36')]=function(){};EmailImap['prototype'][_0x4731('0x37')]=function(){};EmailImap[_0x4731('0x25')][_0x4731('0x38')]=function(_0x479ba8,_0x2b74f8){if(_0x479ba8){logger[_0x4731('0x13')](_0x479ba8);}else{var _0x3a008a=this;utils[_0x4731('0x39')](this['account'],_0x2b74f8,function(_0x237a7a){_0x3a008a[_0x4731('0x28')](_0x4731('0x8'),_0x237a7a);});}};EmailImap['prototype']['handleFetchEnd']=function(){this[_0x4731('0xf')]['closeBox'](!![],this['handleCloseBox'][_0x4731('0x12')](this));};EmailImap['prototype'][_0x4731('0x30')]=function(_0x5795cb){this[_0x4731('0x14')](_0x5795cb);this[_0x4731('0xf')][_0x4731('0x3a')](!![],this[_0x4731('0x2b')][_0x4731('0x12')](this));};EmailImap['prototype'][_0x4731('0x11')]=function(){this[_0x4731('0x28')](_0x4731('0x10'));};EmailImap['prototype'][_0x4731('0x14')]=function(_0x32c5af,_0xcd3b19){logger[_0x4731('0x13')](_0x4731('0x14'),this['account']['email'],JSON[_0x4731('0x3b')](_0x32c5af));var _0x143356='';if(_0x32c5af){if(_0x32c5af[_0x4731('0x3c')]){_0x143356=_0x32c5af[_0x4731('0x3c')];}else{for(var _0x851f0e in _0x32c5af){if(_0x32c5af[_0x4731('0x3d')](_0x851f0e)){_0x143356+=_[_0x4731('0x3e')](_0x851f0e)+':\x20'+_0x32c5af[_0x851f0e]+'\x0a';}}}}if(_0xcd3b19){this[_0x4731('0xf')][_0x4731('0x10')]();}else{this[_0x4731('0x28')](_0x4731('0x13'),_0x143356);this[_0x4731('0x28')](_0x4731('0x10'));}};module[_0x4731('0x3f')]=EmailImap;
\ No newline at end of file
index e06d8d3..c8e9d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f01=['send','createTransport','compile','toString','verify','Not\x20verifired','nodemailer','prototype'];(function(_0x19a49f,_0x444d74){var _0x5351ae=function(_0x58b1ed){while(--_0x58b1ed){_0x19a49f['push'](_0x19a49f['shift']());}};_0x5351ae(++_0x444d74);}(_0x0f01,0x86));var _0x10f0=function(_0x2583a7,_0x3beef9){_0x2583a7=_0x2583a7-0x0;var _0x35de7b=_0x0f01[_0x2583a7];return _0x35de7b;};'use strict';var nodemailer=require(_0x10f0('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x10f0('0x1')][_0x10f0('0x2')]=function(_0x1d3802,_0x31be5c){return new Promise(function(_0x53202c,_0x4b1b3d){var _0x359ef2=nodemailer[_0x10f0('0x3')](_0x1d3802);_0x359ef2['use'](_0x10f0('0x4'),inlineBase64());_0x359ef2['sendMail'](_0x31be5c,function(_0x5bc057,_0x56d150){if(_0x5bc057){_0x4b1b3d(_0x5bc057[_0x10f0('0x5')]());}else{_0x53202c(_0x56d150);}});});};EmailSmtp[_0x10f0('0x1')]['verify']=function(_0x199dc0){return new Promise(function(_0x2e1c0b,_0x5e6d4d){var _0x1f317=nodemailer['createTransport'](_0x199dc0);_0x1f317[_0x10f0('0x6')](function(_0x34beca,_0x30c393){if(_0x34beca){_0x5e6d4d(_0x34beca[_0x10f0('0x5')]());}else{if(_0x30c393){_0x2e1c0b(_0x30c393);}else{_0x5e6d4d(_0x10f0('0x7'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
+var _0x419a=['send','createTransport','use','compile','toString','verify','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype'];(function(_0x348882,_0x5f5b30){var _0x3c39fd=function(_0x1781d8){while(--_0x1781d8){_0x348882['push'](_0x348882['shift']());}};_0x3c39fd(++_0x5f5b30);}(_0x419a,0x1aa));var _0xa419=function(_0x4c608b,_0x4db3bf){_0x4c608b=_0x4c608b-0x0;var _0x19d501=_0x419a[_0x4c608b];return _0x19d501;};'use strict';var nodemailer=require(_0xa419('0x0'));var inlineBase64=require(_0xa419('0x1'));function EmailSmtp(){}EmailSmtp[_0xa419('0x2')][_0xa419('0x3')]=function(_0x1176ea,_0x2fbf53){return new Promise(function(_0x515def,_0x7601ac){var _0x3e53ea=nodemailer[_0xa419('0x4')](_0x1176ea);_0x3e53ea[_0xa419('0x5')](_0xa419('0x6'),inlineBase64());_0x3e53ea['sendMail'](_0x2fbf53,function(_0x5ef2cd,_0x2dbbf7){if(_0x5ef2cd){_0x7601ac(_0x5ef2cd[_0xa419('0x7')]());}else{_0x515def(_0x2dbbf7);}});});};EmailSmtp['prototype']['verify']=function(_0x51d625){return new Promise(function(_0x290383,_0x27c63a){var _0x36eb8f=nodemailer[_0xa419('0x4')](_0x51d625);_0x36eb8f[_0xa419('0x8')](function(_0x429d17,_0x236be5){if(_0x429d17){_0x27c63a(_0x429d17[_0xa419('0x7')]());}else{if(_0x236be5){_0x290383(_0x236be5);}else{_0x27c63a(_0xa419('0x9'));}}});});};module[_0xa419('0xa')]=EmailSmtp;
\ No newline at end of file
index 356a41d..a5f7028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4876=['join','pop','isEmpty','html','test','<img','push','filename','replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originCc','includes','originTo','bcc','attachments','attach','type','attachment-','format','%s-%s','now','root','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','parser','from','messageId','date','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','Data','generateXOAuth2Token','user=','auth=Bearer\x20','toString','base64','lodash','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','length','slice'];(function(_0x2e95f1,_0x567b35){var _0x4055fe=function(_0x4a5c6f){while(--_0x4a5c6f){_0x2e95f1['push'](_0x2e95f1['shift']());}};_0x4055fe(++_0x567b35);}(_0x4876,0x1f2));var _0x6487=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4876[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6487('0x0'));var moment=require('moment');var random=require(_0x6487('0x1'));var fs=require('fs');var path=require(_0x6487('0x2'));var util=require(_0x6487('0x3'));var tnef=require(_0x6487('0x4'));var logger=require(_0x6487('0x5'))(_0x6487('0x6'));var config=require(_0x6487('0x7'));function getAddress(_0x2a4949){var _0x3b1fe3=_[_0x6487('0x8')](_0x2a4949[_0x6487('0x9')]);return _0x3b1fe3&&_0x3b1fe3[_0x6487('0xa')]?_0x3b1fe3['address']:_0x6487('0xb')+random[_0x6487('0xc')](0x6)+_0x6487('0xd');}function getFirstName(_0x46da01){var _0x15d1eb=_[_0x6487('0x8')](_0x46da01[_0x6487('0x9')]);if(_0x15d1eb&&_0x15d1eb[_0x6487('0xe')]){if(_0x15d1eb[_0x6487('0xe')]==_0x15d1eb[_0x6487('0xa')]){return _0x15d1eb[_0x6487('0xe')][_0x6487('0xf')](0x0,_0x15d1eb[_0x6487('0xe')][_0x6487('0x10')]('@'));}var _0x4b8a7c=_0x15d1eb[_0x6487('0xe')][_0x6487('0x11')](/\s+/);return _0x4b8a7c[_0x6487('0x12')]>0x1?_0x4b8a7c[_0x6487('0x13')](0x0,-0x1)[_0x6487('0x14')]('\x20'):_0x15d1eb[_0x6487('0xe')];}return'Anonymous';}function getLastName(_0x1eb8be){var _0x32d86f=_['head'](_0x1eb8be[_0x6487('0x9')]);if(_0x32d86f&&_0x32d86f[_0x6487('0xe')]){var _0x47c0d7=_0x32d86f[_0x6487('0xe')][_0x6487('0x11')](/\s+/);return _0x47c0d7[_0x6487('0x12')]>0x1?_0x47c0d7[_0x6487('0x15')]():'';}return'';}function getMails(_0x56808a,_0x11ba40){var _0x26f817='';for(var _0x5a5b6b=0x0;_0x5a5b6b<_0x11ba40['value'][_0x6487('0x12')];_0x5a5b6b+=0x1){if(_0x11ba40['value'][_0x5a5b6b][_0x6487('0xa')]!==_0x56808a){if(!_[_0x6487('0x16')](_0x26f817)){_0x26f817+=',';}_0x26f817+=_0x11ba40[_0x6487('0x9')][_0x5a5b6b][_0x6487('0xe')]||_0x11ba40['value'][_0x5a5b6b][_0x6487('0xa')]||'';_0x26f817+='\x20<';_0x26f817+=_0x11ba40['value'][_0x5a5b6b][_0x6487('0xa')]?_0x11ba40['value'][_0x5a5b6b]['address']:_0x6487('0xb')+random[_0x6487('0xc')](0x6)+_0x6487('0xd');_0x26f817+='>';}}return _0x26f817;}function parseEmail(_0x3a7867,_0x5cc1e7,_0x452e7c){if(_0x5cc1e7[_0x6487('0x17')]){var _0x222c7f=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x222c7f[_0x6487('0x18')](_0x5cc1e7['html'])){_0x5cc1e7[_0x6487('0x17')]=_0x5cc1e7['html']['replace'](_0x222c7f,'');}if(_0x5cc1e7['html']['includes'](_0x6487('0x19'))){var _0x3dd8f8=[];_0x5cc1e7['attachments']['forEach'](_0xcfcf2c=>{_0x3dd8f8[_0x6487('0x1a')](_0xcfcf2c[_0x6487('0x1b')]);});var _0x1eabbf=/<img.*? _SRC(.*?)[^>]+>/g;var _0x4b2857=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x2140d5=_0x5cc1e7[_0x6487('0x17')][_0x6487('0x1c')](_0x4b2857,_0x6487('0x1d'));var _0x351c5f=_0x2140d5[_0x6487('0x1c')](_0x1eabbf,_0x6487('0x1e'));for(let _0x23a99c=0x0;_0x23a99c<_0x3dd8f8['length'];_0x23a99c++){var _0x228f2c=_0x351c5f[_0x6487('0x1c')](_0x6487('0x1e'),_0x6487('0x1f')+_0x3dd8f8[_0x23a99c]+_0x6487('0x20'));_0x351c5f=_0x228f2c;}_0x5cc1e7['html']=_0x351c5f;}_0x452e7c['body']=_0x5cc1e7['html'];}else{_0x452e7c[_0x6487('0x21')]=_0x5cc1e7[_0x6487('0x22')];}if(_0x452e7c['body']){_0x452e7c[_0x6487('0x21')]=_0x452e7c['body'][_0x6487('0x1c')](/<a\s+/gi,_0x6487('0x23'));}if(_0x5cc1e7['to']){_0x452e7c[_0x6487('0x24')]['originTo']=getMails(null,_0x5cc1e7['to']);var _0x2e8400=getMails(_0x3a7867['email'],_0x5cc1e7['to']);if(!_[_0x6487('0x16')](_0x2e8400)){_0x452e7c['message']['cc']+=_0x2e8400;}}if(_0x5cc1e7['cc']){_0x452e7c[_0x6487('0x24')][_0x6487('0x25')]=getMails(null,_0x5cc1e7['cc']);var _0x20116a=getMails(_0x3a7867[_0x6487('0x6')],_0x5cc1e7['cc']);if(!_[_0x6487('0x16')](_0x20116a)){if(!_['isEmpty'](_0x452e7c[_0x6487('0x24')]['cc'])){_0x452e7c[_0x6487('0x24')]['cc']+=',';}_0x452e7c[_0x6487('0x24')]['cc']+=_0x20116a;}}if(!_[_0x6487('0x26')](_0x452e7c['message'][_0x6487('0x27')],_0x3a7867[_0x6487('0x6')])&&!_[_0x6487('0x26')](_0x452e7c[_0x6487('0x24')][_0x6487('0x25')],_0x3a7867[_0x6487('0x6')])){_0x452e7c[_0x6487('0x24')][_0x6487('0x28')]=_0x3a7867[_0x6487('0x6')];}if(_0x5cc1e7['attachments']&&_0x5cc1e7[_0x6487('0x29')][_0x6487('0x12')]){_0x452e7c[_0x6487('0x24')][_0x6487('0x2a')]=_0x5cc1e7[_0x6487('0x29')][_0x6487('0x12')];for(var _0x86ca56=0x0,_0x544d8a,_0x216a4c,_0x90b04b;_0x86ca56<_0x5cc1e7['attachments'][_0x6487('0x12')];_0x86ca56+=0x1){if(_0x5cc1e7[_0x6487('0x29')][_0x86ca56][_0x6487('0x2b')]==='attachment'){_0x90b04b=_0x5cc1e7['attachments'][_0x86ca56][_0x6487('0x1b')]||_0x6487('0x2c')+_0x86ca56;_0x544d8a=util[_0x6487('0x2d')](_0x6487('0x2e'),Date[_0x6487('0x2f')](),_0x90b04b);_0x216a4c=path[_0x6487('0x14')](config[_0x6487('0x30')],'server/files/attachments/',_0x544d8a);fs[_0x6487('0x31')](_0x216a4c,_0x5cc1e7[_0x6487('0x29')][_0x86ca56]['content']);_0x452e7c[_0x6487('0x24')][_0x6487('0x29')][_0x6487('0x1a')]({'name':_0x90b04b,'basename':_0x544d8a,'type':_0x5cc1e7[_0x6487('0x29')][_0x86ca56][_0x6487('0x32')],'filepath':_0x216a4c});}}}if(_0x5cc1e7[_0x6487('0x33')]&&_0x5cc1e7[_0x6487('0x33')][_0x6487('0x12')]>0x0){var _0x51c930=[_0x6487('0x34'),_0x6487('0x35'),'Precedence:\x20auto_reply'];for(var _0x4bb0bf=0x0;_0x4bb0bf<_0x5cc1e7['headerLines']['length'];_0x4bb0bf++){var _0x38c3bc=_[_0x6487('0x10')](_0x51c930,_0x5cc1e7['headerLines'][_0x4bb0bf][_0x6487('0x36')]);if(_0x38c3bc>=0x0){_0x452e7c['isAutoreply']=!![];}}}return _0x452e7c;}exports[_0x6487('0x37')]=function(_0x134d27,_0x568d1d,_0x48a488){var _0x3c6d94={'from':getAddress(_0x568d1d[_0x6487('0x38')]),'firstName':getFirstName(_0x568d1d['from']),'lastName':getLastName(_0x568d1d[_0x6487('0x38')]),'mapKey':_0x6487('0x6'),'message':{'from':getMails(_0x134d27[_0x6487('0x6')],_0x568d1d['from']),'to':_0x134d27[_0x6487('0x6')],'cc':'','subject':_0x568d1d['subject']||'','messageId':_0x568d1d[_0x6487('0x39')],'inReplyTo':_0x568d1d['inReplyTo'],'sentAt':moment(_0x568d1d[_0x6487('0x3a')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x568d1d[_0x6487('0x17')]&&!_0x568d1d[_0x6487('0x22')]){var _0x5661bf=_[_0x6487('0x3b')](_0x568d1d[_0x6487('0x29')],{'contentType':_0x6487('0x3c')});if(_0x5661bf[_0x6487('0x12')]){logger[_0x6487('0x3d')](util['format'](_0x6487('0x3e'),_0x568d1d[_0x6487('0x39')]));tnef[_0x6487('0x3f')](_[_0x6487('0x40')](_0x5661bf)['content'],function(_0x2559c6,_0x5b16af){if(_0x5b16af){_0x568d1d[_0x6487('0x17')]=_0x5b16af[_0x6487('0x41')]||_0x6487('0x42');if(_0x5b16af[_0x6487('0x43')]){for(var _0x26ad66=0x0;_0x26ad66<_0x5b16af[_0x6487('0x43')]['length'];_0x26ad66++){var _0x2fa498=_0x5b16af['Attachments'][_0x26ad66];_0x3c6d94[_0x6487('0x24')]['attachments']['push']({'filename':_0x2fa498['Title'],'content':Buffer[_0x6487('0x38')](_0x2fa498[_0x6487('0x44')])});}}}_0x48a488(parseEmail(_0x134d27,_0x568d1d,_0x3c6d94));});}else{_0x568d1d['html']='<p>Empty\x20message</p>';_0x48a488(parseEmail(_0x134d27,_0x568d1d,_0x3c6d94));}}else{_0x48a488(parseEmail(_0x134d27,_0x568d1d,_0x3c6d94));}};exports[_0x6487('0x45')]=function(_0x13dbd5,_0x3d0a44){var _0x342812=[_0x6487('0x46')+(_0x3d0a44||''),_0x6487('0x47')+_0x13dbd5,'',''];return Buffer['from'](_0x342812[_0x6487('0x14')]('\ 1'),'utf-8')[_0x6487('0x48')](_0x6487('0x49'));};
\ No newline at end of file
+var _0x52e0=['<img','attachments','forEach','filename','replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','bcc','attach','type','attachment','attachment-','format','%s-%s','join','root','server/files/attachments/','writeFileSync','push','contentType','headerLines','Precedence:\x20auto_reply','line','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','generateXOAuth2Token','user=','toString','lodash','randomstring','util','node-tnef','../../../config/logger','email','value','address','anonymous','generate','@xcally.com','head','name','substring','indexOf','split','slice','Anonymous','length','isEmpty','html','test','includes'];(function(_0x568691,_0x149a6d){var _0x3b5a1f=function(_0x4096d4){while(--_0x4096d4){_0x568691['push'](_0x568691['shift']());}};_0x3b5a1f(++_0x149a6d);}(_0x52e0,0x10d));var _0x052e=function(_0x288371,_0x1958f1){_0x288371=_0x288371-0x0;var _0x70f8f3=_0x52e0[_0x288371];return _0x70f8f3;};'use strict';var _=require(_0x052e('0x0'));var moment=require('moment');var random=require(_0x052e('0x1'));var fs=require('fs');var path=require('path');var util=require(_0x052e('0x2'));var tnef=require(_0x052e('0x3'));var logger=require(_0x052e('0x4'))(_0x052e('0x5'));var config=require('../../../config/environment');function getAddress(_0xd4e00a){var _0x2863c2=_['head'](_0xd4e00a[_0x052e('0x6')]);return _0x2863c2&&_0x2863c2[_0x052e('0x7')]?_0x2863c2['address']:_0x052e('0x8')+random[_0x052e('0x9')](0x6)+_0x052e('0xa');}function getFirstName(_0x4b113c){var _0x3c98fa=_[_0x052e('0xb')](_0x4b113c[_0x052e('0x6')]);if(_0x3c98fa&&_0x3c98fa[_0x052e('0xc')]){if(_0x3c98fa[_0x052e('0xc')]==_0x3c98fa[_0x052e('0x7')]){return _0x3c98fa[_0x052e('0xc')][_0x052e('0xd')](0x0,_0x3c98fa['name'][_0x052e('0xe')]('@'));}var _0x470603=_0x3c98fa[_0x052e('0xc')][_0x052e('0xf')](/\s+/);return _0x470603['length']>0x1?_0x470603[_0x052e('0x10')](0x0,-0x1)['join']('\x20'):_0x3c98fa[_0x052e('0xc')];}return _0x052e('0x11');}function getLastName(_0x84692e){var _0x28a8bf=_[_0x052e('0xb')](_0x84692e['value']);if(_0x28a8bf&&_0x28a8bf[_0x052e('0xc')]){var _0x3d484f=_0x28a8bf[_0x052e('0xc')]['split'](/\s+/);return _0x3d484f['length']>0x1?_0x3d484f['pop']():'';}return'';}function getMails(_0x442a6a,_0x53364b){var _0x17f864='';for(var _0x172f92=0x0;_0x172f92<_0x53364b['value'][_0x052e('0x12')];_0x172f92+=0x1){if(_0x53364b[_0x052e('0x6')][_0x172f92][_0x052e('0x7')]!==_0x442a6a){if(!_[_0x052e('0x13')](_0x17f864)){_0x17f864+=',';}_0x17f864+=_0x53364b[_0x052e('0x6')][_0x172f92][_0x052e('0xc')]||_0x53364b[_0x052e('0x6')][_0x172f92][_0x052e('0x7')]||'';_0x17f864+='\x20<';_0x17f864+=_0x53364b[_0x052e('0x6')][_0x172f92][_0x052e('0x7')]?_0x53364b[_0x052e('0x6')][_0x172f92][_0x052e('0x7')]:_0x052e('0x8')+random['generate'](0x6)+_0x052e('0xa');_0x17f864+='>';}}return _0x17f864;}function parseEmail(_0x1e14c5,_0x54439d,_0x26c05f){if(_0x54439d[_0x052e('0x14')]){var _0x5dfb87=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x5dfb87[_0x052e('0x15')](_0x54439d['html'])){_0x54439d[_0x052e('0x14')]=_0x54439d[_0x052e('0x14')]['replace'](_0x5dfb87,'');}if(_0x54439d[_0x052e('0x14')][_0x052e('0x16')](_0x052e('0x17'))){var _0x9cf881=[];_0x54439d[_0x052e('0x18')][_0x052e('0x19')](_0x552f51=>{_0x9cf881['push'](_0x552f51[_0x052e('0x1a')]);});var _0x19bd07=/<img.*? _SRC(.*?)[^>]+>/g;var _0x93b890=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x1f7adc=_0x54439d[_0x052e('0x14')][_0x052e('0x1b')](_0x93b890,_0x052e('0x1c'));var _0x3ca63e=_0x1f7adc[_0x052e('0x1b')](_0x19bd07,_0x052e('0x1d'));for(let _0x5e2648=0x0;_0x5e2648<_0x9cf881[_0x052e('0x12')];_0x5e2648++){var _0x2ac053=_0x3ca63e[_0x052e('0x1b')](_0x052e('0x1d'),_0x052e('0x1e')+_0x9cf881[_0x5e2648]+_0x052e('0x1f'));_0x3ca63e=_0x2ac053;}_0x54439d[_0x052e('0x14')]=_0x3ca63e;}_0x26c05f[_0x052e('0x20')]=_0x54439d['html'];}else{_0x26c05f[_0x052e('0x20')]=_0x54439d[_0x052e('0x21')];}if(_0x26c05f['body']){_0x26c05f[_0x052e('0x20')]=_0x26c05f[_0x052e('0x20')][_0x052e('0x1b')](/<a\s+/gi,_0x052e('0x22'));}if(_0x54439d['to']){_0x26c05f[_0x052e('0x23')][_0x052e('0x24')]=getMails(null,_0x54439d['to']);var _0x193881=getMails(_0x1e14c5[_0x052e('0x5')],_0x54439d['to']);if(!_[_0x052e('0x13')](_0x193881)){_0x26c05f[_0x052e('0x23')]['cc']+=_0x193881;}}if(_0x54439d['cc']){_0x26c05f[_0x052e('0x23')][_0x052e('0x25')]=getMails(null,_0x54439d['cc']);var _0x37dd6f=getMails(_0x1e14c5['email'],_0x54439d['cc']);if(!_['isEmpty'](_0x37dd6f)){if(!_[_0x052e('0x13')](_0x26c05f[_0x052e('0x23')]['cc'])){_0x26c05f[_0x052e('0x23')]['cc']+=',';}_0x26c05f['message']['cc']+=_0x37dd6f;}}if(!_[_0x052e('0x16')](_0x26c05f[_0x052e('0x23')][_0x052e('0x24')],_0x1e14c5[_0x052e('0x5')])&&!_['includes'](_0x26c05f[_0x052e('0x23')]['originCc'],_0x1e14c5[_0x052e('0x5')])){_0x26c05f['message'][_0x052e('0x26')]=_0x1e14c5[_0x052e('0x5')];}if(_0x54439d['attachments']&&_0x54439d['attachments'][_0x052e('0x12')]){_0x26c05f[_0x052e('0x23')][_0x052e('0x27')]=_0x54439d[_0x052e('0x18')][_0x052e('0x12')];for(var _0x12106f=0x0,_0x143bc8,_0x590ea2,_0x2dbed2;_0x12106f<_0x54439d[_0x052e('0x18')][_0x052e('0x12')];_0x12106f+=0x1){if(_0x54439d[_0x052e('0x18')][_0x12106f][_0x052e('0x28')]===_0x052e('0x29')){_0x2dbed2=_0x54439d[_0x052e('0x18')][_0x12106f][_0x052e('0x1a')]||_0x052e('0x2a')+_0x12106f;_0x143bc8=util[_0x052e('0x2b')](_0x052e('0x2c'),Date['now'](),_0x2dbed2);_0x590ea2=path[_0x052e('0x2d')](config[_0x052e('0x2e')],_0x052e('0x2f'),_0x143bc8);fs[_0x052e('0x30')](_0x590ea2,_0x54439d[_0x052e('0x18')][_0x12106f]['content']);_0x26c05f[_0x052e('0x23')][_0x052e('0x18')][_0x052e('0x31')]({'name':_0x2dbed2,'basename':_0x143bc8,'type':_0x54439d[_0x052e('0x18')][_0x12106f][_0x052e('0x32')],'filepath':_0x590ea2});}}}if(_0x54439d[_0x052e('0x33')]&&_0x54439d[_0x052e('0x33')]['length']>0x0){var _0x5a32c6=['Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All',_0x052e('0x34')];for(var _0x3ab495=0x0;_0x3ab495<_0x54439d[_0x052e('0x33')][_0x052e('0x12')];_0x3ab495++){var _0x57525d=_['indexOf'](_0x5a32c6,_0x54439d[_0x052e('0x33')][_0x3ab495][_0x052e('0x35')]);if(_0x57525d>=0x0){_0x26c05f['isAutoreply']=!![];}}}return _0x26c05f;}exports[_0x052e('0x36')]=function(_0x185e10,_0x4e0780,_0x1585c2){var _0x3f626a={'from':getAddress(_0x4e0780[_0x052e('0x37')]),'firstName':getFirstName(_0x4e0780[_0x052e('0x37')]),'lastName':getLastName(_0x4e0780[_0x052e('0x37')]),'mapKey':_0x052e('0x5'),'message':{'from':getMails(_0x185e10[_0x052e('0x5')],_0x4e0780[_0x052e('0x37')]),'to':_0x185e10[_0x052e('0x5')],'cc':'','subject':_0x4e0780[_0x052e('0x38')]||'','messageId':_0x4e0780[_0x052e('0x39')],'inReplyTo':_0x4e0780[_0x052e('0x3a')],'sentAt':moment(_0x4e0780[_0x052e('0x3b')])[_0x052e('0x2b')](_0x052e('0x3c')),'attach':![],'attachments':[]}};if(!_0x4e0780[_0x052e('0x14')]&&!_0x4e0780[_0x052e('0x21')]){var _0x223254=_[_0x052e('0x3d')](_0x4e0780[_0x052e('0x18')],{'contentType':_0x052e('0x3e')});if(_0x223254['length']){logger['info'](util['format'](_0x052e('0x3f'),_0x4e0780[_0x052e('0x39')]));tnef[_0x052e('0x40')](_[_0x052e('0x41')](_0x223254)['content'],function(_0x39a33a,_0x3eef9b){if(_0x3eef9b){_0x4e0780['html']=_0x3eef9b[_0x052e('0x42')]||_0x052e('0x43');if(_0x3eef9b[_0x052e('0x44')]){for(var _0x5de0c1=0x0;_0x5de0c1<_0x3eef9b['Attachments']['length'];_0x5de0c1++){var _0x2a7cbb=_0x3eef9b[_0x052e('0x44')][_0x5de0c1];_0x3f626a[_0x052e('0x23')][_0x052e('0x18')][_0x052e('0x31')]({'filename':_0x2a7cbb['Title'],'content':Buffer[_0x052e('0x37')](_0x2a7cbb[_0x052e('0x45')])});}}}_0x1585c2(parseEmail(_0x185e10,_0x4e0780,_0x3f626a));});}else{_0x4e0780['html']=_0x052e('0x43');_0x1585c2(parseEmail(_0x185e10,_0x4e0780,_0x3f626a));}}else{_0x1585c2(parseEmail(_0x185e10,_0x4e0780,_0x3f626a));}};exports[_0x052e('0x46')]=function(_0x5c18e4,_0x508c68){var _0x43eb8e=[_0x052e('0x47')+(_0x508c68||''),'auth=Bearer\x20'+_0x5c18e4,'',''];return Buffer[_0x052e('0x37')](_0x43eb8e[_0x052e('0x2d')]('\ 1'),'utf-8')[_0x052e('0x48')]('base64');};
\ No newline at end of file
index 65619a9..82489ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4a9=['lodash','name','SERV','Imap','Smtp'];(function(_0x44769c,_0x4b2cc6){var _0x216eb5=function(_0x3289e7){while(--_0x3289e7){_0x44769c['push'](_0x44769c['shift']());}};_0x216eb5(++_0x4b2cc6);}(_0xf4a9,0xe1));var _0x9f4a=function(_0x1326e3,_0x1c6728){_0x1326e3=_0x1326e3-0x0;var _0x33d5bb=_0xf4a9[_0x1326e3];return _0x33d5bb;};'use strict';var _=require(_0x9f4a('0x0'));function MailAccount(_0x21523f){this['id']=_0x21523f['id']||0x0;this[_0x9f4a('0x1')]=_0x21523f[_0x9f4a('0x1')]||'Service';this['key']=_0x21523f['key']||_0x9f4a('0x2');this['active']=_0x21523f['active']||![];this[_0x9f4a('0x3')]=_0x21523f[_0x9f4a('0x3')]||[];this['Smtp']=_0x21523f[_0x9f4a('0x4')]||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x9c90=['Smtp','exports','lodash','name','Service','key','SERV','active','Imap'];(function(_0x191237,_0x1476ab){var _0x22ac6c=function(_0x3b6ff9){while(--_0x3b6ff9){_0x191237['push'](_0x191237['shift']());}};_0x22ac6c(++_0x1476ab);}(_0x9c90,0x80));var _0x09c9=function(_0x46f3f8,_0x12c74b){_0x46f3f8=_0x46f3f8-0x0;var _0xbc57cd=_0x9c90[_0x46f3f8];return _0xbc57cd;};'use strict';var _=require(_0x09c9('0x0'));function MailAccount(_0x4611f3){this['id']=_0x4611f3['id']||0x0;this[_0x09c9('0x1')]=_0x4611f3[_0x09c9('0x1')]||_0x09c9('0x2');this[_0x09c9('0x3')]=_0x4611f3['key']||_0x09c9('0x4');this['active']=_0x4611f3[_0x09c9('0x5')]||![];this[_0x09c9('0x6')]=_0x4611f3[_0x09c9('0x6')]||[];this[_0x09c9('0x7')]=_0x4611f3[_0x09c9('0x7')]||[];}module[_0x09c9('0x8')]=MailAccount;
\ No newline at end of file
index 498b9b0..219cc59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd811=['prototype','mergeFromDatabase','initMailAccounts','mailAccounts','isUndefined','merge','exports','lodash','../model/mailAccount','hasOwnProperty'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xd811,0x165));var _0x1d81=function(_0x25df80,_0xa2aec5){_0x25df80=_0x25df80-0x0;var _0x17b6d0=_0xd811[_0x25df80];return _0x17b6d0;};'use strict';var _=require(_0x1d81('0x0'));var MailAccount=require(_0x1d81('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x5910f2,_0x3b8d7e,_0xf1e971){var _0x3baeda=_['mapKeys'](_0x5910f2,function(_0x37f703,_0x514fb2){return _0x37f703[_0xf1e971];});for(var _0xd42428 in _0x3b8d7e){if(_0x3b8d7e[_0x1d81('0x2')](_0xd42428)){if(!_0x3baeda[_0xd42428]){delete _0x3b8d7e[_0xd42428];}}}}Realtime[_0x1d81('0x3')][_0x1d81('0x4')]=function(_0x328abc,_0x360950){for(var _0x210fa0 in _0x360950){if(_0x328abc[_0x1d81('0x2')](_0x210fa0)){_0x328abc[_0x210fa0]=_0x360950[_0x210fa0];}}};Realtime[_0x1d81('0x3')][_0x1d81('0x5')]=function(){var _0x2a78ee=this;return function(_0x2a9f94){if(_0x2a9f94){freeIsNotKey(_0x2a9f94,_0x2a78ee[_0x1d81('0x6')],'id');for(var _0x28eb90=0x0,_0x1a87d3={},_0x148ec3={};_0x28eb90<_0x2a9f94['length'];_0x28eb90+=0x1){_0x1a87d3=_0x2a9f94[_0x28eb90];if(_[_0x1d81('0x7')](_0x2a78ee[_0x1d81('0x6')][_0x1a87d3['id']])){_0x2a78ee[_0x1d81('0x6')][_0x1a87d3['id']]=new MailAccount(_0x1a87d3);}else{_[_0x1d81('0x8')](_0x2a78ee[_0x1d81('0x6')][_0x1a87d3['id']],_0x1a87d3);}}}return _0x2a78ee[_0x1d81('0x6')];};};module[_0x1d81('0x9')]=Realtime;
\ No newline at end of file
+var _0xc9b2=['../model/mailAccount','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','mailAccounts','merge','exports','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc9b2,0xdb));var _0x2c9b=function(_0x498c82,_0x13e187){_0x498c82=_0x498c82-0x0;var _0x4110b2=_0xc9b2[_0x498c82];return _0x4110b2;};'use strict';var _=require(_0x2c9b('0x0'));var MailAccount=require(_0x2c9b('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x5d1596,_0x2ecea6,_0x387507){var _0x2c3699=_[_0x2c9b('0x2')](_0x5d1596,function(_0xc12664,_0x59a065){return _0xc12664[_0x387507];});for(var _0xd737b5 in _0x2ecea6){if(_0x2ecea6[_0x2c9b('0x3')](_0xd737b5)){if(!_0x2c3699[_0xd737b5]){delete _0x2ecea6[_0xd737b5];}}}}Realtime[_0x2c9b('0x4')][_0x2c9b('0x5')]=function(_0x4d9766,_0x25cefb){for(var _0x39ce02 in _0x25cefb){if(_0x4d9766[_0x2c9b('0x3')](_0x39ce02)){_0x4d9766[_0x39ce02]=_0x25cefb[_0x39ce02];}}};Realtime[_0x2c9b('0x4')][_0x2c9b('0x6')]=function(){var _0x398747=this;return function(_0x3acbb6){if(_0x3acbb6){freeIsNotKey(_0x3acbb6,_0x398747['mailAccounts'],'id');for(var _0x5a2a10=0x0,_0x36041b={},_0x38b186={};_0x5a2a10<_0x3acbb6['length'];_0x5a2a10+=0x1){_0x36041b=_0x3acbb6[_0x5a2a10];if(_['isUndefined'](_0x398747[_0x2c9b('0x7')][_0x36041b['id']])){_0x398747[_0x2c9b('0x7')][_0x36041b['id']]=new MailAccount(_0x36041b);}else{_[_0x2c9b('0x8')](_0x398747[_0x2c9b('0x7')][_0x36041b['id']],_0x36041b);}}}return _0x398747[_0x2c9b('0x7')];};};module[_0x2c9b('0x9')]=Realtime;
\ No newline at end of file
index 72adcda..0cbe62e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0650=['key','ListId','Imap','data5','MailServerOut','Smtp','name','service','CloudProvider','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','provider','active'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x0650,0x1aa));var _0x0065=function(_0x352246,_0x2ad7db){_0x352246=_0x352246-0x0;var _0x527e29=_0x0650[_0x352246];return _0x527e29;};'use strict';var client=require(_0x0065('0x0'));exports[_0x0065('0x1')]=function(){return function(){return client[_0x0065('0x2')](_0x0065('0x3'),{'options':{'attributes':['id','name',_0x0065('0x4'),'service','email',_0x0065('0x5'),_0x0065('0x6'),_0x0065('0x7'),'TemplateId'],'raw':![],'include':[{'model':'MailServerIn','as':_0x0065('0x8'),'include':[{'model':'CloudProvider','attributes':['id','name','service','type',_0x0065('0x9')],'as':'CloudProvider'}]},{'model':_0x0065('0xa'),'as':_0x0065('0xb'),'include':[{'model':'CloudProvider','attributes':['id',_0x0065('0xc'),_0x0065('0xd'),'type','data5'],'as':_0x0065('0xe')}]}]},'log':_0x0065('0xf')});};};exports[_0x0065('0x10')]=function(_0x45cb3d,_0x4dda07){return client['Request'](_0x0065('0x11'),{'account':{'id':_0x45cb3d},'body':_0x4dda07,'log':'NotifyMailAccount'});};
\ No newline at end of file
+var _0x1e50=['../client','getMailAccounts','Request','GetMailAccount','provider','service','key','CloudProvider','type','MailServerOut','Smtp','name','data5','notify','NotifyMailAccount'];(function(_0x264f48,_0x2c82d8){var _0xb99167=function(_0x4a6be7){while(--_0x4a6be7){_0x264f48['push'](_0x264f48['shift']());}};_0xb99167(++_0x2c82d8);}(_0x1e50,0x11d));var _0x01e5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1e50[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x01e5('0x0'));exports[_0x01e5('0x1')]=function(){return function(){return client[_0x01e5('0x2')](_0x01e5('0x3'),{'options':{'attributes':['id','name',_0x01e5('0x4'),_0x01e5('0x5'),'email','active',_0x01e5('0x6'),'ListId','TemplateId'],'raw':![],'include':[{'model':'MailServerIn','as':'Imap','include':[{'model':_0x01e5('0x7'),'attributes':['id','name','service',_0x01e5('0x8'),'data5'],'as':_0x01e5('0x7')}]},{'model':_0x01e5('0x9'),'as':_0x01e5('0xa'),'include':[{'model':_0x01e5('0x7'),'attributes':['id',_0x01e5('0xb'),'service',_0x01e5('0x8'),_0x01e5('0xc')],'as':_0x01e5('0x7')}]}]},'log':'getMailAccount'});};};exports[_0x01e5('0xd')]=function(_0x26d988,_0x5a0425){return client['Request'](_0x01e5('0xe'),{'account':{'id':_0x26d988},'body':_0x5a0425,'log':'NotifyMailAccount'});};
\ No newline at end of file
index 69fb199..f3d94e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7291=['Request','GetSettings','getSettings'];(function(_0x403902,_0x25877c){var _0x4459ea=function(_0x538a07){while(--_0x538a07){_0x403902['push'](_0x403902['shift']());}};_0x4459ea(++_0x25877c);}(_0x7291,0xd4));var _0x1729=function(_0x363da8,_0xeb96c4){_0x363da8=_0x363da8-0x0;var _0x49c0a7=_0x7291[_0x363da8];return _0x49c0a7;};'use strict';var client=require('../client');exports[_0x1729('0x0')]=function(){return client[_0x1729('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x1729('0x2')});};
\ No newline at end of file
+var _0xcb14=['Request','GetSettings','../client','getSettings'];(function(_0x207301,_0x235203){var _0x10be14=function(_0x203ac4){while(--_0x203ac4){_0x207301['push'](_0x207301['shift']());}};_0x10be14(++_0x235203);}(_0xcb14,0x1ae));var _0x4cb1=function(_0x1b8b81,_0xb30fc5){_0x1b8b81=_0x1b8b81-0x0;var _0x4a84ca=_0xcb14[_0x1b8b81];return _0x4a84ca;};'use strict';var client=require(_0x4cb1('0x0'));exports[_0x4cb1('0x1')]=function(){return client[_0x4cb1('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x4cb1('0x3')});};
\ No newline at end of file
index 0a6086c..1ffbaad 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(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 8f1ce18..0780fef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x857a=['listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express','sticky-session','createServer','listen','port','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','default','../../config/socketio','../../config/express','once'];(function(_0x39e15b,_0x555185){var _0x4e5766=function(_0x45ef45){while(--_0x45ef45){_0x39e15b['push'](_0x39e15b['shift']());}};_0x4e5766(++_0x555185);}(_0x857a,0x10c));var _0xa857=function(_0x568b69,_0x5f3fdd){_0x568b69=_0x568b69-0x0;var _0x4b3dcf=_0x857a[_0x568b69];return _0x4b3dcf;};'use strict';var _=require(_0xa857('0x0'));var http=require(_0xa857('0x1'));var express=require(_0xa857('0x2'));var sticky=require(_0xa857('0x3'));var Redis=require('ioredis');var config=require('../../config/environment');var app=express();var server=http[_0xa857('0x4')](app);server['timeout']=0xdbba0;if(sticky[_0xa857('0x5')](server,config[_0xa857('0x6')])){var socketio=require('socket.io')(server,{'transports':[_0xa857('0x7'),_0xa857('0x8')]});config[_0xa857('0x9')]=_[_0xa857('0xa')](config['redis'],{'host':_0xa857('0xb'),'port':0x18eb});socketio[_0xa857('0xc')](require(_0xa857('0xd'))({'pubClient':new Redis(config[_0xa857('0x9')]),'subClient':new Redis(config[_0xa857('0x9')])}));require('../../config/triggers')[_0xa857('0xe')]();require(_0xa857('0xf'))[_0xa857('0xe')](socketio);require(_0xa857('0x10'))['default'](app);require('../../routes')[_0xa857('0xe')](app);}else{server[_0xa857('0x11')](_0xa857('0x12'),function(){console[_0xa857('0x13')](_0xa857('0x14'),config[_0xa857('0x6')]);});}exports=module[_0xa857('0x15')]=app;
\ No newline at end of file
+var _0x648e=['timeout','port','websocket','polling','redis','adapter','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','express','sticky-session','ioredis','../../config/environment','createServer'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x648e,0x19e));var _0xe648=function(_0x172d20,_0x2a7467){_0x172d20=_0x172d20-0x0;var _0x147e46=_0x648e[_0x172d20];return _0x147e46;};'use strict';var _=require(_0xe648('0x0'));var http=require('http');var express=require(_0xe648('0x1'));var sticky=require(_0xe648('0x2'));var Redis=require(_0xe648('0x3'));var config=require(_0xe648('0x4'));var app=express();var server=http[_0xe648('0x5')](app);server[_0xe648('0x6')]=0xdbba0;if(sticky['listen'](server,config[_0xe648('0x7')])){var socketio=require('socket.io')(server,{'transports':[_0xe648('0x8'),_0xe648('0x9')]});config[_0xe648('0xa')]=_['defaults'](config[_0xe648('0xa')],{'host':'localhost','port':0x18eb});socketio[_0xe648('0xb')](require('socket.io-redis')({'pubClient':new Redis(config[_0xe648('0xa')]),'subClient':new Redis(config['redis'])}));require(_0xe648('0xc'))[_0xe648('0xd')]();require(_0xe648('0xe'))[_0xe648('0xd')](socketio);require(_0xe648('0xf'))['default'](app);require(_0xe648('0x10'))[_0xe648('0xd')](app);}else{server[_0xe648('0x11')](_0xe648('0x12'),function(){console[_0xe648('0x13')](_0xe648('0x14'),config[_0xe648('0x7')]);});}exports=module['exports']=app;
\ No newline at end of file
index eac9a77..95dd940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03c=['then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','routing','Request','request'];(function(_0x53b0d2,_0x3dae4c){var _0x4a5278=function(_0x2085e5){while(--_0x2085e5){_0x53b0d2['push'](_0x53b0d2['shift']());}};_0x4a5278(++_0x3dae4c);}(_0xb03c,0x14d));var _0xcb03=function(_0x4af01e,_0x543f5c){_0x4af01e=_0x4af01e-0x0;var _0x178c11=_0xb03c[_0x4af01e];return _0x178c11;};'use strict';var jayson=require(_0xcb03('0x0'));var BPromise=require(_0xcb03('0x1'));var logger=require('../../config/logger')(_0xcb03('0x2'));var client=jayson['client']['http']({'port':0x2329});client[_0xcb03('0x3')]=function(_0x908ae9,_0x19e7c7){return new BPromise(function(_0x107419,_0x2d7d29){return client[_0xcb03('0x4')](_0x908ae9,_0x19e7c7)[_0xcb03('0x5')](function(_0x931ba7){logger[_0xcb03('0x6')](_0xcb03('0x7'),'routing',_0x908ae9,_0x19e7c7,_0x931ba7);if(_0x931ba7[_0xcb03('0x8')]){logger[_0xcb03('0x8')](_0xcb03('0x7'),'routing',_0x908ae9,_0x931ba7['error'][_0xcb03('0x9')],_0x19e7c7);return _0x2d7d29(_0x931ba7[_0xcb03('0x8')][_0xcb03('0x9')]);}else{return _0x107419(_0x931ba7[_0xcb03('0xa')]);}})[_0xcb03('0xb')](function(_0x49ca0e){logger[_0xcb03('0x8')]('rpc','routing',_0x908ae9,_0x49ca0e,_0x19e7c7);return _0x2d7d29(_0x49ca0e);});});};module[_0xcb03('0xc')]=client;
\ No newline at end of file
+var _0x44c7=['result','exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','request','then','debug','rpc','error','message'];(function(_0x5849cb,_0x453ded){var _0x26dc9e=function(_0x4522bf){while(--_0x4522bf){_0x5849cb['push'](_0x5849cb['shift']());}};_0x26dc9e(++_0x453ded);}(_0x44c7,0xa7));var _0x744c=function(_0x20ce52,_0x6a2987){_0x20ce52=_0x20ce52-0x0;var _0x18f890=_0x44c7[_0x20ce52];return _0x18f890;};'use strict';var jayson=require(_0x744c('0x0'));var BPromise=require(_0x744c('0x1'));var logger=require(_0x744c('0x2'))(_0x744c('0x3'));var client=jayson[_0x744c('0x4')][_0x744c('0x5')]({'port':0x2329});client[_0x744c('0x6')]=function(_0x5bab33,_0x3f9621){return new BPromise(function(_0x17c9e5,_0x54b793){return client[_0x744c('0x7')](_0x5bab33,_0x3f9621)[_0x744c('0x8')](function(_0x3b8927){logger[_0x744c('0x9')](_0x744c('0xa'),_0x744c('0x3'),_0x5bab33,_0x3f9621,_0x3b8927);if(_0x3b8927[_0x744c('0xb')]){logger[_0x744c('0xb')](_0x744c('0xa'),_0x744c('0x3'),_0x5bab33,_0x3b8927[_0x744c('0xb')][_0x744c('0xc')],_0x3f9621);return _0x54b793(_0x3b8927[_0x744c('0xb')][_0x744c('0xc')]);}else{return _0x17c9e5(_0x3b8927[_0x744c('0xd')]);}})['catch'](function(_0x162e26){logger[_0x744c('0xb')](_0x744c('0xa'),_0x744c('0x3'),_0x5bab33,_0x162e26,_0x3f9621);return _0x54b793(_0x162e26);});});};module[_0x744c('0xe')]=client;
\ No newline at end of file
index 01fc309..4c15d63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a4d=['getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals'];(function(_0x50b1a0,_0x2dcbfb){var _0x5ed3e3=function(_0x5cc1b6){while(--_0x5cc1b6){_0x50b1a0['push'](_0x50b1a0['shift']());}};_0x5ed3e3(++_0x2dcbfb);}(_0x9a4d,0x14c));var _0xd9a4=function(_0x2aaf51,_0x2dbb49){_0x2aaf51=_0x2aaf51-0x0;var _0xbafd19=_0x9a4d[_0x2aaf51];return _0xbafd19;};'use strict';var BPromise=require(_0xd9a4('0x0'));var server=require(_0xd9a4('0x1'));var Realtime=require(_0xd9a4('0x2'));var user=require(_0xd9a4('0x3'));var interval=require('./rpc/interval');var openchannelQueue=require(_0xd9a4('0x4'));var chatQueue=require(_0xd9a4('0x5'));var smsQueue=require(_0xd9a4('0x6'));var mailQueue=require(_0xd9a4('0x7'));var faxQueue=require(_0xd9a4('0x8'));var whatsappQueue=require(_0xd9a4('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xd9a4('0xa')]()[_0xd9a4('0xb')](user[_0xd9a4('0xc')]())[_0xd9a4('0xb')](realtime[_0xd9a4('0xd')]())[_0xd9a4('0xb')](interval[_0xd9a4('0xe')]())[_0xd9a4('0xb')](realtime[_0xd9a4('0xf')]())['then'](openchannelQueue[_0xd9a4('0x10')]())['then'](realtime[_0xd9a4('0x11')]())['then'](chatQueue[_0xd9a4('0x12')]())[_0xd9a4('0xb')](realtime[_0xd9a4('0x13')]())[_0xd9a4('0xb')](smsQueue[_0xd9a4('0x14')]())['then'](realtime[_0xd9a4('0x15')]())['then'](mailQueue[_0xd9a4('0x16')]())[_0xd9a4('0xb')](realtime[_0xd9a4('0x17')]())['then'](faxQueue['getFaxQueues']())[_0xd9a4('0xb')](realtime[_0xd9a4('0x18')]())[_0xd9a4('0xb')](whatsappQueue[_0xd9a4('0x19')]())[_0xd9a4('0xb')](realtime[_0xd9a4('0x1a')]())['then'](function(){return realtime;});}function main(){return server['listen'](realtime)['then'](function(_0x485c43){return initRealtime();})[_0xd9a4('0xb')](function(_0x35fdd7){return setInterval(initRealtime,0x1388);})[_0xd9a4('0x1b')](function(_0x8563a2){console[_0xd9a4('0x1c')](_0x8563a2);});}main();
\ No newline at end of file
+var _0xb781=['./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','getOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initMailQueues','getFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','log','bluebird','./server','./rpc/user','./rpc/openchannelQueue','./rpc/chatQueue'];(function(_0x3e2e61,_0x5be105){var _0xf5d02=function(_0x2854a9){while(--_0x2854a9){_0x3e2e61['push'](_0x3e2e61['shift']());}};_0xf5d02(++_0x5be105);}(_0xb781,0x119));var _0x1b78=function(_0x3590f8,_0x4627d8){_0x3590f8=_0x3590f8-0x0;var _0x57e39f=_0xb781[_0x3590f8];return _0x57e39f;};'use strict';var BPromise=require(_0x1b78('0x0'));var server=require(_0x1b78('0x1'));var Realtime=require('./realtime');var user=require(_0x1b78('0x2'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x1b78('0x3'));var chatQueue=require(_0x1b78('0x4'));var smsQueue=require(_0x1b78('0x5'));var mailQueue=require(_0x1b78('0x6'));var faxQueue=require(_0x1b78('0x7'));var whatsappQueue=require(_0x1b78('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x1b78('0x9')]()[_0x1b78('0xa')](user[_0x1b78('0xb')]())[_0x1b78('0xa')](realtime['initAgents']())[_0x1b78('0xa')](interval['getIntervals']())[_0x1b78('0xa')](realtime['initIntervals']())[_0x1b78('0xa')](openchannelQueue[_0x1b78('0xc')]())[_0x1b78('0xa')](realtime['initOpenchannelQueues']())[_0x1b78('0xa')](chatQueue[_0x1b78('0xd')]())[_0x1b78('0xa')](realtime[_0x1b78('0xe')]())[_0x1b78('0xa')](smsQueue[_0x1b78('0xf')]())['then'](realtime['initSmsQueues']())[_0x1b78('0xa')](mailQueue['getMailQueues']())[_0x1b78('0xa')](realtime[_0x1b78('0x10')]())[_0x1b78('0xa')](faxQueue[_0x1b78('0x11')]())[_0x1b78('0xa')](realtime['initFaxQueues']())[_0x1b78('0xa')](whatsappQueue[_0x1b78('0x12')]())['then'](realtime[_0x1b78('0x13')]())[_0x1b78('0xa')](function(){return realtime;});}function main(){return server[_0x1b78('0x14')](realtime)['then'](function(_0x414662){return initRealtime();})[_0x1b78('0xa')](function(_0x39d34f){return setInterval(initRealtime,0x1388);})['catch'](function(_0x2bef7c){console[_0x1b78('0x15')](_0x2bef7c);});}main();
\ No newline at end of file
index 1a4c038..7929706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['turn','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','exports','lodash','util','events','isNil','register','ignoreFactChanges','inherits','init','rules','activeRules','concat','prototype','sync','filter','orderBy','asc','execute','clone','consequence','ruleRef','name','index_','nextTick','push','call','isEqual','restart','length','condition','matchPath','noop','findRules'];(function(_0x3410e6,_0x5e4fff){var _0x468b5f=function(_0x30787a){while(--_0x30787a){_0x3410e6['push'](_0x3410e6['shift']());}};_0x468b5f(++_0x5e4fff);}(_0x7a54,0x106));var _0x47a5=function(_0x2d35d0,_0x2d477c){_0x2d35d0=_0x2d35d0-0x0;var _0x5b91fc=_0x7a54[_0x2d35d0];return _0x5b91fc;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var EventEmitter=require(_0x47a5('0x2'))['EventEmitter'];function RuleEngine(_0x1d33e,_0x4086cd){this['init']();if(!_[_0x47a5('0x3')](_0x1d33e)){this[_0x47a5('0x4')](_0x1d33e);}if(_0x4086cd){this[_0x47a5('0x5')]=_0x4086cd[_0x47a5('0x5')];}return this;}util[_0x47a5('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x47a5('0x7')]=function(_0x59199c){this[_0x47a5('0x8')]=[];this[_0x47a5('0x9')]=[];};RuleEngine['prototype'][_0x47a5('0x4')]=function(_0x5077f3){if(Array['isArray'](_0x5077f3)){this['rules']=this[_0x47a5('0x8')][_0x47a5('0xa')](_0x5077f3);}else if(_0x5077f3!==null&&_['isObject'](_0x5077f3)){this[_0x47a5('0x8')]['push'](_0x5077f3);}this['sync']();};RuleEngine[_0x47a5('0xb')][_0x47a5('0xc')]=function(){this[_0x47a5('0x9')]=this[_0x47a5('0x8')][_0x47a5('0xd')](function(_0xd308b8){if(_[_0x47a5('0x3')](_0xd308b8['on'])){_0xd308b8['on']=!![];}if(_0xd308b8['on']===!![]){return _0xd308b8;}});this['activeRules']=_[_0x47a5('0xe')](this[_0x47a5('0x9')],['p'],[_0x47a5('0xf')]);};RuleEngine[_0x47a5('0xb')][_0x47a5('0x10')]=function(_0x620ee9,_0x3c6c46){var _0x190faa=![];_0x620ee9['result']=!![];var _0x362359=_[_0x47a5('0x11')](_0x620ee9);var _0x3b001e=_[_0x47a5('0x11')](_0x620ee9);var _0x1ef44c=this['activeRules'];var _0x549de3=[];var _0x138bc0=this['ignoreFactChanges'];(function FnRuleLoop(_0x5247fd){var _0x423a81={'rules':function(){return _0x1ef44c;},'rule':function(){return _0x1ef44c[_0x5247fd];},'when':function(_0xaf70a6){if(_0xaf70a6){var _0x2ce454=_0x1ef44c[_0x5247fd][_0x47a5('0x12')];_0x2ce454[_0x47a5('0x13')]=_0x1ef44c[_0x5247fd]['id']||_0x1ef44c[_0x5247fd][_0x47a5('0x14')]||_0x47a5('0x15')+_0x5247fd;process[_0x47a5('0x16')](function(){_0x549de3[_0x47a5('0x17')](_0x2ce454['ruleRef']);_0x2ce454[_0x47a5('0x18')](_0x362359,_0x423a81);});}else{process[_0x47a5('0x16')](function(){_0x423a81['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190faa=!![];return FnRuleLoop(0x0);},'next':function(_0x2b0360){if(!_0x138bc0&&!_[_0x47a5('0x19')](_0x3b001e,_0x362359)){_0x3b001e=_[_0x47a5('0x11')](_0x362359);process['nextTick'](function(){_0x423a81[_0x47a5('0x1a')]();});}else{process[_0x47a5('0x16')](function(){if(_[_0x47a5('0x3')](_0x2b0360)){return FnRuleLoop(_0x5247fd+0x1);}else{return FnRuleLoop(_0x2b0360);}});}}};if(_0x5247fd<_0x1ef44c[_0x47a5('0x1b')]&&_0x190faa===![]){var _0x5ef1b1=_0x1ef44c[_0x5247fd][_0x47a5('0x1c')];_0x5ef1b1[_0x47a5('0x18')](_0x362359,_0x423a81);}else{process['nextTick'](function(){_0x362359[_0x47a5('0x1d')]=_0x549de3;return _0x3c6c46?_0x3c6c46(_0x362359):_[_0x47a5('0x1e')]();});}}(0x0));};RuleEngine[_0x47a5('0xb')][_0x47a5('0x1f')]=function(_0x3abd6a){if(_['isNil'](_0x3abd6a)){return this['rules'];}else{var _0x136745=_['matches'](_0x3abd6a);return _[_0x47a5('0xd')](this['rules'],_0x136745);}};RuleEngine[_0x47a5('0xb')][_0x47a5('0x20')]=function(_0x36ad34,_0x1dac65){var _0x21f296=_0x36ad34==='on'||_0x36ad34==='ON'?!![]:![];var _0x3ba0b7=this[_0x47a5('0x1f')](_0x1dac65);for(var _0x136b14=0x0,_0x16631f=_0x3ba0b7[_0x47a5('0x1b')];_0x136b14<_0x16631f;_0x136b14+=0x1){_0x3ba0b7[_0x136b14]['on']=_0x21f296;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x21')]=function(_0x528582,_0x243210){_0x528582=parseInt(_0x528582,0xa);var _0x51833b=this[_0x47a5('0x1f')](_0x243210);for(var _0x9ac908=0x0,_0x16901f=_0x51833b['length'];_0x9ac908<_0x16901f;_0x9ac908+=0x1){_0x51833b[_0x9ac908][_0x47a5('0x22')]=_0x528582;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x23')]=function(){var _0x51cc81=this['rules'];if(_0x51cc81 instanceof Array){_0x51cc81=_0x51cc81[_0x47a5('0x24')](function(_0xfb5ddb){_0xfb5ddb['condition']=_0xfb5ddb['condition'][_0x47a5('0x25')]();_0xfb5ddb[_0x47a5('0x12')]=_0xfb5ddb['consequence'][_0x47a5('0x25')]();return _0xfb5ddb;});}else if(!_['isNil'](_0x51cc81)){_0x51cc81[_0x47a5('0x1c')]=_0x51cc81[_0x47a5('0x1c')]['toString']();_0x51cc81['consequence']=_0x51cc81[_0x47a5('0x12')]['toString']();}return _0x51cc81;};RuleEngine[_0x47a5('0xb')][_0x47a5('0x26')]=function(_0xf269a8){this['init']();if(_[_0x47a5('0x27')](_0xf269a8)){_0xf269a8=JSON['parse'](_0xf269a8);}if(_0xf269a8 instanceof Array){_0xf269a8=_0xf269a8['map'](function(_0x65542e){_0x65542e['condition']=eval('('+_0x65542e[_0x47a5('0x1c')]+')');_0x65542e['consequence']=eval('('+_0x65542e[_0x47a5('0x12')]+')');return _0x65542e;});}else if(_0xf269a8!==null&&typeof _0xf269a8==_0x47a5('0x28')){_0xf269a8[_0x47a5('0x1c')]=eval('('+_0xf269a8[_0x47a5('0x1c')]+')');_0xf269a8[_0x47a5('0x12')]=eval('('+_0xf269a8[_0x47a5('0x12')]+')');}this[_0x47a5('0x4')](_0xf269a8);};module[_0x47a5('0x29')]=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(_0x4b2950,_0x2bad8c){var _0x7d9509=function(_0x4e07f1){while(--_0x4e07f1){_0x4b2950['push'](_0x4b2950['shift']());}};_0x7d9509(++_0x2bad8c);}(_0x2ef3,0xba));var _0x32ef=function(_0x3d69b7,_0x194161){_0x3d69b7=_0x3d69b7-0x0;var _0x4b170e=_0x2ef3[_0x3d69b7];return _0x4b170e;};'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 00abc79..4be49d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4843=['client','request','then','error','message','catch','sendMailMessage','SendMail','jayson/promise'];(function(_0x15821b,_0x2cf2d8){var _0x37db99=function(_0x3aa504){while(--_0x3aa504){_0x15821b['push'](_0x15821b['shift']());}};_0x37db99(++_0x2cf2d8);}(_0x4843,0x14c));var _0x3484=function(_0x425aab,_0x5546ce){_0x425aab=_0x425aab-0x0;var _0x1c5843=_0x4843[_0x425aab];return _0x1c5843;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x3484('0x0'));var client=jayson[_0x3484('0x1')]['http']({'port':0x232b});function request(_0xb81236,_0x1f22f8){return new BPromise(function(_0x47630d,_0x3b84c3){return client[_0x3484('0x2')](_0xb81236,_0x1f22f8)[_0x3484('0x3')](function(_0x5e91d0){if(_0x5e91d0[_0x3484('0x4')]){return _0x3b84c3(_0x5e91d0[_0x3484('0x4')][_0x3484('0x5')]);}else{return _0x47630d(_0x5e91d0['result']);}})[_0x3484('0x6')](function(_0xf501de){return _0x3b84c3(_0xf501de);});});}exports[_0x3484('0x7')]=function(_0x2e0976,_0x4c6dc2){return request(_0x3484('0x8'),{'account':_0x2e0976,'message':_0x4c6dc2});};
\ No newline at end of file
+var _0x6b9a=['result','catch','sendMailMessage','SendMail','bluebird','client','http','request','then','error','message'];(function(_0x510837,_0x41ebd0){var _0x378b28=function(_0x5e8b74){while(--_0x5e8b74){_0x510837['push'](_0x510837['shift']());}};_0x378b28(++_0x41ebd0);}(_0x6b9a,0x122));var _0xa6b9=function(_0x4e471b,_0x257481){_0x4e471b=_0x4e471b-0x0;var _0x32aedd=_0x6b9a[_0x4e471b];return _0x32aedd;};'use strict';var BPromise=require(_0xa6b9('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xa6b9('0x1')][_0xa6b9('0x2')]({'port':0x232b});function request(_0x33a9e7,_0x3c71db){return new BPromise(function(_0x14fb0e,_0x2af4e9){return client[_0xa6b9('0x3')](_0x33a9e7,_0x3c71db)[_0xa6b9('0x4')](function(_0x2e200b){if(_0x2e200b[_0xa6b9('0x5')]){return _0x2af4e9(_0x2e200b[_0xa6b9('0x5')][_0xa6b9('0x6')]);}else{return _0x14fb0e(_0x2e200b[_0xa6b9('0x7')]);}})[_0xa6b9('0x8')](function(_0xfc1e1c){return _0x2af4e9(_0xfc1e1c);});});}exports[_0xa6b9('0x9')]=function(_0x16c500,_0x41d13e){return request(_0xa6b9('0xa'),{'account':_0x16c500,'message':_0x41d13e});};
\ No newline at end of file
index 1db387d..080e252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1c9=['mailStatus','mailCurrentCapacity','smsStatusTime','busy','stringify','emit','exports','lodash','md5','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','chat','openchannel','fax','whatsapp','Status','StatusTime','toNumber','chatStatusTime'];(function(_0x1fa24e,_0x37a3f3){var _0x68f3a5=function(_0xec5e38){while(--_0xec5e38){_0x1fa24e['push'](_0x1fa24e['shift']());}};_0x68f3a5(++_0x37a3f3);}(_0xd1c9,0xeb));var _0x9d1c=function(_0x54850d,_0xba6824){_0x54850d=_0x54850d-0x0;var _0x212655=_0xd1c9[_0x54850d];return _0x212655;};'use strict';var _=require(_0x9d1c('0x0'));var moment=require('moment');var md5=require(_0x9d1c('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x9d1c('0x2')]=_[_0x9d1c('0x3')](config[_0x9d1c('0x2')],{'host':_0x9d1c('0x4'),'port':0x18eb});var io=require(_0x9d1c('0x5'))(new Redis(config[_0x9d1c('0x2')]));function Agent(_0xfd06b7){this['id']=_0xfd06b7['id']||0x0;this[_0x9d1c('0x6')]=_0xfd06b7['name']||'';this[_0x9d1c('0x7')]=_0xfd06b7[_0x9d1c('0x7')]||!![];this[_0x9d1c('0x8')]=_0xfd06b7[_0x9d1c('0x8')]||![];this[_0x9d1c('0x9')]=_0xfd06b7['chatPause']||![];this[_0x9d1c('0xa')]=_0xfd06b7[_0x9d1c('0xa')]||![];this[_0x9d1c('0xb')]=_0xfd06b7[_0x9d1c('0xb')]||![];this[_0x9d1c('0xc')]=_0xfd06b7[_0x9d1c('0xc')]||![];this[_0x9d1c('0xd')]=_0xfd06b7[_0x9d1c('0xd')]||![];this[_0x9d1c('0xe')]=_0x9d1c('0xf');this['chatStatusTime']=0x0;this[_0x9d1c('0x10')]=_0xfd06b7[_0x9d1c('0x10')]||0x0;this[_0x9d1c('0x11')]=0x0;this['mailStatus']='unknown';this[_0x9d1c('0x12')]=0x0;this[_0x9d1c('0x13')]=_0xfd06b7['mailCapacity']||0x0;this['mailCurrentCapacity']=0x0;this[_0x9d1c('0x14')]='unknown';this[_0x9d1c('0x15')]=0x0;this[_0x9d1c('0x16')]=_0xfd06b7[_0x9d1c('0x16')]||0x0;this[_0x9d1c('0x17')]=0x0;this[_0x9d1c('0x18')]=_0x9d1c('0xf');this['smsStatusTime']=0x0;this[_0x9d1c('0x19')]=_0xfd06b7[_0x9d1c('0x19')]||0x0;this[_0x9d1c('0x1a')]=0x0;this[_0x9d1c('0x1b')]=_0x9d1c('0xf');this[_0x9d1c('0x1c')]=0x0;this['whatsappCapacity']=_0xfd06b7[_0x9d1c('0x1d')]||0x0;this[_0x9d1c('0x1e')]=0x0;this['openchannelStatus']='unknown';this[_0x9d1c('0x1f')]=0x0;this['openchannelCapacity']=_0xfd06b7[_0x9d1c('0x20')]||0x0;this[_0x9d1c('0x21')]=0x0;this['busy']=![];this[_0x9d1c('0x22')]=undefined;this[_0x9d1c('0x1')]='';this[_0x9d1c('0x23')]();}Agent[_0x9d1c('0x24')][_0x9d1c('0x25')]=function(_0x222d89){if(this[_0x222d89+_0x9d1c('0x26')]>0x0){if(this[_0x222d89+_0x9d1c('0x27')]>0x0&&this[_0x222d89+_0x9d1c('0x26')]>=this[_0x222d89+_0x9d1c('0x27')]){return _0x9d1c('0x28');}else{return _0x9d1c('0x29');}}else{return'idle';}};Agent[_0x9d1c('0x24')][_0x9d1c('0x23')]=function(){var _0x1c2574=['mail',_0x9d1c('0x2a'),_0x9d1c('0x2b'),_0x9d1c('0x2c'),'sms',_0x9d1c('0x2d')];for(var _0x4ed2f0=0x0;_0x4ed2f0<_0x1c2574['length'];_0x4ed2f0+=0x1){var _0x51bc5a=this[_0x9d1c('0x25')](_0x1c2574[_0x4ed2f0]);if(this[_0x1c2574[_0x4ed2f0]+_0x9d1c('0x2e')]!==_0x51bc5a){this[_0x1c2574[_0x4ed2f0]+_0x9d1c('0x2f')]=_[_0x9d1c('0x30')](moment()['format']('x'));}this[_0x1c2574[_0x4ed2f0]+'Status']=_0x51bc5a;}var _0x5780c2={'id':this['id'],'name':this[_0x9d1c('0x6')],'online':this['online'],'voicePause':this[_0x9d1c('0x8')],'chatPause':this[_0x9d1c('0x9')],'mailPause':this[_0x9d1c('0xa')],'smsPause':this[_0x9d1c('0xc')],'faxPause':this[_0x9d1c('0xb')],'openchannelPause':this[_0x9d1c('0xd')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x9d1c('0x31')],'chatCapacity':this[_0x9d1c('0x10')],'chatCurrentCapacity':this[_0x9d1c('0x11')],'mailStatus':this[_0x9d1c('0x32')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0x9d1c('0x13')],'mailCurrentCapacity':this[_0x9d1c('0x33')],'faxStatus':this[_0x9d1c('0x14')],'faxStatusTime':this[_0x9d1c('0x15')],'faxCapacity':this[_0x9d1c('0x16')],'faxCurrentCapacity':this[_0x9d1c('0x17')],'smsStatus':this[_0x9d1c('0x18')],'smsStatusTime':this[_0x9d1c('0x34')],'smsCapacity':this[_0x9d1c('0x19')],'smsCurrentCapacity':this[_0x9d1c('0x1a')],'whatsappStatus':this[_0x9d1c('0x1b')],'whatsappStatusTime':this[_0x9d1c('0x1c')],'whatsappCapacity':this[_0x9d1c('0x1d')],'whatsappCurrentCapacity':this[_0x9d1c('0x1e')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x9d1c('0x1f')],'openchannelCapacity':this[_0x9d1c('0x20')],'openchannelCurrentCapacity':this[_0x9d1c('0x21')],'busy':this[_0x9d1c('0x35')],'busyQueue':this[_0x9d1c('0x22')]};var _0x46b9a2=md5(JSON[_0x9d1c('0x36')](_0x5780c2));if(this[_0x9d1c('0x1')]!==_0x46b9a2){this['md5']=_0x46b9a2;io[_0x9d1c('0x37')]('user:save',_0x5780c2);}};module[_0x9d1c('0x38')]=Agent;
\ No newline at end of file
+var _0x7885=['stringify','lodash','md5','../../../config/environment','redis','localhost','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','unknown','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','prototype','mail','chat','fax','sms','whatsapp','length','Status','StatusTime','format','openchannelStatusTime','openchannelCurrentCapacity'];(function(_0x39d18b,_0x497c48){var _0x3dbf1e=function(_0x2b7da1){while(--_0x2b7da1){_0x39d18b['push'](_0x39d18b['shift']());}};_0x3dbf1e(++_0x497c48);}(_0x7885,0xf9));var _0x5788=function(_0x3f8219,_0x26c51e){_0x3f8219=_0x3f8219-0x0;var _0x2f1a1f=_0x7885[_0x3f8219];return _0x2f1a1f;};'use strict';var _=require(_0x5788('0x0'));var moment=require('moment');var md5=require(_0x5788('0x1'));var Redis=require('ioredis');var config=require(_0x5788('0x2'));config['redis']=_['defaults'](config[_0x5788('0x3')],{'host':_0x5788('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5788('0x3')]));function Agent(_0x1f5df8){this['id']=_0x1f5df8['id']||0x0;this[_0x5788('0x5')]=_0x1f5df8[_0x5788('0x5')]||'';this[_0x5788('0x6')]=_0x1f5df8[_0x5788('0x6')]||!![];this[_0x5788('0x7')]=_0x1f5df8[_0x5788('0x7')]||![];this['chatPause']=_0x1f5df8[_0x5788('0x8')]||![];this[_0x5788('0x9')]=_0x1f5df8[_0x5788('0x9')]||![];this[_0x5788('0xa')]=_0x1f5df8[_0x5788('0xa')]||![];this[_0x5788('0xb')]=_0x1f5df8[_0x5788('0xb')]||![];this[_0x5788('0xc')]=_0x1f5df8[_0x5788('0xc')]||![];this[_0x5788('0xd')]='unknown';this[_0x5788('0xe')]=0x0;this[_0x5788('0xf')]=_0x1f5df8['chatCapacity']||0x0;this[_0x5788('0x10')]=0x0;this[_0x5788('0x11')]='unknown';this[_0x5788('0x12')]=0x0;this['mailCapacity']=_0x1f5df8[_0x5788('0x13')]||0x0;this[_0x5788('0x14')]=0x0;this['faxStatus']=_0x5788('0x15');this[_0x5788('0x16')]=0x0;this[_0x5788('0x17')]=_0x1f5df8[_0x5788('0x17')]||0x0;this[_0x5788('0x18')]=0x0;this[_0x5788('0x19')]=_0x5788('0x15');this[_0x5788('0x1a')]=0x0;this['smsCapacity']=_0x1f5df8[_0x5788('0x1b')]||0x0;this[_0x5788('0x1c')]=0x0;this['whatsappStatus']=_0x5788('0x15');this[_0x5788('0x1d')]=0x0;this['whatsappCapacity']=_0x1f5df8[_0x5788('0x1e')]||0x0;this[_0x5788('0x1f')]=0x0;this[_0x5788('0x20')]=_0x5788('0x15');this['openchannelStatusTime']=0x0;this[_0x5788('0x21')]=_0x1f5df8[_0x5788('0x21')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x5788('0x22')]=![];this[_0x5788('0x23')]=undefined;this[_0x5788('0x1')]='';this[_0x5788('0x24')]={};this[_0x5788('0x25')]={};this[_0x5788('0x26')]={};this[_0x5788('0x27')]={};this[_0x5788('0x28')]={};this[_0x5788('0x29')]={};this[_0x5788('0x2a')]();}Agent['prototype'][_0x5788('0x2b')]=function(_0x8ac279){if(this[_0x8ac279+_0x5788('0x2c')]>0x0){if(this[_0x8ac279+_0x5788('0x2d')]>0x0&&this[_0x8ac279+_0x5788('0x2c')]>=this[_0x8ac279+'Capacity']){return _0x5788('0x2e');}else{return _0x5788('0x2f');}}else{return _0x5788('0x30');}};Agent[_0x5788('0x31')][_0x5788('0x2a')]=function(){var _0x12ff69=[_0x5788('0x32'),_0x5788('0x33'),'openchannel',_0x5788('0x34'),_0x5788('0x35'),_0x5788('0x36')];for(var _0x55559b=0x0;_0x55559b<_0x12ff69[_0x5788('0x37')];_0x55559b+=0x1){var _0x2ddf2b=this[_0x5788('0x2b')](_0x12ff69[_0x55559b]);if(this[_0x12ff69[_0x55559b]+_0x5788('0x38')]!==_0x2ddf2b){this[_0x12ff69[_0x55559b]+_0x5788('0x39')]=_['toNumber'](moment()[_0x5788('0x3a')]('x'));}this[_0x12ff69[_0x55559b]+_0x5788('0x38')]=_0x2ddf2b;}var _0x38f72b={'id':this['id'],'name':this['name'],'online':this[_0x5788('0x6')],'voicePause':this[_0x5788('0x7')],'chatPause':this['chatPause'],'mailPause':this[_0x5788('0x9')],'smsPause':this[_0x5788('0xb')],'faxPause':this[_0x5788('0xa')],'openchannelPause':this[_0x5788('0xc')],'chatStatus':this[_0x5788('0xd')],'chatStatusTime':this[_0x5788('0xe')],'chatCapacity':this[_0x5788('0xf')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x5788('0x11')],'mailStatusTime':this[_0x5788('0x12')],'mailCapacity':this[_0x5788('0x13')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this['faxStatus'],'faxStatusTime':this['faxStatusTime'],'faxCapacity':this[_0x5788('0x17')],'faxCurrentCapacity':this[_0x5788('0x18')],'smsStatus':this[_0x5788('0x19')],'smsStatusTime':this[_0x5788('0x1a')],'smsCapacity':this[_0x5788('0x1b')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x5788('0x1e')],'whatsappCurrentCapacity':this[_0x5788('0x1f')],'openchannelStatus':this[_0x5788('0x20')],'openchannelStatusTime':this[_0x5788('0x3b')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x5788('0x3c')],'busy':this[_0x5788('0x22')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0x5788('0x24')],'faxWaitingInteractions':this[_0x5788('0x25')],'mailWaitingInteractions':this[_0x5788('0x26')],'openchannelWaitingInteractions':this[_0x5788('0x27')],'smsWaitingInteractions':this[_0x5788('0x28')],'whatsappWaitingInteractions':this[_0x5788('0x29')]};var _0x4eeb7d=md5(JSON[_0x5788('0x3d')](_0x38f72b));if(this[_0x5788('0x1')]!==_0x4eeb7d){this[_0x5788('0x1')]=_0x4eeb7d;io['emit']('user:save',_0x38f72b);}};module['exports']=Agent;
\ No newline at end of file
index 5be5fb8..416eef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89d9=['name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','loggedIn','chatPause','paused','available','stringify','format','emit','chat_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter'];(function(_0x1d6d4b,_0x547289){var _0x3e2b65=function(_0x5e784f){while(--_0x5e784f){_0x1d6d4b['push'](_0x1d6d4b['shift']());}};_0x3e2b65(++_0x547289);}(_0x89d9,0x9a));var _0x989d=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x89d9[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x989d('0x0'));var md5=require(_0x989d('0x1'));var util=require(_0x989d('0x2'));var Redis=require(_0x989d('0x3'));var config=require(_0x989d('0x4'));config[_0x989d('0x5')]=_[_0x989d('0x6')](config[_0x989d('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x989d('0x7'))(new Redis(config['redis']));function ChatQueue(_0x74bc29){this['id']=_0x74bc29['id']||0x0;this[_0x989d('0x8')]=_0x74bc29[_0x989d('0x8')]||'';this['timeout']=_0x74bc29[_0x989d('0x9')]||0xa;this[_0x989d('0xa')]=_0x74bc29[_0x989d('0xa')]||_0x989d('0xb');this[_0x989d('0xc')]=_0x74bc29[_0x989d('0xc')];this['mapAgentsId']={};this[_0x989d('0xd')]=0x0;this[_0x989d('0x1')]='';this[_0x989d('0xe')]();this[_0x989d('0xf')]();}ChatQueue[_0x989d('0x10')][_0x989d('0xe')]=function(){var _0x399b80=this[_0x989d('0x11')]['_rr'];this['mapAgentsId']=_['map'](this[_0x989d('0xc')],'id');this['mapAgentsId'][_0x989d('0x12')]=_0x399b80;};ChatQueue[_0x989d('0x10')][_0x989d('0xf')]=function(){this[_0x989d('0x13')]=0x0;this['paused']=0x0;for(var _0x32feee=0x0;_0x32feee<this[_0x989d('0xc')]['length'];_0x32feee+=0x1){if(this[_0x989d('0xc')][_0x32feee]['online']){this[_0x989d('0x13')]+=0x1;}if(this[_0x989d('0xc')][_0x32feee][_0x989d('0x14')]){this[_0x989d('0x15')]+=0x1;}}this[_0x989d('0x16')]=this[_0x989d('0x13')]-this[_0x989d('0x15')];this[_0x989d('0x16')]=this[_0x989d('0x16')]>=0x0?this[_0x989d('0x16')]:0x0;var _0xa7ccfc={'id':this['id'],'available':this[_0x989d('0x16')],'loggedIn':this[_0x989d('0x13')],'name':this[_0x989d('0x8')],'paused':this[_0x989d('0x15')],'waiting':this[_0x989d('0xd')]};var _0x5264f4=md5(JSON[_0x989d('0x17')](_0xa7ccfc));if(this[_0x989d('0x1')]!==_0x5264f4){this[_0x989d('0x1')]=_0x5264f4;io['to'](util[_0x989d('0x18')]('chat:queue:%s',_0xa7ccfc[_0x989d('0x8')]))[_0x989d('0x19')](_0x989d('0x1a'),_0xa7ccfc);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0x0fd8=['online','chatPause','available','stringify','chat:queue:%s','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','updateRouting','updateRealtime','_rr','map','mapAgentsId','prototype','loggedIn','paused','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0fd8,0x9d));var _0x80fd=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x0fd8[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x80fd('0x0'));var md5=require(_0x80fd('0x1'));var util=require(_0x80fd('0x2'));var Redis=require(_0x80fd('0x3'));var config=require(_0x80fd('0x4'));config['redis']=_[_0x80fd('0x5')](config[_0x80fd('0x6')],{'host':_0x80fd('0x7'),'port':0x18eb});var io=require(_0x80fd('0x8'))(new Redis(config['redis']));function ChatQueue(_0x4cb76f){this['id']=_0x4cb76f['id']||0x0;this[_0x80fd('0x9')]=_0x4cb76f[_0x80fd('0x9')]||'';this[_0x80fd('0xa')]=_0x4cb76f[_0x80fd('0xa')]||0xa;this[_0x80fd('0xb')]=_0x4cb76f[_0x80fd('0xb')]||_0x80fd('0xc');this[_0x80fd('0xd')]=_0x4cb76f[_0x80fd('0xd')];this['mapAgentsId']={};this['waiting']=0x0;this['md5']='';this[_0x80fd('0xe')]();this[_0x80fd('0xf')]();}ChatQueue['prototype'][_0x80fd('0xe')]=function(){var _0x42e78e=this['mapAgentsId'][_0x80fd('0x10')];this['mapAgentsId']=_[_0x80fd('0x11')](this[_0x80fd('0xd')],'id');this[_0x80fd('0x12')][_0x80fd('0x10')]=_0x42e78e;};ChatQueue[_0x80fd('0x13')]['updateRealtime']=function(){this[_0x80fd('0x14')]=0x0;this[_0x80fd('0x15')]=0x0;for(var _0x1568ce=0x0;_0x1568ce<this[_0x80fd('0xd')][_0x80fd('0x16')];_0x1568ce+=0x1){if(this[_0x80fd('0xd')][_0x1568ce][_0x80fd('0x17')]){this[_0x80fd('0x14')]+=0x1;}if(this[_0x80fd('0xd')][_0x1568ce][_0x80fd('0x18')]){this[_0x80fd('0x15')]+=0x1;}}this[_0x80fd('0x19')]=this[_0x80fd('0x14')]-this[_0x80fd('0x15')];this['available']=this[_0x80fd('0x19')]>=0x0?this[_0x80fd('0x19')]:0x0;var _0x3cdd28={'id':this['id'],'available':this[_0x80fd('0x19')],'loggedIn':this[_0x80fd('0x14')],'name':this[_0x80fd('0x9')],'paused':this[_0x80fd('0x15')],'waiting':this['waiting']};var _0x4ab68a=md5(JSON[_0x80fd('0x1a')](_0x3cdd28));if(this['md5']!==_0x4ab68a){this['md5']=_0x4ab68a;io['to'](util['format'](_0x80fd('0x1b'),_0x3cdd28[_0x80fd('0x9')]))['emit'](_0x80fd('0x1c'),_0x3cdd28);}};module[_0x80fd('0x1d')]=ChatQueue;
\ No newline at end of file
index 72727af..8763f01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff78=['available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','../../../config/environment','redis','socket.io-emitter','name','timeout','beepall','Agents','waiting','updateRouting','mapAgentsId','_rr','map','loggedIn','paused','online','faxPause'];(function(_0x3c1b95,_0x2ea03c){var _0x3f2f68=function(_0x3f1590){while(--_0x3f1590){_0x3c1b95['push'](_0x3c1b95['shift']());}};_0x3f2f68(++_0x2ea03c);}(_0xff78,0x13f));var _0x8ff7=function(_0x4bf96c,_0x4d24fd){_0x4bf96c=_0x4bf96c-0x0;var _0x281d09=_0xff78[_0x4bf96c];return _0x281d09;};'use strict';var _=require(_0x8ff7('0x0'));var md5=require(_0x8ff7('0x1'));var util=require(_0x8ff7('0x2'));var Redis=require('ioredis');var config=require(_0x8ff7('0x3'));config['redis']=_['defaults'](config[_0x8ff7('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x8ff7('0x5'))(new Redis(config[_0x8ff7('0x4')]));function FaxQueue(_0x213612){this['id']=_0x213612['id']||0x0;this[_0x8ff7('0x6')]=_0x213612[_0x8ff7('0x6')]||'';this['timeout']=_0x213612[_0x8ff7('0x7')]||0xa;this['strategy']=_0x213612['strategy']||_0x8ff7('0x8');this[_0x8ff7('0x9')]=_0x213612[_0x8ff7('0x9')];this['mapAgentsId']={};this[_0x8ff7('0xa')]=0x0;this[_0x8ff7('0x1')]='';this[_0x8ff7('0xb')]();this['updateRealtime']();}FaxQueue['prototype'][_0x8ff7('0xb')]=function(){var _0x5c6ac1=this[_0x8ff7('0xc')][_0x8ff7('0xd')];this[_0x8ff7('0xc')]=_[_0x8ff7('0xe')](this[_0x8ff7('0x9')],'id');this[_0x8ff7('0xc')][_0x8ff7('0xd')]=_0x5c6ac1;};FaxQueue['prototype']['updateRealtime']=function(){this[_0x8ff7('0xf')]=0x0;this[_0x8ff7('0x10')]=0x0;for(var _0x53dee2=0x0;_0x53dee2<this[_0x8ff7('0x9')]['length'];_0x53dee2+=0x1){if(this[_0x8ff7('0x9')][_0x53dee2][_0x8ff7('0x11')]){this['loggedIn']+=0x1;}if(this[_0x8ff7('0x9')][_0x53dee2][_0x8ff7('0x12')]){this[_0x8ff7('0x10')]+=0x1;}}this[_0x8ff7('0x13')]=this['loggedIn']-this[_0x8ff7('0x10')];this['available']=this['available']>=0x0?this[_0x8ff7('0x13')]:0x0;var _0x507aa5={'id':this['id'],'available':this[_0x8ff7('0x13')],'loggedIn':this[_0x8ff7('0xf')],'name':this[_0x8ff7('0x6')],'paused':this[_0x8ff7('0x10')],'waiting':this[_0x8ff7('0xa')]};var _0x503b93=md5(JSON[_0x8ff7('0x14')](_0x507aa5));if(this['md5']!==_0x503b93){this[_0x8ff7('0x1')]=_0x503b93;io['to'](util[_0x8ff7('0x15')](_0x8ff7('0x16'),_0x507aa5[_0x8ff7('0x6')]))[_0x8ff7('0x17')](_0x8ff7('0x18'),_0x507aa5);}};module[_0x8ff7('0x19')]=FaxQueue;
\ No newline at end of file
+var _0x09e5=['format','fax:queue:%s','emit','exports','lodash','md5','ioredis','../../../config/environment','localhost','socket.io-emitter','redis','name','strategy','beepall','mapAgentsId','updateRealtime','prototype','updateRouting','_rr','loggedIn','paused','online','available','waiting'];(function(_0x5e6bec,_0x1eb54d){var _0x5dc5cf=function(_0x59429a){while(--_0x59429a){_0x5e6bec['push'](_0x5e6bec['shift']());}};_0x5dc5cf(++_0x1eb54d);}(_0x09e5,0xc4));var _0x509e=function(_0x438427,_0x2d8232){_0x438427=_0x438427-0x0;var _0xed8aa1=_0x09e5[_0x438427];return _0xed8aa1;};'use strict';var _=require(_0x509e('0x0'));var md5=require(_0x509e('0x1'));var util=require('util');var Redis=require(_0x509e('0x2'));var config=require(_0x509e('0x3'));config['redis']=_['defaults'](config['redis'],{'host':_0x509e('0x4'),'port':0x18eb});var io=require(_0x509e('0x5'))(new Redis(config[_0x509e('0x6')]));function FaxQueue(_0x359441){this['id']=_0x359441['id']||0x0;this[_0x509e('0x7')]=_0x359441[_0x509e('0x7')]||'';this['timeout']=_0x359441['timeout']||0xa;this[_0x509e('0x8')]=_0x359441[_0x509e('0x8')]||_0x509e('0x9');this['Agents']=_0x359441['Agents'];this[_0x509e('0xa')]={};this['waiting']=0x0;this['md5']='';this['updateRouting']();this[_0x509e('0xb')]();}FaxQueue[_0x509e('0xc')][_0x509e('0xd')]=function(){var _0x24fcc1=this['mapAgentsId'][_0x509e('0xe')];this[_0x509e('0xa')]=_['map'](this['Agents'],'id');this[_0x509e('0xa')][_0x509e('0xe')]=_0x24fcc1;};FaxQueue[_0x509e('0xc')][_0x509e('0xb')]=function(){this[_0x509e('0xf')]=0x0;this[_0x509e('0x10')]=0x0;for(var _0x377459=0x0;_0x377459<this['Agents']['length'];_0x377459+=0x1){if(this['Agents'][_0x377459][_0x509e('0x11')]){this[_0x509e('0xf')]+=0x1;}if(this['Agents'][_0x377459]['faxPause']){this[_0x509e('0x10')]+=0x1;}}this[_0x509e('0x12')]=this['loggedIn']-this[_0x509e('0x10')];this[_0x509e('0x12')]=this[_0x509e('0x12')]>=0x0?this[_0x509e('0x12')]:0x0;var _0x4bb8a8={'id':this['id'],'available':this[_0x509e('0x12')],'loggedIn':this[_0x509e('0xf')],'name':this['name'],'paused':this[_0x509e('0x10')],'waiting':this[_0x509e('0x13')]};var _0x35bd57=md5(JSON['stringify'](_0x4bb8a8));if(this[_0x509e('0x1')]!==_0x35bd57){this[_0x509e('0x1')]=_0x35bd57;io['to'](util[_0x509e('0x14')](_0x509e('0x15'),_0x4bb8a8['name']))[_0x509e('0x16')]('fax_queue:save',_0x4bb8a8);}};module[_0x509e('0x17')]=FaxQueue;
\ No newline at end of file
index 32a0ed6..3f84e7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd3e=['Intervals','exports','name'];(function(_0x2a5dc1,_0xc58ca4){var _0x244d63=function(_0x2836c5){while(--_0x2836c5){_0x2a5dc1['push'](_0x2a5dc1['shift']());}};_0x244d63(++_0xc58ca4);}(_0xcd3e,0xda));var _0xecd3=function(_0x59bcb1,_0x5a4b6c){_0x59bcb1=_0x59bcb1-0x0;var _0x4a737f=_0xcd3e[_0x59bcb1];return _0x4a737f;};'use strict';function Interval(_0x356336){this['id']=_0x356336['id']||0x0;this[_0xecd3('0x0')]=_0x356336['name']||'';this[_0xecd3('0x1')]=_0x356336[_0xecd3('0x1')]||{};}module[_0xecd3('0x2')]=Interval;
\ No newline at end of file
+var _0x4813=['name','Intervals'];(function(_0x5e0746,_0x4b1a21){var _0x2b102d=function(_0x15239e){while(--_0x15239e){_0x5e0746['push'](_0x5e0746['shift']());}};_0x2b102d(++_0x4b1a21);}(_0x4813,0x1e4));var _0x3481=function(_0x32960d,_0x2998d6){_0x32960d=_0x32960d-0x0;var _0x58ece2=_0x4813[_0x32960d];return _0x58ece2;};'use strict';function Interval(_0x1a5e67){this['id']=_0x1a5e67['id']||0x0;this[_0x3481('0x0')]=_0x1a5e67[_0x3481('0x0')]||'';this[_0x3481('0x1')]=_0x1a5e67[_0x3481('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index 10028a2..f6f303d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb29f=['prototype','_rr','updateRealtime','loggedIn','length','online','paused','available','format','mail:queue:%s','exports','lodash','md5','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb29f,0xc3));var _0xfb29=function(_0x4b9c97,_0x3257aa){_0x4b9c97=_0x4b9c97-0x0;var _0x1d44a2=_0xb29f[_0x4b9c97];return _0x1d44a2;};'use strict';var _=require(_0xfb29('0x0'));var md5=require(_0xfb29('0x1'));var util=require('util');var Redis=require(_0xfb29('0x2'));var config=require(_0xfb29('0x3'));config['redis']=_['defaults'](config[_0xfb29('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xfb29('0x5'))(new Redis(config[_0xfb29('0x4')]));function MailQueue(_0x4acb05){this['id']=_0x4acb05['id']||0x0;this[_0xfb29('0x6')]=_0x4acb05[_0xfb29('0x6')]||'';this[_0xfb29('0x7')]=_0x4acb05[_0xfb29('0x7')]||0xa;this[_0xfb29('0x8')]=_0x4acb05[_0xfb29('0x8')]||'beepall';this[_0xfb29('0x9')]=_0x4acb05[_0xfb29('0x9')];this[_0xfb29('0xa')]={};this[_0xfb29('0xb')]=0x0;this['md5']='';this['updateRouting']();this['updateRealtime']();}MailQueue[_0xfb29('0xc')]['updateRouting']=function(){var _0x2c5109=this[_0xfb29('0xa')][_0xfb29('0xd')];this['mapAgentsId']=_['map'](this[_0xfb29('0x9')],'id');this[_0xfb29('0xa')]['_rr']=_0x2c5109;};MailQueue[_0xfb29('0xc')][_0xfb29('0xe')]=function(){this[_0xfb29('0xf')]=0x0;this['paused']=0x0;for(var _0x25570d=0x0;_0x25570d<this[_0xfb29('0x9')][_0xfb29('0x10')];_0x25570d+=0x1){if(this[_0xfb29('0x9')][_0x25570d][_0xfb29('0x11')]){this['loggedIn']+=0x1;}if(this[_0xfb29('0x9')][_0x25570d]['mailPause']){this[_0xfb29('0x12')]+=0x1;}}this[_0xfb29('0x13')]=this[_0xfb29('0xf')]-this[_0xfb29('0x12')];this['available']=this[_0xfb29('0x13')]>=0x0?this[_0xfb29('0x13')]:0x0;var _0x3ea793={'id':this['id'],'available':this[_0xfb29('0x13')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0xfb29('0x12')],'waiting':this[_0xfb29('0xb')]};var _0x25e8a6=md5(JSON['stringify'](_0x3ea793));if(this['md5']!==_0x25e8a6){this[_0xfb29('0x1')]=_0x25e8a6;io['to'](util[_0xfb29('0x14')](_0xfb29('0x15'),_0x3ea793[_0xfb29('0x6')]))['emit']('mail_queue:save',_0x3ea793);}};module[_0xfb29('0x16')]=MailQueue;
\ No newline at end of file
+var _0x1ce7=['waiting','format','mail_queue:save','lodash','md5','util','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','_rr','map','prototype','loggedIn','paused','length','online','mailPause','available'];(function(_0x55d698,_0x43e371){var _0x37a6ad=function(_0x156fea){while(--_0x156fea){_0x55d698['push'](_0x55d698['shift']());}};_0x37a6ad(++_0x43e371);}(_0x1ce7,0x9f));var _0x71ce=function(_0x31eb67,_0x9bc8c0){_0x31eb67=_0x31eb67-0x0;var _0x2a8cb8=_0x1ce7[_0x31eb67];return _0x2a8cb8;};'use strict';var _=require(_0x71ce('0x0'));var md5=require(_0x71ce('0x1'));var util=require(_0x71ce('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x71ce('0x3')]=_[_0x71ce('0x4')](config[_0x71ce('0x3')],{'host':_0x71ce('0x5'),'port':0x18eb});var io=require(_0x71ce('0x6'))(new Redis(config[_0x71ce('0x3')]));function MailQueue(_0x40d725){this['id']=_0x40d725['id']||0x0;this[_0x71ce('0x7')]=_0x40d725[_0x71ce('0x7')]||'';this[_0x71ce('0x8')]=_0x40d725[_0x71ce('0x8')]||0xa;this[_0x71ce('0x9')]=_0x40d725[_0x71ce('0x9')]||_0x71ce('0xa');this[_0x71ce('0xb')]=_0x40d725[_0x71ce('0xb')];this[_0x71ce('0xc')]={};this['waiting']=0x0;this[_0x71ce('0x1')]='';this[_0x71ce('0xd')]();this['updateRealtime']();}MailQueue['prototype'][_0x71ce('0xd')]=function(){var _0x4efd7=this[_0x71ce('0xc')][_0x71ce('0xe')];this['mapAgentsId']=_[_0x71ce('0xf')](this[_0x71ce('0xb')],'id');this[_0x71ce('0xc')][_0x71ce('0xe')]=_0x4efd7;};MailQueue[_0x71ce('0x10')]['updateRealtime']=function(){this[_0x71ce('0x11')]=0x0;this[_0x71ce('0x12')]=0x0;for(var _0xf012ca=0x0;_0xf012ca<this[_0x71ce('0xb')][_0x71ce('0x13')];_0xf012ca+=0x1){if(this[_0x71ce('0xb')][_0xf012ca][_0x71ce('0x14')]){this[_0x71ce('0x11')]+=0x1;}if(this[_0x71ce('0xb')][_0xf012ca][_0x71ce('0x15')]){this['paused']+=0x1;}}this[_0x71ce('0x16')]=this[_0x71ce('0x11')]-this['paused'];this[_0x71ce('0x16')]=this['available']>=0x0?this[_0x71ce('0x16')]:0x0;var _0x5d4221={'id':this['id'],'available':this[_0x71ce('0x16')],'loggedIn':this[_0x71ce('0x11')],'name':this[_0x71ce('0x7')],'paused':this[_0x71ce('0x12')],'waiting':this[_0x71ce('0x17')]};var _0x198e1a=md5(JSON['stringify'](_0x5d4221));if(this[_0x71ce('0x1')]!==_0x198e1a){this[_0x71ce('0x1')]=_0x198e1a;io['to'](util[_0x71ce('0x18')]('mail:queue:%s',_0x5d4221[_0x71ce('0x7')]))['emit'](_0x71ce('0x19'),_0x5d4221);}};module['exports']=MailQueue;
\ No newline at end of file
index fd225a2..7798e3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['strategy','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xc4aa[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0xac4a('0x0'));var md5=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));config[_0xac4a('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xac4a('0x6'))(new Redis(config[_0xac4a('0x5')]));function OpenchannelQueue(_0x730a38){this['id']=_0x730a38['id']||0x0;this[_0xac4a('0x7')]=_0x730a38[_0xac4a('0x7')]||'';this[_0xac4a('0x8')]=_0x730a38[_0xac4a('0x8')]||0xa;this[_0xac4a('0x9')]=_0x730a38['strategy']||'beepall';this[_0xac4a('0xa')]=_0x730a38[_0xac4a('0xa')];this[_0xac4a('0xb')]={};this['waiting']=0x0;this[_0xac4a('0x1')]='';this[_0xac4a('0xc')]();this[_0xac4a('0xd')]();}OpenchannelQueue['prototype'][_0xac4a('0xc')]=function(){var _0x488e3c=this[_0xac4a('0xb')]['_rr'];this[_0xac4a('0xb')]=_[_0xac4a('0xe')](this[_0xac4a('0xa')],'id');this['mapAgentsId'][_0xac4a('0xf')]=_0x488e3c;};OpenchannelQueue[_0xac4a('0x10')][_0xac4a('0xd')]=function(){this[_0xac4a('0x11')]=0x0;this[_0xac4a('0x12')]=0x0;for(var _0x3b71c0=0x0;_0x3b71c0<this[_0xac4a('0xa')][_0xac4a('0x13')];_0x3b71c0+=0x1){if(this[_0xac4a('0xa')][_0x3b71c0][_0xac4a('0x14')]){this[_0xac4a('0x11')]+=0x1;}if(this[_0xac4a('0xa')][_0x3b71c0]['openchannelPause']){this[_0xac4a('0x12')]+=0x1;}}this[_0xac4a('0x15')]=this[_0xac4a('0x11')]-this[_0xac4a('0x12')];this[_0xac4a('0x15')]=this[_0xac4a('0x15')]>=0x0?this[_0xac4a('0x15')]:0x0;var _0x44ec59={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xac4a('0x7')],'paused':this[_0xac4a('0x12')],'waiting':this[_0xac4a('0x16')]};var _0x4d837c=md5(JSON[_0xac4a('0x17')](_0x44ec59));if(this[_0xac4a('0x1')]!==_0x4d837c){this[_0xac4a('0x1')]=_0x4d837c;io['to'](util[_0xac4a('0x18')](_0xac4a('0x19'),_0x44ec59[_0xac4a('0x7')]))[_0xac4a('0x1a')](_0xac4a('0x1b'),_0x44ec59);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
+var _0x7a54=['exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRealtime','mapAgentsId','_rr','map','Agents','prototype','loggedIn','paused','length','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x7a54,0x106));var _0x47a5=function(_0x210cdc,_0x3475f6){_0x210cdc=_0x210cdc-0x0;var _0x171491=_0x7a54[_0x210cdc];return _0x171491;};'use strict';var _=require(_0x47a5('0x0'));var md5=require(_0x47a5('0x1'));var util=require(_0x47a5('0x2'));var Redis=require('ioredis');var config=require(_0x47a5('0x3'));config[_0x47a5('0x4')]=_['defaults'](config[_0x47a5('0x4')],{'host':_0x47a5('0x5'),'port':0x18eb});var io=require(_0x47a5('0x6'))(new Redis(config[_0x47a5('0x4')]));function OpenchannelQueue(_0xfdf934){this['id']=_0xfdf934['id']||0x0;this['name']=_0xfdf934[_0x47a5('0x7')]||'';this['timeout']=_0xfdf934[_0x47a5('0x8')]||0xa;this[_0x47a5('0x9')]=_0xfdf934['strategy']||_0x47a5('0xa');this['Agents']=_0xfdf934['Agents'];this['mapAgentsId']={};this[_0x47a5('0xb')]=0x0;this[_0x47a5('0x1')]='';this['updateRouting']();this[_0x47a5('0xc')]();}OpenchannelQueue['prototype']['updateRouting']=function(){var _0x1f47f4=this[_0x47a5('0xd')][_0x47a5('0xe')];this[_0x47a5('0xd')]=_[_0x47a5('0xf')](this[_0x47a5('0x10')],'id');this[_0x47a5('0xd')]['_rr']=_0x1f47f4;};OpenchannelQueue[_0x47a5('0x11')][_0x47a5('0xc')]=function(){this[_0x47a5('0x12')]=0x0;this[_0x47a5('0x13')]=0x0;for(var _0x139f25=0x0;_0x139f25<this[_0x47a5('0x10')][_0x47a5('0x14')];_0x139f25+=0x1){if(this[_0x47a5('0x10')][_0x139f25]['online']){this[_0x47a5('0x12')]+=0x1;}if(this[_0x47a5('0x10')][_0x139f25][_0x47a5('0x15')]){this[_0x47a5('0x13')]+=0x1;}}this[_0x47a5('0x16')]=this['loggedIn']-this['paused'];this[_0x47a5('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x423a81={'id':this['id'],'available':this[_0x47a5('0x16')],'loggedIn':this[_0x47a5('0x12')],'name':this[_0x47a5('0x7')],'paused':this[_0x47a5('0x13')],'waiting':this[_0x47a5('0xb')]};var _0x2763d6=md5(JSON[_0x47a5('0x17')](_0x423a81));if(this[_0x47a5('0x1')]!==_0x2763d6){this['md5']=_0x2763d6;io['to'](util[_0x47a5('0x18')](_0x47a5('0x19'),_0x423a81['name']))[_0x47a5('0x1a')](_0x47a5('0x1b'),_0x423a81);}};module[_0x47a5('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 39dd128..aa0f82c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd691=['available','stringify','format','sms:queue:%s','emit','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','smsPause'];(function(_0x504dc3,_0x547139){var _0x2d352c=function(_0x3cb526){while(--_0x3cb526){_0x504dc3['push'](_0x504dc3['shift']());}};_0x2d352c(++_0x547139);}(_0xd691,0xe6));var _0x1d69=function(_0x2f8cb4,_0x2958d5){_0x2f8cb4=_0x2f8cb4-0x0;var _0x16dd55=_0xd691[_0x2f8cb4];return _0x16dd55;};'use strict';var _=require(_0x1d69('0x0'));var md5=require(_0x1d69('0x1'));var util=require(_0x1d69('0x2'));var Redis=require('ioredis');var config=require(_0x1d69('0x3'));config[_0x1d69('0x4')]=_[_0x1d69('0x5')](config[_0x1d69('0x4')],{'host':_0x1d69('0x6'),'port':0x18eb});var io=require(_0x1d69('0x7'))(new Redis(config[_0x1d69('0x4')]));function SmsQueue(_0x3d879d){this['id']=_0x3d879d['id']||0x0;this[_0x1d69('0x8')]=_0x3d879d[_0x1d69('0x8')]||'';this['timeout']=_0x3d879d['timeout']||0xa;this[_0x1d69('0x9')]=_0x3d879d['strategy']||_0x1d69('0xa');this[_0x1d69('0xb')]=_0x3d879d[_0x1d69('0xb')];this[_0x1d69('0xc')]={};this['waiting']=0x0;this[_0x1d69('0x1')]='';this[_0x1d69('0xd')]();this[_0x1d69('0xe')]();}SmsQueue[_0x1d69('0xf')][_0x1d69('0xd')]=function(){var _0x5d2092=this['mapAgentsId'][_0x1d69('0x10')];this[_0x1d69('0xc')]=_[_0x1d69('0x11')](this[_0x1d69('0xb')],'id');this[_0x1d69('0xc')][_0x1d69('0x10')]=_0x5d2092;};SmsQueue[_0x1d69('0xf')][_0x1d69('0xe')]=function(){this[_0x1d69('0x12')]=0x0;this[_0x1d69('0x13')]=0x0;for(var _0x292721=0x0;_0x292721<this[_0x1d69('0xb')][_0x1d69('0x14')];_0x292721+=0x1){if(this['Agents'][_0x292721]['online']){this[_0x1d69('0x12')]+=0x1;}if(this[_0x1d69('0xb')][_0x292721][_0x1d69('0x15')]){this[_0x1d69('0x13')]+=0x1;}}this[_0x1d69('0x16')]=this[_0x1d69('0x12')]-this['paused'];this[_0x1d69('0x16')]=this[_0x1d69('0x16')]>=0x0?this[_0x1d69('0x16')]:0x0;var _0x53915f={'id':this['id'],'available':this['available'],'loggedIn':this[_0x1d69('0x12')],'name':this[_0x1d69('0x8')],'paused':this[_0x1d69('0x13')],'waiting':this['waiting']};var _0x27dee0=md5(JSON[_0x1d69('0x17')](_0x53915f));if(this[_0x1d69('0x1')]!==_0x27dee0){this[_0x1d69('0x1')]=_0x27dee0;io['to'](util[_0x1d69('0x18')](_0x1d69('0x19'),_0x53915f[_0x1d69('0x8')]))[_0x1d69('0x1a')]('sms_queue:save',_0x53915f);}};module[_0x1d69('0x1b')]=SmsQueue;
\ No newline at end of file
+var _0xe107=['format','sms:queue:%s','emit','sms_queue:save','exports','lodash','util','ioredis','../../../config/environment','defaults','socket.io-emitter','redis','timeout','strategy','Agents','md5','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused','length','online','available','waiting','stringify'];(function(_0x1202aa,_0x34c366){var _0x5931dc=function(_0x295c88){while(--_0x295c88){_0x1202aa['push'](_0x1202aa['shift']());}};_0x5931dc(++_0x34c366);}(_0xe107,0xb3));var _0x7e10=function(_0x3e9bcb,_0x3465a3){_0x3e9bcb=_0x3e9bcb-0x0;var _0x1459dd=_0xe107[_0x3e9bcb];return _0x1459dd;};'use strict';var _=require(_0x7e10('0x0'));var md5=require('md5');var util=require(_0x7e10('0x1'));var Redis=require(_0x7e10('0x2'));var config=require(_0x7e10('0x3'));config['redis']=_[_0x7e10('0x4')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x7e10('0x5'))(new Redis(config[_0x7e10('0x6')]));function SmsQueue(_0x841f6d){this['id']=_0x841f6d['id']||0x0;this['name']=_0x841f6d['name']||'';this[_0x7e10('0x7')]=_0x841f6d[_0x7e10('0x7')]||0xa;this[_0x7e10('0x8')]=_0x841f6d[_0x7e10('0x8')]||'beepall';this['Agents']=_0x841f6d[_0x7e10('0x9')];this['mapAgentsId']={};this['waiting']=0x0;this[_0x7e10('0xa')]='';this[_0x7e10('0xb')]();this[_0x7e10('0xc')]();}SmsQueue[_0x7e10('0xd')][_0x7e10('0xb')]=function(){var _0x52ba74=this[_0x7e10('0xe')]['_rr'];this[_0x7e10('0xe')]=_[_0x7e10('0xf')](this[_0x7e10('0x9')],'id');this['mapAgentsId'][_0x7e10('0x10')]=_0x52ba74;};SmsQueue[_0x7e10('0xd')][_0x7e10('0xc')]=function(){this[_0x7e10('0x11')]=0x0;this[_0x7e10('0x12')]=0x0;for(var _0x1b4d9d=0x0;_0x1b4d9d<this[_0x7e10('0x9')][_0x7e10('0x13')];_0x1b4d9d+=0x1){if(this['Agents'][_0x1b4d9d][_0x7e10('0x14')]){this[_0x7e10('0x11')]+=0x1;}if(this['Agents'][_0x1b4d9d]['smsPause']){this[_0x7e10('0x12')]+=0x1;}}this['available']=this[_0x7e10('0x11')]-this[_0x7e10('0x12')];this[_0x7e10('0x15')]=this[_0x7e10('0x15')]>=0x0?this['available']:0x0;var _0x3208c6={'id':this['id'],'available':this[_0x7e10('0x15')],'loggedIn':this[_0x7e10('0x11')],'name':this['name'],'paused':this[_0x7e10('0x12')],'waiting':this[_0x7e10('0x16')]};var _0x157b22=md5(JSON[_0x7e10('0x17')](_0x3208c6));if(this[_0x7e10('0xa')]!==_0x157b22){this['md5']=_0x157b22;io['to'](util[_0x7e10('0x18')](_0x7e10('0x19'),_0x3208c6['name']))[_0x7e10('0x1a')](_0x7e10('0x1b'),_0x3208c6);}};module[_0x7e10('0x1c')]=SmsQueue;
\ No newline at end of file
index 07e7c4c..51eb272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x892c=['emit','whatsapp_queue:save','exports','lodash','util','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','md5','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','online','whatsappPause','available','waiting','stringify','format'];(function(_0x55c1f0,_0x4f574f){var _0x1530fa=function(_0x631542){while(--_0x631542){_0x55c1f0['push'](_0x55c1f0['shift']());}};_0x1530fa(++_0x4f574f);}(_0x892c,0x16b));var _0xc892=function(_0x5e03fc,_0x1b5ed7){_0x5e03fc=_0x5e03fc-0x0;var _0x116ada=_0x892c[_0x5e03fc];return _0x116ada;};'use strict';var _=require(_0xc892('0x0'));var md5=require('md5');var util=require(_0xc892('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0xc892('0x2')]=_[_0xc892('0x3')](config[_0xc892('0x2')],{'host':_0xc892('0x4'),'port':0x18eb});var io=require(_0xc892('0x5'))(new Redis(config[_0xc892('0x2')]));function WhatsappQueue(_0x565513){this['id']=_0x565513['id']||0x0;this[_0xc892('0x6')]=_0x565513[_0xc892('0x6')]||'';this[_0xc892('0x7')]=_0x565513[_0xc892('0x7')]||0xa;this[_0xc892('0x8')]=_0x565513['strategy']||_0xc892('0x9');this['Agents']=_0x565513[_0xc892('0xa')];this[_0xc892('0xb')]={};this['waiting']=0x0;this[_0xc892('0xc')]='';this[_0xc892('0xd')]();this[_0xc892('0xe')]();}WhatsappQueue[_0xc892('0xf')][_0xc892('0xd')]=function(){var _0x34752c=this['mapAgentsId']['_rr'];this[_0xc892('0xb')]=_[_0xc892('0x10')](this['Agents'],'id');this[_0xc892('0xb')][_0xc892('0x11')]=_0x34752c;};WhatsappQueue[_0xc892('0xf')][_0xc892('0xe')]=function(){this[_0xc892('0x12')]=0x0;this[_0xc892('0x13')]=0x0;for(var _0x39c397=0x0;_0x39c397<this[_0xc892('0xa')][_0xc892('0x14')];_0x39c397+=0x1){if(this[_0xc892('0xa')][_0x39c397][_0xc892('0x15')]){this[_0xc892('0x12')]+=0x1;}if(this['Agents'][_0x39c397][_0xc892('0x16')]){this[_0xc892('0x13')]+=0x1;}}this[_0xc892('0x17')]=this[_0xc892('0x12')]-this[_0xc892('0x13')];this[_0xc892('0x17')]=this[_0xc892('0x17')]>=0x0?this['available']:0x0;var _0x145b5b={'id':this['id'],'available':this['available'],'loggedIn':this[_0xc892('0x12')],'name':this[_0xc892('0x6')],'paused':this['paused'],'waiting':this[_0xc892('0x18')]};var _0x345e1a=md5(JSON[_0xc892('0x19')](_0x145b5b));if(this[_0xc892('0xc')]!==_0x345e1a){this[_0xc892('0xc')]=_0x345e1a;io['to'](util[_0xc892('0x1a')]('whatsapp:queue:%s',_0x145b5b['name']))[_0xc892('0x1b')](_0xc892('0x1c'),_0x145b5b);}};module[_0xc892('0x1d')]=WhatsappQueue;
\ No newline at end of file
+var _0x1b47=['online','whatsappPause','available','name','stringify','format','whatsapp:queue:%s','emit','lodash','util','../../../config/environment','defaults','localhost','timeout','strategy','Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length'];(function(_0x5a077c,_0x4cdfd6){var _0x4f6edd=function(_0x462a3e){while(--_0x462a3e){_0x5a077c['push'](_0x5a077c['shift']());}};_0x4f6edd(++_0x4cdfd6);}(_0x1b47,0x126));var _0x71b4=function(_0x18f396,_0x174d17){_0x18f396=_0x18f396-0x0;var _0x3ba532=_0x1b47[_0x18f396];return _0x3ba532;};'use strict';var _=require(_0x71b4('0x0'));var md5=require('md5');var util=require(_0x71b4('0x1'));var Redis=require('ioredis');var config=require(_0x71b4('0x2'));config['redis']=_[_0x71b4('0x3')](config['redis'],{'host':_0x71b4('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function WhatsappQueue(_0x12fa74){this['id']=_0x12fa74['id']||0x0;this['name']=_0x12fa74['name']||'';this[_0x71b4('0x5')]=_0x12fa74['timeout']||0xa;this[_0x71b4('0x6')]=_0x12fa74[_0x71b4('0x6')]||'beepall';this[_0x71b4('0x7')]=_0x12fa74[_0x71b4('0x7')];this[_0x71b4('0x8')]={};this[_0x71b4('0x9')]=0x0;this[_0x71b4('0xa')]='';this[_0x71b4('0xb')]();this[_0x71b4('0xc')]();}WhatsappQueue[_0x71b4('0xd')][_0x71b4('0xb')]=function(){var _0x3257d1=this[_0x71b4('0x8')][_0x71b4('0xe')];this['mapAgentsId']=_['map'](this[_0x71b4('0x7')],'id');this[_0x71b4('0x8')][_0x71b4('0xe')]=_0x3257d1;};WhatsappQueue[_0x71b4('0xd')][_0x71b4('0xc')]=function(){this[_0x71b4('0xf')]=0x0;this[_0x71b4('0x10')]=0x0;for(var _0x23da41=0x0;_0x23da41<this[_0x71b4('0x7')][_0x71b4('0x11')];_0x23da41+=0x1){if(this[_0x71b4('0x7')][_0x23da41][_0x71b4('0x12')]){this['loggedIn']+=0x1;}if(this[_0x71b4('0x7')][_0x23da41][_0x71b4('0x13')]){this[_0x71b4('0x10')]+=0x1;}}this[_0x71b4('0x14')]=this[_0x71b4('0xf')]-this[_0x71b4('0x10')];this[_0x71b4('0x14')]=this[_0x71b4('0x14')]>=0x0?this[_0x71b4('0x14')]:0x0;var _0xa5f0ab={'id':this['id'],'available':this[_0x71b4('0x14')],'loggedIn':this[_0x71b4('0xf')],'name':this[_0x71b4('0x15')],'paused':this['paused'],'waiting':this[_0x71b4('0x9')]};var _0x4b29ef=md5(JSON[_0x71b4('0x16')](_0xa5f0ab));if(this[_0x71b4('0xa')]!==_0x4b29ef){this[_0x71b4('0xa')]=_0x4b29ef;io['to'](util[_0x71b4('0x17')](_0x71b4('0x18'),_0xa5f0ab[_0x71b4('0x15')]))[_0x71b4('0x19')]('whatsapp_queue:save',_0xa5f0ab);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index 21c082a..2c82a89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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(_0x329db0,_0x3efa85){var _0x465c48=function(_0x42d528){while(--_0x42d528){_0x329db0['push'](_0x329db0['shift']());}};_0x465c48(++_0x3efa85);}(_0xb10b,0x12a));var _0xbb10=function(_0x1432a6,_0x5846c5){_0x1432a6=_0x1432a6-0x0;var _0x3eab00=_0xb10b[_0x1432a6];return _0x3eab00;};'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 7a1423b..89545c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3122=['addTags','Request','addTagsToChatInteraction','UpdateChatInteraction','updateChatInteraction'];(function(_0x42d439,_0x2bcb89){var _0x48bbda=function(_0x5650e8){while(--_0x5650e8){_0x42d439['push'](_0x42d439['shift']());}};_0x48bbda(++_0x2bcb89);}(_0x3122,0x1c5));var _0x2312=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3122[_0x397e5f];return _0x5302b8;};'use strict';var client=require('../client');exports['update']=function(_0x3351f5,_0x1eff04){return client['Request'](_0x2312('0x0'),{'body':_0x1eff04,'options':{'where':{'id':_0x3351f5}},'log':_0x2312('0x1')});};exports[_0x2312('0x2')]=function(_0xd35738,_0x888793){return client[_0x2312('0x3')]('AddTagsToChatInteraction',{'body':_0x888793,'options':{'where':{'id':_0xd35738}},'log':_0x2312('0x4')});};
\ No newline at end of file
+var _0x578b=['update','Request','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client'];(function(_0x2338fa,_0x80579a){var _0x42df9b=function(_0x13fe56){while(--_0x13fe56){_0x2338fa['push'](_0x2338fa['shift']());}};_0x42df9b(++_0x80579a);}(_0x578b,0x7d));var _0xb578=function(_0x2f31ea,_0x351d88){_0x2f31ea=_0x2f31ea-0x0;var _0x5b6a5d=_0x578b[_0x2f31ea];return _0x5b6a5d;};'use strict';var client=require(_0xb578('0x0'));exports[_0xb578('0x1')]=function(_0x4b74d0,_0x18e6e2){return client[_0xb578('0x2')]('UpdateChatInteraction',{'body':_0x18e6e2,'options':{'where':{'id':_0x4b74d0}},'log':_0xb578('0x3')});};exports[_0xb578('0x4')]=function(_0x2f7c54,_0x5f583f){return client['Request'](_0xb578('0x5'),{'body':_0x5f583f,'options':{'where':{'id':_0x2f7c54}},'log':_0xb578('0x6')});};
\ No newline at end of file
index 1560437..9b8c4f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe350=['Request','CreateChatMessage','createChatMessage','create'];(function(_0x40ed5c,_0xc348cd){var _0x578fd6=function(_0x2fa405){while(--_0x2fa405){_0x40ed5c['push'](_0x40ed5c['shift']());}};_0x578fd6(++_0xc348cd);}(_0xe350,0x93));var _0x0e35=function(_0x2207fc,_0x403587){_0x2207fc=_0x2207fc-0x0;var _0x3c39c5=_0xe350[_0x2207fc];return _0x3c39c5;};'use strict';var client=require('../client');exports[_0x0e35('0x0')]=function(_0x133f63){return client[_0x0e35('0x1')](_0x0e35('0x2'),{'body':_0x133f63,'log':_0x0e35('0x3')});};
\ No newline at end of file
+var _0x2cdd=['../client','create','Request','CreateChatMessage','createChatMessage'];(function(_0x1d2bbb,_0x202267){var _0x38082b=function(_0x27d153){while(--_0x27d153){_0x1d2bbb['push'](_0x1d2bbb['shift']());}};_0x38082b(++_0x202267);}(_0x2cdd,0x1ea));var _0xd2cd=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x2cdd[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0xd2cd('0x0'));exports[_0xd2cd('0x1')]=function(_0x11c29e){return client[_0xd2cd('0x2')](_0xd2cd('0x3'),{'body':_0x11c29e,'log':_0xd2cd('0x4')});};
\ No newline at end of file
index d6da322..4ae0982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d55=['User','Agents','online','chatPause','getChatQueues','GetChatQueue','name','strategy'];(function(_0x2ced77,_0x4949ad){var _0x37740c=function(_0xeb3b81){while(--_0xeb3b81){_0x2ced77['push'](_0x2ced77['shift']());}};_0x37740c(++_0x4949ad);}(_0x5d55,0x1a4));var _0x55d5=function(_0xfc4485,_0x4e3abf){_0xfc4485=_0xfc4485-0x0;var _0x58c6f4=_0x5d55[_0xfc4485];return _0x58c6f4;};'use strict';var client=require('../client');exports[_0x55d5('0x0')]=function(){return function(){return client['Request'](_0x55d5('0x1'),{'options':{'raw':![],'attributes':['id',_0x55d5('0x2'),'timeout',_0x55d5('0x3')],'include':[{'model':_0x55d5('0x4'),'as':_0x55d5('0x5'),'attributes':['id','name',_0x55d5('0x6'),_0x55d5('0x7')]}]},'log':_0x55d5('0x0')});};};
\ No newline at end of file
+var _0x692c=['name','timeout','User','Agents','online','chatPause','../client','getChatQueues','Request','GetChatQueue'];(function(_0x34f29e,_0x5da898){var _0x38ebe5=function(_0x39c8a5){while(--_0x39c8a5){_0x34f29e['push'](_0x34f29e['shift']());}};_0x38ebe5(++_0x5da898);}(_0x692c,0x6a));var _0xc692=function(_0x1f212f,_0x2a0b98){_0x1f212f=_0x1f212f-0x0;var _0x382128=_0x692c[_0x1f212f];return _0x382128;};'use strict';var client=require(_0xc692('0x0'));exports[_0xc692('0x1')]=function(){return function(){return client[_0xc692('0x2')](_0xc692('0x3'),{'options':{'raw':![],'attributes':['id',_0xc692('0x4'),_0xc692('0x5'),'strategy'],'include':[{'model':_0xc692('0x6'),'as':_0xc692('0x7'),'attributes':['id',_0xc692('0x4'),_0xc692('0x8'),_0xc692('0x9')]}]},'log':_0xc692('0x1')});};};
\ No newline at end of file
index d0da180..70e7a8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4944=['DESC','../client','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x560448,_0x2c1082){var _0x550276=function(_0x37e949){while(--_0x37e949){_0x560448['push'](_0x560448['shift']());}};_0x550276(++_0x2c1082);}(_0x4944,0x6d));var _0x4494=function(_0x592da1,_0x296527){_0x592da1=_0x592da1-0x0;var _0x4f76fe=_0x4944[_0x592da1];return _0x4f76fe;};'use strict';var client=require(_0x4494('0x0'));exports['create']=function(_0xfcff90){return client[_0x4494('0x1')](_0x4494('0x2'),{'body':_0xfcff90,'log':_0x4494('0x2')});};exports[_0x4494('0x3')]=function(_0x5074d9,_0x187098){return client['Request'](_0x4494('0x4'),{'body':_0x187098,'options':{'where':{'uniqueid':_0x5074d9},'order':[['id',_0x4494('0x5')]],'limit':0x1},'log':_0x4494('0x4')});};
\ No newline at end of file
+var _0x6921=['update','UpdateChatQueueReport','DESC','create','Request','CreateChatQueueReport'];(function(_0x12ad60,_0x451820){var _0x48079a=function(_0x56df2a){while(--_0x56df2a){_0x12ad60['push'](_0x12ad60['shift']());}};_0x48079a(++_0x451820);}(_0x6921,0x1d1));var _0x1692=function(_0x22c054,_0x30514c){_0x22c054=_0x22c054-0x0;var _0x2a5ed6=_0x6921[_0x22c054];return _0x2a5ed6;};'use strict';var client=require('../client');exports[_0x1692('0x0')]=function(_0x566deb){return client[_0x1692('0x1')]('CreateChatQueueReport',{'body':_0x566deb,'log':_0x1692('0x2')});};exports[_0x1692('0x3')]=function(_0x4ac00c,_0x3995b3){return client['Request'](_0x1692('0x4'),{'body':_0x3995b3,'options':{'where':{'uniqueid':_0x4ac00c},'order':[['id',_0x1692('0x5')]],'limit':0x1},'log':_0x1692('0x4')});};
\ No newline at end of file
index 9dc23e8..e9b43ad 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(_0x566f61,_0x2dad4f){var _0x45521b=function(_0x53f79c){while(--_0x53f79c){_0x566f61['push'](_0x566f61['shift']());}};_0x45521b(++_0x2dad4f);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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(_0x367c8e,_0x3a6502){var _0x1c2789=function(_0x908461){while(--_0x908461){_0x367c8e['push'](_0x367c8e['shift']());}};_0x1c2789(++_0x3a6502);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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 1b2041c..b563f68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e28=['createFaxMessage','../client','Request','CreateFaxMessage'];(function(_0x34f1ef,_0x4b9e4b){var _0x4fccb5=function(_0x2aed31){while(--_0x2aed31){_0x34f1ef['push'](_0x34f1ef['shift']());}};_0x4fccb5(++_0x4b9e4b);}(_0x5e28,0xa5));var _0x85e2=function(_0x59616b,_0x38e534){_0x59616b=_0x59616b-0x0;var _0x5c4523=_0x5e28[_0x59616b];return _0x5c4523;};'use strict';var client=require(_0x85e2('0x0'));exports['create']=function(_0x31f401){return client[_0x85e2('0x1')](_0x85e2('0x2'),{'body':_0x31f401,'log':_0x85e2('0x3')});};
\ No newline at end of file
+var _0x933d=['Request','CreateFaxMessage','createFaxMessage','../client','create'];(function(_0x41d6b1,_0x147b89){var _0x2e981c=function(_0x5271c1){while(--_0x5271c1){_0x41d6b1['push'](_0x41d6b1['shift']());}};_0x2e981c(++_0x147b89);}(_0x933d,0x166));var _0xd933=function(_0x17a844,_0x3eaca6){_0x17a844=_0x17a844-0x0;var _0x5c948b=_0x933d[_0x17a844];return _0x5c948b;};'use strict';var client=require(_0xd933('0x0'));exports[_0xd933('0x1')]=function(_0x39b685){return client[_0xd933('0x2')](_0xd933('0x3'),{'body':_0x39b685,'log':_0xd933('0x4')});};
\ No newline at end of file
index eef4784..1ae4e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc532=['online','faxPause','../client','getFaxQueues','Request','timeout','strategy','User','Agents','name'];(function(_0x4614eb,_0x5ee1de){var _0x123f27=function(_0x3698e5){while(--_0x3698e5){_0x4614eb['push'](_0x4614eb['shift']());}};_0x123f27(++_0x5ee1de);}(_0xc532,0x1c4));var _0x2c53=function(_0x110f69,_0x4e2238){_0x110f69=_0x110f69-0x0;var _0x4f38b1=_0xc532[_0x110f69];return _0x4f38b1;};'use strict';var client=require(_0x2c53('0x0'));exports[_0x2c53('0x1')]=function(){return function(){return client[_0x2c53('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id','name',_0x2c53('0x3'),_0x2c53('0x4')],'include':[{'model':_0x2c53('0x5'),'as':_0x2c53('0x6'),'attributes':['id',_0x2c53('0x7'),_0x2c53('0x8'),_0x2c53('0x9')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0xa583=['online','faxPause','../client','getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User'];(function(_0x286bfb,_0x46ac3c){var _0x52b683=function(_0x3e7fb1){while(--_0x3e7fb1){_0x286bfb['push'](_0x286bfb['shift']());}};_0x52b683(++_0x46ac3c);}(_0xa583,0x70));var _0x3a58=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xa583[_0x3ab51d];return _0x29a04e;};'use strict';var client=require(_0x3a58('0x0'));exports[_0x3a58('0x1')]=function(){return function(){return client[_0x3a58('0x2')](_0x3a58('0x3'),{'options':{'raw':![],'attributes':['id',_0x3a58('0x4'),_0x3a58('0x5'),_0x3a58('0x6')],'include':[{'model':_0x3a58('0x7'),'as':'Agents','attributes':['id',_0x3a58('0x4'),_0x3a58('0x8'),_0x3a58('0x9')]}]},'log':_0x3a58('0x1')});};};
\ No newline at end of file
index 2cc5a65..efc3680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1dc=['DESC','create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport'];(function(_0xb38ba2,_0x52081b){var _0xfe72e4=function(_0x52ac1e){while(--_0x52ac1e){_0xb38ba2['push'](_0xb38ba2['shift']());}};_0xfe72e4(++_0x52081b);}(_0xb1dc,0x133));var _0xcb1d=function(_0x2a5099,_0x329e92){_0x2a5099=_0x2a5099-0x0;var _0x2802f1=_0xb1dc[_0x2a5099];return _0x2802f1;};'use strict';var client=require('../client');exports[_0xcb1d('0x0')]=function(_0x5c278d){return client[_0xcb1d('0x1')](_0xcb1d('0x2'),{'body':_0x5c278d,'log':_0xcb1d('0x2')});};exports[_0xcb1d('0x3')]=function(_0x11d8dc,_0xc3e297){return client[_0xcb1d('0x1')](_0xcb1d('0x4'),{'body':_0xc3e297,'options':{'where':{'uniqueid':_0x11d8dc},'order':[['id',_0xcb1d('0x5')]],'limit':0x1},'log':_0xcb1d('0x4')});};
\ No newline at end of file
+var _0xf409=['update','UpdateFaxQueueReport','../client','CreateFaxQueueReport'];(function(_0x26f292,_0xc48a2c){var _0x4e2aa2=function(_0x58f5bc){while(--_0x58f5bc){_0x26f292['push'](_0x26f292['shift']());}};_0x4e2aa2(++_0xc48a2c);}(_0xf409,0xce));var _0x9f40=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xf409[_0x3e112d];return _0x531c31;};'use strict';var client=require(_0x9f40('0x0'));exports['create']=function(_0x5d9929){return client['Request'](_0x9f40('0x1'),{'body':_0x5d9929,'log':_0x9f40('0x1')});};exports[_0x9f40('0x2')]=function(_0x416fb3,_0x45a2c6){return client['Request'](_0x9f40('0x3'),{'body':_0x45a2c6,'options':{'where':{'uniqueid':_0x416fb3},'order':[['id','DESC']],'limit':0x1},'log':_0x9f40('0x3')});};
\ No newline at end of file
index eb9b61e..67f727d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe92f=['GetInterval','name','interval','../client','getIntervals','Request'];(function(_0x4aac5a,_0x15b04c){var _0x42e7bc=function(_0x1da766){while(--_0x1da766){_0x4aac5a['push'](_0x4aac5a['shift']());}};_0x42e7bc(++_0x15b04c);}(_0xe92f,0x141));var _0xfe92=function(_0x51b24e,_0x5a91d4){_0x51b24e=_0x51b24e-0x0;var _0x5a66db=_0xe92f[_0x51b24e];return _0x5a66db;};'use strict';var client=require(_0xfe92('0x0'));exports[_0xfe92('0x1')]=function(){return function(){return client[_0xfe92('0x2')](_0xfe92('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xfe92('0x4')],'include':[{'model':'Interval','as':'Intervals','attributes':['id','name',_0xfe92('0x5')]}]},'log':_0xfe92('0x1')});};};
\ No newline at end of file
+var _0x0808=['GetInterval','name','Interval','Intervals','interval','getIntervals','../client','Request'];(function(_0x5a5af2,_0x16e393){var _0x25828b=function(_0x716af9){while(--_0x716af9){_0x5a5af2['push'](_0x5a5af2['shift']());}};_0x25828b(++_0x16e393);}(_0x0808,0x156));var _0x8080=function(_0x1196f5,_0x2291aa){_0x1196f5=_0x1196f5-0x0;var _0x57a9e2=_0x0808[_0x1196f5];return _0x57a9e2;};'use strict';var client=require(_0x8080('0x0'));exports['getIntervals']=function(){return function(){return client[_0x8080('0x1')](_0x8080('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x8080('0x3')],'include':[{'model':_0x8080('0x4'),'as':_0x8080('0x5'),'attributes':['id','name',_0x8080('0x6')]}]},'log':_0x8080('0x7')});};};
\ No newline at end of file
index ffcf641..fe94263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['UpdateMailInteraction','updateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x4711ee,_0x1e22f9){var _0x1d4992=function(_0x50ca35){while(--_0x50ca35){_0x4711ee['push'](_0x4711ee['shift']());}};_0x1d4992(++_0x1e22f9);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x8e3f[_0x59ee6f];return _0x4c0979;};'use strict';var client=require(_0xf8e3('0x0'));exports[_0xf8e3('0x1')]=function(_0x46e6a5,_0x4d334a){return client[_0xf8e3('0x2')](_0xf8e3('0x3'),{'body':_0x4d334a,'options':{'where':{'id':_0x46e6a5}},'log':_0xf8e3('0x4')});};exports['addTags']=function(_0x15d6ea,_0x41bc05){return client['Request'](_0xf8e3('0x5'),{'body':_0x41bc05,'options':{'where':{'id':_0x15d6ea}},'log':_0xf8e3('0x6')});};
\ No newline at end of file
+var _0x4991=['AddTagsToMailInteraction','../client','Request','UpdateMailInteraction','updateMailInteraction','addTags'];(function(_0x38bdb8,_0x26aab7){var _0x4ab6d8=function(_0x487d30){while(--_0x487d30){_0x38bdb8['push'](_0x38bdb8['shift']());}};_0x4ab6d8(++_0x26aab7);}(_0x4991,0xf7));var _0x1499=function(_0x101e81,_0xd9e9){_0x101e81=_0x101e81-0x0;var _0x1f4c45=_0x4991[_0x101e81];return _0x1f4c45;};'use strict';var client=require(_0x1499('0x0'));exports['update']=function(_0x326758,_0x5bd577){return client[_0x1499('0x1')](_0x1499('0x2'),{'body':_0x5bd577,'options':{'where':{'id':_0x326758}},'log':_0x1499('0x3')});};exports[_0x1499('0x4')]=function(_0x1b291f,_0x158134){return client[_0x1499('0x1')](_0x1499('0x5'),{'body':_0x158134,'options':{'where':{'id':_0x1b291f}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index f8f4768..169f5fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cbe=['Request','CreateMailMessage','createMailMessage','../client','create'];(function(_0x129b53,_0x2110ef){var _0x2fdc2c=function(_0x2e7e34){while(--_0x2e7e34){_0x129b53['push'](_0x129b53['shift']());}};_0x2fdc2c(++_0x2110ef);}(_0x5cbe,0x198));var _0xe5cb=function(_0x14b686,_0x31429d){_0x14b686=_0x14b686-0x0;var _0x289564=_0x5cbe[_0x14b686];return _0x289564;};'use strict';var client=require(_0xe5cb('0x0'));exports[_0xe5cb('0x1')]=function(_0x3285ed){return client[_0xe5cb('0x2')](_0xe5cb('0x3'),{'body':_0x3285ed,'log':_0xe5cb('0x4')});};
\ No newline at end of file
+var _0xab03=['create','CreateMailMessage','createMailMessage','../client'];(function(_0x5919ef,_0x28cde9){var _0xd2f76=function(_0x25ff8b){while(--_0x25ff8b){_0x5919ef['push'](_0x5919ef['shift']());}};_0xd2f76(++_0x28cde9);}(_0xab03,0x17f));var _0x3ab0=function(_0x33742a,_0xbf36c2){_0x33742a=_0x33742a-0x0;var _0xfd789a=_0xab03[_0x33742a];return _0xfd789a;};'use strict';var client=require(_0x3ab0('0x0'));exports[_0x3ab0('0x1')]=function(_0x30eab3){return client['Request'](_0x3ab0('0x2'),{'body':_0x30eab3,'log':_0x3ab0('0x3')});};
\ No newline at end of file
index 421cd0d..1ce145b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59cb=['Request','GetMailQueue','name','timeout','strategy','User','Agents','mailPause','getMailQueues','../client'];(function(_0x57643b,_0x1706fe){var _0x53a35b=function(_0x2625e8){while(--_0x2625e8){_0x57643b['push'](_0x57643b['shift']());}};_0x53a35b(++_0x1706fe);}(_0x59cb,0x1e9));var _0xb59c=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x59cb[_0x1d1779];return _0x2377e9;};'use strict';var client=require(_0xb59c('0x0'));exports['getMailQueues']=function(){return function(){return client[_0xb59c('0x1')](_0xb59c('0x2'),{'options':{'raw':![],'attributes':['id',_0xb59c('0x3'),_0xb59c('0x4'),_0xb59c('0x5')],'include':[{'model':_0xb59c('0x6'),'as':_0xb59c('0x7'),'attributes':['id',_0xb59c('0x3'),'online',_0xb59c('0x8')]}]},'log':_0xb59c('0x9')});};};
\ No newline at end of file
+var _0xde06=['strategy','User','name','online','mailPause','../client','getMailQueues','Request','GetMailQueue','timeout'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xde06,0x113));var _0x6de0=function(_0x48683a,_0x462b9b){_0x48683a=_0x48683a-0x0;var _0x5ed577=_0xde06[_0x48683a];return _0x5ed577;};'use strict';var client=require(_0x6de0('0x0'));exports[_0x6de0('0x1')]=function(){return function(){return client[_0x6de0('0x2')](_0x6de0('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x6de0('0x4'),_0x6de0('0x5')],'include':[{'model':_0x6de0('0x6'),'as':'Agents','attributes':['id',_0x6de0('0x7'),_0x6de0('0x8'),_0x6de0('0x9')]}]},'log':_0x6de0('0x1')});};};
\ No newline at end of file
index 3f35246..b64bb35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d65=['create','Request','update','UpdateMailQueueReport','DESC','../client'];(function(_0x114e08,_0x548d73){var _0x5e4831=function(_0x3b4f91){while(--_0x3b4f91){_0x114e08['push'](_0x114e08['shift']());}};_0x5e4831(++_0x548d73);}(_0x0d65,0xbf));var _0x50d6=function(_0x21d6a5,_0x58f0b5){_0x21d6a5=_0x21d6a5-0x0;var _0x2cf4f9=_0x0d65[_0x21d6a5];return _0x2cf4f9;};'use strict';var client=require(_0x50d6('0x0'));exports[_0x50d6('0x1')]=function(_0x1e0256){return client[_0x50d6('0x2')]('CreateMailQueueReport',{'body':_0x1e0256,'log':'CreateMailQueueReport'});};exports[_0x50d6('0x3')]=function(_0x493938,_0xe0d4bd){return client['Request'](_0x50d6('0x4'),{'body':_0xe0d4bd,'options':{'where':{'uniqueid':_0x493938},'order':[['id',_0x50d6('0x5')]],'limit':0x1},'log':_0x50d6('0x4')});};
\ No newline at end of file
+var _0x6c12=['UpdateMailQueueReport','../client','CreateMailQueueReport','update','Request'];(function(_0x3c15a4,_0x119e3a){var _0x2709df=function(_0x2f7fb7){while(--_0x2f7fb7){_0x3c15a4['push'](_0x3c15a4['shift']());}};_0x2709df(++_0x119e3a);}(_0x6c12,0x119));var _0x26c1=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0x6c12[_0x1a9204];return _0x17ca68;};'use strict';var client=require(_0x26c1('0x0'));exports['create']=function(_0xd7c947){return client['Request']('CreateMailQueueReport',{'body':_0xd7c947,'log':_0x26c1('0x1')});};exports[_0x26c1('0x2')]=function(_0x415fc9,_0x281c51){return client[_0x26c1('0x3')](_0x26c1('0x4'),{'body':_0x281c51,'options':{'where':{'uniqueid':_0x415fc9},'order':[['id','DESC']],'limit':0x1},'log':_0x26c1('0x4')});};
\ No newline at end of file
index 1021d01..b2e2c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9f=['addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','UpdateOpenchannelInteraction','updateOpenchannelInteraction'];(function(_0x1ac1fc,_0x5c9a6b){var _0x3c96ca=function(_0x128e61){while(--_0x128e61){_0x1ac1fc['push'](_0x1ac1fc['shift']());}};_0x3c96ca(++_0x5c9a6b);}(_0x3e9f,0x129));var _0xf3e9=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x3e9f[_0x543084];return _0x306a57;};'use strict';var client=require(_0xf3e9('0x0'));exports[_0xf3e9('0x1')]=function(_0x3a7f30,_0x5c8748){return client['Request'](_0xf3e9('0x2'),{'body':_0x5c8748,'options':{'where':{'id':_0x3a7f30}},'log':_0xf3e9('0x3')});};exports[_0xf3e9('0x4')]=function(_0x291f16,_0x42a75c){return client['Request'](_0xf3e9('0x5'),{'body':_0x42a75c,'options':{'where':{'id':_0x291f16}},'log':_0xf3e9('0x6')});};
\ No newline at end of file
+var _0xc54c=['AddTagsToOpenchannelInteraction','addTagsToChatInteraction','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request'];(function(_0x456284,_0x1e04a8){var _0x2a9f01=function(_0x440539){while(--_0x440539){_0x456284['push'](_0x456284['shift']());}};_0x2a9f01(++_0x1e04a8);}(_0xc54c,0x1d0));var _0xcc54=function(_0x4b03c9,_0x17ce03){_0x4b03c9=_0x4b03c9-0x0;var _0x161ba2=_0xc54c[_0x4b03c9];return _0x161ba2;};'use strict';var client=require('../client');exports['update']=function(_0xa37ce3,_0x2dfb8b){return client['Request'](_0xcc54('0x0'),{'body':_0x2dfb8b,'options':{'where':{'id':_0xa37ce3}},'log':_0xcc54('0x1')});};exports[_0xcc54('0x2')]=function(_0x7f26cd,_0xa0b4c5){return client[_0xcc54('0x3')](_0xcc54('0x4'),{'body':_0xa0b4c5,'options':{'where':{'id':_0x7f26cd}},'log':_0xcc54('0x5')});};
\ No newline at end of file
index 3aaa34e..9cd0b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a3=['create','Request','CreateOpenchannelMessage'];(function(_0x40632e,_0x1f7f8f){var _0x3708c4=function(_0x3fd2d1){while(--_0x3fd2d1){_0x40632e['push'](_0x40632e['shift']());}};_0x3708c4(++_0x1f7f8f);}(_0xd8a3,0xab));var _0x3d8a=function(_0x45246e,_0x1cbffb){_0x45246e=_0x45246e-0x0;var _0x194147=_0xd8a3[_0x45246e];return _0x194147;};'use strict';var client=require('../client');exports[_0x3d8a('0x0')]=function(_0x2159a9){return client[_0x3d8a('0x1')](_0x3d8a('0x2'),{'body':_0x2159a9,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x1173=['createOpenchannelMessage','../client','CreateOpenchannelMessage'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x1173,0xc1));var _0x3117=function(_0xe5cac7,_0x6c2f84){_0xe5cac7=_0xe5cac7-0x0;var _0x50df20=_0x1173[_0xe5cac7];return _0x50df20;};'use strict';var client=require(_0x3117('0x0'));exports['create']=function(_0x2082e0){return client['Request'](_0x3117('0x1'),{'body':_0x2082e0,'log':_0x3117('0x2')});};
\ No newline at end of file
index 0ded21b..c7570a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef88=['openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','timeout','strategy','User','Agents','name'];(function(_0x2ca532,_0x354e51){var _0x4c7cdb=function(_0x4dccf3){while(--_0x4dccf3){_0x2ca532['push'](_0x2ca532['shift']());}};_0x4c7cdb(++_0x354e51);}(_0xef88,0x10f));var _0x8ef8=function(_0x328130,_0x212624){_0x328130=_0x328130-0x0;var _0x446025=_0xef88[_0x328130];return _0x446025;};'use strict';var client=require('../client');exports[_0x8ef8('0x0')]=function(){return function(){return client[_0x8ef8('0x1')](_0x8ef8('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x8ef8('0x3'),_0x8ef8('0x4')],'include':[{'model':_0x8ef8('0x5'),'as':_0x8ef8('0x6'),'attributes':['id',_0x8ef8('0x7'),'online',_0x8ef8('0x8')]}]},'log':_0x8ef8('0x0')});};};
\ No newline at end of file
+var _0x1c4d=['Request','GetOpenchannelQueue','timeout','strategy','User','Agents','online','getOpenchannelQueues'];(function(_0x547d41,_0xd7369){var _0x766cec=function(_0x256a95){while(--_0x256a95){_0x547d41['push'](_0x547d41['shift']());}};_0x766cec(++_0xd7369);}(_0x1c4d,0x1d7));var _0xd1c4=function(_0x54b302,_0x24e8db){_0x54b302=_0x54b302-0x0;var _0x1abe5d=_0x1c4d[_0x54b302];return _0x1abe5d;};'use strict';var client=require('../client');exports[_0xd1c4('0x0')]=function(){return function(){return client[_0xd1c4('0x1')](_0xd1c4('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xd1c4('0x3'),_0xd1c4('0x4')],'include':[{'model':_0xd1c4('0x5'),'as':_0xd1c4('0x6'),'attributes':['id','name',_0xd1c4('0x7'),'openchannelPause']}]},'log':_0xd1c4('0x0')});};};
\ No newline at end of file
index c42f9b4..89f674f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e23=['Request','CreateOpenchannelQueueReport','update','DESC','UpdateOpenchannelQueueReport','../client'];(function(_0x5b1370,_0x5beac4){var _0xf5075d=function(_0x26aeab){while(--_0x26aeab){_0x5b1370['push'](_0x5b1370['shift']());}};_0xf5075d(++_0x5beac4);}(_0x4e23,0x173));var _0x34e2=function(_0x50eae3,_0x3bcce6){_0x50eae3=_0x50eae3-0x0;var _0x381d99=_0x4e23[_0x50eae3];return _0x381d99;};'use strict';var client=require(_0x34e2('0x0'));exports['create']=function(_0x167e5c){return client[_0x34e2('0x1')](_0x34e2('0x2'),{'body':_0x167e5c,'log':_0x34e2('0x2')});};exports[_0x34e2('0x3')]=function(_0x424158,_0x2f9eea){return client[_0x34e2('0x1')]('UpdateOpenchannelQueueReport',{'body':_0x2f9eea,'options':{'where':{'uniqueid':_0x424158},'order':[['id',_0x34e2('0x4')]],'limit':0x1},'log':_0x34e2('0x5')});};
\ No newline at end of file
+var _0xdf10=['update','UpdateOpenchannelQueueReport','create','Request','CreateOpenchannelQueueReport'];(function(_0x1a0ed9,_0x50f7ed){var _0x593d01=function(_0x488f1a){while(--_0x488f1a){_0x1a0ed9['push'](_0x1a0ed9['shift']());}};_0x593d01(++_0x50f7ed);}(_0xdf10,0xcf));var _0x0df1=function(_0x554cc7,_0x1a99a4){_0x554cc7=_0x554cc7-0x0;var _0x43fd91=_0xdf10[_0x554cc7];return _0x43fd91;};'use strict';var client=require('../client');exports[_0x0df1('0x0')]=function(_0x42f93c){return client[_0x0df1('0x1')](_0x0df1('0x2'),{'body':_0x42f93c,'log':_0x0df1('0x2')});};exports[_0x0df1('0x3')]=function(_0x3365d2,_0x568367){return client['Request'](_0x0df1('0x4'),{'body':_0x568367,'options':{'where':{'uniqueid':_0x3365d2},'order':[['id','DESC']],'limit':0x1},'log':_0x0df1('0x4')});};
\ No newline at end of file
index 671d790..7b95eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057a=['updateSmsInteraction','addTags','../client','update','Request'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x057a,0x1a6));var _0xa057=function(_0x72bfa1,_0x574014){_0x72bfa1=_0x72bfa1-0x0;var _0x5d29dd=_0x057a[_0x72bfa1];return _0x5d29dd;};'use strict';var client=require(_0xa057('0x0'));exports[_0xa057('0x1')]=function(_0x32f0b5,_0x50bfcd){return client[_0xa057('0x2')]('UpdateSmsInteraction',{'body':_0x50bfcd,'options':{'where':{'id':_0x32f0b5}},'log':_0xa057('0x3')});};exports[_0xa057('0x4')]=function(_0x5481b7,_0x2320cf){return client[_0xa057('0x2')]('AddTagsToSmsInteraction',{'body':_0x2320cf,'options':{'where':{'id':_0x5481b7}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
+var _0x5640=['../client','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction'];(function(_0x2d20bb,_0x2e4bb6){var _0x576dd9=function(_0x1d596e){while(--_0x1d596e){_0x2d20bb['push'](_0x2d20bb['shift']());}};_0x576dd9(++_0x2e4bb6);}(_0x5640,0x111));var _0x0564=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x5640[_0x502c7d];return _0x30b7ed;};'use strict';var client=require(_0x0564('0x0'));exports['update']=function(_0xaefcb6,_0x2b494e){return client[_0x0564('0x1')](_0x0564('0x2'),{'body':_0x2b494e,'options':{'where':{'id':_0xaefcb6}},'log':_0x0564('0x3')});};exports[_0x0564('0x4')]=function(_0x1cbb9d,_0x1c229d){return client[_0x0564('0x1')](_0x0564('0x5'),{'body':_0x1c229d,'options':{'where':{'id':_0x1cbb9d}},'log':_0x0564('0x6')});};
\ No newline at end of file
index bfa1e08..b162068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02fb=['CreateSmsMessage','createSmsMessage','create'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x02fb,0x104));var _0xb02f=function(_0x4b1862,_0x56d6c3){_0x4b1862=_0x4b1862-0x0;var _0x4702bc=_0x02fb[_0x4b1862];return _0x4702bc;};'use strict';var client=require('../client');exports[_0xb02f('0x0')]=function(_0x45e0bb){return client['Request'](_0xb02f('0x1'),{'body':_0x45e0bb,'log':_0xb02f('0x2')});};
\ No newline at end of file
+var _0x60dd=['../client','CreateSmsMessage','createSmsMessage'];(function(_0x5c2206,_0x1bc105){var _0xfb9e38=function(_0x7da05d){while(--_0x7da05d){_0x5c2206['push'](_0x5c2206['shift']());}};_0xfb9e38(++_0x1bc105);}(_0x60dd,0xd8));var _0xd60d=function(_0x447689,_0x3bb340){_0x447689=_0x447689-0x0;var _0x4faee1=_0x60dd[_0x447689];return _0x4faee1;};'use strict';var client=require(_0xd60d('0x0'));exports['create']=function(_0x52facd){return client['Request'](_0xd60d('0x1'),{'body':_0x52facd,'log':_0xd60d('0x2')});};
\ No newline at end of file
index b883337..e684666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','online','smsPause','../client','getSmsQueues','Request','timeout','User','Agents'];(function(_0x56e12a,_0x2436a5){var _0x336a5f=function(_0x48142a){while(--_0x48142a){_0x56e12a['push'](_0x56e12a['shift']());}};_0x336a5f(++_0x2436a5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0a9e('0x3'),'strategy'],'include':[{'model':_0x0a9e('0x4'),'as':_0x0a9e('0x5'),'attributes':['id',_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x42e435,_0x27dc76){var _0x12608d=function(_0x1513b1){while(--_0x1513b1){_0x42e435['push'](_0x42e435['shift']());}};_0x12608d(++_0x27dc76);}(_0x70e0,0x17b));var _0x070e=function(_0x462306,_0x12d758){_0x462306=_0x462306-0x0;var _0x4844b1=_0x70e0[_0x462306];return _0x4844b1;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x070e('0x3'),_0x070e('0x4')],'include':[{'model':_0x070e('0x5'),'as':_0x070e('0x6'),'attributes':['id','name',_0x070e('0x7'),'smsPause']}]},'log':_0x070e('0x1')});};};
\ No newline at end of file
index 58fb86d..eac52f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0xedd9,0xfc));var _0x9edd=function(_0x403443,_0x305524){_0x403443=_0x403443-0x0;var _0x2a5d14=_0xedd9[_0x403443];return _0x2a5d14;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
+var _0x9c44=['Request','CreateSmsQueueReport','update','UpdateSmsQueueReport'];(function(_0x10a2a8,_0x4d75ec){var _0x4afe58=function(_0x585509){while(--_0x585509){_0x10a2a8['push'](_0x10a2a8['shift']());}};_0x4afe58(++_0x4d75ec);}(_0x9c44,0x178));var _0x49c4=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x9c44[_0x167cc1];return _0x10bc4b;};'use strict';var client=require('../client');exports['create']=function(_0x1ffbbf){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'body':_0x1ffbbf,'log':_0x49c4('0x1')});};exports[_0x49c4('0x2')]=function(_0x2ad237,_0x4e0313){return client['Request'](_0x49c4('0x3'),{'body':_0x4e0313,'options':{'where':{'uniqueid':_0x2ad237},'order':[['id','DESC']],'limit':0x1},'log':_0x49c4('0x3')});};
\ No newline at end of file
index ad0d741..6aa7e0e 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(_0x51232a,_0x1b6a43){var _0x5338b7=function(_0x246efc){while(--_0x246efc){_0x51232a['push'](_0x51232a['shift']());}};_0x5338b7(++_0x1b6a43);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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(_0x44bb08,_0x430252){var _0x50a189=function(_0x4e2d1e){while(--_0x4e2d1e){_0x44bb08['push'](_0x44bb08['shift']());}};_0x50a189(++_0x430252);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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 c64e14e..48f37aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d2=['../client','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x39d2,0xf5));var _0x239d=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x39d2[_0x4154a6];return _0x3b2786;};'use strict';var client=require(_0x239d('0x0'));exports['update']=function(_0xb8a5be,_0x56b6a1){return client[_0x239d('0x1')](_0x239d('0x2'),{'body':_0x56b6a1,'options':{'where':{'id':_0xb8a5be}},'log':_0x239d('0x3')});};exports[_0x239d('0x4')]=function(_0x298c6e,_0x1f5943){return client[_0x239d('0x1')](_0x239d('0x5'),{'body':_0x1f5943,'options':{'where':{'id':_0x298c6e}},'log':_0x239d('0x6')});};
\ No newline at end of file
+var _0x7dee=['addTagsToWhatsappInteraction','../client','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x4eabdf,_0x32a512){var _0x1db9e4=function(_0x215930){while(--_0x215930){_0x4eabdf['push'](_0x4eabdf['shift']());}};_0x1db9e4(++_0x32a512);}(_0x7dee,0xb0));var _0xe7de=function(_0x45fda3,_0x80350e){_0x45fda3=_0x45fda3-0x0;var _0x3fc3da=_0x7dee[_0x45fda3];return _0x3fc3da;};'use strict';var client=require(_0xe7de('0x0'));exports['update']=function(_0x339ee2,_0x51419e){return client[_0xe7de('0x1')](_0xe7de('0x2'),{'body':_0x51419e,'options':{'where':{'id':_0x339ee2}},'log':_0xe7de('0x3')});};exports[_0xe7de('0x4')]=function(_0x4b846b,_0x12be83){return client['Request'](_0xe7de('0x5'),{'body':_0x12be83,'options':{'where':{'id':_0x4b846b}},'log':_0xe7de('0x6')});};
\ No newline at end of file
index 34e335f..47ac909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236e=['CreateWhatsappMessage','createWhatsappMessage','../client','create'];(function(_0x113cde,_0xa79d69){var _0x1c09a4=function(_0x35e50b){while(--_0x35e50b){_0x113cde['push'](_0x113cde['shift']());}};_0x1c09a4(++_0xa79d69);}(_0x236e,0x1a2));var _0xe236=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x236e[_0x5ddb1c];return _0x354adc;};'use strict';var client=require(_0xe236('0x0'));exports[_0xe236('0x1')]=function(_0x20a34d){return client['Request'](_0xe236('0x2'),{'body':_0x20a34d,'log':_0xe236('0x3')});};
\ No newline at end of file
+var _0xd604=['create','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0xf1c3fe,_0x95bb08){var _0x34781e=function(_0x401a94){while(--_0x401a94){_0xf1c3fe['push'](_0xf1c3fe['shift']());}};_0x34781e(++_0x95bb08);}(_0xd604,0xe7));var _0x4d60=function(_0x2c220a,_0x3a460f){_0x2c220a=_0x2c220a-0x0;var _0x42d51b=_0xd604[_0x2c220a];return _0x42d51b;};'use strict';var client=require(_0x4d60('0x0'));exports[_0x4d60('0x1')]=function(_0x346f74){return client['Request'](_0x4d60('0x2'),{'body':_0x346f74,'log':_0x4d60('0x3')});};
\ No newline at end of file
index 18da99f..f8de650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc11d=['Request','GetWhatsappQueue','name','timeout','User','Agents','online','whatsappPause','../client','getWhatsappQueues'];(function(_0x3447e3,_0x43f647){var _0x2f7658=function(_0x531229){while(--_0x531229){_0x3447e3['push'](_0x3447e3['shift']());}};_0x2f7658(++_0x43f647);}(_0xc11d,0x17a));var _0xdc11=function(_0x2e4af8,_0x3baec2){_0x2e4af8=_0x2e4af8-0x0;var _0x3f935a=_0xc11d[_0x2e4af8];return _0x3f935a;};'use strict';var client=require(_0xdc11('0x0'));exports[_0xdc11('0x1')]=function(){return function(){return client[_0xdc11('0x2')](_0xdc11('0x3'),{'options':{'raw':![],'attributes':['id',_0xdc11('0x4'),_0xdc11('0x5'),'strategy'],'include':[{'model':_0xdc11('0x6'),'as':_0xdc11('0x7'),'attributes':['id','name',_0xdc11('0x8'),_0xdc11('0x9')]}]},'log':_0xdc11('0x1')});};};
\ No newline at end of file
+var _0x473d=['Request','GetWhatsappQueue','timeout','strategy','User','Agents','name','online','whatsappPause','../client','getWhatsappQueues'];(function(_0xa4ec2b,_0x111fb9){var _0x4b0cf5=function(_0x52c34f){while(--_0x52c34f){_0xa4ec2b['push'](_0xa4ec2b['shift']());}};_0x4b0cf5(++_0x111fb9);}(_0x473d,0x1cc));var _0xd473=function(_0x2dea74,_0x1fe55c){_0x2dea74=_0x2dea74-0x0;var _0x489a93=_0x473d[_0x2dea74];return _0x489a93;};'use strict';var client=require(_0xd473('0x0'));exports[_0xd473('0x1')]=function(){return function(){return client[_0xd473('0x2')](_0xd473('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xd473('0x4'),_0xd473('0x5')],'include':[{'model':_0xd473('0x6'),'as':_0xd473('0x7'),'attributes':['id',_0xd473('0x8'),_0xd473('0x9'),_0xd473('0xa')]}]},'log':_0xd473('0x1')});};};
\ No newline at end of file
index 443ae4e..4facc0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbae9=['update','DESC','UpdateWhatsappQueueReport','Request','CreateWhatsappQueueReport'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0xbae9,0x134));var _0x9bae=function(_0x2ade6c,_0x2d42f2){_0x2ade6c=_0x2ade6c-0x0;var _0x2cb372=_0xbae9[_0x2ade6c];return _0x2cb372;};'use strict';var client=require('../client');exports['create']=function(_0x30d114){return client[_0x9bae('0x0')](_0x9bae('0x1'),{'body':_0x30d114,'log':_0x9bae('0x1')});};exports[_0x9bae('0x2')]=function(_0x35cf46,_0xdea9c6){return client['Request']('UpdateWhatsappQueueReport',{'body':_0xdea9c6,'options':{'where':{'uniqueid':_0x35cf46},'order':[['id',_0x9bae('0x3')]],'limit':0x1},'log':_0x9bae('0x4')});};
\ No newline at end of file
+var _0x2fa1=['../client','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC'];(function(_0x38894d,_0x1883d8){var _0x5614fe=function(_0x181989){while(--_0x181989){_0x38894d['push'](_0x38894d['shift']());}};_0x5614fe(++_0x1883d8);}(_0x2fa1,0x14a));var _0x12fa=function(_0x4702b8,_0x2f63c1){_0x4702b8=_0x4702b8-0x0;var _0x4ee3f1=_0x2fa1[_0x4702b8];return _0x4ee3f1;};'use strict';var client=require(_0x12fa('0x0'));exports['create']=function(_0x45d0ca){return client[_0x12fa('0x1')](_0x12fa('0x2'),{'body':_0x45d0ca,'log':_0x12fa('0x2')});};exports[_0x12fa('0x3')]=function(_0x5390c6,_0x1a258b){return client['Request'](_0x12fa('0x4'),{'body':_0x1a258b,'options':{'where':{'uniqueid':_0x5390c6},'order':[['id',_0x12fa('0x5')]],'limit':0x1},'log':_0x12fa('0x4')});};
\ No newline at end of file
index eaf8621..bad24c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e76=['[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','message','stop','find','agents','timeout','createQueue','channel','end','close','rules','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','string','timeout\x20is\x20a\x20number','info','format'];(function(_0x2f0869,_0x14646b){var _0x57df27=function(_0x3b45a9){while(--_0x3b45a9){_0x2f0869['push'](_0x2f0869['shift']());}};_0x57df27(++_0x14646b);}(_0x1e76,0x19d));var _0x61e7=function(_0x54420f,_0x3dcfef){_0x54420f=_0x54420f-0x0;var _0x3c9637=_0x1e76[_0x54420f];return _0x3c9637;};'use strict';var schema=require(_0x61e7('0x0'));var _=require(_0x61e7('0x1'));var util=require('util');var seqqueue=require(_0x61e7('0x2'));var logger=require('../../../../config/logger')('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':_0x61e7('0x3'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':_0x61e7('0x4')}});function writeLog(_0x1e24ce,_0xdc33b5,_0x8a8321){return logger[_0x61e7('0x5')](util[_0x61e7('0x6')](_0x61e7('0x7'),_0x1e24ce,_0xdc33b5['name'],_0x8a8321));}function handleFindAgent(_0x5aafea){return function(_0x3af54d){return _0x3af54d[_0x61e7('0x8')][_0x61e7('0x9')]()===_0x5aafea[_0x61e7('0x9')]();};}exports[_0x61e7('0xa')]=function(_0x3835a4,_0x170535,_0xc07170,_0x5dfd06){return function(_0x276040){try{var _0x4f8011={'name':_0x170535[0x0],'timeout':_0x170535[0x1]};var _0x47623d=queue[_0x61e7('0x0')](_0x4f8011,{'typecast':!![]});if(_0x47623d[_0x61e7('0xb')]){logger[_0x61e7('0xc')]('[%s][AGENT]\x20%s',_0x3835a4,_['map'](_0x47623d,_0x61e7('0xd'))['join'](',\x20'));_0x276040[_0x61e7('0xe')]();}else{var _0x1cceb4=_[_0x61e7('0xf')](_0xc07170[_0x61e7('0x10')],handleFindAgent(_0x4f8011[_0x61e7('0x8')]));if(_0x1cceb4){var _0x309f60=(_0x4f8011[_0x61e7('0x11')]||0xa)*0x3e8;var _0x345bcf,_0x43df9a;var _0x363a2b=seqqueue[_0x61e7('0x12')](_0x309f60);_0x363a2b['id']=_0x3835a4;_0x363a2b['atimeout']=_0x309f60;_0x363a2b[_0x61e7('0x13')]=_0x5dfd06['channel'];writeLog(_0x3835a4,_0x1cceb4,util[_0x61e7('0x6')]('START:%s',_0x309f60));_0xc07170['rules'][_0x3835a4]['on'](_0x61e7('0x14'),function(){logger[_0x61e7('0x5')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x3835a4);clearTimeout(_0x43df9a);_0x43df9a=undefined;_0x363a2b[_0x61e7('0x15')]();if(_0xc07170['rules'][_0x3835a4]){delete _0xc07170['rules'][_0x3835a4];}_0x276040[_0x61e7('0xe')]();});_0xc07170[_0x61e7('0x16')][_0x3835a4]['on']('complete',function(){if(_0xc07170['rules'][_0x3835a4]){delete _0xc07170[_0x61e7('0x16')][_0x3835a4];}});_0x43df9a=setTimeout(function(){logger['info'](_0x61e7('0x17'),_0x3835a4);clearTimeout(_0x43df9a);_0x363a2b[_0x61e7('0x15')]();_0x276040[_0x61e7('0x18')]();},_0x309f60);strategy[_0x61e7('0x19')](_0x363a2b,_0x1cceb4,_0xc07170,_0x5dfd06);}else{logger[_0x61e7('0xc')](_0x61e7('0x1a'),_0x3835a4,_0x4f8011[_0x61e7('0x8')]);_0x276040[_0x61e7('0xe')]();}}}catch(_0x26a1f3){console[_0x61e7('0x1b')](_0x26a1f3);logger[_0x61e7('0xc')](_0x61e7('0x1c'),_0x3835a4,_0x26a1f3[_0x61e7('0x1d')]);_0x276040[_0x61e7('0xe')]();}};};
\ No newline at end of file
+var _0x0a32=['[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','stack','validate','lodash','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','join','agents','createQueue','atimeout','channel','format','START:%s','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','rules','stop','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent'];(function(_0x5d8213,_0xeaa5b0){var _0x120493=function(_0x414814){while(--_0x414814){_0x5d8213['push'](_0x5d8213['shift']());}};_0x120493(++_0xeaa5b0);}(_0x0a32,0x1b0));var _0x20a3=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x0a32[_0x2be8c2];return _0x97f531;};'use strict';var schema=require(_0x20a3('0x0'));var _=require(_0x20a3('0x1'));var util=require('util');var seqqueue=require(_0x20a3('0x2'));var logger=require(_0x20a3('0x3'))(_0x20a3('0x4'));var strategy=require(_0x20a3('0x5'));var queue=schema({'name':{'type':_0x20a3('0x6'),'required':!![],'message':_0x20a3('0x7')},'timeout':{'type':_0x20a3('0x8'),'message':_0x20a3('0x9')}});function writeLog(_0x338bff,_0x6da72a,_0x13d808){return logger[_0x20a3('0xa')](util['format'](_0x20a3('0xb'),_0x338bff,_0x6da72a[_0x20a3('0xc')],_0x13d808));}function handleFindAgent(_0x4fee7c){return function(_0x329271){return _0x329271[_0x20a3('0xc')]['toLowerCase']()===_0x4fee7c[_0x20a3('0xd')]();};}exports[_0x20a3('0xe')]=function(_0x4ea4e8,_0x33f23a,_0x2138b6,_0x3682d5){return function(_0x10acbb){try{var _0x5a9b19={'name':_0x33f23a[0x0],'timeout':_0x33f23a[0x1]};var _0x181feb=queue['validate'](_0x5a9b19,{'typecast':!![]});if(_0x181feb[_0x20a3('0xf')]){logger[_0x20a3('0x10')](_0x20a3('0x11'),_0x4ea4e8,_[_0x20a3('0x12')](_0x181feb,_0x20a3('0x13'))[_0x20a3('0x14')](',\x20'));_0x10acbb['stop']();}else{var _0x730801=_['find'](_0x2138b6[_0x20a3('0x15')],handleFindAgent(_0x5a9b19[_0x20a3('0xc')]));if(_0x730801){var _0x17dc36=(_0x5a9b19['timeout']||0xa)*0x3e8;var _0x1c5282,_0x1e04d8;var _0x2dad18=seqqueue[_0x20a3('0x16')](_0x17dc36);_0x2dad18['id']=_0x4ea4e8;_0x2dad18[_0x20a3('0x17')]=_0x17dc36;_0x2dad18[_0x20a3('0x18')]=_0x3682d5[_0x20a3('0x18')];writeLog(_0x4ea4e8,_0x730801,util[_0x20a3('0x19')](_0x20a3('0x1a'),_0x17dc36));_0x2138b6['rules'][_0x4ea4e8]['on'](_0x20a3('0x1b'),function(){logger['info'](_0x20a3('0x1c'),_0x4ea4e8);clearTimeout(_0x1e04d8);_0x1e04d8=undefined;_0x2dad18[_0x20a3('0x1d')]();if(_0x2138b6[_0x20a3('0x1e')][_0x4ea4e8]){delete _0x2138b6['rules'][_0x4ea4e8];}_0x10acbb[_0x20a3('0x1f')]();});_0x2138b6[_0x20a3('0x1e')][_0x4ea4e8]['on'](_0x20a3('0x20'),function(){if(_0x2138b6[_0x20a3('0x1e')][_0x4ea4e8]){delete _0x2138b6[_0x20a3('0x1e')][_0x4ea4e8];}});_0x1e04d8=setTimeout(function(){logger[_0x20a3('0xa')](_0x20a3('0x21'),_0x4ea4e8);clearTimeout(_0x1e04d8);_0x2dad18[_0x20a3('0x1d')]();_0x10acbb[_0x20a3('0x22')]();},_0x17dc36);strategy[_0x20a3('0x23')](_0x2dad18,_0x730801,_0x2138b6,_0x3682d5);}else{logger['error'](_0x20a3('0x24'),_0x4ea4e8,_0x5a9b19[_0x20a3('0xc')]);_0x10acbb[_0x20a3('0x1f')]();}}}catch(_0x5e4dbc){console[_0x20a3('0x25')](_0x5e4dbc);logger[_0x20a3('0x10')]('[%s][QUEUE]\x20%s',_0x4ea4e8,_0x5e4dbc[_0x20a3('0x26')]);_0x10acbb[_0x20a3('0x1f')]();}};};
\ No newline at end of file
index 9232c76..5561252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1564=['providerName','amazonlex','providerResponse','dialogState','catch','lodash','moment','aws-sdk','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','out','channel','whatsapp','phone','interaction','chat','account','upperFirst','AccountId','isEmpty','body','getMustacheRender','Message','create','then','[%s][AMAZONLEX]\x20%s','error','stringify','finally','stop','LexRuntime','$LATEST','message','toString','postText'];(function(_0x737a1f,_0x235fef){var _0x16eba1=function(_0x292aa8){while(--_0x292aa8){_0x737a1f['push'](_0x737a1f['shift']());}};_0x16eba1(++_0x235fef);}(_0x1564,0x125));var _0x4156=function(_0x2ef2b6,_0x4814cb){_0x2ef2b6=_0x2ef2b6-0x0;var _0x5b4794=_0x1564[_0x2ef2b6];return _0x5b4794;};'use strict';var _=require(_0x4156('0x0'));var moment=require(_0x4156('0x1'));var AWS=require(_0x4156('0x2'));var utils=require(_0x4156('0x3'));var logger=require('../../../../config/logger')(_0x4156('0x4'));var rpc={'chatMessage':require(_0x4156('0x5')),'openchannelMessage':require(_0x4156('0x6')),'mailMessage':require(_0x4156('0x7')),'smsMessage':require(_0x4156('0x8')),'faxMessage':require(_0x4156('0x9')),'whatsappMessage':require(_0x4156('0xa'))};exports[_0x4156('0xb')]=function(_0x5d825b,_0x5a49d1){return function(_0x5d0d0b){try{if(!_[_0x4156('0xc')](this['interaction'][_0x4156('0xd')])){logger[_0x4156('0xe')]('[%s][AMAZONLEX]\x20%s',_0x5d825b,_0x4156('0xf'));return _0x5d0d0b[_0x4156('0x10')]();}var _0x298f81={'ContactId':this['contact']['id'],'sentAt':moment()[_0x4156('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x4156('0x12')};if(this[_0x4156('0x13')]==='sms'||this[_0x4156('0x13')]===_0x4156('0x14')){_0x298f81[_0x4156('0x15')]=this[_0x4156('0x16')][_0x4156('0x15')];}var _0x45d86d=this[_0x4156('0x13')];if(_0x45d86d===_0x4156('0x17')){_0x298f81['ChatWebsiteId']=this[_0x4156('0x18')]['id'];}else{_0x298f81[_[_0x4156('0x19')](_0x45d86d)+_0x4156('0x1a')]=this[_0x4156('0x18')]['id'];}_0x298f81[_[_0x4156('0x19')](_0x45d86d)+'InteractionId']=this[_0x4156('0x16')]['id'];if(this['interaction']['created']){var _0x44a70c=_0x5a49d1[0x4];if(!_[_0x4156('0x1b')](_0x44a70c)){_0x298f81[_0x4156('0x1c')]=utils[_0x4156('0x1d')](_0x44a70c,this);return rpc[_0x45d86d+_0x4156('0x1e')][_0x4156('0x1f')](_0x298f81)[_0x4156('0x20')](function(_0x73e846){logger[_0x4156('0xe')](_0x4156('0x21'),_0x5d825b,_0x298f81[_0x4156('0x1c')]);})['catch'](function(_0x267626){logger[_0x4156('0x22')](_0x4156('0x21'),_0x5d825b,JSON[_0x4156('0x23')](_0x267626));})[_0x4156('0x24')](function(){logger[_0x4156('0xe')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x5d825b);_0x5d0d0b['stop']();});}else{logger[_0x4156('0xe')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x5d825b);_0x5d0d0b[_0x4156('0x25')]();}}else{var _0x3d3dff=this;var _0x1d4199=new AWS[(_0x4156('0x26'))]({'accessKeyId':_0x5a49d1[0x0],'secretAccessKey':_0x5a49d1[0x1],'region':_0x5a49d1[0x2]});var _0x65d7ed={'botAlias':_0x4156('0x27'),'botName':_0x5a49d1[0x3],'inputText':this[_0x4156('0x28')]['body'],'userId':this[_0x4156('0x13')]+':'+this[_0x4156('0x16')]['id'][_0x4156('0x29')]()};_0x1d4199[_0x4156('0x2a')](_0x65d7ed,function(_0x1fdee7,_0x36b49f){if(_0x1fdee7){logger[_0x4156('0x22')](_0x4156('0x21'),_0x5d825b,_0x1fdee7[_0x4156('0x28')]);_0x5d0d0b[_0x4156('0x10')]();}else if(_0x36b49f&&_0x36b49f[_0x4156('0x28')]){_0x3d3dff['body']['amazonlex']=_0x36b49f;_0x298f81[_0x4156('0x1c')]=_0x36b49f[_0x4156('0x28')];_0x298f81[_0x4156('0x2b')]=_0x4156('0x2c');_0x298f81[_0x4156('0x2d')]=JSON[_0x4156('0x23')](_0x36b49f);return rpc[_0x45d86d+_0x4156('0x1e')][_0x4156('0x1f')](_0x298f81)[_0x4156('0x20')](function(_0x31fa9b){logger[_0x4156('0xe')]('[%s][AMAZONLEX]\x20%s',_0x5d825b,_0x298f81['body']);if(_0x36b49f[_0x4156('0x2e')]=='Failed'){_0x5d0d0b[_0x4156('0x10')]();}else{_0x5d0d0b[_0x4156('0x25')]();}})[_0x4156('0x2f')](function(_0x2c1a21){logger['error'](_0x4156('0x21'),_0x5d825b,JSON[_0x4156('0x23')](_0x2c1a21));_0x5d0d0b[_0x4156('0x10')]();});}else{_0x5d0d0b['next']();}});}}catch(_0x389971){logger[_0x4156('0x22')](_0x4156('0x21'),_0x5d825b,JSON[_0x4156('0x23')](_0x389971));_0x5d0d0b[_0x4156('0x25')]();}};};
\ No newline at end of file
+var _0xfd49=['../../rpc/faxMessage','consequence','isNil','info','[%s][AMAZONLEX]\x20%s','next','out','channel','sms','whatsapp','phone','interaction','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','isEmpty','body','getMustacheRender','Message','create','then','catch','error','stringify','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','toString','postText','amazonlex','providerResponse','Failed','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage'];(function(_0xad4e5,_0x2d32f3){var _0x30c450=function(_0xbcf6ca){while(--_0xbcf6ca){_0xad4e5['push'](_0xad4e5['shift']());}};_0x30c450(++_0x2d32f3);}(_0xfd49,0x1d2));var _0x9fd4=function(_0x2a0555,_0x1407ba){_0x2a0555=_0x2a0555-0x0;var _0x25e012=_0xfd49[_0x2a0555];return _0x25e012;};'use strict';var _=require(_0x9fd4('0x0'));var moment=require('moment');var AWS=require('aws-sdk');var utils=require(_0x9fd4('0x1'));var logger=require(_0x9fd4('0x2'))(_0x9fd4('0x3'));var rpc={'chatMessage':require(_0x9fd4('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x9fd4('0x5')),'smsMessage':require(_0x9fd4('0x6')),'faxMessage':require(_0x9fd4('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x9fd4('0x8')]=function(_0x379fef,_0x120757){return function(_0x4ca5ad){try{if(!_[_0x9fd4('0x9')](this['interaction']['UserId'])){logger[_0x9fd4('0xa')](_0x9fd4('0xb'),_0x379fef,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x4ca5ad[_0x9fd4('0xc')]();}var _0x27f041={'ContactId':this['contact']['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x9fd4('0xd')};if(this[_0x9fd4('0xe')]===_0x9fd4('0xf')||this[_0x9fd4('0xe')]===_0x9fd4('0x10')){_0x27f041[_0x9fd4('0x11')]=this[_0x9fd4('0x12')][_0x9fd4('0x11')];}var _0x1e73fb=this[_0x9fd4('0xe')];if(_0x1e73fb==='chat'){_0x27f041[_0x9fd4('0x13')]=this[_0x9fd4('0x14')]['id'];}else{_0x27f041[_['upperFirst'](_0x1e73fb)+_0x9fd4('0x15')]=this[_0x9fd4('0x14')]['id'];}_0x27f041[_[_0x9fd4('0x16')](_0x1e73fb)+_0x9fd4('0x17')]=this['interaction']['id'];if(this[_0x9fd4('0x12')]['created']){var _0x5c2613=_0x120757[0x4];if(!_[_0x9fd4('0x18')](_0x5c2613)){_0x27f041[_0x9fd4('0x19')]=utils[_0x9fd4('0x1a')](_0x5c2613,this);return rpc[_0x1e73fb+_0x9fd4('0x1b')][_0x9fd4('0x1c')](_0x27f041)[_0x9fd4('0x1d')](function(_0x5d7605){logger[_0x9fd4('0xa')](_0x9fd4('0xb'),_0x379fef,_0x27f041[_0x9fd4('0x19')]);})[_0x9fd4('0x1e')](function(_0x4961bb){logger[_0x9fd4('0x1f')](_0x9fd4('0xb'),_0x379fef,JSON[_0x9fd4('0x20')](_0x4961bb));})['finally'](function(){logger[_0x9fd4('0xa')](_0x9fd4('0x21'),_0x379fef);_0x4ca5ad[_0x9fd4('0x22')]();});}else{logger[_0x9fd4('0xa')](_0x9fd4('0x23'),_0x379fef);_0x4ca5ad[_0x9fd4('0x22')]();}}else{var _0x5d2e8e=this;var _0x259788=new AWS[(_0x9fd4('0x24'))]({'accessKeyId':_0x120757[0x0],'secretAccessKey':_0x120757[0x1],'region':_0x120757[0x2]});var _0x3af36c={'botAlias':'$LATEST','botName':_0x120757[0x3],'inputText':this[_0x9fd4('0x25')][_0x9fd4('0x19')],'userId':this['channel']+':'+this[_0x9fd4('0x12')]['id'][_0x9fd4('0x26')]()};_0x259788[_0x9fd4('0x27')](_0x3af36c,function(_0x76a767,_0x2f9c60){if(_0x76a767){logger[_0x9fd4('0x1f')]('[%s][AMAZONLEX]\x20%s',_0x379fef,_0x76a767[_0x9fd4('0x25')]);_0x4ca5ad[_0x9fd4('0xc')]();}else if(_0x2f9c60&&_0x2f9c60['message']){_0x5d2e8e[_0x9fd4('0x19')][_0x9fd4('0x28')]=_0x2f9c60;_0x27f041[_0x9fd4('0x19')]=_0x2f9c60[_0x9fd4('0x25')];_0x27f041['providerName']=_0x9fd4('0x28');_0x27f041[_0x9fd4('0x29')]=JSON['stringify'](_0x2f9c60);return rpc[_0x1e73fb+_0x9fd4('0x1b')][_0x9fd4('0x1c')](_0x27f041)['then'](function(_0x2bf839){logger[_0x9fd4('0xa')](_0x9fd4('0xb'),_0x379fef,_0x27f041['body']);if(_0x2f9c60['dialogState']==_0x9fd4('0x2a')){_0x4ca5ad['next']();}else{_0x4ca5ad[_0x9fd4('0x22')]();}})[_0x9fd4('0x1e')](function(_0x5a1620){logger[_0x9fd4('0x1f')](_0x9fd4('0xb'),_0x379fef,JSON[_0x9fd4('0x20')](_0x5a1620));_0x4ca5ad['next']();});}else{_0x4ca5ad[_0x9fd4('0xc')]();}});}}catch(_0xdc2f5c){logger['error'](_0x9fd4('0xb'),_0x379fef,JSON['stringify'](_0xdc2f5c));_0x4ca5ad[_0x9fd4('0x22')]();}};};
\ No newline at end of file
index f42a523..9c0beb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5068=['./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','next','interaction','created','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','autoreplyExecuted','contact','format','YYYY-MM-DD\x20HH:mm:ss','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','smtpOptions','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','then','catch','error','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','resolve','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment'];(function(_0x5c01a2,_0x3772c1){var _0x10ccda=function(_0x462177){while(--_0x462177){_0x5c01a2['push'](_0x5c01a2['shift']());}};_0x10ccda(++_0x3772c1);}(_0x5068,0x126));var _0x8506=function(_0x392b18,_0x359cdf){_0x392b18=_0x392b18-0x0;var _0x143465=_0x5068[_0x392b18];return _0x143465;};'use strict';var _=require(_0x8506('0x0'));var moment=require(_0x8506('0x1'));var utils=require(_0x8506('0x2'));var logger=require(_0x8506('0x3'))(_0x8506('0x4'));var rpc={'chatMessage':require(_0x8506('0x5')),'openchannelMessage':require(_0x8506('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x8506('0x7')),'whatsappMessage':require(_0x8506('0x8')),'chatInteraction':require(_0x8506('0x9')),'openchannelInteraction':require(_0x8506('0xa')),'mailInteraction':require(_0x8506('0xb')),'smsInteraction':require(_0x8506('0xc')),'faxInteraction':require(_0x8506('0xd')),'whatsappInteraction':require(_0x8506('0xe'))};var mailRpc=require(_0x8506('0xf'));exports[_0x8506('0x10')]=function(_0x14c153,_0x50b534,_0x2108ac,_0x1cef7b){return function(_0x2e9413){try{var _0x34ffa4=this[_0x8506('0x11')];if(_0x34ffa4===_0x8506('0x12')&&_0x1cef7b[_0x8506('0x13')][_0x8506('0x14')]){logger['info']('[%s][AUTOREPLY]\x20%s',_0x14c153,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x2e9413[_0x8506('0x15')]();}if(_0x50b534[0x0]==='1'&&(_['isNil'](this[_0x8506('0x16')][_0x8506('0x17')])||!this[_0x8506('0x16')][_0x8506('0x17')])){logger[_0x8506('0x18')](_0x8506('0x19'),_0x14c153,_0x8506('0x1a'));return _0x2e9413[_0x8506('0x15')]();}if(_0x50b534[0x0]==='2'&&this[_0x8506('0x16')][_0x8506('0x1b')]){logger[_0x8506('0x18')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x14c153,'One\x20Time\x20already\x20sent');return _0x2e9413[_0x8506('0x15')]();}var _0x3c2c94={'ContactId':this[_0x8506('0x1c')]['id'],'sentAt':moment()[_0x8506('0x1d')](_0x8506('0x1e')),'direction':'out'};if(this['channel']===_0x8506('0x12')){_0x3c2c94['body']=utils[_0x8506('0x1f')](_0x50b534[0x2],this);}else{_0x3c2c94[_0x8506('0x13')]=utils[_0x8506('0x1f')](_0x50b534[0x1],this);}if(this[_0x8506('0x20')]){_0x3c2c94['to']=this[_0x8506('0x20')]['from']||'';if(this[_0x8506('0x11')]===_0x8506('0x12')&&_0x50b534[0x1]==='1'){_0x3c2c94['cc']=this[_0x8506('0x20')]['cc']||'';}_0x3c2c94[_0x8506('0x21')]=this[_0x8506('0x20')]['to']||'';_0x3c2c94[_0x8506('0x22')]=this['message'][_0x8506('0x22')]||'';_0x3c2c94[_0x8506('0x23')]=!![];if(this[_0x8506('0x20')]['subject']){_0x3c2c94[_0x8506('0x24')]='';_0x3c2c94[_0x8506('0x24')]+=_[_0x8506('0x25')](this['message'][_0x8506('0x24')],_0x8506('0x26'))?'':_0x8506('0x27');_0x3c2c94[_0x8506('0x24')]+=this[_0x8506('0x20')][_0x8506('0x24')];}}if(this[_0x8506('0x11')]===_0x8506('0x28')){_0x3c2c94[_0x8506('0x29')]=this['account']['id'];}else{_0x3c2c94[_[_0x8506('0x2a')](this['channel'])+_0x8506('0x2b')]=this[_0x8506('0x2c')]['id'];}_0x3c2c94[_[_0x8506('0x2a')](this[_0x8506('0x11')])+_0x8506('0x2d')]=this[_0x8506('0x16')]['id'];var _0x562e0f=this['interaction'];if(rpc[this['channel']+_0x8506('0x2e')]){if(this[_0x8506('0x11')]===_0x8506('0x12')){_0x3c2c94[_0x8506('0x2f')]=this[_0x8506('0x20')][_0x8506('0x30')];_0x3c2c94[_0x8506('0x31')]=_0x8506('0x32')+_['replace'](_0x3c2c94[_0x8506('0x13')],_0x8506('0x33'),_0x8506('0x34'))+_0x8506('0x35');_0x3c2c94[_0x8506('0x36')]={'Auto-Submitted':_0x8506('0x37'),'X-Auto-Response-Suppress':_0x8506('0x38'),'Precedence':_0x8506('0x39')};return mailRpc[_0x8506('0x3a')](this[_0x8506('0x2c')][_0x8506('0x3b')],_0x3c2c94)['then'](function(_0x2f8f18){logger[_0x8506('0x18')](_0x8506('0x3c'),_0x14c153);_0x3c2c94[_0x8506('0x30')]=_0x2f8f18[_0x8506('0x20')]['messageId'];return rpc[_0x34ffa4+_0x8506('0x2e')][_0x8506('0x3d')](_0x3c2c94);})[_0x8506('0x3e')](function(_0x308368){logger[_0x8506('0x18')](_0x8506('0x19'),_0x14c153,JSON['stringify'](_0x308368));})[_0x8506('0x3f')](function(_0x360322){logger[_0x8506('0x40')](_0x8506('0x41'),_0x14c153,JSON[_0x8506('0x42')](_0x360322));})[_0x8506('0x43')](function(){Promise[_0x8506('0x44')]()[_0x8506('0x3e')](function(){if(_0x50b534[0x0]!=='2'||_0x562e0f[_0x8506('0x1b')])return;return rpc[_0x34ffa4+_0x8506('0x45')][_0x8506('0x46')](_0x562e0f['id'],{'autoreplyExecuted':!![]})[_0x8506('0x3e')](function(_0x151e14){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x14c153,JSON['stringify'](_0x151e14));})[_0x8506('0x3f')](function(_0x143bc9){logger['error'](_0x8506('0x47'),_0x14c153,JSON[_0x8506('0x42')](_0x143bc9));});})[_0x8506('0x3e')](function(){_0x2e9413[_0x8506('0x15')]();});});}else{return rpc[this[_0x8506('0x11')]+_0x8506('0x2e')][_0x8506('0x3d')](_0x3c2c94)[_0x8506('0x3e')](function(){logger['info'](_0x8506('0x19'),_0x14c153,_0x3c2c94[_0x8506('0x13')]);})['catch'](function(_0x5b3157){logger['error'](_0x8506('0x19'),_0x14c153,JSON['stringify'](_0x5b3157));})[_0x8506('0x43')](function(){Promise[_0x8506('0x44')]()[_0x8506('0x3e')](function(){if(_0x50b534[0x0]!=='2'||_0x562e0f[_0x8506('0x1b')])return;return rpc[_0x34ffa4+'Interaction'][_0x8506('0x46')](_0x562e0f['id'],{'autoreplyExecuted':!![]})[_0x8506('0x3e')](function(_0x260dda){logger['info'](_0x8506('0x48'),_0x14c153,JSON['stringify'](_0x260dda));})[_0x8506('0x3f')](function(_0xb43f7d){logger[_0x8506('0x40')](_0x8506('0x47'),_0x14c153,JSON[_0x8506('0x42')](_0xb43f7d));});})[_0x8506('0x3e')](function(){_0x2e9413[_0x8506('0x15')]();});});}}}catch(_0x17bdc7){logger[_0x8506('0x40')](_0x8506('0x19'),_0x14c153,JSON[_0x8506('0x42')](_0x17bdc7));_0x2e9413[_0x8506('0x49')]();}};};
\ No newline at end of file
+var _0xed5a=['../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','format','out','channel','getMustacheRender','message','from','phone','read','subject','Re:','chat','ChatWebsiteId','account','InteractionId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','auto-replied','All','auto_reply','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','then','stringify','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','autoreplyExecuted','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xed5a,0x13b));var _0xaed5=function(_0x3203a1,_0x46c498){_0x3203a1=_0x3203a1-0x0;var _0x24215e=_0xed5a[_0x3203a1];return _0x24215e;};'use strict';var _=require('lodash');var moment=require(_0xaed5('0x0'));var utils=require(_0xaed5('0x1'));var logger=require(_0xaed5('0x2'))(_0xaed5('0x3'));var rpc={'chatMessage':require(_0xaed5('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xaed5('0x5')),'smsMessage':require(_0xaed5('0x6')),'faxMessage':require(_0xaed5('0x7')),'whatsappMessage':require(_0xaed5('0x8')),'chatInteraction':require(_0xaed5('0x9')),'openchannelInteraction':require(_0xaed5('0xa')),'mailInteraction':require(_0xaed5('0xb')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xaed5('0xc')),'whatsappInteraction':require(_0xaed5('0xd'))};var mailRpc=require(_0xaed5('0xe'));exports['consequence']=function(_0x4324cf,_0xdbae61,_0x361dad,_0x1104c4){return function(_0x4e83a0){try{var _0x56fe83=this['channel'];if(_0x56fe83===_0xaed5('0xf')&&_0x1104c4[_0xaed5('0x10')][_0xaed5('0x11')]){logger[_0xaed5('0x12')](_0xaed5('0x13'),_0x4324cf,_0xaed5('0x14'));return _0x4e83a0[_0xaed5('0x15')]();}if(_0xdbae61[0x0]==='1'&&(_[_0xaed5('0x16')](this[_0xaed5('0x17')][_0xaed5('0x18')])||!this[_0xaed5('0x17')][_0xaed5('0x18')])){logger[_0xaed5('0x12')](_0xaed5('0x13'),_0x4324cf,'Autoreply\x20already\x20sent');return _0x4e83a0['next']();}if(_0xdbae61[0x0]==='2'&&this[_0xaed5('0x17')]['autoreplyExecuted']){logger[_0xaed5('0x12')](_0xaed5('0x19'),_0x4324cf,_0xaed5('0x1a'));return _0x4e83a0[_0xaed5('0x15')]();}var _0x135d28={'ContactId':this['contact']['id'],'sentAt':moment()[_0xaed5('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xaed5('0x1c')};if(this[_0xaed5('0x1d')]===_0xaed5('0xf')){_0x135d28[_0xaed5('0x10')]=utils['getMustacheRender'](_0xdbae61[0x2],this);}else{_0x135d28[_0xaed5('0x10')]=utils[_0xaed5('0x1e')](_0xdbae61[0x1],this);}if(this[_0xaed5('0x1f')]){_0x135d28['to']=this[_0xaed5('0x1f')][_0xaed5('0x20')]||'';if(this[_0xaed5('0x1d')]===_0xaed5('0xf')&&_0xdbae61[0x1]==='1'){_0x135d28['cc']=this[_0xaed5('0x1f')]['cc']||'';}_0x135d28[_0xaed5('0x20')]=this[_0xaed5('0x1f')]['to']||'';_0x135d28[_0xaed5('0x21')]=this[_0xaed5('0x1f')]['phone']||'';_0x135d28[_0xaed5('0x22')]=!![];if(this[_0xaed5('0x1f')][_0xaed5('0x23')]){_0x135d28[_0xaed5('0x23')]='';_0x135d28['subject']+=_['startsWith'](this[_0xaed5('0x1f')][_0xaed5('0x23')],_0xaed5('0x24'))?'':'Re:\x20';_0x135d28['subject']+=this[_0xaed5('0x1f')][_0xaed5('0x23')];}}if(this[_0xaed5('0x1d')]===_0xaed5('0x25')){_0x135d28[_0xaed5('0x26')]=this[_0xaed5('0x27')]['id'];}else{_0x135d28[_['upperFirst'](this[_0xaed5('0x1d')])+'AccountId']=this['account']['id'];}_0x135d28[_['upperFirst'](this[_0xaed5('0x1d')])+_0xaed5('0x28')]=this[_0xaed5('0x17')]['id'];var _0x8ac82=this[_0xaed5('0x17')];if(rpc[this[_0xaed5('0x1d')]+_0xaed5('0x29')]){if(this[_0xaed5('0x1d')]===_0xaed5('0xf')){_0x135d28[_0xaed5('0x2a')]=this['message'][_0xaed5('0x2b')];_0x135d28[_0xaed5('0x2c')]=_0xaed5('0x2d')+_[_0xaed5('0x2e')](_0x135d28[_0xaed5('0x10')],'<div\x20id=\x22xm-mail-content\x22',_0xaed5('0x2f'))+'</div>';_0x135d28['headers']={'Auto-Submitted':_0xaed5('0x30'),'X-Auto-Response-Suppress':_0xaed5('0x31'),'Precedence':_0xaed5('0x32')};return mailRpc['sendMailMessage'](this[_0xaed5('0x27')]['smtpOptions'],_0x135d28)['then'](function(_0x101867){logger[_0xaed5('0x12')](_0xaed5('0x33'),_0x4324cf);_0x135d28['messageId']=_0x101867[_0xaed5('0x1f')][_0xaed5('0x2b')];return rpc[_0x56fe83+_0xaed5('0x29')][_0xaed5('0x34')](_0x135d28);})[_0xaed5('0x35')](function(_0x275d4b){logger[_0xaed5('0x12')](_0xaed5('0x13'),_0x4324cf,JSON[_0xaed5('0x36')](_0x275d4b));})['catch'](function(_0x535943){logger[_0xaed5('0x37')](_0xaed5('0x38'),_0x4324cf,JSON['stringify'](_0x535943));})[_0xaed5('0x39')](function(){Promise[_0xaed5('0x3a')]()[_0xaed5('0x35')](function(){if(_0xdbae61[0x0]!=='2'||_0x8ac82[_0xaed5('0x3b')])return;return rpc[_0x56fe83+_0xaed5('0x3c')][_0xaed5('0x3d')](_0x8ac82['id'],{'autoreplyExecuted':!![]})[_0xaed5('0x35')](function(_0x31e3e6){logger[_0xaed5('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x4324cf,JSON[_0xaed5('0x36')](_0x31e3e6));})[_0xaed5('0x3e')](function(_0x1d4f4d){logger[_0xaed5('0x37')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x4324cf,JSON[_0xaed5('0x36')](_0x1d4f4d));});})['then'](function(){_0x4e83a0[_0xaed5('0x15')]();});});}else{return rpc[this['channel']+_0xaed5('0x29')][_0xaed5('0x34')](_0x135d28)[_0xaed5('0x35')](function(){logger[_0xaed5('0x12')](_0xaed5('0x13'),_0x4324cf,_0x135d28[_0xaed5('0x10')]);})[_0xaed5('0x3e')](function(_0x22a9c0){logger[_0xaed5('0x37')]('[%s][AUTOREPLY]\x20%s',_0x4324cf,JSON[_0xaed5('0x36')](_0x22a9c0));})[_0xaed5('0x39')](function(){Promise[_0xaed5('0x3a')]()['then'](function(){if(_0xdbae61[0x0]!=='2'||_0x8ac82[_0xaed5('0x3b')])return;return rpc[_0x56fe83+_0xaed5('0x3c')][_0xaed5('0x3d')](_0x8ac82['id'],{'autoreplyExecuted':!![]})[_0xaed5('0x35')](function(_0x3cd66b){logger[_0xaed5('0x12')](_0xaed5('0x19'),_0x4324cf,JSON[_0xaed5('0x36')](_0x3cd66b));})[_0xaed5('0x3e')](function(_0x8d027a){logger[_0xaed5('0x37')](_0xaed5('0x3f'),_0x4324cf,JSON[_0xaed5('0x36')](_0x8d027a));});})[_0xaed5('0x35')](function(){_0x4e83a0[_0xaed5('0x15')]();});});}}}catch(_0x43d0f9){logger['error'](_0xaed5('0x13'),_0x4324cf,JSON[_0xaed5('0x36')](_0x43d0f9));_0x4e83a0[_0xaed5('0x40')]();}};};
\ No newline at end of file
index 3678249..3cd9bfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e45=['../../rpc/whatsappInteraction','info','format','system','Interaction','channel','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction'];(function(_0x1cb3ed,_0x35f683){var _0xbbe018=function(_0x267670){while(--_0x267670){_0x1cb3ed['push'](_0x1cb3ed['shift']());}};_0xbbe018(++_0x35f683);}(_0x9e45,0xdf));var _0x59e4=function(_0x11b547,_0x5c83eb){_0x11b547=_0x11b547-0x0;var _0x4253c4=_0x9e45[_0x11b547];return _0x4253c4;};'use strict';var moment=require(_0x59e4('0x0'));var logger=require('../../../../config/logger')(_0x59e4('0x1'));var rpc={'chatInteraction':require(_0x59e4('0x2')),'openchannelInteraction':require(_0x59e4('0x3')),'smsInteraction':require(_0x59e4('0x4')),'mailInteraction':require(_0x59e4('0x5')),'faxInteraction':require(_0x59e4('0x6')),'whatsappInteraction':require(_0x59e4('0x7'))};exports['consequence']=function(_0x1b953f,_0x530a5b,_0x14d712,_0x161dbc){return function(_0x2a13eb){try{logger[_0x59e4('0x8')]('[%s][CLOSE]\x20reason\x20%s',_0x1b953f,_0x530a5b[0x0]);var _0x3981c0={'closed':0x1,'closedAt':moment()[_0x59e4('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x59e4('0xa'),'disposition':_0x530a5b[0x0]};if(rpc[_0x161dbc['channel']+_0x59e4('0xb')]){rpc[_0x161dbc[_0x59e4('0xc')]+_0x59e4('0xb')][_0x59e4('0xd')](_0x161dbc[_0x59e4('0xe')]['id'],_0x3981c0)[_0x59e4('0xf')](function(_0x4645a5){logger[_0x59e4('0x8')](_0x59e4('0x10'),_0x1b953f,_0x161dbc[_0x59e4('0xe')]['id']);})[_0x59e4('0x11')](function(_0x1ab353){logger[_0x59e4('0x12')](_0x59e4('0x13'),_0x1b953f,JSON[_0x59e4('0x14')](_0x1ab353));})[_0x59e4('0x15')](function(){_0x2a13eb['stop']();});}}catch(_0x4f0931){logger[_0x59e4('0x12')]('[%s][CLOSE]\x20%s',_0x1b953f,JSON[_0x59e4('0x14')](_0x4f0931));_0x2a13eb[_0x59e4('0x16')]();}};};
\ No newline at end of file
+var _0xa25a=['routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','[%s][CLOSE]\x20%s','stringify','finally','stop','error','../../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa25a,0x14f));var _0xaa25=function(_0x47c7ad,_0x39c900){_0x47c7ad=_0x47c7ad-0x0;var _0x1ed093=_0xa25a[_0x47c7ad];return _0x1ed093;};'use strict';var moment=require('moment');var logger=require(_0xaa25('0x0'))(_0xaa25('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xaa25('0x2')),'smsInteraction':require(_0xaa25('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xaa25('0x4')),'whatsappInteraction':require(_0xaa25('0x5'))};exports[_0xaa25('0x6')]=function(_0x3878f5,_0x2bada9,_0x3a7115,_0x14a4dd){return function(_0x2f0c14){try{logger[_0xaa25('0x7')](_0xaa25('0x8'),_0x3878f5,_0x2bada9[0x0]);var _0x4b2e2a={'closed':0x1,'closedAt':moment()[_0xaa25('0x9')](_0xaa25('0xa')),'closeReason':_0xaa25('0xb'),'disposition':_0x2bada9[0x0]};if(rpc[_0x14a4dd[_0xaa25('0xc')]+_0xaa25('0xd')]){rpc[_0x14a4dd[_0xaa25('0xc')]+_0xaa25('0xd')][_0xaa25('0xe')](_0x14a4dd[_0xaa25('0xf')]['id'],_0x4b2e2a)[_0xaa25('0x10')](function(_0x42435e){logger[_0xaa25('0x7')](_0xaa25('0x11'),_0x3878f5,_0x14a4dd[_0xaa25('0xf')]['id']);})[_0xaa25('0x12')](function(_0x4bf26b){logger['error'](_0xaa25('0x13'),_0x3878f5,JSON[_0xaa25('0x14')](_0x4bf26b));})[_0xaa25('0x15')](function(){_0x2f0c14[_0xaa25('0x16')]();});}}catch(_0x1dd238){logger[_0xaa25('0x17')](_0xaa25('0x13'),_0x3878f5,JSON[_0xaa25('0x14')](_0x1dd238));_0x2f0c14[_0xaa25('0x16')]();}};};
\ No newline at end of file
index c46b29a..ada9380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67d1=['YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','create','catch','error','stringify','finally','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','body','dialogflow','fulfillment','speech','providerName','providerResponse','then','result','endConversation','moment','apiai-promise','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x67d1,0xf1));var _0x167d=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x67d1[_0x819464];return _0x49dcc0;};'use strict';var _=require('lodash');var moment=require(_0x167d('0x0'));var apiai=require(_0x167d('0x1'));var md5=require('md5');var utils=require(_0x167d('0x2'));var logger=require(_0x167d('0x3'))(_0x167d('0x4'));var rpc={'chatMessage':require(_0x167d('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x167d('0x6')),'smsMessage':require(_0x167d('0x7')),'faxMessage':require(_0x167d('0x8')),'whatsappMessage':require(_0x167d('0x9'))};exports['consequence']=function(_0x737b3f,_0x546152){return function(_0x56a2b6){try{if(!_[_0x167d('0xa')](this[_0x167d('0xb')][_0x167d('0xc')])){logger[_0x167d('0xd')](_0x167d('0xe'),_0x737b3f,_0x167d('0xf'));return _0x56a2b6[_0x167d('0x10')]();}var _0x5904cb={'ContactId':this[_0x167d('0x11')]['id'],'sentAt':moment()[_0x167d('0x12')](_0x167d('0x13')),'direction':_0x167d('0x14')};if(this[_0x167d('0x15')]===_0x167d('0x16')||this['channel']===_0x167d('0x17')){_0x5904cb['phone']=this[_0x167d('0xb')][_0x167d('0x18')];}var _0x4f0ce6=this[_0x167d('0x15')];if(_0x4f0ce6===_0x167d('0x19')){_0x5904cb[_0x167d('0x1a')]=this[_0x167d('0x1b')]['id'];}else{_0x5904cb[_[_0x167d('0x1c')](_0x4f0ce6)+'AccountId']=this['account']['id'];}_0x5904cb[_[_0x167d('0x1c')](_0x4f0ce6)+_0x167d('0x1d')]=this[_0x167d('0xb')]['id'];if(this['interaction'][_0x167d('0x1e')]){var _0x47ee94=_0x546152[0x2];if(!_[_0x167d('0x1f')](_0x47ee94)){_0x5904cb['body']=utils[_0x167d('0x20')](_0x47ee94,this);return rpc[_0x4f0ce6+_0x167d('0x21')][_0x167d('0x22')](_0x5904cb)['then'](function(_0x6db64f){logger[_0x167d('0xd')](_0x167d('0xe'),_0x737b3f,_0x5904cb['body']);})[_0x167d('0x23')](function(_0x2dd80f){logger[_0x167d('0x24')](_0x167d('0xe'),_0x737b3f,JSON[_0x167d('0x25')](_0x2dd80f));})[_0x167d('0x26')](function(){logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x737b3f);_0x56a2b6[_0x167d('0x27')]();});}else{logger['info'](_0x167d('0x28'),_0x737b3f);_0x56a2b6[_0x167d('0x27')]();}}else{var _0x4f70d6=this;var _0x595516=apiai(_0x546152[0x0],{'language':_0x546152[0x1]||'en'});return _0x595516[_0x167d('0x29')](this[_0x167d('0x2a')][_0x167d('0x2b')],{'sessionId':md5(this[_0x167d('0xb')]['id'])})['then'](function(_0x1bbe44){_0x4f70d6[_0x167d('0x2b')][_0x167d('0x2c')]=_0x1bbe44;_0x5904cb[_0x167d('0x2b')]=_0x1bbe44['result'][_0x167d('0x2d')][_0x167d('0x2e')];_0x5904cb[_0x167d('0x2f')]=_0x167d('0x2c');_0x5904cb[_0x167d('0x30')]=JSON['stringify'](_0x1bbe44);return rpc[_0x4f0ce6+_0x167d('0x21')]['create'](_0x5904cb)[_0x167d('0x31')](function(_0x143a31){logger[_0x167d('0xd')](_0x167d('0xe'),_0x737b3f,_0x5904cb[_0x167d('0x2b')]);if(_0x1bbe44[_0x167d('0x32')]['metadata'][_0x167d('0x33')]){_0x56a2b6['next']();}else{_0x56a2b6[_0x167d('0x27')]();}})[_0x167d('0x23')](function(_0x526b8e){logger[_0x167d('0x24')](_0x167d('0xe'),_0x737b3f,JSON['stringify'](_0x526b8e));_0x56a2b6[_0x167d('0x10')]();});})['catch'](function(_0x4c0956){logger[_0x167d('0x24')](_0x167d('0xe'),_0x737b3f,_0x4c0956[_0x167d('0x2a')]);_0x56a2b6['next']();});}}catch(_0x511118){logger[_0x167d('0x24')](_0x167d('0xe'),_0x737b3f,JSON[_0x167d('0x25')](_0x511118));_0x56a2b6[_0x167d('0x27')]();}};};
\ No newline at end of file
+var _0x74f3=['stringify','then','result','metadata','endConversation','error','lodash','moment','apiai-promise','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','chat','account','AccountId','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','info','catch','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message','dialogflow','fulfillment'];(function(_0x349bf5,_0x2ae5bd){var _0x2a3e8a=function(_0x2ec1b6){while(--_0x2ec1b6){_0x349bf5['push'](_0x349bf5['shift']());}};_0x2a3e8a(++_0x2ae5bd);}(_0x74f3,0x164));var _0x374f=function(_0x2f3815,_0x20b9bd){_0x2f3815=_0x2f3815-0x0;var _0x26ef40=_0x74f3[_0x2f3815];return _0x26ef40;};'use strict';var _=require(_0x374f('0x0'));var moment=require(_0x374f('0x1'));var apiai=require(_0x374f('0x2'));var md5=require('md5');var utils=require(_0x374f('0x3'));var logger=require(_0x374f('0x4'))(_0x374f('0x5'));var rpc={'chatMessage':require(_0x374f('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x374f('0x7')),'smsMessage':require(_0x374f('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x374f('0x9'))};exports[_0x374f('0xa')]=function(_0x405e93,_0x407df1){return function(_0x3bcc86){try{if(!_[_0x374f('0xb')](this[_0x374f('0xc')][_0x374f('0xd')])){logger['info'](_0x374f('0xe'),_0x405e93,_0x374f('0xf'));return _0x3bcc86[_0x374f('0x10')]();}var _0x272059={'ContactId':this[_0x374f('0x11')]['id'],'sentAt':moment()['format'](_0x374f('0x12')),'direction':_0x374f('0x13')};if(this['channel']===_0x374f('0x14')||this[_0x374f('0x15')]===_0x374f('0x16')){_0x272059['phone']=this[_0x374f('0xc')][_0x374f('0x17')];}var _0x579d1b=this[_0x374f('0x15')];if(_0x579d1b===_0x374f('0x18')){_0x272059['ChatWebsiteId']=this[_0x374f('0x19')]['id'];}else{_0x272059[_['upperFirst'](_0x579d1b)+_0x374f('0x1a')]=this[_0x374f('0x19')]['id'];}_0x272059[_[_0x374f('0x1b')](_0x579d1b)+_0x374f('0x1c')]=this[_0x374f('0xc')]['id'];if(this[_0x374f('0xc')][_0x374f('0x1d')]){var _0x9b6be5=_0x407df1[0x2];if(!_[_0x374f('0x1e')](_0x9b6be5)){_0x272059[_0x374f('0x1f')]=utils[_0x374f('0x20')](_0x9b6be5,this);return rpc[_0x579d1b+_0x374f('0x21')][_0x374f('0x22')](_0x272059)['then'](function(_0x55eb4f){logger[_0x374f('0x23')]('[%s][DIALOGFLOW]\x20%s',_0x405e93,_0x272059[_0x374f('0x1f')]);})[_0x374f('0x24')](function(_0x1fd21f){logger['error'](_0x374f('0xe'),_0x405e93,JSON['stringify'](_0x1fd21f));})[_0x374f('0x25')](function(){logger[_0x374f('0x23')](_0x374f('0x26'),_0x405e93);_0x3bcc86['stop']();});}else{logger[_0x374f('0x23')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x405e93);_0x3bcc86[_0x374f('0x27')]();}}else{var _0x27b9ae=this;var _0x2de93d=apiai(_0x407df1[0x0],{'language':_0x407df1[0x1]||'en'});return _0x2de93d[_0x374f('0x28')](this[_0x374f('0x29')][_0x374f('0x1f')],{'sessionId':md5(this['interaction']['id'])})['then'](function(_0x1146a3){_0x27b9ae[_0x374f('0x1f')][_0x374f('0x2a')]=_0x1146a3;_0x272059['body']=_0x1146a3['result'][_0x374f('0x2b')]['speech'];_0x272059['providerName']='dialogflow';_0x272059['providerResponse']=JSON[_0x374f('0x2c')](_0x1146a3);return rpc[_0x579d1b+_0x374f('0x21')]['create'](_0x272059)[_0x374f('0x2d')](function(_0xc69c14){logger[_0x374f('0x23')](_0x374f('0xe'),_0x405e93,_0x272059['body']);if(_0x1146a3[_0x374f('0x2e')][_0x374f('0x2f')][_0x374f('0x30')]){_0x3bcc86[_0x374f('0x10')]();}else{_0x3bcc86[_0x374f('0x27')]();}})[_0x374f('0x24')](function(_0x113177){logger[_0x374f('0x31')](_0x374f('0xe'),_0x405e93,JSON[_0x374f('0x2c')](_0x113177));_0x3bcc86[_0x374f('0x10')]();});})[_0x374f('0x24')](function(_0x5614a0){logger[_0x374f('0x31')](_0x374f('0xe'),_0x405e93,_0x5614a0['message']);_0x3bcc86[_0x374f('0x10')]();});}}catch(_0x4e36e7){logger[_0x374f('0x31')](_0x374f('0xe'),_0x405e93,JSON['stringify'](_0x4e36e7));_0x3bcc86[_0x374f('0x27')]();}};};
\ No newline at end of file
index 08d5be1..377b3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x201d=['displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','all','md5','bluebird','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','create','then','info','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','chat','ChatWebsiteId','upperFirst','AccountId','created','isEmpty','getMustacheRender','Message','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','fields','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x201d,0x97));var _0xd201=function(_0x3bc4e6,_0x5e62ce){_0x3bc4e6=_0x3bc4e6-0x0;var _0x4c618c=_0x201d[_0x3bc4e6];return _0x4c618c;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require(_0xd201('0x0'));var moment=require('moment');var Promise=require(_0xd201('0x1'));var logger=require(_0xd201('0x2'))(_0xd201('0x3'));var utils=require('./utils');var rpc={'chatMessage':require(_0xd201('0x4')),'openchannelMessage':require(_0xd201('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xd201('0x6')),'whatsappMessage':require(_0xd201('0x7'))};function createMessage(_0x2aee0a,_0x2729d6,_0x4834cd,_0x11db31){return new Promise(function(_0x35fc30,_0x519da6){var _0x124ec6=_['clone'](_0x4834cd);_0x124ec6[_0xd201('0x8')]=_0x11db31;return rpc[_0x2729d6+'Message'][_0xd201('0x9')](_0x124ec6)[_0xd201('0xa')](function(){logger[_0xd201('0xb')]('[%s][DIALOGFLOWV2]\x20%s',_0x2aee0a,_0x124ec6['body']);_0x35fc30();})[_0xd201('0xc')](function(_0x15714b){logger[_0xd201('0xd')](_0xd201('0xe'),_0x2aee0a,JSON[_0xd201('0xf')](_0x15714b));_0x519da6(_0x15714b);});});}exports[_0xd201('0x10')]=function(_0x25cf77,_0xd0303f){return function(_0x141116){try{if(!_[_0xd201('0x11')](this[_0xd201('0x12')][_0xd201('0x13')])){logger[_0xd201('0xb')](_0xd201('0xe'),_0x25cf77,_0xd201('0x14'));return _0x141116[_0xd201('0x15')]();}var _0x3460de={'ContactId':this[_0xd201('0x16')]['id'],'sentAt':moment()['format'](_0xd201('0x17')),'direction':'out'};if(this[_0xd201('0x18')]===_0xd201('0x19')||this[_0xd201('0x18')]===_0xd201('0x1a')){_0x3460de[_0xd201('0x1b')]=this['interaction']['phone'];}var _0x33da74=this[_0xd201('0x18')];if(_0x33da74===_0xd201('0x1c')){_0x3460de[_0xd201('0x1d')]=this['account']['id'];}else{_0x3460de[_[_0xd201('0x1e')](_0x33da74)+_0xd201('0x1f')]=this['account']['id'];}_0x3460de[_[_0xd201('0x1e')](_0x33da74)+'InteractionId']=this[_0xd201('0x12')]['id'];if(this[_0xd201('0x12')][_0xd201('0x20')]){var _0xdeb036=_0xd0303f[0x4];if(!_[_0xd201('0x21')](_0xdeb036)){_0x3460de['body']=utils[_0xd201('0x22')](_0xdeb036,this);return rpc[_0x33da74+_0xd201('0x23')][_0xd201('0x9')](_0x3460de)['then'](function(_0x5e3871){logger[_0xd201('0xb')]('[%s][DIALOGFLOWV2]\x20%s',_0x25cf77,_0x3460de[_0xd201('0x8')]);})[_0xd201('0xc')](function(_0x254e79){logger[_0xd201('0xd')](_0xd201('0xe'),_0x25cf77,JSON[_0xd201('0xf')](_0x254e79));})[_0xd201('0x24')](function(){logger[_0xd201('0xb')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x25cf77);_0x141116[_0xd201('0x25')]();});}else{logger[_0xd201('0xb')](_0xd201('0x26'),_0x25cf77);_0x141116[_0xd201('0x25')]();}}else{var _0x1fa11d=this;var _0x5bdf8e=_0xd0303f[0x2][_0xd201('0x27')](/\\n/g,'\x0a');var _0x24f75d={'credentials':{'private_key':_0x5bdf8e,'client_email':_0xd0303f[0x1]}};var _0x8bbc4f=new dialogflow[(_0xd201('0x28'))](_0x24f75d);var _0x38b6b4=_0x8bbc4f[_0xd201('0x29')](_0xd0303f[0x0],md5(_0x1fa11d[_0xd201('0x12')]['id']));var _0x15c0b5={'session':_0x38b6b4,'queryInput':{'text':{'text':_0x1fa11d[_0xd201('0x2a')][_0xd201('0x8')],'languageCode':_0xd0303f[0x3]||'en'}}};return _0x8bbc4f[_0xd201('0x2b')](_0x15c0b5)['then'](function(_0x4288c9){if(_0x4288c9&&_0x4288c9[_0xd201('0x2c')]){_0x1fa11d['body'][_0xd201('0x2d')]=_0x4288c9;var _0x4d01bc=_0x4288c9[0x0];var _0x55cbe0=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x2f')]&&_0x4d01bc[_0xd201('0x2e')][_0xd201('0x2f')]['fields']?_0x4d01bc[_0xd201('0x2e')][_0xd201('0x2f')]['fields'][_0xd201('0x30')][_0xd201('0x31')]:![];_0x1fa11d[_0xd201('0x8')][_0xd201('0x32')]=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x33')];_0x1fa11d[_0xd201('0x8')][_0xd201('0x34')]=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x35')];_0x1fa11d[_0xd201('0x8')][_0xd201('0x36')]=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x2f')]&&_0x4d01bc[_0xd201('0x2e')][_0xd201('0x2f')][_0xd201('0x37')]?_0x4d01bc[_0xd201('0x2e')][_0xd201('0x2f')][_0xd201('0x37')][_0xd201('0x30')][_0xd201('0x31')]:![];_0x1fa11d[_0xd201('0x8')][_0xd201('0x38')]=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x39')]['name'];_0x1fa11d[_0xd201('0x8')][_0xd201('0x3a')]=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x39')][_0xd201('0x3b')];_0x1fa11d[_0xd201('0x8')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x4d01bc['queryResult'][_0xd201('0x39')][_0xd201('0x3c')];_0x1fa11d['body'][_0xd201('0x3d')]=_0x4d01bc['queryResult'][_0xd201('0x3e')];_0x1fa11d['body'][_0xd201('0x3f')]=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x40')];_0x1fa11d[_0xd201('0x8')][_0xd201('0x41')]=_0x4d01bc[_0xd201('0x2e')][_0xd201('0x42')];_0x3460de[_0xd201('0x43')]=_0xd201('0x2d');_0x3460de['providerResponse']=JSON[_0xd201('0xf')](_0x4288c9);var _0x20d485=[];for(var _0x3c1b38=0x0;_0x3c1b38<_0x4288c9['length'];_0x3c1b38++){var _0x50245d=_0x4288c9[_0x3c1b38];if(_0x50245d&&_0x50245d[_0xd201('0x2e')]&&_0x50245d[_0xd201('0x2e')][_0xd201('0x44')]){_0x20d485['push'](createMessage(_0x25cf77,_0x33da74,_0x3460de,_0x50245d[_0xd201('0x2e')][_0xd201('0x44')]));}}return Promise[_0xd201('0x45')](_0x20d485)['then'](function(){if(_0x55cbe0){_0x141116[_0xd201('0x15')]();}else{_0x141116[_0xd201('0x25')]();}})[_0xd201('0xc')](function(_0x17e60d){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x25cf77,JSON['stringify'](_0x17e60d));_0x141116['next']();});}})['catch'](function(_0x575c14){logger[_0xd201('0xd')](_0xd201('0xe'),_0x25cf77,_0x575c14[_0xd201('0x2a')]);_0x141116['next']();});}}catch(_0x27de86){logger['error'](_0xd201('0xe'),_0x25cf77,JSON[_0xd201('0xf')](_0x27de86));_0x141116[_0xd201('0x25')]();}};};
\ No newline at end of file
+var _0x96f6=['isNil','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','error','stringify','stop','SessionsClient','sessionPath','message','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','dialogflowV2','providerResponse','fulfillmentText','push','all','lodash','dialogflow','moment','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','consequence'];(function(_0x38962d,_0x4eb4e5){var _0x39d7e0=function(_0x33f57a){while(--_0x33f57a){_0x38962d['push'](_0x38962d['shift']());}};_0x39d7e0(++_0x4eb4e5);}(_0x96f6,0x181));var _0x696f=function(_0x49c057,_0xc808ed){_0x49c057=_0x49c057-0x0;var _0xd8f0e6=_0x96f6[_0x49c057];return _0xd8f0e6;};'use strict';var _=require(_0x696f('0x0'));var dialogflow=require(_0x696f('0x1'));var md5=require('md5');var moment=require(_0x696f('0x2'));var Promise=require('bluebird');var logger=require(_0x696f('0x3'))(_0x696f('0x4'));var utils=require(_0x696f('0x5'));var rpc={'chatMessage':require(_0x696f('0x6')),'openchannelMessage':require(_0x696f('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x696f('0x8')),'faxMessage':require(_0x696f('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x1f2118,_0x4cbe98,_0x31771c,_0x4ca0d7){return new Promise(function(_0x4455ed,_0x5405d4){var _0xb97ab9=_['clone'](_0x31771c);_0xb97ab9[_0x696f('0xa')]=_0x4ca0d7;return rpc[_0x4cbe98+'Message'][_0x696f('0xb')](_0xb97ab9)[_0x696f('0xc')](function(){logger[_0x696f('0xd')](_0x696f('0xe'),_0x1f2118,_0xb97ab9[_0x696f('0xa')]);_0x4455ed();})[_0x696f('0xf')](function(_0x2c3acf){logger['error'](_0x696f('0xe'),_0x1f2118,JSON['stringify'](_0x2c3acf));_0x5405d4(_0x2c3acf);});});}exports[_0x696f('0x10')]=function(_0xb64331,_0xf70c95){return function(_0x2280db){try{if(!_[_0x696f('0x11')](this['interaction']['UserId'])){logger['info'](_0x696f('0xe'),_0xb64331,_0x696f('0x12'));return _0x2280db[_0x696f('0x13')]();}var _0x36c7c3={'ContactId':this[_0x696f('0x14')]['id'],'sentAt':moment()[_0x696f('0x15')](_0x696f('0x16')),'direction':_0x696f('0x17')};if(this[_0x696f('0x18')]===_0x696f('0x19')||this[_0x696f('0x18')]===_0x696f('0x1a')){_0x36c7c3[_0x696f('0x1b')]=this[_0x696f('0x1c')][_0x696f('0x1b')];}var _0x5ef3fa=this['channel'];if(_0x5ef3fa===_0x696f('0x1d')){_0x36c7c3[_0x696f('0x1e')]=this[_0x696f('0x1f')]['id'];}else{_0x36c7c3[_[_0x696f('0x20')](_0x5ef3fa)+'AccountId']=this['account']['id'];}_0x36c7c3[_['upperFirst'](_0x5ef3fa)+_0x696f('0x21')]=this['interaction']['id'];if(this['interaction'][_0x696f('0x22')]){var _0x522bdd=_0xf70c95[0x4];if(!_[_0x696f('0x23')](_0x522bdd)){_0x36c7c3[_0x696f('0xa')]=utils[_0x696f('0x24')](_0x522bdd,this);return rpc[_0x5ef3fa+'Message']['create'](_0x36c7c3)[_0x696f('0xc')](function(_0x19a564){logger[_0x696f('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0xb64331,_0x36c7c3[_0x696f('0xa')]);})[_0x696f('0xf')](function(_0x4e57db){logger[_0x696f('0x25')](_0x696f('0xe'),_0xb64331,JSON[_0x696f('0x26')](_0x4e57db));})['finally'](function(){logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0xb64331);_0x2280db[_0x696f('0x27')]();});}else{logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0xb64331);_0x2280db[_0x696f('0x27')]();}}else{var _0x3dcebd=this;var _0x11118e=_0xf70c95[0x2]['replace'](/\\n/g,'\x0a');var _0x54ac3b={'credentials':{'private_key':_0x11118e,'client_email':_0xf70c95[0x1]}};var _0x6c39d5=new dialogflow[(_0x696f('0x28'))](_0x54ac3b);var _0x489162=_0x6c39d5[_0x696f('0x29')](_0xf70c95[0x0],md5(_0x3dcebd[_0x696f('0x1c')]['id']));var _0x34d12f={'session':_0x489162,'queryInput':{'text':{'text':_0x3dcebd[_0x696f('0x2a')][_0x696f('0xa')],'languageCode':_0xf70c95[0x3]||'en'}}};return _0x6c39d5['detectIntent'](_0x34d12f)[_0x696f('0xc')](function(_0x30cfe7){if(_0x30cfe7&&_0x30cfe7[_0x696f('0x2b')]){_0x3dcebd['body']['dialogflowV2']=_0x30cfe7;var _0x129c1c=_0x30cfe7[0x0];var _0x489f54=_0x129c1c[_0x696f('0x2c')][_0x696f('0x2d')]&&_0x129c1c[_0x696f('0x2c')][_0x696f('0x2d')]['fields']?_0x129c1c[_0x696f('0x2c')][_0x696f('0x2d')][_0x696f('0x2e')][_0x696f('0x2f')][_0x696f('0x30')]:![];_0x3dcebd['body'][_0x696f('0x31')]=_0x129c1c['queryResult'][_0x696f('0x32')];_0x3dcebd[_0x696f('0xa')][_0x696f('0x33')]=_0x129c1c[_0x696f('0x2c')]['allRequiredParamsPresent'];_0x3dcebd[_0x696f('0xa')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x129c1c[_0x696f('0x2c')]['diagnosticInfo']&&_0x129c1c[_0x696f('0x2c')][_0x696f('0x2d')]['fields']?_0x129c1c['queryResult'][_0x696f('0x2d')][_0x696f('0x2e')][_0x696f('0x2f')]['boolValue']:![];_0x3dcebd['body']['DIALOGFLOWV2_INTENTNAME']=_0x129c1c['queryResult'][_0x696f('0x34')][_0x696f('0x35')];_0x3dcebd[_0x696f('0xa')][_0x696f('0x36')]=_0x129c1c[_0x696f('0x2c')][_0x696f('0x34')][_0x696f('0x37')];_0x3dcebd[_0x696f('0xa')][_0x696f('0x38')]=_0x129c1c[_0x696f('0x2c')]['intent'][_0x696f('0x39')];_0x3dcebd[_0x696f('0xa')][_0x696f('0x3a')]=_0x129c1c[_0x696f('0x2c')]['languageCode'];_0x3dcebd[_0x696f('0xa')]['DIALOGFLOWV2_QUERYTEXT']=_0x129c1c[_0x696f('0x2c')]['queryText'];_0x3dcebd[_0x696f('0xa')][_0x696f('0x3b')]=_0x129c1c[_0x696f('0x2c')][_0x696f('0x3c')];_0x36c7c3[_0x696f('0x3d')]=_0x696f('0x3e');_0x36c7c3[_0x696f('0x3f')]=JSON[_0x696f('0x26')](_0x30cfe7);var _0x1e512e=[];for(var _0x869720=0x0;_0x869720<_0x30cfe7[_0x696f('0x2b')];_0x869720++){var _0x228500=_0x30cfe7[_0x869720];if(_0x228500&&_0x228500[_0x696f('0x2c')]&&_0x228500[_0x696f('0x2c')][_0x696f('0x40')]){_0x1e512e[_0x696f('0x41')](createMessage(_0xb64331,_0x5ef3fa,_0x36c7c3,_0x228500[_0x696f('0x2c')][_0x696f('0x40')]));}}return Promise[_0x696f('0x42')](_0x1e512e)[_0x696f('0xc')](function(){if(_0x489f54){_0x2280db['next']();}else{_0x2280db['stop']();}})[_0x696f('0xf')](function(_0xaaea9e){logger['error'](_0x696f('0xe'),_0xb64331,JSON[_0x696f('0x26')](_0xaaea9e));_0x2280db[_0x696f('0x13')]();});}})[_0x696f('0xf')](function(_0x1a3ff1){logger[_0x696f('0x25')](_0x696f('0xe'),_0xb64331,_0x1a3ff1[_0x696f('0x2a')]);_0x2280db[_0x696f('0x13')]();});}}catch(_0x35deac){logger['error'](_0x696f('0xe'),_0xb64331,JSON[_0x696f('0x26')](_0x35deac));_0x2280db[_0x696f('0x27')]();}};};
\ No newline at end of file
index 2915de5..ec9802a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f48=['number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','validate','html-to-text','./utils','../../../../config/logger','routing'];(function(_0x4e6f8c,_0x5433e2){var _0x372ec0=function(_0x9baac9){while(--_0x9baac9){_0x4e6f8c['push'](_0x4e6f8c['shift']());}};_0x372ec0(++_0x5433e2);}(_0x0f48,0x1cb));var _0x80f4=function(_0x513f99,_0x44139f){_0x513f99=_0x513f99-0x0;var _0xd8ae3c=_0x0f48[_0x513f99];return _0xd8ae3c;};'use strict';var schema=require(_0x80f4('0x0'));var _=require('lodash');var htmlToText=require(_0x80f4('0x1'));var utils=require(_0x80f4('0x2'));var logger=require(_0x80f4('0x3'))(_0x80f4('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0x80f4('0x5'),'message':_0x80f4('0x6')},'priorityFalse':{'type':_0x80f4('0x5'),'message':_0x80f4('0x7')}});exports[_0x80f4('0x8')]=function(_0x1c1a92,_0x47b7d1){return function(_0x3ccf1c){try{var _0x59647c={'condition':htmlToText[_0x80f4('0x9')](utils[_0x80f4('0xa')](_0x47b7d1[0x0],this),{'wordwrap':![]})[_0x80f4('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x47b7d1[0x1],'priorityFalse':_0x47b7d1[0x2]};var _0x2b2902=gotoif[_0x80f4('0x0')](_0x59647c,{'typecast':!![]});if(_0x2b2902[_0x80f4('0xc')]){logger[_0x80f4('0xd')](_0x80f4('0xe'),_0x1c1a92,_[_0x80f4('0xf')](_0x2b2902,_0x80f4('0x10'))[_0x80f4('0x11')](',\x20'));_0x3ccf1c[_0x80f4('0x12')]();}else{try{var _0x51880e=eval('('+_0x59647c[_0x80f4('0x13')]+')');var _0x46522f=_0x51880e?_0x59647c[_0x80f4('0x14')]:_0x59647c[_0x80f4('0x15')];logger[_0x80f4('0x16')](_0x80f4('0x17'),_0x1c1a92,_0x59647c[_0x80f4('0x13')],_0x51880e,_0x46522f||_0x80f4('0x18'));if(_0x46522f){var _0x553317=_[_0x80f4('0x19')](_0x3ccf1c['rules'](),{'p':_0x46522f});if(_0x553317>=0x0){logger[_0x80f4('0x16')](_0x80f4('0x1a'),_0x1c1a92,_0x46522f||_0x80f4('0x18'),_0x553317);_0x3ccf1c[_0x80f4('0x18')](_0x553317);}else{logger[_0x80f4('0x16')](_0x80f4('0x1b'),_0x1c1a92,_0x46522f||_0x80f4('0x18'));_0x3ccf1c['stop']();}}else{_0x3ccf1c[_0x80f4('0x18')]();}}catch(_0x2142a0){logger[_0x80f4('0xd')](_0x80f4('0x1c'),_0x1c1a92,_0x2142a0[_0x80f4('0x10')]);_0x3ccf1c[_0x80f4('0x12')]();}}}catch(_0x1719f0){logger[_0x80f4('0xd')](_0x80f4('0xe'),_0x1c1a92,JSON['stringify'](_0x1719f0));_0x3ccf1c[_0x80f4('0x12')]();}};};
\ No newline at end of file
+var _0xa96c=['html-to-text','./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','replace','length','error','[%s][GOTOIF]\x20%s','message','join','condition','priorityFalse','findIndex','rules','info','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','stop','stringify','validate','lodash'];(function(_0x1d404f,_0x381147){var _0x35259e=function(_0x25b8d3){while(--_0x25b8d3){_0x1d404f['push'](_0x1d404f['shift']());}};_0x35259e(++_0x381147);}(_0xa96c,0xf1));var _0xca96=function(_0x2493e6,_0x5f2190){_0x2493e6=_0x2493e6-0x0;var _0x19e71f=_0xa96c[_0x2493e6];return _0x19e71f;};'use strict';var schema=require(_0xca96('0x0'));var _=require(_0xca96('0x1'));var htmlToText=require(_0xca96('0x2'));var utils=require(_0xca96('0x3'));var logger=require(_0xca96('0x4'))(_0xca96('0x5'));var gotoif=schema({'condition':{'type':_0xca96('0x6'),'required':!![],'message':_0xca96('0x7')},'priorityTrue':{'type':_0xca96('0x8'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xca96('0x8'),'message':_0xca96('0x9')}});exports[_0xca96('0xa')]=function(_0x323d11,_0x5d735f){return function(_0x41f6ea){try{var _0x1c141a={'condition':htmlToText[_0xca96('0xb')](utils['getMustacheRender'](_0x5d735f[0x0],this),{'wordwrap':![]})[_0xca96('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x5d735f[0x1],'priorityFalse':_0x5d735f[0x2]};var _0x4035b4=gotoif[_0xca96('0x0')](_0x1c141a,{'typecast':!![]});if(_0x4035b4[_0xca96('0xd')]){logger[_0xca96('0xe')](_0xca96('0xf'),_0x323d11,_['map'](_0x4035b4,_0xca96('0x10'))[_0xca96('0x11')](',\x20'));_0x41f6ea['stop']();}else{try{var _0xcb335c=eval('('+_0x1c141a[_0xca96('0x12')]+')');var _0x51f8f2=_0xcb335c?_0x1c141a['priorityTrue']:_0x1c141a[_0xca96('0x13')];logger['info']('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x323d11,_0x1c141a['condition'],_0xcb335c,_0x51f8f2||'next');if(_0x51f8f2){var _0x175e1f=_[_0xca96('0x14')](_0x41f6ea[_0xca96('0x15')](),{'p':_0x51f8f2});if(_0x175e1f>=0x0){logger[_0xca96('0x16')](_0xca96('0x17'),_0x323d11,_0x51f8f2||'next',_0x175e1f);_0x41f6ea[_0xca96('0x18')](_0x175e1f);}else{logger[_0xca96('0x16')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x323d11,_0x51f8f2||'next');_0x41f6ea[_0xca96('0x19')]();}}else{_0x41f6ea['next']();}}catch(_0x216bfb){logger[_0xca96('0xe')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x323d11,_0x216bfb['message']);_0x41f6ea[_0xca96('0x19')]();}}}catch(_0x8bb285){logger[_0xca96('0xe')]('[%s][GOTOIF]\x20%s',_0x323d11,JSON[_0xca96('0x1a')](_0x8bb285));_0x41f6ea['stop']();}};};
\ No newline at end of file
index 42481f5..60be378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a1c=['consequence','error','[%s][GOTOP]\x20%s','map','message','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','validate','lodash','../../../../config/logger','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'];(function(_0x41c47b,_0x417257){var _0x427c7e=function(_0xf56a54){while(--_0xf56a54){_0x41c47b['push'](_0x41c47b['shift']());}};_0x427c7e(++_0x417257);}(_0x0a1c,0x81));var _0xc0a1=function(_0x4f3b2d,_0x3bbf46){_0x4f3b2d=_0x4f3b2d-0x0;var _0x3dddfa=_0x0a1c[_0x4f3b2d];return _0x3dddfa;};'use strict';var schema=require(_0xc0a1('0x0'));var _=require(_0xc0a1('0x1'));var logger=require(_0xc0a1('0x2'))('routing');var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xc0a1('0x3')}});exports[_0xc0a1('0x4')]=function(_0x547af5,_0xce984e){return function(_0x41a7e2){try{var _0x4a3128={'priority':_0xce984e[0x0]};var _0x1a887a=gotop[_0xc0a1('0x0')](_0x4a3128,{'typecast':!![]});if(_0x1a887a['length']){logger[_0xc0a1('0x5')](_0xc0a1('0x6'),_0x547af5,_[_0xc0a1('0x7')](_0x1a887a,_0xc0a1('0x8'))['join'](',\x20'));_0x41a7e2['stop']();}else{logger[_0xc0a1('0x9')](_0xc0a1('0xa'),_0x547af5,_0x4a3128[_0xc0a1('0xb')]);if(_0x4a3128['priority']){var _0x22b6eb=_[_0xc0a1('0xc')](_0x41a7e2[_0xc0a1('0xd')](),{'p':_0x4a3128['priority']});if(_0x22b6eb>=0x0){logger[_0xc0a1('0x9')](_0xc0a1('0xe'),_0x547af5,_0x4a3128[_0xc0a1('0xb')]||_0xc0a1('0xf'),_0x22b6eb);_0x41a7e2[_0xc0a1('0xf')](_0x22b6eb);}else{logger['info'](_0xc0a1('0x10'),_0x547af5,_0x4a3128['priority']||_0xc0a1('0xf'));_0x41a7e2[_0xc0a1('0x11')]();}}else{_0x41a7e2[_0xc0a1('0xf')]();}}}catch(_0x3a7352){logger[_0xc0a1('0x5')](_0xc0a1('0x6'),_0x547af5,JSON[_0xc0a1('0x12')](_0x3a7352));_0x41a7e2[_0xc0a1('0x11')]();}};};
\ No newline at end of file
+var _0xa3ef=['[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20%s','stringify','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','map','message','join','stop','info'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xa3ef,0x170));var _0xfa3e=function(_0x2e6462,_0x2018fe){_0x2e6462=_0x2e6462-0x0;var _0xb0413b=_0xa3ef[_0x2e6462];return _0xb0413b;};'use strict';var schema=require('validate');var _=require(_0xfa3e('0x0'));var logger=require(_0xfa3e('0x1'))(_0xfa3e('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xfa3e('0x3')}});exports['consequence']=function(_0x49f6cf,_0x5845da){return function(_0x999f47){try{var _0x94c643={'priority':_0x5845da[0x0]};var _0x2ce156=gotop[_0xfa3e('0x4')](_0x94c643,{'typecast':!![]});if(_0x2ce156[_0xfa3e('0x5')]){logger[_0xfa3e('0x6')]('[%s][GOTOP]\x20%s',_0x49f6cf,_[_0xfa3e('0x7')](_0x2ce156,_0xfa3e('0x8'))[_0xfa3e('0x9')](',\x20'));_0x999f47[_0xfa3e('0xa')]();}else{logger[_0xfa3e('0xb')](_0xfa3e('0xc'),_0x49f6cf,_0x94c643['priority']);if(_0x94c643[_0xfa3e('0xd')]){var _0x51147c=_[_0xfa3e('0xe')](_0x999f47[_0xfa3e('0xf')](),{'p':_0x94c643[_0xfa3e('0xd')]});if(_0x51147c>=0x0){logger[_0xfa3e('0xb')](_0xfa3e('0x10'),_0x49f6cf,_0x94c643[_0xfa3e('0xd')]||'next',_0x51147c);_0x999f47[_0xfa3e('0x11')](_0x51147c);}else{logger[_0xfa3e('0xb')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x49f6cf,_0x94c643[_0xfa3e('0xd')]||_0xfa3e('0x11'));_0x999f47['stop']();}}else{_0x999f47['next']();}}}catch(_0x5dae90){logger['error'](_0xfa3e('0x12'),_0x49f6cf,JSON[_0xfa3e('0x13')](_0x5dae90));_0x999f47[_0xfa3e('0xa')]();}};};
\ No newline at end of file
index 9954093..6e6e266 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4227=['routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','Message','then','[%s][MESSAGE]\x20%s','body','stringify','error','stop','lodash'];(function(_0x324e95,_0x27ccff){var _0x1c42e1=function(_0x4ea71e){while(--_0x4ea71e){_0x324e95['push'](_0x324e95['shift']());}};_0x1c42e1(++_0x27ccff);}(_0x4227,0x89));var _0x7422=function(_0x543b40,_0x32dc20){_0x543b40=_0x543b40-0x0;var _0xc5fdeb=_0x4227[_0x543b40];return _0xc5fdeb;};'use strict';var _=require(_0x7422('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x7422('0x1'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x7422('0x2')),'mailMessage':require(_0x7422('0x3')),'smsMessage':require(_0x7422('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x7422('0x5'))};exports[_0x7422('0x6')]=function(_0x2138fe,_0x36ddba){return function(_0x4432d6){try{var _0x2b3432={'body':utils[_0x7422('0x7')](_0x36ddba[0x0],this),'ContactId':this[_0x7422('0x8')]['id']};if(this[_0x7422('0x9')]==='chat'){_0x2b3432[_0x7422('0xa')]=this[_0x7422('0xb')]['id'];}else{_0x2b3432[_[_0x7422('0xc')](this['channel'])+_0x7422('0xd')]=this['account']['id'];}_0x2b3432[_[_0x7422('0xc')](this[_0x7422('0x9')])+_0x7422('0xe')]=this[_0x7422('0xf')]['id'];if(rpc[this[_0x7422('0x9')]+'Message']){return rpc[this[_0x7422('0x9')]+_0x7422('0x10')]['create'](_0x2b3432)[_0x7422('0x11')](function(_0x2acd6c){logger['info'](_0x7422('0x12'),_0x2138fe,_0x2b3432[_0x7422('0x13')]);_0x4432d6['next']();})['catch'](function(_0xeafd58){logger['error'](_0x7422('0x12'),_0x2138fe,JSON[_0x7422('0x14')](_0xeafd58));_0x4432d6['stop']();});}}catch(_0x149c50){logger[_0x7422('0x15')](_0x7422('0x12'),_0x2138fe,JSON[_0x7422('0x14')](_0x149c50));_0x4432d6[_0x7422('0x16')]();}};};
\ No newline at end of file
+var _0xcae2=['upperFirst','InteractionId','Message','create','then','info','body','catch','[%s][MESSAGE]\x20%s','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','AccountId','account'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xcae2,0x143));var _0x2cae=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xcae2[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x2cae('0x0'));var utils=require(_0x2cae('0x1'));var logger=require(_0x2cae('0x2'))(_0x2cae('0x3'));var rpc={'chatMessage':require(_0x2cae('0x4')),'openchannelMessage':require(_0x2cae('0x5')),'mailMessage':require(_0x2cae('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x2cae('0x7')),'whatsappMessage':require(_0x2cae('0x8'))};exports[_0x2cae('0x9')]=function(_0x415f20,_0x57cbf8){return function(_0x3a3e3b){try{var _0x1feff6={'body':utils[_0x2cae('0xa')](_0x57cbf8[0x0],this),'ContactId':this[_0x2cae('0xb')]['id']};if(this[_0x2cae('0xc')]==='chat'){_0x1feff6['ChatWebsiteId']=this['account']['id'];}else{_0x1feff6[_['upperFirst'](this[_0x2cae('0xc')])+_0x2cae('0xd')]=this[_0x2cae('0xe')]['id'];}_0x1feff6[_[_0x2cae('0xf')](this[_0x2cae('0xc')])+_0x2cae('0x10')]=this['interaction']['id'];if(rpc[this[_0x2cae('0xc')]+'Message']){return rpc[this[_0x2cae('0xc')]+_0x2cae('0x11')][_0x2cae('0x12')](_0x1feff6)[_0x2cae('0x13')](function(_0x302385){logger[_0x2cae('0x14')]('[%s][MESSAGE]\x20%s',_0x415f20,_0x1feff6[_0x2cae('0x15')]);_0x3a3e3b['next']();})[_0x2cae('0x16')](function(_0x13c76f){logger['error'](_0x2cae('0x17'),_0x415f20,JSON[_0x2cae('0x18')](_0x13c76f));_0x3a3e3b[_0x2cae('0x19')]();});}}catch(_0x7e2228){logger['error'](_0x2cae('0x17'),_0x415f20,JSON[_0x2cae('0x18')](_0x7e2228));_0x3a3e3b['stop']();}};};
\ No newline at end of file
index 71e15d4..af62d35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ee=['stop','./utils','../../../../config/logger','routing','info','[%s][NOOP]\x20%s','getMustacheRender','error','stringify'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf7ee,0xa3));var _0xef7e=function(_0x526ee9,_0xc04fb9){_0x526ee9=_0x526ee9-0x0;var _0x2f1e1c=_0xf7ee[_0x526ee9];return _0x2f1e1c;};'use strict';var utils=require(_0xef7e('0x0'));var logger=require(_0xef7e('0x1'))(_0xef7e('0x2'));exports['consequence']=function(_0x57f47a,_0x4bbd68){return function(_0x4ccff8){try{logger[_0xef7e('0x3')](_0xef7e('0x4'),_0x57f47a,utils[_0xef7e('0x5')](_0x4bbd68[0x0],this));_0x4ccff8['next']();}catch(_0xa930ce){logger[_0xef7e('0x6')](_0xef7e('0x4'),_0x57f47a,JSON[_0xef7e('0x7')](_0xa930ce));_0x4ccff8[_0xef7e('0x8')]();}};};
\ No newline at end of file
+var _0xaeb1=['./utils','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stop'];(function(_0x41f865,_0x52aa1b){var _0x38c83e=function(_0xf9a3c1){while(--_0xf9a3c1){_0x41f865['push'](_0x41f865['shift']());}};_0x38c83e(++_0x52aa1b);}(_0xaeb1,0xd8));var _0x1aeb=function(_0x567355,_0x4ad51c){_0x567355=_0x567355-0x0;var _0xd84d06=_0xaeb1[_0x567355];return _0xd84d06;};'use strict';var utils=require(_0x1aeb('0x0'));var logger=require('../../../../config/logger')(_0x1aeb('0x1'));exports[_0x1aeb('0x2')]=function(_0x4d2657,_0x4baefa){return function(_0x6febd5){try{logger[_0x1aeb('0x3')](_0x1aeb('0x4'),_0x4d2657,utils[_0x1aeb('0x5')](_0x4baefa[0x0],this));_0x6febd5[_0x1aeb('0x6')]();}catch(_0x2b2a6c){logger[_0x1aeb('0x7')]('[%s][NOOP]\x20%s',_0x4d2657,JSON['stringify'](_0x2b2a6c));_0x6febd5[_0x1aeb('0x8')]();}};};
\ No newline at end of file
index 01417d4..4546c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd882=['catch','error','accepted','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','length','map','join','stop','Queues','createQueue','atimeout','qtimeout','rules','complete','[%s][QUEUE]\x20APPLICATION\x20END','close','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','moment','../../../../config/logger','routing','./strategy','redis','localhost','queue_id','account','queue','joinAt','clone','format','pick','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create'];(function(_0x41cfd4,_0x1ed2cc){var _0x190f48=function(_0x4b5b1a){while(--_0x4b5b1a){_0x41cfd4['push'](_0x41cfd4['shift']());}};_0x190f48(++_0x1ed2cc);}(_0xd882,0xf8));var _0x2d88=function(_0x90a39a,_0x32020d){_0x90a39a=_0x90a39a-0x0;var _0x2b62f7=_0xd882[_0x90a39a];return _0x2b62f7;};'use strict';var schema=require(_0x2d88('0x0'));var _=require(_0x2d88('0x1'));var util=require(_0x2d88('0x2'));var seqqueue=require('seq-queue');var moment=require(_0x2d88('0x3'));var Redis=require('ioredis');var config=require('../../../../config/environment');var logger=require(_0x2d88('0x4'))(_0x2d88('0x5'));var strategy=require(_0x2d88('0x6'));config['redis']=_['defaults'](config[_0x2d88('0x7')],{'host':_0x2d88('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2d88('0x7')]));var attributes=['id',_0x2d88('0x9'),_0x2d88('0xa'),_0x2d88('0xb'),'from',_0x2d88('0xc')];function emit(_0x5ac237,_0x374a78,_0x4c1f6c){io['to'](_0x5ac237)['emit'](_0x374a78,_0x4c1f6c);}function emitChannelQueueInteraction(_0x2e92cb,_0xc341,_0x3e3857,_0x80d92,_0x1a7cfb,_0x298485,_0x30ac04,_0x515985){var _0x345af7=_[_0x2d88('0xd')](_0x3e3857);_0x345af7[_0x2d88('0x9')]=_0x515985;_0x345af7[_0x2d88('0xb')]=_0xc341;_0x345af7[_0x2d88('0xa')]=_0x80d92;_0x345af7['id']=_0x1a7cfb;if(_0x298485){_0x30ac04[util[_0x2d88('0xe')]('%sQueuesWaitingInteractions',_0x2e92cb)][_0x1a7cfb]=_[_0x2d88('0xf')](_0x345af7,attributes);}else{delete _0x30ac04[util[_0x2d88('0xe')](_0x2d88('0x10'),_0x2e92cb)][_0x1a7cfb];}emit(util[_0x2d88('0xe')](_0x2d88('0x11'),_0x2e92cb,_0xc341),util['format'](_0x2d88('0x12'),_0x2e92cb,_0x298485?'save':_0x2d88('0x13')),_['pick'](_0x345af7,attributes));}var rpc={'openchannelQueueReport':require(_0x2d88('0x14')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x2d88('0x15')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x2d88('0x16'))};var queue=schema({'name':{'type':_0x2d88('0x17'),'required':!![],'message':_0x2d88('0x18')},'timeout':{'type':'number','message':_0x2d88('0x19')}});function startRouting(_0x50f775,_0x485a8f,_0x1b926e,_0x3c8156){if(_0x50f775&&_0x485a8f&&_0x1b926e){_0x485a8f[_0x2d88('0x1a')]+=0x1;var _0x3fcce0={'uniqueid':_0x50f775,'from':_0x1b926e[_0x2d88('0x1b')]?_0x1b926e['body']['from']:'','joinAt':moment()[_0x2d88('0xe')](_0x2d88('0x1c')),'ContactId':_0x1b926e['contact']?_0x1b926e[_0x2d88('0x1d')]['id']:null,'ListId':_0x1b926e[_0x2d88('0x1e')]?_0x1b926e[_0x2d88('0x1e')]['id']:null};_0x3fcce0[_[_0x2d88('0x1f')](_0x1b926e[_0x2d88('0x20')])+_0x2d88('0x21')]=_0x485a8f['id']||null;_0x3fcce0[_['upperFirst'](_0x1b926e[_0x2d88('0x20')])+_0x2d88('0x22')]=_0x1b926e['interaction']?_0x1b926e[_0x2d88('0x23')]['id']:null;_0x3fcce0[_[_0x2d88('0x1f')](_0x1b926e[_0x2d88('0x20')])+_0x2d88('0x24')]=_0x1b926e[_0x2d88('0x25')]?_0x1b926e[_0x2d88('0x25')]['id']:null;_0x3fcce0[_[_0x2d88('0x1f')](_0x1b926e[_0x2d88('0x20')])+(_0x1b926e[_0x2d88('0x20')]!=='chat'?_0x2d88('0x26'):'WebsiteId')]=_0x1b926e[_0x2d88('0xa')]?_0x1b926e[_0x2d88('0xa')]['id']:null;logger[_0x2d88('0x27')](util['format'](_0x2d88('0x28'),_0x50f775,_0x485a8f['name']));emitChannelQueueInteraction(_0x1b926e[_0x2d88('0x20')],_0x485a8f[_0x2d88('0x29')],_0x3fcce0,_0x1b926e[_0x2d88('0xa')][_0x2d88('0x29')],_0x1b926e[_0x2d88('0x25')]['id'],!![],_0x3c8156,_0x485a8f['id']);if(rpc[_0x1b926e[_0x2d88('0x20')]+'QueueReport']){return rpc[_0x1b926e[_0x2d88('0x20')]+_0x2d88('0x2a')][_0x2d88('0x2b')](_0x3fcce0)[_0x2d88('0x2c')](function(_0x2d9192){logger[_0x2d88('0x2d')]('create\x20queue\x20report');});}}}function stopRouting(_0x3014d6,_0x3bfab6,_0x70592e,_0x234de7){if(_0x3014d6&&_0x3bfab6){_0x3bfab6['waiting']-=0x1;var _0x32e005={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x2d88('0xe')](_0x2d88('0x1c')),'reason':_0x2d88('0x2e')};logger[_0x2d88('0x27')](util[_0x2d88('0xe')](_0x2d88('0x2f'),_0x3014d6,_0x3bfab6[_0x2d88('0x29')]));emitChannelQueueInteraction(_0x70592e[_0x2d88('0x20')],_0x3bfab6[_0x2d88('0x29')],_0x70592e['body'],_0x70592e['account'][_0x2d88('0x29')],_0x70592e[_0x2d88('0x25')]['id'],![],_0x234de7,_0x3bfab6['id']);if(rpc[_0x70592e['channel']+'QueueReport']){return rpc[_0x70592e[_0x2d88('0x20')]+_0x2d88('0x2a')]['update'](_0x3014d6,_0x32e005)['catch'](function(_0x50ff52){logger['error'](_0x2d88('0x30'));});}}}function endRouting(_0x4d4a21,_0x12e63f,_0x1cc312,_0x332eb2){if(_0x4d4a21&&_0x12e63f){_0x12e63f[_0x2d88('0x1a')]-=0x1;var _0x430acb={'leaveAt':moment()[_0x2d88('0xe')](_0x2d88('0x1c')),'exitAt':moment()['format'](_0x2d88('0x1c')),'reason':_0x2d88('0x31')};logger[_0x2d88('0x27')](util[_0x2d88('0xe')](_0x2d88('0x32'),_0x4d4a21,_0x12e63f['name']));emitChannelQueueInteraction(_0x1cc312[_0x2d88('0x20')],_0x12e63f[_0x2d88('0x29')],_0x1cc312[_0x2d88('0x1b')],_0x1cc312[_0x2d88('0xa')][_0x2d88('0x29')],_0x1cc312['message']['id'],![],_0x332eb2);if(rpc[_0x1cc312['channel']+_0x2d88('0x2a')]){return rpc[_0x1cc312[_0x2d88('0x20')]+_0x2d88('0x2a')][_0x2d88('0x33')](_0x4d4a21,_0x430acb)[_0x2d88('0x2c')](function(_0x47ae33){logger[_0x2d88('0x2d')](_0x2d88('0x30'));});}}}function handleFindQueue(_0x5b4d03){return function(_0x3a2171){return _0x3a2171[_0x2d88('0x29')]['toLowerCase']()===_0x5b4d03[_0x2d88('0x34')]();};}exports[_0x2d88('0x35')]=function(_0x2d2958,_0x447d18,_0x5911e1,_0x1174dc){return function(_0x28fd75){try{var _0x2398bb={'name':_0x447d18[0x0],'timeout':_0x447d18[0x1]};var _0x3f8d5b=queue['validate'](_0x2398bb,{'typecast':!![]});if(_0x3f8d5b[_0x2d88('0x36')]){logger[_0x2d88('0x2d')]('[%s][QUEUE]\x20%s',_0x2d2958,_[_0x2d88('0x37')](_0x3f8d5b,_0x2d88('0x25'))[_0x2d88('0x38')](',\x20'));_0x28fd75[_0x2d88('0x39')]();}else{var _0x566d00=_['find'](_0x5911e1[_0x1174dc[_0x2d88('0x20')]+_0x2d88('0x3a')],handleFindQueue(_0x2398bb[_0x2d88('0x29')]));if(_0x566d00){startRouting(_0x2d2958,_0x566d00,_0x1174dc,_0x5911e1);var _0x438bee=(_0x566d00[_0x2d88('0x31')]||0xa)*0x3e8;var _0x3e0831=(_0x2398bb[_0x2d88('0x31')]||0x14)*0x3e8;var _0x41ed1e,_0x655883;if(_0x438bee>_0x3e0831){_0x3e0831=_0x438bee;}var _0x48cce5=seqqueue[_0x2d88('0x3b')](_0x438bee);_0x48cce5['id']=_0x2d2958;_0x48cce5[_0x2d88('0x3c')]=_0x438bee;_0x48cce5[_0x2d88('0x3d')]=_0x3e0831;_0x48cce5[_0x2d88('0x20')]=_0x1174dc['channel'];_0x5911e1[_0x2d88('0x3e')][_0x2d2958]['on']('end',function(){logger[_0x2d88('0x27')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x2d2958);stopRouting(_0x2d2958,_0x566d00,_0x1174dc,_0x5911e1);clearTimeout(_0x41ed1e);_0x41ed1e=undefined;_0x48cce5['close'](!![]);if(_0x5911e1[_0x2d88('0x3e')][_0x2d2958]){delete _0x5911e1[_0x2d88('0x3e')][_0x2d2958];}_0x28fd75['stop']();});_0x5911e1['rules'][_0x2d2958]['on'](_0x2d88('0x3f'),function(){if(_0x5911e1[_0x2d88('0x3e')][_0x2d2958]){delete _0x5911e1[_0x2d88('0x3e')][_0x2d2958];}});_0x41ed1e=setTimeout(function(){logger[_0x2d88('0x27')](_0x2d88('0x40'),_0x2d2958);endRouting(_0x2d2958,_0x566d00,_0x1174dc,_0x5911e1);clearTimeout(_0x41ed1e);_0x48cce5[_0x2d88('0x41')](!![]);_0x28fd75[_0x2d88('0x42')]();},_0x3e0831);switch(_0x566d00[_0x2d88('0x43')]){case _0x2d88('0x44'):strategy[_0x2d88('0x44')](_0x48cce5,_0x566d00,_0x5911e1,_0x1174dc);break;default:strategy['beepall'](_0x48cce5,_0x566d00,_0x5911e1,_0x1174dc);}}else{logger['error'](_0x2d88('0x45'),_0x2d2958,_0x2398bb[_0x2d88('0x29')]);_0x28fd75[_0x2d88('0x39')]();}}}catch(_0x280ff6){console[_0x2d88('0x46')](_0x280ff6);logger[_0x2d88('0x2d')](_0x2d88('0x47'),_0x2d2958,_0x280ff6[_0x2d88('0x48')]);_0x28fd75['stop']();}};};
\ No newline at end of file
+var _0x7a2a=['%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','MessageId','message','chat','WebsiteId','name','QueueReport','catch','error','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','[%s][QUEUE]\x20%s','stop','find','Queues','atimeout','qtimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','defaults','redis','socket.io-emitter','queue_id','account','queue','from','joinAt','clone','capitalize','InteractionId','%sQueuesWaitingInteractions','pick','format'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7a2a,0xda));var _0xa7a2=function(_0x56d44d,_0x222108){_0x56d44d=_0x56d44d-0x0;var _0x848500=_0x7a2a[_0x56d44d];return _0x848500;};'use strict';var schema=require('validate');var _=require(_0xa7a2('0x0'));var util=require('util');var seqqueue=require(_0xa7a2('0x1'));var moment=require(_0xa7a2('0x2'));var Redis=require(_0xa7a2('0x3'));var config=require(_0xa7a2('0x4'));var logger=require(_0xa7a2('0x5'))(_0xa7a2('0x6'));var strategy=require(_0xa7a2('0x7'));config['redis']=_[_0xa7a2('0x8')](config[_0xa7a2('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xa7a2('0xa'))(new Redis(config[_0xa7a2('0x9')]));var attributes=['id',_0xa7a2('0xb'),_0xa7a2('0xc'),_0xa7a2('0xd'),_0xa7a2('0xe'),_0xa7a2('0xf')];function emit(_0x4bd9f7,_0xeb3114,_0x1c5f57){io['to'](_0x4bd9f7)['emit'](_0xeb3114,_0x1c5f57);}function emitChannelQueueInteraction(_0x33572f,_0x2dd227,_0x118bf4,_0x15678b,_0x407994,_0x58771d,_0x59838b,_0x18269a){var _0x58248b=_[_0xa7a2('0x10')](_0x118bf4);_0x58248b[_0xa7a2('0xb')]=_0x18269a;_0x58248b[_0xa7a2('0xd')]=_0x2dd227;_0x58248b[_0xa7a2('0xc')]=_0x15678b;_0x58248b['id']=_0x407994;if(_0x58771d){attributes['push'](_[_0xa7a2('0x11')](_0x33572f)+_0xa7a2('0x12'));_0x59838b[util['format'](_0xa7a2('0x13'),_0x33572f)][_0x407994]=_[_0xa7a2('0x14')](_0x58248b,attributes);}else{delete _0x59838b[util[_0xa7a2('0x15')](_0xa7a2('0x13'),_0x33572f)][_0x407994];}emit(util[_0xa7a2('0x15')](_0xa7a2('0x16'),_0x33572f,_0x2dd227),util[_0xa7a2('0x15')](_0xa7a2('0x17'),_0x33572f,_0x58771d?_0xa7a2('0x18'):_0xa7a2('0x19')),_[_0xa7a2('0x14')](_0x58248b,attributes));}var rpc={'openchannelQueueReport':require(_0xa7a2('0x1a')),'mailQueueReport':require(_0xa7a2('0x1b')),'chatQueueReport':require(_0xa7a2('0x1c')),'smsQueueReport':require(_0xa7a2('0x1d')),'faxQueueReport':require(_0xa7a2('0x1e')),'whatsappQueueReport':require(_0xa7a2('0x1f'))};var queue=schema({'name':{'type':_0xa7a2('0x20'),'required':!![],'message':_0xa7a2('0x21')},'timeout':{'type':_0xa7a2('0x22'),'message':_0xa7a2('0x23')}});function startRouting(_0x4bb68f,_0x5d12b0,_0x17eb48,_0x356a37){if(_0x4bb68f&&_0x5d12b0&&_0x17eb48){_0x5d12b0[_0xa7a2('0x24')]+=0x1;var _0x2d8a13={'uniqueid':_0x4bb68f,'from':_0x17eb48['body']?_0x17eb48[_0xa7a2('0x25')][_0xa7a2('0xe')]:'','joinAt':moment()[_0xa7a2('0x15')](_0xa7a2('0x26')),'ContactId':_0x17eb48[_0xa7a2('0x27')]?_0x17eb48[_0xa7a2('0x27')]['id']:null,'ListId':_0x17eb48[_0xa7a2('0x28')]?_0x17eb48['list']['id']:null};_0x2d8a13[_[_0xa7a2('0x29')](_0x17eb48[_0xa7a2('0x2a')])+_0xa7a2('0x2b')]=_0x5d12b0['id']||null;_0x2d8a13[_[_0xa7a2('0x29')](_0x17eb48[_0xa7a2('0x2a')])+_0xa7a2('0x12')]=_0x17eb48['interaction']?_0x17eb48['interaction']['id']:null;_0x2d8a13[_[_0xa7a2('0x29')](_0x17eb48[_0xa7a2('0x2a')])+_0xa7a2('0x2c')]=_0x17eb48[_0xa7a2('0x2d')]?_0x17eb48[_0xa7a2('0x2d')]['id']:null;_0x2d8a13[_['upperFirst'](_0x17eb48[_0xa7a2('0x2a')])+(_0x17eb48[_0xa7a2('0x2a')]!==_0xa7a2('0x2e')?'AccountId':_0xa7a2('0x2f'))]=_0x17eb48[_0xa7a2('0xc')]?_0x17eb48['account']['id']:null;logger['info'](util[_0xa7a2('0x15')]('[%s][START:QUEUE][NAME:%s]',_0x4bb68f,_0x5d12b0[_0xa7a2('0x30')]));emitChannelQueueInteraction(_0x17eb48[_0xa7a2('0x2a')],_0x5d12b0[_0xa7a2('0x30')],_0x2d8a13,_0x17eb48[_0xa7a2('0xc')][_0xa7a2('0x30')],_0x17eb48[_0xa7a2('0x2d')]['id'],!![],_0x356a37,_0x5d12b0['id']);if(rpc[_0x17eb48[_0xa7a2('0x2a')]+_0xa7a2('0x31')]){return rpc[_0x17eb48[_0xa7a2('0x2a')]+_0xa7a2('0x31')]['create'](_0x2d8a13)[_0xa7a2('0x32')](function(_0x4ea93c){logger[_0xa7a2('0x33')](_0xa7a2('0x34'));});}}}function stopRouting(_0x2f2718,_0x5918b6,_0x56e21e,_0x45b34d){if(_0x2f2718&&_0x5918b6){_0x5918b6['waiting']-=0x1;var _0x44d34c={'leaveAt':moment()[_0xa7a2('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xa7a2('0x15')](_0xa7a2('0x26')),'reason':_0xa7a2('0x35')};logger[_0xa7a2('0x36')](util[_0xa7a2('0x15')](_0xa7a2('0x37'),_0x2f2718,_0x5918b6['name']));emitChannelQueueInteraction(_0x56e21e['channel'],_0x5918b6['name'],_0x56e21e['body'],_0x56e21e[_0xa7a2('0xc')]['name'],_0x56e21e['message']['id'],![],_0x45b34d,_0x5918b6['id']);if(rpc[_0x56e21e[_0xa7a2('0x2a')]+_0xa7a2('0x31')]){return rpc[_0x56e21e[_0xa7a2('0x2a')]+_0xa7a2('0x31')][_0xa7a2('0x38')](_0x2f2718,_0x44d34c)['catch'](function(_0x72697c){logger[_0xa7a2('0x33')](_0xa7a2('0x39'));});}}}function endRouting(_0x33a9b4,_0x5ee46c,_0x53c61d,_0x51af00){if(_0x33a9b4&&_0x5ee46c){_0x5ee46c['waiting']-=0x1;var _0x4cf098={'leaveAt':moment()[_0xa7a2('0x15')](_0xa7a2('0x26')),'exitAt':moment()[_0xa7a2('0x15')](_0xa7a2('0x26')),'reason':_0xa7a2('0x3a')};logger[_0xa7a2('0x36')](util[_0xa7a2('0x15')](_0xa7a2('0x3b'),_0x33a9b4,_0x5ee46c[_0xa7a2('0x30')]));emitChannelQueueInteraction(_0x53c61d[_0xa7a2('0x2a')],_0x5ee46c['name'],_0x53c61d[_0xa7a2('0x25')],_0x53c61d[_0xa7a2('0xc')][_0xa7a2('0x30')],_0x53c61d[_0xa7a2('0x2d')]['id'],![],_0x51af00);if(rpc[_0x53c61d[_0xa7a2('0x2a')]+_0xa7a2('0x31')]){return rpc[_0x53c61d[_0xa7a2('0x2a')]+_0xa7a2('0x31')]['update'](_0x33a9b4,_0x4cf098)[_0xa7a2('0x32')](function(_0xad2e04){logger[_0xa7a2('0x33')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x8e5d64){return function(_0x41d017){return _0x41d017['name'][_0xa7a2('0x3c')]()===_0x8e5d64[_0xa7a2('0x3c')]();};}exports[_0xa7a2('0x3d')]=function(_0x265aec,_0x5e4956,_0x287bb3,_0x38701f){return function(_0x18dce4){try{var _0x2d88e6={'name':_0x5e4956[0x0],'timeout':_0x5e4956[0x1]};var _0x5aa45b=queue['validate'](_0x2d88e6,{'typecast':!![]});if(_0x5aa45b['length']){logger[_0xa7a2('0x33')](_0xa7a2('0x3e'),_0x265aec,_['map'](_0x5aa45b,'message')['join'](',\x20'));_0x18dce4[_0xa7a2('0x3f')]();}else{var _0x3ee317=_[_0xa7a2('0x40')](_0x287bb3[_0x38701f['channel']+_0xa7a2('0x41')],handleFindQueue(_0x2d88e6[_0xa7a2('0x30')]));if(_0x3ee317){startRouting(_0x265aec,_0x3ee317,_0x38701f,_0x287bb3);var _0x1f60c9=(_0x3ee317[_0xa7a2('0x3a')]||0xa)*0x3e8;var _0x26706b=(_0x2d88e6[_0xa7a2('0x3a')]||0x14)*0x3e8;var _0x27fa22;if(_0x1f60c9>_0x26706b){_0x26706b=_0x1f60c9;}var _0x259231=seqqueue['createQueue'](_0x1f60c9);_0x259231['id']=_0x265aec;_0x259231[_0xa7a2('0x42')]=_0x1f60c9;_0x259231[_0xa7a2('0x43')]=_0x26706b;_0x259231[_0xa7a2('0x2a')]=_0x38701f[_0xa7a2('0x2a')];_0x287bb3['rules'][_0x265aec]['on'](_0xa7a2('0x44'),function(){logger['info'](_0xa7a2('0x45'),_0x265aec);stopRouting(_0x265aec,_0x3ee317,_0x38701f,_0x287bb3);clearTimeout(_0x27fa22);_0x27fa22=undefined;_0x259231[_0xa7a2('0x46')](!![]);if(_0x287bb3[_0xa7a2('0x47')][_0x265aec]){delete _0x287bb3[_0xa7a2('0x47')][_0x265aec];}_0x18dce4[_0xa7a2('0x3f')]();});_0x287bb3[_0xa7a2('0x47')][_0x265aec]['on']('complete',function(){if(_0x287bb3['rules'][_0x265aec]){delete _0x287bb3['rules'][_0x265aec];}});_0x27fa22=setTimeout(function(){logger[_0xa7a2('0x36')](_0xa7a2('0x48'),_0x265aec);endRouting(_0x265aec,_0x3ee317,_0x38701f,_0x287bb3);clearTimeout(_0x27fa22);_0x259231[_0xa7a2('0x46')](!![]);_0x18dce4[_0xa7a2('0x49')]();},_0x26706b);switch(_0x3ee317[_0xa7a2('0x4a')]){case'rrmemory':strategy[_0xa7a2('0x4b')](_0x259231,_0x3ee317,_0x287bb3,_0x38701f);break;default:strategy[_0xa7a2('0x4c')](_0x259231,_0x3ee317,_0x287bb3,_0x38701f);}}else{logger['error'](_0xa7a2('0x4d'),_0x265aec,_0x2d88e6[_0xa7a2('0x30')]);_0x18dce4[_0xa7a2('0x3f')]();}}}catch(_0x5b069d){console[_0xa7a2('0x4e')](_0x5b069d);logger[_0xa7a2('0x33')](_0xa7a2('0x3e'),_0x265aec,_0x5b069d[_0xa7a2('0x4f')]);_0x18dce4[_0xa7a2('0x3f')]();}};};
\ No newline at end of file
index 27d701d..dd31521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x275b=['[%s][AGENT]\x20try\x20with\x20%s','agent','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','busyQueue','showNotification','writeLog','RINGING',':FORCED','isNil','hideNotification','busy','STOP','exports','uuid','./util','routing','notificationId','squeue','realtime','push','handleRun','handleTimeout','bind','timeout','drained','handleDrained','prototype','debug'];(function(_0x32bbad,_0x2d13e4){var _0x1a2dde=function(_0x3c6881){while(--_0x3c6881){_0x32bbad['push'](_0x32bbad['shift']());}};_0x1a2dde(++_0x2d13e4);}(_0x275b,0x146));var _0xb275=function(_0x46c41f,_0x3e05de){_0x46c41f=_0x46c41f-0x0;var _0x262bd1=_0x275b[_0x46c41f];return _0x262bd1;};'use strict';var _=require('lodash');var uuid=require(_0xb275('0x0'));var util=require(_0xb275('0x1'));var logger=require('../../../../../config/logger')(_0xb275('0x2'));var Agent=function(_0x26402d,_0x129a9d,_0x32acd4,_0x58b721){this[_0xb275('0x3')]=uuid['v4']();this[_0xb275('0x4')]=_0x26402d;this['agent']=_0x129a9d;this[_0xb275('0x5')]=_0x32acd4;this[_0xb275('0x2')]=_0x58b721;this[_0xb275('0x4')][_0xb275('0x6')](this[_0xb275('0x7')]['bind'](this),this[_0xb275('0x8')][_0xb275('0x9')](this));this[_0xb275('0x4')]['on'](_0xb275('0xa'),this[_0xb275('0x8')][_0xb275('0x9')](this));this[_0xb275('0x4')]['on'](_0xb275('0xb'),this[_0xb275('0xc')][_0xb275('0x9')](this));};Agent['prototype'][_0xb275('0x6')]=function(){this[_0xb275('0x4')][_0xb275('0x6')](this[_0xb275('0x7')][_0xb275('0x9')](this),this[_0xb275('0x8')]['bind'](this));};Agent[_0xb275('0xd')][_0xb275('0xc')]=function(){this['handleTimeout'](!![]);};Agent[_0xb275('0xd')][_0xb275('0x7')]=function(){logger[_0xb275('0xe')](_0xb275('0xf'),this[_0xb275('0x4')]['id'],this[_0xb275('0x10')]['id']);if(_['isNil'](this['realtime']['agents'][this[_0xb275('0x10')]['id']])){logger['debug'](_0xb275('0x11'),this['squeue']['id'],this[_0xb275('0x10')]['id']);setTimeout(this[_0xb275('0x6')]['bind'](this),0x3e8);}else{if(this[_0xb275('0x2')][_0xb275('0x12')]||util[_0xb275('0x13')](this['squeue']['id'],this[_0xb275('0x5')][_0xb275('0x14')][this[_0xb275('0x10')]['id']],this['squeue']['channel'],![])){this[_0xb275('0x5')]['agents'][this[_0xb275('0x10')]['id']]['busy']=!![];this['realtime']['agents'][this[_0xb275('0x10')]['id']][_0xb275('0x15')]=undefined;util[_0xb275('0x16')](this[_0xb275('0x3')],this[_0xb275('0x4')]['id'],this[_0xb275('0x5')][_0xb275('0x14')][this['agent']['id']],null,this['routing']);util[_0xb275('0x17')](this['squeue']['id'],this['realtime'][_0xb275('0x14')][this[_0xb275('0x10')]['id']],_0xb275('0x18')+(this['routing'][_0xb275('0x12')]?_0xb275('0x19'):''));}else{logger['debug']('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0xb275('0x4')]['id'],this[_0xb275('0x10')]['id']);setTimeout(this[_0xb275('0x6')][_0xb275('0x9')](this),0x3e8);}}};Agent[_0xb275('0xd')][_0xb275('0x8')]=function(_0x1ad2e5){if(_[_0xb275('0x1a')](this[_0xb275('0x5')][_0xb275('0x14')][this[_0xb275('0x10')]['id']])){return logger[_0xb275('0xe')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0xb275('0x10')]['id']);}else{logger['debug']('[%s][AGENT]\x20timeout\x20with\x20%s',this['squeue']['id'],this[_0xb275('0x10')]['id']);util[_0xb275('0x1b')](this[_0xb275('0x3')],this[_0xb275('0x4')]['id'],this[_0xb275('0x5')][_0xb275('0x14')][this[_0xb275('0x10')]['id']],null,this[_0xb275('0x2')]);this['realtime']['agents'][this[_0xb275('0x10')]['id']][_0xb275('0x1c')]=![];this[_0xb275('0x5')][_0xb275('0x14')][this['agent']['id']][_0xb275('0x15')]=undefined;util[_0xb275('0x17')](this[_0xb275('0x4')]['id'],this[_0xb275('0x5')][_0xb275('0x14')][this[_0xb275('0x10')]['id']],_0x1ad2e5?_0xb275('0x1d'):'TIMEOUT');}if(!_0x1ad2e5){setTimeout(this[_0xb275('0x6')][_0xb275('0x9')](this),0x3e8);}};function agent(_0x3c364e,_0x2bf76f,_0x188db9,_0x118b65){return new Agent(_0x3c364e,_0x2bf76f,_0x188db9,_0x118b65);}module[_0xb275('0x1e')]=agent;
\ No newline at end of file
+var _0x50a6=['uuid','routing','squeue','push','handleRun','handleTimeout','timeout','bind','handleDrained','prototype','debug','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','agent','forcedOwnership','isAgentAvailable','realtime','busy','busyQueue','channel','showNotification','notificationId','writeLog','RINGING','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','STOP','exports','lodash'];(function(_0x4e062a,_0x1298a4){var _0x3a170b=function(_0x38b5a3){while(--_0x38b5a3){_0x4e062a['push'](_0x4e062a['shift']());}};_0x3a170b(++_0x1298a4);}(_0x50a6,0xa4));var _0x650a=function(_0x52a6e3,_0x4a73b4){_0x52a6e3=_0x52a6e3-0x0;var _0x8910d0=_0x50a6[_0x52a6e3];return _0x8910d0;};'use strict';var _=require(_0x650a('0x0'));var uuid=require(_0x650a('0x1'));var util=require('./util');var logger=require('../../../../../config/logger')(_0x650a('0x2'));var Agent=function(_0x4abe0c,_0x19ed86,_0x15dd02,_0x2c71ba){this['notificationId']=uuid['v4']();this[_0x650a('0x3')]=_0x4abe0c;this['agent']=_0x19ed86;this['realtime']=_0x15dd02;this[_0x650a('0x2')]=_0x2c71ba;this[_0x650a('0x3')][_0x650a('0x4')](this[_0x650a('0x5')]['bind'](this),this[_0x650a('0x6')]['bind'](this));this[_0x650a('0x3')]['on'](_0x650a('0x7'),this['handleTimeout'][_0x650a('0x8')](this));this[_0x650a('0x3')]['on']('drained',this[_0x650a('0x9')]['bind'](this));};Agent[_0x650a('0xa')]['push']=function(){this[_0x650a('0x3')]['push'](this[_0x650a('0x5')]['bind'](this),this[_0x650a('0x6')][_0x650a('0x8')](this));};Agent[_0x650a('0xa')]['handleDrained']=function(){this[_0x650a('0x6')](!![]);};Agent[_0x650a('0xa')][_0x650a('0x5')]=function(){logger[_0x650a('0xb')](_0x650a('0xc'),this[_0x650a('0x3')]['id'],this['agent']['id']);if(_[_0x650a('0xd')](this['realtime'][_0x650a('0xe')][this[_0x650a('0xf')]['id']])){logger[_0x650a('0xb')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this['agent']['id']);setTimeout(this['push'][_0x650a('0x8')](this),0x3e8);}else{if(this[_0x650a('0x2')][_0x650a('0x10')]||util[_0x650a('0x11')](this[_0x650a('0x3')]['id'],this['realtime']['agents'][this[_0x650a('0xf')]['id']],this[_0x650a('0x3')]['channel'],![])){this[_0x650a('0x12')][_0x650a('0xe')][this['agent']['id']][_0x650a('0x13')]=!![];this[_0x650a('0x12')][_0x650a('0xe')][this[_0x650a('0xf')]['id']][_0x650a('0x14')]=undefined;util['saveWaitingNotification'](this[_0x650a('0x12')],this['routing'],this[_0x650a('0xf')],this[_0x650a('0x3')][_0x650a('0x15')]);util[_0x650a('0x16')](this[_0x650a('0x17')],this[_0x650a('0x3')]['id'],this[_0x650a('0x12')][_0x650a('0xe')][this[_0x650a('0xf')]['id']],null,this[_0x650a('0x2')]);util[_0x650a('0x18')](this[_0x650a('0x3')]['id'],this[_0x650a('0x12')][_0x650a('0xe')][this[_0x650a('0xf')]['id']],_0x650a('0x19')+(this[_0x650a('0x2')][_0x650a('0x10')]?':FORCED':''));}else{logger[_0x650a('0xb')](_0x650a('0x1a'),this[_0x650a('0x3')]['id'],this['agent']['id']);setTimeout(this[_0x650a('0x4')][_0x650a('0x8')](this),0x3e8);}}};Agent[_0x650a('0xa')][_0x650a('0x6')]=function(_0x3c5bd4){if(_[_0x650a('0xd')](this['realtime'][_0x650a('0xe')][this[_0x650a('0xf')]['id']])){return logger[_0x650a('0xb')](_0x650a('0x1b'),this[_0x650a('0x3')]['id'],this[_0x650a('0xf')]['id']);}else{logger[_0x650a('0xb')](_0x650a('0x1c'),this['squeue']['id'],this[_0x650a('0xf')]['id']);util[_0x650a('0x1d')](this[_0x650a('0x17')],this['squeue']['id'],this[_0x650a('0x12')][_0x650a('0xe')][this['agent']['id']],null,this[_0x650a('0x2')]);this[_0x650a('0x12')][_0x650a('0xe')][this['agent']['id']]['busy']=![];this['realtime'][_0x650a('0xe')][this[_0x650a('0xf')]['id']][_0x650a('0x14')]=undefined;util[_0x650a('0x1e')](this['realtime'],this[_0x650a('0x2')],this[_0x650a('0xf')],this['squeue'][_0x650a('0x15')]);util[_0x650a('0x18')](this[_0x650a('0x3')]['id'],this[_0x650a('0x12')][_0x650a('0xe')][this['agent']['id']],_0x3c5bd4?_0x650a('0x1f'):'TIMEOUT');}if(!_0x3c5bd4){setTimeout(this[_0x650a('0x4')][_0x650a('0x8')](this),0x3e8);}};function agent(_0x5dbdf9,_0x43b91a,_0xa0e8ec,_0x4a0849){return new Agent(_0x5dbdf9,_0x43b91a,_0xa0e8ec,_0x4a0849);}module[_0x650a('0x20')]=agent;
\ No newline at end of file
index 6d16175..ba67a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b40=['squeue','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','push','isNil','Agents','length','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','busyQueue','name','showNotification','debug','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','exports','uuid','./util','routing','notificationId','queue','realtime'];(function(_0x520963,_0x6151a9){var _0xc08fc3=function(_0x9d8687){while(--_0x9d8687){_0x520963['push'](_0x520963['shift']());}};_0xc08fc3(++_0x6151a9);}(_0x0b40,0xba));var _0x00b4=function(_0x1f7413,_0x3388c3){_0x1f7413=_0x1f7413-0x0;var _0x2d2775=_0x0b40[_0x1f7413];return _0x2d2775;};'use strict';var _=require('lodash');var uuid=require(_0x00b4('0x0'));var util=require(_0x00b4('0x1'));var logger=require('../../../../../config/logger')(_0x00b4('0x2'));var Beepall=function(_0x309480,_0xa2cb7f,_0x173af6,_0x350fba){this[_0x00b4('0x3')]=uuid['v4']();this['squeue']=_0x309480;this[_0x00b4('0x4')]=_0xa2cb7f;this[_0x00b4('0x5')]=_0x173af6;this[_0x00b4('0x2')]=_0x350fba;this[_0x00b4('0x6')]['push'](this[_0x00b4('0x7')][_0x00b4('0x8')](this),this[_0x00b4('0x9')]['bind'](this));this[_0x00b4('0x6')]['on'](_0x00b4('0xa'),this['handleTimeout']['bind'](this));this[_0x00b4('0x6')]['on'](_0x00b4('0xb'),this[_0x00b4('0xc')][_0x00b4('0x8')](this));};Beepall[_0x00b4('0xd')][_0x00b4('0xe')]=function(){this[_0x00b4('0x6')][_0x00b4('0xe')](this[_0x00b4('0x7')][_0x00b4('0x8')](this),this[_0x00b4('0x9')][_0x00b4('0x8')](this));};Beepall['prototype']['handleDrained']=function(){this[_0x00b4('0x9')](!![]);};Beepall[_0x00b4('0xd')][_0x00b4('0x7')]=function(){var _0x2868e9=!![];if(!_['isNil'](this[_0x00b4('0x4')])&&!_[_0x00b4('0xf')](this[_0x00b4('0x4')][_0x00b4('0x10')])&&this[_0x00b4('0x4')][_0x00b4('0x10')][_0x00b4('0x11')]>0x0){for(var _0x56e54c=0x0,_0x253e76;_0x56e54c<this[_0x00b4('0x4')][_0x00b4('0x10')][_0x00b4('0x11')];_0x56e54c+=0x1){_0x253e76=this[_0x00b4('0x4')]['Agents'][_0x56e54c]['id'];if(_[_0x00b4('0xf')](this[_0x00b4('0x5')][_0x00b4('0x12')][_0x253e76])){logger['debug'](_0x00b4('0x13'),this[_0x00b4('0x6')]['id'],_0x253e76);}else{if(util[_0x00b4('0x14')](this[_0x00b4('0x6')]['id'],this[_0x00b4('0x5')]['agents'][_0x253e76],this['squeue'][_0x00b4('0x15')],!![])){_0x2868e9=![];util[_0x00b4('0x16')](this[_0x00b4('0x6')]['id'],this[_0x00b4('0x5')][_0x00b4('0x12')][_0x253e76],'RINGING');this[_0x00b4('0x5')][_0x00b4('0x12')][_0x253e76]['busy']=!![];this[_0x00b4('0x5')][_0x00b4('0x12')][_0x253e76][_0x00b4('0x17')]=this['queue'][_0x00b4('0x18')];util[_0x00b4('0x19')](this[_0x00b4('0x3')],this['squeue']['id'],this['realtime'][_0x00b4('0x12')][_0x253e76],this[_0x00b4('0x4')],this[_0x00b4('0x2')]);}}}if(_0x2868e9){logger[_0x00b4('0x1a')](_0x00b4('0x1b'),this[_0x00b4('0x6')]['id']);setTimeout(this['push'][_0x00b4('0x8')](this),0x3e8);}}else{logger[_0x00b4('0x1a')](_0x00b4('0x1c'),this[_0x00b4('0x6')]['id']);setTimeout(this[_0x00b4('0xe')][_0x00b4('0x8')](this),0x3e8);}};Beepall[_0x00b4('0xd')][_0x00b4('0x9')]=function(_0x3d3684){if(!_[_0x00b4('0xf')](this[_0x00b4('0x4')])&&!_['isNil'](this[_0x00b4('0x4')][_0x00b4('0x10')])){for(var _0x416af9=0x0,_0xa14bc0;_0x416af9<this[_0x00b4('0x4')]['Agents'][_0x00b4('0x11')];_0x416af9+=0x1){_0xa14bc0=this['queue'][_0x00b4('0x10')][_0x416af9]['id'];if(_[_0x00b4('0xf')](this['realtime'][_0x00b4('0x12')][_0xa14bc0])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0xa14bc0);}else{util[_0x00b4('0x1d')](this[_0x00b4('0x3')],this[_0x00b4('0x6')]['id'],this[_0x00b4('0x5')]['agents'][_0xa14bc0],this['queue'],this[_0x00b4('0x2')]);util[_0x00b4('0x16')](this[_0x00b4('0x6')]['id'],this[_0x00b4('0x5')][_0x00b4('0x12')][_0xa14bc0],_0x3d3684?_0x00b4('0x1e'):'TIMEOUT');this[_0x00b4('0x5')][_0x00b4('0x12')][_0xa14bc0]['busy']=![];this['realtime'][_0x00b4('0x12')][_0xa14bc0]['busyQueue']=undefined;}}}if(!_0x3d3684){setTimeout(this['push'][_0x00b4('0x8')](this),0x3e8);}};function beepall(_0x137839,_0x31e719,_0x4b77fc,_0x11f076){return new Beepall(_0x137839,_0x31e719,_0x4b77fc,_0x11f076);}module[_0x00b4('0x1f')]=beepall;
\ No newline at end of file
+var _0x9487=['showNotification','debug','[%s][QUEUE]\x20EMPTY','STOP','TIMEOUT','busy','removeWaitingNotification','uuid','./util','routing','notificationId','squeue','handleRun','bind','handleTimeout','drained','handleDrained','prototype','push','queue','isNil','length','Agents','realtime','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel','writeLog','RINGING','busyQueue','name','saveWaitingNotification'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x9487,0xac));var _0x7948=function(_0x38f90e,_0x21b878){_0x38f90e=_0x38f90e-0x0;var _0x150f1e=_0x9487[_0x38f90e];return _0x150f1e;};'use strict';var _=require('lodash');var uuid=require(_0x7948('0x0'));var util=require(_0x7948('0x1'));var logger=require('../../../../../config/logger')(_0x7948('0x2'));var Beepall=function(_0x2c62b6,_0x156ee2,_0x2073d9,_0x7697ce){this[_0x7948('0x3')]=uuid['v4']();this[_0x7948('0x4')]=_0x2c62b6;this['queue']=_0x156ee2;this['realtime']=_0x2073d9;this[_0x7948('0x2')]=_0x7697ce;this[_0x7948('0x4')]['push'](this[_0x7948('0x5')][_0x7948('0x6')](this),this[_0x7948('0x7')][_0x7948('0x6')](this));this[_0x7948('0x4')]['on']('timeout',this[_0x7948('0x7')][_0x7948('0x6')](this));this[_0x7948('0x4')]['on'](_0x7948('0x8'),this[_0x7948('0x9')][_0x7948('0x6')](this));};Beepall[_0x7948('0xa')][_0x7948('0xb')]=function(){this[_0x7948('0x4')][_0x7948('0xb')](this[_0x7948('0x5')]['bind'](this),this[_0x7948('0x7')][_0x7948('0x6')](this));};Beepall['prototype'][_0x7948('0x9')]=function(){this[_0x7948('0x7')](!![]);};Beepall['prototype'][_0x7948('0x5')]=function(){var _0x54293a=!![];if(!_['isNil'](this[_0x7948('0xc')])&&!_[_0x7948('0xd')](this[_0x7948('0xc')]['Agents'])&&this[_0x7948('0xc')]['Agents'][_0x7948('0xe')]>0x0){for(var _0x45b0af=0x0,_0x3acd8c;_0x45b0af<this[_0x7948('0xc')][_0x7948('0xf')][_0x7948('0xe')];_0x45b0af+=0x1){_0x3acd8c=this[_0x7948('0xc')][_0x7948('0xf')][_0x45b0af]['id'];if(_['isNil'](this[_0x7948('0x10')]['agents'][_0x3acd8c])){logger['debug'](_0x7948('0x11'),this[_0x7948('0x4')]['id'],_0x3acd8c);}else{if(util[_0x7948('0x12')](this[_0x7948('0x4')]['id'],this[_0x7948('0x10')][_0x7948('0x13')][_0x3acd8c],this[_0x7948('0x4')][_0x7948('0x14')],!![])){_0x54293a=![];util[_0x7948('0x15')](this['squeue']['id'],this[_0x7948('0x10')][_0x7948('0x13')][_0x3acd8c],_0x7948('0x16'));this['realtime'][_0x7948('0x13')][_0x3acd8c]['busy']=!![];this['realtime']['agents'][_0x3acd8c][_0x7948('0x17')]=this['queue'][_0x7948('0x18')];util[_0x7948('0x19')](this[_0x7948('0x10')],this[_0x7948('0x2')],this['queue'][_0x7948('0xf')][_0x45b0af],this[_0x7948('0x4')][_0x7948('0x14')]);util[_0x7948('0x1a')](this['notificationId'],this['squeue']['id'],this[_0x7948('0x10')]['agents'][_0x3acd8c],this['queue'],this[_0x7948('0x2')]);}}}if(_0x54293a){logger[_0x7948('0x1b')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x7948('0x4')]['id']);setTimeout(this[_0x7948('0xb')][_0x7948('0x6')](this),0x3e8);}}else{logger[_0x7948('0x1b')](_0x7948('0x1c'),this[_0x7948('0x4')]['id']);setTimeout(this[_0x7948('0xb')]['bind'](this),0x3e8);}};Beepall[_0x7948('0xa')][_0x7948('0x7')]=function(_0x3f6edf){if(!_[_0x7948('0xd')](this['queue'])&&!_[_0x7948('0xd')](this[_0x7948('0xc')][_0x7948('0xf')])){for(var _0x699bd4=0x0,_0x19e4f2;_0x699bd4<this[_0x7948('0xc')][_0x7948('0xf')]['length'];_0x699bd4+=0x1){_0x19e4f2=this['queue'][_0x7948('0xf')][_0x699bd4]['id'];if(_[_0x7948('0xd')](this['realtime'][_0x7948('0x13')][_0x19e4f2])){logger[_0x7948('0x1b')](_0x7948('0x11'),this[_0x7948('0x4')]['id'],_0x19e4f2);}else{util['hideNotification'](this[_0x7948('0x3')],this[_0x7948('0x4')]['id'],this[_0x7948('0x10')][_0x7948('0x13')][_0x19e4f2],this[_0x7948('0xc')],this[_0x7948('0x2')]);util[_0x7948('0x15')](this[_0x7948('0x4')]['id'],this[_0x7948('0x10')]['agents'][_0x19e4f2],_0x3f6edf?_0x7948('0x1d'):_0x7948('0x1e'));this[_0x7948('0x10')][_0x7948('0x13')][_0x19e4f2][_0x7948('0x1f')]=![];this['realtime'][_0x7948('0x13')][_0x19e4f2]['busyQueue']=undefined;util[_0x7948('0x20')](this[_0x7948('0x10')],this[_0x7948('0x2')],this[_0x7948('0x10')]['agents'][_0x19e4f2],this[_0x7948('0x4')][_0x7948('0x14')]);}}}if(!_0x3f6edf){setTimeout(this[_0x7948('0xb')][_0x7948('0x6')](this),0x3e8);}};function beepall(_0x502c75,_0x251399,_0x417818,_0x42a160){return new Beepall(_0x502c75,_0x251399,_0x417818,_0x42a160);}module['exports']=beepall;
\ No newline at end of file
index 7335163..1e7b6a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa440=['./beepall','./agent','exports'];(function(_0x350ab9,_0x2f11e7){var _0x5a8b03=function(_0x168a5a){while(--_0x168a5a){_0x350ab9['push'](_0x350ab9['shift']());}};_0x5a8b03(++_0x2f11e7);}(_0xa440,0x1cd));var _0x0a44=function(_0xea35d1,_0x302471){_0xea35d1=_0xea35d1-0x0;var _0x1d7a7c=_0xa440[_0xea35d1];return _0x1d7a7c;};'use strict';module[_0x0a44('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x0a44('0x1')),'agent':require(_0x0a44('0x2'))};
\ No newline at end of file
+'use strict';module['exports']={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
index 0cb8e1b..05a82fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3fe=['writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','TIMEOUT','lodash','./util','../../../../../config/logger','notificationId','queue','realtime','routing','push','handleRun','bind','module','handleTimeout','squeue','prototype','isAgentAvailable','agents','agentId','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','intervals','done','mapAgentsId','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','showNotification'];(function(_0x3e6aed,_0x97a2f1){var _0x3220dd=function(_0x252cd2){while(--_0x252cd2){_0x3e6aed['push'](_0x3e6aed['shift']());}};_0x3220dd(++_0x97a2f1);}(_0xa3fe,0xd8));var _0xea3f=function(_0x34ff75,_0x2d83e6){_0x34ff75=_0x34ff75-0x0;var _0xc42f63=_0xa3fe[_0x34ff75];return _0xc42f63;};'use strict';var rr=require('rr');var _=require(_0xea3f('0x0'));var uuid=require('uuid');var util=require(_0xea3f('0x1'));var logger=require(_0xea3f('0x2'))('routing');var RRMemory=function(_0x206f17,_0x43f13b,_0xc23ba9,_0x5d6309){this[_0xea3f('0x3')]=uuid['v4']();this['squeue']=_0x206f17;this[_0xea3f('0x4')]=_0x43f13b;this[_0xea3f('0x5')]=_0xc23ba9;this[_0xea3f('0x6')]=_0x5d6309;this['intervals']={};this['squeue'][_0xea3f('0x7')](this[_0xea3f('0x8')][_0xea3f('0x9')](this),this['handleTimeout']['bind'](this),this[_0xea3f('0xa')]);this['squeue']['on']('timeout',this[_0xea3f('0xb')][_0xea3f('0x9')](this));this[_0xea3f('0xc')]['on']('drained',this['handleDrained']['bind'](this));};RRMemory[_0xea3f('0xd')][_0xea3f('0x7')]=function(){this[_0xea3f('0xc')][_0xea3f('0x7')](this['handleRun']['bind'](this),this['handleTimeout'][_0xea3f('0x9')](this));};RRMemory[_0xea3f('0xd')]['handleDrained']=function(){this[_0xea3f('0xb')](!![]);};RRMemory[_0xea3f('0xd')]['handleCheckReject']=function(_0x1786f6){if(util[_0xea3f('0xe')](this[_0xea3f('0xc')]['id'],this[_0xea3f('0x5')][_0xea3f('0xf')][this[_0xea3f('0x10')]],this[_0xea3f('0xc')][_0xea3f('0x11')],!![])){logger[_0xea3f('0x12')](_0xea3f('0x13'),this[_0xea3f('0xc')]['id'],this[_0xea3f('0x10')]);clearInterval(this[_0xea3f('0x14')][this[_0xea3f('0x10')]]);_0x1786f6[_0xea3f('0x15')]();setTimeout(this[_0xea3f('0x7')][_0xea3f('0x9')](this),0x3e8);}};RRMemory[_0xea3f('0xd')]['handleRun']=function(_0x4e1c9d){this[_0xea3f('0x10')]=rr(this[_0xea3f('0x4')][_0xea3f('0x16')]);logger[_0xea3f('0x12')]('[%s][QUEUE]\x20try\x20with\x20%s',this['squeue']['id'],this[_0xea3f('0x10')]);if(_[_0xea3f('0x17')](this['realtime'][_0xea3f('0xf')][this[_0xea3f('0x10')]])){logger[_0xea3f('0x12')](_0xea3f('0x18'),this['squeue']['id'],this['agentId']);_0x4e1c9d['done']();setTimeout(this[_0xea3f('0x7')][_0xea3f('0x9')](this),0x3e8);}else{if(util[_0xea3f('0xe')](this[_0xea3f('0xc')]['id'],this[_0xea3f('0x5')][_0xea3f('0xf')][this[_0xea3f('0x10')]],this['squeue'][_0xea3f('0x11')],!![])){this['realtime'][_0xea3f('0xf')][this[_0xea3f('0x10')]][_0xea3f('0x19')]=!![];this[_0xea3f('0x5')][_0xea3f('0xf')][this['agentId']][_0xea3f('0x1a')]=this['queue'][_0xea3f('0x1b')];util[_0xea3f('0x1c')](this[_0xea3f('0x3')],this['squeue']['id'],this[_0xea3f('0x5')][_0xea3f('0xf')][this['agentId']],this[_0xea3f('0x4')],this[_0xea3f('0x6')]);util[_0xea3f('0x1d')](this[_0xea3f('0xc')]['id'],this[_0xea3f('0x5')][_0xea3f('0xf')][this[_0xea3f('0x10')]],_0xea3f('0x1e'));this[_0xea3f('0x14')][this[_0xea3f('0x10')]]=setInterval(this[_0xea3f('0x1f')][_0xea3f('0x9')](this,_0x4e1c9d),0x3e8);}else{logger[_0xea3f('0x12')](_0xea3f('0x20'),this[_0xea3f('0xc')]['id'],this[_0xea3f('0x10')]);_0x4e1c9d[_0xea3f('0x15')]();setTimeout(this[_0xea3f('0x7')][_0xea3f('0x9')](this),0x3e8);}}};RRMemory['prototype'][_0xea3f('0xb')]=function(_0x2d552b){logger[_0xea3f('0x12')](_0xea3f('0x21'),this[_0xea3f('0xc')]['id'],this[_0xea3f('0x10')]);if(_[_0xea3f('0x17')](this[_0xea3f('0x5')][_0xea3f('0xf')][this['agentId']])){logger[_0xea3f('0x12')](_0xea3f('0x18'),this[_0xea3f('0xc')]['id'],this[_0xea3f('0x10')]);}else{clearInterval(this[_0xea3f('0x14')][this['agentId']]);util['hideNotification'](this[_0xea3f('0x3')],this['squeue']['id'],this[_0xea3f('0x5')][_0xea3f('0xf')][this[_0xea3f('0x10')]],this[_0xea3f('0x4')],this[_0xea3f('0x6')]);util[_0xea3f('0x1d')](this['squeue']['id'],this[_0xea3f('0x5')]['agents'][this['agentId']],_0xea3f('0x22'));this[_0xea3f('0x5')][_0xea3f('0xf')][this[_0xea3f('0x10')]][_0xea3f('0x19')]=![];this[_0xea3f('0x5')][_0xea3f('0xf')][this[_0xea3f('0x10')]][_0xea3f('0x1a')]=undefined;}if(!_0x2d552b){setTimeout(this[_0xea3f('0x7')][_0xea3f('0x9')](this),0x3e8);}};function rrmemory(_0x37e63c,_0x2adbb0,_0x542219,_0xb7d4e5){return new RRMemory(_0x37e63c,_0x2adbb0,_0x542219,_0xb7d4e5);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x0cf5=['handleTimeout','module','timeout','drained','prototype','handleDrained','isAgentAvailable','agents','agentId','debug','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busyQueue','name','saveWaitingNotification','routing','showNotification','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','writeLog','TIMEOUT','busy','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','queue','realtime','intervals','push','handleRun','bind'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0cf5,0xf0));var _0x50cf=function(_0x5472bc,_0x2e6658){_0x5472bc=_0x5472bc-0x0;var _0x3a07a3=_0x0cf5[_0x5472bc];return _0x3a07a3;};'use strict';var rr=require('rr');var _=require(_0x50cf('0x0'));var uuid=require(_0x50cf('0x1'));var util=require(_0x50cf('0x2'));var logger=require(_0x50cf('0x3'))('routing');var RRMemory=function(_0x2348f7,_0x8231fd,_0x280066,_0x394f2){this[_0x50cf('0x4')]=uuid['v4']();this[_0x50cf('0x5')]=_0x2348f7;this[_0x50cf('0x6')]=_0x8231fd;this[_0x50cf('0x7')]=_0x280066;this['routing']=_0x394f2;this[_0x50cf('0x8')]={};this[_0x50cf('0x5')][_0x50cf('0x9')](this[_0x50cf('0xa')][_0x50cf('0xb')](this),this[_0x50cf('0xc')]['bind'](this),this[_0x50cf('0xd')]);this['squeue']['on'](_0x50cf('0xe'),this[_0x50cf('0xc')][_0x50cf('0xb')](this));this[_0x50cf('0x5')]['on'](_0x50cf('0xf'),this['handleDrained'][_0x50cf('0xb')](this));};RRMemory[_0x50cf('0x10')]['push']=function(){this[_0x50cf('0x5')][_0x50cf('0x9')](this[_0x50cf('0xa')][_0x50cf('0xb')](this),this['handleTimeout'][_0x50cf('0xb')](this));};RRMemory[_0x50cf('0x10')][_0x50cf('0x11')]=function(){this[_0x50cf('0xc')](!![]);};RRMemory[_0x50cf('0x10')]['handleCheckReject']=function(_0x2b1f44){if(util[_0x50cf('0x12')](this[_0x50cf('0x5')]['id'],this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]],this[_0x50cf('0x5')]['channel'],!![])){logger[_0x50cf('0x15')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x50cf('0x5')]['id'],this[_0x50cf('0x14')]);clearInterval(this[_0x50cf('0x8')][this[_0x50cf('0x14')]]);_0x2b1f44[_0x50cf('0x16')]();setTimeout(this[_0x50cf('0x9')][_0x50cf('0xb')](this),0x3e8);}};RRMemory[_0x50cf('0x10')][_0x50cf('0xa')]=function(_0xd182c0){this['agentId']=rr(this[_0x50cf('0x6')][_0x50cf('0x17')]);logger[_0x50cf('0x15')](_0x50cf('0x18'),this[_0x50cf('0x5')]['id'],this[_0x50cf('0x14')]);if(_[_0x50cf('0x19')](this['realtime'][_0x50cf('0x13')][this[_0x50cf('0x14')]])){logger[_0x50cf('0x15')](_0x50cf('0x1a'),this['squeue']['id'],this[_0x50cf('0x14')]);_0xd182c0['done']();setTimeout(this[_0x50cf('0x9')]['bind'](this),0x3e8);}else{if(util[_0x50cf('0x12')](this[_0x50cf('0x5')]['id'],this['realtime'][_0x50cf('0x13')][this[_0x50cf('0x14')]],this[_0x50cf('0x5')][_0x50cf('0x1b')],!![])){this['realtime'][_0x50cf('0x13')][this[_0x50cf('0x14')]]['busy']=!![];this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]][_0x50cf('0x1c')]=this[_0x50cf('0x6')][_0x50cf('0x1d')];util[_0x50cf('0x1e')](this['realtime'],this[_0x50cf('0x1f')],this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]],this[_0x50cf('0x5')][_0x50cf('0x1b')]);util[_0x50cf('0x20')](this[_0x50cf('0x4')],this[_0x50cf('0x5')]['id'],this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]],this[_0x50cf('0x6')],this['routing']);util['writeLog'](this[_0x50cf('0x5')]['id'],this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]],_0x50cf('0x21'));this[_0x50cf('0x8')][this[_0x50cf('0x14')]]=setInterval(this['handleCheckReject'][_0x50cf('0xb')](this,_0xd182c0),0x3e8);}else{logger['debug'](_0x50cf('0x22'),this['squeue']['id'],this[_0x50cf('0x14')]);_0xd182c0[_0x50cf('0x16')]();setTimeout(this[_0x50cf('0x9')][_0x50cf('0xb')](this),0x3e8);}}};RRMemory['prototype'][_0x50cf('0xc')]=function(_0x2f641c){logger[_0x50cf('0x15')](_0x50cf('0x23'),this[_0x50cf('0x5')]['id'],this[_0x50cf('0x14')]);if(_[_0x50cf('0x19')](this['realtime'][_0x50cf('0x13')][this[_0x50cf('0x14')]])){logger[_0x50cf('0x15')](_0x50cf('0x1a'),this['squeue']['id'],this[_0x50cf('0x14')]);}else{clearInterval(this[_0x50cf('0x8')][this[_0x50cf('0x14')]]);util[_0x50cf('0x24')](this['notificationId'],this[_0x50cf('0x5')]['id'],this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]],this['queue'],this['routing']);util[_0x50cf('0x25')](this[_0x50cf('0x5')]['id'],this[_0x50cf('0x7')]['agents'][this['agentId']],_0x50cf('0x26'));this[_0x50cf('0x7')]['agents'][this[_0x50cf('0x14')]][_0x50cf('0x27')]=![];this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]][_0x50cf('0x1c')]=undefined;util[_0x50cf('0x28')](this[_0x50cf('0x7')],this[_0x50cf('0x1f')],this[_0x50cf('0x7')][_0x50cf('0x13')][this[_0x50cf('0x14')]],this['squeue'][_0x50cf('0x1b')]);}if(!_0x2f641c){setTimeout(this[_0x50cf('0x9')][_0x50cf('0xb')](this),0x3e8);}};function rrmemory(_0x5a3cd7,_0x1ab776,_0x16e9b9,_0xb59b0c){return new RRMemory(_0x5a3cd7,_0x1ab776,_0x16e9b9,_0xb59b0c);}module[_0x50cf('0x29')]=rrmemory;
\ No newline at end of file
index 848a8a2..11ccead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['redis','localhost','socket.io-emitter','format','user:%s','name','emit','user:save','split','\x20interaction','account','notificationSound','body','queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','message','notification:%s','save','remove','debug','isAgentAvailable','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','lodash','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing'];(function(_0x49825c,_0x2bdea6){var _0x1ea82d=function(_0x167f9a){while(--_0x167f9a){_0x49825c['push'](_0x49825c['shift']());}};_0x1ea82d(++_0x2bdea6);}(_0x7217,0x19e));var _0x7721=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x7217[_0x411add];return _0x238242;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var utils=require(_0x7721('0x1'));var Redis=require(_0x7721('0x2'));var config=require(_0x7721('0x3'));var logger=require(_0x7721('0x4'))(_0x7721('0x5'));config['redis']=_['defaults'](config[_0x7721('0x6')],{'host':_0x7721('0x7'),'port':0x18eb});var io=require(_0x7721('0x8'))(new Redis(config[_0x7721('0x6')]));function sendNotification(_0xb239e0,_0xf7ff37,_0x18ab6b,_0x21f680,_0x225610,_0x2f99ed){io['to'](util[_0x7721('0x9')](_0x7721('0xa'),_0x21f680[_0x7721('0xb')]))[_0x7721('0xc')](_0x7721('0xd'),_0x21f680);var _0x578d59=_0x2f99ed||{};var _0x461d1a=_0x18ab6b[_0x7721('0xe')]('.');var _0x8729a6={'uniqueid':_0xf7ff37,'channel':_0x461d1a[0x0],'id':_0x461d1a[0x1],'title':_0x461d1a[0x0]+_0x7721('0xf'),'interactionId':_0x461d1a[0x2],'queue':_0x225610?_0x225610[_0x7721('0xb')]:null,'sound':_0x578d59[_0x7721('0x10')][_0x7721('0x11')],'shake':_0x578d59[_0x7721('0x10')]['notificationShake']};try{if(!_0x578d59[_0x7721('0x12')]){_0x578d59[_0x7721('0x12')]={};}if(_0x225610){_0x578d59['body'][_0x7721('0x13')]=_0x225610;}else if(_0x578d59[_0x7721('0x12')][_0x7721('0x13')]){delete _0x578d59[_0x7721('0x12')]['queue'];}_0x8729a6[_0x7721('0x14')]=utils[_0x7721('0x15')](_0x578d59['account']['notificationTemplate'],_0x578d59);}catch(_0x4b183e){_0x8729a6[_0x7721('0x14')]=_0x7721('0x16');logger[_0x7721('0x17')](util[_0x7721('0x9')]('[%s][QUEUE]\x20%s',_0xf7ff37,_0x4b183e[_0x7721('0x18')]));}io['to'](util['format'](_0x7721('0xa'),_0x21f680['name']))[_0x7721('0xc')](util[_0x7721('0x9')](_0x7721('0x19'),_0xb239e0?_0x7721('0x1a'):_0x7721('0x1b')),_0x8729a6);}function writeLog(_0x40af90,_0x402820,_0x413263){return logger[_0x7721('0x1c')](util[_0x7721('0x9')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x40af90,_0x402820[_0x7721('0xb')],_0x413263));}exports[_0x7721('0x1d')]=function(_0x3a053f,_0xd8ad3c,_0x57140c,_0x28f5a6){if(_0xd8ad3c['busy']){writeLog(_0x3a053f,_0xd8ad3c,_0x7721('0x1e'));return![];}if(!_0xd8ad3c[_0x7721('0x1f')]){writeLog(_0x3a053f,_0xd8ad3c,_0x7721('0x20'));return![];}if(_0xd8ad3c[_0x57140c+_0x7721('0x21')]){writeLog(_0x3a053f,_0xd8ad3c,_0x7721('0x22'));return![];}if(_0x28f5a6&&_0xd8ad3c[_0x7721('0x23')](_0x57140c+_0x7721('0x24'))&&_0xd8ad3c['hasOwnProperty'](_0x57140c+_0x7721('0x25'))){if(_0xd8ad3c[_0x57140c+_0x7721('0x24')]>0x0&&_0xd8ad3c[_0x57140c+_0x7721('0x25')]>=_0xd8ad3c[_0x57140c+_0x7721('0x24')]){writeLog(_0x3a053f,_0xd8ad3c,_0x57140c[_0x7721('0x26')]()+_0x7721('0x27'));return![];}}return!![];};exports[_0x7721('0x28')]=function(_0xf753f1,_0x40f367,_0x52316e,_0x258ddf,_0x5b0551){return sendNotification(!![],_0xf753f1,_0x40f367,_0x52316e,_0x258ddf,_0x5b0551);};exports['hideNotification']=function(_0x315202,_0x343c19,_0x53c904,_0x158d98,_0x1ea4d){return sendNotification(![],_0x315202,_0x343c19,_0x53c904,_0x158d98,_0x1ea4d);};exports[_0x7721('0x29')]=writeLog;
\ No newline at end of file
+var _0x131a=['isAgentAvailable','busy','Pause','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','interaction','UserId','capitalize','InteractionId','some','agents','WaitingInteractions','removeWaitingNotification','writeLog','lodash','../../../../../config/environment','../../../../../config/logger','routing','defaults','redis','user:%s','name','emit','user:save','split','\x20interaction','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','format','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]'];(function(_0x92fb15,_0x12bfac){var _0x5ac621=function(_0x59969f){while(--_0x59969f){_0x92fb15['push'](_0x92fb15['shift']());}};_0x5ac621(++_0x12bfac);}(_0x131a,0x1f2));var _0xa131=function(_0x5b99f8,_0x2e09d8){_0x5b99f8=_0x5b99f8-0x0;var _0x11ed4e=_0x131a[_0x5b99f8];return _0x11ed4e;};'use strict';var _=require(_0xa131('0x0'));var util=require('util');var utils=require('../utils');var Redis=require('ioredis');var config=require(_0xa131('0x1'));var logger=require(_0xa131('0x2'))(_0xa131('0x3'));config['redis']=_[_0xa131('0x4')](config[_0xa131('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function sendNotification(_0x37949c,_0x620028,_0x4ba222,_0x39d037,_0x74ea24,_0x40bf93){io['to'](util['format'](_0xa131('0x6'),_0x39d037[_0xa131('0x7')]))[_0xa131('0x8')](_0xa131('0x9'),_0x39d037);var _0x709a03=_0x40bf93||{};var _0xd4622=_0x4ba222[_0xa131('0xa')]('.');var _0x323101={'uniqueid':_0x620028,'channel':_0xd4622[0x0],'id':_0xd4622[0x1],'title':_0xd4622[0x0]+_0xa131('0xb'),'interactionId':_0xd4622[0x2],'queue':_0x74ea24?_0x74ea24[_0xa131('0x7')]:null,'sound':_0x709a03[_0xa131('0xc')][_0xa131('0xd')],'shake':_0x709a03[_0xa131('0xc')][_0xa131('0xe')]};try{if(!_0x709a03[_0xa131('0xf')]){_0x709a03[_0xa131('0xf')]={};}if(_0x74ea24){_0x709a03[_0xa131('0xf')][_0xa131('0x10')]=_0x74ea24;}else if(_0x709a03[_0xa131('0xf')]['queue']){delete _0x709a03[_0xa131('0xf')][_0xa131('0x10')];}_0x323101['msg']=utils[_0xa131('0x11')](_0x709a03[_0xa131('0xc')][_0xa131('0x12')],_0x709a03);}catch(_0x2d7195){_0x323101[_0xa131('0x13')]=_0xa131('0x14');logger[_0xa131('0x15')](util['format'](_0xa131('0x16'),_0x620028,_0x2d7195[_0xa131('0x17')]));}io['to'](util['format'](_0xa131('0x6'),_0x39d037[_0xa131('0x7')]))[_0xa131('0x8')](util[_0xa131('0x18')](_0xa131('0x19'),_0x37949c?_0xa131('0x1a'):_0xa131('0x1b')),_0x323101);}function writeLog(_0x287f9b,_0x571f97,_0x8a9e9e){return logger[_0xa131('0x1c')](util['format'](_0xa131('0x1d'),_0x287f9b,_0x571f97['name'],_0x8a9e9e));}exports[_0xa131('0x1e')]=function(_0x228cad,_0x4b6d46,_0x35e368,_0x230ede){if(_0x4b6d46[_0xa131('0x1f')]){writeLog(_0x228cad,_0x4b6d46,'BUSY');return![];}if(!_0x4b6d46['online']){writeLog(_0x228cad,_0x4b6d46,'OFFLINE');return![];}if(_0x4b6d46[_0x35e368+_0xa131('0x20')]){writeLog(_0x228cad,_0x4b6d46,'PAUSE');return![];}if(_0x230ede&&_0x4b6d46['hasOwnProperty'](_0x35e368+_0xa131('0x21'))&&_0x4b6d46['hasOwnProperty'](_0x35e368+_0xa131('0x22'))){if(_0x4b6d46[_0x35e368+_0xa131('0x21')]>0x0&&_0x4b6d46[_0x35e368+_0xa131('0x22')]>=_0x4b6d46[_0x35e368+_0xa131('0x21')]){writeLog(_0x228cad,_0x4b6d46,_0x35e368[_0xa131('0x23')]()+_0xa131('0x24'));return![];}}return!![];};exports[_0xa131('0x25')]=function(_0x5dc35f,_0x54ef1a,_0xe0e8e6,_0xa17b2b,_0x132ab0){return sendNotification(!![],_0x5dc35f,_0x54ef1a,_0xe0e8e6,_0xa17b2b,_0x132ab0);};exports[_0xa131('0x26')]=function(_0x47574e,_0x21b927,_0x342eba,_0x5c5532,_0x165df5){return sendNotification(![],_0x47574e,_0x21b927,_0x342eba,_0x5c5532,_0x165df5);};exports['checkWaitingNotifications']=function(_0x5f5724,_0x233056,_0x2e4b3d){var _0x50874d=_0x233056[_0xa131('0x27')][_0xa131('0x28')];if(!_0x50874d&&_0x2e4b3d){_0x50874d=_0x2e4b3d['id'];}var _0x4b5993=_['some'](_0x5f5724[_0x233056['channel']+'QueuesWaitingInteractions'],function(_0x5eb109){var _0x3890df=_[_0xa131('0x29')](_0x233056['channel'])+_0xa131('0x2a');return _0x5eb109[_0x3890df]===_0x233056[_0xa131('0x27')]['id'];});if(!_0x4b5993&&_0x50874d){_0x4b5993=_[_0xa131('0x2b')](_0x5f5724[_0xa131('0x2c')][_0x50874d][_0x233056['channel']+_0xa131('0x2d')],function(_0x202e8f){return _0x202e8f['id']===_0x233056[_0xa131('0x27')]['id'];});}return _0x4b5993;};exports['saveWaitingNotification']=function(_0x117622,_0xcc7981,_0xf95754,_0x18e725){_0x117622[_0xa131('0x2c')][_0xf95754['id']][_0x18e725+_0xa131('0x2d')][_0xcc7981[_0xa131('0x17')]['id']]={'id':_0xcc7981[_0xa131('0x27')]['id']};};exports[_0xa131('0x2e')]=function(_0x437dd5,_0x5a4ba2,_0xfaed8b,_0x3dd9a8){delete _0x437dd5[_0xa131('0x2c')][_0xfaed8b['id']][_0x3dd9a8+_0xa131('0x2d')][_0x5a4ba2[_0xa131('0x17')]['id']];};exports[_0xa131('0x2f')]=writeLog;
\ No newline at end of file
index 842fd92..6206e94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd882=['[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','validate','lodash','./utils','../../../../config/logger','length','error','[%s][SYSTEM]\x20%s','map','message','join','info'];(function(_0x482513,_0x43aadf){var _0x196f4d=function(_0x43ea49){while(--_0x43ea49){_0x482513['push'](_0x482513['shift']());}};_0x196f4d(++_0x43aadf);}(_0xd882,0xd1));var _0x2d88=function(_0x1e267a,_0x3ab894){_0x1e267a=_0x1e267a-0x0;var _0x4f8c89=_0xd882[_0x1e267a];return _0x4f8c89;};'use strict';var schema=require(_0x2d88('0x0'));var sh=require('shelljs');var _=require(_0x2d88('0x1'));var utils=require(_0x2d88('0x2'));var logger=require(_0x2d88('0x3'))('routing');var system=schema({'command':{'type':'string','required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports['consequence']=function(_0x3b10a2,_0x439e0e){return function(_0x2ab9f5){try{var _0x29c0a0={'command':_0x439e0e[0x0]};var _0x3f5fd4=system[_0x2d88('0x0')](_0x29c0a0,{'typecast':!![]});if(_0x3f5fd4[_0x2d88('0x4')]){logger[_0x2d88('0x5')](_0x2d88('0x6'),_0x3b10a2,_[_0x2d88('0x7')](_0x3f5fd4,_0x2d88('0x8'))[_0x2d88('0x9')](',\x20'));logger[_0x2d88('0xa')](_0x2d88('0xb'),_0x3b10a2);_0x2ab9f5[_0x2d88('0xc')]();}else{var _0x1c723e=this;var _0x21c5e1=utils[_0x2d88('0xd')](_0x439e0e[0x0],this);logger[_0x2d88('0xa')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x3b10a2,_0x21c5e1);sh['exec'](_[_0x2d88('0xe')](_0x21c5e1),function(_0x2e79a0,_0x17cccf){logger[_0x2d88('0xa')](_0x2d88('0xf'),_0x3b10a2,_0x2e79a0);if(_0x2e79a0==0x0){var _0x41c5fe=_0x17cccf[_0x2d88('0x10')](/(\r\n|\n|\r)/gm,'');if(_[_0x2d88('0x11')](_0x439e0e[0x1])||_[_0x2d88('0x12')](_0x439e0e[0x1])){logger['info'](_0x2d88('0x13'),_0x3b10a2);_0x1c723e[_0x2d88('0x14')][_0x439e0e[0x1]]=_0x41c5fe;}else{logger['info'](_0x2d88('0x15'),_0x3b10a2,_0x439e0e[0x1],_0x41c5fe);_0x1c723e[_0x2d88('0x14')][_0x439e0e[0x1]]=_0x41c5fe;}}_0x2ab9f5[_0x2d88('0xc')]();});}}catch(_0x2b5e18){logger[_0x2d88('0x5')](_0x2d88('0x6'),_0x3b10a2,_['isObject'](_0x2b5e18)?JSON['stringify'](_0x2b5e18):_0x2b5e18);logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x3b10a2);_0x2ab9f5['next']();}};};
\ No newline at end of file
+var _0x5109=['stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','lodash','./utils','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','info','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','next','isObject'];(function(_0x4ee386,_0x1a9032){var _0x42450c=function(_0x51d08c){while(--_0x51d08c){_0x4ee386['push'](_0x4ee386['shift']());}};_0x42450c(++_0x1a9032);}(_0x5109,0xb8));var _0x9510=function(_0x156fda,_0x236d16){_0x156fda=_0x156fda-0x0;var _0x1d520b=_0x5109[_0x156fda];return _0x1d520b;};'use strict';var schema=require(_0x9510('0x0'));var sh=require(_0x9510('0x1'));var _=require(_0x9510('0x2'));var utils=require(_0x9510('0x3'));var logger=require(_0x9510('0x4'))('routing');var system=schema({'command':{'type':_0x9510('0x5'),'required':!![],'message':_0x9510('0x6')}});exports[_0x9510('0x7')]=function(_0x31c003,_0x42ee5a){return function(_0x2f54b3){try{var _0x240d1a={'command':_0x42ee5a[0x0]};var _0x156535=system['validate'](_0x240d1a,{'typecast':!![]});if(_0x156535[_0x9510('0x8')]){logger[_0x9510('0x9')](_0x9510('0xa'),_0x31c003,_[_0x9510('0xb')](_0x156535,_0x9510('0xc'))['join'](',\x20'));logger[_0x9510('0xd')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x31c003);_0x2f54b3['next']();}else{var _0xb27af0=this;var _0x183754=utils[_0x9510('0xe')](_0x42ee5a[0x0],this);logger[_0x9510('0xd')](_0x9510('0xf'),_0x31c003,_0x183754);sh[_0x9510('0x10')](_[_0x9510('0x11')](_0x183754),function(_0x2a457a,_0x4bcad8){logger[_0x9510('0xd')](_0x9510('0x12'),_0x31c003,_0x2a457a);if(_0x2a457a==0x0){var _0x335767=_0x4bcad8['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x42ee5a[0x1])||_[_0x9510('0x13')](_0x42ee5a[0x1])){logger[_0x9510('0xd')](_0x9510('0x14'),_0x31c003);_0xb27af0[_0x9510('0x15')][_0x42ee5a[0x1]]=_0x335767;}else{logger[_0x9510('0xd')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x31c003,_0x42ee5a[0x1],_0x335767);_0xb27af0['body'][_0x42ee5a[0x1]]=_0x335767;}}_0x2f54b3[_0x9510('0x16')]();});}}catch(_0x22d8a7){logger[_0x9510('0x9')](_0x9510('0xa'),_0x31c003,_[_0x9510('0x17')](_0x22d8a7)?JSON[_0x9510('0x18')](_0x22d8a7):_0x22d8a7);logger[_0x9510('0xd')](_0x9510('0x19'),_0x31c003);_0x2f54b3['next']();}};};
\ No newline at end of file
index 57cc2bb..53879e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc018=['consequence','error','[%s][TAG]\x20%s','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','stringify','finally','validate','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x443222,_0x36d80b){var _0x26ba38=function(_0x2bb2fb){while(--_0x2bb2fb){_0x443222['push'](_0x443222['shift']());}};_0x26ba38(++_0x36d80b);}(_0xc018,0xb6));var _0x8c01=function(_0x4f5551,_0x21a13c){_0x4f5551=_0x4f5551-0x0;var _0x2ed581=_0xc018[_0x4f5551];return _0x2ed581;};'use strict';var schema=require(_0x8c01('0x0'));var _=require(_0x8c01('0x1'));var rpc={'chatInteraction':require(_0x8c01('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x8c01('0x3')),'mailInteraction':require(_0x8c01('0x4')),'faxInteraction':require(_0x8c01('0x5')),'whatsappInteraction':require(_0x8c01('0x6'))};var logger=require('../../../../config/logger')(_0x8c01('0x7'));var tag=schema({'tag':{'type':_0x8c01('0x8'),'required':!![],'message':_0x8c01('0x9')}});exports[_0x8c01('0xa')]=function(_0x3f2964,_0xc9ccdb,_0xc2cea4,_0xe15270){return function(_0x3c7671){try{var _0x351bc9={'tag':_0xc9ccdb[0x0]};var _0x3362a9=tag[_0x8c01('0x0')](_0x351bc9,{'typecast':!![]});if(_0x3362a9['length']){logger[_0x8c01('0xb')](_0x8c01('0xc'),_0x3f2964,_['map'](_0x3362a9,_0x8c01('0xd'))[_0x8c01('0xe')](',\x20'));logger[_0x8c01('0xf')](_0x8c01('0x10'),_0x3f2964);_0x3c7671[_0x8c01('0x11')]();}else{var _0x132432={'ids':[_0xc9ccdb[0x0]]};if(rpc[_0xe15270[_0x8c01('0x12')]+_0x8c01('0x13')]){rpc[_0xe15270['channel']+_0x8c01('0x13')]['addTags'](_0xe15270[_0x8c01('0x14')]['id'],_0x132432)['then'](function(_0x1998b0){logger[_0x8c01('0xf')](_0x8c01('0x15'),_0x3f2964,_0xc9ccdb[0x1],_0xe15270[_0x8c01('0x12')],_0xe15270[_0x8c01('0x14')]['id']);})['catch'](function(_0x1a0764){logger[_0x8c01('0xb')]('[%s][TAG]\x20%s',_0x3f2964,JSON[_0x8c01('0x16')](_0x1a0764));logger[_0x8c01('0xf')](_0x8c01('0x10'),_0x3f2964);})[_0x8c01('0x17')](function(){_0x3c7671['next']();});}}}catch(_0xbff2f5){logger[_0x8c01('0xb')](_0x8c01('0xc'),_0x3f2964,_['isObject'](_0xbff2f5)?JSON[_0x8c01('0x16')](_0xbff2f5):_0xbff2f5);logger['info'](_0x8c01('0x10'),_0x3f2964);_0x3c7671[_0x8c01('0x11')]();}};};
\ No newline at end of file
+var _0x859f=['addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20%s','stringify','finally','error','isObject','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','length','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','Interaction','channel'];(function(_0x2c0b12,_0x599255){var _0x4c54fc=function(_0x397498){while(--_0x397498){_0x2c0b12['push'](_0x2c0b12['shift']());}};_0x4c54fc(++_0x599255);}(_0x859f,0xa6));var _0xf859=function(_0x58a107,_0x401444){_0x58a107=_0x58a107-0x0;var _0x526613=_0x859f[_0x58a107];return _0x526613;};'use strict';var schema=require('validate');var _=require('lodash');var rpc={'chatInteraction':require(_0xf859('0x0')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xf859('0x1')),'faxInteraction':require(_0xf859('0x2')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require('../../../../config/logger')(_0xf859('0x3'));var tag=schema({'tag':{'type':_0xf859('0x4'),'required':!![],'message':_0xf859('0x5')}});exports[_0xf859('0x6')]=function(_0x84c84c,_0x48a2e9,_0x1d1ccc,_0x29ec17){return function(_0x2722d0){try{var _0x4404e7={'tag':_0x48a2e9[0x0]};var _0x4cec58=tag[_0xf859('0x7')](_0x4404e7,{'typecast':!![]});if(_0x4cec58[_0xf859('0x8')]){logger['error']('[%s][TAG]\x20%s',_0x84c84c,_[_0xf859('0x9')](_0x4cec58,_0xf859('0xa'))['join'](',\x20'));logger[_0xf859('0xb')](_0xf859('0xc'),_0x84c84c);_0x2722d0[_0xf859('0xd')]();}else{var _0x5d3b6f={'ids':[_0x48a2e9[0x0]]};if(rpc[_0x29ec17['channel']+_0xf859('0xe')]){rpc[_0x29ec17[_0xf859('0xf')]+_0xf859('0xe')][_0xf859('0x10')](_0x29ec17[_0xf859('0x11')]['id'],_0x5d3b6f)[_0xf859('0x12')](function(_0x419256){logger[_0xf859('0xb')](_0xf859('0x13'),_0x84c84c,_0x48a2e9[0x1],_0x29ec17[_0xf859('0xf')],_0x29ec17[_0xf859('0x11')]['id']);})[_0xf859('0x14')](function(_0x2f6ce9){logger['error'](_0xf859('0x15'),_0x84c84c,JSON[_0xf859('0x16')](_0x2f6ce9));logger[_0xf859('0xb')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x84c84c);})[_0xf859('0x17')](function(){_0x2722d0[_0xf859('0xd')]();});}}}catch(_0x46cf96){logger[_0xf859('0x18')](_0xf859('0x15'),_0x84c84c,_[_0xf859('0x19')](_0x46cf96)?JSON['stringify'](_0x46cf96):_0x46cf96);logger['info'](_0xf859('0xc'),_0x84c84c);_0x2722d0[_0xf859('0xd')]();}};};
\ No newline at end of file
index d751e95..90f398f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc446=['stop','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','request-promise','../../../../config/logger','lodash','consequence','replace','\x20-\x20','includes','urlOnAnswer','?params=','title','2.0','push','params','utf8','POST','application/json-rpc','then','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','stringify','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','catch','error','[%s][TVOX]\x20%s','isObject'];(function(_0x5b9b19,_0x183e6a){var _0xbe6c65=function(_0x1c3996){while(--_0x1c3996){_0x5b9b19['push'](_0x5b9b19['shift']());}};_0xbe6c65(++_0x183e6a);}(_0xc446,0x1c2));var _0x6c44=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc446[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0x6c44('0x0'));var logger=require(_0x6c44('0x1'))('routing');var _=require(_0x6c44('0x2'));var arr=[];exports[_0x6c44('0x3')]=function(_0x79b990,_0x34d819){return function(_0x4904c1){var _0x2193e6=_0x34d819[0xa];var _0x4244c0=_0x34d819[0xb];var _0x561306=_0x34d819[0xc];var _0x1a1cb9=_0x34d819[0xd];var _0x381914=_0x34d819[0xe];var _0x4744ad=_0x34d819[0xf][_0x6c44('0x4')](/\n/g,_0x6c44('0x5'));var _0x1b2267=_0x34d819[0x10][_0x6c44('0x4')](/\n/g,'\x20');if(!arr[_0x6c44('0x6')](_0x4244c0)){arr['push'](_0x4244c0);var _0x43c074=_0x34d819[0x3];var _0xe7f7e6=_0x34d819[0x4];var _0x51f897=_0x34d819[0x1];var _0xc2c2c8=_0x34d819[0x0];var _0x18f459={};_0x18f459[_0x6c44('0x7')]=_0x34d819[0x8]+_0x6c44('0x8')+_0x561306+'|'+_0x2193e6+'|'+_0x1a1cb9+'|'+_0x4244c0+'|'+_0x381914;_0x18f459['urlOnRing']=_0x34d819[0x7]+'?params='+_0x561306+'|'+_0x2193e6+'|'+_0x1a1cb9+'|'+_0x4244c0+'|'+_0x381914+'|'+_0x4744ad+'|'+_0x1b2267;_0x18f459[_0x6c44('0x9')]=_0x34d819[0x9];var _0x29bf1b={};_0x29bf1b['jsonrpc']=_0x6c44('0xa');_0x29bf1b['method']='login';var _0x34a99c=[];_0x34a99c[_0x6c44('0xb')](_0x34d819[0x2]);_0x34a99c[_0x6c44('0xb')](_0x34d819[0x5]);_0x34a99c['push'](_0x34d819[0x6]);_0x29bf1b[_0x6c44('0xc')]=_0x34a99c;_0x29bf1b['id']=0x1;var _0x39c62a=JSON['stringify'](_0x29bf1b);var _0x1e1814={'encoding':_0x6c44('0xd'),'method':_0x6c44('0xe'),'timeout':0x2710,'url':_0x43c074,'headers':{'Content-Type':_0x6c44('0xf')},'body':_0x39c62a};return rp(_0x1e1814)[_0x6c44('0x10')](function(_0x2db04d){const _0x235f2e=JSON['parse'](_0x2db04d);if(!_0x235f2e['result'][_0x6c44('0x11')]){throw new Error(_0x6c44('0x12'));}var _0x3a67b5=_0x4244c0;var _0x2fcf8d=_0x6c44('0x13')+_0x51f897+_0x6c44('0x14')+_0xc2c2c8+_0x6c44('0x15')+_0x3a67b5+_0x6c44('0x16')+JSON[_0x6c44('0x17')](_0x18f459);var _0x2dbde7=_0xe7f7e6+'?'+_0x2fcf8d;return rp(_0x2dbde7);})[_0x6c44('0x10')](function(_0x49bfdf){logger[_0x6c44('0x18')](_0x6c44('0x19'),_0x79b990,_0x49bfdf);_0x4904c1['stop']();})[_0x6c44('0x1a')](function(_0xce6549){logger[_0x6c44('0x1b')](_0x6c44('0x1c'),_0x79b990,_[_0x6c44('0x1d')](_0xce6549)?JSON['stringify'](_0xce6549):_0xce6549);_0x4904c1[_0x6c44('0x1e')]();});}else{logger[_0x6c44('0x18')](_0x6c44('0x1f'),_0x79b990);_0x4904c1['next']();}};};
\ No newline at end of file
+var _0x929c=['then','result','logged','&data=','info','stop','catch','error','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger','routing','replace','\x20-\x20','includes','?params=','title','jsonrpc','2.0','login','push','params','stringify','POST','application/json-rpc'];(function(_0x3b76f7,_0x566c53){var _0x43984e=function(_0x164f77){while(--_0x164f77){_0x3b76f7['push'](_0x3b76f7['shift']());}};_0x43984e(++_0x566c53);}(_0x929c,0x1b0));var _0xc929=function(_0x4f1574,_0x55a234){_0x4f1574=_0x4f1574-0x0;var _0x3bf8f9=_0x929c[_0x4f1574];return _0x3bf8f9;};'use strict';var rp=require(_0xc929('0x0'));var logger=require(_0xc929('0x1'))(_0xc929('0x2'));var _=require('lodash');var arr=[];exports['consequence']=function(_0x1268e3,_0x33d7c2){return function(_0x3ff125){var _0x555ff0=_0x33d7c2[0xa];var _0x270852=_0x33d7c2[0xb];var _0x4a47c2=_0x33d7c2[0xc];var _0x34bf6f=_0x33d7c2[0xd];var _0x3c6047=_0x33d7c2[0xe];var _0x4a4d7e=_0x33d7c2[0xf][_0xc929('0x3')](/\n/g,_0xc929('0x4'));var _0x36fcf5=_0x33d7c2[0x10][_0xc929('0x3')](/\n/g,'\x20');if(!arr[_0xc929('0x5')](_0x270852)){arr['push'](_0x270852);var _0x128f32=_0x33d7c2[0x3];var _0x304a4e=_0x33d7c2[0x4];var _0x1055c9=_0x33d7c2[0x1];var _0x2d1127=_0x33d7c2[0x0];var _0x5456b7={};_0x5456b7['urlOnAnswer']=_0x33d7c2[0x8]+_0xc929('0x6')+_0x4a47c2+'|'+_0x555ff0+'|'+_0x34bf6f+'|'+_0x270852+'|'+_0x3c6047;_0x5456b7['urlOnRing']=_0x33d7c2[0x7]+_0xc929('0x6')+_0x4a47c2+'|'+_0x555ff0+'|'+_0x34bf6f+'|'+_0x270852+'|'+_0x3c6047+'|'+_0x4a4d7e+'|'+_0x36fcf5;_0x5456b7[_0xc929('0x7')]=_0x33d7c2[0x9];var _0x1ae3ed={};_0x1ae3ed[_0xc929('0x8')]=_0xc929('0x9');_0x1ae3ed['method']=_0xc929('0xa');var _0x3f998f=[];_0x3f998f[_0xc929('0xb')](_0x33d7c2[0x2]);_0x3f998f[_0xc929('0xb')](_0x33d7c2[0x5]);_0x3f998f[_0xc929('0xb')](_0x33d7c2[0x6]);_0x1ae3ed[_0xc929('0xc')]=_0x3f998f;_0x1ae3ed['id']=0x1;var _0x233636=JSON[_0xc929('0xd')](_0x1ae3ed);var _0xd8f91a={'encoding':'utf8','method':_0xc929('0xe'),'timeout':0x2710,'url':_0x128f32,'headers':{'Content-Type':_0xc929('0xf')},'body':_0x233636};return rp(_0xd8f91a)[_0xc929('0x10')](function(_0x3bd209){const _0x163dc8=JSON['parse'](_0x3bd209);if(!_0x163dc8[_0xc929('0x11')][_0xc929('0x12')]){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x3b00e4=_0x270852;var _0x1e0b62='channelId='+_0x1055c9+'&serviceId='+_0x2d1127+'&sessionId='+_0x3b00e4+_0xc929('0x13')+JSON[_0xc929('0xd')](_0x5456b7);var _0x802f80=_0x304a4e+'?'+_0x1e0b62;return rp(_0x802f80);})[_0xc929('0x10')](function(_0x9eee76){logger[_0xc929('0x14')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x1268e3,_0x9eee76);_0x3ff125[_0xc929('0x15')]();})[_0xc929('0x16')](function(_0x4fb625){logger[_0xc929('0x17')](_0xc929('0x18'),_0x1268e3,_[_0xc929('0x19')](_0x4fb625)?JSON['stringify'](_0x4fb625):_0x4fb625);_0x3ff125[_0xc929('0x15')]();});}else{logger[_0xc929('0x14')](_0xc929('0x1a'),_0x1268e3);_0x3ff125[_0xc929('0x1b')]();}};};
\ No newline at end of file
index c34b66d..1fd535a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x1e7137,_0x1bca08){var _0x9819f8=function(_0xafc521){while(--_0xafc521){_0x1e7137['push'](_0x1e7137['shift']());}};_0x9819f8(++_0x1bca08);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x4d517f,_0x31fbd4){var _0x1bfb5a=function(_0x5a3b54){while(--_0x5a3b54){_0x4d517f['push'](_0x4d517f['shift']());}};_0x1bfb5a(++_0x31fbd4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
index 975d8c9..57e467d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd52a=['whatsappQueuesWaitingInteractions','server','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','jayson/promise','bluebird','./applications/utils','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','rules','channel','message','interaction','applications','isArray','length','join','app','.js','toLowerCase','autoreply','appdata','mail','push','slice','dialogflow','amazonlex','tag','TagId','tvox','getMustacheRender','notificationTemplate','split','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','intervals','./applications/','priority','Push\x20new\x20rule','on\x20interval','error','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','chatQueues','available','paused','waiting','mailQueues','loggedIn','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions'];(function(_0x261522,_0x1adc1f){var _0x98a25a=function(_0x1b0f9c){while(--_0x1b0f9c){_0x261522['push'](_0x261522['shift']());}};_0x98a25a(++_0x1adc1f);}(_0xd52a,0xca));var _0xad52=function(_0x550ec,_0x19b10e){_0x550ec=_0x550ec-0x0;var _0x4e2f94=_0xd52a[_0x550ec];return _0x4e2f94;};'use strict';var _=require('lodash');var util=require(_0xad52('0x0'));var path=require('path');var fs=require('fs');var jayson=require(_0xad52('0x1'));var BPromise=require(_0xad52('0x2'));var utils=require(_0xad52('0x3'));var logger=require('../../../config/logger')(_0xad52('0x4'));var rpc={'openchannelQueueReport':require(_0xad52('0x5')),'mailQueueReport':require(_0xad52('0x6')),'chatQueueReport':require(_0xad52('0x7')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0xad52('0x8'));function getId(_0x55f7a7,_0x23fc23,_0x4bbff0){return util[_0xad52('0x9')](_0xad52('0xa'),_0x55f7a7,_0x23fc23||0x0,_0x4bbff0||0x0);}function getIntervals(_0x48b175,_0x39c078){var _0x47db32=[];if(!_[_0xad52('0xb')](_0x39c078['IntervalId'])&&!_[_0xad52('0xb')](_0x48b175[_0x39c078[_0xad52('0xc')]])&&!_[_0xad52('0xb')](_0x48b175[_0x39c078[_0xad52('0xc')]]['Intervals'])){_0x47db32=_['map'](_0x48b175[_0x39c078['IntervalId']][_0xad52('0xd')],_0xad52('0xe'));}else if(!_[_0xad52('0xb')](_0x39c078[_0xad52('0xe')])){_0x47db32=[_0x39c078[_0xad52('0xe')]];}return _0x47db32;}exports[_0xad52('0xf')]=function(_0x16e0f7){_0x16e0f7[_0xad52('0x10')]={};return new BPromise(function(_0x3d2df6,_0x5727a2){var _0x330794={'Start':function(_0x139305){var _0x3bc8f6=this;return new Promise(function(_0x42eb20,_0x38be7e){if(_0x139305){try{var _0xcb6cd5=[];var _0x2bbaad=getId(_0x139305[_0xad52('0x11')],_0x139305[_0xad52('0x12')]?_0x139305['message']['id']:0x0,_0x139305['interaction']?_0x139305[_0xad52('0x13')]['id']:0x0);if(_0x139305[_0xad52('0x14')]&&_[_0xad52('0x15')](_0x139305[_0xad52('0x14')])&&_0x139305[_0xad52('0x14')]['length']){for(var _0x5696a4=0x0;_0x5696a4<_0x139305['applications'][_0xad52('0x16')];_0x5696a4+=0x1){var _0xd4bb69=_0x139305[_0xad52('0x14')][_0x5696a4];if(fs['existsSync'](path[_0xad52('0x17')](__dirname,'applications',_0xd4bb69[_0xad52('0x18')]+_0xad52('0x19')))){var _0x3262e4=[];switch(_0xd4bb69[_0xad52('0x18')][_0xad52('0x1a')]()){case _0xad52('0x1b'):var _0x4b5f2f=_0xd4bb69[_0xad52('0x1c')]['split'](',');if(_0x139305[_0xad52('0x11')]===_0xad52('0x1d')){_0x3262e4[_0xad52('0x1e')](_0x4b5f2f[0x0]);_0x3262e4[_0xad52('0x1e')](_0x4b5f2f[0x1]);_0x3262e4[_0xad52('0x1e')](_0x4b5f2f['slice'](0x2,_0x4b5f2f['length'])[_0xad52('0x17')](','));}else{_0x3262e4['push'](_0x4b5f2f[0x0]);_0x3262e4[_0xad52('0x1e')](_0x4b5f2f[_0xad52('0x1f')](0x1,_0x4b5f2f['length'])['join'](','));}break;case _0xad52('0x20'):var _0x31b5e0=_0xd4bb69[_0xad52('0x1c')]['split'](',');_0x3262e4[_0xad52('0x1e')](_0x31b5e0[0x0]);_0x3262e4['push'](_0x31b5e0[0x1]);_0x3262e4[_0xad52('0x1e')](_0x31b5e0[_0xad52('0x1f')](0x2,_0x31b5e0[_0xad52('0x16')])[_0xad52('0x17')](','));break;case'dialogflowv2':var _0x426106=_0xd4bb69[_0xad52('0x1c')]['split'](',');_0x3262e4[_0xad52('0x1e')](_0x426106[0x0]);_0x3262e4[_0xad52('0x1e')](_0x426106[0x1]);_0x3262e4[_0xad52('0x1e')](_0x426106[0x2]);_0x3262e4[_0xad52('0x1e')](_0x426106[0x3]);_0x3262e4[_0xad52('0x1e')](_0x426106['slice'](0x4,_0x426106['length'])['join'](','));break;case _0xad52('0x21'):var _0x38002a=_0xd4bb69[_0xad52('0x1c')]['split'](',');_0x3262e4['push'](_0x38002a[0x0]);_0x3262e4[_0xad52('0x1e')](_0x38002a[0x1]);_0x3262e4[_0xad52('0x1e')](_0x38002a[0x2]);_0x3262e4[_0xad52('0x1e')](_0x38002a[0x3]);_0x3262e4[_0xad52('0x1e')](_0x38002a[_0xad52('0x1f')](0x4,_0x38002a[_0xad52('0x16')])['join'](','));break;case _0xad52('0x12'):_0x3262e4[_0xad52('0x1e')](_0xd4bb69[_0xad52('0x1c')]);break;case _0xad52('0x22'):_0x3262e4[_0xad52('0x1e')](_0xd4bb69[_0xad52('0x23')]);_0x3262e4[_0xad52('0x1e')](_0xd4bb69[_0xad52('0x1c')]);break;case _0xad52('0x24'):var _0x434762=utils[_0xad52('0x25')](_0x139305['account'][_0xad52('0x26')],_0x139305);var _0x2c3676=_0xd4bb69[_0xad52('0x1c')][_0xad52('0x27')](',');_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x0]);_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x1]);_0x3262e4['push'](_0x2c3676[0x2]);_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x3]);_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x4]);_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x5]);_0x3262e4['push'](_0x2c3676[0x6]);_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x7]);_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x8]);_0x3262e4[_0xad52('0x1e')](_0x2c3676[0x9]);_0x3262e4['push'](_0x2c3676[0xa]);_0x3262e4[_0xad52('0x1e')](_0x139305[_0xad52('0x13')]['id']);_0x3262e4[_0xad52('0x1e')](_0x139305['message']['id']);_0x3262e4[_0xad52('0x1e')](_0xd4bb69[_0xad52('0x28')]);_0x3262e4[_0xad52('0x1e')](_0x139305[_0xad52('0x13')][_0xad52('0x29')]);_0x3262e4[_0xad52('0x1e')](_0x139305['body'][_0xad52('0x2a')]);_0x3262e4['push'](_0x434762);break;default:_0x3262e4=_[_0xad52('0xb')](_0xd4bb69[_0xad52('0x1c')])?[]:_0xd4bb69[_0xad52('0x1c')][_0xad52('0x27')](',');}var _0x1d5e8a={'id':util['format'](_0xad52('0x2b'),_0x2bbaad,_0xd4bb69['id'],_0xd4bb69[_0xad52('0x18')]),'condition':require(_0xad52('0x2c'))['condition'](_0x2bbaad,getIntervals(_0x16e0f7[_0xad52('0x2d')],_0xd4bb69),_0x16e0f7),'consequence':require(_0xad52('0x2e')+_0xd4bb69[_0xad52('0x18')])['consequence'](_0x2bbaad,_0x3262e4,_0x16e0f7,_0x139305),'p':_0xd4bb69[_0xad52('0x2f')]||0x0};logger['info'](_0xad52('0x30'),_0x1d5e8a['id'],_0xad52('0x31'),getIntervals(_0x16e0f7[_0xad52('0x2d')],_0xd4bb69)[_0xad52('0x17')]('\x20|\x20'));_0xcb6cd5[_0xad52('0x1e')](_0x1d5e8a);}else{logger[_0xad52('0x32')](_0xad52('0x33'),path[_0xad52('0x17')](__dirname,_0xad52('0x14'),_0xd4bb69[_0xad52('0x18')]+_0xad52('0x19')));}}_0x16e0f7[_0xad52('0x10')][_0x2bbaad]=new RuleEngine(_0xcb6cd5);_0x16e0f7['rules'][_0x2bbaad][_0xad52('0x34')](_0x139305,function(_0x52f4a2){logger[_0xad52('0x35')](_0xad52('0x36'),JSON[_0xad52('0x37')](_0x52f4a2[_0xad52('0x38')]));if(_0x16e0f7[_0xad52('0x10')][_0x2bbaad]){_0x16e0f7[_0xad52('0x10')][_0x2bbaad][_0xad52('0x39')](_0xad52('0x3a'));}});return _0x42eb20({'code':0xc8,'message':_0x139305});}else{logger[_0xad52('0x35')](_0xad52('0x3b'));return _0x42eb20({'code':0xc8,'message':_0x139305});}}catch(_0x35ce28){logger[_0xad52('0x32')](_0x35ce28[_0xad52('0x3c')]);return _0x38be7e(_0x3bc8f6[_0xad52('0x32')](0x1f4,_0x35ce28));}}return _0x38be7e(_0xad52('0x3d'));});},'AcceptMessage':function(_0x472191){var _0x2911de=this;return new Promise(function(_0x5eb35e,_0x711cc6){if(_0x472191[_0xad52('0x3e')]&&_0x472191['agent']['id']){if(_0x16e0f7[_0xad52('0x3f')][_0x472191[_0xad52('0x3e')]['id']]){_0x16e0f7[_0xad52('0x3f')][_0x472191['agent']['id']][_0xad52('0x40')]=![];_0x16e0f7['agents'][_0x472191[_0xad52('0x3e')]['id']]['busyQueue']=undefined;}}if(_0x472191['message']&&_0x472191[_0xad52('0x12')]['id']){try{var _0x1746b0=getId(_0x472191[_0xad52('0x11')],_0x472191[_0xad52('0x12')]?_0x472191['message']['id']:0x0,_0x472191['interaction']?_0x472191[_0xad52('0x13')]['id']:0x0);if(_0x16e0f7['rules'][_0x1746b0]){_0x16e0f7[_0xad52('0x10')][_0x1746b0]['emit'](_0xad52('0x41'));if(rpc[_0x472191[_0xad52('0x11')]+_0xad52('0x42')]){rpc[_0x472191[_0xad52('0x11')]+_0xad52('0x42')][_0xad52('0x43')](_0x1746b0,{'UserId':_0x472191['message'][_0xad52('0x44')]})[_0xad52('0x45')](function(){logger[_0xad52('0x32')](_0xad52('0x46'));});}}return _0x5eb35e({'code':0xc8,'message':_0x472191});}catch(_0x4ab950){logger[_0xad52('0x32')](_0x4ab950[_0xad52('0x3c')]);return _0x711cc6(_0x2911de[_0xad52('0x32')](0x1f4,_0x4ab950));}}logger['error'](_0xad52('0x47'));return _0x711cc6(_0x2911de[_0xad52('0x32')](0x1f4,_0xad52('0x47')));});},'RejectMessage':function(_0xe9baec){var _0x4a35ef=this;return new Promise(function(_0x32a6c3,_0x36d038){if(_0xe9baec[_0xad52('0x3e')]&&_0xe9baec[_0xad52('0x3e')]['id']){try{if(_0x16e0f7[_0xad52('0x3f')][_0xe9baec['agent']['id']]){_0x16e0f7['agents'][_0xe9baec[_0xad52('0x3e')]['id']][_0xad52('0x40')]=![];_0x16e0f7[_0xad52('0x3f')][_0xe9baec[_0xad52('0x3e')]['id']][_0xad52('0x48')]=undefined;}return _0x32a6c3({'code':0xc8,'message':_0xe9baec});}catch(_0x5298aa){logger[_0xad52('0x32')](_0x5298aa['stack']);return _0x36d038(_0x4a35ef[_0xad52('0x32')](0x1f4,_0x5298aa));}}logger[_0xad52('0x32')](_0xad52('0x47'));return _0x36d038(_0x4a35ef['error'](0x1f4,_0xad52('0x47')));});},'AbandonInteraction':function(_0x525485){var _0x3784b5=this;return new Promise(function(_0x4218c6,_0xc95e44){if(_0x525485['channel']&&_0x525485['interaction']&&_0x525485[_0xad52('0x13')]['id']){try{var _0x4a5def=getId(_0x525485[_0xad52('0x11')],_0x525485[_0xad52('0x12')]?_0x525485['message']['id']:0x0,_0x525485[_0xad52('0x13')]?_0x525485['interaction']['id']:0x0);if(_0x16e0f7[_0xad52('0x10')][_0x4a5def]){_0x16e0f7[_0xad52('0x10')][_0x4a5def][_0xad52('0x39')](_0xad52('0x41'));}return _0x4218c6({'code':0xc8,'message':_0x525485});}catch(_0x516f43){logger['error'](_0x516f43[_0xad52('0x3c')]);return _0xc95e44(_0x3784b5[_0xad52('0x32')](0x1f4,_0x516f43));}}logger['error'](_0xad52('0x47'));return _0xc95e44(_0x3784b5[_0xad52('0x32')](0x1f4,_0xad52('0x47')));});},'AgentCapacity':function(_0xe41ac7){var _0x5b3ae8=this;return new Promise(function(_0xba9665,_0x97d098){if(_0x16e0f7[_0xad52('0x3f')][_0xad52('0x49')](_0xe41ac7['id'])){for(var _0xad46e1 in _0xe41ac7[_0xad52('0x4a')]){if(_0xe41ac7[_0xad52('0x4a')][_0xad52('0x49')](_0xad46e1)){if(_0x16e0f7['agents'][_0xe41ac7['id']]['hasOwnProperty'](_0xad46e1+_0xad52('0x4b'))){_0x16e0f7[_0xad52('0x3f')][_0xe41ac7['id']][_0xad46e1+_0xad52('0x4b')]=parseInt(_0xe41ac7['capacity'][_0xad46e1],0xa);}}}_0x16e0f7[_0xad52('0x3f')][_0xe41ac7['id']][_0xad52('0x4c')]();return _0xba9665({'code':0xc8,'message':_0x16e0f7[_0xad52('0x3f')][_0xe41ac7['id']]});}else{return _0x97d098(_0x5b3ae8['error'](0x1f4,_0xad52('0x4d')));}});},'Agents':function(_0x5a3feb){return new Promise(function(_0xee30d1){var _0x56fca3=_['values'](_0x16e0f7[_0xad52('0x3f')]);if(_0x5a3feb&&_0x5a3feb['id']){var _0x2c6c48=_['find'](_0x56fca3,function(_0x590e36){return _0x590e36['id']===_0x5a3feb['id'];});_0xee30d1(_0x2c6c48);}else{_0xee30d1({'count':_0x56fca3['length'],'rows':_0x56fca3});}});},'ChatQueues':function(){return new Promise(function(_0xb359ef){var _0x46039d=[];for(var _0x482f93 in _0x16e0f7[_0xad52('0x4e')]){if(_0x16e0f7[_0xad52('0x4e')][_0xad52('0x49')](_0x482f93)){var _0x529b16=_0x16e0f7[_0xad52('0x4e')][_0x482f93];var _0x2622a4={'id':_0x529b16['id'],'available':_0x529b16[_0xad52('0x4f')],'loggedIn':_0x529b16['loggedIn'],'name':_0x529b16['name'],'paused':_0x529b16[_0xad52('0x50')],'waiting':_0x529b16[_0xad52('0x51')]};_0x46039d[_0xad52('0x1e')](_0x2622a4);}}_0xb359ef({'count':_0x46039d[_0xad52('0x16')],'rows':_0x46039d});});},'MailQueues':function(){return new Promise(function(_0x57f90a){var _0x4d6b7a=[];for(var _0x5d0daf in _0x16e0f7[_0xad52('0x52')]){if(_0x16e0f7['mailQueues'][_0xad52('0x49')](_0x5d0daf)){var _0x3043f7=_0x16e0f7[_0xad52('0x52')][_0x5d0daf];var _0x255008={'id':_0x3043f7['id'],'available':_0x3043f7[_0xad52('0x4f')],'loggedIn':_0x3043f7[_0xad52('0x53')],'name':_0x3043f7[_0xad52('0x54')],'paused':_0x3043f7[_0xad52('0x50')],'waiting':_0x3043f7[_0xad52('0x51')]};_0x4d6b7a[_0xad52('0x1e')](_0x255008);}}_0x57f90a({'count':_0x4d6b7a[_0xad52('0x16')],'rows':_0x4d6b7a});});},'OpenchannelQueues':function(){return new Promise(function(_0x50cb4c){var _0x5c026a=[];for(var _0x446f93 in _0x16e0f7['openchannelQueues']){if(_0x16e0f7[_0xad52('0x55')][_0xad52('0x49')](_0x446f93)){var _0x2b4d14=_0x16e0f7['openchannelQueues'][_0x446f93];var _0x3b865f={'id':_0x2b4d14['id'],'available':_0x2b4d14['available'],'loggedIn':_0x2b4d14['loggedIn'],'name':_0x2b4d14[_0xad52('0x54')],'paused':_0x2b4d14[_0xad52('0x50')],'waiting':_0x2b4d14[_0xad52('0x51')]};_0x5c026a[_0xad52('0x1e')](_0x3b865f);}}_0x50cb4c({'count':_0x5c026a[_0xad52('0x16')],'rows':_0x5c026a});});},'SmsQueues':function(){return new Promise(function(_0x49c579){var _0x290f9a=[];for(var _0x5e7887 in _0x16e0f7[_0xad52('0x56')]){if(_0x16e0f7[_0xad52('0x56')]['hasOwnProperty'](_0x5e7887)){var _0x6e921a=_0x16e0f7[_0xad52('0x56')][_0x5e7887];var _0x475b29={'id':_0x6e921a['id'],'available':_0x6e921a[_0xad52('0x4f')],'loggedIn':_0x6e921a['loggedIn'],'name':_0x6e921a[_0xad52('0x54')],'paused':_0x6e921a[_0xad52('0x50')],'waiting':_0x6e921a[_0xad52('0x51')]};_0x290f9a[_0xad52('0x1e')](_0x475b29);}}_0x49c579({'count':_0x290f9a[_0xad52('0x16')],'rows':_0x290f9a});});},'FaxQueues':function(){return new Promise(function(_0xaaa934){var _0x3f4872=[];for(var _0x35cc3d in _0x16e0f7[_0xad52('0x57')]){if(_0x16e0f7[_0xad52('0x57')]['hasOwnProperty'](_0x35cc3d)){var _0x3ba840=_0x16e0f7[_0xad52('0x57')][_0x35cc3d];var _0x95405d={'id':_0x3ba840['id'],'available':_0x3ba840['available'],'loggedIn':_0x3ba840[_0xad52('0x53')],'name':_0x3ba840[_0xad52('0x54')],'paused':_0x3ba840[_0xad52('0x50')],'waiting':_0x3ba840[_0xad52('0x51')]};_0x3f4872[_0xad52('0x1e')](_0x95405d);}}_0xaaa934({'count':_0x3f4872[_0xad52('0x16')],'rows':_0x3f4872});});},'WhatsappQueues':function(){return new Promise(function(_0x10beca){var _0x233404=[];for(var _0x2b12c8 in _0x16e0f7[_0xad52('0x58')]){if(_0x16e0f7[_0xad52('0x58')][_0xad52('0x49')](_0x2b12c8)){var _0xe43fac=_0x16e0f7[_0xad52('0x58')][_0x2b12c8];var _0x28919c={'id':_0xe43fac['id'],'available':_0xe43fac[_0xad52('0x4f')],'loggedIn':_0xe43fac['loggedIn'],'name':_0xe43fac[_0xad52('0x54')],'paused':_0xe43fac[_0xad52('0x50')],'waiting':_0xe43fac[_0xad52('0x51')]};_0x233404[_0xad52('0x1e')](_0x28919c);}}_0x10beca({'count':_0x233404[_0xad52('0x16')],'rows':_0x233404});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x2528ff){var _0x4020ab=_[_0xad52('0x59')](_0x16e0f7[_0xad52('0x5a')]);_0x2528ff({'count':_0x4020ab[_0xad52('0x16')],'rows':_0x4020ab});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x5af869){var _0x461e3a=_[_0xad52('0x59')](_0x16e0f7[_0xad52('0x5b')]);_0x5af869({'count':_0x461e3a[_0xad52('0x16')],'rows':_0x461e3a});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x2a1c25){var _0x56d9f9=_['values'](_0x16e0f7['openchannelQueuesWaitingInteractions']);_0x2a1c25({'count':_0x56d9f9[_0xad52('0x16')],'rows':_0x56d9f9});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x4cdb2c){var _0x3b5215=_['values'](_0x16e0f7['smsQueuesWaitingInteractions']);_0x4cdb2c({'count':_0x3b5215[_0xad52('0x16')],'rows':_0x3b5215});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x18d77b){var _0x54d1db=_[_0xad52('0x59')](_0x16e0f7['faxQueuesWaitingInteractions']);_0x18d77b({'count':_0x54d1db[_0xad52('0x16')],'rows':_0x54d1db});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x4eddd5){var _0x469df7=_['values'](_0x16e0f7[_0xad52('0x5c')]);_0x4eddd5({'count':_0x469df7['length'],'rows':_0x469df7});});}};var _0x2093a3=jayson[_0xad52('0x5d')](_0x330794)['http']();_0x2093a3['on']('error',function(_0x202483){logger[_0xad52('0x32')](JSON['stringify'](_0x202483));return _0x5727a2(_0x202483);});_0x2093a3[_0xad52('0xf')](0x232c,_0xad52('0x5e'),function(){console[_0xad52('0x5f')](_0xad52('0x60'),0x232c);return _0x3d2df6(_0xad52('0x61')+0x232c);});});};
\ No newline at end of file
+var _0x4f60=['error','Please\x20create\x20a\x20new\x20file\x20under','Applications\x20executed','stringify','matchPath','emit','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','end','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','find','chatQueues','loggedIn','name','paused','waiting','mailQueues','available','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','./applications/utils','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','checkWaitingNotifications','applications','length','app','.js','toLowerCase','autoreply','appdata','split','mail','push','slice','join','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','format','./interval','intervals','./applications/','info','Push\x20new\x20rule','on\x20interval','\x20|\x20'];(function(_0x146f3a,_0x373e03){var _0x4ebd8a=function(_0x2b4ea9){while(--_0x2b4ea9){_0x146f3a['push'](_0x146f3a['shift']());}};_0x4ebd8a(++_0x373e03);}(_0x4f60,0xf4));var _0x04f6=function(_0x18ecd1,_0x46529d){_0x18ecd1=_0x18ecd1-0x0;var _0x4bc24c=_0x4f60[_0x18ecd1];return _0x4bc24c;};'use strict';var _=require(_0x04f6('0x0'));var util=require(_0x04f6('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x04f6('0x2'));var BPromise=require('bluebird');var utils=require(_0x04f6('0x3'));var sUtils=require('./applications/strategy/util');var logger=require(_0x04f6('0x4'))(_0x04f6('0x5'));var rpc={'openchannelQueueReport':require(_0x04f6('0x6')),'mailQueueReport':require(_0x04f6('0x7')),'chatQueueReport':require(_0x04f6('0x8')),'smsQueueReport':require(_0x04f6('0x9')),'faxQueueReport':require(_0x04f6('0xa')),'whatsappQueueReport':require(_0x04f6('0xb'))};var RuleEngine=require(_0x04f6('0xc'));function getId(_0x21b721,_0x9b22b4,_0xa81bbd){return util['format'](_0x04f6('0xd'),_0x21b721,_0x9b22b4||0x0,_0xa81bbd||0x0);}function getIntervals(_0x3fc158,_0x4f1e28){var _0x44ab64=[];if(!_[_0x04f6('0xe')](_0x4f1e28[_0x04f6('0xf')])&&!_[_0x04f6('0xe')](_0x3fc158[_0x4f1e28[_0x04f6('0xf')]])&&!_['isNil'](_0x3fc158[_0x4f1e28[_0x04f6('0xf')]][_0x04f6('0x10')])){_0x44ab64=_[_0x04f6('0x11')](_0x3fc158[_0x4f1e28[_0x04f6('0xf')]][_0x04f6('0x10')],_0x04f6('0x12'));}else if(!_['isNil'](_0x4f1e28[_0x04f6('0x12')])){_0x44ab64=[_0x4f1e28[_0x04f6('0x12')]];}return _0x44ab64;}exports[_0x04f6('0x13')]=function(_0x2a5e98){_0x2a5e98[_0x04f6('0x14')]={};return new BPromise(function(_0x21108a,_0x559d93){var _0x5a8488={'Start':function(_0x17b390){var _0x1696a5=this;return new Promise(function(_0xa39268,_0x178516){if(_0x17b390){try{var _0x38482a=[];var _0x420513=getId(_0x17b390[_0x04f6('0x15')],_0x17b390[_0x04f6('0x16')]?_0x17b390[_0x04f6('0x16')]['id']:0x0,_0x17b390['interaction']?_0x17b390[_0x04f6('0x17')]['id']:0x0);var _0x2c02c0=sUtils[_0x04f6('0x18')](_0x2a5e98,_0x17b390);if(!_0x2c02c0&&_0x17b390[_0x04f6('0x19')]&&_['isArray'](_0x17b390['applications'])&&_0x17b390[_0x04f6('0x19')][_0x04f6('0x1a')]){for(var _0x401ab5=0x0;_0x401ab5<_0x17b390[_0x04f6('0x19')][_0x04f6('0x1a')];_0x401ab5+=0x1){var _0x5af3b3=_0x17b390[_0x04f6('0x19')][_0x401ab5];if(fs['existsSync'](path['join'](__dirname,'applications',_0x5af3b3[_0x04f6('0x1b')]+_0x04f6('0x1c')))){var _0xba3ce0=[];switch(_0x5af3b3['app'][_0x04f6('0x1d')]()){case _0x04f6('0x1e'):var _0xfd3f35=_0x5af3b3[_0x04f6('0x1f')][_0x04f6('0x20')](',');if(_0x17b390[_0x04f6('0x15')]===_0x04f6('0x21')){_0xba3ce0[_0x04f6('0x22')](_0xfd3f35[0x0]);_0xba3ce0[_0x04f6('0x22')](_0xfd3f35[0x1]);_0xba3ce0[_0x04f6('0x22')](_0xfd3f35[_0x04f6('0x23')](0x2,_0xfd3f35[_0x04f6('0x1a')])[_0x04f6('0x24')](','));}else{_0xba3ce0[_0x04f6('0x22')](_0xfd3f35[0x0]);_0xba3ce0['push'](_0xfd3f35[_0x04f6('0x23')](0x1,_0xfd3f35[_0x04f6('0x1a')])['join'](','));}break;case'dialogflow':var _0x4defaf=_0x5af3b3[_0x04f6('0x1f')][_0x04f6('0x20')](',');_0xba3ce0[_0x04f6('0x22')](_0x4defaf[0x0]);_0xba3ce0[_0x04f6('0x22')](_0x4defaf[0x1]);_0xba3ce0[_0x04f6('0x22')](_0x4defaf[_0x04f6('0x23')](0x2,_0x4defaf['length'])[_0x04f6('0x24')](','));break;case _0x04f6('0x25'):var _0x488634=_0x5af3b3[_0x04f6('0x1f')][_0x04f6('0x20')](',');_0xba3ce0[_0x04f6('0x22')](_0x488634[0x0]);_0xba3ce0[_0x04f6('0x22')](_0x488634[0x1]);_0xba3ce0[_0x04f6('0x22')](_0x488634[0x2]);_0xba3ce0['push'](_0x488634[0x3]);_0xba3ce0[_0x04f6('0x22')](_0x488634['slice'](0x4,_0x488634[_0x04f6('0x1a')])[_0x04f6('0x24')](','));break;case _0x04f6('0x26'):var _0x285236=_0x5af3b3[_0x04f6('0x1f')][_0x04f6('0x20')](',');_0xba3ce0[_0x04f6('0x22')](_0x285236[0x0]);_0xba3ce0[_0x04f6('0x22')](_0x285236[0x1]);_0xba3ce0['push'](_0x285236[0x2]);_0xba3ce0[_0x04f6('0x22')](_0x285236[0x3]);_0xba3ce0[_0x04f6('0x22')](_0x285236[_0x04f6('0x23')](0x4,_0x285236['length'])[_0x04f6('0x24')](','));break;case _0x04f6('0x16'):_0xba3ce0[_0x04f6('0x22')](_0x5af3b3[_0x04f6('0x1f')]);break;case _0x04f6('0x27'):_0xba3ce0['push'](_0x5af3b3[_0x04f6('0x28')]);_0xba3ce0['push'](_0x5af3b3['appdata']);break;case _0x04f6('0x29'):var _0x51e57b=utils[_0x04f6('0x2a')](_0x17b390[_0x04f6('0x2b')][_0x04f6('0x2c')],_0x17b390);var _0x5b1905=_0x5af3b3[_0x04f6('0x1f')][_0x04f6('0x20')](',');_0xba3ce0[_0x04f6('0x22')](_0x5b1905[0x0]);_0xba3ce0[_0x04f6('0x22')](_0x5b1905[0x1]);_0xba3ce0['push'](_0x5b1905[0x2]);_0xba3ce0['push'](_0x5b1905[0x3]);_0xba3ce0['push'](_0x5b1905[0x4]);_0xba3ce0[_0x04f6('0x22')](_0x5b1905[0x5]);_0xba3ce0[_0x04f6('0x22')](_0x5b1905[0x6]);_0xba3ce0['push'](_0x5b1905[0x7]);_0xba3ce0[_0x04f6('0x22')](_0x5b1905[0x8]);_0xba3ce0[_0x04f6('0x22')](_0x5b1905[0x9]);_0xba3ce0['push'](_0x5b1905[0xa]);_0xba3ce0[_0x04f6('0x22')](_0x17b390[_0x04f6('0x17')]['id']);_0xba3ce0[_0x04f6('0x22')](_0x17b390[_0x04f6('0x16')]['id']);_0xba3ce0[_0x04f6('0x22')](_0x5af3b3[_0x04f6('0x2d')]);_0xba3ce0[_0x04f6('0x22')](_0x17b390[_0x04f6('0x17')][_0x04f6('0x2e')]);_0xba3ce0[_0x04f6('0x22')](_0x17b390[_0x04f6('0x2f')][_0x04f6('0x2f')]);_0xba3ce0[_0x04f6('0x22')](_0x51e57b);break;default:_0xba3ce0=_[_0x04f6('0xe')](_0x5af3b3[_0x04f6('0x1f')])?[]:_0x5af3b3['appdata'][_0x04f6('0x20')](',');}var _0x37f9e2={'id':util[_0x04f6('0x30')]('%s:%s:%s',_0x420513,_0x5af3b3['id'],_0x5af3b3['app']),'condition':require(_0x04f6('0x31'))['condition'](_0x420513,getIntervals(_0x2a5e98[_0x04f6('0x32')],_0x5af3b3),_0x2a5e98),'consequence':require(_0x04f6('0x33')+_0x5af3b3[_0x04f6('0x1b')])['consequence'](_0x420513,_0xba3ce0,_0x2a5e98,_0x17b390),'p':_0x5af3b3['priority']||0x0};logger[_0x04f6('0x34')](_0x04f6('0x35'),_0x37f9e2['id'],_0x04f6('0x36'),getIntervals(_0x2a5e98[_0x04f6('0x32')],_0x5af3b3)[_0x04f6('0x24')](_0x04f6('0x37')));_0x38482a['push'](_0x37f9e2);}else{logger[_0x04f6('0x38')](_0x04f6('0x39'),path[_0x04f6('0x24')](__dirname,_0x04f6('0x19'),_0x5af3b3['app']+_0x04f6('0x1c')));}}_0x2a5e98['rules'][_0x420513]=new RuleEngine(_0x38482a);_0x2a5e98['rules'][_0x420513]['execute'](_0x17b390,function(_0x529093){logger[_0x04f6('0x34')](_0x04f6('0x3a'),JSON[_0x04f6('0x3b')](_0x529093[_0x04f6('0x3c')]));if(_0x2a5e98[_0x04f6('0x14')][_0x420513]){_0x2a5e98[_0x04f6('0x14')][_0x420513][_0x04f6('0x3d')]('complete');}});return _0xa39268({'code':0xc8,'message':_0x17b390});}else{if(_0x2c02c0){logger[_0x04f6('0x34')](util['format']('Skipped\x20routing\x20for\x20%s',_0x420513));}else{logger[_0x04f6('0x34')]('No\x20applications\x20to\x20execute');}return _0xa39268({'code':0xc8,'message':_0x17b390});}}catch(_0x207947){logger[_0x04f6('0x38')](_0x207947[_0x04f6('0x3e')]);return _0x178516(_0x1696a5[_0x04f6('0x38')](0x1f4,_0x207947));}}return _0x178516(_0x04f6('0x3f'));});},'AcceptMessage':function(_0x566db1){var _0x2d1093=this;return new Promise(function(_0x22845f,_0x563728){if(_0x566db1[_0x04f6('0x40')]&&_0x566db1['agent']['id']){if(_0x2a5e98['agents'][_0x566db1['agent']['id']]){_0x2a5e98[_0x04f6('0x41')][_0x566db1[_0x04f6('0x40')]['id']][_0x04f6('0x42')]=![];_0x2a5e98[_0x04f6('0x41')][_0x566db1[_0x04f6('0x40')]['id']][_0x04f6('0x43')]=undefined;}}if(_0x566db1['message']&&_0x566db1[_0x04f6('0x16')]['id']){try{var _0x894474=getId(_0x566db1['channel'],_0x566db1['message']?_0x566db1[_0x04f6('0x16')]['id']:0x0,_0x566db1['interaction']?_0x566db1['interaction']['id']:0x0);if(_0x2a5e98['rules'][_0x894474]){_0x2a5e98[_0x04f6('0x14')][_0x894474][_0x04f6('0x3d')]('end');if(rpc[_0x566db1['channel']+'QueueReport']){rpc[_0x566db1['channel']+'QueueReport'][_0x04f6('0x44')](_0x894474,{'UserId':_0x566db1['message'][_0x04f6('0x45')]})[_0x04f6('0x46')](function(){logger[_0x04f6('0x38')](_0x04f6('0x47'));});}}return _0x22845f({'code':0xc8,'message':_0x566db1});}catch(_0x4cecc7){logger[_0x04f6('0x38')](_0x4cecc7[_0x04f6('0x3e')]);return _0x563728(_0x2d1093['error'](0x1f4,_0x4cecc7));}}logger[_0x04f6('0x38')](_0x04f6('0x48'));return _0x563728(_0x2d1093[_0x04f6('0x38')](0x1f4,_0x04f6('0x48')));});},'RejectMessage':function(_0x39acd4){var _0x52c14c=this;return new Promise(function(_0x40bd3b,_0x6efee6){if(_0x39acd4[_0x04f6('0x40')]&&_0x39acd4[_0x04f6('0x40')]['id']){try{if(_0x2a5e98[_0x04f6('0x41')][_0x39acd4[_0x04f6('0x40')]['id']]){_0x2a5e98[_0x04f6('0x41')][_0x39acd4[_0x04f6('0x40')]['id']][_0x04f6('0x42')]=![];_0x2a5e98[_0x04f6('0x41')][_0x39acd4[_0x04f6('0x40')]['id']][_0x04f6('0x43')]=undefined;}return _0x40bd3b({'code':0xc8,'message':_0x39acd4});}catch(_0x35892c){logger[_0x04f6('0x38')](_0x35892c[_0x04f6('0x3e')]);return _0x6efee6(_0x52c14c[_0x04f6('0x38')](0x1f4,_0x35892c));}}logger[_0x04f6('0x38')](_0x04f6('0x48'));return _0x6efee6(_0x52c14c['error'](0x1f4,_0x04f6('0x48')));});},'AbandonInteraction':function(_0x1370ff){var _0x4b910d=this;return new Promise(function(_0x557abd,_0x1bbfae){if(_0x1370ff[_0x04f6('0x15')]&&_0x1370ff[_0x04f6('0x17')]&&_0x1370ff['interaction']['id']){try{var _0x287c8e=getId(_0x1370ff[_0x04f6('0x15')],_0x1370ff['message']?_0x1370ff[_0x04f6('0x16')]['id']:0x0,_0x1370ff[_0x04f6('0x17')]?_0x1370ff[_0x04f6('0x17')]['id']:0x0);if(_0x2a5e98[_0x04f6('0x14')][_0x287c8e]){_0x2a5e98[_0x04f6('0x14')][_0x287c8e]['emit'](_0x04f6('0x49'));}return _0x557abd({'code':0xc8,'message':_0x1370ff});}catch(_0x234d94){logger['error'](_0x234d94[_0x04f6('0x3e')]);return _0x1bbfae(_0x4b910d[_0x04f6('0x38')](0x1f4,_0x234d94));}}logger[_0x04f6('0x38')]('message\x20is\x20empty');return _0x1bbfae(_0x4b910d['error'](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x402267){var _0x5b6acf=this;return new Promise(function(_0x29057b,_0x24bbd4){if(_0x2a5e98['agents']['hasOwnProperty'](_0x402267['id'])){for(var _0x2855fb in _0x402267[_0x04f6('0x4a')]){if(_0x402267[_0x04f6('0x4a')][_0x04f6('0x4b')](_0x2855fb)){if(_0x2a5e98[_0x04f6('0x41')][_0x402267['id']][_0x04f6('0x4b')](_0x2855fb+_0x04f6('0x4c'))){_0x2a5e98[_0x04f6('0x41')][_0x402267['id']][_0x2855fb+_0x04f6('0x4c')]=parseInt(_0x402267[_0x04f6('0x4a')][_0x2855fb],0xa);}}}_0x2a5e98['agents'][_0x402267['id']][_0x04f6('0x4d')]();return _0x29057b({'code':0xc8,'message':_0x2a5e98[_0x04f6('0x41')][_0x402267['id']]});}else{return _0x24bbd4(_0x5b6acf[_0x04f6('0x38')](0x1f4,_0x04f6('0x4e')));}});},'Agents':function(_0x5bbbb8){return new Promise(function(_0x386978){var _0xd7df52=_['values'](_0x2a5e98[_0x04f6('0x41')]);if(_0x5bbbb8&&_0x5bbbb8['id']){var _0x3d6aab=_[_0x04f6('0x4f')](_0xd7df52,function(_0x5001bc){return _0x5001bc['id']===_0x5bbbb8['id'];});_0x386978(_0x3d6aab);}else{_0x386978({'count':_0xd7df52[_0x04f6('0x1a')],'rows':_0xd7df52});}});},'ChatQueues':function(){return new Promise(function(_0x226cd3){var _0x4db8cf=[];for(var _0x5624b1 in _0x2a5e98['chatQueues']){if(_0x2a5e98[_0x04f6('0x50')]['hasOwnProperty'](_0x5624b1)){var _0x2a57a5=_0x2a5e98[_0x04f6('0x50')][_0x5624b1];var _0x6b9e68={'id':_0x2a57a5['id'],'available':_0x2a57a5['available'],'loggedIn':_0x2a57a5[_0x04f6('0x51')],'name':_0x2a57a5[_0x04f6('0x52')],'paused':_0x2a57a5[_0x04f6('0x53')],'waiting':_0x2a57a5[_0x04f6('0x54')]};_0x4db8cf[_0x04f6('0x22')](_0x6b9e68);}}_0x226cd3({'count':_0x4db8cf[_0x04f6('0x1a')],'rows':_0x4db8cf});});},'MailQueues':function(){return new Promise(function(_0x211a77){var _0x34f5bb=[];for(var _0x2325d4 in _0x2a5e98[_0x04f6('0x55')]){if(_0x2a5e98['mailQueues']['hasOwnProperty'](_0x2325d4)){var _0x5f07dc=_0x2a5e98['mailQueues'][_0x2325d4];var _0x274d65={'id':_0x5f07dc['id'],'available':_0x5f07dc[_0x04f6('0x56')],'loggedIn':_0x5f07dc[_0x04f6('0x51')],'name':_0x5f07dc[_0x04f6('0x52')],'paused':_0x5f07dc[_0x04f6('0x53')],'waiting':_0x5f07dc['waiting']};_0x34f5bb['push'](_0x274d65);}}_0x211a77({'count':_0x34f5bb[_0x04f6('0x1a')],'rows':_0x34f5bb});});},'OpenchannelQueues':function(){return new Promise(function(_0x1e8a9){var _0x28f4f9=[];for(var _0x1c237b in _0x2a5e98[_0x04f6('0x57')]){if(_0x2a5e98[_0x04f6('0x57')][_0x04f6('0x4b')](_0x1c237b)){var _0x3a5e46=_0x2a5e98[_0x04f6('0x57')][_0x1c237b];var _0x41ddf8={'id':_0x3a5e46['id'],'available':_0x3a5e46[_0x04f6('0x56')],'loggedIn':_0x3a5e46['loggedIn'],'name':_0x3a5e46[_0x04f6('0x52')],'paused':_0x3a5e46[_0x04f6('0x53')],'waiting':_0x3a5e46[_0x04f6('0x54')]};_0x28f4f9[_0x04f6('0x22')](_0x41ddf8);}}_0x1e8a9({'count':_0x28f4f9['length'],'rows':_0x28f4f9});});},'SmsQueues':function(){return new Promise(function(_0x2982f3){var _0x2e3238=[];for(var _0x2ccfae in _0x2a5e98[_0x04f6('0x58')]){if(_0x2a5e98[_0x04f6('0x58')][_0x04f6('0x4b')](_0x2ccfae)){var _0x15783f=_0x2a5e98[_0x04f6('0x58')][_0x2ccfae];var _0x13a7cc={'id':_0x15783f['id'],'available':_0x15783f['available'],'loggedIn':_0x15783f['loggedIn'],'name':_0x15783f[_0x04f6('0x52')],'paused':_0x15783f[_0x04f6('0x53')],'waiting':_0x15783f[_0x04f6('0x54')]};_0x2e3238[_0x04f6('0x22')](_0x13a7cc);}}_0x2982f3({'count':_0x2e3238[_0x04f6('0x1a')],'rows':_0x2e3238});});},'FaxQueues':function(){return new Promise(function(_0x53f99f){var _0x31f987=[];for(var _0x13acf8 in _0x2a5e98[_0x04f6('0x59')]){if(_0x2a5e98[_0x04f6('0x59')][_0x04f6('0x4b')](_0x13acf8)){var _0x189d62=_0x2a5e98['faxQueues'][_0x13acf8];var _0x2c5b13={'id':_0x189d62['id'],'available':_0x189d62[_0x04f6('0x56')],'loggedIn':_0x189d62[_0x04f6('0x51')],'name':_0x189d62[_0x04f6('0x52')],'paused':_0x189d62[_0x04f6('0x53')],'waiting':_0x189d62[_0x04f6('0x54')]};_0x31f987[_0x04f6('0x22')](_0x2c5b13);}}_0x53f99f({'count':_0x31f987[_0x04f6('0x1a')],'rows':_0x31f987});});},'WhatsappQueues':function(){return new Promise(function(_0x20502b){var _0x37437c=[];for(var _0xc44a14 in _0x2a5e98[_0x04f6('0x5a')]){if(_0x2a5e98[_0x04f6('0x5a')][_0x04f6('0x4b')](_0xc44a14)){var _0x3e94c0=_0x2a5e98[_0x04f6('0x5a')][_0xc44a14];var _0x41cf9c={'id':_0x3e94c0['id'],'available':_0x3e94c0[_0x04f6('0x56')],'loggedIn':_0x3e94c0[_0x04f6('0x51')],'name':_0x3e94c0[_0x04f6('0x52')],'paused':_0x3e94c0[_0x04f6('0x53')],'waiting':_0x3e94c0['waiting']};_0x37437c[_0x04f6('0x22')](_0x41cf9c);}}_0x20502b({'count':_0x37437c[_0x04f6('0x1a')],'rows':_0x37437c});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x33b541){var _0x28d775=_[_0x04f6('0x5b')](_0x2a5e98[_0x04f6('0x5c')]);_0x33b541({'count':_0x28d775['length'],'rows':_0x28d775});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x5dcaef){var _0x5e5397=_[_0x04f6('0x5b')](_0x2a5e98[_0x04f6('0x5d')]);_0x5dcaef({'count':_0x5e5397['length'],'rows':_0x5e5397});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x25db97){var _0x29483f=_[_0x04f6('0x5b')](_0x2a5e98[_0x04f6('0x5e')]);_0x25db97({'count':_0x29483f[_0x04f6('0x1a')],'rows':_0x29483f});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x39db1c){var _0x42bd70=_[_0x04f6('0x5b')](_0x2a5e98['smsQueuesWaitingInteractions']);_0x39db1c({'count':_0x42bd70[_0x04f6('0x1a')],'rows':_0x42bd70});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x4d285e){var _0x2e65c5=_['values'](_0x2a5e98['faxQueuesWaitingInteractions']);_0x4d285e({'count':_0x2e65c5[_0x04f6('0x1a')],'rows':_0x2e65c5});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x570ad4){var _0x3a9c0b=_[_0x04f6('0x5b')](_0x2a5e98[_0x04f6('0x5f')]);_0x570ad4({'count':_0x3a9c0b[_0x04f6('0x1a')],'rows':_0x3a9c0b});});}};var _0x544a2b=jayson[_0x04f6('0x60')](_0x5a8488)['http']();_0x544a2b['on'](_0x04f6('0x38'),function(_0x24f044){logger[_0x04f6('0x38')](JSON['stringify'](_0x24f044));return _0x559d93(_0x24f044);});_0x544a2b[_0x04f6('0x13')](0x232c,_0x04f6('0x61'),function(){console[_0x04f6('0x62')](_0x04f6('0x63'),0x232c);return _0x21108a('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 2efcaeb..aa1c006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe874=['Command','format','iftime\x20%s','then','true','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','stack','util','jayson/promise','lodash','../../../config/logger','routing','http','request','error','message','result','catch','condition','rules','info','stop'];(function(_0x52b758,_0x238dbf){var _0x5d75c6=function(_0x1e273f){while(--_0x1e273f){_0x52b758['push'](_0x52b758['shift']());}};_0x5d75c6(++_0x238dbf);}(_0xe874,0x99));var _0x4e87=function(_0x19a028,_0x161bbc){_0x19a028=_0x19a028-0x0;var _0x2822b0=_0xe874[_0x19a028];return _0x2822b0;};'use strict';var util=require(_0x4e87('0x0'));var BPromise=require('bluebird');var jayson=require(_0x4e87('0x1'));var _=require(_0x4e87('0x2'));var logger=require(_0x4e87('0x3'))(_0x4e87('0x4'));var client=jayson['client'][_0x4e87('0x5')]({'port':0x232a});function request(_0x24fc46,_0xad21c1){return new BPromise(function(_0x227492,_0x36b8ba){return client[_0x4e87('0x6')](_0x24fc46,_0xad21c1)['then'](function(_0x53b986){if(_0x53b986[_0x4e87('0x7')]){return _0x36b8ba(_0x53b986[_0x4e87('0x7')][_0x4e87('0x8')]);}else{return _0x227492(_0x53b986[_0x4e87('0x9')]);}})[_0x4e87('0xa')](function(_0x257880){return _0x36b8ba(_0x257880);});});}exports[_0x4e87('0xb')]=function(_0x14ea13,_0xcffa4,_0x42c92f){return function(_0xc5863a){if(_0x42c92f[_0x4e87('0xc')]&&!_0x42c92f[_0x4e87('0xc')][_0x14ea13]){logger[_0x4e87('0xd')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x14ea13);return _0xc5863a[_0x4e87('0xe')]();}var _0x5661d2=[];for(var _0x393e29=0x0;_0x393e29<_0xcffa4['length'];_0x393e29+=0x1){_0x5661d2['push'](request(_0x4e87('0xf'),{'command':util[_0x4e87('0x10')](_0x4e87('0x11'),_0xcffa4[_0x393e29])})[_0x4e87('0x12')](function(_0x4e1251){return _0x4e1251&&_0x4e1251[_0x4e87('0x8')]&&_0x4e1251[_0x4e87('0x8')]['indexOf'](_0x4e87('0x13'))>=0x0?!![]:![];})[_0x4e87('0xa')](function(_0x387eb0){logger[_0x4e87('0x7')](_0x4e87('0x14'),_0x14ea13,_0xcffa4[_0x393e29]);}));}BPromise[_0x4e87('0x15')](_0x5661d2)[_0x4e87('0x12')](function(_0x15a203){var _0x512292=_[_0x4e87('0x16')](_0x15a203);logger[_0x4e87('0xd')](_0x4e87('0x17'),_0x14ea13,_0xcffa4[_0x4e87('0x18')](_0x4e87('0x19')),_0x512292);_0xc5863a[_0x4e87('0x1a')](_0x512292);})[_0x4e87('0xa')](function(_0x2cab86){console['log'](_0x2cab86);logger[_0x4e87('0x7')](_0x4e87('0x17'),_0x14ea13,_0xcffa4[_0x4e87('0x18')](_0x4e87('0x19')),_0x2cab86[_0x4e87('0x1b')]);_0xc5863a['stop']();});};};
\ No newline at end of file
+var _0x4c7f=['join','stack','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','message','result','catch','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','format','indexOf','true','[%s][INTERVAL]\x20%s','some','info','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','when'];(function(_0x656249,_0x52f2b1){var _0x41563c=function(_0x1cf02e){while(--_0x1cf02e){_0x656249['push'](_0x656249['shift']());}};_0x41563c(++_0x52f2b1);}(_0x4c7f,0xb6));var _0xf4c7=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0x4c7f[_0x4ff09b];return _0x3f5c2e;};'use strict';var util=require('util');var BPromise=require(_0xf4c7('0x0'));var jayson=require(_0xf4c7('0x1'));var _=require(_0xf4c7('0x2'));var logger=require(_0xf4c7('0x3'))(_0xf4c7('0x4'));var client=jayson[_0xf4c7('0x5')][_0xf4c7('0x6')]({'port':0x232a});function request(_0x21a674,_0x141dab){return new BPromise(function(_0x389e13,_0xea7960){return client[_0xf4c7('0x7')](_0x21a674,_0x141dab)[_0xf4c7('0x8')](function(_0x24388e){if(_0x24388e[_0xf4c7('0x9')]){return _0xea7960(_0x24388e[_0xf4c7('0x9')][_0xf4c7('0xa')]);}else{return _0x389e13(_0x24388e[_0xf4c7('0xb')]);}})[_0xf4c7('0xc')](function(_0x2eb6e0){return _0xea7960(_0x2eb6e0);});});}exports[_0xf4c7('0xd')]=function(_0x44f141,_0x38fef8,_0x2ee1c3){return function(_0x3a0ff9){if(_0x2ee1c3['rules']&&!_0x2ee1c3[_0xf4c7('0xe')][_0x44f141]){logger['info'](_0xf4c7('0xf'),_0x44f141);return _0x3a0ff9[_0xf4c7('0x10')]();}var _0x18912d=[];for(var _0x17458a=0x0;_0x17458a<_0x38fef8[_0xf4c7('0x11')];_0x17458a+=0x1){_0x18912d[_0xf4c7('0x12')](request('Command',{'command':util[_0xf4c7('0x13')]('iftime\x20%s',_0x38fef8[_0x17458a])})[_0xf4c7('0x8')](function(_0x511811){return _0x511811&&_0x511811[_0xf4c7('0xa')]&&_0x511811['message'][_0xf4c7('0x14')](_0xf4c7('0x15'))>=0x0?!![]:![];})['catch'](function(_0x2837a1){logger['error'](_0xf4c7('0x16'),_0x44f141,_0x38fef8[_0x17458a]);}));}BPromise['all'](_0x18912d)['then'](function(_0x47852e){var _0x1283f9=_[_0xf4c7('0x17')](_0x47852e);logger[_0xf4c7('0x18')](_0xf4c7('0x19'),_0x44f141,_0x38fef8['join'](_0xf4c7('0x1a')),_0x1283f9);_0x3a0ff9[_0xf4c7('0x1b')](_0x1283f9);})[_0xf4c7('0xc')](function(_0x45cdd0){console['log'](_0x45cdd0);logger[_0xf4c7('0x9')](_0xf4c7('0x19'),_0x44f141,_0x38fef8[_0xf4c7('0x1c')]('\x20|\x20'),_0x45cdd0[_0xf4c7('0x1d')]);_0x3a0ff9[_0xf4c7('0x10')]();});};};
\ No newline at end of file
index 90557dd..4a4ece5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97c1=['connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','now','reason','holdtime','ringtime','talktime','push','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','[%s][agents][agentconnect]','agentconnectAt','connect','forIn','agentringnoanswerAt','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','agentcompleteAt','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','extension','transferuniqueid','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','calleridname','agentcalledAt','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','lodash','util','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','calleridnum','connectedlinenum','lastevent','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','called'];(function(_0x430b2f,_0x19a74d){var _0x407b89=function(_0x5c10d6){while(--_0x5c10d6){_0x430b2f['push'](_0x430b2f['shift']());}};_0x407b89(++_0x19a74d);}(_0x97c1,0xdf));var _0x197c=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x97c1[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x197c('0x0'));var util=require(_0x197c('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x5e2e81,_0x498f9c){utils['info'](util[_0x197c('0x2')](_0x197c('0x3'),_0x5e2e81[_0x197c('0x4')],_0x5e2e81[_0x197c('0x5')],_0x5e2e81[_0x197c('0x6')],_0x5e2e81['membername'],_0x5e2e81['interface'],_0x5e2e81[_0x197c('0x7')],_0x5e2e81[_0x197c('0x8')],_0x5e2e81[_0x197c('0x9')]));if(_0x5e2e81[_0x197c('0x6')]){utils['getVoiceQueueByName'](_0x5e2e81['queue'])[_0x197c('0xa')](function(_0x5cffb8){if(_0x5cffb8){_0x5e2e81[_0x197c('0xb')]=_0x5cffb8[_0x197c('0xb')];_0x5e2e81[_0x197c('0xc')]=_0x5e2e81[_0x197c('0xd')]?_0x5cffb8['acw']:![];_0x5e2e81[_0x197c('0xe')]=_0x5e2e81[_0x197c('0xc')]?_0x5cffb8[_0x197c('0xf')]:0x0;}utils[_0x197c('0x10')](_0x197c('0x11'),_0x5e2e81);});}else{utils['request'](_0x197c('0x11'),_0x5e2e81);}if(_0x498f9c){delete transfers[_0x5e2e81[_0x197c('0x4')]];}else{delete agents[_0x5e2e81[_0x197c('0x12')]];}}exports[_0x197c('0x13')]=function(_0x567658){try{utils[_0x197c('0x14')](util[_0x197c('0x2')](_0x197c('0x15'),_0x567658[_0x197c('0x4')]),_0x567658);agents[_0x567658[_0x197c('0x12')]]=_0x567658;agents[_0x567658[_0x197c('0x12')]]['agentcalledAt']=utils['now']();agents[_0x567658[_0x197c('0x12')]][_0x197c('0x9')]=_0x197c('0x16');agents[_0x567658[_0x197c('0x12')]][_0x197c('0x8')]=null;agents[_0x567658[_0x197c('0x12')]][_0x197c('0x17')]=null;utils[_0x197c('0x18')](util['format'](_0x197c('0x19'),_0x567658['uniqueid'],agents[_0x567658['destuniqueid']][_0x197c('0x1a')],_0x567658[_0x197c('0x12')]));}catch(_0x2eca5e){utils[_0x197c('0x1b')](util['format'](_0x197c('0x15'),_0x567658[_0x197c('0x4')]),_0x2eca5e);}};exports[_0x197c('0x1c')]=function(_0x5c278a){try{if(!_[_0x197c('0x1d')](agents[_0x5c278a[_0x197c('0x12')]])){utils[_0x197c('0x14')](util[_0x197c('0x2')](_0x197c('0x1e'),_0x5c278a[_0x197c('0x4')]),_0x5c278a);utils[_0x197c('0x18')](util[_0x197c('0x2')](_0x197c('0x1f'),_0x5c278a[_0x197c('0x4')],agents[_0x5c278a[_0x197c('0x12')]][_0x197c('0x1a')],_0x5c278a[_0x197c('0x12')]));agents[_0x5c278a[_0x197c('0x12')]][_0x197c('0x1c')]=!![];agents[_0x5c278a[_0x197c('0x12')]]['agentringnoanswerAt']=utils[_0x197c('0x20')]();agents[_0x5c278a[_0x197c('0x12')]][_0x197c('0x9')]='timeout';agents[_0x5c278a[_0x197c('0x12')]][_0x197c('0x21')]='timeout';agents[_0x5c278a['destuniqueid']][_0x197c('0x22')]=_0x5c278a['ringtime']?parseInt(_0x5c278a[_0x197c('0x23')])/0x3e8:0x0;agents[_0x5c278a[_0x197c('0x12')]][_0x197c('0x24')]=0x0;unanswered[_0x197c('0x25')](_0x5c278a[_0x197c('0x12')]);}}catch(_0x3cdcd8){utils[_0x197c('0x1b')](util[_0x197c('0x2')](_0x197c('0x1e'),_0x5c278a['uniqueid']),_0x3cdcd8);}};exports['queuecallerabandon']=function(_0x574274){try{_['forIn'](agents,function(_0x5f7425,_0x4c9256){if(_0x5f7425[_0x197c('0x4')]==_0x574274[_0x197c('0x4')]&&!_['includes'](unanswered,_0x5f7425[_0x197c('0x12')])){utils['debug'](util[_0x197c('0x2')](_0x197c('0x26'),_0x574274[_0x197c('0x4')]),_0x574274);utils[_0x197c('0x18')](util[_0x197c('0x2')](_0x197c('0x27'),_0x574274[_0x197c('0x4')],_0x5f7425[_0x197c('0x1a')],_0x5f7425[_0x197c('0x12')]));_0x5f7425['agentringnoanswer']=!![];_0x5f7425['agentringnoanswerAt']=utils[_0x197c('0x20')]();_0x5f7425[_0x197c('0x9')]=_0x197c('0x28');_0x5f7425[_0x197c('0x21')]=_0x197c('0x28');_0x5f7425[_0x197c('0x22')]=_0x574274[_0x197c('0x22')];_0x5f7425['talktime']=0x0;writeDB(_0x5f7425);}});}catch(_0x54e6be){utils[_0x197c('0x1b')](util[_0x197c('0x2')]('[%s][agents][queuecallerabandon]',_0x574274['uniqueid']),_0x54e6be);}};exports[_0x197c('0x29')]=function(_0x2a884b){try{if(agents[_0x2a884b[_0x197c('0x12')]]){utils[_0x197c('0x14')](util[_0x197c('0x2')](_0x197c('0x2a'),_0x2a884b[_0x197c('0x4')]),_0x2a884b);utils[_0x197c('0x18')](util[_0x197c('0x2')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x2a884b[_0x197c('0x4')],agents[_0x2a884b[_0x197c('0x12')]][_0x197c('0x1a')],_0x2a884b[_0x197c('0x12')]));agents[_0x2a884b[_0x197c('0x12')]][_0x197c('0x2b')]=utils['now']();agents[_0x2a884b[_0x197c('0x12')]][_0x197c('0x8')]=_0x2a884b[_0x197c('0x8')];agents[_0x2a884b['destuniqueid']][_0x197c('0x17')]=_0x2a884b[_0x197c('0x17')];agents[_0x2a884b[_0x197c('0x12')]][_0x197c('0x22')]=_0x2a884b[_0x197c('0x23')];agents[_0x2a884b[_0x197c('0x12')]][_0x197c('0x9')]=_0x197c('0x2c');_[_0x197c('0x2d')](agents,function(_0x1dc01b,_0x4a12fc){if(_0x1dc01b[_0x197c('0x12')]!=_0x2a884b[_0x197c('0x12')]&&_0x1dc01b['uniqueid']==_0x2a884b['uniqueid']){_0x1dc01b[_0x197c('0x24')]=0x0;_0x1dc01b[_0x197c('0x22')]=_0x2a884b[_0x197c('0x23')];_0x1dc01b[_0x197c('0x1c')]=!![];_0x1dc01b[_0x197c('0x2e')]=utils['now']();_0x1dc01b[_0x197c('0x9')]=_0x197c('0x2f');_0x1dc01b[_0x197c('0x21')]=_0x197c('0x2f');_0x1dc01b[_0x197c('0x30')]=_0x2a884b['destuniqueid'];_0x1dc01b[_0x197c('0x31')]=_0x2a884b[_0x197c('0x1a')];writeDB(_0x1dc01b);}});}}catch(_0x6d7bda){utils[_0x197c('0x1b')](util[_0x197c('0x2')]('[%s][agents][agentconnect]',_0x2a884b[_0x197c('0x4')]),_0x6d7bda);}};exports[_0x197c('0xd')]=function(_0x3b7fc1){try{if(!_[_0x197c('0x1d')](agents[_0x3b7fc1[_0x197c('0x12')]])){utils[_0x197c('0x14')](util[_0x197c('0x2')](_0x197c('0x32'),_0x3b7fc1[_0x197c('0x4')]),_0x3b7fc1);utils[_0x197c('0x18')](util[_0x197c('0x2')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x3b7fc1['uniqueid'],agents[_0x3b7fc1['destuniqueid']]['membername'],_0x3b7fc1[_0x197c('0x12')]));agents[_0x3b7fc1[_0x197c('0x12')]]['agentcomplete']=!![];agents[_0x3b7fc1[_0x197c('0x12')]][_0x197c('0x33')]=utils['now']();agents[_0x3b7fc1[_0x197c('0x12')]][_0x197c('0x24')]=utils['diffTime'](agents[_0x3b7fc1[_0x197c('0x12')]][_0x197c('0x33')],agents[_0x3b7fc1['destuniqueid']][_0x197c('0x2b')]);agents[_0x3b7fc1[_0x197c('0x12')]][_0x197c('0x21')]=_0x3b7fc1['reason'];agents[_0x3b7fc1[_0x197c('0x12')]][_0x197c('0x9')]=_0x197c('0x34');writeDB(agents[_0x3b7fc1[_0x197c('0x12')]]);}}catch(_0x53295b){utils[_0x197c('0x1b')](util[_0x197c('0x2')](_0x197c('0x32'),_0x3b7fc1['uniqueid']),_0x53295b);}};exports['blindtransfer']=function(_0x3a5089){try{if(!_[_0x197c('0x1d')](agents[_0x3a5089[_0x197c('0x35')]])){utils[_0x197c('0x14')](util[_0x197c('0x2')](_0x197c('0x36'),_0x3a5089['uniqueid']),_0x3a5089);utils[_0x197c('0x18')](util['format'](_0x197c('0x37'),_0x3a5089[_0x197c('0x4')],agents[_0x3a5089[_0x197c('0x35')]][_0x197c('0x1a')],agents[_0x3a5089[_0x197c('0x35')]][_0x197c('0x4')]));agents[_0x3a5089[_0x197c('0x35')]][_0x197c('0x38')]=!![];agents[_0x3a5089['transfereruniqueid']][_0x197c('0x39')]=_0x197c('0x3a');agents[_0x3a5089[_0x197c('0x35')]]['transferexten']=_0x3a5089[_0x197c('0x3b')];agents[_0x3a5089['transfereruniqueid']][_0x197c('0x3c')]=agents[_0x3a5089[_0x197c('0x35')]][_0x197c('0x4')];}}catch(_0x22a106){utils[_0x197c('0x1b')](util[_0x197c('0x2')](_0x197c('0x36'),_0x3a5089[_0x197c('0x4')]),_0x22a106);}};exports['attendedtransfer']=function(_0x3e3176){try{utils[_0x197c('0x14')](util[_0x197c('0x2')]('[%s][agents][attendedtransfer]',_0x3e3176[_0x197c('0x3d')]),_0x3e3176);if(_0x3e3176[_0x197c('0x3d')]==_0x3e3176[_0x197c('0x3e')]){if(!_[_0x197c('0x1d')](agents[_0x3e3176[_0x197c('0x3f')]])){utils['info'](util['format'](_0x197c('0x40'),_0x3e3176[_0x197c('0x3d')],agents[_0x3e3176[_0x197c('0x3f')]][_0x197c('0x1a')]));agents[_0x3e3176[_0x197c('0x3f')]]['transfer']=!![];agents[_0x3e3176['secondtransfereruniqueid']][_0x197c('0x39')]=_0x197c('0x41');agents[_0x3e3176['secondtransfereruniqueid']][_0x197c('0x42')]=_0x3e3176[_0x197c('0x43')];agents[_0x3e3176[_0x197c('0x3f')]][_0x197c('0x3c')]=_0x3e3176[_0x197c('0x3d')];}if(_0x3e3176[_0x197c('0x44')]&&agents[_0x3e3176['transfereeuniqueid']]){agents[_0x3e3176[_0x197c('0x44')]][_0x197c('0x45')]=0x1;transfers[_0x3e3176['transfereeuniqueid']]=_['clone'](agents[_0x3e3176[_0x197c('0x44')]]);transfers[_0x3e3176['transfereeuniqueid']][_0x197c('0x7')]=agents[_0x3e3176[_0x197c('0x3f')]][_0x197c('0x7')];transfers[_0x3e3176['transfereeuniqueid']][_0x197c('0x46')]=agents[_0x3e3176[_0x197c('0x3f')]]['calleridname'];transfers[_0x3e3176[_0x197c('0x44')]][_0x197c('0x47')]=utils[_0x197c('0x20')]();transfers[_0x3e3176['transfereeuniqueid']][_0x197c('0x2b')]=utils[_0x197c('0x20')]();transfers[_0x3e3176['transfereeuniqueid']]['holdtime']=0x0;transfers[_0x3e3176[_0x197c('0x44')]][_0x197c('0x45')]=0x2;}}else if(_0x3e3176[_0x197c('0x3f')]==_0x3e3176['secondtransfererlinkedid']){if(!_[_0x197c('0x1d')](agents[_0x3e3176[_0x197c('0x3d')]])){utils[_0x197c('0x18')](util['format'](_0x197c('0x40'),_0x3e3176[_0x197c('0x3d')],agents[_0x3e3176[_0x197c('0x3d')]][_0x197c('0x1a')]));agents[_0x3e3176[_0x197c('0x3d')]][_0x197c('0x38')]=!![];agents[_0x3e3176[_0x197c('0x3d')]][_0x197c('0x39')]=_0x197c('0x41');agents[_0x3e3176[_0x197c('0x3d')]]['transferexten']=_0x3e3176[_0x197c('0x48')];agents[_0x3e3176['origtransfereruniqueid']]['transferuniqueid']=_0x3e3176['secondtransfereruniqueid'];}if(_0x3e3176['transfertargetuniqueid']&&agents[_0x3e3176[_0x197c('0x49')]]){agents[_0x3e3176[_0x197c('0x49')]][_0x197c('0x45')]=0x1;transfers[_0x3e3176[_0x197c('0x49')]]=_['clone'](agents[_0x3e3176[_0x197c('0x49')]]);transfers[_0x3e3176['transfertargetuniqueid']][_0x197c('0x7')]=agents[_0x3e3176['origtransfereruniqueid']][_0x197c('0x7')];transfers[_0x3e3176['transfertargetuniqueid']][_0x197c('0x46')]=agents[_0x3e3176[_0x197c('0x3d')]][_0x197c('0x46')];transfers[_0x3e3176[_0x197c('0x49')]]['agentcalledAt']=utils[_0x197c('0x20')]();transfers[_0x3e3176[_0x197c('0x49')]][_0x197c('0x2b')]=utils['now']();transfers[_0x3e3176[_0x197c('0x49')]][_0x197c('0x22')]=0x0;transfers[_0x3e3176[_0x197c('0x49')]][_0x197c('0x45')]=0x2;}}}catch(_0x5596f3){utils[_0x197c('0x1b')](util[_0x197c('0x2')](_0x197c('0x4a'),_0x3e3176[_0x197c('0x3d')]),_0x5596f3);}};exports[_0x197c('0x4b')]=function(_0x342efa){try{utils[_0x197c('0x14')](util[_0x197c('0x2')](_0x197c('0x4c'),_0x342efa[_0x197c('0x4')]),_0x342efa);if(agents[_0x342efa[_0x197c('0x4')]]&&agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x21')]==='timeout'){if(_0x342efa['cause']==='21'){agents[_0x342efa['uniqueid']][_0x197c('0x21')]='rejected';agents[_0x342efa[_0x197c('0x4')]]['lastevent']='rejected';}utils[_0x197c('0x18')](util[_0x197c('0x2')](_0x197c('0x4d'),_0x342efa['uniqueid'],agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x1a')],agents[_0x342efa['uniqueid']][_0x197c('0x21')],agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x9')]));writeDB(agents[_0x342efa[_0x197c('0x4')]]);var _0x54206a=unanswered[_0x197c('0x4e')](_0x342efa['uniqueid']);if(_0x54206a>-0x1){unanswered[_0x197c('0x4f')](_0x54206a,0x1);}}if(transfers[_0x342efa['uniqueid']]){transfers[_0x342efa[_0x197c('0x4')]][_0x197c('0xd')]=!![];transfers[_0x342efa[_0x197c('0x4')]]['agentcompleteAt']=utils[_0x197c('0x20')]();transfers[_0x342efa[_0x197c('0x4')]][_0x197c('0x24')]=utils['diffTime'](transfers[_0x342efa[_0x197c('0x4')]][_0x197c('0x33')],transfers[_0x342efa[_0x197c('0x4')]][_0x197c('0x2b')]);transfers[_0x342efa[_0x197c('0x4')]][_0x197c('0x21')]='agent';transfers[_0x342efa[_0x197c('0x4')]]['lastevent']='complete';utils[_0x197c('0x18')](util[_0x197c('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x342efa[_0x197c('0x4')],transfers[_0x342efa[_0x197c('0x4')]][_0x197c('0x1a')],transfers[_0x342efa[_0x197c('0x4')]][_0x197c('0x21')],transfers[_0x342efa['uniqueid']]['lastevent']));writeDB(transfers[_0x342efa['uniqueid']],!![]);}if(agents[_0x342efa['uniqueid']]&&agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x2b')]){agents[_0x342efa['uniqueid']]['agentcomplete']=!![];agents[_0x342efa[_0x197c('0x4')]]['agentcompleteAt']=utils['now']();agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x24')]=utils[_0x197c('0x50')](agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x33')],agents[_0x342efa[_0x197c('0x4')]]['agentconnectAt']);agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x21')]=agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x38')]?_0x197c('0x38'):_0x197c('0x51');agents[_0x342efa[_0x197c('0x4')]]['lastevent']=_0x197c('0x34');utils[_0x197c('0x18')](util[_0x197c('0x2')](_0x197c('0x4d'),_0x342efa[_0x197c('0x4')],agents[_0x342efa[_0x197c('0x4')]]['membername'],agents[_0x342efa[_0x197c('0x4')]][_0x197c('0x21')],agents[_0x342efa['uniqueid']][_0x197c('0x9')]));writeDB(agents[_0x342efa[_0x197c('0x4')]]);}}catch(_0x173303){utils[_0x197c('0x1b')](util[_0x197c('0x2')]('[%s][agents][hangup]',_0x342efa['uniqueid']),_0x173303);}};
\ No newline at end of file
+var _0xf290=['now','connectedlinename','error','agentringnoanswer','timeout','reason','holdtime','push','[%s][agents][agentringnoanswer]','includes','debug','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','talktime','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','ringtime','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentconnect]','isNil','[%s][agents][agentcomplete]','agentcompleteAt','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','transfertype','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','secondtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','clone','calleridname','hangup','[%s][agents][hangup]','rejected','indexOf','agent','util','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','membername','calleridnum','connectedlinenum','lastevent','queue','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','request','CreateVoiceAgentReport','destuniqueid','agentcalled','[%s][agents][agentcalled]','agentcalledAt'];(function(_0x18e696,_0x566133){var _0x1e4f52=function(_0x51f290){while(--_0x51f290){_0x18e696['push'](_0x18e696['shift']());}};_0x1e4f52(++_0x566133);}(_0xf290,0xde));var _0x0f29=function(_0x59616b,_0x38e534){_0x59616b=_0x59616b-0x0;var _0x5c4523=_0xf290[_0x59616b];return _0x5c4523;};'use strict';var _=require('lodash');var util=require(_0x0f29('0x0'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x1d35f0,_0x4b16e4){utils[_0x0f29('0x1')](util[_0x0f29('0x2')](_0x0f29('0x3'),_0x1d35f0[_0x0f29('0x4')],_0x1d35f0[_0x0f29('0x5')],_0x1d35f0['queue'],_0x1d35f0[_0x0f29('0x6')],_0x1d35f0['interface'],_0x1d35f0[_0x0f29('0x7')],_0x1d35f0[_0x0f29('0x8')],_0x1d35f0[_0x0f29('0x9')]));if(_0x1d35f0[_0x0f29('0xa')]){utils[_0x0f29('0xb')](_0x1d35f0[_0x0f29('0xa')])[_0x0f29('0xc')](function(_0x3c6a6e){if(_0x3c6a6e){_0x1d35f0[_0x0f29('0xd')]=_0x3c6a6e[_0x0f29('0xd')];_0x1d35f0[_0x0f29('0xe')]=_0x1d35f0[_0x0f29('0xf')]?_0x3c6a6e[_0x0f29('0x10')]:![];_0x1d35f0[_0x0f29('0x11')]=_0x1d35f0[_0x0f29('0xe')]?_0x3c6a6e['acwTimeout']:0x0;}utils[_0x0f29('0x12')]('CreateVoiceAgentReport',_0x1d35f0);});}else{utils[_0x0f29('0x12')](_0x0f29('0x13'),_0x1d35f0);}if(_0x4b16e4){delete transfers[_0x1d35f0[_0x0f29('0x4')]];}else{delete agents[_0x1d35f0[_0x0f29('0x14')]];}}exports[_0x0f29('0x15')]=function(_0x2d2573){try{utils['debug'](util[_0x0f29('0x2')](_0x0f29('0x16'),_0x2d2573[_0x0f29('0x4')]),_0x2d2573);agents[_0x2d2573[_0x0f29('0x14')]]=_0x2d2573;agents[_0x2d2573[_0x0f29('0x14')]][_0x0f29('0x17')]=utils[_0x0f29('0x18')]();agents[_0x2d2573[_0x0f29('0x14')]]['lastevent']='called';agents[_0x2d2573[_0x0f29('0x14')]][_0x0f29('0x8')]=null;agents[_0x2d2573[_0x0f29('0x14')]][_0x0f29('0x19')]=null;utils['info'](util[_0x0f29('0x2')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x2d2573[_0x0f29('0x4')],agents[_0x2d2573['destuniqueid']]['membername'],_0x2d2573['destuniqueid']));}catch(_0x23a44f){utils[_0x0f29('0x1a')](util[_0x0f29('0x2')](_0x0f29('0x16'),_0x2d2573[_0x0f29('0x4')]),_0x23a44f);}};exports[_0x0f29('0x1b')]=function(_0x150271){try{if(!_['isNil'](agents[_0x150271[_0x0f29('0x14')]])){utils['debug'](util['format']('[%s][agents][agentringnoanswer]',_0x150271['uniqueid']),_0x150271);utils[_0x0f29('0x1')](util[_0x0f29('0x2')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x150271[_0x0f29('0x4')],agents[_0x150271[_0x0f29('0x14')]][_0x0f29('0x6')],_0x150271[_0x0f29('0x14')]));agents[_0x150271[_0x0f29('0x14')]]['agentringnoanswer']=!![];agents[_0x150271[_0x0f29('0x14')]]['agentringnoanswerAt']=utils[_0x0f29('0x18')]();agents[_0x150271[_0x0f29('0x14')]][_0x0f29('0x9')]=_0x0f29('0x1c');agents[_0x150271['destuniqueid']][_0x0f29('0x1d')]='timeout';agents[_0x150271['destuniqueid']][_0x0f29('0x1e')]=_0x150271['ringtime']?parseInt(_0x150271['ringtime'])/0x3e8:0x0;agents[_0x150271['destuniqueid']]['talktime']=0x0;unanswered[_0x0f29('0x1f')](_0x150271[_0x0f29('0x14')]);}}catch(_0x4cc5a0){utils[_0x0f29('0x1a')](util[_0x0f29('0x2')](_0x0f29('0x20'),_0x150271['uniqueid']),_0x4cc5a0);}};exports['queuecallerabandon']=function(_0x37ebcc){try{_['forIn'](agents,function(_0x36b65c,_0x561c31){if(_0x36b65c['uniqueid']==_0x37ebcc[_0x0f29('0x4')]&&!_[_0x0f29('0x21')](unanswered,_0x36b65c[_0x0f29('0x14')])){utils[_0x0f29('0x22')](util['format']('[%s][agents][queuecallerabandon]',_0x37ebcc[_0x0f29('0x4')]),_0x37ebcc);utils['info'](util['format'](_0x0f29('0x23'),_0x37ebcc['uniqueid'],_0x36b65c[_0x0f29('0x6')],_0x36b65c['destuniqueid']));_0x36b65c['agentringnoanswer']=!![];_0x36b65c[_0x0f29('0x24')]=utils[_0x0f29('0x18')]();_0x36b65c[_0x0f29('0x9')]=_0x0f29('0x25');_0x36b65c[_0x0f29('0x1d')]='abandoned';_0x36b65c[_0x0f29('0x1e')]=_0x37ebcc['holdtime'];_0x36b65c[_0x0f29('0x26')]=0x0;writeDB(_0x36b65c);}});}catch(_0x3e8f3f){utils[_0x0f29('0x1a')](util[_0x0f29('0x2')]('[%s][agents][queuecallerabandon]',_0x37ebcc[_0x0f29('0x4')]),_0x3e8f3f);}};exports[_0x0f29('0x27')]=function(_0x5be4fa){try{if(agents[_0x5be4fa[_0x0f29('0x14')]]){utils[_0x0f29('0x22')](util['format']('[%s][agents][agentconnect]',_0x5be4fa[_0x0f29('0x4')]),_0x5be4fa);utils[_0x0f29('0x1')](util[_0x0f29('0x2')](_0x0f29('0x28'),_0x5be4fa[_0x0f29('0x4')],agents[_0x5be4fa[_0x0f29('0x14')]]['membername'],_0x5be4fa[_0x0f29('0x14')]));agents[_0x5be4fa['destuniqueid']][_0x0f29('0x29')]=utils['now']();agents[_0x5be4fa[_0x0f29('0x14')]][_0x0f29('0x8')]=_0x5be4fa[_0x0f29('0x8')];agents[_0x5be4fa['destuniqueid']]['connectedlinename']=_0x5be4fa[_0x0f29('0x19')];agents[_0x5be4fa['destuniqueid']][_0x0f29('0x1e')]=_0x5be4fa[_0x0f29('0x2a')];agents[_0x5be4fa[_0x0f29('0x14')]][_0x0f29('0x9')]=_0x0f29('0x2b');_['forIn'](agents,function(_0x13c05c,_0xf77c66){if(_0x13c05c[_0x0f29('0x14')]!=_0x5be4fa[_0x0f29('0x14')]&&_0x13c05c[_0x0f29('0x4')]==_0x5be4fa[_0x0f29('0x4')]){_0x13c05c[_0x0f29('0x26')]=0x0;_0x13c05c[_0x0f29('0x1e')]=_0x5be4fa[_0x0f29('0x2a')];_0x13c05c['agentringnoanswer']=!![];_0x13c05c[_0x0f29('0x24')]=utils[_0x0f29('0x18')]();_0x13c05c[_0x0f29('0x9')]=_0x0f29('0x2c');_0x13c05c['reason']=_0x0f29('0x2c');_0x13c05c[_0x0f29('0x2d')]=_0x5be4fa[_0x0f29('0x14')];_0x13c05c[_0x0f29('0x2e')]=_0x5be4fa[_0x0f29('0x6')];writeDB(_0x13c05c);}});}}catch(_0x56062d){utils[_0x0f29('0x1a')](util[_0x0f29('0x2')](_0x0f29('0x2f'),_0x5be4fa['uniqueid']),_0x56062d);}};exports[_0x0f29('0xf')]=function(_0x284279){try{if(!_[_0x0f29('0x30')](agents[_0x284279[_0x0f29('0x14')]])){utils[_0x0f29('0x22')](util[_0x0f29('0x2')](_0x0f29('0x31'),_0x284279[_0x0f29('0x4')]),_0x284279);utils['info'](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x284279[_0x0f29('0x4')],agents[_0x284279[_0x0f29('0x14')]][_0x0f29('0x6')],_0x284279[_0x0f29('0x14')]));agents[_0x284279[_0x0f29('0x14')]][_0x0f29('0xf')]=!![];agents[_0x284279['destuniqueid']][_0x0f29('0x32')]=utils['now']();agents[_0x284279[_0x0f29('0x14')]]['talktime']=utils[_0x0f29('0x33')](agents[_0x284279[_0x0f29('0x14')]][_0x0f29('0x32')],agents[_0x284279[_0x0f29('0x14')]][_0x0f29('0x29')]);agents[_0x284279['destuniqueid']][_0x0f29('0x1d')]=_0x284279[_0x0f29('0x1d')];agents[_0x284279[_0x0f29('0x14')]]['lastevent']=_0x0f29('0x34');writeDB(agents[_0x284279['destuniqueid']]);}}catch(_0x4fd625){utils[_0x0f29('0x1a')](util[_0x0f29('0x2')](_0x0f29('0x31'),_0x284279[_0x0f29('0x4')]),_0x4fd625);}};exports[_0x0f29('0x35')]=function(_0x335435){try{if(!_['isNil'](agents[_0x335435[_0x0f29('0x36')]])){utils[_0x0f29('0x22')](util[_0x0f29('0x2')](_0x0f29('0x37'),_0x335435[_0x0f29('0x4')]),_0x335435);utils[_0x0f29('0x1')](util[_0x0f29('0x2')](_0x0f29('0x38'),_0x335435[_0x0f29('0x4')],agents[_0x335435[_0x0f29('0x36')]]['membername'],agents[_0x335435['transfereruniqueid']][_0x0f29('0x4')]));agents[_0x335435[_0x0f29('0x36')]][_0x0f29('0x39')]=!![];agents[_0x335435[_0x0f29('0x36')]]['transfertype']=_0x0f29('0x3a');agents[_0x335435[_0x0f29('0x36')]][_0x0f29('0x3b')]=_0x335435[_0x0f29('0x3c')];agents[_0x335435[_0x0f29('0x36')]][_0x0f29('0x3d')]=agents[_0x335435[_0x0f29('0x36')]]['uniqueid'];}}catch(_0x17f33){utils[_0x0f29('0x1a')](util[_0x0f29('0x2')](_0x0f29('0x37'),_0x335435[_0x0f29('0x4')]),_0x17f33);}};exports[_0x0f29('0x3e')]=function(_0x5ec172){try{utils[_0x0f29('0x22')](util[_0x0f29('0x2')](_0x0f29('0x3f'),_0x5ec172['origtransfereruniqueid']),_0x5ec172);if(_0x5ec172[_0x0f29('0x40')]==_0x5ec172['origtransfererlinkedid']){if(!_[_0x0f29('0x30')](agents[_0x5ec172['secondtransfereruniqueid']])){utils[_0x0f29('0x1')](util[_0x0f29('0x2')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x5ec172[_0x0f29('0x40')],agents[_0x5ec172[_0x0f29('0x41')]][_0x0f29('0x6')]));agents[_0x5ec172['secondtransfereruniqueid']][_0x0f29('0x39')]=!![];agents[_0x5ec172['secondtransfereruniqueid']][_0x0f29('0x42')]=_0x0f29('0x43');agents[_0x5ec172['secondtransfereruniqueid']][_0x0f29('0x3b')]=_0x5ec172[_0x0f29('0x44')];agents[_0x5ec172['secondtransfereruniqueid']][_0x0f29('0x3d')]=_0x5ec172['origtransfereruniqueid'];}if(_0x5ec172[_0x0f29('0x45')]&&agents[_0x5ec172['transfereeuniqueid']]){agents[_0x5ec172[_0x0f29('0x45')]][_0x0f29('0x46')]=0x1;transfers[_0x5ec172[_0x0f29('0x45')]]=_['clone'](agents[_0x5ec172[_0x0f29('0x45')]]);transfers[_0x5ec172[_0x0f29('0x45')]][_0x0f29('0x7')]=agents[_0x5ec172[_0x0f29('0x41')]]['calleridnum'];transfers[_0x5ec172[_0x0f29('0x45')]]['calleridname']=agents[_0x5ec172[_0x0f29('0x41')]]['calleridname'];transfers[_0x5ec172[_0x0f29('0x45')]][_0x0f29('0x17')]=utils[_0x0f29('0x18')]();transfers[_0x5ec172[_0x0f29('0x45')]][_0x0f29('0x29')]=utils[_0x0f29('0x18')]();transfers[_0x5ec172[_0x0f29('0x45')]]['holdtime']=0x0;transfers[_0x5ec172[_0x0f29('0x45')]]['agententerreason']=0x2;}}else if(_0x5ec172[_0x0f29('0x41')]==_0x5ec172[_0x0f29('0x47')]){if(!_[_0x0f29('0x30')](agents[_0x5ec172['origtransfereruniqueid']])){utils[_0x0f29('0x1')](util[_0x0f29('0x2')](_0x0f29('0x48'),_0x5ec172[_0x0f29('0x40')],agents[_0x5ec172[_0x0f29('0x40')]]['membername']));agents[_0x5ec172['origtransfereruniqueid']][_0x0f29('0x39')]=!![];agents[_0x5ec172[_0x0f29('0x40')]][_0x0f29('0x42')]='ATTENDED';agents[_0x5ec172['origtransfereruniqueid']][_0x0f29('0x3b')]=_0x5ec172[_0x0f29('0x49')];agents[_0x5ec172[_0x0f29('0x40')]]['transferuniqueid']=_0x5ec172['secondtransfereruniqueid'];}if(_0x5ec172['transfertargetuniqueid']&&agents[_0x5ec172[_0x0f29('0x4a')]]){agents[_0x5ec172[_0x0f29('0x4a')]]['agententerreason']=0x1;transfers[_0x5ec172[_0x0f29('0x4a')]]=_[_0x0f29('0x4b')](agents[_0x5ec172['transfertargetuniqueid']]);transfers[_0x5ec172[_0x0f29('0x4a')]]['calleridnum']=agents[_0x5ec172[_0x0f29('0x40')]][_0x0f29('0x7')];transfers[_0x5ec172['transfertargetuniqueid']][_0x0f29('0x4c')]=agents[_0x5ec172[_0x0f29('0x40')]][_0x0f29('0x4c')];transfers[_0x5ec172[_0x0f29('0x4a')]][_0x0f29('0x17')]=utils[_0x0f29('0x18')]();transfers[_0x5ec172['transfertargetuniqueid']][_0x0f29('0x29')]=utils[_0x0f29('0x18')]();transfers[_0x5ec172[_0x0f29('0x4a')]]['holdtime']=0x0;transfers[_0x5ec172[_0x0f29('0x4a')]][_0x0f29('0x46')]=0x2;}}}catch(_0x4bbc7e){utils[_0x0f29('0x1a')](util['format'](_0x0f29('0x3f'),_0x5ec172[_0x0f29('0x40')]),_0x4bbc7e);}};exports[_0x0f29('0x4d')]=function(_0x4bd8f1){try{utils[_0x0f29('0x22')](util[_0x0f29('0x2')](_0x0f29('0x4e'),_0x4bd8f1[_0x0f29('0x4')]),_0x4bd8f1);if(agents[_0x4bd8f1[_0x0f29('0x4')]]&&agents[_0x4bd8f1[_0x0f29('0x4')]]['reason']===_0x0f29('0x1c')){if(_0x4bd8f1['cause']==='21'){agents[_0x4bd8f1['uniqueid']][_0x0f29('0x1d')]=_0x0f29('0x4f');agents[_0x4bd8f1['uniqueid']][_0x0f29('0x9')]=_0x0f29('0x4f');}utils['info'](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x4bd8f1['uniqueid'],agents[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x6')],agents[_0x4bd8f1['uniqueid']]['reason'],agents[_0x4bd8f1[_0x0f29('0x4')]]['lastevent']));writeDB(agents[_0x4bd8f1[_0x0f29('0x4')]]);var _0x473eac=unanswered[_0x0f29('0x50')](_0x4bd8f1[_0x0f29('0x4')]);if(_0x473eac>-0x1){unanswered['splice'](_0x473eac,0x1);}}if(transfers[_0x4bd8f1[_0x0f29('0x4')]]){transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0xf')]=!![];transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x32')]=utils['now']();transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x26')]=utils[_0x0f29('0x33')](transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x32')],transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x29')]);transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x1d')]=_0x0f29('0x51');transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x9')]=_0x0f29('0x34');utils[_0x0f29('0x1')](util[_0x0f29('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x4bd8f1[_0x0f29('0x4')],transfers[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x6')],transfers[_0x4bd8f1[_0x0f29('0x4')]]['reason'],transfers[_0x4bd8f1['uniqueid']][_0x0f29('0x9')]));writeDB(transfers[_0x4bd8f1[_0x0f29('0x4')]],!![]);}if(agents[_0x4bd8f1[_0x0f29('0x4')]]&&agents[_0x4bd8f1['uniqueid']][_0x0f29('0x29')]){agents[_0x4bd8f1['uniqueid']][_0x0f29('0xf')]=!![];agents[_0x4bd8f1['uniqueid']][_0x0f29('0x32')]=utils[_0x0f29('0x18')]();agents[_0x4bd8f1[_0x0f29('0x4')]]['talktime']=utils[_0x0f29('0x33')](agents[_0x4bd8f1['uniqueid']]['agentcompleteAt'],agents[_0x4bd8f1[_0x0f29('0x4')]]['agentconnectAt']);agents[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x1d')]=agents[_0x4bd8f1['uniqueid']][_0x0f29('0x39')]?_0x0f29('0x39'):_0x0f29('0x51');agents[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x9')]=_0x0f29('0x34');utils[_0x0f29('0x1')](util[_0x0f29('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x4bd8f1[_0x0f29('0x4')],agents[_0x4bd8f1[_0x0f29('0x4')]][_0x0f29('0x6')],agents[_0x4bd8f1['uniqueid']][_0x0f29('0x1d')],agents[_0x4bd8f1[_0x0f29('0x4')]]['lastevent']));writeDB(agents[_0x4bd8f1[_0x0f29('0x4')]]);}}catch(_0x5e39a7){utils[_0x0f29('0x1a')](util['format'](_0x0f29('0x4e'),_0x4bd8f1['uniqueid']),_0x5e39a7);}};
\ No newline at end of file
index 18016df..40a4fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaee6=['[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','application','appdata','set','startsWith','cdr','split','substring','lastIndexOf','includes','execif','gotoif','toLowerCase','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','format','OutgoingSpoolFailed','[%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','linkedid','destinationchannel','answertime','disposition','toNumber','ANSWERED','error','hangup','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','duration','diffTime','starttime','billableseconds','endtime','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','origtransfererchannel','userfield','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt'];(function(_0x38d1df,_0x3018dc){var _0x182a15=function(_0x32b3f2){while(--_0x32b3f2){_0x38d1df['push'](_0x38d1df['shift']());}};_0x182a15(++_0x3018dc);}(_0xaee6,0x187));var _0x6aee=function(_0x58605d,_0x424eea){_0x58605d=_0x58605d-0x0;var _0x2d2408=_0xaee6[_0x58605d];return _0x2d2408;};'use strict';var _=require(_0x6aee('0x0'));var util=require(_0x6aee('0x1'));var utils=require(_0x6aee('0x2'));var transfers=require(_0x6aee('0x3'));var dispositions=[_0x6aee('0x4'),_0x6aee('0x5'),'FAILED',_0x6aee('0x4'),_0x6aee('0x4'),_0x6aee('0x4'),'ANSWERED',_0x6aee('0x6'),_0x6aee('0x5'),_0x6aee('0x5'),_0x6aee('0x5')];var channels={};function writeDB(_0x437b2f){var _0x19f528;if(transfers[_0x6aee('0x7')][_0x437b2f['uniqueid']]){_0x19f528=_0x437b2f['uniqueid'];_0x437b2f[_0x6aee('0x8')]=transfers['blinds'][_0x437b2f[_0x6aee('0x8')]][_0x6aee('0x9')];}utils[_0x6aee('0xa')](util['format'](_0x6aee('0xb'),_0x437b2f[_0x6aee('0x8')],_0x437b2f[_0x6aee('0xc')],_0x437b2f[_0x6aee('0xd')],_0x437b2f['membername'],_0x437b2f[_0x6aee('0xe')],_0x437b2f['calleridnum'],_0x437b2f[_0x6aee('0xf')],_0x437b2f[_0x6aee('0x10')]));if(_0x437b2f[_0x6aee('0x11')]){utils[_0x6aee('0x12')](_0x437b2f[_0x6aee('0x11')])['then'](function(_0x2d13f5){if(_0x2d13f5){_0x437b2f[_0x6aee('0x13')]=_0x2d13f5['id'];}utils['request']('CreateVoiceCallReport',_0x437b2f);});}else{utils[_0x6aee('0x14')](_0x6aee('0x15'),_0x437b2f);}if(channels[_0x437b2f[_0x6aee('0x8')]]){delete channels[_0x437b2f[_0x6aee('0x8')]];}else if(_0x19f528&&channels[_0x19f528]){if(!transfers[_0x6aee('0x7')][_0x19f528][_0x6aee('0x16')])delete transfers[_0x6aee('0x7')][_0x19f528];delete channels[_0x19f528];}}exports[_0x6aee('0x17')]=function(_0x5cc0b0){try{utils[_0x6aee('0x18')](util[_0x6aee('0x19')]('[%s][calls][newchannel]',_0x5cc0b0[_0x6aee('0x8')]),_0x5cc0b0);if(_0x5cc0b0[_0x6aee('0x8')]==_0x5cc0b0['linkedid']&&_0x5cc0b0[_0x6aee('0xc')]!=_0x6aee('0x1a')){utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x1b'),_0x5cc0b0[_0x6aee('0x8')],_0x5cc0b0[_0x6aee('0x1c')],_0x5cc0b0['exten']));channels[_0x5cc0b0[_0x6aee('0x8')]]={'uniqueid':_0x5cc0b0['uniqueid'],'accountcode':_0x5cc0b0['accountcode'],'source':_0x5cc0b0[_0x6aee('0x1d')],'destination':_0x5cc0b0[_0x6aee('0x1e')],'destinationcontext':_0x5cc0b0[_0x6aee('0x1c')],'channel':_0x5cc0b0[_0x6aee('0xc')],'starttime':utils[_0x6aee('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x6aee('0x4'),'amaflags':_0x6aee('0x20')};}}catch(_0x1ffa47){utils['error'](util[_0x6aee('0x19')]('[%s][calls][newchannel]',_0x5cc0b0['uniqueid']),_0x1ffa47);}};exports[_0x6aee('0x21')]=function(_0x30f4cd){try{utils['debug'](util[_0x6aee('0x19')](_0x6aee('0x22'),_0x30f4cd['uniqueid']),_0x30f4cd);if(!_[_0x6aee('0x23')](channels[_0x30f4cd[_0x6aee('0x8')]])&&_0x30f4cd[_0x6aee('0x24')]==0x6){utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x25'),_0x30f4cd[_0x6aee('0x8')],_0x30f4cd[_0x6aee('0x1c')],_0x30f4cd[_0x6aee('0xc')]));if(_[_0x6aee('0x23')](channels[_0x30f4cd[_0x6aee('0x8')]][_0x6aee('0x26')])){channels[_0x30f4cd[_0x6aee('0x8')]][_0x6aee('0x26')]=utils[_0x6aee('0x1f')]();}}else if(!_[_0x6aee('0x23')](channels[_0x30f4cd['linkedid']])&&_0x30f4cd['channelstate']==0x6&&_0x30f4cd[_0x6aee('0x1c')]!=_0x6aee('0x27')){utils[_0x6aee('0xa')](util[_0x6aee('0x19')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x30f4cd[_0x6aee('0x8')],_0x30f4cd['linkedid'],_0x30f4cd[_0x6aee('0x1c')],_0x30f4cd[_0x6aee('0xc')]));channels[_0x30f4cd[_0x6aee('0x28')]][_0x6aee('0x11')]=_0x30f4cd[_0x6aee('0x11')];channels[_0x30f4cd[_0x6aee('0x28')]][_0x6aee('0x29')]=_0x30f4cd[_0x6aee('0xc')];if(_[_0x6aee('0x23')](channels[_0x30f4cd[_0x6aee('0x28')]][_0x6aee('0x2a')])){channels[_0x30f4cd[_0x6aee('0x28')]][_0x6aee('0x2a')]=utils['now']();}channels[_0x30f4cd[_0x6aee('0x28')]][_0x6aee('0x2b')]=dispositions[_[_0x6aee('0x2c')](_0x30f4cd[_0x6aee('0x24')])]||_0x6aee('0x2d');}}catch(_0x43d09e){utils[_0x6aee('0x2e')](util[_0x6aee('0x19')]('[%s][calls][newstate]',_0x30f4cd[_0x6aee('0x8')]),_0x43d09e);}};exports[_0x6aee('0x2f')]=function(_0x741f9f){try{if(!_[_0x6aee('0x23')](channels[_0x741f9f[_0x6aee('0x8')]])){utils[_0x6aee('0x18')](util[_0x6aee('0x19')](_0x6aee('0x30'),_0x741f9f[_0x6aee('0x8')]),_0x741f9f);if(_[_0x6aee('0x23')](channels[_0x741f9f[_0x6aee('0x8')]]['callerid'])){channels[_0x741f9f['uniqueid']][_0x6aee('0x31')]=_0x741f9f['calleridname']+'\x20<'+_0x741f9f['calleridnum']+'>';}utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x32'),_0x741f9f['uniqueid'],channels[_0x741f9f[_0x6aee('0x8')]][_0x6aee('0x31')],_0x741f9f[_0x6aee('0x33')]));channels[_0x741f9f[_0x6aee('0x8')]]['endtime']=utils[_0x6aee('0x1f')]();channels[_0x741f9f[_0x6aee('0x8')]][_0x6aee('0x34')]=utils[_0x6aee('0x35')](channels[_0x741f9f[_0x6aee('0x8')]]['endtime'],channels[_0x741f9f[_0x6aee('0x8')]][_0x6aee('0x36')]);channels[_0x741f9f[_0x6aee('0x8')]][_0x6aee('0x37')]=channels[_0x741f9f[_0x6aee('0x8')]]['answertime']?utils[_0x6aee('0x35')](channels[_0x741f9f['uniqueid']][_0x6aee('0x38')],channels[_0x741f9f[_0x6aee('0x8')]][_0x6aee('0x2a')]):0x0;writeDB(channels[_0x741f9f[_0x6aee('0x8')]]);}}catch(_0x36c6a4){utils[_0x6aee('0x2e')](util['format']('[%s][calls][hangup]',_0x741f9f[_0x6aee('0x8')]),_0x36c6a4);}};exports['attendedtransfer']=function(_0x35afaf){try{if(!_[_0x6aee('0x23')](channels[_0x35afaf[_0x6aee('0x39')]])){utils[_0x6aee('0x18')](util['format'](_0x6aee('0x3a'),_0x35afaf['origtransfereruniqueid']),_0x35afaf);if(channels[_0x35afaf[_0x6aee('0x39')]]['channel']==_0x35afaf[_0x6aee('0x3b')]){utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x3c'),_0x35afaf[_0x6aee('0x3d')],_0x35afaf[_0x6aee('0x39')],_0x35afaf[_0x6aee('0x3e')]));channels[_0x35afaf[_0x6aee('0x39')]]['destinationchannel']=_0x35afaf[_0x6aee('0x3e')];channels[_0x35afaf[_0x6aee('0x39')]]['userfield']='_attended';}else if(channels[_0x35afaf[_0x6aee('0x39')]][_0x6aee('0xc')]=_0x35afaf['transfertargetchannel']){utils[_0x6aee('0xa')](util['format'](_0x6aee('0x3c'),_0x35afaf[_0x6aee('0x3d')],_0x35afaf[_0x6aee('0x39')],_0x35afaf[_0x6aee('0x3f')]));channels[_0x35afaf['localtwolinkedid']]['destinationchannel']=_0x35afaf[_0x6aee('0x3f')];channels[_0x35afaf[_0x6aee('0x39')]][_0x6aee('0x40')]=_0x6aee('0x41');}}}catch(_0x48b373){utils[_0x6aee('0x2e')](util['format'](_0x6aee('0x3a'),_0x35afaf[_0x6aee('0x3d')]),_0x48b373);}};exports[_0x6aee('0x42')]=function(_0x12fa88){try{if(!_['isNil'](channels[_0x12fa88[_0x6aee('0x8')]])){utils[_0x6aee('0x18')](util[_0x6aee('0x19')](_0x6aee('0x43'),_0x12fa88[_0x6aee('0x8')]),_0x12fa88);channels[_0x12fa88[_0x6aee('0x8')]][_0x6aee('0x44')]=utils[_0x6aee('0x1f')]();utils['info'](util[_0x6aee('0x19')](_0x6aee('0x45'),_0x12fa88['uniqueid'],channels[_0x12fa88[_0x6aee('0x8')]][_0x6aee('0x44')]));}}catch(_0x1259cc){utils[_0x6aee('0x2e')](util['format']('[%s][calls][musiconholdstart]',_0x12fa88[_0x6aee('0x8')]),_0x1259cc);}};exports[_0x6aee('0x46')]=function(_0x471b28){try{if(!_[_0x6aee('0x23')](channels[_0x471b28['uniqueid']])){utils[_0x6aee('0x18')](util['format'](_0x6aee('0x47'),_0x471b28['uniqueid']),_0x471b28);if(!_[_0x6aee('0x23')](channels[_0x471b28[_0x6aee('0x8')]][_0x6aee('0x44')])){channels[_0x471b28[_0x6aee('0x8')]][_0x6aee('0x48')]+=utils[_0x6aee('0x35')](utils[_0x6aee('0x1f')](),channels[_0x471b28[_0x6aee('0x8')]][_0x6aee('0x44')]);utils[_0x6aee('0xa')](util['format'](_0x6aee('0x49'),_0x471b28[_0x6aee('0x8')],channels[_0x471b28[_0x6aee('0x8')]][_0x6aee('0x48')]));delete channels[_0x471b28['uniqueid']]['musiconholdstartAt'];}}}catch(_0x3df9c6){utils['error'](util[_0x6aee('0x19')]('[%s][calls][musiconholdstop]',_0x471b28[_0x6aee('0x8')]),_0x3df9c6);}};exports[_0x6aee('0x4a')]=function(_0x106e95){try{if(!_['isNil'](channels[_0x106e95['uniqueid']])){utils[_0x6aee('0x18')](util['format']('[%s][calls][varset]',_0x106e95[_0x6aee('0x8')]),_0x106e95);if(!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x4c')])){utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x4d'),_0x106e95[_0x6aee('0x8')],_0x106e95[_0x6aee('0x4e')]));channels[_0x106e95['uniqueid']][_0x6aee('0x4f')]=_0x106e95[_0x6aee('0x4e')];}if(!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x50')])){utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x51'),_0x106e95[_0x6aee('0x8')],_0x106e95[_0x6aee('0x4e')]));channels[_0x106e95[_0x6aee('0x8')]]['destination']=_0x106e95[_0x6aee('0x4e')];channels[_0x106e95[_0x6aee('0x8')]][_0x6aee('0x31')]='\x22'+_0x106e95[_0x6aee('0x4e')]+_0x6aee('0x52')+_0x106e95[_0x6aee('0x4e')]+'>';}if(!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x53')])||!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x54')])){utils['info'](util['format'](_0x6aee('0x55'),_0x106e95[_0x6aee('0x8')],!_['isNil'](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x53')])?_0x6aee('0x53'):_0x6aee('0x54'),_0x106e95[_0x6aee('0x4e')]));channels[_0x106e95[_0x6aee('0x8')]]['callerid']=_0x106e95['value'];}if(!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x56')])||!_[_0x6aee('0x23')](_0x106e95['variable'][_0x6aee('0x57')])){utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x55'),_0x106e95[_0x6aee('0x8')],!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')]['xmd-queue'])?_0x6aee('0x56'):_0x6aee('0x57'),_0x106e95['value']));channels[_0x106e95[_0x6aee('0x8')]][_0x6aee('0x58')]=_0x6aee('0x59');channels[_0x106e95['uniqueid']][_0x6aee('0x5a')]=_0x106e95[_0x6aee('0x4e')];channels[_0x106e95[_0x6aee('0x8')]][_0x6aee('0xd')]=!![];}if(!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x5b')])){utils[_0x6aee('0xa')](util[_0x6aee('0x19')](_0x6aee('0x5c'),_0x106e95[_0x6aee('0x8')],_0x106e95[_0x6aee('0x4e')]));channels[_0x106e95[_0x6aee('0x8')]][_0x6aee('0x5d')]=_0x106e95[_0x6aee('0x4e')];}if(!_['isNil'](_0x106e95[_0x6aee('0x4b')]['xmd-cdrtype'])){utils[_0x6aee('0xa')](util[_0x6aee('0x19')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x106e95[_0x6aee('0x8')],_0x106e95[_0x6aee('0x4e')]));channels[_0x106e95[_0x6aee('0x8')]][_0x6aee('0x5e')]=_0x106e95[_0x6aee('0x4e')];}if(!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x5f')])){utils['info'](util[_0x6aee('0x19')](_0x6aee('0x60'),_0x106e95[_0x6aee('0x8')],_0x106e95[_0x6aee('0x4e')]));channels[_0x106e95['uniqueid']][_0x6aee('0x61')]=_0x106e95['value'];}if(!_[_0x6aee('0x23')](_0x106e95[_0x6aee('0x4b')][_0x6aee('0x62')])){utils['info'](util[_0x6aee('0x19')](_0x6aee('0x63'),_0x106e95[_0x6aee('0x8')],_0x106e95[_0x6aee('0x4e')]));channels[_0x106e95[_0x6aee('0x8')]][_0x6aee('0x62')]=_0x106e95[_0x6aee('0x4e')];}}}catch(_0x5b0b7a){utils[_0x6aee('0x2e')](util[_0x6aee('0x19')](_0x6aee('0x64'),_0x106e95[_0x6aee('0x8')]),_0x5b0b7a);}};exports[_0x6aee('0x65')]=function(_0x504bfd){try{if(!_['isNil'](channels[_0x504bfd[_0x6aee('0x8')]])){utils[_0x6aee('0x18')](util[_0x6aee('0x19')](_0x6aee('0x66'),_0x504bfd['uniqueid']),_0x504bfd);utils[_0x6aee('0xa')](util[_0x6aee('0x19')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x504bfd[_0x6aee('0x8')],_0x504bfd[_0x6aee('0x67')],_0x504bfd[_0x6aee('0x68')]));if(_0x504bfd['application']['toLowerCase']()==_0x6aee('0x69')&&_[_0x6aee('0x6a')](_0x504bfd[_0x6aee('0x68')]['toLowerCase'](),_0x6aee('0x6b'))){var _0xbf2bc6=_0x504bfd[_0x6aee('0x68')][_0x6aee('0x6c')]('=');var _0x4e0544=_0xbf2bc6[0x0][_0x6aee('0x6d')](_0xbf2bc6[0x0][_0x6aee('0x6e')]('(')+0x1,_0xbf2bc6[0x0][_0x6aee('0x6e')](')'));var _0x4ac78b=_0xbf2bc6[0x1];channels[_0x504bfd[_0x6aee('0x8')]][_0x4e0544]=_0x4ac78b;}if(!_[_0x6aee('0x6f')](['hangup','noop',_0x6aee('0x70'),'set',_0x6aee('0x71')],_0x504bfd['application'][_0x6aee('0x72')]())){channels[_0x504bfd['uniqueid']][_0x6aee('0x58')]=_0x504bfd[_0x6aee('0x67')];channels[_0x504bfd[_0x6aee('0x8')]][_0x6aee('0x5a')]=_0x504bfd[_0x6aee('0x68')];}}}catch(_0x156fee){utils[_0x6aee('0x2e')](util[_0x6aee('0x19')]('[%s][calls][newexten]',_0x504bfd[_0x6aee('0x8')]),_0x156fee);}};
\ No newline at end of file
+var _0x2c16=['[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','[%s][calls][varset]','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','startsWith','toLowerCase','substring','lastIndexOf','hangup','noop','set','gotoif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','connectedlinenum','lastevent','accountcode','then','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','format','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','context','now','DOCUMENTATION','error','newstate','isNil','systemanswertime','channelstate','transfer','destinationchannel','disposition','toNumber','[%s][calls][hangup]','callerid','calleridname','calleridnum','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','billableseconds','answertime','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','xmd-phone','destination','\x22\x20<','xmd-callerid','xmd-callerid-preview','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','lastapplication','Queue','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid'];(function(_0x37e845,_0x219f9f){var _0x59e55b=function(_0x5dc6c8){while(--_0x5dc6c8){_0x37e845['push'](_0x37e845['shift']());}};_0x59e55b(++_0x219f9f);}(_0x2c16,0xf0));var _0x62c1=function(_0x55e9ee,_0x4556de){_0x55e9ee=_0x55e9ee-0x0;var _0x2faf58=_0x2c16[_0x55e9ee];return _0x2faf58;};'use strict';var _=require(_0x62c1('0x0'));var util=require(_0x62c1('0x1'));var utils=require(_0x62c1('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x62c1('0x3'),_0x62c1('0x4'),_0x62c1('0x4'),_0x62c1('0x3'),_0x62c1('0x3'),_0x62c1('0x3'),_0x62c1('0x5'),_0x62c1('0x6'),_0x62c1('0x4'),_0x62c1('0x4'),'FAILED'];var channels={};function writeDB(_0x113a32){var _0x4bcc7b;if(transfers[_0x62c1('0x7')][_0x113a32['uniqueid']]){_0x4bcc7b=_0x113a32[_0x62c1('0x8')];_0x113a32['uniqueid']=transfers[_0x62c1('0x7')][_0x113a32[_0x62c1('0x8')]]['transfereeuniqueid'];}utils[_0x62c1('0x9')](util['format'](_0x62c1('0xa'),_0x113a32[_0x62c1('0x8')],_0x113a32[_0x62c1('0xb')],_0x113a32[_0x62c1('0xc')],_0x113a32[_0x62c1('0xd')],_0x113a32['interface'],_0x113a32['calleridnum'],_0x113a32[_0x62c1('0xe')],_0x113a32[_0x62c1('0xf')]));if(_0x113a32['accountcode']){utils['getUserByInternal'](_0x113a32[_0x62c1('0x10')])[_0x62c1('0x11')](function(_0x54c85a){if(_0x54c85a){_0x113a32[_0x62c1('0x12')]=_0x54c85a['id'];}utils[_0x62c1('0x13')](_0x62c1('0x14'),_0x113a32);});}else{utils[_0x62c1('0x13')](_0x62c1('0x14'),_0x113a32);}if(channels[_0x113a32['uniqueid']]){delete channels[_0x113a32[_0x62c1('0x8')]];}else if(_0x4bcc7b&&channels[_0x4bcc7b]){if(!transfers['blinds'][_0x4bcc7b][_0x62c1('0x15')])delete transfers[_0x62c1('0x7')][_0x4bcc7b];delete channels[_0x4bcc7b];}}exports[_0x62c1('0x16')]=function(_0x141910){try{utils[_0x62c1('0x17')](util[_0x62c1('0x18')](_0x62c1('0x19'),_0x141910[_0x62c1('0x8')]),_0x141910);if(_0x141910[_0x62c1('0x8')]==_0x141910[_0x62c1('0x1a')]&&_0x141910[_0x62c1('0xb')]!=_0x62c1('0x1b')){utils[_0x62c1('0x9')](util['format'](_0x62c1('0x1c'),_0x141910[_0x62c1('0x8')],_0x141910['context'],_0x141910['exten']));channels[_0x141910[_0x62c1('0x8')]]={'uniqueid':_0x141910['uniqueid'],'accountcode':_0x141910['accountcode'],'source':_0x141910['calleridnum'],'destination':_0x141910[_0x62c1('0x1d')],'destinationcontext':_0x141910[_0x62c1('0x1e')],'channel':_0x141910[_0x62c1('0xb')],'starttime':utils[_0x62c1('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x62c1('0x3'),'amaflags':_0x62c1('0x20')};}}catch(_0x39d2db){utils[_0x62c1('0x21')](util[_0x62c1('0x18')](_0x62c1('0x19'),_0x141910['uniqueid']),_0x39d2db);}};exports[_0x62c1('0x22')]=function(_0x34bc6e){try{utils['debug'](util[_0x62c1('0x18')]('[%s][calls][newstate]',_0x34bc6e[_0x62c1('0x8')]),_0x34bc6e);if(!_[_0x62c1('0x23')](channels[_0x34bc6e[_0x62c1('0x8')]])&&_0x34bc6e['channelstate']==0x6){utils['info'](util['format']('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x34bc6e[_0x62c1('0x8')],_0x34bc6e[_0x62c1('0x1e')],_0x34bc6e[_0x62c1('0xb')]));if(_['isNil'](channels[_0x34bc6e[_0x62c1('0x8')]][_0x62c1('0x24')])){channels[_0x34bc6e[_0x62c1('0x8')]][_0x62c1('0x24')]=utils['now']();}}else if(!_[_0x62c1('0x23')](channels[_0x34bc6e[_0x62c1('0x1a')]])&&_0x34bc6e[_0x62c1('0x25')]==0x6&&_0x34bc6e[_0x62c1('0x1e')]!=_0x62c1('0x26')){utils[_0x62c1('0x9')](util[_0x62c1('0x18')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x34bc6e['uniqueid'],_0x34bc6e[_0x62c1('0x1a')],_0x34bc6e['context'],_0x34bc6e[_0x62c1('0xb')]));channels[_0x34bc6e[_0x62c1('0x1a')]][_0x62c1('0x10')]=_0x34bc6e[_0x62c1('0x10')];channels[_0x34bc6e[_0x62c1('0x1a')]][_0x62c1('0x27')]=_0x34bc6e[_0x62c1('0xb')];if(_[_0x62c1('0x23')](channels[_0x34bc6e[_0x62c1('0x1a')]]['answertime'])){channels[_0x34bc6e['linkedid']]['answertime']=utils['now']();}channels[_0x34bc6e[_0x62c1('0x1a')]][_0x62c1('0x28')]=dispositions[_[_0x62c1('0x29')](_0x34bc6e[_0x62c1('0x25')])]||'ANSWERED';}}catch(_0x9fa2e5){utils[_0x62c1('0x21')](util['format']('[%s][calls][newstate]',_0x34bc6e['uniqueid']),_0x9fa2e5);}};exports['hangup']=function(_0x39c342){try{if(!_[_0x62c1('0x23')](channels[_0x39c342[_0x62c1('0x8')]])){utils[_0x62c1('0x17')](util[_0x62c1('0x18')](_0x62c1('0x2a'),_0x39c342['uniqueid']),_0x39c342);if(_[_0x62c1('0x23')](channels[_0x39c342['uniqueid']][_0x62c1('0x2b')])){channels[_0x39c342['uniqueid']]['callerid']=_0x39c342[_0x62c1('0x2c')]+'\x20<'+_0x39c342[_0x62c1('0x2d')]+'>';}utils[_0x62c1('0x9')](util[_0x62c1('0x18')](_0x62c1('0x2e'),_0x39c342[_0x62c1('0x8')],channels[_0x39c342['uniqueid']][_0x62c1('0x2b')],_0x39c342[_0x62c1('0x2f')]));channels[_0x39c342[_0x62c1('0x8')]][_0x62c1('0x30')]=utils['now']();channels[_0x39c342[_0x62c1('0x8')]][_0x62c1('0x31')]=utils[_0x62c1('0x32')](channels[_0x39c342[_0x62c1('0x8')]][_0x62c1('0x30')],channels[_0x39c342['uniqueid']][_0x62c1('0x33')]);channels[_0x39c342[_0x62c1('0x8')]][_0x62c1('0x34')]=channels[_0x39c342[_0x62c1('0x8')]][_0x62c1('0x35')]?utils[_0x62c1('0x32')](channels[_0x39c342[_0x62c1('0x8')]][_0x62c1('0x30')],channels[_0x39c342[_0x62c1('0x8')]][_0x62c1('0x35')]):0x0;writeDB(channels[_0x39c342['uniqueid']]);}}catch(_0x5358c4){utils[_0x62c1('0x21')](util['format'](_0x62c1('0x2a'),_0x39c342[_0x62c1('0x8')]),_0x5358c4);}};exports[_0x62c1('0x36')]=function(_0x2f3a87){try{if(!_[_0x62c1('0x23')](channels[_0x2f3a87['localtwolinkedid']])){utils['debug'](util['format'](_0x62c1('0x37'),_0x2f3a87[_0x62c1('0x38')]),_0x2f3a87);if(channels[_0x2f3a87[_0x62c1('0x39')]][_0x62c1('0xb')]==_0x2f3a87[_0x62c1('0x3a')]){utils['info'](util[_0x62c1('0x18')](_0x62c1('0x3b'),_0x2f3a87[_0x62c1('0x38')],_0x2f3a87[_0x62c1('0x39')],_0x2f3a87[_0x62c1('0x3c')]));channels[_0x2f3a87[_0x62c1('0x39')]][_0x62c1('0x27')]=_0x2f3a87[_0x62c1('0x3c')];channels[_0x2f3a87[_0x62c1('0x39')]][_0x62c1('0x3d')]=_0x62c1('0x3e');}else if(channels[_0x2f3a87[_0x62c1('0x39')]]['channel']=_0x2f3a87[_0x62c1('0x3f')]){utils['info'](util[_0x62c1('0x18')](_0x62c1('0x3b'),_0x2f3a87[_0x62c1('0x38')],_0x2f3a87[_0x62c1('0x39')],_0x2f3a87[_0x62c1('0x40')]));channels[_0x2f3a87['localtwolinkedid']][_0x62c1('0x27')]=_0x2f3a87['origtransfererchannel'];channels[_0x2f3a87[_0x62c1('0x39')]]['userfield']='_attended';}}}catch(_0x8a4676){utils[_0x62c1('0x21')](util[_0x62c1('0x18')]('[%s][calls][attendedtransfer]',_0x2f3a87[_0x62c1('0x38')]),_0x8a4676);}};exports[_0x62c1('0x41')]=function(_0x4d760c){try{if(!_[_0x62c1('0x23')](channels[_0x4d760c[_0x62c1('0x8')]])){utils[_0x62c1('0x17')](util['format']('[%s][calls][musiconholdstart]',_0x4d760c[_0x62c1('0x8')]),_0x4d760c);channels[_0x4d760c[_0x62c1('0x8')]][_0x62c1('0x42')]=utils[_0x62c1('0x1f')]();utils['info'](util[_0x62c1('0x18')](_0x62c1('0x43'),_0x4d760c[_0x62c1('0x8')],channels[_0x4d760c[_0x62c1('0x8')]][_0x62c1('0x42')]));}}catch(_0x2d90ba){utils['error'](util[_0x62c1('0x18')](_0x62c1('0x44'),_0x4d760c[_0x62c1('0x8')]),_0x2d90ba);}};exports['musiconholdstop']=function(_0x18fce2){try{if(!_['isNil'](channels[_0x18fce2[_0x62c1('0x8')]])){utils[_0x62c1('0x17')](util['format'](_0x62c1('0x45'),_0x18fce2['uniqueid']),_0x18fce2);if(!_[_0x62c1('0x23')](channels[_0x18fce2['uniqueid']][_0x62c1('0x42')])){channels[_0x18fce2['uniqueid']][_0x62c1('0x46')]+=utils[_0x62c1('0x32')](utils[_0x62c1('0x1f')](),channels[_0x18fce2['uniqueid']][_0x62c1('0x42')]);utils[_0x62c1('0x9')](util[_0x62c1('0x18')](_0x62c1('0x47'),_0x18fce2['uniqueid'],channels[_0x18fce2[_0x62c1('0x8')]]['mohtime']));delete channels[_0x18fce2[_0x62c1('0x8')]][_0x62c1('0x42')];}}}catch(_0x4cc13f){utils[_0x62c1('0x21')](util['format'](_0x62c1('0x45'),_0x18fce2[_0x62c1('0x8')]),_0x4cc13f);}};exports[_0x62c1('0x48')]=function(_0x3ada6){try{if(!_[_0x62c1('0x23')](channels[_0x3ada6[_0x62c1('0x8')]])){utils[_0x62c1('0x17')](util[_0x62c1('0x18')]('[%s][calls][varset]',_0x3ada6[_0x62c1('0x8')]),_0x3ada6);if(!_['isNil'](_0x3ada6[_0x62c1('0x49')][_0x62c1('0x4a')])){utils[_0x62c1('0x9')](util[_0x62c1('0x18')](_0x62c1('0x4b'),_0x3ada6[_0x62c1('0x8')],_0x3ada6['value']));channels[_0x3ada6['uniqueid']][_0x62c1('0x4c')]=_0x3ada6[_0x62c1('0x4d')];}if(!_['isNil'](_0x3ada6[_0x62c1('0x49')][_0x62c1('0x4e')])){utils[_0x62c1('0x9')](util[_0x62c1('0x18')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x3ada6[_0x62c1('0x8')],_0x3ada6[_0x62c1('0x4d')]));channels[_0x3ada6['uniqueid']][_0x62c1('0x4f')]=_0x3ada6[_0x62c1('0x4d')];channels[_0x3ada6[_0x62c1('0x8')]][_0x62c1('0x2b')]='\x22'+_0x3ada6[_0x62c1('0x4d')]+_0x62c1('0x50')+_0x3ada6['value']+'>';}if(!_[_0x62c1('0x23')](_0x3ada6[_0x62c1('0x49')]['xmd-callerid-preview'])||!_[_0x62c1('0x23')](_0x3ada6[_0x62c1('0x49')][_0x62c1('0x51')])){utils[_0x62c1('0x9')](util[_0x62c1('0x18')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x3ada6[_0x62c1('0x8')],!_[_0x62c1('0x23')](_0x3ada6['variable'][_0x62c1('0x52')])?_0x62c1('0x52'):_0x62c1('0x51'),_0x3ada6[_0x62c1('0x4d')]));channels[_0x3ada6[_0x62c1('0x8')]]['callerid']=_0x3ada6[_0x62c1('0x4d')];}if(!_[_0x62c1('0x23')](_0x3ada6[_0x62c1('0x49')][_0x62c1('0x53')])||!_['isNil'](_0x3ada6[_0x62c1('0x49')][_0x62c1('0x54')])){utils[_0x62c1('0x9')](util[_0x62c1('0x18')](_0x62c1('0x55'),_0x3ada6['uniqueid'],!_[_0x62c1('0x23')](_0x3ada6[_0x62c1('0x49')][_0x62c1('0x53')])?_0x62c1('0x53'):_0x62c1('0x54'),_0x3ada6[_0x62c1('0x4d')]));channels[_0x3ada6[_0x62c1('0x8')]][_0x62c1('0x56')]=_0x62c1('0x57');channels[_0x3ada6['uniqueid']][_0x62c1('0x58')]=_0x3ada6[_0x62c1('0x4d')];channels[_0x3ada6[_0x62c1('0x8')]][_0x62c1('0xc')]=!![];}if(!_[_0x62c1('0x23')](_0x3ada6['variable']['xmd-contactid'])){utils['info'](util[_0x62c1('0x18')](_0x62c1('0x59'),_0x3ada6[_0x62c1('0x8')],_0x3ada6[_0x62c1('0x4d')]));channels[_0x3ada6['uniqueid']][_0x62c1('0x5a')]=_0x3ada6[_0x62c1('0x4d')];}if(!_[_0x62c1('0x23')](_0x3ada6['variable'][_0x62c1('0x5b')])){utils[_0x62c1('0x9')](util[_0x62c1('0x18')](_0x62c1('0x5c'),_0x3ada6[_0x62c1('0x8')],_0x3ada6[_0x62c1('0x4d')]));channels[_0x3ada6[_0x62c1('0x8')]][_0x62c1('0x5d')]=_0x3ada6[_0x62c1('0x4d')];}if(!_[_0x62c1('0x23')](_0x3ada6['variable'][_0x62c1('0x5e')])){utils[_0x62c1('0x9')](util[_0x62c1('0x18')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x3ada6[_0x62c1('0x8')],_0x3ada6[_0x62c1('0x4d')]));channels[_0x3ada6[_0x62c1('0x8')]][_0x62c1('0x5f')]=_0x3ada6[_0x62c1('0x4d')];}if(!_[_0x62c1('0x23')](_0x3ada6[_0x62c1('0x49')]['sipcallid'])){utils[_0x62c1('0x9')](util[_0x62c1('0x18')](_0x62c1('0x60'),_0x3ada6[_0x62c1('0x8')],_0x3ada6[_0x62c1('0x4d')]));channels[_0x3ada6[_0x62c1('0x8')]][_0x62c1('0x61')]=_0x3ada6['value'];}}}catch(_0x10c59d){utils[_0x62c1('0x21')](util['format'](_0x62c1('0x62'),_0x3ada6[_0x62c1('0x8')]),_0x10c59d);}};exports[_0x62c1('0x63')]=function(_0x5b517e){try{if(!_[_0x62c1('0x23')](channels[_0x5b517e[_0x62c1('0x8')]])){utils['debug'](util[_0x62c1('0x18')](_0x62c1('0x64'),_0x5b517e[_0x62c1('0x8')]),_0x5b517e);utils['info'](util['format'](_0x62c1('0x65'),_0x5b517e[_0x62c1('0x8')],_0x5b517e[_0x62c1('0x66')],_0x5b517e[_0x62c1('0x67')]));if(_0x5b517e['application']['toLowerCase']()=='set'&&_[_0x62c1('0x68')](_0x5b517e[_0x62c1('0x67')][_0x62c1('0x69')](),'cdr')){var _0x16566c=_0x5b517e[_0x62c1('0x67')]['split']('=');var _0x197aa4=_0x16566c[0x0][_0x62c1('0x6a')](_0x16566c[0x0][_0x62c1('0x6b')]('(')+0x1,_0x16566c[0x0][_0x62c1('0x6b')](')'));var _0x158edb=_0x16566c[0x1];channels[_0x5b517e[_0x62c1('0x8')]][_0x197aa4]=_0x158edb;}if(!_['includes']([_0x62c1('0x6c'),_0x62c1('0x6d'),'execif',_0x62c1('0x6e'),_0x62c1('0x6f')],_0x5b517e['application'][_0x62c1('0x69')]())){channels[_0x5b517e[_0x62c1('0x8')]][_0x62c1('0x56')]=_0x5b517e[_0x62c1('0x66')];channels[_0x5b517e[_0x62c1('0x8')]][_0x62c1('0x58')]=_0x5b517e[_0x62c1('0x67')];}}}catch(_0x1d9b66){utils[_0x62c1('0x21')](util['format']('[%s][calls][newexten]',_0x5b517e['uniqueid']),_0x1d9b66);}};
\ No newline at end of file
index ee75793..7cf9a4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x782d=['./utils','connect','info','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','[core]\x20close','managerevent'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x782d,0xc6));var _0xd782=function(_0x4c9396,_0x17dc3e){_0x4c9396=_0x4c9396-0x0;var _0x4715c0=_0x782d[_0x4c9396];return _0x4715c0;};'use strict';var utils=require(_0xd782('0x0'));exports[_0xd782('0x1')]=function(){utils[_0xd782('0x2')]('[core]\x20connected');};exports[_0xd782('0x3')]=function(){utils[_0xd782('0x2')](_0xd782('0x4'));};exports[_0xd782('0x5')]=function(){utils[_0xd782('0x2')](_0xd782('0x6'));};exports[_0xd782('0x7')]=function(_0x4ea34c){utils[_0xd782('0x7')](_0xd782('0x8'),_0x4ea34c);};exports['close']=function(){utils[_0xd782('0x2')](_0xd782('0x9'));};exports[_0xd782('0xa')]=function(_0x1e915a){};
\ No newline at end of file
+var _0x21e3=['info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','./utils','connect'];(function(_0x4a8b5d,_0xae63cb){var _0x265252=function(_0x57462e){while(--_0x57462e){_0x4a8b5d['push'](_0x4a8b5d['shift']());}};_0x265252(++_0xae63cb);}(_0x21e3,0x80));var _0x321e=function(_0x4d2f6e,_0x5f10d6){_0x4d2f6e=_0x4d2f6e-0x0;var _0x15bac4=_0x21e3[_0x4d2f6e];return _0x15bac4;};'use strict';var utils=require(_0x321e('0x0'));exports[_0x321e('0x1')]=function(){utils[_0x321e('0x2')](_0x321e('0x3'));};exports[_0x321e('0x4')]=function(){utils[_0x321e('0x2')](_0x321e('0x5'));};exports[_0x321e('0x6')]=function(){utils[_0x321e('0x2')](_0x321e('0x7'));};exports['error']=function(_0x3ebcfe){utils[_0x321e('0x8')](_0x321e('0x9'),_0x3ebcfe);};exports[_0x321e('0xa')]=function(){utils[_0x321e('0x2')](_0x321e('0xb'));};exports[_0x321e('0xc')]=function(_0x1b08e6){};
\ No newline at end of file
index 4295c19..3df39f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x390e=['endtime','holdtime','billableseconds','lodash','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','application','appdata','toLowerCase','startsWith','split','error','[%s][dials][newexten]','varset','isNil','variable','outboundrouteid','info','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][varset]','[%s][dials][dialbegin]','assign','starttime','lastevent','called','[%s][dials][dialend]','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','cause-txt','now','complete','duration','diffTime'];(function(_0x34af34,_0x31db2f){var _0x539c8e=function(_0x208d4c){while(--_0x208d4c){_0x34af34['push'](_0x34af34['shift']());}};_0x539c8e(++_0x31db2f);}(_0x390e,0x102));var _0xe390=function(_0x18c86c,_0x3a5dd7){_0x18c86c=_0x18c86c-0x0;var _0x2a3480=_0x390e[_0x18c86c];return _0x2a3480;};'use strict';var _=require(_0xe390('0x0'));var util=require(_0xe390('0x1'));var utils=require(_0xe390('0x2'));var dials={};function writeDB(_0x4e55d1){utils['info'](util[_0xe390('0x3')](_0xe390('0x4'),_0x4e55d1[_0xe390('0x5')],_0x4e55d1[_0xe390('0x6')],_0x4e55d1[_0xe390('0x7')],_0x4e55d1[_0xe390('0x8')],_0x4e55d1[_0xe390('0x9')],_0x4e55d1[_0xe390('0xa')]));utils[_0xe390('0xb')](_0xe390('0xc'),_0x4e55d1);delete dials[_0x4e55d1[_0xe390('0x5')]];}exports[_0xe390('0xd')]=function(_0x1f70fe){try{utils[_0xe390('0xe')](util[_0xe390('0x3')]('[%s][dials][newexten]',_0x1f70fe[_0xe390('0x5')]),_0x1f70fe);utils['info'](util[_0xe390('0x3')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x1f70fe['uniqueid'],_0x1f70fe[_0xe390('0xf')],_0x1f70fe[_0xe390('0x10')]));if(_0x1f70fe[_0xe390('0xf')][_0xe390('0x11')]()=='set'&&_[_0xe390('0x12')](_0x1f70fe[_0xe390('0x10')][_0xe390('0x11')](),'cdr(routeid)')){var _0x5c6b52=_0x1f70fe[_0xe390('0x10')][_0xe390('0x13')]('=');dials[_0x1f70fe[_0xe390('0x5')]]={'routeId':_0x5c6b52[0x1]};}}catch(_0x26017f){utils[_0xe390('0x14')](util['format'](_0xe390('0x15'),_0x1f70fe[_0xe390('0x5')]),_0x26017f);}};exports[_0xe390('0x16')]=function(_0x83e4ae){try{utils['debug'](util[_0xe390('0x3')]('[%s][dials][varset]',_0x83e4ae['uniqueid']),_0x83e4ae);if(!_[_0xe390('0x17')](_0x83e4ae[_0xe390('0x18')][_0xe390('0x19')])){utils[_0xe390('0x1a')](util['format'](_0xe390('0x1b'),_0x83e4ae[_0xe390('0x5')],_0x83e4ae[_0xe390('0x1c')]));dials[_0x83e4ae[_0xe390('0x5')]]={'routeId':_0x83e4ae[_0xe390('0x1c')]};}}catch(_0x209323){utils['error'](util['format'](_0xe390('0x1d'),_0x83e4ae[_0xe390('0x5')]),_0x209323);}};exports['dialbegin']=function(_0x4502b1){try{if(!_[_0xe390('0x17')](dials[_0x4502b1[_0xe390('0x5')]])){utils[_0xe390('0xe')](util[_0xe390('0x3')](_0xe390('0x1e'),_0x4502b1[_0xe390('0x5')]),_0x4502b1);dials[_0x4502b1['uniqueid']]=_[_0xe390('0x1f')](dials[_0x4502b1[_0xe390('0x5')]],_0x4502b1);dials[_0x4502b1[_0xe390('0x5')]][_0xe390('0x20')]=utils['now']();dials[_0x4502b1[_0xe390('0x5')]][_0xe390('0x21')]=_0xe390('0x22');utils[_0xe390('0x1a')](util[_0xe390('0x3')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x4502b1[_0xe390('0x5')],dials[_0x4502b1[_0xe390('0x5')]][_0xe390('0x20')]));}}catch(_0x32a836){utils[_0xe390('0x14')](util[_0xe390('0x3')](_0xe390('0x1e'),_0x4502b1[_0xe390('0x5')]),_0x32a836);}};exports['dialend']=function(_0x2d23c4){try{if(!_[_0xe390('0x17')](dials[_0x2d23c4['uniqueid']])){utils[_0xe390('0xe')](util[_0xe390('0x3')](_0xe390('0x23'),_0x2d23c4[_0xe390('0x5')]),_0x2d23c4);dials[_0x2d23c4[_0xe390('0x5')]][_0xe390('0xa')]=_0x2d23c4['dialstatus'];if(_0x2d23c4[_0xe390('0xa')]=='ANSWER'){dials[_0x2d23c4['uniqueid']]=_[_0xe390('0x1f')](dials[_0x2d23c4[_0xe390('0x5')]],_0x2d23c4);dials[_0x2d23c4[_0xe390('0x5')]]['answertime']=utils['now']();dials[_0x2d23c4[_0xe390('0x5')]][_0xe390('0x21')]=_0xe390('0x24');utils[_0xe390('0x1a')](util[_0xe390('0x3')](_0xe390('0x25'),_0x2d23c4[_0xe390('0x5')],_0x2d23c4[_0xe390('0xa')],dials[_0x2d23c4[_0xe390('0x5')]][_0xe390('0x26')]));}else{utils[_0xe390('0x1a')](util[_0xe390('0x3')](_0xe390('0x27'),_0x2d23c4['uniqueid'],_0x2d23c4[_0xe390('0xa')]));}}}catch(_0x4e6217){utils[_0xe390('0x14')](util[_0xe390('0x3')]('[%s][dials][dialend]',_0x2d23c4[_0xe390('0x5')]),_0x4e6217);}};exports[_0xe390('0x28')]=function(_0x41e5b0){try{if(!_[_0xe390('0x17')](dials[_0x41e5b0[_0xe390('0x5')]])){utils['debug'](util[_0xe390('0x3')](_0xe390('0x29'),_0x41e5b0[_0xe390('0x5')]),_0x41e5b0);utils[_0xe390('0x1a')](util[_0xe390('0x3')](_0xe390('0x2a'),_0x41e5b0[_0xe390('0x5')],_0x41e5b0['calleridnum'],_0x41e5b0['calleridname'],_0x41e5b0[_0xe390('0x2b')]));dials[_0x41e5b0[_0xe390('0x5')]]=_[_0xe390('0x1f')](dials[_0x41e5b0[_0xe390('0x5')]],{'endtime':utils[_0xe390('0x2c')](),'lastevent':_0xe390('0x2d')});dials[_0x41e5b0[_0xe390('0x5')]][_0xe390('0x2e')]=utils[_0xe390('0x2f')](dials[_0x41e5b0['uniqueid']][_0xe390('0x30')],dials[_0x41e5b0['uniqueid']][_0xe390('0x20')]);dials[_0x41e5b0[_0xe390('0x5')]][_0xe390('0x31')]=utils[_0xe390('0x2f')](dials[_0x41e5b0[_0xe390('0x5')]][_0xe390('0x26')]||dials[_0x41e5b0[_0xe390('0x5')]][_0xe390('0x30')],dials[_0x41e5b0[_0xe390('0x5')]][_0xe390('0x20')]);dials[_0x41e5b0['uniqueid']][_0xe390('0x32')]=dials[_0x41e5b0[_0xe390('0x5')]]['answertime']?utils[_0xe390('0x2f')](dials[_0x41e5b0[_0xe390('0x5')]]['endtime'],dials[_0x41e5b0[_0xe390('0x5')]]['answertime']):0x0;writeDB(dials[_0x41e5b0['uniqueid']]);}}catch(_0x373b1a){utils[_0xe390('0x14')](util[_0xe390('0x3')](_0xe390('0x29'),_0x41e5b0[_0xe390('0x5')]),_0x373b1a);}};
\ No newline at end of file
+var _0xa6fb=['connectedlinenum','dialstatus','request','uniqueid','[%s][dials][newexten]','application','appdata','toLowerCase','set','startsWith','split','error','varset','isNil','variable','outboundrouteid','info','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','debug','[%s][dials][dialbegin]','assign','starttime','now','dialend','[%s][dials][dialend]','ANSWER','answertime','lastevent','connect','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','endtime','billableseconds','lodash','util','./utils','format','dialstring','calleridnum'];(function(_0x279095,_0x15f37e){var _0x5a5cdb=function(_0x2909bd){while(--_0x2909bd){_0x279095['push'](_0x279095['shift']());}};_0x5a5cdb(++_0x15f37e);}(_0xa6fb,0x114));var _0xba6f=function(_0x55327d,_0x327787){_0x55327d=_0x55327d-0x0;var _0x2fbb3e=_0xa6fb[_0x55327d];return _0x2fbb3e;};'use strict';var _=require(_0xba6f('0x0'));var util=require(_0xba6f('0x1'));var utils=require(_0xba6f('0x2'));var dials={};function writeDB(_0x2008f8){utils['info'](util[_0xba6f('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x2008f8['uniqueid'],_0x2008f8['channel'],_0x2008f8[_0xba6f('0x4')],_0x2008f8[_0xba6f('0x5')],_0x2008f8[_0xba6f('0x6')],_0x2008f8[_0xba6f('0x7')]));utils[_0xba6f('0x8')]('CreateVoiceDialReport',_0x2008f8);delete dials[_0x2008f8[_0xba6f('0x9')]];}exports['newexten']=function(_0x67cfbc){try{utils['debug'](util[_0xba6f('0x3')](_0xba6f('0xa'),_0x67cfbc[_0xba6f('0x9')]),_0x67cfbc);utils['info'](util[_0xba6f('0x3')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x67cfbc[_0xba6f('0x9')],_0x67cfbc[_0xba6f('0xb')],_0x67cfbc[_0xba6f('0xc')]));if(_0x67cfbc[_0xba6f('0xb')][_0xba6f('0xd')]()==_0xba6f('0xe')&&_[_0xba6f('0xf')](_0x67cfbc['appdata'][_0xba6f('0xd')](),'cdr(routeid)')){var _0x59d8e4=_0x67cfbc['appdata'][_0xba6f('0x10')]('=');dials[_0x67cfbc['uniqueid']]={'routeId':_0x59d8e4[0x1]};}}catch(_0x5051fd){utils[_0xba6f('0x11')](util[_0xba6f('0x3')](_0xba6f('0xa'),_0x67cfbc[_0xba6f('0x9')]),_0x5051fd);}};exports[_0xba6f('0x12')]=function(_0x171aee){try{utils['debug'](util[_0xba6f('0x3')]('[%s][dials][varset]',_0x171aee[_0xba6f('0x9')]),_0x171aee);if(!_[_0xba6f('0x13')](_0x171aee[_0xba6f('0x14')][_0xba6f('0x15')])){utils[_0xba6f('0x16')](util[_0xba6f('0x3')](_0xba6f('0x17'),_0x171aee[_0xba6f('0x9')],_0x171aee[_0xba6f('0x18')]));dials[_0x171aee[_0xba6f('0x9')]]={'routeId':_0x171aee[_0xba6f('0x18')]};}}catch(_0x3ef1e6){utils['error'](util[_0xba6f('0x3')]('[%s][dials][varset]',_0x171aee[_0xba6f('0x9')]),_0x3ef1e6);}};exports[_0xba6f('0x19')]=function(_0x24b93c){try{if(!_[_0xba6f('0x13')](dials[_0x24b93c[_0xba6f('0x9')]])){utils[_0xba6f('0x1a')](util[_0xba6f('0x3')](_0xba6f('0x1b'),_0x24b93c['uniqueid']),_0x24b93c);dials[_0x24b93c[_0xba6f('0x9')]]=_[_0xba6f('0x1c')](dials[_0x24b93c[_0xba6f('0x9')]],_0x24b93c);dials[_0x24b93c[_0xba6f('0x9')]][_0xba6f('0x1d')]=utils[_0xba6f('0x1e')]();dials[_0x24b93c[_0xba6f('0x9')]]['lastevent']='called';utils[_0xba6f('0x16')](util[_0xba6f('0x3')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x24b93c[_0xba6f('0x9')],dials[_0x24b93c[_0xba6f('0x9')]][_0xba6f('0x1d')]));}}catch(_0x3e926f){utils['error'](util['format']('[%s][dials][dialbegin]',_0x24b93c['uniqueid']),_0x3e926f);}};exports[_0xba6f('0x1f')]=function(_0x188eac){try{if(!_[_0xba6f('0x13')](dials[_0x188eac['uniqueid']])){utils[_0xba6f('0x1a')](util['format'](_0xba6f('0x20'),_0x188eac[_0xba6f('0x9')]),_0x188eac);dials[_0x188eac[_0xba6f('0x9')]][_0xba6f('0x7')]=_0x188eac['dialstatus'];if(_0x188eac[_0xba6f('0x7')]==_0xba6f('0x21')){dials[_0x188eac[_0xba6f('0x9')]]=_[_0xba6f('0x1c')](dials[_0x188eac[_0xba6f('0x9')]],_0x188eac);dials[_0x188eac[_0xba6f('0x9')]][_0xba6f('0x22')]=utils[_0xba6f('0x1e')]();dials[_0x188eac['uniqueid']][_0xba6f('0x23')]=_0xba6f('0x24');utils[_0xba6f('0x16')](util[_0xba6f('0x3')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x188eac[_0xba6f('0x9')],_0x188eac[_0xba6f('0x7')],dials[_0x188eac[_0xba6f('0x9')]]['answertime']));}else{utils['info'](util[_0xba6f('0x3')]('[%s][dials][dialend]\x20dialstatus:%s',_0x188eac[_0xba6f('0x9')],_0x188eac['dialstatus']));}}}catch(_0x44b5eb){utils[_0xba6f('0x11')](util['format'](_0xba6f('0x20'),_0x188eac[_0xba6f('0x9')]),_0x44b5eb);}};exports[_0xba6f('0x25')]=function(_0x3e8ce1){try{if(!_[_0xba6f('0x13')](dials[_0x3e8ce1[_0xba6f('0x9')]])){utils[_0xba6f('0x1a')](util[_0xba6f('0x3')](_0xba6f('0x26'),_0x3e8ce1[_0xba6f('0x9')]),_0x3e8ce1);utils['info'](util[_0xba6f('0x3')](_0xba6f('0x27'),_0x3e8ce1[_0xba6f('0x9')],_0x3e8ce1[_0xba6f('0x5')],_0x3e8ce1[_0xba6f('0x28')],_0x3e8ce1[_0xba6f('0x29')]));dials[_0x3e8ce1[_0xba6f('0x9')]]=_['assign'](dials[_0x3e8ce1[_0xba6f('0x9')]],{'endtime':utils[_0xba6f('0x1e')](),'lastevent':_0xba6f('0x2a')});dials[_0x3e8ce1[_0xba6f('0x9')]][_0xba6f('0x2b')]=utils[_0xba6f('0x2c')](dials[_0x3e8ce1[_0xba6f('0x9')]][_0xba6f('0x2d')],dials[_0x3e8ce1[_0xba6f('0x9')]][_0xba6f('0x1d')]);dials[_0x3e8ce1[_0xba6f('0x9')]]['holdtime']=utils[_0xba6f('0x2c')](dials[_0x3e8ce1[_0xba6f('0x9')]][_0xba6f('0x22')]||dials[_0x3e8ce1[_0xba6f('0x9')]][_0xba6f('0x2d')],dials[_0x3e8ce1[_0xba6f('0x9')]][_0xba6f('0x1d')]);dials[_0x3e8ce1['uniqueid']][_0xba6f('0x2e')]=dials[_0x3e8ce1['uniqueid']][_0xba6f('0x22')]?utils[_0xba6f('0x2c')](dials[_0x3e8ce1['uniqueid']][_0xba6f('0x2d')],dials[_0x3e8ce1[_0xba6f('0x9')]][_0xba6f('0x22')]):0x0;writeDB(dials[_0x3e8ce1[_0xba6f('0x9')]]);}}catch(_0x44e640){utils[_0xba6f('0x11')](util[_0xba6f('0x3')](_0xba6f('0x26'),_0x3e8ce1[_0xba6f('0x9')]),_0x44e640);}};
\ No newline at end of file
index a058a4a..0ce43dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9530=['agentringnoanswer','[%s][index][agentconnect]','agentconnect','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','[%s][index][cdr]','cdr','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','./utils','util','xdr','asterisk','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','error','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','agentcalled','[%s][index][agentcalled]','uniqueid'];(function(_0x571456,_0x25ede7){var _0x1aaffe=function(_0x2f6f6c){while(--_0x2f6f6c){_0x571456['push'](_0x571456['shift']());}};_0x1aaffe(++_0x25ede7);}(_0x9530,0x164));var _0x0953=function(_0x3746f2,_0x437223){_0x3746f2=_0x3746f2-0x0;var _0x425228=_0x9530[_0x3746f2];return _0x425228;};var AsteriskManager=require('asterisk-manager');var config=require('../../config/environment');var utils=require(_0x0953('0x0'));var util=require(_0x0953('0x1'));var isXDREnabled=config[_0x0953('0x2')]&&config[_0x0953('0x2')]['disabled']?!config['xdr']['disabled']:!![];var isProduction=config['env']==='production'||![];var isLocalAsterisk=config[_0x0953('0x2')]&&config[_0x0953('0x2')]['local']===!![]||![];var ami=new AsteriskManager(config[_0x0953('0x3')]['port'],config[_0x0953('0x3')]['ip'],config['asterisk']['username'],config[_0x0953('0x3')][_0x0953('0x4')],!![]);ami[_0x0953('0x5')]();if(!isXDREnabled){utils[_0x0953('0x6')](_0x0953('0x7'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x0953('0x6')](_0x0953('0x8'));}else{var agents=require(_0x0953('0x9'));var calls=require(_0x0953('0xa'));var queues=require(_0x0953('0xb'));var recordings=require(_0x0953('0xc'));var members=require(_0x0953('0xd'));var dials=require(_0x0953('0xe'));var transfers=require(_0x0953('0xf'));var core=require(_0x0953('0x10'));ami['on'](_0x0953('0x11'),core['connect']);ami['on']('shutdown',core[_0x0953('0x12')]);ami['on']('fullybooted',core['fullybooted']);ami['on']('error',core[_0x0953('0x13')]);ami['on']('close',core['close']);ami['on'](_0x0953('0x14'),core[_0x0953('0x14')]);ami['on'](_0x0953('0x15'),function(_0x7da52e){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x18'),_0x7da52e['device']),_0x7da52e);members['devicestatechange'](_0x7da52e);}catch(_0x2a836d){utils[_0x0953('0x13')](util[_0x0953('0x17')](_0x0953('0x18'),_0x7da52e['device']),_0x2a836d);}});ami['on'](_0x0953('0x19'),function(_0x495887){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x1a'),_0x495887[_0x0953('0x1b')]),_0x495887);agents[_0x0953('0x19')](_0x495887);}catch(_0x28366c){utils['error'](util['format'](_0x0953('0x1a'),_0x495887[_0x0953('0x1b')]),_0x28366c);}});ami['on'](_0x0953('0x1c'),function(_0x2c71f4){try{utils[_0x0953('0x16')](util[_0x0953('0x17')]('[%s][index][agentringnoanswer]',_0x2c71f4[_0x0953('0x1b')]),_0x2c71f4);agents[_0x0953('0x1c')](_0x2c71f4);}catch(_0x122556){utils[_0x0953('0x13')](util[_0x0953('0x17')]('[%s][index][agentringnoanswer]',_0x2c71f4[_0x0953('0x1b')]),_0x122556);}});ami['on']('agentconnect',function(_0x1df906){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x1d'),_0x1df906['uniqueid']),_0x1df906);agents[_0x0953('0x1e')](_0x1df906);queues[_0x0953('0x1e')](_0x1df906);}catch(_0x28de59){utils['error'](util[_0x0953('0x17')](_0x0953('0x1d'),_0x1df906[_0x0953('0x1b')]),_0x28de59);}});ami['on'](_0x0953('0x1f'),function(_0x3b51d7){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x20'),_0x3b51d7['uniqueid']),_0x3b51d7);agents[_0x0953('0x1f')](_0x3b51d7);queues[_0x0953('0x1f')](_0x3b51d7);members[_0x0953('0x1f')](_0x3b51d7);}catch(_0x333588){utils[_0x0953('0x13')](util['format'](_0x0953('0x20'),_0x3b51d7[_0x0953('0x1b')]),_0x333588);}});ami['on'](_0x0953('0x21'),function(_0xae68c3){try{utils['debug'](util[_0x0953('0x17')](_0x0953('0x22'),_0xae68c3[_0x0953('0x1b')]),_0xae68c3);agents[_0x0953('0x21')](_0xae68c3);queues[_0x0953('0x21')](_0xae68c3);}catch(_0x3c2fc9){utils[_0x0953('0x13')](util['format'](_0x0953('0x22'),_0xae68c3[_0x0953('0x1b')]),_0x3c2fc9);}});ami['on']('queuecallerjoin',function(_0x2e9909){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x23'),_0x2e9909[_0x0953('0x1b')]),_0x2e9909);queues['queuecallerjoin'](_0x2e9909);recordings[_0x0953('0x24')](_0x2e9909);}catch(_0x41372e){utils[_0x0953('0x13')](util['format'](_0x0953('0x23'),_0x2e9909[_0x0953('0x1b')]),_0x41372e);}});ami['on'](_0x0953('0x25'),function(_0x50bc04){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x26'),_0x50bc04[_0x0953('0x1b')]),_0x50bc04);queues[_0x0953('0x25')](_0x50bc04);}catch(_0x1e18d0){utils[_0x0953('0x13')](util[_0x0953('0x17')](_0x0953('0x26'),_0x50bc04[_0x0953('0x1b')]),_0x1e18d0);}});ami['on'](_0x0953('0x27'),function(_0x430487){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x28'),_0x430487[_0x0953('0x1b')]),_0x430487);queues[_0x0953('0x27')](_0x430487);calls[_0x0953('0x27')](_0x430487);}catch(_0x1cd477){utils['error'](util[_0x0953('0x17')](_0x0953('0x28'),_0x430487[_0x0953('0x1b')]),_0x1cd477);}});ami['on']('musiconholdstop',function(_0x5b384b){try{utils[_0x0953('0x16')](util[_0x0953('0x17')]('[%s][index][musiconholdstop]',_0x5b384b[_0x0953('0x1b')]),_0x5b384b);queues[_0x0953('0x29')](_0x5b384b);calls[_0x0953('0x29')](_0x5b384b);}catch(_0x2de234){utils['error'](util['format'](_0x0953('0x2a'),_0x5b384b[_0x0953('0x1b')]),_0x2de234);}});ami['on'](_0x0953('0x2b'),function(_0xe46051){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x2c'),_0xe46051[_0x0953('0x1b')]),_0xe46051);calls['newstate'](_0xe46051);recordings['newstate'](_0xe46051);}catch(_0x11cc3e){utils[_0x0953('0x13')](util[_0x0953('0x17')](_0x0953('0x2c'),_0xe46051[_0x0953('0x1b')]),_0x11cc3e);}});ami['on']('hangup',function(_0x8d7520){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x2d'),_0x8d7520['uniqueid']),_0x8d7520);calls['hangup'](_0x8d7520);recordings[_0x0953('0x2e')](_0x8d7520);dials['hangup'](_0x8d7520);agents[_0x0953('0x2e')](_0x8d7520);queues[_0x0953('0x2e')](_0x8d7520);}catch(_0x5d1d0c){utils[_0x0953('0x13')](util[_0x0953('0x17')](_0x0953('0x2d'),_0x8d7520[_0x0953('0x1b')]),_0x5d1d0c);}});ami['on']('cdr',function(_0x26f33a){try{utils['debug'](util[_0x0953('0x17')](_0x0953('0x2f'),_0x26f33a[_0x0953('0x1b')]),_0x26f33a);members[_0x0953('0x30')](_0x26f33a);}catch(_0x50f8a6){utils[_0x0953('0x13')](util[_0x0953('0x17')](_0x0953('0x2f'),_0x26f33a['uniqueid']),_0x50f8a6);}});ami['on'](_0x0953('0x31'),function(_0x51eb95){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x32'),_0x51eb95['uniqueid']),_0x51eb95);queues['blindtransfer'](_0x51eb95);agents['blindtransfer'](_0x51eb95);transfers[_0x0953('0x31')](_0x51eb95);recordings['blindtransfer'](_0x51eb95);}catch(_0x2550c5){utils[_0x0953('0x13')](util['format'](_0x0953('0x32'),_0x51eb95['uniqueid']),_0x2550c5);}});ami['on'](_0x0953('0x33'),function(_0x5e09ab){try{utils[_0x0953('0x16')](util[_0x0953('0x17')](_0x0953('0x34'),_0x5e09ab[_0x0953('0x35')]),_0x5e09ab);queues[_0x0953('0x33')](_0x5e09ab);transfers[_0x0953('0x33')](_0x5e09ab);agents[_0x0953('0x33')](_0x5e09ab);calls[_0x0953('0x33')](_0x5e09ab);}catch(_0x3be7d5){utils[_0x0953('0x13')](util[_0x0953('0x17')](_0x0953('0x34'),_0x5e09ab[_0x0953('0x35')]),_0x3be7d5);}});ami['on'](_0x0953('0x36'),function(_0xb5926b){try{utils['debug'](util['format'](_0x0953('0x37'),_0xb5926b['uniqueid']),_0xb5926b);queues['varset'](_0xb5926b);recordings[_0x0953('0x36')](_0xb5926b);calls[_0x0953('0x36')](_0xb5926b);dials['varset'](_0xb5926b);}catch(_0x5240e5){utils['error'](util['format'](_0x0953('0x37'),_0xb5926b[_0x0953('0x1b')]),_0x5240e5);}});ami['on'](_0x0953('0x38'),function(_0x1041fb){try{utils[_0x0953('0x16')](util[_0x0953('0x17')]('[%s][index][newexten]',_0x1041fb[_0x0953('0x1b')]),_0x1041fb);calls['newexten'](_0x1041fb);recordings[_0x0953('0x38')](_0x1041fb);dials[_0x0953('0x38')](_0x1041fb);}catch(_0x40d523){utils['error'](util[_0x0953('0x17')](_0x0953('0x39'),_0x1041fb['uniqueid']),_0x40d523);}});ami['on'](_0x0953('0x3a'),function(_0x4f951c){try{utils[_0x0953('0x16')](util['format'](_0x0953('0x3b'),_0x4f951c[_0x0953('0x1b')]),_0x4f951c);calls['newchannel'](_0x4f951c);recordings[_0x0953('0x3a')](_0x4f951c);}catch(_0x38ed33){utils['error'](util[_0x0953('0x17')](_0x0953('0x3b'),_0x4f951c['uniqueid']),_0x38ed33);}});ami['on'](_0x0953('0x3c'),function(_0x5c9dce){try{utils[_0x0953('0x16')](util['format'](_0x0953('0x3d'),_0x5c9dce['uniqueid']),_0x5c9dce);dials[_0x0953('0x3c')](_0x5c9dce);}catch(_0x2da363){utils[_0x0953('0x13')](util[_0x0953('0x17')]('[%s]dialbegin',_0x5c9dce[_0x0953('0x1b')]),_0x2da363);}});ami['on'](_0x0953('0x3e'),function(_0x307a16){try{utils[_0x0953('0x16')](util['format'](_0x0953('0x3f'),_0x307a16[_0x0953('0x1b')]),_0x307a16);dials['dialend'](_0x307a16);}catch(_0x44c868){utils['error'](util['format'](_0x0953('0x3f'),_0x307a16[_0x0953('0x1b')]),_0x44c868);}});}
\ No newline at end of file
+var _0x6f02=['disabled','env','local','asterisk','port','username','XDR\x20DISABLED','info','Asterisk\x20disabled\x20on\x20localhost','./calls.controller','./queues.controller','./members.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','devicestatechange','format','device','debug','[%s][index][agentcalled]','uniqueid','agentcalled','[%s][index][agentringnoanswer]','agentringnoanswer','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','[%s][index][cdr]','cdr','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','util','xdr'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6f02,0x1d1));var _0x26f0=function(_0x108991,_0x4f2a26){_0x108991=_0x108991-0x0;var _0x305a78=_0x6f02[_0x108991];return _0x305a78;};var AsteriskManager=require(_0x26f0('0x0'));var config=require(_0x26f0('0x1'));var utils=require('./utils');var util=require(_0x26f0('0x2'));var isXDREnabled=config['xdr']&&config[_0x26f0('0x3')]['disabled']?!config[_0x26f0('0x3')][_0x26f0('0x4')]:!![];var isProduction=config[_0x26f0('0x5')]==='production'||![];var isLocalAsterisk=config[_0x26f0('0x3')]&&config['xdr'][_0x26f0('0x6')]===!![]||![];var ami=new AsteriskManager(config[_0x26f0('0x7')][_0x26f0('0x8')],config['asterisk']['ip'],config[_0x26f0('0x7')][_0x26f0('0x9')],config[_0x26f0('0x7')]['password'],!![]);ami['keepConnected']();if(!isXDREnabled){utils['info'](_0x26f0('0xa'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x26f0('0xb')](_0x26f0('0xc'));}else{var agents=require('./agents.controller');var calls=require(_0x26f0('0xd'));var queues=require(_0x26f0('0xe'));var recordings=require('./recordings.controller');var members=require(_0x26f0('0xf'));var dials=require('./dials.controller');var transfers=require(_0x26f0('0x10'));var core=require(_0x26f0('0x11'));ami['on'](_0x26f0('0x12'),core[_0x26f0('0x12')]);ami['on'](_0x26f0('0x13'),core['shutdown']);ami['on'](_0x26f0('0x14'),core[_0x26f0('0x14')]);ami['on']('error',core[_0x26f0('0x15')]);ami['on'](_0x26f0('0x16'),core['close']);ami['on']('managerevent',core['managerevent']);ami['on'](_0x26f0('0x17'),function(_0x4fdee0){try{utils['debug'](util[_0x26f0('0x18')]('[%s][index][devicestatechange]',_0x4fdee0[_0x26f0('0x19')]),_0x4fdee0);members[_0x26f0('0x17')](_0x4fdee0);}catch(_0x197e84){utils[_0x26f0('0x15')](util[_0x26f0('0x18')]('[%s][index][devicestatechange]',_0x4fdee0['device']),_0x197e84);}});ami['on']('agentcalled',function(_0x31b8cf){try{utils[_0x26f0('0x1a')](util[_0x26f0('0x18')](_0x26f0('0x1b'),_0x31b8cf[_0x26f0('0x1c')]),_0x31b8cf);agents[_0x26f0('0x1d')](_0x31b8cf);}catch(_0x47d400){utils['error'](util[_0x26f0('0x18')]('[%s][index][agentcalled]',_0x31b8cf['uniqueid']),_0x47d400);}});ami['on']('agentringnoanswer',function(_0x36dbde){try{utils['debug'](util[_0x26f0('0x18')](_0x26f0('0x1e'),_0x36dbde['uniqueid']),_0x36dbde);agents[_0x26f0('0x1f')](_0x36dbde);}catch(_0x265344){utils[_0x26f0('0x15')](util['format']('[%s][index][agentringnoanswer]',_0x36dbde[_0x26f0('0x1c')]),_0x265344);}});ami['on'](_0x26f0('0x20'),function(_0x2f8c7e){try{utils['debug'](util[_0x26f0('0x18')](_0x26f0('0x21'),_0x2f8c7e[_0x26f0('0x1c')]),_0x2f8c7e);agents[_0x26f0('0x20')](_0x2f8c7e);queues['agentconnect'](_0x2f8c7e);}catch(_0x5e0d32){utils['error'](util[_0x26f0('0x18')](_0x26f0('0x21'),_0x2f8c7e['uniqueid']),_0x5e0d32);}});ami['on'](_0x26f0('0x22'),function(_0x3a2bd8){try{utils[_0x26f0('0x1a')](util[_0x26f0('0x18')](_0x26f0('0x23'),_0x3a2bd8[_0x26f0('0x1c')]),_0x3a2bd8);agents[_0x26f0('0x22')](_0x3a2bd8);queues[_0x26f0('0x22')](_0x3a2bd8);members[_0x26f0('0x22')](_0x3a2bd8);}catch(_0xd93043){utils[_0x26f0('0x15')](util[_0x26f0('0x18')]('[%s][index][agentcomplete]',_0x3a2bd8[_0x26f0('0x1c')]),_0xd93043);}});ami['on']('queuecallerabandon',function(_0x4326c7){try{utils['debug'](util['format']('[%s][index][queuecallerabandon]',_0x4326c7[_0x26f0('0x1c')]),_0x4326c7);agents[_0x26f0('0x24')](_0x4326c7);queues[_0x26f0('0x24')](_0x4326c7);}catch(_0x592531){utils[_0x26f0('0x15')](util[_0x26f0('0x18')]('[%s][index][queuecallerabandon]',_0x4326c7['uniqueid']),_0x592531);}});ami['on'](_0x26f0('0x25'),function(_0x333f12){try{utils[_0x26f0('0x1a')](util['format'](_0x26f0('0x26'),_0x333f12[_0x26f0('0x1c')]),_0x333f12);queues[_0x26f0('0x25')](_0x333f12);recordings[_0x26f0('0x25')](_0x333f12);}catch(_0xcd126){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x26'),_0x333f12['uniqueid']),_0xcd126);}});ami['on'](_0x26f0('0x27'),function(_0x4389b9){try{utils['debug'](util[_0x26f0('0x18')](_0x26f0('0x28'),_0x4389b9[_0x26f0('0x1c')]),_0x4389b9);queues['queuecallerleave'](_0x4389b9);}catch(_0x3f95ae){utils['error'](util['format'](_0x26f0('0x28'),_0x4389b9['uniqueid']),_0x3f95ae);}});ami['on'](_0x26f0('0x29'),function(_0xcedbd3){try{utils[_0x26f0('0x1a')](util[_0x26f0('0x18')]('[%s][index][musiconholdstart]',_0xcedbd3['uniqueid']),_0xcedbd3);queues[_0x26f0('0x29')](_0xcedbd3);calls[_0x26f0('0x29')](_0xcedbd3);}catch(_0x4b4ba5){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x2a'),_0xcedbd3['uniqueid']),_0x4b4ba5);}});ami['on'](_0x26f0('0x2b'),function(_0x22e358){try{utils[_0x26f0('0x1a')](util['format'](_0x26f0('0x2c'),_0x22e358['uniqueid']),_0x22e358);queues[_0x26f0('0x2b')](_0x22e358);calls[_0x26f0('0x2b')](_0x22e358);}catch(_0x16e92f){utils[_0x26f0('0x15')](util['format'](_0x26f0('0x2c'),_0x22e358[_0x26f0('0x1c')]),_0x16e92f);}});ami['on'](_0x26f0('0x2d'),function(_0x94b3ff){try{utils[_0x26f0('0x1a')](util['format']('[%s][index][newstate]',_0x94b3ff['uniqueid']),_0x94b3ff);calls[_0x26f0('0x2d')](_0x94b3ff);recordings[_0x26f0('0x2d')](_0x94b3ff);}catch(_0x33ca02){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x2e'),_0x94b3ff[_0x26f0('0x1c')]),_0x33ca02);}});ami['on'](_0x26f0('0x2f'),function(_0x61a491){try{utils[_0x26f0('0x1a')](util['format'](_0x26f0('0x30'),_0x61a491[_0x26f0('0x1c')]),_0x61a491);calls[_0x26f0('0x2f')](_0x61a491);recordings[_0x26f0('0x2f')](_0x61a491);dials['hangup'](_0x61a491);agents[_0x26f0('0x2f')](_0x61a491);queues[_0x26f0('0x2f')](_0x61a491);}catch(_0x736ae7){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x30'),_0x61a491['uniqueid']),_0x736ae7);}});ami['on']('cdr',function(_0xbd87b2){try{utils['debug'](util['format'](_0x26f0('0x31'),_0xbd87b2[_0x26f0('0x1c')]),_0xbd87b2);members[_0x26f0('0x32')](_0xbd87b2);}catch(_0x2141bc){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x31'),_0xbd87b2[_0x26f0('0x1c')]),_0x2141bc);}});ami['on'](_0x26f0('0x33'),function(_0x2e85cd){try{utils[_0x26f0('0x1a')](util[_0x26f0('0x18')](_0x26f0('0x34'),_0x2e85cd[_0x26f0('0x1c')]),_0x2e85cd);queues[_0x26f0('0x33')](_0x2e85cd);agents[_0x26f0('0x33')](_0x2e85cd);transfers[_0x26f0('0x33')](_0x2e85cd);recordings[_0x26f0('0x33')](_0x2e85cd);}catch(_0x1e6ed1){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x34'),_0x2e85cd[_0x26f0('0x1c')]),_0x1e6ed1);}});ami['on'](_0x26f0('0x35'),function(_0x517d86){try{utils[_0x26f0('0x1a')](util[_0x26f0('0x18')]('[%s][index][attendedtransfer]',_0x517d86[_0x26f0('0x36')]),_0x517d86);queues[_0x26f0('0x35')](_0x517d86);transfers[_0x26f0('0x35')](_0x517d86);agents[_0x26f0('0x35')](_0x517d86);calls[_0x26f0('0x35')](_0x517d86);}catch(_0x97a711){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x37'),_0x517d86[_0x26f0('0x36')]),_0x97a711);}});ami['on'](_0x26f0('0x38'),function(_0x395bf0){try{utils[_0x26f0('0x1a')](util[_0x26f0('0x18')](_0x26f0('0x39'),_0x395bf0[_0x26f0('0x1c')]),_0x395bf0);queues[_0x26f0('0x38')](_0x395bf0);recordings[_0x26f0('0x38')](_0x395bf0);calls[_0x26f0('0x38')](_0x395bf0);dials[_0x26f0('0x38')](_0x395bf0);}catch(_0x19f756){utils[_0x26f0('0x15')](util['format'](_0x26f0('0x39'),_0x395bf0[_0x26f0('0x1c')]),_0x19f756);}});ami['on']('newexten',function(_0x12005e){try{utils['debug'](util[_0x26f0('0x18')]('[%s][index][newexten]',_0x12005e[_0x26f0('0x1c')]),_0x12005e);calls[_0x26f0('0x3a')](_0x12005e);recordings[_0x26f0('0x3a')](_0x12005e);dials['newexten'](_0x12005e);}catch(_0x4ed507){utils[_0x26f0('0x15')](util['format'](_0x26f0('0x3b'),_0x12005e[_0x26f0('0x1c')]),_0x4ed507);}});ami['on'](_0x26f0('0x3c'),function(_0x30fecb){try{utils['debug'](util['format'](_0x26f0('0x3d'),_0x30fecb[_0x26f0('0x1c')]),_0x30fecb);calls[_0x26f0('0x3c')](_0x30fecb);recordings['newchannel'](_0x30fecb);}catch(_0x1213d9){utils['error'](util[_0x26f0('0x18')](_0x26f0('0x3d'),_0x30fecb[_0x26f0('0x1c')]),_0x1213d9);}});ami['on'](_0x26f0('0x3e'),function(_0x2d24f0){try{utils['debug'](util['format'](_0x26f0('0x3f'),_0x2d24f0[_0x26f0('0x1c')]),_0x2d24f0);dials[_0x26f0('0x3e')](_0x2d24f0);}catch(_0x488f1f){utils['error'](util[_0x26f0('0x18')](_0x26f0('0x40'),_0x2d24f0['uniqueid']),_0x488f1f);}});ami['on'](_0x26f0('0x41'),function(_0x2a15ea){try{utils[_0x26f0('0x1a')](util[_0x26f0('0x18')](_0x26f0('0x42'),_0x2a15ea[_0x26f0('0x1c')]),_0x2a15ea);dials['dialend'](_0x2a15ea);}catch(_0x2cfedc){utils[_0x26f0('0x15')](util[_0x26f0('0x18')](_0x26f0('0x42'),_0x2a15ea[_0x26f0('0x1c')]),_0x2cfedc);}});}
\ No newline at end of file
index 6ea2ed1..fd4990a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c0a=['uniqueid','some','startsWith','devicestatechange','[%s][members][devicestatechange]','device','state','INUSE','BUSY','now','agent','NOT_INUSE','isNil','exitAt','diffTime','enterAt','agentcomplete','debug','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','data1','type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','membername','getUserByInterface','internal','CreateMemberReport','getUserByName','split','name','request','catch','error'];(function(_0x2d9dfb,_0x2daffc){var _0x3a14cb=function(_0x3243dd){while(--_0x3243dd){_0x2d9dfb['push'](_0x2d9dfb['shift']());}};_0x3a14cb(++_0x2daffc);}(_0x1c0a,0x14a));var _0xa1c0=function(_0x468b01,_0x19f00e){_0x468b01=_0x468b01-0x0;var _0x39e72b=_0x1c0a[_0x468b01];return _0x39e72b;};'use strict';var _=require('lodash');var util=require(_0xa1c0('0x0'));var utils=require(_0xa1c0('0x1'));var members={};var exclude=[_0xa1c0('0x2'),_0xa1c0('0x3')];function writeDB(_0x52b0a1){utils[_0xa1c0('0x4')](util[_0xa1c0('0x5')](_0xa1c0('0x6'),_0x52b0a1['uniqueid'],_0x52b0a1[_0xa1c0('0x7')],_0x52b0a1[_0xa1c0('0x8')],_0x52b0a1[_0xa1c0('0x9')],_0x52b0a1[_0xa1c0('0xa')],_0x52b0a1['type']));if(_0x52b0a1[_0xa1c0('0x7')]){utils[_0xa1c0('0xb')](_0x52b0a1[_0xa1c0('0x7')])['then'](function(_0x57d921){if(_0x57d921){_0x52b0a1['membername']=_0x57d921['name'];_0x52b0a1[_0xa1c0('0xc')]=_0x57d921[_0xa1c0('0xc')];utils['request'](_0xa1c0('0xd'),_0x52b0a1);}else{utils[_0xa1c0('0xe')](_0x52b0a1['interface'][_0xa1c0('0xf')]('/')[0x1])['then'](function(_0x225104){if(_0x225104){_0x52b0a1[_0xa1c0('0xa')]=_0x225104[_0xa1c0('0x10')];_0x52b0a1[_0xa1c0('0xc')]=_0x225104[_0xa1c0('0xc')];utils[_0xa1c0('0x11')](_0xa1c0('0xd'),_0x52b0a1);}});}})[_0xa1c0('0x12')](function(_0x3ec1cb){utils[_0xa1c0('0x13')](util[_0xa1c0('0x5')]('[%s][members][writeDB]',_0x52b0a1[_0xa1c0('0x14')]),_0x3ec1cb);});}delete members[_0x52b0a1[_0xa1c0('0x7')]];}function startsWith(_0x21a220,_0x3294fa){return _[_0xa1c0('0x15')](_0x21a220,function(_0x266a67){return _[_0xa1c0('0x16')](_0x3294fa,_0x266a67);});}exports[_0xa1c0('0x17')]=function(_0x5c74ba){try{utils['debug'](util['format'](_0xa1c0('0x18'),members[_0x5c74ba[_0xa1c0('0x19')]]?members[_0x5c74ba[_0xa1c0('0x19')]][_0xa1c0('0x14')]:_0x5c74ba['device']),_0x5c74ba);utils[_0xa1c0('0x4')](util['format']('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x5c74ba['device']]?members[_0x5c74ba[_0xa1c0('0x19')]][_0xa1c0('0x14')]:_0x5c74ba[_0xa1c0('0x19')],_0x5c74ba[_0xa1c0('0x1a')],_0x5c74ba[_0xa1c0('0x19')]));switch(_0x5c74ba[_0xa1c0('0x1a')]){case _0xa1c0('0x1b'):case _0xa1c0('0x1c'):if(!startsWith(exclude,_0x5c74ba[_0xa1c0('0x19')])){members[_0x5c74ba['device']]={'channel':'voice','interface':_0x5c74ba[_0xa1c0('0x19')],'type':'TALKING','enterAt':utils[_0xa1c0('0x1d')](),'role':_0xa1c0('0x1e')};}break;case _0xa1c0('0x1f'):if(!_[_0xa1c0('0x20')](members[_0x5c74ba[_0xa1c0('0x19')]])){members[_0x5c74ba[_0xa1c0('0x19')]][_0xa1c0('0x21')]=utils['now']();members[_0x5c74ba[_0xa1c0('0x19')]]['duration']=utils[_0xa1c0('0x22')](members[_0x5c74ba[_0xa1c0('0x19')]][_0xa1c0('0x21')],members[_0x5c74ba['device']][_0xa1c0('0x23')]);if(members[_0x5c74ba[_0xa1c0('0x19')]][_0xa1c0('0x14')]){writeDB(members[_0x5c74ba[_0xa1c0('0x19')]]);}}break;default:break;}}catch(_0x500853){utils[_0xa1c0('0x13')](util[_0xa1c0('0x5')](_0xa1c0('0x18'),members[_0x5c74ba['device']]?members[_0x5c74ba[_0xa1c0('0x19')]][_0xa1c0('0x14')]:_0x5c74ba['device']),_0x500853);}};exports[_0xa1c0('0x24')]=function(_0x5033cd){try{if(!_[_0xa1c0('0x20')](members[_0x5033cd[_0xa1c0('0x7')]])){utils[_0xa1c0('0x25')](util[_0xa1c0('0x5')](_0xa1c0('0x26'),_0x5033cd['uniqueid']),_0x5033cd);utils[_0xa1c0('0x4')](util[_0xa1c0('0x5')](_0xa1c0('0x27'),_0x5033cd['uniqueid'],_0x5033cd['interface'],_0x5033cd[_0xa1c0('0x28')]));members[_0x5033cd[_0xa1c0('0x7')]]=_[_0xa1c0('0x29')](members[_0x5033cd[_0xa1c0('0x7')]],{'data4':_0x5033cd[_0xa1c0('0x28')],'uniqueid':_0x5033cd[_0xa1c0('0x14')]});}}catch(_0x3cbe22){utils[_0xa1c0('0x13')](util[_0xa1c0('0x5')]('[%s][members][agentcomplete]',_0x5033cd[_0xa1c0('0x14')]),_0x3cbe22);}};exports[_0xa1c0('0x2a')]=function(_0x390df4){try{utils['debug'](util[_0xa1c0('0x5')](_0xa1c0('0x2b'),_0x390df4[_0xa1c0('0x14')]),_0x390df4);if(_0x390df4['channel']){var _0x79067d=_0x390df4[_0xa1c0('0x8')]['split']('-')[0x0];if(!_[_0xa1c0('0x20')](members[_0x79067d])){members[_0x79067d]=_['assign'](members[_0x79067d],{'data1':members[_0x79067d][_0xa1c0('0x2c')]||_0x390df4[_0xa1c0('0x2d')],'data2':members[_0x79067d][_0xa1c0('0x9')]||_0x390df4[_0xa1c0('0x2e')],'data3':members[_0x79067d][_0xa1c0('0x2f')]||_0x390df4[_0xa1c0('0x30')],'uniqueid':members[_0x79067d]['uniqueid']||_0x390df4['uniqueid']});utils[_0xa1c0('0x4')](util['format'](_0xa1c0('0x31'),_0x390df4[_0xa1c0('0x14')],members[_0x79067d][_0xa1c0('0x2c')],members[_0x79067d][_0xa1c0('0x9')],members[_0x79067d][_0xa1c0('0x2f')]));if(members[_0x79067d][_0xa1c0('0x21')]){writeDB(members[_0x79067d]);}}}if(_0x390df4['destinationchannel']){var _0x1a5545=_0x390df4['destinationchannel'][_0xa1c0('0xf')]('-')[0x0];if(!_[_0xa1c0('0x20')](members[_0x1a5545])){members[_0x1a5545]=_[_0xa1c0('0x29')](members[_0x1a5545],{'data1':members[_0x1a5545][_0xa1c0('0x2c')]||_0x390df4[_0xa1c0('0x2d')],'data2':members[_0x1a5545]['data2']||_0x390df4[_0xa1c0('0x2e')],'data3':members[_0x1a5545]['data3']||_0x390df4['destination'],'uniqueid':members[_0x1a5545][_0xa1c0('0x14')]||_0x390df4[_0xa1c0('0x14')]});utils['info'](util[_0xa1c0('0x5')](_0xa1c0('0x31'),_0x390df4[_0xa1c0('0x14')],members[_0x1a5545][_0xa1c0('0x2c')],members[_0x1a5545][_0xa1c0('0x9')],members[_0x1a5545]['data3']));if(members[_0x1a5545][_0xa1c0('0x21')]){writeDB(members[_0x1a5545]);}}}}catch(_0x4f6a24){utils[_0xa1c0('0x13')](util[_0xa1c0('0x5')](_0xa1c0('0x2b'),_0x390df4['uniqueid']),_0x4f6a24);}};
\ No newline at end of file
+var _0xd261=['device','uniqueid','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','now','agent','NOT_INUSE','diffTime','exitAt','enterAt','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','assign','queue','cdr','[%s][members][cdr]','channel','isNil','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','util','./utils','Local/_attended@transfer','info','format','interface','data2','membername','type','getUserByInterface','then','name','internal','request','CreateMemberReport','getUserByName','split','catch','error','[%s][members][writeDB]','some','devicestatechange','debug','[%s][members][devicestatechange]'];(function(_0x4baa11,_0x7c6290){var _0x219273=function(_0x4a3887){while(--_0x4a3887){_0x4baa11['push'](_0x4baa11['shift']());}};_0x219273(++_0x7c6290);}(_0xd261,0x86));var _0x1d26=function(_0x47fdfb,_0x273baf){_0x47fdfb=_0x47fdfb-0x0;var _0x38f3ee=_0xd261[_0x47fdfb];return _0x38f3ee;};'use strict';var _=require(_0x1d26('0x0'));var util=require(_0x1d26('0x1'));var utils=require(_0x1d26('0x2'));var members={};var exclude=[_0x1d26('0x3'),'Queue:'];function writeDB(_0x5997eb){utils[_0x1d26('0x4')](util[_0x1d26('0x5')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x5997eb['uniqueid'],_0x5997eb[_0x1d26('0x6')],_0x5997eb['channel'],_0x5997eb[_0x1d26('0x7')],_0x5997eb[_0x1d26('0x8')],_0x5997eb[_0x1d26('0x9')]));if(_0x5997eb[_0x1d26('0x6')]){utils[_0x1d26('0xa')](_0x5997eb[_0x1d26('0x6')])[_0x1d26('0xb')](function(_0x1f7b4c){if(_0x1f7b4c){_0x5997eb[_0x1d26('0x8')]=_0x1f7b4c[_0x1d26('0xc')];_0x5997eb[_0x1d26('0xd')]=_0x1f7b4c[_0x1d26('0xd')];utils[_0x1d26('0xe')](_0x1d26('0xf'),_0x5997eb);}else{utils[_0x1d26('0x10')](_0x5997eb['interface'][_0x1d26('0x11')]('/')[0x1])[_0x1d26('0xb')](function(_0x3d6db0){if(_0x3d6db0){_0x5997eb[_0x1d26('0x8')]=_0x3d6db0[_0x1d26('0xc')];_0x5997eb[_0x1d26('0xd')]=_0x3d6db0[_0x1d26('0xd')];utils['request'](_0x1d26('0xf'),_0x5997eb);}});}})[_0x1d26('0x12')](function(_0x4f02db){utils[_0x1d26('0x13')](util[_0x1d26('0x5')](_0x1d26('0x14'),_0x5997eb['uniqueid']),_0x4f02db);});}delete members[_0x5997eb['interface']];}function startsWith(_0x23f485,_0x3a3311){return _[_0x1d26('0x15')](_0x23f485,function(_0xab9038){return _['startsWith'](_0x3a3311,_0xab9038);});}exports[_0x1d26('0x16')]=function(_0x10522e){try{utils[_0x1d26('0x17')](util[_0x1d26('0x5')](_0x1d26('0x18'),members[_0x10522e['device']]?members[_0x10522e[_0x1d26('0x19')]][_0x1d26('0x1a')]:_0x10522e['device']),_0x10522e);utils[_0x1d26('0x4')](util[_0x1d26('0x5')](_0x1d26('0x1b'),members[_0x10522e[_0x1d26('0x19')]]?members[_0x10522e[_0x1d26('0x19')]][_0x1d26('0x1a')]:_0x10522e[_0x1d26('0x19')],_0x10522e[_0x1d26('0x1c')],_0x10522e[_0x1d26('0x19')]));switch(_0x10522e[_0x1d26('0x1c')]){case'INUSE':case _0x1d26('0x1d'):if(!startsWith(exclude,_0x10522e[_0x1d26('0x19')])){members[_0x10522e[_0x1d26('0x19')]]={'channel':_0x1d26('0x1e'),'interface':_0x10522e[_0x1d26('0x19')],'type':_0x1d26('0x1f'),'enterAt':utils[_0x1d26('0x20')](),'role':_0x1d26('0x21')};}break;case _0x1d26('0x22'):if(!_['isNil'](members[_0x10522e['device']])){members[_0x10522e[_0x1d26('0x19')]]['exitAt']=utils[_0x1d26('0x20')]();members[_0x10522e[_0x1d26('0x19')]]['duration']=utils[_0x1d26('0x23')](members[_0x10522e[_0x1d26('0x19')]][_0x1d26('0x24')],members[_0x10522e['device']][_0x1d26('0x25')]);if(members[_0x10522e[_0x1d26('0x19')]][_0x1d26('0x1a')]){writeDB(members[_0x10522e[_0x1d26('0x19')]]);}}break;default:break;}}catch(_0x43e2af){utils[_0x1d26('0x13')](util[_0x1d26('0x5')](_0x1d26('0x18'),members[_0x10522e['device']]?members[_0x10522e[_0x1d26('0x19')]][_0x1d26('0x1a')]:_0x10522e[_0x1d26('0x19')]),_0x43e2af);}};exports[_0x1d26('0x26')]=function(_0x2429da){try{if(!_['isNil'](members[_0x2429da[_0x1d26('0x6')]])){utils[_0x1d26('0x17')](util[_0x1d26('0x5')](_0x1d26('0x27'),_0x2429da[_0x1d26('0x1a')]),_0x2429da);utils[_0x1d26('0x4')](util[_0x1d26('0x5')](_0x1d26('0x28'),_0x2429da[_0x1d26('0x1a')],_0x2429da[_0x1d26('0x6')],_0x2429da['queue']));members[_0x2429da[_0x1d26('0x6')]]=_[_0x1d26('0x29')](members[_0x2429da[_0x1d26('0x6')]],{'data4':_0x2429da[_0x1d26('0x2a')],'uniqueid':_0x2429da['uniqueid']});}}catch(_0x50122e){utils[_0x1d26('0x13')](util['format'](_0x1d26('0x27'),_0x2429da[_0x1d26('0x1a')]),_0x50122e);}};exports[_0x1d26('0x2b')]=function(_0x2c374f){try{utils[_0x1d26('0x17')](util[_0x1d26('0x5')](_0x1d26('0x2c'),_0x2c374f[_0x1d26('0x1a')]),_0x2c374f);if(_0x2c374f[_0x1d26('0x2d')]){var _0x22c726=_0x2c374f['channel']['split']('-')[0x0];if(!_[_0x1d26('0x2e')](members[_0x22c726])){members[_0x22c726]=_[_0x1d26('0x29')](members[_0x22c726],{'data1':members[_0x22c726][_0x1d26('0x2f')]||_0x2c374f[_0x1d26('0x9')],'data2':members[_0x22c726][_0x1d26('0x7')]||_0x2c374f[_0x1d26('0x30')],'data3':members[_0x22c726][_0x1d26('0x31')]||_0x2c374f[_0x1d26('0x32')],'uniqueid':members[_0x22c726][_0x1d26('0x1a')]||_0x2c374f[_0x1d26('0x1a')]});utils[_0x1d26('0x4')](util[_0x1d26('0x5')](_0x1d26('0x33'),_0x2c374f[_0x1d26('0x1a')],members[_0x22c726][_0x1d26('0x2f')],members[_0x22c726][_0x1d26('0x7')],members[_0x22c726][_0x1d26('0x31')]));if(members[_0x22c726][_0x1d26('0x24')]){writeDB(members[_0x22c726]);}}}if(_0x2c374f['destinationchannel']){var _0xffc799=_0x2c374f[_0x1d26('0x34')][_0x1d26('0x11')]('-')[0x0];if(!_['isNil'](members[_0xffc799])){members[_0xffc799]=_[_0x1d26('0x29')](members[_0xffc799],{'data1':members[_0xffc799][_0x1d26('0x2f')]||_0x2c374f['type'],'data2':members[_0xffc799][_0x1d26('0x7')]||_0x2c374f[_0x1d26('0x30')],'data3':members[_0xffc799]['data3']||_0x2c374f[_0x1d26('0x32')],'uniqueid':members[_0xffc799][_0x1d26('0x1a')]||_0x2c374f[_0x1d26('0x1a')]});utils[_0x1d26('0x4')](util[_0x1d26('0x5')](_0x1d26('0x33'),_0x2c374f[_0x1d26('0x1a')],members[_0xffc799][_0x1d26('0x2f')],members[_0xffc799][_0x1d26('0x7')],members[_0xffc799]['data3']));if(members[_0xffc799]['exitAt']){writeDB(members[_0xffc799]);}}}}catch(_0x37f57f){utils[_0x1d26('0x13')](util[_0x1d26('0x5')]('[%s][members][cdr]',_0x2c374f[_0x1d26('0x1a')]),_0x37f57f);}};
\ No newline at end of file
index b1a059f..64abbfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x483e=['hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','name','queuecallerenterreason','[%s][queues][varset]','isNil','variable','queuestatus','value','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','EXITWITHKEY','queuecallerexitAt','queuecallerabandonAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','count','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','accountcode','agentcomplete','[%s][queues][agentcomplete]','assigned','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridnum','calleridname','queuecallerjoinAt','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertype','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','queuecallerexitreason','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','[%s][queues][queuecallerjoin]'];(function(_0xd1c19d,_0x52e9e1){var _0x225e53=function(_0x5cef8d){while(--_0x5cef8d){_0xd1c19d['push'](_0xd1c19d['shift']());}};_0x225e53(++_0x52e9e1);}(_0x483e,0x11d));var _0xe483=function(_0x6dfbaa,_0x31eede){_0x6dfbaa=_0x6dfbaa-0x0;var _0xfbe02=_0x483e[_0x6dfbaa];return _0xfbe02;};'use strict';var _=require(_0xe483('0x0'));var util=require(_0xe483('0x1'));var utils=require(_0xe483('0x2'));var queues={};function writeDB(_0x48efc6){utils[_0xe483('0x3')](util[_0xe483('0x4')](_0xe483('0x5'),_0x48efc6[_0xe483('0x6')],_0x48efc6[_0xe483('0x7')],_0x48efc6[_0xe483('0x8')],_0x48efc6[_0xe483('0x9')],_0x48efc6['calleridnum'],_0x48efc6['accountcode'],_0x48efc6[_0xe483('0xa')]));if(_0x48efc6[_0xe483('0x8')]){utils['getVoiceQueueByName'](_0x48efc6[_0xe483('0x8')])[_0xe483('0xb')](function(_0x27961e){if(_0x27961e){_0x48efc6[_0xe483('0xc')]=_0x27961e[_0xe483('0xc')];}utils[_0xe483('0xd')](_0xe483('0xe'),_0x48efc6);});}else{utils['request']('CreateVoiceQueueReport',_0x48efc6);}if(_0x48efc6[_0xe483('0xf')]){delete queues[_0x48efc6[_0xe483('0xf')]];}else{delete queues[_0x48efc6[_0xe483('0x6')]];}}exports[_0xe483('0x10')]=function(_0x53bb45){try{utils[_0xe483('0x11')](util[_0xe483('0x4')]('[%s][queues][queuecallerjoin]',_0x53bb45['uniqueid']),_0x53bb45);utils[_0xe483('0x3')](util['format'](_0xe483('0x12'),_0x53bb45[_0xe483('0x6')],_0x53bb45[_0xe483('0x8')],_0x53bb45[_0xe483('0x13')]));queues[_0x53bb45['uniqueid']]=_[_0xe483('0x14')](_0x53bb45,{'originalposition':_0x53bb45[_0xe483('0x13')],'queuecallerjoinAt':utils[_0xe483('0x15')](),'mohtime':0x0});}catch(_0x5898bc){utils[_0xe483('0x16')](util[_0xe483('0x4')](_0xe483('0x17'),_0x53bb45[_0xe483('0x6')]),_0x5898bc);}};exports[_0xe483('0x18')]=function(_0xefa823){try{if(!_['isNil'](queues[_0xefa823[_0xe483('0x6')]])){utils['debug'](util[_0xe483('0x4')](_0xe483('0x19'),_0xefa823[_0xe483('0x6')]),_0xefa823);if(queues[_0xefa823['uniqueid']][_0xe483('0x1a')]){if(!queues[_0xefa823['uniqueid']][_0xe483('0x1b')]&&!queues[_0xefa823['uniqueid']][_0xe483('0x1c')]){queues[_0xefa823[_0xe483('0x6')]][_0xe483('0x1d')]=!![];queues[_0xefa823[_0xe483('0x6')]][_0xe483('0x1e')]=utils[_0xe483('0x15')]();queues[_0xefa823[_0xe483('0x6')]]['queuecallerexitreason']=_0xe483('0x1f');}utils[_0xe483('0x3')](util[_0xe483('0x4')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0xefa823['uniqueid'],queues[_0xefa823[_0xe483('0x6')]][_0xe483('0x20')],queues[_0xefa823['uniqueid']][_0xe483('0xa')]));writeDB(queues[_0xefa823[_0xe483('0x6')]]);}else if(queues[_0xefa823['uniqueid']][_0xe483('0xf')]){utils['info'](util[_0xe483('0x4')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0xefa823[_0xe483('0x6')],queues[_0xefa823[_0xe483('0x6')]]['name'],queues[_0xefa823[_0xe483('0x6')]][_0xe483('0xf')]));queues[queues[_0xefa823[_0xe483('0x6')]][_0xe483('0xf')]]=queues[_0xefa823[_0xe483('0x6')]];queues[queues[_0xefa823['uniqueid']][_0xe483('0xf')]][_0xe483('0x21')]=0x2;delete queues[_0xefa823[_0xe483('0x6')]];}}}catch(_0xcad920){utils[_0xe483('0x16')](util[_0xe483('0x4')]('[%s][queues][hangup]',_0xefa823[_0xe483('0x6')]),_0xcad920);}};exports['varset']=function(_0x5d71d9){try{utils['debug'](util[_0xe483('0x4')](_0xe483('0x22'),_0x5d71d9[_0xe483('0x6')]),_0x5d71d9);if(!_[_0xe483('0x23')](_0x5d71d9[_0xe483('0x24')][_0xe483('0x25')])&&_0x5d71d9['value']['toUpperCase']()!=='CONTINUE'){if(!_[_0xe483('0x23')](queues[_0x5d71d9[_0xe483('0x6')]])){queues[_0x5d71d9['uniqueid']]['queuecallerabandon']=![];queues[_0x5d71d9['uniqueid']]['queuecallerabandonAt']=null;queues[_0x5d71d9[_0xe483('0x6')]][_0xe483('0x1c')]=!![];queues[_0x5d71d9[_0xe483('0x6')]]['queuecallerexitAt']=utils[_0xe483('0x15')]();queues[_0x5d71d9[_0xe483('0x6')]][_0xe483('0xa')]=_0x5d71d9[_0xe483('0x26')][_0xe483('0x27')]();utils[_0xe483('0x3')](util[_0xe483('0x4')](_0xe483('0x28'),_0x5d71d9['uniqueid'],queues[_0x5d71d9[_0xe483('0x6')]][_0xe483('0x20')],_0x5d71d9['value'],queues[_0x5d71d9[_0xe483('0x6')]]['queuecallerexitreason']));writeDB(queues[_0x5d71d9[_0xe483('0x6')]]);}}else if(!_[_0xe483('0x23')](_0x5d71d9['variable'][_0xe483('0x29')])){if(!_[_0xe483('0x23')](queues[_0x5d71d9[_0xe483('0x6')]])&&!queues[_0x5d71d9[_0xe483('0x6')]][_0xe483('0x1b')]){queues[_0x5d71d9[_0xe483('0x6')]][_0xe483('0x1b')]=![];queues[_0x5d71d9[_0xe483('0x6')]]['queuecallerabandonAt']=null;queues[_0x5d71d9[_0xe483('0x6')]]['queuecallerexit']=!![];queues[_0x5d71d9['uniqueid']]['queuecallerexitAt']=utils[_0xe483('0x15')]();queues[_0x5d71d9[_0xe483('0x6')]]['queuecallerexitreason']=_0xe483('0x2a');utils[_0xe483('0x3')](util[_0xe483('0x4')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x5d71d9[_0xe483('0x6')],queues[_0x5d71d9[_0xe483('0x6')]][_0xe483('0x20')],_0x5d71d9[_0xe483('0x26')],queues[_0x5d71d9[_0xe483('0x6')]]['queuecallerexitreason']));}}}catch(_0x3c0144){utils['error'](util[_0xe483('0x4')](_0xe483('0x22'),_0x5d71d9[_0xe483('0x6')]),_0x3c0144);}};exports[_0xe483('0x1b')]=function(_0x2b8e00){try{if(!_[_0xe483('0x23')](queues[_0x2b8e00[_0xe483('0x6')]])){utils[_0xe483('0x11')](util[_0xe483('0x4')]('[%s][queues][queuecallerabandon]',_0x2b8e00[_0xe483('0x6')]),_0x2b8e00);queues[_0x2b8e00[_0xe483('0x6')]][_0xe483('0x1c')]=![];queues[_0x2b8e00[_0xe483('0x6')]][_0xe483('0x2b')]=null;queues[_0x2b8e00['uniqueid']][_0xe483('0x1b')]=!![];queues[_0x2b8e00[_0xe483('0x6')]][_0xe483('0x2c')]=utils[_0xe483('0x15')]();queues[_0x2b8e00[_0xe483('0x6')]][_0xe483('0xa')]=_0xe483('0x2d');utils['info'](util[_0xe483('0x4')](_0xe483('0x2e'),_0x2b8e00['uniqueid'],queues[_0x2b8e00[_0xe483('0x6')]][_0xe483('0x20')],queues[_0x2b8e00['uniqueid']][_0xe483('0xa')]));}}catch(_0x16bba7){utils[_0xe483('0x16')](util[_0xe483('0x4')](_0xe483('0x2f'),_0x2b8e00[_0xe483('0x6')]),_0x16bba7);}};exports[_0xe483('0x30')]=function(_0x595dc1){try{if(!_[_0xe483('0x23')](queues[_0x595dc1[_0xe483('0x6')]])){utils[_0xe483('0x11')](util['format'](_0xe483('0x31'),_0x595dc1['uniqueid']),_0x595dc1);utils[_0xe483('0x3')](util[_0xe483('0x4')](_0xe483('0x32'),_0x595dc1['uniqueid'],queues[_0x595dc1[_0xe483('0x6')]][_0xe483('0x20')],_0x595dc1[_0xe483('0x33')],_0x595dc1[_0xe483('0x34')]));queues[_0x595dc1['uniqueid']][_0xe483('0x30')]=!![];queues[_0x595dc1[_0xe483('0x6')]]['queuecallerleaveAt']=utils[_0xe483('0x15')]();queues[_0x595dc1[_0xe483('0x6')]][_0xe483('0x35')]=utils[_0xe483('0x36')](queues[_0x595dc1[_0xe483('0x6')]][_0xe483('0x1a')],queues[_0x595dc1[_0xe483('0x6')]]['queuecallerjoinAt']);queues[_0x595dc1[_0xe483('0x6')]][_0xe483('0x13')]=_0x595dc1[_0xe483('0x13')];queues[_0x595dc1['uniqueid']][_0xe483('0x37')]=_0x595dc1[_0xe483('0x37')];queues[_0x595dc1['uniqueid']][_0xe483('0x33')]=_0x595dc1[_0xe483('0x33')];queues[_0x595dc1['uniqueid']]['connectedlinename']=_0x595dc1[_0xe483('0x34')];}}catch(_0x59351d){utils[_0xe483('0x16')](util[_0xe483('0x4')]('[%s][queues][queuecallerleave]',_0x595dc1['uniqueid']),_0x59351d);}};exports[_0xe483('0x38')]=function(_0x365a24){try{if(!_[_0xe483('0x23')](queues[_0x365a24[_0xe483('0x6')]])){utils['debug'](util[_0xe483('0x4')]('[%s][queues][agentconnect]',_0x365a24[_0xe483('0x6')]),_0x365a24);utils[_0xe483('0x3')](util[_0xe483('0x4')](_0xe483('0x39'),_0x365a24[_0xe483('0x6')],queues[_0x365a24['uniqueid']][_0xe483('0x20')],_0x365a24[_0xe483('0x3a')],_0x365a24[_0xe483('0x3b')]));queues[_0x365a24[_0xe483('0x6')]][_0xe483('0x1b')]=![];queues[_0x365a24[_0xe483('0x6')]][_0xe483('0x1b')]=![];queues[_0x365a24[_0xe483('0x6')]][_0xe483('0x2c')]=null;queues[_0x365a24[_0xe483('0x6')]]['queuecallerexit']=![];queues[_0x365a24['uniqueid']]['queuecallerexitreason']=null;queues[_0x365a24[_0xe483('0x6')]][_0xe483('0x2b')]=null;queues[_0x365a24[_0xe483('0x6')]]['assigned']=!![];queues[_0x365a24[_0xe483('0x6')]][_0xe483('0x3c')]=_0x365a24[_0xe483('0x3b')];queues[_0x365a24[_0xe483('0x6')]][_0xe483('0x9')]=_0x365a24[_0xe483('0x3a')];}}catch(_0x161504){utils[_0xe483('0x16')](util[_0xe483('0x4')]('[%s][queues][agentconnect]',_0x365a24[_0xe483('0x6')]),_0x161504);}};exports[_0xe483('0x3d')]=function(_0x103ee9){try{if(!_['isNil'](queues[_0x103ee9[_0xe483('0x6')]])){if(queues[_0x103ee9[_0xe483('0x6')]]['queuecallerleaveAt']){utils[_0xe483('0x11')](util[_0xe483('0x4')](_0xe483('0x3e'),_0x103ee9['uniqueid']),_0x103ee9);queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0x1b')]=![];queues[_0x103ee9['uniqueid']][_0xe483('0x1b')]=![];queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0x2c')]=null;queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0x1c')]=![];queues[_0x103ee9['uniqueid']][_0xe483('0x2b')]=null;queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0x3f')]=!![];queues[_0x103ee9[_0xe483('0x6')]]['lastAssignedTo']=_0x103ee9[_0xe483('0x3a')];queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0x1d')]=!![];queues[_0x103ee9['uniqueid']][_0xe483('0x1e')]=utils[_0xe483('0x15')]();if(_0x103ee9[_0xe483('0x40')]==_0xe483('0x41')){if(!queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0x41')]){queues[_0x103ee9['uniqueid']][_0xe483('0xa')]=_0xe483('0x42');}}else{queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0xa')]=_0xe483('0x43')+_0x103ee9[_0xe483('0x40')][_0xe483('0x27')]();}utils[_0xe483('0x3')](util[_0xe483('0x4')](_0xe483('0x44'),_0x103ee9[_0xe483('0x6')],queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0x20')],_0x103ee9[_0xe483('0x3a')],queues[_0x103ee9[_0xe483('0x6')]][_0xe483('0xa')]));writeDB(queues[_0x103ee9[_0xe483('0x6')]]);}}}catch(_0x5e8027){utils['error'](util[_0xe483('0x4')](_0xe483('0x3e'),_0x103ee9[_0xe483('0x6')]),_0x5e8027);}};exports['blindtransfer']=function(_0x1558d8){try{if(!_[_0xe483('0x23')](queues[_0x1558d8['transfereeuniqueid']])){utils[_0xe483('0x11')](util[_0xe483('0x4')]('[%s][queues][blindtransfer]',_0x1558d8[_0xe483('0x6')]),_0x1558d8);queues[_0x1558d8[_0xe483('0x45')]][_0xe483('0x41')]=!![];queues[_0x1558d8[_0xe483('0x45')]]['transfertype']=_0xe483('0x46');queues[_0x1558d8[_0xe483('0x45')]][_0xe483('0x47')]=_0x1558d8[_0xe483('0x48')];queues[_0x1558d8[_0xe483('0x45')]][_0xe483('0x49')]=_0x1558d8[_0xe483('0x45')];queues[_0x1558d8[_0xe483('0x45')]][_0xe483('0xa')]=_0xe483('0x4a');utils['info'](util[_0xe483('0x4')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x1558d8['uniqueid'],queues[_0x1558d8[_0xe483('0x45')]][_0xe483('0x20')],_0x1558d8[_0xe483('0x45')],_0x1558d8[_0xe483('0x48')]));}}catch(_0x49173d){utils[_0xe483('0x16')](util[_0xe483('0x4')](_0xe483('0x4b'),_0x1558d8[_0xe483('0x6')]),_0x49173d);}};exports[_0xe483('0x4c')]=function(_0x361907){try{utils[_0xe483('0x11')](util[_0xe483('0x4')](_0xe483('0x4d'),_0x361907[_0xe483('0x4e')]),_0x361907);if(_0x361907[_0xe483('0x4e')]==_0x361907[_0xe483('0x4f')]){if(!_[_0xe483('0x23')](queues[_0x361907[_0xe483('0x50')]])){utils['info'](util[_0xe483('0x4')](_0xe483('0x51'),_0x361907[_0xe483('0x4e')],queues[_0x361907[_0xe483('0x50')]]['name'],_0x361907[_0xe483('0x52')]));queues[_0x361907[_0xe483('0x50')]]['transfer']=!![];queues[_0x361907[_0xe483('0x50')]]['transfertype']=_0xe483('0x53');queues[_0x361907['secondtransfererlinkedid']]['transferexten']=_0x361907[_0xe483('0x52')];queues[_0x361907[_0xe483('0x50')]][_0xe483('0x49')]=_0x361907[_0xe483('0x4e')];queues[_0x361907[_0xe483('0x50')]][_0xe483('0xa')]=_0xe483('0x54');}if(!_['isNil'](queues[_0x361907[_0xe483('0x4f')]])){if(_0x361907[_0xe483('0x55')]&&queues[_0x361907[_0xe483('0x55')]]){queues[_0x361907[_0xe483('0x55')]]['queuecallerenterreason']=0x1;queues[_0x361907['transfereeuniqueid']]=_[_0xe483('0x56')](queues[_0x361907[_0xe483('0x55')]]);queues[_0x361907['transfereeuniqueid']][_0xe483('0xf')]=_0x361907[_0xe483('0x57')];queues[_0x361907[_0xe483('0x45')]][_0xe483('0x21')]=0x2;queues[_0x361907[_0xe483('0x45')]][_0xe483('0x58')]=queues[_0x361907['secondtransfererlinkedid']][_0xe483('0x58')];queues[_0x361907[_0xe483('0x45')]][_0xe483('0x59')]=queues[_0x361907[_0xe483('0x50')]][_0xe483('0x59')];queues[_0x361907[_0xe483('0x45')]][_0xe483('0x5a')]=utils['now']();queues[_0x361907['transfereeuniqueid']][_0xe483('0x1a')]=utils[_0xe483('0x15')]();queues[_0x361907[_0xe483('0x45')]][_0xe483('0x35')]=0x0;queues[_0x361907[_0xe483('0x45')]][_0xe483('0x5b')]=0x0;utils[_0xe483('0x3')](util[_0xe483('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x361907[_0xe483('0x4e')],queues[_0x361907[_0xe483('0x45')]][_0xe483('0x20')],queues[_0x361907[_0xe483('0x45')]][_0xe483('0x58')],queues[_0x361907['transfereeuniqueid']][_0xe483('0x59')]));}else{utils[_0xe483('0x3')](util[_0xe483('0x4')](_0xe483('0x5c'),_0x361907[_0xe483('0x4e')],queues[_0x361907[_0xe483('0x4f')]][_0xe483('0x20')],_0x361907[_0xe483('0x50')]));queues[_0x361907[_0xe483('0x4f')]][_0xe483('0xf')]=_0x361907['secondtransfererlinkedid'];}}}else if(_0x361907[_0xe483('0x5d')]==_0x361907[_0xe483('0x50')]){if(!_[_0xe483('0x23')](queues[_0x361907[_0xe483('0x4f')]])){utils['info'](util[_0xe483('0x4')](_0xe483('0x5e'),_0x361907[_0xe483('0x4e')],queues[_0x361907[_0xe483('0x4f')]][_0xe483('0x20')],_0x361907[_0xe483('0x5d')],_0x361907[_0xe483('0x5f')]));queues[_0x361907[_0xe483('0x4f')]]['transfer']=!![];queues[_0x361907['origtransfererlinkedid']][_0xe483('0x60')]=_0xe483('0x53');queues[_0x361907[_0xe483('0x4f')]][_0xe483('0x47')]=_0x361907[_0xe483('0x5f')];queues[_0x361907[_0xe483('0x4f')]][_0xe483('0x49')]=_0x361907['secondtransfereruniqueid'];queues[_0x361907[_0xe483('0x4f')]][_0xe483('0xa')]=_0xe483('0x54');}if(!_['isNil'](queues[_0x361907['secondtransfererlinkedid']])){if(_0x361907['transfertargetlinkedid']&&queues[_0x361907['transfertargetlinkedid']]){queues[_0x361907[_0xe483('0x61')]][_0xe483('0x21')]=0x1;queues[_0x361907['transfertargetuniqueid']]=_[_0xe483('0x56')](queues[_0x361907[_0xe483('0x61')]]);queues[_0x361907[_0xe483('0x57')]][_0xe483('0xf')]=_0x361907[_0xe483('0x57')];queues[_0x361907[_0xe483('0x57')]][_0xe483('0x21')]=0x2;queues[_0x361907[_0xe483('0x57')]][_0xe483('0x58')]=queues[_0x361907[_0xe483('0x4f')]]['calleridnum'];queues[_0x361907['transfertargetuniqueid']]['calleridname']=queues[_0x361907['origtransfererlinkedid']][_0xe483('0x59')];queues[_0x361907[_0xe483('0x57')]][_0xe483('0x5a')]=utils[_0xe483('0x15')]();queues[_0x361907['transfertargetuniqueid']][_0xe483('0x1a')]=utils[_0xe483('0x15')]();queues[_0x361907[_0xe483('0x57')]][_0xe483('0x35')]=0x0;queues[_0x361907['transfertargetuniqueid']][_0xe483('0x5b')]=0x0;utils[_0xe483('0x3')](util[_0xe483('0x4')](_0xe483('0x62'),_0x361907[_0xe483('0x4e')],queues[_0x361907['transfertargetuniqueid']][_0xe483('0x20')],queues[_0x361907[_0xe483('0x57')]][_0xe483('0xf')],queues[_0x361907[_0xe483('0x57')]][_0xe483('0x58')],queues[_0x361907['transfertargetuniqueid']][_0xe483('0x59')]));}else{utils['info'](util[_0xe483('0x4')](_0xe483('0x5c'),_0x361907[_0xe483('0x4e')],queues[_0x361907[_0xe483('0x50')]][_0xe483('0x20')],_0x361907[_0xe483('0x4f')]));queues[_0x361907[_0xe483('0x50')]][_0xe483('0xf')]=_0x361907[_0xe483('0x4f')];}}}}catch(_0x21f9b4){utils[_0xe483('0x16')](util[_0xe483('0x4')](_0xe483('0x4d'),_0x361907['origtransfereruniqueid']),_0x21f9b4);}};exports['musiconholdstart']=function(_0x406034){try{if(!_['isNil'](queues[_0x406034[_0xe483('0x6')]])){utils[_0xe483('0x11')](util['format']('[%s][queues][musiconholdstart]',_0x406034['uniqueid']),_0x406034);queues[_0x406034[_0xe483('0x6')]][_0xe483('0x63')]=utils[_0xe483('0x15')]();utils['info'](util['format'](_0xe483('0x64'),_0x406034[_0xe483('0x6')],queues[_0x406034[_0xe483('0x6')]]['name'],queues[_0x406034[_0xe483('0x6')]][_0xe483('0x63')]));}}catch(_0x287f6b){utils[_0xe483('0x16')](util[_0xe483('0x4')](_0xe483('0x65'),_0x406034[_0xe483('0x6')]),_0x287f6b);}};exports['musiconholdstop']=function(_0x586909){try{if(!_[_0xe483('0x23')](queues[_0x586909[_0xe483('0x6')]])){if(!_['isNil'](queues[_0x586909['uniqueid']][_0xe483('0x63')])){utils[_0xe483('0x11')](util[_0xe483('0x4')](_0xe483('0x66'),_0x586909[_0xe483('0x6')]),_0x586909);queues[_0x586909[_0xe483('0x6')]][_0xe483('0x5b')]+=utils[_0xe483('0x36')](utils['now'](),queues[_0x586909['uniqueid']][_0xe483('0x63')]);utils[_0xe483('0x3')](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x586909[_0xe483('0x6')],queues[_0x586909[_0xe483('0x6')]][_0xe483('0x20')],queues[_0x586909[_0xe483('0x6')]]['mohtime']));delete queues[_0x586909['uniqueid']][_0xe483('0x63')];}}}catch(_0x23d5be){utils[_0xe483('0x16')](util['format'](_0xe483('0x66'),_0x586909[_0xe483('0x6')]),_0x23d5be);}};
\ No newline at end of file
+var _0x3ee0=['[%s][queues][musiconholdstop]','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','accountcode','queuecallerexitreason','queue','then','type','request','CreateVoiceQueueReport','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','format','position','error','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','queuecallercompleteAt','now','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','transfereduniqueid','queuecallerenterreason','varset','[%s][queues][varset]','queuestatus','value','toUpperCase','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','queueposition','EXITWITHKEY','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerleave','connectedlinenum','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','transfertype','BLIND','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transferexten','transferuniqueid','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x3ee0,0xcf));var _0x03ee=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x3ee0[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x03ee('0x0'));var util=require(_0x03ee('0x1'));var utils=require(_0x03ee('0x2'));var queues={};function writeDB(_0x12d349){utils[_0x03ee('0x3')](util['format'](_0x03ee('0x4'),_0x12d349[_0x03ee('0x5')],_0x12d349[_0x03ee('0x6')],_0x12d349['queue'],_0x12d349[_0x03ee('0x7')],_0x12d349['calleridnum'],_0x12d349[_0x03ee('0x8')],_0x12d349[_0x03ee('0x9')]));if(_0x12d349[_0x03ee('0xa')]){utils['getVoiceQueueByName'](_0x12d349[_0x03ee('0xa')])[_0x03ee('0xb')](function(_0x1dc1df){if(_0x1dc1df){_0x12d349[_0x03ee('0xc')]=_0x1dc1df[_0x03ee('0xc')];}utils[_0x03ee('0xd')](_0x03ee('0xe'),_0x12d349);});}else{utils[_0x03ee('0xd')](_0x03ee('0xe'),_0x12d349);}if(_0x12d349['transfereduniqueid']){delete queues[_0x12d349['transfereduniqueid']];}else{delete queues[_0x12d349[_0x03ee('0x5')]];}}exports[_0x03ee('0xf')]=function(_0xdc59ea){try{utils[_0x03ee('0x10')](util['format'](_0x03ee('0x11'),_0xdc59ea[_0x03ee('0x5')]),_0xdc59ea);utils['info'](util[_0x03ee('0x12')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0xdc59ea[_0x03ee('0x5')],_0xdc59ea[_0x03ee('0xa')],_0xdc59ea[_0x03ee('0x13')]));queues[_0xdc59ea[_0x03ee('0x5')]]=_['assign'](_0xdc59ea,{'originalposition':_0xdc59ea[_0x03ee('0x13')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x5cdcd5){utils[_0x03ee('0x14')](util[_0x03ee('0x12')]('[%s][queues][queuecallerjoin]',_0xdc59ea['uniqueid']),_0x5cdcd5);}};exports[_0x03ee('0x15')]=function(_0x3984f0){try{if(!_[_0x03ee('0x16')](queues[_0x3984f0[_0x03ee('0x5')]])){utils[_0x03ee('0x10')](util[_0x03ee('0x12')](_0x03ee('0x17'),_0x3984f0[_0x03ee('0x5')]),_0x3984f0);if(queues[_0x3984f0[_0x03ee('0x5')]][_0x03ee('0x18')]){if(!queues[_0x3984f0['uniqueid']]['queuecallerabandon']&&!queues[_0x3984f0[_0x03ee('0x5')]][_0x03ee('0x19')]){queues[_0x3984f0[_0x03ee('0x5')]][_0x03ee('0x1a')]=!![];queues[_0x3984f0['uniqueid']][_0x03ee('0x1b')]=utils[_0x03ee('0x1c')]();queues[_0x3984f0[_0x03ee('0x5')]][_0x03ee('0x9')]=_0x03ee('0x1d');}utils[_0x03ee('0x3')](util[_0x03ee('0x12')](_0x03ee('0x1e'),_0x3984f0['uniqueid'],queues[_0x3984f0['uniqueid']]['name'],queues[_0x3984f0[_0x03ee('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x3984f0['uniqueid']]);}else if(queues[_0x3984f0[_0x03ee('0x5')]]['transfereduniqueid']){utils[_0x03ee('0x3')](util[_0x03ee('0x12')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x3984f0[_0x03ee('0x5')],queues[_0x3984f0[_0x03ee('0x5')]]['name'],queues[_0x3984f0['uniqueid']][_0x03ee('0x1f')]));queues[queues[_0x3984f0[_0x03ee('0x5')]][_0x03ee('0x1f')]]=queues[_0x3984f0['uniqueid']];queues[queues[_0x3984f0['uniqueid']][_0x03ee('0x1f')]][_0x03ee('0x20')]=0x2;delete queues[_0x3984f0[_0x03ee('0x5')]];}}}catch(_0x50b306){utils['error'](util['format']('[%s][queues][hangup]',_0x3984f0[_0x03ee('0x5')]),_0x50b306);}};exports[_0x03ee('0x21')]=function(_0xa08e6c){try{utils[_0x03ee('0x10')](util[_0x03ee('0x12')](_0x03ee('0x22'),_0xa08e6c[_0x03ee('0x5')]),_0xa08e6c);if(!_[_0x03ee('0x16')](_0xa08e6c['variable'][_0x03ee('0x23')])&&_0xa08e6c[_0x03ee('0x24')][_0x03ee('0x25')]()!=='CONTINUE'){if(!_[_0x03ee('0x16')](queues[_0xa08e6c[_0x03ee('0x5')]])){queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x26')]=![];queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x27')]=null;queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x19')]=!![];queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x28')]=utils['now']();queues[_0xa08e6c['uniqueid']][_0x03ee('0x9')]=_0xa08e6c[_0x03ee('0x24')][_0x03ee('0x25')]();utils[_0x03ee('0x3')](util['format'](_0x03ee('0x29'),_0xa08e6c[_0x03ee('0x5')],queues[_0xa08e6c[_0x03ee('0x5')]]['name'],_0xa08e6c[_0x03ee('0x24')],queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x9')]));writeDB(queues[_0xa08e6c[_0x03ee('0x5')]]);}}else if(!_[_0x03ee('0x16')](_0xa08e6c[_0x03ee('0x2a')][_0x03ee('0x2b')])){if(!_[_0x03ee('0x16')](queues[_0xa08e6c['uniqueid']])&&!queues[_0xa08e6c[_0x03ee('0x5')]]['queuecallerabandon']){queues[_0xa08e6c['uniqueid']][_0x03ee('0x26')]=![];queues[_0xa08e6c[_0x03ee('0x5')]]['queuecallerabandonAt']=null;queues[_0xa08e6c['uniqueid']][_0x03ee('0x19')]=!![];queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x28')]=utils[_0x03ee('0x1c')]();queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x9')]=_0x03ee('0x2c');utils['info'](util[_0x03ee('0x12')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0xa08e6c[_0x03ee('0x5')],queues[_0xa08e6c[_0x03ee('0x5')]]['name'],_0xa08e6c[_0x03ee('0x24')],queues[_0xa08e6c[_0x03ee('0x5')]][_0x03ee('0x9')]));}}}catch(_0x4a62aa){utils[_0x03ee('0x14')](util[_0x03ee('0x12')](_0x03ee('0x22'),_0xa08e6c[_0x03ee('0x5')]),_0x4a62aa);}};exports[_0x03ee('0x26')]=function(_0x1dffb1){try{if(!_[_0x03ee('0x16')](queues[_0x1dffb1[_0x03ee('0x5')]])){utils['debug'](util[_0x03ee('0x12')](_0x03ee('0x2d'),_0x1dffb1['uniqueid']),_0x1dffb1);queues[_0x1dffb1[_0x03ee('0x5')]][_0x03ee('0x19')]=![];queues[_0x1dffb1[_0x03ee('0x5')]][_0x03ee('0x28')]=null;queues[_0x1dffb1[_0x03ee('0x5')]]['queuecallerabandon']=!![];queues[_0x1dffb1[_0x03ee('0x5')]][_0x03ee('0x27')]=utils['now']();queues[_0x1dffb1[_0x03ee('0x5')]][_0x03ee('0x9')]=_0x03ee('0x2e');utils[_0x03ee('0x3')](util[_0x03ee('0x12')](_0x03ee('0x2f'),_0x1dffb1[_0x03ee('0x5')],queues[_0x1dffb1[_0x03ee('0x5')]][_0x03ee('0x30')],queues[_0x1dffb1['uniqueid']][_0x03ee('0x9')]));}}catch(_0xbfe9d2){utils[_0x03ee('0x14')](util[_0x03ee('0x12')](_0x03ee('0x2d'),_0x1dffb1['uniqueid']),_0xbfe9d2);}};exports[_0x03ee('0x31')]=function(_0x1bb385){try{if(!_[_0x03ee('0x16')](queues[_0x1bb385[_0x03ee('0x5')]])){utils[_0x03ee('0x10')](util['format']('[%s][queues][queuecallerleave]',_0x1bb385['uniqueid']),_0x1bb385);utils[_0x03ee('0x3')](util['format']('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x1bb385['uniqueid'],queues[_0x1bb385[_0x03ee('0x5')]][_0x03ee('0x30')],_0x1bb385[_0x03ee('0x32')],_0x1bb385[_0x03ee('0x33')]));queues[_0x1bb385[_0x03ee('0x5')]][_0x03ee('0x31')]=!![];queues[_0x1bb385[_0x03ee('0x5')]][_0x03ee('0x18')]=utils[_0x03ee('0x1c')]();queues[_0x1bb385['uniqueid']][_0x03ee('0x34')]=utils[_0x03ee('0x35')](queues[_0x1bb385['uniqueid']][_0x03ee('0x18')],queues[_0x1bb385[_0x03ee('0x5')]][_0x03ee('0x36')]);queues[_0x1bb385[_0x03ee('0x5')]]['position']=_0x1bb385[_0x03ee('0x13')];queues[_0x1bb385[_0x03ee('0x5')]][_0x03ee('0x37')]=_0x1bb385[_0x03ee('0x37')];queues[_0x1bb385['uniqueid']][_0x03ee('0x32')]=_0x1bb385[_0x03ee('0x32')];queues[_0x1bb385[_0x03ee('0x5')]]['connectedlinename']=_0x1bb385[_0x03ee('0x33')];}}catch(_0x3b5ce3){utils[_0x03ee('0x14')](util[_0x03ee('0x12')](_0x03ee('0x38'),_0x1bb385['uniqueid']),_0x3b5ce3);}};exports[_0x03ee('0x39')]=function(_0x99dd39){try{if(!_[_0x03ee('0x16')](queues[_0x99dd39[_0x03ee('0x5')]])){utils[_0x03ee('0x10')](util[_0x03ee('0x12')](_0x03ee('0x3a'),_0x99dd39[_0x03ee('0x5')]),_0x99dd39);utils['info'](util[_0x03ee('0x12')](_0x03ee('0x3b'),_0x99dd39[_0x03ee('0x5')],queues[_0x99dd39[_0x03ee('0x5')]][_0x03ee('0x30')],_0x99dd39[_0x03ee('0x3c')],_0x99dd39[_0x03ee('0x3d')]));queues[_0x99dd39[_0x03ee('0x5')]][_0x03ee('0x26')]=![];queues[_0x99dd39[_0x03ee('0x5')]][_0x03ee('0x26')]=![];queues[_0x99dd39[_0x03ee('0x5')]][_0x03ee('0x27')]=null;queues[_0x99dd39[_0x03ee('0x5')]][_0x03ee('0x19')]=![];queues[_0x99dd39[_0x03ee('0x5')]]['queuecallerexitreason']=null;queues[_0x99dd39['uniqueid']]['queuecallerexitAt']=null;queues[_0x99dd39['uniqueid']][_0x03ee('0x3e')]=!![];queues[_0x99dd39[_0x03ee('0x5')]][_0x03ee('0x8')]=_0x99dd39[_0x03ee('0x3d')];queues[_0x99dd39[_0x03ee('0x5')]][_0x03ee('0x7')]=_0x99dd39[_0x03ee('0x3c')];}}catch(_0x483cfe){utils[_0x03ee('0x14')](util['format'](_0x03ee('0x3a'),_0x99dd39['uniqueid']),_0x483cfe);}};exports['agentcomplete']=function(_0x194ac){try{if(!_[_0x03ee('0x16')](queues[_0x194ac[_0x03ee('0x5')]])){if(queues[_0x194ac[_0x03ee('0x5')]][_0x03ee('0x18')]){utils[_0x03ee('0x10')](util[_0x03ee('0x12')](_0x03ee('0x3f'),_0x194ac[_0x03ee('0x5')]),_0x194ac);queues[_0x194ac['uniqueid']][_0x03ee('0x26')]=![];queues[_0x194ac['uniqueid']][_0x03ee('0x26')]=![];queues[_0x194ac['uniqueid']]['queuecallerabandonAt']=null;queues[_0x194ac[_0x03ee('0x5')]][_0x03ee('0x19')]=![];queues[_0x194ac[_0x03ee('0x5')]][_0x03ee('0x28')]=null;queues[_0x194ac[_0x03ee('0x5')]][_0x03ee('0x3e')]=!![];queues[_0x194ac['uniqueid']]['lastAssignedTo']=_0x194ac['membername'];queues[_0x194ac[_0x03ee('0x5')]][_0x03ee('0x1a')]=!![];queues[_0x194ac[_0x03ee('0x5')]]['queuecallercompleteAt']=utils[_0x03ee('0x1c')]();if(_0x194ac[_0x03ee('0x40')]==_0x03ee('0x41')){if(!queues[_0x194ac['uniqueid']][_0x03ee('0x41')]){queues[_0x194ac[_0x03ee('0x5')]][_0x03ee('0x9')]=_0x03ee('0x42');}}else{queues[_0x194ac['uniqueid']][_0x03ee('0x9')]='COMPLETEDBY'+_0x194ac[_0x03ee('0x40')][_0x03ee('0x25')]();}utils['info'](util[_0x03ee('0x12')](_0x03ee('0x43'),_0x194ac[_0x03ee('0x5')],queues[_0x194ac[_0x03ee('0x5')]][_0x03ee('0x30')],_0x194ac[_0x03ee('0x3c')],queues[_0x194ac[_0x03ee('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x194ac['uniqueid']]);}}}catch(_0x224b0c){utils[_0x03ee('0x14')](util['format'](_0x03ee('0x3f'),_0x194ac[_0x03ee('0x5')]),_0x224b0c);}};exports[_0x03ee('0x44')]=function(_0x465375){try{if(!_[_0x03ee('0x16')](queues[_0x465375[_0x03ee('0x45')]])){utils[_0x03ee('0x10')](util[_0x03ee('0x12')]('[%s][queues][blindtransfer]',_0x465375['uniqueid']),_0x465375);queues[_0x465375[_0x03ee('0x45')]][_0x03ee('0x41')]=!![];queues[_0x465375[_0x03ee('0x45')]][_0x03ee('0x46')]=_0x03ee('0x47');queues[_0x465375[_0x03ee('0x45')]]['transferexten']=_0x465375[_0x03ee('0x48')];queues[_0x465375['transfereeuniqueid']]['transferuniqueid']=_0x465375[_0x03ee('0x45')];queues[_0x465375[_0x03ee('0x45')]]['queuecallerexitreason']=_0x03ee('0x49');utils['info'](util[_0x03ee('0x12')](_0x03ee('0x4a'),_0x465375[_0x03ee('0x5')],queues[_0x465375[_0x03ee('0x45')]]['name'],_0x465375[_0x03ee('0x45')],_0x465375[_0x03ee('0x48')]));}}catch(_0x3a8a7a){utils[_0x03ee('0x14')](util[_0x03ee('0x12')]('[%s][queues][blindtransfer]',_0x465375[_0x03ee('0x5')]),_0x3a8a7a);}};exports[_0x03ee('0x4b')]=function(_0x49b1d5){try{utils[_0x03ee('0x10')](util[_0x03ee('0x12')](_0x03ee('0x4c'),_0x49b1d5[_0x03ee('0x4d')]),_0x49b1d5);if(_0x49b1d5[_0x03ee('0x4d')]==_0x49b1d5['origtransfererlinkedid']){if(!_['isNil'](queues[_0x49b1d5[_0x03ee('0x4e')]])){utils[_0x03ee('0x3')](util['format'](_0x03ee('0x4f'),_0x49b1d5[_0x03ee('0x4d')],queues[_0x49b1d5[_0x03ee('0x4e')]][_0x03ee('0x30')],_0x49b1d5['origtransfererexten']));queues[_0x49b1d5[_0x03ee('0x4e')]][_0x03ee('0x41')]=!![];queues[_0x49b1d5[_0x03ee('0x4e')]][_0x03ee('0x46')]='ATTENDED';queues[_0x49b1d5[_0x03ee('0x4e')]][_0x03ee('0x50')]=_0x49b1d5['origtransfererexten'];queues[_0x49b1d5['secondtransfererlinkedid']][_0x03ee('0x51')]=_0x49b1d5[_0x03ee('0x4d')];queues[_0x49b1d5[_0x03ee('0x4e')]]['queuecallerexitreason']=_0x03ee('0x52');}if(!_[_0x03ee('0x16')](queues[_0x49b1d5[_0x03ee('0x53')]])){if(_0x49b1d5[_0x03ee('0x54')]&&queues[_0x49b1d5[_0x03ee('0x54')]]){queues[_0x49b1d5[_0x03ee('0x54')]]['queuecallerenterreason']=0x1;queues[_0x49b1d5[_0x03ee('0x45')]]=_['clone'](queues[_0x49b1d5[_0x03ee('0x54')]]);queues[_0x49b1d5[_0x03ee('0x45')]][_0x03ee('0x1f')]=_0x49b1d5[_0x03ee('0x55')];queues[_0x49b1d5[_0x03ee('0x45')]][_0x03ee('0x20')]=0x2;queues[_0x49b1d5['transfereeuniqueid']][_0x03ee('0x56')]=queues[_0x49b1d5[_0x03ee('0x4e')]][_0x03ee('0x56')];queues[_0x49b1d5['transfereeuniqueid']][_0x03ee('0x57')]=queues[_0x49b1d5[_0x03ee('0x4e')]][_0x03ee('0x57')];queues[_0x49b1d5[_0x03ee('0x45')]][_0x03ee('0x36')]=utils['now']();queues[_0x49b1d5[_0x03ee('0x45')]]['queuecallerleaveAt']=utils[_0x03ee('0x1c')]();queues[_0x49b1d5[_0x03ee('0x45')]]['holdtime']=0x0;queues[_0x49b1d5['transfereeuniqueid']][_0x03ee('0x58')]=0x0;utils['info'](util[_0x03ee('0x12')](_0x03ee('0x59'),_0x49b1d5['origtransfereruniqueid'],queues[_0x49b1d5[_0x03ee('0x45')]][_0x03ee('0x30')],queues[_0x49b1d5[_0x03ee('0x45')]][_0x03ee('0x56')],queues[_0x49b1d5['transfereeuniqueid']]['calleridname']));}else{utils[_0x03ee('0x3')](util[_0x03ee('0x12')](_0x03ee('0x5a'),_0x49b1d5[_0x03ee('0x4d')],queues[_0x49b1d5[_0x03ee('0x53')]][_0x03ee('0x30')],_0x49b1d5[_0x03ee('0x4e')]));queues[_0x49b1d5[_0x03ee('0x53')]]['transfereduniqueid']=_0x49b1d5['secondtransfererlinkedid'];}}}else if(_0x49b1d5['secondtransfereruniqueid']==_0x49b1d5[_0x03ee('0x4e')]){if(!_['isNil'](queues[_0x49b1d5[_0x03ee('0x53')]])){utils['info'](util[_0x03ee('0x12')](_0x03ee('0x5b'),_0x49b1d5['origtransfereruniqueid'],queues[_0x49b1d5[_0x03ee('0x53')]]['name'],_0x49b1d5[_0x03ee('0x5c')],_0x49b1d5[_0x03ee('0x5d')]));queues[_0x49b1d5[_0x03ee('0x53')]][_0x03ee('0x41')]=!![];queues[_0x49b1d5[_0x03ee('0x53')]][_0x03ee('0x46')]='ATTENDED';queues[_0x49b1d5['origtransfererlinkedid']]['transferexten']=_0x49b1d5[_0x03ee('0x5d')];queues[_0x49b1d5[_0x03ee('0x53')]]['transferuniqueid']=_0x49b1d5[_0x03ee('0x5c')];queues[_0x49b1d5[_0x03ee('0x53')]][_0x03ee('0x9')]=_0x03ee('0x52');}if(!_['isNil'](queues[_0x49b1d5[_0x03ee('0x4e')]])){if(_0x49b1d5['transfertargetlinkedid']&&queues[_0x49b1d5['transfertargetlinkedid']]){queues[_0x49b1d5[_0x03ee('0x5e')]]['queuecallerenterreason']=0x1;queues[_0x49b1d5[_0x03ee('0x55')]]=_[_0x03ee('0x5f')](queues[_0x49b1d5['transfertargetlinkedid']]);queues[_0x49b1d5[_0x03ee('0x55')]][_0x03ee('0x1f')]=_0x49b1d5[_0x03ee('0x55')];queues[_0x49b1d5['transfertargetuniqueid']][_0x03ee('0x20')]=0x2;queues[_0x49b1d5[_0x03ee('0x55')]]['calleridnum']=queues[_0x49b1d5[_0x03ee('0x53')]][_0x03ee('0x56')];queues[_0x49b1d5[_0x03ee('0x55')]][_0x03ee('0x57')]=queues[_0x49b1d5[_0x03ee('0x53')]][_0x03ee('0x57')];queues[_0x49b1d5[_0x03ee('0x55')]][_0x03ee('0x36')]=utils[_0x03ee('0x1c')]();queues[_0x49b1d5['transfertargetuniqueid']]['queuecallerleaveAt']=utils[_0x03ee('0x1c')]();queues[_0x49b1d5[_0x03ee('0x55')]][_0x03ee('0x34')]=0x0;queues[_0x49b1d5[_0x03ee('0x55')]]['mohtime']=0x0;utils[_0x03ee('0x3')](util[_0x03ee('0x12')](_0x03ee('0x60'),_0x49b1d5[_0x03ee('0x4d')],queues[_0x49b1d5[_0x03ee('0x55')]]['name'],queues[_0x49b1d5['transfertargetuniqueid']][_0x03ee('0x1f')],queues[_0x49b1d5[_0x03ee('0x55')]]['calleridnum'],queues[_0x49b1d5[_0x03ee('0x55')]]['calleridname']));}else{utils[_0x03ee('0x3')](util[_0x03ee('0x12')](_0x03ee('0x5a'),_0x49b1d5[_0x03ee('0x4d')],queues[_0x49b1d5[_0x03ee('0x4e')]][_0x03ee('0x30')],_0x49b1d5[_0x03ee('0x53')]));queues[_0x49b1d5['secondtransfererlinkedid']]['transfereduniqueid']=_0x49b1d5['origtransfererlinkedid'];}}}}catch(_0x249de0){utils[_0x03ee('0x14')](util[_0x03ee('0x12')]('[%s][queues][attendedtransfer]',_0x49b1d5[_0x03ee('0x4d')]),_0x249de0);}};exports[_0x03ee('0x61')]=function(_0x2e77f4){try{if(!_['isNil'](queues[_0x2e77f4[_0x03ee('0x5')]])){utils['debug'](util[_0x03ee('0x12')](_0x03ee('0x62'),_0x2e77f4[_0x03ee('0x5')]),_0x2e77f4);queues[_0x2e77f4[_0x03ee('0x5')]][_0x03ee('0x63')]=utils[_0x03ee('0x1c')]();utils[_0x03ee('0x3')](util['format'](_0x03ee('0x64'),_0x2e77f4['uniqueid'],queues[_0x2e77f4[_0x03ee('0x5')]][_0x03ee('0x30')],queues[_0x2e77f4[_0x03ee('0x5')]][_0x03ee('0x63')]));}}catch(_0x551ecf){utils['error'](util[_0x03ee('0x12')]('[%s][queues][musiconholdstart]',_0x2e77f4['uniqueid']),_0x551ecf);}};exports[_0x03ee('0x65')]=function(_0x399542){try{if(!_[_0x03ee('0x16')](queues[_0x399542[_0x03ee('0x5')]])){if(!_[_0x03ee('0x16')](queues[_0x399542['uniqueid']][_0x03ee('0x63')])){utils[_0x03ee('0x10')](util[_0x03ee('0x12')](_0x03ee('0x66'),_0x399542['uniqueid']),_0x399542);queues[_0x399542[_0x03ee('0x5')]][_0x03ee('0x58')]+=utils[_0x03ee('0x35')](utils[_0x03ee('0x1c')](),queues[_0x399542[_0x03ee('0x5')]][_0x03ee('0x63')]);utils['info'](util[_0x03ee('0x12')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x399542[_0x03ee('0x5')],queues[_0x399542[_0x03ee('0x5')]]['name'],queues[_0x399542['uniqueid']][_0x03ee('0x58')]));delete queues[_0x399542[_0x03ee('0x5')]][_0x03ee('0x63')];}}}catch(_0x1b62fa){utils[_0x03ee('0x14')](util['format'](_0x03ee('0x66'),_0x399542[_0x03ee('0x5')]),_0x1b62fa);}};
\ No newline at end of file
index c75882a..a67b7bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x763c=['./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','then','name','UserId','request','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','accountcode','channel','[%s][recordings][newstate]','isNil','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','error','varset','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.wav49','replace','.WAV','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','clone','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','split','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','queue','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','lodash','util','./utils'];(function(_0x4cd7f8,_0x1452f2){var _0x2613f5=function(_0x4647c5){while(--_0x4647c5){_0x4cd7f8['push'](_0x4cd7f8['shift']());}};_0x2613f5(++_0x1452f2);}(_0x763c,0x142));var _0xc763=function(_0x58fcbb,_0x49a7f3){_0x58fcbb=_0x58fcbb-0x0;var _0x2ef7b1=_0x763c[_0x58fcbb];return _0x2ef7b1;};'use strict';var _=require(_0xc763('0x0'));var util=require(_0xc763('0x1'));var utils=require(_0xc763('0x2'));var transfers=require(_0xc763('0x3'));var recordings={};function writeDB(_0x202a65){var _0x5a2bc5;utils[_0xc763('0x4')](util[_0xc763('0x5')](_0xc763('0x6'),_0x202a65[_0xc763('0x7')]));if(transfers['blinds'][_0x202a65[_0xc763('0x7')]]){_0x5a2bc5=_0x202a65[_0xc763('0x7')];_0x202a65[_0xc763('0x7')]=transfers[_0xc763('0x8')][_0x202a65['uniqueid']]['transfereeuniqueid'];}if(_0x202a65['accountcode']){utils['getUserByInternal'](_0x202a65['accountcode'])[_0xc763('0x9')](function(_0x4b17c1){if(_0x4b17c1){_0x202a65['membername']=_0x4b17c1[_0xc763('0xa')];_0x202a65[_0xc763('0xb')]=_0x4b17c1['id'];}utils[_0xc763('0xc')]('CreateVoiceRecording',_0x202a65);});}else{utils[_0xc763('0xc')]('CreateVoiceRecording',_0x202a65);}if(_0x5a2bc5)delete transfers[_0xc763('0x8')][_0x5a2bc5];}exports['newchannel']=function(_0x6ee8bd){try{utils[_0xc763('0xd')](util[_0xc763('0x5')](_0xc763('0xe'),_0x6ee8bd[_0xc763('0x7')]),_0x6ee8bd);if(_0x6ee8bd['uniqueid']==_0x6ee8bd[_0xc763('0xf')]){utils[_0xc763('0x4')](util['format'](_0xc763('0x10'),_0x6ee8bd[_0xc763('0x7')],_0x6ee8bd[_0xc763('0x11')],_0x6ee8bd[_0xc763('0x12')]));recordings[_0x6ee8bd[_0xc763('0x7')]]={'uniqueid':_0x6ee8bd[_0xc763('0x7')],'accountcode':_0x6ee8bd[_0xc763('0x13')],'exten':_0x6ee8bd['exten'],'context':_0x6ee8bd['context'],'channel':_0x6ee8bd[_0xc763('0x14')],'monitors':[]};}}catch(_0x33ad4b){utils['error'](util[_0xc763('0x5')](_0xc763('0xe'),_0x6ee8bd[_0xc763('0x7')]),_0x33ad4b);}};exports['newstate']=function(_0xb69f32){try{utils[_0xc763('0xd')](util[_0xc763('0x5')](_0xc763('0x15'),_0xb69f32[_0xc763('0x7')]),_0xb69f32);if(!_[_0xc763('0x16')](recordings[_0xb69f32[_0xc763('0x7')]])&&_0xb69f32[_0xc763('0x17')]==0x6){utils['info'](util[_0xc763('0x5')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0xb69f32['uniqueid'],_0xb69f32[_0xc763('0x11')],_0xb69f32['channel']));}else if(!_[_0xc763('0x16')](recordings[_0xb69f32[_0xc763('0xf')]])&&_0xb69f32[_0xc763('0x17')]==0x6&&_0xb69f32[_0xc763('0x11')]!=_0xc763('0x18')){utils[_0xc763('0x4')](util[_0xc763('0x5')](_0xc763('0x19'),_0xb69f32[_0xc763('0x7')],_0xb69f32[_0xc763('0xf')],_0xb69f32[_0xc763('0x11')],_0xb69f32[_0xc763('0x14')]));recordings[_0xb69f32['linkedid']][_0xc763('0x13')]=_0xb69f32[_0xc763('0x13')];}}catch(_0x38e0dd){utils[_0xc763('0x1a')](util[_0xc763('0x5')](_0xc763('0x15'),_0xb69f32[_0xc763('0x7')]),_0x38e0dd);}};exports[_0xc763('0x1b')]=function(_0x497931){try{if(!_['isNil'](_0x497931[_0xc763('0x1c')])&&!_[_0xc763('0x16')](_0x497931[_0xc763('0x1c')]['mixmonitor_filename'])){utils[_0xc763('0xd')](util[_0xc763('0x5')](_0xc763('0x1d'),_0x497931[_0xc763('0x7')]),_0x497931);utils[_0xc763('0x4')](util['format'](_0xc763('0x1e'),_0x497931[_0xc763('0x7')],_0x497931[_0xc763('0x1c')],_0x497931[_0xc763('0x1f')]));if(_['endsWith'](_0x497931[_0xc763('0x1f')],_0xc763('0x20'))){_0x497931['value']=_0x497931['value'][_0xc763('0x21')]('.wav49',_0xc763('0x22'));}if(recordings[_0x497931[_0xc763('0xf')]]){var _0x57b2a9=_['find'](recordings[_0x497931['linkedid']]['monitors'],{'value':_0x497931['value']});if(_['isNil'](_0x57b2a9)){recordings[_0x497931[_0xc763('0xf')]][_0xc763('0x23')][_0xc763('0x24')]({'value':_0x497931[_0xc763('0x1f')]});}}}}catch(_0x190204){utils['error'](util[_0xc763('0x5')]('[%s][recordings][varset]',_0x497931[_0xc763('0x7')]),_0x190204);}};exports[_0xc763('0x25')]=function(_0x2d6699){try{if(!_[_0xc763('0x16')](recordings[_0x2d6699[_0xc763('0x7')]])){utils[_0xc763('0xd')](util[_0xc763('0x5')](_0xc763('0x26'),_0x2d6699['uniqueid']),_0x2d6699);utils['info'](util[_0xc763('0x5')](_0xc763('0x27'),_0x2d6699[_0xc763('0x7')],_0x2d6699['calleridnum'],_0x2d6699['calleridname'],_0x2d6699['cause-txt']));recordings[_0x2d6699[_0xc763('0x7')]][_0xc763('0x28')]=_0x2d6699[_0xc763('0x28')];recordings[_0x2d6699[_0xc763('0x7')]][_0xc763('0x29')]=_0x2d6699['calleridname'];recordings[_0x2d6699['uniqueid']][_0xc763('0x2a')]=_0x2d6699['connectedlinenum'];recordings[_0x2d6699[_0xc763('0x7')]][_0xc763('0x2b')]=_0x2d6699[_0xc763('0x2b')];if(recordings[_0x2d6699[_0xc763('0x7')]][_0xc763('0x2c')]==_0xc763('0x2d')&&recordings[_0x2d6699['uniqueid']][_0xc763('0x13')]){recordings[_0x2d6699['uniqueid']][_0xc763('0x2a')]=recordings[_0x2d6699[_0xc763('0x7')]][_0xc763('0x13')];recordings[_0x2d6699[_0xc763('0x7')]][_0xc763('0x2b')]='';}recordings[_0x2d6699['uniqueid']][_0xc763('0x23')]['forEach'](function(_0x32ab1d){var _0x255241=_[_0xc763('0x2e')](recordings[_0x2d6699[_0xc763('0x7')]]);_0x255241[_0xc763('0x1f')]=_0x32ab1d[_0xc763('0x1f')];writeDB(_0x255241);});delete recordings[_0x2d6699[_0xc763('0x7')]];}}catch(_0x36d85e){utils[_0xc763('0x1a')](util[_0xc763('0x5')]('[%s][recordings][hangup]',_0x2d6699[_0xc763('0x7')]),_0x36d85e);}};exports['newexten']=function(_0x2b1134){try{if(!_[_0xc763('0x16')](recordings[_0x2b1134[_0xc763('0x7')]])){utils[_0xc763('0xd')](util[_0xc763('0x5')]('[%s][recordings][newexten]',_0x2b1134[_0xc763('0x7')]),_0x2b1134);utils[_0xc763('0x4')](util['format'](_0xc763('0x2f'),_0x2b1134[_0xc763('0x7')],_0x2b1134[_0xc763('0x30')],_0x2b1134[_0xc763('0x31')]));if(_0x2b1134['application'][_0xc763('0x32')]()==_0xc763('0x33')&&_[_0xc763('0x34')](_0x2b1134[_0xc763('0x31')][_0xc763('0x32')](),'cdr')){var _0xa08e7a=_0x2b1134[_0xc763('0x31')][_0xc763('0x35')]('=');var _0xb5f769=_0xa08e7a[0x0][_0xc763('0x36')](_0xa08e7a[0x0][_0xc763('0x37')]('(')+0x1,_0xa08e7a[0x0][_0xc763('0x37')](')'));var _0x5be271=_0xa08e7a[0x1];recordings[_0x2b1134[_0xc763('0x7')]][_0xb5f769]=_0x5be271;}}}catch(_0x316d79){utils[_0xc763('0x1a')](util[_0xc763('0x5')]('[%s][recordings][newexten]',_0x2b1134[_0xc763('0x7')]),_0x316d79);}};exports['queuecallerjoin']=function(_0x2e0c30){try{if(!_[_0xc763('0x16')](recordings[_0x2e0c30[_0xc763('0x7')]])){utils[_0xc763('0xd')](util[_0xc763('0x5')](_0xc763('0x38'),_0x2e0c30[_0xc763('0x7')]),_0x2e0c30);utils['info'](util['format']('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x2e0c30[_0xc763('0x7')],_0x2e0c30[_0xc763('0x39')]));recordings[_0x2e0c30[_0xc763('0x7')]][_0xc763('0x39')]=_0x2e0c30[_0xc763('0x39')];}}catch(_0x4b326d){utils[_0xc763('0x1a')](util[_0xc763('0x5')](_0xc763('0x38'),_0x2e0c30['uniqueid']),_0x4b326d);}};exports[_0xc763('0x3a')]=function(_0x175f80){try{utils[_0xc763('0xd')](util[_0xc763('0x5')]('[%s][recordings][blindtransfer]',_0x175f80[_0xc763('0x7')]),_0x175f80);utils[_0xc763('0x4')](util[_0xc763('0x5')](_0xc763('0x3b'),_0x175f80['uniqueid'],_0x175f80['transferercalleridnum'],_0x175f80[_0xc763('0x3c')],_0x175f80[_0xc763('0x3d')],_0x175f80[_0xc763('0x3e')]));if(recordings[_0x175f80[_0xc763('0x3f')]]&&transfers[_0xc763('0x8')][_0x175f80[_0xc763('0x3f')]]){transfers[_0xc763('0x8')][_0x175f80[_0xc763('0x3f')]][_0xc763('0x40')]=!![];}}catch(_0x654d01){utils['error'](util[_0xc763('0x5')]('[%s][recordings][blindtransfer]',_0x175f80[_0xc763('0x7')]),_0x654d01);}};
\ No newline at end of file
+var _0xfe87=['request','CreateVoiceRecording','debug','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','error','[%s][recordings][newstate]','isNil','channelstate','channel','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','hangup','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','application','appdata','toLowerCase','set','cdr','split','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereruniqueid','recording','lodash','util','./utils','./transfers.controller','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','getUserByInternal','accountcode','membername','name','UserId'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xfe87,0x7c));var _0x7fe8=function(_0x59987a,_0x399e11){_0x59987a=_0x59987a-0x0;var _0x460646=_0xfe87[_0x59987a];return _0x460646;};'use strict';var _=require(_0x7fe8('0x0'));var util=require(_0x7fe8('0x1'));var utils=require(_0x7fe8('0x2'));var transfers=require(_0x7fe8('0x3'));var recordings={};function writeDB(_0x3a92b4){var _0x571dcf;utils['info'](util[_0x7fe8('0x4')](_0x7fe8('0x5'),_0x3a92b4[_0x7fe8('0x6')]));if(transfers['blinds'][_0x3a92b4[_0x7fe8('0x6')]]){_0x571dcf=_0x3a92b4[_0x7fe8('0x6')];_0x3a92b4['uniqueid']=transfers[_0x7fe8('0x7')][_0x3a92b4[_0x7fe8('0x6')]][_0x7fe8('0x8')];}if(_0x3a92b4['accountcode']){utils[_0x7fe8('0x9')](_0x3a92b4[_0x7fe8('0xa')])['then'](function(_0x13406c){if(_0x13406c){_0x3a92b4[_0x7fe8('0xb')]=_0x13406c[_0x7fe8('0xc')];_0x3a92b4[_0x7fe8('0xd')]=_0x13406c['id'];}utils[_0x7fe8('0xe')]('CreateVoiceRecording',_0x3a92b4);});}else{utils[_0x7fe8('0xe')](_0x7fe8('0xf'),_0x3a92b4);}if(_0x571dcf)delete transfers[_0x7fe8('0x7')][_0x571dcf];}exports['newchannel']=function(_0x2e576c){try{utils[_0x7fe8('0x10')](util[_0x7fe8('0x4')]('[%s][recordings][newchannel]',_0x2e576c[_0x7fe8('0x6')]),_0x2e576c);if(_0x2e576c['uniqueid']==_0x2e576c[_0x7fe8('0x11')]){utils[_0x7fe8('0x12')](util[_0x7fe8('0x4')](_0x7fe8('0x13'),_0x2e576c[_0x7fe8('0x6')],_0x2e576c[_0x7fe8('0x14')],_0x2e576c['exten']));recordings[_0x2e576c['uniqueid']]={'uniqueid':_0x2e576c[_0x7fe8('0x6')],'accountcode':_0x2e576c[_0x7fe8('0xa')],'exten':_0x2e576c[_0x7fe8('0x15')],'context':_0x2e576c[_0x7fe8('0x14')],'channel':_0x2e576c['channel'],'monitors':[]};}}catch(_0x3f1a63){utils[_0x7fe8('0x16')](util[_0x7fe8('0x4')]('[%s][recordings][newchannel]',_0x2e576c[_0x7fe8('0x6')]),_0x3f1a63);}};exports['newstate']=function(_0x164943){try{utils[_0x7fe8('0x10')](util[_0x7fe8('0x4')](_0x7fe8('0x17'),_0x164943[_0x7fe8('0x6')]),_0x164943);if(!_[_0x7fe8('0x18')](recordings[_0x164943[_0x7fe8('0x6')]])&&_0x164943[_0x7fe8('0x19')]==0x6){utils['info'](util[_0x7fe8('0x4')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x164943[_0x7fe8('0x6')],_0x164943['context'],_0x164943[_0x7fe8('0x1a')]));}else if(!_[_0x7fe8('0x18')](recordings[_0x164943['linkedid']])&&_0x164943[_0x7fe8('0x19')]==0x6&&_0x164943['context']!='transfer'){utils[_0x7fe8('0x12')](util[_0x7fe8('0x4')](_0x7fe8('0x1b'),_0x164943[_0x7fe8('0x6')],_0x164943[_0x7fe8('0x11')],_0x164943[_0x7fe8('0x14')],_0x164943[_0x7fe8('0x1a')]));recordings[_0x164943['linkedid']][_0x7fe8('0xa')]=_0x164943[_0x7fe8('0xa')];}}catch(_0x2b8b7f){utils[_0x7fe8('0x16')](util[_0x7fe8('0x4')](_0x7fe8('0x17'),_0x164943[_0x7fe8('0x6')]),_0x2b8b7f);}};exports[_0x7fe8('0x1c')]=function(_0x17b3e5){try{if(!_[_0x7fe8('0x18')](_0x17b3e5[_0x7fe8('0x1d')])&&!_[_0x7fe8('0x18')](_0x17b3e5['variable']['mixmonitor_filename'])){utils[_0x7fe8('0x10')](util[_0x7fe8('0x4')](_0x7fe8('0x1e'),_0x17b3e5[_0x7fe8('0x6')]),_0x17b3e5);utils[_0x7fe8('0x12')](util[_0x7fe8('0x4')](_0x7fe8('0x1f'),_0x17b3e5['uniqueid'],_0x17b3e5['variable'],_0x17b3e5[_0x7fe8('0x20')]));if(_[_0x7fe8('0x21')](_0x17b3e5[_0x7fe8('0x20')],_0x7fe8('0x22'))){_0x17b3e5[_0x7fe8('0x20')]=_0x17b3e5[_0x7fe8('0x20')][_0x7fe8('0x23')](_0x7fe8('0x22'),_0x7fe8('0x24'));}if(recordings[_0x17b3e5[_0x7fe8('0x11')]]){var _0x382d21=_[_0x7fe8('0x25')](recordings[_0x17b3e5['linkedid']]['monitors'],{'value':_0x17b3e5[_0x7fe8('0x20')]});if(_[_0x7fe8('0x18')](_0x382d21)){recordings[_0x17b3e5['linkedid']][_0x7fe8('0x26')][_0x7fe8('0x27')]({'value':_0x17b3e5[_0x7fe8('0x20')]});}}}}catch(_0x2564fe){utils[_0x7fe8('0x16')](util[_0x7fe8('0x4')](_0x7fe8('0x1e'),_0x17b3e5[_0x7fe8('0x6')]),_0x2564fe);}};exports[_0x7fe8('0x28')]=function(_0x13dc4a){try{if(!_[_0x7fe8('0x18')](recordings[_0x13dc4a[_0x7fe8('0x6')]])){utils[_0x7fe8('0x10')](util[_0x7fe8('0x4')]('[%s][recordings][hangup]',_0x13dc4a[_0x7fe8('0x6')]),_0x13dc4a);utils[_0x7fe8('0x12')](util[_0x7fe8('0x4')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x13dc4a['uniqueid'],_0x13dc4a[_0x7fe8('0x29')],_0x13dc4a[_0x7fe8('0x2a')],_0x13dc4a[_0x7fe8('0x2b')]));recordings[_0x13dc4a[_0x7fe8('0x6')]][_0x7fe8('0x29')]=_0x13dc4a[_0x7fe8('0x29')];recordings[_0x13dc4a[_0x7fe8('0x6')]][_0x7fe8('0x2a')]=_0x13dc4a[_0x7fe8('0x2a')];recordings[_0x13dc4a[_0x7fe8('0x6')]]['connectedlinenum']=_0x13dc4a[_0x7fe8('0x2c')];recordings[_0x13dc4a[_0x7fe8('0x6')]][_0x7fe8('0x2d')]=_0x13dc4a[_0x7fe8('0x2d')];if(recordings[_0x13dc4a['uniqueid']][_0x7fe8('0x2e')]==_0x7fe8('0x2f')&&recordings[_0x13dc4a[_0x7fe8('0x6')]][_0x7fe8('0xa')]){recordings[_0x13dc4a['uniqueid']][_0x7fe8('0x2c')]=recordings[_0x13dc4a[_0x7fe8('0x6')]][_0x7fe8('0xa')];recordings[_0x13dc4a['uniqueid']][_0x7fe8('0x2d')]='';}recordings[_0x13dc4a[_0x7fe8('0x6')]][_0x7fe8('0x26')][_0x7fe8('0x30')](function(_0x1e4cc8){var _0x4b027a=_['clone'](recordings[_0x13dc4a[_0x7fe8('0x6')]]);_0x4b027a[_0x7fe8('0x20')]=_0x1e4cc8[_0x7fe8('0x20')];writeDB(_0x4b027a);});delete recordings[_0x13dc4a[_0x7fe8('0x6')]];}}catch(_0x3c2e0b){utils[_0x7fe8('0x16')](util[_0x7fe8('0x4')]('[%s][recordings][hangup]',_0x13dc4a['uniqueid']),_0x3c2e0b);}};exports[_0x7fe8('0x31')]=function(_0x598d23){try{if(!_['isNil'](recordings[_0x598d23[_0x7fe8('0x6')]])){utils[_0x7fe8('0x10')](util[_0x7fe8('0x4')]('[%s][recordings][newexten]',_0x598d23[_0x7fe8('0x6')]),_0x598d23);utils[_0x7fe8('0x12')](util[_0x7fe8('0x4')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x598d23[_0x7fe8('0x6')],_0x598d23[_0x7fe8('0x32')],_0x598d23[_0x7fe8('0x33')]));if(_0x598d23[_0x7fe8('0x32')][_0x7fe8('0x34')]()==_0x7fe8('0x35')&&_['startsWith'](_0x598d23[_0x7fe8('0x33')][_0x7fe8('0x34')](),_0x7fe8('0x36'))){var _0x332799=_0x598d23[_0x7fe8('0x33')][_0x7fe8('0x37')]('=');var _0x502910=_0x332799[0x0]['substring'](_0x332799[0x0]['lastIndexOf']('(')+0x1,_0x332799[0x0][_0x7fe8('0x38')](')'));var _0x290817=_0x332799[0x1];recordings[_0x598d23[_0x7fe8('0x6')]][_0x502910]=_0x290817;}}}catch(_0x307828){utils[_0x7fe8('0x16')](util[_0x7fe8('0x4')](_0x7fe8('0x39'),_0x598d23[_0x7fe8('0x6')]),_0x307828);}};exports[_0x7fe8('0x3a')]=function(_0x315c7c){try{if(!_[_0x7fe8('0x18')](recordings[_0x315c7c[_0x7fe8('0x6')]])){utils['debug'](util[_0x7fe8('0x4')](_0x7fe8('0x3b'),_0x315c7c[_0x7fe8('0x6')]),_0x315c7c);utils[_0x7fe8('0x12')](util['format'](_0x7fe8('0x3c'),_0x315c7c[_0x7fe8('0x6')],_0x315c7c['queue']));recordings[_0x315c7c['uniqueid']][_0x7fe8('0x3d')]=_0x315c7c[_0x7fe8('0x3d')];}}catch(_0x74237c){utils[_0x7fe8('0x16')](util[_0x7fe8('0x4')](_0x7fe8('0x3b'),_0x315c7c[_0x7fe8('0x6')]),_0x74237c);}};exports[_0x7fe8('0x3e')]=function(_0x13bbc4){try{utils[_0x7fe8('0x10')](util[_0x7fe8('0x4')](_0x7fe8('0x3f'),_0x13bbc4[_0x7fe8('0x6')]),_0x13bbc4);utils[_0x7fe8('0x12')](util[_0x7fe8('0x4')](_0x7fe8('0x40'),_0x13bbc4[_0x7fe8('0x6')],_0x13bbc4['transferercalleridnum'],_0x13bbc4[_0x7fe8('0x41')],_0x13bbc4[_0x7fe8('0x42')],_0x13bbc4['transfereecalleridname']));if(recordings[_0x13bbc4[_0x7fe8('0x43')]]&&transfers[_0x7fe8('0x7')][_0x13bbc4['transfereruniqueid']]){transfers['blinds'][_0x13bbc4[_0x7fe8('0x43')]][_0x7fe8('0x44')]=!![];}}catch(_0x1e40e3){utils['error'](util[_0x7fe8('0x4')](_0x7fe8('0x3f'),_0x13bbc4[_0x7fe8('0x6')]),_0x1e40e3);}};
\ No newline at end of file
index 9ae24f0..2166f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d66=['request','blindtransfer','debug','[%s][transfers][blindtransfer]','transferercalleridnum','transferercalleridname','transfereecalleridnum','blind','blinds','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','util','./utils','info','format','type','attended','origtransfereruniqueid','uniqueid'];(function(_0x454e6d,_0x1e1f38){var _0x4bc294=function(_0x2c803a){while(--_0x2c803a){_0x454e6d['push'](_0x454e6d['shift']());}};_0x4bc294(++_0x1e1f38);}(_0x9d66,0x1b0));var _0x69d6=function(_0x3e0a56,_0x452948){_0x3e0a56=_0x3e0a56-0x0;var _0x3670d7=_0x9d66[_0x3e0a56];return _0x3670d7;};'use strict';var _=require('lodash');var util=require(_0x69d6('0x0'));var utils=require(_0x69d6('0x1'));function writeDB(_0x2492e4){utils[_0x69d6('0x2')](util[_0x69d6('0x3')]('[%s][transfers][writeDB]\x20type:%s',_0x2492e4[_0x69d6('0x4')]===_0x69d6('0x5')?_0x2492e4[_0x69d6('0x6')]:_0x2492e4[_0x69d6('0x7')],_0x2492e4[_0x69d6('0x4')]));utils[_0x69d6('0x8')]('CreateVoiceTransferReport',_0x2492e4);}exports['blinds']={};exports[_0x69d6('0x9')]=function(_0x28a73d){try{utils[_0x69d6('0xa')](util[_0x69d6('0x3')](_0x69d6('0xb'),_0x28a73d[_0x69d6('0x7')]),_0x28a73d);utils[_0x69d6('0x2')](util[_0x69d6('0x3')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x28a73d['uniqueid'],_0x28a73d[_0x69d6('0xc')],_0x28a73d[_0x69d6('0xd')],_0x28a73d[_0x69d6('0xe')],_0x28a73d['transfereecalleridname']));_0x28a73d[_0x69d6('0x4')]=_0x69d6('0xf');exports[_0x69d6('0x10')][_0x28a73d[_0x69d6('0x11')]]=_0x28a73d;writeDB(_0x28a73d);}catch(_0x4384ab){utils[_0x69d6('0x12')](util[_0x69d6('0x3')]('[%s][transfers][blindtransfer]',_0x28a73d[_0x69d6('0x7')]),_0x4384ab);}};exports[_0x69d6('0x13')]=function(_0x114e52){try{utils[_0x69d6('0xa')](util[_0x69d6('0x3')](_0x69d6('0x14'),_0x114e52[_0x69d6('0x6')]),_0x114e52);utils[_0x69d6('0x2')](util[_0x69d6('0x3')](_0x69d6('0x15'),_0x114e52['origtransfereruniqueid'],_0x114e52[_0x69d6('0x16')],_0x114e52[_0x69d6('0x17')],_0x114e52[_0x69d6('0x18')],_0x114e52['transfertargetcalleridname']));_0x114e52=_[_0x69d6('0x19')](_0x114e52,{'transfererchannel':_0x114e52[_0x69d6('0x1a')],'transferercalleridnum':_0x114e52[_0x69d6('0x16')],'transferercalleridname':_0x114e52[_0x69d6('0x17')],'transfererconnectedlinenum':_0x114e52['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x114e52[_0x69d6('0x1b')],'transfereraccountcode':_0x114e52['origtransfereraccountcode'],'transferercontext':_0x114e52[_0x69d6('0x1c')],'transfererexten':_0x114e52[_0x69d6('0x1d')],'transfererlinkedid':_0x114e52[_0x69d6('0x1e')],'context':_0x114e52[_0x69d6('0x1f')],'extension':_0x114e52[_0x69d6('0x20')],'type':_0x69d6('0x5')});if(_[_0x69d6('0x21')](_0x114e52[_0x69d6('0x22')])){_0x114e52=_[_0x69d6('0x19')](_0x114e52,{'transfereechannel':_0x114e52[_0x69d6('0x23')],'transfereecalleridnum':_0x114e52['transfertargetcalleridnum'],'transfereecalleridname':_0x114e52['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x114e52['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x114e52[_0x69d6('0x24')],'transfereeaccountcode':_0x114e52[_0x69d6('0x25')],'transfereecontext':_0x114e52['transfertargetcontext'],'transfereeexten':_0x114e52[_0x69d6('0x26')],'transfereelinkedid':_0x114e52[_0x69d6('0x27')]});}writeDB(_0x114e52);}catch(_0x4a521a){utils[_0x69d6('0x12')](util['format']('[%s][transfers][attendedtransfer]',_0x114e52[_0x69d6('0x6')]),_0x4a521a);}};
\ No newline at end of file
+var _0x2740=['transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','lodash','util','./utils','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','uniqueid','type','request','blindtransfer','debug','format','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','blinds','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','info','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x2740,0x84));var _0x0274=function(_0x430c62,_0x129472){_0x430c62=_0x430c62-0x0;var _0x4ec150=_0x2740[_0x430c62];return _0x4ec150;};'use strict';var _=require(_0x0274('0x0'));var util=require(_0x0274('0x1'));var utils=require(_0x0274('0x2'));function writeDB(_0x54eca1){utils['info'](util['format'](_0x0274('0x3'),_0x54eca1['type']===_0x0274('0x4')?_0x54eca1[_0x0274('0x5')]:_0x54eca1[_0x0274('0x6')],_0x54eca1[_0x0274('0x7')]));utils[_0x0274('0x8')]('CreateVoiceTransferReport',_0x54eca1);}exports['blinds']={};exports[_0x0274('0x9')]=function(_0x479840){try{utils[_0x0274('0xa')](util[_0x0274('0xb')](_0x0274('0xc'),_0x479840[_0x0274('0x6')]),_0x479840);utils['info'](util[_0x0274('0xb')](_0x0274('0xd'),_0x479840[_0x0274('0x6')],_0x479840[_0x0274('0xe')],_0x479840['transferercalleridname'],_0x479840[_0x0274('0xf')],_0x479840[_0x0274('0x10')]));_0x479840[_0x0274('0x7')]=_0x0274('0x11');exports[_0x0274('0x12')][_0x479840[_0x0274('0x13')]]=_0x479840;writeDB(_0x479840);}catch(_0x2d013d){utils[_0x0274('0x14')](util['format'](_0x0274('0xc'),_0x479840[_0x0274('0x6')]),_0x2d013d);}};exports[_0x0274('0x15')]=function(_0x1f18e5){try{utils[_0x0274('0xa')](util[_0x0274('0xb')](_0x0274('0x16'),_0x1f18e5[_0x0274('0x5')]),_0x1f18e5);utils[_0x0274('0x17')](util[_0x0274('0xb')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x1f18e5[_0x0274('0x5')],_0x1f18e5[_0x0274('0x18')],_0x1f18e5['origtransferercalleridname'],_0x1f18e5[_0x0274('0x19')],_0x1f18e5[_0x0274('0x1a')]));_0x1f18e5=_[_0x0274('0x1b')](_0x1f18e5,{'transfererchannel':_0x1f18e5[_0x0274('0x1c')],'transferercalleridnum':_0x1f18e5['origtransferercalleridnum'],'transferercalleridname':_0x1f18e5[_0x0274('0x1d')],'transfererconnectedlinenum':_0x1f18e5[_0x0274('0x1e')],'transfererconnectedlinename':_0x1f18e5['secondtransfererconnectedlinename'],'transfereraccountcode':_0x1f18e5[_0x0274('0x1f')],'transferercontext':_0x1f18e5[_0x0274('0x20')],'transfererexten':_0x1f18e5['secondtransfererexten'],'transfererlinkedid':_0x1f18e5[_0x0274('0x21')],'context':_0x1f18e5[_0x0274('0x22')],'extension':_0x1f18e5[_0x0274('0x23')],'type':'attended'});if(_[_0x0274('0x24')](_0x1f18e5[_0x0274('0x25')])){_0x1f18e5=_[_0x0274('0x1b')](_0x1f18e5,{'transfereechannel':_0x1f18e5[_0x0274('0x26')],'transfereecalleridnum':_0x1f18e5[_0x0274('0x19')],'transfereecalleridname':_0x1f18e5[_0x0274('0x1a')],'transfereeconnectedlinenum':_0x1f18e5[_0x0274('0x27')],'transfereeconnectedlinename':_0x1f18e5[_0x0274('0x28')],'transfereeaccountcode':_0x1f18e5[_0x0274('0x29')],'transfereecontext':_0x1f18e5[_0x0274('0x2a')],'transfereeexten':_0x1f18e5['transfertargetexten'],'transfereelinkedid':_0x1f18e5['transfertargetlinkedid']});}writeDB(_0x1f18e5);}catch(_0x460543){utils[_0x0274('0x14')](util[_0x0274('0xb')](_0x0274('0x16'),_0x1f18e5['origtransfereruniqueid']),_0x460543);}};
\ No newline at end of file
index a371af9..bf3f019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd087=['acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','client','http','../../config/logger','info','debug','inspect','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','GetVoiceQueue','acw'];(function(_0x4ec4fc,_0x20b18f){var _0x4e0f4d=function(_0x26d86b){while(--_0x26d86b){_0x4ec4fc['push'](_0x4ec4fc['shift']());}};_0x4e0f4d(++_0x20b18f);}(_0xd087,0x6f));var _0x7d08=function(_0x15fa77,_0x93eaff){_0x15fa77=_0x15fa77-0x0;var _0x1385ff=_0xd087[_0x15fa77];return _0x1385ff;};'use strict';var BPromise=require(_0x7d08('0x0'));var jayson=require(_0x7d08('0x1'));var moment=require(_0x7d08('0x2'));var util=require('util');var client=jayson[_0x7d08('0x3')][_0x7d08('0x4')]({'port':0x2329});var logger=require(_0x7d08('0x5'))('xdr');exports[_0x7d08('0x6')]=function(_0x2857c3,_0x1b8ff7){logger[_0x7d08('0x6')](_0x2857c3,_0x1b8ff7?util['inspect'](_0x1b8ff7,{'showHidden':![],'depth':null}):'');};exports[_0x7d08('0x7')]=function(_0x3fb708,_0x378e97){logger[_0x7d08('0x7')](_0x3fb708,_0x378e97?util[_0x7d08('0x8')](_0x378e97,{'showHidden':![],'depth':null}):'');};exports[_0x7d08('0x9')]=function(_0x5cd752,_0x2c5952){logger[_0x7d08('0x9')](_0x5cd752,_0x2c5952?util['inspect'](_0x2c5952,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x472a43,_0x45bd17){return client[_0x7d08('0xa')](_0x472a43,{'body':_0x45bd17})[_0x7d08('0xb')](function(_0x69f0b9){logger['debug'](_0x7d08('0xc'),_0x472a43,_0x69f0b9?util[_0x7d08('0x8')](_0x69f0b9,{'showHidden':![],'depth':null}):'');})[_0x7d08('0xd')](function(_0x51a01e){logger[_0x7d08('0x9')](_0x7d08('0xc'),_0x472a43,_0x51a01e?util[_0x7d08('0x8')](_0x51a01e,{'showHidden':![],'depth':null}):'');});};function getUser(_0x560863){return client[_0x7d08('0xa')](_0x7d08('0xe'),{'options':{'raw':!![],'attributes':['id',_0x7d08('0xf'),_0x7d08('0x10'),_0x7d08('0x11')],'where':_0x560863,'limit':0x1}})[_0x7d08('0xb')](function(_0x13cd63){logger['debug'](_0x7d08('0x12'),JSON[_0x7d08('0x13')](_0x560863),_0x13cd63?util[_0x7d08('0x8')](_0x13cd63,{'showHidden':![],'depth':null}):'');return _0x13cd63[_0x7d08('0x14')]['length']?_0x13cd63[_0x7d08('0x14')][0x0]:null;});}exports[_0x7d08('0x15')]=function(_0x2d58ed){return new BPromise(function(_0x39f667,_0x156811){if(_0x2d58ed){return getUser({'internal':_0x2d58ed})[_0x7d08('0xb')](function(_0x2baf28){logger[_0x7d08('0x6')](_0x7d08('0x16'),_0x2d58ed,_0x2baf28?_0x7d08('0x17'):_0x7d08('0x18'));return _0x39f667(_0x2baf28);})[_0x7d08('0xd')](function(_0x22152e){logger['error'](_0x7d08('0x19'),_0x22152e?util[_0x7d08('0x8')](_0x22152e,{'showHidden':![],'depth':null}):'');return _0x39f667(null);});}return _0x39f667(null);});};exports[_0x7d08('0x1a')]=function(_0xc9ae65){return new BPromise(function(_0x1ae4ae,_0x4277ba){if(_0xc9ae65){return getUser({'interface':_0xc9ae65})[_0x7d08('0xb')](function(_0x436e88){logger[_0x7d08('0x6')](_0x7d08('0x1b'),_0xc9ae65,_0x436e88?_0x7d08('0x17'):'notfound');return _0x1ae4ae(_0x436e88);})[_0x7d08('0xd')](function(_0x14c852){logger['error']('[utils][getUserByInterface]',_0x14c852?util[_0x7d08('0x8')](_0x14c852,{'showHidden':![],'depth':null}):'');return _0x1ae4ae(null);});}return _0x1ae4ae(null);});};exports[_0x7d08('0x1c')]=function(_0x16537c){return new BPromise(function(_0x5517b9,_0x1d776a){if(_0x16537c){return getUser({'name':_0x16537c})['then'](function(_0x2fbb30){logger[_0x7d08('0x6')](_0x7d08('0x1d'),_0x16537c,_0x2fbb30?_0x7d08('0x17'):_0x7d08('0x18'));return _0x5517b9(_0x2fbb30);})[_0x7d08('0xd')](function(_0x2842f8){logger['error']('[utils][getUserByName]',_0x2842f8?util[_0x7d08('0x8')](_0x2842f8,{'showHidden':![],'depth':null}):'');return _0x5517b9(null);});}return _0x5517b9(null);});};exports[_0x7d08('0x1e')]=function(_0x1fc461){return new BPromise(function(_0x5393c7,_0x4238f2){if(_0x1fc461){return client['request'](_0x7d08('0x1f'),{'options':{'raw':!![],'attributes':['id',_0x7d08('0x10'),'type',_0x7d08('0x20'),_0x7d08('0x21')],'where':{'name':_0x1fc461},'limit':0x1}})[_0x7d08('0xb')](function(_0x5520c6){logger[_0x7d08('0x7')](_0x7d08('0x22'),_0x1fc461,_0x5520c6?util[_0x7d08('0x8')](_0x5520c6,{'showHidden':![],'depth':null}):'');logger[_0x7d08('0x6')](_0x7d08('0x23'),_0x1fc461,_0x5520c6?_0x7d08('0x17'):_0x7d08('0x18'));return _0x5393c7(_0x5520c6[_0x7d08('0x14')]['length']?_0x5520c6[_0x7d08('0x14')][0x0]:null);})[_0x7d08('0xd')](function(_0xd6f63c){logger[_0x7d08('0x9')](_0x7d08('0x24'),_0xd6f63c?util[_0x7d08('0x8')](_0xd6f63c,{'showHidden':![],'depth':null}):'');return _0x5393c7(null);});}return _0x5393c7(null);});};exports[_0x7d08('0x25')]=function(_0x523d3c,_0x7a6b43){return moment(_0x523d3c)['add'](_0x7a6b43,_0x7d08('0x26'))[_0x7d08('0x27')](_0x7d08('0x28'));};exports[_0x7d08('0x29')]=function(_0x660eac,_0x56bd35){return moment(_0x660eac)[_0x7d08('0x2a')](_0x56bd35,_0x7d08('0x26'))[_0x7d08('0x27')](_0x7d08('0x28'));};exports['diffTime']=function(_0x5b5825,_0x2fb552){return moment(_0x5b5825)[_0x7d08('0x2b')](moment(_0x2fb552),_0x7d08('0x26'));};exports[_0x7d08('0x2c')]=function(_0x289060,_0x5011ea){return parseInt(_0x289060,0xa)+parseInt(_0x5011ea,0xa);};exports[_0x7d08('0x2d')]=function(){return moment()[_0x7d08('0x27')](_0x7d08('0x28'));};exports[_0x7d08('0x2e')]=function(_0x522e1b,_0x5eddee){if(_0x5eddee){return moment(_0x522e1b)[_0x7d08('0x2e')](_0x5eddee);}return!![];};exports['isBefore']=function(_0xda13e5,_0x367772){if(_0x367772){return moment(_0xda13e5)[_0x7d08('0x2f')](_0x367772);}else if(_0xda13e5){return!![];}return![];};
\ No newline at end of file
+var _0x4771=['then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','found','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','notfound','[utils][getUserByName]\x20name:%s\x20%s','GetVoiceQueue','type','acw','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','addTime','format','subtractTime','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','http','xdr','info','debug','inspect','error','request'];(function(_0x10074b,_0x5064db){var _0x252822=function(_0x3c6a10){while(--_0x3c6a10){_0x10074b['push'](_0x10074b['shift']());}};_0x252822(++_0x5064db);}(_0x4771,0x1d9));var _0x1477=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x4771[_0x5f3f88];return _0xd08119;};'use strict';var BPromise=require(_0x1477('0x0'));var jayson=require(_0x1477('0x1'));var moment=require(_0x1477('0x2'));var util=require(_0x1477('0x3'));var client=jayson['client'][_0x1477('0x4')]({'port':0x2329});var logger=require('../../config/logger')(_0x1477('0x5'));exports[_0x1477('0x6')]=function(_0x1730f1,_0x196313){logger[_0x1477('0x6')](_0x1730f1,_0x196313?util['inspect'](_0x196313,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x5abd38,_0x10d965){logger[_0x1477('0x7')](_0x5abd38,_0x10d965?util[_0x1477('0x8')](_0x10d965,{'showHidden':![],'depth':null}):'');};exports[_0x1477('0x9')]=function(_0x3d375b,_0x49049b){logger[_0x1477('0x9')](_0x3d375b,_0x49049b?util[_0x1477('0x8')](_0x49049b,{'showHidden':![],'depth':null}):'');};exports[_0x1477('0xa')]=function(_0x54e166,_0x40f8c6){return client['request'](_0x54e166,{'body':_0x40f8c6})[_0x1477('0xb')](function(_0x50a87b){logger[_0x1477('0x7')](_0x1477('0xc'),_0x54e166,_0x50a87b?util[_0x1477('0x8')](_0x50a87b,{'showHidden':![],'depth':null}):'');})[_0x1477('0xd')](function(_0x2f4bd0){logger[_0x1477('0x9')](_0x1477('0xc'),_0x54e166,_0x2f4bd0?util['inspect'](_0x2f4bd0,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4d9dec){return client[_0x1477('0xa')](_0x1477('0xe'),{'options':{'raw':!![],'attributes':['id',_0x1477('0xf'),_0x1477('0x10'),_0x1477('0x11')],'where':_0x4d9dec,'limit':0x1}})[_0x1477('0xb')](function(_0x2d5ab0){logger[_0x1477('0x7')](_0x1477('0x12'),JSON[_0x1477('0x13')](_0x4d9dec),_0x2d5ab0?util[_0x1477('0x8')](_0x2d5ab0,{'showHidden':![],'depth':null}):'');return _0x2d5ab0[_0x1477('0x14')]['length']?_0x2d5ab0[_0x1477('0x14')][0x0]:null;});}exports[_0x1477('0x15')]=function(_0x1d3a3a){return new BPromise(function(_0x1db44c,_0x174ff4){if(_0x1d3a3a){return getUser({'internal':_0x1d3a3a})[_0x1477('0xb')](function(_0x248f73){logger[_0x1477('0x6')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x1d3a3a,_0x248f73?_0x1477('0x16'):'notfound');return _0x1db44c(_0x248f73);})[_0x1477('0xd')](function(_0x5c7b42){logger[_0x1477('0x9')](_0x1477('0x17'),_0x5c7b42?util['inspect'](_0x5c7b42,{'showHidden':![],'depth':null}):'');return _0x1db44c(null);});}return _0x1db44c(null);});};exports[_0x1477('0x18')]=function(_0x5f4cf5){return new BPromise(function(_0x5c15ed,_0x265b35){if(_0x5f4cf5){return getUser({'interface':_0x5f4cf5})[_0x1477('0xb')](function(_0x424ec4){logger[_0x1477('0x6')](_0x1477('0x19'),_0x5f4cf5,_0x424ec4?'found':_0x1477('0x1a'));return _0x5c15ed(_0x424ec4);})[_0x1477('0xd')](function(_0x352808){logger[_0x1477('0x9')]('[utils][getUserByInterface]',_0x352808?util['inspect'](_0x352808,{'showHidden':![],'depth':null}):'');return _0x5c15ed(null);});}return _0x5c15ed(null);});};exports['getUserByName']=function(_0x32d7d0){return new BPromise(function(_0x28559f,_0xe6c243){if(_0x32d7d0){return getUser({'name':_0x32d7d0})['then'](function(_0x2cc9af){logger[_0x1477('0x6')](_0x1477('0x1b'),_0x32d7d0,_0x2cc9af?_0x1477('0x16'):_0x1477('0x1a'));return _0x28559f(_0x2cc9af);})['catch'](function(_0x43ad8d){logger[_0x1477('0x9')]('[utils][getUserByName]',_0x43ad8d?util['inspect'](_0x43ad8d,{'showHidden':![],'depth':null}):'');return _0x28559f(null);});}return _0x28559f(null);});};exports['getVoiceQueueByName']=function(_0x38b948){return new BPromise(function(_0x7cfa42,_0xc0dd69){if(_0x38b948){return client[_0x1477('0xa')](_0x1477('0x1c'),{'options':{'raw':!![],'attributes':['id','name',_0x1477('0x1d'),_0x1477('0x1e'),'acwTimeout'],'where':{'name':_0x38b948},'limit':0x1}})['then'](function(_0x5aea66){logger[_0x1477('0x7')](_0x1477('0x1f'),_0x38b948,_0x5aea66?util[_0x1477('0x8')](_0x5aea66,{'showHidden':![],'depth':null}):'');logger[_0x1477('0x6')](_0x1477('0x20'),_0x38b948,_0x5aea66?_0x1477('0x16'):_0x1477('0x1a'));return _0x7cfa42(_0x5aea66[_0x1477('0x14')]['length']?_0x5aea66[_0x1477('0x14')][0x0]:null);})[_0x1477('0xd')](function(_0x80fe64){logger[_0x1477('0x9')]('[utils][getVoiceQueueByName]',_0x80fe64?util[_0x1477('0x8')](_0x80fe64,{'showHidden':![],'depth':null}):'');return _0x7cfa42(null);});}return _0x7cfa42(null);});};exports[_0x1477('0x21')]=function(_0x369104,_0x3c73c8){return moment(_0x369104)['add'](_0x3c73c8,'seconds')[_0x1477('0x22')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x1477('0x23')]=function(_0x45c981,_0x205691){return moment(_0x45c981)[_0x1477('0x24')](_0x205691,_0x1477('0x25'))[_0x1477('0x22')](_0x1477('0x26'));};exports['diffTime']=function(_0x1bdd22,_0x2c5fdb){return moment(_0x1bdd22)[_0x1477('0x27')](moment(_0x2c5fdb),_0x1477('0x25'));};exports[_0x1477('0x28')]=function(_0x3649d0,_0x3e699a){return parseInt(_0x3649d0,0xa)+parseInt(_0x3e699a,0xa);};exports[_0x1477('0x29')]=function(){return moment()['format'](_0x1477('0x26'));};exports[_0x1477('0x2a')]=function(_0x419f0e,_0x3ca7f8){if(_0x3ca7f8){return moment(_0x419f0e)['isAfter'](_0x3ca7f8);}return!![];};exports['isBefore']=function(_0x39643d,_0x168ab7){if(_0x168ab7){return moment(_0x39643d)[_0x1477('0x2b')](_0x168ab7);}else if(_0x39643d){return!![];}return![];};
\ No newline at end of file
index 8c63a44..6066b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x874d=['safeTemplate','maskSensitiveData','/var','log','join','name','ensureDir','then','client','user','timestamp','catch','error','api','auth','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','format','headers','x-forwarded-for','connection','remoteAddress','url','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','method','statusCode','other','agent_name','test','setupLoggers','fs-extra','lodash','path','util','./loggers'];(function(_0x1f88d4,_0x3f2a9c){var _0x31970d=function(_0x439a8a){while(--_0x439a8a){_0x1f88d4['push'](_0x1f88d4['shift']());}};_0x31970d(++_0x3f2a9c);}(_0x874d,0x187));var _0xd874=function(_0x175e89,_0x20835f){_0x175e89=_0x175e89-0x0;var _0x2ed996=_0x874d[_0x175e89];return _0x2ed996;};var fs=require(_0xd874('0x0'));var _=require(_0xd874('0x1'));var ewinston=require('express-winston');var path=require(_0xd874('0x2'));var util=require(_0xd874('0x3'));var fileLogger=require(_0xd874('0x4'))['fileLogger'];var safeTemplate=require('./safe-template')[_0xd874('0x5')];var maskSensitiveData=require('./mask-sensitive-data')[_0xd874('0x6')];function ClientSideLogger(){function _0x436f60(_0x4a4108){var _0x2999a9=path['join'](_0xd874('0x7'),_0xd874('0x8'),'xcally');var _0x59ea39=path[_0xd874('0x9')]('client',_0x4a4108['role']+'-'+_0x4a4108[_0xd874('0xa')]);return fs[_0xd874('0xb')](path[_0xd874('0x9')](_0x2999a9,_0x59ea39))[_0xd874('0xc')](function(){var _0x2286e4=fileLogger(_0xd874('0xd'),path['join'](_0x2999a9,_0x59ea39));return _0x2286e4;})['catch'](function(_0x1c954d){throw _0x1c954d;});}this[_0xd874('0x8')]=function(_0x54f430,_0x34ebb7,_0x5bcbc2,_0x261058){return _0x436f60(_0x54f430[_0xd874('0xe')])[_0xd874('0xc')](function(_0x1ea2f9){var _0x47d5ed=_0x1ea2f9[_0x34ebb7];return _0x47d5ed;})['then'](function(_0x5ccaae){var _0x399761=_0x54f430[_0xd874('0xe')]?_0x54f430[_0xd874('0xe')]['id']:'no-user';var _0x17e235=_0x261058['data'];var _0x4d7780=_0x261058[_0xd874('0xf')];var _0x5cbfa9=new Date(Number(_0x4d7780));return _0x5ccaae(_0x399761,_0x5cbfa9,_0x5bcbc2,_0x17e235);})[_0xd874('0x10')](function(_0x20821e){fileLogger('client')[_0xd874('0x11')](_0x20821e);});};}function setupLoggers(_0x1704d2){return new Promise(function(_0x5309fc){var _0x33a32a=new ClientSideLogger();var _0xb05060=fileLogger(_0xd874('0x12'));var _0x6f2aa3=fileLogger(_0xd874('0x13'));_0x1704d2['set'](_0xd874('0x14'),_0x33a32a);_0x1704d2[_0xd874('0x15')](ewinston[_0xd874('0x16')]({'winstonInstance':_0xb05060,'meta':![],'statusLevels':!![],'msg':function(_0x405908,_0x2de829){var _0x53baba=_0xd874('0x17');if(!_[_0xd874('0x18')](_0x405908['body'])){_0x53baba+='\x20body=%s';var _0xa2308e=_0x405908[_0xd874('0x19')];maskSensitiveData(_0xa2308e);}return safeTemplate(util[_0xd874('0x1a')](_0x53baba,_0x405908['method'],_0x405908[_0xd874('0x1b')][_0xd874('0x1c')]?_0x405908[_0xd874('0x1b')][_0xd874('0x1c')]:_0x405908[_0xd874('0x1d')][_0xd874('0x1e')]||_0x405908['ip'],_0x405908[_0xd874('0x1f')],_0x2de829['statusCode'],_0x2de829['responseTime'],_0x405908[_0xd874('0xe')]?_0x405908[_0xd874('0xe')]['id']:null,_0x405908[_0xd874('0xe')]?_0x405908['user'][_0xd874('0xa')]:null,_0x405908[_0xd874('0xe')]?_0x405908[_0xd874('0xe')][_0xd874('0x20')]:null,_0xa2308e?util[_0xd874('0x21')](_0xa2308e,![],null):''));}}));_0x1704d2[_0xd874('0x15')](ewinston['logger']({'winstonInstance':_0x6f2aa3,'meta':![],'statusLevels':!![],'msg':function(_0x5c180e,_0x4a1d5d){var _0x2084f1=_0xd874('0x22');if(_0x5c180e['body']&&_0x5c180e[_0xd874('0x19')][_0xd874('0x23')]&&_0x5c180e['body'][_0xd874('0x24')]){_0x2084f1=_0xd874('0x25');}return util['format'](_0x2084f1,_0x5c180e[_0xd874('0x26')],_0x5c180e[_0xd874('0x1b')][_0xd874('0x1c')]?_0x5c180e[_0xd874('0x1b')][_0xd874('0x1c')]:_0x5c180e[_0xd874('0x1d')][_0xd874('0x1e')]||_0x5c180e['ip'],_0x5c180e[_0xd874('0x1f')],_0x4a1d5d[_0xd874('0x27')],_0x4a1d5d['responseTime'],_0x5c180e[_0xd874('0xe')]?_0x5c180e[_0xd874('0xe')]['id']:null,_0x5c180e[_0xd874('0xe')]?_0x5c180e[_0xd874('0xe')][_0xd874('0xa')]:null,_0x5c180e['user']?_0x5c180e[_0xd874('0xe')]['role']:null,_0x5c180e[_0xd874('0x19')]&&_0x5c180e[_0xd874('0x19')][_0xd874('0x23')]?_0x5c180e['body'][_0xd874('0x23')]:_0xd874('0x28'),_0x5c180e[_0xd874('0x19')]&&_0x5c180e['body'][_0xd874('0x24')]?_0x5c180e[_0xd874('0x19')][_0xd874('0x24')]:'',_0x5c180e[_0xd874('0x19')]&&_0x5c180e[_0xd874('0x19')][_0xd874('0x29')]?_0x5c180e['body'][_0xd874('0x29')]:'');},'ignoreRoute':function(_0x2f93e8){var _0x521125=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x521125[_0xd874('0x2a')](_0x2f93e8['url']);}}));return _0x5309fc();});}exports[_0xd874('0x2b')]=setupLoggers;
\ No newline at end of file
+var _0xa099=['express-winston','path','./loggers','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','/var','log','xcally','join','name','ensureDir','catch','user','then','no-user','data','client','api','auth','client-side-logger','logger','isEmpty','body','format','method','x-forwarded-for','headers','connection','remoteAddress','url','responseTime','role','inspect','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','statusCode','device','agent_name','setupLoggers','fs-extra'];(function(_0xb68190,_0x2da4f9){var _0x5885f6=function(_0x5a4797){while(--_0x5a4797){_0xb68190['push'](_0xb68190['shift']());}};_0x5885f6(++_0x2da4f9);}(_0xa099,0x18b));var _0x9a09=function(_0x1f220e,_0x3a9cdc){_0x1f220e=_0x1f220e-0x0;var _0x930f26=_0xa099[_0x1f220e];return _0x930f26;};var fs=require(_0x9a09('0x0'));var _=require('lodash');var ewinston=require(_0x9a09('0x1'));var path=require(_0x9a09('0x2'));var util=require('util');var fileLogger=require(_0x9a09('0x3'))['fileLogger'];var safeTemplate=require(_0x9a09('0x4'))[_0x9a09('0x5')];var maskSensitiveData=require(_0x9a09('0x6'))[_0x9a09('0x7')];function ClientSideLogger(){function _0x72b098(_0x4e31a7){var _0x37b293=path['join'](_0x9a09('0x8'),_0x9a09('0x9'),_0x9a09('0xa'));var _0xcee9f1=path[_0x9a09('0xb')]('client',_0x4e31a7['role']+'-'+_0x4e31a7[_0x9a09('0xc')]);return fs[_0x9a09('0xd')](path[_0x9a09('0xb')](_0x37b293,_0xcee9f1))['then'](function(){var _0x3cd799=fileLogger('client',path['join'](_0x37b293,_0xcee9f1));return _0x3cd799;})[_0x9a09('0xe')](function(_0x59071f){throw _0x59071f;});}this['log']=function(_0x1684e8,_0x3c4a73,_0x5928e1,_0x4d6aeb){return _0x72b098(_0x1684e8[_0x9a09('0xf')])['then'](function(_0x1e9ce3){var _0x26f4f0=_0x1e9ce3[_0x3c4a73];return _0x26f4f0;})[_0x9a09('0x10')](function(_0x31a82b){var _0x556ad6=_0x1684e8[_0x9a09('0xf')]?_0x1684e8[_0x9a09('0xf')]['id']:_0x9a09('0x11');var _0x81f0b9=_0x4d6aeb[_0x9a09('0x12')];var _0x54078a=_0x4d6aeb['timestamp'];var _0x4fe198=new Date(Number(_0x54078a));return _0x31a82b(_0x556ad6,_0x4fe198,_0x5928e1,_0x81f0b9);})['catch'](function(_0x376a86){fileLogger(_0x9a09('0x13'))['error'](_0x376a86);});};}function setupLoggers(_0x1811e6){return new Promise(function(_0x19d378){var _0x3e30cb=new ClientSideLogger();var _0x361b8b=fileLogger(_0x9a09('0x14'));var _0x54cdb8=fileLogger(_0x9a09('0x15'));_0x1811e6['set'](_0x9a09('0x16'),_0x3e30cb);_0x1811e6['use'](ewinston[_0x9a09('0x17')]({'winstonInstance':_0x361b8b,'meta':![],'statusLevels':!![],'msg':function(_0x295482,_0x446b38){var _0x57dd03='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x9a09('0x18')](_0x295482[_0x9a09('0x19')])){_0x57dd03+='\x20body=%s';var _0x267787=_0x295482[_0x9a09('0x19')];maskSensitiveData(_0x267787);}return safeTemplate(util[_0x9a09('0x1a')](_0x57dd03,_0x295482[_0x9a09('0x1b')],_0x295482['headers'][_0x9a09('0x1c')]?_0x295482[_0x9a09('0x1d')][_0x9a09('0x1c')]:_0x295482[_0x9a09('0x1e')][_0x9a09('0x1f')]||_0x295482['ip'],_0x295482[_0x9a09('0x20')],_0x446b38['statusCode'],_0x446b38[_0x9a09('0x21')],_0x295482['user']?_0x295482[_0x9a09('0xf')]['id']:null,_0x295482[_0x9a09('0xf')]?_0x295482['user'][_0x9a09('0xc')]:null,_0x295482[_0x9a09('0xf')]?_0x295482[_0x9a09('0xf')][_0x9a09('0x22')]:null,_0x267787?util[_0x9a09('0x23')](_0x267787,![],null):''));}}));_0x1811e6[_0x9a09('0x24')](ewinston['logger']({'winstonInstance':_0x54cdb8,'meta':![],'statusLevels':!![],'msg':function(_0x9c97b8,_0x1afb62){var _0x14196a=_0x9a09('0x25');if(_0x9c97b8[_0x9a09('0x19')]&&_0x9c97b8[_0x9a09('0x19')]['device']&&_0x9c97b8['body'][_0x9a09('0x26')]){_0x14196a=_0x9a09('0x27');}return util[_0x9a09('0x1a')](_0x14196a,_0x9c97b8[_0x9a09('0x1b')],_0x9c97b8[_0x9a09('0x1d')][_0x9a09('0x1c')]?_0x9c97b8[_0x9a09('0x1d')]['x-forwarded-for']:_0x9c97b8[_0x9a09('0x1e')][_0x9a09('0x1f')]||_0x9c97b8['ip'],_0x9c97b8[_0x9a09('0x20')],_0x1afb62[_0x9a09('0x28')],_0x1afb62[_0x9a09('0x21')],_0x9c97b8[_0x9a09('0xf')]?_0x9c97b8[_0x9a09('0xf')]['id']:null,_0x9c97b8['user']?_0x9c97b8[_0x9a09('0xf')]['name']:null,_0x9c97b8[_0x9a09('0xf')]?_0x9c97b8[_0x9a09('0xf')][_0x9a09('0x22')]:null,_0x9c97b8['body']&&_0x9c97b8[_0x9a09('0x19')][_0x9a09('0x29')]?_0x9c97b8[_0x9a09('0x19')][_0x9a09('0x29')]:'other',_0x9c97b8[_0x9a09('0x19')]&&_0x9c97b8[_0x9a09('0x19')][_0x9a09('0x26')]?_0x9c97b8[_0x9a09('0x19')]['agent_id']:'',_0x9c97b8[_0x9a09('0x19')]&&_0x9c97b8[_0x9a09('0x19')][_0x9a09('0x2a')]?_0x9c97b8[_0x9a09('0x19')][_0x9a09('0x2a')]:'');},'ignoreRoute':function(_0x372d39){var _0x38e9c0=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x38e9c0['test'](_0x372d39[_0x9a09('0x20')]);}}));return _0x19d378();});}exports[_0x9a09('0x2b')]=setupLoggers;
\ No newline at end of file
index 02576f7..c942f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b50=['moment','winston','debugLevel','bold\x20yellow','white','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','join','format','%s-%s.log','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','}}}','keys','meta','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','toUpperCase','Logger','transports','Console','warn','File','error','%s-%s','consoleLogger','fileLogger','path','util'];(function(_0x257725,_0x5df6e9){var _0x14b3fd=function(_0x1d3723){while(--_0x1d3723){_0x257725['push'](_0x257725['shift']());}};_0x14b3fd(++_0x5df6e9);}(_0x6b50,0x14b));var _0x06b5=function(_0x54119a,_0x4d2e75){_0x54119a=_0x54119a-0x0;var _0x16124e=_0x6b50[_0x54119a];return _0x16124e;};'use strict';var path=require(_0x06b5('0x0'));var util=require(_0x06b5('0x1'));var moment=require(_0x06b5('0x2'));var winston=require(_0x06b5('0x3'));var config=require('../config/environment');var debugLevel=config[_0x06b5('0x4')]?config[_0x06b5('0x4')]['toLowerCase']():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':'redBG\x20white','error':'red','warn':_0x06b5('0x5'),'info':_0x06b5('0x6'),'print':'bold\x20white','success':'bold\x20green','http':_0x06b5('0x7'),'verbose':_0x06b5('0x8'),'debug':_0x06b5('0x9'),'silly':_0x06b5('0xa')};winston[_0x06b5('0xb')](XC_LOG_COLORS);function getLogFileName(_0x119db5,_0x55d27c,_0x555b2e){var _0x1df441=_0x119db5||'/var/log/xcally';return path[_0x06b5('0xc')](_0x1df441,util[_0x06b5('0xd')](_0x06b5('0xe'),_0x55d27c,_0x555b2e));}function formatter(_0x3f35ad,_0x156d0c){_0x156d0c[_0x06b5('0xf')]=_0x156d0c[_0x06b5('0xf')][_0x06b5('0x10')](/@@{/g,_0x06b5('0x11'))[_0x06b5('0x10')](/}@@/g,'}}}')[_0x06b5('0x10')](/@{/g,'{{')[_0x06b5('0x10')](/}@/g,'}}');return util[_0x06b5('0xd')](_0x06b5('0x12'),moment()[_0x06b5('0xd')](_0x06b5('0x13')),_0x156d0c[_0x06b5('0x14')]['toUpperCase'](),_0x3f35ad,_0x156d0c['message']);}function fileFormat(_0x220298,_0xc5cec4){_0xc5cec4[_0x06b5('0xf')]=_0xc5cec4['message']['replace'](/@@{/g,_0x06b5('0x11'))['replace'](/}@@/g,_0x06b5('0x15'))[_0x06b5('0x10')](/@{/g,'{{')[_0x06b5('0x10')](/}@/g,'}}');var _0x2b70a2=_0xc5cec4['meta']&&Object[_0x06b5('0x16')](_0xc5cec4[_0x06b5('0x17')])[_0x06b5('0x18')]?'\x0a\x09'+JSON[_0x06b5('0x19')](_0xc5cec4[_0x06b5('0x17')]):'';return util[_0x06b5('0xd')](_0x06b5('0x1a'),moment()[_0x06b5('0xd')](_0x06b5('0x13')),_0xc5cec4['level'][_0x06b5('0x1b')](),_0x220298,_0xc5cec4[_0x06b5('0xf')],_0x2b70a2);}function consoleLogger(){var _0x4cd98e=new winston[(_0x06b5('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x06b5('0x1d'))][(_0x06b5('0x1e'))]({'level':_0x06b5('0x1f'),'json':![],'formatter':function(_0x43531a){return formatter('',_0x43531a);}})]});return _0x4cd98e;}function fileLogger(_0x2a79df,_0x3fdebc){var _0x2119b7=new winston[(_0x06b5('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x06b5('0x1d'))][(_0x06b5('0x20'))]({'name':util[_0x06b5('0xd')]('%s-%s',_0x2a79df,_0x06b5('0x21')),'filename':getLogFileName(_0x3fdebc,_0x2a79df,_0x06b5('0x21')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5749af){return fileFormat(_0x2a79df,_0x5749af);}}),new winston['transports'][(_0x06b5('0x20'))]({'name':util[_0x06b5('0xd')](_0x06b5('0x22'),_0x2a79df,debugLevel),'filename':getLogFileName(_0x3fdebc,_0x2a79df,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3ae574){return fileFormat(_0x2a79df,_0x3ae574);}}),new winston[(_0x06b5('0x1d'))]['Console']({'level':_0x06b5('0x1f'),'json':![],'formatter':function(_0x42cf61){return fileFormat(_0x2a79df,_0x42cf61);}})]});return _0x2119b7;}exports[_0x06b5('0x23')]=consoleLogger;exports[_0x06b5('0x24')]=fileLogger;
\ No newline at end of file
+var _0x6815=['redBG\x20white','red','bold\x20yellow','bold\x20white','bold\x20green','bold\x20magenta','bold\x20blue','bold\x20cyan','join','format','%s-%s.log','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','meta','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','warn','error','File','%s-%s','Console','consoleLogger','moment','winston','../config/environment','debugLevel'];(function(_0x14625d,_0x5a7037){var _0x36c95c=function(_0x27b8f6){while(--_0x27b8f6){_0x14625d['push'](_0x14625d['shift']());}};_0x36c95c(++_0x5a7037);}(_0x6815,0x194));var _0x5681=function(_0x4eaf70,_0x272911){_0x4eaf70=_0x4eaf70-0x0;var _0x66143e=_0x6815[_0x4eaf70];return _0x66143e;};'use strict';var path=require('path');var util=require('util');var moment=require(_0x5681('0x0'));var winston=require(_0x5681('0x1'));var config=require(_0x5681('0x2'));var debugLevel=config[_0x5681('0x3')]?config[_0x5681('0x3')]['toLowerCase']():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0x5681('0x4'),'error':_0x5681('0x5'),'warn':_0x5681('0x6'),'info':'white','print':_0x5681('0x7'),'success':_0x5681('0x8'),'http':'gray','verbose':_0x5681('0x9'),'debug':_0x5681('0xa'),'silly':_0x5681('0xb')};winston['addColors'](XC_LOG_COLORS);function getLogFileName(_0x292bd6,_0x5c7749,_0x3533a5){var _0x1de2d8=_0x292bd6||'/var/log/xcally';return path[_0x5681('0xc')](_0x1de2d8,util[_0x5681('0xd')](_0x5681('0xe'),_0x5c7749,_0x3533a5));}function formatter(_0x29524a,_0x46a05f){_0x46a05f[_0x5681('0xf')]=_0x46a05f[_0x5681('0xf')][_0x5681('0x10')](/@@{/g,_0x5681('0x11'))[_0x5681('0x10')](/}@@/g,_0x5681('0x12'))[_0x5681('0x10')](/@{/g,'{{')[_0x5681('0x10')](/}@/g,'}}');return util[_0x5681('0xd')](_0x5681('0x13'),moment()[_0x5681('0xd')](_0x5681('0x14')),_0x46a05f[_0x5681('0x15')][_0x5681('0x16')](),_0x29524a,_0x46a05f[_0x5681('0xf')]);}function fileFormat(_0x459672,_0x5bd4ed){_0x5bd4ed[_0x5681('0xf')]=_0x5bd4ed[_0x5681('0xf')]['replace'](/@@{/g,_0x5681('0x11'))[_0x5681('0x10')](/}@@/g,'}}}')[_0x5681('0x10')](/@{/g,'{{')[_0x5681('0x10')](/}@/g,'}}');var _0x5535ea=_0x5bd4ed[_0x5681('0x17')]&&Object['keys'](_0x5bd4ed['meta'])[_0x5681('0x18')]?'\x0a\x09'+JSON['stringify'](_0x5bd4ed['meta']):'';return util[_0x5681('0xd')](_0x5681('0x19'),moment()[_0x5681('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),_0x5bd4ed['level'][_0x5681('0x16')](),_0x459672,_0x5bd4ed[_0x5681('0xf')],_0x5535ea);}function consoleLogger(){var _0x1b2f9a=new winston[(_0x5681('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x5681('0x1b'))]['Console']({'level':_0x5681('0x1c'),'json':![],'formatter':function(_0x3429b6){return formatter('',_0x3429b6);}})]});return _0x1b2f9a;}function fileLogger(_0x50b77e,_0x5c951f){var _0x1b8b6b=new winston[(_0x5681('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x5681('0x1b'))]['File']({'name':util[_0x5681('0xd')]('%s-%s',_0x50b77e,_0x5681('0x1d')),'filename':getLogFileName(_0x5c951f,_0x50b77e,_0x5681('0x1d')),'level':_0x5681('0x1d'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x163ef9){return fileFormat(_0x50b77e,_0x163ef9);}}),new winston['transports'][(_0x5681('0x1e'))]({'name':util[_0x5681('0xd')](_0x5681('0x1f'),_0x50b77e,debugLevel),'filename':getLogFileName(_0x5c951f,_0x50b77e,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x509d04){return fileFormat(_0x50b77e,_0x509d04);}}),new winston[(_0x5681('0x1b'))][(_0x5681('0x20'))]({'level':_0x5681('0x1c'),'json':![],'formatter':function(_0x4345e2){return fileFormat(_0x50b77e,_0x4345e2);}})]});return _0x1b8b6b;}exports[_0x5681('0x21')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
index c96a80b..e2e7d6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['membername','calleridnum','exten','clientEmail','privateKey','accesskeyid','secretaccesskey','key','user','pass','accountSid','localstationid','dsn','secret','registry','isArray','length','isPlainObject','isString','replace','@@{','}@@','includes','exports','maskSensitiveData','username','password','newPassword','apiKey','firstName','lastName','street','fax','email','clientId','code','accessKey','tenantId','accessToken'];(function(_0x241ad5,_0x3c96c1){var _0x155fdd=function(_0x4ce81a){while(--_0x4ce81a){_0x241ad5['push'](_0x241ad5['shift']());}};_0x155fdd(++_0x3c96c1);}(_0x14a0,0x8e));var _0x014a=function(_0x420570,_0x1e1196){_0x420570=_0x420570-0x0;var _0x1b5e37=_0x14a0[_0x420570];return _0x1b5e37;};var _=require('lodash');var sensitiveFields=[_0x014a('0x0'),_0x014a('0x1'),_0x014a('0x2'),_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),_0x014a('0x6'),'phone','mobile',_0x014a('0x7'),_0x014a('0x8'),_0x014a('0x9'),'clientSecret','securityToken',_0x014a('0xa'),_0x014a('0xb'),_0x014a('0xc'),'token','channelSecret',_0x014a('0xd'),'accessTokenSecret','authToken','consumerKey','consumerSecret',_0x014a('0xe'),'calleridname',_0x014a('0xf'),_0x014a('0x10'),'vidaooApiKey',_0x014a('0x11'),_0x014a('0x12'),_0x014a('0x13'),_0x014a('0x14'),_0x014a('0x15'),_0x014a('0x16'),_0x014a('0x17'),_0x014a('0x18'),_0x014a('0x19'),_0x014a('0x1a'),_0x014a('0x1b'),_0x014a('0x1c'),'oldPassword'];function maskSensitiveData(_0x130d13){const _0x3cf92f=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x130d13)){for(const _0x3a836f in _0x130d13){if(_[_0x014a('0x1d')](_0x130d13[_0x3a836f])){for(let _0x59a4ea=0x0;_0x59a4ea<_0x130d13[_0x3a836f][_0x014a('0x1e')];_0x59a4ea++){maskSensitiveData(_0x130d13[_0x3a836f][_0x59a4ea]);}}else if(_[_0x014a('0x1f')](_0x130d13[_0x3a836f])){maskSensitiveData(_0x130d13[_0x3a836f]);}else if(_[_0x014a('0x20')](_0x130d13[_0x3a836f])){_0x130d13[_0x3a836f]=_0x130d13[_0x3a836f][_0x014a('0x21')](/{{{/g,_0x014a('0x22'))[_0x014a('0x21')](/}}}/g,_0x014a('0x23'))[_0x014a('0x21')](/{{/g,'@{')[_0x014a('0x21')](/}}/g,'}@');if(_[_0x014a('0x24')](sensitiveFields,_0x3a836f)){_0x130d13[_0x3a836f]=_0x130d13[_0x3a836f][_0x014a('0x21')](_0x3cf92f,'*');}}}}}module[_0x014a('0x25')][_0x014a('0x26')]=maskSensitiveData;
\ No newline at end of file
+var _0x4975=['replace','}@@','includes','exports','maskSensitiveData','lodash','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientSecret','code','accessKey','tenantId','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','accesskeyid','secretaccesskey','key','user','pass','accountSid','localstationid','dsn','secret','registry','isPlainObject','isArray','length','isString'];(function(_0x21f3bf,_0xfb0f59){var _0x249d08=function(_0x37e6c2){while(--_0x37e6c2){_0x21f3bf['push'](_0x21f3bf['shift']());}};_0x249d08(++_0xfb0f59);}(_0x4975,0x86));var _0x5497=function(_0x298fbf,_0x5184b4){_0x298fbf=_0x298fbf-0x0;var _0x1aee68=_0x4975[_0x298fbf];return _0x1aee68;};var _=require(_0x5497('0x0'));var sensitiveFields=['username',_0x5497('0x1'),_0x5497('0x2'),_0x5497('0x3'),_0x5497('0x4'),_0x5497('0x5'),_0x5497('0x6'),_0x5497('0x7'),_0x5497('0x8'),_0x5497('0x9'),_0x5497('0xa'),'clientId',_0x5497('0xb'),'securityToken',_0x5497('0xc'),_0x5497('0xd'),_0x5497('0xe'),'token',_0x5497('0xf'),'accessToken',_0x5497('0x10'),_0x5497('0x11'),_0x5497('0x12'),_0x5497('0x13'),_0x5497('0x14'),_0x5497('0x15'),_0x5497('0x16'),_0x5497('0x17'),'vidaooApiKey','clientEmail','privateKey',_0x5497('0x18'),_0x5497('0x19'),_0x5497('0x1a'),_0x5497('0x1b'),_0x5497('0x1c'),_0x5497('0x1d'),_0x5497('0x1e'),_0x5497('0x1f'),_0x5497('0x20'),_0x5497('0x21'),'oldPassword'];function maskSensitiveData(_0x11b0a9){const _0x4fb8e9=/(?!^)[\s\S](?!$)/g;if(_[_0x5497('0x22')](_0x11b0a9)){for(const _0x2bfd8a in _0x11b0a9){if(_[_0x5497('0x23')](_0x11b0a9[_0x2bfd8a])){for(let _0x3ce50b=0x0;_0x3ce50b<_0x11b0a9[_0x2bfd8a][_0x5497('0x24')];_0x3ce50b++){maskSensitiveData(_0x11b0a9[_0x2bfd8a][_0x3ce50b]);}}else if(_[_0x5497('0x22')](_0x11b0a9[_0x2bfd8a])){maskSensitiveData(_0x11b0a9[_0x2bfd8a]);}else if(_[_0x5497('0x25')](_0x11b0a9[_0x2bfd8a])){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a]['replace'](/{{{/g,'@@{')[_0x5497('0x26')](/}}}/g,_0x5497('0x27'))[_0x5497('0x26')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x5497('0x28')](sensitiveFields,_0x2bfd8a)){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a][_0x5497('0x26')](_0x4fb8e9,'*');}}}}}module[_0x5497('0x29')][_0x5497('0x2a')]=maskSensitiveData;
\ No newline at end of file
index 898a4b0..fd12978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['isArray','map','isPlainObject','keys','reduce','exports','safeTemplate','{\x20{\x20','\x20}\x20}','string','replace'];(function(_0x4f4d05,_0x1a7fca){var _0x18d519=function(_0x442ca7){while(--_0x442ca7){_0x4f4d05['push'](_0x4f4d05['shift']());}};_0x18d519(++_0x1a7fca);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x4a04c7){return _0x4a04c7==='{{'?_0x3342('0x0'):_0x3342('0x1');}function safeTemplate(_0x3477de){var _0x3b763d=_0x3477de;if(typeof _0x3477de===_0x3342('0x2')){_0x3b763d=_0x3477de[_0x3342('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x3342('0x4')](_0x3477de)){_0x3b763d=_0x3477de[_0x3342('0x5')](function(_0x3075f8){return safeTemplate(_0x3075f8);});}else if(_[_0x3342('0x6')](_0x3477de)){_0x3b763d=Object[_0x3342('0x7')](_0x3477de)[_0x3342('0x8')](function(_0x29c40c,_0x420d4b){_0x29c40c[_0x420d4b]=safeTemplate(_0x3477de[_0x420d4b]);return _0x29c40c;},{});}return _0x3b763d;}module[_0x3342('0x9')][_0x3342('0xa')]=safeTemplate;
\ No newline at end of file
+var _0x9ffd=['{\x20{\x20','string','replace','map','keys','reduce','exports','safeTemplate','lodash'];(function(_0x4e4f0e,_0x1c3892){var _0x1a7219=function(_0x3821ad){while(--_0x3821ad){_0x4e4f0e['push'](_0x4e4f0e['shift']());}};_0x1a7219(++_0x1c3892);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x17b94,_0x214147){_0x17b94=_0x17b94-0x0;var _0x5d76bd=_0x9ffd[_0x17b94];return _0x5d76bd;};var _=require(_0xd9ff('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x413161){return _0x413161==='{{'?_0xd9ff('0x1'):'\x20}\x20}';}function safeTemplate(_0x3480c0){var _0x1530b1=_0x3480c0;if(typeof _0x3480c0===_0xd9ff('0x2')){_0x1530b1=_0x3480c0[_0xd9ff('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x3480c0)){_0x1530b1=_0x3480c0[_0xd9ff('0x4')](function(_0x111697){return safeTemplate(_0x111697);});}else if(_['isPlainObject'](_0x3480c0)){_0x1530b1=Object[_0xd9ff('0x5')](_0x3480c0)[_0xd9ff('0x6')](function(_0x13ea8c,_0x270eb2){_0x13ea8c[_0x270eb2]=safeTemplate(_0x3480c0[_0x270eb2]);return _0x13ea8c;},{});}return _0x1530b1;}module[_0xd9ff('0x7')][_0xd9ff('0x8')]=safeTemplate;
\ No newline at end of file